diff --git a/src/frontend/apps/impress/cunningham.ts b/src/frontend/apps/impress/cunningham.ts index e12033942..f4b4b6d09 100644 --- a/src/frontend/apps/impress/cunningham.ts +++ b/src/frontend/apps/impress/cunningham.ts @@ -12,6 +12,36 @@ const config = { 'info-150': '#E5EEFA', 'greyscale-000': '#fff', 'greyscale-1000': '#161616', + 'blue-400': '#7AB1E8', + 'blue-500': '#417DC4', + 'blue-600': '#3558A2', + 'brown-400': '#E6BE92', + 'brown-500': '#BD987A', + 'brown-600': '#745B47', + 'cyan-400': '#34BAB5', + 'cyan-500': '#009099', + 'cyan-600': '#006A6F', + 'gold-400': '#FFCA00', + 'gold-500': '#C3992A', + 'gold-600': '#695240', + 'green-400': '#34CB6A', + 'green-500': '#00A95F', + 'green-600': '#297254', + 'olive-400': '#99C221', + 'olive-500': '#68A532', + 'olive-600': '#447049', + 'orange-400': '#FF732C', + 'orange-500': '#E4794A', + 'orange-600': '#755348', + 'pink-400': '#FFB7AE', + 'pink-500': '#E18B76', + 'pink-600': '#8D533E', + 'purple-400': '#CE70CC', + 'purple-500': '#A558A0', + 'purple-600': '#6E445A', + 'yellow-400': '#D8C634', + 'yellow-500': '#B7A73F', + 'yellow-600': '#66673D', }, font: { sizes: { diff --git a/src/frontend/apps/impress/package.json b/src/frontend/apps/impress/package.json index e58391435..6f653cd81 100644 --- a/src/frontend/apps/impress/package.json +++ b/src/frontend/apps/impress/package.json @@ -23,6 +23,7 @@ "@openfun/cunningham-react": "2.9.4", "@sentry/nextjs": "8.40.0", "@tanstack/react-query": "5.61.3", + "cmdk": "^1.0.4", "crisp-sdk-web": "1.0.25", "i18next": "24.0.0", "i18next-browser-languagedetector": "8.0.0", @@ -37,6 +38,7 @@ "react-intersection-observer": "9.13.1", "react-select": "5.8.3", "styled-components": "6.1.13", + "use-debounce": "10.0.4", "y-protocols": "1.0.6", "yjs": "*", "zustand": "5.0.1" diff --git a/src/frontend/apps/impress/src/components/DropdownMenu.tsx b/src/frontend/apps/impress/src/components/DropdownMenu.tsx index f30f83340..07eb09aa1 100644 --- a/src/frontend/apps/impress/src/components/DropdownMenu.tsx +++ b/src/frontend/apps/impress/src/components/DropdownMenu.tsx @@ -40,7 +40,7 @@ export const DropdownMenu = ({ onOpenChange={onOpenChange} button={ showArrow ? ( - +
{children}
{ + const { t } = useTranslation(); + + return ( + + + + {t('Load more')} + + + ); +}; diff --git a/src/frontend/apps/impress/src/components/SimpleLoader.tsx b/src/frontend/apps/impress/src/components/SimpleLoader.tsx new file mode 100644 index 000000000..ed3cd05ba --- /dev/null +++ b/src/frontend/apps/impress/src/components/SimpleLoader.tsx @@ -0,0 +1,48 @@ +import { css } from 'styled-components'; + +import { Box } from './Box'; + +type Props = { + size?: 'small' | 'medium' | 'large'; +}; +export const SimpleLoader = ({ size = 'medium' }: Props) => { + return ( + + ); +}; diff --git a/src/frontend/apps/impress/src/components/quick-search/QuickSearch.tsx b/src/frontend/apps/impress/src/components/quick-search/QuickSearch.tsx new file mode 100644 index 000000000..26b610666 --- /dev/null +++ b/src/frontend/apps/impress/src/components/quick-search/QuickSearch.tsx @@ -0,0 +1,88 @@ +import { Command } from 'cmdk'; +import { ReactNode, useRef } from 'react'; + +import { Box } from '../Box'; + +import { QuickSearchGroup } from './QuickSearchGroup'; +import { QuickSearchInput } from './QuickSearchInput'; +import { QuickSearchStyle } from './QuickSearchStyle'; + +export type QuickSearchAction = { + onSelect?: () => void; + content: ReactNode; +}; + +export type QuickSearchData = { + groupName: string; + elements: T[]; + emptyString?: string; + startActions?: QuickSearchAction[]; + endActions?: QuickSearchAction[]; + showWhenEmpty?: boolean; +}; + +export type QuickSearchProps = { + data: QuickSearchData[]; + onFilter?: (str: string) => void; + renderElement: (element: T) => ReactNode; + onSelect?: (element: T) => void; + inputValue?: string; + inputContent?: ReactNode; + showInput?: boolean; + loading?: boolean; + label?: string; + placeholder?: string; + children?: ReactNode; +}; + +export const QuickSearch = ({ + onSelect, + onFilter, + inputContent, + inputValue, + loading, + showInput = true, + data, + renderElement, + label, + placeholder, + children, +}: QuickSearchProps) => { + const ref = useRef(null); + + return ( + <> + +
+ + {showInput && ( + + {inputContent} + + )} + + + {!loading && + data.map((group) => { + return ( + + ); + })} + {children} + + + +
+ + ); +}; diff --git a/src/frontend/apps/impress/src/components/quick-search/QuickSearchGroup.tsx b/src/frontend/apps/impress/src/components/quick-search/QuickSearchGroup.tsx new file mode 100644 index 000000000..2cc70b657 --- /dev/null +++ b/src/frontend/apps/impress/src/components/quick-search/QuickSearchGroup.tsx @@ -0,0 +1,61 @@ +import { Command } from 'cmdk'; + +import { QuickSearchData, QuickSearchProps } from './QuickSearch'; +import { QuickSearchItem } from './QuickSearchItem'; + +type Props = { + group: QuickSearchData; + onSelect?: QuickSearchProps['onSelect']; + renderElement: QuickSearchProps['renderElement']; +}; + +export const QuickSearchGroup = ({ + group, + onSelect, + renderElement, +}: Props) => { + return ( + + {group.startActions?.map((action, index) => { + return ( + + {action.content} + + ); + })} + {group.elements.map((groupElement, index) => { + return ( + { + console.log('onSelect', groupElement); + onSelect?.(groupElement); + }} + > + {renderElement(groupElement)} + + ); + })} + {group.endActions?.map((action, index) => { + return ( + + {action.content} + + ); + })} + {group.emptyString && group.elements.length === 0 && ( + {group.emptyString} + )} + + ); +}; diff --git a/src/frontend/apps/impress/src/components/quick-search/QuickSearchInput.tsx b/src/frontend/apps/impress/src/components/quick-search/QuickSearchInput.tsx new file mode 100644 index 000000000..374cfd1a7 --- /dev/null +++ b/src/frontend/apps/impress/src/components/quick-search/QuickSearchInput.tsx @@ -0,0 +1,64 @@ +import { Loader } from '@openfun/cunningham-react'; +import { Command } from 'cmdk'; +import { ReactNode } from 'react'; +import { useTranslation } from 'react-i18next'; + +import { HorizontalSeparator } from '@/components/separators/HorizontalSeparator'; +import { useCunninghamTheme } from '@/cunningham'; + +import { Box } from '../Box'; +import { Icon } from '../Icon'; + +type Props = { + loading?: boolean; + inputValue?: string; + onFilter?: (str: string) => void; + placeholder?: string; + children?: ReactNode; +}; +export const QuickSearchInput = ({ + loading, + inputValue, + onFilter, + placeholder, + children, +}: Props) => { + const { t } = useTranslation(); + const { spacingsTokens } = useCunninghamTheme(); + const spacing = spacingsTokens(); + + if (children) { + return ( + <> + {children} + + + ); + } + + return ( + <> + + {!loading && } + {loading && ( +
+ +
+ )} + +
+ + + ); +}; diff --git a/src/frontend/apps/impress/src/components/quick-search/QuickSearchItem.tsx b/src/frontend/apps/impress/src/components/quick-search/QuickSearchItem.tsx new file mode 100644 index 000000000..3ede83118 --- /dev/null +++ b/src/frontend/apps/impress/src/components/quick-search/QuickSearchItem.tsx @@ -0,0 +1,12 @@ +import { Command } from 'cmdk'; +import { PropsWithChildren } from 'react'; + +type Props = { + onSelect?: (value: string) => void; +}; +export const QuickSearchItem = ({ + children, + onSelect, +}: PropsWithChildren) => { + return {children}; +}; diff --git a/src/frontend/apps/impress/src/components/quick-search/QuickSearchStyle.tsx b/src/frontend/apps/impress/src/components/quick-search/QuickSearchStyle.tsx new file mode 100644 index 000000000..de6a574cc --- /dev/null +++ b/src/frontend/apps/impress/src/components/quick-search/QuickSearchStyle.tsx @@ -0,0 +1,177 @@ +import { createGlobalStyle } from 'styled-components'; + +export const QuickSearchStyle = createGlobalStyle` + .quick-search-container { + [cmdk-root] { + width: 100%; + background: #ffffff; + border-radius: 12px; + overflow: hidden; + + transition: transform 100ms ease; + outline: none; + + .dark & { + background: rgba(22, 22, 22, 0.7); + } + } + + [cmdk-input] { + border: none; + width: 100%; + font-size: 17px; + padding: 8px; + background: white; + outline: none; + + color: var(--c--theme--colors--greyscale-700); + + border-radius: 0; + + &::placeholder { + color: var(--c--theme--colors--greyscale-300); + } + } + + [cmdk-vercel-badge] { + height: 20px; + background: var(--c--theme--colors--greyscale-700); + display: inline-flex; + align-items: center; + padding: 0 8px; + font-size: 12px; + color: var(--c--theme--colors--greyscale-500); + border-radius: 4px; + margin: 4px 0 4px 4px; + user-select: none; + text-transform: capitalize; + font-weight: 500; + } + + [cmdk-item] { + content-visibility: auto; + + cursor: pointer; + + + border-radius: var(--c--theme--spacings--xs); + font-size: 14px; + display: flex; + align-items: center; + gap: 8px; + /* padding: var(--c--theme--spacings--2xs) ; */ + + user-select: none; + will-change: background, color; + transition: all 150ms ease; + transition-property: none; + + &[data-selected='true'] { + background: var(--c--theme--colors--greyscale-100); + } + + &[data-disabled='true'] { + color: var(--c--theme--colors--greyscale-500); + cursor: not-allowed; + } + + & + [cmdk-item] { + margin-top: 4px; + } + } + + [cmdk-list] { + height: 500px; + padding: 0 var(--c--theme--spacings--sm) var(--c--theme--spacings--sm) + var(--c--theme--spacings--sm); + max-height: 700px; + + overflow-y: auto; + overscroll-behavior: contain; + transition: 100ms ease; + transition-property: height; + } + + [cmdk-vercel-shortcuts] { + display: flex; + margin-left: auto; + gap: 8px; + + kbd { + font-size: 12px; + min-width: 20px; + padding: 4px; + height: 20px; + border-radius: 4px; + color: white; + background: var(--c--theme--colors--greyscale-500); + display: inline-flex; + align-items: center; + justify-content: center; + text-transform: uppercase; + } + } + + [cmdk-separator] { + height: 1px; + width: 100%; + background: var(--c--theme--colors--greyscale-500); + margin: 4px 0; + } + + *:not([hidden]) + [cmdk-group] { + margin-top: 8px; + } + + [cmdk-group-heading] { + user-select: none; + font-size: var(--c--theme--font--sizes--sm); + color: var(--c--theme--colors--greyscale-500); + font-weight: bold; + + display: flex; + align-items: center; + margin: var(--c--theme--spacings--200W) 0; + } + + [cmdk-empty] { + } +} + +.inputContainer { + display: flex; + padding: 0 10px; + gap: 8px; + align-items: center; + + .inputIcon { + color: var(--c--theme--colors--greyscale-400); + } +} + +.loading { + display: flex; + justify-content: center; + align-items: center; +} + +.c__modal__scroller:has(.quick-search-container), +.c__modal__scroller:has(.noPadding) { + padding: 0 !important; + + .c__modal__close .c__button { + right: 5px; + top: 5px; + padding: 1.5rem 1rem; + } + + .c__modal__title { + font-size: var(--c--theme--font--sizes--xs); + + padding: var(--c--theme--spacings--200W); + margin-bottom: 0; + } +} + + +`; diff --git a/src/frontend/apps/impress/src/cunningham/cunningham-tokens.css b/src/frontend/apps/impress/src/cunningham/cunningham-tokens.css index a15bdb88b..c0a8c3575 100644 --- a/src/frontend/apps/impress/src/cunningham/cunningham-tokens.css +++ b/src/frontend/apps/impress/src/cunningham/cunningham-tokens.css @@ -76,6 +76,36 @@ --c--theme--colors--primary-950: #1b1b35; --c--theme--colors--info-150: #e5eefa; --c--theme--colors--greyscale-1000: #161616; + --c--theme--colors--blue-400: #7ab1e8; + --c--theme--colors--blue-500: #417dc4; + --c--theme--colors--blue-600: #3558a2; + --c--theme--colors--brown-400: #e6be92; + --c--theme--colors--brown-500: #bd987a; + --c--theme--colors--brown-600: #745b47; + --c--theme--colors--cyan-400: #34bab5; + --c--theme--colors--cyan-500: #009099; + --c--theme--colors--cyan-600: #006a6f; + --c--theme--colors--gold-400: #ffca00; + --c--theme--colors--gold-500: #c3992a; + --c--theme--colors--gold-600: #695240; + --c--theme--colors--green-400: #34cb6a; + --c--theme--colors--green-500: #00a95f; + --c--theme--colors--green-600: #297254; + --c--theme--colors--olive-400: #99c221; + --c--theme--colors--olive-500: #68a532; + --c--theme--colors--olive-600: #447049; + --c--theme--colors--orange-400: #ff732c; + --c--theme--colors--orange-500: #e4794a; + --c--theme--colors--orange-600: #755348; + --c--theme--colors--pink-400: #ffb7ae; + --c--theme--colors--pink-500: #e18b76; + --c--theme--colors--pink-600: #8d533e; + --c--theme--colors--purple-400: #ce70cc; + --c--theme--colors--purple-500: #a558a0; + --c--theme--colors--purple-600: #6e445a; + --c--theme--colors--yellow-400: #d8c634; + --c--theme--colors--yellow-500: #b7a73f; + --c--theme--colors--yellow-600: #66673d; --c--theme--font--sizes--h1: 2rem; --c--theme--font--sizes--h2: 1.75rem; --c--theme--font--sizes--h3: 1.5rem; @@ -312,7 +342,6 @@ --c--components--button--disabled--background--color: #b3cef0; --c--components--la-gauffre--activated: false; } - .cunningham-theme--dark { --c--theme--colors--greyscale-100: #182536; --c--theme--colors--greyscale-200: #303c4b; @@ -356,12 +385,11 @@ --c--theme--colors--danger-300: #f09898; --c--theme--colors--danger-400: #ed8585; --c--theme--colors--danger-500: #e96666; - --c--theme--colors--danger-600: #d66; + --c--theme--colors--danger-600: #dd6666; --c--theme--colors--danger-700: #c36666; --c--theme--colors--danger-800: #ae6666; --c--theme--colors--danger-900: #9d6666; } - .cunningham-theme--dsfr { --c--theme--colors--card-border: #e5e5e5; --c--theme--colors--primary-text: #000091; @@ -395,7 +423,7 @@ --c--theme--colors--greyscale-350: #ddd; --c--theme--colors--greyscale-400: #929292; --c--theme--colors--greyscale-500: #7c7c7c; - --c--theme--colors--greyscale-600: #666; + --c--theme--colors--greyscale-600: #666666; --c--theme--colors--greyscale-700: #3a3a3a; --c--theme--colors--greyscale-750: #353535; --c--theme--colors--greyscale-800: #2a2a2a; @@ -442,12 +470,12 @@ --c--theme--colors--danger-700: #642727; --c--theme--colors--danger-800: #412121; --c--theme--colors--danger-900: #3a1c1c; - --c--theme--font--families--accent: marianne; - --c--theme--font--families--base: marianne; + --c--theme--font--families--accent: Marianne; + --c--theme--font--families--base: Marianne; --c--theme--logo--src: /assets/logo-gouv.svg; --c--theme--logo--widthHeader: 110px; --c--theme--logo--widthFooter: 220px; - --c--theme--logo--alt: gouvernement logo; + --c--theme--logo--alt: Gouvernement Logo; --c--components--alert--border-radius: 0; --c--components--button--medium-height: 48px; --c--components--button--border-radius: 4px; @@ -555,1735 +583,1486 @@ --c--components--forms-textarea--border-radius: 0; --c--components--la-gauffre--activated: true; } - .clr-secondary-text { color: var(--c--theme--colors--secondary-text); } - .clr-secondary-100 { color: var(--c--theme--colors--secondary-100); } - .clr-secondary-200 { color: var(--c--theme--colors--secondary-200); } - .clr-secondary-300 { color: var(--c--theme--colors--secondary-300); } - .clr-secondary-400 { color: var(--c--theme--colors--secondary-400); } - .clr-secondary-500 { color: var(--c--theme--colors--secondary-500); } - .clr-secondary-600 { color: var(--c--theme--colors--secondary-600); } - .clr-secondary-700 { color: var(--c--theme--colors--secondary-700); } - .clr-secondary-800 { color: var(--c--theme--colors--secondary-800); } - .clr-secondary-900 { color: var(--c--theme--colors--secondary-900); } - .clr-info-text { color: var(--c--theme--colors--info-text); } - .clr-info-100 { color: var(--c--theme--colors--info-100); } - .clr-info-200 { color: var(--c--theme--colors--info-200); } - .clr-info-300 { color: var(--c--theme--colors--info-300); } - .clr-info-400 { color: var(--c--theme--colors--info-400); } - .clr-info-500 { color: var(--c--theme--colors--info-500); } - .clr-info-600 { color: var(--c--theme--colors--info-600); } - .clr-info-700 { color: var(--c--theme--colors--info-700); } - .clr-info-800 { color: var(--c--theme--colors--info-800); } - .clr-info-900 { color: var(--c--theme--colors--info-900); } - .clr-greyscale-100 { color: var(--c--theme--colors--greyscale-100); } - .clr-greyscale-200 { color: var(--c--theme--colors--greyscale-200); } - .clr-greyscale-300 { color: var(--c--theme--colors--greyscale-300); } - .clr-greyscale-400 { color: var(--c--theme--colors--greyscale-400); } - .clr-greyscale-500 { color: var(--c--theme--colors--greyscale-500); } - .clr-greyscale-600 { color: var(--c--theme--colors--greyscale-600); } - .clr-greyscale-700 { color: var(--c--theme--colors--greyscale-700); } - .clr-greyscale-800 { color: var(--c--theme--colors--greyscale-800); } - .clr-greyscale-900 { color: var(--c--theme--colors--greyscale-900); } - .clr-greyscale-000 { color: var(--c--theme--colors--greyscale-000); } - .clr-primary-100 { color: var(--c--theme--colors--primary-100); } - .clr-primary-200 { color: var(--c--theme--colors--primary-200); } - .clr-primary-300 { color: var(--c--theme--colors--primary-300); } - .clr-primary-400 { color: var(--c--theme--colors--primary-400); } - .clr-primary-500 { color: var(--c--theme--colors--primary-500); } - .clr-primary-600 { color: var(--c--theme--colors--primary-600); } - .clr-primary-700 { color: var(--c--theme--colors--primary-700); } - .clr-primary-800 { color: var(--c--theme--colors--primary-800); } - .clr-primary-900 { color: var(--c--theme--colors--primary-900); } - .clr-success-100 { color: var(--c--theme--colors--success-100); } - .clr-success-200 { color: var(--c--theme--colors--success-200); } - .clr-success-300 { color: var(--c--theme--colors--success-300); } - .clr-success-400 { color: var(--c--theme--colors--success-400); } - .clr-success-500 { color: var(--c--theme--colors--success-500); } - .clr-success-600 { color: var(--c--theme--colors--success-600); } - .clr-success-700 { color: var(--c--theme--colors--success-700); } - .clr-success-800 { color: var(--c--theme--colors--success-800); } - .clr-success-900 { color: var(--c--theme--colors--success-900); } - .clr-warning-100 { color: var(--c--theme--colors--warning-100); } - .clr-warning-200 { color: var(--c--theme--colors--warning-200); } - .clr-warning-300 { color: var(--c--theme--colors--warning-300); } - .clr-warning-400 { color: var(--c--theme--colors--warning-400); } - .clr-warning-500 { color: var(--c--theme--colors--warning-500); } - .clr-warning-600 { color: var(--c--theme--colors--warning-600); } - .clr-warning-700 { color: var(--c--theme--colors--warning-700); } - .clr-warning-800 { color: var(--c--theme--colors--warning-800); } - .clr-warning-900 { color: var(--c--theme--colors--warning-900); } - .clr-danger-100 { color: var(--c--theme--colors--danger-100); } - .clr-danger-200 { color: var(--c--theme--colors--danger-200); } - .clr-danger-300 { color: var(--c--theme--colors--danger-300); } - .clr-danger-400 { color: var(--c--theme--colors--danger-400); } - .clr-danger-500 { color: var(--c--theme--colors--danger-500); } - .clr-danger-600 { color: var(--c--theme--colors--danger-600); } - .clr-danger-700 { color: var(--c--theme--colors--danger-700); } - .clr-danger-800 { color: var(--c--theme--colors--danger-800); } - .clr-danger-900 { color: var(--c--theme--colors--danger-900); } - .clr-primary-text { color: var(--c--theme--colors--primary-text); } - .clr-success-text { color: var(--c--theme--colors--success-text); } - .clr-warning-text { color: var(--c--theme--colors--warning-text); } - .clr-danger-text { color: var(--c--theme--colors--danger-text); } - .clr-card-border { color: var(--c--theme--colors--card-border); } - .clr-primary-bg { color: var(--c--theme--colors--primary-bg); } - .clr-primary-050 { color: var(--c--theme--colors--primary-050); } - .clr-primary-150 { color: var(--c--theme--colors--primary-150); } - .clr-primary-950 { color: var(--c--theme--colors--primary-950); } - .clr-info-150 { color: var(--c--theme--colors--info-150); } - .clr-greyscale-1000 { color: var(--c--theme--colors--greyscale-1000); } - +.clr-blue-400 { + color: var(--c--theme--colors--blue-400); +} +.clr-blue-500 { + color: var(--c--theme--colors--blue-500); +} +.clr-blue-600 { + color: var(--c--theme--colors--blue-600); +} +.clr-brown-400 { + color: var(--c--theme--colors--brown-400); +} +.clr-brown-500 { + color: var(--c--theme--colors--brown-500); +} +.clr-brown-600 { + color: var(--c--theme--colors--brown-600); +} +.clr-cyan-400 { + color: var(--c--theme--colors--cyan-400); +} +.clr-cyan-500 { + color: var(--c--theme--colors--cyan-500); +} +.clr-cyan-600 { + color: var(--c--theme--colors--cyan-600); +} +.clr-gold-400 { + color: var(--c--theme--colors--gold-400); +} +.clr-gold-500 { + color: var(--c--theme--colors--gold-500); +} +.clr-gold-600 { + color: var(--c--theme--colors--gold-600); +} +.clr-green-400 { + color: var(--c--theme--colors--green-400); +} +.clr-green-500 { + color: var(--c--theme--colors--green-500); +} +.clr-green-600 { + color: var(--c--theme--colors--green-600); +} +.clr-olive-400 { + color: var(--c--theme--colors--olive-400); +} +.clr-olive-500 { + color: var(--c--theme--colors--olive-500); +} +.clr-olive-600 { + color: var(--c--theme--colors--olive-600); +} +.clr-orange-400 { + color: var(--c--theme--colors--orange-400); +} +.clr-orange-500 { + color: var(--c--theme--colors--orange-500); +} +.clr-orange-600 { + color: var(--c--theme--colors--orange-600); +} +.clr-pink-400 { + color: var(--c--theme--colors--pink-400); +} +.clr-pink-500 { + color: var(--c--theme--colors--pink-500); +} +.clr-pink-600 { + color: var(--c--theme--colors--pink-600); +} +.clr-purple-400 { + color: var(--c--theme--colors--purple-400); +} +.clr-purple-500 { + color: var(--c--theme--colors--purple-500); +} +.clr-purple-600 { + color: var(--c--theme--colors--purple-600); +} +.clr-yellow-400 { + color: var(--c--theme--colors--yellow-400); +} +.clr-yellow-500 { + color: var(--c--theme--colors--yellow-500); +} +.clr-yellow-600 { + color: var(--c--theme--colors--yellow-600); +} .bg-secondary-text { background-color: var(--c--theme--colors--secondary-text); } - .bg-secondary-100 { background-color: var(--c--theme--colors--secondary-100); } - .bg-secondary-200 { background-color: var(--c--theme--colors--secondary-200); } - .bg-secondary-300 { background-color: var(--c--theme--colors--secondary-300); } - .bg-secondary-400 { background-color: var(--c--theme--colors--secondary-400); } - .bg-secondary-500 { background-color: var(--c--theme--colors--secondary-500); } - .bg-secondary-600 { background-color: var(--c--theme--colors--secondary-600); } - .bg-secondary-700 { background-color: var(--c--theme--colors--secondary-700); } - .bg-secondary-800 { background-color: var(--c--theme--colors--secondary-800); } - .bg-secondary-900 { background-color: var(--c--theme--colors--secondary-900); } - .bg-info-text { background-color: var(--c--theme--colors--info-text); } - .bg-info-100 { background-color: var(--c--theme--colors--info-100); } - .bg-info-200 { background-color: var(--c--theme--colors--info-200); } - .bg-info-300 { background-color: var(--c--theme--colors--info-300); } - .bg-info-400 { background-color: var(--c--theme--colors--info-400); } - .bg-info-500 { background-color: var(--c--theme--colors--info-500); } - .bg-info-600 { background-color: var(--c--theme--colors--info-600); } - .bg-info-700 { background-color: var(--c--theme--colors--info-700); } - .bg-info-800 { background-color: var(--c--theme--colors--info-800); } - .bg-info-900 { background-color: var(--c--theme--colors--info-900); } - .bg-greyscale-100 { background-color: var(--c--theme--colors--greyscale-100); } - .bg-greyscale-200 { background-color: var(--c--theme--colors--greyscale-200); } - .bg-greyscale-300 { background-color: var(--c--theme--colors--greyscale-300); } - .bg-greyscale-400 { background-color: var(--c--theme--colors--greyscale-400); } - .bg-greyscale-500 { background-color: var(--c--theme--colors--greyscale-500); } - .bg-greyscale-600 { background-color: var(--c--theme--colors--greyscale-600); } - .bg-greyscale-700 { background-color: var(--c--theme--colors--greyscale-700); } - .bg-greyscale-800 { background-color: var(--c--theme--colors--greyscale-800); } - .bg-greyscale-900 { background-color: var(--c--theme--colors--greyscale-900); } - .bg-greyscale-000 { background-color: var(--c--theme--colors--greyscale-000); } - .bg-primary-100 { background-color: var(--c--theme--colors--primary-100); } - .bg-primary-200 { background-color: var(--c--theme--colors--primary-200); } - .bg-primary-300 { background-color: var(--c--theme--colors--primary-300); } - .bg-primary-400 { background-color: var(--c--theme--colors--primary-400); } - .bg-primary-500 { background-color: var(--c--theme--colors--primary-500); } - .bg-primary-600 { background-color: var(--c--theme--colors--primary-600); } - .bg-primary-700 { background-color: var(--c--theme--colors--primary-700); } - .bg-primary-800 { background-color: var(--c--theme--colors--primary-800); } - .bg-primary-900 { background-color: var(--c--theme--colors--primary-900); } - .bg-success-100 { background-color: var(--c--theme--colors--success-100); } - .bg-success-200 { background-color: var(--c--theme--colors--success-200); } - .bg-success-300 { background-color: var(--c--theme--colors--success-300); } - .bg-success-400 { background-color: var(--c--theme--colors--success-400); } - .bg-success-500 { background-color: var(--c--theme--colors--success-500); } - .bg-success-600 { background-color: var(--c--theme--colors--success-600); } - .bg-success-700 { background-color: var(--c--theme--colors--success-700); } - .bg-success-800 { background-color: var(--c--theme--colors--success-800); } - .bg-success-900 { background-color: var(--c--theme--colors--success-900); } - .bg-warning-100 { background-color: var(--c--theme--colors--warning-100); } - .bg-warning-200 { background-color: var(--c--theme--colors--warning-200); } - .bg-warning-300 { background-color: var(--c--theme--colors--warning-300); } - .bg-warning-400 { background-color: var(--c--theme--colors--warning-400); } - .bg-warning-500 { background-color: var(--c--theme--colors--warning-500); } - .bg-warning-600 { background-color: var(--c--theme--colors--warning-600); } - .bg-warning-700 { background-color: var(--c--theme--colors--warning-700); } - .bg-warning-800 { background-color: var(--c--theme--colors--warning-800); } - .bg-warning-900 { background-color: var(--c--theme--colors--warning-900); } - .bg-danger-100 { background-color: var(--c--theme--colors--danger-100); } - .bg-danger-200 { background-color: var(--c--theme--colors--danger-200); } - .bg-danger-300 { background-color: var(--c--theme--colors--danger-300); } - .bg-danger-400 { background-color: var(--c--theme--colors--danger-400); } - .bg-danger-500 { background-color: var(--c--theme--colors--danger-500); } - .bg-danger-600 { background-color: var(--c--theme--colors--danger-600); } - .bg-danger-700 { background-color: var(--c--theme--colors--danger-700); } - .bg-danger-800 { background-color: var(--c--theme--colors--danger-800); } - .bg-danger-900 { background-color: var(--c--theme--colors--danger-900); } - .bg-primary-text { background-color: var(--c--theme--colors--primary-text); } - .bg-success-text { background-color: var(--c--theme--colors--success-text); } - .bg-warning-text { background-color: var(--c--theme--colors--warning-text); } - .bg-danger-text { background-color: var(--c--theme--colors--danger-text); } - .bg-card-border { background-color: var(--c--theme--colors--card-border); } - .bg-primary-bg { background-color: var(--c--theme--colors--primary-bg); } - .bg-primary-050 { background-color: var(--c--theme--colors--primary-050); } - .bg-primary-150 { background-color: var(--c--theme--colors--primary-150); } - .bg-primary-950 { background-color: var(--c--theme--colors--primary-950); } - .bg-info-150 { background-color: var(--c--theme--colors--info-150); } - .bg-greyscale-1000 { background-color: var(--c--theme--colors--greyscale-1000); } - +.bg-blue-400 { + background-color: var(--c--theme--colors--blue-400); +} +.bg-blue-500 { + background-color: var(--c--theme--colors--blue-500); +} +.bg-blue-600 { + background-color: var(--c--theme--colors--blue-600); +} +.bg-brown-400 { + background-color: var(--c--theme--colors--brown-400); +} +.bg-brown-500 { + background-color: var(--c--theme--colors--brown-500); +} +.bg-brown-600 { + background-color: var(--c--theme--colors--brown-600); +} +.bg-cyan-400 { + background-color: var(--c--theme--colors--cyan-400); +} +.bg-cyan-500 { + background-color: var(--c--theme--colors--cyan-500); +} +.bg-cyan-600 { + background-color: var(--c--theme--colors--cyan-600); +} +.bg-gold-400 { + background-color: var(--c--theme--colors--gold-400); +} +.bg-gold-500 { + background-color: var(--c--theme--colors--gold-500); +} +.bg-gold-600 { + background-color: var(--c--theme--colors--gold-600); +} +.bg-green-400 { + background-color: var(--c--theme--colors--green-400); +} +.bg-green-500 { + background-color: var(--c--theme--colors--green-500); +} +.bg-green-600 { + background-color: var(--c--theme--colors--green-600); +} +.bg-olive-400 { + background-color: var(--c--theme--colors--olive-400); +} +.bg-olive-500 { + background-color: var(--c--theme--colors--olive-500); +} +.bg-olive-600 { + background-color: var(--c--theme--colors--olive-600); +} +.bg-orange-400 { + background-color: var(--c--theme--colors--orange-400); +} +.bg-orange-500 { + background-color: var(--c--theme--colors--orange-500); +} +.bg-orange-600 { + background-color: var(--c--theme--colors--orange-600); +} +.bg-pink-400 { + background-color: var(--c--theme--colors--pink-400); +} +.bg-pink-500 { + background-color: var(--c--theme--colors--pink-500); +} +.bg-pink-600 { + background-color: var(--c--theme--colors--pink-600); +} +.bg-purple-400 { + background-color: var(--c--theme--colors--purple-400); +} +.bg-purple-500 { + background-color: var(--c--theme--colors--purple-500); +} +.bg-purple-600 { + background-color: var(--c--theme--colors--purple-600); +} +.bg-yellow-400 { + background-color: var(--c--theme--colors--yellow-400); +} +.bg-yellow-500 { + background-color: var(--c--theme--colors--yellow-500); +} +.bg-yellow-600 { + background-color: var(--c--theme--colors--yellow-600); +} .fw-thin { font-weight: var(--c--theme--font--weights--thin); } - .fw-light { font-weight: var(--c--theme--font--weights--light); } - .fw-regular { font-weight: var(--c--theme--font--weights--regular); } - .fw-medium { font-weight: var(--c--theme--font--weights--medium); } - .fw-bold { font-weight: var(--c--theme--font--weights--bold); } - .fw-extrabold { font-weight: var(--c--theme--font--weights--extrabold); } - .fw-black { font-weight: var(--c--theme--font--weights--black); } - .fs-h1 { font-size: var(--c--theme--font--sizes--h1); letter-spacing: var(--c--theme--font--letterspacings--h1); } - .fs-h2 { font-size: var(--c--theme--font--sizes--h2); letter-spacing: var(--c--theme--font--letterspacings--h2); } - .fs-h3 { font-size: var(--c--theme--font--sizes--h3); letter-spacing: var(--c--theme--font--letterspacings--h3); } - .fs-h4 { font-size: var(--c--theme--font--sizes--h4); letter-spacing: var(--c--theme--font--letterspacings--h4); } - .fs-h5 { font-size: var(--c--theme--font--sizes--h5); letter-spacing: var(--c--theme--font--letterspacings--h5); } - .fs-h6 { font-size: var(--c--theme--font--sizes--h6); letter-spacing: var(--c--theme--font--letterspacings--h6); } - .fs-l { font-size: var(--c--theme--font--sizes--l); letter-spacing: var(--c--theme--font--letterspacings--l); } - .fs-m { font-size: var(--c--theme--font--sizes--m); letter-spacing: var(--c--theme--font--letterspacings--m); } - .fs-s { font-size: var(--c--theme--font--sizes--s); letter-spacing: var(--c--theme--font--letterspacings--s); } - .fs-xs { font-size: var(--c--theme--font--sizes--xs); letter-spacing: var(--c--theme--font--letterspacings--xs); } - .fs-sm { font-size: var(--c--theme--font--sizes--sm); letter-spacing: var(--c--theme--font--letterspacings--sm); } - .fs-md { font-size: var(--c--theme--font--sizes--md); letter-spacing: var(--c--theme--font--letterspacings--md); } - .fs-lg { font-size: var(--c--theme--font--sizes--lg); letter-spacing: var(--c--theme--font--letterspacings--lg); } - .fs-ml { font-size: var(--c--theme--font--sizes--ml); letter-spacing: var(--c--theme--font--letterspacings--ml); } - .fs-xl { font-size: var(--c--theme--font--sizes--xl); letter-spacing: var(--c--theme--font--letterspacings--xl); } - .fs-t { font-size: var(--c--theme--font--sizes--t); letter-spacing: var(--c--theme--font--letterspacings--t); } - .f-base { font-family: var(--c--theme--font--families--base); } - .f-accent { font-family: var(--c--theme--font--families--accent); } - .m-0 { margin: var(--c--theme--spacings--0); } - .mb-0 { margin-bottom: var(--c--theme--spacings--0); } - .mt-0 { margin-top: var(--c--theme--spacings--0); } - .ml-0 { margin-left: var(--c--theme--spacings--0); } - .mr-0 { margin-right: var(--c--theme--spacings--0); } - .m-xl { margin: var(--c--theme--spacings--xl); } - .mb-xl { margin-bottom: var(--c--theme--spacings--xl); } - .mt-xl { margin-top: var(--c--theme--spacings--xl); } - .ml-xl { margin-left: var(--c--theme--spacings--xl); } - .mr-xl { margin-right: var(--c--theme--spacings--xl); } - .m-l { margin: var(--c--theme--spacings--l); } - .mb-l { margin-bottom: var(--c--theme--spacings--l); } - .mt-l { margin-top: var(--c--theme--spacings--l); } - .ml-l { margin-left: var(--c--theme--spacings--l); } - .mr-l { margin-right: var(--c--theme--spacings--l); } - .m-b { margin: var(--c--theme--spacings--b); } - .mb-b { margin-bottom: var(--c--theme--spacings--b); } - .mt-b { margin-top: var(--c--theme--spacings--b); } - .ml-b { margin-left: var(--c--theme--spacings--b); } - .mr-b { margin-right: var(--c--theme--spacings--b); } - .m-s { margin: var(--c--theme--spacings--s); } - .mb-s { margin-bottom: var(--c--theme--spacings--s); } - .mt-s { margin-top: var(--c--theme--spacings--s); } - .ml-s { margin-left: var(--c--theme--spacings--s); } - .mr-s { margin-right: var(--c--theme--spacings--s); } - .m-t { margin: var(--c--theme--spacings--t); } - .mb-t { margin-bottom: var(--c--theme--spacings--t); } - .mt-t { margin-top: var(--c--theme--spacings--t); } - .ml-t { margin-left: var(--c--theme--spacings--t); } - .mr-t { margin-right: var(--c--theme--spacings--t); } - .m-st { margin: var(--c--theme--spacings--st); } - .mb-st { margin-bottom: var(--c--theme--spacings--st); } - .mt-st { margin-top: var(--c--theme--spacings--st); } - .ml-st { margin-left: var(--c--theme--spacings--st); } - .mr-st { margin-right: var(--c--theme--spacings--st); } - .m-none { margin: var(--c--theme--spacings--none); } - .mb-none { margin-bottom: var(--c--theme--spacings--none); } - .mt-none { margin-top: var(--c--theme--spacings--none); } - .ml-none { margin-left: var(--c--theme--spacings--none); } - .mr-none { margin-right: var(--c--theme--spacings--none); } - .m-auto { margin: var(--c--theme--spacings--auto); } - .mb-auto { margin-bottom: var(--c--theme--spacings--auto); } - .mt-auto { margin-top: var(--c--theme--spacings--auto); } - .ml-auto { margin-left: var(--c--theme--spacings--auto); } - .mr-auto { margin-right: var(--c--theme--spacings--auto); } - .m-bx { margin: var(--c--theme--spacings--bx); } - .mb-bx { margin-bottom: var(--c--theme--spacings--bx); } - .mt-bx { margin-top: var(--c--theme--spacings--bx); } - .ml-bx { margin-left: var(--c--theme--spacings--bx); } - .mr-bx { margin-right: var(--c--theme--spacings--bx); } - .m-full { margin: var(--c--theme--spacings--full); } - .mb-full { margin-bottom: var(--c--theme--spacings--full); } - .mt-full { margin-top: var(--c--theme--spacings--full); } - .ml-full { margin-left: var(--c--theme--spacings--full); } - .mr-full { margin-right: var(--c--theme--spacings--full); } - .m-4xs { margin: var(--c--theme--spacings--4xs); } - .mb-4xs { margin-bottom: var(--c--theme--spacings--4xs); } - .mt-4xs { margin-top: var(--c--theme--spacings--4xs); } - .ml-4xs { margin-left: var(--c--theme--spacings--4xs); } - .mr-4xs { margin-right: var(--c--theme--spacings--4xs); } - .m-3xs { margin: var(--c--theme--spacings--3xs); } - .mb-3xs { margin-bottom: var(--c--theme--spacings--3xs); } - .mt-3xs { margin-top: var(--c--theme--spacings--3xs); } - .ml-3xs { margin-left: var(--c--theme--spacings--3xs); } - .mr-3xs { margin-right: var(--c--theme--spacings--3xs); } - .m-2xs { margin: var(--c--theme--spacings--2xs); } - .mb-2xs { margin-bottom: var(--c--theme--spacings--2xs); } - .mt-2xs { margin-top: var(--c--theme--spacings--2xs); } - .ml-2xs { margin-left: var(--c--theme--spacings--2xs); } - .mr-2xs { margin-right: var(--c--theme--spacings--2xs); } - .m-xs { margin: var(--c--theme--spacings--xs); } - .mb-xs { margin-bottom: var(--c--theme--spacings--xs); } - .mt-xs { margin-top: var(--c--theme--spacings--xs); } - .ml-xs { margin-left: var(--c--theme--spacings--xs); } - .mr-xs { margin-right: var(--c--theme--spacings--xs); } - .m-sm { margin: var(--c--theme--spacings--sm); } - .mb-sm { margin-bottom: var(--c--theme--spacings--sm); } - .mt-sm { margin-top: var(--c--theme--spacings--sm); } - .ml-sm { margin-left: var(--c--theme--spacings--sm); } - .mr-sm { margin-right: var(--c--theme--spacings--sm); } - .m-base { margin: var(--c--theme--spacings--base); } - .mb-base { margin-bottom: var(--c--theme--spacings--base); } - .mt-base { margin-top: var(--c--theme--spacings--base); } - .ml-base { margin-left: var(--c--theme--spacings--base); } - .mr-base { margin-right: var(--c--theme--spacings--base); } - .m-md { margin: var(--c--theme--spacings--md); } - .mb-md { margin-bottom: var(--c--theme--spacings--md); } - .mt-md { margin-top: var(--c--theme--spacings--md); } - .ml-md { margin-left: var(--c--theme--spacings--md); } - .mr-md { margin-right: var(--c--theme--spacings--md); } - .m-lg { margin: var(--c--theme--spacings--lg); } - .mb-lg { margin-bottom: var(--c--theme--spacings--lg); } - .mt-lg { margin-top: var(--c--theme--spacings--lg); } - .ml-lg { margin-left: var(--c--theme--spacings--lg); } - .mr-lg { margin-right: var(--c--theme--spacings--lg); } - .m-xxl { margin: var(--c--theme--spacings--xxl); } - .mb-xxl { margin-bottom: var(--c--theme--spacings--xxl); } - .mt-xxl { margin-top: var(--c--theme--spacings--xxl); } - .ml-xxl { margin-left: var(--c--theme--spacings--xxl); } - .mr-xxl { margin-right: var(--c--theme--spacings--xxl); } - .m-xxxl { margin: var(--c--theme--spacings--xxxl); } - .mb-xxxl { margin-bottom: var(--c--theme--spacings--xxxl); } - .mt-xxxl { margin-top: var(--c--theme--spacings--xxxl); } - .ml-xxxl { margin-left: var(--c--theme--spacings--xxxl); } - .mr-xxxl { margin-right: var(--c--theme--spacings--xxxl); } - .m-4xl { margin: var(--c--theme--spacings--4xl); } - .mb-4xl { margin-bottom: var(--c--theme--spacings--4xl); } - .mt-4xl { margin-top: var(--c--theme--spacings--4xl); } - .ml-4xl { margin-left: var(--c--theme--spacings--4xl); } - .mr-4xl { margin-right: var(--c--theme--spacings--4xl); } - .m-5xl { margin: var(--c--theme--spacings--5xl); } - .mb-5xl { margin-bottom: var(--c--theme--spacings--5xl); } - .mt-5xl { margin-top: var(--c--theme--spacings--5xl); } - .ml-5xl { margin-left: var(--c--theme--spacings--5xl); } - .mr-5xl { margin-right: var(--c--theme--spacings--5xl); } - .m-6xl { margin: var(--c--theme--spacings--6xl); } - .mb-6xl { margin-bottom: var(--c--theme--spacings--6xl); } - .mt-6xl { margin-top: var(--c--theme--spacings--6xl); } - .ml-6xl { margin-left: var(--c--theme--spacings--6xl); } - .mr-6xl { margin-right: var(--c--theme--spacings--6xl); } - .m-7xl { margin: var(--c--theme--spacings--7xl); } - .mb-7xl { margin-bottom: var(--c--theme--spacings--7xl); } - .mt-7xl { margin-top: var(--c--theme--spacings--7xl); } - .ml-7xl { margin-left: var(--c--theme--spacings--7xl); } - .mr-7xl { margin-right: var(--c--theme--spacings--7xl); } - .p-0 { padding: var(--c--theme--spacings--0); } - .pb-0 { padding-bottom: var(--c--theme--spacings--0); } - .pt-0 { padding-top: var(--c--theme--spacings--0); } - .pl-0 { padding-left: var(--c--theme--spacings--0); } - .pr-0 { padding-right: var(--c--theme--spacings--0); } - .p-xl { padding: var(--c--theme--spacings--xl); } - .pb-xl { padding-bottom: var(--c--theme--spacings--xl); } - .pt-xl { padding-top: var(--c--theme--spacings--xl); } - .pl-xl { padding-left: var(--c--theme--spacings--xl); } - .pr-xl { padding-right: var(--c--theme--spacings--xl); } - .p-l { padding: var(--c--theme--spacings--l); } - .pb-l { padding-bottom: var(--c--theme--spacings--l); } - .pt-l { padding-top: var(--c--theme--spacings--l); } - .pl-l { padding-left: var(--c--theme--spacings--l); } - .pr-l { padding-right: var(--c--theme--spacings--l); } - .p-b { padding: var(--c--theme--spacings--b); } - .pb-b { padding-bottom: var(--c--theme--spacings--b); } - .pt-b { padding-top: var(--c--theme--spacings--b); } - .pl-b { padding-left: var(--c--theme--spacings--b); } - .pr-b { padding-right: var(--c--theme--spacings--b); } - .p-s { padding: var(--c--theme--spacings--s); } - .pb-s { padding-bottom: var(--c--theme--spacings--s); } - .pt-s { padding-top: var(--c--theme--spacings--s); } - .pl-s { padding-left: var(--c--theme--spacings--s); } - .pr-s { padding-right: var(--c--theme--spacings--s); } - .p-t { padding: var(--c--theme--spacings--t); } - .pb-t { padding-bottom: var(--c--theme--spacings--t); } - .pt-t { padding-top: var(--c--theme--spacings--t); } - .pl-t { padding-left: var(--c--theme--spacings--t); } - .pr-t { padding-right: var(--c--theme--spacings--t); } - .p-st { padding: var(--c--theme--spacings--st); } - .pb-st { padding-bottom: var(--c--theme--spacings--st); } - .pt-st { padding-top: var(--c--theme--spacings--st); } - .pl-st { padding-left: var(--c--theme--spacings--st); } - .pr-st { padding-right: var(--c--theme--spacings--st); } - .p-none { padding: var(--c--theme--spacings--none); } - .pb-none { padding-bottom: var(--c--theme--spacings--none); } - .pt-none { padding-top: var(--c--theme--spacings--none); } - .pl-none { padding-left: var(--c--theme--spacings--none); } - .pr-none { padding-right: var(--c--theme--spacings--none); } - .p-auto { padding: var(--c--theme--spacings--auto); } - .pb-auto { padding-bottom: var(--c--theme--spacings--auto); } - .pt-auto { padding-top: var(--c--theme--spacings--auto); } - .pl-auto { padding-left: var(--c--theme--spacings--auto); } - .pr-auto { padding-right: var(--c--theme--spacings--auto); } - .p-bx { padding: var(--c--theme--spacings--bx); } - .pb-bx { padding-bottom: var(--c--theme--spacings--bx); } - .pt-bx { padding-top: var(--c--theme--spacings--bx); } - .pl-bx { padding-left: var(--c--theme--spacings--bx); } - .pr-bx { padding-right: var(--c--theme--spacings--bx); } - .p-full { padding: var(--c--theme--spacings--full); } - .pb-full { padding-bottom: var(--c--theme--spacings--full); } - .pt-full { padding-top: var(--c--theme--spacings--full); } - .pl-full { padding-left: var(--c--theme--spacings--full); } - .pr-full { padding-right: var(--c--theme--spacings--full); } - .p-4xs { padding: var(--c--theme--spacings--4xs); } - .pb-4xs { padding-bottom: var(--c--theme--spacings--4xs); } - .pt-4xs { padding-top: var(--c--theme--spacings--4xs); } - .pl-4xs { padding-left: var(--c--theme--spacings--4xs); } - .pr-4xs { padding-right: var(--c--theme--spacings--4xs); } - .p-3xs { padding: var(--c--theme--spacings--3xs); } - .pb-3xs { padding-bottom: var(--c--theme--spacings--3xs); } - .pt-3xs { padding-top: var(--c--theme--spacings--3xs); } - .pl-3xs { padding-left: var(--c--theme--spacings--3xs); } - .pr-3xs { padding-right: var(--c--theme--spacings--3xs); } - .p-2xs { padding: var(--c--theme--spacings--2xs); } - .pb-2xs { padding-bottom: var(--c--theme--spacings--2xs); } - .pt-2xs { padding-top: var(--c--theme--spacings--2xs); } - .pl-2xs { padding-left: var(--c--theme--spacings--2xs); } - .pr-2xs { padding-right: var(--c--theme--spacings--2xs); } - .p-xs { padding: var(--c--theme--spacings--xs); } - .pb-xs { padding-bottom: var(--c--theme--spacings--xs); } - .pt-xs { padding-top: var(--c--theme--spacings--xs); } - .pl-xs { padding-left: var(--c--theme--spacings--xs); } - .pr-xs { padding-right: var(--c--theme--spacings--xs); } - .p-sm { padding: var(--c--theme--spacings--sm); } - .pb-sm { padding-bottom: var(--c--theme--spacings--sm); } - .pt-sm { padding-top: var(--c--theme--spacings--sm); } - .pl-sm { padding-left: var(--c--theme--spacings--sm); } - .pr-sm { padding-right: var(--c--theme--spacings--sm); } - .p-base { padding: var(--c--theme--spacings--base); } - .pb-base { padding-bottom: var(--c--theme--spacings--base); } - .pt-base { padding-top: var(--c--theme--spacings--base); } - .pl-base { padding-left: var(--c--theme--spacings--base); } - .pr-base { padding-right: var(--c--theme--spacings--base); } - .p-md { padding: var(--c--theme--spacings--md); } - .pb-md { padding-bottom: var(--c--theme--spacings--md); } - .pt-md { padding-top: var(--c--theme--spacings--md); } - .pl-md { padding-left: var(--c--theme--spacings--md); } - .pr-md { padding-right: var(--c--theme--spacings--md); } - .p-lg { padding: var(--c--theme--spacings--lg); } - .pb-lg { padding-bottom: var(--c--theme--spacings--lg); } - .pt-lg { padding-top: var(--c--theme--spacings--lg); } - .pl-lg { padding-left: var(--c--theme--spacings--lg); } - .pr-lg { padding-right: var(--c--theme--spacings--lg); } - .p-xxl { padding: var(--c--theme--spacings--xxl); } - .pb-xxl { padding-bottom: var(--c--theme--spacings--xxl); } - .pt-xxl { padding-top: var(--c--theme--spacings--xxl); } - .pl-xxl { padding-left: var(--c--theme--spacings--xxl); } - .pr-xxl { padding-right: var(--c--theme--spacings--xxl); } - .p-xxxl { padding: var(--c--theme--spacings--xxxl); } - .pb-xxxl { padding-bottom: var(--c--theme--spacings--xxxl); } - .pt-xxxl { padding-top: var(--c--theme--spacings--xxxl); } - .pl-xxxl { padding-left: var(--c--theme--spacings--xxxl); } - .pr-xxxl { padding-right: var(--c--theme--spacings--xxxl); } - .p-4xl { padding: var(--c--theme--spacings--4xl); } - .pb-4xl { padding-bottom: var(--c--theme--spacings--4xl); } - .pt-4xl { padding-top: var(--c--theme--spacings--4xl); } - .pl-4xl { padding-left: var(--c--theme--spacings--4xl); } - .pr-4xl { padding-right: var(--c--theme--spacings--4xl); } - .p-5xl { padding: var(--c--theme--spacings--5xl); } - .pb-5xl { padding-bottom: var(--c--theme--spacings--5xl); } - .pt-5xl { padding-top: var(--c--theme--spacings--5xl); } - .pl-5xl { padding-left: var(--c--theme--spacings--5xl); } - .pr-5xl { padding-right: var(--c--theme--spacings--5xl); } - .p-6xl { padding: var(--c--theme--spacings--6xl); } - .pb-6xl { padding-bottom: var(--c--theme--spacings--6xl); } - .pt-6xl { padding-top: var(--c--theme--spacings--6xl); } - .pl-6xl { padding-left: var(--c--theme--spacings--6xl); } - .pr-6xl { padding-right: var(--c--theme--spacings--6xl); } - .p-7xl { padding: var(--c--theme--spacings--7xl); } - .pb-7xl { padding-bottom: var(--c--theme--spacings--7xl); } - .pt-7xl { padding-top: var(--c--theme--spacings--7xl); } - .pl-7xl { padding-left: var(--c--theme--spacings--7xl); } - .pr-7xl { padding-right: var(--c--theme--spacings--7xl); } diff --git a/src/frontend/apps/impress/src/cunningham/cunningham-tokens.ts b/src/frontend/apps/impress/src/cunningham/cunningham-tokens.ts index e75ad694f..90cd485ad 100644 --- a/src/frontend/apps/impress/src/cunningham/cunningham-tokens.ts +++ b/src/frontend/apps/impress/src/cunningham/cunningham-tokens.ts @@ -80,6 +80,36 @@ export const tokens = { 'primary-950': '#1B1B35', 'info-150': '#E5EEFA', 'greyscale-1000': '#161616', + 'blue-400': '#7AB1E8', + 'blue-500': '#417DC4', + 'blue-600': '#3558A2', + 'brown-400': '#E6BE92', + 'brown-500': '#BD987A', + 'brown-600': '#745B47', + 'cyan-400': '#34BAB5', + 'cyan-500': '#009099', + 'cyan-600': '#006A6F', + 'gold-400': '#FFCA00', + 'gold-500': '#C3992A', + 'gold-600': '#695240', + 'green-400': '#34CB6A', + 'green-500': '#00A95F', + 'green-600': '#297254', + 'olive-400': '#99C221', + 'olive-500': '#68A532', + 'olive-600': '#447049', + 'orange-400': '#FF732C', + 'orange-500': '#E4794A', + 'orange-600': '#755348', + 'pink-400': '#FFB7AE', + 'pink-500': '#E18B76', + 'pink-600': '#8D533E', + 'purple-400': '#CE70CC', + 'purple-500': '#A558A0', + 'purple-600': '#6E445A', + 'yellow-400': '#D8C634', + 'yellow-500': '#B7A73F', + 'yellow-600': '#66673D', }, font: { sizes: { diff --git a/src/frontend/apps/impress/src/features/docs/doc-header/components/DocToolBox.tsx b/src/frontend/apps/impress/src/features/docs/doc-header/components/DocToolBox.tsx index 3db2bea86..9ef1e628d 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-header/components/DocToolBox.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-header/components/DocToolBox.tsx @@ -1,6 +1,7 @@ import { Button, VariantType, + useModal, useToastProvider, } from '@openfun/cunningham-react'; import { useState } from 'react'; @@ -28,6 +29,8 @@ import { import { ModalVersion, Versions } from '@/features/docs/doc-versioning'; import { useResponsiveStore } from '@/stores'; +import { DocShareModal } from '../../doc-management/components/share/DocShareModal'; + import { ModalPDF } from './ModalExport'; interface DocToolBoxProps { @@ -46,6 +49,8 @@ export const DocToolBox = ({ doc, versionId }: DocToolBoxProps) => { const [isModalRemoveOpen, setIsModalRemoveOpen] = useState(false); const [isModalPDFOpen, setIsModalPDFOpen] = useState(false); + const modalShare = useModal(); + const { setIsPanelOpen, setIsPanelTableContentOpen } = usePanelEditorStore(); const [isModalVersionOpen, setIsModalVersionOpen] = useState(false); const { isSmallMobile } = useResponsiveStore(); @@ -162,7 +167,8 @@ export const DocToolBox = ({ doc, versionId }: DocToolBoxProps) => { +
+
+ ); +}; diff --git a/src/frontend/apps/impress/src/features/docs/doc-management/components/share/DocShareAddMemberListItem.tsx b/src/frontend/apps/impress/src/features/docs/doc-management/components/share/DocShareAddMemberListItem.tsx new file mode 100644 index 000000000..25ceaef38 --- /dev/null +++ b/src/frontend/apps/impress/src/features/docs/doc-management/components/share/DocShareAddMemberListItem.tsx @@ -0,0 +1,42 @@ +import { Button } from '@openfun/cunningham-react'; +import { css } from 'styled-components'; + +import { Box, Icon, Text } from '@/components'; +import { User } from '@/core'; +import { useCunninghamTheme } from '@/cunningham'; + +type Props = { + user: User; + onRemoveUser?: (user: User) => void; +}; +export const DocShareAddMemberListItem = ({ user, onRemoveUser }: Props) => { + const { spacingsTokens, colorsTokens, fontSizesTokens } = + useCunninghamTheme(); + const spacing = spacingsTokens(); + const color = colorsTokens(); + const fontSize = fontSizesTokens(); + return ( + + {user.full_name || user.email} +