@abgov/react-components 7.2.0-dev.1 → 7.2.0-dev.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +22 -9
- package/index.js.map +1 -1
- package/index.mjs +22 -9
- package/index.mjs.map +1 -1
- package/package.json +1 -1
package/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../libs/react-components/src/lib/common/extract-props.ts","../../../libs/react-components/src/lib/accordion/accordion.tsx","../../../libs/react-components/src/lib/app-header/app-header.tsx","../../../libs/react-components/src/lib/app-header-menu/app-header-menu.tsx","../../../libs/react-components/src/lib/badge/badge.tsx","../../../libs/react-components/src/lib/block/block.tsx","../../../libs/react-components/src/lib/button/button.tsx","../../../libs/react-components/src/lib/button-group/button-group.tsx","../../../libs/react-components/src/lib/calendar/calendar.tsx","../../../libs/react-components/src/lib/callout/callout.tsx","../../../libs/react-components/src/lib/checkbox/checkbox.tsx","../../../libs/react-components/src/lib/checkbox-list/checkbox-list.tsx","../../../libs/react-components/src/lib/chip/chip.tsx","../../../libs/react-components/src/lib/circular-progress/circular-progress.tsx","../../../libs/react-components/src/lib/container/container.tsx","../../../libs/react-components/src/lib/data-grid/data-grid.tsx","../../../libs/common/src/lib/messaging/messaging.ts","../../../libs/common/src/lib/public-form-controller.ts","../../../node_modules/date-fns/toDate.mjs","../../../node_modules/date-fns/constructFrom.mjs","../../../node_modules/date-fns/addDays.mjs","../../../node_modules/date-fns/addMonths.mjs","../../../node_modules/date-fns/constants.mjs","../../../node_modules/date-fns/_lib/defaultOptions.mjs","../../../node_modules/date-fns/startOfWeek.mjs","../../../node_modules/date-fns/startOfISOWeek.mjs","../../../node_modules/date-fns/getISOWeekYear.mjs","../../../node_modules/date-fns/startOfDay.mjs","../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","../../../node_modules/date-fns/differenceInCalendarDays.mjs","../../../node_modules/date-fns/startOfISOWeekYear.mjs","../../../node_modules/date-fns/isSameDay.mjs","../../../node_modules/date-fns/isDate.mjs","../../../node_modules/date-fns/isValid.mjs","../../../node_modules/date-fns/startOfYear.mjs","../../../node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","../../../node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","../../../node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","../../../node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","../../../node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","../../../node_modules/date-fns/locale/en-US/_lib/localize.mjs","../../../node_modules/date-fns/locale/_lib/buildMatchFn.mjs","../../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","../../../node_modules/date-fns/locale/en-US/_lib/match.mjs","../../../node_modules/date-fns/locale/en-US.mjs","../../../node_modules/date-fns/getDayOfYear.mjs","../../../node_modules/date-fns/getISOWeek.mjs","../../../node_modules/date-fns/getWeekYear.mjs","../../../node_modules/date-fns/startOfWeekYear.mjs","../../../node_modules/date-fns/getWeek.mjs","../../../node_modules/date-fns/_lib/addLeadingZeros.mjs","../../../node_modules/date-fns/_lib/format/lightFormatters.mjs","../../../node_modules/date-fns/_lib/format/formatters.mjs","../../../node_modules/date-fns/_lib/format/longFormatters.mjs","../../../node_modules/date-fns/_lib/protectedTokens.mjs","../../../node_modules/date-fns/format.mjs","../../../node_modules/date-fns/getDaysInMonth.mjs","../../../node_modules/date-fns/lastDayOfMonth.mjs","../../../node_modules/date-fns/isAfter.mjs","../../../node_modules/date-fns/isBefore.mjs","../../../node_modules/date-fns/isSameMonth.mjs","../../../node_modules/date-fns/parseISO.mjs","../../../libs/common/src/lib/calendar-date.ts","../../../libs/react-components/src/lib/date-picker/date-picker.tsx","../../../libs/react-components/src/lib/details/details.tsx","../../../libs/react-components/src/lib/divider/divider.tsx","../../../libs/react-components/src/lib/drawer/drawer.tsx","../../../libs/react-components/src/lib/dropdown/dropdown.tsx","../../../libs/react-components/src/lib/dropdown/dropdown-item.tsx","../../../libs/react-components/src/lib/file-upload-card/file-upload-card.tsx","../../../libs/react-components/src/lib/file-upload-input/file-upload-input.tsx","../../../libs/react-components/src/lib/footer/footer.tsx","../../../libs/react-components/src/lib/footer-meta-section/footer-meta-section.tsx","../../../libs/react-components/src/lib/footer-nav-section/footer-nav-section.tsx","../../../libs/react-components/src/lib/form/fieldset.tsx","../../../libs/react-components/src/lib/form/public-form-page.tsx","../../../libs/react-components/src/lib/form/public-form-summary.tsx","../../../libs/react-components/src/lib/form/public-form.tsx","../../../libs/react-components/src/lib/form/public-subform.tsx","../../../libs/react-components/src/lib/form/public-subform-index.tsx","../../../libs/react-components/src/lib/form/task.tsx","../../../libs/react-components/src/lib/form/task-list.tsx","../../../libs/react-components/src/lib/form-item/form-item.tsx","../../../libs/react-components/src/lib/form-step/form-step.tsx","../../../libs/react-components/src/lib/form-stepper/form-stepper.tsx","../../../libs/react-components/src/lib/grid/grid.tsx","../../../libs/react-components/src/lib/hero-banner/hero-banner.tsx","../../../libs/react-components/src/lib/hero-banner/hero-banner-actions.tsx","../../../libs/react-components/src/lib/icon-button/icon-button.tsx","../../../libs/react-components/src/lib/icon/icon.tsx","../../../libs/react-components/src/lib/input/input.tsx","../../../libs/react-components/src/lib/linear-progress/linear-progress.tsx","../../../libs/react-components/src/lib/link/link.tsx","../../../libs/react-components/src/lib/link-button/link-button.tsx","../../../libs/react-components/src/lib/menu-button/menu-button.tsx","../../../libs/react-components/src/lib/menu-button/menu-action.tsx","../../../libs/react-components/src/lib/microsite-header/microsite-header.tsx","../../../libs/react-components/src/lib/modal/modal.tsx","../../../libs/react-components/src/lib/notification/notification.tsx","../../../libs/react-components/src/lib/one-column-layout/one-column-layout.tsx","../../../libs/react-components/src/lib/page-block/page-block.tsx","../../../libs/react-components/src/lib/pages/pages.tsx","../../../libs/react-components/src/lib/pagination/pagination.tsx","../../../libs/react-components/src/lib/popover/popover.tsx","../../../libs/react-components/src/lib/push-drawer/push-drawer.tsx","../../../libs/react-components/src/lib/radio-group/radio.tsx","../../../libs/react-components/src/lib/radio-group/radio-group.tsx","../../../libs/react-components/src/lib/side-menu-group/side-menu-group.tsx","../../../libs/react-components/src/lib/side-menu-heading/side-menu-heading.tsx","../../../libs/react-components/src/lib/side-menu/side-menu.tsx","../../../libs/react-components/src/lib/skeleton/skeleton.tsx","../../../libs/react-components/src/lib/spacer/spacer.tsx","../../../libs/react-components/src/lib/spinner/spinner.tsx","../../../libs/react-components/src/lib/table/table.tsx","../../../libs/react-components/src/lib/table/table-sort-header.tsx","../../../libs/react-components/src/lib/tabs/tabs.tsx","../../../libs/react-components/src/lib/tab/tab.tsx","../../../libs/react-components/src/lib/temporary-notification-ctrl/temporary-notification-ctrl.tsx","../../../libs/react-components/src/lib/text/text.tsx","../../../libs/react-components/src/lib/textarea/textarea.tsx","../../../libs/react-components/src/lib/three-column-layout/three-column-layout.tsx","../../../libs/react-components/src/lib/tooltip/tooltip.tsx","../../../libs/react-components/src/lib/two-column-layout/two-column-layout.tsx","../../../libs/react-components/src/lib/filter-chip/filter-chip.tsx","../../../libs/react-components/src/lib/use-public-form-controller.ts","../../../libs/react-components/src/lib/work-side-menu/work-side-menu.tsx","../../../libs/react-components/src/lib/work-side-menu-group/work-side-menu-group.tsx","../../../libs/react-components/src/lib/work-side-menu-item/work-side-menu-item.tsx","../../../libs/react-components/src/lib/work-side-notification-item/work-side-notification-item.tsx","../../../libs/react-components/src/lib/work-side-notification-panel/work-side-notification-panel.tsx"],"sourcesContent":["/**\n * Transform function type for converting prop names to attribute names.\n */\nexport type TransformFn = (input: string) => string;\n\n/**\n * Converts a camelCase string to lowercase (e.g., \"headingSize\" -> \"headingsize\")\n */\nexport const lowercase: TransformFn = (input) => input.toLowerCase();\n\n/**\n * Converts a camelCase string to kebab-case (e.g., \"verticalPosition\" -> \"vertical-position\")\n */\nexport const kebab: TransformFn = (input) =>\n input.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\n/**\n * Transforms React props to web component attributes.\n * Use object destructuring to extract props that need special handling,\n * then pass the rest through this function.\n *\n * @param props - The remaining props after destructuring\n * @param transform - Transform function (lowercase or kebab), defaults to lowercase\n * @returns Converted props ready to spread on the web component\n *\n * @example\n * export function GoabAccordion({open, onChange, headingContent, children, ...rest}: GoabAccordionProps) {\n * const _props = transformProps<WCProps>(rest, lowercase);\n * return (\n * <goa-accordion open={open ? \"true\" : undefined} {..._props}>\n * {children}\n * </goa-accordion>\n * );\n * }\n */\nexport function transformProps<WC = Record<string, unknown>>(\n props: object,\n transform: TransformFn = lowercase\n): WC {\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(props)) {\n // Skip undefined values - they shouldn't be passed to web components\n if (value === undefined) continue;\n\n // Data attributes pass through unchanged\n if (key.startsWith(\"data-\")) {\n result[key] = value;\n } else {\n result[transform(key)] = value;\n }\n }\n\n return result as WC;\n}\n","import { ReactNode, useEffect, useRef, type JSX } from \"react\";\n\nimport type {\n GoabAccordionHeadingSize,\n GoabAccordionIconPosition,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n open?: string;\n headingsize?: GoabAccordionHeadingSize;\n heading?: string;\n secondarytext?: string;\n headingContent?: ReactNode;\n maxwidth?: string;\n testid?: string;\n iconposition?: GoabAccordionIconPosition;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-accordion\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabAccordionProps extends Margins, DataAttributes {\n /** Sets the heading text. */\n heading?: string;\n /** Sets the state of the accordion container open or closed. */\n open?: boolean;\n /** Sets the heading size of the accordion container heading. @default \"small\" */\n headingSize?: GoabAccordionHeadingSize;\n /** Sets secondary text displayed alongside the heading. */\n secondaryText?: string;\n /** Sets content rendered within the accordion heading, alongside the heading text. */\n headingContent?: ReactNode;\n /** Sets the maximum width of the accordion. @default \"none\" */\n maxWidth?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the position of the expand/collapse icon. @default \"left\" */\n iconPosition?: GoabAccordionIconPosition;\n /** Callback fired when the accordion is opened or closed. Receives the new open state as a boolean. */\n onChange?: (open: boolean) => void;\n /** Content rendered inside the accordion body. */\n children?: ReactNode;\n}\n\n/** Let users show and hide sections of related content on a page. */\nexport function GoabAccordion({\n open,\n onChange,\n headingContent,\n children,\n ...rest\n}: GoabAccordionProps): JSX.Element {\n const ref = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n const element = ref.current;\n if (element && onChange) {\n const handler = (event: Event) => {\n const customEvent = event as CustomEvent;\n onChange?.(customEvent.detail.open);\n };\n element.addEventListener(\"_change\", handler);\n return () => {\n element.removeEventListener(\"_change\", handler);\n };\n }\n }, [onChange]);\n\n return (\n <goa-accordion ref={ref} open={open ? \"true\" : undefined} {..._props}>\n {headingContent && <div slot=\"headingcontent\">{headingContent}</div>}\n {children}\n </goa-accordion>\n );\n}\n\nexport default GoabAccordion;\n","import { useEffect, useRef, type JSX } from \"react\";\nimport { DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n heading?: string;\n secondarytext?: string;\n url?: string;\n maxcontentwidth?: string;\n fullmenubreakpoint?: number;\n hasmenuclickhandler?: string;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-app-header\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabAppHeaderProps extends DataAttributes {\n /** Set the service name to display in the app header. */\n heading?: string;\n /** V2 only: Secondary text displayed under the service name. */\n secondaryText?: string;\n /** Set the URL to link from the alberta.ca logo. A full url is required. */\n url?: string;\n /** Maximum width of the content area. */\n maxContentWidth?: string;\n /** Sets the breakpoint in px for the full menu to display. */\n fullMenuBreakpoint?: number;\n /** Content rendered inside the app header, typically navigation links. */\n children?: React.ReactNode;\n /** Callback fired when the menu button is clicked. When provided, clicking the menu button dispatches a custom event instead of toggling the menu. */\n onMenuClick?: () => void;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Provide structure to help users find their way around the service. */\nexport function GoabAppHeader({\n onMenuClick,\n children,\n secondaryText,\n ...rest\n}: GoabAppHeaderProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n if (!onMenuClick) {\n return;\n }\n const current = el.current;\n const listener = () => {\n onMenuClick?.();\n };\n current.addEventListener(\"_menuClick\", listener);\n return () => {\n current.removeEventListener(\"_menuClick\", listener);\n };\n }, [el, onMenuClick]);\n\n return (\n <goa-app-header\n ref={el}\n hasmenuclickhandler={onMenuClick ? \"true\" : \"false\"}\n secondarytext={secondaryText}\n {..._props}\n version=\"2\"\n >\n {children}\n </goa-app-header>\n );\n}\n","import { ReactNode } from \"react\";\nimport { DataAttributes, GoabIconType } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n heading: string;\n leadingicon?: GoabIconType;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-app-header-menu\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabAppHeaderMenuProps extends DataAttributes {\n /** @required The menu heading text displayed as the dropdown trigger. */\n heading: string;\n /** Icon displayed before the heading text. */\n leadingIcon?: GoabIconType;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Slot name used to place this menu in the correct slot of the parent component. */\n slotName?: string;\n /** Content rendered inside the menu dropdown, typically navigation links. */\n children?: ReactNode;\n}\n\n/** Menu items within the app header. */\nexport function GoabAppHeaderMenu({\n children,\n slotName,\n ...rest\n}: GoabAppHeaderMenuProps) {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-app-header-menu slot={slotName} {..._props}>\n {children}\n </goa-app-header-menu>\n );\n}\n\nexport default GoabAppHeaderMenu;\n","import {\n DataAttributes,\n GoabBadgeEmphasis,\n GoabBadgeSize,\n GoabBadgeType,\n GoabIconType,\n Margins,\n} from \"@abgov/ui-components-common\";\nimport type { JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n type: GoabBadgeType;\n icon?: string;\n content?: string;\n arialabel?: string;\n testid?: string;\n icontype?: GoabIconType;\n size?: GoabBadgeSize;\n emphasis?: GoabBadgeEmphasis;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-badge\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabBadgeProps extends Margins, DataAttributes {\n /** @required Sets the context and colour of the badge. */\n type: GoabBadgeType;\n /** @deprecated Use iconType instead. When true, displays an icon in the badge. */\n icon?: boolean;\n /** Text label of the badge. */\n content?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Accessible label for screen readers. */\n ariaLabel?: string;\n /** Icon type to display in the badge. */\n iconType?: GoabIconType;\n /** Sets the size of the badge. @default \"medium\" */\n size?: GoabBadgeSize;\n /** Sets the visual emphasis. 'subtle' for less prominent, 'strong' for more emphasis. @default \"strong\" */\n emphasis?: GoabBadgeEmphasis;\n}\n\n/**\n * Determines the icon display logic for the badge component.\n * Priority order:\n * 1. icon={true} - always show icon, starting with default\n * 2. icon={false} - always hide icon (overrides iconType)\n * 3. iconType provided - show custom icon\n * 4. default/no icon or iconType set - hide icon\n */\nfunction getIconValue(icon?: boolean, iconType?: GoabIconType): \"true\" | \"false\" {\n // Explicit icon prop takes precedence\n if (icon !== undefined) {\n return icon ? \"true\" : \"false\";\n }\n\n // Show custom icon if iconType is provided\n return iconType ? \"true\" : \"false\";\n}\n\n/** Small labels which hold small amounts of information, system feedback, or states. */\nexport function GoabBadge({\n icon,\n iconType,\n size = \"medium\",\n emphasis = \"strong\",\n ...rest\n}: GoabBadgeProps): JSX.Element {\n const _props = transformProps<WCProps>({ size, emphasis, ...rest }, lowercase);\n\n return (\n <goa-badge\n // Handle icon display priority: explicit icon prop takes precedence over iconType\n icon={getIconValue(icon, iconType)}\n icontype={iconType}\n {..._props}\n version=\"2\"\n size={size}\n emphasis={emphasis}\n />\n );\n}\n","import {\n GoabBlockAlignment,\n GoabBlockDirection,\n Margins,\n DataAttributes,\n Spacing,\n} from \"@abgov/ui-components-common\";\nimport { ReactNode } from \"react\";\nimport { transformProps, kebab } from \"../common/extract-props\";\n\nexport interface WCProps extends Margins {\n gap?: Spacing;\n direction?: GoabBlockDirection;\n alignment?: GoabBlockAlignment;\n \"min-width\"?: string;\n \"max-width\"?: string;\n width?: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-block\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabBlockProps extends Margins, DataAttributes {\n /** Spacing between items. Uses design system spacing tokens. @default \"m\" */\n gap?: Spacing;\n /** Stacking direction of child components. @default \"row\" */\n direction?: GoabBlockDirection;\n /** Primary axis alignment of child components. @default \"normal\" */\n alignment?: GoabBlockAlignment;\n /** Sets the minimum width of the block container. */\n minWidth?: string;\n /** Sets the maximum width of the block container. */\n maxWidth?: string;\n /** Sets the width of the block container. */\n width?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the block container. */\n children?: ReactNode;\n}\n\n/** Group components into a block with consistent space between. */\nexport function GoabBlock({ testId, children, ...rest }: GoabBlockProps) {\n const _props = transformProps<WCProps>({ testid: testId, ...rest }, kebab);\n\n return <goa-block {..._props}>{children}</goa-block>;\n}\n","import { ReactNode, useEffect, useRef, type JSX } from \"react\";\nimport {\n GoabButtonSize,\n GoabButtonType,\n GoabButtonVariant,\n GoabIconType,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n type?: GoabButtonType;\n size?: GoabButtonSize;\n variant?: GoabButtonVariant;\n disabled?: string;\n leadingicon?: string;\n trailingicon?: string;\n width?: string;\n testid?: string;\n action?: string;\n actionArgs?: string;\n actionArg?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-button\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabButtonProps extends Margins, DataAttributes {\n /** Sets the visual style of the button. Use \"primary\" for main actions, \"secondary\" for alternative actions, \"tertiary\" for low-emphasis actions, \"start\" for prominent call-to-action buttons, and \"text\" for text-only buttons. @default \"primary\" */\n type?: GoabButtonType;\n /** Controls the size of the button. Use \"compact\" for inline actions or space-constrained layouts. @default \"normal\" */\n size?: GoabButtonSize;\n /** Sets the color variant for semantic meaning. Use \"destructive\" for delete or irreversible actions, \"inverse\" for light-colored text on dark backgrounds, and \"dark\" for dark text color on text buttons only. Note: \"dark\" has no effect on non-text button types. @default \"normal\" */\n variant?: GoabButtonVariant;\n /** When true, prevents user interaction and applies disabled styling. */\n disabled?: boolean;\n /** Icon displayed before the button text. */\n leadingIcon?: GoabIconType;\n /** Icon displayed after the button text. */\n trailingIcon?: GoabIconType;\n /** Sets a custom width for the button (e.g., \"200px\" or \"100%\"). */\n width?: string;\n /** Callback fired when the button is clicked. */\n onClick?: () => void;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Action identifier passed in click events for event delegation patterns. */\n action?: string;\n /** Multiple argument values passed with the action in click events. */\n actionArgs?: Record<string, unknown>;\n /** Single argument value passed with the action in click events. */\n actionArg?: string;\n /** Content rendered inside the button. */\n children?: ReactNode;\n}\n\n/** Carry out an important action or navigate to another page. */\nexport function GoabButton({\n disabled,\n onClick,\n actionArgs,\n actionArg,\n children,\n ...rest\n}: GoabButtonProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n if (!onClick) {\n return;\n }\n const current = el.current;\n const listener = () => {\n onClick?.();\n };\n\n current.addEventListener(\"_click\", listener);\n return () => {\n current.removeEventListener(\"_click\", listener);\n };\n }, [el, onClick]);\n\n return (\n <goa-button\n ref={el}\n disabled={disabled ? \"true\" : undefined}\n action-arg={actionArg}\n action-args={JSON.stringify(actionArgs)}\n {..._props}\n version=\"2\"\n >\n {children}\n </goa-button>\n );\n}\n\nexport default GoabButton;\n","import {\n GoabButtonGroupAlignment,\n GoabButtonGroupGap,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\n\nimport type { JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n alignment: GoabButtonGroupAlignment;\n gap?: GoabButtonGroupGap;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-button-group\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabButtonGroupProps extends Margins, DataAttributes {\n /** @required Positions the button group in the page layout. */\n alignment: GoabButtonGroupAlignment;\n /** Sets the spacing between buttons in the button group. @default \"relaxed\" */\n gap?: GoabButtonGroupGap;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Button components to render inside the group. */\n children?: React.ReactNode;\n}\n\n/** Display multiple related actions stacked or in a horizontal row to help with arrangement and spacing. */\nexport function GoabButtonGroup({\n children,\n ...rest\n}: GoabButtonGroupProps): JSX.Element {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return <goa-button-group {..._props}>{children}</goa-button-group>;\n}\n\nexport default GoabButtonGroup;\n","import { useEffect, useRef, type JSX } from \"react\";\nimport {\n DataAttributes,\n GoabCalendarOnChangeDetail,\n Margins,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n name?: string;\n value?: string;\n min?: string;\n max?: string;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-calendar\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\nexport interface GoabCalendarProps extends Margins, DataAttributes {\n /** @required Callback fired when the selected date changes. */\n onChange: (details: GoabCalendarOnChangeDetail) => void;\n /** Name identifier for the calendar, included in change events. */\n name?: string;\n /** The currently selected date value in YYYY-MM-DD format. */\n value?: string;\n /** The minimum selectable date in YYYY-MM-DD format. Defaults to 5 years in the past. */\n min?: string;\n /** The maximum selectable date in YYYY-MM-DD format. Defaults to 5 years in the future. */\n max?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Visual calendar for date selection. */\nexport function GoabCalendar({\n min,\n max,\n onChange,\n name,\n ...rest\n}: GoabCalendarProps): JSX.Element {\n const ref = useRef<HTMLInputElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n const current = ref.current;\n const listener = (e: Event) => {\n onChange({\n name: name || \"\",\n value: (e as CustomEvent).detail.value,\n });\n };\n current.addEventListener(\"_change\", listener);\n\n return () => {\n current.removeEventListener(\"_change\", listener);\n };\n }, []);\n\n return (\n <goa-calendar\n ref={ref}\n name={name}\n min={min || undefined}\n max={max || undefined}\n version=\"2\"\n {..._props}\n />\n );\n}\n\nexport default GoabCalendar;\n","import {\n GoabCalloutAriaLive,\n GoabCalloutEmphasis,\n GoabCalloutSize,\n GoabCalloutType,\n GoabCalloutIconTheme,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n heading?: string;\n type?: GoabCalloutType;\n size?: GoabCalloutSize;\n arialive?: GoabCalloutAriaLive;\n maxwidth?: string;\n icontheme?: GoabCalloutIconTheme;\n emphasis?: GoabCalloutEmphasis;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-callout\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabCalloutProps extends Margins, DataAttributes {\n /** Callout heading text. */\n heading?: string;\n /** Sets the context and colour of the callout. @default \"information\" */\n type?: GoabCalloutType;\n /** Sets the size of the callout. 'medium' has reduced padding and type size for compact areas. @default \"large\" */\n size?: GoabCalloutSize;\n /** Sets the icon theme. 'outline' for stroked icons, 'filled' for solid icons. @default \"outline\" */\n iconTheme?: GoabCalloutIconTheme;\n /** Sets the visual prominence. 'high' for full background, 'medium' for subtle, 'low' for minimal. @default \"medium\" */\n emphasis?: GoabCalloutEmphasis;\n /** Sets the maximum width of the callout. */\n maxWidth?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Indicates how assistive technology should handle updates to the live region. @default \"off\" */\n ariaLive?: GoabCalloutAriaLive;\n /** Content rendered inside the callout body. */\n children?: React.ReactNode;\n}\n\n/** Communicate important information through a strong visual emphasis. */\nexport const GoabCallout = ({\n type = \"information\",\n iconTheme = \"outline\",\n size = \"large\",\n ariaLive = \"off\",\n emphasis = \"medium\",\n children,\n ...rest\n}: GoabCalloutProps) => {\n const _props = transformProps<WCProps>(\n { type, icontheme: iconTheme, size, arialive: ariaLive, emphasis, ...rest },\n lowercase,\n );\n\n return (\n <goa-callout {..._props} version=\"2\">\n {children}\n </goa-callout>\n );\n};\n\nexport default GoabCallout;\n","import {\n DataAttributes,\n GoabCheckboxOnChangeDetail,\n GoabCheckboxSize,\n Margins,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef, type JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-checkbox\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\ninterface WCProps extends Margins {\n id?: string;\n name: string;\n checked?: string;\n indeterminate?: string;\n disabled?: string;\n error?: string;\n text?: string;\n value?: string | number;\n arialabel?: string;\n description?: string | React.ReactNode;\n reveal?: React.ReactNode;\n revealarialabel?: string;\n maxwidth?: string;\n testid?: string;\n size?: GoabCheckboxSize;\n version?: string;\n}\n\n/* eslint-disable-next-line */\nexport interface GoabCheckboxProps extends Margins, DataAttributes {\n /** @required Unique name to identify the checkbox. */\n name: string;\n /** Sets a unique id for the checkbox element. */\n id?: string;\n /** Marks the checkbox item as selected. */\n checked?: boolean;\n /** Shows a mixed/partial selection state. Used for 'Select All' checkboxes when some items are selected. */\n indeterminate?: boolean;\n /** Disable this control. It will not receive focus or events. */\n disabled?: boolean;\n /** Shows an error on the checkbox item. */\n error?: boolean;\n /** Label shown beside the checkbox. */\n text?: string;\n /** The value binding. */\n value?: string | number | boolean;\n /** Content rendered inside the checkbox label slot. */\n children?: React.ReactNode;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Defines how the text will be translated for the screen reader. If not specified it will fall back to the name. */\n ariaLabel?: string;\n /** Additional description text displayed below the checkbox label. */\n description?: string | React.ReactNode;\n /** Content revealed when the checkbox is checked. */\n reveal?: React.ReactNode;\n /** Text announced by screen readers when the reveal slot content is displayed. */\n revealAriaLabel?: string;\n /** Sets the maximum width of the checkbox. */\n maxWidth?: string;\n /** Sets the size of the checkbox. 'compact' reduces spacing for dense layouts. @default \"default\" */\n size?: GoabCheckboxSize;\n /** Callback fired when the checkbox selection changes. */\n onChange?: (detail: GoabCheckboxOnChangeDetail) => void;\n}\n\n// legacy\nexport type Props = GoabCheckboxProps;\n\n/** Let the user select one or more options. */\nexport function GoabCheckbox({\n error,\n checked,\n indeterminate,\n disabled,\n value,\n description,\n reveal,\n onChange,\n name,\n children,\n size = \"default\",\n ...rest\n}: GoabCheckboxProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>({ size, ...rest }, lowercase);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n const current = el.current;\n const listener = (e: Event) => {\n const detail = (e as CustomEvent<GoabCheckboxOnChangeDetail>).detail;\n onChange?.({ ...detail, event: e });\n };\n\n current.addEventListener(\"_change\", listener);\n\n return () => {\n current.removeEventListener(\"_change\", listener);\n };\n }, [name, onChange]);\n\n return (\n <goa-checkbox\n ref={el}\n {..._props}\n name={name}\n error={error ? \"true\" : undefined}\n checked={checked ? \"true\" : undefined}\n indeterminate={indeterminate ? \"true\" : undefined}\n disabled={disabled ? \"true\" : undefined}\n value={typeof value === \"boolean\" ? (value ? \"true\" : undefined) : value}\n description={typeof description === \"string\" ? description : undefined}\n version=\"2\"\n >\n {children}\n {typeof description !== \"string\" && description && (\n <div slot=\"description\">{description}</div>\n )}\n {reveal && <div slot=\"reveal\">{reveal}</div>}\n </goa-checkbox>\n );\n}\n\nexport default GoabCheckbox;\n","import { GoabCheckboxListOnChangeDetail, Margins } from \"@abgov/ui-components-common\";\nimport { useEffect, useRef, type JSX } from \"react\";\n\ninterface WCProps extends Margins {\n ref: React.RefObject<HTMLElement | null>;\n name: string;\n value?: string[];\n disabled?: string;\n error?: string;\n testid?: string;\n maxwidth?: string;\n version?: string;\n size?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-checkbox-list\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabCheckboxListProps extends Margins {\n /** @required The name for the checkbox list group. Used as group identifier in change events. */\n name: string;\n /** Array of currently selected checkbox values. */\n value?: string[];\n /** Disables all checkboxes in the list. */\n disabled?: boolean;\n /** Shows an error state on all checkboxes in the list. */\n error?: boolean;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the maximum width of the checkbox list container. */\n maxWidth?: string;\n /** Sets the size of the checkbox list. 'compact' reduces spacing between items. @default \"default\" */\n size?: \"default\" | \"compact\";\n /** Content rendered inside the checkbox list. */\n children?: React.ReactNode;\n /** Callback fired when the selected values change. */\n onChange?: (detail: GoabCheckboxListOnChangeDetail) => void;\n}\n\n/** A multiple selection input. */\nexport function GoabCheckboxList({\n name,\n value = [],\n disabled,\n error,\n testId,\n maxWidth,\n size = \"default\",\n children,\n onChange,\n mt,\n mr,\n mb,\n ml,\n}: GoabCheckboxListProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el.current) return;\n\n const current = el.current;\n const listener = (e: Event) => {\n const detail = (e as CustomEvent<GoabCheckboxListOnChangeDetail>).detail;\n onChange?.({ ...detail, event: e });\n };\n\n current.addEventListener(\"_change\", listener);\n\n return () => {\n current.removeEventListener(\"_change\", listener);\n };\n }, [onChange]);\n\n return (\n <goa-checkbox-list\n ref={el}\n name={name}\n value={value}\n disabled={disabled ? \"true\" : undefined}\n error={error ? \"true\" : undefined}\n testid={testId}\n maxwidth={maxWidth}\n version=\"2\"\n size={size}\n mt={mt}\n mr={mr}\n mb={mb}\n ml={ml}\n >\n {children}\n </goa-checkbox-list>\n );\n}\n\nexport default GoabCheckboxList;\n","import {\n DataAttributes,\n GoabChipTheme,\n GoabChipVariant,\n Margins,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n leadingicon?: string;\n icontheme?: GoabChipTheme;\n error?: string;\n deletable?: string;\n content: string;\n variant?: GoabChipVariant;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-chip\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabChipProps extends Margins, DataAttributes {\n /** @required @deprecated Use GoabFilterChip instead. The text content displayed in the chip. */\n content: string;\n /** @deprecated Use GoabFilterChip instead. When true, shows a delete icon and makes chip clickable. */\n deletable?: boolean;\n /** @deprecated Use GoabFilterChip instead. Icon displayed at the start of the chip. */\n leadingIcon?: string;\n /** @deprecated Use GoabFilterChip instead. The icon theme - outline or filled. */\n iconTheme?: GoabChipTheme;\n /** @deprecated Use GoabFilterChip instead. Shows an error state on the chip. */\n error?: boolean;\n /** @deprecated Use GoabFilterChip instead. The chip variant style. */\n variant?: GoabChipVariant;\n /** @deprecated Use GoabFilterChip instead. Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Callback fired when the chip is clicked or deleted. */\n onClick?: () => void;\n}\n\n/** Compact element for labels, tags, or selections. */\nexport const GoabChip = ({ error, deletable, onClick, ...rest }: GoabChipProps) => {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n if (!el.current) return;\n if (!onClick) return;\n\n const current = el.current;\n const listener = () => {\n onClick?.();\n };\n\n current.addEventListener(\"_click\", listener);\n return () => {\n current.removeEventListener(\"_click\", listener);\n };\n }, [el, onClick]);\n\n return (\n <goa-chip\n ref={el}\n error={error ? \"true\" : undefined}\n deletable={deletable ? \"true\" : undefined}\n {..._props}\n />\n );\n};\n\nexport default GoabChip;\n","import {\n GoabCircularProgressSize,\n GoabCircularProgressVariant,\n} from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n variant?: GoabCircularProgressVariant;\n size?: GoabCircularProgressSize;\n message?: string;\n visible?: string;\n progress?: number;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-circular-progress\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabCircularProgressProps {\n /** Controls the display mode. 'fullscreen' stretches across the full screen; 'inline' is used within content. @default \"inline\" */\n variant?: GoabCircularProgressVariant;\n /** Sets the size of the progress indicator. @default \"large\" */\n size?: GoabCircularProgressSize;\n /** Loading message displayed below the progress indicator. */\n message?: string;\n /** Controls visibility of the progress indicator, allowing a fade transition to be applied. */\n visible?: boolean;\n /** Sets the progress value (0–100). When omitted, an infinite spinner is shown. */\n progress?: number;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Provide feedback of progress to users while loading. */\nexport const GoabCircularProgress = ({\n visible,\n message,\n progress,\n variant,\n size,\n testId,\n}: GoabCircularProgressProps) => {\n return (\n <goa-circular-progress\n visible={visible ? \"true\" : undefined}\n message={message}\n progress={progress}\n variant={variant}\n size={size}\n testid={testId}\n />\n );\n};\n\nexport default GoabCircularProgress;\n","import {\n GoabContainerAccent,\n GoabContainerPadding,\n GoabContainerType,\n GoabContainerWidth,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { ReactNode, type JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n type?: GoabContainerType;\n accent?: GoabContainerAccent;\n padding?: GoabContainerPadding;\n width?: GoabContainerWidth;\n maxwidth?: string;\n minheight?: string;\n maxheight?: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-container\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabContainerProps extends Margins, DataAttributes {\n /** Sets the container and accent bar styling. @default \"interactive\" */\n type?: GoabContainerType;\n /** Sets the style of accent on the container. @default \"filled\" */\n accent?: GoabContainerAccent;\n /** Sets the amount of white space in the container. @default \"relaxed\" */\n padding?: GoabContainerPadding;\n /** Sets the width of the container. @default \"full\" */\n width?: GoabContainerWidth;\n /** Sets the maximum width of the container. */\n maxWidth?: string;\n /** Sets the minimum height of the container. */\n minHeight?: string;\n /** Sets the maximum height of the container. */\n maxHeight?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** @deprecated Use title instead. Alias for the title prop. */\n heading?: ReactNode;\n /** Content rendered in the container's title/heading area. */\n title?: ReactNode;\n /** Content rendered in the container's actions area, typically buttons or controls. */\n actions?: ReactNode;\n /** Content rendered inside the container body. */\n children?: ReactNode;\n}\n\n/** Group information, create hierarchy, and show related information. */\nexport function GoabContainer({\n heading,\n title,\n actions,\n children,\n ...rest\n}: GoabContainerProps): JSX.Element {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n const headingContent = heading || title;\n\n return (\n <goa-container {..._props}>\n {headingContent && <div slot=\"title\">{headingContent}</div>}\n {children}\n {actions && <div slot=\"actions\">{actions}</div>}\n </goa-container>\n );\n}\n\nexport default GoabContainer;\n","import React from \"react\";\n\ninterface WCProps {\n \"keyboard-icon-visibility\"?: \"visible\" | \"hidden\";\n \"keyboard-icon-position\"?: \"left\" | \"right\";\n \"keyboard-nav\"?: \"layout\" | \"table\";\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-data-grid\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabDataGridProps {\n /** @required Navigation mode. 'table' navigates like a table (up/down between rows), 'layout' allows wrapping between rows with left/right arrows. */\n keyboardNav: \"layout\" | \"table\";\n /** Controls visibility of the keyboard navigation indicator icon. @default \"visible\" */\n keyboardIconVisibility?: \"visible\" | \"hidden\";\n /** Position of the keyboard navigation indicator icon. @default \"left\" */\n keyboardIconPosition?: \"left\" | \"right\";\n /** Content rendered inside the data grid, typically rows and cells. */\n children?: React.ReactNode;\n}\n\n/** Advanced table with sorting and selection. */\nexport function GoabDataGrid({\n keyboardIconVisibility = \"visible\",\n keyboardIconPosition = \"left\",\n keyboardNav,\n children,\n}: GoabDataGridProps) {\n return (\n <goa-data-grid\n keyboard-icon-visibility={keyboardIconVisibility}\n keyboard-icon-position={keyboardIconPosition}\n keyboard-nav={keyboardNav}\n >\n {children}\n </goa-data-grid>\n );\n}\n\nexport default GoabDataGrid;\n","// Public helper function to dispatch messages\nexport function dispatch<T>(\n el: HTMLElement | Element | null | undefined,\n eventName: string,\n detail?: T,\n opts?: { bubbles?: boolean },\n) {\n if (!el) {\n console.error(\"dispatch element is null\");\n return;\n }\n el.dispatchEvent(\n new CustomEvent<T>(eventName, {\n composed: true,\n bubbles: opts?.bubbles,\n detail: detail,\n }),\n );\n}\n\n// Public helper function to relay messages\nexport function relay<T>(\n el: HTMLElement | Element | null | undefined,\n eventName: string,\n data?: T,\n opts?: { bubbles?: boolean },\n) {\n if (!el) {\n console.error(\"dispatch element is null\");\n return;\n }\n el.dispatchEvent(\n new CustomEvent<{ action: string; data?: T }>(\"msg\", {\n composed: true,\n bubbles: opts?.bubbles,\n detail: {\n action: eventName,\n data,\n },\n }),\n );\n}\n","import { FieldsetItemState, FieldValidator } from \"./validators\";\nimport { GoabFieldsetItemValue, GoabFormDispatchOn } from \"./common\";\nimport { relay, dispatch } from \"./messaging/messaging\";\n\nexport type FormStatus = \"not-started\" | \"incomplete\" | \"complete\";\n\n// Public type to define the state of the form\nexport type AppState<T> = {\n uuid: string;\n form: Record<string, Fieldset<T>>;\n history: string[];\n editting: string;\n lastModified?: Date;\n status: FormStatus;\n currentFieldset?: { id: T; dispatchType: GoabFormDispatchOn };\n};\n\nexport type Fieldset<T> = {\n heading: string;\n data:\n | { type: \"details\"; fieldsets: Record<string, FieldsetItemState> }\n | { type: \"list\"; items: AppState<T>[] };\n};\n\nexport class PublicFormController<T> {\n state?: AppState<T> | AppState<T>[];\n _formData?: Record<string, string> = undefined;\n _formRef?: HTMLElement = undefined;\n private _isCompleting = false;\n\n constructor(private type: \"details\" | \"list\") {}\n\n // Obtain reference to the form element\n init(e: Event) {\n // FIXME: This condition should not be needed, but currently it is the only way to get things working\n if (this._formRef) {\n console.warn(\"init: form element has already been set\");\n return;\n }\n this._formRef = (e as CustomEvent).detail.el;\n\n this.state = {\n uuid: crypto.randomUUID(),\n form: {},\n history: [],\n editting: \"\",\n status: \"not-started\",\n };\n }\n\n initList(e: Event) {\n this._formRef = (e as CustomEvent).detail.el;\n this.state = [];\n }\n\n // Public method to allow for the initialization of the state\n initState(state?: string | AppState<T> | AppState<T>[], callback?: () => void) {\n relay(this._formRef, \"external::init:state\", state);\n\n if (typeof state === \"string\") {\n this.state = JSON.parse(state);\n } else if (!Array.isArray(state)) {\n this.state = state;\n }\n\n if (callback) {\n setTimeout(callback, 201);\n }\n }\n\n updateListState(e: Event) {\n const detail = (e as CustomEvent).detail;\n\n if (!Array.isArray(detail.data)) {\n return;\n }\n\n this.state = detail.data;\n }\n\n #updateObjectListState(detail: { data: AppState<T>[]; index: number; id: string }) {\n if (!Array.isArray(detail.data)) {\n return;\n }\n\n if (Array.isArray(this.state)) {\n return;\n }\n\n this.state = {\n ...this.state,\n form: {\n ...(this.state?.form || {}),\n [detail.id]: detail.data,\n },\n } as AppState<T>;\n }\n\n updateObjectState(e: Event) {\n if (Array.isArray(this.state)) {\n return;\n }\n\n const detail = (e as CustomEvent).detail;\n if (detail.type === \"list\") {\n // form state being updated with subform array data\n this.state = {\n ...this.state,\n form: { ...(this.state?.form || {}), [detail.id]: detail.data },\n } as AppState<T>;\n } else {\n // form state being updated with form data\n this.state = {\n ...this.state,\n ...detail.data,\n form: { ...(this.state?.form || {}), ...detail.data.form },\n history: detail.data.history,\n } as AppState<T>;\n }\n }\n\n getStateList(): Record<string, string>[] {\n if (!this.state) {\n return [];\n }\n if (!Array.isArray(this.state)) {\n console.warn(\n \"Utils:getStateList: unable to update the state of a non-multi form type\",\n this.state,\n );\n return [];\n }\n if (this.state.length === 0) {\n return [];\n }\n\n return this.state.map((s) => {\n return Object.values(s.form)\n .filter((item) => {\n return item?.data?.type === \"details\";\n })\n .map((item) => {\n return (item.data.type === \"details\" && item.data?.fieldsets) || {};\n })\n .reduce(\n (acc, item) => {\n for (const [key, value] of Object.entries(item)) {\n acc[key] = value.value;\n }\n return acc;\n },\n {} as Record<string, string>,\n );\n });\n }\n\n // getStateItems(group: string): Record<string, FieldsetItemState>[] {\n // if (Array.isArray(this.state)) {\n // console.error(\n // \"Utils:getStateItems: unable to update the state of a multi form type\",\n // );\n // return [];\n // }\n // if (!this.state) {\n // console.error(\"Utils:getStateItems: state has not yet been set\");\n // return [];\n // }\n //\n // const data = this.state.form[group].data;\n // if (data.type !== \"list\") {\n // return [];\n // }\n //\n // return data.items.;\n // }\n\n // Public method to allow for the retrieval of the state value\n getStateValue(group: string, key: string): string {\n if (Array.isArray(this.state)) {\n console.error(\"getStateValue: unable to update the state of a multi form type\");\n return \"\";\n }\n if (!this.state) {\n console.error(\"getStateValue: state has not yet been set\");\n return \"\";\n }\n\n const data = this.state.form[group].data;\n if (data.type !== \"details\") {\n return \"\";\n }\n\n return data.fieldsets[key].value;\n }\n\n // Public method to allow for the continuing to the next page\n continueTo(next: T | undefined) {\n if (!next) {\n console.error(\"continueTo [name] is undefined\");\n return;\n }\n // Relay the continue message to the form element which will\n // set the visibility of the fieldsets\n // FIXME: this makes a call to the subform instead of the form\n relay<{ next: T }>(this._formRef, \"external::continue\", { next });\n }\n\n // Public method to perform validation and send the appropriate messages to the form elements\n validate(\n e: Event,\n field: string,\n validators: FieldValidator[],\n options?: { grouped: boolean },\n ): [boolean, GoabFieldsetItemValue] {\n const { el, state, cancelled } = (e as CustomEvent).detail;\n const value = state?.[field]?.value;\n\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n\n if (cancelled) {\n return [true, value];\n }\n\n for (const validator of validators) {\n const msg = validator(value);\n this.#dispatchError(el, field, msg, options);\n if (msg) {\n return [false, \"\"];\n }\n }\n return [true, value];\n }\n\n /**\n * Validates a group of fields ensuring that at least `minPassCount` of the items within the group\n * passes. This is useful in the scenario when n number fields are required out of n+m number of fields.\n *\n * @param {string[]} fields - An array of field names to be validated.\n * @param {Event} e - The event object associated with the validation trigger.\n * @param {FieldValidator[]} validators - An array of validator functions to apply to the fields.\n * @return {[number, Record<string, boolean>]} - Returns back the number of fields that passed and a record of the fields and their pass status.\n */\n validateGroup(\n e: Event,\n fields: string[],\n validators: FieldValidator[],\n ): [number, Record<string, boolean>] {\n let passCount = 0;\n const validGroups = {} as Record<string, boolean>;\n\n for (const field of fields) {\n const [_valid] = this.validate(e, field, validators, { grouped: true });\n if (_valid) {\n validGroups[field] = true;\n passCount++;\n }\n }\n\n return [passCount, validGroups];\n }\n\n edit(index: number) {\n relay(this._formRef, \"external::alter:state\", { index, operation: \"edit\" });\n }\n\n remove(index: number) {\n relay(this._formRef, \"external::alter:state\", {\n index,\n operation: \"remove\",\n });\n }\n\n /**\n * Completes the form and triggers the onComplete callback.\n * This method should be used when you want to complete a form without navigating to a summary page.\n *\n * @important Developers must validate the form before calling this method.\n *\n * @example\n * // Validate first, then complete\n * const [isValid] = this.validate(e, \"firstName\", [\n * requiredValidator(\"First name is required.\")\n * ]);\n * if (isValid) {\n * this.complete();\n * }\n * @returns void\n */\n complete() {\n if (!this._formRef) {\n console.error(\"complete: form ref is not set\");\n return;\n }\n\n if (this._isCompleting) {\n console.warn(\"complete: completion already in progress\");\n return;\n }\n\n this._isCompleting = true;\n relay(this._formRef, \"fieldset::submit\", null, { bubbles: true });\n this._isCompleting = false;\n }\n\n /**\n * Completes a subform and returns control to the parent form.\n * This method should be used when working with subforms that need to complete without a summary page.\n *\n * @important Developers must validate the subform before calling this method.\n *\n * @example\n * // Validate first, then complete the subform\n * const [isValid] = this._childFormController.validate(e, \"fullName\", [\n * requiredValidator(\"Please enter the dependent's full name.\")\n * ]);\n * if (isValid) {\n * this._childFormController.completeSubform();\n * }\n * @returns void\n */\n completeSubform() {\n if (!this._formRef) {\n console.error(\"completeSubform: form ref is not set\");\n return;\n }\n\n if (this._isCompleting) {\n console.warn(\"completeSubform: completion already in progress\");\n return;\n }\n // Capture form reference to avoid TypeScript undefined error in closures\n const formRef = this._formRef;\n\n // Set flag to prevent multiple calls\n this._isCompleting = true;\n\n const stateChangeHandler = (e: Event) => {\n formRef.removeEventListener(\"_stateChange\", stateChangeHandler);\n\n // Now we know state is updated, safe to complete\n // The _formRef points to the inner form within the SubForm\n // We need to trigger the form's completion which will be caught by SubForm's onChildFormComplete\n dispatch(formRef, \"_complete\", {}, { bubbles: true });\n this._isCompleting = false;\n };\n\n formRef.addEventListener(\"_stateChange\", stateChangeHandler);\n\n dispatch(formRef, \"_continue\", null, { bubbles: true });\n }\n\n // Private method to dispatch the error message to the form element\n #dispatchError(\n el: HTMLElement,\n name: string,\n msg: string,\n options?: { grouped: boolean },\n ) {\n el.dispatchEvent(\n new CustomEvent(\"msg\", {\n composed: true,\n detail: {\n action: \"external::set:error\",\n data: {\n name,\n msg,\n grouped: options?.grouped,\n },\n },\n }),\n );\n }\n\n // removes any data collected that doesn't correspond with the final history path\n clean(data: AppState<T>) {\n return data.history.reduce<Record<string, unknown>>((acc, fieldsetId) => {\n acc[fieldsetId] = data.form[fieldsetId];\n return acc;\n }, {});\n }\n}\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument) {\n const argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === \"object\" && argStr === \"[object Date]\")\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new argument.constructor(+argument);\n } else if (\n typeof argument === \"number\" ||\n argStr === \"[object Number]\" ||\n typeof argument === \"string\" ||\n argStr === \"[object String]\"\n ) {\n // TODO: Can we get rid of as?\n return new Date(argument);\n } else {\n // TODO: Can we get rid of as?\n return new Date(NaN);\n }\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from 'date-fns'\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date(date: DateType): DateType {\n * return constructFrom(\n * date, // Use contrustor from the given date\n * date.getTime() // Use the date value to create a new date\n * )\n * }\n */\nexport function constructFrom(date, value) {\n if (date instanceof Date) {\n return new date.constructor(value);\n } else {\n return new Date(value);\n }\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.mjs\";\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date) {\n return startOfWeek(date, { weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date) {\n const _date = toDate(date);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"../toDate.mjs\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { millisecondsInDay } from \"./constants.mjs\";\nimport { startOfDay } from \"./startOfDay.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.mjs\";\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(dateLeft, dateRight) {\n const startOfDayLeft = startOfDay(dateLeft);\n const startOfDayRight = startOfDay(dateRight);\n\n const timestampLeft =\n +startOfDayLeft - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n const timestampRight =\n +startOfDayRight - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((timestampLeft - timestampRight) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { getISOWeekYear } from \"./getISOWeekYear.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date) {\n const year = getISOWeekYear(date);\n const fourthOfJanuary = constructFrom(date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { startOfDay } from \"./startOfDay.mjs\";\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(dateLeft, dateRight) {\n const dateLeftStartOfDay = startOfDay(dateLeft);\n const dateRightStartOfDay = startOfDay(dateRight);\n\n return +dateLeftStartOfDay === +dateRightStartOfDay;\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n if (!isDate(date) && typeof date !== \"number\") {\n return false;\n }\n const _date = toDate(date);\n return !isNaN(Number(_date));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date) {\n const cleanDate = toDate(date);\n const _date = constructFrom(date, 0);\n _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./en-US/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.mjs\";\nimport { localize } from \"./en-US/_lib/localize.mjs\";\nimport { match } from \"./en-US/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.mjs\";\nimport { startOfYear } from \"./startOfYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date) {\n const _date = toDate(date);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date) {\n const _date = toDate(date);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getWeekYear } from \"./getWeekYear.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { startOfWeekYear } from \"./startOfWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport function getWeek(date, options) {\n const _date = toDate(date);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.mjs\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.mjs\";\nimport { getISOWeek } from \"../../getISOWeek.mjs\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.mjs\";\nimport { getWeek } from \"../../getWeek.mjs\";\nimport { getWeekYear } from \"../../getWeekYear.mjs\";\nimport { addLeadingZeros } from \"../addLeadingZeros.mjs\";\nimport { lightFormatters } from \"./lightFormatters.mjs\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(date.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n const timestamp = date.getTime();\n return addLeadingZeros(timestamp, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\nimport { formatters } from \"./_lib/format/formatters.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { isValid } from \"./isValid.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport function getDaysInMonth(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n const monthIndex = _date.getMonth();\n const lastDayOfMonth = constructFrom(date, 0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}\n\n// Fallback for modularized imports:\nexport default getDaysInMonth;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The last day of a month\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * const result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport function lastDayOfMonth(date) {\n const _date = toDate(date);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default lastDayOfMonth;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be after the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport function isAfter(date, dateToCompare) {\n const _date = toDate(date);\n const _dateToCompare = toDate(dateToCompare);\n return _date.getTime() > _dateToCompare.getTime();\n}\n\n// Fallback for modularized imports:\nexport default isAfter;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n const _date = toDate(date);\n const _dateToCompare = toDate(dateToCompare);\n return +_date < +_dateToCompare;\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n *\n * @returns The dates are in the same month (and year)\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport function isSameMonth(dateLeft, dateRight) {\n const _dateLeft = toDate(dateLeft);\n const _dateRight = toDate(dateRight);\n return (\n _dateLeft.getFullYear() === _dateRight.getFullYear() &&\n _dateLeft.getMonth() === _dateRight.getMonth()\n );\n}\n\n// Fallback for modularized imports:\nexport default isSameMonth;\n","import { millisecondsInHour, millisecondsInMinute } from \"./constants.mjs\";\n\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function parseISO(argument, options) {\n const additionalDigits = options?.additionalDigits ?? 2;\n const dateStrings = splitDateString(argument);\n\n let date;\n if (dateStrings.date) {\n const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n const timestamp = date.getTime();\n let time = 0;\n let offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n const dirtyDate = new Date(timestamp + time);\n // JS parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n const result = new Date(0);\n result.setFullYear(\n dirtyDate.getUTCFullYear(),\n dirtyDate.getUTCMonth(),\n dirtyDate.getUTCDate(),\n );\n result.setHours(\n dirtyDate.getUTCHours(),\n dirtyDate.getUTCMinutes(),\n dirtyDate.getUTCSeconds(),\n dirtyDate.getUTCMilliseconds(),\n );\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\n\nconst patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/,\n};\n\nconst dateRegex =\n /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex =\n /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n const dateStrings = {};\n const array = dateString.split(patterns.dateTimeDelimiter);\n let timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(\n dateStrings.date.length,\n dateString.length,\n );\n }\n }\n\n if (timeString) {\n const token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], \"\");\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n const regex = new RegExp(\n \"^(?:(\\\\d{4}|[+-]\\\\d{\" +\n (4 + additionalDigits) +\n \"})|(\\\\d{2}|[+-]\\\\d{\" +\n (2 + additionalDigits) +\n \"})$)\",\n );\n\n const captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return { year: NaN, restDateString: \"\" };\n\n const year = captures[1] ? parseInt(captures[1]) : null;\n const century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length),\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n\n const captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n\n const isWeekDate = !!captures[4];\n const dayOfYear = parseDateUnit(captures[1]);\n const month = parseDateUnit(captures[2]) - 1;\n const day = parseDateUnit(captures[3]);\n const week = parseDateUnit(captures[4]);\n const dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n const date = new Date(0);\n if (\n !validateDate(year, month, day) ||\n !validateDayOfYearDate(year, dayOfYear)\n ) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n const captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n const hours = parseTimeUnit(captures[1]);\n const minutes = parseTimeUnit(captures[2]);\n const seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return (\n hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000\n );\n}\n\nfunction parseTimeUnit(value) {\n return (value && parseFloat(value.replace(\",\", \".\"))) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === \"Z\") return 0;\n\n const captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n\n const sign = captures[1] === \"+\" ? -1 : 1;\n const hours = parseInt(captures[2]);\n const minutes = (captures[3] && parseInt(captures[3])) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n const date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nconst daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n\nfunction validateDate(year, month, date) {\n return (\n month >= 0 &&\n month <= 11 &&\n date >= 1 &&\n date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n );\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return (\n seconds >= 0 &&\n seconds < 60 &&\n minutes >= 0 &&\n minutes < 60 &&\n hours >= 0 &&\n hours < 25\n );\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}\n\n// Fallback for modularized imports:\nexport default parseISO;\n","import {\n addMonths as _addMonths,\n addDays as _addDays,\n format as _format,\n getDaysInMonth as _getDaysInMonth,\n isSameDay as _isSameDay,\n lastDayOfMonth as _lastDayOfMonth,\n setDate as _setDate,\n isSameMonth as _isSameMonth,\n isBefore as _isBefore,\n addYears as _addYears,\n isAfter as _isAfter,\n} from \"date-fns\";\n\ntype CalendarDateInput =\n | string\n | Date\n | 0\n | { year: number; month: number; day: number };\n\nexport class CalendarDate {\n private _dateNums: number[];\n\n static parse(value: CalendarDateInput): number[] {\n if (typeof value === \"string\") {\n value = value.split(\"T\")[0];\n return value.split(\"-\").map((v) => +v);\n } else if (value instanceof Date) {\n return [value.getFullYear(), value.getMonth() + 1, value.getDate()];\n } else if (value === 0) {\n return [0, 0, 0];\n } else {\n return [value.year, value.month, value.day];\n }\n }\n\n static init(): CalendarDate {\n return new CalendarDate(0);\n }\n\n constructor(value?: CalendarDateInput) {\n if (value || value === 0) {\n this._dateNums = CalendarDate.parse(value);\n } else {\n this._dateNums = CalendarDate.parse(new Date());\n }\n }\n\n // Used internally to get the date value for the date_fns\n get date(): Date {\n return new Date(\n this._dateNums[0],\n this._dateNums[1] - 1,\n this._dateNums[2],\n );\n }\n\n get year(): number {\n return this._dateNums[0];\n }\n\n get month(): number {\n return this._dateNums[1];\n }\n\n get day(): number {\n return this._dateNums[2];\n }\n\n get dayOfWeek(): number {\n return this.date.getDay();\n }\n\n get daysInMonth(): number {\n return _getDaysInMonth(this.date);\n }\n\n get firstDayOfMonth(): CalendarDate {\n return new CalendarDate({ year: this.year, month: this.month, day: 1 });\n }\n\n get lastDayOfMonth(): CalendarDate {\n return new CalendarDate(_lastDayOfMonth(this.date));\n }\n\n get previousDay(): CalendarDate {\n return this.clone().addDays(-1);\n }\n\n get nextDay(): CalendarDate {\n return this.clone().addDays(1);\n }\n\n get previousWeek(): CalendarDate {\n return this.clone().addDays(-7);\n }\n\n get nextWeek(): CalendarDate {\n return this.clone().addDays(7);\n }\n\n get previousMonth(): CalendarDate {\n return this.clone().addMonths(-1);\n }\n\n get nextMonth(): CalendarDate {\n return this.clone().addMonths(1);\n }\n\n clone(): CalendarDate {\n return new CalendarDate(this.toString());\n }\n\n setYear(val: number) {\n this._dateNums[0] = val;\n }\n\n setMonth(val: number) {\n this._dateNums[1] = val;\n }\n\n setDay(val: number): CalendarDate {\n this._dateNums[2] = val;\n return this;\n }\n\n addYears(count: number): CalendarDate {\n this._dateNums[0] += count;\n return this;\n }\n\n addMonths(count: number): CalendarDate {\n this._dateNums = CalendarDate.parse(_addMonths(this.date, count));\n return this;\n }\n\n addDays(count: number): CalendarDate {\n this._dateNums = CalendarDate.parse(_addDays(this.date, count));\n return this;\n }\n\n isSameDay(cmp: CalendarDate): boolean {\n return _isSameDay(this.date, cmp.date);\n }\n\n isSameMonth(value: CalendarDate): boolean {\n return _isSameMonth(this.date, value.date);\n }\n\n isBefore(cmp: CalendarDate): boolean {\n return _isBefore(this.date, cmp.date);\n }\n\n isAfter(cmp: CalendarDate): boolean {\n return _isAfter(this.date, cmp.date);\n }\n\n isZero(): boolean {\n return (\n this._dateNums[0] === 0 &&\n this._dateNums[1] === 0 &&\n this._dateNums[2] === 0\n );\n }\n\n isValid(): boolean {\n // ensure it's a valid date\n // E.g. \"2025-02-31\" would be invalid because the date does not exist\n const comparisonDate = new Date(this.toString());\n if (\n isNaN(comparisonDate.getTime()) ||\n this.toString() !== comparisonDate.toISOString().split(\"T\")[0]\n ) {\n return false;\n }\n\n return true;\n }\n\n format(tmpl: string): string {\n if (this.isZero()) {\n return \"\";\n }\n return _format(this.date, tmpl);\n }\n\n toString(): string {\n if (this.isZero()) {\n return \"\";\n }\n return this._dateNums\n .map((num) => (`${num}`.length < 2 ? `0${num}` : `${num}`))\n .join(\"-\");\n }\n}\n","import { useEffect, useRef, type JSX } from \"react\";\nimport {\n CalendarDate,\n GoabDatePickerInputType,\n GoabDatePickerOnChangeDetail,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n name?: string;\n value?: string;\n error?: string;\n min?: string;\n max?: string;\n type?: string;\n relative?: string;\n disabled?: string;\n testid?: string;\n width?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-date-picker\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabDatePickerProps extends Margins, DataAttributes {\n /** Sets the date picker type. 'calendar' shows a calendar popup, 'input' shows just a date input. @default \"calendar\" */\n type?: GoabDatePickerInputType;\n /** Name of the date field. */\n name?: string;\n /** Value of the calendar date, as a Date object or an ISO date string (yyyy-mm-dd). */\n value?: Date | string | undefined;\n /** Sets the input to an error state. */\n error?: boolean;\n /** Minimum date value allowed. */\n min?: Date | string;\n /** Maximum date value allowed. */\n max?: Date | string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** @deprecated This property has no effect and will be removed in a future version. */\n relative?: boolean;\n /** Disables the date picker. */\n disabled?: boolean;\n /** Sets the width of the date picker input. */\n width?: string;\n /** Callback fired when the selected date changes. */\n onChange?: (detail: GoabDatePickerOnChangeDetail) => void;\n}\n\n/** Lets users select a date through a calendar without the need to manually type it in a field. */\nexport function GoabDatePicker({\n value,\n error,\n min,\n max,\n disabled,\n relative,\n onChange,\n ...rest\n}: GoabDatePickerProps): JSX.Element {\n const ref = useRef<HTMLInputElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n if (value && typeof value !== \"string\") {\n console.warn(\n \"Using a `Date` type for value is deprecated. Instead use a string of the format `yyyy-mm-dd`\",\n );\n }\n }, []);\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n const current = ref.current;\n\n const handleChange = (e: Event) => {\n const detail = (e as CustomEvent<GoabDatePickerOnChangeDetail>).detail;\n onChange?.({ ...detail, event: e });\n };\n\n if (onChange) {\n current.addEventListener(\"_change\", handleChange);\n }\n\n return () => {\n if (onChange) {\n current.removeEventListener(\"_change\", handleChange);\n }\n };\n }, [onChange]);\n\n const formatValue = (val: Date | string | undefined) => {\n if (!val) return \"\";\n\n if (val instanceof Date) {\n return new CalendarDate(val).toString();\n }\n\n return val;\n };\n\n return (\n <goa-date-picker\n ref={ref}\n value={formatValue(value) || undefined}\n error={error ? \"true\" : undefined}\n disabled={disabled ? \"true\" : undefined}\n min={formatValue(min) || undefined}\n max={formatValue(max) || undefined}\n relative={relative ? \"true\" : undefined}\n version=\"2\"\n {..._props}\n />\n );\n}\n\nexport default GoabDatePicker;\n","import { Margins, DataAttributes } from \"@abgov/ui-components-common\";\nimport { ReactNode } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n heading: string;\n open?: string;\n maxwidth?: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-details\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabDetailsProps extends Margins, DataAttributes {\n /** @required The title heading. */\n heading: string;\n /** @required Content rendered inside the details body. */\n children: ReactNode;\n /** Controls if details is expanded or not. */\n open?: boolean;\n /** Sets the maximum width of the details. @default \"75ch\" */\n maxWidth?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Let users reveal more detailed information when they need it. */\nexport function GoabDetails({ open, children, ...rest }: GoabDetailsProps) {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-details open={open ? \"true\" : undefined} {..._props}>\n {children}\n </goa-details>\n );\n}\n\nexport default GoabDetails;\n","import { Margins } from \"@abgov/ui-components-common\";\n\ninterface WCProps extends Margins {\n testid?: string;\n}\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-divider\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabDividerProps extends Margins {\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Indicate a separation of layout, or to distinguish large chunks of information on a page. */\nexport function GoabDivider(props: GoabDividerProps) {\n return (\n <goa-divider\n mt={props.mt}\n mr={props.mr}\n mb={props.mb}\n ml={props.ml}\n testid={props.testId}\n />\n );\n}\n\nexport default GoabDivider;\n","import { ReactNode, useEffect, useRef, type JSX } from \"react\";\nimport { GoabDrawerPosition, GoabDrawerSize } from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n position: GoabDrawerPosition;\n open?: boolean;\n heading?: string;\n maxsize?: GoabDrawerSize;\n testid?: string;\n ref: React.RefObject<HTMLElement | null>;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-drawer\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabDrawerProps {\n /** @required The position of the drawer. */\n position: GoabDrawerPosition;\n /** @required Content rendered inside the drawer body. */\n children: ReactNode;\n /** @required Callback fired when the drawer requests to be closed. */\n onClose: () => void;\n /** Whether the drawer is open. */\n open?: boolean;\n /** The heading text displayed at the top of the drawer. Accepts a string or a ReactNode for custom heading content. */\n heading?: string | ReactNode;\n /** Sets max height on bottom position, sets width on left and right position. */\n maxSize?: GoabDrawerSize;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Action elements rendered in the drawer footer slot. */\n actions?: ReactNode;\n}\n\n/** A panel that slides in from the side of the screen to display additional content or actions without navigating away from the current view. */\nexport function GoabDrawer({\n position,\n open,\n heading,\n maxSize,\n testId,\n actions,\n children,\n onClose,\n}: GoabDrawerProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el?.current || !onClose) {\n return;\n }\n el.current?.addEventListener(\"_close\", onClose);\n return () => {\n el.current?.removeEventListener(\"_close\", onClose);\n };\n }, [el, onClose]);\n\n return (\n <goa-drawer\n ref={el}\n position={position}\n open={open ? true : undefined}\n heading={typeof heading === \"string\" ? heading : undefined}\n maxsize={maxSize}\n testid={testId}\n version=\"2\"\n >\n {heading && typeof heading !== \"string\" && <div slot=\"heading\">{heading}</div>}\n {actions && <div slot=\"actions\">{actions}</div>}\n {children}\n </goa-drawer>\n );\n}\n\nexport default GoabDrawer;\n","import {\n GoabDropdownOnChangeDetail,\n GoabDropdownSize,\n GoabIconType,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef, type JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n arialabel?: string;\n arialabelledby?: string;\n disabled?: string;\n error?: string;\n filterable?: string;\n leadingicon?: string;\n maxheight?: string;\n multiselect?: string;\n name?: string;\n native?: string;\n placeholder?: string;\n value?: string;\n width?: string;\n maxwidth?: string;\n relative?: string;\n id?: string;\n autocomplete?: string;\n testid?: string;\n size?: GoabDropdownSize;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n // eslint-disable-next-line @typescript-eslint/no-empty-interface\n interface IntrinsicElements {\n \"goa-dropdown\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabDropdownProps extends Margins, DataAttributes {\n /** Identifier for the dropdown. Should be unique. */\n name?: string;\n /** The currently selected value(s) of the dropdown. */\n value?: string[] | string;\n /** Callback fired when the selected value changes. */\n onChange?: (detail: GoabDropdownOnChangeDetail) => void;\n /** Defines how the selected value will be translated for the screen reader. If not specified it will fall back to the name. */\n ariaLabel?: string;\n /** The aria-labelledby attribute identifies the element that labels the dropdown. Normally it is the id of the label. */\n ariaLabelledBy?: string;\n /** The id attribute for the dropdown element. */\n id?: string;\n /** Dropdown items rendered inside the dropdown. */\n children?: React.ReactNode;\n /** Disables the dropdown control. */\n disabled?: boolean;\n /** Shows an error state on the dropdown. */\n error?: boolean;\n /** When true, allows filtering options by typing into the input field. */\n filterable?: boolean;\n /** Icon shown to the left of the dropdown input. */\n leadingIcon?: GoabIconType;\n /** Maximum height of the dropdown menu. Non-native only. @default \"276px\" */\n maxHeight?: string;\n /** When true, allows multiple items to be selected. @internal */\n multiselect?: boolean;\n /** When true, renders the native select HTML element. */\n native?: boolean;\n /** The text displayed in the dropdown before a selection is made. Non-native only. */\n placeholder?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Overrides the autosized menu width. Non-native only. */\n width?: string;\n /** Sets the maximum width of the dropdown. Use a CSS unit (px, %, ch, rem, em). */\n maxWidth?: string;\n /** Specifies the autocomplete attribute for the dropdown input. Native only. */\n autoComplete?: string;\n /** Sets the size of the dropdown. Compact reduces height for dense layouts. */\n size?: GoabDropdownSize;\n /** @deprecated This property has no effect and will be removed in a future version. */\n relative?: boolean;\n}\n\nfunction stringify(value: string | string[] | undefined): string {\n if (typeof value === \"undefined\") {\n return \"\";\n }\n if (typeof value === \"string\") {\n return value;\n }\n return JSON.stringify(value);\n}\n\n/** Present a list of options to the user to select from. */\nexport function GoabDropdown({\n value,\n onChange,\n disabled,\n error,\n filterable,\n multiselect,\n native,\n relative,\n children,\n size = \"default\",\n ...rest\n}: GoabDropdownProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>({ size, ...rest }, lowercase);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n const current = el.current;\n const handler = (e: Event) => {\n const detail = (e as CustomEvent<GoabDropdownOnChangeDetail>).detail;\n onChange?.({ ...detail, event: e });\n };\n if (onChange) {\n current.addEventListener(\"_change\", handler);\n }\n return () => {\n if (onChange) {\n current.removeEventListener(\"_change\", handler);\n }\n };\n }, [el, onChange]);\n\n return (\n <goa-dropdown\n ref={el}\n value={stringify(value)}\n disabled={disabled ? \"true\" : undefined}\n error={error ? \"true\" : undefined}\n filterable={filterable ? \"true\" : undefined}\n multiselect={multiselect ? \"true\" : undefined}\n native={native ? \"true\" : undefined}\n relative={relative ? \"true\" : undefined}\n {..._props}\n version=\"2\"\n >\n {children}\n </goa-dropdown>\n );\n}\n\nexport default GoabDropdown;\n","import { useEffect } from \"react\";\nimport { GoabDropdownItemMountType } from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n value: string;\n label?: string;\n filter?: string;\n mount?: GoabDropdownItemMountType;\n\n // @deprecated\n name?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-dropdown-item\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabDropdownItemProps {\n /** @required The value submitted when this item is selected. */\n value: string;\n /** Display label for the dropdown item. */\n label?: string;\n /** Text used to filter and match this item in typeahead search. */\n filter?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Controls how the item is registered with the parent dropdown. */\n mountType?: GoabDropdownItemMountType;\n /** @deprecated */\n name?: string;\n}\n\n/** Present a list of options to the user to select from. */\nexport function GoabDropdownOption(props: GoabDropdownItemProps) {\n useEffect(() => {\n console.warn(\"GoabDropdownOption is deprecated. Please use GoabDropdownItem\");\n }, []);\n\n return <GoabDropdownItem {...props} />;\n}\n\n/** Present a list of options to the user to select from. */\nexport function GoabDropdownItem({\n value,\n label,\n filter,\n name,\n mountType = \"append\",\n}: GoabDropdownItemProps) {\n return (\n <goa-dropdown-item\n value={value}\n label={label}\n filter={filter}\n name={name}\n mount={mountType}\n />\n );\n}\n","import {\n DataAttributes,\n GoabFileUploadOnCancelDetail,\n GoabFileUploadOnDeleteDetail,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n filename: string;\n size: number;\n type?: string;\n progress?: number;\n error?: string;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-file-upload-card\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabFileUploadCardProps extends DataAttributes {\n /** @required The name of the uploaded file to display. */\n filename: string;\n /** @required The file size in bytes. Displayed in a human-readable format (KB, MB). */\n size: number;\n /** The MIME type of the file. Used to determine the file type icon. */\n type?: string;\n /** Upload progress percentage from 0-100. Use -1 to indicate upload is complete. @default -1 */\n progress?: number;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Error message to display. When set, the card shows an error state with a cancel button. */\n error?: string;\n /** Callback fired when the user clicks the remove button on an uploaded file. */\n onDelete?: (detail: GoabFileUploadOnDeleteDetail) => void;\n /** Callback fired when the user clicks the cancel button during file upload. */\n onCancel?: (detail: GoabFileUploadOnCancelDetail) => void;\n}\n\n/** Display uploaded file with actions. */\nexport function GoabFileUploadCard({\n onDelete,\n onCancel,\n filename,\n ...rest\n}: GoabFileUploadCardProps) {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>({ filename, ...rest }, lowercase);\n\n useEffect(() => {\n if (!el.current) return;\n\n const current = el.current;\n const deleteHandler = (event: Event) => onDelete?.({ filename, event });\n const cancelHandler = (event: Event) => onCancel?.({ filename, event });\n current.addEventListener(\"_delete\", deleteHandler);\n current.addEventListener(\"_cancel\", cancelHandler);\n return () => {\n current.removeEventListener(\"_delete\", deleteHandler);\n current.removeEventListener(\"_cancel\", cancelHandler);\n };\n }, [el, onDelete, onCancel, filename]);\n\n return <goa-file-upload-card ref={el} {..._props} version=\"2\" />;\n}\n\nexport default GoabFileUploadCard;\n","import {\n DataAttributes,\n GoabFileUploadInputOnSelectFileDetail,\n GoabFileUploadInputVariant,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n variant?: GoabFileUploadInputVariant;\n accept?: string;\n maxfilesize?: string;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-file-upload-input\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabFileUploadInputProps extends DataAttributes {\n /** @required Callback fired when a valid file is selected or dropped. */\n onSelectFile: (detail: GoabFileUploadInputOnSelectFileDetail) => void;\n /** The input display variant. \"dragdrop\" shows a drag-and-drop area, \"button\" shows a simple button. @default \"dragdrop\" */\n variant?: GoabFileUploadInputVariant;\n /** Accepted file types as a comma-separated list of MIME types or file extensions (e.g., \"image/*,.pdf\"). */\n accept?: string;\n /** Maximum file size with unit (e.g., \"5MB\", \"100KB\", \"1GB\"). Files exceeding this will be rejected. @default \"5MB\" */\n maxFileSize?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Help users select and upload a file. */\nexport function GoabFileUploadInput({ onSelectFile, ...rest }: GoabFileUploadInputProps) {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n if (!el.current) return;\n\n const current = el.current;\n const handler = (e: Event) => {\n const detail = (e as CustomEvent<GoabFileUploadInputOnSelectFileDetail>).detail;\n onSelectFile({ ...detail, event: e });\n };\n current.addEventListener(\"_selectFile\", handler);\n return () => {\n current.removeEventListener(\"_selectFile\", handler);\n };\n }, [el, onSelectFile]);\n\n return <goa-file-upload-input ref={el} {..._props} version=\"2\" />;\n}\n\nexport default GoabFileUploadInput;\n","import { ReactNode, type JSX } from \"react\";\nimport { DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n maxcontentwidth?: string;\n testid?: string;\n url?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-app-footer\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabAppFooterProps extends DataAttributes {\n /** The maximum width of the main content area. */\n maxContentWidth?: string;\n /** URL for the Government of Alberta logo link. Set to empty string to disable the link. @default \"https://alberta.ca\" */\n url?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the footer, typically navigation and meta sections. */\n children?: ReactNode;\n}\n\n/** Provides information related your service at the bottom of every page. */\nexport function GoabAppFooter({ children, ...rest }: GoabAppFooterProps): JSX.Element {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-app-footer {..._props} version={\"2\"}>\n {children}\n </goa-app-footer>\n );\n}\n\nexport default GoabAppFooter;\n","import { ReactNode } from \"react\";\nimport { DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-app-footer-meta-section\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabAppFooterMetaSectionProps extends DataAttributes {\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Anchor link elements rendered as footer meta navigation links. */\n children?: ReactNode;\n}\n\n/** Copyright and legal links in footer. */\nexport function GoabAppFooterMetaSection({\n children,\n ...rest\n}: GoabAppFooterMetaSectionProps) {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-app-footer-meta-section slot=\"meta\" {..._props}>\n {children}\n </goa-app-footer-meta-section>\n );\n}\n\nexport default GoabAppFooterMetaSection;\n","import { ReactNode } from \"react\";\nimport { DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n maxcolumncount?: number;\n heading?: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-app-footer-nav-section\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabFooterNavSectionProps extends DataAttributes {\n /** The section heading displayed above the navigation links. */\n heading?: string;\n /** Maximum number of columns to display links in on larger screens. @default 1 */\n maxColumnCount?: number;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Anchor link elements rendered as footer navigation links. */\n children?: ReactNode;\n}\n\n/** Navigation links section in footer. */\nexport function GoabAppFooterNavSection({\n children,\n ...rest\n}: GoabFooterNavSectionProps) {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-app-footer-nav-section slot=\"nav\" {..._props}>\n {children}\n </goa-app-footer-nav-section>\n );\n}\n\nexport default GoabAppFooterNavSection;\n","import { ReactNode, useEffect, useRef, type JSX } from \"react\";\nimport {\n DataAttributes,\n GoabFieldsetOnContinueDetail,\n GoabFormDispatchOn,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, kebab } from \"../common/extract-props\";\n\ninterface WCProps {\n id?: string;\n \"section-title\"?: string;\n \"dispatch-on\"?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-fieldset\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\ninterface GoabFieldsetProps extends DataAttributes {\n /** Content rendered inside the fieldset. */\n children: ReactNode;\n /** Sets the unique identifier for the fieldset. */\n id?: string;\n /** Sets the section title of the fieldset. */\n sectionTitle?: string;\n /** Sets when form field changes are dispatched to the form. @default \"continue\" */\n dispatchOn?: GoabFormDispatchOn;\n /** Callback fired when the fieldset continue action is triggered. */\n onContinue?: (event: GoabFieldsetOnContinueDetail) => void;\n}\n\n/** Container for form inputs and validation. */\nexport function GoabFieldset({\n onContinue,\n children,\n ...rest\n}: GoabFieldsetProps): JSX.Element {\n const ref = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(rest, kebab);\n\n useEffect(() => {\n if (!ref.current) return;\n const current = ref.current;\n\n const continueListener = (e: Event) => {\n const event = (e as CustomEvent<GoabFieldsetOnContinueDetail>).detail;\n return onContinue?.(event);\n };\n\n if (onContinue) {\n current.addEventListener(\"_continue\", continueListener);\n }\n\n return () => {\n if (onContinue) {\n current.removeEventListener(\"_continue\", continueListener);\n }\n };\n }, [ref, onContinue]);\n\n return (\n <goa-fieldset ref={ref} {..._props}>\n {children}\n </goa-fieldset>\n );\n}\n\nexport default GoabFieldset;\n","import { ReactNode, useEffect, useRef } from \"react\";\nimport {\n GoabPublicFormPageButtonVisibility,\n GoabPublicFormPageStep,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, kebab } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n id?: string;\n heading?: string;\n \"sub-heading\"?: string;\n \"section-title\"?: string;\n \"back-url\"?: string;\n type?: string;\n \"button-text\"?: string;\n \"button-visibility\"?: string;\n \"summary-heading\"?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-public-form-page\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\ninterface GoabPublicFormPageProps extends Margins, DataAttributes {\n /** Content rendered inside the form page. */\n children: ReactNode;\n /** Sets the unique identifier for the form page. */\n id?: string;\n /** Sets the heading text displayed at the top of the form page. */\n heading?: string;\n /** Sets the subheading text displayed below the main heading. */\n subHeading?: string;\n /** Sets the heading text used when this page appears in the form summary. */\n summaryHeading?: string;\n /** Sets the section title displayed above the heading. */\n sectionTitle?: string;\n /** Sets the URL for the back navigation link. */\n backUrl?: string;\n /** Sets the type of the form page. @default \"step\" */\n type?: GoabPublicFormPageStep;\n /** Sets the text label for the continue or confirm button. */\n buttonText?: string;\n /** Sets the visibility of the continue button. @default \"visible\" */\n buttonVisibility?: GoabPublicFormPageButtonVisibility;\n /** Callback fired when the form page continues to the next step. */\n onContinue?: (event: Event) => void;\n}\n\n/** Container for form inputs and validation. */\nexport function GoabPublicFormPage({\n onContinue,\n children,\n ...rest\n}: GoabPublicFormPageProps) {\n const ref = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(rest, kebab);\n\n useEffect(() => {\n if (!ref.current) return;\n const current = ref.current;\n\n const continueListener = (e: Event) => {\n onContinue?.(e);\n };\n\n if (onContinue) {\n current.addEventListener(\"_continue\", continueListener);\n }\n\n return () => {\n if (onContinue) {\n current.removeEventListener(\"_continue\", continueListener);\n }\n };\n }, [ref, onContinue]);\n\n return (\n <goa-public-form-page ref={ref} {..._props}>\n {children}\n </goa-public-form-page>\n );\n}\n\nexport default GoabPublicFormPage;\n","import { DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n heading?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-public-form-summary\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\ninterface GoabPublicFormSummaryProps extends DataAttributes {\n /** Sets the heading text displayed above the form summary content. */\n heading?: string;\n}\n\n/** Container for form inputs and validation. */\nexport function GoabPublicFormSummary({\n heading = \"\",\n ...rest\n}: GoabPublicFormSummaryProps) {\n const _props = transformProps<WCProps>({ heading, ...rest }, lowercase);\n\n return <goa-public-form-summary {..._props} />;\n}\n\nexport default GoabPublicFormSummary;\n","import { ReactNode, useRef, useLayoutEffect } from \"react\";\n\nimport {\n DataAttributes,\n GoabFormState,\n GoabPublicFormStatus,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n status?: string;\n name?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-public-form\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\ninterface GoabPublicFormProps extends DataAttributes {\n /** Content rendered inside the public form. */\n children: ReactNode;\n /** The initialization status of the form. Set to \"initializing\" while loading external state, then \"complete\" when ready. @default \"complete\" */\n status?: GoabPublicFormStatus;\n /** A name identifier for the form. Useful for debugging complex forms with multiple nested forms. */\n name?: string;\n /** Callback fired when the form is initialized. */\n onInit?: (event: Event) => void;\n /** Callback fired when the form is completed. */\n onComplete?: (event: GoabFormState) => void;\n /** Callback fired when the form state changes. */\n onStateChange?: (event: GoabFormState) => void;\n}\n\n/** Container for form inputs and validation. */\nexport function GoabPublicForm({\n onInit,\n onComplete,\n onStateChange,\n children,\n ...rest\n}: GoabPublicFormProps) {\n const ref = useRef<HTMLElement>(null);\n const initialized = useRef(false);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n // Use useLayoutEffect to set up listeners before the component mounts\n useLayoutEffect(() => {\n if (!ref.current) return;\n const current = ref.current;\n\n const initListener = (e: Event) => {\n onInit?.(e);\n };\n\n // First time initialization, add init listener immediately\n if (onInit && !initialized.current) {\n current.addEventListener(\"_init\", initListener);\n }\n\n const completeListener = (e: Event) => {\n const detail = (e as CustomEvent).detail;\n onComplete?.(detail);\n };\n\n const stateChangeListener = (e: Event) => {\n const detail = (e as CustomEvent).detail;\n onStateChange?.(detail.data);\n };\n\n if (onComplete) {\n current.addEventListener(\"_complete\", completeListener);\n }\n\n if (onStateChange) {\n current.addEventListener(\"_stateChange\", stateChangeListener);\n }\n\n return () => {\n if (onInit) {\n current.removeEventListener(\"_init\", initListener);\n }\n if (onComplete) {\n current.removeEventListener(\"_complete\", completeListener);\n }\n if (onStateChange) {\n current.removeEventListener(\"_stateChange\", stateChangeListener);\n }\n };\n }, [onInit, onComplete, onStateChange]);\n\n return (\n <goa-public-form ref={ref} {..._props}>\n {children}\n </goa-public-form>\n );\n}\n\nexport default GoabPublicForm;\n","import { ReactNode, useEffect, useRef } from \"react\";\nimport { Margins, DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, kebab } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n id?: string;\n name?: string;\n \"continue-msg\"?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-public-subform\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\ninterface GoabPublicSubformProps extends Margins, DataAttributes {\n /** Content rendered inside the subform. */\n children: ReactNode;\n /** Sets the unique identifier for the subform. */\n id?: string;\n /** Sets the name identifier for the subform. */\n name?: string;\n /** Sets the message displayed on the continue button. */\n continueMsg?: string;\n /** Callback fired when the subform is initialized. */\n onInit?: (event: Event) => void;\n /** Callback fired when the subform state changes. */\n onStateChange?: (event: Event) => void;\n}\n\n/** Container for form inputs and validation. */\nexport function GoabPublicSubform({\n id = \"\",\n name = \"\",\n continueMsg = \"\",\n onInit,\n onStateChange,\n children,\n ...rest\n}: GoabPublicSubformProps) {\n const ref = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(\n { id, name, \"continue-msg\": continueMsg, ...rest },\n kebab,\n );\n\n useEffect(() => {\n if (!ref.current) return;\n const current = ref.current;\n\n const initListener = (e: Event) => {\n onInit?.(e);\n };\n\n const stateChangeListener = (e: Event) => {\n onStateChange?.(e);\n };\n\n if (onInit) {\n current.addEventListener(\"_init\", initListener);\n }\n if (onStateChange) {\n current.addEventListener(\"_stateChange\", stateChangeListener);\n }\n\n return () => {\n if (onInit) {\n current.removeEventListener(\"_init\", initListener);\n }\n if (onStateChange) {\n current.removeEventListener(\"_stateChange\", stateChangeListener);\n }\n };\n }, [ref, onInit, onStateChange]);\n\n return (\n <goa-public-subform ref={ref} {..._props}>\n {children}\n </goa-public-subform>\n );\n}\n\nexport default GoabPublicSubform;\n","import { ReactNode } from \"react\";\nimport { Margins, DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, kebab } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n heading?: string;\n \"section-title\"?: string;\n \"action-button-text\"?: string;\n \"button-visibility\"?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-public-subform-index\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\ninterface GoabPublicSubformIndexProps extends Margins, DataAttributes {\n /** Content rendered inside the subform index. */\n children: ReactNode;\n /** Sets the heading text displayed at the top of the subform index page. */\n heading?: string;\n /** Sets the section title displayed above the heading. */\n sectionTitle?: string;\n /** Sets the text label for the action button that adds a new subform entry. */\n actionButtonText?: string;\n /** Sets the visibility of the action button. @default \"hidden\" */\n buttonVisibility?: \"visible\" | \"hidden\";\n}\n\n/** Container for form inputs and validation. */\nexport function GoabPublicSubformIndex({\n heading = \"\",\n sectionTitle = \"\",\n actionButtonText = \"\",\n buttonVisibility = \"hidden\",\n children,\n ...rest\n}: GoabPublicSubformIndexProps) {\n const _props = transformProps<WCProps>(\n {\n heading,\n \"section-title\": sectionTitle,\n \"action-button-text\": actionButtonText,\n \"button-visibility\": buttonVisibility,\n ...rest,\n },\n kebab,\n );\n\n return (\n <goa-public-subform-index slot=\"subform-index\" {..._props}>\n {children}\n </goa-public-subform-index>\n );\n}\n\nexport default GoabPublicSubformIndex;\n","import { ReactNode } from \"react\";\nimport { DataAttributes, GoabPublicFormTaskStatus } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n status?: GoabPublicFormTaskStatus;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-public-form-task\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\ninterface GoabPublicFormTaskProps extends DataAttributes {\n /** Content rendered inside the task item, typically the task name or description. */\n children: ReactNode;\n /** Sets the status of the task, which determines the badge displayed. @default \"cannot-start\" */\n status?: GoabPublicFormTaskStatus;\n}\n\n/** Container for form inputs and validation. */\nexport function GoabPublicFormTask({\n status = \"cannot-start\",\n children,\n ...rest\n}: GoabPublicFormTaskProps) {\n const _props = transformProps<WCProps>({ status, ...rest }, lowercase);\n\n return <goa-public-form-task {..._props}>{children}</goa-public-form-task>;\n}\n\nexport default GoabPublicFormTask;\n","import { ReactNode } from \"react\";\nimport { Margins, DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n heading?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-public-form-task-list\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\ninterface GoabPublicFormTaskListProps extends Margins, DataAttributes {\n /** Content rendered inside the task list, typically GoabPublicFormTask items. */\n children: ReactNode;\n /** Sets the heading text displayed above the task list. */\n heading?: string;\n}\n\n/** Container for form inputs and validation. */\nexport function GoabPublicFormTaskList({\n children,\n ...rest\n}: GoabPublicFormTaskListProps) {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return <goa-public-form-task-list {..._props}>{children}</goa-public-form-task-list>;\n}\n\nexport default GoabPublicFormTaskList;\n","import {\n GoabFormItemLabelSize,\n GoabFormItemRequirement,\n GoabFormItemType,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\n\nimport type { JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n label?: string;\n labelsize?: GoabFormItemLabelSize;\n requirement?: GoabFormItemRequirement;\n error?: string;\n helptext?: string;\n maxwidth?: string;\n \"public-form-summary-order\"?: number;\n name?: string;\n id?: string;\n testid?: string;\n type?: GoabFormItemType;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-form-item\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabFormItemProps extends Margins, DataAttributes {\n /** Creates a label for the form item. */\n label?: string;\n /** Sets the label size. 'regular' for standard, 'large' for emphasis. @default \"regular\" */\n labelSize?: GoabFormItemLabelSize;\n /** Marks the field with an optional or required label indicator. */\n requirement?: GoabFormItemRequirement;\n /** Error text displayed under the form field. Leave blank to indicate a valid field. Accepts a string or ReactNode for custom error content. */\n error?: string | React.ReactNode;\n /** Help text displayed under the form field to provide additional explanation. Accepts a string or ReactNode for custom help content. */\n helpText?: string | React.ReactNode;\n /** Sets the maximum width of the form item. @default \"none\" */\n maxWidth?: string;\n /** Specifies the input type for appropriate message spacing. Used with checkbox-list or radio-group. */\n type?: GoabFormItemType;\n /** Sets the display order within the form summary. For public-form use only. */\n publicFormSummaryOrder?: number;\n /** Overrides the label value within the form-summary to provide a shorter description. For public-form use only. */\n name?: string;\n /** Content rendered inside the form item, typically an input component. */\n children?: React.ReactNode;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the id attribute on the form item element. */\n id?: string;\n}\n\n/** Wraps an input control with a text label, requirement label, helper text, and error text. */\nexport function GoabFormItem({\n error,\n helpText,\n publicFormSummaryOrder,\n children,\n type = \"\",\n ...rest\n}: GoabFormItemProps): JSX.Element {\n const _props = transformProps<WCProps>({ type, ...rest }, lowercase);\n\n return (\n <goa-form-item\n error={typeof error === \"string\" ? error : undefined}\n helptext={typeof helpText === \"string\" ? helpText : undefined}\n public-form-summary-order={publicFormSummaryOrder}\n {..._props}\n version=\"2\"\n >\n {error && typeof error !== \"string\" && <div slot=\"error\">{error}</div>}\n {helpText && typeof helpText !== \"string\" && <div slot=\"helptext\">{helpText}</div>}\n {children}\n </goa-form-item>\n );\n}\n\nexport default GoabFormItem;\n","import { GoabFormStepStatus } from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n text: string;\n status?: GoabFormStepStatus;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-form-step\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabFormStepProps {\n /** @required The step label text displayed to users. */\n text: string;\n /** The completion status of the step. Affects visual styling and icons. */\n status?: GoabFormStepStatus;\n}\n\n/** Individual step in a multi-step form. */\nexport function GoabFormStep(props: GoabFormStepProps) {\n return <goa-form-step text={props.text} status={props.status} />;\n}\n\nexport default GoabFormStep;\n","import { GoabFormStepperOnChangeDetail, Margins } from \"@abgov/ui-components-common\";\nimport { ReactNode, useEffect, useRef } from \"react\";\n\ninterface WCProps extends Margins {\n ref?: React.RefObject<HTMLElement | null>;\n step?: number;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-form-stepper\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabFormStepperProps extends Margins {\n /** The current step state value (1-based index). Leaving it blank (-1) will allow any step to be accessed. */\n step?: number;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the form stepper, typically GoabFormStep components. */\n children?: ReactNode;\n /** Callback fired when the active step changes. */\n onChange?: (detail: GoabFormStepperOnChangeDetail) => void;\n}\n\n/** Provides a visual representation of a form through a series of steps. */\nexport function GoabFormStepper({\n testId,\n step,\n mt,\n mb,\n ml,\n mr,\n onChange,\n children,\n}: GoabFormStepperProps) {\n const ref = useRef<HTMLInputElement>(null);\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n const current = ref.current;\n const changeListener = (e: unknown) => {\n const detail = (e as CustomEvent<GoabFormStepperOnChangeDetail>).detail;\n onChange?.(detail);\n };\n\n current.addEventListener(\"_change\", changeListener);\n return () => {\n current.removeEventListener(\"_change\", changeListener);\n };\n }, [ref, onChange]);\n\n return (\n <goa-form-stepper\n ref={ref}\n testid={testId}\n step={step}\n mt={mt}\n mr={mr}\n mb={mb}\n ml={ml}\n >\n {children}\n </goa-form-stepper>\n );\n}\n\nexport default GoabFormStepper;\n","import { Margins, Spacing } from \"@abgov/ui-components-common\";\n\nimport type { JSX } from \"react\";\n\ninterface WCProps extends Margins {\n gap?: Spacing;\n minchildwidth: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-grid\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabGridProps extends Margins {\n /** @required Minimum width of the child elements. */\n minChildWidth: string;\n /** Gap between child items. @default \"m\" */\n gap?: Spacing;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the grid layout. */\n children?: React.ReactNode;\n}\n\n/** Arrange a number of components into a responsive grid pattern. */\nexport function GoabGrid({\n gap,\n minChildWidth,\n mt,\n mr,\n mb,\n ml,\n testId,\n children,\n}: GoabGridProps): JSX.Element {\n return (\n <goa-grid\n gap={gap}\n minchildwidth={minChildWidth}\n mt={mt}\n mr={mr}\n mb={mb}\n ml={ml}\n testid={testId}\n >\n {children}\n </goa-grid>\n );\n}\n\nexport default GoabGrid;\n","import type { JSX } from \"react\";\ninterface WCProps {\n heading: string;\n backgroundurl?: string;\n minheight?: string;\n maxcontentwidth?: string;\n backgroundcolor?: string;\n textcolor?: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-hero-banner\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabHeroBannerProps {\n /** @required Main heading text. */\n heading: string;\n /** Background image url. */\n backgroundUrl?: string;\n /** Minimum height of the hero banner. Defaults to 600px when a background image is provided. */\n minHeight?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the hero banner body. */\n children?: React.ReactNode;\n /** Content rendered in the actions slot. */\n actions?: React.ReactNode;\n /** Maximum width of the content area. @default \"100%\" */\n maxContentWidth?: string;\n /** Hero Banner background color when no background image is provided. @default \"#f8f8f8\" */\n backgroundColor?: string;\n /** Text color within the hero banner. */\n textColor?: string;\n}\n\n/** A visual band of text, including an image and a call to action. */\nexport function GoabHeroBanner({\n heading,\n backgroundUrl,\n minHeight,\n maxContentWidth,\n backgroundColor,\n textColor,\n children,\n actions,\n testId,\n}: GoabHeroBannerProps): JSX.Element {\n return (\n <goa-hero-banner\n heading={heading}\n backgroundurl={backgroundUrl}\n minheight={minHeight}\n maxcontentwidth={maxContentWidth}\n backgroundcolor={backgroundColor}\n textcolor={textColor}\n testid={testId}\n >\n {children}\n {actions && <div slot=\"actions\">{actions}</div>}\n </goa-hero-banner>\n );\n}\n\nexport default GoabHeroBanner;\n","import type { JSX } from \"react\";\nexport type GoabHeroBannerActionsType = {\n /** Content rendered inside the hero banner actions slot, typically buttons or links. */\n children?: React.ReactNode;\n};\n\n/** Displays action content in the hero banner actions area. */\nexport function GoabHeroBannerActions({\n children,\n}: GoabHeroBannerActionsType): JSX.Element {\n return <div slot=\"actions\">{children}</div>;\n}\n\nexport default GoabHeroBannerActions;\n","import {\n GoabIconButtonVariant,\n GoabIconSize,\n GoabIconTheme,\n GoabIconType,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef, type JSX, ReactNode } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n icon: GoabIconType;\n size?: GoabIconSize;\n theme?: GoabIconTheme;\n variant?: GoabIconButtonVariant;\n title?: string;\n disabled?: string;\n arialabel?: string;\n action?: string;\n actionArgs?: string;\n actionArg?: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-icon-button\": WCProps &\n React.HTMLAttributes<HTMLButtonElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabIconButtonProps extends Margins, DataAttributes {\n /** @required Sets the icon. */\n icon: GoabIconType;\n /** Sets the size of button. @default \"medium\" */\n size?: GoabIconSize;\n /** Styles the button to show color, light, dark or destructive action. @default \"color\" */\n variant?: GoabIconButtonVariant;\n /** Sets the theme of the icon inside the button. \"outline\" for stroked icons, \"filled\" for solid icons. @default \"outline\" */\n theme?: GoabIconTheme;\n /** Sets the title of the button. */\n title?: string;\n /** Disables the button. */\n disabled?: boolean;\n /** Callback fired when the icon button is clicked. */\n onClick?: () => void;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the aria-label of the button. */\n ariaLabel?: string;\n /** Action identifier passed in click events for event delegation patterns. */\n action?: string;\n /** Multiple argument values passed with the action in click events. */\n actionArgs?: Record<string, unknown>;\n /** Single argument value passed with the action in click events. */\n actionArg?: string;\n /** Content rendered inside the icon button. */\n children?: ReactNode;\n}\n\n/** A compact button with an icon and no text. */\nexport function GoabIconButton({\n variant = \"color\",\n size = \"medium\",\n theme = \"outline\",\n disabled,\n onClick,\n actionArgs,\n actionArg,\n children,\n ...rest\n}: GoabIconButtonProps): JSX.Element {\n const ref = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>({ variant, size, theme, ...rest }, lowercase);\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n if (!onClick) {\n return;\n }\n const current = ref.current;\n const listener = () => {\n onClick?.();\n };\n\n current.addEventListener(\"_click\", listener);\n return () => {\n current.removeEventListener(\"_click\", listener);\n };\n }, [ref, onClick]);\n\n return (\n <goa-icon-button\n ref={ref}\n disabled={disabled ? \"true\" : undefined}\n action-arg={actionArg}\n action-args={JSON.stringify(actionArgs)}\n {..._props}\n >\n {children}\n </goa-icon-button>\n );\n}\n","import {\n GoabIconOverridesType,\n GoabIconSize,\n GoabIconTheme,\n GoabIconType,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\n\nimport type { JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IonIconElement extends HTMLElement {}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-icon\": WCProps & React.HTMLAttributes<IonIconElement>;\n }\n }\n}\n\nexport interface GoabIconProps extends Margins, DataAttributes {\n /** @required The icon type to display. See GoabIconType for available icons. */\n type: GoabIconType | GoabIconOverridesType;\n /** Sets the size of the icon. Accepts numeric (1-6) or named sizes. @default \"medium\" */\n size?: GoabIconSize;\n /** Sets the icon theme. 'outline' shows stroked icons, 'filled' shows solid icons. @default \"outline\" */\n theme?: GoabIconTheme;\n /** When true, inverts the icon colors for use on dark backgrounds. */\n inverted?: string | boolean; // TODO: Change type to only boolean\n /** Sets a custom fill color for the icon. Accepts any valid CSS color value. */\n fillColor?: string;\n /** Sets the opacity of the icon from 0 (transparent) to 1 (opaque). @default 1 */\n opacity?: number;\n /** Adds an accessible title to the icon SVG. Used by screen readers. */\n title?: string;\n /** Defines how the icon will be announced by screen readers. */\n ariaLabel?: string;\n /** Sets the ARIA role for the icon. Use 'presentation' for decorative icons. @default \"img\" */\n role?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\ninterface WCProps extends Margins {\n type: GoabIconType | GoabIconOverridesType;\n theme?: GoabIconTheme;\n size?: GoabIconSize;\n inverted?: string;\n fillcolor?: string;\n opacity?: number;\n title?: string;\n arialabel?: string;\n role?: string;\n testid?: string;\n}\n\n/** A simple and universal graphic symbol representing an action, object, or concept to help guide the user. */\nexport function GoabIcon({ inverted, ...rest }: GoabIconProps): JSX.Element {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-icon\n inverted={\n typeof inverted === \"boolean\" ? (inverted ? \"true\" : undefined) : inverted\n }\n {..._props}\n />\n );\n}\n","import { useEffect, useRef, type JSX } from \"react\";\nimport { format, isValid, parseISO } from \"date-fns\";\nimport {\n GoabAutoCapitalize,\n GoabDate,\n GoabIconType,\n GoabInputOnBlurDetail,\n GoabInputOnChangeDetail,\n GoabInputOnFocusDetail,\n GoabInputOnKeyPressDetail,\n GoabInputSize,\n GoabInputType,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n type?: GoabInputType;\n name: string;\n value?: string;\n id?: string;\n autocapitalize?: GoabAutoCapitalize;\n autocomplete?: string;\n debounce?: number;\n placeholder?: string;\n leadingicon?: string;\n trailingicon?: string;\n variant: string;\n disabled?: string;\n error?: string;\n readonly?: string;\n focused?: string;\n handletrailingiconclick: string;\n width?: string;\n prefix?: string;\n suffix?: string;\n arialabel?: string;\n testid?: string;\n textalign?: string;\n size?: GoabInputSize;\n\n // type=number\n min?: string | number;\n max?: string | number;\n step?: number;\n maxlength?: number;\n\n version?: string;\n trailingiconarialabel?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-input\": WCProps &\n React.HTMLAttributes<HTMLInputElement> & {\n ref?: React.RefObject<HTMLInputElement | null>;\n };\n }\n }\n}\n\ninterface BaseProps extends Margins, DataAttributes {\n /** Name of input value that is received in event detail payloads. */\n name: string;\n\n /** Sets the id attribute of the input element. */\n id?: string;\n /** Debounce delay in milliseconds before firing the change event. 0 means no debounce. */\n debounce?: number;\n /** Sets the input disabled state. */\n disabled?: boolean;\n /** Controls automatic capitalization behavior on supported mobile browsers. */\n autoCapitalize?: GoabAutoCapitalize;\n /** Sets the autocomplete attribute for the input element. */\n autoComplete?: string;\n /** Sets placeholder text when the input is empty. */\n placeholder?: string;\n /** Sets the icon shown before the value. */\n leadingIcon?: GoabIconType;\n /** Sets the icon shown after the value. */\n trailingIcon?: GoabIconType;\n /** Callback fired when the trailing icon is clicked. */\n onTrailingIconClick?: () => void;\n /** Sets the visual style variant. @default \"goa\" */\n variant?: \"goa\" | \"bare\";\n /** Sets focus on initial render or controlled updates. */\n focused?: boolean;\n /** Sets the readonly state. */\n readonly?: boolean;\n /** Sets the error state styling. */\n error?: boolean;\n /** Sets the width of the input field. */\n width?: string;\n /** @deprecated Use leadingContent instead. */\n prefix?: string;\n /** @deprecated Use trailingContent instead. */\n suffix?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the aria-label used by assistive technologies. */\n ariaLabel?: string;\n /** Sets content in the leading slot. */\n leadingContent?: React.ReactNode;\n /** Sets content in the trailing slot. */\n trailingContent?: React.ReactNode;\n /** Sets the maximum number of characters. */\n maxLength?: number;\n /** Sets the aria-label for an interactive trailing icon. */\n trailingIconAriaLabel?: string;\n /** Sets text alignment. @default \"left\" */\n textAlign?: \"left\" | \"right\";\n /** Sets the input size. @default \"default\" */\n size?: GoabInputSize;\n}\n\ntype OnChange<T = string> = (detail: GoabInputOnChangeDetail<T>) => void;\ntype OnFocus<T = string> = (detail: GoabInputOnFocusDetail<T>) => void;\ntype OnBlur<T = string> = (detail: GoabInputOnBlurDetail<T>) => void;\ntype OnKeyPress<T = string> = (detail: GoabInputOnKeyPressDetail<T>) => void;\n\nexport interface GoabInputProps extends BaseProps {\n /** Callback fired when the input value changes. Receives GoabInputOnChangeDetail. */\n onChange?: OnChange<string>;\n /** Bound to the current value of the input field. */\n value?: string;\n /** Minimum value. Supports any number, or ISO 8601 format for date/datetime types. */\n min?: number | string;\n /** Maximum value. Supports any number, or ISO 8601 format for date/datetime types. */\n max?: number | string;\n /** How much a number or date value should change by. @default 1 */\n step?: number;\n /** Callback fired when the input receives focus. Receives GoabInputOnFocusDetail. */\n onFocus?: OnFocus<string>;\n /** Callback fired when the input loses focus. Receives GoabInputOnBlurDetail. */\n onBlur?: OnBlur<string>;\n /** Callback fired when a key is pressed in the input. Receives GoabInputOnKeyPressDetail. */\n onKeyPress?: OnKeyPress<string>;\n}\n\ninterface GoabNumberInputProps extends BaseProps {\n onChange?: OnChange<number>;\n value?: number;\n min?: number;\n max?: number;\n step?: number;\n onFocus?: OnFocus<number>;\n onBlur?: OnBlur<number>;\n onKeyPress?: OnKeyPress<number>;\n}\n\ninterface GoabDateInputProps extends BaseProps {\n onChange?: OnChange<GoabDate>;\n value?: GoabDate;\n min?: GoabDate;\n max?: GoabDate;\n step?: number;\n onFocus?: OnFocus<GoabDate>;\n onBlur?: OnBlur<GoabDate>;\n onKeyPress?: OnKeyPress<GoabDate>;\n}\n\n/** A single-line field where users can input and edit text. */\nexport function GoabInput({\n variant = \"goa\",\n textAlign = \"left\",\n size = \"default\",\n focused,\n disabled,\n readonly,\n error,\n leadingContent,\n trailingContent,\n onTrailingIconClick,\n onChange,\n onFocus,\n onBlur,\n onKeyPress,\n ...rest\n}: GoabInputProps & {\n /** Sets the type of the input field. @default \"text\" */\n type?: GoabInputType;\n}): JSX.Element {\n const ref = useRef<HTMLInputElement>(null);\n\n const _props = transformProps<WCProps>(\n { variant, textalign: textAlign, size, ...rest },\n lowercase,\n );\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n const current = ref.current;\n const changeListener = (e: Event) => {\n const detail = (e as CustomEvent<GoabInputOnChangeDetail>).detail;\n onChange?.({ ...detail, event: e });\n };\n const clickListener = () => {\n onTrailingIconClick?.();\n };\n\n const focusListener = (e: Event) => {\n const detail = (e as CustomEvent<GoabInputOnFocusDetail>).detail;\n onFocus?.({ ...detail, event: e });\n };\n\n const blurListener = (e: Event) => {\n const detail = (e as CustomEvent<GoabInputOnBlurDetail>).detail;\n onBlur?.({ ...detail, event: e });\n };\n\n const keypressListener = (e: Event) => {\n const detail = (e as CustomEvent<GoabInputOnKeyPressDetail>).detail;\n onKeyPress?.({ ...detail, event: e });\n };\n\n current.addEventListener(\"_change\", changeListener);\n current.addEventListener(\"_trailingIconClick\", clickListener);\n current.addEventListener(\"_focus\", focusListener);\n current.addEventListener(\"_blur\", blurListener);\n current.addEventListener(\"_keyPress\", keypressListener);\n\n return () => {\n current.removeEventListener(\"_change\", changeListener);\n current.removeEventListener(\"_trailingIconClick\", clickListener);\n current.removeEventListener(\"_focus\", focusListener);\n current.removeEventListener(\"_blur\", blurListener);\n current.removeEventListener(\"_keyPress\", keypressListener);\n };\n }, [ref, onChange, onTrailingIconClick, onFocus, onBlur, onKeyPress]);\n\n return (\n <goa-input\n ref={ref}\n {..._props}\n focused={focused ? \"true\" : undefined}\n disabled={disabled ? \"true\" : undefined}\n readonly={readonly ? \"true\" : undefined}\n error={error ? \"true\" : undefined}\n handletrailingiconclick={onTrailingIconClick ? \"true\" : \"false\"}\n version=\"2\"\n >\n {leadingContent && <div slot=\"leadingContent\">{leadingContent}</div>}\n {trailingContent && <div slot=\"trailingContent\">{trailingContent}</div>}\n </goa-input>\n );\n}\n\nconst onDateChangeHandler = (onChange?: OnChange<GoabDate>) => {\n return ({ name, value, event }: GoabInputOnChangeDetail<string | Date>) => {\n if (!value) {\n onChange?.({ name, value: \"\", event });\n return;\n }\n // valid string date\n if (typeof value === \"string\" && isValid(new Date(value))) {\n onChange?.({ name, value: parseISO(value), event });\n return;\n }\n // valid date\n if (isValid(value)) {\n onChange?.({ name, value, event });\n return;\n }\n };\n};\n\nconst onTimeChangeHandler = (onChange?: OnChange) => {\n return ({ name, value, event }: GoabInputOnChangeDetail) => {\n if (!value) {\n onChange?.({ name, value: \"\", event });\n return;\n }\n onChange?.({ name, value, event });\n };\n};\n\nfunction toString(value: GoabDate | null | undefined, tmpl = \"yyyy-MM-dd\"): string {\n if (!value) {\n return \"\";\n }\n if (typeof value === \"string\") {\n return format(parseISO(value), tmpl);\n }\n if (value.toISOString() === new Date(0).toISOString()) {\n return \"\";\n }\n return format(value, tmpl);\n}\n\n/** A single-line field where users can input and edit text. */\nexport function GoabInputText(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"text\" />;\n}\n\n/** A single-line field where users can enter masked password text. */\nexport function GoabInputPassword(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"password\" />;\n}\n\n/** A single-line field where users can enter or select a date. */\nexport function GoabInputDate({\n value,\n min = \"\",\n max = \"\",\n ...props\n}: GoabDateInputProps): JSX.Element {\n return (\n <GoabInput\n {...props}\n type=\"date\"\n onChange={onDateChangeHandler(props.onChange)}\n min={toString(min)}\n max={toString(max)}\n value={toString(value)}\n />\n );\n}\n\n/** A single-line field where users can enter or select a time. */\nexport function GoabInputTime({\n value,\n min = \"\",\n max = \"\",\n ...props\n}: GoabInputProps): JSX.Element {\n return (\n <GoabInput\n {...props}\n onChange={onTimeChangeHandler(props.onChange)}\n value={value}\n type=\"time\"\n />\n );\n}\n\n/** A single-line field where users can enter a date and time. */\nexport function GoabInputDateTime({\n value,\n min = \"\",\n max = \"\",\n ...props\n}: GoabDateInputProps): JSX.Element {\n return (\n <GoabInput\n {...props}\n onChange={onDateChangeHandler(props.onChange)}\n value={toString(value, \"yyyy-MM-dd'T'HH:mm\")}\n type=\"datetime-local\"\n />\n );\n}\n\n/** A single-line field where users can enter an email address. */\nexport function GoabInputEmail(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"email\" />;\n}\n\n/** A single-line field where users can enter search terms. */\nexport function GoabInputSearch(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"search\" trailingIcon=\"search\" />;\n}\n\n/** A single-line field where users can enter a URL. */\nexport function GoabInputUrl(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"url\" />;\n}\n\n/** A single-line field where users can enter a phone number. */\nexport function GoabInputTel(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"tel\" />;\n}\n\n/** A control that allows users to select a file for upload. */\nexport function GoabInputFile(props: GoabInputProps): JSX.Element {\n return (\n <input\n id={props.id}\n name={props.name}\n type=\"file\"\n onChange={(e) =>\n props.onChange?.({\n name: e.target.name,\n value: e.target.value,\n event: e.nativeEvent,\n })\n }\n style={{ backgroundColor: \"revert\" }}\n />\n );\n}\n\n/** A single-line field where users can enter or select a month. */\nexport function GoabInputMonth(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"month\" />;\n}\n\n/** A single-line field where users can input and edit numeric values. */\nexport function GoabInputNumber({\n min = Number.MIN_VALUE,\n max = Number.MAX_VALUE,\n value,\n textAlign = \"right\",\n ...props\n}: GoabNumberInputProps): JSX.Element {\n const onNumberChange = ({ name, value, event }: GoabInputOnChangeDetail) => {\n props.onChange?.({ name, value: parseFloat(value), event });\n };\n const onFocus = ({ name, value, event }: GoabInputOnFocusDetail) => {\n props.onFocus?.({ name, value: parseFloat(value), event });\n };\n const onBlur = ({ name, value, event }: GoabInputOnBlurDetail) => {\n props.onBlur?.({ name, value: parseFloat(value), event });\n };\n const onKeyPress = ({ name, value, key, event }: GoabInputOnKeyPressDetail) => {\n props.onKeyPress?.({ name, value: parseFloat(value), key: parseInt(key), event });\n };\n return (\n <GoabInput\n {...props}\n onChange={onNumberChange}\n min={min?.toString()}\n max={max?.toString()}\n value={value?.toString()}\n onFocus={onFocus}\n onBlur={onBlur}\n type=\"number\"\n onKeyPress={onKeyPress}\n textAlign={textAlign}\n />\n );\n}\n\n/** A range input where users can choose a numeric value within minimum and maximum limits. */\nexport function GoabInputRange(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"range\" />;\n}\n\nexport default GoabInput;\n","interface WCProps {\n testid?: string;\n progress?: number | null;\n percentVisibility?: \"visible\" | \"hidden\" | undefined;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-linear-progress\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabLinearProgressProps {\n /** Progress value (0-100). When undefined, shows an indeterminate loading animation. */\n progress?: number | null;\n /** Controls visibility of the percentage text. @default \"visible\" */\n percentVisibility?: \"visible\" | \"hidden\" | undefined;\n /** Accessible label for the progress bar. */\n ariaLabel?: string;\n /** ID of the element that labels this progress bar. */\n ariaLabelledBy?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Provide visual feedback to users while loading. */\nexport const GoabLinearProgress = ({\n progress,\n percentVisibility,\n ariaLabel,\n ariaLabelledBy,\n testId,\n}: GoabLinearProgressProps) => {\n return (\n <goa-linear-progress\n progress={progress}\n percent-visibility={percentVisibility}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n testid={testId}\n ></goa-linear-progress>\n );\n};\n\nexport default GoabLinearProgress;\n","import { ReactNode } from \"react\";\nimport {\n GoabIconType,\n GoabLinkColor,\n GoabLinkSize,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n leadingicon?: GoabIconType;\n trailingicon?: GoabIconType;\n action?: string;\n actionArgs?: string;\n actionArg?: string;\n testid?: string;\n color?: GoabLinkColor;\n size?: GoabLinkSize;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-link\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabLinkProps extends Margins, DataAttributes {\n /** @required Content rendered inside the link. */\n children: ReactNode;\n /** Icon displayed before the link text. */\n leadingIcon?: GoabIconType;\n /** Icon displayed after the link text. */\n trailingIcon?: GoabIconType;\n /** Custom action event name to dispatch when the link is clicked. */\n action?: string;\n /** Object of arguments to pass with the action event. */\n actionArgs?: Record<string, unknown>;\n /** Single argument to pass with the action event. Deprecated, use actionArgs instead. */\n actionArg?: string;\n /** Sets the color theme. 'interactive' for blue, 'dark' for black, 'light' for white text. @default \"interactive\" */\n color?: GoabLinkColor;\n /** Sets the text size and corresponding icon size. @default \"medium\" */\n size?: GoabLinkSize;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Wraps an anchor element to add icons or margins. */\nexport function GoabLink({\n actionArgs,\n actionArg,\n color = \"interactive\",\n size = \"medium\",\n children,\n ...rest\n}: GoabLinkProps) {\n const _props = transformProps<WCProps>({ color, size, ...rest }, lowercase);\n\n return (\n <goa-link action-arg={actionArg} action-args={JSON.stringify(actionArgs)} {..._props}>\n {children}\n </goa-link>\n );\n}\n\nexport default GoabLink;\n","import { ReactNode } from \"react\";\nimport { DataAttributes, GoabIconType, GoabLinkButtonType, Margins } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n type?: GoabLinkButtonType;\n leadingicon?: GoabIconType;\n trailingicon?: GoabIconType;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-link-button\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\ninterface GoALinkButtonProps extends Margins, DataAttributes {\n /** @deprecated Use GoabButton instead. Sets the type of button. */\n type?: GoabLinkButtonType;\n /** @deprecated Use GoabButton instead. Icon displayed before the button text. */\n leadingIcon?: GoabIconType;\n /** @deprecated Use GoabButton instead. Icon displayed after the button text. */\n trailingIcon?: GoabIconType;\n children: ReactNode;\n}\n\nexport function GoALinkButton({\n type = \"primary\",\n children,\n ...rest\n}: GoALinkButtonProps) {\n const _props = transformProps<WCProps>(\n { type, ...rest },\n lowercase\n );\n\n return (\n <goa-link-button {..._props}>\n {children}\n </goa-link-button>\n );\n}\n\nexport default GoALinkButton;\n","import {\n DataAttributes,\n GoabButtonSize,\n GoabButtonType,\n GoabButtonVariant,\n GoabIconType,\n GoabMenuButtonOnActionDetail,\n} from \"@abgov/ui-components-common\";\nimport { ReactNode, type JSX, useRef, useEffect } from \"react\";\nimport { transformProps, kebab } from \"../common/extract-props\";\n\ninterface WCProps {\n text?: string;\n type: GoabButtonType;\n size?: GoabButtonSize;\n variant?: GoabButtonVariant;\n \"max-width\"?: string;\n \"leading-icon\"?: GoabIconType;\n \"aria-label\"?: string;\n testid?: string;\n ref: React.RefObject<HTMLElement | null>;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-menu-button\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabMenuButtonProps extends DataAttributes {\n /** The button label text. When provided, displays as a text button with a dropdown icon. */\n text?: string;\n /** The button style variant. @default \"primary\" */\n type?: GoabButtonType;\n /** Sets the size of the button. @default \"normal\" */\n size?: GoabButtonSize;\n /** Sets the color variant for semantic meaning. @default \"normal\" */\n variant?: GoabButtonVariant;\n /** Maximum width of the dropdown menu. */\n maxWidth?: string;\n /** Icon displayed before the button text. When no text is provided, displays as an icon button. */\n leadingIcon?: GoabIconType;\n /** Sets the aria-label for the icon button in icon-only mode. @default \"Open menu\" */\n ariaLabel?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Callback fired when a menu action is selected. */\n onAction?: (detail: GoabMenuButtonOnActionDetail) => void;\n /** Content rendered inside the menu button, typically GoabMenuAction items. */\n children?: ReactNode;\n}\n\n/** A button with more than one action. */\nexport function GoabMenuButton({\n type = \"primary\",\n testId,\n onAction,\n children,\n ...rest\n}: GoabMenuButtonProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>({ type, testid: testId, ...rest }, kebab);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n if (!onAction) {\n return;\n }\n const current = el.current;\n\n const listener = (e: Event) => {\n const detail = (e as CustomEvent).detail as GoabMenuButtonOnActionDetail;\n onAction?.(detail);\n };\n\n current.addEventListener(\"_action\", listener);\n return () => {\n current.removeEventListener(\"_action\", listener);\n };\n }, [el, onAction]);\n\n return (\n // @ts-expect-error - stable WCProps requires text, but experimental supports icon-only mode\n <goa-menu-button {..._props} version=\"2\" ref={el}>\n {children}\n </goa-menu-button>\n );\n}\n\nexport default GoabMenuButton;\n","import { DataAttributes, GoabIconType } from \"@abgov/ui-components-common\";\nimport type { JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n text: string;\n action: string;\n icon?: GoabIconType;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-menu-action\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabMenuActionProps extends DataAttributes {\n /** @required Display text for the menu action. */\n text: string;\n /** @required Action identifier included in the click event. */\n action: string;\n /** Icon displayed before the text. */\n icon?: GoabIconType;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Individual action item within a menu button. */\nexport function GoabMenuAction(props: GoabMenuActionProps): JSX.Element {\n const _props = transformProps<WCProps>(props, lowercase);\n\n return <goa-menu-action {..._props}></goa-menu-action>;\n}\n\nexport default GoabMenuAction;\n","import { GoabLinkTarget, GoabServiceLevel } from \"@abgov/ui-components-common\";\n\nimport { useEffect, useRef, type JSX } from \"react\";\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-microsite-header\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\ninterface WCProps {\n type: GoabServiceLevel;\n version?: string;\n feedbackurl?: string;\n maxcontentwidth?: string;\n feedbackurltarget?: GoabLinkTarget;\n headerurltarget?: GoabLinkTarget;\n hasfeedbackhandler?: string;\n ref: React.RefObject<HTMLElement | null>;\n testid?: string;\n}\n\nexport interface GoabHeaderProps {\n /** @required The service type which determines the badge style. \"live\" shows official government site text, \"alpha\" and \"beta\" show development stage badges. */\n type: GoabServiceLevel;\n /** App or service version displayed on the right side of the header. */\n version?: string | React.ReactNode;\n /** URL to a feedback page displayed when provided. */\n feedbackUrl?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Maximum width of the content area. @default \"100%\" */\n maxContentWidth?: string;\n /** Sets the target attribute for the feedback URL link. @default \"blank\" */\n feedbackUrlTarget?: GoabLinkTarget;\n /** Sets the target attribute for the header link. @default \"blank\" */\n headerUrlTarget?: GoabLinkTarget;\n /** Callback fired when the feedback link is clicked, enables custom feedback handling. */\n onFeedbackClick?: () => void;\n}\n\n/** Communicate what stage the service is at, connect to Alberta.ca, and gather feedback on your service. */\nexport function GoabMicrositeHeader({\n type,\n version,\n feedbackUrl,\n maxContentWidth,\n feedbackUrlTarget,\n headerUrlTarget,\n testId,\n onFeedbackClick,\n}: GoabHeaderProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n if (!onFeedbackClick) {\n return;\n }\n const current = el.current;\n const listener = () => {\n onFeedbackClick();\n };\n\n current.addEventListener(\"_feedbackClick\", listener);\n return () => {\n current.removeEventListener(\"_feedbackClick\", listener);\n };\n }, [el, onFeedbackClick]);\n\n return (\n <goa-microsite-header\n ref={el}\n type={type}\n version={typeof version === \"string\" ? version : undefined}\n feedbackurl={feedbackUrl}\n testid={testId}\n maxcontentwidth={maxContentWidth}\n feedbackurltarget={feedbackUrlTarget}\n headerurltarget={headerUrlTarget}\n hasfeedbackhandler={onFeedbackClick ? \"true\" : \"false\"}\n >\n {version && typeof version !== \"string\" && <div slot=\"version\">{version}</div>}\n </goa-microsite-header>\n );\n}\n\nexport default GoabMicrositeHeader;\n","import {\n GoabModalCalloutVariant,\n GoabModalRole,\n GoabModalTransition,\n} from \"@abgov/ui-components-common\";\nimport { ReactElement, ReactNode, RefObject, useEffect, useRef, type JSX } from \"react\";\n\ninterface WCProps {\n ref: RefObject<HTMLElement | null>;\n heading?: ReactNode;\n open?: string;\n maxwidth?: string;\n closable: string;\n /**\n * @deprecated The role property is deprecated and will be removed in a future version.\n * The modal will always use role=\"dialog\".\n */\n role?: GoabModalRole;\n transition?: GoabModalTransition;\n calloutvariant?: GoabModalCalloutVariant;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-modal\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabModalProps {\n /** The heading text displayed at the top of the modal. */\n heading?: ReactNode;\n /** Set the max allowed width of the modal. @default \"60ch\" */\n maxWidth?: string;\n /** Content rendered in the modal's actions slot, typically action buttons. */\n actions?: ReactElement<any>;\n /** Callback fired when the modal is closed. When provided, enables the close button and backdrop click-to-close behavior. */\n onClose?: () => void;\n /** Sets the animation transition when opening/closing. 'fast' or 'slow' for animated, 'none' for instant. */\n transition?: GoabModalTransition;\n /** Content rendered inside the modal body. */\n children?: ReactNode;\n /** Controls if the modal is visible or not. */\n open?: boolean;\n /** Sets the context and colour of the callout modal. Required when used as a callout type. */\n calloutVariant?: GoabModalCalloutVariant;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /**\n * @deprecated The role property is deprecated and will be removed in a future version.\n * The modal will always use role=\"dialog\".\n */\n role?: GoabModalRole;\n}\n\n/** An overlay that appears in front of all other content, and requires a user to take an action before continuing. */\nexport function GoabModal({\n heading,\n children,\n maxWidth,\n open,\n actions,\n transition,\n calloutVariant,\n onClose,\n testId,\n}: GoabModalProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n const current = el.current;\n const listener = () => {\n onClose?.();\n };\n\n current.addEventListener(\"_close\", listener);\n return () => {\n current.removeEventListener(\"_close\", listener);\n };\n }, [el, onClose]);\n\n return (\n <goa-modal\n ref={el}\n open={open ? \"true\" : undefined}\n closable={onClose ? \"true\" : \"false\"}\n heading={typeof heading === \"string\" ? heading : undefined}\n maxwidth={maxWidth}\n transition={transition}\n calloutvariant={calloutVariant}\n testid={testId}\n version=\"2\"\n >\n {heading && typeof heading !== \"string\" && <div slot=\"heading\">{heading}</div>}\n {actions && <div slot=\"actions\">{actions}</div>}\n {children}\n </goa-modal>\n );\n}\n\nexport default GoabModal;\n","import {\n GoabAriaLiveType,\n GoabNotificationEmphasis,\n GoabNotificationType,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef } from \"react\";\n\ninterface WCProps {\n ref: React.RefObject<HTMLElement | null>;\n type: GoabNotificationType;\n maxcontentwidth?: string;\n arialive?: GoabAriaLiveType;\n testid?: string;\n emphasis?: GoabNotificationEmphasis;\n compact?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-notification\": WCProps & React.HTMLAttributes<HTMLButtonElement>;\n }\n }\n}\n\nexport interface GoabNotificationProps {\n /** Define the context and colour of the notification. */\n type?: GoabNotificationType;\n /** Indicates how assistive technology should handle updates to the live region. @default \"polite\" */\n ariaLive?: GoabAriaLiveType;\n /** Maximum width of the content area. @default \"100%\" */\n maxContentWidth?: string;\n /** Sets the visual prominence. 'high' for full background, 'low' for a bordered style. @default \"high\" */\n emphasis?: GoabNotificationEmphasis;\n /** When true, reduces padding for a more compact notification. */\n compact?: boolean;\n /** Content rendered inside the notification. */\n children?: React.ReactNode;\n /** Callback fired when the notification is dismissed. */\n onDismiss?: () => void;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Display important page level information or notifications. */\nexport const GoabNotification = ({\n type = \"information\",\n emphasis = \"high\",\n compact,\n ariaLive,\n maxContentWidth,\n children,\n testId,\n onDismiss,\n}: GoabNotificationProps) => {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n const current = el.current;\n const listener = () => {\n onDismiss?.();\n };\n\n current.addEventListener(\"_dismiss\", listener);\n return () => {\n current.removeEventListener(\"_dismiss\", listener);\n };\n }, [el, onDismiss]);\n\n return (\n <goa-notification\n ref={el}\n type={type}\n testid={testId}\n maxcontentwidth={maxContentWidth}\n arialive={ariaLive}\n emphasis={emphasis}\n compact={compact ? \"true\" : undefined}\n version=\"2\"\n >\n {children}\n </goa-notification>\n );\n};\n\nexport default GoabNotification;\n","import { ReactNode, type JSX } from \"react\";\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-one-column-layout\": React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabPageProps {\n /** Content rendered inside the one-column layout. */\n children?: ReactNode;\n}\n\nexport type PageProps = GoabPageProps;\n\n/** Organizes page content in a single responsive column. */\nexport function GoabOneColumnLayout(props: GoabPageProps): JSX.Element {\n return <goa-one-column-layout>{props.children}</goa-one-column-layout>;\n}\n\nexport default GoabOneColumnLayout;\n","import { GoabPageBlockSize } from \"@abgov/ui-components-common\";\nimport { ReactNode, type JSX } from \"react\";\n\ninterface WCProps {\n width?: GoabPageBlockSize;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-page-block\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabPageBlockProps {\n /** Maximum width of the content area. Use \"full\" for 100% width or a CSS dimension like \"1200px\". @default \"full\" */\n width?: GoabPageBlockSize;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the page block. */\n children?: ReactNode;\n}\n\n// legacy name\nexport type PageBlockProps = GoabPageBlockProps;\n\n/** Full-width section with optional background. */\nexport function GoabPageBlock(props: PageBlockProps): JSX.Element {\n return (\n <goa-page-block width={props.width} testid={props.testId}>\n {props.children}\n </goa-page-block>\n );\n}\n","import { Margins } from \"@abgov/ui-components-common\";\nimport { ReactNode, type JSX } from \"react\";\n\ninterface WCProps extends Margins {\n current?: number;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-pages\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabPagesProps extends Margins {\n /** The currently visible page (1-based index). @default 1 */\n current?: number;\n /** Page content to show or hide based on the current page index. */\n children?: ReactNode;\n}\n\n/** Container for paginated content views. */\nexport function GoabPages(props: GoabPagesProps): JSX.Element {\n return (\n <goa-pages\n current={props.current}\n ml={props.ml}\n mr={props.mr}\n mt={props.mt}\n mb={props.mb}\n >\n {props.children}\n </goa-pages>\n );\n}\n\nexport default GoabPages;\n","import { GoabPaginationOnChangeDetail, Margins } from \"@abgov/ui-components-common\";\nimport { useEffect, useRef } from \"react\";\n\ninterface WCProps extends Margins {\n ref?: React.RefObject<HTMLElement | null>;\n itemcount: number;\n perpagecount?: number;\n pagenumber: number;\n variant?: \"all\" | \"links-only\";\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-pagination\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabPaginationProps extends Margins {\n /** @required Total number of data items within all pages. */\n itemCount: number;\n /** @required The current page being viewed (non-zero based). */\n pageNumber: number;\n /** @required Callback fired when the user navigates to a different page. */\n onChange: (detail: GoabPaginationOnChangeDetail) => void;\n /** Number of data items shown per page. @default 10 */\n perPageCount?: number;\n /** Controls which nav controls are visible. @default \"all\" */\n variant?: \"all\" | \"links-only\";\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n// legacy\nexport type PaginationProps = GoabPaginationProps;\n\n/** Help users navigation between multiple pages or screens as part of a set. */\nexport function GoabPagination({ onChange, ...props }: GoabPaginationProps) {\n const ref = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n const current = ref.current;\n const changeListener = (e: Event) => {\n const detail = (e as CustomEvent<GoabPaginationOnChangeDetail>).detail;\n onChange(detail);\n };\n\n current.addEventListener(\"_change\", changeListener);\n return () => {\n current.removeEventListener(\"_change\", changeListener);\n };\n }, [ref, onChange]);\n\n return (\n <goa-pagination\n ref={ref}\n itemcount={props.itemCount}\n perpagecount={props.perPageCount}\n pagenumber={props.pageNumber}\n variant={props.variant}\n mt={props.mt}\n mb={props.mb}\n ml={props.ml}\n mr={props.mr}\n testid={props.testId}\n version=\"2\"\n />\n );\n}\n\nexport default GoabPagination;\n","import {\n DataAttributes,\n GoabPopoverPosition,\n Margins,\n} from \"@abgov/ui-components-common\";\nimport { ReactNode, type JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n maxwidth?: string;\n minwidth?: string;\n padded?: string;\n position?: GoabPopoverPosition;\n relative?: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-popover\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabPopoverProps extends Margins, DataAttributes {\n /** Content rendered inside the popover body. */\n children: ReactNode;\n /** @required Sets the element used as the popover trigger. */\n target: ReactNode;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the maximum width of the popover container. @default \"320px\" */\n maxWidth?: string;\n /** Sets the minimum width of the popover container. */\n minWidth?: string;\n /** Sets if the popover has padding. Use false when content needs to be flush with boundaries. @default true */\n padded?: boolean;\n /** Provides control to where the popover content is positioned. @default \"auto\" */\n position?: GoabPopoverPosition;\n /** @deprecated This property has no effect and will be removed in a future version. */\n relative?: boolean;\n}\n\n/** A small overlay that opens on demand, used in other components. */\nexport function GoabPopover({\n target,\n padded,\n relative,\n children,\n ...rest\n}: GoabPopoverProps): JSX.Element {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-popover\n padded={typeof padded === \"undefined\" ? undefined : padded ? \"true\" : \"false\"}\n relative={relative ? \"true\" : undefined}\n {..._props}\n >\n {children}\n {target && <div slot=\"target\">{target}</div>}\n </goa-popover>\n );\n}\n\nexport default GoabPopover;\n","import { ReactNode, useEffect, useRef, type JSX } from \"react\";\n\ninterface WCProps {\n open?: boolean;\n heading?: string;\n width?: string;\n testid?: string;\n version?: string;\n ref: React.RefObject<HTMLElement | null>;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-push-drawer\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabPushDrawerProps {\n /** @required Content rendered inside the push drawer body. */\n children: ReactNode;\n /** @required Callback fired when the push drawer is closed. */\n onClose: () => void;\n /** Controls the open/closed state of the push drawer. */\n open?: boolean;\n /** Sets the heading text or custom heading content. */\n heading?: string | ReactNode;\n /** Sets the width of the push drawer panel. @default \"492px\" */\n width?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered in the actions slot, typically action buttons. */\n actions?: ReactNode;\n}\n\n/** A panel that pushes the main page content aside on desktop, falling back to an overlay drawer on smaller screens. */\nexport function GoabPushDrawer({\n open,\n heading,\n width,\n testId,\n actions,\n children,\n onClose,\n}: GoabPushDrawerProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el?.current || !onClose) {\n return;\n }\n el.current?.addEventListener(\"_close\", onClose);\n return () => {\n el.current?.removeEventListener(\"_close\", onClose);\n };\n }, [el, onClose]);\n\n return (\n <goa-push-drawer\n ref={el}\n open={open ? true : undefined}\n heading={typeof heading === \"string\" ? heading : undefined}\n width={width}\n testid={testId}\n version=\"2\"\n >\n {heading && typeof heading !== \"string\" && <div slot=\"heading\">{heading}</div>}\n {actions && <div slot=\"actions\">{actions}</div>}\n {children}\n </goa-push-drawer>\n );\n}\n\nexport default GoabPushDrawer;\n","import { Margins } from \"@abgov/ui-components-common\";\n\nimport type { JSX } from \"react\";\n\ninterface WCProps extends Margins {\n name?: string;\n value?: string;\n description?: string | React.ReactNode;\n reveal?: React.ReactNode;\n revealarialabel?: string;\n label?: string;\n maxwidth?: string;\n disabled?: string;\n checked?: string;\n error?: string;\n arialabel?: string;\n compact?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-radio-item\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabRadioItemProps extends Margins {\n /** The value of this radio option. Will be emitted when selected. */\n value?: string;\n /** The display label for this radio option. Falls back to value if not provided. */\n label?: string;\n /** The name of the radio group. Inherited from the parent RadioGroup if not set. */\n name?: string;\n /** Additional description text displayed below the label. */\n description?: string | React.ReactNode;\n /** Content revealed below the radio option when it is selected. */\n reveal?: React.ReactNode;\n /** Text announced by screen readers when the reveal content is displayed. */\n revealAriaLabel?: string;\n /** Sets the maximum width of this radio item. */\n maxWidth?: string;\n /** Disables this radio option. Also disabled if the parent RadioGroup is disabled. */\n disabled?: boolean;\n /** @internal Sets this radio option as checked/selected. */\n checked?: boolean;\n /** Shows an error state on this radio option. */\n error?: boolean;\n /** Reduces spacing for dense layouts. */\n compact?: boolean;\n /** Additional content rendered inside the radio item. */\n children?: React.ReactNode;\n /** Defines how this option will be announced by screen readers. */\n ariaLabel?: string;\n}\n\n/** Individual radio option within a group. */\nexport function GoabRadioItem({\n name,\n label,\n value,\n description,\n reveal,\n revealAriaLabel,\n maxWidth,\n disabled,\n checked,\n error,\n compact,\n ariaLabel,\n children,\n mt,\n mr,\n mb,\n ml,\n}: GoabRadioItemProps): JSX.Element {\n return (\n <goa-radio-item\n name={name}\n label={label}\n value={value}\n description={typeof description === \"string\" ? description : undefined}\n maxwidth={maxWidth}\n error={error ? \"true\" : undefined}\n disabled={disabled ? \"true\" : undefined}\n checked={checked ? \"true\" : undefined}\n compact={compact ? \"true\" : undefined}\n arialabel={ariaLabel}\n revealarialabel={revealAriaLabel}\n mt={mt}\n mr={mr}\n mb={mb}\n ml={ml}\n version=\"2\"\n >\n {description && typeof description !== \"string\" && (\n <div slot=\"description\">{description}</div>\n )}\n {reveal && <div slot=\"reveal\">{reveal}</div>}\n {children}\n </goa-radio-item>\n );\n}\n\nexport default GoabRadioItem;\n","import { useEffect, useRef, type JSX } from \"react\";\nimport {\n GoabRadioGroupOnChangeDetail,\n GoabRadioGroupOrientation,\n GoabRadioGroupSize,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\nexport * from \"./radio\";\n\ninterface WCProps extends Margins {\n name: string;\n value?: string;\n id?: string;\n orientation?: GoabRadioGroupOrientation;\n disabled?: string;\n error?: string;\n arialabel?: string;\n testid?: string;\n size?: GoabRadioGroupSize;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-radio-group\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabRadioGroupProps extends Margins, DataAttributes {\n /** @required The name for the radio group. Used for accessibility and change events. */\n name: string;\n /** The currently selected value in the radio group. */\n value?: string;\n /** The identifier for the radio group element. */\n id?: string;\n /** Disables all radio items in the group. */\n disabled?: boolean;\n /** Sets the layout direction. 'vertical' stacks items, 'horizontal' places them in a row. @default \"vertical\" */\n orientation?: GoabRadioGroupOrientation;\n /** Sets the size of all radio items. 'compact' reduces spacing for dense layouts. @default \"default\" */\n size?: GoabRadioGroupSize;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Shows an error state on all radio items in the group. */\n error?: boolean;\n /** Defines how the radio group will be announced by screen readers. */\n ariaLabel?: string;\n /** Radio items to render inside the group. */\n children?: React.ReactNode;\n /** Callback fired when the selected radio item changes. */\n onChange?: (detail: GoabRadioGroupOnChangeDetail) => void;\n}\n\n/** Allow users to select one option from a set. */\nexport function GoabRadioGroup({\n disabled,\n error,\n onChange,\n name,\n children,\n size = \"default\",\n ...rest\n}: GoabRadioGroupProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>({ size, ...rest }, lowercase);\n\n useEffect(() => {\n if (!el.current) return;\n\n const listener = (e: Event) => {\n const detail = (e as CustomEvent<GoabRadioGroupOnChangeDetail>).detail;\n onChange?.({ ...detail, event: e });\n };\n\n const currentEl = el.current;\n if (onChange) {\n currentEl.addEventListener(\"_change\", listener);\n }\n\n return () => {\n if (onChange) {\n currentEl.removeEventListener(\"_change\", listener);\n }\n };\n }, [name, onChange]);\n\n return (\n <goa-radio-group\n ref={el}\n {..._props}\n name={name}\n disabled={disabled ? \"true\" : undefined}\n error={error ? \"true\" : undefined}\n version=\"2\"\n >\n {children}\n </goa-radio-group>\n );\n}\n\nexport default GoabRadioGroup;\n","import { ReactNode, type JSX } from \"react\";\nimport { GoabIconType, Margins } from \"@abgov/ui-components-common\";\n\ninterface WCProps extends Margins {\n heading: string;\n icon?: GoabIconType;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-side-menu-group\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabSideMenuGroupProps extends Margins {\n /** @required The heading text for the menu group. */\n heading: string;\n /** Icon displayed alongside the heading. */\n icon?: GoabIconType;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Navigation links rendered inside the menu group. */\n children?: ReactNode;\n}\n\n/** Group of related side menu items. */\nexport function GoabSideMenuGroup({\n heading,\n icon,\n testId,\n children,\n mt,\n mr,\n mb,\n ml,\n}: GoabSideMenuGroupProps): JSX.Element {\n return (\n <goa-side-menu-group\n heading={heading}\n icon={icon}\n testid={testId}\n mt={mt}\n mr={mr}\n mb={mb}\n ml={ml}\n version=\"2\"\n >\n {children}\n </goa-side-menu-group>\n );\n}\n\nexport default GoabSideMenuGroup;\n","import { GoabIconType } from \"@abgov/ui-components-common\";\nimport { ReactNode } from \"react\";\n\ninterface WCProps {\n testid?: string;\n icon?: GoabIconType;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-side-menu-heading\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabSideMenuHeadingProps {\n /** Icon displayed before the heading text. */\n icon?: GoabIconType;\n /** Content rendered in the meta slot, displayed alongside the heading. */\n meta?: ReactNode;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** The heading text or content rendered inside the side menu heading. */\n children?: ReactNode;\n}\n\n/** Section heading in side menu. */\nexport function GoabSideMenuHeading({\n meta,\n testId,\n icon,\n children,\n}: GoabSideMenuHeadingProps) {\n return (\n <goa-side-menu-heading icon={icon} testid={testId} version=\"2\">\n {children}\n {meta && <span slot=\"meta\">{meta}</span>}\n </goa-side-menu-heading>\n );\n}\n\nexport default GoabSideMenuHeading;\n","import { ReactNode, type JSX } from \"react\";\n\ninterface WCProps {\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-side-menu\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabSideMenuProps {\n /** @required Navigation links and groups rendered inside the side menu. */\n children: ReactNode;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** A side navigation that helps the user navigate between pages. */\nexport function GoabSideMenu({ testId, children }: GoabSideMenuProps): JSX.Element {\n return (\n <goa-side-menu testid={testId} version=\"2\">\n {children}\n </goa-side-menu>\n );\n}\n\nexport default GoabSideMenu;\n","import { GoabSkeletonSize, GoabSkeletonType, Margins } from \"@abgov/ui-components-common\";\n\ninterface WCProps extends Margins {\n maxwidth?: string;\n size?: GoabSkeletonSize;\n linecount?: number;\n type: GoabSkeletonType;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-skeleton\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabSkeletonProps extends Margins {\n /** @required Sets the skeleton shape to represent your content. */\n type: GoabSkeletonType;\n /** Sets the maximum width. Currently only used in card skeleton type. @default \"300px\" */\n maxWidth?: string;\n /** Size can affect either the height, width or both for different skeleton types. @default \"1\" */\n size?: GoabSkeletonSize;\n /** Used within components that contain multiple lines. Currently only used in card skeleton type. @default 3 */\n lineCount?: number;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n// legacy name\nexport type SkeletonProps = GoabSkeletonProps;\n\n/** Provide visual feedback to users while loading a content heavy page or page element. */\nexport const GoabSkeleton = ({\n maxWidth,\n size,\n lineCount,\n type,\n testId,\n mt,\n mr,\n mb,\n ml,\n}: GoabSkeletonProps) => {\n return (\n <goa-skeleton\n maxwidth={maxWidth}\n linecount={lineCount}\n type={type}\n size={size}\n mt={mt}\n mr={mr}\n mb={mb}\n ml={ml}\n testid={testId}\n />\n );\n};\n\nexport default GoabSkeleton;\n","import {\n GoabSpacerHorizontalSpacing,\n GoabSpacerVerticalSpacing,\n} from \"@abgov/ui-components-common\";\n\n/* eslint-disable-next-line */\ninterface WCProps {\n hspacing?: GoabSpacerHorizontalSpacing;\n vspacing?: GoabSpacerVerticalSpacing;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-spacer\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabSpacerProps {\n /** Horizontal spacing. @default \"none\" */\n hSpacing?: GoabSpacerHorizontalSpacing;\n /** Vertical spacing. @default \"none\" */\n vSpacing?: GoabSpacerVerticalSpacing;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Negative area between the components and the interface. */\nexport function GoabSpacer(props: GoabSpacerProps) {\n return (\n <goa-spacer\n hspacing={props.hSpacing}\n vspacing={props.vSpacing}\n testid={props.testId}\n />\n );\n}\n\nexport default GoabSpacer;\n","import { GoabSpinnerSize, GoabSpinnerType } from \"@abgov/ui-components-common\";\n\nimport type { JSX } from \"react\";\n\ninterface WCProps {\n size: GoabSpinnerSize;\n type: GoabSpinnerType;\n invert?: string;\n progress?: number;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-spinner\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabSpinnerProps {\n /** @required Sets the spinner animation type. */\n type: GoabSpinnerType;\n /** @required Sets the size of the spinner. */\n size: GoabSpinnerSize;\n /** When true, inverts colors for use on dark backgrounds. */\n invert?: boolean;\n /** Progress value (0-100). When set to 0 or greater, shows a progress spinner instead of infinite. */\n progress?: number;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\nexport type SpinnerProps = GoabSpinnerProps;\n\n/** Loading indicator for async operations. */\nexport function GoabSpinner({\n type,\n size,\n progress,\n invert,\n testId,\n}: GoabSpinnerProps): JSX.Element {\n return (\n <goa-spinner\n type={type}\n size={size}\n progress={progress}\n invert={invert ? \"true\" : undefined}\n testid={testId}\n />\n );\n}\n\nexport default GoabSpinner;\n","import {\n GoabTableOnSortDetail,\n GoabTableOnMultiSortDetail,\n GoabTableSortMode,\n GoabTableVariant,\n Margins,\n} from \"@abgov/ui-components-common\";\nimport { ReactNode, useEffect, useRef } from \"react\";\n\ninterface WCProps extends Margins {\n ref?: React.RefObject<HTMLElement | null>;\n width?: string;\n variant?: GoabTableVariant;\n \"sort-mode\"?: GoabTableSortMode;\n testid?: string;\n striped?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-table\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabTableProps extends Margins {\n /** Width of the table. By default it will fit the enclosed content. */\n width?: string;\n /** Callback fired when a single-column sort header is clicked. */\n onSort?: (detail: GoabTableOnSortDetail) => void;\n /** Callback fired when multi-column sorting changes. */\n onMultiSort?: (detail: GoabTableOnMultiSortDetail) => void;\n /** Sort mode: \"single\" allows one column, \"multi\" allows up to 2 columns. @default \"single\" */\n sortMode?: GoabTableSortMode;\n // stickyHeader intentionally not exposed in wrapper yet.\n /** A relaxed variant of the table with more vertical padding for the cells. @default \"normal\" */\n variant?: GoabTableVariant;\n /** When true, alternates row background colors for improved readability. */\n striped?: boolean;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the table (table rows, headers, etc.). */\n children?: ReactNode;\n}\n\n// legacy name\nexport type TableProps = GoabTableProps;\n\n/** A set of structured data that is easy for a user to scan, examine, and compare. */\nexport function GoabTable({ onSort, onMultiSort, sortMode, ...props }: GoabTableProps) {\n const ref = useRef<HTMLTableElement>(null);\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n const current = ref.current;\n const sortListener = (e: unknown) => {\n const detail = (e as CustomEvent<GoabTableOnSortDetail>).detail;\n onSort?.(detail);\n };\n const multiSortListener = (e: unknown) => {\n const detail = (e as CustomEvent<GoabTableOnMultiSortDetail>).detail;\n onMultiSort?.(detail);\n };\n\n current.addEventListener(\"_sort\", sortListener);\n current.addEventListener(\"_multisort\", multiSortListener);\n return () => {\n current.removeEventListener(\"_sort\", sortListener);\n current.removeEventListener(\"_multisort\", multiSortListener);\n };\n }, [ref, onSort, onMultiSort]);\n\n return (\n <goa-table\n ref={ref}\n width={props.width}\n // TODO: Enable this later if needed\n // stickyheader={props.stickyHeader ? \"true\" : undefined}\n variant={props.variant}\n sort-mode={sortMode}\n striped={props.striped ? \"true\" : undefined}\n testid={props.testId}\n mt={props.mt}\n mb={props.mb}\n ml={props.ml}\n mr={props.mr}\n version=\"2\"\n >\n <table style={{ width: \"100%\" }}>{props.children}</table>\n </goa-table>\n );\n}\n\nexport default GoabTable;\n","import {\n DataAttributes,\n GoabTableSortDirection,\n GoabTableSortOrder,\n} from \"@abgov/ui-components-common\";\n\nimport type { JSX } from \"react\";\n\ninterface WCProps {\n name?: string;\n direction?: GoabTableSortDirection;\n \"sort-order\"?: GoabTableSortOrder;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-table-sort-header\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabTableSortProps extends DataAttributes {\n /** Column name identifier for sorting. */\n name?: string;\n /** Sets the sort direction indicator. @default \"none\" */\n direction?: GoabTableSortDirection;\n /** Sort order number for multi-column sort display. Used for displaying priority numbers when multiple columns are sorted. */\n sortOrder?: GoabTableSortOrder;\n /** Content rendered inside the sort header button (typically the column heading text). */\n children?: React.ReactNode;\n}\n\n/** A set of structured data that is easy for a user to scan, examine, and compare. */\nexport function GoabTableSortHeader({\n name,\n direction = \"none\",\n sortOrder,\n children,\n ...rest\n}: GoabTableSortProps): JSX.Element {\n return (\n <goa-table-sort-header\n name={name}\n direction={direction}\n sort-order={sortOrder}\n {...rest}\n >\n {children}\n </goa-table-sort-header>\n );\n}\n\nexport default GoabTableSortHeader;\n","import React, { useEffect, useRef, type JSX } from \"react\";\nimport {\n GoabTabsOnChangeDetail,\n GoabTabsOrientation,\n GoabTabsVariant,\n GoabTabsNavigation,\n} from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n initialtab?: number;\n ref: React.RefObject<HTMLElement | null>;\n onChange?: (tab: number) => void;\n testid?: string;\n variant?: GoabTabsVariant;\n navigation?: GoabTabsNavigation;\n version?: string;\n orientation?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-tabs\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabTabsProps {\n /** The initially active tab (1-based index). If not set, the first tab is active. */\n initialTab?: number;\n /** Content rendered inside the tabs container, typically GoabTab components. */\n children?: React.ReactNode;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Visual style variant. \"segmented\" shows pill-style tabs with animation. @default \"default\" */\n variant?: GoabTabsVariant;\n /** Tab layout orientation. \"auto\" stacks vertically on mobile, \"horizontal\" keeps horizontal on all screen sizes. @default \"auto\" */\n orientation?: GoabTabsOrientation;\n /** Controls URL navigation mode on tab change. @default \"hash\" */\n navigation?: GoabTabsNavigation;\n /** Callback fired when the active tab changes. */\n onChange?: (detail: GoabTabsOnChangeDetail) => void;\n}\n\n/** Let users navigate between related sections of content, displaying one section at a time. */\nexport function GoabTabs({\n initialTab,\n children,\n testId,\n onChange,\n variant,\n orientation,\n navigation,\n}: GoabTabsProps): JSX.Element {\n const ref = useRef<HTMLElement>(null);\n\n useEffect(() => {\n const element = ref.current;\n if (element && onChange) {\n const handler = (event: Event) => {\n const detail = (event as CustomEvent<GoabTabsOnChangeDetail>).detail;\n onChange(detail);\n };\n element.addEventListener(\"_change\", handler);\n return () => {\n element.removeEventListener(\"_change\", handler);\n };\n }\n }, [onChange]);\n\n return (\n <goa-tabs\n ref={ref}\n initialtab={initialTab}\n testid={testId}\n variant={variant}\n version=\"2\"\n orientation={orientation}\n navigation={navigation}\n >\n {children}\n </goa-tabs>\n );\n}\n\nexport default GoabTabs;\n","import type { JSX } from \"react\";\n\ninterface WCProps {\n heading?: string | React.ReactNode;\n disabled?: string;\n slug?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-tab\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabTabItemProps {\n /** The text label for this tab. Can also pass React nodes for custom heading content. */\n heading?: string | React.ReactNode;\n /** When true, disables the tab so it cannot be selected. */\n disabled?: boolean;\n /** Content rendered inside the tab panel. */\n children?: React.ReactNode;\n /** URL-friendly identifier for the tab, used for hash-based navigation. */\n slug?: string;\n}\n\n/** Individual tab within a tabs component. */\nexport function GoabTab({\n heading,\n disabled,\n slug,\n children,\n}: GoabTabItemProps): JSX.Element {\n return (\n <goa-tab\n slug={slug}\n disabled={disabled ? \"true\" : undefined}\n heading={typeof heading === \"string\" ? heading : undefined}\n >\n {typeof heading !== \"string\" && <span slot=\"heading\">{heading}</span>}\n {children}\n </goa-tab>\n );\n}\n","import React, { useRef } from \"react\";\nimport { transformProps, kebab } from \"../common/extract-props\";\n\ntype SnackbarVerticalPosition = \"top\" | \"bottom\";\ntype SnackbarHorizontalPosition = \"left\" | \"center\" | \"right\";\n\ninterface WCProps {\n \"vertical-position\"?: SnackbarVerticalPosition;\n \"horizontal-position\"?: SnackbarHorizontalPosition;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-temp-notification-ctrl\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabTemporaryNotificationCtrlProps {\n /** Vertical position of the notification container. @default \"bottom\" */\n verticalPosition?: SnackbarVerticalPosition;\n /** Horizontal position of the notification container. @default \"center\" */\n horizontalPosition?: SnackbarHorizontalPosition;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** A notification that appears at the bottom of the screen. */\nexport const GoabTemporaryNotificationCtrl = ({\n verticalPosition = \"bottom\",\n horizontalPosition = \"center\",\n testId,\n ...rest\n}: GoabTemporaryNotificationCtrlProps) => {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(\n {\n \"vertical-position\": verticalPosition,\n \"horizontal-position\": horizontalPosition,\n ...rest,\n },\n kebab,\n );\n\n return <goa-temp-notification-ctrl ref={el} {..._props} testid={testId} />;\n};\n\nexport default GoabTemporaryNotificationCtrl;\n","import { ReactNode, type JSX } from \"react\";\nimport {\n GoabTextMaxWidth,\n GoabTextHeadingElement,\n GoabTextTextElement,\n GoabTextSize,\n GoabTextColor,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n as?: GoabTextTextElement | GoabTextHeadingElement;\n size?: GoabTextSize;\n maxwidth?: GoabTextMaxWidth;\n color?: GoabTextColor;\n id?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-text\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\ninterface GoATextProps extends Margins, DataAttributes {\n /** Content rendered inside the text element. */\n children: ReactNode;\n /** @deprecated Please use 'tag' property instead */\n as?: GoabTextTextElement | GoabTextHeadingElement;\n /** The HTML element to render. Use semantic elements like 'h1'-'h6' for headings. */\n tag?: GoabTextTextElement | GoabTextHeadingElement;\n /** Overrides the text size. */\n size?: GoabTextSize;\n /** Sets the max width. @default \"65ch\" */\n maxWidth?: GoabTextMaxWidth;\n /** Sets the text colour. @default \"primary\" */\n color?: GoabTextColor;\n /** Sets the id attribute on the element. */\n id?: string;\n}\n\n/** Provides consistent sizing, spacing, and colour to written content. */\nexport function GoabText({ as, tag, children, ...rest }: GoATextProps): JSX.Element {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-text as={tag || as} {..._props}>\n {children}\n </goa-text>\n );\n}\n\nexport default GoabText;\n","import {\n GoabTextAreaCountBy,\n GoabTextAreaOnChangeDetail,\n GoabTextAreaOnKeyPressDetail,\n GoabTextAreaOnBlurDetail,\n GoabTextAreaSize,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef, type JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n name: string;\n value?: string;\n placeholder?: string;\n rows?: number;\n error?: string;\n readOnly?: string;\n disabled?: string;\n width?: string;\n maxwidth?: string;\n arialabel?: string;\n countby?: GoabTextAreaCountBy;\n maxcount?: number;\n autocomplete?: string;\n testid?: string;\n size?: GoabTextAreaSize;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-textarea\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.Ref<HTMLTextAreaElement>;\n };\n }\n }\n}\n\nexport interface GoabTextAreaProps extends Margins, DataAttributes {\n /** @required Name of the input value that is received in the change event. */\n name: string;\n /** Bound to the current value of the textarea. */\n value?: string;\n /** Sets the id attribute on the textarea element. */\n id?: string;\n /** Text displayed within the textarea when no value is set. */\n placeholder?: string;\n /** Sets the number of visible text rows. @default 3 */\n rows?: number;\n /** Sets the input to an error state. */\n error?: boolean;\n /** Sets the input to a read only state. */\n readOnly?: boolean;\n /** Sets the input to a disabled state. */\n disabled?: boolean;\n /** Sets the width of the text area. @default \"100%\" */\n width?: string;\n /** Sets the maximum width of the text area. @default \"60ch\" */\n maxWidth?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Defines how the text will be translated for the screen reader. If not specified it will fall back to the name. */\n ariaLabel?: string;\n /** Counting interval for characters or words, specifying whether to count every character or word. */\n countBy?: GoabTextAreaCountBy;\n /** Maximum number of characters or words allowed. */\n maxCount?: number;\n /** Specifies the autocomplete attribute for the textarea input. */\n autoComplete?: string;\n /** Sets the visual size variant of the text area. */\n size?: GoabTextAreaSize;\n /** Callback fired when the value of the textarea changes. */\n onChange?: (event: GoabTextAreaOnChangeDetail) => void;\n /** Callback fired when a key is pressed within the textarea. */\n onKeyPress?: (event: GoabTextAreaOnKeyPressDetail) => void;\n /** Callback fired when the textarea loses focus. */\n onBlur?: (event: GoabTextAreaOnBlurDetail) => void;\n}\n\n/** A multi-line field where users can input and edit text. */\nexport function GoabTextArea({\n readOnly,\n disabled,\n error,\n onChange,\n onKeyPress,\n onBlur,\n ...rest\n}: GoabTextAreaProps): JSX.Element {\n const el = useRef<HTMLTextAreaElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n const current = el.current;\n\n const changeListener: EventListener = (e: Event) => {\n const detail = (e as CustomEvent<GoabTextAreaOnChangeDetail>).detail;\n onChange?.({ ...detail, event: e });\n };\n\n const keypressListener = (e: unknown) => {\n const detail = (e as CustomEvent<GoabTextAreaOnKeyPressDetail>).detail;\n onKeyPress?.({ ...detail, event: e as Event });\n };\n\n const blurListener = (e: unknown) => {\n const detail = (e as CustomEvent<GoabTextAreaOnBlurDetail>).detail;\n onBlur?.({ ...detail, event: e as Event });\n };\n\n current.addEventListener(\"_change\", changeListener);\n current.addEventListener(\"_keyPress\", keypressListener);\n current.addEventListener(\"_blur\", blurListener);\n\n return () => {\n current.removeEventListener(\"_change\", changeListener);\n current.removeEventListener(\"_keyPress\", keypressListener);\n current.removeEventListener(\"_blur\", blurListener);\n };\n }, [el, onChange, onKeyPress, onBlur]);\n\n return (\n <goa-textarea\n ref={el}\n readOnly={readOnly ? \"true\" : undefined}\n disabled={disabled ? \"true\" : undefined}\n error={error ? \"true\" : undefined}\n version=\"2\"\n {..._props}\n ></goa-textarea>\n );\n}\n\nexport default GoabTextArea;\n","import { ReactNode } from \"react\";\n\ninterface WCProps {\n leftcolumnwidth?: string;\n maxcontentwidth?: string;\n rightcolumnwidth?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-three-column-layout\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabThreeColumnLayoutProps {\n /** Main content rendered in the center column. */\n children: ReactNode;\n /** Sets the width of the left column. */\n leftColumnWidth?: string;\n /** Sets the width of the right column. */\n rightColumnWidth?: string;\n /** Sets the maximum width of the content area. */\n maxContentWidth?: string;\n /** Content rendered in the page header slot. */\n header?: ReactNode;\n /** Content rendered in the page footer slot. */\n footer?: ReactNode;\n /** Content rendered in the navigation slot. */\n nav?: ReactNode;\n /** @deprecated Use sideMenu instead. Content rendered in the side menu slot. */\n sidebar?: ReactNode;\n /** Content rendered in the side menu slot. */\n sideMenu?: ReactNode;\n}\n\n/** Organizes page content in three responsive columns. */\nexport function GoabThreeColumnLayout(props: GoabThreeColumnLayoutProps) {\n return (\n <goa-three-column-layout\n leftcolumnwidth={props.leftColumnWidth}\n rightcolumnwidth={props.rightColumnWidth}\n maxcontentwidth={props.maxContentWidth}\n >\n {props.header && <div slot=\"header\">{props.header}</div>}\n {props.nav && <div slot=\"nav\">{props.nav}</div>}\n {props.sidebar && <div slot=\"side-menu\">{props.sidebar}</div>}\n {props.sideMenu && <div slot=\"side-menu\">{props.sideMenu}</div>}\n {props.children}\n {props.footer && <div slot=\"footer\">{props.footer}</div>}\n </goa-three-column-layout>\n );\n}\n\nexport default GoabThreeColumnLayout;\n","import {\n GoabTooltipHorizontalAlignment,\n GoabTooltipPosition,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { ReactNode, type JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\n/* eslint-disable-next-line */\ninterface WCProps extends Margins {\n position?: GoabTooltipPosition;\n content?: string;\n testid?: string;\n halign?: GoabTooltipHorizontalAlignment;\n maxwidth?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-tooltip\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabTooltipProps extends Margins, DataAttributes {\n /** Position of the tooltip with respect to the child element. @default \"top\" */\n position?: GoabTooltipPosition;\n /** The content of the tooltip. Accepts plain text or rich content. */\n content?: string | ReactNode;\n /** Horizontal alignment of the tooltip relative to the child element. @default \"center\" */\n hAlign?: GoabTooltipHorizontalAlignment;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the maximum width of the tooltip. Must use 'px' unit. */\n maxWidth?: string;\n /** The element that triggers the tooltip on hover or focus. */\n children?: ReactNode;\n}\n\n/** A small popover that displays more information about an item. */\nexport function GoabTooltip({\n content,\n children,\n ...rest\n}: GoabTooltipProps): JSX.Element {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n const isStringContent = typeof content === \"string\";\n\n return (\n <goa-tooltip content={isStringContent ? (content as string) : undefined} {..._props}>\n {!isStringContent && content && <div slot=\"content\">{content}</div>}\n {children}\n </goa-tooltip>\n );\n}\n\nexport default GoabTooltip;\n","import { ReactNode } from \"react\";\n\ninterface WCProps {\n navcolumnwidth?: string;\n maxcontentwidth?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-two-column-layout\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabTwoColumnLayoutProps {\n /** Content rendered in the page header slot. */\n header: ReactNode;\n /** Content rendered in the page footer slot. */\n footer: ReactNode;\n /** Content rendered in the navigation column slot. */\n nav: ReactNode;\n /** @required Main content rendered in the body of the layout. */\n children: ReactNode;\n /** Sets the width of the navigation column. */\n navColumnWidth?: string;\n /** Sets the maximum width of the content area. */\n maxContentWidth?: string;\n}\n\n/** Organizes page content in two responsive columns. */\nexport function GoabTwoColumnLayout(props: GoabTwoColumnLayoutProps) {\n return (\n <goa-two-column-layout\n navcolumnwidth={props.navColumnWidth}\n maxcontentwidth={props.maxContentWidth}\n >\n {props.header && <div slot=\"header\">{props.header}</div>}\n {props.nav && <div slot=\"nav\">{props.nav}</div>}\n {props.children}\n {props.footer && <div slot=\"footer\">{props.footer}</div>}\n </goa-two-column-layout>\n );\n}\n\nexport default GoabTwoColumnLayout;\n","import { useEffect, useRef } from \"react\";\nimport {\n DataAttributes,\n GoabFilterChipTheme,\n GoabIconType,\n Margins,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n icontheme: GoabFilterChipTheme;\n error?: string;\n content: string;\n secondarytext?: string;\n leadingicon?: GoabIconType;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-filter-chip\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabFilterChipProps extends Margins, DataAttributes {\n /** @required Text label of the chip. */\n content: string;\n /** Theme style of the leading icon. @default \"outline\" */\n iconTheme?: GoabFilterChipTheme;\n /** Shows an error state. */\n error?: boolean;\n /** Secondary text displayed in a smaller size before the main content. */\n secondaryText?: string;\n /** Icon displayed at the start of the chip. */\n leadingIcon?: GoabIconType;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Callback fired when the filter chip is clicked to remove it. */\n onClick?: () => void;\n}\n\n/** Allow the user to enter information, filter content, and make selections. */\nexport const GoabFilterChip = ({\n iconTheme = \"outline\",\n error,\n onClick,\n ...rest\n}: GoabFilterChipProps) => {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>({ icontheme: iconTheme, ...rest }, lowercase);\n\n useEffect(() => {\n if (!el.current) return;\n if (!onClick) return;\n\n const current = el.current;\n\n current.addEventListener(\"_click\", onClick);\n return () => {\n current.removeEventListener(\"_click\", onClick!);\n };\n }, [el, onClick]);\n\n return (\n <goa-filter-chip\n ref={el}\n error={error ? \"true\" : undefined}\n version=\"2\"\n {..._props}\n />\n );\n};\n\nexport default GoabFilterChip;\n","import { useRef, useEffect, useState, useCallback } from 'react';\nimport {\n AppState,\n GoabFieldsetItemValue,\n FieldValidator, PublicFormController,\n} from \"@abgov/ui-components-common\";\n\nfunction usePublicFormController<T>(type: \"details\" | \"list\" = \"details\") {\n const controllerRef = useRef<PublicFormController<T>>(new PublicFormController<T>(type));\n const [state, setState] = useState<AppState<T> | AppState<T>[] | undefined>(undefined);\n\n useEffect(() => {\n // Create a proxy that updates React state when controller's state changes\n const originalStateGetter = Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(controllerRef.current),\n 'state'\n )?.get;\n\n const originalStateSetter = Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(controllerRef.current),\n 'state'\n )?.set;\n\n if (originalStateGetter && originalStateSetter) {\n Object.defineProperty(controllerRef.current, 'state', {\n get: function() {\n return originalStateGetter.call(this);\n },\n set: function(value) {\n originalStateSetter.call(this, value);\n setState(value);\n },\n configurable: true\n });\n }\n }, []);\n\n\n const init = useCallback((e: Event) => {\n if (!(e as CustomEvent).detail?.el) {\n console.error('El is null during initialization');\n return;\n }\n controllerRef.current.init(e);\n }, []);\n\n const initList = useCallback((e: Event) => {\n const customEvent = e as CustomEvent;\n if (!customEvent?.detail?.el) {\n console.error('El is null during list initialization');\n return;\n }\n controllerRef.current.initList(e);\n }, []);\n\n const initState = useCallback((state?: string | AppState<T> | AppState<T>[], callback?: () => void) => {\n if (!controllerRef.current._formRef) {\n console.error('Form ref not set.');\n return;\n }\n controllerRef.current.initState(state, callback);\n }, []);\n\n const continueTo = useCallback((next: T | undefined) => {\n controllerRef.current.continueTo(next);\n }, []);\n\n const validate = useCallback((\n e: Event,\n field: string,\n validators: FieldValidator[]\n ): [boolean, GoabFieldsetItemValue] => {\n return controllerRef.current.validate(e, field, validators);\n }, []);\n\n const getStateValue = useCallback((group: string, key: string): string => {\n return controllerRef.current.getStateValue(group, key);\n }, []);\n\n const getStateList = useCallback((): Record<string, string>[] => {\n return controllerRef.current.getStateList();\n }, []);\n\n const complete = useCallback(() => {\n controllerRef.current.complete();\n }, []);\n\n const completeSubform = useCallback(() => {\n controllerRef.current.completeSubform();\n }, []);\n\n return {\n state,\n init,\n initList,\n initState,\n continueTo,\n validate,\n getStateValue,\n getStateList,\n complete,\n completeSubform,\n controller: controllerRef.current\n };\n}\n\nexport { usePublicFormController };\n","import { ReactNode, useEffect, useRef, type JSX } from \"react\";\n\ninterface WCProps {\n heading: string;\n url: string;\n \"user-name\"?: string;\n \"user-secondary-text\"?: string;\n testid?: string;\n primaryContent?: ReactNode;\n secondaryContent?: ReactNode;\n accountContent?: ReactNode;\n open?: boolean;\n ref: React.RefObject<HTMLElement | null>;\n}\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-work-side-menu\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabWorkSideMenuProps {\n /** @required The application name displayed in the header. */\n heading: string;\n /** @required URL for the header link. Clicking the logo/heading navigates to this URL. */\n url: string;\n /** User's name displayed in the profile section. */\n userName?: string;\n /** Secondary text displayed below the user's name, such as role or email. */\n userSecondaryText?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered in the primary navigation slot. */\n primaryContent?: ReactNode;\n /** Content rendered in the secondary navigation slot. */\n secondaryContent?: ReactNode;\n /** Content rendered in the account/profile slot. */\n accountContent?: ReactNode;\n /** Controls whether the side menu is expanded or collapsed. */\n open?: boolean;\n /** Callback fired when the side menu is toggled open or closed. */\n onToggle?: () => void;\n /** Callback fired when a menu item is navigated, providing the target URL path. */\n onNavigate?: (path: string) => void;\n}\n\n/** Side menu variant for worker applications. */\nexport function GoabWorkSideMenu({\n heading,\n url,\n userName,\n userSecondaryText,\n testId,\n primaryContent,\n secondaryContent,\n accountContent,\n open,\n onToggle,\n onNavigate,\n}: GoabWorkSideMenuProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el?.current || !onToggle) {\n return;\n }\n el.current?.addEventListener(\"_toggle\", onToggle);\n return () => {\n el.current?.removeEventListener(\"_toggle\", onToggle);\n };\n }, [el, onToggle]);\n\n useEffect(() => {\n if (!el?.current || !onNavigate) {\n return;\n }\n const handler = (e: Event) => {\n onNavigate((e as CustomEvent).detail.url);\n };\n el.current?.addEventListener(\"_navigate\", handler);\n return () => {\n el.current?.removeEventListener(\"_navigate\", handler);\n };\n }, [el, onNavigate]);\n\n return (\n <goa-work-side-menu\n ref={el}\n heading={heading}\n url={url}\n user-name={userName}\n user-secondary-text={userSecondaryText}\n open={open ? true : false}\n testid={testId}\n >\n {primaryContent && <div slot=\"primary\">{primaryContent}</div>}\n {secondaryContent && <div slot=\"secondary\">{secondaryContent}</div>}\n {accountContent && <div slot=\"account\">{accountContent}</div>}\n </goa-work-side-menu>\n );\n}\n\nexport default GoabWorkSideMenu;\n","import { type JSX } from \"react\";\nimport { GoabIconType } from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n heading: string;\n icon?: GoabIconType;\n testid?: string;\n open?: boolean;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-work-side-menu-group\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabWorkSideMenuGroupProps {\n /** @required The text displayed in the group heading. */\n heading: string;\n /** Icon displayed before the group label. When omitted, no icon is rendered and no space is reserved. */\n icon?: GoabIconType;\n /** Whether the group is open. */\n open?: boolean;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the group, typically WorkSideMenuItem components. */\n children?: React.ReactNode;\n}\n\n/** Collapsible group of items within the work side menu. */\nexport function GoabWorkSideMenuGroup(props: GoabWorkSideMenuGroupProps): JSX.Element {\n return (\n <goa-work-side-menu-group\n heading={props.heading}\n icon={props.icon}\n open={props.open ? true : undefined}\n testid={props.testId}\n >\n {props.children}\n </goa-work-side-menu-group>\n );\n}\n\nexport default GoabWorkSideMenuGroup;\n","import { type JSX } from \"react\";\nimport { GoabWorkSideMenuItemType } from \"@abgov/ui-components-common\";\ninterface WCProps {\n label: string;\n url?: string;\n badge?: string;\n current?: string;\n divider?: string;\n icon?: string;\n testid?: string;\n type?: GoabWorkSideMenuItemType;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-work-side-menu-item\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabWorkSideMenuItemProps {\n /** @required The text label displayed for the menu item. */\n label: string;\n /** The URL the menu item links to. When absent, renders as a button instead of a link. */\n url?: string;\n /** Badge text displayed alongside the menu item (e.g., notification count). */\n badge?: string;\n /** When true, indicates this is the currently active menu item. */\n current?: boolean;\n /** When true, displays a divider line above this menu item. */\n divider?: boolean;\n /** Icon displayed before the menu item label. */\n icon?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the visual style of the badge. Use \"emergency\" for urgent items, \"success\" for positive status. @default \"normal\" */\n type?: GoabWorkSideMenuItemType;\n /** Content rendered inside the menu item. */\n children?: React.ReactNode;\n /** Content rendered inside the popover panel attached to this menu item. */\n popoverContent?: React.ReactNode;\n}\n\n/** Individual menu item within the work side menu. */\nexport function GoabWorkSideMenuItem(props: GoabWorkSideMenuItemProps): JSX.Element {\n return (\n <goa-work-side-menu-item\n label={props.label}\n url={props.url}\n badge={props.badge}\n current={props.current ? \"true\" : undefined}\n divider={props.divider ? \"true\" : undefined}\n icon={props.icon}\n testid={props.testId}\n type={props.type}\n >\n {props.popoverContent && <div slot=\"popoverContent\">{props.popoverContent}</div>}\n {props.children}\n </goa-work-side-menu-item>\n );\n}\n\nexport default GoabWorkSideMenuItem;\n","import { useEffect, useRef, type JSX } from \"react\";\nimport {\n GoabWorkSideNotificationItemType,\n GoabWorkSideNotificationReadStatus,\n GoabWorkSideNotificationPriority,\n} from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n type?: GoabWorkSideNotificationItemType;\n timestamp?: string;\n title?: string;\n description: string;\n \"read-status\"?: GoabWorkSideNotificationReadStatus;\n priority?: GoabWorkSideNotificationPriority;\n testid?: string;\n ref: React.RefObject<HTMLElement | null>;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-work-side-notification-item\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabWorkSideNotificationItemProps {\n /** @required The body text content of the notification card. */\n description: string;\n /** Sets the visual type/style of the notification item. @default \"default\" */\n type?: GoabWorkSideNotificationItemType;\n /** ISO timestamp string representing when the notification occurred. */\n timestamp?: string;\n /** Title text displayed in the notification card header. */\n title?: string;\n /** Indicates whether the notification has been read or is unread. @default \"unread\" */\n readStatus?: GoabWorkSideNotificationReadStatus;\n /** Sets the urgency level of the notification. @default \"normal\" */\n priority?: GoabWorkSideNotificationPriority;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Callback fired when the notification item is clicked. */\n onClick?: () => void;\n}\n\n/** Displays an individual notification item in the work-side notification panel. */\nexport function GoabWorkSideNotificationItem({\n type,\n timestamp,\n title,\n description,\n readStatus,\n priority,\n testId,\n onClick,\n}: GoabWorkSideNotificationItemProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el.current) return;\n\n const handleClick = () => {\n onClick?.();\n };\n\n el.current.addEventListener(\"_click\", handleClick);\n\n return () => {\n el.current?.removeEventListener(\"_click\", handleClick);\n };\n }, [el, onClick]);\n\n return (\n <goa-work-side-notification-item\n ref={el}\n type={type}\n timestamp={timestamp}\n title={title}\n description={description}\n read-status={readStatus}\n priority={priority}\n testid={testId}\n />\n );\n}\n\nexport default GoabWorkSideNotificationItem;\n","import { ReactNode, useEffect, useRef, type JSX } from \"react\";\nimport { GoabWorkSideNotificationActiveTabType } from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n heading?: string;\n \"active-tab\"?: GoabWorkSideNotificationActiveTabType;\n testid?: string;\n ref: React.RefObject<HTMLElement | null>;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-work-side-notification-panel\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabWorkSideNotificationPanelProps {\n /** Sets the panel heading text. @default \"Notifications\" */\n heading?: string;\n /** Sets the initially active tab. @default \"unread\" */\n activeTab?: GoabWorkSideNotificationActiveTabType;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Notification item content rendered inside the panel. */\n children?: ReactNode;\n /** Callback fired when the \"Mark all as read\" button is clicked. */\n onMarkAllRead?: () => void;\n /** Callback fired when the \"View all\" button is clicked. */\n onViewAll?: () => void;\n}\n\n/** Displays a panel of work-side notifications. */\nexport function GoabWorkSideNotificationPanel({\n heading,\n activeTab,\n testId,\n children,\n onMarkAllRead,\n onViewAll,\n}: GoabWorkSideNotificationPanelProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el.current) return;\n\n const handleMarkAllRead = () => {\n onMarkAllRead?.();\n };\n\n const handleViewAll = () => {\n onViewAll?.();\n };\n\n el.current.addEventListener(\"_markAllRead\", handleMarkAllRead);\n el.current.addEventListener(\"_viewAll\", handleViewAll);\n\n return () => {\n el.current?.removeEventListener(\"_markAllRead\", handleMarkAllRead);\n el.current?.removeEventListener(\"_viewAll\", handleViewAll);\n };\n }, [el, onMarkAllRead, onViewAll]);\n\n return (\n <goa-work-side-notification-panel\n ref={el}\n heading={heading}\n active-tab={activeTab}\n testid={testId}\n >\n {children}\n </goa-work-side-notification-panel>\n );\n}\n\nexport default GoabWorkSideNotificationPanel;\n"],"names":["message","defaultOptions","format","localize","formatLong","defaultLocale","lastDayOfMonth","_getDaysInMonth","_lastDayOfMonth","_addMonths","_addDays","_isSameDay","_isSameMonth","_isBefore","_isAfter","_format","_a","value","state"],"mappings":"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","x_google_ignoreList":[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61]}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../libs/react-components/src/lib/common/extract-props.ts","../../../libs/react-components/src/lib/accordion/accordion.tsx","../../../libs/react-components/src/lib/app-header/app-header.tsx","../../../libs/react-components/src/lib/app-header-menu/app-header-menu.tsx","../../../libs/react-components/src/lib/badge/badge.tsx","../../../libs/react-components/src/lib/block/block.tsx","../../../libs/react-components/src/lib/button/button.tsx","../../../libs/react-components/src/lib/button-group/button-group.tsx","../../../libs/react-components/src/lib/calendar/calendar.tsx","../../../libs/react-components/src/lib/callout/callout.tsx","../../../libs/react-components/src/lib/checkbox/checkbox.tsx","../../../libs/react-components/src/lib/checkbox-list/checkbox-list.tsx","../../../libs/react-components/src/lib/chip/chip.tsx","../../../libs/react-components/src/lib/circular-progress/circular-progress.tsx","../../../libs/react-components/src/lib/container/container.tsx","../../../libs/react-components/src/lib/data-grid/data-grid.tsx","../../../libs/common/src/lib/messaging/messaging.ts","../../../libs/common/src/lib/public-form-controller.ts","../../../node_modules/date-fns/toDate.mjs","../../../node_modules/date-fns/constructFrom.mjs","../../../node_modules/date-fns/addDays.mjs","../../../node_modules/date-fns/addMonths.mjs","../../../node_modules/date-fns/constants.mjs","../../../node_modules/date-fns/_lib/defaultOptions.mjs","../../../node_modules/date-fns/startOfWeek.mjs","../../../node_modules/date-fns/startOfISOWeek.mjs","../../../node_modules/date-fns/getISOWeekYear.mjs","../../../node_modules/date-fns/startOfDay.mjs","../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","../../../node_modules/date-fns/differenceInCalendarDays.mjs","../../../node_modules/date-fns/startOfISOWeekYear.mjs","../../../node_modules/date-fns/isSameDay.mjs","../../../node_modules/date-fns/isDate.mjs","../../../node_modules/date-fns/isValid.mjs","../../../node_modules/date-fns/startOfYear.mjs","../../../node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","../../../node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","../../../node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","../../../node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","../../../node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","../../../node_modules/date-fns/locale/en-US/_lib/localize.mjs","../../../node_modules/date-fns/locale/_lib/buildMatchFn.mjs","../../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","../../../node_modules/date-fns/locale/en-US/_lib/match.mjs","../../../node_modules/date-fns/locale/en-US.mjs","../../../node_modules/date-fns/getDayOfYear.mjs","../../../node_modules/date-fns/getISOWeek.mjs","../../../node_modules/date-fns/getWeekYear.mjs","../../../node_modules/date-fns/startOfWeekYear.mjs","../../../node_modules/date-fns/getWeek.mjs","../../../node_modules/date-fns/_lib/addLeadingZeros.mjs","../../../node_modules/date-fns/_lib/format/lightFormatters.mjs","../../../node_modules/date-fns/_lib/format/formatters.mjs","../../../node_modules/date-fns/_lib/format/longFormatters.mjs","../../../node_modules/date-fns/_lib/protectedTokens.mjs","../../../node_modules/date-fns/format.mjs","../../../node_modules/date-fns/getDaysInMonth.mjs","../../../node_modules/date-fns/lastDayOfMonth.mjs","../../../node_modules/date-fns/isAfter.mjs","../../../node_modules/date-fns/isBefore.mjs","../../../node_modules/date-fns/isSameMonth.mjs","../../../node_modules/date-fns/parseISO.mjs","../../../libs/common/src/lib/calendar-date.ts","../../../libs/react-components/src/lib/date-picker/date-picker.tsx","../../../libs/react-components/src/lib/details/details.tsx","../../../libs/react-components/src/lib/divider/divider.tsx","../../../libs/react-components/src/lib/drawer/drawer.tsx","../../../libs/react-components/src/lib/dropdown/dropdown.tsx","../../../libs/react-components/src/lib/dropdown/dropdown-item.tsx","../../../libs/react-components/src/lib/file-upload-card/file-upload-card.tsx","../../../libs/react-components/src/lib/file-upload-input/file-upload-input.tsx","../../../libs/react-components/src/lib/footer/footer.tsx","../../../libs/react-components/src/lib/footer-meta-section/footer-meta-section.tsx","../../../libs/react-components/src/lib/footer-nav-section/footer-nav-section.tsx","../../../libs/react-components/src/lib/form/fieldset.tsx","../../../libs/react-components/src/lib/form/public-form-page.tsx","../../../libs/react-components/src/lib/form/public-form-summary.tsx","../../../libs/react-components/src/lib/form/public-form.tsx","../../../libs/react-components/src/lib/form/public-subform.tsx","../../../libs/react-components/src/lib/form/public-subform-index.tsx","../../../libs/react-components/src/lib/form/task.tsx","../../../libs/react-components/src/lib/form/task-list.tsx","../../../libs/react-components/src/lib/form-item/form-item.tsx","../../../libs/react-components/src/lib/form-step/form-step.tsx","../../../libs/react-components/src/lib/form-stepper/form-stepper.tsx","../../../libs/react-components/src/lib/grid/grid.tsx","../../../libs/react-components/src/lib/hero-banner/hero-banner.tsx","../../../libs/react-components/src/lib/hero-banner/hero-banner-actions.tsx","../../../libs/react-components/src/lib/icon-button/icon-button.tsx","../../../libs/react-components/src/lib/icon/icon.tsx","../../../libs/react-components/src/lib/input/input.tsx","../../../libs/react-components/src/lib/linear-progress/linear-progress.tsx","../../../libs/react-components/src/lib/link/link.tsx","../../../libs/react-components/src/lib/link-button/link-button.tsx","../../../libs/react-components/src/lib/menu-button/menu-button.tsx","../../../libs/react-components/src/lib/menu-button/menu-action.tsx","../../../libs/react-components/src/lib/microsite-header/microsite-header.tsx","../../../libs/react-components/src/lib/modal/modal.tsx","../../../libs/react-components/src/lib/notification/notification.tsx","../../../libs/react-components/src/lib/one-column-layout/one-column-layout.tsx","../../../libs/react-components/src/lib/page-block/page-block.tsx","../../../libs/react-components/src/lib/pages/pages.tsx","../../../libs/react-components/src/lib/pagination/pagination.tsx","../../../libs/react-components/src/lib/popover/popover.tsx","../../../libs/react-components/src/lib/push-drawer/push-drawer.tsx","../../../libs/react-components/src/lib/radio-group/radio.tsx","../../../libs/react-components/src/lib/radio-group/radio-group.tsx","../../../libs/react-components/src/lib/side-menu-group/side-menu-group.tsx","../../../libs/react-components/src/lib/side-menu-heading/side-menu-heading.tsx","../../../libs/react-components/src/lib/side-menu/side-menu.tsx","../../../libs/react-components/src/lib/skeleton/skeleton.tsx","../../../libs/react-components/src/lib/spacer/spacer.tsx","../../../libs/react-components/src/lib/spinner/spinner.tsx","../../../libs/react-components/src/lib/table/table.tsx","../../../libs/react-components/src/lib/table/table-sort-header.tsx","../../../libs/react-components/src/lib/tabs/tabs.tsx","../../../libs/react-components/src/lib/tab/tab.tsx","../../../libs/react-components/src/lib/temporary-notification-ctrl/temporary-notification-ctrl.tsx","../../../libs/react-components/src/lib/text/text.tsx","../../../libs/react-components/src/lib/textarea/textarea.tsx","../../../libs/react-components/src/lib/three-column-layout/three-column-layout.tsx","../../../libs/react-components/src/lib/tooltip/tooltip.tsx","../../../libs/react-components/src/lib/two-column-layout/two-column-layout.tsx","../../../libs/react-components/src/lib/filter-chip/filter-chip.tsx","../../../libs/react-components/src/lib/use-public-form-controller.ts","../../../libs/react-components/src/lib/work-side-menu/work-side-menu.tsx","../../../libs/react-components/src/lib/work-side-menu-group/work-side-menu-group.tsx","../../../libs/react-components/src/lib/work-side-menu-item/work-side-menu-item.tsx","../../../libs/react-components/src/lib/work-side-notification-item/work-side-notification-item.tsx","../../../libs/react-components/src/lib/work-side-notification-panel/work-side-notification-panel.tsx"],"sourcesContent":["/**\n * Transform function type for converting prop names to attribute names.\n */\nexport type TransformFn = (input: string) => string;\n\n/**\n * Converts a camelCase string to lowercase (e.g., \"headingSize\" -> \"headingsize\")\n */\nexport const lowercase: TransformFn = (input) => input.toLowerCase();\n\n/**\n * Converts a camelCase string to kebab-case (e.g., \"verticalPosition\" -> \"vertical-position\")\n */\nexport const kebab: TransformFn = (input) =>\n input.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\n/**\n * Transforms React props to web component attributes.\n * Use object destructuring to extract props that need special handling,\n * then pass the rest through this function.\n *\n * @param props - The remaining props after destructuring\n * @param transform - Transform function (lowercase or kebab), defaults to lowercase\n * @returns Converted props ready to spread on the web component\n *\n * @example\n * export function GoabAccordion({open, onChange, headingContent, children, ...rest}: GoabAccordionProps) {\n * const _props = transformProps<WCProps>(rest, lowercase);\n * return (\n * <goa-accordion open={open ? \"true\" : undefined} {..._props}>\n * {children}\n * </goa-accordion>\n * );\n * }\n */\nexport function transformProps<WC = Record<string, unknown>>(\n props: object,\n transform: TransformFn = lowercase\n): WC {\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(props)) {\n // Skip undefined values - they shouldn't be passed to web components\n if (value === undefined) continue;\n\n // Data attributes pass through unchanged\n if (key.startsWith(\"data-\")) {\n result[key] = value;\n } else {\n result[transform(key)] = value;\n }\n }\n\n return result as WC;\n}\n","import { ReactNode, useEffect, useRef, type JSX } from \"react\";\n\nimport type {\n GoabAccordionHeadingSize,\n GoabAccordionIconPosition,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n open?: string;\n headingsize?: GoabAccordionHeadingSize;\n heading?: string;\n secondarytext?: string;\n headingContent?: ReactNode;\n maxwidth?: string;\n testid?: string;\n iconposition?: GoabAccordionIconPosition;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-accordion\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabAccordionProps extends Margins, DataAttributes {\n /** Sets the heading text. */\n heading?: string;\n /** Sets the state of the accordion container open or closed. */\n open?: boolean;\n /** Sets the heading size of the accordion container heading. @default \"small\" */\n headingSize?: GoabAccordionHeadingSize;\n /** Sets secondary text displayed alongside the heading. */\n secondaryText?: string;\n /** Sets content rendered within the accordion heading, alongside the heading text. */\n headingContent?: ReactNode;\n /** Sets the maximum width of the accordion. @default \"none\" */\n maxWidth?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the position of the expand/collapse icon. @default \"left\" */\n iconPosition?: GoabAccordionIconPosition;\n /** Callback fired when the accordion is opened or closed. Receives the new open state as a boolean. */\n onChange?: (open: boolean) => void;\n /** Content rendered inside the accordion body. */\n children?: ReactNode;\n}\n\n/** Let users show and hide sections of related content on a page. */\nexport function GoabAccordion({\n open,\n onChange,\n headingContent,\n children,\n ...rest\n}: GoabAccordionProps): JSX.Element {\n const ref = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n const element = ref.current;\n if (element && onChange) {\n const handler = (event: Event) => {\n const customEvent = event as CustomEvent;\n onChange?.(customEvent.detail.open);\n };\n element.addEventListener(\"_change\", handler);\n return () => {\n element.removeEventListener(\"_change\", handler);\n };\n }\n }, [onChange]);\n\n return (\n <goa-accordion ref={ref} open={open ? \"true\" : undefined} {..._props}>\n {headingContent && <div slot=\"headingcontent\">{headingContent}</div>}\n {children}\n </goa-accordion>\n );\n}\n\nexport default GoabAccordion;\n","import { useEffect, useRef, type JSX } from \"react\";\nimport { DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n heading?: string;\n secondarytext?: string;\n url?: string;\n maxcontentwidth?: string;\n fullmenubreakpoint?: number;\n hasmenuclickhandler?: string;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-app-header\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabAppHeaderProps extends DataAttributes {\n /** Set the service name to display in the app header. */\n heading?: string;\n /** V2 only: Secondary text displayed under the service name. */\n secondaryText?: string;\n /** Set the URL to link from the alberta.ca logo. A full url is required. */\n url?: string;\n /** Maximum width of the content area. */\n maxContentWidth?: string;\n /** Sets the breakpoint in px for the full menu to display. */\n fullMenuBreakpoint?: number;\n /** Content rendered inside the app header, typically navigation links. */\n children?: React.ReactNode;\n /** Callback fired when the menu button is clicked. When provided, clicking the menu button dispatches a custom event instead of toggling the menu. */\n onMenuClick?: () => void;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Provide structure to help users find their way around the service. */\nexport function GoabAppHeader({\n onMenuClick,\n children,\n secondaryText,\n ...rest\n}: GoabAppHeaderProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n if (!onMenuClick) {\n return;\n }\n const current = el.current;\n const listener = () => {\n onMenuClick?.();\n };\n current.addEventListener(\"_menuClick\", listener);\n return () => {\n current.removeEventListener(\"_menuClick\", listener);\n };\n }, [el, onMenuClick]);\n\n return (\n <goa-app-header\n ref={el}\n hasmenuclickhandler={onMenuClick ? \"true\" : \"false\"}\n secondarytext={secondaryText}\n {..._props}\n version=\"2\"\n >\n {children}\n </goa-app-header>\n );\n}\n","import { ReactNode } from \"react\";\nimport { DataAttributes, GoabIconType } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n heading: string;\n leadingicon?: GoabIconType;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-app-header-menu\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabAppHeaderMenuProps extends DataAttributes {\n /** @required The menu heading text displayed as the dropdown trigger. */\n heading: string;\n /** Icon displayed before the heading text. */\n leadingIcon?: GoabIconType;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Slot name used to place this menu in the correct slot of the parent component. */\n slotName?: string;\n /** Content rendered inside the menu dropdown, typically navigation links. */\n children?: ReactNode;\n}\n\n/** Menu items within the app header. */\nexport function GoabAppHeaderMenu({\n children,\n slotName,\n ...rest\n}: GoabAppHeaderMenuProps) {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-app-header-menu slot={slotName} {..._props}>\n {children}\n </goa-app-header-menu>\n );\n}\n\nexport default GoabAppHeaderMenu;\n","import {\n DataAttributes,\n GoabBadgeEmphasis,\n GoabBadgeSize,\n GoabBadgeType,\n GoabIconType,\n Margins,\n} from \"@abgov/ui-components-common\";\nimport type { JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n type: GoabBadgeType;\n icon?: string;\n content?: string;\n arialabel?: string;\n testid?: string;\n icontype?: GoabIconType;\n size?: GoabBadgeSize;\n emphasis?: GoabBadgeEmphasis;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-badge\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabBadgeProps extends Margins, DataAttributes {\n /** @required Sets the context and colour of the badge. */\n type: GoabBadgeType;\n /** @deprecated Use iconType instead. When true, displays an icon in the badge. */\n icon?: boolean;\n /** Text label of the badge. */\n content?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Accessible label for screen readers. */\n ariaLabel?: string;\n /** Icon type to display in the badge. */\n iconType?: GoabIconType;\n /** Sets the size of the badge. @default \"medium\" */\n size?: GoabBadgeSize;\n /** Sets the visual emphasis. 'subtle' for less prominent, 'strong' for more emphasis. @default \"strong\" */\n emphasis?: GoabBadgeEmphasis;\n}\n\n/**\n * Determines the icon display logic for the badge component.\n * Priority order:\n * 1. icon={true} - always show icon, starting with default\n * 2. icon={false} - always hide icon (overrides iconType)\n * 3. iconType provided - show custom icon\n * 4. default/no icon or iconType set - hide icon\n */\nfunction getIconValue(icon?: boolean, iconType?: GoabIconType): \"true\" | \"false\" {\n // Explicit icon prop takes precedence\n if (icon !== undefined) {\n return icon ? \"true\" : \"false\";\n }\n\n // Show custom icon if iconType is provided\n return iconType ? \"true\" : \"false\";\n}\n\n/** Small labels which hold small amounts of information, system feedback, or states. */\nexport function GoabBadge({\n icon,\n iconType,\n size = \"medium\",\n emphasis = \"strong\",\n ...rest\n}: GoabBadgeProps): JSX.Element {\n const _props = transformProps<WCProps>({ size, emphasis, ...rest }, lowercase);\n\n return (\n <goa-badge\n // Handle icon display priority: explicit icon prop takes precedence over iconType\n icon={getIconValue(icon, iconType)}\n icontype={iconType}\n {..._props}\n version=\"2\"\n size={size}\n emphasis={emphasis}\n />\n );\n}\n","import {\n GoabBlockAlignment,\n GoabBlockDirection,\n Margins,\n DataAttributes,\n Spacing,\n} from \"@abgov/ui-components-common\";\nimport { ReactNode } from \"react\";\nimport { transformProps, kebab } from \"../common/extract-props\";\n\nexport interface WCProps extends Margins {\n gap?: Spacing;\n direction?: GoabBlockDirection;\n alignment?: GoabBlockAlignment;\n \"min-width\"?: string;\n \"max-width\"?: string;\n width?: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-block\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabBlockProps extends Margins, DataAttributes {\n /** Spacing between items. Uses design system spacing tokens. @default \"m\" */\n gap?: Spacing;\n /** Stacking direction of child components. @default \"row\" */\n direction?: GoabBlockDirection;\n /** Primary axis alignment of child components. @default \"normal\" */\n alignment?: GoabBlockAlignment;\n /** Sets the minimum width of the block container. */\n minWidth?: string;\n /** Sets the maximum width of the block container. */\n maxWidth?: string;\n /** Sets the width of the block container. */\n width?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the block container. */\n children?: ReactNode;\n}\n\n/** Group components into a block with consistent space between. */\nexport function GoabBlock({ testId, children, ...rest }: GoabBlockProps) {\n const _props = transformProps<WCProps>({ testid: testId, ...rest }, kebab);\n\n return <goa-block {..._props}>{children}</goa-block>;\n}\n","import { ReactNode, useEffect, useRef, type JSX } from \"react\";\nimport {\n GoabButtonSize,\n GoabButtonType,\n GoabButtonVariant,\n GoabIconType,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n type?: GoabButtonType;\n size?: GoabButtonSize;\n variant?: GoabButtonVariant;\n disabled?: string;\n leadingicon?: string;\n trailingicon?: string;\n width?: string;\n testid?: string;\n action?: string;\n actionArgs?: string;\n actionArg?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-button\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabButtonProps extends Margins, DataAttributes {\n /** Sets the visual style of the button. Use \"primary\" for main actions, \"secondary\" for alternative actions, \"tertiary\" for low-emphasis actions, \"start\" for prominent call-to-action buttons, and \"text\" for text-only buttons. @default \"primary\" */\n type?: GoabButtonType;\n /** Controls the size of the button. Use \"compact\" for inline actions or space-constrained layouts. @default \"normal\" */\n size?: GoabButtonSize;\n /** Sets the color variant for semantic meaning. Use \"destructive\" for delete or irreversible actions, \"inverse\" for light-colored text on dark backgrounds, and \"dark\" for dark text color on text buttons only. Note: \"dark\" has no effect on non-text button types. @default \"normal\" */\n variant?: GoabButtonVariant;\n /** When true, prevents user interaction and applies disabled styling. */\n disabled?: boolean;\n /** Icon displayed before the button text. */\n leadingIcon?: GoabIconType;\n /** Icon displayed after the button text. */\n trailingIcon?: GoabIconType;\n /** Sets a custom width for the button (e.g., \"200px\" or \"100%\"). */\n width?: string;\n /** Callback fired when the button is clicked. */\n onClick?: () => void;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Action identifier passed in click events for event delegation patterns. */\n action?: string;\n /** Multiple argument values passed with the action in click events. */\n actionArgs?: Record<string, unknown>;\n /** Single argument value passed with the action in click events. */\n actionArg?: string;\n /** Content rendered inside the button. */\n children?: ReactNode;\n}\n\n/** Carry out an important action or navigate to another page. */\nexport function GoabButton({\n disabled,\n onClick,\n actionArgs,\n actionArg,\n children,\n ...rest\n}: GoabButtonProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n if (!onClick) {\n return;\n }\n const current = el.current;\n const listener = () => {\n onClick?.();\n };\n\n current.addEventListener(\"_click\", listener);\n return () => {\n current.removeEventListener(\"_click\", listener);\n };\n }, [el, onClick]);\n\n return (\n <goa-button\n ref={el}\n disabled={disabled ? \"true\" : undefined}\n action-arg={actionArg}\n action-args={JSON.stringify(actionArgs)}\n {..._props}\n version=\"2\"\n >\n {children}\n </goa-button>\n );\n}\n\nexport default GoabButton;\n","import {\n GoabButtonGroupAlignment,\n GoabButtonGroupGap,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\n\nimport type { JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n alignment: GoabButtonGroupAlignment;\n gap?: GoabButtonGroupGap;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-button-group\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabButtonGroupProps extends Margins, DataAttributes {\n /** @required Positions the button group in the page layout. */\n alignment: GoabButtonGroupAlignment;\n /** Sets the spacing between buttons in the button group. @default \"relaxed\" */\n gap?: GoabButtonGroupGap;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Button components to render inside the group. */\n children?: React.ReactNode;\n}\n\n/** Display multiple related actions stacked or in a horizontal row to help with arrangement and spacing. */\nexport function GoabButtonGroup({\n children,\n ...rest\n}: GoabButtonGroupProps): JSX.Element {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return <goa-button-group {..._props}>{children}</goa-button-group>;\n}\n\nexport default GoabButtonGroup;\n","import { useEffect, useRef, type JSX } from \"react\";\nimport {\n DataAttributes,\n GoabCalendarOnChangeDetail,\n Margins,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n name?: string;\n value?: string;\n min?: string;\n max?: string;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-calendar\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\nexport interface GoabCalendarProps extends Margins, DataAttributes {\n /** @required Callback fired when the selected date changes. */\n onChange: (details: GoabCalendarOnChangeDetail) => void;\n /** Name identifier for the calendar, included in change events. */\n name?: string;\n /** The currently selected date value in YYYY-MM-DD format. */\n value?: string;\n /** The minimum selectable date in YYYY-MM-DD format. Defaults to 5 years in the past. */\n min?: string;\n /** The maximum selectable date in YYYY-MM-DD format. Defaults to 5 years in the future. */\n max?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Visual calendar for date selection. */\nexport function GoabCalendar({\n min,\n max,\n onChange,\n name,\n ...rest\n}: GoabCalendarProps): JSX.Element {\n const ref = useRef<HTMLInputElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n const current = ref.current;\n const listener = (e: Event) => {\n onChange({\n name: name || \"\",\n value: (e as CustomEvent).detail.value,\n });\n };\n current.addEventListener(\"_change\", listener);\n\n return () => {\n current.removeEventListener(\"_change\", listener);\n };\n }, []);\n\n return (\n <goa-calendar\n ref={ref}\n name={name}\n min={min || undefined}\n max={max || undefined}\n version=\"2\"\n {..._props}\n />\n );\n}\n\nexport default GoabCalendar;\n","import {\n GoabCalloutAriaLive,\n GoabCalloutEmphasis,\n GoabCalloutSize,\n GoabCalloutType,\n GoabCalloutIconTheme,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n heading?: string;\n type?: GoabCalloutType;\n size?: GoabCalloutSize;\n arialive?: GoabCalloutAriaLive;\n maxwidth?: string;\n icontheme?: GoabCalloutIconTheme;\n emphasis?: GoabCalloutEmphasis;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-callout\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabCalloutProps extends Margins, DataAttributes {\n /** Callout heading text. */\n heading?: string;\n /** Sets the context and colour of the callout. @default \"information\" */\n type?: GoabCalloutType;\n /** Sets the size of the callout. 'medium' has reduced padding and type size for compact areas. @default \"large\" */\n size?: GoabCalloutSize;\n /** Sets the icon theme. 'outline' for stroked icons, 'filled' for solid icons. @default \"outline\" */\n iconTheme?: GoabCalloutIconTheme;\n /** Sets the visual prominence. 'high' for full background, 'medium' for subtle, 'low' for minimal. @default \"medium\" */\n emphasis?: GoabCalloutEmphasis;\n /** Sets the maximum width of the callout. */\n maxWidth?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Indicates how assistive technology should handle updates to the live region. @default \"off\" */\n ariaLive?: GoabCalloutAriaLive;\n /** Content rendered inside the callout body. */\n children?: React.ReactNode;\n}\n\n/** Communicate important information through a strong visual emphasis. */\nexport const GoabCallout = ({\n type = \"information\",\n iconTheme = \"outline\",\n size = \"large\",\n ariaLive = \"off\",\n emphasis = \"medium\",\n children,\n ...rest\n}: GoabCalloutProps) => {\n const _props = transformProps<WCProps>(\n { type, icontheme: iconTheme, size, arialive: ariaLive, emphasis, ...rest },\n lowercase,\n );\n\n return (\n <goa-callout {..._props} version=\"2\">\n {children}\n </goa-callout>\n );\n};\n\nexport default GoabCallout;\n","import {\n DataAttributes,\n GoabCheckboxOnChangeDetail,\n GoabCheckboxSize,\n Margins,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef, type JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-checkbox\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\ninterface WCProps extends Margins {\n id?: string;\n name: string;\n checked?: string;\n indeterminate?: string;\n disabled?: string;\n error?: string;\n text?: string;\n value?: string | number;\n arialabel?: string;\n description?: string | React.ReactNode;\n reveal?: React.ReactNode;\n revealarialabel?: string;\n maxwidth?: string;\n testid?: string;\n size?: GoabCheckboxSize;\n version?: string;\n}\n\n/* eslint-disable-next-line */\nexport interface GoabCheckboxProps extends Margins, DataAttributes {\n /** @required Unique name to identify the checkbox. */\n name: string;\n /** Sets a unique id for the checkbox element. */\n id?: string;\n /** Marks the checkbox item as selected. */\n checked?: boolean;\n /** Shows a mixed/partial selection state. Used for 'Select All' checkboxes when some items are selected. */\n indeterminate?: boolean;\n /** Disable this control. It will not receive focus or events. */\n disabled?: boolean;\n /** Shows an error on the checkbox item. */\n error?: boolean;\n /** Label shown beside the checkbox. */\n text?: string;\n /** The value binding. */\n value?: string | number | boolean;\n /** Content rendered inside the checkbox label slot. */\n children?: React.ReactNode;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Defines how the text will be translated for the screen reader. If not specified it will fall back to the name. */\n ariaLabel?: string;\n /** Additional description text displayed below the checkbox label. */\n description?: string | React.ReactNode;\n /** Content revealed when the checkbox is checked. */\n reveal?: React.ReactNode;\n /** Text announced by screen readers when the reveal slot content is displayed. */\n revealAriaLabel?: string;\n /** Sets the maximum width of the checkbox. */\n maxWidth?: string;\n /** Sets the size of the checkbox. 'compact' reduces spacing for dense layouts. @default \"default\" */\n size?: GoabCheckboxSize;\n /** Callback fired when the checkbox selection changes. */\n onChange?: (detail: GoabCheckboxOnChangeDetail) => void;\n}\n\n// legacy\nexport type Props = GoabCheckboxProps;\n\n/** Let the user select one or more options. */\nexport function GoabCheckbox({\n error,\n checked,\n indeterminate,\n disabled,\n value,\n description,\n reveal,\n onChange,\n name,\n children,\n size = \"default\",\n ...rest\n}: GoabCheckboxProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>({ size, ...rest }, lowercase);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n const current = el.current;\n const listener = (e: Event) => {\n const detail = (e as CustomEvent<GoabCheckboxOnChangeDetail>).detail;\n onChange?.({ ...detail, event: e });\n };\n\n current.addEventListener(\"_change\", listener);\n\n return () => {\n current.removeEventListener(\"_change\", listener);\n };\n }, [name, onChange]);\n\n return (\n <goa-checkbox\n ref={el}\n {..._props}\n name={name}\n error={error ? \"true\" : undefined}\n checked={checked ? \"true\" : undefined}\n indeterminate={indeterminate ? \"true\" : undefined}\n disabled={disabled ? \"true\" : undefined}\n value={typeof value === \"boolean\" ? (value ? \"true\" : undefined) : value}\n description={typeof description === \"string\" ? description : undefined}\n version=\"2\"\n >\n {children}\n {typeof description !== \"string\" && description && (\n <div slot=\"description\">{description}</div>\n )}\n {reveal && <div slot=\"reveal\">{reveal}</div>}\n </goa-checkbox>\n );\n}\n\nexport default GoabCheckbox;\n","import { GoabCheckboxListOnChangeDetail, Margins } from \"@abgov/ui-components-common\";\nimport { useEffect, useRef, type JSX } from \"react\";\n\ninterface WCProps extends Margins {\n ref: React.RefObject<HTMLElement | null>;\n name: string;\n value?: string[];\n disabled?: string;\n error?: string;\n testid?: string;\n maxwidth?: string;\n version?: string;\n size?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-checkbox-list\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabCheckboxListProps extends Margins {\n /** @required The name for the checkbox list group. Used as group identifier in change events. */\n name: string;\n /** Array of currently selected checkbox values. */\n value?: string[];\n /** Disables all checkboxes in the list. */\n disabled?: boolean;\n /** Shows an error state on all checkboxes in the list. */\n error?: boolean;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the maximum width of the checkbox list container. */\n maxWidth?: string;\n /** Sets the size of the checkbox list. 'compact' reduces spacing between items. @default \"default\" */\n size?: \"default\" | \"compact\";\n /** Content rendered inside the checkbox list. */\n children?: React.ReactNode;\n /** Callback fired when the selected values change. */\n onChange?: (detail: GoabCheckboxListOnChangeDetail) => void;\n}\n\n/** A multiple selection input. */\nexport function GoabCheckboxList({\n name,\n value = [],\n disabled,\n error,\n testId,\n maxWidth,\n size = \"default\",\n children,\n onChange,\n mt,\n mr,\n mb,\n ml,\n}: GoabCheckboxListProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el.current) return;\n\n const current = el.current;\n const listener = (e: Event) => {\n const detail = (e as CustomEvent<GoabCheckboxListOnChangeDetail>).detail;\n onChange?.({ ...detail, event: e });\n };\n\n current.addEventListener(\"_change\", listener);\n\n return () => {\n current.removeEventListener(\"_change\", listener);\n };\n }, [onChange]);\n\n return (\n <goa-checkbox-list\n ref={el}\n name={name}\n value={value}\n disabled={disabled ? \"true\" : undefined}\n error={error ? \"true\" : undefined}\n testid={testId}\n maxwidth={maxWidth}\n version=\"2\"\n size={size}\n mt={mt}\n mr={mr}\n mb={mb}\n ml={ml}\n >\n {children}\n </goa-checkbox-list>\n );\n}\n\nexport default GoabCheckboxList;\n","import {\n DataAttributes,\n GoabChipTheme,\n GoabChipVariant,\n Margins,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n leadingicon?: string;\n icontheme?: GoabChipTheme;\n error?: string;\n deletable?: string;\n content: string;\n variant?: GoabChipVariant;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-chip\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabChipProps extends Margins, DataAttributes {\n /** @required @deprecated Use GoabFilterChip instead. The text content displayed in the chip. */\n content: string;\n /** @deprecated Use GoabFilterChip instead. When true, shows a delete icon and makes chip clickable. */\n deletable?: boolean;\n /** @deprecated Use GoabFilterChip instead. Icon displayed at the start of the chip. */\n leadingIcon?: string;\n /** @deprecated Use GoabFilterChip instead. The icon theme - outline or filled. */\n iconTheme?: GoabChipTheme;\n /** @deprecated Use GoabFilterChip instead. Shows an error state on the chip. */\n error?: boolean;\n /** @deprecated Use GoabFilterChip instead. The chip variant style. */\n variant?: GoabChipVariant;\n /** @deprecated Use GoabFilterChip instead. Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Callback fired when the chip is clicked or deleted. */\n onClick?: () => void;\n}\n\n/** Compact element for labels, tags, or selections. */\nexport const GoabChip = ({ error, deletable, onClick, ...rest }: GoabChipProps) => {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n if (!el.current) return;\n if (!onClick) return;\n\n const current = el.current;\n const listener = () => {\n onClick?.();\n };\n\n current.addEventListener(\"_click\", listener);\n return () => {\n current.removeEventListener(\"_click\", listener);\n };\n }, [el, onClick]);\n\n return (\n <goa-chip\n ref={el}\n error={error ? \"true\" : undefined}\n deletable={deletable ? \"true\" : undefined}\n {..._props}\n />\n );\n};\n\nexport default GoabChip;\n","import {\n GoabCircularProgressSize,\n GoabCircularProgressVariant,\n} from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n variant?: GoabCircularProgressVariant;\n size?: GoabCircularProgressSize;\n message?: string;\n visible?: string;\n progress?: number;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-circular-progress\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabCircularProgressProps {\n /** Controls the display mode. 'fullscreen' stretches across the full screen; 'inline' is used within content. @default \"inline\" */\n variant?: GoabCircularProgressVariant;\n /** Sets the size of the progress indicator. @default \"large\" */\n size?: GoabCircularProgressSize;\n /** Loading message displayed below the progress indicator. */\n message?: string;\n /** Controls visibility of the progress indicator, allowing a fade transition to be applied. */\n visible?: boolean;\n /** Sets the progress value (0–100). When omitted, an infinite spinner is shown. */\n progress?: number;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Provide feedback of progress to users while loading. */\nexport const GoabCircularProgress = ({\n visible,\n message,\n progress,\n variant,\n size,\n testId,\n}: GoabCircularProgressProps) => {\n return (\n <goa-circular-progress\n visible={visible ? \"true\" : undefined}\n message={message}\n progress={progress}\n variant={variant}\n size={size}\n testid={testId}\n />\n );\n};\n\nexport default GoabCircularProgress;\n","import {\n GoabContainerAccent,\n GoabContainerPadding,\n GoabContainerType,\n GoabContainerWidth,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { ReactNode, type JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n type?: GoabContainerType;\n accent?: GoabContainerAccent;\n padding?: GoabContainerPadding;\n width?: GoabContainerWidth;\n maxwidth?: string;\n minheight?: string;\n maxheight?: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-container\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabContainerProps extends Margins, DataAttributes {\n /** Sets the container and accent bar styling. @default \"interactive\" */\n type?: GoabContainerType;\n /** Sets the style of accent on the container. @default \"filled\" */\n accent?: GoabContainerAccent;\n /** Sets the amount of white space in the container. @default \"relaxed\" */\n padding?: GoabContainerPadding;\n /** Sets the width of the container. @default \"full\" */\n width?: GoabContainerWidth;\n /** Sets the maximum width of the container. */\n maxWidth?: string;\n /** Sets the minimum height of the container. */\n minHeight?: string;\n /** Sets the maximum height of the container. */\n maxHeight?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** @deprecated Use title instead. Alias for the title prop. */\n heading?: ReactNode;\n /** Content rendered in the container's title/heading area. */\n title?: ReactNode;\n /** Content rendered in the container's actions area, typically buttons or controls. */\n actions?: ReactNode;\n /** Content rendered inside the container body. */\n children?: ReactNode;\n}\n\n/** Group information, create hierarchy, and show related information. */\nexport function GoabContainer({\n heading,\n title,\n actions,\n children,\n ...rest\n}: GoabContainerProps): JSX.Element {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n const headingContent = heading || title;\n\n return (\n <goa-container {..._props}>\n {headingContent && <div slot=\"title\">{headingContent}</div>}\n {children}\n {actions && <div slot=\"actions\">{actions}</div>}\n </goa-container>\n );\n}\n\nexport default GoabContainer;\n","import React from \"react\";\n\ninterface WCProps {\n \"keyboard-icon-visibility\"?: \"visible\" | \"hidden\";\n \"keyboard-icon-position\"?: \"left\" | \"right\";\n \"keyboard-nav\"?: \"layout\" | \"table\";\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-data-grid\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabDataGridProps {\n /** @required Navigation mode. 'table' navigates like a table (up/down between rows), 'layout' allows wrapping between rows with left/right arrows. */\n keyboardNav: \"layout\" | \"table\";\n /** Controls visibility of the keyboard navigation indicator icon. @default \"visible\" */\n keyboardIconVisibility?: \"visible\" | \"hidden\";\n /** Position of the keyboard navigation indicator icon. @default \"left\" */\n keyboardIconPosition?: \"left\" | \"right\";\n /** Content rendered inside the data grid, typically rows and cells. */\n children?: React.ReactNode;\n}\n\n/** Advanced table with sorting and selection. */\nexport function GoabDataGrid({\n keyboardIconVisibility = \"visible\",\n keyboardIconPosition = \"left\",\n keyboardNav,\n children,\n}: GoabDataGridProps) {\n return (\n <goa-data-grid\n keyboard-icon-visibility={keyboardIconVisibility}\n keyboard-icon-position={keyboardIconPosition}\n keyboard-nav={keyboardNav}\n >\n {children}\n </goa-data-grid>\n );\n}\n\nexport default GoabDataGrid;\n","// Public helper function to dispatch messages\nexport function dispatch<T>(\n el: HTMLElement | Element | null | undefined,\n eventName: string,\n detail?: T,\n opts?: { bubbles?: boolean },\n) {\n if (!el) {\n console.error(\"dispatch element is null\");\n return;\n }\n el.dispatchEvent(\n new CustomEvent<T>(eventName, {\n composed: true,\n bubbles: opts?.bubbles,\n detail: detail,\n }),\n );\n}\n\n// Public helper function to relay messages\nexport function relay<T>(\n el: HTMLElement | Element | null | undefined,\n eventName: string,\n data?: T,\n opts?: { bubbles?: boolean },\n) {\n if (!el) {\n console.error(\"dispatch element is null\");\n return;\n }\n el.dispatchEvent(\n new CustomEvent<{ action: string; data?: T }>(\"msg\", {\n composed: true,\n bubbles: opts?.bubbles,\n detail: {\n action: eventName,\n data,\n },\n }),\n );\n}\n","import { FieldsetItemState, FieldValidator } from \"./validators\";\nimport { GoabFieldsetItemValue, GoabFormDispatchOn } from \"./common\";\nimport { relay, dispatch } from \"./messaging/messaging\";\n\nexport type FormStatus = \"not-started\" | \"incomplete\" | \"complete\";\n\n// Public type to define the state of the form\nexport type AppState<T> = {\n uuid: string;\n form: Record<string, Fieldset<T>>;\n history: string[];\n editting: string;\n lastModified?: Date;\n status: FormStatus;\n currentFieldset?: { id: T; dispatchType: GoabFormDispatchOn };\n};\n\nexport type Fieldset<T> = {\n heading: string;\n data:\n | { type: \"details\"; fieldsets: Record<string, FieldsetItemState> }\n | { type: \"list\"; items: AppState<T>[] };\n};\n\nexport class PublicFormController<T> {\n state?: AppState<T> | AppState<T>[];\n _formData?: Record<string, string> = undefined;\n _formRef?: HTMLElement = undefined;\n private _isCompleting = false;\n\n constructor(private type: \"details\" | \"list\") {}\n\n // Obtain reference to the form element\n init(e: Event) {\n // FIXME: This condition should not be needed, but currently it is the only way to get things working\n if (this._formRef) {\n console.warn(\"init: form element has already been set\");\n return;\n }\n this._formRef = (e as CustomEvent).detail.el;\n\n this.state = {\n uuid: crypto.randomUUID(),\n form: {},\n history: [],\n editting: \"\",\n status: \"not-started\",\n };\n }\n\n initList(e: Event) {\n this._formRef = (e as CustomEvent).detail.el;\n this.state = [];\n }\n\n // Public method to allow for the initialization of the state\n initState(state?: string | AppState<T> | AppState<T>[], callback?: () => void) {\n relay(this._formRef, \"external::init:state\", state);\n\n if (typeof state === \"string\") {\n this.state = JSON.parse(state);\n } else if (!Array.isArray(state)) {\n this.state = state;\n }\n\n if (callback) {\n setTimeout(callback, 201);\n }\n }\n\n updateListState(e: Event) {\n const detail = (e as CustomEvent).detail;\n\n if (!Array.isArray(detail.data)) {\n return;\n }\n\n this.state = detail.data;\n }\n\n #updateObjectListState(detail: { data: AppState<T>[]; index: number; id: string }) {\n if (!Array.isArray(detail.data)) {\n return;\n }\n\n if (Array.isArray(this.state)) {\n return;\n }\n\n this.state = {\n ...this.state,\n form: {\n ...(this.state?.form || {}),\n [detail.id]: detail.data,\n },\n } as AppState<T>;\n }\n\n updateObjectState(e: Event) {\n if (Array.isArray(this.state)) {\n return;\n }\n\n const detail = (e as CustomEvent).detail;\n if (detail.type === \"list\") {\n // form state being updated with subform array data\n this.state = {\n ...this.state,\n form: { ...(this.state?.form || {}), [detail.id]: detail.data },\n } as AppState<T>;\n } else {\n // form state being updated with form data\n this.state = {\n ...this.state,\n ...detail.data,\n form: { ...(this.state?.form || {}), ...detail.data.form },\n history: detail.data.history,\n } as AppState<T>;\n }\n }\n\n getStateList(): Record<string, string>[] {\n if (!this.state) {\n return [];\n }\n if (!Array.isArray(this.state)) {\n console.warn(\n \"Utils:getStateList: unable to update the state of a non-multi form type\",\n this.state,\n );\n return [];\n }\n if (this.state.length === 0) {\n return [];\n }\n\n return this.state.map((s) => {\n return Object.values(s.form)\n .filter((item) => {\n return item?.data?.type === \"details\";\n })\n .map((item) => {\n return (item.data.type === \"details\" && item.data?.fieldsets) || {};\n })\n .reduce(\n (acc, item) => {\n for (const [key, value] of Object.entries(item)) {\n acc[key] = value.value;\n }\n return acc;\n },\n {} as Record<string, string>,\n );\n });\n }\n\n // getStateItems(group: string): Record<string, FieldsetItemState>[] {\n // if (Array.isArray(this.state)) {\n // console.error(\n // \"Utils:getStateItems: unable to update the state of a multi form type\",\n // );\n // return [];\n // }\n // if (!this.state) {\n // console.error(\"Utils:getStateItems: state has not yet been set\");\n // return [];\n // }\n //\n // const data = this.state.form[group].data;\n // if (data.type !== \"list\") {\n // return [];\n // }\n //\n // return data.items.;\n // }\n\n // Public method to allow for the retrieval of the state value\n getStateValue(group: string, key: string): string {\n if (Array.isArray(this.state)) {\n console.error(\"getStateValue: unable to update the state of a multi form type\");\n return \"\";\n }\n if (!this.state) {\n console.error(\"getStateValue: state has not yet been set\");\n return \"\";\n }\n\n const data = this.state.form[group].data;\n if (data.type !== \"details\") {\n return \"\";\n }\n\n return data.fieldsets[key].value;\n }\n\n // Public method to allow for the continuing to the next page\n continueTo(next: T | undefined) {\n if (!next) {\n console.error(\"continueTo [name] is undefined\");\n return;\n }\n // Relay the continue message to the form element which will\n // set the visibility of the fieldsets\n // FIXME: this makes a call to the subform instead of the form\n relay<{ next: T }>(this._formRef, \"external::continue\", { next });\n }\n\n // Public method to perform validation and send the appropriate messages to the form elements\n validate(\n e: Event,\n field: string,\n validators: FieldValidator[],\n options?: { grouped: boolean },\n ): [boolean, GoabFieldsetItemValue] {\n const { el, state, cancelled } = (e as CustomEvent).detail;\n const value = state?.[field]?.value;\n\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n\n if (cancelled) {\n return [true, value];\n }\n\n for (const validator of validators) {\n const msg = validator(value);\n this.#dispatchError(el, field, msg, options);\n if (msg) {\n return [false, \"\"];\n }\n }\n return [true, value];\n }\n\n /**\n * Validates a group of fields ensuring that at least `minPassCount` of the items within the group\n * passes. This is useful in the scenario when n number fields are required out of n+m number of fields.\n *\n * @param {string[]} fields - An array of field names to be validated.\n * @param {Event} e - The event object associated with the validation trigger.\n * @param {FieldValidator[]} validators - An array of validator functions to apply to the fields.\n * @return {[number, Record<string, boolean>]} - Returns back the number of fields that passed and a record of the fields and their pass status.\n */\n validateGroup(\n e: Event,\n fields: string[],\n validators: FieldValidator[],\n ): [number, Record<string, boolean>] {\n let passCount = 0;\n const validGroups = {} as Record<string, boolean>;\n\n for (const field of fields) {\n const [_valid] = this.validate(e, field, validators, { grouped: true });\n if (_valid) {\n validGroups[field] = true;\n passCount++;\n }\n }\n\n return [passCount, validGroups];\n }\n\n edit(index: number) {\n relay(this._formRef, \"external::alter:state\", { index, operation: \"edit\" });\n }\n\n remove(index: number) {\n relay(this._formRef, \"external::alter:state\", {\n index,\n operation: \"remove\",\n });\n }\n\n /**\n * Completes the form and triggers the onComplete callback.\n * This method should be used when you want to complete a form without navigating to a summary page.\n *\n * @important Developers must validate the form before calling this method.\n *\n * @example\n * // Validate first, then complete\n * const [isValid] = this.validate(e, \"firstName\", [\n * requiredValidator(\"First name is required.\")\n * ]);\n * if (isValid) {\n * this.complete();\n * }\n * @returns void\n */\n complete() {\n if (!this._formRef) {\n console.error(\"complete: form ref is not set\");\n return;\n }\n\n if (this._isCompleting) {\n console.warn(\"complete: completion already in progress\");\n return;\n }\n\n this._isCompleting = true;\n relay(this._formRef, \"fieldset::submit\", null, { bubbles: true });\n this._isCompleting = false;\n }\n\n /**\n * Completes a subform and returns control to the parent form.\n * This method should be used when working with subforms that need to complete without a summary page.\n *\n * @important Developers must validate the subform before calling this method.\n *\n * @example\n * // Validate first, then complete the subform\n * const [isValid] = this._childFormController.validate(e, \"fullName\", [\n * requiredValidator(\"Please enter the dependent's full name.\")\n * ]);\n * if (isValid) {\n * this._childFormController.completeSubform();\n * }\n * @returns void\n */\n completeSubform() {\n if (!this._formRef) {\n console.error(\"completeSubform: form ref is not set\");\n return;\n }\n\n if (this._isCompleting) {\n console.warn(\"completeSubform: completion already in progress\");\n return;\n }\n // Capture form reference to avoid TypeScript undefined error in closures\n const formRef = this._formRef;\n\n // Set flag to prevent multiple calls\n this._isCompleting = true;\n\n const stateChangeHandler = (e: Event) => {\n formRef.removeEventListener(\"_stateChange\", stateChangeHandler);\n\n // Now we know state is updated, safe to complete\n // The _formRef points to the inner form within the SubForm\n // We need to trigger the form's completion which will be caught by SubForm's onChildFormComplete\n dispatch(formRef, \"_complete\", {}, { bubbles: true });\n this._isCompleting = false;\n };\n\n formRef.addEventListener(\"_stateChange\", stateChangeHandler);\n\n dispatch(formRef, \"_continue\", null, { bubbles: true });\n }\n\n // Private method to dispatch the error message to the form element\n #dispatchError(\n el: HTMLElement,\n name: string,\n msg: string,\n options?: { grouped: boolean },\n ) {\n el.dispatchEvent(\n new CustomEvent(\"msg\", {\n composed: true,\n detail: {\n action: \"external::set:error\",\n data: {\n name,\n msg,\n grouped: options?.grouped,\n },\n },\n }),\n );\n }\n\n // removes any data collected that doesn't correspond with the final history path\n clean(data: AppState<T>) {\n return data.history.reduce<Record<string, unknown>>((acc, fieldsetId) => {\n acc[fieldsetId] = data.form[fieldsetId];\n return acc;\n }, {});\n }\n}\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument) {\n const argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === \"object\" && argStr === \"[object Date]\")\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new argument.constructor(+argument);\n } else if (\n typeof argument === \"number\" ||\n argStr === \"[object Number]\" ||\n typeof argument === \"string\" ||\n argStr === \"[object String]\"\n ) {\n // TODO: Can we get rid of as?\n return new Date(argument);\n } else {\n // TODO: Can we get rid of as?\n return new Date(NaN);\n }\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from 'date-fns'\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date(date: DateType): DateType {\n * return constructFrom(\n * date, // Use contrustor from the given date\n * date.getTime() // Use the date value to create a new date\n * )\n * }\n */\nexport function constructFrom(date, value) {\n if (date instanceof Date) {\n return new date.constructor(value);\n } else {\n return new Date(value);\n }\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.mjs\";\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date) {\n return startOfWeek(date, { weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date) {\n const _date = toDate(date);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"../toDate.mjs\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { millisecondsInDay } from \"./constants.mjs\";\nimport { startOfDay } from \"./startOfDay.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.mjs\";\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(dateLeft, dateRight) {\n const startOfDayLeft = startOfDay(dateLeft);\n const startOfDayRight = startOfDay(dateRight);\n\n const timestampLeft =\n +startOfDayLeft - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n const timestampRight =\n +startOfDayRight - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((timestampLeft - timestampRight) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { getISOWeekYear } from \"./getISOWeekYear.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date) {\n const year = getISOWeekYear(date);\n const fourthOfJanuary = constructFrom(date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { startOfDay } from \"./startOfDay.mjs\";\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport function isSameDay(dateLeft, dateRight) {\n const dateLeftStartOfDay = startOfDay(dateLeft);\n const dateRightStartOfDay = startOfDay(dateRight);\n\n return +dateLeftStartOfDay === +dateRightStartOfDay;\n}\n\n// Fallback for modularized imports:\nexport default isSameDay;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n if (!isDate(date) && typeof date !== \"number\") {\n return false;\n }\n const _date = toDate(date);\n return !isNaN(Number(_date));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date) {\n const cleanDate = toDate(date);\n const _date = constructFrom(date, 0);\n _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./en-US/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.mjs\";\nimport { localize } from \"./en-US/_lib/localize.mjs\";\nimport { match } from \"./en-US/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.mjs\";\nimport { startOfYear } from \"./startOfYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date) {\n const _date = toDate(date);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date) {\n const _date = toDate(date);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getWeekYear } from \"./getWeekYear.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { startOfWeekYear } from \"./startOfWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport function getWeek(date, options) {\n const _date = toDate(date);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.mjs\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.mjs\";\nimport { getISOWeek } from \"../../getISOWeek.mjs\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.mjs\";\nimport { getWeek } from \"../../getWeek.mjs\";\nimport { getWeekYear } from \"../../getWeekYear.mjs\";\nimport { addLeadingZeros } from \"../addLeadingZeros.mjs\";\nimport { lightFormatters } from \"./lightFormatters.mjs\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(date.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n const timestamp = date.getTime();\n return addLeadingZeros(timestamp, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\nimport { formatters } from \"./_lib/format/formatters.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { isValid } from \"./isValid.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport function getDaysInMonth(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n const monthIndex = _date.getMonth();\n const lastDayOfMonth = constructFrom(date, 0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}\n\n// Fallback for modularized imports:\nexport default getDaysInMonth;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The last day of a month\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * const result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport function lastDayOfMonth(date) {\n const _date = toDate(date);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default lastDayOfMonth;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be after the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport function isAfter(date, dateToCompare) {\n const _date = toDate(date);\n const _dateToCompare = toDate(dateToCompare);\n return _date.getTime() > _dateToCompare.getTime();\n}\n\n// Fallback for modularized imports:\nexport default isAfter;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n const _date = toDate(date);\n const _dateToCompare = toDate(dateToCompare);\n return +_date < +_dateToCompare;\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n *\n * @returns The dates are in the same month (and year)\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport function isSameMonth(dateLeft, dateRight) {\n const _dateLeft = toDate(dateLeft);\n const _dateRight = toDate(dateRight);\n return (\n _dateLeft.getFullYear() === _dateRight.getFullYear() &&\n _dateLeft.getMonth() === _dateRight.getMonth()\n );\n}\n\n// Fallback for modularized imports:\nexport default isSameMonth;\n","import { millisecondsInHour, millisecondsInMinute } from \"./constants.mjs\";\n\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function parseISO(argument, options) {\n const additionalDigits = options?.additionalDigits ?? 2;\n const dateStrings = splitDateString(argument);\n\n let date;\n if (dateStrings.date) {\n const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n const timestamp = date.getTime();\n let time = 0;\n let offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n const dirtyDate = new Date(timestamp + time);\n // JS parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n const result = new Date(0);\n result.setFullYear(\n dirtyDate.getUTCFullYear(),\n dirtyDate.getUTCMonth(),\n dirtyDate.getUTCDate(),\n );\n result.setHours(\n dirtyDate.getUTCHours(),\n dirtyDate.getUTCMinutes(),\n dirtyDate.getUTCSeconds(),\n dirtyDate.getUTCMilliseconds(),\n );\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\n\nconst patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/,\n};\n\nconst dateRegex =\n /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex =\n /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n const dateStrings = {};\n const array = dateString.split(patterns.dateTimeDelimiter);\n let timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(\n dateStrings.date.length,\n dateString.length,\n );\n }\n }\n\n if (timeString) {\n const token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], \"\");\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n const regex = new RegExp(\n \"^(?:(\\\\d{4}|[+-]\\\\d{\" +\n (4 + additionalDigits) +\n \"})|(\\\\d{2}|[+-]\\\\d{\" +\n (2 + additionalDigits) +\n \"})$)\",\n );\n\n const captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return { year: NaN, restDateString: \"\" };\n\n const year = captures[1] ? parseInt(captures[1]) : null;\n const century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length),\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n\n const captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n\n const isWeekDate = !!captures[4];\n const dayOfYear = parseDateUnit(captures[1]);\n const month = parseDateUnit(captures[2]) - 1;\n const day = parseDateUnit(captures[3]);\n const week = parseDateUnit(captures[4]);\n const dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n const date = new Date(0);\n if (\n !validateDate(year, month, day) ||\n !validateDayOfYearDate(year, dayOfYear)\n ) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n const captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n const hours = parseTimeUnit(captures[1]);\n const minutes = parseTimeUnit(captures[2]);\n const seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return (\n hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000\n );\n}\n\nfunction parseTimeUnit(value) {\n return (value && parseFloat(value.replace(\",\", \".\"))) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === \"Z\") return 0;\n\n const captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n\n const sign = captures[1] === \"+\" ? -1 : 1;\n const hours = parseInt(captures[2]);\n const minutes = (captures[3] && parseInt(captures[3])) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n const date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nconst daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n\nfunction validateDate(year, month, date) {\n return (\n month >= 0 &&\n month <= 11 &&\n date >= 1 &&\n date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n );\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return (\n seconds >= 0 &&\n seconds < 60 &&\n minutes >= 0 &&\n minutes < 60 &&\n hours >= 0 &&\n hours < 25\n );\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}\n\n// Fallback for modularized imports:\nexport default parseISO;\n","import {\n addMonths as _addMonths,\n addDays as _addDays,\n format as _format,\n getDaysInMonth as _getDaysInMonth,\n isSameDay as _isSameDay,\n lastDayOfMonth as _lastDayOfMonth,\n setDate as _setDate,\n isSameMonth as _isSameMonth,\n isBefore as _isBefore,\n addYears as _addYears,\n isAfter as _isAfter,\n} from \"date-fns\";\n\ntype CalendarDateInput =\n | string\n | Date\n | 0\n | { year: number; month: number; day: number };\n\nexport class CalendarDate {\n private _dateNums: number[];\n\n static parse(value: CalendarDateInput): number[] {\n if (typeof value === \"string\") {\n value = value.split(\"T\")[0];\n return value.split(\"-\").map((v) => +v);\n } else if (value instanceof Date) {\n return [value.getFullYear(), value.getMonth() + 1, value.getDate()];\n } else if (value === 0) {\n return [0, 0, 0];\n } else {\n return [value.year, value.month, value.day];\n }\n }\n\n static init(): CalendarDate {\n return new CalendarDate(0);\n }\n\n constructor(value?: CalendarDateInput) {\n if (value || value === 0) {\n this._dateNums = CalendarDate.parse(value);\n } else {\n this._dateNums = CalendarDate.parse(new Date());\n }\n }\n\n // Used internally to get the date value for the date_fns\n get date(): Date {\n return new Date(\n this._dateNums[0],\n this._dateNums[1] - 1,\n this._dateNums[2],\n );\n }\n\n get year(): number {\n return this._dateNums[0];\n }\n\n get month(): number {\n return this._dateNums[1];\n }\n\n get day(): number {\n return this._dateNums[2];\n }\n\n get dayOfWeek(): number {\n return this.date.getDay();\n }\n\n get daysInMonth(): number {\n return _getDaysInMonth(this.date);\n }\n\n get firstDayOfMonth(): CalendarDate {\n return new CalendarDate({ year: this.year, month: this.month, day: 1 });\n }\n\n get lastDayOfMonth(): CalendarDate {\n return new CalendarDate(_lastDayOfMonth(this.date));\n }\n\n get previousDay(): CalendarDate {\n return this.clone().addDays(-1);\n }\n\n get nextDay(): CalendarDate {\n return this.clone().addDays(1);\n }\n\n get previousWeek(): CalendarDate {\n return this.clone().addDays(-7);\n }\n\n get nextWeek(): CalendarDate {\n return this.clone().addDays(7);\n }\n\n get previousMonth(): CalendarDate {\n return this.clone().addMonths(-1);\n }\n\n get nextMonth(): CalendarDate {\n return this.clone().addMonths(1);\n }\n\n clone(): CalendarDate {\n return new CalendarDate(this.toString());\n }\n\n setYear(val: number) {\n this._dateNums[0] = val;\n }\n\n setMonth(val: number) {\n this._dateNums[1] = val;\n }\n\n setDay(val: number): CalendarDate {\n this._dateNums[2] = val;\n return this;\n }\n\n addYears(count: number): CalendarDate {\n this._dateNums[0] += count;\n return this;\n }\n\n addMonths(count: number): CalendarDate {\n this._dateNums = CalendarDate.parse(_addMonths(this.date, count));\n return this;\n }\n\n addDays(count: number): CalendarDate {\n this._dateNums = CalendarDate.parse(_addDays(this.date, count));\n return this;\n }\n\n isSameDay(cmp: CalendarDate): boolean {\n return _isSameDay(this.date, cmp.date);\n }\n\n isSameMonth(value: CalendarDate): boolean {\n return _isSameMonth(this.date, value.date);\n }\n\n isBefore(cmp: CalendarDate): boolean {\n return _isBefore(this.date, cmp.date);\n }\n\n isAfter(cmp: CalendarDate): boolean {\n return _isAfter(this.date, cmp.date);\n }\n\n isZero(): boolean {\n return (\n this._dateNums[0] === 0 &&\n this._dateNums[1] === 0 &&\n this._dateNums[2] === 0\n );\n }\n\n isValid(): boolean {\n // ensure it's a valid date\n // E.g. \"2025-02-31\" would be invalid because the date does not exist\n const comparisonDate = new Date(this.toString());\n if (\n isNaN(comparisonDate.getTime()) ||\n this.toString() !== comparisonDate.toISOString().split(\"T\")[0]\n ) {\n return false;\n }\n\n return true;\n }\n\n format(tmpl: string): string {\n if (this.isZero()) {\n return \"\";\n }\n return _format(this.date, tmpl);\n }\n\n toString(): string {\n if (this.isZero()) {\n return \"\";\n }\n return this._dateNums\n .map((num) => (`${num}`.length < 2 ? `0${num}` : `${num}`))\n .join(\"-\");\n }\n}\n","import { useEffect, useRef, type JSX } from \"react\";\nimport {\n CalendarDate,\n GoabDatePickerInputType,\n GoabDatePickerOnChangeDetail,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n name?: string;\n value?: string;\n error?: string;\n min?: string;\n max?: string;\n type?: string;\n relative?: string;\n disabled?: string;\n testid?: string;\n width?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-date-picker\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabDatePickerProps extends Margins, DataAttributes {\n /** Sets the date picker type. 'calendar' shows a calendar popup, 'input' shows just a date input. @default \"calendar\" */\n type?: GoabDatePickerInputType;\n /** Name of the date field. */\n name?: string;\n /** Value of the calendar date, as a Date object or an ISO date string (yyyy-mm-dd). */\n value?: Date | string | undefined;\n /** Sets the input to an error state. */\n error?: boolean;\n /** Minimum date value allowed. */\n min?: Date | string;\n /** Maximum date value allowed. */\n max?: Date | string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** @deprecated This property has no effect and will be removed in a future version. */\n relative?: boolean;\n /** Disables the date picker. */\n disabled?: boolean;\n /** Sets the width of the date picker input. */\n width?: string;\n /** Callback fired when the selected date changes. */\n onChange?: (detail: GoabDatePickerOnChangeDetail) => void;\n}\n\n/** Lets users select a date through a calendar without the need to manually type it in a field. */\nexport function GoabDatePicker({\n value,\n error,\n min,\n max,\n disabled,\n relative,\n onChange,\n ...rest\n}: GoabDatePickerProps): JSX.Element {\n const ref = useRef<HTMLInputElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n if (value && typeof value !== \"string\") {\n console.warn(\n \"Using a `Date` type for value is deprecated. Instead use a string of the format `yyyy-mm-dd`\",\n );\n }\n }, []);\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n const current = ref.current;\n\n const handleChange = (e: Event) => {\n const detail = (e as CustomEvent<GoabDatePickerOnChangeDetail>).detail;\n onChange?.({ ...detail, event: e });\n };\n\n if (onChange) {\n current.addEventListener(\"_change\", handleChange);\n }\n\n return () => {\n if (onChange) {\n current.removeEventListener(\"_change\", handleChange);\n }\n };\n }, [onChange]);\n\n const formatValue = (val: Date | string | undefined) => {\n if (!val) return \"\";\n\n if (val instanceof Date) {\n return new CalendarDate(val).toString();\n }\n\n return val;\n };\n\n return (\n <goa-date-picker\n ref={ref}\n value={formatValue(value) || undefined}\n error={error ? \"true\" : undefined}\n disabled={disabled ? \"true\" : undefined}\n min={formatValue(min) || undefined}\n max={formatValue(max) || undefined}\n relative={relative ? \"true\" : undefined}\n version=\"2\"\n {..._props}\n />\n );\n}\n\nexport default GoabDatePicker;\n","import { Margins, DataAttributes } from \"@abgov/ui-components-common\";\nimport { ReactNode } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n heading: string;\n open?: string;\n maxwidth?: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-details\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabDetailsProps extends Margins, DataAttributes {\n /** @required The title heading. */\n heading: string;\n /** @required Content rendered inside the details body. */\n children: ReactNode;\n /** Controls if details is expanded or not. */\n open?: boolean;\n /** Sets the maximum width of the details. @default \"75ch\" */\n maxWidth?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Let users reveal more detailed information when they need it. */\nexport function GoabDetails({ open, children, ...rest }: GoabDetailsProps) {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-details open={open ? \"true\" : undefined} {..._props}>\n {children}\n </goa-details>\n );\n}\n\nexport default GoabDetails;\n","import { Margins } from \"@abgov/ui-components-common\";\n\ninterface WCProps extends Margins {\n testid?: string;\n}\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-divider\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabDividerProps extends Margins {\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Indicate a separation of layout, or to distinguish large chunks of information on a page. */\nexport function GoabDivider(props: GoabDividerProps) {\n return (\n <goa-divider\n mt={props.mt}\n mr={props.mr}\n mb={props.mb}\n ml={props.ml}\n testid={props.testId}\n />\n );\n}\n\nexport default GoabDivider;\n","import { ReactNode, useEffect, useRef, type JSX } from \"react\";\nimport { GoabDrawerPosition, GoabDrawerSize } from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n position: GoabDrawerPosition;\n open?: boolean;\n heading?: string;\n maxsize?: GoabDrawerSize;\n testid?: string;\n ref: React.RefObject<HTMLElement | null>;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-drawer\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabDrawerProps {\n /** @required The position of the drawer. */\n position: GoabDrawerPosition;\n /** @required Content rendered inside the drawer body. */\n children: ReactNode;\n /** @required Callback fired when the drawer requests to be closed. */\n onClose: () => void;\n /** Whether the drawer is open. */\n open?: boolean;\n /** The heading text displayed at the top of the drawer. Accepts a string or a ReactNode for custom heading content. */\n heading?: string | ReactNode;\n /** Sets max height on bottom position, sets width on left and right position. */\n maxSize?: GoabDrawerSize;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Action elements rendered in the drawer footer slot. */\n actions?: ReactNode;\n}\n\n/** A panel that slides in from the side of the screen to display additional content or actions without navigating away from the current view. */\nexport function GoabDrawer({\n position,\n open,\n heading,\n maxSize,\n testId,\n actions,\n children,\n onClose,\n}: GoabDrawerProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el?.current || !onClose) {\n return;\n }\n const current = el.current;\n const listener = (e: Event) => {\n if (e.target !== current) {\n return;\n }\n onClose();\n };\n current.addEventListener(\"_close\", listener);\n return () => {\n current.removeEventListener(\"_close\", listener);\n };\n }, [el, onClose]);\n\n return (\n <goa-drawer\n ref={el}\n position={position}\n open={open ? true : undefined}\n heading={typeof heading === \"string\" ? heading : undefined}\n maxsize={maxSize}\n testid={testId}\n version=\"2\"\n >\n {heading && typeof heading !== \"string\" && <div slot=\"heading\">{heading}</div>}\n {actions && <div slot=\"actions\">{actions}</div>}\n {children}\n </goa-drawer>\n );\n}\n\nexport default GoabDrawer;\n","import {\n GoabDropdownOnChangeDetail,\n GoabDropdownSize,\n GoabIconType,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef, type JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n arialabel?: string;\n arialabelledby?: string;\n disabled?: string;\n error?: string;\n filterable?: string;\n leadingicon?: string;\n maxheight?: string;\n multiselect?: string;\n name?: string;\n native?: string;\n placeholder?: string;\n value?: string;\n width?: string;\n maxwidth?: string;\n relative?: string;\n id?: string;\n autocomplete?: string;\n testid?: string;\n size?: GoabDropdownSize;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n // eslint-disable-next-line @typescript-eslint/no-empty-interface\n interface IntrinsicElements {\n \"goa-dropdown\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabDropdownProps extends Margins, DataAttributes {\n /** Identifier for the dropdown. Should be unique. */\n name?: string;\n /** The currently selected value(s) of the dropdown. */\n value?: string[] | string;\n /** Callback fired when the selected value changes. */\n onChange?: (detail: GoabDropdownOnChangeDetail) => void;\n /** Defines how the selected value will be translated for the screen reader. If not specified it will fall back to the name. */\n ariaLabel?: string;\n /** The aria-labelledby attribute identifies the element that labels the dropdown. Normally it is the id of the label. */\n ariaLabelledBy?: string;\n /** The id attribute for the dropdown element. */\n id?: string;\n /** Dropdown items rendered inside the dropdown. */\n children?: React.ReactNode;\n /** Disables the dropdown control. */\n disabled?: boolean;\n /** Shows an error state on the dropdown. */\n error?: boolean;\n /** When true, allows filtering options by typing into the input field. */\n filterable?: boolean;\n /** Icon shown to the left of the dropdown input. */\n leadingIcon?: GoabIconType;\n /** Maximum height of the dropdown menu. Non-native only. @default \"276px\" */\n maxHeight?: string;\n /** When true, allows multiple items to be selected. @internal */\n multiselect?: boolean;\n /** When true, renders the native select HTML element. */\n native?: boolean;\n /** The text displayed in the dropdown before a selection is made. Non-native only. */\n placeholder?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Overrides the autosized menu width. Non-native only. */\n width?: string;\n /** Sets the maximum width of the dropdown. Use a CSS unit (px, %, ch, rem, em). */\n maxWidth?: string;\n /** Specifies the autocomplete attribute for the dropdown input. Native only. */\n autoComplete?: string;\n /** Sets the size of the dropdown. Compact reduces height for dense layouts. */\n size?: GoabDropdownSize;\n /** @deprecated This property has no effect and will be removed in a future version. */\n relative?: boolean;\n}\n\nfunction stringify(value: string | string[] | undefined): string {\n if (typeof value === \"undefined\") {\n return \"\";\n }\n if (typeof value === \"string\") {\n return value;\n }\n return JSON.stringify(value);\n}\n\n/** Present a list of options to the user to select from. */\nexport function GoabDropdown({\n value,\n onChange,\n disabled,\n error,\n filterable,\n multiselect,\n native,\n relative,\n children,\n size = \"default\",\n ...rest\n}: GoabDropdownProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>({ size, ...rest }, lowercase);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n const current = el.current;\n const handler = (e: Event) => {\n const detail = (e as CustomEvent<GoabDropdownOnChangeDetail>).detail;\n onChange?.({ ...detail, event: e });\n };\n if (onChange) {\n current.addEventListener(\"_change\", handler);\n }\n return () => {\n if (onChange) {\n current.removeEventListener(\"_change\", handler);\n }\n };\n }, [el, onChange]);\n\n return (\n <goa-dropdown\n ref={el}\n value={stringify(value)}\n disabled={disabled ? \"true\" : undefined}\n error={error ? \"true\" : undefined}\n filterable={filterable ? \"true\" : undefined}\n multiselect={multiselect ? \"true\" : undefined}\n native={native ? \"true\" : undefined}\n relative={relative ? \"true\" : undefined}\n {..._props}\n version=\"2\"\n >\n {children}\n </goa-dropdown>\n );\n}\n\nexport default GoabDropdown;\n","import { useEffect } from \"react\";\nimport { GoabDropdownItemMountType } from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n value: string;\n label?: string;\n filter?: string;\n mount?: GoabDropdownItemMountType;\n\n // @deprecated\n name?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-dropdown-item\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabDropdownItemProps {\n /** @required The value submitted when this item is selected. */\n value: string;\n /** Display label for the dropdown item. */\n label?: string;\n /** Text used to filter and match this item in typeahead search. */\n filter?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Controls how the item is registered with the parent dropdown. */\n mountType?: GoabDropdownItemMountType;\n /** @deprecated */\n name?: string;\n}\n\n/** Present a list of options to the user to select from. */\nexport function GoabDropdownOption(props: GoabDropdownItemProps) {\n useEffect(() => {\n console.warn(\"GoabDropdownOption is deprecated. Please use GoabDropdownItem\");\n }, []);\n\n return <GoabDropdownItem {...props} />;\n}\n\n/** Present a list of options to the user to select from. */\nexport function GoabDropdownItem({\n value,\n label,\n filter,\n name,\n mountType = \"append\",\n}: GoabDropdownItemProps) {\n return (\n <goa-dropdown-item\n value={value}\n label={label}\n filter={filter}\n name={name}\n mount={mountType}\n />\n );\n}\n","import {\n DataAttributes,\n GoabFileUploadOnCancelDetail,\n GoabFileUploadOnDeleteDetail,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n filename: string;\n size: number;\n type?: string;\n progress?: number;\n error?: string;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-file-upload-card\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabFileUploadCardProps extends DataAttributes {\n /** @required The name of the uploaded file to display. */\n filename: string;\n /** @required The file size in bytes. Displayed in a human-readable format (KB, MB). */\n size: number;\n /** The MIME type of the file. Used to determine the file type icon. */\n type?: string;\n /** Upload progress percentage from 0-100. Use -1 to indicate upload is complete. @default -1 */\n progress?: number;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Error message to display. When set, the card shows an error state with a cancel button. */\n error?: string;\n /** Callback fired when the user clicks the remove button on an uploaded file. */\n onDelete?: (detail: GoabFileUploadOnDeleteDetail) => void;\n /** Callback fired when the user clicks the cancel button during file upload. */\n onCancel?: (detail: GoabFileUploadOnCancelDetail) => void;\n}\n\n/** Display uploaded file with actions. */\nexport function GoabFileUploadCard({\n onDelete,\n onCancel,\n filename,\n ...rest\n}: GoabFileUploadCardProps) {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>({ filename, ...rest }, lowercase);\n\n useEffect(() => {\n if (!el.current) return;\n\n const current = el.current;\n const deleteHandler = (event: Event) => onDelete?.({ filename, event });\n const cancelHandler = (event: Event) => onCancel?.({ filename, event });\n current.addEventListener(\"_delete\", deleteHandler);\n current.addEventListener(\"_cancel\", cancelHandler);\n return () => {\n current.removeEventListener(\"_delete\", deleteHandler);\n current.removeEventListener(\"_cancel\", cancelHandler);\n };\n }, [el, onDelete, onCancel, filename]);\n\n return <goa-file-upload-card ref={el} {..._props} version=\"2\" />;\n}\n\nexport default GoabFileUploadCard;\n","import {\n DataAttributes,\n GoabFileUploadInputOnSelectFileDetail,\n GoabFileUploadInputVariant,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n variant?: GoabFileUploadInputVariant;\n accept?: string;\n maxfilesize?: string;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-file-upload-input\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabFileUploadInputProps extends DataAttributes {\n /** @required Callback fired when a valid file is selected or dropped. */\n onSelectFile: (detail: GoabFileUploadInputOnSelectFileDetail) => void;\n /** The input display variant. \"dragdrop\" shows a drag-and-drop area, \"button\" shows a simple button. @default \"dragdrop\" */\n variant?: GoabFileUploadInputVariant;\n /** Accepted file types as a comma-separated list of MIME types or file extensions (e.g., \"image/*,.pdf\"). */\n accept?: string;\n /** Maximum file size with unit (e.g., \"5MB\", \"100KB\", \"1GB\"). Files exceeding this will be rejected. @default \"5MB\" */\n maxFileSize?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Help users select and upload a file. */\nexport function GoabFileUploadInput({ onSelectFile, ...rest }: GoabFileUploadInputProps) {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n if (!el.current) return;\n\n const current = el.current;\n const handler = (e: Event) => {\n const detail = (e as CustomEvent<GoabFileUploadInputOnSelectFileDetail>).detail;\n onSelectFile({ ...detail, event: e });\n };\n current.addEventListener(\"_selectFile\", handler);\n return () => {\n current.removeEventListener(\"_selectFile\", handler);\n };\n }, [el, onSelectFile]);\n\n return <goa-file-upload-input ref={el} {..._props} version=\"2\" />;\n}\n\nexport default GoabFileUploadInput;\n","import { ReactNode, type JSX } from \"react\";\nimport { DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n maxcontentwidth?: string;\n testid?: string;\n url?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-app-footer\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabAppFooterProps extends DataAttributes {\n /** The maximum width of the main content area. */\n maxContentWidth?: string;\n /** URL for the Government of Alberta logo link. Set to empty string to disable the link. @default \"https://alberta.ca\" */\n url?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the footer, typically navigation and meta sections. */\n children?: ReactNode;\n}\n\n/** Provides information related your service at the bottom of every page. */\nexport function GoabAppFooter({ children, ...rest }: GoabAppFooterProps): JSX.Element {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-app-footer {..._props} version={\"2\"}>\n {children}\n </goa-app-footer>\n );\n}\n\nexport default GoabAppFooter;\n","import { ReactNode } from \"react\";\nimport { DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-app-footer-meta-section\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabAppFooterMetaSectionProps extends DataAttributes {\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Anchor link elements rendered as footer meta navigation links. */\n children?: ReactNode;\n}\n\n/** Copyright and legal links in footer. */\nexport function GoabAppFooterMetaSection({\n children,\n ...rest\n}: GoabAppFooterMetaSectionProps) {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-app-footer-meta-section slot=\"meta\" {..._props}>\n {children}\n </goa-app-footer-meta-section>\n );\n}\n\nexport default GoabAppFooterMetaSection;\n","import { ReactNode } from \"react\";\nimport { DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n maxcolumncount?: number;\n heading?: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-app-footer-nav-section\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabFooterNavSectionProps extends DataAttributes {\n /** The section heading displayed above the navigation links. */\n heading?: string;\n /** Maximum number of columns to display links in on larger screens. @default 1 */\n maxColumnCount?: number;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Anchor link elements rendered as footer navigation links. */\n children?: ReactNode;\n}\n\n/** Navigation links section in footer. */\nexport function GoabAppFooterNavSection({\n children,\n ...rest\n}: GoabFooterNavSectionProps) {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-app-footer-nav-section slot=\"nav\" {..._props}>\n {children}\n </goa-app-footer-nav-section>\n );\n}\n\nexport default GoabAppFooterNavSection;\n","import { ReactNode, useEffect, useRef, type JSX } from \"react\";\nimport {\n DataAttributes,\n GoabFieldsetOnContinueDetail,\n GoabFormDispatchOn,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, kebab } from \"../common/extract-props\";\n\ninterface WCProps {\n id?: string;\n \"section-title\"?: string;\n \"dispatch-on\"?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-fieldset\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\ninterface GoabFieldsetProps extends DataAttributes {\n /** Content rendered inside the fieldset. */\n children: ReactNode;\n /** Sets the unique identifier for the fieldset. */\n id?: string;\n /** Sets the section title of the fieldset. */\n sectionTitle?: string;\n /** Sets when form field changes are dispatched to the form. @default \"continue\" */\n dispatchOn?: GoabFormDispatchOn;\n /** Callback fired when the fieldset continue action is triggered. */\n onContinue?: (event: GoabFieldsetOnContinueDetail) => void;\n}\n\n/** Container for form inputs and validation. */\nexport function GoabFieldset({\n onContinue,\n children,\n ...rest\n}: GoabFieldsetProps): JSX.Element {\n const ref = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(rest, kebab);\n\n useEffect(() => {\n if (!ref.current) return;\n const current = ref.current;\n\n const continueListener = (e: Event) => {\n const event = (e as CustomEvent<GoabFieldsetOnContinueDetail>).detail;\n return onContinue?.(event);\n };\n\n if (onContinue) {\n current.addEventListener(\"_continue\", continueListener);\n }\n\n return () => {\n if (onContinue) {\n current.removeEventListener(\"_continue\", continueListener);\n }\n };\n }, [ref, onContinue]);\n\n return (\n <goa-fieldset ref={ref} {..._props}>\n {children}\n </goa-fieldset>\n );\n}\n\nexport default GoabFieldset;\n","import { ReactNode, useEffect, useRef } from \"react\";\nimport {\n GoabPublicFormPageButtonVisibility,\n GoabPublicFormPageStep,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, kebab } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n id?: string;\n heading?: string;\n \"sub-heading\"?: string;\n \"section-title\"?: string;\n \"back-url\"?: string;\n type?: string;\n \"button-text\"?: string;\n \"button-visibility\"?: string;\n \"summary-heading\"?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-public-form-page\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\ninterface GoabPublicFormPageProps extends Margins, DataAttributes {\n /** Content rendered inside the form page. */\n children: ReactNode;\n /** Sets the unique identifier for the form page. */\n id?: string;\n /** Sets the heading text displayed at the top of the form page. */\n heading?: string;\n /** Sets the subheading text displayed below the main heading. */\n subHeading?: string;\n /** Sets the heading text used when this page appears in the form summary. */\n summaryHeading?: string;\n /** Sets the section title displayed above the heading. */\n sectionTitle?: string;\n /** Sets the URL for the back navigation link. */\n backUrl?: string;\n /** Sets the type of the form page. @default \"step\" */\n type?: GoabPublicFormPageStep;\n /** Sets the text label for the continue or confirm button. */\n buttonText?: string;\n /** Sets the visibility of the continue button. @default \"visible\" */\n buttonVisibility?: GoabPublicFormPageButtonVisibility;\n /** Callback fired when the form page continues to the next step. */\n onContinue?: (event: Event) => void;\n}\n\n/** Container for form inputs and validation. */\nexport function GoabPublicFormPage({\n onContinue,\n children,\n ...rest\n}: GoabPublicFormPageProps) {\n const ref = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(rest, kebab);\n\n useEffect(() => {\n if (!ref.current) return;\n const current = ref.current;\n\n const continueListener = (e: Event) => {\n onContinue?.(e);\n };\n\n if (onContinue) {\n current.addEventListener(\"_continue\", continueListener);\n }\n\n return () => {\n if (onContinue) {\n current.removeEventListener(\"_continue\", continueListener);\n }\n };\n }, [ref, onContinue]);\n\n return (\n <goa-public-form-page ref={ref} {..._props}>\n {children}\n </goa-public-form-page>\n );\n}\n\nexport default GoabPublicFormPage;\n","import { DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n heading?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-public-form-summary\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\ninterface GoabPublicFormSummaryProps extends DataAttributes {\n /** Sets the heading text displayed above the form summary content. */\n heading?: string;\n}\n\n/** Container for form inputs and validation. */\nexport function GoabPublicFormSummary({\n heading = \"\",\n ...rest\n}: GoabPublicFormSummaryProps) {\n const _props = transformProps<WCProps>({ heading, ...rest }, lowercase);\n\n return <goa-public-form-summary {..._props} />;\n}\n\nexport default GoabPublicFormSummary;\n","import { ReactNode, useRef, useLayoutEffect } from \"react\";\n\nimport {\n DataAttributes,\n GoabFormState,\n GoabPublicFormStatus,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n status?: string;\n name?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-public-form\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\ninterface GoabPublicFormProps extends DataAttributes {\n /** Content rendered inside the public form. */\n children: ReactNode;\n /** The initialization status of the form. Set to \"initializing\" while loading external state, then \"complete\" when ready. @default \"complete\" */\n status?: GoabPublicFormStatus;\n /** A name identifier for the form. Useful for debugging complex forms with multiple nested forms. */\n name?: string;\n /** Callback fired when the form is initialized. */\n onInit?: (event: Event) => void;\n /** Callback fired when the form is completed. */\n onComplete?: (event: GoabFormState) => void;\n /** Callback fired when the form state changes. */\n onStateChange?: (event: GoabFormState) => void;\n}\n\n/** Container for form inputs and validation. */\nexport function GoabPublicForm({\n onInit,\n onComplete,\n onStateChange,\n children,\n ...rest\n}: GoabPublicFormProps) {\n const ref = useRef<HTMLElement>(null);\n const initialized = useRef(false);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n // Use useLayoutEffect to set up listeners before the component mounts\n useLayoutEffect(() => {\n if (!ref.current) return;\n const current = ref.current;\n\n const initListener = (e: Event) => {\n onInit?.(e);\n };\n\n // First time initialization, add init listener immediately\n if (onInit && !initialized.current) {\n current.addEventListener(\"_init\", initListener);\n }\n\n const completeListener = (e: Event) => {\n const detail = (e as CustomEvent).detail;\n onComplete?.(detail);\n };\n\n const stateChangeListener = (e: Event) => {\n const detail = (e as CustomEvent).detail;\n onStateChange?.(detail.data);\n };\n\n if (onComplete) {\n current.addEventListener(\"_complete\", completeListener);\n }\n\n if (onStateChange) {\n current.addEventListener(\"_stateChange\", stateChangeListener);\n }\n\n return () => {\n if (onInit) {\n current.removeEventListener(\"_init\", initListener);\n }\n if (onComplete) {\n current.removeEventListener(\"_complete\", completeListener);\n }\n if (onStateChange) {\n current.removeEventListener(\"_stateChange\", stateChangeListener);\n }\n };\n }, [onInit, onComplete, onStateChange]);\n\n return (\n <goa-public-form ref={ref} {..._props}>\n {children}\n </goa-public-form>\n );\n}\n\nexport default GoabPublicForm;\n","import { ReactNode, useEffect, useRef } from \"react\";\nimport { Margins, DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, kebab } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n id?: string;\n name?: string;\n \"continue-msg\"?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-public-subform\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\ninterface GoabPublicSubformProps extends Margins, DataAttributes {\n /** Content rendered inside the subform. */\n children: ReactNode;\n /** Sets the unique identifier for the subform. */\n id?: string;\n /** Sets the name identifier for the subform. */\n name?: string;\n /** Sets the message displayed on the continue button. */\n continueMsg?: string;\n /** Callback fired when the subform is initialized. */\n onInit?: (event: Event) => void;\n /** Callback fired when the subform state changes. */\n onStateChange?: (event: Event) => void;\n}\n\n/** Container for form inputs and validation. */\nexport function GoabPublicSubform({\n id = \"\",\n name = \"\",\n continueMsg = \"\",\n onInit,\n onStateChange,\n children,\n ...rest\n}: GoabPublicSubformProps) {\n const ref = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(\n { id, name, \"continue-msg\": continueMsg, ...rest },\n kebab,\n );\n\n useEffect(() => {\n if (!ref.current) return;\n const current = ref.current;\n\n const initListener = (e: Event) => {\n onInit?.(e);\n };\n\n const stateChangeListener = (e: Event) => {\n onStateChange?.(e);\n };\n\n if (onInit) {\n current.addEventListener(\"_init\", initListener);\n }\n if (onStateChange) {\n current.addEventListener(\"_stateChange\", stateChangeListener);\n }\n\n return () => {\n if (onInit) {\n current.removeEventListener(\"_init\", initListener);\n }\n if (onStateChange) {\n current.removeEventListener(\"_stateChange\", stateChangeListener);\n }\n };\n }, [ref, onInit, onStateChange]);\n\n return (\n <goa-public-subform ref={ref} {..._props}>\n {children}\n </goa-public-subform>\n );\n}\n\nexport default GoabPublicSubform;\n","import { ReactNode } from \"react\";\nimport { Margins, DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, kebab } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n heading?: string;\n \"section-title\"?: string;\n \"action-button-text\"?: string;\n \"button-visibility\"?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-public-subform-index\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\ninterface GoabPublicSubformIndexProps extends Margins, DataAttributes {\n /** Content rendered inside the subform index. */\n children: ReactNode;\n /** Sets the heading text displayed at the top of the subform index page. */\n heading?: string;\n /** Sets the section title displayed above the heading. */\n sectionTitle?: string;\n /** Sets the text label for the action button that adds a new subform entry. */\n actionButtonText?: string;\n /** Sets the visibility of the action button. @default \"hidden\" */\n buttonVisibility?: \"visible\" | \"hidden\";\n}\n\n/** Container for form inputs and validation. */\nexport function GoabPublicSubformIndex({\n heading = \"\",\n sectionTitle = \"\",\n actionButtonText = \"\",\n buttonVisibility = \"hidden\",\n children,\n ...rest\n}: GoabPublicSubformIndexProps) {\n const _props = transformProps<WCProps>(\n {\n heading,\n \"section-title\": sectionTitle,\n \"action-button-text\": actionButtonText,\n \"button-visibility\": buttonVisibility,\n ...rest,\n },\n kebab,\n );\n\n return (\n <goa-public-subform-index slot=\"subform-index\" {..._props}>\n {children}\n </goa-public-subform-index>\n );\n}\n\nexport default GoabPublicSubformIndex;\n","import { ReactNode } from \"react\";\nimport { DataAttributes, GoabPublicFormTaskStatus } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n status?: GoabPublicFormTaskStatus;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-public-form-task\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\ninterface GoabPublicFormTaskProps extends DataAttributes {\n /** Content rendered inside the task item, typically the task name or description. */\n children: ReactNode;\n /** Sets the status of the task, which determines the badge displayed. @default \"cannot-start\" */\n status?: GoabPublicFormTaskStatus;\n}\n\n/** Container for form inputs and validation. */\nexport function GoabPublicFormTask({\n status = \"cannot-start\",\n children,\n ...rest\n}: GoabPublicFormTaskProps) {\n const _props = transformProps<WCProps>({ status, ...rest }, lowercase);\n\n return <goa-public-form-task {..._props}>{children}</goa-public-form-task>;\n}\n\nexport default GoabPublicFormTask;\n","import { ReactNode } from \"react\";\nimport { Margins, DataAttributes } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n heading?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-public-form-task-list\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\ninterface GoabPublicFormTaskListProps extends Margins, DataAttributes {\n /** Content rendered inside the task list, typically GoabPublicFormTask items. */\n children: ReactNode;\n /** Sets the heading text displayed above the task list. */\n heading?: string;\n}\n\n/** Container for form inputs and validation. */\nexport function GoabPublicFormTaskList({\n children,\n ...rest\n}: GoabPublicFormTaskListProps) {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return <goa-public-form-task-list {..._props}>{children}</goa-public-form-task-list>;\n}\n\nexport default GoabPublicFormTaskList;\n","import {\n GoabFormItemLabelSize,\n GoabFormItemRequirement,\n GoabFormItemType,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\n\nimport type { JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n label?: string;\n labelsize?: GoabFormItemLabelSize;\n requirement?: GoabFormItemRequirement;\n error?: string;\n helptext?: string;\n maxwidth?: string;\n \"public-form-summary-order\"?: number;\n name?: string;\n id?: string;\n testid?: string;\n type?: GoabFormItemType;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-form-item\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabFormItemProps extends Margins, DataAttributes {\n /** Creates a label for the form item. */\n label?: string;\n /** Sets the label size. 'regular' for standard, 'large' for emphasis. @default \"regular\" */\n labelSize?: GoabFormItemLabelSize;\n /** Marks the field with an optional or required label indicator. */\n requirement?: GoabFormItemRequirement;\n /** Error text displayed under the form field. Leave blank to indicate a valid field. Accepts a string or ReactNode for custom error content. */\n error?: string | React.ReactNode;\n /** Help text displayed under the form field to provide additional explanation. Accepts a string or ReactNode for custom help content. */\n helpText?: string | React.ReactNode;\n /** Sets the maximum width of the form item. @default \"none\" */\n maxWidth?: string;\n /** Specifies the input type for appropriate message spacing. Used with checkbox-list or radio-group. */\n type?: GoabFormItemType;\n /** Sets the display order within the form summary. For public-form use only. */\n publicFormSummaryOrder?: number;\n /** Overrides the label value within the form-summary to provide a shorter description. For public-form use only. */\n name?: string;\n /** Content rendered inside the form item, typically an input component. */\n children?: React.ReactNode;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the id attribute on the form item element. */\n id?: string;\n}\n\n/** Wraps an input control with a text label, requirement label, helper text, and error text. */\nexport function GoabFormItem({\n error,\n helpText,\n publicFormSummaryOrder,\n children,\n type = \"\",\n ...rest\n}: GoabFormItemProps): JSX.Element {\n const _props = transformProps<WCProps>({ type, ...rest }, lowercase);\n\n return (\n <goa-form-item\n error={typeof error === \"string\" ? error : undefined}\n helptext={typeof helpText === \"string\" ? helpText : undefined}\n public-form-summary-order={publicFormSummaryOrder}\n {..._props}\n version=\"2\"\n >\n {error && typeof error !== \"string\" && <div slot=\"error\">{error}</div>}\n {helpText && typeof helpText !== \"string\" && <div slot=\"helptext\">{helpText}</div>}\n {children}\n </goa-form-item>\n );\n}\n\nexport default GoabFormItem;\n","import { GoabFormStepStatus } from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n text: string;\n status?: GoabFormStepStatus;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-form-step\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabFormStepProps {\n /** @required The step label text displayed to users. */\n text: string;\n /** The completion status of the step. Affects visual styling and icons. */\n status?: GoabFormStepStatus;\n}\n\n/** Individual step in a multi-step form. */\nexport function GoabFormStep(props: GoabFormStepProps) {\n return <goa-form-step text={props.text} status={props.status} />;\n}\n\nexport default GoabFormStep;\n","import { GoabFormStepperOnChangeDetail, Margins } from \"@abgov/ui-components-common\";\nimport { ReactNode, useEffect, useRef } from \"react\";\n\ninterface WCProps extends Margins {\n ref?: React.RefObject<HTMLElement | null>;\n step?: number;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-form-stepper\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabFormStepperProps extends Margins {\n /** The current step state value (1-based index). Leaving it blank (-1) will allow any step to be accessed. */\n step?: number;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the form stepper, typically GoabFormStep components. */\n children?: ReactNode;\n /** Callback fired when the active step changes. */\n onChange?: (detail: GoabFormStepperOnChangeDetail) => void;\n}\n\n/** Provides a visual representation of a form through a series of steps. */\nexport function GoabFormStepper({\n testId,\n step,\n mt,\n mb,\n ml,\n mr,\n onChange,\n children,\n}: GoabFormStepperProps) {\n const ref = useRef<HTMLInputElement>(null);\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n const current = ref.current;\n const changeListener = (e: unknown) => {\n const detail = (e as CustomEvent<GoabFormStepperOnChangeDetail>).detail;\n onChange?.(detail);\n };\n\n current.addEventListener(\"_change\", changeListener);\n return () => {\n current.removeEventListener(\"_change\", changeListener);\n };\n }, [ref, onChange]);\n\n return (\n <goa-form-stepper\n ref={ref}\n testid={testId}\n step={step}\n mt={mt}\n mr={mr}\n mb={mb}\n ml={ml}\n >\n {children}\n </goa-form-stepper>\n );\n}\n\nexport default GoabFormStepper;\n","import { Margins, Spacing } from \"@abgov/ui-components-common\";\n\nimport type { JSX } from \"react\";\n\ninterface WCProps extends Margins {\n gap?: Spacing;\n minchildwidth: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-grid\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabGridProps extends Margins {\n /** @required Minimum width of the child elements. */\n minChildWidth: string;\n /** Gap between child items. @default \"m\" */\n gap?: Spacing;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the grid layout. */\n children?: React.ReactNode;\n}\n\n/** Arrange a number of components into a responsive grid pattern. */\nexport function GoabGrid({\n gap,\n minChildWidth,\n mt,\n mr,\n mb,\n ml,\n testId,\n children,\n}: GoabGridProps): JSX.Element {\n return (\n <goa-grid\n gap={gap}\n minchildwidth={minChildWidth}\n mt={mt}\n mr={mr}\n mb={mb}\n ml={ml}\n testid={testId}\n >\n {children}\n </goa-grid>\n );\n}\n\nexport default GoabGrid;\n","import type { JSX } from \"react\";\ninterface WCProps {\n heading: string;\n backgroundurl?: string;\n minheight?: string;\n maxcontentwidth?: string;\n backgroundcolor?: string;\n textcolor?: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-hero-banner\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabHeroBannerProps {\n /** @required Main heading text. */\n heading: string;\n /** Background image url. */\n backgroundUrl?: string;\n /** Minimum height of the hero banner. Defaults to 600px when a background image is provided. */\n minHeight?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the hero banner body. */\n children?: React.ReactNode;\n /** Content rendered in the actions slot. */\n actions?: React.ReactNode;\n /** Maximum width of the content area. @default \"100%\" */\n maxContentWidth?: string;\n /** Hero Banner background color when no background image is provided. @default \"#f8f8f8\" */\n backgroundColor?: string;\n /** Text color within the hero banner. */\n textColor?: string;\n}\n\n/** A visual band of text, including an image and a call to action. */\nexport function GoabHeroBanner({\n heading,\n backgroundUrl,\n minHeight,\n maxContentWidth,\n backgroundColor,\n textColor,\n children,\n actions,\n testId,\n}: GoabHeroBannerProps): JSX.Element {\n return (\n <goa-hero-banner\n heading={heading}\n backgroundurl={backgroundUrl}\n minheight={minHeight}\n maxcontentwidth={maxContentWidth}\n backgroundcolor={backgroundColor}\n textcolor={textColor}\n testid={testId}\n >\n {children}\n {actions && <div slot=\"actions\">{actions}</div>}\n </goa-hero-banner>\n );\n}\n\nexport default GoabHeroBanner;\n","import type { JSX } from \"react\";\nexport type GoabHeroBannerActionsType = {\n /** Content rendered inside the hero banner actions slot, typically buttons or links. */\n children?: React.ReactNode;\n};\n\n/** Displays action content in the hero banner actions area. */\nexport function GoabHeroBannerActions({\n children,\n}: GoabHeroBannerActionsType): JSX.Element {\n return <div slot=\"actions\">{children}</div>;\n}\n\nexport default GoabHeroBannerActions;\n","import {\n GoabIconButtonVariant,\n GoabIconSize,\n GoabIconTheme,\n GoabIconType,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef, type JSX, ReactNode } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n icon: GoabIconType;\n size?: GoabIconSize;\n theme?: GoabIconTheme;\n variant?: GoabIconButtonVariant;\n title?: string;\n disabled?: string;\n arialabel?: string;\n action?: string;\n actionArgs?: string;\n actionArg?: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-icon-button\": WCProps &\n React.HTMLAttributes<HTMLButtonElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabIconButtonProps extends Margins, DataAttributes {\n /** @required Sets the icon. */\n icon: GoabIconType;\n /** Sets the size of button. @default \"medium\" */\n size?: GoabIconSize;\n /** Styles the button to show color, light, dark or destructive action. @default \"color\" */\n variant?: GoabIconButtonVariant;\n /** Sets the theme of the icon inside the button. \"outline\" for stroked icons, \"filled\" for solid icons. @default \"outline\" */\n theme?: GoabIconTheme;\n /** Sets the title of the button. */\n title?: string;\n /** Disables the button. */\n disabled?: boolean;\n /** Callback fired when the icon button is clicked. */\n onClick?: () => void;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the aria-label of the button. */\n ariaLabel?: string;\n /** Action identifier passed in click events for event delegation patterns. */\n action?: string;\n /** Multiple argument values passed with the action in click events. */\n actionArgs?: Record<string, unknown>;\n /** Single argument value passed with the action in click events. */\n actionArg?: string;\n /** Content rendered inside the icon button. */\n children?: ReactNode;\n}\n\n/** A compact button with an icon and no text. */\nexport function GoabIconButton({\n variant = \"color\",\n size = \"medium\",\n theme = \"outline\",\n disabled,\n onClick,\n actionArgs,\n actionArg,\n children,\n ...rest\n}: GoabIconButtonProps): JSX.Element {\n const ref = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>({ variant, size, theme, ...rest }, lowercase);\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n if (!onClick) {\n return;\n }\n const current = ref.current;\n const listener = () => {\n onClick?.();\n };\n\n current.addEventListener(\"_click\", listener);\n return () => {\n current.removeEventListener(\"_click\", listener);\n };\n }, [ref, onClick]);\n\n return (\n <goa-icon-button\n ref={ref}\n disabled={disabled ? \"true\" : undefined}\n action-arg={actionArg}\n action-args={JSON.stringify(actionArgs)}\n {..._props}\n >\n {children}\n </goa-icon-button>\n );\n}\n","import {\n GoabIconOverridesType,\n GoabIconSize,\n GoabIconTheme,\n GoabIconType,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\n\nimport type { JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface IonIconElement extends HTMLElement {}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-icon\": WCProps & React.HTMLAttributes<IonIconElement>;\n }\n }\n}\n\nexport interface GoabIconProps extends Margins, DataAttributes {\n /** @required The icon type to display. See GoabIconType for available icons. */\n type: GoabIconType | GoabIconOverridesType;\n /** Sets the size of the icon. Accepts numeric (1-6) or named sizes. @default \"medium\" */\n size?: GoabIconSize;\n /** Sets the icon theme. 'outline' shows stroked icons, 'filled' shows solid icons. @default \"outline\" */\n theme?: GoabIconTheme;\n /** When true, inverts the icon colors for use on dark backgrounds. */\n inverted?: string | boolean; // TODO: Change type to only boolean\n /** Sets a custom fill color for the icon. Accepts any valid CSS color value. */\n fillColor?: string;\n /** Sets the opacity of the icon from 0 (transparent) to 1 (opaque). @default 1 */\n opacity?: number;\n /** Adds an accessible title to the icon SVG. Used by screen readers. */\n title?: string;\n /** Defines how the icon will be announced by screen readers. */\n ariaLabel?: string;\n /** Sets the ARIA role for the icon. Use 'presentation' for decorative icons. @default \"img\" */\n role?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\ninterface WCProps extends Margins {\n type: GoabIconType | GoabIconOverridesType;\n theme?: GoabIconTheme;\n size?: GoabIconSize;\n inverted?: string;\n fillcolor?: string;\n opacity?: number;\n title?: string;\n arialabel?: string;\n role?: string;\n testid?: string;\n}\n\n/** A simple and universal graphic symbol representing an action, object, or concept to help guide the user. */\nexport function GoabIcon({ inverted, ...rest }: GoabIconProps): JSX.Element {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-icon\n inverted={\n typeof inverted === \"boolean\" ? (inverted ? \"true\" : undefined) : inverted\n }\n {..._props}\n />\n );\n}\n","import { useEffect, useRef, type JSX } from \"react\";\nimport { format, isValid, parseISO } from \"date-fns\";\nimport {\n GoabAutoCapitalize,\n GoabDate,\n GoabIconType,\n GoabInputOnBlurDetail,\n GoabInputOnChangeDetail,\n GoabInputOnFocusDetail,\n GoabInputOnKeyPressDetail,\n GoabInputSize,\n GoabInputType,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n type?: GoabInputType;\n name: string;\n value?: string;\n id?: string;\n autocapitalize?: GoabAutoCapitalize;\n autocomplete?: string;\n debounce?: number;\n placeholder?: string;\n leadingicon?: string;\n trailingicon?: string;\n variant: string;\n disabled?: string;\n error?: string;\n readonly?: string;\n focused?: string;\n handletrailingiconclick: string;\n width?: string;\n prefix?: string;\n suffix?: string;\n arialabel?: string;\n testid?: string;\n textalign?: string;\n size?: GoabInputSize;\n\n // type=number\n min?: string | number;\n max?: string | number;\n step?: number;\n maxlength?: number;\n\n version?: string;\n trailingiconarialabel?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-input\": WCProps &\n React.HTMLAttributes<HTMLInputElement> & {\n ref?: React.RefObject<HTMLInputElement | null>;\n };\n }\n }\n}\n\ninterface BaseProps extends Margins, DataAttributes {\n /** Name of input value that is received in event detail payloads. */\n name: string;\n\n /** Sets the id attribute of the input element. */\n id?: string;\n /** Debounce delay in milliseconds before firing the change event. 0 means no debounce. */\n debounce?: number;\n /** Sets the input disabled state. */\n disabled?: boolean;\n /** Controls automatic capitalization behavior on supported mobile browsers. */\n autoCapitalize?: GoabAutoCapitalize;\n /** Sets the autocomplete attribute for the input element. */\n autoComplete?: string;\n /** Sets placeholder text when the input is empty. */\n placeholder?: string;\n /** Sets the icon shown before the value. */\n leadingIcon?: GoabIconType;\n /** Sets the icon shown after the value. */\n trailingIcon?: GoabIconType;\n /** Callback fired when the trailing icon is clicked. */\n onTrailingIconClick?: () => void;\n /** Sets the visual style variant. @default \"goa\" */\n variant?: \"goa\" | \"bare\";\n /** Sets focus on initial render or controlled updates. */\n focused?: boolean;\n /** Sets the readonly state. */\n readonly?: boolean;\n /** Sets the error state styling. */\n error?: boolean;\n /** Sets the width of the input field. */\n width?: string;\n /** @deprecated Use leadingContent instead. */\n prefix?: string;\n /** @deprecated Use trailingContent instead. */\n suffix?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the aria-label used by assistive technologies. */\n ariaLabel?: string;\n /** Sets content in the leading slot. */\n leadingContent?: React.ReactNode;\n /** Sets content in the trailing slot. */\n trailingContent?: React.ReactNode;\n /** Sets the maximum number of characters. */\n maxLength?: number;\n /** Sets the aria-label for an interactive trailing icon. */\n trailingIconAriaLabel?: string;\n /** Sets text alignment. @default \"left\" */\n textAlign?: \"left\" | \"right\";\n /** Sets the input size. @default \"default\" */\n size?: GoabInputSize;\n}\n\ntype OnChange<T = string> = (detail: GoabInputOnChangeDetail<T>) => void;\ntype OnFocus<T = string> = (detail: GoabInputOnFocusDetail<T>) => void;\ntype OnBlur<T = string> = (detail: GoabInputOnBlurDetail<T>) => void;\ntype OnKeyPress<T = string> = (detail: GoabInputOnKeyPressDetail<T>) => void;\n\nexport interface GoabInputProps extends BaseProps {\n /** Callback fired when the input value changes. Receives GoabInputOnChangeDetail. */\n onChange?: OnChange<string>;\n /** Bound to the current value of the input field. */\n value?: string;\n /** Minimum value. Supports any number, or ISO 8601 format for date/datetime types. */\n min?: number | string;\n /** Maximum value. Supports any number, or ISO 8601 format for date/datetime types. */\n max?: number | string;\n /** How much a number or date value should change by. @default 1 */\n step?: number;\n /** Callback fired when the input receives focus. Receives GoabInputOnFocusDetail. */\n onFocus?: OnFocus<string>;\n /** Callback fired when the input loses focus. Receives GoabInputOnBlurDetail. */\n onBlur?: OnBlur<string>;\n /** Callback fired when a key is pressed in the input. Receives GoabInputOnKeyPressDetail. */\n onKeyPress?: OnKeyPress<string>;\n}\n\ninterface GoabNumberInputProps extends BaseProps {\n onChange?: OnChange<number>;\n value?: number;\n min?: number;\n max?: number;\n step?: number;\n onFocus?: OnFocus<number>;\n onBlur?: OnBlur<number>;\n onKeyPress?: OnKeyPress<number>;\n}\n\ninterface GoabDateInputProps extends BaseProps {\n onChange?: OnChange<GoabDate>;\n value?: GoabDate;\n min?: GoabDate;\n max?: GoabDate;\n step?: number;\n onFocus?: OnFocus<GoabDate>;\n onBlur?: OnBlur<GoabDate>;\n onKeyPress?: OnKeyPress<GoabDate>;\n}\n\n/** A single-line field where users can input and edit text. */\nexport function GoabInput({\n variant = \"goa\",\n textAlign = \"left\",\n size = \"default\",\n focused,\n disabled,\n readonly,\n error,\n leadingContent,\n trailingContent,\n onTrailingIconClick,\n onChange,\n onFocus,\n onBlur,\n onKeyPress,\n ...rest\n}: GoabInputProps & {\n /** Sets the type of the input field. @default \"text\" */\n type?: GoabInputType;\n}): JSX.Element {\n const ref = useRef<HTMLInputElement>(null);\n\n const _props = transformProps<WCProps>(\n { variant, textalign: textAlign, size, ...rest },\n lowercase,\n );\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n const current = ref.current;\n const changeListener = (e: Event) => {\n const detail = (e as CustomEvent<GoabInputOnChangeDetail>).detail;\n onChange?.({ ...detail, event: e });\n };\n const clickListener = () => {\n onTrailingIconClick?.();\n };\n\n const focusListener = (e: Event) => {\n const detail = (e as CustomEvent<GoabInputOnFocusDetail>).detail;\n onFocus?.({ ...detail, event: e });\n };\n\n const blurListener = (e: Event) => {\n const detail = (e as CustomEvent<GoabInputOnBlurDetail>).detail;\n onBlur?.({ ...detail, event: e });\n };\n\n const keypressListener = (e: Event) => {\n const detail = (e as CustomEvent<GoabInputOnKeyPressDetail>).detail;\n onKeyPress?.({ ...detail, event: e });\n };\n\n current.addEventListener(\"_change\", changeListener);\n current.addEventListener(\"_trailingIconClick\", clickListener);\n current.addEventListener(\"_focus\", focusListener);\n current.addEventListener(\"_blur\", blurListener);\n current.addEventListener(\"_keyPress\", keypressListener);\n\n return () => {\n current.removeEventListener(\"_change\", changeListener);\n current.removeEventListener(\"_trailingIconClick\", clickListener);\n current.removeEventListener(\"_focus\", focusListener);\n current.removeEventListener(\"_blur\", blurListener);\n current.removeEventListener(\"_keyPress\", keypressListener);\n };\n }, [ref, onChange, onTrailingIconClick, onFocus, onBlur, onKeyPress]);\n\n return (\n <goa-input\n ref={ref}\n {..._props}\n focused={focused ? \"true\" : undefined}\n disabled={disabled ? \"true\" : undefined}\n readonly={readonly ? \"true\" : undefined}\n error={error ? \"true\" : undefined}\n handletrailingiconclick={onTrailingIconClick ? \"true\" : \"false\"}\n version=\"2\"\n >\n {leadingContent && <div slot=\"leadingContent\">{leadingContent}</div>}\n {trailingContent && <div slot=\"trailingContent\">{trailingContent}</div>}\n </goa-input>\n );\n}\n\nconst onDateChangeHandler = (onChange?: OnChange<GoabDate>) => {\n return ({ name, value, event }: GoabInputOnChangeDetail<string | Date>) => {\n if (!value) {\n onChange?.({ name, value: \"\", event });\n return;\n }\n // valid string date\n if (typeof value === \"string\" && isValid(new Date(value))) {\n onChange?.({ name, value: parseISO(value), event });\n return;\n }\n // valid date\n if (isValid(value)) {\n onChange?.({ name, value, event });\n return;\n }\n };\n};\n\nconst onTimeChangeHandler = (onChange?: OnChange) => {\n return ({ name, value, event }: GoabInputOnChangeDetail) => {\n if (!value) {\n onChange?.({ name, value: \"\", event });\n return;\n }\n onChange?.({ name, value, event });\n };\n};\n\nfunction toString(value: GoabDate | null | undefined, tmpl = \"yyyy-MM-dd\"): string {\n if (!value) {\n return \"\";\n }\n if (typeof value === \"string\") {\n return format(parseISO(value), tmpl);\n }\n if (value.toISOString() === new Date(0).toISOString()) {\n return \"\";\n }\n return format(value, tmpl);\n}\n\n/** A single-line field where users can input and edit text. */\nexport function GoabInputText(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"text\" />;\n}\n\n/** A single-line field where users can enter masked password text. */\nexport function GoabInputPassword(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"password\" />;\n}\n\n/** A single-line field where users can enter or select a date. */\nexport function GoabInputDate({\n value,\n min = \"\",\n max = \"\",\n ...props\n}: GoabDateInputProps): JSX.Element {\n return (\n <GoabInput\n {...props}\n type=\"date\"\n onChange={onDateChangeHandler(props.onChange)}\n min={toString(min)}\n max={toString(max)}\n value={toString(value)}\n />\n );\n}\n\n/** A single-line field where users can enter or select a time. */\nexport function GoabInputTime({\n value,\n min = \"\",\n max = \"\",\n ...props\n}: GoabInputProps): JSX.Element {\n return (\n <GoabInput\n {...props}\n onChange={onTimeChangeHandler(props.onChange)}\n value={value}\n type=\"time\"\n />\n );\n}\n\n/** A single-line field where users can enter a date and time. */\nexport function GoabInputDateTime({\n value,\n min = \"\",\n max = \"\",\n ...props\n}: GoabDateInputProps): JSX.Element {\n return (\n <GoabInput\n {...props}\n onChange={onDateChangeHandler(props.onChange)}\n value={toString(value, \"yyyy-MM-dd'T'HH:mm\")}\n type=\"datetime-local\"\n />\n );\n}\n\n/** A single-line field where users can enter an email address. */\nexport function GoabInputEmail(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"email\" />;\n}\n\n/** A single-line field where users can enter search terms. */\nexport function GoabInputSearch(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"search\" trailingIcon=\"search\" />;\n}\n\n/** A single-line field where users can enter a URL. */\nexport function GoabInputUrl(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"url\" />;\n}\n\n/** A single-line field where users can enter a phone number. */\nexport function GoabInputTel(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"tel\" />;\n}\n\n/** A control that allows users to select a file for upload. */\nexport function GoabInputFile(props: GoabInputProps): JSX.Element {\n return (\n <input\n id={props.id}\n name={props.name}\n type=\"file\"\n onChange={(e) =>\n props.onChange?.({\n name: e.target.name,\n value: e.target.value,\n event: e.nativeEvent,\n })\n }\n style={{ backgroundColor: \"revert\" }}\n />\n );\n}\n\n/** A single-line field where users can enter or select a month. */\nexport function GoabInputMonth(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"month\" />;\n}\n\n/** A single-line field where users can input and edit numeric values. */\nexport function GoabInputNumber({\n min = Number.MIN_VALUE,\n max = Number.MAX_VALUE,\n value,\n textAlign = \"right\",\n ...props\n}: GoabNumberInputProps): JSX.Element {\n const onNumberChange = ({ name, value, event }: GoabInputOnChangeDetail) => {\n props.onChange?.({ name, value: parseFloat(value), event });\n };\n const onFocus = ({ name, value, event }: GoabInputOnFocusDetail) => {\n props.onFocus?.({ name, value: parseFloat(value), event });\n };\n const onBlur = ({ name, value, event }: GoabInputOnBlurDetail) => {\n props.onBlur?.({ name, value: parseFloat(value), event });\n };\n const onKeyPress = ({ name, value, key, event }: GoabInputOnKeyPressDetail) => {\n props.onKeyPress?.({ name, value: parseFloat(value), key: parseInt(key), event });\n };\n return (\n <GoabInput\n {...props}\n onChange={onNumberChange}\n min={min?.toString()}\n max={max?.toString()}\n value={value?.toString()}\n onFocus={onFocus}\n onBlur={onBlur}\n type=\"number\"\n onKeyPress={onKeyPress}\n textAlign={textAlign}\n />\n );\n}\n\n/** A range input where users can choose a numeric value within minimum and maximum limits. */\nexport function GoabInputRange(props: GoabInputProps): JSX.Element {\n return <GoabInput {...props} type=\"range\" />;\n}\n\nexport default GoabInput;\n","interface WCProps {\n testid?: string;\n progress?: number | null;\n percentVisibility?: \"visible\" | \"hidden\" | undefined;\n ariaLabel?: string;\n ariaLabelledBy?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-linear-progress\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabLinearProgressProps {\n /** Progress value (0-100). When undefined, shows an indeterminate loading animation. */\n progress?: number | null;\n /** Controls visibility of the percentage text. @default \"visible\" */\n percentVisibility?: \"visible\" | \"hidden\" | undefined;\n /** Accessible label for the progress bar. */\n ariaLabel?: string;\n /** ID of the element that labels this progress bar. */\n ariaLabelledBy?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Provide visual feedback to users while loading. */\nexport const GoabLinearProgress = ({\n progress,\n percentVisibility,\n ariaLabel,\n ariaLabelledBy,\n testId,\n}: GoabLinearProgressProps) => {\n return (\n <goa-linear-progress\n progress={progress}\n percent-visibility={percentVisibility}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n testid={testId}\n ></goa-linear-progress>\n );\n};\n\nexport default GoabLinearProgress;\n","import { ReactNode } from \"react\";\nimport {\n GoabIconType,\n GoabLinkColor,\n GoabLinkSize,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n leadingicon?: GoabIconType;\n trailingicon?: GoabIconType;\n action?: string;\n actionArgs?: string;\n actionArg?: string;\n testid?: string;\n color?: GoabLinkColor;\n size?: GoabLinkSize;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-link\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabLinkProps extends Margins, DataAttributes {\n /** @required Content rendered inside the link. */\n children: ReactNode;\n /** Icon displayed before the link text. */\n leadingIcon?: GoabIconType;\n /** Icon displayed after the link text. */\n trailingIcon?: GoabIconType;\n /** Custom action event name to dispatch when the link is clicked. */\n action?: string;\n /** Object of arguments to pass with the action event. */\n actionArgs?: Record<string, unknown>;\n /** Single argument to pass with the action event. Deprecated, use actionArgs instead. */\n actionArg?: string;\n /** Sets the color theme. 'interactive' for blue, 'dark' for black, 'light' for white text. @default \"interactive\" */\n color?: GoabLinkColor;\n /** Sets the text size and corresponding icon size. @default \"medium\" */\n size?: GoabLinkSize;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Wraps an anchor element to add icons or margins. */\nexport function GoabLink({\n actionArgs,\n actionArg,\n color = \"interactive\",\n size = \"medium\",\n children,\n ...rest\n}: GoabLinkProps) {\n const _props = transformProps<WCProps>({ color, size, ...rest }, lowercase);\n\n return (\n <goa-link action-arg={actionArg} action-args={JSON.stringify(actionArgs)} {..._props}>\n {children}\n </goa-link>\n );\n}\n\nexport default GoabLink;\n","import { ReactNode } from \"react\";\nimport { DataAttributes, GoabIconType, GoabLinkButtonType, Margins } from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n type?: GoabLinkButtonType;\n leadingicon?: GoabIconType;\n trailingicon?: GoabIconType;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-link-button\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\ninterface GoALinkButtonProps extends Margins, DataAttributes {\n /** @deprecated Use GoabButton instead. Sets the type of button. */\n type?: GoabLinkButtonType;\n /** @deprecated Use GoabButton instead. Icon displayed before the button text. */\n leadingIcon?: GoabIconType;\n /** @deprecated Use GoabButton instead. Icon displayed after the button text. */\n trailingIcon?: GoabIconType;\n children: ReactNode;\n}\n\nexport function GoALinkButton({\n type = \"primary\",\n children,\n ...rest\n}: GoALinkButtonProps) {\n const _props = transformProps<WCProps>(\n { type, ...rest },\n lowercase\n );\n\n return (\n <goa-link-button {..._props}>\n {children}\n </goa-link-button>\n );\n}\n\nexport default GoALinkButton;\n","import {\n DataAttributes,\n GoabButtonSize,\n GoabButtonType,\n GoabButtonVariant,\n GoabIconType,\n GoabMenuButtonOnActionDetail,\n} from \"@abgov/ui-components-common\";\nimport { ReactNode, type JSX, useRef, useEffect } from \"react\";\nimport { transformProps, kebab } from \"../common/extract-props\";\n\ninterface WCProps {\n text?: string;\n type: GoabButtonType;\n size?: GoabButtonSize;\n variant?: GoabButtonVariant;\n \"max-width\"?: string;\n \"leading-icon\"?: GoabIconType;\n \"aria-label\"?: string;\n testid?: string;\n ref: React.RefObject<HTMLElement | null>;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-menu-button\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabMenuButtonProps extends DataAttributes {\n /** The button label text. When provided, displays as a text button with a dropdown icon. */\n text?: string;\n /** The button style variant. @default \"primary\" */\n type?: GoabButtonType;\n /** Sets the size of the button. @default \"normal\" */\n size?: GoabButtonSize;\n /** Sets the color variant for semantic meaning. @default \"normal\" */\n variant?: GoabButtonVariant;\n /** Maximum width of the dropdown menu. */\n maxWidth?: string;\n /** Icon displayed before the button text. When no text is provided, displays as an icon button. */\n leadingIcon?: GoabIconType;\n /** Sets the aria-label for the icon button in icon-only mode. @default \"Open menu\" */\n ariaLabel?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Callback fired when a menu action is selected. */\n onAction?: (detail: GoabMenuButtonOnActionDetail) => void;\n /** Content rendered inside the menu button, typically GoabMenuAction items. */\n children?: ReactNode;\n}\n\n/** A button with more than one action. */\nexport function GoabMenuButton({\n type = \"primary\",\n testId,\n onAction,\n children,\n ...rest\n}: GoabMenuButtonProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>({ type, testid: testId, ...rest }, kebab);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n if (!onAction) {\n return;\n }\n const current = el.current;\n\n const listener = (e: Event) => {\n const detail = (e as CustomEvent).detail as GoabMenuButtonOnActionDetail;\n onAction?.(detail);\n };\n\n current.addEventListener(\"_action\", listener);\n return () => {\n current.removeEventListener(\"_action\", listener);\n };\n }, [el, onAction]);\n\n return (\n // @ts-expect-error - stable WCProps requires text, but experimental supports icon-only mode\n <goa-menu-button {..._props} version=\"2\" ref={el}>\n {children}\n </goa-menu-button>\n );\n}\n\nexport default GoabMenuButton;\n","import { DataAttributes, GoabIconType } from \"@abgov/ui-components-common\";\nimport type { JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps {\n text: string;\n action: string;\n icon?: GoabIconType;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-menu-action\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabMenuActionProps extends DataAttributes {\n /** @required Display text for the menu action. */\n text: string;\n /** @required Action identifier included in the click event. */\n action: string;\n /** Icon displayed before the text. */\n icon?: GoabIconType;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Individual action item within a menu button. */\nexport function GoabMenuAction(props: GoabMenuActionProps): JSX.Element {\n const _props = transformProps<WCProps>(props, lowercase);\n\n return <goa-menu-action {..._props}></goa-menu-action>;\n}\n\nexport default GoabMenuAction;\n","import { GoabLinkTarget, GoabServiceLevel } from \"@abgov/ui-components-common\";\n\nimport { useEffect, useRef, type JSX } from \"react\";\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-microsite-header\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\ninterface WCProps {\n type: GoabServiceLevel;\n version?: string;\n feedbackurl?: string;\n maxcontentwidth?: string;\n feedbackurltarget?: GoabLinkTarget;\n headerurltarget?: GoabLinkTarget;\n hasfeedbackhandler?: string;\n ref: React.RefObject<HTMLElement | null>;\n testid?: string;\n}\n\nexport interface GoabHeaderProps {\n /** @required The service type which determines the badge style. \"live\" shows official government site text, \"alpha\" and \"beta\" show development stage badges. */\n type: GoabServiceLevel;\n /** App or service version displayed on the right side of the header. */\n version?: string | React.ReactNode;\n /** URL to a feedback page displayed when provided. */\n feedbackUrl?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Maximum width of the content area. @default \"100%\" */\n maxContentWidth?: string;\n /** Sets the target attribute for the feedback URL link. @default \"blank\" */\n feedbackUrlTarget?: GoabLinkTarget;\n /** Sets the target attribute for the header link. @default \"blank\" */\n headerUrlTarget?: GoabLinkTarget;\n /** Callback fired when the feedback link is clicked, enables custom feedback handling. */\n onFeedbackClick?: () => void;\n}\n\n/** Communicate what stage the service is at, connect to Alberta.ca, and gather feedback on your service. */\nexport function GoabMicrositeHeader({\n type,\n version,\n feedbackUrl,\n maxContentWidth,\n feedbackUrlTarget,\n headerUrlTarget,\n testId,\n onFeedbackClick,\n}: GoabHeaderProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n if (!onFeedbackClick) {\n return;\n }\n const current = el.current;\n const listener = () => {\n onFeedbackClick();\n };\n\n current.addEventListener(\"_feedbackClick\", listener);\n return () => {\n current.removeEventListener(\"_feedbackClick\", listener);\n };\n }, [el, onFeedbackClick]);\n\n return (\n <goa-microsite-header\n ref={el}\n type={type}\n version={typeof version === \"string\" ? version : undefined}\n feedbackurl={feedbackUrl}\n testid={testId}\n maxcontentwidth={maxContentWidth}\n feedbackurltarget={feedbackUrlTarget}\n headerurltarget={headerUrlTarget}\n hasfeedbackhandler={onFeedbackClick ? \"true\" : \"false\"}\n >\n {version && typeof version !== \"string\" && <div slot=\"version\">{version}</div>}\n </goa-microsite-header>\n );\n}\n\nexport default GoabMicrositeHeader;\n","import {\n GoabModalCalloutVariant,\n GoabModalRole,\n GoabModalTransition,\n} from \"@abgov/ui-components-common\";\nimport { ReactElement, ReactNode, RefObject, useEffect, useRef, type JSX } from \"react\";\n\ninterface WCProps {\n ref: RefObject<HTMLElement | null>;\n heading?: ReactNode;\n open?: string;\n maxwidth?: string;\n closable: string;\n /**\n * @deprecated The role property is deprecated and will be removed in a future version.\n * The modal will always use role=\"dialog\".\n */\n role?: GoabModalRole;\n transition?: GoabModalTransition;\n calloutvariant?: GoabModalCalloutVariant;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-modal\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabModalProps {\n /** The heading text displayed at the top of the modal. */\n heading?: ReactNode;\n /** Set the max allowed width of the modal. @default \"60ch\" */\n maxWidth?: string;\n /** Content rendered in the modal's actions slot, typically action buttons. */\n actions?: ReactElement<any>;\n /** Callback fired when the modal is closed. When provided, enables the close button and backdrop click-to-close behavior. */\n onClose?: () => void;\n /** Sets the animation transition when opening/closing. 'fast' or 'slow' for animated, 'none' for instant. */\n transition?: GoabModalTransition;\n /** Content rendered inside the modal body. */\n children?: ReactNode;\n /** Controls if the modal is visible or not. */\n open?: boolean;\n /** Sets the context and colour of the callout modal. Required when used as a callout type. */\n calloutVariant?: GoabModalCalloutVariant;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /**\n * @deprecated The role property is deprecated and will be removed in a future version.\n * The modal will always use role=\"dialog\".\n */\n role?: GoabModalRole;\n}\n\n/** An overlay that appears in front of all other content, and requires a user to take an action before continuing. */\nexport function GoabModal({\n heading,\n children,\n maxWidth,\n open,\n actions,\n transition,\n calloutVariant,\n onClose,\n testId,\n}: GoabModalProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n const current = el.current;\n const listener = (e: Event) => {\n if (e.target !== current) {\n return;\n }\n onClose?.();\n };\n\n current.addEventListener(\"_close\", listener);\n return () => {\n current.removeEventListener(\"_close\", listener);\n };\n }, [el, onClose]);\n\n return (\n <goa-modal\n ref={el}\n open={open ? \"true\" : undefined}\n closable={onClose ? \"true\" : \"false\"}\n heading={typeof heading === \"string\" ? heading : undefined}\n maxwidth={maxWidth}\n transition={transition}\n calloutvariant={calloutVariant}\n testid={testId}\n version=\"2\"\n >\n {heading && typeof heading !== \"string\" && <div slot=\"heading\">{heading}</div>}\n {actions && <div slot=\"actions\">{actions}</div>}\n {children}\n </goa-modal>\n );\n}\n\nexport default GoabModal;\n","import {\n GoabAriaLiveType,\n GoabNotificationEmphasis,\n GoabNotificationType,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef } from \"react\";\n\ninterface WCProps {\n ref: React.RefObject<HTMLElement | null>;\n type: GoabNotificationType;\n maxcontentwidth?: string;\n arialive?: GoabAriaLiveType;\n testid?: string;\n emphasis?: GoabNotificationEmphasis;\n compact?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-notification\": WCProps & React.HTMLAttributes<HTMLButtonElement>;\n }\n }\n}\n\nexport interface GoabNotificationProps {\n /** Define the context and colour of the notification. */\n type?: GoabNotificationType;\n /** Indicates how assistive technology should handle updates to the live region. @default \"polite\" */\n ariaLive?: GoabAriaLiveType;\n /** Maximum width of the content area. @default \"100%\" */\n maxContentWidth?: string;\n /** Sets the visual prominence. 'high' for full background, 'low' for a bordered style. @default \"high\" */\n emphasis?: GoabNotificationEmphasis;\n /** When true, reduces padding for a more compact notification. */\n compact?: boolean;\n /** Content rendered inside the notification. */\n children?: React.ReactNode;\n /** Callback fired when the notification is dismissed. */\n onDismiss?: () => void;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Display important page level information or notifications. */\nexport const GoabNotification = ({\n type = \"information\",\n emphasis = \"high\",\n compact,\n ariaLive,\n maxContentWidth,\n children,\n testId,\n onDismiss,\n}: GoabNotificationProps) => {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n const current = el.current;\n const listener = () => {\n onDismiss?.();\n };\n\n current.addEventListener(\"_dismiss\", listener);\n return () => {\n current.removeEventListener(\"_dismiss\", listener);\n };\n }, [el, onDismiss]);\n\n return (\n <goa-notification\n ref={el}\n type={type}\n testid={testId}\n maxcontentwidth={maxContentWidth}\n arialive={ariaLive}\n emphasis={emphasis}\n compact={compact ? \"true\" : undefined}\n version=\"2\"\n >\n {children}\n </goa-notification>\n );\n};\n\nexport default GoabNotification;\n","import { ReactNode, type JSX } from \"react\";\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-one-column-layout\": React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabPageProps {\n /** Content rendered inside the one-column layout. */\n children?: ReactNode;\n}\n\nexport type PageProps = GoabPageProps;\n\n/** Organizes page content in a single responsive column. */\nexport function GoabOneColumnLayout(props: GoabPageProps): JSX.Element {\n return <goa-one-column-layout>{props.children}</goa-one-column-layout>;\n}\n\nexport default GoabOneColumnLayout;\n","import { GoabPageBlockSize } from \"@abgov/ui-components-common\";\nimport { ReactNode, type JSX } from \"react\";\n\ninterface WCProps {\n width?: GoabPageBlockSize;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-page-block\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabPageBlockProps {\n /** Maximum width of the content area. Use \"full\" for 100% width or a CSS dimension like \"1200px\". @default \"full\" */\n width?: GoabPageBlockSize;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the page block. */\n children?: ReactNode;\n}\n\n// legacy name\nexport type PageBlockProps = GoabPageBlockProps;\n\n/** Full-width section with optional background. */\nexport function GoabPageBlock(props: PageBlockProps): JSX.Element {\n return (\n <goa-page-block width={props.width} testid={props.testId}>\n {props.children}\n </goa-page-block>\n );\n}\n","import { Margins } from \"@abgov/ui-components-common\";\nimport { ReactNode, type JSX } from \"react\";\n\ninterface WCProps extends Margins {\n current?: number;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-pages\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabPagesProps extends Margins {\n /** The currently visible page (1-based index). @default 1 */\n current?: number;\n /** Page content to show or hide based on the current page index. */\n children?: ReactNode;\n}\n\n/** Container for paginated content views. */\nexport function GoabPages(props: GoabPagesProps): JSX.Element {\n return (\n <goa-pages\n current={props.current}\n ml={props.ml}\n mr={props.mr}\n mt={props.mt}\n mb={props.mb}\n >\n {props.children}\n </goa-pages>\n );\n}\n\nexport default GoabPages;\n","import { GoabPaginationOnChangeDetail, Margins } from \"@abgov/ui-components-common\";\nimport { useEffect, useRef } from \"react\";\n\ninterface WCProps extends Margins {\n ref?: React.RefObject<HTMLElement | null>;\n itemcount: number;\n perpagecount?: number;\n pagenumber: number;\n variant?: \"all\" | \"links-only\";\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-pagination\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabPaginationProps extends Margins {\n /** @required Total number of data items within all pages. */\n itemCount: number;\n /** @required The current page being viewed (non-zero based). */\n pageNumber: number;\n /** @required Callback fired when the user navigates to a different page. */\n onChange: (detail: GoabPaginationOnChangeDetail) => void;\n /** Number of data items shown per page. @default 10 */\n perPageCount?: number;\n /** Controls which nav controls are visible. @default \"all\" */\n variant?: \"all\" | \"links-only\";\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n// legacy\nexport type PaginationProps = GoabPaginationProps;\n\n/** Help users navigation between multiple pages or screens as part of a set. */\nexport function GoabPagination({ onChange, ...props }: GoabPaginationProps) {\n const ref = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n const current = ref.current;\n const changeListener = (e: Event) => {\n const detail = (e as CustomEvent<GoabPaginationOnChangeDetail>).detail;\n onChange(detail);\n };\n\n current.addEventListener(\"_change\", changeListener);\n return () => {\n current.removeEventListener(\"_change\", changeListener);\n };\n }, [ref, onChange]);\n\n return (\n <goa-pagination\n ref={ref}\n itemcount={props.itemCount}\n perpagecount={props.perPageCount}\n pagenumber={props.pageNumber}\n variant={props.variant}\n mt={props.mt}\n mb={props.mb}\n ml={props.ml}\n mr={props.mr}\n testid={props.testId}\n version=\"2\"\n />\n );\n}\n\nexport default GoabPagination;\n","import {\n DataAttributes,\n GoabPopoverPosition,\n Margins,\n} from \"@abgov/ui-components-common\";\nimport { ReactNode, type JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n maxwidth?: string;\n minwidth?: string;\n padded?: string;\n position?: GoabPopoverPosition;\n relative?: string;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-popover\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabPopoverProps extends Margins, DataAttributes {\n /** Content rendered inside the popover body. */\n children: ReactNode;\n /** @required Sets the element used as the popover trigger. */\n target: ReactNode;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the maximum width of the popover container. @default \"320px\" */\n maxWidth?: string;\n /** Sets the minimum width of the popover container. */\n minWidth?: string;\n /** Sets if the popover has padding. Use false when content needs to be flush with boundaries. @default true */\n padded?: boolean;\n /** Provides control to where the popover content is positioned. @default \"auto\" */\n position?: GoabPopoverPosition;\n /** @deprecated This property has no effect and will be removed in a future version. */\n relative?: boolean;\n}\n\n/** A small overlay that opens on demand, used in other components. */\nexport function GoabPopover({\n target,\n padded,\n relative,\n children,\n ...rest\n}: GoabPopoverProps): JSX.Element {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-popover\n padded={typeof padded === \"undefined\" ? undefined : padded ? \"true\" : \"false\"}\n relative={relative ? \"true\" : undefined}\n {..._props}\n >\n {children}\n {target && <div slot=\"target\">{target}</div>}\n </goa-popover>\n );\n}\n\nexport default GoabPopover;\n","import { ReactNode, useEffect, useRef, type JSX } from \"react\";\n\ninterface WCProps {\n open?: boolean;\n heading?: string;\n width?: string;\n testid?: string;\n version?: string;\n ref: React.RefObject<HTMLElement | null>;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-push-drawer\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabPushDrawerProps {\n /** @required Content rendered inside the push drawer body. */\n children: ReactNode;\n /** @required Callback fired when the push drawer is closed. */\n onClose: () => void;\n /** Controls the open/closed state of the push drawer. */\n open?: boolean;\n /** Sets the heading text or custom heading content. */\n heading?: string | ReactNode;\n /** Sets the width of the push drawer panel. @default \"492px\" */\n width?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered in the actions slot, typically action buttons. */\n actions?: ReactNode;\n}\n\n/** A panel that pushes the main page content aside on desktop, falling back to an overlay drawer on smaller screens. */\nexport function GoabPushDrawer({\n open,\n heading,\n width,\n testId,\n actions,\n children,\n onClose,\n}: GoabPushDrawerProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el?.current || !onClose) {\n return;\n }\n const current = el.current;\n const listener = (e: Event) => {\n if (e.target !== current) {\n return;\n }\n onClose();\n };\n current.addEventListener(\"_close\", listener);\n return () => {\n current.removeEventListener(\"_close\", listener);\n };\n }, [el, onClose]);\n\n return (\n <goa-push-drawer\n ref={el}\n open={open ? true : undefined}\n heading={typeof heading === \"string\" ? heading : undefined}\n width={width}\n testid={testId}\n version=\"2\"\n >\n {heading && typeof heading !== \"string\" && <div slot=\"heading\">{heading}</div>}\n {actions && <div slot=\"actions\">{actions}</div>}\n {children}\n </goa-push-drawer>\n );\n}\n\nexport default GoabPushDrawer;\n","import { Margins } from \"@abgov/ui-components-common\";\n\nimport type { JSX } from \"react\";\n\ninterface WCProps extends Margins {\n name?: string;\n value?: string;\n description?: string | React.ReactNode;\n reveal?: React.ReactNode;\n revealarialabel?: string;\n label?: string;\n maxwidth?: string;\n disabled?: string;\n checked?: string;\n error?: string;\n arialabel?: string;\n compact?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-radio-item\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabRadioItemProps extends Margins {\n /** The value of this radio option. Will be emitted when selected. */\n value?: string;\n /** The display label for this radio option. Falls back to value if not provided. */\n label?: string;\n /** The name of the radio group. Inherited from the parent RadioGroup if not set. */\n name?: string;\n /** Additional description text displayed below the label. */\n description?: string | React.ReactNode;\n /** Content revealed below the radio option when it is selected. */\n reveal?: React.ReactNode;\n /** Text announced by screen readers when the reveal content is displayed. */\n revealAriaLabel?: string;\n /** Sets the maximum width of this radio item. */\n maxWidth?: string;\n /** Disables this radio option. Also disabled if the parent RadioGroup is disabled. */\n disabled?: boolean;\n /** @internal Sets this radio option as checked/selected. */\n checked?: boolean;\n /** Shows an error state on this radio option. */\n error?: boolean;\n /** Reduces spacing for dense layouts. */\n compact?: boolean;\n /** Additional content rendered inside the radio item. */\n children?: React.ReactNode;\n /** Defines how this option will be announced by screen readers. */\n ariaLabel?: string;\n}\n\n/** Individual radio option within a group. */\nexport function GoabRadioItem({\n name,\n label,\n value,\n description,\n reveal,\n revealAriaLabel,\n maxWidth,\n disabled,\n checked,\n error,\n compact,\n ariaLabel,\n children,\n mt,\n mr,\n mb,\n ml,\n}: GoabRadioItemProps): JSX.Element {\n return (\n <goa-radio-item\n name={name}\n label={label}\n value={value}\n description={typeof description === \"string\" ? description : undefined}\n maxwidth={maxWidth}\n error={error ? \"true\" : undefined}\n disabled={disabled ? \"true\" : undefined}\n checked={checked ? \"true\" : undefined}\n compact={compact ? \"true\" : undefined}\n arialabel={ariaLabel}\n revealarialabel={revealAriaLabel}\n mt={mt}\n mr={mr}\n mb={mb}\n ml={ml}\n version=\"2\"\n >\n {description && typeof description !== \"string\" && (\n <div slot=\"description\">{description}</div>\n )}\n {reveal && <div slot=\"reveal\">{reveal}</div>}\n {children}\n </goa-radio-item>\n );\n}\n\nexport default GoabRadioItem;\n","import { useEffect, useRef, type JSX } from \"react\";\nimport {\n GoabRadioGroupOnChangeDetail,\n GoabRadioGroupOrientation,\n GoabRadioGroupSize,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\nexport * from \"./radio\";\n\ninterface WCProps extends Margins {\n name: string;\n value?: string;\n id?: string;\n orientation?: GoabRadioGroupOrientation;\n disabled?: string;\n error?: string;\n arialabel?: string;\n testid?: string;\n size?: GoabRadioGroupSize;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-radio-group\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabRadioGroupProps extends Margins, DataAttributes {\n /** @required The name for the radio group. Used for accessibility and change events. */\n name: string;\n /** The currently selected value in the radio group. */\n value?: string;\n /** The identifier for the radio group element. */\n id?: string;\n /** Disables all radio items in the group. */\n disabled?: boolean;\n /** Sets the layout direction. 'vertical' stacks items, 'horizontal' places them in a row. @default \"vertical\" */\n orientation?: GoabRadioGroupOrientation;\n /** Sets the size of all radio items. 'compact' reduces spacing for dense layouts. @default \"default\" */\n size?: GoabRadioGroupSize;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Shows an error state on all radio items in the group. */\n error?: boolean;\n /** Defines how the radio group will be announced by screen readers. */\n ariaLabel?: string;\n /** Radio items to render inside the group. */\n children?: React.ReactNode;\n /** Callback fired when the selected radio item changes. */\n onChange?: (detail: GoabRadioGroupOnChangeDetail) => void;\n}\n\n/** Allow users to select one option from a set. */\nexport function GoabRadioGroup({\n disabled,\n error,\n onChange,\n name,\n children,\n size = \"default\",\n ...rest\n}: GoabRadioGroupProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>({ size, ...rest }, lowercase);\n\n useEffect(() => {\n if (!el.current) return;\n\n const listener = (e: Event) => {\n const detail = (e as CustomEvent<GoabRadioGroupOnChangeDetail>).detail;\n onChange?.({ ...detail, event: e });\n };\n\n const currentEl = el.current;\n if (onChange) {\n currentEl.addEventListener(\"_change\", listener);\n }\n\n return () => {\n if (onChange) {\n currentEl.removeEventListener(\"_change\", listener);\n }\n };\n }, [name, onChange]);\n\n return (\n <goa-radio-group\n ref={el}\n {..._props}\n name={name}\n disabled={disabled ? \"true\" : undefined}\n error={error ? \"true\" : undefined}\n version=\"2\"\n >\n {children}\n </goa-radio-group>\n );\n}\n\nexport default GoabRadioGroup;\n","import { ReactNode, type JSX } from \"react\";\nimport { GoabIconType, Margins } from \"@abgov/ui-components-common\";\n\ninterface WCProps extends Margins {\n heading: string;\n icon?: GoabIconType;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-side-menu-group\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabSideMenuGroupProps extends Margins {\n /** @required The heading text for the menu group. */\n heading: string;\n /** Icon displayed alongside the heading. */\n icon?: GoabIconType;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Navigation links rendered inside the menu group. */\n children?: ReactNode;\n}\n\n/** Group of related side menu items. */\nexport function GoabSideMenuGroup({\n heading,\n icon,\n testId,\n children,\n mt,\n mr,\n mb,\n ml,\n}: GoabSideMenuGroupProps): JSX.Element {\n return (\n <goa-side-menu-group\n heading={heading}\n icon={icon}\n testid={testId}\n mt={mt}\n mr={mr}\n mb={mb}\n ml={ml}\n version=\"2\"\n >\n {children}\n </goa-side-menu-group>\n );\n}\n\nexport default GoabSideMenuGroup;\n","import { GoabIconType } from \"@abgov/ui-components-common\";\nimport { ReactNode } from \"react\";\n\ninterface WCProps {\n testid?: string;\n icon?: GoabIconType;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-side-menu-heading\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabSideMenuHeadingProps {\n /** Icon displayed before the heading text. */\n icon?: GoabIconType;\n /** Content rendered in the meta slot, displayed alongside the heading. */\n meta?: ReactNode;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** The heading text or content rendered inside the side menu heading. */\n children?: ReactNode;\n}\n\n/** Section heading in side menu. */\nexport function GoabSideMenuHeading({\n meta,\n testId,\n icon,\n children,\n}: GoabSideMenuHeadingProps) {\n return (\n <goa-side-menu-heading icon={icon} testid={testId} version=\"2\">\n {children}\n {meta && <span slot=\"meta\">{meta}</span>}\n </goa-side-menu-heading>\n );\n}\n\nexport default GoabSideMenuHeading;\n","import { ReactNode, type JSX } from \"react\";\n\ninterface WCProps {\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-side-menu\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabSideMenuProps {\n /** @required Navigation links and groups rendered inside the side menu. */\n children: ReactNode;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** A side navigation that helps the user navigate between pages. */\nexport function GoabSideMenu({ testId, children }: GoabSideMenuProps): JSX.Element {\n return (\n <goa-side-menu testid={testId} version=\"2\">\n {children}\n </goa-side-menu>\n );\n}\n\nexport default GoabSideMenu;\n","import { GoabSkeletonSize, GoabSkeletonType, Margins } from \"@abgov/ui-components-common\";\n\ninterface WCProps extends Margins {\n maxwidth?: string;\n size?: GoabSkeletonSize;\n linecount?: number;\n type: GoabSkeletonType;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-skeleton\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabSkeletonProps extends Margins {\n /** @required Sets the skeleton shape to represent your content. */\n type: GoabSkeletonType;\n /** Sets the maximum width. Currently only used in card skeleton type. @default \"300px\" */\n maxWidth?: string;\n /** Size can affect either the height, width or both for different skeleton types. @default \"1\" */\n size?: GoabSkeletonSize;\n /** Used within components that contain multiple lines. Currently only used in card skeleton type. @default 3 */\n lineCount?: number;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n// legacy name\nexport type SkeletonProps = GoabSkeletonProps;\n\n/** Provide visual feedback to users while loading a content heavy page or page element. */\nexport const GoabSkeleton = ({\n maxWidth,\n size,\n lineCount,\n type,\n testId,\n mt,\n mr,\n mb,\n ml,\n}: GoabSkeletonProps) => {\n return (\n <goa-skeleton\n maxwidth={maxWidth}\n linecount={lineCount}\n type={type}\n size={size}\n mt={mt}\n mr={mr}\n mb={mb}\n ml={ml}\n testid={testId}\n />\n );\n};\n\nexport default GoabSkeleton;\n","import {\n GoabSpacerHorizontalSpacing,\n GoabSpacerVerticalSpacing,\n} from \"@abgov/ui-components-common\";\n\n/* eslint-disable-next-line */\ninterface WCProps {\n hspacing?: GoabSpacerHorizontalSpacing;\n vspacing?: GoabSpacerVerticalSpacing;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-spacer\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabSpacerProps {\n /** Horizontal spacing. @default \"none\" */\n hSpacing?: GoabSpacerHorizontalSpacing;\n /** Vertical spacing. @default \"none\" */\n vSpacing?: GoabSpacerVerticalSpacing;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** Negative area between the components and the interface. */\nexport function GoabSpacer(props: GoabSpacerProps) {\n return (\n <goa-spacer\n hspacing={props.hSpacing}\n vspacing={props.vSpacing}\n testid={props.testId}\n />\n );\n}\n\nexport default GoabSpacer;\n","import { GoabSpinnerSize, GoabSpinnerType } from \"@abgov/ui-components-common\";\n\nimport type { JSX } from \"react\";\n\ninterface WCProps {\n size: GoabSpinnerSize;\n type: GoabSpinnerType;\n invert?: string;\n progress?: number;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-spinner\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabSpinnerProps {\n /** @required Sets the spinner animation type. */\n type: GoabSpinnerType;\n /** @required Sets the size of the spinner. */\n size: GoabSpinnerSize;\n /** When true, inverts colors for use on dark backgrounds. */\n invert?: boolean;\n /** Progress value (0-100). When set to 0 or greater, shows a progress spinner instead of infinite. */\n progress?: number;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\nexport type SpinnerProps = GoabSpinnerProps;\n\n/** Loading indicator for async operations. */\nexport function GoabSpinner({\n type,\n size,\n progress,\n invert,\n testId,\n}: GoabSpinnerProps): JSX.Element {\n return (\n <goa-spinner\n type={type}\n size={size}\n progress={progress}\n invert={invert ? \"true\" : undefined}\n testid={testId}\n />\n );\n}\n\nexport default GoabSpinner;\n","import {\n GoabTableOnSortDetail,\n GoabTableOnMultiSortDetail,\n GoabTableSortMode,\n GoabTableVariant,\n Margins,\n} from \"@abgov/ui-components-common\";\nimport { ReactNode, useEffect, useRef } from \"react\";\n\ninterface WCProps extends Margins {\n ref?: React.RefObject<HTMLElement | null>;\n width?: string;\n variant?: GoabTableVariant;\n \"sort-mode\"?: GoabTableSortMode;\n testid?: string;\n striped?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-table\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabTableProps extends Margins {\n /** Width of the table. By default it will fit the enclosed content. */\n width?: string;\n /** Callback fired when a single-column sort header is clicked. */\n onSort?: (detail: GoabTableOnSortDetail) => void;\n /** Callback fired when multi-column sorting changes. */\n onMultiSort?: (detail: GoabTableOnMultiSortDetail) => void;\n /** Sort mode: \"single\" allows one column, \"multi\" allows up to 2 columns. @default \"single\" */\n sortMode?: GoabTableSortMode;\n // stickyHeader intentionally not exposed in wrapper yet.\n /** A relaxed variant of the table with more vertical padding for the cells. @default \"normal\" */\n variant?: GoabTableVariant;\n /** When true, alternates row background colors for improved readability. */\n striped?: boolean;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the table (table rows, headers, etc.). */\n children?: ReactNode;\n}\n\n// legacy name\nexport type TableProps = GoabTableProps;\n\n/** A set of structured data that is easy for a user to scan, examine, and compare. */\nexport function GoabTable({ onSort, onMultiSort, sortMode, ...props }: GoabTableProps) {\n const ref = useRef<HTMLTableElement>(null);\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n const current = ref.current;\n const sortListener = (e: unknown) => {\n const detail = (e as CustomEvent<GoabTableOnSortDetail>).detail;\n onSort?.(detail);\n };\n const multiSortListener = (e: unknown) => {\n const detail = (e as CustomEvent<GoabTableOnMultiSortDetail>).detail;\n onMultiSort?.(detail);\n };\n\n current.addEventListener(\"_sort\", sortListener);\n current.addEventListener(\"_multisort\", multiSortListener);\n return () => {\n current.removeEventListener(\"_sort\", sortListener);\n current.removeEventListener(\"_multisort\", multiSortListener);\n };\n }, [ref, onSort, onMultiSort]);\n\n return (\n <goa-table\n ref={ref}\n width={props.width}\n // TODO: Enable this later if needed\n // stickyheader={props.stickyHeader ? \"true\" : undefined}\n variant={props.variant}\n sort-mode={sortMode}\n striped={props.striped ? \"true\" : undefined}\n testid={props.testId}\n mt={props.mt}\n mb={props.mb}\n ml={props.ml}\n mr={props.mr}\n version=\"2\"\n >\n <table style={{ width: \"100%\" }}>{props.children}</table>\n </goa-table>\n );\n}\n\nexport default GoabTable;\n","import {\n DataAttributes,\n GoabTableSortDirection,\n GoabTableSortOrder,\n} from \"@abgov/ui-components-common\";\n\nimport type { JSX } from \"react\";\n\ninterface WCProps {\n name?: string;\n direction?: GoabTableSortDirection;\n \"sort-order\"?: GoabTableSortOrder;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-table-sort-header\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabTableSortProps extends DataAttributes {\n /** Column name identifier for sorting. */\n name?: string;\n /** Sets the sort direction indicator. @default \"none\" */\n direction?: GoabTableSortDirection;\n /** Sort order number for multi-column sort display. Used for displaying priority numbers when multiple columns are sorted. */\n sortOrder?: GoabTableSortOrder;\n /** Content rendered inside the sort header button (typically the column heading text). */\n children?: React.ReactNode;\n}\n\n/** A set of structured data that is easy for a user to scan, examine, and compare. */\nexport function GoabTableSortHeader({\n name,\n direction = \"none\",\n sortOrder,\n children,\n ...rest\n}: GoabTableSortProps): JSX.Element {\n return (\n <goa-table-sort-header\n name={name}\n direction={direction}\n sort-order={sortOrder}\n {...rest}\n >\n {children}\n </goa-table-sort-header>\n );\n}\n\nexport default GoabTableSortHeader;\n","import React, { useEffect, useRef, type JSX } from \"react\";\nimport {\n GoabTabsOnChangeDetail,\n GoabTabsOrientation,\n GoabTabsVariant,\n GoabTabsNavigation,\n} from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n initialtab?: number;\n ref: React.RefObject<HTMLElement | null>;\n onChange?: (tab: number) => void;\n testid?: string;\n variant?: GoabTabsVariant;\n navigation?: GoabTabsNavigation;\n version?: string;\n orientation?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-tabs\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabTabsProps {\n /** The initially active tab (1-based index). If not set, the first tab is active. */\n initialTab?: number;\n /** Content rendered inside the tabs container, typically GoabTab components. */\n children?: React.ReactNode;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Visual style variant. \"segmented\" shows pill-style tabs with animation. @default \"default\" */\n variant?: GoabTabsVariant;\n /** Tab layout orientation. \"auto\" stacks vertically on mobile, \"horizontal\" keeps horizontal on all screen sizes. @default \"auto\" */\n orientation?: GoabTabsOrientation;\n /** Controls URL navigation mode on tab change. @default \"hash\" */\n navigation?: GoabTabsNavigation;\n /** Callback fired when the active tab changes. */\n onChange?: (detail: GoabTabsOnChangeDetail) => void;\n}\n\n/** Let users navigate between related sections of content, displaying one section at a time. */\nexport function GoabTabs({\n initialTab,\n children,\n testId,\n onChange,\n variant,\n orientation,\n navigation,\n}: GoabTabsProps): JSX.Element {\n const ref = useRef<HTMLElement>(null);\n\n useEffect(() => {\n const element = ref.current;\n if (element && onChange) {\n const handler = (event: Event) => {\n const detail = (event as CustomEvent<GoabTabsOnChangeDetail>).detail;\n onChange(detail);\n };\n element.addEventListener(\"_change\", handler);\n return () => {\n element.removeEventListener(\"_change\", handler);\n };\n }\n }, [onChange]);\n\n return (\n <goa-tabs\n ref={ref}\n initialtab={initialTab}\n testid={testId}\n variant={variant}\n version=\"2\"\n orientation={orientation}\n navigation={navigation}\n >\n {children}\n </goa-tabs>\n );\n}\n\nexport default GoabTabs;\n","import type { JSX } from \"react\";\n\ninterface WCProps {\n heading?: string | React.ReactNode;\n disabled?: string;\n slug?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-tab\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabTabItemProps {\n /** The text label for this tab. Can also pass React nodes for custom heading content. */\n heading?: string | React.ReactNode;\n /** When true, disables the tab so it cannot be selected. */\n disabled?: boolean;\n /** Content rendered inside the tab panel. */\n children?: React.ReactNode;\n /** URL-friendly identifier for the tab, used for hash-based navigation. */\n slug?: string;\n}\n\n/** Individual tab within a tabs component. */\nexport function GoabTab({\n heading,\n disabled,\n slug,\n children,\n}: GoabTabItemProps): JSX.Element {\n return (\n <goa-tab\n slug={slug}\n disabled={disabled ? \"true\" : undefined}\n heading={typeof heading === \"string\" ? heading : undefined}\n >\n {typeof heading !== \"string\" && <span slot=\"heading\">{heading}</span>}\n {children}\n </goa-tab>\n );\n}\n","import React, { useRef } from \"react\";\nimport { transformProps, kebab } from \"../common/extract-props\";\n\ntype SnackbarVerticalPosition = \"top\" | \"bottom\";\ntype SnackbarHorizontalPosition = \"left\" | \"center\" | \"right\";\n\ninterface WCProps {\n \"vertical-position\"?: SnackbarVerticalPosition;\n \"horizontal-position\"?: SnackbarHorizontalPosition;\n testid?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-temp-notification-ctrl\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabTemporaryNotificationCtrlProps {\n /** Vertical position of the notification container. @default \"bottom\" */\n verticalPosition?: SnackbarVerticalPosition;\n /** Horizontal position of the notification container. @default \"center\" */\n horizontalPosition?: SnackbarHorizontalPosition;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n}\n\n/** A notification that appears at the bottom of the screen. */\nexport const GoabTemporaryNotificationCtrl = ({\n verticalPosition = \"bottom\",\n horizontalPosition = \"center\",\n testId,\n ...rest\n}: GoabTemporaryNotificationCtrlProps) => {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>(\n {\n \"vertical-position\": verticalPosition,\n \"horizontal-position\": horizontalPosition,\n ...rest,\n },\n kebab,\n );\n\n return <goa-temp-notification-ctrl ref={el} {..._props} testid={testId} />;\n};\n\nexport default GoabTemporaryNotificationCtrl;\n","import { ReactNode, type JSX } from \"react\";\nimport {\n GoabTextMaxWidth,\n GoabTextHeadingElement,\n GoabTextTextElement,\n GoabTextSize,\n GoabTextColor,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n as?: GoabTextTextElement | GoabTextHeadingElement;\n size?: GoabTextSize;\n maxwidth?: GoabTextMaxWidth;\n color?: GoabTextColor;\n id?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-text\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\ninterface GoATextProps extends Margins, DataAttributes {\n /** Content rendered inside the text element. */\n children: ReactNode;\n /** @deprecated Please use 'tag' property instead */\n as?: GoabTextTextElement | GoabTextHeadingElement;\n /** The HTML element to render. Use semantic elements like 'h1'-'h6' for headings. */\n tag?: GoabTextTextElement | GoabTextHeadingElement;\n /** Overrides the text size. */\n size?: GoabTextSize;\n /** Sets the max width. @default \"65ch\" */\n maxWidth?: GoabTextMaxWidth;\n /** Sets the text colour. @default \"primary\" */\n color?: GoabTextColor;\n /** Sets the id attribute on the element. */\n id?: string;\n}\n\n/** Provides consistent sizing, spacing, and colour to written content. */\nexport function GoabText({ as, tag, children, ...rest }: GoATextProps): JSX.Element {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n return (\n <goa-text as={tag || as} {..._props}>\n {children}\n </goa-text>\n );\n}\n\nexport default GoabText;\n","import {\n GoabTextAreaCountBy,\n GoabTextAreaOnChangeDetail,\n GoabTextAreaOnKeyPressDetail,\n GoabTextAreaOnBlurDetail,\n GoabTextAreaSize,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { useEffect, useRef, type JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n name: string;\n value?: string;\n placeholder?: string;\n rows?: number;\n error?: string;\n readOnly?: string;\n disabled?: string;\n width?: string;\n maxwidth?: string;\n arialabel?: string;\n countby?: GoabTextAreaCountBy;\n maxcount?: number;\n autocomplete?: string;\n testid?: string;\n size?: GoabTextAreaSize;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-textarea\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.Ref<HTMLTextAreaElement>;\n };\n }\n }\n}\n\nexport interface GoabTextAreaProps extends Margins, DataAttributes {\n /** @required Name of the input value that is received in the change event. */\n name: string;\n /** Bound to the current value of the textarea. */\n value?: string;\n /** Sets the id attribute on the textarea element. */\n id?: string;\n /** Text displayed within the textarea when no value is set. */\n placeholder?: string;\n /** Sets the number of visible text rows. @default 3 */\n rows?: number;\n /** Sets the input to an error state. */\n error?: boolean;\n /** Sets the input to a read only state. */\n readOnly?: boolean;\n /** Sets the input to a disabled state. */\n disabled?: boolean;\n /** Sets the width of the text area. @default \"100%\" */\n width?: string;\n /** Sets the maximum width of the text area. @default \"60ch\" */\n maxWidth?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Defines how the text will be translated for the screen reader. If not specified it will fall back to the name. */\n ariaLabel?: string;\n /** Counting interval for characters or words, specifying whether to count every character or word. */\n countBy?: GoabTextAreaCountBy;\n /** Maximum number of characters or words allowed. */\n maxCount?: number;\n /** Specifies the autocomplete attribute for the textarea input. */\n autoComplete?: string;\n /** Sets the visual size variant of the text area. */\n size?: GoabTextAreaSize;\n /** Callback fired when the value of the textarea changes. */\n onChange?: (event: GoabTextAreaOnChangeDetail) => void;\n /** Callback fired when a key is pressed within the textarea. */\n onKeyPress?: (event: GoabTextAreaOnKeyPressDetail) => void;\n /** Callback fired when the textarea loses focus. */\n onBlur?: (event: GoabTextAreaOnBlurDetail) => void;\n}\n\n/** A multi-line field where users can input and edit text. */\nexport function GoabTextArea({\n readOnly,\n disabled,\n error,\n onChange,\n onKeyPress,\n onBlur,\n ...rest\n}: GoabTextAreaProps): JSX.Element {\n const el = useRef<HTMLTextAreaElement>(null);\n\n const _props = transformProps<WCProps>(rest, lowercase);\n\n useEffect(() => {\n if (!el.current) {\n return;\n }\n const current = el.current;\n\n const changeListener: EventListener = (e: Event) => {\n const detail = (e as CustomEvent<GoabTextAreaOnChangeDetail>).detail;\n onChange?.({ ...detail, event: e });\n };\n\n const keypressListener = (e: unknown) => {\n const detail = (e as CustomEvent<GoabTextAreaOnKeyPressDetail>).detail;\n onKeyPress?.({ ...detail, event: e as Event });\n };\n\n const blurListener = (e: unknown) => {\n const detail = (e as CustomEvent<GoabTextAreaOnBlurDetail>).detail;\n onBlur?.({ ...detail, event: e as Event });\n };\n\n current.addEventListener(\"_change\", changeListener);\n current.addEventListener(\"_keyPress\", keypressListener);\n current.addEventListener(\"_blur\", blurListener);\n\n return () => {\n current.removeEventListener(\"_change\", changeListener);\n current.removeEventListener(\"_keyPress\", keypressListener);\n current.removeEventListener(\"_blur\", blurListener);\n };\n }, [el, onChange, onKeyPress, onBlur]);\n\n return (\n <goa-textarea\n ref={el}\n readOnly={readOnly ? \"true\" : undefined}\n disabled={disabled ? \"true\" : undefined}\n error={error ? \"true\" : undefined}\n version=\"2\"\n {..._props}\n ></goa-textarea>\n );\n}\n\nexport default GoabTextArea;\n","import { ReactNode } from \"react\";\n\ninterface WCProps {\n leftcolumnwidth?: string;\n maxcontentwidth?: string;\n rightcolumnwidth?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-three-column-layout\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabThreeColumnLayoutProps {\n /** Main content rendered in the center column. */\n children: ReactNode;\n /** Sets the width of the left column. */\n leftColumnWidth?: string;\n /** Sets the width of the right column. */\n rightColumnWidth?: string;\n /** Sets the maximum width of the content area. */\n maxContentWidth?: string;\n /** Content rendered in the page header slot. */\n header?: ReactNode;\n /** Content rendered in the page footer slot. */\n footer?: ReactNode;\n /** Content rendered in the navigation slot. */\n nav?: ReactNode;\n /** @deprecated Use sideMenu instead. Content rendered in the side menu slot. */\n sidebar?: ReactNode;\n /** Content rendered in the side menu slot. */\n sideMenu?: ReactNode;\n}\n\n/** Organizes page content in three responsive columns. */\nexport function GoabThreeColumnLayout(props: GoabThreeColumnLayoutProps) {\n return (\n <goa-three-column-layout\n leftcolumnwidth={props.leftColumnWidth}\n rightcolumnwidth={props.rightColumnWidth}\n maxcontentwidth={props.maxContentWidth}\n >\n {props.header && <div slot=\"header\">{props.header}</div>}\n {props.nav && <div slot=\"nav\">{props.nav}</div>}\n {props.sidebar && <div slot=\"side-menu\">{props.sidebar}</div>}\n {props.sideMenu && <div slot=\"side-menu\">{props.sideMenu}</div>}\n {props.children}\n {props.footer && <div slot=\"footer\">{props.footer}</div>}\n </goa-three-column-layout>\n );\n}\n\nexport default GoabThreeColumnLayout;\n","import {\n GoabTooltipHorizontalAlignment,\n GoabTooltipPosition,\n Margins,\n DataAttributes,\n} from \"@abgov/ui-components-common\";\nimport { ReactNode, type JSX } from \"react\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\n/* eslint-disable-next-line */\ninterface WCProps extends Margins {\n position?: GoabTooltipPosition;\n content?: string;\n testid?: string;\n halign?: GoabTooltipHorizontalAlignment;\n maxwidth?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-tooltip\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabTooltipProps extends Margins, DataAttributes {\n /** Position of the tooltip with respect to the child element. @default \"top\" */\n position?: GoabTooltipPosition;\n /** The content of the tooltip. Accepts plain text or rich content. */\n content?: string | ReactNode;\n /** Horizontal alignment of the tooltip relative to the child element. @default \"center\" */\n hAlign?: GoabTooltipHorizontalAlignment;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the maximum width of the tooltip. Must use 'px' unit. */\n maxWidth?: string;\n /** The element that triggers the tooltip on hover or focus. */\n children?: ReactNode;\n}\n\n/** A small popover that displays more information about an item. */\nexport function GoabTooltip({\n content,\n children,\n ...rest\n}: GoabTooltipProps): JSX.Element {\n const _props = transformProps<WCProps>(rest, lowercase);\n\n const isStringContent = typeof content === \"string\";\n\n return (\n <goa-tooltip content={isStringContent ? (content as string) : undefined} {..._props}>\n {!isStringContent && content && <div slot=\"content\">{content}</div>}\n {children}\n </goa-tooltip>\n );\n}\n\nexport default GoabTooltip;\n","import { ReactNode } from \"react\";\n\ninterface WCProps {\n navcolumnwidth?: string;\n maxcontentwidth?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-two-column-layout\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabTwoColumnLayoutProps {\n /** Content rendered in the page header slot. */\n header: ReactNode;\n /** Content rendered in the page footer slot. */\n footer: ReactNode;\n /** Content rendered in the navigation column slot. */\n nav: ReactNode;\n /** @required Main content rendered in the body of the layout. */\n children: ReactNode;\n /** Sets the width of the navigation column. */\n navColumnWidth?: string;\n /** Sets the maximum width of the content area. */\n maxContentWidth?: string;\n}\n\n/** Organizes page content in two responsive columns. */\nexport function GoabTwoColumnLayout(props: GoabTwoColumnLayoutProps) {\n return (\n <goa-two-column-layout\n navcolumnwidth={props.navColumnWidth}\n maxcontentwidth={props.maxContentWidth}\n >\n {props.header && <div slot=\"header\">{props.header}</div>}\n {props.nav && <div slot=\"nav\">{props.nav}</div>}\n {props.children}\n {props.footer && <div slot=\"footer\">{props.footer}</div>}\n </goa-two-column-layout>\n );\n}\n\nexport default GoabTwoColumnLayout;\n","import { useEffect, useRef } from \"react\";\nimport {\n DataAttributes,\n GoabFilterChipTheme,\n GoabIconType,\n Margins,\n} from \"@abgov/ui-components-common\";\nimport { transformProps, lowercase } from \"../common/extract-props\";\n\ninterface WCProps extends Margins {\n icontheme: GoabFilterChipTheme;\n error?: string;\n content: string;\n secondarytext?: string;\n leadingicon?: GoabIconType;\n testid?: string;\n version?: string;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-filter-chip\": WCProps &\n React.HTMLAttributes<HTMLElement> & {\n ref: React.RefObject<HTMLElement | null>;\n };\n }\n }\n}\n\nexport interface GoabFilterChipProps extends Margins, DataAttributes {\n /** @required Text label of the chip. */\n content: string;\n /** Theme style of the leading icon. @default \"outline\" */\n iconTheme?: GoabFilterChipTheme;\n /** Shows an error state. */\n error?: boolean;\n /** Secondary text displayed in a smaller size before the main content. */\n secondaryText?: string;\n /** Icon displayed at the start of the chip. */\n leadingIcon?: GoabIconType;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Callback fired when the filter chip is clicked to remove it. */\n onClick?: () => void;\n}\n\n/** Allow the user to enter information, filter content, and make selections. */\nexport const GoabFilterChip = ({\n iconTheme = \"outline\",\n error,\n onClick,\n ...rest\n}: GoabFilterChipProps) => {\n const el = useRef<HTMLElement>(null);\n\n const _props = transformProps<WCProps>({ icontheme: iconTheme, ...rest }, lowercase);\n\n useEffect(() => {\n if (!el.current) return;\n if (!onClick) return;\n\n const current = el.current;\n\n current.addEventListener(\"_click\", onClick);\n return () => {\n current.removeEventListener(\"_click\", onClick!);\n };\n }, [el, onClick]);\n\n return (\n <goa-filter-chip\n ref={el}\n error={error ? \"true\" : undefined}\n version=\"2\"\n {..._props}\n />\n );\n};\n\nexport default GoabFilterChip;\n","import { useRef, useEffect, useState, useCallback } from 'react';\nimport {\n AppState,\n GoabFieldsetItemValue,\n FieldValidator, PublicFormController,\n} from \"@abgov/ui-components-common\";\n\nfunction usePublicFormController<T>(type: \"details\" | \"list\" = \"details\") {\n const controllerRef = useRef<PublicFormController<T>>(new PublicFormController<T>(type));\n const [state, setState] = useState<AppState<T> | AppState<T>[] | undefined>(undefined);\n\n useEffect(() => {\n // Create a proxy that updates React state when controller's state changes\n const originalStateGetter = Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(controllerRef.current),\n 'state'\n )?.get;\n\n const originalStateSetter = Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(controllerRef.current),\n 'state'\n )?.set;\n\n if (originalStateGetter && originalStateSetter) {\n Object.defineProperty(controllerRef.current, 'state', {\n get: function() {\n return originalStateGetter.call(this);\n },\n set: function(value) {\n originalStateSetter.call(this, value);\n setState(value);\n },\n configurable: true\n });\n }\n }, []);\n\n\n const init = useCallback((e: Event) => {\n if (!(e as CustomEvent).detail?.el) {\n console.error('El is null during initialization');\n return;\n }\n controllerRef.current.init(e);\n }, []);\n\n const initList = useCallback((e: Event) => {\n const customEvent = e as CustomEvent;\n if (!customEvent?.detail?.el) {\n console.error('El is null during list initialization');\n return;\n }\n controllerRef.current.initList(e);\n }, []);\n\n const initState = useCallback((state?: string | AppState<T> | AppState<T>[], callback?: () => void) => {\n if (!controllerRef.current._formRef) {\n console.error('Form ref not set.');\n return;\n }\n controllerRef.current.initState(state, callback);\n }, []);\n\n const continueTo = useCallback((next: T | undefined) => {\n controllerRef.current.continueTo(next);\n }, []);\n\n const validate = useCallback((\n e: Event,\n field: string,\n validators: FieldValidator[]\n ): [boolean, GoabFieldsetItemValue] => {\n return controllerRef.current.validate(e, field, validators);\n }, []);\n\n const getStateValue = useCallback((group: string, key: string): string => {\n return controllerRef.current.getStateValue(group, key);\n }, []);\n\n const getStateList = useCallback((): Record<string, string>[] => {\n return controllerRef.current.getStateList();\n }, []);\n\n const complete = useCallback(() => {\n controllerRef.current.complete();\n }, []);\n\n const completeSubform = useCallback(() => {\n controllerRef.current.completeSubform();\n }, []);\n\n return {\n state,\n init,\n initList,\n initState,\n continueTo,\n validate,\n getStateValue,\n getStateList,\n complete,\n completeSubform,\n controller: controllerRef.current\n };\n}\n\nexport { usePublicFormController };\n","import { ReactNode, useEffect, useRef, type JSX } from \"react\";\n\ninterface WCProps {\n heading: string;\n url: string;\n \"user-name\"?: string;\n \"user-secondary-text\"?: string;\n testid?: string;\n primaryContent?: ReactNode;\n secondaryContent?: ReactNode;\n accountContent?: ReactNode;\n open?: boolean;\n ref: React.RefObject<HTMLElement | null>;\n}\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-work-side-menu\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\n/* eslint-disable-next-line */\nexport interface GoabWorkSideMenuProps {\n /** @required The application name displayed in the header. */\n heading: string;\n /** @required URL for the header link. Clicking the logo/heading navigates to this URL. */\n url: string;\n /** User's name displayed in the profile section. */\n userName?: string;\n /** Secondary text displayed below the user's name, such as role or email. */\n userSecondaryText?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered in the primary navigation slot. */\n primaryContent?: ReactNode;\n /** Content rendered in the secondary navigation slot. */\n secondaryContent?: ReactNode;\n /** Content rendered in the account/profile slot. */\n accountContent?: ReactNode;\n /** Controls whether the side menu is expanded or collapsed. */\n open?: boolean;\n /** Callback fired when the side menu is toggled open or closed. */\n onToggle?: () => void;\n /** Callback fired when a menu item is navigated, providing the target URL path. */\n onNavigate?: (path: string) => void;\n}\n\n/** Side menu variant for worker applications. */\nexport function GoabWorkSideMenu({\n heading,\n url,\n userName,\n userSecondaryText,\n testId,\n primaryContent,\n secondaryContent,\n accountContent,\n open,\n onToggle,\n onNavigate,\n}: GoabWorkSideMenuProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el?.current || !onToggle) {\n return;\n }\n el.current?.addEventListener(\"_toggle\", onToggle);\n return () => {\n el.current?.removeEventListener(\"_toggle\", onToggle);\n };\n }, [el, onToggle]);\n\n useEffect(() => {\n if (!el?.current || !onNavigate) {\n return;\n }\n const handler = (e: Event) => {\n onNavigate((e as CustomEvent).detail.url);\n };\n el.current?.addEventListener(\"_navigate\", handler);\n return () => {\n el.current?.removeEventListener(\"_navigate\", handler);\n };\n }, [el, onNavigate]);\n\n return (\n <goa-work-side-menu\n ref={el}\n heading={heading}\n url={url}\n user-name={userName}\n user-secondary-text={userSecondaryText}\n open={open ? true : false}\n testid={testId}\n >\n {primaryContent && <div slot=\"primary\">{primaryContent}</div>}\n {secondaryContent && <div slot=\"secondary\">{secondaryContent}</div>}\n {accountContent && <div slot=\"account\">{accountContent}</div>}\n </goa-work-side-menu>\n );\n}\n\nexport default GoabWorkSideMenu;\n","import { type JSX } from \"react\";\nimport { GoabIconType } from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n heading: string;\n icon?: GoabIconType;\n testid?: string;\n open?: boolean;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-work-side-menu-group\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabWorkSideMenuGroupProps {\n /** @required The text displayed in the group heading. */\n heading: string;\n /** Icon displayed before the group label. When omitted, no icon is rendered and no space is reserved. */\n icon?: GoabIconType;\n /** Whether the group is open. */\n open?: boolean;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Content rendered inside the group, typically WorkSideMenuItem components. */\n children?: React.ReactNode;\n}\n\n/** Collapsible group of items within the work side menu. */\nexport function GoabWorkSideMenuGroup(props: GoabWorkSideMenuGroupProps): JSX.Element {\n return (\n <goa-work-side-menu-group\n heading={props.heading}\n icon={props.icon}\n open={props.open ? true : undefined}\n testid={props.testId}\n >\n {props.children}\n </goa-work-side-menu-group>\n );\n}\n\nexport default GoabWorkSideMenuGroup;\n","import { type JSX } from \"react\";\nimport { GoabWorkSideMenuItemType } from \"@abgov/ui-components-common\";\ninterface WCProps {\n label: string;\n url?: string;\n badge?: string;\n current?: string;\n divider?: string;\n icon?: string;\n testid?: string;\n type?: GoabWorkSideMenuItemType;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-work-side-menu-item\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabWorkSideMenuItemProps {\n /** @required The text label displayed for the menu item. */\n label: string;\n /** The URL the menu item links to. When absent, renders as a button instead of a link. */\n url?: string;\n /** Badge text displayed alongside the menu item (e.g., notification count). */\n badge?: string;\n /** When true, indicates this is the currently active menu item. */\n current?: boolean;\n /** When true, displays a divider line above this menu item. */\n divider?: boolean;\n /** Icon displayed before the menu item label. */\n icon?: string;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Sets the visual style of the badge. Use \"emergency\" for urgent items, \"success\" for positive status. @default \"normal\" */\n type?: GoabWorkSideMenuItemType;\n /** Content rendered inside the menu item. */\n children?: React.ReactNode;\n /** Content rendered inside the popover panel attached to this menu item. */\n popoverContent?: React.ReactNode;\n}\n\n/** Individual menu item within the work side menu. */\nexport function GoabWorkSideMenuItem(props: GoabWorkSideMenuItemProps): JSX.Element {\n return (\n <goa-work-side-menu-item\n label={props.label}\n url={props.url}\n badge={props.badge}\n current={props.current ? \"true\" : undefined}\n divider={props.divider ? \"true\" : undefined}\n icon={props.icon}\n testid={props.testId}\n type={props.type}\n >\n {props.popoverContent && <div slot=\"popoverContent\">{props.popoverContent}</div>}\n {props.children}\n </goa-work-side-menu-item>\n );\n}\n\nexport default GoabWorkSideMenuItem;\n","import { useEffect, useRef, type JSX } from \"react\";\nimport {\n GoabWorkSideNotificationItemType,\n GoabWorkSideNotificationReadStatus,\n GoabWorkSideNotificationPriority,\n} from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n type?: GoabWorkSideNotificationItemType;\n timestamp?: string;\n title?: string;\n description: string;\n \"read-status\"?: GoabWorkSideNotificationReadStatus;\n priority?: GoabWorkSideNotificationPriority;\n testid?: string;\n ref: React.RefObject<HTMLElement | null>;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-work-side-notification-item\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabWorkSideNotificationItemProps {\n /** @required The body text content of the notification card. */\n description: string;\n /** Sets the visual type/style of the notification item. @default \"default\" */\n type?: GoabWorkSideNotificationItemType;\n /** ISO timestamp string representing when the notification occurred. */\n timestamp?: string;\n /** Title text displayed in the notification card header. */\n title?: string;\n /** Indicates whether the notification has been read or is unread. @default \"unread\" */\n readStatus?: GoabWorkSideNotificationReadStatus;\n /** Sets the urgency level of the notification. @default \"normal\" */\n priority?: GoabWorkSideNotificationPriority;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Callback fired when the notification item is clicked. */\n onClick?: () => void;\n}\n\n/** Displays an individual notification item in the work-side notification panel. */\nexport function GoabWorkSideNotificationItem({\n type,\n timestamp,\n title,\n description,\n readStatus,\n priority,\n testId,\n onClick,\n}: GoabWorkSideNotificationItemProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el.current) return;\n\n const handleClick = () => {\n onClick?.();\n };\n\n el.current.addEventListener(\"_click\", handleClick);\n\n return () => {\n el.current?.removeEventListener(\"_click\", handleClick);\n };\n }, [el, onClick]);\n\n return (\n <goa-work-side-notification-item\n ref={el}\n type={type}\n timestamp={timestamp}\n title={title}\n description={description}\n read-status={readStatus}\n priority={priority}\n testid={testId}\n />\n );\n}\n\nexport default GoabWorkSideNotificationItem;\n","import { ReactNode, useEffect, useRef, type JSX } from \"react\";\nimport { GoabWorkSideNotificationActiveTabType } from \"@abgov/ui-components-common\";\n\ninterface WCProps {\n heading?: string;\n \"active-tab\"?: GoabWorkSideNotificationActiveTabType;\n testid?: string;\n ref: React.RefObject<HTMLElement | null>;\n}\n\ndeclare module \"react\" {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n \"goa-work-side-notification-panel\": WCProps & React.HTMLAttributes<HTMLElement>;\n }\n }\n}\n\nexport interface GoabWorkSideNotificationPanelProps {\n /** Sets the panel heading text. @default \"Notifications\" */\n heading?: string;\n /** Sets the initially active tab. @default \"unread\" */\n activeTab?: GoabWorkSideNotificationActiveTabType;\n /** Sets a data-testid attribute for automated testing. */\n testId?: string;\n /** Notification item content rendered inside the panel. */\n children?: ReactNode;\n /** Callback fired when the \"Mark all as read\" button is clicked. */\n onMarkAllRead?: () => void;\n /** Callback fired when the \"View all\" button is clicked. */\n onViewAll?: () => void;\n}\n\n/** Displays a panel of work-side notifications. */\nexport function GoabWorkSideNotificationPanel({\n heading,\n activeTab,\n testId,\n children,\n onMarkAllRead,\n onViewAll,\n}: GoabWorkSideNotificationPanelProps): JSX.Element {\n const el = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!el.current) return;\n\n const handleMarkAllRead = () => {\n onMarkAllRead?.();\n };\n\n const handleViewAll = () => {\n onViewAll?.();\n };\n\n el.current.addEventListener(\"_markAllRead\", handleMarkAllRead);\n el.current.addEventListener(\"_viewAll\", handleViewAll);\n\n return () => {\n el.current?.removeEventListener(\"_markAllRead\", handleMarkAllRead);\n el.current?.removeEventListener(\"_viewAll\", handleViewAll);\n };\n }, [el, onMarkAllRead, onViewAll]);\n\n return (\n <goa-work-side-notification-panel\n ref={el}\n heading={heading}\n active-tab={activeTab}\n testid={testId}\n >\n {children}\n </goa-work-side-notification-panel>\n );\n}\n\nexport default GoabWorkSideNotificationPanel;\n"],"names":["message","defaultOptions","format","localize","formatLong","defaultLocale","lastDayOfMonth","_getDaysInMonth","_lastDayOfMonth","_addMonths","_addDays","_isSameDay","_isSameMonth","_isBefore","_isAfter","_format","value","state","_a"],"mappings":"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","x_google_ignoreList":[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61]}
|