@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,197 @@
|
|
|
1
|
+
import { adjustForContrast, buildNeutralScale, buildScale, contrastRatio, parseHex, } from "./color.js";
|
|
2
|
+
/** Kravet til tekst mot flate. */
|
|
3
|
+
const TEKST = 4.5;
|
|
4
|
+
/** Kravet til en grafisk avgrensning, som rammen rundt et felt. */
|
|
5
|
+
const RAMME = 3;
|
|
6
|
+
function forhold(a, b) {
|
|
7
|
+
return contrastRatio(parseHex(a), parseHex(b));
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Setter en forgrunnsfarge som holder kravet mot alle flatene den havner på.
|
|
11
|
+
*
|
|
12
|
+
* En farge brukes sjelden bare ett sted. `interactive-main` er både
|
|
13
|
+
* lenkefargen på sideflaten, flaten under teksten på en primærknapp, og
|
|
14
|
+
* fargen på et interaktivt merke. Holder den mot den ene, kan den likevel
|
|
15
|
+
* ryke mot den neste, så alle flatene sendes inn samtidig og den vanskeligste
|
|
16
|
+
* avgjør.
|
|
17
|
+
*/
|
|
18
|
+
function sikre(verdier, notater, problemer, tema, token, foreslatt, bakgrunner, krav = TEKST) {
|
|
19
|
+
let farge = foreslatt;
|
|
20
|
+
const start = Math.min(...bakgrunner.map((flate) => forhold(farge, flate)));
|
|
21
|
+
// Flere runder, fordi en justering mot den ene flaten kan gjøre fargen
|
|
22
|
+
// dårligere mot en annen. I praksis stopper det etter én eller to.
|
|
23
|
+
for (let runde = 0; runde < 4; runde += 1) {
|
|
24
|
+
const verste = bakgrunner.reduce((a, b) => forhold(farge, a) <= forhold(farge, b) ? a : b);
|
|
25
|
+
if (forhold(farge, verste) >= krav)
|
|
26
|
+
break;
|
|
27
|
+
farge = adjustForContrast(farge, verste, krav).hex;
|
|
28
|
+
}
|
|
29
|
+
verdier[token] = farge;
|
|
30
|
+
const slutt = Math.min(...bakgrunner.map((flate) => forhold(farge, flate)));
|
|
31
|
+
if (farge !== foreslatt) {
|
|
32
|
+
notater.push({ token, theme: tema, before: start, after: slutt });
|
|
33
|
+
}
|
|
34
|
+
if (slutt < krav) {
|
|
35
|
+
const verste = bakgrunner.reduce((a, b) => forhold(farge, a) <= forhold(farge, b) ? a : b);
|
|
36
|
+
problemer.push(`${token} i ${tema} tema kommer bare til ${slutt.toFixed(2)}:1 mot ${verste}, og kravet er ${krav}:1`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export function buildTheme(input) {
|
|
40
|
+
const palett = {
|
|
41
|
+
interactive: buildScale(input.interactive),
|
|
42
|
+
danger: buildScale(input.danger),
|
|
43
|
+
success: buildScale(input.success),
|
|
44
|
+
warning: buildScale(input.warning),
|
|
45
|
+
visited: buildScale(input.visited ?? input.interactive),
|
|
46
|
+
neutral: buildNeutralScale(input.neutral ?? "#1a1a1a"),
|
|
47
|
+
};
|
|
48
|
+
const notater = [];
|
|
49
|
+
const problemer = [];
|
|
50
|
+
/**
|
|
51
|
+
* Bygger ett tema.
|
|
52
|
+
*
|
|
53
|
+
* Lyst og mørkt tema er samme oppskrift med motsatte trinn: flaten er lys
|
|
54
|
+
* og teksten mørk, eller omvendt. Derfor står de to i samme funksjon, med
|
|
55
|
+
* trinnene som parametre.
|
|
56
|
+
*/
|
|
57
|
+
function tema(modus, trinn) {
|
|
58
|
+
const verdier = {};
|
|
59
|
+
const flate = palett.neutral[trinn.flate];
|
|
60
|
+
// Flatene først. De er utgangspunktet alt annet måles mot.
|
|
61
|
+
verdier["--semantic-page-background"] = flate;
|
|
62
|
+
verdier["--semantic-danger-background"] = palett.danger[trinn.statusFlate];
|
|
63
|
+
verdier["--semantic-warning-background"] = palett.warning[trinn.statusFlate];
|
|
64
|
+
verdier["--semantic-success-background"] = palett.success[trinn.statusFlate];
|
|
65
|
+
verdier["--semantic-neutral-background"] =
|
|
66
|
+
palett.neutral[trinn.noytralFlate];
|
|
67
|
+
verdier["--semantic-interactive-background"] =
|
|
68
|
+
palett.interactive[trinn.statusFlate];
|
|
69
|
+
verdier["--semantic-disabled-background"] =
|
|
70
|
+
palett.neutral[trinn.avslattFlate];
|
|
71
|
+
verdier["--semantic-disabled-foreground"] =
|
|
72
|
+
palett.neutral[trinn.avslattTekst];
|
|
73
|
+
verdier["--semantic-field-border-hover"] = palett.neutral[trinn.rammeHover];
|
|
74
|
+
verdier["--semantic-divider-30"] = palett.neutral[trinn.skille];
|
|
75
|
+
verdier["--semantic-divider-100"] = palett.neutral[trinn.tekst];
|
|
76
|
+
// Teksten oppå en fylt knapp er flaten fra det motsatte temaet.
|
|
77
|
+
const kontrastfarge = modus === "light" ? "#ffffff" : palett.neutral[100];
|
|
78
|
+
verdier["--semantic-interactive-contrast"] = kontrastfarge;
|
|
79
|
+
verdier["--semantic-danger-contrast"] = kontrastfarge;
|
|
80
|
+
const sett = (token, foreslatt, bakgrunner, krav) => sikre(verdier, notater, problemer, modus, token, foreslatt, bakgrunner, krav);
|
|
81
|
+
// Brødteksten står både på sideflaten og i felt med statusfarge.
|
|
82
|
+
sett("--semantic-page-foreground", palett.neutral[trinn.tekst], [
|
|
83
|
+
flate,
|
|
84
|
+
verdier["--semantic-danger-background"],
|
|
85
|
+
verdier["--semantic-warning-background"],
|
|
86
|
+
verdier["--semantic-success-background"],
|
|
87
|
+
]);
|
|
88
|
+
sett("--semantic-muted-foreground", palett.neutral[trinn.dempet], [flate]);
|
|
89
|
+
/*
|
|
90
|
+
* Den interaktive fargen brukes tre steder: som lenke på sideflaten, som
|
|
91
|
+
* flate under teksten på en primærknapp, og som farge på et interaktivt
|
|
92
|
+
* merke. Alle tre må holde.
|
|
93
|
+
*/
|
|
94
|
+
sett("--semantic-interactive-main", palett.interactive[trinn.interaktiv], [
|
|
95
|
+
flate,
|
|
96
|
+
verdier["--semantic-interactive-background"],
|
|
97
|
+
kontrastfarge,
|
|
98
|
+
]);
|
|
99
|
+
/*
|
|
100
|
+
* Hover-flaten på knappen, med den samme teksten oppå. Den brukes også
|
|
101
|
+
* som tekst i avataren, oppå interactive-background, så den flaten må
|
|
102
|
+
* med her.
|
|
103
|
+
*/
|
|
104
|
+
sett("--semantic-interactive-foreground", palett.interactive[trinn.interaktivHover], [flate, kontrastfarge, verdier["--semantic-interactive-background"]]);
|
|
105
|
+
sett("--semantic-interactive-visited", palett.visited[trinn.interaktivHover], [flate]);
|
|
106
|
+
// Statusfargene står både i sitt eget merke og som tekst på sideflaten.
|
|
107
|
+
for (const status of ["danger", "warning", "success"]) {
|
|
108
|
+
sett(`--semantic-${status}-foreground`, palett[status][trinn.statusTekst], [verdier[`--semantic-${status}-background`], flate]);
|
|
109
|
+
}
|
|
110
|
+
sett("--semantic-neutral-foreground", palett.neutral[trinn.noytralTekst], [
|
|
111
|
+
verdier["--semantic-neutral-background"],
|
|
112
|
+
]);
|
|
113
|
+
// Den fylte sletteknappen, med lys tekst oppå.
|
|
114
|
+
sett("--semantic-danger-main", palett.danger[trinn.interaktiv], [
|
|
115
|
+
kontrastfarge,
|
|
116
|
+
]);
|
|
117
|
+
// Rammen er en grafisk avgrensning, og har derfor et lavere krav.
|
|
118
|
+
sett("--semantic-field-border", palett.neutral[50], [flate], RAMME);
|
|
119
|
+
return verdier;
|
|
120
|
+
}
|
|
121
|
+
const light = tema("light", {
|
|
122
|
+
flate: 0,
|
|
123
|
+
tekst: 100,
|
|
124
|
+
statusFlate: 10,
|
|
125
|
+
statusTekst: 100,
|
|
126
|
+
noytralFlate: 10,
|
|
127
|
+
noytralTekst: 70,
|
|
128
|
+
interaktiv: 70,
|
|
129
|
+
interaktivHover: 100,
|
|
130
|
+
avslattFlate: 10,
|
|
131
|
+
avslattTekst: 50,
|
|
132
|
+
dempet: 50,
|
|
133
|
+
rammeHover: 70,
|
|
134
|
+
skille: 30,
|
|
135
|
+
});
|
|
136
|
+
const dark = tema("dark", {
|
|
137
|
+
flate: 100,
|
|
138
|
+
tekst: 5,
|
|
139
|
+
statusFlate: 100,
|
|
140
|
+
statusTekst: 30,
|
|
141
|
+
noytralFlate: 70,
|
|
142
|
+
noytralTekst: 10,
|
|
143
|
+
interaktiv: 30,
|
|
144
|
+
interaktivHover: 10,
|
|
145
|
+
avslattFlate: 70,
|
|
146
|
+
avslattTekst: 30,
|
|
147
|
+
dempet: 30,
|
|
148
|
+
rammeHover: 30,
|
|
149
|
+
skille: 70,
|
|
150
|
+
});
|
|
151
|
+
return {
|
|
152
|
+
light,
|
|
153
|
+
dark,
|
|
154
|
+
adjustments: notater,
|
|
155
|
+
problems: problemer,
|
|
156
|
+
css: tilCss(palett, light, dark),
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function linjer(verdier, innrykk) {
|
|
160
|
+
return Object.entries(verdier)
|
|
161
|
+
.map(([navn, verdi]) => `${innrykk}${navn}: ${verdi};`)
|
|
162
|
+
.join("\n");
|
|
163
|
+
}
|
|
164
|
+
function tilCss(paletter, light, dark) {
|
|
165
|
+
const palett = {};
|
|
166
|
+
for (const [navn, skala] of Object.entries(paletter)) {
|
|
167
|
+
for (const [trinn, verdi] of Object.entries(skala)) {
|
|
168
|
+
palett[`--palette-${navn}-${trinn}`] = verdi;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return `/*
|
|
172
|
+
* Generert av @fristil/designsystem. Rediger merkefargene, ikke denne fila.
|
|
173
|
+
*
|
|
174
|
+
* Legges etter tokens.css, og overstyrer fargene der. Størrelser,
|
|
175
|
+
* skriftstørrelser og ikoner kommer fortsatt fra tokens.css.
|
|
176
|
+
*/
|
|
177
|
+
|
|
178
|
+
@layer fristil {
|
|
179
|
+
:root {
|
|
180
|
+
${linjer(palett, " ")}
|
|
181
|
+
|
|
182
|
+
${linjer(light, " ")}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
@media (prefers-color-scheme: dark) {
|
|
186
|
+
:root:not([data-theme="light"]) {
|
|
187
|
+
${linjer(dark, " ")}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
[data-theme="dark"] {
|
|
192
|
+
${linjer(dark, " ")}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
`;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/tokens/theme.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
export declare const Breakpoints: {
|
|
2
|
+
readonly sm: "640px";
|
|
3
|
+
readonly md: "768px";
|
|
4
|
+
readonly lg: "1024px";
|
|
5
|
+
readonly xl: "1280px";
|
|
6
|
+
readonly "2xl": "1536px";
|
|
7
|
+
};
|
|
8
|
+
export declare const Containers: {
|
|
9
|
+
readonly xs: "100%";
|
|
10
|
+
readonly sm: "576px";
|
|
11
|
+
readonly md: "960px";
|
|
12
|
+
readonly lg: "1152px";
|
|
13
|
+
readonly xl: "1536px";
|
|
14
|
+
readonly aside: "384px";
|
|
15
|
+
readonly asideNarrow: "288px";
|
|
16
|
+
readonly wideContent: "768px";
|
|
17
|
+
};
|
|
18
|
+
export type Breakpoint = keyof typeof Breakpoints;
|
|
19
|
+
export type Container = keyof typeof Containers;
|
|
20
|
+
export declare const cssTokens: {
|
|
21
|
+
readonly "--font-size-reference": "16px";
|
|
22
|
+
readonly "--font-size-xxs": "0.625rem";
|
|
23
|
+
readonly "--font-size-xs": "0.75rem";
|
|
24
|
+
readonly "--font-size-s": "0.875rem";
|
|
25
|
+
readonly "--font-size-m": "1rem";
|
|
26
|
+
readonly "--font-size-l": "1.125rem";
|
|
27
|
+
readonly "--font-size-xl": "1.375rem";
|
|
28
|
+
readonly "--font-size-xxl": "1.875rem";
|
|
29
|
+
readonly "--font-size-mega": "2.625rem";
|
|
30
|
+
readonly "--size-px": "1px";
|
|
31
|
+
readonly "--size-0-5": "0.125rem";
|
|
32
|
+
readonly "--size-1": "0.25rem";
|
|
33
|
+
readonly "--size-2": "0.5rem";
|
|
34
|
+
readonly "--size-3": "0.75rem";
|
|
35
|
+
readonly "--size-4": "1rem";
|
|
36
|
+
readonly "--size-5": "1.25rem";
|
|
37
|
+
readonly "--size-6": "1.5rem";
|
|
38
|
+
readonly "--size-7": "1.75rem";
|
|
39
|
+
readonly "--size-8": "2rem";
|
|
40
|
+
readonly "--size-10": "2.5rem";
|
|
41
|
+
readonly "--size-12": "3rem";
|
|
42
|
+
readonly "--size-16": "4rem";
|
|
43
|
+
readonly "--semantic-size-default": "var(--size-4)";
|
|
44
|
+
readonly "--semantic-spacing-default": "var(--size-4)";
|
|
45
|
+
readonly "--palette-burgundy-5": "#faf0f3";
|
|
46
|
+
readonly "--palette-burgundy-10": "#f7e2e8";
|
|
47
|
+
readonly "--palette-burgundy-30": "#f3a7b0";
|
|
48
|
+
readonly "--palette-burgundy-50": "#f06674";
|
|
49
|
+
readonly "--palette-burgundy-70": "#b04c5c";
|
|
50
|
+
readonly "--palette-burgundy-100": "#6f2c3f";
|
|
51
|
+
readonly "--palette-forest-5": "#f4faf5";
|
|
52
|
+
readonly "--palette-forest-10": "#e3f5ea";
|
|
53
|
+
readonly "--palette-forest-30": "#b9e1c8";
|
|
54
|
+
readonly "--palette-forest-50": "#91d6ac";
|
|
55
|
+
readonly "--palette-forest-70": "#5d9b73";
|
|
56
|
+
readonly "--palette-forest-100": "#2b6940";
|
|
57
|
+
readonly "--palette-ochre-5": "#f9f4f0";
|
|
58
|
+
readonly "--palette-ochre-10": "#f9ede2";
|
|
59
|
+
readonly "--palette-ochre-30": "#f0d2b6";
|
|
60
|
+
readonly "--palette-ochre-50": "#e7b78a";
|
|
61
|
+
readonly "--palette-ochre-70": "#a9805b";
|
|
62
|
+
readonly "--palette-ochre-100": "#6b492c";
|
|
63
|
+
readonly "--palette-denim-5": "#eff3f9";
|
|
64
|
+
readonly "--palette-denim-10": "#e2eaf7";
|
|
65
|
+
readonly "--palette-denim-30": "#b5cbee";
|
|
66
|
+
readonly "--palette-denim-50": "#89abe5";
|
|
67
|
+
readonly "--palette-denim-70": "#5a77a8";
|
|
68
|
+
readonly "--palette-denim-100": "#2c436b";
|
|
69
|
+
readonly "--palette-azure-10": "#cde1f9";
|
|
70
|
+
readonly "--palette-azure-30": "#9ccff2";
|
|
71
|
+
readonly "--palette-azure-70": "#1362ae";
|
|
72
|
+
readonly "--palette-azure-100": "#093e61";
|
|
73
|
+
readonly "--palette-graphite-0": "#ffffff";
|
|
74
|
+
readonly "--palette-graphite-5": "#f4f4f4";
|
|
75
|
+
readonly "--palette-graphite-10": "#e5e5e5";
|
|
76
|
+
readonly "--palette-graphite-30": "#b2b2b2";
|
|
77
|
+
readonly "--palette-graphite-50": "#757575";
|
|
78
|
+
readonly "--palette-graphite-70": "#4d4d4d";
|
|
79
|
+
readonly "--palette-graphite-100": "#1a1a1a";
|
|
80
|
+
readonly "--palette-dark-alpha-50": "#1a1a1a80";
|
|
81
|
+
readonly "--semantic-page-background": "var(--palette-graphite-0)";
|
|
82
|
+
readonly "--semantic-page-foreground": "var(--palette-graphite-100)";
|
|
83
|
+
readonly "--semantic-danger-background": "var(--palette-burgundy-10)";
|
|
84
|
+
readonly "--semantic-danger-foreground": "#a82e39";
|
|
85
|
+
readonly "--semantic-warning-background": "var(--palette-ochre-10)";
|
|
86
|
+
readonly "--semantic-warning-foreground": "#896508";
|
|
87
|
+
readonly "--semantic-success-background": "var(--palette-forest-10)";
|
|
88
|
+
readonly "--semantic-success-foreground": "#316f2a";
|
|
89
|
+
/**
|
|
90
|
+
* Deaktiverte kontroller. WCAG 1.4.3 unntar inaktive komponenter fra
|
|
91
|
+
* kontrastkravet, men teksten bør fortsatt kunne leses, siden et avslått
|
|
92
|
+
* felt ofte viser innhold brukeren trenger. Bruk den bare på noe som faktisk er
|
|
93
|
+
* slått av; dempet tekst som skal leses bruker `muted-foreground`.
|
|
94
|
+
*/
|
|
95
|
+
readonly "--semantic-disabled-background": "var(--palette-graphite-10)";
|
|
96
|
+
readonly "--semantic-disabled-foreground": "var(--palette-graphite-50)";
|
|
97
|
+
/**
|
|
98
|
+
* Dempet tekst som likevel skal leses: hjelpetekst, plassholdere,
|
|
99
|
+
* «(valgfri)»-markeringen, ukedagene i kalenderen. Holder 4,5:1 mot
|
|
100
|
+
* sideflaten i begge temaer.
|
|
101
|
+
*/
|
|
102
|
+
readonly "--semantic-muted-foreground": "var(--palette-graphite-50)";
|
|
103
|
+
readonly "--semantic-neutral-background": "var(--palette-graphite-10)";
|
|
104
|
+
readonly "--semantic-neutral-foreground": "var(--palette-graphite-70)";
|
|
105
|
+
readonly "--semantic-interactive-background": "var(--palette-azure-10)";
|
|
106
|
+
readonly "--semantic-interactive-main": "var(--palette-azure-70)";
|
|
107
|
+
readonly "--semantic-interactive-foreground": "var(--palette-azure-100)";
|
|
108
|
+
/** Tekst oppå `interactive-main`. Snur med temaet. */
|
|
109
|
+
readonly "--semantic-interactive-contrast": "var(--palette-graphite-0)";
|
|
110
|
+
readonly "--semantic-interactive-visited": "var(--palette-denim-70)";
|
|
111
|
+
/**
|
|
112
|
+
* Rammen rundt input, textarea, select og kalenderpanelet.
|
|
113
|
+
*
|
|
114
|
+
* graphite-50, ikke graphite-30. WCAG 1.4.11 krever 3:1 for grafiske
|
|
115
|
+
* avgrensninger, og graphite-30 gir bare 2,12:1 mot hvit flate. Feltet var
|
|
116
|
+
* så vidt synlig for den som ser dårlig.
|
|
117
|
+
*/
|
|
118
|
+
readonly "--semantic-field-border": "var(--palette-graphite-50)";
|
|
119
|
+
readonly "--semantic-field-border-hover": "var(--palette-graphite-70)";
|
|
120
|
+
/**
|
|
121
|
+
* Fylt flate på danger-knappen når den holdes over, med `danger-contrast`
|
|
122
|
+
* som tekst. Før mørknet bakgrunnen mens teksten ble stående, og hover
|
|
123
|
+
* havnet på 3,52:1, altså svakere enn hviletilstanden.
|
|
124
|
+
*/
|
|
125
|
+
readonly "--semantic-danger-main": "#a82e39";
|
|
126
|
+
readonly "--semantic-danger-contrast": "var(--palette-graphite-0)";
|
|
127
|
+
readonly "--semantic-divider-30": "var(--palette-graphite-30)";
|
|
128
|
+
readonly "--semantic-divider-100": "var(--palette-graphite-100)";
|
|
129
|
+
/** Forstørrelsesglasset i søkefeltet. */
|
|
130
|
+
readonly "--semantic-icon-search": "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\")";
|
|
131
|
+
/**
|
|
132
|
+
* Haken og streken i avkryssingsboksen.
|
|
133
|
+
*
|
|
134
|
+
* De tegnes oppå `interactive-main`, og må derfor følge
|
|
135
|
+
* `interactive-contrast`, ikke sideflaten.
|
|
136
|
+
*/
|
|
137
|
+
readonly "--semantic-icon-check": "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\")";
|
|
138
|
+
readonly "--semantic-icon-dash": "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\")";
|
|
139
|
+
/**
|
|
140
|
+
* Ikonene som tegnes inn i bakgrunnen til dato- og klokkeslettfeltet.
|
|
141
|
+
*
|
|
142
|
+
* De hører hjemme her og ikke i komponenten, fordi en data-URL ikke kan
|
|
143
|
+
* lese en CSS-variabel: streken er malt inn i selve bildet. Med ikonet som
|
|
144
|
+
* token snur det med temaet, som alt annet. Før var streken fast
|
|
145
|
+
* graphite-70, altså 2,03:1 mot den mørke flaten, og så vidt synlig.
|
|
146
|
+
*/
|
|
147
|
+
readonly "--semantic-icon-calendar": "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\")";
|
|
148
|
+
readonly "--semantic-icon-clock": "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\")";
|
|
149
|
+
/**
|
|
150
|
+
* Flaten bak en dialog som er åpnet med `showModal()`.
|
|
151
|
+
*
|
|
152
|
+
* Den ligger mellom siden og dialogen, og må dempe sideinnholdet i begge
|
|
153
|
+
* temaer. I mørkt tema er en sort flate nesten usynlig mot bakgrunnen, så
|
|
154
|
+
* den er kraftigere der.
|
|
155
|
+
*/
|
|
156
|
+
readonly "--semantic-overlay-backdrop": "var(--palette-dark-alpha-50)";
|
|
157
|
+
/**
|
|
158
|
+
* Skyggen under flater som ligger over siden, som kalenderpanelet.
|
|
159
|
+
*
|
|
160
|
+
* Hører til det semantiske laget fordi den må snu med temaet: en svak
|
|
161
|
+
* sort skygge er usynlig mot en nesten sort flate, og panelet mistet
|
|
162
|
+
* dybden si i mørkt tema.
|
|
163
|
+
*/
|
|
164
|
+
readonly "--semantic-shadow-overlay": "0 16px 40px rgba(0, 0, 0, 0.12)";
|
|
165
|
+
};
|
|
166
|
+
export type CssToken = keyof typeof cssTokens;
|
|
167
|
+
/**
|
|
168
|
+
* Verdiene som overstyres i mørkt tema.
|
|
169
|
+
*
|
|
170
|
+
* Bare det semantiske laget snur. Paletten er råverdier og er den samme i
|
|
171
|
+
* begge temaer. Det er hva fargene *betyr* som endrer seg, ikke hvilke
|
|
172
|
+
* farger som finnes.
|
|
173
|
+
*
|
|
174
|
+
* Alle par er kontrollert mot WCAG AA. Se `tokens.browser.test.ts`.
|
|
175
|
+
*/
|
|
176
|
+
export declare const darkTokens: {
|
|
177
|
+
readonly "--semantic-page-background": "var(--palette-graphite-100)";
|
|
178
|
+
readonly "--semantic-page-foreground": "var(--palette-graphite-5)";
|
|
179
|
+
readonly "--semantic-danger-background": "var(--palette-burgundy-100)";
|
|
180
|
+
readonly "--semantic-danger-foreground": "var(--palette-burgundy-30)";
|
|
181
|
+
readonly "--semantic-warning-background": "var(--palette-ochre-100)";
|
|
182
|
+
readonly "--semantic-warning-foreground": "var(--palette-ochre-30)";
|
|
183
|
+
readonly "--semantic-success-background": "var(--palette-forest-100)";
|
|
184
|
+
readonly "--semantic-success-foreground": "var(--palette-forest-30)";
|
|
185
|
+
readonly "--semantic-disabled-background": "var(--palette-graphite-70)";
|
|
186
|
+
readonly "--semantic-disabled-foreground": "var(--palette-graphite-30)";
|
|
187
|
+
readonly "--semantic-muted-foreground": "var(--palette-graphite-30)";
|
|
188
|
+
readonly "--semantic-neutral-background": "var(--palette-graphite-70)";
|
|
189
|
+
readonly "--semantic-neutral-foreground": "var(--palette-graphite-10)";
|
|
190
|
+
readonly "--semantic-interactive-background": "var(--palette-azure-100)";
|
|
191
|
+
readonly "--semantic-interactive-main": "var(--palette-azure-30)";
|
|
192
|
+
readonly "--semantic-interactive-foreground": "var(--palette-azure-10)";
|
|
193
|
+
readonly "--semantic-interactive-contrast": "var(--palette-graphite-100)";
|
|
194
|
+
readonly "--semantic-interactive-visited": "var(--palette-denim-30)";
|
|
195
|
+
readonly "--semantic-field-border": "var(--palette-graphite-50)";
|
|
196
|
+
readonly "--semantic-field-border-hover": "var(--palette-graphite-30)";
|
|
197
|
+
readonly "--semantic-danger-main": "var(--palette-burgundy-30)";
|
|
198
|
+
readonly "--semantic-danger-contrast": "var(--palette-graphite-100)";
|
|
199
|
+
readonly "--semantic-divider-30": "var(--palette-graphite-70)";
|
|
200
|
+
readonly "--semantic-divider-100": "var(--palette-graphite-30)";
|
|
201
|
+
readonly "--semantic-icon-search": "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\")";
|
|
202
|
+
readonly "--semantic-icon-check": "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\")";
|
|
203
|
+
readonly "--semantic-icon-dash": "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\")";
|
|
204
|
+
readonly "--semantic-icon-calendar": "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\")";
|
|
205
|
+
readonly "--semantic-icon-clock": "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\")";
|
|
206
|
+
readonly "--semantic-overlay-backdrop": "rgba(0, 0, 0, 0.72)";
|
|
207
|
+
readonly "--semantic-shadow-overlay": "0 16px 40px rgba(0, 0, 0, 0.6)";
|
|
208
|
+
};
|
|
209
|
+
export type DarkToken = keyof typeof darkTokens;
|
|
210
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/tokens/tokens.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;CAMd,CAAA;AAEV,eAAO,MAAM,UAAU;;;;;;;;;CASb,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,WAAW,CAAA;AACjD,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,UAAU,CAAA;AAE/C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6FpB;;;;;OAKG;;;IAIH;;;;OAIG;;;;;;;IAYH,sDAAsD;;;IAKtD;;;;;;OAMG;;;IAKH;;;;OAIG;;;;;IAQH,yCAAyC;;IAIzC;;;;;OAKG;;;IAMH;;;;;;;OAOG;;;IAMH;;;;;;OAMG;;IAGH;;;;;;OAMG;;CAEK,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,SAAS,CAAA;AAE7C;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgE+B,CAAA;AAEtD,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,UAAU,CAAA"}
|