@fristil/designsystem 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -0
- package/LICENSE +21 -0
- package/README.md +101 -0
- package/dist/cli.d.ts +31 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +261 -0
- package/dist/cli.js.map +1 -0
- package/dist/components/css/accordion/accordion.d.ts +37 -0
- package/dist/components/css/accordion/accordion.d.ts.map +1 -0
- package/dist/components/css/accordion/accordion.js +31 -0
- package/dist/components/css/accordion/accordion.js.map +1 -0
- package/dist/components/css/alert/alert.d.ts +35 -0
- package/dist/components/css/alert/alert.d.ts.map +1 -0
- package/dist/components/css/alert/alert.js +29 -0
- package/dist/components/css/alert/alert.js.map +1 -0
- package/dist/components/css/avatar/avatar.d.ts +40 -0
- package/dist/components/css/avatar/avatar.d.ts.map +1 -0
- package/dist/components/css/avatar/avatar.js +30 -0
- package/dist/components/css/avatar/avatar.js.map +1 -0
- package/dist/components/css/badge/badge.d.ts +24 -0
- package/dist/components/css/badge/badge.d.ts.map +1 -0
- package/dist/components/css/badge/badge.js +24 -0
- package/dist/components/css/badge/badge.js.map +1 -0
- package/dist/components/css/breadcrumbs/breadcrumbs.d.ts +25 -0
- package/dist/components/css/breadcrumbs/breadcrumbs.d.ts.map +1 -0
- package/dist/components/css/breadcrumbs/breadcrumbs.js +23 -0
- package/dist/components/css/breadcrumbs/breadcrumbs.js.map +1 -0
- package/dist/components/css/button/button.d.ts +26 -0
- package/dist/components/css/button/button.d.ts.map +1 -0
- package/dist/components/css/button/button.js +25 -0
- package/dist/components/css/button/button.js.map +1 -0
- package/dist/components/css/card/card.d.ts +36 -0
- package/dist/components/css/card/card.d.ts.map +1 -0
- package/dist/components/css/card/card.js +28 -0
- package/dist/components/css/card/card.js.map +1 -0
- package/dist/components/css/checkbox/checkbox.d.ts +32 -0
- package/dist/components/css/checkbox/checkbox.d.ts.map +1 -0
- package/dist/components/css/checkbox/checkbox.js +27 -0
- package/dist/components/css/checkbox/checkbox.js.map +1 -0
- package/dist/components/css/dialog/dialog.d.ts +30 -0
- package/dist/components/css/dialog/dialog.d.ts.map +1 -0
- package/dist/components/css/dialog/dialog.js +28 -0
- package/dist/components/css/dialog/dialog.js.map +1 -0
- package/dist/components/css/divider/divider.d.ts +28 -0
- package/dist/components/css/divider/divider.d.ts.map +1 -0
- package/dist/components/css/divider/divider.js +22 -0
- package/dist/components/css/divider/divider.js.map +1 -0
- package/dist/components/css/error-text/error-text.d.ts +24 -0
- package/dist/components/css/error-text/error-text.d.ts.map +1 -0
- package/dist/components/css/error-text/error-text.js +18 -0
- package/dist/components/css/error-text/error-text.js.map +1 -0
- package/dist/components/css/fieldset/fieldset.d.ts +55 -0
- package/dist/components/css/fieldset/fieldset.d.ts.map +1 -0
- package/dist/components/css/fieldset/fieldset.js +39 -0
- package/dist/components/css/fieldset/fieldset.js.map +1 -0
- package/dist/components/css/file-upload/file-upload.d.ts +41 -0
- package/dist/components/css/file-upload/file-upload.d.ts.map +1 -0
- package/dist/components/css/file-upload/file-upload.js +32 -0
- package/dist/components/css/file-upload/file-upload.js.map +1 -0
- package/dist/components/css/heading/heading.d.ts +29 -0
- package/dist/components/css/heading/heading.d.ts.map +1 -0
- package/dist/components/css/heading/heading.js +23 -0
- package/dist/components/css/heading/heading.js.map +1 -0
- package/dist/components/css/help-text/help-text.d.ts +24 -0
- package/dist/components/css/help-text/help-text.d.ts.map +1 -0
- package/dist/components/css/help-text/help-text.js +23 -0
- package/dist/components/css/help-text/help-text.js.map +1 -0
- package/dist/components/css/input/input.d.ts +39 -0
- package/dist/components/css/input/input.d.ts.map +1 -0
- package/dist/components/css/input/input.js +44 -0
- package/dist/components/css/input/input.js.map +1 -0
- package/dist/components/css/label/label.d.ts +33 -0
- package/dist/components/css/label/label.d.ts.map +1 -0
- package/dist/components/css/label/label.js +23 -0
- package/dist/components/css/label/label.js.map +1 -0
- package/dist/components/css/link/link.d.ts +21 -0
- package/dist/components/css/link/link.d.ts.map +1 -0
- package/dist/components/css/link/link.js +14 -0
- package/dist/components/css/link/link.js.map +1 -0
- package/dist/components/css/list/list.d.ts +29 -0
- package/dist/components/css/list/list.d.ts.map +1 -0
- package/dist/components/css/list/list.js +23 -0
- package/dist/components/css/list/list.js.map +1 -0
- package/dist/components/css/pagination/pagination.d.ts +27 -0
- package/dist/components/css/pagination/pagination.d.ts.map +1 -0
- package/dist/components/css/pagination/pagination.js +25 -0
- package/dist/components/css/pagination/pagination.js.map +1 -0
- package/dist/components/css/paragraph/paragraph.d.ts +36 -0
- package/dist/components/css/paragraph/paragraph.d.ts.map +1 -0
- package/dist/components/css/paragraph/paragraph.js +26 -0
- package/dist/components/css/paragraph/paragraph.js.map +1 -0
- package/dist/components/css/radio/radio.d.ts +32 -0
- package/dist/components/css/radio/radio.d.ts.map +1 -0
- package/dist/components/css/radio/radio.js +27 -0
- package/dist/components/css/radio/radio.js.map +1 -0
- package/dist/components/css/search/search.d.ts +33 -0
- package/dist/components/css/search/search.d.ts.map +1 -0
- package/dist/components/css/search/search.js +31 -0
- package/dist/components/css/search/search.js.map +1 -0
- package/dist/components/css/select/select.d.ts +23 -0
- package/dist/components/css/select/select.d.ts.map +1 -0
- package/dist/components/css/select/select.js +18 -0
- package/dist/components/css/select/select.js.map +1 -0
- package/dist/components/css/shared.d.ts +26 -0
- package/dist/components/css/shared.d.ts.map +1 -0
- package/dist/components/css/shared.js +34 -0
- package/dist/components/css/shared.js.map +1 -0
- package/dist/components/css/skeleton/skeleton.d.ts +29 -0
- package/dist/components/css/skeleton/skeleton.d.ts.map +1 -0
- package/dist/components/css/skeleton/skeleton.js +23 -0
- package/dist/components/css/skeleton/skeleton.js.map +1 -0
- package/dist/components/css/skip-link/skip-link.d.ts +18 -0
- package/dist/components/css/skip-link/skip-link.d.ts.map +1 -0
- package/dist/components/css/skip-link/skip-link.js +16 -0
- package/dist/components/css/skip-link/skip-link.js.map +1 -0
- package/dist/components/css/spinner/spinner.d.ts +33 -0
- package/dist/components/css/spinner/spinner.d.ts.map +1 -0
- package/dist/components/css/spinner/spinner.js +25 -0
- package/dist/components/css/spinner/spinner.js.map +1 -0
- package/dist/components/css/sr-only/sr-only.d.ts +17 -0
- package/dist/components/css/sr-only/sr-only.d.ts.map +1 -0
- package/dist/components/css/sr-only/sr-only.js +14 -0
- package/dist/components/css/sr-only/sr-only.js.map +1 -0
- package/dist/components/css/switch/switch.d.ts +33 -0
- package/dist/components/css/switch/switch.d.ts.map +1 -0
- package/dist/components/css/switch/switch.js +29 -0
- package/dist/components/css/switch/switch.js.map +1 -0
- package/dist/components/css/table/table.d.ts +36 -0
- package/dist/components/css/table/table.d.ts.map +1 -0
- package/dist/components/css/table/table.js +28 -0
- package/dist/components/css/table/table.js.map +1 -0
- package/dist/components/css/tag/tag.d.ts +35 -0
- package/dist/components/css/tag/tag.d.ts.map +1 -0
- package/dist/components/css/tag/tag.js +27 -0
- package/dist/components/css/tag/tag.js.map +1 -0
- package/dist/components/css/textarea/textarea.d.ts +23 -0
- package/dist/components/css/textarea/textarea.d.ts.map +1 -0
- package/dist/components/css/textarea/textarea.js +18 -0
- package/dist/components/css/textarea/textarea.js.map +1 -0
- package/dist/components/css/toggle-group/toggle-group.d.ts +31 -0
- package/dist/components/css/toggle-group/toggle-group.d.ts.map +1 -0
- package/dist/components/css/toggle-group/toggle-group.js +29 -0
- package/dist/components/css/toggle-group/toggle-group.js.map +1 -0
- package/dist/components/css/tooltip/tooltip.d.ts +30 -0
- package/dist/components/css/tooltip/tooltip.d.ts.map +1 -0
- package/dist/components/css/tooltip/tooltip.js +28 -0
- package/dist/components/css/tooltip/tooltip.js.map +1 -0
- package/dist/components/frittstaende/calendar/fs-calendar.d.ts +52 -0
- package/dist/components/frittstaende/calendar/fs-calendar.d.ts.map +1 -0
- package/dist/components/frittstaende/calendar/fs-calendar.js +462 -0
- package/dist/components/frittstaende/calendar/fs-calendar.js.map +1 -0
- package/dist/components/frittstaende/date-field/fs-date-field.d.ts +110 -0
- package/dist/components/frittstaende/date-field/fs-date-field.d.ts.map +1 -0
- package/dist/components/frittstaende/date-field/fs-date-field.js +264 -0
- package/dist/components/frittstaende/date-field/fs-date-field.js.map +1 -0
- package/dist/components/frittstaende/suggestion/fs-suggestion.d.ts +133 -0
- package/dist/components/frittstaende/suggestion/fs-suggestion.d.ts.map +1 -0
- package/dist/components/frittstaende/suggestion/fs-suggestion.js +280 -0
- package/dist/components/frittstaende/suggestion/fs-suggestion.js.map +1 -0
- package/dist/components/frittstaende/toast/fs-toast.d.ts +67 -0
- package/dist/components/frittstaende/toast/fs-toast.d.ts.map +1 -0
- package/dist/components/frittstaende/toast/fs-toast.js +108 -0
- package/dist/components/frittstaende/toast/fs-toast.js.map +1 -0
- package/dist/components/ramme/error-summary/fs-error-summary.d.ts +70 -0
- package/dist/components/ramme/error-summary/fs-error-summary.d.ts.map +1 -0
- package/dist/components/ramme/error-summary/fs-error-summary.js +155 -0
- package/dist/components/ramme/error-summary/fs-error-summary.js.map +1 -0
- package/dist/components/ramme/field/field-core.d.ts +70 -0
- package/dist/components/ramme/field/field-core.d.ts.map +1 -0
- package/dist/components/ramme/field/field-core.js +60 -0
- package/dist/components/ramme/field/field-core.js.map +1 -0
- package/dist/components/ramme/field/fs-field.d.ts +49 -0
- package/dist/components/ramme/field/fs-field.d.ts.map +1 -0
- package/dist/components/ramme/field/fs-field.js +118 -0
- package/dist/components/ramme/field/fs-field.js.map +1 -0
- package/dist/components/ramme/popover/fs-popover.d.ts +68 -0
- package/dist/components/ramme/popover/fs-popover.d.ts.map +1 -0
- package/dist/components/ramme/popover/fs-popover.js +167 -0
- package/dist/components/ramme/popover/fs-popover.js.map +1 -0
- package/dist/components/ramme/tabs/fs-tabs.d.ts +61 -0
- package/dist/components/ramme/tabs/fs-tabs.d.ts.map +1 -0
- package/dist/components/ramme/tabs/fs-tabs.js +156 -0
- package/dist/components/ramme/tabs/fs-tabs.js.map +1 -0
- package/dist/dom.d.ts +33 -0
- package/dist/dom.d.ts.map +1 -0
- package/dist/dom.js +77 -0
- package/dist/dom.js.map +1 -0
- package/dist/fs.d.ts +199 -0
- package/dist/fs.d.ts.map +1 -0
- package/dist/fs.js +128 -0
- package/dist/fs.js.map +1 -0
- package/dist/index.d.ts +84 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/jsx/react.d.ts +127 -0
- package/dist/jsx/react.d.ts.map +1 -0
- package/dist/jsx/react.js +2 -0
- package/dist/jsx/react.js.map +1 -0
- package/dist/react.d.ts +207 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +109 -0
- package/dist/react.js.map +1 -0
- package/dist/tailwind/preset.d.ts +120 -0
- package/dist/tailwind/preset.d.ts.map +1 -0
- package/dist/tailwind/preset.js +107 -0
- package/dist/tailwind/preset.js.map +1 -0
- package/dist/takeover.d.ts +79 -0
- package/dist/takeover.d.ts.map +1 -0
- package/dist/takeover.js +119 -0
- package/dist/takeover.js.map +1 -0
- package/dist/tokens/color.d.ts +85 -0
- package/dist/tokens/color.d.ts.map +1 -0
- package/dist/tokens/color.js +212 -0
- package/dist/tokens/color.js.map +1 -0
- package/dist/tokens/theme.d.ts +52 -0
- package/dist/tokens/theme.d.ts.map +1 -0
- package/dist/tokens/theme.js +197 -0
- package/dist/tokens/theme.js.map +1 -0
- package/dist/tokens/tokens.d.ts +210 -0
- package/dist/tokens/tokens.d.ts.map +1 -0
- package/dist/tokens/tokens.js +238 -0
- package/dist/tokens/tokens.js.map +1 -0
- package/package.json +334 -0
- package/src/components/css/accordion/accordion.css +74 -0
- package/src/components/css/accordion/accordion.ts +50 -0
- package/src/components/css/alert/alert.css +50 -0
- package/src/components/css/alert/alert.ts +48 -0
- package/src/components/css/avatar/avatar.css +64 -0
- package/src/components/css/avatar/avatar.ts +57 -0
- package/src/components/css/badge/badge.css +42 -0
- package/src/components/css/badge/badge.ts +43 -0
- package/src/components/css/breadcrumbs/breadcrumbs.css +50 -0
- package/src/components/css/breadcrumbs/breadcrumbs.ts +29 -0
- package/src/components/css/button/button.css +101 -0
- package/src/components/css/button/button.ts +44 -0
- package/src/components/css/card/card.css +48 -0
- package/src/components/css/card/card.ts +50 -0
- package/src/components/css/checkbox/checkbox.css +96 -0
- package/src/components/css/checkbox/checkbox.ts +50 -0
- package/src/components/css/dialog/dialog.css +50 -0
- package/src/components/css/dialog/dialog.ts +36 -0
- package/src/components/css/divider/divider.css +18 -0
- package/src/components/css/divider/divider.ts +41 -0
- package/src/components/css/error-text/error-text.css +21 -0
- package/src/components/css/error-text/error-text.ts +37 -0
- package/src/components/css/fieldset/fieldset.css +57 -0
- package/src/components/css/fieldset/fieldset.ts +87 -0
- package/src/components/css/file-upload/file-upload.css +92 -0
- package/src/components/css/file-upload/file-upload.ts +65 -0
- package/src/components/css/heading/heading.css +33 -0
- package/src/components/css/heading/heading.ts +42 -0
- package/src/components/css/help-text/help-text.css +24 -0
- package/src/components/css/help-text/help-text.ts +42 -0
- package/src/components/css/input/input.css +131 -0
- package/src/components/css/input/input.ts +76 -0
- package/src/components/css/label/label.css +34 -0
- package/src/components/css/label/label.ts +51 -0
- package/src/components/css/link/link.css +36 -0
- package/src/components/css/link/link.ts +29 -0
- package/src/components/css/list/list.css +40 -0
- package/src/components/css/list/list.ts +42 -0
- package/src/components/css/pagination/pagination.css +77 -0
- package/src/components/css/pagination/pagination.ts +33 -0
- package/src/components/css/paragraph/paragraph.css +31 -0
- package/src/components/css/paragraph/paragraph.ts +53 -0
- package/src/components/css/radio/radio.css +76 -0
- package/src/components/css/radio/radio.ts +50 -0
- package/src/components/css/search/search.css +49 -0
- package/src/components/css/search/search.ts +52 -0
- package/src/components/css/select/select.css +95 -0
- package/src/components/css/select/select.ts +40 -0
- package/src/components/css/shared.ts +40 -0
- package/src/components/css/skeleton/skeleton.css +49 -0
- package/src/components/css/skeleton/skeleton.ts +43 -0
- package/src/components/css/skip-link/skip-link.css +36 -0
- package/src/components/css/skip-link/skip-link.ts +22 -0
- package/src/components/css/spinner/spinner.css +48 -0
- package/src/components/css/spinner/spinner.ts +48 -0
- package/src/components/css/sr-only/sr-only.css +16 -0
- package/src/components/css/sr-only/sr-only.ts +18 -0
- package/src/components/css/switch/switch.css +101 -0
- package/src/components/css/switch/switch.ts +46 -0
- package/src/components/css/table/table.css +63 -0
- package/src/components/css/table/table.ts +50 -0
- package/src/components/css/tag/tag.css +58 -0
- package/src/components/css/tag/tag.ts +49 -0
- package/src/components/css/textarea/textarea.css +71 -0
- package/src/components/css/textarea/textarea.ts +40 -0
- package/src/components/css/toggle-group/toggle-group.css +82 -0
- package/src/components/css/toggle-group/toggle-group.ts +37 -0
- package/src/components/css/tooltip/tooltip.css +47 -0
- package/src/components/css/tooltip/tooltip.ts +36 -0
- package/src/components/frittstaende/calendar/fs-calendar.ts +525 -0
- package/src/components/frittstaende/date-field/date-field.css +54 -0
- package/src/components/frittstaende/date-field/fs-date-field.ts +309 -0
- package/src/components/frittstaende/suggestion/fs-suggestion.ts +333 -0
- package/src/components/frittstaende/suggestion/suggestion.css +63 -0
- package/src/components/frittstaende/toast/fs-toast.ts +146 -0
- package/src/components/frittstaende/toast/toast.css +71 -0
- package/src/components/ramme/error-summary/error-summary.css +45 -0
- package/src/components/ramme/error-summary/fs-error-summary.ts +197 -0
- package/src/components/ramme/field/field-core.ts +132 -0
- package/src/components/ramme/field/field.css +6 -0
- package/src/components/ramme/field/fs-field.ts +154 -0
- package/src/components/ramme/popover/fs-popover.ts +205 -0
- package/src/components/ramme/popover/popover.css +34 -0
- package/src/components/ramme/tabs/fs-tabs.ts +182 -0
- package/src/components/ramme/tabs/tabs.css +68 -0
- package/src/tailwind/tailwind.css +134 -0
- package/src/tokens/color.ts +267 -0
- package/src/tokens/theme.ts +350 -0
- package/src/tokens/tokens.css +214 -0
- package/src/tokens/tokens.ts +293 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
export const Breakpoints = {
|
|
2
|
+
sm: "640px",
|
|
3
|
+
md: "768px",
|
|
4
|
+
lg: "1024px",
|
|
5
|
+
xl: "1280px",
|
|
6
|
+
"2xl": "1536px",
|
|
7
|
+
} as const
|
|
8
|
+
|
|
9
|
+
export const Containers = {
|
|
10
|
+
xs: "100%",
|
|
11
|
+
sm: "576px",
|
|
12
|
+
md: "960px",
|
|
13
|
+
lg: "1152px",
|
|
14
|
+
xl: "1536px",
|
|
15
|
+
aside: "384px",
|
|
16
|
+
asideNarrow: "288px",
|
|
17
|
+
wideContent: "768px",
|
|
18
|
+
} as const
|
|
19
|
+
|
|
20
|
+
export type Breakpoint = keyof typeof Breakpoints
|
|
21
|
+
export type Container = keyof typeof Containers
|
|
22
|
+
|
|
23
|
+
export const cssTokens = {
|
|
24
|
+
// Font sizes
|
|
25
|
+
"--font-size-reference": "16px",
|
|
26
|
+
"--font-size-xxs": "0.625rem",
|
|
27
|
+
"--font-size-xs": "0.75rem",
|
|
28
|
+
"--font-size-s": "0.875rem",
|
|
29
|
+
"--font-size-m": "1rem",
|
|
30
|
+
"--font-size-l": "1.125rem",
|
|
31
|
+
"--font-size-xl": "1.375rem",
|
|
32
|
+
"--font-size-xxl": "1.875rem",
|
|
33
|
+
"--font-size-mega": "2.625rem",
|
|
34
|
+
|
|
35
|
+
// Size scale (Tailwind-kompatibel, 4px-base)
|
|
36
|
+
"--size-px": "1px",
|
|
37
|
+
"--size-0-5": "0.125rem",
|
|
38
|
+
"--size-1": "0.25rem",
|
|
39
|
+
"--size-2": "0.5rem",
|
|
40
|
+
"--size-3": "0.75rem",
|
|
41
|
+
"--size-4": "1rem",
|
|
42
|
+
"--size-5": "1.25rem",
|
|
43
|
+
"--size-6": "1.5rem",
|
|
44
|
+
"--size-7": "1.75rem",
|
|
45
|
+
"--size-8": "2rem",
|
|
46
|
+
"--size-10": "2.5rem",
|
|
47
|
+
"--size-12": "3rem",
|
|
48
|
+
"--size-16": "4rem",
|
|
49
|
+
|
|
50
|
+
// Semantic: størrelse og avstand
|
|
51
|
+
"--semantic-size-default": "var(--size-4)",
|
|
52
|
+
"--semantic-spacing-default": "var(--size-4)",
|
|
53
|
+
|
|
54
|
+
// Palette: Burgundy
|
|
55
|
+
"--palette-burgundy-5": "#faf0f3",
|
|
56
|
+
"--palette-burgundy-10": "#f7e2e8",
|
|
57
|
+
"--palette-burgundy-30": "#f3a7b0",
|
|
58
|
+
"--palette-burgundy-50": "#f06674",
|
|
59
|
+
"--palette-burgundy-70": "#b04c5c",
|
|
60
|
+
"--palette-burgundy-100": "#6f2c3f",
|
|
61
|
+
|
|
62
|
+
// Palette: Forest
|
|
63
|
+
"--palette-forest-5": "#f4faf5",
|
|
64
|
+
"--palette-forest-10": "#e3f5ea",
|
|
65
|
+
"--palette-forest-30": "#b9e1c8",
|
|
66
|
+
"--palette-forest-50": "#91d6ac",
|
|
67
|
+
"--palette-forest-70": "#5d9b73",
|
|
68
|
+
"--palette-forest-100": "#2b6940",
|
|
69
|
+
|
|
70
|
+
// Palette: Ochre
|
|
71
|
+
"--palette-ochre-5": "#f9f4f0",
|
|
72
|
+
"--palette-ochre-10": "#f9ede2",
|
|
73
|
+
"--palette-ochre-30": "#f0d2b6",
|
|
74
|
+
"--palette-ochre-50": "#e7b78a",
|
|
75
|
+
"--palette-ochre-70": "#a9805b",
|
|
76
|
+
"--palette-ochre-100": "#6b492c",
|
|
77
|
+
|
|
78
|
+
// Palette: Denim
|
|
79
|
+
"--palette-denim-5": "#eff3f9",
|
|
80
|
+
"--palette-denim-10": "#e2eaf7",
|
|
81
|
+
"--palette-denim-30": "#b5cbee",
|
|
82
|
+
"--palette-denim-50": "#89abe5",
|
|
83
|
+
"--palette-denim-70": "#5a77a8",
|
|
84
|
+
"--palette-denim-100": "#2c436b",
|
|
85
|
+
|
|
86
|
+
// Palette: Azure
|
|
87
|
+
"--palette-azure-10": "#cde1f9",
|
|
88
|
+
"--palette-azure-30": "#9ccff2",
|
|
89
|
+
"--palette-azure-70": "#1362ae",
|
|
90
|
+
"--palette-azure-100": "#093e61",
|
|
91
|
+
|
|
92
|
+
// Palette: Graphite
|
|
93
|
+
"--palette-graphite-0": "#ffffff",
|
|
94
|
+
"--palette-graphite-5": "#f4f4f4",
|
|
95
|
+
"--palette-graphite-10": "#e5e5e5",
|
|
96
|
+
"--palette-graphite-30": "#b2b2b2",
|
|
97
|
+
"--palette-graphite-50": "#757575",
|
|
98
|
+
"--palette-graphite-70": "#4d4d4d",
|
|
99
|
+
"--palette-graphite-100": "#1a1a1a",
|
|
100
|
+
|
|
101
|
+
// Palette: Alpha
|
|
102
|
+
"--palette-dark-alpha-50": "#1a1a1a80",
|
|
103
|
+
|
|
104
|
+
// Semantic: side
|
|
105
|
+
"--semantic-page-background": "var(--palette-graphite-0)",
|
|
106
|
+
"--semantic-page-foreground": "var(--palette-graphite-100)",
|
|
107
|
+
|
|
108
|
+
// Semantic: status
|
|
109
|
+
"--semantic-danger-background": "var(--palette-burgundy-10)",
|
|
110
|
+
"--semantic-danger-foreground": "#a82e39",
|
|
111
|
+
"--semantic-warning-background": "var(--palette-ochre-10)",
|
|
112
|
+
"--semantic-warning-foreground": "#896508",
|
|
113
|
+
"--semantic-success-background": "var(--palette-forest-10)",
|
|
114
|
+
"--semantic-success-foreground": "#316f2a",
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Deaktiverte kontroller. WCAG 1.4.3 unntar inaktive komponenter fra
|
|
118
|
+
* kontrastkravet, men teksten bør fortsatt kunne leses, siden et avslått
|
|
119
|
+
* felt ofte viser innhold brukeren trenger. Bruk den bare på noe som faktisk er
|
|
120
|
+
* slått av; dempet tekst som skal leses bruker `muted-foreground`.
|
|
121
|
+
*/
|
|
122
|
+
"--semantic-disabled-background": "var(--palette-graphite-10)",
|
|
123
|
+
"--semantic-disabled-foreground": "var(--palette-graphite-50)",
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Dempet tekst som likevel skal leses: hjelpetekst, plassholdere,
|
|
127
|
+
* «(valgfri)»-markeringen, ukedagene i kalenderen. Holder 4,5:1 mot
|
|
128
|
+
* sideflaten i begge temaer.
|
|
129
|
+
*/
|
|
130
|
+
"--semantic-muted-foreground": "var(--palette-graphite-50)",
|
|
131
|
+
|
|
132
|
+
// Nøytral status: informasjon brukeren skal lese, ikke en avslått
|
|
133
|
+
// kontroll. Derfor mørkere enn disabled: 6,71:1 mot egen bakgrunn.
|
|
134
|
+
"--semantic-neutral-background": "var(--palette-graphite-10)",
|
|
135
|
+
"--semantic-neutral-foreground": "var(--palette-graphite-70)",
|
|
136
|
+
|
|
137
|
+
// Semantic: interaktiv
|
|
138
|
+
"--semantic-interactive-background": "var(--palette-azure-10)",
|
|
139
|
+
"--semantic-interactive-main": "var(--palette-azure-70)",
|
|
140
|
+
"--semantic-interactive-foreground": "var(--palette-azure-100)",
|
|
141
|
+
/** Tekst oppå `interactive-main`. Snur med temaet. */
|
|
142
|
+
"--semantic-interactive-contrast": "var(--palette-graphite-0)",
|
|
143
|
+
"--semantic-interactive-visited": "var(--palette-denim-70)",
|
|
144
|
+
|
|
145
|
+
// Semantic: skjemafelt
|
|
146
|
+
/**
|
|
147
|
+
* Rammen rundt input, textarea, select og kalenderpanelet.
|
|
148
|
+
*
|
|
149
|
+
* graphite-50, ikke graphite-30. WCAG 1.4.11 krever 3:1 for grafiske
|
|
150
|
+
* avgrensninger, og graphite-30 gir bare 2,12:1 mot hvit flate. Feltet var
|
|
151
|
+
* så vidt synlig for den som ser dårlig.
|
|
152
|
+
*/
|
|
153
|
+
"--semantic-field-border": "var(--palette-graphite-50)",
|
|
154
|
+
"--semantic-field-border-hover": "var(--palette-graphite-70)",
|
|
155
|
+
|
|
156
|
+
// Semantic: farefylte handlinger
|
|
157
|
+
/**
|
|
158
|
+
* Fylt flate på danger-knappen når den holdes over, med `danger-contrast`
|
|
159
|
+
* som tekst. Før mørknet bakgrunnen mens teksten ble stående, og hover
|
|
160
|
+
* havnet på 3,52:1, altså svakere enn hviletilstanden.
|
|
161
|
+
*/
|
|
162
|
+
"--semantic-danger-main": "#a82e39",
|
|
163
|
+
"--semantic-danger-contrast": "var(--palette-graphite-0)",
|
|
164
|
+
|
|
165
|
+
// Semantic: skillelinjer
|
|
166
|
+
"--semantic-divider-30": "var(--palette-graphite-30)",
|
|
167
|
+
"--semantic-divider-100": "var(--palette-graphite-100)",
|
|
168
|
+
|
|
169
|
+
/** Forstørrelsesglasset i søkefeltet. */
|
|
170
|
+
"--semantic-icon-search":
|
|
171
|
+
"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234d4d4d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='16.5' y1='16.5' x2='21' y2='21'/%3E%3C/svg%3E\")",
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Haken og streken i avkryssingsboksen.
|
|
175
|
+
*
|
|
176
|
+
* De tegnes oppå `interactive-main`, og må derfor følge
|
|
177
|
+
* `interactive-contrast`, ikke sideflaten.
|
|
178
|
+
*/
|
|
179
|
+
"--semantic-icon-check":
|
|
180
|
+
"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E\")",
|
|
181
|
+
"--semantic-icon-dash":
|
|
182
|
+
"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3' stroke-linecap='round'%3E%3Cline x1='6' y1='12' x2='18' y2='12'/%3E%3C/svg%3E\")",
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Ikonene som tegnes inn i bakgrunnen til dato- og klokkeslettfeltet.
|
|
186
|
+
*
|
|
187
|
+
* De hører hjemme her og ikke i komponenten, fordi en data-URL ikke kan
|
|
188
|
+
* lese en CSS-variabel: streken er malt inn i selve bildet. Med ikonet som
|
|
189
|
+
* token snur det med temaet, som alt annet. Før var streken fast
|
|
190
|
+
* graphite-70, altså 2,03:1 mot den mørke flaten, og så vidt synlig.
|
|
191
|
+
*/
|
|
192
|
+
"--semantic-icon-calendar":
|
|
193
|
+
"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234d4d4d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E\")",
|
|
194
|
+
"--semantic-icon-clock":
|
|
195
|
+
"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234d4d4d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpolyline points='12 7 12 12 15 15'/%3E%3C/svg%3E\")",
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Flaten bak en dialog som er åpnet med `showModal()`.
|
|
199
|
+
*
|
|
200
|
+
* Den ligger mellom siden og dialogen, og må dempe sideinnholdet i begge
|
|
201
|
+
* temaer. I mørkt tema er en sort flate nesten usynlig mot bakgrunnen, så
|
|
202
|
+
* den er kraftigere der.
|
|
203
|
+
*/
|
|
204
|
+
"--semantic-overlay-backdrop": "var(--palette-dark-alpha-50)",
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Skyggen under flater som ligger over siden, som kalenderpanelet.
|
|
208
|
+
*
|
|
209
|
+
* Hører til det semantiske laget fordi den må snu med temaet: en svak
|
|
210
|
+
* sort skygge er usynlig mot en nesten sort flate, og panelet mistet
|
|
211
|
+
* dybden si i mørkt tema.
|
|
212
|
+
*/
|
|
213
|
+
"--semantic-shadow-overlay": "0 16px 40px rgba(0, 0, 0, 0.12)",
|
|
214
|
+
} as const
|
|
215
|
+
|
|
216
|
+
export type CssToken = keyof typeof cssTokens
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Verdiene som overstyres i mørkt tema.
|
|
220
|
+
*
|
|
221
|
+
* Bare det semantiske laget snur. Paletten er råverdier og er den samme i
|
|
222
|
+
* begge temaer. Det er hva fargene *betyr* som endrer seg, ikke hvilke
|
|
223
|
+
* farger som finnes.
|
|
224
|
+
*
|
|
225
|
+
* Alle par er kontrollert mot WCAG AA. Se `tokens.browser.test.ts`.
|
|
226
|
+
*/
|
|
227
|
+
export const darkTokens = {
|
|
228
|
+
// Side: nær sort flate, dempet hvit tekst
|
|
229
|
+
"--semantic-page-background": "var(--palette-graphite-100)",
|
|
230
|
+
"--semantic-page-foreground": "var(--palette-graphite-5)",
|
|
231
|
+
|
|
232
|
+
// Status: mørk flate, lys tekst. Speilvendt av lyst tema.
|
|
233
|
+
"--semantic-danger-background": "var(--palette-burgundy-100)",
|
|
234
|
+
"--semantic-danger-foreground": "var(--palette-burgundy-30)",
|
|
235
|
+
"--semantic-warning-background": "var(--palette-ochre-100)",
|
|
236
|
+
"--semantic-warning-foreground": "var(--palette-ochre-30)",
|
|
237
|
+
"--semantic-success-background": "var(--palette-forest-100)",
|
|
238
|
+
"--semantic-success-foreground": "var(--palette-forest-30)",
|
|
239
|
+
|
|
240
|
+
// Deaktivert: graphite-50 på graphite-70 ga 1,83:1 og var uleselig.
|
|
241
|
+
// graphite-30 gir 3,99:1: fortsatt tydelig av, men mulig å lese.
|
|
242
|
+
"--semantic-disabled-background": "var(--palette-graphite-70)",
|
|
243
|
+
"--semantic-disabled-foreground": "var(--palette-graphite-30)",
|
|
244
|
+
|
|
245
|
+
// Dempet, lesbar tekst som holder 8,21:1 mot den mørke flaten
|
|
246
|
+
"--semantic-muted-foreground": "var(--palette-graphite-30)",
|
|
247
|
+
|
|
248
|
+
// Nøytral status som fortsatt skal leses, og holder 6,71:1
|
|
249
|
+
"--semantic-neutral-background": "var(--palette-graphite-70)",
|
|
250
|
+
"--semantic-neutral-foreground": "var(--palette-graphite-10)",
|
|
251
|
+
|
|
252
|
+
// Interaktiv: lys blå på mørk flate, med mørk tekst oppå
|
|
253
|
+
"--semantic-interactive-background": "var(--palette-azure-100)",
|
|
254
|
+
"--semantic-interactive-main": "var(--palette-azure-30)",
|
|
255
|
+
"--semantic-interactive-foreground": "var(--palette-azure-10)",
|
|
256
|
+
"--semantic-interactive-contrast": "var(--palette-graphite-100)",
|
|
257
|
+
"--semantic-interactive-visited": "var(--palette-denim-30)",
|
|
258
|
+
|
|
259
|
+
// Skjemafelt: rammen må være lysere enn flaten, ikke mørkere
|
|
260
|
+
"--semantic-field-border": "var(--palette-graphite-50)",
|
|
261
|
+
"--semantic-field-border-hover": "var(--palette-graphite-30)",
|
|
262
|
+
|
|
263
|
+
// Farefylte handlinger
|
|
264
|
+
"--semantic-danger-main": "var(--palette-burgundy-30)",
|
|
265
|
+
"--semantic-danger-contrast": "var(--palette-graphite-100)",
|
|
266
|
+
|
|
267
|
+
// Skillelinjer
|
|
268
|
+
"--semantic-divider-30": "var(--palette-graphite-70)",
|
|
269
|
+
"--semantic-divider-100": "var(--palette-graphite-30)",
|
|
270
|
+
|
|
271
|
+
"--semantic-icon-search":
|
|
272
|
+
"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b2b2b2' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='16.5' y1='16.5' x2='21' y2='21'/%3E%3C/svg%3E\")",
|
|
273
|
+
|
|
274
|
+
// Hake og strek ligger oppå interactive-main, som er lys i mørkt tema
|
|
275
|
+
"--semantic-icon-check":
|
|
276
|
+
"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231a1a1a' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E\")",
|
|
277
|
+
"--semantic-icon-dash":
|
|
278
|
+
"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231a1a1a' stroke-width='3' stroke-linecap='round'%3E%3Cline x1='6' y1='12' x2='18' y2='12'/%3E%3C/svg%3E\")",
|
|
279
|
+
|
|
280
|
+
// Ikoner: lysere strek, så de holder seg synlige mot den mørke flaten
|
|
281
|
+
"--semantic-icon-calendar":
|
|
282
|
+
"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b2b2b2' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E\")",
|
|
283
|
+
"--semantic-icon-clock":
|
|
284
|
+
"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b2b2b2' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpolyline points='12 7 12 12 15 15'/%3E%3C/svg%3E\")",
|
|
285
|
+
|
|
286
|
+
// Flaten bak en dialog må dempe mer når siden under alt er mørk
|
|
287
|
+
"--semantic-overlay-backdrop": "rgba(0, 0, 0, 0.72)",
|
|
288
|
+
|
|
289
|
+
// Skygge: kraftigere, siden flaten under er nesten sort
|
|
290
|
+
"--semantic-shadow-overlay": "0 16px 40px rgba(0, 0, 0, 0.6)",
|
|
291
|
+
} as const satisfies Partial<Record<CssToken, string>>
|
|
292
|
+
|
|
293
|
+
export type DarkToken = keyof typeof darkTokens
|