@vygruppen/spor-react 12.5.3 → 12.5.5

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/accordion/Accordion.tsx","../src/accordion/helpers.ts","../src/accordion/Expandable.tsx","../src/alert/Alert.tsx","../src/button/Button.tsx","../src/i18n/index.tsx","../src/loader/ColorInlineLoader.tsx","../src/loader/useHydrated.tsx","../src/loader/ClientOnly.tsx","../src/loader/Lottie.tsx","../src/loader/ColorSpinner.tsx","../src/loader/ContentLoader.tsx","../src/loader/DarkFullScreenLoader.tsx","../src/loader/DarkInlineLoader.tsx","../src/loader/DarkSpinner.tsx","../src/loader/LightFullScreenLoader.tsx","../src/loader/LightInlineLoader.tsx","../src/loader/LightSpinner.tsx","../src/loader/ProgressBar.tsx","../src/loader/useRotatingLabel.tsx","../src/loader/ProgressLoader.tsx","../src/theme/recipes/progress-loader.ts","../src/loader/Skeleton.tsx","../src/theme/recipes/skeleton.ts","../src/button/ButtonGroup.tsx","../src/theme/recipes/group.ts","../src/button/Clipboard.tsx","../src/typography/Badge.tsx","../src/typography/Code.tsx","../src/theme/recipes/code.ts","../src/theme/recipes/badge.ts","../src/typography/Heading.tsx","../src/typography/Text.tsx","../src/typography/index.ts","../src/button/CloseButton.tsx","../src/button/IconButton.tsx","../src/button/FloatingActionButton.tsx","../src/alert/AlertIcon.tsx","../src/alert/ExpandableAlert.tsx","../src/alert/ServiceAlert.tsx","../src/breadcrumb/Breadcrumb.tsx","../src/color-mode/color-mode.tsx","../src/datepicker/DatePicker.tsx","../src/input/Field.tsx","../src/input/FloatingLabel.tsx","../src/input/Label.tsx","../src/theme/slot-recipes/datepicker.ts","../src/theme/slot-recipes/anatomy.ts","../src/datepicker/Calendar.tsx","../src/datepicker/CalendarGrid.tsx","../src/datepicker/CalendarCell.tsx","../src/datepicker/utils.ts","../src/datepicker/CalendarHeader.tsx","../src/datepicker/CalendarNavigationButton.tsx","../src/datepicker/CalendarTriggerButton.tsx","../src/datepicker/DateField.tsx","../src/datepicker/DateTimeSegment.tsx","../src/datepicker/StyledField.tsx","../src/datepicker/DateRangePicker.tsx","../src/datepicker/RangeCalendar.tsx","../src/datepicker/TimePicker.tsx","../src/datepicker/TimeField.tsx","../src/datepicker/index.tsx","../src/dialog/Dialog.tsx","../src/dialog/Drawer.tsx","../src/image/index.tsx","../src/input/AttachedInputs.tsx","../src/theme/recipes/attached-inputs.ts","../src/input/CardSelect.tsx","../src/input/Checkbox.tsx","../src/input/CheckboxGroup.tsx","../src/input/ChoiceChip.tsx","../src/input/Combobox.tsx","../src/input/Popover.tsx","../src/input/Fieldset.tsx","../src/input/Input.tsx","../src/theme/recipes/input.ts","../src/input/ListBox.tsx","../src/input/NativeSelect.tsx","../src/theme/slot-recipes/native-select.ts","../src/input/NumericStepper.tsx","../src/theme/slot-recipes/numeric-stepper.ts","../src/input/PasswordInput.tsx","../src/input/PhoneNumberInput.tsx","../src/input/CountryCodeSelect.tsx","../src/input/Radio.tsx","../src/input/SearchInput.tsx","../src/input/Select.tsx","../src/input/Switch.tsx","../src/input/Textarea.tsx","../src/layout/PressableCard.tsx","../src/theme/recipes/pressable-card.ts","../src/util/externals.tsx","../src/util/slugify.tsx","../src/layout/RadioCard.tsx","../src/layout/Separator.tsx","../src/theme/recipes/separator.ts","../src/layout/StaticCard.tsx","../src/theme/recipes/static-card.ts","../src/layout/index.tsx","../src/linjetag/InfoTag.tsx","../src/linjetag/LineIcon.tsx","../src/linjetag/icons.tsx","../src/linjetag/TravelTag.tsx","../src/link/TextLink.tsx","../src/list/index.tsx","../src/logo/CargonetLogo.tsx","../src/logo/VyLogo.tsx","../src/logo/VyLogoPride.tsx","../src/media-controller/JumpButton.tsx","../src/media-controller/PlayPauseButton.tsx","../src/media-controller/SkipButton.tsx","../src/nudge/Nudge.tsx","../src/pagination/Pagination.tsx","../src/popover/index.tsx","../src/progress-indicator/ProgressIndicator.tsx","../src/progress-indicator/ProgressDot.tsx","../src/provider/SporProvider.tsx","../src/theme/font-faces.ts","../src/theme/brand.ts","../src/toast/toast.tsx","../src/stepper/Stepper.tsx","../src/stepper/StepperContext.tsx","../src/stepper/StepperStep.tsx","../src/tab/Tabs.tsx","../src/table/Table.tsx","../src/theme/slot-recipes/table.ts","../src/table/index.tsx","../src/theme/index.ts","../src/theme/recipes/button.ts","../src/theme/recipes/close-button.ts","../src/theme/recipes/link.ts","../src/theme/recipes/textarea.ts","../src/theme/recipes/index.ts","../src/theme/semantic-tokens/colors.ts","../src/theme/semantic-tokens/radii.ts","../src/theme/semantic-tokens/shadows.ts","../src/theme/semantic-tokens/index.ts","../src/theme/slot-recipes/accordion.ts","../src/theme/slot-recipes/alert.ts","../src/theme/slot-recipes/alert-expandable.ts","../src/theme/slot-recipes/alert-service.ts","../src/theme/slot-recipes/breadcrumb.ts","../src/theme/slot-recipes/checkbox.ts","../src/theme/slot-recipes/choice-chip.ts","../src/theme/slot-recipes/dialog.ts","../src/theme/slot-recipes/drawer.ts","../src/theme/slot-recipes/field.ts","../src/theme/slot-recipes/floating-action-button.ts","../src/theme/slot-recipes/info-tag.ts","../src/theme/slot-recipes/travel-tag.ts","../src/theme/slot-recipes/line-icon.ts","../src/theme/slot-recipes/list.ts","../src/theme/slot-recipes/listbox.ts","../src/theme/slot-recipes/media-controller-button.ts","../src/theme/slot-recipes/pagination.ts","../src/theme/slot-recipes/popover.ts","../src/theme/slot-recipes/progress-bar.ts","../src/theme/slot-recipes/progress-indicator.ts","../src/theme/slot-recipes/radio.ts","../src/theme/slot-recipes/radio-card.ts","../src/theme/slot-recipes/select.ts","../src/theme/slot-recipes/stepper.ts","../src/theme/slot-recipes/switch.ts","../src/theme/slot-recipes/tabs.ts","../src/theme/slot-recipes/toast.ts","../src/theme/slot-recipes/index.ts","../src/theme/tokens/animations.ts","../src/theme/tokens/aspect-ratios.ts","../src/theme/tokens/blurs.ts","../src/theme/tokens/borders.ts","../src/theme/tokens/colors.ts","../src/theme/tokens/cursor.ts","../src/theme/tokens/durations.ts","../src/theme/tokens/easings.ts","../src/theme/tokens/font-sizes.ts","../src/theme/tokens/font-weights.ts","../src/theme/tokens/fonts.ts","../src/theme/tokens/letter-spacings.ts","../src/theme/tokens/line-heights.ts","../src/theme/tokens/radii.ts","../src/theme/tokens/sizes.ts","../src/theme/tokens/spacing.ts","../src/theme/tokens/z-index.ts","../src/theme/tokens/index.ts","../src/theme/tokens/animation-styles.ts","../src/theme/tokens/breakpoints.ts","../src/theme/tokens/config.ts","../src/theme/tokens/global-css.ts","../src/theme/tokens/keyframes.ts","../src/theme/tokens/text-styles.ts","../src/transition/index.ts","../src/index.tsx"],"names":["_a","_b","AccordionItemTrigger","AccordionItemContent","forwardRef","jsx","jsxs","ChakraAlert","HStack","useSlotRecipe","Box","Center","Language","texts","VisuallyHidden","spinnerLightData","useState","useEffect","Stack","React","defineRecipe","SkeletonCircle","SkeletonText","chakra","Badge","Code","Text","Heading","Icon","Accordion","Span","Flex","DropdownDownFill24Icon","ServiceFill24Icon","WarningFill24Icon","ClientOnly","IconButton","Skeleton","ColorModeButton","PopoverAnchor","useFieldContext","useId","useRef","defineStyle","Field","createCalendar","StyledField","ChakraPopover","Portal","I18nProvider","DropdownRightFill18Icon","DialogCloseTrigger","createContext","CloseFill24Icon","DrawerCloseTrigger","Group","DropdownDownFill18Icon","Fragment","useContext","defineSlotRecipe","NativeSelect","Input","Button","useControllableState","CloseOutline24Icon","CheckmarkFill18Icon","SelectItemGroup","SelectTrigger","SelectClearTrigger","SelectContent","SelectValueText","useRecipe","createListCollection","useDisclosure","Grid","GridItem","AltTransportFill24Icon","LineIcon","ErrorFill24Icon","InformationFill24Icon","TravelTag","cloneElement","ListItem","usePopoverContext","Popover","tokens","Brand","ErrorFill18Icon","InformationFill18Icon","IconComponent","ArrowLeftFill24Icon","Stepper","defineSemanticTokens","defineTokens","radii","createSystem","defineConfig"],"mappings":"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","sourcesContent":["\"use client\";\n\nimport {\n Accordion as ChakraAccordion,\n Box,\n HStack,\n Stack,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { DropdownDownFill24Icon } from \"@vygruppen/spor-icon-react\";\nimport { forwardRef } from \"react\";\n\nimport { warnAboutMismatchingIcon } from \"./helpers\";\nimport {\n AccordionItemContentProps,\n AccordionItemTriggerProps,\n AccordionProps,\n} from \"./types\";\n\n/*\n * Wraps a set of AccordionItem or AccordionItem components.\n *\n * ```tsx\n * <Accordion variant=\"ghost\">\n * <AccordionItem>\n * <AccordionItemTrigger>Is Spor easy?</AccordionItemTrigger>\n * <AccordionItemContent>Yes</AccordionItemContent>\n * </AccordionItem>\n * <AccordionItem>\n * <AccordionItemTrigger>Is Spor lovable?</AccordionItemTrigger>\n * <AccordionItemContent>Yes</AccordionItemContent>\n * </AccordionItem>\n * </Accordion>\n * ```\n *\n * If you need to have a default open item, you can use the `defaultValue` prop.\n *\n * ```tsx\n * <Accordion defaultValue={[\"a\"]}>\n * <AccordionItem value=\"a\">\n * <AccordionItemTrigger>Is Spor easy?</AccordionItemTrigger>\n * <AccordionItemContent>Yes</AccordionItemContent>\n * </AccordionItem>\n * <AccordionItem value=\"b\">\n * <AccordionItemTrigger>Is Spor lovable?</AccordionItemTrigger>\n * <AccordionItemContent>Yes</AccordionItemContent>\n * </AccordionItem>\n * </Accordion>\n * ```\n *\n * If you only have one expandable item, you can use the `<Expandable />` component instead.\n *\n * @see https://spor.vy.no/components/accordion\n */\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(\n (props, ref) => {\n const { variant = \"core\", children, gap = 2, ...rest } = props;\n const recipe = useSlotRecipe({ key: \"accordion\" });\n const styles = recipe({ variant });\n return (\n <ChakraAccordion.Root\n {...rest}\n ref={ref}\n css={styles.root}\n variant={variant}\n >\n <Stack gap={gap}>{children}</Stack>\n </ChakraAccordion.Root>\n );\n },\n);\n\nexport const AccordionItemTrigger = forwardRef<\n HTMLButtonElement,\n AccordionItemTriggerProps\n>(function AccordionItemTrigger(props, ref) {\n const {\n startElement,\n children,\n headingLevel,\n showChevron = true,\n ...rest\n } = props;\n warnAboutMismatchingIcon({ icon: startElement });\n const recipe = useSlotRecipe({ key: \"accordion\" });\n const styles = recipe();\n return (\n <Box as={headingLevel}>\n <ChakraAccordion.ItemTrigger {...rest} ref={ref} css={styles.itemTrigger}>\n <HStack flex=\"1\" gap={1} textAlign=\"start\" width=\"full\">\n {startElement && startElement}\n {children}\n </HStack>\n {showChevron && (\n <ChakraAccordion.ItemIndicator>\n <DropdownDownFill24Icon />\n </ChakraAccordion.ItemIndicator>\n )}\n </ChakraAccordion.ItemTrigger>\n </Box>\n );\n});\n\nexport const AccordionItemContent = forwardRef<\n HTMLDivElement,\n AccordionItemContentProps\n>(function AccordionItemContent(props, ref) {\n const { children } = props;\n\n const recipe = useSlotRecipe({ key: \"accordion\" });\n const styles = recipe();\n\n return (\n <ChakraAccordion.ItemContent css={styles.itemContent}>\n <ChakraAccordion.ItemBody {...props} ref={ref}>\n {children}\n </ChakraAccordion.ItemBody>\n </ChakraAccordion.ItemContent>\n );\n});\nAccordion.displayName = \"Accordion\";\n\nexport const AccordionItem = ChakraAccordion.Item;\n","type WarnAboutMismatchingIcon = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n icon: any; //See if we can fint another type for this\n};\n\nexport const warnAboutMismatchingIcon = ({\n icon,\n}: WarnAboutMismatchingIcon) => {\n if (process.env.NODE_ENV !== \"production\") {\n const displayName = icon?.type?.render?.displayName;\n if (!displayName) {\n return;\n }\n if (displayName.includes(\"Fill\")) {\n console.warn(\n `You passed a filled icon. This component requires outlined icons. You passed ${displayName}, replace it with ${displayName.replace(\n \"Fill\",\n \"Outline\",\n )}.`,\n );\n return;\n }\n if (!displayName.includes(\"24Icon\")) {\n console.warn(\n `The icon you passed was of the wrong size. You passed ${displayName}, replace it with ${displayName.replace(\n /(\\d{2})Icon/,\n \"24Icon\",\n )}.`,\n );\n }\n }\n};\n","\"use client\";\n\nimport { forwardRef } from \"react\";\n\nimport {\n Accordion,\n AccordionItem,\n AccordionItemContent,\n AccordionItemTrigger,\n} from \"./Accordion\";\nimport { warnAboutMismatchingIcon } from \"./helpers\";\nimport { ExpandableItemProps, ExpandableProps } from \"./types\";\n\n/**\n * A standalone expandable component.\n *\n * This one is great to use if you have a single expandable component by itself.\n * If you want several expandables in a row, use the `Accordion` and `ExpandableItem` components instead.\n *\n * ```tsx\n * <Expandable title=\"Click for more\" variant=\"core\">\n * <Text>MORE! 🎉</Text>\n * </Expandable>\n * ```\n */\n\nexport const Expandable = forwardRef<HTMLDivElement, ExpandableProps>(\n (props, ref) => {\n const { title, children, headingLevel, startElement, ...rest } = props;\n return (\n <Accordion {...props} ref={ref} {...rest}>\n <ExpandableItem\n title={title}\n headingLevel={headingLevel}\n startElement={startElement}\n value=\"single-expandable\"\n >\n {children}\n </ExpandableItem>\n </Accordion>\n );\n },\n);\n\n/**\n * An item in a set of Expandables. Must be wrapped in an `<Accordion>` component.\n *\n * ```tsx\n * <Accordion variant=\"ghost\">\n * <ExpandableItem value=\"a\" title=\"Is Spor easy?\" headingLevel=\"h3\">\n * Yes\n * </ExpandableItem>\n * <ExpandableItem value=\"b\" title=\"Do you love it?\" headingLevel=\"h3\">\n * 🥰\n * </ExpandableItem>\n * </Accordion>\n * ```\n *\n *\n * If you need even more control, you can put together your own expandable with the `Accordion`, `AccordionItem`, `AccordionItemTrigger`, and `AccordionItemContent` components.\n *\n * @see https://spor.vy.no/components/accordion\n */\n\nexport const ExpandableItem = (props: ExpandableItemProps) => {\n const {\n title,\n children,\n value,\n headingLevel = \"h3\",\n startElement,\n ...rest\n } = props;\n warnAboutMismatchingIcon({ icon: startElement });\n return (\n <AccordionItem value={value} {...rest}>\n <AccordionItemTrigger\n startElement={startElement}\n headingLevel={headingLevel}\n >\n {title}\n </AccordionItemTrigger>\n\n <AccordionItemContent>{children}</AccordionItemContent>\n </AccordionItem>\n );\n};\n\nExpandable.displayName = \"Expandable\";\n","\"use client\";\n\nimport {\n Alert as ChakraAlert,\n HStack,\n useDisclosure,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { IconComponent } from \"@vygruppen/spor-icon-react\";\nimport { forwardRef } from \"react\";\n\nimport { CloseButton } from \"@/button\";\n\nimport { AlertIcon } from \"./AlertIcon\";\n\nexport type AlertProps = Omit<ChakraAlert.RootProps, \"colorPalette\"> & {\n /** Whether or not to show the alert icon */\n showIndicator?: boolean;\n /** Whether or not the alert is closable */\n icon?: IconComponent;\n closable?: boolean;\n /** Callback for when the alert is closed */\n onAlertClose?: () => void;\n};\n\n/**\n *\n * Alerts are used to communicate important information to the user.\n * They can be used to inform about success, errors, warnings, or other important information.\n *\n * ```tsx\n * <Alert variant=\"info\" title=\"Information\">\n * This is an information alert\n * </Alert>\n * ```\n *\n * You may also use the closable prop to allow the user to dismiss the alert.\n *\n * ```tsx\n * <Alert variant=\"info\" title=\"Information\" closable>\n * This is an closable alert\n * </Alert>\n *\n * @see Docs https://spor.vy.no/alert\n */\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>((props, ref) => {\n const {\n title,\n showIndicator = true,\n icon,\n closable = false,\n onAlertClose,\n children,\n } = props;\n const { open, onClose } = useDisclosure({ defaultOpen: true });\n\n const handleAlertClose = () => {\n onClose();\n onAlertClose?.();\n };\n\n const recipe = useSlotRecipe({ key: \"alert\" });\n const styles = recipe({ variant: props.variant });\n\n if (!open) return null;\n return (\n <ChakraAlert.Root ref={ref} {...props}>\n <ChakraAlert.Content flexDirection={title ? \"column\" : \"row\"}>\n <HStack gap=\"1\" alignItems=\"flex-start\">\n {showIndicator && (\n <ChakraAlert.Indicator asChild>\n <AlertIcon variant={props.variant} customIcon={icon} />\n </ChakraAlert.Indicator>\n )}\n {title && (\n <ChakraAlert.Title paddingRight={closable ? 6 : 0}>\n {title}\n </ChakraAlert.Title>\n )}\n </HStack>\n {children && (\n <ChakraAlert.Description\n paddingLeft={title ? 0.5 : 0}\n paddingRight={closable ? 6 : 0}\n >\n {children}\n </ChakraAlert.Description>\n )}\n </ChakraAlert.Content>\n {closable && (\n <CloseButton\n size=\"xs\"\n position=\"absolute\"\n top=\"1.5\"\n right=\"1.5\"\n onClick={handleAlertClose}\n css={styles.closeButton}\n />\n )}\n </ChakraAlert.Root>\n );\n});\n\nAlert.displayName = \"Alert\";\n","import {\n Box,\n Button as ChakraButton,\n type ButtonProps as ChakraButtonProps,\n Center,\n Flex,\n type RecipeVariantProps,\n Span,\n} from \"@chakra-ui/react\";\nimport React, { cloneElement, forwardRef, PropsWithChildren } from \"react\";\n\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { ColorInlineLoader } from \"../loader\";\nimport { buttonRecipe } from \"../theme/recipes/button\";\n\nexport type ButtonVariantProps = RecipeVariantProps<typeof buttonRecipe>;\n\nexport type ButtonProps = Exclude<\n ChakraButtonProps,\n \"size\" | \"variant\" | \"colorPalette\"\n> &\n PropsWithChildren<ButtonVariantProps> & {\n /* Boolean value for loading state */\n loading?: boolean;\n /* You may display a different loading text */\n loadingText?: React.ReactNode;\n /* Display icon to the left */\n leftIcon?: React.ReactNode;\n /* Display icon to the right */\n rightIcon?: React.ReactNode;\n /* \"primary\" | \"secondary\" | \"tertiary\" | \"ghost\" | \"floating\". Defaults to primary. */\n variant?: \"primary\" | \"secondary\" | \"tertiary\" | \"ghost\" | \"floating\";\n /* \"lg\" | \"md\" | \"sm\" | \"xs\". Defaults to md. */\n size?: \"lg\" | \"md\" | \"sm\" | \"xs\";\n /* Link to a downloadable resource. */\n download?: string;\n /* Use this to specify a path combined with as=\"a\" */\n href?: string;\n };\n/**\n * Buttons are used to trigger actions.\n *\n * There are several button variants. You can specify which one you want with the `variant` prop. The available variants are:\n *\n * - `primary`: This is our main button. It's used for the main actions in a view, like a call to action. There should only be a single primary button in each view.\n * - `secondary`: Used for secondary actions in a view, and when you need to make several actions available at the same time.\n * - `tertiary`: Used for additional choices, like a less important secondary action.\n * - `ghost`: Used inside other interactive elements, like date pickers and input fields.\n * - `floating`: Used for floating actions, like a menu button in a menu.\n *\n * ```tsx\n * <Button variant=\"primary\" onClick={confirmOrder}>\n * Buy trip\n * </Button>\n * ```\n *\n * There are also different sizes. You can specify which one you want with the `size` prop. The available sizes are \"lg\", \"md\", \"sm\" and \"xs\".\n *\n * ```tsx\n * <Button variant=\"secondary\" size=\"sm\" onClick={cancelOrder}>\n * Cancel trip\n * </Button>\n * ```\n *\n * @see https://spor.vy.no/components/button\n */\n\nconst ButtonContent = ({\n leftIcon,\n children,\n rightIcon,\n}: PropsWithChildren<Pick<ButtonProps, \"leftIcon\" | \"rightIcon\">>) => (\n <>\n {leftIcon}\n {children}\n {rightIcon && <Span marginLeft=\"auto\">{rightIcon}</Span>}\n </>\n);\n\nconst LoadingContent = ({\n children,\n loadingText,\n}: PropsWithChildren<Pick<ButtonProps, \"size\" | \"loadingText\">>) => (\n <>\n <Flex gap=\"1\" visibility=\"hidden\">\n {children}\n </Flex>\n <Center position=\"absolute\" inset=\"1px 0\">\n <ColorInlineLoader maxWidth=\"8\" marginX={2} marginY={2} />\n {loadingText && <Box>{loadingText}</Box>}\n </Center>\n </>\n);\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n loading,\n disabled,\n loadingText,\n variant = \"primary\",\n size = \"md\",\n leftIcon,\n rightIcon,\n type = \"button\",\n children,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n\n const ariaLabel = loading\n ? String(loadingText ?? t(texts.loadingText))\n : (rest[\"aria-label\"] as string);\n\n const renderContent = () => {\n const content = rest.asChild\n ? (children as React.ReactElement).props.children\n : children;\n\n if (loading)\n return (\n <LoadingContent size={size} loadingText={loadingText}>\n <ButtonContent leftIcon={leftIcon} rightIcon={rightIcon}>\n {content}\n </ButtonContent>\n </LoadingContent>\n );\n\n return (\n <ButtonContent leftIcon={leftIcon} rightIcon={rightIcon}>\n {content}\n </ButtonContent>\n );\n };\n\n return (\n <ChakraButton\n type={type}\n ref={ref}\n aria-label={ariaLabel}\n aria-busy={loading}\n disabled={disabled || loading}\n position=\"relative\"\n variant={variant}\n size={size}\n {...rest}\n >\n {rest.asChild\n ? cloneElement(children as React.ReactElement, {\n children: renderContent(),\n })\n : renderContent()}\n </ChakraButton>\n );\n },\n);\n\nButton.displayName = \"Button\";\n\nconst texts = createTexts({\n loadingText: {\n nb: \"Laster…\",\n nn: \"Lastar…\",\n en: \"Loading…\",\n sv: \"Laddar…\",\n },\n});\n","/* eslint-disable no-irregular-whitespace */\nimport React, { createContext, useContext } from \"react\";\n\nexport enum Language {\n NorwegianBokmal = \"nb\",\n NorwegianNynorsk = \"nn\",\n Swedish = \"sv\",\n English = \"en\",\n}\n\nexport type TranslationObject = {\n [key in Language]: string | React.ReactElement;\n};\ntype TranslationFunction = (\n ...args: Array<string | number>\n) => TranslationObject;\n\ntype Translation = TranslationObject | TranslationFunction;\nexport type Translations = {\n [key: string]: Translation | Translations;\n};\n\nconst LanguageContext = createContext<Language | undefined>(undefined);\ntype LanguageProviderProps = {\n language: Language;\n children: React.ReactElement;\n};\n\n/**\n * A language provider component.\n *\n * This component should wrap your entire application. It will provide the language to all components that use it.\n *\n * This is done by the SporProvider component, so most likely, you won't need to use it directly, unless you want to use a specific language for a specific part of your application.\n *\n * ```tsx\n * import { LanguageProvider, Language } from \"@vygruppen/spor-react\";\n *\n * const App = () => {\n * return (\n * <LanguageProvider language={Language.NorwegianBokmal}>\n * <Routes />\n * </LanguageProvider>\n * );\n * }\n * ```\n *\n */\nexport function LanguageProvider({\n language,\n children,\n}: LanguageProviderProps) {\n return (\n <LanguageContext.Provider value={language}>\n {children}\n </LanguageContext.Provider>\n );\n}\n\n/**\n * Gets the language from the language context.\n *\n * @internal\n */\nfunction useLanguage() {\n const language = useContext(LanguageContext);\n if (!language) {\n throw new Error(\"Please wrap your application in a LanguageProvider\");\n }\n return language;\n}\n\n/**\n * A hook that returns translation utilities. Typically used to translate text.\n *\n * ```tsx\n * const Example = () => {\n * const { t } = useTranslation();\n * return <p>{t(texts.greeting)}</p>;\n * }\n * const texts = {\n * greeting: {\n * nb: \"Hei\",\n * nn: \"Hei\",\n * sv: \"Hej\",\n * en: \"Hello\",\n * }\n * }\n * ```\n *\n * You can also use it to fetch the current language:\n *\n * ```tsx\n * const Example = () => {\n * const { language } = useTranslation();\n * return <p>{language}</p>;\n * };\n * ```\n */\nexport function useTranslation() {\n const language = useLanguage();\n const t = (text: TranslationObject) => {\n return text[language] as string;\n };\n return { t, language } as const;\n}\n\n/** Utility function that creates type safe text objects with useTranslation\n *\n * ```tsx\n * const texts = createTexts({\n * example: {\n * nb: \"Eksempel\",\n * nn: \"Døme\",\n * sv: \"Exempel\",\n * en: \"Example\",\n * },\n * another: {\n * example: {\n * nb: <strong>Eksempel</strong>,\n * nn: <strong>Døme</strong>,\n * sv: <strong>Exempel</strong>,\n * en: <strong>Example</strong>,\n * }\n * }\n * })\n * ```\n */\nexport function createTexts<T extends Translations>(texts: T) {\n return texts;\n}\n","import { Box, BoxProps, Center, VisuallyHidden } from \"@chakra-ui/react\";\nimport { inlineLoaderColorData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\nexport type ColorInlineLoaderProps = Exclude<BoxProps, \"children\">;\n/**\n * Loading component that works well in bounded contexts, like inside a button.\n *\n * This component should only be used on light backgrounds with low saturation (e.g. white, light grey etc.). For colored backgrounds, please use the LightInlineLoader component.\n */\nexport const ColorInlineLoader = ({\n width,\n maxWidth,\n ...props\n}: ColorInlineLoaderProps) => {\n return (\n <Center role=\"status\" aria-live=\"polite\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={inlineLoaderColorData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n </Center>\n );\n};\n","\"use client\";\nimport { useEffect, useState } from \"react\";\n\n// Lifted from remix-utils\n// https://github.com/sergiodxa/remix-utils/blob/main/src/react/use-hydrated.ts\n\nlet hydrating = true;\n\n/**\n * Return a boolean indicating if the JS has been hydrated already.\n * When doing Server-Side Rendering, the result will always be false.\n * When doing Client-Side Rendering, the result will always be false on the\n * first render and true from then on. Even if a new component renders it will\n * always start with true.\n *\n * Example: Disable a button that needs JS to work.\n * ```tsx\n * let hydrated = useHydrated();\n * return (\n * <button type=\"button\" disabled={!hydrated} onClick={doSomethingCustom}>\n * Click me\n * </button>\n * );\n * ```\n */\nexport function useHydrated() {\n const [hydrated, setHydrated] = useState(() => !hydrating);\n\n useEffect(function hydrate() {\n hydrating = false;\n setHydrated(true);\n }, []);\n\n return hydrated;\n}\n","\"use client\";\nimport React, { PropsWithChildren } from \"react\";\n\nimport { useHydrated } from \"./useHydrated\";\n\ntype ClientOnlyProps = PropsWithChildren<{\n /** An optional fallback to render in place on the server */\n fallback?: React.ReactNode;\n}>;\n\n/**\n * Render the children only after the JS has loaded client-side. Use an optional\n * fallback component if the JS is not yet loaded.\n *\n * Example: Render a Chart component if JS loads, renders a simple FakeChart\n * component server-side or if there is no JS. The FakeChart can have only the\n * UI without the behavior or be a loading spinner or skeleton.\n * ```tsx\n * return (\n * <ClientOnly fallback={<FakeChart />}>\n * <Chart />\n * </ClientOnly>\n * );\n * ```\n */\nexport const ClientOnly = ({ children, fallback = null }: ClientOnlyProps) => {\n const isHydrated = useHydrated();\n\n if (!isHydrated) return fallback;\n return children;\n};\n","import ReactLottie from \"lottie-react\";\n\n/**\n * A wrapper around Lottie to make it tree-shakeable for SSR.\n */\nexport default function Lottie({ animationData }: { animationData: unknown }) {\n return <ReactLottie animationData={animationData} />;\n}\n","\"use client\";\nimport { Box, BoxProps, Center, VisuallyHidden } from \"@chakra-ui/react\";\nimport { spinnerColorData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\nexport type SpinnerProps = BoxProps;\nexport type ColorSpinnerProps = SpinnerProps;\n/** A circular spinner\n *\n * Can be used in place of a loading animation, or for reloading app state, for instance.\n *\n * ```tsx\n * <ColorSpinner width=\"64px\" height=\"64px\" />\n * ```\n *\n * You can also pass an explanatory text as `children`:\n *\n * ```tsx\n * <ColorSpinner>\n * Hold your horses\n * </ColorSpinner>\n */\nexport const ColorSpinner = ({\n children,\n width,\n maxWidth,\n ...props\n}: SpinnerProps) => {\n return (\n <Center flexDirection=\"column\" role=\"status\" aria-live=\"polite\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={spinnerColorData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n {children && (\n <Box marginTop={3} fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Center>\n );\n};\n","\"use client\";\nimport { Box, BoxProps, VisuallyHidden } from \"@chakra-ui/react\";\nimport { contentLoaderData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\nexport type ContentLoaderProps = BoxProps;\n/**\n * ContentLoader is a component that renders a loading animation.\n * It should mostly be used for loading content that is not yet available.\n */\nexport const ContentLoader = ({ children, ...props }: ContentLoaderProps) => {\n return (\n <Box role=\"status\" aria-live=\"polite\" {...props}>\n <Box maxWidth=\"140px\" marginX=\"auto\">\n <ClientOnly>\n <Lottie animationData={contentLoaderData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n {children && (\n <Box textAlign=\"center\" fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Box>\n );\n};\n","\"use client\";\nimport { Box, BoxProps, Center, VisuallyHidden } from \"@chakra-ui/react\";\nimport { fullScreenLoaderWhiteData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\ntype DarkFullScreenLoaderProps = BoxProps;\n\nexport const DarkFullScreenLoader = ({\n width,\n maxWidth,\n ...props\n}: DarkFullScreenLoaderProps) => {\n return (\n <Center\n height=\"100%\"\n background=\"darkTeal\"\n role=\"status\"\n aria-live=\"polite\"\n {...props}\n >\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={fullScreenLoaderWhiteData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n </Center>\n );\n};\n","\"use client\";\nimport { Box, BoxProps, Center, VisuallyHidden } from \"@chakra-ui/react\";\nimport { inlineLoaderDarkData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\nexport type DarkInlineLoaderProps = Exclude<BoxProps, \"children\">;\n/**\n * Loading component that works well in bounded contexts, like inside a button.\n */\nexport const DarkInlineLoader = ({\n width,\n maxWidth,\n ...props\n}: DarkInlineLoaderProps) => {\n return (\n <Center role=\"status\" aria-live=\"polite\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={inlineLoaderDarkData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n </Center>\n );\n};\n","\"use client\";\nimport { spinnerDarkData, spinnerLightData } from \"@vygruppen/spor-loader\";\n\nimport { Box, BoxProps, Center, useColorMode, VisuallyHidden } from \"..\";\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\nexport type DarkSpinnerProps = BoxProps;\n/** A circular spinner\n *\n * Can be used in place of a loading animation, or for reloading app state, for instance.\n *\n * ```tsx\n * <DarkSpinner width=\"64px\" height=\"64px\" />\n * ```\n *\n * You can also pass an explanatory text as `children`:\n *\n * ```tsx\n * <DarkSpinner>\n * Hold your horses\n * </DarkSpinner>\n */\nexport const DarkSpinner = ({\n children,\n width,\n maxWidth,\n ...props\n}: DarkSpinnerProps) => {\n const { colorMode } = useColorMode();\n const spinnerData = colorMode === \"dark\" ? spinnerLightData : spinnerDarkData;\n return (\n <Center flexDirection=\"column\" role=\"status\" aria-live=\"polite\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={spinnerData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n {children && (\n <Box marginTop={3} fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Center>\n );\n};\n","\"use client\";\nimport { Box, BoxProps, Center, VisuallyHidden } from \"@chakra-ui/react\";\nimport { fullScreenLoaderBlackData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\ntype LightFullScreenLoaderProps = BoxProps;\n\nexport const LightFullScreenLoader = ({\n width,\n maxWidth,\n ...props\n}: LightFullScreenLoaderProps) => {\n return (\n <Center\n height=\"100%\"\n background=\"white\"\n role=\"status\"\n aria-live=\"polite\"\n {...props}\n >\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={fullScreenLoaderBlackData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n </Center>\n );\n};\n","\"use client\";\nimport { Box, BoxProps, Center, VisuallyHidden } from \"@chakra-ui/react\";\nimport { inlineLoaderLightData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\nexport type LightInlineLoaderProps = Exclude<BoxProps, \"children\">;\n/**\n * Loading component that works well in bounded contexts, like inside a button.\n */\nexport const LightInlineLoader = ({\n width,\n maxWidth,\n ...props\n}: LightInlineLoaderProps) => {\n return (\n <Center\n height=\"100%\"\n background=\"white\"\n role=\"status\"\n aria-live=\"polite\"\n {...props}\n >\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={inlineLoaderLightData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n </Center>\n );\n};\n","\"use client\";\nimport { Box, BoxProps, Center, VisuallyHidden } from \"@chakra-ui/react\";\nimport { spinnerLightData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\nexport type LightSpinnerProps = BoxProps;\n/** A circular spinner\n *\n * Can be used in place of a loading animation, or for reloading app state, for instance.\n *\n * ```tsx\n * <LightSpinner width=\"64px\" height=\"64px\" />\n * ```\n *\n * You can also pass an explanatory text as `children`:\n *\n * ```tsx\n * <LightSpinner>\n * Hold your horses\n * </LightSpinner>\n */\nexport const LightSpinner = ({\n children,\n width,\n maxWidth,\n ...props\n}: LightSpinnerProps) => {\n return (\n <Center flexDirection=\"column\" role=\"status\" aria-live=\"polite\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={spinnerLightData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n {children && (\n <Box marginTop={3} fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Center>\n );\n};\n","\"use client\";\nimport {\n BoxProps,\n Progress,\n RecipeVariantProps,\n UseProgressProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren } from \"react\";\n\nimport { progressBarRecipe } from \"../theme/slot-recipes/progress-bar\";\nimport { useRotatingLabel } from \"./useRotatingLabel\";\n\ntype ProgressBarVariants = RecipeVariantProps<typeof progressBarRecipe>;\n\nexport type ProgressBarProps = BoxProps &\n UseProgressProps &\n PropsWithChildren<ProgressBarVariants> & {\n children?: React.ReactNode;\n /** The height of the progress bar.\n * Defaults to .5rem\n **/\n height?: BoxProps[\"height\"];\n /** The width of the progress bar.\n *\n * Defaults to the width of its container\n **/\n width?: BoxProps[\"width\"];\n\n /** Pass if no label is passed to the label */\n \"aria-label\"?: string;\n /** Optional text shown below the loader.\n *\n * If you pass an array of strings, the text will rotate every 5 seconds. If you want to change the delay, pass the delay in milliseconds to the `labelRotationDelay` prop.\n */\n label?: string | string[];\n /** The number of milliseconds a label is shown, if an array of strings is passed to the `label` prop.\n *\n * Defaults to 5000 (5 seconds).\n */\n labelRotationDelay?: number;\n\n /** Pass to disable the color of the component */\n isActive?: boolean;\n\n /** Pass to show the value text */\n showValueText?: boolean;\n };\n\n/**\n * Shows the progress of a loading process.\n *\n * You can pass the amount of progress with the `value` prop:\n *\n * ```tsx\n * <ProgressBar value={50} />\n * ```\n *\n * You can also pass a label to show below the loader:\n *\n * ```tsx\n * <ProgressBar value={50} label=\"Loading...\" />\n * ```\n *\n * If you pass an array of strings, the text will rotate every 5 seconds. If you want to change the delay, pass the delay in milliseconds to the `labelRotationDelay` prop.\n *\n * ```tsx\n * <ProgressBar value={50} label={[\"Loading...\", \"Almost there...\"]} />\n * ```\n *\n * If you don't pass a label, you should pass an `aria-label` prop:\n *\n * ```tsx\n * <ProgressBar value={50} aria-label=\"Loading...\" />\n * ```\n */\n\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(\n (\n {\n value,\n label,\n labelRotationDelay = 5000,\n isActive = true,\n showValueText = false,\n height = \"0.5rem\",\n ...rest\n },\n ref,\n ) => {\n const recipe = useSlotRecipe({ key: \"progressbar\" });\n const styles = recipe({});\n const currentLoadingText = useRotatingLabel({\n label,\n delay: labelRotationDelay,\n });\n\n return (\n <Progress.Root css={styles.container} ref={ref} value={value} {...rest}>\n <Progress.Track\n height={height}\n css={isActive ? styles.background : styles.disabledBackground}\n >\n <Progress.Range css={styles.progress} />\n </Progress.Track>\n\n {label && (\n <Progress.Label css={styles.description}>\n {currentLoadingText}\n </Progress.Label>\n )}\n\n {showValueText && <Progress.ValueText>{value}%</Progress.ValueText>}\n </Progress.Root>\n );\n },\n);\nProgressBar.displayName = \"ProgressBar\";\n","\"use client\";\nimport { useMemo, useState } from \"react\";\nimport { useInterval } from \"usehooks-ts\";\n\ntype UseRotatingLabelArgs = {\n label?: string | string[];\n delay: number;\n};\n/** Returns a label from a set of labels */\nexport const useRotatingLabel = ({ label, delay }: UseRotatingLabelArgs) => {\n const loadingTextArray = useMemo(\n () => (Array.isArray(label) ? label : [label]),\n [label],\n );\n const [currentLoadingTextIndex, setCurrentLoadingTextIndex] = useState(0);\n\n useInterval(() => {\n setCurrentLoadingTextIndex(\n (prevIndex) => (prevIndex + 1) % loadingTextArray.length,\n );\n }, delay);\n return loadingTextArray[currentLoadingTextIndex];\n};\n","\"use client\";\nimport { BoxProps, chakra, RecipeVariantProps, Text } from \"@chakra-ui/react\";\nimport React, { forwardRef, useEffect, useId, useRef, useState } from \"react\";\nimport { useProgressBar } from \"react-aria\";\n\nimport { createTexts, useTranslation } from \"..\";\nimport { progressLoaderRecipe } from \"../theme/recipes/progress-loader\";\nimport { useRotatingLabel } from \"./useRotatingLabel\";\nexport type ProgressLoaderVariantProps = RecipeVariantProps<\n typeof progressLoaderRecipe\n>;\n\nexport type ProgressLoaderProps = BoxProps & {\n children: React.ReactNode;\n /** The percentage of progress made.\n *\n * The value must be between 0 and 100 */\n value: number;\n /** The width of the progress bar.\n *\n * Defaults to the width of its container\n **/\n width?: BoxProps[\"width\"];\n\n /** Pass if no label is passed to the label */\n \"aria-label\": string;\n /** Optional text shown below the loader.\n *\n * If you pass an array of strings, the text will rotate every 5 seconds. If you want to change the delay, pass the delay in milliseconds to the `labelRotationDelay` prop.\n */\n label: string | string[];\n /** The number of milliseconds a label is shown, if an array of strings is passed to the `label` prop.\n *\n * Defaults to 5000 (5 seconds).\n */\n labelRotationDelay?: number;\n};\n\n/**\n * Custom hook to calculate the total length of an SVG path and progress offset.\n * @param value The percentage of progress made (0-100).\n * @returns A ref for the path element, the calculated path length, and the progress offset.\n */\nconst usePathLength = (value: number) => {\n const pathRef = useRef<SVGPathElement>(null);\n const [pathLength, setPathLength] = useState(0);\n\n useEffect(() => {\n if (pathRef.current) {\n const totalLength = pathRef.current.getTotalLength();\n setPathLength(totalLength);\n }\n }, []);\n\n const progressOffset = ((value - 100) / 100) * pathLength;\n\n return { pathRef, pathLength, progressOffset };\n};\n\nconst ProgressLoaderWrapper = chakra(\"div\", progressLoaderRecipe);\n\n/**\n * Shows the progress of a loading process.\n *\n * You can pass the amount of progress with the `value` prop:\n *\n * ```tsx\n * <ProgressLoader value={50} />\n * ```\n *\n * You can also pass a label to show below the loader:\n *\n * ```tsx\n * <ProgressLoader value={50} label=\"Loading...\" />\n * ```\n *\n * If you pass an array of strings, the text will rotate every 5 seconds. If you want to change the delay, pass the delay in milliseconds to the `labelRotationDelay` prop.\n *\n * ```tsx\n * <ProgressLoader value={50} label={[\"Loading...\", \"Almost done...\"]} />\n * ```\n *\n * If you don't pass a label, you should pass an `aria-label` prop:\n *\n * ```tsx\n * <ProgressLoader value={50} aria-label=\"Fetching your trips...\" />\n * ```\n */\n\nexport const ProgressLoader = forwardRef<HTMLDivElement, ProgressLoaderProps>(\n (\n {\n value,\n label,\n labelRotationDelay = 5000,\n \"aria-label\": ariaLabel,\n width,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const currentLoadingText = useRotatingLabel({\n label,\n delay: labelRotationDelay,\n });\n const { labelProps, progressBarProps } = useProgressBar({\n isIndeterminate: value === undefined,\n value,\n \"aria-label\": ariaLabel ?? t(texts.fallbackLabel(value ?? \"?\")),\n });\n const {\n pathRef,\n pathLength: progressPathLength,\n progressOffset,\n } = usePathLength(value);\n\n const id = useId();\n\n return (\n <ProgressLoaderWrapper\n {...progressBarProps}\n width={width}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={ariaLabel ?? t(texts.fallbackLabel(value ?? \"?\"))}\n {...rest}\n ref={ref}\n >\n <chakra.svg as=\"svg\" viewBox=\"0 0 246 78\" fill=\"none\">\n <path\n id={`${id}-start-dot`}\n d=\"M14.0479 44.8251C19.4332 44.8251 23.7988 40.5242 23.7988 35.2187C23.7988 29.9133 19.4332 25.6124 14.0479 25.6124C8.66254 25.6124 4.29688 29.9133 4.29688 35.2187C4.29688 40.5242 8.66254 44.8251 14.0479 44.8251Z\"\n fill=\"#FFB466\"\n />\n <path\n id={`${id}-track`}\n d=\"M204.911 39.1156C204.911 39.1156 175.012 46.8319 157.651 30.4354C140.29 14.0388 121 21.7547 110.391 47.6529C103.22 65.157 78.9634 67.0859 67.9533 47.6529C59.8376 33.3287 36.125 37.1866 36.125 37.1866\"\n strokeWidth=\"13.6469\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n id={`${id}-progress`}\n d=\"M204.911 39.1156C204.911 39.1156 175.012 46.8319 157.651 30.4354C140.29 14.0388 121 21.7547 110.391 47.6529C103.22 65.157 78.9634 67.0859 67.9533 47.6529C59.8376 33.3287 36.125 37.1866 36.125 37.1866\"\n strokeWidth=\"13.6469\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeDasharray={progressPathLength}\n strokeDashoffset={progressOffset}\n style={{ transition: \"stroke-dashoffset .2s ease-out\" }}\n ref={pathRef}\n />\n <path\n id={`${id}-end-dot`}\n d=\"M226.025 44.8251C231.411 44.8251 235.776 40.5242 235.776 35.2187C235.776 29.9133 231.411 25.6124 226.025 25.6124C220.64 25.6124 216.274 29.9133 216.274 35.2187C216.274 40.5242 220.64 44.8251 226.025 44.8251Z\"\n fill=\"#688CBA\"\n />\n </chakra.svg>\n {currentLoadingText && (\n <Text\n textAlign=\"center\"\n marginTop={2}\n fontWeight=\"bold\"\n {...labelProps}\n >\n {currentLoadingText}\n </Text>\n )}\n </ProgressLoaderWrapper>\n );\n },\n);\nProgressLoader.displayName = \"ProgressLoader\";\n\nconst texts = createTexts({\n fallbackLabel: (value) => ({\n nb: `${value}% ferdig`,\n nn: `${value}% ferdig`,\n sv: `${value}% klart`,\n en: `${value}% done`,\n }),\n});\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const progressLoaderRecipe = defineRecipe({\n base: {\n minWidth: \"100px\",\n\n \"& path[id$='-track']\": {\n stroke: { _light: \"coralGreen\", _dark: \"greenHaze\" },\n },\n \"& path[id$='-progress']\": {\n stroke: { _light: \"greenHaze\", _dark: \"coralGreen\" },\n },\n },\n});\n","\"use client\";\nimport type {\n CircleProps,\n RecipeVariantProps,\n SkeletonProps as ChakraSkeletonProps,\n} from \"@chakra-ui/react\";\nimport {\n Circle,\n Skeleton as ChakraSkeleton,\n Stack,\n useRecipe,\n} from \"@chakra-ui/react\";\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nimport { skeletonRecipe } from \"@/theme/recipes/skeleton\";\n\ntype SkeletonVariantProps = RecipeVariantProps<typeof skeletonRecipe>;\n\nexport type SkeletonCircleProps = ChakraSkeletonProps &\n SkeletonVariantProps & {\n size?: CircleProps[\"size\"];\n };\n\nexport const SkeletonCircle = React.forwardRef<\n HTMLDivElement,\n SkeletonCircleProps\n>(function SkeletonCircle(props, ref) {\n const recipe = useRecipe({ recipe: skeletonRecipe });\n\n const [recipeProps, restProps] = recipe.splitVariantProps({\n loading: true,\n variant: \"pulse\",\n ...props,\n });\n\n const { size, css, ...rest } = restProps;\n\n return (\n <Circle size={size} asChild ref={ref}>\n <ChakraSkeleton css={{ ...recipe(recipeProps), ...css }} {...rest} />\n </Circle>\n );\n});\n\nexport type SkeletonTextProps = ChakraSkeletonProps &\n SkeletonVariantProps & {\n noOfLines?: number;\n };\n\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n function SkeletonText(props, ref) {\n const recipe = useRecipe({ recipe: skeletonRecipe });\n const [recipeProps, restProps] = recipe.splitVariantProps({\n loading: true,\n variant: \"pulse\",\n ...props,\n });\n const { noOfLines = 3, height = \"0.5rem\", gap, css, ...rest } = restProps;\n\n return (\n <Stack gap={gap} width=\"full\" ref={ref}>\n {Array.from({ length: noOfLines }).map((_, index) => (\n <ChakraSkeleton\n height={height}\n css={{ ...recipe(recipeProps), ...css }}\n key={index}\n _last={{ maxW: \"80%\" }}\n {...rest}\n />\n ))}\n </Stack>\n );\n },\n);\n\nexport type SkeletonProps = ChakraSkeletonProps & SkeletonVariantProps;\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonTextProps>(\n function SkeletonText(props, ref) {\n const recipe = useRecipe({ recipe: skeletonRecipe });\n const [recipeProps, restProps] = recipe.splitVariantProps({\n loading: true,\n variant: \"pulse\",\n ...props,\n });\n\n const { css, ...rest } = restProps;\n\n return (\n <ChakraSkeleton\n ref={ref}\n css={{ ...recipe(recipeProps), ...css }}\n {...rest}\n />\n );\n },\n);\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const skeletonRecipe = defineRecipe({\n className: \"chakra-skeleton\",\n variants: {\n loading: {\n true: {\n borderRadius: \"xs\",\n boxShadow: \"none\",\n backgroundClip: \"padding-box\",\n cursor: \"default\",\n color: \"transparent\",\n pointerEvents: \"none\",\n userSelect: \"none\",\n flexShrink: \"0\",\n \"&::before, &::after, *\": {\n visibility: \"hidden\",\n },\n },\n false: {\n background: \"unset\",\n animation: \"fade-in var(--fade-duration, 0.1s) ease-out !important\",\n },\n },\n variant: {\n pulse: {\n background: {\n _light: \"silver\",\n _dark: \"darkGrey\",\n },\n animation: \"pulse\",\n animationDuration: \"var(--duration, 1.2s)\",\n },\n shine: {\n \"--animate-from\": \"200%\",\n \"--animate-to\": \"-200%\",\n \"--start-color\": {\n _light: \"colors.lightGrey\",\n _dark: \"colors.dimGrey\",\n },\n\n \"--end-color\": {\n _light: \"colors.platinum\",\n _dark: \"colors.darkGrey\",\n },\n backgroundImage:\n \"linear-gradient(270deg,var(--start-color),var(--end-color),var(--end-color),var(--start-color))\",\n backgroundSize: \"400% 100%\",\n animation: \"bg-position var(--duration, 5s) ease-in-out infinite\",\n },\n none: {\n animation: \"none\",\n background: \"steel\",\n },\n },\n },\n});\n","\"use client\";\n\nimport {\n chakra,\n Group as ChakraGroup,\n type GroupProps as ChakraGroupProps,\n type RecipeVariantProps,\n} from \"@chakra-ui/react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { groupRecipe } from \"../theme/recipes/group\";\n\nexport type GroupVariantProps = RecipeVariantProps<typeof groupRecipe>;\n\nexport type ButtonGroupProps = ChakraGroupProps &\n PropsWithChildren<GroupVariantProps>;\n\n/**\n * Used to group or attach buttons together.\n *\n * If you have more than one button next to eachother, you might want to add a `ButtonGroup` to group them.\n *\n * ```tsx\n * <ButtonGroup>\n * <Button variant=\"secondary\">Cancel</Button>\n * <Button variant=\"primary\">Save</Button>\n * </ButtonGroup>\n * ```\n *\n *\n * Attach buttons together with the `attached` prop.\n *\n * ```tsx\n * <ButtonGroup attached>\n * <Button variant=\"primary\">Open</Button>\n * <IconButton variant=\"ghost\">\n * <SaveIcon aria-label=\"Save\"/>\n * </IconButton>\n * </ButtonGroup>\n * ```\n *\n * Use the `grow` prop to make the buttons grow to fill the available space.\n *\n * ```tsx\n * <ButtonGroup grow>\n * <Button variant=\"primary\">Open</Button>\n * <Button variant=\"secondary\">Save</Button>\n * </ButtonGroup>\n */\n\nconst Group = chakra(ChakraGroup, groupRecipe);\n\nexport const ButtonGroup = forwardRef<HTMLDivElement, ButtonGroupProps>(\n (props, ref) => {\n const { children, disabled, grow, attached, ...rest } = props;\n\n return (\n <Group\n {...rest}\n ref={ref}\n attached={attached}\n grow={grow}\n disabled={disabled}\n >\n {children}\n </Group>\n );\n },\n);\nButtonGroup.displayName = \"ButtonGroup\";\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const groupRecipe = defineRecipe({\n className: \"spor-group\",\n base: {\n fontSize: \"lg\",\n },\n variants: {\n disabled: {\n true: {\n \"& > *\": {\n pointerEvents: \"none\",\n backgroundColor: \"surface.disabled\",\n color: \"text.disabled\",\n },\n },\n },\n },\n});\n","import { Clipboard as ChakraClipboard } from \"@chakra-ui/react\";\nimport {\n CheckmarkFill18Icon,\n CopyOutline18Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport * as React from \"react\";\n\nimport { createTexts, useTranslation } from \"@/i18n\";\nimport { Text } from \"@/typography\";\n\nimport { Button, ButtonProps } from \"./Button\";\n\n/**\n *\n * Creates a button that copies text to the clipboard.\n *\n * ```tsx\n * <Clipboard value=\"Some value to be copied\">\n * <ClipboardButton />\n * </Clipboard>\n */\n\nconst ClipboardIcon = React.forwardRef<\n HTMLDivElement,\n ChakraClipboard.IndicatorProps\n>((props, ref) => {\n return (\n <ChakraClipboard.Indicator\n copied={<CheckmarkFill18Icon />}\n {...props}\n ref={ref}\n >\n <CopyOutline18Icon />\n </ChakraClipboard.Indicator>\n );\n});\nClipboardIcon.displayName = \"ClipboardIcon\";\n\nconst ClipboardCopyText = React.forwardRef<\n HTMLDivElement,\n ChakraClipboard.IndicatorProps\n>((props, ref) => {\n const { t } = useTranslation();\n return (\n <ChakraClipboard.Indicator\n copied={<Text variant=\"xs\">{t(texts.copied)}</Text>}\n {...props}\n ref={ref}\n >\n <Text variant=\"xs\">{t(texts.copy)}</Text>\n </ChakraClipboard.Indicator>\n );\n});\nClipboardCopyText.displayName = \"ClipboardCopyText\";\n\ntype ClipboardButtonProps = ButtonProps;\n\nexport const ClipboardButton = React.forwardRef<\n HTMLButtonElement,\n ClipboardButtonProps\n>((props, ref) => {\n return (\n <ChakraClipboard.Trigger asChild>\n <Button ref={ref} size=\"xs\" leftIcon={<ClipboardIcon />} {...props}>\n <ClipboardCopyText />\n </Button>\n </ChakraClipboard.Trigger>\n );\n});\nClipboardButton.displayName = \"ClipboardButton\";\n\nexport const Clipboard = ChakraClipboard.Root;\n\nconst texts = createTexts({\n copy: {\n nb: \"Kopier\",\n nn: \"Kopier\",\n en: \"Copy\",\n sv: \"Kopiera\",\n },\n copied: {\n nb: \"Kopiert\",\n nn: \"Kopiert\",\n en: \"Copied\",\n sv: \"Kopierad\",\n },\n});\n","\"use client\";\nimport {\n Badge as ChakraBadge,\n BadgeProps as ChakraBadgeProps,\n Box,\n} from \"@chakra-ui/react\";\nimport { IconComponent } from \"@vygruppen/spor-icon-react\";\nimport { forwardRef } from \"react\";\n\nexport type BadgeProps = ChakraBadgeProps & {\n icon?: IconComponent;\n};\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { icon, children, ...props },\n ref,\n) {\n return (\n <ChakraBadge ref={ref} {...props}>\n {children}\n {icon && <Box as={icon} />}\n </ChakraBadge>\n );\n});\n","\"use client\";\n\nimport {\n chakra,\n Code as ChakraCode,\n CodeProps,\n RecipeVariantProps,\n} from \"@chakra-ui/react\";\nimport React from \"react\"; // Added explicit React import\n\nimport { codeRecipie } from \"../theme/recipes/code\";\n\ntype CodeVariantProps = RecipeVariantProps<typeof codeRecipie> & CodeProps;\n\nconst StyledCode = chakra(ChakraCode, codeRecipie);\n\nexport const Code = React.forwardRef<HTMLElement, CodeVariantProps>(\n function Code(props, ref) {\n return <StyledCode {...props} ref={ref} />;\n },\n);\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nimport { badgeRecipie } from \"./badge\";\n\nexport const codeRecipie = defineRecipe({\n base: {\n fontFamily: \"monospace\",\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n borderRadius: \"xs\",\n paddingX: 1,\n },\n variants: {\n colorPalette: badgeRecipie.variants?.colorPalette ?? {},\n },\n});\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const badgeRecipie = defineRecipe({\n base: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"fit-content\",\n gap: \"0.5\",\n },\n variants: {\n colorPalette: {\n neutral: {\n backgroundColor: \"surface.color.neutral\",\n color: \"alert.neutral.text\",\n \"& svg\": {\n color: \"alert.neutral.icon\",\n },\n },\n grey: {\n backgroundColor: \"surface.color.grey\",\n color: \"alert.neutral.text\",\n \"& svg\": {\n color: \"alert.neutral.icon\",\n },\n },\n green: {\n backgroundColor: \"surface.color.green\",\n color: \"alert.success.text\",\n \"& svg\": {\n color: \"alert.success.icon\",\n },\n },\n blue: {\n backgroundColor: \"surface.color.blue\",\n color: \"alert.info.text\",\n \"& svg\": {\n color: \"alert.info.icon\",\n },\n },\n cream: {\n backgroundColor: \"surface.color.cream\",\n color: \"alert.important.text\",\n \"& svg\": {\n color: \"alert.important.icon\",\n },\n },\n yellow: {\n backgroundColor: \"surface.color.yellow\",\n color: \"alert.alt.text\",\n \"& svg\": {\n color: \"alert.alt.icon\",\n },\n },\n orange: {\n backgroundColor: \"surface.color.orange\",\n color: \"alert.error.text.secondary\",\n \"& svg\": {\n color: \"alert.error.icon.secondary\",\n },\n },\n red: {\n backgroundColor: \"surface.color.red\",\n color: \"alert.error.text\",\n \"& svg\": {\n color: \"alert.error.icon\",\n },\n },\n },\n size: {\n sm: {\n fontSize: \"desktop.xs\",\n paddingX: \"0.5\",\n paddingY: \"0\",\n fontWeight: \"normal\",\n borderRadius: \"xxs\",\n },\n md: {\n fontSize: \"desktop.xs\",\n paddingX: \"1\",\n paddingY: \"0.5\",\n fontWeight: \"bold\",\n borderRadius: \"xs\",\n },\n lg: {\n fontSize: \"desktop.sm\",\n paddingX: \"1.5\",\n paddingY: \"0.5\",\n fontWeight: \"bold\",\n borderRadius: \"xs\",\n },\n },\n attached: {\n true: {\n borderBottomRadius: \"none\",\n },\n },\n },\n defaultVariants: {\n colorPalette: \"grey\",\n size: \"md\",\n attached: false,\n },\n});\n","\"use client\";\nimport {\n ConditionalValue,\n HeadingProps as ChakraHeadingProps,\n Text,\n} from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nimport { slugify } from \"..\";\n\nexport type HeadingProps = Omit<ChakraHeadingProps, \"textStyle\" | \"as\"> & {\n /** The heading level, e.g. h1, h2, h3... **/\n as: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n /** The size and style of the heading. Defaults to xl-display */\n variant?: ConditionalValue<\n \"sm\" | \"md\" | \"lg\" | \"xxl\" | \"xl-display\" | \"xl-sans\" | \"xs\"\n >;\n /** If true, generate an ID based on the children */\n autoId?: boolean;\n};\n/**\n * Create your own fancy headings with this component.\n *\n * You have to specify what level of heading you want, depending on the context you are using the heading in.\n * You do this with the `as` prop. The options are h1, h2, h3, h4, h5 and h6.\n *\n * ```tsx\n * <Heading as=\"h1\">Page heading</Heading>\n * ```\n *\n * You can specify the variant, which is one of \"xs\", \"sm\", \"md\", \"lg\", \"xl-sans\", \"xs-serif\" and \"xxl\". The default is \"xl-sans\".\n *\n * ```tsx\n * <Heading as=\"h1\" variant=\"xxl\">Look at me!</Heading>\n * ```\n *\n * If you want to generate an ID based on the children, you can use the `autoId` prop.\n * Please note that this only works with string children (not JSX, nor arrays of strings).\n *\n * ```tsx\n * <Heading as=\"h1\" autoId>Page heading</Heading> // Will set id=\"page-heading\"\n * ```\n */\n\nexport const Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n function Heading(props, ref) {\n const {\n as,\n variant = \"xl-display\",\n autoId = false,\n id: externalId,\n ...rest\n } = props;\n\n const id =\n (externalId ?? (autoId && typeof rest.children === \"string\"))\n ? slugify(rest.children as string)\n : undefined;\n\n return <Text as={as} textStyle={variant} id={id} ref={ref} {...rest} />;\n },\n);\n","\"use client\";\nimport {\n Text as ChakraText,\n TextProps as ChakraTextProps,\n} from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nexport type TextProps = Omit<ChakraTextProps, \"textStyle\"> & {\n /** The size and style of the text.\n *\n * Defaults to \"sm\"\n * textStyle values are: \"sm\" | \"md\" | \"lg\" | \"2xl\" | \"xl-display\" | \"xl-sans\" | \"xs\" */\n variant?: ChakraTextProps[\"textStyle\"];\n};\n\n/**\n * A paragraph of text.\n *\n * ```tsx\n * <Text>Welcome to this paragraph of text.</Text>\n * ```\n */\n\nexport const Text = forwardRef<HTMLParagraphElement, TextProps>(\n function Text(props, ref) {\n const { variant = \"sm\", ...rest } = props;\n return <ChakraText {...rest} textStyle={variant} ref={ref} />;\n },\n);\n","export * from \"./Badge\";\nexport * from \"./Code\";\nexport * from \"./Heading\";\nexport * from \"./Text\";\nexport { Em, Kbd } from \"@chakra-ui/react\";\n","\"use client\";\n\nimport {\n CloseFill18Icon,\n CloseFill24Icon,\n CloseFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef } from \"react\";\n\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { IconButton, IconButtonProps } from \"./IconButton\";\n\nexport type CloseButtonProps = Omit<\n IconButtonProps,\n \"variant\" | \"aria-label\"\n> & {\n /** Defaults to a localized version of \"close\" */\n \"aria-label\"?: string;\n};\n\n/**\n * A close button component.\n *\n * This button closes stuff, like modals and dialogs.\n *\n * ```tsx\n * <CloseButton onClick={closeModal} />\n * ```\n */\nexport const CloseButton = forwardRef<HTMLButtonElement, CloseButtonProps>(\n ({ size = \"sm\", ...props }, ref) => {\n const { t } = useTranslation();\n return (\n <IconButton\n variant=\"ghost\"\n icon={<CloseIcon size={size} />}\n size={size}\n aria-label={props[\"aria-label\"] || t(texts.close)}\n {...props}\n ref={ref}\n />\n );\n },\n);\nCloseButton.displayName = \"CloseButton\";\n\nconst CloseIcon = ({ size }: { size: CloseButtonProps[\"size\"] }) => {\n switch (size) {\n case \"xs\":\n case \"sm\": {\n return <CloseFill18Icon />;\n }\n case \"md\": {\n return <CloseFill24Icon />;\n }\n case \"lg\": {\n return <CloseFill30Icon />;\n }\n default: {\n return <CloseFill18Icon />;\n }\n }\n};\n\nconst texts = createTexts({\n close: {\n en: \"Close\",\n nb: \"Lukk\",\n nn: \"Lukk\",\n sv: \"Stäng\",\n },\n});\n","import {\n IconButton as ChakraIconButton,\n type IconButtonProps as ChakraIconButtonProps,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren } from \"react\";\n\nimport { ButtonVariantProps, ColorSpinner } from \"..\";\n\nexport type IconButtonProps = Exclude<\n ChakraIconButtonProps,\n \"variant\" | \"spinner\" | \"icon\"\n> &\n PropsWithChildren<ButtonVariantProps> & {\n /** The button variant.\n *\n */\n variant: \"primary\" | \"secondary\" | \"tertiary\" | \"ghost\" | \"floating\";\n spinner?: React.JSX.Element;\n icon?: React.JSX.Element;\n loading?: boolean;\n download?: string;\n href?: string;\n };\n\n/**\n * An icon-only button.\n *\n * Remember to specify the `aria-label` prop for screen readers.\n *\n * There are several icon button variants. You can specify which one you want with the `variant` prop. The available variants are:\n *\n * - `primary`: This is our main button. It's used for the main actions in a view, like a call to action. There should only be a single primary button in each view.\n * - `secondary`: Used for secondary actions in a view, and when you need to make several actions available at the same time.\n * - `tertiary`: Used for additional choices, like a less important secondary action.\n * - `ghost`: Used inside other interactive elements, like date pickers and input fields.\n * - `floating`: Used for floating actions, like a menu button in a menu.\n *\n * ```tsx\n * <IconButton\n * aria-label=\"Buy trip\"\n * icon={<ShoppingCartIcon />}\n * variant=\"primary\"\n * onClick={confirmOrder}\n * />\n * ```\n *\n * There are also different sizes. You can specify which one you want with the `size` prop. The available sizes are \"lg\", \"md\", \"sm\" and \"xs\".\n *\n * ```tsx\n * <IconButton\n * aria-label=\"Cancel trip\"\n * icon={<CancelIcon />}\n * variant=\"ghost\"\n * size=\"sm\"\n * onClick={cancelOrder}\n * />\n * ```\n */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n (props, ref) => {\n const { icon, size = \"sm\", loading = false, ...rest } = props;\n return (\n <ChakraIconButton\n aria-label={props[\"aria-label\"]}\n size={size}\n position={\"relative\"}\n {...rest}\n ref={ref}\n >\n {loading ? <ColorSpinner width=\"2em\" height=\"2em\" margin={1} /> : icon}\n </ChakraIconButton>\n );\n },\n);\nIconButton.displayName = \"IconButton\";\n","\"use client\";\n\nimport {\n Box,\n BoxProps,\n RecipeVariantProps,\n Text,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren, useEffect } from \"react\";\n\nimport { floatingActionButtonSlotRecipe } from \"../theme/slot-recipes/floating-action-button\";\n\ntype FloatingActionButtonVariantProps = RecipeVariantProps<\n typeof floatingActionButtonSlotRecipe\n>;\n\ntype FloatingActionButtonProps = BoxProps &\n PropsWithChildren<FloatingActionButtonVariantProps> & {\n variant?: \"accent\" | \"core\" | \"brand\";\n placement?: \"bottom right\" | \"bottom left\" | \"top right\" | \"top left\";\n icon: React.ReactNode;\n children: React.ReactNode;\n isTextVisible?: boolean;\n };\n\n/**\n * Creates a floating action button.\n *\n * By default it will be placed at the bottom right of the screen. You can override this with specifying the `placement` prop.\n *\n * ```tsx\n * <FloatingActionButton\n * variant=\"accent\"\n * icon={<TicketControlFill30Icon />}\n * placement=\"bottom right\"\n * />\n */\nexport const FloatingActionButton = forwardRef<\n HTMLButtonElement,\n FloatingActionButtonProps\n>(\n (\n {\n children,\n icon,\n variant,\n isTextVisible: externalIsTextVisible,\n placement = \"bottom right\",\n ...props\n },\n ref,\n ) => {\n const [isTextVisible, setIsTextVisible] = React.useState(\n externalIsTextVisible === undefined ? false : externalIsTextVisible,\n );\n const scrollDirection = useScrollDirection();\n useEffect(() => {\n if (externalIsTextVisible !== undefined) {\n return;\n }\n const id = globalThis.setTimeout(\n () => setIsTextVisible(scrollDirection !== \"down\"),\n 1000,\n );\n return () => globalThis.clearTimeout(id);\n }, [scrollDirection, externalIsTextVisible]);\n\n useEffect(() => {\n setIsTextVisible(!!externalIsTextVisible);\n }, [externalIsTextVisible]);\n\n const recipe = useSlotRecipe({ key: \"floatingActionButton\" });\n const style = recipe({\n variant,\n placement,\n });\n\n return (\n <Box\n css={style.root}\n as=\"button\"\n aria-label={typeof children === \"string\" ? children : undefined}\n ref={ref}\n {...props}\n aria-expanded={isTextVisible}\n >\n <Box css={style.icon}>{icon}</Box>\n {isTextVisible && (\n <Text data-state=\"open\" css={style.text}>\n {children}\n </Text>\n )}\n </Box>\n );\n },\n);\nFloatingActionButton.displayName = \"FloatingActionButton\";\n\ntype ScrollDirection = \"up\" | \"down\" | null;\nconst useScrollDirection = () => {\n const [scrollDirection, setScrollDirection] =\n React.useState<ScrollDirection>(null);\n const lastScrollPosition = React.useRef(\n globalThis.window === undefined ? 0 : window.scrollY,\n );\n React.useEffect(() => {\n const onScroll = () => {\n const delta = window.scrollY - lastScrollPosition.current;\n if (delta === 0) {\n return;\n }\n\n lastScrollPosition.current = window.scrollY;\n setScrollDirection(delta > 0 ? \"down\" : \"up\");\n };\n window.addEventListener(\"scroll\", onScroll);\n return () => {\n window.removeEventListener(\"scroll\", onScroll);\n };\n }, [scrollDirection]);\n return scrollDirection;\n};\n","\"use client\";\n\nimport { Alert as ChakraAlert, Box } from \"@chakra-ui/react\";\nimport {\n AltTransportFill24Icon,\n ErrorFill24Icon,\n ErrorOutline24Icon,\n IconComponent,\n InformationFill24Icon,\n QuestionFill24Icon,\n ServiceFill24Icon,\n SuccessFill24Icon,\n WarningFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef } from \"react\";\n\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { AlertProps } from \"./Alert\";\n\ntype AlertIconProps = {\n variant: ChakraAlert.RootProps[\"variant\"];\n customIcon?: IconComponent;\n};\n\n/**\n * Internal component that shows the correct icon for the alert\n */\nexport const AlertIcon = forwardRef<SVGSVGElement, AlertIconProps>(\n ({ variant, customIcon }, ref) => {\n const { t } = useTranslation();\n\n const Icon = customIcon ?? getIcon(variant);\n\n return (\n <Box\n as={Icon}\n ref={ref}\n aria-label={t(texts[variant as keyof typeof texts])}\n color={customIcon ? `alert.${variant}.icon` : undefined}\n />\n );\n },\n);\n\nAlertIcon.displayName = \"AlertIcon\";\n\nconst getIcon = (variant: AlertProps[\"variant\"]) => {\n switch (variant) {\n case \"info\": {\n return InformationFill24Icon;\n }\n case \"success\": {\n return SuccessFill24Icon;\n }\n case \"important\": {\n return WarningFill24Icon;\n }\n case \"alt\": {\n return AltTransportFill24Icon;\n }\n case \"error\": {\n return ErrorFill24Icon;\n }\n case \"error-secondary\": {\n return ErrorOutline24Icon;\n }\n case \"neutral\": {\n return QuestionFill24Icon;\n }\n case \"service\": {\n return ServiceFill24Icon;\n }\n }\n};\n\nconst texts = createTexts({\n info: {\n nb: \"Informasjon\",\n nn: \"Informasjon\",\n sv: \"Information\",\n en: \"Information\",\n },\n success: {\n nb: \"Suksess\",\n nn: \"Suksess\",\n sv: \"Succé\",\n en: \"Success\",\n },\n important: {\n nb: \"Viktig\",\n nn: \"Viktig\",\n sv: \"Viktig\",\n en: \"Important\",\n },\n alt: {\n nb: \"Alternativ\",\n nn: \"Alternativ\",\n sv: \"Alternativ\",\n en: \"Alternative\",\n },\n error: {\n nb: \"Feil\",\n nn: \"Feil\",\n sv: \"Fel\",\n en: \"Error\",\n },\n \"error-secondary\": {\n nb: \"Feil\",\n nn: \"Feil\",\n sv: \"Fel\",\n en: \"Error\",\n },\n neutral: {\n nb: \"Nøytral\",\n nn: \"Nøytral\",\n sv: \"Neutral\",\n en: \"Neutral\",\n },\n service: {\n nb: \"Service\",\n nn: \"Service\",\n sv: \"Service\",\n en: \"Service\",\n },\n});\n","\"use client\";\n\nimport {\n Accordion,\n Box,\n ConditionalValue,\n HStack,\n RecipeVariantProps,\n Span,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { DropdownDownFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { AccordionItemContent } from \"@/accordion\";\nimport { alertExpandableSlotRecipe } from \"@/theme/slot-recipes/alert-expandable\";\n\nimport { AlertIcon } from \"./AlertIcon\";\n\ntype ExpandableAlertVariantProps = RecipeVariantProps<\n typeof alertExpandableSlotRecipe\n>;\n\ntype ExpandableAlertProps = PropsWithChildren<ExpandableAlertVariantProps> &\n Omit<Accordion.RootProps, \"variant\" | \"orientation\" | \"size\" | \"value\"> & {\n /** The title string */\n title: string;\n /** Whether or not the default state of the expandable alert is open */\n defaultOpen?: boolean;\n /**\n * The HTML element used for the `title` prop.\n *\n * Defaults to h3 */\n headingLevel?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n /** If the user should be able to close the Accordion. Defaults to true */\n collapsible?: boolean;\n /**\n * The variant of the alert. Default: info\n * \"info\"\n | \"success\"\n | \"important\"\n | \"alt-transport\"\n | \"error\"\n | \"service\"\n | \"global-deviation\";\n */\n variant?: ConditionalValue<\n \"important\" | \"success\" | \"alt\" | \"info\" | \"error\" | undefined\n >;\n };\n/**\n * An expandable alert component.\n *\n * A regular alert with an expandable body. The expandable body can be used to provide more information about the alert.\n *\n * ```tsx\n * <ExpandableAlert variant=\"alt-transport\" title=\"Replacement bus service\">\n * The replacement bus service will be running from 10:00 to 16:00.\n * </ExpandableAlert>\n * ```\n */\nexport const ExpandableAlert = forwardRef<HTMLDivElement, ExpandableAlertProps>(\n (props, ref) => {\n const {\n variant = \"info\",\n children,\n title,\n collapsible = true,\n headingLevel = \"h3\",\n defaultOpen = false,\n css,\n ...rest\n } = props;\n const recipe = useSlotRecipe({ key: \"alertExpandable\" });\n const styles = recipe({ variant });\n\n const defaultValue = \"alert-expandable\";\n\n return (\n <Accordion.Root\n defaultValue={defaultOpen ? [defaultValue] : undefined}\n ref={ref}\n css={{ ...styles.root, ...css }}\n collapsible={collapsible}\n {...rest}\n >\n <Accordion.Item value={defaultValue}>\n <Accordion.ItemTrigger css={styles.itemTrigger}>\n <HStack\n gap=\"1\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n flex=\"1\"\n width=\"full\"\n >\n <HStack gap=\"1\" alignItems=\"center\">\n <Box css={styles.indicator}>\n <AlertIcon variant={variant} />\n </Box>\n <Span\n as={headingLevel}\n css={{\n // Truncate the title to one line\n display: \"-webkit-box\",\n overflow: \"hidden\",\n WebkitLineClamp: \"1\",\n WebkitBoxOrient: \"vertical\",\n }}\n >\n {title}\n </Span>\n </HStack>\n\n <Accordion.ItemIndicator>\n <DropdownDownFill18Icon />\n </Accordion.ItemIndicator>\n </HStack>\n </Accordion.ItemTrigger>\n <AccordionItemContent css={styles.itemContent}>\n {children}\n </AccordionItemContent>\n </Accordion.Item>\n </Accordion.Root>\n );\n },\n);\n\nExpandableAlert.displayName = \"ExpandableAlert\";\n","\"use client\";\n\nimport {\n Accordion,\n Flex,\n HStack,\n RecipeVariantProps,\n Span,\n Stack,\n Text,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport {\n DropdownDownFill24Icon,\n ServiceFill24Icon,\n WarningFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { alertServiceSlotRecipe } from \"../theme/slot-recipes/alert-service\";\nimport { AlertProps } from \"./Alert\";\n\ntype ServiceAlertVariantProps = RecipeVariantProps<\n typeof alertServiceSlotRecipe\n>;\n\ntype ServiceAlertProps = Omit<AlertProps, \"variant\"> &\n PropsWithChildren<ServiceAlertVariantProps> &\n Omit<Accordion.RootProps, \"variant\" | \"orientation\" | \"size\" | \"value\"> & {\n /** The title string */\n title: string;\n /** The number of notifications when there is a list of multiple alerts */\n notification: number;\n /** The maximum width to display the service message\n *\n * Defaults to container.md */\n contentWidth: string;\n /** Whether or not the default state of the alert is open */\n defaultOpen?: boolean;\n /**\n * The HTML element used for the `title` prop.\n *\n * Defaults to h3 */\n headingLevel?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n /** The variant of Service Alert. Default: service */\n variant?: \"service\" | \"global-deviation\";\n };\n/**\n * A service alert component.\n *\n * A regular alert with an expandable body, used to show service messages. The expandable body can be used to provide more information about the alert(s).\n *\n * ```tsx\n * <ServiceAlert title=\"Error with Vipps\" notification={1} contentWidth=\"container.md\">\n * <Text>Some customers are experiencing issues logging in with Vipps. Vipps is working to resolve the issue. Try logging in with email instead.</Text>\n * </ServiceAlert>\n * ```\n */\n\nexport const ServiceAlert = forwardRef<HTMLDivElement, ServiceAlertProps>(\n (props, ref) => {\n const {\n variant = \"service\",\n children,\n title,\n notification,\n contentWidth = \"container.md\",\n headingLevel = \"h3\",\n defaultOpen = false,\n collapsible = true,\n css,\n ...rest\n } = props;\n const { t } = useTranslation();\n const recipe = useSlotRecipe({ key: \"alertService\" });\n const styles = recipe({ variant });\n\n const defaultValue = \"spor-service-alert\";\n return (\n <Accordion.Root\n defaultValue={defaultOpen ? [defaultValue] : undefined}\n collapsible={collapsible}\n css={{ ...styles.root, ...css }}\n ref={ref}\n {...rest}\n >\n <Accordion.Item value={defaultValue}>\n <Accordion.ItemTrigger css={styles.itemTrigger}>\n <HStack\n justifyContent=\"space-between\"\n alignContent=\"center\"\n width=\"100%\"\n maxWidth={contentWidth}\n >\n <HStack as={headingLevel} alignItems=\"center\" gap=\"1\">\n {variant === \"service\" ? (\n <ServiceFill24Icon aria-label={t(texts.service)} />\n ) : (\n <WarningFill24Icon\n aria-label={t(texts[\"global-deviation\"])}\n />\n )}\n <Span\n css={{\n // Truncate the title to one line\n display: \"-webkit-box\",\n overflow: \"hidden\",\n WebkitLineClamp: \"1\",\n WebkitBoxOrient: \"vertical\",\n ...styles.itemTriggerTitle,\n }}\n >\n {title}\n </Span>\n </HStack>\n <Flex alignItems=\"center\" gap={[0.5, null, null, 1]}>\n {notification && (\n <Text css={styles.notificationText}>\n {t(texts.notification(notification))}\n </Text>\n )}\n <Accordion.ItemIndicator>\n <DropdownDownFill24Icon color=\"icon.inverted\" />\n </Accordion.ItemIndicator>\n </Flex>\n </HStack>\n </Accordion.ItemTrigger>\n\n <Accordion.ItemContent asChild>\n <Stack flexDirection=\"row\" justifyContent=\"center\" width=\"100%\">\n <Accordion.ItemBody\n as={Stack}\n maxWidth={contentWidth}\n css={styles.itemBody}\n >\n {children}\n </Accordion.ItemBody>\n </Stack>\n </Accordion.ItemContent>\n </Accordion.Item>\n </Accordion.Root>\n );\n },\n);\nServiceAlert.displayName = \"ServiceAlert\";\n\nconst texts = createTexts({\n notification: (notification) => {\n const numNotification = Number(notification);\n return {\n nb: `${numNotification} ${numNotification > 1 ? \"varsler\" : \"varsel\"}`,\n nn: `${numNotification} ${numNotification > 1 ? \"varslar\" : \"varsel\"}`,\n sv: `${numNotification} ${numNotification > 1 ? \"underrättelser\" : \"underrättelse\"}`,\n en: `${numNotification} ${numNotification > 1 ? \"notifications\" : \"notification\"}`,\n };\n },\n service: {\n nb: \"Driftsmelding\",\n nn: \"Driftsmelding\",\n sv: \"Service meddelande\",\n en: \"Service message\",\n },\n \"global-deviation\": {\n nb: \"Trafikkmelding\",\n nn: \"Trafikkmelding\",\n sv: \"Trafikmeddelande\",\n en: \"Traffic announcement\",\n },\n});\n","\"use client\";\n\nimport {\n Breadcrumb as ChakraBreadcrumb,\n BreadcrumbRootProps,\n} from \"@chakra-ui/react\";\nimport { DropdownRightFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React, { forwardRef } from \"react\";\n/**\n * A breadcrumb component.\n *\n * Used to create customizable breadcrumbs.\n * BreadcrumbCurrentLink is used to set the last breadcrumb.\n * BreadcrumbLink is used to set the other breadcrumbs.\n * ```tsx\n * <Breadcrumb>\n * <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\n * <BreadcrumbLink href=\"/Breadcrumb\">Breadcrumb</BreadcrumbLink>\n * <BreadcrumbCurrentLink href=\"/about\">About</BreadcrumbCurrentLink>\n * </Breadcrumb>\n * ```\n */\nexport const Breadcrumb = forwardRef<HTMLDivElement, BreadcrumbRootProps>(\n ({ children, ...props }, ref) => {\n const validChildren = React.Children.toArray(children).filter((element) =>\n React.isValidElement(element),\n );\n\n return (\n <ChakraBreadcrumb.Root ref={ref} {...props}>\n <ChakraBreadcrumb.List>\n {validChildren.map((child, index) => {\n const isLast = index === validChildren.length - 1;\n return (\n <React.Fragment key={index}>\n <ChakraBreadcrumb.Item>{child}</ChakraBreadcrumb.Item>\n {!isLast && (\n <ChakraBreadcrumb.Separator aria-hidden=\"true\">\n <DropdownRightFill18Icon />\n </ChakraBreadcrumb.Separator>\n )}\n </React.Fragment>\n );\n })}\n </ChakraBreadcrumb.List>\n </ChakraBreadcrumb.Root>\n );\n },\n);\n\nBreadcrumb.displayName = \"Breadcrumb\";\n\nexport {\n BreadcrumbCurrentLink,\n BreadcrumbEllipsis,\n BreadcrumbLink,\n} from \"@chakra-ui/react\";\n","\"use client\";\n\nimport type { IconButtonProps } from \"@chakra-ui/react\";\nimport { ClientOnly, IconButton, Skeleton } from \"@chakra-ui/react\";\nimport type { ThemeProviderProps } from \"next-themes\";\nimport { ThemeProvider, useTheme } from \"next-themes\";\nimport * as React from \"react\";\nimport { LuMoon, LuSun } from \"react-icons/lu\";\n\nexport type ColorModeProviderProps = ThemeProviderProps;\n\nexport function ColorModeProvider(props: ColorModeProviderProps) {\n return (\n <ThemeProvider attribute=\"class\" disableTransitionOnChange {...props} />\n );\n}\n\nexport type ColorMode = \"light\" | \"dark\";\n\nexport interface UseColorModeReturn {\n colorMode: ColorMode;\n setColorMode: (colorMode: ColorMode) => void;\n toggleColorMode: () => void;\n}\n\nexport function useColorMode(): UseColorModeReturn {\n const { resolvedTheme, setTheme } = useTheme();\n const toggleColorMode = () => {\n setTheme(resolvedTheme === \"light\" ? \"dark\" : \"light\");\n };\n return {\n colorMode: resolvedTheme as ColorMode,\n setColorMode: setTheme,\n toggleColorMode,\n };\n}\n\nexport function useColorModeValue<T>(light: T, dark: T) {\n const { colorMode } = useColorMode();\n return colorMode === \"dark\" ? dark : light;\n}\n\nexport function ColorModeIcon() {\n const { colorMode } = useColorMode();\n return colorMode === \"dark\" ? <LuMoon /> : <LuSun />;\n}\n\ntype ColorModeButtonProps = Omit<IconButtonProps, \"aria-label\">;\n\nexport const ColorModeButton = React.forwardRef<\n HTMLButtonElement,\n ColorModeButtonProps\n>(function ColorModeButton(props, ref) {\n const { toggleColorMode } = useColorMode();\n return (\n <ClientOnly fallback={<Skeleton boxSize=\"8\" />}>\n <IconButton\n onClick={toggleColorMode}\n variant=\"ghost\"\n aria-label=\"Toggle color mode\"\n size=\"sm\"\n ref={ref}\n {...props}\n css={{\n _icon: {\n width: \"5\",\n height: \"5\",\n },\n }}\n >\n <ColorModeIcon />\n </IconButton>\n </ClientOnly>\n );\n});\n","\"use client\";\nimport {\n Box,\n BoxProps,\n Popover as ChakraPopover,\n PopoverAnchor,\n PopoverRootProps,\n Portal,\n RecipeVariantProps,\n useFieldContext,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren, useId, useRef } from \"react\";\nimport {\n AriaDatePickerProps,\n DateValue,\n I18nProvider,\n useDatePicker,\n} from \"react-aria\";\nimport { useDatePickerState } from \"react-stately\";\n\nimport { Field, FieldBaseProps } from \"@/input/Field\";\n\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\nimport { Calendar } from \"./Calendar\";\nimport { CalendarTriggerButton } from \"./CalendarTriggerButton\";\nimport { DateField } from \"./DateField\";\nimport { StyledField } from \"./StyledField\";\nimport { CalendarVariants } from \"./types\";\nimport { useCurrentLocale } from \"./utils\";\n\nexport type DatePickerVariantProps = RecipeVariantProps<\n typeof datePickerSlotRecipe\n>;\n\ntype DatePickerProps = Omit<AriaDatePickerProps<DateValue>, \"onChange\"> &\n Pick<BoxProps, \"minHeight\" | \"width\"> &\n PropsWithChildren<DatePickerVariantProps> &\n CalendarVariants & {\n name?: string;\n showYearNavigation?: boolean;\n withPortal?: boolean;\n onChange?: (value: DateValue | null) => void;\n positioning?: PopoverRootProps[\"positioning\"];\n } & FieldBaseProps;\n\n/**\n * A date picker component.\n *\n * There are three different variants –`core`, `floating` and `ghost`.\n *\n * ```tsx\n * <DatePicker label=\"Dato\" variant=\"core\" />\n * ```\n */\n\nexport const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n variant,\n errorText,\n minHeight,\n showYearNavigation,\n withPortal = true,\n width = \"auto\",\n invalid = false,\n helperText,\n positioning,\n ...props\n },\n externalRef,\n ) => {\n const chakraFieldProps = useFieldContext();\n const state = useDatePickerState({\n ...props,\n shouldCloseOnSelect: true,\n errorMessage: errorText,\n isRequired: props.isRequired ?? chakraFieldProps?.required,\n validationState: chakraFieldProps?.invalid ? \"invalid\" : \"valid\",\n });\n\n const internalRef = useRef<HTMLDivElement>(null);\n const ref = externalRef ?? internalRef;\n const { labelProps, fieldProps, buttonProps, dialogProps, calendarProps } =\n useDatePicker(\n props,\n state,\n ref as React.MutableRefObject<HTMLDivElement>,\n );\n\n const labelId = `label-${useId()}`;\n const inputGroupId = `input-group-${useId()}`;\n\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({ variant });\n const locale = useCurrentLocale();\n\n const onFieldClick = () => {\n state.setOpen(true);\n };\n\n const popoverContent = (\n <ChakraPopover.Positioner>\n <ChakraPopover.Content css={styles.calendarPopover}>\n <ChakraPopover.Body minWidth={\"20rem\"}>\n <Calendar\n {...calendarProps}\n variant={variant}\n showYearNavigation={showYearNavigation}\n />\n </ChakraPopover.Body>\n </ChakraPopover.Content>\n </ChakraPopover.Positioner>\n );\n\n return (\n <I18nProvider locale={locale}>\n <Box\n position=\"relative\"\n display=\"inline-flex\"\n flexDirection=\"column\"\n width={width}\n >\n <ChakraPopover.Root {...dialogProps} positioning={positioning}>\n <Field\n display=\"inline-flex\"\n id={inputGroupId}\n aria-labelledby={labelId}\n errorText={errorText}\n invalid={invalid}\n helperText={helperText}\n >\n <PopoverAnchor>\n <StyledField\n variant={variant}\n onClick={onFieldClick}\n paddingX={3}\n minHeight={minHeight}\n isDisabled={props.isDisabled}\n ariaLabelledby={labelId}\n >\n <ChakraPopover.Trigger asChild>\n <CalendarTriggerButton\n paddingLeft={1}\n paddingRight={1}\n variant={variant}\n ref={ref}\n {...buttonProps}\n />\n </ChakraPopover.Trigger>\n <DateField\n label={props.label}\n labelProps={labelProps}\n labelId={labelId}\n name={props.name}\n {...fieldProps}\n />\n </StyledField>\n </PopoverAnchor>\n </Field>\n\n {state.isOpen && !props.isDisabled && withPortal && (\n <Portal>{popoverContent}</Portal>\n )}\n {state.isOpen && !props.isDisabled && !withPortal && popoverContent}\n </ChakraPopover.Root>\n </Box>\n </I18nProvider>\n );\n },\n);\nDatePicker.displayName = \"DatePicker\";\n","\"use client\";\n\nimport {\n Field as ChakraField,\n RecipeVariantProps,\n Stack,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nimport { Text } from \"@/typography\";\n\nimport { fieldSlotRecipe } from \"../theme/slot-recipes/field\";\nimport { FloatingLabel } from \"./FloatingLabel\";\nimport { Label } from \"./Label\";\n\ntype FieldVariantProps = RecipeVariantProps<typeof fieldSlotRecipe>;\n\nexport type FieldBaseProps = {\n direction?: \"row\" | \"column\";\n disabled?: boolean;\n invalid?: boolean;\n readOnly?: boolean;\n required?: boolean;\n label?: React.ReactNode;\n helperText?: React.ReactNode;\n errorText?: React.ReactNode;\n floatingLabel?: boolean;\n};\n\nexport type FieldProps = Omit<ChakraField.RootProps, \"label\"> &\n React.PropsWithChildren<FieldVariantProps> &\n FieldBaseProps;\n\n/**\n *\n * Field is a component that wraps around other input components, like `Input` and `Select`.\n *\n * It can have a label, helper text, and error text.\n *\n * ```tsx\n *\n * <Field label=\"E-mail\">\n * <Input />\n * </Field>\n *\n * ```\n *\n * This component is not exported and should be used as a wrapper for other input components.\n */\n\nexport const Field = React.forwardRef<HTMLDivElement, FieldProps>(\n (props, ref) => {\n const {\n label,\n children,\n helperText,\n errorText,\n floatingLabel = false,\n disabled,\n invalid,\n readOnly,\n required,\n direction,\n ...rest\n } = props;\n const recipe = useSlotRecipe({ key: \"field\" });\n const styles = recipe();\n\n return (\n <Stack gap=\"2\" ref={ref} {...rest}>\n <ChakraField.Root\n disabled={disabled}\n invalid={invalid}\n readOnly={readOnly}\n required={required}\n css={styles.root}\n direction={direction}\n >\n {label && !floatingLabel && <Label>{label}</Label>}\n\n {children}\n\n {label && floatingLabel && <FloatingLabel>{label}</FloatingLabel>}\n {errorText && (\n <ChakraField.ErrorText>{errorText}</ChakraField.ErrorText>\n )}\n </ChakraField.Root>\n {helperText && (\n <Text fontSize=\"sm\" color=\"text.tertiary\">\n {helperText}\n </Text>\n )}\n </Stack>\n );\n },\n);\nField.displayName = \"Field\";\n\nexport const FieldErrorText = React.forwardRef<\n HTMLDivElement,\n ChakraField.ErrorTextProps\n>((props, ref) => {\n return (\n <ChakraField.ErrorText ref={ref}>{props.children}</ChakraField.ErrorText>\n );\n});\nFieldErrorText.displayName = \"FieldErrorText\";\n\nexport const FieldLabel = ChakraField.Label;\n","import { defineStyle, Field, FieldLabelProps } from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nexport const FloatingLabel = forwardRef<HTMLLabelElement, FieldLabelProps>(\n (props, ref) => (\n <Field.Label ref={ref} {...props} css={floatingLabelStyles} />\n ),\n);\n\nFloatingLabel.displayName = \"FloatingLabel\";\n\nconst floatingLabelStyles = defineStyle({\n paddingX: 3,\n fontWeight: \"normal\",\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n color: \"text\",\n pointerEvents: \"none\",\n zIndex: \"docked\",\n _disabled: {\n opacity: 0.4,\n },\n\n pos: \"absolute\",\n top: \"0.3rem\",\n transition: \"position\",\n _peerPlaceholderShown: {\n /* For when input is not in focus */\n top: \"0.9rem\",\n color: \"text\",\n fontSize: [\"mobile.sm\", \"desktop.sm\"],\n },\n _peerFocusVisible: {\n /* For when input is in focus */\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n color: \"text\",\n top: \"0.3rem\",\n },\n});\n","import { defineStyle, Field, FieldLabelProps } from \"@chakra-ui/react\";\n\nexport const Label = (props: FieldLabelProps) => (\n <Field.Label {...props} css={labelStyles} />\n);\n\nconst labelStyles = defineStyle({\n fontWeight: \"normal\",\n paddingBottom: 1,\n paddingX: 1,\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n color: \"text\",\n pointerEvents: \"none\",\n zIndex: \"docked\",\n _disabled: {\n opacity: 0.4,\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { datepickerAnatomy } from \"./anatomy\";\n\nexport const datePickerSlotRecipe = defineSlotRecipe({\n slots: datepickerAnatomy.keys(),\n className: \"spor-datepicker\",\n base: {\n wrapper: {\n transitionProperty: \"box-shadow\",\n transitionDuration: \"fast\",\n borderRadius: \"sm\",\n display: \"flex\",\n flex: 1,\n paddingY: 0.5,\n alignItems: \"center\",\n _hover: {\n zIndex: \"docked\",\n },\n _disabled: {\n pointerEvents: \"none\",\n backgroundColor: \"surface.disabled\",\n outline: \"1px solid\",\n outlineColor: \"outline.disabled\",\n color: \"text.disabled\",\n },\n _focusWithin: {\n outline: \"2px solid\",\n outlineColor: \"outline.focus\",\n },\n },\n inputLabel: {\n fontSize: \"mobile.xs\",\n margin: 0,\n cursor: \"text\",\n },\n dateTimeSegment: {\n _focus: {\n backgroundColor: \"ghost.surface.active\",\n color: \"text.default\",\n },\n },\n box: {\n width: \"100%\",\n },\n\n calendarTriggerButton: {\n position: \"relative\",\n borderRadius: \"xl\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transitionProperty: \"box-shadow, background-color\",\n right: \"0.5rem\",\n _hover: {\n backgroundColor: \"ghost.surface.hover\",\n },\n _active: {\n backgroundColor: \"ghost.surface.active\",\n },\n _invalid: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n },\n },\n arrow: {\n backgroundColor: \"surface\",\n },\n calendarPopover: {\n color: \"core.text\",\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n boxShadow: \"md\",\n backgroundColor: \"floating.surface\",\n },\n rangeCalendarPopover: {\n width: \"43rem\",\n maxWidth: \"100vw\",\n },\n weekdays: {\n color: \"core.text\",\n fontWeight: \"bold\",\n },\n weekend: {\n color: \"accent.text\",\n fontWeight: \"bold\",\n },\n cell: {\n '&[aria-selected=\"true\"] + [aria-selected=\"true\"] > button': {\n \"&::before\": {\n content: '\"\"',\n display: \"block\",\n height: \"100%\",\n position: \"absolute\",\n left: \"-50%\",\n top: 0,\n bottom: 0,\n zIndex: -1,\n backgroundColor: \"brand.surface\",\n },\n },\n },\n dateCell: {\n color: \"core.text\",\n borderRadius: \"xl\",\n position: \"relative\",\n transition: \".1s ease-in-out\",\n userSelect: \"none\",\n width: [6, 7],\n height: [6, 7],\n transitionProperty: \"common\",\n\n _hover: {\n backgroundColor: \"ghost.surface.hover\",\n },\n _active: {\n backgroundColor: \"ghost.surface.active\",\n },\n _disabled: {\n backgroundColor: \"surface.disabled\",\n color: \"text.disabled\",\n pointerEvents: \"none\",\n },\n _selected: {\n backgroundColor: \"brand.surface\",\n color: \"brand.text\",\n _active: {\n backgroundColor: \"brand.surface.active\",\n color: \"brand.text\",\n },\n },\n \"&[data-today]\": {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n \"&[data-unavailable]\": {\n pointerEvents: \"none\",\n borderRadius: \"xl\",\n backgroundColor: \"surface.disabled\",\n color: \"text.disabled\",\n },\n },\n },\n variants: {\n variant: {\n core: {\n wrapper: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n backgroundColor: \"core.surface\",\n\n _hover: {\n outline: \"2px solid\",\n\n outlineColor: \"core.outline.hover\",\n _active: {\n backgroundColor: \"ghost.surface.active\",\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n },\n _invalid: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n },\n },\n },\n floating: {\n wrapper: {\n backgroundColor: {\n _light: \"bg\",\n _dark: `color-mix(in srgb, white 10%, var(--spor-colors-bg))`,\n },\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n boxShadow: \"sm\",\n\n _hover: {\n outline: \"1px solid\",\n outlineColor: \"floating.outline.hover\",\n _active: {\n backgroundColor: \"ghost.surface.active\",\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n },\n _invalid: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n },\n },\n },\n ghost: {\n wrapper: {\n _hover: {\n outline: \"2px solid\",\n outlineColor: \"core.outline.hover\",\n _active: {\n backgroundColor: \"ghost.surface.active\",\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n },\n _invalid: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n },\n },\n },\n },\n },\n defaultVariants: {\n variant: \"core\",\n },\n});\n","import { createAnatomy } from \"@ark-ui/react/anatomy\";\nimport { popoverAnatomy as arkPopoverAnatomy } from \"@ark-ui/react/popover\";\n\nexport const accordionAnatomy = createAnatomy(\"accordion\").parts(\n \"root\",\n \"itemTrigger\",\n \"item\",\n \"itemBody\",\n \"itemContent\",\n \"itemIndicator\",\n);\n\nexport const alertAnatomy = createAnatomy(\"alert\").parts(\n \"root\",\n \"indicator\",\n \"title\",\n \"closeButton\",\n \"content\",\n \"description\",\n);\n\nexport const alertExpandableAnatomy = createAnatomy(\"alert-expandable\").parts(\n \"root\",\n \"itemTrigger\",\n \"itemContent\",\n \"indicator\",\n \"title\",\n \"itemIndicator\",\n);\n\nexport const alertServiceAnatomy = createAnatomy(\"service-alert\").parts(\n \"root\",\n \"itemTrigger\",\n \"itemTriggerTitle\",\n \"notificationText\",\n \"itemContent\",\n \"itemBody\",\n);\n\nexport const listAnatomy = createAnatomy(\"list\").parts(\n \"root\",\n \"item\",\n \"icon\",\n \"indicator\",\n);\n\nexport const tableAnatomy = createAnatomy(\"table\").parts(\n \"root\",\n \"body\",\n \"row\",\n \"cell\",\n \"columnHeader\",\n \"caption\",\n \"footer\",\n \"header\",\n);\n\nexport const fieldAnatomy = createAnatomy(\"field\").parts(\n \"root\",\n \"label\",\n \"requiredIndicator\",\n \"helperText\",\n \"errorText\",\n);\n\nexport const dialogAnatomy = createAnatomy(\"dialog\").parts(\n \"header\",\n \"body\",\n \"footer\",\n \"backdrop\",\n \"positioner\",\n \"content\",\n \"title\",\n \"description\",\n \"closeTrigger\",\n);\n\nexport const paginationAnatomy = createAnatomy(\"pagination\").parts(\n \"list\",\n \"item\",\n);\nexport const linjetagAnatomy = createAnatomy(\"linjetag\").parts(\n \"iconContainer\",\n \"icon\",\n \"root\",\n \"title\",\n \"desc\",\n);\n\nexport const infoTagAnatomy = createAnatomy(\"info-tag\").parts(\n \"container\",\n \"iconContainer\",\n \"icon\",\n \"textContainer\",\n \"title\",\n \"description\",\n \"walk\",\n);\n\nexport const travelTagAnatomy = createAnatomy(\"travel-tag\").parts(\n \"container\",\n \"iconContainer\",\n \"icon\",\n \"textContainer\",\n \"title\",\n \"description\",\n \"deviationIcon\",\n);\n\nexport const drawerAnatomy = createAnatomy(\"drawer\").parts(\n \"header\",\n \"body\",\n \"backdrop\",\n \"positioner\",\n \"content\",\n \"footer\",\n \"title\",\n \"description\",\n \"closeTrigger\",\n);\n\nexport const checkboxAnatomy = createAnatomy(\"checkbox\").parts(\n \"root\",\n \"control\",\n \"label\",\n \"description\",\n \"addon\",\n \"indicator\",\n \"content\",\n);\n\nexport const breadcrumbAnatomy = createAnatomy(\"breadcrumb\").parts(\n \"link\",\n \"currentLink\",\n \"list\",\n \"separator\",\n);\n\nexport const stepperAnatomy = createAnatomy(\"stepper\").parts(\n \"root\",\n \"container\",\n \"innerContainer\",\n \"title\",\n \"stepCounter\",\n \"stepContainer\",\n \"stepButton\",\n \"stepNumber\",\n \"stepTitle\",\n \"closeButton\",\n \"backButton\",\n);\n\nexport const radioCardAnatomy = createAnatomy(\"radio-card\").parts(\n \"root\",\n \"item\",\n \"label\",\n \"itemText\",\n \"itemDescription\",\n \"itemContent\",\n);\n\nexport const radioAnatomy = createAnatomy(\"radio\").parts(\n \"root\",\n \"item\",\n \"itemControl\",\n \"itemText\",\n \"label\",\n);\n\nexport const listBoxAnatomy = createAnatomy(\"listbox\").parts(\n \"root\",\n \"item\",\n \"label\",\n \"description\",\n);\n\nexport const NativeSelectAnatomy = createAnatomy(\"native-select\").parts(\n \"root\",\n \"field\",\n \"icon\",\n);\n\nexport const tabsAnatomy = createAnatomy(\"tabs\").parts(\n \"root\",\n \"list\",\n \"trigger\",\n \"content\",\n \"indicator\",\n);\n\nexport const switchAnatomy = createAnatomy(\"switch\").parts(\n \"root\",\n \"thumb\",\n \"control\",\n \"label\",\n);\n\nexport const selectAnatomy = createAnatomy(\"select\").parts(\n \"root\",\n \"trigger\",\n \"indicatorGroup\",\n \"indicator\",\n \"selectContent\",\n \"item\",\n \"control\",\n \"itemText\",\n \"itemDescription\",\n \"itemGroup\",\n \"itemGroupLabel\",\n \"label\",\n \"valueText\",\n);\nexport const cardSelectAnatomy = createAnatomy(\"card-select\").parts(\n \"trigger\",\n \"card\",\n);\n\nexport const numericStepperAnatomy = createAnatomy(\"numeric-stepper\").parts(\n \"root\",\n \"container\",\n \"input\",\n \"text\",\n \"button\",\n);\nexport const mediaControllerAnatomy = createAnatomy(\n \"media-controller-button\",\n).parts(\"root\", \"icon\");\nexport const progressBarAnotomy = createAnatomy(\"progress-bar\").parts(\n \"container\",\n \"background\",\n \"progress\",\n \"description\",\n \"disabledBackground\",\n);\n\nexport const toastAnatomy = createAnatomy(\"toast\").parts(\n \"root\",\n \"title\",\n \"description\",\n \"indicator\",\n \"closeTrigger\",\n \"actionTrigger\",\n);\n\nexport const floatingActionButtonAnatomy = createAnatomy(\n \"floating-action-button\",\n).parts(\"root\", \"icon\", \"text\");\n\nexport const popoverAnatomy = arkPopoverAnatomy.extendWith(\n \"header\",\n \"body\",\n \"footer\",\n);\n\nexport const datepickerAnatomy = createAnatomy(\"datepicker\").parts(\n \"wrapper\",\n \"calendarTriggerButton\",\n \"arrow\",\n \"calendarPopover\",\n \"calendar\",\n \"weekdays\",\n \"weekend\",\n \"dateCell\",\n \"inputLabel\",\n \"dateTimeSegment\",\n \"cell\",\n \"box\",\n \"rangeCalendarPopover\",\n);\n\nexport const checkboxCardAnatomy = createAnatomy(\"checkbox-card\", [\n \"root\",\n \"control\",\n \"label\",\n \"description\",\n \"addon\",\n \"indicator\",\n \"content\",\n]);\n","\"use client\";\n\nimport { Box, useSlotRecipe } from \"@chakra-ui/react\";\nimport { createCalendar } from \"@internationalized/date\";\nimport {\n CalendarProps as ReactAriaCalendarProps,\n DateValue,\n useCalendar,\n} from \"react-aria\";\nimport { useCalendarState } from \"react-stately\";\n\nimport { datePickerSlotRecipe } from \"@/theme/slot-recipes/datepicker\";\n\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { CalendarHeader } from \"./CalendarHeader\";\nimport { CalendarVariants } from \"./types\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype CalendarProps = ReactAriaCalendarProps<DateValue> &\n CalendarVariants & {\n showYearNavigation?: boolean;\n };\nexport function Calendar({\n showYearNavigation,\n variant,\n ...props\n}: CalendarProps) {\n const { t } = useTranslation();\n const locale = useCurrentLocale();\n const state = useCalendarState({\n ...props,\n locale,\n createCalendar,\n });\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({ variant });\n const { calendarProps } = useCalendar(props, state);\n const calendarAriaLabel = calendarProps[\"aria-label\"];\n\n const ariaLabel =\n t(texts.calendar) + (calendarAriaLabel ? ` ${calendarAriaLabel}` : \"\");\n\n return (\n <Box {...calendarProps} aria-label={ariaLabel} css={styles.box}>\n <CalendarHeader state={state} showYearNavigation={showYearNavigation} />\n <CalendarGrid variant={variant} state={state} />\n </Box>\n );\n}\n\nconst texts = createTexts({\n calendar: {\n nb: \"Kalender\",\n nn: \"Kalender\",\n sv: \"Kalender\",\n en: \"Calendar\",\n },\n});\n","\"use client\";\n\nimport { Box, useSlotRecipe } from \"@chakra-ui/react\";\nimport { endOfMonth, getWeeksInMonth } from \"@internationalized/date\";\nimport { AriaCalendarGridProps, useCalendarGrid } from \"react-aria\";\nimport { CalendarState, RangeCalendarState } from \"react-stately\";\n\nimport { Language, useTranslation } from \"../i18n\";\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\nimport { Text } from \"../typography\";\nimport { CalendarCell } from \"./CalendarCell\";\nimport { CalendarVariants } from \"./types\";\nimport { useCurrentLocale } from \"./utils\";\n\nconst weekDays: Record<Language, string[]> = {\n nb: [\"Ma\", \"Ti\", \"On\", \"To\", \"Fr\", \"Lø\", \"Sø\"],\n nn: [\"Ma\", \"Ti\", \"On\", \"To\", \"Fr\", \"Lø\", \"Sø\"],\n sv: [\"Må\", \"Ti\", \"On\", \"To\", \"Fr\", \"Lö\", \"Sö\"],\n en: [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n};\n\ntype CalendarGridProps = AriaCalendarGridProps &\n CalendarVariants & {\n state: CalendarState | RangeCalendarState;\n offset?: { months?: number };\n };\nexport function CalendarGrid({\n state,\n variant,\n offset = {},\n}: CalendarGridProps) {\n const { language } = useTranslation();\n const locale = useCurrentLocale();\n const startDate = state.visibleRange.start.add(offset);\n const endDate = endOfMonth(startDate);\n const { gridProps, headerProps } = useCalendarGrid(\n {\n startDate,\n endDate,\n },\n state,\n );\n\n // Get the number of weeks in the month so we can render the proper number of rows.\n const weeksInMonth = getWeeksInMonth(state.visibleRange.start, locale);\n const weeksInMonthRange = Array.from({ length: weeksInMonth })\n .fill(0)\n .map((_, i) => i);\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({ variant });\n\n return (\n <Box as=\"table\" {...gridProps} css={styles.box}>\n <thead {...headerProps}>\n <tr>\n {weekDays[language].map((day, index) => {\n return (\n <Text\n as=\"th\"\n key={index}\n css={index < 5 ? styles.weekdays : styles.weekend}\n variant=\"sm\"\n >\n {day}\n </Text>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {weeksInMonthRange.map((weekIndex) => (\n <tr key={weekIndex}>\n {state\n .getDatesInWeek(weekIndex, startDate)\n .map((date, dayIndex) =>\n date ? (\n <CalendarCell\n variant={variant}\n key={dayIndex}\n state={state}\n date={date}\n currentMonth={startDate}\n />\n ) : (\n <td key={dayIndex} />\n ),\n )}\n </tr>\n ))}\n </tbody>\n </Box>\n );\n}\n","\"use client\";\n\nimport { Box, useSlotRecipe } from \"@chakra-ui/react\";\nimport {\n CalendarDate,\n DateValue,\n isSameMonth,\n isToday,\n} from \"@internationalized/date\";\nimport { PropsWithChildren, useEffect, useRef } from \"react\";\nimport { useCalendarCell } from \"react-aria\";\nimport { CalendarState, RangeCalendarState } from \"react-stately\";\n\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\nimport { DatePickerVariantProps } from \"./DatePicker\";\nimport { CalendarVariants } from \"./types\";\n\ntype CalendarCellProps = PropsWithChildren<DatePickerVariantProps> &\n CalendarVariants & {\n state: CalendarState | RangeCalendarState;\n date: CalendarDate;\n currentMonth: DateValue;\n };\nexport function CalendarCell({\n state,\n date,\n currentMonth,\n variant,\n}: CalendarCellProps) {\n const ref = useRef<HTMLButtonElement>(null);\n const {\n cellProps,\n buttonProps,\n isSelected,\n isDisabled,\n isUnavailable,\n isOutsideVisibleRange,\n } = useCalendarCell({ date }, state, ref);\n\n const isOutsideMonth = !isSameMonth(currentMonth, date);\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({ variant });\n\n const stateProps: Record<string, unknown> = {};\n if (isSelected) {\n stateProps[\"data-selected\"] = true;\n }\n if (isDisabled || isUnavailable) {\n stateProps[\"data-disabled\"] = true;\n }\n if (isToday(date, \"Europe/Oslo\")) {\n stateProps[\"data-today\"] = true;\n }\n if (isOutsideMonth) {\n stateProps[\"data-unavailable\"] = true;\n }\n\n /* \n Workaround to fix click througs on mobile devices\n Related to https://github.com/adobe/react-spectrum/issues/4970\n TODO: Follow up with react-spectrum to see if they can solve it on their end\n */\n useEffect(() => {\n ref.current?.addEventListener(\n \"touchend\",\n (event: TouchEvent) => {\n event.preventDefault();\n },\n { passive: false, once: true },\n );\n }, []);\n\n return (\n <Box as=\"td\" {...cellProps} textAlign=\"center\" css={styles.cell}>\n <Box\n as=\"button\"\n {...buttonProps}\n {...stateProps}\n ref={ref}\n css={styles.dateCell}\n hidden={isOutsideVisibleRange}\n >\n {date.day}\n </Box>\n </Box>\n );\n}\n","import { CalendarDateTime, parseTime } from \"@internationalized/date\";\n\nimport { useTranslation } from \"..\";\n\n/**\n * Returns the currently selected language as a BCF47 language tag.\n * This is useful for passing into the react-aria hooks\n */\nexport const useCurrentLocale = () => {\n const { language } = useTranslation();\n switch (language) {\n case \"nb\": {\n return \"nb-NO\";\n }\n case \"nn\": {\n return \"nb-NO\";\n }\n case \"sv\": {\n return \"sv-SE\";\n }\n case \"en\": {\n return \"en-GB\";\n }\n default: {\n return \"nb-NO\";\n }\n }\n};\n\n/** Gets the current time as a Time object */\nexport const getCurrentTime = () => {\n const now = new Date();\n return parseTime(now.toTimeString().split(\" \")[0]);\n};\n\n/** Gets a readable timestamp from a given time object */\nexport const getTimestampFromTime = (time: CalendarDateTime | null) => {\n return `${time?.hour ?? 0}:${time?.minute ?? 0}`;\n};\n","\"use client\";\nimport { Box, Flex } from \"@chakra-ui/react\";\nimport { getLocalTimeZone } from \"@internationalized/date\";\nimport {\n ArrowLeftOutline24Icon,\n ArrowRightOutline24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { CalendarState, RangeCalendarState } from \"react-stately\";\n\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { CalendarNavigationButton } from \"./CalendarNavigationButton\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype CalendarHeaderProps = {\n state: CalendarState | RangeCalendarState;\n title?: string;\n showYearNavigation?: boolean;\n};\nexport function CalendarHeader({\n state,\n showYearNavigation = false,\n title,\n}: CalendarHeaderProps) {\n const locale = useCurrentLocale();\n const monthFormatter = Intl.DateTimeFormat(locale, {\n month: \"long\",\n });\n const jsDate = state.focusedDate.toDate(getLocalTimeZone());\n\n const monthTitle = monthFormatter.format(jsDate);\n const monthAndYearTitle = `${monthTitle} ${state.focusedDate.year}`;\n\n const isPreviousYearDisabled = state.isInvalid(\n state.visibleRange.start.subtract({ years: 1 }),\n );\n const isNextYearDisabled = state.isInvalid(\n state.visibleRange.start.add({ years: 1 }),\n );\n const areAllOtherYearsDisabled = isPreviousYearDisabled && isNextYearDisabled;\n const isYearPickerVisible = showYearNavigation && !areAllOtherYearsDisabled;\n\n return (\n <Flex alignItems=\"center\" paddingBottom=\"4\" justifyContent=\"space-between\">\n <CalendarNavigator\n title={title || (isYearPickerVisible ? monthTitle : monthAndYearTitle)}\n unit=\"month\"\n onPrevious={() =>\n state.setFocusedDate(state.focusedDate.subtract({ months: 1 }))\n }\n onNext={() =>\n state.setFocusedDate(state.focusedDate.add({ months: 1 }))\n }\n isNextDisabled={!state.isPreviousVisibleRangeInvalid}\n isPreviousDisabled={!state.isNextVisibleRangeInvalid}\n />\n {isYearPickerVisible && (\n <CalendarNavigator\n title={jsDate.getFullYear().toString()}\n unit=\"year\"\n onPrevious={() =>\n state.setFocusedDate(state.focusedDate.subtract({ years: 1 }))\n }\n onNext={() =>\n state.setFocusedDate(state.focusedDate.add({ years: 1 }))\n }\n isPreviousDisabled={isPreviousYearDisabled}\n isNextDisabled={isNextYearDisabled}\n />\n )}\n </Flex>\n );\n}\n\nconst capitalize = (str: string = \"\") =>\n str.charAt(0).toUpperCase() + str.slice(1);\n\ntype CalendarNavigatorProps = {\n /** The unit of time you want to navigate with */\n unit: \"month\" | \"year\";\n /** The text in the middle */\n title: string;\n /** Callback for when you click back */\n onPrevious: () => void;\n /** Callback for when you click forward */\n onNext: () => void;\n isNextDisabled: boolean;\n isPreviousDisabled: boolean;\n};\nexport const CalendarNavigator = ({\n title,\n unit,\n onPrevious,\n isPreviousDisabled,\n onNext,\n isNextDisabled,\n}: CalendarNavigatorProps) => {\n const { t } = useTranslation();\n return (\n <Flex alignItems=\"center\" flexGrow={1}>\n <CalendarNavigationButton\n onPress={onPrevious}\n isDisabled={isPreviousDisabled}\n icon={<ArrowLeftOutline24Icon />}\n aria-label={`${t(texts.previous)} ${t(texts[unit])}`}\n />\n <Box\n role=\"heading\"\n fontSize=\"sm\"\n fontWeight=\"bold\"\n flex=\"1\"\n textAlign=\"center\"\n color={\"core.text\"}\n >\n {capitalize(title)}\n </Box>\n <CalendarNavigationButton\n onPress={onNext}\n isDisabled={isNextDisabled}\n icon={<ArrowRightOutline24Icon />}\n aria-label={`${t(texts.next)} ${t(texts[unit])}`}\n />\n </Flex>\n );\n};\n\nconst texts = createTexts({\n previous: {\n nb: \"Forrige\",\n nn: \"Forrige\",\n sv: \"Föregående\",\n en: \"Previous\",\n },\n next: {\n nb: \"Neste\",\n nn: \"Neste\",\n sv: \"Nästa\",\n en: \"Next\",\n },\n month: {\n nb: \"måned\",\n nn: \"månad\",\n sv: \"månad\",\n en: \"month\",\n },\n year: {\n nb: \"år\",\n nn: \"år\",\n sv: \"år\",\n en: \"year\",\n },\n});\n","\"use client\";\nimport React, { useRef } from \"react\";\nimport { AriaButtonProps, useButton } from \"react-aria\";\n\nimport { IconButton } from \"..\";\n\ntype CalendarButtonProps = AriaButtonProps<\"button\"> & {\n icon: React.ReactElement;\n \"aria-label\": string;\n};\nexport function CalendarNavigationButton({\n icon,\n \"aria-label\": ariaLabel,\n ...rest\n}: CalendarButtonProps) {\n const ref = useRef(null);\n const { buttonProps } = useButton(rest, ref);\n return (\n <IconButton\n {...buttonProps}\n ref={ref}\n icon={icon}\n aria-label={ariaLabel}\n size=\"sm\"\n variant=\"ghost\"\n />\n );\n}\n","\"use client\";\n\nimport { BoxProps, PopoverAnchor, useSlotRecipe } from \"@chakra-ui/react\";\nimport { CalendarOutline24Icon } from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\nimport { AriaButtonProps } from \"react-aria\";\n\nimport {\n createTexts,\n DatePickerVariantProps,\n IconButton,\n useTranslation,\n} from \"..\";\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\nimport { CalendarVariants } from \"./types\";\n\ntype CalendarTriggerButtonProps = AriaButtonProps<\"button\"> &\n PropsWithChildren<DatePickerVariantProps> &\n BoxProps &\n CalendarVariants & {\n disabled?: boolean;\n ariaLabelledby?: string;\n };\nexport const CalendarTriggerButton = forwardRef<\n HTMLDivElement,\n CalendarTriggerButtonProps\n>(({ variant, disabled, ariaLabelledby, ...buttonProps }, ref) => {\n const { t } = useTranslation();\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({ variant });\n\n return (\n <PopoverAnchor {...buttonProps} ref={ref}>\n <IconButton\n icon={<CalendarOutline24Icon />}\n aria-label={t(texts.openCalendar)}\n css={styles.calendarTriggerButton}\n variant=\"ghost\"\n disabled={disabled}\n aria-labelledby={ariaLabelledby}\n />\n </PopoverAnchor>\n );\n});\nCalendarTriggerButton.displayName = \"CalendarTriggerButton\";\n\nconst texts = createTexts({\n openCalendar: {\n nb: \"Åpne kalender\",\n nn: \"Åpne kalendar\",\n sv: \"Öppna kalender\",\n en: \"Open calendar\",\n },\n});\n","\"use client\";\nimport { Box, Flex, useSlotRecipe } from \"@chakra-ui/react\";\nimport { DateValue, GregorianCalendar } from \"@internationalized/date\";\nimport { DOMAttributes, FocusableElement } from \"@react-types/shared\";\nimport React, { forwardRef, PropsWithChildren, RefObject, useRef } from \"react\";\nimport { AriaDateFieldProps, useDateField } from \"react-aria\";\nimport { DateSegment, useDateFieldState } from \"react-stately\";\n\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\nimport { DatePickerVariantProps } from \"./DatePicker\";\nimport { DateTimeSegment } from \"./DateTimeSegment\";\nimport { useCurrentLocale } from \"./utils\";\n\nfunction createCalendar(identifier: string) {\n switch (identifier) {\n case \"gregory\": {\n return new GregorianCalendar();\n }\n default: {\n throw new Error(`Unsupported calendar ${identifier}`);\n }\n }\n}\n\ntype DateFieldProps = AriaDateFieldProps<DateValue> &\n PropsWithChildren<DatePickerVariantProps> & {\n label?: React.ReactNode;\n labelProps?: DOMAttributes<FocusableElement>;\n name?: string;\n labelId?: string;\n };\nexport const DateField = forwardRef<HTMLDivElement, DateFieldProps>(\n ({ labelId, ...props }, externalRef) => {\n const locale = useCurrentLocale();\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({});\n const state = useDateFieldState({\n ...props,\n locale,\n createCalendar,\n });\n\n const { t } = useTranslation();\n\n const internalRef = useRef(null);\n const ref = externalRef ?? internalRef;\n const { fieldProps } = useDateField(\n props,\n state,\n ref as RefObject<HTMLDivElement>,\n );\n\n return (\n <Box minWidth=\"6rem\" width=\"100%\">\n {props.label && (\n <Box\n as=\"label\"\n css={styles.inputLabel}\n position=\"absolute\"\n paddingTop=\"2px\"\n id={labelId}\n >\n {props.label}\n </Box>\n )}\n <Flex {...fieldProps} ref={ref} paddingTop=\"3\" paddingBottom=\"0.5\">\n {state.segments.map((segment, i) => (\n <DateTimeSegment\n key={i}\n segment={segment}\n ariaDescription={t(getAriaLabel(segment.type))}\n ariaLabel={labelId}\n state={state}\n />\n ))}\n </Flex>\n <input\n type=\"hidden\"\n value={state.value?.toString() ?? \"\"}\n name={props.name}\n />\n </Box>\n );\n },\n);\nDateField.displayName = \"DateField\";\n\nconst texts = createTexts({\n day: {\n nb: \"Velg dag\",\n nn: \"Vel dag\",\n sv: \"Välj dag\",\n en: \"Choose day\",\n },\n month: {\n nb: \"Velg måned\",\n nn: \"Vel månad\",\n sv: \"Välj månad\",\n en: \"Choose month\",\n },\n year: {\n nb: \"Velg år\",\n nn: \"Vel år\",\n sv: \"Välj år\",\n en: \"Choose year\",\n },\n});\n\nconst getAriaLabel = (segmentType: DateSegment[\"type\"]) => {\n switch (segmentType) {\n case \"day\": {\n return texts.day;\n }\n case \"month\": {\n return texts.month;\n }\n case \"year\": {\n return texts.year;\n }\n default: {\n return texts.day;\n }\n }\n};\n","\"use client\";\nimport { Box, useSlotRecipe } from \"@chakra-ui/react\";\nimport { forwardRef, PropsWithChildren, RefObject, useRef } from \"react\";\nimport { useDateSegment } from \"react-aria\";\nimport { DateFieldState, DateSegment } from \"react-stately\";\n\nimport { DatePickerVariantProps } from \"..\";\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\n\ntype DateTimeSegmentProps = PropsWithChildren<DatePickerVariantProps> & {\n segment: DateSegment;\n state: DateFieldState;\n ariaLabel?: string;\n ariaDescription?: string;\n};\n/**\n * A date time segment is a part of a date or a time stamp.\n *\n * Examples could be the day, month, year, hour, minute, second, etc.\n *\n * This component should be used with the react-aria library, and is not meant to be used directly.\n * */\nexport const DateTimeSegment = forwardRef<HTMLDivElement, DateTimeSegmentProps>(\n ({ segment, state, ariaLabel, ariaDescription }, externalRef) => {\n const internalRef = useRef(null);\n const ref = externalRef ?? internalRef;\n\n const { segmentProps } = useDateSegment(\n segment,\n state,\n ref as RefObject<HTMLDivElement>,\n );\n\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({\n isPlaceholder: segment.isPlaceholder,\n isEditable: segment.isEditable,\n });\n\n return (\n <Box\n {...segmentProps}\n ref={ref}\n style={{\n ...segmentProps.style,\n boxSizing: \"content-box\",\n }}\n textAlign=\"center\"\n outline=\"none\"\n borderRadius=\"xs\"\n fontSize={[\"mobile.sm\", \"desktop.sm\"]}\n css={styles.dateTimeSegment}\n aria-description={ariaDescription}\n aria-labelledby={ariaLabel}\n >\n {isPaddable(segment.type)\n ? segment.text.padStart(2, \"0\")\n : segment.text}\n </Box>\n );\n },\n);\nDateTimeSegment.displayName = \"DateTimeSegment\";\n\nconst isPaddable = (segmentType: DateSegment[\"type\"]) =>\n segmentType === \"month\" ||\n segmentType === \"day\" ||\n segmentType === \"hour\" ||\n segmentType === \"minute\" ||\n segmentType === \"second\";\n","\"use client\";\nimport {\n Box,\n BoxProps,\n useFieldContext,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\nimport { DatePickerVariantProps } from \"./DatePicker\";\nimport { CalendarVariants } from \"./types\";\n\ntype StyledFieldProps = BoxProps &\n PropsWithChildren<DatePickerVariantProps> &\n CalendarVariants & {\n isDisabled?: boolean;\n ariaLabelledby?: string;\n };\nexport const StyledField = forwardRef<HTMLDivElement, StyledFieldProps>(\n function StyledField(props, ref) {\n const { children, variant, isDisabled, ariaLabelledby, ...otherProps } =\n props;\n const { invalid } = useFieldContext() ?? {\n isInvalid: false,\n };\n\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({ variant });\n\n return (\n <Box\n {...otherProps}\n css={styles.wrapper}\n ref={ref}\n aria-invalid={invalid}\n aria-disabled={isDisabled}\n aria-labelledby={ariaLabelledby}\n >\n {children}\n </Box>\n );\n },\n);\n","\"use client\";\nimport {\n Box,\n BoxProps,\n Popover as ChakraPopover,\n PopoverAnchor,\n PopoverRootProps,\n Portal,\n useFieldContext,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { DateValue } from \"@internationalized/date\";\nimport { PropsWithChildren, useRef } from \"react\";\nimport {\n AriaDateRangePickerProps,\n I18nProvider,\n useDateRangePicker,\n useId,\n} from \"react-aria\";\nimport { useDateRangePickerState } from \"react-stately\";\n\nimport { Field, FieldBaseProps } from \"../input/Field\";\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\nimport { CalendarTriggerButton } from \"./CalendarTriggerButton\";\nimport { DateField } from \"./DateField\";\nimport { DatePickerVariantProps } from \"./DatePicker\";\nimport { RangeCalendar } from \"./RangeCalendar\";\nimport { StyledField } from \"./StyledField\";\nimport { CalendarVariants } from \"./types\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype DateRangePickerProps = Omit<\n AriaDateRangePickerProps<DateValue>,\n \"onChange\" | \"errorMessage\" | \"isInvalid\" | \"isRequired\"\n> &\n Pick<BoxProps, \"minHeight\"> &\n PropsWithChildren<DatePickerVariantProps> &\n CalendarVariants & {\n startLabel?: string;\n startName?: string;\n endLabel?: string;\n endName?: string;\n withPortal?: boolean;\n onChange?: (\n dates: {\n start: DateValue | null;\n end: DateValue | null;\n } | null,\n ) => void;\n positioning?: PopoverRootProps[\"positioning\"];\n } & FieldBaseProps;\n/**\n * A date range picker component.\n *\n * There are three variants to choose from – `core`, `floating` and `ghost`.\n *\n * ```tsx\n * <DateRangePicker startLabel=\"From\" startName=\"from\" endLabel=\"To\" endName=\"to\" variant=\"core\" />\n * ```\n */ export function DateRangePicker({\n variant,\n minHeight,\n startName,\n endName,\n withPortal = true,\n errorText,\n helperText,\n invalid,\n positioning,\n ...props\n}: DateRangePickerProps) {\n const fieldContextPRops = useFieldContext();\n const state = useDateRangePickerState({\n ...props,\n shouldCloseOnSelect: true,\n isInvalid: invalid,\n errorMessage: errorText,\n\n isRequired: props.required ?? fieldContextPRops?.required,\n validationState: fieldContextPRops?.invalid ? \"invalid\" : \"valid\",\n });\n const ref = useRef(null);\n const uniqueId = useId();\n const datePickerId = `date-range-picker-${uniqueId}`;\n\n const {\n labelProps,\n startFieldProps,\n endFieldProps,\n buttonProps,\n dialogProps,\n calendarProps,\n } = useDateRangePicker(props, state, ref);\n\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({ variant });\n const locale = useCurrentLocale();\n\n const onFieldClick = () => {\n state.setOpen(true);\n };\n\n const popoverContent = (\n <ChakraPopover.Positioner>\n <ChakraPopover.Content css={styles.calendarPopover}>\n <ChakraPopover.Body maxWidth=\"60rem\">\n <RangeCalendar variant={\"core\"} {...calendarProps} />\n </ChakraPopover.Body>\n </ChakraPopover.Content>\n </ChakraPopover.Positioner>\n );\n\n return (\n <I18nProvider locale={locale}>\n <Box position=\"relative\" display=\"inline-flex\" flexDirection=\"column\">\n {props.label && (\n <label {...labelProps} htmlFor={datePickerId}>\n {props.label}\n </label>\n )}\n <ChakraPopover.Root {...dialogProps} positioning={positioning}>\n <Field\n width=\"auto\"\n display=\"inline-flex\"\n id={datePickerId}\n errorText={errorText}\n helperText={helperText}\n invalid={invalid}\n >\n <PopoverAnchor>\n <StyledField\n alignItems=\"center\"\n paddingX={3}\n variant={variant}\n onClick={onFieldClick}\n minHeight={minHeight}\n >\n {variant && (\n <ChakraPopover.Trigger asChild>\n <CalendarTriggerButton\n variant={variant}\n ref={ref}\n {...buttonProps}\n />\n </ChakraPopover.Trigger>\n )}\n\n <DateField\n {...startFieldProps}\n name={startName}\n label={props.startLabel}\n labelProps={labelProps}\n />\n <Box\n as=\"span\"\n aria-hidden=\"true\"\n paddingRight=\"2\"\n paddingLeft={\"2\"}\n >\n –\n </Box>\n\n <DateField\n {...endFieldProps}\n name={endName}\n label={props.endLabel}\n labelProps={labelProps}\n />\n </StyledField>\n </PopoverAnchor>\n </Field>\n {state.isOpen && withPortal && <Portal>{popoverContent}</Portal>}\n {state.isOpen && !withPortal && popoverContent}\n </ChakraPopover.Root>\n </Box>\n </I18nProvider>\n );\n}\n","\"use client\";\nimport { Box, useSlotRecipe } from \"@chakra-ui/react\";\nimport { createCalendar, DateValue } from \"@internationalized/date\";\nimport { useRef } from \"react\";\nimport {\n RangeCalendarProps as ReactAriaRangeCalendarProps,\n useRangeCalendar,\n} from \"react-aria\";\nimport { useRangeCalendarState } from \"react-stately\";\n\nimport { datePickerSlotRecipe } from \"@/theme/slot-recipes/datepicker\";\n\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { CalendarHeader } from \"./CalendarHeader\";\nimport { CalendarVariants } from \"./types\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype RangeCalendarProps = ReactAriaRangeCalendarProps<DateValue> &\n CalendarVariants;\n\nexport function RangeCalendar(props: RangeCalendarProps) {\n const locale = useCurrentLocale();\n const state = useRangeCalendarState({\n ...props,\n visibleDuration: { months: 2 },\n locale,\n createCalendar,\n });\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({});\n const ref = useRef(null);\n const { calendarProps, title } = useRangeCalendar(props, state, ref);\n\n return (\n <Box {...calendarProps} ref={ref} css={styles.rangeCalendarPopover}>\n <CalendarHeader state={state} title={title} />\n <Box display=\"flex\" gap=\"8\" maxWidth=\"100vw\" overflow=\"scroll\">\n <CalendarGrid variant={props.variant} state={state} />\n <CalendarGrid\n variant={props.variant}\n state={state}\n offset={{ months: 1 }}\n />\n </Box>\n </Box>\n );\n}\n","\"use client\";\nimport { BoxProps, useFieldContext } from \"@chakra-ui/react\";\nimport { CalendarDateTime } from \"@internationalized/date\";\nimport { TimeValue } from \"@react-types/datepicker\";\nimport {\n DropdownLeftFill18Icon,\n DropdownRightFill18Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { useTimeFieldState } from \"react-stately\";\n\nimport { Field, FieldBaseProps } from \"@/input/Field\";\n\nimport { createTexts, IconButton, useTranslation } from \"..\";\nimport { StyledField } from \"./StyledField\";\nimport { TimeField } from \"./TimeField\";\nimport { getCurrentTime, useCurrentLocale } from \"./utils\";\n\ntype TimePickerProps = Omit<BoxProps, \"defaultValue\" | \"onChange\"> &\n FieldBaseProps & {\n /** The label. Defaults to a localized version of \"Time\" */\n label?: string;\n /** The name of the form field, if used in a regular form */\n name?: string;\n /** The controlled value, if any.\n *\n * A `new Time(hours, minutes)` should be passed.\n * Or `null` if the time should be unset.\n **/\n value?: TimeValue | null;\n /** A default value, if any.\n *\n * A `new Time(hours, minutes)` should be passed.\n * Defaults to the current time if not provided.\n * Can be set to null if you don't want a time to be selected by default.\n **/\n defaultValue?: TimeValue | null;\n /** Callback for when the time changes */\n onChange?: (value: TimeValue | null) => void;\n /** The maxiumum number of minutes to move when the step buttons are used.\n *\n * Defaults to 30 minutes.\n *\n * An example: If the time is at 13:37 and the minuteInterval is 15, clicking the step forwards button will move the time to 13:45. Next click will move it to 14:00.\n */\n minuteInterval?: number;\n /** Whether or not the field is disabled */\n disabled?: boolean;\n /**\n * The variant of the time picker.\n * Defaults to \"core\".\n */\n variant?: \"core\" | \"floating\" | \"ghost\";\n };\n/** A time picker component.\n *\n * This lets the user select a time of day, either through typing it in, using the up and down arrows to select the hour and minute, or by clicking the step buttons to move the time forwards or backwards in pre-defined increments.\n *\n * ```tsx\n * <TimePicker />\n * ```\n *\n * It can also be controlled:\n *\n * ```tsx\n * <TimePicker value={new Time(13, 37)} onChange={setTime} />\n * ```\n *\n * Note that the TimePicker uses the `Time` class to represent the time. This is a class that is part of the `@internationalized/date` package.\n *\n * @see https://spor.vy.no/komponents/timepicker\n */\nexport const TimePicker = ({\n label: externalLabel,\n value,\n defaultValue = getCurrentTime(),\n onChange = () => {},\n minuteInterval = 30,\n disabled: isDisabledExternally = false,\n name,\n ...boxProps\n}: TimePickerProps) => {\n const { disabled: fieldDisabled, invalid: fieldInvalid } =\n useFieldContext() ?? {};\n const isDisabled = isDisabledExternally ?? fieldDisabled ?? false;\n const { t } = useTranslation();\n const locale = useCurrentLocale();\n const label = externalLabel ?? t(texts.time);\n const state = useTimeFieldState({\n value,\n defaultValue,\n onChange,\n locale,\n isDisabled,\n label,\n validationState: fieldInvalid ? \"invalid\" : \"valid\",\n });\n\n const dateTime = state.value as CalendarDateTime | null;\n\n const handleBackwardsClick = () => {\n if (!dateTime) {\n return;\n }\n const minutesToSubtract =\n dateTime.minute % minuteInterval || minuteInterval;\n state.setValue(\n dateTime.subtract({\n minutes: minutesToSubtract,\n }),\n );\n };\n\n const handleForwardClick = () => {\n if (!dateTime) {\n return;\n }\n const minutesToAdd =\n minuteInterval - (dateTime.minute % minuteInterval) || minuteInterval;\n state.setValue(\n dateTime.add({\n minutes: minutesToAdd,\n }),\n );\n };\n const backwardsLabel = `${t(texts.backwards)} ${minuteInterval} ${t(\n texts.minutes,\n )}`;\n const forwardsLabel = `${t(texts.forwards)} ${minuteInterval} ${t(\n texts.minutes,\n )}`;\n const inputLabel = label ?? t(texts.time);\n const ariaLabel = `${inputLabel} – ${t(\n texts.selectedTimeIs(`${dateTime?.hour ?? 0} ${dateTime?.minute ?? 0}`),\n )}`;\n\n return (\n <Field as=\"time\" {...boxProps}>\n <StyledField\n width=\"fit-content\"\n paddingX={2}\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={2}\n opacity={isDisabled ? 0.5 : 1}\n pointerEvents={isDisabled ? \"none\" : \"auto\"}\n aria-disabled={isDisabled}\n aria-live=\"assertive\"\n aria-label={ariaLabel}\n {...boxProps}\n >\n <IconButton\n variant=\"ghost\"\n size=\"xs\"\n borderRadius=\"xs\"\n aria-label={backwardsLabel}\n title={backwardsLabel}\n icon={<DropdownLeftFill18Icon />}\n onClick={handleBackwardsClick}\n disabled={isDisabled}\n style={isDisabled ? { backgroundColor: \"transparent\" } : {}}\n />\n <TimeField label={label} state={state} name={name} />\n <IconButton\n variant=\"ghost\"\n size=\"xs\"\n borderRadius=\"xs\"\n aria-label={forwardsLabel}\n title={forwardsLabel}\n icon={<DropdownRightFill18Icon />}\n onClick={handleForwardClick}\n disabled={isDisabled}\n style={isDisabled ? { backgroundColor: \"transparent\" } : {}}\n />\n </StyledField>\n </Field>\n );\n};\n\nconst texts = createTexts({\n selectedTimeIs: (time) => ({\n nb: `Valgt tidspunkt er ${time}`,\n nn: `Valt tidspunkt er ${time}`,\n en: `Selected time is ${time}`,\n sv: `Vald tid är ${time}`,\n }),\n time: {\n nb: \"Tid\",\n nn: \"Tid\",\n en: \"Time\",\n sv: \"Tid\",\n },\n backwards: {\n nb: \"Bakover\",\n nn: \"Bakover\",\n en: \"Backwards\",\n sv: \"Bakåt\",\n },\n forwards: {\n nb: \"Fremover\",\n nn: \"Fremover\",\n en: \"Forward\",\n sv: \"Framåt\",\n },\n minutes: {\n nb: \"minutter\",\n nn: \"minuttar\",\n en: \"minutes\",\n sv: \"minuter\",\n },\n});\n","\"use client\";\nimport { Box, Flex } from \"@chakra-ui/react\";\nimport { CalendarDateTime, Time } from \"@internationalized/date\";\nimport { useRef } from \"react\";\nimport { AriaTimeFieldProps, useTimeField } from \"react-aria\";\nimport { DateSegment, TimeFieldState } from \"react-stately\";\n\nimport { DateTimeSegment } from \"./DateTimeSegment\";\nimport { getTimestampFromTime } from \"./utils\";\n\ntype TimeFieldProps = AriaTimeFieldProps<Time> & {\n state: TimeFieldState;\n label: string;\n name?: string;\n};\n/** A time field component.\n *\n * This component lets the user choose a time based on regular user input.\n * It shouldn't be used directly, but is used by the TimePicker component.\n */\nexport const TimeField = ({ state, ...props }: TimeFieldProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const { labelProps, fieldProps } = useTimeField(props, state, ref);\n\n return (\n <Box>\n <label\n {...labelProps}\n htmlFor={fieldProps.id}\n style={{\n marginBottom: 0,\n fontSize: \"mobile.xs\",\n cursor: \"text\",\n position: \"absolute\",\n paddingTop: \"2px\",\n }}\n >\n {props.label}\n </label>\n <Flex {...fieldProps} ref={ref} paddingTop=\"3\" paddingBottom=\"0.5\">\n {state.segments.map((segment: DateSegment) => (\n <DateTimeSegment key={segment.type} segment={segment} state={state} />\n ))}\n </Flex>\n <input\n type=\"hidden\"\n value={getTimestampFromTime(state.value as CalendarDateTime | null)}\n name={props.name}\n />\n </Box>\n );\n};\n","export * from \"./DatePicker\";\nexport * from \"./DateRangePicker\";\nexport * from \"./TimePicker\";\nexport { Time } from \"@internationalized/date\";\n","\"use client\";\nimport { Dialog as ChakraDialog, Portal } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nimport { CloseButton } from \"../button\";\n\ninterface DialogContentProps extends ChakraDialog.ContentProps {\n portalled?: boolean;\n portalRef?: React.RefObject<HTMLElement>;\n backdrop?: boolean;\n children?: React.ReactNode;\n}\n\nexport const DialogContent = React.forwardRef<\n HTMLDivElement,\n DialogContentProps\n>((props, ref) => {\n const {\n children,\n portalled = true,\n portalRef,\n backdrop = true,\n ...rest\n } = props;\n\n return (\n <Portal disabled={!portalled} container={portalRef}>\n {backdrop && <ChakraDialog.Backdrop />}\n <ChakraDialog.Positioner>\n <ChakraDialog.Content ref={ref} {...rest} asChild={false}>\n {children}\n </ChakraDialog.Content>\n </ChakraDialog.Positioner>\n </Portal>\n );\n});\nDialogContent.displayName = \"DialogContent\";\n\nexport const DialogCloseTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraDialog.CloseTriggerProps\n>(function DialogCloseTrigger(props, ref) {\n return (\n <ChakraDialog.CloseTrigger ref={ref} {...props} asChild>\n <CloseButton size=\"md\" />\n </ChakraDialog.CloseTrigger>\n );\n});\n\nexport const DialogRoot = ChakraDialog.Root;\nexport const DialogFooter = ChakraDialog.Footer;\nexport const DialogHeader = ChakraDialog.Header;\nexport const DialogBody = ChakraDialog.Body;\nexport const DialogBackdrop = ChakraDialog.Backdrop;\nexport const DialogTitle = ChakraDialog.Title;\nexport const DialogDescription = ChakraDialog.Description;\nexport const DialogTrigger = ChakraDialog.Trigger;\nexport const DialogActionTrigger = ChakraDialog.ActionTrigger;\n","\"use client\";\n\nimport {\n Box,\n createContext,\n Drawer as ChakraDrawer,\n Grid,\n GridItem,\n Portal,\n} from \"@chakra-ui/react\";\nimport {\n ArrowLeftFill24Icon,\n CloseFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef } from \"react\";\n\nimport { Button, CloseButton } from \"../button\";\nimport { createTexts, useTranslation } from \"../i18n\";\nimport {\n DrawerContentProps,\n DrawerFullScreenHeaderProps,\n DrawerProps,\n} from \"./types\";\n\n/**\n * A drawer is a panel that slides in from the side of the screen. It is used to display additional content without taking up too much space.\n *\n * Basic example:\n *\n * ```tsx\n * <Drawer placement=\"bottom\" size=\"md\">\n * <DrawerTrigger asChild>\n * <Button variant=\"primary\">Open drawer</Button>\n * </DrawerTrigger>\n * <DrawerContent>\n * <DrawerHeader>\n * <DrawerCloseTrigger />\n * <DrawerTitle>Drawer title</DrawerTitle>\n * </DrawerHeader>\n * <DrawerBody>\n * Drawer content\n * </DrawerBody>\n * </DrawerContent>\n * </Drawer>\n * ```\n */\n\ntype DrawerContextProps = ChakraDrawer.RootProps;\n\nconst [RootDrawerProvider, useRootDrawerProps] =\n createContext<DrawerContextProps>({\n name: \"RootDrawerProvider\",\n });\n\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n (props, ref) => {\n const { children, portalled = true, portalRef, ...rest } = props;\n const { size, placement } = useRootDrawerProps();\n const sizeNotFull = size !== \"full\";\n return (\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraDrawer.Positioner>\n <ChakraDrawer.Content ref={ref} {...rest}>\n {sizeNotFull && placement === \"bottom\" && <CloseDrawerLine />}\n {children}\n {sizeNotFull && placement === \"top\" && <CloseDrawerLine />}\n </ChakraDrawer.Content>\n </ChakraDrawer.Positioner>\n </Portal>\n );\n },\n);\nDrawerContent.displayName = \"DrawerContent\";\n\nexport const CloseDrawerLine = forwardRef<HTMLButtonElement>((props, ref) => {\n const { t } = useTranslation();\n return (\n <ChakraDrawer.CloseTrigger\n {...props}\n ref={ref}\n position=\"relative\"\n insetEnd=\"unset\"\n aria-label={t(texts.close)}\n cursor=\"pointer\"\n top={0}\n paddingY={2}\n >\n <Box\n width={7}\n height={1}\n backgroundColor=\"silver\"\n borderRadius=\"xs\"\n marginX=\"auto\"\n />\n </ChakraDrawer.CloseTrigger>\n );\n});\nCloseDrawerLine.displayName = \"CloseDrawerLine\";\n\nexport const DrawerCloseTrigger = forwardRef<\n HTMLButtonElement,\n ChakraDrawer.CloseTriggerProps\n>(function DrawerCloseTrigger(props, ref) {\n const { size } = useRootDrawerProps();\n const { t } = useTranslation();\n return (\n <ChakraDrawer.CloseTrigger ref={ref} {...props} asChild>\n {size === \"full\" ? (\n <Button variant=\"ghost\" leftIcon={<CloseFill24Icon />}>\n {t(texts.close)}\n </Button>\n ) : (\n <CloseButton size=\"md\" />\n )}\n </ChakraDrawer.CloseTrigger>\n );\n});\n\nexport const DrawerBackTrigger = forwardRef<\n HTMLButtonElement,\n ChakraDrawer.CloseTriggerProps\n>((props, ref) => {\n const { t } = useTranslation();\n return (\n <ChakraDrawer.CloseTrigger asChild {...props} ref={ref} top=\"0\">\n <Button variant=\"ghost\" leftIcon={<ArrowLeftFill24Icon />}>\n {t(texts.back)}\n </Button>\n </ChakraDrawer.CloseTrigger>\n );\n});\nDrawerBackTrigger.displayName = \"DrawerBackTrigger\";\n\nexport const DrawerFullScreenHeader = forwardRef<\n HTMLDivElement,\n DrawerFullScreenHeaderProps\n>((props, ref) => {\n const { backTrigger = true, title } = props;\n return (\n <ChakraDrawer.Header {...props} ref={ref} asChild>\n <Grid templateColumns=\"1fr auto 1fr\" height=\"auto\" paddingX=\"8\">\n <GridItem width=\"full\" alignSelf=\"center\">\n {backTrigger && <DrawerBackTrigger />}\n </GridItem>\n <GridItem width=\"full\" alignSelf=\"end\" asChild>\n {title && <DrawerTitle>{title}</DrawerTitle>}\n </GridItem>\n <GridItem width=\"full\" alignSelf=\"end\">\n <DrawerCloseTrigger justifySelf=\"end\" top=\"0\" />\n </GridItem>\n </Grid>\n </ChakraDrawer.Header>\n );\n});\nDrawerFullScreenHeader.displayName = \"DrawerFullScreenHeader\";\n\nexport const Drawer = (props: DrawerProps) => {\n const { children, placement, size = \"md\", ...rest } = props;\n return (\n <RootDrawerProvider value={props}>\n <ChakraDrawer.Root {...rest} placement={placement} size={size}>\n <DrawerBackdrop />\n {children}\n </ChakraDrawer.Root>\n </RootDrawerProvider>\n );\n};\n\nexport const DrawerTrigger = ChakraDrawer.Trigger;\nexport const DrawerFooter = ChakraDrawer.Footer;\nexport const DrawerBody = ChakraDrawer.Body;\nexport const DrawerBackdrop = ChakraDrawer.Backdrop;\nexport const DrawerTitle = ChakraDrawer.Title;\nexport const DrawerActionTrigger = ChakraDrawer.ActionTrigger;\nexport const DrawerHeader = ChakraDrawer.Header;\n\nconst texts = createTexts({\n back: {\n en: \"Back\",\n nb: \"Tilbake\",\n nn: \"Tilbake\",\n sv: \"Tillbaka\",\n },\n close: {\n en: \"Close\",\n nb: \"Lukk\",\n nn: \"Lukk\",\n sv: \"Stäng\",\n },\n});\n","export type { ImageProps } from \"@chakra-ui/react\";\nexport { Image } from \"@chakra-ui/react\";\n","\"use client\";\n\nimport {\n chakra,\n Group,\n GroupProps,\n RecipeVariantProps,\n} from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nimport { attachedInputsRecipe } from \"@/theme/recipes/attached-inputs\";\n\n/**\n * Attaches several inputs together, so that they look like one input.\n *\n * ```tsx\n * <AttachedInputs>\n * <Input />\n * <NativeSelect>\n * <Item />\n * </NativeSelect>\n * </AttachedInputs>\n * ```\n */\n\nexport type AttachedInputsProps = RecipeVariantProps<\n typeof attachedInputsRecipe\n> &\n GroupProps;\n\nconst StyledGroup = chakra(Group, attachedInputsRecipe);\n\nexport const AttachedInputs = forwardRef<HTMLDivElement, AttachedInputsProps>(\n (props, ref) => {\n return <StyledGroup ref={ref} attached {...props} />;\n },\n);\nAttachedInputs.displayName = \"AttachedInputs\";\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const attachedInputsRecipe = defineRecipe({\n base: {\n display: \"flex\",\n gap: \"0.1rem\",\n width: \"100%\",\n \"& select\": {\n borderEndRadius: 0,\n },\n },\n variants: {\n orientation: {\n horizontal: {\n flexDirection: \"row\",\n \"& > *:first-of-type:not(:last-of-type) [data-attachable]\": {\n borderEndRadius: 0,\n },\n \"& > *:not(:first-of-type):not(:last-of-type) [data-attachable]\": {\n borderRadius: 0,\n },\n \"& > *:not(:first-of-type):last-of-type [data-attachable]\": {\n borderStartRadius: 0,\n },\n },\n vertical: {\n flexDirection: \"column\",\n \"& > *:first-of-type:not(:last-of-type) [data-attachable]\": {\n borderBottomRadius: 0,\n },\n \"& > *:not(:first-of-type):not(:last-of-type) [data-attachable]\": {\n borderRadius: 0,\n },\n \"& > *:not(:first-of-type):last-of-type [data-attachable]\": {\n borderTopRadius: 0,\n },\n },\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n});\n","\"use client\";\nimport {\n Popover as ChakraPopover,\n PopoverRootProps,\n Portal,\n usePopoverContext,\n} from \"@chakra-ui/react\";\nimport {\n DropdownDownFill18Icon,\n DropdownDownFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, ReactNode } from \"react\";\n\nimport { Button, ButtonProps, StaticCard, StaticCardProps } from \"..\";\n\nexport const CardSelect = ({ size = \"md\", ...props }: PopoverRootProps) => {\n return <ChakraPopover.Root size={size} {...props} />;\n};\n\nexport const CardSelectContent = forwardRef<HTMLDivElement, StaticCardProps>(\n ({ children, ...props }, ref) => {\n return (\n <Portal>\n <ChakraPopover.Positioner>\n <ChakraPopover.Content ref={ref} padding={0} bg=\"none\">\n <ChakraPopover.Body {...props}>\n <StaticCard\n p=\"2\"\n bg=\"bg\"\n border=\"sm\"\n borderColor=\"floating.outline\"\n {...props}\n >\n {children}\n </StaticCard>\n </ChakraPopover.Body>\n </ChakraPopover.Content>\n </ChakraPopover.Positioner>\n </Portal>\n );\n },\n);\nCardSelectContent.displayName = \"CardSelectContent\";\n\nexport type CardSelectTriggerProps = {\n /** The design of the trigger button.\n *\n * - `ghost` is a transparent button with text\n * - `core` is a button with a border and text\n * - `floating` is a button with a drop shadow (like a card) and text\n */\n variant?: \"core\" | \"ghost\" | \"floating\";\n /** An optional trigger button icon, rendered to the left of the label */\n icon?: ReactNode;\n /** Whether or not to show the chevron. Defaults to true */\n withChevron?: boolean;\n} & Omit<ButtonProps, \"variant\" | \"rightIcon\" | \"leftIcon\">;\n\nconst bgActiveStyleMap = {\n core: \"core.surface.active\",\n ghost: \"ghost.surface.active\",\n floating: \"floating.surface.active\",\n};\n\nexport const CardSelectTrigger = forwardRef<\n HTMLButtonElement,\n CardSelectTriggerProps\n>(\n (\n { icon, variant = \"core\", withChevron = true, size, children, ...props },\n ref,\n ) => {\n const ChevronIcon =\n size === \"sm\" ? DropdownDownFill18Icon : DropdownDownFill24Icon;\n\n const { open } = usePopoverContext();\n\n return (\n <ChakraPopover.Trigger asChild ref={ref}>\n <Button\n leftIcon={icon}\n variant={\n variant === \"core\"\n ? \"tertiary\"\n : (variant as ButtonProps[\"variant\"])\n }\n size={size}\n bg={open ? bgActiveStyleMap[variant] : undefined}\n rightIcon={\n withChevron ? (\n <ChevronIcon\n transform={open ? \"rotate(180deg)\" : undefined}\n transition=\"transform 0.3s\"\n />\n ) : null\n }\n {...props}\n >\n {children}\n </Button>\n </ChakraPopover.Trigger>\n );\n },\n);\nCardSelectTrigger.displayName = \"CardSelectTrigger\";\n","import {\n Checkbox as ChakraCheckbox,\n RecipeVariantProps,\n} from \"@chakra-ui/react\";\nimport * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\n\nimport { checkboxSlotRecipe } from \"@/theme/slot-recipes/checkbox\";\n\ntype CheckboxVariantProps = RecipeVariantProps<typeof checkboxSlotRecipe>;\n\ntype CheckboxProps = ChakraCheckbox.RootProps &\n PropsWithChildren<CheckboxVariantProps> & {\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n rootRef?: React.Ref<HTMLLabelElement>;\n };\n\n/**\n * Creates a checkbox.\n *\n * The checkbox contains its own label, which is passed as a children prop:\n *\n * ```tsx\n * <Checkbox>Accept the terms</Checkbox>\n * ```\n *\n * Unlike regular inputs, it doesn't require its own `Field`.\n *\n * You can group several of these together with a `CheckboxGroup`.\n */\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (props, ref) => {\n const { children, inputProps, rootRef, ...rest } = props;\n return (\n <ChakraCheckbox.Root ref={rootRef} {...rest}>\n <ChakraCheckbox.HiddenInput ref={ref} {...inputProps} />\n <ChakraCheckbox.Control>\n <ChakraCheckbox.Indicator />\n </ChakraCheckbox.Control>\n {children != null && (\n <ChakraCheckbox.Label>{children}</ChakraCheckbox.Label>\n )}\n </ChakraCheckbox.Root>\n );\n },\n);\nCheckbox.displayName = \"Checkbox\";\n","import {\n CheckboxGroup as ChakraCheckboxGroup,\n CheckboxGroupProps as ChakraCheckboxGroupProps,\n Stack,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef } from \"react\";\n\nexport type CheckboxGroupProps = Exclude<\n ChakraCheckboxGroupProps,\n \"colorPalette\" | \"size\" | \"variant\"\n> & {\n /* Defaults to row */\n direction?: \"row\" | \"column\";\n children: React.ReactNode;\n /* Defaults to 1 */\n gap?: number | string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any; //Find a way to not use type any\n};\n/**\n * Used to group several checkboxes together. You can pass the default value, as well as whether or not they're all disabled\n *\n * ```tsx\n * <CheckboxGroup disabled defaultValue={['red', 'blue']}>\n * <Checkbox value=\"red\">Red</Checkbox>\n * <Checkbox value=\"blue\">Blue</Checkbox>\n * <Checkbox value=\"green\">Green</Checkbox>\n * </CheckboxGroup>\n * ```\n *\n * By default, checkboxes in a CheckboxGroup show up horizontally. If you want them to show up vertically, please specify the `direction=\"column\"` prop.\n *\n * ```tsx\n * <CheckboxGroup direction=\"column\">\n * <Checkbox>Economy</Checkbox>\n * <Checkbox>Business</Checkbox>\n * <Checkbox>First Class</Checkbox>\n * </CheckboxGroup>\n */\n\nexport const CheckboxGroup = forwardRef<HTMLDivElement, CheckboxGroupProps>(\n (props, ref) => {\n const { direction = \"row\", children, gap = 1, ...rest } = props;\n\n return (\n <ChakraCheckboxGroup ref={ref} {...rest}>\n <Stack direction={direction} gap={gap}>\n {children}\n </Stack>\n </ChakraCheckboxGroup>\n );\n },\n);\nCheckboxGroup.displayName = \"CheckboxGroup\";\n","\"use client\";\nimport { CheckboxCard, CheckboxCardRootProps, Span } from \"@chakra-ui/react\";\nimport { CloseOutline24Icon } from \"@vygruppen/spor-icon-react\";\nimport React, { forwardRef } from \"react\";\n\ntype CheckBoxIcon = {\n default: React.ReactNode;\n checked: React.ReactNode;\n};\n\nexport type ChoiceChipProps = Omit<\n CheckboxCardRootProps,\n \"onCheckedChange\" | \"checked\"\n> & {\n icon?: CheckBoxIcon;\n onCheckedChange?: (checked: boolean) => void;\n checked: boolean;\n};\n\n/**\n * Choice chips are checkboxes that look like selectable buttons.\n *\n * Choice chips are available in four different sizes - `xs`, `sm`, `md` and `lg`.\n *\n * ```tsx\n * <Stack flexDirection=\"row\">\n * <ChoiceChip size=\"lg\">Bus</ChoiceChip>\n * <ChoiceChip size=\"lg\">Train</ChoiceChip>\n * </Stack>\n * ```\n *\n * There are also three different chipType - `icon`, `choice` and `filter`.\n *\n * ```tsx\n * <Stack flexDirection=\"row\">\n * <ChoiceChip chipType=\"icon\" icon={<Bus24Icon />}>Bus</ChoiceChip>\n * <ChoiceChip chipType=\"choice\" icon={<Bus24Icon />}>Bus</ChoiceChip>\n * <ChoiceChip chipType=\"filter\" icon={<Bus24Icon />}>Bus</ChoiceChip>\n * </Stack>\n *\n * There are also three different variants - `core`, `accent` and `floating`.\n *\n * ```tsx\n * <Stack flexDirection=\"row\">\n * <ChoiceChip variant=\"core\">Bus</ChoiceChip>\n * <ChoiceChip variant=\"accent\">Boat</ChoiceChip>\n * <ChoiceChip variant=\"floating\">Train</ChoiceChip>\n * </Stack>\n * ```\n */\n\nexport const ChoiceChip = forwardRef<HTMLInputElement, ChoiceChipProps>(\n ({ children, icon, onCheckedChange, ...rootProps }, ref) => {\n return (\n <CheckboxCard.Root\n {...rootProps}\n {...(onCheckedChange && {\n onCheckedChange: (details) => onCheckedChange(!!details.checked),\n })}\n >\n <CheckboxCard.Context>\n {({ checked }) => (\n <>\n <CheckboxCard.HiddenInput ref={ref} />\n <CheckboxCard.Control>\n <CheckboxCard.Content>\n <CheckboxCard.Label>\n {icon && (\n <Span width=\"24px\">\n {checked ? icon.checked : icon.default}\n </Span>\n )}\n\n {rootProps.chipType !== \"icon\" && children}\n\n {rootProps.chipType === \"filter\" && checked && (\n <CloseOutline24Icon />\n )}\n </CheckboxCard.Label>\n </CheckboxCard.Content>\n </CheckboxCard.Control>\n </>\n )}\n </CheckboxCard.Context>\n </CheckboxCard.Root>\n );\n },\n);\n\nChoiceChip.displayName = \"ChoiceChip\";\n","\"use client\";\nimport React, { ReactNode, useEffect, useId, useRef, useState } from \"react\";\nimport { AriaComboBoxProps, useComboBox, useFilter } from \"react-aria\";\nimport { useComboBoxState } from \"react-stately\";\n\nimport { ColorSpinner, Input, InputProps, ListBox } from \"..\";\nimport { Popover } from \"./Popover\";\n\nexport type ComboboxProps<T> = Exclude<\n InputProps,\n \"variant\" | \"colorPalette\" | \"size\"\n> &\n AriaComboBoxProps<T> & {\n /** The label of the combobox */\n label: string;\n /** Whether or not the combobox is waiting for new suggestions */\n loading?: boolean;\n /** Optional UI to show when there are no matching items */\n emptyContent?: React.ReactNode;\n /** A ref to the input field */\n inputRef?: React.RefObject<HTMLInputElement>;\n /** If you want to allow an empty collection */\n allowsEmptyCollection?: boolean;\n leftIcon?: ReactNode;\n rightIcon?: ReactNode;\n variant?: \"core\" | \"floating\";\n children?: React.ReactNode;\n };\n/**\n * A combobox is a combination of an input and a list of suggestions.\n *\n * It is used to select a single item from a list of suggestions.\n *\n * @example\n * ```tsx\n * <Combobox\n * label=\"Choose a color\"\n * items={[\n * { label: \"Green\", value: \"green\" },\n * { label: \"Blue\", value: \"blue\" },\n * { label: \"Yellow\", value: \"yellow\" },\n * ]}\n * >\n * {(item) => (\n * <Item key={item.value} value={item.value}>\n * {item.label}\n * </Item>\n * )}\n * </Combobox>\n * ```\n */\n\nexport const Combobox = (props: ComboboxProps<object>) => {\n const {\n label,\n loading,\n leftIcon,\n rightIcon,\n borderBottomLeftRadius = \"sm\",\n borderBottomRightRadius = \"sm\",\n borderTopLeftRadius = \"sm\",\n borderTopRightRadius = \"sm\",\n marginBottom,\n marginTop,\n marginX,\n marginY,\n marginRight,\n marginLeft,\n paddingBottom,\n paddingRight,\n paddingTop,\n paddingLeft,\n paddingX,\n paddingY,\n emptyContent,\n inputRef: externalInputRef,\n children,\n variant,\n } = props;\n const { contains } = useFilter({ sensitivity: \"base\" });\n\n const fallbackInputRef = useRef<HTMLInputElement>(null);\n const inputRef = externalInputRef ?? fallbackInputRef;\n const listBoxRef = useRef<HTMLUListElement>(null);\n const popoverRef = useRef(null);\n\n const listboxId = `${useId()}-listbox`;\n\n const inputWidth = useInputWidth(inputRef);\n\n const state = useComboBoxState({\n defaultFilter: contains,\n shouldCloseOnBlur: true,\n ...props,\n });\n\n const comboBoxProps = {\n borderTopLeftRadius,\n borderTopRightRadius,\n marginBottom,\n marginTop,\n marginRight,\n marginLeft,\n marginX,\n marginY,\n paddingBottom,\n paddingRight,\n paddingTop,\n paddingLeft,\n paddingX,\n paddingY,\n leftIcon,\n };\n\n const {\n inputProps: { ...inputProps },\n listBoxProps,\n } = useComboBox(\n {\n ...props,\n inputRef,\n listBoxRef,\n popoverRef,\n label,\n },\n state,\n );\n return (\n <>\n <Input\n {...styleProps(comboBoxProps)}\n aria-haspopup=\"listbox\"\n ref={inputRef}\n role=\"combobox\"\n errorText={props.errorText}\n helperText={props.helperText}\n required={props.required}\n disabled={props.disabled}\n invalid={props.invalid}\n label={label}\n variant={variant}\n aria-expanded={state.isOpen}\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n borderBottomLeftRadius={\n state.isOpen && !loading ? 0 : borderBottomLeftRadius\n }\n borderBottomRightRadius={\n state.isOpen && !loading ? 0 : borderBottomRightRadius\n }\n _active={{ backgroundColor: \"core.surface.active\" }}\n {...inputProps}\n startElement={leftIcon}\n endElement={\n loading ? (\n <ColorSpinner\n width=\"1.5rem\"\n alignSelf=\"center\"\n paddingRight={paddingRight}\n css={{\n div: {\n display: \"flex\",\n alignItems: \"center\",\n },\n }}\n />\n ) : (\n rightIcon\n )\n }\n placeholder=\"\"\n />\n <span aria-hidden=\"true\" data-trigger=\"multiselect\"></span>\n {state.isOpen && !loading && (\n <Popover\n state={state}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n triggerRef={inputRef as any} /* Find a way to not use type any */\n ref={popoverRef}\n isNonModal\n placement=\"bottom start\"\n shouldFlip={false}\n hasBackdrop={false}\n // The minimum padding should be 0, because the popover always should be\n // aligned with the input field regardless of the left padding in the container.\n containerPadding={0}\n >\n <ListBox\n {...listBoxProps}\n {...{\n autoFocus:\n typeof listBoxProps.autoFocus === \"boolean\"\n ? listBoxProps.autoFocus\n : undefined,\n }}\n state={state}\n id={listboxId}\n listBoxRef={listBoxRef}\n emptyContent={emptyContent}\n maxWidth={inputWidth}\n variant={variant}\n >\n {children}\n </ListBox>\n </Popover>\n )}\n </>\n );\n};\n\nCombobox.displayName = \"Combobox\";\n\nconst useInputWidth = (inputRef: React.RefObject<HTMLInputElement>) => {\n const [inputWidth, setInputWidth] = useState(\"auto\");\n useEffect(() => {\n const onResize = debounce(() => {\n if (inputRef.current) {\n setInputWidth(`${inputRef.current.offsetWidth}px`);\n }\n }, 67);\n window.addEventListener(\"resize\", onResize);\n return () => window.removeEventListener(\"resize\", onResize);\n }, [inputRef]);\n return inputWidth;\n};\n\nfunction styleProps(obj: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(obj).filter(([, value]) => value !== undefined),\n );\n}\n\nconst debounce = (fn: () => void, ms = 100) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let timer: any;\n return () => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n timer = null;\n fn();\n }, ms);\n };\n};\n","\"use client\";\nimport { Box } from \"@chakra-ui/react\";\nimport React, { forwardRef, useRef } from \"react\";\nimport {\n AriaPopoverProps,\n DismissButton,\n Overlay,\n usePopover,\n} from \"react-aria\";\nimport { OverlayTriggerState } from \"react-stately\";\n\ntype PopoverProps = {\n /** The content to be shown as a popover */\n children: React.ReactNode;\n /** The internal state of the overlay trigger element.\n *\n * Get this from the useOverlayTriggerState hook or similar.\n */\n state: OverlayTriggerState;\n /** The reference to the trigger button for this overlay */\n triggerRef: React.RefObject<HTMLButtonElement>;\n /** The offset in pixels between the bottom of the trigger and the top of the popover */\n offset?: number;\n /** The cross-axis offset (left or right) of the popover, compared to the center of the trigger element */\n crossOffset?: number;\n /** The position of the popover, relative to the popover.\n *\n * Defaults to \"bottom\"\n */\n placement?: AriaPopoverProps[\"placement\"];\n /**\n * Whether or not the list should flip to the opposite side of the trigger if there is not enough space.\n * Defaults to false.\n */\n shouldFlip?: boolean;\n /**\n * Whether the popover is non-modal, i.e. elements outside the popover may be interacted with by assistive technologies.\n * Most popovers should not use this option as it may negatively impact the screen reader experience. Only use with components such as combobox, which are designed to handle this situation carefully.\n *\n * Defaults to false.\n */\n isNonModal?: boolean;\n /** Whether or not the popover renders a backdrop that stops the user from interacting with background elements\n *\n * Defaults to true\n */\n hasBackdrop?: boolean;\n /** The minimum padding required between the popover and the surrounding container\n *\n * Defaults to 12 (the same as React Aria's default)\n */\n containerPadding?: number;\n};\n/**\n * Internal popover component.\n *\n * Used to render accessible popover content, like a dropdown menu or a card select. Should not be used directly, but as a part of Spor components.\n */\nexport const Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (\n {\n children,\n state,\n triggerRef,\n offset = 0,\n crossOffset = 0,\n placement = \"bottom\",\n shouldFlip = false,\n isNonModal = false,\n hasBackdrop = true,\n containerPadding = 12,\n },\n ref,\n ) => {\n const internalRef = useRef<HTMLDivElement>(null);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const popoverRef = ref ?? (internalRef as any);\n\n const { popoverProps, underlayProps } = usePopover(\n {\n triggerRef,\n popoverRef,\n offset,\n crossOffset,\n placement,\n shouldFlip,\n isNonModal,\n containerPadding,\n },\n state,\n );\n\n const popoverBox = (\n <Box\n {...popoverProps}\n ref={popoverRef}\n minWidth={triggerRef.current?.clientWidth ?? \"auto\"}\n >\n <DismissButton onDismiss={state.close} />\n {children}\n <DismissButton onDismiss={state.close} />\n </Box>\n );\n\n if (isNonModal) {\n return popoverBox;\n }\n return (\n <Overlay>\n {hasBackdrop && <Box {...underlayProps} position=\"fixed\" inset=\"0\" />}\n {popoverBox}\n </Overlay>\n );\n },\n);\nPopover.displayName = \"Popover\";\n","import { Fieldset as ChakraFieldset } from \"@chakra-ui/react\";\n\nexport const Fieldset = ChakraFieldset.Root;\nexport const FieldsetLegend = ChakraFieldset.Legend;\nexport const FieldsetContent = ChakraFieldset.Content;\nexport const FieldsetHelperText = ChakraFieldset.HelperText;\nexport const FieldsetErrorText = ChakraFieldset.ErrorText;\n","\"use client\";\n\nimport {\n Box,\n chakra,\n Flex,\n Input as ChakraInput,\n InputElement,\n InputProps as ChakraInputProps,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef, ReactNode } from \"react\";\n\nimport { inputRecipe } from \"@/theme/recipes/input\";\n\nimport { Field, FieldProps } from \"./Field\";\n\nexport type InputProps = Exclude<\n ChakraInputProps,\n \"size\" | \"label\" | \"colorPalette\" | \"placeholder\"\n> &\n FieldProps & {\n /** The input's label */\n label: ReactNode;\n /** Element that shows up to the left */\n startElement?: React.ReactNode;\n /** Element that shows up to the right */\n endElement?: React.ReactNode;\n };\n/**\n * Inputs let you enter text or other data.\n *\n * You need to specify the label as a prop, since it doubles as the placeholder.\n *\n * ```tsx\n * <Input label=\"E-mail\" />\n * ```\n *\n * You can also add icons to the left and right of the input. Please use the 24 px icons for this.\n *\n * ```tsx\n * <Input label=\"E-mail\" startElement={<EmailOutline24Icon />} />\n * ```\n *\n * Input has two variants core, and floating.\n *\n * ```tsx\n * <Input label=\"E-mail\" startElement={<EmailOutline24Icon />} variant=\"floating\" />\n * ```\n *\n * Field is added to Input, so you can add helperText, errorText, and optionalText.\n *\n * ```tsx\n * <Input label=\"E-mail\" startElement={<EmailOutline24Icon />} helperText=\"We will never share your email.\" />\n * ```\n *\n * @see https://spor.vy.no/components/input\n */\n\nconst StyledInput = chakra(ChakraInput, inputRecipe);\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n startElement,\n endElement,\n label,\n invalid,\n helperText,\n errorText,\n ...props\n },\n ref,\n ) => {\n return (\n <Field\n invalid={invalid}\n helperText={helperText}\n errorText={errorText}\n label={\n // Render startElement invisibly to align label text with input content when an icon is present\n <Flex>\n <Box visibility=\"hidden\">{startElement}</Box>\n {label}\n </Flex>\n }\n floatingLabel={true}\n >\n {startElement && (\n <InputElement pointerEvents=\"none\" paddingX={2}>\n {startElement}\n </InputElement>\n )}\n <StyledInput\n data-attachable\n ref={ref}\n focusVisibleRing=\"outside\"\n overflow=\"hidden\"\n paddingLeft={startElement ? \"2.6rem\" : undefined}\n paddingRight={endElement ? \"2.6rem\" : undefined}\n {...props}\n className={`peer ${props.className}`}\n placeholder=\"\"\n />\n {endElement && (\n <InputElement placement=\"end\" paddingX={2}>\n {endElement}\n </InputElement>\n )}\n </Field>\n );\n },\n);\nInput.displayName = \"Input\";\n","import { defineRecipe } from \"@chakra-ui/react\";\n\n/* FYI: The styling in this file is also used in Textarea */\n\nexport const inputRecipe = defineRecipe({\n base: {\n appearance: \"none\",\n width: \"100%\",\n outline: \"none\",\n border: 0,\n borderRadius: \"sm\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n color: \"text\",\n position: \"relative\",\n paddingX: 3,\n paddingTop: 3,\n height: 8,\n fontSize: \"mobile.md\",\n\n _disabled: {\n backgroundColor: \"surface.disabled\",\n outline: \"1px solid\",\n outlineColor: \"outline.disabled\",\n pointerEvents: \"none\",\n },\n _invalid: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n _active: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n },\n _focus: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n },\n _hover: {\n outline: \"2px solid\",\n outlineColor: \"core.outline\",\n },\n },\n },\n variants: {\n variant: {\n core: {\n backgroundColor: \"transparent\",\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n _hover: {\n outline: \"2px solid\",\n outlineColor: \"core.outline.hover\",\n _active: {\n outline: \"1px solid\",\n outlineColor: \"outline.disabled\",\n backgroundColor: \"core.surface.active\",\n },\n },\n _focus: {\n outline: \"2px solid\",\n outlineColor: \"outline.focus\",\n },\n },\n floating: {\n boxShadow: \"sm\",\n bg: \"floating.surface\",\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n\n _hover: {\n outline: \"1px solid\",\n outlineColor: \"floating.outline.hover\",\n },\n _active: {\n outline: \"1px solid\",\n outlineColor: \"floating.outline.active\",\n backgroundColor: \"floating.surface.active\",\n },\n\n focus: {\n outline: \"1px solid\",\n outlineColor: \"outline.focus\",\n },\n },\n },\n },\n defaultVariants: {\n variant: \"core\",\n },\n});\n","\"use client\";\nimport {\n Box,\n type BoxProps,\n ListItem,\n ListRootProps,\n RecipeVariantProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport type { Node } from \"@react-types/shared\";\nimport React, { PropsWithChildren, useContext, useEffect, useRef } from \"react\";\nimport {\n AriaListBoxProps,\n useListBox,\n useListBoxSection,\n useOption,\n} from \"react-aria\";\nimport { type ListState, type SelectState } from \"react-stately\";\n\nimport { List } from \"..\";\nimport { useColorModeValue } from \"../color-mode\";\nimport { listBoxSlotRecipe } from \"../theme/slot-recipes/listbox\";\n\nexport { Item, Section } from \"react-stately\";\n\ntype ListBoxVariantProps = RecipeVariantProps<typeof listBoxSlotRecipe>;\n\ntype ListBoxProps<T> = AriaListBoxProps<T> &\n Omit<BoxProps, \"filter\" | \"autoFocus\" | \"children\"> &\n PropsWithChildren<ListBoxVariantProps> &\n Exclude<ListRootProps, \"variant\"> & {\n /** External reference to the ListBox itself */\n listBoxRef: React.RefObject<HTMLUListElement>;\n /** Whether or not the listbox is waiting on new data, i.e. through a autosuggest search */\n loading?: boolean;\n /** The state of the listbox, provided externally somehow. */\n state: ListState<T> | SelectState<unknown>;\n /** UI to render if the collection is empty */\n emptyContent?: React.ReactNode;\n maxWidth?: BoxProps[\"maxWidth\"];\n variant?: \"core\" | \"floating\";\n children: React.ReactNode;\n autoFocus?: boolean;\n };\n\n/**\n * A component that renders a list box with selectable options.\n *\n * @example\n * ```jsx\n * const options = [\n * { id: 1, name: \"Option 1\" },\n * { id: 2, name: \"Option 2\" },\n * { id: 3, name: \"Option 3\" },\n * ];\n *\n * const state = useListState({ items: options });\n * const ref = useRef(null);\n *\n * return (\n * <ListBox state={state} listBoxRef={ref}>\n * {(option) => <div key={option.id}>{option.name}</div>}\n * </ListBox>\n * );\n * ```\n *\n * @example\n * ```jsx\n * const { data, isLoading } = useSWR('/api/options')\n * const state = useListState({ items: data });\n * const ref = useRef(null);\n *\n * return (\n * <ListBox state={state} isLoading={isLoading} ref={ref}>\n * {(option) => <div key={option.id}>{option.name}</div>}\n * </ListBox>\n * );\n * ```\n */\n\nexport const ListBox = (props: ListBoxProps<object>) => {\n const { loading, listBoxRef, state, maxWidth, variant, children } = props;\n const { listBoxProps } = useListBox(props, state, listBoxRef);\n const recipe = useSlotRecipe({ key: \"listBox\" });\n const styles = recipe({ variant });\n return (\n <List\n {...listBoxProps}\n ref={listBoxRef}\n css={styles.root}\n aria-busy={loading}\n maxWidth={maxWidth}\n >\n {state.collection.size === 0 && props.emptyContent}\n {[...state.collection].map((item) =>\n item.type === \"section\" ? (\n <ListBoxSection key={item.key} section={item} state={state} />\n ) : (\n <Option key={item.key} item={item} state={state} />\n ),\n )}\n {children}\n </List>\n );\n};\n\nListBox.displayName = \"ListBox\";\n\n/**\n * Renders a label for a listbox item.\n *\n * Useful if you want to render a custom Item - especially if it has a description.\n */\nexport function ItemLabel({ children }: { children: React.ReactNode }) {\n const { labelProps } = useOptionContext();\n return <Box {...labelProps}>{children}</Box>;\n}\n\n/**\n * Renders a description for an Item.\n *\n * Useful if you want to render a custom Item with more than just a label.\n */\nexport function ItemDescription({ children }: { children: React.ReactNode }) {\n const { descriptionProps } = useOptionContext();\n const recipe = useSlotRecipe({ key: \"listbox\" });\n const styles = recipe({});\n return (\n <Box {...descriptionProps} css={styles} fontSize={\"xs\"}>\n {children}\n </Box>\n );\n}\n\ntype OptionProps = {\n item: Node<unknown>;\n state: SelectState<unknown> | ListState<unknown>;\n};\nfunction Option({ item, state }: OptionProps) {\n const ref = useRef(null);\n const {\n optionProps,\n isSelected,\n isDisabled,\n isFocusVisible,\n isFocused,\n labelProps,\n descriptionProps,\n } = useOption({ key: item.key }, state, ref);\n\n const recipe = useSlotRecipe({ key: \"listBox\" });\n const styles = recipe({});\n\n const dataFields: Record<string, boolean> = {};\n if (isSelected) {\n dataFields[\"data-selected\"] = true;\n }\n if (isDisabled) {\n dataFields[\"data-disabled\"] = true;\n }\n if (isFocused) {\n dataFields[\"data-focus\"] = true;\n }\n if (isFocusVisible) {\n dataFields[\"data-focus-visible\"] = true;\n }\n\n /* \n Workaround to fix click througs on mobile devices\n Related to https://github.com/adobe/react-spectrum/issues/4970\n TODO: Follow up with react-spectrum to see if they can solve it on their end\n */\n useEffect(() => {\n (ref as React.RefObject<HTMLDivElement>)?.current?.addEventListener(\n \"touchend\",\n (event: TouchEvent) => {\n event.preventDefault();\n },\n { passive: false, once: true },\n );\n }, []);\n return (\n <OptionContext.Provider value={{ labelProps, descriptionProps }}>\n <ListItem {...optionProps} {...dataFields} ref={ref} css={styles.item}>\n {item.rendered}\n </ListItem>\n </OptionContext.Provider>\n );\n}\n\ntype OptionContextValue = {\n labelProps: React.HTMLAttributes<HTMLElement>;\n descriptionProps: React.HTMLAttributes<HTMLElement>;\n};\n\nconst OptionContext = React.createContext<OptionContextValue>({\n labelProps: {},\n descriptionProps: {},\n});\n\nconst useOptionContext = () => {\n return useContext(OptionContext);\n};\n\ntype ListBoxSectionProps = {\n section: Node<unknown>;\n state: ListState<unknown> | SelectState<unknown>;\n};\nfunction ListBoxSection({ section, state }: ListBoxSectionProps) {\n const { itemProps, headingProps, groupProps } = useListBoxSection({\n heading: section.rendered,\n \"aria-label\": section[\"aria-label\"],\n });\n\n const isFirstSection = section.key === state.collection.getFirstKey();\n const titleColor = useColorModeValue(\"darkGrey\", \"white\");\n\n return (\n <List>\n <ListItem {...itemProps} listStyleType={\"none\"}>\n {section.rendered && (\n <Box\n fontSize=\"mobile.xs\"\n color={titleColor}\n paddingX={3}\n paddingTop={1}\n marginTop={isFirstSection ? 0 : 2}\n textTransform=\"uppercase\"\n fontWeight=\"bold\"\n {...headingProps}\n >\n {section.rendered}\n </Box>\n )}\n <List {...groupProps} padding={0} listStyleType=\"none\">\n {[...(state.collection.getChildren?.(section.key) ?? [])].map(\n (item: Node<unknown>) => (\n <Option key={item.key} item={item} state={state} />\n ),\n )}\n </List>\n </ListItem>\n </List>\n );\n}\n","\"use client\";\nimport {\n NativeSelect as ChakraNativeSelect,\n NativeSelectFieldProps as ChakraNativeSelectFieldProps,\n RecipeVariantProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { DropdownDownFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport * as React from \"react\";\n\nimport { nativeSelectSlotRecipe } from \"../theme/slot-recipes/native-select\";\nimport { Field, FieldBaseProps } from \"./Field\";\n\ntype NativeSelectVariantProps = RecipeVariantProps<\n typeof nativeSelectSlotRecipe\n>;\n\nexport type NativeSelectdProps =\n React.PropsWithChildren<NativeSelectVariantProps> &\n FieldBaseProps &\n ChakraNativeSelectFieldProps & {\n icon?: React.ReactNode;\n };\n\n/**\n * Selects let you choose between several options\n *\n * You should consider only using the Select component when you have more than 4 options. Otherwise, you should use the `<Radio>` component.\n *\n * <NativeSelect label=\"Choose language\">\n * <option>Norwegian (Bokmål)</option>\n * <option>Norwegian (Nynorsk)</option>\n * <option>Sami</option>\n * <option>Swedish</option>\n * <option>Danish</option>\n * <option>Finnish</option>\n * <option>English</option>\n * </NativeSelect>\n *\n */\n\nexport const NativeSelect = React.forwardRef<\n HTMLDivElement,\n NativeSelectdProps\n>(function NativeSelect(props, ref) {\n const {\n children,\n variant = \"core\",\n label,\n invalid,\n disabled,\n required,\n helperText,\n errorText,\n ...rest\n } = props;\n\n const recipe = useSlotRecipe({ recipe: nativeSelectSlotRecipe });\n const styles = recipe({ variant });\n\n return (\n <Field\n label={label}\n invalid={invalid}\n disabled={disabled}\n required={required}\n helperText={helperText}\n errorText={errorText}\n floatingLabel={true}\n >\n <ChakraNativeSelect.Root\n ref={ref}\n css={styles.root}\n aria-disabled={disabled}\n >\n <ChakraNativeSelect.Field\n css={styles.field}\n aria-invalid={invalid}\n {...rest}\n >\n {children}\n </ChakraNativeSelect.Field>\n <ChakraNativeSelect.Indicator css={styles.icon}>\n <DropdownDownFill18Icon />\n </ChakraNativeSelect.Indicator>\n </ChakraNativeSelect.Root>\n </Field>\n );\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { inputRecipe } from \"../recipes/input\";\nimport { NativeSelectAnatomy } from \"./anatomy\";\n\nexport const nativeSelectSlotRecipe = defineSlotRecipe({\n slots: NativeSelectAnatomy.keys(),\n className: \"spor-nativeSelect\",\n base: {\n root: {\n width: \"100%\",\n height: \"fit-content\",\n position: \"relative\",\n },\n field: {\n ...inputRecipe.base,\n },\n icon: {\n width: 5,\n height: 5,\n right: \" 0.5rem\",\n strokeLinecap: \"round\",\n position: \"absolute\",\n display: \"inline-flex\",\n boxAlign: \"center\",\n alignItems: \"center\",\n boxPack: \"center\",\n justifyContent: \"center\",\n pointerEvents: \"none\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n insetEnd: \"0.5rem\",\n color: \"currentColor\",\n fontSize: \"sm\",\n _disabled: {\n color: \"text.disabled\",\n },\n },\n },\n variants: {\n variant: {\n core: {\n field: {\n ...inputRecipe.variants?.variant.core,\n },\n },\n floating: {\n field: {\n ...inputRecipe.variants?.variant.floating,\n },\n },\n },\n },\n});\n","\"use client\";\nimport {\n chakra,\n Input,\n RecipeVariantProps,\n useControllableState,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport React, { PropsWithChildren, useRef } from \"react\";\n\nimport { BoxProps, createTexts, IconButton, Text, useTranslation } from \"..\";\nimport { numericStepperRecipe } from \"../theme/slot-recipes/numeric-stepper\";\nimport { Field, FieldBaseProps } from \"./Field\";\n\ntype NumericStepperVariants = RecipeVariantProps<typeof numericStepperRecipe>;\n\nexport type NumericStepperProps = BoxProps &\n FieldBaseProps &\n PropsWithChildren<NumericStepperVariants> & {\n children: React.ReactNode;\n /** The name of the input field */\n name?: string;\n /** The current value */\n value?: number;\n /** A default value, if uncontrolled */\n defaultValue?: number;\n /** Callback for when the value changes */\n onChange?: (value: number) => void;\n /** Optional minimum value. Defaults to 0 */\n minValue?: number;\n /** Optional maximum value. Defaults to 99 */\n maxValue?: number;\n /** Whether the stepper is disabled or not */\n disabled?: boolean;\n /** Whether to show input field or not */\n withInput?: boolean;\n /** The amount to increase/decrease when pressing +/- */\n stepSize?: number;\n /** Whether to show the number input when value is zero */\n showZero?: boolean;\n /** Name added to the aria-label of subtract and add buttons. */\n ariaLabelContext?: { singular: string; plural: string };\n } & Omit<BoxProps, \"onChange\">;\n\n/** A simple stepper component for integer values\n *\n * Allows you to choose a given integer value, like for example the number of\n * adults on your journey.\n *\n * @example\n * ```tsx\n * <NumericStepper value={value} onChange={setValue} />\n * ```\n *\n * You can also set a minimum and/or maximum value and step size:\n *\n * ```tsx\n * <NumericStepper value={value} onChange={setValue} minValue={1} maxValue={10} stepSize={3} />\n * ```\n *\n * You can use the NumericStepper inside of a Field component to get IDs etc linked up automatically:\n *\n * ```tsx\n * <NumericStepper />\n * ```\n * @see https://spor.vy.no/components/numeric-stepper\n */\n\nexport const NumericStepper = React.forwardRef<\n HTMLDivElement,\n NumericStepperProps\n>((props: NumericStepperProps, ref) => {\n const {\n name: nameProp,\n id: idProp,\n value: valueProp,\n defaultValue = 1,\n onChange: onChangeProp,\n minValue = 0,\n maxValue = 99,\n disabled,\n withInput = true,\n stepSize = 1,\n showZero = false,\n ariaLabelContext = { singular: \"\", plural: \"\" },\n ...rest\n } = props;\n\n const addButtonRef = useRef<HTMLButtonElement>(null);\n const { t } = useTranslation();\n const recipe = useSlotRecipe({ recipe: numericStepperRecipe });\n const styles = recipe();\n const [value, onChange] = useControllableState<number>({\n value: valueProp,\n onChange: onChangeProp,\n defaultValue,\n });\n const clampedStepSize = Math.max(Math.min(stepSize, 10), 1);\n\n const focusOnAddButton = () => {\n addButtonRef.current?.focus();\n };\n\n return (\n <Field css={styles.root} width=\"auto\" {...rest} ref={ref}>\n <VerySmallButton\n icon={<SubtractIcon stepLabel={clampedStepSize} />}\n aria-label={t(\n texts.decrementButtonAriaLabel(\n clampedStepSize,\n stepSize === 1\n ? ariaLabelContext.singular\n : ariaLabelContext.plural,\n ),\n )}\n onClick={() => {\n onChange(Math.max(value - clampedStepSize, minValue));\n if (Math.max(value - clampedStepSize, minValue) <= minValue) {\n focusOnAddButton();\n }\n }}\n visibility={value <= minValue ? \"hidden\" : \"visible\"}\n disabled={disabled}\n id={value <= minValue ? undefined : idProp}\n />\n {withInput ? (\n <Input\n min={minValue}\n max={maxValue}\n name={nameProp}\n value={value}\n disabled={disabled}\n id={!showZero && value === 0 ? undefined : idProp}\n css={styles.input}\n width={`${Math.max(value.toString().length + 1, 3)}ch`}\n visibility={!showZero && value === 0 ? \"hidden\" : \"visible\"}\n aria-live=\"assertive\"\n aria-label={\n ariaLabelContext.plural === \"\"\n ? \"\"\n : t(texts.currentNumberAriaLabel(ariaLabelContext.plural))\n }\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n const numericInput = Number(e.target.value);\n if (Number.isNaN(numericInput)) {\n return;\n }\n onChange(Math.max(Math.min(numericInput, maxValue), minValue));\n if (\n !showZero &&\n Math.max(Math.min(numericInput, maxValue), minValue) === 0\n ) {\n focusOnAddButton();\n }\n }}\n />\n ) : (\n <Text\n visibility={!showZero && value === 0 ? \"hidden\" : \"visible\"}\n aria-live=\"assertive\"\n paddingX=\"0.95rem\"\n aria-label={\n ariaLabelContext.plural === \"\"\n ? \"\"\n : t(texts.currentNumberAriaLabel(ariaLabelContext.plural))\n }\n >\n {value}\n </Text>\n )}\n <VerySmallButton\n ref={addButtonRef}\n icon={<AddIcon stepLabel={clampedStepSize} />}\n aria-label={t(\n texts.incrementButtonAriaLabel(\n clampedStepSize,\n stepSize === 1\n ? ariaLabelContext.singular\n : ariaLabelContext.plural,\n ),\n )}\n onClick={() => onChange(Math.min(value + clampedStepSize, maxValue))}\n visibility={value >= maxValue ? \"hidden\" : \"visible\"}\n disabled={disabled}\n id={value >= maxValue ? undefined : idProp}\n />\n </Field>\n );\n});\nNumericStepper.displayName = \"NumericStepper\";\n\ntype VerySmallButtonProps = {\n /** The icon to render */\n icon: React.ReactElement;\n /** Accessible label for the icon */\n \"aria-label\": string;\n /** Callback for when the button is clicked */\n onClick: () => void;\n /** Whether or not the button is hidden */\n visibility?: \"visible\" | \"hidden\";\n /** Whether or not the button is disabled */\n disabled?: boolean;\n /** The ID of the button */\n id?: string;\n};\n\n/** Internal override for extra small icon buttons */\nconst VerySmallButton = React.forwardRef<\n HTMLButtonElement,\n VerySmallButtonProps\n>((props, ref) => {\n const recipe = useSlotRecipe({ recipe: numericStepperRecipe });\n const styles = recipe({ colorPalette: \"default\" });\n return (\n <IconButton\n variant=\"primary\"\n size=\"xs\"\n css={styles.button}\n ref={ref}\n {...props}\n />\n );\n});\nVerySmallButton.displayName = \"VerySmallButton\";\n\ntype IconPropTypes = BoxProps & { stepLabel: number };\n\nconst SubtractIcon = ({ stepLabel }: IconPropTypes) => (\n <>\n <chakra.svg as=\"svg\" viewBox=\"0 0 30 30\" stroke=\"currentColor\">\n <line\n x1=\"9\"\n y1=\"15\"\n x2=\"21\"\n y2=\"15\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n preserveAspectRatio=\"xMidYMid meet\"\n />\n </chakra.svg>\n {stepLabel > 1 && (\n <chakra.span paddingRight=\"1\">{stepLabel.toString()}</chakra.span>\n )}\n </>\n);\n\nconst AddIcon = ({ stepLabel }: IconPropTypes) => (\n <>\n <chakra.svg as=\"svg\" viewBox=\"0 0 30 30\" stroke=\"currentColor\">\n <line\n x1=\"9\"\n y1=\"15\"\n x2=\"21\"\n y2=\"15\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"15\"\n y1=\"9\"\n x2=\"15\"\n y2=\"21\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </chakra.svg>\n {stepLabel > 1 && (\n <chakra.span paddingRight=\"1\">{stepLabel.toString()}</chakra.span>\n )}\n </>\n);\n\nconst texts = createTexts({\n currentNumberAriaLabel(ariaContext) {\n return {\n nb: `Valgt antall ${ariaContext}`,\n en: `Chosen number of ${ariaContext}`,\n nn: `Valgt antall ${ariaContext}`,\n sv: `Valgt antall ${ariaContext}`,\n };\n },\n decrementButtonAriaLabel(stepSize, ariaContext) {\n return {\n nb: `Trekk fra ${stepSize} ${ariaContext}`,\n en: `Subtract ${stepSize} ${ariaContext}`,\n nn: `Trekk frå ${stepSize} ${ariaContext}`,\n sv: `Subtrahera ${stepSize} ${ariaContext}`,\n };\n },\n incrementButtonAriaLabel(stepSize, ariaContext) {\n return {\n nb: `Legg til ${stepSize} ${ariaContext}`,\n en: `Add ${stepSize} ${ariaContext}`,\n nn: `Legg til ${stepSize} ${ariaContext}`,\n sv: `Lägg till ${stepSize} ${ariaContext}`,\n };\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { numericStepperAnatomy } from \"./anatomy\";\n\nexport const numericStepperRecipe = defineSlotRecipe({\n slots: numericStepperAnatomy.keys(),\n className: \"spor-numeric-stepper\",\n base: {\n root: {\n \"& > div\": {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n },\n input: {\n fontSize: \"sm\",\n fontWeight: \"bold\",\n marginX: 0.5,\n padding: 0,\n paddingX: 0.5,\n borderRadius: \"xs\",\n outline: \"none\",\n height: \"auto\",\n textAlign: \"center\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n color: \"core.text\",\n backgroundColor: \"transparent\",\n\n _focus: {\n backgroundColor: \"surface\",\n outline: \"2px solid\",\n outlineColor: \"outline.focus\",\n },\n\n _active: {\n backgroundColor: \"accent.surface.active\",\n },\n\n _disabled: {\n pointerEvents: \"none\",\n opacity: 0.5,\n },\n\n _hover: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n },\n text: {\n fontSize: \"sm\",\n fontWeight: \"bold\",\n marginX: 1,\n paddingX: 1,\n textAlign: \"center\",\n width: \"4ch\",\n color: \"core.text\",\n },\n button: {\n outlineOffset: \"-2px\",\n width: \"auto\",\n _icon: {\n width: \"1.2rem\",\n height: \"1.2rem\",\n },\n },\n },\n});\n","\"use client\";\n\nimport { Button, useControllableState } from \"@chakra-ui/react\";\nimport React, { forwardRef } from \"react\";\n\nimport { ButtonProps, Input, InputProps } from \"..\";\nimport { createTexts, useTranslation } from \"..\";\n\nexport interface PasswordVisibilityProps {\n /** Default visibility state */\n defaultVisible?: boolean;\n /** Visibility state */\n visible?: boolean;\n /** Callback for when the visibility state changes */\n onVisibleChange?: (visible: boolean) => void;\n}\n\nexport interface PasswordInputProps\n extends InputProps,\n PasswordVisibilityProps {\n rootProps?: InputProps;\n}\n\n/**\n * A password input field with a visibility toggle.\n *\n * ```tsx\n * <PasswordInput label=\"Password\" />\n * ```\n *\n * You can also control the visibility state:\n *\n * ```tsx\n * <PasswordInput label=\"Password\" visible={visible} onVisibleChange={setVisible} />\n * ```\n *\n * You can also set the default visibility state:\n *\n * ```tsx\n * <PasswordInput label=\"Password\" defaultVisible />\n * ```\n *\n * @see https://spor.vy.no/components/password-input\n */\n\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(\n (props, ref) => {\n const {\n defaultVisible,\n visible: visibleProp,\n onVisibleChange,\n label,\n startElement,\n ...rest\n } = props;\n\n const [visible, setVisible] = useControllableState({\n value: visibleProp,\n defaultValue: defaultVisible || false,\n onChange: onVisibleChange,\n });\n\n const { t } = useTranslation();\n\n return (\n <Input\n ref={ref}\n startElement={startElement && startElement}\n label={label}\n type={visible ? \"text\" : \"password\"}\n endElement={\n <VisibilityTrigger\n variant=\"ghost\"\n disabled={rest.disabled}\n onPointerDown={(e) => {\n if (rest.disabled) return;\n if (e.button !== 0) return;\n e.preventDefault();\n setVisible(!visible);\n }}\n >\n {visible ? t(texts.hidePassword) : t(texts.showPassword)}\n </VisibilityTrigger>\n }\n {...rest}\n />\n );\n },\n);\nPasswordInput.displayName = \"PasswordInput\";\n\nconst VisibilityTrigger = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref) => {\n return (\n <Button\n ref={ref}\n type=\"button\"\n fontWeight=\"normal\"\n size=\"sm\"\n borderRadius=\"sm\"\n marginRight={1}\n {...props}\n >\n {props.children}\n </Button>\n );\n },\n);\nVisibilityTrigger.displayName = \"VisibilityTrigger\";\n\nconst texts = createTexts({\n showPassword: {\n nb: \"Vis\",\n nn: \"Vis\",\n en: \"Show\",\n sv: \"Visa\",\n },\n hidePassword: {\n nb: \"Skjul\",\n nn: \"Skjul\",\n en: \"Hide\",\n sv: \"Dölj\",\n },\n});\n","\"use client\";\nimport { useControllableState } from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nimport { createTexts, Input, InputProps, useTranslation } from \"..\";\nimport { AttachedInputs } from \"./AttachedInputs\";\nimport { CountryCodeSelect } from \"./CountryCodeSelect\";\n\nexport type CountryCodeAndPhoneNumber = {\n countryCode: string;\n nationalNumber: string;\n};\n\ntype PhoneNumberInputProps = Omit<InputProps, \"value\"> & {\n /** The label. Defaults to a localized version of \"Phone number\" */\n label?: string;\n /** Callback for when the country code or phone number changes */\n onValueChange?: (change: CountryCodeAndPhoneNumber) => void;\n /** The optional value of the country code and phone number */\n value?: CountryCodeAndPhoneNumber;\n /** Returns an extra optional text when true */\n optional?: boolean;\n allowedCountryCodes?: string[];\n invalid?: boolean;\n errorText?: string;\n};\n/**\n * A component for entering phone numbers.\n *\n * ```tsx\n * <PhoneNumberInput name=\"phone\" />\n * ```\n *\n * > Please note that when specifying the name, the rendered names will be `${name}-country-code` and `${name}-phone-number` unless a name is provided for both countryCode and nationalNumber.\n *\n * The field can be controlled as well:\n * ```tsx\n * <PhoneNumberInput\n * value={{ countryCode: '+47', phoneNumber: '81549300' }}\n * onChange={handleChange}\n * />\n * ```\n */\n\nexport const PhoneNumberInput = forwardRef<\n HTMLInputElement,\n PhoneNumberInputProps\n>((props, ref) => {\n const {\n label: externalLabel,\n value: externalValue,\n onValueChange: externalOnChange,\n variant,\n optional,\n allowedCountryCodes,\n invalid,\n errorText,\n } = props;\n\n const { t } = useTranslation();\n const label =\n externalLabel ??\n (optional ? t(texts.phoneNumberOptional) : t(texts.phoneNumber));\n\n const [value, onChange] = useControllableState({\n value: externalValue,\n onChange: externalOnChange,\n defaultValue: {\n countryCode: \"+47\",\n nationalNumber: \"\",\n },\n });\n\n const handleCountryCodeChange = (details: { value: string[] }) => {\n const countryCode = details.value[0];\n onChange({\n countryCode: countryCode,\n nationalNumber: value.nationalNumber,\n });\n };\n\n return (\n <AttachedInputs\n border={invalid ? \"1px solid\" : \"none\"}\n borderColor={invalid ? \"outline.error\" : \"none\"}\n outline={invalid ? \"1px solid\" : \"none\"}\n outlineColor={invalid ? \"outline.error\" : \"none\"}\n borderRadius={invalid ? \"sm\" : \"none\"}\n display=\"grid\"\n gridTemplateColumns=\"1fr 10fr\"\n >\n <>\n <CountryCodeSelect\n value={[value.countryCode]}\n onValueChange={handleCountryCodeChange}\n height=\"100%\"\n width=\"6.25rem\"\n variant={variant}\n allowedCountryCodes={allowedCountryCodes}\n data-state=\"on\"\n />\n <Input\n ref={ref}\n type=\"tel\"\n {...props}\n value={value.nationalNumber}\n invalid={invalid}\n errorText={errorText}\n onChange={(e) => {\n const target = e.target as HTMLInputElement;\n // Removes everything but numbers, spaces and dashes\n const strippedValue = target.value.replaceAll(/[^\\d\\s-]/g, \"\");\n onChange({\n countryCode: value.countryCode,\n nationalNumber: strippedValue,\n });\n }}\n variant={variant}\n data-state=\"on\"\n label={label}\n />\n </>\n </AttachedInputs>\n );\n});\nPhoneNumberInput.displayName = \"PhoneNumberInput\";\n\nconst texts = createTexts({\n phoneNumber: {\n nb: \"Telefonnummer\",\n nn: \"Telefonnummer\",\n en: \"Phone number\",\n sv: \"Telefonnummer\",\n },\n phoneNumberOptional: {\n nb: \"Telefonnummer (valgfritt)\",\n nn: \"Telefonnummer (valgfritt)\",\n en: \"Phone number (optional)\",\n sv: \"Telefonnummer (valfritt)\",\n },\n countryCodeLabel: {\n nb: \"Landskode\",\n nn: \"Landskode\",\n en: \"Country code\",\n sv: \"Landskod\",\n },\n});\n","\"use client\";\n\nimport { createListCollection } from \"@chakra-ui/react\";\nimport { getSupportedCallingCodes } from \"awesome-phonenumber\";\nimport { forwardRef } from \"react\";\n\nimport {\n createTexts,\n Select,\n SelectItem,\n SelectProps,\n useTranslation,\n} from \"..\";\n\nconst prioritizedCountryCodes = [\n { label: \"+47\", value: \"+47\" },\n { label: \"+46\", value: \"+46\" },\n { label: \"+45\", value: \"+45\" },\n];\n\nconst sortedCallingCodes = getSupportedCallingCodes()\n .sort((a, b) => Number(a) - Number(b))\n .map((code) => ({\n label: `+${code}`,\n value: `+${code}`,\n }))\n .filter(\n (code) =>\n !prioritizedCountryCodes.some((pCode) => pCode.label === code.label),\n );\n\nexport const callingCodes = createListCollection({\n items: [...prioritizedCountryCodes, ...sortedCallingCodes],\n});\n\ntype CountryCodeSelectProps = Omit<SelectProps, \"label\" | \"collection\"> & {\n allowedCountryCodes?: string[];\n};\n\nexport const CountryCodeSelect = forwardRef<\n HTMLDivElement,\n CountryCodeSelectProps\n>((props, ref) => {\n const { t } = useTranslation();\n if (props.allowedCountryCodes) {\n callingCodes.items = callingCodes.items.filter((callingCode) =>\n props.allowedCountryCodes?.some((code) => code === callingCode.label),\n );\n }\n return (\n <Select\n {...props}\n ref={ref}\n positioning={{ placement: \"bottom\", flip: false }}\n collection={callingCodes}\n lazyMount\n aria-label={t(texts.countryCode)}\n variant={\"rightSideSquare\"}\n >\n {callingCodes.items.map((code) => (\n <SelectItem as={\"option\"} key={code.label} item={code}>\n {code.label}\n </SelectItem>\n ))}\n </Select>\n );\n});\nCountryCodeSelect.displayName = \"CountryCodeSelect\";\n\nconst texts = createTexts({\n countryCode: {\n nb: \"Landkode\",\n nn: \"Landskode\",\n en: \"Country code\",\n sv: \"Landskod\",\n },\n});\n","\"use client\";\nimport { RecipeVariantProps } from \"@chakra-ui/react\";\nimport { RadioGroup as ChakraRadioGroup } from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren } from \"react\";\n\nimport { radioGroupSlotRecipe } from \"../theme/slot-recipes/radio\";\n\ntype RadioVariants = RecipeVariantProps<typeof radioGroupSlotRecipe>;\n\nexport type RadioProps = PropsWithChildren<RadioVariants> &\n ChakraRadioGroup.ItemProps & {\n rootRef?: React.Ref<HTMLDivElement>;\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n };\n\n/**\n * The humble radio button.\n *\n * Specify the label as `children` and the value as `value`.\n *\n * Place the Radio components in a group with several other Radio components. You can do that with the `RadioGroup` component.\n *\n * ```tsx\n * <RadioGroup name=\"ticket\">\n * <Radio value=\"economy\">Economy</Radio>\n * <Radio value=\"business\">Business</Radio>\n * <Radio value=\"first-class\">First Class</Radio>\n * </RadioGroup>\n */\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>((props, ref) => {\n const { children, inputProps, rootRef, ...rest } = props;\n\n return (\n <ChakraRadioGroup.Item ref={rootRef} {...rest}>\n <ChakraRadioGroup.ItemHiddenInput ref={ref} {...inputProps} />\n <ChakraRadioGroup.ItemIndicator />\n {children && (\n <ChakraRadioGroup.ItemText>{children}</ChakraRadioGroup.ItemText>\n )}\n </ChakraRadioGroup.Item>\n );\n});\nRadio.displayName = \"Radio\";\n\ntype RadioGroupProps = Omit<\n ChakraRadioGroup.RootProps,\n \"colorPalette\" | \"variant\" | \"size\"\n> & {};\n\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(\n (props, ref) => {\n return <ChakraRadioGroup.Root ref={ref} {...props} aria-labelledby=\"\" />;\n },\n);\nRadioGroup.displayName = \"RadioGroup\";\n","\"use client\";\n\nimport {\n CloseOutline24Icon,\n SearchOutline24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef } from \"react\";\n\nimport { createTexts, Input, InputProps, useTranslation } from \"..\";\nimport { IconButton } from \"../button/IconButton\";\n\nexport type SearchInputProps = InputProps & {\n /** Callback for when the clear button is clicked */\n onReset?: () => void;\n};\n\n/** Simple search input component.\n *\n * Includes a search icon, a localized label and a reset button.\n */\n\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(\n (props, ref) => {\n const { t } = useTranslation();\n const { variant = \"core\", onReset, label, value } = props;\n const clearButton = onReset && value;\n\n return (\n <Input\n ref={ref}\n type=\"search\"\n variant={variant}\n {...props}\n startElement={<SearchOutline24Icon color=\"icon\" />}\n endElement={\n clearButton && (\n <IconButton\n variant=\"ghost\"\n type=\"button\"\n size=\"sm\"\n aria-label={t(texts.reset)}\n icon={<CloseOutline24Icon />}\n onClick={onReset}\n />\n )\n }\n label={(label as string) ?? t(texts.label)}\n />\n );\n },\n);\nSearchInput.displayName = \"SearchInput\";\n\nconst texts = createTexts({\n label: {\n nb: \"Søk\",\n nn: \"Søk\",\n sv: \"Sök\",\n en: \"Search\",\n },\n reset: {\n nb: \"Tøm søkefeltet\",\n nn: \"Tøm søkefelt\",\n sv: \"Rensa sökrutan\",\n en: \"Reset search field\",\n },\n});\n","\"use client\";\n\nimport type {\n CollectionItem,\n SelectLabelProps,\n SelectRootProps as ChakraSelectRootProps,\n} from \"@chakra-ui/react\";\nimport {\n Box,\n Portal,\n Select as ChakraSelect,\n useSelectContext,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport {\n CheckmarkFill18Icon,\n DropdownDownFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport * as React from \"react\";\n\nimport { CloseButton } from \"@/button\";\n\nimport { Field, FieldProps } from \"./Field\";\n\nexport type SelectProps = ChakraSelectRootProps &\n FieldProps & {\n label?: string;\n };\n\n/**\n * A Select component.\n *\n * This component is useful to choose an item from a dropdown list of items. The list has four different variants, core, floating, rightSideSquare, leftSideSquare.\n * The last two variants are useful in attachecdInput for example in the PhoneNumberInput and CountryCodeSelect components.\n *\n * @example\n * ```tsx\n * <Select label=\"Choose transportation\" >\n <SelectItem item={{\n label: \"Train\",\n value: \"train\",\n }}>\n item label\n </SelectItem>\n <SelectItem item={{\n label: \"Bus\",\n value: \"Bus\",\n }}>\n item label\n </SelectItem>\n </Select>\n * ```\n *\n * @see https://spor.vy.no/components/select\n *\n */\n\nexport const Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (props, ref) => {\n const {\n variant = \"core\",\n children,\n positioning,\n label,\n errorText,\n invalid,\n helperText,\n ...rest\n } = props;\n const recipe = useSlotRecipe({ key: \"select\" });\n const styles = recipe({ variant });\n\n return (\n <Field errorText={errorText} invalid={invalid} helperText={helperText}>\n <ChakraSelect.Root\n {...rest}\n ref={ref}\n positioning={{ sameWidth: true, ...positioning }}\n variant={variant}\n css={styles.root}\n position={\"relative\"}\n >\n <SelectTrigger data-attachable>\n <SelectValueText withPlaceholder={label ? true : false} />\n </SelectTrigger>\n {label && <SelectLabel css={styles.label}>{label}</SelectLabel>}\n <SelectContent css={styles.selectContent}>{children}</SelectContent>\n </ChakraSelect.Root>\n </Field>\n );\n },\n);\n\nexport const SelectLabel = (props: SelectLabelProps) => {\n const { value } = useSelectContext();\n\n return (\n <ChakraSelect.Label\n {...props}\n data-selected={value.length > 0 ? true : undefined}\n />\n );\n};\n\nSelect.displayName = \"Select\";\n\ntype SelectItemProps = ChakraSelect.ItemProps & {\n children: React.ReactNode;\n description?: React.ReactNode;\n};\n\nexport const SelectItem = React.forwardRef<HTMLDivElement, SelectItemProps>(\n (props, ref) => {\n const { item, children, description, ...rest } = props;\n const recipe = useSlotRecipe({ key: \"select\" });\n const styles = recipe();\n return (\n <ChakraSelect.Item item={item} {...rest} ref={ref} css={styles.item}>\n <Box width=\"100%\">\n <ChakraSelect.ItemText display=\"flex\">\n {children}\n </ChakraSelect.ItemText>\n {description && <Box css={styles.itemDescription}>{description}</Box>}\n </Box>\n\n <ChakraSelect.ItemIndicator>\n <CheckmarkFill18Icon />\n </ChakraSelect.ItemIndicator>\n </ChakraSelect.Item>\n );\n },\n);\nSelectItem.displayName = \"SelectItem\";\n\ntype SelectItemGroupProps = ChakraSelect.ItemGroupProps & {\n label: React.ReactNode;\n children: React.ReactNode;\n};\n\nexport const SelectItemGroup = React.forwardRef<\n HTMLDivElement,\n SelectItemGroupProps\n>(function SelectItemGroup(props, ref) {\n const { children, label, ...rest } = props;\n return (\n <ChakraSelect.ItemGroup {...rest} ref={ref}>\n <ChakraSelect.ItemGroupLabel>{label}</ChakraSelect.ItemGroupLabel>\n {children}\n </ChakraSelect.ItemGroup>\n );\n});\n\ntype SelectTriggerProps = ChakraSelect.ControlProps & {\n clearable?: boolean;\n children?: React.ReactNode;\n};\n\nexport const SelectTrigger = React.forwardRef<\n HTMLButtonElement,\n SelectTriggerProps\n>(function SelectTrigger(props, ref) {\n const { children, clearable, ...rest } = props;\n const recipe = useSlotRecipe({ key: \"select\" });\n const styles = recipe();\n return (\n <ChakraSelect.Control {...rest} css={styles.control}>\n <ChakraSelect.Trigger ref={ref} css={styles.trigger}>\n {children}\n </ChakraSelect.Trigger>\n <ChakraSelect.IndicatorGroup css={styles.indicatorGroup}>\n {clearable && <SelectClearTrigger />}\n <Box css={styles.indicator}>\n <DropdownDownFill24Icon />\n </Box>\n </ChakraSelect.IndicatorGroup>\n </ChakraSelect.Control>\n );\n});\n\ntype SelectClearTriggerProps = ChakraSelect.ClearTriggerProps & {\n children?: React.ReactNode;\n};\n\nconst SelectClearTrigger = React.forwardRef<\n HTMLButtonElement,\n SelectClearTriggerProps\n>(function SelectClearTrigger(props, ref) {\n return (\n <ChakraSelect.ClearTrigger asChild {...props} ref={ref}>\n <CloseButton\n size=\"xs\"\n focusVisibleRing=\"inside\"\n focusRingWidth=\"2px\"\n pointerEvents=\"auto\"\n />\n </ChakraSelect.ClearTrigger>\n );\n});\n\ntype SelectContentProps = ChakraSelect.ContentProps & {\n portalled?: boolean;\n portalRef?: React.RefObject<HTMLElement>;\n};\n\nexport const SelectContent = React.forwardRef<\n HTMLDivElement,\n SelectContentProps\n>(function SelectContent(props, ref) {\n const { portalled = true, portalRef, ...rest } = props;\n return (\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraSelect.Positioner>\n <ChakraSelect.Content {...rest} ref={ref} />\n </ChakraSelect.Positioner>\n </Portal>\n );\n});\n\ntype SelectValueTextProps = Omit<ChakraSelect.ValueTextProps, \"children\"> & {\n children?(items: CollectionItem[]): React.ReactNode;\n placeholder?: string;\n withPlaceholder?: boolean;\n};\n\nexport const SelectValueText = React.forwardRef<\n HTMLSpanElement,\n SelectValueTextProps\n>(function SelectValueText(props, ref) {\n const { children, withPlaceholder, placeholder, ...rest } = props;\n return (\n <ChakraSelect.ValueText\n {...rest}\n ref={ref}\n placeholder={placeholder}\n paddingTop={withPlaceholder ? \"4\" : \"0\"}\n >\n <ChakraSelect.Context>\n {(select: {\n selectedItems: CollectionItem[];\n\n collection: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stringifyItem: (arg0: any) => any;\n } /* Find a way to not use any */;\n }) => {\n const items = select.selectedItems;\n if (items.length === 0) return placeholder;\n if (children) return children(items);\n if (items.length === 1)\n return select.collection.stringifyItem(items[0]);\n return `${items.length} selected`;\n }}\n </ChakraSelect.Context>\n </ChakraSelect.ValueText>\n );\n});\n\nexport const SelectItemText = ChakraSelect.ItemText;\nexport const SelectRoot = ChakraSelect.Root;\n","\"use client\";\nimport {\n ConditionalValue,\n RecipeVariantProps,\n Switch as ChakraSwitch,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren } from \"react\";\n\nimport { switchSlotRecipe } from \"../theme/slot-recipes/switch\";\nimport { Field, FieldBaseProps } from \"./Field\";\n\ntype SwitchVariants = RecipeVariantProps<typeof switchSlotRecipe>;\n\nexport type SwitchProps = Exclude<\n ChakraSwitch.RootProps,\n \"size\" | \"colorPalette\"\n> &\n FieldBaseProps &\n PropsWithChildren<SwitchVariants> & {\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n rootRef?: React.Ref<HTMLLabelElement>;\n trackLabel?: { on: React.ReactNode; off: React.ReactNode };\n thumbLabel?: { on: React.ReactNode; off: React.ReactNode };\n size?: ConditionalValue<\"sm\" | \"md\" | \"lg\">;\n label?: React.ReactNode;\n onCheckedChange?: (checked: boolean) => void;\n };\n\n/**\n * A switch lets you toggle between on and off, yes and no. It's an alternative to a checkbox.\n *\n * You can set a label inside of the Switch component by defining the `label` prop.\n *\n * ```tsx\n * <Switch label=\"This is a label\"/>\n * ```\n *\n * Switches are available in three different sizes - `sm`, `md` and `lg`.\n *\n * ```tsx\n *\n * <Switch size=\"sm\" />\n *\n * ```\n */\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n (props, ref) => {\n const {\n rootRef,\n size = \"md\",\n label,\n invalid,\n errorText,\n helperText,\n ...rest\n } = props;\n const recipe = useSlotRecipe({ key: \"switch\" });\n const styles = recipe({ size });\n\n return (\n <Field\n style={{ width: \"auto\" }}\n invalid={invalid}\n errorText={errorText}\n helperText={helperText}\n >\n <ChakraSwitch.Root\n ref={rootRef}\n {...rest}\n checked={props.checked}\n css={styles.root}\n >\n <ChakraSwitch.Label>{label}</ChakraSwitch.Label>\n <ChakraSwitch.HiddenInput ref={ref} />\n <ChakraSwitch.Control css={styles.control}>\n <ChakraSwitch.Thumb />\n </ChakraSwitch.Control>\n </ChakraSwitch.Root>\n </Field>\n );\n },\n);\nSwitch.displayName = \"Switch\";\n","\"use client\";\n\nimport {\n RecipeVariantProps,\n Textarea as ChakraTextarea,\n TextareaProps as ChakraTextareaProps,\n useRecipe,\n} from \"@chakra-ui/react\";\nimport React, {\n forwardRef,\n PropsWithChildren,\n ReactNode,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport { textareaRecipe } from \"../theme/recipes/textarea\";\nimport { Field, FieldProps } from \"./Field\";\nimport { FloatingLabel } from \"./FloatingLabel\";\n\ntype TextareaVariants = RecipeVariantProps<typeof textareaRecipe>;\nexport type TextareaProps = Exclude<\n ChakraTextareaProps,\n \"size\" | \"colorPalette\"\n> &\n FieldProps &\n PropsWithChildren<TextareaVariants> & {\n label: ReactNode;\n };\n\n/**\n * Hook to calculate the height of the label element to adjust spacing for the input for floating label.\n */\nconst useLabelHeight = (label: ReactNode | undefined) => {\n const labelRef = useRef<HTMLLabelElement>(null);\n const [labelHeight, setLabelHeight] = useState(0);\n\n useLayoutEffect(() => {\n const updateLabelHeight = () => {\n if (labelRef.current) {\n setLabelHeight(labelRef.current.offsetHeight);\n }\n };\n\n const observer = new ResizeObserver(updateLabelHeight);\n const currentLabelRef = labelRef.current;\n if (currentLabelRef) {\n observer.observe(currentLabelRef);\n }\n\n // Initial calculation with a slight delay to ensure CSS is applied\n setTimeout(updateLabelHeight, 0);\n\n return () => {\n if (currentLabelRef) {\n observer.unobserve(currentLabelRef);\n }\n };\n }, [label]);\n\n return { labelRef, labelHeight };\n};\n\n/**\n *\n * A simple Textarea component:\n *\n * ```tsx\n * <Textarea label=\"Description\" />\n * ```\n *\n * Textarea has two variants core, and floating.\n *\n */\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n (props, ref) => {\n const { label, variant = \"core\", ...fieldProps } = props;\n const recipe = useRecipe({ key: \"textarea\" });\n const styles = recipe({ variant });\n\n const { labelRef, labelHeight } = useLabelHeight(label);\n\n return (\n <Field {...fieldProps} position=\"relative\">\n <ChakraTextarea\n {...props}\n css={styles}\n className=\"peer\"\n ref={ref}\n style={\n { \"--label-height\": `${labelHeight}px` } as React.CSSProperties\n }\n placeholder=\" \"\n />\n <FloatingLabel ref={labelRef}>{label}</FloatingLabel>\n </Field>\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n","\"use client\";\nimport { ButtonProps, chakra, RecipeVariantProps } from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nimport { pressableCardRecipe } from \"../theme/recipes/pressable-card\";\n\n/**\n * `PressableCard` is a component that renders a pressable card.\n *\n * The `PressableCard` component can be used to create a card that responds to user interactions.\n * It can be rendered as a button, link, label, or any other HTML element by specifying the `as` prop.\n * If no `as` prop is provided, it defaults to a button.\n *\n * The `variant` prop can be used to control the style variant of the card. It defaults to \"core\".\n *\n * Example usage:\n *\n * ```tsx\n * <PressableCard>\n * Content\n * </PressableCard>\n * ```\n *\n * To render the card as a different HTML element, specify the `as` prop:\n *\n * ```tsx\n * <PressableCard as=\"a\">\n * This is now a <a /> element\n * </PressableCard>\n * ```\n *\n * For a static card with other color palette, use the `StaticCard` component.\n *\n * @see StaticCard\n */\n\nconst PressableCardButton = chakra(\"button\", pressableCardRecipe);\n\ntype PressableCardProps = RecipeVariantProps<typeof pressableCardRecipe> &\n ButtonProps;\n\nexport const PressableCard = forwardRef<HTMLDivElement, PressableCardProps>(\n (props, ref) => {\n return <PressableCardButton {...props} ref={ref} />;\n },\n);\nPressableCard.displayName = \"PressableCard\";\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { defineRecipe } from \"../../util\";\n\nexport const pressableCardRecipe = defineRecipe({\n base: {\n appearance: \"none\",\n border: \"none\",\n overflow: \"hidden\",\n fontSize: \"inherit\",\n display: \"block\",\n borderRadius: \"md\",\n cursor: \"pointer\",\n transitionProperty: \"common\",\n\n transitionDuration: \"fast\",\n\n _disabled: {\n outline: \"none\",\n pointerEvents: \"none\",\n background: \"surface.disabled\",\n color: \"text.disabled\",\n },\n },\n\n variants: {\n variant: {\n floating: {\n boxShadow: \"0px 1px 3px 0px var(--shadow-color)\",\n shadowColor: \"surface.disabled\",\n\n border: \"sm\",\n borderColor: \"floating.outline\",\n\n backgroundColor: \"floating.surface\",\n _hover: {\n boxShadow: \"0px 2px 6px 0px var(--shadow-color)\",\n backgroundColor: \"floating.surface.hover\",\n\n borderColor: \"floating.outline.hover\",\n\n _active: {\n boxShadow: \"none\",\n backgroundColor: \"floating.surface.active\",\n borderColor: \"floating.outline.active\",\n },\n },\n },\n core: {\n outlineColor: \"core.outline\",\n outlineWidth: tokens.size.stroke.sm,\n outlineStyle: \"solid\",\n backgroundColor: \"core.surface\",\n\n _hover: {\n outlineColor: \"core.outline.hover\",\n outlineWidth: tokens.size.stroke.md,\n outlineStyle: \"solid\",\n _active: {\n backgroundColor: \"core.surface.active\",\n outlineWidth: tokens.size.stroke.sm,\n },\n },\n },\n accent: {\n boxShadow: \"0px 1px 3px 0px var(--shadow-color)\",\n shadowColor: \"surface.disabled\",\n background: \"alert.success.surface\",\n _hover: {\n background: \"alert.success.surface.hover\",\n\n boxShadow: \"0px 2px 6px 0px var(--shadow-color)\",\n _active: {\n background: \"alert.success.surface.active\",\n boxShadow: \"none\",\n },\n },\n },\n },\n },\n defaultVariants: {\n variant: \"core\",\n },\n});\n","/** This file works as a proxy for all Chakra UI exports */\nexport type { PortalProps, UseDisclosureProps } from \"@chakra-ui/react\";\nexport {\n ClientOnly,\n createListCollection,\n defineRecipe,\n defineStyle,\n For,\n FormatByte,\n FormatNumber,\n LocaleProvider,\n Portal,\n Show,\n useBreakpointValue,\n useCheckbox,\n useClipboard,\n useControllableProp,\n useDisclosure,\n useMediaQuery,\n useToken,\n VisuallyHidden,\n} from \"@chakra-ui/react\";\nexport { useIsClient, useMap, useOnClickOutside } from \"usehooks-ts\";\n","/**\n * Makes a slug-version of any string.\n *\n * By default, the maximum length of the slug is 50 characters. You can override this with the `maxLength` parameter.\n *\n * ```tsx\n * slugify(\"Hello, world!\"); // hello-world\n * slugify(\"Hello, world!\", 6); // hello-\n **/\nexport function slugify(text: string | string[], maxLength = 50): string {\n if (!text) {\n return text;\n }\n if (Array.isArray(text)) {\n text = text.join(\" \");\n }\n if (maxLength < 1) {\n throw new Error(\"The maxLength parameter must be a positive number\");\n }\n return (\n text\n .normalize(\"NFD\") // Normalize to NFD Unicode form\n .replaceAll(/[\\u0300-\\u036F]/g, \"\") // Remove diacritics\n .replaceAll(/[\\u00C6\\u00E6]/g, \"ae\") // Replace Æ, æ\n .replaceAll(/[\\u00D8\\u00F8]/g, \"oe\") // Replace Ø, ø\n .replaceAll(/[\\u00C5\\u00E5]/g, \"aa\") // Replace Å, å\n // Extend the replacement rules as needed\n .toLowerCase()\n .replaceAll(/\\s+/g, \"-\") // Replace spaces with -\n .replaceAll(/[^\\w-]+/g, \"\") // Remove all non-word chars\n .replaceAll(/--+/g, \"-\") // Replace multiple - with single -\n .replace(/^-+/, \"\") // Trim - from start of text\n .replace(/-+$/, \"\")\n .slice(0, Math.max(0, maxLength))\n );\n}\n","\"use client\";\nimport {\n RadioCard as ChakraRadioCard,\n RecipeVariantProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef } from \"react\";\n\nimport { radioCardSlotRecipe } from \"../theme/slot-recipes/radio-card\";\n\n/**\n * Radio cards are used to present a set of options where only one option can be selected.\n *\n * @example\n * ```tsx\n * <RadioCardGroup defaultValue=\"economy\">\n * <RadioCardLabel>Choose your class</RadioCardLabel>\n * <Stack direction=\"row\">\n * <RadioCard value=\"economy\" label=\"Economy\" />\n * <RadioCard value=\"business\" label=\"Business\" />\n * <RadioCard value=\"first-class\" label=\"First Class\" />\n * </Stack>\n * </RadioCardGroup>\n * ```\n *\n *\n * @see Docs https://spor.vy.no/components/radiocard\n */\n\ntype RadioCardVariantProps = RecipeVariantProps<typeof radioCardSlotRecipe>;\n\ntype RadioCardItemProps = Exclude<\n ChakraRadioCard.ItemProps,\n \"colorPalette\" | \"indicator\" | \"variant\" | \"size\" | \"addon\"\n> &\n RadioCardVariantProps & {\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n ariaLabel?: string;\n };\n\nexport const RadioCard = forwardRef<HTMLInputElement, RadioCardItemProps>(\n (props, ref) => {\n const { inputProps, children, value, ariaLabel } = props;\n\n return (\n <ChakraRadioCard.Item {...props}>\n <ChakraRadioCard.ItemHiddenInput\n aria-label={ariaLabel ?? value}\n ref={ref}\n {...inputProps}\n />\n\n <ChakraRadioCard.ItemControl>{children}</ChakraRadioCard.ItemControl>\n </ChakraRadioCard.Item>\n );\n },\n);\nRadioCard.displayName = \"RadioCard\";\n\ntype RadioCardRootProps = RadioCardVariantProps &\n Exclude<ChakraRadioCard.RootProps, \"variant\"> & {\n children: React.ReactNode;\n gap?: string | number;\n direction?: \"row\" | \"column\";\n display?: string;\n };\n\nexport const RadioCardGroup = forwardRef<HTMLDivElement, RadioCardRootProps>(\n (props, ref) => {\n const {\n children,\n variant,\n gap = 2,\n direction = \"column\",\n display = \"flex\",\n ...rest\n } = props;\n const recipe = useSlotRecipe({ key: \"radio-card\" });\n const styles = recipe({ variant });\n\n return (\n <ChakraRadioCard.Root\n ref={ref}\n variant={variant}\n css={styles}\n display={display}\n gap={gap}\n flexDirection={direction}\n {...rest}\n >\n {children}\n </ChakraRadioCard.Root>\n );\n },\n);\nRadioCardGroup.displayName = \"RadioCardGroup\";\n\nexport const RadioCardLabel = ChakraRadioCard.Label;\n","\"use client\";\n\nimport {\n RecipeVariantProps,\n Separator as ChakraSeparator,\n SeparatorProps as ChakraSeparatorProps,\n useRecipe,\n} from \"@chakra-ui/react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { separatorRecipe } from \"../theme/recipes/separator\";\n\ntype SeparatorVariantProps = RecipeVariantProps<typeof separatorRecipe>;\n\ntype SeparatorProps = Exclude<ChakraSeparatorProps, \"size\" | \"variant\"> &\n PropsWithChildren<SeparatorVariantProps> & {\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"solid\" | \"dashed\";\n };\n\nexport const Separator = forwardRef<HTMLDivElement, SeparatorProps>(\n (props, ref) => {\n const {\n size = \"md\",\n variant = \"solid\",\n orientation = \"horizontal\",\n } = props;\n\n const recipe = useRecipe({ recipe: separatorRecipe });\n const styles = recipe({ size, variant, orientation });\n return <ChakraSeparator css={styles} {...props} ref={ref} />;\n },\n);\nSeparator.displayName = \"Separator\";\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const separatorRecipe = defineRecipe({\n className: \"spor-separator\",\n base: {\n borderColor: \"outline.disabled\",\n display: \"block\",\n borderRadius: \"xl\",\n },\n variants: {\n variant: {\n solid: {\n borderStyle: \"solid\",\n },\n dashed: {\n width: \"100%\",\n borderWidth: \"0px\",\n },\n },\n size: {\n sm: {\n borderBottomWidth: \"1px\",\n height: \"1px\",\n },\n md: {\n borderBottomWidth: \"2px\",\n height: \"2px\",\n },\n lg: {\n borderBottomWidth: \"3px\",\n height: \"3px\",\n },\n },\n orientation: {\n horizontal: {\n width: \"100%\",\n },\n vertical: {\n height: \"100%\",\n borderLeftWidth: \"1px\",\n },\n },\n },\n compoundVariants: [\n {\n variant: \"dashed\",\n size: \"sm\",\n css: {\n background:\n \"linear-gradient(to left, var(--spor-colors-outline-disabled), var(--spor-colors-outline-disabled) 1px, transparent 1px, transparent 4px)\",\n backgroundSize: \"4px 1px\",\n backgroundRepeat: \"repeat-x\",\n },\n },\n {\n variant: \"dashed\",\n size: \"md\",\n css: {\n background:\n \"linear-gradient(to left, var(--spor-colors-outline-disabled), var(--spor-colors-outline-disabled) 3px, transparent 3px, transparent 6px)\",\n backgroundSize: \"9px 2px\",\n backgroundRepeat: \"repeat-x\",\n },\n },\n {\n variant: \"dashed\",\n size: \"lg\",\n css: {\n background:\n \"linear-gradient(to left, var(--spor-colors-outline-disabled), var(--spor-colors-outline-disabled) 3px, transparent 3px, transparent 9px)\",\n backgroundSize: \"9px 3px\",\n backgroundRepeat: \"repeat-x\",\n },\n },\n {\n variant: \"dashed\",\n orientation: \"vertical\",\n css: {\n background: \"0\",\n width: \"0%\",\n height: \"100%\",\n },\n },\n ],\n});\n","\"use client\";\nimport { BoxProps, chakra, RecipeVariantProps } from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nimport { staticCardRecipe } from \"../theme/recipes/static-card\";\n\n/**\n * `StaticCard` is a component that renders a static card.\n *\n * The `StaticCard` component can be used to create a card that does not respond to user interactions.\n * It can be rendered as any HTML element by specifying the `as` prop.\n *\n * The `colorPalette` prop can be used to control the color palette of the card. It defaults to \"white\".\n *\n * Example usage:\n *\n * ```tsx\n * <StaticCard>\n * Content\n * </StaticCard>\n * ```\n *\n * To render the card as a different HTML element, specify the `as` prop:\n *\n * ```tsx\n * <StaticCard as=\"section\">\n * This is now a <section /> element\n * </StaticCard>\n * ```\n *\n * To change the color palette of the card, specify the `colorPalette` prop:\n *\n * ```tsx\n * <StaticCard colorPalette=\"orange\">\n * An orange card\n * </StaticCard>\n * ```\n *\n * For a card with click functionality, use the `PressableCard` component.\n *\n * @see PressableCard\n */\n\nconst StyledCardBox = chakra(\"div\", staticCardRecipe);\n\nexport type StaticCardProps = RecipeVariantProps<typeof staticCardRecipe> &\n BoxProps;\n\nexport const StaticCard = forwardRef<HTMLDivElement, StaticCardProps>(\n (props, ref) => {\n return <StyledCardBox {...props} ref={ref}></StyledCardBox>;\n },\n);\nStaticCard.displayName = \"StaticCard\";\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const staticCardRecipe = defineRecipe({\n base: {\n borderRadius: \"md\",\n },\n variants: {\n colorPalette: {\n white: {\n backgroundColor: \"surface.color.neutral\",\n color: \"text\",\n },\n grey: {\n backgroundColor: \"surface.color.grey\",\n },\n yellow: {\n backgroundColor: \"surface.color.cream\",\n },\n darkYellow: {\n backgroundColor: \"surface.color.yellow\",\n },\n red: {\n backgroundColor: \"surface.color.red\",\n },\n green: {\n backgroundColor: \"surface.color.green\",\n },\n blue: {\n backgroundColor: \"surface.color.blue\",\n },\n orange: {\n backgroundColor: \"surface.color.orange\",\n },\n },\n },\n defaultVariants: {\n colorPalette: \"white\",\n },\n});\n","export * from \"./PressableCard\";\nexport * from \"./RadioCard\";\nexport * from \"./Separator\";\nexport * from \"./StaticCard\";\nexport type {\n BoxProps,\n CenterProps,\n ContainerProps,\n FlexProps,\n GridItemProps,\n GridProps,\n SimpleGridProps,\n SpacerProps,\n} from \"@chakra-ui/react\";\nexport {\n Box,\n Center,\n Container,\n Flex,\n Grid,\n GridItem,\n HStack,\n SimpleGrid,\n Spacer,\n Span,\n Stack,\n VStack,\n} from \"@chakra-ui/react\";\n","\"use client\";\nimport { Box, RecipeVariantProps, useSlotRecipe } from \"@chakra-ui/react\";\nimport { PropsWithChildren } from \"react\";\n\nimport { infoTagSlotRecipe } from \"../theme/slot-recipes/info-tag\";\nimport { LineIcon } from \"./LineIcon\";\nimport type { TagProps } from \"./types\";\n\ntype InfoTagVariantProps = RecipeVariantProps<typeof infoTagSlotRecipe>;\n\nexport type InfoTagProps = TagProps & PropsWithChildren<InfoTagVariantProps>;\n\n/**\n * An info tag component.\n *\n * Shows a line icon, a title and an optional description.\n *\n * ```tsx\n * <InfoTag variant=\"subway\" title=\"3\" description=\"Ringen\" />\n * ```\n * They support three different sizes –`sm`, `md` and `lg`.\n *\n * ```tsx\n * <InfoTag\n * variant=\"subway\"\n * size=\"lg\"\n * title=\"3\"\n * description=\"Ringen\"\n * />\n * ```\n *\n * If required, you can also override the colors and icons in these line tags:\n *\n * ```tsx\n * <InfoTag\n * variant=\"custom\"\n * customIconVariant=\"ferry\"\n * foregroundColor=\"#b4da55\"\n * backgroundColor=\"#c0ffee\"\n * />\n * ```\n *\n * @see https://spor.vy.no/components/line-tags\n */\nexport const InfoTag = ({\n variant,\n size = \"md\",\n title,\n description,\n ...customProps\n}: InfoTagProps) => {\n const recipe = useSlotRecipe({ key: \"infoTag\" });\n\n const styles = recipe({\n size,\n ...customProps,\n });\n\n return (\n <Box css={styles.container}>\n <LineIcon\n variant={variant}\n size={size}\n aria-label={title}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n {...(customProps as any)} // TODO: Fix this\n />\n <Box css={styles.textContainer}>\n {title && (\n <Box as=\"span\" css={styles.title}>\n {title}\n </Box>\n )}\n {title && description && \" \"}\n {description && (\n <Box as=\"span\" css={styles.description}>\n {description}\n </Box>\n )}\n </Box>\n </Box>\n );\n};\n","\"use client\";\nimport {\n Box,\n BoxProps,\n RecipeVariantProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren } from \"react\";\n\nimport { lineIconSlotRecipe } from \"../theme/slot-recipes/line-icon\";\nimport { getCorrectIcon } from \"./icons\";\nimport { CustomVariantProps, TagProps } from \"./types\";\n\ntype LineIconVariantProps = RecipeVariantProps<typeof lineIconSlotRecipe>;\n\ntype DefaultVariants = Exclude<TagProps[\"variant\"], \"custom\">;\n\ntype DefaultVariantProps = {\n variant: DefaultVariants;\n};\n\ntype VariantProps = DefaultVariantProps | CustomVariantProps;\n\nexport type LineIconProps = Exclude<BoxProps, \"variant\"> &\n VariantProps &\n PropsWithChildren<LineIconVariantProps> & {\n size?: TagProps[\"size\"];\n foregroundColor?: string;\n backgroundColor?: string;\n disabled?: boolean;\n target?: string;\n label: string;\n };\n\n/**\n * A line icon component.\n *\n * Shows a line icon with the correct color scheme.\n *\n * ```tsx\n * <LineIcon variant=\"subway\" />\n * ```\n *\n * They support three different sizes - `sm`, `md` and `lg`.\n *\n * ```tsx\n * <LineIcon variant=\"subway\" size=\"lg\" />\n * ```\n *\n * If you require some one-off colors, but still want to use the line tag component,\n * you can do so like this:\n *\n * ```tsx\n * <LineIcon\n * variant=\"custom\"\n * customIconVariant=\"ferry\"\n * foregroundColor=\"#b4da55\"\n * backgroundColor=\"#c0ffee\"\n * />\n * ```\n *\n * @see https://spor.vy.no/components/line-tags\n */\n\nexport const LineIcon = forwardRef<HTMLDivElement, LineIconProps>(\n function LineIcon(\n {\n variant,\n size = \"md\",\n foregroundColor,\n\n disabled,\n style,\n target = \"lineIcon\",\n label,\n ...rest\n },\n ref,\n ) {\n const recipe = useSlotRecipe({ key: \"lineIcon\" });\n const styles = recipe({ variant, size, ...rest });\n\n const targetPadding = () => {\n return target === \"travelTag\" ? 0.5 : 1;\n };\n\n const borderContainer = () => {\n return variant === \"walk\" && target === \"travelTag\" ? 0 : 0.5;\n };\n\n const Icon: React.ElementType = getCorrectIcon({\n variant:\n variant === \"custom\" && \"customIconVariant\" in rest\n ? rest.customIconVariant\n : // eslint-disable-next-line unicorn/no-nested-ternary\n variant === \"custom\" //eslint rules and prettier conflict\n ? \"local-train\"\n : variant,\n size,\n });\n if (!Icon) {\n return null;\n }\n\n if (foregroundColor) {\n styles.iconContainer.backgroundColor = disabled\n ? \"surface.disabled\"\n : foregroundColor;\n }\n\n return (\n <Box\n css={{ ...styles.iconContainer, ...style }}\n padding={targetPadding()}\n borderWidth={borderContainer()}\n borderColor={variant === \"walk\" ? \"core.outline\" : \"transparent\"}\n aria-label={label}\n ref={ref}\n >\n <Icon css={styles.icon} />\n </Box>\n );\n },\n);\n","import { Box } from \"@chakra-ui/react\";\nimport {\n AltTransportFill18Icon,\n AltTransportFill24Icon,\n AltTransportFill30Icon,\n BusFill18Icon,\n BusFill24Icon,\n BusFill30Icon,\n ExpressBusFill18Icon,\n ExpressBusFill24Icon,\n ExpressBusFill30Icon,\n FerryFill18Icon,\n FerryFill24Icon,\n FerryFill30Icon,\n SubwayFill18Icon,\n SubwayFill24Icon,\n SubwayFill30Icon,\n TrainFill18Icon,\n TrainFill24Icon,\n TrainFill30Icon,\n TramFill18Icon,\n TramFill24Icon,\n TramFill30Icon,\n WalkFill18Icon,\n WalkFill24Icon,\n WalkFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\n\nimport type { Size, Variant } from \"./types\";\n\nconst icons: Record<Variant, Record<Size, React.ComponentType>> = {\n \"local-train\": {\n sm: TrainFill18Icon,\n md: TrainFill24Icon,\n lg: TrainFill30Icon,\n },\n \"region-train\": {\n sm: TrainFill18Icon,\n md: TrainFill24Icon,\n lg: TrainFill30Icon,\n },\n \"region-express-train\": {\n sm: TrainFill18Icon,\n md: TrainFill24Icon,\n lg: TrainFill30Icon,\n },\n \"long-distance-train\": {\n sm: TrainFill18Icon,\n md: TrainFill24Icon,\n lg: TrainFill30Icon,\n },\n \"airport-express-train\": {\n sm: TrainFill18Icon,\n md: TrainFill24Icon,\n lg: TrainFill30Icon,\n },\n \"vy-bus\": {\n sm: ExpressBusFill18Icon,\n md: ExpressBusFill24Icon,\n lg: ExpressBusFill30Icon,\n },\n \"local-bus\": { sm: BusFill18Icon, md: BusFill24Icon, lg: BusFill30Icon },\n ferry: { sm: FerryFill18Icon, md: FerryFill24Icon, lg: FerryFill30Icon },\n subway: { sm: SubwayFill18Icon, md: SubwayFill24Icon, lg: SubwayFill30Icon },\n tram: { sm: TramFill18Icon, md: TramFill24Icon, lg: TramFill30Icon },\n \"alt-transport\": {\n sm: AltTransportFill18Icon,\n md: AltTransportFill24Icon,\n lg: AltTransportFill30Icon,\n },\n walk: { sm: WalkFill18Icon, md: WalkFill24Icon, lg: WalkFill30Icon },\n};\n\ntype GetCorrectIconArgs = {\n variant: Variant;\n size: Size;\n};\nexport const getCorrectIcon = ({ variant, size }: GetCorrectIconArgs) => {\n return icons[variant]?.[size] ?? Box;\n};\n","\"use client\";\nimport {\n Box,\n BoxProps,\n RecipeVariantProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport {\n ErrorFill18Icon,\n ErrorFill24Icon,\n InformationFill18Icon,\n InformationFill24Icon,\n WarningFill18Icon,\n WarningFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { travelTagSlotRecipe } from \"../theme/slot-recipes/travel-tag\";\nimport { LineIcon } from \"./LineIcon\";\nimport type { TagProps } from \"./types\";\n\ntype TravelTagVariantProps = RecipeVariantProps<typeof travelTagSlotRecipe>;\n\ntype DeviationLevels = \"critical\" | \"major\" | \"minor\" | \"info\" | \"none\";\n\nexport type TravelTagProps = TagProps &\n BoxProps &\n PropsWithChildren<TravelTagVariantProps> & {\n deviationLevel?: DeviationLevels;\n disabled?: boolean;\n foregroundColor?: string;\n /**\n * Needs to be defined if variant is custom\n */\n backgroundColor?: string;\n /**\n * Define a custom icon variant\n */\n customIconVariant?: string;\n };\n\n/**\n * A travel tag component.\n *\n * Shows a line icon, a title and an optional description.\n *\n * ```tsx\n * <TravelTag variant=\"subway\" title=\"3\" description=\"Ringen\" />\n * ```\n *\n * They support three different sizes - `sm`, `md` and `lg`.\n *\n * You can also render them with a deviation level to indicate an extra focus:\n *\n * You can add a \"disabled\" prop to the tag to make it look disabled (grey)\n *\n * ```tsx\n * <TravelTag\n * variant=\"subway\"\n * title=\"3\"\n * description=\"Ringen\"\n * size=\"lg\"\n * deviationLevel=\"critical\"\n * />\n * ```\n *\n * Travel tags can be clickable by passing an `as=\"button\"` prop. They can also be disabled.\n *\n * ```tsx\n * <TravelTag\n * as=\"button\"\n * onClick={handleClick}\n * variant=\"subway\"\n * title=\"3\"\n * description=\"Ringen\"\n * />\n * ```\n *\n * If required, you can also override the colors and icons in these travel tags:\n *\n * ```tsx\n * <TravelTag\n * variant=\"custom\"\n * customIconVariant=\"ferry\"\n * foregroundColor=\"#b4da55\"\n * backgroundColor=\"#c0ffee\"\n * title=\"3\"\n * description=\"Ringen\"\n * />\n * ```\n *\n * @see https://spor.vy.no/components/line-tags\n */\n\nexport const TravelTag = forwardRef<HTMLDivElement, TravelTagProps>(\n function TravelTag(\n {\n variant,\n size = \"md\",\n deviationLevel = \"none\",\n title,\n description,\n disabled,\n foregroundColor,\n backgroundColor,\n customIconVariant,\n ...rest\n },\n ref,\n ) {\n const recipie = useSlotRecipe({ key: \"travelTag\" });\n const styles = recipie({\n variant,\n size,\n deviationLevel,\n });\n\n const DeviationLevelIcon = getDeviationLevelIcon({ deviationLevel, size });\n\n return (\n <Box\n css={styles.container}\n aria-disabled={disabled}\n ref={ref}\n {...rest}\n backgroundColor={disabled ? \"surface.disabled\" : backgroundColor}\n >\n <LineIcon\n variant={variant}\n size={size}\n foregroundColor={foregroundColor}\n backgroundColor={backgroundColor}\n customIconVariant={customIconVariant}\n disabled={disabled}\n target=\"travelTag\"\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n {...(rest as any)} //Find a way to not use any here\n />\n <Box css={styles.textContainer}>\n {title && (\n <Box as=\"span\" css={styles.title}>\n {title}\n </Box>\n )}\n {title && description && \" \"}\n {description && (\n <Box as=\"span\" css={styles.description}>\n {description}\n </Box>\n )}\n </Box>\n {DeviationLevelIcon && (\n <DeviationLevelIcon css={styles.deviationIcon} />\n )}\n </Box>\n );\n },\n);\n\nconst getDeviationLevelIcon = ({\n deviationLevel,\n size,\n}: Pick<TravelTagProps, \"deviationLevel\" | \"size\">) => {\n switch (deviationLevel) {\n case \"critical\": {\n return size === \"lg\" ? ErrorFill24Icon : ErrorFill18Icon;\n }\n case \"major\":\n case \"minor\": {\n return size === \"lg\" ? WarningFill24Icon : WarningFill18Icon;\n }\n case \"info\": {\n return size === \"lg\" ? InformationFill24Icon : InformationFill18Icon;\n }\n default: {\n return null;\n }\n }\n};\n","\"use client\";\nimport {\n Link as ChakraLink,\n LinkProps as ChakraLinkProps,\n VisuallyHidden,\n} from \"@chakra-ui/react\";\nimport {\n LinkOutOutline18Icon,\n LinkOutOutline24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React, { cloneElement, forwardRef, isValidElement } from \"react\";\n\nimport { createTexts, useTranslation } from \"@/i18n\";\n\nexport type LinkProps = ChakraLinkProps & {\n /** Defaults to primary */\n variant?: \"primary\" | \"secondary\";\n /** Define if the link shows an icon on the right that indicate it is an external link */\n external?: boolean;\n};\n\n/** Link to different sites or parts of site\n *\n * You can specify the `variant` prop to get different link designs.\n * * ```tsx\n * <TextLink href=\"/url-to-page\" variant=\"primary\" size=\"md\">\n * text that is linked\n * </TextLink>\n * ```\n */\nconst ExternalIcon = ({\n label,\n size,\n}: {\n label: string;\n size: LinkProps[\"size\"];\n}) => (\n <>\n {size === \"lg\" || size === \"md\" ? (\n <LinkOutOutline24Icon aria-hidden />\n ) : (\n <LinkOutOutline18Icon aria-hidden />\n )}\n {/* Visually hidden text for screen readers */}\n <VisuallyHidden>{label}</VisuallyHidden>\n </>\n);\n\nexport const TextLink = forwardRef<HTMLAnchorElement, LinkProps>(\n ({ children, external, href, ...props }, ref) => {\n const { t } = useTranslation();\n\n const isExternal =\n external ??\n Boolean(href?.startsWith(\"http://\") || href?.startsWith(\"https://\"));\n\n const externalLabel = t ? t(texts.externalLink) : texts.externalLink.en;\n\n // If asChild is true, we need to clone the children and add the external icon\n if (props.asChild && isValidElement(children)) {\n return (\n <ChakraLink href={href} {...props} ref={ref}>\n {cloneElement(children as React.ReactElement, {\n ...children.props,\n children: (\n <>\n {children.props.children}\n {isExternal && (\n <ExternalIcon label={externalLabel} size={props.size} />\n )}\n </>\n ),\n })}\n </ChakraLink>\n );\n }\n\n return (\n <ChakraLink href={href} {...props} ref={ref}>\n {children}\n {isExternal && <ExternalIcon label={externalLabel} size={props.size} />}\n </ChakraLink>\n );\n },\n);\nTextLink.displayName = \"TextLink\";\n\nconst texts = createTexts({\n externalLink: {\n nb: \"Ekstern lenke\",\n nn: \"Ekstern lenke\",\n sv: \"Extern länk\",\n en: \"External link\",\n },\n});\n","import { List as ChakraList } from \"@chakra-ui/react\";\n\n/**\n * Use this component to display a list of items.\n *\n * props:\n * - \"chidren\" (default: none) required: The items in the list.\n * - \"as\" (default: \"ul\") not required: Rendrer as an ordered or unordered list.\n * - \"ul\": Unordered list\n * - \"ol\": Ordered list\n * - \"variant\" (default: \"marker\") not required: The style of the list.\n * - \"marker\": A list with markers\n * - \"plain\": A plain list without markers\n *\n * ```tsx\n * <List>\n * <ListItem>Item 1</ListItem>\n * <ListItem>Item 2</ListItem>\n * </List>\n */\n\nexport const List = ChakraList.Root; // <ul> or <ol> HTMLElement\nexport const ListItem = ChakraList.Item; // <li> HTMLElement\nexport const ListIndicator = ChakraList.Indicator;\n","import { chakra } from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nexport type CargonetLogoProps = {\n /** The color of the logo\n *\n * Use `\"light\"` when the logo is used on a light background.\n * Use `\"dark\"` when the logo is used on a dark background.\n */\n colorPalette: \"light\" | \"dark\";\n};\n\nexport const CargonetLogo = forwardRef<SVGSVGElement, CargonetLogoProps>(\n (props, ref) => {\n const { colorPalette } = props;\n // These colors should not be tokenized, as they are logo specific.\n const mainColor = \"#DF8200\";\n const accentColor = colorPalette === \"light\" ? \"#383E42\" : \"#ffffff\";\n\n return (\n <chakra.svg viewBox=\"0 0 251 52\" ref={ref} {...props}>\n <title>Cargonet logo</title>\n <path\n d=\"M87.9222 14.602L84.3862 18.7417C81.1953 15.9821 79.1685 15.2914 76.5379 15.2914C70.933 15.2914 67.4398 19.5609 67.4398 26.029C67.4398 32.5834 71.0186 36.8523 76.4089 36.8523C79.6855 36.8523 81.6694 35.6447 84.9038 32.9285L88.3969 36.982C84.645 40.5608 81.1524 42.1134 76.4951 42.1134C66.9651 42.1134 61.2733 35.214 61.2733 25.9856C61.2733 16.9732 66.7492 10.0309 76.5379 10.0309C81.2387 10.0309 84.3 11.4533 87.9222 14.602Z\"\n fill={accentColor}\n />\n <path\n d=\"M106.461 41.3802C106.159 40.5604 105.986 39.5259 105.857 38.4046C104.693 40.6038 102.408 42.1131 98.6988 42.1131C94.4299 42.1131 90.8511 40.216 90.8511 35.774C90.8511 30.9013 95.1628 29.1333 100.812 28.1417L105.598 27.3225V26.7187C105.598 24.3903 103.917 23.1399 101.416 23.1399C98.4829 23.1399 96.5858 24.476 94.4734 26.6759L91.0231 23.5712C93.9124 20.2934 97.1468 18.6117 101.373 18.6117C107.754 18.6117 110.946 21.846 110.946 26.5028V35.9037C110.946 38.448 111.118 40.216 111.506 41.3802H106.461ZM105.598 32.6265V31.1607L101.373 31.9364C98.0093 32.5836 96.2414 33.4022 96.2414 35.3861C96.2414 36.9388 97.5346 37.9299 99.8202 37.9299C102.666 37.9299 105.598 36.4647 105.598 32.6265Z\"\n fill={accentColor}\n />\n <path\n d=\"M130.65 19.6469L129.572 24.5625C128.537 24.2614 127.373 24.0455 126.295 24.0455C123.233 24.0455 121.422 26.4601 121.422 30.5565V41.3803H115.816V25.8563C115.816 22.8813 115.644 20.8111 115.385 19.3448H120.603C120.818 20.1645 120.991 21.4578 121.034 23.0967C122.112 20.5524 123.88 18.9569 126.812 18.9569C128.192 18.9569 129.529 19.2157 130.65 19.6469Z\"\n fill={accentColor}\n />\n <path\n d=\"M152.813 19.3447V40.6896C152.813 46.9859 148.156 50.1768 142.075 50.1768C138.669 50.1768 135.219 49.3142 132.028 47.4172L134.745 43.3202C137.289 44.8729 139.532 45.692 141.99 45.692C145.008 45.692 147.336 44.269 147.336 40.3018V37.4993C146.043 39.5255 143.93 40.8199 140.911 40.8199C135.349 40.8199 131.209 36.3779 131.209 29.7373C131.209 23.0966 135.349 18.6118 140.911 18.6118C144.188 18.6118 146.345 20.0782 147.639 22.3631V19.3447H152.813ZM147.509 29.7373C147.509 25.9425 145.267 23.3988 142.162 23.3988C138.971 23.3988 136.858 25.9425 136.858 29.7373C136.858 33.5314 138.971 36.0763 142.162 36.0763C145.267 36.0763 147.509 33.5314 147.509 29.7373Z\"\n fill={accentColor}\n />\n <path\n d=\"M178.72 30.341C178.72 37.3267 173.976 42.0702 167.292 42.0702C160.609 42.0702 155.866 37.3267 155.866 30.341C155.866 23.3553 160.609 18.6117 167.292 18.6117C173.976 18.6117 178.72 23.3553 178.72 30.341ZM161.557 30.341C161.557 34.6967 163.886 37.4992 167.292 37.4992C170.699 37.4992 173.028 34.6967 173.028 30.341C173.028 26.0721 170.699 23.1828 167.292 23.1828C163.886 23.1828 161.557 26.0721 161.557 30.341Z\"\n fill={accentColor}\n />\n <path\n d=\"M208.903 10.7638V41.38H202.478L194.673 28.9612C192.516 25.5115 190.403 22.1046 188.635 18.8274C188.851 22.4497 188.937 26.4598 188.937 30.8155V41.38H183.029V10.7638H189.585L197.82 23.9589C199.717 26.9773 201.616 29.9529 203.21 32.8851C203.081 29.6507 203.038 26.0719 203.038 21.8893V10.7638H208.903Z\"\n fill={mainColor}\n />\n <path\n d=\"M233.663 37.7578C230.386 41.035 227.324 42.0707 223.788 42.0707C216.672 42.0707 212.231 37.499 212.231 30.4705C212.231 23.6573 216.371 18.6116 223.313 18.6116C230.041 18.6116 233.619 22.8376 233.619 29.6079C233.619 30.2546 233.577 31.2897 233.534 31.6781H217.578C218.009 35.0844 220.08 37.499 223.917 37.499C226.505 37.499 228.144 36.5936 230.6 34.4378L233.663 37.7578ZM217.708 27.9262H228.359C228.144 24.8644 226.376 22.881 223.227 22.881C220.123 22.881 218.311 24.8644 217.708 27.9262Z\"\n fill={mainColor}\n />\n <path\n d=\"M250.41 41.0785C248.556 41.6817 246.789 41.8976 245.538 41.8976C240.88 41.8976 239.198 39.8709 239.198 35.7739V23.4415H235.275V19.3445H239.198V12.6182H244.805V19.3445H250.066V23.4415H244.805V34.8257C244.805 36.5937 245.624 37.0244 247.047 37.0244C247.651 37.0244 248.47 36.9387 249.721 36.6365L250.41 41.0785Z\"\n fill={mainColor}\n />\n <path\n d=\"M21.4911 10.2565H31.1579V0.589175H21.4911V10.2565Z\"\n fill={mainColor}\n />\n <path\n d=\"M41.3861 10.8855H31.7757V20.5528H41.3861V10.8855Z\"\n fill={mainColor}\n />\n <path\n d=\"M42.0022 10.2547H51.6126V0.587402H42.0022V10.2547Z\"\n fill={mainColor}\n />\n <path\n d=\"M21.477 30.7758H31.1431V21.1654H21.477V30.7758Z\"\n fill={mainColor}\n />\n <path\n d=\"M11.2124 20.5493H20.8791V10.8826H11.2124V20.5493Z\"\n fill={mainColor}\n />\n <path\n d=\"M0.910156 30.7911H10.5775V21.1801H0.910156V30.7911Z\"\n fill={mainColor}\n />\n <path\n d=\"M11.1948 41.0258H20.8615V31.4154H11.1948V41.0258Z\"\n fill={mainColor}\n />\n <path\n d=\"M31.7669 41.0581H41.4336V31.3908H31.7669V41.0581Z\"\n fill={mainColor}\n />\n <path\n d=\"M21.4776 51.2277H31.1443V41.656H21.4776V51.2277Z\"\n fill={mainColor}\n />\n <path\n d=\"M42.0615 51.2283H51.7282V41.6989H42.0615V51.2283Z\"\n fill={mainColor}\n />\n </chakra.svg>\n );\n },\n);\nCargonetLogo.displayName = \"CargonetLogo\";\n","import { chakra } from \"@chakra-ui/react\";\nimport { ComponentProps, forwardRef, useId } from \"react\";\n\nexport const SvgBox = chakra(\"svg\");\n\nconst fillRecipe = {\n base: {},\n variants: {\n fill: {\n main: {\n fill: {\n _light: \"#1d211c\",\n _dark: \"#ffffff\",\n },\n },\n accent: {\n fill: {\n _light: \"#138c6e\",\n _dark: \"#ffffff\",\n },\n },\n },\n },\n};\n\nconst Path = chakra(\"path\", fillRecipe);\n\nconst SVGGroup = chakra(\"g\", fillRecipe);\n\ntype VyLogoProps = ComponentProps<typeof SvgBox>;\n\nexport const VyLogo = forwardRef<SVGSVGElement, VyLogoProps>((props, ref) => {\n const id = useId();\n\n return (\n <SvgBox ref={ref} viewBox=\"0 0 107 54\" {...props}>\n <title>Vy logo</title>\n <Path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M79.97 33.44a.04.04 0 0 0 0-.08 5.76 5.76 0 0 1-2.32-.85c-1.56-1-2.79-2.9-3.83-6.07L68.14 7.16c-1.18-4.04-3.42-5.85-5.48-6.6a8.36 8.36 0 0 0-2.88-.52h-1.44a.04.04 0 0 0 0 .08c.57.09 1.18.24 1.8.5 1.92.8 3.92 2.63 5.06 6.54l5.61 19.07c1.06 3.3 2.31 5.27 3.92 6.3 1.01.64 2.17.9 3.5.9h1.74Z\"\n fill=\"main\"\n />\n <mask\n id={`${id}-a`}\n style={{ maskType: \"alpha\" }}\n maskUnits=\"userSpaceOnUse\"\n x=\"0\"\n y=\"0\"\n width=\"94\"\n height=\"54\"\n >\n <Path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0 .03h93.26v53.65H0V.03Z\"\n fill=\"main\"\n />\n </mask>\n <SVGGroup\n mask={`url(#${id}-a)`}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"main\"\n >\n <Path d=\"M84.57 33.44a.04.04 0 0 0 .01-.08c-2.34-.3-3.85-3.59-4.68-6.38-.88-2.93-4.04-13.63-5.92-19.82C72.08.94 66.2.05 63.54.04a.04.04 0 0 0-.01.08c2.49.34 6.02 1.85 7.55 7.04 1.34 4.55 5.6 19.03 5.76 19.51 1.02 3.03 2.22 4.85 3.73 5.83a6.3 6.3 0 0 0 3.54.94h.46ZM23.28 53.68h-.72c-2.12 0-4.68-1.08-6.09-6.04L3.8 4.37C3.04 1.77 1.93.47.03.15A.04.04 0 0 1 .04.07h1.9c2.54 0 3.92 1.27 4.8 4.3 0 0 11.72 39.78 12.79 43.54.78 2.78 1.7 4.67 3.13 5.43.23.13.42.2.62.26a.04.04 0 0 1 0 .08ZM18.99 5.99C17.77 1.79 15.87.04 12.37.04h-1.71a.04.04 0 0 0 0 .08c2.73.39 4.32 2.19 5.39 5.87 0 0 10.49 35.72 11.85 40.4l1.44-4.87L18.99 6Z\" />\n <Path d=\"M24.26 53.68h1.24c1.57 0 2.69-.41 3.52-1.1 1.37-1.1 1.99-2.93 2.56-4.86.09-.29 11.2-37.95 11.59-39.42 1.32-4.97 4.27-7.13 7.43-7.9a12.2 12.2 0 0 1 1.58-.28.04.04 0 0 0 0-.08h-1.4c-4.15 0-8.8 1.65-10.56 8.26-.63 2.38-11.5 39.13-11.58 39.42-.57 1.93-1.23 3.96-2.59 5.07-.56.45-1.06.7-1.8.81a.04.04 0 0 0 0 .08ZM81.3 27.76l6.53-21.78C88.89 2.3 90.49.5 93.23.11a.04.04 0 0 0-.01-.08H91.5c-3.5 0-5.4 1.76-6.62 5.95l-5.05 16.97s1.33 4.46 1.46 4.8Z\" />\n </SVGGroup>\n <Path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M98.49.07h-1.82c-2.98 0-4.6 1.49-5.63 5.06l-6.52 21.79a18.22 18.22 0 0 1-1.67 3.96c.57.78 1.17 1.26 1.76 1.38 1.13-.96 2.06-2.75 2.89-5.46l6.49-21.67c.9-3.1 2.23-4.63 4.5-4.98a.04.04 0 0 0 0-.08Z\"\n fill=\"accent\"\n />\n <Path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M85.25 34.53h-2.93L78.58 46.9c-1.82 6.1 1.05 6.73 2.15 6.73h2.31a.04.04 0 0 0 .01-.09c-1.25-.3-2.96-1.6-1.45-6.64l3.65-12.37ZM102.35.11c.02 0 .03-.02.03-.04a.04.04 0 0 0-.04-.04h-.4c-2.54 0-3.92 1.27-4.8 4.3 0 0-5 16.82-6.57 22.03-1.57 5.2-2.65 6.6-4.78 6.97l-.11.03a.04.04 0 0 0 0 .08h1.45c3.72 0 5.1-2.48 6.41-6.84l7.5-25.07c.19-.6.7-1.23 1.31-1.42Z\"\n fill=\"main\"\n />\n <mask\n id={`${id}-b`}\n style={{ maskType: \"alpha\" }}\n maskUnits=\"userSpaceOnUse\"\n x=\"29\"\n y=\"0\"\n width=\"78\"\n height=\"54\"\n >\n <Path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M29.55.04H106v53.64H29.55V.04Z\"\n fill=\"main\"\n />\n </mask>\n <SVGGroup mask={`url(#${id}-b)`} fillRule=\"evenodd\" clipRule=\"evenodd\">\n <Path\n d=\"m88.2 34.45-3.96 13.46c-1.54 5.18.9 5.72 1.83 5.72h2.26a.04.04 0 0 0 0-.09c-1.05-.27-2.44-1.4-1.18-5.63l4.43-15.02c-.7.71-1.88 1.37-3.38 1.56ZM93.71 53.63c.02 0 .04-.02.04-.05a.04.04 0 0 0-.03-.04c-.9-.25-2.02-1.24-.96-4.77 0 0 12.4-42.2 13.08-44.6a3.1 3.1 0 0 0-2.47-4.1c-.02 0-.06-.02-.07.01-.01.04.03.06.04.06.3.16.63.52.45 1.14L89.84 48.77c-1.32 4.4.76 4.86 1.55 4.86h2.32ZM74.1 33.44a.04.04 0 0 0 0-.08 5.77 5.77 0 0 1-2.3-.83c-1.64-1.04-2.9-3.06-3.98-6.5-.1-.29-5.37-18.25-5.55-18.87-1.12-3.8-2.91-5.63-4.68-6.46a7.06 7.06 0 0 0-3.04-.66H53a.04.04 0 0 0-.02.08c.3.05 4.32.17 6.35 7.04 2.03 6.86 4.46 15.07 5.28 17.97 1.77 6.26 4.07 8.3 7.75 8.3h1.73Z\"\n fill=\"main\"\n />\n <Path\n d=\"M55.43 2.4c-1.48 1.27-2.7 3.16-3.44 5.9-.07.29-11.08 37.74-11.32 38.55-.93 3.12-1.7 6.21-5.2 6.75a.04.04 0 0 0 0 .08h.7l.6-.01c3.56-.14 5.33-1.66 6.85-6.82L54.94 8.3c.44-1.44.96-3.08 1.7-4.52-.15-.25-.7-.96-1.2-1.38Z\"\n fill=\"main\"\n />\n <Path\n d=\"M53.78 1.44a4.64 4.64 0 0 0-4.17.93A10.79 10.79 0 0 0 46.19 8L34.53 47.72c-.58 1.93-1.2 3.75-2.56 4.87-.62.5-1.4.86-2.39 1.01a.04.04 0 0 0 0 .08h1.8c1.57 0 2.69-.41 3.53-1.1 1.36-1.1 1.98-2.93 2.56-4.86L49.05 8.3c.73-2.74 1.95-4.63 3.43-5.9.43-.36.88-.68 1.35-.95l-.05-.01Z\"\n fill=\"accent\"\n />\n </SVGGroup>\n <Path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M26.55 50.33a9.09 9.09 0 0 1-1.24-2.7c-.44-1.54-12.46-42.5-12.46-42.5C11.82 1.56 10.2.07 7.22.07H5.4a.04.04 0 0 0 0 .08C7.67.5 9 2.04 9.9 5.13l12.46 42.5c.65 2.28 1.53 3.74 2.5 4.65.7-.4 1.29-1.05 1.69-1.95Z\"\n fill=\"main\"\n />\n </SvgBox>\n );\n});\nVyLogo.displayName = \"VyLogo\";\n","import { ComponentProps, forwardRef, useId } from \"react\";\n\nimport { SvgBox } from \"./VyLogo\";\n\ntype VyLogoPrideProps = ComponentProps<typeof SvgBox>;\n\nexport const VyLogoPride = forwardRef<SVGSVGElement, VyLogoPrideProps>(\n (props, ref) => {\n // These colors should not be tokenized, as they are logo specific.\n\n const pinkColor = \"#ED6F99\";\n const purpleColor = \"#C06CF7\";\n const darkPurpleColor = \"#821889\";\n const greenColor = \"#56BDBF\";\n const darkGreenColor = \"#3E8C26\";\n const blueColor = \"#3A0692\";\n const redColor = \"#EA3323\";\n const orangeColor = \"#F09436\";\n const yellowColor = \"#FFFF54\";\n\n const id = useId();\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <SvgBox ref={ref} viewBox=\"0 0 107 54\" {...(props as any)}>\n {/* Find a way to not use any */}\n <title>Vy logo pride</title>\n <svg\n width=\"108\"\n height=\"55\"\n viewBox=\"0 0 108 55\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M81.4496 34.0577C81.4727 34.0577 81.4914 34.0389 81.4914 34.0158C81.4914 33.9951 81.4762 33.9779 81.4564 33.9747C80.5875 33.8486 79.8027 33.5738 79.0873 33.115C77.4968 32.0951 76.2499 30.1645 75.189 26.9334C75.0494 26.5085 69.7485 8.46796 69.4024 7.29056C68.1947 3.18059 65.9216 1.33839 63.8188 0.561417C62.7398 0.162674 61.7055 0.0441895 60.8829 0.0441895C60.4167 0.0441895 59.4168 0.0441895 59.4168 0.0441895C59.3937 0.0441895 59.375 0.0629034 59.375 0.0859014C59.375 0.106645 59.3902 0.123893 59.4101 0.127162C59.9962 0.211263 60.6246 0.368077 61.262 0.635935C63.2087 1.45371 65.24 3.30719 66.4107 7.29056C66.6722 8.18038 72.0104 26.3533 72.125 26.7112C73.2046 30.0866 74.4763 32.0839 76.1099 33.1244C77.1418 33.7817 78.318 34.0577 79.6817 34.0577H81.4496\"\n fill={pinkColor}\n />\n <mask\n id={`${id}-a-pride`}\n style={{ maskType: \"luminance\" }}\n maskUnits=\"userSpaceOnUse\"\n x=\"0\"\n y=\"0\"\n width=\"95\"\n height=\"55\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0.00585938 0.0339355H94.9827V54.6696H0.00585938V0.0339355Z\"\n fill=\"white\"\n />\n </mask>\n <g mask={`url(#${id}-a-pride)`}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M86.1392 34.0577C86.1622 34.0577 86.1809 34.0389 86.1809 34.0158C86.1809 33.9951 86.1658 33.9779 86.146 33.9747V33.9745C83.7657 33.6665 82.2265 30.3247 81.3764 27.4799C80.4843 24.4948 77.2629 13.5951 75.3455 7.29056C73.4194 0.957342 67.4267 0.0485861 64.7129 0.0441895H64.7137C64.6906 0.0441895 64.6719 0.0629034 64.6719 0.0859014C64.6719 0.106645 64.6869 0.123893 64.7068 0.127162L64.7067 0.127388C67.2413 0.468862 70.8417 2.00375 72.3953 7.29056C73.7591 11.9308 78.0927 26.6723 78.2592 27.1656C79.2998 30.2466 80.5197 32.1068 82.0639 33.1046C83.1032 33.776 84.2891 34.0577 85.6664 34.0577H86.1392\"\n fill={purpleColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M23.7089 54.6763C23.4058 54.6763 23.1352 54.6763 22.9803 54.6763C20.8144 54.6763 18.2099 53.5754 16.7766 48.5188L3.8641 4.45414C3.09965 1.80939 1.96226 0.481143 0.0347223 0.151506C0.014881 0.148237 0 0.131101 0 0.110245C0 0.0871344 0.018714 0.0684204 0.0418246 0.0684204H1.98402C4.56565 0.0684204 5.96987 1.36104 6.86386 4.45414C6.86386 4.45414 18.8019 44.9686 19.8869 48.7964C20.6896 51.628 21.628 53.5542 23.0795 54.3328C23.3142 54.4587 23.5119 54.5409 23.7154 54.5932C23.7352 54.5965 23.7506 54.6138 23.7506 54.6345C23.7506 54.6576 23.7319 54.6763 23.7089 54.6763Z\"\n fill={darkPurpleColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.3365 6.09794C18.1013 1.82472 16.1613 0.0390015 12.5947 0.0390015H10.8543C10.8312 0.0390015 10.8125 0.0577155 10.8125 0.0808261C10.8125 0.101569 10.8277 0.118818 10.8476 0.122087V0.121974C13.6341 0.517899 15.2582 2.35232 16.341 6.09794C16.341 6.09794 27.027 42.4871 28.4146 47.2512C28.7189 46.2219 29.2327 44.4828 29.8791 42.2935C28.6038 37.9117 19.3365 6.09794 19.3365 6.09794\"\n fill={greenColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M24.7059 54.6763H25.9753C27.5661 54.6763 28.7056 54.2553 29.5596 53.5597C30.9494 52.4272 31.5822 50.5663 32.1676 48.6028C32.2552 48.309 43.5646 9.95201 43.9629 8.45455C45.3098 3.39196 48.3208 1.18687 51.5334 0.404941C52.0668 0.275183 52.6055 0.184995 53.1431 0.127162H53.1439C53.1638 0.123893 53.1789 0.106645 53.1789 0.0859014C53.1789 0.0629034 53.1602 0.0441895 53.1371 0.0441895H51.7232C47.4872 0.0441895 42.7565 1.72507 40.9662 8.45455C40.3206 10.8814 29.2585 48.309 29.1709 48.6028C28.5854 50.5663 27.9202 52.6362 26.5303 53.7687C25.9647 54.2295 25.4469 54.4781 24.6995 54.5933H24.699C24.6792 54.5966 24.6641 54.614 24.6641 54.6346C24.6641 54.6577 24.6828 54.6764 24.7059 54.6764V54.6763\"\n fill={darkGreenColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M82.7992 28.2698L89.4539 6.09287C90.5365 2.34748 92.1604 0.513059 94.9467 0.117021H94.9471C94.9669 0.113752 94.9821 0.0965034 94.9821 0.0757602C94.9821 0.0526495 94.9635 0.0339355 94.9403 0.0339355H93.2001C89.6335 0.0339355 87.6935 1.81966 86.4583 6.09287L81.3125 23.3801C81.3125 23.3801 82.6735 27.9173 82.7992 28.2698\"\n fill={darkPurpleColor}\n />\n </g>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M100.313 0.0684204H98.4597C95.4268 0.0684204 93.7771 1.58696 92.7268 5.22074C92.7268 5.22074 86.1431 27.2276 86.0874 27.4145C85.6036 28.9698 84.9952 30.48 84.3828 31.4546C84.9626 32.2484 85.5745 32.7345 86.1805 32.8562C87.3236 31.8751 88.2719 30.0574 89.1204 27.2954C89.1653 27.1488 95.731 5.22074 95.731 5.22074C96.6408 2.0733 98.0002 0.512821 100.319 0.151506H100.32C100.34 0.148237 100.355 0.131101 100.355 0.110245C100.355 0.0871344 100.336 0.0684204 100.313 0.0684204\"\n fill={blueColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M86.829 35.1664H83.8473C82.4939 39.632 80.7038 45.5437 80.0385 47.7716C78.1846 53.98 81.1091 54.6188 82.2256 54.6188C82.3769 54.6188 83.722 54.6188 84.5809 54.6188C84.604 54.6187 84.6227 54.6001 84.6227 54.577C84.6227 54.5571 84.6088 54.5403 84.5902 54.5361H84.5899C83.3122 54.232 81.5755 52.9078 83.1092 47.7716C83.1092 47.7716 85.8127 38.6188 86.829 35.1664\"\n fill={blueColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M104.248 0.115556C104.265 0.110144 104.277 0.0943614 104.277 0.0757602C104.277 0.0526495 104.258 0.0339355 104.235 0.0339355H103.82C101.239 0.0339355 99.8344 1.32655 98.9403 4.41955C98.9403 4.41955 93.8509 21.5423 92.2501 26.8474C90.6493 32.1524 89.5515 33.5736 87.3782 33.9486L87.2635 33.9747C87.2436 33.978 87.2285 33.9951 87.2285 34.0158C87.2285 34.0389 87.2472 34.0577 87.2703 34.0577H88.7449C92.5299 34.0577 93.9393 31.5339 95.2711 27.0896C96.387 23.3664 102.914 1.55428 102.914 1.55428C103.1 0.938746 103.632 0.300666 104.248 0.11533V0.115556\"\n fill={greenColor}\n />\n <mask\n id={`${id}-b-pride`}\n style={{ maskType: \"luminance\" }}\n maskUnits=\"userSpaceOnUse\"\n x=\"30\"\n y=\"0\"\n width=\"78\"\n height=\"55\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M30.0938 0.0441895H107.967V54.6696H30.0938V0.0441895Z\"\n fill=\"white\"\n />\n </mask>\n <g mask={`url(#${id}-b-pride)`}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M89.8289 35.0891C88.7828 38.6493 85.8015 48.8015 85.8015 48.8015C84.2266 54.076 86.7112 54.6188 87.6599 54.6188H89.9623C89.9855 54.6188 90.0042 54.6001 90.0042 54.577C90.0042 54.5571 89.9903 54.5403 89.9717 54.5362V54.5363C88.8916 54.2553 87.4798 53.0991 88.7632 48.8015C88.7632 48.8015 92.0286 37.7282 93.2719 33.5031C92.561 34.2226 91.3615 34.8917 89.8289 35.0891\"\n fill={greenColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M95.4467 54.6188C95.4698 54.6188 95.4885 54.6001 95.4885 54.577C95.4885 54.557 95.4747 54.5403 95.4561 54.5362H95.4558C94.5434 54.2765 93.3986 53.2655 94.4728 49.6684C94.4728 49.6684 107.101 6.68958 107.804 4.25563C108.507 1.82169 106.809 0.298979 105.28 0.0692254C105.269 0.0676471 105.219 0.0537807 105.209 0.0862483C105.199 0.118716 105.241 0.138557 105.249 0.143179C105.553 0.303376 105.894 0.672244 105.708 1.30469C105.522 1.93713 91.499 49.6684 91.499 49.6684C90.1586 54.1569 92.273 54.6188 93.0802 54.6188H95.4467\"\n fill={darkGreenColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M75.4659 34.0577C75.4889 34.0577 75.5076 34.0389 75.5076 34.0158C75.5076 33.9951 75.4925 33.9778 75.4726 33.9746H75.4723C74.6146 33.8501 73.8387 33.5807 73.1306 33.1321C71.4607 32.0744 70.1687 30.0201 69.0737 26.521C68.9798 26.2215 63.6049 7.92165 63.4194 7.29056C62.2821 3.42105 60.4546 1.5616 58.6517 0.708874C57.557 0.191083 56.4715 0.0441895 55.5553 0.0441895C54.9539 0.0441895 54.4151 0.0441895 53.9784 0.0441895H53.9715C53.9484 0.0441895 53.9297 0.0629034 53.9297 0.0859014C53.9297 0.106645 53.9448 0.123893 53.9646 0.127162V0.127275C54.26 0.171918 58.362 0.298745 60.4275 7.29056C62.493 14.2825 64.9683 22.6405 65.8045 25.5908C67.6133 31.9722 69.9469 34.0577 73.6985 34.0577H75.4659\"\n fill={redColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M56.4576 2.44421C56.4559 2.44568 56.4541 2.44703 56.4524 2.4485C54.944 3.74292 53.6961 5.66449 52.9539 8.45445C52.8754 8.74959 41.6662 46.889 41.4206 47.7167C40.4784 50.8926 39.6893 54.0469 36.1209 54.5932C36.101 54.5965 36.0859 54.6138 36.0859 54.6345C36.0859 54.6576 36.1047 54.6763 36.1278 54.6763H36.8373C36.8373 54.6763 37.3489 54.6683 37.4515 54.6642C41.0756 54.5179 42.8818 52.978 44.4271 47.7167C45.5556 43.8746 55.8691 8.75883 55.9604 8.45445C56.4006 6.98517 56.9293 5.3123 57.6882 3.84641C57.53 3.59208 56.9713 2.87385 56.4576 2.44421\"\n fill={orangeColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M54.7756 1.4669C53.6292 1.14087 52.0012 1.22801 50.5238 2.41218C49.0463 3.59635 47.7228 5.60664 47.0466 8.14847C46.968 8.4435 35.2535 48.309 35.1658 48.6028C34.5804 50.5662 33.9476 52.4272 32.5578 53.5597C31.9265 54.0741 31.139 54.4382 30.1287 54.5931V54.5932C30.1089 54.5965 30.0938 54.6138 30.0938 54.6345C30.0938 54.6576 30.1125 54.6763 30.1355 54.6763H31.9702C33.561 54.6763 34.7005 54.2555 35.5545 53.5597C36.9444 52.4272 37.5771 50.5663 38.1625 48.6028C38.2502 48.309 49.8795 8.74957 49.958 8.45443C50.7002 5.66447 51.9481 3.7429 53.4565 2.44848C53.8916 2.07499 54.3488 1.75505 54.8217 1.48077C54.8141 1.47817 54.7985 1.47344 54.7756 1.4669\"\n fill={yellowColor}\n />\n </g>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M27.0349 51.2629C26.519 50.5125 26.0823 49.6082 25.7735 48.5189C25.328 46.9472 13.0878 5.22074 13.0878 5.22074C12.0376 1.58696 10.3878 0.0684204 7.355 0.0684204H5.50276C5.47965 0.0684204 5.46094 0.0872471 5.46094 0.110245C5.46094 0.131101 5.47616 0.148237 5.49589 0.151506C7.81439 0.512821 9.17375 2.0733 10.0835 5.22074L22.7739 48.5189C23.4303 50.835 24.3325 52.3205 25.3258 53.2511C26.0299 52.8441 26.6295 52.1809 27.0349 51.2629\"\n fill={blueColor}\n />\n </svg>\n </SvgBox>\n );\n },\n);\nVyLogoPride.displayName = \"VyLogoPride\";\n","\"use client\";\nimport {\n BoxProps,\n Center,\n RecipeVariantProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport {\n Backward15MediaControllerFill30Icon,\n Forward15MediaControllerFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { createTexts, useTranslation } from \"..\";\nimport { mediaControllerSlotRecipe } from \"../theme/slot-recipes/media-controller-button\";\n\nexport type MediaControllerVariantProps = RecipeVariantProps<\n typeof mediaControllerSlotRecipe\n>;\n\ntype JumpButtonProps = BoxProps &\n PropsWithChildren<MediaControllerVariantProps> & {\n onClick: () => void;\n \"aria-label\"?: string;\n disabled?: boolean;\n direction: \"backward\" | \"forward\";\n size: \"sm\" | \"lg\";\n };\n\n/**\n * A jump button.\n *\n * Intended to jump 15 seconds forward or backward in a video, podcast, audiobook or similar.\n *\n * Specify what direction you want to skip with the `direction` prop.\n *\n * ```tsx\n * <JumpButton direction=\"forward\" onClick={onGoForward} />\n * ```\n */\nexport const JumpButton = forwardRef<HTMLButtonElement, JumpButtonProps>(\n (props, ref) => {\n const { direction, disabled, size = \"sm\" } = props;\n const { t } = useTranslation();\n\n const recipe = useSlotRecipe({ key: \"mediaControllerButton\" });\n const styles = recipe({ variant: \"jumpSkip\", size });\n\n return (\n <Center\n as=\"button\"\n ref={ref}\n css={styles.root}\n aria-label={\n direction === \"forward\" ? t(texts.forward) : t(texts.backward)\n }\n disabled={disabled}\n {...props}\n >\n {direction === \"forward\" ? (\n <Forward15MediaControllerFill30Icon css={styles.icon} />\n ) : (\n <Backward15MediaControllerFill30Icon css={styles.icon} />\n )}\n </Center>\n );\n },\n);\nJumpButton.displayName = \"JumpButton\";\n\nconst texts = createTexts({\n forward: {\n nb: \"15 sekunder frem\",\n nn: \"15 sekunder fram\",\n sv: \"15 sekunder framåt\",\n en: \"15 seconds forward\",\n },\n backward: {\n nb: \"15 sekunder tilbake\",\n nn: \"15 sekunder tilbake\",\n sv: \"15 sekunder tillbaka\",\n en: \"15 seconds backward\",\n },\n});\n","\"use client\";\nimport { BoxProps, Center, useSlotRecipe } from \"@chakra-ui/react\";\nimport {\n PauseMediaControllerFill24Icon,\n PlayMediaControllerFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { createTexts, MediaControllerVariantProps, useTranslation } from \"..\";\n\ntype PlayPauseButtonProps = BoxProps &\n PropsWithChildren<MediaControllerVariantProps> & {\n onClick: () => void;\n \"aria-label\"?: string;\n disabled?: boolean;\n playing: boolean;\n size: \"sm\" | \"lg\";\n };\n\n/**\n * A playback button.\n *\n * Intended to start or pause playback of a video, podcast, audiobook or similar.\n *\n * Specify the current playing state with `playing`.\n *\n * ```tsx\n * <PlayPauseButton playing={playing} onClick={onPlaybackClick} />\n * ```\n */\nexport const PlayPauseButton = forwardRef<\n HTMLButtonElement,\n PlayPauseButtonProps\n>((props, ref) => {\n const { playing, disabled, size = \"sm\" } = props;\n\n const { t } = useTranslation();\n\n const recipe = useSlotRecipe({ key: \"mediaControllerButton\" });\n const styles = recipe({ variant: \"play\", size });\n\n return (\n <Center\n ref={ref}\n as=\"button\"\n css={styles.root}\n aria-label={playing ? t(texts.pause) : t(texts.play)}\n disabled={disabled}\n {...props}\n >\n {playing ? (\n <PauseMediaControllerFill24Icon css={styles.icon} />\n ) : (\n <PlayMediaControllerFill24Icon css={styles.icon} />\n )}\n </Center>\n );\n});\nPlayPauseButton.displayName = \"PlayPauseButton\";\n\nconst texts = createTexts({\n pause: {\n nb: \"Pause\",\n nn: \"Pause\",\n sv: \"Paus\",\n en: \"Pause\",\n },\n play: {\n nb: \"Spill av\",\n nn: \"Spill av\",\n sv: \"Spel av\",\n en: \"Play\",\n },\n});\n","\"use client\";\nimport { BoxProps, Center, useSlotRecipe } from \"@chakra-ui/react\";\nimport {\n NextMediaControllerFill30Icon,\n PreviousMediaControllerFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { createTexts, MediaControllerVariantProps, useTranslation } from \"..\";\n\ntype SkipButtonProps = BoxProps &\n PropsWithChildren<MediaControllerVariantProps> & {\n onClick: () => void;\n \"aria-label\"?: string;\n disabled?: boolean;\n direction: \"backward\" | \"forward\";\n size: \"sm\" | \"lg\";\n };\n/**\n * A skip button.\n *\n * Intended to skip to the next section, chapter og similar.\n *\n * Specify what direction you want to skip with the `direction` prop.\n *\n * ```tsx\n * <SkipButton direction=\"forward\" onClick={onNextChapter} />\n * ```\n */\nexport const SkipButton = forwardRef<HTMLButtonElement, SkipButtonProps>(\n (props, ref) => {\n const { direction, disabled, size = \"sm\" } = props;\n\n const { t } = useTranslation();\n\n const recipe = useSlotRecipe({ key: \"mediaControllerButton\" });\n const styles = recipe({ variant: \"jumpSkip\", size });\n\n return (\n <Center\n ref={ref}\n as=\"button\"\n css={styles.root}\n aria-label={direction === \"forward\" ? t(texts.next) : t(texts.previous)}\n disabled={disabled}\n {...props}\n >\n {direction === \"forward\" ? (\n <NextMediaControllerFill30Icon css={styles.icon} />\n ) : (\n <PreviousMediaControllerFill30Icon css={styles.icon} />\n )}\n </Center>\n );\n },\n);\nSkipButton.displayName = \"SkipButton\";\n\nconst texts = createTexts({\n next: {\n nb: \"Neste\",\n nn: \"Neste\",\n sv: \"Nästa\",\n en: \"Next\",\n },\n previous: {\n nb: \"Forrige\",\n nn: \"Forrige\",\n sv: \"Föregående\",\n en: \"Previous\",\n },\n});\n","\"use client\";\nimport {\n Box,\n BoxProps,\n chakra,\n Popover as ChakraPopover,\n PopoverCloseTrigger,\n PopoverRootProps,\n usePopoverContext,\n} from \"@chakra-ui/react\";\nimport { ArrowRightFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React, {\n forwardRef,\n PropsWithChildren,\n useEffect,\n useState,\n} from \"react\";\n\nimport {\n Button,\n createTexts,\n Popover,\n PopoverContent,\n PopoverProps,\n PopoverTrigger,\n ProgressIndicator,\n useColorMode,\n useTranslation,\n} from \"..\";\n\nconst EXPIRATION_DELAY_MS = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds\n\nconst isNudgeExpired = (\n introducedDate: string,\n delay = EXPIRATION_DELAY_MS,\n): boolean => {\n const expirationTime = new Date(introducedDate).getTime() + delay;\n return expirationTime < Date.now();\n};\n\nconst logExpirationWarning = () => {\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `The nudge has been used for longer than 30 days. Please remove it from the codebase.\n This is a development-only warning and will not appear in production.`,\n );\n }\n};\n\nexport type NudgeProps = {\n introducedDate: string;\n} & PopoverRootProps;\n\nexport const Nudge = (props: NudgeProps) => {\n const { introducedDate, size = \"md\", ...rest } = props;\n\n if (isNudgeExpired(introducedDate)) {\n logExpirationWarning();\n return null;\n }\n\n return <Popover defaultOpen={true} size={size} {...rest} />;\n};\n\nexport const NudgeTrigger = forwardRef<\n HTMLButtonElement,\n ChakraPopover.TriggerProps\n>(({ ...props }, ref) => {\n return <PopoverTrigger {...props} ref={ref} />;\n});\nNudgeTrigger.displayName = \"NudgeTrigger\";\n\nexport const NudgeContent = forwardRef<HTMLDivElement, PopoverProps>(\n ({ showCloseButton = true, children, ...props }, ref) => {\n const [currentStep, setCurrentStep] = useState(1);\n const childrenArray = React.Children.toArray(children); // Convert children to an array\n\n const { open } = usePopoverContext();\n\n useEffect(() => {\n setCurrentStep(1);\n }, [children, open]);\n\n const wizardPages = childrenArray.filter(\n (child) =>\n React.isValidElement(child) &&\n (child.type as React.ComponentType).displayName === \"NudgeWizardStep\",\n );\n\n const restChildren = childrenArray.filter(\n (child) =>\n !React.isValidElement(child) ||\n (child.type as React.ComponentType).displayName !== \"NudgeWizardStep\",\n );\n\n const totalSteps = wizardPages.length;\n const isLastStep = totalSteps === currentStep;\n\n if (wizardPages.length === 0) {\n return (\n <PopoverContent showCloseButton={showCloseButton} {...props} ref={ref}>\n {children}\n </PopoverContent>\n );\n }\n\n return (\n <PopoverContent showCloseButton={showCloseButton} {...props} ref={ref}>\n {restChildren}\n {wizardPages[currentStep - 1] as React.ReactElement}\n <NudgeActions gap=\"18px\">\n <ProgressIndicator\n activeStep={currentStep}\n numberOfSteps={totalSteps}\n />\n\n <NextButton\n isLastStep={isLastStep}\n onNext={() => {\n setCurrentStep((prev) => prev + 1);\n }}\n />\n </NudgeActions>\n </PopoverContent>\n );\n },\n);\nNudgeContent.displayName = \"NudgeContent\";\n\nexport const NudgeActions = ({ ...props }: BoxProps) => {\n const { colorMode } = useColorMode();\n\n return (\n <Box\n className={colorMode === \"dark\" ? \"light\" : \"dark\"}\n display=\"flex\"\n paddingTop=\"1rem\"\n alignItems=\"center\"\n gap=\"0.5rem\"\n justifyContent=\"between\"\n width=\"100%\"\n {...props}\n />\n );\n};\n\ntype NextOrCloseButtonProps = {\n isLastStep: boolean;\n onNext: () => void;\n};\nconst NextButton = ({ isLastStep, onNext }: NextOrCloseButtonProps) => {\n const { t } = useTranslation();\n\n if (isLastStep)\n return (\n <PopoverCloseTrigger>\n <Button variant=\"tertiary\" size=\"xs\">\n {t(texts.close)}\n </Button>\n </PopoverCloseTrigger>\n );\n\n return (\n <Button\n variant=\"tertiary\"\n size=\"xs\"\n rightIcon={<ArrowRightFill18Icon />}\n onClick={onNext}\n >\n {t(texts.nextStep)}\n </Button>\n );\n};\n\nconst texts = createTexts({\n nextStep: {\n nb: \"Neste\",\n nn: \"Neste\",\n sv: \"Nästa\",\n en: \"Next\",\n },\n close: {\n nb: \"Lukk\",\n nn: \"Lukk\",\n sv: \"Stäng\",\n en: \"Close\",\n },\n});\n\nexport const NudgeWizardStep = ({ children }: PropsWithChildren) => {\n return (\n <chakra.div display=\"flex\" flexDirection=\"column\" gap=\"1rem\" width=\"100%\">\n {children}\n </chakra.div>\n );\n};\n\nNudgeWizardStep.displayName = \"NudgeWizardStep\";\n\nexport const NudgeCloseTrigger = forwardRef<\n HTMLButtonElement,\n ChakraPopover.TriggerProps\n>(({ children, ...props }, ref) => {\n const isStringChild = typeof children === \"string\";\n\n return (\n <ChakraPopover.CloseTrigger {...props} ref={ref} asChild={!isStringChild}>\n {children}\n </ChakraPopover.CloseTrigger>\n );\n});\nNudgeCloseTrigger.displayName = \"NudgeCloseTrigger\";\n","\"use client\";\n\nimport {\n Box,\n createContext,\n Pagination as ChakraPagination,\n usePaginationContext,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport {\n DropdownLeftOutline18Icon,\n DropdownRightOutline18Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport * as React from \"react\";\n\nimport { createTexts, List, ListItem, useTranslation } from \"..\";\nimport { ButtonVariantContext, PaginationRootProps } from \"./types\";\n\n/**\n * A pagination component is used to navigate between multiple pages.\n *\n * Count is the total number of pages.\n * pageSize is the number of items per page.\n * defaultPage is the default page to show.\n * siblingCount is the number of sibling pages to show.\n *\n * ```tsx\n * <Pagination count={10} pageSize={1} defaultPage={1}>\n * <PaginationPrevTrigger />\n * <PaginationItems />\n * <PaginationNextTrigger />\n * </Pagination>\n * ```\n **/\n\nconst [RootPropsProvider, useRootProps] = createContext<ButtonVariantContext>({\n name: \"RootPropsProvider\",\n});\n\nexport const Pagination = React.forwardRef<HTMLDivElement, PaginationRootProps>(\n (props, ref) => {\n const { getHref, children, ...rest } = props;\n const recipe = useSlotRecipe({ key: \"pagination\" });\n const styles = recipe();\n\n return (\n <RootPropsProvider\n value={{\n getHref,\n }}\n >\n <ChakraPagination.Root\n ref={ref}\n type={getHref ? \"link\" : \"button\"}\n {...rest}\n >\n <List css={styles.list}>{children}</List>\n </ChakraPagination.Root>\n </RootPropsProvider>\n );\n },\n);\nPagination.displayName = \"Pagination\";\n\nexport const PaginationEllipsis = React.forwardRef<\n HTMLDivElement,\n ChakraPagination.EllipsisProps\n>((props, ref) => {\n return (\n <ListItem>\n <ChakraPagination.Ellipsis ref={ref} {...props} asChild>\n <Box cursor=\"default\">...</Box>\n </ChakraPagination.Ellipsis>\n </ListItem>\n );\n});\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\n\nexport const PaginationItem = React.forwardRef<\n HTMLButtonElement,\n ChakraPagination.ItemProps\n>((props, ref) => {\n const rootProps = useRootProps();\n const { t } = useTranslation();\n const { page, totalPages } = usePaginationContext();\n\n if (rootProps.getHref) {\n return (\n <ListItem>\n <ChakraPagination.Item\n as={props.as ?? \"a\"}\n {...{\n href: rootProps.getHref(props.value as number),\n to: rootProps.getHref(props.value as number),\n }}\n ref={ref}\n aria-label={t(texts.pageOf(props.value, totalPages))}\n {...props}\n >\n {props.value}\n </ChakraPagination.Item>\n </ListItem>\n );\n }\n\n return (\n <ListItem>\n <ChakraPagination.Item\n as={props.as ?? \"button\"}\n ref={ref}\n aria-label={t(texts.pageOf(props.value, totalPages))}\n aria-selected={page === props.value}\n {...props}\n >\n {props.value}\n </ChakraPagination.Item>\n </ListItem>\n );\n});\nPaginationItem.displayName = \"PaginationItem\";\n\nexport const PaginationPrevTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraPagination.PrevTriggerProps\n>((props, ref) => {\n const { page } = usePaginationContext();\n const recipe = useSlotRecipe({ key: \"pagination\" });\n const styles = recipe();\n const { t } = useTranslation();\n const rootProps = useRootProps();\n\n if (page <= 1) return null;\n\n if (rootProps.getHref) {\n return (\n <ListItem>\n <ChakraPagination.PrevTrigger\n as={props.as ?? \"a\"}\n asChild\n {...{\n href: rootProps.getHref(props.value as number),\n to: rootProps.getHref(props.value as number),\n }}\n ref={ref}\n css={styles.item}\n aria-label={t(texts.previousPage)}\n {...props}\n >\n <DropdownLeftOutline18Icon />\n </ChakraPagination.PrevTrigger>\n </ListItem>\n );\n }\n return (\n <ListItem>\n <ChakraPagination.PrevTrigger\n ref={ref}\n asChild\n aria-label={t(texts.previousPage)}\n as={props.as || \"button\"}\n css={styles.item}\n {...props}\n >\n <DropdownLeftOutline18Icon />\n </ChakraPagination.PrevTrigger>\n </ListItem>\n );\n});\nPaginationPrevTrigger.displayName = \"PaginationPrevTrigger\";\n\nexport const PaginationNextTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraPagination.NextTriggerProps\n>((props, ref) => {\n const { page, totalPages } = usePaginationContext();\n const recipe = useSlotRecipe({ key: \"pagination\" });\n const styles = recipe();\n const { t } = useTranslation();\n const rootProps = useRootProps();\n\n if (page >= totalPages) return null;\n\n if (rootProps.getHref) {\n return (\n <ListItem>\n <ChakraPagination.NextTrigger\n ref={ref}\n {...{\n href: rootProps.getHref(props.value as number),\n to: rootProps.getHref(props.value as number),\n }}\n css={styles.item}\n aria-label={t(texts.nextPage)}\n {...props}\n >\n <DropdownRightOutline18Icon />\n </ChakraPagination.NextTrigger>\n </ListItem>\n );\n }\n return (\n <ListItem>\n <ChakraPagination.NextTrigger\n ref={ref}\n css={styles.item}\n aria-label={t(texts.nextPage)}\n as={props.as || \"button\"}\n {...props}\n >\n <DropdownRightOutline18Icon />\n </ChakraPagination.NextTrigger>\n </ListItem>\n );\n});\nPaginationNextTrigger.displayName = \"PaginationNextTrigger\";\n\nexport const PaginationItems = (\n props: React.HTMLAttributes<HTMLElement> & {},\n) => {\n return (\n <ChakraPagination.Context>\n {({ pages }) =>\n pages.map((page, index) => {\n return page.type === \"ellipsis\" ? (\n <PaginationEllipsis\n key={`ellipsis-${index}`}\n index={index}\n {...props}\n />\n ) : (\n <PaginationItem\n key={`pagination-item-${page.value}`}\n value={page.value}\n type=\"page\"\n {...props}\n />\n );\n })\n }\n </ChakraPagination.Context>\n );\n};\n\nconst texts = createTexts({\n previousPage: {\n nb: \"Forrige side\",\n nn: \"Førre side\",\n en: \"Previous page\",\n sv: \"Föregående sida\",\n },\n nextPage: {\n nb: \"Neste side\",\n nn: \"Neste side\",\n en: \"Next page\",\n sv: \"Nästa sida\",\n },\n pageOf: (page, totalPages) => {\n return {\n nb: `Side ${page} av ${totalPages}`,\n nn: `Side ${page} av ${totalPages}`,\n en: `Page ${page} of ${totalPages}`,\n sv: `Sida ${page} av ${totalPages}`,\n };\n },\n});\n","\"use client\";\n\nimport {\n Popover as ChakraPopover,\n Portal,\n usePopoverContext,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef, useEffect } from \"react\";\n\nimport { CloseButton } from \"@/button\";\nimport { useColorMode } from \"@/color-mode\";\n\nexport const Popover = ChakraPopover.Root;\n\nexport const PopoverTrigger = forwardRef<\n HTMLButtonElement,\n ChakraPopover.TriggerProps\n>(({ children, ...props }, ref) => {\n const isStringChild = typeof children === \"string\";\n\n return (\n <ChakraPopover.Trigger {...props} ref={ref} asChild={!isStringChild}>\n {children}\n </ChakraPopover.Trigger>\n );\n});\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\nexport type PopoverProps = ChakraPopover.ContentProps &\n React.RefAttributes<HTMLDivElement> & {\n showCloseButton?: boolean;\n };\n\nexport const PopoverContent = forwardRef<HTMLDivElement, PopoverProps>(\n ({ children, showCloseButton = false, ...props }, ref) => {\n const { colorMode } = useColorMode();\n\n const closeButtonRef = React.useRef<HTMLButtonElement>(null);\n\n const { open } = usePopoverContext();\n\n useEffect(() => {\n if (showCloseButton && open && closeButtonRef.current) {\n closeButtonRef.current.focus();\n }\n }, [showCloseButton, open]);\n\n return (\n <Portal>\n <ChakraPopover.Positioner>\n <ChakraPopover.Content ref={ref} {...props}>\n <ChakraPopover.Arrow />\n {showCloseButton && (\n <div>\n <ChakraPopover.CloseTrigger asChild>\n <CloseButton\n className={colorMode === \"dark\" ? \"light\" : \"dark\"}\n ref={closeButtonRef}\n />\n </ChakraPopover.CloseTrigger>\n </div>\n )}\n <ChakraPopover.Body {...props}>{children}</ChakraPopover.Body>\n </ChakraPopover.Content>\n </ChakraPopover.Positioner>\n </Portal>\n );\n },\n);\nPopoverContent.displayName = \"PopoverContent\";\n","\"use client\";\nimport { BoxProps, RecipeVariantProps, useSlotRecipe } from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren } from \"react\";\n\nimport { Box, createTexts, useTranslation } from \"..\";\nimport { progressIndicatorRecipe } from \"../theme/slot-recipes/progress-indicator\";\nimport { ProgressDot } from \"./ProgressDot\";\n\nexport type ProgressIndicatorVariantProps = RecipeVariantProps<\n typeof progressIndicatorRecipe\n>;\n\nexport type ProgressIndicatorProps = BoxProps &\n PropsWithChildren<ProgressIndicatorVariantProps> & {\n children?: React.ReactNode;\n numberOfSteps: number;\n activeStep: number;\n colorPalette?: string;\n };\n\n/**\n * A progress indicator is used to show which step of a process a user is currently in\n * to give them a sense of progress.\n *\n * You specify the active step, which starts at 1 (not 0)\n *\n * ```tsx\n * <ProgressIndicator\n * numberOfSteps={3}\n * activeStep={2}\n * />\n * ```\n */\n\nexport const ProgressIndicator = forwardRef<\n HTMLDivElement,\n ProgressIndicatorProps\n>(({ numberOfSteps, activeStep }, ref) => {\n const { t } = useTranslation();\n const recipe = useSlotRecipe({\n key: \"progressIndicator\",\n });\n\n const styles = recipe({});\n\n return (\n <Box\n css={styles.root}\n role=\"progressbar\"\n aria-valuemin={1}\n aria-valuemax={numberOfSteps}\n aria-valuenow={activeStep}\n aria-valuetext={t(texts.stepsOf(activeStep, numberOfSteps))}\n ref={ref}\n >\n <Box css={styles.container}>\n {Array.from({ length: numberOfSteps }, (_, i) => (\n <ProgressDot\n key={i}\n aria-valuenow={i + 1}\n isActive={activeStep === i + 1}\n />\n ))}\n </Box>\n </Box>\n );\n});\nProgressIndicator.displayName = \"ProgressIndicator\";\n\nconst texts = createTexts({\n stepsOf: (activeStep, numberOfSteps) => ({\n nb: `Steg ${activeStep} av ${numberOfSteps}`,\n nn: `Steg ${activeStep} av ${numberOfSteps}`,\n sv: `Steg ${activeStep} av ${numberOfSteps}`,\n en: `Step ${activeStep} of ${numberOfSteps}`,\n }),\n});\n","\"use client\";\nimport { chakra, useSlotRecipe } from \"@chakra-ui/react\";\nimport { PropsWithChildren } from \"react\";\n\nimport { ProgressIndicatorVariantProps } from \"./ProgressIndicator\";\n\ntype ProgressDot = PropsWithChildren<ProgressIndicatorVariantProps> & {\n isActive: boolean;\n};\n\nexport const ProgressDot = ({ isActive }: ProgressDot) => {\n const recipe = useSlotRecipe({ key: \"progressIndicator\" });\n const style = recipe({});\n return (\n <chakra.svg\n display=\"block\"\n css={style.progressDot}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 100 100\"\n aria-current={isActive ? \"step\" : undefined}\n >\n <chakra.circle as=\"circle\" cx=\"50\" cy=\"50\" r=\"50\" />\n </chakra.svg>\n );\n};\n","\"use client\";\nimport {\n ChakraProvider,\n ChakraProviderProps,\n SystemContext,\n} from \"@chakra-ui/react\";\nimport { Global } from \"@emotion/react\";\n\nimport { Language, LanguageProvider, system } from \"..\";\nimport { ColorModeProvider } from \"../color-mode\";\nimport { fontFaces } from \"../theme/brand\";\nimport { Toaster } from \"../toast/toast\";\n\ntype SporProviderProps = Omit<ChakraProviderProps, \"value\"> & {\n language?: Language;\n theme?: SystemContext;\n};\n\n/**\n * This component is used to provide the specified theme of colors and other\n * design tokens to the remainder of the application, as well as the current language.\n *\n * Please place it as close to the root of your application as possible -\n * at least before rendering any UI.\n *\n * You can pass your own theme to this component. If you don't (and most of the time you won't), the default Spor theme will be used.\n *\n * You should specify the current language of your application. This is specified to provide any built-in microcopy and labels for any Spor components. The default is Norwegian (bokmål).\n *\n * ```tsx\n * * import { SporProvider, Language } from \"@vygruppen/spor-react\";\n * const root = React.createRoot(document.getElementById(\"root\"))\n * root.render(\n * <SporProvider language={Language.English}>\n * <App />\n * </SporProvider>\n * );\n * ```\n *\n * You can pass specific overrides to the theme if you need to. Adding application specific design tokens, for example could be a useful thing to do.\n *\n * ```tsx\n * import { extendTheme, SporProvider } from \"@vygruppen/spor-react\";\nimport { theme } from '../../../../apps/docs/app/features/portable-text/code-block/codeTheme';\n * const theme = extendTheme({\n * colors: { myApp: { primary: \"tomato\" } }\n * });\n * const root = React.createRoot(document.getElementById(\"root\"))\n * root.render(\n * <SporProvider language={Language.Swedish} theme={theme}>\n * <App />\n * </SporProvider>\n * );\n * ```\n */\nexport const SporProvider = ({\n language = Language.NorwegianBokmal,\n theme = system,\n children,\n}: SporProviderProps) => {\n return (\n <LanguageProvider language={language}>\n <ChakraProvider value={theme}>\n <ColorModeProvider>\n <Toaster />\n <Global styles={fontFaces} />\n\n {children}\n </ColorModeProvider>\n </ChakraProvider>\n </LanguageProvider>\n );\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\n/** A string of CSS that should be injected in the global CSS space */\nexport const fontFaces = `\n@font-face {\n font-family: ${tokens.asset.font[\"vy-sans\"][\"light\"].name};\n src: url(\"https://www.vy.no/styles/font/VySans-Light.woff2\") format(\"woff2\"),\n url(\"https://www.vy.no/styles/font/VySans-Light.woff\") format(\"woff\");\n font-style: normal;\n font-weight: 300;\n font-display: swap\n}\n@font-face {\n font-family: ${tokens.asset.font[\"vy-sans\"][\"light-italic\"].name};\n src: url(\"https://www.vy.no/styles/font/VySans-LightItalic.woff2\")\n format(\"woff2\"),\n url(\"https://www.vy.no/styles/font/VySans-LightItalic.woff\") format(\"woff\");\n font-style: italic;\n font-weight: 300;\n font-display: swap\n}\n@font-face {\n font-family: ${tokens.asset.font[\"vy-sans\"][\"medium\"].name};\n src: url(\"https://www.vy.no/styles/font/VySans-Regular.woff2\") format(\"woff2\"),\n url(\"https://www.vy.no/styles/font/VySans-Regular.woff\") format(\"woff\");\n font-style: normal;\n font-weight: 400;\n font-display: swap\n}\n@font-face {\n font-family: ${tokens.asset.font[\"vy-sans\"][\"medium-italic\"].name};\n src: url(\"https://www.vy.no/styles/font/VySans-RegularItalic.woff2\")\n format(\"woff2\"),\n url(\"https://www.vy.no/styles/font/VySans-RegularItalic.woff\")\n format(\"woff\");\n font-style: italic;\n font-weight: 400;\n font-display: swap\n}\n@font-face {\n font-family: ${tokens.asset.font[\"vy-sans\"][\"bold\"].name};\n src: url(\"https://www.vy.no/styles/font/VySans-Bold.woff2\") format(\"woff2\"),\n url(\"https://www.vy.no/styles/font/VySans-Bold.woff\") format(\"woff\");\n font-style: normal;\n font-weight: 700;\n font-display: swap\n}\n@font-face {\n font-family: ${tokens.asset.font[\"vy-sans\"][\"bold-italic\"].name};\n src: url(\"https://www.vy.no/styles/font/VySans-BoldItalic.woff2\")\n format(\"woff2\"),\n url(\"https://www.vy.no/styles/font/VySans-BoldItalic.woff\") format(\"woff\");\n font-style: italic;\n font-weight: 700;\n font-display: swap\n}\n@font-face {\n font-family: ${tokens.asset.font[\"vy-display\"].name};\n src: url(\"https://www.vy.no/styles/font/VyDisplay-Medium.woff2\")\n format(\"woff2\"),\n url(\"https://www.vy.no/styles/font/VyDisplay-Medium.woff\") format(\"woff\");\n font-style: normal;\n font-weight: 400;\n font-display: swap\n}\n body {\n font-family: \"Vy Sans\", sans-serif;\n }\n`;\n","export enum Brand {\n VyDigital = \"VyDigital\",\n VyUtvikling = \"VyUtvikling\",\n CargoNet = \"CargoNet\",\n}\n\nexport { fontFaces } from \"./font-faces\";\n","\"use client\";\n\nimport {\n createToaster,\n Icon,\n Portal,\n Stack,\n Toast,\n Toaster as ChakraToaster,\n} from \"@chakra-ui/react\";\nimport {\n ErrorFill18Icon,\n InformationFill18Icon,\n SuccessFill18Icon,\n} from \"@vygruppen/spor-icon-react\";\n\nimport { createTexts, useTranslation } from \"@/i18n\";\n\nconst toaster = createToaster({\n placement: \"bottom\",\n pauseOnPageIdle: true,\n});\n\ntype Variant = \"info\" | \"success\" | \"error\";\n\ntype ToastProps = {\n duration?: number;\n text: string;\n variant: Variant;\n id?: string;\n};\n\nexport const createToast = ({\n text,\n variant,\n id,\n duration = 6000,\n}: ToastProps) =>\n toaster.create({\n description: text,\n type: variant,\n id: id ?? crypto.randomUUID(),\n duration,\n });\n\nexport const Toaster = () => {\n return (\n <Portal>\n <ChakraToaster toaster={toaster} insetInline={{ mdDown: \"4\" }}>\n {(toast) => (\n <Toast.Root width={{ md: \"sm\" }} role=\"alert\">\n <ToastIcon variant={toast.type as Variant} />\n <Stack gap=\"1\" flex=\"1\" maxWidth=\"100%\">\n <Toast.Description>{toast.description}</Toast.Description>\n </Stack>\n </Toast.Root>\n )}\n </ChakraToaster>\n </Portal>\n );\n};\n\nconst iconComponents = {\n info: InformationFill18Icon,\n success: SuccessFill18Icon,\n error: ErrorFill18Icon,\n} as const;\n\nconst ToastIcon = ({ variant }: { variant: Variant }) => {\n const { t } = useTranslation();\n\n const ariaLabel = t(texts[variant as keyof typeof texts]);\n\n const IconComponent = iconComponents[variant];\n\n if (!IconComponent) return null;\n\n return (\n <Icon aria-label={ariaLabel}>\n <IconComponent />\n </Icon>\n );\n};\n\nconst texts = createTexts({\n info: {\n nb: \"Informasjon\",\n nn: \"Informasjon\",\n sv: \"Information\",\n en: \"Information\",\n },\n success: {\n nb: \"Suksess\",\n nn: \"Suksess\",\n sv: \"Succé\",\n en: \"Success\",\n },\n error: {\n nb: \"Feil\",\n nn: \"Feil\",\n sv: \"Error\",\n en: \"Error\",\n },\n});\n","\"use client\";\nimport { Flex, RecipeVariantProps, useSlotRecipe } from \"@chakra-ui/react\";\nimport { ArrowLeftFill24Icon } from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { Box, createTexts, IconButton, Text, useTranslation } from \"..\";\nimport { stepperSlotRecipe } from \"../theme/slot-recipes/stepper\";\nimport { StepperStep } from \".\";\nimport { StepperProvider } from \"./StepperContext\";\n\nexport type StepperVariantProps = RecipeVariantProps<typeof stepperSlotRecipe>;\n\ntype StepperProps = PropsWithChildren<StepperVariantProps> & {\n /** Callback for when a step is clicked */\n onClick: (clickedStep: number) => void;\n /** Callback for when the back button is clicked (on smaller screens).\n *\n * If this is not provided, the back button will not be shown on smaller screens on the first step.\n */\n onBackButtonClick?: (stepNumberToGoTo: number) => void;\n /** Heading shown on smaller devices */\n heading?: string;\n /**\n * The heading level rendered for the heading shown on smaller devices.\n *\n * Defaults to h2\n * */\n headingLevel?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\";\n /** The currently active step */\n activeStep: number;\n /** The labels of each step */\n steps: string[];\n /** The variant.\n * \"core\" has a transparent background,\n * while \"accent\" has a slight accent color */\n variant: \"core\" | \"accent\";\n /** Disables all clicks */\n disabled?: boolean;\n};\n/**\n * A stepper is used to show which step of a process a user is currently in.\n *\n * You specify the active step, which starts at 1 (not 0)\n *\n * ```tsx\n * <Stepper\n * title=\"Example\"\n * onClick={handleStepClick}\n * activeStep={2}\n * steps={['Where', 'When', 'How']}\n * />\n * ```\n **/\n\nexport const Stepper = forwardRef<HTMLDivElement, StepperProps>(\n function Stepper(props, ref) {\n const {\n onClick = () => {},\n onBackButtonClick,\n steps,\n activeStep: activeStepAsStringOrNumber,\n heading,\n headingLevel,\n variant,\n disabled,\n } = props;\n const recipe = useSlotRecipe({ key: \"stepper\" });\n const style = recipe({ variant });\n const numberOfSteps = steps.length;\n const activeStep = Number(activeStepAsStringOrNumber);\n const { t } = useTranslation();\n const hideBackButtonOnFirstStep = activeStep === 1 && !onBackButtonClick;\n\n return (\n <Box css={style.root} ref={ref}>\n <StepperProvider\n onClick={onClick}\n activeStep={activeStep}\n variant={variant}\n numberOfSteps={numberOfSteps}\n >\n <Box css={style.container}>\n <Box css={style.innerContainer}>\n <Flex\n justifyContent=\"space-between\"\n alignItems=\"center\"\n gap={2}\n flex={1}\n >\n <IconButton\n aria-label={t(texts.back)}\n icon={<ArrowLeftFill24Icon />}\n variant=\"ghost\"\n size=\"sm\"\n visibility={hideBackButtonOnFirstStep ? \"hidden\" : \"visible\"}\n onClick={() => {\n const stepToGoTo = activeStep - 1;\n if (onBackButtonClick) {\n onBackButtonClick(stepToGoTo);\n }\n onClick(stepToGoTo);\n }}\n />\n {heading && (\n <Text variant=\"sm\" as={headingLevel} css={style.title}>\n {heading}\n </Text>\n )}\n <Box css={style.stepCounter}>\n {t(texts.stepsOf(activeStep, numberOfSteps))}\n </Box>\n </Flex>\n </Box>\n <Flex justifyContent=\"center\" display={[\"none\", null, \"flex\"]}>\n {steps.map((step, index) => (\n <StepperStep\n key={index}\n stepNumber={index + 1}\n variant={variant}\n aria-current={index + 1 === activeStep ? \"step\" : undefined}\n disabled={disabled}\n >\n {step}\n </StepperStep>\n ))}\n </Flex>\n </Box>\n </StepperProvider>\n </Box>\n );\n },\n);\n\nconst texts = createTexts({\n stepsOf: (activeStep, numberOfSteps) => ({\n nb: `Steg ${activeStep}/${numberOfSteps}`,\n nn: `Steg ${activeStep}/${numberOfSteps}`,\n sv: `Steg ${activeStep}/${numberOfSteps}`,\n en: `Step ${activeStep}/${numberOfSteps}`,\n }),\n back: {\n nb: \"Tilbake\",\n nn: \"Tilbake\",\n sv: \"Tillbaka\",\n en: \"Back\",\n },\n});\n","\"use client\";\nimport React from \"react\";\n\ntype StepperContextType = {\n activeStep: number;\n numberOfSteps: number;\n variant: Variant;\n onClick: (clickedIndex: number) => void;\n};\nconst StepperContext = React.createContext<StepperContextType | null>(null);\n\ntype Variant = \"core\" | \"accent\";\n\ntype StepperProviderProps = {\n /** Stepper steps */\n children: React.ReactNode;\n /** Callback whenever a stepper step is clicked */\n onClick: (clickedIndex: number) => void;\n /** The currently active step */\n activeStep: number;\n /** The amount of steps */\n numberOfSteps: number;\n /** The current variant */\n variant: Variant;\n};\n/**\n * Internal provider for sharing logic between stepper and stepper steps.\n */\nexport const StepperProvider = ({\n activeStep,\n children,\n onClick,\n numberOfSteps,\n variant,\n}: StepperProviderProps) => {\n return (\n <StepperContext.Provider\n value={{ activeStep, onClick, numberOfSteps, variant }}\n >\n {children}\n </StepperContext.Provider>\n );\n};\n\n/**\n * Internal hook for sharing stepper state\n */\nexport const useStepper = () => {\n const context = React.useContext(StepperContext);\n if (!context) {\n throw new Error(\n \"useStepper must be used within a StepperProvider. Most likely, you forgot to wrap your StepperStep in a Stepper component\",\n );\n }\n return context;\n};\n","\"use client\";\nimport { useSlotRecipe } from \"@chakra-ui/react\";\nimport { DropdownRightFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React, { PropsWithChildren } from \"react\";\n\nimport { Box, Button, Text } from \"..\";\nimport { StepperVariantProps } from \"./Stepper\";\nimport { useStepper } from \"./StepperContext\";\n\ntype StepperStepProps = PropsWithChildren<StepperVariantProps> & {\n children: React.ReactNode;\n stepNumber: number;\n variant: \"core\" | \"accent\";\n disabled?: boolean;\n};\nexport const StepperStep = ({\n children,\n stepNumber,\n variant,\n disabled: disabledOverride,\n}: StepperStepProps) => {\n const { activeStep, onClick } = useStepper();\n const state = getState(stepNumber, activeStep);\n const recipe = useSlotRecipe({ key: \"stepper\" });\n const style = recipe({ variant });\n const disabledTextColor = \"text.disabled\";\n const iconColor = {\n _light: \"blackAlpha.200\",\n _dark: \"whiteAlpha.200\",\n };\n\n const disabled =\n (state !== \"active\" && disabledOverride) || state === \"disabled\";\n\n return (\n <Box css={style.stepContainer}>\n {stepNumber > 1 && (\n <DropdownRightFill18Icon\n marginX={5}\n display={[\"none\", null, \"block\"]}\n color={iconColor}\n />\n )}\n {disabled ? (\n <Text\n variant=\"xs\"\n fontSize=\"1rem\"\n color={disabledTextColor}\n cursor=\"default\"\n paddingX={2}\n >\n {children}\n </Text>\n ) : (\n <Button\n size=\"xs\"\n variant={state === \"active\" ? \"primary\" : \"ghost\"}\n onClick={\n state === \"completed\" ? () => onClick(stepNumber) : undefined\n }\n pointerEvents={state === \"active\" ? \"none\" : \"auto\"}\n tabIndex={state === \"active\" ? -1 : undefined}\n disabled={disabled}\n aria-current={state === \"active\" ? \"step\" : undefined}\n css={\n state === \"active\"\n ? style.stepButton._currentStep\n : style.stepButton\n }\n fontWeight={state === \"active\" ? \"bold\" : undefined}\n >\n {children}\n </Button>\n )}\n </Box>\n );\n};\n\nconst getState = (stepNumber: number, activeStep: number) => {\n if (stepNumber < activeStep) {\n return \"completed\";\n }\n if (stepNumber === activeStep) {\n return \"active\";\n }\n return \"disabled\";\n};\n","\"use client\";\nimport {\n RecipeVariantProps,\n Tabs as ChakraTabs,\n TabsRootProps as ChakraTabsRootProps,\n} from \"@chakra-ui/react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { tabsSlotRecipe } from \"../theme/slot-recipes/tabs\";\n\ntype TabsVariantProps = RecipeVariantProps<typeof tabsSlotRecipe>;\n\n/**\n * Tabs are used to organize content into different sections.\n * They are used to display different types of content in the same space.\n *\n * @example\n * ```tsx\n * <Tabs defaultValue=\"coming\" fitted>\n * <TabsList>\n * <TabsTrigger value=\"coming\">\n * Kommende\n * </TabsTrigger>\n * <TabsTrigger value=\"completed\">\n * Fullført\n * </TabsTrigger>\n * <TabsTrigger value=\"cancelled\">\n * Avbestilt\n * </TabsTrigger>\n * </TabsList>\n * <TabsContent value=\"coming\">\n * <Heading>Kommende</heading>\n * <Text>Kommende billeter</Text>\n * </TabsContent>\n * <TabsContent value=\"completed\">\n * <Heading>Fullført</heading>\n * <Text>Fullført billeter</Text>\n * </TabsContent>\n * <TabsContent value=\"cancelled\">\n * <Heading>Avbestilt</heading>\n * <Text>Avbestilte billeter</Text>\n * </TabsContent>\n * </Tabs>\n * ```\n */\n\nexport type TabsProps = Exclude<\n ChakraTabsRootProps,\n \"colorPalette\" | \"orientation\"\n> &\n PropsWithChildren<TabsVariantProps> & {\n /** Defaults to `core` */\n variant?: \"core\" | \"accent\";\n /** Defaults to `sm` */\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n /** If Tabs should take up the full width or not. Defaults to `false` */\n fitted?: boolean;\n /** Defaults to `start` */\n justify?: \"start\" | \"center\" | \"end\";\n };\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>((props, ref) => {\n const { variant = \"core\", size = \"sm\" } = props;\n return <ChakraTabs.Root {...props} ref={ref} variant={variant} size={size} />;\n});\nTabs.displayName = \"Tabs\";\n\nexport const TabsList = ChakraTabs.List;\nexport const TabsTrigger = ChakraTabs.Trigger;\nexport const TabsIndicator = ChakraTabs.Indicator;\nexport const TabsContent = ChakraTabs.Content;\n","\"use client\";\nimport {\n RecipeVariantProps,\n Table as ChakraTable,\n TableRootProps as ChakraTableProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { tableSlotRecipe } from \"../theme/slot-recipes/table\";\n\ntype TableVariantProps = RecipeVariantProps<typeof tableSlotRecipe>;\n\nexport type TableProps = Exclude<ChakraTableProps, \"variant\" | \"colorPalette\"> &\n PropsWithChildren<TableVariantProps> & {\n variant?: \"ghost\" | \"core\";\n colorPalette?: \"grey\" | \"green\" | \"white\";\n };\n/**\n * The `Table` component has support for two different variants - `ghost` and `core`. The `ghost` variant has basic lines between rows, while the `core` variant has borders for each cell.\n *\n * You can also specify a `grey` or `green` `colorPalette` prop. Use `green` if you want to place the table on a light green background.\n *\n * Finally, there are three different `size` props you can specify - `sm`, `md` and `lg`.\n *\n * ```tsx\n * <Table variant=\"core\" size=\"lg\">\n * <Thead>\n * ...\n * </Thead>\n * ...\n * </Table>\n * ```\n */\nexport const Table = forwardRef<HTMLTableElement, TableProps>((props, ref) => {\n const { variant = \"ghost\", size, colorPalette = \"green\", children } = props;\n\n const recipe = useSlotRecipe({ recipe: tableSlotRecipe });\n const styles = recipe({ variant, size });\n return (\n <ChakraTable.Root\n variant={variant}\n size={size}\n colorPalette={colorPalette}\n css={styles}\n ref={ref}\n {...props}\n >\n {children}\n </ChakraTable.Root>\n );\n});\nTable.displayName = \"Table\";\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { tableAnatomy } from \"./anatomy\";\n\nconst numericStyles = {\n \"&[data-is-numeric=true]\": {\n textAlign: \"right\",\n },\n};\n\nexport const tableSlotRecipe = defineSlotRecipe({\n className: \"spor-table\",\n slots: tableAnatomy.keys(),\n base: {\n root: {\n tableLayout: \"fixed\",\n borderCollapse: \"collapse\",\n width: \"100%\",\n minWidth: \"36rem\",\n overflowX: \"auto\",\n },\n columnHeader: {\n fontWeight: \"bold\",\n textAlign: \"start\",\n\n ...numericStyles,\n paddingX: 1.5,\n paddingY: 1,\n },\n row: {\n ...numericStyles,\n },\n cell: {\n ...numericStyles,\n paddingX: 1.5,\n paddingY: 1,\n width: \"100%\",\n },\n footer: {\n fontWeight: \"medium\",\n },\n },\n\n variants: {\n colorPalette: {\n green: {\n root: {\n backgroundColor: \"bg\",\n },\n header: {\n backgroundColor: \"bg.tertiary\",\n },\n columnHeader: {\n color: \"text.secondary\",\n },\n },\n grey: {\n root: {\n backgroundColor: \"bg\",\n },\n columnHeader: {\n color: \"brand.text.inverted\",\n backgroundColor: \"surface.disabled\",\n _hover: {\n backgroundColor: \"surface.disabled\",\n },\n },\n },\n white: {\n root: {\n backgroundColor: \"bg\",\n },\n columnHeader: {\n color: \"text\",\n backgroundColor: \"bg\",\n },\n },\n },\n variant: {\n ghost: {\n header: {\n backgroundColor: \"none\",\n },\n columnHeader: {\n borderBottom: \"sm\",\n borderColor: \"outline.disabled\",\n backgroundColor: \"none\",\n color: \"text\",\n },\n\n cell: {\n ...numericStyles,\n },\n row: {\n borderBottom: \"sm\",\n borderColor: \"outline.disabled\",\n ...numericStyles,\n },\n },\n\n core: {\n root: {\n boxShadow: \"0 0 0 1px var(--shadow-color)\",\n shadowColor: \"outline.disabled\",\n borderRadius: \"sm\",\n },\n\n table: {\n overflow: \"hidden\",\n },\n cell: {\n ...numericStyles,\n\n borderRight: \"sm\",\n borderColor: \"outline.disabled\",\n\n _last: {\n borderRight: \"none\",\n },\n },\n\n columnHeader: {\n ...numericStyles,\n\n borderRight: \"sm\",\n borderColor: \"outline.disabled\",\n\n _first: {\n borderTopLeftRadius: \"sm\",\n },\n _last: {\n borderTopRightRadius: \"sm\",\n borderRight: \"none\",\n },\n },\n header: {\n borderBottom: \"sm\",\n borderColor: \"outline.disabled\",\n },\n row: {\n ...numericStyles,\n borderBottom: \"sm\",\n borderColor: \"outline.disabled\",\n\n _last: {\n borderBottom: \"none\",\n },\n },\n },\n },\n\n size: {\n sm: {\n table: {\n fontSize: \"mobile.sm\",\n },\n cell: {\n paddingX: 1,\n paddingY: 0.5,\n fontSize: \"mobile.sm\",\n },\n columnHeader: {\n paddingX: 1,\n paddingY: 0.5,\n },\n caption: {\n paddingX: 1,\n paddingY: 0.5,\n },\n },\n md: {\n table: {\n fontSize: \"mobile.md\",\n },\n cell: {\n paddingX: 1.5,\n paddingY: 1,\n fontSize: \"mobile.md\",\n },\n\n columnHeader: {\n paddingX: 1.5,\n paddingY: 1,\n fontSize: \"mobile.md\",\n },\n caption: {\n paddingX: 1.5,\n paddingY: 1,\n fontSize: \"mobile.md\",\n },\n },\n lg: {\n table: {\n fontSize: \"mobile.md\",\n },\n cell: {\n paddingX: 3,\n paddingY: 3,\n fontSize: \"mobile.md\",\n },\n columnHeader: {\n paddingX: 3,\n paddingY: 2,\n fontSize: \"mobile.md\",\n },\n caption: {\n paddingX: 3,\n paddingY: 2,\n },\n },\n },\n },\n});\n","export * from \"./Table\";\nexport type {\n TableBodyProps,\n TableCaptionProps,\n TableCellProps,\n TableColumnHeaderProps,\n TableColumnProps,\n TableFooterProps,\n TableHeaderProps,\n TableRootProps,\n TableRowProps,\n} from \"@chakra-ui/react\";\nexport {\n TableBody,\n TableCaption,\n TableCell,\n TableColumn,\n TableColumnGroup,\n TableColumnHeader,\n TableFooter,\n TableHeader,\n TableRoot,\n TableRow,\n} from \"@chakra-ui/react\";\n","import {\n createSystem,\n defaultBaseConfig,\n defineConfig,\n} from \"@chakra-ui/react\";\n\nimport { Brand } from \"./brand\";\nimport { recipes } from \"./recipes\";\nimport { semanticTokens } from \"./semantic-tokens\";\nimport { slotRecipes } from \"./slot-recipes\";\nimport { tokens } from \"./tokens\";\nimport { animationStyles } from \"./tokens/animation-styles\";\nimport { breakpoints } from \"./tokens/breakpoints\";\nimport { config } from \"./tokens/config\";\nimport { globalCss } from \"./tokens/global-css\";\nimport { keyframes } from \"./tokens/keyframes\";\nimport { textStyles } from \"./tokens/text-styles\";\n\nexport { createSystem, defineConfig } from \"@chakra-ui/react\";\n\nconst generateTheme = (brand: Brand) => {\n return defineConfig({\n ...config,\n globalCss,\n theme: {\n breakpoints,\n keyframes,\n tokens,\n semanticTokens: semanticTokens[brand],\n recipes,\n slotRecipes,\n textStyles,\n animationStyles,\n },\n });\n};\n\nexport const themes = {\n [Brand.VyDigital]: createSystem(\n defaultBaseConfig,\n generateTheme(Brand.VyDigital),\n ),\n [Brand.CargoNet]: createSystem(\n defaultBaseConfig,\n generateTheme(Brand.CargoNet),\n ),\n [Brand.VyUtvikling]: createSystem(\n defaultBaseConfig,\n generateTheme(Brand.VyUtvikling),\n ),\n};\n\nexport const system = themes[Brand.VyDigital];\n","import { defineRecipe } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const buttonRecipe = defineRecipe({\n className: \"spor-button\",\n base: {\n border: 0,\n borderRadius: \"xl\",\n display: \"flex\",\n gap: \"1\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n cursor: \"pointer\",\n textWrap: \"wrap\",\n width: \"fit-content\",\n paddingX: 3,\n paddingY: 1,\n _disabled: {\n cursor: \"not-allowed\",\n pointerEvents: \"none\",\n boxShadow: \"none\",\n color: \"text.disabled\",\n background: \"surface.disabled\",\n },\n _focus: {\n outlineOffset: tokens.size.stroke.md,\n },\n },\n variants: {\n variant: {\n primary: {\n background: \"brand.surface\",\n color: \"brand.text\",\n _hover: {\n background: \"brand.surface.hover\",\n _active: {\n background: \"brand.surface.active\",\n },\n },\n },\n secondary: {\n background: \"accent.surface\",\n color: \"accent.text\",\n _hover: {\n background: \"accent.surface.hover\",\n _active: {\n background: \"accent.surface.active\",\n },\n },\n },\n tertiary: {\n color: \"core.text\",\n outline: \"solid\",\n outlineWidth: tokens.size.stroke.sm,\n outlineColor: \"core.outline\",\n _hover: {\n outlineWidth: tokens.size.stroke.md,\n outlineColor: \"core.outline.hover\",\n _active: {\n background: \"core.surface.active\",\n outlineWidth: tokens.size.stroke.sm,\n outlineColor: \"core.outline\",\n },\n },\n _focus: {\n outlineWidth: tokens.size.stroke.sm,\n },\n },\n ghost: {\n color: \"ghost.text\",\n _hover: {\n background: \"ghost.surface.hover\",\n _active: {\n background: \"ghost.surface.active\",\n },\n },\n },\n floating: {\n color: \"floating.text\",\n border: \"sm\",\n borderColor: \"floating.outline\",\n boxShadow:\n \"0px 1px 3px 0px var(--spor-colors-surface-disabled, rgba(0, 0, 0, 0.10))\",\n _hover: {\n borderColor: \"floating.outline.hover\",\n\n _active: {\n background: \"core.surface.active\",\n boxShadow: \"none\",\n borderColor: \"floating.outline\",\n },\n },\n },\n },\n size: {\n xs: {\n minHeight: 5,\n minWidth: 5,\n paddingY: 0.5,\n fontSize: \"xs\",\n fontWeight: \"normal\",\n },\n sm: {\n minHeight: 6,\n minWidth: 6,\n fontSize: \"xs\",\n fontWeight: \"normal\",\n },\n md: {\n minHeight: 7,\n minWidth: 7,\n fontSize: \"sm\",\n fontWeight: \"bold\",\n },\n lg: {\n minHeight: 8,\n minWidth: 8,\n fontSize: \"sm\",\n fontWeight: \"bold\",\n },\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n },\n});\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const closeButtonRecipe = defineRecipe({\n base: {\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n borderRadius: \"md\",\n backgroundColor: \"transparent\",\n color: \"darkGrey\",\n fontWeight: \"normal\",\n _hover: {\n background: \"ghost.surface.hover\",\n _disabled: {\n color: \"dimGrey\",\n },\n _active: {\n background: \"ghost.surface.active\",\n },\n },\n },\n variants: {\n size: {\n lg: {\n width: \"40px\",\n height: \"40px\",\n fontSize: \"xs\",\n },\n md: {\n width: \"32px\",\n height: \"32px\",\n fontSize: \"0.75rem\",\n },\n sm: {\n width: \"24px\",\n height: \"24px\",\n fontSize: \"0.625rem\",\n },\n },\n },\n});\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const linkRecipe = defineRecipe({\n base: {\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n transitionTimingFunction: \"ease-out\",\n cursor: \"pointer\",\n backgroundImage: \"linear-gradient(currentColor, currentColor)\",\n backgroundSize: \"100% 1px\",\n backgroundPosition: \"0 100%\",\n backgroundRepeat: \"no-repeat\",\n borderRadius: \"none\",\n paddingX: \"2px\",\n paddingY: \"0\",\n color: \"inherit\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"0\",\n position: \"relative\",\n boxDecorationBreak: \"clone\",\n textUnderlineOffset: \"0\",\n\n \"&:focus, &:focus-visible, &:active, &:hover\": {\n backgroundImage: \"none\",\n backgroundSize: \"100%\",\n outline: \"none\",\n borderRadius: \"xs\",\n },\n\n \"& svg\": {\n display: \"inline-block\",\n width: \"1.125em\",\n height: \"1.125em\",\n position: \"relative\",\n bottom: \"1px\",\n scale: \"0.8\",\n marginRight: \"-2px\",\n },\n },\n variants: {\n variant: {\n primary: {\n color: \"core.text\",\n _hover: {\n color: \"text.default\",\n _active: {\n color: \"text.disabled\",\n },\n },\n },\n secondary: {\n color: \"text.hightlight\",\n padding: \"2px\",\n _hover: {\n color: \"text.hightlight\",\n _active: {\n color: \"text.disabled\",\n },\n },\n },\n },\n size: {\n xs: {\n fontSize: { base: \"mobile.xs\", sm: \"desktop.xs\" },\n },\n sm: {\n fontSize: { base: \"mobile.sm\", sm: \"desktop.sm\" },\n },\n md: {\n fontSize: { base: \"mobile.md\", sm: \"desktop.md\" },\n },\n lg: {\n fontSize: { base: \"mobile.lg\", sm: \"desktop.lg\" },\n },\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"sm\",\n },\n});\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nimport { inputRecipe } from \"./input\";\n\nexport const textareaRecipe = defineRecipe({\n className: \"spor-textarea\",\n base: {\n ...inputRecipe.base,\n paddingTop: 0,\n minHeight: \"calc(var(--label-height) + 4rem)\",\n verticalAlign: \"top\",\n appearance: \"none\",\n borderTop: \"0.8rem solid transparent\",\n \"&:focus-visible, &:not(:placeholder-shown)\": {\n borderTop: \"var(--label-height) solid transparent\",\n },\n },\n variants: {\n variant: {\n core: {\n ...inputRecipe.variants?.variant.core,\n },\n floating: {\n ...inputRecipe.variants?.variant.floating,\n },\n },\n },\n});\n","import { attachedInputsRecipe } from \"./attached-inputs\";\nimport { badgeRecipie } from \"./badge\";\nimport { buttonRecipe } from \"./button\";\nimport { closeButtonRecipe } from \"./close-button\";\nimport { codeRecipie } from \"./code\";\nimport { inputRecipe } from \"./input\";\nimport { linkRecipe } from \"./link\";\nimport { pressableCardRecipe } from \"./pressable-card\";\nimport { progressLoaderRecipe } from \"./progress-loader\";\nimport { separatorRecipe } from \"./separator\";\nimport { skeletonRecipe } from \"./skeleton\";\nimport { staticCardRecipe } from \"./static-card\";\nimport { textareaRecipe } from \"./textarea\";\n\nexport const recipes = {\n attachedInputs: attachedInputsRecipe,\n badge: badgeRecipie,\n button: buttonRecipe,\n closeButton: closeButtonRecipe,\n code: codeRecipie,\n input: inputRecipe,\n link: linkRecipe,\n pressableCard: pressableCardRecipe,\n progressLoader: progressLoaderRecipe,\n seperator: separatorRecipe,\n skeleton: skeletonRecipe,\n staticCard: staticCardRecipe,\n textarea: textareaRecipe,\n};\n","import { defineSemanticTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens/raw-tokens\";\n\nexport enum Brand {\n VyDigital = \"VyDigital\",\n VyUtvikling = \"VyUtvikling\",\n CargoNet = \"CargoNet\",\n}\n\nexport const vyDigitalColors = defineSemanticTokens.colors({\n ...tokens.color[\"vy-digital\"].color.vyDigital,\n});\n\nexport const vyUtviklingColors = defineSemanticTokens.colors({\n ...tokens.color[\"vy-utvikling\"].color.vyUtvikling,\n});\n\nexport const cargonetColors = defineSemanticTokens.colors({\n ...tokens.color.cargonet.color.cargonet,\n});\n","import { defineSemanticTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const radii = defineSemanticTokens.radii({\n none: { value: tokens.size[\"border-radius\"].none },\n xxs: { value: tokens.size[\"border-radius\"].xxs },\n xs: { value: tokens.size[\"border-radius\"].xs },\n sm: { value: tokens.size[\"border-radius\"].sm },\n md: { value: tokens.size[\"border-radius\"].md },\n lg: { value: tokens.size[\"border-radius\"].lg },\n xl: { value: tokens.size[\"border-radius\"].xl },\n \"2xl\": { value: tokens.size[\"border-radius\"][\"2xl\"] },\n round: { value: \"50%\" },\n});\n","import { defineSemanticTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const shadows = defineSemanticTokens.shadows({\n none: {\n value: \"none\",\n },\n sm: {\n value: tokens.depth.shadow.sm.value,\n },\n md: {\n value: tokens.depth.shadow.md.value,\n },\n lg: {\n value: tokens.depth.shadow.lg.value,\n },\n});\n","import { Brand } from \"../brand\";\nimport { cargonetColors, vyDigitalColors, vyUtviklingColors } from \"./colors\";\nimport { radii } from \"./radii\";\nimport { shadows } from \"./shadows\";\n\nconst baseSemanticTokens = {\n shadows,\n radii,\n};\n\nexport const semanticTokens = {\n [Brand.VyUtvikling]: {\n ...baseSemanticTokens,\n colors: vyUtviklingColors,\n },\n [Brand.CargoNet]: {\n ...baseSemanticTokens,\n colors: cargonetColors,\n },\n [Brand.VyDigital]: {\n ...baseSemanticTokens,\n colors: vyDigitalColors,\n },\n};\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { accordionAnatomy } from \"./anatomy\";\n\nexport const accordionSlotRecipe = defineSlotRecipe({\n className: \"spor-accordion\",\n slots: accordionAnatomy.keys(),\n base: {\n root: {\n borderRadius: \"sm\",\n },\n item: {\n borderRadius: \"sm\",\n overflowAnchor: \"none\",\n },\n itemTrigger: {\n borderRadius: \"sm\",\n display: \"flex\",\n justifyContent: \"space-between\",\n color: \"core.text\",\n textAlign: \"left\",\n width: \"full\",\n alignItems: \"center\",\n fontSize: [\"mobile.sm\", null, \"desktop.sm\"],\n fontFamily: \"body\",\n fontWeight: \"bold\",\n outlineOffset: \"-2px\",\n paddingX: [2, null, 3],\n paddingY: [1, null, 1.5],\n minHeight: [6, null, 7],\n cursor: \"pointer\",\n _disabled: {\n pointerEvents: \"none\",\n opacity: 0.4,\n },\n },\n itemContent: {\n borderBottomRadius: \"sm\",\n fontSize: [\"mobile.sm\", null, \"desktop.sm\"],\n color: \"text\",\n height: \"auto\",\n overflow: \"hidden\",\n _open: {\n animationName: \"expand-height, fade-in\",\n animationDuration: \"moderate\",\n },\n _closed: {\n animationName: \"collapse-height, fade-out\",\n animationDuration: \"moderate\",\n },\n },\n itemBody: {\n paddingY: 2,\n paddingX: [2, null, 3],\n },\n itemIndicator: {\n transition: \"rotate 0.2s\",\n transformOrigin: \"center\",\n\n _open: {\n rotate: \"180deg\",\n },\n _icon: {\n width: \"1.2em\",\n height: \"1.2em\",\n },\n },\n },\n variants: {\n variant: {\n ghost: {\n item: {\n outline: \"none\",\n },\n itemTrigger: {\n \"&:hover\": {\n background: \"ghost.surface.hover\",\n },\n \"&:active\": {\n backgroundColor: \"ghost.surface.active\",\n },\n },\n },\n core: {\n item: {\n outline: \"solid\",\n outlineWidth: tokens.size.stroke.sm,\n outlineColor: \"core.outline\",\n },\n itemTrigger: {\n _expanded: {\n borderBottomRadius: \"none\",\n },\n \"&:hover\": {\n outlineWidth: tokens.size.stroke.md,\n outlineColor: \"core.outline\",\n outline: \"2px solid\",\n\n outlineOffset: 0,\n },\n \"&:active\": {\n backgroundColor: \"core.surface.active\",\n outlineWidth: tokens.size.stroke.sm,\n outline: \"none\",\n },\n },\n },\n floating: {\n item: {\n outline: \"1px solid\",\n outlineWidth: tokens.size.stroke.sm,\n boxShadow: \"sm\",\n outlineColor: \"floating.outline\",\n },\n itemTrigger: {\n _expanded: {\n borderBottomRadius: \"none\",\n },\n \"&:hover\": {\n outlineWidth: tokens.size.stroke.md,\n outline: \"1px solid\",\n outlineColor: \"floating.outline.hover\",\n\n outlineOffset: 1,\n },\n \"&:active\": {\n backgroundColor: \"floating.surface.active\",\n outlineWidth: tokens.size.stroke.sm,\n outline: \"none\",\n },\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { alertAnatomy } from \"./anatomy\";\n\nconst createVariant = (variant: string) => ({\n root: {\n borderColor: `alert.${variant}.outline`,\n background: `alert.${variant}.surface`,\n },\n description: {\n color: `alert.${variant}.text.secondary`,\n },\n title: {\n color: `alert.${variant}.text`,\n },\n closeButton: {\n color: `alert.${variant}.text`,\n _hover: {\n bg: `alert.${variant}.surface.hover`,\n _active: {\n bg: `alert.${variant}.surface.active`,\n },\n },\n },\n});\n\nexport const alertSlotRecipe = defineSlotRecipe({\n className: \"spor-alert\",\n slots: alertAnatomy.keys(),\n base: {\n root: {\n borderRadius: \"sm\",\n padding: 2,\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n position: \"relative\",\n textStyle: \"sm\",\n border: \"sm\",\n },\n description: {\n color: \"text\",\n },\n content: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"2\",\n alignItems: \"flex-start\",\n },\n title: {\n fontWeight: \"bold\",\n },\n closeButton: {},\n },\n variants: {\n variant: {\n important: createVariant(\"important\"),\n alt: createVariant(\"alt\"),\n error: createVariant(\"error\"),\n success: createVariant(\"success\"),\n info: createVariant(\"info\"),\n neutral: createVariant(\"neutral\"),\n \"error-secondary\": createVariant(\"error-secondary\"),\n service: createVariant(\"service\"),\n },\n },\n defaultVariants: {\n variant: \"info\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { alertExpandableAnatomy } from \"./anatomy\";\n\nexport const alertExpandableSlotRecipe = defineSlotRecipe({\n className: \"spor-alert-expandable\",\n slots: alertExpandableAnatomy.keys(),\n base: {\n itemTrigger: {\n paddingX: \"2 !important\",\n _expanded: {\n borderBottomRadius: \"none\",\n },\n },\n itemContent: {\n fontSize: \"xs !important\",\n paddingTop: \"1 !important\",\n },\n root: {\n border: \"sm\",\n },\n },\n variants: {\n variant: {\n important: {\n itemContent: {\n color: \"alert.important.text.secondary\",\n },\n itemTrigger: {\n \"&:hover\": {\n bg: \"alert.important.surface.hover\",\n outline: \"1px solid\",\n outlineColor: \"alert.important.outline.hover\",\n outlineOffset: \"0px\",\n },\n \"&:active\": {\n bg: \"alert.important.surface.active\",\n },\n },\n root: {\n borderColor: \"alert.important.outline\",\n bg: \"alert.important.surface\",\n },\n title: {\n color: \"alert.important.text\",\n },\n },\n success: {\n itemContent: {\n color: \"alert.success.text.secondary\",\n },\n itemTrigger: {\n \"&:hover\": {\n bg: \"alert.success.surface.hover\",\n outline: \"1px solid\",\n outlineOffset: \"0px\",\n outlineColor: \"alert.success.outline.hover\",\n \"&:active\": {\n bg: \"alert.success.surface.active\",\n },\n },\n },\n root: {\n borderColor: \"alert.success.outline\",\n bg: \"alert.success.surface\",\n },\n title: {\n color: \"alert.success.text\",\n },\n },\n alt: {\n itemContent: {\n color: \"alert.alt.text.secondary\",\n },\n itemTrigger: {\n \"&:hover\": {\n bg: \"alert.alt.surface.hover\",\n outlineOffset: \"0px\",\n outline: \"1px solid\",\n outlineColor: \"alert.alt.outline.hover\",\n \"&:active\": {\n bg: \"alert.alt.surface.active\",\n },\n },\n },\n root: {\n borderColor: \"alert.alt.outline\",\n bg: \"alert.alt.surface\",\n },\n title: {\n color: \"alert.alt.text\",\n },\n },\n info: {\n itemContent: {\n color: \"alert.info.text.secondary\",\n },\n itemTrigger: {\n \"&:hover\": {\n bg: \"alert.info.surface.hover\",\n outlineOffset: \"0px\",\n outline: \"1px solid\",\n outlineColor: \"alert.info.outline.hover\",\n \"&:active\": {\n bg: \"alert.info.surface.active\",\n },\n },\n },\n root: {\n borderColor: \"alert.info.outline\",\n bg: \"alert.info.surface\",\n },\n title: {\n color: \"alert.info.text\",\n },\n },\n error: {\n itemContent: {\n color: \"alert.error.text.secondary\",\n },\n itemTrigger: {\n \"&:hover\": {\n bg: \"alert.error.surface.hover\",\n outlineOffset: \"0px\",\n outline: \"1px solid\",\n outlineColor: \"alert.error.outline.hover\",\n \"&:active\": {\n bg: \"alert.error.surface.active\",\n },\n },\n },\n root: {\n borderColor: \"alert.error.outline\",\n bg: \"alert.error.surface\",\n },\n title: {\n color: \"alert.error.text\",\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { alertServiceAnatomy } from \"./anatomy\";\n\nexport const alertServiceSlotRecipe = defineSlotRecipe({\n className: \"spor-service-alert\",\n slots: alertServiceAnatomy.keys(),\n base: {\n root: {\n fontSize: \"inherit\",\n transitionProperty: \"outline, border-radius\",\n transitionDuration: \"fast\",\n borderTopRadius: \"none\",\n borderBottomRadius: \"md\",\n backgroundColor: \"alert.service.surface\",\n outline: \"1px solid\",\n outlineColor: \"alert.service.outline\",\n color: \"text.inverted\",\n boxShadow: \"sm\",\n },\n itemTrigger: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n padding: [2, null, null, 2],\n borderBottomRadius: \"md\",\n borderTopRadius: \"none\",\n width: \"full\",\n color: \"text.inverted\",\n \"&:hover\": {\n backgroundColor: \"alert.service.surface.hover\",\n },\n \"&:active\": {\n backgroundColor: \"alert.service.surface.active\",\n },\n\n _icon: {\n color: \"darkGrey\",\n },\n },\n itemTriggerTitle: {\n fontSize: [\"xs\", null, null, \"sm\"],\n },\n notificationText: {\n fontWeight: \"400\",\n fontSize: [\"2xs\", null, null, \"xs\"],\n textWrap: \"nowrap\",\n },\n itemBody: {\n paddingInline: 2,\n paddingBottom: [\"0.5\", null, null, \"1\"],\n color: \"text.inverted\",\n \"& > p\": {\n gap: 2,\n width: \"full\",\n justifyContent: \"center\",\n borderBottom: \"1px dashed\",\n borderColor: \"outline.inverted\",\n paddingBottom: \"3\",\n paddingTop: \"2\",\n _last: {\n borderBottom: \"none\",\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { breadcrumbAnatomy } from \"./anatomy\";\n\nexport const breadcrumbSlotRecipe = defineSlotRecipe({\n slots: breadcrumbAnatomy.keys(),\n base: {\n list: {\n display: \"inline-flex\",\n flexWrap: \"wrap\",\n gap: 1,\n alignItems: \"center\",\n },\n link: {\n cursor: \"pointer\",\n padding: 0.5,\n borderRadius: \"xs\",\n },\n currentLink: {\n borderRadius: \"xs\",\n cursor: \"default\",\n },\n separator: {\n \"& svg\": {\n color: \"icon.disabled\",\n },\n },\n },\n\n variants: {\n variant: {\n core: {\n link: {\n _hover: {\n outlineColor: \"core.outline.hover\",\n outlineWidth: tokens.size.stroke.md,\n outlineStyle: \"solid\",\n _active: {\n backgroundColor: \"core.surface.active\",\n outline: \"none\",\n },\n },\n },\n },\n ghost: {\n link: {\n _hover: {\n backgroundColor: \"ghost.surface.hover\",\n _active: {\n backgroundColor: \"ghost.surface.active\",\n },\n },\n },\n },\n },\n },\n\n defaultVariants: {\n variant: \"core\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { checkboxAnatomy } from \"./anatomy\";\n\nexport const checkboxSlotRecipe = defineSlotRecipe({\n className: \"spor-checkbox\",\n slots: checkboxAnatomy.keys(),\n base: {\n root: {\n display: \"flex\",\n gap: 1.5,\n _hover: {\n \"& > input:enabled:not([aria-invalid]) + .spor-checkbox__control\": {\n borderColor: \"core.outline.hover\",\n },\n \"& > input:enabled:checked:not([aria-invalid]) + .spor-checkbox__control\":\n {\n background: \"brand.surface.hover\",\n },\n },\n },\n indicator: {\n width: \"100%\",\n height: \"100%\",\n borderColor: \"white\",\n marginTop: -1,\n transform: \"scale(1)\",\n opacity: 0,\n _checked: {\n opacity: 1,\n transition: \"opacity 300ms cubic-bezier(0.65, 0.25, 0.56, 0.96)\",\n },\n },\n control: {\n width: 4,\n height: 4,\n transitionProperty: \"background, border-color\",\n transitionDuration: \"moderate\",\n border: \"2px solid\",\n borderColor: \"core.outline\",\n borderRadius: \"xs\",\n\n _checked: {\n color: \"brand.icon\",\n borderColor: \"brand.surface\",\n background: \"brand.surface\",\n _focus: {\n borderColor: \"brand.surface.active\",\n },\n\n _disabled: {\n background: \"surface.disabled\",\n color: \"text.disabled\",\n borderColor: \"currentColor\",\n },\n\n _invalid: {\n backgroundColor: \"brightRed\",\n borderColor: \"brightRed\",\n },\n },\n _disabled: {\n // borderColor: coreText(\"disabled\").color,\n borderColor: \"text.disabled\",\n },\n _invalid: {\n borderColor: \"outline.error\",\n },\n _focus: {\n outlineStyle: \"solid\",\n outlineColor: \"outline.focus\",\n outlineOffset: tokens.size.stroke.md,\n outlineWidth: tokens.size.stroke.md,\n borderColor: \"core.outline\",\n borderWidth: tokens.size.stroke.md,\n },\n },\n label: {\n userSelect: \"none\",\n _disabled: { opacity: 0.4 },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { checkboxCardAnatomy } from \"./anatomy\";\n\nexport const choiceChipSlotRecipe = defineSlotRecipe({\n slots: checkboxCardAnatomy.keys(),\n className: \"chakra-checkbox-card\",\n base: {\n root: {\n display: \"inline-flex\",\n alignItems: \"center\",\n boxAlign: \"center\",\n fontSize: \"xs\",\n cursor: \"pointer\",\n transitionProperty: \"all\",\n borderRadius: \"xl\",\n transitionDuration: \"fast\",\n paddingInlineStart: \"2\",\n paddingInlineEnd: \"2\",\n\n outline: \"1px solid\",\n outlineColor: \"base.outline\",\n _checked: {\n backgroundColor: \"brand.surface\",\n borderRadius: \"sm\",\n outline: \"none\",\n color: \"brand.text\",\n _hover: {\n backgroundColor: \"brand.surface.hover\",\n _active: {\n backgroundColor: \"brand.surface.active\",\n },\n },\n },\n\n _focusVisible: {\n outline: \"2px solid\",\n outlineColor: \"outline.focus\",\n outlineOffset: \"1px\",\n },\n\n _disabled: {\n pointerEvents: \"none\",\n boxShadow: \"none\",\n backgroundColor: \"surface.disabled\",\n color: \"text.disabled\",\n outline: \"none\",\n\n _hover: {\n backgroundColor: \"core.surface.disabled\",\n boxShadow: \"none\",\n color: \"core.text.disabled\",\n },\n _checked: {\n cursor: \"not-allowed\",\n boxShadow: \"none\",\n color: \"core.text.disabled\",\n backgroundColor: \"core.surface.disabled\",\n _hover: {\n backgroundColor: \"core.surface.disabled\",\n boxShadow: \"none\",\n color: \"core.text.disabled\",\n },\n },\n },\n },\n\n label: {\n display: \"flex\",\n alignItems: \"center\",\n\n fontSize: \"xs\",\n },\n },\n\n variants: {\n size: {\n xs: {\n root: {\n _checked: {\n borderRadius: \"0.563rem\",\n },\n height: 5,\n paddingX: 1.5,\n },\n },\n sm: {\n root: {\n _checked: {\n borderRadius: \"sm\",\n },\n height: 6,\n paddingX: 2,\n },\n },\n md: {\n root: {\n _checked: {\n borderRadius: \"sm\",\n },\n height: 7,\n paddingX: 2,\n },\n },\n lg: {\n root: {\n _checked: {\n borderRadius: \"md\",\n },\n height: 8,\n paddingX: 3,\n },\n },\n },\n\n variant: {\n core: {\n root: {\n color: \"core.text\",\n outlineColor: \"core.outline\",\n\n _hover: {\n outline: \"2px solid\",\n outlineColor: \"core.outline.hover\",\n\n _active: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n backgroundColor: \"core.surface.active\",\n },\n },\n },\n },\n accent: {\n root: {\n backgroundColor: \"accent.surface\",\n color: \"accent.text\",\n outline: \"none\",\n\n _hover: {\n backgroundColor: \"accent.surface.hover\",\n\n _active: {\n backgroundColor: \"accent.surface.active\",\n },\n },\n },\n },\n floating: {\n root: {\n backgroundColor: \"floating.surface\",\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n color: \"floating.text\",\n\n boxShadow: \"sm\",\n _hover: {\n backgroundColor: \"floating.surface.hover\",\n outline: \"1px solid\",\n outlineColor: \"floating.outline.hover\",\n\n _active: {\n backgroundColor: \"floating.surface.active\",\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n },\n },\n },\n },\n },\n chipType: {\n icon: {},\n choice: {},\n filter: {},\n },\n },\n\n defaultVariants: {\n size: \"md\",\n variant: \"core\",\n chipType: \"choice\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { dialogAnatomy } from \"./anatomy\";\n\nexport const dialogSlotRecipe = defineSlotRecipe({\n slots: dialogAnatomy.keys(),\n className: \"spor-dialog\",\n base: {\n backdrop: {\n background: \"blackAlpha.500\",\n position: \"fixed\",\n left: 0,\n top: 0,\n width: \"100vw\",\n height: \"100dvh\",\n zIndex: \"modal\",\n _open: {\n animationName: \"fade-in\",\n animationDuration: \"slow\",\n },\n _closed: {\n animationName: \"fade-out\",\n animationDuration: \"moderate\",\n },\n },\n positioner: {\n display: \"flex\",\n width: \"100vw\",\n height: \"100dvh\",\n position: \"fixed\",\n left: 0,\n top: 0,\n \"--dialog-z-index\": \"zIndex.modal\",\n zIndex: \"modal\",\n justifyContent: \"center\",\n overscrollBehaviorY: \"none\",\n },\n content: {\n display: \"flex\",\n backgroundColor: \"bg\",\n flexDirection: \"column\",\n position: \"relative\",\n width: \"full\",\n outline: 0,\n borderRadius: \"lg\",\n marginY: \"3.75rem\",\n textStyle: \"sm\",\n boxShadow: \"lg\",\n _open: {\n animationDuration: \"moderate\",\n },\n _closed: {\n animationDuration: \"faster\",\n },\n },\n header: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n flex: 0,\n paddingX: \"6\",\n paddingTop: \"6\",\n paddingBottom: \"2\",\n },\n body: {\n flex: \"1\",\n paddingX: \"6\",\n paddingTop: \"2\",\n paddingBottom: \"4\",\n fontSize: [\"xs\", null, null, \"sm\"],\n },\n footer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n gap: \"3\",\n paddingX: \"6\",\n paddingTop: \"2\",\n paddingBottom: \"4\",\n },\n title: {\n fontSize: [\"md\", null, null, \"lg\"],\n fontFamily: \"heading\",\n fontWeight: \"medium\",\n },\n closeTrigger: {\n position: \"absolute\",\n top: \"2\",\n insetEnd: \"2\",\n \"& svg\": {\n color: \"icon\",\n },\n },\n },\n\n variants: {\n placement: {\n center: {\n positioner: {\n alignItems: \"center\",\n },\n content: {\n marginX: \"auto\",\n },\n },\n top: {\n positioner: {\n alignItems: \"flex-start\",\n },\n content: {\n marginX: \"auto\",\n },\n },\n bottom: {\n positioner: {\n alignItems: \"flex-end\",\n },\n content: {\n marginX: \"auto\",\n },\n },\n },\n\n scrollBehavior: {\n inside: {\n positioner: {\n overflow: \"hidden\",\n },\n content: {\n maxHeight: \"calc(100% - 7.5rem)\",\n },\n body: {\n overflow: \"auto\",\n },\n },\n outside: {\n positioner: {\n overflow: \"auto\",\n pointerEvents: \"auto\",\n },\n },\n },\n\n size: {\n xs: {\n content: {\n maxWidth: \"sm\",\n },\n },\n sm: {\n content: {\n maxWidth: \"md\",\n },\n },\n md: {\n content: {\n maxWidth: \"lg\",\n },\n },\n lg: {\n content: {\n maxWidth: \"2xl\",\n },\n },\n xl: {\n content: {\n maxWidth: \"4xl\",\n },\n },\n cover: {\n positioner: {\n padding: \"10\",\n },\n content: {\n width: \"100%\",\n height: \"100%\",\n \"--dialog-margin\": \"0\",\n },\n },\n },\n\n motionPreset: {\n scale: {\n content: {\n _open: { animationName: \"scale-in, fade-in\" },\n _closed: { animationName: \"scale-out, fade-out\" },\n },\n },\n \"slide-in-bottom\": {\n content: {\n _open: { animationName: \"slide-from-bottom, fade-in\" },\n _closed: { animationName: \"slide-to-bottom, fade-out\" },\n },\n },\n \"slide-in-top\": {\n content: {\n _open: { animationName: \"slide-from-top, fade-in\" },\n _closed: { animationName: \"slide-to-top, fade-out\" },\n },\n },\n \"slide-in-left\": {\n content: {\n _open: { animationName: \"slide-from-left, fade-in\" },\n _closed: { animationName: \"slide-to-left, fade-out\" },\n },\n },\n \"slide-in-right\": {\n content: {\n _open: { animationName: \"slide-from-right, fade-in\" },\n _closed: { animationName: \"slide-to-right, fade-out\" },\n },\n },\n none: {},\n },\n },\n defaultVariants: {\n size: \"md\",\n scrollBehavior: \"outside\",\n placement: \"top\",\n motionPreset: \"scale\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { drawerAnatomy } from \"./anatomy\";\n\nexport const drawerSlotRecipe = defineSlotRecipe({\n slots: drawerAnatomy.keys(),\n className: \"spor-drawer\",\n base: {\n backdrop: {\n bg: \"blackAlpha.500\",\n position: \"fixed\",\n insetInlineStart: 0,\n top: 0,\n width: \"100vw\",\n height: \"100dvh\",\n zIndex: \"modal\",\n _open: {\n animationName: \"fade-in\",\n animationDuration: \"slow\",\n },\n _closed: {\n animationName: \"fade-out\",\n animationDuration: \"slow\",\n },\n },\n positioner: {\n display: \"flex\",\n width: \"100vw\",\n height: \"100dvh\",\n position: \"fixed\",\n insetInlineStart: 0,\n top: 0,\n zIndex: \"modal\",\n overscrollBehaviorY: \"none\",\n },\n content: {\n display: \"flex\",\n flexDirection: \"column\",\n background: \"bg\",\n position: \"relative\",\n width: \"100%\",\n outline: 0,\n zIndex: \"modal\",\n maxHeight: \"100dvh\",\n color: \"inherit\",\n boxShadow: \"lg\",\n minHeight: [\"50vh\", null, null, \"auto\"],\n _open: {\n animationDuration: \"slowest\",\n animationTimingFunction: \"ease-in-smooth\",\n },\n _closed: {\n animationDuration: \"slower\",\n animationTimingFunction: \"ease-in-smooth\",\n },\n },\n header: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingX: \"5\",\n paddingBottom: \"1\",\n },\n body: {\n paddingX: \"5\",\n paddingY: [\"1\", null, null, \"2\"],\n flex: \"1\",\n overflow: \"auto\",\n fontSize: [\"xs\", null, null, \"sm\"],\n minHeight: [\"12\", null, null, \"auto\"],\n },\n footer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n gap: \"3\",\n paddingX: \"5\",\n paddingTop: \"2\",\n },\n title: {\n fontSize: [\"sm\", null, null, \"md\"],\n fontWeight: \"semibold\",\n textAlign: \"left\",\n },\n closeTrigger: {\n position: \"absolute\",\n top: \"2\",\n insetEnd: \"2\",\n },\n },\n variants: {\n size: {\n xs: {\n content: {\n width: \"15rem\",\n },\n },\n sm: {\n content: {\n width: \"25rem\",\n },\n },\n md: {\n content: {\n width: \"40rem\",\n },\n },\n lg: {\n content: {\n width: \"56rem\",\n },\n },\n xl: {\n content: {\n width: \"68rem\",\n },\n },\n full: {\n content: {\n width: \"100vw\",\n height: \"100vh\",\n borderRadius: \"0 !important\",\n paddingBottom: \"4\",\n },\n closeTrigger: {\n position: \"relative\",\n },\n title: {\n textAlign: \"center\",\n },\n },\n },\n\n placement: {\n start: {\n positioner: {\n justifyContent: \"flex-start\",\n },\n content: {\n paddingTop: \"4\",\n _open: {\n animationName: {\n base: \"slide-from-left-full, fade-in\",\n _rtl: \"slide-from-right-full, fade-in\",\n },\n },\n _closed: {\n animationName: {\n base: \"slide-to-left-full, fade-out\",\n _rtl: \"slide-to-right-full, fade-out\",\n },\n },\n },\n },\n\n end: {\n positioner: {\n justifyContent: \"flex-end\",\n },\n content: {\n paddingTop: \"4\",\n _open: {\n animationName: {\n base: \"slide-from-right-full, fade-in\",\n _rtl: \"slide-from-left-full, fade-in\",\n },\n },\n _closed: {\n animationName: {\n base: \"slide-to-right-full, fade-out\",\n _rtl: \"slide-to-right-full, fade-out\",\n },\n },\n },\n },\n\n top: {\n positioner: {\n alignItems: \"flex-start\",\n },\n content: {\n maxW: \"100%\",\n marginX: \"auto\",\n paddingTop: \"4\",\n borderBottomRadius: \"lg\",\n _open: { animationName: \"slide-from-top-full, fade-in\" },\n _closed: { animationName: \"slide-to-top-full, fade-out\" },\n },\n },\n\n bottom: {\n positioner: {\n alignItems: \"flex-end\",\n },\n content: {\n maxW: \"100%\",\n marginX: \"auto\",\n paddingBottom: \"4\",\n borderTopRadius: \"lg\",\n _open: { animationName: \"slide-from-bottom-full, fade-in\" },\n _closed: { animationName: \"slide-to-bottom-full, fade-out\" },\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { fieldAnatomy } from \"./anatomy\";\n\nexport const fieldSlotRecipe = defineSlotRecipe({\n className: \"spor-field\",\n slots: fieldAnatomy.keys(),\n base: {\n root: {\n display: \"flex\",\n width: \"100%\",\n position: \"relative\",\n flexDirection: \"column\",\n },\n requiredIndicator: {\n marginStart: 1,\n color: \"brightRed\",\n },\n helperText: {\n marginTop: 2,\n color: \"text.tertiary\",\n lineHeight: \"normal\",\n fontSize: \"sm\",\n },\n errorText: {\n borderRadius: \"xs\",\n backgroundColor: \"lightRed\",\n color: \"darkGrey\",\n paddingX: 1.5,\n paddingY: 1,\n textStyle: \"xs\",\n width: \"fit-content\",\n position: \"absolute\",\n bottom: -5,\n left: 3,\n zIndex: \"dropdown\",\n maxWidth: \"50ch\",\n _after: {\n content: \"''\",\n position: \"absolute\",\n marginTop: \"-0.45em\",\n left: \"1em\",\n width: 0,\n height: 0,\n transform: \"rotate(45deg)\",\n borderLeft: \"0.5em solid transparent\",\n borderRight: \"0.5em solid transparent\",\n borderBottom: \"0.5em solid\",\n borderColor: \"lightRed\",\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { floatingActionButtonAnatomy } from \"./anatomy\";\n\nexport const floatingActionButtonSlotRecipe = defineSlotRecipe({\n slots: floatingActionButtonAnatomy.keys(),\n className: \"spor-floating-action-button\",\n base: {\n root: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n paddingY: 2,\n paddingX: 2,\n cursor: \"pointer\",\n overflowX: \"hidden\",\n whiteSpace: \"nowrap\",\n borderRadius: \"xl\",\n boxShadow: \"md\",\n transitionDuration: \"fast\",\n transitionProperty: \"common\",\n position: \"fixed\",\n zIndex: \"dropdown\",\n _focus: {\n outlineOffset: tokens.size.stroke.lg,\n outlineColor: \"outline.focus\",\n },\n _disabled: {\n backgroundColor: \"surface.disabled\",\n color: \"text.disabled\",\n pointerEvents: \"none\",\n },\n _open: {\n animation: \"expand-width 300ms ease-out\",\n },\n _closed: {\n animation: \"collapse-width 300ms ease-out\",\n },\n },\n text: {\n display: \"flex\",\n flex: \"none\",\n alignItems: \"center\",\n fontWeight: \"bold\",\n textStyle: \"sm\",\n marginRight: 1,\n _open: {\n animation: \"fade-in 250ms ease-out\",\n },\n _closed: {\n animation: \"fade-out 250ms ease-out\",\n },\n },\n },\n variants: {\n variant: {\n brand: {\n root: {\n backgroundColor: \"brand.surface\",\n color: \"brand.text\",\n _hover: {\n backgroundColor: \"brand.surface.hover\",\n _active: {\n backgroundColor: \"brand.surface.active\",\n },\n },\n },\n },\n core: {\n root: {\n backgroundColor: \"transparent\",\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n color: \"core.text\",\n _hover: {\n backgroundColor: \"transparent\",\n outline: \"2px solid\",\n outlineColor: \"core.outline.light\",\n _active: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n backgroundColor: \"core.surface.active\",\n },\n },\n },\n },\n accent: {\n root: {\n backgroundColor: \"accent.surface\",\n color: \"accent.text\",\n _hover: {\n backgroundColor: \"accent.surface.hover\",\n color: \"accent.text\",\n _active: {\n backgroundColor: \"accent.surface.active\",\n },\n },\n },\n },\n },\n placement: {\n \"top left\": {\n root: {\n top: \"1rem\",\n left: \"1rem\",\n },\n },\n \"top right\": {\n root: {\n top: \"1rem\",\n right: \"1rem\",\n },\n },\n \"bottom left\": {\n root: {\n bottom: \"1rem\",\n left: \"1rem\",\n },\n },\n \"bottom right\": {\n root: {\n bottom: \"1rem\",\n right: \"1rem\",\n },\n },\n },\n },\n defaultVariants: {\n variant: \"brand\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { infoTagAnatomy } from \"./anatomy\";\nimport { travelTagSlotRecipe } from \"./travel-tag\";\n\nexport const infoTagSlotRecipe = defineSlotRecipe({\n slots: infoTagAnatomy.keys(),\n className: \"spor-info-tag\",\n base: {\n ...travelTagSlotRecipe.base,\n iconContainer: {},\n textContainer: {\n color: \"text\",\n },\n container: {\n display: \"flex\",\n position: \"relative\",\n alignItems: \"center\",\n },\n title: {\n fontWeight: \"bold\",\n },\n description: {\n fontWeight: \"normal\",\n },\n },\n variants: {\n variant: {\n walk: {},\n ferry: {},\n subway: {},\n tram: {},\n \"local-train\": {},\n \"region-train\": {},\n \"region-express-train\": {},\n \"long-distance-train\": {},\n \"airport-express-train\": {},\n \"vy-bus\": {},\n \"local-bus\": {},\n },\n size: {\n ...travelTagSlotRecipe.variants?.size,\n sm: {\n ...travelTagSlotRecipe.variants?.size!.sm,\n iconContainer: {\n borderRadius: \"0.375rem\",\n },\n },\n md: {\n ...travelTagSlotRecipe.variants?.size!.md,\n iconContainer: {\n borderRadius: \"0.375rem\",\n },\n },\n lg: {\n ...travelTagSlotRecipe.variants?.size!.lg,\n iconContainer: {\n borderRadius: \"sm\",\n },\n },\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { travelTagAnatomy } from \"./anatomy\";\n\nexport const travelTagSlotRecipe = defineSlotRecipe({\n slots: travelTagAnatomy.keys(),\n className: \"spor-travel-tag\",\n base: {\n container: {\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n padding: 0.5,\n width: \"fit-content\",\n transitionDuration: \"fast\",\n transitionProperty: \"common\",\n \"button&, a&\": {\n boxShadow: \"sm\",\n _hover: {\n boxShadow: \"md\",\n },\n _active: {\n opacity: 0.5,\n boxShadow: \"none\",\n },\n },\n },\n textContainer: {\n color: \"darkGrey\",\n paddingRight: 0.5,\n whiteSpace: \"nowrap\",\n },\n title: {\n fontWeight: \"bold\",\n color: \"brand.text.inverted\",\n \"[aria-disabled=true] &\": {\n color: \"text.disabled\",\n },\n },\n description: {\n fontWeight: \"normal\",\n \"[aria-disabled=true] &\": {\n color: \"text.disabled\",\n },\n },\n deviationIcon: {\n position: \"absolute\",\n top: \"0\",\n right: \"0\",\n transform: \"translate(50%, -50%)\",\n zIndex: \"docked\",\n },\n },\n variants: {\n deviationLevel: {\n critical: {\n container: {\n border: \"1px solid\",\n borderColor: \"error.text\",\n },\n deviationIcon: {\n color: \"brightRed\",\n },\n },\n major: {\n container: {\n border: \"1px solid\",\n borderColor: \"golden\",\n },\n },\n minor: {},\n info: {\n deviationIcon: {\n color: \"ocean\",\n },\n },\n none: {},\n },\n variant: {\n \"local-train\": {\n container: {\n backgroundColor: \"linjetag.lokaltogLight\",\n },\n },\n \"region-train\": {\n container: {\n backgroundColor: \"linjetag.regiontogLight\",\n },\n },\n \"region-express-train\": {\n container: {\n backgroundColor: \"linjetag.regionEkspressLight\",\n },\n },\n \"long-distance-train\": {\n container: {\n backgroundColor: \"linjetag.fjerntogLight\",\n },\n },\n \"airport-express-train\": {\n container: {\n backgroundColor: \"linjetag.flytogLight\",\n },\n },\n \"vy-bus\": {\n container: {\n backgroundColor: \"linjetag.vyBussLight\",\n },\n },\n \"local-bus\": {\n container: {\n backgroundColor: \"linjetag.lokalbussLight\",\n },\n },\n ferry: {\n container: {\n backgroundColor: \"linjetag.fergeLight\",\n },\n },\n subway: {\n container: {\n backgroundColor: \"linjetag.tbaneLight\",\n },\n },\n tram: {\n container: {\n backgroundColor: \"linjetag.trikkLight\",\n },\n },\n \"alt-transport\": {\n container: {\n backgroundColor: \"linjetag.altTransportLight\",\n },\n },\n walk: {\n textContainer: {\n position: \"absolute\",\n left: \"1.3rem\",\n bottom: 0,\n },\n title: {\n fontSize: \"mobile.xs\",\n fontWeight: \"normal\",\n color: \"text\",\n },\n description: {\n display: \"none\",\n },\n },\n },\n size: {\n sm: {\n container: {\n borderRadius: \"sm\",\n },\n iconContainer: {\n borderRadius: \"xs\",\n },\n textContainer: {\n marginLeft: 1,\n fontSize: \"mobile.sm\",\n },\n },\n md: {\n container: {\n borderRadius: \"sm\",\n },\n iconContainer: {\n borderRadius: \"0.5625rem\", // 9px\n },\n textContainer: {\n marginLeft: 1.5,\n fontSize: \"mobile.sm\",\n },\n },\n lg: {\n container: {\n borderRadius: \"sm\",\n },\n iconContainer: {\n borderRadius: \"0.5625rem\", // 9px\n },\n textContainer: {\n marginLeft: 2,\n fontSize: \"mobile.md\",\n },\n },\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { linjetagAnatomy } from \"./anatomy\";\n\nexport const lineIconSlotRecipe = defineSlotRecipe({\n slots: linjetagAnatomy.keys(),\n className: \"spor-line-icon\",\n base: {\n iconContainer: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n \"[aria-disabled=true] &\": {\n backgroundColor: \"surface.disabled\",\n },\n },\n icon: {\n color: \"white\",\n \"[aria-disabled=true] &\": {\n color: \"icon.disabled\",\n },\n },\n title: {\n color: \"darkGrey\",\n \"[aria-disabled=true] &\": {\n color: \"text.disabled\",\n },\n },\n },\n variants: {\n variant: {\n \"local-train\": {\n iconContainer: {\n backgroundColor: \"linjetag.lokaltog\",\n },\n },\n \"region-train\": {\n iconContainer: {\n backgroundColor: \"linjetag.regiontog\",\n },\n },\n \"region-express-train\": {\n iconContainer: {\n backgroundColor: \"linjetag.regionEkspress\",\n },\n },\n \"long-distance-train\": {\n iconContainer: {\n backgroundColor: \"linjetag.fjerntog\",\n },\n },\n \"airport-express-train\": {\n iconContainer: {\n backgroundColor: \"linjetag.flytog\",\n },\n },\n \"vy-bus\": {\n iconContainer: {\n backgroundColor: \"linjetag.vyBuss\",\n },\n },\n \"local-bus\": {\n iconContainer: {\n backgroundColor: \"linjetag.lokalbuss\",\n },\n },\n ferry: {\n iconContainer: {\n backgroundColor: \"linjetag.ferge\",\n },\n },\n subway: {\n iconContainer: {\n backgroundColor: \"linjetag.tbane\",\n },\n },\n tram: {\n iconContainer: {\n backgroundColor: \"linjetag.trikk\",\n },\n },\n \"alt-transport\": {\n iconContainer: {\n backgroundColor: \"linjetag.altTransport\",\n },\n icon: {\n color: \"darkGrey\",\n \"[aria-disabled=true] &\": {\n color: \"white\",\n },\n },\n },\n walk: {\n title: {\n color: \"text\",\n },\n icon: {\n color: \"linjetag.walkLight\",\n \"[aria-disabled=true] &\": {\n color: \"icon.disabled\",\n },\n },\n _disabled: {\n icon: {\n color: \"text.disabled\",\n },\n title: {\n color: \"text.disabled\",\n },\n },\n },\n custom: {\n iconContainer: {\n _disabled: {\n backgroundColor: \"surface.disabled\",\n },\n },\n },\n },\n size: {\n sm: {\n iconContainer: {\n borderRadius: \"0.5625rem\",\n },\n },\n md: {\n iconContainer: {\n borderRadius: \"0.5625rem\",\n },\n },\n lg: {\n iconContainer: {\n borderRadius: \"sm\",\n },\n },\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { listAnatomy } from \"./anatomy\";\n\nexport const listSlotRecipe = defineSlotRecipe({\n slots: listAnatomy.keys(),\n className: \"spor-list\",\n base: {\n item: {\n fontFamily: \"body\",\n whiteSpace: \"normal\",\n fontSize: \"inherit\",\n marginLeft: \"2\",\n _marker: {\n display: \"inline-block\",\n },\n },\n icon: {\n display: \"inline-block\",\n },\n },\n variants: {\n variant: {\n marker: {\n root: {\n listStyle: \"revert\",\n },\n item: {\n _marker: {\n color: \"inherit\",\n },\n },\n },\n\n plain: {\n item: {\n display: \"block\",\n },\n },\n },\n },\n\n defaultVariants: {\n variant: \"marker\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { listBoxAnatomy } from \"./anatomy\";\n\nexport const listBoxSlotRecipe = defineSlotRecipe({\n slots: listBoxAnatomy.keys(),\n className: \"spor-listbox\",\n base: {\n root: {\n backgroundColor: \"surface\",\n boxShadow: \"sm\",\n overflowY: \"auto\",\n maxHeight: \"50vh\",\n width: \"100%\",\n listStyle: \"none\",\n paddingTop: 2,\n borderBottomRadius: \"md\",\n borderWidth: 1,\n zIndex: \"dropdown\",\n },\n item: {\n paddingX: 2,\n paddingY: 1,\n marginY: 1,\n marginX: 1,\n borderRadius: \"sm\",\n color: \"ghost.text\",\n cursor: \"pointer\",\n listStyle: \"none\",\n _active: {\n backgroundColor: \"ghost.surface.active\",\n },\n\n _hover: {\n backgroundColor: \"accent.surface\",\n color: \"accent.text\",\n },\n _selected: {\n backgroundColor: \"ghost.surface.active\",\n },\n _focus: {\n outlineColor: \"outline.focus\",\n },\n },\n label: {},\n description: {\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n color: \"ghost.text\",\n \"[aria-selected='true'] &\": {\n color: \"ghost.text\",\n },\n },\n },\n variants: {\n variant: {\n core: {\n root: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n },\n floating: {\n root: {\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n },\n },\n },\n },\n defaultVariants: {\n variant: \"core\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { mediaControllerAnatomy } from \"./anatomy\";\n\nexport const mediaControllerSlotRecipe = defineSlotRecipe({\n slots: mediaControllerAnatomy.keys(),\n className: \"spor-media-controller-button\",\n base: {\n root: {\n fontSize: 30,\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n borderRadius: \"50%\",\n appearance: \"none\",\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n display: \"flex\",\n padding: 1,\n alignSelf: \"center\",\n color: \"brand.surface\",\n outlineOffset: \"2px\",\n },\n icon: {\n flex: \"0 0 auto\",\n display: \"block\",\n },\n },\n variants: {\n variant: {\n play: {\n root: {\n padding: 0,\n color: \"brand.text\",\n backgroundColor: \"brand.surface\",\n _hover: {\n color: \"brand.text\",\n backgroundColor: \"brand.surface.hover\",\n _active: {\n color: \"brand.text\",\n backgroundColor: \"brand.surface.active\",\n },\n },\n _disabled: {\n pointerEvents: \"none\",\n color: \"icon.disabled\",\n backgroundColor: \"surface.disabled\",\n },\n },\n },\n jumpSkip: {\n root: {\n _hover: {\n backgroundColor: \"ghost.surface.hover\",\n _active: {\n backgroundColor: \"ghost.surface.active\",\n },\n },\n _disabled: {\n pointerEvents: \"none\",\n backgroundColor: \"surface.disabled\",\n color: \"text.disabled\",\n },\n },\n },\n },\n size: {\n sm: {\n root: {\n fontSize: 42,\n },\n },\n lg: {\n root: {\n fontSize: 60,\n },\n icon: {\n transform: \"scale(1.55)\",\n },\n },\n },\n },\n compoundVariants: [\n {\n variant: \"play\",\n size: \"sm\",\n css: {\n root: {\n fontSize: 24,\n width: \"2.625rem\",\n height: \"2.625rem\",\n },\n },\n },\n {\n variant: \"play\",\n size: \"lg\",\n css: {\n root: {\n fontSize: 38,\n width: \"3.75rem\",\n height: \"3.75rem\",\n },\n icon: {\n transform: \"scale(1.55)\",\n },\n },\n },\n {\n variant: \"jumpSkip\",\n size: \"sm\",\n css: {\n root: {\n fontSize: 24,\n },\n },\n },\n {\n variant: \"jumpSkip\",\n size: \"lg\",\n css: {\n root: {\n fontSize: 38,\n },\n icon: {\n margin: 1,\n transform: \"scale(1.4)\",\n },\n },\n },\n ],\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { paginationAnatomy } from \"./anatomy\";\n\nexport const paginationSlotRecipe = defineSlotRecipe({\n slots: paginationAnatomy.keys(),\n className: \"spor-pagination\",\n base: {\n item: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"5\",\n width: \"5\",\n fontSize: \"xs\",\n borderRadius: \"xl\",\n color: \"core.text\",\n cursor: \"pointer\",\n _hover: {\n background: \"ghost.surface.hover\",\n _active: {\n background: \"ghost.surface.active\",\n },\n },\n _selected: {\n cursor: \"default\",\n fontWeight: \"bold\",\n backgroundColor: \"core.surface.active\",\n },\n },\n list: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: [\"0.5\", null, null, \"1\"],\n listStyle: \"none\",\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { popoverAnatomy } from \"./anatomy\";\n\nexport const popoverSlotRecipe = defineSlotRecipe({\n className: \"spor-popover\",\n slots: popoverAnatomy.keys(),\n base: {\n content: {\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"row-reverse\",\n gap: \"0.625rem\",\n padding: \"0.563rem 0.75rem\",\n\n textStyle: \"sm\",\n bg: \"surface.tertiary\",\n boxShadow: \"lg\",\n borderRadius: \"sm\",\n zIndex: \"popover\",\n outline: \"0\",\n\n transformOrigin: \"var(--transform-origin)\",\n maxHeight: \"var(--available-height)\",\n _open: {\n animationStyle: \"scale-fade-in\",\n animationDuration: \"fast\",\n },\n _closed: {\n animationStyle: \"scale-fade-out\",\n animationDuration: \"faster\",\n },\n },\n body: {\n color: \"text.inverted\",\n\n alignItems: \"center\",\n borderRadius: \"sm\",\n zIndex: \"inherit\",\n maxWidth: \"20em\",\n },\n arrow: {\n \"--arrow-background\": \"colors.surface.tertiary\",\n \"--arrow-size\": \"6px\",\n },\n },\n variants: {\n size: {\n sm: {\n body: {\n maxWidth: \"8rem\",\n minWidth: \"8rem\",\n },\n },\n md: {\n body: {\n maxWidth: \"13rem\",\n minWidth: \"13rem\",\n },\n content: {\n padding: \"0.875rem 0.75rem 1.125rem 1.125rem\",\n },\n },\n lg: {\n body: {\n maxWidth: \"26rem\",\n minWidth: \"26rem\",\n },\n content: {\n padding: \"0.875rem 0.75rem 1.125rem 1.125rem\",\n },\n },\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { progressBarAnotomy } from \"./anatomy\";\n\nexport const progressBarRecipe = defineSlotRecipe({\n slots: progressBarAnotomy.keys(),\n base: {\n container: {\n minWidth: \"100px\",\n },\n background: {\n display: \"flex\",\n backgroundColor: \"accent.surface.hover\",\n borderRadius: \"sm\",\n boxPack: \"start\",\n justifyContent: \"flex-start\",\n marginX: \"auto\",\n },\n\n disabledBackground: {\n backgroundColor: \"icon.disabled\",\n borderRadius: \"sm\",\n },\n progress: {\n backgroundColor: \"brand.surface.active\",\n borderRadius: \"sm\",\n maxWidth: \"100%\",\n transition: \"width .2s ease-out\",\n },\n\n description: {\n display: \"flex\",\n justifyContent: \"center\",\n textAlign: \"center\",\n marginTop: 2,\n marginInline: \"auto\",\n fontWeight: \"bold\",\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nexport const progressIndicatorRecipe = defineSlotRecipe({\n slots: [\"root\", \"container\", \"progressDot\", \"circle\"],\n base: {\n root: {},\n container: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n justifyContent: [\"space-between\", \"center\"],\n },\n progressDot: {\n height: 1,\n width: 1,\n fill: \"icon.disabled\",\n \"&[aria-current='step']\": {\n fill: \"brand.surface\",\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { radioAnatomy } from \"./anatomy\";\n\nexport const radioGroupSlotRecipe = defineSlotRecipe({\n className: \"spor-radio\",\n slots: radioAnatomy.keys(),\n base: {\n root: {\n display: \"flex\",\n gap: 2,\n },\n item: {\n display: \"flex\",\n alignItems: \"center\",\n position: \"relative\",\n gap: \"1.5\",\n cursor: \"pointer\",\n _disabled: {\n cursor: \"disabled\",\n },\n },\n label: {\n userSelect: \"none\",\n _disabled: {\n color: \"text.disabled\",\n },\n },\n itemText: {\n _disabled: {\n color: \"text.disabled\",\n },\n },\n itemControl: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n verticalAlign: \"top\",\n borderWidth: \"2px\",\n borderColor: \"core.outline\",\n borderRadius: \"xl\",\n width: 4,\n height: 4,\n\n _checked: {\n borderColor: \"brand.surface\",\n },\n _hover: {\n borderColor: \"brand.surface.hover\",\n \"& .dot\": {\n backgroundColor: \"brand.surface.hover\",\n },\n },\n\n _disabled: {\n pointerEvents: \"none\",\n backgroundColor: \"surface.disabled\",\n borderColor: \"outline.disabled\",\n \"& .dot\": {\n backgroundColor: \"outline.disabled\",\n },\n },\n \"& .dot\": {\n height: \"full\",\n width: \"full\",\n borderRadius: \"xl\",\n backgroundColor: \"brand.surface\",\n scale: \"0.5\",\n },\n },\n },\n variants: {\n orientation: {\n vertical: {\n root: {\n flexDirection: \"column\",\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { radioCardAnatomy } from \"./anatomy\";\n\nexport const radioCardSlotRecipe = defineSlotRecipe({\n className: \"spor-radio-card\",\n slots: radioCardAnatomy.keys(),\n base: {\n item: {\n flex: 1,\n overflow: \"hidden\",\n fontSize: \"inherit\",\n display: \"block\",\n cursor: \"pointer\",\n borderRadius: \"sm\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n\n _focusVisible: {\n outlineWidth: \"2px\",\n outlineColor: \"outline.focus\",\n outlineStyle: \"solid\",\n outlineOffset: \"1px\",\n },\n\n _disabled: {\n outline: \"none\",\n pointerEvents: \"none\",\n background: \"surface.disabled\",\n color: \"text.disabled\",\n },\n },\n label: {\n userSelect: \"none\",\n _disabled: { opacity: 0.4 },\n fontWeight: \"bold\",\n fontSize: \"inherit\",\n },\n },\n variants: {\n variant: {\n core: {\n item: {\n outlineColor: \"core.outline\",\n outlineWidth: tokens.size.stroke.sm,\n outlineStyle: \"solid\",\n backgroundColor: \"core.surface\",\n\n _hover: {\n outlineColor: \"core.outline.hover\",\n outlineWidth: tokens.size.stroke.md,\n outlineStyle: \"solid\",\n _active: {\n backgroundColor: \"core.surface.active\",\n outlineWidth: tokens.size.stroke.sm,\n },\n },\n _checked: {\n outlineColor: \"outline.focus\",\n outlineWidth: tokens.size.stroke.md,\n outlineStyle: \"solid\",\n backgroundColor: \"core.surface.active\",\n _focusVisible: {\n outlineStyle: \"double\",\n outlineWidth: `calc(3 * ${tokens.size.stroke.md})`, // space for double outline\n },\n },\n },\n },\n floating: {\n item: {\n boxShadow: \"0px 1px 3px 0px var(--shadow-color)\",\n shadowColor: \"surface.disabled\",\n\n border: \"sm\",\n borderColor: \"floating.outline\",\n\n background: \"floating.surface\",\n _hover: {\n background: \"floating.surface.hover\",\n\n borderColor: \"floating.outline.hover\",\n\n boxShadow: \"0px 2px 6px 0px var(--shadow-color)\",\n _active: {\n background: \"floating.surface.active\",\n borderColor: \"floating.outline.active\",\n boxShadow: \"none\",\n },\n },\n _checked: {\n outlineColor: \"outline.focus\",\n outlineWidth: tokens.size.stroke.md,\n outlineStyle: \"solid\",\n backgroundColor: \"core.surface.active\",\n\n _focusVisible: {\n outlineStyle: \"double\",\n outlineWidth: `calc(3 * ${tokens.size.stroke.md})`, // space for double outline\n },\n },\n },\n },\n },\n },\n defaultVariants: {\n variant: \"core\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { selectAnatomy } from \"./anatomy\";\n\nexport const selectSlotRecipe = defineSlotRecipe({\n slots: selectAnatomy.keys(),\n className: \"spor-select\",\n base: {\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n position: \"relative\",\n cursor: \"pointer\",\n zIndex: \"dropdown\",\n },\n label: {\n fontSize: [\"mobile.sm\", \"desktop.sm\"],\n top: 0,\n left: 3,\n zIndex: 0,\n position: \"absolute\",\n color: \"text\",\n marginY: 2,\n\n _selected: {\n transform: [\"scale(0.825) translateY(-10px)\"],\n },\n\n transitionProperty: \"transform\",\n transitionDuration: \"fast\",\n transformOrigin: \"top left\",\n transitionDelay: \"3ms\",\n pointerEvents: \"none\",\n },\n trigger: {\n display: \"flex\",\n appearance: \"none\",\n width: \"100%\",\n height: 8,\n color: \"text\",\n paddingY: 1.5,\n paddingX: 3,\n\n justifyContent: \"space-between\",\n alignItems: \"center\",\n fontSize: \"mobile.md\",\n borderRadius: \"sm\",\n cursor: \"pointer\",\n\n _open: {\n \"& + div\": {\n transform: \"rotate(180deg)\",\n },\n },\n },\n indicatorGroup: {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"1\",\n position: \"absolute\",\n right: \"0\",\n top: \"0\",\n bottom: \"0\",\n paddingX: 2,\n\n pointerEvents: \"none\",\n },\n indicator: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: {\n base: \"text\",\n _disabled: \"text.disabled\",\n _invalid: \"text.secondary\",\n },\n _icon: {\n width: 3,\n height: 3,\n },\n },\n selectContent: {\n backgroundColor: \"surface\",\n boxShadow: \"sm\",\n overflowY: \"auto\",\n maxHeight: \"50vh\",\n width: \"100%\",\n listStyle: \"none\",\n borderBottomRadius: \"sm\",\n marginTop: -1,\n\n _open: {\n animationStyle: \"slide-fade-in\",\n animationDuration: \"fast\",\n zIndex: \"popover\",\n outline: \"none\",\n },\n _closed: {\n animationStyle: \"slide-fade-out\",\n animationDuration: \"fastest\",\n },\n },\n item: {\n paddingX: 2,\n paddingY: 2,\n marginY: 1,\n marginX: 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 1,\n borderRadius: \"sm\",\n color: \"ghost.text\",\n cursor: \"pointer\",\n outline: \"none\",\n \"&[data-highlighted]:hover\": {\n outlineOffset: \"2px\",\n outline: \"2px solid\",\n outlineColor: \"outline.focus\",\n backgroundColor: \"ghost.surface.hover\",\n },\n \"&[data-highlighted]\": {\n outlineOffset: \"2px\",\n outline: \"2px solid\",\n outlineColor: \"outline.focus\",\n },\n _active: {\n backgroundColor: \"ghost.surface.active\",\n color: \"green\",\n },\n _highlighted: {\n _active: {\n color: \"text\",\n },\n },\n _hover: {\n backgroundColor: \"ghost.surface.hover\",\n outline: \"2px solid core.outline\",\n outlineOffset: \"2px\",\n },\n _selected: {\n backgroundColor: \"ghost.surface.active\",\n },\n _icon: {\n width: 3,\n height: 3,\n },\n },\n control: {\n position: \"relative\",\n borderTopRadius: \"sm\",\n borderBottomRadius: \"sm\",\n _active: {\n backgroundColor: \"transparent\",\n },\n _open: {\n borderBottomRadius: 0,\n },\n _invalid: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n },\n },\n itemText: {\n flex: \"1\",\n },\n itemGroup: {\n _first: { mt: \"0\" },\n },\n itemGroupLabel: {\n py: \"1\",\n fontWeight: \"medium\",\n },\n valueText: {},\n itemDescription: {\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n color: \"ghost.text\",\n \"[aria-selected='true'] &\": {\n color: \"ghost.text\",\n },\n },\n },\n variants: {\n variant: {\n core: {\n control: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n _hover: {\n outline: \"2px solid\",\n outlineColor: \"core.outline\",\n },\n _active: {\n backgroundColor: \"brand.surface.active\",\n },\n _disabled: {\n pointerEvents: \"none\",\n color: \"text.disabled\",\n backgroundColor: \"surface.disabled\",\n },\n },\n },\n floating: {\n control: {\n backgroundColor: {\n _light: \"bg\",\n _dark: `color-mix(in srgb, white 10%, var(--spor-colors-bg))`,\n },\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n _hover: {\n outline: \"1px solid\",\n outlineColor: \"floating.outline.hover\",\n backgroundColor: {\n _light: \"floating.surface.hover\",\n _dark: `color-mix(in srgb, white 10%, var(--spor-colors-bg))`,\n },\n },\n _active: {\n outline: \"1px solid\",\n outlineColor: \"floating.outline.active\",\n backgroundColor: \"floating.surface.active\",\n },\n },\n selectContent: {\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n },\n },\n rightSideSquare: {\n control: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n trigger: {\n _focus: {\n borderRightRadius: \"none\",\n },\n },\n },\n leftSideSquare: {\n control: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n trigger: {\n _focus: {\n borderLeftRadius: \"none\",\n },\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { stepperAnatomy } from \"./anatomy\";\n\nexport const stepperSlotRecipe = defineSlotRecipe({\n slots: stepperAnatomy.keys(),\n className: \"spor-stepper\",\n base: {\n root: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: [\"space-between\", null, \"center\"],\n minHeight: [\"3rem\", null, \"3.75rem\"],\n overflowX: \"auto\",\n width: \"100%\",\n \"& svg\": {\n color: {\n _light: \"blackAlpha.700\",\n _dark: \"whiteAlpha.700\",\n },\n },\n },\n container: {\n paddingX: [2, null, null, 0],\n maxWidth: \"container.lg\",\n marginX: \"auto\",\n width: \"100%\",\n },\n innerContainer: {\n overflow: \"hidden\",\n display: [\"flex\", null, \"none\"],\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 3,\n },\n title: {\n overflow: \"hidden\",\n fontWeight: \"bold\",\n WebkitLineClamp: 2,\n display: \"-webkit-box\",\n textAlign: \"center\",\n maxWidth: \"80%\",\n },\n stepContainer: {\n display: \"flex\",\n alignItems: \"center\",\n },\n stepTitle: {\n textStyle: \"sm\",\n whiteSpace: \"nowrap\",\n },\n },\n variants: {\n variant: {\n core: {\n root: {\n backgroundColor: \"transparent\",\n },\n },\n accent: {\n root: {\n backgroundColor: \"accent.bg\",\n },\n stepButton: {\n color: {\n _light: \"blackAlpha.900\",\n _dark: \"whiteAlpha.900\",\n },\n _disabled: {\n color: \"core.text\",\n },\n _currentStep: {\n color: \"accent.text\",\n },\n _hover: {\n backgroundColor: \"accent.surface.hover\",\n _disabled: {\n backgroundColor: \"transparent\",\n },\n },\n },\n backButton: {\n _hover: {\n backgroundColor: \"brand.surface.hover\",\n },\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { switchAnatomy } from \"./anatomy\";\n\nexport const switchSlotRecipe = defineSlotRecipe({\n slots: switchAnatomy.keys(),\n className: \"spor-switch\",\n base: {\n root: {\n display: \"inline-flex\",\n gap: \"2.5\",\n alignItems: \"center\",\n position: \"relative\",\n verticalAlign: \"middle\",\n \"--switch-diff\": \"calc(var(--switch-width) - var(--switch-height))\",\n \"--switch-x\": {\n base: \"var(--switch-diff)\",\n _rtl: \"calc(var(--switch-diff) * -1)\",\n },\n },\n thumb: {\n position: \"absolute\",\n transitionProperty: \"translate\",\n transitionDuration: \"fast\",\n borderRadius: \"2xl\",\n display: \"flex\",\n flexShrink: 0,\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"var(--switch-height)\",\n height: \"var(--switch-height)\",\n backgroundColor: \"core.icon\",\n\n _disabled: {\n backgroundColor: \"icon.disabled\",\n _checked: {\n backgroundColor: \"icon.disabled\",\n },\n },\n _checked: {\n translate: \"var(--switch-x) 0\",\n backgroundColor: \"brand.icon\",\n },\n },\n\n label: {\n display: \"block\",\n textAlign: \"start\",\n marginEnd: 3,\n opacity: 1,\n bottom: 4,\n _disabled: {\n opacity: \"0.5\",\n },\n },\n control: {\n boxSizing: \"content-box\",\n padding: 0.5,\n\n display: \"inline-flex\",\n gap: 1.5,\n flexShrink: 0,\n justifyContent: \"flex-start\",\n cursor: \"switch\",\n borderRadius: \"xl\",\n position: \"relative\",\n width: \"var(--switch-width)\",\n height: \"var(--switch-height)\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n outline: \"1px solid\",\n outlineColor: \"core.outline.default\",\n backgroundColor: \"core.background\",\n _hover: {\n outline: \"2px solid\",\n outlineColor: \"core.outline.hover\",\n _checked: {\n outlineColor: \"transparent\",\n backgroundColor: \"brand.surface.hover\",\n },\n },\n\n _focusVisible: {\n outlineWidth: \"2px\",\n outlineColor: \"outline.focus\",\n outlineStyle: \"solid\",\n },\n\n _checked: {\n backgroundColor: \"brand.surface\",\n _focusVisible: {\n outlineStyle: \"double\",\n outlineWidth: `calc(3 * ${tokens.size.stroke.md})`, // space for double outline\n },\n },\n _disabled: {\n pointerEvents: \"none\",\n backgroundColor: \"core.disabled\",\n outlineColor: \"outline.disabled\",\n\n _checked: {\n backgroundColor: \"icon.disabled\",\n outlineColor: \"transparent\",\n },\n },\n _invalid: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n outlineOffset: \"2px\",\n },\n },\n },\n variants: {\n size: {\n sm: {\n root: {\n \"--switch-width\": \"3.3rem\",\n \"--switch-height\": \"1.5rem\",\n },\n control: {\n borderRadius: \"lg\",\n padding: \"0.12rem\",\n },\n },\n md: {\n root: {\n \"--switch-width\": \"4.1rem\",\n \"--switch-height\": \"1.8rem\",\n },\n control: {\n borderRadius: \"xl\",\n padding: 0.5,\n },\n },\n lg: {\n root: {\n \"--switch-width\": \"4.8rem\",\n \"--switch-height\": \"2.25rem\",\n },\n control: {\n borderRadius: \"2xl\",\n padding: 0.5,\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { tabsAnatomy } from \"./anatomy\";\n\nexport const tabsSlotRecipe = defineSlotRecipe({\n slots: tabsAnatomy.keys(),\n className: \"spor-tabs\",\n base: {\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n list: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 0.5,\n borderRadius: \"xl\",\n width: \"fit-content\",\n },\n trigger: {\n display: \"flex\",\n cursor: \"pointer\",\n justifyContent: \"center\",\n alignItems: \"center\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n height: \"100%\",\n whiteSpace: \"nowrap\",\n borderRadius: \"xl\",\n },\n },\n variants: {\n fitted: {\n true: {\n list: {\n display: \"flex\",\n width: \"auto\",\n },\n trigger: {\n flex: 1,\n textAlign: \"center\",\n justifyContent: \"center\",\n },\n },\n },\n justify: {\n start: {\n list: {\n justifyContent: \"flex-start\",\n },\n },\n center: {\n list: {\n justifyContent: \"center\",\n },\n },\n end: {\n list: {\n justifyContent: \"flex-end\",\n },\n },\n },\n variant: {\n core: {\n list: {\n backgroundColor: \"core.surface\",\n color: \"core.text\",\n border: \"sm\",\n },\n trigger: {\n color: \"core.text\",\n border: \"md\",\n borderColor: \"transparent\",\n _hover: {\n outline: \"2px solid\",\n outlineColor: \"core.surface.hover\",\n outlineOffset: \"-2px\",\n },\n _active: {\n backgroundColor: \"brand.surface.active\",\n color: \"brand.text\",\n outline: \"none\",\n },\n _selected: {\n backgroundColor: \"brand.surface\",\n color: \"brand.text\",\n },\n _disabled: {\n backgroundColor: \"surface.disabled\",\n color: \"brand.text.disabled\",\n },\n },\n },\n accent: {\n list: {\n backgroundColor: \"accent.bg\",\n color: \"accent.text\",\n },\n trigger: {\n color: \"accent.text\",\n _disabled: {\n backgroundColor: \"surface.disabled\",\n color: \"accent.text.disabled\",\n },\n _hover: {\n backgroundColor: \"accent.surface.hover\",\n _active: {\n backgroundColor: \"brand.surface.active\",\n color: \"brand.text\",\n },\n },\n _selected: {\n backgroundColor: \"brand.surface\",\n color: \"brand.text\",\n _hover: {\n backgroundColor: \"brand.surface.hover\",\n color: \"brand.text\",\n },\n },\n },\n },\n },\n size: {\n xs: {\n list: {\n height: 5,\n padding: \"0.1rem\",\n },\n trigger: {\n paddingX: 2,\n paddingY: 0,\n },\n },\n sm: {\n list: {\n height: 6,\n padding: 0.5,\n },\n trigger: {\n paddingX: 2,\n },\n },\n md: {\n list: {\n height: 7,\n padding: 0.5,\n },\n trigger: {\n fontWeight: \"bold\",\n paddingX: 2,\n },\n },\n lg: {\n list: {\n height: 8,\n padding: \"0.2rem\",\n },\n trigger: {\n fontWeight: \"bold\",\n fontSize: \"sm\",\n paddingX: 3,\n _focus: {\n border: \"md\",\n borderColor: \"accent.surface\",\n },\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { toastAnatomy } from \"./anatomy\";\n\nexport const toastSlotRecipe = defineSlotRecipe({\n slots: toastAnatomy.keys(),\n className: \"chakra-toast\",\n base: {\n root: {\n width: \"full\",\n display: \"flex\",\n position: \"relative\",\n alignItems: \"center\",\n gap: \"0.75rem\",\n padding: \"0.563rem 0.75rem\",\n translate: \"var(--x) var(--y)\",\n opacity: \"var(--opacity)\",\n willChange: \"translate, opacity, scale\",\n\n borderRadius: \"sm\",\n transition:\n \"translate 400ms, scale 400ms, opacity 400ms, height 400ms, box-shadow 200ms\",\n transitionTimingFunction: \"cubic-bezier(0.21, 1.02, 0.73, 1)\",\n _closed: {\n transition: \"translate 400ms, scale 400ms, opacity 200ms\",\n transitionTimingFunction: \"cubic-bezier(0.06, 0.71, 0.55, 1)\",\n },\n boxShadow: \"xl\",\n\n color: \"text\",\n \"&[data-type=success]\": {\n backgroundColor: \"alert.success.surface\",\n \"& svg\": {\n color: \"primaryGreen\",\n },\n },\n \"&[data-type=error]\": {\n backgroundColor: \"alert.error.surface\",\n \"& svg\": {\n color: \"brightRed\",\n },\n },\n\n \"&[data-type=info]\": {\n backgroundColor: \"alert.info.surface\",\n \"& svg\": {\n color: \"darkBlue\",\n },\n },\n },\n\n title: {\n textStyle: \"sm\",\n marginEnd: \"2\",\n },\n },\n});\n","import { accordionSlotRecipe } from \"./accordion\";\nimport { alertSlotRecipe } from \"./alert\";\nimport { alertExpandableSlotRecipe } from \"./alert-expandable\";\nimport { alertServiceSlotRecipe } from \"./alert-service\";\nimport { breadcrumbSlotRecipe } from \"./breadcrumb\";\nimport { checkboxSlotRecipe } from \"./checkbox\";\nimport { choiceChipSlotRecipe } from \"./choice-chip\";\nimport { datePickerSlotRecipe } from \"./datepicker\";\nimport { dialogSlotRecipe } from \"./dialog\";\nimport { drawerSlotRecipe } from \"./drawer\";\nimport { fieldSlotRecipe } from \"./field\";\nimport { floatingActionButtonSlotRecipe } from \"./floating-action-button\";\nimport { infoTagSlotRecipe } from \"./info-tag\";\nimport { lineIconSlotRecipe } from \"./line-icon\";\nimport { listSlotRecipe } from \"./list\";\nimport { listBoxSlotRecipe } from \"./listbox\";\nimport { mediaControllerSlotRecipe } from \"./media-controller-button\";\nimport { nativeSelectSlotRecipe } from \"./native-select\";\nimport { numericStepperRecipe } from \"./numeric-stepper\";\nimport { paginationSlotRecipe } from \"./pagination\";\nimport { popoverSlotRecipe } from \"./popover\";\nimport { progressBarRecipe } from \"./progress-bar\";\nimport { progressIndicatorRecipe } from \"./progress-indicator\";\nimport { radioGroupSlotRecipe } from \"./radio\";\nimport { radioCardSlotRecipe } from \"./radio-card\";\nimport { selectSlotRecipe } from \"./select\";\nimport { stepperSlotRecipe } from \"./stepper\";\nimport { switchSlotRecipe } from \"./switch\";\nimport { tableSlotRecipe } from \"./table\";\nimport { tabsSlotRecipe } from \"./tabs\";\nimport { toastSlotRecipe } from \"./toast\";\nimport { travelTagSlotRecipe } from \"./travel-tag\";\n\nexport const slotRecipes = {\n accordion: accordionSlotRecipe,\n alertExpandable: alertExpandableSlotRecipe,\n alertService: alertServiceSlotRecipe,\n alert: alertSlotRecipe,\n breadcrumb: breadcrumbSlotRecipe,\n checkbox: checkboxSlotRecipe,\n datePicker: datePickerSlotRecipe,\n dialog: dialogSlotRecipe,\n drawer: drawerSlotRecipe,\n field: fieldSlotRecipe,\n floatingActionButton: floatingActionButtonSlotRecipe,\n infoTag: infoTagSlotRecipe,\n lineIcon: lineIconSlotRecipe,\n list: listSlotRecipe,\n listBox: listBoxSlotRecipe,\n mediaControllerButton: mediaControllerSlotRecipe,\n nativeSelect: nativeSelectSlotRecipe,\n numericStepper: numericStepperRecipe,\n popover: popoverSlotRecipe,\n progressbar: progressBarRecipe,\n progressIndicator: progressIndicatorRecipe,\n pagination: paginationSlotRecipe,\n radioCard: radioCardSlotRecipe,\n radioGroup: radioGroupSlotRecipe,\n select: selectSlotRecipe,\n stepper: stepperSlotRecipe,\n switch: switchSlotRecipe,\n table: tableSlotRecipe,\n tabs: tabsSlotRecipe,\n travelTag: travelTagSlotRecipe,\n toast: toastSlotRecipe,\n checkboxCard: choiceChipSlotRecipe,\n};\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const animations = defineTokens.animations({\n spin: {\n value: \"spin 1s linear infinite\",\n },\n ping: {\n value: \"ping 1s cubic-bezier(0, 0, 0.2, 1) infinite\",\n },\n pulse: {\n value: \"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite\",\n },\n bounce: {\n value: \"bounce 1s infinite\",\n },\n expandWidthBounce: {\n value: \"expand-width-bounce 0.6s ease-in-out\",\n },\n collapseWidth: {\n value: \"collapse-width 0.3s ease-in-out\",\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const aspectRatios = defineTokens.aspectRatios({\n square: {\n value: \"1 / 1\",\n },\n landscape: {\n value: \"4 / 3\",\n },\n portrait: {\n value: \"3 / 4\",\n },\n wide: {\n value: \"16 / 9\",\n },\n ultrawide: {\n value: \"18 / 5\",\n },\n golden: {\n value: \"1.618 / 1\",\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const blurs = defineTokens.blurs({\n none: {\n value: \" \",\n },\n sm: {\n value: \"4px\",\n },\n md: {\n value: \"8px\",\n },\n lg: {\n value: \"12px\",\n },\n xl: {\n value: \"16px\",\n },\n \"2xl\": {\n value: \"24px\",\n },\n \"3xl\": {\n value: \"40px\",\n },\n \"4xl\": {\n value: \"64px\",\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const borders = defineTokens.borders({\n none: {\n value: \"0\",\n },\n sm: {\n value: `${tokens.size.stroke.sm} solid`,\n },\n \"sm-dashed\": {\n value: `${tokens.size.stroke.sm} dashed`,\n },\n md: {\n value: `${tokens.size.stroke.md} solid`,\n },\n \"md-dashed\": {\n value: `${tokens.size.stroke.md} dashed`,\n },\n lg: {\n value: `${tokens.size.stroke.lg} solid`,\n },\n \"lg-dashed\": {\n value: `${tokens.size.stroke.lg} dashed`,\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens/raw-tokens\";\n\nexport const colors = defineTokens.colors({\n ...tokens.color.alias.color.alias,\n ...tokens.color.palette.color.palette,\n linjetag: tokens.color.linjetag.color.linjetag,\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const cursor = defineTokens.cursor({\n button: {\n value: \"pointer\",\n },\n checkbox: {\n value: \"default\",\n },\n disabled: {\n value: \"not-allowed\",\n },\n menuitem: {\n value: \"default\",\n },\n option: {\n value: \"default\",\n },\n radio: {\n value: \"default\",\n },\n slider: {\n value: \"default\",\n },\n switch: {\n value: \"pointer\",\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const durations = defineTokens.durations({\n fastest: {\n value: \"50ms\",\n },\n faster: {\n value: \"100ms\",\n },\n fast: {\n value: \"150ms\",\n },\n moderate: {\n value: \"200ms\",\n },\n slow: {\n value: \"300ms\",\n },\n slower: {\n value: \"400ms\",\n },\n slowest: {\n value: \"500ms\",\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const easings = defineTokens.easings({\n \"ease-in\": {\n value: \"cubic-bezier(0.42, 0, 1, 1)\",\n },\n \"ease-out\": {\n value: \"cubic-bezier(0, 0, 0.58, 1)\",\n },\n \"ease-in-out\": {\n value: \"cubic-bezier(0.42, 0, 0.58, 1)\",\n },\n \"ease-in-smooth\": {\n value: \"cubic-bezier(0.32, 0.72, 0, 1)\",\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const fontSizes = defineTokens.fontSizes({\n \"2xs\": { value: tokens.size.font.xs.mobile },\n xs: { value: tokens.size.font.sm.mobile },\n sm: { value: tokens.size.font.md.mobile },\n md: { value: tokens.size.font.lg.mobile },\n lg: { value: tokens.size.font.xl.mobile },\n xl: { value: tokens.size.font.xxl.mobile },\n \"2xl\": { value: tokens.size.font.xl.desktop },\n \"3xl\": { value: tokens.size.font.xxl.desktop },\n\n mobile: {\n xs: { value: tokens.size.font.xs.mobile },\n sm: { value: tokens.size.font.sm.mobile },\n md: { value: tokens.size.font.md.mobile },\n lg: { value: tokens.size.font.lg.mobile },\n xl: { value: tokens.size.font.xl.mobile },\n xxl: { value: tokens.size.font.xxl.mobile },\n },\n desktop: {\n xs: { value: tokens.size.font.xs.desktop },\n sm: { value: tokens.size.font.sm.desktop },\n md: { value: tokens.size.font.md.desktop },\n lg: { value: tokens.size.font.lg.desktop },\n xl: { value: tokens.size.font.xl.desktop },\n xxl: { value: tokens.size.font.xxl.desktop },\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const fontWeights = defineTokens.fontWeights({\n thin: {\n value: 100,\n },\n extralight: {\n value: 200,\n },\n light: {\n value: 300,\n },\n normal: {\n value: 400,\n },\n medium: {\n value: 500,\n },\n semibold: {\n value: 600,\n },\n bold: {\n value: 700,\n },\n extrabold: {\n value: 800,\n },\n black: {\n value: 900,\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const fonts = defineTokens.fonts({\n body: { value: `${tokens.font.family.body}, arial, sans-serif` },\n heading: { value: `${tokens.font.family.heading}, arial, sans-serif` },\n mono: { value: `${tokens.font.family.monospace}, monospace` },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const letterSpacings = defineTokens.letterSpacings({\n tighter: {\n value: \"-0.05em\",\n },\n tight: {\n value: \"-0.025em\",\n },\n wide: {\n value: \"0.025em\",\n },\n wider: {\n value: \"0.05em\",\n },\n widest: {\n value: \"0.1em\",\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const lineHeights = defineTokens.lineHeights({\n shorter: {\n value: 1.25,\n },\n short: {\n value: 1.375,\n },\n moderate: {\n value: 1.5,\n },\n tall: {\n value: 1.625,\n },\n taller: {\n value: 2,\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const radii = defineTokens.radii({\n none: { value: tokens.size[\"border-radius\"].none },\n xs: { value: tokens.size[\"border-radius\"].xs },\n sm: { value: tokens.size[\"border-radius\"].sm },\n md: { value: tokens.size[\"border-radius\"].md },\n lg: { value: tokens.size[\"border-radius\"].lg },\n xl: { value: tokens.size[\"border-radius\"].xl },\n \"2xl\": { value: tokens.size[\"border-radius\"][\"2xl\"] },\n round: { value: \"50%\" },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { spacing } from \"./spacing\";\n\nexport const largeSizes = defineTokens.sizes({\n \"3xs\": { value: \"14rem\" },\n \"2xs\": { value: \"16rem\" },\n xs: { value: \"20rem\" },\n sm: { value: \"24rem\" },\n md: { value: \"28rem\" },\n lg: { value: \"32rem\" },\n xl: { value: \"36rem\" },\n \"2xl\": { value: \"42rem\" },\n \"3xl\": { value: \"48rem\" },\n \"4xl\": { value: \"56rem\" },\n \"5xl\": { value: \"64rem\" },\n \"6xl\": { value: \"72rem\" },\n \"7xl\": { value: \"80rem\" },\n \"8xl\": { value: \"90rem\" },\n});\n\nconst namedSizes = defineTokens.sizes({\n max: { value: \"max-content\" },\n min: { value: \"min-content\" },\n fit: { value: \"fit-content\" },\n prose: { value: \"60ch\" },\n full: { value: \"100%\" },\n dvh: { value: \"100dvh\" },\n svh: { value: \"100svh\" },\n lvh: { value: \"100lvh\" },\n dvw: { value: \"100dvw\" },\n svw: { value: \"100svw\" },\n lvw: { value: \"100lvw\" },\n vw: { value: \"100vw\" },\n vh: { value: \"100vh\" },\n});\n\nconst container = defineTokens.sizes({\n base: { value: 0 },\n sm: { value: tokens.size.breakpoint.sm },\n md: { value: tokens.size.breakpoint.md },\n lg: { value: tokens.size.breakpoint.lg },\n xl: { value: tokens.size.breakpoint.xl },\n});\n\nexport const sizes = {\n ...largeSizes,\n ...namedSizes,\n ...spacing,\n container,\n};\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const spacing = defineTokens.spacing({\n 0: { value: tokens.size.spacing[\"0\"] },\n 0.5: { value: tokens.size.spacing[\"0.5\"] },\n 1: { value: tokens.size.spacing[\"1\"] },\n 1.5: { value: tokens.size.spacing[\"1.5\"] },\n 2: { value: tokens.size.spacing[\"2\"] },\n 3: { value: tokens.size.spacing[\"3\"] },\n 4: { value: tokens.size.spacing[\"4\"] },\n 5: { value: tokens.size.spacing[\"5\"] },\n 6: { value: tokens.size.spacing[\"6\"] },\n 7: { value: tokens.size.spacing[\"7\"] },\n 8: { value: tokens.size.spacing[\"8\"] },\n 9: { value: tokens.size.spacing[\"9\"] },\n 10: { value: tokens.size.spacing[\"10\"] },\n 11: { value: tokens.size.spacing[\"11\"] },\n 12: { value: tokens.size.spacing[\"12\"] },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const zIndex = defineTokens.zIndex({\n hide: { value: tokens.depth[\"z-index\"].hide },\n auto: { value: \"auto\" },\n base: { value: tokens.depth[\"z-index\"].base },\n docked: { value: tokens.depth[\"z-index\"].docked },\n dropdown: { value: tokens.depth[\"z-index\"].dropdown },\n sticky: { value: tokens.depth[\"z-index\"].sticky },\n banner: { value: tokens.depth[\"z-index\"].banner },\n overlay: { value: tokens.depth[\"z-index\"].overlay },\n modal: { value: tokens.depth[\"z-index\"].modal },\n popover: { value: tokens.depth[\"z-index\"].popover },\n skipLink: { value: tokens.depth[\"z-index\"].skipLink },\n toast: { value: tokens.depth[\"z-index\"].toast },\n});\n","import { animations } from \"./animations\";\nimport { aspectRatios } from \"./aspect-ratios\";\nimport { blurs } from \"./blurs\";\nimport { borders } from \"./borders\";\nimport { colors } from \"./colors\";\nimport { cursor } from \"./cursor\";\nimport { durations } from \"./durations\";\nimport { easings } from \"./easings\";\nimport { fontSizes } from \"./font-sizes\";\nimport { fontWeights } from \"./font-weights\";\nimport { fonts } from \"./fonts\";\nimport { letterSpacings } from \"./letter-spacings\";\nimport { lineHeights } from \"./line-heights\";\nimport { radii } from \"./radii\";\nimport { sizes } from \"./sizes\";\nimport { spacing } from \"./spacing\";\nimport { zIndex } from \"./z-index\";\n\nexport const tokens = {\n aspectRatios,\n animations,\n blurs,\n borders,\n colors,\n durations,\n easings,\n fonts,\n fontSizes,\n fontWeights,\n letterSpacings,\n lineHeights,\n radii,\n spacing,\n sizes,\n zIndex,\n cursor,\n};\n","import { defineAnimationStyles } from \"@chakra-ui/react\";\n\nexport const animationStyles = defineAnimationStyles({\n \"slide-fade-in\": {\n value: {\n transformOrigin: \"var(--transform-origin)\",\n \"&[data-placement^=top]\": {\n animationName: \"slide-from-bottom, fade-in\",\n },\n \"&[data-placement^=bottom]\": {\n animationName: \"slide-from-top, fade-in\",\n },\n \"&[data-placement^=left]\": {\n animationName: \"slide-from-right, fade-in\",\n },\n \"&[data-placement^=right]\": {\n animationName: \"slide-from-left, fade-in\",\n },\n },\n },\n \"slide-fade-out\": {\n value: {\n transformOrigin: \"var(--transform-origin)\",\n \"&[data-placement^=top]\": {\n animationName: \"slide-to-bottom, fade-out\",\n },\n \"&[data-placement^=bottom]\": {\n animationName: \"slide-to-top, fade-out\",\n },\n \"&[data-placement^=left]\": {\n animationName: \"slide-to-right, fade-out\",\n },\n \"&[data-placement^=right]\": {\n animationName: \"slide-to-left, fade-out\",\n },\n },\n },\n \"scale-fade-in\": {\n value: {\n transformOrigin: \"var(--transform-origin)\",\n animationName: \"scale-in, fade-in\",\n },\n },\n \"scale-fade-out\": {\n value: {\n transformOrigin: \"var(--transform-origin)\",\n animationName: \"scale-out, fade-out\",\n },\n },\n});\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const breakpoints = {\n sm: tokens.size.breakpoint.sm,\n md: tokens.size.breakpoint.md,\n lg: tokens.size.breakpoint.lg,\n xl: tokens.size.breakpoint.xl,\n};\n","export const config = {\n preflight: true,\n cssVarsPrefix: \"spor\",\n cssVarsRoot: \":where(:root, :host)\",\n /* strictTokens: true, */ /* Should be turned on at some point */\n conditions: {\n off: \"&:is([data-state=off])\",\n on: \"&:is([data-state=on])\",\n },\n};\n","import { defineGlobalStyles } from \"@chakra-ui/react\";\n\nexport const globalCss = defineGlobalStyles({\n \"html, body\": {\n color: \"text\",\n },\n svg: {\n display: \"initial\",\n },\n\n \":is(button, [role='button'], a, input, textarea, select, video, audio):focus-visible\":\n {\n outlineWidth: \"2px !important\",\n outlineColor: \"outline.focus !important\",\n outlineStyle: \"solid !important\",\n outlineOffset: \"1px !important\",\n },\n});\n","export const keyframes = {\n spin: {\n \"0%\": {\n transform: \"rotate(0deg)\",\n },\n \"100%\": {\n transform: \"rotate(360deg)\",\n },\n },\n pulse: {\n \"50%\": {\n opacity: \"0.5\",\n },\n },\n ping: {\n \"75%, 100%\": {\n transform: \"scale(2)\",\n opacity: \"0\",\n },\n },\n bounce: {\n \"0%, 100%\": {\n transform: \"translateY(-25%)\",\n animationTimingFunction: \"cubic-bezier(0.8,0,1,1)\",\n },\n \"50%\": {\n transform: \"none\",\n animationTimingFunction: \"cubic-bezier(0,0,0.2,1)\",\n },\n },\n \"bg-position\": {\n from: {\n backgroundPosition: \"var(--animate-from, 1rem) 0\",\n },\n to: {\n backgroundPosition: \"var(--animate-to, 0) 0\",\n },\n },\n position: {\n from: {\n insetInlineStart: \"var(--animate-from-x)\",\n insetBlockStart: \"var(--animate-from-y)\",\n },\n to: {\n insetInlineStart: \"var(--animate-to-x)\",\n insetBlockStart: \"var(--animate-to-y)\",\n },\n },\n \"circular-progress\": {\n \"0%\": {\n strokeDasharray: \"1, 400\",\n strokeDashoffset: \"0\",\n },\n \"50%\": {\n strokeDasharray: \"400, 400\",\n strokeDashoffset: \"-100%\",\n },\n \"100%\": {\n strokeDasharray: \"400, 400\",\n strokeDashoffset: \"-260%\",\n },\n },\n \"expand-height\": {\n from: {\n height: \"0\",\n },\n to: {\n height: \"var(--height)\",\n },\n },\n \"collapse-height\": {\n from: {\n height: \"var(--height)\",\n },\n to: {\n height: \"0\",\n },\n },\n \"expand-width\": {\n from: {\n width: \"auto\",\n },\n to: {\n width: \"var(--width)\",\n },\n },\n \"collapse-width\": {\n from: {\n width: \"var(--width)\",\n },\n to: {\n width: \"auto\",\n },\n },\n \"fade-in\": {\n from: {\n opacity: 0,\n },\n to: {\n opacity: 1,\n },\n },\n \"fade-out\": {\n from: {\n opacity: 1,\n },\n to: {\n opacity: 0,\n },\n },\n \"slide-from-left-full\": {\n from: {\n translate: \"-100% 0\",\n },\n to: {\n translate: \"0 0\",\n },\n },\n \"slide-from-right-full\": {\n from: {\n translate: \"100% 0\",\n },\n to: {\n translate: \"0 0\",\n },\n },\n \"slide-from-top-full\": {\n from: {\n translate: \"0 -100%\",\n },\n to: {\n translate: \"0 0\",\n },\n },\n \"slide-from-bottom-full\": {\n from: {\n translate: \"0 100%\",\n },\n to: {\n translate: \"0 0\",\n },\n },\n \"slide-to-left-full\": {\n from: {\n translate: \"0 0\",\n },\n to: {\n translate: \"-100% 0\",\n },\n },\n \"slide-to-right-full\": {\n from: {\n translate: \"0 0\",\n },\n to: {\n translate: \"100% 0\",\n },\n },\n \"slide-to-top-full\": {\n from: {\n translate: \"0 0\",\n },\n to: {\n translate: \"0 -100%\",\n },\n },\n \"slide-to-bottom-full\": {\n from: {\n translate: \"0 0\",\n },\n to: {\n translate: \"0 100%\",\n },\n },\n \"slide-from-top\": {\n \"0%\": {\n translate: \"0 -0.5rem\",\n },\n to: {\n translate: \"0\",\n },\n },\n \"slide-from-bottom\": {\n \"0%\": {\n translate: \"0 0.5rem\",\n },\n to: {\n translate: \"0\",\n },\n },\n \"slide-from-left\": {\n \"0%\": {\n translate: \"-0.5rem 0\",\n },\n to: {\n translate: \"0\",\n },\n },\n \"slide-from-right\": {\n \"0%\": {\n translate: \"0.5rem 0\",\n },\n to: {\n translate: \"0\",\n },\n },\n \"slide-to-top\": {\n \"0%\": {\n translate: \"0\",\n },\n to: {\n translate: \"0 -0.5rem\",\n },\n },\n \"slide-to-bottom\": {\n \"0%\": {\n translate: \"0\",\n },\n to: {\n translate: \"0 0.5rem\",\n },\n },\n \"slide-to-left\": {\n \"0%\": {\n translate: \"0\",\n },\n to: {\n translate: \"-0.5rem 0\",\n },\n },\n \"slide-to-right\": {\n \"0%\": {\n translate: \"0\",\n },\n to: {\n translate: \"0.5rem 0\",\n },\n },\n \"scale-in\": {\n from: {\n scale: \"0.95\",\n },\n to: {\n scale: \"1\",\n },\n },\n \"scale-out\": {\n from: {\n scale: \"1\",\n },\n to: {\n scale: \"0.95\",\n },\n },\n};\n","import { defineTextStyles } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const textStyles = defineTextStyles({\n xxl: {\n value: {\n fontSize: [\n tokens.font.style.xxl[\"font-size\"].mobile,\n null,\n null,\n tokens.font.style.xxl[\"font-size\"].desktop,\n ],\n fontFamily: tokens.font.style.xxl[\"font-family\"],\n lineHeight: tokens.font.style.xxl[\"line-height\"],\n },\n },\n \"xl-display\": {\n value: {\n fontSize: [\n tokens.font.style[\"xl-display\"][\"font-size\"].mobile,\n null,\n null,\n tokens.font.style[\"xl-display\"][\"font-size\"].desktop,\n ],\n fontFamily: tokens.font.style[\"xl-display\"][\"font-family\"],\n lineHeight: tokens.font.style[\"xl-display\"][\"line-height\"],\n },\n },\n \"xl-sans\": {\n value: {\n fontSize: [\n tokens.font.style[\"xl-sans\"][\"font-size\"].mobile,\n null,\n null,\n tokens.font.style[\"xl-sans\"][\"font-size\"].desktop,\n ],\n fontFamily: tokens.font.style[\"xl-sans\"][\"font-family\"],\n lineHeight: tokens.font.style[\"xl-sans\"][\"line-height\"],\n },\n },\n lg: {\n value: {\n fontSize: [\n tokens.font.style.lg[\"font-size\"].mobile,\n null,\n null,\n tokens.font.style.lg[\"font-size\"].desktop,\n ],\n fontFamily: tokens.font.style.lg[\"font-family\"],\n lineHeight: tokens.font.style.lg[\"line-height\"],\n },\n },\n md: {\n value: {\n fontSize: [\n tokens.font.style.md[\"font-size\"].mobile,\n null,\n null,\n tokens.font.style.md[\"font-size\"].desktop,\n ],\n fontFamily: tokens.font.style.md[\"font-family\"],\n lineHeight: tokens.font.style.md[\"line-height\"],\n },\n },\n sm: {\n value: {\n fontSize: [\n tokens.font.style.sm[\"font-size\"].mobile,\n null,\n null,\n tokens.font.style.sm[\"font-size\"].desktop,\n ],\n fontFamily: tokens.font.style.sm[\"font-family\"],\n lineHeight: tokens.font.style.sm[\"line-height\"],\n },\n },\n xs: {\n value: {\n fontSize: [\n tokens.font.style.xs[\"font-size\"].mobile,\n null,\n null,\n tokens.font.style.xs[\"font-size\"].desktop,\n ],\n fontFamily: tokens.font.style.xs[\"font-family\"],\n lineHeight: tokens.font.style.xs[\"line-height\"],\n },\n },\n});\n","export type { CollapsibleRootProps } from \"@chakra-ui/react\";\nexport { Collapsible } from \"@chakra-ui/react\";\n","export * from \"./accordion\";\nexport * from \"./alert\";\nexport * from \"./breadcrumb\";\nexport * from \"./button\";\nexport * from \"./color-mode\";\nexport * from \"./datepicker\";\nexport * from \"./dialog\";\nexport * from \"./i18n\";\nexport * from \"./image\";\nexport * from \"./input\";\nexport * from \"./layout\";\nexport * from \"./linjetag\";\nexport * from \"./link\";\nexport * from \"./list\";\nexport * from \"./loader\";\nexport * from \"./logo\";\nexport * from \"./media-controller\";\nexport * from \"./nudge\";\nexport * from \"./pagination\";\nexport * from \"./popover\";\nexport * from \"./progress-indicator\";\nexport * from \"./provider\";\nexport * from \"./stepper\";\nexport * from \"./tab\";\nexport * from \"./table\";\nexport * from \"./theme\";\nexport * from \"./theme/brand\";\nexport * from \"./toast\";\nexport * from \"./transition\";\nexport * from \"./typography\";\nexport * from \"./util\";\nexport * as tokens from \"@vygruppen/spor-design-tokens\";\n"]}
1
+ {"version":3,"sources":["../src/accordion/Accordion.tsx","../src/accordion/helpers.ts","../src/accordion/Expandable.tsx","../src/alert/Alert.tsx","../src/button/Button.tsx","../src/i18n/index.tsx","../src/loader/ColorInlineLoader.tsx","../src/loader/useHydrated.tsx","../src/loader/ClientOnly.tsx","../src/loader/Lottie.tsx","../src/loader/ColorSpinner.tsx","../src/loader/ContentLoader.tsx","../src/loader/DarkFullScreenLoader.tsx","../src/loader/DarkInlineLoader.tsx","../src/loader/DarkSpinner.tsx","../src/loader/LightFullScreenLoader.tsx","../src/loader/LightInlineLoader.tsx","../src/loader/LightSpinner.tsx","../src/loader/ProgressBar.tsx","../src/loader/useRotatingLabel.tsx","../src/loader/ProgressLoader.tsx","../src/theme/recipes/progress-loader.ts","../src/loader/Skeleton.tsx","../src/theme/recipes/skeleton.ts","../src/button/ButtonGroup.tsx","../src/theme/recipes/group.ts","../src/button/Clipboard.tsx","../src/typography/Badge.tsx","../src/typography/Code.tsx","../src/theme/recipes/code.ts","../src/theme/recipes/badge.ts","../src/typography/Heading.tsx","../src/typography/Text.tsx","../src/typography/index.ts","../src/button/CloseButton.tsx","../src/button/IconButton.tsx","../src/button/FloatingActionButton.tsx","../src/alert/AlertIcon.tsx","../src/alert/ExpandableAlert.tsx","../src/alert/ServiceAlert.tsx","../src/breadcrumb/Breadcrumb.tsx","../src/color-mode/color-mode.tsx","../src/datepicker/DatePicker.tsx","../src/input/Field.tsx","../src/input/FloatingLabel.tsx","../src/input/Label.tsx","../src/theme/slot-recipes/datepicker.ts","../src/theme/slot-recipes/anatomy.ts","../src/datepicker/Calendar.tsx","../src/datepicker/CalendarGrid.tsx","../src/datepicker/CalendarCell.tsx","../src/datepicker/utils.ts","../src/datepicker/CalendarHeader.tsx","../src/datepicker/CalendarNavigationButton.tsx","../src/datepicker/CalendarTriggerButton.tsx","../src/datepicker/DateField.tsx","../src/datepicker/DateTimeSegment.tsx","../src/datepicker/StyledField.tsx","../src/datepicker/DateRangePicker.tsx","../src/datepicker/RangeCalendar.tsx","../src/datepicker/TimePicker.tsx","../src/datepicker/TimeField.tsx","../src/datepicker/index.tsx","../src/dialog/Dialog.tsx","../src/dialog/Drawer.tsx","../src/image/index.tsx","../src/input/AttachedInputs.tsx","../src/theme/recipes/attached-inputs.ts","../src/input/CardSelect.tsx","../src/input/Checkbox.tsx","../src/input/CheckboxGroup.tsx","../src/input/ChoiceChip.tsx","../src/input/Combobox.tsx","../src/input/Popover.tsx","../src/input/Fieldset.tsx","../src/input/Input.tsx","../src/theme/recipes/input.ts","../src/input/ListBox.tsx","../src/input/NativeSelect.tsx","../src/theme/slot-recipes/native-select.ts","../src/input/NumericStepper.tsx","../src/theme/slot-recipes/numeric-stepper.ts","../src/input/PasswordInput.tsx","../src/input/PhoneNumberInput.tsx","../src/input/CountryCodeSelect.tsx","../src/input/Radio.tsx","../src/input/SearchInput.tsx","../src/input/Select.tsx","../src/input/Switch.tsx","../src/input/Textarea.tsx","../src/layout/PressableCard.tsx","../src/theme/recipes/pressable-card.ts","../src/util/externals.tsx","../src/util/slugify.tsx","../src/layout/RadioCard.tsx","../src/layout/Separator.tsx","../src/theme/recipes/separator.ts","../src/layout/StaticCard.tsx","../src/theme/recipes/static-card.ts","../src/layout/index.tsx","../src/linjetag/InfoTag.tsx","../src/linjetag/LineIcon.tsx","../src/linjetag/icons.tsx","../src/linjetag/TravelTag.tsx","../src/link/TextLink.tsx","../src/list/index.tsx","../src/logo/CargonetLogo.tsx","../src/logo/VyLogo.tsx","../src/logo/VyLogoPride.tsx","../src/media-controller/JumpButton.tsx","../src/media-controller/PlayPauseButton.tsx","../src/media-controller/SkipButton.tsx","../src/nudge/Nudge.tsx","../src/pagination/Pagination.tsx","../src/popover/index.tsx","../src/progress-indicator/ProgressIndicator.tsx","../src/progress-indicator/ProgressDot.tsx","../src/provider/SporProvider.tsx","../src/theme/font-faces.ts","../src/theme/brand.ts","../src/toast/toast.tsx","../src/stepper/Stepper.tsx","../src/stepper/StepperContext.tsx","../src/stepper/StepperStep.tsx","../src/tab/Tabs.tsx","../src/table/Table.tsx","../src/theme/slot-recipes/table.ts","../src/table/index.tsx","../src/theme/index.ts","../src/theme/recipes/button.ts","../src/theme/recipes/close-button.ts","../src/theme/recipes/link.ts","../src/theme/recipes/textarea.ts","../src/theme/recipes/index.ts","../src/theme/semantic-tokens/colors.ts","../src/theme/semantic-tokens/radii.ts","../src/theme/semantic-tokens/shadows.ts","../src/theme/semantic-tokens/index.ts","../src/theme/slot-recipes/accordion.ts","../src/theme/slot-recipes/alert.ts","../src/theme/slot-recipes/alert-expandable.ts","../src/theme/slot-recipes/alert-service.ts","../src/theme/slot-recipes/breadcrumb.ts","../src/theme/slot-recipes/checkbox.ts","../src/theme/slot-recipes/choice-chip.ts","../src/theme/slot-recipes/dialog.ts","../src/theme/slot-recipes/drawer.ts","../src/theme/slot-recipes/field.ts","../src/theme/slot-recipes/floating-action-button.ts","../src/theme/slot-recipes/info-tag.ts","../src/theme/slot-recipes/travel-tag.ts","../src/theme/slot-recipes/line-icon.ts","../src/theme/slot-recipes/list.ts","../src/theme/slot-recipes/listbox.ts","../src/theme/slot-recipes/media-controller-button.ts","../src/theme/slot-recipes/pagination.ts","../src/theme/slot-recipes/popover.ts","../src/theme/slot-recipes/progress-bar.ts","../src/theme/slot-recipes/progress-indicator.ts","../src/theme/slot-recipes/radio.ts","../src/theme/slot-recipes/radio-card.ts","../src/theme/slot-recipes/select.ts","../src/theme/slot-recipes/stepper.ts","../src/theme/slot-recipes/switch.ts","../src/theme/slot-recipes/tabs.ts","../src/theme/slot-recipes/toast.ts","../src/theme/slot-recipes/index.ts","../src/theme/tokens/animations.ts","../src/theme/tokens/aspect-ratios.ts","../src/theme/tokens/blurs.ts","../src/theme/tokens/borders.ts","../src/theme/tokens/colors.ts","../src/theme/tokens/cursor.ts","../src/theme/tokens/durations.ts","../src/theme/tokens/easings.ts","../src/theme/tokens/font-sizes.ts","../src/theme/tokens/font-weights.ts","../src/theme/tokens/fonts.ts","../src/theme/tokens/letter-spacings.ts","../src/theme/tokens/line-heights.ts","../src/theme/tokens/radii.ts","../src/theme/tokens/sizes.ts","../src/theme/tokens/spacing.ts","../src/theme/tokens/z-index.ts","../src/theme/tokens/index.ts","../src/theme/tokens/animation-styles.ts","../src/theme/tokens/breakpoints.ts","../src/theme/tokens/config.ts","../src/theme/tokens/global-css.ts","../src/theme/tokens/keyframes.ts","../src/theme/tokens/text-styles.ts","../src/transition/index.ts","../src/index.tsx"],"names":["_a","_b","AccordionItemTrigger","AccordionItemContent","forwardRef","jsx","jsxs","ChakraAlert","HStack","useSlotRecipe","Box","Center","Language","texts","VisuallyHidden","spinnerLightData","useState","useEffect","Stack","React","defineRecipe","SkeletonCircle","SkeletonText","chakra","Badge","Code","Text","Heading","Icon","Accordion","Span","Flex","DropdownDownFill24Icon","ServiceFill24Icon","WarningFill24Icon","ClientOnly","IconButton","Skeleton","ColorModeButton","PopoverAnchor","useFieldContext","useId","useRef","defineStyle","Field","createCalendar","StyledField","ChakraPopover","Portal","I18nProvider","DropdownRightFill18Icon","DialogCloseTrigger","createContext","CloseFill24Icon","DrawerCloseTrigger","Group","DropdownDownFill18Icon","Fragment","useContext","defineSlotRecipe","NativeSelect","Input","Button","useControllableState","CloseOutline24Icon","CheckmarkFill18Icon","SelectItemGroup","SelectTrigger","SelectClearTrigger","SelectContent","SelectValueText","useRecipe","createListCollection","useDisclosure","Grid","GridItem","AltTransportFill24Icon","LineIcon","ErrorFill24Icon","InformationFill24Icon","TravelTag","cloneElement","ListItem","usePopoverContext","Popover","tokens","Brand","ErrorFill18Icon","InformationFill18Icon","IconComponent","ArrowLeftFill24Icon","Stepper","defineSemanticTokens","defineTokens","radii","createSystem","defineConfig"],"mappings":"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","sourcesContent":["\"use client\";\n\nimport {\n Accordion as ChakraAccordion,\n Box,\n HStack,\n Stack,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { DropdownDownFill24Icon } from \"@vygruppen/spor-icon-react\";\nimport { forwardRef } from \"react\";\n\nimport { warnAboutMismatchingIcon } from \"./helpers\";\nimport {\n AccordionItemContentProps,\n AccordionItemTriggerProps,\n AccordionProps,\n} from \"./types\";\n\n/*\n * Wraps a set of AccordionItem or AccordionItem components.\n *\n * ```tsx\n * <Accordion variant=\"ghost\">\n * <AccordionItem>\n * <AccordionItemTrigger>Is Spor easy?</AccordionItemTrigger>\n * <AccordionItemContent>Yes</AccordionItemContent>\n * </AccordionItem>\n * <AccordionItem>\n * <AccordionItemTrigger>Is Spor lovable?</AccordionItemTrigger>\n * <AccordionItemContent>Yes</AccordionItemContent>\n * </AccordionItem>\n * </Accordion>\n * ```\n *\n * If you need to have a default open item, you can use the `defaultValue` prop.\n *\n * ```tsx\n * <Accordion defaultValue={[\"a\"]}>\n * <AccordionItem value=\"a\">\n * <AccordionItemTrigger>Is Spor easy?</AccordionItemTrigger>\n * <AccordionItemContent>Yes</AccordionItemContent>\n * </AccordionItem>\n * <AccordionItem value=\"b\">\n * <AccordionItemTrigger>Is Spor lovable?</AccordionItemTrigger>\n * <AccordionItemContent>Yes</AccordionItemContent>\n * </AccordionItem>\n * </Accordion>\n * ```\n *\n * If you only have one expandable item, you can use the `<Expandable />` component instead.\n *\n * @see https://spor.vy.no/components/accordion\n */\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(\n (props, ref) => {\n const { variant = \"core\", children, gap = 2, ...rest } = props;\n const recipe = useSlotRecipe({ key: \"accordion\" });\n const styles = recipe({ variant });\n return (\n <ChakraAccordion.Root\n {...rest}\n ref={ref}\n css={styles.root}\n variant={variant}\n >\n <Stack gap={gap}>{children}</Stack>\n </ChakraAccordion.Root>\n );\n },\n);\n\nexport const AccordionItemTrigger = forwardRef<\n HTMLButtonElement,\n AccordionItemTriggerProps\n>(function AccordionItemTrigger(props, ref) {\n const {\n startElement,\n children,\n headingLevel,\n showChevron = true,\n ...rest\n } = props;\n warnAboutMismatchingIcon({ icon: startElement });\n const recipe = useSlotRecipe({ key: \"accordion\" });\n const styles = recipe();\n return (\n <Box as={headingLevel}>\n <ChakraAccordion.ItemTrigger {...rest} ref={ref} css={styles.itemTrigger}>\n <HStack flex=\"1\" gap={1} textAlign=\"start\" width=\"full\">\n {startElement && startElement}\n {children}\n </HStack>\n {showChevron && (\n <ChakraAccordion.ItemIndicator>\n <DropdownDownFill24Icon />\n </ChakraAccordion.ItemIndicator>\n )}\n </ChakraAccordion.ItemTrigger>\n </Box>\n );\n});\n\nexport const AccordionItemContent = forwardRef<\n HTMLDivElement,\n AccordionItemContentProps\n>(function AccordionItemContent(props, ref) {\n const { children } = props;\n\n const recipe = useSlotRecipe({ key: \"accordion\" });\n const styles = recipe();\n\n return (\n <ChakraAccordion.ItemContent css={styles.itemContent}>\n <ChakraAccordion.ItemBody {...props} ref={ref}>\n {children}\n </ChakraAccordion.ItemBody>\n </ChakraAccordion.ItemContent>\n );\n});\nAccordion.displayName = \"Accordion\";\n\nexport const AccordionItem = ChakraAccordion.Item;\n","type WarnAboutMismatchingIcon = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n icon: any; //See if we can fint another type for this\n};\n\nexport const warnAboutMismatchingIcon = ({\n icon,\n}: WarnAboutMismatchingIcon) => {\n if (process.env.NODE_ENV !== \"production\") {\n const displayName = icon?.type?.render?.displayName;\n if (!displayName) {\n return;\n }\n if (displayName.includes(\"Fill\")) {\n console.warn(\n `You passed a filled icon. This component requires outlined icons. You passed ${displayName}, replace it with ${displayName.replace(\n \"Fill\",\n \"Outline\",\n )}.`,\n );\n return;\n }\n if (!displayName.includes(\"24Icon\")) {\n console.warn(\n `The icon you passed was of the wrong size. You passed ${displayName}, replace it with ${displayName.replace(\n /(\\d{2})Icon/,\n \"24Icon\",\n )}.`,\n );\n }\n }\n};\n","\"use client\";\n\nimport { forwardRef } from \"react\";\n\nimport {\n Accordion,\n AccordionItem,\n AccordionItemContent,\n AccordionItemTrigger,\n} from \"./Accordion\";\nimport { warnAboutMismatchingIcon } from \"./helpers\";\nimport { ExpandableItemProps, ExpandableProps } from \"./types\";\n\n/**\n * A standalone expandable component.\n *\n * This one is great to use if you have a single expandable component by itself.\n * If you want several expandables in a row, use the `Accordion` and `ExpandableItem` components instead.\n *\n * ```tsx\n * <Expandable title=\"Click for more\" variant=\"core\">\n * <Text>MORE! 🎉</Text>\n * </Expandable>\n * ```\n */\n\nexport const Expandable = forwardRef<HTMLDivElement, ExpandableProps>(\n (props, ref) => {\n const { title, children, headingLevel, startElement, ...rest } = props;\n return (\n <Accordion {...props} ref={ref} {...rest}>\n <ExpandableItem\n title={title}\n headingLevel={headingLevel}\n startElement={startElement}\n value=\"single-expandable\"\n >\n {children}\n </ExpandableItem>\n </Accordion>\n );\n },\n);\n\n/**\n * An item in a set of Expandables. Must be wrapped in an `<Accordion>` component.\n *\n * ```tsx\n * <Accordion variant=\"ghost\">\n * <ExpandableItem value=\"a\" title=\"Is Spor easy?\" headingLevel=\"h3\">\n * Yes\n * </ExpandableItem>\n * <ExpandableItem value=\"b\" title=\"Do you love it?\" headingLevel=\"h3\">\n * 🥰\n * </ExpandableItem>\n * </Accordion>\n * ```\n *\n *\n * If you need even more control, you can put together your own expandable with the `Accordion`, `AccordionItem`, `AccordionItemTrigger`, and `AccordionItemContent` components.\n *\n * @see https://spor.vy.no/components/accordion\n */\n\nexport const ExpandableItem = (props: ExpandableItemProps) => {\n const {\n title,\n children,\n value,\n headingLevel = \"h3\",\n startElement,\n ...rest\n } = props;\n warnAboutMismatchingIcon({ icon: startElement });\n return (\n <AccordionItem value={value} {...rest}>\n <AccordionItemTrigger\n startElement={startElement}\n headingLevel={headingLevel}\n >\n {title}\n </AccordionItemTrigger>\n\n <AccordionItemContent>{children}</AccordionItemContent>\n </AccordionItem>\n );\n};\n\nExpandable.displayName = \"Expandable\";\n","\"use client\";\n\nimport {\n Alert as ChakraAlert,\n HStack,\n useDisclosure,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { IconComponent } from \"@vygruppen/spor-icon-react\";\nimport { forwardRef } from \"react\";\n\nimport { CloseButton } from \"@/button\";\n\nimport { AlertIcon } from \"./AlertIcon\";\n\nexport type AlertProps = Omit<ChakraAlert.RootProps, \"colorPalette\"> & {\n /** Whether or not to show the alert icon */\n showIndicator?: boolean;\n /** Whether or not the alert is closable */\n icon?: IconComponent;\n closable?: boolean;\n /** Callback for when the alert is closed */\n onAlertClose?: () => void;\n};\n\n/**\n *\n * Alerts are used to communicate important information to the user.\n * They can be used to inform about success, errors, warnings, or other important information.\n *\n * ```tsx\n * <Alert variant=\"info\" title=\"Information\">\n * This is an information alert\n * </Alert>\n * ```\n *\n * You may also use the closable prop to allow the user to dismiss the alert.\n *\n * ```tsx\n * <Alert variant=\"info\" title=\"Information\" closable>\n * This is an closable alert\n * </Alert>\n *\n * @see Docs https://spor.vy.no/alert\n */\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>((props, ref) => {\n const {\n title,\n showIndicator = true,\n icon,\n closable = false,\n onAlertClose,\n children,\n } = props;\n const { open, onClose } = useDisclosure({ defaultOpen: true });\n\n const handleAlertClose = () => {\n onClose();\n onAlertClose?.();\n };\n\n const recipe = useSlotRecipe({ key: \"alert\" });\n const styles = recipe({ variant: props.variant });\n\n if (!open) return null;\n return (\n <ChakraAlert.Root ref={ref} {...props}>\n <ChakraAlert.Content flexDirection={title ? \"column\" : \"row\"}>\n <HStack gap=\"1\" alignItems=\"flex-start\">\n {showIndicator && (\n <ChakraAlert.Indicator asChild>\n <AlertIcon variant={props.variant} customIcon={icon} />\n </ChakraAlert.Indicator>\n )}\n {title && (\n <ChakraAlert.Title paddingRight={closable ? 6 : 0}>\n {title}\n </ChakraAlert.Title>\n )}\n </HStack>\n {children && (\n <ChakraAlert.Description\n paddingLeft={title ? 0.5 : 0}\n paddingRight={closable ? 6 : 0}\n >\n {children}\n </ChakraAlert.Description>\n )}\n </ChakraAlert.Content>\n {closable && (\n <CloseButton\n size=\"xs\"\n position=\"absolute\"\n top=\"1.5\"\n right=\"1.5\"\n onClick={handleAlertClose}\n css={styles.closeButton}\n />\n )}\n </ChakraAlert.Root>\n );\n});\n\nAlert.displayName = \"Alert\";\n","import {\n Box,\n Button as ChakraButton,\n type ButtonProps as ChakraButtonProps,\n Center,\n Flex,\n type RecipeVariantProps,\n Span,\n} from \"@chakra-ui/react\";\nimport React, { cloneElement, forwardRef, PropsWithChildren } from \"react\";\n\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { ColorInlineLoader } from \"../loader\";\nimport { buttonRecipe } from \"../theme/recipes/button\";\n\nexport type ButtonVariantProps = RecipeVariantProps<typeof buttonRecipe>;\n\nexport type ButtonProps = Exclude<\n ChakraButtonProps,\n \"size\" | \"variant\" | \"colorPalette\"\n> &\n PropsWithChildren<ButtonVariantProps> & {\n /* Boolean value for loading state */\n loading?: boolean;\n /* You may display a different loading text */\n loadingText?: React.ReactNode;\n /* Display icon to the left */\n leftIcon?: React.ReactNode;\n /* Display icon to the right */\n rightIcon?: React.ReactNode;\n /* \"primary\" | \"secondary\" | \"tertiary\" | \"ghost\" | \"floating\". Defaults to primary. */\n variant?: \"primary\" | \"secondary\" | \"tertiary\" | \"ghost\" | \"floating\";\n /* \"lg\" | \"md\" | \"sm\" | \"xs\". Defaults to md. */\n size?: \"lg\" | \"md\" | \"sm\" | \"xs\";\n /* Link to a downloadable resource. */\n download?: string;\n /* Use this to specify a path combined with as=\"a\" */\n href?: string;\n };\n/**\n * Buttons are used to trigger actions.\n *\n * There are several button variants. You can specify which one you want with the `variant` prop. The available variants are:\n *\n * - `primary`: This is our main button. It's used for the main actions in a view, like a call to action. There should only be a single primary button in each view.\n * - `secondary`: Used for secondary actions in a view, and when you need to make several actions available at the same time.\n * - `tertiary`: Used for additional choices, like a less important secondary action.\n * - `ghost`: Used inside other interactive elements, like date pickers and input fields.\n * - `floating`: Used for floating actions, like a menu button in a menu.\n *\n * ```tsx\n * <Button variant=\"primary\" onClick={confirmOrder}>\n * Buy trip\n * </Button>\n * ```\n *\n * There are also different sizes. You can specify which one you want with the `size` prop. The available sizes are \"lg\", \"md\", \"sm\" and \"xs\".\n *\n * ```tsx\n * <Button variant=\"secondary\" size=\"sm\" onClick={cancelOrder}>\n * Cancel trip\n * </Button>\n * ```\n *\n * @see https://spor.vy.no/components/button\n */\n\nconst ButtonContent = ({\n leftIcon,\n children,\n rightIcon,\n}: PropsWithChildren<Pick<ButtonProps, \"leftIcon\" | \"rightIcon\">>) => (\n <>\n {leftIcon}\n {children}\n {rightIcon && <Span marginLeft=\"auto\">{rightIcon}</Span>}\n </>\n);\n\nconst LoadingContent = ({\n children,\n loadingText,\n}: PropsWithChildren<Pick<ButtonProps, \"size\" | \"loadingText\">>) => (\n <>\n <Flex gap=\"1\" visibility=\"hidden\">\n {children}\n </Flex>\n <Center position=\"absolute\" inset=\"1px 0\">\n <ColorInlineLoader maxWidth=\"8\" marginX={2} marginY={2} />\n {loadingText && <Box>{loadingText}</Box>}\n </Center>\n </>\n);\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n loading,\n disabled,\n loadingText,\n variant = \"primary\",\n size = \"md\",\n leftIcon,\n rightIcon,\n type = \"button\",\n children,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n\n const ariaLabel = loading\n ? String(loadingText ?? t(texts.loadingText))\n : (rest[\"aria-label\"] as string);\n\n const renderContent = () => {\n const content = rest.asChild\n ? (children as React.ReactElement).props.children\n : children;\n\n if (loading)\n return (\n <LoadingContent size={size} loadingText={loadingText}>\n <ButtonContent leftIcon={leftIcon} rightIcon={rightIcon}>\n {content}\n </ButtonContent>\n </LoadingContent>\n );\n\n return (\n <ButtonContent leftIcon={leftIcon} rightIcon={rightIcon}>\n {content}\n </ButtonContent>\n );\n };\n\n return (\n <ChakraButton\n type={type}\n ref={ref}\n aria-label={ariaLabel}\n aria-busy={loading}\n disabled={disabled || loading}\n position=\"relative\"\n variant={variant}\n size={size}\n {...rest}\n >\n {rest.asChild\n ? cloneElement(children as React.ReactElement, {\n children: renderContent(),\n })\n : renderContent()}\n </ChakraButton>\n );\n },\n);\n\nButton.displayName = \"Button\";\n\nconst texts = createTexts({\n loadingText: {\n nb: \"Laster…\",\n nn: \"Lastar…\",\n en: \"Loading…\",\n sv: \"Laddar…\",\n },\n});\n","/* eslint-disable no-irregular-whitespace */\nimport React, { createContext, useContext } from \"react\";\n\nexport enum Language {\n NorwegianBokmal = \"nb\",\n NorwegianNynorsk = \"nn\",\n Swedish = \"sv\",\n English = \"en\",\n}\n\nexport type TranslationObject = {\n [key in Language]: string | React.ReactElement;\n};\ntype TranslationFunction = (\n ...args: Array<string | number>\n) => TranslationObject;\n\ntype Translation = TranslationObject | TranslationFunction;\nexport type Translations = {\n [key: string]: Translation | Translations;\n};\n\nconst LanguageContext = createContext<Language | undefined>(undefined);\ntype LanguageProviderProps = {\n language: Language;\n children: React.ReactElement;\n};\n\n/**\n * A language provider component.\n *\n * This component should wrap your entire application. It will provide the language to all components that use it.\n *\n * This is done by the SporProvider component, so most likely, you won't need to use it directly, unless you want to use a specific language for a specific part of your application.\n *\n * ```tsx\n * import { LanguageProvider, Language } from \"@vygruppen/spor-react\";\n *\n * const App = () => {\n * return (\n * <LanguageProvider language={Language.NorwegianBokmal}>\n * <Routes />\n * </LanguageProvider>\n * );\n * }\n * ```\n *\n */\nexport function LanguageProvider({\n language,\n children,\n}: LanguageProviderProps) {\n return (\n <LanguageContext.Provider value={language}>\n {children}\n </LanguageContext.Provider>\n );\n}\n\n/**\n * Gets the language from the language context.\n *\n * @internal\n */\nfunction useLanguage() {\n const language = useContext(LanguageContext);\n if (!language) {\n throw new Error(\"Please wrap your application in a LanguageProvider\");\n }\n return language;\n}\n\n/**\n * A hook that returns translation utilities. Typically used to translate text.\n *\n * ```tsx\n * const Example = () => {\n * const { t } = useTranslation();\n * return <p>{t(texts.greeting)}</p>;\n * }\n * const texts = {\n * greeting: {\n * nb: \"Hei\",\n * nn: \"Hei\",\n * sv: \"Hej\",\n * en: \"Hello\",\n * }\n * }\n * ```\n *\n * You can also use it to fetch the current language:\n *\n * ```tsx\n * const Example = () => {\n * const { language } = useTranslation();\n * return <p>{language}</p>;\n * };\n * ```\n */\nexport function useTranslation() {\n const language = useLanguage();\n const t = (text: TranslationObject) => {\n return text[language] as string;\n };\n return { t, language } as const;\n}\n\n/** Utility function that creates type safe text objects with useTranslation\n *\n * ```tsx\n * const texts = createTexts({\n * example: {\n * nb: \"Eksempel\",\n * nn: \"Døme\",\n * sv: \"Exempel\",\n * en: \"Example\",\n * },\n * another: {\n * example: {\n * nb: <strong>Eksempel</strong>,\n * nn: <strong>Døme</strong>,\n * sv: <strong>Exempel</strong>,\n * en: <strong>Example</strong>,\n * }\n * }\n * })\n * ```\n */\nexport function createTexts<T extends Translations>(texts: T) {\n return texts;\n}\n","import { Box, BoxProps, Center, VisuallyHidden } from \"@chakra-ui/react\";\nimport { inlineLoaderColorData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\nexport type ColorInlineLoaderProps = Exclude<BoxProps, \"children\">;\n/**\n * Loading component that works well in bounded contexts, like inside a button.\n *\n * This component should only be used on light backgrounds with low saturation (e.g. white, light grey etc.). For colored backgrounds, please use the LightInlineLoader component.\n */\nexport const ColorInlineLoader = ({\n width,\n maxWidth,\n ...props\n}: ColorInlineLoaderProps) => {\n return (\n <Center role=\"status\" aria-live=\"polite\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={inlineLoaderColorData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n </Center>\n );\n};\n","\"use client\";\nimport { useEffect, useState } from \"react\";\n\n// Lifted from remix-utils\n// https://github.com/sergiodxa/remix-utils/blob/main/src/react/use-hydrated.ts\n\nlet hydrating = true;\n\n/**\n * Return a boolean indicating if the JS has been hydrated already.\n * When doing Server-Side Rendering, the result will always be false.\n * When doing Client-Side Rendering, the result will always be false on the\n * first render and true from then on. Even if a new component renders it will\n * always start with true.\n *\n * Example: Disable a button that needs JS to work.\n * ```tsx\n * let hydrated = useHydrated();\n * return (\n * <button type=\"button\" disabled={!hydrated} onClick={doSomethingCustom}>\n * Click me\n * </button>\n * );\n * ```\n */\nexport function useHydrated() {\n const [hydrated, setHydrated] = useState(() => !hydrating);\n\n useEffect(function hydrate() {\n hydrating = false;\n setHydrated(true);\n }, []);\n\n return hydrated;\n}\n","\"use client\";\nimport React, { PropsWithChildren } from \"react\";\n\nimport { useHydrated } from \"./useHydrated\";\n\ntype ClientOnlyProps = PropsWithChildren<{\n /** An optional fallback to render in place on the server */\n fallback?: React.ReactNode;\n}>;\n\n/**\n * Render the children only after the JS has loaded client-side. Use an optional\n * fallback component if the JS is not yet loaded.\n *\n * Example: Render a Chart component if JS loads, renders a simple FakeChart\n * component server-side or if there is no JS. The FakeChart can have only the\n * UI without the behavior or be a loading spinner or skeleton.\n * ```tsx\n * return (\n * <ClientOnly fallback={<FakeChart />}>\n * <Chart />\n * </ClientOnly>\n * );\n * ```\n */\nexport const ClientOnly = ({ children, fallback = null }: ClientOnlyProps) => {\n const isHydrated = useHydrated();\n\n if (!isHydrated) return fallback;\n return children;\n};\n","import ReactLottie from \"lottie-react\";\n\n/**\n * A wrapper around Lottie to make it tree-shakeable for SSR.\n */\nexport default function Lottie({ animationData }: { animationData: unknown }) {\n return <ReactLottie animationData={animationData} />;\n}\n","\"use client\";\nimport { Box, BoxProps, Center, VisuallyHidden } from \"@chakra-ui/react\";\nimport { spinnerColorData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\nexport type SpinnerProps = BoxProps;\nexport type ColorSpinnerProps = SpinnerProps;\n/** A circular spinner\n *\n * Can be used in place of a loading animation, or for reloading app state, for instance.\n *\n * ```tsx\n * <ColorSpinner width=\"64px\" height=\"64px\" />\n * ```\n *\n * You can also pass an explanatory text as `children`:\n *\n * ```tsx\n * <ColorSpinner>\n * Hold your horses\n * </ColorSpinner>\n */\nexport const ColorSpinner = ({\n children,\n width,\n maxWidth,\n ...props\n}: SpinnerProps) => {\n return (\n <Center flexDirection=\"column\" role=\"status\" aria-live=\"polite\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={spinnerColorData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n {children && (\n <Box marginTop={3} fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Center>\n );\n};\n","\"use client\";\nimport { Box, BoxProps, VisuallyHidden } from \"@chakra-ui/react\";\nimport { contentLoaderData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\nexport type ContentLoaderProps = BoxProps;\n/**\n * ContentLoader is a component that renders a loading animation.\n * It should mostly be used for loading content that is not yet available.\n */\nexport const ContentLoader = ({ children, ...props }: ContentLoaderProps) => {\n return (\n <Box role=\"status\" aria-live=\"polite\" {...props}>\n <Box maxWidth=\"140px\" marginX=\"auto\">\n <ClientOnly>\n <Lottie animationData={contentLoaderData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n {children && (\n <Box textAlign=\"center\" fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Box>\n );\n};\n","\"use client\";\nimport { Box, BoxProps, Center, VisuallyHidden } from \"@chakra-ui/react\";\nimport { fullScreenLoaderWhiteData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\ntype DarkFullScreenLoaderProps = BoxProps;\n\nexport const DarkFullScreenLoader = ({\n width,\n maxWidth,\n ...props\n}: DarkFullScreenLoaderProps) => {\n return (\n <Center\n height=\"100%\"\n background=\"darkTeal\"\n role=\"status\"\n aria-live=\"polite\"\n {...props}\n >\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={fullScreenLoaderWhiteData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n </Center>\n );\n};\n","\"use client\";\nimport { Box, BoxProps, Center, VisuallyHidden } from \"@chakra-ui/react\";\nimport { inlineLoaderDarkData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\nexport type DarkInlineLoaderProps = Exclude<BoxProps, \"children\">;\n/**\n * Loading component that works well in bounded contexts, like inside a button.\n */\nexport const DarkInlineLoader = ({\n width,\n maxWidth,\n ...props\n}: DarkInlineLoaderProps) => {\n return (\n <Center role=\"status\" aria-live=\"polite\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={inlineLoaderDarkData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n </Center>\n );\n};\n","\"use client\";\nimport { spinnerDarkData, spinnerLightData } from \"@vygruppen/spor-loader\";\n\nimport { Box, BoxProps, Center, useColorMode, VisuallyHidden } from \"..\";\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\nexport type DarkSpinnerProps = BoxProps;\n/** A circular spinner\n *\n * Can be used in place of a loading animation, or for reloading app state, for instance.\n *\n * ```tsx\n * <DarkSpinner width=\"64px\" height=\"64px\" />\n * ```\n *\n * You can also pass an explanatory text as `children`:\n *\n * ```tsx\n * <DarkSpinner>\n * Hold your horses\n * </DarkSpinner>\n */\nexport const DarkSpinner = ({\n children,\n width,\n maxWidth,\n ...props\n}: DarkSpinnerProps) => {\n const { colorMode } = useColorMode();\n const spinnerData = colorMode === \"dark\" ? spinnerLightData : spinnerDarkData;\n return (\n <Center flexDirection=\"column\" role=\"status\" aria-live=\"polite\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={spinnerData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n {children && (\n <Box marginTop={3} fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Center>\n );\n};\n","\"use client\";\nimport { Box, BoxProps, Center, VisuallyHidden } from \"@chakra-ui/react\";\nimport { fullScreenLoaderBlackData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\ntype LightFullScreenLoaderProps = BoxProps;\n\nexport const LightFullScreenLoader = ({\n width,\n maxWidth,\n ...props\n}: LightFullScreenLoaderProps) => {\n return (\n <Center\n height=\"100%\"\n background=\"white\"\n role=\"status\"\n aria-live=\"polite\"\n {...props}\n >\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={fullScreenLoaderBlackData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n </Center>\n );\n};\n","\"use client\";\nimport { Box, BoxProps, Center, VisuallyHidden } from \"@chakra-ui/react\";\nimport { inlineLoaderLightData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\nexport type LightInlineLoaderProps = Exclude<BoxProps, \"children\">;\n/**\n * Loading component that works well in bounded contexts, like inside a button.\n */\nexport const LightInlineLoader = ({\n width,\n maxWidth,\n ...props\n}: LightInlineLoaderProps) => {\n return (\n <Center\n height=\"100%\"\n background=\"white\"\n role=\"status\"\n aria-live=\"polite\"\n {...props}\n >\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={inlineLoaderLightData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n </Center>\n );\n};\n","\"use client\";\nimport { Box, BoxProps, Center, VisuallyHidden } from \"@chakra-ui/react\";\nimport { spinnerLightData } from \"@vygruppen/spor-loader\";\n\nimport { ClientOnly } from \"./ClientOnly\";\nimport Lottie from \"./Lottie\";\n\nexport type LightSpinnerProps = BoxProps;\n/** A circular spinner\n *\n * Can be used in place of a loading animation, or for reloading app state, for instance.\n *\n * ```tsx\n * <LightSpinner width=\"64px\" height=\"64px\" />\n * ```\n *\n * You can also pass an explanatory text as `children`:\n *\n * ```tsx\n * <LightSpinner>\n * Hold your horses\n * </LightSpinner>\n */\nexport const LightSpinner = ({\n children,\n width,\n maxWidth,\n ...props\n}: LightSpinnerProps) => {\n return (\n <Center flexDirection=\"column\" role=\"status\" aria-live=\"polite\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n <Lottie animationData={spinnerLightData} />\n </ClientOnly>\n </Box>\n <VisuallyHidden>Loading...</VisuallyHidden>\n {children && (\n <Box marginTop={3} fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Center>\n );\n};\n","\"use client\";\nimport {\n BoxProps,\n Progress,\n RecipeVariantProps,\n UseProgressProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren } from \"react\";\n\nimport { progressBarRecipe } from \"../theme/slot-recipes/progress-bar\";\nimport { useRotatingLabel } from \"./useRotatingLabel\";\n\ntype ProgressBarVariants = RecipeVariantProps<typeof progressBarRecipe>;\n\nexport type ProgressBarProps = BoxProps &\n UseProgressProps &\n PropsWithChildren<ProgressBarVariants> & {\n children?: React.ReactNode;\n /** The height of the progress bar.\n * Defaults to .5rem\n **/\n height?: BoxProps[\"height\"];\n /** The width of the progress bar.\n *\n * Defaults to the width of its container\n **/\n width?: BoxProps[\"width\"];\n\n /** Pass if no label is passed to the label */\n \"aria-label\"?: string;\n /** Optional text shown below the loader.\n *\n * If you pass an array of strings, the text will rotate every 5 seconds. If you want to change the delay, pass the delay in milliseconds to the `labelRotationDelay` prop.\n */\n label?: string | string[];\n /** The number of milliseconds a label is shown, if an array of strings is passed to the `label` prop.\n *\n * Defaults to 5000 (5 seconds).\n */\n labelRotationDelay?: number;\n\n /** Pass to disable the color of the component */\n isActive?: boolean;\n\n /** Pass to show the value text */\n showValueText?: boolean;\n };\n\n/**\n * Shows the progress of a loading process.\n *\n * You can pass the amount of progress with the `value` prop:\n *\n * ```tsx\n * <ProgressBar value={50} />\n * ```\n *\n * You can also pass a label to show below the loader:\n *\n * ```tsx\n * <ProgressBar value={50} label=\"Loading...\" />\n * ```\n *\n * If you pass an array of strings, the text will rotate every 5 seconds. If you want to change the delay, pass the delay in milliseconds to the `labelRotationDelay` prop.\n *\n * ```tsx\n * <ProgressBar value={50} label={[\"Loading...\", \"Almost there...\"]} />\n * ```\n *\n * If you don't pass a label, you should pass an `aria-label` prop:\n *\n * ```tsx\n * <ProgressBar value={50} aria-label=\"Loading...\" />\n * ```\n */\n\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(\n (\n {\n value,\n label,\n labelRotationDelay = 5000,\n isActive = true,\n showValueText = false,\n height = \"0.5rem\",\n ...rest\n },\n ref,\n ) => {\n const recipe = useSlotRecipe({ key: \"progressbar\" });\n const styles = recipe({});\n const currentLoadingText = useRotatingLabel({\n label,\n delay: labelRotationDelay,\n });\n\n return (\n <Progress.Root css={styles.container} ref={ref} value={value} {...rest}>\n <Progress.Track\n height={height}\n css={isActive ? styles.background : styles.disabledBackground}\n >\n <Progress.Range css={styles.progress} />\n </Progress.Track>\n\n {label && (\n <Progress.Label css={styles.description}>\n {currentLoadingText}\n </Progress.Label>\n )}\n\n {showValueText && <Progress.ValueText>{value}%</Progress.ValueText>}\n </Progress.Root>\n );\n },\n);\nProgressBar.displayName = \"ProgressBar\";\n","\"use client\";\nimport { useMemo, useState } from \"react\";\nimport { useInterval } from \"usehooks-ts\";\n\ntype UseRotatingLabelArgs = {\n label?: string | string[];\n delay: number;\n};\n/** Returns a label from a set of labels */\nexport const useRotatingLabel = ({ label, delay }: UseRotatingLabelArgs) => {\n const loadingTextArray = useMemo(\n () => (Array.isArray(label) ? label : [label]),\n [label],\n );\n const [currentLoadingTextIndex, setCurrentLoadingTextIndex] = useState(0);\n\n useInterval(() => {\n setCurrentLoadingTextIndex(\n (prevIndex) => (prevIndex + 1) % loadingTextArray.length,\n );\n }, delay);\n return loadingTextArray[currentLoadingTextIndex];\n};\n","\"use client\";\nimport { BoxProps, chakra, RecipeVariantProps, Text } from \"@chakra-ui/react\";\nimport React, { forwardRef, useEffect, useId, useRef, useState } from \"react\";\nimport { useProgressBar } from \"react-aria\";\n\nimport { createTexts, useTranslation } from \"..\";\nimport { progressLoaderRecipe } from \"../theme/recipes/progress-loader\";\nimport { useRotatingLabel } from \"./useRotatingLabel\";\nexport type ProgressLoaderVariantProps = RecipeVariantProps<\n typeof progressLoaderRecipe\n>;\n\nexport type ProgressLoaderProps = BoxProps & {\n children: React.ReactNode;\n /** The percentage of progress made.\n *\n * The value must be between 0 and 100 */\n value: number;\n /** The width of the progress bar.\n *\n * Defaults to the width of its container\n **/\n width?: BoxProps[\"width\"];\n\n /** Pass if no label is passed to the label */\n \"aria-label\": string;\n /** Optional text shown below the loader.\n *\n * If you pass an array of strings, the text will rotate every 5 seconds. If you want to change the delay, pass the delay in milliseconds to the `labelRotationDelay` prop.\n */\n label: string | string[];\n /** The number of milliseconds a label is shown, if an array of strings is passed to the `label` prop.\n *\n * Defaults to 5000 (5 seconds).\n */\n labelRotationDelay?: number;\n};\n\n/**\n * Custom hook to calculate the total length of an SVG path and progress offset.\n * @param value The percentage of progress made (0-100).\n * @returns A ref for the path element, the calculated path length, and the progress offset.\n */\nconst usePathLength = (value: number) => {\n const pathRef = useRef<SVGPathElement>(null);\n const [pathLength, setPathLength] = useState(0);\n\n useEffect(() => {\n if (pathRef.current) {\n const totalLength = pathRef.current.getTotalLength();\n setPathLength(totalLength);\n }\n }, []);\n\n const progressOffset = ((value - 100) / 100) * pathLength;\n\n return { pathRef, pathLength, progressOffset };\n};\n\nconst ProgressLoaderWrapper = chakra(\"div\", progressLoaderRecipe);\n\n/**\n * Shows the progress of a loading process.\n *\n * You can pass the amount of progress with the `value` prop:\n *\n * ```tsx\n * <ProgressLoader value={50} />\n * ```\n *\n * You can also pass a label to show below the loader:\n *\n * ```tsx\n * <ProgressLoader value={50} label=\"Loading...\" />\n * ```\n *\n * If you pass an array of strings, the text will rotate every 5 seconds. If you want to change the delay, pass the delay in milliseconds to the `labelRotationDelay` prop.\n *\n * ```tsx\n * <ProgressLoader value={50} label={[\"Loading...\", \"Almost done...\"]} />\n * ```\n *\n * If you don't pass a label, you should pass an `aria-label` prop:\n *\n * ```tsx\n * <ProgressLoader value={50} aria-label=\"Fetching your trips...\" />\n * ```\n */\n\nexport const ProgressLoader = forwardRef<HTMLDivElement, ProgressLoaderProps>(\n (\n {\n value,\n label,\n labelRotationDelay = 5000,\n \"aria-label\": ariaLabel,\n width,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const currentLoadingText = useRotatingLabel({\n label,\n delay: labelRotationDelay,\n });\n const { labelProps, progressBarProps } = useProgressBar({\n isIndeterminate: value === undefined,\n value,\n \"aria-label\": ariaLabel ?? t(texts.fallbackLabel(value ?? \"?\")),\n });\n const {\n pathRef,\n pathLength: progressPathLength,\n progressOffset,\n } = usePathLength(value);\n\n const id = useId();\n\n return (\n <ProgressLoaderWrapper\n {...progressBarProps}\n width={width}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={ariaLabel ?? t(texts.fallbackLabel(value ?? \"?\"))}\n {...rest}\n ref={ref}\n >\n <chakra.svg as=\"svg\" viewBox=\"0 0 246 78\" fill=\"none\">\n <path\n id={`${id}-start-dot`}\n d=\"M14.0479 44.8251C19.4332 44.8251 23.7988 40.5242 23.7988 35.2187C23.7988 29.9133 19.4332 25.6124 14.0479 25.6124C8.66254 25.6124 4.29688 29.9133 4.29688 35.2187C4.29688 40.5242 8.66254 44.8251 14.0479 44.8251Z\"\n fill=\"#FFB466\"\n />\n <path\n id={`${id}-track`}\n d=\"M204.911 39.1156C204.911 39.1156 175.012 46.8319 157.651 30.4354C140.29 14.0388 121 21.7547 110.391 47.6529C103.22 65.157 78.9634 67.0859 67.9533 47.6529C59.8376 33.3287 36.125 37.1866 36.125 37.1866\"\n strokeWidth=\"13.6469\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n id={`${id}-progress`}\n d=\"M204.911 39.1156C204.911 39.1156 175.012 46.8319 157.651 30.4354C140.29 14.0388 121 21.7547 110.391 47.6529C103.22 65.157 78.9634 67.0859 67.9533 47.6529C59.8376 33.3287 36.125 37.1866 36.125 37.1866\"\n strokeWidth=\"13.6469\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeDasharray={progressPathLength}\n strokeDashoffset={progressOffset}\n style={{ transition: \"stroke-dashoffset .2s ease-out\" }}\n ref={pathRef}\n />\n <path\n id={`${id}-end-dot`}\n d=\"M226.025 44.8251C231.411 44.8251 235.776 40.5242 235.776 35.2187C235.776 29.9133 231.411 25.6124 226.025 25.6124C220.64 25.6124 216.274 29.9133 216.274 35.2187C216.274 40.5242 220.64 44.8251 226.025 44.8251Z\"\n fill=\"#688CBA\"\n />\n </chakra.svg>\n {currentLoadingText && (\n <Text\n textAlign=\"center\"\n marginTop={2}\n fontWeight=\"bold\"\n {...labelProps}\n >\n {currentLoadingText}\n </Text>\n )}\n </ProgressLoaderWrapper>\n );\n },\n);\nProgressLoader.displayName = \"ProgressLoader\";\n\nconst texts = createTexts({\n fallbackLabel: (value) => ({\n nb: `${value}% ferdig`,\n nn: `${value}% ferdig`,\n sv: `${value}% klart`,\n en: `${value}% done`,\n }),\n});\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const progressLoaderRecipe = defineRecipe({\n base: {\n minWidth: \"100px\",\n\n \"& path[id$='-track']\": {\n stroke: { _light: \"coralGreen\", _dark: \"greenHaze\" },\n },\n \"& path[id$='-progress']\": {\n stroke: { _light: \"greenHaze\", _dark: \"coralGreen\" },\n },\n },\n});\n","\"use client\";\nimport type {\n CircleProps,\n RecipeVariantProps,\n SkeletonProps as ChakraSkeletonProps,\n} from \"@chakra-ui/react\";\nimport {\n Circle,\n Skeleton as ChakraSkeleton,\n Stack,\n useRecipe,\n} from \"@chakra-ui/react\";\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nimport { skeletonRecipe } from \"@/theme/recipes/skeleton\";\n\ntype SkeletonVariantProps = RecipeVariantProps<typeof skeletonRecipe>;\n\nexport type SkeletonCircleProps = ChakraSkeletonProps &\n SkeletonVariantProps & {\n size?: CircleProps[\"size\"];\n };\n\nexport const SkeletonCircle = React.forwardRef<\n HTMLDivElement,\n SkeletonCircleProps\n>(function SkeletonCircle(props, ref) {\n const recipe = useRecipe({ recipe: skeletonRecipe });\n\n const [recipeProps, restProps] = recipe.splitVariantProps({\n loading: true,\n variant: \"pulse\",\n ...props,\n });\n\n const { size, css, ...rest } = restProps;\n\n return (\n <Circle size={size} asChild ref={ref}>\n <ChakraSkeleton css={{ ...recipe(recipeProps), ...css }} {...rest} />\n </Circle>\n );\n});\n\nexport type SkeletonTextProps = ChakraSkeletonProps &\n SkeletonVariantProps & {\n noOfLines?: number;\n };\n\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n function SkeletonText(props, ref) {\n const recipe = useRecipe({ recipe: skeletonRecipe });\n const [recipeProps, restProps] = recipe.splitVariantProps({\n loading: true,\n variant: \"pulse\",\n ...props,\n });\n const { noOfLines = 3, height = \"0.5rem\", gap, css, ...rest } = restProps;\n\n return (\n <Stack gap={gap} width=\"full\" ref={ref}>\n {Array.from({ length: noOfLines }).map((_, index) => (\n <ChakraSkeleton\n height={height}\n css={{ ...recipe(recipeProps), ...css }}\n key={index}\n _last={{ maxW: \"80%\" }}\n {...rest}\n />\n ))}\n </Stack>\n );\n },\n);\n\nexport type SkeletonProps = ChakraSkeletonProps & SkeletonVariantProps;\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonTextProps>(\n function SkeletonText(props, ref) {\n const recipe = useRecipe({ recipe: skeletonRecipe });\n const [recipeProps, restProps] = recipe.splitVariantProps({\n loading: true,\n variant: \"pulse\",\n ...props,\n });\n\n const { css, ...rest } = restProps;\n\n return (\n <ChakraSkeleton\n ref={ref}\n css={{ ...recipe(recipeProps), ...css }}\n {...rest}\n />\n );\n },\n);\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const skeletonRecipe = defineRecipe({\n className: \"chakra-skeleton\",\n variants: {\n loading: {\n true: {\n borderRadius: \"xs\",\n boxShadow: \"none\",\n backgroundClip: \"padding-box\",\n cursor: \"default\",\n color: \"transparent\",\n pointerEvents: \"none\",\n userSelect: \"none\",\n flexShrink: \"0\",\n \"&::before, &::after, *\": {\n visibility: \"hidden\",\n },\n },\n false: {\n background: \"unset\",\n animation: \"fade-in var(--fade-duration, 0.1s) ease-out !important\",\n },\n },\n variant: {\n pulse: {\n background: {\n _light: \"silver\",\n _dark: \"darkGrey\",\n },\n animation: \"pulse\",\n animationDuration: \"var(--duration, 1.2s)\",\n },\n shine: {\n \"--animate-from\": \"200%\",\n \"--animate-to\": \"-200%\",\n \"--start-color\": {\n _light: \"colors.lightGrey\",\n _dark: \"colors.dimGrey\",\n },\n\n \"--end-color\": {\n _light: \"colors.platinum\",\n _dark: \"colors.darkGrey\",\n },\n backgroundImage:\n \"linear-gradient(270deg,var(--start-color),var(--end-color),var(--end-color),var(--start-color))\",\n backgroundSize: \"400% 100%\",\n animation: \"bg-position var(--duration, 5s) ease-in-out infinite\",\n },\n none: {\n animation: \"none\",\n background: \"steel\",\n },\n },\n },\n});\n","\"use client\";\n\nimport {\n chakra,\n Group as ChakraGroup,\n type GroupProps as ChakraGroupProps,\n type RecipeVariantProps,\n} from \"@chakra-ui/react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { groupRecipe } from \"../theme/recipes/group\";\n\nexport type GroupVariantProps = RecipeVariantProps<typeof groupRecipe>;\n\nexport type ButtonGroupProps = ChakraGroupProps &\n PropsWithChildren<GroupVariantProps>;\n\n/**\n * Used to group or attach buttons together.\n *\n * If you have more than one button next to eachother, you might want to add a `ButtonGroup` to group them.\n *\n * ```tsx\n * <ButtonGroup>\n * <Button variant=\"secondary\">Cancel</Button>\n * <Button variant=\"primary\">Save</Button>\n * </ButtonGroup>\n * ```\n *\n *\n * Attach buttons together with the `attached` prop.\n *\n * ```tsx\n * <ButtonGroup attached>\n * <Button variant=\"primary\">Open</Button>\n * <IconButton variant=\"ghost\">\n * <SaveIcon aria-label=\"Save\"/>\n * </IconButton>\n * </ButtonGroup>\n * ```\n *\n * Use the `grow` prop to make the buttons grow to fill the available space.\n *\n * ```tsx\n * <ButtonGroup grow>\n * <Button variant=\"primary\">Open</Button>\n * <Button variant=\"secondary\">Save</Button>\n * </ButtonGroup>\n */\n\nconst Group = chakra(ChakraGroup, groupRecipe);\n\nexport const ButtonGroup = forwardRef<HTMLDivElement, ButtonGroupProps>(\n (props, ref) => {\n const { children, disabled, grow, attached, ...rest } = props;\n\n return (\n <Group\n {...rest}\n ref={ref}\n attached={attached}\n grow={grow}\n disabled={disabled}\n >\n {children}\n </Group>\n );\n },\n);\nButtonGroup.displayName = \"ButtonGroup\";\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const groupRecipe = defineRecipe({\n className: \"spor-group\",\n base: {\n fontSize: \"lg\",\n },\n variants: {\n disabled: {\n true: {\n \"& > *\": {\n pointerEvents: \"none\",\n backgroundColor: \"surface.disabled\",\n color: \"text.disabled\",\n },\n },\n },\n },\n});\n","import { Clipboard as ChakraClipboard } from \"@chakra-ui/react\";\nimport {\n CheckmarkFill18Icon,\n CopyOutline18Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport * as React from \"react\";\n\nimport { createTexts, useTranslation } from \"@/i18n\";\nimport { Text } from \"@/typography\";\n\nimport { Button, ButtonProps } from \"./Button\";\n\n/**\n *\n * Creates a button that copies text to the clipboard.\n *\n * ```tsx\n * <Clipboard value=\"Some value to be copied\">\n * <ClipboardButton />\n * </Clipboard>\n */\n\nconst ClipboardIcon = React.forwardRef<\n HTMLDivElement,\n ChakraClipboard.IndicatorProps\n>((props, ref) => {\n return (\n <ChakraClipboard.Indicator\n copied={<CheckmarkFill18Icon />}\n {...props}\n ref={ref}\n >\n <CopyOutline18Icon />\n </ChakraClipboard.Indicator>\n );\n});\nClipboardIcon.displayName = \"ClipboardIcon\";\n\nconst ClipboardCopyText = React.forwardRef<\n HTMLDivElement,\n ChakraClipboard.IndicatorProps\n>((props, ref) => {\n const { t } = useTranslation();\n return (\n <ChakraClipboard.Indicator\n copied={<Text variant=\"xs\">{t(texts.copied)}</Text>}\n {...props}\n ref={ref}\n >\n <Text variant=\"xs\">{t(texts.copy)}</Text>\n </ChakraClipboard.Indicator>\n );\n});\nClipboardCopyText.displayName = \"ClipboardCopyText\";\n\ntype ClipboardButtonProps = ButtonProps;\n\nexport const ClipboardButton = React.forwardRef<\n HTMLButtonElement,\n ClipboardButtonProps\n>((props, ref) => {\n return (\n <ChakraClipboard.Trigger asChild>\n <Button ref={ref} size=\"xs\" leftIcon={<ClipboardIcon />} {...props}>\n <ClipboardCopyText />\n </Button>\n </ChakraClipboard.Trigger>\n );\n});\nClipboardButton.displayName = \"ClipboardButton\";\n\nexport const Clipboard = ChakraClipboard.Root;\n\nconst texts = createTexts({\n copy: {\n nb: \"Kopier\",\n nn: \"Kopier\",\n en: \"Copy\",\n sv: \"Kopiera\",\n },\n copied: {\n nb: \"Kopiert\",\n nn: \"Kopiert\",\n en: \"Copied\",\n sv: \"Kopierad\",\n },\n});\n","\"use client\";\nimport {\n Badge as ChakraBadge,\n BadgeProps as ChakraBadgeProps,\n Box,\n} from \"@chakra-ui/react\";\nimport { IconComponent } from \"@vygruppen/spor-icon-react\";\nimport { forwardRef } from \"react\";\n\nexport type BadgeProps = ChakraBadgeProps & {\n icon?: IconComponent;\n};\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { icon, children, ...props },\n ref,\n) {\n return (\n <ChakraBadge ref={ref} {...props}>\n {children}\n {icon && <Box as={icon} />}\n </ChakraBadge>\n );\n});\n","\"use client\";\n\nimport {\n chakra,\n Code as ChakraCode,\n CodeProps,\n RecipeVariantProps,\n} from \"@chakra-ui/react\";\nimport React from \"react\"; // Added explicit React import\n\nimport { codeRecipie } from \"../theme/recipes/code\";\n\ntype CodeVariantProps = RecipeVariantProps<typeof codeRecipie> & CodeProps;\n\nconst StyledCode = chakra(ChakraCode, codeRecipie);\n\nexport const Code = React.forwardRef<HTMLElement, CodeVariantProps>(\n function Code(props, ref) {\n return <StyledCode {...props} ref={ref} />;\n },\n);\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nimport { badgeRecipie } from \"./badge\";\n\nexport const codeRecipie = defineRecipe({\n base: {\n fontFamily: \"monospace\",\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n borderRadius: \"xs\",\n paddingX: 1,\n },\n variants: {\n colorPalette: badgeRecipie.variants?.colorPalette ?? {},\n },\n});\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const badgeRecipie = defineRecipe({\n base: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"fit-content\",\n gap: \"0.5\",\n },\n variants: {\n colorPalette: {\n neutral: {\n backgroundColor: \"surface.color.neutral\",\n color: \"alert.neutral.text\",\n \"& svg\": {\n color: \"alert.neutral.icon\",\n },\n },\n grey: {\n backgroundColor: \"surface.color.grey\",\n color: \"alert.neutral.text\",\n \"& svg\": {\n color: \"alert.neutral.icon\",\n },\n },\n green: {\n backgroundColor: \"surface.color.green\",\n color: \"alert.success.text\",\n \"& svg\": {\n color: \"alert.success.icon\",\n },\n },\n blue: {\n backgroundColor: \"surface.color.blue\",\n color: \"alert.info.text\",\n \"& svg\": {\n color: \"alert.info.icon\",\n },\n },\n cream: {\n backgroundColor: \"surface.color.cream\",\n color: \"alert.important.text\",\n \"& svg\": {\n color: \"alert.important.icon\",\n },\n },\n yellow: {\n backgroundColor: \"surface.color.yellow\",\n color: \"alert.alt.text\",\n \"& svg\": {\n color: \"alert.alt.icon\",\n },\n },\n orange: {\n backgroundColor: \"surface.color.orange\",\n color: \"alert.error.text.secondary\",\n \"& svg\": {\n color: \"alert.error.icon.secondary\",\n },\n },\n red: {\n backgroundColor: \"surface.color.red\",\n color: \"alert.error.text\",\n \"& svg\": {\n color: \"alert.error.icon\",\n },\n },\n },\n size: {\n sm: {\n fontSize: \"desktop.xs\",\n paddingX: \"0.5\",\n paddingY: \"0\",\n fontWeight: \"normal\",\n borderRadius: \"xxs\",\n },\n md: {\n fontSize: \"desktop.xs\",\n paddingX: \"1\",\n paddingY: \"0.5\",\n fontWeight: \"bold\",\n borderRadius: \"xs\",\n },\n lg: {\n fontSize: \"desktop.sm\",\n paddingX: \"1.5\",\n paddingY: \"0.5\",\n fontWeight: \"bold\",\n borderRadius: \"xs\",\n },\n },\n attached: {\n true: {\n borderBottomRadius: \"none\",\n },\n },\n },\n defaultVariants: {\n colorPalette: \"grey\",\n size: \"md\",\n attached: false,\n },\n});\n","\"use client\";\nimport {\n ConditionalValue,\n HeadingProps as ChakraHeadingProps,\n Text,\n} from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nimport { slugify } from \"..\";\n\nexport type HeadingProps = Omit<ChakraHeadingProps, \"textStyle\" | \"as\"> & {\n /** The heading level, e.g. h1, h2, h3... **/\n as: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n /** The size and style of the heading. Defaults to xl-display */\n variant?: ConditionalValue<\n \"sm\" | \"md\" | \"lg\" | \"xxl\" | \"xl-display\" | \"xl-sans\" | \"xs\"\n >;\n /** If true, generate an ID based on the children */\n autoId?: boolean;\n};\n/**\n * Create your own fancy headings with this component.\n *\n * You have to specify what level of heading you want, depending on the context you are using the heading in.\n * You do this with the `as` prop. The options are h1, h2, h3, h4, h5 and h6.\n *\n * ```tsx\n * <Heading as=\"h1\">Page heading</Heading>\n * ```\n *\n * You can specify the variant, which is one of \"xs\", \"sm\", \"md\", \"lg\", \"xl-sans\", \"xs-serif\" and \"xxl\". The default is \"xl-sans\".\n *\n * ```tsx\n * <Heading as=\"h1\" variant=\"xxl\">Look at me!</Heading>\n * ```\n *\n * If you want to generate an ID based on the children, you can use the `autoId` prop.\n * Please note that this only works with string children (not JSX, nor arrays of strings).\n *\n * ```tsx\n * <Heading as=\"h1\" autoId>Page heading</Heading> // Will set id=\"page-heading\"\n * ```\n */\n\nexport const Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n function Heading(props, ref) {\n const {\n as,\n variant = \"xl-display\",\n autoId = false,\n id: externalId,\n ...rest\n } = props;\n\n const id =\n (externalId ?? (autoId && typeof rest.children === \"string\"))\n ? slugify(rest.children as string)\n : undefined;\n\n return <Text as={as} textStyle={variant} id={id} ref={ref} {...rest} />;\n },\n);\n","\"use client\";\nimport {\n Text as ChakraText,\n TextProps as ChakraTextProps,\n} from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nexport type TextProps = Omit<ChakraTextProps, \"textStyle\"> & {\n /** The size and style of the text.\n *\n * Defaults to \"sm\"\n * textStyle values are: \"sm\" | \"md\" | \"lg\" | \"2xl\" | \"xl-display\" | \"xl-sans\" | \"xs\" */\n variant?: ChakraTextProps[\"textStyle\"];\n};\n\n/**\n * A paragraph of text.\n *\n * ```tsx\n * <Text>Welcome to this paragraph of text.</Text>\n * ```\n */\n\nexport const Text = forwardRef<HTMLParagraphElement, TextProps>(\n function Text(props, ref) {\n const { variant = \"sm\", ...rest } = props;\n return <ChakraText {...rest} textStyle={variant} ref={ref} />;\n },\n);\n","export * from \"./Badge\";\nexport * from \"./Code\";\nexport * from \"./Heading\";\nexport * from \"./Text\";\nexport { Em, Kbd } from \"@chakra-ui/react\";\n","\"use client\";\n\nimport {\n CloseFill18Icon,\n CloseFill24Icon,\n CloseFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef } from \"react\";\n\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { IconButton, IconButtonProps } from \"./IconButton\";\n\nexport type CloseButtonProps = Omit<\n IconButtonProps,\n \"variant\" | \"aria-label\"\n> & {\n /** Defaults to a localized version of \"close\" */\n \"aria-label\"?: string;\n};\n\n/**\n * A close button component.\n *\n * This button closes stuff, like modals and dialogs.\n *\n * ```tsx\n * <CloseButton onClick={closeModal} />\n * ```\n */\nexport const CloseButton = forwardRef<HTMLButtonElement, CloseButtonProps>(\n ({ size = \"sm\", ...props }, ref) => {\n const { t } = useTranslation();\n return (\n <IconButton\n variant=\"ghost\"\n icon={<CloseIcon size={size} />}\n size={size}\n aria-label={props[\"aria-label\"] || t(texts.close)}\n {...props}\n ref={ref}\n />\n );\n },\n);\nCloseButton.displayName = \"CloseButton\";\n\nconst CloseIcon = ({ size }: { size: CloseButtonProps[\"size\"] }) => {\n switch (size) {\n case \"xs\":\n case \"sm\": {\n return <CloseFill18Icon />;\n }\n case \"md\": {\n return <CloseFill24Icon />;\n }\n case \"lg\": {\n return <CloseFill30Icon />;\n }\n default: {\n return <CloseFill18Icon />;\n }\n }\n};\n\nconst texts = createTexts({\n close: {\n en: \"Close\",\n nb: \"Lukk\",\n nn: \"Lukk\",\n sv: \"Stäng\",\n },\n});\n","import {\n IconButton as ChakraIconButton,\n type IconButtonProps as ChakraIconButtonProps,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren } from \"react\";\n\nimport { ButtonVariantProps, ColorSpinner } from \"..\";\n\nexport type IconButtonProps = Exclude<\n ChakraIconButtonProps,\n \"variant\" | \"spinner\" | \"icon\"\n> &\n PropsWithChildren<ButtonVariantProps> & {\n /** The button variant.\n *\n */\n variant: \"primary\" | \"secondary\" | \"tertiary\" | \"ghost\" | \"floating\";\n spinner?: React.JSX.Element;\n icon?: React.JSX.Element;\n loading?: boolean;\n download?: string;\n href?: string;\n };\n\n/**\n * An icon-only button.\n *\n * Remember to specify the `aria-label` prop for screen readers.\n *\n * There are several icon button variants. You can specify which one you want with the `variant` prop. The available variants are:\n *\n * - `primary`: This is our main button. It's used for the main actions in a view, like a call to action. There should only be a single primary button in each view.\n * - `secondary`: Used for secondary actions in a view, and when you need to make several actions available at the same time.\n * - `tertiary`: Used for additional choices, like a less important secondary action.\n * - `ghost`: Used inside other interactive elements, like date pickers and input fields.\n * - `floating`: Used for floating actions, like a menu button in a menu.\n *\n * ```tsx\n * <IconButton\n * aria-label=\"Buy trip\"\n * icon={<ShoppingCartIcon />}\n * variant=\"primary\"\n * onClick={confirmOrder}\n * />\n * ```\n *\n * There are also different sizes. You can specify which one you want with the `size` prop. The available sizes are \"lg\", \"md\", \"sm\" and \"xs\".\n *\n * ```tsx\n * <IconButton\n * aria-label=\"Cancel trip\"\n * icon={<CancelIcon />}\n * variant=\"ghost\"\n * size=\"sm\"\n * onClick={cancelOrder}\n * />\n * ```\n */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n (props, ref) => {\n const { icon, size = \"sm\", loading = false, ...rest } = props;\n return (\n <ChakraIconButton\n aria-label={props[\"aria-label\"]}\n size={size}\n position={\"relative\"}\n {...rest}\n ref={ref}\n >\n {loading ? <ColorSpinner width=\"2em\" height=\"2em\" margin={1} /> : icon}\n </ChakraIconButton>\n );\n },\n);\nIconButton.displayName = \"IconButton\";\n","\"use client\";\n\nimport {\n Box,\n BoxProps,\n RecipeVariantProps,\n Text,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren, useEffect } from \"react\";\n\nimport { floatingActionButtonSlotRecipe } from \"../theme/slot-recipes/floating-action-button\";\n\ntype FloatingActionButtonVariantProps = RecipeVariantProps<\n typeof floatingActionButtonSlotRecipe\n>;\n\ntype FloatingActionButtonProps = BoxProps &\n PropsWithChildren<FloatingActionButtonVariantProps> & {\n variant?: \"accent\" | \"core\" | \"brand\";\n placement?: \"bottom right\" | \"bottom left\" | \"top right\" | \"top left\";\n icon: React.ReactNode;\n children: React.ReactNode;\n isTextVisible?: boolean;\n };\n\n/**\n * Creates a floating action button.\n *\n * By default it will be placed at the bottom right of the screen. You can override this with specifying the `placement` prop.\n *\n * ```tsx\n * <FloatingActionButton\n * variant=\"accent\"\n * icon={<TicketControlFill30Icon />}\n * placement=\"bottom right\"\n * />\n */\nexport const FloatingActionButton = forwardRef<\n HTMLButtonElement,\n FloatingActionButtonProps\n>(\n (\n {\n children,\n icon,\n variant,\n isTextVisible: externalIsTextVisible,\n placement = \"bottom right\",\n ...props\n },\n ref,\n ) => {\n const [isTextVisible, setIsTextVisible] = React.useState(\n externalIsTextVisible === undefined ? false : externalIsTextVisible,\n );\n const scrollDirection = useScrollDirection();\n useEffect(() => {\n if (externalIsTextVisible !== undefined) {\n return;\n }\n const id = globalThis.setTimeout(\n () => setIsTextVisible(scrollDirection !== \"down\"),\n 1000,\n );\n return () => globalThis.clearTimeout(id);\n }, [scrollDirection, externalIsTextVisible]);\n\n useEffect(() => {\n setIsTextVisible(!!externalIsTextVisible);\n }, [externalIsTextVisible]);\n\n const recipe = useSlotRecipe({ key: \"floatingActionButton\" });\n const style = recipe({\n variant,\n placement,\n });\n\n return (\n <Box\n css={style.root}\n as=\"button\"\n aria-label={typeof children === \"string\" ? children : undefined}\n ref={ref}\n {...props}\n aria-expanded={isTextVisible}\n >\n <Box css={style.icon}>{icon}</Box>\n {isTextVisible && (\n <Text data-state=\"open\" css={style.text}>\n {children}\n </Text>\n )}\n </Box>\n );\n },\n);\nFloatingActionButton.displayName = \"FloatingActionButton\";\n\ntype ScrollDirection = \"up\" | \"down\" | null;\nconst useScrollDirection = () => {\n const [scrollDirection, setScrollDirection] =\n React.useState<ScrollDirection>(null);\n const lastScrollPosition = React.useRef(\n globalThis.window === undefined ? 0 : window.scrollY,\n );\n React.useEffect(() => {\n const onScroll = () => {\n const delta = window.scrollY - lastScrollPosition.current;\n if (delta === 0) {\n return;\n }\n\n lastScrollPosition.current = window.scrollY;\n setScrollDirection(delta > 0 ? \"down\" : \"up\");\n };\n window.addEventListener(\"scroll\", onScroll);\n return () => {\n window.removeEventListener(\"scroll\", onScroll);\n };\n }, [scrollDirection]);\n return scrollDirection;\n};\n","\"use client\";\n\nimport { Alert as ChakraAlert, Box } from \"@chakra-ui/react\";\nimport {\n AltTransportFill24Icon,\n ErrorFill24Icon,\n ErrorOutline24Icon,\n IconComponent,\n InformationFill24Icon,\n QuestionFill24Icon,\n ServiceFill24Icon,\n SuccessFill24Icon,\n WarningFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef } from \"react\";\n\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { AlertProps } from \"./Alert\";\n\ntype AlertIconProps = {\n variant: ChakraAlert.RootProps[\"variant\"];\n customIcon?: IconComponent;\n};\n\n/**\n * Internal component that shows the correct icon for the alert\n */\nexport const AlertIcon = forwardRef<SVGSVGElement, AlertIconProps>(\n ({ variant, customIcon }, ref) => {\n const { t } = useTranslation();\n\n const Icon = customIcon ?? getIcon(variant);\n\n return (\n <Box\n as={Icon}\n ref={ref}\n aria-label={t(texts[variant as keyof typeof texts])}\n color={customIcon ? `alert.${variant}.icon` : undefined}\n />\n );\n },\n);\n\nAlertIcon.displayName = \"AlertIcon\";\n\nconst getIcon = (variant: AlertProps[\"variant\"]) => {\n switch (variant) {\n case \"info\": {\n return InformationFill24Icon;\n }\n case \"success\": {\n return SuccessFill24Icon;\n }\n case \"important\": {\n return WarningFill24Icon;\n }\n case \"alt\": {\n return AltTransportFill24Icon;\n }\n case \"error\": {\n return ErrorFill24Icon;\n }\n case \"error-secondary\": {\n return ErrorOutline24Icon;\n }\n case \"neutral\": {\n return QuestionFill24Icon;\n }\n case \"service\": {\n return ServiceFill24Icon;\n }\n }\n};\n\nconst texts = createTexts({\n info: {\n nb: \"Informasjon\",\n nn: \"Informasjon\",\n sv: \"Information\",\n en: \"Information\",\n },\n success: {\n nb: \"Suksess\",\n nn: \"Suksess\",\n sv: \"Succé\",\n en: \"Success\",\n },\n important: {\n nb: \"Viktig\",\n nn: \"Viktig\",\n sv: \"Viktig\",\n en: \"Important\",\n },\n alt: {\n nb: \"Alternativ\",\n nn: \"Alternativ\",\n sv: \"Alternativ\",\n en: \"Alternative\",\n },\n error: {\n nb: \"Feil\",\n nn: \"Feil\",\n sv: \"Fel\",\n en: \"Error\",\n },\n \"error-secondary\": {\n nb: \"Feil\",\n nn: \"Feil\",\n sv: \"Fel\",\n en: \"Error\",\n },\n neutral: {\n nb: \"Nøytral\",\n nn: \"Nøytral\",\n sv: \"Neutral\",\n en: \"Neutral\",\n },\n service: {\n nb: \"Service\",\n nn: \"Service\",\n sv: \"Service\",\n en: \"Service\",\n },\n});\n","\"use client\";\n\nimport {\n Accordion,\n Box,\n ConditionalValue,\n HStack,\n RecipeVariantProps,\n Span,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { DropdownDownFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { AccordionItemContent } from \"@/accordion\";\nimport { alertExpandableSlotRecipe } from \"@/theme/slot-recipes/alert-expandable\";\n\nimport { AlertIcon } from \"./AlertIcon\";\n\ntype ExpandableAlertVariantProps = RecipeVariantProps<\n typeof alertExpandableSlotRecipe\n>;\n\ntype ExpandableAlertProps = PropsWithChildren<ExpandableAlertVariantProps> &\n Omit<Accordion.RootProps, \"variant\" | \"orientation\" | \"size\" | \"value\"> & {\n /** The title string */\n title: string;\n /** Whether or not the default state of the expandable alert is open */\n defaultOpen?: boolean;\n /**\n * The HTML element used for the `title` prop.\n *\n * Defaults to h3 */\n headingLevel?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n /** If the user should be able to close the Accordion. Defaults to true */\n collapsible?: boolean;\n /**\n * The variant of the alert. Default: info\n * \"info\"\n | \"success\"\n | \"important\"\n | \"alt-transport\"\n | \"error\"\n | \"service\"\n | \"global-deviation\";\n */\n variant?: ConditionalValue<\n \"important\" | \"success\" | \"alt\" | \"info\" | \"error\" | undefined\n >;\n };\n/**\n * An expandable alert component.\n *\n * A regular alert with an expandable body. The expandable body can be used to provide more information about the alert.\n *\n * ```tsx\n * <ExpandableAlert variant=\"alt-transport\" title=\"Replacement bus service\">\n * The replacement bus service will be running from 10:00 to 16:00.\n * </ExpandableAlert>\n * ```\n */\nexport const ExpandableAlert = forwardRef<HTMLDivElement, ExpandableAlertProps>(\n (props, ref) => {\n const {\n variant = \"info\",\n children,\n title,\n collapsible = true,\n headingLevel = \"h3\",\n defaultOpen = false,\n css,\n ...rest\n } = props;\n const recipe = useSlotRecipe({ key: \"alertExpandable\" });\n const styles = recipe({ variant });\n\n const defaultValue = \"alert-expandable\";\n\n return (\n <Accordion.Root\n defaultValue={defaultOpen ? [defaultValue] : undefined}\n ref={ref}\n css={{ ...styles.root, ...css }}\n collapsible={collapsible}\n {...rest}\n >\n <Accordion.Item value={defaultValue}>\n <Accordion.ItemTrigger css={styles.itemTrigger}>\n <HStack\n gap=\"1\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n flex=\"1\"\n width=\"full\"\n >\n <HStack gap=\"1\" alignItems=\"center\">\n <Box css={styles.indicator}>\n <AlertIcon variant={variant} />\n </Box>\n <Span\n as={headingLevel}\n css={{\n // Truncate the title to one line\n display: \"-webkit-box\",\n overflow: \"hidden\",\n WebkitLineClamp: \"1\",\n WebkitBoxOrient: \"vertical\",\n }}\n >\n {title}\n </Span>\n </HStack>\n\n <Accordion.ItemIndicator>\n <DropdownDownFill18Icon />\n </Accordion.ItemIndicator>\n </HStack>\n </Accordion.ItemTrigger>\n <AccordionItemContent css={styles.itemContent}>\n {children}\n </AccordionItemContent>\n </Accordion.Item>\n </Accordion.Root>\n );\n },\n);\n\nExpandableAlert.displayName = \"ExpandableAlert\";\n","\"use client\";\n\nimport {\n Accordion,\n Flex,\n HStack,\n RecipeVariantProps,\n Span,\n Stack,\n Text,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport {\n DropdownDownFill24Icon,\n ServiceFill24Icon,\n WarningFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { alertServiceSlotRecipe } from \"../theme/slot-recipes/alert-service\";\nimport { AlertProps } from \"./Alert\";\n\ntype ServiceAlertVariantProps = RecipeVariantProps<\n typeof alertServiceSlotRecipe\n>;\n\ntype ServiceAlertProps = Omit<AlertProps, \"variant\"> &\n PropsWithChildren<ServiceAlertVariantProps> &\n Omit<Accordion.RootProps, \"variant\" | \"orientation\" | \"size\" | \"value\"> & {\n /** The title string */\n title: string;\n /** The number of notifications when there is a list of multiple alerts */\n notification: number;\n /** The maximum width to display the service message\n *\n * Defaults to container.md */\n contentWidth: string;\n /** Whether or not the default state of the alert is open */\n defaultOpen?: boolean;\n /**\n * The HTML element used for the `title` prop.\n *\n * Defaults to h3 */\n headingLevel?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n /** The variant of Service Alert. Default: service */\n variant?: \"service\" | \"global-deviation\";\n };\n/**\n * A service alert component.\n *\n * A regular alert with an expandable body, used to show service messages. The expandable body can be used to provide more information about the alert(s).\n *\n * ```tsx\n * <ServiceAlert title=\"Error with Vipps\" notification={1} contentWidth=\"container.md\">\n * <Text>Some customers are experiencing issues logging in with Vipps. Vipps is working to resolve the issue. Try logging in with email instead.</Text>\n * </ServiceAlert>\n * ```\n */\n\nexport const ServiceAlert = forwardRef<HTMLDivElement, ServiceAlertProps>(\n (props, ref) => {\n const {\n variant = \"service\",\n children,\n title,\n notification,\n contentWidth = \"container.md\",\n headingLevel = \"h3\",\n defaultOpen = false,\n collapsible = true,\n css,\n ...rest\n } = props;\n const { t } = useTranslation();\n const recipe = useSlotRecipe({ key: \"alertService\" });\n const styles = recipe({ variant });\n\n const defaultValue = \"spor-service-alert\";\n return (\n <Accordion.Root\n defaultValue={defaultOpen ? [defaultValue] : undefined}\n collapsible={collapsible}\n css={{ ...styles.root, ...css }}\n ref={ref}\n {...rest}\n >\n <Accordion.Item value={defaultValue}>\n <Accordion.ItemTrigger css={styles.itemTrigger}>\n <HStack\n justifyContent=\"space-between\"\n alignContent=\"center\"\n width=\"100%\"\n maxWidth={contentWidth}\n >\n <HStack as={headingLevel} alignItems=\"center\" gap=\"1\">\n {variant === \"service\" ? (\n <ServiceFill24Icon aria-label={t(texts.service)} />\n ) : (\n <WarningFill24Icon\n aria-label={t(texts[\"global-deviation\"])}\n />\n )}\n <Span\n css={{\n // Truncate the title to one line\n display: \"-webkit-box\",\n overflow: \"hidden\",\n WebkitLineClamp: \"1\",\n WebkitBoxOrient: \"vertical\",\n ...styles.itemTriggerTitle,\n }}\n >\n {title}\n </Span>\n </HStack>\n <Flex alignItems=\"center\" gap={[0.5, null, null, 1]}>\n {notification && (\n <Text css={styles.notificationText}>\n {t(texts.notification(notification))}\n </Text>\n )}\n <Accordion.ItemIndicator>\n <DropdownDownFill24Icon color=\"icon.inverted\" />\n </Accordion.ItemIndicator>\n </Flex>\n </HStack>\n </Accordion.ItemTrigger>\n\n <Accordion.ItemContent asChild>\n <Stack flexDirection=\"row\" justifyContent=\"center\" width=\"100%\">\n <Accordion.ItemBody\n as={Stack}\n maxWidth={contentWidth}\n css={styles.itemBody}\n >\n {children}\n </Accordion.ItemBody>\n </Stack>\n </Accordion.ItemContent>\n </Accordion.Item>\n </Accordion.Root>\n );\n },\n);\nServiceAlert.displayName = \"ServiceAlert\";\n\nconst texts = createTexts({\n notification: (notification) => {\n const numNotification = Number(notification);\n return {\n nb: `${numNotification} ${numNotification > 1 ? \"varsler\" : \"varsel\"}`,\n nn: `${numNotification} ${numNotification > 1 ? \"varslar\" : \"varsel\"}`,\n sv: `${numNotification} ${numNotification > 1 ? \"underrättelser\" : \"underrättelse\"}`,\n en: `${numNotification} ${numNotification > 1 ? \"notifications\" : \"notification\"}`,\n };\n },\n service: {\n nb: \"Driftsmelding\",\n nn: \"Driftsmelding\",\n sv: \"Service meddelande\",\n en: \"Service message\",\n },\n \"global-deviation\": {\n nb: \"Trafikkmelding\",\n nn: \"Trafikkmelding\",\n sv: \"Trafikmeddelande\",\n en: \"Traffic announcement\",\n },\n});\n","\"use client\";\n\nimport {\n Breadcrumb as ChakraBreadcrumb,\n BreadcrumbRootProps,\n} from \"@chakra-ui/react\";\nimport { DropdownRightFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React, { forwardRef } from \"react\";\n/**\n * A breadcrumb component.\n *\n * Used to create customizable breadcrumbs.\n * BreadcrumbCurrentLink is used to set the last breadcrumb.\n * BreadcrumbLink is used to set the other breadcrumbs.\n * ```tsx\n * <Breadcrumb>\n * <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\n * <BreadcrumbLink href=\"/Breadcrumb\">Breadcrumb</BreadcrumbLink>\n * <BreadcrumbCurrentLink href=\"/about\">About</BreadcrumbCurrentLink>\n * </Breadcrumb>\n * ```\n */\nexport const Breadcrumb = forwardRef<HTMLDivElement, BreadcrumbRootProps>(\n ({ children, ...props }, ref) => {\n const validChildren = React.Children.toArray(children).filter((element) =>\n React.isValidElement(element),\n );\n\n return (\n <ChakraBreadcrumb.Root ref={ref} {...props}>\n <ChakraBreadcrumb.List>\n {validChildren.map((child, index) => {\n const isLast = index === validChildren.length - 1;\n return (\n <React.Fragment key={index}>\n <ChakraBreadcrumb.Item>{child}</ChakraBreadcrumb.Item>\n {!isLast && (\n <ChakraBreadcrumb.Separator aria-hidden=\"true\">\n <DropdownRightFill18Icon />\n </ChakraBreadcrumb.Separator>\n )}\n </React.Fragment>\n );\n })}\n </ChakraBreadcrumb.List>\n </ChakraBreadcrumb.Root>\n );\n },\n);\n\nBreadcrumb.displayName = \"Breadcrumb\";\n\nexport {\n BreadcrumbCurrentLink,\n BreadcrumbEllipsis,\n BreadcrumbLink,\n} from \"@chakra-ui/react\";\n","\"use client\";\n\nimport type { IconButtonProps } from \"@chakra-ui/react\";\nimport { ClientOnly, IconButton, Skeleton } from \"@chakra-ui/react\";\nimport type { ThemeProviderProps } from \"next-themes\";\nimport { ThemeProvider, useTheme } from \"next-themes\";\nimport * as React from \"react\";\nimport { LuMoon, LuSun } from \"react-icons/lu\";\n\nexport type ColorModeProviderProps = ThemeProviderProps;\n\nexport function ColorModeProvider(props: ColorModeProviderProps) {\n return (\n <ThemeProvider attribute=\"class\" disableTransitionOnChange {...props} />\n );\n}\n\nexport type ColorMode = \"light\" | \"dark\";\n\nexport interface UseColorModeReturn {\n colorMode: ColorMode;\n setColorMode: (colorMode: ColorMode) => void;\n toggleColorMode: () => void;\n}\n\nexport function useColorMode(): UseColorModeReturn {\n const { resolvedTheme, setTheme } = useTheme();\n const toggleColorMode = () => {\n setTheme(resolvedTheme === \"light\" ? \"dark\" : \"light\");\n };\n return {\n colorMode: resolvedTheme as ColorMode,\n setColorMode: setTheme,\n toggleColorMode,\n };\n}\n\nexport function useColorModeValue<T>(light: T, dark: T) {\n const { colorMode } = useColorMode();\n return colorMode === \"dark\" ? dark : light;\n}\n\nexport function ColorModeIcon() {\n const { colorMode } = useColorMode();\n return colorMode === \"dark\" ? <LuMoon /> : <LuSun />;\n}\n\ntype ColorModeButtonProps = Omit<IconButtonProps, \"aria-label\">;\n\nexport const ColorModeButton = React.forwardRef<\n HTMLButtonElement,\n ColorModeButtonProps\n>(function ColorModeButton(props, ref) {\n const { toggleColorMode } = useColorMode();\n return (\n <ClientOnly fallback={<Skeleton boxSize=\"8\" />}>\n <IconButton\n onClick={toggleColorMode}\n variant=\"ghost\"\n aria-label=\"Toggle color mode\"\n size=\"sm\"\n ref={ref}\n {...props}\n css={{\n _icon: {\n width: \"5\",\n height: \"5\",\n },\n }}\n >\n <ColorModeIcon />\n </IconButton>\n </ClientOnly>\n );\n});\n","\"use client\";\nimport {\n Box,\n BoxProps,\n Popover as ChakraPopover,\n PopoverAnchor,\n PopoverRootProps,\n Portal,\n RecipeVariantProps,\n useFieldContext,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren, useId, useRef } from \"react\";\nimport {\n AriaDatePickerProps,\n DateValue,\n I18nProvider,\n useDatePicker,\n} from \"react-aria\";\nimport { useDatePickerState } from \"react-stately\";\n\nimport { Field, FieldBaseProps } from \"@/input/Field\";\n\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\nimport { Calendar } from \"./Calendar\";\nimport { CalendarTriggerButton } from \"./CalendarTriggerButton\";\nimport { DateField } from \"./DateField\";\nimport { StyledField } from \"./StyledField\";\nimport { CalendarVariants } from \"./types\";\nimport { useCurrentLocale } from \"./utils\";\n\nexport type DatePickerVariantProps = RecipeVariantProps<\n typeof datePickerSlotRecipe\n>;\n\ntype DatePickerProps = Omit<AriaDatePickerProps<DateValue>, \"onChange\"> &\n Pick<BoxProps, \"minHeight\" | \"width\"> &\n PropsWithChildren<DatePickerVariantProps> &\n CalendarVariants & {\n name?: string;\n showYearNavigation?: boolean;\n withPortal?: boolean;\n onChange?: (value: DateValue | null) => void;\n positioning?: PopoverRootProps[\"positioning\"];\n } & FieldBaseProps;\n\n/**\n * A date picker component.\n *\n * There are three different variants –`core`, `floating` and `ghost`.\n *\n * ```tsx\n * <DatePicker label=\"Dato\" variant=\"core\" />\n * ```\n */\n\nexport const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n variant,\n errorText,\n minHeight,\n showYearNavigation,\n withPortal = true,\n width = \"auto\",\n invalid = false,\n helperText,\n positioning,\n ...props\n },\n externalRef,\n ) => {\n const chakraFieldProps = useFieldContext();\n const state = useDatePickerState({\n ...props,\n shouldCloseOnSelect: true,\n errorMessage: errorText,\n isRequired: props.isRequired ?? chakraFieldProps?.required,\n validationState: chakraFieldProps?.invalid ? \"invalid\" : \"valid\",\n });\n\n const internalRef = useRef<HTMLDivElement>(null);\n const ref = externalRef ?? internalRef;\n const { labelProps, fieldProps, buttonProps, dialogProps, calendarProps } =\n useDatePicker(\n props,\n state,\n ref as React.MutableRefObject<HTMLDivElement>,\n );\n\n const labelId = `label-${useId()}`;\n const inputGroupId = `input-group-${useId()}`;\n\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({ variant });\n const locale = useCurrentLocale();\n\n const onFieldClick = () => {\n state.setOpen(true);\n };\n\n const popoverContent = (\n <ChakraPopover.Positioner>\n <ChakraPopover.Content css={styles.calendarPopover}>\n <ChakraPopover.Body minWidth={\"20rem\"}>\n <Calendar\n {...calendarProps}\n variant={variant}\n showYearNavigation={showYearNavigation}\n />\n </ChakraPopover.Body>\n </ChakraPopover.Content>\n </ChakraPopover.Positioner>\n );\n\n return (\n <I18nProvider locale={locale}>\n <Box\n position=\"relative\"\n display=\"inline-flex\"\n flexDirection=\"column\"\n width={width}\n >\n <ChakraPopover.Root {...dialogProps} positioning={positioning}>\n <Field\n display=\"inline-flex\"\n id={inputGroupId}\n aria-labelledby={labelId}\n errorText={errorText}\n invalid={invalid}\n helperText={helperText}\n >\n <PopoverAnchor>\n <StyledField\n variant={variant}\n onClick={onFieldClick}\n paddingX={3}\n minHeight={minHeight}\n isDisabled={props.isDisabled}\n ariaLabelledby={labelId}\n >\n <ChakraPopover.Trigger asChild>\n <CalendarTriggerButton\n paddingLeft={1}\n paddingRight={1}\n variant={variant}\n ref={ref}\n {...buttonProps}\n />\n </ChakraPopover.Trigger>\n <DateField\n label={props.label}\n labelProps={labelProps}\n labelId={labelId}\n name={props.name}\n {...fieldProps}\n />\n </StyledField>\n </PopoverAnchor>\n </Field>\n\n {state.isOpen && !props.isDisabled && withPortal && (\n <Portal>{popoverContent}</Portal>\n )}\n {state.isOpen && !props.isDisabled && !withPortal && popoverContent}\n </ChakraPopover.Root>\n </Box>\n </I18nProvider>\n );\n },\n);\nDatePicker.displayName = \"DatePicker\";\n","\"use client\";\n\nimport {\n Field as ChakraField,\n RecipeVariantProps,\n Stack,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nimport { Text } from \"@/typography\";\n\nimport { fieldSlotRecipe } from \"../theme/slot-recipes/field\";\nimport { FloatingLabel } from \"./FloatingLabel\";\nimport { Label } from \"./Label\";\n\ntype FieldVariantProps = RecipeVariantProps<typeof fieldSlotRecipe>;\n\nexport type FieldBaseProps = {\n direction?: \"row\" | \"column\";\n disabled?: boolean;\n invalid?: boolean;\n readOnly?: boolean;\n required?: boolean;\n label?: React.ReactNode;\n helperText?: React.ReactNode;\n errorText?: React.ReactNode;\n floatingLabel?: boolean;\n};\n\nexport type FieldProps = Omit<ChakraField.RootProps, \"label\" | \"onChange\"> &\n React.PropsWithChildren<FieldVariantProps> &\n FieldBaseProps;\n\n/**\n *\n * Field is a component that wraps around other input components, like `Input` and `Select`.\n *\n * It can have a label, helper text, and error text.\n *\n * ```tsx\n *\n * <Field label=\"E-mail\">\n * <Input />\n * </Field>\n *\n * ```\n *\n * This component is not exported and should be used as a wrapper for other input components.\n */\n\nexport const Field = React.forwardRef<HTMLDivElement, FieldProps>(\n (props, ref) => {\n const {\n label,\n children,\n helperText,\n errorText,\n floatingLabel = false,\n disabled,\n invalid,\n readOnly,\n required,\n direction,\n ...rest\n } = props;\n const recipe = useSlotRecipe({ key: \"field\" });\n const styles = recipe();\n\n return (\n <Stack gap=\"2\" ref={ref} {...rest}>\n <ChakraField.Root\n disabled={disabled}\n invalid={invalid}\n readOnly={readOnly}\n required={required}\n css={styles.root}\n direction={direction}\n >\n {label && !floatingLabel && <Label>{label}</Label>}\n\n {children}\n\n {label && floatingLabel && <FloatingLabel>{label}</FloatingLabel>}\n {errorText && (\n <ChakraField.ErrorText>{errorText}</ChakraField.ErrorText>\n )}\n </ChakraField.Root>\n {helperText && (\n <Text fontSize=\"sm\" color=\"text.tertiary\">\n {helperText}\n </Text>\n )}\n </Stack>\n );\n },\n);\nField.displayName = \"Field\";\n\nexport const FieldErrorText = React.forwardRef<\n HTMLDivElement,\n ChakraField.ErrorTextProps\n>((props, ref) => {\n return (\n <ChakraField.ErrorText ref={ref}>{props.children}</ChakraField.ErrorText>\n );\n});\nFieldErrorText.displayName = \"FieldErrorText\";\n\nexport const FieldLabel = ChakraField.Label;\n","import { defineStyle, Field, FieldLabelProps } from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nexport const FloatingLabel = forwardRef<HTMLLabelElement, FieldLabelProps>(\n (props, ref) => (\n <Field.Label ref={ref} {...props} css={floatingLabelStyles} />\n ),\n);\n\nFloatingLabel.displayName = \"FloatingLabel\";\n\nconst floatingLabelStyles = defineStyle({\n paddingX: 3,\n fontWeight: \"normal\",\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n color: \"text\",\n pointerEvents: \"none\",\n zIndex: \"docked\",\n _disabled: {\n opacity: 0.4,\n },\n\n pos: \"absolute\",\n top: \"0.3rem\",\n transition: \"position\",\n _peerPlaceholderShown: {\n /* For when input is not in focus */\n top: \"0.9rem\",\n color: \"text\",\n fontSize: [\"mobile.sm\", \"desktop.sm\"],\n },\n _peerFocusVisible: {\n /* For when input is in focus */\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n color: \"text\",\n top: \"0.3rem\",\n },\n});\n","import { defineStyle, Field, FieldLabelProps } from \"@chakra-ui/react\";\n\nexport const Label = (props: FieldLabelProps) => (\n <Field.Label {...props} css={labelStyles} />\n);\n\nconst labelStyles = defineStyle({\n fontWeight: \"normal\",\n paddingBottom: 1,\n paddingX: 1,\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n color: \"text\",\n pointerEvents: \"none\",\n zIndex: \"docked\",\n _disabled: {\n opacity: 0.4,\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { datepickerAnatomy } from \"./anatomy\";\n\nexport const datePickerSlotRecipe = defineSlotRecipe({\n slots: datepickerAnatomy.keys(),\n className: \"spor-datepicker\",\n base: {\n wrapper: {\n transitionProperty: \"box-shadow\",\n transitionDuration: \"fast\",\n borderRadius: \"sm\",\n display: \"flex\",\n flex: 1,\n paddingY: 0.5,\n alignItems: \"center\",\n _hover: {\n zIndex: \"docked\",\n },\n _disabled: {\n pointerEvents: \"none\",\n backgroundColor: \"surface.disabled\",\n outline: \"1px solid\",\n outlineColor: \"outline.disabled\",\n color: \"text.disabled\",\n },\n _focusWithin: {\n outline: \"2px solid\",\n outlineColor: \"outline.focus\",\n },\n },\n inputLabel: {\n fontSize: \"mobile.xs\",\n margin: 0,\n cursor: \"text\",\n },\n dateTimeSegment: {\n _focus: {\n backgroundColor: \"ghost.surface.active\",\n color: \"text.default\",\n },\n },\n box: {\n width: \"100%\",\n },\n\n calendarTriggerButton: {\n position: \"relative\",\n borderRadius: \"xl\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transitionProperty: \"box-shadow, background-color\",\n right: \"0.5rem\",\n _hover: {\n backgroundColor: \"ghost.surface.hover\",\n },\n _active: {\n backgroundColor: \"ghost.surface.active\",\n },\n _invalid: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n },\n },\n arrow: {\n backgroundColor: \"surface\",\n },\n calendarPopover: {\n color: \"core.text\",\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n boxShadow: \"md\",\n backgroundColor: \"floating.surface\",\n },\n rangeCalendarPopover: {\n width: \"43rem\",\n maxWidth: \"100vw\",\n },\n weekdays: {\n color: \"core.text\",\n fontWeight: \"bold\",\n },\n weekend: {\n color: \"accent.text\",\n fontWeight: \"bold\",\n },\n cell: {\n '&[aria-selected=\"true\"] + [aria-selected=\"true\"] > button': {\n \"&::before\": {\n content: '\"\"',\n display: \"block\",\n height: \"100%\",\n position: \"absolute\",\n left: \"-50%\",\n top: 0,\n bottom: 0,\n zIndex: -1,\n backgroundColor: \"brand.surface\",\n },\n },\n },\n dateCell: {\n color: \"core.text\",\n borderRadius: \"xl\",\n position: \"relative\",\n transition: \".1s ease-in-out\",\n userSelect: \"none\",\n width: [6, 7],\n height: [6, 7],\n transitionProperty: \"common\",\n\n _hover: {\n backgroundColor: \"ghost.surface.hover\",\n },\n _active: {\n backgroundColor: \"ghost.surface.active\",\n },\n _disabled: {\n backgroundColor: \"surface.disabled\",\n color: \"text.disabled\",\n pointerEvents: \"none\",\n },\n _selected: {\n backgroundColor: \"brand.surface\",\n color: \"brand.text\",\n _active: {\n backgroundColor: \"brand.surface.active\",\n color: \"brand.text\",\n },\n },\n \"&[data-today]\": {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n \"&[data-unavailable]\": {\n pointerEvents: \"none\",\n borderRadius: \"xl\",\n backgroundColor: \"surface.disabled\",\n color: \"text.disabled\",\n },\n },\n },\n variants: {\n variant: {\n core: {\n wrapper: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n backgroundColor: \"core.surface\",\n\n _hover: {\n outline: \"2px solid\",\n\n outlineColor: \"core.outline.hover\",\n _active: {\n backgroundColor: \"ghost.surface.active\",\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n },\n _invalid: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n },\n },\n },\n floating: {\n wrapper: {\n backgroundColor: {\n _light: \"bg\",\n _dark: `color-mix(in srgb, white 10%, var(--spor-colors-bg))`,\n },\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n boxShadow: \"sm\",\n\n _hover: {\n outline: \"1px solid\",\n outlineColor: \"floating.outline.hover\",\n _active: {\n backgroundColor: \"ghost.surface.active\",\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n },\n _invalid: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n },\n },\n },\n ghost: {\n wrapper: {\n _hover: {\n outline: \"2px solid\",\n outlineColor: \"core.outline.hover\",\n _active: {\n backgroundColor: \"ghost.surface.active\",\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n },\n _invalid: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n },\n },\n },\n },\n },\n defaultVariants: {\n variant: \"core\",\n },\n});\n","import { createAnatomy } from \"@ark-ui/react/anatomy\";\nimport { popoverAnatomy as arkPopoverAnatomy } from \"@ark-ui/react/popover\";\n\nexport const accordionAnatomy = createAnatomy(\"accordion\").parts(\n \"root\",\n \"itemTrigger\",\n \"item\",\n \"itemBody\",\n \"itemContent\",\n \"itemIndicator\",\n);\n\nexport const alertAnatomy = createAnatomy(\"alert\").parts(\n \"root\",\n \"indicator\",\n \"title\",\n \"closeButton\",\n \"content\",\n \"description\",\n);\n\nexport const alertExpandableAnatomy = createAnatomy(\"alert-expandable\").parts(\n \"root\",\n \"itemTrigger\",\n \"itemContent\",\n \"indicator\",\n \"title\",\n \"itemIndicator\",\n);\n\nexport const alertServiceAnatomy = createAnatomy(\"service-alert\").parts(\n \"root\",\n \"itemTrigger\",\n \"itemTriggerTitle\",\n \"notificationText\",\n \"itemContent\",\n \"itemBody\",\n);\n\nexport const listAnatomy = createAnatomy(\"list\").parts(\n \"root\",\n \"item\",\n \"icon\",\n \"indicator\",\n);\n\nexport const tableAnatomy = createAnatomy(\"table\").parts(\n \"root\",\n \"body\",\n \"row\",\n \"cell\",\n \"columnHeader\",\n \"caption\",\n \"footer\",\n \"header\",\n);\n\nexport const fieldAnatomy = createAnatomy(\"field\").parts(\n \"root\",\n \"label\",\n \"requiredIndicator\",\n \"helperText\",\n \"errorText\",\n);\n\nexport const dialogAnatomy = createAnatomy(\"dialog\").parts(\n \"header\",\n \"body\",\n \"footer\",\n \"backdrop\",\n \"positioner\",\n \"content\",\n \"title\",\n \"description\",\n \"closeTrigger\",\n);\n\nexport const paginationAnatomy = createAnatomy(\"pagination\").parts(\n \"list\",\n \"item\",\n);\nexport const linjetagAnatomy = createAnatomy(\"linjetag\").parts(\n \"iconContainer\",\n \"icon\",\n \"root\",\n \"title\",\n \"desc\",\n);\n\nexport const infoTagAnatomy = createAnatomy(\"info-tag\").parts(\n \"container\",\n \"iconContainer\",\n \"icon\",\n \"textContainer\",\n \"title\",\n \"description\",\n \"walk\",\n);\n\nexport const travelTagAnatomy = createAnatomy(\"travel-tag\").parts(\n \"container\",\n \"iconContainer\",\n \"icon\",\n \"textContainer\",\n \"title\",\n \"description\",\n \"deviationIcon\",\n);\n\nexport const drawerAnatomy = createAnatomy(\"drawer\").parts(\n \"header\",\n \"body\",\n \"backdrop\",\n \"positioner\",\n \"content\",\n \"footer\",\n \"title\",\n \"description\",\n \"closeTrigger\",\n);\n\nexport const checkboxAnatomy = createAnatomy(\"checkbox\").parts(\n \"root\",\n \"control\",\n \"label\",\n \"description\",\n \"addon\",\n \"indicator\",\n \"content\",\n);\n\nexport const breadcrumbAnatomy = createAnatomy(\"breadcrumb\").parts(\n \"link\",\n \"currentLink\",\n \"list\",\n \"separator\",\n);\n\nexport const stepperAnatomy = createAnatomy(\"stepper\").parts(\n \"root\",\n \"container\",\n \"innerContainer\",\n \"title\",\n \"stepCounter\",\n \"stepContainer\",\n \"stepButton\",\n \"stepNumber\",\n \"stepTitle\",\n \"closeButton\",\n \"backButton\",\n);\n\nexport const radioCardAnatomy = createAnatomy(\"radio-card\").parts(\n \"root\",\n \"item\",\n \"label\",\n \"itemText\",\n \"itemDescription\",\n \"itemContent\",\n);\n\nexport const radioAnatomy = createAnatomy(\"radio\").parts(\n \"root\",\n \"item\",\n \"itemControl\",\n \"itemText\",\n \"label\",\n);\n\nexport const listBoxAnatomy = createAnatomy(\"listbox\").parts(\n \"root\",\n \"item\",\n \"label\",\n \"description\",\n);\n\nexport const NativeSelectAnatomy = createAnatomy(\"native-select\").parts(\n \"root\",\n \"field\",\n \"icon\",\n);\n\nexport const tabsAnatomy = createAnatomy(\"tabs\").parts(\n \"root\",\n \"list\",\n \"trigger\",\n \"content\",\n \"indicator\",\n);\n\nexport const switchAnatomy = createAnatomy(\"switch\").parts(\n \"root\",\n \"thumb\",\n \"control\",\n \"label\",\n);\n\nexport const selectAnatomy = createAnatomy(\"select\").parts(\n \"root\",\n \"trigger\",\n \"indicatorGroup\",\n \"indicator\",\n \"selectContent\",\n \"item\",\n \"control\",\n \"itemText\",\n \"itemDescription\",\n \"itemGroup\",\n \"itemGroupLabel\",\n \"label\",\n \"valueText\",\n);\nexport const cardSelectAnatomy = createAnatomy(\"card-select\").parts(\n \"trigger\",\n \"card\",\n);\n\nexport const numericStepperAnatomy = createAnatomy(\"numeric-stepper\").parts(\n \"root\",\n \"container\",\n \"input\",\n \"text\",\n \"button\",\n);\nexport const mediaControllerAnatomy = createAnatomy(\n \"media-controller-button\",\n).parts(\"root\", \"icon\");\nexport const progressBarAnotomy = createAnatomy(\"progress-bar\").parts(\n \"container\",\n \"background\",\n \"progress\",\n \"description\",\n \"disabledBackground\",\n);\n\nexport const toastAnatomy = createAnatomy(\"toast\").parts(\n \"root\",\n \"title\",\n \"description\",\n \"indicator\",\n \"closeTrigger\",\n \"actionTrigger\",\n);\n\nexport const floatingActionButtonAnatomy = createAnatomy(\n \"floating-action-button\",\n).parts(\"root\", \"icon\", \"text\");\n\nexport const popoverAnatomy = arkPopoverAnatomy.extendWith(\n \"header\",\n \"body\",\n \"footer\",\n);\n\nexport const datepickerAnatomy = createAnatomy(\"datepicker\").parts(\n \"wrapper\",\n \"calendarTriggerButton\",\n \"arrow\",\n \"calendarPopover\",\n \"calendar\",\n \"weekdays\",\n \"weekend\",\n \"dateCell\",\n \"inputLabel\",\n \"dateTimeSegment\",\n \"cell\",\n \"box\",\n \"rangeCalendarPopover\",\n);\n\nexport const checkboxCardAnatomy = createAnatomy(\"checkbox-card\", [\n \"root\",\n \"control\",\n \"label\",\n \"description\",\n \"addon\",\n \"indicator\",\n \"content\",\n]);\n","\"use client\";\n\nimport { Box, useSlotRecipe } from \"@chakra-ui/react\";\nimport { createCalendar } from \"@internationalized/date\";\nimport {\n CalendarProps as ReactAriaCalendarProps,\n DateValue,\n useCalendar,\n} from \"react-aria\";\nimport { useCalendarState } from \"react-stately\";\n\nimport { datePickerSlotRecipe } from \"@/theme/slot-recipes/datepicker\";\n\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { CalendarHeader } from \"./CalendarHeader\";\nimport { CalendarVariants } from \"./types\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype CalendarProps = ReactAriaCalendarProps<DateValue> &\n CalendarVariants & {\n showYearNavigation?: boolean;\n };\nexport function Calendar({\n showYearNavigation,\n variant,\n ...props\n}: CalendarProps) {\n const { t } = useTranslation();\n const locale = useCurrentLocale();\n const state = useCalendarState({\n ...props,\n locale,\n createCalendar,\n });\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({ variant });\n const { calendarProps } = useCalendar(props, state);\n const calendarAriaLabel = calendarProps[\"aria-label\"];\n\n const ariaLabel =\n t(texts.calendar) + (calendarAriaLabel ? ` ${calendarAriaLabel}` : \"\");\n\n return (\n <Box {...calendarProps} aria-label={ariaLabel} css={styles.box}>\n <CalendarHeader state={state} showYearNavigation={showYearNavigation} />\n <CalendarGrid variant={variant} state={state} />\n </Box>\n );\n}\n\nconst texts = createTexts({\n calendar: {\n nb: \"Kalender\",\n nn: \"Kalender\",\n sv: \"Kalender\",\n en: \"Calendar\",\n },\n});\n","\"use client\";\n\nimport { Box, useSlotRecipe } from \"@chakra-ui/react\";\nimport { endOfMonth, getWeeksInMonth } from \"@internationalized/date\";\nimport { AriaCalendarGridProps, useCalendarGrid } from \"react-aria\";\nimport { CalendarState, RangeCalendarState } from \"react-stately\";\n\nimport { Language, useTranslation } from \"../i18n\";\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\nimport { Text } from \"../typography\";\nimport { CalendarCell } from \"./CalendarCell\";\nimport { CalendarVariants } from \"./types\";\nimport { useCurrentLocale } from \"./utils\";\n\nconst weekDays: Record<Language, string[]> = {\n nb: [\"Ma\", \"Ti\", \"On\", \"To\", \"Fr\", \"Lø\", \"Sø\"],\n nn: [\"Ma\", \"Ti\", \"On\", \"To\", \"Fr\", \"Lø\", \"Sø\"],\n sv: [\"Må\", \"Ti\", \"On\", \"To\", \"Fr\", \"Lö\", \"Sö\"],\n en: [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n};\n\ntype CalendarGridProps = AriaCalendarGridProps &\n CalendarVariants & {\n state: CalendarState | RangeCalendarState;\n offset?: { months?: number };\n };\nexport function CalendarGrid({\n state,\n variant,\n offset = {},\n}: CalendarGridProps) {\n const { language } = useTranslation();\n const locale = useCurrentLocale();\n const startDate = state.visibleRange.start.add(offset);\n const endDate = endOfMonth(startDate);\n const { gridProps, headerProps } = useCalendarGrid(\n {\n startDate,\n endDate,\n },\n state,\n );\n\n // Get the number of weeks in the month so we can render the proper number of rows.\n const weeksInMonth = getWeeksInMonth(state.visibleRange.start, locale);\n const weeksInMonthRange = Array.from({ length: weeksInMonth })\n .fill(0)\n .map((_, i) => i);\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({ variant });\n\n return (\n <Box as=\"table\" {...gridProps} css={styles.box}>\n <thead {...headerProps}>\n <tr>\n {weekDays[language].map((day, index) => {\n return (\n <Text\n as=\"th\"\n key={index}\n css={index < 5 ? styles.weekdays : styles.weekend}\n variant=\"sm\"\n >\n {day}\n </Text>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {weeksInMonthRange.map((weekIndex) => (\n <tr key={weekIndex}>\n {state\n .getDatesInWeek(weekIndex, startDate)\n .map((date, dayIndex) =>\n date ? (\n <CalendarCell\n variant={variant}\n key={dayIndex}\n state={state}\n date={date}\n currentMonth={startDate}\n />\n ) : (\n <td key={dayIndex} />\n ),\n )}\n </tr>\n ))}\n </tbody>\n </Box>\n );\n}\n","\"use client\";\n\nimport { Box, useSlotRecipe } from \"@chakra-ui/react\";\nimport {\n CalendarDate,\n DateValue,\n isSameMonth,\n isToday,\n} from \"@internationalized/date\";\nimport { PropsWithChildren, useEffect, useRef } from \"react\";\nimport { useCalendarCell } from \"react-aria\";\nimport { CalendarState, RangeCalendarState } from \"react-stately\";\n\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\nimport { DatePickerVariantProps } from \"./DatePicker\";\nimport { CalendarVariants } from \"./types\";\n\ntype CalendarCellProps = PropsWithChildren<DatePickerVariantProps> &\n CalendarVariants & {\n state: CalendarState | RangeCalendarState;\n date: CalendarDate;\n currentMonth: DateValue;\n };\nexport function CalendarCell({\n state,\n date,\n currentMonth,\n variant,\n}: CalendarCellProps) {\n const ref = useRef<HTMLButtonElement>(null);\n const {\n cellProps,\n buttonProps,\n isSelected,\n isDisabled,\n isUnavailable,\n isOutsideVisibleRange,\n } = useCalendarCell({ date }, state, ref);\n\n const isOutsideMonth = !isSameMonth(currentMonth, date);\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({ variant });\n\n const stateProps: Record<string, unknown> = {};\n if (isSelected) {\n stateProps[\"data-selected\"] = true;\n }\n if (isDisabled || isUnavailable) {\n stateProps[\"data-disabled\"] = true;\n }\n if (isToday(date, \"Europe/Oslo\")) {\n stateProps[\"data-today\"] = true;\n }\n if (isOutsideMonth) {\n stateProps[\"data-unavailable\"] = true;\n }\n\n /* \n Workaround to fix click througs on mobile devices\n Related to https://github.com/adobe/react-spectrum/issues/4970\n TODO: Follow up with react-spectrum to see if they can solve it on their end\n */\n useEffect(() => {\n ref.current?.addEventListener(\n \"touchend\",\n (event: TouchEvent) => {\n event.preventDefault();\n },\n { passive: false, once: true },\n );\n }, []);\n\n return (\n <Box as=\"td\" {...cellProps} textAlign=\"center\" css={styles.cell}>\n <Box\n as=\"button\"\n {...buttonProps}\n {...stateProps}\n ref={ref}\n css={styles.dateCell}\n hidden={isOutsideVisibleRange}\n >\n {date.day}\n </Box>\n </Box>\n );\n}\n","import { CalendarDateTime, parseTime } from \"@internationalized/date\";\n\nimport { useTranslation } from \"..\";\n\n/**\n * Returns the currently selected language as a BCF47 language tag.\n * This is useful for passing into the react-aria hooks\n */\nexport const useCurrentLocale = () => {\n const { language } = useTranslation();\n switch (language) {\n case \"nb\": {\n return \"nb-NO\";\n }\n case \"nn\": {\n return \"nb-NO\";\n }\n case \"sv\": {\n return \"sv-SE\";\n }\n case \"en\": {\n return \"en-GB\";\n }\n default: {\n return \"nb-NO\";\n }\n }\n};\n\n/** Gets the current time as a Time object */\nexport const getCurrentTime = () => {\n const now = new Date();\n return parseTime(now.toTimeString().split(\" \")[0]);\n};\n\n/** Gets a readable timestamp from a given time object */\nexport const getTimestampFromTime = (time: CalendarDateTime | null) => {\n return `${time?.hour ?? 0}:${time?.minute ?? 0}`;\n};\n","\"use client\";\nimport { Box, Flex } from \"@chakra-ui/react\";\nimport { getLocalTimeZone } from \"@internationalized/date\";\nimport {\n ArrowLeftOutline24Icon,\n ArrowRightOutline24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { CalendarState, RangeCalendarState } from \"react-stately\";\n\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { CalendarNavigationButton } from \"./CalendarNavigationButton\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype CalendarHeaderProps = {\n state: CalendarState | RangeCalendarState;\n title?: string;\n showYearNavigation?: boolean;\n};\nexport function CalendarHeader({\n state,\n showYearNavigation = false,\n title,\n}: CalendarHeaderProps) {\n const locale = useCurrentLocale();\n const monthFormatter = Intl.DateTimeFormat(locale, {\n month: \"long\",\n });\n const jsDate = state.focusedDate.toDate(getLocalTimeZone());\n\n const monthTitle = monthFormatter.format(jsDate);\n const monthAndYearTitle = `${monthTitle} ${state.focusedDate.year}`;\n\n const isPreviousYearDisabled = state.isInvalid(\n state.visibleRange.start.subtract({ years: 1 }),\n );\n const isNextYearDisabled = state.isInvalid(\n state.visibleRange.start.add({ years: 1 }),\n );\n const areAllOtherYearsDisabled = isPreviousYearDisabled && isNextYearDisabled;\n const isYearPickerVisible = showYearNavigation && !areAllOtherYearsDisabled;\n\n return (\n <Flex alignItems=\"center\" paddingBottom=\"4\" justifyContent=\"space-between\">\n <CalendarNavigator\n title={title || (isYearPickerVisible ? monthTitle : monthAndYearTitle)}\n unit=\"month\"\n onPrevious={() =>\n state.setFocusedDate(state.focusedDate.subtract({ months: 1 }))\n }\n onNext={() =>\n state.setFocusedDate(state.focusedDate.add({ months: 1 }))\n }\n isNextDisabled={!state.isPreviousVisibleRangeInvalid}\n isPreviousDisabled={!state.isNextVisibleRangeInvalid}\n />\n {isYearPickerVisible && (\n <CalendarNavigator\n title={jsDate.getFullYear().toString()}\n unit=\"year\"\n onPrevious={() =>\n state.setFocusedDate(state.focusedDate.subtract({ years: 1 }))\n }\n onNext={() =>\n state.setFocusedDate(state.focusedDate.add({ years: 1 }))\n }\n isPreviousDisabled={isPreviousYearDisabled}\n isNextDisabled={isNextYearDisabled}\n />\n )}\n </Flex>\n );\n}\n\nconst capitalize = (str: string = \"\") =>\n str.charAt(0).toUpperCase() + str.slice(1);\n\ntype CalendarNavigatorProps = {\n /** The unit of time you want to navigate with */\n unit: \"month\" | \"year\";\n /** The text in the middle */\n title: string;\n /** Callback for when you click back */\n onPrevious: () => void;\n /** Callback for when you click forward */\n onNext: () => void;\n isNextDisabled: boolean;\n isPreviousDisabled: boolean;\n};\nexport const CalendarNavigator = ({\n title,\n unit,\n onPrevious,\n isPreviousDisabled,\n onNext,\n isNextDisabled,\n}: CalendarNavigatorProps) => {\n const { t } = useTranslation();\n return (\n <Flex alignItems=\"center\" flexGrow={1}>\n <CalendarNavigationButton\n onPress={onPrevious}\n isDisabled={isPreviousDisabled}\n icon={<ArrowLeftOutline24Icon />}\n aria-label={`${t(texts.previous)} ${t(texts[unit])}`}\n />\n <Box\n role=\"heading\"\n fontSize=\"sm\"\n fontWeight=\"bold\"\n flex=\"1\"\n textAlign=\"center\"\n color={\"core.text\"}\n >\n {capitalize(title)}\n </Box>\n <CalendarNavigationButton\n onPress={onNext}\n isDisabled={isNextDisabled}\n icon={<ArrowRightOutline24Icon />}\n aria-label={`${t(texts.next)} ${t(texts[unit])}`}\n />\n </Flex>\n );\n};\n\nconst texts = createTexts({\n previous: {\n nb: \"Forrige\",\n nn: \"Forrige\",\n sv: \"Föregående\",\n en: \"Previous\",\n },\n next: {\n nb: \"Neste\",\n nn: \"Neste\",\n sv: \"Nästa\",\n en: \"Next\",\n },\n month: {\n nb: \"måned\",\n nn: \"månad\",\n sv: \"månad\",\n en: \"month\",\n },\n year: {\n nb: \"år\",\n nn: \"år\",\n sv: \"år\",\n en: \"year\",\n },\n});\n","\"use client\";\nimport React, { useRef } from \"react\";\nimport { AriaButtonProps, useButton } from \"react-aria\";\n\nimport { IconButton } from \"..\";\n\ntype CalendarButtonProps = AriaButtonProps<\"button\"> & {\n icon: React.ReactElement;\n \"aria-label\": string;\n};\nexport function CalendarNavigationButton({\n icon,\n \"aria-label\": ariaLabel,\n ...rest\n}: CalendarButtonProps) {\n const ref = useRef(null);\n const { buttonProps } = useButton(rest, ref);\n return (\n <IconButton\n {...buttonProps}\n ref={ref}\n icon={icon}\n aria-label={ariaLabel}\n size=\"sm\"\n variant=\"ghost\"\n />\n );\n}\n","\"use client\";\n\nimport { BoxProps, PopoverAnchor, useSlotRecipe } from \"@chakra-ui/react\";\nimport { CalendarOutline24Icon } from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\nimport { AriaButtonProps } from \"react-aria\";\n\nimport {\n createTexts,\n DatePickerVariantProps,\n IconButton,\n useTranslation,\n} from \"..\";\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\nimport { CalendarVariants } from \"./types\";\n\ntype CalendarTriggerButtonProps = AriaButtonProps<\"button\"> &\n PropsWithChildren<DatePickerVariantProps> &\n BoxProps &\n CalendarVariants & {\n disabled?: boolean;\n ariaLabelledby?: string;\n };\nexport const CalendarTriggerButton = forwardRef<\n HTMLDivElement,\n CalendarTriggerButtonProps\n>(({ variant, disabled, ariaLabelledby, ...buttonProps }, ref) => {\n const { t } = useTranslation();\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({ variant });\n\n return (\n <PopoverAnchor {...buttonProps} ref={ref}>\n <IconButton\n icon={<CalendarOutline24Icon />}\n aria-label={t(texts.openCalendar)}\n css={styles.calendarTriggerButton}\n variant=\"ghost\"\n disabled={disabled}\n aria-labelledby={ariaLabelledby}\n />\n </PopoverAnchor>\n );\n});\nCalendarTriggerButton.displayName = \"CalendarTriggerButton\";\n\nconst texts = createTexts({\n openCalendar: {\n nb: \"Åpne kalender\",\n nn: \"Åpne kalendar\",\n sv: \"Öppna kalender\",\n en: \"Open calendar\",\n },\n});\n","\"use client\";\nimport { Box, Flex, useSlotRecipe } from \"@chakra-ui/react\";\nimport { DateValue, GregorianCalendar } from \"@internationalized/date\";\nimport { DOMAttributes, FocusableElement } from \"@react-types/shared\";\nimport React, { forwardRef, PropsWithChildren, RefObject, useRef } from \"react\";\nimport { AriaDateFieldProps, useDateField } from \"react-aria\";\nimport { DateSegment, useDateFieldState } from \"react-stately\";\n\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\nimport { DatePickerVariantProps } from \"./DatePicker\";\nimport { DateTimeSegment } from \"./DateTimeSegment\";\nimport { useCurrentLocale } from \"./utils\";\n\nfunction createCalendar(identifier: string) {\n switch (identifier) {\n case \"gregory\": {\n return new GregorianCalendar();\n }\n default: {\n throw new Error(`Unsupported calendar ${identifier}`);\n }\n }\n}\n\ntype DateFieldProps = AriaDateFieldProps<DateValue> &\n PropsWithChildren<DatePickerVariantProps> & {\n label?: React.ReactNode;\n labelProps?: DOMAttributes<FocusableElement>;\n name?: string;\n labelId?: string;\n };\nexport const DateField = forwardRef<HTMLDivElement, DateFieldProps>(\n ({ labelId, ...props }, externalRef) => {\n const locale = useCurrentLocale();\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({});\n const state = useDateFieldState({\n ...props,\n locale,\n createCalendar,\n });\n\n const { t } = useTranslation();\n\n const internalRef = useRef(null);\n const ref = externalRef ?? internalRef;\n const { fieldProps } = useDateField(\n props,\n state,\n ref as RefObject<HTMLDivElement>,\n );\n\n return (\n <Box minWidth=\"6rem\" width=\"100%\">\n {props.label && (\n <Box\n as=\"label\"\n css={styles.inputLabel}\n position=\"absolute\"\n paddingTop=\"2px\"\n id={labelId}\n >\n {props.label}\n </Box>\n )}\n <Flex {...fieldProps} ref={ref} paddingTop=\"3\" paddingBottom=\"0.5\">\n {state.segments.map((segment, i) => (\n <DateTimeSegment\n key={i}\n segment={segment}\n ariaDescription={t(getAriaLabel(segment.type))}\n ariaLabel={labelId}\n state={state}\n />\n ))}\n </Flex>\n <input\n type=\"hidden\"\n value={state.value?.toString() ?? \"\"}\n name={props.name}\n />\n </Box>\n );\n },\n);\nDateField.displayName = \"DateField\";\n\nconst texts = createTexts({\n day: {\n nb: \"Velg dag\",\n nn: \"Vel dag\",\n sv: \"Välj dag\",\n en: \"Choose day\",\n },\n month: {\n nb: \"Velg måned\",\n nn: \"Vel månad\",\n sv: \"Välj månad\",\n en: \"Choose month\",\n },\n year: {\n nb: \"Velg år\",\n nn: \"Vel år\",\n sv: \"Välj år\",\n en: \"Choose year\",\n },\n});\n\nconst getAriaLabel = (segmentType: DateSegment[\"type\"]) => {\n switch (segmentType) {\n case \"day\": {\n return texts.day;\n }\n case \"month\": {\n return texts.month;\n }\n case \"year\": {\n return texts.year;\n }\n default: {\n return texts.day;\n }\n }\n};\n","\"use client\";\nimport { Box, useSlotRecipe } from \"@chakra-ui/react\";\nimport { forwardRef, PropsWithChildren, RefObject, useRef } from \"react\";\nimport { useDateSegment } from \"react-aria\";\nimport { DateFieldState, DateSegment } from \"react-stately\";\n\nimport { DatePickerVariantProps } from \"..\";\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\n\ntype DateTimeSegmentProps = PropsWithChildren<DatePickerVariantProps> & {\n segment: DateSegment;\n state: DateFieldState;\n ariaLabel?: string;\n ariaDescription?: string;\n};\n/**\n * A date time segment is a part of a date or a time stamp.\n *\n * Examples could be the day, month, year, hour, minute, second, etc.\n *\n * This component should be used with the react-aria library, and is not meant to be used directly.\n * */\nexport const DateTimeSegment = forwardRef<HTMLDivElement, DateTimeSegmentProps>(\n ({ segment, state, ariaLabel, ariaDescription }, externalRef) => {\n const internalRef = useRef(null);\n const ref = externalRef ?? internalRef;\n\n const { segmentProps } = useDateSegment(\n segment,\n state,\n ref as RefObject<HTMLDivElement>,\n );\n\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({\n isPlaceholder: segment.isPlaceholder,\n isEditable: segment.isEditable,\n });\n\n return (\n <Box\n {...segmentProps}\n ref={ref}\n style={{\n ...segmentProps.style,\n boxSizing: \"content-box\",\n }}\n textAlign=\"center\"\n outline=\"none\"\n borderRadius=\"xs\"\n fontSize={[\"mobile.sm\", \"desktop.sm\"]}\n css={styles.dateTimeSegment}\n aria-description={ariaDescription}\n aria-labelledby={ariaLabel}\n >\n {isPaddable(segment.type)\n ? segment.text.padStart(2, \"0\")\n : segment.text}\n </Box>\n );\n },\n);\nDateTimeSegment.displayName = \"DateTimeSegment\";\n\nconst isPaddable = (segmentType: DateSegment[\"type\"]) =>\n segmentType === \"month\" ||\n segmentType === \"day\" ||\n segmentType === \"hour\" ||\n segmentType === \"minute\" ||\n segmentType === \"second\";\n","\"use client\";\nimport {\n Box,\n BoxProps,\n useFieldContext,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\nimport { DatePickerVariantProps } from \"./DatePicker\";\nimport { CalendarVariants } from \"./types\";\n\ntype StyledFieldProps = BoxProps &\n PropsWithChildren<DatePickerVariantProps> &\n CalendarVariants & {\n isDisabled?: boolean;\n ariaLabelledby?: string;\n };\nexport const StyledField = forwardRef<HTMLDivElement, StyledFieldProps>(\n function StyledField(props, ref) {\n const { children, variant, isDisabled, ariaLabelledby, ...otherProps } =\n props;\n const { invalid } = useFieldContext() ?? {\n isInvalid: false,\n };\n\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({ variant });\n\n return (\n <Box\n {...otherProps}\n css={styles.wrapper}\n ref={ref}\n aria-invalid={invalid}\n aria-disabled={isDisabled}\n aria-labelledby={ariaLabelledby}\n >\n {children}\n </Box>\n );\n },\n);\n","\"use client\";\nimport {\n Box,\n BoxProps,\n Popover as ChakraPopover,\n PopoverAnchor,\n PopoverRootProps,\n Portal,\n useFieldContext,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { DateValue } from \"@internationalized/date\";\nimport { PropsWithChildren, useRef } from \"react\";\nimport {\n AriaDateRangePickerProps,\n I18nProvider,\n useDateRangePicker,\n useId,\n} from \"react-aria\";\nimport { useDateRangePickerState } from \"react-stately\";\n\nimport { Field, FieldBaseProps } from \"../input/Field\";\nimport { datePickerSlotRecipe } from \"../theme/slot-recipes/datepicker\";\nimport { CalendarTriggerButton } from \"./CalendarTriggerButton\";\nimport { DateField } from \"./DateField\";\nimport { DatePickerVariantProps } from \"./DatePicker\";\nimport { RangeCalendar } from \"./RangeCalendar\";\nimport { StyledField } from \"./StyledField\";\nimport { CalendarVariants } from \"./types\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype DateRangePickerProps = Omit<\n AriaDateRangePickerProps<DateValue>,\n \"onChange\" | \"errorMessage\" | \"isInvalid\" | \"isRequired\"\n> &\n Pick<BoxProps, \"minHeight\"> &\n PropsWithChildren<DatePickerVariantProps> &\n CalendarVariants & {\n startLabel?: string;\n startName?: string;\n endLabel?: string;\n endName?: string;\n withPortal?: boolean;\n onChange?: (\n dates: {\n start: DateValue | null;\n end: DateValue | null;\n } | null,\n ) => void;\n positioning?: PopoverRootProps[\"positioning\"];\n } & FieldBaseProps;\n/**\n * A date range picker component.\n *\n * There are three variants to choose from – `core`, `floating` and `ghost`.\n *\n * ```tsx\n * <DateRangePicker startLabel=\"From\" startName=\"from\" endLabel=\"To\" endName=\"to\" variant=\"core\" />\n * ```\n */ export function DateRangePicker({\n variant,\n minHeight,\n startName,\n endName,\n withPortal = true,\n errorText,\n helperText,\n invalid,\n positioning,\n ...props\n}: DateRangePickerProps) {\n const fieldContextPRops = useFieldContext();\n const state = useDateRangePickerState({\n ...props,\n shouldCloseOnSelect: true,\n isInvalid: invalid,\n errorMessage: errorText,\n\n isRequired: props.required ?? fieldContextPRops?.required,\n validationState: fieldContextPRops?.invalid ? \"invalid\" : \"valid\",\n });\n const ref = useRef(null);\n const uniqueId = useId();\n const datePickerId = `date-range-picker-${uniqueId}`;\n\n const {\n labelProps,\n startFieldProps,\n endFieldProps,\n buttonProps,\n dialogProps,\n calendarProps,\n } = useDateRangePicker(props, state, ref);\n\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({ variant });\n const locale = useCurrentLocale();\n\n const onFieldClick = () => {\n state.setOpen(true);\n };\n\n const popoverContent = (\n <ChakraPopover.Positioner>\n <ChakraPopover.Content css={styles.calendarPopover}>\n <ChakraPopover.Body maxWidth=\"60rem\">\n <RangeCalendar variant={\"core\"} {...calendarProps} />\n </ChakraPopover.Body>\n </ChakraPopover.Content>\n </ChakraPopover.Positioner>\n );\n\n return (\n <I18nProvider locale={locale}>\n <Box position=\"relative\" display=\"inline-flex\" flexDirection=\"column\">\n {props.label && (\n <label {...labelProps} htmlFor={datePickerId}>\n {props.label}\n </label>\n )}\n <ChakraPopover.Root {...dialogProps} positioning={positioning}>\n <Field\n width=\"auto\"\n display=\"inline-flex\"\n id={datePickerId}\n errorText={errorText}\n helperText={helperText}\n invalid={invalid}\n >\n <PopoverAnchor>\n <StyledField\n alignItems=\"center\"\n paddingX={3}\n variant={variant}\n onClick={onFieldClick}\n minHeight={minHeight}\n >\n {variant && (\n <ChakraPopover.Trigger asChild>\n <CalendarTriggerButton\n variant={variant}\n ref={ref}\n {...buttonProps}\n />\n </ChakraPopover.Trigger>\n )}\n\n <DateField\n {...startFieldProps}\n name={startName}\n label={props.startLabel}\n labelProps={labelProps}\n />\n <Box\n as=\"span\"\n aria-hidden=\"true\"\n paddingRight=\"2\"\n paddingLeft={\"2\"}\n >\n –\n </Box>\n\n <DateField\n {...endFieldProps}\n name={endName}\n label={props.endLabel}\n labelProps={labelProps}\n />\n </StyledField>\n </PopoverAnchor>\n </Field>\n {state.isOpen && withPortal && <Portal>{popoverContent}</Portal>}\n {state.isOpen && !withPortal && popoverContent}\n </ChakraPopover.Root>\n </Box>\n </I18nProvider>\n );\n}\n","\"use client\";\nimport { Box, useSlotRecipe } from \"@chakra-ui/react\";\nimport { createCalendar, DateValue } from \"@internationalized/date\";\nimport { useRef } from \"react\";\nimport {\n RangeCalendarProps as ReactAriaRangeCalendarProps,\n useRangeCalendar,\n} from \"react-aria\";\nimport { useRangeCalendarState } from \"react-stately\";\n\nimport { datePickerSlotRecipe } from \"@/theme/slot-recipes/datepicker\";\n\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { CalendarHeader } from \"./CalendarHeader\";\nimport { CalendarVariants } from \"./types\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype RangeCalendarProps = ReactAriaRangeCalendarProps<DateValue> &\n CalendarVariants;\n\nexport function RangeCalendar(props: RangeCalendarProps) {\n const locale = useCurrentLocale();\n const state = useRangeCalendarState({\n ...props,\n visibleDuration: { months: 2 },\n locale,\n createCalendar,\n });\n const recipe = useSlotRecipe({\n key: \"datePicker\",\n recipe: datePickerSlotRecipe,\n });\n const styles = recipe({});\n const ref = useRef(null);\n const { calendarProps, title } = useRangeCalendar(props, state, ref);\n\n return (\n <Box {...calendarProps} ref={ref} css={styles.rangeCalendarPopover}>\n <CalendarHeader state={state} title={title} />\n <Box display=\"flex\" gap=\"8\" maxWidth=\"100vw\" overflow=\"scroll\">\n <CalendarGrid variant={props.variant} state={state} />\n <CalendarGrid\n variant={props.variant}\n state={state}\n offset={{ months: 1 }}\n />\n </Box>\n </Box>\n );\n}\n","\"use client\";\nimport { BoxProps, useFieldContext } from \"@chakra-ui/react\";\nimport { CalendarDateTime } from \"@internationalized/date\";\nimport { TimeValue } from \"@react-types/datepicker\";\nimport {\n DropdownLeftFill18Icon,\n DropdownRightFill18Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { useTimeFieldState } from \"react-stately\";\n\nimport { Field, FieldBaseProps } from \"@/input/Field\";\n\nimport { createTexts, IconButton, useTranslation } from \"..\";\nimport { StyledField } from \"./StyledField\";\nimport { TimeField } from \"./TimeField\";\nimport { getCurrentTime, useCurrentLocale } from \"./utils\";\n\ntype TimePickerProps = Omit<BoxProps, \"defaultValue\" | \"onChange\"> &\n FieldBaseProps & {\n /** The label. Defaults to a localized version of \"Time\" */\n label?: string;\n /** The name of the form field, if used in a regular form */\n name?: string;\n /** The controlled value, if any.\n *\n * A `new Time(hours, minutes)` should be passed.\n * Or `null` if the time should be unset.\n **/\n value?: TimeValue | null;\n /** A default value, if any.\n *\n * A `new Time(hours, minutes)` should be passed.\n * Defaults to the current time if not provided.\n * Can be set to null if you don't want a time to be selected by default.\n **/\n defaultValue?: TimeValue | null;\n /** Callback for when the time changes */\n onChange?: (value: TimeValue | null) => void;\n /** The maxiumum number of minutes to move when the step buttons are used.\n *\n * Defaults to 30 minutes.\n *\n * An example: If the time is at 13:37 and the minuteInterval is 15, clicking the step forwards button will move the time to 13:45. Next click will move it to 14:00.\n */\n minuteInterval?: number;\n /** Whether or not the field is disabled */\n disabled?: boolean;\n /**\n * The variant of the time picker.\n * Defaults to \"core\".\n */\n variant?: \"core\" | \"floating\" | \"ghost\";\n };\n/** A time picker component.\n *\n * This lets the user select a time of day, either through typing it in, using the up and down arrows to select the hour and minute, or by clicking the step buttons to move the time forwards or backwards in pre-defined increments.\n *\n * ```tsx\n * <TimePicker />\n * ```\n *\n * It can also be controlled:\n *\n * ```tsx\n * <TimePicker value={new Time(13, 37)} onChange={setTime} />\n * ```\n *\n * Note that the TimePicker uses the `Time` class to represent the time. This is a class that is part of the `@internationalized/date` package.\n *\n * @see https://spor.vy.no/komponents/timepicker\n */\nexport const TimePicker = ({\n label: externalLabel,\n value,\n defaultValue = getCurrentTime(),\n onChange = () => {},\n minuteInterval = 30,\n disabled: isDisabledExternally = false,\n name,\n ...boxProps\n}: TimePickerProps) => {\n const { disabled: fieldDisabled, invalid: fieldInvalid } =\n useFieldContext() ?? {};\n const isDisabled = isDisabledExternally ?? fieldDisabled ?? false;\n const { t } = useTranslation();\n const locale = useCurrentLocale();\n const label = externalLabel ?? t(texts.time);\n const state = useTimeFieldState({\n value,\n defaultValue,\n onChange,\n locale,\n isDisabled,\n label,\n validationState: fieldInvalid ? \"invalid\" : \"valid\",\n });\n\n const dateTime = state.value as CalendarDateTime | null;\n\n const handleBackwardsClick = () => {\n if (!dateTime) {\n return;\n }\n const minutesToSubtract =\n dateTime.minute % minuteInterval || minuteInterval;\n state.setValue(\n dateTime.subtract({\n minutes: minutesToSubtract,\n }),\n );\n };\n\n const handleForwardClick = () => {\n if (!dateTime) {\n return;\n }\n const minutesToAdd =\n minuteInterval - (dateTime.minute % minuteInterval) || minuteInterval;\n state.setValue(\n dateTime.add({\n minutes: minutesToAdd,\n }),\n );\n };\n const backwardsLabel = `${t(texts.backwards)} ${minuteInterval} ${t(\n texts.minutes,\n )}`;\n const forwardsLabel = `${t(texts.forwards)} ${minuteInterval} ${t(\n texts.minutes,\n )}`;\n const inputLabel = label ?? t(texts.time);\n const ariaLabel = `${inputLabel} – ${t(\n texts.selectedTimeIs(`${dateTime?.hour ?? 0} ${dateTime?.minute ?? 0}`),\n )}`;\n\n return (\n <Field as=\"time\" {...boxProps}>\n <StyledField\n width=\"fit-content\"\n paddingX={2}\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={2}\n opacity={isDisabled ? 0.5 : 1}\n pointerEvents={isDisabled ? \"none\" : \"auto\"}\n aria-disabled={isDisabled}\n aria-live=\"assertive\"\n aria-label={ariaLabel}\n {...boxProps}\n >\n <IconButton\n variant=\"ghost\"\n size=\"xs\"\n borderRadius=\"xs\"\n aria-label={backwardsLabel}\n title={backwardsLabel}\n icon={<DropdownLeftFill18Icon />}\n onClick={handleBackwardsClick}\n disabled={isDisabled}\n style={isDisabled ? { backgroundColor: \"transparent\" } : {}}\n />\n <TimeField label={label} state={state} name={name} />\n <IconButton\n variant=\"ghost\"\n size=\"xs\"\n borderRadius=\"xs\"\n aria-label={forwardsLabel}\n title={forwardsLabel}\n icon={<DropdownRightFill18Icon />}\n onClick={handleForwardClick}\n disabled={isDisabled}\n style={isDisabled ? { backgroundColor: \"transparent\" } : {}}\n />\n </StyledField>\n </Field>\n );\n};\n\nconst texts = createTexts({\n selectedTimeIs: (time) => ({\n nb: `Valgt tidspunkt er ${time}`,\n nn: `Valt tidspunkt er ${time}`,\n en: `Selected time is ${time}`,\n sv: `Vald tid är ${time}`,\n }),\n time: {\n nb: \"Tid\",\n nn: \"Tid\",\n en: \"Time\",\n sv: \"Tid\",\n },\n backwards: {\n nb: \"Bakover\",\n nn: \"Bakover\",\n en: \"Backwards\",\n sv: \"Bakåt\",\n },\n forwards: {\n nb: \"Fremover\",\n nn: \"Fremover\",\n en: \"Forward\",\n sv: \"Framåt\",\n },\n minutes: {\n nb: \"minutter\",\n nn: \"minuttar\",\n en: \"minutes\",\n sv: \"minuter\",\n },\n});\n","\"use client\";\nimport { Box, Flex } from \"@chakra-ui/react\";\nimport { CalendarDateTime, Time } from \"@internationalized/date\";\nimport { useRef } from \"react\";\nimport { AriaTimeFieldProps, useTimeField } from \"react-aria\";\nimport { DateSegment, TimeFieldState } from \"react-stately\";\n\nimport { DateTimeSegment } from \"./DateTimeSegment\";\nimport { getTimestampFromTime } from \"./utils\";\n\ntype TimeFieldProps = AriaTimeFieldProps<Time> & {\n state: TimeFieldState;\n label: string;\n name?: string;\n};\n/** A time field component.\n *\n * This component lets the user choose a time based on regular user input.\n * It shouldn't be used directly, but is used by the TimePicker component.\n */\nexport const TimeField = ({ state, ...props }: TimeFieldProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const { labelProps, fieldProps } = useTimeField(props, state, ref);\n\n return (\n <Box>\n <label\n {...labelProps}\n htmlFor={fieldProps.id}\n style={{\n marginBottom: 0,\n fontSize: \"mobile.xs\",\n cursor: \"text\",\n position: \"absolute\",\n paddingTop: \"2px\",\n }}\n >\n {props.label}\n </label>\n <Flex {...fieldProps} ref={ref} paddingTop=\"3\" paddingBottom=\"0.5\">\n {state.segments.map((segment: DateSegment) => (\n <DateTimeSegment key={segment.type} segment={segment} state={state} />\n ))}\n </Flex>\n <input\n type=\"hidden\"\n value={getTimestampFromTime(state.value as CalendarDateTime | null)}\n name={props.name}\n />\n </Box>\n );\n};\n","export * from \"./DatePicker\";\nexport * from \"./DateRangePicker\";\nexport * from \"./TimePicker\";\nexport { Time } from \"@internationalized/date\";\n","\"use client\";\nimport { Dialog as ChakraDialog, Portal } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nimport { CloseButton } from \"../button\";\n\ninterface DialogContentProps extends ChakraDialog.ContentProps {\n portalled?: boolean;\n portalRef?: React.RefObject<HTMLElement>;\n backdrop?: boolean;\n children?: React.ReactNode;\n}\n\nexport const DialogContent = React.forwardRef<\n HTMLDivElement,\n DialogContentProps\n>((props, ref) => {\n const {\n children,\n portalled = true,\n portalRef,\n backdrop = true,\n ...rest\n } = props;\n\n return (\n <Portal disabled={!portalled} container={portalRef}>\n {backdrop && <ChakraDialog.Backdrop />}\n <ChakraDialog.Positioner>\n <ChakraDialog.Content ref={ref} {...rest} asChild={false}>\n {children}\n </ChakraDialog.Content>\n </ChakraDialog.Positioner>\n </Portal>\n );\n});\nDialogContent.displayName = \"DialogContent\";\n\nexport const DialogCloseTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraDialog.CloseTriggerProps\n>(function DialogCloseTrigger(props, ref) {\n return (\n <ChakraDialog.CloseTrigger ref={ref} {...props} asChild>\n <CloseButton size=\"md\" />\n </ChakraDialog.CloseTrigger>\n );\n});\n\nexport const DialogRoot = ChakraDialog.Root;\nexport const DialogFooter = ChakraDialog.Footer;\nexport const DialogHeader = ChakraDialog.Header;\nexport const DialogBody = ChakraDialog.Body;\nexport const DialogBackdrop = ChakraDialog.Backdrop;\nexport const DialogTitle = ChakraDialog.Title;\nexport const DialogDescription = ChakraDialog.Description;\nexport const DialogTrigger = ChakraDialog.Trigger;\nexport const DialogActionTrigger = ChakraDialog.ActionTrigger;\n","\"use client\";\n\nimport {\n Box,\n createContext,\n Drawer as ChakraDrawer,\n Grid,\n GridItem,\n Portal,\n} from \"@chakra-ui/react\";\nimport {\n ArrowLeftFill24Icon,\n CloseFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef } from \"react\";\n\nimport { Button, CloseButton } from \"../button\";\nimport { createTexts, useTranslation } from \"../i18n\";\nimport {\n DrawerContentProps,\n DrawerFullScreenHeaderProps,\n DrawerProps,\n} from \"./types\";\n\n/**\n * A drawer is a panel that slides in from the side of the screen. It is used to display additional content without taking up too much space.\n *\n * Basic example:\n *\n * ```tsx\n * <Drawer placement=\"bottom\" size=\"md\">\n * <DrawerTrigger asChild>\n * <Button variant=\"primary\">Open drawer</Button>\n * </DrawerTrigger>\n * <DrawerContent>\n * <DrawerHeader>\n * <DrawerCloseTrigger />\n * <DrawerTitle>Drawer title</DrawerTitle>\n * </DrawerHeader>\n * <DrawerBody>\n * Drawer content\n * </DrawerBody>\n * </DrawerContent>\n * </Drawer>\n * ```\n */\n\ntype DrawerContextProps = ChakraDrawer.RootProps;\n\nconst [RootDrawerProvider, useRootDrawerProps] =\n createContext<DrawerContextProps>({\n name: \"RootDrawerProvider\",\n });\n\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n (props, ref) => {\n const { children, portalled = true, portalRef, ...rest } = props;\n const { size, placement } = useRootDrawerProps();\n const sizeNotFull = size !== \"full\";\n return (\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraDrawer.Positioner>\n <ChakraDrawer.Content ref={ref} {...rest}>\n {sizeNotFull && placement === \"bottom\" && <CloseDrawerLine />}\n {children}\n {sizeNotFull && placement === \"top\" && <CloseDrawerLine />}\n </ChakraDrawer.Content>\n </ChakraDrawer.Positioner>\n </Portal>\n );\n },\n);\nDrawerContent.displayName = \"DrawerContent\";\n\nexport const CloseDrawerLine = forwardRef<HTMLButtonElement>((props, ref) => {\n const { t } = useTranslation();\n return (\n <ChakraDrawer.CloseTrigger\n {...props}\n ref={ref}\n position=\"relative\"\n insetEnd=\"unset\"\n aria-label={t(texts.close)}\n cursor=\"pointer\"\n top={0}\n paddingY={2}\n >\n <Box\n width={7}\n height={1}\n backgroundColor=\"silver\"\n borderRadius=\"xs\"\n marginX=\"auto\"\n />\n </ChakraDrawer.CloseTrigger>\n );\n});\nCloseDrawerLine.displayName = \"CloseDrawerLine\";\n\nexport const DrawerCloseTrigger = forwardRef<\n HTMLButtonElement,\n ChakraDrawer.CloseTriggerProps\n>(function DrawerCloseTrigger(props, ref) {\n const { size } = useRootDrawerProps();\n const { t } = useTranslation();\n return (\n <ChakraDrawer.CloseTrigger ref={ref} {...props} asChild>\n {size === \"full\" ? (\n <Button variant=\"ghost\" leftIcon={<CloseFill24Icon />}>\n {t(texts.close)}\n </Button>\n ) : (\n <CloseButton size=\"md\" />\n )}\n </ChakraDrawer.CloseTrigger>\n );\n});\n\nexport const DrawerBackTrigger = forwardRef<\n HTMLButtonElement,\n ChakraDrawer.CloseTriggerProps\n>((props, ref) => {\n const { t } = useTranslation();\n return (\n <ChakraDrawer.CloseTrigger asChild {...props} ref={ref} top=\"0\">\n <Button variant=\"ghost\" leftIcon={<ArrowLeftFill24Icon />}>\n {t(texts.back)}\n </Button>\n </ChakraDrawer.CloseTrigger>\n );\n});\nDrawerBackTrigger.displayName = \"DrawerBackTrigger\";\n\nexport const DrawerFullScreenHeader = forwardRef<\n HTMLDivElement,\n DrawerFullScreenHeaderProps\n>((props, ref) => {\n const { backTrigger = true, title } = props;\n return (\n <ChakraDrawer.Header {...props} ref={ref} asChild>\n <Grid templateColumns=\"1fr auto 1fr\" height=\"auto\" paddingX=\"8\">\n <GridItem width=\"full\" alignSelf=\"center\">\n {backTrigger && <DrawerBackTrigger />}\n </GridItem>\n <GridItem width=\"full\" alignSelf=\"end\" asChild>\n {title && <DrawerTitle>{title}</DrawerTitle>}\n </GridItem>\n <GridItem width=\"full\" alignSelf=\"end\">\n <DrawerCloseTrigger justifySelf=\"end\" top=\"0\" />\n </GridItem>\n </Grid>\n </ChakraDrawer.Header>\n );\n});\nDrawerFullScreenHeader.displayName = \"DrawerFullScreenHeader\";\n\nexport const Drawer = (props: DrawerProps) => {\n const { children, placement, size = \"md\", ...rest } = props;\n return (\n <RootDrawerProvider value={props}>\n <ChakraDrawer.Root {...rest} placement={placement} size={size}>\n <DrawerBackdrop />\n {children}\n </ChakraDrawer.Root>\n </RootDrawerProvider>\n );\n};\n\nexport const DrawerTrigger = ChakraDrawer.Trigger;\nexport const DrawerFooter = ChakraDrawer.Footer;\nexport const DrawerBody = ChakraDrawer.Body;\nexport const DrawerBackdrop = ChakraDrawer.Backdrop;\nexport const DrawerTitle = ChakraDrawer.Title;\nexport const DrawerActionTrigger = ChakraDrawer.ActionTrigger;\nexport const DrawerHeader = ChakraDrawer.Header;\n\nconst texts = createTexts({\n back: {\n en: \"Back\",\n nb: \"Tilbake\",\n nn: \"Tilbake\",\n sv: \"Tillbaka\",\n },\n close: {\n en: \"Close\",\n nb: \"Lukk\",\n nn: \"Lukk\",\n sv: \"Stäng\",\n },\n});\n","export type { ImageProps } from \"@chakra-ui/react\";\nexport { Image } from \"@chakra-ui/react\";\n","\"use client\";\n\nimport {\n chakra,\n Group,\n GroupProps,\n RecipeVariantProps,\n} from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nimport { attachedInputsRecipe } from \"@/theme/recipes/attached-inputs\";\n\n/**\n * Attaches several inputs together, so that they look like one input.\n *\n * ```tsx\n * <AttachedInputs>\n * <Input />\n * <NativeSelect>\n * <Item />\n * </NativeSelect>\n * </AttachedInputs>\n * ```\n */\n\nexport type AttachedInputsProps = RecipeVariantProps<\n typeof attachedInputsRecipe\n> &\n GroupProps;\n\nconst StyledGroup = chakra(Group, attachedInputsRecipe);\n\nexport const AttachedInputs = forwardRef<HTMLDivElement, AttachedInputsProps>(\n (props, ref) => {\n return <StyledGroup ref={ref} attached {...props} />;\n },\n);\nAttachedInputs.displayName = \"AttachedInputs\";\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const attachedInputsRecipe = defineRecipe({\n base: {\n display: \"flex\",\n gap: \"0.1rem\",\n width: \"100%\",\n \"& select\": {\n borderEndRadius: 0,\n },\n },\n variants: {\n orientation: {\n horizontal: {\n flexDirection: \"row\",\n \"& > *:first-of-type:not(:last-of-type) [data-attachable]\": {\n borderEndRadius: 0,\n },\n \"& > *:not(:first-of-type):not(:last-of-type) [data-attachable]\": {\n borderRadius: 0,\n },\n \"& > *:not(:first-of-type):last-of-type [data-attachable]\": {\n borderStartRadius: 0,\n },\n },\n vertical: {\n flexDirection: \"column\",\n \"& > *:first-of-type:not(:last-of-type) [data-attachable]\": {\n borderBottomRadius: 0,\n },\n \"& > *:not(:first-of-type):not(:last-of-type) [data-attachable]\": {\n borderRadius: 0,\n },\n \"& > *:not(:first-of-type):last-of-type [data-attachable]\": {\n borderTopRadius: 0,\n },\n },\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n});\n","\"use client\";\nimport {\n Popover as ChakraPopover,\n PopoverRootProps,\n Portal,\n usePopoverContext,\n} from \"@chakra-ui/react\";\nimport {\n DropdownDownFill18Icon,\n DropdownDownFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, ReactNode } from \"react\";\n\nimport { Button, ButtonProps, StaticCard, StaticCardProps } from \"..\";\n\nexport const CardSelect = ({ size = \"md\", ...props }: PopoverRootProps) => {\n return <ChakraPopover.Root size={size} {...props} />;\n};\n\nexport const CardSelectContent = forwardRef<HTMLDivElement, StaticCardProps>(\n ({ children, ...props }, ref) => {\n return (\n <Portal>\n <ChakraPopover.Positioner>\n <ChakraPopover.Content ref={ref} padding={0} bg=\"none\">\n <ChakraPopover.Body {...props}>\n <StaticCard\n p=\"2\"\n bg=\"bg\"\n border=\"sm\"\n borderColor=\"floating.outline\"\n {...props}\n >\n {children}\n </StaticCard>\n </ChakraPopover.Body>\n </ChakraPopover.Content>\n </ChakraPopover.Positioner>\n </Portal>\n );\n },\n);\nCardSelectContent.displayName = \"CardSelectContent\";\n\nexport type CardSelectTriggerProps = {\n /** The design of the trigger button.\n *\n * - `ghost` is a transparent button with text\n * - `core` is a button with a border and text\n * - `floating` is a button with a drop shadow (like a card) and text\n */\n variant?: \"core\" | \"ghost\" | \"floating\";\n /** An optional trigger button icon, rendered to the left of the label */\n icon?: ReactNode;\n /** Whether or not to show the chevron. Defaults to true */\n withChevron?: boolean;\n} & Omit<ButtonProps, \"variant\" | \"rightIcon\" | \"leftIcon\">;\n\nconst bgActiveStyleMap = {\n core: \"core.surface.active\",\n ghost: \"ghost.surface.active\",\n floating: \"floating.surface.active\",\n};\n\nexport const CardSelectTrigger = forwardRef<\n HTMLButtonElement,\n CardSelectTriggerProps\n>(\n (\n { icon, variant = \"core\", withChevron = true, size, children, ...props },\n ref,\n ) => {\n const ChevronIcon =\n size === \"sm\" ? DropdownDownFill18Icon : DropdownDownFill24Icon;\n\n const { open } = usePopoverContext();\n\n return (\n <ChakraPopover.Trigger asChild ref={ref}>\n <Button\n leftIcon={icon}\n variant={\n variant === \"core\"\n ? \"tertiary\"\n : (variant as ButtonProps[\"variant\"])\n }\n size={size}\n bg={open ? bgActiveStyleMap[variant] : undefined}\n rightIcon={\n withChevron ? (\n <ChevronIcon\n transform={open ? \"rotate(180deg)\" : undefined}\n transition=\"transform 0.3s\"\n />\n ) : null\n }\n {...props}\n >\n {children}\n </Button>\n </ChakraPopover.Trigger>\n );\n },\n);\nCardSelectTrigger.displayName = \"CardSelectTrigger\";\n","import {\n Checkbox as ChakraCheckbox,\n RecipeVariantProps,\n} from \"@chakra-ui/react\";\nimport * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\n\nimport { checkboxSlotRecipe } from \"@/theme/slot-recipes/checkbox\";\n\ntype CheckboxVariantProps = RecipeVariantProps<typeof checkboxSlotRecipe>;\n\ntype CheckboxProps = ChakraCheckbox.RootProps &\n PropsWithChildren<CheckboxVariantProps> & {\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n rootRef?: React.Ref<HTMLLabelElement>;\n };\n\n/**\n * Creates a checkbox.\n *\n * The checkbox contains its own label, which is passed as a children prop:\n *\n * ```tsx\n * <Checkbox>Accept the terms</Checkbox>\n * ```\n *\n * Unlike regular inputs, it doesn't require its own `Field`.\n *\n * You can group several of these together with a `CheckboxGroup`.\n */\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (props, ref) => {\n const { children, inputProps, rootRef, ...rest } = props;\n return (\n <ChakraCheckbox.Root ref={rootRef} {...rest}>\n <ChakraCheckbox.HiddenInput ref={ref} {...inputProps} />\n <ChakraCheckbox.Control>\n <ChakraCheckbox.Indicator />\n </ChakraCheckbox.Control>\n {children != null && (\n <ChakraCheckbox.Label>{children}</ChakraCheckbox.Label>\n )}\n </ChakraCheckbox.Root>\n );\n },\n);\nCheckbox.displayName = \"Checkbox\";\n","import {\n CheckboxGroup as ChakraCheckboxGroup,\n CheckboxGroupProps as ChakraCheckboxGroupProps,\n Stack,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef } from \"react\";\n\nexport type CheckboxGroupProps = Exclude<\n ChakraCheckboxGroupProps,\n \"colorPalette\" | \"size\" | \"variant\"\n> & {\n /* Defaults to row */\n direction?: \"row\" | \"column\";\n children: React.ReactNode;\n /* Defaults to 1 */\n gap?: number | string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any; //Find a way to not use type any\n};\n/**\n * Used to group several checkboxes together. You can pass the default value, as well as whether or not they're all disabled\n *\n * ```tsx\n * <CheckboxGroup disabled defaultValue={['red', 'blue']}>\n * <Checkbox value=\"red\">Red</Checkbox>\n * <Checkbox value=\"blue\">Blue</Checkbox>\n * <Checkbox value=\"green\">Green</Checkbox>\n * </CheckboxGroup>\n * ```\n *\n * By default, checkboxes in a CheckboxGroup show up horizontally. If you want them to show up vertically, please specify the `direction=\"column\"` prop.\n *\n * ```tsx\n * <CheckboxGroup direction=\"column\">\n * <Checkbox>Economy</Checkbox>\n * <Checkbox>Business</Checkbox>\n * <Checkbox>First Class</Checkbox>\n * </CheckboxGroup>\n */\n\nexport const CheckboxGroup = forwardRef<HTMLDivElement, CheckboxGroupProps>(\n (props, ref) => {\n const { direction = \"row\", children, gap = 1, ...rest } = props;\n\n return (\n <ChakraCheckboxGroup ref={ref} {...rest}>\n <Stack direction={direction} gap={gap}>\n {children}\n </Stack>\n </ChakraCheckboxGroup>\n );\n },\n);\nCheckboxGroup.displayName = \"CheckboxGroup\";\n","\"use client\";\nimport { CheckboxCard, CheckboxCardRootProps, Span } from \"@chakra-ui/react\";\nimport { CloseOutline24Icon } from \"@vygruppen/spor-icon-react\";\nimport React, { forwardRef } from \"react\";\n\ntype CheckBoxIcon = {\n default: React.ReactNode;\n checked: React.ReactNode;\n};\n\nexport type ChoiceChipProps = Omit<\n CheckboxCardRootProps,\n \"onCheckedChange\" | \"checked\"\n> & {\n icon?: CheckBoxIcon;\n onCheckedChange?: (checked: boolean) => void;\n checked: boolean;\n};\n\n/**\n * Choice chips are checkboxes that look like selectable buttons.\n *\n * Choice chips are available in four different sizes - `xs`, `sm`, `md` and `lg`.\n *\n * ```tsx\n * <Stack flexDirection=\"row\">\n * <ChoiceChip size=\"lg\">Bus</ChoiceChip>\n * <ChoiceChip size=\"lg\">Train</ChoiceChip>\n * </Stack>\n * ```\n *\n * There are also three different chipType - `icon`, `choice` and `filter`.\n *\n * ```tsx\n * <Stack flexDirection=\"row\">\n * <ChoiceChip chipType=\"icon\" icon={<Bus24Icon />}>Bus</ChoiceChip>\n * <ChoiceChip chipType=\"choice\" icon={<Bus24Icon />}>Bus</ChoiceChip>\n * <ChoiceChip chipType=\"filter\" icon={<Bus24Icon />}>Bus</ChoiceChip>\n * </Stack>\n *\n * There are also three different variants - `core`, `accent` and `floating`.\n *\n * ```tsx\n * <Stack flexDirection=\"row\">\n * <ChoiceChip variant=\"core\">Bus</ChoiceChip>\n * <ChoiceChip variant=\"accent\">Boat</ChoiceChip>\n * <ChoiceChip variant=\"floating\">Train</ChoiceChip>\n * </Stack>\n * ```\n */\n\nexport const ChoiceChip = forwardRef<HTMLInputElement, ChoiceChipProps>(\n ({ children, icon, onCheckedChange, ...rootProps }, ref) => {\n return (\n <CheckboxCard.Root\n {...rootProps}\n {...(onCheckedChange && {\n onCheckedChange: (details) => onCheckedChange(!!details.checked),\n })}\n >\n <CheckboxCard.Context>\n {({ checked }) => (\n <>\n <CheckboxCard.HiddenInput ref={ref} />\n <CheckboxCard.Control>\n <CheckboxCard.Content>\n <CheckboxCard.Label>\n {icon && (\n <Span width=\"24px\">\n {checked ? icon.checked : icon.default}\n </Span>\n )}\n\n {rootProps.chipType !== \"icon\" && children}\n\n {rootProps.chipType === \"filter\" && checked && (\n <CloseOutline24Icon />\n )}\n </CheckboxCard.Label>\n </CheckboxCard.Content>\n </CheckboxCard.Control>\n </>\n )}\n </CheckboxCard.Context>\n </CheckboxCard.Root>\n );\n },\n);\n\nChoiceChip.displayName = \"ChoiceChip\";\n","\"use client\";\nimport React, { ReactNode, useEffect, useId, useRef, useState } from \"react\";\nimport { AriaComboBoxProps, useComboBox, useFilter } from \"react-aria\";\nimport { useComboBoxState } from \"react-stately\";\n\nimport { ColorSpinner, Input, InputProps, ListBox } from \"..\";\nimport { Popover } from \"./Popover\";\n\nexport type ComboboxProps<T> = Exclude<\n InputProps,\n \"variant\" | \"colorPalette\" | \"size\"\n> &\n AriaComboBoxProps<T> & {\n /** The label of the combobox */\n label: string;\n /** Whether or not the combobox is waiting for new suggestions */\n loading?: boolean;\n /** Optional UI to show when there are no matching items */\n emptyContent?: React.ReactNode;\n /** A ref to the input field */\n inputRef?: React.RefObject<HTMLInputElement>;\n /** If you want to allow an empty collection */\n allowsEmptyCollection?: boolean;\n leftIcon?: ReactNode;\n rightIcon?: ReactNode;\n variant?: \"core\" | \"floating\";\n children?: React.ReactNode;\n };\n/**\n * A combobox is a combination of an input and a list of suggestions.\n *\n * It is used to select a single item from a list of suggestions.\n *\n * @example\n * ```tsx\n * <Combobox\n * label=\"Choose a color\"\n * items={[\n * { label: \"Green\", value: \"green\" },\n * { label: \"Blue\", value: \"blue\" },\n * { label: \"Yellow\", value: \"yellow\" },\n * ]}\n * >\n * {(item) => (\n * <Item key={item.value} value={item.value}>\n * {item.label}\n * </Item>\n * )}\n * </Combobox>\n * ```\n */\n\nexport const Combobox = (props: ComboboxProps<object>) => {\n const {\n label,\n loading,\n leftIcon,\n rightIcon,\n borderBottomLeftRadius = \"sm\",\n borderBottomRightRadius = \"sm\",\n borderTopLeftRadius = \"sm\",\n borderTopRightRadius = \"sm\",\n marginBottom,\n marginTop,\n marginX,\n marginY,\n marginRight,\n marginLeft,\n paddingBottom,\n paddingRight,\n paddingTop,\n paddingLeft,\n paddingX,\n paddingY,\n emptyContent,\n inputRef: externalInputRef,\n children,\n variant,\n } = props;\n const { contains } = useFilter({ sensitivity: \"base\" });\n\n const fallbackInputRef = useRef<HTMLInputElement>(null);\n const inputRef = externalInputRef ?? fallbackInputRef;\n const listBoxRef = useRef<HTMLUListElement>(null);\n const popoverRef = useRef(null);\n\n const listboxId = `${useId()}-listbox`;\n\n const inputWidth = useInputWidth(inputRef);\n\n const state = useComboBoxState({\n defaultFilter: contains,\n shouldCloseOnBlur: true,\n ...props,\n });\n\n const comboBoxProps = {\n borderTopLeftRadius,\n borderTopRightRadius,\n marginBottom,\n marginTop,\n marginRight,\n marginLeft,\n marginX,\n marginY,\n paddingBottom,\n paddingRight,\n paddingTop,\n paddingLeft,\n paddingX,\n paddingY,\n leftIcon,\n };\n\n const {\n inputProps: { ...inputProps },\n listBoxProps,\n } = useComboBox(\n {\n ...props,\n inputRef,\n listBoxRef,\n popoverRef,\n label,\n },\n state,\n );\n return (\n <>\n <Input\n {...styleProps(comboBoxProps)}\n aria-haspopup=\"listbox\"\n ref={inputRef}\n role=\"combobox\"\n errorText={props.errorText}\n helperText={props.helperText}\n required={props.required}\n disabled={props.disabled}\n invalid={props.invalid}\n label={label}\n variant={variant}\n aria-expanded={state.isOpen}\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n borderBottomLeftRadius={\n state.isOpen && !loading ? 0 : borderBottomLeftRadius\n }\n borderBottomRightRadius={\n state.isOpen && !loading ? 0 : borderBottomRightRadius\n }\n _active={{ backgroundColor: \"core.surface.active\" }}\n {...inputProps}\n startElement={leftIcon}\n endElement={\n loading ? (\n <ColorSpinner\n width=\"1.5rem\"\n alignSelf=\"center\"\n paddingRight={paddingRight}\n css={{\n div: {\n display: \"flex\",\n alignItems: \"center\",\n },\n }}\n />\n ) : (\n rightIcon\n )\n }\n placeholder=\"\"\n />\n <span aria-hidden=\"true\" data-trigger=\"multiselect\"></span>\n {state.isOpen && !loading && (\n <Popover\n state={state}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n triggerRef={inputRef as any} /* Find a way to not use type any */\n ref={popoverRef}\n isNonModal\n placement=\"bottom start\"\n shouldFlip={false}\n hasBackdrop={false}\n // The minimum padding should be 0, because the popover always should be\n // aligned with the input field regardless of the left padding in the container.\n containerPadding={0}\n >\n <ListBox\n {...listBoxProps}\n {...{\n autoFocus:\n typeof listBoxProps.autoFocus === \"boolean\"\n ? listBoxProps.autoFocus\n : undefined,\n }}\n state={state}\n id={listboxId}\n listBoxRef={listBoxRef}\n emptyContent={emptyContent}\n maxWidth={inputWidth}\n variant={variant}\n >\n {children}\n </ListBox>\n </Popover>\n )}\n </>\n );\n};\n\nCombobox.displayName = \"Combobox\";\n\nconst useInputWidth = (inputRef: React.RefObject<HTMLInputElement>) => {\n const [inputWidth, setInputWidth] = useState(\"auto\");\n useEffect(() => {\n const onResize = debounce(() => {\n if (inputRef.current) {\n setInputWidth(`${inputRef.current.offsetWidth}px`);\n }\n }, 67);\n window.addEventListener(\"resize\", onResize);\n return () => window.removeEventListener(\"resize\", onResize);\n }, [inputRef]);\n return inputWidth;\n};\n\nfunction styleProps(obj: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(obj).filter(([, value]) => value !== undefined),\n );\n}\n\nconst debounce = (fn: () => void, ms = 100) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let timer: any;\n return () => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n timer = null;\n fn();\n }, ms);\n };\n};\n","\"use client\";\nimport { Box } from \"@chakra-ui/react\";\nimport React, { forwardRef, useRef } from \"react\";\nimport {\n AriaPopoverProps,\n DismissButton,\n Overlay,\n usePopover,\n} from \"react-aria\";\nimport { OverlayTriggerState } from \"react-stately\";\n\ntype PopoverProps = {\n /** The content to be shown as a popover */\n children: React.ReactNode;\n /** The internal state of the overlay trigger element.\n *\n * Get this from the useOverlayTriggerState hook or similar.\n */\n state: OverlayTriggerState;\n /** The reference to the trigger button for this overlay */\n triggerRef: React.RefObject<HTMLButtonElement>;\n /** The offset in pixels between the bottom of the trigger and the top of the popover */\n offset?: number;\n /** The cross-axis offset (left or right) of the popover, compared to the center of the trigger element */\n crossOffset?: number;\n /** The position of the popover, relative to the popover.\n *\n * Defaults to \"bottom\"\n */\n placement?: AriaPopoverProps[\"placement\"];\n /**\n * Whether or not the list should flip to the opposite side of the trigger if there is not enough space.\n * Defaults to false.\n */\n shouldFlip?: boolean;\n /**\n * Whether the popover is non-modal, i.e. elements outside the popover may be interacted with by assistive technologies.\n * Most popovers should not use this option as it may negatively impact the screen reader experience. Only use with components such as combobox, which are designed to handle this situation carefully.\n *\n * Defaults to false.\n */\n isNonModal?: boolean;\n /** Whether or not the popover renders a backdrop that stops the user from interacting with background elements\n *\n * Defaults to true\n */\n hasBackdrop?: boolean;\n /** The minimum padding required between the popover and the surrounding container\n *\n * Defaults to 12 (the same as React Aria's default)\n */\n containerPadding?: number;\n};\n/**\n * Internal popover component.\n *\n * Used to render accessible popover content, like a dropdown menu or a card select. Should not be used directly, but as a part of Spor components.\n */\nexport const Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (\n {\n children,\n state,\n triggerRef,\n offset = 0,\n crossOffset = 0,\n placement = \"bottom\",\n shouldFlip = false,\n isNonModal = false,\n hasBackdrop = true,\n containerPadding = 12,\n },\n ref,\n ) => {\n const internalRef = useRef<HTMLDivElement>(null);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const popoverRef = ref ?? (internalRef as any);\n\n const { popoverProps, underlayProps } = usePopover(\n {\n triggerRef,\n popoverRef,\n offset,\n crossOffset,\n placement,\n shouldFlip,\n isNonModal,\n containerPadding,\n },\n state,\n );\n\n const popoverBox = (\n <Box\n {...popoverProps}\n ref={popoverRef}\n minWidth={triggerRef.current?.clientWidth ?? \"auto\"}\n >\n <DismissButton onDismiss={state.close} />\n {children}\n <DismissButton onDismiss={state.close} />\n </Box>\n );\n\n if (isNonModal) {\n return popoverBox;\n }\n return (\n <Overlay>\n {hasBackdrop && <Box {...underlayProps} position=\"fixed\" inset=\"0\" />}\n {popoverBox}\n </Overlay>\n );\n },\n);\nPopover.displayName = \"Popover\";\n","import { Fieldset as ChakraFieldset } from \"@chakra-ui/react\";\n\nexport const Fieldset = ChakraFieldset.Root;\nexport const FieldsetLegend = ChakraFieldset.Legend;\nexport const FieldsetContent = ChakraFieldset.Content;\nexport const FieldsetHelperText = ChakraFieldset.HelperText;\nexport const FieldsetErrorText = ChakraFieldset.ErrorText;\n","\"use client\";\n\nimport {\n Box,\n chakra,\n Flex,\n Input as ChakraInput,\n InputElement,\n} from \"@chakra-ui/react\";\nimport React, { ComponentProps, forwardRef, ReactNode } from \"react\";\n\ntype ChakraInputProps = ComponentProps<typeof ChakraInput>;\n\nimport { inputRecipe } from \"@/theme/recipes/input\";\n\nimport { Field, FieldProps } from \"./Field\";\n\nexport type InputProps = FieldProps &\n Exclude<\n ChakraInputProps,\n \"size\" | \"label\" | \"colorPalette\" | \"placeholder\"\n > & {\n /** The input's label */\n label: ReactNode;\n /** Element that shows up to the left */\n startElement?: React.ReactNode;\n /** Element that shows up to the right */\n endElement?: React.ReactNode;\n };\n/**\n * Inputs let you enter text or other data.\n *\n * You need to specify the label as a prop, since it doubles as the placeholder.\n *\n * ```tsx\n * <Input label=\"E-mail\" />\n * ```\n *\n * You can also add icons to the left and right of the input. Please use the 24 px icons for this.\n *\n * ```tsx\n * <Input label=\"E-mail\" startElement={<EmailOutline24Icon />} />\n * ```\n *\n * Input has two variants core, and floating.\n *\n * ```tsx\n * <Input label=\"E-mail\" startElement={<EmailOutline24Icon />} variant=\"floating\" />\n * ```\n *\n * Field is added to Input, so you can add helperText, errorText, and optionalText.\n *\n * ```tsx\n * <Input label=\"E-mail\" startElement={<EmailOutline24Icon />} helperText=\"We will never share your email.\" />\n * ```\n *\n * @see https://spor.vy.no/components/input\n */\n\nconst StyledInput = chakra(ChakraInput, inputRecipe);\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n startElement,\n endElement,\n label,\n invalid,\n helperText,\n errorText,\n ...props\n },\n ref,\n ) => {\n return (\n <Field\n invalid={invalid}\n helperText={helperText}\n errorText={errorText}\n label={\n // Render startElement invisibly to align label text with input content when an icon is present\n <Flex>\n <Box visibility=\"hidden\">{startElement}</Box>\n {label}\n </Flex>\n }\n floatingLabel={true}\n >\n {startElement && (\n <InputElement pointerEvents=\"none\" paddingX={2}>\n {startElement}\n </InputElement>\n )}\n <StyledInput\n data-attachable\n ref={ref}\n focusVisibleRing=\"outside\"\n overflow=\"hidden\"\n paddingLeft={startElement ? \"2.6rem\" : undefined}\n paddingRight={endElement ? \"2.6rem\" : undefined}\n {...props}\n className={`peer ${props.className}`}\n placeholder=\"\"\n />\n {endElement && (\n <InputElement placement=\"end\" paddingX={2}>\n {endElement}\n </InputElement>\n )}\n </Field>\n );\n },\n);\nInput.displayName = \"Input\";\n","import { defineRecipe } from \"@chakra-ui/react\";\n\n/* FYI: The styling in this file is also used in Textarea */\n\nexport const inputRecipe = defineRecipe({\n base: {\n appearance: \"none\",\n width: \"100%\",\n outline: \"none\",\n border: 0,\n borderRadius: \"sm\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n color: \"text\",\n position: \"relative\",\n paddingX: 3,\n paddingTop: 3,\n height: 8,\n fontSize: \"mobile.md\",\n\n _disabled: {\n backgroundColor: \"surface.disabled\",\n outline: \"1px solid\",\n outlineColor: \"outline.disabled\",\n pointerEvents: \"none\",\n },\n _invalid: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n _active: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n },\n _focus: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n },\n _hover: {\n outline: \"2px solid\",\n outlineColor: \"core.outline\",\n },\n },\n },\n variants: {\n variant: {\n core: {\n backgroundColor: \"transparent\",\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n _hover: {\n outline: \"2px solid\",\n outlineColor: \"core.outline.hover\",\n _active: {\n outline: \"1px solid\",\n outlineColor: \"outline.disabled\",\n backgroundColor: \"core.surface.active\",\n },\n },\n _focus: {\n outline: \"2px solid\",\n outlineColor: \"outline.focus\",\n },\n },\n floating: {\n boxShadow: \"sm\",\n bg: \"floating.surface\",\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n\n _hover: {\n outline: \"1px solid\",\n outlineColor: \"floating.outline.hover\",\n },\n _active: {\n outline: \"1px solid\",\n outlineColor: \"floating.outline.active\",\n backgroundColor: \"floating.surface.active\",\n },\n\n focus: {\n outline: \"1px solid\",\n outlineColor: \"outline.focus\",\n },\n },\n },\n },\n defaultVariants: {\n variant: \"core\",\n },\n});\n","\"use client\";\nimport {\n Box,\n type BoxProps,\n ListItem,\n ListRootProps,\n RecipeVariantProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport type { Node } from \"@react-types/shared\";\nimport React, { PropsWithChildren, useContext, useEffect, useRef } from \"react\";\nimport {\n AriaListBoxProps,\n useListBox,\n useListBoxSection,\n useOption,\n} from \"react-aria\";\nimport { type ListState, type SelectState } from \"react-stately\";\n\nimport { List } from \"..\";\nimport { useColorModeValue } from \"../color-mode\";\nimport { listBoxSlotRecipe } from \"../theme/slot-recipes/listbox\";\n\nexport { Item, Section } from \"react-stately\";\n\ntype ListBoxVariantProps = RecipeVariantProps<typeof listBoxSlotRecipe>;\n\ntype ListBoxProps<T> = AriaListBoxProps<T> &\n Omit<BoxProps, \"filter\" | \"autoFocus\" | \"children\"> &\n PropsWithChildren<ListBoxVariantProps> &\n Exclude<ListRootProps, \"variant\"> & {\n /** External reference to the ListBox itself */\n listBoxRef: React.RefObject<HTMLUListElement>;\n /** Whether or not the listbox is waiting on new data, i.e. through a autosuggest search */\n loading?: boolean;\n /** The state of the listbox, provided externally somehow. */\n state: ListState<T> | SelectState<unknown>;\n /** UI to render if the collection is empty */\n emptyContent?: React.ReactNode;\n maxWidth?: BoxProps[\"maxWidth\"];\n variant?: \"core\" | \"floating\";\n children: React.ReactNode;\n autoFocus?: boolean;\n };\n\n/**\n * A component that renders a list box with selectable options.\n *\n * @example\n * ```jsx\n * const options = [\n * { id: 1, name: \"Option 1\" },\n * { id: 2, name: \"Option 2\" },\n * { id: 3, name: \"Option 3\" },\n * ];\n *\n * const state = useListState({ items: options });\n * const ref = useRef(null);\n *\n * return (\n * <ListBox state={state} listBoxRef={ref}>\n * {(option) => <div key={option.id}>{option.name}</div>}\n * </ListBox>\n * );\n * ```\n *\n * @example\n * ```jsx\n * const { data, isLoading } = useSWR('/api/options')\n * const state = useListState({ items: data });\n * const ref = useRef(null);\n *\n * return (\n * <ListBox state={state} isLoading={isLoading} ref={ref}>\n * {(option) => <div key={option.id}>{option.name}</div>}\n * </ListBox>\n * );\n * ```\n */\n\nexport const ListBox = (props: ListBoxProps<object>) => {\n const { loading, listBoxRef, state, maxWidth, variant, children } = props;\n const { listBoxProps } = useListBox(props, state, listBoxRef);\n const recipe = useSlotRecipe({ key: \"listBox\" });\n const styles = recipe({ variant });\n return (\n <List\n {...listBoxProps}\n ref={listBoxRef}\n css={styles.root}\n aria-busy={loading}\n maxWidth={maxWidth}\n >\n {state.collection.size === 0 && props.emptyContent}\n {[...state.collection].map((item) =>\n item.type === \"section\" ? (\n <ListBoxSection key={item.key} section={item} state={state} />\n ) : (\n <Option key={item.key} item={item} state={state} />\n ),\n )}\n {children}\n </List>\n );\n};\n\nListBox.displayName = \"ListBox\";\n\n/**\n * Renders a label for a listbox item.\n *\n * Useful if you want to render a custom Item - especially if it has a description.\n */\nexport function ItemLabel({ children }: { children: React.ReactNode }) {\n const { labelProps } = useOptionContext();\n return <Box {...labelProps}>{children}</Box>;\n}\n\n/**\n * Renders a description for an Item.\n *\n * Useful if you want to render a custom Item with more than just a label.\n */\nexport function ItemDescription({ children }: { children: React.ReactNode }) {\n const { descriptionProps } = useOptionContext();\n const recipe = useSlotRecipe({ key: \"listbox\" });\n const styles = recipe({});\n return (\n <Box {...descriptionProps} css={styles} fontSize={\"xs\"}>\n {children}\n </Box>\n );\n}\n\ntype OptionProps = {\n item: Node<unknown>;\n state: SelectState<unknown> | ListState<unknown>;\n};\nfunction Option({ item, state }: OptionProps) {\n const ref = useRef(null);\n const {\n optionProps,\n isSelected,\n isDisabled,\n isFocusVisible,\n isFocused,\n labelProps,\n descriptionProps,\n } = useOption({ key: item.key }, state, ref);\n\n const recipe = useSlotRecipe({ key: \"listBox\" });\n const styles = recipe({});\n\n const dataFields: Record<string, boolean> = {};\n if (isSelected) {\n dataFields[\"data-selected\"] = true;\n }\n if (isDisabled) {\n dataFields[\"data-disabled\"] = true;\n }\n if (isFocused) {\n dataFields[\"data-focus\"] = true;\n }\n if (isFocusVisible) {\n dataFields[\"data-focus-visible\"] = true;\n }\n\n /* \n Workaround to fix click througs on mobile devices\n Related to https://github.com/adobe/react-spectrum/issues/4970\n TODO: Follow up with react-spectrum to see if they can solve it on their end\n */\n useEffect(() => {\n (ref as React.RefObject<HTMLDivElement>)?.current?.addEventListener(\n \"touchend\",\n (event: TouchEvent) => {\n event.preventDefault();\n },\n { passive: false, once: true },\n );\n }, []);\n return (\n <OptionContext.Provider value={{ labelProps, descriptionProps }}>\n <ListItem {...optionProps} {...dataFields} ref={ref} css={styles.item}>\n {item.rendered}\n </ListItem>\n </OptionContext.Provider>\n );\n}\n\ntype OptionContextValue = {\n labelProps: React.HTMLAttributes<HTMLElement>;\n descriptionProps: React.HTMLAttributes<HTMLElement>;\n};\n\nconst OptionContext = React.createContext<OptionContextValue>({\n labelProps: {},\n descriptionProps: {},\n});\n\nconst useOptionContext = () => {\n return useContext(OptionContext);\n};\n\ntype ListBoxSectionProps = {\n section: Node<unknown>;\n state: ListState<unknown> | SelectState<unknown>;\n};\nfunction ListBoxSection({ section, state }: ListBoxSectionProps) {\n const { itemProps, headingProps, groupProps } = useListBoxSection({\n heading: section.rendered,\n \"aria-label\": section[\"aria-label\"],\n });\n\n const isFirstSection = section.key === state.collection.getFirstKey();\n const titleColor = useColorModeValue(\"darkGrey\", \"white\");\n\n return (\n <List>\n <ListItem {...itemProps} listStyleType={\"none\"}>\n {section.rendered && (\n <Box\n fontSize=\"mobile.xs\"\n color={titleColor}\n paddingX={3}\n paddingTop={1}\n marginTop={isFirstSection ? 0 : 2}\n textTransform=\"uppercase\"\n fontWeight=\"bold\"\n {...headingProps}\n >\n {section.rendered}\n </Box>\n )}\n <List {...groupProps} padding={0} listStyleType=\"none\">\n {[...(state.collection.getChildren?.(section.key) ?? [])].map(\n (item: Node<unknown>) => (\n <Option key={item.key} item={item} state={state} />\n ),\n )}\n </List>\n </ListItem>\n </List>\n );\n}\n","\"use client\";\nimport {\n NativeSelect as ChakraNativeSelect,\n NativeSelectFieldProps as ChakraNativeSelectFieldProps,\n RecipeVariantProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { DropdownDownFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport * as React from \"react\";\n\nimport { nativeSelectSlotRecipe } from \"../theme/slot-recipes/native-select\";\nimport { Field, FieldBaseProps } from \"./Field\";\n\ntype NativeSelectVariantProps = RecipeVariantProps<\n typeof nativeSelectSlotRecipe\n>;\n\nexport type NativeSelectdProps =\n React.PropsWithChildren<NativeSelectVariantProps> &\n FieldBaseProps &\n ChakraNativeSelectFieldProps & {\n icon?: React.ReactNode;\n };\n\n/**\n * Selects let you choose between several options\n *\n * You should consider only using the Select component when you have more than 4 options. Otherwise, you should use the `<Radio>` component.\n *\n * <NativeSelect label=\"Choose language\">\n * <option>Norwegian (Bokmål)</option>\n * <option>Norwegian (Nynorsk)</option>\n * <option>Sami</option>\n * <option>Swedish</option>\n * <option>Danish</option>\n * <option>Finnish</option>\n * <option>English</option>\n * </NativeSelect>\n *\n */\n\nexport const NativeSelect = React.forwardRef<\n HTMLDivElement,\n NativeSelectdProps\n>(function NativeSelect(props, ref) {\n const {\n children,\n variant = \"core\",\n label,\n invalid,\n disabled,\n required,\n helperText,\n errorText,\n ...rest\n } = props;\n\n const recipe = useSlotRecipe({ recipe: nativeSelectSlotRecipe });\n const styles = recipe({ variant });\n\n return (\n <Field\n label={label}\n invalid={invalid}\n disabled={disabled}\n required={required}\n helperText={helperText}\n errorText={errorText}\n floatingLabel={true}\n >\n <ChakraNativeSelect.Root\n ref={ref}\n css={styles.root}\n aria-disabled={disabled}\n >\n <ChakraNativeSelect.Field\n css={styles.field}\n aria-invalid={invalid}\n {...rest}\n >\n {children}\n </ChakraNativeSelect.Field>\n <ChakraNativeSelect.Indicator css={styles.icon}>\n <DropdownDownFill18Icon />\n </ChakraNativeSelect.Indicator>\n </ChakraNativeSelect.Root>\n </Field>\n );\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { inputRecipe } from \"../recipes/input\";\nimport { NativeSelectAnatomy } from \"./anatomy\";\n\nexport const nativeSelectSlotRecipe = defineSlotRecipe({\n slots: NativeSelectAnatomy.keys(),\n className: \"spor-nativeSelect\",\n base: {\n root: {\n width: \"100%\",\n height: \"fit-content\",\n position: \"relative\",\n },\n field: {\n ...inputRecipe.base,\n },\n icon: {\n width: 5,\n height: 5,\n right: \" 0.5rem\",\n strokeLinecap: \"round\",\n position: \"absolute\",\n display: \"inline-flex\",\n boxAlign: \"center\",\n alignItems: \"center\",\n boxPack: \"center\",\n justifyContent: \"center\",\n pointerEvents: \"none\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n insetEnd: \"0.5rem\",\n color: \"currentColor\",\n fontSize: \"sm\",\n _disabled: {\n color: \"text.disabled\",\n },\n },\n },\n variants: {\n variant: {\n core: {\n field: {\n ...inputRecipe.variants?.variant.core,\n },\n },\n floating: {\n field: {\n ...inputRecipe.variants?.variant.floating,\n },\n },\n },\n },\n});\n","\"use client\";\nimport {\n chakra,\n Input,\n RecipeVariantProps,\n useControllableState,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport React, { PropsWithChildren, useRef } from \"react\";\n\nimport { BoxProps, createTexts, IconButton, Text, useTranslation } from \"..\";\nimport { numericStepperRecipe } from \"../theme/slot-recipes/numeric-stepper\";\nimport { Field, FieldBaseProps } from \"./Field\";\n\ntype NumericStepperVariants = RecipeVariantProps<typeof numericStepperRecipe>;\n\nexport type NumericStepperProps = BoxProps &\n FieldBaseProps &\n PropsWithChildren<NumericStepperVariants> & {\n children: React.ReactNode;\n /** The name of the input field */\n name?: string;\n /** The current value */\n value?: number;\n /** A default value, if uncontrolled */\n defaultValue?: number;\n /** Callback for when the value changes */\n onChange?: (value: number) => void;\n /** Optional minimum value. Defaults to 0 */\n minValue?: number;\n /** Optional maximum value. Defaults to 99 */\n maxValue?: number;\n /** Whether the stepper is disabled or not */\n disabled?: boolean;\n /** Whether to show input field or not */\n withInput?: boolean;\n /** The amount to increase/decrease when pressing +/- */\n stepSize?: number;\n /** Whether to show the number input when value is zero */\n showZero?: boolean;\n /** Name added to the aria-label of subtract and add buttons. */\n ariaLabelContext?: { singular: string; plural: string };\n } & Omit<BoxProps, \"onChange\">;\n\n/** A simple stepper component for integer values\n *\n * Allows you to choose a given integer value, like for example the number of\n * adults on your journey.\n *\n * @example\n * ```tsx\n * <NumericStepper value={value} onChange={setValue} />\n * ```\n *\n * You can also set a minimum and/or maximum value and step size:\n *\n * ```tsx\n * <NumericStepper value={value} onChange={setValue} minValue={1} maxValue={10} stepSize={3} />\n * ```\n *\n * You can use the NumericStepper inside of a Field component to get IDs etc linked up automatically:\n *\n * ```tsx\n * <NumericStepper />\n * ```\n * @see https://spor.vy.no/components/numeric-stepper\n */\n\nexport const NumericStepper = React.forwardRef<\n HTMLDivElement,\n NumericStepperProps\n>((props: NumericStepperProps, ref) => {\n const {\n name: nameProp,\n id: idProp,\n value: valueProp,\n defaultValue = 1,\n onChange: onChangeProp,\n minValue = 0,\n maxValue = 99,\n disabled,\n withInput = true,\n stepSize = 1,\n showZero = false,\n ariaLabelContext = { singular: \"\", plural: \"\" },\n ...rest\n } = props;\n\n const addButtonRef = useRef<HTMLButtonElement>(null);\n const { t } = useTranslation();\n const recipe = useSlotRecipe({ recipe: numericStepperRecipe });\n const styles = recipe();\n const [value, onChange] = useControllableState<number>({\n value: valueProp,\n onChange: onChangeProp,\n defaultValue,\n });\n const clampedStepSize = Math.max(Math.min(stepSize, 10), 1);\n\n const focusOnAddButton = () => {\n addButtonRef.current?.focus();\n };\n\n return (\n <Field css={styles.root} width=\"auto\" {...rest} ref={ref}>\n <VerySmallButton\n icon={<SubtractIcon stepLabel={clampedStepSize} />}\n aria-label={t(\n texts.decrementButtonAriaLabel(\n clampedStepSize,\n stepSize === 1\n ? ariaLabelContext.singular\n : ariaLabelContext.plural,\n ),\n )}\n onClick={() => {\n onChange(Math.max(value - clampedStepSize, minValue));\n if (Math.max(value - clampedStepSize, minValue) <= minValue) {\n focusOnAddButton();\n }\n }}\n visibility={value <= minValue ? \"hidden\" : \"visible\"}\n disabled={disabled}\n id={value <= minValue ? undefined : idProp}\n />\n {withInput ? (\n <Input\n min={minValue}\n max={maxValue}\n name={nameProp}\n value={value}\n disabled={disabled}\n id={!showZero && value === 0 ? undefined : idProp}\n css={styles.input}\n width={`${Math.max(value.toString().length + 1, 3)}ch`}\n visibility={!showZero && value === 0 ? \"hidden\" : \"visible\"}\n aria-live=\"assertive\"\n aria-label={\n ariaLabelContext.plural === \"\"\n ? \"\"\n : t(texts.currentNumberAriaLabel(ariaLabelContext.plural))\n }\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n const numericInput = Number(e.target.value);\n if (Number.isNaN(numericInput)) {\n return;\n }\n onChange(Math.max(Math.min(numericInput, maxValue), minValue));\n if (\n !showZero &&\n Math.max(Math.min(numericInput, maxValue), minValue) === 0\n ) {\n focusOnAddButton();\n }\n }}\n />\n ) : (\n <Text\n visibility={!showZero && value === 0 ? \"hidden\" : \"visible\"}\n aria-live=\"assertive\"\n paddingX=\"0.95rem\"\n aria-label={\n ariaLabelContext.plural === \"\"\n ? \"\"\n : t(texts.currentNumberAriaLabel(ariaLabelContext.plural))\n }\n >\n {value}\n </Text>\n )}\n <VerySmallButton\n ref={addButtonRef}\n icon={<AddIcon stepLabel={clampedStepSize} />}\n aria-label={t(\n texts.incrementButtonAriaLabel(\n clampedStepSize,\n stepSize === 1\n ? ariaLabelContext.singular\n : ariaLabelContext.plural,\n ),\n )}\n onClick={() => onChange(Math.min(value + clampedStepSize, maxValue))}\n visibility={value >= maxValue ? \"hidden\" : \"visible\"}\n disabled={disabled}\n id={value >= maxValue ? undefined : idProp}\n />\n </Field>\n );\n});\nNumericStepper.displayName = \"NumericStepper\";\n\ntype VerySmallButtonProps = {\n /** The icon to render */\n icon: React.ReactElement;\n /** Accessible label for the icon */\n \"aria-label\": string;\n /** Callback for when the button is clicked */\n onClick: () => void;\n /** Whether or not the button is hidden */\n visibility?: \"visible\" | \"hidden\";\n /** Whether or not the button is disabled */\n disabled?: boolean;\n /** The ID of the button */\n id?: string;\n};\n\n/** Internal override for extra small icon buttons */\nconst VerySmallButton = React.forwardRef<\n HTMLButtonElement,\n VerySmallButtonProps\n>((props, ref) => {\n const recipe = useSlotRecipe({ recipe: numericStepperRecipe });\n const styles = recipe({ colorPalette: \"default\" });\n return (\n <IconButton\n variant=\"primary\"\n size=\"xs\"\n css={styles.button}\n ref={ref}\n {...props}\n />\n );\n});\nVerySmallButton.displayName = \"VerySmallButton\";\n\ntype IconPropTypes = BoxProps & { stepLabel: number };\n\nconst SubtractIcon = ({ stepLabel }: IconPropTypes) => (\n <>\n <chakra.svg as=\"svg\" viewBox=\"0 0 30 30\" stroke=\"currentColor\">\n <line\n x1=\"9\"\n y1=\"15\"\n x2=\"21\"\n y2=\"15\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n preserveAspectRatio=\"xMidYMid meet\"\n />\n </chakra.svg>\n {stepLabel > 1 && (\n <chakra.span paddingRight=\"1\">{stepLabel.toString()}</chakra.span>\n )}\n </>\n);\n\nconst AddIcon = ({ stepLabel }: IconPropTypes) => (\n <>\n <chakra.svg as=\"svg\" viewBox=\"0 0 30 30\" stroke=\"currentColor\">\n <line\n x1=\"9\"\n y1=\"15\"\n x2=\"21\"\n y2=\"15\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"15\"\n y1=\"9\"\n x2=\"15\"\n y2=\"21\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </chakra.svg>\n {stepLabel > 1 && (\n <chakra.span paddingRight=\"1\">{stepLabel.toString()}</chakra.span>\n )}\n </>\n);\n\nconst texts = createTexts({\n currentNumberAriaLabel(ariaContext) {\n return {\n nb: `Valgt antall ${ariaContext}`,\n en: `Chosen number of ${ariaContext}`,\n nn: `Valgt antall ${ariaContext}`,\n sv: `Valgt antall ${ariaContext}`,\n };\n },\n decrementButtonAriaLabel(stepSize, ariaContext) {\n return {\n nb: `Trekk fra ${stepSize} ${ariaContext}`,\n en: `Subtract ${stepSize} ${ariaContext}`,\n nn: `Trekk frå ${stepSize} ${ariaContext}`,\n sv: `Subtrahera ${stepSize} ${ariaContext}`,\n };\n },\n incrementButtonAriaLabel(stepSize, ariaContext) {\n return {\n nb: `Legg til ${stepSize} ${ariaContext}`,\n en: `Add ${stepSize} ${ariaContext}`,\n nn: `Legg til ${stepSize} ${ariaContext}`,\n sv: `Lägg till ${stepSize} ${ariaContext}`,\n };\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { numericStepperAnatomy } from \"./anatomy\";\n\nexport const numericStepperRecipe = defineSlotRecipe({\n slots: numericStepperAnatomy.keys(),\n className: \"spor-numeric-stepper\",\n base: {\n root: {\n \"& > div\": {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n },\n input: {\n fontSize: \"sm\",\n fontWeight: \"bold\",\n marginX: 0.5,\n padding: 0,\n paddingX: 0.5,\n borderRadius: \"xs\",\n outline: \"none\",\n height: \"auto\",\n textAlign: \"center\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n color: \"core.text\",\n backgroundColor: \"transparent\",\n\n _focus: {\n backgroundColor: \"surface\",\n outline: \"2px solid\",\n outlineColor: \"outline.focus\",\n },\n\n _active: {\n backgroundColor: \"accent.surface.active\",\n },\n\n _disabled: {\n pointerEvents: \"none\",\n opacity: 0.5,\n },\n\n _hover: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n },\n text: {\n fontSize: \"sm\",\n fontWeight: \"bold\",\n marginX: 1,\n paddingX: 1,\n textAlign: \"center\",\n width: \"4ch\",\n color: \"core.text\",\n },\n button: {\n outlineOffset: \"-2px\",\n width: \"auto\",\n _icon: {\n width: \"1.2rem\",\n height: \"1.2rem\",\n },\n },\n },\n});\n","\"use client\";\n\nimport { Button, useControllableState } from \"@chakra-ui/react\";\nimport React, { forwardRef } from \"react\";\n\nimport { ButtonProps, Input, InputProps } from \"..\";\nimport { createTexts, useTranslation } from \"..\";\n\nexport interface PasswordVisibilityProps {\n /** Default visibility state */\n defaultVisible?: boolean;\n /** Visibility state */\n visible?: boolean;\n /** Callback for when the visibility state changes */\n onVisibleChange?: (visible: boolean) => void;\n}\n\nexport interface PasswordInputProps\n extends InputProps,\n PasswordVisibilityProps {\n rootProps?: InputProps;\n}\n\n/**\n * A password input field with a visibility toggle.\n *\n * ```tsx\n * <PasswordInput label=\"Password\" />\n * ```\n *\n * You can also control the visibility state:\n *\n * ```tsx\n * <PasswordInput label=\"Password\" visible={visible} onVisibleChange={setVisible} />\n * ```\n *\n * You can also set the default visibility state:\n *\n * ```tsx\n * <PasswordInput label=\"Password\" defaultVisible />\n * ```\n *\n * @see https://spor.vy.no/components/password-input\n */\n\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(\n (props, ref) => {\n const {\n defaultVisible,\n visible: visibleProp,\n onVisibleChange,\n label,\n startElement,\n ...rest\n } = props;\n\n const [visible, setVisible] = useControllableState({\n value: visibleProp,\n defaultValue: defaultVisible || false,\n onChange: onVisibleChange,\n });\n\n const { t } = useTranslation();\n\n return (\n <Input\n ref={ref}\n startElement={startElement && startElement}\n label={label}\n type={visible ? \"text\" : \"password\"}\n endElement={\n <VisibilityTrigger\n variant=\"ghost\"\n disabled={rest.disabled}\n onPointerDown={(e) => {\n if (rest.disabled) return;\n if (e.button !== 0) return;\n e.preventDefault();\n setVisible(!visible);\n }}\n >\n {visible ? t(texts.hidePassword) : t(texts.showPassword)}\n </VisibilityTrigger>\n }\n {...rest}\n />\n );\n },\n);\nPasswordInput.displayName = \"PasswordInput\";\n\nconst VisibilityTrigger = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref) => {\n return (\n <Button\n ref={ref}\n type=\"button\"\n fontWeight=\"normal\"\n size=\"sm\"\n borderRadius=\"sm\"\n marginRight={1}\n {...props}\n >\n {props.children}\n </Button>\n );\n },\n);\nVisibilityTrigger.displayName = \"VisibilityTrigger\";\n\nconst texts = createTexts({\n showPassword: {\n nb: \"Vis\",\n nn: \"Vis\",\n en: \"Show\",\n sv: \"Visa\",\n },\n hidePassword: {\n nb: \"Skjul\",\n nn: \"Skjul\",\n en: \"Hide\",\n sv: \"Dölj\",\n },\n});\n","\"use client\";\nimport { useControllableState } from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nimport { createTexts, Input, InputProps, useTranslation } from \"..\";\nimport { AttachedInputs } from \"./AttachedInputs\";\nimport { CountryCodeSelect } from \"./CountryCodeSelect\";\n\nexport type CountryCodeAndPhoneNumber = {\n countryCode: string;\n nationalNumber: string;\n};\n\ntype PhoneNumberInputProps = Omit<InputProps, \"value\"> & {\n /** The label. Defaults to a localized version of \"Phone number\" */\n label?: string;\n /** Callback for when the country code or phone number changes */\n onValueChange?: (change: CountryCodeAndPhoneNumber) => void;\n /** The optional value of the country code and phone number */\n value?: CountryCodeAndPhoneNumber;\n /** Returns an extra optional text when true */\n optional?: boolean;\n allowedCountryCodes?: string[];\n invalid?: boolean;\n errorText?: string;\n};\n/**\n * A component for entering phone numbers.\n *\n * ```tsx\n * <PhoneNumberInput name=\"phone\" />\n * ```\n *\n * > Please note that when specifying the name, the rendered names will be `${name}-country-code` and `${name}-phone-number` unless a name is provided for both countryCode and nationalNumber.\n *\n * The field can be controlled as well:\n * ```tsx\n * <PhoneNumberInput\n * value={{ countryCode: '+47', phoneNumber: '81549300' }}\n * onChange={handleChange}\n * />\n * ```\n */\n\nexport const PhoneNumberInput = forwardRef<\n HTMLInputElement,\n PhoneNumberInputProps\n>((props, ref) => {\n const {\n label: externalLabel,\n value: externalValue,\n onValueChange: externalOnChange,\n variant,\n optional,\n allowedCountryCodes,\n invalid,\n errorText,\n } = props;\n\n const { t } = useTranslation();\n const label =\n externalLabel ??\n (optional ? t(texts.phoneNumberOptional) : t(texts.phoneNumber));\n\n const [value, onChange] = useControllableState({\n value: externalValue,\n onChange: externalOnChange,\n defaultValue: {\n countryCode: \"+47\",\n nationalNumber: \"\",\n },\n });\n\n const handleCountryCodeChange = (details: { value: string[] }) => {\n const countryCode = details.value[0];\n onChange({\n countryCode: countryCode,\n nationalNumber: value.nationalNumber,\n });\n };\n\n return (\n <AttachedInputs\n border={invalid ? \"1px solid\" : \"none\"}\n borderColor={invalid ? \"outline.error\" : \"none\"}\n outline={invalid ? \"1px solid\" : \"none\"}\n outlineColor={invalid ? \"outline.error\" : \"none\"}\n borderRadius={invalid ? \"sm\" : \"none\"}\n display=\"grid\"\n gridTemplateColumns=\"1fr 10fr\"\n >\n <>\n <CountryCodeSelect\n value={[value.countryCode]}\n onValueChange={handleCountryCodeChange}\n height=\"100%\"\n width=\"6.25rem\"\n variant={variant}\n allowedCountryCodes={allowedCountryCodes}\n data-state=\"on\"\n />\n <Input\n ref={ref}\n type=\"tel\"\n {...props}\n value={value.nationalNumber}\n invalid={invalid}\n errorText={errorText}\n onChange={(e) => {\n const target = e.target as HTMLInputElement;\n // Removes everything but numbers, spaces and dashes\n const strippedValue = target.value.replaceAll(/[^\\d\\s-]/g, \"\");\n onChange({\n countryCode: value.countryCode,\n nationalNumber: strippedValue,\n });\n }}\n variant={variant}\n data-state=\"on\"\n label={label}\n />\n </>\n </AttachedInputs>\n );\n});\nPhoneNumberInput.displayName = \"PhoneNumberInput\";\n\nconst texts = createTexts({\n phoneNumber: {\n nb: \"Telefonnummer\",\n nn: \"Telefonnummer\",\n en: \"Phone number\",\n sv: \"Telefonnummer\",\n },\n phoneNumberOptional: {\n nb: \"Telefonnummer (valgfritt)\",\n nn: \"Telefonnummer (valgfritt)\",\n en: \"Phone number (optional)\",\n sv: \"Telefonnummer (valfritt)\",\n },\n countryCodeLabel: {\n nb: \"Landskode\",\n nn: \"Landskode\",\n en: \"Country code\",\n sv: \"Landskod\",\n },\n});\n","\"use client\";\n\nimport { createListCollection } from \"@chakra-ui/react\";\nimport { getSupportedCallingCodes } from \"awesome-phonenumber\";\nimport { forwardRef } from \"react\";\n\nimport {\n createTexts,\n Select,\n SelectItem,\n SelectProps,\n useTranslation,\n} from \"..\";\n\nconst prioritizedCountryCodes = [\n { label: \"+47\", value: \"+47\" },\n { label: \"+46\", value: \"+46\" },\n { label: \"+45\", value: \"+45\" },\n];\n\nconst sortedCallingCodes = getSupportedCallingCodes()\n .sort((a, b) => Number(a) - Number(b))\n .map((code) => ({\n label: `+${code}`,\n value: `+${code}`,\n }))\n .filter(\n (code) =>\n !prioritizedCountryCodes.some((pCode) => pCode.label === code.label),\n );\n\nexport const callingCodes = createListCollection({\n items: [...prioritizedCountryCodes, ...sortedCallingCodes],\n});\n\ntype CountryCodeSelectProps = Omit<SelectProps, \"label\" | \"collection\"> & {\n allowedCountryCodes?: string[];\n};\n\nexport const CountryCodeSelect = forwardRef<\n HTMLDivElement,\n CountryCodeSelectProps\n>((props, ref) => {\n const { t } = useTranslation();\n if (props.allowedCountryCodes) {\n callingCodes.items = callingCodes.items.filter((callingCode) =>\n props.allowedCountryCodes?.some((code) => code === callingCode.label),\n );\n }\n return (\n <Select\n {...props}\n ref={ref}\n positioning={{ placement: \"bottom\", flip: false }}\n collection={callingCodes}\n lazyMount\n aria-label={t(texts.countryCode)}\n variant={\"rightSideSquare\"}\n >\n {callingCodes.items.map((code) => (\n <SelectItem as={\"option\"} key={code.label} item={code}>\n {code.label}\n </SelectItem>\n ))}\n </Select>\n );\n});\nCountryCodeSelect.displayName = \"CountryCodeSelect\";\n\nconst texts = createTexts({\n countryCode: {\n nb: \"Landkode\",\n nn: \"Landskode\",\n en: \"Country code\",\n sv: \"Landskod\",\n },\n});\n","\"use client\";\nimport { RecipeVariantProps } from \"@chakra-ui/react\";\nimport { RadioGroup as ChakraRadioGroup } from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren } from \"react\";\n\nimport { radioGroupSlotRecipe } from \"../theme/slot-recipes/radio\";\n\ntype RadioVariants = RecipeVariantProps<typeof radioGroupSlotRecipe>;\n\nexport type RadioProps = PropsWithChildren<RadioVariants> &\n ChakraRadioGroup.ItemProps & {\n rootRef?: React.Ref<HTMLDivElement>;\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n };\n\n/**\n * The humble radio button.\n *\n * Specify the label as `children` and the value as `value`.\n *\n * Place the Radio components in a group with several other Radio components. You can do that with the `RadioGroup` component.\n *\n * ```tsx\n * <RadioGroup name=\"ticket\">\n * <Radio value=\"economy\">Economy</Radio>\n * <Radio value=\"business\">Business</Radio>\n * <Radio value=\"first-class\">First Class</Radio>\n * </RadioGroup>\n */\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>((props, ref) => {\n const { children, inputProps, rootRef, ...rest } = props;\n\n return (\n <ChakraRadioGroup.Item ref={rootRef} {...rest}>\n <ChakraRadioGroup.ItemHiddenInput ref={ref} {...inputProps} />\n <ChakraRadioGroup.ItemIndicator />\n {children && (\n <ChakraRadioGroup.ItemText>{children}</ChakraRadioGroup.ItemText>\n )}\n </ChakraRadioGroup.Item>\n );\n});\nRadio.displayName = \"Radio\";\n\ntype RadioGroupProps = Omit<\n ChakraRadioGroup.RootProps,\n \"colorPalette\" | \"variant\" | \"size\"\n> & {};\n\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(\n (props, ref) => {\n return <ChakraRadioGroup.Root ref={ref} {...props} aria-labelledby=\"\" />;\n },\n);\nRadioGroup.displayName = \"RadioGroup\";\n","\"use client\";\n\nimport {\n CloseOutline24Icon,\n SearchOutline24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef } from \"react\";\n\nimport { createTexts, Input, InputProps, useTranslation } from \"..\";\nimport { IconButton } from \"../button/IconButton\";\n\nexport type SearchInputProps = InputProps & {\n /** Callback for when the clear button is clicked */\n onReset?: () => void;\n};\n\n/** Simple search input component.\n *\n * Includes a search icon, a localized label and a reset button.\n */\n\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(\n (props, ref) => {\n const { t } = useTranslation();\n const { variant = \"core\", onReset, label, value } = props;\n const clearButton = onReset && value;\n\n return (\n <Input\n ref={ref}\n type=\"search\"\n variant={variant}\n {...props}\n startElement={<SearchOutline24Icon color=\"icon\" />}\n endElement={\n clearButton && (\n <IconButton\n variant=\"ghost\"\n type=\"button\"\n size=\"sm\"\n aria-label={t(texts.reset)}\n icon={<CloseOutline24Icon />}\n onClick={onReset}\n />\n )\n }\n label={(label as string) ?? t(texts.label)}\n />\n );\n },\n);\nSearchInput.displayName = \"SearchInput\";\n\nconst texts = createTexts({\n label: {\n nb: \"Søk\",\n nn: \"Søk\",\n sv: \"Sök\",\n en: \"Search\",\n },\n reset: {\n nb: \"Tøm søkefeltet\",\n nn: \"Tøm søkefelt\",\n sv: \"Rensa sökrutan\",\n en: \"Reset search field\",\n },\n});\n","\"use client\";\n\nimport type {\n CollectionItem,\n SelectLabelProps,\n SelectRootProps as ChakraSelectRootProps,\n} from \"@chakra-ui/react\";\nimport {\n Box,\n Portal,\n Select as ChakraSelect,\n useSelectContext,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport {\n CheckmarkFill18Icon,\n DropdownDownFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport * as React from \"react\";\n\nimport { CloseButton } from \"@/button\";\n\nimport { Field, FieldProps } from \"./Field\";\n\nexport type SelectProps = ChakraSelectRootProps &\n FieldProps & {\n label?: string;\n };\n\n/**\n * A Select component.\n *\n * This component is useful to choose an item from a dropdown list of items. The list has four different variants, core, floating, rightSideSquare, leftSideSquare.\n * The last two variants are useful in attachecdInput for example in the PhoneNumberInput and CountryCodeSelect components.\n *\n * @example\n * ```tsx\n * <Select label=\"Choose transportation\" >\n <SelectItem item={{\n label: \"Train\",\n value: \"train\",\n }}>\n item label\n </SelectItem>\n <SelectItem item={{\n label: \"Bus\",\n value: \"Bus\",\n }}>\n item label\n </SelectItem>\n </Select>\n * ```\n *\n * @see https://spor.vy.no/components/select\n *\n */\n\nexport const Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (props, ref) => {\n const {\n variant = \"core\",\n children,\n positioning,\n label,\n errorText,\n invalid,\n helperText,\n ...rest\n } = props;\n const recipe = useSlotRecipe({ key: \"select\" });\n const styles = recipe({ variant });\n\n return (\n <Field errorText={errorText} invalid={invalid} helperText={helperText}>\n <ChakraSelect.Root\n {...rest}\n ref={ref}\n positioning={{ sameWidth: true, ...positioning }}\n variant={variant}\n css={styles.root}\n position={\"relative\"}\n >\n <SelectTrigger data-attachable>\n <SelectValueText withPlaceholder={label ? true : false} />\n </SelectTrigger>\n {label && <SelectLabel css={styles.label}>{label}</SelectLabel>}\n <SelectContent css={styles.selectContent}>{children}</SelectContent>\n </ChakraSelect.Root>\n </Field>\n );\n },\n);\n\nexport const SelectLabel = (props: SelectLabelProps) => {\n const { value } = useSelectContext();\n\n return (\n <ChakraSelect.Label\n {...props}\n data-selected={value.length > 0 ? true : undefined}\n />\n );\n};\n\nSelect.displayName = \"Select\";\n\ntype SelectItemProps = ChakraSelect.ItemProps & {\n children: React.ReactNode;\n description?: React.ReactNode;\n};\n\nexport const SelectItem = React.forwardRef<HTMLDivElement, SelectItemProps>(\n (props, ref) => {\n const { item, children, description, ...rest } = props;\n const recipe = useSlotRecipe({ key: \"select\" });\n const styles = recipe();\n return (\n <ChakraSelect.Item item={item} {...rest} ref={ref} css={styles.item}>\n <Box width=\"100%\">\n <ChakraSelect.ItemText display=\"flex\">\n {children}\n </ChakraSelect.ItemText>\n {description && <Box css={styles.itemDescription}>{description}</Box>}\n </Box>\n\n <ChakraSelect.ItemIndicator>\n <CheckmarkFill18Icon />\n </ChakraSelect.ItemIndicator>\n </ChakraSelect.Item>\n );\n },\n);\nSelectItem.displayName = \"SelectItem\";\n\ntype SelectItemGroupProps = ChakraSelect.ItemGroupProps & {\n label: React.ReactNode;\n children: React.ReactNode;\n};\n\nexport const SelectItemGroup = React.forwardRef<\n HTMLDivElement,\n SelectItemGroupProps\n>(function SelectItemGroup(props, ref) {\n const { children, label, ...rest } = props;\n return (\n <ChakraSelect.ItemGroup {...rest} ref={ref}>\n <ChakraSelect.ItemGroupLabel>{label}</ChakraSelect.ItemGroupLabel>\n {children}\n </ChakraSelect.ItemGroup>\n );\n});\n\ntype SelectTriggerProps = ChakraSelect.ControlProps & {\n clearable?: boolean;\n children?: React.ReactNode;\n};\n\nexport const SelectTrigger = React.forwardRef<\n HTMLButtonElement,\n SelectTriggerProps\n>(function SelectTrigger(props, ref) {\n const { children, clearable, ...rest } = props;\n const recipe = useSlotRecipe({ key: \"select\" });\n const styles = recipe();\n return (\n <ChakraSelect.Control {...rest} css={styles.control}>\n <ChakraSelect.Trigger ref={ref} css={styles.trigger}>\n {children}\n </ChakraSelect.Trigger>\n <ChakraSelect.IndicatorGroup css={styles.indicatorGroup}>\n {clearable && <SelectClearTrigger />}\n <Box css={styles.indicator}>\n <DropdownDownFill24Icon />\n </Box>\n </ChakraSelect.IndicatorGroup>\n </ChakraSelect.Control>\n );\n});\n\ntype SelectClearTriggerProps = ChakraSelect.ClearTriggerProps & {\n children?: React.ReactNode;\n};\n\nconst SelectClearTrigger = React.forwardRef<\n HTMLButtonElement,\n SelectClearTriggerProps\n>(function SelectClearTrigger(props, ref) {\n return (\n <ChakraSelect.ClearTrigger asChild {...props} ref={ref}>\n <CloseButton\n size=\"xs\"\n focusVisibleRing=\"inside\"\n focusRingWidth=\"2px\"\n pointerEvents=\"auto\"\n />\n </ChakraSelect.ClearTrigger>\n );\n});\n\ntype SelectContentProps = ChakraSelect.ContentProps & {\n portalled?: boolean;\n portalRef?: React.RefObject<HTMLElement>;\n};\n\nexport const SelectContent = React.forwardRef<\n HTMLDivElement,\n SelectContentProps\n>(function SelectContent(props, ref) {\n const { portalled = true, portalRef, ...rest } = props;\n return (\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraSelect.Positioner>\n <ChakraSelect.Content {...rest} ref={ref} />\n </ChakraSelect.Positioner>\n </Portal>\n );\n});\n\ntype SelectValueTextProps = Omit<ChakraSelect.ValueTextProps, \"children\"> & {\n children?(items: CollectionItem[]): React.ReactNode;\n placeholder?: string;\n withPlaceholder?: boolean;\n};\n\nexport const SelectValueText = React.forwardRef<\n HTMLSpanElement,\n SelectValueTextProps\n>(function SelectValueText(props, ref) {\n const { children, withPlaceholder, placeholder, ...rest } = props;\n return (\n <ChakraSelect.ValueText\n {...rest}\n ref={ref}\n placeholder={placeholder}\n paddingTop={withPlaceholder ? \"4\" : \"0\"}\n >\n <ChakraSelect.Context>\n {(select: {\n selectedItems: CollectionItem[];\n\n collection: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stringifyItem: (arg0: any) => any;\n } /* Find a way to not use any */;\n }) => {\n const items = select.selectedItems;\n if (items.length === 0) return placeholder;\n if (children) return children(items);\n if (items.length === 1)\n return select.collection.stringifyItem(items[0]);\n return `${items.length} selected`;\n }}\n </ChakraSelect.Context>\n </ChakraSelect.ValueText>\n );\n});\n\nexport const SelectItemText = ChakraSelect.ItemText;\nexport const SelectRoot = ChakraSelect.Root;\n","\"use client\";\nimport {\n ConditionalValue,\n RecipeVariantProps,\n Switch as ChakraSwitch,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren } from \"react\";\n\nimport { switchSlotRecipe } from \"../theme/slot-recipes/switch\";\nimport { Field, FieldBaseProps } from \"./Field\";\n\ntype SwitchVariants = RecipeVariantProps<typeof switchSlotRecipe>;\n\nexport type SwitchProps = Exclude<\n ChakraSwitch.RootProps,\n \"size\" | \"colorPalette\"\n> &\n FieldBaseProps &\n PropsWithChildren<SwitchVariants> & {\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n rootRef?: React.Ref<HTMLLabelElement>;\n trackLabel?: { on: React.ReactNode; off: React.ReactNode };\n thumbLabel?: { on: React.ReactNode; off: React.ReactNode };\n size?: ConditionalValue<\"sm\" | \"md\" | \"lg\">;\n label?: React.ReactNode;\n onCheckedChange?: (checked: boolean) => void;\n };\n\n/**\n * A switch lets you toggle between on and off, yes and no. It's an alternative to a checkbox.\n *\n * You can set a label inside of the Switch component by defining the `label` prop.\n *\n * ```tsx\n * <Switch label=\"This is a label\"/>\n * ```\n *\n * Switches are available in three different sizes - `sm`, `md` and `lg`.\n *\n * ```tsx\n *\n * <Switch size=\"sm\" />\n *\n * ```\n */\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n (props, ref) => {\n const {\n rootRef,\n size = \"md\",\n label,\n invalid,\n errorText,\n helperText,\n ...rest\n } = props;\n const recipe = useSlotRecipe({ key: \"switch\" });\n const styles = recipe({ size });\n\n return (\n <Field\n style={{ width: \"auto\" }}\n invalid={invalid}\n errorText={errorText}\n helperText={helperText}\n >\n <ChakraSwitch.Root\n ref={rootRef}\n {...rest}\n checked={props.checked}\n css={styles.root}\n >\n <ChakraSwitch.Label>{label}</ChakraSwitch.Label>\n <ChakraSwitch.HiddenInput ref={ref} />\n <ChakraSwitch.Control css={styles.control}>\n <ChakraSwitch.Thumb />\n </ChakraSwitch.Control>\n </ChakraSwitch.Root>\n </Field>\n );\n },\n);\nSwitch.displayName = \"Switch\";\n","\"use client\";\n\nimport {\n RecipeVariantProps,\n Textarea as ChakraTextarea,\n TextareaProps as ChakraTextareaProps,\n useRecipe,\n} from \"@chakra-ui/react\";\nimport React, {\n forwardRef,\n PropsWithChildren,\n ReactNode,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport { textareaRecipe } from \"../theme/recipes/textarea\";\nimport { Field, FieldProps } from \"./Field\";\nimport { FloatingLabel } from \"./FloatingLabel\";\n\ntype TextareaVariants = RecipeVariantProps<typeof textareaRecipe>;\nexport type TextareaProps = Exclude<\n ChakraTextareaProps,\n \"size\" | \"colorPalette\"\n> &\n FieldProps &\n PropsWithChildren<TextareaVariants> & {\n label: ReactNode;\n };\n\n/**\n * Hook to calculate the height of the label element to adjust spacing for the input for floating label.\n */\nconst useLabelHeight = (label: ReactNode | undefined) => {\n const labelRef = useRef<HTMLLabelElement>(null);\n const [labelHeight, setLabelHeight] = useState(0);\n\n useLayoutEffect(() => {\n const updateLabelHeight = () => {\n if (labelRef.current) {\n setLabelHeight(labelRef.current.offsetHeight);\n }\n };\n\n const observer = new ResizeObserver(updateLabelHeight);\n const currentLabelRef = labelRef.current;\n if (currentLabelRef) {\n observer.observe(currentLabelRef);\n }\n\n // Initial calculation with a slight delay to ensure CSS is applied\n setTimeout(updateLabelHeight, 0);\n\n return () => {\n if (currentLabelRef) {\n observer.unobserve(currentLabelRef);\n }\n };\n }, [label]);\n\n return { labelRef, labelHeight };\n};\n\n/**\n *\n * A simple Textarea component:\n *\n * ```tsx\n * <Textarea label=\"Description\" />\n * ```\n *\n * Textarea has two variants core, and floating.\n *\n */\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n (props, ref) => {\n const { label, variant = \"core\", ...fieldProps } = props;\n const recipe = useRecipe({ key: \"textarea\" });\n const styles = recipe({ variant });\n\n const { labelRef, labelHeight } = useLabelHeight(label);\n\n return (\n <Field {...fieldProps} position=\"relative\">\n <ChakraTextarea\n {...props}\n css={styles}\n className=\"peer\"\n ref={ref}\n style={\n { \"--label-height\": `${labelHeight}px` } as React.CSSProperties\n }\n placeholder=\" \"\n />\n <FloatingLabel ref={labelRef}>{label}</FloatingLabel>\n </Field>\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n","\"use client\";\nimport { ButtonProps, chakra, RecipeVariantProps } from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nimport { pressableCardRecipe } from \"../theme/recipes/pressable-card\";\n\n/**\n * `PressableCard` is a component that renders a pressable card.\n *\n * The `PressableCard` component can be used to create a card that responds to user interactions.\n * It can be rendered as a button, link, label, or any other HTML element by specifying the `as` prop.\n * If no `as` prop is provided, it defaults to a button.\n *\n * The `variant` prop can be used to control the style variant of the card. It defaults to \"core\".\n *\n * Example usage:\n *\n * ```tsx\n * <PressableCard>\n * Content\n * </PressableCard>\n * ```\n *\n * To render the card as a different HTML element, specify the `as` prop:\n *\n * ```tsx\n * <PressableCard as=\"a\">\n * This is now a <a /> element\n * </PressableCard>\n * ```\n *\n * For a static card with other color palette, use the `StaticCard` component.\n *\n * @see StaticCard\n */\n\nconst PressableCardButton = chakra(\"button\", pressableCardRecipe);\n\ntype PressableCardProps = RecipeVariantProps<typeof pressableCardRecipe> &\n ButtonProps;\n\nexport const PressableCard = forwardRef<HTMLDivElement, PressableCardProps>(\n (props, ref) => {\n return <PressableCardButton {...props} ref={ref} />;\n },\n);\nPressableCard.displayName = \"PressableCard\";\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { defineRecipe } from \"../../util\";\n\nexport const pressableCardRecipe = defineRecipe({\n base: {\n appearance: \"none\",\n border: \"none\",\n overflow: \"hidden\",\n fontSize: \"inherit\",\n display: \"block\",\n borderRadius: \"md\",\n cursor: \"pointer\",\n transitionProperty: \"common\",\n\n transitionDuration: \"fast\",\n\n _disabled: {\n outline: \"none\",\n pointerEvents: \"none\",\n background: \"surface.disabled\",\n color: \"text.disabled\",\n },\n },\n\n variants: {\n variant: {\n floating: {\n boxShadow: \"0px 1px 3px 0px var(--shadow-color)\",\n shadowColor: \"surface.disabled\",\n\n border: \"sm\",\n borderColor: \"floating.outline\",\n\n backgroundColor: \"floating.surface\",\n _hover: {\n boxShadow: \"0px 2px 6px 0px var(--shadow-color)\",\n backgroundColor: \"floating.surface.hover\",\n\n borderColor: \"floating.outline.hover\",\n\n _active: {\n boxShadow: \"none\",\n backgroundColor: \"floating.surface.active\",\n borderColor: \"floating.outline.active\",\n },\n },\n },\n core: {\n outlineColor: \"core.outline\",\n outlineWidth: tokens.size.stroke.sm,\n outlineStyle: \"solid\",\n backgroundColor: \"core.surface\",\n\n _hover: {\n outlineColor: \"core.outline.hover\",\n outlineWidth: tokens.size.stroke.md,\n outlineStyle: \"solid\",\n _active: {\n backgroundColor: \"core.surface.active\",\n outlineWidth: tokens.size.stroke.sm,\n },\n },\n },\n accent: {\n boxShadow: \"0px 1px 3px 0px var(--shadow-color)\",\n shadowColor: \"surface.disabled\",\n background: \"alert.success.surface\",\n _hover: {\n background: \"alert.success.surface.hover\",\n\n boxShadow: \"0px 2px 6px 0px var(--shadow-color)\",\n _active: {\n background: \"alert.success.surface.active\",\n boxShadow: \"none\",\n },\n },\n },\n },\n },\n defaultVariants: {\n variant: \"core\",\n },\n});\n","/** This file works as a proxy for all Chakra UI exports */\nexport type { PortalProps, UseDisclosureProps } from \"@chakra-ui/react\";\nexport {\n ClientOnly,\n createListCollection,\n defineRecipe,\n defineStyle,\n For,\n FormatByte,\n FormatNumber,\n LocaleProvider,\n Portal,\n Show,\n useBreakpointValue,\n useCheckbox,\n useClipboard,\n useControllableProp,\n useDisclosure,\n useMediaQuery,\n useToken,\n VisuallyHidden,\n} from \"@chakra-ui/react\";\nexport { useIsClient, useMap, useOnClickOutside } from \"usehooks-ts\";\n","/**\n * Makes a slug-version of any string.\n *\n * By default, the maximum length of the slug is 50 characters. You can override this with the `maxLength` parameter.\n *\n * ```tsx\n * slugify(\"Hello, world!\"); // hello-world\n * slugify(\"Hello, world!\", 6); // hello-\n **/\nexport function slugify(text: string | string[], maxLength = 50): string {\n if (!text) {\n return text;\n }\n if (Array.isArray(text)) {\n text = text.join(\" \");\n }\n if (maxLength < 1) {\n throw new Error(\"The maxLength parameter must be a positive number\");\n }\n return (\n text\n .normalize(\"NFD\") // Normalize to NFD Unicode form\n .replaceAll(/[\\u0300-\\u036F]/g, \"\") // Remove diacritics\n .replaceAll(/[\\u00C6\\u00E6]/g, \"ae\") // Replace Æ, æ\n .replaceAll(/[\\u00D8\\u00F8]/g, \"oe\") // Replace Ø, ø\n .replaceAll(/[\\u00C5\\u00E5]/g, \"aa\") // Replace Å, å\n // Extend the replacement rules as needed\n .toLowerCase()\n .replaceAll(/\\s+/g, \"-\") // Replace spaces with -\n .replaceAll(/[^\\w-]+/g, \"\") // Remove all non-word chars\n .replaceAll(/--+/g, \"-\") // Replace multiple - with single -\n .replace(/^-+/, \"\") // Trim - from start of text\n .replace(/-+$/, \"\")\n .slice(0, Math.max(0, maxLength))\n );\n}\n","\"use client\";\nimport {\n RadioCard as ChakraRadioCard,\n RecipeVariantProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef } from \"react\";\n\nimport { radioCardSlotRecipe } from \"../theme/slot-recipes/radio-card\";\n\n/**\n * Radio cards are used to present a set of options where only one option can be selected.\n *\n * @example\n * ```tsx\n * <RadioCardGroup defaultValue=\"economy\">\n * <RadioCardLabel>Choose your class</RadioCardLabel>\n * <Stack direction=\"row\">\n * <RadioCard value=\"economy\" label=\"Economy\" />\n * <RadioCard value=\"business\" label=\"Business\" />\n * <RadioCard value=\"first-class\" label=\"First Class\" />\n * </Stack>\n * </RadioCardGroup>\n * ```\n *\n *\n * @see Docs https://spor.vy.no/components/radiocard\n */\n\ntype RadioCardVariantProps = RecipeVariantProps<typeof radioCardSlotRecipe>;\n\ntype RadioCardItemProps = Exclude<\n ChakraRadioCard.ItemProps,\n \"colorPalette\" | \"indicator\" | \"variant\" | \"size\" | \"addon\"\n> &\n RadioCardVariantProps & {\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n ariaLabel?: string;\n };\n\nexport const RadioCard = forwardRef<HTMLInputElement, RadioCardItemProps>(\n (props, ref) => {\n const { inputProps, children, value, ariaLabel } = props;\n\n return (\n <ChakraRadioCard.Item {...props}>\n <ChakraRadioCard.ItemHiddenInput\n aria-label={ariaLabel ?? value}\n ref={ref}\n {...inputProps}\n />\n\n <ChakraRadioCard.ItemControl>{children}</ChakraRadioCard.ItemControl>\n </ChakraRadioCard.Item>\n );\n },\n);\nRadioCard.displayName = \"RadioCard\";\n\ntype RadioCardRootProps = RadioCardVariantProps &\n Exclude<ChakraRadioCard.RootProps, \"variant\"> & {\n children: React.ReactNode;\n gap?: string | number;\n direction?: \"row\" | \"column\";\n display?: string;\n };\n\nexport const RadioCardGroup = forwardRef<HTMLDivElement, RadioCardRootProps>(\n (props, ref) => {\n const {\n children,\n variant,\n gap = 2,\n direction = \"column\",\n display = \"flex\",\n ...rest\n } = props;\n const recipe = useSlotRecipe({ key: \"radio-card\" });\n const styles = recipe({ variant });\n\n return (\n <ChakraRadioCard.Root\n ref={ref}\n variant={variant}\n css={styles}\n display={display}\n gap={gap}\n flexDirection={direction}\n {...rest}\n >\n {children}\n </ChakraRadioCard.Root>\n );\n },\n);\nRadioCardGroup.displayName = \"RadioCardGroup\";\n\nexport const RadioCardLabel = ChakraRadioCard.Label;\n","\"use client\";\n\nimport {\n RecipeVariantProps,\n Separator as ChakraSeparator,\n SeparatorProps as ChakraSeparatorProps,\n useRecipe,\n} from \"@chakra-ui/react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { separatorRecipe } from \"../theme/recipes/separator\";\n\ntype SeparatorVariantProps = RecipeVariantProps<typeof separatorRecipe>;\n\ntype SeparatorProps = Exclude<ChakraSeparatorProps, \"size\" | \"variant\"> &\n PropsWithChildren<SeparatorVariantProps> & {\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"solid\" | \"dashed\";\n };\n\nexport const Separator = forwardRef<HTMLDivElement, SeparatorProps>(\n (props, ref) => {\n const {\n size = \"md\",\n variant = \"solid\",\n orientation = \"horizontal\",\n } = props;\n\n const recipe = useRecipe({ recipe: separatorRecipe });\n const styles = recipe({ size, variant, orientation });\n return <ChakraSeparator css={styles} {...props} ref={ref} />;\n },\n);\nSeparator.displayName = \"Separator\";\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const separatorRecipe = defineRecipe({\n className: \"spor-separator\",\n base: {\n borderColor: \"outline.disabled\",\n display: \"block\",\n borderRadius: \"xl\",\n },\n variants: {\n variant: {\n solid: {\n borderStyle: \"solid\",\n },\n dashed: {\n width: \"100%\",\n borderWidth: \"0px\",\n },\n },\n size: {\n sm: {\n borderBottomWidth: \"1px\",\n height: \"1px\",\n },\n md: {\n borderBottomWidth: \"2px\",\n height: \"2px\",\n },\n lg: {\n borderBottomWidth: \"3px\",\n height: \"3px\",\n },\n },\n orientation: {\n horizontal: {\n width: \"100%\",\n },\n vertical: {\n height: \"100%\",\n borderLeftWidth: \"1px\",\n },\n },\n },\n compoundVariants: [\n {\n variant: \"dashed\",\n size: \"sm\",\n css: {\n background:\n \"linear-gradient(to left, var(--spor-colors-outline-disabled), var(--spor-colors-outline-disabled) 1px, transparent 1px, transparent 4px)\",\n backgroundSize: \"4px 1px\",\n backgroundRepeat: \"repeat-x\",\n },\n },\n {\n variant: \"dashed\",\n size: \"md\",\n css: {\n background:\n \"linear-gradient(to left, var(--spor-colors-outline-disabled), var(--spor-colors-outline-disabled) 3px, transparent 3px, transparent 6px)\",\n backgroundSize: \"9px 2px\",\n backgroundRepeat: \"repeat-x\",\n },\n },\n {\n variant: \"dashed\",\n size: \"lg\",\n css: {\n background:\n \"linear-gradient(to left, var(--spor-colors-outline-disabled), var(--spor-colors-outline-disabled) 3px, transparent 3px, transparent 9px)\",\n backgroundSize: \"9px 3px\",\n backgroundRepeat: \"repeat-x\",\n },\n },\n {\n variant: \"dashed\",\n orientation: \"vertical\",\n css: {\n background: \"0\",\n width: \"0%\",\n height: \"100%\",\n },\n },\n ],\n});\n","\"use client\";\nimport { BoxProps, chakra, RecipeVariantProps } from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nimport { staticCardRecipe } from \"../theme/recipes/static-card\";\n\n/**\n * `StaticCard` is a component that renders a static card.\n *\n * The `StaticCard` component can be used to create a card that does not respond to user interactions.\n * It can be rendered as any HTML element by specifying the `as` prop.\n *\n * The `colorPalette` prop can be used to control the color palette of the card. It defaults to \"white\".\n *\n * Example usage:\n *\n * ```tsx\n * <StaticCard>\n * Content\n * </StaticCard>\n * ```\n *\n * To render the card as a different HTML element, specify the `as` prop:\n *\n * ```tsx\n * <StaticCard as=\"section\">\n * This is now a <section /> element\n * </StaticCard>\n * ```\n *\n * To change the color palette of the card, specify the `colorPalette` prop:\n *\n * ```tsx\n * <StaticCard colorPalette=\"orange\">\n * An orange card\n * </StaticCard>\n * ```\n *\n * For a card with click functionality, use the `PressableCard` component.\n *\n * @see PressableCard\n */\n\nconst StyledCardBox = chakra(\"div\", staticCardRecipe);\n\nexport type StaticCardProps = RecipeVariantProps<typeof staticCardRecipe> &\n BoxProps;\n\nexport const StaticCard = forwardRef<HTMLDivElement, StaticCardProps>(\n (props, ref) => {\n return <StyledCardBox {...props} ref={ref}></StyledCardBox>;\n },\n);\nStaticCard.displayName = \"StaticCard\";\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const staticCardRecipe = defineRecipe({\n base: {\n borderRadius: \"md\",\n },\n variants: {\n colorPalette: {\n white: {\n backgroundColor: \"surface.color.neutral\",\n color: \"text\",\n },\n grey: {\n backgroundColor: \"surface.color.grey\",\n },\n yellow: {\n backgroundColor: \"surface.color.cream\",\n },\n darkYellow: {\n backgroundColor: \"surface.color.yellow\",\n },\n red: {\n backgroundColor: \"surface.color.red\",\n },\n green: {\n backgroundColor: \"surface.color.green\",\n },\n blue: {\n backgroundColor: \"surface.color.blue\",\n },\n orange: {\n backgroundColor: \"surface.color.orange\",\n },\n },\n },\n defaultVariants: {\n colorPalette: \"white\",\n },\n});\n","export * from \"./PressableCard\";\nexport * from \"./RadioCard\";\nexport * from \"./Separator\";\nexport * from \"./StaticCard\";\nexport type {\n BoxProps,\n CenterProps,\n ContainerProps,\n FlexProps,\n GridItemProps,\n GridProps,\n SimpleGridProps,\n SpacerProps,\n} from \"@chakra-ui/react\";\nexport {\n Box,\n Center,\n Container,\n Flex,\n Grid,\n GridItem,\n HStack,\n SimpleGrid,\n Spacer,\n Span,\n Stack,\n VStack,\n} from \"@chakra-ui/react\";\n","\"use client\";\nimport { Box, RecipeVariantProps, useSlotRecipe } from \"@chakra-ui/react\";\nimport { PropsWithChildren } from \"react\";\n\nimport { infoTagSlotRecipe } from \"../theme/slot-recipes/info-tag\";\nimport { LineIcon } from \"./LineIcon\";\nimport type { TagProps } from \"./types\";\n\ntype InfoTagVariantProps = RecipeVariantProps<typeof infoTagSlotRecipe>;\n\nexport type InfoTagProps = TagProps & PropsWithChildren<InfoTagVariantProps>;\n\n/**\n * An info tag component.\n *\n * Shows a line icon, a title and an optional description.\n *\n * ```tsx\n * <InfoTag variant=\"subway\" title=\"3\" description=\"Ringen\" />\n * ```\n * They support three different sizes –`sm`, `md` and `lg`.\n *\n * ```tsx\n * <InfoTag\n * variant=\"subway\"\n * size=\"lg\"\n * title=\"3\"\n * description=\"Ringen\"\n * />\n * ```\n *\n * If required, you can also override the colors and icons in these line tags:\n *\n * ```tsx\n * <InfoTag\n * variant=\"custom\"\n * customIconVariant=\"ferry\"\n * foregroundColor=\"#b4da55\"\n * backgroundColor=\"#c0ffee\"\n * />\n * ```\n *\n * @see https://spor.vy.no/components/line-tags\n */\nexport const InfoTag = ({\n variant,\n size = \"md\",\n title,\n description,\n ...customProps\n}: InfoTagProps) => {\n const recipe = useSlotRecipe({ key: \"infoTag\" });\n\n const styles = recipe({\n size,\n ...customProps,\n });\n\n return (\n <Box css={styles.container}>\n <LineIcon\n variant={variant}\n size={size}\n aria-label={title}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n {...(customProps as any)} // TODO: Fix this\n />\n <Box css={styles.textContainer}>\n {title && (\n <Box as=\"span\" css={styles.title}>\n {title}\n </Box>\n )}\n {title && description && \" \"}\n {description && (\n <Box as=\"span\" css={styles.description}>\n {description}\n </Box>\n )}\n </Box>\n </Box>\n );\n};\n","\"use client\";\nimport {\n Box,\n BoxProps,\n RecipeVariantProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren } from \"react\";\n\nimport { lineIconSlotRecipe } from \"../theme/slot-recipes/line-icon\";\nimport { getCorrectIcon } from \"./icons\";\nimport { CustomVariantProps, TagProps } from \"./types\";\n\ntype LineIconVariantProps = RecipeVariantProps<typeof lineIconSlotRecipe>;\n\ntype DefaultVariants = Exclude<TagProps[\"variant\"], \"custom\">;\n\ntype DefaultVariantProps = {\n variant: DefaultVariants;\n};\n\ntype VariantProps = DefaultVariantProps | CustomVariantProps;\n\nexport type LineIconProps = Exclude<BoxProps, \"variant\"> &\n VariantProps &\n PropsWithChildren<LineIconVariantProps> & {\n size?: TagProps[\"size\"];\n foregroundColor?: string;\n backgroundColor?: string;\n disabled?: boolean;\n target?: string;\n label: string;\n };\n\n/**\n * A line icon component.\n *\n * Shows a line icon with the correct color scheme.\n *\n * ```tsx\n * <LineIcon variant=\"subway\" />\n * ```\n *\n * They support three different sizes - `sm`, `md` and `lg`.\n *\n * ```tsx\n * <LineIcon variant=\"subway\" size=\"lg\" />\n * ```\n *\n * If you require some one-off colors, but still want to use the line tag component,\n * you can do so like this:\n *\n * ```tsx\n * <LineIcon\n * variant=\"custom\"\n * customIconVariant=\"ferry\"\n * foregroundColor=\"#b4da55\"\n * backgroundColor=\"#c0ffee\"\n * />\n * ```\n *\n * @see https://spor.vy.no/components/line-tags\n */\n\nexport const LineIcon = forwardRef<HTMLDivElement, LineIconProps>(\n function LineIcon(\n {\n variant,\n size = \"md\",\n foregroundColor,\n\n disabled,\n style,\n target = \"lineIcon\",\n label,\n ...rest\n },\n ref,\n ) {\n const recipe = useSlotRecipe({ key: \"lineIcon\" });\n const styles = recipe({ variant, size, ...rest });\n\n const targetPadding = () => {\n return target === \"travelTag\" ? 0.5 : 1;\n };\n\n const borderContainer = () => {\n return variant === \"walk\" && target === \"travelTag\" ? 0 : 0.5;\n };\n\n const Icon: React.ElementType = getCorrectIcon({\n variant:\n variant === \"custom\" && \"customIconVariant\" in rest\n ? rest.customIconVariant\n : // eslint-disable-next-line unicorn/no-nested-ternary\n variant === \"custom\" //eslint rules and prettier conflict\n ? \"local-train\"\n : variant,\n size,\n });\n if (!Icon) {\n return null;\n }\n\n if (foregroundColor) {\n styles.iconContainer.backgroundColor = disabled\n ? \"surface.disabled\"\n : foregroundColor;\n }\n\n return (\n <Box\n css={{ ...styles.iconContainer, ...style }}\n padding={targetPadding()}\n borderWidth={borderContainer()}\n borderColor={variant === \"walk\" ? \"core.outline\" : \"transparent\"}\n aria-label={label}\n ref={ref}\n >\n <Icon css={styles.icon} />\n </Box>\n );\n },\n);\n","import { Box } from \"@chakra-ui/react\";\nimport {\n AltTransportFill18Icon,\n AltTransportFill24Icon,\n AltTransportFill30Icon,\n BusFill18Icon,\n BusFill24Icon,\n BusFill30Icon,\n ExpressBusFill18Icon,\n ExpressBusFill24Icon,\n ExpressBusFill30Icon,\n FerryFill18Icon,\n FerryFill24Icon,\n FerryFill30Icon,\n SubwayFill18Icon,\n SubwayFill24Icon,\n SubwayFill30Icon,\n TrainFill18Icon,\n TrainFill24Icon,\n TrainFill30Icon,\n TramFill18Icon,\n TramFill24Icon,\n TramFill30Icon,\n WalkFill18Icon,\n WalkFill24Icon,\n WalkFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\n\nimport type { Size, Variant } from \"./types\";\n\nconst icons: Record<Variant, Record<Size, React.ComponentType>> = {\n \"local-train\": {\n sm: TrainFill18Icon,\n md: TrainFill24Icon,\n lg: TrainFill30Icon,\n },\n \"region-train\": {\n sm: TrainFill18Icon,\n md: TrainFill24Icon,\n lg: TrainFill30Icon,\n },\n \"region-express-train\": {\n sm: TrainFill18Icon,\n md: TrainFill24Icon,\n lg: TrainFill30Icon,\n },\n \"long-distance-train\": {\n sm: TrainFill18Icon,\n md: TrainFill24Icon,\n lg: TrainFill30Icon,\n },\n \"airport-express-train\": {\n sm: TrainFill18Icon,\n md: TrainFill24Icon,\n lg: TrainFill30Icon,\n },\n \"vy-bus\": {\n sm: ExpressBusFill18Icon,\n md: ExpressBusFill24Icon,\n lg: ExpressBusFill30Icon,\n },\n \"local-bus\": { sm: BusFill18Icon, md: BusFill24Icon, lg: BusFill30Icon },\n ferry: { sm: FerryFill18Icon, md: FerryFill24Icon, lg: FerryFill30Icon },\n subway: { sm: SubwayFill18Icon, md: SubwayFill24Icon, lg: SubwayFill30Icon },\n tram: { sm: TramFill18Icon, md: TramFill24Icon, lg: TramFill30Icon },\n \"alt-transport\": {\n sm: AltTransportFill18Icon,\n md: AltTransportFill24Icon,\n lg: AltTransportFill30Icon,\n },\n walk: { sm: WalkFill18Icon, md: WalkFill24Icon, lg: WalkFill30Icon },\n};\n\ntype GetCorrectIconArgs = {\n variant: Variant;\n size: Size;\n};\nexport const getCorrectIcon = ({ variant, size }: GetCorrectIconArgs) => {\n return icons[variant]?.[size] ?? Box;\n};\n","\"use client\";\nimport {\n Box,\n BoxProps,\n RecipeVariantProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport {\n ErrorFill18Icon,\n ErrorFill24Icon,\n InformationFill18Icon,\n InformationFill24Icon,\n WarningFill18Icon,\n WarningFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { travelTagSlotRecipe } from \"../theme/slot-recipes/travel-tag\";\nimport { LineIcon } from \"./LineIcon\";\nimport type { TagProps } from \"./types\";\n\ntype TravelTagVariantProps = RecipeVariantProps<typeof travelTagSlotRecipe>;\n\ntype DeviationLevels = \"critical\" | \"major\" | \"minor\" | \"info\" | \"none\";\n\nexport type TravelTagProps = TagProps &\n BoxProps &\n PropsWithChildren<TravelTagVariantProps> & {\n deviationLevel?: DeviationLevels;\n disabled?: boolean;\n foregroundColor?: string;\n /**\n * Needs to be defined if variant is custom\n */\n backgroundColor?: string;\n /**\n * Define a custom icon variant\n */\n customIconVariant?: string;\n };\n\n/**\n * A travel tag component.\n *\n * Shows a line icon, a title and an optional description.\n *\n * ```tsx\n * <TravelTag variant=\"subway\" title=\"3\" description=\"Ringen\" />\n * ```\n *\n * They support three different sizes - `sm`, `md` and `lg`.\n *\n * You can also render them with a deviation level to indicate an extra focus:\n *\n * You can add a \"disabled\" prop to the tag to make it look disabled (grey)\n *\n * ```tsx\n * <TravelTag\n * variant=\"subway\"\n * title=\"3\"\n * description=\"Ringen\"\n * size=\"lg\"\n * deviationLevel=\"critical\"\n * />\n * ```\n *\n * Travel tags can be clickable by passing an `as=\"button\"` prop. They can also be disabled.\n *\n * ```tsx\n * <TravelTag\n * as=\"button\"\n * onClick={handleClick}\n * variant=\"subway\"\n * title=\"3\"\n * description=\"Ringen\"\n * />\n * ```\n *\n * If required, you can also override the colors and icons in these travel tags:\n *\n * ```tsx\n * <TravelTag\n * variant=\"custom\"\n * customIconVariant=\"ferry\"\n * foregroundColor=\"#b4da55\"\n * backgroundColor=\"#c0ffee\"\n * title=\"3\"\n * description=\"Ringen\"\n * />\n * ```\n *\n * @see https://spor.vy.no/components/line-tags\n */\n\nexport const TravelTag = forwardRef<HTMLDivElement, TravelTagProps>(\n function TravelTag(\n {\n variant,\n size = \"md\",\n deviationLevel = \"none\",\n title,\n description,\n disabled,\n foregroundColor,\n backgroundColor,\n customIconVariant,\n ...rest\n },\n ref,\n ) {\n const recipie = useSlotRecipe({ key: \"travelTag\" });\n const styles = recipie({\n variant,\n size,\n deviationLevel,\n });\n\n const DeviationLevelIcon = getDeviationLevelIcon({ deviationLevel, size });\n\n return (\n <Box\n css={styles.container}\n aria-disabled={disabled}\n ref={ref}\n {...rest}\n backgroundColor={disabled ? \"surface.disabled\" : backgroundColor}\n >\n <LineIcon\n variant={variant}\n size={size}\n foregroundColor={foregroundColor}\n backgroundColor={backgroundColor}\n customIconVariant={customIconVariant}\n disabled={disabled}\n target=\"travelTag\"\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n {...(rest as any)} //Find a way to not use any here\n />\n <Box css={styles.textContainer}>\n {title && (\n <Box as=\"span\" css={styles.title}>\n {title}\n </Box>\n )}\n {title && description && \" \"}\n {description && (\n <Box as=\"span\" css={styles.description}>\n {description}\n </Box>\n )}\n </Box>\n {DeviationLevelIcon && (\n <DeviationLevelIcon css={styles.deviationIcon} />\n )}\n </Box>\n );\n },\n);\n\nconst getDeviationLevelIcon = ({\n deviationLevel,\n size,\n}: Pick<TravelTagProps, \"deviationLevel\" | \"size\">) => {\n switch (deviationLevel) {\n case \"critical\": {\n return size === \"lg\" ? ErrorFill24Icon : ErrorFill18Icon;\n }\n case \"major\":\n case \"minor\": {\n return size === \"lg\" ? WarningFill24Icon : WarningFill18Icon;\n }\n case \"info\": {\n return size === \"lg\" ? InformationFill24Icon : InformationFill18Icon;\n }\n default: {\n return null;\n }\n }\n};\n","\"use client\";\nimport {\n Link as ChakraLink,\n LinkProps as ChakraLinkProps,\n VisuallyHidden,\n} from \"@chakra-ui/react\";\nimport {\n LinkOutOutline18Icon,\n LinkOutOutline24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React, { cloneElement, forwardRef, isValidElement } from \"react\";\n\nimport { createTexts, useTranslation } from \"@/i18n\";\n\nexport type LinkProps = ChakraLinkProps & {\n /** Defaults to primary */\n variant?: \"primary\" | \"secondary\";\n /** Define if the link shows an icon on the right that indicate it is an external link */\n external?: boolean;\n};\n\n/** Link to different sites or parts of site\n *\n * You can specify the `variant` prop to get different link designs.\n * * ```tsx\n * <TextLink href=\"/url-to-page\" variant=\"primary\" size=\"md\">\n * text that is linked\n * </TextLink>\n * ```\n */\nconst ExternalIcon = ({\n label,\n size,\n}: {\n label: string;\n size: LinkProps[\"size\"];\n}) => (\n <>\n {size === \"lg\" || size === \"md\" ? (\n <LinkOutOutline24Icon aria-hidden />\n ) : (\n <LinkOutOutline18Icon aria-hidden />\n )}\n {/* Visually hidden text for screen readers */}\n <VisuallyHidden>{label}</VisuallyHidden>\n </>\n);\n\nexport const TextLink = forwardRef<HTMLAnchorElement, LinkProps>(\n ({ children, external, href, ...props }, ref) => {\n const { t } = useTranslation();\n\n const isExternal =\n external ??\n Boolean(href?.startsWith(\"http://\") || href?.startsWith(\"https://\"));\n\n const externalLabel = t ? t(texts.externalLink) : texts.externalLink.en;\n\n // If asChild is true, we need to clone the children and add the external icon\n if (props.asChild && isValidElement(children)) {\n return (\n <ChakraLink href={href} {...props} ref={ref}>\n {cloneElement(children as React.ReactElement, {\n ...children.props,\n children: (\n <>\n {children.props.children}\n {isExternal && (\n <ExternalIcon label={externalLabel} size={props.size} />\n )}\n </>\n ),\n })}\n </ChakraLink>\n );\n }\n\n return (\n <ChakraLink href={href} {...props} ref={ref}>\n {children}\n {isExternal && <ExternalIcon label={externalLabel} size={props.size} />}\n </ChakraLink>\n );\n },\n);\nTextLink.displayName = \"TextLink\";\n\nconst texts = createTexts({\n externalLink: {\n nb: \"Ekstern lenke\",\n nn: \"Ekstern lenke\",\n sv: \"Extern länk\",\n en: \"External link\",\n },\n});\n","import { List as ChakraList } from \"@chakra-ui/react\";\n\n/**\n * Use this component to display a list of items.\n *\n * props:\n * - \"chidren\" (default: none) required: The items in the list.\n * - \"as\" (default: \"ul\") not required: Rendrer as an ordered or unordered list.\n * - \"ul\": Unordered list\n * - \"ol\": Ordered list\n * - \"variant\" (default: \"marker\") not required: The style of the list.\n * - \"marker\": A list with markers\n * - \"plain\": A plain list without markers\n *\n * ```tsx\n * <List>\n * <ListItem>Item 1</ListItem>\n * <ListItem>Item 2</ListItem>\n * </List>\n */\n\nexport const List = ChakraList.Root; // <ul> or <ol> HTMLElement\nexport const ListItem = ChakraList.Item; // <li> HTMLElement\nexport const ListIndicator = ChakraList.Indicator;\n","import { chakra } from \"@chakra-ui/react\";\nimport { forwardRef } from \"react\";\n\nexport type CargonetLogoProps = {\n /** The color of the logo\n *\n * Use `\"light\"` when the logo is used on a light background.\n * Use `\"dark\"` when the logo is used on a dark background.\n */\n colorPalette: \"light\" | \"dark\";\n};\n\nexport const CargonetLogo = forwardRef<SVGSVGElement, CargonetLogoProps>(\n (props, ref) => {\n const { colorPalette } = props;\n // These colors should not be tokenized, as they are logo specific.\n const mainColor = \"#DF8200\";\n const accentColor = colorPalette === \"light\" ? \"#383E42\" : \"#ffffff\";\n\n return (\n <chakra.svg viewBox=\"0 0 251 52\" ref={ref} {...props}>\n <title>Cargonet logo</title>\n <path\n d=\"M87.9222 14.602L84.3862 18.7417C81.1953 15.9821 79.1685 15.2914 76.5379 15.2914C70.933 15.2914 67.4398 19.5609 67.4398 26.029C67.4398 32.5834 71.0186 36.8523 76.4089 36.8523C79.6855 36.8523 81.6694 35.6447 84.9038 32.9285L88.3969 36.982C84.645 40.5608 81.1524 42.1134 76.4951 42.1134C66.9651 42.1134 61.2733 35.214 61.2733 25.9856C61.2733 16.9732 66.7492 10.0309 76.5379 10.0309C81.2387 10.0309 84.3 11.4533 87.9222 14.602Z\"\n fill={accentColor}\n />\n <path\n d=\"M106.461 41.3802C106.159 40.5604 105.986 39.5259 105.857 38.4046C104.693 40.6038 102.408 42.1131 98.6988 42.1131C94.4299 42.1131 90.8511 40.216 90.8511 35.774C90.8511 30.9013 95.1628 29.1333 100.812 28.1417L105.598 27.3225V26.7187C105.598 24.3903 103.917 23.1399 101.416 23.1399C98.4829 23.1399 96.5858 24.476 94.4734 26.6759L91.0231 23.5712C93.9124 20.2934 97.1468 18.6117 101.373 18.6117C107.754 18.6117 110.946 21.846 110.946 26.5028V35.9037C110.946 38.448 111.118 40.216 111.506 41.3802H106.461ZM105.598 32.6265V31.1607L101.373 31.9364C98.0093 32.5836 96.2414 33.4022 96.2414 35.3861C96.2414 36.9388 97.5346 37.9299 99.8202 37.9299C102.666 37.9299 105.598 36.4647 105.598 32.6265Z\"\n fill={accentColor}\n />\n <path\n d=\"M130.65 19.6469L129.572 24.5625C128.537 24.2614 127.373 24.0455 126.295 24.0455C123.233 24.0455 121.422 26.4601 121.422 30.5565V41.3803H115.816V25.8563C115.816 22.8813 115.644 20.8111 115.385 19.3448H120.603C120.818 20.1645 120.991 21.4578 121.034 23.0967C122.112 20.5524 123.88 18.9569 126.812 18.9569C128.192 18.9569 129.529 19.2157 130.65 19.6469Z\"\n fill={accentColor}\n />\n <path\n d=\"M152.813 19.3447V40.6896C152.813 46.9859 148.156 50.1768 142.075 50.1768C138.669 50.1768 135.219 49.3142 132.028 47.4172L134.745 43.3202C137.289 44.8729 139.532 45.692 141.99 45.692C145.008 45.692 147.336 44.269 147.336 40.3018V37.4993C146.043 39.5255 143.93 40.8199 140.911 40.8199C135.349 40.8199 131.209 36.3779 131.209 29.7373C131.209 23.0966 135.349 18.6118 140.911 18.6118C144.188 18.6118 146.345 20.0782 147.639 22.3631V19.3447H152.813ZM147.509 29.7373C147.509 25.9425 145.267 23.3988 142.162 23.3988C138.971 23.3988 136.858 25.9425 136.858 29.7373C136.858 33.5314 138.971 36.0763 142.162 36.0763C145.267 36.0763 147.509 33.5314 147.509 29.7373Z\"\n fill={accentColor}\n />\n <path\n d=\"M178.72 30.341C178.72 37.3267 173.976 42.0702 167.292 42.0702C160.609 42.0702 155.866 37.3267 155.866 30.341C155.866 23.3553 160.609 18.6117 167.292 18.6117C173.976 18.6117 178.72 23.3553 178.72 30.341ZM161.557 30.341C161.557 34.6967 163.886 37.4992 167.292 37.4992C170.699 37.4992 173.028 34.6967 173.028 30.341C173.028 26.0721 170.699 23.1828 167.292 23.1828C163.886 23.1828 161.557 26.0721 161.557 30.341Z\"\n fill={accentColor}\n />\n <path\n d=\"M208.903 10.7638V41.38H202.478L194.673 28.9612C192.516 25.5115 190.403 22.1046 188.635 18.8274C188.851 22.4497 188.937 26.4598 188.937 30.8155V41.38H183.029V10.7638H189.585L197.82 23.9589C199.717 26.9773 201.616 29.9529 203.21 32.8851C203.081 29.6507 203.038 26.0719 203.038 21.8893V10.7638H208.903Z\"\n fill={mainColor}\n />\n <path\n d=\"M233.663 37.7578C230.386 41.035 227.324 42.0707 223.788 42.0707C216.672 42.0707 212.231 37.499 212.231 30.4705C212.231 23.6573 216.371 18.6116 223.313 18.6116C230.041 18.6116 233.619 22.8376 233.619 29.6079C233.619 30.2546 233.577 31.2897 233.534 31.6781H217.578C218.009 35.0844 220.08 37.499 223.917 37.499C226.505 37.499 228.144 36.5936 230.6 34.4378L233.663 37.7578ZM217.708 27.9262H228.359C228.144 24.8644 226.376 22.881 223.227 22.881C220.123 22.881 218.311 24.8644 217.708 27.9262Z\"\n fill={mainColor}\n />\n <path\n d=\"M250.41 41.0785C248.556 41.6817 246.789 41.8976 245.538 41.8976C240.88 41.8976 239.198 39.8709 239.198 35.7739V23.4415H235.275V19.3445H239.198V12.6182H244.805V19.3445H250.066V23.4415H244.805V34.8257C244.805 36.5937 245.624 37.0244 247.047 37.0244C247.651 37.0244 248.47 36.9387 249.721 36.6365L250.41 41.0785Z\"\n fill={mainColor}\n />\n <path\n d=\"M21.4911 10.2565H31.1579V0.589175H21.4911V10.2565Z\"\n fill={mainColor}\n />\n <path\n d=\"M41.3861 10.8855H31.7757V20.5528H41.3861V10.8855Z\"\n fill={mainColor}\n />\n <path\n d=\"M42.0022 10.2547H51.6126V0.587402H42.0022V10.2547Z\"\n fill={mainColor}\n />\n <path\n d=\"M21.477 30.7758H31.1431V21.1654H21.477V30.7758Z\"\n fill={mainColor}\n />\n <path\n d=\"M11.2124 20.5493H20.8791V10.8826H11.2124V20.5493Z\"\n fill={mainColor}\n />\n <path\n d=\"M0.910156 30.7911H10.5775V21.1801H0.910156V30.7911Z\"\n fill={mainColor}\n />\n <path\n d=\"M11.1948 41.0258H20.8615V31.4154H11.1948V41.0258Z\"\n fill={mainColor}\n />\n <path\n d=\"M31.7669 41.0581H41.4336V31.3908H31.7669V41.0581Z\"\n fill={mainColor}\n />\n <path\n d=\"M21.4776 51.2277H31.1443V41.656H21.4776V51.2277Z\"\n fill={mainColor}\n />\n <path\n d=\"M42.0615 51.2283H51.7282V41.6989H42.0615V51.2283Z\"\n fill={mainColor}\n />\n </chakra.svg>\n );\n },\n);\nCargonetLogo.displayName = \"CargonetLogo\";\n","import { chakra } from \"@chakra-ui/react\";\nimport { ComponentProps, forwardRef, useId } from \"react\";\n\nexport const SvgBox = chakra(\"svg\");\n\nconst fillRecipe = {\n base: {},\n variants: {\n fill: {\n main: {\n fill: {\n _light: \"#1d211c\",\n _dark: \"#ffffff\",\n },\n },\n accent: {\n fill: {\n _light: \"#138c6e\",\n _dark: \"#ffffff\",\n },\n },\n },\n },\n};\n\nconst Path = chakra(\"path\", fillRecipe);\n\nconst SVGGroup = chakra(\"g\", fillRecipe);\n\ntype VyLogoProps = ComponentProps<typeof SvgBox>;\n\nexport const VyLogo = forwardRef<SVGSVGElement, VyLogoProps>((props, ref) => {\n const id = useId();\n\n return (\n <SvgBox ref={ref} viewBox=\"0 0 107 54\" {...props}>\n <title>Vy logo</title>\n <Path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M79.97 33.44a.04.04 0 0 0 0-.08 5.76 5.76 0 0 1-2.32-.85c-1.56-1-2.79-2.9-3.83-6.07L68.14 7.16c-1.18-4.04-3.42-5.85-5.48-6.6a8.36 8.36 0 0 0-2.88-.52h-1.44a.04.04 0 0 0 0 .08c.57.09 1.18.24 1.8.5 1.92.8 3.92 2.63 5.06 6.54l5.61 19.07c1.06 3.3 2.31 5.27 3.92 6.3 1.01.64 2.17.9 3.5.9h1.74Z\"\n fill=\"main\"\n />\n <mask\n id={`${id}-a`}\n style={{ maskType: \"alpha\" }}\n maskUnits=\"userSpaceOnUse\"\n x=\"0\"\n y=\"0\"\n width=\"94\"\n height=\"54\"\n >\n <Path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0 .03h93.26v53.65H0V.03Z\"\n fill=\"main\"\n />\n </mask>\n <SVGGroup\n mask={`url(#${id}-a)`}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill=\"main\"\n >\n <Path d=\"M84.57 33.44a.04.04 0 0 0 .01-.08c-2.34-.3-3.85-3.59-4.68-6.38-.88-2.93-4.04-13.63-5.92-19.82C72.08.94 66.2.05 63.54.04a.04.04 0 0 0-.01.08c2.49.34 6.02 1.85 7.55 7.04 1.34 4.55 5.6 19.03 5.76 19.51 1.02 3.03 2.22 4.85 3.73 5.83a6.3 6.3 0 0 0 3.54.94h.46ZM23.28 53.68h-.72c-2.12 0-4.68-1.08-6.09-6.04L3.8 4.37C3.04 1.77 1.93.47.03.15A.04.04 0 0 1 .04.07h1.9c2.54 0 3.92 1.27 4.8 4.3 0 0 11.72 39.78 12.79 43.54.78 2.78 1.7 4.67 3.13 5.43.23.13.42.2.62.26a.04.04 0 0 1 0 .08ZM18.99 5.99C17.77 1.79 15.87.04 12.37.04h-1.71a.04.04 0 0 0 0 .08c2.73.39 4.32 2.19 5.39 5.87 0 0 10.49 35.72 11.85 40.4l1.44-4.87L18.99 6Z\" />\n <Path d=\"M24.26 53.68h1.24c1.57 0 2.69-.41 3.52-1.1 1.37-1.1 1.99-2.93 2.56-4.86.09-.29 11.2-37.95 11.59-39.42 1.32-4.97 4.27-7.13 7.43-7.9a12.2 12.2 0 0 1 1.58-.28.04.04 0 0 0 0-.08h-1.4c-4.15 0-8.8 1.65-10.56 8.26-.63 2.38-11.5 39.13-11.58 39.42-.57 1.93-1.23 3.96-2.59 5.07-.56.45-1.06.7-1.8.81a.04.04 0 0 0 0 .08ZM81.3 27.76l6.53-21.78C88.89 2.3 90.49.5 93.23.11a.04.04 0 0 0-.01-.08H91.5c-3.5 0-5.4 1.76-6.62 5.95l-5.05 16.97s1.33 4.46 1.46 4.8Z\" />\n </SVGGroup>\n <Path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M98.49.07h-1.82c-2.98 0-4.6 1.49-5.63 5.06l-6.52 21.79a18.22 18.22 0 0 1-1.67 3.96c.57.78 1.17 1.26 1.76 1.38 1.13-.96 2.06-2.75 2.89-5.46l6.49-21.67c.9-3.1 2.23-4.63 4.5-4.98a.04.04 0 0 0 0-.08Z\"\n fill=\"accent\"\n />\n <Path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M85.25 34.53h-2.93L78.58 46.9c-1.82 6.1 1.05 6.73 2.15 6.73h2.31a.04.04 0 0 0 .01-.09c-1.25-.3-2.96-1.6-1.45-6.64l3.65-12.37ZM102.35.11c.02 0 .03-.02.03-.04a.04.04 0 0 0-.04-.04h-.4c-2.54 0-3.92 1.27-4.8 4.3 0 0-5 16.82-6.57 22.03-1.57 5.2-2.65 6.6-4.78 6.97l-.11.03a.04.04 0 0 0 0 .08h1.45c3.72 0 5.1-2.48 6.41-6.84l7.5-25.07c.19-.6.7-1.23 1.31-1.42Z\"\n fill=\"main\"\n />\n <mask\n id={`${id}-b`}\n style={{ maskType: \"alpha\" }}\n maskUnits=\"userSpaceOnUse\"\n x=\"29\"\n y=\"0\"\n width=\"78\"\n height=\"54\"\n >\n <Path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M29.55.04H106v53.64H29.55V.04Z\"\n fill=\"main\"\n />\n </mask>\n <SVGGroup mask={`url(#${id}-b)`} fillRule=\"evenodd\" clipRule=\"evenodd\">\n <Path\n d=\"m88.2 34.45-3.96 13.46c-1.54 5.18.9 5.72 1.83 5.72h2.26a.04.04 0 0 0 0-.09c-1.05-.27-2.44-1.4-1.18-5.63l4.43-15.02c-.7.71-1.88 1.37-3.38 1.56ZM93.71 53.63c.02 0 .04-.02.04-.05a.04.04 0 0 0-.03-.04c-.9-.25-2.02-1.24-.96-4.77 0 0 12.4-42.2 13.08-44.6a3.1 3.1 0 0 0-2.47-4.1c-.02 0-.06-.02-.07.01-.01.04.03.06.04.06.3.16.63.52.45 1.14L89.84 48.77c-1.32 4.4.76 4.86 1.55 4.86h2.32ZM74.1 33.44a.04.04 0 0 0 0-.08 5.77 5.77 0 0 1-2.3-.83c-1.64-1.04-2.9-3.06-3.98-6.5-.1-.29-5.37-18.25-5.55-18.87-1.12-3.8-2.91-5.63-4.68-6.46a7.06 7.06 0 0 0-3.04-.66H53a.04.04 0 0 0-.02.08c.3.05 4.32.17 6.35 7.04 2.03 6.86 4.46 15.07 5.28 17.97 1.77 6.26 4.07 8.3 7.75 8.3h1.73Z\"\n fill=\"main\"\n />\n <Path\n d=\"M55.43 2.4c-1.48 1.27-2.7 3.16-3.44 5.9-.07.29-11.08 37.74-11.32 38.55-.93 3.12-1.7 6.21-5.2 6.75a.04.04 0 0 0 0 .08h.7l.6-.01c3.56-.14 5.33-1.66 6.85-6.82L54.94 8.3c.44-1.44.96-3.08 1.7-4.52-.15-.25-.7-.96-1.2-1.38Z\"\n fill=\"main\"\n />\n <Path\n d=\"M53.78 1.44a4.64 4.64 0 0 0-4.17.93A10.79 10.79 0 0 0 46.19 8L34.53 47.72c-.58 1.93-1.2 3.75-2.56 4.87-.62.5-1.4.86-2.39 1.01a.04.04 0 0 0 0 .08h1.8c1.57 0 2.69-.41 3.53-1.1 1.36-1.1 1.98-2.93 2.56-4.86L49.05 8.3c.73-2.74 1.95-4.63 3.43-5.9.43-.36.88-.68 1.35-.95l-.05-.01Z\"\n fill=\"accent\"\n />\n </SVGGroup>\n <Path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M26.55 50.33a9.09 9.09 0 0 1-1.24-2.7c-.44-1.54-12.46-42.5-12.46-42.5C11.82 1.56 10.2.07 7.22.07H5.4a.04.04 0 0 0 0 .08C7.67.5 9 2.04 9.9 5.13l12.46 42.5c.65 2.28 1.53 3.74 2.5 4.65.7-.4 1.29-1.05 1.69-1.95Z\"\n fill=\"main\"\n />\n </SvgBox>\n );\n});\nVyLogo.displayName = \"VyLogo\";\n","import { ComponentProps, forwardRef, useId } from \"react\";\n\nimport { SvgBox } from \"./VyLogo\";\n\ntype VyLogoPrideProps = ComponentProps<typeof SvgBox>;\n\nexport const VyLogoPride = forwardRef<SVGSVGElement, VyLogoPrideProps>(\n (props, ref) => {\n // These colors should not be tokenized, as they are logo specific.\n\n const pinkColor = \"#ED6F99\";\n const purpleColor = \"#C06CF7\";\n const darkPurpleColor = \"#821889\";\n const greenColor = \"#56BDBF\";\n const darkGreenColor = \"#3E8C26\";\n const blueColor = \"#3A0692\";\n const redColor = \"#EA3323\";\n const orangeColor = \"#F09436\";\n const yellowColor = \"#FFFF54\";\n\n const id = useId();\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <SvgBox ref={ref} viewBox=\"0 0 107 54\" {...(props as any)}>\n {/* Find a way to not use any */}\n <title>Vy logo pride</title>\n <svg\n width=\"108\"\n height=\"55\"\n viewBox=\"0 0 108 55\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M81.4496 34.0577C81.4727 34.0577 81.4914 34.0389 81.4914 34.0158C81.4914 33.9951 81.4762 33.9779 81.4564 33.9747C80.5875 33.8486 79.8027 33.5738 79.0873 33.115C77.4968 32.0951 76.2499 30.1645 75.189 26.9334C75.0494 26.5085 69.7485 8.46796 69.4024 7.29056C68.1947 3.18059 65.9216 1.33839 63.8188 0.561417C62.7398 0.162674 61.7055 0.0441895 60.8829 0.0441895C60.4167 0.0441895 59.4168 0.0441895 59.4168 0.0441895C59.3937 0.0441895 59.375 0.0629034 59.375 0.0859014C59.375 0.106645 59.3902 0.123893 59.4101 0.127162C59.9962 0.211263 60.6246 0.368077 61.262 0.635935C63.2087 1.45371 65.24 3.30719 66.4107 7.29056C66.6722 8.18038 72.0104 26.3533 72.125 26.7112C73.2046 30.0866 74.4763 32.0839 76.1099 33.1244C77.1418 33.7817 78.318 34.0577 79.6817 34.0577H81.4496\"\n fill={pinkColor}\n />\n <mask\n id={`${id}-a-pride`}\n style={{ maskType: \"luminance\" }}\n maskUnits=\"userSpaceOnUse\"\n x=\"0\"\n y=\"0\"\n width=\"95\"\n height=\"55\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0.00585938 0.0339355H94.9827V54.6696H0.00585938V0.0339355Z\"\n fill=\"white\"\n />\n </mask>\n <g mask={`url(#${id}-a-pride)`}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M86.1392 34.0577C86.1622 34.0577 86.1809 34.0389 86.1809 34.0158C86.1809 33.9951 86.1658 33.9779 86.146 33.9747V33.9745C83.7657 33.6665 82.2265 30.3247 81.3764 27.4799C80.4843 24.4948 77.2629 13.5951 75.3455 7.29056C73.4194 0.957342 67.4267 0.0485861 64.7129 0.0441895H64.7137C64.6906 0.0441895 64.6719 0.0629034 64.6719 0.0859014C64.6719 0.106645 64.6869 0.123893 64.7068 0.127162L64.7067 0.127388C67.2413 0.468862 70.8417 2.00375 72.3953 7.29056C73.7591 11.9308 78.0927 26.6723 78.2592 27.1656C79.2998 30.2466 80.5197 32.1068 82.0639 33.1046C83.1032 33.776 84.2891 34.0577 85.6664 34.0577H86.1392\"\n fill={purpleColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M23.7089 54.6763C23.4058 54.6763 23.1352 54.6763 22.9803 54.6763C20.8144 54.6763 18.2099 53.5754 16.7766 48.5188L3.8641 4.45414C3.09965 1.80939 1.96226 0.481143 0.0347223 0.151506C0.014881 0.148237 0 0.131101 0 0.110245C0 0.0871344 0.018714 0.0684204 0.0418246 0.0684204H1.98402C4.56565 0.0684204 5.96987 1.36104 6.86386 4.45414C6.86386 4.45414 18.8019 44.9686 19.8869 48.7964C20.6896 51.628 21.628 53.5542 23.0795 54.3328C23.3142 54.4587 23.5119 54.5409 23.7154 54.5932C23.7352 54.5965 23.7506 54.6138 23.7506 54.6345C23.7506 54.6576 23.7319 54.6763 23.7089 54.6763Z\"\n fill={darkPurpleColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.3365 6.09794C18.1013 1.82472 16.1613 0.0390015 12.5947 0.0390015H10.8543C10.8312 0.0390015 10.8125 0.0577155 10.8125 0.0808261C10.8125 0.101569 10.8277 0.118818 10.8476 0.122087V0.121974C13.6341 0.517899 15.2582 2.35232 16.341 6.09794C16.341 6.09794 27.027 42.4871 28.4146 47.2512C28.7189 46.2219 29.2327 44.4828 29.8791 42.2935C28.6038 37.9117 19.3365 6.09794 19.3365 6.09794\"\n fill={greenColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M24.7059 54.6763H25.9753C27.5661 54.6763 28.7056 54.2553 29.5596 53.5597C30.9494 52.4272 31.5822 50.5663 32.1676 48.6028C32.2552 48.309 43.5646 9.95201 43.9629 8.45455C45.3098 3.39196 48.3208 1.18687 51.5334 0.404941C52.0668 0.275183 52.6055 0.184995 53.1431 0.127162H53.1439C53.1638 0.123893 53.1789 0.106645 53.1789 0.0859014C53.1789 0.0629034 53.1602 0.0441895 53.1371 0.0441895H51.7232C47.4872 0.0441895 42.7565 1.72507 40.9662 8.45455C40.3206 10.8814 29.2585 48.309 29.1709 48.6028C28.5854 50.5663 27.9202 52.6362 26.5303 53.7687C25.9647 54.2295 25.4469 54.4781 24.6995 54.5933H24.699C24.6792 54.5966 24.6641 54.614 24.6641 54.6346C24.6641 54.6577 24.6828 54.6764 24.7059 54.6764V54.6763\"\n fill={darkGreenColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M82.7992 28.2698L89.4539 6.09287C90.5365 2.34748 92.1604 0.513059 94.9467 0.117021H94.9471C94.9669 0.113752 94.9821 0.0965034 94.9821 0.0757602C94.9821 0.0526495 94.9635 0.0339355 94.9403 0.0339355H93.2001C89.6335 0.0339355 87.6935 1.81966 86.4583 6.09287L81.3125 23.3801C81.3125 23.3801 82.6735 27.9173 82.7992 28.2698\"\n fill={darkPurpleColor}\n />\n </g>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M100.313 0.0684204H98.4597C95.4268 0.0684204 93.7771 1.58696 92.7268 5.22074C92.7268 5.22074 86.1431 27.2276 86.0874 27.4145C85.6036 28.9698 84.9952 30.48 84.3828 31.4546C84.9626 32.2484 85.5745 32.7345 86.1805 32.8562C87.3236 31.8751 88.2719 30.0574 89.1204 27.2954C89.1653 27.1488 95.731 5.22074 95.731 5.22074C96.6408 2.0733 98.0002 0.512821 100.319 0.151506H100.32C100.34 0.148237 100.355 0.131101 100.355 0.110245C100.355 0.0871344 100.336 0.0684204 100.313 0.0684204\"\n fill={blueColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M86.829 35.1664H83.8473C82.4939 39.632 80.7038 45.5437 80.0385 47.7716C78.1846 53.98 81.1091 54.6188 82.2256 54.6188C82.3769 54.6188 83.722 54.6188 84.5809 54.6188C84.604 54.6187 84.6227 54.6001 84.6227 54.577C84.6227 54.5571 84.6088 54.5403 84.5902 54.5361H84.5899C83.3122 54.232 81.5755 52.9078 83.1092 47.7716C83.1092 47.7716 85.8127 38.6188 86.829 35.1664\"\n fill={blueColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M104.248 0.115556C104.265 0.110144 104.277 0.0943614 104.277 0.0757602C104.277 0.0526495 104.258 0.0339355 104.235 0.0339355H103.82C101.239 0.0339355 99.8344 1.32655 98.9403 4.41955C98.9403 4.41955 93.8509 21.5423 92.2501 26.8474C90.6493 32.1524 89.5515 33.5736 87.3782 33.9486L87.2635 33.9747C87.2436 33.978 87.2285 33.9951 87.2285 34.0158C87.2285 34.0389 87.2472 34.0577 87.2703 34.0577H88.7449C92.5299 34.0577 93.9393 31.5339 95.2711 27.0896C96.387 23.3664 102.914 1.55428 102.914 1.55428C103.1 0.938746 103.632 0.300666 104.248 0.11533V0.115556\"\n fill={greenColor}\n />\n <mask\n id={`${id}-b-pride`}\n style={{ maskType: \"luminance\" }}\n maskUnits=\"userSpaceOnUse\"\n x=\"30\"\n y=\"0\"\n width=\"78\"\n height=\"55\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M30.0938 0.0441895H107.967V54.6696H30.0938V0.0441895Z\"\n fill=\"white\"\n />\n </mask>\n <g mask={`url(#${id}-b-pride)`}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M89.8289 35.0891C88.7828 38.6493 85.8015 48.8015 85.8015 48.8015C84.2266 54.076 86.7112 54.6188 87.6599 54.6188H89.9623C89.9855 54.6188 90.0042 54.6001 90.0042 54.577C90.0042 54.5571 89.9903 54.5403 89.9717 54.5362V54.5363C88.8916 54.2553 87.4798 53.0991 88.7632 48.8015C88.7632 48.8015 92.0286 37.7282 93.2719 33.5031C92.561 34.2226 91.3615 34.8917 89.8289 35.0891\"\n fill={greenColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M95.4467 54.6188C95.4698 54.6188 95.4885 54.6001 95.4885 54.577C95.4885 54.557 95.4747 54.5403 95.4561 54.5362H95.4558C94.5434 54.2765 93.3986 53.2655 94.4728 49.6684C94.4728 49.6684 107.101 6.68958 107.804 4.25563C108.507 1.82169 106.809 0.298979 105.28 0.0692254C105.269 0.0676471 105.219 0.0537807 105.209 0.0862483C105.199 0.118716 105.241 0.138557 105.249 0.143179C105.553 0.303376 105.894 0.672244 105.708 1.30469C105.522 1.93713 91.499 49.6684 91.499 49.6684C90.1586 54.1569 92.273 54.6188 93.0802 54.6188H95.4467\"\n fill={darkGreenColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M75.4659 34.0577C75.4889 34.0577 75.5076 34.0389 75.5076 34.0158C75.5076 33.9951 75.4925 33.9778 75.4726 33.9746H75.4723C74.6146 33.8501 73.8387 33.5807 73.1306 33.1321C71.4607 32.0744 70.1687 30.0201 69.0737 26.521C68.9798 26.2215 63.6049 7.92165 63.4194 7.29056C62.2821 3.42105 60.4546 1.5616 58.6517 0.708874C57.557 0.191083 56.4715 0.0441895 55.5553 0.0441895C54.9539 0.0441895 54.4151 0.0441895 53.9784 0.0441895H53.9715C53.9484 0.0441895 53.9297 0.0629034 53.9297 0.0859014C53.9297 0.106645 53.9448 0.123893 53.9646 0.127162V0.127275C54.26 0.171918 58.362 0.298745 60.4275 7.29056C62.493 14.2825 64.9683 22.6405 65.8045 25.5908C67.6133 31.9722 69.9469 34.0577 73.6985 34.0577H75.4659\"\n fill={redColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M56.4576 2.44421C56.4559 2.44568 56.4541 2.44703 56.4524 2.4485C54.944 3.74292 53.6961 5.66449 52.9539 8.45445C52.8754 8.74959 41.6662 46.889 41.4206 47.7167C40.4784 50.8926 39.6893 54.0469 36.1209 54.5932C36.101 54.5965 36.0859 54.6138 36.0859 54.6345C36.0859 54.6576 36.1047 54.6763 36.1278 54.6763H36.8373C36.8373 54.6763 37.3489 54.6683 37.4515 54.6642C41.0756 54.5179 42.8818 52.978 44.4271 47.7167C45.5556 43.8746 55.8691 8.75883 55.9604 8.45445C56.4006 6.98517 56.9293 5.3123 57.6882 3.84641C57.53 3.59208 56.9713 2.87385 56.4576 2.44421\"\n fill={orangeColor}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M54.7756 1.4669C53.6292 1.14087 52.0012 1.22801 50.5238 2.41218C49.0463 3.59635 47.7228 5.60664 47.0466 8.14847C46.968 8.4435 35.2535 48.309 35.1658 48.6028C34.5804 50.5662 33.9476 52.4272 32.5578 53.5597C31.9265 54.0741 31.139 54.4382 30.1287 54.5931V54.5932C30.1089 54.5965 30.0938 54.6138 30.0938 54.6345C30.0938 54.6576 30.1125 54.6763 30.1355 54.6763H31.9702C33.561 54.6763 34.7005 54.2555 35.5545 53.5597C36.9444 52.4272 37.5771 50.5663 38.1625 48.6028C38.2502 48.309 49.8795 8.74957 49.958 8.45443C50.7002 5.66447 51.9481 3.7429 53.4565 2.44848C53.8916 2.07499 54.3488 1.75505 54.8217 1.48077C54.8141 1.47817 54.7985 1.47344 54.7756 1.4669\"\n fill={yellowColor}\n />\n </g>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M27.0349 51.2629C26.519 50.5125 26.0823 49.6082 25.7735 48.5189C25.328 46.9472 13.0878 5.22074 13.0878 5.22074C12.0376 1.58696 10.3878 0.0684204 7.355 0.0684204H5.50276C5.47965 0.0684204 5.46094 0.0872471 5.46094 0.110245C5.46094 0.131101 5.47616 0.148237 5.49589 0.151506C7.81439 0.512821 9.17375 2.0733 10.0835 5.22074L22.7739 48.5189C23.4303 50.835 24.3325 52.3205 25.3258 53.2511C26.0299 52.8441 26.6295 52.1809 27.0349 51.2629\"\n fill={blueColor}\n />\n </svg>\n </SvgBox>\n );\n },\n);\nVyLogoPride.displayName = \"VyLogoPride\";\n","\"use client\";\nimport {\n BoxProps,\n Center,\n RecipeVariantProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport {\n Backward15MediaControllerFill30Icon,\n Forward15MediaControllerFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { createTexts, useTranslation } from \"..\";\nimport { mediaControllerSlotRecipe } from \"../theme/slot-recipes/media-controller-button\";\n\nexport type MediaControllerVariantProps = RecipeVariantProps<\n typeof mediaControllerSlotRecipe\n>;\n\ntype JumpButtonProps = BoxProps &\n PropsWithChildren<MediaControllerVariantProps> & {\n onClick: () => void;\n \"aria-label\"?: string;\n disabled?: boolean;\n direction: \"backward\" | \"forward\";\n size: \"sm\" | \"lg\";\n };\n\n/**\n * A jump button.\n *\n * Intended to jump 15 seconds forward or backward in a video, podcast, audiobook or similar.\n *\n * Specify what direction you want to skip with the `direction` prop.\n *\n * ```tsx\n * <JumpButton direction=\"forward\" onClick={onGoForward} />\n * ```\n */\nexport const JumpButton = forwardRef<HTMLButtonElement, JumpButtonProps>(\n (props, ref) => {\n const { direction, disabled, size = \"sm\" } = props;\n const { t } = useTranslation();\n\n const recipe = useSlotRecipe({ key: \"mediaControllerButton\" });\n const styles = recipe({ variant: \"jumpSkip\", size });\n\n return (\n <Center\n as=\"button\"\n ref={ref}\n css={styles.root}\n aria-label={\n direction === \"forward\" ? t(texts.forward) : t(texts.backward)\n }\n disabled={disabled}\n {...props}\n >\n {direction === \"forward\" ? (\n <Forward15MediaControllerFill30Icon css={styles.icon} />\n ) : (\n <Backward15MediaControllerFill30Icon css={styles.icon} />\n )}\n </Center>\n );\n },\n);\nJumpButton.displayName = \"JumpButton\";\n\nconst texts = createTexts({\n forward: {\n nb: \"15 sekunder frem\",\n nn: \"15 sekunder fram\",\n sv: \"15 sekunder framåt\",\n en: \"15 seconds forward\",\n },\n backward: {\n nb: \"15 sekunder tilbake\",\n nn: \"15 sekunder tilbake\",\n sv: \"15 sekunder tillbaka\",\n en: \"15 seconds backward\",\n },\n});\n","\"use client\";\nimport { BoxProps, Center, useSlotRecipe } from \"@chakra-ui/react\";\nimport {\n PauseMediaControllerFill24Icon,\n PlayMediaControllerFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { createTexts, MediaControllerVariantProps, useTranslation } from \"..\";\n\ntype PlayPauseButtonProps = BoxProps &\n PropsWithChildren<MediaControllerVariantProps> & {\n onClick: () => void;\n \"aria-label\"?: string;\n disabled?: boolean;\n playing: boolean;\n size: \"sm\" | \"lg\";\n };\n\n/**\n * A playback button.\n *\n * Intended to start or pause playback of a video, podcast, audiobook or similar.\n *\n * Specify the current playing state with `playing`.\n *\n * ```tsx\n * <PlayPauseButton playing={playing} onClick={onPlaybackClick} />\n * ```\n */\nexport const PlayPauseButton = forwardRef<\n HTMLButtonElement,\n PlayPauseButtonProps\n>((props, ref) => {\n const { playing, disabled, size = \"sm\" } = props;\n\n const { t } = useTranslation();\n\n const recipe = useSlotRecipe({ key: \"mediaControllerButton\" });\n const styles = recipe({ variant: \"play\", size });\n\n return (\n <Center\n ref={ref}\n as=\"button\"\n css={styles.root}\n aria-label={playing ? t(texts.pause) : t(texts.play)}\n disabled={disabled}\n {...props}\n >\n {playing ? (\n <PauseMediaControllerFill24Icon css={styles.icon} />\n ) : (\n <PlayMediaControllerFill24Icon css={styles.icon} />\n )}\n </Center>\n );\n});\nPlayPauseButton.displayName = \"PlayPauseButton\";\n\nconst texts = createTexts({\n pause: {\n nb: \"Pause\",\n nn: \"Pause\",\n sv: \"Paus\",\n en: \"Pause\",\n },\n play: {\n nb: \"Spill av\",\n nn: \"Spill av\",\n sv: \"Spel av\",\n en: \"Play\",\n },\n});\n","\"use client\";\nimport { BoxProps, Center, useSlotRecipe } from \"@chakra-ui/react\";\nimport {\n NextMediaControllerFill30Icon,\n PreviousMediaControllerFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { createTexts, MediaControllerVariantProps, useTranslation } from \"..\";\n\ntype SkipButtonProps = BoxProps &\n PropsWithChildren<MediaControllerVariantProps> & {\n onClick: () => void;\n \"aria-label\"?: string;\n disabled?: boolean;\n direction: \"backward\" | \"forward\";\n size: \"sm\" | \"lg\";\n };\n/**\n * A skip button.\n *\n * Intended to skip to the next section, chapter og similar.\n *\n * Specify what direction you want to skip with the `direction` prop.\n *\n * ```tsx\n * <SkipButton direction=\"forward\" onClick={onNextChapter} />\n * ```\n */\nexport const SkipButton = forwardRef<HTMLButtonElement, SkipButtonProps>(\n (props, ref) => {\n const { direction, disabled, size = \"sm\" } = props;\n\n const { t } = useTranslation();\n\n const recipe = useSlotRecipe({ key: \"mediaControllerButton\" });\n const styles = recipe({ variant: \"jumpSkip\", size });\n\n return (\n <Center\n ref={ref}\n as=\"button\"\n css={styles.root}\n aria-label={direction === \"forward\" ? t(texts.next) : t(texts.previous)}\n disabled={disabled}\n {...props}\n >\n {direction === \"forward\" ? (\n <NextMediaControllerFill30Icon css={styles.icon} />\n ) : (\n <PreviousMediaControllerFill30Icon css={styles.icon} />\n )}\n </Center>\n );\n },\n);\nSkipButton.displayName = \"SkipButton\";\n\nconst texts = createTexts({\n next: {\n nb: \"Neste\",\n nn: \"Neste\",\n sv: \"Nästa\",\n en: \"Next\",\n },\n previous: {\n nb: \"Forrige\",\n nn: \"Forrige\",\n sv: \"Föregående\",\n en: \"Previous\",\n },\n});\n","\"use client\";\nimport {\n Box,\n BoxProps,\n chakra,\n Popover as ChakraPopover,\n PopoverCloseTrigger,\n PopoverRootProps,\n usePopoverContext,\n} from \"@chakra-ui/react\";\nimport { ArrowRightFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React, {\n forwardRef,\n PropsWithChildren,\n useEffect,\n useState,\n} from \"react\";\n\nimport {\n Button,\n createTexts,\n Popover,\n PopoverContent,\n PopoverProps,\n PopoverTrigger,\n ProgressIndicator,\n useColorMode,\n useTranslation,\n} from \"..\";\n\nconst EXPIRATION_DELAY_MS = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds\n\nconst isNudgeExpired = (\n introducedDate: string,\n delay = EXPIRATION_DELAY_MS,\n): boolean => {\n const expirationTime = new Date(introducedDate).getTime() + delay;\n return expirationTime < Date.now();\n};\n\nconst logExpirationWarning = () => {\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `The nudge has been used for longer than 30 days. Please remove it from the codebase.\n This is a development-only warning and will not appear in production.`,\n );\n }\n};\n\nexport type NudgeProps = {\n introducedDate: string;\n} & PopoverRootProps;\n\nexport const Nudge = (props: NudgeProps) => {\n const { introducedDate, size = \"md\", ...rest } = props;\n\n if (isNudgeExpired(introducedDate)) {\n logExpirationWarning();\n return null;\n }\n\n return <Popover defaultOpen={true} size={size} {...rest} />;\n};\n\nexport const NudgeTrigger = forwardRef<\n HTMLButtonElement,\n ChakraPopover.TriggerProps\n>(({ ...props }, ref) => {\n return <PopoverTrigger {...props} ref={ref} />;\n});\nNudgeTrigger.displayName = \"NudgeTrigger\";\n\nexport const NudgeContent = forwardRef<HTMLDivElement, PopoverProps>(\n ({ showCloseButton = true, children, ...props }, ref) => {\n const [currentStep, setCurrentStep] = useState(1);\n const childrenArray = React.Children.toArray(children); // Convert children to an array\n\n const { open } = usePopoverContext();\n\n useEffect(() => {\n setCurrentStep(1);\n }, [children, open]);\n\n const wizardPages = childrenArray.filter(\n (child) =>\n React.isValidElement(child) &&\n (child.type as React.ComponentType).displayName === \"NudgeWizardStep\",\n );\n\n const restChildren = childrenArray.filter(\n (child) =>\n !React.isValidElement(child) ||\n (child.type as React.ComponentType).displayName !== \"NudgeWizardStep\",\n );\n\n const totalSteps = wizardPages.length;\n const isLastStep = totalSteps === currentStep;\n\n if (wizardPages.length === 0) {\n return (\n <PopoverContent showCloseButton={showCloseButton} {...props} ref={ref}>\n {children}\n </PopoverContent>\n );\n }\n\n return (\n <PopoverContent showCloseButton={showCloseButton} {...props} ref={ref}>\n {restChildren}\n {wizardPages[currentStep - 1] as React.ReactElement}\n <NudgeActions gap=\"18px\">\n <ProgressIndicator\n activeStep={currentStep}\n numberOfSteps={totalSteps}\n />\n\n <NextButton\n isLastStep={isLastStep}\n onNext={() => {\n setCurrentStep((prev) => prev + 1);\n }}\n />\n </NudgeActions>\n </PopoverContent>\n );\n },\n);\nNudgeContent.displayName = \"NudgeContent\";\n\nexport const NudgeActions = ({ ...props }: BoxProps) => {\n const { colorMode } = useColorMode();\n\n return (\n <Box\n className={colorMode === \"dark\" ? \"light\" : \"dark\"}\n display=\"flex\"\n paddingTop=\"1rem\"\n alignItems=\"center\"\n gap=\"0.5rem\"\n justifyContent=\"between\"\n width=\"100%\"\n {...props}\n />\n );\n};\n\ntype NextOrCloseButtonProps = {\n isLastStep: boolean;\n onNext: () => void;\n};\nconst NextButton = ({ isLastStep, onNext }: NextOrCloseButtonProps) => {\n const { t } = useTranslation();\n\n if (isLastStep)\n return (\n <PopoverCloseTrigger>\n <Button variant=\"tertiary\" size=\"xs\">\n {t(texts.close)}\n </Button>\n </PopoverCloseTrigger>\n );\n\n return (\n <Button\n variant=\"tertiary\"\n size=\"xs\"\n rightIcon={<ArrowRightFill18Icon />}\n onClick={onNext}\n >\n {t(texts.nextStep)}\n </Button>\n );\n};\n\nconst texts = createTexts({\n nextStep: {\n nb: \"Neste\",\n nn: \"Neste\",\n sv: \"Nästa\",\n en: \"Next\",\n },\n close: {\n nb: \"Lukk\",\n nn: \"Lukk\",\n sv: \"Stäng\",\n en: \"Close\",\n },\n});\n\nexport const NudgeWizardStep = ({ children }: PropsWithChildren) => {\n return (\n <chakra.div display=\"flex\" flexDirection=\"column\" gap=\"1rem\" width=\"100%\">\n {children}\n </chakra.div>\n );\n};\n\nNudgeWizardStep.displayName = \"NudgeWizardStep\";\n\nexport const NudgeCloseTrigger = forwardRef<\n HTMLButtonElement,\n ChakraPopover.TriggerProps\n>(({ children, ...props }, ref) => {\n const isStringChild = typeof children === \"string\";\n\n return (\n <ChakraPopover.CloseTrigger {...props} ref={ref} asChild={!isStringChild}>\n {children}\n </ChakraPopover.CloseTrigger>\n );\n});\nNudgeCloseTrigger.displayName = \"NudgeCloseTrigger\";\n","\"use client\";\n\nimport {\n Box,\n createContext,\n Pagination as ChakraPagination,\n usePaginationContext,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport {\n DropdownLeftOutline18Icon,\n DropdownRightOutline18Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport * as React from \"react\";\n\nimport { createTexts, List, ListItem, useTranslation } from \"..\";\nimport { ButtonVariantContext, PaginationRootProps } from \"./types\";\n\n/**\n * A pagination component is used to navigate between multiple pages.\n *\n * Count is the total number of pages.\n * pageSize is the number of items per page.\n * defaultPage is the default page to show.\n * siblingCount is the number of sibling pages to show.\n *\n * ```tsx\n * <Pagination count={10} pageSize={1} defaultPage={1}>\n * <PaginationPrevTrigger />\n * <PaginationItems />\n * <PaginationNextTrigger />\n * </Pagination>\n * ```\n **/\n\nconst [RootPropsProvider, useRootProps] = createContext<ButtonVariantContext>({\n name: \"RootPropsProvider\",\n});\n\nexport const Pagination = React.forwardRef<HTMLDivElement, PaginationRootProps>(\n (props, ref) => {\n const { getHref, children, ...rest } = props;\n const recipe = useSlotRecipe({ key: \"pagination\" });\n const styles = recipe();\n\n return (\n <RootPropsProvider\n value={{\n getHref,\n }}\n >\n <ChakraPagination.Root\n ref={ref}\n type={getHref ? \"link\" : \"button\"}\n {...rest}\n >\n <List css={styles.list}>{children}</List>\n </ChakraPagination.Root>\n </RootPropsProvider>\n );\n },\n);\nPagination.displayName = \"Pagination\";\n\nexport const PaginationEllipsis = React.forwardRef<\n HTMLDivElement,\n ChakraPagination.EllipsisProps\n>((props, ref) => {\n return (\n <ListItem>\n <ChakraPagination.Ellipsis ref={ref} {...props} asChild>\n <Box cursor=\"default\">...</Box>\n </ChakraPagination.Ellipsis>\n </ListItem>\n );\n});\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\n\nexport const PaginationItem = React.forwardRef<\n HTMLButtonElement,\n ChakraPagination.ItemProps\n>((props, ref) => {\n const rootProps = useRootProps();\n const { t } = useTranslation();\n const { page, totalPages } = usePaginationContext();\n\n if (rootProps.getHref) {\n return (\n <ListItem>\n <ChakraPagination.Item\n as={props.as ?? \"a\"}\n {...{\n href: rootProps.getHref(props.value as number),\n to: rootProps.getHref(props.value as number),\n }}\n ref={ref}\n aria-label={t(texts.pageOf(props.value, totalPages))}\n {...props}\n >\n {props.value}\n </ChakraPagination.Item>\n </ListItem>\n );\n }\n\n return (\n <ListItem>\n <ChakraPagination.Item\n as={props.as ?? \"button\"}\n ref={ref}\n aria-label={t(texts.pageOf(props.value, totalPages))}\n aria-selected={page === props.value}\n {...props}\n >\n {props.value}\n </ChakraPagination.Item>\n </ListItem>\n );\n});\nPaginationItem.displayName = \"PaginationItem\";\n\nexport const PaginationPrevTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraPagination.PrevTriggerProps\n>((props, ref) => {\n const { page } = usePaginationContext();\n const recipe = useSlotRecipe({ key: \"pagination\" });\n const styles = recipe();\n const { t } = useTranslation();\n const rootProps = useRootProps();\n\n if (page <= 1) return null;\n\n if (rootProps.getHref) {\n return (\n <ListItem>\n <ChakraPagination.PrevTrigger\n as={props.as ?? \"a\"}\n asChild\n {...{\n href: rootProps.getHref(props.value as number),\n to: rootProps.getHref(props.value as number),\n }}\n ref={ref}\n css={styles.item}\n aria-label={t(texts.previousPage)}\n {...props}\n >\n <DropdownLeftOutline18Icon />\n </ChakraPagination.PrevTrigger>\n </ListItem>\n );\n }\n return (\n <ListItem>\n <ChakraPagination.PrevTrigger\n ref={ref}\n asChild\n aria-label={t(texts.previousPage)}\n as={props.as || \"button\"}\n css={styles.item}\n {...props}\n >\n <DropdownLeftOutline18Icon />\n </ChakraPagination.PrevTrigger>\n </ListItem>\n );\n});\nPaginationPrevTrigger.displayName = \"PaginationPrevTrigger\";\n\nexport const PaginationNextTrigger = React.forwardRef<\n HTMLButtonElement,\n ChakraPagination.NextTriggerProps\n>((props, ref) => {\n const { page, totalPages } = usePaginationContext();\n const recipe = useSlotRecipe({ key: \"pagination\" });\n const styles = recipe();\n const { t } = useTranslation();\n const rootProps = useRootProps();\n\n if (page >= totalPages) return null;\n\n if (rootProps.getHref) {\n return (\n <ListItem>\n <ChakraPagination.NextTrigger\n ref={ref}\n {...{\n href: rootProps.getHref(props.value as number),\n to: rootProps.getHref(props.value as number),\n }}\n css={styles.item}\n aria-label={t(texts.nextPage)}\n {...props}\n >\n <DropdownRightOutline18Icon />\n </ChakraPagination.NextTrigger>\n </ListItem>\n );\n }\n return (\n <ListItem>\n <ChakraPagination.NextTrigger\n ref={ref}\n css={styles.item}\n aria-label={t(texts.nextPage)}\n as={props.as || \"button\"}\n {...props}\n >\n <DropdownRightOutline18Icon />\n </ChakraPagination.NextTrigger>\n </ListItem>\n );\n});\nPaginationNextTrigger.displayName = \"PaginationNextTrigger\";\n\nexport const PaginationItems = (\n props: React.HTMLAttributes<HTMLElement> & {},\n) => {\n return (\n <ChakraPagination.Context>\n {({ pages }) =>\n pages.map((page, index) => {\n return page.type === \"ellipsis\" ? (\n <PaginationEllipsis\n key={`ellipsis-${index}`}\n index={index}\n {...props}\n />\n ) : (\n <PaginationItem\n key={`pagination-item-${page.value}`}\n value={page.value}\n type=\"page\"\n {...props}\n />\n );\n })\n }\n </ChakraPagination.Context>\n );\n};\n\nconst texts = createTexts({\n previousPage: {\n nb: \"Forrige side\",\n nn: \"Førre side\",\n en: \"Previous page\",\n sv: \"Föregående sida\",\n },\n nextPage: {\n nb: \"Neste side\",\n nn: \"Neste side\",\n en: \"Next page\",\n sv: \"Nästa sida\",\n },\n pageOf: (page, totalPages) => {\n return {\n nb: `Side ${page} av ${totalPages}`,\n nn: `Side ${page} av ${totalPages}`,\n en: `Page ${page} of ${totalPages}`,\n sv: `Sida ${page} av ${totalPages}`,\n };\n },\n});\n","\"use client\";\n\nimport {\n Popover as ChakraPopover,\n Portal,\n usePopoverContext,\n} from \"@chakra-ui/react\";\nimport React, { forwardRef, useEffect } from \"react\";\n\nimport { CloseButton } from \"@/button\";\nimport { useColorMode } from \"@/color-mode\";\n\nexport const Popover = ChakraPopover.Root;\n\nexport const PopoverTrigger = forwardRef<\n HTMLButtonElement,\n ChakraPopover.TriggerProps\n>(({ children, ...props }, ref) => {\n const isStringChild = typeof children === \"string\";\n\n return (\n <ChakraPopover.Trigger {...props} ref={ref} asChild={!isStringChild}>\n {children}\n </ChakraPopover.Trigger>\n );\n});\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\nexport type PopoverProps = ChakraPopover.ContentProps &\n React.RefAttributes<HTMLDivElement> & {\n showCloseButton?: boolean;\n };\n\nexport const PopoverContent = forwardRef<HTMLDivElement, PopoverProps>(\n ({ children, showCloseButton = false, ...props }, ref) => {\n const { colorMode } = useColorMode();\n\n const closeButtonRef = React.useRef<HTMLButtonElement>(null);\n\n const { open } = usePopoverContext();\n\n useEffect(() => {\n if (showCloseButton && open && closeButtonRef.current) {\n closeButtonRef.current.focus();\n }\n }, [showCloseButton, open]);\n\n return (\n <Portal>\n <ChakraPopover.Positioner>\n <ChakraPopover.Content ref={ref} {...props}>\n <ChakraPopover.Arrow />\n {showCloseButton && (\n <div>\n <ChakraPopover.CloseTrigger asChild>\n <CloseButton\n className={colorMode === \"dark\" ? \"light\" : \"dark\"}\n ref={closeButtonRef}\n />\n </ChakraPopover.CloseTrigger>\n </div>\n )}\n <ChakraPopover.Body {...props}>{children}</ChakraPopover.Body>\n </ChakraPopover.Content>\n </ChakraPopover.Positioner>\n </Portal>\n );\n },\n);\nPopoverContent.displayName = \"PopoverContent\";\n","\"use client\";\nimport { BoxProps, RecipeVariantProps, useSlotRecipe } from \"@chakra-ui/react\";\nimport React, { forwardRef, PropsWithChildren } from \"react\";\n\nimport { Box, createTexts, useTranslation } from \"..\";\nimport { progressIndicatorRecipe } from \"../theme/slot-recipes/progress-indicator\";\nimport { ProgressDot } from \"./ProgressDot\";\n\nexport type ProgressIndicatorVariantProps = RecipeVariantProps<\n typeof progressIndicatorRecipe\n>;\n\nexport type ProgressIndicatorProps = BoxProps &\n PropsWithChildren<ProgressIndicatorVariantProps> & {\n children?: React.ReactNode;\n numberOfSteps: number;\n activeStep: number;\n colorPalette?: string;\n };\n\n/**\n * A progress indicator is used to show which step of a process a user is currently in\n * to give them a sense of progress.\n *\n * You specify the active step, which starts at 1 (not 0)\n *\n * ```tsx\n * <ProgressIndicator\n * numberOfSteps={3}\n * activeStep={2}\n * />\n * ```\n */\n\nexport const ProgressIndicator = forwardRef<\n HTMLDivElement,\n ProgressIndicatorProps\n>(({ numberOfSteps, activeStep }, ref) => {\n const { t } = useTranslation();\n const recipe = useSlotRecipe({\n key: \"progressIndicator\",\n });\n\n const styles = recipe({});\n\n return (\n <Box\n css={styles.root}\n role=\"progressbar\"\n aria-valuemin={1}\n aria-valuemax={numberOfSteps}\n aria-valuenow={activeStep}\n aria-valuetext={t(texts.stepsOf(activeStep, numberOfSteps))}\n ref={ref}\n >\n <Box css={styles.container}>\n {Array.from({ length: numberOfSteps }, (_, i) => (\n <ProgressDot\n key={i}\n aria-valuenow={i + 1}\n isActive={activeStep === i + 1}\n />\n ))}\n </Box>\n </Box>\n );\n});\nProgressIndicator.displayName = \"ProgressIndicator\";\n\nconst texts = createTexts({\n stepsOf: (activeStep, numberOfSteps) => ({\n nb: `Steg ${activeStep} av ${numberOfSteps}`,\n nn: `Steg ${activeStep} av ${numberOfSteps}`,\n sv: `Steg ${activeStep} av ${numberOfSteps}`,\n en: `Step ${activeStep} of ${numberOfSteps}`,\n }),\n});\n","\"use client\";\nimport { chakra, useSlotRecipe } from \"@chakra-ui/react\";\nimport { PropsWithChildren } from \"react\";\n\nimport { ProgressIndicatorVariantProps } from \"./ProgressIndicator\";\n\ntype ProgressDot = PropsWithChildren<ProgressIndicatorVariantProps> & {\n isActive: boolean;\n};\n\nexport const ProgressDot = ({ isActive }: ProgressDot) => {\n const recipe = useSlotRecipe({ key: \"progressIndicator\" });\n const style = recipe({});\n return (\n <chakra.svg\n display=\"block\"\n css={style.progressDot}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 100 100\"\n aria-current={isActive ? \"step\" : undefined}\n >\n <chakra.circle as=\"circle\" cx=\"50\" cy=\"50\" r=\"50\" />\n </chakra.svg>\n );\n};\n","\"use client\";\nimport {\n ChakraProvider,\n ChakraProviderProps,\n SystemContext,\n} from \"@chakra-ui/react\";\nimport { Global } from \"@emotion/react\";\n\nimport { Language, LanguageProvider, system } from \"..\";\nimport { ColorModeProvider } from \"../color-mode\";\nimport { fontFaces } from \"../theme/brand\";\nimport { Toaster } from \"../toast/toast\";\n\ntype SporProviderProps = Omit<ChakraProviderProps, \"value\"> & {\n language?: Language;\n theme?: SystemContext;\n};\n\n/**\n * This component is used to provide the specified theme of colors and other\n * design tokens to the remainder of the application, as well as the current language.\n *\n * Please place it as close to the root of your application as possible -\n * at least before rendering any UI.\n *\n * You can pass your own theme to this component. If you don't (and most of the time you won't), the default Spor theme will be used.\n *\n * You should specify the current language of your application. This is specified to provide any built-in microcopy and labels for any Spor components. The default is Norwegian (bokmål).\n *\n * ```tsx\n * * import { SporProvider, Language } from \"@vygruppen/spor-react\";\n * const root = React.createRoot(document.getElementById(\"root\"))\n * root.render(\n * <SporProvider language={Language.English}>\n * <App />\n * </SporProvider>\n * );\n * ```\n *\n * You can pass specific overrides to the theme if you need to. Adding application specific design tokens, for example could be a useful thing to do.\n *\n * ```tsx\n * import { extendTheme, SporProvider } from \"@vygruppen/spor-react\";\nimport { theme } from '../../../../apps/docs/app/features/portable-text/code-block/codeTheme';\n * const theme = extendTheme({\n * colors: { myApp: { primary: \"tomato\" } }\n * });\n * const root = React.createRoot(document.getElementById(\"root\"))\n * root.render(\n * <SporProvider language={Language.Swedish} theme={theme}>\n * <App />\n * </SporProvider>\n * );\n * ```\n */\nexport const SporProvider = ({\n language = Language.NorwegianBokmal,\n theme = system,\n children,\n}: SporProviderProps) => {\n return (\n <LanguageProvider language={language}>\n <ChakraProvider value={theme}>\n <ColorModeProvider>\n <Toaster />\n <Global styles={fontFaces} />\n\n {children}\n </ColorModeProvider>\n </ChakraProvider>\n </LanguageProvider>\n );\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\n/** A string of CSS that should be injected in the global CSS space */\nexport const fontFaces = `\n@font-face {\n font-family: ${tokens.asset.font[\"vy-sans\"][\"light\"].name};\n src: url(\"https://www.vy.no/styles/font/VySans-Light.woff2\") format(\"woff2\"),\n url(\"https://www.vy.no/styles/font/VySans-Light.woff\") format(\"woff\");\n font-style: normal;\n font-weight: 300;\n font-display: swap\n}\n@font-face {\n font-family: ${tokens.asset.font[\"vy-sans\"][\"light-italic\"].name};\n src: url(\"https://www.vy.no/styles/font/VySans-LightItalic.woff2\")\n format(\"woff2\"),\n url(\"https://www.vy.no/styles/font/VySans-LightItalic.woff\") format(\"woff\");\n font-style: italic;\n font-weight: 300;\n font-display: swap\n}\n@font-face {\n font-family: ${tokens.asset.font[\"vy-sans\"][\"medium\"].name};\n src: url(\"https://www.vy.no/styles/font/VySans-Regular.woff2\") format(\"woff2\"),\n url(\"https://www.vy.no/styles/font/VySans-Regular.woff\") format(\"woff\");\n font-style: normal;\n font-weight: 400;\n font-display: swap\n}\n@font-face {\n font-family: ${tokens.asset.font[\"vy-sans\"][\"medium-italic\"].name};\n src: url(\"https://www.vy.no/styles/font/VySans-RegularItalic.woff2\")\n format(\"woff2\"),\n url(\"https://www.vy.no/styles/font/VySans-RegularItalic.woff\")\n format(\"woff\");\n font-style: italic;\n font-weight: 400;\n font-display: swap\n}\n@font-face {\n font-family: ${tokens.asset.font[\"vy-sans\"][\"bold\"].name};\n src: url(\"https://www.vy.no/styles/font/VySans-Bold.woff2\") format(\"woff2\"),\n url(\"https://www.vy.no/styles/font/VySans-Bold.woff\") format(\"woff\");\n font-style: normal;\n font-weight: 700;\n font-display: swap\n}\n@font-face {\n font-family: ${tokens.asset.font[\"vy-sans\"][\"bold-italic\"].name};\n src: url(\"https://www.vy.no/styles/font/VySans-BoldItalic.woff2\")\n format(\"woff2\"),\n url(\"https://www.vy.no/styles/font/VySans-BoldItalic.woff\") format(\"woff\");\n font-style: italic;\n font-weight: 700;\n font-display: swap\n}\n@font-face {\n font-family: ${tokens.asset.font[\"vy-display\"].name};\n src: url(\"https://www.vy.no/styles/font/VyDisplay-Medium.woff2\")\n format(\"woff2\"),\n url(\"https://www.vy.no/styles/font/VyDisplay-Medium.woff\") format(\"woff\");\n font-style: normal;\n font-weight: 400;\n font-display: swap\n}\n body {\n font-family: \"Vy Sans\", sans-serif;\n }\n`;\n","export enum Brand {\n VyDigital = \"VyDigital\",\n VyUtvikling = \"VyUtvikling\",\n CargoNet = \"CargoNet\",\n}\n\nexport { fontFaces } from \"./font-faces\";\n","\"use client\";\n\nimport {\n createToaster,\n Icon,\n Portal,\n Stack,\n Toast,\n Toaster as ChakraToaster,\n} from \"@chakra-ui/react\";\nimport {\n ErrorFill18Icon,\n InformationFill18Icon,\n SuccessFill18Icon,\n} from \"@vygruppen/spor-icon-react\";\n\nimport { createTexts, useTranslation } from \"@/i18n\";\n\nconst toaster = createToaster({\n placement: \"bottom\",\n pauseOnPageIdle: true,\n});\n\ntype Variant = \"info\" | \"success\" | \"error\";\n\ntype ToastProps = {\n duration?: number;\n text: string;\n variant: Variant;\n id?: string;\n};\n\nexport const createToast = ({\n text,\n variant,\n id,\n duration = 6000,\n}: ToastProps) =>\n toaster.create({\n description: text,\n type: variant,\n id: id ?? crypto.randomUUID(),\n duration,\n });\n\nexport const Toaster = () => {\n return (\n <Portal>\n <ChakraToaster toaster={toaster} insetInline={{ mdDown: \"4\" }}>\n {(toast) => (\n <Toast.Root width={{ md: \"sm\" }} role=\"alert\">\n <ToastIcon variant={toast.type as Variant} />\n <Stack gap=\"1\" flex=\"1\" maxWidth=\"100%\">\n <Toast.Description>{toast.description}</Toast.Description>\n </Stack>\n </Toast.Root>\n )}\n </ChakraToaster>\n </Portal>\n );\n};\n\nconst iconComponents = {\n info: InformationFill18Icon,\n success: SuccessFill18Icon,\n error: ErrorFill18Icon,\n} as const;\n\nconst ToastIcon = ({ variant }: { variant: Variant }) => {\n const { t } = useTranslation();\n\n const ariaLabel = t(texts[variant as keyof typeof texts]);\n\n const IconComponent = iconComponents[variant];\n\n if (!IconComponent) return null;\n\n return (\n <Icon aria-label={ariaLabel}>\n <IconComponent />\n </Icon>\n );\n};\n\nconst texts = createTexts({\n info: {\n nb: \"Informasjon\",\n nn: \"Informasjon\",\n sv: \"Information\",\n en: \"Information\",\n },\n success: {\n nb: \"Suksess\",\n nn: \"Suksess\",\n sv: \"Succé\",\n en: \"Success\",\n },\n error: {\n nb: \"Feil\",\n nn: \"Feil\",\n sv: \"Error\",\n en: \"Error\",\n },\n});\n","\"use client\";\nimport { Flex, RecipeVariantProps, useSlotRecipe } from \"@chakra-ui/react\";\nimport { ArrowLeftFill24Icon } from \"@vygruppen/spor-icon-react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { Box, createTexts, IconButton, Text, useTranslation } from \"..\";\nimport { stepperSlotRecipe } from \"../theme/slot-recipes/stepper\";\nimport { StepperStep } from \".\";\nimport { StepperProvider } from \"./StepperContext\";\n\nexport type StepperVariantProps = RecipeVariantProps<typeof stepperSlotRecipe>;\n\ntype StepperProps = PropsWithChildren<StepperVariantProps> & {\n /** Callback for when a step is clicked */\n onClick: (clickedStep: number) => void;\n /** Callback for when the back button is clicked (on smaller screens).\n *\n * If this is not provided, the back button will not be shown on smaller screens on the first step.\n */\n onBackButtonClick?: (stepNumberToGoTo: number) => void;\n /** Heading shown on smaller devices */\n heading?: string;\n /**\n * The heading level rendered for the heading shown on smaller devices.\n *\n * Defaults to h2\n * */\n headingLevel?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\";\n /** The currently active step */\n activeStep: number;\n /** The labels of each step */\n steps: string[];\n /** The variant.\n * \"core\" has a transparent background,\n * while \"accent\" has a slight accent color */\n variant: \"core\" | \"accent\";\n /** Disables all clicks */\n disabled?: boolean;\n};\n/**\n * A stepper is used to show which step of a process a user is currently in.\n *\n * You specify the active step, which starts at 1 (not 0)\n *\n * ```tsx\n * <Stepper\n * title=\"Example\"\n * onClick={handleStepClick}\n * activeStep={2}\n * steps={['Where', 'When', 'How']}\n * />\n * ```\n **/\n\nexport const Stepper = forwardRef<HTMLDivElement, StepperProps>(\n function Stepper(props, ref) {\n const {\n onClick = () => {},\n onBackButtonClick,\n steps,\n activeStep: activeStepAsStringOrNumber,\n heading,\n headingLevel,\n variant,\n disabled,\n } = props;\n const recipe = useSlotRecipe({ key: \"stepper\" });\n const style = recipe({ variant });\n const numberOfSteps = steps.length;\n const activeStep = Number(activeStepAsStringOrNumber);\n const { t } = useTranslation();\n const hideBackButtonOnFirstStep = activeStep === 1 && !onBackButtonClick;\n\n return (\n <Box css={style.root} ref={ref}>\n <StepperProvider\n onClick={onClick}\n activeStep={activeStep}\n variant={variant}\n numberOfSteps={numberOfSteps}\n >\n <Box css={style.container}>\n <Box css={style.innerContainer}>\n <Flex\n justifyContent=\"space-between\"\n alignItems=\"center\"\n gap={2}\n flex={1}\n >\n <IconButton\n aria-label={t(texts.back)}\n icon={<ArrowLeftFill24Icon />}\n variant=\"ghost\"\n size=\"sm\"\n visibility={hideBackButtonOnFirstStep ? \"hidden\" : \"visible\"}\n onClick={() => {\n const stepToGoTo = activeStep - 1;\n if (onBackButtonClick) {\n onBackButtonClick(stepToGoTo);\n }\n onClick(stepToGoTo);\n }}\n />\n {heading && (\n <Text variant=\"sm\" as={headingLevel} css={style.title}>\n {heading}\n </Text>\n )}\n <Box css={style.stepCounter}>\n {t(texts.stepsOf(activeStep, numberOfSteps))}\n </Box>\n </Flex>\n </Box>\n <Flex justifyContent=\"center\" display={[\"none\", null, \"flex\"]}>\n {steps.map((step, index) => (\n <StepperStep\n key={index}\n stepNumber={index + 1}\n variant={variant}\n aria-current={index + 1 === activeStep ? \"step\" : undefined}\n disabled={disabled}\n >\n {step}\n </StepperStep>\n ))}\n </Flex>\n </Box>\n </StepperProvider>\n </Box>\n );\n },\n);\n\nconst texts = createTexts({\n stepsOf: (activeStep, numberOfSteps) => ({\n nb: `Steg ${activeStep}/${numberOfSteps}`,\n nn: `Steg ${activeStep}/${numberOfSteps}`,\n sv: `Steg ${activeStep}/${numberOfSteps}`,\n en: `Step ${activeStep}/${numberOfSteps}`,\n }),\n back: {\n nb: \"Tilbake\",\n nn: \"Tilbake\",\n sv: \"Tillbaka\",\n en: \"Back\",\n },\n});\n","\"use client\";\nimport React from \"react\";\n\ntype StepperContextType = {\n activeStep: number;\n numberOfSteps: number;\n variant: Variant;\n onClick: (clickedIndex: number) => void;\n};\nconst StepperContext = React.createContext<StepperContextType | null>(null);\n\ntype Variant = \"core\" | \"accent\";\n\ntype StepperProviderProps = {\n /** Stepper steps */\n children: React.ReactNode;\n /** Callback whenever a stepper step is clicked */\n onClick: (clickedIndex: number) => void;\n /** The currently active step */\n activeStep: number;\n /** The amount of steps */\n numberOfSteps: number;\n /** The current variant */\n variant: Variant;\n};\n/**\n * Internal provider for sharing logic between stepper and stepper steps.\n */\nexport const StepperProvider = ({\n activeStep,\n children,\n onClick,\n numberOfSteps,\n variant,\n}: StepperProviderProps) => {\n return (\n <StepperContext.Provider\n value={{ activeStep, onClick, numberOfSteps, variant }}\n >\n {children}\n </StepperContext.Provider>\n );\n};\n\n/**\n * Internal hook for sharing stepper state\n */\nexport const useStepper = () => {\n const context = React.useContext(StepperContext);\n if (!context) {\n throw new Error(\n \"useStepper must be used within a StepperProvider. Most likely, you forgot to wrap your StepperStep in a Stepper component\",\n );\n }\n return context;\n};\n","\"use client\";\nimport { useSlotRecipe } from \"@chakra-ui/react\";\nimport { DropdownRightFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React, { PropsWithChildren } from \"react\";\n\nimport { Box, Button, Text } from \"..\";\nimport { StepperVariantProps } from \"./Stepper\";\nimport { useStepper } from \"./StepperContext\";\n\ntype StepperStepProps = PropsWithChildren<StepperVariantProps> & {\n children: React.ReactNode;\n stepNumber: number;\n variant: \"core\" | \"accent\";\n disabled?: boolean;\n};\nexport const StepperStep = ({\n children,\n stepNumber,\n variant,\n disabled: disabledOverride,\n}: StepperStepProps) => {\n const { activeStep, onClick } = useStepper();\n const state = getState(stepNumber, activeStep);\n const recipe = useSlotRecipe({ key: \"stepper\" });\n const style = recipe({ variant });\n const disabledTextColor = \"text.disabled\";\n const iconColor = {\n _light: \"blackAlpha.200\",\n _dark: \"whiteAlpha.200\",\n };\n\n const disabled =\n (state !== \"active\" && disabledOverride) || state === \"disabled\";\n\n return (\n <Box css={style.stepContainer}>\n {stepNumber > 1 && (\n <DropdownRightFill18Icon\n marginX={5}\n display={[\"none\", null, \"block\"]}\n color={iconColor}\n />\n )}\n {disabled ? (\n <Text\n variant=\"xs\"\n fontSize=\"1rem\"\n color={disabledTextColor}\n cursor=\"default\"\n paddingX={2}\n >\n {children}\n </Text>\n ) : (\n <Button\n size=\"xs\"\n variant={state === \"active\" ? \"primary\" : \"ghost\"}\n onClick={\n state === \"completed\" ? () => onClick(stepNumber) : undefined\n }\n pointerEvents={state === \"active\" ? \"none\" : \"auto\"}\n tabIndex={state === \"active\" ? -1 : undefined}\n disabled={disabled}\n aria-current={state === \"active\" ? \"step\" : undefined}\n css={\n state === \"active\"\n ? style.stepButton._currentStep\n : style.stepButton\n }\n fontWeight={state === \"active\" ? \"bold\" : undefined}\n >\n {children}\n </Button>\n )}\n </Box>\n );\n};\n\nconst getState = (stepNumber: number, activeStep: number) => {\n if (stepNumber < activeStep) {\n return \"completed\";\n }\n if (stepNumber === activeStep) {\n return \"active\";\n }\n return \"disabled\";\n};\n","\"use client\";\nimport {\n RecipeVariantProps,\n Tabs as ChakraTabs,\n TabsRootProps as ChakraTabsRootProps,\n} from \"@chakra-ui/react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { tabsSlotRecipe } from \"../theme/slot-recipes/tabs\";\n\ntype TabsVariantProps = RecipeVariantProps<typeof tabsSlotRecipe>;\n\n/**\n * Tabs are used to organize content into different sections.\n * They are used to display different types of content in the same space.\n *\n * @example\n * ```tsx\n * <Tabs defaultValue=\"coming\" fitted>\n * <TabsList>\n * <TabsTrigger value=\"coming\">\n * Kommende\n * </TabsTrigger>\n * <TabsTrigger value=\"completed\">\n * Fullført\n * </TabsTrigger>\n * <TabsTrigger value=\"cancelled\">\n * Avbestilt\n * </TabsTrigger>\n * </TabsList>\n * <TabsContent value=\"coming\">\n * <Heading>Kommende</heading>\n * <Text>Kommende billeter</Text>\n * </TabsContent>\n * <TabsContent value=\"completed\">\n * <Heading>Fullført</heading>\n * <Text>Fullført billeter</Text>\n * </TabsContent>\n * <TabsContent value=\"cancelled\">\n * <Heading>Avbestilt</heading>\n * <Text>Avbestilte billeter</Text>\n * </TabsContent>\n * </Tabs>\n * ```\n */\n\nexport type TabsProps = Exclude<\n ChakraTabsRootProps,\n \"colorPalette\" | \"orientation\"\n> &\n PropsWithChildren<TabsVariantProps> & {\n /** Defaults to `core` */\n variant?: \"core\" | \"accent\";\n /** Defaults to `sm` */\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n /** If Tabs should take up the full width or not. Defaults to `false` */\n fitted?: boolean;\n /** Defaults to `start` */\n justify?: \"start\" | \"center\" | \"end\";\n };\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>((props, ref) => {\n const { variant = \"core\", size = \"sm\" } = props;\n return <ChakraTabs.Root {...props} ref={ref} variant={variant} size={size} />;\n});\nTabs.displayName = \"Tabs\";\n\nexport const TabsList = ChakraTabs.List;\nexport const TabsTrigger = ChakraTabs.Trigger;\nexport const TabsIndicator = ChakraTabs.Indicator;\nexport const TabsContent = ChakraTabs.Content;\n","\"use client\";\nimport {\n RecipeVariantProps,\n Table as ChakraTable,\n TableRootProps as ChakraTableProps,\n useSlotRecipe,\n} from \"@chakra-ui/react\";\nimport { forwardRef, PropsWithChildren } from \"react\";\n\nimport { tableSlotRecipe } from \"../theme/slot-recipes/table\";\n\ntype TableVariantProps = RecipeVariantProps<typeof tableSlotRecipe>;\n\nexport type TableProps = Exclude<ChakraTableProps, \"variant\" | \"colorPalette\"> &\n PropsWithChildren<TableVariantProps> & {\n variant?: \"ghost\" | \"core\";\n colorPalette?: \"grey\" | \"green\" | \"white\";\n };\n/**\n * The `Table` component has support for two different variants - `ghost` and `core`. The `ghost` variant has basic lines between rows, while the `core` variant has borders for each cell.\n *\n * You can also specify a `grey` or `green` `colorPalette` prop. Use `green` if you want to place the table on a light green background.\n *\n * Finally, there are three different `size` props you can specify - `sm`, `md` and `lg`.\n *\n * ```tsx\n * <Table variant=\"core\" size=\"lg\">\n * <Thead>\n * ...\n * </Thead>\n * ...\n * </Table>\n * ```\n */\nexport const Table = forwardRef<HTMLTableElement, TableProps>((props, ref) => {\n const { variant = \"ghost\", size, colorPalette = \"green\", children } = props;\n\n const recipe = useSlotRecipe({ recipe: tableSlotRecipe });\n const styles = recipe({ variant, size });\n return (\n <ChakraTable.Root\n variant={variant}\n size={size}\n colorPalette={colorPalette}\n css={styles}\n ref={ref}\n {...props}\n >\n {children}\n </ChakraTable.Root>\n );\n});\nTable.displayName = \"Table\";\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { tableAnatomy } from \"./anatomy\";\n\nconst numericStyles = {\n \"&[data-is-numeric=true]\": {\n textAlign: \"right\",\n },\n};\n\nexport const tableSlotRecipe = defineSlotRecipe({\n className: \"spor-table\",\n slots: tableAnatomy.keys(),\n base: {\n root: {\n tableLayout: \"fixed\",\n borderCollapse: \"collapse\",\n width: \"100%\",\n minWidth: \"36rem\",\n overflowX: \"auto\",\n },\n columnHeader: {\n fontWeight: \"bold\",\n textAlign: \"start\",\n\n ...numericStyles,\n paddingX: 1.5,\n paddingY: 1,\n },\n row: {\n ...numericStyles,\n },\n cell: {\n ...numericStyles,\n paddingX: 1.5,\n paddingY: 1,\n width: \"100%\",\n },\n footer: {\n fontWeight: \"medium\",\n },\n },\n\n variants: {\n colorPalette: {\n green: {\n root: {\n backgroundColor: \"bg\",\n },\n header: {\n backgroundColor: \"bg.tertiary\",\n },\n columnHeader: {\n color: \"text.secondary\",\n },\n },\n grey: {\n root: {\n backgroundColor: \"bg\",\n },\n columnHeader: {\n color: \"brand.text.inverted\",\n backgroundColor: \"surface.disabled\",\n _hover: {\n backgroundColor: \"surface.disabled\",\n },\n },\n },\n white: {\n root: {\n backgroundColor: \"bg\",\n },\n columnHeader: {\n color: \"text\",\n backgroundColor: \"bg\",\n },\n },\n },\n variant: {\n ghost: {\n header: {\n backgroundColor: \"none\",\n },\n columnHeader: {\n borderBottom: \"sm\",\n borderColor: \"outline.disabled\",\n backgroundColor: \"none\",\n color: \"text\",\n },\n\n cell: {\n ...numericStyles,\n },\n row: {\n borderBottom: \"sm\",\n borderColor: \"outline.disabled\",\n ...numericStyles,\n },\n },\n\n core: {\n root: {\n boxShadow: \"0 0 0 1px var(--shadow-color)\",\n shadowColor: \"outline.disabled\",\n borderRadius: \"sm\",\n },\n\n table: {\n overflow: \"hidden\",\n },\n cell: {\n ...numericStyles,\n\n borderRight: \"sm\",\n borderColor: \"outline.disabled\",\n\n _last: {\n borderRight: \"none\",\n },\n },\n\n columnHeader: {\n ...numericStyles,\n\n borderRight: \"sm\",\n borderColor: \"outline.disabled\",\n\n _first: {\n borderTopLeftRadius: \"sm\",\n },\n _last: {\n borderTopRightRadius: \"sm\",\n borderRight: \"none\",\n },\n },\n header: {\n borderBottom: \"sm\",\n borderColor: \"outline.disabled\",\n },\n row: {\n ...numericStyles,\n borderBottom: \"sm\",\n borderColor: \"outline.disabled\",\n\n _last: {\n borderBottom: \"none\",\n },\n },\n },\n },\n\n size: {\n sm: {\n table: {\n fontSize: \"mobile.sm\",\n },\n cell: {\n paddingX: 1,\n paddingY: 0.5,\n fontSize: \"mobile.sm\",\n },\n columnHeader: {\n paddingX: 1,\n paddingY: 0.5,\n },\n caption: {\n paddingX: 1,\n paddingY: 0.5,\n },\n },\n md: {\n table: {\n fontSize: \"mobile.md\",\n },\n cell: {\n paddingX: 1.5,\n paddingY: 1,\n fontSize: \"mobile.md\",\n },\n\n columnHeader: {\n paddingX: 1.5,\n paddingY: 1,\n fontSize: \"mobile.md\",\n },\n caption: {\n paddingX: 1.5,\n paddingY: 1,\n fontSize: \"mobile.md\",\n },\n },\n lg: {\n table: {\n fontSize: \"mobile.md\",\n },\n cell: {\n paddingX: 3,\n paddingY: 3,\n fontSize: \"mobile.md\",\n },\n columnHeader: {\n paddingX: 3,\n paddingY: 2,\n fontSize: \"mobile.md\",\n },\n caption: {\n paddingX: 3,\n paddingY: 2,\n },\n },\n },\n },\n});\n","export * from \"./Table\";\nexport type {\n TableBodyProps,\n TableCaptionProps,\n TableCellProps,\n TableColumnHeaderProps,\n TableColumnProps,\n TableFooterProps,\n TableHeaderProps,\n TableRootProps,\n TableRowProps,\n} from \"@chakra-ui/react\";\nexport {\n TableBody,\n TableCaption,\n TableCell,\n TableColumn,\n TableColumnGroup,\n TableColumnHeader,\n TableFooter,\n TableHeader,\n TableRoot,\n TableRow,\n} from \"@chakra-ui/react\";\n","import {\n createSystem,\n defaultBaseConfig,\n defineConfig,\n} from \"@chakra-ui/react\";\n\nimport { Brand } from \"./brand\";\nimport { recipes } from \"./recipes\";\nimport { semanticTokens } from \"./semantic-tokens\";\nimport { slotRecipes } from \"./slot-recipes\";\nimport { tokens } from \"./tokens\";\nimport { animationStyles } from \"./tokens/animation-styles\";\nimport { breakpoints } from \"./tokens/breakpoints\";\nimport { config } from \"./tokens/config\";\nimport { globalCss } from \"./tokens/global-css\";\nimport { keyframes } from \"./tokens/keyframes\";\nimport { textStyles } from \"./tokens/text-styles\";\n\nexport { createSystem, defineConfig } from \"@chakra-ui/react\";\n\nconst generateTheme = (brand: Brand) => {\n return defineConfig({\n ...config,\n globalCss,\n theme: {\n breakpoints,\n keyframes,\n tokens,\n semanticTokens: semanticTokens[brand],\n recipes,\n slotRecipes,\n textStyles,\n animationStyles,\n },\n });\n};\n\nexport const themes = {\n [Brand.VyDigital]: createSystem(\n defaultBaseConfig,\n generateTheme(Brand.VyDigital),\n ),\n [Brand.CargoNet]: createSystem(\n defaultBaseConfig,\n generateTheme(Brand.CargoNet),\n ),\n [Brand.VyUtvikling]: createSystem(\n defaultBaseConfig,\n generateTheme(Brand.VyUtvikling),\n ),\n};\n\nexport const system = themes[Brand.VyDigital];\n","import { defineRecipe } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const buttonRecipe = defineRecipe({\n className: \"spor-button\",\n base: {\n border: 0,\n borderRadius: \"xl\",\n display: \"flex\",\n gap: \"1\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n cursor: \"pointer\",\n textWrap: \"wrap\",\n width: \"fit-content\",\n paddingX: 3,\n paddingY: 1,\n _disabled: {\n cursor: \"not-allowed\",\n pointerEvents: \"none\",\n boxShadow: \"none\",\n color: \"text.disabled\",\n background: \"surface.disabled\",\n },\n _focus: {\n outlineOffset: tokens.size.stroke.md,\n },\n },\n variants: {\n variant: {\n primary: {\n background: \"brand.surface\",\n color: \"brand.text\",\n _hover: {\n background: \"brand.surface.hover\",\n _active: {\n background: \"brand.surface.active\",\n },\n },\n },\n secondary: {\n background: \"accent.surface\",\n color: \"accent.text\",\n _hover: {\n background: \"accent.surface.hover\",\n _active: {\n background: \"accent.surface.active\",\n },\n },\n },\n tertiary: {\n color: \"core.text\",\n outline: \"solid\",\n outlineWidth: tokens.size.stroke.sm,\n outlineColor: \"core.outline\",\n _hover: {\n outlineWidth: tokens.size.stroke.md,\n outlineColor: \"core.outline.hover\",\n _active: {\n background: \"core.surface.active\",\n outlineWidth: tokens.size.stroke.sm,\n outlineColor: \"core.outline\",\n },\n },\n _focus: {\n outlineWidth: tokens.size.stroke.sm,\n },\n },\n ghost: {\n color: \"ghost.text\",\n _hover: {\n background: \"ghost.surface.hover\",\n _active: {\n background: \"ghost.surface.active\",\n },\n },\n },\n floating: {\n color: \"floating.text\",\n border: \"sm\",\n borderColor: \"floating.outline\",\n boxShadow:\n \"0px 1px 3px 0px var(--spor-colors-surface-disabled, rgba(0, 0, 0, 0.10))\",\n _hover: {\n borderColor: \"floating.outline.hover\",\n\n _active: {\n background: \"core.surface.active\",\n boxShadow: \"none\",\n borderColor: \"floating.outline\",\n },\n },\n },\n },\n size: {\n xs: {\n minHeight: 5,\n minWidth: 5,\n paddingY: 0.5,\n fontSize: \"xs\",\n fontWeight: \"normal\",\n },\n sm: {\n minHeight: 6,\n minWidth: 6,\n fontSize: \"xs\",\n fontWeight: \"normal\",\n },\n md: {\n minHeight: 7,\n minWidth: 7,\n fontSize: \"sm\",\n fontWeight: \"bold\",\n },\n lg: {\n minHeight: 8,\n minWidth: 8,\n fontSize: \"sm\",\n fontWeight: \"bold\",\n },\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n },\n});\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const closeButtonRecipe = defineRecipe({\n base: {\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n borderRadius: \"md\",\n backgroundColor: \"transparent\",\n color: \"darkGrey\",\n fontWeight: \"normal\",\n _hover: {\n background: \"ghost.surface.hover\",\n _disabled: {\n color: \"dimGrey\",\n },\n _active: {\n background: \"ghost.surface.active\",\n },\n },\n },\n variants: {\n size: {\n lg: {\n width: \"40px\",\n height: \"40px\",\n fontSize: \"xs\",\n },\n md: {\n width: \"32px\",\n height: \"32px\",\n fontSize: \"0.75rem\",\n },\n sm: {\n width: \"24px\",\n height: \"24px\",\n fontSize: \"0.625rem\",\n },\n },\n },\n});\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nexport const linkRecipe = defineRecipe({\n base: {\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n transitionTimingFunction: \"ease-out\",\n cursor: \"pointer\",\n backgroundImage: \"linear-gradient(currentColor, currentColor)\",\n backgroundSize: \"100% 1px\",\n backgroundPosition: \"0 100%\",\n backgroundRepeat: \"no-repeat\",\n borderRadius: \"none\",\n paddingX: \"2px\",\n paddingY: \"0\",\n color: \"inherit\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"0\",\n position: \"relative\",\n boxDecorationBreak: \"clone\",\n textUnderlineOffset: \"0\",\n\n \"&:focus, &:focus-visible, &:active, &:hover\": {\n backgroundImage: \"none\",\n backgroundSize: \"100%\",\n outline: \"none\",\n borderRadius: \"xs\",\n },\n\n \"& svg\": {\n display: \"inline-block\",\n width: \"1.125em\",\n height: \"1.125em\",\n position: \"relative\",\n bottom: \"1px\",\n scale: \"0.8\",\n marginRight: \"-2px\",\n },\n },\n variants: {\n variant: {\n primary: {\n color: \"core.text\",\n _hover: {\n color: \"text.default\",\n _active: {\n color: \"text.disabled\",\n },\n },\n },\n secondary: {\n color: \"text.hightlight\",\n padding: \"2px\",\n _hover: {\n color: \"text.hightlight\",\n _active: {\n color: \"text.disabled\",\n },\n },\n },\n },\n size: {\n xs: {\n fontSize: { base: \"mobile.xs\", sm: \"desktop.xs\" },\n },\n sm: {\n fontSize: { base: \"mobile.sm\", sm: \"desktop.sm\" },\n },\n md: {\n fontSize: { base: \"mobile.md\", sm: \"desktop.md\" },\n },\n lg: {\n fontSize: { base: \"mobile.lg\", sm: \"desktop.lg\" },\n },\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"sm\",\n },\n});\n","import { defineRecipe } from \"@chakra-ui/react\";\n\nimport { inputRecipe } from \"./input\";\n\nexport const textareaRecipe = defineRecipe({\n className: \"spor-textarea\",\n base: {\n ...inputRecipe.base,\n paddingTop: 0,\n minHeight: \"calc(var(--label-height) + 4rem)\",\n verticalAlign: \"top\",\n appearance: \"none\",\n borderTop: \"0.8rem solid transparent\",\n \"&:focus-visible, &:not(:placeholder-shown)\": {\n borderTop: \"var(--label-height) solid transparent\",\n },\n },\n variants: {\n variant: {\n core: {\n ...inputRecipe.variants?.variant.core,\n },\n floating: {\n ...inputRecipe.variants?.variant.floating,\n },\n },\n },\n});\n","import { attachedInputsRecipe } from \"./attached-inputs\";\nimport { badgeRecipie } from \"./badge\";\nimport { buttonRecipe } from \"./button\";\nimport { closeButtonRecipe } from \"./close-button\";\nimport { codeRecipie } from \"./code\";\nimport { inputRecipe } from \"./input\";\nimport { linkRecipe } from \"./link\";\nimport { pressableCardRecipe } from \"./pressable-card\";\nimport { progressLoaderRecipe } from \"./progress-loader\";\nimport { separatorRecipe } from \"./separator\";\nimport { skeletonRecipe } from \"./skeleton\";\nimport { staticCardRecipe } from \"./static-card\";\nimport { textareaRecipe } from \"./textarea\";\n\nexport const recipes = {\n attachedInputs: attachedInputsRecipe,\n badge: badgeRecipie,\n button: buttonRecipe,\n closeButton: closeButtonRecipe,\n code: codeRecipie,\n input: inputRecipe,\n link: linkRecipe,\n pressableCard: pressableCardRecipe,\n progressLoader: progressLoaderRecipe,\n seperator: separatorRecipe,\n skeleton: skeletonRecipe,\n staticCard: staticCardRecipe,\n textarea: textareaRecipe,\n};\n","import { defineSemanticTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens/raw-tokens\";\n\nexport enum Brand {\n VyDigital = \"VyDigital\",\n VyUtvikling = \"VyUtvikling\",\n CargoNet = \"CargoNet\",\n}\n\nexport const vyDigitalColors = defineSemanticTokens.colors({\n ...tokens.color[\"vy-digital\"].color.vyDigital,\n});\n\nexport const vyUtviklingColors = defineSemanticTokens.colors({\n ...tokens.color[\"vy-utvikling\"].color.vyUtvikling,\n});\n\nexport const cargonetColors = defineSemanticTokens.colors({\n ...tokens.color.cargonet.color.cargonet,\n});\n","import { defineSemanticTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const radii = defineSemanticTokens.radii({\n none: { value: tokens.size[\"border-radius\"].none },\n xxs: { value: tokens.size[\"border-radius\"].xxs },\n xs: { value: tokens.size[\"border-radius\"].xs },\n sm: { value: tokens.size[\"border-radius\"].sm },\n md: { value: tokens.size[\"border-radius\"].md },\n lg: { value: tokens.size[\"border-radius\"].lg },\n xl: { value: tokens.size[\"border-radius\"].xl },\n \"2xl\": { value: tokens.size[\"border-radius\"][\"2xl\"] },\n round: { value: \"50%\" },\n});\n","import { defineSemanticTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const shadows = defineSemanticTokens.shadows({\n none: {\n value: \"none\",\n },\n sm: {\n value: tokens.depth.shadow.sm.value,\n },\n md: {\n value: tokens.depth.shadow.md.value,\n },\n lg: {\n value: tokens.depth.shadow.lg.value,\n },\n});\n","import { Brand } from \"../brand\";\nimport { cargonetColors, vyDigitalColors, vyUtviklingColors } from \"./colors\";\nimport { radii } from \"./radii\";\nimport { shadows } from \"./shadows\";\n\nconst baseSemanticTokens = {\n shadows,\n radii,\n};\n\nexport const semanticTokens = {\n [Brand.VyUtvikling]: {\n ...baseSemanticTokens,\n colors: vyUtviklingColors,\n },\n [Brand.CargoNet]: {\n ...baseSemanticTokens,\n colors: cargonetColors,\n },\n [Brand.VyDigital]: {\n ...baseSemanticTokens,\n colors: vyDigitalColors,\n },\n};\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { accordionAnatomy } from \"./anatomy\";\n\nexport const accordionSlotRecipe = defineSlotRecipe({\n className: \"spor-accordion\",\n slots: accordionAnatomy.keys(),\n base: {\n root: {\n borderRadius: \"sm\",\n },\n item: {\n borderRadius: \"sm\",\n overflowAnchor: \"none\",\n },\n itemTrigger: {\n borderRadius: \"sm\",\n display: \"flex\",\n justifyContent: \"space-between\",\n color: \"core.text\",\n textAlign: \"left\",\n width: \"full\",\n alignItems: \"center\",\n fontSize: [\"mobile.sm\", null, \"desktop.sm\"],\n fontFamily: \"body\",\n fontWeight: \"bold\",\n outlineOffset: \"-2px\",\n paddingX: [2, null, 3],\n paddingY: [1, null, 1.5],\n minHeight: [6, null, 7],\n cursor: \"pointer\",\n _disabled: {\n pointerEvents: \"none\",\n opacity: 0.4,\n },\n },\n itemContent: {\n borderBottomRadius: \"sm\",\n fontSize: [\"mobile.sm\", null, \"desktop.sm\"],\n color: \"text\",\n height: \"auto\",\n overflow: \"hidden\",\n _open: {\n animationName: \"expand-height, fade-in\",\n animationDuration: \"moderate\",\n },\n _closed: {\n animationName: \"collapse-height, fade-out\",\n animationDuration: \"moderate\",\n },\n },\n itemBody: {\n paddingY: 2,\n paddingX: [2, null, 3],\n },\n itemIndicator: {\n transition: \"rotate 0.2s\",\n transformOrigin: \"center\",\n\n _open: {\n rotate: \"180deg\",\n },\n _icon: {\n width: \"1.2em\",\n height: \"1.2em\",\n },\n },\n },\n variants: {\n variant: {\n ghost: {\n item: {\n outline: \"none\",\n },\n itemTrigger: {\n \"&:hover\": {\n background: \"ghost.surface.hover\",\n },\n \"&:active\": {\n backgroundColor: \"ghost.surface.active\",\n },\n },\n },\n core: {\n item: {\n outline: \"solid\",\n outlineWidth: tokens.size.stroke.sm,\n outlineColor: \"core.outline\",\n },\n itemTrigger: {\n _expanded: {\n borderBottomRadius: \"none\",\n },\n \"&:hover\": {\n outlineWidth: tokens.size.stroke.md,\n outlineColor: \"core.outline\",\n outline: \"2px solid\",\n\n outlineOffset: 0,\n },\n \"&:active\": {\n backgroundColor: \"core.surface.active\",\n outlineWidth: tokens.size.stroke.sm,\n outline: \"none\",\n },\n },\n },\n floating: {\n item: {\n outline: \"1px solid\",\n outlineWidth: tokens.size.stroke.sm,\n boxShadow: \"sm\",\n outlineColor: \"floating.outline\",\n },\n itemTrigger: {\n _expanded: {\n borderBottomRadius: \"none\",\n },\n \"&:hover\": {\n outlineWidth: tokens.size.stroke.md,\n outline: \"1px solid\",\n outlineColor: \"floating.outline.hover\",\n\n outlineOffset: 1,\n },\n \"&:active\": {\n backgroundColor: \"floating.surface.active\",\n outlineWidth: tokens.size.stroke.sm,\n outline: \"none\",\n },\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { alertAnatomy } from \"./anatomy\";\n\nconst createVariant = (variant: string) => ({\n root: {\n borderColor: `alert.${variant}.outline`,\n background: `alert.${variant}.surface`,\n },\n description: {\n color: `alert.${variant}.text.secondary`,\n },\n title: {\n color: `alert.${variant}.text`,\n },\n closeButton: {\n color: `alert.${variant}.text`,\n _hover: {\n bg: `alert.${variant}.surface.hover`,\n _active: {\n bg: `alert.${variant}.surface.active`,\n },\n },\n },\n});\n\nexport const alertSlotRecipe = defineSlotRecipe({\n className: \"spor-alert\",\n slots: alertAnatomy.keys(),\n base: {\n root: {\n borderRadius: \"sm\",\n padding: 2,\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n position: \"relative\",\n textStyle: \"sm\",\n border: \"sm\",\n },\n description: {\n color: \"text\",\n },\n content: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"2\",\n alignItems: \"flex-start\",\n },\n title: {\n fontWeight: \"bold\",\n },\n closeButton: {},\n },\n variants: {\n variant: {\n important: createVariant(\"important\"),\n alt: createVariant(\"alt\"),\n error: createVariant(\"error\"),\n success: createVariant(\"success\"),\n info: createVariant(\"info\"),\n neutral: createVariant(\"neutral\"),\n \"error-secondary\": createVariant(\"error-secondary\"),\n service: createVariant(\"service\"),\n },\n },\n defaultVariants: {\n variant: \"info\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { alertExpandableAnatomy } from \"./anatomy\";\n\nexport const alertExpandableSlotRecipe = defineSlotRecipe({\n className: \"spor-alert-expandable\",\n slots: alertExpandableAnatomy.keys(),\n base: {\n itemTrigger: {\n paddingX: \"2 !important\",\n _expanded: {\n borderBottomRadius: \"none\",\n },\n },\n itemContent: {\n fontSize: \"xs !important\",\n paddingTop: \"1 !important\",\n },\n root: {\n border: \"sm\",\n },\n },\n variants: {\n variant: {\n important: {\n itemContent: {\n color: \"alert.important.text.secondary\",\n },\n itemTrigger: {\n \"&:hover\": {\n bg: \"alert.important.surface.hover\",\n outline: \"1px solid\",\n outlineColor: \"alert.important.outline.hover\",\n outlineOffset: \"0px\",\n },\n \"&:active\": {\n bg: \"alert.important.surface.active\",\n },\n },\n root: {\n borderColor: \"alert.important.outline\",\n bg: \"alert.important.surface\",\n },\n title: {\n color: \"alert.important.text\",\n },\n },\n success: {\n itemContent: {\n color: \"alert.success.text.secondary\",\n },\n itemTrigger: {\n \"&:hover\": {\n bg: \"alert.success.surface.hover\",\n outline: \"1px solid\",\n outlineOffset: \"0px\",\n outlineColor: \"alert.success.outline.hover\",\n \"&:active\": {\n bg: \"alert.success.surface.active\",\n },\n },\n },\n root: {\n borderColor: \"alert.success.outline\",\n bg: \"alert.success.surface\",\n },\n title: {\n color: \"alert.success.text\",\n },\n },\n alt: {\n itemContent: {\n color: \"alert.alt.text.secondary\",\n },\n itemTrigger: {\n \"&:hover\": {\n bg: \"alert.alt.surface.hover\",\n outlineOffset: \"0px\",\n outline: \"1px solid\",\n outlineColor: \"alert.alt.outline.hover\",\n \"&:active\": {\n bg: \"alert.alt.surface.active\",\n },\n },\n },\n root: {\n borderColor: \"alert.alt.outline\",\n bg: \"alert.alt.surface\",\n },\n title: {\n color: \"alert.alt.text\",\n },\n },\n info: {\n itemContent: {\n color: \"alert.info.text.secondary\",\n },\n itemTrigger: {\n \"&:hover\": {\n bg: \"alert.info.surface.hover\",\n outlineOffset: \"0px\",\n outline: \"1px solid\",\n outlineColor: \"alert.info.outline.hover\",\n \"&:active\": {\n bg: \"alert.info.surface.active\",\n },\n },\n },\n root: {\n borderColor: \"alert.info.outline\",\n bg: \"alert.info.surface\",\n },\n title: {\n color: \"alert.info.text\",\n },\n },\n error: {\n itemContent: {\n color: \"alert.error.text.secondary\",\n },\n itemTrigger: {\n \"&:hover\": {\n bg: \"alert.error.surface.hover\",\n outlineOffset: \"0px\",\n outline: \"1px solid\",\n outlineColor: \"alert.error.outline.hover\",\n \"&:active\": {\n bg: \"alert.error.surface.active\",\n },\n },\n },\n root: {\n borderColor: \"alert.error.outline\",\n bg: \"alert.error.surface\",\n },\n title: {\n color: \"alert.error.text\",\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { alertServiceAnatomy } from \"./anatomy\";\n\nexport const alertServiceSlotRecipe = defineSlotRecipe({\n className: \"spor-service-alert\",\n slots: alertServiceAnatomy.keys(),\n base: {\n root: {\n fontSize: \"inherit\",\n transitionProperty: \"outline, border-radius\",\n transitionDuration: \"fast\",\n borderTopRadius: \"none\",\n borderBottomRadius: \"md\",\n backgroundColor: \"alert.service.surface\",\n outline: \"1px solid\",\n outlineColor: \"alert.service.outline\",\n color: \"text.inverted\",\n boxShadow: \"sm\",\n },\n itemTrigger: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n padding: [2, null, null, 2],\n borderBottomRadius: \"md\",\n borderTopRadius: \"none\",\n width: \"full\",\n color: \"text.inverted\",\n \"&:hover\": {\n backgroundColor: \"alert.service.surface.hover\",\n },\n \"&:active\": {\n backgroundColor: \"alert.service.surface.active\",\n },\n\n _icon: {\n color: \"darkGrey\",\n },\n },\n itemTriggerTitle: {\n fontSize: [\"xs\", null, null, \"sm\"],\n },\n notificationText: {\n fontWeight: \"400\",\n fontSize: [\"2xs\", null, null, \"xs\"],\n textWrap: \"nowrap\",\n },\n itemBody: {\n paddingInline: 2,\n paddingBottom: [\"0.5\", null, null, \"1\"],\n color: \"text.inverted\",\n \"& > p\": {\n gap: 2,\n width: \"full\",\n justifyContent: \"center\",\n borderBottom: \"1px dashed\",\n borderColor: \"outline.inverted\",\n paddingBottom: \"3\",\n paddingTop: \"2\",\n _last: {\n borderBottom: \"none\",\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { breadcrumbAnatomy } from \"./anatomy\";\n\nexport const breadcrumbSlotRecipe = defineSlotRecipe({\n slots: breadcrumbAnatomy.keys(),\n base: {\n list: {\n display: \"inline-flex\",\n flexWrap: \"wrap\",\n gap: 1,\n alignItems: \"center\",\n },\n link: {\n cursor: \"pointer\",\n padding: 0.5,\n borderRadius: \"xs\",\n },\n currentLink: {\n borderRadius: \"xs\",\n cursor: \"default\",\n },\n separator: {\n \"& svg\": {\n color: \"icon.disabled\",\n },\n },\n },\n\n variants: {\n variant: {\n core: {\n link: {\n _hover: {\n outlineColor: \"core.outline.hover\",\n outlineWidth: tokens.size.stroke.md,\n outlineStyle: \"solid\",\n _active: {\n backgroundColor: \"core.surface.active\",\n outline: \"none\",\n },\n },\n },\n },\n ghost: {\n link: {\n _hover: {\n backgroundColor: \"ghost.surface.hover\",\n _active: {\n backgroundColor: \"ghost.surface.active\",\n },\n },\n },\n },\n },\n },\n\n defaultVariants: {\n variant: \"core\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { checkboxAnatomy } from \"./anatomy\";\n\nexport const checkboxSlotRecipe = defineSlotRecipe({\n className: \"spor-checkbox\",\n slots: checkboxAnatomy.keys(),\n base: {\n root: {\n display: \"flex\",\n gap: 1.5,\n _hover: {\n \"& > input:enabled:not([aria-invalid]) + .spor-checkbox__control\": {\n borderColor: \"core.outline.hover\",\n },\n \"& > input:enabled:checked:not([aria-invalid]) + .spor-checkbox__control\":\n {\n background: \"brand.surface.hover\",\n },\n },\n },\n indicator: {\n width: \"100%\",\n height: \"100%\",\n borderColor: \"white\",\n marginTop: -1,\n transform: \"scale(1)\",\n opacity: 0,\n _checked: {\n opacity: 1,\n transition: \"opacity 300ms cubic-bezier(0.65, 0.25, 0.56, 0.96)\",\n },\n },\n control: {\n width: 4,\n height: 4,\n transitionProperty: \"background, border-color\",\n transitionDuration: \"moderate\",\n border: \"2px solid\",\n borderColor: \"core.outline\",\n borderRadius: \"xs\",\n\n _checked: {\n color: \"brand.icon\",\n borderColor: \"brand.surface\",\n background: \"brand.surface\",\n _focus: {\n borderColor: \"brand.surface.active\",\n },\n\n _disabled: {\n background: \"surface.disabled\",\n color: \"text.disabled\",\n borderColor: \"currentColor\",\n },\n\n _invalid: {\n backgroundColor: \"brightRed\",\n borderColor: \"brightRed\",\n },\n },\n _disabled: {\n // borderColor: coreText(\"disabled\").color,\n borderColor: \"text.disabled\",\n },\n _invalid: {\n borderColor: \"outline.error\",\n },\n _focus: {\n outlineStyle: \"solid\",\n outlineColor: \"outline.focus\",\n outlineOffset: tokens.size.stroke.md,\n outlineWidth: tokens.size.stroke.md,\n borderColor: \"core.outline\",\n borderWidth: tokens.size.stroke.md,\n },\n },\n label: {\n userSelect: \"none\",\n _disabled: { opacity: 0.4 },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { checkboxCardAnatomy } from \"./anatomy\";\n\nexport const choiceChipSlotRecipe = defineSlotRecipe({\n slots: checkboxCardAnatomy.keys(),\n className: \"chakra-checkbox-card\",\n base: {\n root: {\n display: \"inline-flex\",\n alignItems: \"center\",\n boxAlign: \"center\",\n fontSize: \"xs\",\n cursor: \"pointer\",\n transitionProperty: \"all\",\n borderRadius: \"xl\",\n transitionDuration: \"fast\",\n paddingInlineStart: \"2\",\n paddingInlineEnd: \"2\",\n\n outline: \"1px solid\",\n outlineColor: \"base.outline\",\n _checked: {\n backgroundColor: \"brand.surface\",\n borderRadius: \"sm\",\n outline: \"none\",\n color: \"brand.text\",\n _hover: {\n backgroundColor: \"brand.surface.hover\",\n _active: {\n backgroundColor: \"brand.surface.active\",\n },\n },\n },\n\n _focusVisible: {\n outline: \"2px solid\",\n outlineColor: \"outline.focus\",\n outlineOffset: \"1px\",\n },\n\n _disabled: {\n pointerEvents: \"none\",\n boxShadow: \"none\",\n backgroundColor: \"surface.disabled\",\n color: \"text.disabled\",\n outline: \"none\",\n\n _hover: {\n backgroundColor: \"core.surface.disabled\",\n boxShadow: \"none\",\n color: \"core.text.disabled\",\n },\n _checked: {\n cursor: \"not-allowed\",\n boxShadow: \"none\",\n color: \"core.text.disabled\",\n backgroundColor: \"core.surface.disabled\",\n _hover: {\n backgroundColor: \"core.surface.disabled\",\n boxShadow: \"none\",\n color: \"core.text.disabled\",\n },\n },\n },\n },\n\n label: {\n display: \"flex\",\n alignItems: \"center\",\n\n fontSize: \"xs\",\n },\n },\n\n variants: {\n size: {\n xs: {\n root: {\n _checked: {\n borderRadius: \"0.563rem\",\n },\n height: 5,\n paddingX: 1.5,\n },\n },\n sm: {\n root: {\n _checked: {\n borderRadius: \"sm\",\n },\n height: 6,\n paddingX: 2,\n },\n },\n md: {\n root: {\n _checked: {\n borderRadius: \"sm\",\n },\n height: 7,\n paddingX: 2,\n },\n },\n lg: {\n root: {\n _checked: {\n borderRadius: \"md\",\n },\n height: 8,\n paddingX: 3,\n },\n },\n },\n\n variant: {\n core: {\n root: {\n color: \"core.text\",\n outlineColor: \"core.outline\",\n\n _hover: {\n outline: \"2px solid\",\n outlineColor: \"core.outline.hover\",\n\n _active: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n backgroundColor: \"core.surface.active\",\n },\n },\n },\n },\n accent: {\n root: {\n backgroundColor: \"accent.surface\",\n color: \"accent.text\",\n outline: \"none\",\n\n _hover: {\n backgroundColor: \"accent.surface.hover\",\n\n _active: {\n backgroundColor: \"accent.surface.active\",\n },\n },\n },\n },\n floating: {\n root: {\n backgroundColor: \"floating.surface\",\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n color: \"floating.text\",\n\n boxShadow: \"sm\",\n _hover: {\n backgroundColor: \"floating.surface.hover\",\n outline: \"1px solid\",\n outlineColor: \"floating.outline.hover\",\n\n _active: {\n backgroundColor: \"floating.surface.active\",\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n },\n },\n },\n },\n },\n chipType: {\n icon: {},\n choice: {},\n filter: {},\n },\n },\n\n defaultVariants: {\n size: \"md\",\n variant: \"core\",\n chipType: \"choice\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { dialogAnatomy } from \"./anatomy\";\n\nexport const dialogSlotRecipe = defineSlotRecipe({\n slots: dialogAnatomy.keys(),\n className: \"spor-dialog\",\n base: {\n backdrop: {\n background: \"blackAlpha.500\",\n position: \"fixed\",\n left: 0,\n top: 0,\n width: \"100vw\",\n height: \"100dvh\",\n zIndex: \"modal\",\n _open: {\n animationName: \"fade-in\",\n animationDuration: \"slow\",\n },\n _closed: {\n animationName: \"fade-out\",\n animationDuration: \"moderate\",\n },\n },\n positioner: {\n display: \"flex\",\n width: \"100vw\",\n height: \"100dvh\",\n position: \"fixed\",\n left: 0,\n top: 0,\n \"--dialog-z-index\": \"zIndex.modal\",\n zIndex: \"modal\",\n justifyContent: \"center\",\n overscrollBehaviorY: \"none\",\n },\n content: {\n display: \"flex\",\n backgroundColor: \"bg\",\n flexDirection: \"column\",\n position: \"relative\",\n width: \"full\",\n outline: 0,\n borderRadius: \"lg\",\n marginY: \"3.75rem\",\n textStyle: \"sm\",\n boxShadow: \"lg\",\n _open: {\n animationDuration: \"moderate\",\n },\n _closed: {\n animationDuration: \"faster\",\n },\n },\n header: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n flex: 0,\n paddingX: \"6\",\n paddingTop: \"6\",\n paddingBottom: \"2\",\n },\n body: {\n flex: \"1\",\n paddingX: \"6\",\n paddingTop: \"2\",\n paddingBottom: \"4\",\n fontSize: [\"xs\", null, null, \"sm\"],\n },\n footer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n gap: \"3\",\n paddingX: \"6\",\n paddingTop: \"2\",\n paddingBottom: \"4\",\n },\n title: {\n fontSize: [\"md\", null, null, \"lg\"],\n fontFamily: \"heading\",\n fontWeight: \"medium\",\n },\n closeTrigger: {\n position: \"absolute\",\n top: \"2\",\n insetEnd: \"2\",\n \"& svg\": {\n color: \"icon\",\n },\n },\n },\n\n variants: {\n placement: {\n center: {\n positioner: {\n alignItems: \"center\",\n },\n content: {\n marginX: \"auto\",\n },\n },\n top: {\n positioner: {\n alignItems: \"flex-start\",\n },\n content: {\n marginX: \"auto\",\n },\n },\n bottom: {\n positioner: {\n alignItems: \"flex-end\",\n },\n content: {\n marginX: \"auto\",\n },\n },\n },\n\n scrollBehavior: {\n inside: {\n positioner: {\n overflow: \"hidden\",\n },\n content: {\n maxHeight: \"calc(100% - 7.5rem)\",\n },\n body: {\n overflow: \"auto\",\n },\n },\n outside: {\n positioner: {\n overflow: \"auto\",\n pointerEvents: \"auto\",\n },\n },\n },\n\n size: {\n xs: {\n content: {\n maxWidth: \"sm\",\n },\n },\n sm: {\n content: {\n maxWidth: \"md\",\n },\n },\n md: {\n content: {\n maxWidth: \"lg\",\n },\n },\n lg: {\n content: {\n maxWidth: \"2xl\",\n },\n },\n xl: {\n content: {\n maxWidth: \"4xl\",\n },\n },\n cover: {\n positioner: {\n padding: \"10\",\n },\n content: {\n width: \"100%\",\n height: \"100%\",\n \"--dialog-margin\": \"0\",\n },\n },\n },\n\n motionPreset: {\n scale: {\n content: {\n _open: { animationName: \"scale-in, fade-in\" },\n _closed: { animationName: \"scale-out, fade-out\" },\n },\n },\n \"slide-in-bottom\": {\n content: {\n _open: { animationName: \"slide-from-bottom, fade-in\" },\n _closed: { animationName: \"slide-to-bottom, fade-out\" },\n },\n },\n \"slide-in-top\": {\n content: {\n _open: { animationName: \"slide-from-top, fade-in\" },\n _closed: { animationName: \"slide-to-top, fade-out\" },\n },\n },\n \"slide-in-left\": {\n content: {\n _open: { animationName: \"slide-from-left, fade-in\" },\n _closed: { animationName: \"slide-to-left, fade-out\" },\n },\n },\n \"slide-in-right\": {\n content: {\n _open: { animationName: \"slide-from-right, fade-in\" },\n _closed: { animationName: \"slide-to-right, fade-out\" },\n },\n },\n none: {},\n },\n },\n defaultVariants: {\n size: \"md\",\n scrollBehavior: \"outside\",\n placement: \"top\",\n motionPreset: \"scale\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { drawerAnatomy } from \"./anatomy\";\n\nexport const drawerSlotRecipe = defineSlotRecipe({\n slots: drawerAnatomy.keys(),\n className: \"spor-drawer\",\n base: {\n backdrop: {\n bg: \"blackAlpha.500\",\n position: \"fixed\",\n insetInlineStart: 0,\n top: 0,\n width: \"100vw\",\n height: \"100dvh\",\n zIndex: \"modal\",\n _open: {\n animationName: \"fade-in\",\n animationDuration: \"slow\",\n },\n _closed: {\n animationName: \"fade-out\",\n animationDuration: \"slow\",\n },\n },\n positioner: {\n display: \"flex\",\n width: \"100vw\",\n height: \"100dvh\",\n position: \"fixed\",\n insetInlineStart: 0,\n top: 0,\n zIndex: \"modal\",\n overscrollBehaviorY: \"none\",\n },\n content: {\n display: \"flex\",\n flexDirection: \"column\",\n background: \"bg\",\n position: \"relative\",\n width: \"100%\",\n outline: 0,\n zIndex: \"modal\",\n maxHeight: \"100dvh\",\n color: \"inherit\",\n boxShadow: \"lg\",\n minHeight: [\"50vh\", null, null, \"auto\"],\n _open: {\n animationDuration: \"slowest\",\n animationTimingFunction: \"ease-in-smooth\",\n },\n _closed: {\n animationDuration: \"slower\",\n animationTimingFunction: \"ease-in-smooth\",\n },\n },\n header: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingX: \"5\",\n paddingBottom: \"1\",\n },\n body: {\n paddingX: \"5\",\n paddingY: [\"1\", null, null, \"2\"],\n flex: \"1\",\n overflow: \"auto\",\n fontSize: [\"xs\", null, null, \"sm\"],\n minHeight: [\"12\", null, null, \"auto\"],\n },\n footer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n gap: \"3\",\n paddingX: \"5\",\n paddingTop: \"2\",\n },\n title: {\n fontSize: [\"sm\", null, null, \"md\"],\n fontWeight: \"semibold\",\n textAlign: \"left\",\n },\n closeTrigger: {\n position: \"absolute\",\n top: \"2\",\n insetEnd: \"2\",\n },\n },\n variants: {\n size: {\n xs: {\n content: {\n width: \"15rem\",\n },\n },\n sm: {\n content: {\n width: \"25rem\",\n },\n },\n md: {\n content: {\n width: \"40rem\",\n },\n },\n lg: {\n content: {\n width: \"56rem\",\n },\n },\n xl: {\n content: {\n width: \"68rem\",\n },\n },\n full: {\n content: {\n width: \"100vw\",\n height: \"100vh\",\n borderRadius: \"0 !important\",\n paddingBottom: \"4\",\n },\n closeTrigger: {\n position: \"relative\",\n },\n title: {\n textAlign: \"center\",\n },\n },\n },\n\n placement: {\n start: {\n positioner: {\n justifyContent: \"flex-start\",\n },\n content: {\n paddingTop: \"4\",\n _open: {\n animationName: {\n base: \"slide-from-left-full, fade-in\",\n _rtl: \"slide-from-right-full, fade-in\",\n },\n },\n _closed: {\n animationName: {\n base: \"slide-to-left-full, fade-out\",\n _rtl: \"slide-to-right-full, fade-out\",\n },\n },\n },\n },\n\n end: {\n positioner: {\n justifyContent: \"flex-end\",\n },\n content: {\n paddingTop: \"4\",\n _open: {\n animationName: {\n base: \"slide-from-right-full, fade-in\",\n _rtl: \"slide-from-left-full, fade-in\",\n },\n },\n _closed: {\n animationName: {\n base: \"slide-to-right-full, fade-out\",\n _rtl: \"slide-to-right-full, fade-out\",\n },\n },\n },\n },\n\n top: {\n positioner: {\n alignItems: \"flex-start\",\n },\n content: {\n maxW: \"100%\",\n marginX: \"auto\",\n paddingTop: \"4\",\n borderBottomRadius: \"lg\",\n _open: { animationName: \"slide-from-top-full, fade-in\" },\n _closed: { animationName: \"slide-to-top-full, fade-out\" },\n },\n },\n\n bottom: {\n positioner: {\n alignItems: \"flex-end\",\n },\n content: {\n maxW: \"100%\",\n marginX: \"auto\",\n paddingBottom: \"4\",\n borderTopRadius: \"lg\",\n _open: { animationName: \"slide-from-bottom-full, fade-in\" },\n _closed: { animationName: \"slide-to-bottom-full, fade-out\" },\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { fieldAnatomy } from \"./anatomy\";\n\nexport const fieldSlotRecipe = defineSlotRecipe({\n className: \"spor-field\",\n slots: fieldAnatomy.keys(),\n base: {\n root: {\n display: \"flex\",\n width: \"100%\",\n position: \"relative\",\n flexDirection: \"column\",\n },\n requiredIndicator: {\n marginStart: 1,\n color: \"brightRed\",\n },\n helperText: {\n marginTop: 2,\n color: \"text.tertiary\",\n lineHeight: \"normal\",\n fontSize: \"sm\",\n },\n errorText: {\n borderRadius: \"xs\",\n backgroundColor: \"lightRed\",\n color: \"darkGrey\",\n paddingX: 1.5,\n paddingY: 1,\n textStyle: \"xs\",\n width: \"fit-content\",\n position: \"absolute\",\n bottom: -5,\n left: 3,\n zIndex: \"dropdown\",\n maxWidth: \"50ch\",\n _after: {\n content: \"''\",\n position: \"absolute\",\n marginTop: \"-0.45em\",\n left: \"1em\",\n width: 0,\n height: 0,\n transform: \"rotate(45deg)\",\n borderLeft: \"0.5em solid transparent\",\n borderRight: \"0.5em solid transparent\",\n borderBottom: \"0.5em solid\",\n borderColor: \"lightRed\",\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { floatingActionButtonAnatomy } from \"./anatomy\";\n\nexport const floatingActionButtonSlotRecipe = defineSlotRecipe({\n slots: floatingActionButtonAnatomy.keys(),\n className: \"spor-floating-action-button\",\n base: {\n root: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n paddingY: 2,\n paddingX: 2,\n cursor: \"pointer\",\n overflowX: \"hidden\",\n whiteSpace: \"nowrap\",\n borderRadius: \"xl\",\n boxShadow: \"md\",\n transitionDuration: \"fast\",\n transitionProperty: \"common\",\n position: \"fixed\",\n zIndex: \"dropdown\",\n _focus: {\n outlineOffset: tokens.size.stroke.lg,\n outlineColor: \"outline.focus\",\n },\n _disabled: {\n backgroundColor: \"surface.disabled\",\n color: \"text.disabled\",\n pointerEvents: \"none\",\n },\n _open: {\n animation: \"expand-width 300ms ease-out\",\n },\n _closed: {\n animation: \"collapse-width 300ms ease-out\",\n },\n },\n text: {\n display: \"flex\",\n flex: \"none\",\n alignItems: \"center\",\n fontWeight: \"bold\",\n textStyle: \"sm\",\n marginRight: 1,\n _open: {\n animation: \"fade-in 250ms ease-out\",\n },\n _closed: {\n animation: \"fade-out 250ms ease-out\",\n },\n },\n },\n variants: {\n variant: {\n brand: {\n root: {\n backgroundColor: \"brand.surface\",\n color: \"brand.text\",\n _hover: {\n backgroundColor: \"brand.surface.hover\",\n _active: {\n backgroundColor: \"brand.surface.active\",\n },\n },\n },\n },\n core: {\n root: {\n backgroundColor: \"transparent\",\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n color: \"core.text\",\n _hover: {\n backgroundColor: \"transparent\",\n outline: \"2px solid\",\n outlineColor: \"core.outline.light\",\n _active: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n backgroundColor: \"core.surface.active\",\n },\n },\n },\n },\n accent: {\n root: {\n backgroundColor: \"accent.surface\",\n color: \"accent.text\",\n _hover: {\n backgroundColor: \"accent.surface.hover\",\n color: \"accent.text\",\n _active: {\n backgroundColor: \"accent.surface.active\",\n },\n },\n },\n },\n },\n placement: {\n \"top left\": {\n root: {\n top: \"1rem\",\n left: \"1rem\",\n },\n },\n \"top right\": {\n root: {\n top: \"1rem\",\n right: \"1rem\",\n },\n },\n \"bottom left\": {\n root: {\n bottom: \"1rem\",\n left: \"1rem\",\n },\n },\n \"bottom right\": {\n root: {\n bottom: \"1rem\",\n right: \"1rem\",\n },\n },\n },\n },\n defaultVariants: {\n variant: \"brand\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { infoTagAnatomy } from \"./anatomy\";\nimport { travelTagSlotRecipe } from \"./travel-tag\";\n\nexport const infoTagSlotRecipe = defineSlotRecipe({\n slots: infoTagAnatomy.keys(),\n className: \"spor-info-tag\",\n base: {\n ...travelTagSlotRecipe.base,\n iconContainer: {},\n textContainer: {\n color: \"text\",\n },\n container: {\n display: \"flex\",\n position: \"relative\",\n alignItems: \"center\",\n },\n title: {\n fontWeight: \"bold\",\n },\n description: {\n fontWeight: \"normal\",\n },\n },\n variants: {\n variant: {\n walk: {},\n ferry: {},\n subway: {},\n tram: {},\n \"local-train\": {},\n \"region-train\": {},\n \"region-express-train\": {},\n \"long-distance-train\": {},\n \"airport-express-train\": {},\n \"vy-bus\": {},\n \"local-bus\": {},\n },\n size: {\n ...travelTagSlotRecipe.variants?.size,\n sm: {\n ...travelTagSlotRecipe.variants?.size!.sm,\n iconContainer: {\n borderRadius: \"0.375rem\",\n },\n },\n md: {\n ...travelTagSlotRecipe.variants?.size!.md,\n iconContainer: {\n borderRadius: \"0.375rem\",\n },\n },\n lg: {\n ...travelTagSlotRecipe.variants?.size!.lg,\n iconContainer: {\n borderRadius: \"sm\",\n },\n },\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { travelTagAnatomy } from \"./anatomy\";\n\nexport const travelTagSlotRecipe = defineSlotRecipe({\n slots: travelTagAnatomy.keys(),\n className: \"spor-travel-tag\",\n base: {\n container: {\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n padding: 0.5,\n width: \"fit-content\",\n transitionDuration: \"fast\",\n transitionProperty: \"common\",\n \"button&, a&\": {\n boxShadow: \"sm\",\n _hover: {\n boxShadow: \"md\",\n },\n _active: {\n opacity: 0.5,\n boxShadow: \"none\",\n },\n },\n },\n textContainer: {\n color: \"darkGrey\",\n paddingRight: 0.5,\n whiteSpace: \"nowrap\",\n },\n title: {\n fontWeight: \"bold\",\n color: \"brand.text.inverted\",\n \"[aria-disabled=true] &\": {\n color: \"text.disabled\",\n },\n },\n description: {\n fontWeight: \"normal\",\n \"[aria-disabled=true] &\": {\n color: \"text.disabled\",\n },\n },\n deviationIcon: {\n position: \"absolute\",\n top: \"0\",\n right: \"0\",\n transform: \"translate(50%, -50%)\",\n zIndex: \"docked\",\n },\n },\n variants: {\n deviationLevel: {\n critical: {\n container: {\n border: \"1px solid\",\n borderColor: \"error.text\",\n },\n deviationIcon: {\n color: \"brightRed\",\n },\n },\n major: {\n container: {\n border: \"1px solid\",\n borderColor: \"golden\",\n },\n },\n minor: {},\n info: {\n deviationIcon: {\n color: \"ocean\",\n },\n },\n none: {},\n },\n variant: {\n \"local-train\": {\n container: {\n backgroundColor: \"linjetag.lokaltogLight\",\n },\n },\n \"region-train\": {\n container: {\n backgroundColor: \"linjetag.regiontogLight\",\n },\n },\n \"region-express-train\": {\n container: {\n backgroundColor: \"linjetag.regionEkspressLight\",\n },\n },\n \"long-distance-train\": {\n container: {\n backgroundColor: \"linjetag.fjerntogLight\",\n },\n },\n \"airport-express-train\": {\n container: {\n backgroundColor: \"linjetag.flytogLight\",\n },\n },\n \"vy-bus\": {\n container: {\n backgroundColor: \"linjetag.vyBussLight\",\n },\n },\n \"local-bus\": {\n container: {\n backgroundColor: \"linjetag.lokalbussLight\",\n },\n },\n ferry: {\n container: {\n backgroundColor: \"linjetag.fergeLight\",\n },\n },\n subway: {\n container: {\n backgroundColor: \"linjetag.tbaneLight\",\n },\n },\n tram: {\n container: {\n backgroundColor: \"linjetag.trikkLight\",\n },\n },\n \"alt-transport\": {\n container: {\n backgroundColor: \"linjetag.altTransportLight\",\n },\n },\n walk: {\n textContainer: {\n position: \"absolute\",\n left: \"1.3rem\",\n bottom: 0,\n },\n title: {\n fontSize: \"mobile.xs\",\n fontWeight: \"normal\",\n color: \"text\",\n },\n description: {\n display: \"none\",\n },\n },\n },\n size: {\n sm: {\n container: {\n borderRadius: \"sm\",\n },\n iconContainer: {\n borderRadius: \"xs\",\n },\n textContainer: {\n marginLeft: 1,\n fontSize: \"mobile.sm\",\n },\n },\n md: {\n container: {\n borderRadius: \"sm\",\n },\n iconContainer: {\n borderRadius: \"0.5625rem\", // 9px\n },\n textContainer: {\n marginLeft: 1.5,\n fontSize: \"mobile.sm\",\n },\n },\n lg: {\n container: {\n borderRadius: \"sm\",\n },\n iconContainer: {\n borderRadius: \"0.5625rem\", // 9px\n },\n textContainer: {\n marginLeft: 2,\n fontSize: \"mobile.md\",\n },\n },\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { linjetagAnatomy } from \"./anatomy\";\n\nexport const lineIconSlotRecipe = defineSlotRecipe({\n slots: linjetagAnatomy.keys(),\n className: \"spor-line-icon\",\n base: {\n iconContainer: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n \"[aria-disabled=true] &\": {\n backgroundColor: \"surface.disabled\",\n },\n },\n icon: {\n color: \"white\",\n \"[aria-disabled=true] &\": {\n color: \"icon.disabled\",\n },\n },\n title: {\n color: \"darkGrey\",\n \"[aria-disabled=true] &\": {\n color: \"text.disabled\",\n },\n },\n },\n variants: {\n variant: {\n \"local-train\": {\n iconContainer: {\n backgroundColor: \"linjetag.lokaltog\",\n },\n },\n \"region-train\": {\n iconContainer: {\n backgroundColor: \"linjetag.regiontog\",\n },\n },\n \"region-express-train\": {\n iconContainer: {\n backgroundColor: \"linjetag.regionEkspress\",\n },\n },\n \"long-distance-train\": {\n iconContainer: {\n backgroundColor: \"linjetag.fjerntog\",\n },\n },\n \"airport-express-train\": {\n iconContainer: {\n backgroundColor: \"linjetag.flytog\",\n },\n },\n \"vy-bus\": {\n iconContainer: {\n backgroundColor: \"linjetag.vyBuss\",\n },\n },\n \"local-bus\": {\n iconContainer: {\n backgroundColor: \"linjetag.lokalbuss\",\n },\n },\n ferry: {\n iconContainer: {\n backgroundColor: \"linjetag.ferge\",\n },\n },\n subway: {\n iconContainer: {\n backgroundColor: \"linjetag.tbane\",\n },\n },\n tram: {\n iconContainer: {\n backgroundColor: \"linjetag.trikk\",\n },\n },\n \"alt-transport\": {\n iconContainer: {\n backgroundColor: \"linjetag.altTransport\",\n },\n icon: {\n color: \"darkGrey\",\n \"[aria-disabled=true] &\": {\n color: \"white\",\n },\n },\n },\n walk: {\n title: {\n color: \"text\",\n },\n icon: {\n color: \"linjetag.walkLight\",\n \"[aria-disabled=true] &\": {\n color: \"icon.disabled\",\n },\n },\n _disabled: {\n icon: {\n color: \"text.disabled\",\n },\n title: {\n color: \"text.disabled\",\n },\n },\n },\n custom: {\n iconContainer: {\n _disabled: {\n backgroundColor: \"surface.disabled\",\n },\n },\n },\n },\n size: {\n sm: {\n iconContainer: {\n borderRadius: \"0.5625rem\",\n },\n },\n md: {\n iconContainer: {\n borderRadius: \"0.5625rem\",\n },\n },\n lg: {\n iconContainer: {\n borderRadius: \"sm\",\n },\n },\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { listAnatomy } from \"./anatomy\";\n\nexport const listSlotRecipe = defineSlotRecipe({\n slots: listAnatomy.keys(),\n className: \"spor-list\",\n base: {\n item: {\n fontFamily: \"body\",\n whiteSpace: \"normal\",\n fontSize: \"inherit\",\n marginLeft: \"2\",\n _marker: {\n display: \"inline-block\",\n },\n },\n icon: {\n display: \"inline-block\",\n },\n },\n variants: {\n variant: {\n marker: {\n root: {\n listStyle: \"revert\",\n },\n item: {\n _marker: {\n color: \"inherit\",\n },\n },\n },\n\n plain: {\n item: {\n display: \"block\",\n },\n },\n },\n },\n\n defaultVariants: {\n variant: \"marker\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { listBoxAnatomy } from \"./anatomy\";\n\nexport const listBoxSlotRecipe = defineSlotRecipe({\n slots: listBoxAnatomy.keys(),\n className: \"spor-listbox\",\n base: {\n root: {\n backgroundColor: \"surface\",\n boxShadow: \"sm\",\n overflowY: \"auto\",\n maxHeight: \"50vh\",\n width: \"100%\",\n listStyle: \"none\",\n paddingTop: 2,\n borderBottomRadius: \"md\",\n borderWidth: 1,\n zIndex: \"dropdown\",\n },\n item: {\n paddingX: 2,\n paddingY: 1,\n marginY: 1,\n marginX: 1,\n borderRadius: \"sm\",\n color: \"ghost.text\",\n cursor: \"pointer\",\n listStyle: \"none\",\n _active: {\n backgroundColor: \"ghost.surface.active\",\n },\n\n _hover: {\n backgroundColor: \"accent.surface\",\n color: \"accent.text\",\n },\n _selected: {\n backgroundColor: \"ghost.surface.active\",\n },\n _focus: {\n outline: \"2px solid\",\n outlineColor: \"outline.focus\",\n },\n },\n label: {},\n description: {\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n color: \"ghost.text\",\n \"[aria-selected='true'] &\": {\n color: \"ghost.text\",\n },\n },\n },\n variants: {\n variant: {\n core: {\n root: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n },\n floating: {\n root: {\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n },\n },\n },\n },\n defaultVariants: {\n variant: \"core\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { mediaControllerAnatomy } from \"./anatomy\";\n\nexport const mediaControllerSlotRecipe = defineSlotRecipe({\n slots: mediaControllerAnatomy.keys(),\n className: \"spor-media-controller-button\",\n base: {\n root: {\n fontSize: 30,\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n borderRadius: \"50%\",\n appearance: \"none\",\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n display: \"flex\",\n padding: 1,\n alignSelf: \"center\",\n color: \"brand.surface\",\n outlineOffset: \"2px\",\n },\n icon: {\n flex: \"0 0 auto\",\n display: \"block\",\n },\n },\n variants: {\n variant: {\n play: {\n root: {\n padding: 0,\n color: \"brand.text\",\n backgroundColor: \"brand.surface\",\n _hover: {\n color: \"brand.text\",\n backgroundColor: \"brand.surface.hover\",\n _active: {\n color: \"brand.text\",\n backgroundColor: \"brand.surface.active\",\n },\n },\n _disabled: {\n pointerEvents: \"none\",\n color: \"icon.disabled\",\n backgroundColor: \"surface.disabled\",\n },\n },\n },\n jumpSkip: {\n root: {\n _hover: {\n backgroundColor: \"ghost.surface.hover\",\n _active: {\n backgroundColor: \"ghost.surface.active\",\n },\n },\n _disabled: {\n pointerEvents: \"none\",\n backgroundColor: \"surface.disabled\",\n color: \"text.disabled\",\n },\n },\n },\n },\n size: {\n sm: {\n root: {\n fontSize: 42,\n },\n },\n lg: {\n root: {\n fontSize: 60,\n },\n icon: {\n transform: \"scale(1.55)\",\n },\n },\n },\n },\n compoundVariants: [\n {\n variant: \"play\",\n size: \"sm\",\n css: {\n root: {\n fontSize: 24,\n width: \"2.625rem\",\n height: \"2.625rem\",\n },\n },\n },\n {\n variant: \"play\",\n size: \"lg\",\n css: {\n root: {\n fontSize: 38,\n width: \"3.75rem\",\n height: \"3.75rem\",\n },\n icon: {\n transform: \"scale(1.55)\",\n },\n },\n },\n {\n variant: \"jumpSkip\",\n size: \"sm\",\n css: {\n root: {\n fontSize: 24,\n },\n },\n },\n {\n variant: \"jumpSkip\",\n size: \"lg\",\n css: {\n root: {\n fontSize: 38,\n },\n icon: {\n margin: 1,\n transform: \"scale(1.4)\",\n },\n },\n },\n ],\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { paginationAnatomy } from \"./anatomy\";\n\nexport const paginationSlotRecipe = defineSlotRecipe({\n slots: paginationAnatomy.keys(),\n className: \"spor-pagination\",\n base: {\n item: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"5\",\n width: \"5\",\n fontSize: \"xs\",\n borderRadius: \"xl\",\n color: \"core.text\",\n cursor: \"pointer\",\n _hover: {\n background: \"ghost.surface.hover\",\n _active: {\n background: \"ghost.surface.active\",\n },\n },\n _selected: {\n cursor: \"default\",\n fontWeight: \"bold\",\n backgroundColor: \"core.surface.active\",\n },\n },\n list: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: [\"0.5\", null, null, \"1\"],\n listStyle: \"none\",\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { popoverAnatomy } from \"./anatomy\";\n\nexport const popoverSlotRecipe = defineSlotRecipe({\n className: \"spor-popover\",\n slots: popoverAnatomy.keys(),\n base: {\n content: {\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"row-reverse\",\n gap: \"0.625rem\",\n padding: \"0.563rem 0.75rem\",\n\n textStyle: \"sm\",\n bg: \"surface.tertiary\",\n boxShadow: \"lg\",\n borderRadius: \"sm\",\n zIndex: \"popover\",\n outline: \"0\",\n\n transformOrigin: \"var(--transform-origin)\",\n maxHeight: \"var(--available-height)\",\n _open: {\n animationStyle: \"scale-fade-in\",\n animationDuration: \"fast\",\n },\n _closed: {\n animationStyle: \"scale-fade-out\",\n animationDuration: \"faster\",\n },\n },\n body: {\n color: \"text.inverted\",\n\n alignItems: \"center\",\n borderRadius: \"sm\",\n zIndex: \"inherit\",\n maxWidth: \"20em\",\n },\n arrow: {\n \"--arrow-background\": \"colors.surface.tertiary\",\n \"--arrow-size\": \"6px\",\n },\n },\n variants: {\n size: {\n sm: {\n body: {\n maxWidth: \"8rem\",\n minWidth: \"8rem\",\n },\n },\n md: {\n body: {\n maxWidth: \"13rem\",\n minWidth: \"13rem\",\n },\n content: {\n padding: \"0.875rem 0.75rem 1.125rem 1.125rem\",\n },\n },\n lg: {\n body: {\n maxWidth: \"26rem\",\n minWidth: \"26rem\",\n },\n content: {\n padding: \"0.875rem 0.75rem 1.125rem 1.125rem\",\n },\n },\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { progressBarAnotomy } from \"./anatomy\";\n\nexport const progressBarRecipe = defineSlotRecipe({\n slots: progressBarAnotomy.keys(),\n base: {\n container: {\n minWidth: \"100px\",\n },\n background: {\n display: \"flex\",\n backgroundColor: \"accent.surface.hover\",\n borderRadius: \"sm\",\n boxPack: \"start\",\n justifyContent: \"flex-start\",\n marginX: \"auto\",\n },\n\n disabledBackground: {\n backgroundColor: \"icon.disabled\",\n borderRadius: \"sm\",\n },\n progress: {\n backgroundColor: \"brand.surface.active\",\n borderRadius: \"sm\",\n maxWidth: \"100%\",\n transition: \"width .2s ease-out\",\n },\n\n description: {\n display: \"flex\",\n justifyContent: \"center\",\n textAlign: \"center\",\n marginTop: 2,\n marginInline: \"auto\",\n fontWeight: \"bold\",\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nexport const progressIndicatorRecipe = defineSlotRecipe({\n slots: [\"root\", \"container\", \"progressDot\", \"circle\"],\n base: {\n root: {},\n container: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n justifyContent: [\"space-between\", \"center\"],\n },\n progressDot: {\n height: 1,\n width: 1,\n fill: \"icon.disabled\",\n \"&[aria-current='step']\": {\n fill: \"brand.surface\",\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { radioAnatomy } from \"./anatomy\";\n\nexport const radioGroupSlotRecipe = defineSlotRecipe({\n className: \"spor-radio\",\n slots: radioAnatomy.keys(),\n base: {\n root: {\n display: \"flex\",\n gap: 2,\n },\n item: {\n display: \"flex\",\n alignItems: \"center\",\n position: \"relative\",\n gap: \"1.5\",\n cursor: \"pointer\",\n _disabled: {\n cursor: \"disabled\",\n },\n },\n label: {\n userSelect: \"none\",\n _disabled: {\n color: \"text.disabled\",\n },\n },\n itemText: {\n _disabled: {\n color: \"text.disabled\",\n },\n },\n itemControl: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n verticalAlign: \"top\",\n borderWidth: \"2px\",\n borderColor: \"core.outline\",\n borderRadius: \"xl\",\n width: 4,\n height: 4,\n\n _checked: {\n borderColor: \"brand.surface\",\n },\n _hover: {\n borderColor: \"brand.surface.hover\",\n \"& .dot\": {\n backgroundColor: \"brand.surface.hover\",\n },\n },\n\n _disabled: {\n pointerEvents: \"none\",\n backgroundColor: \"surface.disabled\",\n borderColor: \"outline.disabled\",\n \"& .dot\": {\n backgroundColor: \"outline.disabled\",\n },\n },\n \"& .dot\": {\n height: \"full\",\n width: \"full\",\n borderRadius: \"xl\",\n backgroundColor: \"brand.surface\",\n scale: \"0.5\",\n },\n },\n },\n variants: {\n orientation: {\n vertical: {\n root: {\n flexDirection: \"column\",\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { radioCardAnatomy } from \"./anatomy\";\n\nexport const radioCardSlotRecipe = defineSlotRecipe({\n className: \"spor-radio-card\",\n slots: radioCardAnatomy.keys(),\n base: {\n item: {\n flex: 1,\n overflow: \"hidden\",\n fontSize: \"inherit\",\n display: \"block\",\n cursor: \"pointer\",\n borderRadius: \"sm\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n\n _focusVisible: {\n outlineWidth: \"2px\",\n outlineColor: \"outline.focus\",\n outlineStyle: \"solid\",\n outlineOffset: \"1px\",\n },\n\n _disabled: {\n outline: \"none\",\n pointerEvents: \"none\",\n background: \"surface.disabled\",\n color: \"text.disabled\",\n },\n },\n label: {\n userSelect: \"none\",\n _disabled: { opacity: 0.4 },\n fontWeight: \"bold\",\n fontSize: \"inherit\",\n },\n },\n variants: {\n variant: {\n core: {\n item: {\n outlineColor: \"core.outline\",\n outlineWidth: tokens.size.stroke.sm,\n outlineStyle: \"solid\",\n backgroundColor: \"core.surface\",\n\n _hover: {\n outlineColor: \"core.outline.hover\",\n outlineWidth: tokens.size.stroke.md,\n outlineStyle: \"solid\",\n _active: {\n backgroundColor: \"core.surface.active\",\n outlineWidth: tokens.size.stroke.sm,\n },\n },\n _checked: {\n outlineColor: \"outline.focus\",\n outlineWidth: tokens.size.stroke.md,\n outlineStyle: \"solid\",\n backgroundColor: \"core.surface.active\",\n _focusVisible: {\n outlineStyle: \"double\",\n outlineWidth: `calc(3 * ${tokens.size.stroke.md})`, // space for double outline\n },\n },\n },\n },\n floating: {\n item: {\n boxShadow: \"0px 1px 3px 0px var(--shadow-color)\",\n shadowColor: \"surface.disabled\",\n\n border: \"sm\",\n borderColor: \"floating.outline\",\n\n background: \"floating.surface\",\n _hover: {\n background: \"floating.surface.hover\",\n\n borderColor: \"floating.outline.hover\",\n\n boxShadow: \"0px 2px 6px 0px var(--shadow-color)\",\n _active: {\n background: \"floating.surface.active\",\n borderColor: \"floating.outline.active\",\n boxShadow: \"none\",\n },\n },\n _checked: {\n outlineColor: \"outline.focus\",\n outlineWidth: tokens.size.stroke.md,\n outlineStyle: \"solid\",\n backgroundColor: \"core.surface.active\",\n\n _focusVisible: {\n outlineStyle: \"double\",\n outlineWidth: `calc(3 * ${tokens.size.stroke.md})`, // space for double outline\n },\n },\n },\n },\n },\n },\n defaultVariants: {\n variant: \"core\",\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { selectAnatomy } from \"./anatomy\";\n\nexport const selectSlotRecipe = defineSlotRecipe({\n slots: selectAnatomy.keys(),\n className: \"spor-select\",\n base: {\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n position: \"relative\",\n cursor: \"pointer\",\n zIndex: \"dropdown\",\n },\n label: {\n fontSize: [\"mobile.sm\", \"desktop.sm\"],\n top: 0,\n left: 3,\n zIndex: 0,\n position: \"absolute\",\n color: \"text\",\n marginY: 2,\n\n _selected: {\n transform: [\"scale(0.825) translateY(-10px)\"],\n },\n\n transitionProperty: \"transform\",\n transitionDuration: \"fast\",\n transformOrigin: \"top left\",\n transitionDelay: \"3ms\",\n pointerEvents: \"none\",\n },\n trigger: {\n display: \"flex\",\n appearance: \"none\",\n width: \"100%\",\n height: 8,\n color: \"text\",\n paddingY: 1.5,\n paddingX: 3,\n\n justifyContent: \"space-between\",\n alignItems: \"center\",\n fontSize: \"mobile.md\",\n borderRadius: \"sm\",\n cursor: \"pointer\",\n\n _open: {\n \"& + div\": {\n transform: \"rotate(180deg)\",\n },\n },\n },\n indicatorGroup: {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"1\",\n position: \"absolute\",\n right: \"0\",\n top: \"0\",\n bottom: \"0\",\n paddingX: 2,\n\n pointerEvents: \"none\",\n },\n indicator: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: {\n base: \"text\",\n _disabled: \"text.disabled\",\n _invalid: \"text.secondary\",\n },\n _icon: {\n width: 3,\n height: 3,\n },\n },\n selectContent: {\n backgroundColor: \"surface\",\n boxShadow: \"sm\",\n overflowY: \"auto\",\n maxHeight: \"50vh\",\n width: \"100%\",\n listStyle: \"none\",\n borderBottomRadius: \"sm\",\n marginTop: -1,\n\n _open: {\n animationStyle: \"slide-fade-in\",\n animationDuration: \"fast\",\n zIndex: \"popover\",\n outline: \"none\",\n },\n _closed: {\n animationStyle: \"slide-fade-out\",\n animationDuration: \"fastest\",\n },\n },\n item: {\n paddingX: 2,\n paddingY: 2,\n marginY: 1,\n marginX: 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 1,\n borderRadius: \"sm\",\n color: \"ghost.text\",\n cursor: \"pointer\",\n outline: \"none\",\n \"&[data-highlighted]:hover\": {\n outlineOffset: \"2px\",\n outline: \"2px solid\",\n outlineColor: \"outline.focus\",\n backgroundColor: \"ghost.surface.hover\",\n },\n \"&[data-highlighted]\": {\n outlineOffset: \"2px\",\n outline: \"2px solid\",\n outlineColor: \"outline.focus\",\n },\n _active: {\n backgroundColor: \"ghost.surface.active\",\n color: \"green\",\n },\n _highlighted: {\n _active: {\n color: \"text\",\n },\n },\n _hover: {\n backgroundColor: \"ghost.surface.hover\",\n outline: \"2px solid core.outline\",\n outlineOffset: \"2px\",\n },\n _selected: {\n backgroundColor: \"ghost.surface.active\",\n },\n _icon: {\n width: 3,\n height: 3,\n },\n },\n control: {\n position: \"relative\",\n borderTopRadius: \"sm\",\n borderBottomRadius: \"sm\",\n _active: {\n backgroundColor: \"transparent\",\n },\n _open: {\n borderBottomRadius: 0,\n },\n _invalid: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n },\n },\n itemText: {\n flex: \"1\",\n },\n itemGroup: {\n _first: { mt: \"0\" },\n },\n itemGroupLabel: {\n py: \"1\",\n fontWeight: \"medium\",\n },\n valueText: {},\n itemDescription: {\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n color: \"ghost.text\",\n \"[aria-selected='true'] &\": {\n color: \"ghost.text\",\n },\n },\n },\n variants: {\n variant: {\n core: {\n control: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n _hover: {\n outline: \"2px solid\",\n outlineColor: \"core.outline\",\n },\n _active: {\n backgroundColor: \"brand.surface.active\",\n },\n _disabled: {\n pointerEvents: \"none\",\n color: \"text.disabled\",\n backgroundColor: \"surface.disabled\",\n },\n },\n },\n floating: {\n control: {\n backgroundColor: {\n _light: \"bg\",\n _dark: `color-mix(in srgb, white 10%, var(--spor-colors-bg))`,\n },\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n _hover: {\n outline: \"1px solid\",\n outlineColor: \"floating.outline.hover\",\n backgroundColor: {\n _light: \"floating.surface.hover\",\n _dark: `color-mix(in srgb, white 10%, var(--spor-colors-bg))`,\n },\n },\n _active: {\n outline: \"1px solid\",\n outlineColor: \"floating.outline.active\",\n backgroundColor: \"floating.surface.active\",\n },\n },\n selectContent: {\n outline: \"1px solid\",\n outlineColor: \"floating.outline\",\n },\n },\n rightSideSquare: {\n control: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n trigger: {\n _focus: {\n borderRightRadius: \"none\",\n },\n },\n },\n leftSideSquare: {\n control: {\n outline: \"1px solid\",\n outlineColor: \"core.outline\",\n },\n trigger: {\n _focus: {\n borderLeftRadius: \"none\",\n },\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { stepperAnatomy } from \"./anatomy\";\n\nexport const stepperSlotRecipe = defineSlotRecipe({\n slots: stepperAnatomy.keys(),\n className: \"spor-stepper\",\n base: {\n root: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: [\"space-between\", null, \"center\"],\n minHeight: [\"3rem\", null, \"3.75rem\"],\n overflowX: \"auto\",\n width: \"100%\",\n \"& svg\": {\n color: {\n _light: \"blackAlpha.700\",\n _dark: \"whiteAlpha.700\",\n },\n },\n },\n container: {\n paddingX: [2, null, null, 0],\n maxWidth: \"container.lg\",\n marginX: \"auto\",\n width: \"100%\",\n },\n innerContainer: {\n overflow: \"hidden\",\n display: [\"flex\", null, \"none\"],\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 3,\n },\n title: {\n overflow: \"hidden\",\n fontWeight: \"bold\",\n WebkitLineClamp: 2,\n display: \"-webkit-box\",\n textAlign: \"center\",\n maxWidth: \"80%\",\n },\n stepContainer: {\n display: \"flex\",\n alignItems: \"center\",\n },\n stepTitle: {\n textStyle: \"sm\",\n whiteSpace: \"nowrap\",\n },\n },\n variants: {\n variant: {\n core: {\n root: {\n backgroundColor: \"transparent\",\n },\n },\n accent: {\n root: {\n backgroundColor: \"accent.bg\",\n },\n stepButton: {\n color: {\n _light: \"blackAlpha.900\",\n _dark: \"whiteAlpha.900\",\n },\n _disabled: {\n color: \"core.text\",\n },\n _currentStep: {\n color: \"accent.text\",\n },\n _hover: {\n backgroundColor: \"accent.surface.hover\",\n _disabled: {\n backgroundColor: \"transparent\",\n },\n },\n },\n backButton: {\n _hover: {\n backgroundColor: \"brand.surface.hover\",\n },\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { switchAnatomy } from \"./anatomy\";\n\nexport const switchSlotRecipe = defineSlotRecipe({\n slots: switchAnatomy.keys(),\n className: \"spor-switch\",\n base: {\n root: {\n display: \"inline-flex\",\n gap: \"2.5\",\n alignItems: \"center\",\n position: \"relative\",\n verticalAlign: \"middle\",\n \"--switch-diff\": \"calc(var(--switch-width) - var(--switch-height))\",\n \"--switch-x\": {\n base: \"var(--switch-diff)\",\n _rtl: \"calc(var(--switch-diff) * -1)\",\n },\n },\n thumb: {\n position: \"absolute\",\n transitionProperty: \"translate\",\n transitionDuration: \"fast\",\n borderRadius: \"2xl\",\n display: \"flex\",\n flexShrink: 0,\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"var(--switch-height)\",\n height: \"var(--switch-height)\",\n backgroundColor: \"core.icon\",\n\n _disabled: {\n backgroundColor: \"icon.disabled\",\n _checked: {\n backgroundColor: \"icon.disabled\",\n },\n },\n _checked: {\n translate: \"var(--switch-x) 0\",\n backgroundColor: \"brand.icon\",\n },\n },\n\n label: {\n display: \"block\",\n textAlign: \"start\",\n marginEnd: 3,\n opacity: 1,\n bottom: 4,\n _disabled: {\n opacity: \"0.5\",\n },\n },\n control: {\n boxSizing: \"content-box\",\n padding: 0.5,\n\n display: \"inline-flex\",\n gap: 1.5,\n flexShrink: 0,\n justifyContent: \"flex-start\",\n cursor: \"switch\",\n borderRadius: \"xl\",\n position: \"relative\",\n width: \"var(--switch-width)\",\n height: \"var(--switch-height)\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n outline: \"1px solid\",\n outlineColor: \"core.outline.default\",\n backgroundColor: \"core.background\",\n _hover: {\n outline: \"2px solid\",\n outlineColor: \"core.outline.hover\",\n _checked: {\n outlineColor: \"transparent\",\n backgroundColor: \"brand.surface.hover\",\n },\n },\n\n _focusVisible: {\n outlineWidth: \"2px\",\n outlineColor: \"outline.focus\",\n outlineStyle: \"solid\",\n },\n\n _checked: {\n backgroundColor: \"brand.surface\",\n _focusVisible: {\n outlineStyle: \"double\",\n outlineWidth: `calc(3 * ${tokens.size.stroke.md})`, // space for double outline\n },\n },\n _disabled: {\n pointerEvents: \"none\",\n backgroundColor: \"core.disabled\",\n outlineColor: \"outline.disabled\",\n\n _checked: {\n backgroundColor: \"icon.disabled\",\n outlineColor: \"transparent\",\n },\n },\n _invalid: {\n outline: \"2px solid\",\n outlineColor: \"outline.error\",\n outlineOffset: \"2px\",\n },\n },\n },\n variants: {\n size: {\n sm: {\n root: {\n \"--switch-width\": \"3.3rem\",\n \"--switch-height\": \"1.5rem\",\n },\n control: {\n borderRadius: \"lg\",\n padding: \"0.12rem\",\n },\n },\n md: {\n root: {\n \"--switch-width\": \"4.1rem\",\n \"--switch-height\": \"1.8rem\",\n },\n control: {\n borderRadius: \"xl\",\n padding: 0.5,\n },\n },\n lg: {\n root: {\n \"--switch-width\": \"4.8rem\",\n \"--switch-height\": \"2.25rem\",\n },\n control: {\n borderRadius: \"2xl\",\n padding: 0.5,\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { tabsAnatomy } from \"./anatomy\";\n\nexport const tabsSlotRecipe = defineSlotRecipe({\n slots: tabsAnatomy.keys(),\n className: \"spor-tabs\",\n base: {\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n list: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 0.5,\n borderRadius: \"xl\",\n width: \"fit-content\",\n },\n trigger: {\n display: \"flex\",\n cursor: \"pointer\",\n justifyContent: \"center\",\n alignItems: \"center\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n height: \"100%\",\n whiteSpace: \"nowrap\",\n borderRadius: \"xl\",\n },\n },\n variants: {\n fitted: {\n true: {\n list: {\n display: \"flex\",\n width: \"auto\",\n },\n trigger: {\n flex: 1,\n textAlign: \"center\",\n justifyContent: \"center\",\n },\n },\n },\n justify: {\n start: {\n list: {\n justifyContent: \"flex-start\",\n },\n },\n center: {\n list: {\n justifyContent: \"center\",\n },\n },\n end: {\n list: {\n justifyContent: \"flex-end\",\n },\n },\n },\n variant: {\n core: {\n list: {\n backgroundColor: \"core.surface\",\n color: \"core.text\",\n border: \"sm\",\n },\n trigger: {\n color: \"core.text\",\n border: \"md\",\n borderColor: \"transparent\",\n _hover: {\n outline: \"2px solid\",\n outlineColor: \"core.surface.hover\",\n outlineOffset: \"-2px\",\n },\n _active: {\n backgroundColor: \"brand.surface.active\",\n color: \"brand.text\",\n outline: \"none\",\n },\n _selected: {\n backgroundColor: \"brand.surface\",\n color: \"brand.text\",\n },\n _disabled: {\n backgroundColor: \"surface.disabled\",\n color: \"brand.text.disabled\",\n },\n },\n },\n accent: {\n list: {\n backgroundColor: \"accent.bg\",\n color: \"accent.text\",\n },\n trigger: {\n color: \"accent.text\",\n _disabled: {\n backgroundColor: \"surface.disabled\",\n color: \"accent.text.disabled\",\n },\n _hover: {\n backgroundColor: \"accent.surface.hover\",\n _active: {\n backgroundColor: \"brand.surface.active\",\n color: \"brand.text\",\n },\n },\n _selected: {\n backgroundColor: \"brand.surface\",\n color: \"brand.text\",\n _hover: {\n backgroundColor: \"brand.surface.hover\",\n color: \"brand.text\",\n },\n },\n },\n },\n },\n size: {\n xs: {\n list: {\n height: 5,\n padding: \"0.1rem\",\n },\n trigger: {\n paddingX: 2,\n paddingY: 0,\n },\n },\n sm: {\n list: {\n height: 6,\n padding: 0.5,\n },\n trigger: {\n paddingX: 2,\n },\n },\n md: {\n list: {\n height: 7,\n padding: 0.5,\n },\n trigger: {\n fontWeight: \"bold\",\n paddingX: 2,\n },\n },\n lg: {\n list: {\n height: 8,\n padding: \"0.2rem\",\n },\n trigger: {\n fontWeight: \"bold\",\n fontSize: \"sm\",\n paddingX: 3,\n _focus: {\n border: \"md\",\n borderColor: \"accent.surface\",\n },\n },\n },\n },\n },\n});\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nimport { toastAnatomy } from \"./anatomy\";\n\nexport const toastSlotRecipe = defineSlotRecipe({\n slots: toastAnatomy.keys(),\n className: \"chakra-toast\",\n base: {\n root: {\n width: \"full\",\n display: \"flex\",\n position: \"relative\",\n alignItems: \"center\",\n gap: \"0.75rem\",\n padding: \"0.563rem 0.75rem\",\n translate: \"var(--x) var(--y)\",\n opacity: \"var(--opacity)\",\n willChange: \"translate, opacity, scale\",\n\n borderRadius: \"sm\",\n transition:\n \"translate 400ms, scale 400ms, opacity 400ms, height 400ms, box-shadow 200ms\",\n transitionTimingFunction: \"cubic-bezier(0.21, 1.02, 0.73, 1)\",\n _closed: {\n transition: \"translate 400ms, scale 400ms, opacity 200ms\",\n transitionTimingFunction: \"cubic-bezier(0.06, 0.71, 0.55, 1)\",\n },\n boxShadow: \"xl\",\n\n color: \"text\",\n \"&[data-type=success]\": {\n backgroundColor: \"alert.success.surface\",\n \"& svg\": {\n color: \"primaryGreen\",\n },\n },\n \"&[data-type=error]\": {\n backgroundColor: \"alert.error.surface\",\n \"& svg\": {\n color: \"brightRed\",\n },\n },\n\n \"&[data-type=info]\": {\n backgroundColor: \"alert.info.surface\",\n \"& svg\": {\n color: \"darkBlue\",\n },\n },\n },\n\n title: {\n textStyle: \"sm\",\n marginEnd: \"2\",\n },\n },\n});\n","import { accordionSlotRecipe } from \"./accordion\";\nimport { alertSlotRecipe } from \"./alert\";\nimport { alertExpandableSlotRecipe } from \"./alert-expandable\";\nimport { alertServiceSlotRecipe } from \"./alert-service\";\nimport { breadcrumbSlotRecipe } from \"./breadcrumb\";\nimport { checkboxSlotRecipe } from \"./checkbox\";\nimport { choiceChipSlotRecipe } from \"./choice-chip\";\nimport { datePickerSlotRecipe } from \"./datepicker\";\nimport { dialogSlotRecipe } from \"./dialog\";\nimport { drawerSlotRecipe } from \"./drawer\";\nimport { fieldSlotRecipe } from \"./field\";\nimport { floatingActionButtonSlotRecipe } from \"./floating-action-button\";\nimport { infoTagSlotRecipe } from \"./info-tag\";\nimport { lineIconSlotRecipe } from \"./line-icon\";\nimport { listSlotRecipe } from \"./list\";\nimport { listBoxSlotRecipe } from \"./listbox\";\nimport { mediaControllerSlotRecipe } from \"./media-controller-button\";\nimport { nativeSelectSlotRecipe } from \"./native-select\";\nimport { numericStepperRecipe } from \"./numeric-stepper\";\nimport { paginationSlotRecipe } from \"./pagination\";\nimport { popoverSlotRecipe } from \"./popover\";\nimport { progressBarRecipe } from \"./progress-bar\";\nimport { progressIndicatorRecipe } from \"./progress-indicator\";\nimport { radioGroupSlotRecipe } from \"./radio\";\nimport { radioCardSlotRecipe } from \"./radio-card\";\nimport { selectSlotRecipe } from \"./select\";\nimport { stepperSlotRecipe } from \"./stepper\";\nimport { switchSlotRecipe } from \"./switch\";\nimport { tableSlotRecipe } from \"./table\";\nimport { tabsSlotRecipe } from \"./tabs\";\nimport { toastSlotRecipe } from \"./toast\";\nimport { travelTagSlotRecipe } from \"./travel-tag\";\n\nexport const slotRecipes = {\n accordion: accordionSlotRecipe,\n alertExpandable: alertExpandableSlotRecipe,\n alertService: alertServiceSlotRecipe,\n alert: alertSlotRecipe,\n breadcrumb: breadcrumbSlotRecipe,\n checkbox: checkboxSlotRecipe,\n datePicker: datePickerSlotRecipe,\n dialog: dialogSlotRecipe,\n drawer: drawerSlotRecipe,\n field: fieldSlotRecipe,\n floatingActionButton: floatingActionButtonSlotRecipe,\n infoTag: infoTagSlotRecipe,\n lineIcon: lineIconSlotRecipe,\n list: listSlotRecipe,\n listBox: listBoxSlotRecipe,\n mediaControllerButton: mediaControllerSlotRecipe,\n nativeSelect: nativeSelectSlotRecipe,\n numericStepper: numericStepperRecipe,\n popover: popoverSlotRecipe,\n progressbar: progressBarRecipe,\n progressIndicator: progressIndicatorRecipe,\n pagination: paginationSlotRecipe,\n radioCard: radioCardSlotRecipe,\n radioGroup: radioGroupSlotRecipe,\n select: selectSlotRecipe,\n stepper: stepperSlotRecipe,\n switch: switchSlotRecipe,\n table: tableSlotRecipe,\n tabs: tabsSlotRecipe,\n travelTag: travelTagSlotRecipe,\n toast: toastSlotRecipe,\n checkboxCard: choiceChipSlotRecipe,\n};\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const animations = defineTokens.animations({\n spin: {\n value: \"spin 1s linear infinite\",\n },\n ping: {\n value: \"ping 1s cubic-bezier(0, 0, 0.2, 1) infinite\",\n },\n pulse: {\n value: \"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite\",\n },\n bounce: {\n value: \"bounce 1s infinite\",\n },\n expandWidthBounce: {\n value: \"expand-width-bounce 0.6s ease-in-out\",\n },\n collapseWidth: {\n value: \"collapse-width 0.3s ease-in-out\",\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const aspectRatios = defineTokens.aspectRatios({\n square: {\n value: \"1 / 1\",\n },\n landscape: {\n value: \"4 / 3\",\n },\n portrait: {\n value: \"3 / 4\",\n },\n wide: {\n value: \"16 / 9\",\n },\n ultrawide: {\n value: \"18 / 5\",\n },\n golden: {\n value: \"1.618 / 1\",\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const blurs = defineTokens.blurs({\n none: {\n value: \" \",\n },\n sm: {\n value: \"4px\",\n },\n md: {\n value: \"8px\",\n },\n lg: {\n value: \"12px\",\n },\n xl: {\n value: \"16px\",\n },\n \"2xl\": {\n value: \"24px\",\n },\n \"3xl\": {\n value: \"40px\",\n },\n \"4xl\": {\n value: \"64px\",\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const borders = defineTokens.borders({\n none: {\n value: \"0\",\n },\n sm: {\n value: `${tokens.size.stroke.sm} solid`,\n },\n \"sm-dashed\": {\n value: `${tokens.size.stroke.sm} dashed`,\n },\n md: {\n value: `${tokens.size.stroke.md} solid`,\n },\n \"md-dashed\": {\n value: `${tokens.size.stroke.md} dashed`,\n },\n lg: {\n value: `${tokens.size.stroke.lg} solid`,\n },\n \"lg-dashed\": {\n value: `${tokens.size.stroke.lg} dashed`,\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens/raw-tokens\";\n\nexport const colors = defineTokens.colors({\n ...tokens.color.alias.color.alias,\n ...tokens.color.palette.color.palette,\n linjetag: tokens.color.linjetag.color.linjetag,\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const cursor = defineTokens.cursor({\n button: {\n value: \"pointer\",\n },\n checkbox: {\n value: \"default\",\n },\n disabled: {\n value: \"not-allowed\",\n },\n menuitem: {\n value: \"default\",\n },\n option: {\n value: \"default\",\n },\n radio: {\n value: \"default\",\n },\n slider: {\n value: \"default\",\n },\n switch: {\n value: \"pointer\",\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const durations = defineTokens.durations({\n fastest: {\n value: \"50ms\",\n },\n faster: {\n value: \"100ms\",\n },\n fast: {\n value: \"150ms\",\n },\n moderate: {\n value: \"200ms\",\n },\n slow: {\n value: \"300ms\",\n },\n slower: {\n value: \"400ms\",\n },\n slowest: {\n value: \"500ms\",\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const easings = defineTokens.easings({\n \"ease-in\": {\n value: \"cubic-bezier(0.42, 0, 1, 1)\",\n },\n \"ease-out\": {\n value: \"cubic-bezier(0, 0, 0.58, 1)\",\n },\n \"ease-in-out\": {\n value: \"cubic-bezier(0.42, 0, 0.58, 1)\",\n },\n \"ease-in-smooth\": {\n value: \"cubic-bezier(0.32, 0.72, 0, 1)\",\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const fontSizes = defineTokens.fontSizes({\n \"2xs\": { value: tokens.size.font.xs.mobile },\n xs: { value: tokens.size.font.sm.mobile },\n sm: { value: tokens.size.font.md.mobile },\n md: { value: tokens.size.font.lg.mobile },\n lg: { value: tokens.size.font.xl.mobile },\n xl: { value: tokens.size.font.xxl.mobile },\n \"2xl\": { value: tokens.size.font.xl.desktop },\n \"3xl\": { value: tokens.size.font.xxl.desktop },\n\n mobile: {\n xs: { value: tokens.size.font.xs.mobile },\n sm: { value: tokens.size.font.sm.mobile },\n md: { value: tokens.size.font.md.mobile },\n lg: { value: tokens.size.font.lg.mobile },\n xl: { value: tokens.size.font.xl.mobile },\n xxl: { value: tokens.size.font.xxl.mobile },\n },\n desktop: {\n xs: { value: tokens.size.font.xs.desktop },\n sm: { value: tokens.size.font.sm.desktop },\n md: { value: tokens.size.font.md.desktop },\n lg: { value: tokens.size.font.lg.desktop },\n xl: { value: tokens.size.font.xl.desktop },\n xxl: { value: tokens.size.font.xxl.desktop },\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const fontWeights = defineTokens.fontWeights({\n thin: {\n value: 100,\n },\n extralight: {\n value: 200,\n },\n light: {\n value: 300,\n },\n normal: {\n value: 400,\n },\n medium: {\n value: 500,\n },\n semibold: {\n value: 600,\n },\n bold: {\n value: 700,\n },\n extrabold: {\n value: 800,\n },\n black: {\n value: 900,\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const fonts = defineTokens.fonts({\n body: { value: `${tokens.font.family.body}, arial, sans-serif` },\n heading: { value: `${tokens.font.family.heading}, arial, sans-serif` },\n mono: { value: `${tokens.font.family.monospace}, monospace` },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const letterSpacings = defineTokens.letterSpacings({\n tighter: {\n value: \"-0.05em\",\n },\n tight: {\n value: \"-0.025em\",\n },\n wide: {\n value: \"0.025em\",\n },\n wider: {\n value: \"0.05em\",\n },\n widest: {\n value: \"0.1em\",\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\n\nexport const lineHeights = defineTokens.lineHeights({\n shorter: {\n value: 1.25,\n },\n short: {\n value: 1.375,\n },\n moderate: {\n value: 1.5,\n },\n tall: {\n value: 1.625,\n },\n taller: {\n value: 2,\n },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const radii = defineTokens.radii({\n none: { value: tokens.size[\"border-radius\"].none },\n xs: { value: tokens.size[\"border-radius\"].xs },\n sm: { value: tokens.size[\"border-radius\"].sm },\n md: { value: tokens.size[\"border-radius\"].md },\n lg: { value: tokens.size[\"border-radius\"].lg },\n xl: { value: tokens.size[\"border-radius\"].xl },\n \"2xl\": { value: tokens.size[\"border-radius\"][\"2xl\"] },\n round: { value: \"50%\" },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nimport { spacing } from \"./spacing\";\n\nexport const largeSizes = defineTokens.sizes({\n \"3xs\": { value: \"14rem\" },\n \"2xs\": { value: \"16rem\" },\n xs: { value: \"20rem\" },\n sm: { value: \"24rem\" },\n md: { value: \"28rem\" },\n lg: { value: \"32rem\" },\n xl: { value: \"36rem\" },\n \"2xl\": { value: \"42rem\" },\n \"3xl\": { value: \"48rem\" },\n \"4xl\": { value: \"56rem\" },\n \"5xl\": { value: \"64rem\" },\n \"6xl\": { value: \"72rem\" },\n \"7xl\": { value: \"80rem\" },\n \"8xl\": { value: \"90rem\" },\n});\n\nconst namedSizes = defineTokens.sizes({\n max: { value: \"max-content\" },\n min: { value: \"min-content\" },\n fit: { value: \"fit-content\" },\n prose: { value: \"60ch\" },\n full: { value: \"100%\" },\n dvh: { value: \"100dvh\" },\n svh: { value: \"100svh\" },\n lvh: { value: \"100lvh\" },\n dvw: { value: \"100dvw\" },\n svw: { value: \"100svw\" },\n lvw: { value: \"100lvw\" },\n vw: { value: \"100vw\" },\n vh: { value: \"100vh\" },\n});\n\nconst container = defineTokens.sizes({\n base: { value: 0 },\n sm: { value: tokens.size.breakpoint.sm },\n md: { value: tokens.size.breakpoint.md },\n lg: { value: tokens.size.breakpoint.lg },\n xl: { value: tokens.size.breakpoint.xl },\n});\n\nexport const sizes = {\n ...largeSizes,\n ...namedSizes,\n ...spacing,\n container,\n};\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const spacing = defineTokens.spacing({\n 0: { value: tokens.size.spacing[\"0\"] },\n 0.5: { value: tokens.size.spacing[\"0.5\"] },\n 1: { value: tokens.size.spacing[\"1\"] },\n 1.5: { value: tokens.size.spacing[\"1.5\"] },\n 2: { value: tokens.size.spacing[\"2\"] },\n 3: { value: tokens.size.spacing[\"3\"] },\n 4: { value: tokens.size.spacing[\"4\"] },\n 5: { value: tokens.size.spacing[\"5\"] },\n 6: { value: tokens.size.spacing[\"6\"] },\n 7: { value: tokens.size.spacing[\"7\"] },\n 8: { value: tokens.size.spacing[\"8\"] },\n 9: { value: tokens.size.spacing[\"9\"] },\n 10: { value: tokens.size.spacing[\"10\"] },\n 11: { value: tokens.size.spacing[\"11\"] },\n 12: { value: tokens.size.spacing[\"12\"] },\n});\n","import { defineTokens } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const zIndex = defineTokens.zIndex({\n hide: { value: tokens.depth[\"z-index\"].hide },\n auto: { value: \"auto\" },\n base: { value: tokens.depth[\"z-index\"].base },\n docked: { value: tokens.depth[\"z-index\"].docked },\n dropdown: { value: tokens.depth[\"z-index\"].dropdown },\n sticky: { value: tokens.depth[\"z-index\"].sticky },\n banner: { value: tokens.depth[\"z-index\"].banner },\n overlay: { value: tokens.depth[\"z-index\"].overlay },\n modal: { value: tokens.depth[\"z-index\"].modal },\n popover: { value: tokens.depth[\"z-index\"].popover },\n skipLink: { value: tokens.depth[\"z-index\"].skipLink },\n toast: { value: tokens.depth[\"z-index\"].toast },\n});\n","import { animations } from \"./animations\";\nimport { aspectRatios } from \"./aspect-ratios\";\nimport { blurs } from \"./blurs\";\nimport { borders } from \"./borders\";\nimport { colors } from \"./colors\";\nimport { cursor } from \"./cursor\";\nimport { durations } from \"./durations\";\nimport { easings } from \"./easings\";\nimport { fontSizes } from \"./font-sizes\";\nimport { fontWeights } from \"./font-weights\";\nimport { fonts } from \"./fonts\";\nimport { letterSpacings } from \"./letter-spacings\";\nimport { lineHeights } from \"./line-heights\";\nimport { radii } from \"./radii\";\nimport { sizes } from \"./sizes\";\nimport { spacing } from \"./spacing\";\nimport { zIndex } from \"./z-index\";\n\nexport const tokens = {\n aspectRatios,\n animations,\n blurs,\n borders,\n colors,\n durations,\n easings,\n fonts,\n fontSizes,\n fontWeights,\n letterSpacings,\n lineHeights,\n radii,\n spacing,\n sizes,\n zIndex,\n cursor,\n};\n","import { defineAnimationStyles } from \"@chakra-ui/react\";\n\nexport const animationStyles = defineAnimationStyles({\n \"slide-fade-in\": {\n value: {\n transformOrigin: \"var(--transform-origin)\",\n \"&[data-placement^=top]\": {\n animationName: \"slide-from-bottom, fade-in\",\n },\n \"&[data-placement^=bottom]\": {\n animationName: \"slide-from-top, fade-in\",\n },\n \"&[data-placement^=left]\": {\n animationName: \"slide-from-right, fade-in\",\n },\n \"&[data-placement^=right]\": {\n animationName: \"slide-from-left, fade-in\",\n },\n },\n },\n \"slide-fade-out\": {\n value: {\n transformOrigin: \"var(--transform-origin)\",\n \"&[data-placement^=top]\": {\n animationName: \"slide-to-bottom, fade-out\",\n },\n \"&[data-placement^=bottom]\": {\n animationName: \"slide-to-top, fade-out\",\n },\n \"&[data-placement^=left]\": {\n animationName: \"slide-to-right, fade-out\",\n },\n \"&[data-placement^=right]\": {\n animationName: \"slide-to-left, fade-out\",\n },\n },\n },\n \"scale-fade-in\": {\n value: {\n transformOrigin: \"var(--transform-origin)\",\n animationName: \"scale-in, fade-in\",\n },\n },\n \"scale-fade-out\": {\n value: {\n transformOrigin: \"var(--transform-origin)\",\n animationName: \"scale-out, fade-out\",\n },\n },\n});\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const breakpoints = {\n sm: tokens.size.breakpoint.sm,\n md: tokens.size.breakpoint.md,\n lg: tokens.size.breakpoint.lg,\n xl: tokens.size.breakpoint.xl,\n};\n","export const config = {\n preflight: true,\n cssVarsPrefix: \"spor\",\n cssVarsRoot: \":where(:root, :host)\",\n /* strictTokens: true, */ /* Should be turned on at some point */\n conditions: {\n off: \"&:is([data-state=off])\",\n on: \"&:is([data-state=on])\",\n },\n};\n","import { defineGlobalStyles } from \"@chakra-ui/react\";\n\nexport const globalCss = defineGlobalStyles({\n \"html, body\": {\n color: \"text\",\n },\n svg: {\n display: \"initial\",\n },\n\n \":is(button, [role='button'], a, input, textarea, select, video, audio):focus-visible\":\n {\n outlineWidth: \"2px !important\",\n outlineColor: \"outline.focus !important\",\n outlineStyle: \"solid !important\",\n outlineOffset: \"1px !important\",\n },\n});\n","export const keyframes = {\n spin: {\n \"0%\": {\n transform: \"rotate(0deg)\",\n },\n \"100%\": {\n transform: \"rotate(360deg)\",\n },\n },\n pulse: {\n \"50%\": {\n opacity: \"0.5\",\n },\n },\n ping: {\n \"75%, 100%\": {\n transform: \"scale(2)\",\n opacity: \"0\",\n },\n },\n bounce: {\n \"0%, 100%\": {\n transform: \"translateY(-25%)\",\n animationTimingFunction: \"cubic-bezier(0.8,0,1,1)\",\n },\n \"50%\": {\n transform: \"none\",\n animationTimingFunction: \"cubic-bezier(0,0,0.2,1)\",\n },\n },\n \"bg-position\": {\n from: {\n backgroundPosition: \"var(--animate-from, 1rem) 0\",\n },\n to: {\n backgroundPosition: \"var(--animate-to, 0) 0\",\n },\n },\n position: {\n from: {\n insetInlineStart: \"var(--animate-from-x)\",\n insetBlockStart: \"var(--animate-from-y)\",\n },\n to: {\n insetInlineStart: \"var(--animate-to-x)\",\n insetBlockStart: \"var(--animate-to-y)\",\n },\n },\n \"circular-progress\": {\n \"0%\": {\n strokeDasharray: \"1, 400\",\n strokeDashoffset: \"0\",\n },\n \"50%\": {\n strokeDasharray: \"400, 400\",\n strokeDashoffset: \"-100%\",\n },\n \"100%\": {\n strokeDasharray: \"400, 400\",\n strokeDashoffset: \"-260%\",\n },\n },\n \"expand-height\": {\n from: {\n height: \"0\",\n },\n to: {\n height: \"var(--height)\",\n },\n },\n \"collapse-height\": {\n from: {\n height: \"var(--height)\",\n },\n to: {\n height: \"0\",\n },\n },\n \"expand-width\": {\n from: {\n width: \"auto\",\n },\n to: {\n width: \"var(--width)\",\n },\n },\n \"collapse-width\": {\n from: {\n width: \"var(--width)\",\n },\n to: {\n width: \"auto\",\n },\n },\n \"fade-in\": {\n from: {\n opacity: 0,\n },\n to: {\n opacity: 1,\n },\n },\n \"fade-out\": {\n from: {\n opacity: 1,\n },\n to: {\n opacity: 0,\n },\n },\n \"slide-from-left-full\": {\n from: {\n translate: \"-100% 0\",\n },\n to: {\n translate: \"0 0\",\n },\n },\n \"slide-from-right-full\": {\n from: {\n translate: \"100% 0\",\n },\n to: {\n translate: \"0 0\",\n },\n },\n \"slide-from-top-full\": {\n from: {\n translate: \"0 -100%\",\n },\n to: {\n translate: \"0 0\",\n },\n },\n \"slide-from-bottom-full\": {\n from: {\n translate: \"0 100%\",\n },\n to: {\n translate: \"0 0\",\n },\n },\n \"slide-to-left-full\": {\n from: {\n translate: \"0 0\",\n },\n to: {\n translate: \"-100% 0\",\n },\n },\n \"slide-to-right-full\": {\n from: {\n translate: \"0 0\",\n },\n to: {\n translate: \"100% 0\",\n },\n },\n \"slide-to-top-full\": {\n from: {\n translate: \"0 0\",\n },\n to: {\n translate: \"0 -100%\",\n },\n },\n \"slide-to-bottom-full\": {\n from: {\n translate: \"0 0\",\n },\n to: {\n translate: \"0 100%\",\n },\n },\n \"slide-from-top\": {\n \"0%\": {\n translate: \"0 -0.5rem\",\n },\n to: {\n translate: \"0\",\n },\n },\n \"slide-from-bottom\": {\n \"0%\": {\n translate: \"0 0.5rem\",\n },\n to: {\n translate: \"0\",\n },\n },\n \"slide-from-left\": {\n \"0%\": {\n translate: \"-0.5rem 0\",\n },\n to: {\n translate: \"0\",\n },\n },\n \"slide-from-right\": {\n \"0%\": {\n translate: \"0.5rem 0\",\n },\n to: {\n translate: \"0\",\n },\n },\n \"slide-to-top\": {\n \"0%\": {\n translate: \"0\",\n },\n to: {\n translate: \"0 -0.5rem\",\n },\n },\n \"slide-to-bottom\": {\n \"0%\": {\n translate: \"0\",\n },\n to: {\n translate: \"0 0.5rem\",\n },\n },\n \"slide-to-left\": {\n \"0%\": {\n translate: \"0\",\n },\n to: {\n translate: \"-0.5rem 0\",\n },\n },\n \"slide-to-right\": {\n \"0%\": {\n translate: \"0\",\n },\n to: {\n translate: \"0.5rem 0\",\n },\n },\n \"scale-in\": {\n from: {\n scale: \"0.95\",\n },\n to: {\n scale: \"1\",\n },\n },\n \"scale-out\": {\n from: {\n scale: \"1\",\n },\n to: {\n scale: \"0.95\",\n },\n },\n};\n","import { defineTextStyles } from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const textStyles = defineTextStyles({\n xxl: {\n value: {\n fontSize: [\n tokens.font.style.xxl[\"font-size\"].mobile,\n null,\n null,\n tokens.font.style.xxl[\"font-size\"].desktop,\n ],\n fontFamily: tokens.font.style.xxl[\"font-family\"],\n lineHeight: tokens.font.style.xxl[\"line-height\"],\n },\n },\n \"xl-display\": {\n value: {\n fontSize: [\n tokens.font.style[\"xl-display\"][\"font-size\"].mobile,\n null,\n null,\n tokens.font.style[\"xl-display\"][\"font-size\"].desktop,\n ],\n fontFamily: tokens.font.style[\"xl-display\"][\"font-family\"],\n lineHeight: tokens.font.style[\"xl-display\"][\"line-height\"],\n },\n },\n \"xl-sans\": {\n value: {\n fontSize: [\n tokens.font.style[\"xl-sans\"][\"font-size\"].mobile,\n null,\n null,\n tokens.font.style[\"xl-sans\"][\"font-size\"].desktop,\n ],\n fontFamily: tokens.font.style[\"xl-sans\"][\"font-family\"],\n lineHeight: tokens.font.style[\"xl-sans\"][\"line-height\"],\n },\n },\n lg: {\n value: {\n fontSize: [\n tokens.font.style.lg[\"font-size\"].mobile,\n null,\n null,\n tokens.font.style.lg[\"font-size\"].desktop,\n ],\n fontFamily: tokens.font.style.lg[\"font-family\"],\n lineHeight: tokens.font.style.lg[\"line-height\"],\n },\n },\n md: {\n value: {\n fontSize: [\n tokens.font.style.md[\"font-size\"].mobile,\n null,\n null,\n tokens.font.style.md[\"font-size\"].desktop,\n ],\n fontFamily: tokens.font.style.md[\"font-family\"],\n lineHeight: tokens.font.style.md[\"line-height\"],\n },\n },\n sm: {\n value: {\n fontSize: [\n tokens.font.style.sm[\"font-size\"].mobile,\n null,\n null,\n tokens.font.style.sm[\"font-size\"].desktop,\n ],\n fontFamily: tokens.font.style.sm[\"font-family\"],\n lineHeight: tokens.font.style.sm[\"line-height\"],\n },\n },\n xs: {\n value: {\n fontSize: [\n tokens.font.style.xs[\"font-size\"].mobile,\n null,\n null,\n tokens.font.style.xs[\"font-size\"].desktop,\n ],\n fontFamily: tokens.font.style.xs[\"font-family\"],\n lineHeight: tokens.font.style.xs[\"line-height\"],\n },\n },\n});\n","export type { CollapsibleRootProps } from \"@chakra-ui/react\";\nexport { Collapsible } from \"@chakra-ui/react\";\n","export * from \"./accordion\";\nexport * from \"./alert\";\nexport * from \"./breadcrumb\";\nexport * from \"./button\";\nexport * from \"./color-mode\";\nexport * from \"./datepicker\";\nexport * from \"./dialog\";\nexport * from \"./i18n\";\nexport * from \"./image\";\nexport * from \"./input\";\nexport * from \"./layout\";\nexport * from \"./linjetag\";\nexport * from \"./link\";\nexport * from \"./list\";\nexport * from \"./loader\";\nexport * from \"./logo\";\nexport * from \"./media-controller\";\nexport * from \"./nudge\";\nexport * from \"./pagination\";\nexport * from \"./popover\";\nexport * from \"./progress-indicator\";\nexport * from \"./provider\";\nexport * from \"./stepper\";\nexport * from \"./tab\";\nexport * from \"./table\";\nexport * from \"./theme\";\nexport * from \"./theme/brand\";\nexport * from \"./toast\";\nexport * from \"./transition\";\nexport * from \"./typography\";\nexport * from \"./util\";\nexport * as tokens from \"@vygruppen/spor-design-tokens\";\n"]}