@fremtind/jokul 0.47.0 → 0.48.1
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/build/build-stats.html +1 -1
- package/build/cjs/components/accordion/stories/Accordion.stories.cjs +2 -0
- package/build/cjs/components/accordion/stories/Accordion.stories.cjs.map +1 -0
- package/build/cjs/components/accordion/stories/Accordion.stories.d.cts +13 -0
- package/build/cjs/components/accordion/stories/AccordionItem.stories.cjs +2 -0
- package/build/cjs/components/accordion/stories/AccordionItem.stories.cjs.map +1 -0
- package/build/cjs/components/accordion/stories/AccordionItem.stories.d.cts +13 -0
- package/build/cjs/components/autosuggest/stories/Autosuggest.stories.cjs +2 -0
- package/build/cjs/components/autosuggest/stories/Autosuggest.stories.cjs.map +1 -0
- package/build/cjs/components/autosuggest/stories/Autosuggest.stories.d.cts +12 -0
- package/build/cjs/components/breadcrumb/stories/Breadcrumb.stories.cjs +2 -0
- package/build/cjs/components/breadcrumb/stories/Breadcrumb.stories.cjs.map +1 -0
- package/build/cjs/components/breadcrumb/stories/Breadcrumb.stories.d.cts +12 -0
- package/build/cjs/components/breadcrumb/stories/BreadcrumbItem.stories.cjs +2 -0
- package/build/cjs/components/breadcrumb/stories/BreadcrumbItem.stories.cjs.map +1 -0
- package/build/cjs/components/breadcrumb/stories/BreadcrumbItem.stories.d.cts +12 -0
- package/build/cjs/components/button/stories/Button.stories.cjs +2 -0
- package/build/cjs/components/button/stories/Button.stories.cjs.map +1 -0
- package/build/cjs/components/button/stories/Button.stories.d.cts +16 -0
- package/build/cjs/components/button/types.cjs.map +1 -1
- package/build/cjs/components/button/types.d.cts +6 -4
- package/build/cjs/components/card/Card.cjs +1 -1
- package/build/cjs/components/card/Card.cjs.map +1 -1
- package/build/cjs/components/card/Card.d.cts +1 -27
- package/build/cjs/components/card/index.d.cts +2 -2
- package/build/cjs/components/card/stories/Card.stories.cjs +1 -1
- package/build/cjs/components/card/stories/Card.stories.cjs.map +1 -1
- package/build/cjs/components/card/stories/Card.stories.d.cts +3 -2
- package/build/cjs/components/card/types.cjs +1 -1
- package/build/cjs/components/card/types.cjs.map +1 -1
- package/build/cjs/components/card/types.d.cts +28 -0
- package/build/cjs/components/checkbox/stories/Checkbox.stories.cjs +2 -0
- package/build/cjs/components/checkbox/stories/Checkbox.stories.cjs.map +1 -0
- package/build/cjs/components/checkbox/stories/Checkbox.stories.d.cts +12 -0
- package/build/cjs/components/checkbox-panel/stories/CheckboxPanel.stories.cjs +2 -0
- package/build/cjs/components/checkbox-panel/stories/CheckboxPanel.stories.cjs.map +1 -0
- package/build/cjs/components/checkbox-panel/stories/CheckboxPanel.stories.d.cts +13 -0
- package/build/cjs/components/chip/stories/Chip.stories.cjs +2 -0
- package/build/cjs/components/chip/stories/Chip.stories.cjs.map +1 -0
- package/build/cjs/components/chip/stories/Chip.stories.d.cts +22 -0
- package/build/cjs/components/combobox/stories/Combobox.stories.cjs +2 -0
- package/build/cjs/components/combobox/stories/Combobox.stories.cjs.map +1 -0
- package/build/cjs/components/combobox/stories/Combobox.stories.d.cts +13 -0
- package/build/cjs/components/cookie-consent/stories/CookieConsent.stories.cjs +2 -0
- package/build/cjs/components/cookie-consent/stories/CookieConsent.stories.cjs.map +1 -0
- package/build/cjs/components/cookie-consent/stories/CookieConsent.stories.d.cts +14 -0
- package/build/cjs/components/countdown/stories/Countdown.stories.cjs +2 -0
- package/build/cjs/components/countdown/stories/Countdown.stories.cjs.map +1 -0
- package/build/cjs/components/countdown/stories/Countdown.stories.d.cts +13 -0
- package/build/cjs/components/datepicker/DatePicker.cjs +1 -1
- package/build/cjs/components/datepicker/DatePicker.cjs.map +1 -1
- package/build/cjs/components/datepicker/stories/Datepicker.stories.cjs +2 -0
- package/build/cjs/components/datepicker/stories/Datepicker.stories.cjs.map +1 -0
- package/build/cjs/components/datepicker/stories/Datepicker.stories.d.cts +12 -0
- package/build/cjs/components/description-list/stories/DescriptionList.stories.cjs +2 -0
- package/build/cjs/components/description-list/stories/DescriptionList.stories.cjs.map +1 -0
- package/build/cjs/components/description-list/stories/DescriptionList.stories.d.cts +5 -0
- package/build/cjs/components/expander/stories/Expander.stories.cjs +2 -0
- package/build/cjs/components/expander/stories/Expander.stories.cjs.map +1 -0
- package/build/cjs/components/expander/stories/Expander.stories.d.cts +6 -0
- package/build/cjs/components/expander/stories/ExpanderPanel.stories.cjs +2 -0
- package/build/cjs/components/expander/stories/ExpanderPanel.stories.cjs.map +1 -0
- package/build/cjs/components/expander/stories/ExpanderPanel.stories.d.cts +9 -0
- package/build/cjs/components/feedback/stories/Feedback.stories.cjs +2 -0
- package/build/cjs/components/feedback/stories/Feedback.stories.cjs.map +1 -0
- package/build/cjs/components/feedback/stories/Feedback.stories.d.cts +14 -0
- package/build/cjs/components/file-input/stories/File.stories.cjs +2 -0
- package/build/cjs/components/file-input/stories/File.stories.cjs.map +1 -0
- package/build/cjs/components/file-input/stories/File.stories.d.cts +13 -0
- package/build/cjs/components/file-input/stories/FileInput.stories.cjs +2 -0
- package/build/cjs/components/file-input/stories/FileInput.stories.cjs.map +1 -0
- package/build/cjs/components/file-input/stories/FileInput.stories.d.cts +13 -0
- package/build/cjs/components/file-input/stories/fileBytes.cjs +2 -0
- package/build/cjs/components/file-input/stories/fileBytes.cjs.map +1 -0
- package/build/cjs/components/file-input/stories/fileBytes.d.cts +2 -0
- package/build/cjs/components/flex/stories/Flex.stories.cjs +2 -0
- package/build/cjs/components/flex/stories/Flex.stories.cjs.map +1 -0
- package/build/cjs/components/flex/stories/Flex.stories.d.cts +6 -0
- package/build/cjs/components/icon/development/internal/IconExample.d.cts +1 -1
- package/build/cjs/components/icon/stories/Icons.stories.cjs +2 -0
- package/build/cjs/components/icon/stories/Icons.stories.cjs.map +1 -0
- package/build/cjs/components/icon/stories/Icons.stories.d.cts +6 -0
- package/build/cjs/components/icon-button/stories/IconButton.stories.cjs +2 -0
- package/build/cjs/components/icon-button/stories/IconButton.stories.cjs.map +1 -0
- package/build/cjs/components/icon-button/stories/IconButton.stories.d.cts +6 -0
- package/build/cjs/components/image/stories/Image.stories.cjs +2 -0
- package/build/cjs/components/image/stories/Image.stories.cjs.map +1 -0
- package/build/cjs/components/image/stories/Image.stories.d.cts +25 -0
- package/build/cjs/components/index.cjs +1 -1
- package/build/cjs/components/index.d.cts +6 -5
- package/build/cjs/components/input-group/stories/FieldGroup.stories.cjs +2 -0
- package/build/cjs/components/input-group/stories/FieldGroup.stories.cjs.map +1 -0
- package/build/cjs/components/input-group/stories/FieldGroup.stories.d.cts +6 -0
- package/build/cjs/components/input-group/stories/InputGroup.stories.cjs +2 -0
- package/build/cjs/components/input-group/stories/InputGroup.stories.cjs.map +1 -0
- package/build/cjs/components/input-group/stories/InputGroup.stories.d.cts +6 -0
- package/build/cjs/components/input-group/stories/Label.stories.cjs +2 -0
- package/build/cjs/components/input-group/stories/Label.stories.cjs.map +1 -0
- package/build/cjs/components/input-group/stories/Label.stories.d.cts +6 -0
- package/build/cjs/components/input-group/stories/SupportLabel.stories.cjs +2 -0
- package/build/cjs/components/input-group/stories/SupportLabel.stories.cjs.map +1 -0
- package/build/cjs/components/input-group/stories/SupportLabel.stories.d.cts +6 -0
- package/build/cjs/components/link/stories/Link.stories.cjs +2 -0
- package/build/cjs/components/link/stories/Link.stories.cjs.map +1 -0
- package/build/cjs/components/link/stories/Link.stories.d.cts +6 -0
- package/build/cjs/components/link-list/stories/LinkList.stories.cjs +2 -0
- package/build/cjs/components/link-list/stories/LinkList.stories.cjs.map +1 -0
- package/build/cjs/components/link-list/stories/LinkList.stories.d.cts +6 -0
- package/build/cjs/index.cjs +1 -1
- package/build/cjs/utilities/polymorphism/polymorphism.d.cts +7 -2
- package/build/es/components/accordion/stories/Accordion.stories.d.ts +13 -0
- package/build/es/components/accordion/stories/Accordion.stories.js +2 -0
- package/build/es/components/accordion/stories/Accordion.stories.js.map +1 -0
- package/build/es/components/accordion/stories/AccordionItem.stories.d.ts +13 -0
- package/build/es/components/accordion/stories/AccordionItem.stories.js +2 -0
- package/build/es/components/accordion/stories/AccordionItem.stories.js.map +1 -0
- package/build/es/components/autosuggest/stories/Autosuggest.stories.d.ts +12 -0
- package/build/es/components/autosuggest/stories/Autosuggest.stories.js +2 -0
- package/build/es/components/autosuggest/stories/Autosuggest.stories.js.map +1 -0
- package/build/es/components/breadcrumb/stories/Breadcrumb.stories.d.ts +12 -0
- package/build/es/components/breadcrumb/stories/Breadcrumb.stories.js +2 -0
- package/build/es/components/breadcrumb/stories/Breadcrumb.stories.js.map +1 -0
- package/build/es/components/breadcrumb/stories/BreadcrumbItem.stories.d.ts +12 -0
- package/build/es/components/breadcrumb/stories/BreadcrumbItem.stories.js +2 -0
- package/build/es/components/breadcrumb/stories/BreadcrumbItem.stories.js.map +1 -0
- package/build/es/components/button/stories/Button.stories.d.ts +16 -0
- package/build/es/components/button/stories/Button.stories.js +2 -0
- package/build/es/components/button/stories/Button.stories.js.map +1 -0
- package/build/es/components/button/types.d.ts +6 -4
- package/build/es/components/button/types.js.map +1 -1
- package/build/es/components/card/Card.d.ts +1 -27
- package/build/es/components/card/Card.js +1 -1
- package/build/es/components/card/Card.js.map +1 -1
- package/build/es/components/card/index.d.ts +2 -2
- package/build/es/components/card/stories/Card.stories.d.ts +3 -2
- package/build/es/components/card/stories/Card.stories.js +1 -1
- package/build/es/components/card/stories/Card.stories.js.map +1 -1
- package/build/es/components/card/types.d.ts +28 -0
- package/build/es/components/card/types.js +1 -1
- package/build/es/components/card/types.js.map +1 -1
- package/build/es/components/checkbox/stories/Checkbox.stories.d.ts +12 -0
- package/build/es/components/checkbox/stories/Checkbox.stories.js +2 -0
- package/build/es/components/checkbox/stories/Checkbox.stories.js.map +1 -0
- package/build/es/components/checkbox-panel/stories/CheckboxPanel.stories.d.ts +13 -0
- package/build/es/components/checkbox-panel/stories/CheckboxPanel.stories.js +2 -0
- package/build/es/components/checkbox-panel/stories/CheckboxPanel.stories.js.map +1 -0
- package/build/es/components/chip/stories/Chip.stories.d.ts +22 -0
- package/build/es/components/chip/stories/Chip.stories.js +2 -0
- package/build/es/components/chip/stories/Chip.stories.js.map +1 -0
- package/build/es/components/combobox/stories/Combobox.stories.d.ts +13 -0
- package/build/es/components/combobox/stories/Combobox.stories.js +2 -0
- package/build/es/components/combobox/stories/Combobox.stories.js.map +1 -0
- package/build/es/components/cookie-consent/stories/CookieConsent.stories.d.ts +14 -0
- package/build/es/components/cookie-consent/stories/CookieConsent.stories.js +2 -0
- package/build/es/components/cookie-consent/stories/CookieConsent.stories.js.map +1 -0
- package/build/es/components/countdown/stories/Countdown.stories.d.ts +13 -0
- package/build/es/components/countdown/stories/Countdown.stories.js +2 -0
- package/build/es/components/countdown/stories/Countdown.stories.js.map +1 -0
- package/build/es/components/datepicker/DatePicker.js +1 -1
- package/build/es/components/datepicker/DatePicker.js.map +1 -1
- package/build/es/components/datepicker/stories/Datepicker.stories.d.ts +12 -0
- package/build/es/components/datepicker/stories/Datepicker.stories.js +2 -0
- package/build/es/components/datepicker/stories/Datepicker.stories.js.map +1 -0
- package/build/es/components/description-list/stories/DescriptionList.stories.d.ts +5 -0
- package/build/es/components/description-list/stories/DescriptionList.stories.js +2 -0
- package/build/es/components/description-list/stories/DescriptionList.stories.js.map +1 -0
- package/build/es/components/expander/stories/Expander.stories.d.ts +6 -0
- package/build/es/components/expander/stories/Expander.stories.js +2 -0
- package/build/es/components/expander/stories/Expander.stories.js.map +1 -0
- package/build/es/components/expander/stories/ExpanderPanel.stories.d.ts +9 -0
- package/build/es/components/expander/stories/ExpanderPanel.stories.js +2 -0
- package/build/es/components/expander/stories/ExpanderPanel.stories.js.map +1 -0
- package/build/es/components/feedback/stories/Feedback.stories.d.ts +14 -0
- package/build/es/components/feedback/stories/Feedback.stories.js +2 -0
- package/build/es/components/feedback/stories/Feedback.stories.js.map +1 -0
- package/build/es/components/file-input/stories/File.stories.d.ts +13 -0
- package/build/es/components/file-input/stories/File.stories.js +2 -0
- package/build/es/components/file-input/stories/File.stories.js.map +1 -0
- package/build/es/components/file-input/stories/FileInput.stories.d.ts +13 -0
- package/build/es/components/file-input/stories/FileInput.stories.js +2 -0
- package/build/es/components/file-input/stories/FileInput.stories.js.map +1 -0
- package/build/es/components/file-input/stories/fileBytes.d.ts +2 -0
- package/build/es/components/file-input/stories/fileBytes.js +2 -0
- package/build/es/components/file-input/stories/fileBytes.js.map +1 -0
- package/build/es/components/flex/stories/Flex.stories.d.ts +6 -0
- package/build/es/components/flex/stories/Flex.stories.js +2 -0
- package/build/es/components/flex/stories/Flex.stories.js.map +1 -0
- package/build/es/components/icon/development/internal/IconExample.d.ts +1 -1
- package/build/es/components/icon/stories/Icons.stories.d.ts +6 -0
- package/build/es/components/icon/stories/Icons.stories.js +2 -0
- package/build/es/components/icon/stories/Icons.stories.js.map +1 -0
- package/build/es/components/icon-button/stories/IconButton.stories.d.ts +6 -0
- package/build/es/components/icon-button/stories/IconButton.stories.js +2 -0
- package/build/es/components/icon-button/stories/IconButton.stories.js.map +1 -0
- package/build/es/components/image/stories/Image.stories.d.ts +25 -0
- package/build/es/components/image/stories/Image.stories.js +2 -0
- package/build/es/components/image/stories/Image.stories.js.map +1 -0
- package/build/es/components/index.d.ts +6 -5
- package/build/es/components/index.js +1 -1
- package/build/es/components/input-group/stories/FieldGroup.stories.d.ts +6 -0
- package/build/es/components/input-group/stories/FieldGroup.stories.js +2 -0
- package/build/es/components/input-group/stories/FieldGroup.stories.js.map +1 -0
- package/build/es/components/input-group/stories/InputGroup.stories.d.ts +6 -0
- package/build/es/components/input-group/stories/InputGroup.stories.js +2 -0
- package/build/es/components/input-group/stories/InputGroup.stories.js.map +1 -0
- package/build/es/components/input-group/stories/Label.stories.d.ts +6 -0
- package/build/es/components/input-group/stories/Label.stories.js +2 -0
- package/build/es/components/input-group/stories/Label.stories.js.map +1 -0
- package/build/es/components/input-group/stories/SupportLabel.stories.d.ts +6 -0
- package/build/es/components/input-group/stories/SupportLabel.stories.js +2 -0
- package/build/es/components/input-group/stories/SupportLabel.stories.js.map +1 -0
- package/build/es/components/link/stories/Link.stories.d.ts +6 -0
- package/build/es/components/link/stories/Link.stories.js +2 -0
- package/build/es/components/link/stories/Link.stories.js.map +1 -0
- package/build/es/components/link-list/stories/LinkList.stories.d.ts +6 -0
- package/build/es/components/link-list/stories/LinkList.stories.js +2 -0
- package/build/es/components/link-list/stories/LinkList.stories.js.map +1 -0
- package/build/es/index.js +1 -1
- package/build/es/utilities/polymorphism/polymorphism.d.ts +7 -2
- package/build/style.css +1 -1
- package/package.json +2 -2
- package/styles/components/button/button.css +2 -2
- package/styles/components/button/button.min.css +1 -1
- package/styles/components/checkbox/checkbox.css +4 -4
- package/styles/components/checkbox/checkbox.min.css +1 -1
- package/styles/components/checkbox-panel/checkbox-panel.css +2 -2
- package/styles/components/checkbox-panel/checkbox-panel.min.css +1 -1
- package/styles/components/checkbox-panel/stories/styles.css +25 -0
- package/styles/components/checkbox-panel/stories/styles.min.css +1 -0
- package/styles/components/checkbox-panel/stories/styles.scss +27 -0
- package/styles/components/countdown/countdown.css +2 -2
- package/styles/components/countdown/countdown.min.css +1 -1
- package/styles/components/datepicker/_index.scss +1 -0
- package/styles/components/feedback/feedback.css +2 -2
- package/styles/components/feedback/feedback.min.css +1 -1
- package/styles/components/image/stories/styles.css +9 -0
- package/styles/components/image/stories/styles.min.css +1 -0
- package/styles/components/image/stories/styles.scss +9 -0
- package/styles/components/input-group/input-group.css +2 -2
- package/styles/components/input-group/input-group.min.css +1 -1
- package/styles/components/loader/loader.css +6 -6
- package/styles/components/loader/loader.min.css +1 -1
- package/styles/components/loader/skeleton-loader.css +5 -5
- package/styles/components/loader/skeleton-loader.min.css +1 -1
- package/styles/components/message/message.css +2 -2
- package/styles/components/message/message.min.css +1 -1
- package/styles/components/progress-bar/progress-bar.css +1 -1
- package/styles/components/progress-bar/progress-bar.min.css +1 -1
- package/styles/components/radio-button/radio-button.css +2 -2
- package/styles/components/radio-button/radio-button.min.css +1 -1
- package/styles/components/radio-panel/radio-panel.css +2 -2
- package/styles/components/radio-panel/radio-panel.min.css +1 -1
- package/styles/components/system-message/system-message.css +2 -2
- package/styles/components/system-message/system-message.min.css +1 -1
- package/styles/components/toast/toast.css +4 -4
- package/styles/components/toast/toast.min.css +1 -1
- package/styles/styles.css +45 -45
- package/styles/styles.min.css +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PolymorphicPropsWithRef } from '../../utilities/polymorphism/polymorphism.js';
|
|
1
2
|
export declare const SPACING_STEPS: readonly ["0", "m", "l", "xl", "2xl", "3xl", "4xl"];
|
|
2
3
|
type SpacingSteps = typeof SPACING_STEPS;
|
|
3
4
|
export declare const NEW_SPACING_STEPS: readonly ["0", "16", "24", "40", "64", "104", "168"];
|
|
@@ -7,6 +8,33 @@ export type OldSpacingStep = SpacingSteps[number];
|
|
|
7
8
|
export type NewSpacingStep = NewSpacingSteps[number];
|
|
8
9
|
export type SpacingStep = SpacingSteps[number] | NewSpacingSteps[number];
|
|
9
10
|
export declare function isOldSpacingStep(value: SpacingStep): value is OldSpacingStep;
|
|
11
|
+
export declare const CARD_PADDINGS: readonly ["s", "m", "l", "xl"];
|
|
12
|
+
export type CardPadding = (typeof CARD_PADDINGS)[number];
|
|
13
|
+
export declare const CARD_VARIANTS: readonly ["outlined", "high", "low"];
|
|
14
|
+
export type CardVariant = (typeof CARD_VARIANTS)[number];
|
|
15
|
+
type Props = {
|
|
16
|
+
className?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Setter padding på kortet. Tilsvarer samme property i Figma.
|
|
19
|
+
* @default "s"
|
|
20
|
+
*/
|
|
21
|
+
padding?: CardPadding;
|
|
22
|
+
/**
|
|
23
|
+
* Angir hvilken kortvariant du vil bruke. Velg en variant som gir god kontrast
|
|
24
|
+
* til bakgrunnen på siden, slik at det er enkelt å skille innholdet fra hverandre.
|
|
25
|
+
* @default "high"
|
|
26
|
+
*/
|
|
27
|
+
variant?: CardVariant;
|
|
28
|
+
/**
|
|
29
|
+
* Angir om kortet visuelt skal fremstå som klikkbart. Du må selv rendre
|
|
30
|
+
* kortet som et klikkbart element (f.eks. `<a>` eller en `<Link>` fra
|
|
31
|
+
* et ruting-bibliotek) og gi det en `href` eller `onClick`-handler.
|
|
32
|
+
* HUSK: Sett aria-label for at støtteverktøy, som skjermlesere, ikke
|
|
33
|
+
* skal lese alt innholdet i kortet.
|
|
34
|
+
*/
|
|
35
|
+
clickable?: boolean;
|
|
36
|
+
};
|
|
37
|
+
export type CardProps<ElementType extends React.ElementType> = PolymorphicPropsWithRef<ElementType, Props> & Props;
|
|
10
38
|
export interface PaddingShorthand {
|
|
11
39
|
/**
|
|
12
40
|
* Legger til ekstra rom i toppen av kortet, fra spacing-skalaen til Jøkul.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const
|
|
1
|
+
const l=["0","m","l","xl","2xl","3xl","4xl"],s=["0","16","24","40","64","104","168"];function S(s){return l.includes(s)}const n=["s","m","l","xl"],t=["outlined","high","low"];export{n as CARD_PADDINGS,t as CARD_VARIANTS,s as NEW_SPACING_STEPS,l as SPACING_STEPS,S as isOldSpacingStep};
|
|
2
2
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../src/components/card/types.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../src/components/card/types.ts"],"sourcesContent":["import { PolymorphicPropsWithRef } from \"../../utilities/polymorphism/polymorphism.js\";\n\nexport const SPACING_STEPS = [\n \"0\",\n \"m\",\n \"l\",\n \"xl\",\n \"2xl\",\n \"3xl\",\n \"4xl\",\n] as const;\ntype SpacingSteps = typeof SPACING_STEPS;\nexport const NEW_SPACING_STEPS = [\n \"0\",\n \"16\",\n \"24\",\n \"40\",\n \"64\",\n \"104\",\n \"168\",\n] as const;\ntype NewSpacingSteps = typeof NEW_SPACING_STEPS;\nexport type BasePadding =\n | SpacingSteps[0 | 1 | 2 | 3]\n | NewSpacingSteps[0 | 1 | 2 | 3];\nexport type OldSpacingStep = SpacingSteps[number];\nexport type NewSpacingStep = NewSpacingSteps[number];\nexport type SpacingStep = SpacingSteps[number] | NewSpacingSteps[number];\n\nexport function isOldSpacingStep(value: SpacingStep): value is OldSpacingStep {\n return SPACING_STEPS.includes(value as OldSpacingStep);\n}\n\nexport const CARD_PADDINGS = [\"s\", \"m\", \"l\", \"xl\"] as const;\nexport type CardPadding = (typeof CARD_PADDINGS)[number];\nexport const CARD_VARIANTS = [\"outlined\", \"high\", \"low\"] as const;\nexport type CardVariant = (typeof CARD_VARIANTS)[number];\n\ntype Props = {\n className?: string;\n /**\n * Setter padding på kortet. Tilsvarer samme property i Figma.\n * @default \"s\"\n */\n padding?: CardPadding;\n /**\n * Angir hvilken kortvariant du vil bruke. Velg en variant som gir god kontrast\n * til bakgrunnen på siden, slik at det er enkelt å skille innholdet fra hverandre.\n * @default \"high\"\n */\n variant?: CardVariant;\n /**\n * Angir om kortet visuelt skal fremstå som klikkbart. Du må selv rendre\n * kortet som et klikkbart element (f.eks. `<a>` eller en `<Link>` fra\n * et ruting-bibliotek) og gi det en `href` eller `onClick`-handler.\n * HUSK: Sett aria-label for at støtteverktøy, som skjermlesere, ikke\n * skal lese alt innholdet i kortet.\n */\n clickable?: boolean;\n};\n\nexport type CardProps<ElementType extends React.ElementType> =\n PolymorphicPropsWithRef<ElementType, Props> & Props;\n\nexport interface PaddingShorthand {\n /**\n * Legger til ekstra rom i toppen av kortet, fra spacing-skalaen til Jøkul.\n * Ikke bruk ekstra topPadding sammen med tag. Verdier lavere enn for venstre og høyre padding\n * blir ignorert.\n * @default \"24\"\n */\n top?: SpacingStep;\n /**\n * Bruk stegene fra spacing-skalaen til Jøkul.\n * Hvis left og right har forskjellige verdier brukes den største for begge.\n * @default \"24\"\n */\n right?: BasePadding;\n /**\n * Legger til ekstra rom i bunnen av kortet, fra spacing-skalaen til Jøkul.\n * Verdier lavere enn for venstre og høyre padding blir ignorert.\n * @default \"24\"\n */\n bottom?: SpacingStep;\n /**\n * Bruk stegene fra spacing-skalaen til Jøkul.\n * Hvis left og right har forskjellige verdier brukes den største for begge.\n * @default \"24\"\n */\n left?: BasePadding;\n}\n\nexport interface PaddingOptions {\n /**\n * Hvor mye rom skal det være rundt innholdet i kortet?\n * @default \"24\"\n */\n padding?: BasePadding | PaddingShorthand;\n}\n\nexport type TagType = \"success\" | \"warning\" | \"info\" | \"error\";\n\nexport type CardTag = {\n /**\n * @default <none> Rendres som nøytral tag\n */\n type?: TagType;\n text: string;\n};\n"],"names":["SPACING_STEPS","NEW_SPACING_STEPS","isOldSpacingStep","value","includes","CARD_PADDINGS","CARD_VARIANTS"],"mappings":"AAEO,MAAMA,EAAgB,CACzB,IACA,IACA,IACA,KACA,MACA,MACA,OAGSC,EAAoB,CAC7B,IACA,KACA,KACA,KACA,KACA,MACA,OAUG,SAASC,EAAiBC,GACtBH,OAAAA,EAAcI,SAASD,EAClC,CAEO,MAAME,EAAgB,CAAC,IAAK,IAAK,IAAK,MAEhCC,EAAgB,CAAC,WAAY,OAAQ"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
declare const meta: {
|
|
3
|
+
title: string;
|
|
4
|
+
component: import('react').ForwardRefExoticComponent<import('../types.js').CheckboxProps & import('react').RefAttributes<HTMLInputElement>>;
|
|
5
|
+
parameters: {
|
|
6
|
+
layout: string;
|
|
7
|
+
};
|
|
8
|
+
tags: string[];
|
|
9
|
+
};
|
|
10
|
+
export default meta;
|
|
11
|
+
type Story = StoryObj<typeof meta>;
|
|
12
|
+
export declare const Checkbox: Story;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Checkbox as e}from"../Checkbox.js";/* empty css */const o={title:"Komponenter/Checkbox",component:e,parameters:{layout:"centered"},tags:["autodocs"]},t={args:{children:"Kjekk boks",name:"checkbox",value:"true"}};export{t as Checkbox,o as default};
|
|
2
|
+
//# sourceMappingURL=Checkbox.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.stories.js","sources":["../../../../../src/components/checkbox/stories/Checkbox.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { Checkbox as CheckboxComponent } from \"../Checkbox.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Checkbox\",\n component: CheckboxComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof CheckboxComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Checkbox: Story = {\n args: { children: \"Kjekk boks\", name: \"checkbox\", value: \"true\" },\n};\n"],"names":["meta","title","component","CheckboxComponent","parameters","layout","tags","Checkbox","args","children","name","value"],"mappings":"iFAIA,MAAMA,EAAO,CACTC,MAAO,uBACPC,UAAWC,EACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEC,EAAkB,CAC3BC,KAAM,CAAEC,SAAU,aAAcC,KAAM,WAAYC,MAAO"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: React.ForwardRefExoticComponent<Omit<import('../types.js').CheckboxPanelProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
tags: string[];
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
export declare const CheckboxPanel: Story;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e,jsxs as a}from"react/jsx-runtime";import{Flex as s}from"../../flex/Flex.js";import{SuccessTag as l}from"../../tag/Tag.js";import{CheckboxPanel as r}from"../CheckboxPanel.js";const t={title:"Komponenter/CheckboxPanel",component:r,parameters:{layout:"padded"},tags:["autodocs"]},o={args:{label:"Kasko",children:e("p",{children:"En forsikring som passer de fleste biler. Dekker det meste av skader, også de du selv er ansvarlig for. Inkluderer Minikasko og Ansvar."}),extraLabel:a(s,{as:"span",alignItems:"center",justifyContent:"flex-end",gap:24,className:"input-panel-example__custom-label input-panel-example__custom-label--bold",children:[e(l,{children:"Anbefalt"}),"300 kr/mnd"]})},decorators:a=>e("div",{style:{maxWidth:580},children:e(a,{})})};export{o as CheckboxPanel,t as default};
|
|
2
|
+
//# sourceMappingURL=CheckboxPanel.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxPanel.stories.js","sources":["../../../../../src/components/checkbox-panel/stories/CheckboxPanel.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport { Flex } from \"../../flex/Flex.js\";\nimport { SuccessTag } from \"../../tag/Tag.js\";\nimport { CheckboxPanel as CheckboxPanelComponent } from \"../CheckboxPanel.js\";\nimport \"../styles/_index.scss\";\nimport \"./styles.scss\";\n\nconst meta = {\n title: \"Komponenter/CheckboxPanel\",\n component: CheckboxPanelComponent,\n parameters: {\n layout: \"padded\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof CheckboxPanelComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const CheckboxPanel: Story = {\n args: {\n label: \"Kasko\",\n children: (\n <p>\n En forsikring som passer de fleste biler. Dekker det meste av\n skader, også de du selv er ansvarlig for. Inkluderer Minikasko\n og Ansvar.\n </p>\n ),\n extraLabel: (\n <Flex\n as=\"span\"\n alignItems=\"center\"\n justifyContent=\"flex-end\"\n gap={24}\n className=\"input-panel-example__custom-label input-panel-example__custom-label--bold\"\n >\n <SuccessTag>Anbefalt</SuccessTag>\n 300 kr/mnd\n </Flex>\n ),\n },\n decorators: (Story) => (\n <div style={{ maxWidth: 580 }}>\n <Story />\n </div>\n ),\n};\n"],"names":["meta","title","component","CheckboxPanelComponent","parameters","layout","tags","CheckboxPanel","args","label","children","jsx","extraLabel","jsxs","Flex","as","alignItems","justifyContent","gap","className","SuccessTag","decorators","Story","style","maxWidth"],"mappings":"8LAQA,MAAMA,EAAO,CACTC,MAAO,4BACPC,UAAWC,EACXC,WAAY,CACRC,OAAQ,UAEZC,KAAM,CAAC,aAMEC,EAAuB,CAChCC,KAAM,CACFC,MAAO,QACPC,SACKC,EAAA,IAAA,CAAED,SAIH,4IAEJE,WACIC,EAACC,EAAA,CACGC,GAAG,OACHC,WAAW,SACXC,eAAe,WACfC,IAAK,GACLC,UAAU,4EAEVT,SAAA,CAAAC,EAACS,GAAWV,SAAQ,aAAa,iBAK7CW,WAAaC,GACTX,EAAC,MAAI,CAAAY,MAAO,CAAEC,SAAU,KACpBd,SAACC,EAAAW,EAAA,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
declare const meta: {
|
|
3
|
+
title: string;
|
|
4
|
+
component: import('react').ForwardRefExoticComponent<import('../types.js').ChipProps & import('react').RefAttributes<HTMLButtonElement>>;
|
|
5
|
+
parameters: {
|
|
6
|
+
layout: string;
|
|
7
|
+
};
|
|
8
|
+
tags: string[];
|
|
9
|
+
argTypes: {
|
|
10
|
+
variant: {
|
|
11
|
+
control: "select";
|
|
12
|
+
options: string[];
|
|
13
|
+
};
|
|
14
|
+
size: {
|
|
15
|
+
control: "select";
|
|
16
|
+
options: string[];
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export default meta;
|
|
21
|
+
type Story = StoryObj<typeof meta>;
|
|
22
|
+
export declare const Chip: Story;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Chip as t}from"../Chip.js";const e={title:"Komponenter/Chip",component:t,parameters:{layout:"centered"},tags:["autodocs"],argTypes:{variant:{control:"select",options:["input","filter"]},size:{control:"select",options:["small","large"]}}},o={args:{children:"Hus",variant:"input"}};export{o as Chip,e as default};
|
|
2
|
+
//# sourceMappingURL=Chip.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Chip.stories.js","sources":["../../../../../src/components/chip/stories/Chip.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { Chip as ChipComponent } from \"../Chip.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Chip\",\n component: ChipComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n argTypes: {\n variant: { control: \"select\", options: [\"input\", \"filter\"] },\n size: { control: \"select\", options: [\"small\", \"large\"] },\n },\n} satisfies Meta<typeof ChipComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Chip: Story = {\n args: {\n children: \"Hus\",\n variant: \"input\",\n },\n};\n"],"names":["meta","title","component","ChipComponent","parameters","layout","tags","argTypes","variant","control","options","size","Chip","args","children"],"mappings":"kCAIA,MAAMA,EAAO,CACTC,MAAO,mBACPC,UAAWC,EACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,YACPC,SAAU,CACNC,QAAS,CAAEC,QAAS,SAAUC,QAAS,CAAC,QAAS,WACjDC,KAAM,CAAEF,QAAS,SAAUC,QAAS,CAAC,QAAS,YAOzCE,EAAc,CACvBC,KAAM,CACFC,SAAU,MACVN,QAAS"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: React.FC<import('../../combobox/types.js').ComboboxProps>;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
tags: string[];
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
export declare const Combobox: Story;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{Combobox as a}from"../Combobox.js";const t={title:"Komponenter/Combobox",component:a,parameters:{layout:"centered"},tags:["autodocs"]},l={args:{items:[{value:"a080",label:"A080 - Rotavirusenteritt",tagLabel:"A080"},{value:"a081",label:"A081 - Akutt gastroenteritt som skyldes norovirus",tagLabel:"A081"},{value:"a082",label:"A082 - Adenovirusenteritt",tagLabel:"A082"},{value:"a083",label:"A083 - Annen virusenteritt",tagLabel:"A083"},{value:"a084",label:"A084 - Uspesifisert virusinfeksjon i mage-tarmkanalen",tagLabel:"A084"},{value:"a085",label:"A085 - Annen spesifisert mage-tarminfeksjon",tagLabel:"A085"},{value:"a090",label:"A090 - Annen eller uspesifisert gastroenteritt eller kolitt av infeksiøs årsak",tagLabel:"A090"},{value:"a099",label:"A099 - Gastroenteritt eller kolitt av uspesifisert årsak",tagLabel:"A099"},{value:"a150",label:"A150 - Lungetuberkulose bekreftet ved mikroskopi av sputum med eller uten kultur",tagLabel:"A150"}],label:"Velg sykdommer",name:"disease",onChange:()=>{}},decorators:a=>e("div",{style:{maxWidth:220},children:e(a,{})})};export{l as Combobox,t as default};
|
|
2
|
+
//# sourceMappingURL=Combobox.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Combobox.stories.js","sources":["../../../../../src/components/combobox/stories/Combobox.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { Combobox as ComboboxComponent } from \"../Combobox.js\";\nimport \"../styles/_index.scss\";\nimport { ComboboxValuePair } from \"../../combobox/types.js\";\nimport React from \"react\";\n\nconst meta = {\n title: \"Komponenter/Combobox\",\n component: ComboboxComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof ComboboxComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nconst items: ComboboxValuePair[] = [\n { value: \"a080\", label: \"A080 - Rotavirusenteritt\", tagLabel: \"A080\" },\n {\n value: \"a081\",\n label: \"A081 - Akutt gastroenteritt som skyldes norovirus\",\n tagLabel: \"A081\",\n },\n { value: \"a082\", label: \"A082 - Adenovirusenteritt\", tagLabel: \"A082\" },\n {\n value: \"a083\",\n label: \"A083 - Annen virusenteritt\",\n tagLabel: \"A083\",\n },\n {\n value: \"a084\",\n label: \"A084 - Uspesifisert virusinfeksjon i mage-tarmkanalen\",\n tagLabel: \"A084\",\n },\n {\n value: \"a085\",\n label: \"A085 - Annen spesifisert mage-tarminfeksjon\",\n tagLabel: \"A085\",\n },\n {\n value: \"a090\",\n label: \"A090 - Annen eller uspesifisert gastroenteritt eller kolitt av infeksiøs årsak\",\n tagLabel: \"A090\",\n },\n {\n value: \"a099\",\n label: \"A099 - Gastroenteritt eller kolitt av uspesifisert årsak\",\n tagLabel: \"A099\",\n },\n {\n value: \"a150\",\n label: \"A150 - Lungetuberkulose bekreftet ved mikroskopi av sputum med eller uten kultur\",\n tagLabel: \"A150\",\n },\n];\n\nexport const Combobox: Story = {\n args: {\n items,\n label: \"Velg sykdommer\",\n name: \"disease\",\n onChange: () => {},\n },\n decorators: (Story) => (\n <div style={{ maxWidth: 220 }}>\n <Story />\n </div>\n ),\n};\n"],"names":["meta","title","component","ComboboxComponent","parameters","layout","tags","Combobox","args","items","value","label","tagLabel","name","onChange","decorators","Story","jsx","style","maxWidth","children"],"mappings":"kFAMA,MAAMA,EAAO,CACTC,MAAO,uBACPC,UAAWC,EACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aA8CEC,EAAkB,CAC3BC,KAAM,CACFC,MA1C2B,CAC/B,CAAEC,MAAO,OAAQC,MAAO,2BAA4BC,SAAU,QAC9D,CACIF,MAAO,OACPC,MAAO,oDACPC,SAAU,QAEd,CAAEF,MAAO,OAAQC,MAAO,4BAA6BC,SAAU,QAC/D,CACIF,MAAO,OACPC,MAAO,6BACPC,SAAU,QAEd,CACIF,MAAO,OACPC,MAAO,wDACPC,SAAU,QAEd,CACIF,MAAO,OACPC,MAAO,8CACPC,SAAU,QAEd,CACIF,MAAO,OACPC,MAAO,iFACPC,SAAU,QAEd,CACIF,MAAO,OACPC,MAAO,2DACPC,SAAU,QAEd,CACIF,MAAO,OACPC,MAAO,mFACPC,SAAU,SAOVD,MAAO,iBACPE,KAAM,UACNC,SAAU,QAEdC,WAAaC,GACTC,EAAC,MAAI,CAAAC,MAAO,CAAEC,SAAU,KACpBC,SAACH,EAAAD,EAAA,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: React.FC<import('../types.js').CookieConsentProviderProps>;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
tags: string[];
|
|
10
|
+
argTypes: {};
|
|
11
|
+
};
|
|
12
|
+
export default meta;
|
|
13
|
+
type Story = StoryObj<typeof meta>;
|
|
14
|
+
export declare const CookieConsent: Story;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as o,jsxs as e}from"react/jsx-runtime";import{PrimaryButton as t}from"../../button/Button.js";import{CookieConsent as n}from"../CookieConsent.js";import{CookieConsentProvider as s,useCookieConsent as r}from"../CookieConsentContext.js";const i={title:"Komponenter/CookieConsent",component:s,parameters:{layout:"centered"},tags:["autodocs"],argTypes:{}},a={args:{children:o((({children:n})=>{const{openConsentModal:s}=r();return e("div",{children:[o(t,{onClick:()=>s(),children:"Åpne samtykker"}),n]})}),{children:o(n,{})}),cookieName:"demo-consent-cookie",functional:!0,statistics:!0,marketing:!0}};export{a as CookieConsent,i as default};
|
|
2
|
+
//# sourceMappingURL=CookieConsent.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CookieConsent.stories.js","sources":["../../../../../src/components/cookie-consent/stories/CookieConsent.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React, { FC } from \"react\";\nimport { WithChildren } from \"../../../core/types.js\";\nimport { PrimaryButton } from \"../../button/Button.js\";\nimport { CookieConsent as CookieConsentComponent } from \"../CookieConsent.js\";\nimport {\n CookieConsentProvider,\n useCookieConsent,\n} from \"../CookieConsentContext.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/CookieConsent\",\n component: CookieConsentProvider,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n argTypes: {},\n} satisfies Meta<typeof CookieConsentProvider>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nconst Wrapper: FC<WithChildren> = ({ children }) => {\n const { openConsentModal } = useCookieConsent();\n\n return (\n <div>\n <PrimaryButton onClick={() => openConsentModal()}>\n Åpne samtykker\n </PrimaryButton>\n {children}\n </div>\n );\n};\n\nexport const CookieConsent: Story = {\n args: {\n children: (\n <Wrapper>\n <CookieConsentComponent />\n </Wrapper>\n ),\n cookieName: \"demo-consent-cookie\",\n functional: true,\n statistics: true,\n marketing: true,\n },\n};\n"],"names":["meta","title","component","CookieConsentProvider","parameters","layout","tags","argTypes","CookieConsent","args","children","jsx","openConsentModal","useCookieConsent","PrimaryButton","onClick","CookieConsentComponent","cookieName","functional","statistics","marketing"],"mappings":"sPAWA,MAAMA,EAAO,CACTC,MAAO,4BACPC,UAAWC,EACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,YACPC,SAAU,CAAC,GAmBFC,EAAuB,CAChCC,KAAM,CACFC,SACIC,GAhBsB,EAAGD,SAAAA,MAC3B,MAAEE,iBAAAA,GAAqBC,IAE7B,SACK,MACG,CAAAH,SAAA,CAAAC,EAACG,EAAc,CAAAC,QAAS,IAAMH,IAAoBF,SAElD,mBACCA,IACL,GAQQ,CAAAA,SAAAC,EAACK,GAAuB,KAGhCC,WAAY,sBACZC,YAAY,EACZC,YAAY,EACZC,WAAW"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: React.FC<import('../types.js').CountdownProps>;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
tags: string[];
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
export declare const Countdown: Story;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as t,jsxs as o}from"react/jsx-runtime";import{Countdown as r}from"../Countdown.js";import{useState as e}from"react";import{PrimaryButton as n}from"../../button/Button.js";import{Flex as s}from"../../flex/Flex.js";const a={title:"Komponenter/Countdown",component:r,parameters:{layout:"centered"},tags:["autodocs"]},i=({children:r})=>{const[a,i]=e(0);return o(s,{style:{width:500},direction:"column",gap:24,children:[t("div",{children:r},a),t(n,{onClick:()=>i(Date.now()),style:{width:200},children:"Restart"})]})},d={args:{from:5e3},decorators:o=>t(i,{children:t(o,{})})};export{d as Countdown,a as default};
|
|
2
|
+
//# sourceMappingURL=Countdown.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Countdown.stories.js","sources":["../../../../../src/components/countdown/stories/Countdown.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { Countdown as CountdownComponent } from \"../Countdown.js\";\nimport \"../styles/_index.scss\";\nimport React, { FC, useState } from \"react\";\nimport { WithChildren } from \"../../../core/types.js\";\nimport { PrimaryButton } from \"../../button/Button.js\";\nimport { Flex } from \"../../flex/Flex.js\";\n\nconst meta = {\n title: \"Komponenter/Countdown\",\n component: CountdownComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof CountdownComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nconst Wrapper: FC<WithChildren> = ({ children }) => {\n const [key, setKey] = useState(0);\n\n return (\n <Flex style={{ width: 500 }} direction=\"column\" gap={24}>\n <div key={key}>{children}</div>\n <PrimaryButton\n onClick={() => setKey(Date.now())}\n style={{ width: 200 }}\n >\n Restart\n </PrimaryButton>\n </Flex>\n );\n};\n\nexport const Countdown: Story = {\n args: {\n from: 5000,\n },\n decorators: (Story) => (\n <Wrapper>\n <Story />\n </Wrapper>\n ),\n};\n"],"names":["meta","title","component","CountdownComponent","parameters","layout","tags","Wrapper","children","key","setKey","useState","jsxs","Flex","style","width","direction","gap","jsx","PrimaryButton","onClick","Date","now","Countdown","args","from","decorators","Story"],"mappings":"gOAQA,MAAMA,EAAO,CACTC,MAAO,wBACPC,UAAWC,EACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMLC,EAA4B,EAAGC,SAAAA,MACjC,MAAOC,EAAKC,GAAUC,EAAS,GAG3B,OAAAC,EAACC,EAAK,CAAAC,MAAO,CAAEC,MAAO,KAAOC,UAAU,SAASC,IAAK,GACjDT,SAAA,CAACU,EAAA,MAAA,CAAeV,SAAAA,GAANC,GACVS,EAACC,EAAA,CACGC,QAAS,IAAMV,EAAOW,KAAKC,OAC3BR,MAAO,CAAEC,MAAO,KACnBP,SAAA,cAGL,EAIKe,EAAmB,CAC5BC,KAAM,CACFC,KAAM,KAEVC,WAAaC,KACRpB,EACG,CAAAC,SAAAU,EAACS,GAAM"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as t}from"react/jsx-runtime";import{c as a}from"../../../clsx-BeLtu-UY.js";import{startOfDay as r}from"date-fns";import{forwardRef as n,useState as o,useRef as l,useCallback as s}from"react";import{flushSync as i}from"react-dom";import{CalendarIcon as u}from"../icon/icons/CalendarIcon.js";import{IconButton as d}from"../icon-button/IconButton.js";import{InputGroup as p}from"../input-group/InputGroup.js";import{Popover as c}from"../popover/Popover.js";import{BaseTextInput as m}from"../text-input/BaseTextInput.js";import{Calendar as f}from"./internal/Calendar.js";import{getInitialDate as v}from"./internal/utils.js";import{parseDateString as h,formatInput as b}from"./utils.js";import{isWithinLowerBound as k,isWithinUpperBound as D}from"./validation.js";const g=n(((n,g)=>{const{"data-testautoid":y,id:j,className:L="",label:w="Velg dato",labelProps:C,defaultValue:I,defaultShow:x=!1,value:P,disableBeforeDate:B,disableAfterDate:_,yearsToShow:E,name:O,helpLabel:T,errorLabel:N,invalid:S,density:R,days:U,months:V,monthLabel:F,yearLabel:K,placeholder:W="dd.mm.åååå",width:A="11.25rem",onChange:G,onBlur:q,onFocus:H,onKeyDown:M,action:z,showCalendarLabel:J="Åpne kalender",hideCalendarLabel:Q="Lukk kalender",supportLabelProps:X,tooltip:Y,textInputProps:Z,...$}=n;"production"!==process.env.NODE_ENV&&P&&I&&console.warn("DatePicker må enten være controlled eller uncontrolled. Hvis du bruker defaultValue og value sammen vil defaultValue bli ignorert.");const ee=h(B),te=ee?r(ee):void 0,ae=h(_),re=ae?r(ae):void 0,[ne,oe]=o(v(P,I,te,re)),[le,se]=o(null),[ie,ue]=o(x),de=l(null),pe=l(null),ce=l(null),me=l(null),fe=s((e=>{me.current=e,g&&("function"==typeof g?g(e):g.current=e)}),[me,g]),ve=s((e=>{H&&pe.current&&(pe.current.contains(e.relatedTarget)||H(e,ne,{error:le,value:e.target.value}))}),[H,ne,le]),he=s((e=>{q&&q(e,ne,{error:le,value:e.target.value})}),[q,ne,le]),be=s((e=>{"Escape"===e.key&&(ue(!1),e.preventDefault(),e.stopPropagation()),null!=z&&z.onKeyDown&&z.onKeyDown(e)}),[ue,z]),ke=s((e=>{let t=null,a=null;if(e.target.value){const r=h(e.target.value);r?te&&!k(r,te)?a="OUTSIDE_LOWER_BOUND":re&&!D(r,re)?a="OUTSIDE_UPPER_BOUND":ue(!1):a="WRONG_FORMAT",t=r||null}se(a),oe(t),G&&G(e,t,{error:a,value:e.target.value})}),[G,se,oe,ue,te,re]),De=s((e=>{i((()=>{ue(!ie)}));const t=de.current,a=t&&t.querySelector('[aria-pressed="true"]');window.requestAnimationFrame((()=>a&&a.focus())),null!=z&&z.onClick&&z.onClick(e)}),[ue,ie,z,de]),ge=s((({date:e})=>{if(ue(!1),oe(e),me.current){const t=me.current;t.value=b(e);const a=document.createEvent("HTMLEvents");a.initEvent("input",!0,!1),t.dispatchEvent(a),t.focus(),G&&G(a,e,{error:null,value:t.value})}}),[ue,oe,G]),ye=s((e=>{e.preventDefault(),ue(!1),ce.current&&ce.current.focus()}),[ue]);return e(p,{id:j,className:a("jkl-datepicker",L,{"jkl-datepicker--open":ie}),...$,ref:pe,label:w,labelProps:C,density:R,helpLabel:T,errorLabel:N,supportLabelProps:X,tooltip:Y,render:a=>e(m,{ref:fe,"data-testid":"jkl-datepicker__input","data-testautoid":y,className:"jkl-datepicker__input",name:O,defaultValue:I,density:R,value:P,type:"text",placeholder:W,width:A,onFocus:ve,onBlur:he,onChange:ke,actionButton:t(c,{positionReference:me,open:ie,onOpenChange:()=>ue(!ie),offset:8,children:[e(c.Trigger,{...z,"data-testid":"jkl-datepicker__trigger",className:"jkl-text-input-action-button",title:ie?Q:J,tabIndex:0,onClick:De,onKeyDown:be,asChild:!0,children:e(d,{children:e(u,{})})}),e(c.Content,{initialFocus:-1,padding:24,children:e(f,{ref:de,density:R,date:ne,minDate:te,maxDate:re,days:U,months:V,monthLabel:F,yearLabel:K,yearsToShow:E,onDateSelected:ge,onTabOutside:ye})})]}),...Z,...a})})}));g.displayName="DatePicker";export{g as DatePicker};
|
|
1
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import{c as a}from"../../../clsx-BeLtu-UY.js";import{startOfDay as r}from"date-fns";import{forwardRef as n,useState as o,useRef as l,useCallback as s}from"react";import{flushSync as i}from"react-dom";import{CalendarIcon as u}from"../icon/icons/CalendarIcon.js";import{IconButton as d}from"../icon-button/IconButton.js";import{InputGroup as p}from"../input-group/InputGroup.js";import{Popover as c}from"../popover/Popover.js";import{BaseTextInput as m}from"../text-input/BaseTextInput.js";import{Calendar as f}from"./internal/Calendar.js";import{getInitialDate as v}from"./internal/utils.js";import{parseDateString as h,formatInput as b}from"./utils.js";import{isWithinLowerBound as k,isWithinUpperBound as D}from"./validation.js";const g=n(((n,g)=>{const{"data-testautoid":y,id:j,className:L="",label:w="Velg dato",labelProps:C,defaultValue:I,defaultShow:x=!1,value:P,disableBeforeDate:B,disableAfterDate:_,yearsToShow:E,name:O,helpLabel:T,errorLabel:N,invalid:S,density:R,days:U,months:V,monthLabel:F,yearLabel:K,placeholder:W="dd.mm.åååå",width:A="11.25rem",onChange:G,onBlur:q,onFocus:H,onKeyDown:M,action:z,showCalendarLabel:J="Åpne kalender",hideCalendarLabel:Q="Lukk kalender",supportLabelProps:X,tooltip:Y,textInputProps:Z,...$}=n;"production"!==process.env.NODE_ENV&&P&&I&&console.warn("DatePicker må enten være controlled eller uncontrolled. Hvis du bruker defaultValue og value sammen vil defaultValue bli ignorert.");const ee=h(B),te=ee?r(ee):void 0,ae=h(_),re=ae?r(ae):void 0,[ne,oe]=o(v(P,I,te,re)),[le,se]=o(null),[ie,ue]=o(x),de=l(null),pe=l(null),ce=l(null),me=l(null),fe=s((e=>{me.current=e,g&&("function"==typeof g?g(e):g.current=e)}),[me,g]),ve=s((e=>{H&&pe.current&&(pe.current.contains(e.relatedTarget)||H(e,ne,{error:le,value:e.target.value}))}),[H,ne,le]),he=s((e=>{q&&q(e,ne,{error:le,value:e.target.value})}),[q,ne,le]),be=s((e=>{"Escape"===e.key&&(ue(!1),e.preventDefault(),e.stopPropagation()),null!=z&&z.onKeyDown&&z.onKeyDown(e)}),[ue,z]),ke=s((e=>{let t=null,a=null;if(e.target.value){const r=h(e.target.value);r?te&&!k(r,te)?a="OUTSIDE_LOWER_BOUND":re&&!D(r,re)?a="OUTSIDE_UPPER_BOUND":ue(!1):a="WRONG_FORMAT",t=r||null}se(a),oe(t),G&&G(e,t,{error:a,value:e.target.value})}),[G,se,oe,ue,te,re]),De=s((e=>{i((()=>{ue(!ie)}));const t=de.current,a=t&&t.querySelector('[aria-pressed="true"]');window.requestAnimationFrame((()=>a&&a.focus())),null!=z&&z.onClick&&z.onClick(e)}),[ue,ie,z,de]),ge=s((({date:e})=>{if(ue(!1),oe(e),me.current){const t=me.current;t.value=b(e);const a=document.createEvent("HTMLEvents");a.initEvent("input",!0,!1),t.dispatchEvent(a),t.focus(),G&&G(a,e,{error:null,value:t.value})}}),[ue,oe,G]),ye=s((e=>{e.preventDefault(),ue(!1),ce.current&&ce.current.focus()}),[ue]);return e(p,{id:j,className:a("jkl-datepicker",L,{"jkl-datepicker--open":ie}),...$,ref:pe,label:w,labelProps:C,density:R,helpLabel:T,errorLabel:N,supportLabelProps:X,tooltip:Y,render:a=>e(m,{ref:fe,"data-testid":"jkl-datepicker__input","data-testautoid":y,className:"jkl-datepicker__input",name:O,defaultValue:I,density:R,value:P,type:"text",placeholder:W,width:A,onFocus:ve,onBlur:he,onChange:ke,actionButton:t(c,{positionReference:me,open:ie,onOpenChange:()=>ue(!ie),offset:8,children:[e(c.Trigger,{...z,"data-testid":"jkl-datepicker__trigger",className:"jkl-text-input-action-button",title:ie?Q:J,tabIndex:0,onClick:De,onKeyDown:be,asChild:!0,children:e(d,{children:e(u,{})})}),e(c.Content,{initialFocus:-1,padding:24,children:e(f,{ref:de,density:R,date:ne,minDate:te,maxDate:re,days:U,months:V,monthLabel:F,yearLabel:K,yearsToShow:E,onDateSelected:ge,onTabOutside:ye})})]}),...Z,...a,"aria-invalid":S||!!N})})}));g.displayName="DatePicker";export{g as DatePicker};
|
|
2
2
|
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","sources":["../../../../src/components/datepicker/DatePicker.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { startOfDay } from \"date-fns\";\nimport React, {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n forwardRef,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { CalendarIcon } from \"../icon/icons/CalendarIcon.js\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport { InputGroup } from \"../input-group/InputGroup.js\";\nimport Popover from \"../popover/Popover.js\";\nimport { BaseTextInput } from \"../text-input/BaseTextInput.js\";\nimport { Calendar } from \"./internal/Calendar.js\";\nimport { DateInfo, getInitialDate } from \"./internal/utils.js\";\nimport { DatePickerProps, DateValidationError } from \"./types.js\";\nimport { formatInput, parseDateString } from \"./utils.js\";\nimport { isWithinLowerBound, isWithinUpperBound } from \"./validation.js\";\n\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(\n (props, forwardedInputRef) => {\n const {\n \"data-testautoid\": testAutoId,\n id,\n className = \"\",\n label = \"Velg dato\",\n labelProps,\n defaultValue,\n defaultShow = false,\n value,\n disableBeforeDate: disableBefore,\n disableAfterDate: disableAfter,\n yearsToShow,\n name,\n helpLabel,\n errorLabel,\n invalid,\n density,\n days,\n months,\n monthLabel,\n yearLabel,\n placeholder = \"dd.mm.åååå\",\n width = \"11.25rem\",\n onChange,\n onBlur,\n onFocus,\n onKeyDown,\n action,\n showCalendarLabel = \"Åpne kalender\",\n hideCalendarLabel = \"Lukk kalender\",\n supportLabelProps,\n tooltip,\n textInputProps,\n ...rest\n } = props;\n\n if (process.env.NODE_ENV !== \"production\" && value && defaultValue) {\n console.warn(\n \"DatePicker må enten være controlled eller uncontrolled. Hvis du bruker defaultValue og value sammen vil defaultValue bli ignorert.\",\n );\n }\n /// Input state\n\n const disableBeforeDate = parseDateString(disableBefore);\n const minDate = disableBeforeDate\n ? startOfDay(disableBeforeDate)\n : undefined;\n const disableAfterDate = parseDateString(disableAfter);\n const maxDate = disableAfterDate\n ? startOfDay(disableAfterDate)\n : undefined;\n\n const [date, setDate] = useState(\n getInitialDate(value, defaultValue, minDate, maxDate),\n );\n const [error, setError] = useState<DateValidationError | null>(null);\n\n /// Calendar state\n\n const [showCalendar, setShowCalendar] = useState(defaultShow);\n\n const calendarRef = useRef<HTMLDivElement>(null);\n const datepickerRef = useRef<HTMLDivElement>(null);\n\n /// Input events\n\n const iconButtonRef = useRef<HTMLButtonElement | null>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n // Hjelper for å gjøre det enklere å både forwarde refen men også bruke den selv internt\n const unifiedInputRef = useCallback(\n (instance: HTMLInputElement | null) => {\n inputRef.current = instance;\n if (forwardedInputRef) {\n if (typeof forwardedInputRef === \"function\") {\n forwardedInputRef(instance);\n } else {\n forwardedInputRef.current = instance;\n }\n }\n },\n [inputRef, forwardedInputRef],\n );\n\n const handleFocus = useCallback(\n (e: FocusEvent<HTMLInputElement>) => {\n if (!onFocus || !datepickerRef.current) {\n return;\n }\n\n const nextFocusIsInside = datepickerRef.current.contains(\n e.relatedTarget as Node,\n );\n if (!nextFocusIsInside) {\n onFocus(e, date, { error, value: e.target.value });\n }\n },\n [onFocus, date, error],\n );\n\n const handleBlur = useCallback(\n (e: FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n onBlur(e, date, { error, value: e.target.value });\n }\n },\n [onBlur, date, error],\n );\n\n const handleKeyDownAction = useCallback(\n (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Escape\") {\n setShowCalendar(false);\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (action?.onKeyDown) {\n action.onKeyDown(e);\n }\n },\n [setShowCalendar, action],\n );\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n let nextDate: Date | null = null;\n let nextError: DateValidationError | null = null;\n\n if (e.target.value) {\n const val = parseDateString(e.target.value);\n if (!val) {\n nextError = \"WRONG_FORMAT\";\n } else if (minDate && !isWithinLowerBound(val, minDate)) {\n nextError = \"OUTSIDE_LOWER_BOUND\";\n } else if (maxDate && !isWithinUpperBound(val, maxDate)) {\n nextError = \"OUTSIDE_UPPER_BOUND\";\n } else {\n setShowCalendar(false);\n }\n nextDate = val || null;\n }\n\n setError(nextError);\n setDate(nextDate);\n\n if (onChange) {\n onChange(e, nextDate, {\n error: nextError,\n value: e.target.value,\n });\n }\n },\n [onChange, setError, setDate, setShowCalendar, minDate, maxDate],\n );\n\n /// Calendar events\n\n const clickCalendar = useCallback(\n (e: MouseEvent<HTMLButtonElement>) => {\n flushSync(() => {\n setShowCalendar(!showCalendar);\n });\n\n const calendarEl = calendarRef.current;\n const button =\n calendarEl &&\n (calendarEl.querySelector(\n '[aria-pressed=\"true\"]',\n ) as HTMLButtonElement);\n // Make sure the popover-modal is correctly positioned before focusing a button\n // so we avoid accidentally scrolling to the top of the page\n window.requestAnimationFrame(() => button && button.focus());\n\n if (action?.onClick) {\n action.onClick(e);\n }\n },\n [setShowCalendar, showCalendar, action, calendarRef],\n );\n\n const handleClickCalendarDay = useCallback(\n ({ date }: DateInfo) => {\n setShowCalendar(false);\n setDate(date);\n\n if (inputRef.current) {\n const node = inputRef.current;\n\n node.value = formatInput(date);\n\n // Simulér et change-event så APIet blir så likt som mulig en endring av inputfeltet\n const event = document.createEvent(\"HTMLEvents\");\n event.initEvent(\"input\", true, false);\n node.dispatchEvent(event);\n\n node.focus();\n\n if (onChange) {\n // Det er ikke helt sant at dette er et React.SyntheticEvent, men it's fine – probably?\n // Den har tingene man kan forvente, men hvis du gjør serdeles fancy ting med events\n // så kan det hende du må utvide denne for å dekke behovet ditt.\n onChange(\n event as unknown as ChangeEvent<HTMLInputElement>,\n date,\n {\n error: null,\n value: node.value,\n },\n );\n }\n }\n },\n [setShowCalendar, setDate, onChange],\n );\n\n const handleTabOutsideCalendar = useCallback(\n (e: KeyboardEvent) => {\n e.preventDefault();\n setShowCalendar(false);\n iconButtonRef.current && iconButtonRef.current.focus();\n },\n [setShowCalendar],\n );\n\n return (\n <InputGroup\n id={id}\n className={clsx(\"jkl-datepicker\", className, {\n \"jkl-datepicker--open\": showCalendar,\n })}\n {...rest}\n ref={datepickerRef}\n label={label}\n labelProps={labelProps}\n density={density}\n helpLabel={helpLabel}\n errorLabel={errorLabel}\n supportLabelProps={supportLabelProps}\n tooltip={tooltip}\n render={(inputProps) => (\n <BaseTextInput\n ref={unifiedInputRef}\n data-testid=\"jkl-datepicker__input\"\n data-testautoid={testAutoId}\n className=\"jkl-datepicker__input\"\n name={name}\n defaultValue={defaultValue}\n density={density}\n value={value}\n type=\"text\"\n placeholder={placeholder}\n width={width}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n actionButton={\n <Popover\n positionReference={inputRef}\n open={showCalendar}\n onOpenChange={() =>\n setShowCalendar(!showCalendar)\n }\n offset={8}\n >\n <Popover.Trigger\n {...action}\n data-testid=\"jkl-datepicker__trigger\"\n className=\"jkl-text-input-action-button\"\n title={\n showCalendar\n ? hideCalendarLabel\n : showCalendarLabel\n }\n tabIndex={0}\n onClick={clickCalendar}\n onKeyDown={handleKeyDownAction}\n asChild\n >\n <IconButton>\n <CalendarIcon />\n </IconButton>\n </Popover.Trigger>\n <Popover.Content initialFocus={-1} padding={24}>\n <Calendar\n ref={calendarRef}\n density={density}\n date={date}\n minDate={minDate}\n maxDate={maxDate}\n days={days}\n months={months}\n monthLabel={monthLabel}\n yearLabel={yearLabel}\n yearsToShow={yearsToShow}\n onDateSelected={handleClickCalendarDay}\n onTabOutside={handleTabOutsideCalendar}\n />\n </Popover.Content>\n </Popover>\n }\n {...textInputProps}\n {...inputProps}\n />\n )}\n />\n );\n },\n);\n\nDatePicker.displayName = \"DatePicker\";\n"],"names":["DatePicker","forwardRef","props","forwardedInputRef","testAutoId","id","className","label","labelProps","defaultValue","defaultShow","value","disableBeforeDate","disableBefore","disableAfterDate","disableAfter","yearsToShow","name","helpLabel","errorLabel","invalid","density","days","months","monthLabel","yearLabel","placeholder","width","onChange","onBlur","onFocus","onKeyDown","action","showCalendarLabel","hideCalendarLabel","supportLabelProps","tooltip","textInputProps","rest","process","env","NODE_ENV","console","warn","parseDateString","minDate","startOfDay","maxDate","date","setDate","useState","getInitialDate","error","setError","showCalendar","setShowCalendar","calendarRef","useRef","datepickerRef","iconButtonRef","inputRef","unifiedInputRef","useCallback","instance","current","handleFocus","e","contains","relatedTarget","target","handleBlur","handleKeyDownAction","key","preventDefault","stopPropagation","handleChange","nextDate","nextError","val","isWithinLowerBound","isWithinUpperBound","clickCalendar","flushSync","calendarEl","button","querySelector","window","requestAnimationFrame","focus","onClick","handleClickCalendarDay","node","formatInput","event","document","createEvent","initEvent","dispatchEvent","handleTabOutsideCalendar","jsx","InputGroup","clsx","ref","render","inputProps","BaseTextInput","type","actionButton","jsxs","Popover","positionReference","open","onOpenChange","offset","children","Trigger","title","tabIndex","asChild","IconButton","CalendarIcon","Content","initialFocus","padding","Calendar","onDateSelected","onTabOutside","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatePicker.js","sources":["../../../../src/components/datepicker/DatePicker.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { startOfDay } from \"date-fns\";\nimport React, {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n forwardRef,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { CalendarIcon } from \"../icon/icons/CalendarIcon.js\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport { InputGroup } from \"../input-group/InputGroup.js\";\nimport Popover from \"../popover/Popover.js\";\nimport { BaseTextInput } from \"../text-input/BaseTextInput.js\";\nimport { Calendar } from \"./internal/Calendar.js\";\nimport { DateInfo, getInitialDate } from \"./internal/utils.js\";\nimport { DatePickerProps, DateValidationError } from \"./types.js\";\nimport { formatInput, parseDateString } from \"./utils.js\";\nimport { isWithinLowerBound, isWithinUpperBound } from \"./validation.js\";\n\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(\n (props, forwardedInputRef) => {\n const {\n \"data-testautoid\": testAutoId,\n id,\n className = \"\",\n label = \"Velg dato\",\n labelProps,\n defaultValue,\n defaultShow = false,\n value,\n disableBeforeDate: disableBefore,\n disableAfterDate: disableAfter,\n yearsToShow,\n name,\n helpLabel,\n errorLabel,\n invalid,\n density,\n days,\n months,\n monthLabel,\n yearLabel,\n placeholder = \"dd.mm.åååå\",\n width = \"11.25rem\",\n onChange,\n onBlur,\n onFocus,\n onKeyDown,\n action,\n showCalendarLabel = \"Åpne kalender\",\n hideCalendarLabel = \"Lukk kalender\",\n supportLabelProps,\n tooltip,\n textInputProps,\n ...rest\n } = props;\n\n if (process.env.NODE_ENV !== \"production\" && value && defaultValue) {\n console.warn(\n \"DatePicker må enten være controlled eller uncontrolled. Hvis du bruker defaultValue og value sammen vil defaultValue bli ignorert.\",\n );\n }\n /// Input state\n\n const disableBeforeDate = parseDateString(disableBefore);\n const minDate = disableBeforeDate\n ? startOfDay(disableBeforeDate)\n : undefined;\n const disableAfterDate = parseDateString(disableAfter);\n const maxDate = disableAfterDate\n ? startOfDay(disableAfterDate)\n : undefined;\n\n const [date, setDate] = useState(\n getInitialDate(value, defaultValue, minDate, maxDate),\n );\n const [error, setError] = useState<DateValidationError | null>(null);\n\n /// Calendar state\n\n const [showCalendar, setShowCalendar] = useState(defaultShow);\n\n const calendarRef = useRef<HTMLDivElement>(null);\n const datepickerRef = useRef<HTMLDivElement>(null);\n\n /// Input events\n\n const iconButtonRef = useRef<HTMLButtonElement | null>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n // Hjelper for å gjøre det enklere å både forwarde refen men også bruke den selv internt\n const unifiedInputRef = useCallback(\n (instance: HTMLInputElement | null) => {\n inputRef.current = instance;\n if (forwardedInputRef) {\n if (typeof forwardedInputRef === \"function\") {\n forwardedInputRef(instance);\n } else {\n forwardedInputRef.current = instance;\n }\n }\n },\n [inputRef, forwardedInputRef],\n );\n\n const handleFocus = useCallback(\n (e: FocusEvent<HTMLInputElement>) => {\n if (!onFocus || !datepickerRef.current) {\n return;\n }\n\n const nextFocusIsInside = datepickerRef.current.contains(\n e.relatedTarget as Node,\n );\n if (!nextFocusIsInside) {\n onFocus(e, date, { error, value: e.target.value });\n }\n },\n [onFocus, date, error],\n );\n\n const handleBlur = useCallback(\n (e: FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n onBlur(e, date, { error, value: e.target.value });\n }\n },\n [onBlur, date, error],\n );\n\n const handleKeyDownAction = useCallback(\n (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Escape\") {\n setShowCalendar(false);\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (action?.onKeyDown) {\n action.onKeyDown(e);\n }\n },\n [setShowCalendar, action],\n );\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n let nextDate: Date | null = null;\n let nextError: DateValidationError | null = null;\n\n if (e.target.value) {\n const val = parseDateString(e.target.value);\n if (!val) {\n nextError = \"WRONG_FORMAT\";\n } else if (minDate && !isWithinLowerBound(val, minDate)) {\n nextError = \"OUTSIDE_LOWER_BOUND\";\n } else if (maxDate && !isWithinUpperBound(val, maxDate)) {\n nextError = \"OUTSIDE_UPPER_BOUND\";\n } else {\n setShowCalendar(false);\n }\n nextDate = val || null;\n }\n\n setError(nextError);\n setDate(nextDate);\n\n if (onChange) {\n onChange(e, nextDate, {\n error: nextError,\n value: e.target.value,\n });\n }\n },\n [onChange, setError, setDate, setShowCalendar, minDate, maxDate],\n );\n\n /// Calendar events\n\n const clickCalendar = useCallback(\n (e: MouseEvent<HTMLButtonElement>) => {\n flushSync(() => {\n setShowCalendar(!showCalendar);\n });\n\n const calendarEl = calendarRef.current;\n const button =\n calendarEl &&\n (calendarEl.querySelector(\n '[aria-pressed=\"true\"]',\n ) as HTMLButtonElement);\n // Make sure the popover-modal is correctly positioned before focusing a button\n // so we avoid accidentally scrolling to the top of the page\n window.requestAnimationFrame(() => button && button.focus());\n\n if (action?.onClick) {\n action.onClick(e);\n }\n },\n [setShowCalendar, showCalendar, action, calendarRef],\n );\n\n const handleClickCalendarDay = useCallback(\n ({ date }: DateInfo) => {\n setShowCalendar(false);\n setDate(date);\n\n if (inputRef.current) {\n const node = inputRef.current;\n\n node.value = formatInput(date);\n\n // Simulér et change-event så APIet blir så likt som mulig en endring av inputfeltet\n const event = document.createEvent(\"HTMLEvents\");\n event.initEvent(\"input\", true, false);\n node.dispatchEvent(event);\n\n node.focus();\n\n if (onChange) {\n // Det er ikke helt sant at dette er et React.SyntheticEvent, men it's fine – probably?\n // Den har tingene man kan forvente, men hvis du gjør serdeles fancy ting med events\n // så kan det hende du må utvide denne for å dekke behovet ditt.\n onChange(\n event as unknown as ChangeEvent<HTMLInputElement>,\n date,\n {\n error: null,\n value: node.value,\n },\n );\n }\n }\n },\n [setShowCalendar, setDate, onChange],\n );\n\n const handleTabOutsideCalendar = useCallback(\n (e: KeyboardEvent) => {\n e.preventDefault();\n setShowCalendar(false);\n iconButtonRef.current && iconButtonRef.current.focus();\n },\n [setShowCalendar],\n );\n\n return (\n <InputGroup\n id={id}\n className={clsx(\"jkl-datepicker\", className, {\n \"jkl-datepicker--open\": showCalendar,\n })}\n {...rest}\n ref={datepickerRef}\n label={label}\n labelProps={labelProps}\n density={density}\n helpLabel={helpLabel}\n errorLabel={errorLabel}\n supportLabelProps={supportLabelProps}\n tooltip={tooltip}\n render={(inputProps) => (\n <BaseTextInput\n ref={unifiedInputRef}\n data-testid=\"jkl-datepicker__input\"\n data-testautoid={testAutoId}\n className=\"jkl-datepicker__input\"\n name={name}\n defaultValue={defaultValue}\n density={density}\n value={value}\n type=\"text\"\n placeholder={placeholder}\n width={width}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n actionButton={\n <Popover\n positionReference={inputRef}\n open={showCalendar}\n onOpenChange={() =>\n setShowCalendar(!showCalendar)\n }\n offset={8}\n >\n <Popover.Trigger\n {...action}\n data-testid=\"jkl-datepicker__trigger\"\n className=\"jkl-text-input-action-button\"\n title={\n showCalendar\n ? hideCalendarLabel\n : showCalendarLabel\n }\n tabIndex={0}\n onClick={clickCalendar}\n onKeyDown={handleKeyDownAction}\n asChild\n >\n <IconButton>\n <CalendarIcon />\n </IconButton>\n </Popover.Trigger>\n <Popover.Content initialFocus={-1} padding={24}>\n <Calendar\n ref={calendarRef}\n density={density}\n date={date}\n minDate={minDate}\n maxDate={maxDate}\n days={days}\n months={months}\n monthLabel={monthLabel}\n yearLabel={yearLabel}\n yearsToShow={yearsToShow}\n onDateSelected={handleClickCalendarDay}\n onTabOutside={handleTabOutsideCalendar}\n />\n </Popover.Content>\n </Popover>\n }\n {...textInputProps}\n {...inputProps}\n aria-invalid={invalid || !!errorLabel}\n />\n )}\n />\n );\n },\n);\n\nDatePicker.displayName = \"DatePicker\";\n"],"names":["DatePicker","forwardRef","props","forwardedInputRef","testAutoId","id","className","label","labelProps","defaultValue","defaultShow","value","disableBeforeDate","disableBefore","disableAfterDate","disableAfter","yearsToShow","name","helpLabel","errorLabel","invalid","density","days","months","monthLabel","yearLabel","placeholder","width","onChange","onBlur","onFocus","onKeyDown","action","showCalendarLabel","hideCalendarLabel","supportLabelProps","tooltip","textInputProps","rest","process","env","NODE_ENV","console","warn","parseDateString","minDate","startOfDay","maxDate","date","setDate","useState","getInitialDate","error","setError","showCalendar","setShowCalendar","calendarRef","useRef","datepickerRef","iconButtonRef","inputRef","unifiedInputRef","useCallback","instance","current","handleFocus","e","contains","relatedTarget","target","handleBlur","handleKeyDownAction","key","preventDefault","stopPropagation","handleChange","nextDate","nextError","val","isWithinLowerBound","isWithinUpperBound","clickCalendar","flushSync","calendarEl","button","querySelector","window","requestAnimationFrame","focus","onClick","handleClickCalendarDay","node","formatInput","event","document","createEvent","initEvent","dispatchEvent","handleTabOutsideCalendar","jsx","InputGroup","clsx","ref","render","inputProps","BaseTextInput","type","actionButton","jsxs","Popover","positionReference","open","onOpenChange","offset","children","Trigger","title","tabIndex","asChild","IconButton","CalendarIcon","Content","initialFocus","padding","Calendar","onDateSelected","onTabOutside","displayName"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
declare const meta: {
|
|
3
|
+
title: string;
|
|
4
|
+
component: import('react').ForwardRefExoticComponent<import('../types.js').DatePickerProps & import('react').RefAttributes<HTMLInputElement>>;
|
|
5
|
+
parameters: {
|
|
6
|
+
layout: string;
|
|
7
|
+
};
|
|
8
|
+
tags: string[];
|
|
9
|
+
};
|
|
10
|
+
export default meta;
|
|
11
|
+
type Story = StoryObj<typeof meta>;
|
|
12
|
+
export declare const DatePicker: Story;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Datepicker.stories.js","sources":["../../../../../src/components/datepicker/stories/Datepicker.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { DatePicker as DatePickerComponent } from \"../DatePicker.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/DatePicker\",\n component: DatePickerComponent,\n parameters: {\n layout: \"padded\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof DatePickerComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const DatePicker: Story = {\n args: {},\n};\n"],"names":["meta","title","component","DatePickerComponent","parameters","layout","tags","DatePicker","args"],"mappings":"8CAIA,MAAMA,EAAO,CACTC,MAAO,yBACPC,UAAWC,EACXC,WAAY,CACRC,OAAQ,UAEZC,KAAM,CAAC,aAMEC,EAAoB,CAC7BC,KAAM,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as e,jsx as r}from"react/jsx-runtime";import{DescriptionList as i,DescriptionTerm as s,DescriptionDetail as t}from"../DescriptionList.js";const n={title:"Komponenter/DescriptionList",component:i,parameters:{layout:"centered"},tags:["autodocs"]},o={name:"DescriptionList",render:()=>e(i,{children:[r(s,{children:"Dekning"}),r(t,{children:"Kasko"}),r(s,{children:"Egenandel"}),r(t,{children:"2 000 kr for glass"}),r(t,{children:"6 000 kr for øvrige skader"}),r(s,{children:"Sjåfør under 23 år"}),r(t,{children:"Nei"})]})};export{o as DescriptionListStory,n as default};
|
|
2
|
+
//# sourceMappingURL=DescriptionList.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DescriptionList.stories.js","sources":["../../../../../src/components/description-list/stories/DescriptionList.stories.tsx"],"sourcesContent":["import { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport {\n DescriptionDetail as DD,\n DescriptionList,\n DescriptionTerm as DT,\n} from \"../DescriptionList.js\";\nimport \"../styles/_index.scss\";\n\nconst meta: Meta = {\n title: \"Komponenter/DescriptionList\",\n component: DescriptionList,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof DescriptionList>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const DescriptionListStory: Story = {\n name: \"DescriptionList\",\n render: () => (\n <DescriptionList>\n <DT>Dekning</DT>\n <DD>Kasko</DD>\n\n <DT>Egenandel</DT>\n <DD>2 000 kr for glass</DD>\n <DD>6 000 kr for øvrige skader</DD>\n\n <DT>Sjåfør under 23 år</DT>\n <DD>Nei</DD>\n </DescriptionList>\n ),\n};\n"],"names":["meta","title","component","DescriptionList","parameters","layout","tags","DescriptionListStory","name","render","jsxs","children","jsx","DT","DD"],"mappings":"sJASA,MAAMA,EAAa,CACfC,MAAO,8BACPC,UAAWC,EACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAOEC,EAA8B,CACvCC,KAAM,kBACNC,OAAQ,IACJC,EAACP,EACG,CAAAQ,SAAA,CAAAC,EAACC,GAAGF,SAAO,YACXC,EAACE,GAAGH,SAAK,UAETC,EAACC,GAAGF,SAAS,cACbC,EAACE,GAAGH,SAAkB,uBACtBC,EAACE,GAAGH,SAA0B,+BAE9BC,EAACC,GAAGF,SAAkB,uBACtBC,EAACE,GAAGH,SAAG"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import"../../icon/Icon.js";import"../../icon/icons/animated/ArrowVerticalAnimated.js";import"../../icon/icons/animated/ArrowHorizontalAnimated.js";import"../../icon/icons/animated/PlusRemoveAnimated.js";import"../../icon/icons/ArrowDownIcon.js";import"../../icon/icons/ArrowLeftIcon.js";import"../../icon/icons/ArrowNorthEastIcon.js";import"../../icon/icons/ArrowRightIcon.js";import"../../icon/icons/ArrowUpIcon.js";import"../../icon/icons/CalendarIcon.js";import"../../icon/icons/CheckIcon.js";import"../../icon/icons/ChevronDownIcon.js";import"../../icon/icons/ChevronLeftIcon.js";import"../../icon/icons/ChevronRightIcon.js";import"../../icon/icons/ChevronUpIcon.js";import"../../icon/icons/CloseIcon.js";import"../../icon/icons/CopyIcon.js";import"../../icon/icons/DotsIcon.js";import"../../icon/icons/DragIcon.js";import"../../icon/icons/ErrorIcon.js";import{GreenCheckIcon as n}from"../../icon/icons/GreenCheckIcon.js";import"../../icon/icons/HamburgerIcon.js";import"../../icon/icons/InfoIcon.js";import"../../icon/icons/LinkIcon.js";import"../../icon/icons/MinusIcon.js";import"../../icon/icons/OpenInNewIcon.js";import"../../icon/icons/PenIcon.js";import"../../icon/icons/PlusIcon.js";import"../../icon/icons/QuestionIcon.js";import"../../icon/icons/RedCrossIcon.js";import"../../icon/icons/SearchIcon.js";import"../../icon/icons/SuccessIcon.js";import"../../icon/icons/ThumbDownIcon.js";import"../../icon/icons/ThumbUpIcon.js";import"../../icon/icons/TrashCanIcon.js";import"../../icon/icons/WarningIcon.js";import{ExpandablePanel as i}from"../ExpandablePanel.js";import{Expander as c}from"../Expander.js";/* empty css */const s={title:"Komponenter/ExpandablePanel/Expander",component:i,parameters:{layout:"padded"},tags:["autodocs"]},r={name:"Expander",args:{icon:!0,flipDirection:!1},render:({icon:i,...s})=>o(c,{icon:i?o(n,{}):void 0,...s,children:"Når er det vi faktisk er åpne?"})};export{r as ExpanderStory,s as default};
|
|
2
|
+
//# sourceMappingURL=Expander.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Expander.stories.js","sources":["../../../../../src/components/expander/stories/Expander.stories.tsx"],"sourcesContent":["import { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport { GreenCheckIcon } from \"../../icon/index.js\";\nimport { ExpandablePanel } from \"../ExpandablePanel.js\";\nimport { Expander } from \"../Expander.js\";\nimport \"../styles/_index.scss\";\n\nconst meta: Meta = {\n title: \"Komponenter/ExpandablePanel/Expander\",\n component: ExpandablePanel,\n parameters: {\n layout: \"padded\",\n },\n tags: [\"autodocs\"],\n};\n\nexport default meta;\n\ntype StoryExpander = StoryObj<typeof Expander>;\n\nexport const ExpanderStory: StoryExpander = {\n name: \"Expander\",\n args: {\n icon: true,\n flipDirection: false,\n },\n render: ({ icon, ...props }) => (\n <Expander icon={icon ? <GreenCheckIcon /> : undefined} {...props}>\n Når er det vi faktisk er åpne?\n </Expander>\n ),\n};\n"],"names":["meta","title","component","ExpandablePanel","parameters","layout","tags","ExpanderStory","name","args","icon","flipDirection","render","props","jsx","Expander","GreenCheckIcon","children"],"mappings":"gqDAOA,MAAMA,EAAa,CACfC,MAAO,uCACPC,UAAWC,EACXC,WAAY,CACRC,OAAQ,UAEZC,KAAM,CAAC,aAOEC,EAA+B,CACxCC,KAAM,WACNC,KAAM,CACFC,MAAM,EACNC,eAAe,GAEnBC,OAAQ,EAAGF,KAAAA,KAASG,KAChBC,EAACC,EAAS,CAAAL,KAAMA,EAAQI,EAAAE,EAAA,CAAe,QAAK,KAAeH,EAAOI,SAElE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
declare const meta: Meta;
|
|
3
|
+
export default meta;
|
|
4
|
+
type StoryExpanderPanel = StoryObj<{
|
|
5
|
+
icon?: boolean;
|
|
6
|
+
flipDirection?: boolean;
|
|
7
|
+
variant: "stroke" | "fill";
|
|
8
|
+
}>;
|
|
9
|
+
export declare const ExpandablePanelStory: StoryExpanderPanel;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as o,jsxs as n}from"react/jsx-runtime";import{Flex as i}from"../../flex/Flex.js";import"../../icon/Icon.js";import"../../icon/icons/animated/ArrowVerticalAnimated.js";import"../../icon/icons/animated/ArrowHorizontalAnimated.js";import"../../icon/icons/animated/PlusRemoveAnimated.js";import"../../icon/icons/ArrowDownIcon.js";import"../../icon/icons/ArrowLeftIcon.js";import"../../icon/icons/ArrowNorthEastIcon.js";import"../../icon/icons/ArrowRightIcon.js";import"../../icon/icons/ArrowUpIcon.js";import"../../icon/icons/CalendarIcon.js";import"../../icon/icons/CheckIcon.js";import"../../icon/icons/ChevronDownIcon.js";import"../../icon/icons/ChevronLeftIcon.js";import"../../icon/icons/ChevronRightIcon.js";import"../../icon/icons/ChevronUpIcon.js";import"../../icon/icons/CloseIcon.js";import"../../icon/icons/CopyIcon.js";import"../../icon/icons/DotsIcon.js";import"../../icon/icons/DragIcon.js";import"../../icon/icons/ErrorIcon.js";import{GreenCheckIcon as c}from"../../icon/icons/GreenCheckIcon.js";import"../../icon/icons/HamburgerIcon.js";import"../../icon/icons/InfoIcon.js";import"../../icon/icons/LinkIcon.js";import"../../icon/icons/MinusIcon.js";import"../../icon/icons/OpenInNewIcon.js";import"../../icon/icons/PenIcon.js";import"../../icon/icons/PlusIcon.js";import"../../icon/icons/QuestionIcon.js";import"../../icon/icons/RedCrossIcon.js";import"../../icon/icons/SearchIcon.js";import"../../icon/icons/SuccessIcon.js";import"../../icon/icons/ThumbDownIcon.js";import"../../icon/icons/ThumbUpIcon.js";import"../../icon/icons/TrashCanIcon.js";import"../../icon/icons/WarningIcon.js";import{ExpandablePanel as r}from"../ExpandablePanel.js";import{Expander as s}from"../Expander.js";/* empty css */const e={title:"Komponenter/ExpandablePanel",component:r,parameters:{layout:"padded"},tags:["autodocs"],argTypes:{variant:{control:"select",options:["stroke","fill"]}}},t={name:"ExpandablePanel",args:{variant:"fill",icon:!0,flipDirection:!1},render:({icon:e,flipDirection:t,...a})=>o(i,{style:{width:"100%"},direction:"column",gap:4,children:[...Array(3)].map(((i,p)=>n(r,{...a,children:[o(s,{icon:e?o(c,{}):void 0,expandDirection:t?"up":void 0,children:"Når er det vi faktisk er åpne?"}),o(r.Content,{children:"Velkommen innom når vi faktisk har kaffe! Vi er åpne mandag til fredag fra kl. 09:00 til 18:00. Lørdag kan du besøke oss fra 10:00 til 16:00 (vi liker en rolig start på lørdagen). Søndager hviler vi – og det burde du også!"})]},p)))})};export{t as ExpandablePanelStory,e as default};
|
|
2
|
+
//# sourceMappingURL=ExpanderPanel.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpanderPanel.stories.js","sources":["../../../../../src/components/expander/stories/ExpanderPanel.stories.tsx"],"sourcesContent":["import { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport { Flex } from \"../../flex/Flex.js\";\nimport { GreenCheckIcon } from \"../../icon/index.js\";\nimport { ExpandablePanel } from \"../ExpandablePanel.js\";\nimport { Expander } from \"../Expander.js\";\nimport \"../styles/_index.scss\";\n\nconst meta: Meta = {\n title: \"Komponenter/ExpandablePanel\",\n component: ExpandablePanel,\n parameters: {\n layout: \"padded\",\n },\n tags: [\"autodocs\"],\n argTypes: {\n variant: { control: \"select\", options: [\"stroke\", \"fill\"] },\n },\n};\n\nexport default meta;\n\ntype StoryExpanderPanel = StoryObj<{\n icon?: boolean;\n flipDirection?: boolean;\n variant: \"stroke\" | \"fill\";\n}>;\n\nexport const ExpandablePanelStory: StoryExpanderPanel = {\n name: \"ExpandablePanel\",\n args: {\n variant: \"fill\",\n icon: true,\n flipDirection: false,\n },\n render: ({ icon, flipDirection, ...props }) => (\n <Flex style={{ width: \"100%\" }} direction=\"column\" gap={4}>\n {[...Array(3)].map((_, index) => (\n <ExpandablePanel key={index} {...props}>\n <Expander\n icon={icon ? <GreenCheckIcon /> : undefined}\n expandDirection={flipDirection ? \"up\" : undefined}\n >\n Når er det vi faktisk er åpne?\n </Expander>\n <ExpandablePanel.Content>\n Velkommen innom når vi faktisk har kaffe! Vi er åpne\n mandag til fredag fra kl. 09:00 til 18:00. Lørdag kan du\n besøke oss fra 10:00 til 16:00 (vi liker en rolig start\n på lørdagen). Søndager hviler vi – og det burde du også!\n </ExpandablePanel.Content>\n </ExpandablePanel>\n ))}\n </Flex>\n ),\n};\n"],"names":["meta","title","component","ExpandablePanel","parameters","layout","tags","argTypes","variant","control","options","ExpandablePanelStory","name","args","icon","flipDirection","render","props","jsx","Flex","style","width","direction","gap","children","Array","map","_","index","jsxs","Expander","GreenCheckIcon","expandDirection","Content"],"mappings":"otDAQA,MAAMA,EAAa,CACfC,MAAO,8BACPC,UAAWC,EACXC,WAAY,CACRC,OAAQ,UAEZC,KAAM,CAAC,YACPC,SAAU,CACNC,QAAS,CAAEC,QAAS,SAAUC,QAAS,CAAC,SAAU,WAY7CC,EAA2C,CACpDC,KAAM,kBACNC,KAAM,CACFL,QAAS,OACTM,MAAM,EACNC,eAAe,GAEnBC,OAAQ,EAAGF,KAAAA,EAAMC,cAAAA,KAAkBE,KAC/BC,EAACC,EAAK,CAAAC,MAAO,CAAEC,MAAO,QAAUC,UAAU,SAASC,IAAK,EACnDC,SAAA,IAAIC,MAAM,IAAIC,KAAI,CAACC,EAAGC,IAClBC,EAAA1B,EAAA,IAAgCc,EAC7BO,SAAA,CAAAN,EAACY,EAAA,CACGhB,KAAMA,EAAQI,EAAAa,EAAA,CAAe,QAAK,EAClCC,gBAAiBjB,EAAgB,UAAO,EAC3CS,SAAA,mCAGAN,EAAAf,EAAgB8B,QAAhB,CAAwBT,SAKzB,qOAZkBI"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: ({ className, followup, contactQuestion, counter, landmarkLabel, ...mainQuestionProps }: import('../Feedback.js').FeedbackProps) => React.ReactElement;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
tags: string[];
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
export declare const Radio: Story;
|
|
14
|
+
export declare const Smiley: Story;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{Feedback as t}from"../Feedback.js";import{defaultOptions as l}from"../questions/smileyUtils.js";const i={title:"Komponenter/Feedback",component:t,parameters:{layout:"centered"},tags:["autodocs"]},s={args:{type:"radio",label:"Hvordan opplevde du å bestille forsikring på nett?",helpLabel:"Hjelpetekst",options:[{label:"Enkelt og greit",value:"enkelt"},{label:"Midt på treet",value:"ok"},{label:"Tungvindt",value:"tungvindt"}],addOnQuestion:{label:"Er det noe mer du vil legge til?",helpLabel:"Hjelpetekst"},successMessage:{title:"Takk for tilbakemeldingen!",children:"Vi setter pris på at du tar deg tid til å gi oss tilbakemelding."},onSubmit:console.info},render:l=>e(t,{...l})},a={args:{type:"smiley",label:"Hvordan opplevde du å bestille forsikring på nett?",helpLabel:"Hjelpetekst",options:l,addOnQuestion:{label:"Er det noe mer du vil legge til?",helpLabel:"Hjelpetekst"},successMessage:{title:"Takk for tilbakemeldingen!",children:"Vi setter pris på at du tar deg tid til å gi oss tilbakemelding."},onSubmit:console.info},render:l=>e(t,{...l})};export{s as Radio,a as Smiley,i as default};
|
|
2
|
+
//# sourceMappingURL=Feedback.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Feedback.stories.js","sources":["../../../../../src/components/feedback/stories/Feedback.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport \"../styles/_index.scss\";\nimport { Feedback } from \"../Feedback.js\";\nimport { defaultOptions } from \"../questions/smileyUtils.js\";\n\nconst meta = {\n title: \"Komponenter/Feedback\",\n component: Feedback,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof Feedback>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Radio: Story = {\n args: {\n type: \"radio\",\n label: \"Hvordan opplevde du å bestille forsikring på nett?\",\n helpLabel: \"Hjelpetekst\",\n options: [\n { label: \"Enkelt og greit\", value: \"enkelt\" },\n { label: \"Midt på treet\", value: \"ok\" },\n { label: \"Tungvindt\", value: \"tungvindt\" },\n ],\n addOnQuestion: {\n label: \"Er det noe mer du vil legge til?\",\n helpLabel: \"Hjelpetekst\",\n },\n successMessage: {\n title: \"Takk for tilbakemeldingen!\",\n children:\n \"Vi setter pris på at du tar deg tid til å gi oss tilbakemelding.\",\n },\n onSubmit: console.info,\n },\n render: (args) => <Feedback {...args} />,\n};\n\nexport const Smiley: Story = {\n args: {\n type: \"smiley\",\n label: \"Hvordan opplevde du å bestille forsikring på nett?\",\n helpLabel: \"Hjelpetekst\",\n options: defaultOptions,\n addOnQuestion: {\n label: \"Er det noe mer du vil legge til?\",\n helpLabel: \"Hjelpetekst\",\n },\n successMessage: {\n title: \"Takk for tilbakemeldingen!\",\n children:\n \"Vi setter pris på at du tar deg tid til å gi oss tilbakemelding.\",\n },\n onSubmit: console.info,\n },\n render: (args) => <Feedback {...args} />,\n};\n"],"names":["meta","title","component","Feedback","parameters","layout","tags","Radio","args","type","label","helpLabel","options","value","addOnQuestion","successMessage","children","onSubmit","console","info","render","jsx","Smiley","defaultOptions"],"mappings":"+IAMA,MAAMA,EAAO,CACTC,MAAO,uBACPC,UAAWC,EACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAOEC,EAAe,CACxBC,KAAM,CACFC,KAAM,QACNC,MAAO,qDACPC,UAAW,cACXC,QAAS,CACL,CAAEF,MAAO,kBAAmBG,MAAO,UACnC,CAAEH,MAAO,gBAAiBG,MAAO,MACjC,CAAEH,MAAO,YAAaG,MAAO,cAEjCC,cAAe,CACXJ,MAAO,mCACPC,UAAW,eAEfI,eAAgB,CACZd,MAAO,6BACPe,SACI,oEAERC,SAAUC,QAAQC,MAEtBC,OAASZ,GAAUa,EAAAlB,EAAA,IAAaK,KAGvBc,EAAgB,CACzBd,KAAM,CACFC,KAAM,SACNC,MAAO,qDACPC,UAAW,cACXC,QAASW,EACTT,cAAe,CACXJ,MAAO,mCACPC,UAAW,eAEfI,eAAgB,CACZd,MAAO,6BACPe,SACI,oEAERC,SAAUC,QAAQC,MAEtBC,OAASZ,GAAUa,EAAAlB,EAAA,IAAaK"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: React.FC<import('../File.js').FileProps>;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
tags: string[];
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
export declare const FileStory: Story;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";/* empty css */import{File as i}from"../File.js";import t from"./fileBytes.js";const o={title:"Komponenter/FileInput/File",component:i,parameters:{layout:"centered"},tags:["autodocs"]},r=new window.File(t,"symbol_round_black.png",{type:"image/png"}),a={name:"File",args:{fileName:r.name,fileType:r.type,fileSize:r.size,file:r},render:t=>e(i,{...t})};export{a as FileStory,o as default};
|
|
2
|
+
//# sourceMappingURL=File.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"File.stories.js","sources":["../../../../../src/components/file-input/stories/File.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport \"../styles/_index.scss\";\nimport { File } from \"../File.js\";\nimport fileBytes from \"./fileBytes.js\";\n\nconst meta = {\n title: \"Komponenter/FileInput/File\",\n component: File,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof File>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nconst file = new window.File(fileBytes, \"symbol_round_black.png\", {\n type: \"image/png\",\n});\n\nexport const FileStory: Story = {\n name: \"File\",\n args: {\n fileName: file.name,\n fileType: file.type,\n fileSize: file.size,\n file,\n },\n render: (args) => <File {...args} />,\n};\n"],"names":["meta","title","component","File","parameters","layout","tags","file","window","fileBytes","type","FileStory","name","args","fileName","fileType","fileSize","size","render","jsx"],"mappings":"+IAMA,MAAMA,EAAO,CACTC,MAAO,6BACPC,UAAWC,EACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAOLC,EAAO,IAAIC,OAAOL,KAAKM,EAAW,yBAA0B,CAC9DC,KAAM,cAGGC,EAAmB,CAC5BC,KAAM,OACNC,KAAM,CACFC,SAAUP,EAAKK,KACfG,SAAUR,EAAKG,KACfM,SAAUT,EAAKU,KACfV,KAAAA,GAEJW,OAASL,GAAUM,EAAAhB,EAAA,IAASU"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
import { default as React } from 'react';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: React.ForwardRefExoticComponent<import('../FileInput.js').FileInputProps & React.RefAttributes<HTMLInputElement>>;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
tags: string[];
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
export declare const FileInputStory: Story;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";/* empty css */import{FileInput as t}from"../FileInput.js";const n={title:"Komponenter/FileInput",component:t,parameters:{layout:"centered"},tags:["autodocs"]},o={name:"FileInput",args:{variant:"flexible",value:[],onChange:console.info,legend:"Legg til fil"},render:n=>e(t,{...n})};export{o as FileInputStory,n as default};
|
|
2
|
+
//# sourceMappingURL=FileInput.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileInput.stories.js","sources":["../../../../../src/components/file-input/stories/FileInput.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport \"../styles/_index.scss\";\nimport { FileInput } from \"../FileInput.js\";\n\nconst meta = {\n title: \"Komponenter/FileInput\",\n component: FileInput,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof FileInput>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const FileInputStory: Story = {\n name: \"FileInput\",\n args: {\n variant: \"flexible\",\n value: [],\n onChange: console.info,\n legend: \"Legg til fil\",\n },\n render: (args) => <FileInput {...args} />,\n};\n"],"names":["meta","title","component","FileInput","parameters","layout","tags","FileInputStory","name","args","variant","value","onChange","console","info","legend","render","jsx"],"mappings":"2HAKA,MAAMA,EAAO,CACTC,MAAO,wBACPC,UAAWC,EACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAOEC,EAAwB,CACjCC,KAAM,YACNC,KAAM,CACFC,QAAS,WACTC,MAAO,GACPC,SAAUC,QAAQC,KAClBC,OAAQ,gBAEZC,OAASP,GAAUQ,EAAAd,EAAA,IAAcM"}
|