@danske/sapphire-react-lab 0.104.0 → 0.105.2

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.
Files changed (35) hide show
  1. package/README.md +2 -1
  2. package/build/cjs/index.js +729 -234
  3. package/build/cjs/index.js.map +1 -1
  4. package/build/esm/Amount/src/Amount.js +76 -0
  5. package/build/esm/Amount/src/Amount.js.map +1 -0
  6. package/build/esm/Amount/src/useGroupAmount.js +35 -0
  7. package/build/esm/Amount/src/useGroupAmount.js.map +1 -0
  8. package/build/esm/Autocomplete/src/Autocomplete.js +13 -3
  9. package/build/esm/Autocomplete/src/Autocomplete.js.map +1 -1
  10. package/build/esm/Breadcrumbs/src/BreadcrumbItemLink.js +1 -1
  11. package/build/esm/Breadcrumbs/src/BreadcrumbItemLink.js.map +1 -1
  12. package/build/esm/Filtering/src/FilterDropdown.js +8 -3
  13. package/build/esm/Filtering/src/FilterDropdown.js.map +1 -1
  14. package/build/esm/Filtering/src/SearchableSelectFilter.js +2 -1
  15. package/build/esm/Filtering/src/SearchableSelectFilter.js.map +1 -1
  16. package/build/esm/NumberField/src/NumberField.js +53 -21
  17. package/build/esm/NumberField/src/NumberField.js.map +1 -1
  18. package/build/esm/NumberField/src/StepperButton.js +8 -4
  19. package/build/esm/NumberField/src/StepperButton.js.map +1 -1
  20. package/build/esm/NumberField/src/cursorHelpers.js +55 -0
  21. package/build/esm/NumberField/src/cursorHelpers.js.map +1 -0
  22. package/build/esm/NumberField/src/formatHelpers.js +81 -0
  23. package/build/esm/NumberField/src/formatHelpers.js.map +1 -0
  24. package/build/esm/NumberField/src/keyboardHelpers.js +120 -0
  25. package/build/esm/NumberField/src/keyboardHelpers.js.map +1 -0
  26. package/build/esm/NumberField/src/useNumberFieldFormatting.js +94 -0
  27. package/build/esm/NumberField/src/useNumberFieldFormatting.js.map +1 -0
  28. package/build/esm/NumberField/src/useSapphireNumberField.js +1 -1
  29. package/build/esm/NumberField/src/useSapphireNumberField.js.map +1 -1
  30. package/build/esm/TagGroup/src/Tag.js +31 -23
  31. package/build/esm/TagGroup/src/Tag.js.map +1 -1
  32. package/build/esm/index.js +1 -0
  33. package/build/esm/index.js.map +1 -1
  34. package/build/index.d.ts +72 -7
  35. package/package.json +36 -36
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/Accordion/src/AccordionContext.ts","../../src/Accordion/src/Accordion.tsx","../../src/Accordion/src/utils.ts","../../src/Accordion/src/AccordionHeading.tsx","../../src/Accordion/src/AccordionItem.tsx","../../src/Accordion/src/AccordionPanel.tsx","../../src/Accordion/index.ts","../../src/Alert/src/Alert.tsx","../../src/Autocomplete/i18n/index.ts","../../src/Autocomplete/src/Autocomplete.tsx","../../src/Breadcrumbs/src/useBreadcrumbThreshold.ts","../../src/Breadcrumbs/src/Breadcrumbs.tsx","../../src/Breadcrumbs/src/BreadcrumbsSeparator.tsx","../../src/Breadcrumbs/src/BreadcrumbOverflowMenu.tsx","../../src/Breadcrumbs/src/BreadcrumbItemStatic.tsx","../../src/Breadcrumbs/src/BreadcrumbItemLink.tsx","../../src/Breadcrumbs/src/BreadcrumbItem.tsx","../../src/FileDropzone/src/FileTrigger.tsx","../../src/FileDropzone/src/utils.ts","../../src/FileDropzone/i18n/index.ts","../../src/FileDropzone/src/FileDropzone.tsx","../../src/Filtering/src/FilterDropdown.tsx","../../src/Filtering/src/SearchableSelectFilter.tsx","../../src/Flag/src/Flag.tsx","../../src/LabeledValue/src/LabeledValue.tsx","../../src/NumberField/i18n/index.ts","../../src/NumberField/src/StepperButton.tsx","../../src/NumberField/src/useAutofillStyle.ts","../../src/NumberField/src/useSapphireNumberField.ts","../../src/NumberField/src/NumberField.tsx","../../src/Sidebar/src/SecondarySidebarContext.tsx","../../src/Sidebar/src/ResponsiveSidebarContext.tsx","../../src/Sidebar/src/Panel.tsx","../../src/Sidebar/src/useSidebar.ts","../../src/Sidebar/src/Sidebar.tsx","../../src/Sidebar/src/Header.tsx","../../src/Sidebar/src/Item.tsx","../../src/Sidebar/src/ExpandableItem.tsx","../../src/Sidebar/src/Section.tsx","../../src/Sidebar/src/Body.tsx","../../src/Sidebar/src/List.tsx","../../src/Sidebar/index.ts","../../src/ProgressIndicator/src/ProgressIndicator.tsx","../../src/Slider/src/Slider.tsx","../../src/Slider/index.ts","../../src/TagGroup/src/Tag.tsx","../../src/TagGroup/src/TagGroup.tsx","../../src/TagGroup/src/TagItem.tsx","../../src/TimeField/src/TimeFieldSegment.tsx","../../src/TimeField/i18n/index.ts","../../src/TimeField/src/TimeField.tsx"],"sourcesContent":["import { TypographyHeadingProps } from '@danske/sapphire-react';\nimport React, { useContext } from 'react';\n\ninterface AccordionContextProps {\n sidePadding?: number | string;\n headerLevel?: TypographyHeadingProps['level'];\n}\n\nexport const AccordionContext = React.createContext<AccordionContextProps>({\n sidePadding: undefined,\n headerLevel: 5,\n});\n\nexport function useAccordionContext(): AccordionContextProps {\n const context = useContext(AccordionContext);\n if (context) {\n return context;\n }\n throw new Error(\n 'Accordion context can only be used within Accordion component.'\n );\n}\n","import React, { ForwardedRef, forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps, useObjectRef } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/accordion/accordion.module.css';\nimport {\n SapphireStyleProps,\n TypographyHeadingProps,\n useSapphireStyleProps,\n useThemeCheck,\n withTruthyZero as hasAllowedCustomSidePadding,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { FocusScope } from '@react-aria/focus';\n\nimport { AccordionContext } from './AccordionContext';\nimport { DisclosureGroup, DisclosureGroupProps } from 'react-aria-components';\n\nexport type TreeExpansionMode = 'single' | 'multiple';\n\nexport interface AccordionProps\n extends GlobalDomAttributes,\n SapphireStyleProps,\n DOMProps,\n Pick<\n DisclosureGroupProps,\n | 'allowsMultipleExpanded'\n | 'expandedKeys'\n | 'defaultExpandedKeys'\n | 'onExpandedChange'\n | 'children'\n | 'isDisabled'\n > {\n /** Set aria-level attribute for item's header. Accessibility requirement.\n * Defines the hierarchical level of an element within a page structure.\n * @default 5\n */\n headerLevel?: TypographyHeadingProps['level'];\n /**\n * Removes the divider after the last accordion item.\n * Useful when rendered in a container which already has borders.\n */\n hideLastDivider?: boolean;\n /**\n * Counter acts the side padding, so that accordion is shifted to the left with same amount\n * and having side padding * 2 added to width – resulting in full width accordion.\n * Useful in scenarions where accordion is inside a padded container and desired layout has accordion going from edge to edge horizontally.\n * @example\n * ```tsx\n * <Accordion hasNegativeSideMargin>...</Accordion>\n * ```\n */\n hasNegativeSideMargin?: boolean;\n /**\n * Add custom sized padding to the sides of the accordion items.\n * @example\n * ```tsx\n * <Accordion sidePadding={tokens.size.spacingContainerHorizontalM.value} hasNegativeSideMargin>...</Accordion>\n * ```\n */\n sidePadding?: number | string;\n}\n\nexport const Accordion = forwardRef(function Accordion(\n {\n allowsMultipleExpanded = true,\n headerLevel = 5,\n hideLastDivider = false,\n hasNegativeSideMargin = false,\n sidePadding,\n children,\n expandedKeys,\n defaultExpandedKeys,\n onExpandedChange,\n isDisabled,\n ...props\n }: AccordionProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n const forwardedRef = useObjectRef<HTMLDivElement>(ref);\n\n return (\n <FocusScope>\n <AccordionContext.Provider value={{ sidePadding, headerLevel }}>\n <DisclosureGroup\n {...filterDOMProps(props, { global: true, labelable: true })}\n allowsMultipleExpanded={allowsMultipleExpanded}\n expandedKeys={expandedKeys}\n defaultExpandedKeys={defaultExpandedKeys}\n onExpandedChange={onExpandedChange}\n isDisabled={isDisabled}\n ref={forwardedRef}\n className={clsx(\n styles['sapphire-accordion'],\n {\n [styles['sapphire-accordion--without-last-divider']]:\n hideLastDivider,\n [styles['sapphire-accordion--negative-margin-self']]:\n !hasAllowedCustomSidePadding(sidePadding) &&\n hasNegativeSideMargin,\n },\n styleProps.className\n )}\n style={{\n ...(hasAllowedCustomSidePadding(sidePadding) &&\n hasNegativeSideMargin\n ? {\n marginLeft:\n typeof sidePadding === 'string'\n ? `calc(${sidePadding} * -1)`\n : `-${sidePadding}px`,\n width: `calc(100% + calc(${sidePadding} * 2${\n typeof sidePadding === 'string' ? '' : 'px'\n }))`,\n }\n : {}),\n ...styleProps.style,\n }}\n >\n {children}\n </DisclosureGroup>\n </AccordionContext.Provider>\n </FocusScope>\n );\n});\n","export const customPaddingStyleProps = (sidePadding: number | string) => ({\n paddingLeft:\n typeof sidePadding === 'string' ? sidePadding : `${sidePadding}px`,\n paddingRight:\n typeof sidePadding === 'string' ? sidePadding : `${sidePadding}px`,\n});\n","import React, { forwardRef, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/accordion/accordion.module.css';\nimport {\n Icon,\n Typography,\n TypographyHeadingProps,\n withTruthyZero as hasAllowedCustomSidePadding,\n} from '@danske/sapphire-react';\nimport { ChevronDown } from '@danske/sapphire-icons/react';\nimport { Button } from 'react-aria-components';\nimport { useAccordionContext } from './AccordionContext';\nimport { customPaddingStyleProps } from './utils';\n\nexport interface AccordionHeadingProps extends DOMProps {\n children?: ReactNode;\n headerLevel?: TypographyHeadingProps['level'];\n}\n\nexport const AccordionHeading = forwardRef(function AccordionHeading(\n { children, headerLevel, ...props }: AccordionHeadingProps,\n ref: React.Ref<HTMLDivElement>\n): React.JSX.Element {\n const { sidePadding, headerLevel: contextHeaderLevel } =\n useAccordionContext();\n\n return (\n <div\n role=\"heading\"\n aria-level={headerLevel ?? contextHeaderLevel}\n {...filterDOMProps(props, { global: true })}\n ref={ref}\n >\n <Button\n slot=\"trigger\"\n className={({ isFocusVisible }) =>\n clsx(styles['sapphire-accordion__item-header'], styles['js-focus'], {\n [styles['is-focus']]: isFocusVisible,\n })\n }\n style={\n hasAllowedCustomSidePadding(sidePadding)\n ? customPaddingStyleProps(sidePadding)\n : {}\n }\n >\n <Typography.Heading level={6} elementType=\"span\">\n <div className={clsx(styles['sapphire-accordion__item-heading'])}>\n {children}\n </div>\n </Typography.Heading>\n <div className={clsx(styles['sapphire-accordion__item-arrow'])}>\n <Icon size=\"lg\">\n <ChevronDown />\n </Icon>\n </div>\n </Button>\n </div>\n );\n});\n","import React, { forwardRef } from 'react';\nimport clsx from 'clsx';\n\nimport styles from '@danske/sapphire-css/components/accordion/accordion.module.css';\n\nimport { Disclosure } from 'react-aria-components';\nimport { DisclosureProps } from 'react-aria-components';\nimport { useFocusManager } from '@react-aria/focus';\nimport { useEvent, useObjectRef } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\n\nexport interface AccordionItemProps\n extends DOMProps,\n Pick<DisclosureProps, 'children' | 'isDisabled'> {}\n\nexport const AccordionItem = forwardRef(function AccordionItem(\n { children, id, ...props }: AccordionItemProps,\n forwardedRef: React.Ref<HTMLDivElement>\n): JSX.Element {\n const ref = useObjectRef<HTMLDivElement>(forwardedRef);\n const focusManager = useFocusManager();\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (!focusManager) return;\n\n if (\n !(e.target instanceof Element) ||\n e.target.getAttribute('slot') !== 'trigger'\n )\n return;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n focusManager.focusNext();\n break;\n case 'ArrowUp':\n e.preventDefault();\n focusManager.focusPrevious();\n break;\n case 'Home':\n e.preventDefault();\n focusManager.focusFirst();\n break;\n case 'End':\n e.preventDefault();\n focusManager.focusLast();\n break;\n default:\n return;\n }\n };\n\n useEvent(ref, 'keydown', onKeyDown);\n\n return (\n <Disclosure\n ref={ref}\n id={id}\n className={({ isExpanded, isDisabled }) =>\n clsx(styles['sapphire-accordion__item'], {\n [styles['sapphire-accordion__item--open']]: isExpanded,\n [styles['is-disabled']]: isDisabled,\n })\n }\n {...props}\n >\n <div className={clsx(styles['sapphire-accordion__item-content-wrapper'])}>\n {children}\n </div>\n </Disclosure>\n );\n});\n","import React, { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\nimport styles from '@danske/sapphire-css/components/accordion/accordion.module.css';\nimport { DisclosurePanel, DisclosurePanelProps } from 'react-aria-components';\nimport { useAccordionContext } from './AccordionContext';\nimport { customPaddingStyleProps } from './utils';\nimport { withTruthyZero as hasAllowedCustomSidePadding } from '@danske/sapphire-react';\nimport { DOMProps } from '@react-types/shared';\n\nexport interface AccordionPanelProps\n extends DOMProps,\n Pick<DisclosurePanelProps, 'children' | 'role'> {}\n\nexport const AccordionPanel = forwardRef(function AccordionPanel(\n { children, ...props }: AccordionPanelProps,\n ref: React.Ref<HTMLDivElement>\n): React.JSX.Element {\n const { sidePadding } = useAccordionContext();\n\n return (\n <DisclosurePanel\n ref={ref}\n {...filterDOMProps(props, { global: true })}\n className={clsx(styles['sapphire-accordion__item-content'])}\n style={{\n /**\n * useDisclosure hook from react-aria uses css variable --disclosure-panel-height to\n * animate the height of the panel.\n */\n height: 'var(--disclosure-panel-height)',\n }}\n {...props}\n >\n <div\n style={{\n ...(hasAllowedCustomSidePadding(sidePadding)\n ? customPaddingStyleProps(sidePadding)\n : {}),\n }}\n className={styles['sapphire-accordion__item-content-inner']}\n >\n {children}\n </div>\n </DisclosurePanel>\n );\n});\n","import { Accordion, type AccordionProps } from './src/Accordion';\nimport {\n AccordionHeading,\n AccordionHeadingProps,\n} from './src/AccordionHeading';\nimport { AccordionItem, type AccordionItemProps } from './src/AccordionItem';\nimport { AccordionContext } from './src/AccordionContext';\nimport { AccordionPanel, AccordionPanelProps } from './src/AccordionPanel';\n\n/*\n * Before moving Accordion component to the core package, it's important to check on the\n * latest release of \"@react-aria/accordion\".\n * The hook and the component package are marked as \"pre-release\", so we can expect some changes.\n *\n * https://github.com/adobe/react-spectrum/issues/2801#issuecomment-1035377858\n * https://github.com/adobe/react-spectrum/discussions/6635#discussioncomment-9990027\n *\n * The current implementation is based on the SelectableCollection API, which creates bugs when\n * focusable items are used inside of the Accordion.Item.\n * E.g. UC-3414 (fixed), UC-3545 (to-do)\n *\n * Alternatively, we can re-implement the component.\n */\nconst _Accordion = Object.assign(Accordion, {\n Heading: AccordionHeading,\n Item: AccordionItem,\n Panel: AccordionPanel,\n});\n\nexport {\n _Accordion as Accordion,\n AccordionContext,\n type AccordionProps,\n type AccordionItemProps,\n type AccordionHeadingProps,\n type AccordionPanelProps,\n};\n","import React, { ReactNode } from 'react';\nimport {\n SapphireStyleProps,\n useThemeCheck,\n useSapphireStyleProps,\n Typography,\n Icon,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport {\n CheckmarkOutline,\n Information,\n Warning,\n Error,\n} from '@danske/sapphire-icons/react';\nimport alertStyles from '@danske/sapphire-css/components/alert/alert.module.css';\nimport { clsx } from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\n\nexport interface SapphireAlertProps\n extends GlobalDomAttributes,\n SapphireStyleProps {\n /**\n * The content of the alert.\n */\n children?: ReactNode;\n\n /**\n * The title of the alert.\n */\n title?: ReactNode;\n\n /**\n * @default 'info'\n */\n variant?: 'info' | 'positive' | 'negative' | 'warning';\n}\n\nexport function Alert({\n children,\n title,\n variant = 'info',\n ...props\n}: SapphireAlertProps): React.JSX.Element {\n useThemeCheck();\n const {\n styleProps: { style, className },\n } = useSapphireStyleProps(props);\n\n const getIcon = (variant: string) => {\n switch (variant) {\n case 'warning':\n return <Warning />;\n case 'positive':\n return <CheckmarkOutline />;\n case 'negative':\n return <Error />;\n default:\n return <Information />;\n }\n };\n\n return (\n <div\n {...filterDOMProps(props, { global: true })}\n className={clsx(\n alertStyles['sapphire-alert'],\n {\n [alertStyles['sapphire-alert--positive']]: variant === 'positive',\n [alertStyles['sapphire-alert--negative']]: variant === 'negative',\n [alertStyles['sapphire-alert--warning']]: variant === 'warning',\n },\n className\n )}\n style={style}\n role=\"alert\"\n >\n <span className={alertStyles['sapphire-alert__icon']}>\n <Icon size=\"sm\">{getIcon(variant)}</Icon>\n </span>\n <div className={alertStyles['sapphire-alert__title']}>\n <Typography.Body size=\"sm\" isSemibold>\n {title}\n </Typography.Body>\n </div>\n <div className={alertStyles['sapphire-alert__content']}>\n <Typography.Body elementType=\"section\" size=\"md\">\n {children}\n </Typography.Body>\n </div>\n </div>\n );\n}\n","import da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nexport default {\n 'da-DK': da,\n 'en-US': en,\n 'de-DE': de,\n 'fi-FI': fi,\n 'nb-NO': no,\n 'pl-PL': pl,\n 'sv-SE': se,\n};\n","import React, { ReactElement, useRef } from 'react';\nimport {\n ListBoxProps,\n useThemeCheck,\n useSapphireStyleProps,\n SapphireStyleProps,\n ListBoxPopover,\n useComboBoxState,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { useComboBox } from '@react-aria/combobox';\nimport { useMessageFormatter } from '@react-aria/i18n';\nimport intlMessages from '../i18n';\nimport { useFocusableRef } from '@react-spectrum/utils';\nimport type { ComboBoxProps } from '@react-types/combobox';\nimport { filterDOMProps } from '@react-aria/utils';\n\nexport type AutocompleteProps<T extends object> = GlobalDomAttributes &\n SapphireStyleProps &\n Pick<\n ComboBoxProps<T>,\n | 'items'\n | 'children'\n | 'inputValue'\n | 'defaultInputValue'\n | 'onInputChange'\n | 'onSelectionChange'\n | 'isDisabled'\n > &\n Pick<ListBoxProps<T>, 'loadingState' | 'loadingSkeletonRowsCount'> & {\n /**\n * Render function for the input element.\n * Receives props that should be spread onto the input component.\n */\n renderInput: (inputProps: any) => ReactElement;\n\n /**\n * Accessible label for the suggestions listbox.\n */\n listboxAriaLabel?: string;\n\n /**\n * Controlled selected value.\n */\n value?: React.Key | null;\n\n /**\n * Decide what items to display in the dropdown menu.\n * @default 'String.includes'\n */\n defaultFilter?: (textValue: string, inputValue: string) => boolean;\n };\n\nexport function Autocomplete<T extends object>(\n props: AutocompleteProps<T>\n): ReactElement {\n useThemeCheck();\n const formatMessage = useMessageFormatter(intlMessages);\n\n const {\n inputValue,\n renderInput,\n loadingState,\n loadingSkeletonRowsCount,\n listboxAriaLabel,\n ...otherProps\n } = props;\n\n const {\n styleProps: { style, className },\n } = useSapphireStyleProps(props);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const listBoxRef = useFocusableRef<HTMLUListElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const triggerRef = useFocusableRef<HTMLDivElement>(null);\n\n const state = useComboBoxState({\n ...props,\n inputValue,\n allowsEmptyCollection: loadingState === 'loading',\n allowsCustomValue: true,\n shouldCloseOnBlur: true,\n });\n\n const { inputProps, listBoxProps } = useComboBox(\n {\n ...props,\n 'aria-label': listboxAriaLabel || formatMessage('listbox-suggestions'),\n inputRef,\n listBoxRef,\n popoverRef,\n },\n state\n );\n\n const inputElement = renderInput({\n ...inputProps,\n isDisabled: props.isDisabled,\n inputRef,\n 'aria-haspopup': 'listbox',\n 'aria-expanded': state.isOpen,\n onChange: (value: string) => {\n inputProps.onChange?.({\n target: { value },\n currentTarget: { value },\n } as React.ChangeEvent<HTMLInputElement>);\n },\n });\n\n return (\n <div\n ref={triggerRef}\n {...filterDOMProps(otherProps, { global: true })}\n style={{ display: 'inline-flex', ...style }}\n className={className}\n >\n {inputElement}\n {state.isOpen && (\n <ListBoxPopover<T>\n state={state}\n triggerRef={triggerRef}\n popoverRef={popoverRef}\n listBoxRef={listBoxRef}\n listBoxProps={listBoxProps}\n loadingState={loadingState}\n loadingSkeletonRowsCount={loadingSkeletonRowsCount}\n selectWidth={triggerRef.current?.offsetWidth}\n disableSelectedStyles\n isNonModal\n >\n {props.children || []}\n </ListBoxPopover>\n )}\n </div>\n );\n}\n","import { useState, useMemo, useEffect } from 'react';\nimport { useResizeObserver } from '@react-aria/utils';\n\nexport const useBreadcrumbThreshold = (\n childrenCount: number,\n containerRef: React.RefObject<HTMLElement>,\n breadcrumbRef: React.RefObject<HTMLOListElement>\n) => {\n const [itemWidths, setItemWidths] = useState<number[]>([]);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n\n const { shouldRenderOverflow, maxVisibleTailChildren } = useMemo(() => {\n if (!containerWidth || itemWidths.length === 0) {\n return {\n shouldRenderOverflow: false,\n maxVisibleTailChildren: childrenCount,\n };\n }\n\n // Exit early if the container is wider than all items combined\n const totalItemWidth = itemWidths.reduce((a, b) => a + b, 0);\n if (totalItemWidth <= containerWidth) {\n return {\n shouldRenderOverflow: false,\n maxVisibleTailChildren: itemWidths.length - 1,\n };\n }\n\n // The minimum number of items in the container is 2 (first and last).\n let totalWidth = itemWidths[0] + itemWidths[itemWidths.length - 1];\n let visibleTailCount = 1; // Last item counted by default\n\n for (\n let i = itemWidths.length - 2;\n i > 0 && totalWidth + itemWidths[i] < containerWidth;\n i--\n ) {\n totalWidth += itemWidths[i];\n visibleTailCount++;\n }\n\n visibleTailCount--; // When we are overflowing, take into account the icon button that will be rendered\n return {\n shouldRenderOverflow: true,\n maxVisibleTailChildren: Math.max(1, visibleTailCount),\n };\n }, [itemWidths, containerWidth, childrenCount]);\n\n /**\n * Compute the individual widths of the breadcrumb items.\n * It's important to have these values for all the items, since they disappear if the container\n * is overflowing. We need these values to recompute the number of items that can fit,\n * but we can't do that once they have disappeared from the container.\n */\n const computeItemWidths = () => {\n if (!breadcrumbRef.current) return;\n const breadcrumbItems = Array.from(\n breadcrumbRef.current.children\n ) as HTMLElement[];\n const widths = breadcrumbItems\n .map((item) => item.offsetWidth)\n .filter(Boolean);\n\n if (widths.length === breadcrumbItems.length) {\n setItemWidths(widths);\n }\n };\n\n /**\n * Recompute the item widths when the children change.\n */\n useEffect(() => {\n if (childrenCount !== itemWidths.length) {\n computeItemWidths();\n }\n }, [containerRef.current, childrenCount]);\n\n useResizeObserver({\n ref: containerRef,\n onResize: () => {\n if (!containerRef.current) return;\n setContainerWidth(containerRef.current.offsetWidth);\n },\n });\n\n const overflowNodes = useMemo(() => {\n if (childrenCount > 0 && shouldRenderOverflow) {\n const tailCount = maxVisibleTailChildren > 1 ? maxVisibleTailChildren : 1;\n const actualTailCount =\n maxVisibleTailChildren === 1 ? maxVisibleTailChildren : tailCount;\n const limitedTailCount = Math.min(actualTailCount, 5); // By design, we limit the number of visible tail items to 6\n const tailStartIndex = childrenCount - limitedTailCount;\n // Return overflow indexes (hidden items) - all items except first and tail items\n return Array.from({ length: tailStartIndex - 1 }, (_, i) => i + 1);\n }\n return [];\n }, [childrenCount, shouldRenderOverflow, maxVisibleTailChildren]);\n\n return {\n overflowNodes,\n };\n};\n","import React, { createContext } from 'react';\nimport { useBreadcrumbs } from '@react-aria/breadcrumbs';\nimport { Collection, CollectionBuilder } from '@react-aria/collections';\nimport { filterDOMProps, mergeProps } from '@react-aria/utils';\nimport { forwardRefType } from '@react-types/shared';\nimport { ForwardedRef, forwardRef, useContext, useRef } from 'react';\nimport {\n BreadcrumbsContext as RACBreadcrumbsContext,\n BreadcrumbsProps as RACBreadcrumbsProps,\n CollectionRendererContext,\n useContextProps,\n} from 'react-aria-components';\nimport { useBreadcrumbThreshold } from './useBreadcrumbThreshold';\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/breadcrumbs/breadcrumbs.module.css';\nimport clsx from 'clsx';\nimport { BreadcrumbItemNode } from './types';\n\nexport type BreadcrumbsProps<T extends object> = Pick<\n RACBreadcrumbsProps<T>,\n 'aria-label' | 'isDisabled' | 'children'\n> & {\n /**\n * The size of the breadcrumbs component.\n *\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg';\n /**\n * Maximum width for the breadcrumbs container. When content overflows,\n * it will show an overflow menu with the first and last items.\n */\n maxWidth?: React.CSSProperties['maxWidth'];\n} & SapphireStyleProps &\n GlobalDomAttributes;\n\nexport const BreadcrumbsContext = createContext<{\n size: 'sm' | 'md' | 'lg';\n overflowNodes: (BreadcrumbItemNode | null)[];\n isDisabled?: boolean;\n}>({ size: 'md', overflowNodes: [] });\n\n/**\n * Implementation is based on React Aria's Breadcrumbs component.\n * It was necessary to own the implementation to add support for\n * handling the collection directly, as we need it for the overflow calculation logic.\n */\nexport const Breadcrumbs = (forwardRef as forwardRefType)(function Breadcrumbs<\n T extends object\n>(\n { maxWidth, size = 'md', ...props }: BreadcrumbsProps<T>,\n fwdRef: ForwardedRef<HTMLOListElement>\n) {\n const [RACprops, ref] = useContextProps(props, fwdRef, RACBreadcrumbsContext);\n const { styleProps } = useSapphireStyleProps(RACprops);\n const containerRef = useRef<HTMLDivElement>(null);\n const { CollectionRoot } = useContext(CollectionRendererContext);\n const { navProps } = useBreadcrumbs(RACprops);\n const DOMProps = filterDOMProps(RACprops, { global: true });\n\n return (\n <CollectionBuilder content={<Collection {...RACprops} />}>\n {(collection) => {\n const { overflowNodes } = useBreadcrumbThreshold(\n collection.size,\n containerRef,\n ref\n );\n const keys = Array.from(collection.getKeys());\n return (\n <div\n ref={containerRef}\n style={{\n ...styleProps.style,\n maxWidth,\n display: 'flex',\n }}\n >\n <ol\n ref={ref}\n {...mergeProps(DOMProps, navProps)}\n className={clsx(styles['sapphire-breadcrumbs'], {\n [styles['sapphire-breadcrumbs--sm']]: size === 'sm',\n [styles['sapphire-breadcrumbs--lg']]: size === 'lg',\n })}\n >\n <BreadcrumbsContext.Provider\n value={{\n size,\n overflowNodes: overflowNodes.map((index) =>\n collection.getItem(keys[index])\n ),\n isDisabled: RACprops.isDisabled,\n }}\n >\n <RACBreadcrumbsContext.Provider value={RACprops}>\n <CollectionRoot collection={collection} />\n </RACBreadcrumbsContext.Provider>\n </BreadcrumbsContext.Provider>\n </ol>\n </div>\n );\n }}\n </CollectionBuilder>\n );\n});\n","import clsx from 'clsx';\nimport React, { useContext } from 'react';\nimport styles from '@danske/sapphire-css/components/breadcrumbs/breadcrumbs.module.css';\nimport { ChevronRight } from '@danske/sapphire-icons/react';\nimport { Icon } from '@danske/sapphire-react';\nimport { BreadcrumbsContext } from './Breadcrumbs';\n\nexport const BreadcrumbsSeparator = (): JSX.Element => {\n const { size } = useContext(BreadcrumbsContext);\n\n // Based on the design\n const iconSize = size === 'lg' ? 'md' : 'sm';\n\n return (\n <span\n className={clsx(styles['sapphire-breadcrumbs__separator'])}\n aria-hidden=\"true\"\n >\n <Icon size={iconSize}>\n <ChevronRight />\n </Icon>\n </span>\n );\n};\n","import { Menu, MenuItem, IconButton } from '@danske/sapphire-react';\nimport { OverflowMenuHorizontal } from '@danske/sapphire-icons/react';\nimport React from 'react';\nimport { useContext } from 'react';\nimport { BreadcrumbsContext } from './Breadcrumbs';\nimport { BreadcrumbsSeparator } from './BreadcrumbsSeparator';\n\n/**\n * Component that is being rendered in the case of overflowed breadcrumbs.\n * It is an internal component, so it's automatically rendered when the Breadcrumb\n * component detects overflow.\n */\nexport const BreadcrumbOverflowMenu = (): JSX.Element => {\n const { size, overflowNodes } = useContext(BreadcrumbsContext);\n\n return (\n <>\n <Menu\n triggerElement={\n <IconButton aria-label=\"Show more breadcrumbs\" size={size}>\n <OverflowMenuHorizontal />\n </IconButton>\n }\n >\n {overflowNodes.map((item) =>\n !item ? null : (\n <MenuItem\n key={item.key}\n id={item.key}\n href={item.href}\n isDisabled={!item.href}\n >\n {item.rendered}\n </MenuItem>\n )\n )}\n </Menu>\n <BreadcrumbsSeparator />\n </>\n );\n};\n","import React, { forwardRef } from 'react';\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n GlobalDomAttributes,\n TooltipIfNeeded,\n} from '@danske/sapphire-react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/breadcrumbs/breadcrumbs.module.css';\nimport { mergeRefs } from '@react-aria/utils';\n\nexport type BreadcrumbItemStaticProps = Pick<\n React.HTMLAttributes<HTMLSpanElement>,\n 'children'\n> &\n SapphireStyleProps &\n GlobalDomAttributes & { size: 'sm' | 'md' | 'lg' };\n\nexport const BreadcrumbItemStatic = forwardRef<\n HTMLSpanElement,\n BreadcrumbItemStaticProps\n>(function BreadcrumbItemStatic({ size, ...props }, ref): JSX.Element {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n return (\n <TooltipIfNeeded<HTMLSpanElement> title={props.children}>\n {(tooltipContentRef, tooltipProps) => {\n const positioningRef = tooltipProps?.ref;\n return (\n <span\n {...tooltipProps}\n ref={\n mergeRefs(\n ref,\n tooltipContentRef,\n positioningRef\n ) as React.LegacyRef<HTMLSpanElement>\n }\n className={clsx(\n styles['sapphire-breadcrumbs__item--static'],\n {\n [styles['sapphire-breadcrumbs__item--static--sm']]:\n size === 'sm',\n [styles['sapphire-breadcrumbs__item--static--lg']]:\n size === 'lg',\n },\n styleProps.className\n )}\n style={styleProps.style}\n >\n {props.children}\n </span>\n );\n }}\n </TooltipIfNeeded>\n );\n});\n","import React, { useContext, forwardRef } from 'react';\nimport {\n Button,\n ButtonProps,\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { FocusableRef } from '@react-types/shared';\nimport { BreadcrumbsContext } from './Breadcrumbs';\nimport { BreadcrumbItemStatic } from './BreadcrumbItemStatic';\n\nexport type BreadcrumbItemLinkProps = Pick<\n ButtonProps<'a'>,\n | 'children'\n | 'href'\n | 'hrefLang'\n | 'target'\n | 'rel'\n | 'isDisabled'\n | 'icon'\n // TODO when moving to \"core\", use types under `types.ts` instead of plain strings\n | 'aria-label'\n | 'aria-labelledby'\n | 'aria-describedby'\n | 'aria-details'\n | 'UNSAFE_onClick'\n> &\n SapphireStyleProps &\n GlobalDomAttributes;\n\nexport const BreadcrumbItemLink = forwardRef(function BreadcrumbItemLink(\n { children, ...props }: BreadcrumbItemLinkProps,\n ref: FocusableRef<HTMLAnchorElement>\n): JSX.Element {\n useThemeCheck();\n const { styleProps: sapphireStyleProps } = useSapphireStyleProps(props);\n const { style, className, ...styleProps } = sapphireStyleProps;\n const { size } = useContext(BreadcrumbsContext);\n\n if (!props.href) {\n return (\n <BreadcrumbItemStatic {...props} size={size}>\n {children}\n </BreadcrumbItemStatic>\n );\n }\n\n return (\n <Button\n {...props}\n {...styleProps}\n UNSAFE_className={className}\n UNSAFE_style={{ ...style }}\n ref={ref}\n size={size}\n variant=\"tertiary\"\n isDisabled={props.isDisabled}\n >\n {children}\n </Button>\n );\n});\n\nBreadcrumbItemLink.displayName = 'BreadcrumbItemLink';\n","import React, { useContext, ForwardedRef } from 'react';\nimport type { BreadcrumbProps as RACBreadcrumbProps } from 'react-aria-components';\nimport { CollectionNode, createLeafComponent } from '@react-aria/collections';\nimport {\n useSapphireStyleProps,\n useThemeCheck,\n SapphireStyleProps,\n Typography,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { BreadcrumbsSeparator } from './BreadcrumbsSeparator';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/breadcrumbs/breadcrumbs.module.css';\nimport { BreadcrumbsContext } from './Breadcrumbs';\nimport { BreadcrumbOverflowMenu } from './BreadcrumbOverflowMenu';\nimport { BreadcrumbItemNode } from './types';\nimport {\n BreadcrumbItemLink,\n BreadcrumbItemLinkProps,\n} from './BreadcrumbItemLink';\n\nexport type BreadcrumbItemProps = {\n isDisabled?: boolean;\n} & SapphireStyleProps &\n GlobalDomAttributes &\n Pick<RACBreadcrumbProps, 'children'> &\n BreadcrumbItemLinkProps;\n\nclass BreadcrumbItemCollectionNode extends CollectionNode<unknown> {\n static readonly type = 'item';\n}\n\n/**\n * The implementation is based on React Aria's BreadcrumbItem, with added support for\n * overflow menu data handling.\n */\nexport const BreadcrumbItem = createLeafComponent(\n BreadcrumbItemCollectionNode,\n function BreadcrumbItem(\n props: BreadcrumbItemProps,\n ref: ForwardedRef<HTMLLIElement>,\n node: BreadcrumbItemNode\n ): JSX.Element {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n const {\n size,\n overflowNodes,\n isDisabled: breadcrumbsDisabled,\n } = useContext(BreadcrumbsContext);\n const { isDisabled: individualDisabled = false } = props;\n\n const isCurrent = node.nextKey == null;\n const isDisabled = individualDisabled || breadcrumbsDisabled;\n\n /**\n * The item should not be rendered if it's in the overflow indexes.\n * The only exception is the first overflow menu item, which will be rendered\n * as the overflow menu trigger.\n */\n const shouldRender = !overflowNodes.some((item) => item?.key === node.key);\n const showOverflowMenu = overflowNodes[0]?.key === node.key;\n\n if (!shouldRender && !showOverflowMenu) {\n return <></>;\n }\n\n if (!shouldRender && showOverflowMenu) {\n return <BreadcrumbOverflowMenu />;\n }\n\n node.href = props.href;\n\n return (\n <li\n ref={ref}\n className={clsx(styles['sapphire-breadcrumbs__item'])}\n style={{ ...styleProps.style }}\n data-disabled={isDisabled || undefined}\n data-current={isCurrent || undefined}\n >\n {isCurrent ? (\n <Typography.Body\n elementType=\"span\"\n isSemibold\n size={size === 'lg' ? 'md' : size === 'md' ? 'sm' : 'xs'}\n >\n {node.rendered}\n </Typography.Body>\n ) : (\n <BreadcrumbItemLink isDisabled={isDisabled} {...props}>\n {node.rendered}\n </BreadcrumbItemLink>\n )}\n {!isCurrent && <BreadcrumbsSeparator />}\n </li>\n );\n }\n);\n","import React, { ForwardedRef } from 'react';\nimport { filterDOMProps, useObjectRef } from '@react-aria/utils';\nimport { PressResponder } from '@react-aria/interactions';\n\nexport interface FileSelectProps {\n /**\n * List of file types that are allowed to be selected using the file select.\n * When no list is passed, all file types will be allowed to be selected.\n * @default \"\"\n */\n acceptedFileTypes?: string[];\n /**\n * Whether multiple files are allowed to be selected using the file select.\n * @default \"false\"\n */\n allowsMultiple?: boolean;\n}\n\nexport interface FileTriggerProps extends FileSelectProps {\n /**\n * Callback for file selection.\n * @param files - the list of selected files\n * @default \"() => null\"\n */\n onSelect?: (files: FileList | null) => void;\n isDisabled?: boolean;\n children?: React.ReactNode;\n}\n\nconst HiddenFileInput = React.forwardRef(function InputWrapper(\n props: React.HTMLProps<HTMLInputElement>,\n ref: ForwardedRef<HTMLInputElement>\n) {\n return <input {...props} ref={ref} type=\"file\" style={{ display: 'none' }} />;\n});\n\nexport const FileTrigger = React.forwardRef(function FileTriggerWrapper(\n props: FileTriggerProps,\n ref: ForwardedRef<HTMLInputElement>\n) {\n const {\n acceptedFileTypes,\n allowsMultiple = false,\n onSelect = () => null,\n children,\n isDisabled = false,\n ...rest\n } = props;\n const inputRef = useObjectRef(ref);\n const domProps = filterDOMProps(rest, { global: true });\n\n return (\n <>\n <PressResponder\n isDisabled={isDisabled}\n onPress={() => {\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n inputRef.current?.click();\n }}\n >\n {children}\n </PressResponder>\n <HiddenFileInput\n {...domProps}\n disabled={isDisabled}\n ref={inputRef}\n accept={acceptedFileTypes?.toString()}\n onChange={(e) => onSelect?.((e.target as HTMLInputElement).files)}\n multiple={allowsMultiple}\n />\n </>\n );\n});\n","import { FileDropItem } from '@react-types/shared';\n\nexport const convertFileListToFileDropItems = (\n fileList: FileList | null\n): FileDropItem[] => {\n if (!fileList) {\n return [];\n }\n\n return Array.from(fileList).map((file) => ({\n kind: 'file',\n type: file.type,\n name: file.name,\n getFile: () => Promise.resolve(file),\n getText: () =>\n new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = () => reject(reader.error);\n reader.readAsText(file);\n }),\n }));\n};\n","import da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nexport default {\n 'da-DK': da,\n 'en-US': en,\n 'de-DE': de,\n 'fi-FI': fi,\n 'nb-NO': no,\n 'pl-PL': pl,\n 'sv-SE': se,\n};\n","import React, { ForwardedRef } from 'react';\nimport clsx from 'clsx';\nimport {\n Typography,\n Icon,\n SapphireStyleProps,\n useButton,\n useSapphireStyleProps,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/dropzone/dropzone.module.css';\nimport { Upload } from '@danske/sapphire-icons/react';\nimport { HoverProps, Pressable, useHover } from '@react-aria/interactions';\nimport {\n mergeProps,\n useId,\n useObjectRef,\n filterDOMProps,\n} from '@react-aria/utils';\nimport { FileSelectProps, FileTrigger } from './FileTrigger';\nimport { DropOptions, useClipboard, useDrop } from '@react-aria/dnd';\nimport { convertFileListToFileDropItems } from './utils';\nimport { useFocusRing } from '@react-aria/focus';\nimport { AriaLabelingProps } from '@react-types/shared';\nimport { useMessageFormatter } from '@react-aria/i18n';\nimport intlMessages from '../i18n';\n\nexport interface FileDropzoneProps\n extends GlobalDomAttributes,\n SapphireStyleProps,\n Pick<\n DropOptions,\n | 'getDropOperation'\n | 'onDropEnter'\n | 'onDropActivate'\n | 'onDropMove'\n | 'onDropExit'\n | 'onDrop'\n >,\n HoverProps,\n FileSelectProps,\n // TODO when moving to \"core\", use types under `types.ts` instead of plain strings\n Pick<\n AriaLabelingProps,\n 'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'aria-details'\n > {\n /**\n * Whether the dropzone has an error\n * @default false\n */\n hasError?: boolean;\n /**\n * The body text of the dropzone which can contain the instructions for the files to be uploaded.\n * Can be rendered differently based on the `isDropping` parameter, which is true if a file is about to be dropped in the zone.\n * @param isDropping - boolean that marks whether a payload is about to be dropped in the dropzone.\n */\n renderInstruction: (isDropping: boolean) => string;\n /**\n * Function that is called when the file select is opened on press, before any file is selected.\n * @default \"() => null\"\n */\n onFileSelectOpen?: () => void;\n}\n\nexport const FileDropzone = React.forwardRef(function DropzoneWrapper(\n props: FileDropzoneProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const {\n isDisabled = false,\n hasError,\n renderInstruction,\n onFileSelectOpen = () => null,\n acceptedFileTypes,\n allowsMultiple,\n onDrop = () => null,\n getDropOperation = () => 'copy',\n ...otherProps\n } = props;\n\n const id = useId();\n const paragraphId = props['aria-label'] ? undefined : id;\n const format = useMessageFormatter(intlMessages);\n const pressableRef = useObjectRef(forwardedRef);\n const { hoverProps, isHovered } = useHover({ isDisabled });\n const { styleProps } = useSapphireStyleProps(props);\n const { dropProps, isDropTarget: isDropping } = useDrop({\n ...props,\n ref: pressableRef,\n hasDropButton: true,\n isDisabled,\n getDropOperation,\n });\n const { buttonProps, isPressed } = useButton(\n { elementType: 'div' },\n pressableRef as React.RefObject<Element>\n );\n const { focusProps, isFocusVisible } = useFocusRing();\n\n const { clipboardProps } = useClipboard({\n isDisabled,\n onPaste: (items) =>\n onDrop({\n type: 'drop',\n items,\n x: 0,\n y: 0,\n dropOperation: 'copy',\n }),\n });\n\n const ariaLabel: string = props['aria-label'] || 'Dropzone';\n\n const onFileTriggerSelect = (files: FileList | null) => {\n onDrop({\n type: 'drop',\n items: convertFileListToFileDropItems(files),\n x: 0,\n y: 0,\n dropOperation: 'copy',\n });\n };\n\n return (\n <FileTrigger\n acceptedFileTypes={acceptedFileTypes}\n allowsMultiple={allowsMultiple}\n onSelect={onFileTriggerSelect}\n isDisabled={isDisabled}\n >\n <Pressable ref={pressableRef} onPress={onFileSelectOpen}>\n <div\n {...mergeProps(\n dropProps,\n hoverProps,\n clipboardProps,\n focusProps,\n buttonProps\n )}\n {...filterDOMProps(otherProps, { global: true })}\n style={{ ...styleProps.style }}\n className={clsx(\n styles['sapphire-dropzone'],\n styles['js-focus'],\n styles['js-hover'],\n {\n [styles['is-hover']]: isHovered && !isDropping,\n [styles['is-active']]: isPressed,\n [styles['is-disabled']]: isDisabled,\n [styles['is-focus']]: isFocusVisible,\n [styles['sapphire-dropzone--dropping']]: isDropping,\n [styles['sapphire-dropzone--error']]: hasError,\n },\n styleProps.className\n )}\n aria-label={ariaLabel}\n aria-invalid={hasError}\n aria-describedby={paragraphId}\n >\n <div className={clsx(styles['sapphire-dropzone__content'])}>\n <div className={clsx(styles['sapphire-dropzone__icon'])}>\n <Icon size=\"lg\">\n <Upload />\n </Icon>\n </div>\n <div className={clsx(styles['sapphire-dropzone__heading'])}>\n <Typography.Heading level={6}>\n {isDropping\n ? format('dropzone-heading-dropping')\n : allowsMultiple\n ? format('dropzone-heading-default')\n : format('dropzone-heading-default-single')}\n </Typography.Heading>\n </div>\n <div\n id={paragraphId}\n className={clsx(styles['sapphire-dropzone__paragraph'])}\n >\n <Typography.Body size=\"sm\" color=\"secondary\">\n {renderInstruction(isDropping)}\n </Typography.Body>\n </div>\n </div>\n </div>\n </Pressable>\n </FileTrigger>\n );\n});\n","import React, { useRef, ReactNode, FormEvent } from 'react';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\nimport { useEffectEvent, filterDOMProps } from '@react-aria/utils';\nimport { useControlledState } from '@react-stately/utils';\nimport {\n Button,\n ButtonGroup,\n PopoverTrigger,\n PopoverTriggerProps,\n SapphireStyleProps,\n ToggleButton,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { ChevronDown, ChevronUp } from '@danske/sapphire-icons/react';\nimport { FocusableRefValue } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/filterDropdown/filterDropdown.module.css';\n\nexport interface FilterDropdownProps\n extends GlobalDomAttributes,\n SapphireStyleProps,\n Pick<\n PopoverTriggerProps,\n 'defaultOpen' | 'isOpen' | 'onOpenChange' | 'noMaxWidth'\n > {\n /**\n * \"Filter by\" label, shown inside the trigger button.\n */\n label: ReactNode;\n /**\n * Filter value, shown inside the trigger button. `null`, `undefined` and empty string are\n * considered as unset value.\n */\n value: ReactNode;\n /**\n * Filtering UI controls, rendered in a popover.\n */\n children: ReactNode;\n /**\n * Called when:\n * - `Enter` is pressed on form fields rendered inside the popover.\n * - 'Apply' button is pressed (if `hasApplyButton` is true)\n */\n onApply?: () => void;\n /**\n * Whether to show the 'Apply' button.\n */\n hasApplyButton?: boolean;\n /**\n * Called when 'Clear' button is pressed.\n */\n onClear?: () => void;\n /**\n * Whether the button is disabled.\n */\n isDisabled?: boolean;\n /**\n * Whether the 'Apply' button is disabled.\n */\n isApplyDisabled?: boolean;\n /**\n * Whether the 'Clear' button is disabled.\n */\n isClearDisabled?: boolean;\n /**\n * The label of the 'Clear' button.\n * @default \"Clear\"\n */\n clearButtonLabel?: ReactNode;\n /**\n * The label of the 'Apply' button.\n * @default \"Apply\"\n */\n applyButtonLabel?: ReactNode;\n /**\n * The size of the buttons incl. the trigger itself.\n * @default 'md'\n */\n buttonSize?: 'sm' | 'md' | 'lg';\n}\n\n/**\n * A button with a dropdown, used for filtering UI.\n */\nexport function FilterDropdown({\n children,\n label,\n value,\n isDisabled = false,\n isApplyDisabled = false,\n isClearDisabled,\n isOpen: isOpenProp,\n applyButtonLabel = 'Apply',\n clearButtonLabel = 'Clear',\n defaultOpen = false,\n hasApplyButton = false,\n noMaxWidth,\n onApply,\n onClear,\n onOpenChange,\n buttonSize = 'md',\n ...props\n}: FilterDropdownProps): JSX.Element {\n const triggerRef = useRef<FocusableRefValue>(null);\n\n // We need to know if the dropdown is open or not, so we control the state here, still\n // allowing for both controlled and uncontrolled modes.\n const [isOpen, setIsOpen] = useControlledState(\n isOpenProp,\n defaultOpen,\n useEffectEvent(onOpenChange)\n );\n const hasValue = value != null && value !== '';\n const close = () => setIsOpen(false);\n const onSubmit = (e: FormEvent) => {\n e.preventDefault();\n onApply?.();\n close();\n // We need to manually restore focus to trigger as apply button is a form submit button\n triggerRef.current?.focus();\n };\n\n const applyButton = (\n <Button\n type=\"submit\"\n size={buttonSize}\n excludeFromTabOrder={!hasApplyButton}\n isDisabled={isApplyDisabled}\n >\n {applyButtonLabel}\n </Button>\n );\n\n return (\n <PopoverTrigger\n ref={triggerRef}\n placement=\"bottom left\"\n isOpen={isOpen}\n onOpenChange={setIsOpen}\n noMaxWidth={noMaxWidth}\n noPadding\n popoverContent={\n <form\n {...filterDOMProps(props, { global: true })}\n onSubmit={onSubmit}\n className={styles['sapphire-filter-dropdown']}\n >\n <div className={styles['sapphire-filter-dropdown__body']}>\n {children}\n </div>\n <div className={styles['sapphire-filter-dropdown__footer']}>\n <ButtonGroup align=\"right\">\n <Button\n size={buttonSize}\n variant=\"text\"\n onPress={() => {\n close();\n onClear?.();\n }}\n isDisabled={isClearDisabled ?? !hasValue}\n >\n {clearButtonLabel}\n </Button>\n {hasApplyButton ? (\n applyButton\n ) : (\n // The following is necessary to have the form submitted on \"Enter\", if there is more than one field\n <VisuallyHidden>{applyButton}</VisuallyHidden>\n )}\n </ButtonGroup>\n </div>\n </form>\n }\n >\n <ToggleButton\n icon={isOpen ? <ChevronUp /> : <ChevronDown />}\n iconAlign=\"right\"\n isSelected={hasValue}\n isDisabled={isDisabled}\n size={buttonSize}\n >\n {label}\n {value ? ': ' : ''}\n {value}\n </ToggleButton>\n </PopoverTrigger>\n );\n}\n","import React, { cloneElement, ReactElement, useRef } from 'react';\nimport {\n Flex,\n ListBoxProps,\n SapphireStyleProps,\n SearchFieldPropsWithRef,\n tokens,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { FilterDropdown, FilterDropdownProps } from '../..';\nimport { mergeRefs } from '@react-aria/utils';\nimport { useControlledState } from '@react-stately/utils';\n\nexport interface SearchableSelectFilterProps\n extends GlobalDomAttributes,\n SapphireStyleProps,\n Omit<FilterDropdownProps, 'children'> {\n /**\n * The SearchField to search items with.\n */\n searchField: ReactElement<SearchFieldPropsWithRef<object>>;\n /**\n * The ListBox to select items from.\n */\n listBox: ReactElement<ListBoxProps<object>>;\n /**\n * The Button size of the trigger\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg';\n}\n\n/**\n * A button with a dropdown, used for filtering UI.\n */\nexport function SearchableSelectFilter(\n props: SearchableSelectFilterProps\n): JSX.Element {\n const { searchField, listBox, size = 'md', ...otherProps } = props;\n const searchFieldRef = useRef<HTMLInputElement>(null);\n\n const searchFieldProps = searchField.props;\n const listBoxProps = listBox.props;\n\n const [searchQuery, setSearchQuery] = useControlledState(\n searchFieldProps?.value,\n '',\n searchFieldProps.onChange\n );\n\n if (\n listBoxProps.connectedInputRef &&\n typeof process !== 'undefined' &&\n process.env?.NODE_ENV === 'development'\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n 'The connectedInputRef prop on the ListBox in the SearchableSelectFilter component is not needed and will be ignored. The connectedInputRef is set automatically (to the passed SearchField) and should not be set manually.'\n );\n }\n\n const hasSelection =\n listBoxProps.selectedKeys === 'all' ||\n Array.from(listBoxProps.selectedKeys || []).length > 0;\n\n return (\n <FilterDropdown\n {...otherProps}\n noMaxWidth={otherProps.noMaxWidth ?? true}\n buttonSize={size}\n // Since useCollectionFocusProxy disables normal form submission behaviour on \"Enter\"\n // the apply button is the only way to submit, which is why we add it if an onApply function is passed\n hasApplyButton={Boolean(otherProps.onApply)}\n // In scenarios where selections are not applied immediately we want to allow cancelling\n // the filter selection via 'Clear' button as soon as at least 1 item is selected\n isClearDisabled={\n otherProps.isClearDisabled || (!hasSelection && !otherProps.value)\n }\n >\n <Flex flexDirection=\"column\" height=\"100%\">\n {cloneElement(searchField, {\n size: 'md',\n value: searchFieldProps.value || searchQuery,\n inputRef: mergeRefs(searchFieldRef, searchFieldProps.inputRef),\n width: searchFieldProps.width || '100%',\n marginBottom: searchFieldProps.marginBottom || tokens.size.spacingSm,\n onChange: setSearchQuery,\n })}\n {cloneElement(listBox, {\n connectedInputRef: searchFieldRef,\n selectionMode: listBoxProps.selectionMode || 'multiple',\n marginX: `calc(${tokens.size.spacingContainerHorizontalSm.value} * -1)`,\n hasScrollDividers: true,\n filter:\n // This is a way to also allow opting out of the internal filter with filter={undefined}\n // without us having to allow for more values on the ListBox filter prop\n 'filter' in listBoxProps\n ? listBoxProps.filter\n : (textValue: string) =>\n textValue.toLowerCase().includes(searchQuery.toLowerCase()),\n })}\n </Flex>\n </FilterDropdown>\n );\n}\n","import clsx from 'clsx';\nimport React from 'react';\nimport { getWrappedElement } from '@react-spectrum/utils';\nimport styles from '@danske/sapphire-css/components/flag/flag.module.css';\n\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\n\nexport type FlagProps = GlobalDomAttributes &\n SapphireStyleProps & {\n 'aria-label'?: string;\n /**\n * The size of the flag.\n * @default 'lg'\n */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /**\n * Flags come in square or rounded shapes. Square flags are used for display purposes, ensuring a clean and consistent look.\n * Rounded flags are reserved for actionable elements like buttons or selectors, providing a more interactive and approachable feel.\n * @default false\n */\n rounded?: boolean;\n children: React.ReactNode;\n };\n\nexport const Flag = React.forwardRef(function Flag(\n { size = 'lg', rounded, 'aria-label': ariaLabel, ...props }: FlagProps,\n ref: React.Ref<HTMLSpanElement>\n) {\n useThemeCheck();\n\n const { styleProps } = useSapphireStyleProps(props);\n\n return React.cloneElement(getWrappedElement(props.children), {\n ref,\n role: 'img',\n ...(ariaLabel ? { 'aria-label': ariaLabel } : { 'aria-hidden': true }),\n className: clsx(styles['sapphire-flag'], styleProps.className, {\n [styles['sapphire-flag--xs']]: size === 'xs',\n [styles['sapphire-flag--sm']]: size === 'sm',\n [styles['sapphire-flag--md']]: size === 'md',\n [styles['sapphire-flag--lg']]: size === 'lg',\n [styles['sapphire-flag--xl']]: size === 'xl',\n [styles['sapphire-flag--rounded']]: rounded,\n }),\n style: styleProps.style,\n });\n});\n","import React, { ReactNode } from 'react';\nimport { useField } from '@react-aria/label';\nimport {\n Field,\n Label,\n SapphireStyleProps,\n useThemeCheck,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { mergeProps } from '@react-aria/utils';\n\nexport interface LabeledValueProps\n extends SapphireStyleProps,\n GlobalDomAttributes {\n children?: React.ReactNode;\n /**\n * A HelpButton element to place next to the label.\n */\n contextualHelp?: ReactNode;\n /**\n * The content to display as a label.\n */\n label: ReactNode;\n /**\n * Places the label either above (default) or on the left side of tags.\n * @default 'above'\n */\n labelPlacement?: 'above' | 'side';\n /**\n * @default 'lg'\n */\n size?: 'lg' | 'md';\n}\n\nexport function LabeledValue({\n children,\n contextualHelp,\n label,\n labelPlacement = 'above',\n size = 'lg',\n ...otherProps\n}: LabeledValueProps): React.JSX.Element {\n useThemeCheck();\n const { fieldProps } = useField({ label });\n\n return (\n <Field\n {...mergeProps(fieldProps, otherProps)}\n labelPlacement={labelPlacement}\n size={size}\n noDefaultWidth\n >\n <Field.Label>\n <Label contextualHelp={contextualHelp} size={size}>\n {label}\n </Label>\n </Field.Label>\n <Field.Control>{children}</Field.Control>\n </Field>\n );\n}\n","import da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nexport default {\n 'da-DK': da,\n 'en-US': en,\n 'de-DE': de,\n 'fi-FI': fi,\n 'nb-NO': no,\n 'pl-PL': pl,\n 'sv-SE': se,\n};\n","import React, { useRef } from 'react';\nimport { AriaButtonProps } from '@react-aria/button';\nimport { useHover } from '@react-aria/interactions';\nimport { filterDOMProps, mergeProps } from '@react-aria/utils';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/textField/textField.module.css';\nimport { Icon, useButton } from '@danske/sapphire-react';\nimport { CaretDown, CaretUp } from '@danske/sapphire-icons/react';\n\n/**\n * @internal\n */\nexport const StepperButton = ({\n variant,\n size,\n ...props\n}: AriaButtonProps & {\n variant: 'increment' | 'decrement';\n size: 'lg' | 'md';\n}): React.JSX.Element => {\n const ref = useRef(null);\n const { buttonProps, isPressed } = useButton(props, ref);\n const { hoverProps, isHovered } = useHover({ isDisabled: props.isDisabled });\n\n return (\n <button\n {...mergeProps(\n buttonProps,\n hoverProps,\n filterDOMProps(props, { global: true })\n )}\n ref={ref}\n className={clsx(\n styles['sapphire-text-field__stepper-button'],\n styles['js-hover'],\n {\n [styles['is-active']]: isPressed,\n [styles['is-hover']]: isHovered,\n }\n )}\n >\n <Icon size={size === 'lg' ? 'md' : 'sm'}>\n {variant === 'increment' ? <CaretUp /> : <CaretDown />}\n </Icon>\n </button>\n );\n};\n","import { CSSProperties, RefObject, useState } from 'react';\n\ninterface UseAutofillStyle {\n autofillStyles: CSSProperties;\n updateStyle: () => void;\n}\n\n//Copied from TextFieldBase, once NumberField moves into Core, this file can be removed and the import updated\nexport function useAutofillStyle<T>(\n inputRef: RefObject<\n T extends 'input' ? HTMLInputElement : HTMLTextAreaElement\n >\n): UseAutofillStyle {\n const [styles, setStyles] = useState<CSSProperties>({});\n\n const updateStyle = () => {\n const input = inputRef.current;\n if (input) {\n const color = window.getComputedStyle(input).backgroundColor;\n\n setStyles({\n boxShadow: `-100px 0 ${color}, 100px 0 ${color}`,\n });\n }\n };\n\n return {\n autofillStyles: styles,\n updateStyle,\n };\n}\n","import React, { RefObject } from 'react';\nimport {\n AriaNumberFieldProps,\n NumberFieldAria,\n useNumberField,\n} from '@react-aria/numberfield';\nimport { useNumberFieldState } from '@react-stately/numberfield';\nimport { useLocale } from '@react-aria/i18n';\n\nexport interface SapphireNumberFieldProps\n // TODO: when this is moved to `core`, we can replace the picked props with `ValueBasePropsKeys`\n extends Pick<\n AriaNumberFieldProps,\n | 'label'\n | 'isDisabled'\n | 'isRequired'\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'incrementAriaLabel'\n | 'decrementAriaLabel'\n | 'onFocus'\n | 'onBlur'\n | 'formatOptions'\n | 'step'\n | 'minValue'\n | 'maxValue'\n | 'placeholder'\n | 'isReadOnly'\n | 'autoFocus'\n | 'onFocusChange'\n | 'onKeyUp'\n | 'onKeyDown'\n > {\n /**\n * Whether the input should render as having an error and an error message.\n * This also sets the appropriate `aria` attributes on the input.\n *\n * A `boolean` sets the error state.\n * A `ReactNode` sets the error state with an additional error message.\n *\n * **An error message is strongly recommended because an error should always have an explanation about how to fix it.**\n */\n error?: boolean | React.ReactNode;\n}\n\nexport const useSapphireNumberField = (\n { error, ...numberFieldProps }: SapphireNumberFieldProps,\n ref: RefObject<HTMLInputElement>\n): NumberFieldAria => {\n const { locale } = useLocale();\n const numberFieldState = useNumberFieldState({\n ...numberFieldProps,\n locale,\n });\n const numberFieldAria = useNumberField(\n {\n ...numberFieldProps,\n validationState:\n error === false || error === undefined ? undefined : 'invalid',\n },\n numberFieldState,\n ref\n );\n\n return numberFieldAria;\n};\n","import React, {\n forwardRef,\n ForwardedRef,\n ReactNode,\n RefObject,\n useImperativeHandle,\n useRef,\n} from 'react';\nimport clsx from 'clsx';\nimport { useFocusRing } from '@react-aria/focus';\nimport { useMessageFormatter } from '@react-aria/i18n';\nimport { mergeProps, useObjectRef } from '@react-aria/utils';\nimport { createFocusableRef } from '@react-spectrum/utils';\nimport { FocusableRefValue, PressEvents } from '@react-types/shared';\nimport textFieldStyles from '@danske/sapphire-css/components/textField/textField.module.css';\nimport {\n Field,\n Label,\n SapphireStyleProps,\n useThemeCheck,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\n\nimport intlMessages from '../i18n';\nimport { StepperButton } from './StepperButton';\nimport { useAutofillStyle } from './useAutofillStyle';\nimport {\n SapphireNumberFieldProps,\n useSapphireNumberField,\n} from './useSapphireNumberField';\n\nexport type NumberFieldRef = FocusableRefValue<\n HTMLInputElement,\n HTMLDivElement\n> & {\n getInputElement(): HTMLInputElement | null;\n};\n\nexport interface NumberFieldProps\n extends SapphireNumberFieldProps,\n PressEvents,\n SapphireStyleProps,\n GlobalDomAttributes {\n prefix?: ReactNode;\n postfix?: ReactNode;\n inputRef?: RefObject<HTMLInputElement | null>;\n /**\n * A note to show below the input.\n * If the input has an error message, this note will be replaced by that.\n */\n note?: ReactNode;\n /**\n * A HelpButton to render next to the label.\n */\n contextualHelp?: ReactNode;\n /**\n * To visually indicate if this field is required or optional.\n * @default false\n */\n necessityIndicator?: boolean;\n /**\n * @default 'lg'\n */\n size?: 'lg' | 'md';\n /**\n * Aligns the text inside the input fields without affecting the positioning of the label of the field.\n */\n alignInputRight?: boolean;\n /**\n * Places the label either above (default) or on the side of the control.\n * @default 'above'\n */\n labelPlacement?: 'side' | 'above';\n /**\n * To show the buttons for incrementing and decrementing the value.\n * @default false\n */\n showButtons?: boolean;\n}\n\nexport const NumberField = forwardRef(function NumberField(\n props: NumberFieldProps,\n ref: ForwardedRef<NumberFieldRef>\n) {\n const {\n label,\n isDisabled,\n error,\n note,\n isRequired,\n contextualHelp,\n prefix,\n postfix,\n size = 'lg',\n labelPlacement = 'above',\n necessityIndicator = false,\n alignInputRight,\n showButtons = false,\n incrementAriaLabel,\n decrementAriaLabel,\n ...otherProps\n } = props;\n useThemeCheck();\n const inputRef = useObjectRef<HTMLInputElement>(props.inputRef);\n const formatMessage = useMessageFormatter(intlMessages);\n const {\n inputProps,\n labelProps,\n incrementButtonProps,\n decrementButtonProps,\n descriptionProps,\n errorMessageProps,\n } = useSapphireNumberField(\n {\n ...props,\n incrementAriaLabel: incrementAriaLabel ?? formatMessage('increment'),\n decrementAriaLabel: decrementAriaLabel ?? formatMessage('decrement'),\n },\n inputRef\n );\n const { focusProps, isFocusVisible } = useFocusRing();\n const { autofillStyles, updateStyle } = useAutofillStyle<'input'>(inputRef);\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(containerRef, inputRef),\n /**\n * (This function is deprecated. Use `inputRef` prop)\n * @deprecated\n */\n getInputElement() {\n return inputRef.current;\n },\n }));\n\n return (\n <Field\n // otherProps contains some of the same props as inputProps. That is\n // intended, but some DOM props, like \"id\", should not be repeated\n {...removeUniqueDOMProps(otherProps)}\n ref={containerRef}\n size={size}\n labelPlacement={labelPlacement}\n >\n <Field.Context\n descriptionProps={error ? errorMessageProps : descriptionProps}\n >\n {label && (\n <Field.Label>\n <Label\n {...labelProps}\n size={size}\n necessityIndicator={\n isRequired && necessityIndicator\n ? 'required'\n : !isRequired && necessityIndicator\n ? 'optional'\n : undefined\n }\n contextualHelp={contextualHelp}\n >\n {label}\n </Label>\n </Field.Label>\n )}\n <Field.Control>\n <div\n className={clsx(textFieldStyles['sapphire-text-field'], {\n [textFieldStyles['is-focus']]: isFocusVisible,\n [textFieldStyles['sapphire-text-field--error']]:\n error === true || typeof error === 'string',\n [textFieldStyles['sapphire-text-field--md']]: size === 'md',\n })}\n >\n {prefix && (\n <span\n className={clsx(\n textFieldStyles['sapphire-text-field__prefix'],\n {\n [textFieldStyles['sapphire-text-field__prefix--icon']]:\n typeof prefix !== 'string',\n }\n )}\n >\n {prefix}\n </span>\n )}\n <input\n {...mergeProps(inputProps, focusProps, {\n onChange: updateStyle,\n onBlur: updateStyle,\n })}\n ref={inputRef}\n className={clsx(textFieldStyles['sapphire-text-field__input'], {\n [textFieldStyles['sapphire-text-field__input--align-right']]:\n !!alignInputRight,\n })}\n style={autofillStyles}\n />\n {postfix && (\n <span\n className={clsx(\n textFieldStyles['sapphire-text-field__postfix'],\n {\n [textFieldStyles['sapphire-text-field__postfix--icon']]:\n typeof postfix !== 'string',\n }\n )}\n >\n {postfix}\n </span>\n )}\n {showButtons && (\n <div\n className={clsx(\n textFieldStyles['sapphire-text-field__stepper']\n )}\n >\n <StepperButton\n variant=\"increment\"\n size={size}\n {...incrementButtonProps}\n />\n <StepperButton\n variant=\"decrement\"\n size={size}\n {...decrementButtonProps}\n />\n </div>\n )}\n </div>\n </Field.Control>\n {((error && typeof error !== 'boolean') || note) && (\n <Field.Footer>\n {error && typeof error !== 'boolean' ? (\n <Field.Note variant=\"error\">{error}</Field.Note>\n ) : note ? (\n note\n ) : (\n <></>\n )}\n </Field.Footer>\n )}\n </Field.Context>\n </Field>\n );\n});\n\n// Once moved to the core package, this function should be removed and instead consume the one from TextFieldBase.\nconst removeUniqueDOMProps = (props: Record<any, any>): Record<any, any> =>\n Object.fromEntries(\n Object.entries(props).filter(\n ([name]) => name !== 'id' && !name.startsWith('data-')\n )\n );\n","import React, { ReactNode, useContext, useState } from 'react';\nimport { ThemeVariant } from '@danske/sapphire-react';\nimport { useControlledState } from '@react-stately/utils';\n\nexport type SecondarySidebarContent = {\n header: ReactNode;\n body: ReactNode;\n} | null;\n\nexport interface SecondarySidebarContextValue {\n content: SecondarySidebarContent;\n setContent: (content: SecondarySidebarContent) => void;\n openedId: string | null;\n setOpenedId: (id: string | null) => void;\n themeVariant: ThemeVariant | undefined;\n}\n\nexport const SecondarySidebarContext =\n React.createContext<SecondarySidebarContextValue | null>(null);\n\nexport const useSecondarySidebarContext = (): SecondarySidebarContextValue => {\n const context = useContext(SecondarySidebarContext);\n if (context) {\n return context;\n }\n throw new Error('This should be rendered inside a <Sidebar />.');\n};\n\nexport const SecondarySidebarProvider = ({\n openedId,\n defaultOpenedId,\n onOpenedIdChange,\n themeVariant,\n children,\n}: {\n openedId?: string | null;\n defaultOpenedId?: string | null;\n onOpenedIdChange?: (id: string | null) => void;\n themeVariant?: ThemeVariant;\n children: ReactNode;\n}) => {\n const context = useContext(SecondarySidebarContext);\n\n const [secondarySidebarId, setSecondarySidebarId] = useControlledState<\n string | null\n >(openedId, defaultOpenedId ?? null, onOpenedIdChange);\n\n const [content, setContent] = useState<SecondarySidebarContent>(null);\n\n return (\n <SecondarySidebarContext.Provider\n value={{\n openedId: context?.openedId ?? secondarySidebarId,\n setOpenedId: context?.setOpenedId ?? setSecondarySidebarId,\n content: context?.content ?? content,\n setContent: context?.setContent ?? setContent,\n themeVariant: themeVariant ?? context?.themeVariant,\n }}\n >\n {children}\n </SecondarySidebarContext.Provider>\n );\n};\n","import { useControlledState } from '@react-stately/utils';\nimport { BreakpointKey, useMatchedBreakpoints } from '@danske/sapphire-react';\nimport React, { ReactNode, useContext } from 'react';\n\nexport interface ResponsiveSidebarContextValue {\n isPanelOpen: boolean;\n setPanelOpen: (open: boolean) => void;\n collapsed: boolean | BreakpointKey | undefined;\n}\n\nexport const ResponsiveSidebarContext =\n React.createContext<ResponsiveSidebarContextValue | null>(null);\n\nexport function useResponsiveSidebarContext() {\n return useContext(ResponsiveSidebarContext);\n}\n\n/**\n * Hook to determine if the sidebar should be collapsed.\n * Returns true if collapsed, false if expanded, or null if not in responsive mode.\n */\nexport function useIsSidebarCollapsed(): boolean | null {\n const context = useContext(ResponsiveSidebarContext);\n const matchedBreakpoints: string[] = useMatchedBreakpoints();\n\n if (!context) {\n return null;\n }\n\n const { collapsed } = context;\n\n // If collapsed is a boolean, use it directly\n if (typeof collapsed === 'boolean') {\n return collapsed;\n }\n\n // If collapsed is a breakpoint string, check if we're below that breakpoint\n if (typeof collapsed === 'string') {\n return !matchedBreakpoints.includes(collapsed);\n }\n\n // If collapsed is undefined, default to 'md' breakpoint behavior\n return !matchedBreakpoints.includes('md');\n}\n\nexport const ResponsiveSidebarProvider = ({\n collapsed,\n isPanelOpen,\n defaultIsPanelOpen,\n onPanelOpenChange,\n children,\n}: {\n /**\n * Controls whether the sidebar is collapsed.\n * - When `true`: sidebar is always collapsed (shows as panel)\n * - When `false`: sidebar is always expanded (shows as sidebar)\n * - When a breakpoint string (e.g., 'md', 'lg'): automatically collapses below that breakpoint\n * - When `undefined`: defaults to 'md' breakpoint behavior (collapses below medium screens)\n * @default undefined (equivalent to 'md')\n */\n collapsed?: boolean | BreakpointKey;\n\n /**\n * If the sidebar panel is open (controlled)\n */\n isPanelOpen?: boolean;\n\n /**\n * The default state of the panel (uncontrolled)\n */\n defaultIsPanelOpen?: boolean;\n\n /**\n * Callback for when the state of the panel changes\n */\n onPanelOpenChange?: (open: boolean) => void;\n children: ReactNode;\n}) => {\n const [isOpen, setOpen] = useControlledState<boolean>(\n isPanelOpen,\n defaultIsPanelOpen ?? false,\n onPanelOpenChange\n );\n\n return (\n <ResponsiveSidebarContext.Provider\n value={{\n isPanelOpen: isOpen,\n setPanelOpen: setOpen,\n collapsed,\n }}\n >\n {children}\n </ResponsiveSidebarContext.Provider>\n );\n};\n","import React, { ReactNode, useEffect } from 'react';\nimport {\n IconButton,\n ModalLayout,\n Panel,\n PanelProps,\n tokens,\n View,\n} from '@danske/sapphire-react';\nimport { ChevronLeft } from '@danske/sapphire-icons/react';\nimport { useSecondarySidebarContext } from './SecondarySidebarContext';\nimport {\n useIsSidebarCollapsed,\n useResponsiveSidebarContext,\n} from './ResponsiveSidebarContext';\n\nexport type SidebarPanelProps = Omit<\n PanelProps,\n 'isOpen' | 'size' | 'direction'\n> & { header: ReactNode };\n\nexport const SidebarPanel = ({\n children,\n header,\n ...props\n}: SidebarPanelProps) => {\n const { openedId, setOpenedId, content } = useSecondarySidebarContext();\n const responsiveContext = useResponsiveSidebarContext();\n\n if (!responsiveContext) {\n throw new Error(\n '<SidebarPanel> must be rendered inside a <Sidebar.ResponsiveProvider>'\n );\n }\n\n const { isPanelOpen, setPanelOpen } = responsiveContext;\n const isCollapsed = useIsSidebarCollapsed();\n\n useEffect(() => {\n if (!isCollapsed) {\n // if breakpoint changes, we want to close the panel until opened manually again\n setPanelOpen(false);\n }\n }, [isCollapsed]);\n\n return (\n <Panel\n {...props}\n isOpen={isPanelOpen}\n onClose={() => setPanelOpen(false)}\n onCloseTransitionDone={() => setOpenedId(null)}\n alignLeft\n isDismissable\n width={320}\n >\n <ModalLayout\n header={\n <ModalLayout.Header\n heading={openedId === null ? header : content?.header}\n backButton={\n openedId !== null && (\n <IconButton\n size=\"md\"\n aria-label=\"Back\"\n variant=\"tertiary\"\n marginLeft={`calc(-1 * ${tokens.size.spacingSm})`}\n onPress={() => setOpenedId(null)}\n >\n <ChevronLeft />\n </IconButton>\n )\n }\n />\n }\n body={\n <ModalLayout.Body\n noPadding\n UNSAFE_style={{\n paddingLeft: tokens.size.spacingMd.value,\n paddingRight: tokens.size.spacingMd.value,\n }}\n >\n <>\n <View isHidden={openedId !== null}>{children}</View>\n {openedId && content?.body}\n </>\n </ModalLayout.Body>\n }\n />\n </Panel>\n );\n};\n\nexport const SidebarPanelTrigger = ({\n children,\n}: {\n children: (triggerProps: any) => JSX.Element;\n}) => {\n const context = useResponsiveSidebarContext();\n if (!context) {\n throw new Error(\n '<Sidebar.PanelTrigger> should be rendered inside a <Sidebar.ResponsiveProvider>'\n );\n }\n const isCollapsed = useIsSidebarCollapsed();\n const panelTriggerProps = {\n onPress: () => {\n context.setPanelOpen(true);\n },\n };\n\n return isCollapsed ? children(panelTriggerProps) : null;\n};\n","import { useResponsiveSidebarContext } from './ResponsiveSidebarContext';\nimport { useSecondarySidebarContext } from './SecondarySidebarContext';\n\n/**\n * Returns props to be spread on different components that make the Sidebar.\n */\nexport const useSidebar = () => {\n const { openedId, setOpenedId } = useSecondarySidebarContext();\n const responsiveContext = useResponsiveSidebarContext();\n const { isPanelOpen, setPanelOpen } = responsiveContext\n ? responsiveContext\n : { isPanelOpen: false, setPanelOpen: () => {} };\n\n return {\n sidebarProps: { onBlurWithin: () => setOpenedId(null) },\n itemProps: {\n onPress: () => {\n setPanelOpen(false);\n if (!isPanelOpen) {\n /* If panel is open, let the secondary sidebar get closed\n * when the closing transition is done. See `panelProps`\n */\n setOpenedId(null);\n }\n },\n },\n getExpandableItemProps: (id: string) => ({\n onPress: () => setOpenedId(openedId === id ? null : id),\n }),\n secondarySidebarProps: {\n onClose: () => setOpenedId(null),\n },\n };\n};\n","import { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport {\n useThemeCheck,\n useSapphireStyleProps,\n SapphireStyleProps,\n ThemeRoot,\n ThemeVariant,\n} from '@danske/sapphire-react';\nimport React from 'react';\nimport { DOMProps } from '@react-types/shared';\nimport { filterDOMProps, mergeProps } from '@react-aria/utils';\nimport { FocusWithinProps, useFocusWithin } from '@react-aria/interactions';\nimport { SidebarPanel } from './Panel';\nimport { useSidebar } from './useSidebar';\nimport { SecondarySidebarProvider } from './SecondarySidebarContext';\nimport {\n useIsSidebarCollapsed,\n useResponsiveSidebarContext,\n} from './ResponsiveSidebarContext';\n\nexport type SidebarProps = DOMProps &\n SapphireStyleProps & {\n /**\n * Shorthand to wrap the sidebar in a ThemeRoot with a different theme variant\n */\n themeVariant?: ThemeVariant;\n\n /**\n * The theme variant for the overflow sidebar\n */\n secondarySidebarThemeVariant?: ThemeVariant;\n\n /**\n * Callback for when the sidebar's elements lose focus.\n * Useful to know when to close the overflow sidebar.\n */\n onBlurWithin?: FocusWithinProps['onBlurWithin'];\n\n /**\n * Callback for when one of the sidebar's elements first gains focus.\n */\n onFocusWithin?: FocusWithinProps['onFocusWithin'];\n\n /**\n * Callback for when one of the sidebar's elements loses or gains focus\n */\n onFocusWithinChange?: FocusWithinProps['onFocusWithinChange'];\n\n /**\n * Whether the overflow sidebar should close when all sidebar's elements\n * lost focus\n * @default true\n */\n closeOnBlurWithin?: boolean;\n\n /**\n * The header of the sidebar\n */\n header: ReactNode;\n\n /**\n * The header of the sidebar for small screens, when the sidebar is\n * rendered as a panel\n */\n panelHeader?: ReactNode;\n\n /**\n * The id of the opened secondary sidebar (controlled)\n */\n openedSecondarySidebar?: string | null;\n\n /**\n * The id of the secondary sidebar opened by default (uncontrolled)\n */\n defaultOpenedSecondarySidebar?: string | null;\n\n /**\n * Callback for when the secondary sidebar opens or closes\n */\n onSecondarySidebarChange?: (id: string | null) => void;\n\n children?: ReactNode;\n };\n\n/**\n * Sidebar component for the site's main navigation.\n * Takes the height of the container.\n *\n * The default recommended way to use it is in the example below. But each part\n * can be replaced with a custom implementation.\n *\n * **Example:**\n * ```tsx\n * <Sidebar\n * header={\n * <Sidebar.Header>\n * header\n * </Sidebar.Header>\n * }\n * >\n * <Sidebar.Body>\n * <Sidebar.List>\n * ...\n * </Sidebar.List>\n * </Sidebar.Body>\n * </Sidebar>\n * ```\n */\nexport const Sidebar = ({\n themeVariant,\n openedSecondarySidebar,\n defaultOpenedSecondarySidebar,\n onSecondarySidebarChange,\n secondarySidebarThemeVariant,\n children,\n ...props\n}: SidebarProps) => {\n useThemeCheck();\n\n return (\n <SecondarySidebarProvider\n openedId={openedSecondarySidebar}\n defaultOpenedId={defaultOpenedSecondarySidebar}\n onOpenedIdChange={onSecondarySidebarChange}\n themeVariant={secondarySidebarThemeVariant}\n >\n <WithThemeRoot themeVariant={themeVariant}>\n <SidebarContent {...props}>{children}</SidebarContent>\n </WithThemeRoot>\n </SecondarySidebarProvider>\n );\n};\n\nconst SidebarContent = ({\n onBlurWithin,\n onFocusWithin,\n onFocusWithinChange,\n closeOnBlurWithin = true,\n header,\n panelHeader,\n children,\n ...props\n}: SidebarProps) => {\n const { styleProps } = useSapphireStyleProps(props);\n const { sidebarProps } = useSidebar();\n\n const { focusWithinProps } = useFocusWithin(\n mergeProps(\n {\n onBlurWithin,\n onFocusWithin,\n onFocusWithinChange,\n },\n closeOnBlurWithin ? sidebarProps : {}\n )\n );\n\n const responsiveSidebarContext = useResponsiveSidebarContext();\n const isCollapsed = useIsSidebarCollapsed();\n\n return (\n <>\n {!isCollapsed && (\n <div\n {...styleProps}\n {...filterDOMProps(props, { global: true })}\n {...focusWithinProps}\n className={clsx(styles['sapphire-sidebar'])}\n tabIndex={-1 /* sidebar must be focusable but not tabbable */}\n >\n {header}\n {children}\n </div>\n )}\n {responsiveSidebarContext && (\n <SidebarPanel header={panelHeader}>{children}</SidebarPanel>\n )}\n </>\n );\n};\n\nconst WithThemeRoot = ({\n children,\n themeVariant,\n}: {\n themeVariant?: ThemeVariant;\n children: ReactNode;\n}) =>\n themeVariant ? (\n <ThemeRoot\n variant={themeVariant}\n noSurface\n height=\"100%\"\n width=\"min-content\"\n >\n {children}\n </ThemeRoot>\n ) : (\n <>{children}</>\n );\n","import React, { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport { IconButton, IconButtonProps } from '@danske/sapphire-react';\nimport { CloseLarge } from '@danske/sapphire-icons/react';\n\nexport interface SidebarHeaderProps extends DOMProps {\n children: ReactNode;\n /**\n * Props for the close button\n * If none provided, close button won't show\n */\n closeButtonProps?: Omit<\n IconButtonProps<'button'>,\n 'children' | 'aria-label' | 'aria-hidden'\n >;\n}\n\nexport const SidebarHeader = ({\n children,\n closeButtonProps,\n ...props\n}: SidebarHeaderProps): React.JSX.Element => {\n return (\n <div\n {...filterDOMProps(props)}\n className={clsx(styles['sapphire-sidebar__header'])}\n >\n {children}\n {closeButtonProps && (\n <IconButton {...closeButtonProps} aria-label=\"Close\">\n <CloseLarge />\n </IconButton>\n )}\n </div>\n );\n};\n","import React, { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport buttonStyles from '@danske/sapphire-css/components/button/button.module.css';\nimport { Button, ButtonProps } from '@danske/sapphire-react';\nimport { FocusableRef } from '@react-types/shared';\nimport { mergeProps } from '@react-aria/utils';\nimport { useSidebar } from './useSidebar';\n\nexport type SidebarItemProps = Omit<\n ButtonProps<'a'>,\n 'variant' | 'size' | 'elementType'\n> & {\n /**\n * If the link is currently active\n */\n isActive?: boolean;\n children?: ReactNode;\n};\n\nexport const SidebarItem = React.forwardRef(function SidebarItem(\n { isActive, children, ...props }: SidebarItemProps,\n ref: FocusableRef<HTMLAnchorElement>\n): React.JSX.Element {\n const { itemProps } = useSidebar();\n\n return (\n <li className={clsx(styles['sapphire-sidebar__nav-item'])}>\n <Button\n ref={ref}\n variant=\"tertiary\"\n elementType=\"a\"\n aria-current={isActive ? 'page' : undefined}\n {...mergeProps(props as ButtonProps<'a'>, itemProps)}\n UNSAFE_className={clsx(\n buttonStyles['sapphire-button--stretch-left-align'],\n { [buttonStyles['sapphire-button--selected']]: isActive }\n )}\n >\n {children}\n </Button>\n </li>\n );\n});\n","import React, { ReactNode, useEffect, useLayoutEffect, useRef } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport buttonStyles from '@danske/sapphire-css/components/button/button.module.css';\nimport { Button, ButtonProps, ThemeVariant } from '@danske/sapphire-react';\nimport { FocusScope } from '@react-aria/focus';\nimport { FocusableRef } from '@react-types/shared';\nimport { Transition } from 'react-transition-group';\nimport { Sidebar } from '..';\nimport { mergeProps, useId } from '@react-aria/utils';\nimport { useSidebar } from './useSidebar';\nimport { useSecondarySidebarContext } from './SecondarySidebarContext';\nimport { useIsSidebarCollapsed } from './ResponsiveSidebarContext';\n\nexport type SidebarExpandableItemProps = Omit<\n ButtonProps<'button'>,\n 'variant' | 'size' | 'elementType'\n> & {\n /**\n * If the link is currently active\n */\n isActive?: boolean;\n\n /**\n * The id of the group.\n * Used in `onSecondarySidebarChange` or when the sidebar is controlled\n */\n id?: string;\n\n /**\n * Heading used for secondary sidebar\n */\n header: ReactNode;\n\n /**\n * Subitems (secondary sidebar)\n */\n body: ReactNode;\n children?: ReactNode;\n};\n\nexport const SidebarExpandableItem = React.forwardRef(\n function SidebarExpandableItem(\n {\n id,\n isActive,\n body,\n header,\n children,\n ...props\n }: SidebarExpandableItemProps,\n ref: FocusableRef<HTMLAnchorElement>\n ): React.JSX.Element {\n const { openedId, setContent, themeVariant } = useSecondarySidebarContext();\n const isCollapsed = useIsSidebarCollapsed();\n const { getExpandableItemProps, secondarySidebarProps } = useSidebar();\n const itemId = useId(id);\n const isOpen = openedId === itemId;\n\n useLayoutEffect(() => {\n if (isOpen) {\n setContent({ header, body });\n }\n }, [isOpen]);\n\n return (\n <li className={clsx(styles['sapphire-sidebar__nav-item'])}>\n <Button\n variant=\"tertiary\"\n aria-current={isActive || undefined}\n ref={ref}\n {...mergeProps(\n getExpandableItemProps(itemId),\n props as ButtonProps<'button'>\n )}\n UNSAFE_className={clsx(\n buttonStyles['sapphire-button--stretch-left-align'],\n {\n [buttonStyles['sapphire-button--selected']]: isActive && !isOpen,\n [buttonStyles['is-active']]: isOpen,\n }\n )}\n >\n {children}\n </Button>\n <SecondarySidebar\n isOpen={isOpen && !isCollapsed}\n header={header}\n themeVariant={themeVariant}\n {...secondarySidebarProps}\n >\n {body}\n </SecondarySidebar>\n </li>\n );\n }\n);\n\nconst SecondarySidebar = ({\n isOpen,\n onClose,\n onCloseTransitionDone,\n themeVariant,\n header,\n children,\n}: {\n isOpen: boolean;\n onClose?: () => void;\n onCloseTransitionDone?: () => void;\n themeVariant?: ThemeVariant;\n header: ReactNode;\n children: ReactNode;\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [onClose]);\n\n return (\n <Transition\n in={isOpen}\n mountOnEnter\n nodeRef={ref}\n unmountOnExit\n onExited={onCloseTransitionDone}\n timeout={200}\n >\n {(transitionState) => (\n <div\n ref={ref}\n className={clsx(styles['sapphire-sidebar__secondary-container'], {\n [styles['sapphire-sidebar--slide-in']]: true,\n [styles['sapphire-sidebar--slide-out']]:\n transitionState === 'exiting',\n })}\n >\n <FocusScope restoreFocus autoFocus>\n <Sidebar\n themeVariant={themeVariant}\n closeOnBlurWithin={\n false /* no focus management on nested sidebars */\n }\n header={\n <Sidebar.Header\n closeButtonProps={{\n onPress: () => onClose?.(),\n }}\n >\n {header}\n </Sidebar.Header>\n }\n panelHeader={null}\n >\n {children}\n </Sidebar>\n </FocusScope>\n </div>\n )}\n </Transition>\n );\n};\n","import React, { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport { useListBoxSection } from '@react-aria/listbox';\nimport { filterDOMProps } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\n\nexport type SidebarSectionProps = DOMProps &\n SapphireStyleProps & {\n /**\n * Section title\n * If not provided, please pass the `aria-label`\n */\n title?: string;\n\n /**\n * Section aria title\n */\n 'aria-label'?: string;\n\n children?: ReactNode;\n };\n\nexport const SidebarSection = ({\n title,\n 'aria-label': label,\n children,\n ...props\n}: SidebarSectionProps) => {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n const { itemProps, headingProps, groupProps } = useListBoxSection({\n heading: title,\n 'aria-label': label,\n });\n\n return (\n <>\n <li\n role=\"separator\"\n className={clsx(styles['sapphire-sidebar__separator'])}\n ></li>\n <li\n {...itemProps}\n {...styleProps}\n {...filterDOMProps(props, { global: true })}\n >\n {title && (\n <div\n {...headingProps}\n className={clsx(styles['sapphire-sidebar__section-header'])}\n >\n {title}\n </div>\n )}\n <ul\n {...groupProps}\n className={clsx(styles['sapphire-sidebar__section'])}\n >\n {children}\n </ul>\n </li>\n </>\n );\n};\n","import React, { ReactNode, useRef } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport { useScrollCheck } from '@danske/sapphire-react';\n\nexport interface SidebarBodyProps extends DOMProps {\n /**\n * Wrapping element type.\n * @default 'nav'\n */\n elementType?: string;\n children?: ReactNode;\n}\n\nexport const SidebarBody = ({\n elementType = 'nav',\n children,\n ...props\n}: SidebarBodyProps): React.JSX.Element => {\n const RootNode = elementType as any;\n const sidebarBody = useRef<HTMLElement>(null);\n const { isScrolled, scrollCheckProps } = useScrollCheck(sidebarBody);\n\n return (\n <RootNode\n ref={sidebarBody}\n tabIndex={\n -1 /* Some browsers will make this focusable because it overflows */\n }\n className={clsx(styles['sapphire-sidebar__body'], {\n [styles['sapphire-sidebar__body--scrolled']]: isScrolled,\n })}\n {...filterDOMProps(props, { global: true })}\n {...scrollCheckProps}\n >\n {children}\n </RootNode>\n );\n};\n","import React, { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\n\nexport interface SidebarListProps extends DOMProps {\n /**\n * Wrapping element type.\n * @default 'ul'\n */\n elementType?: 'ul' | 'ol';\n children?: ReactNode;\n}\n\nexport const SidebarList = ({\n elementType = 'ul',\n children,\n ...props\n}: SidebarListProps): React.JSX.Element => {\n const RootNode = elementType as any;\n\n return (\n <RootNode\n {...filterDOMProps(props, { global: true })}\n className={clsx(styles['sapphire-sidebar__nav-list'])}\n >\n {children}\n </RootNode>\n );\n};\n","import { Sidebar } from './src/Sidebar';\nimport { SidebarHeader } from './src/Header';\nimport { SidebarItem } from './src/Item';\nimport { SidebarExpandableItem } from './src/ExpandableItem';\nimport { SidebarSection } from './src/Section';\nimport { SidebarBody } from './src/Body';\nimport { SidebarList } from './src/List';\nimport { ResponsiveSidebarProvider } from './src/ResponsiveSidebarContext';\nimport { SidebarPanelTrigger } from './src/Panel';\n\nconst _Sidebar = Object.assign(Sidebar, {\n ResponsiveProvider: ResponsiveSidebarProvider,\n Header: SidebarHeader,\n Body: SidebarBody,\n List: SidebarList,\n Item: SidebarItem,\n ExpandableItem: SidebarExpandableItem,\n Section: SidebarSection,\n PanelTrigger: SidebarPanelTrigger,\n});\n\nexport { _Sidebar as Sidebar };\nexport { type SidebarProps } from './src/Sidebar';\nexport { type SidebarItemProps } from './src/Item';\nexport { type SidebarExpandableItemProps } from './src/ExpandableItem';\nexport { type SidebarSectionProps } from './src/Section';\nexport { type SidebarBodyProps } from './src/Body';\nexport { type SidebarListProps } from './src/List';\nexport { type SidebarHeaderProps } from './src/Header';\n","import React from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/progressIndicator/progressIndicator.module.css';\nimport {\n SapphireStyleProps,\n useThemeCheck,\n useSapphireStyleProps,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { useProgressBar } from '@react-aria/progress';\nimport { filterDOMProps } from '@react-aria/utils';\n\nexport type ProgressIndicatorProps = {\n /**\n * The maximum value for the progress bar. Will be used as:\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuemax\n *\n * @default 100\n */\n maxValue?: number;\n\n /**\n * The current value of the progress bar. Will be used as:\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuenow\n */\n value: number;\n\n /**\n * Defines how many segments the progress bar will have.\n *\n * @default 1\n */\n segments?: number;\n\n /**\n * Human-readable text alternative for the current value of the progress bar. Will be used as:\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuetext\n */\n 'aria-valuetext'?: string;\n} & SapphireStyleProps &\n GlobalDomAttributes &\n ({ 'aria-labelledby': string } | { 'aria-label': string });\n\nexport const ProgressIndicator = (\n props: ProgressIndicatorProps\n): JSX.Element => {\n const {\n maxValue = 100,\n value: realValue,\n segments = 1,\n 'aria-valuetext': ariaValueText,\n } = props;\n\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n const { progressBarProps } = useProgressBar({\n ...props,\n minValue: 0,\n valueLabel: ariaValueText,\n });\n\n const minValue = 0;\n\n const value = Math.min(Math.max(realValue, minValue), maxValue);\n const widthPercentage = (value / maxValue) * 100;\n\n return (\n <div\n {...filterDOMProps(props, { global: true })}\n className={clsx(styles['sapphire-progress'])}\n >\n <div\n {...progressBarProps}\n className={styles['sapphire-progress--indicator']}\n style={{ ...styleProps, width: `${widthPercentage}%` }}\n aria-label={'aria-label' in props ? props['aria-label'] : undefined}\n aria-labelledby={\n 'aria-labelledby' in props ? props['aria-labelledby'] : undefined\n }\n />\n {segments > 1 && (\n <div className={styles['sapphire-progress--segments']}>\n {Array.from({ length: segments }, (_, index) => (\n <span key={index}></span>\n ))}\n </div>\n )}\n </div>\n );\n};\n","import { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/slider/slider.module.css';\nimport {\n useThemeCheck,\n useSapphireStyleProps,\n Label,\n SapphireStyleProps,\n Field,\n FieldProps,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport {\n Slider as RACSlider,\n SliderProps as RACSliderProps,\n SliderThumb as RACSliderThumb,\n SliderThumbProps as RACSliderThumbProps,\n SliderTrack as RACSliderTrack,\n} from 'react-aria-components';\nimport React from 'react';\n\nexport type SliderProps = {\n label?: ReactNode;\n /**\n * A note to show below the slider.\n * Use {@Link Slider.Note} to render the note.\n */\n note?: ReactNode;\n} & SapphireStyleProps &\n GlobalDomAttributes &\n Pick<FieldProps, 'labelPlacement'> &\n Pick<\n RACSliderProps<number>, // We're only supporting sliders with one end\n | 'isDisabled'\n | 'minValue'\n | 'maxValue'\n | 'step'\n | 'value'\n | 'defaultValue'\n | 'aria-label'\n | 'onChange'\n | 'onChangeEnd'\n > &\n Pick<RACSliderThumbProps, 'name'>;\n\nexport const Slider = ({\n label,\n labelPlacement = 'above',\n note,\n name,\n ...props\n}: SliderProps): JSX.Element => {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n\n return (\n <Field {...styleProps} labelPlacement={labelPlacement}>\n <Field.Context>\n {label && (\n <Field.Label>\n <Label>{label}</Label>\n </Field.Label>\n )}\n\n <Field.Control>\n <RACSlider {...props} style={{ height: '100%' }}>\n <div className={clsx(styles['sapphire-slider'])} role=\"slider\">\n <RACSliderTrack\n className={({ isDisabled }) =>\n clsx(styles['sapphire-slider__track'], {\n [styles['is-disabled']]: isDisabled,\n })\n }\n >\n {({ state }) => (\n <>\n <div\n className={clsx(\n styles['sapphire-slider__track-remaining']\n )}\n />\n <div\n className={clsx(styles['sapphire-slider__track-fill'])}\n style={{ width: state.getThumbPercent(0) * 100 + '%' }}\n />\n <RACSliderThumb\n name={name}\n className={(state) =>\n clsx(styles['sapphire-slider__thumb'], {\n [styles['is-focus']]: state.isFocusVisible,\n })\n }\n style={({ state }) => {\n // Pad the thumb position, so it doesn't go over the track\n const percent = Math.min(\n 3 + state.getThumbPercent(0) * 94,\n 100\n );\n return {\n left: `${percent}%`,\n };\n }}\n />\n </>\n )}\n </RACSliderTrack>\n </div>\n </RACSlider>\n </Field.Control>\n\n {note && <Field.Footer>{note}</Field.Footer>}\n </Field.Context>\n </Field>\n );\n};\n","import { Field } from '@danske/sapphire-react';\nimport { Slider } from './src/Slider';\n\nconst _Slider = Object.assign(Slider, {\n Note: Field.Note,\n});\n\nexport { _Slider as Slider };\nexport { type SliderProps } from './src/Slider';\n","import React, { useRef } from 'react';\nimport clsx from 'clsx';\nimport { AriaButtonProps, useButton } from '@react-aria/button';\nimport { useHover } from '@react-aria/interactions';\nimport { useTag } from '@react-aria/tag';\nimport { mergeProps } from '@react-aria/utils';\nimport type { ListState } from '@react-stately/list';\nimport type { FocusableElement, Node } from '@react-types/shared';\n\nimport { Icon, useThemeCheck } from '@danske/sapphire-react';\nimport { Close, Error } from '@danske/sapphire-icons/react';\nimport styles from '@danske/sapphire-css/components/tag/tag.module.css';\nimport { FocusRing } from '@react-aria/focus';\n\nexport interface TagProps<T> {\n /**\n * Object representing the tag. Contains relevant information about the tag.\n */\n item: Node<T>;\n /**\n * State for TagGroup, returned by `useListState`\n */\n state: ListState<T>;\n /**\n * Shows error icon.\n * @default 'false'\n */\n hasError?: boolean;\n /**\n * Control whether the tag is removable or not.\n * This behavior is overridden to `false` if the tag is disabled.\n *\n * @default false\n */\n allowsRemoving?: boolean;\n}\n\nexport function Tag<T>(props: TagProps<T>): React.JSX.Element {\n useThemeCheck();\n const { hasError = false, item, state } = props;\n const ref = useRef(null);\n const {\n gridCellProps,\n isDisabled,\n isFocused,\n isPressed,\n removeButtonProps,\n rowProps: { onKeyDown, ...rowProps },\n ...otherProps\n } = useTag(props, state, ref);\n const { hoverProps, isHovered } = useHover({ isDisabled });\n /* hasAction prop is passed when onAction is present, we are using it to set the hover and action classes.\n The workaround below is made because AriaTagProps Omit's hasAction to avoid typecheck error */\n const hasAction = (otherProps as any).hasAction;\n\n return (\n <FocusRing focusRingClass={styles['is-focus']}>\n <div\n ref={ref}\n {...mergeProps(\n {\n onKeyDown: (e: React.KeyboardEvent<FocusableElement>) => {\n /* We are removing Space key interaction and prevent default behavior to avoid isPressed prop being set\n as we do not want to apply is-active class on \"Space\" interaction when having actionable tags with onAction or link */\n if (e.key !== ' ') {\n onKeyDown?.(e);\n } else {\n e.preventDefault();\n }\n },\n },\n rowProps,\n hoverProps\n )}\n className={clsx(\n styles['sapphire-tag'],\n styles['js-focus'],\n styles['js-hover'],\n {\n [styles['sapphire-tag--actionable']]: hasAction,\n [styles['is-active']]: hasAction && isPressed,\n [styles['is-hover']]: hasAction && isHovered,\n [styles['is-disabled']]: isDisabled,\n }\n )}\n {...(hasError ? { 'aria-invalid': true } : {})}\n >\n <div {...gridCellProps} className={styles['sapphire-tag__content']}>\n {hasError && !isDisabled && <IconError />}\n {item.rendered}\n {!isDisabled && props.allowsRemoving && (\n <RemoveButton {...(removeButtonProps as AriaButtonProps)} />\n )}\n </div>\n </div>\n </FocusRing>\n );\n}\n\nfunction RemoveButton(removeButtonProps: AriaButtonProps) {\n const buttonRef = useRef(null);\n const { buttonProps } = useButton(removeButtonProps, buttonRef);\n return (\n <button\n {...buttonProps}\n className={clsx(styles['sapphire-tag__button'], styles['js-focus'])}\n >\n <Icon size=\"sm\">\n <Close />\n </Icon>\n </button>\n );\n}\n\nconst IconError = () => {\n return (\n <span className={clsx(styles['sapphire-tag__error-icon'])}>\n <Icon size=\"sm\">\n <Error />\n </Icon>\n </span>\n );\n};\n","import React, { Key, ReactNode, useRef } from 'react';\nimport { useTagGroup } from '@react-aria/tag';\nimport { useListState } from '@react-stately/list';\nimport {\n AriaLabelingProps,\n CollectionBase,\n DOMProps,\n} from '@react-types/shared';\nimport {\n Field,\n Label,\n SapphireStyleProps,\n useThemeCheck,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/tag/tag.module.css';\n\nimport { Tag } from './Tag';\nimport { TagItemProps } from './TagItem';\n\nexport interface TagGroupProps<T>\n extends CollectionBase<T>,\n DOMProps,\n // TODO when moving to \"core\", use types under `types.ts` instead of plain strings\n Pick<\n AriaLabelingProps,\n 'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'aria-details'\n >,\n SapphireStyleProps,\n GlobalDomAttributes {\n /**\n * A HelpButton element to place next to the label.\n */\n contextualHelp?: ReactNode;\n /**\n * Custom error message help text.\n */\n errorMessage?: string;\n /**\n * The label of the tag group.\n */\n label?: string;\n /**\n * Places the label either above (default) or on the left side of tags.\n * @default 'above'\n */\n labelPlacement?: 'above' | 'side';\n /**\n * Help text description displayed below tags.\n */\n note?: string;\n /**\n * onAction handler passed down for actionable Tags, called onPress of tags.\n */\n onAction?: (key: Key) => void;\n /**\n * Handler that is called when a user deletes a tag.\n *\n * @deprecated Use `onRemove` prop on the `TagItem` component instead.\n * This prop will be removed when this component is moved to \"@danske/sapphire-react\".\n */\n onRemove?: (keys: Set<Key>) => void;\n}\n\nexport function TagGroup<T extends object>(\n props: TagGroupProps<T>\n): React.JSX.Element {\n useThemeCheck();\n const {\n contextualHelp,\n errorMessage,\n label: labelText,\n labelPlacement = 'above',\n note,\n onRemove: originalOnRemove,\n ...otherProps\n } = props;\n const ref = useRef(null);\n const state = useListState(props);\n\n // TODO when moving to \"core\": Remove `originalOnRemove` from here & remove support for `onRemove` prop.\n // If an external onRemove handler is provided, use it directly.\n // Otherwise, call individual onRemove handlers on each tag item.\n const onRemove = originalOnRemove\n ? (keys: Set<Key>) => {\n // eslint-disable-next-line no-console -- It's good to warn about the deprecation, but this needs to be removed alongside `onRemove`\n console.warn(\n 'The `onRemove` prop is deprecated and will be removed in future versions. Use the `onRemove` prop on the `TagItem` component instead.'\n );\n originalOnRemove(keys);\n }\n : (keys: Set<Key>) => {\n // Iterate through the keys and call each item's onRemove handler\n Array.from(keys).forEach((key) => {\n const item = state.collection.getItem(key);\n if (item) {\n (item.props as TagItemProps<T>).onRemove?.();\n }\n });\n };\n\n const { descriptionProps, gridProps, labelProps, errorMessageProps } =\n useTagGroup({ ...props, onRemove }, state, ref);\n\n return (\n <Field\n {...otherProps}\n labelPlacement={labelPlacement}\n labelVerticalAlignment=\"top\"\n noDefaultWidth\n >\n <Field.Context\n descriptionProps={errorMessage ? errorMessageProps : descriptionProps}\n >\n {(labelText || contextualHelp) && (\n <Field.Label>\n <Label {...labelProps} contextualHelp={contextualHelp}>\n {labelText}\n </Label>\n </Field.Label>\n )}\n <Field.Control>\n <div\n {...gridProps}\n ref={ref}\n className={styles['sapphire-tag-group']}\n >\n {Array.from(state.collection).map((item) => (\n <Tag\n key={item.key}\n item={item}\n state={state}\n hasError={item.props.hasError}\n // TODO when moving to \"core\": Remove `originalOnRemove` from here & remove support for `onRemove` prop.\n // Always allow removing if `onRemove` was provided, for backwards compatibility\n // Allow removal of the tag item if a removal handler is provided\n allowsRemoving={!!originalOnRemove || !!item.props.onRemove}\n />\n ))}\n </div>\n </Field.Control>\n {(note || errorMessage) &&\n (errorMessage ? (\n <Field.Footer>\n <Field.Note variant=\"error\">{errorMessage}</Field.Note>\n </Field.Footer>\n ) : (\n <Field.Footer>{note}</Field.Footer>\n ))}\n </Field.Context>\n </Field>\n );\n}\n","import { Item } from '@react-stately/collections';\nimport { ItemProps } from '@react-types/shared';\n\nexport interface TagItemProps<T> extends ItemProps<T> {\n /**\n * Shows error icon.\n * @default 'false'\n */\n hasError?: boolean;\n\n /**\n * This function is called when the tag is being removed, either through\n * clicking the \"X\" button or by any supported key combination.\n *\n * @default false\n *\n * @note If the `TagGroup` has `onRemove` prop, that implementation will take\n * precedence over this function.\n *\n * @note If the `TagItem` is disabled, this function will not be called.\n */\n onRemove?: () => void;\n}\n\nconst TagItem = Item as <T>(props: TagItemProps<T>) => JSX.Element;\n\nexport { TagItem };\n","import React, { useRef } from 'react';\nimport { useDateSegment } from '@react-aria/datepicker';\nimport { DateSegment as DateSegmentType } from '@react-stately/datepicker';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport clsx from 'clsx';\nimport { DateSegmentProps } from '@danske/sapphire-react';\n\nexport const TimeSegment = ({ segment, state }: DateSegmentProps) =>\n segment.type === 'hour' ||\n segment.type === 'minute' ||\n segment.type === 'dayPeriod' ? (\n <EditableSegment segment={segment} state={state}></EditableSegment>\n ) : (\n <SeparatorSegment segment={segment} />\n );\nconst SeparatorSegment = ({ segment }: { segment: DateSegmentType }) => (\n <span\n aria-hidden=\"true\"\n className={clsx(\n styles['sapphire-date-field__segment'],\n styles['sapphire-date-field__segment--separator']\n )}\n >\n {segment.text}\n </span>\n);\n\nconst EditableSegment = ({ segment, state }: DateSegmentProps) => {\n const ref = useRef(null);\n const { segmentProps } = useDateSegment(segment, state, ref);\n\n return (\n <div\n {...segmentProps}\n style={segmentProps.style}\n ref={ref}\n className={clsx(styles['sapphire-date-field__segment'], {\n [styles['sapphire-date-field__segment--filled']]:\n !segment.isPlaceholder,\n })}\n >\n {segment.text}\n </div>\n );\n};\n","import da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nexport default {\n 'da-DK': da,\n 'en-US': en,\n 'de-DE': de,\n 'fi-FI': fi,\n 'nb-NO': no,\n 'pl-PL': pl,\n 'sv-SE': se,\n};\n","import React from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport {\n SapphireStyleProps,\n useThemeCheck,\n Field,\n Label,\n Icon,\n IconButton,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { AriaTimeFieldProps, useTimeField } from '@react-aria/datepicker';\nimport { ForwardedRef, forwardRef, RefObject, ReactNode } from 'react';\nimport { TimeValue } from 'react-aria-components';\nimport {\n useTimeFieldState,\n DateSegment as DateSegmentType,\n} from '@react-stately/datepicker';\nimport { useLocale, useMessageFormatter } from '@react-aria/i18n';\nimport { TimeSegment } from './TimeFieldSegment';\nimport { CloseOutline } from '@danske/sapphire-icons/react';\nimport { useObjectRef } from '@react-aria/utils';\nimport intlMessages from '../i18n';\n\nconst isAnySegmentModified = (segments: DateSegmentType[]) =>\n segments\n .map(({ type, isPlaceholder }) => {\n // type \"literal\" refers to the segment containing the non-editable separator\n return type !== 'literal' && !isPlaceholder;\n })\n .some((isModified) => isModified);\n\nexport type TimeFieldProps<T extends TimeValue> = Pick<\n AriaTimeFieldProps<T>,\n // TODO: when this is moved to `core`, we can replace the picked props with `ValueBasePropsKeys`\n | 'isDisabled'\n | 'isRequired'\n | 'isReadOnly'\n | 'label'\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'onFocus'\n | 'onBlur'\n | 'shouldForceLeadingZeros'\n> &\n SapphireStyleProps &\n GlobalDomAttributes & {\n /**\n * @default 'lg'\n */\n size?: 'lg' | 'md';\n /**\n * To visually indicate if this field is required or optional.\n * @default false\n */\n necessityIndicator?: boolean;\n /**\n * Places the label either above (default) or on the side of the control.\n * @default 'above'\n */\n labelPlacement?: 'side' | 'above';\n /**\n * If it should hide the \"clear\" button when input is not empty.\n *\n * @default false\n */\n noClearButton?: boolean;\n /**\n * Whether the input should render as having an error and an error message.\n * This also sets the appropriate `aria` attributes on the input.\n *\n * A `boolean` sets the error state. Can be paired with the \"note\" prop with Field.Note variant=\"error\"\n * A `ReactNode` sets the error state with an additional error message.\n *\n * **An error message is strongly recommended because an error should\n * always have an explanation about how to fix it.**\n */\n error?: boolean | ReactNode;\n /**\n * A note to show below the input.\n * If the input has an error message, this note will be replaced by that.\n * Use {@Link Field.Note} to render the note.\n */\n note?: ReactNode;\n /**\n * A HelpButton to render next to the label.\n */\n contextualHelp?: ReactNode;\n };\n\nfunction _TimeField<T extends TimeValue>(\n {\n // TODO many other props\n size = 'lg',\n noClearButton = false,\n error,\n note,\n contextualHelp,\n necessityIndicator = false,\n ...otherProps\n }: TimeFieldProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) {\n useThemeCheck();\n\n const timeFieldRef = useObjectRef(ref);\n const { locale } = useLocale();\n const formatMessage = useMessageFormatter(intlMessages);\n\n const state = useTimeFieldState({\n ...otherProps,\n locale,\n isInvalid: error ? true : undefined,\n });\n\n const { fieldProps, labelProps } = useTimeField(\n { ...otherProps },\n state,\n timeFieldRef\n );\n\n return (\n <Field {...otherProps} ref={ref} size={size} noShrink>\n <Field.Context>\n {otherProps.label && (\n <Field.Label>\n <Label\n {...labelProps}\n size={size}\n necessityIndicator={\n otherProps.isRequired && necessityIndicator\n ? 'required'\n : !otherProps.isRequired && necessityIndicator\n ? 'optional'\n : undefined\n }\n contextualHelp={contextualHelp}\n >\n {otherProps.label}\n </Label>\n </Field.Label>\n )}\n </Field.Context>\n <Field.Control>\n <div\n className={clsx(styles['sapphire-date-field'], {\n [styles['sapphire-date-field--error']]: state.isInvalid,\n [styles['sapphire-date-field--no-clear-button']]: noClearButton,\n [styles['sapphire-date-field--no-calendar']]: true,\n [styles['sapphire-date-field--md']]: size === 'md',\n })}\n >\n <div\n {...fieldProps}\n className={styles['sapphire-date-field__input']}\n ref={timeFieldRef}\n >\n {state.segments.map((segment, i) => (\n <TimeSegment key={i} segment={segment} state={state} />\n ))}\n </div>\n {!noClearButton &&\n !otherProps.isReadOnly &&\n !otherProps.isDisabled &&\n isAnySegmentModified(state.segments) && (\n <IconButton\n aria-label={formatMessage('clear')}\n onPress={() =>\n state.segments.forEach((segment) =>\n state.clearSegment(segment.type)\n )\n }\n size={size === 'md' ? 'sm' : 'md'}\n UNSAFE_className={clsx(\n styles['sapphire-date-field__button'],\n styles['sapphire-date-field__button--clear']\n )}\n >\n <Icon>\n <CloseOutline />\n </Icon>\n </IconButton>\n )}\n </div>\n </Field.Control>\n {(!!error && typeof error !== 'boolean') || note ? (\n <Field.Footer>\n {!!error && typeof error !== 'boolean' ? (\n <Field.Note variant=\"error\">{error}</Field.Note>\n ) : note ? (\n note\n ) : null}\n </Field.Footer>\n ) : null}\n </Field>\n );\n}\n\nexport const TimeField = forwardRef(_TimeField) as <T extends TimeValue>(\n props: TimeFieldProps<T> & { ref?: RefObject<HTMLDivElement> }\n) => React.ReactElement;\n"],"names":["React","useContext","forwardRef","useThemeCheck","useSapphireStyleProps","useObjectRef","FocusScope","DisclosureGroup","__spreadProps","__spreadValues","filterDOMProps","clsx","styles","hasAllowedCustomSidePadding","__objRest","Button","Typography","Icon","ChevronDown","useFocusManager","useEvent","Disclosure","DisclosurePanel","Warning","CheckmarkOutline","Error2","Information","alertStyles","da","en","de","fi","no","pl","se","useMessageFormatter","intlMessages","useRef","useFocusableRef","useComboBoxState","useComboBox","ListBoxPopover","useState","useMemo","useEffect","useResizeObserver","createContext","useContextProps","RACBreadcrumbsContext","CollectionRendererContext","useBreadcrumbs","CollectionBuilder","Collection","mergeProps","ChevronRight","Menu","IconButton","OverflowMenuHorizontal","MenuItem","TooltipIfNeeded","mergeRefs","CollectionNode","createLeafComponent","PressResponder","useId","useHover","useDrop","useButton","useFocusRing","useClipboard","Pressable","Upload","useControlledState","useEffectEvent","PopoverTrigger","ButtonGroup","VisuallyHidden","ToggleButton","ChevronUp","Flex","cloneElement","tokens","getWrappedElement","label","useField","Field","Label","CaretUp","CaretDown","useLocale","useNumberFieldState","useNumberField","useImperativeHandle","createFocusableRef","textFieldStyles","useMatchedBreakpoints","Panel","ModalLayout","ChevronLeft","View","useFocusWithin","ThemeRoot","CloseLarge","buttonStyles","useLayoutEffect","Transition","Sidebar","useListBoxSection","useScrollCheck","useProgressBar","RACSlider","RACSliderTrack","RACSliderThumb","useTag","FocusRing","Close","useListState","useTagGroup","Item","useDateSegment","useTimeFieldState","useTimeField","CloseOutline"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/Accordion/src/AccordionContext.ts","../../src/Accordion/src/Accordion.tsx","../../src/Accordion/src/utils.ts","../../src/Accordion/src/AccordionHeading.tsx","../../src/Accordion/src/AccordionItem.tsx","../../src/Accordion/src/AccordionPanel.tsx","../../src/Accordion/index.ts","../../src/Alert/src/Alert.tsx","../../src/Amount/src/useGroupAmount.ts","../../src/Amount/src/Amount.tsx","../../src/Autocomplete/i18n/index.ts","../../src/Autocomplete/src/Autocomplete.tsx","../../src/Breadcrumbs/src/useBreadcrumbThreshold.ts","../../src/Breadcrumbs/src/Breadcrumbs.tsx","../../src/Breadcrumbs/src/BreadcrumbsSeparator.tsx","../../src/Breadcrumbs/src/BreadcrumbOverflowMenu.tsx","../../src/Breadcrumbs/src/BreadcrumbItemStatic.tsx","../../src/Breadcrumbs/src/BreadcrumbItemLink.tsx","../../src/Breadcrumbs/src/BreadcrumbItem.tsx","../../src/FileDropzone/src/FileTrigger.tsx","../../src/FileDropzone/src/utils.ts","../../src/FileDropzone/i18n/index.ts","../../src/FileDropzone/src/FileDropzone.tsx","../../src/Filtering/src/FilterDropdown.tsx","../../src/Filtering/src/SearchableSelectFilter.tsx","../../src/Flag/src/Flag.tsx","../../src/LabeledValue/src/LabeledValue.tsx","../../src/NumberField/i18n/index.ts","../../src/NumberField/src/StepperButton.tsx","../../src/NumberField/src/useAutofillStyle.ts","../../src/NumberField/src/formatHelpers.ts","../../src/NumberField/src/cursorHelpers.ts","../../src/NumberField/src/keyboardHelpers.ts","../../src/NumberField/src/useNumberFieldFormatting.ts","../../src/NumberField/src/useSapphireNumberField.ts","../../src/NumberField/src/NumberField.tsx","../../src/Sidebar/src/SecondarySidebarContext.tsx","../../src/Sidebar/src/ResponsiveSidebarContext.tsx","../../src/Sidebar/src/Panel.tsx","../../src/Sidebar/src/useSidebar.ts","../../src/Sidebar/src/Sidebar.tsx","../../src/Sidebar/src/Header.tsx","../../src/Sidebar/src/Item.tsx","../../src/Sidebar/src/ExpandableItem.tsx","../../src/Sidebar/src/Section.tsx","../../src/Sidebar/src/Body.tsx","../../src/Sidebar/src/List.tsx","../../src/Sidebar/index.ts","../../src/ProgressIndicator/src/ProgressIndicator.tsx","../../src/Slider/src/Slider.tsx","../../src/Slider/index.ts","../../src/TagGroup/src/Tag.tsx","../../src/TagGroup/src/TagGroup.tsx","../../src/TagGroup/src/TagItem.tsx","../../src/TimeField/src/TimeFieldSegment.tsx","../../src/TimeField/i18n/index.ts","../../src/TimeField/src/TimeField.tsx"],"sourcesContent":["import { TypographyHeadingProps } from '@danske/sapphire-react';\nimport React, { useContext } from 'react';\n\ninterface AccordionContextProps {\n sidePadding?: number | string;\n headerLevel?: TypographyHeadingProps['level'];\n}\n\nexport const AccordionContext = React.createContext<AccordionContextProps>({\n sidePadding: undefined,\n headerLevel: 5,\n});\n\nexport function useAccordionContext(): AccordionContextProps {\n const context = useContext(AccordionContext);\n if (context) {\n return context;\n }\n throw new Error(\n 'Accordion context can only be used within Accordion component.'\n );\n}\n","import React, { ForwardedRef, forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps, useObjectRef } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/accordion/accordion.module.css';\nimport {\n SapphireStyleProps,\n TypographyHeadingProps,\n useSapphireStyleProps,\n useThemeCheck,\n withTruthyZero as hasAllowedCustomSidePadding,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { FocusScope } from '@react-aria/focus';\n\nimport { AccordionContext } from './AccordionContext';\nimport { DisclosureGroup, DisclosureGroupProps } from 'react-aria-components';\n\nexport type TreeExpansionMode = 'single' | 'multiple';\n\nexport interface AccordionProps\n extends GlobalDomAttributes,\n SapphireStyleProps,\n DOMProps,\n Pick<\n DisclosureGroupProps,\n | 'allowsMultipleExpanded'\n | 'expandedKeys'\n | 'defaultExpandedKeys'\n | 'onExpandedChange'\n | 'children'\n | 'isDisabled'\n > {\n /** Set aria-level attribute for item's header. Accessibility requirement.\n * Defines the hierarchical level of an element within a page structure.\n * @default 5\n */\n headerLevel?: TypographyHeadingProps['level'];\n /**\n * Removes the divider after the last accordion item.\n * Useful when rendered in a container which already has borders.\n */\n hideLastDivider?: boolean;\n /**\n * Counter acts the side padding, so that accordion is shifted to the left with same amount\n * and having side padding * 2 added to width – resulting in full width accordion.\n * Useful in scenarions where accordion is inside a padded container and desired layout has accordion going from edge to edge horizontally.\n * @example\n * ```tsx\n * <Accordion hasNegativeSideMargin>...</Accordion>\n * ```\n */\n hasNegativeSideMargin?: boolean;\n /**\n * Add custom sized padding to the sides of the accordion items.\n * @example\n * ```tsx\n * <Accordion sidePadding={tokens.size.spacingContainerHorizontalM.value} hasNegativeSideMargin>...</Accordion>\n * ```\n */\n sidePadding?: number | string;\n}\n\nexport const Accordion = forwardRef(function Accordion(\n {\n allowsMultipleExpanded = true,\n headerLevel = 5,\n hideLastDivider = false,\n hasNegativeSideMargin = false,\n sidePadding,\n children,\n expandedKeys,\n defaultExpandedKeys,\n onExpandedChange,\n isDisabled,\n ...props\n }: AccordionProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n const forwardedRef = useObjectRef<HTMLDivElement>(ref);\n\n return (\n <FocusScope>\n <AccordionContext.Provider value={{ sidePadding, headerLevel }}>\n <DisclosureGroup\n {...filterDOMProps(props, { global: true, labelable: true })}\n allowsMultipleExpanded={allowsMultipleExpanded}\n expandedKeys={expandedKeys}\n defaultExpandedKeys={defaultExpandedKeys}\n onExpandedChange={onExpandedChange}\n isDisabled={isDisabled}\n ref={forwardedRef}\n className={clsx(\n styles['sapphire-accordion'],\n {\n [styles['sapphire-accordion--without-last-divider']]:\n hideLastDivider,\n [styles['sapphire-accordion--negative-margin-self']]:\n !hasAllowedCustomSidePadding(sidePadding) &&\n hasNegativeSideMargin,\n },\n styleProps.className\n )}\n style={{\n ...(hasAllowedCustomSidePadding(sidePadding) &&\n hasNegativeSideMargin\n ? {\n marginLeft:\n typeof sidePadding === 'string'\n ? `calc(${sidePadding} * -1)`\n : `-${sidePadding}px`,\n width: `calc(100% + calc(${sidePadding} * 2${\n typeof sidePadding === 'string' ? '' : 'px'\n }))`,\n }\n : {}),\n ...styleProps.style,\n }}\n >\n {children}\n </DisclosureGroup>\n </AccordionContext.Provider>\n </FocusScope>\n );\n});\n","export const customPaddingStyleProps = (sidePadding: number | string) => ({\n paddingLeft:\n typeof sidePadding === 'string' ? sidePadding : `${sidePadding}px`,\n paddingRight:\n typeof sidePadding === 'string' ? sidePadding : `${sidePadding}px`,\n});\n","import React, { forwardRef, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/accordion/accordion.module.css';\nimport {\n Icon,\n Typography,\n TypographyHeadingProps,\n withTruthyZero as hasAllowedCustomSidePadding,\n} from '@danske/sapphire-react';\nimport { ChevronDown } from '@danske/sapphire-icons/react';\nimport { Button } from 'react-aria-components';\nimport { useAccordionContext } from './AccordionContext';\nimport { customPaddingStyleProps } from './utils';\n\nexport interface AccordionHeadingProps extends DOMProps {\n children?: ReactNode;\n headerLevel?: TypographyHeadingProps['level'];\n}\n\nexport const AccordionHeading = forwardRef(function AccordionHeading(\n { children, headerLevel, ...props }: AccordionHeadingProps,\n ref: React.Ref<HTMLDivElement>\n): React.JSX.Element {\n const { sidePadding, headerLevel: contextHeaderLevel } =\n useAccordionContext();\n\n return (\n <div\n role=\"heading\"\n aria-level={headerLevel ?? contextHeaderLevel}\n {...filterDOMProps(props, { global: true })}\n ref={ref}\n >\n <Button\n slot=\"trigger\"\n className={({ isFocusVisible }) =>\n clsx(styles['sapphire-accordion__item-header'], styles['js-focus'], {\n [styles['is-focus']]: isFocusVisible,\n })\n }\n style={\n hasAllowedCustomSidePadding(sidePadding)\n ? customPaddingStyleProps(sidePadding)\n : {}\n }\n >\n <Typography.Heading level={6} elementType=\"span\">\n <div className={clsx(styles['sapphire-accordion__item-heading'])}>\n {children}\n </div>\n </Typography.Heading>\n <div className={clsx(styles['sapphire-accordion__item-arrow'])}>\n <Icon size=\"lg\">\n <ChevronDown />\n </Icon>\n </div>\n </Button>\n </div>\n );\n});\n","import React, { forwardRef } from 'react';\nimport clsx from 'clsx';\n\nimport styles from '@danske/sapphire-css/components/accordion/accordion.module.css';\n\nimport { Disclosure } from 'react-aria-components';\nimport { DisclosureProps } from 'react-aria-components';\nimport { useFocusManager } from '@react-aria/focus';\nimport { useEvent, useObjectRef } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\n\nexport interface AccordionItemProps\n extends DOMProps,\n Pick<DisclosureProps, 'children' | 'isDisabled'> {}\n\nexport const AccordionItem = forwardRef(function AccordionItem(\n { children, id, ...props }: AccordionItemProps,\n forwardedRef: React.Ref<HTMLDivElement>\n): JSX.Element {\n const ref = useObjectRef<HTMLDivElement>(forwardedRef);\n const focusManager = useFocusManager();\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (!focusManager) return;\n\n if (\n !(e.target instanceof Element) ||\n e.target.getAttribute('slot') !== 'trigger'\n )\n return;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n focusManager.focusNext();\n break;\n case 'ArrowUp':\n e.preventDefault();\n focusManager.focusPrevious();\n break;\n case 'Home':\n e.preventDefault();\n focusManager.focusFirst();\n break;\n case 'End':\n e.preventDefault();\n focusManager.focusLast();\n break;\n default:\n return;\n }\n };\n\n useEvent(ref, 'keydown', onKeyDown);\n\n return (\n <Disclosure\n ref={ref}\n id={id}\n className={({ isExpanded, isDisabled }) =>\n clsx(styles['sapphire-accordion__item'], {\n [styles['sapphire-accordion__item--open']]: isExpanded,\n [styles['is-disabled']]: isDisabled,\n })\n }\n {...props}\n >\n <div className={clsx(styles['sapphire-accordion__item-content-wrapper'])}>\n {children}\n </div>\n </Disclosure>\n );\n});\n","import React, { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\nimport styles from '@danske/sapphire-css/components/accordion/accordion.module.css';\nimport { DisclosurePanel, DisclosurePanelProps } from 'react-aria-components';\nimport { useAccordionContext } from './AccordionContext';\nimport { customPaddingStyleProps } from './utils';\nimport { withTruthyZero as hasAllowedCustomSidePadding } from '@danske/sapphire-react';\nimport { DOMProps } from '@react-types/shared';\n\nexport interface AccordionPanelProps\n extends DOMProps,\n Pick<DisclosurePanelProps, 'children' | 'role'> {}\n\nexport const AccordionPanel = forwardRef(function AccordionPanel(\n { children, ...props }: AccordionPanelProps,\n ref: React.Ref<HTMLDivElement>\n): React.JSX.Element {\n const { sidePadding } = useAccordionContext();\n\n return (\n <DisclosurePanel\n ref={ref}\n {...filterDOMProps(props, { global: true })}\n className={clsx(styles['sapphire-accordion__item-content'])}\n style={{\n /**\n * useDisclosure hook from react-aria uses css variable --disclosure-panel-height to\n * animate the height of the panel.\n */\n height: 'var(--disclosure-panel-height)',\n }}\n {...props}\n >\n <div\n style={{\n ...(hasAllowedCustomSidePadding(sidePadding)\n ? customPaddingStyleProps(sidePadding)\n : {}),\n }}\n className={styles['sapphire-accordion__item-content-inner']}\n >\n {children}\n </div>\n </DisclosurePanel>\n );\n});\n","import { Accordion, type AccordionProps } from './src/Accordion';\nimport {\n AccordionHeading,\n AccordionHeadingProps,\n} from './src/AccordionHeading';\nimport { AccordionItem, type AccordionItemProps } from './src/AccordionItem';\nimport { AccordionContext } from './src/AccordionContext';\nimport { AccordionPanel, AccordionPanelProps } from './src/AccordionPanel';\n\n/*\n * Before moving Accordion component to the core package, it's important to check on the\n * latest release of \"@react-aria/accordion\".\n * The hook and the component package are marked as \"pre-release\", so we can expect some changes.\n *\n * https://github.com/adobe/react-spectrum/issues/2801#issuecomment-1035377858\n * https://github.com/adobe/react-spectrum/discussions/6635#discussioncomment-9990027\n *\n * The current implementation is based on the SelectableCollection API, which creates bugs when\n * focusable items are used inside of the Accordion.Item.\n * E.g. UC-3414 (fixed), UC-3545 (to-do)\n *\n * Alternatively, we can re-implement the component.\n */\nconst _Accordion = Object.assign(Accordion, {\n Heading: AccordionHeading,\n Item: AccordionItem,\n Panel: AccordionPanel,\n});\n\nexport {\n _Accordion as Accordion,\n AccordionContext,\n type AccordionProps,\n type AccordionItemProps,\n type AccordionHeadingProps,\n type AccordionPanelProps,\n};\n","import React, { ReactNode } from 'react';\nimport {\n SapphireStyleProps,\n useThemeCheck,\n useSapphireStyleProps,\n Typography,\n Icon,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport {\n CheckmarkOutline,\n Information,\n Warning,\n Error,\n} from '@danske/sapphire-icons/react';\nimport alertStyles from '@danske/sapphire-css/components/alert/alert.module.css';\nimport { clsx } from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\n\nexport interface SapphireAlertProps\n extends GlobalDomAttributes,\n SapphireStyleProps {\n /**\n * The content of the alert.\n */\n children?: ReactNode;\n\n /**\n * The title of the alert.\n */\n title?: ReactNode;\n\n /**\n * @default 'info'\n */\n variant?: 'info' | 'positive' | 'negative' | 'warning';\n}\n\nexport function Alert({\n children,\n title,\n variant = 'info',\n ...props\n}: SapphireAlertProps): React.JSX.Element {\n useThemeCheck();\n const {\n styleProps: { style, className },\n } = useSapphireStyleProps(props);\n\n const getIcon = (variant: string) => {\n switch (variant) {\n case 'warning':\n return <Warning />;\n case 'positive':\n return <CheckmarkOutline />;\n case 'negative':\n return <Error />;\n default:\n return <Information />;\n }\n };\n\n return (\n <div\n {...filterDOMProps(props, { global: true })}\n className={clsx(\n alertStyles['sapphire-alert'],\n {\n [alertStyles['sapphire-alert--positive']]: variant === 'positive',\n [alertStyles['sapphire-alert--negative']]: variant === 'negative',\n [alertStyles['sapphire-alert--warning']]: variant === 'warning',\n },\n className\n )}\n style={style}\n role=\"alert\"\n >\n <span className={alertStyles['sapphire-alert__icon']}>\n <Icon size=\"sm\">{getIcon(variant)}</Icon>\n </span>\n <div className={alertStyles['sapphire-alert__title']}>\n <Typography.Body size=\"sm\" isSemibold>\n {title}\n </Typography.Body>\n </div>\n <div className={alertStyles['sapphire-alert__content']}>\n <Typography.Body elementType=\"section\" size=\"md\">\n {children}\n </Typography.Body>\n </div>\n </div>\n );\n}\n","import { useMemo } from 'react';\n\nexport interface GroupedPart {\n type: 'sign' | 'number' | 'currency';\n value: string;\n}\n\n/**\n * Process the value that is being provided and format it using the provided formatter.\n * It returns both the formatted value as a string and the grouped parts for further processing.\n * It's useful for keeping track of diffrent parts of the formatted amount and where currency symbols are located.\n *\n * Example: value = \"+30000\", formatter for DKK currency\n * formattedValue = \"+DKK 30,000.00\"\n * groupedParts = [\n * { type: 'sign', value: '+' },\n * { type: 'currency', value: 'DKK' },\n * { type: 'number', value: '30,000.00' }\n * ]\n */\nexport const useGroupAmount = (\n value: string | number,\n formatter: Intl.NumberFormat\n) => {\n const numberValue = useMemo(() => {\n const parsed = Number(value);\n return isNaN(parsed) ? 0 : parsed;\n }, [value]);\n\n const groupedParts = useMemo(() => {\n const parts = formatter.formatToParts(numberValue);\n const result: GroupedPart[] = [];\n let currentNumber = '';\n\n parts.forEach((part) => {\n if (part.type === 'plusSign' || part.type === 'minusSign') {\n result.push({ type: 'sign', value: part.value });\n } else if (part.type === 'currency') {\n if (currentNumber) {\n result.push({ type: 'number', value: currentNumber });\n currentNumber = '';\n }\n result.push({ type: 'currency', value: part.value });\n } else if (part.type !== 'literal') {\n currentNumber += part.value;\n }\n });\n\n if (currentNumber) {\n result.push({ type: 'number', value: currentNumber });\n }\n\n return result;\n }, [numberValue, formatter]);\n\n const formattedValue = useMemo(\n () => groupedParts.map((part) => part.value).join(''),\n [groupedParts]\n );\n\n return { formattedValue, groupedParts };\n};\n","import { useMemo } from 'react';\nimport {\n useThemeCheck,\n SapphireStyleProps,\n GlobalDomAttributes,\n Typography,\n TypographyBodyProps,\n useSapphireStyleProps,\n} from '@danske/sapphire-react';\nimport React from 'react';\nimport { useLocale } from '@react-aria/i18n';\nimport { useGroupAmount } from './useGroupAmount';\nimport styles from '@danske/sapphire-css/components/amount/amount.module.css';\n\n/**\n * Format options for currency amounts.\n * The style is always 'currency', so only currency-related options are exposed.\n */\nexport type CurrencyFormatOptions = Pick<\n Intl.NumberFormatOptions,\n | 'currency'\n | 'currencyDisplay'\n | 'currencySign'\n | 'signDisplay'\n | 'minimumFractionDigits'\n | 'maximumFractionDigits'\n | 'minimumSignificantDigits'\n | 'maximumSignificantDigits'\n | 'useGrouping'\n | 'notation'\n>;\n\nexport type AmountProps = {\n /**\n * When displaying amounts, readability and visual hierarchy are key. Use medium weight for primary emphasis to highlight amounts or regular weight for secondary emphasis.\n *\n * @default 'regular'\n */\n emphasis?: 'primary' | 'regular';\n /**\n * The variant of the Amount component. `positive` shows a green color, and should be used for amounts greater than zero.\n *\n * @default 'neutal'\n */\n variant?: 'neutal' | 'positive';\n /**\n * The amount value to be formatted and displayed.\n *\n * If displaying the sign is a requirement, ensure the value is a string that starts with '+' or '-'.\n * Alternatively, you can use the `signDisplay` option in `formatOptions` to control the display of the sign for numeric values.\n */\n value: string | number;\n /** Currency formatting options */\n formatOptions?: CurrencyFormatOptions;\n} & Pick<TypographyBodyProps, 'size'> &\n SapphireStyleProps &\n GlobalDomAttributes;\n\nexport const Amount = ({\n emphasis = 'regular',\n variant,\n formatOptions,\n value,\n size,\n ...props\n}: AmountProps): JSX.Element => {\n useThemeCheck();\n const { styleProps, filteredProps } = useSapphireStyleProps(props);\n const { locale } = useLocale();\n\n const formatter = useMemo(\n () =>\n new Intl.NumberFormat(locale, {\n style: formatOptions?.currency ? 'currency' : undefined,\n /**\n * Always show the sign if the value starts with '+' or '-'.\n */\n signDisplay:\n formatOptions?.signDisplay || String(value).startsWith('+')\n ? 'always'\n : 'auto',\n minimumFractionDigits: 2,\n ...formatOptions,\n }),\n [locale, formatOptions, value]\n );\n\n const { formattedValue, groupedParts } = useGroupAmount(value, formatter);\n\n return (\n <span\n style={styleProps.style}\n className={styles['sapphire-amount']}\n {...filteredProps}\n aria-label={formattedValue}\n >\n {groupedParts.map((part, index) => (\n <Typography.Body\n elementType=\"span\"\n key={index}\n color={variant === 'positive' ? 'positive' : 'primary'}\n isSemibold={emphasis === 'primary' ? true : false}\n size={size}\n >\n {part.value}\n </Typography.Body>\n ))}\n </span>\n );\n};\n","import da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nexport default {\n 'da-DK': da,\n 'en-US': en,\n 'de-DE': de,\n 'fi-FI': fi,\n 'nb-NO': no,\n 'pl-PL': pl,\n 'sv-SE': se,\n};\n","import React, { Key, ReactElement, useRef } from 'react';\nimport {\n ListBoxProps,\n useThemeCheck,\n useSapphireStyleProps,\n SapphireStyleProps,\n ListBoxPopover,\n useComboBoxState,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { useComboBox } from '@react-aria/combobox';\nimport { useMessageFormatter } from '@react-aria/i18n';\nimport intlMessages from '../i18n';\nimport { useFocusableRef } from '@react-spectrum/utils';\nimport type { ComboBoxProps } from '@react-types/combobox';\nimport { filterDOMProps } from '@react-aria/utils';\n\nexport type AutocompleteProps<T extends object> = GlobalDomAttributes &\n SapphireStyleProps &\n Pick<\n ComboBoxProps<T>,\n | 'items'\n | 'children'\n | 'inputValue'\n | 'defaultInputValue'\n | 'onInputChange'\n | 'isDisabled'\n > &\n Pick<ListBoxProps<T>, 'loadingState' | 'loadingSkeletonRowsCount'> & {\n /**\n * This prop is badly named. It is NOT related to a selection state being\n * changed since there is no selection state in this component.\n *\n * This callback simply notifies you when the user filled in the text field\n * by selecting an option from the autocomplete dropdown. Similar to an\n * onClick.\n *\n * @deprecated\n * Use `onSuggestionSelected` instead.\n */\n onSelectionChange?: Pick<\n ComboBoxProps<T>,\n 'onSelectionChange'\n >['onSelectionChange'];\n\n /*\n * This callback simply notifies you when the user filled in the text field\n * by selecting an option from the autocomplete dropdown. Similar to an\n * onClick.\n */\n onSuggestionSelected?: (key: Key) => void;\n /**\n * Render function for the input element.\n * Receives props that should be spread onto the input component.\n */\n renderInput: (inputProps: any) => ReactElement;\n\n /**\n * Accessible label for the suggestions listbox.\n */\n listboxAriaLabel?: string;\n\n /**\n * Controlled selected value.\n */\n value?: React.Key | null;\n\n /**\n * Decide what items to display in the dropdown menu.\n * @default 'String.includes'\n */\n defaultFilter?: (textValue: string, inputValue: string) => boolean;\n };\n\nexport function Autocomplete<T extends object>(\n props: AutocompleteProps<T>\n): ReactElement {\n useThemeCheck();\n const formatMessage = useMessageFormatter(intlMessages);\n\n const {\n inputValue,\n renderInput,\n loadingState,\n loadingSkeletonRowsCount,\n listboxAriaLabel,\n onSuggestionSelected,\n onSelectionChange,\n ...otherProps\n } = props;\n\n const {\n styleProps: { style, className },\n } = useSapphireStyleProps(props);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const listBoxRef = useFocusableRef<HTMLUListElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const triggerRef = useFocusableRef<HTMLDivElement>(null);\n\n const state = useComboBoxState({\n ...props,\n inputValue,\n allowsEmptyCollection: loadingState === 'loading',\n allowsCustomValue: true,\n shouldCloseOnBlur: true,\n onSelectionChange: (key) => {\n if (key !== null) {\n onSelectionChange?.(key);\n onSuggestionSelected?.(key);\n }\n },\n });\n\n const { inputProps, listBoxProps } = useComboBox(\n {\n ...props,\n 'aria-label': listboxAriaLabel || formatMessage('listbox-suggestions'),\n inputRef,\n listBoxRef,\n popoverRef,\n },\n state\n );\n\n const inputElement = renderInput({\n ...inputProps,\n isDisabled: props.isDisabled,\n inputRef,\n 'aria-haspopup': 'listbox',\n 'aria-expanded': state.isOpen,\n onChange: (value: string) => {\n inputProps.onChange?.({\n target: { value },\n currentTarget: { value },\n } as React.ChangeEvent<HTMLInputElement>);\n },\n });\n\n return (\n <div\n ref={triggerRef}\n {...filterDOMProps(otherProps, { global: true })}\n style={{ display: 'inline-flex', ...style }}\n className={className}\n >\n {inputElement}\n {state.isOpen && (\n <ListBoxPopover<T>\n state={state}\n triggerRef={triggerRef}\n popoverRef={popoverRef}\n listBoxRef={listBoxRef}\n listBoxProps={listBoxProps}\n loadingState={loadingState}\n loadingSkeletonRowsCount={loadingSkeletonRowsCount}\n selectWidth={triggerRef.current?.offsetWidth}\n disableSelectedStyles\n isNonModal\n >\n {props.children || []}\n </ListBoxPopover>\n )}\n </div>\n );\n}\n","import { useState, useMemo, useEffect } from 'react';\nimport { useResizeObserver } from '@react-aria/utils';\n\nexport const useBreadcrumbThreshold = (\n childrenCount: number,\n containerRef: React.RefObject<HTMLElement>,\n breadcrumbRef: React.RefObject<HTMLOListElement>\n) => {\n const [itemWidths, setItemWidths] = useState<number[]>([]);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n\n const { shouldRenderOverflow, maxVisibleTailChildren } = useMemo(() => {\n if (!containerWidth || itemWidths.length === 0) {\n return {\n shouldRenderOverflow: false,\n maxVisibleTailChildren: childrenCount,\n };\n }\n\n // Exit early if the container is wider than all items combined\n const totalItemWidth = itemWidths.reduce((a, b) => a + b, 0);\n if (totalItemWidth <= containerWidth) {\n return {\n shouldRenderOverflow: false,\n maxVisibleTailChildren: itemWidths.length - 1,\n };\n }\n\n // The minimum number of items in the container is 2 (first and last).\n let totalWidth = itemWidths[0] + itemWidths[itemWidths.length - 1];\n let visibleTailCount = 1; // Last item counted by default\n\n for (\n let i = itemWidths.length - 2;\n i > 0 && totalWidth + itemWidths[i] < containerWidth;\n i--\n ) {\n totalWidth += itemWidths[i];\n visibleTailCount++;\n }\n\n visibleTailCount--; // When we are overflowing, take into account the icon button that will be rendered\n return {\n shouldRenderOverflow: true,\n maxVisibleTailChildren: Math.max(1, visibleTailCount),\n };\n }, [itemWidths, containerWidth, childrenCount]);\n\n /**\n * Compute the individual widths of the breadcrumb items.\n * It's important to have these values for all the items, since they disappear if the container\n * is overflowing. We need these values to recompute the number of items that can fit,\n * but we can't do that once they have disappeared from the container.\n */\n const computeItemWidths = () => {\n if (!breadcrumbRef.current) return;\n const breadcrumbItems = Array.from(\n breadcrumbRef.current.children\n ) as HTMLElement[];\n const widths = breadcrumbItems\n .map((item) => item.offsetWidth)\n .filter(Boolean);\n\n if (widths.length === breadcrumbItems.length) {\n setItemWidths(widths);\n }\n };\n\n /**\n * Recompute the item widths when the children change.\n */\n useEffect(() => {\n if (childrenCount !== itemWidths.length) {\n computeItemWidths();\n }\n }, [containerRef.current, childrenCount]);\n\n useResizeObserver({\n ref: containerRef,\n onResize: () => {\n if (!containerRef.current) return;\n setContainerWidth(containerRef.current.offsetWidth);\n },\n });\n\n const overflowNodes = useMemo(() => {\n if (childrenCount > 0 && shouldRenderOverflow) {\n const tailCount = maxVisibleTailChildren > 1 ? maxVisibleTailChildren : 1;\n const actualTailCount =\n maxVisibleTailChildren === 1 ? maxVisibleTailChildren : tailCount;\n const limitedTailCount = Math.min(actualTailCount, 5); // By design, we limit the number of visible tail items to 6\n const tailStartIndex = childrenCount - limitedTailCount;\n // Return overflow indexes (hidden items) - all items except first and tail items\n return Array.from({ length: tailStartIndex - 1 }, (_, i) => i + 1);\n }\n return [];\n }, [childrenCount, shouldRenderOverflow, maxVisibleTailChildren]);\n\n return {\n overflowNodes,\n };\n};\n","import React, { createContext } from 'react';\nimport { useBreadcrumbs } from '@react-aria/breadcrumbs';\nimport { Collection, CollectionBuilder } from '@react-aria/collections';\nimport { filterDOMProps, mergeProps } from '@react-aria/utils';\nimport { forwardRefType } from '@react-types/shared';\nimport { ForwardedRef, forwardRef, useContext, useRef } from 'react';\nimport {\n BreadcrumbsContext as RACBreadcrumbsContext,\n BreadcrumbsProps as RACBreadcrumbsProps,\n CollectionRendererContext,\n useContextProps,\n} from 'react-aria-components';\nimport { useBreadcrumbThreshold } from './useBreadcrumbThreshold';\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/breadcrumbs/breadcrumbs.module.css';\nimport clsx from 'clsx';\nimport { BreadcrumbItemNode } from './types';\n\nexport type BreadcrumbsProps<T extends object> = Pick<\n RACBreadcrumbsProps<T>,\n 'aria-label' | 'isDisabled' | 'children'\n> & {\n /**\n * The size of the breadcrumbs component.\n *\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg';\n /**\n * Maximum width for the breadcrumbs container. When content overflows,\n * it will show an overflow menu with the first and last items.\n */\n maxWidth?: React.CSSProperties['maxWidth'];\n} & SapphireStyleProps &\n GlobalDomAttributes;\n\nexport const BreadcrumbsContext = createContext<{\n size: 'sm' | 'md' | 'lg';\n overflowNodes: (BreadcrumbItemNode | null)[];\n isDisabled?: boolean;\n}>({ size: 'md', overflowNodes: [] });\n\n/**\n * Implementation is based on React Aria's Breadcrumbs component.\n * It was necessary to own the implementation to add support for\n * handling the collection directly, as we need it for the overflow calculation logic.\n */\nexport const Breadcrumbs = (forwardRef as forwardRefType)(function Breadcrumbs<\n T extends object\n>(\n { maxWidth, size = 'md', ...props }: BreadcrumbsProps<T>,\n fwdRef: ForwardedRef<HTMLOListElement>\n) {\n const [RACprops, ref] = useContextProps(props, fwdRef, RACBreadcrumbsContext);\n const { styleProps } = useSapphireStyleProps(RACprops);\n const containerRef = useRef<HTMLDivElement>(null);\n const { CollectionRoot } = useContext(CollectionRendererContext);\n const { navProps } = useBreadcrumbs(RACprops);\n const DOMProps = filterDOMProps(RACprops, { global: true });\n\n return (\n <CollectionBuilder content={<Collection {...RACprops} />}>\n {(collection) => {\n const { overflowNodes } = useBreadcrumbThreshold(\n collection.size,\n containerRef,\n ref\n );\n const keys = Array.from(collection.getKeys());\n return (\n <div\n ref={containerRef}\n style={{\n ...styleProps.style,\n maxWidth,\n display: 'flex',\n }}\n >\n <ol\n ref={ref}\n {...mergeProps(DOMProps, navProps)}\n className={clsx(styles['sapphire-breadcrumbs'], {\n [styles['sapphire-breadcrumbs--sm']]: size === 'sm',\n [styles['sapphire-breadcrumbs--lg']]: size === 'lg',\n })}\n >\n <BreadcrumbsContext.Provider\n value={{\n size,\n overflowNodes: overflowNodes.map((index) =>\n collection.getItem(keys[index])\n ),\n isDisabled: RACprops.isDisabled,\n }}\n >\n <RACBreadcrumbsContext.Provider value={RACprops}>\n <CollectionRoot collection={collection} />\n </RACBreadcrumbsContext.Provider>\n </BreadcrumbsContext.Provider>\n </ol>\n </div>\n );\n }}\n </CollectionBuilder>\n );\n});\n","import clsx from 'clsx';\nimport React, { useContext } from 'react';\nimport styles from '@danske/sapphire-css/components/breadcrumbs/breadcrumbs.module.css';\nimport { ChevronRight } from '@danske/sapphire-icons/react';\nimport { Icon } from '@danske/sapphire-react';\nimport { BreadcrumbsContext } from './Breadcrumbs';\n\nexport const BreadcrumbsSeparator = (): JSX.Element => {\n const { size } = useContext(BreadcrumbsContext);\n\n // Based on the design\n const iconSize = size === 'lg' ? 'md' : 'sm';\n\n return (\n <span\n className={clsx(styles['sapphire-breadcrumbs__separator'])}\n aria-hidden=\"true\"\n >\n <Icon size={iconSize}>\n <ChevronRight />\n </Icon>\n </span>\n );\n};\n","import { Menu, MenuItem, IconButton } from '@danske/sapphire-react';\nimport { OverflowMenuHorizontal } from '@danske/sapphire-icons/react';\nimport React from 'react';\nimport { useContext } from 'react';\nimport { BreadcrumbsContext } from './Breadcrumbs';\nimport { BreadcrumbsSeparator } from './BreadcrumbsSeparator';\n\n/**\n * Component that is being rendered in the case of overflowed breadcrumbs.\n * It is an internal component, so it's automatically rendered when the Breadcrumb\n * component detects overflow.\n */\nexport const BreadcrumbOverflowMenu = (): JSX.Element => {\n const { size, overflowNodes } = useContext(BreadcrumbsContext);\n\n return (\n <>\n <Menu\n triggerElement={\n <IconButton aria-label=\"Show more breadcrumbs\" size={size}>\n <OverflowMenuHorizontal />\n </IconButton>\n }\n >\n {overflowNodes.map((item) =>\n !item ? null : (\n <MenuItem\n key={item.key}\n id={item.key}\n href={item.href}\n isDisabled={!item.href}\n >\n {item.rendered}\n </MenuItem>\n )\n )}\n </Menu>\n <BreadcrumbsSeparator />\n </>\n );\n};\n","import React, { forwardRef } from 'react';\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n GlobalDomAttributes,\n TooltipIfNeeded,\n} from '@danske/sapphire-react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/breadcrumbs/breadcrumbs.module.css';\nimport { mergeRefs } from '@react-aria/utils';\n\nexport type BreadcrumbItemStaticProps = Pick<\n React.HTMLAttributes<HTMLSpanElement>,\n 'children'\n> &\n SapphireStyleProps &\n GlobalDomAttributes & { size: 'sm' | 'md' | 'lg' };\n\nexport const BreadcrumbItemStatic = forwardRef<\n HTMLSpanElement,\n BreadcrumbItemStaticProps\n>(function BreadcrumbItemStatic({ size, ...props }, ref): JSX.Element {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n return (\n <TooltipIfNeeded<HTMLSpanElement> title={props.children}>\n {(tooltipContentRef, tooltipProps) => {\n const positioningRef = tooltipProps?.ref;\n return (\n <span\n {...tooltipProps}\n ref={\n mergeRefs(\n ref,\n tooltipContentRef,\n positioningRef\n ) as React.LegacyRef<HTMLSpanElement>\n }\n className={clsx(\n styles['sapphire-breadcrumbs__item--static'],\n {\n [styles['sapphire-breadcrumbs__item--static--sm']]:\n size === 'sm',\n [styles['sapphire-breadcrumbs__item--static--lg']]:\n size === 'lg',\n },\n styleProps.className\n )}\n style={styleProps.style}\n >\n {props.children}\n </span>\n );\n }}\n </TooltipIfNeeded>\n );\n});\n","import React, { useContext, forwardRef } from 'react';\nimport {\n Button,\n ButtonProps,\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { FocusableRef } from '@react-types/shared';\nimport { BreadcrumbsContext } from './Breadcrumbs';\nimport { BreadcrumbItemStatic } from './BreadcrumbItemStatic';\n\nexport type BreadcrumbItemLinkProps = Pick<\n ButtonProps<'a'>,\n | 'children'\n | 'href'\n | 'hrefLang'\n | 'target'\n | 'rel'\n | 'isDisabled'\n | 'icon'\n // TODO when moving to \"core\", use types under `types.ts` instead of plain strings\n | 'aria-label'\n | 'aria-labelledby'\n | 'aria-describedby'\n | 'aria-details'\n | 'UNSAFE_onClick'\n> &\n SapphireStyleProps &\n GlobalDomAttributes;\n\nexport const BreadcrumbItemLink = forwardRef(function BreadcrumbItemLink(\n { children, ...props }: BreadcrumbItemLinkProps,\n ref: FocusableRef<HTMLAnchorElement>\n): JSX.Element {\n useThemeCheck();\n const { styleProps: sapphireStyleProps } = useSapphireStyleProps(props);\n const { style, className, ...styleProps } = sapphireStyleProps;\n const { size } = useContext(BreadcrumbsContext);\n\n if (!props.href && !props.UNSAFE_onClick) {\n return (\n <BreadcrumbItemStatic {...props} size={size}>\n {children}\n </BreadcrumbItemStatic>\n );\n }\n\n return (\n <Button\n {...props}\n {...styleProps}\n UNSAFE_className={className}\n UNSAFE_style={{ ...style }}\n ref={ref}\n size={size}\n variant=\"tertiary\"\n isDisabled={props.isDisabled}\n >\n {children}\n </Button>\n );\n});\n\nBreadcrumbItemLink.displayName = 'BreadcrumbItemLink';\n","import React, { useContext, ForwardedRef } from 'react';\nimport type { BreadcrumbProps as RACBreadcrumbProps } from 'react-aria-components';\nimport { CollectionNode, createLeafComponent } from '@react-aria/collections';\nimport {\n useSapphireStyleProps,\n useThemeCheck,\n SapphireStyleProps,\n Typography,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { BreadcrumbsSeparator } from './BreadcrumbsSeparator';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/breadcrumbs/breadcrumbs.module.css';\nimport { BreadcrumbsContext } from './Breadcrumbs';\nimport { BreadcrumbOverflowMenu } from './BreadcrumbOverflowMenu';\nimport { BreadcrumbItemNode } from './types';\nimport {\n BreadcrumbItemLink,\n BreadcrumbItemLinkProps,\n} from './BreadcrumbItemLink';\n\nexport type BreadcrumbItemProps = {\n isDisabled?: boolean;\n} & SapphireStyleProps &\n GlobalDomAttributes &\n Pick<RACBreadcrumbProps, 'children'> &\n BreadcrumbItemLinkProps;\n\nclass BreadcrumbItemCollectionNode extends CollectionNode<unknown> {\n static readonly type = 'item';\n}\n\n/**\n * The implementation is based on React Aria's BreadcrumbItem, with added support for\n * overflow menu data handling.\n */\nexport const BreadcrumbItem = createLeafComponent(\n BreadcrumbItemCollectionNode,\n function BreadcrumbItem(\n props: BreadcrumbItemProps,\n ref: ForwardedRef<HTMLLIElement>,\n node: BreadcrumbItemNode\n ): JSX.Element {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n const {\n size,\n overflowNodes,\n isDisabled: breadcrumbsDisabled,\n } = useContext(BreadcrumbsContext);\n const { isDisabled: individualDisabled = false } = props;\n\n const isCurrent = node.nextKey == null;\n const isDisabled = individualDisabled || breadcrumbsDisabled;\n\n /**\n * The item should not be rendered if it's in the overflow indexes.\n * The only exception is the first overflow menu item, which will be rendered\n * as the overflow menu trigger.\n */\n const shouldRender = !overflowNodes.some((item) => item?.key === node.key);\n const showOverflowMenu = overflowNodes[0]?.key === node.key;\n\n if (!shouldRender && !showOverflowMenu) {\n return <></>;\n }\n\n if (!shouldRender && showOverflowMenu) {\n return <BreadcrumbOverflowMenu />;\n }\n\n node.href = props.href;\n\n return (\n <li\n ref={ref}\n className={clsx(styles['sapphire-breadcrumbs__item'])}\n style={{ ...styleProps.style }}\n data-disabled={isDisabled || undefined}\n data-current={isCurrent || undefined}\n >\n {isCurrent ? (\n <Typography.Body\n elementType=\"span\"\n isSemibold\n size={size === 'lg' ? 'md' : size === 'md' ? 'sm' : 'xs'}\n >\n {node.rendered}\n </Typography.Body>\n ) : (\n <BreadcrumbItemLink isDisabled={isDisabled} {...props}>\n {node.rendered}\n </BreadcrumbItemLink>\n )}\n {!isCurrent && <BreadcrumbsSeparator />}\n </li>\n );\n }\n);\n","import React, { ForwardedRef } from 'react';\nimport { filterDOMProps, useObjectRef } from '@react-aria/utils';\nimport { PressResponder } from '@react-aria/interactions';\n\nexport interface FileSelectProps {\n /**\n * List of file types that are allowed to be selected using the file select.\n * When no list is passed, all file types will be allowed to be selected.\n * @default \"\"\n */\n acceptedFileTypes?: string[];\n /**\n * Whether multiple files are allowed to be selected using the file select.\n * @default \"false\"\n */\n allowsMultiple?: boolean;\n}\n\nexport interface FileTriggerProps extends FileSelectProps {\n /**\n * Callback for file selection.\n * @param files - the list of selected files\n * @default \"() => null\"\n */\n onSelect?: (files: FileList | null) => void;\n isDisabled?: boolean;\n children?: React.ReactNode;\n}\n\nconst HiddenFileInput = React.forwardRef(function InputWrapper(\n props: React.HTMLProps<HTMLInputElement>,\n ref: ForwardedRef<HTMLInputElement>\n) {\n return <input {...props} ref={ref} type=\"file\" style={{ display: 'none' }} />;\n});\n\nexport const FileTrigger = React.forwardRef(function FileTriggerWrapper(\n props: FileTriggerProps,\n ref: ForwardedRef<HTMLInputElement>\n) {\n const {\n acceptedFileTypes,\n allowsMultiple = false,\n onSelect = () => null,\n children,\n isDisabled = false,\n ...rest\n } = props;\n const inputRef = useObjectRef(ref);\n const domProps = filterDOMProps(rest, { global: true });\n\n return (\n <>\n <PressResponder\n isDisabled={isDisabled}\n onPress={() => {\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n inputRef.current?.click();\n }}\n >\n {children}\n </PressResponder>\n <HiddenFileInput\n {...domProps}\n disabled={isDisabled}\n ref={inputRef}\n accept={acceptedFileTypes?.toString()}\n onChange={(e) => onSelect?.((e.target as HTMLInputElement).files)}\n multiple={allowsMultiple}\n />\n </>\n );\n});\n","import { FileDropItem } from '@react-types/shared';\n\nexport const convertFileListToFileDropItems = (\n fileList: FileList | null\n): FileDropItem[] => {\n if (!fileList) {\n return [];\n }\n\n return Array.from(fileList).map((file) => ({\n kind: 'file',\n type: file.type,\n name: file.name,\n getFile: () => Promise.resolve(file),\n getText: () =>\n new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = () => reject(reader.error);\n reader.readAsText(file);\n }),\n }));\n};\n","import da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nexport default {\n 'da-DK': da,\n 'en-US': en,\n 'de-DE': de,\n 'fi-FI': fi,\n 'nb-NO': no,\n 'pl-PL': pl,\n 'sv-SE': se,\n};\n","import React, { ForwardedRef } from 'react';\nimport clsx from 'clsx';\nimport {\n Typography,\n Icon,\n SapphireStyleProps,\n useButton,\n useSapphireStyleProps,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/dropzone/dropzone.module.css';\nimport { Upload } from '@danske/sapphire-icons/react';\nimport { HoverProps, Pressable, useHover } from '@react-aria/interactions';\nimport {\n mergeProps,\n useId,\n useObjectRef,\n filterDOMProps,\n} from '@react-aria/utils';\nimport { FileSelectProps, FileTrigger } from './FileTrigger';\nimport { DropOptions, useClipboard, useDrop } from '@react-aria/dnd';\nimport { convertFileListToFileDropItems } from './utils';\nimport { useFocusRing } from '@react-aria/focus';\nimport { AriaLabelingProps } from '@react-types/shared';\nimport { useMessageFormatter } from '@react-aria/i18n';\nimport intlMessages from '../i18n';\n\nexport interface FileDropzoneProps\n extends GlobalDomAttributes,\n SapphireStyleProps,\n Pick<\n DropOptions,\n | 'getDropOperation'\n | 'onDropEnter'\n | 'onDropActivate'\n | 'onDropMove'\n | 'onDropExit'\n | 'onDrop'\n >,\n HoverProps,\n FileSelectProps,\n // TODO when moving to \"core\", use types under `types.ts` instead of plain strings\n Pick<\n AriaLabelingProps,\n 'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'aria-details'\n > {\n /**\n * Whether the dropzone has an error\n * @default false\n */\n hasError?: boolean;\n /**\n * The body text of the dropzone which can contain the instructions for the files to be uploaded.\n * Can be rendered differently based on the `isDropping` parameter, which is true if a file is about to be dropped in the zone.\n * @param isDropping - boolean that marks whether a payload is about to be dropped in the dropzone.\n */\n renderInstruction: (isDropping: boolean) => string;\n /**\n * Function that is called when the file select is opened on press, before any file is selected.\n * @default \"() => null\"\n */\n onFileSelectOpen?: () => void;\n}\n\nexport const FileDropzone = React.forwardRef(function DropzoneWrapper(\n props: FileDropzoneProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const {\n isDisabled = false,\n hasError,\n renderInstruction,\n onFileSelectOpen = () => null,\n acceptedFileTypes,\n allowsMultiple,\n onDrop = () => null,\n getDropOperation = () => 'copy',\n ...otherProps\n } = props;\n\n const id = useId();\n const paragraphId = props['aria-label'] ? undefined : id;\n const format = useMessageFormatter(intlMessages);\n const pressableRef = useObjectRef(forwardedRef);\n const { hoverProps, isHovered } = useHover({ isDisabled });\n const { styleProps } = useSapphireStyleProps(props);\n const { dropProps, isDropTarget: isDropping } = useDrop({\n ...props,\n ref: pressableRef,\n hasDropButton: true,\n isDisabled,\n getDropOperation,\n });\n const { buttonProps, isPressed } = useButton(\n { elementType: 'div' },\n pressableRef as React.RefObject<Element>\n );\n const { focusProps, isFocusVisible } = useFocusRing();\n\n const { clipboardProps } = useClipboard({\n isDisabled,\n onPaste: (items) =>\n onDrop({\n type: 'drop',\n items,\n x: 0,\n y: 0,\n dropOperation: 'copy',\n }),\n });\n\n const ariaLabel: string = props['aria-label'] || 'Dropzone';\n\n const onFileTriggerSelect = (files: FileList | null) => {\n onDrop({\n type: 'drop',\n items: convertFileListToFileDropItems(files),\n x: 0,\n y: 0,\n dropOperation: 'copy',\n });\n };\n\n return (\n <FileTrigger\n acceptedFileTypes={acceptedFileTypes}\n allowsMultiple={allowsMultiple}\n onSelect={onFileTriggerSelect}\n isDisabled={isDisabled}\n >\n <Pressable ref={pressableRef} onPress={onFileSelectOpen}>\n <div\n {...mergeProps(\n dropProps,\n hoverProps,\n clipboardProps,\n focusProps,\n buttonProps\n )}\n {...filterDOMProps(otherProps, { global: true })}\n style={{ ...styleProps.style }}\n className={clsx(\n styles['sapphire-dropzone'],\n styles['js-focus'],\n styles['js-hover'],\n {\n [styles['is-hover']]: isHovered && !isDropping,\n [styles['is-active']]: isPressed,\n [styles['is-disabled']]: isDisabled,\n [styles['is-focus']]: isFocusVisible,\n [styles['sapphire-dropzone--dropping']]: isDropping,\n [styles['sapphire-dropzone--error']]: hasError,\n },\n styleProps.className\n )}\n aria-label={ariaLabel}\n aria-invalid={hasError}\n aria-describedby={paragraphId}\n >\n <div className={clsx(styles['sapphire-dropzone__content'])}>\n <div className={clsx(styles['sapphire-dropzone__icon'])}>\n <Icon size=\"lg\">\n <Upload />\n </Icon>\n </div>\n <div className={clsx(styles['sapphire-dropzone__heading'])}>\n <Typography.Heading level={6}>\n {isDropping\n ? format('dropzone-heading-dropping')\n : allowsMultiple\n ? format('dropzone-heading-default')\n : format('dropzone-heading-default-single')}\n </Typography.Heading>\n </div>\n <div\n id={paragraphId}\n className={clsx(styles['sapphire-dropzone__paragraph'])}\n >\n <Typography.Body size=\"sm\" color=\"secondary\">\n {renderInstruction(isDropping)}\n </Typography.Body>\n </div>\n </div>\n </div>\n </Pressable>\n </FileTrigger>\n );\n});\n","import React, { useRef, ReactNode, FormEvent } from 'react';\nimport clsx from 'clsx';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\nimport { useEffectEvent, filterDOMProps } from '@react-aria/utils';\nimport { useControlledState } from '@react-stately/utils';\nimport {\n Button,\n ButtonGroup,\n PopoverTrigger,\n PopoverTriggerProps,\n SapphireStyleProps,\n ToggleButton,\n GlobalDomAttributes,\n useSapphireStyleProps,\n} from '@danske/sapphire-react';\nimport { ChevronDown, ChevronUp } from '@danske/sapphire-icons/react';\nimport { FocusableRefValue } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/filterDropdown/filterDropdown.module.css';\n\nexport interface FilterDropdownProps\n extends GlobalDomAttributes,\n SapphireStyleProps,\n Pick<\n PopoverTriggerProps,\n 'defaultOpen' | 'isOpen' | 'onOpenChange' | 'noMaxWidth'\n > {\n /**\n * \"Filter by\" label, shown inside the trigger button.\n */\n label: ReactNode;\n /**\n * Filter value, shown inside the trigger button. `null`, `undefined` and empty string are\n * considered as unset value.\n */\n value: ReactNode;\n /**\n * Filtering UI controls, rendered in a popover.\n */\n children: ReactNode;\n /**\n * Called when:\n * - `Enter` is pressed on form fields rendered inside the popover.\n * - 'Apply' button is pressed (if `hasApplyButton` is true)\n */\n onApply?: () => void;\n /**\n * Whether to show the 'Apply' button.\n */\n hasApplyButton?: boolean;\n /**\n * Called when 'Clear' button is pressed.\n */\n onClear?: () => void;\n /**\n * Whether the button is disabled.\n */\n isDisabled?: boolean;\n /**\n * Whether the 'Apply' button is disabled.\n */\n isApplyDisabled?: boolean;\n /**\n * Whether the 'Clear' button is hidden.\n */\n hideClearButton?: boolean;\n /**\n * Whether the 'Clear' button is disabled.\n */\n isClearDisabled?: boolean;\n /**\n * The label of the 'Clear' button.\n * @default \"Clear\"\n */\n clearButtonLabel?: ReactNode;\n /**\n * The label of the 'Apply' button.\n * @default \"Apply\"\n */\n applyButtonLabel?: ReactNode;\n /**\n * The size of the buttons incl. the trigger itself.\n * @default 'md'\n */\n buttonSize?: 'sm' | 'md' | 'lg';\n}\n\n/**\n * A button with a dropdown, used for filtering UI.\n */\nexport function FilterDropdown({\n children,\n label,\n value,\n isDisabled = false,\n isApplyDisabled = false,\n isClearDisabled,\n isOpen: isOpenProp,\n applyButtonLabel = 'Apply',\n clearButtonLabel = 'Clear',\n hideClearButton = false,\n defaultOpen = false,\n hasApplyButton = false,\n noMaxWidth,\n onApply,\n onClear,\n onOpenChange,\n buttonSize = 'md',\n ...props\n}: FilterDropdownProps): JSX.Element {\n const triggerRef = useRef<FocusableRefValue>(null);\n const { styleProps } = useSapphireStyleProps(props);\n\n // We need to know if the dropdown is open or not, so we control the state here, still\n // allowing for both controlled and uncontrolled modes.\n const [isOpen, setIsOpen] = useControlledState(\n isOpenProp,\n defaultOpen,\n useEffectEvent(onOpenChange)\n );\n const hasValue = value != null && value !== '';\n const close = () => setIsOpen(false);\n const onSubmit = (e: FormEvent) => {\n e.preventDefault();\n onApply?.();\n close();\n // We need to manually restore focus to trigger as apply button is a form submit button\n triggerRef.current?.focus();\n };\n\n const applyButton = (\n <Button\n type=\"submit\"\n size={buttonSize}\n excludeFromTabOrder={!hasApplyButton}\n isDisabled={isApplyDisabled}\n >\n {applyButtonLabel}\n </Button>\n );\n\n return (\n <PopoverTrigger\n ref={triggerRef}\n placement=\"bottom left\"\n isOpen={isOpen}\n onOpenChange={setIsOpen}\n noMaxWidth={noMaxWidth}\n noPadding\n popoverContent={\n <form\n {...filterDOMProps(props, { global: true })}\n onSubmit={onSubmit}\n className={clsx(\n styles['sapphire-filter-dropdown'],\n styleProps.className\n )}\n style={{ ...styleProps.style }}\n >\n <div className={styles['sapphire-filter-dropdown__body']}>\n {children}\n </div>\n <div className={styles['sapphire-filter-dropdown__footer']}>\n <ButtonGroup align=\"right\">\n {!hideClearButton && (\n <Button\n size={buttonSize}\n variant=\"text\"\n onPress={() => {\n close();\n onClear?.();\n }}\n isDisabled={isClearDisabled ?? !hasValue}\n >\n {clearButtonLabel}\n </Button>\n )}\n {hasApplyButton ? (\n applyButton\n ) : (\n // The following is necessary to have the form submitted on \"Enter\", if there is more than one field\n <VisuallyHidden>{applyButton}</VisuallyHidden>\n )}\n </ButtonGroup>\n </div>\n </form>\n }\n >\n <ToggleButton\n icon={isOpen ? <ChevronUp /> : <ChevronDown />}\n iconAlign=\"right\"\n isSelected={hasValue}\n isDisabled={isDisabled}\n size={buttonSize}\n >\n {label}\n {value ? ': ' : ''}\n {value}\n </ToggleButton>\n </PopoverTrigger>\n );\n}\n","import React, { cloneElement, ReactElement, useRef } from 'react';\nimport {\n Flex,\n ListBoxProps,\n SapphireStyleProps,\n SearchFieldPropsWithRef,\n tokens,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { FilterDropdown, FilterDropdownProps } from '../..';\nimport { mergeRefs } from '@react-aria/utils';\nimport { useControlledState } from '@react-stately/utils';\n\nexport interface SearchableSelectFilterProps\n extends GlobalDomAttributes,\n SapphireStyleProps,\n Omit<FilterDropdownProps, 'children'> {\n /**\n * The SearchField to search items with.\n */\n searchField: ReactElement<SearchFieldPropsWithRef<object>>;\n /**\n * The ListBox to select items from.\n */\n listBox: ReactElement<ListBoxProps<object>>;\n /**\n * The Button size of the trigger\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg';\n}\n\n/**\n * A button with a dropdown, used for filtering UI.\n */\nexport function SearchableSelectFilter(\n props: SearchableSelectFilterProps\n): JSX.Element {\n const { searchField, listBox, size = 'md', ...otherProps } = props;\n const searchFieldRef = useRef<HTMLInputElement>(null);\n\n const searchFieldProps = searchField.props;\n const listBoxProps = listBox.props;\n\n const [searchQuery, setSearchQuery] = useControlledState(\n searchFieldProps?.value,\n '',\n searchFieldProps.onChange\n );\n\n if (\n listBoxProps.connectedInputRef &&\n typeof process !== 'undefined' &&\n process.env?.NODE_ENV === 'development'\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n 'The connectedInputRef prop on the ListBox in the SearchableSelectFilter component is not needed and will be ignored. The connectedInputRef is set automatically (to the passed SearchField) and should not be set manually.'\n );\n }\n\n const hasSelection =\n listBoxProps.selectedKeys === 'all' ||\n Array.from(listBoxProps.selectedKeys || []).length > 0;\n\n return (\n <FilterDropdown\n {...otherProps}\n noMaxWidth={otherProps.noMaxWidth ?? true}\n buttonSize={size}\n // Since useCollectionFocusProxy disables normal form submission behaviour on \"Enter\"\n // the apply button is the only way to submit, which is why we add it if an onApply function is passed\n hasApplyButton={Boolean(otherProps.onApply)}\n // In scenarios where selections are not applied immediately we want to allow cancelling\n // the filter selection via 'Clear' button as soon as at least 1 item is selected\n isClearDisabled={\n otherProps.isClearDisabled || (!hasSelection && !otherProps.value)\n }\n >\n <Flex flexDirection=\"column\" height=\"100%\">\n {cloneElement(searchField, {\n size: 'md',\n value: searchFieldProps.value || searchQuery,\n inputRef: mergeRefs(searchFieldRef, searchFieldProps.inputRef),\n width: searchFieldProps.width || '100%',\n marginBottom: searchFieldProps.marginBottom || tokens.size.spacingSm,\n onChange: setSearchQuery,\n })}\n {cloneElement(listBox, {\n connectedInputRef: searchFieldRef,\n selectionMode: listBoxProps.selectionMode || 'multiple',\n marginX: `calc(${tokens.size.spacingContainerHorizontalSm.value} * -1)`,\n hasScrollDividers: true,\n filter:\n // This is a way to also allow opting out of the internal filter with filter={undefined}\n // without us having to allow for more values on the ListBox filter prop\n 'filter' in listBoxProps\n ? listBoxProps.filter\n : (textValue: string) =>\n textValue.toLowerCase().includes(searchQuery.toLowerCase()),\n })}\n </Flex>\n </FilterDropdown>\n );\n}\n","import clsx from 'clsx';\nimport React from 'react';\nimport { getWrappedElement } from '@react-spectrum/utils';\nimport styles from '@danske/sapphire-css/components/flag/flag.module.css';\n\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\n\nexport type FlagProps = GlobalDomAttributes &\n SapphireStyleProps & {\n 'aria-label'?: string;\n /**\n * The size of the flag.\n * @default 'lg'\n */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /**\n * Flags come in square or rounded shapes. Square flags are used for display purposes, ensuring a clean and consistent look.\n * Rounded flags are reserved for actionable elements like buttons or selectors, providing a more interactive and approachable feel.\n * @default false\n */\n rounded?: boolean;\n children: React.ReactNode;\n };\n\nexport const Flag = React.forwardRef(function Flag(\n { size = 'lg', rounded, 'aria-label': ariaLabel, ...props }: FlagProps,\n ref: React.Ref<HTMLSpanElement>\n) {\n useThemeCheck();\n\n const { styleProps } = useSapphireStyleProps(props);\n\n return React.cloneElement(getWrappedElement(props.children), {\n ref,\n role: 'img',\n ...(ariaLabel ? { 'aria-label': ariaLabel } : { 'aria-hidden': true }),\n className: clsx(styles['sapphire-flag'], styleProps.className, {\n [styles['sapphire-flag--xs']]: size === 'xs',\n [styles['sapphire-flag--sm']]: size === 'sm',\n [styles['sapphire-flag--md']]: size === 'md',\n [styles['sapphire-flag--lg']]: size === 'lg',\n [styles['sapphire-flag--xl']]: size === 'xl',\n [styles['sapphire-flag--rounded']]: rounded,\n }),\n style: styleProps.style,\n });\n});\n","import React, { ReactNode } from 'react';\nimport { useField } from '@react-aria/label';\nimport {\n Field,\n Label,\n SapphireStyleProps,\n useThemeCheck,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { mergeProps } from '@react-aria/utils';\n\nexport interface LabeledValueProps\n extends SapphireStyleProps,\n GlobalDomAttributes {\n children?: React.ReactNode;\n /**\n * A HelpButton element to place next to the label.\n */\n contextualHelp?: ReactNode;\n /**\n * The content to display as a label.\n */\n label: ReactNode;\n /**\n * Places the label either above (default) or on the left side of tags.\n * @default 'above'\n */\n labelPlacement?: 'above' | 'side';\n /**\n * @default 'lg'\n */\n size?: 'lg' | 'md';\n}\n\nexport function LabeledValue({\n children,\n contextualHelp,\n label,\n labelPlacement = 'above',\n size = 'lg',\n ...otherProps\n}: LabeledValueProps): React.JSX.Element {\n useThemeCheck();\n const { fieldProps } = useField({ label });\n\n return (\n <Field\n {...mergeProps(fieldProps, otherProps)}\n labelPlacement={labelPlacement}\n size={size}\n noDefaultWidth\n >\n <Field.Label>\n <Label contextualHelp={contextualHelp} size={size}>\n {label}\n </Label>\n </Field.Label>\n <Field.Control>{children}</Field.Control>\n </Field>\n );\n}\n","import da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nexport default {\n 'da-DK': da,\n 'en-US': en,\n 'de-DE': de,\n 'fi-FI': fi,\n 'nb-NO': no,\n 'pl-PL': pl,\n 'sv-SE': se,\n};\n","import React, { useRef } from 'react';\nimport { AriaButtonProps } from '@react-aria/button';\nimport { useHover } from '@react-aria/interactions';\nimport { filterDOMProps, mergeProps } from '@react-aria/utils';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/textField/textField.module.css';\nimport { Icon, useButton } from '@danske/sapphire-react';\nimport { Add, Subtract } from '@danske/sapphire-icons/react';\nimport { useFocusRing } from '@react-aria/focus';\n\n/**\n * @internal\n */\nexport const StepperButton = ({\n variant,\n size,\n ...props\n}: AriaButtonProps & {\n variant: 'increment' | 'decrement';\n size: 'lg' | 'md';\n}): React.JSX.Element => {\n const ref = useRef(null);\n const { buttonProps, isPressed } = useButton(props, ref);\n const { hoverProps, isHovered } = useHover({ isDisabled: props.isDisabled });\n const { focusProps, isFocusVisible } = useFocusRing();\n\n return (\n <button\n {...mergeProps(\n buttonProps,\n hoverProps,\n focusProps,\n filterDOMProps(props, { global: true })\n )}\n tabIndex={0} // tabIndex comes as \"-1\" from the react-aria hook\n ref={ref}\n className={clsx(\n styles['sapphire-text-field__stepper-button'],\n styles['js-hover'],\n {\n [styles['is-active']]: isPressed,\n [styles['is-hover']]: isHovered,\n [styles['is-focus']]: isFocusVisible,\n }\n )}\n >\n <Icon size={size === 'lg' ? 'md' : 'sm'}>\n {variant === 'increment' ? <Add /> : <Subtract />}\n </Icon>\n </button>\n );\n};\n","import { CSSProperties, RefObject, useState } from 'react';\n\ninterface UseAutofillStyle {\n autofillStyles: CSSProperties;\n updateStyle: () => void;\n}\n\n//Copied from TextFieldBase, once NumberField moves into Core, this file can be removed and the import updated\nexport function useAutofillStyle<T>(\n inputRef: RefObject<\n T extends 'input' ? HTMLInputElement : HTMLTextAreaElement\n >\n): UseAutofillStyle {\n const [styles, setStyles] = useState<CSSProperties>({});\n\n const updateStyle = () => {\n const input = inputRef.current;\n if (input) {\n const color = window.getComputedStyle(input).backgroundColor;\n\n setStyles({\n boxShadow: `-100px 0 ${color}, 100px 0 ${color}`,\n });\n }\n };\n\n return {\n autofillStyles: styles,\n updateStyle,\n };\n}\n","import { ReactNode } from 'react';\n\n/** Extract separators from Intl.NumberFormat */\nexport const getSeparators = (formatter: Intl.NumberFormat) => {\n const parts = formatter.formatToParts(1000.1);\n const groupSeparator = parts.find((p) => p.type === 'group')?.value ?? ',';\n let decimalSeparator = parts.find((p) => p.type === 'decimal')?.value;\n\n // Percentage formatters don't show decimals, so detect from a plain formatter\n if (!decimalSeparator) {\n const locale = formatter.resolvedOptions().locale;\n const plainFormatter = new Intl.NumberFormat(locale);\n decimalSeparator =\n plainFormatter.formatToParts(1.1).find((p) => p.type === 'decimal')\n ?.value ?? '.';\n }\n\n return { groupSeparator, decimalSeparator };\n};\n\n/** Extract only numeric parts (digits, group/decimal separators) from unformatted number */\nexport const trimSymbol = (\n value: string,\n symbol: string | undefined\n): string => {\n if (!symbol) return value;\n if (value.startsWith(symbol)) {\n return value.slice(symbol.length).trimStart();\n } else if (value.endsWith(symbol)) {\n return value.slice(0, -symbol.length).trimEnd();\n }\n return value;\n};\n\n/**\n * Parse numeric value from user input string.\n * Handles edge cases and converts percentage display values to actual values.\n */\nexport const parseNumericValue = (\n value: string,\n decimalSeparator: string,\n formatter?: Intl.NumberFormat\n): number | null => {\n if (!value || value === '-') return null;\n\n // Remove all non-numeric characters except decimal separator and minus\n const cleaned = value.replace(\n new RegExp(`[^0-9${decimalSeparator}\\\\-]`, 'g'),\n ''\n );\n if (!cleaned) return null;\n\n // Normalize minus sign (keep only if at start)\n const hasLeadingMinus = cleaned.startsWith('-');\n const withoutMinus = cleaned.replace(/-/g, '');\n const normalized = hasLeadingMinus ? '-' + withoutMinus : withoutMinus;\n\n // Normalize decimal separator (keep only first occurrence)\n const parts = normalized.split(decimalSeparator);\n const withStandardDecimal =\n parts.length > 1\n ? parts[0] + '.' + parts.slice(1).join('')\n : normalized.replace(decimalSeparator, '.');\n\n let parsed = parseFloat(withStandardDecimal);\n if (isNaN(parsed)) return null;\n\n // Convert percentage display value (25) to actual value (0.25)\n if (formatter?.resolvedOptions().style === 'percent') {\n parsed /= 100;\n }\n\n return parsed;\n};\n\n/**\n * Format user input string with locale-aware separators.\n * Optionally strips currency/unit/percent symbols for display.\n */\nexport const formatNumberString = (\n value: string,\n formatter: Intl.NumberFormat,\n decimalSeparator: string,\n shouldStripSymbols: boolean,\n symbol?: string\n): string => {\n // Allow typing special characters\n if (!value || value === '-' || value === decimalSeparator) {\n return value;\n }\n\n // Preserve trailing decimal separator for ongoing input\n const hasTrailingDecimal = value.endsWith(decimalSeparator);\n\n const numericValue = parseNumericValue(value, decimalSeparator, formatter);\n\n // Fallback: return cleaned value if parsing fails\n if (numericValue === null) {\n return value.replace(new RegExp(`[^0-9${decimalSeparator}\\\\-]`, 'g'), '');\n }\n\n try {\n const formatted = formatter.format(numericValue);\n const result =\n shouldStripSymbols && symbol ? trimSymbol(formatted, symbol) : formatted;\n\n // Re-append trailing decimal separator to allow continued typing\n return hasTrailingDecimal && !result.includes(decimalSeparator)\n ? result + decimalSeparator\n : result;\n } catch (_) {\n return value;\n }\n};\n\n/** Check if part is a symbol that should be extracted */\nconst isSymbol = (type: string) =>\n ['currency', 'unit', 'percentSign'].includes(type);\n\nexport interface SymbolExtractionInfo {\n extractedPrefix: ReactNode;\n extractedPostfix: ReactNode;\n symbol?: string;\n}\n\n/** Check if parts start or end with a symbol */\nconst hasSymbolAt = (\n parts: Intl.NumberFormatPart[],\n start: boolean\n): boolean => {\n const [first, second] = start\n ? [parts[0], parts[1]]\n : [parts[parts.length - 1], parts[parts.length - 2]];\n return (\n isSymbol(first?.type) ||\n (first?.type === 'literal' && isSymbol(second?.type))\n );\n};\n\n/**\n * Extract currency/unit/percent symbols and determine their position.\n *\n * If user has provided custom prefix/postfix, those will be used instead of extracted ones.\n */\nexport const extractSymbol = (\n formatter: Intl.NumberFormat,\n prefix?: ReactNode,\n postfix?: ReactNode\n): SymbolExtractionInfo => {\n const parts = formatter.formatToParts(1000.1);\n\n const extractedPrefix = hasSymbolAt(parts, true)\n ? parts.find((part) => isSymbol(part.type))?.value || null\n : null;\n const extractedPostfix = hasSymbolAt(parts, false)\n ? [...parts].reverse().find((part) => isSymbol(part.type))?.value || null\n : null;\n\n return prefix !== undefined || postfix !== undefined\n ? {\n extractedPrefix: prefix,\n extractedPostfix: postfix,\n symbol: extractedPrefix || extractedPostfix || undefined,\n }\n : {\n extractedPrefix,\n extractedPostfix,\n symbol: extractedPrefix || extractedPostfix || undefined,\n };\n};\n","/**\n * Check if the input type is a delete operation\n */\nexport const isDeleteOperation = (inputType: string): boolean => {\n return (\n inputType === 'deleteContentBackward' ||\n inputType === 'deleteContentForward'\n );\n};\n\n/**\n * Calculate the correct cursor position after formatting is applied.\n *\n * @param oldValue - The unformatted value (what's in input before formatting)\n * @param newValue - The formatted value (what we're replacing it with)\n * @param oldCursor - The cursor position in the unformatted value\n * @param inputType - The input type from InputEvent\n * @param decimalSeparator - The decimal separator character\n * @param numericValue - The parsed numeric value (optional, used for special decimal handling)\n * @returns The new cursor position in the formatted value\n */\nexport const calculateCursorPosition = (\n oldValue: string,\n newValue: string,\n oldCursor: number,\n inputType: string,\n decimalSeparator: string,\n numericValue?: number | null\n): number => {\n // For empty values, position at start\n if (!newValue) return 0;\n\n // Find decimal positions\n const oldDecimalPos = oldValue.indexOf(decimalSeparator);\n const newDecimalPos = newValue.indexOf(decimalSeparator);\n\n // Special handling: if numeric value is 0 and user performed a delete operation\n // Position cursor at the start (before the 0) to allow easy re-typing\n if (numericValue === 0 && isDeleteOperation(inputType)) {\n return 0;\n }\n\n // Count digits before cursor in the appropriate section\n const countDigits = (str: string, start: number, end: number): number => {\n let count = 0;\n for (let i = start; i < end; i++) {\n if (/[0-9]/.test(str[i])) count++;\n }\n return count;\n };\n\n // If user was at decimal position in old value and deleted it, position cursor before decimal in new formatted value\n if (\n isDeleteOperation(inputType) &&\n oldDecimalPos >= 0 &&\n oldCursor === oldDecimalPos &&\n newDecimalPos >= 0\n ) {\n return newDecimalPos;\n }\n\n // Cursor is in decimal part\n if (oldDecimalPos >= 0 && oldCursor > oldDecimalPos && newDecimalPos >= 0) {\n const digitsBeforeCursor = countDigits(\n oldValue,\n oldDecimalPos + 1,\n oldCursor\n );\n let digitCount = 0;\n for (let i = newDecimalPos + 1; i < newValue.length; i++) {\n if (/[0-9]/.test(newValue[i]) && ++digitCount === digitsBeforeCursor) {\n return i + 1;\n }\n }\n return newDecimalPos + 1;\n }\n\n // Cursor is in integer part\n const oldEnd = oldDecimalPos >= 0 ? oldDecimalPos : oldValue.length;\n const newEnd = newDecimalPos >= 0 ? newDecimalPos : newValue.length;\n const intDigitsBeforeCursor = countDigits(\n oldValue,\n 0,\n Math.min(oldCursor, oldEnd)\n );\n\n if (intDigitsBeforeCursor === 0) {\n // Cursor was at start - special handling for delete operations\n if (isDeleteOperation(inputType)) {\n for (let i = 0; i < newValue.length; i++) {\n if (/[0-9]/.test(newValue[i])) return i + 1;\n }\n }\n return 0;\n }\n\n // Find position after same number of integer digits\n let digitCount = 0;\n for (let i = 0; i < newEnd; i++) {\n if (/[0-9]/.test(newValue[i]) && ++digitCount === intDigitsBeforeCursor) {\n return i + 1;\n }\n }\n\n return newDecimalPos >= 0 ? newDecimalPos : newValue.length;\n};\n","import { RefObject } from 'react';\n\n/** Escape special regex characters */\nconst escapeRegExp = (str: string): string =>\n str.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n/** Extract suffix (non-numeric trailing characters) from value */\nconst getSuffix = (\n value: string,\n groupSeparator: string,\n decimalSeparator: string\n): string | undefined => {\n const suffixReg = new RegExp(\n `\\\\d([^${escapeRegExp(groupSeparator)}${escapeRegExp(\n decimalSeparator\n )}0-9]+)`\n );\n return value.match(suffixReg)?.[1];\n};\n\ninterface HandleKeyDownParams {\n event: React.KeyboardEvent<HTMLInputElement>;\n inputRef: RefObject<HTMLInputElement>;\n groupSeparator: string;\n decimalSeparator: string;\n onOriginalKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;\n}\n\n/**\n * Handle keyboard events for number field input.\n * Manages special behaviors for separators, navigation, and deletion.\n */\nexport function handleNumberFieldKeyDown({\n event,\n inputRef,\n groupSeparator,\n decimalSeparator,\n onOriginalKeyDown,\n}: HandleKeyDownParams): void {\n const { key } = event;\n const input = event.currentTarget;\n const { selectionStart, value } = input;\n\n if (selectionStart === null) {\n onOriginalKeyDown?.(event);\n return;\n }\n\n // Handle typing a digit at the start when value is 0\n // Example: \"|0.00\" → user types \"7\" → becomes \"7.00\" (replace, not insert)\n if (/^[0-9]$/.test(key)) {\n const decimalPos = value.indexOf(decimalSeparator);\n\n // Check if cursor is at the start and the integer part is just \"0\"\n if (selectionStart === 0) {\n // Extract the integer part (everything before decimal separator)\n const integerPart = decimalPos >= 0 ? value.slice(0, decimalPos) : value;\n\n // Remove group separators to check if it's just \"0\"\n const cleanedInteger = integerPart.replace(\n new RegExp(escapeRegExp(groupSeparator), 'g'),\n ''\n );\n\n if (cleanedInteger === '0') {\n event.preventDefault();\n\n // Replace the \"0\" with the typed digit\n const newValue = key + (decimalPos >= 0 ? value.slice(decimalPos) : '');\n input.value = newValue;\n\n // Position cursor after the typed digit\n input.setSelectionRange(1, 1);\n\n // Trigger input event to reformat\n const inputEvent = new Event('input', { bubbles: true });\n input.dispatchEvent(inputEvent);\n return;\n }\n }\n }\n\n // Handle typing decimal separator to navigate to decimal part\n // Example: \"123|.00\" → user types \".\" → cursor moves to \"123.|00\"\n if (key === decimalSeparator) {\n const decimalPos = value.indexOf(decimalSeparator);\n\n // If decimal exists and cursor is before it, jump to after decimal\n if (decimalPos >= 0 && selectionStart <= decimalPos) {\n event.preventDefault();\n input.setSelectionRange(decimalPos + 1, decimalPos + 1);\n return;\n }\n }\n\n // Handle Backspace when cursor is right after a group separator\n // Example: \"1,|234\" with Backspace should delete '1', not ','\n if (\n key === 'Backspace' &&\n selectionStart > 0 &&\n value[selectionStart - 1] === groupSeparator\n ) {\n event.preventDefault();\n\n // Find the digit before the separator\n let deletePos = selectionStart - 2;\n while (deletePos >= 0 && value[deletePos] === groupSeparator) {\n deletePos--;\n }\n\n if (deletePos >= 0) {\n // Delete the digit and let formatting handle the rest\n const newValue = value.slice(0, deletePos) + value.slice(deletePos + 1);\n input.value = newValue;\n\n // Set cursor position before the separator that was after the deleted digit\n input.setSelectionRange(deletePos, deletePos);\n\n // Trigger input event to reformat\n const inputEvent = new Event('input', { bubbles: true });\n input.dispatchEvent(inputEvent);\n }\n return;\n }\n\n // Handle Backspace when cursor is right after decimal separator\n // Example: \"123.|00\" with Backspace should delete '3', not '.'\n if (\n key === 'Backspace' &&\n selectionStart > 0 &&\n value[selectionStart - 1] === decimalSeparator\n ) {\n event.preventDefault();\n\n // Find the digit before the decimal separator\n let deletePos = selectionStart - 2;\n while (deletePos >= 0 && value[deletePos] === groupSeparator) {\n deletePos--;\n }\n\n if (deletePos >= 0) {\n // Delete the digit and let formatting handle the rest\n const newValue = value.slice(0, deletePos) + value.slice(deletePos + 1);\n input.value = newValue;\n\n // Set cursor position at the decimal separator (which shifted left by 1)\n const decimalPos = newValue.indexOf(decimalSeparator);\n if (decimalPos >= 0) {\n input.setSelectionRange(decimalPos, decimalPos);\n }\n\n // Trigger input event to reformat\n const inputEvent = new Event('input', { bubbles: true });\n input.dispatchEvent(inputEvent);\n }\n return;\n }\n\n // Handle Delete when cursor is right before a group separator\n // Example: \"1|,234\" with Delete should delete '2', not ','\n if (key === 'Delete' && value[selectionStart] === groupSeparator) {\n event.preventDefault();\n\n // Find the digit after the separator\n let deletePos = selectionStart + 1;\n while (deletePos < value.length && value[deletePos] === groupSeparator) {\n deletePos++;\n }\n\n if (deletePos < value.length) {\n // Delete the digit and let formatting handle the rest\n const newValue = value.slice(0, deletePos) + value.slice(deletePos + 1);\n input.value = newValue;\n\n // Keep cursor at the same position (before the separator)\n input.setSelectionRange(selectionStart, selectionStart);\n\n // Trigger input event to reformat\n const inputEvent = new Event('input', { bubbles: true });\n input.dispatchEvent(inputEvent);\n }\n return;\n }\n\n // Handle Delete when cursor is right before decimal separator\n // Example: \"123|.00\" with Delete should delete '0' (first decimal digit), not '.'\n if (key === 'Delete' && value[selectionStart] === decimalSeparator) {\n event.preventDefault();\n\n // Find the first digit after the separator\n let deletePos = selectionStart + 1;\n while (deletePos < value.length && !/[0-9]/.test(value[deletePos])) {\n deletePos++;\n }\n\n if (deletePos < value.length) {\n // Delete the digit and let formatting handle the rest\n const newValue = value.slice(0, deletePos) + value.slice(deletePos + 1);\n input.value = newValue;\n\n // Keep cursor at the decimal separator\n input.setSelectionRange(selectionStart, selectionStart);\n\n // Trigger input event to reformat\n const inputEvent = new Event('input', { bubbles: true });\n input.dispatchEvent(inputEvent);\n }\n return;\n }\n\n // Prevent cursor from entering suffix area (skip for arrow keys and empty values)\n if (key !== 'ArrowUp' && key !== 'ArrowDown' && value !== '-') {\n const suffix = getSuffix(value, groupSeparator, decimalSeparator);\n\n if (suffix && selectionStart > value.length - suffix.length) {\n const suffixStartPos = value.length - suffix.length;\n inputRef.current?.setSelectionRange(suffixStartPos, suffixStartPos);\n }\n }\n\n onOriginalKeyDown?.(event);\n}\n","import {\n useMemo,\n useCallback,\n RefObject,\n ReactNode,\n useRef,\n useLayoutEffect,\n useState,\n} from 'react';\nimport {\n getSeparators,\n parseNumericValue,\n formatNumberString,\n trimSymbol,\n extractSymbol,\n} from './formatHelpers';\nimport { calculateCursorPosition } from './cursorHelpers';\nimport { handleNumberFieldKeyDown } from './keyboardHelpers';\n\ninterface UseNumberFieldFormattingParams {\n inputRef: RefObject<HTMLInputElement>;\n formatter: Intl.NumberFormat;\n inputValue: string;\n prefix?: ReactNode;\n postfix?: ReactNode;\n onOriginalKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;\n onChange?: (value: number) => void;\n autoFormat: boolean;\n}\n\ninterface UseNumberFieldFormattingReturn {\n displayValue: string;\n extractedPrefix: ReactNode;\n extractedPostfix: ReactNode;\n handleInput: (e: React.FormEvent<HTMLInputElement>) => void;\n handleKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n}\n\n/**\n * Hook for number field formatting with locale-aware separators and cursor management.\n * Handles currency/unit extraction, number formatting, and maintains correct cursor position.\n * When autoFormat is false, returns original values without any computation.\n */\nexport function useNumberFieldFormatting({\n inputRef,\n formatter,\n inputValue,\n prefix,\n postfix,\n onOriginalKeyDown,\n onChange,\n autoFormat,\n}: UseNumberFieldFormattingParams): UseNumberFieldFormattingReturn {\n const { groupSeparator, decimalSeparator } = useMemo(\n () => getSeparators(formatter),\n [formatter]\n );\n\n const [formattedValue, setFormattedValue] = useState<string>('');\n\n // Extract and position currency/unit symbols\n const symbolInfo = useMemo(\n () => extractSymbol(formatter, prefix, postfix),\n [formatter, prefix, postfix]\n );\n\n const { extractedPrefix, extractedPostfix, symbol } = symbolInfo;\n\n // Track cursor position to restore after React updates the value\n const cursorPositionRef = useRef<number | null>(null);\n\n // Format the input value for display\n const displayValue = useMemo(() => {\n const numericValue = parseNumericValue(\n inputValue,\n decimalSeparator,\n formatter\n );\n if (numericValue === null) return inputValue;\n\n try {\n const trimmedValue = trimSymbol(inputValue, symbol) || inputValue;\n return autoFormat ? formattedValue || trimmedValue : trimmedValue;\n } catch {\n return inputValue;\n }\n }, [\n inputValue,\n symbol,\n formatter,\n decimalSeparator,\n autoFormat,\n formattedValue,\n ]);\n\n // Restore cursor position after value changes\n useLayoutEffect(() => {\n if (cursorPositionRef.current !== null && inputRef.current) {\n inputRef.current.setSelectionRange(\n cursorPositionRef.current,\n cursorPositionRef.current\n );\n cursorPositionRef.current = null;\n }\n }, [displayValue, inputRef]);\n\n // Handle input with formatting and cursor management\n const handleInput = useCallback(\n (e: React.FormEvent<HTMLInputElement>): void => {\n if (!autoFormat) return;\n\n const input = e.currentTarget;\n const { value, selectionStart } = input;\n const inputType = (e.nativeEvent as InputEvent).inputType || '';\n const shouldStrip = !!symbol;\n\n /**\n * Check if we're exceeding maximum decimal places when typing at the end.\n * For example, with max 2 decimals, having \"12,34|\" and typing \"5\" should be prevented.\n */\n //#region Prevent excess decimals\n const maxFractionDigits =\n formatter.resolvedOptions().maximumFractionDigits || 0;\n const decimalIndex = value.indexOf(decimalSeparator);\n\n if (decimalIndex !== -1 && selectionStart !== null) {\n // Count decimal digits in the new value\n const decimalPart = value\n .slice(decimalIndex + 1)\n .replace(new RegExp(`[^0-9]`, 'g'), '');\n const prevDecimalIndex = displayValue.indexOf(decimalSeparator);\n const prevDecimalLength =\n prevDecimalIndex !== -1\n ? displayValue.slice(prevDecimalIndex + 1).length\n : 0;\n\n // If we have more decimals than allowed and cursor was at the end of decimals, prevent and restore\n if (\n decimalPart.length > maxFractionDigits &&\n selectionStart > decimalIndex + 1 + prevDecimalLength\n ) {\n e.preventDefault();\n // Store cursor position to restore after React's update\n cursorPositionRef.current = decimalIndex + 1 + prevDecimalLength;\n return;\n }\n }\n //#endregion Prevent excess decimals\n\n const formattedValue = formatNumberString(\n value,\n formatter,\n decimalSeparator,\n shouldStrip,\n symbol\n );\n\n setFormattedValue(formattedValue);\n\n const numericValue = parseNumericValue(\n formattedValue,\n decimalSeparator,\n formatter\n );\n\n // Calculate and store cursor position for restoration after React's update\n if (\n formattedValue !== value &&\n formattedValue !== '' &&\n selectionStart !== null\n ) {\n const newCursorPosition = calculateCursorPosition(\n value,\n formattedValue,\n selectionStart,\n inputType,\n decimalSeparator,\n numericValue\n );\n\n cursorPositionRef.current = newCursorPosition;\n }\n\n if (numericValue !== null) {\n onChange?.(numericValue);\n }\n },\n [formatter, decimalSeparator, symbol, autoFormat, displayValue, onChange]\n );\n\n // Handle keydown for special key behaviors\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>): void => {\n handleNumberFieldKeyDown({\n event: e,\n inputRef,\n groupSeparator,\n decimalSeparator,\n onOriginalKeyDown,\n });\n },\n [groupSeparator, decimalSeparator, inputRef, onOriginalKeyDown]\n );\n\n return {\n displayValue,\n extractedPrefix,\n extractedPostfix,\n handleInput,\n handleKeyDown,\n };\n}\n","import React, { RefObject } from 'react';\nimport {\n AriaNumberFieldProps,\n NumberFieldAria,\n useNumberField,\n} from '@react-aria/numberfield';\nimport { useNumberFieldState } from '@react-stately/numberfield';\nimport { useLocale } from '@react-aria/i18n';\n\nexport interface SapphireNumberFieldProps\n // TODO: when this is moved to `core`, we can replace the picked props with `ValueBasePropsKeys`\n extends Pick<\n AriaNumberFieldProps,\n | 'label'\n | 'isDisabled'\n | 'isRequired'\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'incrementAriaLabel'\n | 'decrementAriaLabel'\n | 'onFocus'\n | 'onBlur'\n | 'formatOptions'\n | 'step'\n | 'minValue'\n | 'maxValue'\n | 'placeholder'\n | 'isReadOnly'\n | 'autoFocus'\n | 'onFocusChange'\n | 'onKeyUp'\n | 'onKeyDown'\n > {\n /**\n * Whether the input should render as having an error and an error message.\n * This also sets the appropriate `aria` attributes on the input.\n *\n * A `boolean` sets the error state.\n * A `ReactNode` sets the error state with an additional error message.\n *\n * **An error message is strongly recommended because an error should always have an explanation about how to fix it.**\n */\n error?: boolean | React.ReactNode;\n}\n\nexport const useSapphireNumberField = (\n { error, ...numberFieldProps }: SapphireNumberFieldProps,\n ref: RefObject<HTMLInputElement>\n): NumberFieldAria & { state: ReturnType<typeof useNumberFieldState> } => {\n const { locale } = useLocale();\n const numberFieldState = useNumberFieldState({\n ...numberFieldProps,\n locale,\n });\n const numberFieldAria = useNumberField(\n {\n ...numberFieldProps,\n validationState:\n error === false || error === undefined ? undefined : 'invalid',\n },\n numberFieldState,\n ref\n );\n\n return { ...numberFieldAria, state: numberFieldState };\n};\n","import React, {\n forwardRef,\n ForwardedRef,\n ReactNode,\n RefObject,\n useImperativeHandle,\n useRef,\n useMemo,\n} from 'react';\nimport clsx from 'clsx';\nimport { useFocusRing } from '@react-aria/focus';\nimport { useLocale, useMessageFormatter } from '@react-aria/i18n';\nimport { mergeProps, useObjectRef } from '@react-aria/utils';\nimport { createFocusableRef } from '@react-spectrum/utils';\nimport { FocusableRefValue, PressEvents } from '@react-types/shared';\nimport textFieldStyles from '@danske/sapphire-css/components/textField/textField.module.css';\nimport {\n Field,\n Label,\n SapphireStyleProps,\n useThemeCheck,\n GlobalDomAttributes,\n Separator,\n} from '@danske/sapphire-react';\n\nimport intlMessages from '../i18n';\nimport { StepperButton } from './StepperButton';\nimport { useAutofillStyle } from './useAutofillStyle';\nimport { useNumberFieldFormatting } from './useNumberFieldFormatting';\nimport {\n SapphireNumberFieldProps,\n useSapphireNumberField,\n} from './useSapphireNumberField';\n\nexport type NumberFieldRef = FocusableRefValue<\n HTMLInputElement,\n HTMLDivElement\n> & {\n getInputElement(): HTMLInputElement | null;\n};\n\nexport interface NumberFieldProps\n extends SapphireNumberFieldProps,\n PressEvents,\n SapphireStyleProps,\n GlobalDomAttributes {\n /**\n * A string or element to show before / after the input value.\n *\n * By default (`'auto'`), the component will automatically extract currency/unit symbols\n * from the locale formatter and display them as prefix/postfix.\n * If you provide a custom prefix or postfix, those will be used instead and\n * the extracted symbols will be ignored.\n *\n * @default 'auto' - automatically extracts currency/unit symbols from locale formatter\n */\n affix?: 'auto' | { prefix?: ReactNode; postfix?: ReactNode };\n inputRef?: RefObject<HTMLInputElement | null>;\n /**\n * A note to show below the input.\n * If the input has an error message, this note will be replaced by that.\n */\n note?: ReactNode;\n /**\n * A HelpButton to render next to the label.\n */\n contextualHelp?: ReactNode;\n /**\n * To visually indicate if this field is required or optional.\n * @default false\n */\n necessityIndicator?: boolean;\n /**\n * @default 'lg'\n */\n size?: 'lg' | 'md';\n /**\n * Aligns the text inside the input fields without affecting the positioning of the label of the field.\n */\n alignInputRight?: boolean;\n /**\n * Places the label either above (default) or on the side of the control.\n * @default 'above'\n */\n labelPlacement?: 'side' | 'above';\n /**\n * To show the buttons for incrementing and decrementing the value.\n * @default false\n */\n showButtons?: boolean;\n /**\n * Enables automatic formatting of the input value as the user types, based on the provided formatter and affix.\n *\n * @default false\n */\n autoFormat?: boolean;\n}\n\nexport const NumberField = forwardRef(function NumberField(\n props: NumberFieldProps,\n ref: ForwardedRef<NumberFieldRef>\n) {\n const {\n label,\n isDisabled,\n error,\n note,\n isRequired,\n contextualHelp,\n affix = 'auto',\n size = 'lg',\n labelPlacement = 'above',\n necessityIndicator = false,\n alignInputRight,\n showButtons = false,\n incrementAriaLabel,\n decrementAriaLabel,\n autoFormat = false,\n ...otherProps\n } = props;\n\n // Extract prefix and postfix from affix prop\n const { prefix, postfix } = useMemo(() => {\n if (affix === 'auto') {\n return { prefix: undefined, postfix: undefined };\n }\n return { prefix: affix.prefix, postfix: affix.postfix };\n }, [affix]);\n useThemeCheck();\n const inputRef = useObjectRef<HTMLInputElement>(props.inputRef);\n const formatMessage = useMessageFormatter(intlMessages);\n\n const {\n inputProps,\n labelProps,\n incrementButtonProps,\n decrementButtonProps,\n descriptionProps,\n errorMessageProps,\n } = useSapphireNumberField(\n {\n ...props,\n incrementAriaLabel: incrementAriaLabel ?? formatMessage('increment'),\n decrementAriaLabel: decrementAriaLabel ?? formatMessage('decrement'),\n },\n inputRef\n );\n const { focusProps, isFocusVisible } = useFocusRing();\n const { autofillStyles, updateStyle } = useAutofillStyle<'input'>(inputRef);\n const { locale } = useLocale();\n\n const formatter = useMemo(\n () => new Intl.NumberFormat(locale, props.formatOptions),\n [locale, props.formatOptions]\n );\n\n const formattingResult = useNumberFieldFormatting({\n inputRef,\n formatter,\n inputValue: inputProps.value as string,\n prefix,\n postfix,\n onOriginalKeyDown: inputProps.onKeyDown,\n onChange: props.onChange,\n autoFormat,\n });\n\n const { extractedPrefix, extractedPostfix, handleInput, handleKeyDown } =\n autoFormat\n ? formattingResult\n : {\n extractedPrefix: formattingResult.extractedPrefix,\n extractedPostfix: formattingResult.extractedPostfix,\n handleInput: undefined,\n handleKeyDown: inputProps.onKeyDown,\n };\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(containerRef, inputRef),\n /**\n * (This function is deprecated. Use `inputRef` prop)\n * @deprecated\n */\n getInputElement() {\n return inputRef.current;\n },\n }));\n\n return (\n <Field\n // otherProps contains some of the same props as inputProps. That is\n // intended, but some DOM props, like \"id\", should not be repeated\n {...removeUniqueDOMProps(otherProps)}\n ref={containerRef}\n size={size}\n labelPlacement={labelPlacement}\n >\n <Field.Context\n descriptionProps={error ? errorMessageProps : descriptionProps}\n >\n {label && (\n <Field.Label>\n <Label\n {...labelProps}\n size={size}\n necessityIndicator={\n isRequired && necessityIndicator\n ? 'required'\n : !isRequired && necessityIndicator\n ? 'optional'\n : undefined\n }\n contextualHelp={contextualHelp}\n >\n {label}\n </Label>\n </Field.Label>\n )}\n <Field.Control>\n <div\n className={clsx(textFieldStyles['sapphire-text-field'], {\n [textFieldStyles['is-focus']]: isFocusVisible,\n [textFieldStyles['sapphire-text-field--error']]:\n error === true || typeof error === 'string',\n [textFieldStyles['sapphire-text-field--md']]: size === 'md',\n })}\n >\n {extractedPrefix && (\n <span\n className={clsx(\n textFieldStyles['sapphire-text-field__prefix'],\n {\n [textFieldStyles['sapphire-text-field__prefix--icon']]:\n typeof extractedPrefix !== 'string',\n }\n )}\n >\n {extractedPrefix}\n </span>\n )}\n <input\n {...mergeProps(\n inputProps,\n focusProps,\n {\n onChange: updateStyle,\n onBlur: updateStyle,\n },\n autoFormat\n ? {\n onInput: handleInput,\n onKeyDown: handleKeyDown,\n }\n : {}\n )}\n value={formattingResult?.displayValue ?? inputProps.value}\n ref={inputRef}\n className={clsx(textFieldStyles['sapphire-text-field__input'], {\n [textFieldStyles['sapphire-text-field__input--align-right']]:\n !!alignInputRight,\n })}\n style={autofillStyles}\n />\n {extractedPostfix && (\n <span\n className={clsx(\n textFieldStyles['sapphire-text-field__postfix'],\n {\n [textFieldStyles['sapphire-text-field__postfix--icon']]:\n typeof extractedPostfix !== 'string',\n }\n )}\n >\n {extractedPostfix}\n </span>\n )}\n {showButtons && (\n <div className={textFieldStyles['sapphire-text-field__stepper']}>\n <StepperButton\n variant=\"decrement\"\n size={size}\n {...decrementButtonProps}\n />\n <Separator orientation=\"vertical\" />\n <StepperButton\n variant=\"increment\"\n size={size}\n {...incrementButtonProps}\n />\n </div>\n )}\n </div>\n </Field.Control>\n {((error && typeof error !== 'boolean') || note) && (\n <Field.Footer>\n {error && typeof error !== 'boolean' ? (\n <Field.Note variant=\"error\">{error}</Field.Note>\n ) : note ? (\n note\n ) : (\n <></>\n )}\n </Field.Footer>\n )}\n </Field.Context>\n </Field>\n );\n});\n\n// Once moved to the core package, this function should be removed and instead consume the one from TextFieldBase.\nconst removeUniqueDOMProps = (props: Record<any, any>): Record<any, any> =>\n Object.fromEntries(\n Object.entries(props).filter(\n ([name]) => name !== 'id' && !name.startsWith('data-')\n )\n );\n","import React, { ReactNode, useContext, useState } from 'react';\nimport { ThemeVariant } from '@danske/sapphire-react';\nimport { useControlledState } from '@react-stately/utils';\n\nexport type SecondarySidebarContent = {\n header: ReactNode;\n body: ReactNode;\n} | null;\n\nexport interface SecondarySidebarContextValue {\n content: SecondarySidebarContent;\n setContent: (content: SecondarySidebarContent) => void;\n openedId: string | null;\n setOpenedId: (id: string | null) => void;\n themeVariant: ThemeVariant | undefined;\n}\n\nexport const SecondarySidebarContext =\n React.createContext<SecondarySidebarContextValue | null>(null);\n\nexport const useSecondarySidebarContext = (): SecondarySidebarContextValue => {\n const context = useContext(SecondarySidebarContext);\n if (context) {\n return context;\n }\n throw new Error('This should be rendered inside a <Sidebar />.');\n};\n\nexport const SecondarySidebarProvider = ({\n openedId,\n defaultOpenedId,\n onOpenedIdChange,\n themeVariant,\n children,\n}: {\n openedId?: string | null;\n defaultOpenedId?: string | null;\n onOpenedIdChange?: (id: string | null) => void;\n themeVariant?: ThemeVariant;\n children: ReactNode;\n}) => {\n const context = useContext(SecondarySidebarContext);\n\n const [secondarySidebarId, setSecondarySidebarId] = useControlledState<\n string | null\n >(openedId, defaultOpenedId ?? null, onOpenedIdChange);\n\n const [content, setContent] = useState<SecondarySidebarContent>(null);\n\n return (\n <SecondarySidebarContext.Provider\n value={{\n openedId: context?.openedId ?? secondarySidebarId,\n setOpenedId: context?.setOpenedId ?? setSecondarySidebarId,\n content: context?.content ?? content,\n setContent: context?.setContent ?? setContent,\n themeVariant: themeVariant ?? context?.themeVariant,\n }}\n >\n {children}\n </SecondarySidebarContext.Provider>\n );\n};\n","import { useControlledState } from '@react-stately/utils';\nimport { BreakpointKey, useMatchedBreakpoints } from '@danske/sapphire-react';\nimport React, { ReactNode, useContext } from 'react';\n\nexport interface ResponsiveSidebarContextValue {\n isPanelOpen: boolean;\n setPanelOpen: (open: boolean) => void;\n collapsed: boolean | BreakpointKey | undefined;\n}\n\nexport const ResponsiveSidebarContext =\n React.createContext<ResponsiveSidebarContextValue | null>(null);\n\nexport function useResponsiveSidebarContext() {\n return useContext(ResponsiveSidebarContext);\n}\n\n/**\n * Hook to determine if the sidebar should be collapsed.\n * Returns true if collapsed, false if expanded, or null if not in responsive mode.\n */\nexport function useIsSidebarCollapsed(): boolean | null {\n const context = useContext(ResponsiveSidebarContext);\n const matchedBreakpoints: string[] = useMatchedBreakpoints();\n\n if (!context) {\n return null;\n }\n\n const { collapsed } = context;\n\n // If collapsed is a boolean, use it directly\n if (typeof collapsed === 'boolean') {\n return collapsed;\n }\n\n // If collapsed is a breakpoint string, check if we're below that breakpoint\n if (typeof collapsed === 'string') {\n return !matchedBreakpoints.includes(collapsed);\n }\n\n // If collapsed is undefined, default to 'md' breakpoint behavior\n return !matchedBreakpoints.includes('md');\n}\n\nexport const ResponsiveSidebarProvider = ({\n collapsed,\n isPanelOpen,\n defaultIsPanelOpen,\n onPanelOpenChange,\n children,\n}: {\n /**\n * Controls whether the sidebar is collapsed.\n * - When `true`: sidebar is always collapsed (shows as panel)\n * - When `false`: sidebar is always expanded (shows as sidebar)\n * - When a breakpoint string (e.g., 'md', 'lg'): automatically collapses below that breakpoint\n * - When `undefined`: defaults to 'md' breakpoint behavior (collapses below medium screens)\n * @default undefined (equivalent to 'md')\n */\n collapsed?: boolean | BreakpointKey;\n\n /**\n * If the sidebar panel is open (controlled)\n */\n isPanelOpen?: boolean;\n\n /**\n * The default state of the panel (uncontrolled)\n */\n defaultIsPanelOpen?: boolean;\n\n /**\n * Callback for when the state of the panel changes\n */\n onPanelOpenChange?: (open: boolean) => void;\n children: ReactNode;\n}) => {\n const [isOpen, setOpen] = useControlledState<boolean>(\n isPanelOpen,\n defaultIsPanelOpen ?? false,\n onPanelOpenChange\n );\n\n return (\n <ResponsiveSidebarContext.Provider\n value={{\n isPanelOpen: isOpen,\n setPanelOpen: setOpen,\n collapsed,\n }}\n >\n {children}\n </ResponsiveSidebarContext.Provider>\n );\n};\n","import React, { ReactNode, useEffect } from 'react';\nimport {\n IconButton,\n ModalLayout,\n Panel,\n PanelProps,\n tokens,\n View,\n} from '@danske/sapphire-react';\nimport { ChevronLeft } from '@danske/sapphire-icons/react';\nimport { useSecondarySidebarContext } from './SecondarySidebarContext';\nimport {\n useIsSidebarCollapsed,\n useResponsiveSidebarContext,\n} from './ResponsiveSidebarContext';\n\nexport type SidebarPanelProps = Omit<\n PanelProps,\n 'isOpen' | 'size' | 'direction'\n> & { header: ReactNode };\n\nexport const SidebarPanel = ({\n children,\n header,\n ...props\n}: SidebarPanelProps) => {\n const { openedId, setOpenedId, content } = useSecondarySidebarContext();\n const responsiveContext = useResponsiveSidebarContext();\n\n if (!responsiveContext) {\n throw new Error(\n '<SidebarPanel> must be rendered inside a <Sidebar.ResponsiveProvider>'\n );\n }\n\n const { isPanelOpen, setPanelOpen } = responsiveContext;\n const isCollapsed = useIsSidebarCollapsed();\n\n useEffect(() => {\n if (!isCollapsed) {\n // if breakpoint changes, we want to close the panel until opened manually again\n setPanelOpen(false);\n }\n }, [isCollapsed]);\n\n return (\n <Panel\n {...props}\n isOpen={isPanelOpen}\n onClose={() => setPanelOpen(false)}\n onCloseTransitionDone={() => setOpenedId(null)}\n alignLeft\n isDismissable\n width={320}\n >\n <ModalLayout\n header={\n <ModalLayout.Header\n heading={openedId === null ? header : content?.header}\n backButton={\n openedId !== null && (\n <IconButton\n size=\"md\"\n aria-label=\"Back\"\n variant=\"tertiary\"\n marginLeft={`calc(-1 * ${tokens.size.spacingSm})`}\n onPress={() => setOpenedId(null)}\n >\n <ChevronLeft />\n </IconButton>\n )\n }\n />\n }\n body={\n <ModalLayout.Body\n noPadding\n UNSAFE_style={{\n paddingLeft: tokens.size.spacingMd.value,\n paddingRight: tokens.size.spacingMd.value,\n }}\n >\n <>\n <View isHidden={openedId !== null}>{children}</View>\n {openedId && content?.body}\n </>\n </ModalLayout.Body>\n }\n />\n </Panel>\n );\n};\n\nexport const SidebarPanelTrigger = ({\n children,\n}: {\n children: (triggerProps: any) => JSX.Element;\n}) => {\n const context = useResponsiveSidebarContext();\n if (!context) {\n throw new Error(\n '<Sidebar.PanelTrigger> should be rendered inside a <Sidebar.ResponsiveProvider>'\n );\n }\n const isCollapsed = useIsSidebarCollapsed();\n const panelTriggerProps = {\n onPress: () => {\n context.setPanelOpen(true);\n },\n };\n\n return isCollapsed ? children(panelTriggerProps) : null;\n};\n","import { useResponsiveSidebarContext } from './ResponsiveSidebarContext';\nimport { useSecondarySidebarContext } from './SecondarySidebarContext';\n\n/**\n * Returns props to be spread on different components that make the Sidebar.\n */\nexport const useSidebar = () => {\n const { openedId, setOpenedId } = useSecondarySidebarContext();\n const responsiveContext = useResponsiveSidebarContext();\n const { isPanelOpen, setPanelOpen } = responsiveContext\n ? responsiveContext\n : { isPanelOpen: false, setPanelOpen: () => {} };\n\n return {\n sidebarProps: { onBlurWithin: () => setOpenedId(null) },\n itemProps: {\n onPress: () => {\n setPanelOpen(false);\n if (!isPanelOpen) {\n /* If panel is open, let the secondary sidebar get closed\n * when the closing transition is done. See `panelProps`\n */\n setOpenedId(null);\n }\n },\n },\n getExpandableItemProps: (id: string) => ({\n onPress: () => setOpenedId(openedId === id ? null : id),\n }),\n secondarySidebarProps: {\n onClose: () => setOpenedId(null),\n },\n };\n};\n","import { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport {\n useThemeCheck,\n useSapphireStyleProps,\n SapphireStyleProps,\n ThemeRoot,\n ThemeVariant,\n} from '@danske/sapphire-react';\nimport React from 'react';\nimport { DOMProps } from '@react-types/shared';\nimport { filterDOMProps, mergeProps } from '@react-aria/utils';\nimport { FocusWithinProps, useFocusWithin } from '@react-aria/interactions';\nimport { SidebarPanel } from './Panel';\nimport { useSidebar } from './useSidebar';\nimport { SecondarySidebarProvider } from './SecondarySidebarContext';\nimport {\n useIsSidebarCollapsed,\n useResponsiveSidebarContext,\n} from './ResponsiveSidebarContext';\n\nexport type SidebarProps = DOMProps &\n SapphireStyleProps & {\n /**\n * Shorthand to wrap the sidebar in a ThemeRoot with a different theme variant\n */\n themeVariant?: ThemeVariant;\n\n /**\n * The theme variant for the overflow sidebar\n */\n secondarySidebarThemeVariant?: ThemeVariant;\n\n /**\n * Callback for when the sidebar's elements lose focus.\n * Useful to know when to close the overflow sidebar.\n */\n onBlurWithin?: FocusWithinProps['onBlurWithin'];\n\n /**\n * Callback for when one of the sidebar's elements first gains focus.\n */\n onFocusWithin?: FocusWithinProps['onFocusWithin'];\n\n /**\n * Callback for when one of the sidebar's elements loses or gains focus\n */\n onFocusWithinChange?: FocusWithinProps['onFocusWithinChange'];\n\n /**\n * Whether the overflow sidebar should close when all sidebar's elements\n * lost focus\n * @default true\n */\n closeOnBlurWithin?: boolean;\n\n /**\n * The header of the sidebar\n */\n header: ReactNode;\n\n /**\n * The header of the sidebar for small screens, when the sidebar is\n * rendered as a panel\n */\n panelHeader?: ReactNode;\n\n /**\n * The id of the opened secondary sidebar (controlled)\n */\n openedSecondarySidebar?: string | null;\n\n /**\n * The id of the secondary sidebar opened by default (uncontrolled)\n */\n defaultOpenedSecondarySidebar?: string | null;\n\n /**\n * Callback for when the secondary sidebar opens or closes\n */\n onSecondarySidebarChange?: (id: string | null) => void;\n\n children?: ReactNode;\n };\n\n/**\n * Sidebar component for the site's main navigation.\n * Takes the height of the container.\n *\n * The default recommended way to use it is in the example below. But each part\n * can be replaced with a custom implementation.\n *\n * **Example:**\n * ```tsx\n * <Sidebar\n * header={\n * <Sidebar.Header>\n * header\n * </Sidebar.Header>\n * }\n * >\n * <Sidebar.Body>\n * <Sidebar.List>\n * ...\n * </Sidebar.List>\n * </Sidebar.Body>\n * </Sidebar>\n * ```\n */\nexport const Sidebar = ({\n themeVariant,\n openedSecondarySidebar,\n defaultOpenedSecondarySidebar,\n onSecondarySidebarChange,\n secondarySidebarThemeVariant,\n children,\n ...props\n}: SidebarProps) => {\n useThemeCheck();\n\n return (\n <SecondarySidebarProvider\n openedId={openedSecondarySidebar}\n defaultOpenedId={defaultOpenedSecondarySidebar}\n onOpenedIdChange={onSecondarySidebarChange}\n themeVariant={secondarySidebarThemeVariant}\n >\n <WithThemeRoot themeVariant={themeVariant}>\n <SidebarContent {...props}>{children}</SidebarContent>\n </WithThemeRoot>\n </SecondarySidebarProvider>\n );\n};\n\nconst SidebarContent = ({\n onBlurWithin,\n onFocusWithin,\n onFocusWithinChange,\n closeOnBlurWithin = true,\n header,\n panelHeader,\n children,\n ...props\n}: SidebarProps) => {\n const { styleProps } = useSapphireStyleProps(props);\n const { sidebarProps } = useSidebar();\n\n const { focusWithinProps } = useFocusWithin(\n mergeProps(\n {\n onBlurWithin,\n onFocusWithin,\n onFocusWithinChange,\n },\n closeOnBlurWithin ? sidebarProps : {}\n )\n );\n\n const responsiveSidebarContext = useResponsiveSidebarContext();\n const isCollapsed = useIsSidebarCollapsed();\n\n return (\n <>\n {!isCollapsed && (\n <div\n {...styleProps}\n {...filterDOMProps(props, { global: true })}\n {...focusWithinProps}\n className={clsx(styles['sapphire-sidebar'])}\n tabIndex={-1 /* sidebar must be focusable but not tabbable */}\n >\n {header}\n {children}\n </div>\n )}\n {responsiveSidebarContext && (\n <SidebarPanel header={panelHeader}>{children}</SidebarPanel>\n )}\n </>\n );\n};\n\nconst WithThemeRoot = ({\n children,\n themeVariant,\n}: {\n themeVariant?: ThemeVariant;\n children: ReactNode;\n}) =>\n themeVariant ? (\n <ThemeRoot\n variant={themeVariant}\n noSurface\n height=\"100%\"\n width=\"min-content\"\n >\n {children}\n </ThemeRoot>\n ) : (\n <>{children}</>\n );\n","import React, { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport { IconButton, IconButtonProps } from '@danske/sapphire-react';\nimport { CloseLarge } from '@danske/sapphire-icons/react';\n\nexport interface SidebarHeaderProps extends DOMProps {\n children: ReactNode;\n /**\n * Props for the close button\n * If none provided, close button won't show\n */\n closeButtonProps?: Omit<\n IconButtonProps<'button'>,\n 'children' | 'aria-label' | 'aria-hidden'\n >;\n}\n\nexport const SidebarHeader = ({\n children,\n closeButtonProps,\n ...props\n}: SidebarHeaderProps): React.JSX.Element => {\n return (\n <div\n {...filterDOMProps(props)}\n className={clsx(styles['sapphire-sidebar__header'])}\n >\n {children}\n {closeButtonProps && (\n <IconButton {...closeButtonProps} aria-label=\"Close\">\n <CloseLarge />\n </IconButton>\n )}\n </div>\n );\n};\n","import React, { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport buttonStyles from '@danske/sapphire-css/components/button/button.module.css';\nimport { Button, ButtonProps } from '@danske/sapphire-react';\nimport { FocusableRef } from '@react-types/shared';\nimport { mergeProps } from '@react-aria/utils';\nimport { useSidebar } from './useSidebar';\n\nexport type SidebarItemProps = Omit<\n ButtonProps<'a'>,\n 'variant' | 'size' | 'elementType'\n> & {\n /**\n * If the link is currently active\n */\n isActive?: boolean;\n children?: ReactNode;\n};\n\nexport const SidebarItem = React.forwardRef(function SidebarItem(\n { isActive, children, ...props }: SidebarItemProps,\n ref: FocusableRef<HTMLAnchorElement>\n): React.JSX.Element {\n const { itemProps } = useSidebar();\n\n return (\n <li className={clsx(styles['sapphire-sidebar__nav-item'])}>\n <Button\n ref={ref}\n variant=\"tertiary\"\n elementType=\"a\"\n aria-current={isActive ? 'page' : undefined}\n {...mergeProps(props as ButtonProps<'a'>, itemProps)}\n UNSAFE_className={clsx(\n buttonStyles['sapphire-button--stretch-left-align'],\n { [buttonStyles['sapphire-button--selected']]: isActive }\n )}\n >\n {children}\n </Button>\n </li>\n );\n});\n","import React, { ReactNode, useEffect, useLayoutEffect, useRef } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport buttonStyles from '@danske/sapphire-css/components/button/button.module.css';\nimport { Button, ButtonProps, ThemeVariant } from '@danske/sapphire-react';\nimport { FocusScope } from '@react-aria/focus';\nimport { FocusableRef } from '@react-types/shared';\nimport { Transition } from 'react-transition-group';\nimport { Sidebar } from '..';\nimport { mergeProps, useId } from '@react-aria/utils';\nimport { useSidebar } from './useSidebar';\nimport { useSecondarySidebarContext } from './SecondarySidebarContext';\nimport { useIsSidebarCollapsed } from './ResponsiveSidebarContext';\n\nexport type SidebarExpandableItemProps = Omit<\n ButtonProps<'button'>,\n 'variant' | 'size' | 'elementType'\n> & {\n /**\n * If the link is currently active\n */\n isActive?: boolean;\n\n /**\n * The id of the group.\n * Used in `onSecondarySidebarChange` or when the sidebar is controlled\n */\n id?: string;\n\n /**\n * Heading used for secondary sidebar\n */\n header: ReactNode;\n\n /**\n * Subitems (secondary sidebar)\n */\n body: ReactNode;\n children?: ReactNode;\n};\n\nexport const SidebarExpandableItem = React.forwardRef(\n function SidebarExpandableItem(\n {\n id,\n isActive,\n body,\n header,\n children,\n ...props\n }: SidebarExpandableItemProps,\n ref: FocusableRef<HTMLAnchorElement>\n ): React.JSX.Element {\n const { openedId, setContent, themeVariant } = useSecondarySidebarContext();\n const isCollapsed = useIsSidebarCollapsed();\n const { getExpandableItemProps, secondarySidebarProps } = useSidebar();\n const itemId = useId(id);\n const isOpen = openedId === itemId;\n\n useLayoutEffect(() => {\n if (isOpen) {\n setContent({ header, body });\n }\n }, [isOpen]);\n\n return (\n <li className={clsx(styles['sapphire-sidebar__nav-item'])}>\n <Button\n variant=\"tertiary\"\n aria-current={isActive || undefined}\n ref={ref}\n {...mergeProps(\n getExpandableItemProps(itemId),\n props as ButtonProps<'button'>\n )}\n UNSAFE_className={clsx(\n buttonStyles['sapphire-button--stretch-left-align'],\n {\n [buttonStyles['sapphire-button--selected']]: isActive && !isOpen,\n [buttonStyles['is-active']]: isOpen,\n }\n )}\n >\n {children}\n </Button>\n <SecondarySidebar\n isOpen={isOpen && !isCollapsed}\n header={header}\n themeVariant={themeVariant}\n {...secondarySidebarProps}\n >\n {body}\n </SecondarySidebar>\n </li>\n );\n }\n);\n\nconst SecondarySidebar = ({\n isOpen,\n onClose,\n onCloseTransitionDone,\n themeVariant,\n header,\n children,\n}: {\n isOpen: boolean;\n onClose?: () => void;\n onCloseTransitionDone?: () => void;\n themeVariant?: ThemeVariant;\n header: ReactNode;\n children: ReactNode;\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [onClose]);\n\n return (\n <Transition\n in={isOpen}\n mountOnEnter\n nodeRef={ref}\n unmountOnExit\n onExited={onCloseTransitionDone}\n timeout={200}\n >\n {(transitionState) => (\n <div\n ref={ref}\n className={clsx(styles['sapphire-sidebar__secondary-container'], {\n [styles['sapphire-sidebar--slide-in']]: true,\n [styles['sapphire-sidebar--slide-out']]:\n transitionState === 'exiting',\n })}\n >\n <FocusScope restoreFocus autoFocus>\n <Sidebar\n themeVariant={themeVariant}\n closeOnBlurWithin={\n false /* no focus management on nested sidebars */\n }\n header={\n <Sidebar.Header\n closeButtonProps={{\n onPress: () => onClose?.(),\n }}\n >\n {header}\n </Sidebar.Header>\n }\n panelHeader={null}\n >\n {children}\n </Sidebar>\n </FocusScope>\n </div>\n )}\n </Transition>\n );\n};\n","import React, { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport { useListBoxSection } from '@react-aria/listbox';\nimport { filterDOMProps } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\n\nexport type SidebarSectionProps = DOMProps &\n SapphireStyleProps & {\n /**\n * Section title\n * If not provided, please pass the `aria-label`\n */\n title?: string;\n\n /**\n * Section aria title\n */\n 'aria-label'?: string;\n\n children?: ReactNode;\n };\n\nexport const SidebarSection = ({\n title,\n 'aria-label': label,\n children,\n ...props\n}: SidebarSectionProps) => {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n const { itemProps, headingProps, groupProps } = useListBoxSection({\n heading: title,\n 'aria-label': label,\n });\n\n return (\n <>\n <li\n role=\"separator\"\n className={clsx(styles['sapphire-sidebar__separator'])}\n ></li>\n <li\n {...itemProps}\n {...styleProps}\n {...filterDOMProps(props, { global: true })}\n >\n {title && (\n <div\n {...headingProps}\n className={clsx(styles['sapphire-sidebar__section-header'])}\n >\n {title}\n </div>\n )}\n <ul\n {...groupProps}\n className={clsx(styles['sapphire-sidebar__section'])}\n >\n {children}\n </ul>\n </li>\n </>\n );\n};\n","import React, { ReactNode, useRef } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport { useScrollCheck } from '@danske/sapphire-react';\n\nexport interface SidebarBodyProps extends DOMProps {\n /**\n * Wrapping element type.\n * @default 'nav'\n */\n elementType?: string;\n children?: ReactNode;\n}\n\nexport const SidebarBody = ({\n elementType = 'nav',\n children,\n ...props\n}: SidebarBodyProps): React.JSX.Element => {\n const RootNode = elementType as any;\n const sidebarBody = useRef<HTMLElement>(null);\n const { isScrolled, scrollCheckProps } = useScrollCheck(sidebarBody);\n\n return (\n <RootNode\n ref={sidebarBody}\n tabIndex={\n -1 /* Some browsers will make this focusable because it overflows */\n }\n className={clsx(styles['sapphire-sidebar__body'], {\n [styles['sapphire-sidebar__body--scrolled']]: isScrolled,\n })}\n {...filterDOMProps(props, { global: true })}\n {...scrollCheckProps}\n >\n {children}\n </RootNode>\n );\n};\n","import React, { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\n\nexport interface SidebarListProps extends DOMProps {\n /**\n * Wrapping element type.\n * @default 'ul'\n */\n elementType?: 'ul' | 'ol';\n children?: ReactNode;\n}\n\nexport const SidebarList = ({\n elementType = 'ul',\n children,\n ...props\n}: SidebarListProps): React.JSX.Element => {\n const RootNode = elementType as any;\n\n return (\n <RootNode\n {...filterDOMProps(props, { global: true })}\n className={clsx(styles['sapphire-sidebar__nav-list'])}\n >\n {children}\n </RootNode>\n );\n};\n","import { Sidebar } from './src/Sidebar';\nimport { SidebarHeader } from './src/Header';\nimport { SidebarItem } from './src/Item';\nimport { SidebarExpandableItem } from './src/ExpandableItem';\nimport { SidebarSection } from './src/Section';\nimport { SidebarBody } from './src/Body';\nimport { SidebarList } from './src/List';\nimport { ResponsiveSidebarProvider } from './src/ResponsiveSidebarContext';\nimport { SidebarPanelTrigger } from './src/Panel';\n\nconst _Sidebar = Object.assign(Sidebar, {\n ResponsiveProvider: ResponsiveSidebarProvider,\n Header: SidebarHeader,\n Body: SidebarBody,\n List: SidebarList,\n Item: SidebarItem,\n ExpandableItem: SidebarExpandableItem,\n Section: SidebarSection,\n PanelTrigger: SidebarPanelTrigger,\n});\n\nexport { _Sidebar as Sidebar };\nexport { type SidebarProps } from './src/Sidebar';\nexport { type SidebarItemProps } from './src/Item';\nexport { type SidebarExpandableItemProps } from './src/ExpandableItem';\nexport { type SidebarSectionProps } from './src/Section';\nexport { type SidebarBodyProps } from './src/Body';\nexport { type SidebarListProps } from './src/List';\nexport { type SidebarHeaderProps } from './src/Header';\n","import React from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/progressIndicator/progressIndicator.module.css';\nimport {\n SapphireStyleProps,\n useThemeCheck,\n useSapphireStyleProps,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { useProgressBar } from '@react-aria/progress';\nimport { filterDOMProps } from '@react-aria/utils';\n\nexport type ProgressIndicatorProps = {\n /**\n * The maximum value for the progress bar. Will be used as:\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuemax\n *\n * @default 100\n */\n maxValue?: number;\n\n /**\n * The current value of the progress bar. Will be used as:\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuenow\n */\n value: number;\n\n /**\n * Defines how many segments the progress bar will have.\n *\n * @default 1\n */\n segments?: number;\n\n /**\n * Human-readable text alternative for the current value of the progress bar. Will be used as:\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuetext\n */\n 'aria-valuetext'?: string;\n} & SapphireStyleProps &\n GlobalDomAttributes &\n ({ 'aria-labelledby': string } | { 'aria-label': string });\n\nexport const ProgressIndicator = (\n props: ProgressIndicatorProps\n): JSX.Element => {\n const {\n maxValue = 100,\n value: realValue,\n segments = 1,\n 'aria-valuetext': ariaValueText,\n } = props;\n\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n const { progressBarProps } = useProgressBar({\n ...props,\n minValue: 0,\n valueLabel: ariaValueText,\n });\n\n const minValue = 0;\n\n const value = Math.min(Math.max(realValue, minValue), maxValue);\n const widthPercentage = (value / maxValue) * 100;\n\n return (\n <div\n {...filterDOMProps(props, { global: true })}\n className={clsx(styles['sapphire-progress'])}\n >\n <div\n {...progressBarProps}\n className={styles['sapphire-progress--indicator']}\n style={{ ...styleProps, width: `${widthPercentage}%` }}\n aria-label={'aria-label' in props ? props['aria-label'] : undefined}\n aria-labelledby={\n 'aria-labelledby' in props ? props['aria-labelledby'] : undefined\n }\n />\n {segments > 1 && (\n <div className={styles['sapphire-progress--segments']}>\n {Array.from({ length: segments }, (_, index) => (\n <span key={index}></span>\n ))}\n </div>\n )}\n </div>\n );\n};\n","import { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/slider/slider.module.css';\nimport {\n useThemeCheck,\n useSapphireStyleProps,\n Label,\n SapphireStyleProps,\n Field,\n FieldProps,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport {\n Slider as RACSlider,\n SliderProps as RACSliderProps,\n SliderThumb as RACSliderThumb,\n SliderThumbProps as RACSliderThumbProps,\n SliderTrack as RACSliderTrack,\n} from 'react-aria-components';\nimport React from 'react';\n\nexport type SliderProps = {\n label?: ReactNode;\n /**\n * A note to show below the slider.\n * Use {@Link Slider.Note} to render the note.\n */\n note?: ReactNode;\n} & SapphireStyleProps &\n GlobalDomAttributes &\n Pick<FieldProps, 'labelPlacement'> &\n Pick<\n RACSliderProps<number>, // We're only supporting sliders with one end\n | 'isDisabled'\n | 'minValue'\n | 'maxValue'\n | 'step'\n | 'value'\n | 'defaultValue'\n | 'aria-label'\n | 'onChange'\n | 'onChangeEnd'\n > &\n Pick<RACSliderThumbProps, 'name'>;\n\nexport const Slider = ({\n label,\n labelPlacement = 'above',\n note,\n name,\n ...props\n}: SliderProps): JSX.Element => {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n\n return (\n <Field {...styleProps} labelPlacement={labelPlacement}>\n <Field.Context>\n {label && (\n <Field.Label>\n <Label>{label}</Label>\n </Field.Label>\n )}\n\n <Field.Control>\n <RACSlider {...props} style={{ height: '100%' }}>\n <div className={clsx(styles['sapphire-slider'])} role=\"slider\">\n <RACSliderTrack\n className={({ isDisabled }) =>\n clsx(styles['sapphire-slider__track'], {\n [styles['is-disabled']]: isDisabled,\n })\n }\n >\n {({ state }) => (\n <>\n <div\n className={clsx(\n styles['sapphire-slider__track-remaining']\n )}\n />\n <div\n className={clsx(styles['sapphire-slider__track-fill'])}\n style={{ width: state.getThumbPercent(0) * 100 + '%' }}\n />\n <RACSliderThumb\n name={name}\n className={(state) =>\n clsx(styles['sapphire-slider__thumb'], {\n [styles['is-focus']]: state.isFocusVisible,\n })\n }\n style={({ state }) => {\n // Pad the thumb position, so it doesn't go over the track\n const percent = Math.min(\n 3 + state.getThumbPercent(0) * 94,\n 100\n );\n return {\n left: `${percent}%`,\n };\n }}\n />\n </>\n )}\n </RACSliderTrack>\n </div>\n </RACSlider>\n </Field.Control>\n\n {note && <Field.Footer>{note}</Field.Footer>}\n </Field.Context>\n </Field>\n );\n};\n","import { Field } from '@danske/sapphire-react';\nimport { Slider } from './src/Slider';\n\nconst _Slider = Object.assign(Slider, {\n Note: Field.Note,\n});\n\nexport { _Slider as Slider };\nexport { type SliderProps } from './src/Slider';\n","import React, { useRef } from 'react';\nimport clsx from 'clsx';\nimport { AriaButtonProps, useButton } from '@react-aria/button';\nimport { useHover } from '@react-aria/interactions';\nimport { useTag } from '@react-aria/tag';\nimport { mergeProps, mergeRefs } from '@react-aria/utils';\nimport type { ListState } from '@react-stately/list';\nimport type { FocusableElement, Node } from '@react-types/shared';\n\nimport { Icon, useThemeCheck, TooltipIfNeeded } from '@danske/sapphire-react';\nimport { Close, Error } from '@danske/sapphire-icons/react';\nimport styles from '@danske/sapphire-css/components/tag/tag.module.css';\nimport { FocusRing } from '@react-aria/focus';\n\nexport interface TagProps<T> {\n /**\n * Object representing the tag. Contains relevant information about the tag.\n */\n item: Node<T>;\n /**\n * State for TagGroup, returned by `useListState`\n */\n state: ListState<T>;\n /**\n * Shows error icon.\n * @default 'false'\n */\n hasError?: boolean;\n /**\n * Control whether the tag is removable or not.\n * This behavior is overridden to `false` if the tag is disabled.\n *\n * @default false\n */\n allowsRemoving?: boolean;\n}\n\nexport function Tag<T>(props: TagProps<T>): React.JSX.Element {\n useThemeCheck();\n const { hasError = false, item, state } = props;\n const ref = useRef<HTMLDivElement>(null);\n const {\n gridCellProps,\n isDisabled,\n isFocused,\n isPressed,\n removeButtonProps,\n rowProps: { onKeyDown, ...rowProps },\n ...otherProps\n } = useTag(props, state, ref);\n const { hoverProps, isHovered } = useHover({ isDisabled });\n /* hasAction prop is passed when onAction is present, we are using it to set the hover and action classes.\n The workaround below is made because AriaTagProps Omit's hasAction to avoid typecheck error */\n const hasAction = (otherProps as any).hasAction;\n\n return (\n <TooltipIfNeeded<HTMLDivElement> title={item.rendered}>\n {(tooltipRef, tooltipProps) => {\n const { ref: tooltipTargetRef, ...restTooltipProps } =\n tooltipProps || {};\n return (\n <FocusRing focusRingClass={styles['is-focus']}>\n <div\n ref={mergeRefs(ref, tooltipTargetRef)}\n {...mergeProps(\n {\n onKeyDown: (e: React.KeyboardEvent<FocusableElement>) => {\n /* We are removing Space key interaction and prevent default behavior to avoid isPressed prop being set\n as we do not want to apply is-active class on \"Space\" interaction when having actionable tags with onAction or link */\n if (e.key !== ' ') {\n onKeyDown?.(e);\n } else {\n e.preventDefault();\n }\n },\n },\n rowProps,\n hoverProps,\n restTooltipProps\n )}\n className={clsx(\n styles['sapphire-tag'],\n styles['js-focus'],\n styles['js-hover'],\n {\n [styles['sapphire-tag--actionable']]: hasAction,\n [styles['is-active']]: hasAction && isPressed,\n [styles['is-hover']]: hasAction && isHovered,\n [styles['is-disabled']]: isDisabled,\n }\n )}\n {...(hasError ? { 'aria-invalid': true } : {})}\n >\n <div\n {...gridCellProps}\n className={styles['sapphire-tag__content']}\n >\n {hasError && !isDisabled && <IconError />}\n <span\n ref={tooltipRef as React.Ref<HTMLSpanElement>}\n className={styles['sapphire-tag__label']}\n >\n {item.rendered}\n </span>\n {!isDisabled && props.allowsRemoving && (\n <RemoveButton {...(removeButtonProps as AriaButtonProps)} />\n )}\n </div>\n </div>\n </FocusRing>\n );\n }}\n </TooltipIfNeeded>\n );\n}\n\nfunction RemoveButton(removeButtonProps: AriaButtonProps) {\n const buttonRef = useRef(null);\n const { buttonProps } = useButton(removeButtonProps, buttonRef);\n return (\n <button\n {...buttonProps}\n className={clsx(styles['sapphire-tag__button'], styles['js-focus'])}\n >\n <Icon size=\"sm\">\n <Close />\n </Icon>\n </button>\n );\n}\n\nconst IconError = () => {\n return (\n <span className={clsx(styles['sapphire-tag__error-icon'])}>\n <Icon size=\"sm\">\n <Error />\n </Icon>\n </span>\n );\n};\n","import React, { Key, ReactNode, useRef } from 'react';\nimport { useTagGroup } from '@react-aria/tag';\nimport { useListState } from '@react-stately/list';\nimport {\n AriaLabelingProps,\n CollectionBase,\n DOMProps,\n} from '@react-types/shared';\nimport {\n Field,\n Label,\n SapphireStyleProps,\n useThemeCheck,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/tag/tag.module.css';\n\nimport { Tag } from './Tag';\nimport { TagItemProps } from './TagItem';\n\nexport interface TagGroupProps<T>\n extends CollectionBase<T>,\n DOMProps,\n // TODO when moving to \"core\", use types under `types.ts` instead of plain strings\n Pick<\n AriaLabelingProps,\n 'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'aria-details'\n >,\n SapphireStyleProps,\n GlobalDomAttributes {\n /**\n * A HelpButton element to place next to the label.\n */\n contextualHelp?: ReactNode;\n /**\n * Custom error message help text.\n */\n errorMessage?: string;\n /**\n * The label of the tag group.\n */\n label?: string;\n /**\n * Places the label either above (default) or on the left side of tags.\n * @default 'above'\n */\n labelPlacement?: 'above' | 'side';\n /**\n * Help text description displayed below tags.\n */\n note?: string;\n /**\n * onAction handler passed down for actionable Tags, called onPress of tags.\n */\n onAction?: (key: Key) => void;\n /**\n * Handler that is called when a user deletes a tag.\n *\n * @deprecated Use `onRemove` prop on the `TagItem` component instead.\n * This prop will be removed when this component is moved to \"@danske/sapphire-react\".\n */\n onRemove?: (keys: Set<Key>) => void;\n}\n\nexport function TagGroup<T extends object>(\n props: TagGroupProps<T>\n): React.JSX.Element {\n useThemeCheck();\n const {\n contextualHelp,\n errorMessage,\n label: labelText,\n labelPlacement = 'above',\n note,\n onRemove: originalOnRemove,\n ...otherProps\n } = props;\n const ref = useRef(null);\n const state = useListState(props);\n\n // TODO when moving to \"core\": Remove `originalOnRemove` from here & remove support for `onRemove` prop.\n // If an external onRemove handler is provided, use it directly.\n // Otherwise, call individual onRemove handlers on each tag item.\n const onRemove = originalOnRemove\n ? (keys: Set<Key>) => {\n // eslint-disable-next-line no-console -- It's good to warn about the deprecation, but this needs to be removed alongside `onRemove`\n console.warn(\n 'The `onRemove` prop is deprecated and will be removed in future versions. Use the `onRemove` prop on the `TagItem` component instead.'\n );\n originalOnRemove(keys);\n }\n : (keys: Set<Key>) => {\n // Iterate through the keys and call each item's onRemove handler\n Array.from(keys).forEach((key) => {\n const item = state.collection.getItem(key);\n if (item) {\n (item.props as TagItemProps<T>).onRemove?.();\n }\n });\n };\n\n const { descriptionProps, gridProps, labelProps, errorMessageProps } =\n useTagGroup({ ...props, onRemove }, state, ref);\n\n return (\n <Field\n {...otherProps}\n labelPlacement={labelPlacement}\n labelVerticalAlignment=\"top\"\n noDefaultWidth\n >\n <Field.Context\n descriptionProps={errorMessage ? errorMessageProps : descriptionProps}\n >\n {(labelText || contextualHelp) && (\n <Field.Label>\n <Label {...labelProps} contextualHelp={contextualHelp}>\n {labelText}\n </Label>\n </Field.Label>\n )}\n <Field.Control>\n <div\n {...gridProps}\n ref={ref}\n className={styles['sapphire-tag-group']}\n >\n {Array.from(state.collection).map((item) => (\n <Tag\n key={item.key}\n item={item}\n state={state}\n hasError={item.props.hasError}\n // TODO when moving to \"core\": Remove `originalOnRemove` from here & remove support for `onRemove` prop.\n // Always allow removing if `onRemove` was provided, for backwards compatibility\n // Allow removal of the tag item if a removal handler is provided\n allowsRemoving={!!originalOnRemove || !!item.props.onRemove}\n />\n ))}\n </div>\n </Field.Control>\n {(note || errorMessage) &&\n (errorMessage ? (\n <Field.Footer>\n <Field.Note variant=\"error\">{errorMessage}</Field.Note>\n </Field.Footer>\n ) : (\n <Field.Footer>{note}</Field.Footer>\n ))}\n </Field.Context>\n </Field>\n );\n}\n","import { Item } from '@react-stately/collections';\nimport { ItemProps } from '@react-types/shared';\n\nexport interface TagItemProps<T> extends ItemProps<T> {\n /**\n * Shows error icon.\n * @default 'false'\n */\n hasError?: boolean;\n\n /**\n * This function is called when the tag is being removed, either through\n * clicking the \"X\" button or by any supported key combination.\n *\n * @default false\n *\n * @note If the `TagGroup` has `onRemove` prop, that implementation will take\n * precedence over this function.\n *\n * @note If the `TagItem` is disabled, this function will not be called.\n */\n onRemove?: () => void;\n}\n\nconst TagItem = Item as <T>(props: TagItemProps<T>) => JSX.Element;\n\nexport { TagItem };\n","import React, { useRef } from 'react';\nimport { useDateSegment } from '@react-aria/datepicker';\nimport { DateSegment as DateSegmentType } from '@react-stately/datepicker';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport clsx from 'clsx';\nimport { DateSegmentProps } from '@danske/sapphire-react';\n\nexport const TimeSegment = ({ segment, state }: DateSegmentProps) =>\n segment.type === 'hour' ||\n segment.type === 'minute' ||\n segment.type === 'dayPeriod' ? (\n <EditableSegment segment={segment} state={state}></EditableSegment>\n ) : (\n <SeparatorSegment segment={segment} />\n );\nconst SeparatorSegment = ({ segment }: { segment: DateSegmentType }) => (\n <span\n aria-hidden=\"true\"\n className={clsx(\n styles['sapphire-date-field__segment'],\n styles['sapphire-date-field__segment--separator']\n )}\n >\n {segment.text}\n </span>\n);\n\nconst EditableSegment = ({ segment, state }: DateSegmentProps) => {\n const ref = useRef(null);\n const { segmentProps } = useDateSegment(segment, state, ref);\n\n return (\n <div\n {...segmentProps}\n style={segmentProps.style}\n ref={ref}\n className={clsx(styles['sapphire-date-field__segment'], {\n [styles['sapphire-date-field__segment--filled']]:\n !segment.isPlaceholder,\n })}\n >\n {segment.text}\n </div>\n );\n};\n","import da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nexport default {\n 'da-DK': da,\n 'en-US': en,\n 'de-DE': de,\n 'fi-FI': fi,\n 'nb-NO': no,\n 'pl-PL': pl,\n 'sv-SE': se,\n};\n","import React from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport {\n SapphireStyleProps,\n useThemeCheck,\n Field,\n Label,\n Icon,\n IconButton,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { AriaTimeFieldProps, useTimeField } from '@react-aria/datepicker';\nimport { ForwardedRef, forwardRef, RefObject, ReactNode } from 'react';\nimport { TimeValue } from 'react-aria-components';\nimport {\n useTimeFieldState,\n DateSegment as DateSegmentType,\n} from '@react-stately/datepicker';\nimport { useLocale, useMessageFormatter } from '@react-aria/i18n';\nimport { TimeSegment } from './TimeFieldSegment';\nimport { CloseOutline } from '@danske/sapphire-icons/react';\nimport { useObjectRef } from '@react-aria/utils';\nimport intlMessages from '../i18n';\n\nconst isAnySegmentModified = (segments: DateSegmentType[]) =>\n segments\n .map(({ type, isPlaceholder }) => {\n // type \"literal\" refers to the segment containing the non-editable separator\n return type !== 'literal' && !isPlaceholder;\n })\n .some((isModified) => isModified);\n\nexport type TimeFieldProps<T extends TimeValue> = Pick<\n AriaTimeFieldProps<T>,\n // TODO: when this is moved to `core`, we can replace the picked props with `ValueBasePropsKeys`\n | 'isDisabled'\n | 'isRequired'\n | 'isReadOnly'\n | 'label'\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'onFocus'\n | 'onBlur'\n | 'shouldForceLeadingZeros'\n> &\n SapphireStyleProps &\n GlobalDomAttributes & {\n /**\n * @default 'lg'\n */\n size?: 'lg' | 'md';\n /**\n * To visually indicate if this field is required or optional.\n * @default false\n */\n necessityIndicator?: boolean;\n /**\n * Places the label either above (default) or on the side of the control.\n * @default 'above'\n */\n labelPlacement?: 'side' | 'above';\n /**\n * If it should hide the \"clear\" button when input is not empty.\n *\n * @default false\n */\n noClearButton?: boolean;\n /**\n * Whether the input should render as having an error and an error message.\n * This also sets the appropriate `aria` attributes on the input.\n *\n * A `boolean` sets the error state. Can be paired with the \"note\" prop with Field.Note variant=\"error\"\n * A `ReactNode` sets the error state with an additional error message.\n *\n * **An error message is strongly recommended because an error should\n * always have an explanation about how to fix it.**\n */\n error?: boolean | ReactNode;\n /**\n * A note to show below the input.\n * If the input has an error message, this note will be replaced by that.\n * Use {@Link Field.Note} to render the note.\n */\n note?: ReactNode;\n /**\n * A HelpButton to render next to the label.\n */\n contextualHelp?: ReactNode;\n };\n\nfunction _TimeField<T extends TimeValue>(\n {\n // TODO many other props\n size = 'lg',\n noClearButton = false,\n error,\n note,\n contextualHelp,\n necessityIndicator = false,\n ...otherProps\n }: TimeFieldProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) {\n useThemeCheck();\n\n const timeFieldRef = useObjectRef(ref);\n const { locale } = useLocale();\n const formatMessage = useMessageFormatter(intlMessages);\n\n const state = useTimeFieldState({\n ...otherProps,\n locale,\n isInvalid: error ? true : undefined,\n });\n\n const { fieldProps, labelProps } = useTimeField(\n { ...otherProps },\n state,\n timeFieldRef\n );\n\n return (\n <Field {...otherProps} ref={ref} size={size} noShrink>\n <Field.Context>\n {otherProps.label && (\n <Field.Label>\n <Label\n {...labelProps}\n size={size}\n necessityIndicator={\n otherProps.isRequired && necessityIndicator\n ? 'required'\n : !otherProps.isRequired && necessityIndicator\n ? 'optional'\n : undefined\n }\n contextualHelp={contextualHelp}\n >\n {otherProps.label}\n </Label>\n </Field.Label>\n )}\n </Field.Context>\n <Field.Control>\n <div\n className={clsx(styles['sapphire-date-field'], {\n [styles['sapphire-date-field--error']]: state.isInvalid,\n [styles['sapphire-date-field--no-clear-button']]: noClearButton,\n [styles['sapphire-date-field--no-calendar']]: true,\n [styles['sapphire-date-field--md']]: size === 'md',\n })}\n >\n <div\n {...fieldProps}\n className={styles['sapphire-date-field__input']}\n ref={timeFieldRef}\n >\n {state.segments.map((segment, i) => (\n <TimeSegment key={i} segment={segment} state={state} />\n ))}\n </div>\n {!noClearButton &&\n !otherProps.isReadOnly &&\n !otherProps.isDisabled &&\n isAnySegmentModified(state.segments) && (\n <IconButton\n aria-label={formatMessage('clear')}\n onPress={() =>\n state.segments.forEach((segment) =>\n state.clearSegment(segment.type)\n )\n }\n size={size === 'md' ? 'sm' : 'md'}\n UNSAFE_className={clsx(\n styles['sapphire-date-field__button'],\n styles['sapphire-date-field__button--clear']\n )}\n >\n <Icon>\n <CloseOutline />\n </Icon>\n </IconButton>\n )}\n </div>\n </Field.Control>\n {(!!error && typeof error !== 'boolean') || note ? (\n <Field.Footer>\n {!!error && typeof error !== 'boolean' ? (\n <Field.Note variant=\"error\">{error}</Field.Note>\n ) : note ? (\n note\n ) : null}\n </Field.Footer>\n ) : null}\n </Field>\n );\n}\n\nexport const TimeField = forwardRef(_TimeField) as <T extends TimeValue>(\n props: TimeFieldProps<T> & { ref?: RefObject<HTMLDivElement> }\n) => React.ReactElement;\n"],"names":["React","useContext","forwardRef","useThemeCheck","useSapphireStyleProps","useObjectRef","FocusScope","DisclosureGroup","__spreadProps","__spreadValues","filterDOMProps","clsx","styles","hasAllowedCustomSidePadding","__objRest","Button","Typography","Icon","ChevronDown","useFocusManager","useEvent","Disclosure","DisclosurePanel","Warning","CheckmarkOutline","Error2","Information","alertStyles","useMemo","useLocale","da","en","de","fi","no","pl","se","useMessageFormatter","intlMessages","useRef","useFocusableRef","useComboBoxState","useComboBox","ListBoxPopover","useState","useEffect","useResizeObserver","createContext","useContextProps","RACBreadcrumbsContext","CollectionRendererContext","useBreadcrumbs","CollectionBuilder","Collection","mergeProps","ChevronRight","Menu","IconButton","OverflowMenuHorizontal","MenuItem","TooltipIfNeeded","mergeRefs","CollectionNode","createLeafComponent","PressResponder","useId","useHover","useDrop","useButton","useFocusRing","useClipboard","Pressable","Upload","useControlledState","useEffectEvent","PopoverTrigger","ButtonGroup","VisuallyHidden","ToggleButton","ChevronUp","Flex","cloneElement","tokens","getWrappedElement","label","useField","Field","Label","Add","Subtract","useLayoutEffect","useCallback","useNumberFieldState","useNumberField","useImperativeHandle","createFocusableRef","textFieldStyles","Separator","useMatchedBreakpoints","Panel","ModalLayout","ChevronLeft","View","useFocusWithin","ThemeRoot","CloseLarge","buttonStyles","Transition","Sidebar","useListBoxSection","useScrollCheck","useProgressBar","RACSlider","RACSliderTrack","RACSliderThumb","useTag","FocusRing","Close","useListState","useTagGroup","Item","useDateSegment","useTimeFieldState","useTimeField","CloseOutline"],"mappings":"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"}