@vygruppen/spor-react 11.3.4 → 11.3.6
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/.turbo/turbo-build.log +10 -10
- package/CHANGELOG.md +12 -0
- package/dist/index.d.mts +3 -6
- package/dist/index.d.ts +3 -6
- package/dist/index.js +417 -417
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +352 -355
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
- package/src/alert/ServiceAlert.tsx +2 -2
- package/src/input/FormControl.tsx +2 -11
package/dist/index.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/index.tsx","../src/accordion/Accordion.tsx","../src/layout/index.tsx","../src/layout/Divider.tsx","../src/layout/Stack.tsx","../src/layout/RadioCard.tsx","../src/layout/RadioCardGroup.tsx","../src/input/index.tsx","../src/input/AttachedInputs.tsx","../src/input/CardSelect.tsx","../src/input/Dialog.tsx","../src/input/Popover.tsx","../src/input/Checkbox.tsx","../src/input/CheckboxGroup.tsx","../src/input/ChoiceChip.tsx","../src/input/Combobox.tsx","../src/input/FormControl.tsx","../src/input/FormErrorMessage.tsx","../src/input/FormLabel.tsx","../src/input/InfoSelect.tsx","../src/input/ListBox.tsx","../src/input/Input.tsx","../src/input/InputElement.tsx","../src/input/NativeSelect.tsx","../src/input/NumericStepper.tsx","../src/input/PasswordInput.tsx","../src/input/PhoneNumberInput.tsx","../src/input/CountryCodeSelect.tsx","../src/input/Radio.tsx","../src/input/RadioGroup.tsx","../src/input/SearchInput.tsx","../src/input/Switch.tsx","../src/input/Textarea.tsx","../src/layout/StaticCard.tsx","../src/layout/PressableCard.tsx","../src/accordion/Expandable.tsx","../src/alert/ClosableAlert.tsx","../src/button/Button.tsx","../src/i18n/index.tsx","../src/loader/ColorInlineLoader.tsx","../src/loader/ClientOnly.tsx","../src/loader/useHydrated.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/loader/Skeleton.tsx","../src/loader/SkeletonCircle.tsx","../src/loader/SkeletonText.tsx","../src/button/ButtonGroup.tsx","../src/button/CloseButton.tsx","../src/button/IconButton.tsx","../src/button/FloatingActionButton.tsx","../src/alert/AlertIcon.tsx","../src/alert/BaseAlert.tsx","../src/alert/ExpandableAlert.tsx","../src/alert/StaticAlert.tsx","../src/alert/ServiceAlert.tsx","../src/breadcrumb/Breadcrumb.tsx","../src/datepicker/index.tsx","../src/datepicker/DatePicker.tsx","../src/datepicker/Calendar.tsx","../src/datepicker/CalendarGrid.tsx","../src/typography/Badge.tsx","../src/typography/Code.tsx","../src/typography/Heading.tsx","../src/typography/Text.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/image/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/VyLogo.tsx","../src/logo/VyLogoPride.tsx","../src/logo/CargonetLogo.tsx","../src/media-controller/JumpButton.tsx","../src/media-controller/PlayPauseButton.tsx","../src/media-controller/SkipButton.tsx","../src/modal/Drawer.tsx","../src/modal/ModalHeader.tsx","../src/modal/FullScreenDrawer.tsx","../src/modal/Modal.tsx","../src/modal/SimpleDrawer.tsx","../src/nudge/Nudge.tsx","../src/nudge/WizardNudge.tsx","../src/pagination/Pagination.tsx","../src/progress-indicator/ProgressIndicator.tsx","../src/progress-indicator/ProgressDot.tsx","../src/provider/SporProvider.tsx","../src/stepper/Stepper.tsx","../src/stepper/StepperContext.tsx","../src/stepper/StepperStep.tsx","../src/tab/index.tsx","../src/tab/Tabs.tsx","../src/table/index.tsx","../src/table/Table.tsx","../src/theme/index.ts","../src/theme/components/index.ts","../src/theme/components/accordion.ts","../src/theme/utils/base-utils.ts","../src/theme/utils/brand-utils.ts","../src/theme/utils/focus-utils.ts","../src/theme/utils/surface-utils.ts","../src/theme/utils/floating-utils.ts","../src/theme/utils/ghost-utils.ts","../src/theme/components/alert.ts","../src/theme/components/alert-expandable.ts","../src/theme/components/alert-service.ts","../src/theme/components/badge.ts","../src/theme/components/breadcrumb.ts","../src/theme/components/button.ts","../src/theme/utils/accent-utils.ts","../src/theme/components/card-select.ts","../src/theme/foundations/index.ts","../src/theme/foundations/borders.ts","../src/theme/foundations/breakpoints.ts","../src/theme/foundations/colors.ts","../src/theme/foundations/config.ts","../src/theme/foundations/fonts.ts","../src/theme/foundations/fontSizes.ts","../src/theme/foundations/fontWeights.ts","../src/theme/foundations/lineHeights.ts","../src/theme/foundations/radii.ts","../src/theme/foundations/shadows.ts","../src/theme/foundations/sizes.ts","../src/theme/foundations/spacing.ts","../src/theme/foundations/textStyles.ts","../src/theme/foundations/zIndices.ts","../src/theme/foundations/styles.ts","../src/theme/components/checkbox.ts","../src/theme/components/choice-chip.ts","../src/theme/components/close-button.ts","../src/theme/components/code.ts","../src/theme/components/datepicker.ts","../src/theme/components/divider.ts","../src/theme/components/drawer.ts","../src/theme/utils/bg-utils.ts","../src/theme/components/fab.ts","../src/theme/components/form.ts","../src/theme/components/form-label.ts","../src/theme/components/info-select.ts","../src/theme/utils/sr-utils.ts","../src/theme/components/info-tag.ts","../src/theme/components/travel-tag.ts","../src/theme/components/input.ts","../src/theme/utils/input-utils.ts","../src/theme/components/line-icon.ts","../src/theme/components/link.ts","../src/theme/components/list.ts","../src/theme/components/listbox.ts","../src/theme/utils/outline-utils.ts","../src/theme/components/media-controller-button.ts","../src/theme/components/modal.ts","../src/theme/components/numeric-stepper.ts","../src/theme/components/pagination.ts","../src/theme/components/popover.ts","../src/theme/components/progress-bar.ts","../src/theme/components/progress-indicator.ts","../src/theme/components/radio-card.ts","../src/theme/components/radio.ts","../src/theme/components/select.ts","../src/theme/components/skeleton.ts","../src/theme/components/stepper.ts","../src/theme/components/switch.ts","../src/theme/components/table.ts","../src/theme/components/tabs.ts","../src/theme/components/textarea.ts","../src/theme/components/toast.ts","../src/theme/components/static-card.ts","../src/theme/components/pressable-card.ts","../src/theme/font-faces.ts","../src/toast/useToast.tsx","../src/toast/ActionToast.tsx","../src/toast/BaseToast.tsx","../src/toast/ClosableToast.tsx","../src/tooltip/Tooltip.tsx","../src/transition/index.ts","../src/util/externals.tsx","../src/util/slugify.tsx"],"names":["tokens","forwardRef","React","Box","chakra","useMultiStyleConfig","useContext","useEffect","useId","useState","Stack","InputGroup","Flex","useRef","styles","DropdownDownFill24Icon","useButton","FormLabel","useFormControlContext","InputLeftElement","InputRightElement","texts","ChakraInput","useControllableState","IconButton","CloseOutline24Icon","dataAttr","useStyleConfig","spacing","AccordionButton","AccordionIcon","AccordionItem","AccordionPanel","useDisclosure","CloseFill18Icon","Center","Language","spinnerLightData","Text","useProgressBar","Button","getIcon","Accordion","useColorModeValue","Popover","PopoverAnchor","Heading","createCalendar","FocusLock","PopoverArrow","PopoverBody","PopoverContent","PopoverTrigger","Portal","I18nProvider","DropdownRightFill18Icon","WarningFill24Icon","ListItem","DrawerBody","DrawerContent","DrawerOverlay","useModalContext","CloseFill24Icon","CloseFill30Icon","DrawerCloseButton","UnorderedList","DropdownLeftFill18Icon","theme","ArrowLeftFill24Icon","mode","surface","createMultiStyleConfigHelpers","parts","helpers","config","anatomy","defineStyleConfig","cssVar","sizes","bg","defineMultiStyleConfig","definePartsStyle","getSize","Brand","ErrorOutline24Icon","InformationOutline24Icon","SuccessOutline24Icon","PopoverCloseButton","DarkMode","useMediaQuery"],"mappings":"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","sourcesContent":["export * as tokens from \"@vygruppen/spor-design-tokens\";\nexport * from \"./accordion\";\nexport * from \"./alert\";\nexport * from \"./breadcrumb\";\nexport * from \"./button\";\nexport * from \"./datepicker\";\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 \"./modal\";\nexport * from \"./nudge\";\nexport * from \"./pagination\";\nexport * from \"./progress-indicator\";\nexport * from \"./provider\";\nexport * from \"./stepper\";\nexport * from \"./tab\";\nexport * from \"./table\";\nexport * from \"./theme\";\nexport * from \"./toast\";\nexport * from \"./tooltip\";\nexport * from \"./transition\";\nexport * from \"./typography\";\nexport * from \"./util\";\n","import {\n Accordion as ChakraAccordion,\n AccordionProps as ChakraAccordionProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { Stack, StackProps } from \"../layout\";\nexport {\n AccordionButton,\n AccordionIcon,\n AccordionItem,\n AccordionPanel,\n} from \"@chakra-ui/react\";\nexport type {\n AccordionButtonProps,\n AccordionItemProps,\n AccordionPanelProps,\n} from \"@chakra-ui/react\";\n\nexport type AccordionProps = Omit<ChakraAccordionProps, \"variant\" | \"size\"> & {\n /**\n * The display variant of the accordion items.\n *\n * - `ghost` renders a pretty unstyled expandable list without any borders\n * - `base` renders an outlined version\n * - `floating` renders a version with a drop shadow\n */\n variant?: \"ghost\" | \"base\" | \"floating\";\n /** The margin between accordion items */\n spacing?: StackProps[\"spacing\"];\n};\n/*\n * Wraps a set of ExpandableItem or AccordionItem components.\n *\n * ```tsx\n * <Accordion variant=\"ghost\">\n * <ExpandableItem title=\"Is Spor easy?\" headingLevel=\"h3\">\n * Yes\n * </ExpandableItem>\n * <ExpandableItem title=\"Is Spor lovable?\" headingLevel=\"h3\">\n * 🥰\n * </ExpandableItem>\n * </Accordion>\n * ```\n *\n * If you only have one expandable item, you can use the `<Expandable />` component instead.\n */\nexport const Accordion = forwardRef<AccordionProps, \"div\">(\n ({ children, spacing = 2, ...props }, ref) => {\n const defaultIndex =\n typeof props.defaultIndex === \"number\" && props.allowMultiple\n ? [props.defaultIndex]\n : props.defaultIndex;\n return (\n <ChakraAccordion\n {...props}\n ref={ref}\n defaultIndex={defaultIndex as number[] | undefined}\n >\n <Stack spacing={spacing}>{children}</Stack>\n </ChakraAccordion>\n );\n },\n);\n","export {\n Box,\n Center,\n Container,\n Flex,\n Grid,\n GridItem,\n HStack,\n SimpleGrid,\n Spacer,\n VStack,\n Wrap,\n WrapItem,\n} from \"@chakra-ui/react\";\nexport type {\n BoxProps,\n CenterProps,\n ContainerProps,\n FlexProps,\n GridItemProps,\n GridProps,\n SimpleGridProps,\n SpacerProps,\n WrapItemProps,\n WrapProps,\n} from \"@chakra-ui/react\";\nexport * from \"./Divider\";\nexport * from \"./Stack\";\nexport * from \"./RadioCard\";\nexport * from \"./RadioCardGroup\";\nexport * from \"./StaticCard\";\nexport * from \"./PressableCard\";\n","import {\n BoxProps,\n Divider as ChakraDivider,\n DividerProps as ChakraDividerProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport { As } from \"@chakra-ui/system\";\nimport React from \"react\";\n\nexport type DividerProps = ChakraDividerProps & {\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"solid\" | \"dashed\";\n};\n/** A dividing line, used to divide content.\n *\n * You can specify margins if you need to give the content some space, or use a `Stack` component to do it for you\n *\n * ```tsx\n * <Divider marginTop={4} marginBottom={6} />\n * ```\n *\n * There are three different sizes available: `sm`, `md` and `lg`. The default is `md`.\n * There are two different variants available: `solid` and `dashed`. The default is `solid`.\n */\nexport const Divider = forwardRef<BoxProps, As>((props, ref) => {\n return <ChakraDivider {...props} ref={ref} />;\n});\n","import {\n Stack as ChakraStack,\n StackProps as ChakraStackProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type StackProps = Exclude<ChakraStackProps, \"direction\"> & {\n flexDirection?: ChakraStackProps[\"direction\"];\n};\n/**\n * Adds consistent spacing between elements\n *\n * ```tsx\n * <Stack>\n * <Text>Here's a paragraph</Text>\n * <Text>Here's another perfectly spaced paragraph</Text>\n * </Stack>\n * ```\n *\n * By default, the stack will be a column. You can change this by setting the `flexDirection` prop to any valid flex direction:\n * ```tsx\n * <Stack flexDirection=\"row\">\n * <Checkbox>Here's a checkbox</Checkbox>\n * <Checkbox>Here's another checkbox, almost right next to the first one</Checkbox>\n * </Stack>\n * ```\n *\n * You can specify the spacing between elements with the `spacing` prop:\n *\n * ```tsx\n * <Stack spacing={4}>\n * <StaticCard>Here's one card</StaticCard>\n * <StaticCard>Here's another card, with a lot of space between it</StaticCard>\n * </Stack>\n * ```\n */\nexport const Stack = forwardRef<StackProps, \"div\">(\n ({ flexDirection, ...props }, ref) => {\n return <ChakraStack {...props} direction={flexDirection} ref={ref} />;\n },\n);\n","import {\n Box,\n BoxProps,\n chakra,\n forwardRef,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport React, { useContext, useEffect, useId, useState } from \"react\";\nimport { RadioCardGroupContext } from \"./RadioCardGroup\";\nimport { dataAttr } from \"@chakra-ui/utils\";\n\n/**\n * Radio cards are used to present a set of options where only one option can be selected.\n *\n * RadioCard components must be wrapped in a RadioCardGroup component.\n *\n * @example\n * ```tsx\n * <RadioCardGroup name=\"ticket\">\n * <RadioCard value=\"economy\">Economy</RadioCard>\n * <RadioCard value=\"business\">Business</RadioCard>\n * <RadioCard value=\"first-class\">First Class</RadioCard>\n * </RadioCardGroup>\n * ```\n *\n * RadioCard inherits props from Box.\n *\n * Be advised to not use the `name` prop on the RadioCard component.\n *\n * Changing the semantics may also cause the component to not work as expected.\n *\n * @see Docs https://spor.vy.no/components/radiocard\n */\n\nexport type RadioCardProps = BoxProps & {\n /** The value that will be passed to the `RadioCardGroup`'s `onChange` function if this `RadioCard` is selected.. */\n value: string;\n /** The content of the RadioCard. */\n children: React.ReactNode;\n /** Determines if the RadioCard is disabled. */\n isDisabled?: boolean;\n};\n\nexport const RadioCard = forwardRef(\n ({ children, value, isDisabled, ...props }: RadioCardProps, ref) => {\n const context = useContext(RadioCardGroupContext);\n\n if (!context) {\n throw new Error(\n \"RadioCard components must be wrapped in a RadioCardGroup component\",\n );\n }\n\n const { name, selectedValue, onChange, variant } = context;\n\n const styles = useMultiStyleConfig(\"RadioCard\", { variant });\n\n const [isKeyboardUser, setKeyboardUser] = useState(false);\n const [isFocused, setFocus] = useState(false);\n\n const isChecked = selectedValue === value;\n\n useEffect(() => {\n const handleMouseDown = () => setKeyboardUser(false);\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \" \") {\n setFocus(false);\n } else {\n setKeyboardUser(true);\n }\n };\n\n window.addEventListener(\"mousedown\", handleMouseDown);\n window.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n window.removeEventListener(\"mousedown\", handleMouseDown);\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, []);\n\n useEffect(() => {\n if (isKeyboardUser && isChecked) {\n setFocus(true);\n } else {\n setFocus(false);\n }\n }, [isKeyboardUser, isChecked]);\n\n const inputId = `radio-card-${useId()}`;\n\n return (\n <Box\n onFocus={() => isKeyboardUser && setFocus(true)}\n onBlur={() => setFocus(false)}\n >\n <chakra.input\n type=\"radio\"\n id={inputId}\n name={name}\n ref={ref}\n checked={isChecked}\n onChange={() => onChange(value)}\n disabled={isDisabled}\n __css={styles.radioInput}\n />\n <Box\n as=\"label\"\n name={name}\n htmlFor={inputId}\n aria-checked={dataAttr(isChecked)}\n data-checked={dataAttr(isChecked)}\n data-disabled={dataAttr(isDisabled)}\n {...props}\n __css={{\n ...styles.container,\n ...(isChecked && styles.checked),\n ...(isFocused && !isChecked && styles.focused),\n ...(isChecked && isFocused && styles.focusedChecked),\n }}\n >\n {children}\n </Box>\n </Box>\n );\n },\n);\n","import { BoxProps, Stack } from \"@chakra-ui/react\";\nimport React, { useState } from \"react\";\nimport { FormLabel } from \"../input\";\n\n/**\n * RadioCardGroupContext is used to pass down the state and handlers to the RadioCard components.\n *\n * @see RadioCard\n */\n\ntype RadioGroupContextProps = {\n name: string;\n selectedValue: string;\n onChange: (value: string) => void;\n variant?: \"base\" | \"floating\";\n defaultValue?: string;\n value?: string;\n};\n\nexport const RadioCardGroupContext =\n React.createContext<RadioGroupContextProps | null>(null);\n\ntype RadioCardGroupProps = BoxProps & {\n /** A string that will be assigned as the name attribute to all RadioCard components within the group. */\n name: string;\n /** The RadioCard components that make up the group. */\n children: React.ReactNode;\n /** Optional. Determines the style of the RadioCard. Can be either \"base\" or \"floating\". */\n variant?: \"base\" | \"floating\";\n /** Optional. Determines the direction of the group. Can be either \"row\" or \"column\". */\n direction?: \"row\" | \"column\";\n /** Optional. A label for the group. */\n groupLabel?: string;\n /** Optional. The default value of the RadioCard group. */\n defaultValue?: string;\n /** Optional. A function that will be called when the selected value changes. The function receives the value of the selected RadioCard. */\n onChange?: (value: string) => void;\n};\n\nexport const RadioCardGroup: React.FC<RadioCardGroupProps> = ({\n children,\n name,\n variant = \"base\",\n direction = \"row\",\n groupLabel,\n defaultValue,\n onChange,\n ...props\n}: RadioCardGroupProps) => {\n const [selectedValue, setSelectedValue] = useState<string>(\n defaultValue || \"\",\n );\n\n const handleChange = (value: string) => {\n setSelectedValue(value);\n onChange && onChange(value);\n };\n\n return (\n <RadioCardGroupContext.Provider\n value={{\n name,\n selectedValue,\n onChange: handleChange,\n variant,\n defaultValue: defaultValue || \"\",\n }}\n >\n <Stack as=\"fieldset\" direction={direction} {...props}>\n {groupLabel && (\n <FormLabel as=\"legend\" id={groupLabel}>\n {groupLabel}\n </FormLabel>\n )}\n {children}\n </Stack>\n </RadioCardGroupContext.Provider>\n );\n};\n","export { FormHelperText, InputGroup } from \"@chakra-ui/react\";\nexport type { InputGroupProps } from \"@chakra-ui/react\";\nexport * from \"./AttachedInputs\";\nexport * from \"./CardSelect\";\nexport * from \"./Checkbox\";\nexport * from \"./CheckboxGroup\";\nexport * from \"./ChoiceChip\";\nexport * from \"./Combobox\";\nexport * from \"./FormControl\";\nexport * from \"./FormErrorMessage\";\nexport * from \"./FormLabel\";\nexport * from \"./InfoSelect\";\nexport * from \"./Input\";\nexport * from \"./InputElement\";\nexport * from \"./ListBox\";\nexport * from \"./NativeSelect\";\nexport * from \"./NumericStepper\";\nexport * from \"./PasswordInput\";\nexport * from \"./PhoneNumberInput\";\nexport * from \"./Radio\";\nexport * from \"./RadioGroup\";\nexport * from \"./SearchInput\";\nexport * from \"./Switch\";\nexport * from \"./Textarea\";\n","import React from \"react\";\nimport { Flex, FlexProps } from \"..\";\n\ntype AttachedInputsProps = FlexProps;\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 */\nexport const AttachedInputs = ({\n flexDirection = \"row\",\n ...rest\n}: AttachedInputsProps) => {\n const attachedStyles = {\n horizontal: {\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 \"> *: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 const direction = flexDirection === \"row\" ? \"horizontal\" : \"vertical\";\n return (\n <Flex\n role=\"group\"\n __css={attachedStyles[direction]}\n display=\"flex\"\n flexDirection={flexDirection}\n {...rest}\n />\n );\n};\n","import {\n Box,\n BoxProps,\n chakra,\n Flex,\n forwardRef,\n ResponsiveValue,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport {\n DropdownDownFill18Icon,\n DropdownDownFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { AriaPositionProps, useButton, useOverlayTrigger } from \"react-aria\";\nimport { useOverlayTriggerState } from \"react-stately\";\nimport { StaticCard } from \"..\";\nimport { Dialog } from \"./Dialog\";\nimport { Popover } from \"./Popover\";\n\ntype CardSelectProps = BoxProps & {\n /** The design of the trigger button.\n *\n * - `ghost` is a transparent button with text\n * - `base` 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: \"base\" | \"ghost\" | \"floating\";\n /** The size of the trigger button */\n size: \"sm\" | \"md\" | \"lg\";\n /** Whether the card select is open / active, if controlled */\n isOpen?: boolean;\n /** The default state of the card select. Defaults to false (closed) */\n defaultOpen?: boolean;\n /** Callback for when the card select opens or closes. */\n onToggle?: (isOpen: boolean) => void;\n /** An optional trigger button icon, rendered to the left of the label */\n icon?: React.ReactNode;\n /** The content of the card select */\n children: React.ReactNode;\n /** The horizontalOffset of the popover card */\n crossOffset?: number;\n /** The position of the popover card */\n placement?: AriaPositionProps[\"placement\"];\n /** Whether or not to show the chevron. Defaults to true */\n withChevron?: boolean;\n /** Defaults to normal */\n fontWeight?: ResponsiveValue<\"normal\" | \"bold\">;\n} & (\n | {\n /** The text label of the trigger button */\n label: string;\n }\n | {\n /** Accessible label for the trigger button */\n \"aria-label\": string;\n }\n );\n\n/**\n * A card select component.\n *\n * This component consists of a trigger button and a card select popover. The trigger button has several different variants and sizes, and can have an optional icon.\n *\n * ```tsx\n * <CardSelect label=\"Languages\" variant=\"card\" size=\"md\">\n * <LanguageSettings />\n * </CardSelect>\n * ```\n *\n * @see https://spor.vy.no/components/card-select\n *\n */\nexport const CardSelect = forwardRef<CardSelectProps, \"button\">(\n (\n {\n variant,\n size,\n isOpen: externalIsOpen,\n defaultOpen = false,\n onToggle,\n icon,\n children,\n width = \"fit-content\",\n crossOffset = 0,\n placement = \"bottom\",\n withChevron = true,\n fontWeight = \"normal\",\n ...props\n },\n externalRef,\n ) => {\n const label = \"label\" in props ? props.label : props[\"aria-label\"];\n const internalRef = useRef<HTMLButtonElement>(null);\n const triggerRef = (externalRef ??\n internalRef) as React.RefObject<HTMLButtonElement>;\n\n const state = useOverlayTriggerState({\n isOpen: externalIsOpen,\n onOpenChange: onToggle,\n defaultOpen,\n });\n const { triggerProps, overlayProps } = useOverlayTrigger(\n { type: \"dialog\" },\n state,\n triggerRef,\n );\n\n const { buttonProps } = useButton(triggerProps, triggerRef);\n\n const styles = useMultiStyleConfig(\"CardSelect\", {\n variant,\n size,\n });\n useForceRerender(state.isOpen);\n\n const ChevronIcon =\n size === \"sm\" ? DropdownDownFill18Icon : DropdownDownFill24Icon;\n\n return (\n <Box {...props}>\n <chakra.button\n type=\"button\"\n ref={triggerRef}\n sx={styles.trigger}\n aria-label={label}\n {...buttonProps}\n width={width}\n data-attachable\n >\n <Flex gap={1.5} alignItems=\"center\">\n {icon}\n <Box as=\"span\" display={props[\"aria-label\"] ? \"none\" : \"inline\"}>\n {label}\n </Box>\n {withChevron ? (\n <ChevronIcon\n transform={state.isOpen ? \"rotate(180deg)\" : \"none\"}\n />\n ) : null}\n </Flex>\n </chakra.button>\n {state.isOpen && (\n <Popover\n state={state}\n triggerRef={triggerRef}\n offset={size === \"sm\" ? 6 : 12}\n crossOffset={crossOffset}\n placement={placement}\n containerPadding={0}\n >\n <StaticCard\n colorScheme=\"white\"\n size=\"md\"\n fontSize={\"xs\"}\n border={\"sm\"}\n borderColor={\"silver\"}\n sx={styles.card}\n {...overlayProps}\n maxWidth={(triggerRef.current?.clientWidth ?? 1) * 2}\n >\n <Dialog aria-label={label}>{children}</Dialog>\n </StaticCard>\n </Popover>\n )}\n </Box>\n );\n },\n);\n\n/**\n * Hold my beer.\n *\n * This is a workaround for a \"bug\" in react-aria where the overlay doesn't\n * calculate the placement correctly for some reason.\n *\n * This is a hack, which forces React to rerender the component one extra time\n * after the state changes from closed to open.\n *\n * There is probably a better way to do this, but I could not come up with one.\n */\nfunction useForceRerender(shouldRerender: boolean) {\n const [_, update] = useState(false);\n useEffect(() => {\n if (shouldRerender) {\n update((x) => !x);\n }\n }, [shouldRerender]);\n}\n","import { Box, Heading } from \"@chakra-ui/react\";\nimport React, { useRef } from \"react\";\nimport { AriaDialogProps, useDialog } from \"react-aria\";\n\ntype DialogProps = AriaDialogProps & {\n /** Optional title tag\n *\n * Important! If you don't pass a title, you must pass an `aria-label` prop to the dialog.\n */\n title?: string;\n /** The content of the dialog */\n children: React.ReactNode;\n};\n/** Internal component for creating card select popovers */\nexport const Dialog = ({ title, children, ...props }: DialogProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const { dialogProps, titleProps } = useDialog(props, ref);\n\n return (\n <Box {...dialogProps} ref={ref} outline=\"none\">\n {title && (\n <Heading as=\"h3\" {...titleProps}>\n {title}\n </Heading>\n )}\n {children}\n </Box>\n );\n};\n","import { 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 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);\n","import {\n Checkbox as ChakraCheckbox,\n CheckboxProps as ChakraCheckboxProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type CheckboxProps = ChakraCheckboxProps;\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 `FormControl`.\n *\n * You can group several of these together with a `CheckboxGroup`.\n */\nexport const Checkbox = ChakraCheckbox;\n","import {\n CheckboxGroup as ChakraCheckboxGroup,\n CheckboxGroupProps as ChakraCheckboxGroupProps,\n Stack,\n StackDirection,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type CheckboxGroupProps = Exclude<\n ChakraCheckboxGroupProps,\n \"colorScheme\" | \"size\" | \"variant\"\n> & { direction?: StackDirection };\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 isDisabled 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 */\nexport const CheckboxGroup = ({\n direction = \"row\",\n children,\n ...props\n}: CheckboxGroupProps) => {\n return (\n <ChakraCheckboxGroup {...props}>\n <Stack direction={direction}>{children}</Stack>\n </ChakraCheckboxGroup>\n );\n};\n","import {\n chakra,\n forwardRef,\n useCheckbox,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport { dataAttr } from \"@chakra-ui/utils\";\nimport { CloseOutline24Icon } from \"@vygruppen/spor-icon-react\";\nimport React, { ChangeEvent, useId } from \"react\";\n\nexport type ChoiceChipProps = {\n onChange?: (value: ChangeEvent<HTMLInputElement>) => void;\n isChecked?: boolean;\n isDisabled?: boolean;\n defaultChecked?: boolean;\n /** The button text */\n children: React.ReactNode;\n icon?: {\n default: React.ReactNode;\n checked: React.ReactNode;\n };\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n chipType?: \"icon\" | \"choice\" | \"filter\";\n variant?: \"base\" | \"accent\" | \"floating\";\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 - `base`, `accent` and `floating`.\n *\n * ```tsx\n * <Stack flexDirection=\"row\">\n * <ChoiceChip variant=\"base\">Bus</ChoiceChip>\n * <ChoiceChip variant=\"accent\">Boat</ChoiceChip>\n * <ChoiceChip variant=\"floating\">Train</ChoiceChip>\n * </Stack>\n * ```\n */\nexport const ChoiceChip = forwardRef(\n (\n {\n children,\n icon,\n isDisabled,\n size = \"sm\",\n chipType = \"choice\",\n variant = \"base\",\n ...props\n }: ChoiceChipProps,\n ref,\n ) => {\n const {\n state,\n getInputProps,\n getCheckboxProps,\n getRootProps,\n getLabelProps,\n } = useCheckbox(props);\n const styles = useMultiStyleConfig(\"ChoiceChip\", {\n size,\n chipType,\n variant,\n icon,\n hasLabel: chipType !== \"icon\",\n });\n\n const id = `choice-chip-${useId()}`;\n\n return (\n <chakra.label\n {...getRootProps()}\n htmlFor={id}\n aria-label={String(children)}\n >\n <chakra.input\n {...getInputProps({}, ref)}\n id={id}\n disabled={isDisabled || state.isDisabled}\n />\n <chakra.div\n {...getLabelProps()}\n __css={styles.container}\n data-checked={dataAttr(state.isChecked)}\n data-hover={dataAttr(state.isHovered)}\n data-focus={dataAttr(state.isFocused)}\n data-active={dataAttr(state.isActive)}\n data-disabled={dataAttr(isDisabled || state.isDisabled)}\n >\n {icon && (\n <chakra.span __css={styles.icon}>\n {state.isChecked ? icon.checked : icon.default}\n </chakra.span>\n )}\n {chipType !== \"icon\" && (\n <chakra.span __css={styles.label} {...getCheckboxProps()}>\n {children}\n </chakra.span>\n )}\n\n {chipType === \"filter\" && state.isChecked && (\n <CloseOutline24Icon marginLeft={1.5} />\n )}\n </chakra.div>\n </chakra.label>\n );\n },\n);\n","import React, { useEffect, useId, useRef, useState } from \"react\";\nimport { AriaComboBoxProps, useComboBox, useFilter } from \"react-aria\";\nimport { useComboBoxState } from \"react-stately\";\nimport { ColorSpinner, Input, InputProps, ListBox } from \"..\";\nimport { Popover } from \"./Popover\";\n\ntype OverridableInputProps = Pick<\n InputProps,\n | \"marginTop\"\n | \"marginBottom\"\n | \"marginRight\"\n | \"marginLeft\"\n | \"marginY\"\n | \"marginX\"\n | \"paddingTop\"\n | \"paddingBottom\"\n | \"paddingLeft\"\n | \"paddingRight\"\n | \"paddingY\"\n | \"paddingX\"\n | \"leftIcon\"\n | \"rightIcon\"\n | \"borderTopRightRadius\"\n | \"borderTopLeftRadius\"\n | \"borderBottomRightRadius\"\n | \"borderBottomLeftRadius\"\n | \"onFocus\"\n>;\n\nexport type ComboboxProps<T> = AriaComboBoxProps<T> & {\n /** The label of the combobox */\n label: string;\n /** Whether or not the combobox is waiting for new suggestions */\n isLoading?: 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 variant?: \"base\" | \"floating\";\n} & OverridableInputProps;\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 function Combobox<T extends object>({\n label,\n isLoading,\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 allowsEmptyCollection,\n variant,\n ...rest\n}: ComboboxProps<T>) {\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 allowsEmptyCollection: Boolean(emptyContent),\n defaultFilter: contains,\n shouldCloseOnBlur: true,\n ...rest,\n });\n\n const comboBoxProps: OverridableInputProps = {\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: { size, ...inputProps },\n listBoxProps,\n } = useComboBox(\n {\n ...rest,\n inputRef,\n listBoxRef,\n popoverRef,\n label,\n },\n state,\n );\n\n return (\n <>\n <Input\n {...styleProps(comboBoxProps)}\n aria-haspopup=\"listbox\"\n ref={inputRef}\n role=\"combobox\"\n label={label}\n variant={variant}\n aria-expanded={state.isOpen}\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n borderBottomLeftRadius={\n state.isOpen && !isLoading ? 0 : borderBottomLeftRadius\n }\n borderBottomRightRadius={\n state.isOpen && !isLoading ? 0 : borderBottomRightRadius\n }\n {...inputProps}\n rightIcon={\n isLoading ? (\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 />\n <span aria-hidden=\"true\" data-trigger=\"multiselect\"></span>\n {state.isOpen && !isLoading && (\n <Popover\n state={state}\n triggerRef={inputRef as 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 state={state}\n id={listboxId}\n listBoxRef={listBoxRef}\n emptyContent={emptyContent}\n maxWidth={inputWidth}\n variant={variant}\n >\n {rest.children}\n </ListBox>\n </Popover>\n )}\n </>\n );\n}\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 }, []);\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 let timer: any;\n return () => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n timer = null;\n fn();\n }, ms);\n };\n};\n","import {\n FormControl as ChakraFormControl,\n FormControlProps as ChakraFormControlProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type FormControlProps = ChakraFormControlProps;\nexport const FormControl = forwardRef<FormControlProps, \"div\">((props, ref) => {\n return <ChakraFormControl {...props} ref={ref} />;\n});\n","import { Box, BoxProps, useFormControlContext } from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type FormErrorMessageProps = BoxProps & {\n /**\n * The error message itself.\n */\n children: React.ReactNode;\n};\n/** An error message\n *\n * This component is used to show error messages related to a form input.\n * It should _always_ be used inside of a `FormControl` component.\n *\n * It will only render if the `isInvalid` prop of its enclosing `FormControl` component is set to true.\n *\n * ```tsx\n * <FormControl isInvalid={email === \"\"}>\n * <Input label=\"E-mail\" value={email} onChange={updateEmail} />\n * <FormErrorMessage>This field is required</FormErrorMessage>\n * </FormControl>\n * ```\n *\n * If you're using a `FormHelperText` (or any other components inside of the `FormControl`), make sure to render the `FormErrorMessage` before those.\n * ```tsx\n * <FormControl isInvalid={email === \"\"}>\n * <Input label=\"E-mail\" value={email} onChange={updateEmail} />\n * <FormErrorMessage>This field is required</FormErrorMessage>\n * <FormHelperText>We don't share your email</FormHelperText>\n * </FormControl>\n * ```\n *\n * @see https://spor.vy.no/components/form-control\n */\nexport const FormErrorMessage = ({\n children,\n ...boxProps\n}: FormErrorMessageProps) => {\n const formControlContext = useFormControlContext();\n if (!formControlContext) {\n throw new Error(\n \"FormErrorMessage must be used within a FormControl component\",\n );\n }\n if (!formControlContext.isInvalid) {\n return null;\n }\n const { ref, ...errorMessageProps } =\n formControlContext.getErrorMessageProps();\n return (\n <Box position=\"relative\" ref={ref}>\n <Box\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 top={-0.5}\n left={3}\n zIndex=\"dropdown\"\n maxWidth=\"50ch\"\n {...errorMessageProps}\n {...boxProps}\n >\n <Arrow position=\"absolute\" top=\"-0.25em\" left=\"1em\" />\n {children}\n </Box>\n </Box>\n );\n};\n\n/** The arrow of the error message box */\nconst Arrow = (props: BoxProps) => {\n return (\n <Box\n {...(props as any)}\n as=\"svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n transform=\"rotate(45deg)\"\n >\n <Box\n as=\"path\"\n fill=\"lightRed\"\n d=\"M 0\n 0 Q 2.4 6 0 12 Q 6 9.6 12 12 Q 9.6 6 12 0 Q 6 2.4 0 0 z\"\n />\n </Box>\n );\n};\n","import {\n FormLabel as ChakraFormLabel,\n FormLabelProps as ChakraFormLabelProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type FormLabelProps = ChakraFormLabelProps;\nexport const FormLabel = forwardRef<FormLabelProps, \"label\">((props, ref) => {\n return <ChakraFormLabel {...props} ref={ref} />;\n});\n","import {\n Box,\n chakra,\n Flex,\n FormLabel,\n ResponsiveValue,\n useFormControlProps,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport {\n DropdownDownFill24Icon,\n DropdownUpFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React, { useRef } from \"react\";\nimport { HiddenSelect, useButton, useSelect } from \"react-aria\";\nimport { Column, useSelectState } from \"react-stately\";\nimport { createTexts, useTranslation } from \"../\";\nimport { ListBox } from \"./ListBox\";\nimport { Popover } from \"./Popover\";\n\ntype InfoSelectProps<T extends object> = {\n /**\n * Either a render function accepting an item, and returning a <Item />,\n * or a list of <Item />s.\n *\n * Render function example:\n * ```tsx\n * <Select items={items}>\n * {(item) => (\n * <Item key={item.value} value={item.value}>\n * {item.label}\n * </Item>\n * )}\n * </Select>\n * ```\n *\n * For this to work, the members in `items` need either a `key`\n * or an `id` property.\n *\n * List of <Item />s example:\n * ```tsx\n * <Select label=\"Choose a color\">\n * <Item>Green</Item>\n * <Item>Blue</Item>\n * <Item>Yellow</Item>\n * </Select>\n * ```\n **/\n children: React.ReactElement | ((item: T) => React.ReactElement);\n /**\n * The items to render\n *\n * If you have a dynamic list of items you want to display, you should use this prop instead of mapping them out. This is a performance optimization.\n *\n * You can render each item in a render function, passed in as `children`:\n *\n * ```tsx\n * <Select items={items}>\n * {(item) => <div>{item.someProp}</div>}\n * </Select>\n * ```\n */\n items?: T[];\n /** Callback for when something is selected */\n onChange?: (value: string | number) => void;\n value?: string | number;\n defaultValue?: string | number;\n /** Controlled open state\n *\n * Useful if you want to control the open state from outside the component.\n */\n isOpen?: boolean;\n /** Callback for when the open state of the select box changes.\n *\n * Useful if you want to control the open state from outside the component.\n */\n onOpenChange?: (isOpen: boolean) => void;\n /** The label describing the choice */\n label: string;\n /** Hide the label visually\n *\n * Should be used sparingly, as it makes the component less accessible.\n * Useful for the label is obvious, like a phone number country code select.\n */\n isLabelSrOnly?: boolean;\n /** The name of the select element */\n name?: string;\n /**\n * What's shown if nothing is selected.\n *\n * Defaults to a localized version of \"choose an option\"\n */\n placeholder?: string;\n /** The width of the select box.\n *\n * Defaults to the width of the selected content\n */\n width?: ResponsiveValue<string | number>;\n /** The height of the select box.\n *\n * Defaults to \"auto\"\n */\n height?: ResponsiveValue<string | number>;\n isDisabled?: boolean;\n /** A list of disabled keys.\n *\n * ```tsx\n * <Select label=\"Choose a color\" disabledKeys={[\"blue\", \"yellow\"]}>\n * <Item key=\"green\">Green</Item>\n * <Item key=\"blue\">Blue</Item>\n * <Item key=\"yellow\">Yellow</Item>\n * </Select>\n * ```\n **/\n disabledKeys?: string[];\n /** Whether or not the input is invalid */\n \"aria-invalid\"?: boolean;\n variant?: \"base\" | \"floating\";\n};\n/**\n * A styled select component.\n *\n * This select component lets you choose between a list of options.\n * Compared to the NativeSelect component, the InfoSelect component lets you style the options however you'd like – including both text, icons and other elements.\n *\n * ```tsx\n * <InfoSelect label=\"Choose a color\">\n * <SelectOption>Blue</SelectOption>\n * <SelectOption>Yellow</SelectOption>\n * <SelectOption>Green</SelectOption>\n * </InfoSelect>\n * ```\n *\n * Alternatvely, you can pass the items into the `items` prop, and create a render function for the items.\n *\n * ```tsx\n * <InfoSelect\n * label=\"Choose a color\"\n * items={[\n * { value: \"#f00\", label: \"Red\" },\n * { value: \"#0f0\", label: \"Green\" },\n * { value: \"#00f\", label: \"Blue\" },\n * ]}\n * >\n * {(item) => (\n * <Item key={item.key}>\n * {item.label}\n * </Item>\n * )}\n * </InfoSelect>\n * ```\n *\n * @see https://spor.vy.no/components/info-select\n */\nexport function InfoSelect<T extends object>({\n placeholder,\n onChange,\n value,\n isLabelSrOnly,\n defaultValue,\n variant,\n ...props\n}: InfoSelectProps<T>) {\n const renamedProps = {\n onSelectionChange: onChange,\n selectedKey: value,\n defaultSelectedKey: defaultValue,\n ...props,\n };\n const state = useSelectState(renamedProps);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const listboxRef = useRef<HTMLUListElement>(null);\n const { labelProps, triggerProps, valueProps, menuProps } = useSelect(\n renamedProps,\n state,\n triggerRef,\n );\n\n const stateStyle = \"completed\";\n\n const hasChosenValue = state.selectedItem !== null;\n\n const styles = useMultiStyleConfig(\"InfoSelect\", {\n isOpen: state.isOpen,\n isLabelSrOnly,\n variant,\n stateStyle,\n hasChosenValue,\n });\n const { buttonProps } = useButton(triggerProps, triggerRef);\n const { t } = useTranslation();\n const formControl = useFormControlProps(props);\n\n return (\n <Box sx={styles.container}>\n <HiddenSelect\n state={state}\n triggerRef={triggerRef}\n label={props.label}\n name={props.name}\n />\n\n <chakra.button\n type=\"button\"\n ref={triggerRef}\n sx={styles.button}\n {...buttonProps}\n data-attachable\n aria-invalid={formControl.isInvalid}\n aria-describedby={formControl[\"aria-describedby\"]}\n >\n <chakra.div sx={styles.innerButton}>\n <chakra.div\n {...labelProps}\n sx={{\n ...styles.label,\n ...(hasChosenValue && {\n transform: \"scale(0.825) translateY(-10px) translateX(-10%)\",\n transitionProperty: \"var(--spor-transition-property-common)\",\n transitionDuration: \"var(--spor-transition-duration-normal)\",\n }),\n }}\n >\n {props.label}\n </chakra.div>\n <Box\n {...valueProps}\n h={isLabelSrOnly ? \"\" : !hasChosenValue ? \"0px\" : \"18px\"}\n hidden={!hasChosenValue}\n transform={isLabelSrOnly ? \"\" : \"scale(1) translateY(-12px)\"}\n transitionProperty={\"var(--spor-transition-property-common)\"}\n transitionDuration={\"var(--spor-transition-duration-normal)\"}\n >\n {state.selectedItem\n ? (state.selectedItem.textValue ?? state.selectedItem.rendered)\n : (placeholder ?? t(texts.selectAnOption))}\n </Box>\n </chakra.div>\n <Box sx={styles.arrowIcon}>\n {state.isOpen ? <DropdownUpFill24Icon /> : <DropdownDownFill24Icon />}\n </Box>\n </chakra.button>\n\n {state.isOpen && (\n <Popover\n state={state}\n triggerRef={triggerRef}\n // The minimum padding should be 0, because the popover always should be\n // aligned with the trigger field regardless of the left padding in the container.\n containerPadding={0}\n >\n <ListBox\n {...menuProps}\n state={state}\n listBoxRef={listboxRef}\n borderBottomRadius=\"sm\"\n variant={variant}\n >\n {props.children}\n </ListBox>\n </Popover>\n )}\n </Box>\n );\n}\n\nconst texts = createTexts({\n selectAnOption: {\n nb: \"Velg et alternativ\",\n nn: \"Velg eit alternativ\",\n sv: \"Välj ett alternativ\",\n en: \"Choose an option\",\n },\n});\n","import {\n Box,\n List,\n ListItem,\n useColorModeValue,\n useMultiStyleConfig,\n type BoxProps,\n} from \"@chakra-ui/react\";\nimport type { Node } from \"@react-types/shared\";\nimport React, { 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\nexport { Item, Section } from \"react-stately\";\n\ntype ListBoxProps<T> = AriaListBoxProps<T> &\n Omit<BoxProps, \"filter\" | \"autoFocus\" | \"children\"> & {\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 isLoading?: boolean;\n /** The state of the listbox, provided externally somehow. */\n state: ListState<T> | SelectState<T>;\n /** UI to render if the collection is empty */\n emptyContent?: React.ReactNode;\n maxWidth?: BoxProps[\"maxWidth\"];\n variant?: \"base\" | \"floating\";\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 */\nexport function ListBox<T extends object>({\n isLoading,\n listBoxRef,\n state,\n maxWidth,\n variant,\n ...props\n}: ListBoxProps<T>) {\n const { listBoxProps } = useListBox(props, state, listBoxRef);\n const styles = useMultiStyleConfig(\"ListBox\", { variant });\n\n return (\n <List\n {...listBoxProps}\n ref={listBoxRef}\n sx={styles.container}\n aria-busy={isLoading}\n maxWidth={maxWidth}\n variant={variant}\n >\n {state.collection.size === 0 && props.emptyContent}\n {Array.from(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 </List>\n );\n}\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 let { labelProps } = useOptionContext();\n const styles = useMultiStyleConfig(\"ListBox\", {});\n return (\n <Box {...labelProps} sx={styles.label}>\n {children}\n </Box>\n );\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 let { descriptionProps } = useOptionContext();\n const styles = useMultiStyleConfig(\"ListBox\", {});\n return (\n <Box {...descriptionProps} sx={styles.description}>\n {children}\n </Box>\n );\n}\n\ntype OptionProps = {\n item: Node<unknown>;\n state: SelectState<any> | 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 styles = useMultiStyleConfig(\"ListBox\", {});\n let 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 any)?.current?.addEventListener(\n \"touchend\",\n (event: TouchEvent) => {\n event.preventDefault();\n },\n { passive: false, once: true },\n );\n }, []);\n\n return (\n <OptionContext.Provider value={{ labelProps, descriptionProps }}>\n <ListItem {...optionProps} {...dataFields} ref={ref} sx={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: any;\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 return (\n <ListItem {...itemProps}>\n {section.rendered && (\n <Box\n fontSize=\"mobile.xs\"\n color={titleColor}\n paddingX={3}\n paddingY={1}\n marginTop={isFirstSection ? 0 : 3}\n textTransform=\"uppercase\"\n fontWeight=\"bold\"\n {...headingProps}\n >\n {section.rendered}\n </Box>\n )}\n <List {...groupProps} padding={0} listStyleType=\"none\">\n {Array.from(state.collection.getChildren(section.key)).map(\n (item: any) => (\n <Option key={item.key} item={item} state={state} />\n ),\n )}\n </List>\n </ListItem>\n );\n}\n","import {\n Input as ChakraInput,\n InputProps as ChakraInputProps,\n FormLabel,\n InputGroup,\n InputLeftElement,\n InputRightElement,\n forwardRef,\n useFormControlContext,\n} from \"@chakra-ui/react\";\nimport React, { useId } from \"react\";\n\nexport type InputProps = Omit<ChakraInputProps, \"size\"> & {\n /** The input's label */\n label: string;\n /** Icon that shows up to the left */\n leftIcon?: React.ReactNode;\n /** Icon that shows up to the right */\n rightIcon?: 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\" leftIcon={<EmailOutline24Icon />} />\n * ```\n *\n * Input has two variants base, and floating.\n *\n * ```tsx\n * <Input label=\"E-mail\" leftIcon={<EmailOutline24Icon />} variant=\"floating\" />\n * ```\n */\nexport const Input = forwardRef<InputProps, \"input\">(\n ({ label, leftIcon, rightIcon, id, size, ...props }, ref) => {\n const formControlProps = useFormControlContext();\n const fallbackId = `input-${useId()}`;\n const inputId = id ?? formControlProps?.id ?? fallbackId;\n const labelId = `${useId()}-label`;\n return (\n <InputGroup position=\"relative\">\n {leftIcon && (\n <InputLeftElement pointerEvents=\"none\">{leftIcon}</InputLeftElement>\n )}\n <ChakraInput\n data-attachable\n paddingLeft={leftIcon ? 7 : undefined}\n paddingRight={rightIcon ? 7 : undefined}\n {...props}\n id={inputId}\n aria-labelledby={labelId}\n ref={ref}\n overflow=\"hidden\"\n placeholder=\" \" // This is needed to make the label work as expected\n css={{\n \"&::-webkit-search-cancel-button\": {\n WebkitAppearance: \"none\",\n },\n }}\n />\n\n <FormLabel\n htmlFor={inputId}\n id={labelId}\n pointerEvents=\"none\"\n sx={{\n position: \"absolute\",\n left: \"2.6rem\",\n top: \"26.9%\",\n fontSize: \"1.13rem\",\n pointerEvents: \"none\",\n margin: 0,\n zIndex: 2,\n \"input:focus + &, input[data-has-value] + &\": {\n color: \"var(--chakra-colors-gray-600)\",\n },\n \"input[data-has-value] + &\": {\n transform: \"translateY(-40%) scale(0.9)\",\n },\n }}\n >\n {label}\n </FormLabel>\n {rightIcon && (\n <InputRightElement pointerEvents=\"none\">\n {rightIcon}\n </InputRightElement>\n )}\n </InputGroup>\n );\n },\n);\n","import {\n forwardRef,\n InputElementProps as ChakraInputElementProps,\n InputLeftElement as ChakraInputLeftElement,\n InputRightElement as ChakraInputRightElement,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type InputElementProps = ChakraInputElementProps;\n/**\n * Places an element inside the left side of an input field.\n *\n * Must be used inside of an `InputGroup` component, and before the `Input` component.\n *\n * ```tsx\n * <FormControl>\n * <InputGroup>\n * <InputLeftElement>🔎</InputLeftElement>\n * <Input label=\"Search\" />\n * </InputGroup>\n * </FormControl>\n * ```\n */\nexport const InputLeftElement = forwardRef<InputElementProps, \"div\">(\n (props, ref) => <ChakraInputLeftElement {...props} ref={ref} />,\n);\n\n/**\n * Places an element inside the right side of an input field.\n *\n * Must be used inside of an `InputGroup` component, and after the `Input` component.\n *\n * ```tsx\n * <FormControl>\n * <InputGroup>\n * <Input label=\"Search\" />\n * <InputRightElement>🔎</InputRightElement>\n * </InputGroup>\n * </FormControl>\n * ```\n */\nexport const InputRightElement = forwardRef<InputElementProps, \"div\">(\n (props, ref) => <ChakraInputRightElement {...props} ref={ref} />,\n);\n","import {\n Select as ChakraSelect,\n SelectProps as ChakraSelectProps,\n forwardRef,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { FormControl, FormLabel } from \".\";\n\nexport type NativeSelectProps = Exclude<\n ChakraSelectProps,\n \"colorScheme\" | \"variant\" | \"size\"\n> & { label?: string };\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 * ```tsx\n * <NativeSelect label=\"Select level of luxury\">\n * <option>No luxury</option>\n * <option>Some luxury</option>\n * <option>Lots of luxury</option>\n * <option>I'm rich</option>\n * </NativeSelect>\n * ```\n */\nexport const NativeSelect = forwardRef<NativeSelectProps, \"select\">(\n ({ label, ...props }, ref) => {\n const styles = useMultiStyleConfig(\"Select\", props);\n return (\n <FormControl>\n <ChakraSelect\n data-attachable\n {...props}\n rootProps={{ __css: styles.root }}\n ref={ref}\n />\n {label && <FormLabel>{label}</FormLabel>}\n </FormControl>\n );\n },\n);\n","import {\n chakra,\n useControllableState,\n useFormControl,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport React, { useRef } from \"react\";\nimport {\n Box,\n BoxProps,\n Flex,\n IconButton,\n createTexts,\n useTranslation,\n} from \"..\";\n\ntype NumericStepperProps = {\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 isDisabled?: 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/** 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 * ```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 FormControl component to get IDs etc linked up automatically:\n *\n * ```tsx\n * <FormControl>\n * <FormLabel>Number of adults</FormLabel>\n * <NumericStepper />\n * </FormControl>\n * ```\n */\nexport function NumericStepper({\n name: nameProp,\n id: idProp,\n value: valueProp,\n defaultValue = 1,\n onChange: onChangeProp,\n minValue = 0,\n maxValue = 99,\n isDisabled,\n withInput = true,\n stepSize = 1,\n showZero = false,\n ariaLabelContext = { singular: \"\", plural: \"\" },\n ...boxProps\n}: NumericStepperProps) {\n const addButtonRef = useRef<HTMLButtonElement>(null);\n const { t } = useTranslation();\n const styles = useMultiStyleConfig(\"NumericStepper\", {});\n const [value, onChange] = useControllableState<number>({\n value: valueProp,\n onChange: onChangeProp,\n defaultValue,\n });\n const formControlProps = useFormControl({ id: idProp, isDisabled });\n const clampedStepSize = Math.max(Math.min(stepSize, 10), 1);\n\n const focusOnAddButton = () => {\n addButtonRef.current?.focus();\n };\n\n return (\n <Flex __css={styles.container} {...boxProps}>\n <VerySmallButton\n icon={<SubtractIcon stepLabel={clampedStepSize} />}\n aria-label={t(\n texts.decrementButtonAriaLabel(\n clampedStepSize,\n stepSize == 1 ? ariaLabelContext.singular : 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 isDisabled={formControlProps.disabled}\n id={value <= minValue ? undefined : formControlProps.id}\n />\n {withInput ? (\n <chakra.input\n type=\"number\"\n min={minValue}\n max={maxValue}\n name={nameProp}\n value={value}\n {...formControlProps}\n id={!showZero && value === 0 ? undefined : formControlProps.id}\n sx={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 ? t(texts.currentNumberAriaLabel(ariaLabelContext.plural))\n : \"\"\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 <chakra.text\n sx={styles.text}\n visibility={!showZero && value === 0 ? \"hidden\" : \"visible\"}\n aria-live=\"assertive\"\n aria-label={\n ariaLabelContext.plural !== \"\"\n ? t(texts.currentNumberAriaLabel(ariaLabelContext.plural))\n : \"\"\n }\n >\n {value}\n </chakra.text>\n )}\n <VerySmallButton\n ref={addButtonRef}\n icon={<AddIcon stepLabel={clampedStepSize} />}\n aria-label={t(\n texts.incrementButtonAriaLabel(\n clampedStepSize,\n stepSize == 1 ? ariaLabelContext.singular : ariaLabelContext.plural,\n ),\n )}\n onClick={() => onChange(Math.min(value + clampedStepSize, maxValue))}\n visibility={value >= maxValue ? \"hidden\" : \"visible\"}\n isDisabled={formControlProps.disabled}\n id={value >= maxValue ? undefined : formControlProps.id}\n />\n </Flex>\n );\n}\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 isDisabled?: boolean;\n /** The ID of the button */\n id?: string;\n};\n/** Internal override for extra small icon buttons */\nconst VerySmallButton = React.forwardRef((props: VerySmallButtonProps, ref) => {\n const styles = useMultiStyleConfig(\"NumericStepper\", {});\n return (\n <IconButton\n variant=\"primary\"\n size=\"xs\"\n sx={styles.button}\n ref={ref}\n {...props}\n />\n );\n});\n\ntype IconPropTypes = BoxProps & { stepLabel: number };\n\nconst SubtractIcon = ({ stepLabel, ...props }: IconPropTypes) => (\n <>\n <Box\n as=\"svg\"\n viewBox=\"0 0 30 30\"\n width=\"24\"\n height=\"24\"\n stroke=\"currentColor\"\n {...props}\n >\n <line\n x1=\"9\"\n y1=\"15\"\n x2=\"21\"\n y2=\"15\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Box>\n {stepLabel > 1 && (\n <chakra.span paddingRight=\"1\">{stepLabel.toString()}</chakra.span>\n )}\n </>\n);\n\nconst AddIcon = ({ stepLabel, ...props }: IconPropTypes) => (\n <>\n <Box\n as=\"svg\"\n viewBox=\"0 0 30 30\"\n width=\"24\"\n height=\"24\"\n stroke=\"currentColor\"\n {...props}\n >\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 </Box>\n\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 {\n Button,\n Input as ChakraInput,\n forwardRef,\n useDisclosure,\n useFormControlContext,\n} from \"@chakra-ui/react\";\nimport React, { useId } from \"react\";\nimport {\n FormLabel,\n InputGroup,\n InputLeftElement,\n InputProps,\n InputRightElement,\n} from \".\";\nimport { createTexts, useTranslation } from \"..\";\n\nexport type PasswordInputProps = InputProps;\nexport const PasswordInput = forwardRef<PasswordInputProps, \"input\">(\n ({ leftIcon, id, label, size, ...props }, ref) => {\n const { isOpen: isShowingPassword, onToggle } = useDisclosure();\n const { t } = useTranslation();\n const formControlProps = useFormControlContext();\n const autoGeneratedId = `password-input-${useId()}`;\n const inputId = id ?? formControlProps?.id ?? autoGeneratedId;\n return (\n <InputGroup position=\"relative\">\n {leftIcon && (\n <InputLeftElement pointerEvents=\"none\">{leftIcon}</InputLeftElement>\n )}\n <ChakraInput\n {...props}\n id={inputId}\n placeholder=\" \" // This is needed to make the label work as expected\n type={isShowingPassword ? \"text\" : \"password\"}\n paddingRight={10}\n paddingLeft={leftIcon ? 7 : undefined}\n ref={ref}\n data-attachable\n />\n <FormLabel htmlFor={inputId} pointerEvents=\"none\">\n {label}\n </FormLabel>\n <InputRightElement width=\"fit-content\">\n <Button\n variant=\"ghost\"\n type=\"button\"\n fontWeight=\"normal\"\n size=\"sm\"\n onClick={onToggle}\n borderRadius=\"sm\"\n marginRight={1}\n isDisabled={props.disabled || props.isDisabled}\n >\n {isShowingPassword ? t(texts.hidePassword) : t(texts.showPassword)}\n </Button>\n </InputRightElement>\n </InputGroup>\n );\n },\n);\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","import { BoxProps, forwardRef, useControllableState } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { Input, createTexts, useTranslation } from \"..\";\nimport { AttachedInputs } from \"./AttachedInputs\";\nimport { CountryCodeSelect } from \"./CountryCodeSelect\";\nimport { As } from \"@chakra-ui/system\";\n\ntype CountryCodeAndPhoneNumber = {\n countryCode: string;\n nationalNumber: string;\n};\ntype PhoneNumberInputProps = Omit<BoxProps, \"onChange\"> & {\n /** The label. Defaults to a localized version of \"Phone number\" */\n label?: string;\n /** The root name.\n *\n * Please note that when specifying the name, the rendered names will be `${name}-country-code` and `${name}-phone-number`, respectively\n */\n name?: string;\n /** Callback for when the country code or phone number changes */\n onChange?: (change: CountryCodeAndPhoneNumber) => void;\n /** The optional value of the country code and phone number */\n value?: CountryCodeAndPhoneNumber;\n variant?: \"base\" | \"floating\";\n isOptional?: boolean;\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`, respectively\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 */\nexport const PhoneNumberInput = forwardRef<PhoneNumberInputProps, As>(\n (\n {\n label: externalLabel,\n name,\n value: externalValue,\n onChange: externalOnChange,\n variant,\n isOptional,\n ...boxProps\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const label =\n externalLabel ??\n (isOptional ? t(texts.phoneNumberOptional) : t(texts.phoneNumber));\n const [value, onChange] = useControllableState({\n value: externalValue,\n onChange: externalOnChange,\n defaultValue: {\n countryCode: \"+47\",\n nationalNumber: \"\",\n },\n });\n return (\n <AttachedInputs {...boxProps}>\n <CountryCodeSelect\n value={value.countryCode}\n onChange={(countryCode) =>\n onChange({\n countryCode: countryCode as string,\n nationalNumber: value.nationalNumber,\n })\n }\n name={name ? `${name}-country-code` : \"country-code\"}\n height=\"100%\"\n width=\"6.25rem\"\n variant={variant}\n />\n <Input\n ref={ref}\n type=\"tel\"\n label={label}\n value={value.nationalNumber}\n name={name ? `${name}-phone-number` : \"phone-number\"}\n onChange={(e) => {\n // Removes everything but numbers, spaces and dashes\n const strippedValue = e.target.value.replace(/[^\\d\\s-]/g, \"\");\n onChange({\n countryCode: value.countryCode,\n nationalNumber: strippedValue,\n });\n }}\n position=\"relative\"\n left=\"1px\" // Makes the borders overlap\n variant={variant}\n />\n </AttachedInputs>\n );\n },\n);\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","import React from \"react\";\nimport { BoxProps, InfoSelect, Item, createTexts, useTranslation } from \"..\";\n\nimport { getSupportedCallingCodes } from \"awesome-phonenumber\";\n\nconst prioritizedCountryCodes = [\n { key: \"+47\", value: \"+47\" },\n { key: \"+46\", value: \"+46\" },\n { key: \"+45\", value: \"+45\" },\n];\n\nconst sortedCallingCodes = getSupportedCallingCodes()\n .sort((a, b) => Number(a) - Number(b))\n .map((code) => ({\n key: `+${code}`,\n value: `+${code}`,\n }))\n .filter(\n (code) => !prioritizedCountryCodes.some((pCode) => pCode.key === code.key),\n );\nconst callingCodes = [...prioritizedCountryCodes, ...sortedCallingCodes];\n\ntype CountryCodeSelectProps = {\n value: string;\n onChange: (value: string | number) => void;\n name: string;\n width?: BoxProps[\"width\"];\n height?: BoxProps[\"height\"];\n variant?: \"base\" | \"floating\";\n};\nexport const CountryCodeSelect = (props: CountryCodeSelectProps) => {\n const { t } = useTranslation();\n\n return (\n <InfoSelect\n label={t(texts.countryCode)}\n isLabelSrOnly={true}\n items={callingCodes}\n variant={props.variant}\n {...props}\n >\n {(item) => <Item key={item.key}>{item.key}</Item>}\n </InfoSelect>\n );\n};\n\nexport default CountryCodeSelect;\n\nconst texts = createTexts({\n countryCode: {\n nb: \"Landkode\",\n nn: \"Landskode\",\n en: \"Country code\",\n sv: \"Landskod\",\n },\n});\n","import {\n Radio as ChakraRadio,\n RadioProps as ChakraRadioProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type RadioProps = Exclude<\n ChakraRadioProps,\n \"colorScheme\" | \"size\" | \"variant\"\n>;\n\n/**\n * The humble radio button.\n *\n * Specify the label as `children` and the value as `value`.\n *\n * ```tsx\n * <Radio value=\"#f00\">Red</Radio>\n * ```\n *\n * You typically want to place 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 */\nexport const Radio = forwardRef<RadioProps, \"input\">((props, ref) => {\n return <ChakraRadio {...props} ref={ref} />;\n});\n","import {\n forwardRef,\n RadioGroup as ChakraRadioGroup,\n RadioGroupProps as ChakraRadioGroupProps,\n Stack,\n StackDirection,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type RadioGroupProps = Exclude<\n ChakraRadioGroupProps,\n \"colorScheme\" | \"size\" | \"variant\"\n> & {\n direction?: StackDirection;\n};\n/**\n * Radio groups are used to group several radio buttons together.\n *\n * You can pass the common `name` prop to the `RadioGroup`, instead of to each `Radio` component.\n *\n * ```tsx\n * <RadioGroup name=\"ticket\">\n * <Radio>Economy</Radio>\n * <Radio>Business</Radio>\n * <Radio>First Class</Radio>\n * </RadioGroup>\n * ```\n *\n * By default, radio buttons show up horizontally. If you want them to show up vertically, please specify the `direction=\"column\"` prop.\n *\n * ```tsx\n * <RadioGroup name=\"ticket\" direction=\"column\">\n * <Radio>Economy</Radio>\n * <Radio>Business</Radio>\n * <Radio>First Class</Radio>\n * </RadioGroup>\n * ```\n */\nexport const RadioGroup = forwardRef<RadioGroupProps, \"div\">(\n ({ children, direction = \"row\", ...rest }, ref) => {\n return (\n <ChakraRadioGroup {...rest} ref={ref}>\n <Stack direction={direction}>{children}</Stack>\n </ChakraRadioGroup>\n );\n },\n);\n","import {\n Input as ChakraInput,\n InputProps as ChakraInputProps,\n IconButton,\n LayoutProps,\n forwardRef,\n useFormControlContext,\n} from \"@chakra-ui/react\";\nimport {\n CloseOutline24Icon,\n SearchOutline24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React, { useId } from \"react\";\nimport { FormLabel, InputGroup, InputLeftElement, InputRightElement } from \".\";\nimport { createTexts, useTranslation } from \"..\";\n\nexport type SearchInputProps = Exclude<\n ChakraInputProps,\n \"variant\" | \"size\" | \"leftIcon\" | \"rightIcon\"\n> & {\n /** Optional label. Defaults to the localized version of \"search\" */\n label?: string | React.ReactNode;\n /** Callback for when the clear button is clicked */\n onReset?: () => void;\n};\n/** Simple search input component.\n *\n * Includes a search icon, a localized label and a reset button.\n */\nexport const SearchInput = forwardRef<SearchInputProps, \"input\">(\n ({ label, onReset, ...props }, ref) => {\n const { t } = useTranslation();\n const showClearButton = onReset && Boolean(props.value);\n const formControlProps = useFormControlContext();\n const autoGeneratedId = useId();\n const inputId = props.id ?? formControlProps?.id ?? autoGeneratedId;\n\n const { outerProps, innerProps } = getOuterProps(props);\n\n return (\n <InputGroup position=\"relative\" {...outerProps}>\n <InputLeftElement pointerEvents=\"none\">\n <SearchOutline24Icon />\n </InputLeftElement>\n <ChakraInput\n paddingLeft={7}\n paddingRight={7}\n {...innerProps}\n id={inputId}\n type=\"search\"\n placeholder=\" \"\n css={{\n \"&::-webkit-search-cancel-button\": {\n WebkitAppearance: \"none\",\n },\n }}\n ref={ref}\n data-attachable\n />\n <FormLabel\n htmlFor={inputId}\n sx={{\n position: \"absolute\",\n left: \"2.6rem\",\n top: \"26.9%\",\n fontSize: \"1.13rem\",\n pointerEvents: \"none\",\n margin: 0,\n zIndex: 2,\n \"input:focus + &, input[data-has-value] + &\": {\n color: \"var(--chakra-colors-gray-600)\",\n },\n \"input[data-has-value] + &\": {\n transform: \"translateY(-40%) scale(0.9)\",\n },\n }}\n >\n {label ?? t(texts.label)}\n </FormLabel>\n {showClearButton && (\n <InputRightElement width=\"fit-content\">\n <IconButton\n variant=\"ghost\"\n type=\"button\"\n size=\"sm\"\n marginRight={1}\n aria-label={t(texts.reset)}\n icon={<CloseOutline24Icon />}\n onClick={onReset}\n />\n </InputRightElement>\n )}\n </InputGroup>\n );\n },\n);\n\nconst getOuterProps = (props: Record<string, any>) => {\n const layoutKeys = new Set([\"w, width, maxW, minW, maxWidth, minWidth\"]); // add more keys here if neccessary\n const outerProps: LayoutProps = {};\n const innerProps: Record<string, any> = {};\n\n for (const key in props) {\n if (layoutKeys.has(key)) {\n (outerProps as any)[key] = props[key];\n } else {\n (innerProps as any)[key] = props[key];\n }\n }\n\n return { outerProps, innerProps };\n};\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","import {\n Switch as ChakraSwitch,\n SwitchProps as ChakraSwitchProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport { As } from \"@chakra-ui/system\";\nimport React from \"react\";\n\nexport type SwitchProps = Omit<ChakraSwitchProps, \"colorScheme\" | \"variant\"> & {\n size?: \"sm\" | \"md\" | \"lg\";\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 use a Switch component inside of a `FormControl` with an associated `FormLabel`:\n *\n * ```tsx\n * <FormControl>\n * <FormLabel>Enable alerts?</FormLabel>\n * <Switch />\n * </FormControl>\n * ```\n *\n * Switches are available in three different sizes - `sm`, `md` and `lg`.\n *\n * ```tsx\n * <FormControl>\n * <FormLabel>Enable alerts?</FormLabel>\n * <Switch size=\"sm\" />\n * </FormControl>\n * ```\n */\nexport const Switch = forwardRef<SwitchProps, \"input\">(\n ({ size = \"md\", as, ...props }, ref) => {\n return <ChakraSwitch as={as} size={size} {...props} ref={ref} />;\n },\n);\n","import {\n FormLabel,\n forwardRef,\n Textarea as ChakraTextarea,\n TextareaProps as ChakraTextareaProps,\n useFormControlContext,\n InputGroup,\n} from \"@chakra-ui/react\";\nimport React, { useId, useLayoutEffect, useRef, useState } from \"react\";\n\nexport type TextareaProps = Exclude<ChakraTextareaProps, \"size\"> & {\n label?: string;\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: string | 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 if (labelRef.current) {\n observer.observe(labelRef.current);\n }\n\n // Initial calculation with a slight delay to ensure CSS is applied\n setTimeout(updateLabelHeight, 0);\n\n return () => {\n if (labelRef.current) {\n observer.unobserve(labelRef.current);\n }\n };\n }, [label]);\n\n return { labelRef, labelHeight };\n};\n\n/**\n * Text area that works with the `FormControl` component.\n *\n * Providing a label is optional.\n *\n * ```tsx\n * <FormControl>\n * <Textarea label=\"E-mail\" />\n * </FormControl>\n * ```\n */\nexport const Textarea = forwardRef<TextareaProps, \"textarea\">((props, ref) => {\n const {\n spacingProps,\n remainingProps: { label, ...rest },\n } = getSpacingProps(props);\n const formControlProps = useFormControlContext();\n const fallbackId = `textarea-${useId()}`;\n const inputId = props.id ?? formControlProps?.id ?? fallbackId;\n\n const { labelRef, labelHeight } = useLabelHeight(label);\n\n return (\n <InputGroup\n position=\"relative\"\n {...spacingProps}\n style={{ \"--label-height\": `${labelHeight}px` } as React.CSSProperties}\n >\n <ChakraTextarea {...rest} id={inputId} ref={ref} placeholder=\" \" />\n {label && (\n <FormLabel\n ref={labelRef}\n htmlFor={inputId}\n id={`${inputId}-label`}\n pointerEvents=\"none\"\n >\n {label}\n </FormLabel>\n )}\n </InputGroup>\n );\n});\n\nfunction getSpacingProps<T extends TextareaProps>(props: T) {\n const {\n mt,\n mr,\n mb,\n ml,\n mx,\n my,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n marginX,\n marginY,\n pt,\n pr,\n pb,\n pl,\n px,\n py,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n paddingX,\n paddingY,\n ...remainingProps\n } = props;\n return {\n spacingProps: {\n mt,\n mr,\n mb,\n ml,\n mx,\n my,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n marginX,\n marginY,\n pt,\n pr,\n pb,\n pl,\n px,\n py,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n paddingX,\n paddingY,\n },\n remainingProps,\n };\n}\n","import React from \"react\";\nimport { Box, BoxProps, useStyleConfig, forwardRef } from \"@chakra-ui/react\";\nimport { As } from \"@chakra-ui/system\";\n\nexport type StaticCardProps = BoxProps & {\n children: React.ReactNode;\n /** Defaults to \"white\" */\n colorScheme:\n | \"white\"\n | \"grey\"\n | \"green\"\n | \"orange\"\n | \"red\"\n | \"yellow\"\n | \"blue\"\n | \"darkBlue\"\n | \"darkGreen\"\n | \"darkYellow\";\n};\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 `colorScheme` prop can be used to control the color scheme 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 scheme of the card, specify the `colorScheme` prop:\n *\n * ```tsx\n * <StaticCard colorScheme=\"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\nexport const StaticCard = forwardRef<StaticCardProps, As>(\n ({ colorScheme = \"white\", children, ...props }, ref) => {\n const styles = useStyleConfig(\"StaticCard\", {\n colorScheme,\n });\n\n return (\n <Box __css={styles} {...props} ref={ref}>\n {children}\n </Box>\n );\n },\n);\n","import React from \"react\";\nimport { Box, BoxProps, forwardRef, useStyleConfig } from \"@chakra-ui/react\";\nimport { As } from \"@chakra-ui/system\";\n\ntype PressableCardProps = BoxProps & {\n /** Defaults to \"base\" */\n variant?: \"floating\" | \"accent\" | \"base\";\n};\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 \"base\".\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 schemes, use the `StaticCard` component.\n *\n * @see StaticCard\n */\n\nexport const PressableCard = forwardRef<PressableCardProps, As>(\n ({ children, variant = \"floating\", ...props }, ref) => {\n const styles = useStyleConfig(\"PressableCard\", {\n variant,\n });\n\n return (\n <Box __css={styles} {...props} ref={ref}>\n {children}\n </Box>\n );\n },\n);\n","import {\n AccordionButton,\n AccordionIcon,\n AccordionItem,\n AccordionItemProps,\n AccordionPanel,\n Box,\n Flex,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { Accordion, AccordionProps } from \"./Accordion\";\n\ntype HeadingLevel = \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\ntype ExpandableProps = Omit<\n AccordionProps,\n \"title\" | \"index\" | \"defaultIndex\" | \"onChange\"\n> & {\n /** The hidden content */\n children: React.ReactNode;\n /** The title that's shown inside the toggle button */\n title: React.ReactNode;\n /** The semantic heading level of the toggle button */\n headingLevel?: HeadingLevel;\n /**\n * Icon shown to the left of the title\n *\n * Make sure it's the 24px outlined version of the icon\n */\n leftIcon?: React.ReactNode;\n\n /** Controlled value of whether the accordion is open or not */\n isOpen?: boolean;\n /** Default value of when the accordion is open or not */\n defaultOpen?: boolean;\n /** Callback for when the expandable opens or closes */\n onChange?: (isOpen: boolean) => void;\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=\"base\">\n * <Text>MORE! 🎉</Text>\n * </Expandable>\n * ```\n */\nexport const Expandable = ({\n children,\n headingLevel,\n title,\n leftIcon,\n defaultOpen,\n isOpen,\n onChange = () => {},\n ...rest\n}: ExpandableProps) => {\n return (\n <Accordion\n {...rest}\n index={isOpen ? 0 : undefined}\n defaultIndex={defaultOpen ? 0 : undefined}\n onChange={(expandedIndex) => onChange(expandedIndex === 0)}\n >\n <ExpandableItem\n headingLevel={headingLevel}\n title={title}\n leftIcon={leftIcon}\n >\n {children}\n </ExpandableItem>\n </Accordion>\n );\n};\n\nexport type ExpandableItemProps = Omit<AccordionItemProps, \"title\"> & {\n /** The hidden content */\n children: React.ReactNode;\n /** The title that's shown inside the toggle button */\n title: React.ReactNode;\n /** The semantic heading level of the toggle button */\n headingLevel?: HeadingLevel;\n /**\n * Icon shown to the left of the title\n *\n * Make sure it's the 24px outlined version of the icon\n */\n leftIcon?: React.ReactNode;\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 title=\"Is Spor easy?\" headingLevel=\"h3\">\n * Yes\n * </ExpandableItem>\n * <ExpandableItem title=\"Do you love it?\" headingLevel=\"h3\">\n * 🥰\n * </ExpandableItem>\n * </Accordion>\n * ```\n *\n * If you need even more control, you can put together your own expandable with the `Accordion`, `AccordionItem`, `AccordionButton`, `AccordionIcon` and `AccordionPanel` components.\n */\nexport const ExpandableItem = ({\n children,\n title,\n headingLevel = \"h3\",\n leftIcon,\n ...rest\n}: ExpandableItemProps) => {\n warnAboutMismatchingIcon({ icon: leftIcon });\n return (\n <AccordionItem {...rest}>\n <Box as={headingLevel}>\n <AccordionButton>\n <Flex alignItems=\"center\">\n {leftIcon && <Box marginRight={1}>{leftIcon}</Box>}\n {title}\n </Flex>\n <AccordionIcon />\n </AccordionButton>\n </Box>\n <AccordionPanel>{children}</AccordionPanel>\n </AccordionItem>\n );\n};\n\ntype WarnAboutMismatchingIcon = {\n icon: any;\n};\nconst warnAboutMismatchingIcon = ({ icon }: 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","import {\n Box,\n Flex,\n useDisclosure,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport { CloseFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { IconButton } from \"../button\";\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { AlertIcon } from \"./AlertIcon\";\nimport { BaseAlert, BaseAlertProps } from \"./BaseAlert\";\n\ntype ClosableAlertProps = BaseAlertProps & {\n /** Callback for when the close button is clicked */\n onClose?: () => void;\n};\n/**\n * A closable alert component.\n *\n * A regular alert with a close button that can be used to dismiss the alert.\n *\n * ```tsx\n * <ClosableAlert variant=\"info\" title=\"Nice to know\">\n * <Text>Some info here</Text>\n * </ClosableAlert>\n * ```\n *\n * You can also pass in an optional `onClose` callback, for things like analytics.\n *\n * ```tsx\n * <ClosableAlert\n * variant=\"info\"\n * title=\"Nice to know\"\n * onClose={() => analytics.track('alert-closed')}\n * >\n * <Text>Some info here</Text>\n * </ClosableAlert>\n */\nexport const ClosableAlert = ({\n variant,\n title,\n children,\n onClose: externalOnClose = () => {},\n ...boxProps\n}: ClosableAlertProps) => {\n const { isOpen, onClose } = useDisclosure({ defaultIsOpen: true });\n const styles = useMultiStyleConfig(\"Alert\", { variant });\n const { t } = useTranslation();\n if (!isOpen) {\n return null;\n }\n\n const handleClose = () => {\n externalOnClose();\n onClose();\n };\n\n return (\n <BaseAlert variant={variant} {...boxProps}>\n <IconButton\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClose}\n icon={<CloseFill18Icon />}\n aria-label={t(texts.close)}\n sx={styles.closeButton}\n />\n <AlertIcon variant={variant} />\n <Flex direction=\"column\" gap={title ? 2 : undefined} textAlign=\"left\">\n {title && <Box fontWeight=\"bold\">{title}</Box>}\n <Box marginRight={1}>{children}</Box>\n </Flex>\n </BaseAlert>\n );\n};\n\nconst texts = createTexts({\n close: {\n nb: \"Lukk\",\n nn: \"Lukk\",\n sv: \"Dölj\",\n en: \"Close\",\n },\n});\n","import {\n Box,\n Center,\n ButtonProps as ChakraButtonProps,\n Flex,\n forwardRef,\n SpaceProps,\n useButtonGroup,\n useStyleConfig,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { ColorInlineLoader } from \"../loader\";\n\nexport type ButtonProps = Exclude<\n ChakraButtonProps,\n \"colorScheme\" | \"size\" | \"variant\"\n> & {\n /**\n * The size of the button.\n *\n * Defaults to \"md\"\n * */\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n /** The different variants of a button\n *\n * Defaults to \"primary\".\n *\n * \"control\" is deprecated, and will be removed in a future version\n */\n variant?:\n | \"control\"\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"ghost\"\n | \"floating\";\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 */\nexport const Button = forwardRef<ButtonProps, \"button\">((props, ref) => {\n const {\n as = \"button\",\n type = \"button\",\n fontWeight,\n size,\n children,\n isLoading,\n isDisabled,\n leftIcon,\n rightIcon,\n sx,\n ...rest\n } = props;\n const ariaLabel = useCorrectAriaLabel(props);\n const buttonGroup = useButtonGroup();\n const finalSize = (size ?? buttonGroup?.size ?? \"md\") as Required<\n ButtonProps[\"size\"]\n >;\n const styles = useStyleConfig(\"Button\", {\n ...buttonGroup,\n ...rest,\n size: finalSize,\n leftIcon,\n rightIcon,\n });\n\n // We want to explicitly allow to override the fontWeight prop\n if (fontWeight) {\n styles.fontWeight = fontWeight;\n }\n\n return (\n <Box\n {...rest}\n as={as}\n type={type}\n sx={{ ...styles, ...sx }}\n ref={ref}\n aria-label={ariaLabel}\n aria-busy={isLoading}\n disabled={isDisabled || isLoading}\n position=\"relative\"\n fontFamily={\"Vy Sans\"}\n >\n {isLoading && (\n <Center position=\"absolute\" right={0} left={0} top={1} bottom={0}>\n <ColorInlineLoader\n maxWidth={getLoaderWidth(finalSize)}\n width=\"80%\"\n marginX={2}\n marginY={2}\n />\n </Center>\n )}\n <Flex\n gap={1}\n flex={1}\n alignItems=\"center\"\n justifyContent={rightIcon ? \"space-between\" : \"center\"}\n visibility={isLoading ? \"hidden\" : \"visible\"}\n aria-hidden={isLoading}\n >\n <Flex gap={1} alignItems=\"center\">\n {leftIcon}\n <Box\n visibility={isLoading ? \"hidden\" : \"visible\"}\n whiteSpace=\"normal\"\n textAlign=\"center\"\n >\n {children}\n </Box>\n </Flex>\n {rightIcon}\n </Flex>\n </Box>\n );\n});\n\nfunction getLoaderWidth(size: Required<ButtonProps[\"size\"]>) {\n switch (size) {\n case \"xs\":\n return \"4rem\";\n case \"sm\":\n return \"4rem\";\n case \"md\":\n return \"5rem\";\n case \"lg\":\n default:\n return \"6rem\";\n }\n}\n\nfunction useCorrectAriaLabel(props: ButtonProps): string {\n const { t } = useTranslation();\n if (props.isLoading) {\n return String(props.loadingText) ?? t(texts.loadingText);\n }\n return props[\"aria-label\"] as string;\n}\n\nconst texts = createTexts({\n loadingText: {\n nb: \"Laster…\",\n nn: \"Lastar…\",\n en: \"Loading…\",\n sv: \"Laddar…\",\n },\n});\n","import 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 } from \"@chakra-ui/react\";\nimport { inlineLoaderColorData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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 {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n {() => <Lottie animationData={inlineLoaderColorData} />}\n </ClientOnly>\n </Box>\n </Center>\n );\n};\n","import React from \"react\";\nimport { useHydrated } from \"./useHydrated\";\n\ntype ClientOnlyProps = {\n /** A function that renders the client-side only component */\n children: () => React.ReactNode;\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 return <>{isHydrated ? children() : fallback}</>;\n};\n","import { 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 let [hydrated, setHydrated] = useState(() => !hydrating);\n\n useEffect(function hydrate() {\n hydrating = false;\n setHydrated(true);\n }, []);\n\n return hydrated;\n}\n","import { useLottie } from \"lottie-react\";\nimport React from \"react\";\n\n/**\n * A wrapper around Lottie to make it tree-shakeable for SSR.\n */\nexport default function Lottie({ animationData }: { animationData: any }) {\n const { View } = useLottie({ animationData, loop: true });\n return <>{View}</>;\n}\n","import { Box, BoxProps, Center } from \"@chakra-ui/react\";\nimport { spinnerColorData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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\n ...props\n}: SpinnerProps) => {\n return (\n <Center flexDirection=\"column\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n {() => <Lottie animationData={spinnerColorData} />}\n </ClientOnly>\n </Box>\n {children && (\n <Box marginTop={3} fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Center>\n );\n};\n","import { Box, BoxProps } from \"@chakra-ui/react\";\nimport { contentLoaderData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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\n */\nexport const ContentLoader = ({ children, ...props }: ContentLoaderProps) => {\n return (\n <Box {...props}>\n <Box maxWidth=\"140px\" marginX=\"auto\">\n <ClientOnly>\n {() => <Lottie animationData={contentLoaderData} />}\n </ClientOnly>\n </Box>\n {children && (\n <Box textAlign=\"center\" fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Box>\n );\n};\n","import { Box, BoxProps, Center } from \"@chakra-ui/react\";\nimport { fullScreenLoaderWhiteData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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 height=\"100%\" background=\"darkTeal\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n {() => <Lottie animationData={fullScreenLoaderWhiteData} />}\n </ClientOnly>\n </Box>\n </Center>\n );\n};\n","import { Box, BoxProps, Center } from \"@chakra-ui/react\";\nimport { inlineLoaderDarkData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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 {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n {() => <Lottie animationData={inlineLoaderDarkData} />}\n </ClientOnly>\n </Box>\n </Center>\n );\n};\n","import { spinnerDarkData, spinnerLightData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\nimport { Box, BoxProps, Center, useColorMode } 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\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>{() => <Lottie animationData={spinnerData} />}</ClientOnly>\n </Box>\n {children && (\n <Box marginTop={3} fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Center>\n );\n};\n","import { Box, BoxProps, Center } from \"@chakra-ui/react\";\nimport { fullScreenLoaderBlackData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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 height=\"100%\" background=\"white\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n {() => <Lottie animationData={fullScreenLoaderBlackData} />}\n </ClientOnly>\n </Box>\n </Center>\n );\n};\n","import { Box, BoxProps, Center } from \"@chakra-ui/react\";\nimport { inlineLoaderLightData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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 {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n {() => <Lottie animationData={inlineLoaderLightData} />}\n </ClientOnly>\n </Box>\n </Center>\n );\n};\n","import { Box, BoxProps, Center } from \"@chakra-ui/react\";\nimport { spinnerLightData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n {() => <Lottie animationData={spinnerLightData} />}\n </ClientOnly>\n </Box>\n {children && (\n <Box marginTop={3} fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Center>\n );\n};\n","import { Box, BoxProps, Text, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { useProgressBar } from \"react-aria\";\nimport { createTexts, useTranslation } from \"..\";\nimport { useRotatingLabel } from \"./useRotatingLabel\";\n\ntype ProgressBarProps = BoxProps & {\n /** The percentage of progress made.\n *\n * The value must be between 0 and 100 */\n value: number;\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\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 */\nexport const ProgressBar = ({\n value,\n label,\n labelRotationDelay = 5000,\n height = \"0.5rem\",\n width = \"100%\",\n \"aria-label\": ariaLabel,\n isActive = true,\n ...rest\n}: ProgressBarProps) => {\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.label(value)),\n });\n const styles = useMultiStyleConfig(\"ProgressBar\", { isActive });\n return (\n <>\n <Box\n {...progressBarProps}\n title={t(texts.label(value))}\n __css={styles.container}\n {...rest}\n >\n <Box width={width} __css={styles.background}>\n <Box\n __css={styles.progress}\n height={height}\n width={isActive ? `${value}%` : \"100%\"}\n />\n </Box>\n {currentLoadingText && (\n <Text sx={styles.description} {...labelProps}>\n {currentLoadingText}\n </Text>\n )}\n </Box>\n </>\n );\n};\n\nconst texts = createTexts({\n label: (value) => ({\n nb: `${value}% ferdig`,\n nn: `${value}% ferdig`,\n sv: `${value}% klart`,\n en: `${value}% done`,\n }),\n});\n","import { useInterval } from \"@chakra-ui/react\";\nimport { useMemo, useState } from \"react\";\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","import { Box, BoxProps, Text } from \"@chakra-ui/react\";\nimport React, { useId, useRef } from \"react\";\nimport { useProgressBar } from \"react-aria\";\nimport { createTexts, useTranslation } from \"..\";\nimport { useRotatingLabel } from \"./useRotatingLabel\";\n\ntype ProgressLoaderProps = BoxProps & {\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 * 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 */\nexport const ProgressLoader = ({\n value,\n label,\n labelRotationDelay = 5000,\n \"aria-label\": ariaLabel,\n width,\n ...rest\n}: ProgressLoaderProps) => {\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 pathRef = useRef<SVGPathElement>(null);\n const progressPathLength = pathRef.current?.getTotalLength() ?? 0;\n const progress = ((value - 100) / 100) * progressPathLength;\n const id = useId();\n return (\n <Box {...progressBarProps} minWidth=\"100px\" width={width} {...rest}>\n <Box as=\"svg\" viewBox=\"0 0 246 78\" fill=\"none\">\n <Box\n as=\"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 <Box\n as=\"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 stroke=\"coralGreen\"\n strokeWidth=\"13.6469\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Box\n as=\"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 stroke=\"greenHaze\"\n strokeWidth=\"13.6469\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeDasharray={progressPathLength}\n strokeDashoffset={progress}\n transition=\"stroke-dashoffset .2s ease-out\"\n ref={pathRef as any}\n />\n <Box\n as=\"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 </Box>\n {currentLoadingText && (\n <Text\n textAlign=\"center\"\n marginTop={2}\n fontWeight=\"bold\"\n {...labelProps}\n >\n {currentLoadingText}\n </Text>\n )}\n </Box>\n );\n};\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 {\n BoxProps,\n forwardRef,\n Skeleton as ChakraSkeleton,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type SkeletonProps = BoxProps & {\n isLoaded?: boolean;\n};\n/**\n * Skeleton renders a loading animation for a given box. It works great as a placeholder to avoid layout shifts.\n */\nexport const Skeleton = forwardRef<SkeletonProps, \"div\">((props, ref) => (\n <ChakraSkeleton\n {...props}\n ref={ref}\n aria-busy=\"true\"\n aria-hidden=\"true\"\n role=\"alert\"\n />\n));\n","import {\n BoxProps,\n SkeletonCircle as ChakraSkeletonCircle,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type SkeletonCircleProps = BoxProps;\n/**\n * SkeletonCircle renders a loading animation for a given circle. It works great as a placeholder to avoid layout shifts.\n */\nexport const SkeletonCircle = (props: SkeletonCircleProps) => (\n <ChakraSkeletonCircle boxSize={6} borderRadius=\"50%\" {...props} />\n);\n","import {\n SkeletonText as ChakraSkeletonText,\n SkeletonTextProps as ChakraSkeletonTextProps,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type SkeletonTextProps = ChakraSkeletonTextProps;\n\n/**\n * SkeletonText renders a loading animation for a given text. It works great as a placeholder to avoid layout shifts.\n */\nexport const SkeletonText = (props: SkeletonTextProps) => (\n <ChakraSkeletonText boxSize={6} {...props} />\n);\n","import {\n ButtonGroup as ChakraButtonGroup,\n ButtonGroupProps as ChakraButtonGroupProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type ButtonGroupProps = ChakraButtonGroupProps;\n/**\n * Group buttons together with a `ButtonGroup`!\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 * You can specify the size of all buttons in a group with the `size` prop. You can also set the same variant across all buttons with the `variant` prop.\n *\n * ```tsx\n * <ButtonGroup variant=\"secondary\" size=\"md\">\n * <Button>Open</Button>\n * <Button>Save</Button>\n * </ButtonGroup>\n * ```\n *\n * Finally, you can join several buttons together with the `isAttached` prop.\n *\n * ```tsx\n * <ButtonGroup variant=\"secondary\" size=\"md\" isAttached>\n * <Button>Open</Button>\n * <IconButton>\n * <SaveIcon aria-label=\"Save\"/>\n * </IconButton>\n * </ButtonGroup>\n * ```\n */\nexport const ButtonGroup = forwardRef<ButtonGroupProps, \"div\">((props, ref) => (\n <ChakraButtonGroup {...props} ref={ref} />\n));\n","import { forwardRef } from \"@chakra-ui/react\";\nimport {\n CloseFill18Icon,\n CloseFill24Icon,\n CloseFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\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<CloseButtonProps, \"button\">(\n ({ size = \"sm\", ...props }, ref) => {\n const { t } = useTranslation();\n return (\n <IconButton\n ref={ref}\n variant=\"ghost\"\n icon={getIcon(size)}\n size={size}\n aria-label={props[\"aria-label\"] || t(texts.close)}\n {...props}\n />\n );\n },\n);\n\nconst getIcon = (size: CloseButtonProps[\"size\"]) => {\n switch (size) {\n case \"xs\":\n case \"sm\":\n return <CloseFill18Icon />;\n case \"md\":\n return <CloseFill24Icon />;\n case \"lg\":\n return <CloseFill30Icon />;\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 IconButtonProps as ChakraIconButtonProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ColorSpinner } from \"..\";\nimport { As } from \"@chakra-ui/system\";\n\nexport type IconButtonProps = Omit<ChakraIconButtonProps, \"variant\"> & {\n /** The button variant.\n *\n * \"control\" is deprecated\n */\n variant:\n | \"control\"\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"ghost\"\n | \"floating\";\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 * - `control`: This button is used for ticket controls only.\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<IconButtonProps, As>(\n ({ ...props }, ref) => (\n <ChakraIconButton\n title={props[\"aria-label\"]}\n {...props}\n spinner={\n <ColorSpinner width=\"80%\" height=\"80%\" marginX={1} marginTop={1} />\n }\n ref={ref}\n />\n ),\n);\n","import {\n Box,\n BoxProps,\n ComponentWithAs,\n forwardRef,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport { motion } from \"framer-motion\";\nimport React, { useEffect } from \"react\";\n\nconst MotionBox = motion(Box);\n\ntype FloatingActionButtonProps = BoxProps & {\n variant?: \"accent\" | \"base\" | \"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 FloatingActionButtonProps,\n ComponentWithAs<\"a\" | \"button\">\n>(\n (\n {\n as,\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 ? externalIsTextVisible : false,\n );\n const scrollDirection = useScrollDirection();\n useEffect(() => {\n if (externalIsTextVisible !== undefined) {\n return;\n }\n const id = window.setTimeout(\n () => setIsTextVisible(scrollDirection !== \"down\"),\n 1000,\n );\n return () => window.clearTimeout(id);\n }, [scrollDirection, externalIsTextVisible]);\n\n useEffect(() => {\n setIsTextVisible(!!externalIsTextVisible);\n }, [externalIsTextVisible]);\n\n const style = useMultiStyleConfig(\"FloatingActionButton\", {\n variant,\n isTextVisible,\n placement,\n });\n return (\n <MotionBox\n __css={style.container}\n aria-label={children}\n ref={ref}\n {...props}\n >\n <Box __css={style.icon}>{icon}</Box>\n <MotionBox\n animate={isTextVisible ? \"show\" : \"hide\"}\n initial={externalIsTextVisible ? \"show\" : \"hide\"}\n variants={{\n show: {\n opacity: 1,\n width: \"auto\",\n visibility: \"visible\",\n },\n hide: {\n opacity: 0,\n width: 0,\n visibility: \"hidden\",\n },\n }}\n __css={style.text}\n >\n {children}\n </MotionBox>\n </MotionBox>\n );\n },\n);\n\ntype ScrollDirection = \"up\" | \"down\" | null;\nconst useScrollDirection = () => {\n const [scrollDirection, setScrollDirection] =\n React.useState<ScrollDirection>(null);\n const lastScrollPosition = React.useRef(\n typeof window !== \"undefined\" ? window.scrollY : 0,\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","import {\n AltTransportOutline24Icon,\n ErrorOutline24Icon,\n InformationOutline24Icon,\n SuccessOutline24Icon,\n WarningOutline24Icon,\n WarningFill24Icon,\n ServiceFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { BaseAlertProps } from \"./BaseAlert\";\n\ntype AlertIconProps = { variant: BaseAlertProps[\"variant\"] };\n/**\n * Internal component that shows the correct icon for the alert\n */\nexport const AlertIcon = ({ variant }: AlertIconProps) => {\n const Icon = getIcon(variant);\n const { t } = useTranslation();\n return (\n <Icon\n flexShrink={0}\n aria-label={t(texts[variant])}\n marginRight={1}\n color=\"darkGrey\"\n />\n );\n};\n\nconst getIcon = (variant: BaseAlertProps[\"variant\"]) => {\n switch (variant) {\n case \"info\":\n return InformationOutline24Icon;\n case \"success\":\n return SuccessOutline24Icon;\n case \"warning\":\n return WarningOutline24Icon;\n case \"alt-transport\":\n return AltTransportOutline24Icon;\n case \"error\":\n return ErrorOutline24Icon;\n case \"global-deviation\":\n return WarningFill24Icon;\n case \"service\":\n return ServiceFill24Icon;\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 warning: {\n nb: \"Advarsel\",\n nn: \"Advarsel\",\n sv: \"Varning\",\n en: \"Warning\",\n },\n error: {\n nb: \"Feil\",\n nn: \"Feil\",\n sv: \"Error\",\n en: \"Error\",\n },\n \"alt-transport\": {\n nb: \"Alternativ transport\",\n nn: \"Alternativ transport\",\n sv: \"Alternativ transport\",\n en: \"Alternative transport\",\n },\n service: {\n nb: \"Driftsmelding\",\n nn: \"Driftsmelding\",\n sv: \"Servicemeddelande\",\n en: \"Service message\",\n },\n \"global-deviation\": {\n nb: \"Trafikkmelding\",\n nn: \"Trafikkmelding\",\n sv: \"Trafikmeddelande\",\n en: \"Traffic announcement\",\n },\n});\n","import { Box, BoxProps, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type BaseAlertProps = BoxProps & {\n /** The color scheme and icon of the alert */\n variant:\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"alt-transport\"\n | \"error\"\n | \"service\"\n | \"global-deviation\";\n /** The body content of the alert */\n children: React.ReactNode;\n /** The title of the alert */\n title?: string;\n};\n\n/**\n * A base alert box component. Should only be composed by other alert components.\n */\nexport const BaseAlert = ({\n variant,\n children,\n ...boxProps\n}: BaseAlertProps) => {\n const styles = useMultiStyleConfig(\"Alert\", { variant });\n return (\n <Box __css={styles.container} {...boxProps}>\n {children}\n </Box>\n );\n};\n","import {\n Accordion,\n AccordionButton,\n AccordionIcon,\n AccordionItem,\n AccordionPanel,\n Box,\n Flex,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { AlertIcon } from \"./AlertIcon\";\nimport { BaseAlert, BaseAlertProps } from \"./BaseAlert\";\n\ntype ExpandableAlertProps = BaseAlertProps & {\n /** The title string */\n title: string;\n /** Callback for when the expandable panel is opened or closed */\n onToggle?: (isOpen: boolean) => void;\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};\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 = ({\n variant,\n children,\n title,\n headingLevel = \"h3\",\n defaultOpen = false,\n onToggle = () => {},\n ...boxProps\n}: ExpandableAlertProps) => {\n const styles = useMultiStyleConfig(\"AlertExpandable\", { variant });\n return (\n <BaseAlert variant={variant} {...boxProps} paddingX={0} paddingY={0}>\n <Accordion\n onChange={(expandedIndex) => onToggle(expandedIndex === 0)}\n defaultIndex={defaultOpen ? 0 : -1}\n allowToggle\n flexGrow=\"1\"\n >\n <AccordionItem sx={styles.accordion}>\n <AccordionButton sx={styles.container}>\n <Flex\n justifyContent=\"space-between\"\n alignItems=\"center\"\n flexGrow=\"1\"\n >\n <Flex as={headingLevel} alignItems=\"center\">\n <AlertIcon variant={variant} />\n\n <Box\n as=\"span\"\n sx={{\n // Truncate the title to one line\n display: \"-webkit-box\",\n overflow: \"hidden\",\n WebkitLineClamp: \"1\",\n WebkitBoxOrient: \"vertical\",\n }}\n color={variant === \"service\" ? \"white\" : \"darkGrey\"}\n >\n {title}\n </Box>\n </Flex>\n <AccordionIcon\n color={variant === \"service\" ? \"white\" : \"darkGrey\"}\n />\n </Flex>\n </AccordionButton>\n <AccordionPanel color={variant === \"service\" ? \"white\" : \"darkGrey\"}>\n {children}\n </AccordionPanel>\n </AccordionItem>\n </Accordion>\n </BaseAlert>\n );\n};\n","import React from \"react\";\nimport { AlertIcon } from \"./AlertIcon\";\nimport { BaseAlert, BaseAlertProps } from \"./BaseAlert\";\nimport { Box, Flex } from \"@chakra-ui/react\";\n\ntype StaticAlertProps = BaseAlertProps;\n\n/**\n * A static alert component.\n *\n * This alert component cannot be closed, nor dismissed.\n *\n * ```tsx\n * <StaticAlert variant=\"info\" title=\"Nice to know\">\n * Thomas the Train was originally only a wooden toy made for the creator’s son.\n * </StaticAlert>\n * ```\n */\nexport const StaticAlert = ({\n children,\n title,\n ...props\n}: StaticAlertProps) => {\n return (\n <BaseAlert {...props}>\n <AlertIcon variant={props.variant} />\n <Flex direction=\"column\" gap={title ? 2 : undefined} textAlign=\"left\">\n {title && <Box fontWeight=\"bold\">{title}</Box>}\n <Box>{children}</Box>\n </Flex>\n </BaseAlert>\n );\n};\n","import {\n Accordion,\n AccordionButton,\n AccordionIcon,\n AccordionItem,\n AccordionPanel,\n Box,\n Flex,\n Stack,\n Text,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { AlertIcon } from \"./AlertIcon\";\nimport { BaseAlert, BaseAlertProps } from \"./BaseAlert\";\nimport { createTexts, useTranslation } from \"../i18n\";\n\ntype ServiceAlertProps = BaseAlertProps & {\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 /** Callback for when the expandable panel is opened or closed */\n onToggle?: (isOpen: boolean) => void;\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 */\nexport const ServiceAlert = ({\n variant = \"service\",\n children,\n title,\n notification,\n contentWidth = \"container.md\",\n headingLevel = \"h3\",\n defaultOpen = false,\n onToggle = () => {},\n ...boxProps\n}: ServiceAlertProps) => {\n const { t } = useTranslation();\n const styles = useMultiStyleConfig(\"AlertService\", { variant });\n return (\n <BaseAlert\n variant={variant}\n {...boxProps}\n paddingX={0}\n paddingY={0}\n sx={styles.outerBox}\n >\n <Accordion\n onChange={(expandedIndex) => onToggle(expandedIndex === 0)}\n defaultIndex={defaultOpen ? 0 : -1}\n allowToggle\n flexGrow={1}\n sx={{ outline: \"none\" }}\n variant={variant}\n >\n <AccordionItem>\n <AccordionButton sx={styles.container}>\n <Stack\n flexDirection=\"row\"\n justifyContent=\"center\"\n width=\"100%\"\n paddingX={2}\n >\n <Flex\n justifyContent=\"space-between\"\n alignItems=\"center\"\n flexGrow={1}\n maxWidth={contentWidth}\n >\n <Flex as={headingLevel} alignItems=\"center\">\n <AlertIcon variant={variant} />\n\n <Box\n as=\"span\"\n sx={{\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 </Box>\n </Flex>\n\n <Flex alignItems=\"center\">\n {notification && (\n <Text sx={styles.notificationText}>\n {t(texts.notification(notification))}\n </Text>\n )}\n\n <AccordionIcon />\n </Flex>\n </Flex>\n </Stack>\n </AccordionButton>\n\n <AccordionPanel sx={styles.serviceMessageContent}>\n <Stack flexDirection=\"row\" justifyContent=\"center\" width=\"100%\">\n <Stack\n justifyContent=\"center\"\n alignItems=\"center\"\n flexGrow={1}\n maxWidth={contentWidth}\n flexFlow=\"column\"\n gap={2}\n sx={{\n p: {\n padding: \"0.8rem 0\",\n borderBottom: \"0.08rem solid\",\n borderColor:\n variant === \"global-deviation\"\n ? \"blackAlpha.400\"\n : \"whiteAlpha.400\",\n },\n \"p:last-child\": {\n borderBottom: \"none\",\n },\n }}\n >\n {children}\n </Stack>\n </Stack>\n </AccordionPanel>\n </AccordionItem>\n </Accordion>\n </BaseAlert>\n );\n};\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});\n","import {\n Breadcrumb as ChakraBreadcrumb,\n BreadcrumbItem as ChakraBreadcrumbItem,\n BreadcrumbLink as ChakraBreadcrumbLink,\n BreadcrumbProps as ChakraBreadcrumbProps,\n useColorModeValue,\n} from \"@chakra-ui/react\";\nimport { DropdownRightFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\n\ntype BreadcrumbProps = Omit<ChakraBreadcrumbProps, \"variant\"> & {\n variant?: \"base\" | \"ghost\";\n};\n/**\n * A breadcrumb component.\n *\n * Used to create customizable breadcrumbs.\n *\n * ```tsx\n * <Breadcrumb>\n * <BreadcrumbItem>\n * <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\n * </BreadcrumbItem>\n * <BreadcrumbItem isCurrentPage={true}>\n * <BreadcrumbLink href=\"/about\">About</BreadcrumbLink>\n * </BreadcrumbItem>\n * </Breadcrumb>\n * ```\n */\nexport const Breadcrumb = (props: BreadcrumbProps) => {\n const iconColor = useColorModeValue(\"blackAlpha.400\", \"whiteAlpha.400\");\n return (\n <ChakraBreadcrumb\n separator={<DropdownRightFill18Icon color={iconColor} />}\n {...props}\n />\n );\n};\n\nexport const BreadcrumbItem = ChakraBreadcrumbItem;\nexport const BreadcrumbLink = ChakraBreadcrumbLink;\n","export { Time } from \"@internationalized/date\";\nexport * from \"./DatePicker\";\nexport * from \"./DateRangePicker\";\nexport * from \"./TimePicker\";\n","import {\n Box,\n BoxProps,\n FocusLock,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverBody,\n PopoverContent,\n PopoverTrigger,\n Portal,\n InputGroup,\n ResponsiveValue,\n useFormControlContext,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport { DateValue } from \"@internationalized/date\";\nimport React, { ReactNode, forwardRef, useId, useRef } from \"react\";\nimport { AriaDatePickerProps, I18nProvider, useDatePicker } from \"react-aria\";\nimport { useDatePickerState } from \"react-stately\";\nimport { FormErrorMessage } from \"..\";\nimport { Calendar } from \"./Calendar\";\nimport { CalendarTriggerButton } from \"./CalendarTriggerButton\";\nimport { DateField } from \"./DateField\";\nimport { StyledField } from \"./StyledField\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype DatePickerProps = Omit<AriaDatePickerProps<DateValue>, \"onChange\"> &\n Pick<BoxProps, \"minHeight\" | \"width\"> & {\n variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\n name?: string;\n showYearNavigation?: boolean;\n withPortal?: boolean;\n onChange?: (value: DateValue | null) => void;\n };\n\n/**\n * A date picker component.\n *\n * There are three different variants – `base`, `floating` and `ghost`.\n *\n * ```tsx\n * <DatePicker label=\"Dato\" variant=\"base\" />\n * ```\n */\n\nexport const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n variant,\n errorMessage,\n minHeight,\n showYearNavigation,\n withPortal = true,\n width = \"auto\",\n ...props\n },\n externalRef,\n ) => {\n const formControlProps = useFormControlContext();\n const state = useDatePickerState({\n ...props,\n shouldCloseOnSelect: true,\n errorMessage,\n isRequired: props.isRequired ?? formControlProps?.isRequired,\n validationState: formControlProps?.isInvalid ? \"invalid\" : \"valid\",\n });\n const internalRef = useRef<HTMLDivElement>(null);\n const ref = externalRef ?? internalRef;\n const {\n labelProps,\n fieldProps,\n buttonProps,\n dialogProps,\n calendarProps,\n errorMessageProps,\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 styles = useMultiStyleConfig(\"Datepicker\", { variant });\n const locale = useCurrentLocale();\n\n const onFieldClick = () => {\n state.setOpen(true);\n };\n\n const popoverContent = (\n <PopoverContent color=\"darkGrey\" sx={styles.calendarPopover}>\n <PopoverArrow sx={styles.arrow} />\n <PopoverBody>\n <FocusLock>\n <Calendar\n {...calendarProps}\n variant={variant}\n showYearNavigation={showYearNavigation}\n />\n </FocusLock>\n </PopoverBody>\n </PopoverContent>\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 <Popover\n {...dialogProps}\n isOpen={state.isOpen}\n onOpen={state.open}\n onClose={state.close}\n flip={false}\n >\n <InputGroup\n display=\"inline-flex\"\n id={inputGroupId}\n aria-labelledby={labelId}\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 <PopoverTrigger>\n <CalendarTriggerButton\n variant={variant}\n ref={ref}\n isDisabled={props.isDisabled}\n ariaLabelledby={labelId}\n {...buttonProps}\n />\n </PopoverTrigger>\n <DateField\n label={props.label}\n labelProps={labelProps}\n labelId={labelId}\n name={props.name}\n {...fieldProps}\n />\n </StyledField>\n </PopoverAnchor>\n </InputGroup>\n <FormErrorMessage {...errorMessageProps}>\n {errorMessage as ReactNode}\n </FormErrorMessage>\n {state.isOpen && !props.isDisabled && withPortal && (\n <Portal>{popoverContent}</Portal>\n )}\n {state.isOpen && !props.isDisabled && !withPortal && popoverContent}\n </Popover>\n </Box>\n </I18nProvider>\n );\n },\n);\n","import { Box, ResponsiveValue } from \"@chakra-ui/react\";\nimport { DateValue, createCalendar } from \"@internationalized/date\";\nimport React from \"react\";\nimport {\n CalendarProps as ReactAriaCalendarProps,\n useCalendar,\n} from \"react-aria\";\nimport { useCalendarState } from \"react-stately\";\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { CalendarHeader } from \"./CalendarHeader\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype CalendarProps = ReactAriaCalendarProps<DateValue> & {\n showYearNavigation?: boolean;\n variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\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\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}>\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","import { endOfMonth, getWeeksInMonth } from \"@internationalized/date\";\nimport React from \"react\";\nimport { AriaCalendarGridProps, useCalendarGrid } from \"react-aria\";\nimport { CalendarState, RangeCalendarState } from \"react-stately\";\nimport { Language, useTranslation } from \"../i18n\";\nimport { Text } from \"../typography\";\nimport { CalendarCell } from \"./CalendarCell\";\nimport { useCurrentLocale } from \"./utils\";\nimport { ResponsiveValue, useMultiStyleConfig } from \"@chakra-ui/react\";\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 variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\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 = new Array(weeksInMonth).fill(0).map((_, i) => i);\n const styles = useMultiStyleConfig(\"Datepicker\", { variant });\n\n return (\n <table {...gridProps}>\n <thead {...headerProps}>\n <tr>\n {weekDays[language].map((day, index) => {\n return (\n <Text\n as=\"th\"\n key={index}\n sx={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 </table>\n );\n}\n","import {\n Badge as ChakraBadge,\n BadgeProps as ChakraBadgeProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport { As } from \"@chakra-ui/system\";\nimport React from \"react\";\n\nexport type BadgeProps = Omit<\n ChakraBadgeProps,\n \"variant\" | \"colorScheme\" | \"size\"\n> & {\n /**\n * The color scheme of the badge.\n */\n colorScheme?:\n | \"yellow\"\n | \"light-yellow\"\n | \"red\"\n | \"light-green\"\n | \"dark-green\"\n | \"orange\"\n | \"light-blue\"\n | \"dark-blue\"\n | \"grey\"\n | \"white\";\n /** The design variant – \"solid\" by default.\n *\n * Can be specified as `outline` to render a border around the badge. */\n variant?: \"solid\" | \"outline\";\n /** Optional badge icon. Will be rendered to the left of the text.\n *\n * Make sure you pass in the 18px version of the icon.\n */\n icon?: React.ReactElement;\n};\n/**\n * Shows some additional information about the component it's used within.\n *\n * You have to specify some content (icons should be placed to the left, if present), and a colorScheme.\n *\n * ```tsx\n * <Badge colorScheme=\"light-green\">Hello</Badge>\n * ```\n *\n * If you want an icon, pass it in through the `icon` prop:\n *\n * ```tsx\n * <Badge colorScheme=\"light-blue\" icon={<InformationOutline18Icon />}>\n * Information\n * </Badge>\n * ```\n */\nexport const Badge = forwardRef<BadgeProps, As>(\n ({ icon, colorScheme = \"grey\", children, ...props }, ref) => {\n return (\n <ChakraBadge\n colorScheme={colorScheme}\n {...props}\n paddingLeft={icon ? 1 : undefined}\n ref={ref}\n >\n {icon && React.cloneElement(icon, { marginRight: 1 })}\n {children}\n </ChakraBadge>\n );\n },\n);\n","import {\n Code as ChakraCode,\n CodeProps as ChakraCodeProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport { As } from \"@chakra-ui/system\";\nimport React from \"react\";\n\nexport type CodeProps = ChakraCodeProps & {\n /**\n * The color scheme of the inline code.\n */\n colorScheme?:\n | \"yellow\"\n | \"light-yellow\"\n | \"red\"\n | \"green\"\n | \"orange\"\n | \"blue\"\n | \"grey\"\n | \"white\";\n /** The design variant – \"solid\" by default.\n *\n * Can be specified as `outline` to render a border around the badge. */\n variant?: \"solid\" | \"outline\";\n};\n/**\n * Shows inline code.\n */\nexport const Code = forwardRef<CodeProps, As>((props, ref) => (\n <ChakraCode {...props} ref={ref} />\n));\n","import {\n HeadingProps as ChakraHeadingProps,\n Text,\n useColorModeValue,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { slugify } from \"..\";\nimport type { textStyles } from \"../theme/foundations\";\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?: keyof typeof textStyles;\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 \"2xl\". The default is \"xl-sans\".\n *\n * ```tsx\n * <Heading as=\"h1\" variant=\"2xl\">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 */\nexport const Heading = ({\n as,\n variant = \"xl-display\",\n autoId = false,\n id: externalId,\n ...props\n}: HeadingProps) => {\n const id =\n externalId ??\n (autoId && typeof props.children === \"string\"\n ? slugify(props.children)\n : undefined);\n const color = useColorModeValue(\"text.primary.light\", \"text.primary.dark\");\n return <Text as={as} textStyle={variant} id={id} color={color} {...props} />;\n};\n","import {\n Text as ChakraText,\n TextProps as ChakraTextProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type TextProps = Omit<ChakraTextProps, \"textStyle\"> & {\n /** The size and style of the text.\n *\n * Defaults to \"sm\" */\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 */\nexport const Text = forwardRef<TextProps, \"p\">(\n ({ variant = \"sm\", ...props }, ref) => {\n return <ChakraText {...props} textStyle={variant} ref={ref} />;\n },\n);\n","import { Box, ResponsiveValue, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport {\n CalendarDate,\n DateValue,\n isSameMonth,\n isToday,\n} from \"@internationalized/date\";\nimport React, { useEffect, useRef } from \"react\";\nimport { useCalendarCell } from \"react-aria\";\nimport { CalendarState, RangeCalendarState } from \"react-stately\";\n\ntype CalendarCellProps = {\n variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\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(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 styles = useMultiStyleConfig(\"Datepicker\", { variant });\n\n const stateProps: Record<string, any> = {};\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 as any)?.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\" sx={styles.cell}>\n <Box\n as=\"button\"\n type=\"button\"\n {...buttonProps}\n {...stateProps}\n ref={ref}\n sx={styles.dateCell}\n hidden={isOutsideVisibleRange}\n width=\"100%\"\n >\n {date.day}\n </Box>\n </Box>\n );\n}\n","import { CalendarDateTime, parseTime } from \"@internationalized/date\";\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 case \"nn\":\n return \"nb-NO\";\n case \"sv\":\n return \"sv-SE\";\n case \"en\":\n return \"en-GB\";\n default:\n return \"nb-NO\";\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","import { Box, Flex } from \"@chakra-ui/react\";\nimport { getLocalTimeZone } from \"@internationalized/date\";\nimport {\n ArrowLeftOutline24Icon,\n ArrowRightOutline24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { CalendarState, RangeCalendarState } from \"react-stately\";\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={\n title ? title : isYearPickerVisible ? monthTitle : monthAndYearTitle\n }\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 >\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","import React, { useRef } from \"react\";\nimport { AriaButtonProps, useButton } from \"react-aria\";\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","import {\n Box,\n PopoverAnchor,\n useMultiStyleConfig,\n forwardRef,\n ResponsiveValue,\n} from \"@chakra-ui/react\";\nimport { CalendarOutline24Icon } from \"@vygruppen/spor-icon-react\";\nimport React, { KeyboardEventHandler } from \"react\";\nimport { AriaButtonProps } from \"react-aria\";\nimport { IconButton, createTexts, useTranslation } from \"..\";\nimport { As } from \"@chakra-ui/system\";\n\ntype CalendarTriggerButtonProps = AriaButtonProps<\"button\"> & {\n variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\n isDisabled?: boolean;\n ariaLabelledby?: string;\n};\nexport const CalendarTriggerButton = forwardRef<CalendarTriggerButtonProps, As>(\n ({ variant, isDisabled, ariaLabelledby, ...buttonProps }, ref) => {\n const { t } = useTranslation();\n const styles = useMultiStyleConfig(\"Datepicker\", { variant });\n\n const { onPress, ...filteredButtonProps } = buttonProps;\n\n const handleCommand: KeyboardEventHandler = (event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n onPress?.(event as any);\n }\n };\n\n return (\n <PopoverAnchor>\n <IconButton\n ref={ref}\n role=\"button\"\n icon={<CalendarOutline24Icon />}\n aria-label={t(texts.openCalendar)}\n sx={styles.calendarTriggerButton}\n variant=\"ghost\"\n {...filteredButtonProps}\n isDisabled={isDisabled}\n onKeyDown={handleCommand}\n aria-labelledby={ariaLabelledby}\n />\n </PopoverAnchor>\n );\n },\n);\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","import { Box, Flex, FormLabel, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport { DateValue, GregorianCalendar } from \"@internationalized/date\";\nimport { DOMAttributes, FocusableElement } from \"@react-types/shared\";\nimport React, { RefObject, forwardRef, useId, useRef } from \"react\";\nimport { AriaDateFieldProps, useDateField } from \"react-aria\";\nimport { DateSegment, useDateFieldState } from \"react-stately\";\nimport { DateTimeSegment } from \"./DateTimeSegment\";\nimport { useCurrentLocale } from \"./utils\";\nimport { createTexts, useTranslation } from \"../i18n\";\n\nfunction createCalendar(identifier: string) {\n switch (identifier) {\n case \"gregory\":\n return new GregorianCalendar();\n default:\n throw new Error(`Unsupported calendar ${identifier}`);\n }\n}\n\ntype DateFieldProps = AriaDateFieldProps<DateValue> & {\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 styles = useMultiStyleConfig(\"Datepicker\", {});\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 <FormLabel\n sx={styles.inputLabel}\n position=\"absolute\"\n paddingTop=\"2px\"\n id={labelId}\n >\n {props.label}\n </FormLabel>\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);\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 case \"month\":\n return texts.month;\n case \"year\":\n return texts.year;\n default:\n return texts.day;\n }\n};\n","import { Box, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React, { RefObject, forwardRef, useRef } from \"react\";\nimport { useDateSegment } from \"react-aria\";\nimport { DateFieldState, DateSegment } from \"react-stately\";\n\ntype DateTimeSegmentProps = {\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 styles = useMultiStyleConfig(\"Datepicker\", {\n isPlaceholder: segment.isPlaceholder,\n isEditable: segment.isEditable,\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 sx={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);\n\nconst isPaddable = (segmentType: DateSegment[\"type\"]) =>\n segmentType === \"month\" ||\n segmentType === \"day\" ||\n segmentType === \"hour\" ||\n segmentType === \"minute\" ||\n segmentType === \"second\";\n","import {\n Box,\n BoxProps,\n ResponsiveValue,\n forwardRef,\n useFormControlContext,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport { As } from \"@chakra-ui/system\";\nimport React from \"react\";\n\ntype StyledFieldProps = BoxProps & {\n variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\n isDisabled?: boolean;\n ariaLabelledby?: string;\n};\nexport const StyledField = forwardRef<StyledFieldProps, As>(\n ({ children, variant, isDisabled, ariaLabelledby, ...otherProps }, ref) => {\n const { isInvalid } = useFormControlContext() ?? {\n isInvalid: false,\n };\n\n const styles = useMultiStyleConfig(\"Datepicker\", { variant });\n\n return (\n <Box\n {...otherProps}\n __css={styles.wrapper}\n ref={ref}\n aria-invalid={isInvalid}\n aria-disabled={isDisabled}\n aria-labelledby={ariaLabelledby}\n >\n {children}\n </Box>\n );\n },\n);\n","import {\n Box,\n BoxProps,\n FocusLock,\n FormLabel,\n InputGroup,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverBody,\n PopoverContent,\n PopoverTrigger,\n Portal,\n ResponsiveValue,\n useFormControlContext,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport { DateValue } from \"@internationalized/date\";\nimport React, { useRef } from \"react\";\nimport {\n AriaDateRangePickerProps,\n I18nProvider,\n useDateRangePicker,\n} from \"react-aria\";\nimport { useDateRangePickerState } from \"react-stately\";\nimport { CalendarTriggerButton } from \"./CalendarTriggerButton\";\nimport { DateField } from \"./DateField\";\nimport { RangeCalendar } from \"./RangeCalendar\";\nimport { StyledField } from \"./StyledField\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype DateRangePickerProps = Omit<\n AriaDateRangePickerProps<DateValue>,\n \"onChange\"\n> &\n Pick<BoxProps, \"minHeight\"> & {\n startLabel?: string;\n startName?: string;\n endLabel?: string;\n endName?: string;\n variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\n withPortal?: boolean;\n onChange?: (\n dates: {\n start: DateValue | null;\n end: DateValue | null;\n } | null,\n ) => void;\n };\n/**\n * A date range picker component.\n *\n * There are three variants to choose from – `base`, `floating` and `ghost`.\n *\n * ```tsx\n * <DateRangePicker startLabel=\"From\" startName=\"from\" endLabel=\"To\" endName=\"to\" variant=\"base\" />\n * ```\n */\nexport function DateRangePicker({\n variant,\n minHeight,\n startName,\n endName,\n withPortal = true,\n ...props\n}: DateRangePickerProps) {\n const formControlProps = useFormControlContext();\n const state = useDateRangePickerState({\n ...props,\n shouldCloseOnSelect: true,\n isRequired: props.isRequired ?? formControlProps?.isRequired,\n validationState: formControlProps.isInvalid ? \"invalid\" : \"valid\",\n });\n const ref = useRef(null);\n const {\n groupProps,\n labelProps,\n startFieldProps,\n endFieldProps,\n buttonProps,\n dialogProps,\n calendarProps,\n } = useDateRangePicker(props, state, ref);\n\n const styles = useMultiStyleConfig(\"Datepicker\", { variant });\n const locale = useCurrentLocale();\n\n const handleEnterClick = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" && !state.isOpen && variant === \"base\") {\n // Don't submit the form\n e.stopPropagation();\n state.setOpen(true);\n }\n };\n\n const onFieldClick = () => {\n state.setOpen(true);\n };\n\n const popoverContent = (\n <PopoverContent sx={styles.calendarPopover} maxWidth=\"none\">\n <PopoverArrow sx={styles.arrow} />\n <PopoverBody>\n <FocusLock>\n <RangeCalendar variant={\"base\"} {...calendarProps} />\n </FocusLock>\n </PopoverBody>\n </PopoverContent>\n );\n\n return (\n <I18nProvider locale={locale}>\n <Box position=\"relative\" display=\"inline-flex\" flexDirection=\"column\">\n {props.label && (\n <FormLabel {...labelProps} sx={styles.inputLabel}>\n {props.label}\n </FormLabel>\n )}\n <Popover\n {...dialogProps}\n isOpen={state.isOpen}\n onOpen={state.open}\n onClose={state.close}\n flip={false}\n >\n <InputGroup {...groupProps} width=\"auto\" display=\"inline-flex\">\n <PopoverAnchor>\n <StyledField\n alignItems=\"center\"\n paddingX={3}\n variant={variant}\n onClick={onFieldClick}\n onKeyPress={handleEnterClick}\n minHeight={minHeight}\n >\n {variant && (\n <PopoverTrigger>\n <CalendarTriggerButton\n paddingLeft={1}\n paddingRight={1}\n variant={variant}\n ref={ref}\n {...buttonProps}\n />\n </PopoverTrigger>\n )}\n <DateField\n {...startFieldProps}\n name={startName}\n label={props.startLabel}\n labelProps={labelProps}\n />\n <Box as=\"span\" aria-hidden=\"true\" paddingRight=\"2\">\n –\n </Box>\n <DateField\n {...endFieldProps}\n name={endName}\n label={props.endLabel}\n labelProps={labelProps}\n />\n </StyledField>\n </PopoverAnchor>\n </InputGroup>\n {state.isOpen && withPortal && <Portal>{popoverContent}</Portal>}\n {state.isOpen && !withPortal && popoverContent}\n </Popover>\n </Box>\n </I18nProvider>\n );\n}\n","import { Box, ResponsiveValue } from \"@chakra-ui/react\";\nimport { DateValue, createCalendar } from \"@internationalized/date\";\nimport React, { useRef } from \"react\";\nimport {\n RangeCalendarProps as ReactAriaRangeCalendarProps,\n useRangeCalendar,\n} from \"react-aria\";\nimport { useRangeCalendarState } from \"react-stately\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { CalendarHeader } from \"./CalendarHeader\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype RangeCalendarProps = ReactAriaRangeCalendarProps<DateValue> & {\n variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\n};\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\n const ref = useRef(null);\n const { calendarProps, title } = useRangeCalendar(props, state, ref);\n\n return (\n <Box {...calendarProps} ref={ref}>\n <CalendarHeader state={state} title={title} />\n <Box display=\"flex\" gap=\"8\">\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","import { BoxProps, useFormControlContext } 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 React from \"react\";\nimport { useTimeFieldState } from \"react-stately\";\nimport { IconButton, createTexts, useTranslation } from \"..\";\nimport { StyledField } from \"./StyledField\";\nimport { TimeField } from \"./TimeField\";\nimport { getCurrentTime, useCurrentLocale } from \"./utils\";\n\ntype TimePickerProps = Omit<BoxProps, \"defaultValue\" | \"onChange\"> & {\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 isDisabled?: boolean;\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 isDisabled: isDisabledExternally = false,\n name,\n ...boxProps\n}: TimePickerProps) => {\n const { isDisabled: isFormControlDisabled, isInvalid: isFormControlInvalid } =\n useFormControlContext() ?? {};\n const isDisabled = isDisabledExternally ?? isFormControlDisabled ?? 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: isFormControlInvalid ? \"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 return (\n <StyledField\n variant=\"base\"\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 isDisabled={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 isDisabled={isDisabled}\n style={isDisabled ? { backgroundColor: \"transparent\" } : {}}\n />\n </StyledField>\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","import { Box, Flex } from \"@chakra-ui/react\";\nimport { CalendarDateTime, Time } from \"@internationalized/date\";\nimport React, { useRef } from \"react\";\nimport { AriaTimeFieldProps, useTimeField } from \"react-aria\";\nimport { TimeFieldState } from \"@react-stately/datepicker\";\nimport { FormLabel } from \"..\";\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 <FormLabel\n {...labelProps}\n htmlFor={fieldProps.id}\n marginBottom={0}\n fontSize=\"mobile.xs\"\n cursor=\"text\"\n position=\"absolute\"\n paddingTop=\"2px\"\n >\n {props.label}\n </FormLabel>\n <Flex {...fieldProps} ref={ref} paddingTop=\"3\" paddingBottom=\"0.5\">\n {state.segments.map((segment) => (\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 { Image, Img } from \"@chakra-ui/react\";\nexport type { ImageProps, ImgProps } from \"@chakra-ui/react\";\n","import { Box, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { LineIcon } from \"./LineIcon\";\nimport type { TagProps } from \"./types\";\n\nexport type InfoTagProps = TagProps;\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 styles = useMultiStyleConfig(\"InfoTag\", {\n variant,\n size,\n ...customProps,\n });\n return (\n <Box sx={styles.container}>\n <LineIcon\n variant={variant}\n size={size}\n sx={styles.iconContainer}\n {...(customProps as any)} // TODO: Fix this\n />\n <Box sx={styles.textContainer}>\n {title && (\n <Box as=\"span\" sx={styles.title}>\n {title}\n </Box>\n )}\n {title && description && \" \"}\n {description && (\n <Box as=\"span\" sx={styles.description}>\n {description}\n </Box>\n )}\n </Box>\n </Box>\n );\n};\n","import { Box, BoxProps, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { getCorrectIcon } from \"./icons\";\nimport { CustomVariantProps, TagProps } from \"./types\";\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 size: TagProps[\"size\"];\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 */\nexport const LineIcon = ({\n variant,\n size = \"md\",\n sx,\n ...rest\n}: LineIconProps) => {\n const styles = useMultiStyleConfig(\"LineIcon\", { variant, size, ...rest });\n const Icon: any = getCorrectIcon({\n variant:\n variant === \"custom\" && \"customIconVariant\" in rest\n ? rest.customIconVariant\n : variant === \"custom\"\n ? \"local-train\"\n : variant,\n size,\n });\n if (!Icon) {\n return null;\n }\n return (\n <Box sx={{ ...styles.iconContainer, ...sx }}>\n <Icon sx={styles.icon} />\n </Box>\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\";\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","import {\n Box,\n BoxProps,\n forwardRef,\n useMultiStyleConfig,\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 React from \"react\";\nimport { LineIcon } from \"./LineIcon\";\nimport type { TagProps } from \"./types\";\nimport { As } from \"@chakra-ui/system\";\n\nexport type TravelTagProps = TagProps &\n BoxProps & {\n /**\n * Defines the level of importance\n * Default to none\n */\n deviationLevel?: \"critical\" | \"major\" | \"minor\" | \"info\" | \"none\";\n isDisabled?: boolean;\n /**\n * Needs to be defined if variant is custom\n */\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 * ```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 */\nexport const TravelTag = forwardRef<TravelTagProps, As>(\n (\n {\n variant,\n size = \"md\",\n deviationLevel = \"none\",\n title,\n description,\n isDisabled,\n foregroundColor,\n backgroundColor,\n customIconVariant,\n ...rest\n },\n ref,\n ) => {\n const styles = useMultiStyleConfig(\"TravelTag\", {\n variant,\n size,\n deviationLevel,\n foregroundColor: variant === \"custom\" ? foregroundColor : undefined,\n backgroundColor: variant === \"custom\" ? backgroundColor : undefined,\n });\n\n const DeviationLevelIcon = getDeviationLevelIcon({ deviationLevel, size });\n\n return (\n <Box sx={styles.container} aria-disabled={isDisabled} ref={ref} {...rest}>\n <LineIcon\n variant={variant}\n size={size}\n sx={styles.iconContainer}\n foregroundColor={foregroundColor}\n backgroundColor={backgroundColor}\n customIconVariant={customIconVariant}\n {...(rest as any)}\n />\n <Box sx={styles.textContainer}>\n {title && (\n <Box as=\"span\" sx={styles.title}>\n {title}\n </Box>\n )}\n {title && description && \" \"}\n {description && (\n <Box as=\"span\" sx={styles.description}>\n {description}\n </Box>\n )}\n </Box>\n {DeviationLevelIcon && <DeviationLevelIcon sx={styles.deviationIcon} />}\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 case \"major\":\n case \"minor\":\n return size === \"lg\" ? WarningFill24Icon : WarningFill18Icon;\n case \"info\":\n return size === \"lg\" ? InformationFill24Icon : InformationFill18Icon;\n default:\n return null;\n }\n};\n","import {\n Link as ChakraLink,\n LinkProps as ChakraLinkProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport { LinkOutOutline24Icon } from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { createTexts, useTranslation } from \"..\";\n\ntype LinkProps = Omit<ChakraLinkProps, \"variant\"> & {\n variant?: \"primary\" | \"secondary\";\n};\n/** Link to different sites or parts of site\n *\n * You can specify the `variant` prop to get different link designs.\n */\nexport const TextLink = forwardRef<LinkProps, \"a\">(\n ({ children, ...props }, ref) => {\n const { t } = useTranslation();\n const isExternal =\n props.isExternal !== undefined\n ? props.isExternal\n : Boolean(props.href?.match(/^https?:\\/\\//));\n return (\n <ChakraLink {...props} ref={ref} isExternal={isExternal}>\n {children}\n {isExternal && (\n <LinkOutOutline24Icon\n marginLeft={0.5}\n aria-label={t(texts.externalLink)}\n />\n )}\n </ChakraLink>\n );\n },\n);\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","export { ListItem, OrderedList, UnorderedList } from \"@chakra-ui/react\";\nexport type { ListItemProps, ListProps } from \"@chakra-ui/react\";\n","import { Box, BoxProps } from \"@chakra-ui/react\";\nimport React, { useId } from \"react\";\n\nexport type VyLogoProps = {\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 colorScheme: \"light\" | \"dark\";\n} & BoxProps;\nexport const VyLogo = ({ colorScheme, ...boxProps }: VyLogoProps) => {\n // These colors should not be tokenized, as they are logo specific.\n const mainColor = colorScheme === \"light\" ? \"#1d211c\" : \"#ffffff\";\n const accentColor = colorScheme === \"light\" ? \"#138c6e\" : \"#ffffff\";\n const id = useId();\n return (\n <Box as=\"svg\" viewBox=\"0 0 107 54\" {...boxProps}>\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={mainColor}\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={mainColor}\n />\n </mask>\n <g\n mask={`url(#${id}-a)`}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill={mainColor}\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 </g>\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={accentColor}\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={mainColor}\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={mainColor}\n />\n </mask>\n <g 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={mainColor}\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={mainColor}\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={accentColor}\n />\n </g>\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={mainColor}\n />\n </Box>\n );\n};\n","import { Box, BoxProps } from \"@chakra-ui/react\";\nimport React, { useId } from \"react\";\n\nexport type VyLogoPrideProps = {\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 colorScheme: \"light\" | \"dark\";\n} & BoxProps;\nexport const VyLogoPride = ({ colorScheme, ...boxProps }: VyLogoPrideProps) => {\n // These colors should not be tokenized, as they are logo specific.\n const pinkColor = colorScheme === \"light\" ? \"#ED6F99\" : \"#ffffff\";\n const purpleColor = colorScheme === \"light\" ? \"#C06CF7\" : \"#ffffff\";\n const darkPurpleColor = colorScheme === \"light\" ? \"#821889\" : \"#ffffff\";\n const greenColor = colorScheme === \"light\" ? \"#56BDBF\" : \"#ffffff\";\n const darkGreenColor = colorScheme === \"light\" ? \"#3E8C26\" : \"#ffffff\";\n const blueColor = colorScheme === \"light\" ? \"#3A0692\" : \"#ffffff\";\n const redColor = colorScheme === \"light\" ? \"#EA3323\" : \"#ffffff\";\n const orangeColor = colorScheme === \"light\" ? \"#F09436\" : \"#ffffff\";\n const yellowColor = colorScheme === \"light\" ? \"#FFFF54\" : \"#ffffff\";\n\n const id = useId();\n return (\n <Box as=\"svg\" viewBox=\"0 0 107 54\" {...boxProps}>\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 </Box>\n );\n};\n","import { Box, BoxProps } from \"@chakra-ui/react\";\nimport React 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 colorScheme: \"light\" | \"dark\";\n} & BoxProps;\n\nexport const CargonetLogo = ({\n colorScheme,\n ...boxProps\n}: CargonetLogoProps) => {\n // These colors should not be tokenized, as they are logo specific.\n const mainColor = \"#DF8200\";\n const accentColor = colorScheme === \"light\" ? \"#383E42\" : \"#ffffff\";\n\n return (\n <Box as=\"svg\" viewBox=\"0 0 251 52\" {...boxProps}>\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 </Box>\n );\n};\n","import { BoxProps, Center, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { createTexts, useTranslation } from \"..\";\nimport {\n Backward15MediaControllerFill30Icon,\n Forward15MediaControllerFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\n\ntype JumpButtonProps = BoxProps & {\n onClick: () => void;\n \"aria-label\"?: string;\n isDisabled?: 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 = ({\n direction,\n isDisabled,\n size = \"sm\",\n ...props\n}: JumpButtonProps) => {\n const { t } = useTranslation();\n const styles = useMultiStyleConfig(\"MediaControllerButton\", {\n variant: \"jumpSkip\",\n size,\n });\n\n return (\n <Center\n as=\"button\"\n sx={styles.container}\n aria-label={\n direction === \"forward\" ? t(texts.forward) : t(texts.backward)\n }\n disabled={isDisabled}\n {...props}\n >\n {direction === \"forward\" ? (\n <Forward15MediaControllerFill30Icon sx={styles.icon} />\n ) : (\n <Backward15MediaControllerFill30Icon sx={styles.icon} />\n )}\n </Center>\n );\n};\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","import { BoxProps, Center, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { createTexts, useTranslation } from \"..\";\nimport {\n PauseMediaControllerFill24Icon,\n PlayMediaControllerFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\n\ntype PlayPauseButtonProps = BoxProps & {\n onClick: () => void;\n \"aria-label\"?: string;\n isDisabled?: boolean;\n isPlaying: 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 `isPlaying`.\n *\n * ```tsx\n * <PlayPauseButton isPlaying={isPlaying} onClick={onPlaybackClick} />\n * ```\n */\nexport const PlayPauseButton = ({\n size = \"lg\",\n isPlaying,\n isDisabled,\n ...props\n}: PlayPauseButtonProps) => {\n const { t } = useTranslation();\n const styles = useMultiStyleConfig(\"MediaControllerButton\", {\n variant: \"play\",\n size,\n });\n\n return (\n <Center\n as=\"button\"\n sx={styles.container}\n aria-label={isPlaying ? t(texts.pause) : t(texts.play)}\n disabled={isDisabled}\n {...props}\n >\n {isPlaying ? (\n <PauseMediaControllerFill24Icon sx={styles.icon} />\n ) : (\n <PlayMediaControllerFill24Icon sx={styles.icon} />\n )}\n </Center>\n );\n};\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","import { BoxProps, Center, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { createTexts, useTranslation } from \"..\";\nimport {\n NextMediaControllerFill30Icon,\n PreviousMediaControllerFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\n\ntype SkipButtonProps = BoxProps & {\n onClick: () => void;\n \"aria-label\"?: string;\n isDisabled?: 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 = ({\n direction,\n isDisabled,\n size = \"sm\",\n ...props\n}: SkipButtonProps) => {\n const { t } = useTranslation();\n const styles = useMultiStyleConfig(\"MediaControllerButton\", {\n variant: \"jumpSkip\",\n size,\n });\n\n return (\n <Center\n as=\"button\"\n sx={styles.container}\n aria-label={direction === \"forward\" ? t(texts.next) : t(texts.previous)}\n disabled={isDisabled}\n {...props}\n >\n {direction === \"forward\" ? (\n <NextMediaControllerFill30Icon sx={styles.icon} />\n ) : (\n <PreviousMediaControllerFill30Icon sx={styles.icon} />\n )}\n </Center>\n );\n};\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","import {\n Box,\n BoxProps,\n Center,\n Drawer as ChakraDrawer,\n DrawerContent as ChakraDrawerContent,\n DrawerContentProps as ChakraDrawerContentProps,\n DrawerProps as ChakraDrawerProps,\n forwardRef,\n useModalContext,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { useSwipeable } from \"react-swipeable\";\nexport {\n DrawerBody,\n DrawerCloseButton,\n DrawerFooter,\n DrawerOverlay,\n} from \"@chakra-ui/react\";\nexport type { DrawerProps } from \"@chakra-ui/react\";\nexport { ModalHeader as DrawerHeader } from \"./ModalHeader\";\n\ntype DrawerProps = ChakraDrawerProps;\nexport const Drawer = (props: DrawerProps) => {\n return (\n <DrawerProvider placement={props.placement}>\n <ChakraDrawer {...props} />\n </DrawerProvider>\n );\n};\n\ntype DrawerContentProps = ChakraDrawerContentProps;\nexport const DrawerContent = forwardRef<DrawerContentProps, any>(\n ({ children, ...props }, ref) => {\n const placement = useDrawerContext();\n const { onClose } = useModalContext();\n const handlers = useSwipeable({\n onSwiped: (e) => {\n const shouldClose =\n (placement === \"bottom\" && e.dir === \"Down\") ||\n (placement === \"right\" && e.dir === \"Right\") ||\n (placement === \"left\" && e.dir === \"Left\") ||\n (placement === \"top\" && e.dir === \"Up\") ||\n (placement === \"end\" && e.dir === \"Right\") ||\n (placement === \"start\" && e.dir === \"Left\");\n if (shouldClose) {\n onClose();\n }\n },\n swipeDuration: 500,\n });\n\n const isTopOrBottom = placement === \"top\" || placement === \"bottom\";\n const widthConstraits = isTopOrBottom\n ? { width: [\"100%\", \"37.5rem\"], mx: \"auto\" }\n : {};\n return (\n <Box {...handlers}>\n <ChakraDrawerContent\n {...widthConstraits}\n borderTopRadius={placement === \"bottom\" ? \"md\" : \"none\"}\n borderBottomRadius={placement === \"top\" ? \"md\" : \"none\"}\n {...props}\n ref={ref}\n >\n <Box position=\"relative\">\n <Box maxHeight=\"100vh\" maxWidth=\"100vw\" overflow=\"auto\">\n {isTopOrBottom && <Notch />}\n\n <Box>{children}</Box>\n </Box>\n </Box>\n </ChakraDrawerContent>\n </Box>\n );\n },\n);\n\nconst Notch = forwardRef<BoxProps, any>((props, ref) => {\n const placement = useDrawerContext();\n return (\n <Box\n position=\"absolute\"\n left={0}\n right={0}\n top={placement === \"bottom\" ? 0 : undefined}\n bottom={placement === \"top\" ? 0 : undefined}\n zIndex=\"modal\"\n {...props}\n ref={ref}\n >\n <Center\n background={placement === \"bottom\" ? \"bottom\" : \"top\"}\n padding={2}\n borderRadius=\"md\"\n >\n <Box\n width=\"2.265rem\"\n height={1}\n backgroundColor=\"steel\"\n borderRadius=\"xs\"\n />\n </Center>\n </Box>\n );\n});\n\nconst DrawerContext = React.createContext<DrawerProps[\"placement\"]>(undefined);\ntype DrawerProviderProps = {\n children: React.ReactNode;\n placement: DrawerProps[\"placement\"];\n};\nconst DrawerProvider = (props: DrawerProviderProps) => (\n <DrawerContext.Provider value={props.placement}>\n {props.children}\n </DrawerContext.Provider>\n);\nconst useDrawerContext = () => {\n return React.useContext(DrawerContext);\n};\n","import {\n forwardRef,\n ModalHeader as ChakraModalHeader,\n ModalHeaderProps as ChakraModalHeaderProps,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type ModalHeaderProps = ChakraModalHeaderProps & {\n size?: \"sm\" | \"lg\";\n};\n\n/**\n * ModalHeader\n *\n * You can specify the size with either `size=\"sm\"` or `size=\"lg\"`.\n */\nexport const ModalHeader = forwardRef<ModalHeaderProps, \"header\">(\n ({ size, ...props }, ref) => {\n const styles = {\n fontSize:\n size === \"lg\"\n ? [\"mobile.lg\", \"desktop.lg\"]\n : [\"mobile.md\", \"desktop.md\"],\n textAlign:\n size === \"lg\"\n ? \"center\"\n : (\"left\" as ChakraModalHeaderProps[\"textAlign\"]),\n };\n return <ChakraModalHeader as={\"h1\"} {...props} ref={ref} {...styles} />;\n },\n);\n","import {\n Box,\n DrawerBody,\n DrawerContent,\n DrawerHeader,\n DrawerOverlay,\n Flex,\n useColorModeValue,\n useMediaQuery,\n useModalContext,\n} from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\nimport {\n ArrowLeftFill24Icon,\n ArrowLeftFill30Icon,\n CloseFill24Icon,\n CloseFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React, { useEffect, useState } from \"react\";\nimport { Button, IconButton } from \"../button\";\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { Drawer } from \"./Drawer\";\nimport { DrawerBodyProps } from \"./SimpleDrawer\";\n\ntype DrawerPlacement = \"top\" | \"right\" | \"bottom\" | \"left\";\n\ntype FullScreenDrawerProps = {\n /** The content inside the drawer */\n children: React.ReactNode;\n /** The title in the middle of the top menu */\n title?: String;\n /** Determines which side the drawer slides from */\n placement?: DrawerPlacement;\n /** A React component that will be placed to the left in the modal header */\n leftButton?: React.ReactNode;\n /** A React component that will be placed to the right in the modal header */\n rightButton?: React.ReactNode;\n /** Determines if the drawer is open or closed */\n isOpen: boolean;\n /** Function that will be called when the drawer closes */\n onClose: () => void;\n /** Props for drawer body */\n body?: DrawerBodyProps;\n};\n\nexport const FullScreenDrawer = ({\n children,\n title,\n placement = \"bottom\",\n leftButton = <DrawerBackButton />,\n rightButton = <DrawerCloseButton />,\n isOpen,\n onClose,\n body,\n}: FullScreenDrawerProps) => {\n const [isContentBoxScrolled, setContentBoxScrolled] = useState(false);\n\n const onContentScroll = (e: React.UIEvent<HTMLDivElement, UIEvent>) => {\n const target = e.target as HTMLDivElement;\n\n if (target.scrollTop <= 0) {\n setContentBoxScrolled(false);\n return;\n }\n setContentBoxScrolled(true);\n };\n\n useEffect(() => {\n setContentBoxScrolled(false);\n }, [isOpen]);\n\n return (\n <Drawer isOpen={isOpen} onClose={onClose} placement={placement} size=\"full\">\n <DrawerOverlay />\n <DrawerContent\n height=\"100vh\"\n backgroundSize=\"100% 285px, 100%\"\n backgroundPosition=\"top\"\n backgroundRepeat=\"no-repeat\"\n >\n <DrawerTopMenu\n isScrolled={isContentBoxScrolled}\n title={title}\n leftButton={leftButton}\n rightButton={rightButton}\n />\n <DrawerBody overflow=\"auto\" onScroll={onContentScroll} {...body}>\n {children}\n </DrawerBody>\n </DrawerContent>\n </Drawer>\n );\n};\n\ntype DrawerTopMenuProps = {\n /** Optional title */\n title?: String;\n leftButton?: React.ReactNode;\n rightButton?: React.ReactNode;\n /** Whether or not the context this menu is placed in is scrolled */\n isScrolled: boolean;\n};\n\nconst DrawerTopMenu = ({\n title,\n leftButton,\n rightButton,\n isScrolled,\n}: DrawerTopMenuProps) => {\n const backgroundColor = useColorModeValue(\n \"bg.default.light\",\n \"bg.default.dark\",\n );\n\n return (\n <Flex\n width=\"100%\"\n backgroundColor={backgroundColor}\n position=\"static\"\n paddingTop={[1.5, 2.5, 3, 3]}\n paddingBottom={[1.5, 2.5, 3, 3]}\n paddingLeft={[2, 3, 6, 9]}\n paddingRight={[2, 3, 6, 9]}\n transition=\"box-shadow 0.2s\"\n boxShadow={isScrolled ? \"md\" : undefined}\n >\n <Box flex=\"1\">\n <Box width=\"fit-content\">{leftButton}</Box>\n </Box>\n <DrawerHeader\n as=\"h2\"\n fontSize=\"md\"\n fontWeight=\"bold\"\n textAlign=\"center\"\n flex=\"2\"\n margin={0}\n padding={0}\n >\n {title}\n </DrawerHeader>\n <Box flex=\"1\">\n <Box width=\"fit-content\" marginLeft=\"auto\">\n {rightButton}\n </Box>\n </Box>\n </Flex>\n );\n};\n\nconst DrawerCloseButton = () => {\n const { onClose } = useModalContext();\n const { t } = useTranslation();\n\n const [isScreenSizeMinSm] = useMediaQuery(\n `(min-width: ${tokens.size.breakpoint.sm})`,\n );\n\n if (isScreenSizeMinSm) {\n return (\n <Button\n variant=\"ghost\"\n leftIcon={<CloseFill24Icon />}\n onClick={onClose}\n aria-label={t(texts.close)}\n width=\"fit-content\"\n >\n {t(texts.close)}\n </Button>\n );\n }\n\n return (\n <IconButton\n variant=\"ghost\"\n icon={<CloseFill30Icon />}\n onClick={onClose}\n aria-label={t(texts.close)}\n />\n );\n};\n\nconst DrawerBackButton = () => {\n const { onClose } = useModalContext();\n const { t } = useTranslation();\n\n const [isScreenSizeMinSm] = useMediaQuery(\n `(min-width: ${tokens.size.breakpoint.sm})`,\n );\n\n if (isScreenSizeMinSm) {\n return (\n <Button\n variant=\"ghost\"\n leftIcon={<ArrowLeftFill24Icon />}\n onClick={onClose}\n aria-label={t(texts.backAriaLabel)}\n width=\"fit-content\"\n >\n {t(texts.back)}\n </Button>\n );\n }\n\n return (\n <IconButton\n variant=\"ghost\"\n icon={<ArrowLeftFill30Icon />}\n onClick={onClose}\n aria-label={t(texts.close)}\n />\n );\n};\n\nconst texts = createTexts({\n close: {\n nb: \"Lukk\",\n nn: \"Lukk\",\n en: \"Close\",\n sv: \"Stäng\",\n },\n closeAriaLabel: {\n nb: \"Lukk vindu\",\n nn: \"Lukk vindauge\",\n en: \"Close window\",\n sv: \"Stäng fönster\",\n },\n back: {\n nb: \"Tilbake\",\n nn: \"Tilbake\",\n en: \"Back\",\n sv: \"Tillbaka\",\n },\n backAriaLabel: {\n nb: \"Gå tilbake\",\n nn: \"Gå tilbake\",\n en: \"Go back\",\n sv: \"Gå tillbaka\",\n },\n});\n","export {\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalOverlay,\n} from \"@chakra-ui/react\";\nexport type {\n ModalBodyProps,\n ModalContentProps,\n ModalFooterProps,\n ModalOverlayProps,\n ModalProps,\n} from \"@chakra-ui/react\";\n","import React from \"react\";\nimport {\n Drawer,\n DrawerBody,\n DrawerCloseButton,\n DrawerContent,\n DrawerHeader,\n DrawerOverlay,\n} from \"./Drawer\";\n\nexport type DrawerBodyProps = {\n id?: string;\n};\n\nexport type SimpleDrawerProps = {\n children: React.ReactNode;\n title?: React.ReactNode;\n placement: \"top\" | \"right\" | \"bottom\" | \"left\";\n isOpen: boolean;\n onClose: () => void;\n /** Props for drawer body */\n body?: DrawerBodyProps;\n};\n/** A very basic drawer component that's easy to use\n *\n * ```tsx\n * <SimpleDrawer placement=\"bottom\" isOpen={isOpen} onClose={handleClose}>\n * This is the drawer content\n * </SimpleDrawer>\n * ```\n *\n * For more advanced use cases, see the [Drawer](./Drawer.tsx) component.\n */\nexport const SimpleDrawer = ({\n placement,\n children,\n title,\n body,\n ...props\n}: SimpleDrawerProps) => {\n return (\n <Drawer placement={placement} {...props}>\n <DrawerOverlay />\n <DrawerContent>\n <DrawerCloseButton />\n {title && <DrawerHeader>{title}</DrawerHeader>}\n <DrawerBody {...body}>{children}</DrawerBody>\n </DrawerContent>\n </Drawer>\n );\n};\n","import {\n Box,\n DarkMode,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverBody,\n PopoverCloseButton,\n PopoverContent,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { Button, ButtonGroup, createTexts, useTranslation } from \"..\";\nimport { TooltipProps } from \"../tooltip\";\n\nexport type NudgeProps = {\n /**\n * The ISO-formatted date of when the Nudge was introduced.\n *\n * After this date has been surpassed by 30 days, the nudge will no longer be shown,\n * and an error will be logged in development mode.\n *\n * ```tsx\n * <Nudge introducedDate=\"2024-02-19\" {...otherProps} />\n * ```\n **/\n introducedDate: string;\n /**\n * The name of the nudge.\n * This will be used to check whether or not the nudge has been viewed.\n **/\n name: string;\n /**\n * The anchor of the nudge.\n *\n * The element that should be nudged toward.\n *\n * ```tsx\n * <Nudge content=\"This is a great new feature! Try it out.\">\n * <MyFeature />\n * </Nudge>\n * ```\n * */\n children: React.ReactNode;\n /**\n * The content of the nudge.\n */\n content: React.ReactNode;\n /**\n * Any actions you want to provide. Defaults to a close button and a \"Show me\" button.\n */\n actions?: React.ReactNode;\n} & Omit<\n TooltipProps,\n | \"name\"\n | \"triggerElement\"\n | \"children\"\n | \"withCloseButton\"\n | \"defaultIsOpen\"\n | \"size\"\n | \"borderRadius\"\n>;\n\nconst EXPIRATION_DELAY = 1000 * 60 * 60 * 24 * 30; // 30 days\n\n/** A nudge.\n *\n * A nudge is a way to hint of a new feature.\n *\n * You're required to set an `introducedDate` to the nudge, which is the timestamp of when the nudge was introduced. After 30 days, the nudge will no longer be shown, and an error will be logged in development mode.\n *\n * ```tsx\n * <Nudge\n * introducedDate=\"2024-02-19\"\n * name=\"my-nudge\"\n * content=\"Check out this enormous new feature!\"\n * >\n * <StaticCard variant=\"base\" padding={2} width=\"fit-content\">My new feature</StaticCard>\n * </Nudge>\n * ```\n */\nexport const Nudge = ({\n introducedDate,\n name,\n children,\n content,\n actions,\n ...props\n}: NudgeProps) => {\n const { t } = useTranslation();\n if (new Date(introducedDate).getTime() + EXPIRATION_DELAY < Date.now()) {\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `The nudge ${name} has been used for longer than 30 days. Please remove it from the codebase.\n \n This is a development only warning, and will not be shown in production.`,\n );\n }\n return null;\n }\n return (\n <Popover\n arrowSize={12}\n arrowShadowColor=\"none\"\n defaultIsOpen={true}\n {...props}\n >\n <PopoverAnchor>{children}</PopoverAnchor>\n <PopoverContent borderRadius=\"sm\">\n <DarkMode>\n <PopoverArrow />\n <PopoverCloseButton />\n <PopoverBody margin={1}>\n <Box marginRight={4}>{content}</Box>\n <Box marginTop={1.5}>\n {actions ?? (\n <ButtonGroup>\n <Button variant=\"tertiary\" size=\"xs\">\n {t(texts.close)}\n </Button>\n <Button variant=\"secondary\" size=\"xs\" fontWeight=\"bold\">\n {t(texts.showMe)}\n </Button>\n </ButtonGroup>\n )}\n </Box>\n </PopoverBody>\n </DarkMode>\n </PopoverContent>\n </Popover>\n );\n};\n\nconst texts = createTexts({\n close: {\n nb: \"Lukk\",\n nn: \"Lukk\",\n sv: \"Stäng\",\n en: \"Close\",\n },\n showMe: {\n nb: \"Vis meg\",\n nn: \"Vis meg\",\n sv: \"Visa mig\",\n en: \"Show me\",\n },\n});\n","import { Box, usePopoverContext } from \"@chakra-ui/react\";\nimport { ArrowRightFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React, { useState } from \"react\";\nimport {\n Button,\n Flex,\n Nudge,\n NudgeProps,\n ProgressIndicator,\n createTexts,\n useTranslation,\n} from \"..\";\n\nexport type WizardNudgeProps = Omit<NudgeProps, \"actions\" | \"content\"> & {\n /** Steps in the wizard. Each item is its own step. Should only be Step components */\n content: React.ReactNode[];\n /**\n * Where the nudge should be placed by default.\n *\n * Note - this is a suggestion, and may be overridden by space concerns.\n */\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n};\n/**\n * A nudge that displays its children one at a time, with a step indicator.\n *\n * ```tsx\n * <WizardNudge\n * content={[\"First step\", \"Second step\"]}\n * name=\"my-wizard-nudge\"\n * introducedDate=\"2024-02-19\"\n * >\n * <StaticCard width=\"fit-content\" padding={2}>\n * My new feature\n * </StaticCard>\n * </WizardNudge>\n * ```\n */\nexport const WizardNudge = ({\n children,\n name,\n onClose,\n content,\n ...props\n}: WizardNudgeProps) => {\n const [currentStep, setCurrentStep] = useState(1);\n const totalSteps = content.length;\n const isLastStep = totalSteps === currentStep;\n const onNext = () => setCurrentStep((prev) => prev + 1);\n\n return (\n <Nudge\n onClose={onClose}\n name={name}\n content={content[currentStep - 1]}\n actions={\n <Flex gap={3} alignItems=\"center\">\n <ProgressIndicator\n activeStep={currentStep}\n numberOfSteps={totalSteps}\n />\n <Box>\n <NextOrCloseButton isLastStep={isLastStep} onNext={onNext} />\n </Box>\n </Flex>\n }\n {...props}\n >\n {children}\n </Nudge>\n );\n};\n\ntype NextOrCloseButtonProps = {\n isLastStep: boolean;\n onNext: () => void;\n};\nconst NextOrCloseButton = ({ isLastStep, onNext }: NextOrCloseButtonProps) => {\n const { onClose } = usePopoverContext();\n const { t } = useTranslation();\n return (\n <Button\n variant=\"tertiary\"\n size=\"xs\"\n leftIcon={isLastStep ? undefined : <ArrowRightFill18Icon />}\n onClick={isLastStep ? onClose : onNext}\n width=\"fit-content\"\n >\n {t(isLastStep ? texts.finish : 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 finish: {\n nb: \"Fullfør\",\n nn: \"Fullfør\",\n sv: \"Fullför\",\n en: \"Finish\",\n },\n});\n","import React from \"react\";\nimport { Center, createTexts, useTranslation, Flex, TextLink } from \"..\";\nimport {\n ListItem,\n UnorderedList,\n useMultiStyleConfig,\n Link,\n} from \"@chakra-ui/react\";\nimport {\n DropdownLeftFill18Icon,\n DropdownRightFill18Icon,\n} from \"@vygruppen/spor-icon-react\";\n\ntype PaginationProps = {\n /** Specify the total amount of pages */\n totalPages: number;\n /** Specify the currently selected page */\n selectedPage: number;\n /** Callback for when a page is clicked */\n onPageChange: (selected: number) => void;\n};\n\n/**\n * A pagination component is used to navigate between multiple pages.\n *\n * You specify the total amount of pages and the currently selected page.\n *\n * ```tsx\n * <Pagination\n * totalPages={10}\n * selectedPage={3}\n * onPageChange={handlePageChange}\n * />\n * ```\n **/\n\nexport const Pagination = ({\n totalPages,\n selectedPage,\n onPageChange,\n}: PaginationProps) => {\n const { t } = useTranslation();\n\n const style = useMultiStyleConfig(\"Pagination\", { selectedPage });\n\n const hasPreviousPage = selectedPage > 1;\n const hasNextPage = selectedPage < totalPages;\n\n const renderPaginationButtons = () => {\n const displayPageNumbers = [];\n const maxVisiblePages = 8;\n if (totalPages <= maxVisiblePages) {\n displayPageNumbers.push(\n ...Array.from({ length: totalPages }, (_, i) => i + 1),\n );\n } else {\n if (selectedPage <= Math.floor(maxVisiblePages / 2) + 1) {\n // If selectedPage is near the beginning, display the first pages.\n displayPageNumbers.push(\n ...Array.from({ length: maxVisiblePages - 1 }, (_, i) => i + 1),\n );\n displayPageNumbers.push(\"...\");\n displayPageNumbers.push(totalPages);\n } else if (selectedPage >= totalPages - Math.floor(maxVisiblePages / 2)) {\n // If selectedPage is near the end, display the last pages.\n displayPageNumbers.push(1);\n displayPageNumbers.push(\"...\");\n displayPageNumbers.push(\n ...Array.from(\n { length: maxVisiblePages - 1 },\n (_, i) => totalPages - maxVisiblePages + 2 + i,\n ),\n );\n } else {\n // Display pages with \"...\" in the middle.\n displayPageNumbers.push(1);\n displayPageNumbers.push(\"...\");\n for (\n let i = selectedPage - Math.floor((maxVisiblePages - 3) / 2);\n i <= selectedPage + Math.floor((maxVisiblePages - 3) / 2);\n i++\n ) {\n displayPageNumbers.push(i);\n }\n displayPageNumbers.push(\"...\");\n displayPageNumbers.push(totalPages);\n }\n }\n return displayPageNumbers.map((pageNumber, index) =>\n pageNumber === \"...\" ? (\n <ListItem key={index} sx={style.listItem}>\n <Center>...</Center>\n </ListItem>\n ) : (\n <Link\n key={index}\n as={ListItem}\n onClick={() => {\n if (pageNumber !== \"...\") {\n onPageChange(+pageNumber);\n }\n }}\n padding={pageNumber === \"...\" ? 0 : undefined}\n sx={pageNumber === selectedPage ? style.activeButton : style.link}\n >\n {pageNumber}\n </Link>\n ),\n );\n };\n\n return (\n <Flex as=\"nav\" aria-label=\"pagination\">\n <UnorderedList\n display=\"flex\"\n listStyleType=\"none\"\n gap={[0, 1]}\n padding={0}\n margin={0}\n >\n <ListItem aria-label={t(texts.previousPage)}>\n <TextLink\n onClick={() => onPageChange(selectedPage - 1)}\n sx={hasPreviousPage ? style.link : style.disabled}\n >\n <DropdownLeftFill18Icon sx={style.icon} />\n </TextLink>\n </ListItem>\n {renderPaginationButtons()}\n <ListItem aria-label={t(texts.nextPage)}>\n <TextLink\n onClick={() => onPageChange(selectedPage + 1)}\n sx={hasNextPage ? style.link : style.disabled}\n >\n <DropdownRightFill18Icon sx={style.icon} />\n </TextLink>\n </ListItem>\n </UnorderedList>\n </Flex>\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});\n","import { useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { Box, createTexts, useTranslation } from \"..\";\nimport { ProgressDot } from \"./ProgressDot\";\n\ntype ProgressIndicatorProps = {\n numberOfSteps: number;\n activeStep: number;\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 */\nexport const ProgressIndicator = ({\n numberOfSteps,\n activeStep,\n}: ProgressIndicatorProps) => {\n const { t } = useTranslation();\n const style = useMultiStyleConfig(\"ProgressIndicator\");\n\n return (\n <Box\n __css={style.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 >\n <Box __css={style.container}>\n {Array.from({ length: numberOfSteps }, (_, i) => (\n <ProgressDot\n key={i}\n aria-value={i + 1}\n isActive={activeStep === i + 1}\n />\n ))}\n </Box>\n </Box>\n );\n};\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","import React from \"react\";\nimport { Box } from \"..\";\nimport { useMultiStyleConfig } from \"@chakra-ui/react\";\n\ntype ProgressDot = {\n isActive: boolean;\n};\n\nexport const ProgressDot = ({ isActive }: ProgressDot) => {\n const style = useMultiStyleConfig(\"ProgressIndicator\");\n return (\n <Box\n as=\"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 <Box as=\"circle\" cx=\"50\" cy=\"50\" r=\"50\" />\n </Box>\n );\n};\n","import { ChakraProvider, ChakraProviderProps } from \"@chakra-ui/react\";\nimport { Global } from \"@emotion/react\";\nimport deepmerge from \"deepmerge\";\nimport React from \"react\";\nimport { Language, LanguageProvider } from \"..\";\nimport { Brand, brandTheme, theme as defaultSporTheme, fontFaces } from \"../\";\n\ntype SporProviderProps = ChakraProviderProps & {\n language?: Language;\n brand?: Brand;\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\";\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 theme = defaultSporTheme,\n language = Language.NorwegianBokmal,\n brand = Brand.VyDigital,\n children,\n ...props\n}: SporProviderProps) => {\n const brandCustomizations = brandTheme[brand] ?? {};\n\n const extendedTheme = deepmerge(theme, brandCustomizations);\n\n return (\n <LanguageProvider language={language}>\n <ChakraProvider theme={extendedTheme} {...props}>\n <Global styles={fontFaces} />\n {children}\n </ChakraProvider>\n </LanguageProvider>\n );\n};\n","import { Flex, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport { ArrowLeftFill24Icon } from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { StepperStep } from \".\";\nimport { Box, IconButton, Text, createTexts, useTranslation } from \"..\";\nimport { StepperProvider } from \"./StepperContext\";\n\ntype StepperProps = {\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 /**\n * Heading shown on smaller devices\n * @deprecated Use `heading` instead\n */\n title?: string;\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 * \"base\" has a transparent background,\n * while \"accent\" has a slight accent color */\n variant: \"base\" | \"accent\";\n /** Disables all clicks */\n isDisabled?: 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 **/\nexport const Stepper = ({\n onClick = () => {},\n onBackButtonClick,\n steps,\n activeStep: activeStepAsStringOrNumber,\n title,\n heading,\n headingLevel,\n variant,\n isDisabled,\n}: StepperProps) => {\n const style = useMultiStyleConfig(\"Stepper\", { variant });\n const numberOfSteps = steps.length;\n const activeStep = Number(activeStepAsStringOrNumber);\n const { t } = useTranslation();\n const hideBackButtonOnFirstStep = activeStep === 1 && !onBackButtonClick;\n const shownHeading = heading || title;\n return (\n <Box sx={style.root}>\n <StepperProvider\n onClick={onClick}\n activeStep={activeStep}\n variant={variant}\n numberOfSteps={numberOfSteps}\n >\n <Box sx={style.container}>\n <Box sx={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 {shownHeading && (\n <Text flex={1} variant=\"sm\" as={headingLevel} sx={style.title}>\n {shownHeading}\n </Text>\n )}\n <Box sx={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 isDisabled={isDisabled}\n >\n {step}\n </StepperStep>\n ))}\n </Flex>\n </Box>\n </StepperProvider>\n </Box>\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","import 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 = \"base\" | \"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","import { useColorModeValue, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport { DropdownRightFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { Box, Button, Text } from \"..\";\nimport { useStepper } from \"./StepperContext\";\n\ntype StepperStepProps = {\n children: React.ReactNode;\n stepNumber: number;\n variant: \"base\" | \"accent\";\n isDisabled?: boolean;\n};\nexport const StepperStep = ({\n children,\n stepNumber,\n variant,\n isDisabled: isDisabledOverride,\n}: StepperStepProps) => {\n const { activeStep, onClick } = useStepper();\n const state = getState(stepNumber, activeStep);\n const style = useMultiStyleConfig(\"Stepper\", {\n state,\n variant,\n });\n const disabledTextColor = useColorModeValue(\n \"blackAlpha.400\",\n \"whiteAlpha.400\",\n );\n const iconColor = useColorModeValue(\"blackAlpha.200\", \"whiteAlpha.200\");\n\n const isDisabled =\n (state !== \"active\" && isDisabledOverride) || state === \"disabled\";\n\n return (\n <Box sx={style.stepContainer}>\n {stepNumber > 1 && (\n <DropdownRightFill18Icon\n marginX={5}\n display={[\"none\", null, \"block\"]}\n color={iconColor}\n />\n )}\n {isDisabled ? (\n <Text\n variant=\"xs\"\n fontSize=\"16px\"\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 sx={style.stepButton}\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","export { Tab, TabList, TabPanel, TabPanels } from \"@chakra-ui/react\";\nexport type {\n TabListProps,\n TabPanelProps,\n TabPanelsProps,\n TabProps,\n} from \"@chakra-ui/react\";\nexport { Tabs } from \"./Tabs\";\nexport type { TabsProps } from \"./Tabs\";\n","import {\n Tabs as ChakraTabs,\n TabsProps as ChakraTabsProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport type TabsProps = Exclude<\n ChakraTabsProps,\n \"colorScheme\" | \"variant\" | \"orientation\" | \"size\"\n> & {\n /** Defaults to `base` */\n variant: \"base\" | \"accent\";\n /** Defaults to `sm` */\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n};\nexport const Tabs = forwardRef<TabsProps, \"div\">((props, ref) => {\n return <ChakraTabs {...props} ref={ref} />;\n});\n","export {\n TableCaption,\n Tbody,\n Td,\n Tfoot,\n Th,\n Thead,\n Tr,\n} from \"@chakra-ui/react\";\nexport type {\n TableBodyProps,\n TableCaptionProps,\n TableCellProps,\n TableColumnHeaderProps,\n TableFooterProps,\n TableHeadProps,\n TableRowProps,\n} from \"@chakra-ui/react\";\nexport * from \"./Table\";\n","import {\n Box,\n forwardRef,\n Table as ChakraTable,\n TableProps as ChakraTableProps,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type TableProps = Omit<ChakraTableProps, \"variant\" | \"colorScheme\"> & {\n variant?: \"simple\" | \"outline\";\n colorScheme?: \"grey\" | \"green\";\n};\n/**\n * These components are used the same way as in Chakra UI. Please refer to [their documentation](https://chakra-ui.com/docs/data-display/table).\n *\n * The `Table` component has support for two different variants - `simple` and `outline`. The `simple` variant has basic lines between rows, while the `outline` variant has borders for each cell, plus a hover effect per row.\n *\n * You can also specify a `grey` or `green` `colorScheme` 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=\"outlined\" size=\"lg\">\n * <Thead>\n * ...\n * </Thead>\n * ...\n * </Table>\n * ```\n */\nexport const Table = forwardRef<TableProps, \"table\">((props, ref) => {\n const { variant, size, colorScheme, children, ...rest } = props;\n return (\n <Box {...rest} {...getStyleProps(props)}>\n <Box overflowX=\"auto\" role=\"region\">\n <ChakraTable\n variant={variant}\n size={size}\n colorScheme={colorScheme}\n ref={ref}\n >\n {children}\n </ChakraTable>\n </Box>\n </Box>\n );\n});\n\nfunction getStyleProps(props: TableProps) {\n return props.variant === \"outline\"\n ? {\n border: \"1px solid\",\n borderColor: props.colorScheme === \"grey\" ? \"silver\" : \"blackAlpha.200\",\n overflow: \"hidden\",\n borderRadius: \"md\",\n }\n : {};\n}\n","import { theme as defaultTheme } from \"@chakra-ui/theme\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\nimport * as components from \"./components\";\nimport * as foundations from \"./foundations\";\n\nexport enum Brand {\n VyDigital = \"VyDigital\",\n VyUtvikling = \"VyUtvikling\",\n CargoNet = \"CargoNet\",\n}\n\nexport const theme = {\n ...defaultTheme,\n ...foundations,\n components: {\n ...defaultTheme.components,\n ...components,\n },\n};\n\nexport const brandTheme = {\n [Brand.VyDigital]: {},\n [Brand.VyUtvikling]: {\n colors: {\n bg: {\n default: {\n dark: foundations.colors.darkGrey,\n },\n },\n surface: {\n default: {\n dark: foundations.colors.darkGrey,\n },\n },\n },\n },\n [Brand.CargoNet]: {\n colors: tokens.color.cargonet as any,\n },\n};\n\nexport { fontFaces } from \"./font-faces\";\n","export { default as Accordion } from \"./accordion\";\nexport { default as Alert } from \"./alert\";\nexport { default as AlertExpandable } from \"./alert-expandable\";\nexport { default as AlertService } from \"./alert-service\";\nexport { default as Badge } from \"./badge\";\nexport { default as Breadcrumb } from \"./breadcrumb\";\nexport { default as Button } from \"./button\";\nexport { default as CardSelect } from \"./card-select\";\nexport { default as Checkbox } from \"./checkbox\";\nexport { default as ChoiceChip } from \"./choice-chip\";\nexport { default as CloseButton } from \"./close-button\";\nexport { default as Code } from \"./code\";\nexport { default as Datepicker } from \"./datepicker\";\nexport { default as Divider } from \"./divider\";\nexport { default as Drawer } from \"./drawer\";\nexport { default as FloatingActionButton } from \"./fab\";\nexport { default as Form } from \"./form\";\nexport { default as FormLabel } from \"./form-label\";\nexport { default as InfoSelect } from \"./info-select\";\nexport { default as InfoTag } from \"./info-tag\";\nexport { default as Input } from \"./input\";\nexport { default as LineIcon } from \"./line-icon\";\nexport { default as Link } from \"./link\";\nexport { default as List } from \"./list\";\nexport { default as ListBox } from \"./listbox\";\nexport { default as MediaControllerButton } from \"./media-controller-button\";\nexport { default as Modal } from \"./modal\";\nexport { default as NumericStepper } from \"./numeric-stepper\";\nexport { default as Pagination } from \"./pagination\";\nexport { default as Popover } from \"./popover\";\nexport { default as ProgressBar } from \"./progress-bar\";\nexport { default as ProgressIndicator } from \"./progress-indicator\";\nexport { default as RadioCard } from \"./radio-card\";\nexport { default as Radio } from \"./radio\";\nexport { default as Select } from \"./select\";\nexport { default as Skeleton } from \"./skeleton\";\nexport { default as Stepper } from \"./stepper\";\nexport { default as Switch } from \"./switch\";\nexport { default as Table } from \"./table\";\nexport { default as Tabs } from \"./tabs\";\nexport { default as Textarea } from \"./textarea\";\nexport { default as Toast } from \"./toast\";\nexport { default as StaticCard } from \"./static-card\";\nexport { default as PressableCard } from \"./pressable-card\";\nexport { default as TravelTag } from \"./travel-tag\";\n","import { accordionAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { floatingBackground, floatingBorder } from \"../utils/floating-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { ghostBackground } from \"../utils/ghost-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n borderRadius: \"sm\",\n },\n button: {\n transitionProperty:\n \"background-color, color, border-radius, box-shadow, opacity\",\n transitionDuration: \"fast\",\n borderRadius: \"sm\",\n display: \"flex\",\n justifyContent: \"space-between\",\n ...baseText(\"default\", props),\n textAlign: \"left\",\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 ...focusVisibleStyles(props),\n _disabled: {\n pointerEvents: \"none\",\n opacity: 0.4,\n },\n },\n panel: {\n paddingY: 2,\n paddingX: [2, null, 3],\n borderBottomRadius: \"sm\",\n fontSize: [\"mobile.sm\", null, \"desktop.sm\"],\n },\n icon: {\n fontSize: \"1.25em\",\n },\n }),\n variants: {\n ghost: (props) => ({\n button: {\n _hover: {\n ...ghostBackground(\"hover\", props),\n },\n _active: {\n ...ghostBackground(\"active\", props),\n },\n },\n }),\n base: (props) => ({\n container: {\n ...baseBorder(\"default\", props),\n },\n button: {\n _expanded: {\n borderBottomRadius: \"none\",\n },\n _hover: {\n ...baseBorder(\"hover\", props),\n outlineOffset: 0,\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"default\", props),\n },\n },\n }),\n floating: (props) => ({\n container: {\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n boxShadow: \"sm\",\n },\n button: {\n _expanded: {\n borderBottomRadius: \"none\",\n },\n _hover: {\n ...floatingBackground(\"hover\", props),\n ...floatingBorder(\"hover\", props),\n outlineOffset: 1,\n },\n _active: {\n ...ghostBackground(\"active\", props),\n ...floatingBorder(\"default\", props),\n },\n },\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { mode, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { brandBackground } from \"./brand-utils\";\nimport { focusVisibleStyles } from \"./focus-utils\";\nimport { surface } from \"./surface-utils\";\nimport { State, Subset } from \"./types\";\n\ntype BaseBackgroundState = Subset<\n State,\n \"default\" | \"active\" | \"selected\" | \"hover\" | \"disabled\"\n>;\nexport function baseBackground(\n state: BaseBackgroundState,\n props: StyleFunctionProps,\n) {\n switch (state) {\n case \"active\":\n return {\n backgroundColor: mode(\n \"base.surface.active.light\",\n \"base.surface.active.dark\",\n )(props),\n };\n case \"selected\":\n return brandBackground(\"default\", props);\n\n case \"disabled\":\n return surface(\"disabled\", props);\n case \"hover\":\n default:\n return { backgroundColor: \"transparent\" };\n }\n}\n\ntype BorderState = Subset<\n State,\n \"hover\" | \"focus\" | \"active\" | \"disabled\" | \"selected\" | \"invalid\" | \"default\"\n>;\n\nexport function baseBorder(state: BorderState, props: StyleFunctionProps) {\n switch (state) {\n case \"hover\":\n return {\n outline: \"2px solid\",\n outlineColor: mode(\n \"base.outline.hover.light\",\n \"base.outline.hover.dark\",\n )(props),\n };\n case \"focus\": {\n return focusVisibleStyles(props)._focusVisible;\n }\n case \"disabled\": {\n return {\n outline: \"1px solid\",\n outlineColor: mode(\n \"outline.disabled.light\",\n \"outline.disabled.dark\",\n )(props),\n };\n }\n case \"active\": {\n return {\n outline: \"1px solid\",\n outlineColor: mode(\n \"base.outline.default.light\",\n \"base.outline.default.dark\",\n )(props),\n };\n }\n case \"invalid\": {\n return {\n outline: \"2px solid\",\n outlineColor: mode(\"outline.error.light\", \"outline.error.dark\")(props),\n };\n }\n case \"default\":\n default:\n return {\n outline: \"1px solid\",\n outlineColor: mode(\n \"base.outline.default.light\",\n \"base.outline.default.dark\",\n )(props),\n };\n }\n}\n\ntype BaseTextState = Subset<State, \"default\" | \"selected\" | \"disabled\">;\nexport function baseText(state: BaseTextState, props: StyleFunctionProps) {\n switch (state) {\n case \"selected\":\n return {\n color: mode(\"brand.text.light\", \"brand.text.dark\")(props),\n };\n case \"disabled\":\n return {\n color: mode(\"text.disabled.light\", \"text.disabled.dark\")(props),\n };\n default:\n return {\n color: mode(\"base.text.light\", \"base.text.dark\")(props),\n };\n }\n}\n","import { mode, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { State, Subset } from \"./types\";\n\ntype BrandBackgroundState = Subset<State, \"default\" | \"hover\" | \"active\">;\n\nexport function brandBackground(\n state: BrandBackgroundState,\n props: StyleFunctionProps,\n) {\n switch (state) {\n case \"active\":\n return {\n backgroundColor: mode(\n \"brand.surface.active.light\",\n \"brand.surface.active.dark\",\n )(props),\n };\n case \"hover\":\n return {\n backgroundColor: mode(\n \"brand.surface.hover.light\",\n \"brand.surface.hover.dark\",\n )(props),\n };\n case \"default\":\n default:\n return {\n backgroundColor: mode(\n \"brand.surface.default.light\",\n \"brand.surface.default.dark\",\n )(props),\n };\n }\n}\n\ntype BrandTextState = Subset<State, \"hover\" | \"active\" | \"default\">;\n\nexport function brandText(state: BrandTextState, props: StyleFunctionProps) {\n return {\n color: mode(\"brand.text.light\", \"brand.text.dark\")(props),\n };\n}\n","import { mode, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\n\nexport const focusVisibleStyles = (props: StyleFunctionProps) => ({\n _focusVisible: {\n outlineWidth: \"2px\",\n outlineColor: mode(\"outline.focus.light\", \"outline.focus.dark\")(props),\n outlineStyle: \"solid\",\n outlineOffset: \"1px\",\n },\n});\n","import { mode } from \"@chakra-ui/theme-tools\";\n\ntype Surface = \"default\" | \"secondary\" | \"tertiary\" | \"disabled\";\nexport const surface = (surface: Surface, props: any) => {\n switch (surface) {\n case \"default\":\n return {\n backgroundColor: mode(\n \"surface.default.light\",\n \"surface.default.dark\",\n )(props),\n };\n case \"secondary\":\n return {\n backgroundColor: mode(\n \"surface.secondary.light\",\n \"surface.secondary.dark\",\n )(props),\n };\n case \"tertiary\":\n return {\n backgroundColor: mode(\n \"surface.tertiary.light\",\n \"surface.tertiary.dark\",\n )(props),\n };\n case \"disabled\":\n return {\n backgroundColor: mode(\n \"surface.disabled.light\",\n \"surface.disabled.dark\",\n )(props),\n };\n }\n};\n","import { mode, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { brandBackground } from \"./brand-utils\";\nimport { State, Subset } from \"./types\";\n\ntype FloatingBackgroundState = Subset<\n State,\n \"default\" | \"hover\" | \"active\" | \"selected\"\n>;\n\nexport function floatingBackground(\n state: FloatingBackgroundState,\n props: StyleFunctionProps,\n) {\n switch (state) {\n case \"selected\":\n return brandBackground(\"default\", props);\n case \"active\":\n return {\n backgroundColor: mode(\n \"floating.surface.active.light\",\n \"floating.surface.active.dark\",\n )(props),\n };\n case \"hover\":\n return {\n backgroundColor: mode(\n \"floating.surface.hover.light\",\n `color-mix(in srgb, white 10%, var(--spor-colors-bg-default-dark))`,\n )(props),\n };\n case \"default\":\n return {\n backgroundColor: mode(\n \"white\",\n `color-mix(in srgb, white 10%, var(--spor-colors-bg-default-dark))`,\n )(props),\n };\n }\n}\n\ntype FloatingBorderState = Subset<\n State,\n \"default\" | \"hover\" | \"active\" | \"selected\"\n>;\nexport function floatingBorder(\n state: FloatingBorderState,\n props: StyleFunctionProps,\n) {\n switch (state) {\n case \"hover\":\n return {\n outline: \"1px solid\",\n outlineColor: mode(\n \"floating.outline.hover.light\",\n \"floating.outline.hover.dark\",\n )(props),\n };\n case \"selected\":\n return {\n outline: \"1px solid\",\n outlineColor: mode(\"outline.focus.light\", \"outline.focus.dark\")(props),\n };\n case \"active\":\n return {\n outline: \"1px solid\",\n outlineColor: mode(\n \"floating.outline.active.light\",\n \"floating.outline.active.dark\",\n )(props),\n };\n default:\n return {\n outline: \"1px solid\",\n outlineColor: mode(\n \"floating.outline.default.light\",\n \"floating.outline.default.dark\",\n )(props),\n };\n }\n}\n","import { mode, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { State, Subset } from \"./types\";\nimport { fontWeights } from \"../foundations\";\n\ntype GhostBackgroundState = Subset<\n State,\n \"default\" | \"hover\" | \"active\" | \"selected\"\n>;\n\n/** 👻👻👻👻👻👻👻👻👻👻👻👻👻👻 */\nexport function ghostBackground(\n state: GhostBackgroundState,\n props: StyleFunctionProps,\n) {\n switch (state) {\n case \"hover\": {\n return {\n backgroundColor: mode(\n \"ghost.surface.hover.light\",\n \"ghost.surface.hover.dark\",\n )(props),\n };\n }\n case \"active\":\n return {\n backgroundColor: mode(\n \"ghost.surface.active.light\",\n \"ghost.surface.active.dark\",\n )(props),\n };\n case \"selected\": {\n return {\n backgroundColor: mode(\n \"ghost.surface.hover.light\",\n \"ghost.surface.hover.dark\",\n )(props),\n };\n }\n case \"default\":\n return {\n backgroundColor: \"transparent\",\n };\n }\n}\n\ntype GhostTextState = Subset<State, \"default\" | \"selected\">;\n\nexport function ghostText(state: GhostTextState, props: StyleFunctionProps) {\n switch (state) {\n case \"selected\":\n return {\n color: mode(\"ghost.text.light\", \"ghost.text.dark\")(props),\n };\n default:\n return {\n color: mode(\"ghost.text.light\", \"ghost.text.dark\")(props),\n };\n }\n}\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\n\nconst parts = anatomy(\"alert\").parts(\"container\", \"icon\", \"closeButton\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: {\n container: {\n borderRadius: \"sm\",\n color: \"darkGrey\",\n paddingX: 3,\n paddingY: 2,\n display: \"flex\",\n position: \"relative\",\n textStyle: \"sm\",\n },\n icon: {\n marginRight: 1,\n },\n closeButton: {\n position: \"absolute\",\n top: 1,\n right: 1,\n color: \"darkGrey\",\n },\n },\n variants: {\n success: {\n container: {\n backgroundColor: \"seaMist\",\n },\n },\n info: {\n container: {\n backgroundColor: \"lightBlue\",\n },\n },\n warning: {\n container: {\n backgroundColor: \"blonde\",\n },\n },\n error: {\n container: {\n backgroundColor: \"lightRed\",\n },\n },\n \"alt-transport\": {\n container: {\n backgroundColor: \"banana\",\n },\n },\n \"global-deviation\": {\n container: {\n backgroundColor: \"blonde\",\n },\n },\n service: {\n container: {\n backgroundColor: \"darkTeal\",\n color: \"white\",\n },\n },\n },\n defaultProps: {\n variant: \"info\",\n },\n});\n\nexport default config;\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\n\nconst parts = anatomy(\"alertExpandable\").parts(\"container\", \"accordion\");\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: {\n container: {\n paddingX: 3,\n paddingY: 2,\n fontSize: \"inherit\",\n transitionProperty: \"outline, border-radius\",\n transitionDuration: \"fast\",\n _expanded: {\n borderBottomRadius: \"none\",\n },\n _hover: {\n outline: \"2px solid\",\n },\n },\n },\n variants: {\n info: {\n accordion: {\n outlineColor: \"cloudy\",\n },\n container: {\n _hover: {\n backgroundColor: \"cloudy\",\n outlineColor: \"sky\",\n },\n _active: {\n backgroundColor: \"icyBlue\",\n },\n _focus: {\n outlineColor: \"greenHaze\",\n },\n },\n },\n success: {\n accordion: {\n outlineColor: \"coralGreen\",\n },\n container: {\n _hover: {\n backgroundColor: \"coralGreen\",\n outlineColor: \"blueGreen\",\n },\n _active: {\n backgroundColor: \"mint\",\n },\n _focus: {\n outlineColor: \"greenHaze\",\n },\n },\n },\n warning: {\n accordion: {\n outlineColor: \"primrose\",\n },\n container: {\n _hover: {\n backgroundColor: \"primrose\",\n outlineColor: \"banana\",\n },\n _focus: {\n outlineColor: \"greenHaze\",\n },\n _active: {\n backgroundColor: \"cornSilk\",\n },\n },\n },\n \"alt-transport\": {\n accordion: {\n outlineColor: \"burntYellow\",\n },\n container: {\n _hover: {\n backgroundColor: \"burntYellow\",\n outlineColor: \"golden\",\n },\n _focus: {\n outlineColor: \"greenHaze\",\n },\n _active: {\n backgroundColor: \"sunshine\",\n },\n },\n },\n error: {\n accordion: {\n outlineColor: \"salmon\",\n },\n container: {\n _hover: {\n backgroundColor: \"salmon\",\n outlineColor: \"apricot\",\n },\n _active: {\n backgroundColor: \"pink\",\n },\n _focus: {\n outlineColor: \"greenHaze\",\n },\n },\n },\n service: {\n container: {\n _hover: {\n outlineColor: \"blueGreen\",\n },\n _active: {\n backgroundColor: \"pine\",\n },\n },\n },\n },\n defaultProps: {\n variant: \"info\",\n },\n});\n\nexport default config;\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\n\nconst parts = anatomy(\"alertService\").parts(\n \"container\",\n \"outerBox\",\n \"notificationText\",\n \"serviceMessageContent\",\n);\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: {\n container: {\n paddingX: 0,\n paddingY: 2,\n fontSize: \"inherit\",\n transitionProperty: \"outline, border-radius\",\n transitionDuration: \"fast\",\n borderTopRadius: \"none\",\n borderBottomRadius: \"md\",\n _hover: {\n outline: \"2px solid\",\n },\n },\n outerBox: {\n outline: \"1px solid\",\n borderBottomRadius: \"md\",\n borderTopRadius: \"none\",\n width: \"100%\",\n },\n notificationText: {\n fontWeight: \"400\",\n fontSize: \"1rem\",\n pr: \"0.375rem\",\n },\n serviceMessageContent: {\n paddingX: \"0.75rem\",\n paddingTop: \"0.375rem\",\n paddingBottom: \"0.9375rem\",\n },\n },\n variants: {\n \"global-deviation\": {\n container: {\n _hover: {\n backgroundColor: \"teal.600\",\n outlineColor: \"teal.600\",\n },\n _focus: {\n outlineColor: \"green.500\",\n },\n _active: {\n backgroundColor: \"teal.400\",\n outlineColor: \"pine\",\n },\n color: \"white\",\n },\n outerBox: {\n outlineColor: \"blueGreen\",\n backgroundColor: \"darkTeal\",\n },\n notificationText: {\n color: \"white\",\n },\n serviceMessageContent: {\n color: \"white\",\n },\n },\n service: {\n container: {\n _hover: {\n backgroundColor: \"teal.600\",\n outlineColor: \"teal.600\",\n },\n _focus: {\n outlineColor: \"green.500\",\n },\n _active: {\n backgroundColor: \"teal.400\",\n outlineColor: \"pine\",\n },\n color: \"white\",\n },\n outerBox: {\n outlineColor: \"blueGreen\",\n backgroundColor: \"darkTeal\",\n },\n notificationText: {\n color: \"white\",\n },\n serviceMessageContent: {\n color: \"white\",\n },\n },\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\n\nconst config = defineStyleConfig({\n baseStyle: ({ colorScheme }) => ({\n borderStyle: \"solid\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n borderRadius: \"xl\",\n fontWeight: \"bold\",\n paddingLeft: [2, 3],\n paddingRight: [2, 3],\n minHeight: [4, 5],\n ...getColorScheme(colorScheme as ColorScheme),\n }),\n variants: {\n solid: {\n borderWidth: 0,\n },\n outline: {\n borderWidth: 1,\n },\n },\n defaultProps: {\n variant: \"solid\",\n colorScheme: \"grey\",\n },\n});\n\nexport default config;\n\nfunction getColorScheme(colorScheme: ColorScheme) {\n let styles = colorCombinations[colorScheme];\n if (!styles && process.env.NODE_ENV === \"development\") {\n console.warn(`Invalid color scheme ${colorScheme} provided.`);\n styles = colorCombinations.grey;\n }\n return styles;\n}\n\ntype ColorScheme =\n | \"yellow\"\n | \"light-yellow\"\n | \"red\"\n | \"light-green\"\n | \"dark-green\"\n | \"orange\"\n | \"light-blue\"\n | \"dark-blue\"\n | \"grey\"\n | \"white\";\ntype ColorSpec = {\n backgroundColor: string;\n color: string;\n borderColor?: string;\n};\nconst colorCombinations: Record<ColorScheme, ColorSpec> = {\n yellow: {\n backgroundColor: \"banana\",\n borderColor: \"darkGrey\",\n color: \"darkGrey\",\n },\n \"light-yellow\": {\n backgroundColor: \"blonde\",\n borderColor: \"golden\",\n color: \"darkGrey\",\n },\n red: {\n backgroundColor: \"lightRed\",\n borderColor: \"brightRed\",\n color: \"darkGrey\",\n },\n \"light-green\": {\n backgroundColor: \"seaMist\",\n borderColor: \"darkTeal\",\n color: \"darkTeal\",\n },\n \"dark-green\": {\n backgroundColor: \"celadon\",\n borderColor: \"blueGreen\",\n color: \"white\",\n },\n orange: {\n backgroundColor: \"champagne\",\n borderColor: \"pumpkin\",\n color: \"darkGrey\",\n },\n \"light-blue\": {\n backgroundColor: \"lightBlue\",\n borderColor: \"ocean\",\n color: \"darkBlue\",\n },\n \"dark-blue\": {\n backgroundColor: \"darkBlue\",\n borderColor: \"sky\",\n color: \"white\",\n },\n grey: {\n backgroundColor: \"platinum\",\n borderColor: \"darkGrey\",\n color: \"darkGrey\",\n },\n white: {\n backgroundColor: \"white\",\n borderColor: \"silver\",\n color: \"darkGrey\",\n },\n};\n","import { breadcrumbAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\nimport { baseBackground, baseBorder } from \"../utils/base-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { ghostBackground } from \"../utils/ghost-utils\";\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys);\n\nexport default defineMultiStyleConfig({\n baseStyle: definePartsStyle((props) => ({\n link: {\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n transitionTimingFunction: \"ease-out\",\n color: \"inherit\",\n textDecoration: \"none\",\n textStyle: \"xs\",\n paddingX: 0.5,\n borderRadius: \"xs\",\n \"&:not([aria-current=page])\": {\n cursor: \"pointer\",\n ...focusVisibleStyles(props),\n },\n },\n list: {\n flexWrap: \"wrap\",\n alignItems: \"flex-start\",\n },\n })),\n variants: {\n base: (props) => ({\n link: {\n \"&:not([aria-current=page])\": {\n _hover: {\n ...baseBorder(\"default\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n },\n },\n },\n }),\n ghost: (props) => ({\n link: {\n \"&:not([aria-current=page])\": {\n _hover: {\n ...ghostBackground(\"hover\", props),\n },\n _active: {\n ...ghostBackground(\"active\", props),\n },\n },\n },\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\n","import { defineStyleConfig } from \"@chakra-ui/react\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { floatingBackground, floatingBorder } from \"../utils/floating-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { ghostBackground } from \"../utils/ghost-utils\";\nimport { surface } from \"../utils/surface-utils\";\nimport { accentBackground, accentText } from \"../utils/accent-utils\";\n\nconst config = defineStyleConfig({\n baseStyle: (props) => ({\n border: 0,\n borderRadius: \"xl\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n textWrap: \"wrap\",\n paddingX: 3,\n paddingY: 1,\n ...focusVisibleStyles(props),\n _disabled: {\n cursor: \"not-allowed\",\n pointerEvents: \"none\",\n boxShadow: \"none\",\n ...surface(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n }),\n variants: {\n primary: (props) => ({\n ...brandBackground(\"default\", props),\n ...brandText(\"default\", props),\n _hover: {\n ...brandBackground(\"hover\", props),\n },\n _active: {\n ...brandBackground(\"active\", props),\n },\n }),\n secondary: (props) => ({\n ...accentBackground(\"default\", props),\n ...accentText(\"default\", props),\n _hover: {\n ...accentBackground(\"hover\", props),\n },\n _active: {\n ...accentBackground(\"active\", props),\n },\n }),\n tertiary: (props) => ({\n ...baseBackground(\"default\", props),\n ...baseText(\"default\", props),\n ...baseBorder(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBorder(\"default\", props),\n ...baseBackground(\"active\", props),\n },\n }),\n ghost: (props) => ({\n ...ghostBackground(\"default\", props),\n ...baseText(\"default\", props),\n _hover: {\n ...ghostBackground(\"hover\", props),\n _disabled: {\n ...baseText(\"disabled\", props),\n },\n },\n _active: {\n ...ghostBackground(\"active\", props),\n },\n }),\n floating: (props) => ({\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n boxShadow: \"sm\",\n _hover: {\n ...floatingBackground(\"hover\", props),\n ...floatingBorder(\"hover\", props),\n boxShadow: \"md\",\n },\n _active: {\n ...floatingBackground(\"active\", props),\n boxShadow: \"sm\",\n },\n }),\n },\n sizes: {\n lg: {\n minHeight: 8,\n minWidth: 8,\n fontSize: \"sm\",\n fontWeight: \"bold\",\n },\n md: {\n minHeight: 7,\n minWidth: 7,\n fontSize: \"sm\",\n fontWeight: \"bold\",\n },\n sm: {\n minHeight: 6,\n minWidth: 6,\n fontSize: \"xs\",\n fontWeight: \"normal\",\n },\n xs: {\n minHeight: 5,\n minWidth: 5,\n paddingY: 0.5,\n fontSize: \"xs\",\n fontWeight: \"normal\",\n },\n },\n defaultProps: {\n variant: \"primary\",\n size: \"md\",\n },\n});\n\nexport default config;\n","import { mode, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { brandBackground } from \"./brand-utils\";\nimport { State, Subset } from \"./types\";\n\ntype AccentBackgroundState = Subset<\n State,\n \"default\" | \"hover\" | \"active\" | \"selected\"\n>;\n\nexport function accentBackground(\n state: AccentBackgroundState,\n props: StyleFunctionProps,\n) {\n switch (state) {\n case \"selected\":\n return brandBackground(\"default\", props);\n case \"active\":\n return {\n backgroundColor: mode(\n \"accent.surface.active.light\",\n \"accent.surface.active.dark\",\n )(props),\n };\n case \"hover\":\n return {\n backgroundColor: mode(\n \"accent.surface.hover.light\",\n \"accent.surface.hover.dark\",\n )(props),\n };\n default:\n return {\n backgroundColor: mode(\n \"accent.surface.default.light\",\n \"accent.surface.default.dark\",\n )(props),\n };\n }\n}\n\ntype AccentTextState = Subset<State, \"default\" | \"selected\">;\n\nexport function accentText(state: AccentTextState, props: StyleFunctionProps) {\n switch (state) {\n case \"selected\":\n return {\n color: mode(\"brand.text.light\", \"brand.text.dark\")(props),\n };\n default:\n return {\n color: mode(\"accent.text.light\", \"accent.text.dark\")(props),\n };\n }\n}\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\nimport { mode } from \"@chakra-ui/theme-tools\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { floatingBackground, floatingBorder } from \"../utils/floating-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { ghostBackground, ghostText } from \"../utils/ghost-utils\";\nimport { fontWeights } from \"../foundations\";\n\nconst parts = anatomy(\"card-select\").parts(\"trigger\", \"card\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n trigger: {\n appearance: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n transitionProperty: \"outline\",\n transitionDuration: \"fast\",\n ...baseText(\"default\", props),\n ...focusVisibleStyles(props),\n },\n card: {\n borderRadius: \"sm\",\n boxShadow: \"xs\",\n padding: 2,\n ...baseText(\"default\", props),\n backgroundColor: mode(\n \"white\",\n `color-mix(in srgb, white 10%, var(--spor-colors-bg-default-dark))`,\n )(props),\n },\n }),\n variants: {\n base: (props) => ({\n trigger: {\n ...baseBorder(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"default\", props),\n },\n _expanded: {\n ...baseBackground(\"active\", props),\n },\n },\n }),\n ghost: (props) => ({\n trigger: {\n _hover: {\n ...ghostBackground(\"hover\", props),\n },\n _active: {\n ...ghostBackground(\"active\", props),\n },\n _expanded: {\n ...ghostBackground(\"active\", props),\n fontWeight: fontWeights.bold,\n },\n },\n }),\n floating: (props) => ({\n trigger: {\n boxShadow: \"sm\",\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n transition: \"all .1s ease-out\",\n _hover: {\n ...floatingBackground(\"hover\", props),\n ...floatingBorder(\"hover\", props),\n },\n _active: {\n ...floatingBackground(\"active\", props),\n ...floatingBorder(\"active\", props),\n },\n _expanded: {\n ...floatingBackground(\"active\", props),\n },\n },\n card: {},\n }),\n },\n sizes: {\n sm: {\n trigger: {\n paddingX: 1.5,\n paddingY: 1,\n minHeight: \"1.25rem\",\n fontSize: \"xs\",\n borderRadius: \"lg\",\n },\n },\n md: {\n trigger: {\n paddingX: 2,\n paddingY: 1.5,\n minHeight: \"2.625rem\",\n fontSize: \"xs\",\n borderRadius: \"lg\",\n },\n },\n lg: {\n trigger: {\n paddingX: 3,\n paddingY: 2,\n minHeight: \"3.375rem\",\n fontSize: \"sm\",\n borderRadius: \"lg\",\n },\n },\n },\n});\n\nexport default config;\n","export * from \"./borders\";\nexport * from \"./breakpoints\";\nexport * from \"./colors\";\nexport * from \"./config\";\nexport * from \"./fonts\";\nexport * from \"./fontSizes\";\nexport * from \"./fontWeights\";\nexport * from \"./lineHeights\";\nexport * from \"./radii\";\nexport * from \"./shadows\";\nexport * from \"./sizes\";\nexport * from \"./spacing\";\nexport * from \"./textStyles\";\nexport * from \"./zIndices\";\nexport * from \"./styles\";\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const borders = {\n none: \"0\",\n sm: `${tokens.size.stroke.sm} solid`,\n \"sm-dashed\": `${tokens.size.stroke.sm} dashed`,\n md: `${tokens.size.stroke.md} solid`,\n \"md-dashed\": `${tokens.size.stroke.md} dashed`,\n lg: `${tokens.size.stroke.lg} solid`,\n \"lg-dashed\": `${tokens.size.stroke.lg} dashed`,\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const breakpoints = {\n base: \"0px\",\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 \"2xl\": tokens.size.breakpoint.xl,\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport type ColorsType = typeof tokens.color.alias &\n typeof tokens.color.palette &\n typeof tokens.color.vyDigital & { linjetag: typeof tokens.color.linjetag };\n\nexport const colors: ColorsType = {\n ...tokens.color.alias,\n ...tokens.color.palette,\n ...tokens.color.vyDigital,\n linjetag: tokens.color.linjetag,\n};\n","export const config = {\n cssVarPrefix: \"spor\",\n initialColorMode: \"light\",\n useSystemColorMode: false,\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const fonts = {\n body: `${tokens.font.family.body}, arial, sans-serif`,\n heading: `${tokens.font.family.heading}, arial, sans-serif`,\n mono: `${tokens.font.family.monospace}, monospace`,\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const fontSizes = {\n \"2xs\": tokens.size.font.xs.mobile,\n xs: tokens.size.font.sm.mobile,\n sm: tokens.size.font.md.mobile,\n md: tokens.size.font.lg.mobile,\n lg: tokens.size.font.xl.mobile,\n xl: tokens.size.font.xxl.mobile,\n \"2xl\": tokens.size.font.xl.desktop,\n \"3xl\": tokens.size.font.xxl.desktop,\n\n mobile: {\n xs: tokens.size.font.xs.mobile,\n sm: tokens.size.font.sm.mobile,\n md: tokens.size.font.md.mobile,\n lg: tokens.size.font.lg.mobile,\n xl: tokens.size.font.xl.mobile,\n xxl: tokens.size.font.xxl.mobile,\n },\n desktop: {\n xs: tokens.size.font.xs.desktop,\n sm: tokens.size.font.sm.desktop,\n md: tokens.size.font.md.desktop,\n lg: tokens.size.font.lg.desktop,\n xl: tokens.size.font.xl.desktop,\n xxl: tokens.size.font.xxl.desktop,\n },\n};\n","export const fontWeights = {\n light: 300,\n medium: 400,\n bold: 700,\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const lineHeights = {\n base: tokens.font.style.lg[\"line-height\"],\n normal: tokens.font.style.lg[\"line-height\"],\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const radii = {\n none: tokens.size[\"border-radius\"].none,\n xs: tokens.size[\"border-radius\"].xs,\n sm: tokens.size[\"border-radius\"].sm,\n md: tokens.size[\"border-radius\"].md,\n lg: tokens.size[\"border-radius\"].lg,\n xl: tokens.size[\"border-radius\"].xl,\n \"2xl\": tokens.size[\"border-radius\"][\"2xl\"],\n round: \"50%\",\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const shadows = {\n none: \"none\",\n sm: tokens.depth.shadow.sm.value,\n md: tokens.depth.shadow.md.value,\n lg: tokens.depth.shadow.lg.value,\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\nimport { spacing } from \"./spacing\";\n\nconst largeSizes = {\n max: \"max-content\",\n min: \"min-content\",\n full: \"100%\",\n \"3xs\": \"14rem\",\n \"2xs\": \"16rem\",\n xs: \"20rem\",\n sm: \"24rem\",\n md: \"28rem\",\n lg: \"32rem\",\n xl: \"36rem\",\n \"2xl\": \"42rem\",\n \"3xl\": \"48rem\",\n \"4xl\": \"56rem\",\n \"5xl\": \"64rem\",\n \"6xl\": \"72rem\",\n \"7xl\": \"80rem\",\n \"8xl\": \"90rem\",\n};\n\nconst container = {\n base: \"0px\",\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\nexport const sizes = {\n ...spacing,\n ...largeSizes,\n container,\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\ntype Token = { value: { number: number } };\ntype Spacing = {\n 0: Token;\n 0.5: Token;\n 1: Token;\n 1.5: Token;\n 2: Token;\n 2.5: Token;\n 3: Token;\n 4: Token;\n 5: Token;\n 6: Token;\n 7: Token;\n 8: Token;\n 9: Token;\n 10: Token;\n 11: Token;\n 12: Token;\n};\n\nexport const spacing = Object.entries(tokens.size.spacing).reduce(\n (tokens, [key, token]) => ({\n ...tokens,\n [Number(key)]: token,\n }),\n {} as Record<keyof Spacing, string>,\n);\n\nexport const space = spacing;\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const textStyles = {\n \"2xl\": {\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 \"xl-display\": {\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 \"xl-sans\": {\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 lg: {\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 md: {\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 sm: {\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 xs: {\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","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const zIndices = {\n hide: tokens.depth[\"z-index\"].hide,\n auto: \"auto\",\n base: tokens.depth[\"z-index\"].base,\n docked: tokens.depth[\"z-index\"].docked,\n dropdown: tokens.depth[\"z-index\"].dropdown,\n sticky: tokens.depth[\"z-index\"].sticky,\n banner: tokens.depth[\"z-index\"].banner,\n overlay: tokens.depth[\"z-index\"].overlay,\n modal: tokens.depth[\"z-index\"].modal,\n popover: tokens.depth[\"z-index\"].popover,\n skipLink: tokens.depth[\"z-index\"].skipLink,\n toast: tokens.depth[\"z-index\"].toast,\n tooltip: tokens.depth[\"z-index\"].tooltip,\n};\n","import { StyleFunctionProps, mode } from \"@chakra-ui/theme-tools\";\n\nexport const styles = {\n global: (props: StyleFunctionProps | Record<string, any>) => ({\n \"html, body\": {\n color: mode(\"darkGrey\", \"lightGrey\")(props),\n },\n svg: {\n display: \"initial\",\n },\n }),\n};\n","import { checkboxAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { mode } from \"@chakra-ui/theme-tools\";\nimport { baseBackground, baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n _hover: {\n \"input:enabled:not([aria-invalid='true']) + .chakra-checkbox__control\":\n {\n ...baseBackground(\"hover\", props),\n borderColor: brandBackground(\"hover\", props).backgroundColor,\n },\n \"input:enabled[aria-invalid='true'] + .chakra-checkbox__control\": {\n backgroundColor: mode(\"white\", \"inherit\")(props),\n borderColor: mode(\"outline.error.light\", \"outline.error.dark\"),\n },\n \"input:enabled:checked:not([aria-invalid='true']) + .chakra-checkbox__control\":\n {\n ...brandBackground(\"hover\", props),\n borderColor: brandBackground(\"hover\", props).backgroundColor,\n },\n \"input:enabled:checked[aria-invalid='true'] + .chakra-checkbox__control\":\n {\n borderColor: mode(\"outline.error.light\", \"outline.error.dark\"),\n backgroundColor: mode(\"outline.error.light\", \"outline.error.dark\"),\n },\n },\n },\n icon: {\n fontSize: \"1em\",\n transitionProperty: \"transform\",\n transitionDuration: \"normal\",\n strokeWidth: \"1.5px !important\", // Required to make the default icon look correct\n },\n control: {\n width: 4,\n height: 4,\n transitionProperty: \"background, border-color\",\n transitionDuration: \"normal\",\n border: \"2px solid\",\n borderColor: mode(\n \"base.outline.default.light\",\n \"base.outline.default.dark\",\n )(props),\n borderRadius: \"xs\",\n ...baseBackground(\"default\", props),\n ...focusVisibleStyles(props),\n\n _checked: {\n ...brandText(\"default\", props),\n ...brandBackground(\"default\", props),\n borderColor: brandBackground(\"default\", props).backgroundColor,\n\n _disabled: {\n ...baseBackground(\"disabled\", props),\n ...baseText(\"disabled\", props),\n borderColor: \"currentColor\",\n },\n\n _invalid: {\n backgroundColor: \"brightRed\",\n borderColor: \"brightRed\",\n },\n },\n\n _disabled: {\n ...baseBackground(\"disabled\", props),\n borderColor: baseText(\"disabled\", props).color,\n },\n _invalid: {\n ...baseBackground(\"default\", props),\n borderColor: \"brightRed\",\n },\n },\n label: {\n userSelect: \"none\",\n _disabled: { opacity: 0.4 },\n },\n }),\n});\n\nexport default config;\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy } from \"@chakra-ui/theme-tools\";\nimport { accentBackground, accentText } from \"../utils/accent-utils\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { brandBackground } from \"../utils/brand-utils\";\nimport { floatingBackground, floatingBorder } from \"../utils/floating-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst parts = anatomy(\"choice-chip\").parts(\"container\", \"icon\", \"label\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n display: \"inline-flex\",\n alignItems: \"center\",\n fontSize: \"xs\",\n cursor: \"pointer\",\n transitionProperty: \"all\",\n borderRadius: \"xl\",\n transitionDuration: \"fast\",\n _checked: {\n outlineColor: \"transparent\",\n ...accentText(\"selected\", props),\n ...accentBackground(\"selected\", props),\n _hover: {\n ...brandBackground(\"hover\", props),\n ...baseText(\"selected\", props),\n outlineColor: \"transparent\",\n },\n _active: {\n ...baseText(\"selected\", props),\n ...brandBackground(\"active\", props),\n },\n },\n _disabled: {\n pointerEvents: \"none\",\n boxShadow: \"none\",\n ...baseText(\"disabled\", props),\n ...baseBackground(\"disabled\", props),\n _hover: {\n ...baseBackground(\"disabled\", props),\n boxShadow: \"none\",\n ...baseText(\"disabled\", props),\n },\n _checked: {\n cursor: \"not-allowed\",\n boxShadow: \"none\",\n ...baseText(\"disabled\", props),\n ...baseBackground(\"disabled\", props),\n _hover: {\n ...baseBackground(\"disabled\", props),\n boxShadow: \"none\",\n ...baseText(\"disabled\", props),\n },\n },\n },\n \"input:focus-visible + &\": focusVisibleStyles(props)._focusVisible,\n },\n icon: {\n marginRight: props.hasLabel ? 1 : 0,\n },\n }),\n variants: {\n base: (props) => ({\n container: {\n ...baseBorder(\"default\", props),\n ...baseText(\"default\", props),\n _hover: {\n ...baseText(\"default\", props),\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"default\", props),\n },\n },\n }),\n accent: (props) => ({\n container: {\n ...accentBackground(\"default\", props),\n ...accentText(\"default\", props),\n _hover: {\n ...accentBackground(\"hover\", props),\n ...accentText(\"default\", props),\n },\n _active: {\n ...accentText(\"default\", props),\n ...accentBackground(\"active\", props),\n },\n },\n _active: {\n ...accentText(\"default\", props),\n ...accentBackground(\"active\", props),\n },\n }),\n floating: (props) => ({\n container: {\n ...floatingBackground(\"default\", props),\n ...baseText(\"default\", props),\n ...floatingBorder(\"default\", props),\n boxShadow: \"sm\",\n _hover: {\n ...floatingBackground(\"hover\", props),\n ...floatingBorder(\"hover\", props),\n ...baseText(\"default\", props),\n boxShadow: \"md\",\n },\n _active: {\n ...floatingBackground(\"active\", props),\n ...floatingBorder(\"active\", props),\n ...baseText(\"default\", props),\n },\n },\n }),\n },\n sizes: {\n xs: {\n container: {\n _checked: {\n borderRadius: \"0.563rem\",\n },\n height: 5,\n paddingX: 1.5,\n },\n },\n sm: {\n container: {\n _checked: {\n borderRadius: \"sm\",\n },\n height: 6,\n paddingX: 2,\n },\n },\n md: {\n container: {\n _checked: {\n borderRadius: \"sm\",\n },\n height: 7,\n paddingX: 2,\n },\n },\n lg: {\n container: {\n _checked: {\n borderRadius: \"md\",\n },\n height: 8,\n paddingX: 3,\n },\n },\n },\n defaultProps: {\n size: \"sm\",\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\nimport { cssVar, mode } from \"@chakra-ui/theme-tools\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { ghostBackground } from \"../utils/ghost-utils\";\n\nconst $size = cssVar(\"close-button-size\");\n\nconst config = defineStyleConfig({\n baseStyle: (props) => ({\n w: [$size.reference],\n h: [$size.reference],\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n borderRadius: \"md\",\n backgroundColor: \"transparent\",\n color: mode(\"darkGrey\", \"white\")(props),\n fontWeight: \"normal\",\n ...focusVisibleStyles(props),\n _hover: {\n ...ghostBackground(\"hover\", props),\n _disabled: {\n color: \"dimGrey\",\n },\n },\n _active: {\n ...ghostBackground(\"active\", props),\n },\n }),\n sizes: {\n lg: {\n [$size.variable]: \"40px\",\n fontSize: \"xs\",\n },\n md: {\n [$size.variable]: \"32px\",\n fontSize: \"0.75rem\",\n },\n sm: {\n [$size.variable]: \"24px\",\n fontSize: \"0.625rem\",\n },\n },\n defaultProps: {\n size: \"md\",\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\nimport Badge from \"./badge\";\n\nconst { variants, defaultProps } = Badge;\n\nconst config = defineStyleConfig({\n baseStyle: {\n fontFamily: \"monospace\",\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n borderRadius: \"xs\",\n paddingX: 1,\n },\n variants,\n defaultProps,\n});\n\nexport default config;\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy, cssVar, mode } from \"@chakra-ui/theme-tools\";\nimport { zIndices } from \"../foundations\";\nimport { accentText } from \"../utils/accent-utils\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { floatingBorder, floatingBackground } from \"../utils/floating-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { ghostBackground } from \"../utils/ghost-utils\";\nimport { surface } from \"../utils/surface-utils\";\n\nconst parts = anatomy(\"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);\n\nconst $arrowBackground = cssVar(\"popper-arrow-bg\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\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: zIndices.docked,\n },\n _disabled: {\n pointerEvents: \"none\",\n ...baseBackground(\"disabled\", props),\n ...baseBorder(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n _focusWithin: {\n ...focusVisibleStyles(props)._focusVisible,\n },\n },\n inputLabel: {\n fontSize: \"mobile.xs\",\n margin: 0,\n cursor: \"text\",\n },\n dateTimeSegment: {\n _focus: {\n ...brandBackground(\"hover\", props),\n color: \"white\",\n },\n },\n calendarTriggerButton: {\n width: 8,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transitionProperty: \"box-shadow, background-color\",\n transitionSpeed: \"fast\",\n position: \"relative\",\n right: \"9px\",\n\n ...focusVisibleStyles(props),\n _hover: {\n ...ghostBackground(\"hover\", props),\n },\n _active: {\n ...ghostBackground(\"active\", props),\n },\n _invalid: {\n ...baseBorder(\"invalid\", props),\n },\n },\n arrow: {\n [$arrowBackground.variable]: surface(\"default\", props).backgroundColor,\n },\n calendarPopover: {\n ...floatingBackground(\"default\", props),\n ...baseText(\"default\", props),\n ...floatingBorder(\"default\", props),\n boxShadow: \"md\",\n },\n weekdays: {\n ...baseText(\"default\", props),\n },\n weekend: {\n ...accentText(\"default\", props),\n },\n cell: {\n '&[aria-selected=\"true\"] + [aria-selected=\"true\"] > button': {\n \"&::before\": {\n content: '\"\"',\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n left: \"-50%\",\n top: 0,\n bottom: 0,\n zIndex: -1,\n ...brandBackground(\"default\", props),\n },\n },\n },\n dateCell: {\n ...ghostBackground(\"default\", props),\n ...baseText(\"default\", props),\n borderRadius: \"50%\",\n position: \"relative\",\n transition: \".1s ease-in-out\",\n userSelect: \"none\",\n width: [6, 7],\n height: [6, 7],\n transitionProperty: \"common\",\n transitionSpeed: \"fast\",\n\n _hover: {\n ...ghostBackground(\"hover\", props),\n },\n ...focusVisibleStyles(props),\n _active: {\n ...ghostBackground(\"active\", props),\n },\n _disabled: {\n ...baseBackground(\"disabled\", props),\n ...baseText(\"disabled\", props),\n pointerEvents: \"none\",\n },\n _selected: {\n ...brandBackground(\"default\", props),\n ...brandText(\"default\", props),\n _active: {\n ...brandBackground(\"active\", props),\n ...brandText(\"active\", props),\n },\n },\n \"&[data-today]\": {\n ...baseBorder(\"default\", props),\n },\n \"&[data-unavailable]\": {\n pointerEvents: \"none\",\n ...baseBackground(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n },\n }),\n variants: {\n base: (props) => ({\n wrapper: {\n ...baseBorder(\"default\", props),\n ...baseBackground(\"default\", props),\n\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _invalid: {\n ...baseBorder(\"invalid\", props),\n },\n },\n }),\n floating: (props) => ({\n wrapper: {\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n boxShadow: \"sm\",\n\n _hover: {\n ...floatingBorder(\"hover\", props),\n },\n _invalid: {\n ...baseBorder(\"invalid\", props),\n },\n },\n }),\n ghost: (props) => ({\n wrapper: {\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _invalid: {\n ...baseBorder(\"invalid\", props),\n },\n },\n }),\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/styled-system\";\nimport { mode } from \"@chakra-ui/theme-tools\";\n\nconst borderColor = mode(\"blackAlpha.300\", \"whiteAlpha.300\");\n\nfunction getSizes(size: string) {\n const sizes: Record<string, { height: string; dash: string; gap: string }> = {\n sm: {\n height: \"1px\",\n dash: \"1px\",\n gap: \"4px\",\n },\n md: {\n height: \"2px\",\n dash: \"3px\",\n gap: \"6px\",\n },\n lg: {\n height: \"3px\",\n dash: \"3px\",\n gap: \"9px\",\n },\n };\n return sizes[size] || sizes[\"md\"];\n}\n\nexport default defineStyleConfig({\n baseStyle: (props) => ({\n borderColor: borderColor(props),\n }),\n variants: {\n solid: {\n borderStyle: \"solid\",\n },\n dashed: (props) => {\n const { height, dash, gap } = getSizes(props.size);\n return {\n height: height,\n backgroundImage: `linear-gradient(90deg, ${borderColor(props)}, ${borderColor(props)} ${dash}, transparent ${dash}, transparent ${gap})`,\n backgroundPosition: \"left bottom\",\n backgroundRepeat: \"repeat-x\",\n backgroundSize: `${gap} ${height}`,\n };\n },\n },\n defaultProps: {\n variant: \"solid\",\n size: \"md\",\n },\n});\n","import { modalAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { type PartsStyleObject } from \"@chakra-ui/theme-tools\";\nimport { baseText } from \"../utils/base-utils\";\nimport { bg } from \"../utils/bg-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n overlay: {\n backgroundColor: \"blackAlpha.600\",\n zIndex: \"modal\",\n color: \"red\",\n },\n dialogContainer: {\n display: \"flex\",\n zIndex: \"modal\",\n justifyContent: \"center\",\n alignItems: props.isCentered ? \"center\" : \"flex-start\",\n overflow: props.scrollBehavior === \"inside\" ? \"hidden\" : \"auto\",\n },\n dialog: {\n ...bg(\"default\", props),\n ...baseText(\"default\", props),\n zIndex: \"modal\",\n maxHeight:\n props.scrollBehavior === \"inside\" ? \"calc(100% - 7.5rem)\" : undefined,\n boxShadow: \"md\",\n },\n header: {\n paddingX: 3,\n paddingTop: 6,\n paddingBottom: 2,\n fontWeight: \"bold\",\n fontFamily: \"body\",\n },\n closeButton: {\n position: \"absolute\",\n top: 3,\n insetEnd: 3,\n zIndex: \"modal\",\n },\n body: {\n paddingX: 3,\n paddingBottom: 6,\n flex: 1,\n overflow: props.scrollBehavior === \"inside\" ? \"auto\" : undefined,\n },\n footer: {\n paddingX: 3,\n paddingBottom: 3,\n },\n }),\n sizes: {\n xs: getSize(\"xs\"),\n sm: getSize(\"sm\"),\n md: getSize(\"md\"),\n lg: getSize(\"lg\"),\n xl: getSize(\"xl\"),\n \"2xl\": getSize(\"2xl\"),\n \"3xl\": getSize(\"3xl\"),\n \"4xl\": getSize(\"4xl\"),\n \"5xl\": getSize(\"5xl\"),\n \"6xl\": getSize(\"6xl\"),\n full: getSize(\"full\"),\n },\n defaultProps: {\n size: \"md\",\n },\n});\n\n/**\n * Since the `maxWidth` prop references theme.sizes internally,\n * we can leverage that to size our modals.\n */\nfunction getSize(value: string): PartsStyleObject<typeof parts> {\n if (value === \"full\") {\n return {\n dialog: {\n maxWidth: \"100vw\",\n minHeight: \"100vh\",\n \"@supports(min-height: -webkit-fill-available)\": {\n minHeight: \"-webkit-fill-available\",\n },\n marginY: 0,\n },\n };\n }\n return {\n dialog: { maxWidth: value },\n };\n}\n\nexport default config;\n","import { mode } from \"@chakra-ui/theme-tools\";\n\ntype Bg = \"default\" | \"secondary\" | \"tertiary\";\nexport const bg = (bg: Bg, props: any) => {\n switch (bg) {\n case \"default\":\n return {\n backgroundColor: mode(\"bg.default.light\", \"bg.default.dark\")(props),\n };\n case \"secondary\":\n return {\n backgroundColor: mode(\"bg.secondary.light\", \"bg.secondary.dark\")(props),\n };\n case \"tertiary\":\n return {\n backgroundColor: mode(\"bg.tertiary.light\", \"bg.tertiary.dark\")(props),\n };\n }\n};\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\n\nimport { accentBackground, accentText } from \"../utils/accent-utils\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { surface } from \"../utils/surface-utils\";\n\nconst parts = anatomy(\"fab\").parts(\"container\", \"icon\", \"text\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n display: \"flex\",\n alignItems: \"center\",\n paddingY: 2,\n paddingLeft: 2,\n paddingRight: props.isTextVisible ? 3 : 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: \"sticky\",\n ...getPositionProps(props),\n ...focusVisibleStyles(props),\n _disabled: {\n ...surface(\"disabled\", props),\n ...baseText(\"disabled\", props),\n pointerEvents: \"none\",\n },\n },\n icon: {\n marginRight: props.isTextVisible ? 1 : 0,\n },\n text: {\n display: \"flex\",\n flex: \"none\",\n alignItems: \"center\",\n fontWeight: \"bold\",\n textStyle: \"sm\",\n },\n }),\n variants: {\n brand: (props) => ({\n container: {\n ...brandBackground(\"default\", props),\n ...brandText(\"default\", props),\n _hover: {\n ...brandBackground(\"hover\", props),\n },\n _active: {\n ...brandBackground(\"active\", props),\n },\n },\n }),\n base: (props) => ({\n container: {\n ...baseBackground(\"default\", props),\n ...baseBorder(\"default\", props),\n ...baseText(\"default\", props),\n _hover: {\n ...baseBackground(\"hover\", props),\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBorder(\"default\", props),\n ...baseBackground(\"active\", props),\n },\n },\n }),\n accent: (props) => ({\n container: {\n ...accentBackground(\"default\", props),\n ...accentText(\"default\", props),\n _hover: {\n ...accentBackground(\"hover\", props),\n ...accentText(\"default\", props),\n },\n _active: {\n ...accentBackground(\"active\", props),\n },\n },\n }),\n },\n defaultProps: {\n variant: \"brand\",\n },\n});\n\nexport default config;\n\nconst getPositionProps = (props: StyleFunctionProps) => {\n switch (props.placement) {\n case \"top left\":\n return { top: \"1em\", left: \"1em\" };\n case \"top right\":\n return { top: \"1em\", right: \"1em\" };\n case \"bottom left\":\n return { bottom: \"1em\", left: \"1em\" };\n case \"bottom right\":\n return { bottom: \"1em\", right: \"1em\" };\n }\n};\n","import { formAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { mode } from \"@chakra-ui/theme-tools\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n width: \"100%\",\n position: \"relative\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n },\n requiredIndicator: {\n marginStart: 1,\n color: mode(\"brightRed\", \"lightRed\")(props),\n },\n helperText: {\n marginTop: 2,\n color: mode(\"dimGrey\", \"whiteAlpha.600\")(props),\n lineHeight: \"normal\",\n fontSize: \"sm\",\n },\n }),\n});\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\n\nconst config = defineStyleConfig({\n baseStyle: {\n fontSize: \"mobile.sm\",\n marginEnd: 3,\n marginBottom: 2,\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n opacity: 1,\n _disabled: {\n opacity: 0.4,\n },\n },\n});\n\nexport default config;\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { floatingBackground, floatingBorder } from \"../utils/floating-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { srOnly } from \"../utils/sr-utils\";\n\nconst parts = anatomy(\"InfoSelect\").parts(\n \"container\",\n \"label\",\n \"button\",\n \"arrowIcon\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {},\n label: {\n position: \"relative\",\n fontSize: [\"mobile.xs\", \"desktop.sm\"],\n marginTop: props.hasChosenValue ? 2 : 0,\n ...(props.isLabelSrOnly ? srOnly : {}),\n },\n innerButton: {\n display: \"flex\",\n flexDir: \"column\",\n alignItems: \"start\",\n justifyContent: \"start\",\n },\n button: {\n display: \"flex\",\n appearance: \"none\",\n width: \"100%\",\n height: 8,\n borderTopRadius: \"sm\",\n borderBottomRadius: props.isOpen ? 0 : \"sm\",\n paddingY: 1.5,\n paddingX: 3,\n justifyContent: \"space-between\",\n alignItems: \"center\",\n fontSize: \"mobile.md\",\n ...baseBorder(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n ...focusVisibleStyles(props),\n _disabled: {\n pointerEvents: \"none\",\n ...baseText(\"disabled\", props),\n ...baseBackground(\"disabled\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n },\n _invalid: {\n ...baseBorder(\"invalid\", props),\n },\n },\n placeholder: {},\n arrowIcon: {},\n }),\n variants: {\n base: () => ({}),\n floating: (props) => ({\n button: {\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n _hover: {\n ...floatingBorder(\"hover\", props),\n ...floatingBackground(\"hover\", props),\n },\n _active: {\n ...floatingBorder(\"active\", props),\n ...floatingBackground(\"active\", props),\n },\n },\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\nexport default config;\n","/** All the styles you need to hide something visually, while still making it available for screen readers */\nexport const srOnly = {\n border: \"0 !important\",\n clip: \"rect(1px, 1px, 1px, 1px) !important\",\n clipPath: \"inset(50%) !important\",\n height: \"1px !important\",\n margin: \"-1px !important\",\n overflow: \"hidden !important\",\n padding: \"0 !important\",\n position: \"absolute !important\",\n width: \"1px !important\",\n whiteSpace: \"nowrap !important\",\n};\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy, mode } from \"@chakra-ui/theme-tools\";\nimport travelTagStyles from \"./travel-tag\";\n\nconst parts = anatomy(\"info-tag\").parts(\n \"container\",\n \"iconContainer\",\n \"icon\",\n \"textContainer\",\n \"title\",\n \"description\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n ...travelTagStyles.baseStyle!(props),\n iconContainer: {\n ...travelTagStyles.baseStyle!(props).iconContainer,\n padding: 1,\n },\n textContainer: {\n color: mode(\"darkGrey\", \"white\")(props),\n },\n }),\n sizes: {\n ...travelTagStyles.sizes,\n sm: {\n ...travelTagStyles.sizes!.sm,\n iconContainer: {\n borderRadius: \"0.375rem\",\n },\n },\n md: {\n ...travelTagStyles.sizes!.md,\n iconContainer: {\n borderRadius: \"0.375rem\",\n },\n },\n lg: {\n ...travelTagStyles.sizes!.lg,\n iconContainer: {\n borderRadius: \"sm\",\n },\n },\n },\n defaultProps: {\n size: \"md\",\n },\n variants: {\n walk: (props) => ({\n iconContainer: {\n backgroundColor: mode(\"white\", \"transparent\")(props),\n boxShadow: mode(\n `${props.theme.shadows.md}, inset 0 0 0 2px ${props.theme.colors.black[200]}`,\n `${props.theme.shadows.md}, inset 0 0 0 2px ${props.theme.colors.whiteAlpha[400]}`,\n )(props),\n },\n }),\n },\n});\nexport default config;\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport type { StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { anatomy, mode } from \"@chakra-ui/theme-tools\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { surface } from \"../utils/surface-utils\";\nimport { baseText } from \"../utils/base-utils\";\n\nconst parts = anatomy(\"travel-tag\").parts(\n \"container\",\n \"iconContainer\",\n \"icon\",\n \"textContainer\",\n \"title\",\n \"description\",\n \"deviationIcon\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n padding: 0.5,\n width: \"fit-content\",\n ...getDeviationContainerStyle(props),\n transitionDuration: \"fast\",\n transitionProperty: \"common\",\n _disabled: {\n ...surface(\"disabled\", props),\n },\n \"button&, a&\": {\n boxShadow: \"sm\",\n _hover: {\n boxShadow: \"md\",\n },\n ...focusVisibleStyles(props),\n _active: {\n opacity: 0.5,\n boxShadow: \"none\",\n },\n },\n },\n iconContainer: {\n padding: 0.5,\n \"[aria-disabled=true] &\": {\n ...surface(\"disabled\", props),\n },\n },\n textContainer: {\n color: \"darkGrey\",\n paddingRight: 0.5,\n whiteSpace: \"nowrap\",\n \"[aria-disabled=true] &\": {\n ...baseText(\"disabled\", props),\n },\n },\n title: {\n fontWeight: \"bold\",\n },\n description: {\n fontWeight: \"normal\",\n },\n deviationIcon: {\n ...getDeviationIconStyle(props),\n },\n }),\n variants: {\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: (props) => ({\n container: {\n backgroundColor: mode(\"white\", \"transparent\")(props),\n _disabled: {\n backgroundColor: \"white\",\n },\n },\n iconContainer: {\n border: \"none\",\n position: \"relative\",\n left: -1,\n backgroundColor: mode(\"white\", \"transparent\")(props),\n \"[aria-disabled=true] &\": {\n backgroundColor: \"transparent\",\n color: \"osloGrey\",\n },\n },\n textContainer: {\n position: \"absolute\",\n left: 2,\n bottom: -0.5,\n \"[aria-disabled=true] &\": {\n color: \"osloGrey\",\n },\n },\n title: {\n fontSize: \"mobile.xs\",\n fontWeight: \"normal\",\n color: mode(\"black\", \"white\")(props),\n },\n description: {\n display: \"none\",\n },\n }),\n custom: (props) => ({\n container: {\n backgroundColor: props.foregroundColor,\n },\n }),\n },\n sizes: {\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 defaultProps: {\n size: \"md\",\n },\n});\n\nexport default config;\n\nconst getDeviationContainerStyle = (props: StyleFunctionProps) => {\n switch (props.deviationLevel) {\n case \"critical\":\n return {\n border: \"1px solid\",\n borderColor: getDeviationBorderColor(props),\n };\n case \"major\":\n return {\n border: \"1px solid\",\n borderColor: getDeviationBorderColor(props),\n };\n default:\n return {};\n }\n};\n\nconst getDeviationBorderColor = (props: StyleFunctionProps) => {\n switch (props.deviationLevel) {\n case \"critical\":\n return \"brightRed\";\n case \"major\":\n return \"golden\";\n default:\n return \"transparent\";\n }\n};\n\nconst getDeviationIconStyle = (props: StyleFunctionProps) => {\n return {\n position: \"absolute\",\n top: \"0\",\n right: \"0\",\n transform: \"translate(50%, -50%)\",\n zIndex: \"docked\",\n color:\n deviationIconColor[\n props.deviationLevel as keyof typeof deviationIconColor\n ] || \"inherit\",\n };\n};\n\nconst deviationIconColor = {\n critical: \"brightRed\",\n info: \"ocean\",\n} as const;\n","import { inputAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { inputBaseStyle, inputVariant } from \"../utils/input-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n ...inputBaseStyle(props),\n }),\n variants: {\n base: (props) => ({\n field: {\n ...inputVariant(\"base\", props),\n },\n }),\n floating: (props) => ({\n field: {\n ...inputVariant(\"floating\", props),\n },\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { baseBackground, baseBorder, baseText } from \"./base-utils\";\nimport { floatingBackground, floatingBorder } from \"./floating-utils\";\nimport { InputState } from \"./types\";\nimport { focusVisibleStyles } from \"./focus-utils\";\nimport { surface } from \"./surface-utils\";\n\nexport function inputVariant(state: InputState, props: StyleFunctionProps) {\n switch (state) {\n case \"base\":\n return {\n ...baseBackground(\"default\", props),\n ...baseBorder(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"default\", props),\n },\n _selected: {\n ...baseBackground(\"selected\", props),\n ...baseBorder(\"selected\", props),\n },\n };\n case \"floating\":\n return {\n boxShadow: \"sm\",\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n\n _hover: {\n ...floatingBorder(\"hover\", props),\n ...floatingBackground(\"hover\", props),\n },\n _active: {\n ...floatingBorder(\"active\", props),\n ...floatingBackground(\"active\", props),\n },\n _selected: {\n ...floatingBorder(\"selected\", props),\n ...floatingBackground(\"selected\", props),\n },\n };\n case \"default\":\n default:\n return {\n ...baseBackground(\"default\", props),\n ...baseBorder(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"default\", props),\n },\n _selected: {\n ...baseBackground(\"selected\", props),\n ...baseBorder(\"selected\", props),\n },\n };\n }\n}\n\nexport const inputBaseStyle = (props: StyleFunctionProps) => ({\n field: {\n appearance: \"none\",\n width: \"100%\",\n outline: \"none\",\n border: 0,\n borderRadius: \"sm\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n position: \"relative\",\n paddingX: 3,\n height: 8,\n fontSize: \"mobile.md\",\n _focusVisible: {\n ...focusVisibleStyles(props)._focusVisible,\n outlineOffset: 0,\n },\n _disabled: {\n ...surface(\"disabled\", props),\n ...baseBorder(\"disabled\", props),\n pointerEvents: \"none\",\n },\n _invalid: {\n ...baseBorder(\"invalid\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n },\n \" + label, + div[data-lastpass-icon-root] + label\": {\n fontSize: [\"mobile.sm\", \"desktop.sm\"],\n top: \"2px\",\n left: props.paddingLeft || props.pl || 3,\n zIndex: 2,\n position: \"absolute\",\n marginY: 2,\n transition: \".1s ease-out\",\n transformOrigin: \"top left\",\n cursor: \"text\",\n },\n \"&:not(:placeholder-shown)\": {\n paddingTop: \"1rem\",\n \"& + label, & + div[data-lastpass-icon-root] + label\": {\n transform: \"scale(0.825) translateY(-10px)\",\n },\n },\n },\n element: {\n height: \"100%\",\n },\n group: {\n \":has(:disabled)\": {\n ...baseText(\"disabled\", props),\n },\n },\n});\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy, mode } from \"@chakra-ui/theme-tools\";\n\nconst parts = anatomy(\"line-tag\").parts(\"iconContainer\", \"icon\");\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: {\n iconContainer: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n icon: {\n color: \"white\",\n \"[aria-disabled=true] &\": {\n color: mode(\"icon.disabled.light\", \"icon.disabled.dark\"),\n },\n },\n },\n variants: {\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\n walk: (props) => ({\n iconContainer: {\n backgroundColor: \"white\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"blackAlpha.200\",\n },\n icon: {\n color: mode(\"darkGrey\", \"white\")(props),\n \"[aria-disabled=true] &\": {\n color: \"osloGrey\",\n },\n },\n }),\n custom: (props) => ({\n iconContainer: {\n backgroundColor: props.backgroundColor,\n },\n }),\n },\n sizes: {\n sm: {\n iconContainer: {\n borderRadius: \"0.5625rem\",\n padding: 1,\n },\n },\n md: {\n iconContainer: {\n borderRadius: \"0.5625rem\",\n padding: 1,\n },\n },\n lg: {\n iconContainer: {\n borderRadius: \"sm\",\n padding: 1,\n },\n },\n },\n defaultProps: {\n size: \"md\",\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\nimport { mode } from \"@chakra-ui/theme-tools\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst config = defineStyleConfig({\n baseStyle: (props) => ({\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 padding: \"2px\",\n color: \"inherit\",\n display: \"inline\",\n position: \"relative\",\n boxDecorationBreak: \"clone\",\n\n \"&:focus, &:focus-visible, &:active, &:hover\": {\n backgroundImage: \"none\",\n backgroundSize: \"100%\",\n outline: \"none\",\n borderRadius: \"xs\",\n },\n\n ...focusVisibleStyles(props),\n\n svg: {\n display: \"inline-block\",\n width: \"1.125em\",\n height: \"1.125em\",\n position: \"relative\",\n bottom: \"-0.2em\",\n },\n }),\n variants: {\n primary: (props) => ({\n ...baseText(\"default\", props),\n _hover: {\n ...brandText(\"hover\", props),\n ...brandBackground(\"hover\", props),\n },\n _active: {\n ...brandText(\"active\", props),\n ...brandBackground(\"active\", props),\n },\n }),\n secondary: (props) => ({\n backgroundImage: `linear-gradient(${mode(\n \"blackAlpha.400\",\n \"whiteAlpha.400\",\n )(props)}, ${mode(\"blackAlpha.400\", \"whiteAlpha.400\")(props)})`,\n ...baseText(\"default\", props),\n \"&:focus, &:focus-visible, &:active, &:hover\": {\n outline: \"1px solid\",\n },\n ...baseBackground(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props), // TODO: This is also weird\n ...baseBackground(\"hover\", props),\n outlineWidth: 1,\n },\n _active: {\n ...baseBackground(\"active\", props),\n },\n }),\n },\n defaultProps: {\n variant: \"primary\",\n },\n});\n\nexport default config;\n","import { listAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys);\n\nconst baseStyle = definePartsStyle({\n container: {\n fontSize: [\"mobile.sm\", \"desktop.sm\"],\n },\n item: {\n fontFamily: \"body\",\n },\n icon: {\n marginEnd: \"2\",\n display: \"inline\",\n verticalAlign: \"text-bottom\",\n },\n});\n\nexport default defineMultiStyleConfig({\n baseStyle,\n});\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { baseBorder } from \"../utils/base-utils\";\nimport { ghostBackground, ghostText } from \"../utils/ghost-utils\";\nimport { surface } from \"../utils/surface-utils\";\nimport { outlineBorder } from \"../utils/outline-utils\";\nimport { floatingBorder } from \"../utils/floating-utils\";\n\nconst parts = anatomy(\"ListBox\").parts(\n \"container\",\n \"item\",\n \"label\",\n \"description\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n ...surface(\"default\", props),\n boxShadow: \"sm\",\n overflowY: \"auto\",\n maxHeight: \"50vh\",\n width: \"100%\",\n listStyle: \"none\",\n borderBottomRadius: \"sm\",\n },\n item: {\n paddingX: 2,\n paddingY: 1,\n marginY: 1,\n marginX: 1,\n borderRadius: \"sm\",\n ...ghostText(\"default\", props),\n cursor: \"pointer\",\n outline: \"none\",\n _active: {\n ...ghostBackground(\"active\", props),\n },\n _focusVisible: {\n ...outlineBorder(\"focus\", props),\n },\n _hover: {\n ...ghostBackground(\"hover\", props),\n },\n _selected: {\n ...ghostBackground(\"active\", props),\n },\n },\n label: {},\n description: {\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n ...ghostText(\"default\", props),\n \"[aria-selected='true'] &\": {\n ...ghostText(\"selected\", props),\n },\n },\n }),\n variants: {\n base: (props) => ({\n container: {\n ...baseBorder(\"default\", props),\n },\n }),\n floating: (props) => ({\n container: {\n ...floatingBorder(\"default\", props),\n },\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { mode, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { State, Subset } from \"./types\";\n\ntype OutlineBorderState = Subset<State, \"default\" | \"error\" | \"focus\">;\nexport function outlineBorder(\n state: OutlineBorderState,\n props: StyleFunctionProps,\n) {\n switch (state) {\n case \"error\":\n return {\n outlineColor: mode(\"outline.error.light\", \"outline.error.dark\")(props),\n };\n case \"focus\":\n return {\n outlineColor: mode(\"outline.focus.light\", \"outline.focus.dark\")(props),\n };\n default:\n return {\n outlineColor: mode(\n \"outline.default.light\",\n \"outline.default.dark\",\n )(props),\n };\n }\n}\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy, mode } from \"@chakra-ui/theme-tools\";\nimport { baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { ghostBackground } from \"../utils/ghost-utils\";\nimport { surface } from \"../utils/surface-utils\";\n\nconst parts = anatomy(\"media-controller-button\").parts(\"container\", \"icon\");\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n fontSize: 30,\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n borderRadius: \"round\",\n appearance: \"none\",\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n display: \"flex\",\n padding: 1,\n alignSelf: \"center\",\n // The SVG icon color is set to the brand background color, due to how SVGs work\n color: brandBackground(\"default\", props).backgroundColor,\n ...focusVisibleStyles(props),\n },\n icon: {\n flex: \"0 0 auto\",\n display: \"block\",\n width: \"1em\",\n height: \"1em\",\n },\n }),\n variants: {\n play: (props) => ({\n container: {\n padding: 0,\n ...brandText(\"default\", props),\n ...brandBackground(\"default\", props),\n _hover: {\n ...brandText(\"default\", props),\n ...brandBackground(\"hover\", props),\n },\n _active: {\n ...brandText(\"default\", props),\n ...brandBackground(\"active\", props),\n },\n\n _disabled: {\n pointerEvents: \"none\",\n color: mode(\"icon.disabled.light\", \"icon.disabled.dark\")(props),\n ...surface(\"disabled\", props),\n },\n },\n }),\n jumpSkip: (props) => ({\n container: {\n _hover: {\n ...ghostBackground(\"hover\", props),\n },\n _active: {\n ...ghostBackground(\"active\", props),\n },\n _disabled: {\n pointerEvents: \"none\",\n ...surface(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n },\n icon: {\n width: \"0.71em\",\n height: \"0.71em\",\n },\n }),\n },\n sizes: {\n sm: (props) => ({\n container: {\n fontSize: props.variant === \"play\" ? 24 : 42,\n width: props.variant === \"play\" ? \"2.625rem\" : undefined,\n height: props.variant === \"play\" ? \"2.625rem\" : undefined,\n },\n }),\n lg: (props) => ({\n container: {\n fontSize: props.variant === \"play\" ? 38 : 60,\n width: props.variant === \"play\" ? \"3.75rem\" : undefined,\n height: props.variant === \"play\" ? \"3.75rem\" : undefined,\n },\n }),\n },\n});\n\nexport default config;\n","import { modalAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { type PartsStyleObject } from \"@chakra-ui/theme-tools\";\nimport { baseText } from \"../utils/base-utils\";\nimport { bg } from \"../utils/bg-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n overlay: {\n backgroundColor: \"blackAlpha.600\",\n zIndex: \"modal\",\n },\n dialogContainer: {\n display: \"flex\",\n zIndex: \"modal\",\n justifyContent: \"center\",\n alignItems: props.isCentered ? \"center\" : \"flex-start\",\n overflow: props.scrollBehavior === \"inside\" ? \"hidden\" : \"auto\",\n },\n dialog: {\n borderRadius: \"md\",\n ...bg(\"default\", props),\n ...baseText(\"default\", props),\n marginY: \"3.75rem\",\n zIndex: \"modal\",\n maxHeight:\n props.scrollBehavior === \"inside\" ? \"calc(100% - 7.5rem)\" : undefined,\n boxShadow: \"md\",\n },\n header: {\n paddingX: 5,\n paddingTop: 6,\n paddingBottom: 2,\n fontWeight: \"bold\",\n fontFamily: \"body\",\n },\n closeButton: {\n position: \"absolute\",\n color: \"inherit\",\n top: 3,\n insetEnd: 3,\n },\n body: {\n paddingX: 5,\n paddingBottom: 6,\n flex: 1,\n overflow: props.scrollBehavior === \"inside\" ? \"auto\" : undefined,\n },\n footer: {\n paddingX: 3,\n paddingBottom: 3,\n },\n }),\n sizes: {\n xs: getSize(\"xs\"),\n sm: getSize(\"sm\"),\n md: getSize(\"md\"),\n lg: getSize(\"lg\"),\n xl: getSize(\"xl\"),\n \"2xl\": getSize(\"2xl\"),\n \"3xl\": getSize(\"3xl\"),\n \"4xl\": getSize(\"4xl\"),\n \"5xl\": getSize(\"5xl\"),\n \"6xl\": getSize(\"6xl\"),\n full: getSize(\"full\"),\n },\n defaultProps: {\n size: \"md\",\n },\n});\n\nexport default config;\n\n/**\n * Since the `maxWidth` prop references theme.sizes internally,\n * we can leverage that to size our modals.\n */\nfunction getSize(value: string): PartsStyleObject<typeof parts> {\n if (value === \"full\") {\n return {\n dialog: {\n maxWidth: \"100vw\",\n minHeight: \"100vh\",\n \"@supports(min-height: -webkit-fill-available)\": {\n minHeight: \"-webkit-fill-available\",\n },\n marginY: 0,\n },\n };\n }\n return {\n dialog: { maxWidth: value },\n };\n}\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst parts = anatomy(\"NumericStepper\").parts(\n \"container\",\n \"button\",\n \"text\",\n \"input\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n input: {\n fontSize: \"sm\",\n fontWeight: \"bold\",\n marginX: 1,\n paddingX: 1,\n borderRadius: \"xs\",\n textAlign: \"center\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n ...baseText(\"default\", props),\n ...baseBackground(\"default\", props),\n\n _disabled: {\n pointerEvents: \"none\",\n opacity: 0.5,\n },\n\n _hover: {\n ...baseBorder(\"default\", props),\n },\n\n _active: {\n ...baseBackground(\"active\", props),\n },\n\n ...focusVisibleStyles(props),\n },\n text: {\n fontSize: \"sm\",\n fontWeight: \"bold\",\n marginX: 1,\n paddingX: 1,\n textAlign: \"center\",\n width: \"4ch\",\n ...baseText(\"default\", props),\n },\n button: {\n minWidth: \"24px\",\n minHeight: \"24px\",\n },\n }),\n});\n\nexport default config;\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy } from \"@chakra-ui/theme-tools\";\nimport { ghostBackground } from \"../utils/ghost-utils\";\nimport { baseText } from \"../utils/base-utils\";\n\nconst parts = anatomy(\"Pagination\").parts(\n \"listItem\",\n \"link\",\n \"activeButton\",\n \"disabled\",\n \"icon\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props: any) => ({\n activeButton: {\n fontWeight: \"bold\",\n ...commonStyles,\n ...ghostBackground(\"active\", props),\n _hover: {\n ...ghostBackground(\"hover\", props),\n borderRadius: 50,\n },\n _active: {\n borderRadius: 50,\n ...ghostBackground(\"active\", props),\n },\n },\n disabled: {\n ...commonStyles,\n cursor: \"not-allowed\",\n pointerEvents: \"none\",\n boxShadow: \"none\",\n ...baseText(\"disabled\", props),\n },\n listItem: {\n display: \"flex\",\n },\n link: {\n ...commonStyles,\n ...ghostBackground(\"default\", props),\n ...baseText(\"default\", props),\n _hover: {\n ...ghostBackground(\"hover\", props),\n borderRadius: 50,\n _disabled: {\n ...baseText(\"disabled\", props),\n },\n },\n _active: {\n borderRadius: 50,\n ...ghostBackground(\"active\", props),\n },\n },\n icon: {\n bottom: \"-0.03em !important\",\n },\n }),\n});\n\nconst commonStyles = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 5,\n height: 5,\n backgroundImage: \"none\",\n borderRadius: 50,\n fontSize: \"xs\",\n};\n\nexport default config;\n","import { popoverAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { cssVar, mode } from \"@chakra-ui/theme-tools\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst $popperBg = cssVar(\"popper-bg\");\nconst $arrowBg = cssVar(\"popper-arrow-bg\");\nconst $arrowShadowColor = cssVar(\"popper-arrow-shadow-color\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n popper: {\n zIndex: \"popover\",\n },\n content: {\n [$popperBg.variable]: mode(\n \"colors.surface.tertiary.light\",\n \"colors.surface.tertiary.dark\",\n )(props),\n backgroundColor: $popperBg.reference,\n [$arrowBg.variable]: $popperBg.reference,\n [$arrowShadowColor.variable]: \"colors.blackAlpha.300\",\n color: \"white\", // TODO: Should this be a semantic token? Where does it fit in?\n borderRadius: \"sm\",\n padding: 1.5,\n zIndex: \"inherit\",\n maxWidth: \"20em\",\n },\n arrow: {\n backgroundColor: \"transparent\",\n boxShadow: \"none\",\n clipPath:\n \"path('M 0 0 Q 2.4 6 0 12 Q 6 9.6 12 12 Q 9.6 6 12 0 Q 6 2.4 0 0 z')\",\n },\n closeButton: {\n position: \"absolute\",\n color: \"white\",\n ...focusVisibleStyles(props),\n _hover: {\n backgroundColor: \"whiteAlpha.100\",\n },\n _active: {\n backgroundColor: \"whiteAlpha.200\",\n },\n borderRadius: \"sm\",\n top: 2,\n right: 1,\n },\n }),\n sizes: {\n sm: {\n content: {\n paddingX: 1.5,\n paddingY: 1,\n },\n },\n lg: {\n content: {\n paddingX: 3,\n paddingY: 2,\n },\n },\n },\n});\n\nexport default config;\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\nimport { mode } from \"@chakra-ui/theme-tools\";\n\nconst parts = anatomy(\"progressBar\").parts(\n \"container\",\n \"background\",\n \"progress\",\n \"description\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n minWidth: \"100px\",\n },\n background: {\n display: \"flex\",\n backgroundColor: props.isActive\n ? mode(\n \"brand.surface.default.dark\",\n \"brand.surface.default.light\",\n )(props)\n : undefined,\n borderRadius: \"sm\",\n justifyContent: \"flex-start\",\n marginX: \"auto\",\n },\n progress: {\n backgroundColor: props.isActive\n ? mode(\"brand.surface.active.light\", \"brand.surface.active.dark\")(props)\n : mode(\"icon.disabled.light\", \"icon.disabled.dark\")(props),\n borderRadius: \"sm\",\n maxWidth: \"100%\",\n transition: \"width .2s ease-out\",\n },\n description: {\n textAlign: \"center\",\n marginTop: 2,\n marginX: \"auto\",\n fontWeight: \"bold\",\n },\n }),\n});\n\nexport default config;\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy, mode } from \"@chakra-ui/theme-tools\";\n\nconst parts = anatomy(\"progress-indicator\").parts(\n \"root\",\n \"container\",\n \"progressDot\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n root: {\n width: \"100%\",\n },\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 \"&[aria-current='step']\": {\n circle: {\n fill: mode(\n \"brand.surface.default.light\",\n \"brand.surface.default.dark\",\n )(props),\n },\n },\n circle: {\n fill: mode(\"icon.disabled.light\", \"icon.disabled.dark\")(props),\n },\n },\n }),\n defaultProps: {\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { floatingBackground, floatingBorder } from \"../utils/floating-utils\";\nimport { anatomy } from \"@chakra-ui/theme-tools\";\nimport { outlineBorder } from \"../utils/outline-utils\";\n\nconst parts = anatomy(\"radio-card\").parts(\n \"container\",\n \"checked\",\n \"radioInput\",\n \"focused\",\n \"focusedChecked\",\n);\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props: any) => ({\n container: {\n overflow: \"hidden\",\n fontSize: \"inherit\",\n display: \"block\",\n cursor: \"pointer\",\n borderRadius: \"sm\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n\n _disabled: {\n pointerEvents: \"none\",\n ...baseBackground(\"disabled\", props),\n ...baseBorder(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n },\n checked: {\n outline: \"2px solid\",\n ...outlineBorder(\"focus\", props),\n ...floatingBackground(\"active\", props),\n },\n radioInput: {\n appearance: \"none\",\n position: \"absolute\",\n opacity: 0,\n zIndex: -1,\n },\n }),\n variants: {\n base: (props) => ({\n container: {\n ...baseText(\"default\", props),\n ...baseBackground(\"default\", props),\n ...baseBorder(\"default\", props),\n _hover: {\n ...baseBackground(\"hover\", props),\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"active\", props),\n },\n },\n checked: {\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"active\", props),\n },\n },\n focusedChecked: {\n outline: \"4px solid\",\n outlineStyle: \"double\",\n ...outlineBorder(\"focus\", props),\n outlineOffset: \"-1px\",\n },\n focused: {\n outline: \"2px solid\",\n ...outlineBorder(\"focus\", props),\n outlineOffset: \"1px\",\n boxShadow: `inset 0 0 0 1px rgba(0, 0, 0, 0.40)`,\n _hover: {\n ...baseBorder(\"hover\", props),\n boxShadow: \"none\",\n outlineOffset: \"0px\",\n },\n },\n }),\n floating: (props) => ({\n container: {\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n boxShadow: \"sm\",\n _hover: {\n ...floatingBackground(\"hover\", props),\n ...floatingBorder(\"hover\", props),\n boxShadow: \"md\",\n },\n _active: {\n ...floatingBackground(\"active\", props),\n ...floatingBorder(\"active\", props),\n },\n },\n checked: {\n _hover: {\n ...floatingBorder(\"hover\", props),\n boxShadow: \"md\",\n },\n _active: {\n ...floatingBackground(\"active\", props),\n ...floatingBorder(\"active\", props),\n },\n },\n focusedChecked: {\n outline: \"4px solid\",\n outlineStyle: \"double\",\n ...outlineBorder(\"focus\", props),\n outlineOffset: \"-1px\",\n },\n focused: {\n outline: \"2px solid\",\n ...outlineBorder(\"focus\", props),\n outlineOffset: \"1px\",\n boxShadow: `inset 0 0 0 1px rgba(0, 0, 0, 0.10)`,\n _hover: {\n ...floatingBorder(\"hover\", props),\n boxShadow: \"md\",\n outlineOffset: \"0px\",\n },\n },\n }),\n },\n});\n\nexport default config;\n","import { radioAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { mode } from \"@chakra-ui/theme-tools\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n _hover: {\n \"input:enabled + .chakra-radio__control\": {\n backgroundColor: \"inherit\",\n borderColor: mode(\"text.default.light\", \"text.default.dark\")(props),\n },\n \"input:enabled:checked + .chakra-radio__control\": {\n color: brandBackground(\"hover\", props).backgroundColor,\n borderColor: brandBackground(\"hover\", props).backgroundColor,\n },\n },\n },\n label: {\n userSelect: \"none\",\n _disabled: { opacity: 0.4 },\n },\n control: {\n width: 4,\n height: 4,\n backgroundColor: \"inherit\",\n border: \"2px solid\",\n borderColor: baseBorder(\"default\", props).outlineColor,\n borderRadius: \"50%\",\n\n ...focusVisibleStyles(props),\n\n _disabled: {\n ...baseBackground(\"disabled\", props),\n ...baseBorder(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n _checked: {\n color: mode(\n \"brand.surface.default.light\",\n \"brand.surface.default.dark\",\n )(props),\n borderColor: \"currentColor\",\n _before: {\n content: `\"\"`,\n display: \"inline-block\",\n position: \"relative\",\n width: \"50%\",\n height: \"50%\",\n borderRadius: \"50%\",\n background: \"currentColor\",\n },\n _disabled: {\n pointerEvents: \"none\",\n ...baseBackground(\"disabled\", props),\n ...baseBorder(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n },\n },\n }),\n});\nexport default config;\n","import { selectAnatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { baseText } from \"../utils/base-utils\";\nimport { default as Input } from \"./input\";\nimport { inputBaseStyle, inputVariant } from \"../utils/input-utils\";\n\nconst parts = selectAnatomy.extend(\"root\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n root: {\n width: \"100%\",\n height: \"fit-content\",\n position: \"relative\",\n \"& + label\": {\n fontSize: [\"mobile.sm\", \"desktop.sm\"],\n top: \"0.2rem\",\n left: 3,\n zIndex: 2,\n position: \"absolute\",\n marginY: 2,\n transformOrigin: \"top left\",\n transform: [\n \"scale(0.825) translateY(-12px)\",\n \"scale(0.825) translateY(-14px)\",\n ],\n },\n },\n field: {\n ...inputBaseStyle(props).field,\n appearance: \"none\",\n paddingTop: \"1rem\",\n },\n icon: {\n width: 5,\n height: 5,\n insetEnd: \"0.5rem\",\n position: \"relative\",\n color: \"currentColor\",\n strokeLinecap: \"round\",\n fontSize: \"sm\",\n _disabled: {\n ...baseText(\"disabled\", props),\n },\n },\n }),\n variants: {\n base: (props) => ({\n field: {\n ...inputVariant(\"base\", props),\n },\n }),\n floating: (props) => ({\n field: {\n ...inputVariant(\"floating\", props),\n },\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\nimport { keyframes } from \"@chakra-ui/system\";\nimport { cssVar, getColor, mode } from \"@chakra-ui/theme-tools\";\n\nconst fade = (startColor: string, endColor: string) =>\n keyframes({\n from: { borderColor: startColor, background: startColor },\n to: { borderColor: endColor, background: endColor },\n });\n\nconst $startColor = cssVar(\"skeleton-start-color\");\nconst $endColor = cssVar(\"skeleton-end-color\");\n\nconst config = defineStyleConfig({\n baseStyle: (props) => {\n const defaultStartColor = mode(\"blackAlpha.300\", \"whiteAlpha.300\")(props);\n const defaultEndColor = mode(\"blackAlpha.100\", \"whiteAlpha.100\")(props);\n\n const {\n startColor = defaultStartColor,\n endColor = defaultEndColor,\n speed,\n theme,\n } = props;\n\n const start = getColor(theme, startColor);\n const end = getColor(theme, endColor);\n\n return {\n [$startColor.variable]: start,\n [$endColor.variable]: end,\n opacity: 1,\n borderRadius: \"xs\",\n borderColor: start,\n background: end,\n animation: `${speed}s linear infinite alternate ${fade(start, end)}`,\n };\n },\n});\nexport default config;\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy, mode } from \"@chakra-ui/theme-tools\";\nimport { baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { accentText, accentBackground } from \"../utils/accent-utils\";\n\nconst parts = anatomy(\"stepper\").parts(\n \"root\",\n \"container\",\n \"innerContainer\",\n \"title\",\n \"stepCounter\",\n \"stepContainer\",\n \"stepButton\",\n \"stepNumber\",\n \"stepTitle\",\n \"closeButton\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: {\n root: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: [\"space-between\", null, \"center\"],\n minHeight: [\"48px\", null, \"60px\"],\n overflowX: \"auto\",\n width: \"100%\",\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 WebkitBoxOrient: \"vertical\",\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 base: () => ({\n root: {\n backgroundColor: \"transparent\",\n },\n }),\n accent: (props) => ({\n root: {\n backgroundColor: mode(\"accent.bg.light\", \"accent.bg.dark\")(props),\n ...accentText(\"default\", props),\n },\n stepButton: {\n color:\n props.state === \"disabled\"\n ? baseText(\"disabled\", props).color\n : props.state === \"completed\"\n ? baseText(\"default\", props).color\n : brandText(\"default\", props).color,\n _hover: {\n backgroundColor:\n props.state === \"disabled\"\n ? \"transparent\"\n : accentBackground(\"hover\", props).backgroundColor,\n },\n },\n backButton: {\n _hover: {\n ...brandBackground(\"hover\", props),\n },\n },\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { switchAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { calc, cssVar, mode } from \"@chakra-ui/theme-tools\";\nimport { baseBackground, baseBorder } from \"../utils/base-utils\";\nimport { brandBackground } from \"../utils/brand-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst $width = cssVar(\"switch-track-width\");\nconst $height = cssVar(\"switch-track-height\");\nconst $diff = cssVar(\"switch-track-diff\");\nconst diffValue = calc.subtract($width, $height);\nconst $translateX = cssVar(\"switch-thumb-x\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n [$diff.variable]: diffValue,\n [$translateX.variable]: $diff.reference,\n _rtl: {\n [$translateX.variable]: calc($diff).negate().toString(),\n },\n },\n track: {\n width: [$width.reference],\n height: [$height.reference],\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n ...baseBorder(\"default\", props),\n ...focusVisibleStyles(props),\n ...baseBackground(\"default\", props),\n\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _checked: {\n ...brandBackground(\"default\", props),\n outlineColor: \"transparent\",\n\n _hover: {\n ...baseBackground(\"default\", props),\n ...brandBackground(\"hover\", props),\n },\n },\n _disabled: {\n pointerEvents: \"none\",\n ...baseBackground(\"default\", props),\n ...baseBorder(\"disabled\", props),\n _checked: {\n ...baseBackground(\"disabled\", props),\n ...baseBorder(\"disabled\", props),\n },\n },\n },\n thumb: {\n transitionProperty: \"transform\",\n transitionDuration: \"normal\",\n borderRadius: \"50%\",\n width: [$height.reference],\n height: [$height.reference],\n\n backgroundColor: mode(\"base.icon.light\", \"base.icon.dark\")(props),\n \"[data-disabled] &\": {\n backgroundColor: mode(\n \"icon.disabled.light\",\n \"icon.disabled.dark\",\n )(props),\n },\n _checked: {\n backgroundColor: mode(\"brand.icon.light\", \"brand.icon.dark\")(props),\n transform: `translateX(${$translateX.reference})`,\n },\n },\n }),\n sizes: {\n sm: {\n container: {\n [$width.variable]: \"54px\",\n [$height.variable]: \"24px\",\n },\n track: {\n borderRadius: \"24px\",\n padding: \"2px\",\n },\n },\n md: {\n container: {\n [$width.variable]: \"66px\",\n [$height.variable]: \"30px\",\n },\n track: {\n borderRadius: \"30px\",\n padding: \"3px\",\n },\n },\n lg: {\n container: {\n [$width.variable]: \"78px\",\n [$height.variable]: \"36px\",\n },\n track: {\n borderRadius: \"36px\",\n padding: \"3px\",\n },\n },\n },\n defaultProps: {\n size: \"md\",\n },\n});\nexport default config;\n","import { tableAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { mode } from \"@chakra-ui/theme-tools\";\nimport { baseBorder, baseText } from \"../utils/base-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst numericStyles = {\n \"&[data-is-numeric=true]\": {\n textAlign: \"end\",\n },\n};\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n table: {\n borderCollapse: \"collapse\",\n ...baseText(\"default\", props),\n width: \"100%\",\n },\n th: {\n fontWeight: \"bold\",\n textAlign: \"start\",\n },\n td: {\n textAlign: \"start\",\n },\n tfoot: {\n tr: {\n \"&:last-of-type\": {\n th: { borderBottomWidth: 0 },\n },\n },\n },\n caption: {\n marginTop: 4,\n fontFamily: \"heading\",\n textAlign: \"center\",\n fontWeight: \"bold\",\n color: \"currentColor\",\n },\n }),\n variants: {\n simple: (props) => ({\n th: {\n borderBottom: \"sm\",\n borderColor: mode(`blackAlpha.200`, `whiteAlpha.300`)(props),\n ...numericStyles,\n },\n td: {\n borderBottom: \"sm\",\n borderColor: mode(`blackAlpha.200`, `whiteAlpha.300`)(props),\n ...numericStyles,\n },\n }),\n outline: (props) => ({\n tbody: {\n tr: {\n transitionDuration: \"fast\",\n transitionProperty: \"background-color, box-shadow\",\n _hover: {\n ...baseBorder(\"hover\", props),\n outlineOffset: \"-2px\",\n backgroundColor: mode(\n props.colorScheme === \"grey\" ? \"mint\" : \"coralGreen\",\n \"whiteAlpha.200\",\n )(props),\n },\n _last: {\n borderBottomRadius: \"md\",\n },\n },\n },\n th: {\n border: mode(\"none\", \"md\"),\n borderColor: mode(\"transparent\", `whiteAlpha.200`)(props),\n backgroundColor: mode(`${props.colorScheme}.100`, \"darkTeal\")(props),\n ...numericStyles,\n },\n td: {\n border: mode(\"sm\", \"md\"),\n borderColor: mode(\n props.colorScheme === \"grey\" ? \"silver\" : \"blackAlpha.200\",\n \"whiteAlpha.200\",\n )(props),\n ...numericStyles,\n _first: {\n borderLeft: \"none\",\n },\n },\n tr: {\n _last: {\n td: {\n borderBottom: \"none\",\n },\n },\n },\n }),\n unstyled: {},\n },\n sizes: {\n sm: {\n table: {\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n },\n th: {\n paddingX: 3,\n paddingY: 1.5,\n },\n td: {\n paddingX: 3,\n paddingY: 1.5,\n },\n caption: {\n paddingX: 3,\n paddingY: 1.5,\n },\n },\n md: {\n table: {\n fontSize: [\"mobile.sm\", \"desktop.sm\"],\n },\n th: {\n paddingX: 3,\n paddingY: 1.5,\n },\n td: {\n paddingX: 3,\n paddingY: 1.5,\n },\n caption: {\n paddingX: 3,\n paddingY: 1.5,\n },\n },\n lg: {\n table: {\n fontSize: [\"mobile.sm\", \"desktop.sm\"],\n },\n th: {\n paddingX: 3,\n paddingY: \"15px\",\n },\n td: {\n paddingX: 3,\n paddingY: \"15px\",\n },\n caption: {\n paddingX: 3,\n paddingY: \"15px\",\n },\n },\n },\n defaultProps: {\n variant: \"simple\",\n size: \"md\",\n colorScheme: \"grey\",\n },\n});\n\nexport default config;\n","import { tabsAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { mode } from \"@chakra-ui/theme-tools\";\nimport { accentBackground, accentText } from \"../utils/accent-utils\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n tablist: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 0.5,\n width: props.isFitted ? \"fit-content\" : \"100%\",\n borderRadius: \"xl\",\n },\n tab: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n width: props.isFitted ? \"fit-content\" : \"100%\",\n height: \"100%\",\n whiteSpace: \"nowrap\",\n borderRadius: \"xl\",\n ...focusVisibleStyles(props),\n _disabled: {\n ...baseBackground(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n _selected: {\n pointerEvents: \"none\",\n ...brandBackground(\"default\", props),\n ...brandText(\"default\", props),\n _hover: {\n ...brandBackground(\"hover\", props),\n ...brandText(\"hover\", props),\n },\n _active: {\n ...brandBackground(\"active\", props),\n ...brandText(\"active\", props),\n },\n },\n },\n }),\n variants: {\n base: (props) => ({\n tablist: {\n ...baseBackground(\"default\", props),\n ...baseText(\"default\", props),\n ...baseBorder(\"default\", props),\n },\n tab: {\n ...baseText(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n outlineOffset: \"-2px\",\n },\n _accent: {\n ...baseBackground(\"active\", props),\n },\n },\n }),\n accent: (props) => ({\n tablist: {\n backgroundColor: mode(\"accent.bg.light\", \"accent.bg.dark\")(props),\n ...accentText(\"default\", props),\n },\n tab: {\n ...accentText(\"default\", props),\n _hover: {\n ...accentBackground(\"hover\", props),\n },\n _accent: {\n ...accentBackground(\"active\", props),\n },\n },\n }),\n },\n sizes: {\n xs: {\n tablist: {\n height: 5,\n padding: \"2px\",\n },\n tab: {\n paddingX: 2,\n paddingY: 0,\n },\n },\n sm: {\n tablist: {\n height: 6,\n padding: 0.5,\n },\n tab: {\n paddingX: 2,\n },\n },\n md: {\n tablist: {\n height: 7,\n padding: 0.5,\n },\n tab: {\n fontWeight: \"bold\",\n paddingX: 2,\n },\n },\n lg: {\n tablist: {\n height: 8,\n padding: \"4px\",\n },\n tab: {\n fontWeight: \"bold\",\n paddingX: 3,\n },\n },\n },\n defaultProps: {\n size: \"sm\",\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\nimport { inputBaseStyle, inputVariant } from \"../utils/input-utils\";\n\nconst config = defineStyleConfig({\n baseStyle: (props) => ({\n ...inputBaseStyle(props).field,\n minHeight: \"calc(var(--label-height) + 4rem)\",\n verticalAlign: \"top\",\n appearance: \"none\",\n borderTop: \"0.8rem solid transparent\",\n \"&:not(:placeholder-shown)\": {\n \"&:has(+ label)\": {\n borderTop: \"var(--label-height) solid transparent\", // use border in stead of padding to avoid problems with scrolling\n },\n \"& + label\": {\n transform: \"scale(0.825) translateY(-10px)\",\n },\n },\n }),\n variants: {\n base: (props) => ({\n ...inputVariant(\"base\", props),\n }),\n floating: (props) => ({\n ...inputVariant(\"floating\", props),\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\n\nconst config = defineStyleConfig({\n baseStyle: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"fit-content\",\n maxWidth: \"60ch\",\n minWidth: \"40ch\",\n paddingX: 2,\n paddingY: 1.5,\n boxShadow: \"sm\",\n borderRadius: \"sm\",\n },\n variants: {\n success: {\n backgroundColor: \"seaMist\",\n },\n info: {\n backgroundColor: \"lightBlue\",\n },\n error: {\n backgroundColor: \"lightRed\",\n },\n },\n});\n\nexport default config;\n","import { Theme, defineStyleConfig } from \"@chakra-ui/react\";\nimport { colors } from \"../foundations\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { floatingBackground } from \"../utils/floating-utils\";\nimport { mode } from \"@chakra-ui/theme-tools\";\n\nconst config = defineStyleConfig({\n baseStyle: (props: any) => ({\n appearance: \"none\",\n border: \"none\",\n overflow: \"hidden\",\n fontSize: \"inherit\",\n display: \"block\",\n borderRadius: \"md\",\n color: \"text.default.light\",\n ...focusVisibleStyles(props),\n ...getColorSchemeBaseProps(props),\n }),\n});\n\nexport default config;\n\ntype CardThemeProps = {\n colorScheme:\n | \"white\"\n | \"grey\"\n | \"green\"\n | \"orange\"\n | \"red\"\n | \"yellow\"\n | \"blue\"\n | \"darkBlue\"\n | \"darkGreen\"\n | \"darkYellow\";\n theme: Theme;\n colorMode: \"light\" | \"dark\";\n};\n\nconst getColorSchemeBaseProps = (props: CardThemeProps) => {\n switch (props.colorScheme) {\n case \"white\":\n return {\n ...floatingBackground(\"default\", props),\n color: mode(\"text.default.light\", \"text.default.dark\")(props),\n };\n case \"grey\":\n return {\n backgroundColor: \"lightGrey\",\n };\n case \"green\": {\n return {\n backgroundColor: \"seaMist\",\n };\n }\n case \"red\": {\n return {\n backgroundColor: \"pink\",\n };\n }\n case \"darkBlue\": {\n return {\n backgroundColor: \"darkBlue\",\n color: \"white\",\n };\n }\n case \"darkGreen\": {\n return {\n backgroundColor: \"pine\",\n color: \"white\",\n };\n }\n case \"darkYellow\": {\n return {\n backgroundColor: \"banana\",\n };\n }\n default:\n return {\n backgroundColor: colors[props.colorScheme]?.[100] ?? \"default\",\n };\n }\n};\n","import { defineStyleConfig } from \"@chakra-ui/react\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { floatingBackground, floatingBorder } from \"../utils/floating-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { accentBackground, accentText } from \"../utils/accent-utils\";\n\nconst config = defineStyleConfig({\n baseStyle: (props) => ({\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 transitionDuration: \"fast\",\n \"button&, a&, label&, &.is-clickable\": {\n ...focusVisibleStyles(props),\n },\n _disabled: {\n ...baseBackground(\"disabled\", props),\n ...baseBorder(\"disabled\", props),\n ...baseText(\"disabled\", props),\n outline: \"none\",\n pointerEvents: \"none\",\n },\n }),\n variants: {\n base: (props) => ({\n cursor: \"pointer\",\n ...baseBorder(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"active\", props),\n },\n }),\n accent: (props) => ({\n ...accentText(\"default\", props),\n ...accentBackground(\"default\", props),\n boxShadow: \"sm\",\n _hover: {\n ...accentBackground(\"hover\", props),\n boxShadow: \"md\",\n },\n _active: {\n ...accentBackground(\"active\", props),\n boxShadow: \"none\",\n },\n }),\n floating: (props) => ({\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n boxShadow: \"sm\",\n _hover: {\n ...floatingBackground(\"hover\", props),\n ...floatingBorder(\"hover\", props),\n boxShadow: \"md\",\n },\n _active: {\n ...floatingBorder(\"default\", props),\n ...floatingBackground(\"active\", props),\n boxShadow: \"none\",\n },\n }),\n },\n});\n\nexport default config;\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","import { useToast as useChakraToast } from \"@chakra-ui/react\";\nimport React, { useCallback } from \"react\";\nimport { ActionToast } from \"./ActionToast\";\nimport { BaseToast, BaseToastProps } from \"./BaseToast\";\nimport { ClosableToast } from \"./ClosableToast\";\n\ntype ClosableToastOptions = {\n isClosable: true;\n /** Callback for when the close button is clicked */\n onClose?: () => void;\n};\n\ntype ActionToastOptions = {\n isClosable?: false;\n /** Callback for when the button is clicked */\n onClick: () => void;\n /** The button text */\n buttonText: string;\n};\n\ntype BaseToastOptions = {\n /** How the toast looks */\n variant: BaseToastProps[\"variant\"];\n /** The content of the toast. Keep it short! */\n text: string;\n /**\n * Number of milliseconds to show the toast.\n *\n * Defaults to 6000.\n */\n duration?: number;\n};\n\nexport type ToastOptions = BaseToastOptions &\n (ClosableToastOptions | ActionToastOptions | {});\n\n/**\n * Creates a function that can trigger toasts\n *\n * ```tsx\n * const toast = useToast();\n * return (\n * <Button\n * onClick={() =>\n * toast({ text: \"Hello world\", variant: \"info\" })\n * }\n * >\n * Click me\n * </Button>\n * ```\n */\nexport const useToast = () => {\n const toast = useChakraToast();\n const wrappedToast = useCallback(\n (opts: ToastOptions) => {\n const Toast = getToastComponent(opts);\n toast({\n ...opts,\n render: Toast,\n });\n },\n [toast],\n );\n return wrappedToast;\n};\n\ntype RenderArgs = { onClose: () => void; id?: string | number };\n\nconst getToastComponent = (opts: ToastOptions) => {\n if (\"isClosable\" in opts && opts.isClosable) {\n return ({ onClose, id }: RenderArgs) => {\n if (id === undefined) {\n return null; // Handle the case where id is undefined\n }\n\n return (\n <ClosableToast\n id={id.toString()}\n variant={opts.variant}\n onClose={() => {\n if (opts.onClose) {\n opts.onClose();\n }\n onClose();\n }}\n >\n {opts.text}\n </ClosableToast>\n );\n };\n }\n if (\"buttonText\" in opts) {\n return ({ id }: RenderArgs) => {\n if (id === undefined) {\n return null; // Handle the case where id is undefined\n }\n\n return (\n <ActionToast\n id={id.toString()}\n variant={opts.variant}\n buttonText={opts.buttonText}\n onClick={opts.onClick}\n >\n {opts.text}\n </ActionToast>\n );\n };\n }\n return ({ id }: RenderArgs) => {\n if (id === undefined) {\n return null; // Handle the case where id is undefined\n }\n\n return (\n <BaseToast id={id.toString()} variant={opts.variant}>\n {opts.text}\n </BaseToast>\n );\n };\n};\n","import { Box } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { Button } from \"..\";\nimport { BaseToast, BaseToastProps } from \"./BaseToast\";\n\ntype ActionToastProps = BaseToastProps & {\n onClick: () => void;\n buttonText: string;\n};\n/** A toast with a button */\nexport const ActionToast = ({\n children,\n onClick,\n variant,\n buttonText,\n id,\n}: ActionToastProps) => {\n return (\n <BaseToast variant={variant} id={id}>\n <Box marginRight={2} flexGrow=\"1\">\n {children}\n </Box>\n <Button variant=\"tertiary\" size=\"sm\" onClick={onClick}>\n {buttonText}\n </Button>\n </BaseToast>\n );\n};\n","import { Flex, useStyleConfig } from \"@chakra-ui/react\";\nimport {\n ErrorOutline24Icon,\n InformationOutline24Icon,\n SuccessOutline24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { createTexts, useTranslation } from \"..\";\n\nexport type BaseToastProps = {\n children: React.ReactNode;\n variant: \"success\" | \"info\" | \"error\";\n id?: string;\n};\n/**\n * A basic toast component.\n **/\nexport const BaseToast = ({ children, variant, id }: BaseToastProps) => {\n const styles = useStyleConfig(\"Toast\", { variant });\n return (\n <Flex sx={styles} id={id}>\n <ToastIcon variant={variant} />\n {children}\n </Flex>\n );\n};\n\ntype ToastIconProps = Pick<BaseToastProps, \"variant\">;\n\n/** Internal component for selecting the correct icon to show */\nconst ToastIcon = ({ variant }: ToastIconProps) => {\n const Icon = getIcon(variant);\n const { t } = useTranslation();\n return (\n <Icon\n flexShrink={0}\n aria-label={t(texts[variant])}\n marginRight={1}\n marginY={1.5}\n color=\"darkGrey\"\n />\n );\n};\n\nconst getIcon = (variant: BaseToastProps[\"variant\"]) => {\n switch (variant) {\n case \"info\":\n return InformationOutline24Icon;\n case \"success\":\n return SuccessOutline24Icon;\n case \"error\":\n return ErrorOutline24Icon;\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","import { Box, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport { CloseFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { IconButton, createTexts, useTranslation } from \"..\";\nimport { BaseToast, BaseToastProps } from \"./BaseToast\";\n\ntype ClosableToastProps = BaseToastProps & {\n onClose: () => void;\n};\n/** A closable toast */\nexport const ClosableToast = ({\n children,\n onClose,\n variant,\n id,\n}: ClosableToastProps) => {\n const styles = useMultiStyleConfig(\"Toast\", { variant });\n const { t } = useTranslation();\n return (\n <BaseToast variant={variant} id={id}>\n <Box flexGrow=\"1\">{children}</Box>\n <IconButton\n sx={styles.dismissButton}\n variant=\"ghost\"\n aria-label={t(texts.dismiss)}\n icon={<CloseFill18Icon />}\n onClick={onClose}\n />\n </BaseToast>\n );\n};\n\nconst texts = createTexts({\n dismiss: {\n nb: \"Lukk\",\n nn: \"Lukk\",\n sv: \"Dölj\",\n en: \"Dismiss\",\n },\n});\n","import {\n Popover,\n PopoverArrow,\n PopoverBody,\n PopoverCloseButton,\n PopoverContent,\n PopoverProps,\n PopoverTrigger,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type TooltipProps = PopoverProps & {\n /**\n * Whatever is supposed to trigger the tooltip.\n * Must be focusable - like a link or button */\n children: React.ReactNode;\n /** Callback for when the tooltip is requested to close */\n onClose?: () => void;\n /** Should the tooltip have a close button? */\n withCloseButton?: boolean;\n /** The content of the tooltip */\n content: React.ReactNode;\n /** Use this prop if you want to control the open state */\n isOpen?: boolean;\n /** Whether or not the tooltip is open by default */\n defaultIsOpen?: boolean;\n /**\n * Where the tooltip should be placed by default.\n *\n * Note - this is a suggestion, and may be overridden by space concerns.\n */\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n /**\n * The amount of spacing.\n * Tooltips with lots of content should be `lg`. Defaults to `sm`.\n **/\n size?: \"sm\" | \"lg\";\n};\n/** A tooltip component. */\nexport const Tooltip = ({\n children,\n content,\n onClose,\n isOpen,\n defaultIsOpen,\n placement = \"bottom\",\n size = \"sm\",\n withCloseButton = false,\n ...props\n}: TooltipProps) => {\n return (\n <Popover\n onClose={onClose}\n isOpen={isOpen}\n defaultIsOpen={defaultIsOpen}\n placement={placement}\n size={size}\n arrowSize={12}\n arrowShadowColor=\"none\"\n {...props}\n >\n <PopoverTrigger>{children}</PopoverTrigger>\n <PopoverContent>\n <PopoverArrow />\n {withCloseButton && <PopoverCloseButton />}\n <PopoverBody>{content}</PopoverBody>\n </PopoverContent>\n </Popover>\n );\n};\n","export { Collapse, Fade, ScaleFade, Slide, SlideFade } from \"@chakra-ui/react\";\nexport type {\n CollapseProps,\n FadeProps,\n ScaleFadeProps,\n SlideFadeProps,\n SlideProps,\n} from \"@chakra-ui/react\";\n","/** This file works as a proxy for all Chakra UI exports */\nexport {\n DarkMode,\n LightMode,\n Portal,\n defineStyleConfig,\n extendTheme,\n useBreakpointValue,\n useClipboard,\n useColorMode,\n useColorModePreference,\n useColorModeValue,\n useControllableProp,\n useDisclosure,\n useMergeRefs,\n useOutsideClick,\n usePrefersReducedMotion,\n useTheme,\n useToken,\n} from \"@chakra-ui/react\";\nexport type {\n CSSWithMultiValues,\n ComponentStyleConfig,\n PortalProps,\n UseClipboardOptions,\n UseDisclosureProps,\n UseOutsideClickProps,\n} from \"@chakra-ui/react\";\nimport { useMediaQuery as useMediaQueryChakra } from \"@chakra-ui/react\";\n\n/**\n * @deprecated useMediaQuery is deprecated. Use CSS only to determine the media query. - SSR is not supported and usage of useMediaQuery for rendering will cause hydration errors.\n */\nexport const useMediaQuery = useMediaQueryChakra;\n\nexport { useSize } from \"@chakra-ui/react-use-size\";\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 .replace(/[\\u0300-\\u036f]/g, \"\") // Remove diacritics\n .replace(/[\\u00C6\\u00E6]/g, \"ae\") // Replace Æ, æ\n .replace(/[\\u00D8\\u00F8]/g, \"oe\") // Replace Ø, ø\n .replace(/[\\u00C5\\u00E5]/g, \"aa\") // Replace Å, å\n // Extend the replacement rules as needed\n .toLowerCase()\n .replace(/\\s+/g, \"-\") // Replace spaces with -\n .replace(/[^\\w-]+/g, \"\") // Remove all non-word chars\n .replace(/--+/g, \"-\") // Replace multiple - with single -\n .replace(/^-+/, \"\") // Trim - from start of text\n .replace(/-+$/, \"\")\n .substring(0, maxLength)\n );\n}\n"]}
|
1
|
+
{"version":3,"sources":["../src/index.tsx","../src/accordion/Accordion.tsx","../src/layout/index.tsx","../src/layout/Divider.tsx","../src/layout/Stack.tsx","../src/layout/RadioCard.tsx","../src/layout/RadioCardGroup.tsx","../src/input/index.tsx","../src/input/AttachedInputs.tsx","../src/input/CardSelect.tsx","../src/input/Dialog.tsx","../src/input/Popover.tsx","../src/input/Checkbox.tsx","../src/input/CheckboxGroup.tsx","../src/input/ChoiceChip.tsx","../src/input/Combobox.tsx","../src/input/FormControl.tsx","../src/input/FormErrorMessage.tsx","../src/input/FormLabel.tsx","../src/input/InfoSelect.tsx","../src/input/ListBox.tsx","../src/input/Input.tsx","../src/input/InputElement.tsx","../src/input/NativeSelect.tsx","../src/input/NumericStepper.tsx","../src/input/PasswordInput.tsx","../src/input/PhoneNumberInput.tsx","../src/input/CountryCodeSelect.tsx","../src/input/Radio.tsx","../src/input/RadioGroup.tsx","../src/input/SearchInput.tsx","../src/input/Switch.tsx","../src/input/Textarea.tsx","../src/layout/StaticCard.tsx","../src/layout/PressableCard.tsx","../src/accordion/Expandable.tsx","../src/alert/ClosableAlert.tsx","../src/button/Button.tsx","../src/i18n/index.tsx","../src/loader/ColorInlineLoader.tsx","../src/loader/ClientOnly.tsx","../src/loader/useHydrated.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/loader/Skeleton.tsx","../src/loader/SkeletonCircle.tsx","../src/loader/SkeletonText.tsx","../src/button/ButtonGroup.tsx","../src/button/CloseButton.tsx","../src/button/IconButton.tsx","../src/button/FloatingActionButton.tsx","../src/alert/AlertIcon.tsx","../src/alert/BaseAlert.tsx","../src/alert/ExpandableAlert.tsx","../src/alert/StaticAlert.tsx","../src/alert/ServiceAlert.tsx","../src/breadcrumb/Breadcrumb.tsx","../src/datepicker/index.tsx","../src/datepicker/DatePicker.tsx","../src/datepicker/Calendar.tsx","../src/datepicker/CalendarGrid.tsx","../src/typography/Badge.tsx","../src/typography/Code.tsx","../src/typography/Heading.tsx","../src/typography/Text.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/image/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/VyLogo.tsx","../src/logo/VyLogoPride.tsx","../src/logo/CargonetLogo.tsx","../src/media-controller/JumpButton.tsx","../src/media-controller/PlayPauseButton.tsx","../src/media-controller/SkipButton.tsx","../src/modal/Drawer.tsx","../src/modal/ModalHeader.tsx","../src/modal/FullScreenDrawer.tsx","../src/modal/Modal.tsx","../src/modal/SimpleDrawer.tsx","../src/nudge/Nudge.tsx","../src/nudge/WizardNudge.tsx","../src/pagination/Pagination.tsx","../src/progress-indicator/ProgressIndicator.tsx","../src/progress-indicator/ProgressDot.tsx","../src/provider/SporProvider.tsx","../src/stepper/Stepper.tsx","../src/stepper/StepperContext.tsx","../src/stepper/StepperStep.tsx","../src/tab/index.tsx","../src/tab/Tabs.tsx","../src/table/index.tsx","../src/table/Table.tsx","../src/theme/index.ts","../src/theme/components/index.ts","../src/theme/components/accordion.ts","../src/theme/utils/base-utils.ts","../src/theme/utils/brand-utils.ts","../src/theme/utils/focus-utils.ts","../src/theme/utils/surface-utils.ts","../src/theme/utils/floating-utils.ts","../src/theme/utils/ghost-utils.ts","../src/theme/components/alert.ts","../src/theme/components/alert-expandable.ts","../src/theme/components/alert-service.ts","../src/theme/components/badge.ts","../src/theme/components/breadcrumb.ts","../src/theme/components/button.ts","../src/theme/utils/accent-utils.ts","../src/theme/components/card-select.ts","../src/theme/foundations/index.ts","../src/theme/foundations/borders.ts","../src/theme/foundations/breakpoints.ts","../src/theme/foundations/colors.ts","../src/theme/foundations/config.ts","../src/theme/foundations/fonts.ts","../src/theme/foundations/fontSizes.ts","../src/theme/foundations/fontWeights.ts","../src/theme/foundations/lineHeights.ts","../src/theme/foundations/radii.ts","../src/theme/foundations/shadows.ts","../src/theme/foundations/sizes.ts","../src/theme/foundations/spacing.ts","../src/theme/foundations/textStyles.ts","../src/theme/foundations/zIndices.ts","../src/theme/foundations/styles.ts","../src/theme/components/checkbox.ts","../src/theme/components/choice-chip.ts","../src/theme/components/close-button.ts","../src/theme/components/code.ts","../src/theme/components/datepicker.ts","../src/theme/components/divider.ts","../src/theme/components/drawer.ts","../src/theme/utils/bg-utils.ts","../src/theme/components/fab.ts","../src/theme/components/form.ts","../src/theme/components/form-label.ts","../src/theme/components/info-select.ts","../src/theme/utils/sr-utils.ts","../src/theme/components/info-tag.ts","../src/theme/components/travel-tag.ts","../src/theme/components/input.ts","../src/theme/utils/input-utils.ts","../src/theme/components/line-icon.ts","../src/theme/components/link.ts","../src/theme/components/list.ts","../src/theme/components/listbox.ts","../src/theme/utils/outline-utils.ts","../src/theme/components/media-controller-button.ts","../src/theme/components/modal.ts","../src/theme/components/numeric-stepper.ts","../src/theme/components/pagination.ts","../src/theme/components/popover.ts","../src/theme/components/progress-bar.ts","../src/theme/components/progress-indicator.ts","../src/theme/components/radio-card.ts","../src/theme/components/radio.ts","../src/theme/components/select.ts","../src/theme/components/skeleton.ts","../src/theme/components/stepper.ts","../src/theme/components/switch.ts","../src/theme/components/table.ts","../src/theme/components/tabs.ts","../src/theme/components/textarea.ts","../src/theme/components/toast.ts","../src/theme/components/static-card.ts","../src/theme/components/pressable-card.ts","../src/theme/font-faces.ts","../src/toast/useToast.tsx","../src/toast/ActionToast.tsx","../src/toast/BaseToast.tsx","../src/toast/ClosableToast.tsx","../src/tooltip/Tooltip.tsx","../src/transition/index.ts","../src/util/externals.tsx","../src/util/slugify.tsx"],"names":["tokens","forwardRef","React","Box","chakra","useMultiStyleConfig","useContext","useEffect","useId","useState","Stack","InputGroup","Flex","useRef","styles","DropdownDownFill24Icon","useButton","FormLabel","useFormControlContext","InputLeftElement","InputRightElement","texts","ChakraInput","useControllableState","IconButton","CloseOutline24Icon","dataAttr","useStyleConfig","spacing","AccordionButton","AccordionIcon","AccordionItem","AccordionPanel","useDisclosure","CloseFill18Icon","Center","Language","spinnerLightData","Text","useProgressBar","Button","getIcon","Accordion","useColorModeValue","Popover","PopoverAnchor","Heading","createCalendar","FocusLock","PopoverArrow","PopoverBody","PopoverContent","PopoverTrigger","Portal","I18nProvider","DropdownRightFill18Icon","WarningFill24Icon","ListItem","DrawerBody","DrawerContent","DrawerOverlay","useModalContext","CloseFill24Icon","CloseFill30Icon","DrawerCloseButton","UnorderedList","DropdownLeftFill18Icon","theme","ArrowLeftFill24Icon","mode","surface","createMultiStyleConfigHelpers","parts","helpers","config","anatomy","defineStyleConfig","cssVar","sizes","bg","defineMultiStyleConfig","definePartsStyle","getSize","Brand","ErrorOutline24Icon","InformationOutline24Icon","SuccessOutline24Icon","PopoverCloseButton","DarkMode","useMediaQuery"],"mappings":"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","sourcesContent":["export * as tokens from \"@vygruppen/spor-design-tokens\";\nexport * from \"./accordion\";\nexport * from \"./alert\";\nexport * from \"./breadcrumb\";\nexport * from \"./button\";\nexport * from \"./datepicker\";\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 \"./modal\";\nexport * from \"./nudge\";\nexport * from \"./pagination\";\nexport * from \"./progress-indicator\";\nexport * from \"./provider\";\nexport * from \"./stepper\";\nexport * from \"./tab\";\nexport * from \"./table\";\nexport * from \"./theme\";\nexport * from \"./toast\";\nexport * from \"./tooltip\";\nexport * from \"./transition\";\nexport * from \"./typography\";\nexport * from \"./util\";\n","import {\n Accordion as ChakraAccordion,\n AccordionProps as ChakraAccordionProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { Stack, StackProps } from \"../layout\";\nexport {\n AccordionButton,\n AccordionIcon,\n AccordionItem,\n AccordionPanel,\n} from \"@chakra-ui/react\";\nexport type {\n AccordionButtonProps,\n AccordionItemProps,\n AccordionPanelProps,\n} from \"@chakra-ui/react\";\n\nexport type AccordionProps = Omit<ChakraAccordionProps, \"variant\" | \"size\"> & {\n /**\n * The display variant of the accordion items.\n *\n * - `ghost` renders a pretty unstyled expandable list without any borders\n * - `base` renders an outlined version\n * - `floating` renders a version with a drop shadow\n */\n variant?: \"ghost\" | \"base\" | \"floating\";\n /** The margin between accordion items */\n spacing?: StackProps[\"spacing\"];\n};\n/*\n * Wraps a set of ExpandableItem or AccordionItem components.\n *\n * ```tsx\n * <Accordion variant=\"ghost\">\n * <ExpandableItem title=\"Is Spor easy?\" headingLevel=\"h3\">\n * Yes\n * </ExpandableItem>\n * <ExpandableItem title=\"Is Spor lovable?\" headingLevel=\"h3\">\n * 🥰\n * </ExpandableItem>\n * </Accordion>\n * ```\n *\n * If you only have one expandable item, you can use the `<Expandable />` component instead.\n */\nexport const Accordion = forwardRef<AccordionProps, \"div\">(\n ({ children, spacing = 2, ...props }, ref) => {\n const defaultIndex =\n typeof props.defaultIndex === \"number\" && props.allowMultiple\n ? [props.defaultIndex]\n : props.defaultIndex;\n return (\n <ChakraAccordion\n {...props}\n ref={ref}\n defaultIndex={defaultIndex as number[] | undefined}\n >\n <Stack spacing={spacing}>{children}</Stack>\n </ChakraAccordion>\n );\n },\n);\n","export {\n Box,\n Center,\n Container,\n Flex,\n Grid,\n GridItem,\n HStack,\n SimpleGrid,\n Spacer,\n VStack,\n Wrap,\n WrapItem,\n} from \"@chakra-ui/react\";\nexport type {\n BoxProps,\n CenterProps,\n ContainerProps,\n FlexProps,\n GridItemProps,\n GridProps,\n SimpleGridProps,\n SpacerProps,\n WrapItemProps,\n WrapProps,\n} from \"@chakra-ui/react\";\nexport * from \"./Divider\";\nexport * from \"./Stack\";\nexport * from \"./RadioCard\";\nexport * from \"./RadioCardGroup\";\nexport * from \"./StaticCard\";\nexport * from \"./PressableCard\";\n","import {\n BoxProps,\n Divider as ChakraDivider,\n DividerProps as ChakraDividerProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport { As } from \"@chakra-ui/system\";\nimport React from \"react\";\n\nexport type DividerProps = ChakraDividerProps & {\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"solid\" | \"dashed\";\n};\n/** A dividing line, used to divide content.\n *\n * You can specify margins if you need to give the content some space, or use a `Stack` component to do it for you\n *\n * ```tsx\n * <Divider marginTop={4} marginBottom={6} />\n * ```\n *\n * There are three different sizes available: `sm`, `md` and `lg`. The default is `md`.\n * There are two different variants available: `solid` and `dashed`. The default is `solid`.\n */\nexport const Divider = forwardRef<BoxProps, As>((props, ref) => {\n return <ChakraDivider {...props} ref={ref} />;\n});\n","import {\n Stack as ChakraStack,\n StackProps as ChakraStackProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type StackProps = Exclude<ChakraStackProps, \"direction\"> & {\n flexDirection?: ChakraStackProps[\"direction\"];\n};\n/**\n * Adds consistent spacing between elements\n *\n * ```tsx\n * <Stack>\n * <Text>Here's a paragraph</Text>\n * <Text>Here's another perfectly spaced paragraph</Text>\n * </Stack>\n * ```\n *\n * By default, the stack will be a column. You can change this by setting the `flexDirection` prop to any valid flex direction:\n * ```tsx\n * <Stack flexDirection=\"row\">\n * <Checkbox>Here's a checkbox</Checkbox>\n * <Checkbox>Here's another checkbox, almost right next to the first one</Checkbox>\n * </Stack>\n * ```\n *\n * You can specify the spacing between elements with the `spacing` prop:\n *\n * ```tsx\n * <Stack spacing={4}>\n * <StaticCard>Here's one card</StaticCard>\n * <StaticCard>Here's another card, with a lot of space between it</StaticCard>\n * </Stack>\n * ```\n */\nexport const Stack = forwardRef<StackProps, \"div\">(\n ({ flexDirection, ...props }, ref) => {\n return <ChakraStack {...props} direction={flexDirection} ref={ref} />;\n },\n);\n","import {\n Box,\n BoxProps,\n chakra,\n forwardRef,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport React, { useContext, useEffect, useId, useState } from \"react\";\nimport { RadioCardGroupContext } from \"./RadioCardGroup\";\nimport { dataAttr } from \"@chakra-ui/utils\";\n\n/**\n * Radio cards are used to present a set of options where only one option can be selected.\n *\n * RadioCard components must be wrapped in a RadioCardGroup component.\n *\n * @example\n * ```tsx\n * <RadioCardGroup name=\"ticket\">\n * <RadioCard value=\"economy\">Economy</RadioCard>\n * <RadioCard value=\"business\">Business</RadioCard>\n * <RadioCard value=\"first-class\">First Class</RadioCard>\n * </RadioCardGroup>\n * ```\n *\n * RadioCard inherits props from Box.\n *\n * Be advised to not use the `name` prop on the RadioCard component.\n *\n * Changing the semantics may also cause the component to not work as expected.\n *\n * @see Docs https://spor.vy.no/components/radiocard\n */\n\nexport type RadioCardProps = BoxProps & {\n /** The value that will be passed to the `RadioCardGroup`'s `onChange` function if this `RadioCard` is selected.. */\n value: string;\n /** The content of the RadioCard. */\n children: React.ReactNode;\n /** Determines if the RadioCard is disabled. */\n isDisabled?: boolean;\n};\n\nexport const RadioCard = forwardRef(\n ({ children, value, isDisabled, ...props }: RadioCardProps, ref) => {\n const context = useContext(RadioCardGroupContext);\n\n if (!context) {\n throw new Error(\n \"RadioCard components must be wrapped in a RadioCardGroup component\",\n );\n }\n\n const { name, selectedValue, onChange, variant } = context;\n\n const styles = useMultiStyleConfig(\"RadioCard\", { variant });\n\n const [isKeyboardUser, setKeyboardUser] = useState(false);\n const [isFocused, setFocus] = useState(false);\n\n const isChecked = selectedValue === value;\n\n useEffect(() => {\n const handleMouseDown = () => setKeyboardUser(false);\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \" \") {\n setFocus(false);\n } else {\n setKeyboardUser(true);\n }\n };\n\n window.addEventListener(\"mousedown\", handleMouseDown);\n window.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n window.removeEventListener(\"mousedown\", handleMouseDown);\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, []);\n\n useEffect(() => {\n if (isKeyboardUser && isChecked) {\n setFocus(true);\n } else {\n setFocus(false);\n }\n }, [isKeyboardUser, isChecked]);\n\n const inputId = `radio-card-${useId()}`;\n\n return (\n <Box\n onFocus={() => isKeyboardUser && setFocus(true)}\n onBlur={() => setFocus(false)}\n >\n <chakra.input\n type=\"radio\"\n id={inputId}\n name={name}\n ref={ref}\n checked={isChecked}\n onChange={() => onChange(value)}\n disabled={isDisabled}\n __css={styles.radioInput}\n />\n <Box\n as=\"label\"\n name={name}\n htmlFor={inputId}\n aria-checked={dataAttr(isChecked)}\n data-checked={dataAttr(isChecked)}\n data-disabled={dataAttr(isDisabled)}\n {...props}\n __css={{\n ...styles.container,\n ...(isChecked && styles.checked),\n ...(isFocused && !isChecked && styles.focused),\n ...(isChecked && isFocused && styles.focusedChecked),\n }}\n >\n {children}\n </Box>\n </Box>\n );\n },\n);\n","import { BoxProps, Stack } from \"@chakra-ui/react\";\nimport React, { useState } from \"react\";\nimport { FormLabel } from \"../input\";\n\n/**\n * RadioCardGroupContext is used to pass down the state and handlers to the RadioCard components.\n *\n * @see RadioCard\n */\n\ntype RadioGroupContextProps = {\n name: string;\n selectedValue: string;\n onChange: (value: string) => void;\n variant?: \"base\" | \"floating\";\n defaultValue?: string;\n value?: string;\n};\n\nexport const RadioCardGroupContext =\n React.createContext<RadioGroupContextProps | null>(null);\n\ntype RadioCardGroupProps = BoxProps & {\n /** A string that will be assigned as the name attribute to all RadioCard components within the group. */\n name: string;\n /** The RadioCard components that make up the group. */\n children: React.ReactNode;\n /** Optional. Determines the style of the RadioCard. Can be either \"base\" or \"floating\". */\n variant?: \"base\" | \"floating\";\n /** Optional. Determines the direction of the group. Can be either \"row\" or \"column\". */\n direction?: \"row\" | \"column\";\n /** Optional. A label for the group. */\n groupLabel?: string;\n /** Optional. The default value of the RadioCard group. */\n defaultValue?: string;\n /** Optional. A function that will be called when the selected value changes. The function receives the value of the selected RadioCard. */\n onChange?: (value: string) => void;\n};\n\nexport const RadioCardGroup: React.FC<RadioCardGroupProps> = ({\n children,\n name,\n variant = \"base\",\n direction = \"row\",\n groupLabel,\n defaultValue,\n onChange,\n ...props\n}: RadioCardGroupProps) => {\n const [selectedValue, setSelectedValue] = useState<string>(\n defaultValue || \"\",\n );\n\n const handleChange = (value: string) => {\n setSelectedValue(value);\n onChange && onChange(value);\n };\n\n return (\n <RadioCardGroupContext.Provider\n value={{\n name,\n selectedValue,\n onChange: handleChange,\n variant,\n defaultValue: defaultValue || \"\",\n }}\n >\n <Stack as=\"fieldset\" direction={direction} {...props}>\n {groupLabel && (\n <FormLabel as=\"legend\" id={groupLabel}>\n {groupLabel}\n </FormLabel>\n )}\n {children}\n </Stack>\n </RadioCardGroupContext.Provider>\n );\n};\n","export { FormHelperText, InputGroup } from \"@chakra-ui/react\";\nexport type { InputGroupProps } from \"@chakra-ui/react\";\nexport * from \"./AttachedInputs\";\nexport * from \"./CardSelect\";\nexport * from \"./Checkbox\";\nexport * from \"./CheckboxGroup\";\nexport * from \"./ChoiceChip\";\nexport * from \"./Combobox\";\nexport * from \"./FormControl\";\nexport * from \"./FormErrorMessage\";\nexport * from \"./FormLabel\";\nexport * from \"./InfoSelect\";\nexport * from \"./Input\";\nexport * from \"./InputElement\";\nexport * from \"./ListBox\";\nexport * from \"./NativeSelect\";\nexport * from \"./NumericStepper\";\nexport * from \"./PasswordInput\";\nexport * from \"./PhoneNumberInput\";\nexport * from \"./Radio\";\nexport * from \"./RadioGroup\";\nexport * from \"./SearchInput\";\nexport * from \"./Switch\";\nexport * from \"./Textarea\";\n","import React from \"react\";\nimport { Flex, FlexProps } from \"..\";\n\ntype AttachedInputsProps = FlexProps;\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 */\nexport const AttachedInputs = ({\n flexDirection = \"row\",\n ...rest\n}: AttachedInputsProps) => {\n const attachedStyles = {\n horizontal: {\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 \"> *: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 const direction = flexDirection === \"row\" ? \"horizontal\" : \"vertical\";\n return (\n <Flex\n role=\"group\"\n __css={attachedStyles[direction]}\n display=\"flex\"\n flexDirection={flexDirection}\n {...rest}\n />\n );\n};\n","import {\n Box,\n BoxProps,\n chakra,\n Flex,\n forwardRef,\n ResponsiveValue,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport {\n DropdownDownFill18Icon,\n DropdownDownFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { AriaPositionProps, useButton, useOverlayTrigger } from \"react-aria\";\nimport { useOverlayTriggerState } from \"react-stately\";\nimport { StaticCard } from \"..\";\nimport { Dialog } from \"./Dialog\";\nimport { Popover } from \"./Popover\";\n\ntype CardSelectProps = BoxProps & {\n /** The design of the trigger button.\n *\n * - `ghost` is a transparent button with text\n * - `base` 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: \"base\" | \"ghost\" | \"floating\";\n /** The size of the trigger button */\n size: \"sm\" | \"md\" | \"lg\";\n /** Whether the card select is open / active, if controlled */\n isOpen?: boolean;\n /** The default state of the card select. Defaults to false (closed) */\n defaultOpen?: boolean;\n /** Callback for when the card select opens or closes. */\n onToggle?: (isOpen: boolean) => void;\n /** An optional trigger button icon, rendered to the left of the label */\n icon?: React.ReactNode;\n /** The content of the card select */\n children: React.ReactNode;\n /** The horizontalOffset of the popover card */\n crossOffset?: number;\n /** The position of the popover card */\n placement?: AriaPositionProps[\"placement\"];\n /** Whether or not to show the chevron. Defaults to true */\n withChevron?: boolean;\n /** Defaults to normal */\n fontWeight?: ResponsiveValue<\"normal\" | \"bold\">;\n} & (\n | {\n /** The text label of the trigger button */\n label: string;\n }\n | {\n /** Accessible label for the trigger button */\n \"aria-label\": string;\n }\n );\n\n/**\n * A card select component.\n *\n * This component consists of a trigger button and a card select popover. The trigger button has several different variants and sizes, and can have an optional icon.\n *\n * ```tsx\n * <CardSelect label=\"Languages\" variant=\"card\" size=\"md\">\n * <LanguageSettings />\n * </CardSelect>\n * ```\n *\n * @see https://spor.vy.no/components/card-select\n *\n */\nexport const CardSelect = forwardRef<CardSelectProps, \"button\">(\n (\n {\n variant,\n size,\n isOpen: externalIsOpen,\n defaultOpen = false,\n onToggle,\n icon,\n children,\n width = \"fit-content\",\n crossOffset = 0,\n placement = \"bottom\",\n withChevron = true,\n fontWeight = \"normal\",\n ...props\n },\n externalRef,\n ) => {\n const label = \"label\" in props ? props.label : props[\"aria-label\"];\n const internalRef = useRef<HTMLButtonElement>(null);\n const triggerRef = (externalRef ??\n internalRef) as React.RefObject<HTMLButtonElement>;\n\n const state = useOverlayTriggerState({\n isOpen: externalIsOpen,\n onOpenChange: onToggle,\n defaultOpen,\n });\n const { triggerProps, overlayProps } = useOverlayTrigger(\n { type: \"dialog\" },\n state,\n triggerRef,\n );\n\n const { buttonProps } = useButton(triggerProps, triggerRef);\n\n const styles = useMultiStyleConfig(\"CardSelect\", {\n variant,\n size,\n });\n useForceRerender(state.isOpen);\n\n const ChevronIcon =\n size === \"sm\" ? DropdownDownFill18Icon : DropdownDownFill24Icon;\n\n return (\n <Box {...props}>\n <chakra.button\n type=\"button\"\n ref={triggerRef}\n sx={styles.trigger}\n aria-label={label}\n {...buttonProps}\n width={width}\n data-attachable\n >\n <Flex gap={1.5} alignItems=\"center\">\n {icon}\n <Box as=\"span\" display={props[\"aria-label\"] ? \"none\" : \"inline\"}>\n {label}\n </Box>\n {withChevron ? (\n <ChevronIcon\n transform={state.isOpen ? \"rotate(180deg)\" : \"none\"}\n />\n ) : null}\n </Flex>\n </chakra.button>\n {state.isOpen && (\n <Popover\n state={state}\n triggerRef={triggerRef}\n offset={size === \"sm\" ? 6 : 12}\n crossOffset={crossOffset}\n placement={placement}\n containerPadding={0}\n >\n <StaticCard\n colorScheme=\"white\"\n size=\"md\"\n fontSize={\"xs\"}\n border={\"sm\"}\n borderColor={\"silver\"}\n sx={styles.card}\n {...overlayProps}\n maxWidth={(triggerRef.current?.clientWidth ?? 1) * 2}\n >\n <Dialog aria-label={label}>{children}</Dialog>\n </StaticCard>\n </Popover>\n )}\n </Box>\n );\n },\n);\n\n/**\n * Hold my beer.\n *\n * This is a workaround for a \"bug\" in react-aria where the overlay doesn't\n * calculate the placement correctly for some reason.\n *\n * This is a hack, which forces React to rerender the component one extra time\n * after the state changes from closed to open.\n *\n * There is probably a better way to do this, but I could not come up with one.\n */\nfunction useForceRerender(shouldRerender: boolean) {\n const [_, update] = useState(false);\n useEffect(() => {\n if (shouldRerender) {\n update((x) => !x);\n }\n }, [shouldRerender]);\n}\n","import { Box, Heading } from \"@chakra-ui/react\";\nimport React, { useRef } from \"react\";\nimport { AriaDialogProps, useDialog } from \"react-aria\";\n\ntype DialogProps = AriaDialogProps & {\n /** Optional title tag\n *\n * Important! If you don't pass a title, you must pass an `aria-label` prop to the dialog.\n */\n title?: string;\n /** The content of the dialog */\n children: React.ReactNode;\n};\n/** Internal component for creating card select popovers */\nexport const Dialog = ({ title, children, ...props }: DialogProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const { dialogProps, titleProps } = useDialog(props, ref);\n\n return (\n <Box {...dialogProps} ref={ref} outline=\"none\">\n {title && (\n <Heading as=\"h3\" {...titleProps}>\n {title}\n </Heading>\n )}\n {children}\n </Box>\n );\n};\n","import { 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 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);\n","import {\n Checkbox as ChakraCheckbox,\n CheckboxProps as ChakraCheckboxProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type CheckboxProps = ChakraCheckboxProps;\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 `FormControl`.\n *\n * You can group several of these together with a `CheckboxGroup`.\n */\nexport const Checkbox = ChakraCheckbox;\n","import {\n CheckboxGroup as ChakraCheckboxGroup,\n CheckboxGroupProps as ChakraCheckboxGroupProps,\n Stack,\n StackDirection,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type CheckboxGroupProps = Exclude<\n ChakraCheckboxGroupProps,\n \"colorScheme\" | \"size\" | \"variant\"\n> & { direction?: StackDirection };\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 isDisabled 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 */\nexport const CheckboxGroup = ({\n direction = \"row\",\n children,\n ...props\n}: CheckboxGroupProps) => {\n return (\n <ChakraCheckboxGroup {...props}>\n <Stack direction={direction}>{children}</Stack>\n </ChakraCheckboxGroup>\n );\n};\n","import {\n chakra,\n forwardRef,\n useCheckbox,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport { dataAttr } from \"@chakra-ui/utils\";\nimport { CloseOutline24Icon } from \"@vygruppen/spor-icon-react\";\nimport React, { ChangeEvent, useId } from \"react\";\n\nexport type ChoiceChipProps = {\n onChange?: (value: ChangeEvent<HTMLInputElement>) => void;\n isChecked?: boolean;\n isDisabled?: boolean;\n defaultChecked?: boolean;\n /** The button text */\n children: React.ReactNode;\n icon?: {\n default: React.ReactNode;\n checked: React.ReactNode;\n };\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n chipType?: \"icon\" | \"choice\" | \"filter\";\n variant?: \"base\" | \"accent\" | \"floating\";\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 - `base`, `accent` and `floating`.\n *\n * ```tsx\n * <Stack flexDirection=\"row\">\n * <ChoiceChip variant=\"base\">Bus</ChoiceChip>\n * <ChoiceChip variant=\"accent\">Boat</ChoiceChip>\n * <ChoiceChip variant=\"floating\">Train</ChoiceChip>\n * </Stack>\n * ```\n */\nexport const ChoiceChip = forwardRef(\n (\n {\n children,\n icon,\n isDisabled,\n size = \"sm\",\n chipType = \"choice\",\n variant = \"base\",\n ...props\n }: ChoiceChipProps,\n ref,\n ) => {\n const {\n state,\n getInputProps,\n getCheckboxProps,\n getRootProps,\n getLabelProps,\n } = useCheckbox(props);\n const styles = useMultiStyleConfig(\"ChoiceChip\", {\n size,\n chipType,\n variant,\n icon,\n hasLabel: chipType !== \"icon\",\n });\n\n const id = `choice-chip-${useId()}`;\n\n return (\n <chakra.label\n {...getRootProps()}\n htmlFor={id}\n aria-label={String(children)}\n >\n <chakra.input\n {...getInputProps({}, ref)}\n id={id}\n disabled={isDisabled || state.isDisabled}\n />\n <chakra.div\n {...getLabelProps()}\n __css={styles.container}\n data-checked={dataAttr(state.isChecked)}\n data-hover={dataAttr(state.isHovered)}\n data-focus={dataAttr(state.isFocused)}\n data-active={dataAttr(state.isActive)}\n data-disabled={dataAttr(isDisabled || state.isDisabled)}\n >\n {icon && (\n <chakra.span __css={styles.icon}>\n {state.isChecked ? icon.checked : icon.default}\n </chakra.span>\n )}\n {chipType !== \"icon\" && (\n <chakra.span __css={styles.label} {...getCheckboxProps()}>\n {children}\n </chakra.span>\n )}\n\n {chipType === \"filter\" && state.isChecked && (\n <CloseOutline24Icon marginLeft={1.5} />\n )}\n </chakra.div>\n </chakra.label>\n );\n },\n);\n","import React, { useEffect, useId, useRef, useState } from \"react\";\nimport { AriaComboBoxProps, useComboBox, useFilter } from \"react-aria\";\nimport { useComboBoxState } from \"react-stately\";\nimport { ColorSpinner, Input, InputProps, ListBox } from \"..\";\nimport { Popover } from \"./Popover\";\n\ntype OverridableInputProps = Pick<\n InputProps,\n | \"marginTop\"\n | \"marginBottom\"\n | \"marginRight\"\n | \"marginLeft\"\n | \"marginY\"\n | \"marginX\"\n | \"paddingTop\"\n | \"paddingBottom\"\n | \"paddingLeft\"\n | \"paddingRight\"\n | \"paddingY\"\n | \"paddingX\"\n | \"leftIcon\"\n | \"rightIcon\"\n | \"borderTopRightRadius\"\n | \"borderTopLeftRadius\"\n | \"borderBottomRightRadius\"\n | \"borderBottomLeftRadius\"\n | \"onFocus\"\n>;\n\nexport type ComboboxProps<T> = AriaComboBoxProps<T> & {\n /** The label of the combobox */\n label: string;\n /** Whether or not the combobox is waiting for new suggestions */\n isLoading?: 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 variant?: \"base\" | \"floating\";\n} & OverridableInputProps;\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 function Combobox<T extends object>({\n label,\n isLoading,\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 allowsEmptyCollection,\n variant,\n ...rest\n}: ComboboxProps<T>) {\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 allowsEmptyCollection: Boolean(emptyContent),\n defaultFilter: contains,\n shouldCloseOnBlur: true,\n ...rest,\n });\n\n const comboBoxProps: OverridableInputProps = {\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: { size, ...inputProps },\n listBoxProps,\n } = useComboBox(\n {\n ...rest,\n inputRef,\n listBoxRef,\n popoverRef,\n label,\n },\n state,\n );\n\n return (\n <>\n <Input\n {...styleProps(comboBoxProps)}\n aria-haspopup=\"listbox\"\n ref={inputRef}\n role=\"combobox\"\n label={label}\n variant={variant}\n aria-expanded={state.isOpen}\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n borderBottomLeftRadius={\n state.isOpen && !isLoading ? 0 : borderBottomLeftRadius\n }\n borderBottomRightRadius={\n state.isOpen && !isLoading ? 0 : borderBottomRightRadius\n }\n {...inputProps}\n rightIcon={\n isLoading ? (\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 />\n <span aria-hidden=\"true\" data-trigger=\"multiselect\"></span>\n {state.isOpen && !isLoading && (\n <Popover\n state={state}\n triggerRef={inputRef as 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 state={state}\n id={listboxId}\n listBoxRef={listBoxRef}\n emptyContent={emptyContent}\n maxWidth={inputWidth}\n variant={variant}\n >\n {rest.children}\n </ListBox>\n </Popover>\n )}\n </>\n );\n}\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 }, []);\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 let timer: any;\n return () => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n timer = null;\n fn();\n }, ms);\n };\n};\n","export { FormControl } from \"@chakra-ui/react\";\nexport type { FormControlProps } from \"@chakra-ui/react\";\n","import { Box, BoxProps, useFormControlContext } from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type FormErrorMessageProps = BoxProps & {\n /**\n * The error message itself.\n */\n children: React.ReactNode;\n};\n/** An error message\n *\n * This component is used to show error messages related to a form input.\n * It should _always_ be used inside of a `FormControl` component.\n *\n * It will only render if the `isInvalid` prop of its enclosing `FormControl` component is set to true.\n *\n * ```tsx\n * <FormControl isInvalid={email === \"\"}>\n * <Input label=\"E-mail\" value={email} onChange={updateEmail} />\n * <FormErrorMessage>This field is required</FormErrorMessage>\n * </FormControl>\n * ```\n *\n * If you're using a `FormHelperText` (or any other components inside of the `FormControl`), make sure to render the `FormErrorMessage` before those.\n * ```tsx\n * <FormControl isInvalid={email === \"\"}>\n * <Input label=\"E-mail\" value={email} onChange={updateEmail} />\n * <FormErrorMessage>This field is required</FormErrorMessage>\n * <FormHelperText>We don't share your email</FormHelperText>\n * </FormControl>\n * ```\n *\n * @see https://spor.vy.no/components/form-control\n */\nexport const FormErrorMessage = ({\n children,\n ...boxProps\n}: FormErrorMessageProps) => {\n const formControlContext = useFormControlContext();\n if (!formControlContext) {\n throw new Error(\n \"FormErrorMessage must be used within a FormControl component\",\n );\n }\n if (!formControlContext.isInvalid) {\n return null;\n }\n const { ref, ...errorMessageProps } =\n formControlContext.getErrorMessageProps();\n return (\n <Box position=\"relative\" ref={ref}>\n <Box\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 top={-0.5}\n left={3}\n zIndex=\"dropdown\"\n maxWidth=\"50ch\"\n {...errorMessageProps}\n {...boxProps}\n >\n <Arrow position=\"absolute\" top=\"-0.25em\" left=\"1em\" />\n {children}\n </Box>\n </Box>\n );\n};\n\n/** The arrow of the error message box */\nconst Arrow = (props: BoxProps) => {\n return (\n <Box\n {...(props as any)}\n as=\"svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n transform=\"rotate(45deg)\"\n >\n <Box\n as=\"path\"\n fill=\"lightRed\"\n d=\"M 0\n 0 Q 2.4 6 0 12 Q 6 9.6 12 12 Q 9.6 6 12 0 Q 6 2.4 0 0 z\"\n />\n </Box>\n );\n};\n","import {\n FormLabel as ChakraFormLabel,\n FormLabelProps as ChakraFormLabelProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type FormLabelProps = ChakraFormLabelProps;\nexport const FormLabel = forwardRef<FormLabelProps, \"label\">((props, ref) => {\n return <ChakraFormLabel {...props} ref={ref} />;\n});\n","import {\n Box,\n chakra,\n Flex,\n FormLabel,\n ResponsiveValue,\n useFormControlProps,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport {\n DropdownDownFill24Icon,\n DropdownUpFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React, { useRef } from \"react\";\nimport { HiddenSelect, useButton, useSelect } from \"react-aria\";\nimport { Column, useSelectState } from \"react-stately\";\nimport { createTexts, useTranslation } from \"../\";\nimport { ListBox } from \"./ListBox\";\nimport { Popover } from \"./Popover\";\n\ntype InfoSelectProps<T extends object> = {\n /**\n * Either a render function accepting an item, and returning a <Item />,\n * or a list of <Item />s.\n *\n * Render function example:\n * ```tsx\n * <Select items={items}>\n * {(item) => (\n * <Item key={item.value} value={item.value}>\n * {item.label}\n * </Item>\n * )}\n * </Select>\n * ```\n *\n * For this to work, the members in `items` need either a `key`\n * or an `id` property.\n *\n * List of <Item />s example:\n * ```tsx\n * <Select label=\"Choose a color\">\n * <Item>Green</Item>\n * <Item>Blue</Item>\n * <Item>Yellow</Item>\n * </Select>\n * ```\n **/\n children: React.ReactElement | ((item: T) => React.ReactElement);\n /**\n * The items to render\n *\n * If you have a dynamic list of items you want to display, you should use this prop instead of mapping them out. This is a performance optimization.\n *\n * You can render each item in a render function, passed in as `children`:\n *\n * ```tsx\n * <Select items={items}>\n * {(item) => <div>{item.someProp}</div>}\n * </Select>\n * ```\n */\n items?: T[];\n /** Callback for when something is selected */\n onChange?: (value: string | number) => void;\n value?: string | number;\n defaultValue?: string | number;\n /** Controlled open state\n *\n * Useful if you want to control the open state from outside the component.\n */\n isOpen?: boolean;\n /** Callback for when the open state of the select box changes.\n *\n * Useful if you want to control the open state from outside the component.\n */\n onOpenChange?: (isOpen: boolean) => void;\n /** The label describing the choice */\n label: string;\n /** Hide the label visually\n *\n * Should be used sparingly, as it makes the component less accessible.\n * Useful for the label is obvious, like a phone number country code select.\n */\n isLabelSrOnly?: boolean;\n /** The name of the select element */\n name?: string;\n /**\n * What's shown if nothing is selected.\n *\n * Defaults to a localized version of \"choose an option\"\n */\n placeholder?: string;\n /** The width of the select box.\n *\n * Defaults to the width of the selected content\n */\n width?: ResponsiveValue<string | number>;\n /** The height of the select box.\n *\n * Defaults to \"auto\"\n */\n height?: ResponsiveValue<string | number>;\n isDisabled?: boolean;\n /** A list of disabled keys.\n *\n * ```tsx\n * <Select label=\"Choose a color\" disabledKeys={[\"blue\", \"yellow\"]}>\n * <Item key=\"green\">Green</Item>\n * <Item key=\"blue\">Blue</Item>\n * <Item key=\"yellow\">Yellow</Item>\n * </Select>\n * ```\n **/\n disabledKeys?: string[];\n /** Whether or not the input is invalid */\n \"aria-invalid\"?: boolean;\n variant?: \"base\" | \"floating\";\n};\n/**\n * A styled select component.\n *\n * This select component lets you choose between a list of options.\n * Compared to the NativeSelect component, the InfoSelect component lets you style the options however you'd like – including both text, icons and other elements.\n *\n * ```tsx\n * <InfoSelect label=\"Choose a color\">\n * <SelectOption>Blue</SelectOption>\n * <SelectOption>Yellow</SelectOption>\n * <SelectOption>Green</SelectOption>\n * </InfoSelect>\n * ```\n *\n * Alternatvely, you can pass the items into the `items` prop, and create a render function for the items.\n *\n * ```tsx\n * <InfoSelect\n * label=\"Choose a color\"\n * items={[\n * { value: \"#f00\", label: \"Red\" },\n * { value: \"#0f0\", label: \"Green\" },\n * { value: \"#00f\", label: \"Blue\" },\n * ]}\n * >\n * {(item) => (\n * <Item key={item.key}>\n * {item.label}\n * </Item>\n * )}\n * </InfoSelect>\n * ```\n *\n * @see https://spor.vy.no/components/info-select\n */\nexport function InfoSelect<T extends object>({\n placeholder,\n onChange,\n value,\n isLabelSrOnly,\n defaultValue,\n variant,\n ...props\n}: InfoSelectProps<T>) {\n const renamedProps = {\n onSelectionChange: onChange,\n selectedKey: value,\n defaultSelectedKey: defaultValue,\n ...props,\n };\n const state = useSelectState(renamedProps);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const listboxRef = useRef<HTMLUListElement>(null);\n const { labelProps, triggerProps, valueProps, menuProps } = useSelect(\n renamedProps,\n state,\n triggerRef,\n );\n\n const stateStyle = \"completed\";\n\n const hasChosenValue = state.selectedItem !== null;\n\n const styles = useMultiStyleConfig(\"InfoSelect\", {\n isOpen: state.isOpen,\n isLabelSrOnly,\n variant,\n stateStyle,\n hasChosenValue,\n });\n const { buttonProps } = useButton(triggerProps, triggerRef);\n const { t } = useTranslation();\n const formControl = useFormControlProps(props);\n\n return (\n <Box sx={styles.container}>\n <HiddenSelect\n state={state}\n triggerRef={triggerRef}\n label={props.label}\n name={props.name}\n />\n\n <chakra.button\n type=\"button\"\n ref={triggerRef}\n sx={styles.button}\n {...buttonProps}\n data-attachable\n aria-invalid={formControl.isInvalid}\n aria-describedby={formControl[\"aria-describedby\"]}\n >\n <chakra.div sx={styles.innerButton}>\n <chakra.div\n {...labelProps}\n sx={{\n ...styles.label,\n ...(hasChosenValue && {\n transform: \"scale(0.825) translateY(-10px) translateX(-10%)\",\n transitionProperty: \"var(--spor-transition-property-common)\",\n transitionDuration: \"var(--spor-transition-duration-normal)\",\n }),\n }}\n >\n {props.label}\n </chakra.div>\n <Box\n {...valueProps}\n h={isLabelSrOnly ? \"\" : !hasChosenValue ? \"0px\" : \"18px\"}\n hidden={!hasChosenValue}\n transform={isLabelSrOnly ? \"\" : \"scale(1) translateY(-12px)\"}\n transitionProperty={\"var(--spor-transition-property-common)\"}\n transitionDuration={\"var(--spor-transition-duration-normal)\"}\n >\n {state.selectedItem\n ? (state.selectedItem.textValue ?? state.selectedItem.rendered)\n : (placeholder ?? t(texts.selectAnOption))}\n </Box>\n </chakra.div>\n <Box sx={styles.arrowIcon}>\n {state.isOpen ? <DropdownUpFill24Icon /> : <DropdownDownFill24Icon />}\n </Box>\n </chakra.button>\n\n {state.isOpen && (\n <Popover\n state={state}\n triggerRef={triggerRef}\n // The minimum padding should be 0, because the popover always should be\n // aligned with the trigger field regardless of the left padding in the container.\n containerPadding={0}\n >\n <ListBox\n {...menuProps}\n state={state}\n listBoxRef={listboxRef}\n borderBottomRadius=\"sm\"\n variant={variant}\n >\n {props.children}\n </ListBox>\n </Popover>\n )}\n </Box>\n );\n}\n\nconst texts = createTexts({\n selectAnOption: {\n nb: \"Velg et alternativ\",\n nn: \"Velg eit alternativ\",\n sv: \"Välj ett alternativ\",\n en: \"Choose an option\",\n },\n});\n","import {\n Box,\n List,\n ListItem,\n useColorModeValue,\n useMultiStyleConfig,\n type BoxProps,\n} from \"@chakra-ui/react\";\nimport type { Node } from \"@react-types/shared\";\nimport React, { 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\nexport { Item, Section } from \"react-stately\";\n\ntype ListBoxProps<T> = AriaListBoxProps<T> &\n Omit<BoxProps, \"filter\" | \"autoFocus\" | \"children\"> & {\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 isLoading?: boolean;\n /** The state of the listbox, provided externally somehow. */\n state: ListState<T> | SelectState<T>;\n /** UI to render if the collection is empty */\n emptyContent?: React.ReactNode;\n maxWidth?: BoxProps[\"maxWidth\"];\n variant?: \"base\" | \"floating\";\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 */\nexport function ListBox<T extends object>({\n isLoading,\n listBoxRef,\n state,\n maxWidth,\n variant,\n ...props\n}: ListBoxProps<T>) {\n const { listBoxProps } = useListBox(props, state, listBoxRef);\n const styles = useMultiStyleConfig(\"ListBox\", { variant });\n\n return (\n <List\n {...listBoxProps}\n ref={listBoxRef}\n sx={styles.container}\n aria-busy={isLoading}\n maxWidth={maxWidth}\n variant={variant}\n >\n {state.collection.size === 0 && props.emptyContent}\n {Array.from(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 </List>\n );\n}\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 let { labelProps } = useOptionContext();\n const styles = useMultiStyleConfig(\"ListBox\", {});\n return (\n <Box {...labelProps} sx={styles.label}>\n {children}\n </Box>\n );\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 let { descriptionProps } = useOptionContext();\n const styles = useMultiStyleConfig(\"ListBox\", {});\n return (\n <Box {...descriptionProps} sx={styles.description}>\n {children}\n </Box>\n );\n}\n\ntype OptionProps = {\n item: Node<unknown>;\n state: SelectState<any> | 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 styles = useMultiStyleConfig(\"ListBox\", {});\n let 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 any)?.current?.addEventListener(\n \"touchend\",\n (event: TouchEvent) => {\n event.preventDefault();\n },\n { passive: false, once: true },\n );\n }, []);\n\n return (\n <OptionContext.Provider value={{ labelProps, descriptionProps }}>\n <ListItem {...optionProps} {...dataFields} ref={ref} sx={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: any;\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 return (\n <ListItem {...itemProps}>\n {section.rendered && (\n <Box\n fontSize=\"mobile.xs\"\n color={titleColor}\n paddingX={3}\n paddingY={1}\n marginTop={isFirstSection ? 0 : 3}\n textTransform=\"uppercase\"\n fontWeight=\"bold\"\n {...headingProps}\n >\n {section.rendered}\n </Box>\n )}\n <List {...groupProps} padding={0} listStyleType=\"none\">\n {Array.from(state.collection.getChildren(section.key)).map(\n (item: any) => (\n <Option key={item.key} item={item} state={state} />\n ),\n )}\n </List>\n </ListItem>\n );\n}\n","import {\n Input as ChakraInput,\n InputProps as ChakraInputProps,\n FormLabel,\n InputGroup,\n InputLeftElement,\n InputRightElement,\n forwardRef,\n useFormControlContext,\n} from \"@chakra-ui/react\";\nimport React, { useId } from \"react\";\n\nexport type InputProps = Omit<ChakraInputProps, \"size\"> & {\n /** The input's label */\n label: string;\n /** Icon that shows up to the left */\n leftIcon?: React.ReactNode;\n /** Icon that shows up to the right */\n rightIcon?: 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\" leftIcon={<EmailOutline24Icon />} />\n * ```\n *\n * Input has two variants base, and floating.\n *\n * ```tsx\n * <Input label=\"E-mail\" leftIcon={<EmailOutline24Icon />} variant=\"floating\" />\n * ```\n */\nexport const Input = forwardRef<InputProps, \"input\">(\n ({ label, leftIcon, rightIcon, id, size, ...props }, ref) => {\n const formControlProps = useFormControlContext();\n const fallbackId = `input-${useId()}`;\n const inputId = id ?? formControlProps?.id ?? fallbackId;\n const labelId = `${useId()}-label`;\n return (\n <InputGroup position=\"relative\">\n {leftIcon && (\n <InputLeftElement pointerEvents=\"none\">{leftIcon}</InputLeftElement>\n )}\n <ChakraInput\n data-attachable\n paddingLeft={leftIcon ? 7 : undefined}\n paddingRight={rightIcon ? 7 : undefined}\n {...props}\n id={inputId}\n aria-labelledby={labelId}\n ref={ref}\n overflow=\"hidden\"\n placeholder=\" \" // This is needed to make the label work as expected\n css={{\n \"&::-webkit-search-cancel-button\": {\n WebkitAppearance: \"none\",\n },\n }}\n />\n\n <FormLabel\n htmlFor={inputId}\n id={labelId}\n pointerEvents=\"none\"\n sx={{\n position: \"absolute\",\n left: \"2.6rem\",\n top: \"26.9%\",\n fontSize: \"1.13rem\",\n pointerEvents: \"none\",\n margin: 0,\n zIndex: 2,\n \"input:focus + &, input[data-has-value] + &\": {\n color: \"var(--chakra-colors-gray-600)\",\n },\n \"input[data-has-value] + &\": {\n transform: \"translateY(-40%) scale(0.9)\",\n },\n }}\n >\n {label}\n </FormLabel>\n {rightIcon && (\n <InputRightElement pointerEvents=\"none\">\n {rightIcon}\n </InputRightElement>\n )}\n </InputGroup>\n );\n },\n);\n","import {\n forwardRef,\n InputElementProps as ChakraInputElementProps,\n InputLeftElement as ChakraInputLeftElement,\n InputRightElement as ChakraInputRightElement,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type InputElementProps = ChakraInputElementProps;\n/**\n * Places an element inside the left side of an input field.\n *\n * Must be used inside of an `InputGroup` component, and before the `Input` component.\n *\n * ```tsx\n * <FormControl>\n * <InputGroup>\n * <InputLeftElement>🔎</InputLeftElement>\n * <Input label=\"Search\" />\n * </InputGroup>\n * </FormControl>\n * ```\n */\nexport const InputLeftElement = forwardRef<InputElementProps, \"div\">(\n (props, ref) => <ChakraInputLeftElement {...props} ref={ref} />,\n);\n\n/**\n * Places an element inside the right side of an input field.\n *\n * Must be used inside of an `InputGroup` component, and after the `Input` component.\n *\n * ```tsx\n * <FormControl>\n * <InputGroup>\n * <Input label=\"Search\" />\n * <InputRightElement>🔎</InputRightElement>\n * </InputGroup>\n * </FormControl>\n * ```\n */\nexport const InputRightElement = forwardRef<InputElementProps, \"div\">(\n (props, ref) => <ChakraInputRightElement {...props} ref={ref} />,\n);\n","import {\n Select as ChakraSelect,\n SelectProps as ChakraSelectProps,\n forwardRef,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { FormControl, FormLabel } from \".\";\n\nexport type NativeSelectProps = Exclude<\n ChakraSelectProps,\n \"colorScheme\" | \"variant\" | \"size\"\n> & { label?: string };\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 * ```tsx\n * <NativeSelect label=\"Select level of luxury\">\n * <option>No luxury</option>\n * <option>Some luxury</option>\n * <option>Lots of luxury</option>\n * <option>I'm rich</option>\n * </NativeSelect>\n * ```\n */\nexport const NativeSelect = forwardRef<NativeSelectProps, \"select\">(\n ({ label, ...props }, ref) => {\n const styles = useMultiStyleConfig(\"Select\", props);\n return (\n <FormControl>\n <ChakraSelect\n data-attachable\n {...props}\n rootProps={{ __css: styles.root }}\n ref={ref}\n />\n {label && <FormLabel>{label}</FormLabel>}\n </FormControl>\n );\n },\n);\n","import {\n chakra,\n useControllableState,\n useFormControl,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport React, { useRef } from \"react\";\nimport {\n Box,\n BoxProps,\n Flex,\n IconButton,\n createTexts,\n useTranslation,\n} from \"..\";\n\ntype NumericStepperProps = {\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 isDisabled?: 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/** 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 * ```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 FormControl component to get IDs etc linked up automatically:\n *\n * ```tsx\n * <FormControl>\n * <FormLabel>Number of adults</FormLabel>\n * <NumericStepper />\n * </FormControl>\n * ```\n */\nexport function NumericStepper({\n name: nameProp,\n id: idProp,\n value: valueProp,\n defaultValue = 1,\n onChange: onChangeProp,\n minValue = 0,\n maxValue = 99,\n isDisabled,\n withInput = true,\n stepSize = 1,\n showZero = false,\n ariaLabelContext = { singular: \"\", plural: \"\" },\n ...boxProps\n}: NumericStepperProps) {\n const addButtonRef = useRef<HTMLButtonElement>(null);\n const { t } = useTranslation();\n const styles = useMultiStyleConfig(\"NumericStepper\", {});\n const [value, onChange] = useControllableState<number>({\n value: valueProp,\n onChange: onChangeProp,\n defaultValue,\n });\n const formControlProps = useFormControl({ id: idProp, isDisabled });\n const clampedStepSize = Math.max(Math.min(stepSize, 10), 1);\n\n const focusOnAddButton = () => {\n addButtonRef.current?.focus();\n };\n\n return (\n <Flex __css={styles.container} {...boxProps}>\n <VerySmallButton\n icon={<SubtractIcon stepLabel={clampedStepSize} />}\n aria-label={t(\n texts.decrementButtonAriaLabel(\n clampedStepSize,\n stepSize == 1 ? ariaLabelContext.singular : 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 isDisabled={formControlProps.disabled}\n id={value <= minValue ? undefined : formControlProps.id}\n />\n {withInput ? (\n <chakra.input\n type=\"number\"\n min={minValue}\n max={maxValue}\n name={nameProp}\n value={value}\n {...formControlProps}\n id={!showZero && value === 0 ? undefined : formControlProps.id}\n sx={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 ? t(texts.currentNumberAriaLabel(ariaLabelContext.plural))\n : \"\"\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 <chakra.text\n sx={styles.text}\n visibility={!showZero && value === 0 ? \"hidden\" : \"visible\"}\n aria-live=\"assertive\"\n aria-label={\n ariaLabelContext.plural !== \"\"\n ? t(texts.currentNumberAriaLabel(ariaLabelContext.plural))\n : \"\"\n }\n >\n {value}\n </chakra.text>\n )}\n <VerySmallButton\n ref={addButtonRef}\n icon={<AddIcon stepLabel={clampedStepSize} />}\n aria-label={t(\n texts.incrementButtonAriaLabel(\n clampedStepSize,\n stepSize == 1 ? ariaLabelContext.singular : ariaLabelContext.plural,\n ),\n )}\n onClick={() => onChange(Math.min(value + clampedStepSize, maxValue))}\n visibility={value >= maxValue ? \"hidden\" : \"visible\"}\n isDisabled={formControlProps.disabled}\n id={value >= maxValue ? undefined : formControlProps.id}\n />\n </Flex>\n );\n}\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 isDisabled?: boolean;\n /** The ID of the button */\n id?: string;\n};\n/** Internal override for extra small icon buttons */\nconst VerySmallButton = React.forwardRef((props: VerySmallButtonProps, ref) => {\n const styles = useMultiStyleConfig(\"NumericStepper\", {});\n return (\n <IconButton\n variant=\"primary\"\n size=\"xs\"\n sx={styles.button}\n ref={ref}\n {...props}\n />\n );\n});\n\ntype IconPropTypes = BoxProps & { stepLabel: number };\n\nconst SubtractIcon = ({ stepLabel, ...props }: IconPropTypes) => (\n <>\n <Box\n as=\"svg\"\n viewBox=\"0 0 30 30\"\n width=\"24\"\n height=\"24\"\n stroke=\"currentColor\"\n {...props}\n >\n <line\n x1=\"9\"\n y1=\"15\"\n x2=\"21\"\n y2=\"15\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </Box>\n {stepLabel > 1 && (\n <chakra.span paddingRight=\"1\">{stepLabel.toString()}</chakra.span>\n )}\n </>\n);\n\nconst AddIcon = ({ stepLabel, ...props }: IconPropTypes) => (\n <>\n <Box\n as=\"svg\"\n viewBox=\"0 0 30 30\"\n width=\"24\"\n height=\"24\"\n stroke=\"currentColor\"\n {...props}\n >\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 </Box>\n\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 {\n Button,\n Input as ChakraInput,\n forwardRef,\n useDisclosure,\n useFormControlContext,\n} from \"@chakra-ui/react\";\nimport React, { useId } from \"react\";\nimport {\n FormLabel,\n InputGroup,\n InputLeftElement,\n InputProps,\n InputRightElement,\n} from \".\";\nimport { createTexts, useTranslation } from \"..\";\n\nexport type PasswordInputProps = InputProps;\nexport const PasswordInput = forwardRef<PasswordInputProps, \"input\">(\n ({ leftIcon, id, label, size, ...props }, ref) => {\n const { isOpen: isShowingPassword, onToggle } = useDisclosure();\n const { t } = useTranslation();\n const formControlProps = useFormControlContext();\n const autoGeneratedId = `password-input-${useId()}`;\n const inputId = id ?? formControlProps?.id ?? autoGeneratedId;\n return (\n <InputGroup position=\"relative\">\n {leftIcon && (\n <InputLeftElement pointerEvents=\"none\">{leftIcon}</InputLeftElement>\n )}\n <ChakraInput\n {...props}\n id={inputId}\n placeholder=\" \" // This is needed to make the label work as expected\n type={isShowingPassword ? \"text\" : \"password\"}\n paddingRight={10}\n paddingLeft={leftIcon ? 7 : undefined}\n ref={ref}\n data-attachable\n />\n <FormLabel htmlFor={inputId} pointerEvents=\"none\">\n {label}\n </FormLabel>\n <InputRightElement width=\"fit-content\">\n <Button\n variant=\"ghost\"\n type=\"button\"\n fontWeight=\"normal\"\n size=\"sm\"\n onClick={onToggle}\n borderRadius=\"sm\"\n marginRight={1}\n isDisabled={props.disabled || props.isDisabled}\n >\n {isShowingPassword ? t(texts.hidePassword) : t(texts.showPassword)}\n </Button>\n </InputRightElement>\n </InputGroup>\n );\n },\n);\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","import { BoxProps, forwardRef, useControllableState } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { Input, createTexts, useTranslation } from \"..\";\nimport { AttachedInputs } from \"./AttachedInputs\";\nimport { CountryCodeSelect } from \"./CountryCodeSelect\";\nimport { As } from \"@chakra-ui/system\";\n\ntype CountryCodeAndPhoneNumber = {\n countryCode: string;\n nationalNumber: string;\n};\ntype PhoneNumberInputProps = Omit<BoxProps, \"onChange\"> & {\n /** The label. Defaults to a localized version of \"Phone number\" */\n label?: string;\n /** The root name.\n *\n * Please note that when specifying the name, the rendered names will be `${name}-country-code` and `${name}-phone-number`, respectively\n */\n name?: string;\n /** Callback for when the country code or phone number changes */\n onChange?: (change: CountryCodeAndPhoneNumber) => void;\n /** The optional value of the country code and phone number */\n value?: CountryCodeAndPhoneNumber;\n variant?: \"base\" | \"floating\";\n isOptional?: boolean;\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`, respectively\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 */\nexport const PhoneNumberInput = forwardRef<PhoneNumberInputProps, As>(\n (\n {\n label: externalLabel,\n name,\n value: externalValue,\n onChange: externalOnChange,\n variant,\n isOptional,\n ...boxProps\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const label =\n externalLabel ??\n (isOptional ? t(texts.phoneNumberOptional) : t(texts.phoneNumber));\n const [value, onChange] = useControllableState({\n value: externalValue,\n onChange: externalOnChange,\n defaultValue: {\n countryCode: \"+47\",\n nationalNumber: \"\",\n },\n });\n return (\n <AttachedInputs {...boxProps}>\n <CountryCodeSelect\n value={value.countryCode}\n onChange={(countryCode) =>\n onChange({\n countryCode: countryCode as string,\n nationalNumber: value.nationalNumber,\n })\n }\n name={name ? `${name}-country-code` : \"country-code\"}\n height=\"100%\"\n width=\"6.25rem\"\n variant={variant}\n />\n <Input\n ref={ref}\n type=\"tel\"\n label={label}\n value={value.nationalNumber}\n name={name ? `${name}-phone-number` : \"phone-number\"}\n onChange={(e) => {\n // Removes everything but numbers, spaces and dashes\n const strippedValue = e.target.value.replace(/[^\\d\\s-]/g, \"\");\n onChange({\n countryCode: value.countryCode,\n nationalNumber: strippedValue,\n });\n }}\n position=\"relative\"\n left=\"1px\" // Makes the borders overlap\n variant={variant}\n />\n </AttachedInputs>\n );\n },\n);\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","import React from \"react\";\nimport { BoxProps, InfoSelect, Item, createTexts, useTranslation } from \"..\";\n\nimport { getSupportedCallingCodes } from \"awesome-phonenumber\";\n\nconst prioritizedCountryCodes = [\n { key: \"+47\", value: \"+47\" },\n { key: \"+46\", value: \"+46\" },\n { key: \"+45\", value: \"+45\" },\n];\n\nconst sortedCallingCodes = getSupportedCallingCodes()\n .sort((a, b) => Number(a) - Number(b))\n .map((code) => ({\n key: `+${code}`,\n value: `+${code}`,\n }))\n .filter(\n (code) => !prioritizedCountryCodes.some((pCode) => pCode.key === code.key),\n );\nconst callingCodes = [...prioritizedCountryCodes, ...sortedCallingCodes];\n\ntype CountryCodeSelectProps = {\n value: string;\n onChange: (value: string | number) => void;\n name: string;\n width?: BoxProps[\"width\"];\n height?: BoxProps[\"height\"];\n variant?: \"base\" | \"floating\";\n};\nexport const CountryCodeSelect = (props: CountryCodeSelectProps) => {\n const { t } = useTranslation();\n\n return (\n <InfoSelect\n label={t(texts.countryCode)}\n isLabelSrOnly={true}\n items={callingCodes}\n variant={props.variant}\n {...props}\n >\n {(item) => <Item key={item.key}>{item.key}</Item>}\n </InfoSelect>\n );\n};\n\nexport default CountryCodeSelect;\n\nconst texts = createTexts({\n countryCode: {\n nb: \"Landkode\",\n nn: \"Landskode\",\n en: \"Country code\",\n sv: \"Landskod\",\n },\n});\n","import {\n Radio as ChakraRadio,\n RadioProps as ChakraRadioProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type RadioProps = Exclude<\n ChakraRadioProps,\n \"colorScheme\" | \"size\" | \"variant\"\n>;\n\n/**\n * The humble radio button.\n *\n * Specify the label as `children` and the value as `value`.\n *\n * ```tsx\n * <Radio value=\"#f00\">Red</Radio>\n * ```\n *\n * You typically want to place 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 */\nexport const Radio = forwardRef<RadioProps, \"input\">((props, ref) => {\n return <ChakraRadio {...props} ref={ref} />;\n});\n","import {\n forwardRef,\n RadioGroup as ChakraRadioGroup,\n RadioGroupProps as ChakraRadioGroupProps,\n Stack,\n StackDirection,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type RadioGroupProps = Exclude<\n ChakraRadioGroupProps,\n \"colorScheme\" | \"size\" | \"variant\"\n> & {\n direction?: StackDirection;\n};\n/**\n * Radio groups are used to group several radio buttons together.\n *\n * You can pass the common `name` prop to the `RadioGroup`, instead of to each `Radio` component.\n *\n * ```tsx\n * <RadioGroup name=\"ticket\">\n * <Radio>Economy</Radio>\n * <Radio>Business</Radio>\n * <Radio>First Class</Radio>\n * </RadioGroup>\n * ```\n *\n * By default, radio buttons show up horizontally. If you want them to show up vertically, please specify the `direction=\"column\"` prop.\n *\n * ```tsx\n * <RadioGroup name=\"ticket\" direction=\"column\">\n * <Radio>Economy</Radio>\n * <Radio>Business</Radio>\n * <Radio>First Class</Radio>\n * </RadioGroup>\n * ```\n */\nexport const RadioGroup = forwardRef<RadioGroupProps, \"div\">(\n ({ children, direction = \"row\", ...rest }, ref) => {\n return (\n <ChakraRadioGroup {...rest} ref={ref}>\n <Stack direction={direction}>{children}</Stack>\n </ChakraRadioGroup>\n );\n },\n);\n","import {\n Input as ChakraInput,\n InputProps as ChakraInputProps,\n IconButton,\n LayoutProps,\n forwardRef,\n useFormControlContext,\n} from \"@chakra-ui/react\";\nimport {\n CloseOutline24Icon,\n SearchOutline24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React, { useId } from \"react\";\nimport { FormLabel, InputGroup, InputLeftElement, InputRightElement } from \".\";\nimport { createTexts, useTranslation } from \"..\";\n\nexport type SearchInputProps = Exclude<\n ChakraInputProps,\n \"variant\" | \"size\" | \"leftIcon\" | \"rightIcon\"\n> & {\n /** Optional label. Defaults to the localized version of \"search\" */\n label?: string | React.ReactNode;\n /** Callback for when the clear button is clicked */\n onReset?: () => void;\n};\n/** Simple search input component.\n *\n * Includes a search icon, a localized label and a reset button.\n */\nexport const SearchInput = forwardRef<SearchInputProps, \"input\">(\n ({ label, onReset, ...props }, ref) => {\n const { t } = useTranslation();\n const showClearButton = onReset && Boolean(props.value);\n const formControlProps = useFormControlContext();\n const autoGeneratedId = useId();\n const inputId = props.id ?? formControlProps?.id ?? autoGeneratedId;\n\n const { outerProps, innerProps } = getOuterProps(props);\n\n return (\n <InputGroup position=\"relative\" {...outerProps}>\n <InputLeftElement pointerEvents=\"none\">\n <SearchOutline24Icon />\n </InputLeftElement>\n <ChakraInput\n paddingLeft={7}\n paddingRight={7}\n {...innerProps}\n id={inputId}\n type=\"search\"\n placeholder=\" \"\n css={{\n \"&::-webkit-search-cancel-button\": {\n WebkitAppearance: \"none\",\n },\n }}\n ref={ref}\n data-attachable\n />\n <FormLabel\n htmlFor={inputId}\n sx={{\n position: \"absolute\",\n left: \"2.6rem\",\n top: \"26.9%\",\n fontSize: \"1.13rem\",\n pointerEvents: \"none\",\n margin: 0,\n zIndex: 2,\n \"input:focus + &, input[data-has-value] + &\": {\n color: \"var(--chakra-colors-gray-600)\",\n },\n \"input[data-has-value] + &\": {\n transform: \"translateY(-40%) scale(0.9)\",\n },\n }}\n >\n {label ?? t(texts.label)}\n </FormLabel>\n {showClearButton && (\n <InputRightElement width=\"fit-content\">\n <IconButton\n variant=\"ghost\"\n type=\"button\"\n size=\"sm\"\n marginRight={1}\n aria-label={t(texts.reset)}\n icon={<CloseOutline24Icon />}\n onClick={onReset}\n />\n </InputRightElement>\n )}\n </InputGroup>\n );\n },\n);\n\nconst getOuterProps = (props: Record<string, any>) => {\n const layoutKeys = new Set([\"w, width, maxW, minW, maxWidth, minWidth\"]); // add more keys here if neccessary\n const outerProps: LayoutProps = {};\n const innerProps: Record<string, any> = {};\n\n for (const key in props) {\n if (layoutKeys.has(key)) {\n (outerProps as any)[key] = props[key];\n } else {\n (innerProps as any)[key] = props[key];\n }\n }\n\n return { outerProps, innerProps };\n};\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","import {\n Switch as ChakraSwitch,\n SwitchProps as ChakraSwitchProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport { As } from \"@chakra-ui/system\";\nimport React from \"react\";\n\nexport type SwitchProps = Omit<ChakraSwitchProps, \"colorScheme\" | \"variant\"> & {\n size?: \"sm\" | \"md\" | \"lg\";\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 use a Switch component inside of a `FormControl` with an associated `FormLabel`:\n *\n * ```tsx\n * <FormControl>\n * <FormLabel>Enable alerts?</FormLabel>\n * <Switch />\n * </FormControl>\n * ```\n *\n * Switches are available in three different sizes - `sm`, `md` and `lg`.\n *\n * ```tsx\n * <FormControl>\n * <FormLabel>Enable alerts?</FormLabel>\n * <Switch size=\"sm\" />\n * </FormControl>\n * ```\n */\nexport const Switch = forwardRef<SwitchProps, \"input\">(\n ({ size = \"md\", as, ...props }, ref) => {\n return <ChakraSwitch as={as} size={size} {...props} ref={ref} />;\n },\n);\n","import {\n FormLabel,\n forwardRef,\n Textarea as ChakraTextarea,\n TextareaProps as ChakraTextareaProps,\n useFormControlContext,\n InputGroup,\n} from \"@chakra-ui/react\";\nimport React, { useId, useLayoutEffect, useRef, useState } from \"react\";\n\nexport type TextareaProps = Exclude<ChakraTextareaProps, \"size\"> & {\n label?: string;\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: string | 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 if (labelRef.current) {\n observer.observe(labelRef.current);\n }\n\n // Initial calculation with a slight delay to ensure CSS is applied\n setTimeout(updateLabelHeight, 0);\n\n return () => {\n if (labelRef.current) {\n observer.unobserve(labelRef.current);\n }\n };\n }, [label]);\n\n return { labelRef, labelHeight };\n};\n\n/**\n * Text area that works with the `FormControl` component.\n *\n * Providing a label is optional.\n *\n * ```tsx\n * <FormControl>\n * <Textarea label=\"E-mail\" />\n * </FormControl>\n * ```\n */\nexport const Textarea = forwardRef<TextareaProps, \"textarea\">((props, ref) => {\n const {\n spacingProps,\n remainingProps: { label, ...rest },\n } = getSpacingProps(props);\n const formControlProps = useFormControlContext();\n const fallbackId = `textarea-${useId()}`;\n const inputId = props.id ?? formControlProps?.id ?? fallbackId;\n\n const { labelRef, labelHeight } = useLabelHeight(label);\n\n return (\n <InputGroup\n position=\"relative\"\n {...spacingProps}\n style={{ \"--label-height\": `${labelHeight}px` } as React.CSSProperties}\n >\n <ChakraTextarea {...rest} id={inputId} ref={ref} placeholder=\" \" />\n {label && (\n <FormLabel\n ref={labelRef}\n htmlFor={inputId}\n id={`${inputId}-label`}\n pointerEvents=\"none\"\n >\n {label}\n </FormLabel>\n )}\n </InputGroup>\n );\n});\n\nfunction getSpacingProps<T extends TextareaProps>(props: T) {\n const {\n mt,\n mr,\n mb,\n ml,\n mx,\n my,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n marginX,\n marginY,\n pt,\n pr,\n pb,\n pl,\n px,\n py,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n paddingX,\n paddingY,\n ...remainingProps\n } = props;\n return {\n spacingProps: {\n mt,\n mr,\n mb,\n ml,\n mx,\n my,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n marginX,\n marginY,\n pt,\n pr,\n pb,\n pl,\n px,\n py,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n paddingX,\n paddingY,\n },\n remainingProps,\n };\n}\n","import React from \"react\";\nimport { Box, BoxProps, useStyleConfig, forwardRef } from \"@chakra-ui/react\";\nimport { As } from \"@chakra-ui/system\";\n\nexport type StaticCardProps = BoxProps & {\n children: React.ReactNode;\n /** Defaults to \"white\" */\n colorScheme:\n | \"white\"\n | \"grey\"\n | \"green\"\n | \"orange\"\n | \"red\"\n | \"yellow\"\n | \"blue\"\n | \"darkBlue\"\n | \"darkGreen\"\n | \"darkYellow\";\n};\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 `colorScheme` prop can be used to control the color scheme 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 scheme of the card, specify the `colorScheme` prop:\n *\n * ```tsx\n * <StaticCard colorScheme=\"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\nexport const StaticCard = forwardRef<StaticCardProps, As>(\n ({ colorScheme = \"white\", children, ...props }, ref) => {\n const styles = useStyleConfig(\"StaticCard\", {\n colorScheme,\n });\n\n return (\n <Box __css={styles} {...props} ref={ref}>\n {children}\n </Box>\n );\n },\n);\n","import React from \"react\";\nimport { Box, BoxProps, forwardRef, useStyleConfig } from \"@chakra-ui/react\";\nimport { As } from \"@chakra-ui/system\";\n\ntype PressableCardProps = BoxProps & {\n /** Defaults to \"base\" */\n variant?: \"floating\" | \"accent\" | \"base\";\n};\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 \"base\".\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 schemes, use the `StaticCard` component.\n *\n * @see StaticCard\n */\n\nexport const PressableCard = forwardRef<PressableCardProps, As>(\n ({ children, variant = \"floating\", ...props }, ref) => {\n const styles = useStyleConfig(\"PressableCard\", {\n variant,\n });\n\n return (\n <Box __css={styles} {...props} ref={ref}>\n {children}\n </Box>\n );\n },\n);\n","import {\n AccordionButton,\n AccordionIcon,\n AccordionItem,\n AccordionItemProps,\n AccordionPanel,\n Box,\n Flex,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { Accordion, AccordionProps } from \"./Accordion\";\n\ntype HeadingLevel = \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\ntype ExpandableProps = Omit<\n AccordionProps,\n \"title\" | \"index\" | \"defaultIndex\" | \"onChange\"\n> & {\n /** The hidden content */\n children: React.ReactNode;\n /** The title that's shown inside the toggle button */\n title: React.ReactNode;\n /** The semantic heading level of the toggle button */\n headingLevel?: HeadingLevel;\n /**\n * Icon shown to the left of the title\n *\n * Make sure it's the 24px outlined version of the icon\n */\n leftIcon?: React.ReactNode;\n\n /** Controlled value of whether the accordion is open or not */\n isOpen?: boolean;\n /** Default value of when the accordion is open or not */\n defaultOpen?: boolean;\n /** Callback for when the expandable opens or closes */\n onChange?: (isOpen: boolean) => void;\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=\"base\">\n * <Text>MORE! 🎉</Text>\n * </Expandable>\n * ```\n */\nexport const Expandable = ({\n children,\n headingLevel,\n title,\n leftIcon,\n defaultOpen,\n isOpen,\n onChange = () => {},\n ...rest\n}: ExpandableProps) => {\n return (\n <Accordion\n {...rest}\n index={isOpen ? 0 : undefined}\n defaultIndex={defaultOpen ? 0 : undefined}\n onChange={(expandedIndex) => onChange(expandedIndex === 0)}\n >\n <ExpandableItem\n headingLevel={headingLevel}\n title={title}\n leftIcon={leftIcon}\n >\n {children}\n </ExpandableItem>\n </Accordion>\n );\n};\n\nexport type ExpandableItemProps = Omit<AccordionItemProps, \"title\"> & {\n /** The hidden content */\n children: React.ReactNode;\n /** The title that's shown inside the toggle button */\n title: React.ReactNode;\n /** The semantic heading level of the toggle button */\n headingLevel?: HeadingLevel;\n /**\n * Icon shown to the left of the title\n *\n * Make sure it's the 24px outlined version of the icon\n */\n leftIcon?: React.ReactNode;\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 title=\"Is Spor easy?\" headingLevel=\"h3\">\n * Yes\n * </ExpandableItem>\n * <ExpandableItem title=\"Do you love it?\" headingLevel=\"h3\">\n * 🥰\n * </ExpandableItem>\n * </Accordion>\n * ```\n *\n * If you need even more control, you can put together your own expandable with the `Accordion`, `AccordionItem`, `AccordionButton`, `AccordionIcon` and `AccordionPanel` components.\n */\nexport const ExpandableItem = ({\n children,\n title,\n headingLevel = \"h3\",\n leftIcon,\n ...rest\n}: ExpandableItemProps) => {\n warnAboutMismatchingIcon({ icon: leftIcon });\n return (\n <AccordionItem {...rest}>\n <Box as={headingLevel}>\n <AccordionButton>\n <Flex alignItems=\"center\">\n {leftIcon && <Box marginRight={1}>{leftIcon}</Box>}\n {title}\n </Flex>\n <AccordionIcon />\n </AccordionButton>\n </Box>\n <AccordionPanel>{children}</AccordionPanel>\n </AccordionItem>\n );\n};\n\ntype WarnAboutMismatchingIcon = {\n icon: any;\n};\nconst warnAboutMismatchingIcon = ({ icon }: 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","import {\n Box,\n Flex,\n useDisclosure,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport { CloseFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { IconButton } from \"../button\";\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { AlertIcon } from \"./AlertIcon\";\nimport { BaseAlert, BaseAlertProps } from \"./BaseAlert\";\n\ntype ClosableAlertProps = BaseAlertProps & {\n /** Callback for when the close button is clicked */\n onClose?: () => void;\n};\n/**\n * A closable alert component.\n *\n * A regular alert with a close button that can be used to dismiss the alert.\n *\n * ```tsx\n * <ClosableAlert variant=\"info\" title=\"Nice to know\">\n * <Text>Some info here</Text>\n * </ClosableAlert>\n * ```\n *\n * You can also pass in an optional `onClose` callback, for things like analytics.\n *\n * ```tsx\n * <ClosableAlert\n * variant=\"info\"\n * title=\"Nice to know\"\n * onClose={() => analytics.track('alert-closed')}\n * >\n * <Text>Some info here</Text>\n * </ClosableAlert>\n */\nexport const ClosableAlert = ({\n variant,\n title,\n children,\n onClose: externalOnClose = () => {},\n ...boxProps\n}: ClosableAlertProps) => {\n const { isOpen, onClose } = useDisclosure({ defaultIsOpen: true });\n const styles = useMultiStyleConfig(\"Alert\", { variant });\n const { t } = useTranslation();\n if (!isOpen) {\n return null;\n }\n\n const handleClose = () => {\n externalOnClose();\n onClose();\n };\n\n return (\n <BaseAlert variant={variant} {...boxProps}>\n <IconButton\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClose}\n icon={<CloseFill18Icon />}\n aria-label={t(texts.close)}\n sx={styles.closeButton}\n />\n <AlertIcon variant={variant} />\n <Flex direction=\"column\" gap={title ? 2 : undefined} textAlign=\"left\">\n {title && <Box fontWeight=\"bold\">{title}</Box>}\n <Box marginRight={1}>{children}</Box>\n </Flex>\n </BaseAlert>\n );\n};\n\nconst texts = createTexts({\n close: {\n nb: \"Lukk\",\n nn: \"Lukk\",\n sv: \"Dölj\",\n en: \"Close\",\n },\n});\n","import {\n Box,\n Center,\n ButtonProps as ChakraButtonProps,\n Flex,\n forwardRef,\n SpaceProps,\n useButtonGroup,\n useStyleConfig,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { ColorInlineLoader } from \"../loader\";\n\nexport type ButtonProps = Exclude<\n ChakraButtonProps,\n \"colorScheme\" | \"size\" | \"variant\"\n> & {\n /**\n * The size of the button.\n *\n * Defaults to \"md\"\n * */\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n /** The different variants of a button\n *\n * Defaults to \"primary\".\n *\n * \"control\" is deprecated, and will be removed in a future version\n */\n variant?:\n | \"control\"\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"ghost\"\n | \"floating\";\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 */\nexport const Button = forwardRef<ButtonProps, \"button\">((props, ref) => {\n const {\n as = \"button\",\n type = \"button\",\n fontWeight,\n size,\n children,\n isLoading,\n isDisabled,\n leftIcon,\n rightIcon,\n sx,\n ...rest\n } = props;\n const ariaLabel = useCorrectAriaLabel(props);\n const buttonGroup = useButtonGroup();\n const finalSize = (size ?? buttonGroup?.size ?? \"md\") as Required<\n ButtonProps[\"size\"]\n >;\n const styles = useStyleConfig(\"Button\", {\n ...buttonGroup,\n ...rest,\n size: finalSize,\n leftIcon,\n rightIcon,\n });\n\n // We want to explicitly allow to override the fontWeight prop\n if (fontWeight) {\n styles.fontWeight = fontWeight;\n }\n\n return (\n <Box\n {...rest}\n as={as}\n type={type}\n sx={{ ...styles, ...sx }}\n ref={ref}\n aria-label={ariaLabel}\n aria-busy={isLoading}\n disabled={isDisabled || isLoading}\n position=\"relative\"\n fontFamily={\"Vy Sans\"}\n >\n {isLoading && (\n <Center position=\"absolute\" right={0} left={0} top={1} bottom={0}>\n <ColorInlineLoader\n maxWidth={getLoaderWidth(finalSize)}\n width=\"80%\"\n marginX={2}\n marginY={2}\n />\n </Center>\n )}\n <Flex\n gap={1}\n flex={1}\n alignItems=\"center\"\n justifyContent={rightIcon ? \"space-between\" : \"center\"}\n visibility={isLoading ? \"hidden\" : \"visible\"}\n aria-hidden={isLoading}\n >\n <Flex gap={1} alignItems=\"center\">\n {leftIcon}\n <Box\n visibility={isLoading ? \"hidden\" : \"visible\"}\n whiteSpace=\"normal\"\n textAlign=\"center\"\n >\n {children}\n </Box>\n </Flex>\n {rightIcon}\n </Flex>\n </Box>\n );\n});\n\nfunction getLoaderWidth(size: Required<ButtonProps[\"size\"]>) {\n switch (size) {\n case \"xs\":\n return \"4rem\";\n case \"sm\":\n return \"4rem\";\n case \"md\":\n return \"5rem\";\n case \"lg\":\n default:\n return \"6rem\";\n }\n}\n\nfunction useCorrectAriaLabel(props: ButtonProps): string {\n const { t } = useTranslation();\n if (props.isLoading) {\n return String(props.loadingText) ?? t(texts.loadingText);\n }\n return props[\"aria-label\"] as string;\n}\n\nconst texts = createTexts({\n loadingText: {\n nb: \"Laster…\",\n nn: \"Lastar…\",\n en: \"Loading…\",\n sv: \"Laddar…\",\n },\n});\n","import 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 } from \"@chakra-ui/react\";\nimport { inlineLoaderColorData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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 {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n {() => <Lottie animationData={inlineLoaderColorData} />}\n </ClientOnly>\n </Box>\n </Center>\n );\n};\n","import React from \"react\";\nimport { useHydrated } from \"./useHydrated\";\n\ntype ClientOnlyProps = {\n /** A function that renders the client-side only component */\n children: () => React.ReactNode;\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 return <>{isHydrated ? children() : fallback}</>;\n};\n","import { 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 let [hydrated, setHydrated] = useState(() => !hydrating);\n\n useEffect(function hydrate() {\n hydrating = false;\n setHydrated(true);\n }, []);\n\n return hydrated;\n}\n","import { useLottie } from \"lottie-react\";\nimport React from \"react\";\n\n/**\n * A wrapper around Lottie to make it tree-shakeable for SSR.\n */\nexport default function Lottie({ animationData }: { animationData: any }) {\n const { View } = useLottie({ animationData, loop: true });\n return <>{View}</>;\n}\n","import { Box, BoxProps, Center } from \"@chakra-ui/react\";\nimport { spinnerColorData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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\n ...props\n}: SpinnerProps) => {\n return (\n <Center flexDirection=\"column\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n {() => <Lottie animationData={spinnerColorData} />}\n </ClientOnly>\n </Box>\n {children && (\n <Box marginTop={3} fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Center>\n );\n};\n","import { Box, BoxProps } from \"@chakra-ui/react\";\nimport { contentLoaderData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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\n */\nexport const ContentLoader = ({ children, ...props }: ContentLoaderProps) => {\n return (\n <Box {...props}>\n <Box maxWidth=\"140px\" marginX=\"auto\">\n <ClientOnly>\n {() => <Lottie animationData={contentLoaderData} />}\n </ClientOnly>\n </Box>\n {children && (\n <Box textAlign=\"center\" fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Box>\n );\n};\n","import { Box, BoxProps, Center } from \"@chakra-ui/react\";\nimport { fullScreenLoaderWhiteData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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 height=\"100%\" background=\"darkTeal\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n {() => <Lottie animationData={fullScreenLoaderWhiteData} />}\n </ClientOnly>\n </Box>\n </Center>\n );\n};\n","import { Box, BoxProps, Center } from \"@chakra-ui/react\";\nimport { inlineLoaderDarkData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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 {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n {() => <Lottie animationData={inlineLoaderDarkData} />}\n </ClientOnly>\n </Box>\n </Center>\n );\n};\n","import { spinnerDarkData, spinnerLightData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\nimport { Box, BoxProps, Center, useColorMode } 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\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>{() => <Lottie animationData={spinnerData} />}</ClientOnly>\n </Box>\n {children && (\n <Box marginTop={3} fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Center>\n );\n};\n","import { Box, BoxProps, Center } from \"@chakra-ui/react\";\nimport { fullScreenLoaderBlackData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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 height=\"100%\" background=\"white\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n {() => <Lottie animationData={fullScreenLoaderBlackData} />}\n </ClientOnly>\n </Box>\n </Center>\n );\n};\n","import { Box, BoxProps, Center } from \"@chakra-ui/react\";\nimport { inlineLoaderLightData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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 {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n {() => <Lottie animationData={inlineLoaderLightData} />}\n </ClientOnly>\n </Box>\n </Center>\n );\n};\n","import { Box, BoxProps, Center } from \"@chakra-ui/react\";\nimport { spinnerLightData } from \"@vygruppen/spor-loader\";\nimport React from \"react\";\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\" {...props}>\n <Box width={width} maxWidth={maxWidth}>\n <ClientOnly>\n {() => <Lottie animationData={spinnerLightData} />}\n </ClientOnly>\n </Box>\n {children && (\n <Box marginTop={3} fontWeight=\"bold\">\n {children}\n </Box>\n )}\n </Center>\n );\n};\n","import { Box, BoxProps, Text, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { useProgressBar } from \"react-aria\";\nimport { createTexts, useTranslation } from \"..\";\nimport { useRotatingLabel } from \"./useRotatingLabel\";\n\ntype ProgressBarProps = BoxProps & {\n /** The percentage of progress made.\n *\n * The value must be between 0 and 100 */\n value: number;\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\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 */\nexport const ProgressBar = ({\n value,\n label,\n labelRotationDelay = 5000,\n height = \"0.5rem\",\n width = \"100%\",\n \"aria-label\": ariaLabel,\n isActive = true,\n ...rest\n}: ProgressBarProps) => {\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.label(value)),\n });\n const styles = useMultiStyleConfig(\"ProgressBar\", { isActive });\n return (\n <>\n <Box\n {...progressBarProps}\n title={t(texts.label(value))}\n __css={styles.container}\n {...rest}\n >\n <Box width={width} __css={styles.background}>\n <Box\n __css={styles.progress}\n height={height}\n width={isActive ? `${value}%` : \"100%\"}\n />\n </Box>\n {currentLoadingText && (\n <Text sx={styles.description} {...labelProps}>\n {currentLoadingText}\n </Text>\n )}\n </Box>\n </>\n );\n};\n\nconst texts = createTexts({\n label: (value) => ({\n nb: `${value}% ferdig`,\n nn: `${value}% ferdig`,\n sv: `${value}% klart`,\n en: `${value}% done`,\n }),\n});\n","import { useInterval } from \"@chakra-ui/react\";\nimport { useMemo, useState } from \"react\";\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","import { Box, BoxProps, Text } from \"@chakra-ui/react\";\nimport React, { useId, useRef } from \"react\";\nimport { useProgressBar } from \"react-aria\";\nimport { createTexts, useTranslation } from \"..\";\nimport { useRotatingLabel } from \"./useRotatingLabel\";\n\ntype ProgressLoaderProps = BoxProps & {\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 * 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 */\nexport const ProgressLoader = ({\n value,\n label,\n labelRotationDelay = 5000,\n \"aria-label\": ariaLabel,\n width,\n ...rest\n}: ProgressLoaderProps) => {\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 pathRef = useRef<SVGPathElement>(null);\n const progressPathLength = pathRef.current?.getTotalLength() ?? 0;\n const progress = ((value - 100) / 100) * progressPathLength;\n const id = useId();\n return (\n <Box {...progressBarProps} minWidth=\"100px\" width={width} {...rest}>\n <Box as=\"svg\" viewBox=\"0 0 246 78\" fill=\"none\">\n <Box\n as=\"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 <Box\n as=\"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 stroke=\"coralGreen\"\n strokeWidth=\"13.6469\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <Box\n as=\"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 stroke=\"greenHaze\"\n strokeWidth=\"13.6469\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeDasharray={progressPathLength}\n strokeDashoffset={progress}\n transition=\"stroke-dashoffset .2s ease-out\"\n ref={pathRef as any}\n />\n <Box\n as=\"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 </Box>\n {currentLoadingText && (\n <Text\n textAlign=\"center\"\n marginTop={2}\n fontWeight=\"bold\"\n {...labelProps}\n >\n {currentLoadingText}\n </Text>\n )}\n </Box>\n );\n};\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 {\n BoxProps,\n forwardRef,\n Skeleton as ChakraSkeleton,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type SkeletonProps = BoxProps & {\n isLoaded?: boolean;\n};\n/**\n * Skeleton renders a loading animation for a given box. It works great as a placeholder to avoid layout shifts.\n */\nexport const Skeleton = forwardRef<SkeletonProps, \"div\">((props, ref) => (\n <ChakraSkeleton\n {...props}\n ref={ref}\n aria-busy=\"true\"\n aria-hidden=\"true\"\n role=\"alert\"\n />\n));\n","import {\n BoxProps,\n SkeletonCircle as ChakraSkeletonCircle,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type SkeletonCircleProps = BoxProps;\n/**\n * SkeletonCircle renders a loading animation for a given circle. It works great as a placeholder to avoid layout shifts.\n */\nexport const SkeletonCircle = (props: SkeletonCircleProps) => (\n <ChakraSkeletonCircle boxSize={6} borderRadius=\"50%\" {...props} />\n);\n","import {\n SkeletonText as ChakraSkeletonText,\n SkeletonTextProps as ChakraSkeletonTextProps,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type SkeletonTextProps = ChakraSkeletonTextProps;\n\n/**\n * SkeletonText renders a loading animation for a given text. It works great as a placeholder to avoid layout shifts.\n */\nexport const SkeletonText = (props: SkeletonTextProps) => (\n <ChakraSkeletonText boxSize={6} {...props} />\n);\n","import {\n ButtonGroup as ChakraButtonGroup,\n ButtonGroupProps as ChakraButtonGroupProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type ButtonGroupProps = ChakraButtonGroupProps;\n/**\n * Group buttons together with a `ButtonGroup`!\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 * You can specify the size of all buttons in a group with the `size` prop. You can also set the same variant across all buttons with the `variant` prop.\n *\n * ```tsx\n * <ButtonGroup variant=\"secondary\" size=\"md\">\n * <Button>Open</Button>\n * <Button>Save</Button>\n * </ButtonGroup>\n * ```\n *\n * Finally, you can join several buttons together with the `isAttached` prop.\n *\n * ```tsx\n * <ButtonGroup variant=\"secondary\" size=\"md\" isAttached>\n * <Button>Open</Button>\n * <IconButton>\n * <SaveIcon aria-label=\"Save\"/>\n * </IconButton>\n * </ButtonGroup>\n * ```\n */\nexport const ButtonGroup = forwardRef<ButtonGroupProps, \"div\">((props, ref) => (\n <ChakraButtonGroup {...props} ref={ref} />\n));\n","import { forwardRef } from \"@chakra-ui/react\";\nimport {\n CloseFill18Icon,\n CloseFill24Icon,\n CloseFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\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<CloseButtonProps, \"button\">(\n ({ size = \"sm\", ...props }, ref) => {\n const { t } = useTranslation();\n return (\n <IconButton\n ref={ref}\n variant=\"ghost\"\n icon={getIcon(size)}\n size={size}\n aria-label={props[\"aria-label\"] || t(texts.close)}\n {...props}\n />\n );\n },\n);\n\nconst getIcon = (size: CloseButtonProps[\"size\"]) => {\n switch (size) {\n case \"xs\":\n case \"sm\":\n return <CloseFill18Icon />;\n case \"md\":\n return <CloseFill24Icon />;\n case \"lg\":\n return <CloseFill30Icon />;\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 IconButtonProps as ChakraIconButtonProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { ColorSpinner } from \"..\";\nimport { As } from \"@chakra-ui/system\";\n\nexport type IconButtonProps = Omit<ChakraIconButtonProps, \"variant\"> & {\n /** The button variant.\n *\n * \"control\" is deprecated\n */\n variant:\n | \"control\"\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"ghost\"\n | \"floating\";\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 * - `control`: This button is used for ticket controls only.\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<IconButtonProps, As>(\n ({ ...props }, ref) => (\n <ChakraIconButton\n title={props[\"aria-label\"]}\n {...props}\n spinner={\n <ColorSpinner width=\"80%\" height=\"80%\" marginX={1} marginTop={1} />\n }\n ref={ref}\n />\n ),\n);\n","import {\n Box,\n BoxProps,\n ComponentWithAs,\n forwardRef,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport { motion } from \"framer-motion\";\nimport React, { useEffect } from \"react\";\n\nconst MotionBox = motion(Box);\n\ntype FloatingActionButtonProps = BoxProps & {\n variant?: \"accent\" | \"base\" | \"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 FloatingActionButtonProps,\n ComponentWithAs<\"a\" | \"button\">\n>(\n (\n {\n as,\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 ? externalIsTextVisible : false,\n );\n const scrollDirection = useScrollDirection();\n useEffect(() => {\n if (externalIsTextVisible !== undefined) {\n return;\n }\n const id = window.setTimeout(\n () => setIsTextVisible(scrollDirection !== \"down\"),\n 1000,\n );\n return () => window.clearTimeout(id);\n }, [scrollDirection, externalIsTextVisible]);\n\n useEffect(() => {\n setIsTextVisible(!!externalIsTextVisible);\n }, [externalIsTextVisible]);\n\n const style = useMultiStyleConfig(\"FloatingActionButton\", {\n variant,\n isTextVisible,\n placement,\n });\n return (\n <MotionBox\n __css={style.container}\n aria-label={children}\n ref={ref}\n {...props}\n >\n <Box __css={style.icon}>{icon}</Box>\n <MotionBox\n animate={isTextVisible ? \"show\" : \"hide\"}\n initial={externalIsTextVisible ? \"show\" : \"hide\"}\n variants={{\n show: {\n opacity: 1,\n width: \"auto\",\n visibility: \"visible\",\n },\n hide: {\n opacity: 0,\n width: 0,\n visibility: \"hidden\",\n },\n }}\n __css={style.text}\n >\n {children}\n </MotionBox>\n </MotionBox>\n );\n },\n);\n\ntype ScrollDirection = \"up\" | \"down\" | null;\nconst useScrollDirection = () => {\n const [scrollDirection, setScrollDirection] =\n React.useState<ScrollDirection>(null);\n const lastScrollPosition = React.useRef(\n typeof window !== \"undefined\" ? window.scrollY : 0,\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","import {\n AltTransportOutline24Icon,\n ErrorOutline24Icon,\n InformationOutline24Icon,\n SuccessOutline24Icon,\n WarningOutline24Icon,\n WarningFill24Icon,\n ServiceFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { BaseAlertProps } from \"./BaseAlert\";\n\ntype AlertIconProps = { variant: BaseAlertProps[\"variant\"] };\n/**\n * Internal component that shows the correct icon for the alert\n */\nexport const AlertIcon = ({ variant }: AlertIconProps) => {\n const Icon = getIcon(variant);\n const { t } = useTranslation();\n return (\n <Icon\n flexShrink={0}\n aria-label={t(texts[variant])}\n marginRight={1}\n color=\"darkGrey\"\n />\n );\n};\n\nconst getIcon = (variant: BaseAlertProps[\"variant\"]) => {\n switch (variant) {\n case \"info\":\n return InformationOutline24Icon;\n case \"success\":\n return SuccessOutline24Icon;\n case \"warning\":\n return WarningOutline24Icon;\n case \"alt-transport\":\n return AltTransportOutline24Icon;\n case \"error\":\n return ErrorOutline24Icon;\n case \"global-deviation\":\n return WarningFill24Icon;\n case \"service\":\n return ServiceFill24Icon;\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 warning: {\n nb: \"Advarsel\",\n nn: \"Advarsel\",\n sv: \"Varning\",\n en: \"Warning\",\n },\n error: {\n nb: \"Feil\",\n nn: \"Feil\",\n sv: \"Error\",\n en: \"Error\",\n },\n \"alt-transport\": {\n nb: \"Alternativ transport\",\n nn: \"Alternativ transport\",\n sv: \"Alternativ transport\",\n en: \"Alternative transport\",\n },\n service: {\n nb: \"Driftsmelding\",\n nn: \"Driftsmelding\",\n sv: \"Servicemeddelande\",\n en: \"Service message\",\n },\n \"global-deviation\": {\n nb: \"Trafikkmelding\",\n nn: \"Trafikkmelding\",\n sv: \"Trafikmeddelande\",\n en: \"Traffic announcement\",\n },\n});\n","import { Box, BoxProps, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type BaseAlertProps = BoxProps & {\n /** The color scheme and icon of the alert */\n variant:\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"alt-transport\"\n | \"error\"\n | \"service\"\n | \"global-deviation\";\n /** The body content of the alert */\n children: React.ReactNode;\n /** The title of the alert */\n title?: string;\n};\n\n/**\n * A base alert box component. Should only be composed by other alert components.\n */\nexport const BaseAlert = ({\n variant,\n children,\n ...boxProps\n}: BaseAlertProps) => {\n const styles = useMultiStyleConfig(\"Alert\", { variant });\n return (\n <Box __css={styles.container} {...boxProps}>\n {children}\n </Box>\n );\n};\n","import {\n Accordion,\n AccordionButton,\n AccordionIcon,\n AccordionItem,\n AccordionPanel,\n Box,\n Flex,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { AlertIcon } from \"./AlertIcon\";\nimport { BaseAlert, BaseAlertProps } from \"./BaseAlert\";\n\ntype ExpandableAlertProps = BaseAlertProps & {\n /** The title string */\n title: string;\n /** Callback for when the expandable panel is opened or closed */\n onToggle?: (isOpen: boolean) => void;\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};\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 = ({\n variant,\n children,\n title,\n headingLevel = \"h3\",\n defaultOpen = false,\n onToggle = () => {},\n ...boxProps\n}: ExpandableAlertProps) => {\n const styles = useMultiStyleConfig(\"AlertExpandable\", { variant });\n return (\n <BaseAlert variant={variant} {...boxProps} paddingX={0} paddingY={0}>\n <Accordion\n onChange={(expandedIndex) => onToggle(expandedIndex === 0)}\n defaultIndex={defaultOpen ? 0 : -1}\n allowToggle\n flexGrow=\"1\"\n >\n <AccordionItem sx={styles.accordion}>\n <AccordionButton sx={styles.container}>\n <Flex\n justifyContent=\"space-between\"\n alignItems=\"center\"\n flexGrow=\"1\"\n >\n <Flex as={headingLevel} alignItems=\"center\">\n <AlertIcon variant={variant} />\n\n <Box\n as=\"span\"\n sx={{\n // Truncate the title to one line\n display: \"-webkit-box\",\n overflow: \"hidden\",\n WebkitLineClamp: \"1\",\n WebkitBoxOrient: \"vertical\",\n }}\n color={variant === \"service\" ? \"white\" : \"darkGrey\"}\n >\n {title}\n </Box>\n </Flex>\n <AccordionIcon\n color={variant === \"service\" ? \"white\" : \"darkGrey\"}\n />\n </Flex>\n </AccordionButton>\n <AccordionPanel color={variant === \"service\" ? \"white\" : \"darkGrey\"}>\n {children}\n </AccordionPanel>\n </AccordionItem>\n </Accordion>\n </BaseAlert>\n );\n};\n","import React from \"react\";\nimport { AlertIcon } from \"./AlertIcon\";\nimport { BaseAlert, BaseAlertProps } from \"./BaseAlert\";\nimport { Box, Flex } from \"@chakra-ui/react\";\n\ntype StaticAlertProps = BaseAlertProps;\n\n/**\n * A static alert component.\n *\n * This alert component cannot be closed, nor dismissed.\n *\n * ```tsx\n * <StaticAlert variant=\"info\" title=\"Nice to know\">\n * Thomas the Train was originally only a wooden toy made for the creator’s son.\n * </StaticAlert>\n * ```\n */\nexport const StaticAlert = ({\n children,\n title,\n ...props\n}: StaticAlertProps) => {\n return (\n <BaseAlert {...props}>\n <AlertIcon variant={props.variant} />\n <Flex direction=\"column\" gap={title ? 2 : undefined} textAlign=\"left\">\n {title && <Box fontWeight=\"bold\">{title}</Box>}\n <Box>{children}</Box>\n </Flex>\n </BaseAlert>\n );\n};\n","import {\n Accordion,\n AccordionButton,\n AccordionIcon,\n AccordionItem,\n AccordionPanel,\n Box,\n Flex,\n Stack,\n Text,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { AlertIcon } from \"./AlertIcon\";\nimport { BaseAlert, BaseAlertProps } from \"./BaseAlert\";\n\ntype ServiceAlertProps = BaseAlertProps & {\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 /** Callback for when the expandable panel is opened or closed */\n onToggle?: (isOpen: boolean) => void;\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 */\nexport const ServiceAlert = ({\n variant = \"service\",\n children,\n title,\n notification,\n contentWidth = \"container.md\",\n headingLevel = \"h3\",\n defaultOpen = false,\n onToggle = () => {},\n ...boxProps\n}: ServiceAlertProps) => {\n const { t } = useTranslation();\n const styles = useMultiStyleConfig(\"AlertService\", { variant });\n return (\n <BaseAlert\n variant={variant}\n {...boxProps}\n paddingX={0}\n paddingY={0}\n sx={styles.outerBox}\n >\n <Accordion\n onChange={(expandedIndex) => onToggle(expandedIndex === 0)}\n defaultIndex={defaultOpen ? 0 : -1}\n allowToggle\n flexGrow={1}\n sx={{ outline: \"none\" }}\n variant={variant}\n >\n <AccordionItem>\n <AccordionButton sx={styles.container}>\n <Stack\n flexDirection=\"row\"\n justifyContent=\"center\"\n width=\"100%\"\n paddingX={2}\n >\n <Flex\n justifyContent=\"space-between\"\n alignItems=\"center\"\n flexGrow={1}\n maxWidth={contentWidth}\n >\n <Flex as={headingLevel} alignItems=\"center\">\n {notification === 1 && <AlertIcon variant={variant} />}\n\n <Box\n as=\"span\"\n sx={{\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 </Box>\n </Flex>\n\n <Flex alignItems=\"center\">\n {notification && (\n <Text sx={styles.notificationText}>\n {t(texts.notification(notification))}\n </Text>\n )}\n\n <AccordionIcon />\n </Flex>\n </Flex>\n </Stack>\n </AccordionButton>\n\n <AccordionPanel sx={styles.serviceMessageContent}>\n <Stack flexDirection=\"row\" justifyContent=\"center\" width=\"100%\">\n <Stack\n justifyContent=\"center\"\n alignItems=\"center\"\n flexGrow={1}\n maxWidth={contentWidth}\n flexFlow=\"column\"\n gap={2}\n sx={{\n p: {\n padding: \"0.8rem 0\",\n borderBottom: \"0.08rem solid\",\n borderColor:\n variant === \"global-deviation\"\n ? \"blackAlpha.400\"\n : \"whiteAlpha.400\",\n },\n \"p:last-child\": {\n borderBottom: \"none\",\n },\n }}\n >\n {children}\n </Stack>\n </Stack>\n </AccordionPanel>\n </AccordionItem>\n </Accordion>\n </BaseAlert>\n );\n};\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});\n","import {\n Breadcrumb as ChakraBreadcrumb,\n BreadcrumbItem as ChakraBreadcrumbItem,\n BreadcrumbLink as ChakraBreadcrumbLink,\n BreadcrumbProps as ChakraBreadcrumbProps,\n useColorModeValue,\n} from \"@chakra-ui/react\";\nimport { DropdownRightFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\n\ntype BreadcrumbProps = Omit<ChakraBreadcrumbProps, \"variant\"> & {\n variant?: \"base\" | \"ghost\";\n};\n/**\n * A breadcrumb component.\n *\n * Used to create customizable breadcrumbs.\n *\n * ```tsx\n * <Breadcrumb>\n * <BreadcrumbItem>\n * <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\n * </BreadcrumbItem>\n * <BreadcrumbItem isCurrentPage={true}>\n * <BreadcrumbLink href=\"/about\">About</BreadcrumbLink>\n * </BreadcrumbItem>\n * </Breadcrumb>\n * ```\n */\nexport const Breadcrumb = (props: BreadcrumbProps) => {\n const iconColor = useColorModeValue(\"blackAlpha.400\", \"whiteAlpha.400\");\n return (\n <ChakraBreadcrumb\n separator={<DropdownRightFill18Icon color={iconColor} />}\n {...props}\n />\n );\n};\n\nexport const BreadcrumbItem = ChakraBreadcrumbItem;\nexport const BreadcrumbLink = ChakraBreadcrumbLink;\n","export { Time } from \"@internationalized/date\";\nexport * from \"./DatePicker\";\nexport * from \"./DateRangePicker\";\nexport * from \"./TimePicker\";\n","import {\n Box,\n BoxProps,\n FocusLock,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverBody,\n PopoverContent,\n PopoverTrigger,\n Portal,\n InputGroup,\n ResponsiveValue,\n useFormControlContext,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport { DateValue } from \"@internationalized/date\";\nimport React, { ReactNode, forwardRef, useId, useRef } from \"react\";\nimport { AriaDatePickerProps, I18nProvider, useDatePicker } from \"react-aria\";\nimport { useDatePickerState } from \"react-stately\";\nimport { FormErrorMessage } from \"..\";\nimport { Calendar } from \"./Calendar\";\nimport { CalendarTriggerButton } from \"./CalendarTriggerButton\";\nimport { DateField } from \"./DateField\";\nimport { StyledField } from \"./StyledField\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype DatePickerProps = Omit<AriaDatePickerProps<DateValue>, \"onChange\"> &\n Pick<BoxProps, \"minHeight\" | \"width\"> & {\n variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\n name?: string;\n showYearNavigation?: boolean;\n withPortal?: boolean;\n onChange?: (value: DateValue | null) => void;\n };\n\n/**\n * A date picker component.\n *\n * There are three different variants – `base`, `floating` and `ghost`.\n *\n * ```tsx\n * <DatePicker label=\"Dato\" variant=\"base\" />\n * ```\n */\n\nexport const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n variant,\n errorMessage,\n minHeight,\n showYearNavigation,\n withPortal = true,\n width = \"auto\",\n ...props\n },\n externalRef,\n ) => {\n const formControlProps = useFormControlContext();\n const state = useDatePickerState({\n ...props,\n shouldCloseOnSelect: true,\n errorMessage,\n isRequired: props.isRequired ?? formControlProps?.isRequired,\n validationState: formControlProps?.isInvalid ? \"invalid\" : \"valid\",\n });\n const internalRef = useRef<HTMLDivElement>(null);\n const ref = externalRef ?? internalRef;\n const {\n labelProps,\n fieldProps,\n buttonProps,\n dialogProps,\n calendarProps,\n errorMessageProps,\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 styles = useMultiStyleConfig(\"Datepicker\", { variant });\n const locale = useCurrentLocale();\n\n const onFieldClick = () => {\n state.setOpen(true);\n };\n\n const popoverContent = (\n <PopoverContent color=\"darkGrey\" sx={styles.calendarPopover}>\n <PopoverArrow sx={styles.arrow} />\n <PopoverBody>\n <FocusLock>\n <Calendar\n {...calendarProps}\n variant={variant}\n showYearNavigation={showYearNavigation}\n />\n </FocusLock>\n </PopoverBody>\n </PopoverContent>\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 <Popover\n {...dialogProps}\n isOpen={state.isOpen}\n onOpen={state.open}\n onClose={state.close}\n flip={false}\n >\n <InputGroup\n display=\"inline-flex\"\n id={inputGroupId}\n aria-labelledby={labelId}\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 <PopoverTrigger>\n <CalendarTriggerButton\n variant={variant}\n ref={ref}\n isDisabled={props.isDisabled}\n ariaLabelledby={labelId}\n {...buttonProps}\n />\n </PopoverTrigger>\n <DateField\n label={props.label}\n labelProps={labelProps}\n labelId={labelId}\n name={props.name}\n {...fieldProps}\n />\n </StyledField>\n </PopoverAnchor>\n </InputGroup>\n <FormErrorMessage {...errorMessageProps}>\n {errorMessage as ReactNode}\n </FormErrorMessage>\n {state.isOpen && !props.isDisabled && withPortal && (\n <Portal>{popoverContent}</Portal>\n )}\n {state.isOpen && !props.isDisabled && !withPortal && popoverContent}\n </Popover>\n </Box>\n </I18nProvider>\n );\n },\n);\n","import { Box, ResponsiveValue } from \"@chakra-ui/react\";\nimport { DateValue, createCalendar } from \"@internationalized/date\";\nimport React from \"react\";\nimport {\n CalendarProps as ReactAriaCalendarProps,\n useCalendar,\n} from \"react-aria\";\nimport { useCalendarState } from \"react-stately\";\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { CalendarHeader } from \"./CalendarHeader\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype CalendarProps = ReactAriaCalendarProps<DateValue> & {\n showYearNavigation?: boolean;\n variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\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\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}>\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","import { endOfMonth, getWeeksInMonth } from \"@internationalized/date\";\nimport React from \"react\";\nimport { AriaCalendarGridProps, useCalendarGrid } from \"react-aria\";\nimport { CalendarState, RangeCalendarState } from \"react-stately\";\nimport { Language, useTranslation } from \"../i18n\";\nimport { Text } from \"../typography\";\nimport { CalendarCell } from \"./CalendarCell\";\nimport { useCurrentLocale } from \"./utils\";\nimport { ResponsiveValue, useMultiStyleConfig } from \"@chakra-ui/react\";\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 variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\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 = new Array(weeksInMonth).fill(0).map((_, i) => i);\n const styles = useMultiStyleConfig(\"Datepicker\", { variant });\n\n return (\n <table {...gridProps}>\n <thead {...headerProps}>\n <tr>\n {weekDays[language].map((day, index) => {\n return (\n <Text\n as=\"th\"\n key={index}\n sx={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 </table>\n );\n}\n","import {\n Badge as ChakraBadge,\n BadgeProps as ChakraBadgeProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport { As } from \"@chakra-ui/system\";\nimport React from \"react\";\n\nexport type BadgeProps = Omit<\n ChakraBadgeProps,\n \"variant\" | \"colorScheme\" | \"size\"\n> & {\n /**\n * The color scheme of the badge.\n */\n colorScheme?:\n | \"yellow\"\n | \"light-yellow\"\n | \"red\"\n | \"light-green\"\n | \"dark-green\"\n | \"orange\"\n | \"light-blue\"\n | \"dark-blue\"\n | \"grey\"\n | \"white\";\n /** The design variant – \"solid\" by default.\n *\n * Can be specified as `outline` to render a border around the badge. */\n variant?: \"solid\" | \"outline\";\n /** Optional badge icon. Will be rendered to the left of the text.\n *\n * Make sure you pass in the 18px version of the icon.\n */\n icon?: React.ReactElement;\n};\n/**\n * Shows some additional information about the component it's used within.\n *\n * You have to specify some content (icons should be placed to the left, if present), and a colorScheme.\n *\n * ```tsx\n * <Badge colorScheme=\"light-green\">Hello</Badge>\n * ```\n *\n * If you want an icon, pass it in through the `icon` prop:\n *\n * ```tsx\n * <Badge colorScheme=\"light-blue\" icon={<InformationOutline18Icon />}>\n * Information\n * </Badge>\n * ```\n */\nexport const Badge = forwardRef<BadgeProps, As>(\n ({ icon, colorScheme = \"grey\", children, ...props }, ref) => {\n return (\n <ChakraBadge\n colorScheme={colorScheme}\n {...props}\n paddingLeft={icon ? 1 : undefined}\n ref={ref}\n >\n {icon && React.cloneElement(icon, { marginRight: 1 })}\n {children}\n </ChakraBadge>\n );\n },\n);\n","import {\n Code as ChakraCode,\n CodeProps as ChakraCodeProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport { As } from \"@chakra-ui/system\";\nimport React from \"react\";\n\nexport type CodeProps = ChakraCodeProps & {\n /**\n * The color scheme of the inline code.\n */\n colorScheme?:\n | \"yellow\"\n | \"light-yellow\"\n | \"red\"\n | \"green\"\n | \"orange\"\n | \"blue\"\n | \"grey\"\n | \"white\";\n /** The design variant – \"solid\" by default.\n *\n * Can be specified as `outline` to render a border around the badge. */\n variant?: \"solid\" | \"outline\";\n};\n/**\n * Shows inline code.\n */\nexport const Code = forwardRef<CodeProps, As>((props, ref) => (\n <ChakraCode {...props} ref={ref} />\n));\n","import {\n HeadingProps as ChakraHeadingProps,\n Text,\n useColorModeValue,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { slugify } from \"..\";\nimport type { textStyles } from \"../theme/foundations\";\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?: keyof typeof textStyles;\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 \"2xl\". The default is \"xl-sans\".\n *\n * ```tsx\n * <Heading as=\"h1\" variant=\"2xl\">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 */\nexport const Heading = ({\n as,\n variant = \"xl-display\",\n autoId = false,\n id: externalId,\n ...props\n}: HeadingProps) => {\n const id =\n externalId ??\n (autoId && typeof props.children === \"string\"\n ? slugify(props.children)\n : undefined);\n const color = useColorModeValue(\"text.primary.light\", \"text.primary.dark\");\n return <Text as={as} textStyle={variant} id={id} color={color} {...props} />;\n};\n","import {\n Text as ChakraText,\n TextProps as ChakraTextProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type TextProps = Omit<ChakraTextProps, \"textStyle\"> & {\n /** The size and style of the text.\n *\n * Defaults to \"sm\" */\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 */\nexport const Text = forwardRef<TextProps, \"p\">(\n ({ variant = \"sm\", ...props }, ref) => {\n return <ChakraText {...props} textStyle={variant} ref={ref} />;\n },\n);\n","import { Box, ResponsiveValue, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport {\n CalendarDate,\n DateValue,\n isSameMonth,\n isToday,\n} from \"@internationalized/date\";\nimport React, { useEffect, useRef } from \"react\";\nimport { useCalendarCell } from \"react-aria\";\nimport { CalendarState, RangeCalendarState } from \"react-stately\";\n\ntype CalendarCellProps = {\n variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\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(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 styles = useMultiStyleConfig(\"Datepicker\", { variant });\n\n const stateProps: Record<string, any> = {};\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 as any)?.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\" sx={styles.cell}>\n <Box\n as=\"button\"\n type=\"button\"\n {...buttonProps}\n {...stateProps}\n ref={ref}\n sx={styles.dateCell}\n hidden={isOutsideVisibleRange}\n width=\"100%\"\n >\n {date.day}\n </Box>\n </Box>\n );\n}\n","import { CalendarDateTime, parseTime } from \"@internationalized/date\";\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 case \"nn\":\n return \"nb-NO\";\n case \"sv\":\n return \"sv-SE\";\n case \"en\":\n return \"en-GB\";\n default:\n return \"nb-NO\";\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","import { Box, Flex } from \"@chakra-ui/react\";\nimport { getLocalTimeZone } from \"@internationalized/date\";\nimport {\n ArrowLeftOutline24Icon,\n ArrowRightOutline24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { CalendarState, RangeCalendarState } from \"react-stately\";\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={\n title ? title : isYearPickerVisible ? monthTitle : monthAndYearTitle\n }\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 >\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","import React, { useRef } from \"react\";\nimport { AriaButtonProps, useButton } from \"react-aria\";\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","import {\n Box,\n PopoverAnchor,\n useMultiStyleConfig,\n forwardRef,\n ResponsiveValue,\n} from \"@chakra-ui/react\";\nimport { CalendarOutline24Icon } from \"@vygruppen/spor-icon-react\";\nimport React, { KeyboardEventHandler } from \"react\";\nimport { AriaButtonProps } from \"react-aria\";\nimport { IconButton, createTexts, useTranslation } from \"..\";\nimport { As } from \"@chakra-ui/system\";\n\ntype CalendarTriggerButtonProps = AriaButtonProps<\"button\"> & {\n variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\n isDisabled?: boolean;\n ariaLabelledby?: string;\n};\nexport const CalendarTriggerButton = forwardRef<CalendarTriggerButtonProps, As>(\n ({ variant, isDisabled, ariaLabelledby, ...buttonProps }, ref) => {\n const { t } = useTranslation();\n const styles = useMultiStyleConfig(\"Datepicker\", { variant });\n\n const { onPress, ...filteredButtonProps } = buttonProps;\n\n const handleCommand: KeyboardEventHandler = (event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n onPress?.(event as any);\n }\n };\n\n return (\n <PopoverAnchor>\n <IconButton\n ref={ref}\n role=\"button\"\n icon={<CalendarOutline24Icon />}\n aria-label={t(texts.openCalendar)}\n sx={styles.calendarTriggerButton}\n variant=\"ghost\"\n {...filteredButtonProps}\n isDisabled={isDisabled}\n onKeyDown={handleCommand}\n aria-labelledby={ariaLabelledby}\n />\n </PopoverAnchor>\n );\n },\n);\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","import { Box, Flex, FormLabel, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport { DateValue, GregorianCalendar } from \"@internationalized/date\";\nimport { DOMAttributes, FocusableElement } from \"@react-types/shared\";\nimport React, { RefObject, forwardRef, useId, useRef } from \"react\";\nimport { AriaDateFieldProps, useDateField } from \"react-aria\";\nimport { DateSegment, useDateFieldState } from \"react-stately\";\nimport { DateTimeSegment } from \"./DateTimeSegment\";\nimport { useCurrentLocale } from \"./utils\";\nimport { createTexts, useTranslation } from \"../i18n\";\n\nfunction createCalendar(identifier: string) {\n switch (identifier) {\n case \"gregory\":\n return new GregorianCalendar();\n default:\n throw new Error(`Unsupported calendar ${identifier}`);\n }\n}\n\ntype DateFieldProps = AriaDateFieldProps<DateValue> & {\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 styles = useMultiStyleConfig(\"Datepicker\", {});\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 <FormLabel\n sx={styles.inputLabel}\n position=\"absolute\"\n paddingTop=\"2px\"\n id={labelId}\n >\n {props.label}\n </FormLabel>\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);\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 case \"month\":\n return texts.month;\n case \"year\":\n return texts.year;\n default:\n return texts.day;\n }\n};\n","import { Box, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React, { RefObject, forwardRef, useRef } from \"react\";\nimport { useDateSegment } from \"react-aria\";\nimport { DateFieldState, DateSegment } from \"react-stately\";\n\ntype DateTimeSegmentProps = {\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 styles = useMultiStyleConfig(\"Datepicker\", {\n isPlaceholder: segment.isPlaceholder,\n isEditable: segment.isEditable,\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 sx={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);\n\nconst isPaddable = (segmentType: DateSegment[\"type\"]) =>\n segmentType === \"month\" ||\n segmentType === \"day\" ||\n segmentType === \"hour\" ||\n segmentType === \"minute\" ||\n segmentType === \"second\";\n","import {\n Box,\n BoxProps,\n ResponsiveValue,\n forwardRef,\n useFormControlContext,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport { As } from \"@chakra-ui/system\";\nimport React from \"react\";\n\ntype StyledFieldProps = BoxProps & {\n variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\n isDisabled?: boolean;\n ariaLabelledby?: string;\n};\nexport const StyledField = forwardRef<StyledFieldProps, As>(\n ({ children, variant, isDisabled, ariaLabelledby, ...otherProps }, ref) => {\n const { isInvalid } = useFormControlContext() ?? {\n isInvalid: false,\n };\n\n const styles = useMultiStyleConfig(\"Datepicker\", { variant });\n\n return (\n <Box\n {...otherProps}\n __css={styles.wrapper}\n ref={ref}\n aria-invalid={isInvalid}\n aria-disabled={isDisabled}\n aria-labelledby={ariaLabelledby}\n >\n {children}\n </Box>\n );\n },\n);\n","import {\n Box,\n BoxProps,\n FocusLock,\n FormLabel,\n InputGroup,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverBody,\n PopoverContent,\n PopoverTrigger,\n Portal,\n ResponsiveValue,\n useFormControlContext,\n useMultiStyleConfig,\n} from \"@chakra-ui/react\";\nimport { DateValue } from \"@internationalized/date\";\nimport React, { useRef } from \"react\";\nimport {\n AriaDateRangePickerProps,\n I18nProvider,\n useDateRangePicker,\n} from \"react-aria\";\nimport { useDateRangePickerState } from \"react-stately\";\nimport { CalendarTriggerButton } from \"./CalendarTriggerButton\";\nimport { DateField } from \"./DateField\";\nimport { RangeCalendar } from \"./RangeCalendar\";\nimport { StyledField } from \"./StyledField\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype DateRangePickerProps = Omit<\n AriaDateRangePickerProps<DateValue>,\n \"onChange\"\n> &\n Pick<BoxProps, \"minHeight\"> & {\n startLabel?: string;\n startName?: string;\n endLabel?: string;\n endName?: string;\n variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\n withPortal?: boolean;\n onChange?: (\n dates: {\n start: DateValue | null;\n end: DateValue | null;\n } | null,\n ) => void;\n };\n/**\n * A date range picker component.\n *\n * There are three variants to choose from – `base`, `floating` and `ghost`.\n *\n * ```tsx\n * <DateRangePicker startLabel=\"From\" startName=\"from\" endLabel=\"To\" endName=\"to\" variant=\"base\" />\n * ```\n */\nexport function DateRangePicker({\n variant,\n minHeight,\n startName,\n endName,\n withPortal = true,\n ...props\n}: DateRangePickerProps) {\n const formControlProps = useFormControlContext();\n const state = useDateRangePickerState({\n ...props,\n shouldCloseOnSelect: true,\n isRequired: props.isRequired ?? formControlProps?.isRequired,\n validationState: formControlProps.isInvalid ? \"invalid\" : \"valid\",\n });\n const ref = useRef(null);\n const {\n groupProps,\n labelProps,\n startFieldProps,\n endFieldProps,\n buttonProps,\n dialogProps,\n calendarProps,\n } = useDateRangePicker(props, state, ref);\n\n const styles = useMultiStyleConfig(\"Datepicker\", { variant });\n const locale = useCurrentLocale();\n\n const handleEnterClick = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" && !state.isOpen && variant === \"base\") {\n // Don't submit the form\n e.stopPropagation();\n state.setOpen(true);\n }\n };\n\n const onFieldClick = () => {\n state.setOpen(true);\n };\n\n const popoverContent = (\n <PopoverContent sx={styles.calendarPopover} maxWidth=\"none\">\n <PopoverArrow sx={styles.arrow} />\n <PopoverBody>\n <FocusLock>\n <RangeCalendar variant={\"base\"} {...calendarProps} />\n </FocusLock>\n </PopoverBody>\n </PopoverContent>\n );\n\n return (\n <I18nProvider locale={locale}>\n <Box position=\"relative\" display=\"inline-flex\" flexDirection=\"column\">\n {props.label && (\n <FormLabel {...labelProps} sx={styles.inputLabel}>\n {props.label}\n </FormLabel>\n )}\n <Popover\n {...dialogProps}\n isOpen={state.isOpen}\n onOpen={state.open}\n onClose={state.close}\n flip={false}\n >\n <InputGroup {...groupProps} width=\"auto\" display=\"inline-flex\">\n <PopoverAnchor>\n <StyledField\n alignItems=\"center\"\n paddingX={3}\n variant={variant}\n onClick={onFieldClick}\n onKeyPress={handleEnterClick}\n minHeight={minHeight}\n >\n {variant && (\n <PopoverTrigger>\n <CalendarTriggerButton\n paddingLeft={1}\n paddingRight={1}\n variant={variant}\n ref={ref}\n {...buttonProps}\n />\n </PopoverTrigger>\n )}\n <DateField\n {...startFieldProps}\n name={startName}\n label={props.startLabel}\n labelProps={labelProps}\n />\n <Box as=\"span\" aria-hidden=\"true\" paddingRight=\"2\">\n –\n </Box>\n <DateField\n {...endFieldProps}\n name={endName}\n label={props.endLabel}\n labelProps={labelProps}\n />\n </StyledField>\n </PopoverAnchor>\n </InputGroup>\n {state.isOpen && withPortal && <Portal>{popoverContent}</Portal>}\n {state.isOpen && !withPortal && popoverContent}\n </Popover>\n </Box>\n </I18nProvider>\n );\n}\n","import { Box, ResponsiveValue } from \"@chakra-ui/react\";\nimport { DateValue, createCalendar } from \"@internationalized/date\";\nimport React, { useRef } from \"react\";\nimport {\n RangeCalendarProps as ReactAriaRangeCalendarProps,\n useRangeCalendar,\n} from \"react-aria\";\nimport { useRangeCalendarState } from \"react-stately\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { CalendarHeader } from \"./CalendarHeader\";\nimport { useCurrentLocale } from \"./utils\";\n\ntype RangeCalendarProps = ReactAriaRangeCalendarProps<DateValue> & {\n variant: ResponsiveValue<\"base\" | \"floating\" | \"ghost\">;\n};\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\n const ref = useRef(null);\n const { calendarProps, title } = useRangeCalendar(props, state, ref);\n\n return (\n <Box {...calendarProps} ref={ref}>\n <CalendarHeader state={state} title={title} />\n <Box display=\"flex\" gap=\"8\">\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","import { BoxProps, useFormControlContext } 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 React from \"react\";\nimport { useTimeFieldState } from \"react-stately\";\nimport { IconButton, createTexts, useTranslation } from \"..\";\nimport { StyledField } from \"./StyledField\";\nimport { TimeField } from \"./TimeField\";\nimport { getCurrentTime, useCurrentLocale } from \"./utils\";\n\ntype TimePickerProps = Omit<BoxProps, \"defaultValue\" | \"onChange\"> & {\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 isDisabled?: boolean;\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 isDisabled: isDisabledExternally = false,\n name,\n ...boxProps\n}: TimePickerProps) => {\n const { isDisabled: isFormControlDisabled, isInvalid: isFormControlInvalid } =\n useFormControlContext() ?? {};\n const isDisabled = isDisabledExternally ?? isFormControlDisabled ?? 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: isFormControlInvalid ? \"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 return (\n <StyledField\n variant=\"base\"\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 isDisabled={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 isDisabled={isDisabled}\n style={isDisabled ? { backgroundColor: \"transparent\" } : {}}\n />\n </StyledField>\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","import { Box, Flex } from \"@chakra-ui/react\";\nimport { CalendarDateTime, Time } from \"@internationalized/date\";\nimport React, { useRef } from \"react\";\nimport { AriaTimeFieldProps, useTimeField } from \"react-aria\";\nimport { TimeFieldState } from \"@react-stately/datepicker\";\nimport { FormLabel } from \"..\";\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 <FormLabel\n {...labelProps}\n htmlFor={fieldProps.id}\n marginBottom={0}\n fontSize=\"mobile.xs\"\n cursor=\"text\"\n position=\"absolute\"\n paddingTop=\"2px\"\n >\n {props.label}\n </FormLabel>\n <Flex {...fieldProps} ref={ref} paddingTop=\"3\" paddingBottom=\"0.5\">\n {state.segments.map((segment) => (\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 { Image, Img } from \"@chakra-ui/react\";\nexport type { ImageProps, ImgProps } from \"@chakra-ui/react\";\n","import { Box, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { LineIcon } from \"./LineIcon\";\nimport type { TagProps } from \"./types\";\n\nexport type InfoTagProps = TagProps;\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 styles = useMultiStyleConfig(\"InfoTag\", {\n variant,\n size,\n ...customProps,\n });\n return (\n <Box sx={styles.container}>\n <LineIcon\n variant={variant}\n size={size}\n sx={styles.iconContainer}\n {...(customProps as any)} // TODO: Fix this\n />\n <Box sx={styles.textContainer}>\n {title && (\n <Box as=\"span\" sx={styles.title}>\n {title}\n </Box>\n )}\n {title && description && \" \"}\n {description && (\n <Box as=\"span\" sx={styles.description}>\n {description}\n </Box>\n )}\n </Box>\n </Box>\n );\n};\n","import { Box, BoxProps, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { getCorrectIcon } from \"./icons\";\nimport { CustomVariantProps, TagProps } from \"./types\";\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 size: TagProps[\"size\"];\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 */\nexport const LineIcon = ({\n variant,\n size = \"md\",\n sx,\n ...rest\n}: LineIconProps) => {\n const styles = useMultiStyleConfig(\"LineIcon\", { variant, size, ...rest });\n const Icon: any = getCorrectIcon({\n variant:\n variant === \"custom\" && \"customIconVariant\" in rest\n ? rest.customIconVariant\n : variant === \"custom\"\n ? \"local-train\"\n : variant,\n size,\n });\n if (!Icon) {\n return null;\n }\n return (\n <Box sx={{ ...styles.iconContainer, ...sx }}>\n <Icon sx={styles.icon} />\n </Box>\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\";\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","import {\n Box,\n BoxProps,\n forwardRef,\n useMultiStyleConfig,\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 React from \"react\";\nimport { LineIcon } from \"./LineIcon\";\nimport type { TagProps } from \"./types\";\nimport { As } from \"@chakra-ui/system\";\n\nexport type TravelTagProps = TagProps &\n BoxProps & {\n /**\n * Defines the level of importance\n * Default to none\n */\n deviationLevel?: \"critical\" | \"major\" | \"minor\" | \"info\" | \"none\";\n isDisabled?: boolean;\n /**\n * Needs to be defined if variant is custom\n */\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 * ```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 */\nexport const TravelTag = forwardRef<TravelTagProps, As>(\n (\n {\n variant,\n size = \"md\",\n deviationLevel = \"none\",\n title,\n description,\n isDisabled,\n foregroundColor,\n backgroundColor,\n customIconVariant,\n ...rest\n },\n ref,\n ) => {\n const styles = useMultiStyleConfig(\"TravelTag\", {\n variant,\n size,\n deviationLevel,\n foregroundColor: variant === \"custom\" ? foregroundColor : undefined,\n backgroundColor: variant === \"custom\" ? backgroundColor : undefined,\n });\n\n const DeviationLevelIcon = getDeviationLevelIcon({ deviationLevel, size });\n\n return (\n <Box sx={styles.container} aria-disabled={isDisabled} ref={ref} {...rest}>\n <LineIcon\n variant={variant}\n size={size}\n sx={styles.iconContainer}\n foregroundColor={foregroundColor}\n backgroundColor={backgroundColor}\n customIconVariant={customIconVariant}\n {...(rest as any)}\n />\n <Box sx={styles.textContainer}>\n {title && (\n <Box as=\"span\" sx={styles.title}>\n {title}\n </Box>\n )}\n {title && description && \" \"}\n {description && (\n <Box as=\"span\" sx={styles.description}>\n {description}\n </Box>\n )}\n </Box>\n {DeviationLevelIcon && <DeviationLevelIcon sx={styles.deviationIcon} />}\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 case \"major\":\n case \"minor\":\n return size === \"lg\" ? WarningFill24Icon : WarningFill18Icon;\n case \"info\":\n return size === \"lg\" ? InformationFill24Icon : InformationFill18Icon;\n default:\n return null;\n }\n};\n","import {\n Link as ChakraLink,\n LinkProps as ChakraLinkProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport { LinkOutOutline24Icon } from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { createTexts, useTranslation } from \"..\";\n\ntype LinkProps = Omit<ChakraLinkProps, \"variant\"> & {\n variant?: \"primary\" | \"secondary\";\n};\n/** Link to different sites or parts of site\n *\n * You can specify the `variant` prop to get different link designs.\n */\nexport const TextLink = forwardRef<LinkProps, \"a\">(\n ({ children, ...props }, ref) => {\n const { t } = useTranslation();\n const isExternal =\n props.isExternal !== undefined\n ? props.isExternal\n : Boolean(props.href?.match(/^https?:\\/\\//));\n return (\n <ChakraLink {...props} ref={ref} isExternal={isExternal}>\n {children}\n {isExternal && (\n <LinkOutOutline24Icon\n marginLeft={0.5}\n aria-label={t(texts.externalLink)}\n />\n )}\n </ChakraLink>\n );\n },\n);\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","export { ListItem, OrderedList, UnorderedList } from \"@chakra-ui/react\";\nexport type { ListItemProps, ListProps } from \"@chakra-ui/react\";\n","import { Box, BoxProps } from \"@chakra-ui/react\";\nimport React, { useId } from \"react\";\n\nexport type VyLogoProps = {\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 colorScheme: \"light\" | \"dark\";\n} & BoxProps;\nexport const VyLogo = ({ colorScheme, ...boxProps }: VyLogoProps) => {\n // These colors should not be tokenized, as they are logo specific.\n const mainColor = colorScheme === \"light\" ? \"#1d211c\" : \"#ffffff\";\n const accentColor = colorScheme === \"light\" ? \"#138c6e\" : \"#ffffff\";\n const id = useId();\n return (\n <Box as=\"svg\" viewBox=\"0 0 107 54\" {...boxProps}>\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={mainColor}\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={mainColor}\n />\n </mask>\n <g\n mask={`url(#${id}-a)`}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n fill={mainColor}\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 </g>\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={accentColor}\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={mainColor}\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={mainColor}\n />\n </mask>\n <g 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={mainColor}\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={mainColor}\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={accentColor}\n />\n </g>\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={mainColor}\n />\n </Box>\n );\n};\n","import { Box, BoxProps } from \"@chakra-ui/react\";\nimport React, { useId } from \"react\";\n\nexport type VyLogoPrideProps = {\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 colorScheme: \"light\" | \"dark\";\n} & BoxProps;\nexport const VyLogoPride = ({ colorScheme, ...boxProps }: VyLogoPrideProps) => {\n // These colors should not be tokenized, as they are logo specific.\n const pinkColor = colorScheme === \"light\" ? \"#ED6F99\" : \"#ffffff\";\n const purpleColor = colorScheme === \"light\" ? \"#C06CF7\" : \"#ffffff\";\n const darkPurpleColor = colorScheme === \"light\" ? \"#821889\" : \"#ffffff\";\n const greenColor = colorScheme === \"light\" ? \"#56BDBF\" : \"#ffffff\";\n const darkGreenColor = colorScheme === \"light\" ? \"#3E8C26\" : \"#ffffff\";\n const blueColor = colorScheme === \"light\" ? \"#3A0692\" : \"#ffffff\";\n const redColor = colorScheme === \"light\" ? \"#EA3323\" : \"#ffffff\";\n const orangeColor = colorScheme === \"light\" ? \"#F09436\" : \"#ffffff\";\n const yellowColor = colorScheme === \"light\" ? \"#FFFF54\" : \"#ffffff\";\n\n const id = useId();\n return (\n <Box as=\"svg\" viewBox=\"0 0 107 54\" {...boxProps}>\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 </Box>\n );\n};\n","import { Box, BoxProps } from \"@chakra-ui/react\";\nimport React 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 colorScheme: \"light\" | \"dark\";\n} & BoxProps;\n\nexport const CargonetLogo = ({\n colorScheme,\n ...boxProps\n}: CargonetLogoProps) => {\n // These colors should not be tokenized, as they are logo specific.\n const mainColor = \"#DF8200\";\n const accentColor = colorScheme === \"light\" ? \"#383E42\" : \"#ffffff\";\n\n return (\n <Box as=\"svg\" viewBox=\"0 0 251 52\" {...boxProps}>\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 </Box>\n );\n};\n","import { BoxProps, Center, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { createTexts, useTranslation } from \"..\";\nimport {\n Backward15MediaControllerFill30Icon,\n Forward15MediaControllerFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\n\ntype JumpButtonProps = BoxProps & {\n onClick: () => void;\n \"aria-label\"?: string;\n isDisabled?: 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 = ({\n direction,\n isDisabled,\n size = \"sm\",\n ...props\n}: JumpButtonProps) => {\n const { t } = useTranslation();\n const styles = useMultiStyleConfig(\"MediaControllerButton\", {\n variant: \"jumpSkip\",\n size,\n });\n\n return (\n <Center\n as=\"button\"\n sx={styles.container}\n aria-label={\n direction === \"forward\" ? t(texts.forward) : t(texts.backward)\n }\n disabled={isDisabled}\n {...props}\n >\n {direction === \"forward\" ? (\n <Forward15MediaControllerFill30Icon sx={styles.icon} />\n ) : (\n <Backward15MediaControllerFill30Icon sx={styles.icon} />\n )}\n </Center>\n );\n};\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","import { BoxProps, Center, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { createTexts, useTranslation } from \"..\";\nimport {\n PauseMediaControllerFill24Icon,\n PlayMediaControllerFill24Icon,\n} from \"@vygruppen/spor-icon-react\";\n\ntype PlayPauseButtonProps = BoxProps & {\n onClick: () => void;\n \"aria-label\"?: string;\n isDisabled?: boolean;\n isPlaying: 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 `isPlaying`.\n *\n * ```tsx\n * <PlayPauseButton isPlaying={isPlaying} onClick={onPlaybackClick} />\n * ```\n */\nexport const PlayPauseButton = ({\n size = \"lg\",\n isPlaying,\n isDisabled,\n ...props\n}: PlayPauseButtonProps) => {\n const { t } = useTranslation();\n const styles = useMultiStyleConfig(\"MediaControllerButton\", {\n variant: \"play\",\n size,\n });\n\n return (\n <Center\n as=\"button\"\n sx={styles.container}\n aria-label={isPlaying ? t(texts.pause) : t(texts.play)}\n disabled={isDisabled}\n {...props}\n >\n {isPlaying ? (\n <PauseMediaControllerFill24Icon sx={styles.icon} />\n ) : (\n <PlayMediaControllerFill24Icon sx={styles.icon} />\n )}\n </Center>\n );\n};\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","import { BoxProps, Center, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { createTexts, useTranslation } from \"..\";\nimport {\n NextMediaControllerFill30Icon,\n PreviousMediaControllerFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\n\ntype SkipButtonProps = BoxProps & {\n onClick: () => void;\n \"aria-label\"?: string;\n isDisabled?: 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 = ({\n direction,\n isDisabled,\n size = \"sm\",\n ...props\n}: SkipButtonProps) => {\n const { t } = useTranslation();\n const styles = useMultiStyleConfig(\"MediaControllerButton\", {\n variant: \"jumpSkip\",\n size,\n });\n\n return (\n <Center\n as=\"button\"\n sx={styles.container}\n aria-label={direction === \"forward\" ? t(texts.next) : t(texts.previous)}\n disabled={isDisabled}\n {...props}\n >\n {direction === \"forward\" ? (\n <NextMediaControllerFill30Icon sx={styles.icon} />\n ) : (\n <PreviousMediaControllerFill30Icon sx={styles.icon} />\n )}\n </Center>\n );\n};\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","import {\n Box,\n BoxProps,\n Center,\n Drawer as ChakraDrawer,\n DrawerContent as ChakraDrawerContent,\n DrawerContentProps as ChakraDrawerContentProps,\n DrawerProps as ChakraDrawerProps,\n forwardRef,\n useModalContext,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { useSwipeable } from \"react-swipeable\";\nexport {\n DrawerBody,\n DrawerCloseButton,\n DrawerFooter,\n DrawerOverlay,\n} from \"@chakra-ui/react\";\nexport type { DrawerProps } from \"@chakra-ui/react\";\nexport { ModalHeader as DrawerHeader } from \"./ModalHeader\";\n\ntype DrawerProps = ChakraDrawerProps;\nexport const Drawer = (props: DrawerProps) => {\n return (\n <DrawerProvider placement={props.placement}>\n <ChakraDrawer {...props} />\n </DrawerProvider>\n );\n};\n\ntype DrawerContentProps = ChakraDrawerContentProps;\nexport const DrawerContent = forwardRef<DrawerContentProps, any>(\n ({ children, ...props }, ref) => {\n const placement = useDrawerContext();\n const { onClose } = useModalContext();\n const handlers = useSwipeable({\n onSwiped: (e) => {\n const shouldClose =\n (placement === \"bottom\" && e.dir === \"Down\") ||\n (placement === \"right\" && e.dir === \"Right\") ||\n (placement === \"left\" && e.dir === \"Left\") ||\n (placement === \"top\" && e.dir === \"Up\") ||\n (placement === \"end\" && e.dir === \"Right\") ||\n (placement === \"start\" && e.dir === \"Left\");\n if (shouldClose) {\n onClose();\n }\n },\n swipeDuration: 500,\n });\n\n const isTopOrBottom = placement === \"top\" || placement === \"bottom\";\n const widthConstraits = isTopOrBottom\n ? { width: [\"100%\", \"37.5rem\"], mx: \"auto\" }\n : {};\n return (\n <Box {...handlers}>\n <ChakraDrawerContent\n {...widthConstraits}\n borderTopRadius={placement === \"bottom\" ? \"md\" : \"none\"}\n borderBottomRadius={placement === \"top\" ? \"md\" : \"none\"}\n {...props}\n ref={ref}\n >\n <Box position=\"relative\">\n <Box maxHeight=\"100vh\" maxWidth=\"100vw\" overflow=\"auto\">\n {isTopOrBottom && <Notch />}\n\n <Box>{children}</Box>\n </Box>\n </Box>\n </ChakraDrawerContent>\n </Box>\n );\n },\n);\n\nconst Notch = forwardRef<BoxProps, any>((props, ref) => {\n const placement = useDrawerContext();\n return (\n <Box\n position=\"absolute\"\n left={0}\n right={0}\n top={placement === \"bottom\" ? 0 : undefined}\n bottom={placement === \"top\" ? 0 : undefined}\n zIndex=\"modal\"\n {...props}\n ref={ref}\n >\n <Center\n background={placement === \"bottom\" ? \"bottom\" : \"top\"}\n padding={2}\n borderRadius=\"md\"\n >\n <Box\n width=\"2.265rem\"\n height={1}\n backgroundColor=\"steel\"\n borderRadius=\"xs\"\n />\n </Center>\n </Box>\n );\n});\n\nconst DrawerContext = React.createContext<DrawerProps[\"placement\"]>(undefined);\ntype DrawerProviderProps = {\n children: React.ReactNode;\n placement: DrawerProps[\"placement\"];\n};\nconst DrawerProvider = (props: DrawerProviderProps) => (\n <DrawerContext.Provider value={props.placement}>\n {props.children}\n </DrawerContext.Provider>\n);\nconst useDrawerContext = () => {\n return React.useContext(DrawerContext);\n};\n","import {\n forwardRef,\n ModalHeader as ChakraModalHeader,\n ModalHeaderProps as ChakraModalHeaderProps,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type ModalHeaderProps = ChakraModalHeaderProps & {\n size?: \"sm\" | \"lg\";\n};\n\n/**\n * ModalHeader\n *\n * You can specify the size with either `size=\"sm\"` or `size=\"lg\"`.\n */\nexport const ModalHeader = forwardRef<ModalHeaderProps, \"header\">(\n ({ size, ...props }, ref) => {\n const styles = {\n fontSize:\n size === \"lg\"\n ? [\"mobile.lg\", \"desktop.lg\"]\n : [\"mobile.md\", \"desktop.md\"],\n textAlign:\n size === \"lg\"\n ? \"center\"\n : (\"left\" as ChakraModalHeaderProps[\"textAlign\"]),\n };\n return <ChakraModalHeader as={\"h1\"} {...props} ref={ref} {...styles} />;\n },\n);\n","import {\n Box,\n DrawerBody,\n DrawerContent,\n DrawerHeader,\n DrawerOverlay,\n Flex,\n useColorModeValue,\n useMediaQuery,\n useModalContext,\n} from \"@chakra-ui/react\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\nimport {\n ArrowLeftFill24Icon,\n ArrowLeftFill30Icon,\n CloseFill24Icon,\n CloseFill30Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React, { useEffect, useState } from \"react\";\nimport { Button, IconButton } from \"../button\";\nimport { createTexts, useTranslation } from \"../i18n\";\nimport { Drawer } from \"./Drawer\";\nimport { DrawerBodyProps } from \"./SimpleDrawer\";\n\ntype DrawerPlacement = \"top\" | \"right\" | \"bottom\" | \"left\";\n\ntype FullScreenDrawerProps = {\n /** The content inside the drawer */\n children: React.ReactNode;\n /** The title in the middle of the top menu */\n title?: String;\n /** Determines which side the drawer slides from */\n placement?: DrawerPlacement;\n /** A React component that will be placed to the left in the modal header */\n leftButton?: React.ReactNode;\n /** A React component that will be placed to the right in the modal header */\n rightButton?: React.ReactNode;\n /** Determines if the drawer is open or closed */\n isOpen: boolean;\n /** Function that will be called when the drawer closes */\n onClose: () => void;\n /** Props for drawer body */\n body?: DrawerBodyProps;\n};\n\nexport const FullScreenDrawer = ({\n children,\n title,\n placement = \"bottom\",\n leftButton = <DrawerBackButton />,\n rightButton = <DrawerCloseButton />,\n isOpen,\n onClose,\n body,\n}: FullScreenDrawerProps) => {\n const [isContentBoxScrolled, setContentBoxScrolled] = useState(false);\n\n const onContentScroll = (e: React.UIEvent<HTMLDivElement, UIEvent>) => {\n const target = e.target as HTMLDivElement;\n\n if (target.scrollTop <= 0) {\n setContentBoxScrolled(false);\n return;\n }\n setContentBoxScrolled(true);\n };\n\n useEffect(() => {\n setContentBoxScrolled(false);\n }, [isOpen]);\n\n return (\n <Drawer isOpen={isOpen} onClose={onClose} placement={placement} size=\"full\">\n <DrawerOverlay />\n <DrawerContent\n height=\"100vh\"\n backgroundSize=\"100% 285px, 100%\"\n backgroundPosition=\"top\"\n backgroundRepeat=\"no-repeat\"\n >\n <DrawerTopMenu\n isScrolled={isContentBoxScrolled}\n title={title}\n leftButton={leftButton}\n rightButton={rightButton}\n />\n <DrawerBody overflow=\"auto\" onScroll={onContentScroll} {...body}>\n {children}\n </DrawerBody>\n </DrawerContent>\n </Drawer>\n );\n};\n\ntype DrawerTopMenuProps = {\n /** Optional title */\n title?: String;\n leftButton?: React.ReactNode;\n rightButton?: React.ReactNode;\n /** Whether or not the context this menu is placed in is scrolled */\n isScrolled: boolean;\n};\n\nconst DrawerTopMenu = ({\n title,\n leftButton,\n rightButton,\n isScrolled,\n}: DrawerTopMenuProps) => {\n const backgroundColor = useColorModeValue(\n \"bg.default.light\",\n \"bg.default.dark\",\n );\n\n return (\n <Flex\n width=\"100%\"\n backgroundColor={backgroundColor}\n position=\"static\"\n paddingTop={[1.5, 2.5, 3, 3]}\n paddingBottom={[1.5, 2.5, 3, 3]}\n paddingLeft={[2, 3, 6, 9]}\n paddingRight={[2, 3, 6, 9]}\n transition=\"box-shadow 0.2s\"\n boxShadow={isScrolled ? \"md\" : undefined}\n >\n <Box flex=\"1\">\n <Box width=\"fit-content\">{leftButton}</Box>\n </Box>\n <DrawerHeader\n as=\"h2\"\n fontSize=\"md\"\n fontWeight=\"bold\"\n textAlign=\"center\"\n flex=\"2\"\n margin={0}\n padding={0}\n >\n {title}\n </DrawerHeader>\n <Box flex=\"1\">\n <Box width=\"fit-content\" marginLeft=\"auto\">\n {rightButton}\n </Box>\n </Box>\n </Flex>\n );\n};\n\nconst DrawerCloseButton = () => {\n const { onClose } = useModalContext();\n const { t } = useTranslation();\n\n const [isScreenSizeMinSm] = useMediaQuery(\n `(min-width: ${tokens.size.breakpoint.sm})`,\n );\n\n if (isScreenSizeMinSm) {\n return (\n <Button\n variant=\"ghost\"\n leftIcon={<CloseFill24Icon />}\n onClick={onClose}\n aria-label={t(texts.close)}\n width=\"fit-content\"\n >\n {t(texts.close)}\n </Button>\n );\n }\n\n return (\n <IconButton\n variant=\"ghost\"\n icon={<CloseFill30Icon />}\n onClick={onClose}\n aria-label={t(texts.close)}\n />\n );\n};\n\nconst DrawerBackButton = () => {\n const { onClose } = useModalContext();\n const { t } = useTranslation();\n\n const [isScreenSizeMinSm] = useMediaQuery(\n `(min-width: ${tokens.size.breakpoint.sm})`,\n );\n\n if (isScreenSizeMinSm) {\n return (\n <Button\n variant=\"ghost\"\n leftIcon={<ArrowLeftFill24Icon />}\n onClick={onClose}\n aria-label={t(texts.backAriaLabel)}\n width=\"fit-content\"\n >\n {t(texts.back)}\n </Button>\n );\n }\n\n return (\n <IconButton\n variant=\"ghost\"\n icon={<ArrowLeftFill30Icon />}\n onClick={onClose}\n aria-label={t(texts.close)}\n />\n );\n};\n\nconst texts = createTexts({\n close: {\n nb: \"Lukk\",\n nn: \"Lukk\",\n en: \"Close\",\n sv: \"Stäng\",\n },\n closeAriaLabel: {\n nb: \"Lukk vindu\",\n nn: \"Lukk vindauge\",\n en: \"Close window\",\n sv: \"Stäng fönster\",\n },\n back: {\n nb: \"Tilbake\",\n nn: \"Tilbake\",\n en: \"Back\",\n sv: \"Tillbaka\",\n },\n backAriaLabel: {\n nb: \"Gå tilbake\",\n nn: \"Gå tilbake\",\n en: \"Go back\",\n sv: \"Gå tillbaka\",\n },\n});\n","export {\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalOverlay,\n} from \"@chakra-ui/react\";\nexport type {\n ModalBodyProps,\n ModalContentProps,\n ModalFooterProps,\n ModalOverlayProps,\n ModalProps,\n} from \"@chakra-ui/react\";\n","import React from \"react\";\nimport {\n Drawer,\n DrawerBody,\n DrawerCloseButton,\n DrawerContent,\n DrawerHeader,\n DrawerOverlay,\n} from \"./Drawer\";\n\nexport type DrawerBodyProps = {\n id?: string;\n};\n\nexport type SimpleDrawerProps = {\n children: React.ReactNode;\n title?: React.ReactNode;\n placement: \"top\" | \"right\" | \"bottom\" | \"left\";\n isOpen: boolean;\n onClose: () => void;\n /** Props for drawer body */\n body?: DrawerBodyProps;\n};\n/** A very basic drawer component that's easy to use\n *\n * ```tsx\n * <SimpleDrawer placement=\"bottom\" isOpen={isOpen} onClose={handleClose}>\n * This is the drawer content\n * </SimpleDrawer>\n * ```\n *\n * For more advanced use cases, see the [Drawer](./Drawer.tsx) component.\n */\nexport const SimpleDrawer = ({\n placement,\n children,\n title,\n body,\n ...props\n}: SimpleDrawerProps) => {\n return (\n <Drawer placement={placement} {...props}>\n <DrawerOverlay />\n <DrawerContent>\n <DrawerCloseButton />\n {title && <DrawerHeader>{title}</DrawerHeader>}\n <DrawerBody {...body}>{children}</DrawerBody>\n </DrawerContent>\n </Drawer>\n );\n};\n","import {\n Box,\n DarkMode,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverBody,\n PopoverCloseButton,\n PopoverContent,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { Button, ButtonGroup, createTexts, useTranslation } from \"..\";\nimport { TooltipProps } from \"../tooltip\";\n\nexport type NudgeProps = {\n /**\n * The ISO-formatted date of when the Nudge was introduced.\n *\n * After this date has been surpassed by 30 days, the nudge will no longer be shown,\n * and an error will be logged in development mode.\n *\n * ```tsx\n * <Nudge introducedDate=\"2024-02-19\" {...otherProps} />\n * ```\n **/\n introducedDate: string;\n /**\n * The name of the nudge.\n * This will be used to check whether or not the nudge has been viewed.\n **/\n name: string;\n /**\n * The anchor of the nudge.\n *\n * The element that should be nudged toward.\n *\n * ```tsx\n * <Nudge content=\"This is a great new feature! Try it out.\">\n * <MyFeature />\n * </Nudge>\n * ```\n * */\n children: React.ReactNode;\n /**\n * The content of the nudge.\n */\n content: React.ReactNode;\n /**\n * Any actions you want to provide. Defaults to a close button and a \"Show me\" button.\n */\n actions?: React.ReactNode;\n} & Omit<\n TooltipProps,\n | \"name\"\n | \"triggerElement\"\n | \"children\"\n | \"withCloseButton\"\n | \"defaultIsOpen\"\n | \"size\"\n | \"borderRadius\"\n>;\n\nconst EXPIRATION_DELAY = 1000 * 60 * 60 * 24 * 30; // 30 days\n\n/** A nudge.\n *\n * A nudge is a way to hint of a new feature.\n *\n * You're required to set an `introducedDate` to the nudge, which is the timestamp of when the nudge was introduced. After 30 days, the nudge will no longer be shown, and an error will be logged in development mode.\n *\n * ```tsx\n * <Nudge\n * introducedDate=\"2024-02-19\"\n * name=\"my-nudge\"\n * content=\"Check out this enormous new feature!\"\n * >\n * <StaticCard variant=\"base\" padding={2} width=\"fit-content\">My new feature</StaticCard>\n * </Nudge>\n * ```\n */\nexport const Nudge = ({\n introducedDate,\n name,\n children,\n content,\n actions,\n ...props\n}: NudgeProps) => {\n const { t } = useTranslation();\n if (new Date(introducedDate).getTime() + EXPIRATION_DELAY < Date.now()) {\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `The nudge ${name} has been used for longer than 30 days. Please remove it from the codebase.\n \n This is a development only warning, and will not be shown in production.`,\n );\n }\n return null;\n }\n return (\n <Popover\n arrowSize={12}\n arrowShadowColor=\"none\"\n defaultIsOpen={true}\n {...props}\n >\n <PopoverAnchor>{children}</PopoverAnchor>\n <PopoverContent borderRadius=\"sm\">\n <DarkMode>\n <PopoverArrow />\n <PopoverCloseButton />\n <PopoverBody margin={1}>\n <Box marginRight={4}>{content}</Box>\n <Box marginTop={1.5}>\n {actions ?? (\n <ButtonGroup>\n <Button variant=\"tertiary\" size=\"xs\">\n {t(texts.close)}\n </Button>\n <Button variant=\"secondary\" size=\"xs\" fontWeight=\"bold\">\n {t(texts.showMe)}\n </Button>\n </ButtonGroup>\n )}\n </Box>\n </PopoverBody>\n </DarkMode>\n </PopoverContent>\n </Popover>\n );\n};\n\nconst texts = createTexts({\n close: {\n nb: \"Lukk\",\n nn: \"Lukk\",\n sv: \"Stäng\",\n en: \"Close\",\n },\n showMe: {\n nb: \"Vis meg\",\n nn: \"Vis meg\",\n sv: \"Visa mig\",\n en: \"Show me\",\n },\n});\n","import { Box, usePopoverContext } from \"@chakra-ui/react\";\nimport { ArrowRightFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React, { useState } from \"react\";\nimport {\n Button,\n Flex,\n Nudge,\n NudgeProps,\n ProgressIndicator,\n createTexts,\n useTranslation,\n} from \"..\";\n\nexport type WizardNudgeProps = Omit<NudgeProps, \"actions\" | \"content\"> & {\n /** Steps in the wizard. Each item is its own step. Should only be Step components */\n content: React.ReactNode[];\n /**\n * Where the nudge should be placed by default.\n *\n * Note - this is a suggestion, and may be overridden by space concerns.\n */\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n};\n/**\n * A nudge that displays its children one at a time, with a step indicator.\n *\n * ```tsx\n * <WizardNudge\n * content={[\"First step\", \"Second step\"]}\n * name=\"my-wizard-nudge\"\n * introducedDate=\"2024-02-19\"\n * >\n * <StaticCard width=\"fit-content\" padding={2}>\n * My new feature\n * </StaticCard>\n * </WizardNudge>\n * ```\n */\nexport const WizardNudge = ({\n children,\n name,\n onClose,\n content,\n ...props\n}: WizardNudgeProps) => {\n const [currentStep, setCurrentStep] = useState(1);\n const totalSteps = content.length;\n const isLastStep = totalSteps === currentStep;\n const onNext = () => setCurrentStep((prev) => prev + 1);\n\n return (\n <Nudge\n onClose={onClose}\n name={name}\n content={content[currentStep - 1]}\n actions={\n <Flex gap={3} alignItems=\"center\">\n <ProgressIndicator\n activeStep={currentStep}\n numberOfSteps={totalSteps}\n />\n <Box>\n <NextOrCloseButton isLastStep={isLastStep} onNext={onNext} />\n </Box>\n </Flex>\n }\n {...props}\n >\n {children}\n </Nudge>\n );\n};\n\ntype NextOrCloseButtonProps = {\n isLastStep: boolean;\n onNext: () => void;\n};\nconst NextOrCloseButton = ({ isLastStep, onNext }: NextOrCloseButtonProps) => {\n const { onClose } = usePopoverContext();\n const { t } = useTranslation();\n return (\n <Button\n variant=\"tertiary\"\n size=\"xs\"\n leftIcon={isLastStep ? undefined : <ArrowRightFill18Icon />}\n onClick={isLastStep ? onClose : onNext}\n width=\"fit-content\"\n >\n {t(isLastStep ? texts.finish : 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 finish: {\n nb: \"Fullfør\",\n nn: \"Fullfør\",\n sv: \"Fullför\",\n en: \"Finish\",\n },\n});\n","import React from \"react\";\nimport { Center, createTexts, useTranslation, Flex, TextLink } from \"..\";\nimport {\n ListItem,\n UnorderedList,\n useMultiStyleConfig,\n Link,\n} from \"@chakra-ui/react\";\nimport {\n DropdownLeftFill18Icon,\n DropdownRightFill18Icon,\n} from \"@vygruppen/spor-icon-react\";\n\ntype PaginationProps = {\n /** Specify the total amount of pages */\n totalPages: number;\n /** Specify the currently selected page */\n selectedPage: number;\n /** Callback for when a page is clicked */\n onPageChange: (selected: number) => void;\n};\n\n/**\n * A pagination component is used to navigate between multiple pages.\n *\n * You specify the total amount of pages and the currently selected page.\n *\n * ```tsx\n * <Pagination\n * totalPages={10}\n * selectedPage={3}\n * onPageChange={handlePageChange}\n * />\n * ```\n **/\n\nexport const Pagination = ({\n totalPages,\n selectedPage,\n onPageChange,\n}: PaginationProps) => {\n const { t } = useTranslation();\n\n const style = useMultiStyleConfig(\"Pagination\", { selectedPage });\n\n const hasPreviousPage = selectedPage > 1;\n const hasNextPage = selectedPage < totalPages;\n\n const renderPaginationButtons = () => {\n const displayPageNumbers = [];\n const maxVisiblePages = 8;\n if (totalPages <= maxVisiblePages) {\n displayPageNumbers.push(\n ...Array.from({ length: totalPages }, (_, i) => i + 1),\n );\n } else {\n if (selectedPage <= Math.floor(maxVisiblePages / 2) + 1) {\n // If selectedPage is near the beginning, display the first pages.\n displayPageNumbers.push(\n ...Array.from({ length: maxVisiblePages - 1 }, (_, i) => i + 1),\n );\n displayPageNumbers.push(\"...\");\n displayPageNumbers.push(totalPages);\n } else if (selectedPage >= totalPages - Math.floor(maxVisiblePages / 2)) {\n // If selectedPage is near the end, display the last pages.\n displayPageNumbers.push(1);\n displayPageNumbers.push(\"...\");\n displayPageNumbers.push(\n ...Array.from(\n { length: maxVisiblePages - 1 },\n (_, i) => totalPages - maxVisiblePages + 2 + i,\n ),\n );\n } else {\n // Display pages with \"...\" in the middle.\n displayPageNumbers.push(1);\n displayPageNumbers.push(\"...\");\n for (\n let i = selectedPage - Math.floor((maxVisiblePages - 3) / 2);\n i <= selectedPage + Math.floor((maxVisiblePages - 3) / 2);\n i++\n ) {\n displayPageNumbers.push(i);\n }\n displayPageNumbers.push(\"...\");\n displayPageNumbers.push(totalPages);\n }\n }\n return displayPageNumbers.map((pageNumber, index) =>\n pageNumber === \"...\" ? (\n <ListItem key={index} sx={style.listItem}>\n <Center>...</Center>\n </ListItem>\n ) : (\n <Link\n key={index}\n as={ListItem}\n onClick={() => {\n if (pageNumber !== \"...\") {\n onPageChange(+pageNumber);\n }\n }}\n padding={pageNumber === \"...\" ? 0 : undefined}\n sx={pageNumber === selectedPage ? style.activeButton : style.link}\n >\n {pageNumber}\n </Link>\n ),\n );\n };\n\n return (\n <Flex as=\"nav\" aria-label=\"pagination\">\n <UnorderedList\n display=\"flex\"\n listStyleType=\"none\"\n gap={[0, 1]}\n padding={0}\n margin={0}\n >\n <ListItem aria-label={t(texts.previousPage)}>\n <TextLink\n onClick={() => onPageChange(selectedPage - 1)}\n sx={hasPreviousPage ? style.link : style.disabled}\n >\n <DropdownLeftFill18Icon sx={style.icon} />\n </TextLink>\n </ListItem>\n {renderPaginationButtons()}\n <ListItem aria-label={t(texts.nextPage)}>\n <TextLink\n onClick={() => onPageChange(selectedPage + 1)}\n sx={hasNextPage ? style.link : style.disabled}\n >\n <DropdownRightFill18Icon sx={style.icon} />\n </TextLink>\n </ListItem>\n </UnorderedList>\n </Flex>\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});\n","import { useMultiStyleConfig } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { Box, createTexts, useTranslation } from \"..\";\nimport { ProgressDot } from \"./ProgressDot\";\n\ntype ProgressIndicatorProps = {\n numberOfSteps: number;\n activeStep: number;\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 */\nexport const ProgressIndicator = ({\n numberOfSteps,\n activeStep,\n}: ProgressIndicatorProps) => {\n const { t } = useTranslation();\n const style = useMultiStyleConfig(\"ProgressIndicator\");\n\n return (\n <Box\n __css={style.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 >\n <Box __css={style.container}>\n {Array.from({ length: numberOfSteps }, (_, i) => (\n <ProgressDot\n key={i}\n aria-value={i + 1}\n isActive={activeStep === i + 1}\n />\n ))}\n </Box>\n </Box>\n );\n};\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","import React from \"react\";\nimport { Box } from \"..\";\nimport { useMultiStyleConfig } from \"@chakra-ui/react\";\n\ntype ProgressDot = {\n isActive: boolean;\n};\n\nexport const ProgressDot = ({ isActive }: ProgressDot) => {\n const style = useMultiStyleConfig(\"ProgressIndicator\");\n return (\n <Box\n as=\"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 <Box as=\"circle\" cx=\"50\" cy=\"50\" r=\"50\" />\n </Box>\n );\n};\n","import { ChakraProvider, ChakraProviderProps } from \"@chakra-ui/react\";\nimport { Global } from \"@emotion/react\";\nimport deepmerge from \"deepmerge\";\nimport React from \"react\";\nimport { Language, LanguageProvider } from \"..\";\nimport { Brand, brandTheme, theme as defaultSporTheme, fontFaces } from \"../\";\n\ntype SporProviderProps = ChakraProviderProps & {\n language?: Language;\n brand?: Brand;\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\";\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 theme = defaultSporTheme,\n language = Language.NorwegianBokmal,\n brand = Brand.VyDigital,\n children,\n ...props\n}: SporProviderProps) => {\n const brandCustomizations = brandTheme[brand] ?? {};\n\n const extendedTheme = deepmerge(theme, brandCustomizations);\n\n return (\n <LanguageProvider language={language}>\n <ChakraProvider theme={extendedTheme} {...props}>\n <Global styles={fontFaces} />\n {children}\n </ChakraProvider>\n </LanguageProvider>\n );\n};\n","import { Flex, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport { ArrowLeftFill24Icon } from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { StepperStep } from \".\";\nimport { Box, IconButton, Text, createTexts, useTranslation } from \"..\";\nimport { StepperProvider } from \"./StepperContext\";\n\ntype StepperProps = {\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 /**\n * Heading shown on smaller devices\n * @deprecated Use `heading` instead\n */\n title?: string;\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 * \"base\" has a transparent background,\n * while \"accent\" has a slight accent color */\n variant: \"base\" | \"accent\";\n /** Disables all clicks */\n isDisabled?: 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 **/\nexport const Stepper = ({\n onClick = () => {},\n onBackButtonClick,\n steps,\n activeStep: activeStepAsStringOrNumber,\n title,\n heading,\n headingLevel,\n variant,\n isDisabled,\n}: StepperProps) => {\n const style = useMultiStyleConfig(\"Stepper\", { variant });\n const numberOfSteps = steps.length;\n const activeStep = Number(activeStepAsStringOrNumber);\n const { t } = useTranslation();\n const hideBackButtonOnFirstStep = activeStep === 1 && !onBackButtonClick;\n const shownHeading = heading || title;\n return (\n <Box sx={style.root}>\n <StepperProvider\n onClick={onClick}\n activeStep={activeStep}\n variant={variant}\n numberOfSteps={numberOfSteps}\n >\n <Box sx={style.container}>\n <Box sx={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 {shownHeading && (\n <Text flex={1} variant=\"sm\" as={headingLevel} sx={style.title}>\n {shownHeading}\n </Text>\n )}\n <Box sx={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 isDisabled={isDisabled}\n >\n {step}\n </StepperStep>\n ))}\n </Flex>\n </Box>\n </StepperProvider>\n </Box>\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","import 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 = \"base\" | \"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","import { useColorModeValue, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport { DropdownRightFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { Box, Button, Text } from \"..\";\nimport { useStepper } from \"./StepperContext\";\n\ntype StepperStepProps = {\n children: React.ReactNode;\n stepNumber: number;\n variant: \"base\" | \"accent\";\n isDisabled?: boolean;\n};\nexport const StepperStep = ({\n children,\n stepNumber,\n variant,\n isDisabled: isDisabledOverride,\n}: StepperStepProps) => {\n const { activeStep, onClick } = useStepper();\n const state = getState(stepNumber, activeStep);\n const style = useMultiStyleConfig(\"Stepper\", {\n state,\n variant,\n });\n const disabledTextColor = useColorModeValue(\n \"blackAlpha.400\",\n \"whiteAlpha.400\",\n );\n const iconColor = useColorModeValue(\"blackAlpha.200\", \"whiteAlpha.200\");\n\n const isDisabled =\n (state !== \"active\" && isDisabledOverride) || state === \"disabled\";\n\n return (\n <Box sx={style.stepContainer}>\n {stepNumber > 1 && (\n <DropdownRightFill18Icon\n marginX={5}\n display={[\"none\", null, \"block\"]}\n color={iconColor}\n />\n )}\n {isDisabled ? (\n <Text\n variant=\"xs\"\n fontSize=\"16px\"\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 sx={style.stepButton}\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","export { Tab, TabList, TabPanel, TabPanels } from \"@chakra-ui/react\";\nexport type {\n TabListProps,\n TabPanelProps,\n TabPanelsProps,\n TabProps,\n} from \"@chakra-ui/react\";\nexport { Tabs } from \"./Tabs\";\nexport type { TabsProps } from \"./Tabs\";\n","import {\n Tabs as ChakraTabs,\n TabsProps as ChakraTabsProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport type TabsProps = Exclude<\n ChakraTabsProps,\n \"colorScheme\" | \"variant\" | \"orientation\" | \"size\"\n> & {\n /** Defaults to `base` */\n variant: \"base\" | \"accent\";\n /** Defaults to `sm` */\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n};\nexport const Tabs = forwardRef<TabsProps, \"div\">((props, ref) => {\n return <ChakraTabs {...props} ref={ref} />;\n});\n","export {\n TableCaption,\n Tbody,\n Td,\n Tfoot,\n Th,\n Thead,\n Tr,\n} from \"@chakra-ui/react\";\nexport type {\n TableBodyProps,\n TableCaptionProps,\n TableCellProps,\n TableColumnHeaderProps,\n TableFooterProps,\n TableHeadProps,\n TableRowProps,\n} from \"@chakra-ui/react\";\nexport * from \"./Table\";\n","import {\n Box,\n forwardRef,\n Table as ChakraTable,\n TableProps as ChakraTableProps,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type TableProps = Omit<ChakraTableProps, \"variant\" | \"colorScheme\"> & {\n variant?: \"simple\" | \"outline\";\n colorScheme?: \"grey\" | \"green\";\n};\n/**\n * These components are used the same way as in Chakra UI. Please refer to [their documentation](https://chakra-ui.com/docs/data-display/table).\n *\n * The `Table` component has support for two different variants - `simple` and `outline`. The `simple` variant has basic lines between rows, while the `outline` variant has borders for each cell, plus a hover effect per row.\n *\n * You can also specify a `grey` or `green` `colorScheme` 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=\"outlined\" size=\"lg\">\n * <Thead>\n * ...\n * </Thead>\n * ...\n * </Table>\n * ```\n */\nexport const Table = forwardRef<TableProps, \"table\">((props, ref) => {\n const { variant, size, colorScheme, children, ...rest } = props;\n return (\n <Box {...rest} {...getStyleProps(props)}>\n <Box overflowX=\"auto\" role=\"region\">\n <ChakraTable\n variant={variant}\n size={size}\n colorScheme={colorScheme}\n ref={ref}\n >\n {children}\n </ChakraTable>\n </Box>\n </Box>\n );\n});\n\nfunction getStyleProps(props: TableProps) {\n return props.variant === \"outline\"\n ? {\n border: \"1px solid\",\n borderColor: props.colorScheme === \"grey\" ? \"silver\" : \"blackAlpha.200\",\n overflow: \"hidden\",\n borderRadius: \"md\",\n }\n : {};\n}\n","import { theme as defaultTheme } from \"@chakra-ui/theme\";\nimport tokens from \"@vygruppen/spor-design-tokens\";\nimport * as components from \"./components\";\nimport * as foundations from \"./foundations\";\n\nexport enum Brand {\n VyDigital = \"VyDigital\",\n VyUtvikling = \"VyUtvikling\",\n CargoNet = \"CargoNet\",\n}\n\nexport const theme = {\n ...defaultTheme,\n ...foundations,\n components: {\n ...defaultTheme.components,\n ...components,\n },\n};\n\nexport const brandTheme = {\n [Brand.VyDigital]: {},\n [Brand.VyUtvikling]: {\n colors: {\n bg: {\n default: {\n dark: foundations.colors.darkGrey,\n },\n },\n surface: {\n default: {\n dark: foundations.colors.darkGrey,\n },\n },\n },\n },\n [Brand.CargoNet]: {\n colors: tokens.color.cargonet as any,\n },\n};\n\nexport { fontFaces } from \"./font-faces\";\n","export { default as Accordion } from \"./accordion\";\nexport { default as Alert } from \"./alert\";\nexport { default as AlertExpandable } from \"./alert-expandable\";\nexport { default as AlertService } from \"./alert-service\";\nexport { default as Badge } from \"./badge\";\nexport { default as Breadcrumb } from \"./breadcrumb\";\nexport { default as Button } from \"./button\";\nexport { default as CardSelect } from \"./card-select\";\nexport { default as Checkbox } from \"./checkbox\";\nexport { default as ChoiceChip } from \"./choice-chip\";\nexport { default as CloseButton } from \"./close-button\";\nexport { default as Code } from \"./code\";\nexport { default as Datepicker } from \"./datepicker\";\nexport { default as Divider } from \"./divider\";\nexport { default as Drawer } from \"./drawer\";\nexport { default as FloatingActionButton } from \"./fab\";\nexport { default as Form } from \"./form\";\nexport { default as FormLabel } from \"./form-label\";\nexport { default as InfoSelect } from \"./info-select\";\nexport { default as InfoTag } from \"./info-tag\";\nexport { default as Input } from \"./input\";\nexport { default as LineIcon } from \"./line-icon\";\nexport { default as Link } from \"./link\";\nexport { default as List } from \"./list\";\nexport { default as ListBox } from \"./listbox\";\nexport { default as MediaControllerButton } from \"./media-controller-button\";\nexport { default as Modal } from \"./modal\";\nexport { default as NumericStepper } from \"./numeric-stepper\";\nexport { default as Pagination } from \"./pagination\";\nexport { default as Popover } from \"./popover\";\nexport { default as ProgressBar } from \"./progress-bar\";\nexport { default as ProgressIndicator } from \"./progress-indicator\";\nexport { default as RadioCard } from \"./radio-card\";\nexport { default as Radio } from \"./radio\";\nexport { default as Select } from \"./select\";\nexport { default as Skeleton } from \"./skeleton\";\nexport { default as Stepper } from \"./stepper\";\nexport { default as Switch } from \"./switch\";\nexport { default as Table } from \"./table\";\nexport { default as Tabs } from \"./tabs\";\nexport { default as Textarea } from \"./textarea\";\nexport { default as Toast } from \"./toast\";\nexport { default as StaticCard } from \"./static-card\";\nexport { default as PressableCard } from \"./pressable-card\";\nexport { default as TravelTag } from \"./travel-tag\";\n","import { accordionAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { floatingBackground, floatingBorder } from \"../utils/floating-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { ghostBackground } from \"../utils/ghost-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n borderRadius: \"sm\",\n },\n button: {\n transitionProperty:\n \"background-color, color, border-radius, box-shadow, opacity\",\n transitionDuration: \"fast\",\n borderRadius: \"sm\",\n display: \"flex\",\n justifyContent: \"space-between\",\n ...baseText(\"default\", props),\n textAlign: \"left\",\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 ...focusVisibleStyles(props),\n _disabled: {\n pointerEvents: \"none\",\n opacity: 0.4,\n },\n },\n panel: {\n paddingY: 2,\n paddingX: [2, null, 3],\n borderBottomRadius: \"sm\",\n fontSize: [\"mobile.sm\", null, \"desktop.sm\"],\n },\n icon: {\n fontSize: \"1.25em\",\n },\n }),\n variants: {\n ghost: (props) => ({\n button: {\n _hover: {\n ...ghostBackground(\"hover\", props),\n },\n _active: {\n ...ghostBackground(\"active\", props),\n },\n },\n }),\n base: (props) => ({\n container: {\n ...baseBorder(\"default\", props),\n },\n button: {\n _expanded: {\n borderBottomRadius: \"none\",\n },\n _hover: {\n ...baseBorder(\"hover\", props),\n outlineOffset: 0,\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"default\", props),\n },\n },\n }),\n floating: (props) => ({\n container: {\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n boxShadow: \"sm\",\n },\n button: {\n _expanded: {\n borderBottomRadius: \"none\",\n },\n _hover: {\n ...floatingBackground(\"hover\", props),\n ...floatingBorder(\"hover\", props),\n outlineOffset: 1,\n },\n _active: {\n ...ghostBackground(\"active\", props),\n ...floatingBorder(\"default\", props),\n },\n },\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { mode, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { brandBackground } from \"./brand-utils\";\nimport { focusVisibleStyles } from \"./focus-utils\";\nimport { surface } from \"./surface-utils\";\nimport { State, Subset } from \"./types\";\n\ntype BaseBackgroundState = Subset<\n State,\n \"default\" | \"active\" | \"selected\" | \"hover\" | \"disabled\"\n>;\nexport function baseBackground(\n state: BaseBackgroundState,\n props: StyleFunctionProps,\n) {\n switch (state) {\n case \"active\":\n return {\n backgroundColor: mode(\n \"base.surface.active.light\",\n \"base.surface.active.dark\",\n )(props),\n };\n case \"selected\":\n return brandBackground(\"default\", props);\n\n case \"disabled\":\n return surface(\"disabled\", props);\n case \"hover\":\n default:\n return { backgroundColor: \"transparent\" };\n }\n}\n\ntype BorderState = Subset<\n State,\n \"hover\" | \"focus\" | \"active\" | \"disabled\" | \"selected\" | \"invalid\" | \"default\"\n>;\n\nexport function baseBorder(state: BorderState, props: StyleFunctionProps) {\n switch (state) {\n case \"hover\":\n return {\n outline: \"2px solid\",\n outlineColor: mode(\n \"base.outline.hover.light\",\n \"base.outline.hover.dark\",\n )(props),\n };\n case \"focus\": {\n return focusVisibleStyles(props)._focusVisible;\n }\n case \"disabled\": {\n return {\n outline: \"1px solid\",\n outlineColor: mode(\n \"outline.disabled.light\",\n \"outline.disabled.dark\",\n )(props),\n };\n }\n case \"active\": {\n return {\n outline: \"1px solid\",\n outlineColor: mode(\n \"base.outline.default.light\",\n \"base.outline.default.dark\",\n )(props),\n };\n }\n case \"invalid\": {\n return {\n outline: \"2px solid\",\n outlineColor: mode(\"outline.error.light\", \"outline.error.dark\")(props),\n };\n }\n case \"default\":\n default:\n return {\n outline: \"1px solid\",\n outlineColor: mode(\n \"base.outline.default.light\",\n \"base.outline.default.dark\",\n )(props),\n };\n }\n}\n\ntype BaseTextState = Subset<State, \"default\" | \"selected\" | \"disabled\">;\nexport function baseText(state: BaseTextState, props: StyleFunctionProps) {\n switch (state) {\n case \"selected\":\n return {\n color: mode(\"brand.text.light\", \"brand.text.dark\")(props),\n };\n case \"disabled\":\n return {\n color: mode(\"text.disabled.light\", \"text.disabled.dark\")(props),\n };\n default:\n return {\n color: mode(\"base.text.light\", \"base.text.dark\")(props),\n };\n }\n}\n","import { mode, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { State, Subset } from \"./types\";\n\ntype BrandBackgroundState = Subset<State, \"default\" | \"hover\" | \"active\">;\n\nexport function brandBackground(\n state: BrandBackgroundState,\n props: StyleFunctionProps,\n) {\n switch (state) {\n case \"active\":\n return {\n backgroundColor: mode(\n \"brand.surface.active.light\",\n \"brand.surface.active.dark\",\n )(props),\n };\n case \"hover\":\n return {\n backgroundColor: mode(\n \"brand.surface.hover.light\",\n \"brand.surface.hover.dark\",\n )(props),\n };\n case \"default\":\n default:\n return {\n backgroundColor: mode(\n \"brand.surface.default.light\",\n \"brand.surface.default.dark\",\n )(props),\n };\n }\n}\n\ntype BrandTextState = Subset<State, \"hover\" | \"active\" | \"default\">;\n\nexport function brandText(state: BrandTextState, props: StyleFunctionProps) {\n return {\n color: mode(\"brand.text.light\", \"brand.text.dark\")(props),\n };\n}\n","import { mode, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\n\nexport const focusVisibleStyles = (props: StyleFunctionProps) => ({\n _focusVisible: {\n outlineWidth: \"2px\",\n outlineColor: mode(\"outline.focus.light\", \"outline.focus.dark\")(props),\n outlineStyle: \"solid\",\n outlineOffset: \"1px\",\n },\n});\n","import { mode } from \"@chakra-ui/theme-tools\";\n\ntype Surface = \"default\" | \"secondary\" | \"tertiary\" | \"disabled\";\nexport const surface = (surface: Surface, props: any) => {\n switch (surface) {\n case \"default\":\n return {\n backgroundColor: mode(\n \"surface.default.light\",\n \"surface.default.dark\",\n )(props),\n };\n case \"secondary\":\n return {\n backgroundColor: mode(\n \"surface.secondary.light\",\n \"surface.secondary.dark\",\n )(props),\n };\n case \"tertiary\":\n return {\n backgroundColor: mode(\n \"surface.tertiary.light\",\n \"surface.tertiary.dark\",\n )(props),\n };\n case \"disabled\":\n return {\n backgroundColor: mode(\n \"surface.disabled.light\",\n \"surface.disabled.dark\",\n )(props),\n };\n }\n};\n","import { mode, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { brandBackground } from \"./brand-utils\";\nimport { State, Subset } from \"./types\";\n\ntype FloatingBackgroundState = Subset<\n State,\n \"default\" | \"hover\" | \"active\" | \"selected\"\n>;\n\nexport function floatingBackground(\n state: FloatingBackgroundState,\n props: StyleFunctionProps,\n) {\n switch (state) {\n case \"selected\":\n return brandBackground(\"default\", props);\n case \"active\":\n return {\n backgroundColor: mode(\n \"floating.surface.active.light\",\n \"floating.surface.active.dark\",\n )(props),\n };\n case \"hover\":\n return {\n backgroundColor: mode(\n \"floating.surface.hover.light\",\n `color-mix(in srgb, white 10%, var(--spor-colors-bg-default-dark))`,\n )(props),\n };\n case \"default\":\n return {\n backgroundColor: mode(\n \"white\",\n `color-mix(in srgb, white 10%, var(--spor-colors-bg-default-dark))`,\n )(props),\n };\n }\n}\n\ntype FloatingBorderState = Subset<\n State,\n \"default\" | \"hover\" | \"active\" | \"selected\"\n>;\nexport function floatingBorder(\n state: FloatingBorderState,\n props: StyleFunctionProps,\n) {\n switch (state) {\n case \"hover\":\n return {\n outline: \"1px solid\",\n outlineColor: mode(\n \"floating.outline.hover.light\",\n \"floating.outline.hover.dark\",\n )(props),\n };\n case \"selected\":\n return {\n outline: \"1px solid\",\n outlineColor: mode(\"outline.focus.light\", \"outline.focus.dark\")(props),\n };\n case \"active\":\n return {\n outline: \"1px solid\",\n outlineColor: mode(\n \"floating.outline.active.light\",\n \"floating.outline.active.dark\",\n )(props),\n };\n default:\n return {\n outline: \"1px solid\",\n outlineColor: mode(\n \"floating.outline.default.light\",\n \"floating.outline.default.dark\",\n )(props),\n };\n }\n}\n","import { mode, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { State, Subset } from \"./types\";\nimport { fontWeights } from \"../foundations\";\n\ntype GhostBackgroundState = Subset<\n State,\n \"default\" | \"hover\" | \"active\" | \"selected\"\n>;\n\n/** 👻👻👻👻👻👻👻👻👻👻👻👻👻👻 */\nexport function ghostBackground(\n state: GhostBackgroundState,\n props: StyleFunctionProps,\n) {\n switch (state) {\n case \"hover\": {\n return {\n backgroundColor: mode(\n \"ghost.surface.hover.light\",\n \"ghost.surface.hover.dark\",\n )(props),\n };\n }\n case \"active\":\n return {\n backgroundColor: mode(\n \"ghost.surface.active.light\",\n \"ghost.surface.active.dark\",\n )(props),\n };\n case \"selected\": {\n return {\n backgroundColor: mode(\n \"ghost.surface.hover.light\",\n \"ghost.surface.hover.dark\",\n )(props),\n };\n }\n case \"default\":\n return {\n backgroundColor: \"transparent\",\n };\n }\n}\n\ntype GhostTextState = Subset<State, \"default\" | \"selected\">;\n\nexport function ghostText(state: GhostTextState, props: StyleFunctionProps) {\n switch (state) {\n case \"selected\":\n return {\n color: mode(\"ghost.text.light\", \"ghost.text.dark\")(props),\n };\n default:\n return {\n color: mode(\"ghost.text.light\", \"ghost.text.dark\")(props),\n };\n }\n}\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\n\nconst parts = anatomy(\"alert\").parts(\"container\", \"icon\", \"closeButton\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: {\n container: {\n borderRadius: \"sm\",\n color: \"darkGrey\",\n paddingX: 3,\n paddingY: 2,\n display: \"flex\",\n position: \"relative\",\n textStyle: \"sm\",\n },\n icon: {\n marginRight: 1,\n },\n closeButton: {\n position: \"absolute\",\n top: 1,\n right: 1,\n color: \"darkGrey\",\n },\n },\n variants: {\n success: {\n container: {\n backgroundColor: \"seaMist\",\n },\n },\n info: {\n container: {\n backgroundColor: \"lightBlue\",\n },\n },\n warning: {\n container: {\n backgroundColor: \"blonde\",\n },\n },\n error: {\n container: {\n backgroundColor: \"lightRed\",\n },\n },\n \"alt-transport\": {\n container: {\n backgroundColor: \"banana\",\n },\n },\n \"global-deviation\": {\n container: {\n backgroundColor: \"blonde\",\n },\n },\n service: {\n container: {\n backgroundColor: \"darkTeal\",\n color: \"white\",\n },\n },\n },\n defaultProps: {\n variant: \"info\",\n },\n});\n\nexport default config;\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\n\nconst parts = anatomy(\"alertExpandable\").parts(\"container\", \"accordion\");\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: {\n container: {\n paddingX: 3,\n paddingY: 2,\n fontSize: \"inherit\",\n transitionProperty: \"outline, border-radius\",\n transitionDuration: \"fast\",\n _expanded: {\n borderBottomRadius: \"none\",\n },\n _hover: {\n outline: \"2px solid\",\n },\n },\n },\n variants: {\n info: {\n accordion: {\n outlineColor: \"cloudy\",\n },\n container: {\n _hover: {\n backgroundColor: \"cloudy\",\n outlineColor: \"sky\",\n },\n _active: {\n backgroundColor: \"icyBlue\",\n },\n _focus: {\n outlineColor: \"greenHaze\",\n },\n },\n },\n success: {\n accordion: {\n outlineColor: \"coralGreen\",\n },\n container: {\n _hover: {\n backgroundColor: \"coralGreen\",\n outlineColor: \"blueGreen\",\n },\n _active: {\n backgroundColor: \"mint\",\n },\n _focus: {\n outlineColor: \"greenHaze\",\n },\n },\n },\n warning: {\n accordion: {\n outlineColor: \"primrose\",\n },\n container: {\n _hover: {\n backgroundColor: \"primrose\",\n outlineColor: \"banana\",\n },\n _focus: {\n outlineColor: \"greenHaze\",\n },\n _active: {\n backgroundColor: \"cornSilk\",\n },\n },\n },\n \"alt-transport\": {\n accordion: {\n outlineColor: \"burntYellow\",\n },\n container: {\n _hover: {\n backgroundColor: \"burntYellow\",\n outlineColor: \"golden\",\n },\n _focus: {\n outlineColor: \"greenHaze\",\n },\n _active: {\n backgroundColor: \"sunshine\",\n },\n },\n },\n error: {\n accordion: {\n outlineColor: \"salmon\",\n },\n container: {\n _hover: {\n backgroundColor: \"salmon\",\n outlineColor: \"apricot\",\n },\n _active: {\n backgroundColor: \"pink\",\n },\n _focus: {\n outlineColor: \"greenHaze\",\n },\n },\n },\n service: {\n container: {\n _hover: {\n outlineColor: \"blueGreen\",\n },\n _active: {\n backgroundColor: \"pine\",\n },\n },\n },\n },\n defaultProps: {\n variant: \"info\",\n },\n});\n\nexport default config;\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\n\nconst parts = anatomy(\"alertService\").parts(\n \"container\",\n \"outerBox\",\n \"notificationText\",\n \"serviceMessageContent\",\n);\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: {\n container: {\n paddingX: 0,\n paddingY: 2,\n fontSize: \"inherit\",\n transitionProperty: \"outline, border-radius\",\n transitionDuration: \"fast\",\n borderTopRadius: \"none\",\n borderBottomRadius: \"md\",\n _hover: {\n outline: \"2px solid\",\n },\n },\n outerBox: {\n outline: \"1px solid\",\n borderBottomRadius: \"md\",\n borderTopRadius: \"none\",\n width: \"100%\",\n },\n notificationText: {\n fontWeight: \"400\",\n fontSize: \"1rem\",\n pr: \"0.375rem\",\n },\n serviceMessageContent: {\n paddingX: \"0.75rem\",\n paddingTop: \"0.375rem\",\n paddingBottom: \"0.9375rem\",\n },\n },\n variants: {\n \"global-deviation\": {\n container: {\n _hover: {\n backgroundColor: \"teal.600\",\n outlineColor: \"teal.600\",\n },\n _focus: {\n outlineColor: \"green.500\",\n },\n _active: {\n backgroundColor: \"teal.400\",\n outlineColor: \"pine\",\n },\n color: \"white\",\n },\n outerBox: {\n outlineColor: \"blueGreen\",\n backgroundColor: \"darkTeal\",\n },\n notificationText: {\n color: \"white\",\n },\n serviceMessageContent: {\n color: \"white\",\n },\n },\n service: {\n container: {\n _hover: {\n backgroundColor: \"teal.600\",\n outlineColor: \"teal.600\",\n },\n _focus: {\n outlineColor: \"green.500\",\n },\n _active: {\n backgroundColor: \"teal.400\",\n outlineColor: \"pine\",\n },\n color: \"white\",\n },\n outerBox: {\n outlineColor: \"blueGreen\",\n backgroundColor: \"darkTeal\",\n },\n notificationText: {\n color: \"white\",\n },\n serviceMessageContent: {\n color: \"white\",\n },\n },\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\n\nconst config = defineStyleConfig({\n baseStyle: ({ colorScheme }) => ({\n borderStyle: \"solid\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n borderRadius: \"xl\",\n fontWeight: \"bold\",\n paddingLeft: [2, 3],\n paddingRight: [2, 3],\n minHeight: [4, 5],\n ...getColorScheme(colorScheme as ColorScheme),\n }),\n variants: {\n solid: {\n borderWidth: 0,\n },\n outline: {\n borderWidth: 1,\n },\n },\n defaultProps: {\n variant: \"solid\",\n colorScheme: \"grey\",\n },\n});\n\nexport default config;\n\nfunction getColorScheme(colorScheme: ColorScheme) {\n let styles = colorCombinations[colorScheme];\n if (!styles && process.env.NODE_ENV === \"development\") {\n console.warn(`Invalid color scheme ${colorScheme} provided.`);\n styles = colorCombinations.grey;\n }\n return styles;\n}\n\ntype ColorScheme =\n | \"yellow\"\n | \"light-yellow\"\n | \"red\"\n | \"light-green\"\n | \"dark-green\"\n | \"orange\"\n | \"light-blue\"\n | \"dark-blue\"\n | \"grey\"\n | \"white\";\ntype ColorSpec = {\n backgroundColor: string;\n color: string;\n borderColor?: string;\n};\nconst colorCombinations: Record<ColorScheme, ColorSpec> = {\n yellow: {\n backgroundColor: \"banana\",\n borderColor: \"darkGrey\",\n color: \"darkGrey\",\n },\n \"light-yellow\": {\n backgroundColor: \"blonde\",\n borderColor: \"golden\",\n color: \"darkGrey\",\n },\n red: {\n backgroundColor: \"lightRed\",\n borderColor: \"brightRed\",\n color: \"darkGrey\",\n },\n \"light-green\": {\n backgroundColor: \"seaMist\",\n borderColor: \"darkTeal\",\n color: \"darkTeal\",\n },\n \"dark-green\": {\n backgroundColor: \"celadon\",\n borderColor: \"blueGreen\",\n color: \"white\",\n },\n orange: {\n backgroundColor: \"champagne\",\n borderColor: \"pumpkin\",\n color: \"darkGrey\",\n },\n \"light-blue\": {\n backgroundColor: \"lightBlue\",\n borderColor: \"ocean\",\n color: \"darkBlue\",\n },\n \"dark-blue\": {\n backgroundColor: \"darkBlue\",\n borderColor: \"sky\",\n color: \"white\",\n },\n grey: {\n backgroundColor: \"platinum\",\n borderColor: \"darkGrey\",\n color: \"darkGrey\",\n },\n white: {\n backgroundColor: \"white\",\n borderColor: \"silver\",\n color: \"darkGrey\",\n },\n};\n","import { breadcrumbAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\nimport { baseBackground, baseBorder } from \"../utils/base-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { ghostBackground } from \"../utils/ghost-utils\";\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys);\n\nexport default defineMultiStyleConfig({\n baseStyle: definePartsStyle((props) => ({\n link: {\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n transitionTimingFunction: \"ease-out\",\n color: \"inherit\",\n textDecoration: \"none\",\n textStyle: \"xs\",\n paddingX: 0.5,\n borderRadius: \"xs\",\n \"&:not([aria-current=page])\": {\n cursor: \"pointer\",\n ...focusVisibleStyles(props),\n },\n },\n list: {\n flexWrap: \"wrap\",\n alignItems: \"flex-start\",\n },\n })),\n variants: {\n base: (props) => ({\n link: {\n \"&:not([aria-current=page])\": {\n _hover: {\n ...baseBorder(\"default\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n },\n },\n },\n }),\n ghost: (props) => ({\n link: {\n \"&:not([aria-current=page])\": {\n _hover: {\n ...ghostBackground(\"hover\", props),\n },\n _active: {\n ...ghostBackground(\"active\", props),\n },\n },\n },\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\n","import { defineStyleConfig } from \"@chakra-ui/react\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { floatingBackground, floatingBorder } from \"../utils/floating-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { ghostBackground } from \"../utils/ghost-utils\";\nimport { surface } from \"../utils/surface-utils\";\nimport { accentBackground, accentText } from \"../utils/accent-utils\";\n\nconst config = defineStyleConfig({\n baseStyle: (props) => ({\n border: 0,\n borderRadius: \"xl\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n textWrap: \"wrap\",\n paddingX: 3,\n paddingY: 1,\n ...focusVisibleStyles(props),\n _disabled: {\n cursor: \"not-allowed\",\n pointerEvents: \"none\",\n boxShadow: \"none\",\n ...surface(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n }),\n variants: {\n primary: (props) => ({\n ...brandBackground(\"default\", props),\n ...brandText(\"default\", props),\n _hover: {\n ...brandBackground(\"hover\", props),\n },\n _active: {\n ...brandBackground(\"active\", props),\n },\n }),\n secondary: (props) => ({\n ...accentBackground(\"default\", props),\n ...accentText(\"default\", props),\n _hover: {\n ...accentBackground(\"hover\", props),\n },\n _active: {\n ...accentBackground(\"active\", props),\n },\n }),\n tertiary: (props) => ({\n ...baseBackground(\"default\", props),\n ...baseText(\"default\", props),\n ...baseBorder(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBorder(\"default\", props),\n ...baseBackground(\"active\", props),\n },\n }),\n ghost: (props) => ({\n ...ghostBackground(\"default\", props),\n ...baseText(\"default\", props),\n _hover: {\n ...ghostBackground(\"hover\", props),\n _disabled: {\n ...baseText(\"disabled\", props),\n },\n },\n _active: {\n ...ghostBackground(\"active\", props),\n },\n }),\n floating: (props) => ({\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n boxShadow: \"sm\",\n _hover: {\n ...floatingBackground(\"hover\", props),\n ...floatingBorder(\"hover\", props),\n boxShadow: \"md\",\n },\n _active: {\n ...floatingBackground(\"active\", props),\n boxShadow: \"sm\",\n },\n }),\n },\n sizes: {\n lg: {\n minHeight: 8,\n minWidth: 8,\n fontSize: \"sm\",\n fontWeight: \"bold\",\n },\n md: {\n minHeight: 7,\n minWidth: 7,\n fontSize: \"sm\",\n fontWeight: \"bold\",\n },\n sm: {\n minHeight: 6,\n minWidth: 6,\n fontSize: \"xs\",\n fontWeight: \"normal\",\n },\n xs: {\n minHeight: 5,\n minWidth: 5,\n paddingY: 0.5,\n fontSize: \"xs\",\n fontWeight: \"normal\",\n },\n },\n defaultProps: {\n variant: \"primary\",\n size: \"md\",\n },\n});\n\nexport default config;\n","import { mode, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { brandBackground } from \"./brand-utils\";\nimport { State, Subset } from \"./types\";\n\ntype AccentBackgroundState = Subset<\n State,\n \"default\" | \"hover\" | \"active\" | \"selected\"\n>;\n\nexport function accentBackground(\n state: AccentBackgroundState,\n props: StyleFunctionProps,\n) {\n switch (state) {\n case \"selected\":\n return brandBackground(\"default\", props);\n case \"active\":\n return {\n backgroundColor: mode(\n \"accent.surface.active.light\",\n \"accent.surface.active.dark\",\n )(props),\n };\n case \"hover\":\n return {\n backgroundColor: mode(\n \"accent.surface.hover.light\",\n \"accent.surface.hover.dark\",\n )(props),\n };\n default:\n return {\n backgroundColor: mode(\n \"accent.surface.default.light\",\n \"accent.surface.default.dark\",\n )(props),\n };\n }\n}\n\ntype AccentTextState = Subset<State, \"default\" | \"selected\">;\n\nexport function accentText(state: AccentTextState, props: StyleFunctionProps) {\n switch (state) {\n case \"selected\":\n return {\n color: mode(\"brand.text.light\", \"brand.text.dark\")(props),\n };\n default:\n return {\n color: mode(\"accent.text.light\", \"accent.text.dark\")(props),\n };\n }\n}\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\nimport { mode } from \"@chakra-ui/theme-tools\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { floatingBackground, floatingBorder } from \"../utils/floating-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { ghostBackground, ghostText } from \"../utils/ghost-utils\";\nimport { fontWeights } from \"../foundations\";\n\nconst parts = anatomy(\"card-select\").parts(\"trigger\", \"card\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n trigger: {\n appearance: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n transitionProperty: \"outline\",\n transitionDuration: \"fast\",\n ...baseText(\"default\", props),\n ...focusVisibleStyles(props),\n },\n card: {\n borderRadius: \"sm\",\n boxShadow: \"xs\",\n padding: 2,\n ...baseText(\"default\", props),\n backgroundColor: mode(\n \"white\",\n `color-mix(in srgb, white 10%, var(--spor-colors-bg-default-dark))`,\n )(props),\n },\n }),\n variants: {\n base: (props) => ({\n trigger: {\n ...baseBorder(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"default\", props),\n },\n _expanded: {\n ...baseBackground(\"active\", props),\n },\n },\n }),\n ghost: (props) => ({\n trigger: {\n _hover: {\n ...ghostBackground(\"hover\", props),\n },\n _active: {\n ...ghostBackground(\"active\", props),\n },\n _expanded: {\n ...ghostBackground(\"active\", props),\n fontWeight: fontWeights.bold,\n },\n },\n }),\n floating: (props) => ({\n trigger: {\n boxShadow: \"sm\",\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n transition: \"all .1s ease-out\",\n _hover: {\n ...floatingBackground(\"hover\", props),\n ...floatingBorder(\"hover\", props),\n },\n _active: {\n ...floatingBackground(\"active\", props),\n ...floatingBorder(\"active\", props),\n },\n _expanded: {\n ...floatingBackground(\"active\", props),\n },\n },\n card: {},\n }),\n },\n sizes: {\n sm: {\n trigger: {\n paddingX: 1.5,\n paddingY: 1,\n minHeight: \"1.25rem\",\n fontSize: \"xs\",\n borderRadius: \"lg\",\n },\n },\n md: {\n trigger: {\n paddingX: 2,\n paddingY: 1.5,\n minHeight: \"2.625rem\",\n fontSize: \"xs\",\n borderRadius: \"lg\",\n },\n },\n lg: {\n trigger: {\n paddingX: 3,\n paddingY: 2,\n minHeight: \"3.375rem\",\n fontSize: \"sm\",\n borderRadius: \"lg\",\n },\n },\n },\n});\n\nexport default config;\n","export * from \"./borders\";\nexport * from \"./breakpoints\";\nexport * from \"./colors\";\nexport * from \"./config\";\nexport * from \"./fonts\";\nexport * from \"./fontSizes\";\nexport * from \"./fontWeights\";\nexport * from \"./lineHeights\";\nexport * from \"./radii\";\nexport * from \"./shadows\";\nexport * from \"./sizes\";\nexport * from \"./spacing\";\nexport * from \"./textStyles\";\nexport * from \"./zIndices\";\nexport * from \"./styles\";\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const borders = {\n none: \"0\",\n sm: `${tokens.size.stroke.sm} solid`,\n \"sm-dashed\": `${tokens.size.stroke.sm} dashed`,\n md: `${tokens.size.stroke.md} solid`,\n \"md-dashed\": `${tokens.size.stroke.md} dashed`,\n lg: `${tokens.size.stroke.lg} solid`,\n \"lg-dashed\": `${tokens.size.stroke.lg} dashed`,\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const breakpoints = {\n base: \"0px\",\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 \"2xl\": tokens.size.breakpoint.xl,\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport type ColorsType = typeof tokens.color.alias &\n typeof tokens.color.palette &\n typeof tokens.color.vyDigital & { linjetag: typeof tokens.color.linjetag };\n\nexport const colors: ColorsType = {\n ...tokens.color.alias,\n ...tokens.color.palette,\n ...tokens.color.vyDigital,\n linjetag: tokens.color.linjetag,\n};\n","export const config = {\n cssVarPrefix: \"spor\",\n initialColorMode: \"light\",\n useSystemColorMode: false,\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const fonts = {\n body: `${tokens.font.family.body}, arial, sans-serif`,\n heading: `${tokens.font.family.heading}, arial, sans-serif`,\n mono: `${tokens.font.family.monospace}, monospace`,\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const fontSizes = {\n \"2xs\": tokens.size.font.xs.mobile,\n xs: tokens.size.font.sm.mobile,\n sm: tokens.size.font.md.mobile,\n md: tokens.size.font.lg.mobile,\n lg: tokens.size.font.xl.mobile,\n xl: tokens.size.font.xxl.mobile,\n \"2xl\": tokens.size.font.xl.desktop,\n \"3xl\": tokens.size.font.xxl.desktop,\n\n mobile: {\n xs: tokens.size.font.xs.mobile,\n sm: tokens.size.font.sm.mobile,\n md: tokens.size.font.md.mobile,\n lg: tokens.size.font.lg.mobile,\n xl: tokens.size.font.xl.mobile,\n xxl: tokens.size.font.xxl.mobile,\n },\n desktop: {\n xs: tokens.size.font.xs.desktop,\n sm: tokens.size.font.sm.desktop,\n md: tokens.size.font.md.desktop,\n lg: tokens.size.font.lg.desktop,\n xl: tokens.size.font.xl.desktop,\n xxl: tokens.size.font.xxl.desktop,\n },\n};\n","export const fontWeights = {\n light: 300,\n medium: 400,\n bold: 700,\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const lineHeights = {\n base: tokens.font.style.lg[\"line-height\"],\n normal: tokens.font.style.lg[\"line-height\"],\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const radii = {\n none: tokens.size[\"border-radius\"].none,\n xs: tokens.size[\"border-radius\"].xs,\n sm: tokens.size[\"border-radius\"].sm,\n md: tokens.size[\"border-radius\"].md,\n lg: tokens.size[\"border-radius\"].lg,\n xl: tokens.size[\"border-radius\"].xl,\n \"2xl\": tokens.size[\"border-radius\"][\"2xl\"],\n round: \"50%\",\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const shadows = {\n none: \"none\",\n sm: tokens.depth.shadow.sm.value,\n md: tokens.depth.shadow.md.value,\n lg: tokens.depth.shadow.lg.value,\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\nimport { spacing } from \"./spacing\";\n\nconst largeSizes = {\n max: \"max-content\",\n min: \"min-content\",\n full: \"100%\",\n \"3xs\": \"14rem\",\n \"2xs\": \"16rem\",\n xs: \"20rem\",\n sm: \"24rem\",\n md: \"28rem\",\n lg: \"32rem\",\n xl: \"36rem\",\n \"2xl\": \"42rem\",\n \"3xl\": \"48rem\",\n \"4xl\": \"56rem\",\n \"5xl\": \"64rem\",\n \"6xl\": \"72rem\",\n \"7xl\": \"80rem\",\n \"8xl\": \"90rem\",\n};\n\nconst container = {\n base: \"0px\",\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\nexport const sizes = {\n ...spacing,\n ...largeSizes,\n container,\n};\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\ntype Token = { value: { number: number } };\ntype Spacing = {\n 0: Token;\n 0.5: Token;\n 1: Token;\n 1.5: Token;\n 2: Token;\n 2.5: Token;\n 3: Token;\n 4: Token;\n 5: Token;\n 6: Token;\n 7: Token;\n 8: Token;\n 9: Token;\n 10: Token;\n 11: Token;\n 12: Token;\n};\n\nexport const spacing = Object.entries(tokens.size.spacing).reduce(\n (tokens, [key, token]) => ({\n ...tokens,\n [Number(key)]: token,\n }),\n {} as Record<keyof Spacing, string>,\n);\n\nexport const space = spacing;\n","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const textStyles = {\n \"2xl\": {\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 \"xl-display\": {\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 \"xl-sans\": {\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 lg: {\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 md: {\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 sm: {\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 xs: {\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","import tokens from \"@vygruppen/spor-design-tokens\";\n\nexport const zIndices = {\n hide: tokens.depth[\"z-index\"].hide,\n auto: \"auto\",\n base: tokens.depth[\"z-index\"].base,\n docked: tokens.depth[\"z-index\"].docked,\n dropdown: tokens.depth[\"z-index\"].dropdown,\n sticky: tokens.depth[\"z-index\"].sticky,\n banner: tokens.depth[\"z-index\"].banner,\n overlay: tokens.depth[\"z-index\"].overlay,\n modal: tokens.depth[\"z-index\"].modal,\n popover: tokens.depth[\"z-index\"].popover,\n skipLink: tokens.depth[\"z-index\"].skipLink,\n toast: tokens.depth[\"z-index\"].toast,\n tooltip: tokens.depth[\"z-index\"].tooltip,\n};\n","import { StyleFunctionProps, mode } from \"@chakra-ui/theme-tools\";\n\nexport const styles = {\n global: (props: StyleFunctionProps | Record<string, any>) => ({\n \"html, body\": {\n color: mode(\"darkGrey\", \"lightGrey\")(props),\n },\n svg: {\n display: \"initial\",\n },\n }),\n};\n","import { checkboxAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { mode } from \"@chakra-ui/theme-tools\";\nimport { baseBackground, baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n _hover: {\n \"input:enabled:not([aria-invalid='true']) + .chakra-checkbox__control\":\n {\n ...baseBackground(\"hover\", props),\n borderColor: brandBackground(\"hover\", props).backgroundColor,\n },\n \"input:enabled[aria-invalid='true'] + .chakra-checkbox__control\": {\n backgroundColor: mode(\"white\", \"inherit\")(props),\n borderColor: mode(\"outline.error.light\", \"outline.error.dark\"),\n },\n \"input:enabled:checked:not([aria-invalid='true']) + .chakra-checkbox__control\":\n {\n ...brandBackground(\"hover\", props),\n borderColor: brandBackground(\"hover\", props).backgroundColor,\n },\n \"input:enabled:checked[aria-invalid='true'] + .chakra-checkbox__control\":\n {\n borderColor: mode(\"outline.error.light\", \"outline.error.dark\"),\n backgroundColor: mode(\"outline.error.light\", \"outline.error.dark\"),\n },\n },\n },\n icon: {\n fontSize: \"1em\",\n transitionProperty: \"transform\",\n transitionDuration: \"normal\",\n strokeWidth: \"1.5px !important\", // Required to make the default icon look correct\n },\n control: {\n width: 4,\n height: 4,\n transitionProperty: \"background, border-color\",\n transitionDuration: \"normal\",\n border: \"2px solid\",\n borderColor: mode(\n \"base.outline.default.light\",\n \"base.outline.default.dark\",\n )(props),\n borderRadius: \"xs\",\n ...baseBackground(\"default\", props),\n ...focusVisibleStyles(props),\n\n _checked: {\n ...brandText(\"default\", props),\n ...brandBackground(\"default\", props),\n borderColor: brandBackground(\"default\", props).backgroundColor,\n\n _disabled: {\n ...baseBackground(\"disabled\", props),\n ...baseText(\"disabled\", props),\n borderColor: \"currentColor\",\n },\n\n _invalid: {\n backgroundColor: \"brightRed\",\n borderColor: \"brightRed\",\n },\n },\n\n _disabled: {\n ...baseBackground(\"disabled\", props),\n borderColor: baseText(\"disabled\", props).color,\n },\n _invalid: {\n ...baseBackground(\"default\", props),\n borderColor: \"brightRed\",\n },\n },\n label: {\n userSelect: \"none\",\n _disabled: { opacity: 0.4 },\n },\n }),\n});\n\nexport default config;\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy } from \"@chakra-ui/theme-tools\";\nimport { accentBackground, accentText } from \"../utils/accent-utils\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { brandBackground } from \"../utils/brand-utils\";\nimport { floatingBackground, floatingBorder } from \"../utils/floating-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst parts = anatomy(\"choice-chip\").parts(\"container\", \"icon\", \"label\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n display: \"inline-flex\",\n alignItems: \"center\",\n fontSize: \"xs\",\n cursor: \"pointer\",\n transitionProperty: \"all\",\n borderRadius: \"xl\",\n transitionDuration: \"fast\",\n _checked: {\n outlineColor: \"transparent\",\n ...accentText(\"selected\", props),\n ...accentBackground(\"selected\", props),\n _hover: {\n ...brandBackground(\"hover\", props),\n ...baseText(\"selected\", props),\n outlineColor: \"transparent\",\n },\n _active: {\n ...baseText(\"selected\", props),\n ...brandBackground(\"active\", props),\n },\n },\n _disabled: {\n pointerEvents: \"none\",\n boxShadow: \"none\",\n ...baseText(\"disabled\", props),\n ...baseBackground(\"disabled\", props),\n _hover: {\n ...baseBackground(\"disabled\", props),\n boxShadow: \"none\",\n ...baseText(\"disabled\", props),\n },\n _checked: {\n cursor: \"not-allowed\",\n boxShadow: \"none\",\n ...baseText(\"disabled\", props),\n ...baseBackground(\"disabled\", props),\n _hover: {\n ...baseBackground(\"disabled\", props),\n boxShadow: \"none\",\n ...baseText(\"disabled\", props),\n },\n },\n },\n \"input:focus-visible + &\": focusVisibleStyles(props)._focusVisible,\n },\n icon: {\n marginRight: props.hasLabel ? 1 : 0,\n },\n }),\n variants: {\n base: (props) => ({\n container: {\n ...baseBorder(\"default\", props),\n ...baseText(\"default\", props),\n _hover: {\n ...baseText(\"default\", props),\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"default\", props),\n },\n },\n }),\n accent: (props) => ({\n container: {\n ...accentBackground(\"default\", props),\n ...accentText(\"default\", props),\n _hover: {\n ...accentBackground(\"hover\", props),\n ...accentText(\"default\", props),\n },\n _active: {\n ...accentText(\"default\", props),\n ...accentBackground(\"active\", props),\n },\n },\n _active: {\n ...accentText(\"default\", props),\n ...accentBackground(\"active\", props),\n },\n }),\n floating: (props) => ({\n container: {\n ...floatingBackground(\"default\", props),\n ...baseText(\"default\", props),\n ...floatingBorder(\"default\", props),\n boxShadow: \"sm\",\n _hover: {\n ...floatingBackground(\"hover\", props),\n ...floatingBorder(\"hover\", props),\n ...baseText(\"default\", props),\n boxShadow: \"md\",\n },\n _active: {\n ...floatingBackground(\"active\", props),\n ...floatingBorder(\"active\", props),\n ...baseText(\"default\", props),\n },\n },\n }),\n },\n sizes: {\n xs: {\n container: {\n _checked: {\n borderRadius: \"0.563rem\",\n },\n height: 5,\n paddingX: 1.5,\n },\n },\n sm: {\n container: {\n _checked: {\n borderRadius: \"sm\",\n },\n height: 6,\n paddingX: 2,\n },\n },\n md: {\n container: {\n _checked: {\n borderRadius: \"sm\",\n },\n height: 7,\n paddingX: 2,\n },\n },\n lg: {\n container: {\n _checked: {\n borderRadius: \"md\",\n },\n height: 8,\n paddingX: 3,\n },\n },\n },\n defaultProps: {\n size: \"sm\",\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\nimport { cssVar, mode } from \"@chakra-ui/theme-tools\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { ghostBackground } from \"../utils/ghost-utils\";\n\nconst $size = cssVar(\"close-button-size\");\n\nconst config = defineStyleConfig({\n baseStyle: (props) => ({\n w: [$size.reference],\n h: [$size.reference],\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n borderRadius: \"md\",\n backgroundColor: \"transparent\",\n color: mode(\"darkGrey\", \"white\")(props),\n fontWeight: \"normal\",\n ...focusVisibleStyles(props),\n _hover: {\n ...ghostBackground(\"hover\", props),\n _disabled: {\n color: \"dimGrey\",\n },\n },\n _active: {\n ...ghostBackground(\"active\", props),\n },\n }),\n sizes: {\n lg: {\n [$size.variable]: \"40px\",\n fontSize: \"xs\",\n },\n md: {\n [$size.variable]: \"32px\",\n fontSize: \"0.75rem\",\n },\n sm: {\n [$size.variable]: \"24px\",\n fontSize: \"0.625rem\",\n },\n },\n defaultProps: {\n size: \"md\",\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\nimport Badge from \"./badge\";\n\nconst { variants, defaultProps } = Badge;\n\nconst config = defineStyleConfig({\n baseStyle: {\n fontFamily: \"monospace\",\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n borderRadius: \"xs\",\n paddingX: 1,\n },\n variants,\n defaultProps,\n});\n\nexport default config;\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy, cssVar, mode } from \"@chakra-ui/theme-tools\";\nimport { zIndices } from \"../foundations\";\nimport { accentText } from \"../utils/accent-utils\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { floatingBorder, floatingBackground } from \"../utils/floating-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { ghostBackground } from \"../utils/ghost-utils\";\nimport { surface } from \"../utils/surface-utils\";\n\nconst parts = anatomy(\"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);\n\nconst $arrowBackground = cssVar(\"popper-arrow-bg\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\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: zIndices.docked,\n },\n _disabled: {\n pointerEvents: \"none\",\n ...baseBackground(\"disabled\", props),\n ...baseBorder(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n _focusWithin: {\n ...focusVisibleStyles(props)._focusVisible,\n },\n },\n inputLabel: {\n fontSize: \"mobile.xs\",\n margin: 0,\n cursor: \"text\",\n },\n dateTimeSegment: {\n _focus: {\n ...brandBackground(\"hover\", props),\n color: \"white\",\n },\n },\n calendarTriggerButton: {\n width: 8,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transitionProperty: \"box-shadow, background-color\",\n transitionSpeed: \"fast\",\n position: \"relative\",\n right: \"9px\",\n\n ...focusVisibleStyles(props),\n _hover: {\n ...ghostBackground(\"hover\", props),\n },\n _active: {\n ...ghostBackground(\"active\", props),\n },\n _invalid: {\n ...baseBorder(\"invalid\", props),\n },\n },\n arrow: {\n [$arrowBackground.variable]: surface(\"default\", props).backgroundColor,\n },\n calendarPopover: {\n ...floatingBackground(\"default\", props),\n ...baseText(\"default\", props),\n ...floatingBorder(\"default\", props),\n boxShadow: \"md\",\n },\n weekdays: {\n ...baseText(\"default\", props),\n },\n weekend: {\n ...accentText(\"default\", props),\n },\n cell: {\n '&[aria-selected=\"true\"] + [aria-selected=\"true\"] > button': {\n \"&::before\": {\n content: '\"\"',\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n left: \"-50%\",\n top: 0,\n bottom: 0,\n zIndex: -1,\n ...brandBackground(\"default\", props),\n },\n },\n },\n dateCell: {\n ...ghostBackground(\"default\", props),\n ...baseText(\"default\", props),\n borderRadius: \"50%\",\n position: \"relative\",\n transition: \".1s ease-in-out\",\n userSelect: \"none\",\n width: [6, 7],\n height: [6, 7],\n transitionProperty: \"common\",\n transitionSpeed: \"fast\",\n\n _hover: {\n ...ghostBackground(\"hover\", props),\n },\n ...focusVisibleStyles(props),\n _active: {\n ...ghostBackground(\"active\", props),\n },\n _disabled: {\n ...baseBackground(\"disabled\", props),\n ...baseText(\"disabled\", props),\n pointerEvents: \"none\",\n },\n _selected: {\n ...brandBackground(\"default\", props),\n ...brandText(\"default\", props),\n _active: {\n ...brandBackground(\"active\", props),\n ...brandText(\"active\", props),\n },\n },\n \"&[data-today]\": {\n ...baseBorder(\"default\", props),\n },\n \"&[data-unavailable]\": {\n pointerEvents: \"none\",\n ...baseBackground(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n },\n }),\n variants: {\n base: (props) => ({\n wrapper: {\n ...baseBorder(\"default\", props),\n ...baseBackground(\"default\", props),\n\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _invalid: {\n ...baseBorder(\"invalid\", props),\n },\n },\n }),\n floating: (props) => ({\n wrapper: {\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n boxShadow: \"sm\",\n\n _hover: {\n ...floatingBorder(\"hover\", props),\n },\n _invalid: {\n ...baseBorder(\"invalid\", props),\n },\n },\n }),\n ghost: (props) => ({\n wrapper: {\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _invalid: {\n ...baseBorder(\"invalid\", props),\n },\n },\n }),\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/styled-system\";\nimport { mode } from \"@chakra-ui/theme-tools\";\n\nconst borderColor = mode(\"blackAlpha.300\", \"whiteAlpha.300\");\n\nfunction getSizes(size: string) {\n const sizes: Record<string, { height: string; dash: string; gap: string }> = {\n sm: {\n height: \"1px\",\n dash: \"1px\",\n gap: \"4px\",\n },\n md: {\n height: \"2px\",\n dash: \"3px\",\n gap: \"6px\",\n },\n lg: {\n height: \"3px\",\n dash: \"3px\",\n gap: \"9px\",\n },\n };\n return sizes[size] || sizes[\"md\"];\n}\n\nexport default defineStyleConfig({\n baseStyle: (props) => ({\n borderColor: borderColor(props),\n }),\n variants: {\n solid: {\n borderStyle: \"solid\",\n },\n dashed: (props) => {\n const { height, dash, gap } = getSizes(props.size);\n return {\n height: height,\n backgroundImage: `linear-gradient(90deg, ${borderColor(props)}, ${borderColor(props)} ${dash}, transparent ${dash}, transparent ${gap})`,\n backgroundPosition: \"left bottom\",\n backgroundRepeat: \"repeat-x\",\n backgroundSize: `${gap} ${height}`,\n };\n },\n },\n defaultProps: {\n variant: \"solid\",\n size: \"md\",\n },\n});\n","import { modalAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { type PartsStyleObject } from \"@chakra-ui/theme-tools\";\nimport { baseText } from \"../utils/base-utils\";\nimport { bg } from \"../utils/bg-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n overlay: {\n backgroundColor: \"blackAlpha.600\",\n zIndex: \"modal\",\n color: \"red\",\n },\n dialogContainer: {\n display: \"flex\",\n zIndex: \"modal\",\n justifyContent: \"center\",\n alignItems: props.isCentered ? \"center\" : \"flex-start\",\n overflow: props.scrollBehavior === \"inside\" ? \"hidden\" : \"auto\",\n },\n dialog: {\n ...bg(\"default\", props),\n ...baseText(\"default\", props),\n zIndex: \"modal\",\n maxHeight:\n props.scrollBehavior === \"inside\" ? \"calc(100% - 7.5rem)\" : undefined,\n boxShadow: \"md\",\n },\n header: {\n paddingX: 3,\n paddingTop: 6,\n paddingBottom: 2,\n fontWeight: \"bold\",\n fontFamily: \"body\",\n },\n closeButton: {\n position: \"absolute\",\n top: 3,\n insetEnd: 3,\n zIndex: \"modal\",\n },\n body: {\n paddingX: 3,\n paddingBottom: 6,\n flex: 1,\n overflow: props.scrollBehavior === \"inside\" ? \"auto\" : undefined,\n },\n footer: {\n paddingX: 3,\n paddingBottom: 3,\n },\n }),\n sizes: {\n xs: getSize(\"xs\"),\n sm: getSize(\"sm\"),\n md: getSize(\"md\"),\n lg: getSize(\"lg\"),\n xl: getSize(\"xl\"),\n \"2xl\": getSize(\"2xl\"),\n \"3xl\": getSize(\"3xl\"),\n \"4xl\": getSize(\"4xl\"),\n \"5xl\": getSize(\"5xl\"),\n \"6xl\": getSize(\"6xl\"),\n full: getSize(\"full\"),\n },\n defaultProps: {\n size: \"md\",\n },\n});\n\n/**\n * Since the `maxWidth` prop references theme.sizes internally,\n * we can leverage that to size our modals.\n */\nfunction getSize(value: string): PartsStyleObject<typeof parts> {\n if (value === \"full\") {\n return {\n dialog: {\n maxWidth: \"100vw\",\n minHeight: \"100vh\",\n \"@supports(min-height: -webkit-fill-available)\": {\n minHeight: \"-webkit-fill-available\",\n },\n marginY: 0,\n },\n };\n }\n return {\n dialog: { maxWidth: value },\n };\n}\n\nexport default config;\n","import { mode } from \"@chakra-ui/theme-tools\";\n\ntype Bg = \"default\" | \"secondary\" | \"tertiary\";\nexport const bg = (bg: Bg, props: any) => {\n switch (bg) {\n case \"default\":\n return {\n backgroundColor: mode(\"bg.default.light\", \"bg.default.dark\")(props),\n };\n case \"secondary\":\n return {\n backgroundColor: mode(\"bg.secondary.light\", \"bg.secondary.dark\")(props),\n };\n case \"tertiary\":\n return {\n backgroundColor: mode(\"bg.tertiary.light\", \"bg.tertiary.dark\")(props),\n };\n }\n};\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\n\nimport { accentBackground, accentText } from \"../utils/accent-utils\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { surface } from \"../utils/surface-utils\";\n\nconst parts = anatomy(\"fab\").parts(\"container\", \"icon\", \"text\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n display: \"flex\",\n alignItems: \"center\",\n paddingY: 2,\n paddingLeft: 2,\n paddingRight: props.isTextVisible ? 3 : 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: \"sticky\",\n ...getPositionProps(props),\n ...focusVisibleStyles(props),\n _disabled: {\n ...surface(\"disabled\", props),\n ...baseText(\"disabled\", props),\n pointerEvents: \"none\",\n },\n },\n icon: {\n marginRight: props.isTextVisible ? 1 : 0,\n },\n text: {\n display: \"flex\",\n flex: \"none\",\n alignItems: \"center\",\n fontWeight: \"bold\",\n textStyle: \"sm\",\n },\n }),\n variants: {\n brand: (props) => ({\n container: {\n ...brandBackground(\"default\", props),\n ...brandText(\"default\", props),\n _hover: {\n ...brandBackground(\"hover\", props),\n },\n _active: {\n ...brandBackground(\"active\", props),\n },\n },\n }),\n base: (props) => ({\n container: {\n ...baseBackground(\"default\", props),\n ...baseBorder(\"default\", props),\n ...baseText(\"default\", props),\n _hover: {\n ...baseBackground(\"hover\", props),\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBorder(\"default\", props),\n ...baseBackground(\"active\", props),\n },\n },\n }),\n accent: (props) => ({\n container: {\n ...accentBackground(\"default\", props),\n ...accentText(\"default\", props),\n _hover: {\n ...accentBackground(\"hover\", props),\n ...accentText(\"default\", props),\n },\n _active: {\n ...accentBackground(\"active\", props),\n },\n },\n }),\n },\n defaultProps: {\n variant: \"brand\",\n },\n});\n\nexport default config;\n\nconst getPositionProps = (props: StyleFunctionProps) => {\n switch (props.placement) {\n case \"top left\":\n return { top: \"1em\", left: \"1em\" };\n case \"top right\":\n return { top: \"1em\", right: \"1em\" };\n case \"bottom left\":\n return { bottom: \"1em\", left: \"1em\" };\n case \"bottom right\":\n return { bottom: \"1em\", right: \"1em\" };\n }\n};\n","import { formAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { mode } from \"@chakra-ui/theme-tools\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n width: \"100%\",\n position: \"relative\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n },\n requiredIndicator: {\n marginStart: 1,\n color: mode(\"brightRed\", \"lightRed\")(props),\n },\n helperText: {\n marginTop: 2,\n color: mode(\"dimGrey\", \"whiteAlpha.600\")(props),\n lineHeight: \"normal\",\n fontSize: \"sm\",\n },\n }),\n});\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\n\nconst config = defineStyleConfig({\n baseStyle: {\n fontSize: \"mobile.sm\",\n marginEnd: 3,\n marginBottom: 2,\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n opacity: 1,\n _disabled: {\n opacity: 0.4,\n },\n },\n});\n\nexport default config;\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { floatingBackground, floatingBorder } from \"../utils/floating-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { srOnly } from \"../utils/sr-utils\";\n\nconst parts = anatomy(\"InfoSelect\").parts(\n \"container\",\n \"label\",\n \"button\",\n \"arrowIcon\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {},\n label: {\n position: \"relative\",\n fontSize: [\"mobile.xs\", \"desktop.sm\"],\n marginTop: props.hasChosenValue ? 2 : 0,\n ...(props.isLabelSrOnly ? srOnly : {}),\n },\n innerButton: {\n display: \"flex\",\n flexDir: \"column\",\n alignItems: \"start\",\n justifyContent: \"start\",\n },\n button: {\n display: \"flex\",\n appearance: \"none\",\n width: \"100%\",\n height: 8,\n borderTopRadius: \"sm\",\n borderBottomRadius: props.isOpen ? 0 : \"sm\",\n paddingY: 1.5,\n paddingX: 3,\n justifyContent: \"space-between\",\n alignItems: \"center\",\n fontSize: \"mobile.md\",\n ...baseBorder(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n ...focusVisibleStyles(props),\n _disabled: {\n pointerEvents: \"none\",\n ...baseText(\"disabled\", props),\n ...baseBackground(\"disabled\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n },\n _invalid: {\n ...baseBorder(\"invalid\", props),\n },\n },\n placeholder: {},\n arrowIcon: {},\n }),\n variants: {\n base: () => ({}),\n floating: (props) => ({\n button: {\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n _hover: {\n ...floatingBorder(\"hover\", props),\n ...floatingBackground(\"hover\", props),\n },\n _active: {\n ...floatingBorder(\"active\", props),\n ...floatingBackground(\"active\", props),\n },\n },\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\nexport default config;\n","/** All the styles you need to hide something visually, while still making it available for screen readers */\nexport const srOnly = {\n border: \"0 !important\",\n clip: \"rect(1px, 1px, 1px, 1px) !important\",\n clipPath: \"inset(50%) !important\",\n height: \"1px !important\",\n margin: \"-1px !important\",\n overflow: \"hidden !important\",\n padding: \"0 !important\",\n position: \"absolute !important\",\n width: \"1px !important\",\n whiteSpace: \"nowrap !important\",\n};\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy, mode } from \"@chakra-ui/theme-tools\";\nimport travelTagStyles from \"./travel-tag\";\n\nconst parts = anatomy(\"info-tag\").parts(\n \"container\",\n \"iconContainer\",\n \"icon\",\n \"textContainer\",\n \"title\",\n \"description\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n ...travelTagStyles.baseStyle!(props),\n iconContainer: {\n ...travelTagStyles.baseStyle!(props).iconContainer,\n padding: 1,\n },\n textContainer: {\n color: mode(\"darkGrey\", \"white\")(props),\n },\n }),\n sizes: {\n ...travelTagStyles.sizes,\n sm: {\n ...travelTagStyles.sizes!.sm,\n iconContainer: {\n borderRadius: \"0.375rem\",\n },\n },\n md: {\n ...travelTagStyles.sizes!.md,\n iconContainer: {\n borderRadius: \"0.375rem\",\n },\n },\n lg: {\n ...travelTagStyles.sizes!.lg,\n iconContainer: {\n borderRadius: \"sm\",\n },\n },\n },\n defaultProps: {\n size: \"md\",\n },\n variants: {\n walk: (props) => ({\n iconContainer: {\n backgroundColor: mode(\"white\", \"transparent\")(props),\n boxShadow: mode(\n `${props.theme.shadows.md}, inset 0 0 0 2px ${props.theme.colors.black[200]}`,\n `${props.theme.shadows.md}, inset 0 0 0 2px ${props.theme.colors.whiteAlpha[400]}`,\n )(props),\n },\n }),\n },\n});\nexport default config;\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport type { StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { anatomy, mode } from \"@chakra-ui/theme-tools\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { surface } from \"../utils/surface-utils\";\nimport { baseText } from \"../utils/base-utils\";\n\nconst parts = anatomy(\"travel-tag\").parts(\n \"container\",\n \"iconContainer\",\n \"icon\",\n \"textContainer\",\n \"title\",\n \"description\",\n \"deviationIcon\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n padding: 0.5,\n width: \"fit-content\",\n ...getDeviationContainerStyle(props),\n transitionDuration: \"fast\",\n transitionProperty: \"common\",\n _disabled: {\n ...surface(\"disabled\", props),\n },\n \"button&, a&\": {\n boxShadow: \"sm\",\n _hover: {\n boxShadow: \"md\",\n },\n ...focusVisibleStyles(props),\n _active: {\n opacity: 0.5,\n boxShadow: \"none\",\n },\n },\n },\n iconContainer: {\n padding: 0.5,\n \"[aria-disabled=true] &\": {\n ...surface(\"disabled\", props),\n },\n },\n textContainer: {\n color: \"darkGrey\",\n paddingRight: 0.5,\n whiteSpace: \"nowrap\",\n \"[aria-disabled=true] &\": {\n ...baseText(\"disabled\", props),\n },\n },\n title: {\n fontWeight: \"bold\",\n },\n description: {\n fontWeight: \"normal\",\n },\n deviationIcon: {\n ...getDeviationIconStyle(props),\n },\n }),\n variants: {\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: (props) => ({\n container: {\n backgroundColor: mode(\"white\", \"transparent\")(props),\n _disabled: {\n backgroundColor: \"white\",\n },\n },\n iconContainer: {\n border: \"none\",\n position: \"relative\",\n left: -1,\n backgroundColor: mode(\"white\", \"transparent\")(props),\n \"[aria-disabled=true] &\": {\n backgroundColor: \"transparent\",\n color: \"osloGrey\",\n },\n },\n textContainer: {\n position: \"absolute\",\n left: 2,\n bottom: -0.5,\n \"[aria-disabled=true] &\": {\n color: \"osloGrey\",\n },\n },\n title: {\n fontSize: \"mobile.xs\",\n fontWeight: \"normal\",\n color: mode(\"black\", \"white\")(props),\n },\n description: {\n display: \"none\",\n },\n }),\n custom: (props) => ({\n container: {\n backgroundColor: props.foregroundColor,\n },\n }),\n },\n sizes: {\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 defaultProps: {\n size: \"md\",\n },\n});\n\nexport default config;\n\nconst getDeviationContainerStyle = (props: StyleFunctionProps) => {\n switch (props.deviationLevel) {\n case \"critical\":\n return {\n border: \"1px solid\",\n borderColor: getDeviationBorderColor(props),\n };\n case \"major\":\n return {\n border: \"1px solid\",\n borderColor: getDeviationBorderColor(props),\n };\n default:\n return {};\n }\n};\n\nconst getDeviationBorderColor = (props: StyleFunctionProps) => {\n switch (props.deviationLevel) {\n case \"critical\":\n return \"brightRed\";\n case \"major\":\n return \"golden\";\n default:\n return \"transparent\";\n }\n};\n\nconst getDeviationIconStyle = (props: StyleFunctionProps) => {\n return {\n position: \"absolute\",\n top: \"0\",\n right: \"0\",\n transform: \"translate(50%, -50%)\",\n zIndex: \"docked\",\n color:\n deviationIconColor[\n props.deviationLevel as keyof typeof deviationIconColor\n ] || \"inherit\",\n };\n};\n\nconst deviationIconColor = {\n critical: \"brightRed\",\n info: \"ocean\",\n} as const;\n","import { inputAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { inputBaseStyle, inputVariant } from \"../utils/input-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n ...inputBaseStyle(props),\n }),\n variants: {\n base: (props) => ({\n field: {\n ...inputVariant(\"base\", props),\n },\n }),\n floating: (props) => ({\n field: {\n ...inputVariant(\"floating\", props),\n },\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { baseBackground, baseBorder, baseText } from \"./base-utils\";\nimport { floatingBackground, floatingBorder } from \"./floating-utils\";\nimport { InputState } from \"./types\";\nimport { focusVisibleStyles } from \"./focus-utils\";\nimport { surface } from \"./surface-utils\";\n\nexport function inputVariant(state: InputState, props: StyleFunctionProps) {\n switch (state) {\n case \"base\":\n return {\n ...baseBackground(\"default\", props),\n ...baseBorder(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"default\", props),\n },\n _selected: {\n ...baseBackground(\"selected\", props),\n ...baseBorder(\"selected\", props),\n },\n };\n case \"floating\":\n return {\n boxShadow: \"sm\",\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n\n _hover: {\n ...floatingBorder(\"hover\", props),\n ...floatingBackground(\"hover\", props),\n },\n _active: {\n ...floatingBorder(\"active\", props),\n ...floatingBackground(\"active\", props),\n },\n _selected: {\n ...floatingBorder(\"selected\", props),\n ...floatingBackground(\"selected\", props),\n },\n };\n case \"default\":\n default:\n return {\n ...baseBackground(\"default\", props),\n ...baseBorder(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"default\", props),\n },\n _selected: {\n ...baseBackground(\"selected\", props),\n ...baseBorder(\"selected\", props),\n },\n };\n }\n}\n\nexport const inputBaseStyle = (props: StyleFunctionProps) => ({\n field: {\n appearance: \"none\",\n width: \"100%\",\n outline: \"none\",\n border: 0,\n borderRadius: \"sm\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n position: \"relative\",\n paddingX: 3,\n height: 8,\n fontSize: \"mobile.md\",\n _focusVisible: {\n ...focusVisibleStyles(props)._focusVisible,\n outlineOffset: 0,\n },\n _disabled: {\n ...surface(\"disabled\", props),\n ...baseBorder(\"disabled\", props),\n pointerEvents: \"none\",\n },\n _invalid: {\n ...baseBorder(\"invalid\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n },\n \" + label, + div[data-lastpass-icon-root] + label\": {\n fontSize: [\"mobile.sm\", \"desktop.sm\"],\n top: \"2px\",\n left: props.paddingLeft || props.pl || 3,\n zIndex: 2,\n position: \"absolute\",\n marginY: 2,\n transition: \".1s ease-out\",\n transformOrigin: \"top left\",\n cursor: \"text\",\n },\n \"&:not(:placeholder-shown)\": {\n paddingTop: \"1rem\",\n \"& + label, & + div[data-lastpass-icon-root] + label\": {\n transform: \"scale(0.825) translateY(-10px)\",\n },\n },\n },\n element: {\n height: \"100%\",\n },\n group: {\n \":has(:disabled)\": {\n ...baseText(\"disabled\", props),\n },\n },\n});\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy, mode } from \"@chakra-ui/theme-tools\";\n\nconst parts = anatomy(\"line-tag\").parts(\"iconContainer\", \"icon\");\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: {\n iconContainer: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n icon: {\n color: \"white\",\n \"[aria-disabled=true] &\": {\n color: mode(\"icon.disabled.light\", \"icon.disabled.dark\"),\n },\n },\n },\n variants: {\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\n walk: (props) => ({\n iconContainer: {\n backgroundColor: \"white\",\n borderWidth: 1,\n borderStyle: \"solid\",\n borderColor: \"blackAlpha.200\",\n },\n icon: {\n color: mode(\"darkGrey\", \"white\")(props),\n \"[aria-disabled=true] &\": {\n color: \"osloGrey\",\n },\n },\n }),\n custom: (props) => ({\n iconContainer: {\n backgroundColor: props.backgroundColor,\n },\n }),\n },\n sizes: {\n sm: {\n iconContainer: {\n borderRadius: \"0.5625rem\",\n padding: 1,\n },\n },\n md: {\n iconContainer: {\n borderRadius: \"0.5625rem\",\n padding: 1,\n },\n },\n lg: {\n iconContainer: {\n borderRadius: \"sm\",\n padding: 1,\n },\n },\n },\n defaultProps: {\n size: \"md\",\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\nimport { mode } from \"@chakra-ui/theme-tools\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst config = defineStyleConfig({\n baseStyle: (props) => ({\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 padding: \"2px\",\n color: \"inherit\",\n display: \"inline\",\n position: \"relative\",\n boxDecorationBreak: \"clone\",\n\n \"&:focus, &:focus-visible, &:active, &:hover\": {\n backgroundImage: \"none\",\n backgroundSize: \"100%\",\n outline: \"none\",\n borderRadius: \"xs\",\n },\n\n ...focusVisibleStyles(props),\n\n svg: {\n display: \"inline-block\",\n width: \"1.125em\",\n height: \"1.125em\",\n position: \"relative\",\n bottom: \"-0.2em\",\n },\n }),\n variants: {\n primary: (props) => ({\n ...baseText(\"default\", props),\n _hover: {\n ...brandText(\"hover\", props),\n ...brandBackground(\"hover\", props),\n },\n _active: {\n ...brandText(\"active\", props),\n ...brandBackground(\"active\", props),\n },\n }),\n secondary: (props) => ({\n backgroundImage: `linear-gradient(${mode(\n \"blackAlpha.400\",\n \"whiteAlpha.400\",\n )(props)}, ${mode(\"blackAlpha.400\", \"whiteAlpha.400\")(props)})`,\n ...baseText(\"default\", props),\n \"&:focus, &:focus-visible, &:active, &:hover\": {\n outline: \"1px solid\",\n },\n ...baseBackground(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props), // TODO: This is also weird\n ...baseBackground(\"hover\", props),\n outlineWidth: 1,\n },\n _active: {\n ...baseBackground(\"active\", props),\n },\n }),\n },\n defaultProps: {\n variant: \"primary\",\n },\n});\n\nexport default config;\n","import { listAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys);\n\nconst baseStyle = definePartsStyle({\n container: {\n fontSize: [\"mobile.sm\", \"desktop.sm\"],\n },\n item: {\n fontFamily: \"body\",\n },\n icon: {\n marginEnd: \"2\",\n display: \"inline\",\n verticalAlign: \"text-bottom\",\n },\n});\n\nexport default defineMultiStyleConfig({\n baseStyle,\n});\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { baseBorder } from \"../utils/base-utils\";\nimport { ghostBackground, ghostText } from \"../utils/ghost-utils\";\nimport { surface } from \"../utils/surface-utils\";\nimport { outlineBorder } from \"../utils/outline-utils\";\nimport { floatingBorder } from \"../utils/floating-utils\";\n\nconst parts = anatomy(\"ListBox\").parts(\n \"container\",\n \"item\",\n \"label\",\n \"description\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n ...surface(\"default\", props),\n boxShadow: \"sm\",\n overflowY: \"auto\",\n maxHeight: \"50vh\",\n width: \"100%\",\n listStyle: \"none\",\n borderBottomRadius: \"sm\",\n },\n item: {\n paddingX: 2,\n paddingY: 1,\n marginY: 1,\n marginX: 1,\n borderRadius: \"sm\",\n ...ghostText(\"default\", props),\n cursor: \"pointer\",\n outline: \"none\",\n _active: {\n ...ghostBackground(\"active\", props),\n },\n _focusVisible: {\n ...outlineBorder(\"focus\", props),\n },\n _hover: {\n ...ghostBackground(\"hover\", props),\n },\n _selected: {\n ...ghostBackground(\"active\", props),\n },\n },\n label: {},\n description: {\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n ...ghostText(\"default\", props),\n \"[aria-selected='true'] &\": {\n ...ghostText(\"selected\", props),\n },\n },\n }),\n variants: {\n base: (props) => ({\n container: {\n ...baseBorder(\"default\", props),\n },\n }),\n floating: (props) => ({\n container: {\n ...floatingBorder(\"default\", props),\n },\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { mode, StyleFunctionProps } from \"@chakra-ui/theme-tools\";\nimport { State, Subset } from \"./types\";\n\ntype OutlineBorderState = Subset<State, \"default\" | \"error\" | \"focus\">;\nexport function outlineBorder(\n state: OutlineBorderState,\n props: StyleFunctionProps,\n) {\n switch (state) {\n case \"error\":\n return {\n outlineColor: mode(\"outline.error.light\", \"outline.error.dark\")(props),\n };\n case \"focus\":\n return {\n outlineColor: mode(\"outline.focus.light\", \"outline.focus.dark\")(props),\n };\n default:\n return {\n outlineColor: mode(\n \"outline.default.light\",\n \"outline.default.dark\",\n )(props),\n };\n }\n}\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy, mode } from \"@chakra-ui/theme-tools\";\nimport { baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { ghostBackground } from \"../utils/ghost-utils\";\nimport { surface } from \"../utils/surface-utils\";\n\nconst parts = anatomy(\"media-controller-button\").parts(\"container\", \"icon\");\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n fontSize: 30,\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n borderRadius: \"round\",\n appearance: \"none\",\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n display: \"flex\",\n padding: 1,\n alignSelf: \"center\",\n // The SVG icon color is set to the brand background color, due to how SVGs work\n color: brandBackground(\"default\", props).backgroundColor,\n ...focusVisibleStyles(props),\n },\n icon: {\n flex: \"0 0 auto\",\n display: \"block\",\n width: \"1em\",\n height: \"1em\",\n },\n }),\n variants: {\n play: (props) => ({\n container: {\n padding: 0,\n ...brandText(\"default\", props),\n ...brandBackground(\"default\", props),\n _hover: {\n ...brandText(\"default\", props),\n ...brandBackground(\"hover\", props),\n },\n _active: {\n ...brandText(\"default\", props),\n ...brandBackground(\"active\", props),\n },\n\n _disabled: {\n pointerEvents: \"none\",\n color: mode(\"icon.disabled.light\", \"icon.disabled.dark\")(props),\n ...surface(\"disabled\", props),\n },\n },\n }),\n jumpSkip: (props) => ({\n container: {\n _hover: {\n ...ghostBackground(\"hover\", props),\n },\n _active: {\n ...ghostBackground(\"active\", props),\n },\n _disabled: {\n pointerEvents: \"none\",\n ...surface(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n },\n icon: {\n width: \"0.71em\",\n height: \"0.71em\",\n },\n }),\n },\n sizes: {\n sm: (props) => ({\n container: {\n fontSize: props.variant === \"play\" ? 24 : 42,\n width: props.variant === \"play\" ? \"2.625rem\" : undefined,\n height: props.variant === \"play\" ? \"2.625rem\" : undefined,\n },\n }),\n lg: (props) => ({\n container: {\n fontSize: props.variant === \"play\" ? 38 : 60,\n width: props.variant === \"play\" ? \"3.75rem\" : undefined,\n height: props.variant === \"play\" ? \"3.75rem\" : undefined,\n },\n }),\n },\n});\n\nexport default config;\n","import { modalAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { type PartsStyleObject } from \"@chakra-ui/theme-tools\";\nimport { baseText } from \"../utils/base-utils\";\nimport { bg } from \"../utils/bg-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n overlay: {\n backgroundColor: \"blackAlpha.600\",\n zIndex: \"modal\",\n },\n dialogContainer: {\n display: \"flex\",\n zIndex: \"modal\",\n justifyContent: \"center\",\n alignItems: props.isCentered ? \"center\" : \"flex-start\",\n overflow: props.scrollBehavior === \"inside\" ? \"hidden\" : \"auto\",\n },\n dialog: {\n borderRadius: \"md\",\n ...bg(\"default\", props),\n ...baseText(\"default\", props),\n marginY: \"3.75rem\",\n zIndex: \"modal\",\n maxHeight:\n props.scrollBehavior === \"inside\" ? \"calc(100% - 7.5rem)\" : undefined,\n boxShadow: \"md\",\n },\n header: {\n paddingX: 5,\n paddingTop: 6,\n paddingBottom: 2,\n fontWeight: \"bold\",\n fontFamily: \"body\",\n },\n closeButton: {\n position: \"absolute\",\n color: \"inherit\",\n top: 3,\n insetEnd: 3,\n },\n body: {\n paddingX: 5,\n paddingBottom: 6,\n flex: 1,\n overflow: props.scrollBehavior === \"inside\" ? \"auto\" : undefined,\n },\n footer: {\n paddingX: 3,\n paddingBottom: 3,\n },\n }),\n sizes: {\n xs: getSize(\"xs\"),\n sm: getSize(\"sm\"),\n md: getSize(\"md\"),\n lg: getSize(\"lg\"),\n xl: getSize(\"xl\"),\n \"2xl\": getSize(\"2xl\"),\n \"3xl\": getSize(\"3xl\"),\n \"4xl\": getSize(\"4xl\"),\n \"5xl\": getSize(\"5xl\"),\n \"6xl\": getSize(\"6xl\"),\n full: getSize(\"full\"),\n },\n defaultProps: {\n size: \"md\",\n },\n});\n\nexport default config;\n\n/**\n * Since the `maxWidth` prop references theme.sizes internally,\n * we can leverage that to size our modals.\n */\nfunction getSize(value: string): PartsStyleObject<typeof parts> {\n if (value === \"full\") {\n return {\n dialog: {\n maxWidth: \"100vw\",\n minHeight: \"100vh\",\n \"@supports(min-height: -webkit-fill-available)\": {\n minHeight: \"-webkit-fill-available\",\n },\n marginY: 0,\n },\n };\n }\n return {\n dialog: { maxWidth: value },\n };\n}\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst parts = anatomy(\"NumericStepper\").parts(\n \"container\",\n \"button\",\n \"text\",\n \"input\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n input: {\n fontSize: \"sm\",\n fontWeight: \"bold\",\n marginX: 1,\n paddingX: 1,\n borderRadius: \"xs\",\n textAlign: \"center\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n ...baseText(\"default\", props),\n ...baseBackground(\"default\", props),\n\n _disabled: {\n pointerEvents: \"none\",\n opacity: 0.5,\n },\n\n _hover: {\n ...baseBorder(\"default\", props),\n },\n\n _active: {\n ...baseBackground(\"active\", props),\n },\n\n ...focusVisibleStyles(props),\n },\n text: {\n fontSize: \"sm\",\n fontWeight: \"bold\",\n marginX: 1,\n paddingX: 1,\n textAlign: \"center\",\n width: \"4ch\",\n ...baseText(\"default\", props),\n },\n button: {\n minWidth: \"24px\",\n minHeight: \"24px\",\n },\n }),\n});\n\nexport default config;\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy } from \"@chakra-ui/theme-tools\";\nimport { ghostBackground } from \"../utils/ghost-utils\";\nimport { baseText } from \"../utils/base-utils\";\n\nconst parts = anatomy(\"Pagination\").parts(\n \"listItem\",\n \"link\",\n \"activeButton\",\n \"disabled\",\n \"icon\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props: any) => ({\n activeButton: {\n fontWeight: \"bold\",\n ...commonStyles,\n ...ghostBackground(\"active\", props),\n _hover: {\n ...ghostBackground(\"hover\", props),\n borderRadius: 50,\n },\n _active: {\n borderRadius: 50,\n ...ghostBackground(\"active\", props),\n },\n },\n disabled: {\n ...commonStyles,\n cursor: \"not-allowed\",\n pointerEvents: \"none\",\n boxShadow: \"none\",\n ...baseText(\"disabled\", props),\n },\n listItem: {\n display: \"flex\",\n },\n link: {\n ...commonStyles,\n ...ghostBackground(\"default\", props),\n ...baseText(\"default\", props),\n _hover: {\n ...ghostBackground(\"hover\", props),\n borderRadius: 50,\n _disabled: {\n ...baseText(\"disabled\", props),\n },\n },\n _active: {\n borderRadius: 50,\n ...ghostBackground(\"active\", props),\n },\n },\n icon: {\n bottom: \"-0.03em !important\",\n },\n }),\n});\n\nconst commonStyles = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 5,\n height: 5,\n backgroundImage: \"none\",\n borderRadius: 50,\n fontSize: \"xs\",\n};\n\nexport default config;\n","import { popoverAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { cssVar, mode } from \"@chakra-ui/theme-tools\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst $popperBg = cssVar(\"popper-bg\");\nconst $arrowBg = cssVar(\"popper-arrow-bg\");\nconst $arrowShadowColor = cssVar(\"popper-arrow-shadow-color\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n popper: {\n zIndex: \"popover\",\n },\n content: {\n [$popperBg.variable]: mode(\n \"colors.surface.tertiary.light\",\n \"colors.surface.tertiary.dark\",\n )(props),\n backgroundColor: $popperBg.reference,\n [$arrowBg.variable]: $popperBg.reference,\n [$arrowShadowColor.variable]: \"colors.blackAlpha.300\",\n color: \"white\", // TODO: Should this be a semantic token? Where does it fit in?\n borderRadius: \"sm\",\n padding: 1.5,\n zIndex: \"inherit\",\n maxWidth: \"20em\",\n },\n arrow: {\n backgroundColor: \"transparent\",\n boxShadow: \"none\",\n clipPath:\n \"path('M 0 0 Q 2.4 6 0 12 Q 6 9.6 12 12 Q 9.6 6 12 0 Q 6 2.4 0 0 z')\",\n },\n closeButton: {\n position: \"absolute\",\n color: \"white\",\n ...focusVisibleStyles(props),\n _hover: {\n backgroundColor: \"whiteAlpha.100\",\n },\n _active: {\n backgroundColor: \"whiteAlpha.200\",\n },\n borderRadius: \"sm\",\n top: 2,\n right: 1,\n },\n }),\n sizes: {\n sm: {\n content: {\n paddingX: 1.5,\n paddingY: 1,\n },\n },\n lg: {\n content: {\n paddingX: 3,\n paddingY: 2,\n },\n },\n },\n});\n\nexport default config;\n","import { anatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/styled-system\";\nimport { mode } from \"@chakra-ui/theme-tools\";\n\nconst parts = anatomy(\"progressBar\").parts(\n \"container\",\n \"background\",\n \"progress\",\n \"description\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n minWidth: \"100px\",\n },\n background: {\n display: \"flex\",\n backgroundColor: props.isActive\n ? mode(\n \"brand.surface.default.dark\",\n \"brand.surface.default.light\",\n )(props)\n : undefined,\n borderRadius: \"sm\",\n justifyContent: \"flex-start\",\n marginX: \"auto\",\n },\n progress: {\n backgroundColor: props.isActive\n ? mode(\"brand.surface.active.light\", \"brand.surface.active.dark\")(props)\n : mode(\"icon.disabled.light\", \"icon.disabled.dark\")(props),\n borderRadius: \"sm\",\n maxWidth: \"100%\",\n transition: \"width .2s ease-out\",\n },\n description: {\n textAlign: \"center\",\n marginTop: 2,\n marginX: \"auto\",\n fontWeight: \"bold\",\n },\n }),\n});\n\nexport default config;\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy, mode } from \"@chakra-ui/theme-tools\";\n\nconst parts = anatomy(\"progress-indicator\").parts(\n \"root\",\n \"container\",\n \"progressDot\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n root: {\n width: \"100%\",\n },\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 \"&[aria-current='step']\": {\n circle: {\n fill: mode(\n \"brand.surface.default.light\",\n \"brand.surface.default.dark\",\n )(props),\n },\n },\n circle: {\n fill: mode(\"icon.disabled.light\", \"icon.disabled.dark\")(props),\n },\n },\n }),\n defaultProps: {\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { floatingBackground, floatingBorder } from \"../utils/floating-utils\";\nimport { anatomy } from \"@chakra-ui/theme-tools\";\nimport { outlineBorder } from \"../utils/outline-utils\";\n\nconst parts = anatomy(\"radio-card\").parts(\n \"container\",\n \"checked\",\n \"radioInput\",\n \"focused\",\n \"focusedChecked\",\n);\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props: any) => ({\n container: {\n overflow: \"hidden\",\n fontSize: \"inherit\",\n display: \"block\",\n cursor: \"pointer\",\n borderRadius: \"sm\",\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n\n _disabled: {\n pointerEvents: \"none\",\n ...baseBackground(\"disabled\", props),\n ...baseBorder(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n },\n checked: {\n outline: \"2px solid\",\n ...outlineBorder(\"focus\", props),\n ...floatingBackground(\"active\", props),\n },\n radioInput: {\n appearance: \"none\",\n position: \"absolute\",\n opacity: 0,\n zIndex: -1,\n },\n }),\n variants: {\n base: (props) => ({\n container: {\n ...baseText(\"default\", props),\n ...baseBackground(\"default\", props),\n ...baseBorder(\"default\", props),\n _hover: {\n ...baseBackground(\"hover\", props),\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"active\", props),\n },\n },\n checked: {\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"active\", props),\n },\n },\n focusedChecked: {\n outline: \"4px solid\",\n outlineStyle: \"double\",\n ...outlineBorder(\"focus\", props),\n outlineOffset: \"-1px\",\n },\n focused: {\n outline: \"2px solid\",\n ...outlineBorder(\"focus\", props),\n outlineOffset: \"1px\",\n boxShadow: `inset 0 0 0 1px rgba(0, 0, 0, 0.40)`,\n _hover: {\n ...baseBorder(\"hover\", props),\n boxShadow: \"none\",\n outlineOffset: \"0px\",\n },\n },\n }),\n floating: (props) => ({\n container: {\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n boxShadow: \"sm\",\n _hover: {\n ...floatingBackground(\"hover\", props),\n ...floatingBorder(\"hover\", props),\n boxShadow: \"md\",\n },\n _active: {\n ...floatingBackground(\"active\", props),\n ...floatingBorder(\"active\", props),\n },\n },\n checked: {\n _hover: {\n ...floatingBorder(\"hover\", props),\n boxShadow: \"md\",\n },\n _active: {\n ...floatingBackground(\"active\", props),\n ...floatingBorder(\"active\", props),\n },\n },\n focusedChecked: {\n outline: \"4px solid\",\n outlineStyle: \"double\",\n ...outlineBorder(\"focus\", props),\n outlineOffset: \"-1px\",\n },\n focused: {\n outline: \"2px solid\",\n ...outlineBorder(\"focus\", props),\n outlineOffset: \"1px\",\n boxShadow: `inset 0 0 0 1px rgba(0, 0, 0, 0.10)`,\n _hover: {\n ...floatingBorder(\"hover\", props),\n boxShadow: \"md\",\n outlineOffset: \"0px\",\n },\n },\n }),\n },\n});\n\nexport default config;\n","import { radioAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { mode } from \"@chakra-ui/theme-tools\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n _hover: {\n \"input:enabled + .chakra-radio__control\": {\n backgroundColor: \"inherit\",\n borderColor: mode(\"text.default.light\", \"text.default.dark\")(props),\n },\n \"input:enabled:checked + .chakra-radio__control\": {\n color: brandBackground(\"hover\", props).backgroundColor,\n borderColor: brandBackground(\"hover\", props).backgroundColor,\n },\n },\n },\n label: {\n userSelect: \"none\",\n _disabled: { opacity: 0.4 },\n },\n control: {\n width: 4,\n height: 4,\n backgroundColor: \"inherit\",\n border: \"2px solid\",\n borderColor: baseBorder(\"default\", props).outlineColor,\n borderRadius: \"50%\",\n\n ...focusVisibleStyles(props),\n\n _disabled: {\n ...baseBackground(\"disabled\", props),\n ...baseBorder(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n _checked: {\n color: mode(\n \"brand.surface.default.light\",\n \"brand.surface.default.dark\",\n )(props),\n borderColor: \"currentColor\",\n _before: {\n content: `\"\"`,\n display: \"inline-block\",\n position: \"relative\",\n width: \"50%\",\n height: \"50%\",\n borderRadius: \"50%\",\n background: \"currentColor\",\n },\n _disabled: {\n pointerEvents: \"none\",\n ...baseBackground(\"disabled\", props),\n ...baseBorder(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n },\n },\n }),\n});\nexport default config;\n","import { selectAnatomy } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { baseText } from \"../utils/base-utils\";\nimport { default as Input } from \"./input\";\nimport { inputBaseStyle, inputVariant } from \"../utils/input-utils\";\n\nconst parts = selectAnatomy.extend(\"root\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n root: {\n width: \"100%\",\n height: \"fit-content\",\n position: \"relative\",\n \"& + label\": {\n fontSize: [\"mobile.sm\", \"desktop.sm\"],\n top: \"0.2rem\",\n left: 3,\n zIndex: 2,\n position: \"absolute\",\n marginY: 2,\n transformOrigin: \"top left\",\n transform: [\n \"scale(0.825) translateY(-12px)\",\n \"scale(0.825) translateY(-14px)\",\n ],\n },\n },\n field: {\n ...inputBaseStyle(props).field,\n appearance: \"none\",\n paddingTop: \"1rem\",\n },\n icon: {\n width: 5,\n height: 5,\n insetEnd: \"0.5rem\",\n position: \"relative\",\n color: \"currentColor\",\n strokeLinecap: \"round\",\n fontSize: \"sm\",\n _disabled: {\n ...baseText(\"disabled\", props),\n },\n },\n }),\n variants: {\n base: (props) => ({\n field: {\n ...inputVariant(\"base\", props),\n },\n }),\n floating: (props) => ({\n field: {\n ...inputVariant(\"floating\", props),\n },\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\nimport { keyframes } from \"@chakra-ui/system\";\nimport { cssVar, getColor, mode } from \"@chakra-ui/theme-tools\";\n\nconst fade = (startColor: string, endColor: string) =>\n keyframes({\n from: { borderColor: startColor, background: startColor },\n to: { borderColor: endColor, background: endColor },\n });\n\nconst $startColor = cssVar(\"skeleton-start-color\");\nconst $endColor = cssVar(\"skeleton-end-color\");\n\nconst config = defineStyleConfig({\n baseStyle: (props) => {\n const defaultStartColor = mode(\"blackAlpha.300\", \"whiteAlpha.300\")(props);\n const defaultEndColor = mode(\"blackAlpha.100\", \"whiteAlpha.100\")(props);\n\n const {\n startColor = defaultStartColor,\n endColor = defaultEndColor,\n speed,\n theme,\n } = props;\n\n const start = getColor(theme, startColor);\n const end = getColor(theme, endColor);\n\n return {\n [$startColor.variable]: start,\n [$endColor.variable]: end,\n opacity: 1,\n borderRadius: \"xs\",\n borderColor: start,\n background: end,\n animation: `${speed}s linear infinite alternate ${fade(start, end)}`,\n };\n },\n});\nexport default config;\n","import { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { anatomy, mode } from \"@chakra-ui/theme-tools\";\nimport { baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { accentText, accentBackground } from \"../utils/accent-utils\";\n\nconst parts = anatomy(\"stepper\").parts(\n \"root\",\n \"container\",\n \"innerContainer\",\n \"title\",\n \"stepCounter\",\n \"stepContainer\",\n \"stepButton\",\n \"stepNumber\",\n \"stepTitle\",\n \"closeButton\",\n);\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: {\n root: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: [\"space-between\", null, \"center\"],\n minHeight: [\"48px\", null, \"60px\"],\n overflowX: \"auto\",\n width: \"100%\",\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 WebkitBoxOrient: \"vertical\",\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 base: () => ({\n root: {\n backgroundColor: \"transparent\",\n },\n }),\n accent: (props) => ({\n root: {\n backgroundColor: mode(\"accent.bg.light\", \"accent.bg.dark\")(props),\n ...accentText(\"default\", props),\n },\n stepButton: {\n color:\n props.state === \"disabled\"\n ? baseText(\"disabled\", props).color\n : props.state === \"completed\"\n ? baseText(\"default\", props).color\n : brandText(\"default\", props).color,\n _hover: {\n backgroundColor:\n props.state === \"disabled\"\n ? \"transparent\"\n : accentBackground(\"hover\", props).backgroundColor,\n },\n },\n backButton: {\n _hover: {\n ...brandBackground(\"hover\", props),\n },\n },\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { switchAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { calc, cssVar, mode } from \"@chakra-ui/theme-tools\";\nimport { baseBackground, baseBorder } from \"../utils/base-utils\";\nimport { brandBackground } from \"../utils/brand-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst $width = cssVar(\"switch-track-width\");\nconst $height = cssVar(\"switch-track-height\");\nconst $diff = cssVar(\"switch-track-diff\");\nconst diffValue = calc.subtract($width, $height);\nconst $translateX = cssVar(\"switch-thumb-x\");\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n container: {\n [$diff.variable]: diffValue,\n [$translateX.variable]: $diff.reference,\n _rtl: {\n [$translateX.variable]: calc($diff).negate().toString(),\n },\n },\n track: {\n width: [$width.reference],\n height: [$height.reference],\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n ...baseBorder(\"default\", props),\n ...focusVisibleStyles(props),\n ...baseBackground(\"default\", props),\n\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _checked: {\n ...brandBackground(\"default\", props),\n outlineColor: \"transparent\",\n\n _hover: {\n ...baseBackground(\"default\", props),\n ...brandBackground(\"hover\", props),\n },\n },\n _disabled: {\n pointerEvents: \"none\",\n ...baseBackground(\"default\", props),\n ...baseBorder(\"disabled\", props),\n _checked: {\n ...baseBackground(\"disabled\", props),\n ...baseBorder(\"disabled\", props),\n },\n },\n },\n thumb: {\n transitionProperty: \"transform\",\n transitionDuration: \"normal\",\n borderRadius: \"50%\",\n width: [$height.reference],\n height: [$height.reference],\n\n backgroundColor: mode(\"base.icon.light\", \"base.icon.dark\")(props),\n \"[data-disabled] &\": {\n backgroundColor: mode(\n \"icon.disabled.light\",\n \"icon.disabled.dark\",\n )(props),\n },\n _checked: {\n backgroundColor: mode(\"brand.icon.light\", \"brand.icon.dark\")(props),\n transform: `translateX(${$translateX.reference})`,\n },\n },\n }),\n sizes: {\n sm: {\n container: {\n [$width.variable]: \"54px\",\n [$height.variable]: \"24px\",\n },\n track: {\n borderRadius: \"24px\",\n padding: \"2px\",\n },\n },\n md: {\n container: {\n [$width.variable]: \"66px\",\n [$height.variable]: \"30px\",\n },\n track: {\n borderRadius: \"30px\",\n padding: \"3px\",\n },\n },\n lg: {\n container: {\n [$width.variable]: \"78px\",\n [$height.variable]: \"36px\",\n },\n track: {\n borderRadius: \"36px\",\n padding: \"3px\",\n },\n },\n },\n defaultProps: {\n size: \"md\",\n },\n});\nexport default config;\n","import { tableAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { mode } from \"@chakra-ui/theme-tools\";\nimport { baseBorder, baseText } from \"../utils/base-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst numericStyles = {\n \"&[data-is-numeric=true]\": {\n textAlign: \"end\",\n },\n};\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n table: {\n borderCollapse: \"collapse\",\n ...baseText(\"default\", props),\n width: \"100%\",\n },\n th: {\n fontWeight: \"bold\",\n textAlign: \"start\",\n },\n td: {\n textAlign: \"start\",\n },\n tfoot: {\n tr: {\n \"&:last-of-type\": {\n th: { borderBottomWidth: 0 },\n },\n },\n },\n caption: {\n marginTop: 4,\n fontFamily: \"heading\",\n textAlign: \"center\",\n fontWeight: \"bold\",\n color: \"currentColor\",\n },\n }),\n variants: {\n simple: (props) => ({\n th: {\n borderBottom: \"sm\",\n borderColor: mode(`blackAlpha.200`, `whiteAlpha.300`)(props),\n ...numericStyles,\n },\n td: {\n borderBottom: \"sm\",\n borderColor: mode(`blackAlpha.200`, `whiteAlpha.300`)(props),\n ...numericStyles,\n },\n }),\n outline: (props) => ({\n tbody: {\n tr: {\n transitionDuration: \"fast\",\n transitionProperty: \"background-color, box-shadow\",\n _hover: {\n ...baseBorder(\"hover\", props),\n outlineOffset: \"-2px\",\n backgroundColor: mode(\n props.colorScheme === \"grey\" ? \"mint\" : \"coralGreen\",\n \"whiteAlpha.200\",\n )(props),\n },\n _last: {\n borderBottomRadius: \"md\",\n },\n },\n },\n th: {\n border: mode(\"none\", \"md\"),\n borderColor: mode(\"transparent\", `whiteAlpha.200`)(props),\n backgroundColor: mode(`${props.colorScheme}.100`, \"darkTeal\")(props),\n ...numericStyles,\n },\n td: {\n border: mode(\"sm\", \"md\"),\n borderColor: mode(\n props.colorScheme === \"grey\" ? \"silver\" : \"blackAlpha.200\",\n \"whiteAlpha.200\",\n )(props),\n ...numericStyles,\n _first: {\n borderLeft: \"none\",\n },\n },\n tr: {\n _last: {\n td: {\n borderBottom: \"none\",\n },\n },\n },\n }),\n unstyled: {},\n },\n sizes: {\n sm: {\n table: {\n fontSize: [\"mobile.xs\", \"desktop.xs\"],\n },\n th: {\n paddingX: 3,\n paddingY: 1.5,\n },\n td: {\n paddingX: 3,\n paddingY: 1.5,\n },\n caption: {\n paddingX: 3,\n paddingY: 1.5,\n },\n },\n md: {\n table: {\n fontSize: [\"mobile.sm\", \"desktop.sm\"],\n },\n th: {\n paddingX: 3,\n paddingY: 1.5,\n },\n td: {\n paddingX: 3,\n paddingY: 1.5,\n },\n caption: {\n paddingX: 3,\n paddingY: 1.5,\n },\n },\n lg: {\n table: {\n fontSize: [\"mobile.sm\", \"desktop.sm\"],\n },\n th: {\n paddingX: 3,\n paddingY: \"15px\",\n },\n td: {\n paddingX: 3,\n paddingY: \"15px\",\n },\n caption: {\n paddingX: 3,\n paddingY: \"15px\",\n },\n },\n },\n defaultProps: {\n variant: \"simple\",\n size: \"md\",\n colorScheme: \"grey\",\n },\n});\n\nexport default config;\n","import { tabsAnatomy as parts } from \"@chakra-ui/anatomy\";\nimport { createMultiStyleConfigHelpers } from \"@chakra-ui/react\";\nimport { mode } from \"@chakra-ui/theme-tools\";\nimport { accentBackground, accentText } from \"../utils/accent-utils\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { brandBackground, brandText } from \"../utils/brand-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\n\nconst helpers = createMultiStyleConfigHelpers(parts.keys);\n\nconst config = helpers.defineMultiStyleConfig({\n baseStyle: (props) => ({\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n tablist: {\n display: \"flex\",\n alignItems: \"center\",\n gap: 0.5,\n width: props.isFitted ? \"fit-content\" : \"100%\",\n borderRadius: \"xl\",\n },\n tab: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n width: props.isFitted ? \"fit-content\" : \"100%\",\n height: \"100%\",\n whiteSpace: \"nowrap\",\n borderRadius: \"xl\",\n ...focusVisibleStyles(props),\n _disabled: {\n ...baseBackground(\"disabled\", props),\n ...baseText(\"disabled\", props),\n },\n _selected: {\n pointerEvents: \"none\",\n ...brandBackground(\"default\", props),\n ...brandText(\"default\", props),\n _hover: {\n ...brandBackground(\"hover\", props),\n ...brandText(\"hover\", props),\n },\n _active: {\n ...brandBackground(\"active\", props),\n ...brandText(\"active\", props),\n },\n },\n },\n }),\n variants: {\n base: (props) => ({\n tablist: {\n ...baseBackground(\"default\", props),\n ...baseText(\"default\", props),\n ...baseBorder(\"default\", props),\n },\n tab: {\n ...baseText(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n outlineOffset: \"-2px\",\n },\n _accent: {\n ...baseBackground(\"active\", props),\n },\n },\n }),\n accent: (props) => ({\n tablist: {\n backgroundColor: mode(\"accent.bg.light\", \"accent.bg.dark\")(props),\n ...accentText(\"default\", props),\n },\n tab: {\n ...accentText(\"default\", props),\n _hover: {\n ...accentBackground(\"hover\", props),\n },\n _accent: {\n ...accentBackground(\"active\", props),\n },\n },\n }),\n },\n sizes: {\n xs: {\n tablist: {\n height: 5,\n padding: \"2px\",\n },\n tab: {\n paddingX: 2,\n paddingY: 0,\n },\n },\n sm: {\n tablist: {\n height: 6,\n padding: 0.5,\n },\n tab: {\n paddingX: 2,\n },\n },\n md: {\n tablist: {\n height: 7,\n padding: 0.5,\n },\n tab: {\n fontWeight: \"bold\",\n paddingX: 2,\n },\n },\n lg: {\n tablist: {\n height: 8,\n padding: \"4px\",\n },\n tab: {\n fontWeight: \"bold\",\n paddingX: 3,\n },\n },\n },\n defaultProps: {\n size: \"sm\",\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\nimport { inputBaseStyle, inputVariant } from \"../utils/input-utils\";\n\nconst config = defineStyleConfig({\n baseStyle: (props) => ({\n ...inputBaseStyle(props).field,\n minHeight: \"calc(var(--label-height) + 4rem)\",\n verticalAlign: \"top\",\n appearance: \"none\",\n borderTop: \"0.8rem solid transparent\",\n \"&:not(:placeholder-shown)\": {\n \"&:has(+ label)\": {\n borderTop: \"var(--label-height) solid transparent\", // use border in stead of padding to avoid problems with scrolling\n },\n \"& + label\": {\n transform: \"scale(0.825) translateY(-10px)\",\n },\n },\n }),\n variants: {\n base: (props) => ({\n ...inputVariant(\"base\", props),\n }),\n floating: (props) => ({\n ...inputVariant(\"floating\", props),\n }),\n },\n defaultProps: {\n variant: \"base\",\n },\n});\n\nexport default config;\n","import { defineStyleConfig } from \"@chakra-ui/react\";\n\nconst config = defineStyleConfig({\n baseStyle: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"fit-content\",\n maxWidth: \"60ch\",\n minWidth: \"40ch\",\n paddingX: 2,\n paddingY: 1.5,\n boxShadow: \"sm\",\n borderRadius: \"sm\",\n },\n variants: {\n success: {\n backgroundColor: \"seaMist\",\n },\n info: {\n backgroundColor: \"lightBlue\",\n },\n error: {\n backgroundColor: \"lightRed\",\n },\n },\n});\n\nexport default config;\n","import { Theme, defineStyleConfig } from \"@chakra-ui/react\";\nimport { colors } from \"../foundations\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { floatingBackground } from \"../utils/floating-utils\";\nimport { mode } from \"@chakra-ui/theme-tools\";\n\nconst config = defineStyleConfig({\n baseStyle: (props: any) => ({\n appearance: \"none\",\n border: \"none\",\n overflow: \"hidden\",\n fontSize: \"inherit\",\n display: \"block\",\n borderRadius: \"md\",\n color: \"text.default.light\",\n ...focusVisibleStyles(props),\n ...getColorSchemeBaseProps(props),\n }),\n});\n\nexport default config;\n\ntype CardThemeProps = {\n colorScheme:\n | \"white\"\n | \"grey\"\n | \"green\"\n | \"orange\"\n | \"red\"\n | \"yellow\"\n | \"blue\"\n | \"darkBlue\"\n | \"darkGreen\"\n | \"darkYellow\";\n theme: Theme;\n colorMode: \"light\" | \"dark\";\n};\n\nconst getColorSchemeBaseProps = (props: CardThemeProps) => {\n switch (props.colorScheme) {\n case \"white\":\n return {\n ...floatingBackground(\"default\", props),\n color: mode(\"text.default.light\", \"text.default.dark\")(props),\n };\n case \"grey\":\n return {\n backgroundColor: \"lightGrey\",\n };\n case \"green\": {\n return {\n backgroundColor: \"seaMist\",\n };\n }\n case \"red\": {\n return {\n backgroundColor: \"pink\",\n };\n }\n case \"darkBlue\": {\n return {\n backgroundColor: \"darkBlue\",\n color: \"white\",\n };\n }\n case \"darkGreen\": {\n return {\n backgroundColor: \"pine\",\n color: \"white\",\n };\n }\n case \"darkYellow\": {\n return {\n backgroundColor: \"banana\",\n };\n }\n default:\n return {\n backgroundColor: colors[props.colorScheme]?.[100] ?? \"default\",\n };\n }\n};\n","import { defineStyleConfig } from \"@chakra-ui/react\";\nimport { baseBackground, baseBorder, baseText } from \"../utils/base-utils\";\nimport { floatingBackground, floatingBorder } from \"../utils/floating-utils\";\nimport { focusVisibleStyles } from \"../utils/focus-utils\";\nimport { accentBackground, accentText } from \"../utils/accent-utils\";\n\nconst config = defineStyleConfig({\n baseStyle: (props) => ({\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 transitionDuration: \"fast\",\n \"button&, a&, label&, &.is-clickable\": {\n ...focusVisibleStyles(props),\n },\n _disabled: {\n ...baseBackground(\"disabled\", props),\n ...baseBorder(\"disabled\", props),\n ...baseText(\"disabled\", props),\n outline: \"none\",\n pointerEvents: \"none\",\n },\n }),\n variants: {\n base: (props) => ({\n cursor: \"pointer\",\n ...baseBorder(\"default\", props),\n _hover: {\n ...baseBorder(\"hover\", props),\n },\n _active: {\n ...baseBackground(\"active\", props),\n ...baseBorder(\"active\", props),\n },\n }),\n accent: (props) => ({\n ...accentText(\"default\", props),\n ...accentBackground(\"default\", props),\n boxShadow: \"sm\",\n _hover: {\n ...accentBackground(\"hover\", props),\n boxShadow: \"md\",\n },\n _active: {\n ...accentBackground(\"active\", props),\n boxShadow: \"none\",\n },\n }),\n floating: (props) => ({\n ...floatingBackground(\"default\", props),\n ...floatingBorder(\"default\", props),\n boxShadow: \"sm\",\n _hover: {\n ...floatingBackground(\"hover\", props),\n ...floatingBorder(\"hover\", props),\n boxShadow: \"md\",\n },\n _active: {\n ...floatingBorder(\"default\", props),\n ...floatingBackground(\"active\", props),\n boxShadow: \"none\",\n },\n }),\n },\n});\n\nexport default config;\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","import { useToast as useChakraToast } from \"@chakra-ui/react\";\nimport React, { useCallback } from \"react\";\nimport { ActionToast } from \"./ActionToast\";\nimport { BaseToast, BaseToastProps } from \"./BaseToast\";\nimport { ClosableToast } from \"./ClosableToast\";\n\ntype ClosableToastOptions = {\n isClosable: true;\n /** Callback for when the close button is clicked */\n onClose?: () => void;\n};\n\ntype ActionToastOptions = {\n isClosable?: false;\n /** Callback for when the button is clicked */\n onClick: () => void;\n /** The button text */\n buttonText: string;\n};\n\ntype BaseToastOptions = {\n /** How the toast looks */\n variant: BaseToastProps[\"variant\"];\n /** The content of the toast. Keep it short! */\n text: string;\n /**\n * Number of milliseconds to show the toast.\n *\n * Defaults to 6000.\n */\n duration?: number;\n};\n\nexport type ToastOptions = BaseToastOptions &\n (ClosableToastOptions | ActionToastOptions | {});\n\n/**\n * Creates a function that can trigger toasts\n *\n * ```tsx\n * const toast = useToast();\n * return (\n * <Button\n * onClick={() =>\n * toast({ text: \"Hello world\", variant: \"info\" })\n * }\n * >\n * Click me\n * </Button>\n * ```\n */\nexport const useToast = () => {\n const toast = useChakraToast();\n const wrappedToast = useCallback(\n (opts: ToastOptions) => {\n const Toast = getToastComponent(opts);\n toast({\n ...opts,\n render: Toast,\n });\n },\n [toast],\n );\n return wrappedToast;\n};\n\ntype RenderArgs = { onClose: () => void; id?: string | number };\n\nconst getToastComponent = (opts: ToastOptions) => {\n if (\"isClosable\" in opts && opts.isClosable) {\n return ({ onClose, id }: RenderArgs) => {\n if (id === undefined) {\n return null; // Handle the case where id is undefined\n }\n\n return (\n <ClosableToast\n id={id.toString()}\n variant={opts.variant}\n onClose={() => {\n if (opts.onClose) {\n opts.onClose();\n }\n onClose();\n }}\n >\n {opts.text}\n </ClosableToast>\n );\n };\n }\n if (\"buttonText\" in opts) {\n return ({ id }: RenderArgs) => {\n if (id === undefined) {\n return null; // Handle the case where id is undefined\n }\n\n return (\n <ActionToast\n id={id.toString()}\n variant={opts.variant}\n buttonText={opts.buttonText}\n onClick={opts.onClick}\n >\n {opts.text}\n </ActionToast>\n );\n };\n }\n return ({ id }: RenderArgs) => {\n if (id === undefined) {\n return null; // Handle the case where id is undefined\n }\n\n return (\n <BaseToast id={id.toString()} variant={opts.variant}>\n {opts.text}\n </BaseToast>\n );\n };\n};\n","import { Box } from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { Button } from \"..\";\nimport { BaseToast, BaseToastProps } from \"./BaseToast\";\n\ntype ActionToastProps = BaseToastProps & {\n onClick: () => void;\n buttonText: string;\n};\n/** A toast with a button */\nexport const ActionToast = ({\n children,\n onClick,\n variant,\n buttonText,\n id,\n}: ActionToastProps) => {\n return (\n <BaseToast variant={variant} id={id}>\n <Box marginRight={2} flexGrow=\"1\">\n {children}\n </Box>\n <Button variant=\"tertiary\" size=\"sm\" onClick={onClick}>\n {buttonText}\n </Button>\n </BaseToast>\n );\n};\n","import { Flex, useStyleConfig } from \"@chakra-ui/react\";\nimport {\n ErrorOutline24Icon,\n InformationOutline24Icon,\n SuccessOutline24Icon,\n} from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { createTexts, useTranslation } from \"..\";\n\nexport type BaseToastProps = {\n children: React.ReactNode;\n variant: \"success\" | \"info\" | \"error\";\n id?: string;\n};\n/**\n * A basic toast component.\n **/\nexport const BaseToast = ({ children, variant, id }: BaseToastProps) => {\n const styles = useStyleConfig(\"Toast\", { variant });\n return (\n <Flex sx={styles} id={id}>\n <ToastIcon variant={variant} />\n {children}\n </Flex>\n );\n};\n\ntype ToastIconProps = Pick<BaseToastProps, \"variant\">;\n\n/** Internal component for selecting the correct icon to show */\nconst ToastIcon = ({ variant }: ToastIconProps) => {\n const Icon = getIcon(variant);\n const { t } = useTranslation();\n return (\n <Icon\n flexShrink={0}\n aria-label={t(texts[variant])}\n marginRight={1}\n marginY={1.5}\n color=\"darkGrey\"\n />\n );\n};\n\nconst getIcon = (variant: BaseToastProps[\"variant\"]) => {\n switch (variant) {\n case \"info\":\n return InformationOutline24Icon;\n case \"success\":\n return SuccessOutline24Icon;\n case \"error\":\n return ErrorOutline24Icon;\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","import { Box, useMultiStyleConfig } from \"@chakra-ui/react\";\nimport { CloseFill18Icon } from \"@vygruppen/spor-icon-react\";\nimport React from \"react\";\nimport { IconButton, createTexts, useTranslation } from \"..\";\nimport { BaseToast, BaseToastProps } from \"./BaseToast\";\n\ntype ClosableToastProps = BaseToastProps & {\n onClose: () => void;\n};\n/** A closable toast */\nexport const ClosableToast = ({\n children,\n onClose,\n variant,\n id,\n}: ClosableToastProps) => {\n const styles = useMultiStyleConfig(\"Toast\", { variant });\n const { t } = useTranslation();\n return (\n <BaseToast variant={variant} id={id}>\n <Box flexGrow=\"1\">{children}</Box>\n <IconButton\n sx={styles.dismissButton}\n variant=\"ghost\"\n aria-label={t(texts.dismiss)}\n icon={<CloseFill18Icon />}\n onClick={onClose}\n />\n </BaseToast>\n );\n};\n\nconst texts = createTexts({\n dismiss: {\n nb: \"Lukk\",\n nn: \"Lukk\",\n sv: \"Dölj\",\n en: \"Dismiss\",\n },\n});\n","import {\n Popover,\n PopoverArrow,\n PopoverBody,\n PopoverCloseButton,\n PopoverContent,\n PopoverProps,\n PopoverTrigger,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\n\nexport type TooltipProps = PopoverProps & {\n /**\n * Whatever is supposed to trigger the tooltip.\n * Must be focusable - like a link or button */\n children: React.ReactNode;\n /** Callback for when the tooltip is requested to close */\n onClose?: () => void;\n /** Should the tooltip have a close button? */\n withCloseButton?: boolean;\n /** The content of the tooltip */\n content: React.ReactNode;\n /** Use this prop if you want to control the open state */\n isOpen?: boolean;\n /** Whether or not the tooltip is open by default */\n defaultIsOpen?: boolean;\n /**\n * Where the tooltip should be placed by default.\n *\n * Note - this is a suggestion, and may be overridden by space concerns.\n */\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n /**\n * The amount of spacing.\n * Tooltips with lots of content should be `lg`. Defaults to `sm`.\n **/\n size?: \"sm\" | \"lg\";\n};\n/** A tooltip component. */\nexport const Tooltip = ({\n children,\n content,\n onClose,\n isOpen,\n defaultIsOpen,\n placement = \"bottom\",\n size = \"sm\",\n withCloseButton = false,\n ...props\n}: TooltipProps) => {\n return (\n <Popover\n onClose={onClose}\n isOpen={isOpen}\n defaultIsOpen={defaultIsOpen}\n placement={placement}\n size={size}\n arrowSize={12}\n arrowShadowColor=\"none\"\n {...props}\n >\n <PopoverTrigger>{children}</PopoverTrigger>\n <PopoverContent>\n <PopoverArrow />\n {withCloseButton && <PopoverCloseButton />}\n <PopoverBody>{content}</PopoverBody>\n </PopoverContent>\n </Popover>\n );\n};\n","export { Collapse, Fade, ScaleFade, Slide, SlideFade } from \"@chakra-ui/react\";\nexport type {\n CollapseProps,\n FadeProps,\n ScaleFadeProps,\n SlideFadeProps,\n SlideProps,\n} from \"@chakra-ui/react\";\n","/** This file works as a proxy for all Chakra UI exports */\nexport {\n DarkMode,\n LightMode,\n Portal,\n defineStyleConfig,\n extendTheme,\n useBreakpointValue,\n useClipboard,\n useColorMode,\n useColorModePreference,\n useColorModeValue,\n useControllableProp,\n useDisclosure,\n useMergeRefs,\n useOutsideClick,\n usePrefersReducedMotion,\n useTheme,\n useToken,\n} from \"@chakra-ui/react\";\nexport type {\n CSSWithMultiValues,\n ComponentStyleConfig,\n PortalProps,\n UseClipboardOptions,\n UseDisclosureProps,\n UseOutsideClickProps,\n} from \"@chakra-ui/react\";\nimport { useMediaQuery as useMediaQueryChakra } from \"@chakra-ui/react\";\n\n/**\n * @deprecated useMediaQuery is deprecated. Use CSS only to determine the media query. - SSR is not supported and usage of useMediaQuery for rendering will cause hydration errors.\n */\nexport const useMediaQuery = useMediaQueryChakra;\n\nexport { useSize } from \"@chakra-ui/react-use-size\";\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 .replace(/[\\u0300-\\u036f]/g, \"\") // Remove diacritics\n .replace(/[\\u00C6\\u00E6]/g, \"ae\") // Replace Æ, æ\n .replace(/[\\u00D8\\u00F8]/g, \"oe\") // Replace Ø, ø\n .replace(/[\\u00C5\\u00E5]/g, \"aa\") // Replace Å, å\n // Extend the replacement rules as needed\n .toLowerCase()\n .replace(/\\s+/g, \"-\") // Replace spaces with -\n .replace(/[^\\w-]+/g, \"\") // Remove all non-word chars\n .replace(/--+/g, \"-\") // Replace multiple - with single -\n .replace(/^-+/, \"\") // Trim - from start of text\n .replace(/-+$/, \"\")\n .substring(0, maxLength)\n );\n}\n"]}
|