diff --git a/src/frontend/apps/desk/cunningham.ts b/src/frontend/apps/desk/cunningham.ts
index 828e243..59c1ded 100644
--- a/src/frontend/apps/desk/cunningham.ts
+++ b/src/frontend/apps/desk/cunningham.ts
@@ -88,11 +88,10 @@ const config = {
focus: 'var(--c--components--forms-select--border-radius)',
},
'font-size': 'var(--c--theme--font--sizes--ml)',
+ 'menu-background-color': '#ffffff',
'item-background-color': {
- hover: 'var(--c--theme--colors--primary-100)',
+ hover: 'var(--c--theme--colors--primary-300)',
},
- 'item-color': 'var(--c--theme--colors--primary-500)',
- 'value-color': 'var(--c--theme--colors--primary-500)',
},
'forms-switch': {
'accent-color': 'var(--c--theme--colors--primary-400)',
@@ -157,7 +156,7 @@ const config = {
},
},
tertiary: {
- color: 'var(--c--theme--colors--primary-500)',
+ color: 'var(--c--theme--colors--primary-text)',
'color-disabled': 'var(--c--theme--colors--greyscale-600)',
background: {
'color-hover': 'var(--c--theme--colors--primary-100)',
@@ -173,6 +172,118 @@ const config = {
},
},
},
+ dsfr: {
+ theme: {
+ colors: {
+ 'primary-text': '#000091',
+ 'primary-100': '#f5f5fe',
+ 'primary-200': '#ececfe',
+ 'primary-300': '#e3e3fd',
+ 'primary-400': '#cacafb',
+ 'primary-500': '#6a6af4',
+ 'primary-600': '#000091',
+ 'primary-700': '#272747',
+ 'primary-800': '#21213f',
+ 'primary-900': '#1c1a36',
+ 'secondary-text': '#FFFFFF',
+ 'secondary-100': '#fee9ea',
+ 'secondary-200': '#fedfdf',
+ 'secondary-300': '#fdbfbf',
+ 'secondary-400': '#e1020f',
+ 'secondary-500': '#c91a1f',
+ 'secondary-600': '#5e2b2b',
+ 'secondary-700': '#3b2424',
+ 'secondary-800': '#341f1f',
+ 'secondary-900': '#2b1919',
+ 'greyscale-000': '#cecece',
+ 'greyscale-100': '#f6f6f6',
+ 'greyscale-200': '#eeeeee',
+ 'greyscale-300': '#e5e5e5',
+ 'greyscale-400': '#dddddd',
+ 'greyscale-500': '#cecece',
+ 'greyscale-600': '#7b7b7b',
+ 'greyscale-700': '#666666',
+ 'greyscale-800': '#2a2a2a',
+ 'greyscale-900': '#1e1e1e',
+ 'success-text': '#1f8d49',
+ 'success-100': '#dffee6',
+ 'success-200': '#b8fec9',
+ 'success-300': '#88fdaa',
+ 'success-400': '#3bea7e',
+ 'success-500': '#1f8d49',
+ 'success-600': '#18753c',
+ 'success-700': '#204129',
+ 'success-800': '#1e2e22',
+ 'success-900': '#19281d',
+ 'info-text': '#0078f3',
+ 'info-100': '#f4f6ff',
+ 'info-200': '#e8edff',
+ 'info-300': '#dde5ff',
+ 'info-400': '#bdcdff',
+ 'info-500': '#0078f3',
+ 'info-600': '#0063cb',
+ 'info-700': '#f4f6ff',
+ 'info-800': '#222a3f',
+ 'info-900': '#1d2437',
+ 'warning-text': '#d64d00',
+ 'warning-100': '#fff4f3',
+ 'warning-200': '#ffe9e6',
+ 'warning-300': '#ffded9',
+ 'warning-400': '#ffbeb4',
+ 'warning-500': '#d64d00',
+ 'warning-600': '#b34000',
+ 'warning-700': '#5e2c21',
+ 'warning-800': '#3e241e',
+ 'warning-900': '#361e19',
+ 'danger-text': '#e1000f',
+ 'danger-100': '#fef4f4',
+ 'danger-200': '#fee9e9',
+ 'danger-300': '#fddede',
+ 'danger-400': '#fcbfbf',
+ 'danger-500': '#e1000f',
+ 'danger-600': '#c9191e',
+ 'danger-700': '#642727',
+ 'danger-800': '#412121',
+ 'danger-900': '#3a1c1c',
+ },
+ font: {
+ families: {
+ accent: 'Marianne',
+ base: 'Marianne',
+ },
+ },
+ },
+ components: {
+ alert: {
+ 'border-radius': '0',
+ },
+ button: {
+ 'border-radius': '2px',
+ },
+ 'forms-checkbox': {
+ 'border-radius': '0',
+ },
+ 'forms-switch': {
+ 'handle-border-radius': '2px',
+ 'rail-border-radius': '4px',
+ },
+ 'forms-input': {
+ 'border-radius': '0',
+ },
+ 'forms-select': {
+ 'border-radius': '0',
+ },
+ 'forms-datepicker': {
+ 'border-radius': '0',
+ },
+ 'forms-textarea': {
+ 'border-radius': '0',
+ },
+ 'forms-fileuploader': {
+ 'border-radius': '0',
+ },
+ },
+ },
},
};
diff --git a/src/frontend/apps/desk/src/app/layout.tsx b/src/frontend/apps/desk/src/app/layout.tsx
index ab1dd33..0cc9f1e 100644
--- a/src/frontend/apps/desk/src/app/layout.tsx
+++ b/src/frontend/apps/desk/src/app/layout.tsx
@@ -1,13 +1,12 @@
'use client';
-import { CunninghamProvider, Switch } from '@openfun/cunningham-react';
+import { CunninghamProvider } from '@openfun/cunningham-react';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
-import { Inter } from 'next/font/google';
-import { useState } from 'react';
-import './globals.css';
-const inter = Inter({ subsets: ['latin'] });
+import './globals.css';
+import { useCunninghamTheme } from '@/cunningham';
+
const queryClient = new QueryClient();
export default function RootLayout({
@@ -15,27 +14,14 @@ export default function RootLayout({
}: {
children: React.ReactNode;
}) {
- const [themeDark, setThemeDark] = useState(false);
+ const { theme } = useCunninghamTheme();
return (
-
+
-
-
- setThemeDark(!themeDark)}
- checked={themeDark}
- />
- {children}
-
-
+ {children}
diff --git a/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Bold.woff b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Bold.woff
new file mode 100644
index 0000000..335e348
Binary files /dev/null and b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Bold.woff differ
diff --git a/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Bold_Italic.woff b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Bold_Italic.woff
new file mode 100644
index 0000000..72878fc
Binary files /dev/null and b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Bold_Italic.woff differ
diff --git a/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-ExtraBold.woff b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-ExtraBold.woff
new file mode 100644
index 0000000..ad85a55
Binary files /dev/null and b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-ExtraBold.woff differ
diff --git a/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-ExtraBold_Italic.woff b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-ExtraBold_Italic.woff
new file mode 100644
index 0000000..af92ea7
Binary files /dev/null and b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-ExtraBold_Italic.woff differ
diff --git a/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Light.woff b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Light.woff
new file mode 100644
index 0000000..9ef49df
Binary files /dev/null and b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Light.woff differ
diff --git a/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Light_Italic.woff b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Light_Italic.woff
new file mode 100644
index 0000000..5ae0dbe
Binary files /dev/null and b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Light_Italic.woff differ
diff --git a/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Medium.woff b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Medium.woff
new file mode 100644
index 0000000..692476e
Binary files /dev/null and b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Medium.woff differ
diff --git a/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Medium_Italic.woff b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Medium_Italic.woff
new file mode 100644
index 0000000..8e32b88
Binary files /dev/null and b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Medium_Italic.woff differ
diff --git a/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Regular.woff b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Regular.woff
new file mode 100644
index 0000000..a95a2d0
Binary files /dev/null and b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Regular.woff differ
diff --git a/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Regular_Italic.woff b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Regular_Italic.woff
new file mode 100644
index 0000000..1880c5d
Binary files /dev/null and b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Regular_Italic.woff differ
diff --git a/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Thin.woff b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Thin.woff
new file mode 100644
index 0000000..6c8bc5a
Binary files /dev/null and b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Thin.woff differ
diff --git a/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Thin_Italic.woff b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Thin_Italic.woff
new file mode 100644
index 0000000..4c23d6b
Binary files /dev/null and b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-Thin_Italic.woff differ
diff --git a/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-font.css b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-font.css
new file mode 100644
index 0000000..f8183f9
--- /dev/null
+++ b/src/frontend/apps/desk/src/assets/fonts/Marianne/Marianne-font.css
@@ -0,0 +1,77 @@
+@font-face {
+ font-family: Marianne;
+ src: url('Marianne-Thin.woff') format('truetype');
+ font-weight: 100;
+}
+
+@font-face {
+ font-family: Marianne;
+ src: url('Marianne-Thin_Italic.woff') format('truetype');
+ font-weight: 100;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: Marianne;
+ src: url('Marianne-Light.woff') format('truetype');
+ font-weight: 300;
+}
+
+@font-face {
+ font-family: Marianne;
+ src: url('Marianne-Light_Italic.woff') format('truetype');
+ font-weight: 300;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: Marianne;
+ src: url('Marianne-Regular.woff') format('truetype');
+ font-weight: 400;
+}
+
+@font-face {
+ font-family: Marianne;
+ src: url('Marianne-Regular_Italic.woff') format('truetype');
+ font-weight: 400;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: Marianne;
+ src: url('Marianne-Medium.woff') format('truetype');
+ font-weight: 500;
+}
+
+@font-face {
+ font-family: Marianne;
+ src: url('Marianne-Medium_Italic.woff') format('truetype');
+ font-weight: 500;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: Marianne;
+ src: url('Marianne-Bold.woff') format('truetype');
+ font-weight: 700;
+}
+
+@font-face {
+ font-family: Marianne;
+ src: url('Marianne-Bold_Italic.woff') format('truetype');
+ font-weight: 700;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: Marianne;
+ src: url('Marianne-ExtraBold.woff') format('truetype');
+ font-weight: 800;
+}
+
+@font-face {
+ font-family: Marianne;
+ src: url('Marianne-ExtraBold_Italic.woff') format('truetype');
+ font-weight: 800;
+ font-style: italic;
+}
diff --git a/src/frontend/apps/desk/src/cunningham/cunningham-style.css b/src/frontend/apps/desk/src/cunningham/cunningham-style.css
index e9d0940..ee8dd78 100644
--- a/src/frontend/apps/desk/src/cunningham/cunningham-style.css
+++ b/src/frontend/apps/desk/src/cunningham/cunningham-style.css
@@ -3,12 +3,12 @@
@import url('@openfun/cunningham-react/fonts');
@import url('./cunningham-tokens.css');
@import url('./cunningham-custom-tokens.css');
+@import url('../assets/fonts/Marianne/Marianne-font.css');
.c__input,
.c__field,
.c__select,
-.c__datagrid,
-.typo {
+.c__datagrid {
font-family: var(--c--theme--font--families--base);
}
diff --git a/src/frontend/apps/desk/src/cunningham/cunningham-tokens.css b/src/frontend/apps/desk/src/cunningham/cunningham-tokens.css
index c11e5fe..80951d6 100644
--- a/src/frontend/apps/desk/src/cunningham/cunningham-tokens.css
+++ b/src/frontend/apps/desk/src/cunningham/cunningham-tokens.css
@@ -171,14 +171,9 @@
--c--components--forms-select--border-radius
);
--c--components--forms-select--font-size: var(--c--theme--font--sizes--ml);
+ --c--components--forms-select--menu-background-color: #fff;
--c--components--forms-select--item-background-color--hover: var(
- --c--theme--colors--primary-100
- );
- --c--components--forms-select--item-color: var(
- --c--theme--colors--primary-500
- );
- --c--components--forms-select--value-color: var(
- --c--theme--colors--primary-500
+ --c--theme--colors--primary-300
);
--c--components--forms-switch--accent-color: var(
--c--theme--colors--primary-400
@@ -253,7 +248,7 @@
--c--theme--colors--primary-200
);
--c--components--button--tertiary--color: var(
- --c--theme--colors--primary-500
+ --c--theme--colors--primary-text
);
--c--components--button--tertiary--color-disabled: var(
--c--theme--colors--greyscale-600
@@ -317,6 +312,91 @@
--c--theme--colors--danger-900: #9d6666;
}
+.cunningham-theme--dsfr {
+ --c--theme--colors--primary-text: #000091;
+ --c--theme--colors--primary-100: #f5f5fe;
+ --c--theme--colors--primary-200: #ececfe;
+ --c--theme--colors--primary-300: #e3e3fd;
+ --c--theme--colors--primary-400: #cacafb;
+ --c--theme--colors--primary-500: #6a6af4;
+ --c--theme--colors--primary-600: #000091;
+ --c--theme--colors--primary-700: #272747;
+ --c--theme--colors--primary-800: #21213f;
+ --c--theme--colors--primary-900: #1c1a36;
+ --c--theme--colors--secondary-text: #fff;
+ --c--theme--colors--secondary-100: #fee9ea;
+ --c--theme--colors--secondary-200: #fedfdf;
+ --c--theme--colors--secondary-300: #fdbfbf;
+ --c--theme--colors--secondary-400: #e1020f;
+ --c--theme--colors--secondary-500: #c91a1f;
+ --c--theme--colors--secondary-600: #5e2b2b;
+ --c--theme--colors--secondary-700: #3b2424;
+ --c--theme--colors--secondary-800: #341f1f;
+ --c--theme--colors--secondary-900: #2b1919;
+ --c--theme--colors--greyscale-000: #cecece;
+ --c--theme--colors--greyscale-100: #f6f6f6;
+ --c--theme--colors--greyscale-200: #eee;
+ --c--theme--colors--greyscale-300: #e5e5e5;
+ --c--theme--colors--greyscale-400: #ddd;
+ --c--theme--colors--greyscale-500: #cecece;
+ --c--theme--colors--greyscale-600: #7b7b7b;
+ --c--theme--colors--greyscale-700: #666;
+ --c--theme--colors--greyscale-800: #2a2a2a;
+ --c--theme--colors--greyscale-900: #1e1e1e;
+ --c--theme--colors--success-text: #1f8d49;
+ --c--theme--colors--success-100: #dffee6;
+ --c--theme--colors--success-200: #b8fec9;
+ --c--theme--colors--success-300: #88fdaa;
+ --c--theme--colors--success-400: #3bea7e;
+ --c--theme--colors--success-500: #1f8d49;
+ --c--theme--colors--success-600: #18753c;
+ --c--theme--colors--success-700: #204129;
+ --c--theme--colors--success-800: #1e2e22;
+ --c--theme--colors--success-900: #19281d;
+ --c--theme--colors--info-text: #0078f3;
+ --c--theme--colors--info-100: #f4f6ff;
+ --c--theme--colors--info-200: #e8edff;
+ --c--theme--colors--info-300: #dde5ff;
+ --c--theme--colors--info-400: #bdcdff;
+ --c--theme--colors--info-500: #0078f3;
+ --c--theme--colors--info-600: #0063cb;
+ --c--theme--colors--info-700: #f4f6ff;
+ --c--theme--colors--info-800: #222a3f;
+ --c--theme--colors--info-900: #1d2437;
+ --c--theme--colors--warning-text: #d64d00;
+ --c--theme--colors--warning-100: #fff4f3;
+ --c--theme--colors--warning-200: #ffe9e6;
+ --c--theme--colors--warning-300: #ffded9;
+ --c--theme--colors--warning-400: #ffbeb4;
+ --c--theme--colors--warning-500: #d64d00;
+ --c--theme--colors--warning-600: #b34000;
+ --c--theme--colors--warning-700: #5e2c21;
+ --c--theme--colors--warning-800: #3e241e;
+ --c--theme--colors--warning-900: #361e19;
+ --c--theme--colors--danger-text: #e1000f;
+ --c--theme--colors--danger-100: #fef4f4;
+ --c--theme--colors--danger-200: #fee9e9;
+ --c--theme--colors--danger-300: #fddede;
+ --c--theme--colors--danger-400: #fcbfbf;
+ --c--theme--colors--danger-500: #e1000f;
+ --c--theme--colors--danger-600: #c9191e;
+ --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--components--alert--border-radius: 0;
+ --c--components--button--border-radius: 2px;
+ --c--components--forms-checkbox--border-radius: 0;
+ --c--components--forms-switch--handle-border-radius: 2px;
+ --c--components--forms-switch--rail-border-radius: 4px;
+ --c--components--forms-input--border-radius: 0;
+ --c--components--forms-select--border-radius: 0;
+ --c--components--forms-datepicker--border-radius: 0;
+ --c--components--forms-textarea--border-radius: 0;
+ --c--components--forms-fileuploader--border-radius: 0;
+}
+
.clr-secondary-text {
color: var(--c--theme--colors--secondary-text);
}
diff --git a/src/frontend/apps/desk/src/cunningham/cunningham-tokens.ts b/src/frontend/apps/desk/src/cunningham/cunningham-tokens.ts
index a00fbec..611856b 100644
--- a/src/frontend/apps/desk/src/cunningham/cunningham-tokens.ts
+++ b/src/frontend/apps/desk/src/cunningham/cunningham-tokens.ts
@@ -191,11 +191,10 @@ export const tokens = {
focus: 'var(--c--components--forms-select--border-radius)',
},
'font-size': 'var(--c--theme--font--sizes--ml)',
+ 'menu-background-color': '#ffffff',
'item-background-color': {
- hover: 'var(--c--theme--colors--primary-100)',
+ hover: 'var(--c--theme--colors--primary-300)',
},
- 'item-color': 'var(--c--theme--colors--primary-500)',
- 'value-color': 'var(--c--theme--colors--primary-500)',
},
'forms-switch': {
'accent-color': 'var(--c--theme--colors--primary-400)',
@@ -256,7 +255,7 @@ export const tokens = {
border: { color: 'var(--c--theme--colors--primary-200)' },
},
tertiary: {
- color: 'var(--c--theme--colors--primary-500)',
+ color: 'var(--c--theme--colors--primary-text)',
'color-disabled': 'var(--c--theme--colors--greyscale-600)',
background: {
'color-hover': 'var(--c--theme--colors--primary-100)',
@@ -319,5 +318,96 @@ export const tokens = {
},
},
},
+ dsfr: {
+ theme: {
+ colors: {
+ 'primary-text': '#000091',
+ 'primary-100': '#f5f5fe',
+ 'primary-200': '#ececfe',
+ 'primary-300': '#e3e3fd',
+ 'primary-400': '#cacafb',
+ 'primary-500': '#6a6af4',
+ 'primary-600': '#000091',
+ 'primary-700': '#272747',
+ 'primary-800': '#21213f',
+ 'primary-900': '#1c1a36',
+ 'secondary-text': '#FFFFFF',
+ 'secondary-100': '#fee9ea',
+ 'secondary-200': '#fedfdf',
+ 'secondary-300': '#fdbfbf',
+ 'secondary-400': '#e1020f',
+ 'secondary-500': '#c91a1f',
+ 'secondary-600': '#5e2b2b',
+ 'secondary-700': '#3b2424',
+ 'secondary-800': '#341f1f',
+ 'secondary-900': '#2b1919',
+ 'greyscale-000': '#cecece',
+ 'greyscale-100': '#f6f6f6',
+ 'greyscale-200': '#eeeeee',
+ 'greyscale-300': '#e5e5e5',
+ 'greyscale-400': '#dddddd',
+ 'greyscale-500': '#cecece',
+ 'greyscale-600': '#7b7b7b',
+ 'greyscale-700': '#666666',
+ 'greyscale-800': '#2a2a2a',
+ 'greyscale-900': '#1e1e1e',
+ 'success-text': '#1f8d49',
+ 'success-100': '#dffee6',
+ 'success-200': '#b8fec9',
+ 'success-300': '#88fdaa',
+ 'success-400': '#3bea7e',
+ 'success-500': '#1f8d49',
+ 'success-600': '#18753c',
+ 'success-700': '#204129',
+ 'success-800': '#1e2e22',
+ 'success-900': '#19281d',
+ 'info-text': '#0078f3',
+ 'info-100': '#f4f6ff',
+ 'info-200': '#e8edff',
+ 'info-300': '#dde5ff',
+ 'info-400': '#bdcdff',
+ 'info-500': '#0078f3',
+ 'info-600': '#0063cb',
+ 'info-700': '#f4f6ff',
+ 'info-800': '#222a3f',
+ 'info-900': '#1d2437',
+ 'warning-text': '#d64d00',
+ 'warning-100': '#fff4f3',
+ 'warning-200': '#ffe9e6',
+ 'warning-300': '#ffded9',
+ 'warning-400': '#ffbeb4',
+ 'warning-500': '#d64d00',
+ 'warning-600': '#b34000',
+ 'warning-700': '#5e2c21',
+ 'warning-800': '#3e241e',
+ 'warning-900': '#361e19',
+ 'danger-text': '#e1000f',
+ 'danger-100': '#fef4f4',
+ 'danger-200': '#fee9e9',
+ 'danger-300': '#fddede',
+ 'danger-400': '#fcbfbf',
+ 'danger-500': '#e1000f',
+ 'danger-600': '#c9191e',
+ 'danger-700': '#642727',
+ 'danger-800': '#412121',
+ 'danger-900': '#3a1c1c',
+ },
+ font: { families: { accent: 'Marianne', base: 'Marianne' } },
+ },
+ components: {
+ alert: { 'border-radius': '0' },
+ button: { 'border-radius': '2px' },
+ 'forms-checkbox': { 'border-radius': '0' },
+ 'forms-switch': {
+ 'handle-border-radius': '2px',
+ 'rail-border-radius': '4px',
+ },
+ 'forms-input': { 'border-radius': '0' },
+ 'forms-select': { 'border-radius': '0' },
+ 'forms-datepicker': { 'border-radius': '0' },
+ 'forms-textarea': { 'border-radius': '0' },
+ 'forms-fileuploader': { 'border-radius': '0' },
+ },
+ },
},
};
diff --git a/src/frontend/apps/desk/src/cunningham/index.ts b/src/frontend/apps/desk/src/cunningham/index.ts
index b56da0d..e955768 100644
--- a/src/frontend/apps/desk/src/cunningham/index.ts
+++ b/src/frontend/apps/desk/src/cunningham/index.ts
@@ -1,7 +1,4 @@
import { tokens } from './cunningham-tokens';
+import useCunninghamTheme from './useCunninghamTheme';
-const themeTokens = tokens.themes.default.theme;
-const colorsTokens = tokens.themes.default.theme.colors;
-const componentTokens = tokens.themes.default.components;
-
-export { tokens, themeTokens, componentTokens, colorsTokens };
+export { tokens, useCunninghamTheme };
diff --git a/src/frontend/apps/desk/src/cunningham/useCunninghamTheme.tsx b/src/frontend/apps/desk/src/cunningham/useCunninghamTheme.tsx
new file mode 100644
index 0000000..2e038ef
--- /dev/null
+++ b/src/frontend/apps/desk/src/cunningham/useCunninghamTheme.tsx
@@ -0,0 +1,27 @@
+import { create } from 'zustand';
+
+import { tokens } from './cunningham-tokens';
+type ColorsTokens = typeof tokens.themes.default.theme.colors;
+type ComponentTokens = typeof tokens.themes.default.components;
+
+interface AuthStore {
+ theme: string;
+ setTheme: (theme: string) => void;
+ colorsTokens: () => ColorsTokens;
+ componentTokens: () => ComponentTokens;
+}
+
+const useCunninghamTheme = create((set, get) => {
+ const currentTheme = () => tokens.themes[get().theme as 'default'];
+
+ return {
+ theme: 'dsfr',
+ colorsTokens: () => currentTheme().theme.colors,
+ componentTokens: () => currentTheme().components,
+ setTheme: (theme: string) => {
+ set({ theme });
+ },
+ };
+});
+
+export default useCunninghamTheme;