@danske/sapphire-react-lab 0.84.2 → 0.86.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/ToggleButton/src/ToggleButton.tsx","../../src/Calendar/i18n/index.ts","../../src/Calendar/src/CalendarButtons.tsx","../../src/Calendar/src/utils.ts","../../src/Calendar/src/CalendarDaysGrid.tsx","../../src/Calendar/src/CalendarMonthOrYearCell.tsx","../../src/Calendar/src/useCustomDurationCalendarGrid.tsx","../../src/Calendar/src/CalendarMonthsGrid.tsx","../../src/Calendar/src/CalendarYearsGrid.tsx","../../src/Calendar/src/useSapphireCalendarState.tsx","../../src/Calendar/src/CalendarHeader.tsx","../../src/Calendar/src/CalendarPageAnimation.tsx","../../src/Calendar/src/Calendar.tsx","../../src/Calendar/src/useRangeCalendarState.ts","../../src/Calendar/src/RangeCalendar.tsx","../../src/Spinner/src/Spinner.tsx","../../src/NotificationBadge/src/NotificationBadge.tsx","../../src/Filtering/src/FilterDropdown.tsx","../../src/DateField/src/utils/placeholders.ts","../../src/DateField/src/utils/segments.ts","../../src/DateField/src/DateSegment.tsx","../../src/DateField/src/DateFieldButton.tsx","../../src/DateField/i18n/index.ts","../../src/DateField/src/DateInput.tsx","../../src/DateField/src/DateField.tsx","../../src/DateField/src/useDateRangePickerState.ts","../../src/DateField/src/DateRangeInput.tsx","../../src/DateField/src/DateRangeField.tsx","../../src/DateField/src/helpers.ts","../../src/Avatar/src/Avatar.tsx","../../src/FeedbackMessage/src/FeedbackMessage.tsx","../../src/SearchField/src/useComboBoxState.ts","../../src/SearchField/src/SearchField.tsx","../../src/Toast/src/Toast.tsx","../../src/Toast/src/ToastRegion.tsx","../../src/Toast/src/context.ts","../../src/Toast/src/ToastProvider.tsx","../../src/Toast/src/useShowToast.ts","../../src/Accordion/src/useTreeState.ts","../../src/Accordion/src/AccordionItem.tsx","../../src/Accordion/src/Accordion.tsx","../../src/Accordion/src/AccordionHeading.tsx","../../src/Accordion/index.ts","../../src/Typography/src/Heading.tsx","../../src/Typography/src/Subheading.tsx","../../src/Typography/src/Body.tsx","../../src/Typography/src/Caption.tsx","../../src/Typography/index.ts","../../src/Fieldset/src/Fieldset.tsx","../../src/FileDropzone/src/FileTrigger.tsx","../../src/FileDropzone/src/utils.ts","../../src/FileDropzone/i18n/index.ts","../../src/FileDropzone/src/FileDropzone.tsx","../../src/AlertDialog/src/AlertDialog.tsx","../../src/NumberField/src/useSapphireNumberField.ts","../../src/NumberField/src/useAutofillStyle.ts","../../src/NumberField/i18n/index.ts","../../src/NumberField/src/StepperButton.tsx","../../src/NumberField/src/NumberField.tsx"],"sourcesContent":["import React from 'react';\nimport { useFocusableRef } from '@react-spectrum/utils';\nimport { FocusableRef, PressEvents } from '@react-types/shared';\nimport { FocusRing } from '@react-aria/focus';\nimport { mergeProps } from '@react-aria/utils';\nimport { AriaToggleButtonProps, useToggleButton } from '@react-aria/button';\nimport { useHover } from '@react-aria/interactions';\nimport { useToggleState } from '@react-stately/toggle';\nimport clsx from 'clsx';\n\nimport styles from '@danske/sapphire-css/components/button/button.module.css';\n\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n usePreventTouchEnd,\n Icon,\n} from '@danske/sapphire-react';\n\nexport type SapphireToggleButtonProps = Omit<\n AriaToggleButtonProps<'button'>,\n 'elementType' | 'type'\n> &\n SapphireStyleProps &\n PressEvents & {\n /**\n * @default 'medium'\n */\n size?: 'large' | 'medium' | 'small';\n onChange?: (selected: boolean) => void;\n isSelected?: boolean;\n defaultSelected?: boolean;\n } & (ButtonWithIconProps | ButtonWithoutIconProps);\n\n// TODO: use ButtonWithIconProps and ButtonWithoutIconProps in core, when moved there\nexport interface ButtonWithIconProps {\n /**\n * The icon placed either before or after the `label`, based on `iconAlign` prop.\n * */\n icon: React.ReactNode;\n /**\n * The icon placement relative to the `label`.\n * */\n iconAlign?: 'left' | 'right';\n}\n\nexport interface ButtonWithoutIconProps {\n icon?: never;\n iconAlign?: never;\n}\n\n/**\n * A button with a toggleable `isSelected` state. By default, the selection is toggled when the\n * button is pressed, allowing user to switch between two states or modes.\n */\nexport const ToggleButton = React.forwardRef(function Button(\n {\n iconAlign = 'left',\n icon,\n size = 'medium',\n ...otherProps\n }: SapphireToggleButtonProps,\n ref: FocusableRef<HTMLButtonElement>\n) {\n useThemeCheck();\n\n const { autoFocus, isDisabled } = otherProps;\n const domRef = useFocusableRef<HTMLButtonElement>(ref);\n const { hoverProps, isHovered } = useHover({ isDisabled });\n const { styleProps } = useSapphireStyleProps(otherProps);\n\n const iconWrapper = icon && (\n <span className={clsx(styles['sapphire-button__icon'])}>\n <Icon size={size === 'small' ? 's' : size === 'medium' ? 'm' : 'l'}>\n {icon}\n </Icon>\n </span>\n );\n\n const state = useToggleState(otherProps);\n const { buttonProps, isPressed } = useToggleButton(otherProps, state, domRef);\n usePreventTouchEnd(domRef);\n\n return (\n <FocusRing focusRingClass={clsx(styles['is-focus'])} autoFocus={autoFocus}>\n <button\n {...mergeProps(buttonProps, hoverProps)}\n ref={domRef}\n style={{ ...styleProps.style }}\n className={clsx(\n styles['sapphire-button'],\n styles['js-focus'],\n styles['js-hover'],\n {\n [styles['is-active']]: isPressed,\n [styles['is-hover']]: isHovered,\n [styles['is-disabled']]: isDisabled,\n [styles['sapphire-button--small']]: size === 'small',\n [styles['sapphire-button--large']]: size === 'large',\n [styles['sapphire-button--with-left-icon']]:\n icon && iconAlign === 'left',\n [styles['sapphire-button--with-right-icon']]:\n icon && iconAlign === 'right',\n },\n state.isSelected\n ? styles['sapphire-button--selected']\n : styles['sapphire-button--unselected'],\n styleProps.className\n )}\n >\n {iconAlign === 'left' && iconWrapper}\n {otherProps.children}\n {iconAlign === 'right' && iconWrapper}\n </button>\n </FocusRing>\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 'no-NO': no,\n 'pl-PL': pl,\n 'sv-SE': se,\n};\n","import React, { DOMAttributes, ForwardedRef, HTMLAttributes } from 'react';\nimport clsx from 'clsx';\nimport { FocusRing } from '@react-aria/focus';\n\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\nimport { useHover } from '@react-aria/interactions';\nimport { mergeProps } from '@react-aria/utils';\n\ninterface CalendarButtonProps extends DOMAttributes<HTMLButtonElement> {\n isDisabled?: boolean;\n isSelected?: boolean;\n hasCurrentIndicator?: boolean;\n tabIndex?: HTMLAttributes<HTMLButtonElement>['tabIndex'];\n isInGridCell?: boolean;\n}\n\nexport const CalendarButton = React.forwardRef(function SapphireCalendarButton(\n {\n children,\n className = '',\n isSelected,\n isDisabled,\n isInGridCell,\n hasCurrentIndicator,\n ...otherProps\n }: CalendarButtonProps & { className?: string },\n forwardedRef: ForwardedRef<HTMLButtonElement>\n) {\n const { hoverProps, isHovered } = useHover({ isDisabled });\n const ElementType: 'span' | 'button' = isInGridCell ? 'span' : 'button';\n\n return (\n <FocusRing focusRingClass={styles['is-focus']}>\n <ElementType\n ref={forwardedRef}\n role=\"button\"\n {...(ElementType === 'button' ? ({ type: 'button' } as const) : {})}\n {...mergeProps(otherProps, hoverProps)}\n className={clsx(\n className,\n styles['js-focus'],\n styles['js-hover'],\n styles['sapphire-calendar__button'],\n {\n [styles[`sapphire-calendar__button--selected`]]: isSelected,\n [styles['sapphire-calendar__button--current']]: hasCurrentIndicator,\n [styles[`is-hover`]]: isHovered,\n [styles[`is-disabled`]]: isDisabled,\n }\n )}\n >\n <span className={styles['sapphire-calendar__button-text']}>\n {children}\n </span>\n </ElementType>\n </FocusRing>\n );\n});\n\nexport const CalendarDayButton = React.forwardRef(\n function SapphireCalendarDayButton(\n {\n isOutsideVisibleRange,\n rangeHighlight,\n ...props\n }: CalendarButtonProps & {\n rangeHighlight:\n | { highlighted: false }\n | { highlighted: true; start?: boolean; end?: boolean };\n isOutsideVisibleRange?: boolean;\n },\n forwardedRef: ForwardedRef<HTMLButtonElement>\n ) {\n return (\n <CalendarButton\n {...props}\n isInGridCell\n className={clsx(styles['sapphire-calendar__button--day'], {\n [styles['sapphire-calendar__button--range-selection']]:\n rangeHighlight.highlighted,\n [styles['sapphire-calendar__button--range-start']]:\n rangeHighlight.highlighted && rangeHighlight.start,\n [styles['sapphire-calendar__button--range-end']]:\n rangeHighlight.highlighted && rangeHighlight.end,\n [styles['sapphire-calendar__button--selection-start']]:\n rangeHighlight.highlighted &&\n rangeHighlight.start &&\n props.isSelected,\n [styles['sapphire-calendar__button--selection-end']]:\n rangeHighlight.highlighted &&\n rangeHighlight.end &&\n props.isSelected,\n [styles['sapphire-calendar__button--outside-month']]:\n isOutsideVisibleRange,\n })}\n ref={forwardedRef}\n />\n );\n }\n);\n","/**\n * Creates an array filled with numbers from {@param start} to {@param end}\n */\nexport function range(start: number, end: number): number[] {\n return Array(end - start + 1)\n .fill(null)\n .map((_, index) => start + index);\n}\n\n/**\n * Converts an array into chunks\n * @returns iterator of the chunks\n */\nexport function* chunks<T>(\n array: T[],\n chunkSize: number\n): Generator<T[], void> {\n for (let i = 0; i < array.length; i += chunkSize) {\n yield array.slice(i, i + chunkSize);\n }\n}\n\n/**\n * Uppercases the first letter in the string\n * @param sentence\n * @returns sentence with first letter upper cased\n */\nexport const sentenceCase = (sentence: string): string =>\n sentence.slice(0, 1).toLocaleUpperCase() + sentence.slice(1);\n","import React, { ComponentProps, useMemo } from 'react';\nimport clsx from 'clsx';\nimport {\n AriaCalendarCellProps,\n AriaCalendarGridProps,\n useCalendarCell,\n useCalendarGrid,\n} from '@react-aria/calendar';\nimport { CalendarState, RangeCalendarState } from '@react-stately/calendar';\nimport {\n CalendarDate,\n DateValue,\n endOfMonth,\n getDayOfWeek,\n getLocalTimeZone,\n getWeeksInMonth,\n isSameDay,\n isSameMonth,\n startOfMonth,\n startOfWeek,\n today,\n} from '@internationalized/date';\nimport {\n useDateFormatter,\n useLocale,\n useMessageFormatter,\n} from '@react-aria/i18n';\nimport intlMessages from '../i18n';\n\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\nimport { CalendarDayButton } from './CalendarButtons';\nimport { sentenceCase } from './utils';\n\nexport function CalendarDaysGrid({\n state,\n startDate = state.visibleRange.start,\n showWeekNumbers,\n ...props\n}: {\n state: CalendarState | RangeCalendarState;\n startDate?: CalendarDate;\n showWeekNumbers?: boolean;\n} & AriaCalendarGridProps): JSX.Element {\n const { locale } = useLocale();\n const { gridProps, headerProps } = useCalendarGrid(\n {\n ...props,\n startDate,\n endDate: endOfMonth(startDate),\n },\n state\n );\n const weeksInMonth = getWeeksInMonth(startDate, locale);\n\n // `weekDays` is returned from useCalendarGrid, but there is currently no option\n // for customizing weekday format. So the corresponding piece of code is copy-pasted\n // from useCalendarGrid, just to use \"short\" format instead of \"narrow\"\n const dayFormatter = useDateFormatter({\n weekday: 'short',\n timeZone: state.timeZone,\n });\n const weekDays = useMemo(() => {\n const weekStart = startOfWeek(today(state.timeZone), locale);\n return [...new Array(7).keys()].map((index) => {\n const date = weekStart.add({ days: index });\n const dateDay = date.toDate(state.timeZone);\n return dayFormatter.format(dateDay);\n });\n }, [locale, state.timeZone, dayFormatter]);\n\n return (\n <table\n {...gridProps}\n className={clsx(styles['sapphire-calendar__table'], {\n [styles['sapphire-calendar__table--with-week-numbers']]:\n showWeekNumbers,\n })}\n >\n <thead {...headerProps}>\n <tr>\n {showWeekNumbers && (\n <th\n className={styles['sapphire-calendar__table-head-cell']}\n aria-hidden=\"true\"\n >\n <span className={styles['sapphire-calendar__week-number']}>\n #\n </span>\n </th>\n )}\n {weekDays.map((day, index) => (\n <th\n key={index}\n className={styles['sapphire-calendar__table-head-cell']}\n >\n <abbr className={styles['sapphire-calendar__day-of-week']}>\n {sentenceCase(day)}\n </abbr>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {[...new Array(weeksInMonth).keys()].map((weekIndex) => {\n return (\n <tr\n className={styles['sapphire-calendar__table-body-row']}\n key={weekIndex}\n >\n {showWeekNumbers && (\n <CalendarWeekNumberCell\n date={startDate.add({ days: 7 * weekIndex })}\n />\n )}\n {state.getDatesInWeek(weekIndex, startDate).map((date, i) =>\n date ? (\n <CalendarCell\n currentMonth={startDate}\n // by passing date.toString() instead of index, we make sure the cell\n // is remounted as we navigate between months. That prevents awkward\n // color transition if the same day-of-the-month is highlighted in one month\n // but not the other.\n key={date.toString()}\n state={state}\n date={date}\n />\n ) : (\n <td key={i} />\n )\n )}\n </tr>\n );\n })}\n <tr></tr>\n </tbody>\n </table>\n );\n}\nfunction CalendarWeekNumberCell({ date }: { date: DateValue }) {\n const weekNumber = getWeekNumber(date);\n const formatMessage = useMessageFormatter(intlMessages);\n return (\n <th\n className={styles['sapphire-calendar__table-body-cell']}\n role=\"rowheader\"\n aria-label={formatMessage('week', { weekNumber })}\n >\n <span className={styles['sapphire-calendar__week-number']}>\n {weekNumber}\n </span>\n </th>\n );\n}\n\nfunction CalendarCell({\n state,\n date,\n currentMonth,\n}: {\n state: CalendarState | RangeCalendarState;\n currentMonth: CalendarDate;\n} & AriaCalendarCellProps) {\n const ref = React.useRef(null);\n const { locale } = useLocale();\n const sameMonth = isSameMonth(date, currentMonth);\n const {\n cellProps,\n buttonProps,\n isSelected: isInSelection,\n isDisabled,\n formattedDate,\n isUnavailable,\n } = useCalendarCell({ date, isDisabled: !sameMonth }, state, ref);\n\n const highlightedRange =\n 'highlightedRange' in state ? state.highlightedRange : null;\n\n const isSelected =\n isInSelection &&\n // if we have a highlighted range, only start and end of the range are styled selected.\n (!highlightedRange ||\n isSameDay(highlightedRange.start, date) ||\n isSameDay(highlightedRange.end, date));\n\n return (\n <td {...cellProps} className={styles['sapphire-calendar__table-body-cell']}>\n <CalendarDayButton\n {...buttonProps}\n ref={ref}\n isSelected={isSelected}\n isDisabled={isDisabled || isUnavailable}\n hasCurrentIndicator={today(state.timeZone).compare(date) === 0}\n isOutsideVisibleRange={!isSameMonth(currentMonth, date)}\n rangeHighlight={\n highlightedRange\n ? getRangeHighlight({ date, highlightedRange, locale })\n : { highlighted: false }\n }\n >\n {formattedDate}\n </CalendarDayButton>\n </td>\n );\n}\n\n/**\n * Given a date and a highlighted range, returns the range highlight state for that date.\n * Note that \"start\" doesn't simply mean start of the range, but means range start **style**,\n * which applies to some dates inside the range as well. A css-only solution could also cover\n * this, but it would require `:has()` selector which is not widely supported at the time of writing\n * this.\n */\nconst getRangeHighlight = ({\n date,\n highlightedRange,\n locale,\n}: {\n date: DateValue;\n highlightedRange: RangeCalendarState['highlightedRange'];\n locale: string;\n}): ComponentProps<typeof CalendarDayButton>['rangeHighlight'] => {\n const isInSelection =\n highlightedRange.start.compare(date) <= 0 &&\n highlightedRange.end.compare(date) >= 0;\n const rangeIsNotASingleDay =\n highlightedRange &&\n !isSameDay(highlightedRange.start, highlightedRange.end);\n const isStartOfWeek = getDayOfWeek(date, locale) === 0;\n const isEndOfWeek = getDayOfWeek(date, locale) === 6;\n const isStartOfMonth = isSameDay(date, startOfMonth(date));\n const isEndOfMonth = isSameDay(date, endOfMonth(date));\n const isStartOfRange =\n highlightedRange && isSameDay(highlightedRange?.start, date);\n const isEndOfRange =\n highlightedRange && isSameDay(highlightedRange?.end, date);\n\n const highlighted = isInSelection && rangeIsNotASingleDay;\n return {\n highlighted,\n start: highlighted && (isStartOfWeek || isStartOfMonth || isStartOfRange),\n end: highlighted && (isEndOfWeek || isEndOfMonth || isEndOfRange),\n };\n};\n\n/**\n * Almost copied from https://weeknumber.com/how-to/javascript\n * No corresponding API found in @internationalized/date package, at the time\n * of writing this.\n * Caveat: this code is based on built-in Date object, and may not be\n * calendar-agnostic. We don't really care about supporting different types\n * of calendar, so it should be fine for now. But we can look into improving\n * this if needed.\n */\nconst getWeekNumber = function (dateValue: DateValue) {\n const date = new Date(dateValue.toDate(getLocalTimeZone()));\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n const week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (\n 1 +\n Math.round(\n ((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7\n )\n );\n};\n","import React, { useEffect } from 'react';\nimport {\n isSameMonth,\n CalendarDate,\n DateField,\n isSameYear,\n today,\n} from '@internationalized/date';\nimport { usePress } from '@react-aria/interactions';\nimport { focusWithoutScrolling, mergeProps } from '@react-aria/utils';\n\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\nimport { SapphireCalendarState } from './useSapphireCalendarState';\nimport { CalendarButton } from './CalendarButtons';\n\nconst isSame = { month: isSameMonth, year: isSameYear } as const;\n\nexport function CalendarMonthOrYearCell({\n date,\n state,\n isDisabled,\n field,\n children,\n}: {\n date: CalendarDate;\n field: Extract<DateField, 'month' | 'year'>;\n state: SapphireCalendarState;\n isDisabled?: boolean;\n children: React.ReactNode;\n}): JSX.Element {\n const ref = React.useRef(null);\n const isFocused = state.focusedDate[field] === date[field];\n\n let tabIndex: number | undefined;\n if (!isDisabled) {\n tabIndex = isSame[field](date, state.focusedDate) ? 0 : -1;\n }\n\n useEffect(() => {\n if (isFocused && ref.current) {\n focusWithoutScrolling(ref.current);\n }\n }, [isFocused, ref]);\n\n const { pressProps } = usePress({\n isDisabled: state.isDisabled || isDisabled,\n onPress: () => {\n state.setFocusedDate(date);\n if (!state.isReadOnly) {\n state.narrowView();\n }\n },\n });\n const buttonProps = mergeProps(pressProps, {\n onFocus() {\n if (!isDisabled) {\n state.setFocusedDate(date);\n }\n },\n tabIndex,\n role: 'button',\n 'aria-disabled': isDisabled || undefined,\n });\n return (\n <td\n className={styles['sapphire-calendar__table-body-cell']}\n role=\"gridcell\"\n >\n <CalendarButton\n ref={ref}\n {...buttonProps}\n isInGridCell\n isSelected={state.value && isSame[field](state.value, date)}\n isDisabled={state.isDisabled || isDisabled}\n hasCurrentIndicator={isSame[field](date, today(state.timeZone))}\n >\n {children}\n </CalendarButton>\n </td>\n );\n}\n","import { CalendarState } from '@react-stately/calendar';\nimport { DateDuration } from '@internationalized/date';\nimport React from 'react';\nimport { DOMAttributes } from '@react-types/shared';\nimport { useLocale } from '@react-aria/i18n';\n\n/**\n * A little generalized but also simplified version of useCalendarGrid, to be used for months and\n * years view. The keyboard navigation in useCalendarGrid is around the assumption of grid cells\n * representing days, but not other durations like month or year.\n *\n * NOTE: only simple arrow key navigation is supported in this hook, and Home/End PageUp/PageDown\n * are left out to keep it simple.\n */\nexport function useCustomDurationCalendarGrid(\n {\n cellsDuration,\n perRow = 3,\n }: {\n cellsDuration: keyof DateDuration;\n perRow?: number;\n },\n state: CalendarState\n): { gridProps: DOMAttributes } {\n const { direction } = useLocale();\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault();\n state.selectFocusedDate();\n break;\n case 'ArrowLeft':\n e.preventDefault();\n e.stopPropagation();\n if (direction === 'rtl') {\n state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: 1 }));\n } else {\n state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: -1 }));\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n e.stopPropagation();\n state.setFocusedDate(\n state.focusedDate.add({ [cellsDuration]: -perRow })\n );\n break;\n case 'ArrowRight':\n e.preventDefault();\n e.stopPropagation();\n if (direction === 'rtl') {\n state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: -1 }));\n } else {\n state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: 1 }));\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\n e.stopPropagation();\n state.setFocusedDate(\n state.focusedDate.add({ [cellsDuration]: perRow })\n );\n break;\n }\n };\n const gridProps = {\n role: 'grid',\n 'aria-readonly': state.isReadOnly || undefined,\n 'aria-disabled': state.isDisabled || undefined,\n onKeyDown,\n onFocus: () => state.setFocused(true),\n onBlur: () => state.setFocused(false),\n };\n return { gridProps };\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport { useDateFormatter } from '@react-aria/i18n';\nimport { endOfMonth, startOfMonth } from '@internationalized/date';\n\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\nimport { chunks, range, sentenceCase } from './utils';\nimport { CalendarMonthOrYearCell } from './CalendarMonthOrYearCell';\nimport { SapphireCalendarState } from './useSapphireCalendarState';\nimport { useCustomDurationCalendarGrid } from './useCustomDurationCalendarGrid';\n\nexport function CalendarMonthsGrid({\n state,\n}: {\n state: SapphireCalendarState;\n}): JSX.Element {\n const formatter = useDateFormatter({\n month: 'long',\n timeZone: state.timeZone,\n });\n\n const numMonths = state.focusedDate.calendar.getMonthsInYear(\n state.focusedDate\n );\n const months = range(1, numMonths).map((month) =>\n formatter.format(state.focusedDate.set({ month }).toDate(state.timeZone))\n );\n const monthRows = [...chunks(months, 3)];\n\n const { gridProps } = useCustomDurationCalendarGrid(\n { cellsDuration: 'months' },\n state\n );\n\n return (\n <table\n className={clsx(\n styles['sapphire-calendar__table'],\n styles['sapphire-calendar__table--month-year']\n )}\n {...gridProps}\n >\n <tbody>\n {monthRows.map((currentRowMonths, rowIndex) => (\n <tr\n key={rowIndex}\n className={styles['sapphire-calendar__table-body-row']}\n >\n {currentRowMonths.map((month, index) => {\n const newFocusedDate = state.focusedDate.set({\n month: months.indexOf(month) + 1,\n });\n\n // Since validation is only about min and max dates, we just\n // check the edges of the period\n const isMonthDisabled =\n state.isInvalid(startOfMonth(newFocusedDate)) &&\n state.isInvalid(endOfMonth(newFocusedDate));\n return (\n <CalendarMonthOrYearCell\n key={index}\n date={newFocusedDate}\n field={'month'}\n isDisabled={isMonthDisabled}\n state={state}\n >\n {sentenceCase(month)}\n </CalendarMonthOrYearCell>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport { endOfYear, startOfYear } from '@internationalized/date';\n\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\nimport { chunks, range } from './utils';\nimport { CalendarMonthOrYearCell } from './CalendarMonthOrYearCell';\nimport { SapphireCalendarState } from './useSapphireCalendarState';\nimport { useCustomDurationCalendarGrid } from './useCustomDurationCalendarGrid';\n\nexport function CalendarYearsGrid({\n state,\n}: {\n state: SapphireCalendarState;\n}): JSX.Element {\n const years = range(\n state.visibleRange.start.year,\n state.visibleRange.end.year\n ).slice(0, 12);\n const yearRows = [...chunks(years, 3)];\n const { gridProps } = useCustomDurationCalendarGrid(\n { cellsDuration: 'years' },\n state\n );\n return (\n <table\n className={clsx(\n styles['sapphire-calendar__table'],\n styles['sapphire-calendar__table--month-year']\n )}\n {...gridProps}\n >\n <tbody>\n {yearRows.map((currentRowYears, rowIndex) => (\n <tr\n key={rowIndex}\n className={styles['sapphire-calendar__table-body-row']}\n >\n {currentRowYears.map((year, index) => {\n const newFocusedDate = state.focusedDate.set({\n year: year,\n });\n // Since validation is only about min and max dates, we just\n // check the edges of the period\n const isYearDisabled =\n state.isInvalid(startOfYear(newFocusedDate)) &&\n state.isInvalid(endOfYear(newFocusedDate));\n return (\n <CalendarMonthOrYearCell\n key={index}\n date={newFocusedDate}\n field={'year'}\n isDisabled={isYearDisabled}\n state={state}\n >\n {year}\n </CalendarMonthOrYearCell>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n","import { DateDuration, DateValue } from '@internationalized/date';\nimport {\n CalendarState,\n CalendarStateOptions,\n useCalendarState,\n} from '@react-stately/calendar';\nimport { useControlledState } from '@react-stately/utils';\n\nexport type CalendarView = 'days' | 'months' | 'years';\nconst viewToVisibleDuration: Record<CalendarView, DateDuration> = {\n days: {\n months: 1,\n },\n months: {\n years: 1,\n },\n years: {\n years: 12,\n },\n};\n\nexport interface SapphireCalendarStateOptions<T extends DateValue>\n extends CalendarStateOptions<T> {\n /**\n * Controls the calendar's view (day, month, year).\n */\n view?: CalendarView;\n\n /**\n * The view of the calendar when it first mounts (uncontrolled).\n */\n defaultView?: CalendarView;\n /**\n * Handler that is called when the view is changed.\n */\n onViewChange?: (value: CalendarView) => void;\n}\n\nexport type SapphireCalendarState = CalendarState & {\n view: CalendarView;\n narrowView: () => void;\n broadenView: () => void;\n canBroadenView: boolean;\n};\n\nexport function useSapphireCalendarState<T extends DateValue>({\n view: viewProp,\n defaultView = 'days',\n onViewChange,\n ...otherOptions\n}: SapphireCalendarStateOptions<T> &\n CalendarStateOptions<T>): SapphireCalendarState {\n const [view, setView] = useControlledState<CalendarView>(\n viewProp,\n defaultView,\n onViewChange\n );\n const state = useCalendarState({\n ...otherOptions,\n visibleDuration: viewToVisibleDuration[view],\n });\n const broadenView = () => {\n switch (view) {\n case 'days':\n return setView('months');\n case 'months':\n return setView('years');\n }\n };\n const narrowView = () => {\n switch (view) {\n case 'months':\n return setView('days');\n case 'years':\n return setView('months');\n }\n };\n const canDrillUp = !state.isReadOnly && ['days', 'months'].includes(view);\n return {\n ...state,\n view: view,\n narrowView,\n broadenView,\n canBroadenView: canDrillUp,\n };\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport { PressProps } from '@react-aria/interactions';\nimport { IconButton } from '@danske/sapphire-react';\nimport { ChevronLeft, ChevronRight } from '@danske/sapphire-icons/react';\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\n/**\n * Calendar header shown above the grid.\n * @internal\n */\nexport function CalendarHeader({\n isLeft,\n isRight,\n children,\n prevButtonProps,\n nextButtonProps,\n}: {\n children: React.ReactNode;\n prevButtonProps?: PressProps;\n nextButtonProps?: PressProps;\n isLeft?: boolean;\n isRight?: boolean;\n}) {\n return (\n <div\n className={clsx(styles['sapphire-calendar__header'], {\n [styles['sapphire-calendar__header--left']]: isLeft,\n [styles['sapphire-calendar__header--right']]: isRight,\n })}\n >\n <div className={styles['sapphire-calendar__header-prev-month']}>\n <IconButton\n {...prevButtonProps}\n variant=\"tertiary\"\n appearance=\"ghost\"\n size=\"large\"\n aria-label=\"Previous\"\n >\n <ChevronLeft />\n </IconButton>\n </div>\n <div className={styles['sapphire-calendar__header-title']}>\n {children}\n </div>\n <div className={styles['sapphire-calendar__header-next-month']}>\n <IconButton\n {...nextButtonProps}\n variant=\"tertiary\"\n appearance=\"ghost\"\n size=\"large\"\n aria-label=\"Next\"\n >\n <ChevronRight />\n </IconButton>\n </div>\n </div>\n );\n}\n","import React, { ReactNode, useState } from 'react';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\nimport { CalendarState } from '@react-stately/calendar';\nimport clsx from 'clsx';\n\nexport function CalendarPageAnimation({\n children,\n state: { direction, key },\n}: {\n children: ReactNode;\n state: CalendarAnimationState;\n}) {\n return (\n <TransitionGroup\n className={clsx(\n styles['sapphire-calendar__grid-page-animation'],\n styles[`sapphire-calendar__grid-page-animation--${direction}`]\n )}\n >\n <CSSTransition\n key={key}\n addEndListener={(node, done) => {\n // Using addEndListener, to avoid passing `timeout` which we can't easily know in js\n node.addEventListener('transitionend', done, false);\n }}\n unmountOnExit\n classNames={{\n enter: styles['enter'],\n enterActive: styles['enter-active'],\n exit: styles['exit'],\n exitActive: styles['exit-active'],\n }}\n >\n {children}\n </CSSTransition>\n </TransitionGroup>\n );\n}\n\ninterface CalendarAnimationState {\n key: React.Key;\n direction: 'prev' | 'next';\n}\n\n/**\n * @param state input calendar state\n * @returns a new calendar state which has additional properties required for animation\n */\nexport function useCalendarAnimationState<\n T extends Pick<CalendarState, 'focusNextPage' | 'focusPreviousPage'>\n>(\n state: T\n): T & {\n animationState: CalendarAnimationState;\n} {\n const [animationState, setAnimationState] = useState<{\n key: number;\n direction: 'prev' | 'next';\n }>({ key: 0, direction: 'next' });\n return {\n ...state,\n focusNextPage: () => {\n setAnimationState(({ key }) => ({\n key: key + 1,\n direction: 'next',\n }));\n state.focusNextPage();\n },\n focusPreviousPage: () => {\n setAnimationState(({ key }) => ({\n key: key - 1,\n direction: 'prev',\n }));\n state.focusPreviousPage();\n },\n animationState,\n };\n}\n","import React from 'react';\nimport { createCalendar, DateValue } from '@internationalized/date';\nimport { AriaCalendarProps, useCalendar } from '@react-aria/calendar';\nimport { filterDOMProps, mergeProps } from '@react-aria/utils';\n\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n Button,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\nimport { CalendarDaysGrid } from './CalendarDaysGrid';\nimport {\n useDateFormatter,\n useLocale,\n useMessageFormatter,\n} from '@react-aria/i18n';\nimport { CalendarMonthsGrid } from './CalendarMonthsGrid';\nimport { CalendarYearsGrid } from './CalendarYearsGrid';\nimport {\n SapphireCalendarStateOptions,\n useSapphireCalendarState,\n} from './useSapphireCalendarState';\nimport clsx from 'clsx';\nimport { CalendarHeader } from './CalendarHeader';\nimport {\n CalendarPageAnimation,\n useCalendarAnimationState,\n} from './CalendarPageAnimation';\nimport intlMessages from '../i18n';\nimport { sentenceCase } from './utils';\n\nexport interface SapphireCalendarProps<T extends DateValue = DateValue>\n extends SapphireStyleProps,\n Omit<AriaCalendarProps<T>, 'validationState' | 'errorMessage'>,\n Omit<SapphireCalendarStateOptions<T>, 'createCalendar'> {\n /**\n * Whether week numbers are visible as a first column\n */\n showWeekNumbers?: boolean;\n}\n\n/**\n * Displays a calendar and allows users to select a single date. It displays a grid of days in one\n * month, by default, and the user can navigate to previous and next months. It's also possible\n * to navigate to months and years view, to quickly jump to a date far away from the focused date.\n */\nexport const Calendar = <T extends DateValue = DateValue>({\n showWeekNumbers,\n ...props\n}: Omit<SapphireCalendarProps<T>, 'locale'>): JSX.Element => {\n useThemeCheck();\n const { locale } = useLocale();\n const formatMessage = useMessageFormatter(intlMessages);\n\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n const state = useCalendarAnimationState(\n useSapphireCalendarState({\n selectionAlignment: 'start',\n ...props,\n locale,\n createCalendar,\n })\n );\n\n const monthDateFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n era:\n state.visibleRange.start.calendar.identifier === 'gregory' &&\n state.visibleRange.start.era === 'BC'\n ? 'short'\n : undefined,\n calendar: state.visibleRange.start.calendar.identifier,\n timeZone: state.timeZone,\n });\n\n const { calendarProps, prevButtonProps, nextButtonProps } = useCalendar(\n props,\n state\n );\n\n const renderGrid = () => {\n switch (state.view) {\n case 'years':\n return <CalendarYearsGrid state={state} />;\n case 'months':\n return <CalendarMonthsGrid state={state} />;\n case 'days':\n default:\n return (\n <CalendarDaysGrid state={state} showWeekNumbers={showWeekNumbers} />\n );\n }\n };\n\n const renderTitle = () => {\n switch (state.view) {\n case 'days':\n return sentenceCase(\n monthDateFormatter.format(\n state.visibleRange.start.toDate(state.timeZone)\n )\n );\n case 'months':\n return state.focusedDate.year;\n case 'years':\n return sentenceCase(formatMessage('year'));\n }\n };\n return (\n <div\n className={styles['sapphire-calendar']}\n {...mergeProps(calendarProps, filterDOMProps(props))}\n >\n <div\n className={clsx(\n styles['sapphire-calendar__table-container'],\n styleProps.className\n )}\n style={styleProps.style}\n >\n <CalendarHeader\n prevButtonProps={prevButtonProps}\n nextButtonProps={nextButtonProps}\n >\n {state.canBroadenView ? (\n <Button\n onPress={state.broadenView}\n isDisabled={state.isDisabled}\n variant=\"tertiary\"\n appearance=\"ghost\"\n size=\"large\"\n >\n {renderTitle()}\n </Button>\n ) : (\n renderTitle()\n )}\n </CalendarHeader>\n {state.view === 'days' ? (\n <CalendarPageAnimation state={state.animationState}>\n {renderGrid()}\n </CalendarPageAnimation>\n ) : (\n renderGrid()\n )}\n </div>\n </div>\n );\n};\n","import { useRangeCalendarState as originalUseRangeCalendarState } from '@react-stately/calendar';\nimport type {\n RangeCalendarStateOptions as OriginalRangeCalendarStateOptions,\n RangeCalendarState as OriginalRangeCalendarState,\n} from '@react-stately/calendar';\nimport { DateValue } from '@internationalized/date';\nimport { useRef } from 'react';\n\ntype OriginalOnChange<T extends DateValue> = NonNullable<\n OriginalRangeCalendarStateOptions<T>['onChange']\n>;\n\nexport type RangeCalendarStateOptions<\n T extends DateValue,\n P extends string\n> = Omit<OriginalRangeCalendarStateOptions<T>, 'onChange'> & {\n onChange?: (\n value: Parameters<OriginalOnChange<T>>[0],\n predefinedRange?: P\n ) => ReturnType<OriginalOnChange<T>>;\n};\n\ntype OriginalSetValue = OriginalRangeCalendarState['setValue'];\n\nexport type RangeCalendarState<P extends string> = Omit<\n OriginalRangeCalendarState,\n 'setValue'\n> & {\n setValue: (\n value: Parameters<OriginalSetValue>[0],\n predefinedRange?: P\n ) => ReturnType<OriginalSetValue>;\n};\n\n/**\n * A wrapper to allow for the onChange callback to have extra info\n **/\nexport const useRangeCalendarState = <P extends string>({\n onChange,\n ...options\n}: RangeCalendarStateOptions<DateValue, P>): RangeCalendarState<P> => {\n const lastPredefinedRange = useRef<P | undefined>(undefined);\n\n const state = originalUseRangeCalendarState({\n ...options,\n onChange: (value) => {\n onChange?.(value, lastPredefinedRange.current);\n lastPredefinedRange.current = undefined;\n },\n });\n\n return {\n ...state,\n setValue: (value, predefinedRange) => {\n lastPredefinedRange.current = predefinedRange;\n state.setValue(value);\n },\n };\n};\n","import React, { useMemo } from 'react';\nimport {\n createCalendar,\n DateValue,\n toCalendarDate,\n} from '@internationalized/date';\nimport { AriaRangeCalendarProps, useRangeCalendar } from '@react-aria/calendar';\nimport { filterDOMProps, mergeProps, useObjectRef } from '@react-aria/utils';\n\nimport {\n Button,\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\nimport { CalendarDaysGrid } from './CalendarDaysGrid';\nimport { useDateFormatter, useLocale } from '@react-aria/i18n';\nimport clsx from 'clsx';\nimport { useRangeCalendarState } from './useRangeCalendarState';\nimport type { RangeCalendarStateOptions } from './useRangeCalendarState';\nimport { CalendarHeader } from './CalendarHeader';\nimport {\n CalendarPageAnimation,\n useCalendarAnimationState,\n} from './CalendarPageAnimation';\nimport { sentenceCase } from './utils';\n\nexport interface PredefinedDateRange {\n label: string;\n dateRange: { start: DateValue; end: DateValue };\n}\n\nexport interface SapphireRangeCalendarProps<\n T extends DateValue = DateValue,\n P extends string = string\n> extends SapphireStyleProps,\n Omit<\n AriaRangeCalendarProps<T>,\n | 'validationState'\n | 'errorMessage'\n | 'allowsNonContiguousRanges'\n | 'onChange'\n > {\n /**\n * This callback also gives you the information if the selected range was a\n * predefined date according to the `predefinedRanges` prop.\n */\n onChange?: RangeCalendarStateOptions<DateValue, P>['onChange'];\n /**\n * Whether week numbers are visible as a first column\n */\n showWeekNumbers?: boolean;\n\n /**\n * Whether to show two months at the same time.\n */\n showTwoMonths?: boolean;\n\n /**\n * A set of predefined date ranges the user can more conveniently select.\n */\n predefinedRanges?: Record<P, PredefinedDateRange>;\n\n /**\n * Whether range is allowed to span unavailable dates.\n */\n allowUnavailableDatesWithinRange?: boolean;\n}\n\n/**\n * Displays a calendar and allow users to select a consecutive range of dates.\n * One or two months can be visible at the same time.\n */\nconst _RangeCalendar = function RangeCalendar<\n T extends DateValue = DateValue,\n P extends string = string\n>(\n {\n showWeekNumbers,\n showTwoMonths = false,\n allowUnavailableDatesWithinRange = false,\n predefinedRanges,\n ...props\n }: SapphireRangeCalendarProps<T, P>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>\n): JSX.Element {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n\n const ref = useObjectRef(forwardedRef);\n const { locale } = useLocale();\n const state = useCalendarAnimationState(\n useRangeCalendarState({\n ...props,\n locale,\n allowsNonContiguousRanges: allowUnavailableDatesWithinRange,\n visibleDuration: useMemo(\n () => ({ months: showTwoMonths ? 2 : 1 }),\n [showTwoMonths]\n ),\n createCalendar,\n })\n );\n const { calendarProps, prevButtonProps, nextButtonProps } = useRangeCalendar(\n props,\n state,\n ref\n );\n\n const monthDateFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n era:\n state.visibleRange.start.calendar.identifier === 'gregory' &&\n state.visibleRange.start.era === 'BC'\n ? 'short'\n : undefined,\n calendar: state.visibleRange.start.calendar.identifier,\n timeZone: state.timeZone,\n });\n\n return (\n <div\n ref={ref}\n className={clsx(styles['sapphire-calendar'], styleProps.className)}\n style={styleProps.style}\n {...mergeProps(calendarProps, filterDOMProps(props))}\n >\n <div className={styles['sapphire-calendar__tables-row']}>\n {[state.visibleRange.start]\n .concat(\n showTwoMonths ? state.visibleRange.start.add({ months: 1 }) : []\n )\n .map((startOfMonth, index, visibleMonths) => {\n const isLeft = visibleMonths.length > 1 && index === 0;\n const isRight =\n visibleMonths.length > 1 && index === visibleMonths.length - 1;\n const shouldAnimate = visibleMonths.length === 1;\n const daysGrid = (\n <CalendarDaysGrid\n startDate={startOfMonth}\n state={state}\n showWeekNumbers={showWeekNumbers}\n />\n );\n return (\n <div\n key={index}\n className={styles['sapphire-calendar__table-container']}\n >\n <CalendarHeader\n prevButtonProps={prevButtonProps}\n nextButtonProps={nextButtonProps}\n isLeft={isLeft}\n isRight={isRight}\n >\n {sentenceCase(\n monthDateFormatter.format(\n startOfMonth.toDate(state.timeZone)\n )\n )}\n </CalendarHeader>\n {shouldAnimate ? (\n <CalendarPageAnimation state={state.animationState}>\n {daysGrid}\n </CalendarPageAnimation>\n ) : (\n daysGrid\n )}\n </div>\n );\n })}\n </div>\n {predefinedRanges && (\n <div className={styles['sapphire-calendar__custom-ranges']}>\n {(\n Object.entries(predefinedRanges) as Array<[P, PredefinedDateRange]>\n ).map(([key, { label, dateRange }]) => (\n <div key={key}>\n <Button\n variant=\"secondary\"\n appearance=\"ghost\"\n onPress={() => {\n state.setValue(dateRange, key);\n state.setAnchorDate(null);\n state.setFocusedDate(toCalendarDate(dateRange.end));\n }}\n >\n {label}\n </Button>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n\n// eslint-disable-next-line\n// @ts-ignore Union type too complex to represent (TODO: check if this is still\n// an issue when we use TS@5.\nexport const RangeCalendar = React.forwardRef(_RangeCalendar) as <\n T extends DateValue,\n P extends string\n>(\n props: SapphireRangeCalendarProps<T, P> & {\n ref?: React.ForwardedRef<HTMLDivElement>;\n }\n) => ReturnType<typeof _RangeCalendar>;\n","import React from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/spinner/spinner.module.css';\nimport {\n useThemeCheck,\n SapphireStyleProps,\n useSapphireStyleProps,\n} from '@danske/sapphire-react';\n\nexport type SpinnerProps = {\n /**\n * @default 'm'\n */\n size?: 'xxxs' | 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl';\n} & SapphireStyleProps &\n ({ 'aria-labelledby': string } | { 'aria-label': string });\n\n/**\n * Animated element that show that some data is still loading or some process\n * is in progress. The hidden label is required for accessibility reasons.\n */\nexport const Spinner = ({\n size = 'm',\n ...props\n}: SpinnerProps): JSX.Element => {\n useThemeCheck();\n\n const { styleProps } = useSapphireStyleProps(props);\n\n /**\n * There is @react-aria/progress but because we only have a \"indeterminate\"\n * spinner, we only need one prop, the 'role' attr.\n * Therefore, it seemed like an overkill to use react-aria here.\n */\n\n return (\n <svg\n role=\"progressbar\"\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 className={clsx(\n styleProps.className,\n styles['sapphire-spinner'],\n size !== 'm' ? styles[`sapphire-spinner--${size}` as const] : ''\n )}\n style={styleProps.style}\n viewBox=\"0 0 16 16\"\n >\n <path\n className={styles['sapphire-spinner__track']}\n d=\"M10.3993 2.13882C10.3295 2.39914 10.4641 2.66858 10.7034 2.79263C11.2238 3.06246 11.7123 3.41501 12.1489 3.85159C14.4401 6.14281 14.4399 9.85728 12.1489 12.1483C9.85783 14.4393 6.14335 14.4395 3.85214 12.1483C3.41556 11.7117 3.06301 11.2232 2.79317 10.7028C2.66913 10.4635 2.39969 10.329 2.13937 10.3987C1.82795 10.4821 1.65738 10.8194 1.80178 11.1077C2.1261 11.7551 2.55778 12.3624 3.09789 12.9026C5.80564 15.6103 10.1955 15.6101 12.9031 12.9026C15.6107 10.195 15.6109 5.80509 12.9031 3.09734C12.363 2.55723 11.7556 2.12555 11.1082 1.80123C10.82 1.65683 10.4827 1.8274 10.3993 2.13882Z\"\n />\n <path\n className={styles['sapphire-spinner__accent']}\n d=\"M1.72661 8.85304C1.98694 8.78329 2.15316 8.53215 2.14111 8.26291C2.07002 6.67514 2.63971 5.06425 3.85203 3.85193C5.06452 2.63944 6.67527 2.06989 8.26302 2.14101C8.53225 2.15306 8.78337 1.98683 8.85309 1.7265C8.93661 1.41464 8.72921 1.09798 8.4069 1.07913C6.49959 0.96764 4.55516 1.6403 3.09778 3.09768C1.64062 4.55485 0.967813 6.49934 1.07909 8.40676C1.0979 8.72916 1.41467 8.93663 1.72661 8.85304Z\"\n />\n </svg>\n );\n};\n","import React from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/notificationBadge/notificationBadge.module.css';\nimport {\n useThemeCheck,\n SapphireStyleProps,\n useSapphireStyleProps,\n} from '@danske/sapphire-react';\n\nexport type NotificationBadgeProps = {\n /**\n * Boolean to perform or not perform the animation\n * @default 'true'\n */\n animate?: boolean;\n /**\n * Badge will be added relative to the children. It is rendered inline if there is no children provided\n * */\n children?: React.ReactNode;\n /**\n * The shape of the container, based on which badge should be positioned. Badge is positioned on the border of the container\n * @default 'circle'\n * */\n containerType?: 'circle' | 'rectangle';\n /**\n * Number to show in badge\n * */\n count: number;\n /**\n * The variation of badge which determines the badge's color.\n *\n * @default 'primary'\n */\n variant?: 'primary' | 'secondary';\n /**\n * @default 'medium'\n */\n size?: 'large' | 'medium' | 'small';\n /**\n * Boolean to show/hide the badge\n *\n * @default true\n */\n show?: boolean;\n} & SapphireStyleProps &\n ({ 'aria-labelledby': string } | { 'aria-label': string });\n\nexport const NotificationBadge = (\n props: NotificationBadgeProps\n): JSX.Element => {\n useThemeCheck();\n\n const {\n animate = true,\n children,\n count,\n containerType = 'circle',\n variant = 'primary',\n size = 'medium',\n show = true,\n ...otherProps\n } = props;\n const { styleProps } = useSapphireStyleProps(props);\n\n const badge = () =>\n show || animate ? (\n <span\n {...otherProps}\n role=\"status\"\n className={clsx(\n styleProps.className,\n styles['sapphire-notification-badge'],\n styles[`sapphire-notification-badge--${size}` as const],\n styles[`sapphire-notification-badge--${variant}` as const],\n {\n [styles[`sapphire-notification-badge--pop-in`]]: show && animate,\n [styles[`sapphire-notification-badge--pop-out`]]: !show && animate,\n }\n )}\n style={styleProps.style}\n >\n {size !== 'small' && displayCount}\n </span>\n ) : (\n <></>\n );\n\n const displayCount = count.toString().length > 2 ? `99+` : count;\n return children ? (\n <span\n className={clsx(styles['sapphire-notification-badge-container'], {\n [styles['sapphire-notification-badge-container--rectangle']]:\n containerType === 'rectangle',\n })}\n >\n {children}\n {badge()}\n </span>\n ) : (\n badge()\n );\n};\n","import React, { ReactNode } from 'react';\nimport { useControlledState } from '@react-stately/utils';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\nimport {\n Button,\n Flex,\n SapphireStyleProps,\n tokens,\n PopoverTrigger,\n PopoverTriggerProps,\n} from '@danske/sapphire-react';\nimport { ToggleButton } from '../../ToggleButton';\nimport { ChevronDown, ChevronUp } from '@danske/sapphire-icons/react';\n\nexport interface SapphireFilterDropdownProps\n extends 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 * Wheter the button is disabled.\n */\n isDisabled?: 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\n/**\n * A button with a dropdown, used for filtering UI.\n */\nexport function FilterDropdown({\n children,\n label,\n value,\n isOpen: isOpenProp,\n clearButtonLabel = 'Clear',\n applyButtonLabel = 'Apply',\n defaultOpen = false,\n onOpenChange,\n hasApplyButton = false,\n onApply,\n onClear,\n noMaxWidth,\n isDisabled = false,\n}: SapphireFilterDropdownProps): JSX.Element {\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 onOpenChange\n );\n const hasValue = value != null && value !== '';\n const close = () => setIsOpen(false);\n const apply = () => {\n onApply?.();\n close();\n };\n\n const applyButton = (\n <Button type=\"submit\" excludeFromTabOrder={!hasApplyButton}>\n {applyButtonLabel}\n </Button>\n );\n return (\n <PopoverTrigger\n popoverContent={\n <form onSubmit={apply}>\n {children}\n <Flex\n justifyContent=\"space-between\"\n marginTop={tokens.size.spacing30}\n >\n <Button\n variant=\"secondary\"\n onPress={() => {\n close();\n onClear?.();\n }}\n isDisabled={!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 </Flex>\n </form>\n }\n placement=\"bottom left\"\n isOpen={isOpen}\n onOpenChange={setIsOpen}\n noMaxWidth={noMaxWidth}\n >\n <ToggleButton\n icon={isOpen ? <ChevronUp /> : <ChevronDown />}\n iconAlign=\"right\"\n isSelected={hasValue}\n isDisabled={isDisabled}\n >\n {label}\n {value ? ': ' : ''}\n {value}\n </ToggleButton>\n </PopoverTrigger>\n );\n}\n","/**\n * This file is a copy of this private file from react-stately.\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-stately/datepicker/src/placeholders.ts\n *\n * It represents the placeholder values used in date and date range\n * fields when they are empty. The placeholders from here are then\n * formatted according to the locale.\n *\n * We need this because we have a requirement not supported by react-aria.\n * We need to be able to format a date based on a locale which is different\n * than the app's locale. This means that our placeholders can be in \"danish\"\n * while the actual date format is in \"swedish\".\n *\n * Examples:\n * - UI locale: sv-SE. Date format locale: sv-SE: 'ÅÅÅÅ-MM-DD'.\n * - UI locale: en. Date formate locale: sv-SE: 'YYYY-MM-DD'\n * - UI locale: sv-SE. Date format locale: en-US: 'MM/DD/ÅÅÅÅ'\n *\n * This is arguably counter-intuitive. But sapphire is used in some apps\n * where the user can decide the language and the date format separately.\n * It is up to the app to allow sane combinations.\n */\n\nimport { LocalizedStringDictionary } from '@internationalized/string';\n\n// These placeholders are based on the strings used by the <input type=\"date\">\n// implementations in Chrome and Firefox. Additional languages are supported\n// here than React Spectrum's typical translations.\nconst placeholders = new LocalizedStringDictionary(\n {\n ach: { year: 'mwaka', month: 'dwe', day: 'nino' },\n af: { year: 'jjjj', month: 'mm', day: 'dd' },\n am: { year: 'ዓዓዓዓ', month: 'ሚሜ', day: 'ቀቀ' },\n an: { year: 'aaaa', month: 'mm', day: 'dd' },\n ar: { year: 'سنة', month: 'شهر', day: 'يوم' },\n ast: { year: 'aaaa', month: 'mm', day: 'dd' },\n az: { year: 'iiii', month: 'aa', day: 'gg' },\n be: { year: 'гггг', month: 'мм', day: 'дд' },\n bg: { year: 'гггг', month: 'мм', day: 'дд' },\n bn: { year: 'yyyy', month: 'মিমি', day: 'dd' },\n br: { year: 'bbbb', month: 'mm', day: 'dd' },\n bs: { year: 'gggg', month: 'mm', day: 'dd' },\n ca: { year: 'aaaa', month: 'mm', day: 'dd' },\n cak: { year: 'jjjj', month: 'ii', day: \"q'q'\" },\n ckb: { year: 'ساڵ', month: 'مانگ', day: 'ڕۆژ' },\n cs: { year: 'rrrr', month: 'mm', day: 'dd' },\n cy: { year: 'bbbb', month: 'mm', day: 'dd' },\n da: { year: 'åååå', month: 'mm', day: 'dd' },\n de: { year: 'jjjj', month: 'mm', day: 'tt' },\n dsb: { year: 'llll', month: 'mm', day: 'źź' },\n el: { year: 'εεεε', month: 'μμ', day: 'ηη' },\n en: { year: 'yyyy', month: 'mm', day: 'dd' },\n eo: { year: 'jjjj', month: 'mm', day: 'tt' },\n es: { year: 'aaaa', month: 'mm', day: 'dd' },\n et: { year: 'aaaa', month: 'kk', day: 'pp' },\n eu: { year: 'uuuu', month: 'hh', day: 'ee' },\n fa: { year: 'سال', month: 'ماه', day: 'روز' },\n ff: { year: 'hhhh', month: 'll', day: 'ññ' },\n fi: { year: 'vvvv', month: 'kk', day: 'pp' },\n fr: { year: 'aaaa', month: 'mm', day: 'jj' },\n fy: { year: 'jjjj', month: 'mm', day: 'dd' },\n ga: { year: 'bbbb', month: 'mm', day: 'll' },\n gd: { year: 'bbbb', month: 'mm', day: 'll' },\n gl: { year: 'aaaa', month: 'mm', day: 'dd' },\n he: { year: 'שנה', month: 'חודש', day: 'יום' },\n hr: { year: 'gggg', month: 'mm', day: 'dd' },\n hsb: { year: 'llll', month: 'mm', day: 'dd' },\n hu: { year: 'éééé', month: 'hh', day: 'nn' },\n ia: { year: 'aaaa', month: 'mm', day: 'dd' },\n id: { year: 'tttt', month: 'bb', day: 'hh' },\n it: { year: 'aaaa', month: 'mm', day: 'gg' },\n ja: { year: ' 年 ', month: '月', day: '日' },\n ka: { year: 'წწწწ', month: 'თთ', day: 'რრ' },\n kk: { year: 'жжжж', month: 'аа', day: 'кк' },\n kn: { year: 'ವವವವ', month: 'ಮಿಮೀ', day: 'ದಿದಿ' },\n ko: { year: '연도', month: '월', day: '일' },\n lb: { year: 'jjjj', month: 'mm', day: 'dd' },\n lo: { year: 'ປປປປ', month: 'ດດ', day: 'ວວ' },\n lt: { year: 'mmmm', month: 'mm', day: 'dd' },\n lv: { year: 'gggg', month: 'mm', day: 'dd' },\n meh: { year: 'aaaa', month: 'mm', day: 'dd' },\n ml: { year: 'വർഷം', month: 'മാസം', day: 'തീയതി' },\n ms: { year: 'tttt', month: 'mm', day: 'hh' },\n nl: { year: 'jjjj', month: 'mm', day: 'dd' },\n nn: { year: 'åååå', month: 'mm', day: 'dd' },\n no: { year: 'åååå', month: 'mm', day: 'dd' },\n oc: { year: 'aaaa', month: 'mm', day: 'jj' },\n pl: { year: 'rrrr', month: 'mm', day: 'dd' },\n pt: { year: 'aaaa', month: 'mm', day: 'dd' },\n rm: { year: 'oooo', month: 'mm', day: 'dd' },\n ro: { year: 'aaaa', month: 'll', day: 'zz' },\n ru: { year: 'гггг', month: 'мм', day: 'дд' },\n sc: { year: 'aaaa', month: 'mm', day: 'dd' },\n scn: { year: 'aaaa', month: 'mm', day: 'jj' },\n sk: { year: 'rrrr', month: 'mm', day: 'dd' },\n sl: { year: 'llll', month: 'mm', day: 'dd' },\n sr: { year: 'гггг', month: 'мм', day: 'дд' },\n sv: { year: 'åååå', month: 'mm', day: 'dd' },\n szl: { year: 'rrrr', month: 'mm', day: 'dd' },\n tg: { year: 'сссс', month: 'мм', day: 'рр' },\n th: { year: 'ปปปป', month: 'ดด', day: 'วว' },\n tr: { year: 'yyyy', month: 'aa', day: 'gg' },\n uk: { year: 'рррр', month: 'мм', day: 'дд' },\n 'zh-CN': { year: '年', month: '月', day: '日' },\n 'zh-TW': { year: '年', month: '月', day: '日' },\n },\n 'en'\n);\n\nexport function getPlaceholder(field: string, value: string, locale: string) {\n // Use the actual placeholder value for the era and day period fields.\n if (field === 'era' || field === 'dayPeriod') {\n return value;\n }\n\n if (field === 'year' || field === 'month' || field === 'day') {\n return placeholders.getStringForLocale(field, locale);\n }\n\n // For time fields (e.g. hour, minute, etc.), use two dashes as the placeholder.\n return '––';\n}\n","/**\n * The helpers in this file are meant for internal use.\n */\nimport {\n SegmentType,\n DateSegment as DateSegmentType,\n} from '@react-stately/datepicker';\nimport { getPlaceholder } from './placeholders';\n\n/**\n * The interface from `useDateFieldState` to clear the input is not ideal. We\n * have to manually clear each segment type.\n */\nexport const segmentTypes: SegmentType[] = [\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'era',\n 'year',\n 'month',\n 'dayPeriod',\n 'literal',\n 'timeZoneName',\n];\n\nexport const isAnyModified = (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\n/**\n * Check out the `getPlaceholder` function's description for\n * an explanation.\n */\nexport const setPlaceholderLanguage = (\n segment: DateSegmentType,\n locale: string\n): DateSegmentType => {\n const placeholder = getPlaceholder(segment.type, segment.text, locale);\n\n return {\n ...segment,\n text: segment.isPlaceholder ? placeholder : segment.text,\n placeholder,\n };\n};\n","import React, { useRef } from 'react';\nimport { useDateSegment } from '@react-aria/datepicker';\nimport {\n DateFieldState,\n DateSegment as DateSegmentType,\n} from '@react-stately/datepicker';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport clsx from 'clsx';\nimport { setPlaceholderLanguage } from './utils/segments';\nimport { useLocale } from '@react-aria/i18n';\n\nexport interface DateSegmentProps {\n segment: DateSegmentType;\n state: DateFieldState;\n}\n\nexport const DateSegment = ({ segment, state }: DateSegmentProps) =>\n segment.type === 'literal' ? (\n <SeparatorSegment segment={segment} />\n ) : (\n <EditableSegment segment={segment} state={state}></EditableSegment>\n );\n\nconst SeparatorSegment = ({ segment }: { segment: DateSegmentType }) => (\n <span\n aria-hidden=\"true\"\n className={clsx(styles['sapphire-date-field__segment'])}\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 const { locale } = useLocale();\n const segmentWithTranslatedPlaceholders = setPlaceholderLanguage(\n segment,\n locale\n );\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 !segmentWithTranslatedPlaceholders.isPlaceholder,\n })}\n >\n {segmentWithTranslatedPlaceholders.text}\n </div>\n );\n};\n","import React, { useRef } from 'react';\nimport { AriaButtonProps } from '@react-aria/button';\nimport { useHover } from '@react-aria/interactions';\nimport { mergeProps } from '@react-aria/utils';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport { useFocusRing } from '@react-aria/focus';\nimport { useButton } from '@danske/sapphire-react';\n\n/**\n * @internal\n */\nexport const DateFieldButton = (props: AriaButtonProps) => {\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(buttonProps, hoverProps, focusProps)}\n ref={ref}\n className={clsx(\n styles['sapphire-date-field__button'],\n styles['js-focus'],\n styles['js-hover'],\n {\n [styles['is-active']]: isPressed,\n [styles['is-hover']]: isHovered,\n [styles['is-focus']]: isFocusVisible,\n }\n )}\n >\n {props.children}\n </button>\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 {\n AriaDateFieldOptions,\n useDateField,\n DateValue,\n} from '@react-aria/datepicker';\nimport { DateSegment } from './DateSegment';\nimport { useLocale, useMessageFormatter } from '@react-aria/i18n';\nimport { useDateFieldState } from '@react-stately/datepicker';\nimport { createCalendar } from '@internationalized/date';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport { Icon } from '@danske/sapphire-react';\nimport { CloseCircle } from '@danske/sapphire-icons/react';\nimport { DateFieldButton } from './DateFieldButton';\nimport intlMessages from '../i18n';\nimport { segmentTypes, isAnyModified } from './utils/segments';\nimport { useCustomDateFormatLocale } from '@danske/sapphire-react';\n\nexport type DateInputProps<T extends DateValue> = AriaDateFieldOptions<T> & {\n noClearButton?: boolean;\n size?: 'large' | 'medium';\n};\n\n/**\n * @internal\n */\nexport function DateInput<T extends DateValue>({\n noClearButton = false,\n size = 'large',\n ...props\n}: DateInputProps<T>) {\n const ref = useRef(null);\n const formatMessage = useMessageFormatter(intlMessages);\n const { locale } = useLocale();\n const customDateFormatLocale = useCustomDateFormatLocale();\n\n const state = useDateFieldState({\n ...props,\n locale: customDateFormatLocale || locale,\n createCalendar,\n });\n\n const { fieldProps } = useDateField(props, state, ref);\n const clear = () => {\n segmentTypes.forEach(state.clearSegment);\n };\n\n return (\n <>\n <div\n {...fieldProps}\n className={styles['sapphire-date-field__input']}\n ref={ref}\n >\n {state.segments.map((segment, i) => (\n <DateSegment key={i} segment={segment} state={state} />\n ))}\n </div>\n {!noClearButton &&\n !props.isReadOnly &&\n !props.isDisabled &&\n isAnyModified(state.segments) && (\n <DateFieldButton aria-label={formatMessage('clear')} onPress={clear}>\n <Icon size={size === 'medium' ? 'm' : 'l'}>\n <CloseCircle />\n </Icon>\n </DateFieldButton>\n )}\n </>\n );\n}\n","import React, {\n ForwardedRef,\n forwardRef,\n ReactNode,\n RefObject,\n useRef,\n} from 'react';\nimport { Validation } from '@react-types/shared';\nimport {\n AriaDatePickerProps,\n DateValue,\n useDatePicker,\n} from '@react-aria/datepicker';\nimport { useDatePickerState } from '@react-stately/datepicker';\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n Icon,\n Popover,\n tokens,\n View,\n Field,\n Label,\n} from '@danske/sapphire-react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport { Calendar as CalendarIcon } from '@danske/sapphire-icons/react';\nimport { DateInput } from './DateInput';\nimport { Calendar } from '../../Calendar';\nimport { DateFieldButton } from './DateFieldButton';\nimport { PressResponder } from '@react-aria/interactions';\nimport { useDialog } from '@react-aria/dialog';\n\nexport type DateFieldProps<T extends DateValue> = Omit<\n AriaDatePickerProps<T>,\n | keyof Omit<Validation<unknown>, 'isRequired'>\n | 'errorMessage'\n | 'description'\n // excluding some props about time input. We don't support that yet.\n | 'granularity'\n | 'hourCycle'\n | 'hideTimeZone'\n> &\n SapphireStyleProps & {\n /**\n * Whether week numbers are visible as a first column\n */\n showWeekNumbers?: 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.\n * A `string` 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 | string;\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 ContextualHelp to render next to the label.\n */\n contextualHelp?: ReactNode;\n /**\n * If it should hide the \"clear\" button when input is not empty.\n *\n * @default false\n */\n noClearButton?: boolean;\n /**\n * @default 'large'\n */\n size?: 'large' | 'medium';\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\nfunction _DateField<T extends DateValue>(\n {\n error,\n note,\n contextualHelp,\n noClearButton = false,\n showWeekNumbers,\n size = 'large',\n labelPlacement = 'above',\n necessityIndicator = false,\n ...otherProps\n }: DateFieldProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) {\n useThemeCheck();\n\n const groupRef = useRef(null);\n const dialogRef = useRef(null);\n\n const { styleProps } = useSapphireStyleProps(otherProps);\n\n const { dialogProps } = useDialog({}, dialogRef);\n\n const state = useDatePickerState({\n ...otherProps,\n ...(error ? { validationState: 'invalid' } : {}),\n });\n\n const {\n groupProps,\n labelProps,\n fieldProps,\n buttonProps,\n dialogProps: dialogPropsFromDatePicker,\n calendarProps,\n descriptionProps,\n errorMessageProps,\n } = useDatePicker(\n {\n ...otherProps,\n description: note,\n },\n state,\n groupRef\n );\n\n const isMedium = size === 'medium';\n\n return (\n <Field\n {...otherProps}\n noShrink\n isDisabled={otherProps.isDisabled}\n error={state.validationState === 'invalid'}\n size={size}\n ref={ref}\n labelPlacement={labelPlacement}\n >\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.Control>\n <div\n {...groupProps}\n ref={groupRef}\n className={clsx(styles['sapphire-date-field'], {\n [styles['sapphire-date-field--error']]:\n state.validationState === 'invalid',\n [styles['sapphire-date-field--medium']]: isMedium,\n })}\n {...(styleProps.style.width\n ? { style: { width: styleProps.style.width } }\n : {})}\n >\n <PressResponder {...buttonProps} isPressed={state.isOpen}>\n <DateFieldButton\n isDisabled={otherProps.isDisabled || otherProps.isReadOnly}\n >\n <Icon size={isMedium ? 'm' : 'l'}>\n <CalendarIcon />\n </Icon>\n </DateFieldButton>\n </PressResponder>\n <DateInput\n {...fieldProps}\n noClearButton={noClearButton}\n size={size}\n />\n </div>\n </Field.Control>\n {((typeof error === 'string' && error !== '') || note) && (\n <Field.Footer>\n {error ? (\n <Field.Note {...errorMessageProps}>{error}</Field.Note>\n ) : note ? (\n <Field.Note {...descriptionProps}>{note}</Field.Note>\n ) : (\n <></>\n )}\n </Field.Footer>\n )}\n {state.isOpen && (\n <Popover state={state} triggerRef={groupRef} placement=\"bottom start\">\n <div ref={dialogRef} {...dialogProps} {...dialogPropsFromDatePicker}>\n <View padding={tokens.size.spacing50}>\n <Calendar\n {...calendarProps}\n defaultFocusedValue={state.dateValue}\n showWeekNumbers={showWeekNumbers}\n />\n </View>\n </div>\n </Popover>\n )}\n </Field>\n );\n}\n\n/**\n * A date field allows users to enter or edit date values using the keyboard\n * and/or mouse.\n */\nexport const DateField = forwardRef(_DateField) as <T extends DateValue>(\n props: DateFieldProps<T> & { ref?: RefObject<HTMLDivElement> }\n) => React.ReactElement;\n","import { useDateRangePickerState as originalUseDateRangePickerState } from '@react-stately/datepicker';\nimport type {\n DateRangePickerStateOptions as OriginalDateRangePickerOptions,\n DateRangePickerState as OriginalDateRangePickerState,\n} from '@react-stately/datepicker';\nimport { DateValue } from '@internationalized/date';\nimport { useRef } from 'react';\n\ntype OriginalOnChange<T extends DateValue> = NonNullable<\n OriginalDateRangePickerOptions<T>['onChange']\n>;\n\nexport type DateRangePickerStateOptions<\n T extends DateValue,\n P extends string,\n O extends OriginalOnChange<T> = OriginalOnChange<T>\n> = Omit<OriginalDateRangePickerOptions<T>, 'onChange'> & {\n // We allow clearing the DateRangeField and thus have to allow a null value\n // which is currently not part of the DateRangePickerProps type:\n // https://unpkg.com/browse/@react-types/datepicker@3.5.0/src/index.d.ts#:~:text=ValueBase%3CRangeValue%3CT%3E%20%7C%20null%2C%20RangeValue%3CMappedDateValue%3CT%3E%3E\n onChange?: (\n value: Parameters<O>[0] | null,\n predefinedRange?: P\n ) => ReturnType<O>;\n};\n\ntype OriginalSetDate = OriginalDateRangePickerState['setDateRange'];\n\nexport type DateRangePickerState<P extends string> = Omit<\n OriginalDateRangePickerState,\n 'setDateRange'\n> & {\n setDateRange: (\n value: Parameters<OriginalSetDate>[0],\n predefinedRange?: P\n ) => ReturnType<OriginalSetDate>;\n};\n\n/**\n * A wrapper to allow for the onChange callback to have extra info\n **/\nexport const useDateRangePickerState = <P extends string>({\n onChange,\n ...options\n}: DateRangePickerStateOptions<DateValue, P>): DateRangePickerState<P> => {\n const lastPredefinedRange = useRef<P | undefined>(undefined);\n\n const state = originalUseDateRangePickerState({\n ...options,\n onChange: (value) => {\n onChange?.(value, lastPredefinedRange.current);\n lastPredefinedRange.current = undefined;\n },\n });\n\n return {\n ...state,\n setDateRange: (value, predefinedRange) => {\n lastPredefinedRange.current = predefinedRange;\n state.setDateRange(value);\n },\n };\n};\n","import React, { useRef } from 'react';\nimport {\n useDateField,\n DateValue,\n AriaDatePickerProps,\n} from '@react-aria/datepicker';\nimport { DateSegment } from './DateSegment';\nimport { useLocale, useMessageFormatter } from '@react-aria/i18n';\nimport {\n useDateFieldState,\n DateRangePickerState,\n} from '@react-stately/datepicker';\nimport { createCalendar } from '@internationalized/date';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport { Icon, useCustomDateFormatLocale } from '@danske/sapphire-react';\nimport { CloseCircle, ArrowRight } from '@danske/sapphire-icons/react';\nimport { DateFieldButton } from './DateFieldButton';\nimport { segmentTypes, isAnyModified } from './utils/segments';\nimport intlMessages from '../i18n';\n\nexport interface DateRangeInputProps<T extends DateValue> {\n dateRangePickerState: DateRangePickerState;\n startFieldProps: AriaDatePickerProps<T>;\n endFieldProps: AriaDatePickerProps<T>;\n noClearButton?: boolean;\n size?: 'large' | 'medium';\n}\n\n/**\n * @internal\n */\nexport function DateRangeInput<T extends DateValue>({\n dateRangePickerState,\n startFieldProps,\n endFieldProps,\n noClearButton = false,\n size = 'large',\n}: DateRangeInputProps<T>) {\n const startFieldRef = useRef(null);\n const endFieldRef = useRef(null);\n const formatMessage = useMessageFormatter(intlMessages);\n\n const { locale } = useLocale();\n const customDateFormatLocale = useCustomDateFormatLocale();\n\n const startFieldState = useDateFieldState({\n ...startFieldProps,\n locale: customDateFormatLocale || locale,\n createCalendar,\n });\n\n const endFieldState = useDateFieldState({\n ...endFieldProps,\n locale: customDateFormatLocale || locale,\n createCalendar,\n });\n\n const { fieldProps: startFieldAriaProps } = useDateField(\n startFieldProps,\n startFieldState,\n startFieldRef\n );\n const { fieldProps: endFieldAriaProps } = useDateField(\n endFieldProps,\n endFieldState,\n endFieldRef\n );\n\n const clearFields = () => {\n segmentTypes.forEach((segmentType) => {\n startFieldState.clearSegment(segmentType);\n endFieldState.clearSegment(segmentType);\n });\n\n /**\n * Workaround for clearing\n *\n * PROBLEM\n * - UI: Setting value in both startField and endField\n * - Code: Sets a placeholder value i useDateRangePickerState ({ start: date, end: date })\n * - UI: Clicking clear button\n * - Code: startFieldState.clearSegment() runs and sets start-prop of placeholder to null\n * - Code: endFieldState.clearSegment() runs and sets end-prop of placeholder to null,\n * BUT THE value INSIDE dateRangePickerState.setDateTime() IS STALE AND STILL HAS DATE VALUES FOR BOTH start AND end\n * - Code: so a placholder value is set to ({ start: date, end: null })\n *\n * POTENTIAL SOLUTION\n * If the value in useDateRangePickerState was saved as a ref\n * (like here: https://github.com/adobe/react-spectrum/pull/2510/commits/ca696af45e1f4548e1ace06e5de6d4f297f46eeb?diff=split&w=0#diff-eb983dc43959711e7dea6f33bcbbe97aa0bab850f24441753cdbd885125f3b71R50-R51)\n * and valueRef.current would be the value used in setDateTime of useDateRangePickerState,\n * both dates would be correctly cleared as the latest start value (which is null) would be known by setDateTime run by endFieldState.clearSegment()\n * And we still want to use clearSegment as that takes care of remembering last selected value for reselection.\n * It's suboptimal to have to call that continuously though, so a clearAllSegments function could be ideal.\n *\n * Without the change in Adobe's hooks, we have to ourselves dateRangePickerState.setValue to null.\n * But we'll be keeping the *FieldState.clearSegment calls as those will make sure to save new date to start from on next selection.\n * Ie if 2026 was selected, that's where a reselection with arrow keys will start from.\n * Only seems to take effect for the later of the calls though – currently endFieldState.\n *\n * Submitted a discussion to Adobe about this: https://github.com/adobe/react-spectrum/issues/4986\n */\n dateRangePickerState.setValue({ start: null!, end: null! }); // null works on runtime\n };\n\n return (\n <>\n <div\n {...startFieldAriaProps}\n className={styles['sapphire-date-field__input']}\n ref={startFieldRef}\n >\n {startFieldState.segments.map((segment, i) => (\n <DateSegment key={i} segment={segment} state={startFieldState} />\n ))}\n </div>\n <Icon size={size == 'medium' ? 'm' : 'l'}>\n <ArrowRight />\n </Icon>\n <div\n {...endFieldAriaProps}\n className={styles['sapphire-date-field__input']}\n ref={endFieldRef}\n >\n {endFieldState.segments.map((segment, i) => (\n <DateSegment key={i} segment={segment} state={endFieldState} />\n ))}\n </div>\n {!noClearButton &&\n !startFieldProps.isReadOnly &&\n !endFieldProps.isReadOnly &&\n !startFieldProps.isDisabled &&\n !endFieldProps.isDisabled &&\n isAnyModified([\n ...startFieldState.segments,\n ...endFieldState.segments,\n ]) && (\n <DateFieldButton\n aria-label={formatMessage('clear')}\n onPress={clearFields}\n >\n <Icon size={size === 'medium' ? 'm' : 'l'}>\n <CloseCircle />\n </Icon>\n </DateFieldButton>\n )}\n </>\n );\n}\n","import React, {\n ForwardedRef,\n forwardRef,\n ReactNode,\n RefObject,\n useRef,\n} from 'react';\nimport { Validation } from '@react-types/shared';\nimport {\n AriaDateRangePickerProps,\n DateValue,\n useDateRangePicker,\n} from '@react-aria/datepicker';\nimport {\n DateRangePickerStateOptions,\n useDateRangePickerState,\n} from './useDateRangePickerState';\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n Icon,\n Popover,\n tokens,\n View,\n Field,\n Label,\n} from '@danske/sapphire-react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport { Calendar } from '@danske/sapphire-icons/react';\nimport { DateRangeInput } from './DateRangeInput';\nimport { RangeCalendar, PredefinedDateRange } from '../../Calendar';\nimport { DateFieldButton } from './DateFieldButton';\nimport { PressResponder } from '@react-aria/interactions';\nimport { I18nProvider, useLocale } from '@react-aria/i18n';\nimport { useDialog } from '@react-aria/dialog';\n\nexport type DateRangeFieldProps<T extends DateValue, P extends string> = Omit<\n AriaDateRangePickerProps<T>,\n | keyof Omit<Validation<unknown>, 'isRequired'>\n | 'errorMessage'\n | 'description'\n // excluding some props about time input. We don't support that yet.\n | 'granularity'\n | 'hourCycle'\n | 'hideTimeZone'\n | 'allowsNonContiguousRanges'\n | 'onChange'\n> &\n SapphireStyleProps & {\n /**\n * Handler that is called when the value changes.\n */\n onChange?: DateRangePickerStateOptions<DateValue, P>['onChange'];\n /**\n * Whether week numbers are visible as a first column\n */\n showWeekNumbers?: boolean;\n /**\n * Whether to show two months at the same time.\n */\n showTwoMonths?: boolean;\n /**\n * A set of predefined date ranges the user can more conveniently select.\n */\n predefinedRanges?: Record<P, PredefinedDateRange>;\n /**\n * Whether range is allowed to span unavailable dates.\n */\n allowUnavailableDatesWithinRange?: 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.\n * A `string` 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 | string;\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 ContextualHelp to render next to the label.\n */\n contextualHelp?: ReactNode;\n /**\n * If it should hide the \"clear\" button when input is not empty.\n *\n * @default false\n */\n noClearButton?: boolean;\n /**\n * Locale (eg. \"da-DK\", \"en-US\", \"sv-SE\" etc.)\n *\n * THIS IS A TEMPORARY SOLUTION FOR THE INTERFACE OF LOCALIZATION. THIS API\n * MAY CHANGE OR EVEN BE REPLACED WITH SOMETHING DIFFERENT IN A FUTURE VERSION.\n */\n locale?: string;\n /**\n * @default 'large'\n */\n size?: 'large' | 'medium';\n /**\n * To visually indicate if this field is required or optional.\n * @default false\n */\n necessityIndicator?: boolean;\n\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\nfunction _DateRangeField<T extends DateValue, P extends string>(\n {\n error,\n note,\n contextualHelp,\n noClearButton = false,\n locale,\n showWeekNumbers,\n showTwoMonths,\n allowUnavailableDatesWithinRange,\n predefinedRanges,\n size = 'large',\n labelPlacement = 'above',\n necessityIndicator = false,\n ...otherProps\n }: DateRangeFieldProps<T, P>,\n ref: ForwardedRef<HTMLDivElement>\n) {\n useThemeCheck();\n\n const groupRef = useRef(null);\n const dialogRef = useRef(null);\n\n const { locale: existingLocale } = useLocale();\n\n const preferredLocale = locale || existingLocale;\n\n const { styleProps } = useSapphireStyleProps(otherProps);\n\n const { dialogProps } = useDialog({}, dialogRef);\n\n const state = useDateRangePickerState({\n ...otherProps,\n ...(error ? { validationState: 'invalid' } : {}),\n ...(allowUnavailableDatesWithinRange\n ? { allowsNonContiguousRanges: allowUnavailableDatesWithinRange }\n : {}),\n });\n\n const {\n groupProps,\n labelProps,\n startFieldProps,\n endFieldProps,\n buttonProps,\n dialogProps: dialogPropsFromDatePicker,\n calendarProps,\n descriptionProps,\n errorMessageProps,\n } = useDateRangePicker(\n {\n ...otherProps,\n description: note,\n allowsNonContiguousRanges: allowUnavailableDatesWithinRange,\n },\n state,\n groupRef\n );\n\n const isMedium = size === 'medium';\n\n return (\n <Field\n {...otherProps}\n noShrink\n isDisabled={otherProps.isDisabled}\n error={state.validationState === 'invalid'}\n size={size}\n ref={ref}\n labelPlacement={labelPlacement}\n >\n <I18nProvider locale={preferredLocale}>\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.Control>\n <div\n {...groupProps}\n ref={groupRef}\n className={clsx(\n styles['sapphire-date-field'],\n styles['sapphire-date-field--range'],\n {\n [styles['sapphire-date-field--error']]:\n state.validationState === 'invalid',\n [styles['sapphire-date-field--medium']]: isMedium,\n }\n )}\n {...(styleProps.style.width\n ? { style: { width: styleProps.style.width } }\n : {})}\n >\n <PressResponder {...buttonProps} isPressed={state.isOpen}>\n <DateFieldButton\n isDisabled={otherProps.isDisabled || otherProps.isReadOnly}\n >\n <Icon size={isMedium ? 'm' : 'l'}>\n <Calendar />\n </Icon>\n </DateFieldButton>\n </PressResponder>\n <DateRangeInput\n dateRangePickerState={state}\n startFieldProps={startFieldProps}\n endFieldProps={endFieldProps}\n noClearButton={noClearButton}\n size={size}\n />\n </div>\n </Field.Control>\n {error !== false &&\n ((typeof error === 'string' && error !== '') || note) && (\n <Field.Footer>\n {error ? (\n <Field.Note {...errorMessageProps}>{error}</Field.Note>\n ) : note ? (\n <Field.Note {...descriptionProps}>{note}</Field.Note>\n ) : (\n <></>\n )}\n </Field.Footer>\n )}\n {state.isOpen && (\n <Popover state={state} triggerRef={groupRef} placement=\"bottom start\">\n <div\n ref={dialogRef}\n {...dialogProps}\n {...dialogPropsFromDatePicker}\n >\n <View padding={tokens.size.spacing50}>\n <RangeCalendar\n {...calendarProps}\n allowUnavailableDatesWithinRange={\n allowUnavailableDatesWithinRange\n }\n showWeekNumbers={showWeekNumbers}\n showTwoMonths={showTwoMonths}\n predefinedRanges={predefinedRanges}\n />\n </View>\n </div>\n </Popover>\n )}\n </I18nProvider>\n </Field>\n );\n}\n\n/**\n * A date range field allows users to select a range of dates by selecting a to and a from date with keyboard and/or mouse.\n */\nexport const DateRangeField = forwardRef(_DateRangeField) as <\n T extends DateValue,\n P extends string\n>(\n props: DateRangeFieldProps<T, P> & { ref?: RefObject<HTMLDivElement> }\n) => React.ReactElement;\n","/**\n * The helpers in this file are meant for external use.\n * We're exporting these.\n */\nimport { DateValue } from '@react-aria/datepicker';\nimport { RangeValue } from '@react-types/shared';\n\nexport const isEndDateBeforeStartDate = (\n dateRange?: RangeValue<DateValue> | null\n) =>\n dateRange &&\n dateRange.end &&\n dateRange.start &&\n dateRange.end.compare(dateRange.start) < 0;\n\nexport const isDateOutsideValidRange = (\n value?: DateValue | null,\n minValue?: DateValue | null,\n maxValue?: DateValue | null\n) => {\n if (value) {\n if (minValue && value.compare(minValue) < 0) {\n return 'before';\n }\n if (maxValue && value.compare(maxValue) > 0) {\n return 'after';\n }\n }\n};\n","import {\n Icon,\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport React, { ReactNode } from 'react';\nimport styles from '@danske/sapphire-css/components/avatar/avatar.module.css';\nimport clsx from 'clsx';\n\nconst getIconSize = (\n size?: 'extraLarge' | 'large' | 'medium' | 'small' | 'extraSmall'\n) => {\n switch (size) {\n case 'medium':\n return 'm';\n case 'large':\n return 'l';\n case 'extraLarge':\n return 'xl';\n default:\n return 's';\n }\n};\n\nexport type SapphireAvatarProps = SapphireStyleProps & {\n /**\n * @default 'medium'\n */\n size?: 'extraLarge' | 'large' | 'medium' | 'small' | 'extraSmall';\n\n /**\n * The background color of the avatar.\n * Can either be semantic or one of the named decorative colors.\n *\n * @default 'informative'\n */\n\n color?:\n | 'positive'\n | 'negative'\n | 'warning'\n | 'informative'\n | 'passive'\n | 'aqua'\n | 'copper'\n | 'electro'\n | 'indigo'\n | 'lime'\n | 'pink'\n | 'violet'\n | 'gold'\n | 'beige'\n | 'orchid'\n | 'gray'\n | 'cobalt'\n | 'forestGreen'\n | 'teal'\n | 'orange';\n} & (\n | {\n monogram: ReactNode;\n icon?: never;\n }\n | {\n monogram?: never;\n icon: ReactNode;\n }\n );\n\nexport const Avatar = ({\n monogram,\n icon,\n color = 'informative',\n size = 'medium',\n ...props\n}: SapphireAvatarProps): React.ReactElement => {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n\n return (\n <div\n {...styleProps}\n className={clsx(\n styleProps.className,\n styles['sapphire-avatar'],\n {\n [styles['sapphire-avatar--extra-large']]: size === 'extraLarge',\n [styles['sapphire-avatar--large']]: size === 'large',\n [styles['sapphire-avatar--small']]: size === 'small',\n [styles['sapphire-avatar--extra-small']]: size === 'extraSmall',\n },\n color !== 'passive' && styles[`sapphire-avatar--${color}`]\n )}\n >\n {icon ? <Icon size={getIconSize(size)}>{icon}</Icon> : monogram}\n </div>\n );\n};\n","import React from 'react';\nimport clsx from 'clsx';\nimport {\n AlertCircle,\n AlertTriangle,\n Bell,\n CheckMarkCircle,\n} from '@danske/sapphire-icons/react';\nimport {\n Heading,\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/feedbackMessage/feedbackMessage.module.css';\nimport { Avatar } from '../../Avatar';\n\nexport type FeedbackMessageVariant =\n | 'success'\n | 'error'\n | 'warning'\n | 'informative'\n | 'neutral';\n\nexport interface SapphireFeedbackMessageProps extends SapphireStyleProps {\n /**\n * Heading content, rendered in a sapphire Heading component.\n */\n heading: React.ReactNode | string;\n /**\n * The type of message.\n * The 'error' and 'success' are meant to attract more attention.\n *\n * @default 'neutral'\n */\n variant?: FeedbackMessageVariant;\n /**\n * Optional icon to override the default icon for the message type.\n */\n icon?: React.ReactNode;\n /**\n * Optional description, rendered as a section below heading.\n */\n body?: React.ReactNode;\n /**\n * Optional actions, rendered at the bottom. Use {@link ButtonGroup}\n * for the content.\n */\n actions?: React.ReactNode;\n}\n\nconst getColor = (variant: FeedbackMessageVariant) => {\n switch (variant) {\n case 'success':\n return 'positive';\n case 'error':\n return 'negative';\n case 'neutral':\n return 'passive';\n default:\n return variant;\n }\n};\n\nconst getIcon = (variant: FeedbackMessageVariant, icon?: React.ReactNode) => {\n if (icon) {\n return icon;\n }\n\n switch (variant) {\n case 'success':\n return <CheckMarkCircle />;\n case 'error':\n return <AlertCircle />;\n case 'warning':\n return <AlertTriangle />;\n case 'informative':\n return <Bell />;\n default:\n return null;\n }\n};\n\n/**\n * Implements layout and style of a feedback message.\n */\nexport const FeedbackMessage = ({\n heading,\n body,\n actions,\n variant = 'neutral',\n icon,\n ...otherProps\n}: SapphireFeedbackMessageProps): JSX.Element => {\n useThemeCheck();\n const {\n styleProps: { style, className },\n } = useSapphireStyleProps(otherProps);\n\n return (\n <div\n className={clsx(styles['sapphire-feedback-message'], className)}\n style={style}\n >\n {variant !== 'neutral' && (\n <Avatar\n color={getColor(variant)}\n size=\"extraLarge\"\n icon={getIcon(variant, icon)}\n />\n )}\n <div className={styles['sapphire-feedback-message__content']}>\n {typeof heading === 'string' ? (\n <Heading level={3}>{heading}</Heading>\n ) : (\n heading\n )}\n <section className={styles['sapphire-feedback-message__body']}>\n {body}\n </section>\n </div>\n {actions}\n </div>\n );\n};\n","import { useComboBoxState as originalUseComboBoxState } from '@react-stately/combobox';\n\n/**\n * A wrapper for `useComboBoxState` to make the combobox more like \"autocomplete\":\n *\n * 1) We don't want to allow opening the combobox \"manually\".\n * In react-aria terms \"manual\" opening means where the user explicitly\n * wants to open the popover.\n * In the autocomplete feature we don't want such behaviour because the\n * popover has the role of assisting typing, not \"selecting\" a value.\n *\n * 2) We don't want to show any options if the query is empty.\n *\n * More details here\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/combobox/src/useComboBox.ts\n */\nexport const useComboBoxState: typeof originalUseComboBoxState = (options) => {\n const state = originalUseComboBoxState({\n ...options,\n defaultFilter: (textValue, query) => {\n if (query.length > 0) {\n return options.defaultFilter\n ? options.defaultFilter(textValue, query)\n : textValue.toLowerCase().includes(query.toLowerCase());\n } else {\n return false;\n }\n },\n });\n return {\n ...state,\n open: (focusStrategy, triggerMode) => {\n if (triggerMode !== 'manual') {\n state.open(focusStrategy, triggerMode);\n }\n },\n };\n};\n","import React, { ForwardedRef, useRef } from 'react';\nimport clsx from 'clsx';\nimport { HelpTextProps, LabelableProps, Validation } from '@react-types/shared';\nimport type { ComboBoxProps } from '@react-types/combobox';\nimport { AriaSearchFieldProps, useSearchField } from '@react-aria/searchfield';\n\nimport {\n SapphireStyleProps,\n useButton,\n useSapphireStyleProps,\n useThemeCheck,\n ListBoxPopover,\n Icon,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/searchField/searchField.module.css';\nimport { useSearchFieldState } from '@react-stately/searchfield';\nimport { mergeProps, useObjectRef } from '@react-aria/utils';\nimport { CloseCircle, Search } from '@danske/sapphire-icons/react';\nimport { useFocusableRef } from '@react-spectrum/utils';\nimport { useComboBoxState } from './useComboBoxState';\nimport { useComboBox } from '@react-aria/combobox';\n\nexport type SapphireSearchFieldProps<T extends object> = SapphireStyleProps &\n Omit<\n AriaSearchFieldProps,\n keyof HelpTextProps | keyof Validation<unknown> | keyof LabelableProps\n > &\n AutocompleteProps<T> & {\n /**\n * @default 'large'\n */\n size?: 'large' | 'medium';\n /**\n * Adjusts the style for the type of surface it is rendered on.\n * @default 'primary'\n */\n surface?: 'primary' | 'secondary';\n } & (\n | { 'aria-labelledby': string }\n | {\n 'aria-label': string;\n }\n );\n\n// we don't want props related to \"selection\" because from the POV of the\n// autocomplete feature, there is no concept of \"selection\"\ninterface AutocompleteProps<T extends object> {\n items?: ComboBoxProps<T>['items'];\n defaultItems?: ComboBoxProps<T>['defaultItems'];\n children?: ComboBoxProps<T>['children'];\n onOpenChange?: ComboBoxProps<T>['onOpenChange'];\n defaultFilter?: (textValue: string, inputValue: string) => boolean;\n}\n\n/**\n * Sapphire search input field.\n */\nexport const SearchField = React.forwardRef(function SearchField<\n T extends object\n>(\n props: SapphireSearchFieldProps<T>,\n forwardedRef: ForwardedRef<HTMLInputElement>\n): JSX.Element {\n useThemeCheck();\n\n const inputRef = useObjectRef(forwardedRef);\n const buttonRef = useRef<HTMLDivElement>(null);\n const listBoxRef = useFocusableRef<HTMLUListElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const triggerRef = useFocusableRef<HTMLDivElement>(null);\n const {\n styleProps: { style, className },\n } = useSapphireStyleProps(props);\n\n const state = useComboBoxState({\n ...props,\n inputValue: props.value,\n defaultInputValue: props.defaultValue,\n onInputChange: props.onChange,\n allowsEmptyCollection: false,\n allowsCustomValue: true,\n shouldCloseOnBlur: true,\n });\n\n const { inputProps: comboBoxInputProps, listBoxProps } = useComboBox(\n {\n ...props,\n inputRef,\n listBoxRef,\n popoverRef,\n },\n state\n );\n\n /**\n * In order to compose the `useSearchField` and `useComboBox` we want to:\n * - let the combobox control the input but\n * - allow the search field's \"clear\" and \"submit\" behavior\n *\n * For this, we take control of `useSearchField` and not pass the props\n * indiscriminately.\n *\n * For example think about using `onBlur` on `SearchField`. The combobox\n * hook gets that prop and the input props we get back will add that\n * listener to the input. We don't want the input props from\n * `useSearchField` to add the same listener.\n */\n const searchProps: AriaSearchFieldProps = {\n 'aria-label': props['aria-label'],\n 'aria-labelledby': props['aria-labelledby'],\n isDisabled: props.isDisabled,\n isReadOnly: props.isReadOnly,\n // needed for the submit functionality\n value: state.inputValue,\n onSubmit: (value) => {\n if (!state.selectionManager.isFocused) {\n props?.onSubmit?.(value);\n }\n },\n onClear: () => {\n state.setInputValue('');\n props.onClear?.();\n },\n };\n\n const searchFieldState = useSearchFieldState(searchProps);\n\n const { clearButtonProps, inputProps: searchFieldInputProps } =\n useSearchField(searchProps, searchFieldState, inputRef);\n\n const { buttonProps } = useButton(\n {\n ...clearButtonProps,\n elementType: 'div',\n },\n buttonRef\n );\n\n return (\n <div\n className={clsx(styles['sapphire-search-field'], className, {\n [styles['sapphire-search-field--medium']]: props.size === 'medium',\n [styles['sapphire-search-field--surface-secondary']]:\n props.surface === 'secondary',\n [styles['is-disabled']]: props.isDisabled,\n })}\n style={style}\n ref={triggerRef}\n >\n <span className={styles['sapphire-search-field__icon']}>\n <Icon size={props.size === 'medium' ? 'm' : 'l'}>\n <Search />\n </Icon>\n </span>\n <input\n {...mergeProps(comboBoxInputProps, searchFieldInputProps)}\n ref={inputRef}\n className={clsx(styles['sapphire-search-field__input'], {\n [styles['sapphire-search-field__input--empty']]:\n state.inputValue.length === 0,\n })}\n />\n <div\n ref={buttonRef}\n className={styles['sapphire-search-field__button']}\n {...buttonProps}\n >\n <Icon size={props.size === 'medium' ? 'm' : 'l'}>\n <CloseCircle />\n </Icon>\n </div>\n {state.isOpen && (\n <ListBoxPopover<T>\n state={state}\n triggerRef={triggerRef}\n popoverRef={popoverRef}\n listBoxRef={listBoxRef}\n listBoxProps={listBoxProps}\n selectWidth={triggerRef.current?.offsetWidth || 0}\n size={props.size}\n disableSelectedStyles\n isNonModal\n >\n {props.children || []}\n </ListBoxPopover>\n )}\n </div>\n );\n});\n","import React, { useRef } from 'react';\nimport clsx from 'clsx';\nimport { AriaToastProps, useToast } from '@react-aria/toast';\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n IconButton,\n} from '@danske/sapphire-react';\n\nimport styles from '@danske/sapphire-css/components/toast/toast.module.css';\nimport { ToastState } from '@react-stately/toast';\nimport { Close } from '@danske/sapphire-icons/react';\n\nexport type ToastProps<T> = AriaToastProps<T> &\n SapphireStyleProps & {\n state: ToastState<T>;\n };\n\nexport const Toast = <T,>({ state, ...props }: ToastProps<T>) => {\n const {\n styleProps: { style, className },\n } = useSapphireStyleProps(props);\n\n const ref = useRef(null);\n const { toastProps, titleProps, closeButtonProps } = useToast(\n props,\n state,\n ref\n );\n\n return (\n <div\n {...toastProps}\n className={clsx(\n styles['sapphire-toast'],\n props.toast.animation\n ? styles[`sapphire-toast--${props.toast.animation}`]\n : {},\n className\n )}\n style={style}\n ref={ref}\n onAnimationEnd={() => {\n // Remove the toast when the exiting animation completes.\n if (props.toast.animation === 'exiting') {\n state.remove(props.toast.key);\n }\n }}\n >\n <div className={clsx(styles['sapphire-toast__content'])}>\n <div {...titleProps}>{props.toast.content}</div>\n <IconButton\n {...closeButtonProps}\n aria-label=\"Close\"\n size=\"small\"\n variant=\"tertiary\"\n appearance=\"ghost\"\n >\n <Close />\n </IconButton>\n </div>\n </div>\n );\n};\n","import React, { useRef } from 'react';\nimport { AriaToastRegionProps, useToastRegion } from '@react-aria/toast';\nimport clsx from 'clsx';\nimport {\n SapphireOverlayContainer,\n SapphireStyleProps,\n ThemeRoot,\n useThemeContext,\n} from '@danske/sapphire-react';\n\nimport styles from '@danske/sapphire-css/components/toast/toast.module.css';\nimport { ToastState } from '@react-stately/toast';\nimport { Toast } from './Toast';\n\ntype VerticalPlacement = 'top' | 'bottom';\ntype HorizontalPlacement = 'left' | 'right';\n\nexport type ToastRegionProps<T> = AriaToastRegionProps &\n SapphireStyleProps & {\n state: ToastState<T>;\n /**\n * Placement of the Toast notifications on the page.\n */\n placement?:\n | VerticalPlacement\n | `${VerticalPlacement}-${HorizontalPlacement}`;\n };\n\nexport const ToastRegion = <T,>({\n state,\n placement = 'bottom',\n ...props\n}: ToastRegionProps<T>) => {\n const ref = useRef(null);\n const { regionProps } = useToastRegion(props, state, ref);\n const { overlayZIndex = 100 } = useThemeContext();\n\n return (\n <SapphireOverlayContainer>\n <ThemeRoot contrast>\n <div\n {...regionProps}\n ref={ref}\n className={clsx(\n styles['sapphire-toast-container'],\n styles[`sapphire-toast-container--${placement}`]\n )}\n style={\n {\n zIndex: overlayZIndex + 200,\n } /* above overlays from @danske/sapphire-react */\n }\n >\n {state.visibleToasts.map((toast) => (\n <Toast {...props} key={toast.key} toast={toast} state={state} />\n ))}\n </div>\n </ThemeRoot>\n </SapphireOverlayContainer>\n );\n};\n","import React, { ReactNode, useContext } from 'react';\nimport { ToastState } from '@react-stately/toast';\n\nexport const ToastContext = React.createContext<ToastState<ReactNode> | null>(\n null\n);\n\nexport const useToastContext = () => {\n const context = useContext(ToastContext);\n\n return context;\n};\n","import React, { ReactNode } from 'react';\nimport { useThemeCheck } from '@danske/sapphire-react';\n\nimport { useToastState } from '@react-stately/toast';\nimport { ToastRegionProps, ToastRegion } from './ToastRegion';\nimport { ToastContext } from './context';\n\nexport type ToastProviderProps = Omit<ToastRegionProps<ReactNode>, 'state'> & {\n children: React.ReactNode;\n};\n\n/**\n * Sapphire toast provider.\n * Render this at the root of your app.\n */\nexport const ToastProvider = ({\n children,\n placement = 'bottom',\n ...props\n}: ToastProviderProps) => {\n useThemeCheck();\n\n const state = useToastState<ReactNode>({\n maxVisibleToasts: 1,\n hasExitAnimation: true,\n });\n\n return (\n <ToastContext.Provider value={state}>\n {children}\n {state.visibleToasts.length > 0 && (\n <ToastRegion {...props} state={state} placement={placement} />\n )}\n </ToastContext.Provider>\n );\n};\n","import { ReactNode } from 'react';\nimport { useToastContext } from './context';\n\nexport type ShowToastFn = (\n content: ReactNode,\n options?: ShowToastOptions\n) => void;\n\nexport interface ShowToastOptions {\n /**\n * Handler that is called when the toast is closed, either by the user\n * or after a timeout.\n */\n onClose?: () => void;\n /**\n * A timeout to automatically close the toast after, in milliseconds.\n * Note that if the toast is hovered or interacted with, the timeout is\n * paused.\n *\n * @default 3000\n */\n timeout?: number;\n}\n\nexport const useShowToast = (): ShowToastFn => {\n const toastState = useToastContext();\n\n if (!toastState) {\n throw new Error('\"useShowToast\" should be used inside a <ToastProvider>.');\n }\n\n return (content, options) => {\n const { onClose, timeout = 3000 } = options || {};\n /*\n * NOTE:\n * There is an addition \"priority\" parameter to \".add\".\n * We don't use it now, but we should if we will have different types of\n * toast notifications with different priorities.\n */\n toastState.add(content, { onClose, timeout });\n };\n};\n","import { Key } from 'react';\nimport {\n TreeProps as OriginalTreeProps,\n TreeState,\n useTreeState as useOriginalTreeState,\n} from '@react-stately/tree';\n\n/**\n * A wrapper for `useTreeState` to add support of single expanded item\n *\n * More details here\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-stately/tree/src/useTreeState.ts\n */\n\nexport interface TreeProps<T> extends OriginalTreeProps<T> {\n expansionMode?: TreeExpansionMode;\n}\n\nexport type TreeExpansionMode = 'single' | 'multiple';\n\nexport function useTreeState<T extends object>(\n props: TreeProps<T>\n): TreeState<T> {\n const state = useOriginalTreeState(props);\n\n const onToggle = (key: Key) => {\n state.setExpandedKeys(\n toggleKey(state.expandedKeys, key, props.expansionMode)\n );\n };\n\n return { ...state, toggleKey: onToggle };\n}\n\nfunction toggleKey(\n set: Set<Key>,\n key: Key,\n expansionMode: TreeExpansionMode = 'multiple'\n): Set<Key> {\n const res = new Set(set);\n if (res.has(key)) {\n res.delete(key);\n } else {\n if (expansionMode === 'single') res.clear();\n res.add(key);\n }\n\n return res;\n}\n","import React, { ReactNode, useRef } from 'react';\nimport { Node, ItemProps } from '@react-types/shared';\nimport { TreeState } from '@react-stately/tree';\nimport { useHover, usePress } from '@react-aria/interactions';\nimport { useFocusRing } from '@react-aria/focus';\nimport { mergeProps } from '@react-aria/utils';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/accordion/accordion.module.css';\nimport { HeadingProps, Icon } from '@danske/sapphire-react';\nimport { ChevronDown } from '@danske/sapphire-icons/react';\nimport { useAccordionItem } from '@react-aria/accordion';\nimport { Item } from '@react-stately/collections';\n\ninterface AccordionItemProps<T> {\n item: Node<T>;\n state: TreeState<T>;\n headerLevel: HeadingProps['level'];\n}\n\nexport function _AccordionItem<T>(props: AccordionItemProps<T>): JSX.Element {\n const { state, item } = props;\n\n const isOpen = state.expandedKeys.has(item.key);\n const isDisabled = state.disabledKeys.has(item.key);\n\n const { isHovered, hoverProps } = useHover({ isDisabled });\n const { pressProps, isPressed } = usePress({ isDisabled });\n const { focusProps, isFocusVisible } = useFocusRing();\n\n const ref = useRef<HTMLButtonElement>(null);\n\n const { buttonProps, regionProps } = useAccordionItem<T>(props, state, ref);\n\n /**\n * Fixes the bug when the onKeyDown event handler set on the useSelectableCollection\n * (a dependency of useAccordion) interfered with the keyboard events handling\n * and blocked the usage of some keyboard shortcuts for Accordion.Item children.\n * E.g. changing DateField value with Arrow key or text selection with Shift+ArrowUp.\n *\n * Source:\n * https://github.com/adobe/react-spectrum/blob/546ffa41f7d1d3a566950a14d8f46cf726891220/packages/%40react-aria/selection/src/useSelectableCollection.ts#L178\n */\n const onKeyDown = (e: React.KeyboardEvent) => {\n e.stopPropagation();\n };\n\n return (\n <div\n className={clsx(styles['sapphire-accordion__item'], {\n [styles['sapphire-accordion__item--open']]: isOpen,\n [styles['is-disabled']]: isDisabled,\n })}\n >\n <div role=\"heading\" aria-level={props.headerLevel}>\n <button\n {...mergeProps(buttonProps, hoverProps, pressProps, focusProps)}\n aria-disabled={isDisabled}\n ref={ref}\n className={clsx(\n styles['sapphire-accordion__item-header'],\n styles['js-focus'],\n styles['js-hover'],\n {\n [styles['is-focus']]: isFocusVisible,\n [styles['is-hover']]: isHovered,\n [styles['is-active']]: isPressed,\n }\n )}\n >\n {item.props.heading}\n <div className={clsx(styles['sapphire-accordion__item-arrow'])}>\n <Icon>\n <ChevronDown />\n </Icon>\n </div>\n </button>\n </div>\n <div\n {...mergeProps(regionProps, { onKeyDown })}\n aria-hidden={!isOpen}\n className={clsx(styles['sapphire-accordion__item-content-wrapper'])}\n >\n <div className={clsx(styles['sapphire-accordion__item-content'])}>\n {item.props.children}\n </div>\n </div>\n </div>\n );\n}\n\nexport interface SapphireAccordionItemProps<T>\n extends Omit<ItemProps<T>, 'title'> {\n heading: ReactNode;\n}\n\nexport const AccordionItem = Item as <T>(\n props: SapphireAccordionItemProps<T>\n) => JSX.Element;\n","import React, { ForwardedRef, Ref, forwardRef } from 'react';\nimport styles from '@danske/sapphire-css/components/accordion/accordion.module.css';\nimport clsx from 'clsx';\nimport {\n HeadingProps,\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport { CollectionBase, DOMProps, Expandable } from '@react-types/shared';\nimport { useAccordion } from '@react-aria/accordion';\nimport { TreeExpansionMode, useTreeState } from './useTreeState';\n\nimport { _AccordionItem } from './AccordionItem';\nimport { filterDOMProps, mergeProps, useObjectRef } from '@react-aria/utils';\n\nexport interface SapphireAccordionProps<T>\n extends SapphireStyleProps,\n CollectionBase<T>,\n DOMProps,\n Expandable {\n /** Allow one or many expanded items\n * @default 'multiple'\n */\n expansionMode?: TreeExpansionMode;\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?: HeadingProps['level'];\n /**\n * Removes the divider after the last list item.\n * Useful when rendered in a container which already has borders.\n */\n hideLastDivider?: boolean;\n}\n\nconst _Accordion = <T extends object>(\n {\n expansionMode = 'multiple',\n headerLevel = 5,\n hideLastDivider = false,\n ...props\n }: SapphireAccordionProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) => {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n const state = useTreeState<T>({ ...props, expansionMode });\n const forwardedRef = useObjectRef<HTMLDivElement>(ref);\n\n const { accordionProps } = useAccordion(props, state, forwardedRef);\n\n return (\n <div\n {...mergeProps(\n accordionProps,\n filterDOMProps(props, { labelable: true })\n )}\n className={clsx(\n styles['sapphire-accordion'],\n {\n [styles['sapphire-accordion--without-last-divider']]: hideLastDivider,\n },\n styleProps.className\n )}\n ref={forwardedRef}\n style={styleProps.style}\n >\n {[...state.collection].map((item) => (\n <_AccordionItem<T>\n headerLevel={headerLevel}\n key={item.key}\n item={item}\n state={state}\n />\n ))}\n </div>\n );\n};\n\nexport const Accordion = forwardRef(_Accordion) as <T extends object>(\n props: SapphireAccordionProps<T> & { ref?: Ref<HTMLDivElement> }\n) => React.ReactElement;\n","import React, { ReactNode } from 'react';\nimport styles from '@danske/sapphire-css/components/accordion/accordion.module.css';\nimport clsx from 'clsx';\nimport { DOMProps } from '@react-types/shared';\nimport { filterDOMProps } from '@react-aria/utils';\n\nexport interface SapphireAccordionHeadingProps extends DOMProps {\n children?: ReactNode;\n}\n\nexport const AccordionHeading = ({\n children,\n ...props\n}: SapphireAccordionHeadingProps) => {\n return (\n <div\n {...filterDOMProps(props)}\n className={clsx(styles['sapphire-accordion__item-heading'])}\n >\n {children}\n </div>\n );\n};\n","import { Accordion, type SapphireAccordionProps } from './src/Accordion';\nimport {\n AccordionHeading,\n SapphireAccordionHeadingProps,\n} from './src/AccordionHeading';\nimport {\n AccordionItem,\n type SapphireAccordionItemProps,\n} from './src/AccordionItem';\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. https://jira.danskebank.com/browse/UC-3414 (fixed)\n * https://jira.danskebank.com/browse/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});\n\nexport {\n _Accordion as Accordion,\n type SapphireAccordionProps,\n type SapphireAccordionItemProps,\n type SapphireAccordionHeadingProps,\n};\n","import { DOMRef, DOMProps } from '@react-types/shared';\nimport { filterDOMProps } from '@react-aria/utils';\nimport React, { ElementType, forwardRef } from 'react';\nimport { useDOMRef } from '@react-spectrum/utils';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/text/text.module.css';\n\nimport {\n useThemeCheck,\n useTextStyleProps,\n TextStyleProps,\n SapphireStyleProps,\n} from '@danske/sapphire-react';\n\ntype HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface TypographyHeadingProps\n extends DOMProps,\n TextStyleProps,\n SapphireStyleProps {\n children: React.ReactNode;\n /**\n * The level of the heading.\n */\n level: HeadingLevel;\n elementType?: `h${HeadingLevel}`;\n fontVariant?: 'default' | 'alternative';\n}\n\nexport const Heading = forwardRef(function Heading(\n props: TypographyHeadingProps,\n ref: DOMRef<HTMLHeadingElement>\n) {\n useThemeCheck();\n\n const domProps = filterDOMProps(props);\n const { children, level, elementType, ...otherProps } = props;\n const { styleProps } = useTextStyleProps(otherProps);\n const domRef = useDOMRef(ref);\n const HeadingTag = elementType ? elementType : (`h${level}` as ElementType);\n\n return (\n <HeadingTag\n {...domProps}\n {...styleProps}\n className={clsx(\n styles['sapphire-text'],\n styles[`sapphire-text--heading-${level}` as const],\n styleProps.className,\n {\n [styles['sapphire-text--heading-alternative']]:\n props.fontVariant === 'alternative',\n }\n )}\n ref={domRef}\n >\n {children}\n </HeadingTag>\n );\n});\n","import { DOMProps } from '@react-types/shared';\nimport { filterDOMProps } from '@react-aria/utils';\nimport React, { ElementType, forwardRef } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/text/text.module.css';\nimport {\n SapphireStyleProps,\n TextStyleProps,\n useTextStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\n\nexport interface TypographySubheadingProps\n extends DOMProps,\n TextStyleProps,\n SapphireStyleProps {\n children: React.ReactNode;\n /**\n * The actual DOM element to render.\n * @default 'div'\n */\n elementType?: string;\n /**\n * Sets level of the hierarchy of the subheading.\n * @default 1\n */\n level?: 1 | 2;\n\n /**\n * If text is bold\n * @default false\n */\n isBold?: boolean;\n}\n\n/**\n * A subheading is a piece of text used under regular headings (h1-h6).\n * A subheading is not itself a heading, but it can assist a heading by\n * providing a description to the heading it accompanies.\n * By default, it renders as block text (div), but you can render it as\n * anything else.\n *\n * See:\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element#text_content\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element#inline_text_semantics\n */\nexport const Subheading = forwardRef(function Subheading(\n props: TypographySubheadingProps,\n ref: React.ForwardedRef<HTMLElement>\n) {\n useThemeCheck();\n\n const {\n children,\n level = 1,\n elementType: CustomElement = 'div' as ElementType,\n isBold = false,\n ...otherProps\n } = props;\n const { styleProps } = useTextStyleProps(otherProps);\n const levelClassName = `sapphire-text--subheading-${level}` as const;\n\n return (\n <CustomElement\n {...filterDOMProps(props)}\n {...styleProps}\n className={clsx(\n styleProps.className,\n styles['sapphire-text'],\n styles[levelClassName],\n {\n [styles['sapphire-text--strong']]: isBold,\n }\n )}\n style={styleProps.style}\n ref={ref}\n >\n {children}\n </CustomElement>\n );\n});\n","import { DOMProps } from '@react-types/shared';\nimport { filterDOMProps } from '@react-aria/utils';\nimport React, { ElementType, forwardRef } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/text/text.module.css';\nimport {\n SapphireStyleProps,\n TextStyleProps,\n useTextStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\n\nexport interface TypographyBodyProps\n extends DOMProps,\n TextStyleProps,\n SapphireStyleProps {\n children: React.ReactNode;\n /**\n * The actual DOM element to render.\n * @default 'p'\n */\n elementType?: string;\n /**\n * Sets the level of the hierarchy of the text.\n * @default 1\n */\n level?: 1 | 2 | 3;\n /**\n * If text should be underlined.\n * @default false\n */\n isUnderlined?: boolean;\n\n /**\n * If text is bold.\n * @default false\n */\n isBold?: boolean;\n}\n\n/**\n * Body text. This is the most common text style. By default, it renders as a\n * paragraph (p), but you can render it as a span or something else.\n *\n * See:\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element#text_content\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element#inline_text_semantics\n */\nexport const Body = forwardRef(function Body(\n props: TypographyBodyProps,\n ref: React.ForwardedRef<HTMLElement>\n) {\n useThemeCheck();\n\n const {\n children,\n level = 1,\n elementType: CustomElement = 'p' as ElementType,\n isUnderlined = false,\n isBold = false,\n ...otherProps\n } = props;\n const { styleProps } = useTextStyleProps(otherProps);\n const levelClassName = `sapphire-text--body-${level}` as const;\n\n return (\n <CustomElement\n {...filterDOMProps(props)}\n {...styleProps}\n className={clsx(\n styleProps.className,\n styles['sapphire-text'],\n styles[levelClassName],\n {\n [styles['sapphire-text--strong']]: isBold,\n [styles['sapphire-text--underlined']]: isUnderlined,\n }\n )}\n style={styleProps.style}\n ref={ref}\n >\n {children}\n </CustomElement>\n );\n});\n","import { DOMProps } from '@react-types/shared';\nimport { filterDOMProps } from '@react-aria/utils';\nimport React, { ElementType, forwardRef } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/text/text.module.css';\nimport {\n SapphireStyleProps,\n TextStyleProps,\n useTextStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\n\nexport interface TypographyCaptionProps\n extends DOMProps,\n TextStyleProps,\n SapphireStyleProps {\n children: React.ReactNode;\n /**\n * The actual DOM element to render.\n * @default 'div'\n */\n elementType?: string;\n /**\n * Sets the level of the hierarchy of the caption.\n * @default 1\n */\n level?: 1 | 2;\n}\n\n/**\n * Caption text. Usually serves as a description of an adjecent picture or\n * other element.\n * By default, it renders as inline text (div), but you can render it as\n * something more semantically meaningful.\n *\n * See:\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element#text_content\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element#inline_text_semantics\n */\nexport const Caption = forwardRef(function Caption(\n props: TypographyCaptionProps,\n ref: React.ForwardedRef<HTMLElement>\n) {\n useThemeCheck();\n\n const {\n children,\n level = 1,\n elementType: CustomElement = 'div' as ElementType,\n ...otherProps\n } = props;\n const { styleProps } = useTextStyleProps(otherProps);\n const levelClassName = `sapphire-text--caption-${level}` as const;\n\n return (\n <CustomElement\n {...filterDOMProps(props)}\n {...styleProps}\n className={clsx(\n styleProps.className,\n styles['sapphire-text'],\n styles[levelClassName]\n )}\n style={styleProps.style}\n ref={ref}\n >\n {children}\n </CustomElement>\n );\n});\n","import { Heading, type TypographyHeadingProps } from './src/Heading';\nimport { Subheading, type TypographySubheadingProps } from './src/Subheading';\nimport { Body, type TypographyBodyProps } from './src/Body';\nimport { Caption, TypographyCaptionProps } from './src/Caption';\nimport { ComponentType } from 'react';\n\nexport const Typography: {\n Heading: ComponentType<TypographyHeadingProps>;\n Subheading: ComponentType<TypographySubheadingProps>;\n Body: ComponentType<TypographyBodyProps>;\n Caption: ComponentType<TypographyCaptionProps>;\n} = {\n Heading,\n Subheading,\n Body,\n Caption,\n};\n\nexport type {\n TypographyHeadingProps,\n TypographySubheadingProps,\n TypographyBodyProps,\n TypographyCaptionProps,\n};\n","import React, { ReactNode } from 'react';\n\nimport {\n SapphireStyleProps,\n useThemeCheck,\n Field,\n Label,\n} from '@danske/sapphire-react';\nimport { useField } from '@react-aria/label';\nimport { mergeProps } from '@react-aria/utils';\n\nexport type FieldsetProps = SapphireStyleProps & {\n /**\n * A label that describes the groups of fields.\n * The label is required because a fieldset that is not labelled is not\n * better than separate labelled fields.\n */\n label: ReactNode;\n /**\n * Whether the input is disabled.\n * */\n isDisabled?: boolean;\n /**\n * Whether the input is disabled.\n * */\n isRequired?: 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.\n * A `string` 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 | string;\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 ContextualHelp to render next to the label.\n */\n contextualHelp?: ReactNode;\n /**\n * @default 'large'\n */\n size?: 'large' | 'medium';\n /**\n * To visually indicate if this field is required or optional.\n * @default false\n */\n necessityIndicator?: boolean;\n /**\n * Children should be two or more form controls without labels, notes or\n * error messages.\n *\n * We recommend you only use these fields inside: `<TextField>`, `<Select> `,\n * `<SearchableSelect>`, `<MultiSelect>`, `<SearchableMultiSelect>`,\n * `<DateField>` or `<DateRangeField>`.\n *\n * Example:\n * ```jsx\n * <Fieldset label=\"Phone Number\">\n * <Select aria-label=\"Country code\" placeholder=\"+00\" width={90}>\n * <SelectItem>+40</SelectItem>\n * <SelectItem>+42</SelectItem>\n * <SelectItem>+45</SelectItem>\n * </Select>\n * <TextField\n * aria-label=\"Phone number\"\n * placeholder=\"000-000-0000\"\n * ></TextField>\n * </Fieldset>\n * ```\n */\n children: ReactNode;\n\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\n/**\n * Sapphire search input field.\n */\nexport const Fieldset = ({\n label,\n contextualHelp,\n note,\n error,\n isDisabled,\n isRequired,\n necessityIndicator,\n children,\n size = 'large',\n labelPlacement = 'above',\n ...props\n}: FieldsetProps) => {\n useThemeCheck();\n\n const { fieldProps, descriptionProps, errorMessageProps } = useField({\n isInvalid: !!error,\n label,\n });\n\n return (\n <Field\n elementType=\"fieldset\"\n error={!!error}\n isDisabled={isDisabled}\n size={size}\n labelPlacement={labelPlacement}\n {...mergeProps(props, fieldProps)}\n >\n <Field.Label elementType=\"legend\">\n <Label\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 <Field.Control isGroup>{children}</Field.Control>\n {(error || note) && (\n <Field.Footer>\n {error ? (\n <Field.Note {...errorMessageProps}>{error}</Field.Note>\n ) : note ? (\n <Field.Note {...descriptionProps}>{note}</Field.Note>\n ) : (\n <></>\n )}\n </Field.Footer>\n )}\n </Field>\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);\n\n return (\n <>\n <PressResponder\n onPress={() => {\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, useRef } from 'react';\nimport clsx from 'clsx';\nimport {\n Heading,\n Icon,\n SapphireStyleProps,\n useButton,\n useSapphireStyleProps,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/dropzone/dropzone.module.css';\nimport { Upload } from '@danske/sapphire-icons/react';\nimport { Body } from '../../Typography/src/Body';\nimport {\n HoverProps,\n Pressable,\n useHover,\n usePress,\n} from '@react-aria/interactions';\nimport { mergeProps, useId } 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 SapphireStyleProps,\n Omit<DropOptions, 'hasDropButton'>,\n HoverProps,\n FileSelectProps,\n AriaLabelingProps {\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 ref: ForwardedRef<HTMLDivElement>\n) {\n const {\n isDisabled = false,\n hasError,\n renderInstruction,\n onFileSelectOpen = () => null,\n acceptedFileTypes,\n allowsMultiple,\n onDrop = () => null,\n } = props;\n\n const id = useId();\n const paragraphId = props['aria-label'] ? undefined : id;\n const format = useMessageFormatter(intlMessages);\n const pressableRef = useRef(null);\n const { hoverProps, isHovered } = useHover({ isDisabled });\n const { styleProps } = useSapphireStyleProps(props);\n const {\n dropProps,\n dropButtonProps,\n isDropTarget: isDropping,\n } = useDrop({\n ...props,\n ref: pressableRef,\n hasDropButton: true,\n isDisabled,\n });\n const { buttonProps } = useButton(\n { ...dropButtonProps, elementType: 'div' },\n pressableRef\n );\n const { focusProps, isFocusVisible } = useFocusRing();\n const { pressProps, isPressed } = usePress({});\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 pressProps\n )}\n ref={ref}\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>\n <Upload />\n </Icon>\n </div>\n <div className={clsx(styles['sapphire-dropzone__heading'])}>\n <Heading level={6}>\n {isDropping\n ? format('dropzone-heading-dropping')\n : format('dropzone-heading-default')}\n </Heading>\n </div>\n <div\n id={paragraphId}\n className={clsx(styles['sapphire-dropzone__paragraph'])}\n >\n <Body level={2}>{renderInstruction(isDropping)}</Body>\n </div>\n </div>\n </div>\n </Pressable>\n </FileTrigger>\n );\n});\n","import React, { ReactNode } from 'react';\nimport {\n Dialog,\n DialogProps,\n SapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport {\n FeedbackMessage,\n SapphireFeedbackMessageProps,\n} from '../../FeedbackMessage';\nimport { AriaModalOverlayProps } from '@react-aria/overlays';\nimport { DOMRef } from '@react-types/shared';\n\nexport type SapphireAlertDialogProps = AriaModalOverlayProps &\n SapphireStyleProps &\n Pick<DialogProps, 'isOpen' | 'onClose'> &\n Omit<SapphireFeedbackMessageProps, 'heading' | 'actions'> & {\n /**\n *\n * @default \"horizontal\"\n */\n actionsOrientation?: 'vertical' | 'horizontal';\n /**\n * The elements that will be rendered in the footer of the dialog.\n */\n actions: ReactNode;\n /**\n * The title of the dialog.\n */\n heading: string;\n };\n\nexport const AlertDialog = React.forwardRef(function AlertDialog(\n props: SapphireAlertDialogProps,\n ref: DOMRef<HTMLDivElement>\n) {\n useThemeCheck();\n\n const {\n variant = 'neutral',\n icon,\n body,\n actionsOrientation = 'horizontal',\n actions,\n heading,\n ...rest\n } = props;\n\n return (\n <Dialog\n ref={ref}\n role=\"alertdialog\"\n type=\"active\"\n size=\"extra-small\"\n header={<></>}\n content={\n <Dialog.Content>\n <FeedbackMessage\n heading={<Dialog.Header level={6} heading={heading} />}\n variant={variant}\n icon={icon}\n body={body}\n />\n </Dialog.Content>\n }\n footer={\n <Dialog.Footer stretch=\"autoVertical\" orientation={actionsOrientation}>\n {actions}\n </Dialog.Footer>\n }\n {...rest}\n />\n );\n});\n","import { 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';\nimport { Validation } from '@react-types/shared';\n\nexport interface SapphireNumberFieldProps\n /**\n * Reasons to omit the below properties:\n * - Validation:\n * - validationState: we handle that with the `error` prop instead.\n * - errorMessage: our own error-prop covers the same.\n */\n extends Omit<\n AriaNumberFieldProps,\n 'errorMessage' | keyof Omit<Validation<unknown>, 'isRequired'>\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 `string` 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 | string;\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 { 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 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 { CaretUp, CaretDown } 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: 'large' | 'medium';\n}) => {\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(buttonProps, hoverProps, filterDOMProps(props))}\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 === 'large' ? 'm' : 's'}>\n {variant === 'increment' ? <CaretUp /> : <CaretDown />}\n </Icon>\n </button>\n );\n};\n","import { mergeProps, useObjectRef } from '@react-aria/utils';\nimport { createFocusableRef } from '@react-spectrum/utils';\nimport { FocusableRefValue, PressEvents } from '@react-types/shared';\nimport React from 'react';\nimport {\n ForwardedRef,\n forwardRef,\n ReactNode,\n RefObject,\n useImperativeHandle,\n useRef,\n} from 'react';\nimport {\n SapphireNumberFieldProps,\n useSapphireNumberField,\n} from './useSapphireNumberField';\nimport textFieldStyles from '@danske/sapphire-css/components/textField/textField.module.css';\nimport { useFocusRing } from '@react-aria/focus';\nimport clsx from 'clsx';\nimport {\n Field,\n Label,\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport { useAutofillStyle } from './useAutofillStyle';\nimport { useMessageFormatter } from '@react-aria/i18n';\nimport intlMessages from '../i18n';\nimport { StepperButton } from './StepperButton';\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 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 ContextualHelp 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 'large'\n */\n size?: 'large' | 'medium';\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 = 'large',\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(props);\n const { styleProps } = useSapphireStyleProps(props);\n const { autofillStyles, updateStyle } = useAutofillStyle<'input'>(inputRef);\n\n const domRef = useRef<HTMLDivElement>(null);\n\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(domRef, 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={domRef}\n isDisabled={isDisabled}\n error={!!error}\n size={size}\n labelPlacement={labelPlacement}\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--medium']]: size === 'medium',\n })}\n style={{\n ...(styleProps.style.width\n ? { width: styleProps.style.width }\n : {}),\n }}\n >\n {prefix && (\n <span\n className={clsx(textFieldStyles['sapphire-text-field__prefix'], {\n [textFieldStyles['sapphire-text-field__prefix--icon']]:\n typeof prefix !== 'string',\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(textFieldStyles['sapphire-text-field__postfix'], {\n [textFieldStyles['sapphire-text-field__postfix--icon']]:\n typeof postfix !== 'string',\n })}\n >\n {postfix}\n </span>\n )}\n {showButtons && (\n <div\n className={clsx(textFieldStyles['sapphire-text-field__stepper'])}\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 || note) && (\n <Field.Footer>\n {error ? (\n <Field.Note {...errorMessageProps}>{error}</Field.Note>\n ) : note ? (\n <Field.Note {...descriptionProps}>{note}</Field.Note>\n ) : (\n <></>\n )}\n </Field.Footer>\n )}\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"],"names":["React","useThemeCheck","useFocusableRef","useHover","useSapphireStyleProps","clsx","styles","Icon","useToggleState","useToggleButton","usePreventTouchEnd","FocusRing","__spreadProps","__spreadValues","mergeProps","da","en","de","fi","no","pl","se","useLocale","useCalendarGrid","endOfMonth","getWeeksInMonth","useDateFormatter","useMemo","startOfWeek","today","useMessageFormatter","intlMessages","date","isSameMonth","useCalendarCell","isSameDay","getDayOfWeek","startOfMonth","getLocalTimeZone","isSameYear","useEffect","focusWithoutScrolling","usePress","startOfYear","endOfYear","useControlledState","useCalendarState","IconButton","ChevronLeft","ChevronRight","TransitionGroup","CSSTransition","useState","createCalendar","useCalendar","filterDOMProps","Button","useRef","originalUseRangeCalendarState","useObjectRef","useRangeCalendar","toCalendarDate","PopoverTrigger","Flex","tokens","VisuallyHidden","ChevronUp","ChevronDown","LocalizedStringDictionary","useDateSegment","useButton","useFocusRing","useCustomDateFormatLocale","useDateFieldState","useDateField","CloseCircle","useDialog","useDatePickerState","useDatePicker","Field","Label","PressResponder","CalendarIcon","Popover","View","forwardRef","originalUseDateRangePickerState","ArrowRight","useDateRangePicker","I18nProvider","Calendar","CheckMarkCircle","AlertCircle","AlertTriangle","Bell","Heading","originalUseComboBoxState","useComboBox","useSearchFieldState","useSearchField","Search","ListBoxPopover","__objRest","useToast","Close","useToastRegion","useThemeContext","SapphireOverlayContainer","ThemeRoot","useContext","useToastState","useOriginalTreeState","useAccordionItem","Item","_Accordion","useAccordion","useTextStyleProps","useDOMRef","label","useField","useId","useDrop","useClipboard","Pressable","Upload","Dialog","useNumberFieldState","useNumberField","CaretUp","CaretDown","useImperativeHandle","createFocusableRef","textFieldStyles"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/ToggleButton/src/ToggleButton.tsx","../../src/Calendar/i18n/index.ts","../../src/Calendar/src/CalendarButtons.tsx","../../src/Calendar/src/utils.ts","../../src/Calendar/src/CalendarDaysGrid.tsx","../../src/Calendar/src/CalendarMonthOrYearCell.tsx","../../src/Calendar/src/useCustomDurationCalendarGrid.tsx","../../src/Calendar/src/CalendarMonthsGrid.tsx","../../src/Calendar/src/CalendarYearsGrid.tsx","../../src/Calendar/src/useSapphireCalendarState.tsx","../../src/Calendar/src/CalendarHeader.tsx","../../src/Calendar/src/CalendarPageAnimation.tsx","../../src/Calendar/src/Calendar.tsx","../../src/Calendar/src/useRangeCalendarState.ts","../../src/Calendar/src/RangeCalendar.tsx","../../src/Spinner/src/Spinner.tsx","../../src/NotificationBadge/src/NotificationBadge.tsx","../../src/Filtering/src/FilterDropdown.tsx","../../src/DateField/src/utils/placeholders.ts","../../src/DateField/src/utils/segments.ts","../../src/DateField/src/DateSegment.tsx","../../src/DateField/src/DateFieldButton.tsx","../../src/DateField/i18n/index.ts","../../src/DateField/src/DateInput.tsx","../../src/DateField/src/DateField.tsx","../../src/DateField/src/useDateRangePickerState.ts","../../src/DateField/src/DateRangeInput.tsx","../../src/DateField/src/DateRangeField.tsx","../../src/DateField/src/helpers.ts","../../src/Avatar/src/Avatar.tsx","../../src/FeedbackMessage/src/FeedbackMessage.tsx","../../src/SearchField/src/useComboBoxState.ts","../../src/SearchField/src/SearchField.tsx","../../src/Toast/src/Toast.tsx","../../src/Toast/src/ToastRegion.tsx","../../src/Toast/src/context.ts","../../src/Toast/src/ToastProvider.tsx","../../src/Toast/src/useShowToast.ts","../../src/Accordion/src/useTreeState.ts","../../src/Accordion/src/AccordionItem.tsx","../../src/Accordion/src/Accordion.tsx","../../src/Accordion/src/AccordionHeading.tsx","../../src/Accordion/index.ts","../../src/Typography/src/Heading.tsx","../../src/Typography/src/Subheading.tsx","../../src/Typography/src/Body.tsx","../../src/Typography/src/Caption.tsx","../../src/Typography/index.ts","../../src/Fieldset/src/Fieldset.tsx","../../src/FileDropzone/src/FileTrigger.tsx","../../src/FileDropzone/src/utils.ts","../../src/FileDropzone/i18n/index.ts","../../src/FileDropzone/src/FileDropzone.tsx","../../src/AlertDialog/src/AlertDialog.tsx","../../src/NumberField/src/useSapphireNumberField.ts","../../src/NumberField/src/useAutofillStyle.ts","../../src/NumberField/i18n/index.ts","../../src/NumberField/src/StepperButton.tsx","../../src/NumberField/src/NumberField.tsx","../../src/Tag/src/Tag.tsx","../../src/Tag/src/TagGroup.tsx","../../src/Tag/src/TagItem.tsx","../../src/LabeledValue/src/LabeledValue.tsx"],"sourcesContent":["import React from 'react';\nimport { useFocusableRef } from '@react-spectrum/utils';\nimport { FocusableRef, PressEvents } from '@react-types/shared';\nimport { FocusRing } from '@react-aria/focus';\nimport { mergeProps } from '@react-aria/utils';\nimport { AriaToggleButtonProps, useToggleButton } from '@react-aria/button';\nimport { useHover } from '@react-aria/interactions';\nimport { useToggleState } from '@react-stately/toggle';\nimport clsx from 'clsx';\n\nimport styles from '@danske/sapphire-css/components/button/button.module.css';\n\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n usePreventTouchEnd,\n Icon,\n} from '@danske/sapphire-react';\n\nexport type SapphireToggleButtonProps = Omit<\n AriaToggleButtonProps<'button'>,\n 'elementType' | 'type'\n> &\n SapphireStyleProps &\n PressEvents & {\n /**\n * @default 'medium'\n */\n size?: 'large' | 'medium' | 'small';\n onChange?: (selected: boolean) => void;\n isSelected?: boolean;\n defaultSelected?: boolean;\n } & (ButtonWithIconProps | ButtonWithoutIconProps);\n\n// TODO: use ButtonWithIconProps and ButtonWithoutIconProps in core, when moved there\nexport interface ButtonWithIconProps {\n /**\n * The icon placed either before or after the `label`, based on `iconAlign` prop.\n * */\n icon: React.ReactNode;\n /**\n * The icon placement relative to the `label`.\n * */\n iconAlign?: 'left' | 'right';\n}\n\nexport interface ButtonWithoutIconProps {\n icon?: never;\n iconAlign?: never;\n}\n\n/**\n * A button with a toggleable `isSelected` state. By default, the selection is toggled when the\n * button is pressed, allowing user to switch between two states or modes.\n */\nexport const ToggleButton = React.forwardRef(function Button(\n {\n iconAlign = 'left',\n icon,\n size = 'medium',\n ...otherProps\n }: SapphireToggleButtonProps,\n ref: FocusableRef<HTMLButtonElement>\n) {\n useThemeCheck();\n\n const { autoFocus, isDisabled } = otherProps;\n const domRef = useFocusableRef<HTMLButtonElement>(ref);\n const { hoverProps, isHovered } = useHover({ isDisabled });\n const { styleProps } = useSapphireStyleProps(otherProps);\n\n const iconWrapper = icon && (\n <span className={clsx(styles['sapphire-button__icon'])}>\n <Icon size={size === 'small' ? 's' : size === 'medium' ? 'm' : 'l'}>\n {icon}\n </Icon>\n </span>\n );\n\n const state = useToggleState(otherProps);\n const { buttonProps, isPressed } = useToggleButton(otherProps, state, domRef);\n usePreventTouchEnd(domRef);\n\n return (\n <FocusRing focusRingClass={clsx(styles['is-focus'])} autoFocus={autoFocus}>\n <button\n {...mergeProps(buttonProps, hoverProps)}\n ref={domRef}\n style={{ ...styleProps.style }}\n className={clsx(\n styles['sapphire-button'],\n styles['js-focus'],\n styles['js-hover'],\n {\n [styles['is-active']]: isPressed,\n [styles['is-hover']]: isHovered,\n [styles['is-disabled']]: isDisabled,\n [styles['sapphire-button--small']]: size === 'small',\n [styles['sapphire-button--large']]: size === 'large',\n [styles['sapphire-button--with-left-icon']]:\n icon && iconAlign === 'left',\n [styles['sapphire-button--with-right-icon']]:\n icon && iconAlign === 'right',\n },\n state.isSelected\n ? styles['sapphire-button--selected']\n : styles['sapphire-button--unselected'],\n styleProps.className\n )}\n >\n {iconAlign === 'left' && iconWrapper}\n {otherProps.children}\n {iconAlign === 'right' && iconWrapper}\n </button>\n </FocusRing>\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 'no-NO': no,\n 'pl-PL': pl,\n 'sv-SE': se,\n};\n","import React, { DOMAttributes, ForwardedRef, HTMLAttributes } from 'react';\nimport clsx from 'clsx';\nimport { FocusRing } from '@react-aria/focus';\n\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\nimport { useHover } from '@react-aria/interactions';\nimport { mergeProps } from '@react-aria/utils';\n\ninterface CalendarButtonProps extends DOMAttributes<HTMLButtonElement> {\n isDisabled?: boolean;\n isSelected?: boolean;\n hasCurrentIndicator?: boolean;\n tabIndex?: HTMLAttributes<HTMLButtonElement>['tabIndex'];\n isInGridCell?: boolean;\n}\n\nexport const CalendarButton = React.forwardRef(function SapphireCalendarButton(\n {\n children,\n className = '',\n isSelected,\n isDisabled,\n isInGridCell,\n hasCurrentIndicator,\n ...otherProps\n }: CalendarButtonProps & { className?: string },\n forwardedRef: ForwardedRef<HTMLButtonElement>\n) {\n const { hoverProps, isHovered } = useHover({ isDisabled });\n const ElementType: 'span' | 'button' = isInGridCell ? 'span' : 'button';\n\n return (\n <FocusRing focusRingClass={styles['is-focus']}>\n <ElementType\n ref={forwardedRef}\n role=\"button\"\n {...(ElementType === 'button' ? ({ type: 'button' } as const) : {})}\n {...mergeProps(otherProps, hoverProps)}\n className={clsx(\n className,\n styles['js-focus'],\n styles['js-hover'],\n styles['sapphire-calendar__button'],\n {\n [styles[`sapphire-calendar__button--selected`]]: isSelected,\n [styles['sapphire-calendar__button--current']]: hasCurrentIndicator,\n [styles[`is-hover`]]: isHovered,\n [styles[`is-disabled`]]: isDisabled,\n }\n )}\n >\n <span className={styles['sapphire-calendar__button-text']}>\n {children}\n </span>\n </ElementType>\n </FocusRing>\n );\n});\n\nexport const CalendarDayButton = React.forwardRef(\n function SapphireCalendarDayButton(\n {\n isOutsideVisibleRange,\n rangeHighlight,\n ...props\n }: CalendarButtonProps & {\n rangeHighlight:\n | { highlighted: false }\n | { highlighted: true; start?: boolean; end?: boolean };\n isOutsideVisibleRange?: boolean;\n },\n forwardedRef: ForwardedRef<HTMLButtonElement>\n ) {\n return (\n <CalendarButton\n {...props}\n isInGridCell\n className={clsx(styles['sapphire-calendar__button--day'], {\n [styles['sapphire-calendar__button--range-selection']]:\n rangeHighlight.highlighted,\n [styles['sapphire-calendar__button--range-start']]:\n rangeHighlight.highlighted && rangeHighlight.start,\n [styles['sapphire-calendar__button--range-end']]:\n rangeHighlight.highlighted && rangeHighlight.end,\n [styles['sapphire-calendar__button--selection-start']]:\n rangeHighlight.highlighted &&\n rangeHighlight.start &&\n props.isSelected,\n [styles['sapphire-calendar__button--selection-end']]:\n rangeHighlight.highlighted &&\n rangeHighlight.end &&\n props.isSelected,\n [styles['sapphire-calendar__button--outside-month']]:\n isOutsideVisibleRange,\n })}\n ref={forwardedRef}\n />\n );\n }\n);\n","/**\n * Creates an array filled with numbers from {@param start} to {@param end}\n */\nexport function range(start: number, end: number): number[] {\n return Array(end - start + 1)\n .fill(null)\n .map((_, index) => start + index);\n}\n\n/**\n * Converts an array into chunks\n * @returns iterator of the chunks\n */\nexport function* chunks<T>(\n array: T[],\n chunkSize: number\n): Generator<T[], void> {\n for (let i = 0; i < array.length; i += chunkSize) {\n yield array.slice(i, i + chunkSize);\n }\n}\n\n/**\n * Uppercases the first letter in the string\n * @param sentence\n * @returns sentence with first letter upper cased\n */\nexport const sentenceCase = (sentence: string): string =>\n sentence.slice(0, 1).toLocaleUpperCase() + sentence.slice(1);\n","import React, { ComponentProps, useMemo } from 'react';\nimport clsx from 'clsx';\nimport {\n AriaCalendarCellProps,\n AriaCalendarGridProps,\n useCalendarCell,\n useCalendarGrid,\n} from '@react-aria/calendar';\nimport { CalendarState, RangeCalendarState } from '@react-stately/calendar';\nimport {\n CalendarDate,\n DateValue,\n endOfMonth,\n getDayOfWeek,\n getLocalTimeZone,\n getWeeksInMonth,\n isSameDay,\n isSameMonth,\n startOfMonth,\n startOfWeek,\n today,\n} from '@internationalized/date';\nimport {\n useDateFormatter,\n useLocale,\n useMessageFormatter,\n} from '@react-aria/i18n';\nimport intlMessages from '../i18n';\n\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\nimport { CalendarDayButton } from './CalendarButtons';\nimport { sentenceCase } from './utils';\n\nexport function CalendarDaysGrid({\n state,\n startDate = state.visibleRange.start,\n showWeekNumbers,\n ...props\n}: {\n state: CalendarState | RangeCalendarState;\n startDate?: CalendarDate;\n showWeekNumbers?: boolean;\n} & AriaCalendarGridProps): JSX.Element {\n const { locale } = useLocale();\n const { gridProps, headerProps } = useCalendarGrid(\n {\n ...props,\n startDate,\n endDate: endOfMonth(startDate),\n },\n state\n );\n const weeksInMonth = getWeeksInMonth(startDate, locale);\n\n // `weekDays` is returned from useCalendarGrid, but there is currently no option\n // for customizing weekday format. So the corresponding piece of code is copy-pasted\n // from useCalendarGrid, just to use \"short\" format instead of \"narrow\"\n const dayFormatter = useDateFormatter({\n weekday: 'short',\n timeZone: state.timeZone,\n });\n const weekDays = useMemo(() => {\n const weekStart = startOfWeek(today(state.timeZone), locale);\n return [...new Array(7).keys()].map((index) => {\n const date = weekStart.add({ days: index });\n const dateDay = date.toDate(state.timeZone);\n return dayFormatter.format(dateDay);\n });\n }, [locale, state.timeZone, dayFormatter]);\n\n return (\n <table\n {...gridProps}\n className={clsx(styles['sapphire-calendar__table'], {\n [styles['sapphire-calendar__table--with-week-numbers']]:\n showWeekNumbers,\n })}\n >\n <thead {...headerProps}>\n <tr>\n {showWeekNumbers && (\n <th\n className={styles['sapphire-calendar__table-head-cell']}\n aria-hidden=\"true\"\n >\n <span className={styles['sapphire-calendar__week-number']}>\n #\n </span>\n </th>\n )}\n {weekDays.map((day, index) => (\n <th\n key={index}\n className={styles['sapphire-calendar__table-head-cell']}\n >\n <abbr className={styles['sapphire-calendar__day-of-week']}>\n {sentenceCase(day)}\n </abbr>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {[...new Array(weeksInMonth).keys()].map((weekIndex) => {\n return (\n <tr\n className={styles['sapphire-calendar__table-body-row']}\n key={weekIndex}\n >\n {showWeekNumbers && (\n <CalendarWeekNumberCell\n date={startDate.add({ days: 7 * weekIndex })}\n />\n )}\n {state.getDatesInWeek(weekIndex, startDate).map((date, i) =>\n date ? (\n <CalendarCell\n currentMonth={startDate}\n // by passing date.toString() instead of index, we make sure the cell\n // is remounted as we navigate between months. That prevents awkward\n // color transition if the same day-of-the-month is highlighted in one month\n // but not the other.\n key={date.toString()}\n state={state}\n date={date}\n />\n ) : (\n <td key={i} />\n )\n )}\n </tr>\n );\n })}\n <tr></tr>\n </tbody>\n </table>\n );\n}\nfunction CalendarWeekNumberCell({ date }: { date: DateValue }) {\n const weekNumber = getWeekNumber(date);\n const formatMessage = useMessageFormatter(intlMessages);\n return (\n <th\n className={styles['sapphire-calendar__table-body-cell']}\n role=\"rowheader\"\n aria-label={formatMessage('week', { weekNumber })}\n >\n <span className={styles['sapphire-calendar__week-number']}>\n {weekNumber}\n </span>\n </th>\n );\n}\n\nfunction CalendarCell({\n state,\n date,\n currentMonth,\n}: {\n state: CalendarState | RangeCalendarState;\n currentMonth: CalendarDate;\n} & AriaCalendarCellProps) {\n const ref = React.useRef(null);\n const { locale } = useLocale();\n const sameMonth = isSameMonth(date, currentMonth);\n const {\n cellProps,\n buttonProps,\n isSelected: isInSelection,\n isDisabled,\n formattedDate,\n isUnavailable,\n } = useCalendarCell({ date, isDisabled: !sameMonth }, state, ref);\n\n const highlightedRange =\n 'highlightedRange' in state ? state.highlightedRange : null;\n\n const isSelected =\n isInSelection &&\n // if we have a highlighted range, only start and end of the range are styled selected.\n (!highlightedRange ||\n isSameDay(highlightedRange.start, date) ||\n isSameDay(highlightedRange.end, date));\n\n return (\n <td {...cellProps} className={styles['sapphire-calendar__table-body-cell']}>\n <CalendarDayButton\n {...buttonProps}\n ref={ref}\n isSelected={isSelected}\n isDisabled={isDisabled || isUnavailable}\n hasCurrentIndicator={today(state.timeZone).compare(date) === 0}\n isOutsideVisibleRange={!isSameMonth(currentMonth, date)}\n rangeHighlight={\n highlightedRange\n ? getRangeHighlight({ date, highlightedRange, locale })\n : { highlighted: false }\n }\n >\n {formattedDate}\n </CalendarDayButton>\n </td>\n );\n}\n\n/**\n * Given a date and a highlighted range, returns the range highlight state for that date.\n * Note that \"start\" doesn't simply mean start of the range, but means range start **style**,\n * which applies to some dates inside the range as well. A css-only solution could also cover\n * this, but it would require `:has()` selector which is not widely supported at the time of writing\n * this.\n */\nconst getRangeHighlight = ({\n date,\n highlightedRange,\n locale,\n}: {\n date: DateValue;\n highlightedRange: RangeCalendarState['highlightedRange'];\n locale: string;\n}): ComponentProps<typeof CalendarDayButton>['rangeHighlight'] => {\n const isInSelection =\n highlightedRange.start.compare(date) <= 0 &&\n highlightedRange.end.compare(date) >= 0;\n const rangeIsNotASingleDay =\n highlightedRange &&\n !isSameDay(highlightedRange.start, highlightedRange.end);\n const isStartOfWeek = getDayOfWeek(date, locale) === 0;\n const isEndOfWeek = getDayOfWeek(date, locale) === 6;\n const isStartOfMonth = isSameDay(date, startOfMonth(date));\n const isEndOfMonth = isSameDay(date, endOfMonth(date));\n const isStartOfRange =\n highlightedRange && isSameDay(highlightedRange?.start, date);\n const isEndOfRange =\n highlightedRange && isSameDay(highlightedRange?.end, date);\n\n const highlighted = isInSelection && rangeIsNotASingleDay;\n return {\n highlighted,\n start: highlighted && (isStartOfWeek || isStartOfMonth || isStartOfRange),\n end: highlighted && (isEndOfWeek || isEndOfMonth || isEndOfRange),\n };\n};\n\n/**\n * Almost copied from https://weeknumber.com/how-to/javascript\n * No corresponding API found in @internationalized/date package, at the time\n * of writing this.\n * Caveat: this code is based on built-in Date object, and may not be\n * calendar-agnostic. We don't really care about supporting different types\n * of calendar, so it should be fine for now. But we can look into improving\n * this if needed.\n */\nconst getWeekNumber = function (dateValue: DateValue) {\n const date = new Date(dateValue.toDate(getLocalTimeZone()));\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n const week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (\n 1 +\n Math.round(\n ((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7\n )\n );\n};\n","import React, { useEffect } from 'react';\nimport {\n isSameMonth,\n CalendarDate,\n DateField,\n isSameYear,\n today,\n} from '@internationalized/date';\nimport { usePress } from '@react-aria/interactions';\nimport { focusWithoutScrolling, mergeProps } from '@react-aria/utils';\n\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\nimport { SapphireCalendarState } from './useSapphireCalendarState';\nimport { CalendarButton } from './CalendarButtons';\n\nconst isSame = { month: isSameMonth, year: isSameYear } as const;\n\nexport function CalendarMonthOrYearCell({\n date,\n state,\n isDisabled,\n field,\n children,\n}: {\n date: CalendarDate;\n field: Extract<DateField, 'month' | 'year'>;\n state: SapphireCalendarState;\n isDisabled?: boolean;\n children: React.ReactNode;\n}): JSX.Element {\n const ref = React.useRef(null);\n const isFocused = state.focusedDate[field] === date[field];\n\n let tabIndex: number | undefined;\n if (!isDisabled) {\n tabIndex = isSame[field](date, state.focusedDate) ? 0 : -1;\n }\n\n useEffect(() => {\n if (isFocused && ref.current) {\n focusWithoutScrolling(ref.current);\n }\n }, [isFocused, ref]);\n\n const { pressProps } = usePress({\n isDisabled: state.isDisabled || isDisabled,\n onPress: () => {\n state.setFocusedDate(date);\n if (!state.isReadOnly) {\n state.narrowView();\n }\n },\n });\n const buttonProps = mergeProps(pressProps, {\n onFocus() {\n if (!isDisabled) {\n state.setFocusedDate(date);\n }\n },\n tabIndex,\n role: 'button',\n 'aria-disabled': isDisabled || undefined,\n });\n return (\n <td\n className={styles['sapphire-calendar__table-body-cell']}\n role=\"gridcell\"\n >\n <CalendarButton\n ref={ref}\n {...buttonProps}\n isInGridCell\n isSelected={state.value && isSame[field](state.value, date)}\n isDisabled={state.isDisabled || isDisabled}\n hasCurrentIndicator={isSame[field](date, today(state.timeZone))}\n >\n {children}\n </CalendarButton>\n </td>\n );\n}\n","import { CalendarState } from '@react-stately/calendar';\nimport { DateDuration } from '@internationalized/date';\nimport React from 'react';\nimport { DOMAttributes } from '@react-types/shared';\nimport { useLocale } from '@react-aria/i18n';\n\n/**\n * A little generalized but also simplified version of useCalendarGrid, to be used for months and\n * years view. The keyboard navigation in useCalendarGrid is around the assumption of grid cells\n * representing days, but not other durations like month or year.\n *\n * NOTE: only simple arrow key navigation is supported in this hook, and Home/End PageUp/PageDown\n * are left out to keep it simple.\n */\nexport function useCustomDurationCalendarGrid(\n {\n cellsDuration,\n perRow = 3,\n }: {\n cellsDuration: keyof DateDuration;\n perRow?: number;\n },\n state: CalendarState\n): { gridProps: DOMAttributes } {\n const { direction } = useLocale();\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault();\n state.selectFocusedDate();\n break;\n case 'ArrowLeft':\n e.preventDefault();\n e.stopPropagation();\n if (direction === 'rtl') {\n state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: 1 }));\n } else {\n state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: -1 }));\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n e.stopPropagation();\n state.setFocusedDate(\n state.focusedDate.add({ [cellsDuration]: -perRow })\n );\n break;\n case 'ArrowRight':\n e.preventDefault();\n e.stopPropagation();\n if (direction === 'rtl') {\n state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: -1 }));\n } else {\n state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: 1 }));\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\n e.stopPropagation();\n state.setFocusedDate(\n state.focusedDate.add({ [cellsDuration]: perRow })\n );\n break;\n }\n };\n const gridProps = {\n role: 'grid',\n 'aria-readonly': state.isReadOnly || undefined,\n 'aria-disabled': state.isDisabled || undefined,\n onKeyDown,\n onFocus: () => state.setFocused(true),\n onBlur: () => state.setFocused(false),\n };\n return { gridProps };\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport { useDateFormatter } from '@react-aria/i18n';\nimport { endOfMonth, startOfMonth } from '@internationalized/date';\n\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\nimport { chunks, range, sentenceCase } from './utils';\nimport { CalendarMonthOrYearCell } from './CalendarMonthOrYearCell';\nimport { SapphireCalendarState } from './useSapphireCalendarState';\nimport { useCustomDurationCalendarGrid } from './useCustomDurationCalendarGrid';\n\nexport function CalendarMonthsGrid({\n state,\n}: {\n state: SapphireCalendarState;\n}): JSX.Element {\n const formatter = useDateFormatter({\n month: 'long',\n timeZone: state.timeZone,\n });\n\n const numMonths = state.focusedDate.calendar.getMonthsInYear(\n state.focusedDate\n );\n const months = range(1, numMonths).map((month) =>\n formatter.format(state.focusedDate.set({ month }).toDate(state.timeZone))\n );\n const monthRows = [...chunks(months, 3)];\n\n const { gridProps } = useCustomDurationCalendarGrid(\n { cellsDuration: 'months' },\n state\n );\n\n return (\n <table\n className={clsx(\n styles['sapphire-calendar__table'],\n styles['sapphire-calendar__table--month-year']\n )}\n {...gridProps}\n >\n <tbody>\n {monthRows.map((currentRowMonths, rowIndex) => (\n <tr\n key={rowIndex}\n className={styles['sapphire-calendar__table-body-row']}\n >\n {currentRowMonths.map((month, index) => {\n const newFocusedDate = state.focusedDate.set({\n month: months.indexOf(month) + 1,\n });\n\n // Since validation is only about min and max dates, we just\n // check the edges of the period\n const isMonthDisabled =\n state.isInvalid(startOfMonth(newFocusedDate)) &&\n state.isInvalid(endOfMonth(newFocusedDate));\n return (\n <CalendarMonthOrYearCell\n key={index}\n date={newFocusedDate}\n field={'month'}\n isDisabled={isMonthDisabled}\n state={state}\n >\n {sentenceCase(month)}\n </CalendarMonthOrYearCell>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport { endOfYear, startOfYear } from '@internationalized/date';\n\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\nimport { chunks, range } from './utils';\nimport { CalendarMonthOrYearCell } from './CalendarMonthOrYearCell';\nimport { SapphireCalendarState } from './useSapphireCalendarState';\nimport { useCustomDurationCalendarGrid } from './useCustomDurationCalendarGrid';\n\nexport function CalendarYearsGrid({\n state,\n}: {\n state: SapphireCalendarState;\n}): JSX.Element {\n const years = range(\n state.visibleRange.start.year,\n state.visibleRange.end.year\n ).slice(0, 12);\n const yearRows = [...chunks(years, 3)];\n const { gridProps } = useCustomDurationCalendarGrid(\n { cellsDuration: 'years' },\n state\n );\n return (\n <table\n className={clsx(\n styles['sapphire-calendar__table'],\n styles['sapphire-calendar__table--month-year']\n )}\n {...gridProps}\n >\n <tbody>\n {yearRows.map((currentRowYears, rowIndex) => (\n <tr\n key={rowIndex}\n className={styles['sapphire-calendar__table-body-row']}\n >\n {currentRowYears.map((year, index) => {\n const newFocusedDate = state.focusedDate.set({\n year: year,\n });\n // Since validation is only about min and max dates, we just\n // check the edges of the period\n const isYearDisabled =\n state.isInvalid(startOfYear(newFocusedDate)) &&\n state.isInvalid(endOfYear(newFocusedDate));\n return (\n <CalendarMonthOrYearCell\n key={index}\n date={newFocusedDate}\n field={'year'}\n isDisabled={isYearDisabled}\n state={state}\n >\n {year}\n </CalendarMonthOrYearCell>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n","import { DateDuration, DateValue } from '@internationalized/date';\nimport {\n CalendarState,\n CalendarStateOptions,\n useCalendarState,\n} from '@react-stately/calendar';\nimport { useControlledState } from '@react-stately/utils';\n\nexport type CalendarView = 'days' | 'months' | 'years';\nconst viewToVisibleDuration: Record<CalendarView, DateDuration> = {\n days: {\n months: 1,\n },\n months: {\n years: 1,\n },\n years: {\n years: 12,\n },\n};\n\nexport interface SapphireCalendarStateOptions<T extends DateValue>\n extends CalendarStateOptions<T> {\n /**\n * Controls the calendar's view (day, month, year).\n */\n view?: CalendarView;\n\n /**\n * The view of the calendar when it first mounts (uncontrolled).\n */\n defaultView?: CalendarView;\n /**\n * Handler that is called when the view is changed.\n */\n onViewChange?: (value: CalendarView) => void;\n}\n\nexport type SapphireCalendarState = CalendarState & {\n view: CalendarView;\n narrowView: () => void;\n broadenView: () => void;\n canBroadenView: boolean;\n};\n\nexport function useSapphireCalendarState<T extends DateValue>({\n view: viewProp,\n defaultView = 'days',\n onViewChange,\n ...otherOptions\n}: SapphireCalendarStateOptions<T> &\n CalendarStateOptions<T>): SapphireCalendarState {\n const [view, setView] = useControlledState<CalendarView>(\n viewProp,\n defaultView,\n onViewChange\n );\n const state = useCalendarState({\n ...otherOptions,\n visibleDuration: viewToVisibleDuration[view],\n });\n const broadenView = () => {\n switch (view) {\n case 'days':\n return setView('months');\n case 'months':\n return setView('years');\n }\n };\n const narrowView = () => {\n switch (view) {\n case 'months':\n return setView('days');\n case 'years':\n return setView('months');\n }\n };\n const canDrillUp = !state.isReadOnly && ['days', 'months'].includes(view);\n return {\n ...state,\n view: view,\n narrowView,\n broadenView,\n canBroadenView: canDrillUp,\n };\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport { PressProps } from '@react-aria/interactions';\nimport { IconButton } from '@danske/sapphire-react';\nimport { ChevronLeft, ChevronRight } from '@danske/sapphire-icons/react';\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\n/**\n * Calendar header shown above the grid.\n * @internal\n */\nexport function CalendarHeader({\n isLeft,\n isRight,\n children,\n prevButtonProps,\n nextButtonProps,\n}: {\n children: React.ReactNode;\n prevButtonProps?: PressProps;\n nextButtonProps?: PressProps;\n isLeft?: boolean;\n isRight?: boolean;\n}) {\n return (\n <div\n className={clsx(styles['sapphire-calendar__header'], {\n [styles['sapphire-calendar__header--left']]: isLeft,\n [styles['sapphire-calendar__header--right']]: isRight,\n })}\n >\n <div className={styles['sapphire-calendar__header-prev-month']}>\n <IconButton\n {...prevButtonProps}\n variant=\"tertiary\"\n appearance=\"ghost\"\n size=\"large\"\n aria-label=\"Previous\"\n >\n <ChevronLeft />\n </IconButton>\n </div>\n <div className={styles['sapphire-calendar__header-title']}>\n {children}\n </div>\n <div className={styles['sapphire-calendar__header-next-month']}>\n <IconButton\n {...nextButtonProps}\n variant=\"tertiary\"\n appearance=\"ghost\"\n size=\"large\"\n aria-label=\"Next\"\n >\n <ChevronRight />\n </IconButton>\n </div>\n </div>\n );\n}\n","import React, { ReactNode, useState } from 'react';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\nimport { CalendarState } from '@react-stately/calendar';\nimport clsx from 'clsx';\n\nexport function CalendarPageAnimation({\n children,\n state: { direction, key },\n}: {\n children: ReactNode;\n state: CalendarAnimationState;\n}) {\n return (\n <TransitionGroup\n className={clsx(\n styles['sapphire-calendar__grid-page-animation'],\n styles[`sapphire-calendar__grid-page-animation--${direction}`]\n )}\n >\n <CSSTransition\n key={key}\n addEndListener={(node, done) => {\n // Using addEndListener, to avoid passing `timeout` which we can't easily know in js\n node.addEventListener('transitionend', done, false);\n }}\n unmountOnExit\n classNames={{\n enter: styles['enter'],\n enterActive: styles['enter-active'],\n exit: styles['exit'],\n exitActive: styles['exit-active'],\n }}\n >\n {children}\n </CSSTransition>\n </TransitionGroup>\n );\n}\n\ninterface CalendarAnimationState {\n key: React.Key;\n direction: 'prev' | 'next';\n}\n\n/**\n * @param state input calendar state\n * @returns a new calendar state which has additional properties required for animation\n */\nexport function useCalendarAnimationState<\n T extends Pick<CalendarState, 'focusNextPage' | 'focusPreviousPage'>\n>(\n state: T\n): T & {\n animationState: CalendarAnimationState;\n} {\n const [animationState, setAnimationState] = useState<{\n key: number;\n direction: 'prev' | 'next';\n }>({ key: 0, direction: 'next' });\n return {\n ...state,\n focusNextPage: () => {\n setAnimationState(({ key }) => ({\n key: key + 1,\n direction: 'next',\n }));\n state.focusNextPage();\n },\n focusPreviousPage: () => {\n setAnimationState(({ key }) => ({\n key: key - 1,\n direction: 'prev',\n }));\n state.focusPreviousPage();\n },\n animationState,\n };\n}\n","import React from 'react';\nimport { createCalendar, DateValue } from '@internationalized/date';\nimport { AriaCalendarProps, useCalendar } from '@react-aria/calendar';\nimport { filterDOMProps, mergeProps } from '@react-aria/utils';\n\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n Button,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\nimport { CalendarDaysGrid } from './CalendarDaysGrid';\nimport {\n useDateFormatter,\n useLocale,\n useMessageFormatter,\n} from '@react-aria/i18n';\nimport { CalendarMonthsGrid } from './CalendarMonthsGrid';\nimport { CalendarYearsGrid } from './CalendarYearsGrid';\nimport {\n SapphireCalendarStateOptions,\n useSapphireCalendarState,\n} from './useSapphireCalendarState';\nimport clsx from 'clsx';\nimport { CalendarHeader } from './CalendarHeader';\nimport {\n CalendarPageAnimation,\n useCalendarAnimationState,\n} from './CalendarPageAnimation';\nimport intlMessages from '../i18n';\nimport { sentenceCase } from './utils';\n\nexport interface SapphireCalendarProps<T extends DateValue = DateValue>\n extends SapphireStyleProps,\n Omit<AriaCalendarProps<T>, 'validationState' | 'errorMessage'>,\n Omit<SapphireCalendarStateOptions<T>, 'createCalendar'> {\n /**\n * Whether week numbers are visible as a first column\n */\n showWeekNumbers?: boolean;\n}\n\n/**\n * Displays a calendar and allows users to select a single date. It displays a grid of days in one\n * month, by default, and the user can navigate to previous and next months. It's also possible\n * to navigate to months and years view, to quickly jump to a date far away from the focused date.\n */\nexport const Calendar = <T extends DateValue = DateValue>({\n showWeekNumbers,\n ...props\n}: Omit<SapphireCalendarProps<T>, 'locale'>): JSX.Element => {\n useThemeCheck();\n const { locale } = useLocale();\n const formatMessage = useMessageFormatter(intlMessages);\n\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n const state = useCalendarAnimationState(\n useSapphireCalendarState({\n selectionAlignment: 'start',\n ...props,\n locale,\n createCalendar,\n })\n );\n\n const monthDateFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n era:\n state.visibleRange.start.calendar.identifier === 'gregory' &&\n state.visibleRange.start.era === 'BC'\n ? 'short'\n : undefined,\n calendar: state.visibleRange.start.calendar.identifier,\n timeZone: state.timeZone,\n });\n\n const { calendarProps, prevButtonProps, nextButtonProps } = useCalendar(\n props,\n state\n );\n\n const renderGrid = () => {\n switch (state.view) {\n case 'years':\n return <CalendarYearsGrid state={state} />;\n case 'months':\n return <CalendarMonthsGrid state={state} />;\n case 'days':\n default:\n return (\n <CalendarDaysGrid state={state} showWeekNumbers={showWeekNumbers} />\n );\n }\n };\n\n const renderTitle = () => {\n switch (state.view) {\n case 'days':\n return sentenceCase(\n monthDateFormatter.format(\n state.visibleRange.start.toDate(state.timeZone)\n )\n );\n case 'months':\n return state.focusedDate.year;\n case 'years':\n return sentenceCase(formatMessage('year'));\n }\n };\n return (\n <div\n className={styles['sapphire-calendar']}\n {...mergeProps(calendarProps, filterDOMProps(props))}\n >\n <div\n className={clsx(\n styles['sapphire-calendar__table-container'],\n styleProps.className\n )}\n style={styleProps.style}\n >\n <CalendarHeader\n prevButtonProps={prevButtonProps}\n nextButtonProps={nextButtonProps}\n >\n {state.canBroadenView ? (\n <Button\n onPress={state.broadenView}\n isDisabled={state.isDisabled}\n variant=\"tertiary\"\n appearance=\"ghost\"\n size=\"large\"\n >\n {renderTitle()}\n </Button>\n ) : (\n renderTitle()\n )}\n </CalendarHeader>\n {state.view === 'days' ? (\n <CalendarPageAnimation state={state.animationState}>\n {renderGrid()}\n </CalendarPageAnimation>\n ) : (\n renderGrid()\n )}\n </div>\n </div>\n );\n};\n","import { useRangeCalendarState as originalUseRangeCalendarState } from '@react-stately/calendar';\nimport type {\n RangeCalendarStateOptions as OriginalRangeCalendarStateOptions,\n RangeCalendarState as OriginalRangeCalendarState,\n} from '@react-stately/calendar';\nimport { DateValue } from '@internationalized/date';\nimport { useRef } from 'react';\n\ntype OriginalOnChange<T extends DateValue> = NonNullable<\n OriginalRangeCalendarStateOptions<T>['onChange']\n>;\n\nexport type RangeCalendarStateOptions<\n T extends DateValue,\n P extends string\n> = Omit<OriginalRangeCalendarStateOptions<T>, 'onChange'> & {\n onChange?: (\n value: Parameters<OriginalOnChange<T>>[0],\n predefinedRange?: P\n ) => ReturnType<OriginalOnChange<T>>;\n};\n\ntype OriginalSetValue = OriginalRangeCalendarState['setValue'];\n\nexport type RangeCalendarState<P extends string> = Omit<\n OriginalRangeCalendarState,\n 'setValue'\n> & {\n setValue: (\n value: Parameters<OriginalSetValue>[0],\n predefinedRange?: P\n ) => ReturnType<OriginalSetValue>;\n};\n\n/**\n * A wrapper to allow for the onChange callback to have extra info\n **/\nexport const useRangeCalendarState = <P extends string>({\n onChange,\n ...options\n}: RangeCalendarStateOptions<DateValue, P>): RangeCalendarState<P> => {\n const lastPredefinedRange = useRef<P | undefined>(undefined);\n\n const state = originalUseRangeCalendarState({\n ...options,\n onChange: (value) => {\n onChange?.(value, lastPredefinedRange.current);\n lastPredefinedRange.current = undefined;\n },\n });\n\n return {\n ...state,\n setValue: (value, predefinedRange) => {\n lastPredefinedRange.current = predefinedRange;\n state.setValue(value);\n },\n };\n};\n","import React, { useMemo } from 'react';\nimport {\n createCalendar,\n DateValue,\n toCalendarDate,\n} from '@internationalized/date';\nimport { AriaRangeCalendarProps, useRangeCalendar } from '@react-aria/calendar';\nimport { filterDOMProps, mergeProps, useObjectRef } from '@react-aria/utils';\n\nimport {\n Button,\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\nimport { CalendarDaysGrid } from './CalendarDaysGrid';\nimport { useDateFormatter, useLocale } from '@react-aria/i18n';\nimport clsx from 'clsx';\nimport { useRangeCalendarState } from './useRangeCalendarState';\nimport type { RangeCalendarStateOptions } from './useRangeCalendarState';\nimport { CalendarHeader } from './CalendarHeader';\nimport {\n CalendarPageAnimation,\n useCalendarAnimationState,\n} from './CalendarPageAnimation';\nimport { sentenceCase } from './utils';\n\nexport interface PredefinedDateRange {\n label: string;\n dateRange: { start: DateValue; end: DateValue };\n}\n\nexport interface SapphireRangeCalendarProps<\n T extends DateValue = DateValue,\n P extends string = string\n> extends SapphireStyleProps,\n Omit<\n AriaRangeCalendarProps<T>,\n | 'validationState'\n | 'errorMessage'\n | 'allowsNonContiguousRanges'\n | 'onChange'\n > {\n /**\n * This callback also gives you the information if the selected range was a\n * predefined date according to the `predefinedRanges` prop.\n */\n onChange?: RangeCalendarStateOptions<DateValue, P>['onChange'];\n /**\n * Whether week numbers are visible as a first column\n */\n showWeekNumbers?: boolean;\n\n /**\n * Whether to show two months at the same time.\n */\n showTwoMonths?: boolean;\n\n /**\n * A set of predefined date ranges the user can more conveniently select.\n */\n predefinedRanges?: Record<P, PredefinedDateRange>;\n\n /**\n * Whether range is allowed to span unavailable dates.\n */\n allowUnavailableDatesWithinRange?: boolean;\n}\n\n/**\n * Displays a calendar and allow users to select a consecutive range of dates.\n * One or two months can be visible at the same time.\n */\nconst _RangeCalendar = function RangeCalendar<\n T extends DateValue = DateValue,\n P extends string = string\n>(\n {\n showWeekNumbers,\n showTwoMonths = false,\n allowUnavailableDatesWithinRange = false,\n predefinedRanges,\n ...props\n }: SapphireRangeCalendarProps<T, P>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>\n): JSX.Element {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n\n const ref = useObjectRef(forwardedRef);\n const { locale } = useLocale();\n const state = useCalendarAnimationState(\n useRangeCalendarState({\n ...props,\n locale,\n allowsNonContiguousRanges: allowUnavailableDatesWithinRange,\n visibleDuration: useMemo(\n () => ({ months: showTwoMonths ? 2 : 1 }),\n [showTwoMonths]\n ),\n createCalendar,\n })\n );\n const { calendarProps, prevButtonProps, nextButtonProps } = useRangeCalendar(\n props,\n state,\n ref\n );\n\n const monthDateFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n era:\n state.visibleRange.start.calendar.identifier === 'gregory' &&\n state.visibleRange.start.era === 'BC'\n ? 'short'\n : undefined,\n calendar: state.visibleRange.start.calendar.identifier,\n timeZone: state.timeZone,\n });\n\n return (\n <div\n ref={ref}\n className={clsx(styles['sapphire-calendar'], styleProps.className)}\n style={styleProps.style}\n {...mergeProps(calendarProps, filterDOMProps(props))}\n >\n <div className={styles['sapphire-calendar__tables-row']}>\n {[state.visibleRange.start]\n .concat(\n showTwoMonths ? state.visibleRange.start.add({ months: 1 }) : []\n )\n .map((startOfMonth, index, visibleMonths) => {\n const isLeft = visibleMonths.length > 1 && index === 0;\n const isRight =\n visibleMonths.length > 1 && index === visibleMonths.length - 1;\n const shouldAnimate = visibleMonths.length === 1;\n const daysGrid = (\n <CalendarDaysGrid\n startDate={startOfMonth}\n state={state}\n showWeekNumbers={showWeekNumbers}\n />\n );\n return (\n <div\n key={index}\n className={styles['sapphire-calendar__table-container']}\n >\n <CalendarHeader\n prevButtonProps={prevButtonProps}\n nextButtonProps={nextButtonProps}\n isLeft={isLeft}\n isRight={isRight}\n >\n {sentenceCase(\n monthDateFormatter.format(\n startOfMonth.toDate(state.timeZone)\n )\n )}\n </CalendarHeader>\n {shouldAnimate ? (\n <CalendarPageAnimation state={state.animationState}>\n {daysGrid}\n </CalendarPageAnimation>\n ) : (\n daysGrid\n )}\n </div>\n );\n })}\n </div>\n {predefinedRanges && (\n <div className={styles['sapphire-calendar__custom-ranges']}>\n {(\n Object.entries(predefinedRanges) as Array<[P, PredefinedDateRange]>\n ).map(([key, { label, dateRange }]) => (\n <div key={key}>\n <Button\n variant=\"secondary\"\n appearance=\"ghost\"\n onPress={() => {\n state.setValue(dateRange, key);\n state.setAnchorDate(null);\n state.setFocusedDate(toCalendarDate(dateRange.end));\n }}\n >\n {label}\n </Button>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n\n// eslint-disable-next-line\n// @ts-ignore Union type too complex to represent (TODO: check if this is still\n// an issue when we use TS@5.\nexport const RangeCalendar = React.forwardRef(_RangeCalendar) as <\n T extends DateValue,\n P extends string\n>(\n props: SapphireRangeCalendarProps<T, P> & {\n ref?: React.ForwardedRef<HTMLDivElement>;\n }\n) => ReturnType<typeof _RangeCalendar>;\n","import React from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/spinner/spinner.module.css';\nimport {\n useThemeCheck,\n SapphireStyleProps,\n useSapphireStyleProps,\n} from '@danske/sapphire-react';\n\nexport type SpinnerProps = {\n /**\n * @default 'm'\n */\n size?: 'xxxs' | 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl';\n} & SapphireStyleProps &\n ({ 'aria-labelledby': string } | { 'aria-label': string });\n\n/**\n * Animated element that show that some data is still loading or some process\n * is in progress. The hidden label is required for accessibility reasons.\n */\nexport const Spinner = ({\n size = 'm',\n ...props\n}: SpinnerProps): JSX.Element => {\n useThemeCheck();\n\n const { styleProps } = useSapphireStyleProps(props);\n\n /**\n * There is @react-aria/progress but because we only have a \"indeterminate\"\n * spinner, we only need one prop, the 'role' attr.\n * Therefore, it seemed like an overkill to use react-aria here.\n */\n\n return (\n <svg\n role=\"progressbar\"\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 className={clsx(\n styleProps.className,\n styles['sapphire-spinner'],\n size !== 'm' ? styles[`sapphire-spinner--${size}` as const] : ''\n )}\n style={styleProps.style}\n viewBox=\"0 0 16 16\"\n >\n <path\n className={styles['sapphire-spinner__track']}\n d=\"M10.3993 2.13882C10.3295 2.39914 10.4641 2.66858 10.7034 2.79263C11.2238 3.06246 11.7123 3.41501 12.1489 3.85159C14.4401 6.14281 14.4399 9.85728 12.1489 12.1483C9.85783 14.4393 6.14335 14.4395 3.85214 12.1483C3.41556 11.7117 3.06301 11.2232 2.79317 10.7028C2.66913 10.4635 2.39969 10.329 2.13937 10.3987C1.82795 10.4821 1.65738 10.8194 1.80178 11.1077C2.1261 11.7551 2.55778 12.3624 3.09789 12.9026C5.80564 15.6103 10.1955 15.6101 12.9031 12.9026C15.6107 10.195 15.6109 5.80509 12.9031 3.09734C12.363 2.55723 11.7556 2.12555 11.1082 1.80123C10.82 1.65683 10.4827 1.8274 10.3993 2.13882Z\"\n />\n <path\n className={styles['sapphire-spinner__accent']}\n d=\"M1.72661 8.85304C1.98694 8.78329 2.15316 8.53215 2.14111 8.26291C2.07002 6.67514 2.63971 5.06425 3.85203 3.85193C5.06452 2.63944 6.67527 2.06989 8.26302 2.14101C8.53225 2.15306 8.78337 1.98683 8.85309 1.7265C8.93661 1.41464 8.72921 1.09798 8.4069 1.07913C6.49959 0.96764 4.55516 1.6403 3.09778 3.09768C1.64062 4.55485 0.967813 6.49934 1.07909 8.40676C1.0979 8.72916 1.41467 8.93663 1.72661 8.85304Z\"\n />\n </svg>\n );\n};\n","import React from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/notificationBadge/notificationBadge.module.css';\nimport {\n useThemeCheck,\n SapphireStyleProps,\n useSapphireStyleProps,\n} from '@danske/sapphire-react';\n\nexport type NotificationBadgeProps = {\n /**\n * Boolean to perform or not perform the animation\n * @default 'true'\n */\n animate?: boolean;\n /**\n * Badge will be added relative to the children. It is rendered inline if there is no children provided\n * */\n children?: React.ReactNode;\n /**\n * The shape of the container, based on which badge should be positioned. Badge is positioned on the border of the container\n * @default 'circle'\n * */\n containerType?: 'circle' | 'rectangle';\n /**\n * Number to show in badge\n * */\n count: number;\n /**\n * The variation of badge which determines the badge's color.\n *\n * @default 'primary'\n */\n variant?: 'primary' | 'secondary';\n /**\n * @default 'medium'\n */\n size?: 'large' | 'medium' | 'small';\n /**\n * Boolean to show/hide the badge\n *\n * @default true\n */\n show?: boolean;\n} & SapphireStyleProps &\n ({ 'aria-labelledby': string } | { 'aria-label': string });\n\nexport const NotificationBadge = (\n props: NotificationBadgeProps\n): JSX.Element => {\n useThemeCheck();\n\n const {\n animate = true,\n children,\n count,\n containerType = 'circle',\n variant = 'primary',\n size = 'medium',\n show = true,\n ...otherProps\n } = props;\n const { styleProps } = useSapphireStyleProps(props);\n\n const badge = () =>\n show || animate ? (\n <span\n {...otherProps}\n role=\"status\"\n className={clsx(\n styleProps.className,\n styles['sapphire-notification-badge'],\n styles[`sapphire-notification-badge--${size}` as const],\n styles[`sapphire-notification-badge--${variant}` as const],\n {\n [styles[`sapphire-notification-badge--pop-in`]]: show && animate,\n [styles[`sapphire-notification-badge--pop-out`]]: !show && animate,\n }\n )}\n style={styleProps.style}\n >\n {size !== 'small' && displayCount}\n </span>\n ) : (\n <></>\n );\n\n const displayCount = count.toString().length > 2 ? `99+` : count;\n return children ? (\n <span\n className={clsx(styles['sapphire-notification-badge-container'], {\n [styles['sapphire-notification-badge-container--rectangle']]:\n containerType === 'rectangle',\n })}\n >\n {children}\n {badge()}\n </span>\n ) : (\n badge()\n );\n};\n","import React, { ReactNode } from 'react';\nimport { useControlledState } from '@react-stately/utils';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\nimport {\n Button,\n Flex,\n SapphireStyleProps,\n tokens,\n PopoverTrigger,\n PopoverTriggerProps,\n} from '@danske/sapphire-react';\nimport { ToggleButton } from '../../ToggleButton';\nimport { ChevronDown, ChevronUp } from '@danske/sapphire-icons/react';\n\nexport interface SapphireFilterDropdownProps\n extends 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 * Wheter the button is disabled.\n */\n isDisabled?: 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\n/**\n * A button with a dropdown, used for filtering UI.\n */\nexport function FilterDropdown({\n children,\n label,\n value,\n isOpen: isOpenProp,\n clearButtonLabel = 'Clear',\n applyButtonLabel = 'Apply',\n defaultOpen = false,\n onOpenChange,\n hasApplyButton = false,\n onApply,\n onClear,\n noMaxWidth,\n isDisabled = false,\n}: SapphireFilterDropdownProps): JSX.Element {\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 onOpenChange\n );\n const hasValue = value != null && value !== '';\n const close = () => setIsOpen(false);\n const apply = () => {\n onApply?.();\n close();\n };\n\n const applyButton = (\n <Button type=\"submit\" excludeFromTabOrder={!hasApplyButton}>\n {applyButtonLabel}\n </Button>\n );\n return (\n <PopoverTrigger\n popoverContent={\n <form onSubmit={apply}>\n {children}\n <Flex\n justifyContent=\"space-between\"\n marginTop={tokens.size.spacing30}\n >\n <Button\n variant=\"secondary\"\n onPress={() => {\n close();\n onClear?.();\n }}\n isDisabled={!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 </Flex>\n </form>\n }\n placement=\"bottom left\"\n isOpen={isOpen}\n onOpenChange={setIsOpen}\n noMaxWidth={noMaxWidth}\n >\n <ToggleButton\n icon={isOpen ? <ChevronUp /> : <ChevronDown />}\n iconAlign=\"right\"\n isSelected={hasValue}\n isDisabled={isDisabled}\n >\n {label}\n {value ? ': ' : ''}\n {value}\n </ToggleButton>\n </PopoverTrigger>\n );\n}\n","/**\n * This file is a copy of this private file from react-stately.\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-stately/datepicker/src/placeholders.ts\n *\n * It represents the placeholder values used in date and date range\n * fields when they are empty. The placeholders from here are then\n * formatted according to the locale.\n *\n * We need this because we have a requirement not supported by react-aria.\n * We need to be able to format a date based on a locale which is different\n * than the app's locale. This means that our placeholders can be in \"danish\"\n * while the actual date format is in \"swedish\".\n *\n * Examples:\n * - UI locale: sv-SE. Date format locale: sv-SE: 'ÅÅÅÅ-MM-DD'.\n * - UI locale: en. Date formate locale: sv-SE: 'YYYY-MM-DD'\n * - UI locale: sv-SE. Date format locale: en-US: 'MM/DD/ÅÅÅÅ'\n *\n * This is arguably counter-intuitive. But sapphire is used in some apps\n * where the user can decide the language and the date format separately.\n * It is up to the app to allow sane combinations.\n */\n\nimport { LocalizedStringDictionary } from '@internationalized/string';\n\n// These placeholders are based on the strings used by the <input type=\"date\">\n// implementations in Chrome and Firefox. Additional languages are supported\n// here than React Spectrum's typical translations.\nconst placeholders = new LocalizedStringDictionary(\n {\n ach: { year: 'mwaka', month: 'dwe', day: 'nino' },\n af: { year: 'jjjj', month: 'mm', day: 'dd' },\n am: { year: 'ዓዓዓዓ', month: 'ሚሜ', day: 'ቀቀ' },\n an: { year: 'aaaa', month: 'mm', day: 'dd' },\n ar: { year: 'سنة', month: 'شهر', day: 'يوم' },\n ast: { year: 'aaaa', month: 'mm', day: 'dd' },\n az: { year: 'iiii', month: 'aa', day: 'gg' },\n be: { year: 'гггг', month: 'мм', day: 'дд' },\n bg: { year: 'гггг', month: 'мм', day: 'дд' },\n bn: { year: 'yyyy', month: 'মিমি', day: 'dd' },\n br: { year: 'bbbb', month: 'mm', day: 'dd' },\n bs: { year: 'gggg', month: 'mm', day: 'dd' },\n ca: { year: 'aaaa', month: 'mm', day: 'dd' },\n cak: { year: 'jjjj', month: 'ii', day: \"q'q'\" },\n ckb: { year: 'ساڵ', month: 'مانگ', day: 'ڕۆژ' },\n cs: { year: 'rrrr', month: 'mm', day: 'dd' },\n cy: { year: 'bbbb', month: 'mm', day: 'dd' },\n da: { year: 'åååå', month: 'mm', day: 'dd' },\n de: { year: 'jjjj', month: 'mm', day: 'tt' },\n dsb: { year: 'llll', month: 'mm', day: 'źź' },\n el: { year: 'εεεε', month: 'μμ', day: 'ηη' },\n en: { year: 'yyyy', month: 'mm', day: 'dd' },\n eo: { year: 'jjjj', month: 'mm', day: 'tt' },\n es: { year: 'aaaa', month: 'mm', day: 'dd' },\n et: { year: 'aaaa', month: 'kk', day: 'pp' },\n eu: { year: 'uuuu', month: 'hh', day: 'ee' },\n fa: { year: 'سال', month: 'ماه', day: 'روز' },\n ff: { year: 'hhhh', month: 'll', day: 'ññ' },\n fi: { year: 'vvvv', month: 'kk', day: 'pp' },\n fr: { year: 'aaaa', month: 'mm', day: 'jj' },\n fy: { year: 'jjjj', month: 'mm', day: 'dd' },\n ga: { year: 'bbbb', month: 'mm', day: 'll' },\n gd: { year: 'bbbb', month: 'mm', day: 'll' },\n gl: { year: 'aaaa', month: 'mm', day: 'dd' },\n he: { year: 'שנה', month: 'חודש', day: 'יום' },\n hr: { year: 'gggg', month: 'mm', day: 'dd' },\n hsb: { year: 'llll', month: 'mm', day: 'dd' },\n hu: { year: 'éééé', month: 'hh', day: 'nn' },\n ia: { year: 'aaaa', month: 'mm', day: 'dd' },\n id: { year: 'tttt', month: 'bb', day: 'hh' },\n it: { year: 'aaaa', month: 'mm', day: 'gg' },\n ja: { year: ' 年 ', month: '月', day: '日' },\n ka: { year: 'წწწწ', month: 'თთ', day: 'რრ' },\n kk: { year: 'жжжж', month: 'аа', day: 'кк' },\n kn: { year: 'ವವವವ', month: 'ಮಿಮೀ', day: 'ದಿದಿ' },\n ko: { year: '연도', month: '월', day: '일' },\n lb: { year: 'jjjj', month: 'mm', day: 'dd' },\n lo: { year: 'ປປປປ', month: 'ດດ', day: 'ວວ' },\n lt: { year: 'mmmm', month: 'mm', day: 'dd' },\n lv: { year: 'gggg', month: 'mm', day: 'dd' },\n meh: { year: 'aaaa', month: 'mm', day: 'dd' },\n ml: { year: 'വർഷം', month: 'മാസം', day: 'തീയതി' },\n ms: { year: 'tttt', month: 'mm', day: 'hh' },\n nl: { year: 'jjjj', month: 'mm', day: 'dd' },\n nn: { year: 'åååå', month: 'mm', day: 'dd' },\n no: { year: 'åååå', month: 'mm', day: 'dd' },\n oc: { year: 'aaaa', month: 'mm', day: 'jj' },\n pl: { year: 'rrrr', month: 'mm', day: 'dd' },\n pt: { year: 'aaaa', month: 'mm', day: 'dd' },\n rm: { year: 'oooo', month: 'mm', day: 'dd' },\n ro: { year: 'aaaa', month: 'll', day: 'zz' },\n ru: { year: 'гггг', month: 'мм', day: 'дд' },\n sc: { year: 'aaaa', month: 'mm', day: 'dd' },\n scn: { year: 'aaaa', month: 'mm', day: 'jj' },\n sk: { year: 'rrrr', month: 'mm', day: 'dd' },\n sl: { year: 'llll', month: 'mm', day: 'dd' },\n sr: { year: 'гггг', month: 'мм', day: 'дд' },\n sv: { year: 'åååå', month: 'mm', day: 'dd' },\n szl: { year: 'rrrr', month: 'mm', day: 'dd' },\n tg: { year: 'сссс', month: 'мм', day: 'рр' },\n th: { year: 'ปปปป', month: 'ดด', day: 'วว' },\n tr: { year: 'yyyy', month: 'aa', day: 'gg' },\n uk: { year: 'рррр', month: 'мм', day: 'дд' },\n 'zh-CN': { year: '年', month: '月', day: '日' },\n 'zh-TW': { year: '年', month: '月', day: '日' },\n },\n 'en'\n);\n\nexport function getPlaceholder(field: string, value: string, locale: string) {\n // Use the actual placeholder value for the era and day period fields.\n if (field === 'era' || field === 'dayPeriod') {\n return value;\n }\n\n if (field === 'year' || field === 'month' || field === 'day') {\n return placeholders.getStringForLocale(field, locale);\n }\n\n // For time fields (e.g. hour, minute, etc.), use two dashes as the placeholder.\n return '––';\n}\n","/**\n * The helpers in this file are meant for internal use.\n */\nimport {\n SegmentType,\n DateSegment as DateSegmentType,\n} from '@react-stately/datepicker';\nimport { getPlaceholder } from './placeholders';\n\n/**\n * The interface from `useDateFieldState` to clear the input is not ideal. We\n * have to manually clear each segment type.\n */\nexport const segmentTypes: SegmentType[] = [\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'era',\n 'year',\n 'month',\n 'dayPeriod',\n 'literal',\n 'timeZoneName',\n];\n\nexport const isAnyModified = (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\n/**\n * Check out the `getPlaceholder` function's description for\n * an explanation.\n */\nexport const setPlaceholderLanguage = (\n segment: DateSegmentType,\n locale: string\n): DateSegmentType => {\n const placeholder = getPlaceholder(segment.type, segment.text, locale);\n\n return {\n ...segment,\n text: segment.isPlaceholder ? placeholder : segment.text,\n placeholder,\n };\n};\n","import React, { useRef } from 'react';\nimport { useDateSegment } from '@react-aria/datepicker';\nimport {\n DateFieldState,\n DateSegment as DateSegmentType,\n} from '@react-stately/datepicker';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport clsx from 'clsx';\nimport { setPlaceholderLanguage } from './utils/segments';\nimport { useLocale } from '@react-aria/i18n';\n\nexport interface DateSegmentProps {\n segment: DateSegmentType;\n state: DateFieldState;\n}\n\nexport const DateSegment = ({ segment, state }: DateSegmentProps) =>\n segment.type === 'literal' ? (\n <SeparatorSegment segment={segment} />\n ) : (\n <EditableSegment segment={segment} state={state}></EditableSegment>\n );\n\nconst SeparatorSegment = ({ segment }: { segment: DateSegmentType }) => (\n <span\n aria-hidden=\"true\"\n className={clsx(styles['sapphire-date-field__segment'])}\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 const { locale } = useLocale();\n const segmentWithTranslatedPlaceholders = setPlaceholderLanguage(\n segment,\n locale\n );\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 !segmentWithTranslatedPlaceholders.isPlaceholder,\n })}\n >\n {segmentWithTranslatedPlaceholders.text}\n </div>\n );\n};\n","import React, { useRef } from 'react';\nimport { AriaButtonProps } from '@react-aria/button';\nimport { useHover } from '@react-aria/interactions';\nimport { mergeProps } from '@react-aria/utils';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport { useFocusRing } from '@react-aria/focus';\nimport { useButton } from '@danske/sapphire-react';\n\n/**\n * @internal\n */\nexport const DateFieldButton = (props: AriaButtonProps) => {\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(buttonProps, hoverProps, focusProps)}\n ref={ref}\n className={clsx(\n styles['sapphire-date-field__button'],\n styles['js-focus'],\n styles['js-hover'],\n {\n [styles['is-active']]: isPressed,\n [styles['is-hover']]: isHovered,\n [styles['is-focus']]: isFocusVisible,\n }\n )}\n >\n {props.children}\n </button>\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 {\n AriaDateFieldOptions,\n useDateField,\n DateValue,\n} from '@react-aria/datepicker';\nimport { DateSegment } from './DateSegment';\nimport { useLocale, useMessageFormatter } from '@react-aria/i18n';\nimport { useDateFieldState } from '@react-stately/datepicker';\nimport { createCalendar } from '@internationalized/date';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport { Icon } from '@danske/sapphire-react';\nimport { CloseCircle } from '@danske/sapphire-icons/react';\nimport { DateFieldButton } from './DateFieldButton';\nimport intlMessages from '../i18n';\nimport { segmentTypes, isAnyModified } from './utils/segments';\nimport { useCustomDateFormatLocale } from '@danske/sapphire-react';\n\nexport type DateInputProps<T extends DateValue> = AriaDateFieldOptions<T> & {\n noClearButton?: boolean;\n size?: 'large' | 'medium';\n};\n\n/**\n * @internal\n */\nexport function DateInput<T extends DateValue>({\n noClearButton = false,\n size = 'large',\n ...props\n}: DateInputProps<T>) {\n const ref = useRef(null);\n const formatMessage = useMessageFormatter(intlMessages);\n const { locale } = useLocale();\n const customDateFormatLocale = useCustomDateFormatLocale();\n\n const state = useDateFieldState({\n ...props,\n locale: customDateFormatLocale || locale,\n createCalendar,\n });\n\n const { fieldProps } = useDateField(props, state, ref);\n const clear = () => {\n segmentTypes.forEach(state.clearSegment);\n };\n\n return (\n <>\n <div\n {...fieldProps}\n className={styles['sapphire-date-field__input']}\n ref={ref}\n >\n {state.segments.map((segment, i) => (\n <DateSegment key={i} segment={segment} state={state} />\n ))}\n </div>\n {!noClearButton &&\n !props.isReadOnly &&\n !props.isDisabled &&\n isAnyModified(state.segments) && (\n <DateFieldButton aria-label={formatMessage('clear')} onPress={clear}>\n <Icon size={size === 'medium' ? 'm' : 'l'}>\n <CloseCircle />\n </Icon>\n </DateFieldButton>\n )}\n </>\n );\n}\n","import React, {\n ForwardedRef,\n forwardRef,\n ReactNode,\n RefObject,\n useRef,\n} from 'react';\nimport { Validation } from '@react-types/shared';\nimport {\n AriaDatePickerProps,\n DateValue,\n useDatePicker,\n} from '@react-aria/datepicker';\nimport { useDatePickerState } from '@react-stately/datepicker';\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n Icon,\n Popover,\n tokens,\n View,\n Field,\n Label,\n} from '@danske/sapphire-react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport { Calendar as CalendarIcon } from '@danske/sapphire-icons/react';\nimport { DateInput } from './DateInput';\nimport { Calendar } from '../../Calendar';\nimport { DateFieldButton } from './DateFieldButton';\nimport { PressResponder } from '@react-aria/interactions';\nimport { useDialog } from '@react-aria/dialog';\n\nexport type DateFieldProps<T extends DateValue> = Omit<\n AriaDatePickerProps<T>,\n | keyof Omit<Validation<unknown>, 'isRequired'>\n | 'errorMessage'\n | 'description'\n // excluding some props about time input. We don't support that yet.\n | 'granularity'\n | 'hourCycle'\n | 'hideTimeZone'\n> &\n SapphireStyleProps & {\n /**\n * Whether week numbers are visible as a first column\n */\n showWeekNumbers?: 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.\n * A `string` 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 | string;\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 ContextualHelp to render next to the label.\n */\n contextualHelp?: ReactNode;\n /**\n * If it should hide the \"clear\" button when input is not empty.\n *\n * @default false\n */\n noClearButton?: boolean;\n /**\n * @default 'large'\n */\n size?: 'large' | 'medium';\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\nfunction _DateField<T extends DateValue>(\n {\n error,\n note,\n contextualHelp,\n noClearButton = false,\n showWeekNumbers,\n size = 'large',\n labelPlacement = 'above',\n necessityIndicator = false,\n ...otherProps\n }: DateFieldProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) {\n useThemeCheck();\n\n const groupRef = useRef(null);\n const dialogRef = useRef(null);\n\n const { styleProps } = useSapphireStyleProps(otherProps);\n\n const { dialogProps } = useDialog({}, dialogRef);\n\n const state = useDatePickerState({\n ...otherProps,\n ...(error ? { validationState: 'invalid' } : {}),\n });\n\n const {\n groupProps,\n labelProps,\n fieldProps,\n buttonProps,\n dialogProps: dialogPropsFromDatePicker,\n calendarProps,\n descriptionProps,\n errorMessageProps,\n } = useDatePicker(\n {\n ...otherProps,\n description: note,\n },\n state,\n groupRef\n );\n\n const isMedium = size === 'medium';\n\n return (\n <Field\n {...otherProps}\n noShrink\n isDisabled={otherProps.isDisabled}\n error={state.validationState === 'invalid'}\n size={size}\n ref={ref}\n labelPlacement={labelPlacement}\n >\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.Control>\n <div\n {...groupProps}\n ref={groupRef}\n className={clsx(styles['sapphire-date-field'], {\n [styles['sapphire-date-field--error']]:\n state.validationState === 'invalid',\n [styles['sapphire-date-field--medium']]: isMedium,\n })}\n {...(styleProps.style.width\n ? { style: { width: styleProps.style.width } }\n : {})}\n >\n <PressResponder {...buttonProps} isPressed={state.isOpen}>\n <DateFieldButton\n isDisabled={otherProps.isDisabled || otherProps.isReadOnly}\n >\n <Icon size={isMedium ? 'm' : 'l'}>\n <CalendarIcon />\n </Icon>\n </DateFieldButton>\n </PressResponder>\n <DateInput\n {...fieldProps}\n noClearButton={noClearButton}\n size={size}\n />\n </div>\n </Field.Control>\n {((typeof error === 'string' && error !== '') || note) && (\n <Field.Footer>\n {error ? (\n <Field.Note {...errorMessageProps}>{error}</Field.Note>\n ) : note ? (\n <Field.Note {...descriptionProps}>{note}</Field.Note>\n ) : (\n <></>\n )}\n </Field.Footer>\n )}\n {state.isOpen && (\n <Popover state={state} triggerRef={groupRef} placement=\"bottom start\">\n <div ref={dialogRef} {...dialogProps} {...dialogPropsFromDatePicker}>\n <View padding={tokens.size.spacing50}>\n <Calendar\n {...calendarProps}\n defaultFocusedValue={state.dateValue}\n showWeekNumbers={showWeekNumbers}\n />\n </View>\n </div>\n </Popover>\n )}\n </Field>\n );\n}\n\n/**\n * A date field allows users to enter or edit date values using the keyboard\n * and/or mouse.\n */\nexport const DateField = forwardRef(_DateField) as <T extends DateValue>(\n props: DateFieldProps<T> & { ref?: RefObject<HTMLDivElement> }\n) => React.ReactElement;\n","import { useDateRangePickerState as originalUseDateRangePickerState } from '@react-stately/datepicker';\nimport type {\n DateRangePickerStateOptions as OriginalDateRangePickerOptions,\n DateRangePickerState as OriginalDateRangePickerState,\n} from '@react-stately/datepicker';\nimport { DateValue } from '@internationalized/date';\nimport { useRef } from 'react';\n\ntype OriginalOnChange<T extends DateValue> = NonNullable<\n OriginalDateRangePickerOptions<T>['onChange']\n>;\n\nexport type DateRangePickerStateOptions<\n T extends DateValue,\n P extends string,\n O extends OriginalOnChange<T> = OriginalOnChange<T>\n> = Omit<OriginalDateRangePickerOptions<T>, 'onChange'> & {\n // We allow clearing the DateRangeField and thus have to allow a null value\n // which is currently not part of the DateRangePickerProps type:\n // https://unpkg.com/browse/@react-types/datepicker@3.5.0/src/index.d.ts#:~:text=ValueBase%3CRangeValue%3CT%3E%20%7C%20null%2C%20RangeValue%3CMappedDateValue%3CT%3E%3E\n onChange?: (\n value: Parameters<O>[0] | null,\n predefinedRange?: P\n ) => ReturnType<O>;\n};\n\ntype OriginalSetDate = OriginalDateRangePickerState['setDateRange'];\n\nexport type DateRangePickerState<P extends string> = Omit<\n OriginalDateRangePickerState,\n 'setDateRange'\n> & {\n setDateRange: (\n value: Parameters<OriginalSetDate>[0],\n predefinedRange?: P\n ) => ReturnType<OriginalSetDate>;\n};\n\n/**\n * A wrapper to allow for the onChange callback to have extra info\n **/\nexport const useDateRangePickerState = <P extends string>({\n onChange,\n ...options\n}: DateRangePickerStateOptions<DateValue, P>): DateRangePickerState<P> => {\n const lastPredefinedRange = useRef<P | undefined>(undefined);\n\n const state = originalUseDateRangePickerState({\n ...options,\n onChange: (value) => {\n onChange?.(value, lastPredefinedRange.current);\n lastPredefinedRange.current = undefined;\n },\n });\n\n return {\n ...state,\n setDateRange: (value, predefinedRange) => {\n lastPredefinedRange.current = predefinedRange;\n state.setDateRange(value);\n },\n };\n};\n","import React, { useRef } from 'react';\nimport {\n useDateField,\n DateValue,\n AriaDatePickerProps,\n} from '@react-aria/datepicker';\nimport { DateSegment } from './DateSegment';\nimport { useLocale, useMessageFormatter } from '@react-aria/i18n';\nimport {\n useDateFieldState,\n DateRangePickerState,\n} from '@react-stately/datepicker';\nimport { createCalendar } from '@internationalized/date';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport { Icon, useCustomDateFormatLocale } from '@danske/sapphire-react';\nimport { CloseCircle, ArrowRight } from '@danske/sapphire-icons/react';\nimport { DateFieldButton } from './DateFieldButton';\nimport { segmentTypes, isAnyModified } from './utils/segments';\nimport intlMessages from '../i18n';\n\nexport interface DateRangeInputProps<T extends DateValue> {\n dateRangePickerState: DateRangePickerState;\n startFieldProps: AriaDatePickerProps<T>;\n endFieldProps: AriaDatePickerProps<T>;\n noClearButton?: boolean;\n size?: 'large' | 'medium';\n}\n\n/**\n * @internal\n */\nexport function DateRangeInput<T extends DateValue>({\n dateRangePickerState,\n startFieldProps,\n endFieldProps,\n noClearButton = false,\n size = 'large',\n}: DateRangeInputProps<T>) {\n const startFieldRef = useRef(null);\n const endFieldRef = useRef(null);\n const formatMessage = useMessageFormatter(intlMessages);\n\n const { locale } = useLocale();\n const customDateFormatLocale = useCustomDateFormatLocale();\n\n const startFieldState = useDateFieldState({\n ...startFieldProps,\n locale: customDateFormatLocale || locale,\n createCalendar,\n });\n\n const endFieldState = useDateFieldState({\n ...endFieldProps,\n locale: customDateFormatLocale || locale,\n createCalendar,\n });\n\n const { fieldProps: startFieldAriaProps } = useDateField(\n startFieldProps,\n startFieldState,\n startFieldRef\n );\n const { fieldProps: endFieldAriaProps } = useDateField(\n endFieldProps,\n endFieldState,\n endFieldRef\n );\n\n const clearFields = () => {\n segmentTypes.forEach((segmentType) => {\n startFieldState.clearSegment(segmentType);\n endFieldState.clearSegment(segmentType);\n });\n\n /**\n * Workaround for clearing\n *\n * PROBLEM\n * - UI: Setting value in both startField and endField\n * - Code: Sets a placeholder value i useDateRangePickerState ({ start: date, end: date })\n * - UI: Clicking clear button\n * - Code: startFieldState.clearSegment() runs and sets start-prop of placeholder to null\n * - Code: endFieldState.clearSegment() runs and sets end-prop of placeholder to null,\n * BUT THE value INSIDE dateRangePickerState.setDateTime() IS STALE AND STILL HAS DATE VALUES FOR BOTH start AND end\n * - Code: so a placholder value is set to ({ start: date, end: null })\n *\n * POTENTIAL SOLUTION\n * If the value in useDateRangePickerState was saved as a ref\n * (like here: https://github.com/adobe/react-spectrum/pull/2510/commits/ca696af45e1f4548e1ace06e5de6d4f297f46eeb?diff=split&w=0#diff-eb983dc43959711e7dea6f33bcbbe97aa0bab850f24441753cdbd885125f3b71R50-R51)\n * and valueRef.current would be the value used in setDateTime of useDateRangePickerState,\n * both dates would be correctly cleared as the latest start value (which is null) would be known by setDateTime run by endFieldState.clearSegment()\n * And we still want to use clearSegment as that takes care of remembering last selected value for reselection.\n * It's suboptimal to have to call that continuously though, so a clearAllSegments function could be ideal.\n *\n * Without the change in Adobe's hooks, we have to ourselves dateRangePickerState.setValue to null.\n * But we'll be keeping the *FieldState.clearSegment calls as those will make sure to save new date to start from on next selection.\n * Ie if 2026 was selected, that's where a reselection with arrow keys will start from.\n * Only seems to take effect for the later of the calls though – currently endFieldState.\n *\n * Submitted a discussion to Adobe about this: https://github.com/adobe/react-spectrum/issues/4986\n */\n dateRangePickerState.setValue({ start: null!, end: null! }); // null works on runtime\n };\n\n return (\n <>\n <div\n {...startFieldAriaProps}\n className={styles['sapphire-date-field__input']}\n ref={startFieldRef}\n >\n {startFieldState.segments.map((segment, i) => (\n <DateSegment key={i} segment={segment} state={startFieldState} />\n ))}\n </div>\n <Icon size={size == 'medium' ? 'm' : 'l'}>\n <ArrowRight />\n </Icon>\n <div\n {...endFieldAriaProps}\n className={styles['sapphire-date-field__input']}\n ref={endFieldRef}\n >\n {endFieldState.segments.map((segment, i) => (\n <DateSegment key={i} segment={segment} state={endFieldState} />\n ))}\n </div>\n {!noClearButton &&\n !startFieldProps.isReadOnly &&\n !endFieldProps.isReadOnly &&\n !startFieldProps.isDisabled &&\n !endFieldProps.isDisabled &&\n isAnyModified([\n ...startFieldState.segments,\n ...endFieldState.segments,\n ]) && (\n <DateFieldButton\n aria-label={formatMessage('clear')}\n onPress={clearFields}\n >\n <Icon size={size === 'medium' ? 'm' : 'l'}>\n <CloseCircle />\n </Icon>\n </DateFieldButton>\n )}\n </>\n );\n}\n","import React, {\n ForwardedRef,\n forwardRef,\n ReactNode,\n RefObject,\n useRef,\n} from 'react';\nimport { Validation } from '@react-types/shared';\nimport {\n AriaDateRangePickerProps,\n DateValue,\n useDateRangePicker,\n} from '@react-aria/datepicker';\nimport {\n DateRangePickerStateOptions,\n useDateRangePickerState,\n} from './useDateRangePickerState';\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n Icon,\n Popover,\n tokens,\n View,\n Field,\n Label,\n} from '@danske/sapphire-react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/dateField/dateField.module.css';\nimport { Calendar } from '@danske/sapphire-icons/react';\nimport { DateRangeInput } from './DateRangeInput';\nimport { RangeCalendar, PredefinedDateRange } from '../../Calendar';\nimport { DateFieldButton } from './DateFieldButton';\nimport { PressResponder } from '@react-aria/interactions';\nimport { I18nProvider, useLocale } from '@react-aria/i18n';\nimport { useDialog } from '@react-aria/dialog';\n\nexport type DateRangeFieldProps<T extends DateValue, P extends string> = Omit<\n AriaDateRangePickerProps<T>,\n | keyof Omit<Validation<unknown>, 'isRequired'>\n | 'errorMessage'\n | 'description'\n // excluding some props about time input. We don't support that yet.\n | 'granularity'\n | 'hourCycle'\n | 'hideTimeZone'\n | 'allowsNonContiguousRanges'\n | 'onChange'\n> &\n SapphireStyleProps & {\n /**\n * Handler that is called when the value changes.\n */\n onChange?: DateRangePickerStateOptions<DateValue, P>['onChange'];\n /**\n * Whether week numbers are visible as a first column\n */\n showWeekNumbers?: boolean;\n /**\n * Whether to show two months at the same time.\n */\n showTwoMonths?: boolean;\n /**\n * A set of predefined date ranges the user can more conveniently select.\n */\n predefinedRanges?: Record<P, PredefinedDateRange>;\n /**\n * Whether range is allowed to span unavailable dates.\n */\n allowUnavailableDatesWithinRange?: 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.\n * A `string` 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 | string;\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 ContextualHelp to render next to the label.\n */\n contextualHelp?: ReactNode;\n /**\n * If it should hide the \"clear\" button when input is not empty.\n *\n * @default false\n */\n noClearButton?: boolean;\n /**\n * Locale (eg. \"da-DK\", \"en-US\", \"sv-SE\" etc.)\n *\n * THIS IS A TEMPORARY SOLUTION FOR THE INTERFACE OF LOCALIZATION. THIS API\n * MAY CHANGE OR EVEN BE REPLACED WITH SOMETHING DIFFERENT IN A FUTURE VERSION.\n */\n locale?: string;\n /**\n * @default 'large'\n */\n size?: 'large' | 'medium';\n /**\n * To visually indicate if this field is required or optional.\n * @default false\n */\n necessityIndicator?: boolean;\n\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\nfunction _DateRangeField<T extends DateValue, P extends string>(\n {\n error,\n note,\n contextualHelp,\n noClearButton = false,\n locale,\n showWeekNumbers,\n showTwoMonths,\n allowUnavailableDatesWithinRange,\n predefinedRanges,\n size = 'large',\n labelPlacement = 'above',\n necessityIndicator = false,\n ...otherProps\n }: DateRangeFieldProps<T, P>,\n ref: ForwardedRef<HTMLDivElement>\n) {\n useThemeCheck();\n\n const groupRef = useRef(null);\n const dialogRef = useRef(null);\n\n const { locale: existingLocale } = useLocale();\n\n const preferredLocale = locale || existingLocale;\n\n const { styleProps } = useSapphireStyleProps(otherProps);\n\n const { dialogProps } = useDialog({}, dialogRef);\n\n const state = useDateRangePickerState({\n ...otherProps,\n ...(error ? { validationState: 'invalid' } : {}),\n ...(allowUnavailableDatesWithinRange\n ? { allowsNonContiguousRanges: allowUnavailableDatesWithinRange }\n : {}),\n });\n\n const {\n groupProps,\n labelProps,\n startFieldProps,\n endFieldProps,\n buttonProps,\n dialogProps: dialogPropsFromDatePicker,\n calendarProps,\n descriptionProps,\n errorMessageProps,\n } = useDateRangePicker(\n {\n ...otherProps,\n description: note,\n allowsNonContiguousRanges: allowUnavailableDatesWithinRange,\n },\n state,\n groupRef\n );\n\n const isMedium = size === 'medium';\n\n return (\n <Field\n {...otherProps}\n noShrink\n isDisabled={otherProps.isDisabled}\n error={state.validationState === 'invalid'}\n size={size}\n ref={ref}\n labelPlacement={labelPlacement}\n >\n <I18nProvider locale={preferredLocale}>\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.Control>\n <div\n {...groupProps}\n ref={groupRef}\n className={clsx(\n styles['sapphire-date-field'],\n styles['sapphire-date-field--range'],\n {\n [styles['sapphire-date-field--error']]:\n state.validationState === 'invalid',\n [styles['sapphire-date-field--medium']]: isMedium,\n }\n )}\n {...(styleProps.style.width\n ? { style: { width: styleProps.style.width } }\n : {})}\n >\n <PressResponder {...buttonProps} isPressed={state.isOpen}>\n <DateFieldButton\n isDisabled={otherProps.isDisabled || otherProps.isReadOnly}\n >\n <Icon size={isMedium ? 'm' : 'l'}>\n <Calendar />\n </Icon>\n </DateFieldButton>\n </PressResponder>\n <DateRangeInput\n dateRangePickerState={state}\n startFieldProps={startFieldProps}\n endFieldProps={endFieldProps}\n noClearButton={noClearButton}\n size={size}\n />\n </div>\n </Field.Control>\n {error !== false &&\n ((typeof error === 'string' && error !== '') || note) && (\n <Field.Footer>\n {error ? (\n <Field.Note {...errorMessageProps}>{error}</Field.Note>\n ) : note ? (\n <Field.Note {...descriptionProps}>{note}</Field.Note>\n ) : (\n <></>\n )}\n </Field.Footer>\n )}\n {state.isOpen && (\n <Popover state={state} triggerRef={groupRef} placement=\"bottom start\">\n <div\n ref={dialogRef}\n {...dialogProps}\n {...dialogPropsFromDatePicker}\n >\n <View padding={tokens.size.spacing50}>\n <RangeCalendar\n {...calendarProps}\n allowUnavailableDatesWithinRange={\n allowUnavailableDatesWithinRange\n }\n showWeekNumbers={showWeekNumbers}\n showTwoMonths={showTwoMonths}\n predefinedRanges={predefinedRanges}\n />\n </View>\n </div>\n </Popover>\n )}\n </I18nProvider>\n </Field>\n );\n}\n\n/**\n * A date range field allows users to select a range of dates by selecting a to and a from date with keyboard and/or mouse.\n */\nexport const DateRangeField = forwardRef(_DateRangeField) as <\n T extends DateValue,\n P extends string\n>(\n props: DateRangeFieldProps<T, P> & { ref?: RefObject<HTMLDivElement> }\n) => React.ReactElement;\n","/**\n * The helpers in this file are meant for external use.\n * We're exporting these.\n */\nimport { DateValue } from '@react-aria/datepicker';\nimport { RangeValue } from '@react-types/shared';\n\nexport const isEndDateBeforeStartDate = (\n dateRange?: RangeValue<DateValue> | null\n) =>\n dateRange &&\n dateRange.end &&\n dateRange.start &&\n dateRange.end.compare(dateRange.start) < 0;\n\nexport const isDateOutsideValidRange = (\n value?: DateValue | null,\n minValue?: DateValue | null,\n maxValue?: DateValue | null\n) => {\n if (value) {\n if (minValue && value.compare(minValue) < 0) {\n return 'before';\n }\n if (maxValue && value.compare(maxValue) > 0) {\n return 'after';\n }\n }\n};\n","import {\n Icon,\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport React, { ReactNode } from 'react';\nimport styles from '@danske/sapphire-css/components/avatar/avatar.module.css';\nimport clsx from 'clsx';\n\nconst getIconSize = (\n size?: 'extraLarge' | 'large' | 'medium' | 'small' | 'extraSmall'\n) => {\n switch (size) {\n case 'medium':\n return 'm';\n case 'large':\n return 'l';\n case 'extraLarge':\n return 'xl';\n default:\n return 's';\n }\n};\n\nexport type SapphireAvatarProps = SapphireStyleProps & {\n /**\n * @default 'medium'\n */\n size?: 'extraLarge' | 'large' | 'medium' | 'small' | 'extraSmall';\n\n /**\n * The background color of the avatar.\n * Can either be semantic or one of the named decorative colors.\n *\n * @default 'informative'\n */\n\n color?:\n | 'positive'\n | 'negative'\n | 'warning'\n | 'informative'\n | 'passive'\n | 'aqua'\n | 'copper'\n | 'electro'\n | 'indigo'\n | 'lime'\n | 'pink'\n | 'violet'\n | 'gold'\n | 'beige'\n | 'orchid'\n | 'gray'\n | 'cobalt'\n | 'forestGreen'\n | 'teal'\n | 'orange';\n} & (\n | {\n monogram: ReactNode;\n icon?: never;\n }\n | {\n monogram?: never;\n icon: ReactNode;\n }\n );\n\nexport const Avatar = ({\n monogram,\n icon,\n color = 'informative',\n size = 'medium',\n ...props\n}: SapphireAvatarProps): React.ReactElement => {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n\n return (\n <div\n {...styleProps}\n className={clsx(\n styleProps.className,\n styles['sapphire-avatar'],\n {\n [styles['sapphire-avatar--extra-large']]: size === 'extraLarge',\n [styles['sapphire-avatar--large']]: size === 'large',\n [styles['sapphire-avatar--small']]: size === 'small',\n [styles['sapphire-avatar--extra-small']]: size === 'extraSmall',\n },\n color !== 'passive' && styles[`sapphire-avatar--${color}`]\n )}\n >\n {icon ? <Icon size={getIconSize(size)}>{icon}</Icon> : monogram}\n </div>\n );\n};\n","import React from 'react';\nimport clsx from 'clsx';\nimport {\n AlertCircle,\n AlertTriangle,\n Bell,\n CheckMarkCircle,\n} from '@danske/sapphire-icons/react';\nimport {\n Heading,\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/feedbackMessage/feedbackMessage.module.css';\nimport { Avatar } from '../../Avatar';\n\nexport type FeedbackMessageVariant =\n | 'success'\n | 'error'\n | 'warning'\n | 'informative'\n | 'neutral';\n\nexport interface SapphireFeedbackMessageProps extends SapphireStyleProps {\n /**\n * Heading content, rendered in a sapphire Heading component.\n */\n heading: React.ReactNode | string;\n /**\n * The type of message.\n * The 'error' and 'success' are meant to attract more attention.\n *\n * @default 'neutral'\n */\n variant?: FeedbackMessageVariant;\n /**\n * Optional icon to override the default icon for the message type.\n */\n icon?: React.ReactNode;\n /**\n * Optional description, rendered as a section below heading.\n */\n body?: React.ReactNode;\n /**\n * Optional actions, rendered at the bottom. Use {@link ButtonGroup}\n * for the content.\n */\n actions?: React.ReactNode;\n}\n\nconst getColor = (variant: FeedbackMessageVariant) => {\n switch (variant) {\n case 'success':\n return 'positive';\n case 'error':\n return 'negative';\n case 'neutral':\n return 'passive';\n default:\n return variant;\n }\n};\n\nconst getIcon = (variant: FeedbackMessageVariant, icon?: React.ReactNode) => {\n if (icon) {\n return icon;\n }\n\n switch (variant) {\n case 'success':\n return <CheckMarkCircle />;\n case 'error':\n return <AlertCircle />;\n case 'warning':\n return <AlertTriangle />;\n case 'informative':\n return <Bell />;\n default:\n return null;\n }\n};\n\n/**\n * Implements layout and style of a feedback message.\n */\nexport const FeedbackMessage = ({\n heading,\n body,\n actions,\n variant = 'neutral',\n icon,\n ...otherProps\n}: SapphireFeedbackMessageProps): JSX.Element => {\n useThemeCheck();\n const {\n styleProps: { style, className },\n } = useSapphireStyleProps(otherProps);\n\n return (\n <div\n className={clsx(styles['sapphire-feedback-message'], className)}\n style={style}\n >\n {variant !== 'neutral' && (\n <Avatar\n color={getColor(variant)}\n size=\"extraLarge\"\n icon={getIcon(variant, icon)}\n />\n )}\n <div className={styles['sapphire-feedback-message__content']}>\n {typeof heading === 'string' ? (\n <Heading level={3}>{heading}</Heading>\n ) : (\n heading\n )}\n <section className={styles['sapphire-feedback-message__body']}>\n {body}\n </section>\n </div>\n {actions}\n </div>\n );\n};\n","import { useComboBoxState as originalUseComboBoxState } from '@react-stately/combobox';\n\n/**\n * A wrapper for `useComboBoxState` to make the combobox more like \"autocomplete\":\n *\n * 1) We don't want to allow opening the combobox \"manually\".\n * In react-aria terms \"manual\" opening means where the user explicitly\n * wants to open the popover.\n * In the autocomplete feature we don't want such behaviour because the\n * popover has the role of assisting typing, not \"selecting\" a value.\n *\n * 2) We don't want to show any options if the query is empty.\n *\n * More details here\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/combobox/src/useComboBox.ts\n */\nexport const useComboBoxState: typeof originalUseComboBoxState = (options) => {\n const state = originalUseComboBoxState({\n ...options,\n defaultFilter: (textValue, query) => {\n if (query.length > 0) {\n return options.defaultFilter\n ? options.defaultFilter(textValue, query)\n : textValue.toLowerCase().includes(query.toLowerCase());\n } else {\n return false;\n }\n },\n });\n return {\n ...state,\n open: (focusStrategy, triggerMode) => {\n if (triggerMode !== 'manual') {\n state.open(focusStrategy, triggerMode);\n }\n },\n };\n};\n","import React, { ForwardedRef, useRef } from 'react';\nimport clsx from 'clsx';\nimport { HelpTextProps, LabelableProps, Validation } from '@react-types/shared';\nimport type { ComboBoxProps } from '@react-types/combobox';\nimport { AriaSearchFieldProps, useSearchField } from '@react-aria/searchfield';\n\nimport {\n SapphireStyleProps,\n useButton,\n useSapphireStyleProps,\n useThemeCheck,\n ListBoxPopover,\n Icon,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/searchField/searchField.module.css';\nimport { useSearchFieldState } from '@react-stately/searchfield';\nimport { mergeProps, useObjectRef } from '@react-aria/utils';\nimport { CloseCircle, Search } from '@danske/sapphire-icons/react';\nimport { useFocusableRef } from '@react-spectrum/utils';\nimport { useComboBoxState } from './useComboBoxState';\nimport { useComboBox } from '@react-aria/combobox';\n\nexport type SapphireSearchFieldProps<T extends object> = SapphireStyleProps &\n Omit<\n AriaSearchFieldProps,\n keyof HelpTextProps | keyof Validation<unknown> | keyof LabelableProps\n > &\n AutocompleteProps<T> & {\n /**\n * @default 'large'\n */\n size?: 'large' | 'medium';\n /**\n * Adjusts the style for the type of surface it is rendered on.\n * @default 'primary'\n */\n surface?: 'primary' | 'secondary';\n } & (\n | { 'aria-labelledby': string }\n | {\n 'aria-label': string;\n }\n );\n\n// we don't want props related to \"selection\" because from the POV of the\n// autocomplete feature, there is no concept of \"selection\"\ninterface AutocompleteProps<T extends object> {\n items?: ComboBoxProps<T>['items'];\n defaultItems?: ComboBoxProps<T>['defaultItems'];\n children?: ComboBoxProps<T>['children'];\n onOpenChange?: ComboBoxProps<T>['onOpenChange'];\n defaultFilter?: (textValue: string, inputValue: string) => boolean;\n}\n\n/**\n * Sapphire search input field.\n */\nexport const SearchField = React.forwardRef(function SearchField<\n T extends object\n>(\n props: SapphireSearchFieldProps<T>,\n forwardedRef: ForwardedRef<HTMLInputElement>\n): JSX.Element {\n useThemeCheck();\n\n const inputRef = useObjectRef(forwardedRef);\n const buttonRef = useRef<HTMLDivElement>(null);\n const listBoxRef = useFocusableRef<HTMLUListElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const triggerRef = useFocusableRef<HTMLDivElement>(null);\n const {\n styleProps: { style, className },\n } = useSapphireStyleProps(props);\n\n const state = useComboBoxState({\n ...props,\n inputValue: props.value,\n defaultInputValue: props.defaultValue,\n onInputChange: props.onChange,\n allowsEmptyCollection: false,\n allowsCustomValue: true,\n shouldCloseOnBlur: true,\n });\n\n const { inputProps: comboBoxInputProps, listBoxProps } = useComboBox(\n {\n ...props,\n inputRef,\n listBoxRef,\n popoverRef,\n },\n state\n );\n\n /**\n * In order to compose the `useSearchField` and `useComboBox` we want to:\n * - let the combobox control the input but\n * - allow the search field's \"clear\" and \"submit\" behavior\n *\n * For this, we take control of `useSearchField` and not pass the props\n * indiscriminately.\n *\n * For example think about using `onBlur` on `SearchField`. The combobox\n * hook gets that prop and the input props we get back will add that\n * listener to the input. We don't want the input props from\n * `useSearchField` to add the same listener.\n */\n const searchProps: AriaSearchFieldProps = {\n 'aria-label': props['aria-label'],\n 'aria-labelledby': props['aria-labelledby'],\n isDisabled: props.isDisabled,\n isReadOnly: props.isReadOnly,\n // needed for the submit functionality\n value: state.inputValue,\n onSubmit: (value) => {\n if (!state.selectionManager.isFocused) {\n props?.onSubmit?.(value);\n }\n },\n onClear: () => {\n state.setInputValue('');\n props.onClear?.();\n },\n };\n\n const searchFieldState = useSearchFieldState(searchProps);\n\n const { clearButtonProps, inputProps: searchFieldInputProps } =\n useSearchField(searchProps, searchFieldState, inputRef);\n\n const { buttonProps } = useButton(\n {\n ...clearButtonProps,\n elementType: 'div',\n },\n buttonRef\n );\n\n return (\n <div\n className={clsx(styles['sapphire-search-field'], className, {\n [styles['sapphire-search-field--medium']]: props.size === 'medium',\n [styles['sapphire-search-field--surface-secondary']]:\n props.surface === 'secondary',\n [styles['is-disabled']]: props.isDisabled,\n })}\n style={style}\n ref={triggerRef}\n >\n <span className={styles['sapphire-search-field__icon']}>\n <Icon size={props.size === 'medium' ? 'm' : 'l'}>\n <Search />\n </Icon>\n </span>\n <input\n {...mergeProps(comboBoxInputProps, searchFieldInputProps)}\n ref={inputRef}\n className={clsx(styles['sapphire-search-field__input'], {\n [styles['sapphire-search-field__input--empty']]:\n state.inputValue.length === 0,\n })}\n />\n <div\n ref={buttonRef}\n className={styles['sapphire-search-field__button']}\n {...buttonProps}\n >\n <Icon size={props.size === 'medium' ? 'm' : 'l'}>\n <CloseCircle />\n </Icon>\n </div>\n {state.isOpen && (\n <ListBoxPopover<T>\n state={state}\n triggerRef={triggerRef}\n popoverRef={popoverRef}\n listBoxRef={listBoxRef}\n listBoxProps={listBoxProps}\n selectWidth={triggerRef.current?.offsetWidth || 0}\n size={props.size}\n disableSelectedStyles\n isNonModal\n >\n {props.children || []}\n </ListBoxPopover>\n )}\n </div>\n );\n});\n","import React, { useRef } from 'react';\nimport clsx from 'clsx';\nimport { AriaToastProps, useToast } from '@react-aria/toast';\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n IconButton,\n} from '@danske/sapphire-react';\n\nimport styles from '@danske/sapphire-css/components/toast/toast.module.css';\nimport { ToastState } from '@react-stately/toast';\nimport { Close } from '@danske/sapphire-icons/react';\n\nexport type ToastProps<T> = AriaToastProps<T> &\n SapphireStyleProps & {\n state: ToastState<T>;\n };\n\nexport const Toast = <T,>({ state, ...props }: ToastProps<T>) => {\n const {\n styleProps: { style, className },\n } = useSapphireStyleProps(props);\n\n const ref = useRef(null);\n const { toastProps, titleProps, closeButtonProps } = useToast(\n props,\n state,\n ref\n );\n\n return (\n <div\n {...toastProps}\n className={clsx(\n styles['sapphire-toast'],\n props.toast.animation\n ? styles[`sapphire-toast--${props.toast.animation}`]\n : {},\n className\n )}\n style={style}\n ref={ref}\n onAnimationEnd={() => {\n // Remove the toast when the exiting animation completes.\n if (props.toast.animation === 'exiting') {\n state.remove(props.toast.key);\n }\n }}\n >\n <div className={clsx(styles['sapphire-toast__content'])}>\n <div {...titleProps}>{props.toast.content}</div>\n <IconButton\n {...closeButtonProps}\n aria-label=\"Close\"\n size=\"small\"\n variant=\"tertiary\"\n appearance=\"ghost\"\n >\n <Close />\n </IconButton>\n </div>\n </div>\n );\n};\n","import React, { useRef } from 'react';\nimport { AriaToastRegionProps, useToastRegion } from '@react-aria/toast';\nimport clsx from 'clsx';\nimport {\n SapphireOverlayContainer,\n SapphireStyleProps,\n ThemeRoot,\n useThemeContext,\n} from '@danske/sapphire-react';\n\nimport styles from '@danske/sapphire-css/components/toast/toast.module.css';\nimport { ToastState } from '@react-stately/toast';\nimport { Toast } from './Toast';\n\ntype VerticalPlacement = 'top' | 'bottom';\ntype HorizontalPlacement = 'left' | 'right';\n\nexport type ToastRegionProps<T> = AriaToastRegionProps &\n SapphireStyleProps & {\n state: ToastState<T>;\n /**\n * Placement of the Toast notifications on the page.\n */\n placement?:\n | VerticalPlacement\n | `${VerticalPlacement}-${HorizontalPlacement}`;\n };\n\nexport const ToastRegion = <T,>({\n state,\n placement = 'bottom',\n ...props\n}: ToastRegionProps<T>) => {\n const ref = useRef(null);\n const { regionProps } = useToastRegion(props, state, ref);\n const { overlayZIndex = 100 } = useThemeContext();\n\n return (\n <SapphireOverlayContainer>\n <ThemeRoot contrast>\n <div\n {...regionProps}\n ref={ref}\n className={clsx(\n styles['sapphire-toast-container'],\n styles[`sapphire-toast-container--${placement}`]\n )}\n style={\n {\n zIndex: overlayZIndex + 200,\n } /* above overlays from @danske/sapphire-react */\n }\n >\n {state.visibleToasts.map((toast) => (\n <Toast {...props} key={toast.key} toast={toast} state={state} />\n ))}\n </div>\n </ThemeRoot>\n </SapphireOverlayContainer>\n );\n};\n","import React, { ReactNode, useContext } from 'react';\nimport { ToastState } from '@react-stately/toast';\n\nexport const ToastContext = React.createContext<ToastState<ReactNode> | null>(\n null\n);\n\nexport const useToastContext = () => {\n const context = useContext(ToastContext);\n\n return context;\n};\n","import React, { ReactNode } from 'react';\nimport { useThemeCheck } from '@danske/sapphire-react';\n\nimport { useToastState } from '@react-stately/toast';\nimport { ToastRegionProps, ToastRegion } from './ToastRegion';\nimport { ToastContext } from './context';\n\nexport type ToastProviderProps = Omit<ToastRegionProps<ReactNode>, 'state'> & {\n children: React.ReactNode;\n};\n\n/**\n * Sapphire toast provider.\n * Render this at the root of your app.\n */\nexport const ToastProvider = ({\n children,\n placement = 'bottom',\n ...props\n}: ToastProviderProps) => {\n useThemeCheck();\n\n const state = useToastState<ReactNode>({\n maxVisibleToasts: 1,\n hasExitAnimation: true,\n });\n\n return (\n <ToastContext.Provider value={state}>\n {children}\n {state.visibleToasts.length > 0 && (\n <ToastRegion {...props} state={state} placement={placement} />\n )}\n </ToastContext.Provider>\n );\n};\n","import { ReactNode } from 'react';\nimport { useToastContext } from './context';\n\nexport type ShowToastFn = (\n content: ReactNode,\n options?: ShowToastOptions\n) => void;\n\nexport interface ShowToastOptions {\n /**\n * Handler that is called when the toast is closed, either by the user\n * or after a timeout.\n */\n onClose?: () => void;\n /**\n * A timeout to automatically close the toast after, in milliseconds.\n * Note that if the toast is hovered or interacted with, the timeout is\n * paused.\n *\n * @default 3000\n */\n timeout?: number;\n}\n\nexport const useShowToast = (): ShowToastFn => {\n const toastState = useToastContext();\n\n if (!toastState) {\n throw new Error('\"useShowToast\" should be used inside a <ToastProvider>.');\n }\n\n return (content, options) => {\n const { onClose, timeout = 3000 } = options || {};\n /*\n * NOTE:\n * There is an addition \"priority\" parameter to \".add\".\n * We don't use it now, but we should if we will have different types of\n * toast notifications with different priorities.\n */\n toastState.add(content, { onClose, timeout });\n };\n};\n","import { Key } from 'react';\nimport {\n TreeProps as OriginalTreeProps,\n TreeState,\n useTreeState as useOriginalTreeState,\n} from '@react-stately/tree';\n\n/**\n * A wrapper for `useTreeState` to add support of single expanded item\n *\n * More details here\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-stately/tree/src/useTreeState.ts\n */\n\nexport interface TreeProps<T> extends OriginalTreeProps<T> {\n expansionMode?: TreeExpansionMode;\n}\n\nexport type TreeExpansionMode = 'single' | 'multiple';\n\nexport function useTreeState<T extends object>(\n props: TreeProps<T>\n): TreeState<T> {\n const state = useOriginalTreeState(props);\n\n const onToggle = (key: Key) => {\n state.setExpandedKeys(\n toggleKey(state.expandedKeys, key, props.expansionMode)\n );\n };\n\n return { ...state, toggleKey: onToggle };\n}\n\nfunction toggleKey(\n set: Set<Key>,\n key: Key,\n expansionMode: TreeExpansionMode = 'multiple'\n): Set<Key> {\n const res = new Set(set);\n if (res.has(key)) {\n res.delete(key);\n } else {\n if (expansionMode === 'single') res.clear();\n res.add(key);\n }\n\n return res;\n}\n","import React, { ReactNode, useRef } from 'react';\nimport { Node, ItemProps } from '@react-types/shared';\nimport { TreeState } from '@react-stately/tree';\nimport { useHover, usePress } from '@react-aria/interactions';\nimport { useFocusRing } from '@react-aria/focus';\nimport { mergeProps } from '@react-aria/utils';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/accordion/accordion.module.css';\nimport { HeadingProps, Icon } from '@danske/sapphire-react';\nimport { ChevronDown } from '@danske/sapphire-icons/react';\nimport { useAccordionItem } from '@react-aria/accordion';\nimport { Item } from '@react-stately/collections';\n\ninterface AccordionItemProps<T> {\n item: Node<T>;\n state: TreeState<T>;\n headerLevel: HeadingProps['level'];\n}\n\nexport function _AccordionItem<T>(props: AccordionItemProps<T>): JSX.Element {\n const { state, item } = props;\n\n const isOpen = state.expandedKeys.has(item.key);\n const isDisabled = state.disabledKeys.has(item.key);\n\n const { isHovered, hoverProps } = useHover({ isDisabled });\n const { pressProps, isPressed } = usePress({ isDisabled });\n const { focusProps, isFocusVisible } = useFocusRing();\n\n const ref = useRef<HTMLButtonElement>(null);\n\n const { buttonProps, regionProps } = useAccordionItem<T>(props, state, ref);\n\n /**\n * Fixes the bug when the onKeyDown event handler set on the useSelectableCollection\n * (a dependency of useAccordion) interfered with the keyboard events handling\n * and blocked the usage of some keyboard shortcuts for Accordion.Item children.\n * E.g. changing DateField value with Arrow key or text selection with Shift+ArrowUp.\n *\n * Source:\n * https://github.com/adobe/react-spectrum/blob/546ffa41f7d1d3a566950a14d8f46cf726891220/packages/%40react-aria/selection/src/useSelectableCollection.ts#L178\n */\n const onKeyDown = (e: React.KeyboardEvent) => {\n e.stopPropagation();\n };\n\n return (\n <div\n className={clsx(styles['sapphire-accordion__item'], {\n [styles['sapphire-accordion__item--open']]: isOpen,\n [styles['is-disabled']]: isDisabled,\n })}\n >\n <div role=\"heading\" aria-level={props.headerLevel}>\n <button\n {...mergeProps(buttonProps, hoverProps, pressProps, focusProps)}\n aria-disabled={isDisabled}\n ref={ref}\n className={clsx(\n styles['sapphire-accordion__item-header'],\n styles['js-focus'],\n styles['js-hover'],\n {\n [styles['is-focus']]: isFocusVisible,\n [styles['is-hover']]: isHovered,\n [styles['is-active']]: isPressed,\n }\n )}\n >\n {item.props.heading}\n <div className={clsx(styles['sapphire-accordion__item-arrow'])}>\n <Icon>\n <ChevronDown />\n </Icon>\n </div>\n </button>\n </div>\n <div\n {...mergeProps(regionProps, { onKeyDown })}\n aria-hidden={!isOpen}\n className={clsx(styles['sapphire-accordion__item-content-wrapper'])}\n >\n <div className={clsx(styles['sapphire-accordion__item-content'])}>\n {item.props.children}\n </div>\n </div>\n </div>\n );\n}\n\nexport interface SapphireAccordionItemProps<T>\n extends Omit<ItemProps<T>, 'title'> {\n heading: ReactNode;\n}\n\nexport const AccordionItem = Item as <T>(\n props: SapphireAccordionItemProps<T>\n) => JSX.Element;\n","import React, { ForwardedRef, Ref, forwardRef } from 'react';\nimport styles from '@danske/sapphire-css/components/accordion/accordion.module.css';\nimport clsx from 'clsx';\nimport {\n HeadingProps,\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport { CollectionBase, DOMProps, Expandable } from '@react-types/shared';\nimport { useAccordion } from '@react-aria/accordion';\nimport { TreeExpansionMode, useTreeState } from './useTreeState';\n\nimport { _AccordionItem } from './AccordionItem';\nimport { filterDOMProps, mergeProps, useObjectRef } from '@react-aria/utils';\n\nexport interface SapphireAccordionProps<T>\n extends SapphireStyleProps,\n CollectionBase<T>,\n DOMProps,\n Expandable {\n /** Allow one or many expanded items\n * @default 'multiple'\n */\n expansionMode?: TreeExpansionMode;\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?: HeadingProps['level'];\n /**\n * Removes the divider after the last list item.\n * Useful when rendered in a container which already has borders.\n */\n hideLastDivider?: boolean;\n}\n\nconst _Accordion = <T extends object>(\n {\n expansionMode = 'multiple',\n headerLevel = 5,\n hideLastDivider = false,\n ...props\n }: SapphireAccordionProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) => {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n const state = useTreeState<T>({ ...props, expansionMode });\n const forwardedRef = useObjectRef<HTMLDivElement>(ref);\n\n const { accordionProps } = useAccordion(props, state, forwardedRef);\n\n return (\n <div\n {...mergeProps(\n accordionProps,\n filterDOMProps(props, { labelable: true })\n )}\n className={clsx(\n styles['sapphire-accordion'],\n {\n [styles['sapphire-accordion--without-last-divider']]: hideLastDivider,\n },\n styleProps.className\n )}\n ref={forwardedRef}\n style={styleProps.style}\n >\n {[...state.collection].map((item) => (\n <_AccordionItem<T>\n headerLevel={headerLevel}\n key={item.key}\n item={item}\n state={state}\n />\n ))}\n </div>\n );\n};\n\nexport const Accordion = forwardRef(_Accordion) as <T extends object>(\n props: SapphireAccordionProps<T> & { ref?: Ref<HTMLDivElement> }\n) => React.ReactElement;\n","import React, { ReactNode } from 'react';\nimport styles from '@danske/sapphire-css/components/accordion/accordion.module.css';\nimport clsx from 'clsx';\nimport { DOMProps } from '@react-types/shared';\nimport { filterDOMProps } from '@react-aria/utils';\n\nexport interface SapphireAccordionHeadingProps extends DOMProps {\n children?: ReactNode;\n}\n\nexport const AccordionHeading = ({\n children,\n ...props\n}: SapphireAccordionHeadingProps) => {\n return (\n <div\n {...filterDOMProps(props)}\n className={clsx(styles['sapphire-accordion__item-heading'])}\n >\n {children}\n </div>\n );\n};\n","import { Accordion, type SapphireAccordionProps } from './src/Accordion';\nimport {\n AccordionHeading,\n SapphireAccordionHeadingProps,\n} from './src/AccordionHeading';\nimport {\n AccordionItem,\n type SapphireAccordionItemProps,\n} from './src/AccordionItem';\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. https://jira.danskebank.com/browse/UC-3414 (fixed)\n * https://jira.danskebank.com/browse/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});\n\nexport {\n _Accordion as Accordion,\n type SapphireAccordionProps,\n type SapphireAccordionItemProps,\n type SapphireAccordionHeadingProps,\n};\n","import { DOMRef, DOMProps } from '@react-types/shared';\nimport { filterDOMProps } from '@react-aria/utils';\nimport React, { ElementType, forwardRef } from 'react';\nimport { useDOMRef } from '@react-spectrum/utils';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/text/text.module.css';\n\nimport {\n useThemeCheck,\n useTextStyleProps,\n TextStyleProps,\n SapphireStyleProps,\n} from '@danske/sapphire-react';\n\ntype HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface TypographyHeadingProps\n extends DOMProps,\n TextStyleProps,\n SapphireStyleProps {\n children: React.ReactNode;\n /**\n * The level of the heading.\n */\n level: HeadingLevel;\n elementType?: `h${HeadingLevel}`;\n fontVariant?: 'default' | 'alternative';\n}\n\nexport const Heading = forwardRef(function Heading(\n props: TypographyHeadingProps,\n ref: DOMRef<HTMLHeadingElement>\n) {\n useThemeCheck();\n\n const domProps = filterDOMProps(props);\n const { children, level, elementType, ...otherProps } = props;\n const { styleProps } = useTextStyleProps(otherProps);\n const domRef = useDOMRef(ref);\n const HeadingTag = elementType ? elementType : (`h${level}` as ElementType);\n\n return (\n <HeadingTag\n {...domProps}\n {...styleProps}\n className={clsx(\n styles['sapphire-text'],\n styles[`sapphire-text--heading-${level}` as const],\n styleProps.className,\n {\n [styles['sapphire-text--heading-alternative']]:\n props.fontVariant === 'alternative',\n }\n )}\n ref={domRef}\n >\n {children}\n </HeadingTag>\n );\n});\n","import { DOMProps } from '@react-types/shared';\nimport { filterDOMProps } from '@react-aria/utils';\nimport React, { ElementType, forwardRef } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/text/text.module.css';\nimport {\n SapphireStyleProps,\n TextStyleProps,\n useTextStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\n\nexport interface TypographySubheadingProps\n extends DOMProps,\n TextStyleProps,\n SapphireStyleProps {\n children: React.ReactNode;\n /**\n * The actual DOM element to render.\n * @default 'div'\n */\n elementType?: string;\n /**\n * Sets level of the hierarchy of the subheading.\n * @default 1\n */\n level?: 1 | 2;\n\n /**\n * If text is bold\n * @default false\n */\n isBold?: boolean;\n}\n\n/**\n * A subheading is a piece of text used under regular headings (h1-h6).\n * A subheading is not itself a heading, but it can assist a heading by\n * providing a description to the heading it accompanies.\n * By default, it renders as block text (div), but you can render it as\n * anything else.\n *\n * See:\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element#text_content\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element#inline_text_semantics\n */\nexport const Subheading = forwardRef(function Subheading(\n props: TypographySubheadingProps,\n ref: React.ForwardedRef<HTMLElement>\n) {\n useThemeCheck();\n\n const {\n children,\n level = 1,\n elementType: CustomElement = 'div' as ElementType,\n isBold = false,\n ...otherProps\n } = props;\n const { styleProps } = useTextStyleProps(otherProps);\n const levelClassName = `sapphire-text--subheading-${level}` as const;\n\n return (\n <CustomElement\n {...filterDOMProps(props)}\n {...styleProps}\n className={clsx(\n styleProps.className,\n styles['sapphire-text'],\n styles[levelClassName],\n {\n [styles['sapphire-text--strong']]: isBold,\n }\n )}\n style={styleProps.style}\n ref={ref}\n >\n {children}\n </CustomElement>\n );\n});\n","import { DOMProps } from '@react-types/shared';\nimport { filterDOMProps } from '@react-aria/utils';\nimport React, { ElementType, forwardRef } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/text/text.module.css';\nimport {\n SapphireStyleProps,\n TextStyleProps,\n useTextStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\n\nexport interface TypographyBodyProps\n extends DOMProps,\n TextStyleProps,\n SapphireStyleProps {\n children: React.ReactNode;\n /**\n * The actual DOM element to render.\n * @default 'p'\n */\n elementType?: string;\n /**\n * Sets the level of the hierarchy of the text.\n * @default 1\n */\n level?: 1 | 2 | 3;\n /**\n * If text should be underlined.\n * @default false\n */\n isUnderlined?: boolean;\n\n /**\n * If text is bold.\n * @default false\n */\n isBold?: boolean;\n}\n\n/**\n * Body text. This is the most common text style. By default, it renders as a\n * paragraph (p), but you can render it as a span or something else.\n *\n * See:\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element#text_content\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element#inline_text_semantics\n */\nexport const Body = forwardRef(function Body(\n props: TypographyBodyProps,\n ref: React.ForwardedRef<HTMLElement>\n) {\n useThemeCheck();\n\n const {\n children,\n level = 1,\n elementType: CustomElement = 'p' as ElementType,\n isUnderlined = false,\n isBold = false,\n ...otherProps\n } = props;\n const { styleProps } = useTextStyleProps(otherProps);\n const levelClassName = `sapphire-text--body-${level}` as const;\n\n return (\n <CustomElement\n {...filterDOMProps(props)}\n {...styleProps}\n className={clsx(\n styleProps.className,\n styles['sapphire-text'],\n styles[levelClassName],\n {\n [styles['sapphire-text--strong']]: isBold,\n [styles['sapphire-text--underlined']]: isUnderlined,\n }\n )}\n style={styleProps.style}\n ref={ref}\n >\n {children}\n </CustomElement>\n );\n});\n","import { DOMProps } from '@react-types/shared';\nimport { filterDOMProps } from '@react-aria/utils';\nimport React, { ElementType, forwardRef } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/text/text.module.css';\nimport {\n SapphireStyleProps,\n TextStyleProps,\n useTextStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\n\nexport interface TypographyCaptionProps\n extends DOMProps,\n TextStyleProps,\n SapphireStyleProps {\n children: React.ReactNode;\n /**\n * The actual DOM element to render.\n * @default 'div'\n */\n elementType?: string;\n /**\n * Sets the level of the hierarchy of the caption.\n * @default 1\n */\n level?: 1 | 2;\n}\n\n/**\n * Caption text. Usually serves as a description of an adjecent picture or\n * other element.\n * By default, it renders as inline text (div), but you can render it as\n * something more semantically meaningful.\n *\n * See:\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element#text_content\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element#inline_text_semantics\n */\nexport const Caption = forwardRef(function Caption(\n props: TypographyCaptionProps,\n ref: React.ForwardedRef<HTMLElement>\n) {\n useThemeCheck();\n\n const {\n children,\n level = 1,\n elementType: CustomElement = 'div' as ElementType,\n ...otherProps\n } = props;\n const { styleProps } = useTextStyleProps(otherProps);\n const levelClassName = `sapphire-text--caption-${level}` as const;\n\n return (\n <CustomElement\n {...filterDOMProps(props)}\n {...styleProps}\n className={clsx(\n styleProps.className,\n styles['sapphire-text'],\n styles[levelClassName]\n )}\n style={styleProps.style}\n ref={ref}\n >\n {children}\n </CustomElement>\n );\n});\n","import { Heading, type TypographyHeadingProps } from './src/Heading';\nimport { Subheading, type TypographySubheadingProps } from './src/Subheading';\nimport { Body, type TypographyBodyProps } from './src/Body';\nimport { Caption, TypographyCaptionProps } from './src/Caption';\nimport { ComponentType } from 'react';\n\nexport const Typography: {\n Heading: ComponentType<TypographyHeadingProps>;\n Subheading: ComponentType<TypographySubheadingProps>;\n Body: ComponentType<TypographyBodyProps>;\n Caption: ComponentType<TypographyCaptionProps>;\n} = {\n Heading,\n Subheading,\n Body,\n Caption,\n};\n\nexport type {\n TypographyHeadingProps,\n TypographySubheadingProps,\n TypographyBodyProps,\n TypographyCaptionProps,\n};\n","import React, { ReactNode } from 'react';\n\nimport {\n SapphireStyleProps,\n useThemeCheck,\n Field,\n Label,\n} from '@danske/sapphire-react';\nimport { useField } from '@react-aria/label';\nimport { mergeProps } from '@react-aria/utils';\n\nexport type FieldsetProps = SapphireStyleProps & {\n /**\n * A label that describes the groups of fields.\n * The label is required because a fieldset that is not labelled is not\n * better than separate labelled fields.\n */\n label: ReactNode;\n /**\n * Whether the input is disabled.\n * */\n isDisabled?: boolean;\n /**\n * Whether the input is disabled.\n * */\n isRequired?: 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.\n * A `string` 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 | string;\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 ContextualHelp to render next to the label.\n */\n contextualHelp?: ReactNode;\n /**\n * @default 'large'\n */\n size?: 'large' | 'medium';\n /**\n * To visually indicate if this field is required or optional.\n * @default false\n */\n necessityIndicator?: boolean;\n /**\n * Children should be two or more form controls without labels, notes or\n * error messages.\n *\n * We recommend you only use these fields inside: `<TextField>`, `<Select> `,\n * `<SearchableSelect>`, `<MultiSelect>`, `<SearchableMultiSelect>`,\n * `<DateField>` or `<DateRangeField>`.\n *\n * Example:\n * ```jsx\n * <Fieldset label=\"Phone Number\">\n * <Select aria-label=\"Country code\" placeholder=\"+00\" width={90}>\n * <SelectItem>+40</SelectItem>\n * <SelectItem>+42</SelectItem>\n * <SelectItem>+45</SelectItem>\n * </Select>\n * <TextField\n * aria-label=\"Phone number\"\n * placeholder=\"000-000-0000\"\n * ></TextField>\n * </Fieldset>\n * ```\n */\n children: ReactNode;\n\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\n/**\n * Sapphire search input field.\n */\nexport const Fieldset = ({\n label,\n contextualHelp,\n note,\n error,\n isDisabled,\n isRequired,\n necessityIndicator,\n children,\n size = 'large',\n labelPlacement = 'above',\n ...props\n}: FieldsetProps) => {\n useThemeCheck();\n\n const { fieldProps, descriptionProps, errorMessageProps } = useField({\n isInvalid: !!error,\n label,\n });\n\n return (\n <Field\n elementType=\"fieldset\"\n error={!!error}\n isDisabled={isDisabled}\n size={size}\n labelPlacement={labelPlacement}\n {...mergeProps(props, fieldProps)}\n >\n <Field.Label elementType=\"legend\">\n <Label\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 <Field.Control isGroup>{children}</Field.Control>\n {(error || note) && (\n <Field.Footer>\n {error ? (\n <Field.Note {...errorMessageProps}>{error}</Field.Note>\n ) : note ? (\n <Field.Note {...descriptionProps}>{note}</Field.Note>\n ) : (\n <></>\n )}\n </Field.Footer>\n )}\n </Field>\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);\n\n return (\n <>\n <PressResponder\n onPress={() => {\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, useRef } from 'react';\nimport clsx from 'clsx';\nimport {\n Heading,\n Icon,\n SapphireStyleProps,\n useButton,\n useSapphireStyleProps,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/dropzone/dropzone.module.css';\nimport { Upload } from '@danske/sapphire-icons/react';\nimport { Body } from '../../Typography/src/Body';\nimport {\n HoverProps,\n Pressable,\n useHover,\n usePress,\n} from '@react-aria/interactions';\nimport { mergeProps, useId } 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 SapphireStyleProps,\n Omit<DropOptions, 'hasDropButton'>,\n HoverProps,\n FileSelectProps,\n AriaLabelingProps {\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 ref: ForwardedRef<HTMLDivElement>\n) {\n const {\n isDisabled = false,\n hasError,\n renderInstruction,\n onFileSelectOpen = () => null,\n acceptedFileTypes,\n allowsMultiple,\n onDrop = () => null,\n } = props;\n\n const id = useId();\n const paragraphId = props['aria-label'] ? undefined : id;\n const format = useMessageFormatter(intlMessages);\n const pressableRef = useRef(null);\n const { hoverProps, isHovered } = useHover({ isDisabled });\n const { styleProps } = useSapphireStyleProps(props);\n const {\n dropProps,\n dropButtonProps,\n isDropTarget: isDropping,\n } = useDrop({\n ...props,\n ref: pressableRef,\n hasDropButton: true,\n isDisabled,\n });\n const { buttonProps } = useButton(\n { ...dropButtonProps, elementType: 'div' },\n pressableRef\n );\n const { focusProps, isFocusVisible } = useFocusRing();\n const { pressProps, isPressed } = usePress({});\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 pressProps\n )}\n ref={ref}\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>\n <Upload />\n </Icon>\n </div>\n <div className={clsx(styles['sapphire-dropzone__heading'])}>\n <Heading level={6}>\n {isDropping\n ? format('dropzone-heading-dropping')\n : format('dropzone-heading-default')}\n </Heading>\n </div>\n <div\n id={paragraphId}\n className={clsx(styles['sapphire-dropzone__paragraph'])}\n >\n <Body level={2}>{renderInstruction(isDropping)}</Body>\n </div>\n </div>\n </div>\n </Pressable>\n </FileTrigger>\n );\n});\n","import React, { ReactNode } from 'react';\nimport {\n Dialog,\n DialogProps,\n SapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport {\n FeedbackMessage,\n SapphireFeedbackMessageProps,\n} from '../../FeedbackMessage';\nimport { AriaModalOverlayProps } from '@react-aria/overlays';\nimport { DOMRef } from '@react-types/shared';\n\nexport type SapphireAlertDialogProps = AriaModalOverlayProps &\n SapphireStyleProps &\n Pick<DialogProps, 'isOpen' | 'onClose'> &\n Omit<SapphireFeedbackMessageProps, 'heading' | 'actions'> & {\n /**\n *\n * @default \"horizontal\"\n */\n actionsOrientation?: 'vertical' | 'horizontal';\n /**\n * The elements that will be rendered in the footer of the dialog.\n */\n actions: ReactNode;\n /**\n * The title of the dialog.\n */\n heading: string;\n };\n\nexport const AlertDialog = React.forwardRef(function AlertDialog(\n props: SapphireAlertDialogProps,\n ref: DOMRef<HTMLDivElement>\n) {\n useThemeCheck();\n\n const {\n variant = 'neutral',\n icon,\n body,\n actionsOrientation = 'horizontal',\n actions,\n heading,\n ...rest\n } = props;\n\n return (\n <Dialog\n ref={ref}\n role=\"alertdialog\"\n type=\"active\"\n size=\"extra-small\"\n header={<></>}\n content={\n <Dialog.Content>\n <FeedbackMessage\n heading={<Dialog.Header level={6} heading={heading} />}\n variant={variant}\n icon={icon}\n body={body}\n />\n </Dialog.Content>\n }\n footer={\n <Dialog.Footer stretch=\"autoVertical\" orientation={actionsOrientation}>\n {actions}\n </Dialog.Footer>\n }\n {...rest}\n />\n );\n});\n","import { 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';\nimport { Validation } from '@react-types/shared';\n\nexport interface SapphireNumberFieldProps\n /**\n * Reasons to omit the below properties:\n * - Validation:\n * - validationState: we handle that with the `error` prop instead.\n * - errorMessage: our own error-prop covers the same.\n */\n extends Omit<\n AriaNumberFieldProps,\n 'errorMessage' | keyof Omit<Validation<unknown>, 'isRequired'>\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 `string` 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 | string;\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 { 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 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 { CaretUp, CaretDown } 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: 'large' | 'medium';\n}) => {\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(buttonProps, hoverProps, filterDOMProps(props))}\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 === 'large' ? 'm' : 's'}>\n {variant === 'increment' ? <CaretUp /> : <CaretDown />}\n </Icon>\n </button>\n );\n};\n","import { mergeProps, useObjectRef } from '@react-aria/utils';\nimport { createFocusableRef } from '@react-spectrum/utils';\nimport { FocusableRefValue, PressEvents } from '@react-types/shared';\nimport React from 'react';\nimport {\n ForwardedRef,\n forwardRef,\n ReactNode,\n RefObject,\n useImperativeHandle,\n useRef,\n} from 'react';\nimport {\n SapphireNumberFieldProps,\n useSapphireNumberField,\n} from './useSapphireNumberField';\nimport textFieldStyles from '@danske/sapphire-css/components/textField/textField.module.css';\nimport { useFocusRing } from '@react-aria/focus';\nimport clsx from 'clsx';\nimport {\n Field,\n Label,\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport { useAutofillStyle } from './useAutofillStyle';\nimport { useMessageFormatter } from '@react-aria/i18n';\nimport intlMessages from '../i18n';\nimport { StepperButton } from './StepperButton';\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 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 ContextualHelp 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 'large'\n */\n size?: 'large' | 'medium';\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 = 'large',\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(props);\n const { styleProps } = useSapphireStyleProps(props);\n const { autofillStyles, updateStyle } = useAutofillStyle<'input'>(inputRef);\n\n const domRef = useRef<HTMLDivElement>(null);\n\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(domRef, 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={domRef}\n isDisabled={isDisabled}\n error={!!error}\n size={size}\n labelPlacement={labelPlacement}\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--medium']]: size === 'medium',\n })}\n style={{\n ...(styleProps.style.width\n ? { width: styleProps.style.width }\n : {}),\n }}\n >\n {prefix && (\n <span\n className={clsx(textFieldStyles['sapphire-text-field__prefix'], {\n [textFieldStyles['sapphire-text-field__prefix--icon']]:\n typeof prefix !== 'string',\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(textFieldStyles['sapphire-text-field__postfix'], {\n [textFieldStyles['sapphire-text-field__postfix--icon']]:\n typeof postfix !== 'string',\n })}\n >\n {postfix}\n </span>\n )}\n {showButtons && (\n <div\n className={clsx(textFieldStyles['sapphire-text-field__stepper'])}\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 || note) && (\n <Field.Footer>\n {error ? (\n <Field.Note {...errorMessageProps}>{error}</Field.Note>\n ) : note ? (\n <Field.Note {...descriptionProps}>{note}</Field.Note>\n ) : (\n <></>\n )}\n </Field.Footer>\n )}\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, { 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 { useThemeCheck } from '@danske/sapphire-react';\nimport { AlertCircle, Close } from '@danske/sapphire-icons/react';\nimport styles from '@danske/sapphire-css/components/tag/tag.module.css';\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\nexport function Tag<T>(props: TagProps<T>) {\n useThemeCheck();\n const { hasError = false, item, state } = props;\n const ref = useRef(null);\n const {\n allowsRemoving,\n allowsSelection,\n gridCellProps,\n isDisabled,\n isFocused,\n isPressed,\n isSelected,\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 <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--error']]: hasError,\n [styles['is-active']]: allowsSelection && isSelected,\n [styles['is-active']]: hasAction && isPressed,\n [styles['is-focus']]: isFocused,\n [styles['is-hover']]: hasAction && isHovered,\n [styles['is-disabled']]: isDisabled,\n }\n )}\n aria-invalid={hasError}\n >\n <div {...gridCellProps} className={styles['sapphire-tag__gridcell']}>\n {hasError && <IconError />}\n {item.rendered}\n {allowsRemoving && (\n <RemoveButton {...(removeButtonProps as AriaButtonProps)} />\n )}\n </div>\n </div>\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 <span className={styles['sapphire-tag__icon']}>\n <Close />\n </span>\n </button>\n );\n}\n\nconst IconError = () => {\n return (\n <span\n className={clsx(\n styles['sapphire-tag__icon'],\n styles['sapphire-tag__icon--error']\n )}\n >\n <AlertCircle />\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} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/tag/tag.module.css';\n\nimport { Tag } from './Tag';\n\nexport interface TagGroupProps<T>\n extends CollectionBase<T>,\n DOMProps,\n AriaLabelingProps,\n SapphireStyleProps {\n /**\n * A ContextualHelp 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 onRemove?: (keys: Set<Key>) => void;\n}\n\nexport function TagGroup<T extends object>(props: TagGroupProps<T>) {\n useThemeCheck();\n const {\n contextualHelp,\n errorMessage,\n label: labelText,\n labelPlacement = 'above',\n note,\n ...otherProps\n } = props;\n const ref = useRef(null);\n const state = useListState(props);\n const { descriptionProps, gridProps, labelProps, errorMessageProps } =\n useTagGroup(props, state, ref);\n\n return (\n <Field\n {...otherProps}\n error={!!errorMessage}\n labelPlacement={labelPlacement}\n labelVerticalAlignment=\"top\"\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 {...gridProps} ref={ref} className={styles['sapphire-tag-group']}>\n {[...state.collection].map((item) => (\n <Tag\n key={item.key}\n item={item}\n state={state}\n hasError={item.props.hasError}\n />\n ))}\n </div>\n </Field.Control>\n {(note || errorMessage) &&\n (errorMessage ? (\n <Field.Footer>\n <Field.Note {...errorMessageProps}>{errorMessage}</Field.Note>\n </Field.Footer>\n ) : (\n <Field.Footer>\n <Field.Note {...descriptionProps}>{note}</Field.Note>\n </Field.Footer>\n ))}\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\nconst TagItem = Item as <T>(props: TagItemProps<T>) => JSX.Element;\n\nexport { TagItem };\n","import React, { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { useField } from '@react-aria/label';\nimport type { DOMProps } from '@react-types/shared';\nimport {\n Field,\n Label,\n SapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/labeledValue/labeledValue.module.css';\n\nexport interface LabeledValueProps extends DOMProps, SapphireStyleProps {\n children?: React.ReactNode;\n /**\n * A ContextualHelp 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 'large'\n */\n size?: 'large' | 'medium';\n}\n\nexport function LabeledValue(props: LabeledValueProps) {\n useThemeCheck();\n const {\n children,\n contextualHelp,\n label,\n labelPlacement = 'above',\n size = 'large',\n } = props;\n const { fieldProps } = useField({ label });\n\n return (\n <Field {...fieldProps} labelPlacement={labelPlacement} size={size}>\n <Field.Label>\n <Label contextualHelp={contextualHelp} size={size}>\n {label}\n </Label>\n </Field.Label>\n <Field.Control>\n <div\n className={clsx(styles['sapphire-labeled-value'], {\n [styles['sapphire-labeled-value--medium']]: size === 'medium',\n })}\n >\n {children}\n </div>\n </Field.Control>\n </Field>\n );\n}\n"],"names":["React","useThemeCheck","useFocusableRef","useHover","useSapphireStyleProps","clsx","styles","Icon","useToggleState","useToggleButton","usePreventTouchEnd","FocusRing","__spreadProps","__spreadValues","mergeProps","da","en","de","fi","no","pl","se","useLocale","useCalendarGrid","endOfMonth","getWeeksInMonth","useDateFormatter","useMemo","startOfWeek","today","useMessageFormatter","intlMessages","date","isSameMonth","useCalendarCell","isSameDay","getDayOfWeek","startOfMonth","getLocalTimeZone","isSameYear","useEffect","focusWithoutScrolling","usePress","startOfYear","endOfYear","useControlledState","useCalendarState","IconButton","ChevronLeft","ChevronRight","TransitionGroup","CSSTransition","useState","createCalendar","useCalendar","filterDOMProps","Button","useRef","originalUseRangeCalendarState","useObjectRef","useRangeCalendar","toCalendarDate","PopoverTrigger","Flex","tokens","VisuallyHidden","ChevronUp","ChevronDown","LocalizedStringDictionary","useDateSegment","useButton","useFocusRing","useCustomDateFormatLocale","useDateFieldState","useDateField","CloseCircle","useDialog","useDatePickerState","useDatePicker","Field","Label","PressResponder","CalendarIcon","Popover","View","forwardRef","originalUseDateRangePickerState","ArrowRight","useDateRangePicker","I18nProvider","Calendar","CheckMarkCircle","AlertCircle","AlertTriangle","Bell","Heading","originalUseComboBoxState","useComboBox","useSearchFieldState","useSearchField","Search","ListBoxPopover","__objRest","useToast","Close","useToastRegion","useThemeContext","SapphireOverlayContainer","ThemeRoot","useContext","useToastState","useOriginalTreeState","useAccordionItem","Item","_Accordion","useAccordion","useTextStyleProps","useDOMRef","label","useField","useId","useDrop","useClipboard","Pressable","Upload","Dialog","useNumberFieldState","useNumberField","CaretUp","CaretDown","useImperativeHandle","createFocusableRef","textFieldStyles","useTag","useListState","useTagGroup"],"mappings":"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"}