@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 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../../src/components/css/pagination/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAwB,CAAA;AACxD,+CAA+C;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAA6B,CAAA;AAMjE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CACrC,GAAyB,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,EACnE;IACE,wCAAwC;IACxC,GAAG,EAAE,oBAAoB;CAC1B,CACF,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export declare const PARAGRAPH_CLASS: "fs-paragraph";
|
|
2
|
+
export declare const paragraphSizes: readonly ["small", "medium", "large"];
|
|
3
|
+
export declare const paragraphVariants: readonly ["default", "lead"];
|
|
4
|
+
export type ParagraphSize = (typeof paragraphSizes)[number];
|
|
5
|
+
export type ParagraphVariant = (typeof paragraphVariants)[number];
|
|
6
|
+
export type NonDefaultParagraphSize = Exclude<ParagraphSize, "medium">;
|
|
7
|
+
export type NonDefaultParagraphVariant = Exclude<ParagraphVariant, "default">;
|
|
8
|
+
export type ParagraphOptions = {
|
|
9
|
+
/** Tekststørrelse. Standard: `medium`. */
|
|
10
|
+
size?: ParagraphSize;
|
|
11
|
+
/** `lead` er ingressen rett under overskriften. Standard: `default`. */
|
|
12
|
+
variant?: ParagraphVariant;
|
|
13
|
+
};
|
|
14
|
+
export type ParagraphAttributes = {
|
|
15
|
+
class: typeof PARAGRAPH_CLASS;
|
|
16
|
+
"data-size"?: NonDefaultParagraphSize;
|
|
17
|
+
"data-variant"?: NonDefaultParagraphVariant;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Attributtene for et avsnitt.
|
|
21
|
+
*
|
|
22
|
+
* Bredden er begrenset til 70 tegn. Lengre linjer gjør det vanskelig å finne
|
|
23
|
+
* tilbake til starten av neste, og det er den vanligste grunnen til at en
|
|
24
|
+
* tekst er tung å lese selv når skriften er stor nok.
|
|
25
|
+
*
|
|
26
|
+
* ```ts
|
|
27
|
+
* <p {...paragraph({ variant: "lead" })}>Kort om hva siden handler om.</p>
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare const paragraph: (({ size, variant, }?: ParagraphOptions) => ParagraphAttributes) & {
|
|
31
|
+
sizes: readonly ["small", "medium", "large"];
|
|
32
|
+
isSize: (value: string) => value is "small" | "medium" | "large";
|
|
33
|
+
variants: readonly ["default", "lead"];
|
|
34
|
+
isVariant: (value: string) => value is "default" | "lead";
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=paragraph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paragraph.d.ts","sourceRoot":"","sources":["../../../../src/components/css/paragraph/paragraph.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,EAAG,cAAuB,CAAA;AAEtD,eAAO,MAAM,cAAc,uCAAwC,CAAA;AACnE,eAAO,MAAM,iBAAiB,8BAA+B,CAAA;AAE7D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAC3D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAA;AACjE,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;AACtE,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;AAE7E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,0CAA0C;IAC1C,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB,wEAAwE;IACxE,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,OAAO,eAAe,CAAA;IAC7B,WAAW,CAAC,EAAE,uBAAuB,CAAA;IACrC,cAAc,CAAC,EAAE,0BAA0B,CAAA;CAC5C,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,yBAIjB,gBAAgB,KAAQ,mBAAmB;;;;;CAY/C,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { attributes, createGuard } from "../shared.js";
|
|
2
|
+
export const PARAGRAPH_CLASS = "fs-paragraph";
|
|
3
|
+
export const paragraphSizes = ["small", "medium", "large"];
|
|
4
|
+
export const paragraphVariants = ["default", "lead"];
|
|
5
|
+
/**
|
|
6
|
+
* Attributtene for et avsnitt.
|
|
7
|
+
*
|
|
8
|
+
* Bredden er begrenset til 70 tegn. Lengre linjer gjør det vanskelig å finne
|
|
9
|
+
* tilbake til starten av neste, og det er den vanligste grunnen til at en
|
|
10
|
+
* tekst er tung å lese selv når skriften er stor nok.
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* <p {...paragraph({ variant: "lead" })}>Kort om hva siden handler om.</p>
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export const paragraph = Object.assign(({ size = "medium", variant = "default", } = {}) => attributes({
|
|
17
|
+
class: PARAGRAPH_CLASS,
|
|
18
|
+
"data-size": size === "medium" ? undefined : size,
|
|
19
|
+
"data-variant": variant === "default" ? undefined : variant,
|
|
20
|
+
}), {
|
|
21
|
+
sizes: paragraphSizes,
|
|
22
|
+
isSize: createGuard(paragraphSizes),
|
|
23
|
+
variants: paragraphVariants,
|
|
24
|
+
isVariant: createGuard(paragraphVariants),
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=paragraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paragraph.js","sourceRoot":"","sources":["../../../../src/components/css/paragraph/paragraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,CAAC,MAAM,eAAe,GAAG,cAAuB,CAAA;AAEtD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAA;AACnE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAA;AAoB7D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CACpC,CAAC,EACC,IAAI,GAAG,QAAQ,EACf,OAAO,GAAG,SAAS,MACC,EAAE,EAAuB,EAAE,CAC/C,UAAU,CAAC;IACT,KAAK,EAAE,eAAe;IACtB,WAAW,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;IACjD,cAAc,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;CAC5D,CAAC,EACJ;IACE,KAAK,EAAE,cAAc;IACrB,MAAM,EAAE,WAAW,CAAC,cAAc,CAAC;IACnC,QAAQ,EAAE,iBAAiB;IAC3B,SAAS,EAAE,WAAW,CAAC,iBAAiB,CAAC;CAC1C,CACF,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type FieldState, type NonDefaultFieldState } from "../shared.js";
|
|
2
|
+
export declare const RADIO_CLASS: "fs-radio";
|
|
3
|
+
/** Raden som holder knappen og teksten ved siden av hverandre. */
|
|
4
|
+
export declare const RADIO_ROW_CLASS: "fs-radio-row";
|
|
5
|
+
export type RadioOptions = {
|
|
6
|
+
/** Valideringstilstand. Standard: `default`. */
|
|
7
|
+
state?: FieldState;
|
|
8
|
+
};
|
|
9
|
+
export type RadioAttributes = {
|
|
10
|
+
class: typeof RADIO_CLASS;
|
|
11
|
+
type: "radio";
|
|
12
|
+
"data-state"?: NonDefaultFieldState;
|
|
13
|
+
"aria-invalid"?: "true";
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Attributtene for en radioknapp.
|
|
17
|
+
*
|
|
18
|
+
* Alle knappene i en gruppe må ha samme `name`. Det er den koblingen som gjør
|
|
19
|
+
* at bare én kan være valgt, og at piltastene flytter mellom dem. `name`
|
|
20
|
+
* setter du selv, siden bare du vet hva gruppen heter.
|
|
21
|
+
*
|
|
22
|
+
* ```ts
|
|
23
|
+
* <input {...radio()} name="leveringsmate" value="post" />
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare const radio: (({ state }?: RadioOptions) => RadioAttributes) & {
|
|
27
|
+
/** Klassen på raden rundt knappen og teksten. */
|
|
28
|
+
row: "fs-radio-row";
|
|
29
|
+
states: readonly ["default", "invalid", "success"];
|
|
30
|
+
isState: (value: string) => value is "default" | "success" | "invalid";
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=radio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../../../src/components/css/radio/radio.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EAGf,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAA;AAErB,eAAO,MAAM,WAAW,EAAG,UAAmB,CAAA;AAC9C,kEAAkE;AAClE,eAAO,MAAM,eAAe,EAAG,cAAuB,CAAA;AAEtD,MAAM,MAAM,YAAY,GAAG;IACzB,gDAAgD;IAChD,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,OAAO,WAAW,CAAA;IACzB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,CAAC,EAAE,oBAAoB,CAAA;IACnC,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK,gBACQ,YAAY,KAAQ,eAAe;IAQzD,iDAAiD;;;;CAKpD,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { attributes, fieldStates, isFieldState, } from "../shared.js";
|
|
2
|
+
export const RADIO_CLASS = "fs-radio";
|
|
3
|
+
/** Raden som holder knappen og teksten ved siden av hverandre. */
|
|
4
|
+
export const RADIO_ROW_CLASS = "fs-radio-row";
|
|
5
|
+
/**
|
|
6
|
+
* Attributtene for en radioknapp.
|
|
7
|
+
*
|
|
8
|
+
* Alle knappene i en gruppe må ha samme `name`. Det er den koblingen som gjør
|
|
9
|
+
* at bare én kan være valgt, og at piltastene flytter mellom dem. `name`
|
|
10
|
+
* setter du selv, siden bare du vet hva gruppen heter.
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* <input {...radio()} name="leveringsmate" value="post" />
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export const radio = Object.assign(({ state = "default" } = {}) => attributes({
|
|
17
|
+
class: RADIO_CLASS,
|
|
18
|
+
type: "radio",
|
|
19
|
+
"data-state": state === "default" ? undefined : state,
|
|
20
|
+
"aria-invalid": state === "invalid" ? "true" : undefined,
|
|
21
|
+
}), {
|
|
22
|
+
/** Klassen på raden rundt knappen og teksten. */
|
|
23
|
+
row: RADIO_ROW_CLASS,
|
|
24
|
+
states: fieldStates,
|
|
25
|
+
isState: isFieldState,
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=radio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio.js","sourceRoot":"","sources":["../../../../src/components/css/radio/radio.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,WAAW,EACX,YAAY,GAEb,MAAM,cAAc,CAAA;AAErB,MAAM,CAAC,MAAM,WAAW,GAAG,UAAmB,CAAA;AAC9C,kEAAkE;AAClE,MAAM,CAAC,MAAM,eAAe,GAAG,cAAuB,CAAA;AActD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAChC,CAAC,EAAE,KAAK,GAAG,SAAS,KAAmB,EAAE,EAAmB,EAAE,CAC5D,UAAU,CAAC;IACT,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE,OAAgB;IACtB,YAAY,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;IACrD,cAAc,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAE,MAAgB,CAAC,CAAC,CAAC,SAAS;CACpE,CAAC,EACJ;IACE,iDAAiD;IACjD,GAAG,EAAE,eAAe;IACpB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;CACtB,CACF,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { INPUT_CLASS } from "../input/input.js";
|
|
2
|
+
import { type FieldState } from "../shared.js";
|
|
3
|
+
export declare const SEARCH_CLASS: "fs-search";
|
|
4
|
+
/** Raden med søkefeltet og knappen ved siden av. */
|
|
5
|
+
export declare const SEARCH_ROW_CLASS: "fs-search-row";
|
|
6
|
+
export type SearchOptions = {
|
|
7
|
+
/** Valideringstilstand. Standard: `default`. */
|
|
8
|
+
state?: FieldState;
|
|
9
|
+
};
|
|
10
|
+
export type SearchAttributes = {
|
|
11
|
+
class: `${typeof INPUT_CLASS} ${typeof SEARCH_CLASS}`;
|
|
12
|
+
type: "search";
|
|
13
|
+
"data-state"?: "invalid" | "success";
|
|
14
|
+
"aria-invalid"?: "true";
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Attributtene for et søkefelt.
|
|
18
|
+
*
|
|
19
|
+
* Feltet er en `fs-input` med plass til forstørrelsesglasset, så begge
|
|
20
|
+
* klassene settes. `type="search"` gir nettleserens eget kryss for å tømme
|
|
21
|
+
* feltet, og på mobil et tastatur med «Søk» i stedet for «Enter».
|
|
22
|
+
*
|
|
23
|
+
* ```ts
|
|
24
|
+
* <input {...search()} name="q" />
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare const search: (({ state }?: SearchOptions) => SearchAttributes) & {
|
|
28
|
+
/** Klassen på raden med feltet og knappen. */
|
|
29
|
+
row: "fs-search-row";
|
|
30
|
+
states: readonly ["default", "invalid", "success"];
|
|
31
|
+
isState: (value: string) => value is "default" | "success" | "invalid";
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../src/components/css/search/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAS,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAEL,KAAK,UAAU,EAGhB,MAAM,cAAc,CAAA;AAErB,eAAO,MAAM,YAAY,EAAG,WAAoB,CAAA;AAChD,oDAAoD;AACpD,eAAO,MAAM,gBAAgB,EAAG,eAAwB,CAAA;AAExD,MAAM,MAAM,aAAa,GAAG;IAC1B,gDAAgD;IAChD,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,GAAG,OAAO,WAAW,IAAI,OAAO,YAAY,EAAE,CAAA;IACrD,IAAI,EAAE,QAAQ,CAAA;IACd,YAAY,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IACpC,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM,gBACO,aAAa,KAAQ,gBAAgB;IAU3D,8CAA8C;;;;CAKjD,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { INPUT_CLASS, input } from "../input/input.js";
|
|
2
|
+
import { attributes, fieldStates, isFieldState, } from "../shared.js";
|
|
3
|
+
export const SEARCH_CLASS = "fs-search";
|
|
4
|
+
/** Raden med søkefeltet og knappen ved siden av. */
|
|
5
|
+
export const SEARCH_ROW_CLASS = "fs-search-row";
|
|
6
|
+
/**
|
|
7
|
+
* Attributtene for et søkefelt.
|
|
8
|
+
*
|
|
9
|
+
* Feltet er en `fs-input` med plass til forstørrelsesglasset, så begge
|
|
10
|
+
* klassene settes. `type="search"` gir nettleserens eget kryss for å tømme
|
|
11
|
+
* feltet, og på mobil et tastatur med «Søk» i stedet for «Enter».
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* <input {...search()} name="q" />
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export const search = Object.assign(({ state = "default" } = {}) => {
|
|
18
|
+
const base = input({ type: "search", state });
|
|
19
|
+
return attributes({
|
|
20
|
+
...base,
|
|
21
|
+
class: `${INPUT_CLASS} ${SEARCH_CLASS}`,
|
|
22
|
+
type: "search",
|
|
23
|
+
"data-variant": undefined,
|
|
24
|
+
});
|
|
25
|
+
}, {
|
|
26
|
+
/** Klassen på raden med feltet og knappen. */
|
|
27
|
+
row: SEARCH_ROW_CLASS,
|
|
28
|
+
states: fieldStates,
|
|
29
|
+
isState: isFieldState,
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../src/components/css/search/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EACL,UAAU,EAEV,WAAW,EACX,YAAY,GACb,MAAM,cAAc,CAAA;AAErB,MAAM,CAAC,MAAM,YAAY,GAAG,WAAoB,CAAA;AAChD,oDAAoD;AACpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAwB,CAAA;AAcxD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CACjC,CAAC,EAAE,KAAK,GAAG,SAAS,KAAoB,EAAE,EAAoB,EAAE;IAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;IAC7C,OAAO,UAAU,CAAC;QAChB,GAAG,IAAI;QACP,KAAK,EAAE,GAAG,WAAW,IAAI,YAAY,EAAW;QAChD,IAAI,EAAE,QAAiB;QACvB,cAAc,EAAE,SAAS;KAC1B,CAAqB,CAAA;AACxB,CAAC,EACD;IACE,8CAA8C;IAC9C,GAAG,EAAE,gBAAgB;IACrB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;CACtB,CACF,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type FieldState, type NonDefaultFieldState } from "../shared.js";
|
|
2
|
+
export declare const SELECT_CLASS: "fs-select";
|
|
3
|
+
export type SelectOptions = {
|
|
4
|
+
/** Valideringstilstand. Standard: `default`. */
|
|
5
|
+
state?: FieldState;
|
|
6
|
+
};
|
|
7
|
+
export type SelectAttributes = {
|
|
8
|
+
class: typeof SELECT_CLASS;
|
|
9
|
+
"data-state"?: NonDefaultFieldState;
|
|
10
|
+
"aria-invalid"?: "true";
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Attributtene for en nedtrekksliste.
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* <select {...select({ state: "invalid" })} />
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare const select: (({ state }?: SelectOptions) => SelectAttributes) & {
|
|
20
|
+
states: readonly ["default", "invalid", "success"];
|
|
21
|
+
isState: (value: string) => value is "default" | "success" | "invalid";
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../../src/components/css/select/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EAGf,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAA;AAErB,eAAO,MAAM,YAAY,EAAG,WAAoB,CAAA;AAEhD,MAAM,MAAM,aAAa,GAAG;IAC1B,gDAAgD;IAChD,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,OAAO,YAAY,CAAA;IAC1B,YAAY,CAAC,EAAE,oBAAoB,CAAA;IACnC,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,gBACO,aAAa,KAAQ,gBAAgB;;;CAU9D,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { attributes, fieldStates, isFieldState, } from "../shared.js";
|
|
2
|
+
export const SELECT_CLASS = "fs-select";
|
|
3
|
+
/**
|
|
4
|
+
* Attributtene for en nedtrekksliste.
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* <select {...select({ state: "invalid" })} />
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export const select = Object.assign(({ state = "default" } = {}) => attributes({
|
|
11
|
+
class: SELECT_CLASS,
|
|
12
|
+
"data-state": state === "default" ? undefined : state,
|
|
13
|
+
"aria-invalid": state === "invalid" ? "true" : undefined,
|
|
14
|
+
}), {
|
|
15
|
+
states: fieldStates,
|
|
16
|
+
isState: isFieldState,
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../src/components/css/select/select.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,WAAW,EACX,YAAY,GAEb,MAAM,cAAc,CAAA;AAErB,MAAM,CAAC,MAAM,YAAY,GAAG,WAAoB,CAAA;AAahD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CACjC,CAAC,EAAE,KAAK,GAAG,SAAS,KAAoB,EAAE,EAAoB,EAAE,CAC9D,UAAU,CAAC;IACT,KAAK,EAAE,YAAY;IACnB,YAAY,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;IACrD,cAAc,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAE,MAAgB,CAAC,CAAC,CAAC,SAAS;CACpE,CAAC,EACJ;IACE,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;CACtB,CACF,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Felles byggeklosser for komponent-API-et.
|
|
3
|
+
*
|
|
4
|
+
* Hver komponent eksporterer én funksjon som tar et valgobjekt og returnerer
|
|
5
|
+
* attributtene du sprer inn i elementet. Formen er lik for alle, slik at du
|
|
6
|
+
* bare trenger å lære den én gang.
|
|
7
|
+
*/
|
|
8
|
+
/** Fjerner attributter uten verdi, så `{...spredning}` ikke setter tomme felt. */
|
|
9
|
+
export declare function attributes<T extends Record<string, unknown>>(values: T): T;
|
|
10
|
+
/** Lager en typevakt for en liste av lovlige strenger. */
|
|
11
|
+
export declare function createGuard<T extends string>(allowed: readonly T[]): (value: string) => value is T;
|
|
12
|
+
/**
|
|
13
|
+
* Valideringstilstand for skjemakontroller.
|
|
14
|
+
*
|
|
15
|
+
* Input, textarea og select hadde hver sin identiske type. Nå er det én, så
|
|
16
|
+
* en verdi kan sendes mellom dem uten konvertering.
|
|
17
|
+
*/
|
|
18
|
+
export declare const fieldStates: readonly ["default", "invalid", "success"];
|
|
19
|
+
export type FieldState = (typeof fieldStates)[number];
|
|
20
|
+
export type NonDefaultFieldState = Exclude<FieldState, "default">;
|
|
21
|
+
export declare const isFieldState: (value: string) => value is "default" | "success" | "invalid";
|
|
22
|
+
/** Hvordan et påkrevd felt markeres i ledeteksten. */
|
|
23
|
+
export declare const requiredMarkers: readonly ["symbol", "text"];
|
|
24
|
+
export type RequiredMarker = (typeof requiredMarkers)[number];
|
|
25
|
+
export declare const isRequiredMarker: (value: string) => value is "symbol" | "text";
|
|
26
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/components/css/shared.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAQ1E;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,IACzD,OAAO,MAAM,KAAG,KAAK,IAAI,CAAC,CAEnC;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,4CAA6C,CAAA;AACrE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AACrD,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AACjE,eAAO,MAAM,YAAY,UAbR,MAAM,KAAG,KAAK,qCAaqB,CAAA;AAEpD,sDAAsD;AACtD,eAAO,MAAM,eAAe,6BAA8B,CAAA;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAC7D,eAAO,MAAM,gBAAgB,UAlBZ,MAAM,KAAG,KAAK,qBAkB6B,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Felles byggeklosser for komponent-API-et.
|
|
3
|
+
*
|
|
4
|
+
* Hver komponent eksporterer én funksjon som tar et valgobjekt og returnerer
|
|
5
|
+
* attributtene du sprer inn i elementet. Formen er lik for alle, slik at du
|
|
6
|
+
* bare trenger å lære den én gang.
|
|
7
|
+
*/
|
|
8
|
+
/** Fjerner attributter uten verdi, så `{...spredning}` ikke setter tomme felt. */
|
|
9
|
+
export function attributes(values) {
|
|
10
|
+
const result = {};
|
|
11
|
+
for (const [name, value] of Object.entries(values)) {
|
|
12
|
+
if (value !== undefined) {
|
|
13
|
+
;
|
|
14
|
+
result[name] = value;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
19
|
+
/** Lager en typevakt for en liste av lovlige strenger. */
|
|
20
|
+
export function createGuard(allowed) {
|
|
21
|
+
return (value) => allowed.includes(value);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Valideringstilstand for skjemakontroller.
|
|
25
|
+
*
|
|
26
|
+
* Input, textarea og select hadde hver sin identiske type. Nå er det én, så
|
|
27
|
+
* en verdi kan sendes mellom dem uten konvertering.
|
|
28
|
+
*/
|
|
29
|
+
export const fieldStates = ["default", "invalid", "success"];
|
|
30
|
+
export const isFieldState = createGuard(fieldStates);
|
|
31
|
+
/** Hvordan et påkrevd felt markeres i ledeteksten. */
|
|
32
|
+
export const requiredMarkers = ["symbol", "text"];
|
|
33
|
+
export const isRequiredMarker = createGuard(requiredMarkers);
|
|
34
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/components/css/shared.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,kFAAkF;AAClF,MAAM,UAAU,UAAU,CAAoC,MAAS;IACrE,MAAM,MAAM,GAAG,EAAO,CAAA;IACtB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,CAAC;YAAC,MAAkC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;QACpD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,WAAW,CAAmB,OAAqB;IACjE,OAAO,CAAC,KAAa,EAAc,EAAE,CAClC,OAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAU,CAAA;AAGrE,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;AAEpD,sDAAsD;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAU,CAAA;AAE1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC,eAAe,CAAC,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare const SKELETON_CLASS: "fs-skeleton";
|
|
2
|
+
export declare const skeletonVariants: readonly ["block", "text", "circle"];
|
|
3
|
+
export type SkeletonVariant = (typeof skeletonVariants)[number];
|
|
4
|
+
export type NonDefaultSkeletonVariant = Exclude<SkeletonVariant, "block">;
|
|
5
|
+
export type SkeletonOptions = {
|
|
6
|
+
/** Form. Standard: `block`. */
|
|
7
|
+
variant?: SkeletonVariant;
|
|
8
|
+
};
|
|
9
|
+
export type SkeletonAttributes = {
|
|
10
|
+
class: typeof SKELETON_CLASS;
|
|
11
|
+
"data-variant"?: NonDefaultSkeletonVariant;
|
|
12
|
+
"aria-hidden": "true";
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Attributtene for en plassholder mens innholdet lastes.
|
|
16
|
+
*
|
|
17
|
+
* Formene er alltid skjult for skjermlesere. De sier ingenting om hva som
|
|
18
|
+
* kommer, og en rekke tomme bokser som leses opp er verre enn stillhet. Si
|
|
19
|
+
* fra om ventingen ett sted i stedet, med `role="status"`.
|
|
20
|
+
*
|
|
21
|
+
* ```ts
|
|
22
|
+
* <div {...skeleton({ variant: "text" })} />
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare const skeleton: (({ variant }?: SkeletonOptions) => SkeletonAttributes) & {
|
|
26
|
+
variants: readonly ["block", "text", "circle"];
|
|
27
|
+
isVariant: (value: string) => value is "text" | "circle" | "block";
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=skeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../../../src/components/css/skeleton/skeleton.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,EAAG,aAAsB,CAAA;AAEpD,eAAO,MAAM,gBAAgB,sCAAuC,CAAA;AAEpE,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAC/D,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;AAEzE,MAAM,MAAM,eAAe,GAAG;IAC5B,+BAA+B;IAC/B,OAAO,CAAC,EAAE,eAAe,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,OAAO,cAAc,CAAA;IAC5B,cAAc,CAAC,EAAE,yBAAyB,CAAA;IAC1C,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,kBACK,eAAe,KAAQ,kBAAkB;;;CAUlE,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { attributes, createGuard } from "../shared.js";
|
|
2
|
+
export const SKELETON_CLASS = "fs-skeleton";
|
|
3
|
+
export const skeletonVariants = ["block", "text", "circle"];
|
|
4
|
+
/**
|
|
5
|
+
* Attributtene for en plassholder mens innholdet lastes.
|
|
6
|
+
*
|
|
7
|
+
* Formene er alltid skjult for skjermlesere. De sier ingenting om hva som
|
|
8
|
+
* kommer, og en rekke tomme bokser som leses opp er verre enn stillhet. Si
|
|
9
|
+
* fra om ventingen ett sted i stedet, med `role="status"`.
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* <div {...skeleton({ variant: "text" })} />
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export const skeleton = Object.assign(({ variant = "block" } = {}) => attributes({
|
|
16
|
+
class: SKELETON_CLASS,
|
|
17
|
+
"data-variant": variant === "block" ? undefined : variant,
|
|
18
|
+
"aria-hidden": "true",
|
|
19
|
+
}), {
|
|
20
|
+
variants: skeletonVariants,
|
|
21
|
+
isVariant: createGuard(skeletonVariants),
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.js","sourceRoot":"","sources":["../../../../src/components/css/skeleton/skeleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,CAAC,MAAM,cAAc,GAAG,aAAsB,CAAA;AAEpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAA;AAgBpE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CACnC,CAAC,EAAE,OAAO,GAAG,OAAO,KAAsB,EAAE,EAAsB,EAAE,CAClE,UAAU,CAAC;IACT,KAAK,EAAE,cAAc;IACrB,cAAc,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;IACzD,aAAa,EAAE,MAAe;CAC/B,CAAC,EACJ;IACE,QAAQ,EAAE,gBAAgB;IAC1B,SAAS,EAAE,WAAW,CAAC,gBAAgB,CAAC;CACzC,CACF,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const SKIP_LINK_CLASS: "fs-skip-link";
|
|
2
|
+
export type SkipLinkAttributes = {
|
|
3
|
+
class: typeof SKIP_LINK_CLASS;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Attributtene for en hopp-til-innhold-lenke.
|
|
7
|
+
*
|
|
8
|
+
* Lenken skal være det første elementet i `<body>`, og peke på id-en til
|
|
9
|
+
* hovedinnholdet. Den ligger utenfor skjermen til den får fokus, og kan
|
|
10
|
+
* derfor ikke skjules med `display: none`: da kan tastaturet heller ikke nå
|
|
11
|
+
* den, og hele poenget forsvinner.
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* <a {...skipLink()} href="#hovedinnhold">Hopp til hovedinnhold</a>
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare const skipLink: () => SkipLinkAttributes;
|
|
18
|
+
//# sourceMappingURL=skip-link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skip-link.d.ts","sourceRoot":"","sources":["../../../../src/components/css/skip-link/skip-link.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,EAAG,cAAuB,CAAA;AAEtD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,OAAO,eAAe,CAAA;CAC9B,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,QAAO,kBACY,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { attributes } from "../shared.js";
|
|
2
|
+
export const SKIP_LINK_CLASS = "fs-skip-link";
|
|
3
|
+
/**
|
|
4
|
+
* Attributtene for en hopp-til-innhold-lenke.
|
|
5
|
+
*
|
|
6
|
+
* Lenken skal være det første elementet i `<body>`, og peke på id-en til
|
|
7
|
+
* hovedinnholdet. Den ligger utenfor skjermen til den får fokus, og kan
|
|
8
|
+
* derfor ikke skjules med `display: none`: da kan tastaturet heller ikke nå
|
|
9
|
+
* den, og hele poenget forsvinner.
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* <a {...skipLink()} href="#hovedinnhold">Hopp til hovedinnhold</a>
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export const skipLink = () => attributes({ class: SKIP_LINK_CLASS });
|
|
16
|
+
//# sourceMappingURL=skip-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skip-link.js","sourceRoot":"","sources":["../../../../src/components/css/skip-link/skip-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,CAAC,MAAM,eAAe,GAAG,cAAuB,CAAA;AAMtD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAuB,EAAE,CAC/C,UAAU,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare const SPINNER_CLASS: "fs-spinner";
|
|
2
|
+
export declare const spinnerSizes: readonly ["small", "medium", "large"];
|
|
3
|
+
export type SpinnerSize = (typeof spinnerSizes)[number];
|
|
4
|
+
export type NonDefaultSpinnerSize = Exclude<SpinnerSize, "medium">;
|
|
5
|
+
export type SpinnerOptions = {
|
|
6
|
+
/** Størrelse. Standard: `medium`. */
|
|
7
|
+
size?: SpinnerSize;
|
|
8
|
+
/** Hva som lastes. Blir `aria-label`, så ventingen kan leses opp. */
|
|
9
|
+
label?: string;
|
|
10
|
+
};
|
|
11
|
+
export type SpinnerAttributes = {
|
|
12
|
+
class: typeof SPINNER_CLASS;
|
|
13
|
+
"data-size"?: NonDefaultSpinnerSize;
|
|
14
|
+
role?: "status";
|
|
15
|
+
"aria-label"?: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Attributtene for en venteindikator.
|
|
19
|
+
*
|
|
20
|
+
* Uten `label` er ringen bare en form, og skjermlesere melder ingenting. Med
|
|
21
|
+
* `label` blir den en `role="status"` som sier hva som pågår. Har du allerede
|
|
22
|
+
* en synlig tekst ved siden av, la den bære beskjeden og dropp `label`, så
|
|
23
|
+
* det samme ikke leses opp to ganger.
|
|
24
|
+
*
|
|
25
|
+
* ```ts
|
|
26
|
+
* <span {...spinner({ label: "Laster søknader" })} />
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare const spinner: (({ size, label }?: SpinnerOptions) => SpinnerAttributes) & {
|
|
30
|
+
sizes: readonly ["small", "medium", "large"];
|
|
31
|
+
isSize: (value: string) => value is "small" | "medium" | "large";
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../../src/components/css/spinner/spinner.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,EAAG,YAAqB,CAAA;AAElD,eAAO,MAAM,YAAY,uCAAwC,CAAA;AAEjE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AACvD,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;AAElE,MAAM,MAAM,cAAc,GAAG;IAC3B,qCAAqC;IACrC,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,OAAO,aAAa,CAAA;IAC3B,WAAW,CAAC,EAAE,qBAAqB,CAAA;IACnC,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,OAAO,sBACW,cAAc,KAAQ,iBAAiB;;;CAWrE,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { attributes, createGuard } from "../shared.js";
|
|
2
|
+
export const SPINNER_CLASS = "fs-spinner";
|
|
3
|
+
export const spinnerSizes = ["small", "medium", "large"];
|
|
4
|
+
/**
|
|
5
|
+
* Attributtene for en venteindikator.
|
|
6
|
+
*
|
|
7
|
+
* Uten `label` er ringen bare en form, og skjermlesere melder ingenting. Med
|
|
8
|
+
* `label` blir den en `role="status"` som sier hva som pågår. Har du allerede
|
|
9
|
+
* en synlig tekst ved siden av, la den bære beskjeden og dropp `label`, så
|
|
10
|
+
* det samme ikke leses opp to ganger.
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* <span {...spinner({ label: "Laster søknader" })} />
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export const spinner = Object.assign(({ size = "medium", label } = {}) => attributes({
|
|
17
|
+
class: SPINNER_CLASS,
|
|
18
|
+
"data-size": size === "medium" ? undefined : size,
|
|
19
|
+
role: label ? "status" : undefined,
|
|
20
|
+
"aria-label": label,
|
|
21
|
+
}), {
|
|
22
|
+
sizes: spinnerSizes,
|
|
23
|
+
isSize: createGuard(spinnerSizes),
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../../../src/components/css/spinner/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,CAAC,MAAM,aAAa,GAAG,YAAqB,CAAA;AAElD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAA;AAmBjE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAClC,CAAC,EAAE,IAAI,GAAG,QAAQ,EAAE,KAAK,KAAqB,EAAE,EAAqB,EAAE,CACrE,UAAU,CAAC;IACT,KAAK,EAAE,aAAa;IACpB,WAAW,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;IACjD,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE,QAAkB,CAAC,CAAC,CAAC,SAAS;IAC7C,YAAY,EAAE,KAAK;CACpB,CAAC,EACJ;IACE,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC;CAClC,CACF,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const SR_ONLY_CLASS: "fs-sr-only";
|
|
2
|
+
export type SrOnlyAttributes = {
|
|
3
|
+
class: typeof SR_ONLY_CLASS;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Attributtene for tekst som bare skjermlesere skal få.
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* <span {...srOnly()}>Åpner i ny fane</span>
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Bruk den når en ledetekst eller forklaring trengs for den som hører siden,
|
|
13
|
+
* men ville vært støy for den som ser den. Skal innholdet bort for alle, hører
|
|
14
|
+
* `hidden` hjemme i stedet.
|
|
15
|
+
*/
|
|
16
|
+
export declare const srOnly: () => SrOnlyAttributes;
|
|
17
|
+
//# sourceMappingURL=sr-only.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sr-only.d.ts","sourceRoot":"","sources":["../../../../src/components/css/sr-only/sr-only.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,EAAG,YAAqB,CAAA;AAElD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,OAAO,aAAa,CAAA;CAC5B,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM,QAAO,gBAA8C,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const SR_ONLY_CLASS = "fs-sr-only";
|
|
2
|
+
/**
|
|
3
|
+
* Attributtene for tekst som bare skjermlesere skal få.
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* <span {...srOnly()}>Åpner i ny fane</span>
|
|
7
|
+
* ```
|
|
8
|
+
*
|
|
9
|
+
* Bruk den når en ledetekst eller forklaring trengs for den som hører siden,
|
|
10
|
+
* men ville vært støy for den som ser den. Skal innholdet bort for alle, hører
|
|
11
|
+
* `hidden` hjemme i stedet.
|
|
12
|
+
*/
|
|
13
|
+
export const srOnly = () => ({ class: SR_ONLY_CLASS });
|
|
14
|
+
//# sourceMappingURL=sr-only.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sr-only.js","sourceRoot":"","sources":["../../../../src/components/css/sr-only/sr-only.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,YAAqB,CAAA;AAMlD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAqB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare const SWITCH_CLASS: "fs-switch";
|
|
2
|
+
/** Raden som holder bryteren og teksten ved siden av hverandre. */
|
|
3
|
+
export declare const SWITCH_ROW_CLASS: "fs-switch-row";
|
|
4
|
+
export type SwitchOptions = {
|
|
5
|
+
/** Kontrollen er slått av. */
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export type SwitchAttributes = {
|
|
9
|
+
class: typeof SWITCH_CLASS;
|
|
10
|
+
type: "checkbox";
|
|
11
|
+
role: "switch";
|
|
12
|
+
disabled?: true;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Attributtene for en av- og på-bryter.
|
|
16
|
+
*
|
|
17
|
+
* Bryteren er en avkryssingsboks med `role="switch"`. Da leser skjermlesere
|
|
18
|
+
* den opp som «på» og «av» framfor «avkrysset», mens tastaturet og
|
|
19
|
+
* `FormData` virker som for en vanlig boks.
|
|
20
|
+
*
|
|
21
|
+
* Bryteren har ingen valideringstilstand. Et valg som er på eller av kan ikke
|
|
22
|
+
* være ugyldig i seg selv; er det påkrevd å slå den på, hører kravet hjemme i
|
|
23
|
+
* en avkryssingsboks med `required`.
|
|
24
|
+
*
|
|
25
|
+
* ```ts
|
|
26
|
+
* <input {...switchControl()} />
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare const switchControl: (({ disabled }?: SwitchOptions) => SwitchAttributes) & {
|
|
30
|
+
/** Klassen på raden rundt bryteren og teksten. */
|
|
31
|
+
row: "fs-switch-row";
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=switch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../../../src/components/css/switch/switch.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,EAAG,WAAoB,CAAA;AAChD,mEAAmE;AACnE,eAAO,MAAM,gBAAgB,EAAG,eAAwB,CAAA;AAExD,MAAM,MAAM,aAAa,GAAG;IAC1B,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,OAAO,YAAY,CAAA;IAC1B,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,CAAC,EAAE,IAAI,CAAA;CAChB,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,mBACT,aAAa,KAAQ,gBAAgB;IAQlD,kDAAkD;;CAGrD,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { attributes } from "../shared.js";
|
|
2
|
+
export const SWITCH_CLASS = "fs-switch";
|
|
3
|
+
/** Raden som holder bryteren og teksten ved siden av hverandre. */
|
|
4
|
+
export const SWITCH_ROW_CLASS = "fs-switch-row";
|
|
5
|
+
/**
|
|
6
|
+
* Attributtene for en av- og på-bryter.
|
|
7
|
+
*
|
|
8
|
+
* Bryteren er en avkryssingsboks med `role="switch"`. Da leser skjermlesere
|
|
9
|
+
* den opp som «på» og «av» framfor «avkrysset», mens tastaturet og
|
|
10
|
+
* `FormData` virker som for en vanlig boks.
|
|
11
|
+
*
|
|
12
|
+
* Bryteren har ingen valideringstilstand. Et valg som er på eller av kan ikke
|
|
13
|
+
* være ugyldig i seg selv; er det påkrevd å slå den på, hører kravet hjemme i
|
|
14
|
+
* en avkryssingsboks med `required`.
|
|
15
|
+
*
|
|
16
|
+
* ```ts
|
|
17
|
+
* <input {...switchControl()} />
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export const switchControl = Object.assign(({ disabled } = {}) => attributes({
|
|
21
|
+
class: SWITCH_CLASS,
|
|
22
|
+
type: "checkbox",
|
|
23
|
+
role: "switch",
|
|
24
|
+
disabled: disabled ? true : undefined,
|
|
25
|
+
}), {
|
|
26
|
+
/** Klassen på raden rundt bryteren og teksten. */
|
|
27
|
+
row: SWITCH_ROW_CLASS,
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=switch.js.map
|