@aurora-ds/components 1.8.7 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +38 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +38 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.ts +11 -0
- package/package.json +1 -1
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/resources/Icons.ts","../../src/constants/animation.constants.ts","../../src/constants/app.constants.ts","../../src/theme/components/focusRing.ts","../../src/components/actions/_common/buttonVariants.styles.ts","../../src/components/actions/button/Button.styles.ts","../../src/components/foundation/icon/Icon.styles.ts","../../src/components/foundation/icon/Icon.tsx","../../src/components/foundation/text/utils/getTextVariantStyles.utils.ts","../../src/components/foundation/text/Text.styles.ts","../../src/components/foundation/text/utils/getTruncateTextStyles.utils.ts","../../src/components/foundation/text/utils/parseTextWithBold.utils.ts","../../src/components/foundation/text/Text.tsx","../../src/components/actions/button/Button.tsx","../../src/components/actions/fab/Fab.styles.ts","../../src/components/actions/fab/utils/buildPlacementStyle.utils.ts","../../src/components/actions/fab/Fab.tsx","../../src/components/actions/icon-button/IconButton.styles.ts","../../src/components/actions/icon-button/IconButton.tsx","../../src/components/actions/link/Link.styles.ts","../../src/components/actions/link/Link.tsx","../../src/components/actions/toggle/utils/buildToggleIntents.utils.ts","../../src/components/actions/toggle/utils/buildTogglePressedStyles.utils.ts","../../src/components/actions/toggle/toggle-button/ToggleButton.styles.ts","../../src/components/actions/toggle/toggle-group/ToggleGroup.context.ts","../../src/components/actions/toggle/hooks/useToggleState.ts","../../src/components/actions/toggle/toggle-button/ToggleButton.tsx","../../src/components/actions/toggle/toggle-icon-button/ToggleIconButton.styles.ts","../../src/components/actions/toggle/toggle-icon-button/ToggleIconButton.tsx","../../src/components/actions/toggle/toggle-group/ToggleGroup.styles.ts","../../src/components/actions/toggle/toggle-group/hooks/useToggleGroup.ts","../../src/components/actions/toggle/toggle-group/ToggleGroup.tsx","../../src/components/data-display/avatar/Avatar.styles.ts","../../src/components/data-display/avatar/utils/getAvatarInitials.utils.ts","../../src/components/data-display/avatar/Avatar.tsx","../../src/components/data-display/avatar/AvatarGroup.styles.ts","../../src/components/data-display/avatar/AvatarGroup.tsx","../../src/components/data-display/badge/utils/getBadgeColorStyles.utils.ts","../../src/components/data-display/badge/Badge.styles.ts","../../src/components/data-display/badge/Badge.tsx","../../src/hooks/components/overlay/use-tooltip-position/useTooltipPosition.ts","../../src/components/overlay/tooltip/Tooltip.styles.ts","../../src/components/overlay/tooltip/Tooltip.tsx","../../src/components/data-display/info-bubble/InfoBubble.styles.ts","../../src/components/data-display/info-bubble/InfoBubble.tsx","../../src/components/data-display/table/Table.context.ts","../../src/components/data-display/table/Table.styles.ts","../../src/components/data-display/table/table-body/TableBody.styles.ts","../../src/components/data-display/table/table-cell/TableCell.styles.ts","../../src/components/data-display/table/useTableContext.ts","../../src/components/data-display/table/table-cell/TableCell.tsx","../../src/components/data-display/table/table-row/TableRow.tsx","../../src/components/foundation/skeleton/Skeleton.styles.ts","../../src/components/foundation/skeleton/Skeleton.tsx","../../src/components/data-display/table/table-body/TableBody.tsx","../../src/components/data-display/table/table-foot/TableFoot.tsx","../../src/components/data-display/table/table-head/TableHead.tsx","../../src/components/data-display/table/table-header-cell/TableHeaderCell.styles.ts","../../src/components/data-display/table/table-header-cell/TableHeaderCell.tsx","../../src/components/data-display/table/Table.tsx","../../src/components/foundation/error-boundary/DefaultErrorFallback.styles.ts","../../src/components/layout/_common/extractBoxStyleProps.utils.ts","../../src/components/layout/box/Box.styles.ts","../../src/components/layout/box/Box.tsx","../../src/components/layout/stack/Stack.tsx","../../src/components/foundation/error-boundary/DefaultErrorFallback.tsx","../../src/components/foundation/error-boundary/ErrorBoundary.tsx","../../src/components/foundation/image/Image.styles.ts","../../src/components/foundation/image/Image.tsx","../../src/components/foundation/loader/LoaderScreen.styles.ts","../../src/components/foundation/loader/LoaderScreen.tsx","../../src/components/foundation/svg-image/SvgImage.styles.ts","../../src/components/foundation/svg-image/SvgImage.tsx","../../src/components/forms/form/Form.styles.ts","../../src/components/forms/form/Form.tsx","../../src/components/forms/_common/form-helper-text/FormHelperText.tsx","../../src/components/forms/radio/radio-button/RadioButton.styles.ts","../../src/hooks/common/use-merged-refs/useMergedRefs.ts","../../src/components/forms/radio/radio-button/utils/useRadioButton.utils.ts","../../src/components/forms/radio/radio-group/radioGroupContext.ts","../../src/components/forms/radio/radio-button/RadioButton.tsx","../../src/components/forms/radio/radio-group/RadioGroup.styles.ts","../../src/hooks/common/use-controllable-state/useControllableState.ts","../../src/components/forms/radio/radio-group/utils/useRadioGroup.utils.ts","../../src/components/forms/radio/radio-group/RadioGroup.tsx","../../src/components/forms/switch/Switch.styles.ts","../../src/components/forms/switch/utils/useSwitch.utils.ts","../../src/components/forms/switch/Switch.tsx","../../src/components/forms/text-field/TextField.styles.ts","../../src/components/forms/text-field/utils/useTextField.utils.ts","../../src/components/forms/text-field/TextField.tsx","../../src/components/overlay/menu/menu-panel/MenuPanel.styles.ts","../../src/hooks/common/use-key-press/useKeyPress.ts","../../src/hooks/components/overlay/use-menu-position/useMenuPosition.ts","../../src/components/overlay/menu/MenuContext.ts","../../src/components/overlay/menu/menu-panel/utils/useMenuPanel.utils.ts","../../src/hooks/common/use-body-scroll-lock/useBodyScrollLock.ts","../../src/components/overlay/menu/menu-panel/MenuPanel.tsx","../../src/components/overlay/menu/menu-group/utils/useMenuGroup.utils.ts","../../src/components/overlay/menu/menu-group/MenuGroup.styles.ts","../../src/components/overlay/menu/menu-group/MenuGroup.tsx","../../src/components/overlay/menu/menu-item/utils/useMenuItem.utils.ts","../../src/components/overlay/menu/menu-item/MenuItem.styles.ts","../../src/components/overlay/menu/menu-item/MenuItem.tsx","../../src/components/overlay/menu/Menu.tsx","../../src/components/forms/select/select-trigger/SelectTrigger.styles.ts","../../src/components/forms/select/select-trigger/SelectTrigger.tsx","../../src/components/forms/select/utils/useSelect.utils.ts","../../src/components/forms/select/Select.tsx","../../src/components/forms/checkbox/Checkbox.styles.ts","../../src/components/forms/checkbox/utils/useCheckbox.utils.ts","../../src/components/forms/checkbox/Checkbox.tsx","../../src/components/forms/date-picker/calendar/Calendar.styles.ts","../../src/components/forms/date-picker/calendar/components/calendar-picker-header/CalendarPickerHeader.styles.ts","../../src/components/forms/date-picker/calendar/components/calendar-day-view/CalendarDayView.styles.ts","../../src/components/forms/date-picker/utils/date.utils.ts","../../src/components/forms/date-picker/calendar/components/calendar-day-view/CalendarDayView.tsx","../../src/components/forms/date-picker/calendar/components/calendar-month-view/CalendarMonthView.styles.ts","../../src/components/forms/date-picker/calendar/components/calendar-picker-header/CalendarPickerHeader.tsx","../../src/components/forms/date-picker/calendar/components/calendar-month-view/CalendarMonthView.tsx","../../src/components/forms/date-picker/calendar/components/calendar-year-view/CalendarYearView.styles.ts","../../src/components/forms/date-picker/calendar/components/calendar-year-view/CalendarYearView.tsx","../../src/components/forms/date-picker/calendar/utils/useCalendar.utils.ts","../../src/components/forms/date-picker/calendar/Calendar.tsx","../../src/components/forms/date-picker/DatePicker.styles.ts","../../src/hooks/common/use-focus-trap/useFocusTrap.ts","../../src/components/forms/date-picker/calendar-popover/CalendarPopover.tsx","../../src/components/forms/date-picker/utils/useDatePicker.utils.ts","../../src/components/forms/date-picker/utils/iconButtonSize.utils.ts","../../src/components/forms/date-picker/DatePicker.tsx","../../src/components/layout/article/Article.tsx","../../src/components/layout/aside/Aside.tsx","../../src/components/layout/card/Card.styles.ts","../../src/components/layout/card/card-header/CardHeader.tsx","../../src/components/layout/card/card-body/CardBody.tsx","../../src/components/layout/card/Card.tsx","../../src/components/layout/footer/Footer.tsx","../../src/components/layout/grid/Grid.styles.ts","../../src/components/layout/grid/Grid.tsx","../../src/components/layout/header/Header.styles.ts","../../src/components/layout/header/Header.tsx","../../src/components/layout/main/Main.tsx","../../src/components/layout/nav/Nav.tsx","../../src/components/layout/section/Section.tsx","../../src/components/layout/separator/Separator.styles.ts","../../src/components/layout/separator/Separator.tsx","../../src/components/navigation/breadcrumb/Breadcrumb.styles.ts","../../src/components/navigation/breadcrumb/Breadcrumb.context.ts","../../src/components/navigation/breadcrumb/breadcrumb-item/BreadcrumbItem.styles.ts","../../src/components/navigation/breadcrumb/breadcrumb-item/BreadcrumbItem.tsx","../../src/components/navigation/breadcrumb/Breadcrumb.tsx","../../src/components/navigation/drawer/Drawer.context.ts","../../src/components/navigation/drawer/Drawer.styles.ts","../../src/constants/breakpoints.constants.ts","../../src/components/navigation/drawer/utils/useDrawerVariant.utils.ts","../../src/components/overlay/backdrop/Backdrop.styles.ts","../../src/components/overlay/backdrop/Backdrop.tsx","../../src/hooks/common/use-transition-render/useTransitionRender.ts","../../src/components/navigation/drawer/drawer-header/DrawerHeader.tsx","../../src/components/navigation/drawer/drawer-body/DrawerBody.tsx","../../src/components/navigation/drawer/drawer-footer/DrawerFooter.tsx","../../src/components/navigation/drawer/drawer-item/DrawerItem.styles.ts","../../src/components/navigation/drawer/drawer-item/DrawerItem.tsx","../../src/components/navigation/drawer/Drawer.tsx","../../src/components/navigation/pagination/Pagination.styles.ts","../../src/components/navigation/pagination/utils/getPaginationRange.utils.ts","../../src/components/navigation/pagination/Pagination.tsx","../../src/components/navigation/tabs/tabs-list/TabsList.styles.ts","../../src/components/navigation/tabs/Tabs.context.ts","../../src/components/navigation/tabs/useTabsContext.ts","../../src/components/navigation/tabs/tabs-list/TabsList.tsx","../../src/components/navigation/tabs/tabs-panel/TabsPanel.styles.ts","../../src/components/navigation/tabs/tabs-panel/TabsPanel.tsx","../../src/components/navigation/tabs/tab-item/TabItem.styles.ts","../../src/components/navigation/tabs/tab-item/useTabItem.ts","../../src/components/navigation/tabs/tab-item/TabItem.tsx","../../src/components/navigation/tabs/Tabs.tsx","../../src/components/overlay/accordion/utils/useAccordion.utils.ts","../../src/components/overlay/accordion/Accordion.context.ts","../../src/components/overlay/accordion/Accordion.styles.ts","../../src/components/overlay/accordion/accordion-title/AccordionTitle.styles.ts","../../src/components/overlay/accordion/accordion-title/AccordionTitle.tsx","../../src/components/overlay/accordion/accordion-body/AccordionBody.styles.ts","../../src/components/overlay/accordion/accordion-body/AccordionBody.tsx","../../src/components/overlay/accordion/Accordion.tsx","../../src/components/overlay/alert/Alert.context.ts","../../src/components/overlay/alert/alert-title/AlertTitle.tsx","../../src/components/overlay/alert/alert-body/AlertBody.tsx","../../src/components/overlay/alert/alert-actions/AlertActions.tsx","../../src/components/overlay/alert/Alert.tsx","../../src/components/overlay/dialog/Dialog.styles.ts","../../src/components/overlay/dialog/Dialog.context.ts","../../src/components/overlay/dialog/utils/useDialog.utils.ts","../../src/components/overlay/dialog/dialog-header/DialogHeader.tsx","../../src/components/overlay/dialog/dialog-body/DialogBody.tsx","../../src/components/overlay/dialog/Dialog.tsx","../../src/hooks/common/use-media-query/useMediaQuery.ts","../../src/hooks/components/overlay/use-list-key-nav/useListKeyNav.ts","../../src/theme/_palettes/lightPalette.ts","../../src/theme/values/themeBreakpoints.ts","../../src/theme/values/themeFontSize.ts","../../src/theme/values/themeFontWeight.ts","../../src/theme/values/themeLineHeight.ts","../../src/theme/values/themeOpacity.ts","../../src/theme/values/themeRadius.ts","../../src/theme/values/themeShadows.ts","../../src/theme/values/themeSpacing.ts","../../src/theme/values/themeTransition.ts","../../src/theme/values/themeZIndex.ts","../../src/theme/themes/lightTheme.ts","../../src/theme/_palettes/darkPalette.ts","../../src/theme/themes/darkTheme.ts"],"sourcesContent":["import AlertErrorIcon from '@resources/assets/icons/AlertErrorIcon.svg?react'\r\nimport AlertInfoIcon from '@resources/assets/icons/AlertInfoIcon.svg?react'\r\nimport AlertSuccessIcon from '@resources/assets/icons/AlertSuccessIcon.svg?react'\r\nimport AlertWarningIcon from '@resources/assets/icons/AlertWarningIcon.svg?react'\r\nimport CalendarIcon from '@resources/assets/icons/CalendarIcon.svg?react'\r\nimport CheckIcon from '@resources/assets/icons/CheckIcon.svg?react'\r\nimport ChevronDownIcon from '@resources/assets/icons/ChevronDownIcon.svg?react'\r\nimport ChevronLeftIcon from '@resources/assets/icons/ChevronLeftIcon.svg?react'\r\nimport ChevronRightIcon from '@resources/assets/icons/ChevronRightIcon.svg?react'\r\nimport ChevronsLeftIcon from '@resources/assets/icons/ChevronsLeftIcon.svg?react'\r\nimport ChevronsRightIcon from '@resources/assets/icons/ChevronsRightIcon.svg?react'\r\nimport CloseIcon from '@resources/assets/icons/CloseIcon.svg?react'\r\nimport EyeIcon from '@resources/assets/icons/EyeIcon.svg?react'\r\nimport EyeSlashIcon from '@resources/assets/icons/EyeSlashIcon.svg?react'\r\nimport SpinnerIcon from '@resources/assets/icons/SpinnerIcon.svg?react'\r\n\r\nexport const IconRegistry = {\r\n AlertErrorIcon,\r\n AlertInfoIcon,\r\n AlertSuccessIcon,\r\n AlertWarningIcon,\r\n CalendarIcon,\r\n CheckIcon,\r\n ChevronDownIcon,\r\n ChevronLeftIcon,\r\n ChevronRightIcon,\r\n ChevronsLeftIcon,\r\n ChevronsRightIcon,\r\n CloseIcon,\r\n EyeIcon,\r\n EyeSlashIcon,\r\n SpinnerIcon,\r\n} as const\r\n\r\nexport {\r\n AlertErrorIcon,\r\n AlertInfoIcon,\r\n AlertSuccessIcon,\r\n AlertWarningIcon,\r\n CalendarIcon,\r\n CheckIcon,\r\n ChevronDownIcon,\r\n ChevronLeftIcon,\r\n ChevronRightIcon,\r\n ChevronsLeftIcon,\r\n ChevronsRightIcon,\r\n CloseIcon,\r\n EyeIcon,\r\n EyeSlashIcon,\r\n SpinnerIcon,\r\n}\r\n","import { keyframes } from '@aurora-ds/theme'\r\n\r\nexport const spinAnimation = keyframes({\r\n '0%': { transform: 'rotate(0deg)' },\r\n '100%': { transform: 'rotate(360deg)' },\r\n})\r\n\r\nexport const skeletonShimmerAnimation = keyframes({\r\n '0%': { backgroundPosition: '100% 50%' },\r\n '100%': { backgroundPosition: '0% 50%' },\r\n})\r\n","/** Default duration in milliseconds for mount/unmount transition animations. */\r\nexport const DEFAULT_TRANSITION_DURATION_MS = 150\r\n\r\nexport const DEFAULT_BUTTON_HEIGHT = 40\r\nexport const DEFAULT_DRAWER_ITEM_SIZE = 40\r\n\r\n/** Drawer widths (px) — single source of truth for both the Drawer and its items. */\r\nexport const EXPANDED_DRAWER_WIDTH = 240\r\nexport const COLLAPSED_DRAWER_WIDTH = 58\r\n\r\n/**\r\n * Horizontal padding (px) applied by `Drawer.Body` on EACH side of its items\r\n * (Box `px=\"sm\"` → theme.spacing.sm = 0.5rem = 8px).\r\n */\r\nconst DRAWER_BODY_HORIZONTAL_PADDING = 8\r\n\r\n/**\r\n * DrawerItem widths (px), always derived from the drawer width minus the body\r\n * horizontal padding. Using explicit widths (instead of `width: 100%`) lets the\r\n * item animate its own width in sync with the drawer for a smooth transition.\r\n */\r\nexport const EXPANDED_DRAWER_ITEM_WIDTH = EXPANDED_DRAWER_WIDTH - DRAWER_BODY_HORIZONTAL_PADDING * 2 // 264\r\nexport const COLLAPSED_DRAWER_ITEM_WIDTH = COLLAPSED_DRAWER_WIDTH - DRAWER_BODY_HORIZONTAL_PADDING * 2 // 44\r\n","import { FocusRingOptions, FocusRingTheme } from '@theme/components/focusRing.types'\r\n\r\n/**\r\n * Width of the focus ring outline. Kept thick enough to be clearly visible\r\n * across every focusable component.\r\n */\r\nexport const FOCUS_RING_WIDTH = '2px'\r\n\r\n/** Default gap between the element and its focus ring (outset ring). */\r\nexport const FOCUS_RING_OFFSET = '2px'\r\n\r\n/**\r\n * Returns a consistent, fully-visible focus ring meant to be spread inside a\r\n * `:focus-visible` (or `&:focus-visible`) selector.\r\n *\r\n * This is the **single source of truth** for the design-system focus style:\r\n * every focusable component must use it so the focus indicator is always a\r\n * complete, clearly visible outline (never a partial/soft glow).\r\n *\r\n * @example\r\n * ':focus-visible': getFocusRingStyles(theme)\r\n *\r\n * @example\r\n * // Glued segmented control / tabs (avoid clipping + neighbour overlap)\r\n * ':focus-visible': getFocusRingStyles(theme, { inset: true, elevate: true })\r\n */\r\nexport const getFocusRingStyles = (theme: FocusRingTheme, options: FocusRingOptions = {}) => {\r\n const {\r\n color = theme.colors.focusRing,\r\n inset = false,\r\n elevate = false,\r\n offset = inset ? `-${FOCUS_RING_WIDTH}` : FOCUS_RING_OFFSET,\r\n } = options\r\n\r\n return {\r\n outline: `${FOCUS_RING_WIDTH} solid ${color}`,\r\n outlineOffset: offset,\r\n ...(elevate ? { position: 'relative' as const, zIndex: 1 } : {}),\r\n }\r\n}\r\n","import type { StyleWithPseudos } from '@aurora-ds/theme'\r\n\r\nimport type { ButtonColor, ButtonVariant, } from '@components/actions/button/button.types'\r\nimport type { ButtonIntentMap, ButtonVariantTheme } from '@components/actions/_common/buttonIntent.types'\r\nimport { DEFAULT_BUTTON_HEIGHT } from '@constants/app.constants'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\n/**\r\n * Focus-ring overrides forwarded to {@link getFocusRingStyles}. Glued button\r\n * groups (e.g. ToggleGroup) pass `{ inset: true, elevate: true }` so the ring\r\n * is never clipped/overlapped by adjacent segments.\r\n */\r\ntype ActionButtonFocusOptions = Parameters<typeof getFocusRingStyles>[1]\r\n\r\n/**\r\n * Returns the complete root styles for an action button (base + color/variant),\r\n * all in one object so CSS transitions work correctly.\r\n * Size-specific styles (height, padding, fontSize) are added by the caller.\r\n *\r\n * @param theme\r\n * @param variant\r\n * @param color\r\n * @param focusOptions - Optional focus-ring overrides (e.g. glued segmented groups).\r\n */\r\nexport const buildActionButtonRootStyle = (\r\n theme: ButtonVariantTheme,\r\n variant: ButtonVariant,\r\n color: ButtonColor,\r\n focusOptions?: ActionButtonFocusOptions,\r\n): StyleWithPseudos => {\r\n const c = theme.colors\r\n\r\n const intents: ButtonIntentMap = {\r\n primary: {\r\n main: c.primaryMain, hover: c.primaryHover, active: c.primaryActive,\r\n on: c.primaryOn, subtle: c.primarySubtle, subtleHover: c.primarySubtleHover, subtleActive: c.primarySubtleActive,\r\n fg: c.primaryMain, fgHover: c.primaryHover, border: c.primaryMain,\r\n },\r\n secondary: {\r\n main: c.secondaryMain, hover: c.secondaryHover, active: c.secondaryActive,\r\n on: c.secondaryOn, subtle: c.secondarySubtle, subtleHover: c.secondarySubtleHover, subtleActive: c.secondarySubtleActive,\r\n fg: c.secondaryMain, fgHover: c.secondaryHover, border: c.secondaryMain,\r\n },\r\n neutral: {\r\n main: c.defaultMain, hover: c.defaultHover, active: c.defaultActive,\r\n on: c.textInverse, subtle: c.defaultSubtle, subtleHover: c.defaultSubtleHover, subtleActive: c.defaultSubtleActive,\r\n fg: c.defaultMain, fgHover: c.defaultHover, border: c.defaultMain,\r\n },\r\n info: {\r\n main: c.infoMain, hover: c.infoHover, active: c.infoActive,\r\n on: c.infoOn, subtle: c.infoSubtle, subtleHover: c.infoSubtleHover, subtleActive: c.infoSubtleActive,\r\n fg: c.infoMain, fgHover: c.infoHover, border: c.infoMain,\r\n },\r\n success: {\r\n main: c.successMain, hover: c.successHover, active: c.successActive,\r\n on: c.successOn, subtle: c.successSubtle, subtleHover: c.successSubtleHover, subtleActive: c.successSubtleActive,\r\n fg: c.successMain, fgHover: c.successHover, border: c.successMain,\r\n },\r\n warning: {\r\n main: c.warningMain, hover: c.warningHover, active: c.warningActive,\r\n on: c.warningOn, subtle: c.warningSubtle, subtleHover: c.warningSubtleHover, subtleActive: c.warningSubtleActive,\r\n fg: c.warningMain, fgHover: c.warningHover, border: c.warningMain,\r\n },\r\n error: {\r\n main: c.errorMain, hover: c.errorHover, active: c.errorActive,\r\n on: c.errorOn, subtle: c.errorSubtle, subtleHover: c.errorSubtleHover, subtleActive: c.errorSubtleActive,\r\n fg: c.errorMain, fgHover: c.errorHover, border: c.errorMain,\r\n },\r\n 'textPrimary': {\r\n main: c.primaryMain, hover: c.primaryHover, active: c.primaryActive,\r\n on: c.primaryOn, subtle: c.primarySubtle, subtleHover: c.primarySubtleHover, subtleActive: c.primarySubtleActive,\r\n fg: c.textPrimary, fgHover: c.textPrimary, border: c.primaryMain,\r\n },\r\n }\r\n\r\n const intent = intents[color]\r\n\r\n const colorVariantStyles: StyleWithPseudos =\r\n variant === 'contained'\r\n ? {\r\n backgroundColor: intent.main,\r\n borderColor: intent.main,\r\n color: intent.on,\r\n ':hover:not(:disabled)': { backgroundColor: intent.hover },\r\n ':active:not(:disabled)': { backgroundColor: intent.active },\r\n }\r\n : variant === 'outlined'\r\n ? {\r\n backgroundColor: 'transparent',\r\n borderColor: intent.border,\r\n color: intent.fg,\r\n ':hover:not(:disabled)': { backgroundColor: intent.subtleHover, color: intent.fgHover },\r\n ':active:not(:disabled)': { backgroundColor: intent.subtleActive, color: intent.active },\r\n }\r\n : {\r\n backgroundColor: 'transparent',\r\n borderColor: 'transparent',\r\n color: intent.fg,\r\n ':hover:not(:disabled)': { backgroundColor: intent.subtleHover, color: intent.fgHover },\r\n ':active:not(:disabled)': { backgroundColor: intent.subtleActive, color: intent.active },\r\n }\r\n\r\n return {\r\n position: 'relative',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n boxSizing: 'border-box',\r\n border: '1px solid transparent',\r\n borderRadius: theme.radius.md,\r\n fontFamily: 'inherit',\r\n userSelect: 'none',\r\n height: DEFAULT_BUTTON_HEIGHT,\r\n cursor: 'pointer',\r\n outline: 'none',\r\n transition: `background-color ${theme.transition.normal}, color ${theme.transition.normal}`,\r\n ...colorVariantStyles,\r\n ':focus-visible': getFocusRingStyles(theme, focusOptions),\r\n ':disabled': { cursor: 'not-allowed', opacity: theme.opacity.high },\r\n }\r\n}\r\n","import { createStyles } from '@aurora-ds/theme'\n\nimport { spinAnimation } from '@constants/animation.constants'\nimport { buildActionButtonRootStyle } from '@components/actions/_common/buttonVariants.styles'\n\nimport type { ButtonColor, ButtonRootParams, ButtonSize, ButtonVariant } from '@components/actions/button/button.types'\n\nexport const BUTTON_STYLES = createStyles((theme) => ({\n root: ({ variant, color, size }: ButtonRootParams) => ({\n ...buildActionButtonRootStyle(theme, variant, color),\n ...(size === 'sm'\n ? { height: '2rem', padding: `0 ${theme.spacing.sm}`, fontSize: theme.fontSize.xs }\n : size === 'lg'\n ? { height: '3rem', padding: `0 ${theme.spacing.lg}`, fontSize: theme.fontSize.md }\n : { height: '2.5rem', padding: `0 ${theme.spacing.md}`, fontSize: theme.fontSize.sm }),\n }),\n /** Inner wrapper holding icons + label, centered by the button. */\n content: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.5em',\n },\n /** Hidden (but keeps width) while loading. */\n contentHidden: { visibility: 'hidden' },\n /** Centers the spinner icon over the button content while loading. */\n spinnerWrap: {\n position: 'absolute',\n inset: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n /** Spinning animation applied to the SpinnerIcon wrapper. */\n spinnerIcon: {\n animation: `${spinAnimation} 0.75s linear infinite`,\n '@media (prefers-reduced-motion: reduce)': { animation: 'none' },\n },\n}), { id: 'button' })\n\n// Pre-generate CSS for all variant/color/size combinations at module load.\n// This ensures the CSS is already in the stylesheet before the first user interaction,\n// preventing the \"first click is instant\" issue caused by lazy CSS injection.\nconst BUTTON_VARIANT_VALUES: ButtonVariant[] = ['contained', 'outlined', 'text']\nconst BUTTON_COLOR_VALUES: ButtonColor[] = ['primary', 'secondary', 'neutral', 'info', 'success', 'warning', 'error']\nconst BUTTON_SIZE_VALUES: ButtonSize[] = ['sm', 'md', 'lg']\n\nBUTTON_VARIANT_VALUES.forEach(variant =>\n BUTTON_COLOR_VALUES.forEach(color =>\n BUTTON_SIZE_VALUES.forEach(size => BUTTON_STYLES.root({ variant, color, size }))\n )\n)\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { IconStyleParams } from '@components/foundation/icon/Icon.props'\r\n\r\nexport const ICON_STYLES = createStyles((theme) => ({\r\n root: ({ size, strokeColor, fill, backgroundColor, padding, borderRadius }: IconStyleParams) => ({\r\n boxSizing: 'content-box' as const,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n overflow: 'hidden',\r\n transition: `color ${theme.transition.fast}, fill ${theme.transition.fast}`,\r\n flexShrink: 0,\r\n lineHeight: 0,\r\n height: theme.fontSize[size ?? 'md'],\r\n width: theme.fontSize[size ?? 'md'],\r\n minWidth: theme.fontSize[size ?? 'md'],\r\n minHeight: theme.fontSize[size ?? 'md'],\r\n backgroundColor: backgroundColor ? theme.colors[backgroundColor] : undefined,\r\n padding: padding ? theme.spacing[padding] : 0,\r\n borderRadius: theme.radius[borderRadius ?? 'none'],\r\n '& svg': {\r\n color: strokeColor ? theme.colors[strokeColor] : undefined,\r\n stroke: strokeColor ? theme.colors[strokeColor] : undefined,\r\n },\r\n '& svg [fill=\"currentColor\"], & svg[fill=\"currentColor\"]': {\r\n fill: fill ? theme.colors[fill] : undefined,\r\n },\r\n }),\r\n}))\r\n","import { ICON_STYLES } from '@components/foundation/icon/Icon.styles'\r\nimport type { IconProps } from '@components/foundation/icon/Icon.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Renders an SVG icon inside a theme-aware wrapper.\r\n *\r\n * @example <Icon icon={MenuIcon} size='md' strokeColor='primaryMain' />\r\n * @example <Icon icon={CloseIcon} strokeColor='textInverse' backgroundColor='primaryMain' padding='sm' borderRadius='full' />\r\n */\r\nconst Icon: FC<IconProps> = (\r\n {\r\n ref,\r\n icon: SvgIcon,\r\n size,\r\n strokeColor,\r\n fill,\r\n backgroundColor,\r\n padding,\r\n borderRadius,\r\n className,\r\n role,\r\n ...rest\r\n }\r\n) => {\r\n const generatedClassName = ICON_STYLES.root({ size, strokeColor, fill, backgroundColor, padding, borderRadius })\r\n const mergedClassName = className ? `${generatedClassName} ${className}` : generatedClassName\r\n const isLabelled = Boolean(rest['aria-label'] || rest['aria-labelledby'])\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={mergedClassName}\r\n aria-hidden={isLabelled ? undefined : true}\r\n role={role ?? (isLabelled ? 'img' : 'presentation')}\r\n {...rest}\r\n >\r\n <SvgIcon\r\n width={'100%'}\r\n height={'100%'}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nIcon.displayName = 'Icon'\r\n\r\nexport default Icon\r\n","import type { TextVariants, TextVariantStyle } from '@components/foundation/text/text.types'\r\nimport type { Theme } from '@theme/theme.types'\r\n\r\n/** Returns the baseline font styles for each text variant. */\r\nexport const getTextVariantStyles = (theme: Theme): Record<TextVariants, TextVariantStyle> => ({\r\n h1: {\r\n tag: 'h1',\r\n fontSize: theme.fontSize['3xl'],\r\n fontWeight: theme.fontWeight.bold,\r\n lineHeight: theme.lineHeight.tight,\r\n },\r\n h2: {\r\n tag: 'h2',\r\n fontSize: theme.fontSize['2xl'],\r\n fontWeight: theme.fontWeight.bold,\r\n lineHeight: theme.lineHeight.tight,\r\n },\r\n h3: {\r\n tag: 'h3',\r\n fontSize: theme.fontSize.xl,\r\n fontWeight: theme.fontWeight.semibold,\r\n lineHeight: theme.lineHeight.tight,\r\n },\r\n h4: {\r\n tag: 'h4',\r\n fontSize: theme.fontSize.lg,\r\n fontWeight: theme.fontWeight.semibold,\r\n lineHeight: theme.lineHeight.normal,\r\n },\r\n h5: {\r\n tag: 'h5',\r\n fontSize: theme.fontSize.md,\r\n fontWeight: theme.fontWeight.medium,\r\n lineHeight: theme.lineHeight.normal,\r\n },\r\n h6: {\r\n tag: 'h6',\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.medium,\r\n lineHeight: theme.lineHeight.normal,\r\n },\r\n p: {\r\n tag: 'p',\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.regular,\r\n lineHeight: theme.lineHeight.relaxed,\r\n },\r\n span: {\r\n tag: 'span',\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.regular,\r\n lineHeight: theme.lineHeight.normal,\r\n },\r\n label: {\r\n tag: 'label',\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.medium,\r\n lineHeight: theme.lineHeight.normal,\r\n },\r\n strong: {\r\n tag: 'strong',\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.bold,\r\n lineHeight: theme.lineHeight.normal,\r\n },\r\n})\r\n","import { createStyles } from '@aurora-ds/theme'\r\nimport { getTextVariantStyles } from '@components/foundation/text/utils/getTextVariantStyles.utils'\r\n\r\nimport type { TextStyleParams } from '@components/foundation/text/Text.props'\r\n\r\nexport const TEXT_STYLES = createStyles((theme) => {\r\n const variantStyles = getTextVariantStyles(theme)\r\n\r\n return {\r\n root: ({\r\n variant = 'span',\r\n color,\r\n fontSize,\r\n fontWeight,\r\n lineHeight,\r\n fontFamily,\r\n underline,\r\n strikethrough,\r\n italic,\r\n noWrap,\r\n preserveWhitespace,\r\n width,\r\n textTransform,\r\n letterSpacing,\r\n textAlign,\r\n }: TextStyleParams) => {\r\n const textDecoration =\r\n underline && strikethrough\r\n ? 'underline line-through'\r\n : underline\r\n ? 'underline'\r\n : strikethrough\r\n ? 'line-through'\r\n : undefined\r\n\r\n return {\r\n margin: 0,\r\n padding: 0,\r\n fontSize: fontSize ? theme.fontSize[fontSize] : variantStyles[variant].fontSize,\r\n fontWeight: fontWeight ? theme.fontWeight[fontWeight] : variantStyles[variant].fontWeight,\r\n lineHeight: lineHeight ? theme.lineHeight[lineHeight] : variantStyles[variant].lineHeight,\r\n color: color ? theme.colors[color] : 'inherit',\r\n cursor: 'inherit',\r\n ...(width !== undefined && { width }),\r\n ...(fontFamily && { fontFamily }),\r\n ...(textTransform && { textTransform }),\r\n ...(letterSpacing !== undefined && { letterSpacing }),\r\n ...(textAlign && { textAlign }),\r\n ...(italic && { fontStyle: 'italic' }),\r\n // noWrap and preserveWhitespace are mutually exclusive; noWrap wins.\r\n // Truncation (maxLines/truncate) injects whiteSpace via inline style — both are ignored there.\r\n ...(noWrap\r\n ? { whiteSpace: 'nowrap' as const }\r\n : preserveWhitespace\r\n ? { whiteSpace: 'pre-wrap' as const }\r\n : {}),\r\n ...(textDecoration && {\r\n textDecoration,\r\n ...(underline && { textUnderlineOffset: '3px' }),\r\n }),\r\n }\r\n },\r\n }\r\n})\r\n","/**\r\n * Returns inline CSS styles to truncate text with an ellipsis.\r\n *\r\n * - 1 line → classic `white-space: nowrap` + `text-overflow: ellipsis` (best browser support)\r\n * - n lines → `-webkit-line-clamp` (supported in all modern browsers)\r\n */\r\nexport const getTruncateTextStyles = (maxLines: number) => {\r\n if (maxLines === 1) {\r\n return {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap' as const,\r\n }\r\n }\r\n\r\n return {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n display: '-webkit-box',\r\n WebkitLineClamp: maxLines,\r\n WebkitBoxOrient: 'vertical' as const,\r\n whiteSpace: 'normal' as const,\r\n overflowWrap: 'break-word' as const,\r\n wordBreak: 'break-word' as const,\r\n }\r\n}\r\n","import { createElement, Fragment, type ReactNode } from 'react'\r\n\r\n/**\r\n * Parses text content and converts **bold** syntax to <strong> elements\r\n * @param children - The content to parse (string or ReactNode)\r\n * @returns Parsed content with bold text wrapped in <strong> elements\r\n */\r\nexport const parseTextWithBold = (children: ReactNode): ReactNode => {\r\n if (typeof children !== 'string' || !children.includes('**')) {\r\n return children\r\n }\r\n\r\n const boldPattern = /\\*\\*(.+?)\\*\\*/g\r\n const parts: ReactNode[] = []\r\n let lastIndex = 0\r\n let match: RegExpExecArray | null\r\n\r\n while ((match = boldPattern.exec(children)) !== null) {\r\n if (match.index > lastIndex) {\r\n parts.push(children.slice(lastIndex, match.index))\r\n }\r\n\r\n parts.push(\r\n createElement('strong', { key: match.index }, match[1])\r\n )\r\n\r\n lastIndex = match.index + match[0].length\r\n }\r\n\r\n if (parts.length === 0) {\r\n return children\r\n }\r\n\r\n if (lastIndex < children.length) {\r\n parts.push(children.slice(lastIndex))\r\n }\r\n\r\n return createElement(Fragment, null, ...parts)\r\n}\r\n","import { useTheme } from '@aurora-ds/theme'\r\nimport { TEXT_STYLES } from '@components/foundation/text/Text.styles'\r\nimport { getTextVariantStyles } from '@components/foundation/text/utils/getTextVariantStyles.utils'\r\nimport { getTruncateTextStyles } from '@components/foundation/text/utils/getTruncateTextStyles.utils'\r\nimport { parseTextWithBold } from '@components/foundation/text/utils/parseTextWithBold.utils'\r\nimport { createElement, type FC } from 'react'\r\n\r\nimport type { TextProps } from '@components/foundation/text/Text.props'\r\n\r\n/**\r\n * Renders a semantic HTML text element with theme-aware styling.\r\n *\r\n * @example <Text variant='h1' color='text.primary'>Title</Text>\r\n * @example <Text variant='p' maxLines={2}>Long content…</Text>\r\n * @example <Text variant='h1' as='h2'>h1 styles, h2 semantics</Text>\r\n * @example <Text variant='label' htmlFor='email'>Email</Text>\r\n * @example <Text>Hello **world**!</Text> // → Hello <strong>world</strong>!\r\n */\r\nconst Text: FC<TextProps> = (\r\n {\r\n ref,\r\n children,\r\n variant = 'span',\r\n as,\r\n color,\r\n fontSize,\r\n fontWeight,\r\n lineHeight,\r\n fontFamily,\r\n width,\r\n textTransform,\r\n letterSpacing,\r\n textAlign,\r\n underline,\r\n strikethrough,\r\n italic,\r\n maxLines,\r\n truncate,\r\n noWrap,\r\n preserveWhitespace,\r\n htmlFor,\r\n className,\r\n style,\r\n ...rest\r\n }\r\n) => {\r\n const theme = useTheme()\r\n const variantStyles = getTextVariantStyles(theme)\r\n\r\n const effectiveLines = truncate ? 1 : maxLines\r\n const tag = as ?? variantStyles[variant].tag\r\n const parsedChildren = parseTextWithBold(children)\r\n const truncateStyles = effectiveLines ? getTruncateTextStyles(effectiveLines) : undefined\r\n\r\n const generatedClassName = TEXT_STYLES.root({\r\n variant,\r\n color,\r\n fontSize,\r\n fontWeight,\r\n lineHeight,\r\n fontFamily,\r\n underline,\r\n strikethrough,\r\n italic,\r\n noWrap: effectiveLines ? false : noWrap,\r\n preserveWhitespace,\r\n width,\r\n textTransform,\r\n letterSpacing,\r\n textAlign,\r\n })\r\n\r\n const mergedClassName = className ? `${generatedClassName} ${className}` : generatedClassName\r\n const mergedStyle = truncateStyles ? { ...truncateStyles, ...style } : style\r\n\r\n return createElement(\r\n tag,\r\n {\r\n ref,\r\n className: mergedClassName,\r\n style: mergedStyle,\r\n ...(tag === 'label' && htmlFor !== undefined ? { htmlFor } : {}),\r\n ...rest,\r\n },\r\n parsedChildren\r\n )\r\n}\r\n\r\nexport default Text\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { SpinnerIcon } from '@resources/Icons'\r\nimport { BUTTON_STYLES } from '@components/actions/button/Button.styles'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { ButtonProps } from '@components/actions/button/Button.props'\r\nimport type { ButtonSize } from '@components/actions/button/button.types'\r\nimport type { FC } from 'react'\r\n\r\n/** Maps the button size to a Text font-size token so the label scales with the button. */\r\nconst LABEL_FONT_SIZE: Record<ButtonSize, keyof Theme['fontSize']> = {\r\n sm: 'xs',\r\n md: 'sm',\r\n lg: 'md',\r\n}\r\n\r\n/** Maps the button size to an Icon size token. */\r\nconst ICON_SIZE: Record<ButtonSize, keyof Theme['fontSize']> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n}\r\n\r\n/**\r\n * Theme-aware button built on `createVariants`.\r\n *\r\n * @example <Button label='Save' onClick={save} />\r\n * @example <Button label='Delete' variant='outlined' color='error' startIcon={IconRegistry.CloseIcon} />\r\n * @example <Button label='Submitting…' color='success' isLoading width='100%' />\r\n */\r\nconst Button: FC<ButtonProps> = (\r\n {\r\n ref,\r\n variant = 'contained',\r\n color = 'primary',\r\n size = 'md',\r\n width,\r\n flexGrow,\r\n flexShrink,\r\n isLoading = false,\r\n startIcon: StartIcon,\r\n endIcon: EndIcon,\r\n label,\r\n children,\r\n className,\r\n type = 'button',\r\n disabled,\r\n style,\r\n ...rest\r\n }\r\n) => {\r\n const isDisabled = disabled || isLoading\r\n const iconSize = ICON_SIZE[size]\r\n\r\n const rootClassName = cx(BUTTON_STYLES.root({ variant, color, size }), className)\r\n const mergedStyle = {\r\n ...style,\r\n ...(width !== undefined ? { width } : {}),\r\n ...(flexGrow !== undefined ? { flexGrow } : {}),\r\n ...(flexShrink !== undefined ? { flexShrink } : {}),\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type={type}\r\n className={rootClassName}\r\n disabled={isDisabled}\r\n aria-busy={isLoading || undefined}\r\n style={mergedStyle}\r\n {...rest}\r\n >\r\n {isLoading && (\r\n <span className={BUTTON_STYLES.spinnerWrap}>\r\n <Icon\r\n icon={SpinnerIcon}\r\n size={iconSize}\r\n className={BUTTON_STYLES.spinnerIcon}\r\n />\r\n </span>\r\n )}\r\n\r\n <span className={cx(BUTTON_STYLES.content, isLoading && BUTTON_STYLES.contentHidden)}>\r\n {StartIcon && (\r\n <Icon\r\n icon={StartIcon}\r\n size={iconSize}\r\n />\r\n )}\r\n\r\n {(label !== undefined || children !== undefined) && (\r\n <Text\r\n variant={'span'}\r\n fontSize={LABEL_FONT_SIZE[size]}\r\n fontWeight={'medium'}\r\n lineHeight={'none'}\r\n >\r\n {label ?? children}\r\n </Text>\r\n )}\r\n\r\n {EndIcon && (\r\n <Icon\r\n icon={EndIcon}\r\n size={iconSize}\r\n />\r\n )}\r\n </span>\r\n </button>\r\n )\r\n}\r\n\r\nButton.displayName = 'Button'\r\n\r\nexport default Button\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { spinAnimation } from '@constants/animation.constants'\r\n\r\nimport type { FabColor, FabRootParams } from '@components/actions/fab/fab.types'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\n/** Pixel dimensions per size. */\r\nconst SIZE_MAP = {\r\n sm: '3rem',\r\n md: '3.5rem',\r\n lg: '4rem',\r\n} as const\r\n\r\n/** Icon pixel size per FAB size. */\r\nconst ICON_SIZE_MAP = {\r\n sm: '1.125rem',\r\n md: '1.375rem',\r\n lg: '1.625rem',\r\n} as const\r\n\r\nexport const FAB_STYLES = createStyles((theme) => ({\r\n root: ({ color, size, extended }: FabRootParams) => {\r\n const c = theme.colors\r\n\r\n const colorMap: Record<FabColor, { bg: string; bgHover: string; bgActive: string; fg: string }> = {\r\n primary: { bg: c.primaryMain, bgHover: c.primaryHover, bgActive: c.primaryActive, fg: c.primaryOn },\r\n secondary: { bg: c.secondaryMain, bgHover: c.secondaryHover, bgActive: c.secondaryActive, fg: c.secondaryOn },\r\n neutral: { bg: c.defaultMain, bgHover: c.defaultHover, bgActive: c.defaultActive, fg: c.textInverse },\r\n info: { bg: c.infoMain, bgHover: c.infoHover, bgActive: c.infoActive, fg: c.infoOn },\r\n success: { bg: c.successMain, bgHover: c.successHover, bgActive: c.successActive, fg: c.successOn },\r\n warning: { bg: c.warningMain, bgHover: c.warningHover, bgActive: c.warningActive, fg: c.warningOn },\r\n error: { bg: c.errorMain, bgHover: c.errorHover, bgActive: c.errorActive, fg: c.errorOn },\r\n 'textPrimary': { bg: c.primaryMain, bgHover: c.primaryHover, bgActive: c.primaryActive, fg: c.primaryOn },\r\n }\r\n\r\n const { bg, bgHover, bgActive, fg } = colorMap[color]\r\n const dim = SIZE_MAP[size]\r\n\r\n return {\r\n position: 'relative',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n boxSizing: 'border-box',\r\n border: 'none',\r\n borderRadius: extended ? '100px' : '50%',\r\n height: dim,\r\n minWidth: dim,\r\n padding: extended ? `0 ${theme.spacing.md}` : '0',\r\n backgroundColor: bg,\r\n color: fg,\r\n boxShadow: theme.shadows.md,\r\n fontFamily: 'inherit',\r\n fontWeight: theme.fontWeight.medium,\r\n fontSize: theme.fontSize.sm,\r\n userSelect: 'none',\r\n cursor: 'pointer',\r\n outline: 'none',\r\n transition: `background-color ${theme.transition.normal}, box-shadow ${theme.transition.normal}`,\r\n ':hover:not(:disabled)': { backgroundColor: bgHover, boxShadow: theme.shadows.lg },\r\n ':active:not(:disabled)': { backgroundColor: bgActive, boxShadow: theme.shadows.sm },\r\n ':focus-visible': getFocusRingStyles(theme),\r\n ':disabled': { cursor: 'not-allowed', opacity: theme.opacity.high, boxShadow: 'none' },\r\n }\r\n },\r\n\r\n /** Spinning animation applied to the SpinnerIcon. */\r\n spinnerIcon: {\r\n animation: `${spinAnimation} 0.75s linear infinite`,\r\n '@media (prefers-reduced-motion: reduce)': { animation: 'none' },\r\n },\r\n\r\n /** Inner wrapper holding icon (+ optional label), centered by the button. */\r\n content: {\r\n display: 'inline-flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: '0.375rem',\r\n whiteSpace: 'nowrap',\r\n },\r\n\r\n /** Hidden (but keeps dimensions) while loading. */\r\n contentHidden: { visibility: 'hidden' },\r\n\r\n /** Centers the spinner absolutely over the button content while loading. */\r\n spinnerWrap: {\r\n position: 'absolute',\r\n inset: 0,\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n}), { id: 'fab' })\r\n\r\n// Pre-generate CSS for all color/size/extended combinations.\r\nconst FAB_COLOR_VALUES: FabColor[] = ['primary', 'secondary', 'neutral', 'info', 'success', 'warning', 'error', 'textPrimary']\r\nconst FAB_SIZE_VALUES = ['sm', 'md', 'lg'] as const\r\n\r\nFAB_COLOR_VALUES.forEach(color =>\r\n FAB_SIZE_VALUES.forEach(size => {\r\n FAB_STYLES.root({ color, size, extended: false })\r\n FAB_STYLES.root({ color, size, extended: true })\r\n })\r\n)\r\n\r\nexport { SIZE_MAP, ICON_SIZE_MAP }\r\n","import type { FabPlacement } from '@components/actions/fab/fab.types'\r\nimport type { CSSProperties } from 'react'\r\n\r\n/**\r\n * Builds the inline `style` object that pins the FAB to a screen corner via\r\n * `position: fixed`.\r\n *\r\n * Returns an empty object when `placement` is `null` / `undefined` so the\r\n * button can be used inline without any fixed positioning.\r\n */\r\nexport const buildPlacementStyle = (\r\n placement: FabPlacement | null | undefined,\r\n offsetX: string,\r\n offsetY: string,\r\n): CSSProperties => {\r\n if (!placement) { return {} }\r\n\r\n const isBottom = placement.startsWith('bottom')\r\n const isRight = placement.endsWith('right')\r\n\r\n return {\r\n position: 'fixed',\r\n zIndex: 1000,\r\n [isBottom ? 'bottom' : 'top']: offsetY,\r\n [isRight ? 'right' : 'left']: offsetX,\r\n }\r\n}\r\n","import { createPortal } from 'react-dom'\r\n\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { SpinnerIcon } from '@resources/Icons'\r\nimport { FAB_STYLES, ICON_SIZE_MAP } from '@components/actions/fab/Fab.styles'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Text } from '@components/foundation/text'\r\nimport { buildPlacementStyle } from '@components/actions/fab/utils/buildPlacementStyle.utils'\r\n\r\nimport type { FabProps } from '@components/actions/fab/Fab.props'\r\nimport type { CSSProperties, FC } from 'react'\r\n\r\n/**\r\n * Floating Action Button (FAB).\r\n *\r\n * A circular elevated button intended for the primary action of a screen.\r\n * Pass a `label` to get an extended (pill-shaped) FAB.\r\n *\r\n * @example <Fab icon={AddIcon} ariaLabel=\"Add item\" />\r\n * @example <Fab icon={AddIcon} ariaLabel=\"Add item\" label=\"Add\" color=\"success\" />\r\n * @example <Fab icon={EditIcon} ariaLabel=\"Edit\" placement=\"bottom-left\" />\r\n * @example <Fab icon={AddIcon} ariaLabel=\"Add\" placement={null} /> // inline, no fixed positioning\r\n */\r\nconst Fab: FC<FabProps> = (\r\n {\r\n ref,\r\n icon: IconComponent,\r\n ariaLabel,\r\n label,\r\n color = 'primary',\r\n size = 'md',\r\n placement = 'bottom-right',\r\n offsetX = '1.5rem',\r\n offsetY = '1.5rem',\r\n isLoading = false,\r\n type = 'button',\r\n disabled,\r\n style,\r\n ...rest\r\n }\r\n) => {\r\n const isDisabled = disabled || isLoading\r\n const extended = label !== undefined\r\n const iconPixelSize = ICON_SIZE_MAP[size]\r\n\r\n const rootClassName = FAB_STYLES.root({ color, size, extended })\r\n const placementStyle = buildPlacementStyle(placement, offsetX, offsetY)\r\n\r\n const mergedStyle: CSSProperties = { ...placementStyle, ...style }\r\n\r\n const button = (\r\n <button\r\n ref={ref}\r\n type={type}\r\n className={rootClassName}\r\n disabled={isDisabled}\r\n aria-label={ariaLabel}\r\n aria-busy={isLoading || undefined}\r\n style={mergedStyle}\r\n {...rest}\r\n >\r\n {isLoading && (\r\n <span className={FAB_STYLES.spinnerWrap}>\r\n <Icon\r\n icon={SpinnerIcon}\r\n className={cx(FAB_STYLES.spinnerIcon)}\r\n style={{ width: iconPixelSize, height: iconPixelSize }}\r\n />\r\n </span>\r\n )}\r\n\r\n <span className={cx(FAB_STYLES.content, isLoading && FAB_STYLES.contentHidden)}>\r\n <Icon\r\n icon={IconComponent}\r\n style={{ width: iconPixelSize, height: iconPixelSize }}\r\n />\r\n\r\n {extended && (\r\n <Text\r\n variant={'span'}\r\n fontSize={'sm'}\r\n fontWeight={'medium'}\r\n lineHeight={'none'}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n </span>\r\n </button>\r\n )\r\n\r\n // When fixed to the screen, render via a portal so that ancestor CSS transforms\r\n // (e.g. transform, filter, will-change) cannot break `position: fixed`.\r\n if (placement) {\r\n return createPortal(button, document.body)\r\n }\r\n\r\n return button\r\n}\r\n\r\nFab.displayName = 'Fab'\r\n\r\nexport default Fab\r\n","import { createStyles } from '@aurora-ds/theme'\n\nimport { spinAnimation } from '@constants/animation.constants'\nimport { buildActionButtonRootStyle } from '@components/actions/_common/buttonVariants.styles'\n\nimport type { ButtonColor, ButtonSize, ButtonVariant } from '@components/actions/button/button.types'\nimport { IconButtonRootParams } from '@components/actions/icon-button/IconButton.types'\n\nexport const ICON_BUTTON_STYLES = createStyles((theme) => ({\n root: ({ variant, color, size }: IconButtonRootParams) => ({\n ...buildActionButtonRootStyle(theme, variant, color),\n ...(size === 'sm'\n ? { width: '2rem', height: '2rem', padding: '0' }\n : size === 'lg'\n ? { width: '3rem', height: '3rem', padding: '0' }\n : { width: '2.5rem', height: '2.5rem', padding: '0' }),\n }),\n /** Spinning animation applied to the SpinnerIcon. */\n spinnerIcon: {\n animation: `${spinAnimation} 0.75s linear infinite`,\n '@media (prefers-reduced-motion: reduce)': { animation: 'none' },\n },\n /** Hidden (but keeps size) while loading. */\n iconHidden: { visibility: 'hidden' },\n /** Centers the spinner icon absolutely over the button while loading. */\n spinnerWrap: {\n position: 'absolute',\n inset: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n}), { id: 'icon-button' })\n\nconst ICON_BUTTON_VARIANT_VALUES: ButtonVariant[] = ['contained', 'outlined', 'text']\nconst ICON_BUTTON_COLOR_VALUES: ButtonColor[] = ['primary', 'secondary', 'neutral', 'info', 'success', 'warning', 'error']\nconst ICON_BUTTON_SIZE_VALUES: ButtonSize[] = ['sm', 'md', 'lg']\n\nICON_BUTTON_VARIANT_VALUES.forEach(variant =>\n ICON_BUTTON_COLOR_VALUES.forEach(color =>\n ICON_BUTTON_SIZE_VALUES.forEach(size => ICON_BUTTON_STYLES.root({ variant, color, size }))\n )\n)\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { SpinnerIcon } from '@resources/Icons'\r\nimport { ICON_BUTTON_STYLES } from '@components/actions/icon-button/IconButton.styles'\r\nimport { Icon } from '@components/foundation/icon'\r\n\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { ButtonSize } from '@components/actions/button/button.types'\r\nimport type { IconButtonProps } from '@components/actions/icon-button/IconButton.props'\r\nimport type { FC } from 'react'\r\n\r\n/** Maps the icon-button size to an Icon size token. */\r\nconst ICON_SIZE: Record<ButtonSize, keyof Theme['fontSize']> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n}\r\n\r\n/**\r\n * Square icon-only button.\r\n * `ariaLabel` is mandatory since there is no visible text.\r\n *\r\n * @example <IconButton icon={CloseIcon} ariaLabel={t('common.close')} />\r\n * @example <IconButton icon={DeleteIcon} ariaLabel={t('actions.delete')} variant='outlined' color='error' />\r\n * @example <IconButton icon={SaveIcon} ariaLabel={t('actions.save')} isLoading />\r\n */\r\nconst IconButton: FC<IconButtonProps> = (\r\n {\r\n ref,\r\n icon: IconComponent,\r\n ariaLabel,\r\n variant = 'contained',\r\n color = 'primary',\r\n size = 'md',\r\n isLoading = false,\r\n className,\r\n type = 'button',\r\n disabled,\r\n ...rest\r\n }\r\n) => {\r\n const isDisabled = disabled || isLoading\r\n const iconSize = ICON_SIZE[size]\r\n\r\n const rootClassName = cx(ICON_BUTTON_STYLES.root({ variant, color, size }), className)\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type={type}\r\n className={rootClassName}\r\n disabled={isDisabled}\r\n aria-label={ariaLabel}\r\n aria-busy={isLoading || undefined}\r\n {...rest}\r\n >\r\n {isLoading && (\r\n <span className={ICON_BUTTON_STYLES.spinnerWrap}>\r\n <Icon\r\n icon={SpinnerIcon}\r\n size={iconSize}\r\n className={ICON_BUTTON_STYLES.spinnerIcon}\r\n />\r\n </span>\r\n )}\r\n\r\n <Icon\r\n icon={IconComponent}\r\n size={iconSize}\r\n className={cx(isLoading && ICON_BUTTON_STYLES.iconHidden)}\r\n />\r\n </button>\r\n )\r\n}\r\n\r\nIconButton.displayName = 'IconButton'\r\n\r\nexport default IconButton\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { LinkStyleParams } from '@components/actions/link/Link.props'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const LINK_STYLES = createStyles((theme) => ({\r\n root: ({ underline = 'hover', color = 'default' }: LinkStyleParams) => {\r\n const mainColor = color === 'secondary' ? theme.colors.textSecondary : theme.colors.linkMain\r\n const hoverColor = color === 'secondary' ? theme.colors.textTertiary : theme.colors.linkHover\r\n const activeColor = color === 'secondary' ? theme.colors.textPrimary : theme.colors.linkActive\r\n const disabledColor = color === 'secondary' ? theme.colors.textDisabled : theme.colors.linkDisabled\r\n\r\n // We always set `text-decoration: underline` and drive visibility via\r\n // `text-decoration-color` so the transition is smooth.\r\n const underlineVisible = underline === 'always' ? mainColor : 'transparent'\r\n const underlineHover = underline !== 'none' ? hoverColor : 'transparent'\r\n\r\n return {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '0.25em',\r\n color: mainColor,\r\n fontFamily: 'inherit',\r\n fontSize: 'inherit',\r\n lineHeight: 'inherit',\r\n fontWeight: 'inherit',\r\n textDecoration: 'underline',\r\n textDecorationColor: underlineVisible,\r\n textUnderlineOffset: '0.2em',\r\n cursor: 'pointer',\r\n borderRadius: theme.radius.xs,\r\n transition: `color ${theme.transition.fast}, text-decoration-color ${theme.transition.fast}`,\r\n ':hover:not([aria-disabled=\"true\"])': {\r\n color: hoverColor,\r\n textDecorationColor: underlineHover,\r\n },\r\n ':active:not([aria-disabled=\"true\"])': {\r\n color: activeColor,\r\n textDecorationColor: underline !== 'none' ? activeColor : 'transparent',\r\n },\r\n ':focus-visible': getFocusRingStyles(theme),\r\n '&[aria-disabled=\"true\"]': {\r\n color: disabledColor,\r\n cursor: 'not-allowed',\r\n textDecorationColor: 'transparent',\r\n },\r\n }\r\n },\r\n icon: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n flexShrink: 0,\r\n width: '1em',\r\n height: '1em',\r\n },\r\n}), { id: 'link' })\r\n","import { cx } from '@aurora-ds/theme'\n\nimport { LINK_STYLES } from '@components/actions/link/Link.styles'\nimport { Text } from '@components/foundation/text'\n\nimport type { LinkProps } from '@components/actions/link/Link.props'\nimport type { FC, MouseEvent, KeyboardEvent } from 'react'\n\n/**\n * Theme-aware anchor element with optional icons and underline control.\n *\n * Supports SPA navigation (e.g. React Router) via `onClick` without `href`.\n * In that case the component stays accessible: it gets `role=\"link\"`,\n * `tabIndex={0}` and keyboard Enter support automatically.\n *\n * @example <Link href='/about' label='About' />\n * @example <Link href='https://example.com' label='External site' external />\n * @example <Link href='/profile' underline='always' startIcon={UserIcon} label='Profile' />\n * @example <Link href='/terms' underline='none' label='Terms' />\n * @example <Link onClick={() => navigate('/about')} label='About (SPA)' />\n */\nconst Link: FC<LinkProps> = (\n {\n ref,\n label,\n fontSize = 'sm',\n underline = 'hover',\n color = 'default',\n external = false,\n disabled = false,\n startIcon: StartIcon,\n endIcon: EndIcon,\n className,\n href,\n onClick,\n onKeyDown,\n ...rest\n }\n) => {\n // An <a> without href has no implicit ARIA role and is not focusable.\n // When used for SPA navigation (onClick only), we restore both behaviours.\n const hasHref = !!href\n\n const handleClick = (e: MouseEvent<HTMLAnchorElement>) => {\n if (disabled) {\n e.preventDefault()\n return\n }\n // When an onClick handler is provided (e.g. React Router's navigate),\n // prevent the browser from following the href and let the handler drive navigation.\n if (onClick) {\n e.preventDefault()\n onClick(e)\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent<HTMLAnchorElement>) => {\n if (disabled && e.key === 'Enter') {\n e.preventDefault()\n }\n // Without href, the browser does not fire a click on Enter natively.\n if (!hasHref && !disabled && e.key === 'Enter') {\n e.currentTarget.click()\n }\n onKeyDown?.(e)\n }\n\n return (\n <a\n ref={ref}\n href={href}\n className={cx(LINK_STYLES.root({ underline, color }), className)}\n aria-disabled={disabled || undefined}\n // Without href: must be explicitly put in the tab order.\n // With href: the browser handles focusability natively (no tabIndex needed).\n tabIndex={disabled ? -1 : (!hasHref ? 0 : undefined)}\n // Without href: <a> has no implicit ARIA role — add role=\"link\" explicitly.\n role={!hasHref ? 'link' : undefined}\n target={external ? '_blank' : undefined}\n rel={external ? 'noopener noreferrer' : undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {StartIcon && (\n <span\n className={LINK_STYLES.icon}\n aria-hidden={true}\n >\n <StartIcon\n width={'1em'}\n height={'1em'}\n />\n </span>\n )}\n\n <Text\n as={'span'}\n fontSize={fontSize}\n >\n {label}\n </Text>\n\n {EndIcon && (\n <span\n className={LINK_STYLES.icon}\n aria-hidden={true}\n >\n <EndIcon\n width={'1em'}\n height={'1em'}\n />\n </span>\n )}\n </a>\n )\n}\n\nLink.displayName = 'Link'\n\nexport default Link\n","import type { ButtonIntentMap } from '@components/actions/_common/buttonIntent.types'\r\nimport type { Theme } from '@theme/theme.types'\r\n\r\n/**\r\n * Builds the full intent map for toggle button colors from theme tokens.\r\n * Extracted to avoid duplication across ToggleButton and ToggleIconButton style files.\r\n */\r\nexport const buildToggleIntents = (c: Theme['colors']): ButtonIntentMap => ({\r\n primary: {\r\n main: c.primaryMain, hover: c.primaryHover, active: c.primaryActive,\r\n on: c.primaryOn, subtle: c.primarySubtle, subtleHover: c.primarySubtleHover, subtleActive: c.primarySubtleActive,\r\n fg: c.primaryMain, fgHover: c.primaryHover, border: c.primaryMain,\r\n },\r\n secondary: {\r\n main: c.secondaryMain, hover: c.secondaryHover, active: c.secondaryActive,\r\n on: c.secondaryOn, subtle: c.secondarySubtle, subtleHover: c.secondarySubtleHover, subtleActive: c.secondarySubtleActive,\r\n fg: c.secondaryOn, fgHover: c.secondaryOn, border: c.borderStrong,\r\n },\r\n neutral: {\r\n main: c.defaultMain, hover: c.defaultHover, active: c.defaultActive,\r\n on: c.textInverse, subtle: c.defaultSubtle, subtleHover: c.defaultSubtleHover, subtleActive: c.defaultSubtleActive,\r\n fg: c.defaultMain, fgHover: c.defaultHover, border: c.defaultMain,\r\n },\r\n info: {\r\n main: c.infoMain, hover: c.infoHover, active: c.infoActive,\r\n on: c.infoOn, subtle: c.infoSubtle, subtleHover: c.infoSubtleHover, subtleActive: c.infoSubtleActive,\r\n fg: c.infoMain, fgHover: c.infoHover, border: c.infoMain,\r\n },\r\n success: {\r\n main: c.successMain, hover: c.successHover, active: c.successActive,\r\n on: c.successOn, subtle: c.successSubtle, subtleHover: c.successSubtleHover, subtleActive: c.successSubtleActive,\r\n fg: c.successMain, fgHover: c.successHover, border: c.successMain,\r\n },\r\n warning: {\r\n main: c.warningMain, hover: c.warningHover, active: c.warningActive,\r\n on: c.warningOn, subtle: c.warningSubtle, subtleHover: c.warningSubtleHover, subtleActive: c.warningSubtleActive,\r\n fg: c.warningMain, fgHover: c.warningHover, border: c.warningMain,\r\n },\r\n error: {\r\n main: c.errorMain, hover: c.errorHover, active: c.errorActive,\r\n on: c.errorOn, subtle: c.errorSubtle, subtleHover: c.errorSubtleHover, subtleActive: c.errorSubtleActive,\r\n fg: c.errorMain, fgHover: c.errorHover, border: c.errorMain,\r\n },\r\n textPrimary: {\r\n main: c.primaryMain, hover: c.primaryHover, active: c.primaryActive,\r\n on: c.primaryOn, subtle: c.primarySubtle, subtleHover: c.primarySubtleHover, subtleActive: c.primarySubtleActive,\r\n fg: c.textPrimary, fgHover: c.textPrimary, border: c.primaryMain,\r\n },\r\n})\r\n","import type { CSSProperties } from 'react'\r\n\r\nimport type { ButtonColor } from '@components/actions/button/button.types'\r\nimport type { ButtonIntentMap } from '@components/actions/_common/buttonIntent.types'\r\nimport type { ToggleButtonVariant } from '@components/actions/toggle/toggle.types'\r\n\r\n/**\r\n * Returns the CSS properties for the `[aria-pressed=\"true\"]` state.\r\n * Both variants fill with `intent.main` for strong visual distinction.\r\n * Border width is intentionally unchanged — only the color shifts.\r\n */\r\nexport const buildTogglePressedStyles = (\r\n intents: ButtonIntentMap,\r\n variant: ToggleButtonVariant,\r\n color: ButtonColor,\r\n): CSSProperties => {\r\n const intent = intents[color]\r\n\r\n return variant === 'outlined'\r\n ? {\r\n backgroundColor: intent.main,\r\n borderColor: intent.main,\r\n color: intent.on,\r\n }\r\n : {\r\n backgroundColor: intent.main,\r\n color: intent.on,\r\n }\r\n}\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { spinAnimation } from '@constants/animation.constants'\r\nimport { buildActionButtonRootStyle } from '@components/actions/_common/buttonVariants.styles'\r\nimport { buildToggleIntents } from '@components/actions/toggle/utils/buildToggleIntents.utils'\r\nimport { buildTogglePressedStyles } from '@components/actions/toggle/utils/buildTogglePressedStyles.utils'\r\nimport type { ToggleButtonVariant } from '@components/actions/toggle/toggle.types'\r\nimport type { ButtonColor, ButtonSize } from '@components/actions/button/button.types'\r\n\r\ntype ToggleButtonRootParams = {\r\n variant: ToggleButtonVariant\r\n color: ButtonColor\r\n size: ButtonSize\r\n}\r\n\r\nexport const TOGGLE_BUTTON_STYLES = createStyles((theme) => ({\r\n root: ({ variant, color, size }: ToggleButtonRootParams) => {\r\n const intents = buildToggleIntents(theme.colors)\r\n const pressedStyles = buildTogglePressedStyles(intents, variant, color)\r\n\r\n return {\r\n ...buildActionButtonRootStyle(theme, variant, color, { inset: true, elevate: true }),\r\n ...(size === 'sm'\r\n ? { height: '2rem', padding: `0 ${theme.spacing.sm}`, fontSize: theme.fontSize.xs }\r\n : size === 'lg'\r\n ? { height: '3rem', padding: `0 ${theme.spacing.lg}`, fontSize: theme.fontSize.md }\r\n : { height: '2.5rem', padding: `0 ${theme.spacing.md}`, fontSize: theme.fontSize.sm }),\r\n '&[aria-pressed=\"true\"]:not(:disabled)': {\r\n ...pressedStyles,\r\n fontWeight: theme.fontWeight.semibold,\r\n },\r\n }\r\n },\r\n content: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: '0.5em',\r\n },\r\n contentHidden: { visibility: 'hidden' },\r\n spinnerWrap: {\r\n position: 'absolute',\r\n inset: 0,\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n spinnerIcon: {\r\n animation: `${spinAnimation} 0.75s linear infinite`,\r\n '@media (prefers-reduced-motion: reduce)': { animation: 'none' },\r\n },\r\n}), { id: 'toggle-button' })\r\n\r\n// Pre-generate all combinations to avoid first-render CSS injection delay.\r\nconst VARIANTS: ToggleButtonVariant[] = ['outlined', 'text']\r\nconst COLORS: ButtonColor[] = ['primary', 'secondary', 'neutral', 'info', 'success', 'warning', 'error']\r\nconst SIZES: ButtonSize[] = ['sm', 'md', 'lg']\r\n\r\nVARIANTS.forEach(variant =>\r\n COLORS.forEach(color =>\r\n SIZES.forEach(size => TOGGLE_BUTTON_STYLES.root({ variant, color, size }))\r\n )\r\n)\r\n","import { createContext } from 'react'\r\n\r\nimport type { ButtonColor, ButtonSize } from '@components/actions/button/button.types'\r\nimport type { ToggleButtonVariant } from '@components/actions/toggle/toggle.types'\r\n\r\nexport type ToggleGroupContextValue = {\r\n /** Currently selected toggle value, or null if nothing is selected. */\r\n value: string | null\r\n /** Selects or deselects a toggle in the group. */\r\n setValue: (value: string | null) => void\r\n /** Variant override propagated to all child toggles. */\r\n variant?: ToggleButtonVariant\r\n /** Color override propagated to all child toggles. */\r\n color?: ButtonColor\r\n /** Size override propagated to all child toggles. */\r\n size?: ButtonSize\r\n}\r\n\r\nexport const ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null)\r\n","import { useCallback, useContext, useState, type MouseEvent } from 'react'\r\n\r\nimport { ToggleGroupContext } from '@components/actions/toggle/toggle-group/ToggleGroup.context'\r\nimport type { ButtonColor, ButtonSize } from '@components/actions/button/button.types'\r\nimport type { ToggleButtonVariant } from '@components/actions/toggle/toggle.types'\r\n\r\nexport type UseToggleStateOptions = {\r\n /** Controlled active state. Defined → controlled mode. */\r\n active?: boolean\r\n /** Initial state for uncontrolled mode. @default false */\r\n defaultActive?: boolean\r\n /** Called when the active state changes. */\r\n onActiveChange?: (active: boolean) => void\r\n /** Identifier used by ToggleGroup for mutual exclusivity. */\r\n value?: string\r\n disabled?: boolean\r\n isLoading?: boolean\r\n variantProp: ToggleButtonVariant\r\n colorProp: ButtonColor\r\n sizeProp: ButtonSize\r\n onClick?: (e: MouseEvent<HTMLButtonElement>) => void\r\n}\r\n\r\nexport type UseToggleStateResult = {\r\n isActive: boolean\r\n isDisabled: boolean\r\n variant: ToggleButtonVariant\r\n color: ButtonColor\r\n size: ButtonSize\r\n handleClick: (e: MouseEvent<HTMLButtonElement>) => void\r\n}\r\n\r\n/**\r\n * Encapsulates all toggle state logic:\r\n * - Reads variant/color/size overrides from a parent ToggleGroup (if any)\r\n * - Resolves controlled vs uncontrolled active state\r\n * - Produces the handleClick that delegates to the group or toggles locally\r\n */\r\nexport const useToggleState = ({\r\n active: activeProp,\r\n defaultActive = false,\r\n onActiveChange,\r\n value,\r\n disabled = false,\r\n isLoading = false,\r\n variantProp,\r\n colorProp,\r\n sizeProp,\r\n onClick,\r\n}: UseToggleStateOptions): UseToggleStateResult => {\r\n const groupCtx = useContext(ToggleGroupContext)\r\n\r\n // Group context overrides individual props when present\r\n const variant = groupCtx?.variant ?? variantProp\r\n const color = groupCtx?.color ?? colorProp\r\n const size = groupCtx?.size ?? sizeProp\r\n\r\n const isControlled = activeProp !== undefined\r\n const [internalActive, setInternalActive] = useState(defaultActive)\r\n\r\n const isActive = groupCtx !== null\r\n ? (value !== undefined ? groupCtx.value === value : false)\r\n : isControlled\r\n ? activeProp!\r\n : internalActive\r\n\r\n const handleClick = useCallback(\r\n (e: MouseEvent<HTMLButtonElement>) => {\r\n if (groupCtx !== null) {\r\n if (value !== undefined) {\r\n groupCtx.setValue(value)\r\n }\r\n } else {\r\n const next = !isActive\r\n if (!isControlled) {\r\n setInternalActive(next)\r\n }\r\n onActiveChange?.(next)\r\n }\r\n onClick?.(e)\r\n },\r\n [groupCtx, isActive, isControlled, onActiveChange, onClick, value],\r\n )\r\n\r\n return {\r\n isActive,\r\n isDisabled: disabled || isLoading,\r\n variant,\r\n color,\r\n size,\r\n handleClick,\r\n }\r\n}\r\n","import { type FC } from 'react'\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { SpinnerIcon } from '@resources/Icons'\r\nimport { TOGGLE_BUTTON_STYLES } from '@components/actions/toggle/toggle-button/ToggleButton.styles'\r\nimport { useToggleState } from '@components/actions/toggle/hooks/useToggleState'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { ButtonSize } from '@components/actions/button/button.types'\r\nimport type { ToggleButtonProps } from '@components/actions/toggle/toggle-button/ToggleButton.props'\r\n\r\nconst LABEL_FONT_SIZE: Record<ButtonSize, keyof Theme['fontSize']> = {\r\n sm: 'xs',\r\n md: 'sm',\r\n lg: 'md',\r\n}\r\n\r\nconst ICON_SIZE: Record<ButtonSize, keyof Theme['fontSize']> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n}\r\n\r\n/**\r\n * A toggle button that can be pressed/unpressed (`aria-pressed`).\r\n * Supports both **controlled** (`active` + `onActiveChange`) and **uncontrolled**\r\n * (`defaultActive`) modes.\r\n *\r\n * When placed inside a `ToggleGroup`, the group manages mutual exclusivity:\r\n * the `value` prop identifies this button within the group.\r\n *\r\n * @example\r\n * // Standalone, uncontrolled\r\n * <ToggleButton label=\"Bold\" defaultActive={false} onActiveChange={setBold} />\r\n *\r\n * @example\r\n * // Standalone, controlled\r\n * <ToggleButton label=\"Bold\" active={isBold} onActiveChange={setIsBold} />\r\n *\r\n * @example\r\n * // Inside a ToggleGroup\r\n * <ToggleGroup defaultValue=\"md\" ariaLabel=\"Text size\">\r\n * <ToggleButton value=\"sm\" label=\"Small\" />\r\n * <ToggleButton value=\"md\" label=\"Medium\" />\r\n * </ToggleGroup>\r\n */\r\nconst ToggleButton: FC<ToggleButtonProps> = ({\r\n ref,\r\n label,\r\n variant: variantProp = 'outlined',\r\n color: colorProp = 'primary',\r\n size: sizeProp = 'md',\r\n width,\r\n flexGrow,\r\n flexShrink,\r\n active: activeProp,\r\n defaultActive = false,\r\n onActiveChange,\r\n value,\r\n startIcon: StartIcon,\r\n endIcon: EndIcon,\r\n isLoading = false,\r\n className,\r\n type = 'button',\r\n disabled = false,\r\n style,\r\n onClick,\r\n ...rest\r\n} = {}) => {\r\n const { isActive, isDisabled, variant, color, size, handleClick } = useToggleState({\r\n active: activeProp,\r\n defaultActive,\r\n onActiveChange,\r\n value,\r\n disabled,\r\n isLoading,\r\n variantProp,\r\n colorProp,\r\n sizeProp,\r\n onClick,\r\n })\r\n\r\n const iconSize = ICON_SIZE[size]\r\n const rootClassName = cx(TOGGLE_BUTTON_STYLES.root({ variant, color, size }), className)\r\n const mergedStyle = {\r\n ...style,\r\n ...(width !== undefined ? { width } : {}),\r\n ...(flexGrow !== undefined ? { flexGrow } : {}),\r\n ...(flexShrink !== undefined ? { flexShrink } : {}),\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type={type}\r\n className={rootClassName}\r\n disabled={isDisabled}\r\n aria-pressed={isActive}\r\n aria-busy={isLoading || undefined}\r\n style={mergedStyle}\r\n onClick={handleClick}\r\n {...rest}\r\n >\r\n {isLoading && (\r\n <span className={TOGGLE_BUTTON_STYLES.spinnerWrap}>\r\n <Icon\r\n icon={SpinnerIcon}\r\n size={iconSize}\r\n className={TOGGLE_BUTTON_STYLES.spinnerIcon}\r\n />\r\n </span>\r\n )}\r\n\r\n <span className={cx(TOGGLE_BUTTON_STYLES.content, isLoading && TOGGLE_BUTTON_STYLES.contentHidden)}>\r\n {StartIcon && (\r\n <Icon\r\n icon={StartIcon}\r\n size={iconSize}\r\n />\r\n )}\r\n\r\n {label !== undefined && (\r\n <Text\r\n variant={'span'}\r\n fontSize={LABEL_FONT_SIZE[size]}\r\n fontWeight={'medium'}\r\n lineHeight={'none'}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n\r\n {EndIcon && (\r\n <Icon\r\n icon={EndIcon}\r\n size={iconSize}\r\n />\r\n )}\r\n </span>\r\n </button>\r\n )\r\n}\r\n\r\nToggleButton.displayName = 'ToggleButton'\r\n\r\nexport default ToggleButton\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { spinAnimation } from '@constants/animation.constants'\r\nimport { buildActionButtonRootStyle } from '@components/actions/_common/buttonVariants.styles'\r\nimport { buildToggleIntents } from '@components/actions/toggle/utils/buildToggleIntents.utils'\r\nimport { buildTogglePressedStyles } from '@components/actions/toggle/utils/buildTogglePressedStyles.utils'\r\nimport type { ToggleButtonVariant } from '@components/actions/toggle/toggle.types'\r\nimport type { ButtonColor, ButtonSize } from '@components/actions/button/button.types'\r\n\r\ntype ToggleIconButtonRootParams = {\r\n variant: ToggleButtonVariant\r\n color: ButtonColor\r\n size: ButtonSize\r\n}\r\n\r\nexport const TOGGLE_ICON_BUTTON_STYLES = createStyles((theme) => ({\r\n root: ({ variant, color, size }: ToggleIconButtonRootParams) => {\r\n const intents = buildToggleIntents(theme.colors)\r\n const pressedStyles = buildTogglePressedStyles(intents, variant, color)\r\n\r\n return {\r\n ...buildActionButtonRootStyle(theme, variant, color, { inset: true, elevate: true }),\r\n ...(size === 'sm'\r\n ? { width: '2rem', height: '2rem', padding: '0' }\r\n : size === 'lg'\r\n ? { width: '3rem', height: '3rem', padding: '0' }\r\n : { width: '2.5rem', height: '2.5rem', padding: '0' }),\r\n '&[aria-pressed=\"true\"]:not(:disabled)': pressedStyles,\r\n }\r\n },\r\n spinnerIcon: {\r\n animation: `${spinAnimation} 0.75s linear infinite`,\r\n '@media (prefers-reduced-motion: reduce)': { animation: 'none' },\r\n },\r\n iconHidden: { visibility: 'hidden' },\r\n spinnerWrap: {\r\n position: 'absolute',\r\n inset: 0,\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n}), { id: 'toggle-icon-button' })\r\n\r\n// Pre-generate all combinations to avoid first-render CSS injection delay.\r\nconst VARIANTS: ToggleButtonVariant[] = ['outlined', 'text']\r\nconst COLORS: ButtonColor[] = ['primary', 'secondary', 'neutral', 'info', 'success', 'warning', 'error']\r\nconst SIZES: ButtonSize[] = ['sm', 'md', 'lg']\r\n\r\nVARIANTS.forEach(variant =>\r\n COLORS.forEach(color =>\r\n SIZES.forEach(size => TOGGLE_ICON_BUTTON_STYLES.root({ variant, color, size }))\r\n )\r\n)\r\n","import { type FC } from 'react'\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { SpinnerIcon } from '@resources/Icons'\r\nimport { TOGGLE_ICON_BUTTON_STYLES } from '@components/actions/toggle/toggle-icon-button/ToggleIconButton.styles'\r\nimport { useToggleState } from '@components/actions/toggle/hooks/useToggleState'\r\nimport { Icon } from '@components/foundation/icon'\r\n\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { ButtonSize } from '@components/actions/button/button.types'\r\nimport type { ToggleIconButtonProps } from '@components/actions/toggle/toggle-icon-button/ToggleIconButton.props'\r\n\r\nconst ICON_SIZE: Record<ButtonSize, keyof Theme['fontSize']> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n}\r\n\r\n/**\r\n * A square icon-only toggle button that can be pressed/unpressed (`aria-pressed`).\r\n * `ariaLabel` is mandatory since there is no visible text.\r\n *\r\n * Supports both **controlled** (`active` + `onActiveChange`) and **uncontrolled**\r\n * (`defaultActive`) modes.\r\n *\r\n * When placed inside a `ToggleGroup`, the group manages mutual exclusivity:\r\n * the `value` prop identifies this button within the group.\r\n *\r\n * @example\r\n * // Standalone, controlled\r\n * <ToggleIconButton icon={BoldIcon} ariaLabel=\"Toggle bold\" active={isBold} onActiveChange={setIsBold} />\r\n *\r\n * @example\r\n * // Inside a ToggleGroup (alignment segmented control)\r\n * <ToggleGroup value={align} onChange={setAlign} ariaLabel=\"Text alignment\" joined>\r\n * <ToggleIconButton value=\"left\" icon={AlignLeftIcon} ariaLabel=\"Align left\" />\r\n * <ToggleIconButton value=\"center\" icon={AlignCenterIcon} ariaLabel=\"Align center\" />\r\n * <ToggleIconButton value=\"right\" icon={AlignRightIcon} ariaLabel=\"Align right\" />\r\n * </ToggleGroup>\r\n */\r\nconst ToggleIconButton: FC<ToggleIconButtonProps> = ({\r\n ref,\r\n icon: IconComponent,\r\n ariaLabel,\r\n variant: variantProp = 'outlined',\r\n color: colorProp = 'primary',\r\n size: sizeProp = 'md',\r\n isLoading = false,\r\n className,\r\n type = 'button',\r\n disabled = false,\r\n active: activeProp,\r\n defaultActive = false,\r\n onActiveChange,\r\n value,\r\n onClick,\r\n ...rest\r\n}) => {\r\n const { isActive, isDisabled, variant, color, size, handleClick } = useToggleState({\r\n active: activeProp,\r\n defaultActive,\r\n onActiveChange,\r\n value,\r\n disabled,\r\n isLoading,\r\n variantProp,\r\n colorProp,\r\n sizeProp,\r\n onClick,\r\n })\r\n\r\n const iconSize = ICON_SIZE[size]\r\n const rootClassName = cx(TOGGLE_ICON_BUTTON_STYLES.root({ variant, color, size }), className)\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type={type}\r\n className={rootClassName}\r\n disabled={isDisabled}\r\n aria-label={ariaLabel}\r\n aria-pressed={isActive}\r\n aria-busy={isLoading || undefined}\r\n onClick={handleClick}\r\n {...rest}\r\n >\r\n {isLoading && (\r\n <span className={TOGGLE_ICON_BUTTON_STYLES.spinnerWrap}>\r\n <Icon\r\n icon={SpinnerIcon}\r\n size={iconSize}\r\n className={TOGGLE_ICON_BUTTON_STYLES.spinnerIcon}\r\n />\r\n </span>\r\n )}\r\n\r\n <Icon\r\n icon={IconComponent}\r\n size={iconSize}\r\n className={cx(isLoading && TOGGLE_ICON_BUTTON_STYLES.iconHidden)}\r\n />\r\n </button>\r\n )\r\n}\r\n\r\nToggleIconButton.displayName = 'ToggleIconButton'\r\n\r\nexport default ToggleIconButton\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const TOGGLE_GROUP_STYLES = createStyles((theme) => ({\r\n root: ({\r\n orientation,\r\n joined,\r\n }: {\r\n orientation: 'horizontal' | 'vertical'\r\n joined: boolean\r\n }) => ({\r\n display: 'inline-flex',\r\n flexDirection: orientation === 'vertical' ? 'column' : 'row',\r\n alignItems: orientation === 'vertical' ? 'stretch' : 'center',\r\n gap: joined ? '0' : theme.spacing.xs,\r\n ...(joined && {\r\n '& > button:not(:first-child):not(:last-child)': {\r\n borderRadius: '0',\r\n },\r\n '& > button:first-child:not(:last-child)': {\r\n borderRadius:\r\n orientation === 'vertical'\r\n ? `${theme.radius.md} ${theme.radius.md} 0 0`\r\n : `${theme.radius.md} 0 0 ${theme.radius.md}`,\r\n },\r\n '& > button:last-child:not(:first-child)': {\r\n borderRadius:\r\n orientation === 'vertical'\r\n ? `0 0 ${theme.radius.md} ${theme.radius.md}`\r\n : `0 ${theme.radius.md} ${theme.radius.md} 0`,\r\n },\r\n '& > button:not(:first-child)': {\r\n marginLeft: orientation === 'vertical' ? '0' : '-1px',\r\n marginTop: orientation === 'vertical' ? '-1px' : '0',\r\n },\r\n }),\r\n }),\r\n}), { id: 'toggle-group' })\r\n","import { useCallback, useMemo, useState } from 'react'\r\n\r\nimport { type ToggleGroupContextValue } from '@components/actions/toggle/toggle-group/ToggleGroup.context'\r\nimport type { ToggleGroupProps } from '@components/actions/toggle/toggle-group/ToggleGroup.props'\r\n\r\ntype UseToggleGroupParams = Pick<\r\n ToggleGroupProps,\r\n 'value' | 'defaultValue' | 'onChange' | 'allowDeselect' | 'variant' | 'color' | 'size'\r\n>\r\n\r\ntype UseToggleGroupReturn = {\r\n contextValue: ToggleGroupContextValue\r\n}\r\n\r\n/**\r\n * Encapsulates the controlled/uncontrolled state logic and context value\r\n * construction for `ToggleGroup`.\r\n */\r\nconst useToggleGroup = ({\r\n value: controlledValue,\r\n defaultValue = null,\r\n onChange,\r\n allowDeselect = true,\r\n variant,\r\n color,\r\n size,\r\n}: UseToggleGroupParams): UseToggleGroupReturn => {\r\n const isControlled = controlledValue !== undefined\r\n const [internalValue, setInternalValue] = useState<string | null>(defaultValue)\r\n\r\n const value = isControlled ? controlledValue! : internalValue\r\n\r\n const setValue = useCallback(\r\n (next: string | null) => {\r\n if (!isControlled) {\r\n setInternalValue(next)\r\n }\r\n onChange?.(next)\r\n },\r\n [isControlled, onChange],\r\n )\r\n\r\n const handleToggle = useCallback(\r\n (toggleValue: string) => {\r\n if (value === toggleValue) {\r\n if (allowDeselect) {\r\n setValue(null)\r\n }\r\n } else {\r\n setValue(toggleValue)\r\n }\r\n },\r\n [value, allowDeselect, setValue],\r\n )\r\n\r\n const contextValue = useMemo<ToggleGroupContextValue>(\r\n () => ({ value, setValue: handleToggle, variant, color, size } as ToggleGroupContextValue),\r\n [value, handleToggle, variant, color, size],\r\n )\r\n\r\n return { contextValue }\r\n}\r\n\r\nexport default useToggleGroup\r\n","import { type FC } from 'react'\r\n\r\nimport { TOGGLE_GROUP_STYLES } from '@components/actions/toggle/toggle-group/ToggleGroup.styles'\r\nimport { ToggleGroupContext } from '@components/actions/toggle/toggle-group/ToggleGroup.context'\r\nimport type { ToggleGroupProps } from '@components/actions/toggle/toggle-group/ToggleGroup.props'\r\nimport useToggleGroup from '@components/actions/toggle/toggle-group/hooks/useToggleGroup'\r\n\r\n/**\r\n * Groups multiple `ToggleButton` or `ToggleIconButton` components so that only\r\n * one can be active at a time (mutual exclusivity).\r\n *\r\n * Supports both **controlled** (`value` + `onChange`) and **uncontrolled**\r\n * (`defaultValue`) modes. Set `allowDeselect={false}` to always keep one\r\n * option selected.\r\n *\r\n * @example\r\n * // Uncontrolled\r\n * <ToggleGroup defaultValue=\"md\" ariaLabel=\"Text size\">\r\n * <ToggleButton value=\"sm\" label=\"Small\" />\r\n * <ToggleButton value=\"md\" label=\"Medium\" />\r\n * <ToggleButton value=\"lg\" label=\"Large\" />\r\n * </ToggleGroup>\r\n *\r\n * @example\r\n * // Controlled\r\n * const [align, setAlign] = useState<string | null>('left')\r\n * <ToggleGroup value={align} onChange={setAlign} ariaLabel=\"Text alignment\" joined>\r\n * <ToggleIconButton value=\"left\" icon={AlignLeftIcon} ariaLabel=\"Align left\" />\r\n * <ToggleIconButton value=\"center\" icon={AlignCenterIcon} ariaLabel=\"Align center\" />\r\n * <ToggleIconButton value=\"right\" icon={AlignRightIcon} ariaLabel=\"Align right\" />\r\n * </ToggleGroup>\r\n */\r\nconst ToggleGroup: FC<ToggleGroupProps> = ({\r\n children,\r\n value,\r\n defaultValue,\r\n onChange,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n orientation = 'horizontal',\r\n joined = false,\r\n allowDeselect = true,\r\n variant,\r\n color,\r\n size,\r\n}) => {\r\n const { contextValue } = useToggleGroup({ value, defaultValue, onChange, allowDeselect, variant, color, size })\r\n\r\n return (\r\n <ToggleGroupContext.Provider value={contextValue}>\r\n <div\r\n role={'toolbar'}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-orientation={orientation}\r\n className={TOGGLE_GROUP_STYLES.root({ orientation, joined })}\r\n >\r\n {children}\r\n </div>\r\n </ToggleGroupContext.Provider>\r\n )\r\n}\r\n\r\nToggleGroup.displayName = 'ToggleGroup'\r\n\r\nexport default ToggleGroup\r\n","import { createStyles } from '@aurora-ds/theme'\r\nimport type { Palette } from '@theme/theme.types'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nimport type { AvatarStyleParams } from '@components/data-display/avatar/Avatar.props'\r\nimport type { AvatarColor, AvatarSize } from '@components/data-display/avatar/avatar.types'\r\n\r\n/** Pixel dimensions per size token. */\r\nconst AVATAR_SIZE_PX: Record<AvatarSize, string> = {\r\n xs: '1.5rem', // 24px\r\n sm: '2rem', // 32px\r\n md: '2.5rem', // 40px\r\n lg: '3rem', // 48px\r\n xl: '3.5rem', // 56px\r\n '2xl': '4rem', // 64px\r\n}\r\n\r\n/** Initials font size per size token. */\r\nconst AVATAR_FONT_SIZE: Record<AvatarSize, string> = {\r\n xs: '0.5rem',\r\n sm: '0.625rem',\r\n md: '0.75rem',\r\n lg: '0.875rem',\r\n xl: '1rem',\r\n '2xl': '1.125rem',\r\n}\r\n\r\n/** Maps color token to theme palette keys. */\r\nconst AVATAR_COLOR_MAP: Record<AvatarColor, { bg: keyof Palette; text: keyof Palette }> = {\r\n primary: { bg: 'primaryMain', text: 'primaryOn' },\r\n secondary: { bg: 'defaultMain', text: 'textInverse' },\r\n default: { bg: 'defaultMain', text: 'textInverse' },\r\n success: { bg: 'successMain', text: 'successOn' },\r\n warning: { bg: 'warningMain', text: 'warningOn' },\r\n error: { bg: 'errorMain', text: 'errorOn' },\r\n info: { bg: 'infoMain', text: 'infoOn' },\r\n orange: { bg: 'orangeMain', text: 'orangeOn' },\r\n pink: { bg: 'pinkMain', text: 'pinkOn' },\r\n violet: { bg: 'violetMain', text: 'violetOn' },\r\n}\r\n\r\nexport const AVATAR_STYLES = createStyles((theme) => ({\r\n root: ({ size = 'md', shape = 'circle', color = 'primary', isInteractive = false }: AvatarStyleParams) => {\r\n const dim = AVATAR_SIZE_PX[size]\r\n const colorMap = AVATAR_COLOR_MAP[color]\r\n\r\n return {\r\n position: 'relative',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n overflow: 'hidden',\r\n flexShrink: 0,\r\n boxSizing: 'border-box' as const,\r\n border: `2px solid ${theme.colors.surfacePaper}`,\r\n width: dim,\r\n height: dim,\r\n minWidth: dim,\r\n minHeight: dim,\r\n borderRadius: shape === 'square' ? theme.radius.lg : theme.radius.full,\r\n backgroundColor: theme.colors[colorMap.bg],\r\n color: theme.colors[colorMap.text],\r\n fontSize: AVATAR_FONT_SIZE[size],\r\n fontWeight: theme.fontWeight.semibold,\r\n fontFamily: 'inherit',\r\n userSelect: 'none' as const,\r\n lineHeight: 1,\r\n ...(isInteractive\r\n ? {\r\n cursor: 'pointer',\r\n transition: `opacity ${theme.transition.fast}, outline ${theme.transition.fast}`,\r\n '&:hover': { opacity: 0.85 },\r\n '&:focus-visible': getFocusRingStyles(theme),\r\n }\r\n : {}),\r\n }\r\n },\r\n image: () => ({\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'cover' as const,\r\n display: 'block',\r\n }),\r\n}))\r\n","/**\r\n * Extracts 1–2 initials from a full name.\r\n *\r\n * - Single word → first letter capitalised\r\n * - Multiple words → first letter of first word + first letter of last word\r\n *\r\n * @example getAvatarInitials('Alice') // → 'A'\r\n * @example getAvatarInitials('Alice Dupont') // → 'AD'\r\n * @example getAvatarInitials('Jean-Paul Martin')// → 'JM'\r\n */\r\nexport const getAvatarInitials = (name: string): string => {\r\n const parts = name.trim().split(/\\s+/).filter(Boolean)\r\n if (parts.length === 0) {return ''}\r\n if (parts.length === 1) {return parts[0].charAt(0).toUpperCase()}\r\n return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase()\r\n}\r\n","import { type FC, type KeyboardEvent, useState } from 'react'\r\n\r\n\r\nimport { AVATAR_STYLES } from '@components/data-display/avatar/Avatar.styles'\r\nimport { getAvatarInitials } from '@components/data-display/avatar/utils/getAvatarInitials.utils'\r\n\r\nimport type { AvatarProps } from '@components/data-display/avatar/Avatar.props'\r\n\r\n/**\r\n * Displays a user's profile picture, falling back gracefully to initials\r\n * and then to a blank coloured circle when no image is available.\r\n *\r\n * **Display priority:**\r\n * 1. `src` image (hides on load error)\r\n * 2. `initials` (explicit) or letters derived from `name`\r\n * 3. Empty coloured circle\r\n *\r\n * **Accessibility:**\r\n * - Static avatar → `role=\"img\"` + `aria-label`\r\n * - Interactive avatar (has `onClick`) → `role=\"button\"` + keyboard support\r\n *\r\n * @example\r\n * ```tsx\r\n * // Image avatar:\r\n * <Avatar src=\"/users/alice.jpg\" name=\"Alice Dupont\" size=\"md\" />\r\n *\r\n * // Initials fallback:\r\n * <Avatar name=\"Bob Martin\" color=\"info\" size=\"lg\" />\r\n *\r\n * // Interactive:\r\n * <Avatar src=\"/me.jpg\" name=\"Me\" onClick={() => openProfile()} ariaLabel=\"Open profile\" />\r\n * ```\r\n */\r\nconst Avatar: FC<AvatarProps> = ({\r\n src,\r\n name,\r\n initials,\r\n size = 'md',\r\n shape = 'circle',\r\n color = 'primary',\r\n onClick,\r\n ariaLabel,\r\n ref,\r\n id,\r\n 'aria-haspopup': ariaHasPopup,\r\n 'aria-expanded': ariaExpanded,\r\n 'aria-controls': ariaControls,\r\n}) => {\r\n const [imageError, setImageError] = useState(false)\r\n const isInteractive = Boolean(onClick)\r\n\r\n const resolvedInitials = initials ?? (name ? getAvatarInitials(name) : undefined)\r\n const resolvedAriaLabel = ariaLabel ?? name ?? 'Avatar'\r\n const showImage = Boolean(src) && !imageError\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault()\r\n onClick?.()\r\n }\r\n }\r\n\r\n const avatarContent = showImage ? (\r\n // aria-hidden: the parent div owns the accessible name via aria-label;\r\n // the img is purely decorative from the a11y tree's perspective.\r\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\r\n <img\r\n src={src}\r\n alt={''}\r\n aria-hidden={true}\r\n className={AVATAR_STYLES.image()}\r\n onError={() => setImageError(true)}\r\n />\r\n ) : (\r\n // aria-hidden: initials are visual sugar – the parent already carries\r\n // the accessible name, so we hide this text node from the a11y tree.\r\n resolvedInitials\r\n ? <span aria-hidden={true}>{resolvedInitials}</span>\r\n : null\r\n )\r\n\r\n if (isInteractive) {\r\n return (\r\n <div\r\n ref={ref}\r\n id={id}\r\n role={'button'}\r\n tabIndex={0}\r\n aria-label={resolvedAriaLabel}\r\n aria-haspopup={ariaHasPopup}\r\n aria-expanded={ariaExpanded}\r\n aria-controls={ariaControls}\r\n title={resolvedAriaLabel}\r\n className={AVATAR_STYLES.root({ size, shape, color, isInteractive: true })}\r\n onClick={onClick}\r\n onKeyDown={handleKeyDown}\r\n >\r\n {avatarContent}\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n id={id}\r\n role={'img'}\r\n aria-label={resolvedAriaLabel}\r\n title={resolvedAriaLabel}\r\n className={AVATAR_STYLES.root({ size, shape, color, isInteractive: false })}\r\n >\r\n {avatarContent}\r\n </div>\r\n )\r\n}\r\n\r\nAvatar.displayName = 'Avatar'\r\n\r\nexport default Avatar\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { AvatarGroupStyleParams } from '@components/data-display/avatar/AvatarGroup.props'\r\nimport type { AvatarGroupOverlap } from '@components/data-display/avatar/avatar.types'\r\n\r\n/**\r\n * Negative margin-left per overlap level.\r\n * sm = tight (more overlap), lg = loose (less overlap) — intuitive naming.\r\n */\r\nconst OVERLAP_MAP: Record<AvatarGroupOverlap, string> = {\r\n sm: '-1.5rem', // 24px – tight (most overlap)\r\n md: '-1rem', // 16px – moderate (default)\r\n lg: '-0.625rem', // 10px – loose (least overlap)\r\n}\r\n\r\nexport const AVATAR_GROUP_STYLES = createStyles((theme) => ({\r\n root: {\r\n display: 'inline-flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n },\r\n\r\n /** Item slot for a non-interactive avatar — no hover effect. */\r\n item: ({ overlap = 'md' }: AvatarGroupStyleParams) => ({\r\n marginLeft: OVERLAP_MAP[overlap],\r\n '&:first-child': {\r\n marginLeft: 0,\r\n },\r\n }),\r\n\r\n /**\r\n * Item slot for an interactive avatar — lifts and scales on hover\r\n * to give a visual affordance that the avatar is clickable.\r\n */\r\n itemInteractive: ({ overlap = 'md' }: AvatarGroupStyleParams) => ({\r\n marginLeft: OVERLAP_MAP[overlap],\r\n transition: `transform ${theme.transition.fast}`,\r\n '&:first-child': {\r\n marginLeft: 0,\r\n },\r\n '&:hover': {\r\n zIndex: 1,\r\n transform: 'scale(1.08)',\r\n },\r\n }),\r\n}))\r\n","import { Children, cloneElement, isValidElement, type FC, type ReactElement } from 'react'\r\n\r\nimport { AVATAR_GROUP_STYLES } from '@components/data-display/avatar/AvatarGroup.styles'\r\nimport type { AvatarGroupProps } from '@components/data-display/avatar/AvatarGroup.props'\r\nimport type { AvatarProps } from '@components/data-display/avatar/Avatar.props'\r\nimport Avatar from '@components/data-display/avatar/Avatar'\r\n\r\n/**\r\n * Renders a horizontally overlapping stack of `Avatar` components.\r\n *\r\n * When the number of children exceeds `max`, the remaining count is shown\r\n * as a **surplus avatar** (`+N`) at the end of the row.\r\n *\r\n * **Accessibility:**\r\n * - Root element uses `role=\"list\"` so screen readers announce the item count.\r\n * - Each slot uses `role=\"listitem\"`.\r\n * - The `aria-label` on the root is auto-built from children `name` props\r\n * (e.g. *\"Alice Dupont, Bob Martin et 3 autres\"*) unless overridden.\r\n *\r\n * @example\r\n * ```tsx\r\n * <AvatarGroup max={4} size=\"md\" overlap=\"md\">\r\n * <Avatar name=\"Alice Dupont\" color=\"primary\" />\r\n * <Avatar name=\"Bob Martin\" color=\"info\" />\r\n * <Avatar src=\"/carol.jpg\" name=\"Carol\" />\r\n * <Avatar name=\"Dan Lee\" color=\"success\" />\r\n * <Avatar name=\"Eve Chen\" color=\"warning\" />\r\n * </AvatarGroup>\r\n * // → shows 4 avatars + \"+1\"\r\n * ```\r\n */\r\nconst AvatarGroup: FC<AvatarGroupProps> = ({\r\n children,\r\n max,\r\n size,\r\n shape,\r\n overlap = 'md',\r\n surplusColor = 'default',\r\n ariaLabel,\r\n}) => {\r\n const all = Children.toArray(children)\r\n const surplus = max !== undefined ? Math.max(0, all.length - max) : 0\r\n const visible = max !== undefined ? all.slice(0, max) : all\r\n\r\n // Build a meaningful accessible label from children `name` props\r\n const resolvedAriaLabel = ariaLabel ?? (() => {\r\n const names = all\r\n .filter((c) => isValidElement<AvatarProps>(c))\r\n .map((c) => (c as ReactElement<AvatarProps>).props.name)\r\n .filter(Boolean) as string[]\r\n\r\n if (names.length === 0) {return surplus > 0 ? `Avatars, ${all.length} au total` : 'Avatars'}\r\n\r\n const visibleNames = max !== undefined ? names.slice(0, max) : names\r\n const surplusCount = max !== undefined ? Math.max(0, names.length - max) : 0\r\n\r\n if (surplusCount > 0) {\r\n return `${visibleNames.join(', ')} et ${surplusCount} autre${surplusCount > 1 ? 's' : ''}`\r\n }\r\n return visibleNames.join(', ')\r\n })()\r\n\r\n const surplusAriaLabel = `et ${surplus} autre${surplus > 1 ? 's' : ''}`\r\n\r\n // Pre-compute both item class variants\r\n const itemClass = AVATAR_GROUP_STYLES.item({ overlap })\r\n const itemInteractiveClass = AVATAR_GROUP_STYLES.itemInteractive({ overlap })\r\n\r\n return (\r\n <div\r\n role={'list'}\r\n aria-label={resolvedAriaLabel}\r\n className={AVATAR_GROUP_STYLES.root}\r\n >\r\n {visible.map((child, index) => {\r\n const isChildInteractive =\r\n isValidElement<AvatarProps>(child) && Boolean(child.props.onClick)\r\n\r\n const cloned =\r\n isValidElement<AvatarProps>(child)\r\n ? cloneElement(child as ReactElement<AvatarProps>, {\r\n size: size ?? child.props.size,\r\n shape: shape ?? child.props.shape,\r\n })\r\n : child\r\n\r\n return (\r\n <div\r\n key={index}\r\n role={'listitem'}\r\n className={isChildInteractive ? itemInteractiveClass : itemClass}\r\n >\r\n {cloned}\r\n </div>\r\n )\r\n })}\r\n\r\n {surplus > 0 && (\r\n <div\r\n role={'listitem'}\r\n className={itemClass}\r\n >\r\n <Avatar\r\n initials={`+${surplus}`}\r\n size={size}\r\n shape={shape}\r\n color={surplusColor}\r\n ariaLabel={surplusAriaLabel}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nAvatarGroup.displayName = 'AvatarGroup'\r\n\r\nexport default AvatarGroup\r\n","import type { BadgeColor, BadgeVariant } from '@components/data-display/badge/badge.types'\r\n\r\nconst BADGE_VARIANTS_LIST: BadgeVariant[] = ['filled', 'outlined', 'subtle', 'subtleOutlined']\r\n\r\ntype BadgeIntent = {\r\n bg: string\r\n on: string\r\n fg: string\r\n fgStrong: string\r\n subtle: string\r\n border: string\r\n}\r\n\r\n/**\r\n * Builds compound variants combining `variant` × `color` for the Badge.\r\n * Returns one entry per (color, variant) pair with static color styles.\r\n */\r\nexport const buildBadgeCompoundVariants = (theme: { colors: Record<string, string> }) => {\r\n const c = theme.colors\r\n\r\n const intents: Record<BadgeColor, BadgeIntent> = {\r\n default: {\r\n bg: c.defaultMain,\r\n on: c.textInverse,\r\n fg: c.defaultMain,\r\n fgStrong: c.defaultHover,\r\n subtle: c.defaultSubtle,\r\n border: c.defaultMain,\r\n },\r\n primary: {\r\n bg: c.primaryMain,\r\n on: c.primaryOn,\r\n fg: c.primaryMain,\r\n fgStrong: c.primaryHover,\r\n subtle: c.primarySubtle,\r\n border: c.primaryMain,\r\n },\r\n secondary: {\r\n bg: c.secondaryMain,\r\n on: c.secondaryOn,\r\n fg: c.secondaryOn,\r\n fgStrong: c.secondaryOn,\r\n subtle: c.secondarySubtle,\r\n border: c.borderStrong,\r\n },\r\n success: {\r\n bg: c.successMain,\r\n on: c.successOn,\r\n fg: c.successMain,\r\n fgStrong: c.successHover,\r\n subtle: c.successSubtle,\r\n border: c.successMain,\r\n },\r\n warning: {\r\n bg: c.warningMain,\r\n on: c.warningOn,\r\n fg: c.warningMain,\r\n fgStrong: c.warningHover,\r\n subtle: c.warningSubtle,\r\n border: c.warningMain,\r\n },\r\n error: {\r\n bg: c.errorMain,\r\n on: c.errorOn,\r\n fg: c.errorMain,\r\n fgStrong: c.errorHover,\r\n subtle: c.errorSubtle,\r\n border: c.errorMain,\r\n },\r\n info: {\r\n bg: c.infoMain,\r\n on: c.infoOn,\r\n fg: c.infoMain,\r\n fgStrong: c.infoHover,\r\n subtle: c.infoSubtle,\r\n border: c.infoMain,\r\n },\r\n orange: {\r\n bg: c.orangeMain,\r\n on: c.orangeOn,\r\n fg: c.orangeMain,\r\n fgStrong: c.orangeHover,\r\n subtle: c.orangeSubtle,\r\n border: c.orangeMain,\r\n },\r\n pink: {\r\n bg: c.pinkMain,\r\n on: c.pinkOn,\r\n fg: c.pinkMain,\r\n fgStrong: c.pinkHover,\r\n subtle: c.pinkSubtle,\r\n border: c.pinkMain,\r\n },\r\n violet: {\r\n bg: c.violetMain,\r\n on: c.violetOn,\r\n fg: c.violetMain,\r\n fgStrong: c.violetHover,\r\n subtle: c.violetSubtle,\r\n border: c.violetMain,\r\n },\r\n }\r\n\r\n const getColorStyles = (intent: BadgeIntent, appearance: BadgeVariant) => {\r\n if (appearance === 'filled') {\r\n return {\r\n backgroundColor: intent.bg,\r\n borderColor: intent.bg,\r\n color: intent.on,\r\n }\r\n }\r\n\r\n if (appearance === 'outlined') {\r\n return {\r\n backgroundColor: 'transparent',\r\n borderColor: intent.border,\r\n color: intent.fgStrong,\r\n }\r\n }\r\n\r\n if (appearance === 'subtleOutlined') {\r\n return {\r\n backgroundColor: intent.subtle,\r\n borderColor: intent.border,\r\n color: intent.fgStrong,\r\n }\r\n }\r\n\r\n // subtle\r\n return {\r\n backgroundColor: intent.subtle,\r\n borderColor: 'transparent',\r\n color: intent.fgStrong,\r\n }\r\n }\r\n\r\n return (Object.keys(intents) as BadgeColor[]).flatMap((color) =>\r\n BADGE_VARIANTS_LIST.map((variant) => ({\r\n color,\r\n variant,\r\n styles: getColorStyles(intents[color], variant),\r\n }))\r\n )\r\n}\r\n","import { createVariants } from '@aurora-ds/theme'\r\nimport { buildBadgeCompoundVariants } from '@components/data-display/badge/utils/getBadgeColorStyles.utils'\r\n\r\nexport const BADGE_VARIANTS = createVariants((theme) => ({\r\n base: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: theme.spacing.xs,\r\n boxSizing: 'border-box' as const,\r\n borderRadius: theme.radius.full,\r\n border: '1px solid transparent',\r\n fontFamily: 'inherit',\r\n fontWeight: theme.fontWeight.medium,\r\n lineHeight: theme.lineHeight.none,\r\n whiteSpace: 'nowrap' as const,\r\n userSelect: 'none' as const,\r\n },\r\n variants: {\r\n size: {\r\n sm: {\r\n height: '1.25rem',\r\n padding: `0.125rem ${theme.spacing.xsPlus}`,\r\n fontSize: theme.fontSize['2xs'],\r\n },\r\n md: {\r\n height: '1.5rem',\r\n padding: `0.1875rem ${theme.spacing.sm}`,\r\n fontSize: theme.fontSize.xs,\r\n },\r\n lg: {\r\n height: '2rem',\r\n padding: `0.25rem ${theme.spacing.md}`,\r\n fontSize: theme.fontSize.sm,\r\n },\r\n },\r\n // Appearance and color styling is handled entirely by compoundVariants.\r\n variant: { filled: {}, outlined: {}, subtle: {}, subtleOutlined: {} },\r\n color: {\r\n default: {},\r\n primary: {},\r\n secondary: {},\r\n success: {},\r\n warning: {},\r\n error: {},\r\n info: {},\r\n orange: {},\r\n pink: {},\r\n violet: {},\r\n },\r\n },\r\n defaultVariants: { size: 'md', variant: 'subtle', color: 'default' },\r\n compoundVariants: buildBadgeCompoundVariants(theme),\r\n}), { id: 'badge' })\r\n","import { useTheme } from '@aurora-ds/theme'\r\nimport { BADGE_VARIANTS } from '@components/data-display/badge/Badge.styles'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { BadgeProps } from '@components/data-display/badge/Badge.props'\r\nimport type { BadgeSize } from '@components/data-display/badge/badge.types'\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { CSSProperties, FC } from 'react'\r\n\r\n/** Maps badge size to an Icon size token. */\r\nconst ICON_SIZE: Record<BadgeSize, keyof Theme['fontSize']> = {\r\n sm: 'xs',\r\n md: 'xs',\r\n lg: 'sm',\r\n}\r\n\r\n/** Maps badge size to a Text font-size token. */\r\nconst LABEL_FONT_SIZE: Record<BadgeSize, keyof Theme['fontSize']> = {\r\n sm: '2xs',\r\n md: 'xs',\r\n lg: 'sm',\r\n}\r\n\r\n/** Diameter of the dot indicator per size. */\r\nconst DOT_SIZE: Record<BadgeSize, string> = {\r\n sm: '0.375rem',\r\n md: '0.5rem',\r\n lg: '0.625rem',\r\n}\r\n\r\n/**\r\n * Compact label used to convey status, category or count information.\r\n *\r\n * @example <Badge color='success'>Active</Badge>\r\n * @example <Badge variant='outlined' color='error'>Critical</Badge>\r\n * @example <Badge variant='filled' color='primary' size='sm' startIcon={StarIcon}>Featured</Badge>\r\n * @example <Badge dot color='warning' />\r\n */\r\nconst Badge: FC<BadgeProps> = (\r\n {\r\n ref,\r\n variant = 'subtle',\r\n color = 'default',\r\n size = 'md',\r\n borderRadius = 'sm',\r\n startIcon: StartIcon,\r\n endIcon: EndIcon,\r\n icon,\r\n dot = false,\r\n children,\r\n className,\r\n style,\r\n ...rest\r\n }\r\n) => {\r\n const theme = useTheme()\r\n const rootClassName = BADGE_VARIANTS({ variant, color, size }, className)\r\n const resolvedBorderRadius = borderRadius ? theme.radius[borderRadius] : undefined\r\n const effectiveStartIcon = StartIcon ?? icon\r\n\r\n if (dot) {\r\n const dotStyle: CSSProperties = {\r\n width: DOT_SIZE[size],\r\n height: DOT_SIZE[size],\r\n minWidth: DOT_SIZE[size],\r\n padding: 0,\r\n border: 'none',\r\n borderRadius: resolvedBorderRadius ?? '9999px',\r\n }\r\n return (\r\n <span\r\n ref={ref}\r\n className={rootClassName}\r\n style={{ ...dotStyle, ...style }}\r\n aria-hidden={true}\r\n {...rest}\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <span\r\n ref={ref}\r\n className={rootClassName}\r\n style={{ ...(resolvedBorderRadius ? { borderRadius: resolvedBorderRadius } : {}), ...style }}\r\n {...rest}\r\n >\r\n {effectiveStartIcon && (\r\n <Icon\r\n icon={effectiveStartIcon}\r\n size={ICON_SIZE[size]}\r\n />\r\n )}\r\n\r\n {children !== undefined && children !== null && (\r\n <Text\r\n variant={'span'}\r\n fontSize={LABEL_FONT_SIZE[size]}\r\n fontWeight={'medium'}\r\n lineHeight={'none'}\r\n >\r\n {children}\r\n </Text>\r\n )}\r\n\r\n {EndIcon && (\r\n <Icon\r\n icon={EndIcon}\r\n size={ICON_SIZE[size]}\r\n />\r\n )}\r\n </span>\r\n )\r\n}\r\n\r\nBadge.displayName = 'Badge'\r\n\r\nexport default Badge\r\n","import { useCallback, useEffect, useRef, useState } from 'react'\r\nimport type { UseTooltipPositionOptions, UseTooltipPositionResult, TooltipPosition } from '@hooks/components/overlay/use-tooltip-position/useTooltipPosition.types'\r\nimport type { TooltipPlacement } from '@components/overlay/tooltip/Tooltip.props'\r\n\r\nconst VIEWPORT_MARGIN_PX = 8\r\nconst GAP_PX = 6\r\nconst FADE_IN_DELAY_MS = 10\r\n\r\n/**\r\n * Computes and continuously updates the `position: fixed` coordinates for a\r\n * tooltip bubble, clamping it to the viewport on all four sides.\r\n *\r\n * Positioning strategy (two-pass):\r\n * - First pass: mount the bubble at the preferred position.\r\n * - Second pass (rAF): read the actual rendered size and clamp all sides.\r\n *\r\n * Handles:\r\n * - All four placements: top, bottom, left, right.\r\n * - Screen-edge clamping so the tooltip never overflows any side.\r\n * - Fade-in animation (sets `isFadingIn` on next tick to trigger CSS transition).\r\n * - Mouse/focus event handlers for show/hide.\r\n */\r\nexport const useTooltipPosition = ({\r\n placement,\r\n}: UseTooltipPositionOptions): UseTooltipPositionResult => {\r\n const wrapperRef = useRef<HTMLDivElement>(null)\r\n const bubbleRef = useRef<HTMLDivElement>(null)\r\n const [isVisible, setIsVisible] = useState(false)\r\n const [isFadingIn, setIsFadingIn] = useState(false)\r\n const [position, setPosition] = useState<TooltipPosition>({ top: 0, left: 0 })\r\n const showTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n\r\n const computePosition = useCallback(\r\n (currentPlacement: TooltipPlacement = placement) => {\r\n const trigger = wrapperRef.current\r\n const bubble = bubbleRef.current\r\n if (!trigger) {return}\r\n\r\n const rect = trigger.getBoundingClientRect()\r\n const bubbleW = bubble?.offsetWidth ?? 0\r\n const bubbleH = bubble?.offsetHeight ?? 0\r\n\r\n let top = 0\r\n let left = 0\r\n\r\n switch (currentPlacement) {\r\n case 'top':\r\n top = rect.top - bubbleH - GAP_PX\r\n left = rect.left + rect.width / 2 - bubbleW / 2\r\n break\r\n case 'bottom':\r\n top = rect.bottom + GAP_PX\r\n left = rect.left + rect.width / 2 - bubbleW / 2\r\n break\r\n case 'left':\r\n top = rect.top + rect.height / 2 - bubbleH / 2\r\n left = rect.left - bubbleW - GAP_PX\r\n break\r\n case 'right':\r\n top = rect.top + rect.height / 2 - bubbleH / 2\r\n left = rect.right + GAP_PX\r\n break\r\n }\r\n\r\n // Clamp horizontally\r\n const maxLeft = window.innerWidth - bubbleW - VIEWPORT_MARGIN_PX\r\n left = Math.max(VIEWPORT_MARGIN_PX, Math.min(left, maxLeft))\r\n\r\n // Clamp vertically\r\n const maxTop = window.innerHeight - bubbleH - VIEWPORT_MARGIN_PX\r\n top = Math.max(VIEWPORT_MARGIN_PX, Math.min(top, maxTop))\r\n\r\n setPosition({ top, left })\r\n },\r\n [placement],\r\n )\r\n\r\n const show = useCallback(() => {\r\n setIsVisible(true)\r\n // Defer isFadingIn so the initial render (opacity 0) is committed first,\r\n // then the transition fires on the next paint.\r\n showTimerRef.current = setTimeout(() => {\r\n setIsFadingIn(true)\r\n requestAnimationFrame(() => computePosition())\r\n }, FADE_IN_DELAY_MS)\r\n }, [computePosition])\r\n\r\n const hide = useCallback(() => {\r\n if (showTimerRef.current !== null) {\r\n clearTimeout(showTimerRef.current)\r\n showTimerRef.current = null\r\n }\r\n setIsVisible(false)\r\n setIsFadingIn(false)\r\n }, [])\r\n\r\n // Re-compute on scroll or resize while visible\r\n useEffect(() => {\r\n if (!isVisible) {return}\r\n const handleUpdate = () => requestAnimationFrame(() => computePosition())\r\n window.addEventListener('scroll', handleUpdate, true)\r\n window.addEventListener('resize', handleUpdate)\r\n return () => {\r\n window.removeEventListener('scroll', handleUpdate, true)\r\n window.removeEventListener('resize', handleUpdate)\r\n }\r\n }, [isVisible, computePosition])\r\n\r\n // Second-pass: once the bubble mounts, recompute with actual dimensions\r\n useEffect(() => {\r\n if (isVisible && bubbleRef.current) {\r\n const id = requestAnimationFrame(() => computePosition())\r\n return () => cancelAnimationFrame(id)\r\n }\r\n }, [isVisible, computePosition])\r\n\r\n // Cleanup timers on unmount\r\n useEffect(() => {\r\n return () => {\r\n if (showTimerRef.current !== null) {clearTimeout(showTimerRef.current)}\r\n }\r\n }, [])\r\n\r\n return {\r\n wrapperRef,\r\n bubbleRef,\r\n isVisible,\r\n isFadingIn,\r\n position,\r\n handleMouseEnter: show,\r\n handleMouseLeave: hide,\r\n handleFocus: show,\r\n handleBlur: hide,\r\n handleClick: hide,\r\n }\r\n}\r\n","import { createStyles } from '@aurora-ds/theme'\r\nimport type { TooltipPlacement } from '@components/overlay/tooltip/Tooltip.props'\r\n\r\ntype TooltipBubbleStyleParams = {\r\n placement: TooltipPlacement\r\n isFadingIn: boolean\r\n width: number\r\n}\r\n\r\ntype CaretStyleParams = {\r\n placement: TooltipPlacement\r\n}\r\n\r\nexport const TOOLTIP_STYLES = createStyles((theme) => {\r\n const CARET_OUTER: Record<TooltipPlacement, object> = {\r\n top: { bottom: -6, left: '50%', transform: 'translateX(-50%)', borderLeft: '6px solid transparent', borderRight: '6px solid transparent', borderTop: `6px solid ${theme.colors.borderMain}` },\r\n bottom: { top: -6, left: '50%', transform: 'translateX(-50%)', borderLeft: '6px solid transparent', borderRight: '6px solid transparent', borderBottom: `6px solid ${theme.colors.borderMain}` },\r\n left: { right: -6, top: '50%', transform: 'translateY(-50%)', borderTop: '6px solid transparent', borderBottom: '6px solid transparent', borderLeft: `6px solid ${theme.colors.borderMain}` },\r\n right: { left: -6, top: '50%', transform: 'translateY(-50%)', borderTop: '6px solid transparent', borderBottom: '6px solid transparent', borderRight: `6px solid ${theme.colors.borderMain}` },\r\n }\r\n\r\n const CARET_INNER: Record<TooltipPlacement, object> = {\r\n top: { bottom: -5, left: '50%', transform: 'translateX(-50%)', borderLeft: '5px solid transparent', borderRight: '5px solid transparent', borderTop: `5px solid ${theme.colors.surfacePaper}` },\r\n bottom: { top: -5, left: '50%', transform: 'translateX(-50%)', borderLeft: '5px solid transparent', borderRight: '5px solid transparent', borderBottom: `5px solid ${theme.colors.surfacePaper}` },\r\n left: { right: -5, top: '50%', transform: 'translateY(-50%)', borderTop: '5px solid transparent', borderBottom: '5px solid transparent', borderLeft: `5px solid ${theme.colors.surfacePaper}` },\r\n right: { left: -5, top: '50%', transform: 'translateY(-50%)', borderTop: '5px solid transparent', borderBottom: '5px solid transparent', borderRight: `5px solid ${theme.colors.surfacePaper}` },\r\n }\r\n\r\n return {\r\n wrapper: {\r\n display: 'flex',\r\n width: '100%',\r\n },\r\n wrapperInline: {\r\n display: 'inline-flex',\r\n width: 'auto',\r\n },\r\n bubble: ({ isFadingIn, width }: TooltipBubbleStyleParams) => ({\r\n position: 'fixed' as const,\r\n opacity: isFadingIn ? 1 : 0,\r\n transform: `scale(${isFadingIn ? 1 : 0.95})`,\r\n transformOrigin: 'center',\r\n transition: `opacity ${theme.transition.fast}, transform ${theme.transition.fast}`,\r\n backgroundColor: theme.colors.surfacePaper,\r\n border: `1px solid ${theme.colors.borderMain}`,\r\n borderRadius: theme.radius.md,\r\n padding: theme.spacing.sm,\r\n // filter: drop-shadow follows the painted shape including CSS-triangle carets,\r\n // unlike box-shadow which is clipped to the rectangular border-box.\r\n filter: theme.shadows.dropSm,\r\n pointerEvents: 'none' as const,\r\n maxWidth: width,\r\n whiteSpace: 'normal' as const,\r\n wordBreak: 'break-word' as const,\r\n overflowWrap: 'break-word' as const,\r\n zIndex: theme.zIndex.tooltip,\r\n color: theme.colors.textPrimary,\r\n }),\r\n caretOuter: ({ placement }: CaretStyleParams) => ({\r\n position: 'absolute' as const,\r\n width: 0,\r\n height: 0,\r\n ...CARET_OUTER[placement],\r\n }),\r\n caretInner: ({ placement }: CaretStyleParams) => ({\r\n position: 'absolute' as const,\r\n width: 0,\r\n height: 0,\r\n ...CARET_INNER[placement],\r\n }),\r\n }\r\n})\r\n","import { cloneElement, isValidElement, useId, type FC, type MouseEvent as ReactMouseEvent } from 'react'\r\nimport { createPortal } from 'react-dom'\r\n\r\nimport { useTooltipPosition } from '@hooks/components/overlay/use-tooltip-position/useTooltipPosition'\r\nimport { TOOLTIP_STYLES } from '@components/overlay/tooltip/Tooltip.styles'\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { TooltipProps } from '@components/overlay/tooltip/Tooltip.props'\r\n\r\n/** Returns true when the primary input is a touch/pointer-coarse device (mobile). */\r\nconst isTouchDevice = (): boolean =>\r\n typeof window !== 'undefined' && window.matchMedia('(pointer: coarse)').matches\r\n\r\nconst DEFAULT_WIDTH = 200\r\n\r\n/**\r\n * Tooltip\r\n *\r\n * A hover/focus-triggered tooltip rendered in a portal to avoid clipping\r\n * by parent `overflow: hidden` containers. Computes its fixed position from\r\n * the trigger element's bounding rect and clamps it to the viewport on all sides.\r\n *\r\n * **Placements:** `top` | `bottom` | `left` | `right` (default)\r\n *\r\n * By default the tooltip is disabled on touch/mobile devices (`pointer: coarse`).\r\n * Set `disableOnMobile={false}` to keep it active on mobile (e.g. InfoBubble).\r\n *\r\n * @example\r\n * ```tsx\r\n * <Tooltip label=\"Save document\" placement=\"top\">\r\n * <Button>Save</Button>\r\n * </Tooltip>\r\n * ```\r\n */\r\nconst Tooltip: FC<TooltipProps> = ({\r\n children,\r\n label,\r\n placement = 'right',\r\n disabled = false,\r\n inline = false,\r\n withArrow = false,\r\n width = DEFAULT_WIDTH,\r\n hideOnClick = true,\r\n disableOnMobile = true,\r\n}) => {\r\n const tooltipId = useId()\r\n const isEffectivelyDisabled = disabled || (disableOnMobile && isTouchDevice())\r\n\r\n const {\r\n wrapperRef,\r\n bubbleRef,\r\n isVisible,\r\n isFadingIn,\r\n position,\r\n handleMouseEnter,\r\n handleMouseLeave,\r\n handleFocus,\r\n handleBlur,\r\n handleClick,\r\n } = useTooltipPosition({ placement })\r\n\r\n // Inject aria-describedby on the direct child so screen readers associate\r\n // the tooltip text with the focused trigger element. Also forward handleClick\r\n // on the child itself (instead of the wrapper div) to satisfy a11y rules.\r\n // The child's own onClick is preserved and composed with the tooltip handler.\r\n const childOnClick = isValidElement<{ onClick?: (event: ReactMouseEvent) => void }>(children)\r\n ? children.props.onClick\r\n : undefined\r\n\r\n const trigger = !isEffectivelyDisabled && isValidElement<Record<string, unknown>>(children)\r\n ? cloneElement(children, {\r\n 'aria-describedby': tooltipId,\r\n ...(hideOnClick && {\r\n onClick: (event: ReactMouseEvent) => {\r\n childOnClick?.(event)\r\n handleClick()\r\n },\r\n }),\r\n })\r\n : children\r\n\r\n return (\r\n <div\r\n ref={wrapperRef}\r\n className={inline ? TOOLTIP_STYLES.wrapperInline : TOOLTIP_STYLES.wrapper}\r\n onMouseEnter={isEffectivelyDisabled ? undefined : handleMouseEnter}\r\n onMouseLeave={isEffectivelyDisabled ? undefined : handleMouseLeave}\r\n onFocus={isEffectivelyDisabled ? undefined : handleFocus}\r\n onBlur={isEffectivelyDisabled ? undefined : handleBlur}\r\n >\r\n {trigger}\r\n {!isEffectivelyDisabled && isVisible && createPortal(\r\n <div\r\n ref={bubbleRef}\r\n id={tooltipId}\r\n className={TOOLTIP_STYLES.bubble({ placement, isFadingIn, width })}\r\n style={{ top: position.top, left: position.left }}\r\n role={'tooltip'}\r\n aria-live={'polite'}\r\n >\r\n <Text fontSize={'sm'}>\r\n {label}\r\n </Text>\r\n {withArrow && (\r\n <>\r\n <div className={TOOLTIP_STYLES.caretOuter({ placement })} />\r\n <div className={TOOLTIP_STYLES.caretInner({ placement })} />\r\n </>\r\n )}\r\n </div>,\r\n document.body,\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nTooltip.displayName = 'Tooltip'\r\n\r\nexport default Tooltip\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const INFO_BUBBLE_STYLES = createStyles((theme) => ({\r\n trigger: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n cursor: 'pointer',\r\n // Ensure the icon is keyboard-focusable and shows focus ring\r\n outline: 'none',\r\n border: 'none',\r\n aspectRatio: '1 !important',\r\n flexShrink: 0,\r\n backgroundColor: 'transparent',\r\n margin: 0,\r\n padding: theme.spacing.xs,\r\n ':focus-visible': getFocusRingStyles(theme),\r\n },\r\n}))\r\n","import { type FC } from 'react'\r\nimport { Tooltip } from '@components/overlay/tooltip'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { INFO_BUBBLE_STYLES } from '@components/data-display/info-bubble/InfoBubble.styles'\r\nimport { IconRegistry } from '@resources/Icons'\r\n\r\nimport type { InfoBubbleProps } from '@components/data-display/info-bubble/InfoBubble.props'\r\n\r\n/**\r\n * InfoBubble\r\n *\r\n * An info icon with an attached tooltip. Unlike the regular `Tooltip`, the\r\n * tooltip is **not** disabled on mobile — users can tap the icon to read the\r\n * information on touch devices.\r\n *\r\n * @example\r\n * ```tsx\r\n * <InfoBubble label=\"This field is required for compliance.\" />\r\n * ```\r\n *\r\n * @example\r\n * ```tsx\r\n * <InfoBubble label=\"Detailed explanation\" placement=\"right\" withArrow={false} />\r\n * ```\r\n */\r\nconst InfoBubble: FC<InfoBubbleProps> = ({\r\n label,\r\n placement = 'top',\r\n width = 200,\r\n withArrow = true,\r\n}) => {\r\n return (\r\n <Tooltip\r\n label={label}\r\n placement={placement}\r\n width={width}\r\n withArrow={withArrow}\r\n inline={true}\r\n hideOnClick={false}\r\n disableOnMobile={false}\r\n >\r\n <button\r\n type={'button'}\r\n className={INFO_BUBBLE_STYLES.trigger}\r\n aria-label={label}\r\n tabIndex={0}\r\n >\r\n <Icon\r\n icon={IconRegistry.AlertInfoIcon}\r\n size={'sm'}\r\n strokeColor={'textSecondary'}\r\n />\r\n </button>\r\n </Tooltip>\r\n )\r\n}\r\n\r\nInfoBubble.displayName = 'InfoBubble'\r\n\r\nexport default InfoBubble\r\n","import { createContext, type ReactNode } from 'react'\r\n\r\nimport type { TableColumn } from '@components/data-display/table/table.types'\r\n\r\nexport type TableContextValue = {\r\n /** Column definitions driving the `<colgroup>` and skeleton/empty rendering. */\r\n columns: TableColumn[]\r\n /** Number of columns — derived from `columns`, falls back to `1`. */\r\n columnCount: number\r\n /** Alternate background on even body rows. */\r\n striped: boolean\r\n /** Highlight body rows on hover. */\r\n hoverable: boolean\r\n /** Whether the header cells stick to the top while scrolling. */\r\n stickyHeader: boolean\r\n /** Whether the body should render its loading skeleton. */\r\n loading: boolean\r\n /** Number of skeleton rows rendered while loading. */\r\n loadingRows: number\r\n /** Whether the body should render its empty placeholder. */\r\n isEmpty: boolean\r\n /** Content shown when `isEmpty` is true. */\r\n emptyContent: ReactNode\r\n}\r\n\r\nexport const TableContext = createContext<TableContextValue | null>(null)\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { TableLayout } from '@components/data-display/table/table.types'\r\nimport type { CSSProperties } from 'react'\r\n\r\ntype TableStyleParams = {\r\n bordered: boolean\r\n layout: TableLayout\r\n maxHeight?: CSSProperties['maxHeight']\r\n}\r\n\r\nexport const TABLE_STYLES = createStyles((theme) => ({\r\n /**\r\n * Scroll container — enables overflow and the optional border.\r\n * When `maxHeight` is set it becomes the vertical scroller, which is what\r\n * makes the `stickyHeader` cells stick.\r\n */\r\n wrapper: ({ bordered, maxHeight }: TableStyleParams) => ({\r\n width: '100%',\r\n overflow: 'auto' as const,\r\n boxSizing: 'border-box' as const,\r\n ...(maxHeight != null ? { maxHeight } : {}),\r\n ...(bordered\r\n ? {\r\n border: `1px solid ${theme.colors.borderMain}`,\r\n borderRadius: theme.radius.lg,\r\n }\r\n : {}),\r\n }),\r\n /** The table element itself. `fixed` layout makes `<colgroup>` widths authoritative. */\r\n table: ({ layout }: TableStyleParams) => ({\r\n width: '100%',\r\n borderCollapse: 'collapse' as const,\r\n borderSpacing: 0,\r\n tableLayout: layout,\r\n fontFamily: 'inherit',\r\n color: theme.colors.textPrimary,\r\n }),\r\n}))\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\ntype TableBodyStyleParams = {\r\n striped: boolean\r\n hoverable: boolean\r\n}\r\n\r\nexport const TABLE_BODY_STYLES = createStyles((theme) => ({\r\n /**\r\n * Row visual states are scoped here through descendant selectors so individual\r\n * `Table.Row`s stay simple passthroughs and striping uses native `:nth-of-type`.\r\n *\r\n * Keys MUST start with `&` — the theme engine only treats `&`/`:`/`@` keys as\r\n * selectors and silently ignores bare element selectors (e.g. `'tr'`).\r\n *\r\n * Order matters: stripe → selected → hover (last wins on equal specificity).\r\n */\r\n root: ({ striped, hoverable }: TableBodyStyleParams) => ({\r\n '& tr': {\r\n transition: `background-color ${theme.transition.fast}`,\r\n },\r\n ...(striped\r\n ? { '& tr:nth-of-type(even)': { backgroundColor: theme.colors.surfaceElevated } }\r\n : {}),\r\n '& tr[aria-selected=\"true\"]': { backgroundColor: theme.colors.primarySubtle },\r\n ...(hoverable\r\n ? { '& tr:hover': { backgroundColor: theme.colors.primarySubtleHover } }\r\n : {}),\r\n }),\r\n /** Centered placeholder cell spanning the whole row width. */\r\n emptyCell: {\r\n textAlign: 'center' as const,\r\n padding: `${theme.spacing.xl} ${theme.spacing.md}`,\r\n color: theme.colors.textSecondary,\r\n fontSize: theme.fontSize.sm,\r\n },\r\n}))\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { TableAlign } from '@components/data-display/table/table.types'\r\n\r\nexport type TableCellStyleParams = {\r\n align: TableAlign\r\n}\r\n\r\nexport const TABLE_CELL_STYLES = createStyles((theme) => ({\r\n root: ({ align }: TableCellStyleParams) => ({\r\n boxSizing: 'border-box' as const,\r\n padding: `${theme.spacing.sm} ${theme.spacing.smPlus}`,\r\n textAlign: align,\r\n verticalAlign: 'middle' as const,\r\n color: theme.colors.textPrimary,\r\n fontSize: theme.fontSize.sm,\r\n lineHeight: theme.lineHeight.normal,\r\n borderBottom: `1px solid ${theme.colors.borderSubtle}`,\r\n overflowWrap: 'break-word' as const,\r\n }),\r\n}))\r\n","import { useContext } from 'react'\r\n\r\nimport { TableContext, type TableContextValue } from '@components/data-display/table/Table.context'\r\n\r\n/**\r\n * Internal hook — consumes the Table context and throws if used outside a `<Table>` provider.\r\n * @internal\r\n */\r\nexport const useTableContext = (): TableContextValue => {\r\n const ctx = useContext(TableContext)\r\n if (!ctx) {\r\n throw new Error('This component must be used inside a <Table> provider.')\r\n }\r\n return ctx\r\n}\r\n","import { TABLE_CELL_STYLES } from '@components/data-display/table/table-cell/TableCell.styles'\r\nimport { useTableContext } from '@components/data-display/table/useTableContext'\r\n\r\nimport type { TableCellProps } from '@components/data-display/table/table-cell/TableCell.props'\r\nimport type { FC } from 'react'\r\n\r\n/** `<td>` data cell. */\r\nconst TableCell: FC<TableCellProps> = ({ ref, children, align = 'left', style, ...rest }) => {\r\n useTableContext()\r\n\r\n return (\r\n <td\r\n ref={ref}\r\n className={TABLE_CELL_STYLES.root({ align })}\r\n style={style}\r\n {...rest}\r\n >\r\n {children}\r\n </td>\r\n )\r\n}\r\n\r\nTableCell.displayName = 'Table.Cell'\r\n\r\nexport default TableCell\r\n","import type { FC } from 'react'\r\n\r\nimport type { TableRowProps } from '@components/data-display/table/table-row/TableRow.props'\r\n\r\n/**\r\n * `<tr>` wrapper for the compound Table.\r\n * Striping and hover styling are handled by the parent `Table.Body`.\r\n */\r\nconst TableRow: FC<TableRowProps> = ({ ref, children, selected, ...rest }) => (\r\n <tr\r\n ref={ref}\r\n aria-selected={selected ? true : undefined}\r\n {...rest}\r\n >\r\n {children}\r\n </tr>\r\n)\r\n\r\nTableRow.displayName = 'Table.Row'\r\n\r\nexport default TableRow\r\n","import { createVariants } from '@aurora-ds/theme'\r\n\r\nimport { skeletonShimmerAnimation } from '@constants/animation.constants'\r\n\r\nexport const SKELETON_VARIANTS = createVariants((theme) => ({\r\n base: {\r\n display: 'block',\r\n boxSizing: 'border-box',\r\n backgroundColor: theme.colors.skeletonPrimary,\r\n overflow: 'hidden',\r\n },\r\n variants: {\r\n variant: {\r\n /** Inline-text placeholder: em-relative height, slight vertical scale. */\r\n text: {\r\n borderRadius: theme.radius.sm,\r\n height: '1em',\r\n transform: 'scale(1, 0.6)',\r\n transformOrigin: '0 60%',\r\n width: '100%',\r\n },\r\n /** Fully rounded placeholder for avatars and icons. */\r\n circular: {\r\n borderRadius: theme.radius.full,\r\n },\r\n /** Sharp-cornered placeholder for images and media blocks. */\r\n rectangular: {\r\n borderRadius: '0',\r\n },\r\n /** Softly rounded placeholder for cards and chips. */\r\n rounded: {\r\n borderRadius: theme.radius.md,\r\n },\r\n },\r\n animation: {\r\n /** Sliding gradient highlight from right to left. */\r\n shimmer: {\r\n background: `linear-gradient(90deg, ${theme.colors.skeletonPrimary} 25%, ${theme.colors.skeletonSecondary} 50%, ${theme.colors.skeletonPrimary} 75%)`,\r\n backgroundSize: '400% 100%',\r\n animation: `${skeletonShimmerAnimation} 2.5s linear infinite`,\r\n '@media (prefers-reduced-motion: reduce)': { animation: 'none' },\r\n },\r\n /** No animation. */\r\n none: {},\r\n },\r\n },\r\n defaultVariants: { variant: 'rounded', animation: 'shimmer' },\r\n}), { id: 'skeleton' })\r\n","import { SKELETON_VARIANTS } from '@components/foundation/skeleton/Skeleton.styles'\r\n\r\nimport type { SkeletonProps } from '@components/foundation/skeleton/Skeleton.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Block-level placeholder rendered while content is loading.\r\n *\r\n * @example // Text line\r\n * <Skeleton variant='text' width={200} />\r\n *\r\n * @example // Avatar\r\n * <Skeleton variant='circular' width={40} height={40} />\r\n *\r\n * @example // Card thumbnail\r\n * <Skeleton variant='rounded' width='100%' height={160} />\r\n *\r\n * @example // No animation\r\n * <Skeleton variant='rectangular' width='100%' height={80} animation={false} />\r\n */\r\nconst Skeleton: FC<SkeletonProps> = (\r\n {\r\n ref,\r\n variant = 'rectangular',\r\n animation = 'shimmer',\r\n width,\r\n height,\r\n className,\r\n style,\r\n ...rest\r\n }\r\n) => (\r\n <span\r\n ref={ref}\r\n className={SKELETON_VARIANTS(\r\n { variant, animation: animation === false ? 'none' : animation },\r\n className,\r\n )}\r\n style={{ width, height, ...style }}\r\n aria-hidden={true}\r\n {...rest}\r\n />\r\n)\r\n\r\nSkeleton.displayName = 'Skeleton'\r\n\r\nexport default Skeleton\r\n","import { TABLE_BODY_STYLES } from '@components/data-display/table/table-body/TableBody.styles'\r\nimport TableCell from '@components/data-display/table/table-cell/TableCell'\r\nimport TableRow from '@components/data-display/table/table-row/TableRow'\r\nimport { useTableContext } from '@components/data-display/table/useTableContext'\r\nimport { Skeleton } from '@components/foundation/skeleton'\r\n\r\nimport type { TableBodyProps } from '@components/data-display/table/table-body/TableBody.props'\r\nimport type { TableColumn } from '@components/data-display/table/table.types'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * `<tbody>` for the compound Table. Handles three states based on the parent\r\n * `Table` context: `loading` (skeleton rows), `isEmpty` (placeholder), or data.\r\n */\r\nconst TableBody: FC<TableBodyProps> = ({ children }) => {\r\n const {\r\n columns,\r\n columnCount,\r\n loading,\r\n loadingRows,\r\n isEmpty,\r\n emptyContent,\r\n striped,\r\n hoverable,\r\n } = useTableContext()\r\n\r\n const className = TABLE_BODY_STYLES.root({ striped, hoverable })\r\n\r\n if (loading) {\r\n // Each skeleton fills its column width (driven by the <colgroup>),\r\n // so the placeholder always matches the real column sizing.\r\n const skeletonColumns: TableColumn[] =\r\n columns.length > 0 ? columns : Array.from({ length: columnCount }, () => ({}))\r\n\r\n return (\r\n <tbody className={className}>\r\n {Array.from({ length: loadingRows }, (_, rowIndex) => (\r\n <TableRow key={`skeleton-row-${rowIndex}`}>\r\n {skeletonColumns.map((column, cellIndex) => (\r\n <TableCell\r\n key={`skeleton-cell-${cellIndex}`}\r\n align={column.align ?? 'left'}\r\n >\r\n <Skeleton\r\n variant={'text'}\r\n width={'100%'}\r\n />\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n ))}\r\n </tbody>\r\n )\r\n }\r\n\r\n if (isEmpty) {\r\n return (\r\n <tbody className={className}>\r\n <tr>\r\n <td\r\n colSpan={columnCount}\r\n className={TABLE_BODY_STYLES.emptyCell}\r\n >\r\n {emptyContent}\r\n </td>\r\n </tr>\r\n </tbody>\r\n )\r\n }\r\n\r\n return <tbody className={className}>\r\n {children}\r\n </tbody>\r\n}\r\n\r\nTableBody.displayName = 'Table.Body'\r\n\r\nexport default TableBody\r\n","import type { FC } from 'react'\r\n\r\nimport type { TableFootProps } from '@components/data-display/table/table-foot/TableFoot.props'\r\n\r\n/** `<tfoot>` wrapper for the compound Table. */\r\nconst TableFoot: FC<TableFootProps> = ({ children }) => (\r\n <tfoot>\r\n {children}\r\n </tfoot>\r\n)\r\n\r\nTableFoot.displayName = 'Table.Foot'\r\n\r\nexport default TableFoot\r\n","import type { FC } from 'react'\r\n\r\nimport type { TableHeadProps } from '@components/data-display/table/table-head/TableHead.props'\r\n\r\n/** `<thead>` wrapper for the compound Table. */\r\nconst TableHead: FC<TableHeadProps> = ({ children }) => (\r\n <thead>\r\n {children}\r\n </thead>\r\n)\r\n\r\nTableHead.displayName = 'Table.Head'\r\n\r\nexport default TableHead\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { TableAlign } from '@components/data-display/table/table.types'\r\n\r\nexport type TableHeaderCellStyleParams = {\r\n align: TableAlign\r\n sticky: boolean\r\n}\r\n\r\nexport const TABLE_HEADER_CELL_STYLES = createStyles((theme) => ({\r\n root: ({ align, sticky }: TableHeaderCellStyleParams) => ({\r\n boxSizing: 'border-box' as const,\r\n padding: `${theme.spacing.sm} ${theme.spacing.smPlus}`,\r\n textAlign: align,\r\n verticalAlign: 'middle' as const,\r\n color: theme.colors.textSecondary,\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.semibold,\r\n lineHeight: theme.lineHeight.normal,\r\n backgroundColor: theme.colors.surfaceElevated,\r\n borderBottom: `1px solid ${theme.colors.borderStrong}`,\r\n ...(sticky\r\n ? {\r\n position: 'sticky' as const,\r\n top: 0,\r\n zIndex: 1,\r\n boxShadow: `inset 0 -1px 0 0 ${theme.colors.borderStrong}`,\r\n }\r\n : {}),\r\n }),\r\n}))\r\n","import { TABLE_HEADER_CELL_STYLES } from '@components/data-display/table/table-header-cell/TableHeaderCell.styles'\r\nimport { useTableContext } from '@components/data-display/table/useTableContext'\r\n\r\nimport type { TableHeaderCellProps } from '@components/data-display/table/table-header-cell/TableHeaderCell.props'\r\nimport type { FC } from 'react'\r\n\r\n/** `<th>` header cell — defaults to `scope=\"col\"` for accessible column association. */\r\nconst TableHeaderCell: FC<TableHeaderCellProps> = ({\r\n ref,\r\n children,\r\n align = 'left',\r\n scope = 'col',\r\n sortDirection,\r\n style,\r\n ...rest\r\n}) => {\r\n const { stickyHeader } = useTableContext()\r\n\r\n return (\r\n <th\r\n ref={ref}\r\n scope={scope}\r\n aria-sort={sortDirection}\r\n className={TABLE_HEADER_CELL_STYLES.root({ align, sticky: stickyHeader })}\r\n style={style}\r\n {...rest}\r\n >\r\n {children}\r\n </th>\r\n )\r\n}\r\n\r\nTableHeaderCell.displayName = 'Table.HeaderCell'\r\n\r\nexport default TableHeaderCell\r\n","import { useMemo, type FC } from 'react'\r\n\r\nimport { TableContext, type TableContextValue } from '@components/data-display/table/Table.context'\r\nimport { TABLE_STYLES } from '@components/data-display/table/Table.styles'\r\nimport TableBody from '@components/data-display/table/table-body/TableBody'\r\nimport TableCell from '@components/data-display/table/table-cell/TableCell'\r\nimport TableFoot from '@components/data-display/table/table-foot/TableFoot'\r\nimport TableHead from '@components/data-display/table/table-head/TableHead'\r\nimport TableHeaderCell from '@components/data-display/table/table-header-cell/TableHeaderCell'\r\nimport TableRow from '@components/data-display/table/table-row/TableRow'\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { TableProps } from '@components/data-display/table/Table.props'\r\nimport type { TableBodyProps } from '@components/data-display/table/table-body/TableBody.props'\r\nimport type { TableCellProps } from '@components/data-display/table/table-cell/TableCell.props'\r\nimport type { TableFootProps } from '@components/data-display/table/table-foot/TableFoot.props'\r\nimport type { TableHeadProps } from '@components/data-display/table/table-head/TableHead.props'\r\nimport type { TableHeaderCellProps } from '@components/data-display/table/table-header-cell/TableHeaderCell.props'\r\nimport type { TableRowProps } from '@components/data-display/table/table-row/TableRow.props'\r\n\r\n/** Compound component type — `Table` plus its statically attached sub-components. */\r\nexport type TableComponent = FC<TableProps> & {\r\n Head: FC<TableHeadProps>\r\n Body: FC<TableBodyProps>\r\n Foot: FC<TableFootProps>\r\n Row: FC<TableRowProps>\r\n HeaderCell: FC<TableHeaderCellProps>\r\n Cell: FC<TableCellProps>\r\n}\r\n\r\n/**\r\n * Accessible data table built with a compound component API.\r\n *\r\n * Column widths are configured **once** through the `columns` prop, rendered as a\r\n * native `<colgroup>`. Combined with the default `layout=\"fixed\"`, this is the\r\n * simplest and most robust way to control column sizing.\r\n *\r\n * ```tsx\r\n * <Table\r\n * caption={'Team members'}\r\n * columns={[{ width: '40%' }, { width: 160 }, { width: 'auto', align: 'right' }]}\r\n * loading={isLoading}\r\n * isEmpty={!isLoading && rows.length === 0}\r\n * striped\r\n * hoverable\r\n * >\r\n * <Table.Head>\r\n * <Table.Row>\r\n * <Table.HeaderCell>Name</Table.HeaderCell>\r\n * <Table.HeaderCell>Role</Table.HeaderCell>\r\n * <Table.HeaderCell align={'right'}>Actions</Table.HeaderCell>\r\n * </Table.Row>\r\n * </Table.Head>\r\n * <Table.Body>\r\n * {rows.map((row) => (\r\n * <Table.Row key={row.id}>\r\n * <Table.Cell>{row.name}</Table.Cell>\r\n * <Table.Cell>{row.role}</Table.Cell>\r\n * <Table.Cell align={'right'}>…</Table.Cell>\r\n * </Table.Row>\r\n * ))}\r\n * </Table.Body>\r\n * </Table>\r\n * ```\r\n *\r\n * - `loading` swaps the body for skeleton rows sized to each column.\r\n * - `isEmpty` shows a centered placeholder spanning all columns.\r\n * - Sets `aria-busy` while loading; pair with a visible `caption` or `ariaLabel`.\r\n */\r\nconst TableBase: FC<TableProps> = ({\r\n children,\r\n columns = [],\r\n layout = 'fixed',\r\n striped = false,\r\n hoverable = false,\r\n bordered = false,\r\n stickyHeader = false,\r\n maxHeight,\r\n loading = false,\r\n loadingRows = 3,\r\n isEmpty = false,\r\n emptyContent,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n id,\r\n}) => {\r\n const columnCount = columns.length || 1\r\n\r\n const resolvedEmptyContent = emptyContent ?? (\r\n <Text\r\n variant={'span'}\r\n color={'textSecondary'}\r\n fontSize={'sm'}\r\n >\r\n No data available\r\n </Text>\r\n )\r\n\r\n const contextValue = useMemo<TableContextValue>(\r\n () => ({\r\n columns,\r\n columnCount,\r\n striped,\r\n hoverable,\r\n stickyHeader,\r\n loading,\r\n loadingRows,\r\n isEmpty,\r\n emptyContent: resolvedEmptyContent,\r\n }),\r\n [\r\n columns,\r\n columnCount,\r\n striped,\r\n hoverable,\r\n stickyHeader,\r\n loading,\r\n loadingRows,\r\n isEmpty,\r\n resolvedEmptyContent,\r\n ],\r\n )\r\n\r\n return (\r\n <TableContext.Provider value={contextValue}>\r\n <div className={TABLE_STYLES.wrapper({ bordered, layout, maxHeight })}>\r\n <table\r\n id={id}\r\n className={TABLE_STYLES.table({ bordered, layout, maxHeight })}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-busy={loading || undefined}\r\n >\r\n\r\n {columns.length > 0 && (\r\n <colgroup>\r\n {columns.map((column, index) => (\r\n <col\r\n\r\n key={index}\r\n style={{\r\n width: column.width,\r\n minWidth: column.minWidth,\r\n maxWidth: column.maxWidth,\r\n }}\r\n />\r\n ))}\r\n </colgroup>\r\n )}\r\n\r\n {children}\r\n </table>\r\n </div>\r\n </TableContext.Provider>\r\n )\r\n}\r\n\r\nTableBase.displayName = 'Table'\r\n\r\nconst Table = TableBase as TableComponent\r\nTable.Head = TableHead\r\nTable.Body = TableBody\r\nTable.Foot = TableFoot\r\nTable.Row = TableRow\r\nTable.HeaderCell = TableHeaderCell\r\nTable.Cell = TableCell\r\n\r\nexport default Table\r\n","import type { CSSProperties } from 'react'\r\n\r\n/** Inline styles reserved for native HTML elements that have no DS equivalent. */\r\nexport const DEFAULT_ERROR_FALLBACK_STYLES: Record<string, CSSProperties> = {\r\n /** Left-aligned details block with a max-width so the pre doesn't stretch too wide. */\r\n details: {\r\n textAlign: 'left',\r\n maxWidth: 600,\r\n width: '100%',\r\n },\r\n /** Monospace error dump inside the collapsible section. */\r\n pre: {\r\n fontFamily: 'monospace',\r\n fontSize: 12,\r\n opacity: 0.6,\r\n whiteSpace: 'pre-wrap',\r\n margin: '8px 0 0',\r\n },\r\n}\r\n","import type { BoxStyleProps } from '@components/layout/box/Box.props'\r\n\r\n/**\r\n * All keys belonging to `BoxStyleProps`.\r\n * Used at runtime to split a props object into style props and native HTML attributes.\r\n */\r\nconst BOX_STYLE_PROP_KEYS: ReadonlySet<string> = new Set<keyof BoxStyleProps>([\r\n // Display\r\n 'display',\r\n // Dimensions\r\n 'width', 'height', 'minWidth', 'maxWidth', 'minHeight', 'maxHeight',\r\n // Padding\r\n 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'px', 'py',\r\n // Margin\r\n 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'mx', 'my',\r\n // Flex / grid container\r\n 'gap', 'rowGap', 'columnGap',\r\n 'flexDirection', 'flexWrap', 'alignItems', 'justifyContent',\r\n 'gridTemplateColumns', 'gridTemplateRows',\r\n // Flex / grid item\r\n 'flex', 'flexGrow', 'flexShrink', 'flexBasis',\r\n 'alignSelf', 'justifySelf', 'gridColumn', 'gridRow', 'order',\r\n // Position\r\n 'position', 'top', 'right', 'bottom', 'left', 'inset', 'zIndex',\r\n // Overflow\r\n 'overflow', 'overflowX', 'overflowY',\r\n // Appearance\r\n 'backgroundColor', 'color', 'borderRadius', 'boxShadow',\r\n 'border', 'borderColor', 'borderWidth', 'borderStyle',\r\n 'textAlign', 'cursor', 'opacity',\r\n])\r\n\r\n/**\r\n * Splits a combined props object into `BoxStyleProps` and the remaining native\r\n * HTML attributes so that semantic layout components (Article, Aside, …) can\r\n * forward only the style props to `BOX_STYLES.root()` without manually\r\n * destructuring every single prop.\r\n *\r\n * @example\r\n * const { styleProps, restProps } = extractBoxStyleProps(props)\r\n * const className = BOX_STYLES.root(styleProps)\r\n * return <article className={cx(className, ownClassName)} {...restProps} />\r\n */\r\nexport const extractBoxStyleProps = <T extends Record<string, unknown>>(\r\n props: T,\r\n): { styleProps: BoxStyleProps; restProps: Omit<T, keyof BoxStyleProps> } => {\r\n const styleProps: Partial<BoxStyleProps> = {}\r\n const restProps: Record<string, unknown> = {}\r\n\r\n for (const key of Object.keys(props)) {\r\n if (BOX_STYLE_PROP_KEYS.has(key)) {\r\n (styleProps as Record<string, unknown>)[key] = props[key]\r\n } else {\r\n restProps[key] = props[key]\r\n }\r\n }\r\n\r\n return {\r\n styleProps: styleProps as BoxStyleProps,\r\n restProps: restProps as Omit<T, keyof BoxStyleProps>,\r\n }\r\n}\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { BoxStyleProps } from '@components/layout/box/Box.props'\r\n\r\nexport const BOX_STYLES = createStyles((theme) => ({\r\n root: ({\r\n // Display\r\n display,\r\n // Dimensions\r\n width, height, minWidth, maxWidth, minHeight, maxHeight,\r\n // Padding\r\n padding, paddingTop, paddingRight, paddingBottom, paddingLeft, px, py,\r\n // Margin\r\n margin, marginTop, marginRight, marginBottom, marginLeft, mx, my,\r\n // Flex / grid container\r\n gap, rowGap, columnGap,\r\n flexDirection, flexWrap, alignItems, justifyContent,\r\n gridTemplateColumns, gridTemplateRows,\r\n // Flex / grid item\r\n flex, flexGrow, flexShrink, flexBasis,\r\n alignSelf, justifySelf, gridColumn, gridRow, order,\r\n // Position\r\n position, top, right, bottom, left, inset, zIndex,\r\n // Overflow\r\n overflow, overflowX, overflowY,\r\n // Appearance\r\n backgroundColor, color, borderRadius, boxShadow,\r\n border, borderColor, borderWidth, borderStyle, textAlign, cursor, opacity,\r\n }: BoxStyleProps) => {\r\n // Local casts: our token types are structurally identical to the aurora theme sub-objects.\r\n const sp = theme.spacing as Record<keyof Theme['spacing'], string>\r\n const cl = theme.colors as Record<keyof Theme['colors'], string>\r\n const rd = theme.radius as Record<keyof Theme['radius'], string>\r\n const sh = theme.shadows as Record<keyof Theme['shadows'], string>\r\n const zi = theme.zIndex as Record<keyof Theme['zIndex'], number>\r\n\r\n return {\r\n boxSizing: 'border-box' as const,\r\n\r\n // Display\r\n ...(display !== undefined && { display }),\r\n\r\n // Dimensions\r\n ...(width !== undefined && { width }),\r\n ...(height !== undefined && { height }),\r\n ...(minWidth !== undefined && { minWidth }),\r\n ...(maxWidth !== undefined && { maxWidth }),\r\n ...(minHeight !== undefined && { minHeight }),\r\n ...(maxHeight !== undefined && { maxHeight }),\r\n\r\n // Padding — shorthands first, explicit per-side props override (last key wins).\r\n ...(px !== undefined && { paddingLeft: sp[px], paddingRight: sp[px] }),\r\n ...(py !== undefined && { paddingTop: sp[py], paddingBottom: sp[py] }),\r\n ...(padding !== undefined && { padding: sp[padding] }),\r\n ...(paddingTop !== undefined && { paddingTop: sp[paddingTop] }),\r\n ...(paddingRight !== undefined && { paddingRight: sp[paddingRight] }),\r\n ...(paddingBottom !== undefined && { paddingBottom: sp[paddingBottom] }),\r\n ...(paddingLeft !== undefined && { paddingLeft: sp[paddingLeft] }),\r\n\r\n // Margin\r\n ...(mx !== undefined && { marginLeft: sp[mx], marginRight: sp[mx] }),\r\n ...(my !== undefined && { marginTop: sp[my], marginBottom: sp[my] }),\r\n ...(margin !== undefined && { margin: sp[margin] }),\r\n ...(marginTop !== undefined && { marginTop: sp[marginTop] }),\r\n ...(marginRight !== undefined && { marginRight: sp[marginRight] }),\r\n ...(marginBottom !== undefined && { marginBottom: sp[marginBottom] }),\r\n ...(marginLeft !== undefined && { marginLeft: sp[marginLeft] }),\r\n\r\n // Flex / grid container\r\n ...(gap !== undefined && { gap: sp[gap] }),\r\n ...(rowGap !== undefined && { rowGap: sp[rowGap] }),\r\n ...(columnGap !== undefined && { columnGap: sp[columnGap] }),\r\n ...(flexDirection !== undefined && { flexDirection }),\r\n ...(flexWrap !== undefined && { flexWrap }),\r\n ...(alignItems !== undefined && { alignItems }),\r\n ...(justifyContent !== undefined && { justifyContent }),\r\n ...(gridTemplateColumns !== undefined && { gridTemplateColumns }),\r\n ...(gridTemplateRows !== undefined && { gridTemplateRows }),\r\n\r\n // Flex / grid item\r\n ...(flex !== undefined && { flex }),\r\n ...(flexGrow !== undefined && { flexGrow }),\r\n ...(flexShrink !== undefined && { flexShrink }),\r\n ...(flexBasis !== undefined && { flexBasis }),\r\n ...(alignSelf !== undefined && { alignSelf }),\r\n ...(justifySelf !== undefined && { justifySelf }),\r\n ...(gridColumn !== undefined && { gridColumn }),\r\n ...(gridRow !== undefined && { gridRow }),\r\n ...(order !== undefined && { order }),\r\n\r\n // Position\r\n ...(position !== undefined && { position }),\r\n ...(top !== undefined && { top }),\r\n ...(right !== undefined && { right }),\r\n ...(bottom !== undefined && { bottom }),\r\n ...(left !== undefined && { left }),\r\n ...(inset !== undefined && { inset }),\r\n ...(zIndex !== undefined && { zIndex: zi[zIndex] }),\r\n\r\n // Overflow\r\n ...(overflow !== undefined && { overflow }),\r\n ...(overflowX !== undefined && { overflowX }),\r\n ...(overflowY !== undefined && { overflowY }),\r\n\r\n // Appearance\r\n ...(backgroundColor !== undefined && { backgroundColor: cl[backgroundColor] }),\r\n ...(color !== undefined && { color: cl[color] }),\r\n ...(borderRadius !== undefined && { borderRadius: rd[borderRadius] }),\r\n ...(boxShadow !== undefined && { boxShadow: sh[boxShadow] }),\r\n ...(border !== undefined && { border }),\r\n ...(borderColor !== undefined && { borderColor: cl[borderColor] }),\r\n ...(borderWidth !== undefined && { borderWidth }),\r\n ...(borderStyle !== undefined && { borderStyle }),\r\n ...(textAlign !== undefined && { textAlign }),\r\n ...(cursor !== undefined && { cursor }),\r\n ...(opacity !== undefined && { opacity }),\r\n }\r\n },\r\n}))\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\n\r\nimport type { BoxProps } from '@components/layout/box/Box.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * A plain `div` enriched with convenient, token-aware style props.\r\n *\r\n * Spacing / color / radius / shadow / z-index props accept theme tokens only\r\n * (e.g. `padding='md'`, `backgroundColor='surfacePaper'`).\r\n * Dimensions and position offsets accept any CSS value.\r\n * All native `div` attributes are forwarded, and `ref` points to the element.\r\n *\r\n * @example <Box padding='md' backgroundColor='surfacePaper' borderRadius='lg'>Content</Box>\r\n * @example <Box display='flex' gap='sm' alignItems='center'>…</Box>\r\n */\r\nconst Box: FC<BoxProps> = ({ ref, style, className, children, ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps(props)\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nBox.displayName = 'Box'\r\n\r\nexport default Box\r\n","import { Box } from '@components/layout/box'\r\n\r\nimport type { StackProps } from '@components/layout/stack/Stack.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * A flex `Box` for laying out children along a single axis.\r\n *\r\n * Defaults to `display: flex` and a vertical (`column`) direction. Every\r\n * `Box` style prop is available (`gap`, `alignItems`, `justifyContent`, …),\r\n * and `display` can still be overridden (e.g. `'inline-flex'`).\r\n *\r\n * @example <Stack gap='sm'>…</Stack>\r\n * @example <Stack flexDirection='row' gap='md' alignItems='center' justifyContent='space-between'>…</Stack>\r\n */\r\nconst Stack: FC<StackProps> = (\r\n {\r\n flexDirection = 'row',\r\n display = 'flex',\r\n gap = 'sm',\r\n alignItems = 'center',\r\n ...rest\r\n }\r\n) => (\r\n <Box\r\n display={display}\r\n flexDirection={flexDirection}\r\n alignItems={alignItems}\r\n gap={gap}\r\n {...rest}\r\n />\r\n)\r\n\r\nStack.displayName = 'Stack'\r\n\r\nexport default Stack\r\n","import { Button } from '@components/actions/button'\r\nimport { DEFAULT_ERROR_FALLBACK_STYLES } from '@components/foundation/error-boundary/DefaultErrorFallback.styles'\r\nimport type { DefaultErrorFallbackProps } from '@components/foundation/error-boundary/DefaultErrorFallback.props'\r\nimport { Text } from '@components/foundation/text'\r\nimport { Stack } from '@components/layout/stack'\r\n\r\n/**\r\n * Default fallback UI rendered by `ErrorBoundary` when no custom\r\n * `fallback` prop is provided.\r\n *\r\n * Displays a centred error message with a collapsible technical detail\r\n * section and a retry button that resets the boundary state.\r\n *\r\n * @example\r\n * ```tsx\r\n * // Used automatically by ErrorBoundary:\r\n * <ErrorBoundary>\r\n * <MyFeature />\r\n * </ErrorBoundary>\r\n *\r\n * // Or rendered directly with mocked data (e.g. in Storybook):\r\n * <DefaultErrorFallback\r\n * error={new Error('Network request failed')}\r\n * onRetry={() => refetch()}\r\n * title=\"Failed to load data\"\r\n * />\r\n * ```\r\n */\r\nconst DefaultErrorFallback = ({\r\n error,\r\n onRetry,\r\n title = 'Something went wrong',\r\n message = 'An unexpected error occurred. Please try again.',\r\n retryLabel = 'Try again',\r\n}: DefaultErrorFallbackProps) => (\r\n <Stack\r\n role={'alert'}\r\n aria-live={'assertive'}\r\n flexDirection={'column'}\r\n alignItems={'center'}\r\n justifyContent={'center'}\r\n gap={'md'}\r\n minHeight={'100dvh'}\r\n padding={'lg'}\r\n textAlign={'center'}\r\n >\r\n <Text variant={'h1'}>{title}</Text>\r\n <Text\r\n variant={'p'}\r\n color={'textSecondary'}\r\n >\r\n {message}\r\n </Text>\r\n <details style={DEFAULT_ERROR_FALLBACK_STYLES.details}>\r\n <summary>Technical details</summary>\r\n <pre style={DEFAULT_ERROR_FALLBACK_STYLES.pre}>{error.message}</pre>\r\n </details>\r\n <Button\r\n label={retryLabel}\r\n variant={'outlined'}\r\n onClick={onRetry}\r\n />\r\n </Stack>\r\n)\r\n\r\nDefaultErrorFallback.displayName = 'DefaultErrorFallback'\r\n\r\nexport default DefaultErrorFallback\r\n","import { Component, type ErrorInfo } from 'react'\r\n\r\nimport DefaultErrorFallback from '@components/foundation/error-boundary/DefaultErrorFallback'\r\n\r\nimport type {\r\n ErrorBoundaryProps,\r\n ErrorBoundaryState,\r\n} from '@components/foundation/error-boundary/ErrorBoundary.props'\r\n\r\n/**\r\n * Generic React error boundary.\r\n * Catches synchronous render-time errors thrown by descendant components\r\n * and renders a recoverable fallback UI instead of crashing the whole app.\r\n *\r\n * Note: error boundaries do NOT catch:\r\n * - errors in event handlers (use try/catch + setState),\r\n * - errors in async code (promises, setTimeout),\r\n * - errors during SSR,\r\n * - errors thrown in the boundary itself.\r\n *\r\n * For routing errors thrown by loaders/actions, use `RouteErrorBoundary`\r\n * (powered by `useRouteError`) directly on a `RouteObject.errorElement`.\r\n *\r\n * Class component is mandatory: hooks cannot replace `componentDidCatch`\r\n * / `getDerivedStateFromError` as of React 19.\r\n */\r\nclass ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\r\n static displayName = 'ErrorBoundary'\r\n\r\n state: ErrorBoundaryState = { error: null }\r\n\r\n static getDerivedStateFromError = (error: Error): ErrorBoundaryState => {\r\n return { error }\r\n }\r\n\r\n componentDidCatch(error: Error, info: ErrorInfo): void {\r\n this.props.onError?.(error, info)\r\n // Replace with a real telemetry sink (Sentry, Datadog…) when available.\r\n console.error('[ErrorBoundary]', error, info)\r\n }\r\n\r\n private reset = (): void => {\r\n this.setState({ error: null })\r\n }\r\n\r\n render() {\r\n const { error } = this.state\r\n const { fallback, children } = this.props\r\n\r\n if (error) {\r\n if (fallback) {\r\n return fallback({ error, reset: this.reset })\r\n }\r\n return (\r\n <DefaultErrorFallback\r\n error={error}\r\n onRetry={this.reset}\r\n />\r\n )\r\n }\r\n\r\n return children\r\n }\r\n}\r\n\r\nexport default ErrorBoundary\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { ImageProps } from '@components/foundation/image/Image.props'\r\n\r\ntype ImageStyleParams = Pick<ImageProps, 'width' | 'height' | 'maxWidth' | 'maxHeight' | 'objectFit' | 'borderRadius'>\r\n\r\nexport const IMAGE_STYLES = createStyles((theme) => ({\r\n root: ({ width, height, maxWidth, maxHeight, objectFit, borderRadius }: ImageStyleParams) => ({\r\n display: 'block',\r\n flexShrink: 0,\r\n width: width ?? 'auto',\r\n height: height ?? 'auto',\r\n maxWidth: maxWidth ?? undefined,\r\n maxHeight: maxHeight ?? undefined,\r\n objectFit: objectFit ?? 'cover',\r\n borderRadius: borderRadius ? theme.radius[borderRadius] : undefined,\r\n }),\r\n}))\r\n","import { type FC } from 'react'\r\n\r\nimport { IMAGE_STYLES } from '@components/foundation/image/Image.styles'\r\nimport type { ImageProps } from '@components/foundation/image/Image.props'\r\n\r\n/**\r\n * Renders a standard HTML image (`<img>`) with sizing, object-fit, border radius,\r\n * and accessibility support.\r\n *\r\n * **Features:**\r\n * - Free sizing via `width` / `height` (e.g. `'200px'`, `'50%'`, `200`)\r\n * - Responsive constraint via `maxWidth` / `maxHeight`\r\n * - `objectFit` to control how the image fills its container\r\n * - `borderRadius` using theme tokens (e.g. `'md'`, `'full'`)\r\n * - Native lazy-loading via `loading` prop (defaults to `'lazy'`)\r\n * - Accessibility: `alt` is required — pass `\"\"` for decorative images\r\n *\r\n * @example\r\n * ```tsx\r\n * // Decorative image (empty alt):\r\n * <Image src=\"/bg.jpg\" alt=\"\" width=\"100%\" height={200} objectFit=\"cover\" />\r\n *\r\n * // Meaningful image:\r\n * <Image\r\n * src=\"/avatar.png\"\r\n * alt=\"Profile picture of Jane Doe\"\r\n * width={64}\r\n * height={64}\r\n * borderRadius=\"full\"\r\n * objectFit=\"cover\"\r\n * />\r\n * ```\r\n */\r\nconst Image: FC<ImageProps> = ({\r\n src,\r\n alt,\r\n width,\r\n height,\r\n maxWidth,\r\n maxHeight,\r\n objectFit = 'cover',\r\n loading = 'lazy',\r\n borderRadius,\r\n ariaDescribedBy,\r\n}) => {\r\n return (\r\n <img\r\n src={src}\r\n alt={alt}\r\n title={alt || undefined}\r\n loading={loading}\r\n aria-describedby={ariaDescribedBy}\r\n className={IMAGE_STYLES.root({ width, height, maxWidth, maxHeight, objectFit, borderRadius })}\r\n />\r\n )\r\n}\r\n\r\nImage.displayName = 'Image'\r\n\r\nexport default Image\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { spinAnimation } from '@constants/animation.constants'\r\n\r\nexport const LOADER_SCREEN_STYLES = createStyles(() => ({\r\n spinner: {\r\n animation: `${spinAnimation} 1s linear infinite`,\r\n '@media (prefers-reduced-motion: reduce)': { animation: 'none' },\r\n },\r\n}))\r\n","import { Icon } from '@components/foundation/icon'\r\nimport { LOADER_SCREEN_STYLES } from '@components/foundation/loader/LoaderScreen.styles'\r\nimport { Stack } from '@components/layout/stack'\r\nimport { SpinnerIcon } from '@resources/Icons'\r\n\r\nimport type { LoaderScreenProps } from '@components/foundation/loader/LoaderScreen.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Full-screen loading placeholder shown while data is being fetched.\r\n *\r\n * Renders a centred spinner over a full-viewport surface.\r\n * The spinner rotation is suppressed when the user prefers reduced motion.\r\n *\r\n * @example\r\n * ```tsx\r\n * // Swap with real content once data is ready:\r\n * {isLoading ? <LoaderScreen /> : <AppContent />}\r\n *\r\n * // With a custom label for screen readers:\r\n * <LoaderScreen label=\"Loading your dashboard…\" />\r\n * ```\r\n */\r\nconst LoaderScreen: FC<LoaderScreenProps> = ({ label = 'Loading…' }) => (\r\n <Stack\r\n role={'status'}\r\n aria-busy={'true'}\r\n aria-label={label}\r\n alignItems={'center'}\r\n justifyContent={'center'}\r\n width={'100vw'}\r\n height={'100dvh'}\r\n backgroundColor={'surfaceBackground'}\r\n >\r\n <Icon\r\n icon={SpinnerIcon}\r\n size={'2xl'}\r\n strokeColor={'primaryMain'}\r\n className={LOADER_SCREEN_STYLES.spinner}\r\n />\r\n </Stack>\r\n)\r\n\r\nLoaderScreen.displayName = 'LoaderScreen'\r\n\r\nexport default LoaderScreen\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { SvgImageProps } from '@components/foundation/svg-image/SvgImage.props'\r\n\r\ntype SvgImageStyleParams = Pick<SvgImageProps, 'width' | 'height' | 'maxWidth' | 'maxHeight'>\r\n\r\nexport const SVG_IMAGE_STYLES = createStyles(() => ({\r\n root: ({ width, height, maxWidth, maxHeight }: SvgImageStyleParams) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n lineHeight: 0,\r\n width: width ?? 'auto',\r\n height: height ?? 'auto',\r\n maxWidth: maxWidth ?? undefined,\r\n maxHeight: maxHeight ?? undefined,\r\n '& svg': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n }),\r\n}))\r\n","import { type FC } from 'react'\r\n\r\nimport { SVG_IMAGE_STYLES } from '@components/foundation/svg-image/SvgImage.styles'\r\nimport type { SvgImageProps } from '@components/foundation/svg-image/SvgImage.props'\r\n\r\n/**\r\n * Renders an SVG illustration with free-form sizing.\r\n *\r\n * Unlike `Icon` (constrained to theme font sizes), `SvgImage` accepts any\r\n * valid CSS value for `width` and `height`.\r\n *\r\n * **Features:**\r\n * - Free sizing via `width` / `height` (e.g. `'200px'`, `'50%'`, `200`)\r\n * - Responsive constraint via `maxWidth` / `maxHeight`\r\n * - Accessibility: `ariaLabel`, `ariaLabelledBy`, `ariaDescribedBy`\r\n * - No label → `aria-hidden` (decorative illustration)\r\n *\r\n * @example\r\n * ```tsx\r\n * // Decorative illustration (no accessible label needed):\r\n * <SvgImage image={ImagesRegistry.WelcomeIllustration} width={320} />\r\n *\r\n * // Meaningful illustration (must have a label):\r\n * <SvgImage\r\n * image={ImagesRegistry.EmptyStateIllustration}\r\n * width={'50%'}\r\n * maxWidth={400}\r\n * ariaLabel=\"No results found illustration\"\r\n * />\r\n * ```\r\n */\r\nconst SvgImage: FC<SvgImageProps> = ({\r\n image: SvgComponent,\r\n width,\r\n height,\r\n maxWidth,\r\n maxHeight,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n ariaDescribedBy,\r\n}) => {\r\n const isDecorative = !ariaLabel && !ariaLabelledBy\r\n\r\n return (\r\n <div\r\n className={SVG_IMAGE_STYLES.root({ width, height, maxWidth, maxHeight })}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n aria-hidden={isDecorative || undefined}\r\n role={isDecorative ? 'presentation' : 'img'}\r\n >\r\n <SvgComponent />\r\n </div>\r\n )\r\n}\r\n\r\nSvgImage.displayName = 'SvgImage'\r\n\r\nexport default SvgImage\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const FORM_STYLES = createStyles(() => ({\r\n root: {\r\n display: 'contents',\r\n },\r\n}))\r\n","import type { FC, FormEvent } from 'react'\r\n\r\nimport type { FormProps } from '@components/forms/form/Form.props'\r\nimport { FORM_STYLES } from '@components/forms/form/Form.styles'\r\n\r\n/**\r\n * Thin wrapper around `<form>`. Prevents the default browser submit and\r\n * delegates to the `onSubmit` callback.\r\n *\r\n * @example\r\n * <Form onSubmit={handleSubmit}>\r\n * <TextField label=\"Email\" />\r\n * <Button type=\"submit\">Send</Button>\r\n * </Form>\r\n */\r\nconst Form: FC<FormProps> = ({\r\n children,\r\n onSubmit,\r\n 'aria-label': ariaLabel,\r\n 'aria-labelledby': ariaLabelledBy,\r\n}) => {\r\n const handleSubmit = (event: FormEvent<HTMLFormElement>) => {\r\n event.preventDefault()\r\n onSubmit(event)\r\n }\r\n\r\n return (\r\n <form\r\n onSubmit={handleSubmit}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n className={FORM_STYLES.root}\r\n noValidate\r\n >\r\n {children}\r\n </form>\r\n )\r\n}\r\n\r\nForm.displayName = 'Form'\r\n\r\nexport default Form\r\n","import { type FC } from 'react'\r\n\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { TextFieldStatus } from '@components/forms/text-field/textField.types'\r\nimport type { FormHelperTextProps } from '@components/forms/_common/form-helper-text/FormHelperText.props'\r\n\r\nconst HELPER_COLOR_MAP: Record<TextFieldStatus, keyof Theme['colors']> = {\r\n default: 'textSecondary',\r\n error: 'errorHover',\r\n success: 'successHover',\r\n warning: 'warningHover',\r\n}\r\n\r\nconst FormHelperText: FC<FormHelperTextProps> = ({\r\n id,\r\n status = 'default',\r\n ariaLive,\r\n className,\r\n children,\r\n}) => {\r\n const resolvedAriaLive = ariaLive ?? (status === 'error' ? 'assertive' : 'polite')\r\n\r\n return (\r\n <Text\r\n id={id}\r\n variant={'span'}\r\n fontSize={'xs'}\r\n color={HELPER_COLOR_MAP[status]}\r\n aria-live={resolvedAriaLive}\r\n className={className}\r\n >\r\n {children}\r\n </Text>\r\n )\r\n}\r\n\r\nFormHelperText.displayName = 'FormHelperText'\r\n\r\nexport default FormHelperText\r\n","import { createStyles, createVariants } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const RADIO_ROOT_VARIANTS = createVariants((theme) => ({\r\n base: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: theme.spacing.sm,\r\n cursor: 'pointer',\r\n userSelect: 'none',\r\n },\r\n variants: {\r\n disabled: {\r\n true: {\r\n cursor: 'not-allowed',\r\n opacity: theme.opacity.high,\r\n },\r\n false: {},\r\n },\r\n },\r\n defaultVariants: {\r\n disabled: 'false',\r\n },\r\n}), { id: 'radio-root' })\r\n\r\nexport const RADIO_INPUT_VARIANTS = createVariants((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n base: {\r\n appearance: 'none',\r\n position: 'relative' as const,\r\n margin: 0,\r\n borderWidth: '1px',\r\n borderStyle: 'solid',\r\n borderColor: c.borderStrong,\r\n borderRadius: '50%',\r\n backgroundColor: c.surfacePaper,\r\n flexShrink: 0,\r\n transition: `border-color ${theme.transition.fast}, background-color ${theme.transition.fast}`,\r\n cursor: 'pointer',\r\n '&:focus-visible': getFocusRingStyles(theme),\r\n '&::after': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n left: '50%',\r\n top: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n width: '40%',\r\n height: '40%',\r\n borderRadius: '50%',\r\n backgroundColor: c.textInverse,\r\n opacity: 0,\r\n transition: `opacity ${theme.transition.fast}`,\r\n },\r\n '&:checked::after': {\r\n opacity: 1,\r\n },\r\n },\r\n variants: {\r\n size: {\r\n sm: {\r\n width: '1rem',\r\n height: '1rem',\r\n },\r\n md: {\r\n width: '1.125rem',\r\n height: '1.125rem',\r\n },\r\n lg: {\r\n width: '1.25rem',\r\n height: '1.25rem',\r\n },\r\n },\r\n status: {\r\n default: {\r\n '&:checked': {\r\n borderColor: c.primaryMain,\r\n backgroundColor: c.primaryMain,\r\n },\r\n },\r\n error: {\r\n borderColor: c.errorMain,\r\n '&:checked': {\r\n borderColor: c.errorMain,\r\n backgroundColor: c.errorMain,\r\n },\r\n },\r\n success: {\r\n borderColor: c.successMain,\r\n '&:checked': {\r\n borderColor: c.successMain,\r\n backgroundColor: c.successMain,\r\n },\r\n },\r\n warning: {\r\n borderColor: c.warningMain,\r\n '&:checked': {\r\n borderColor: c.warningMain,\r\n backgroundColor: c.warningMain,\r\n },\r\n },\r\n },\r\n disabled: {\r\n true: {\r\n cursor: 'not-allowed',\r\n backgroundColor: c.disabledMain,\r\n borderColor: c.disabledMain,\r\n '&:checked': {\r\n backgroundColor: c.disabledText,\r\n borderColor: c.disabledText,\r\n },\r\n },\r\n false: {},\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n status: 'default',\r\n disabled: 'false',\r\n },\r\n }\r\n}, { id: 'radio-input' })\r\n\r\nexport const RADIO_STYLES = createStyles((theme) => ({\r\n wrapper: {\r\n display: 'inline-flex',\r\n flexDirection: 'column',\r\n gap: theme.spacing.xs,\r\n },\r\n helper: {\r\n marginLeft: `calc(1.125rem + ${theme.spacing.sm})`,\r\n },\r\n}), { id: 'radio-extra' })\r\n","import { MutableRefObject, Ref, RefCallback, useCallback, useRef } from 'react'\r\n\r\nconst assignRef = <T>(ref: Ref<T> | undefined, node: T | null): void => {\r\n if (typeof ref === 'function') {\r\n ref(node)\r\n } else if (ref != null) {\r\n (ref as MutableRefObject<T | null>).current = node\r\n }\r\n}\r\n\r\n/**\r\n * Merges several refs (callback or object) into a single stable callback ref.\r\n *\r\n * Useful when a component needs an internal ref while still forwarding the\r\n * consumer's `ref`. The returned callback keeps a stable identity across\r\n * renders to avoid detach/attach churn, always assigning to the latest refs.\r\n *\r\n * @example\r\n * const inputRef = useRef<HTMLInputElement | null>(null)\r\n * const mergedRef = useMergedRefs(ref, inputRef)\r\n */\r\nexport const useMergedRefs = <T>(...refs: Array<Ref<T> | undefined>): RefCallback<T> => {\r\n const refsRef = useRef(refs)\r\n refsRef.current = refs\r\n\r\n return useCallback((node: T | null) => {\r\n for (const ref of refsRef.current) {\r\n assignRef(ref, node)\r\n }\r\n }, [])\r\n}\r\n","import { useId } from 'react'\r\n\r\nimport { useMergedRefs } from '@hooks/common/use-merged-refs/useMergedRefs'\r\n\r\nimport type { RadioButtonProps } from '@components/forms/radio/radio-button/RadioButton.props'\r\n\r\ntype UseRadioButtonParams = {\r\n id?: string\r\n ref?: RadioButtonProps['ref']\r\n}\r\n\r\ntype UseRadioButtonReturn = {\r\n radioId: string\r\n helperId: string\r\n mergedRef: (node: HTMLInputElement | null) => void\r\n}\r\n\r\n/** Handles id generation and ref merging for the RadioButton component. */\r\nexport const useRadioButton = ({ id, ref }: UseRadioButtonParams): UseRadioButtonReturn => {\r\n const generatedId = useId()\r\n const radioId = id ?? generatedId\r\n const helperId = `${radioId}-helper`\r\n const mergedRef = useMergedRefs<HTMLInputElement>(ref)\r\n\r\n return {\r\n radioId,\r\n helperId,\r\n mergedRef,\r\n }\r\n}\r\n","import { createContext, useContext } from 'react'\r\n\r\nimport type { RadioButtonSize, RadioButtonStatus } from '@components/forms/radio/radio-button/radioButton.types'\r\n\r\nexport type RadioGroupContextValue = {\r\n /** The name attribute shared across all radio inputs in the group. */\r\n name: string\r\n /** The currently selected value (controlled). */\r\n value?: string\r\n /** Callback triggered when a radio option is selected. */\r\n onChange?: (value: string) => void\r\n /** Whether all radio buttons in the group are disabled. */\r\n disabled?: boolean\r\n /** Size applied to all radio buttons unless overridden. */\r\n size?: RadioButtonSize\r\n /** Status applied to all radio buttons unless overridden. */\r\n status?: RadioButtonStatus\r\n}\r\n\r\nexport const RadioGroupContext = createContext<RadioGroupContextValue | null>(null)\r\n\r\n/** Returns the RadioGroup context value, or null when used outside a RadioGroup. */\r\nexport const useRadioGroupContext = (): RadioGroupContextValue | null =>\r\n useContext(RadioGroupContext)\r\n","import { type ChangeEvent, type FC, useCallback } from 'react'\r\n\r\nimport { Text } from '@components/foundation/text'\r\nimport { FormHelperText } from '@components/forms/_common/form-helper-text'\r\nimport {\r\n RADIO_INPUT_VARIANTS,\r\n RADIO_ROOT_VARIANTS,\r\n RADIO_STYLES,\r\n} from '@components/forms/radio/radio-button/RadioButton.styles'\r\nimport { useRadioButton } from '@components/forms/radio/radio-button/utils/useRadioButton.utils'\r\nimport { useRadioGroupContext } from '@components/forms/radio/radio-group/radioGroupContext'\r\n\r\nimport type { RadioButtonProps } from '@components/forms/radio/radio-button/RadioButton.props'\r\n\r\nconst RadioButton: FC<RadioButtonProps> = ({\r\n ref,\r\n label,\r\n helperText,\r\n size,\r\n status,\r\n error,\r\n id,\r\n disabled,\r\n required,\r\n value,\r\n checked,\r\n defaultChecked,\r\n onChange,\r\n ...rest\r\n}) => {\r\n const ctx = useRadioGroupContext()\r\n\r\n // Merge context values — explicit props take precedence\r\n const effectiveName = rest.name ?? ctx?.name\r\n const effectiveDisabled = disabled ?? ctx?.disabled\r\n const effectiveSize = size ?? ctx?.size ?? 'md'\r\n const effectiveStatus = error ? 'error' : (status ?? ctx?.status ?? 'default')\r\n\r\n // When inside a RadioGroup, derive checked from the group's selected value\r\n const isInGroup = ctx !== null\r\n const groupChecked = isInGroup && value !== undefined ? ctx.value === String(value) : undefined\r\n const effectiveChecked = isInGroup ? groupChecked : checked\r\n\r\n const handleChange = useCallback(\r\n (event: ChangeEvent<HTMLInputElement>) => {\r\n if (isInGroup && ctx?.onChange && value !== undefined) {\r\n ctx.onChange(String(value))\r\n }\r\n onChange?.(event)\r\n },\r\n [isInGroup, ctx, value, onChange]\r\n )\r\n\r\n const { radioId, helperId, mergedRef } = useRadioButton({ id, ref })\r\n\r\n return (\r\n <div className={RADIO_STYLES.wrapper}>\r\n <label\r\n htmlFor={radioId}\r\n className={RADIO_ROOT_VARIANTS({ disabled: effectiveDisabled ? 'true' : 'false' })}\r\n >\r\n <input\r\n ref={mergedRef}\r\n id={radioId}\r\n type={'radio'}\r\n name={effectiveName}\r\n value={value}\r\n checked={effectiveChecked}\r\n defaultChecked={isInGroup ? undefined : defaultChecked}\r\n disabled={effectiveDisabled}\r\n required={required}\r\n aria-invalid={effectiveStatus === 'error' || undefined}\r\n aria-describedby={helperText !== undefined ? helperId : undefined}\r\n aria-errormessage={effectiveStatus === 'error' && helperText !== undefined ? helperId : undefined}\r\n onChange={handleChange}\r\n className={RADIO_INPUT_VARIANTS({\r\n size: effectiveSize,\r\n status: effectiveStatus,\r\n disabled: effectiveDisabled ? 'true' : 'false',\r\n })}\r\n {...rest}\r\n />\r\n\r\n {label !== undefined && (\r\n <Text\r\n variant={'span'}\r\n fontSize={effectiveSize === 'lg' ? 'md' : 'sm'}\r\n color={effectiveDisabled ? 'textDisabled' : 'textSecondary'}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n </label>\r\n\r\n {helperText !== undefined && (\r\n <FormHelperText\r\n id={helperId}\r\n status={effectiveStatus}\r\n className={RADIO_STYLES.helper}\r\n >\r\n {helperText}\r\n </FormHelperText>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nRadioButton.displayName = 'RadioButton'\r\n\r\nexport default RadioButton\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const RADIO_GROUP_STYLES = createStyles((theme) => ({\r\n fieldset: {\r\n border: 'none',\r\n margin: 0,\r\n padding: 0,\r\n },\r\n legend: {\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.medium,\r\n color: theme.colors.textPrimary,\r\n marginBottom: theme.spacing.sm,\r\n padding: 0,\r\n },\r\n group: {\r\n display: 'flex',\r\n gap: theme.spacing.sm,\r\n },\r\n groupVertical: {\r\n flexDirection: 'column',\r\n },\r\n groupHorizontal: {\r\n flexDirection: 'row',\r\n flexWrap: 'wrap',\r\n alignItems: 'flex-start',\r\n },\r\n}), { id: 'radio-group' })\r\n","import { useCallback, useRef, useState } from 'react'\r\n\r\nimport type {\r\n UseControllableStateOptions,\r\n UseControllableStateResult,\r\n} from '@hooks/common/use-controllable-state/useControllableState.types'\r\n\r\n/**\r\n * Unifies controlled and uncontrolled value handling.\r\n *\r\n * - When `value` is provided the hook is controlled: the returned value mirrors\r\n * it and internal state is never used to render.\r\n * - Otherwise it is uncontrolled: state starts at `defaultValue` and updates\r\n * internally.\r\n *\r\n * In both modes `setValue` calls `onChange` with the next value, so consumers\r\n * have a single code path regardless of mode.\r\n *\r\n * @example\r\n * const [value, setValue] = useControllableState({ value, defaultValue: '', onChange })\r\n */\r\nexport const useControllableState = <T>({\r\n value,\r\n defaultValue,\r\n onChange,\r\n}: UseControllableStateOptions<T>): UseControllableStateResult<T> => {\r\n const isControlled = value !== undefined\r\n const [internalValue, setInternalValue] = useState<T>(defaultValue)\r\n\r\n const onChangeRef = useRef(onChange)\r\n onChangeRef.current = onChange\r\n\r\n const resolvedValue = isControlled ? (value as T) : internalValue\r\n\r\n const setValue = useCallback(\r\n (next: T) => {\r\n if (!isControlled) {\r\n setInternalValue(next)\r\n }\r\n onChangeRef.current?.(next)\r\n },\r\n [isControlled]\r\n )\r\n\r\n return [resolvedValue, setValue]\r\n}\r\n","import { useId } from 'react'\r\n\r\nimport { useControllableState } from '@hooks/common/use-controllable-state/useControllableState'\r\n\r\nimport type { RadioGroupProps } from '@components/forms/radio/radio-group/RadioGroup.props'\r\n\r\ntype UseRadioGroupParams = Pick<RadioGroupProps, 'name' | 'value' | 'defaultValue' | 'onChange'>\r\n\r\ntype UseRadioGroupReturn = {\r\n /** Resolved name (provided or auto-generated). */\r\n resolvedName: string\r\n /** Currently selected value. */\r\n selectedValue: string | undefined\r\n /** Handler to update the selected value. */\r\n handleChange: (value: string) => void\r\n}\r\n\r\n/** Handles name generation and controlled/uncontrolled value state for RadioGroup. */\r\nexport const useRadioGroup = ({ name, value, defaultValue, onChange }: UseRadioGroupParams): UseRadioGroupReturn => {\r\n const generatedName = useId()\r\n const resolvedName = name ?? generatedName\r\n\r\n const [selectedValue, setSelectedValue] = useControllableState<string | undefined>({\r\n value,\r\n defaultValue: defaultValue ?? undefined,\r\n })\r\n\r\n const handleChange = (newValue: string) => {\r\n setSelectedValue(newValue)\r\n onChange?.(newValue)\r\n }\r\n\r\n return {\r\n resolvedName,\r\n selectedValue,\r\n handleChange,\r\n }\r\n}\r\n","import { type FC } from 'react'\r\n\r\nimport { Text } from '@components/foundation/text'\r\nimport { RADIO_GROUP_STYLES } from '@components/forms/radio/radio-group/RadioGroup.styles'\r\nimport { RadioGroupContext } from '@components/forms/radio/radio-group/radioGroupContext'\r\nimport { useRadioGroup } from '@components/forms/radio/radio-group/utils/useRadioGroup.utils'\r\n\r\nimport type { RadioGroupProps } from '@components/forms/radio/radio-group/RadioGroup.props'\r\n\r\n/**\r\n * Accessible radio group wrapping multiple `RadioButton` components inside a `<fieldset>`.\r\n *\r\n * Supports controlled (`value` + `onChange`) and uncontrolled (`defaultValue`) modes.\r\n * Propagates `name`, `value`, `disabled`, `size`, and `status` to all child `RadioButton` elements via context.\r\n *\r\n * @example\r\n * <RadioGroup legend=\"Preferred contact\" defaultValue=\"email\" onChange={setValue}>\r\n * <RadioButton value=\"email\" label=\"Email\" />\r\n * <RadioButton value=\"phone\" label=\"Phone\" />\r\n * </RadioGroup>\r\n */\r\nconst RadioGroup: FC<RadioGroupProps> = ({\r\n children,\r\n name,\r\n value,\r\n defaultValue,\r\n onChange,\r\n orientation = 'vertical',\r\n disabled,\r\n required,\r\n legend,\r\n size = 'md',\r\n status,\r\n error,\r\n}) => {\r\n const resolvedStatus = error ? 'error' : (status ?? 'default')\r\n const { resolvedName, selectedValue, handleChange } = useRadioGroup({ name, value, defaultValue, onChange })\r\n\r\n const groupClass = [\r\n RADIO_GROUP_STYLES.group,\r\n orientation === 'horizontal' ? RADIO_GROUP_STYLES.groupHorizontal : RADIO_GROUP_STYLES.groupVertical,\r\n ].join(' ')\r\n\r\n return (\r\n <RadioGroupContext.Provider\r\n value={{\r\n name: resolvedName,\r\n value: selectedValue,\r\n onChange: handleChange,\r\n disabled,\r\n size,\r\n status: resolvedStatus,\r\n }}\r\n >\r\n <fieldset\r\n role={'radiogroup'}\r\n aria-required={required || undefined}\r\n aria-disabled={disabled || undefined}\r\n className={RADIO_GROUP_STYLES.fieldset}\r\n disabled={disabled}\r\n >\r\n {legend !== undefined && (\r\n <legend className={RADIO_GROUP_STYLES.legend}>\r\n <Text\r\n variant={'span'}\r\n fontSize={'sm'}\r\n fontWeight={'medium'}\r\n color={'textPrimary'}\r\n >\r\n {legend}\r\n </Text>\r\n </legend>\r\n )}\r\n\r\n <div className={groupClass}>\r\n {children}\r\n </div>\r\n </fieldset>\r\n </RadioGroupContext.Provider>\r\n )\r\n}\r\n\r\nRadioGroup.displayName = 'RadioGroup'\r\n\r\nexport default RadioGroup\r\n","import { type CompoundVariant, createStyles, createVariants, type StyleWithPseudos } from '@aurora-ds/theme'\r\n\r\nimport type { SwitchColor } from '@components/forms/switch/switch.types'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\n// sm → track 2rem × 1.125rem | thumb 0.875rem | checked left: 1rem\r\n// md → track 2.75rem × 1.5rem | thumb 1.25rem | checked left: 1.375rem\r\n// lg → track 3.5rem × 2rem | thumb 1.75rem | checked left: 1.625rem\r\n\r\nexport const SWITCH_TRACK_VARIANTS = createVariants((theme) => {\r\n const c = theme.colors\r\n\r\n const colorTokens: Record<SwitchColor, string> = {\r\n primary: c.primaryMain,\r\n success: c.successMain,\r\n error: c.errorMain,\r\n warning: c.warningMain,\r\n info: c.infoMain,\r\n neutral: c.defaultMain,\r\n }\r\n\r\n const compoundVariants = (Object.keys(colorTokens) as SwitchColor[]).map((color) => ({\r\n color,\r\n checked: 'true' as const,\r\n disabled: 'false' as const,\r\n styles: { backgroundColor: colorTokens[color] },\r\n })) as CompoundVariant<{\r\n color: Record<SwitchColor, StyleWithPseudos>\r\n size: Record<'sm' | 'md' | 'lg', StyleWithPseudos>\r\n checked: Record<'true' | 'false', StyleWithPseudos>\r\n disabled: Record<'true' | 'false', StyleWithPseudos>\r\n }>[]\r\n\r\n return {\r\n base: {\r\n position: 'relative' as const,\r\n display: 'inline-block',\r\n flexShrink: 0,\r\n borderRadius: theme.radius.full,\r\n backgroundColor: c.disabledMain,\r\n cursor: 'pointer',\r\n transition: `background-color ${theme.transition.fast}, box-shadow ${theme.transition.fast}`,\r\n // Full, always-visible focus ring on the track when the hidden input is focused.\r\n '&:has(:focus-visible)': getFocusRingStyles(theme),\r\n },\r\n variants: {\r\n size: {\r\n sm: { width: '2rem', height: '1.125rem' },\r\n md: { width: '2.75rem', height: '1.5rem' },\r\n lg: { width: '3.5rem', height: '2rem' },\r\n },\r\n color: {\r\n primary: {}, success: {}, error: {}, warning: {}, info: {}, neutral: {},\r\n },\r\n checked: { true: {}, false: {} },\r\n disabled: { true: { cursor: 'not-allowed' }, false: {} },\r\n },\r\n defaultVariants: { size: 'md', color: 'primary', checked: 'false', disabled: 'false' },\r\n compoundVariants,\r\n }\r\n}, { id: 'switch-track' })\r\n\r\nexport const SWITCH_THUMB_VARIANTS = createVariants((theme) => ({\r\n base: {\r\n position: 'absolute' as const,\r\n top: '0.125rem',\r\n left: '0.125rem',\r\n borderRadius: theme.radius.full,\r\n backgroundColor: theme.colors.textInverse,\r\n boxShadow: theme.shadows.xs,\r\n transition: `left ${theme.transition.fast}`,\r\n pointerEvents: 'none' as const,\r\n },\r\n variants: {\r\n size: {\r\n sm: { width: '0.875rem', height: '0.875rem' },\r\n md: { width: '1.25rem', height: '1.25rem' },\r\n lg: { width: '1.75rem', height: '1.75rem' },\r\n },\r\n checked: { true: {}, false: {} },\r\n },\r\n defaultVariants: { size: 'md', checked: 'false' },\r\n compoundVariants: [\r\n { size: 'sm', checked: 'true', styles: { left: '1rem' } },\r\n { size: 'md', checked: 'true', styles: { left: '1.375rem' } },\r\n { size: 'lg', checked: 'true', styles: { left: '1.625rem' } },\r\n ],\r\n}), { id: 'switch-thumb' })\r\n\r\nexport const SWITCH_STYLES = createStyles((theme) => ({\r\n root: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: theme.spacing.sm,\r\n cursor: 'pointer',\r\n userSelect: 'none',\r\n '&[data-disabled]': {\r\n cursor: 'not-allowed',\r\n opacity: theme.opacity.high,\r\n },\r\n },\r\n input: {\r\n position: 'absolute',\r\n width: '1px',\r\n height: '1px',\r\n padding: '0',\r\n margin: '-1px',\r\n overflow: 'hidden',\r\n clip: 'rect(0, 0, 0, 0)',\r\n whiteSpace: 'nowrap',\r\n borderWidth: '0',\r\n },\r\n}), { id: 'switch-extra' })\r\n","import { ChangeEvent, InputHTMLAttributes, useCallback, useId } from 'react'\r\n\r\nimport { useControllableState } from '@hooks/common/use-controllable-state/useControllableState'\r\n\r\nimport type { SwitchProps } from '@components/forms/switch/Switch.props'\r\n\r\ntype UseSwitchParams = Pick<SwitchProps, 'id' | 'checked' | 'defaultChecked' | 'onChange'>\r\n\r\ntype UseSwitchReturn = {\r\n /** Resolved id (provided or generated) wiring the label to the input. */\r\n switchId: string\r\n /** Whether the switch is visually checked. */\r\n isChecked: boolean\r\n /** Props to spread on the native input — controlled or uncontrolled, never both. */\r\n inputValueProps: Pick<InputHTMLAttributes<HTMLInputElement>, 'checked' | 'defaultChecked' | 'onChange'>\r\n}\r\n\r\n/**\r\n * Business logic for the Switch component: id resolution and\r\n * controlled/uncontrolled checked state handling.\r\n */\r\nexport const useSwitch = ({ id, checked, defaultChecked, onChange }: UseSwitchParams): UseSwitchReturn => {\r\n const generatedId = useId()\r\n const switchId = id ?? generatedId\r\n\r\n const [isChecked, setChecked] = useControllableState<boolean>({\r\n value: checked,\r\n defaultValue: defaultChecked ?? false,\r\n })\r\n\r\n const handleChange = useCallback(\r\n (event: ChangeEvent<HTMLInputElement>) => {\r\n setChecked(event.target.checked)\r\n onChange?.(event)\r\n },\r\n [setChecked, onChange]\r\n )\r\n\r\n const inputValueProps = checked !== undefined\r\n ? { checked, onChange: handleChange }\r\n : { defaultChecked: defaultChecked ?? false, onChange: handleChange }\r\n\r\n return { switchId, isChecked, inputValueProps }\r\n}\r\n","import { type FC } from 'react'\r\n\r\nimport {\r\n SWITCH_STYLES,\r\n SWITCH_THUMB_VARIANTS,\r\n SWITCH_TRACK_VARIANTS,\r\n} from '@components/forms/switch/Switch.styles'\r\nimport { Text } from '@components/foundation/text'\r\nimport { useSwitch } from '@components/forms/switch/utils/useSwitch.utils'\r\n\r\nimport type { SwitchProps } from '@components/forms/switch/Switch.props'\r\n\r\n/**\r\n * Accessible toggle switch built on `<input type=\"checkbox\" role=\"switch\">`.\r\n *\r\n * Supports controlled (`checked` + `onChange`) and uncontrolled (`defaultChecked`) modes.\r\n *\r\n * @example <Switch label='Enable notifications' defaultChecked />\r\n * @example <Switch checked={isEnabled} onChange={(e) => setEnabled(e.target.checked)} color='success' size='lg' />\r\n */\r\nconst Switch: FC<SwitchProps> = (\r\n {\r\n ref,\r\n label,\r\n size = 'md',\r\n color = 'primary',\r\n id,\r\n checked,\r\n defaultChecked,\r\n disabled,\r\n onChange,\r\n ...rest\r\n }\r\n) => {\r\n const { switchId, isChecked, inputValueProps } = useSwitch({ id, checked, defaultChecked, onChange })\r\n const checkedVariant = isChecked ? 'true' : 'false'\r\n\r\n return (\r\n <label\r\n htmlFor={switchId}\r\n className={SWITCH_STYLES.root}\r\n data-disabled={disabled || undefined}\r\n >\r\n <span className={SWITCH_TRACK_VARIANTS({ size, color, checked: checkedVariant, disabled: disabled ? 'true' : 'false' })}>\r\n <input\r\n ref={ref}\r\n id={switchId}\r\n type={'checkbox'}\r\n role={'switch'}\r\n disabled={disabled}\r\n className={SWITCH_STYLES.input}\r\n {...inputValueProps}\r\n {...rest}\r\n />\r\n <span\r\n aria-hidden={'true'}\r\n className={SWITCH_THUMB_VARIANTS({ size, checked: checkedVariant })}\r\n />\r\n </span>\r\n\r\n {label !== undefined && (\r\n <Text\r\n variant={'span'}\r\n fontSize={'sm'}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n </label>\r\n )\r\n}\r\n\r\nSwitch.displayName = 'Switch'\r\n\r\nexport default Switch\r\n","import { createStyles, createVariants } from '@aurora-ds/theme'\r\n\r\nexport const TEXTFIELD_WRAPPER_VARIANTS = createVariants((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n base: {\r\n display: 'flex',\r\n // `stretch` lets the inner input fill the full height of the box so\r\n // clicking anywhere (including the vertical padding area) hits it.\r\n alignItems: 'stretch',\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n borderWidth: '1px',\r\n borderStyle: 'solid',\r\n borderRadius: theme.radius.md,\r\n backgroundColor: c.surfacePaper,\r\n // No focus ring on text inputs: focus is conveyed by the status\r\n // border colour change (see the `status` variants below).\r\n transition: `border-color ${theme.transition.fast}`,\r\n '&[data-disabled]': {\r\n opacity: theme.opacity.high,\r\n backgroundColor: c.disabledMain,\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n variants: {\r\n size: {\r\n // Horizontal padding lives on the input itself (see TEXTFIELD_INPUT_VARIANTS),\r\n // not here, so the whole bordered area is part of the clickable input.\r\n // Font-size is set on the wrapper so the native input inherits it via `fontSize: 'inherit'`.\r\n sm: { height: '2rem', fontSize: theme.fontSize.xs },\r\n md: { height: '2.5rem', fontSize: theme.fontSize.sm },\r\n lg: { height: '3rem', fontSize: theme.fontSize.md },\r\n },\r\n status: {\r\n default: {\r\n borderColor: c.borderMain,\r\n ':hover:not(:focus-within)': { borderColor: c.borderStrong },\r\n ':focus-within': { borderColor: c.primaryMain },\r\n },\r\n error: {\r\n borderColor: c.errorMain,\r\n ':focus-within': { borderColor: c.errorMain },\r\n },\r\n success: {\r\n borderColor: c.successMain,\r\n ':focus-within': { borderColor: c.successMain },\r\n },\r\n warning: {\r\n borderColor: c.warningMain,\r\n ':focus-within': { borderColor: c.warningMain },\r\n },\r\n },\r\n },\r\n defaultVariants: { size: 'md', status: 'default' },\r\n }\r\n}, { id: 'textfield-wrapper' })\r\n\r\n/**\r\n * The native input carries the horizontal padding and fills 100% of the\r\n * wrapper height, so the entire bordered box is part of the clickable input\r\n * (no dead zone between the text and the border).\r\n */\r\nexport const TEXTFIELD_INPUT_VARIANTS = createVariants((theme) => ({\r\n base: {\r\n flex: 1,\r\n minWidth: 0,\r\n height: '100%',\r\n boxSizing: 'border-box' as const,\r\n border: 'none',\r\n outline: 'none',\r\n background: 'transparent',\r\n color: theme.colors.textPrimary,\r\n fontFamily: 'inherit',\r\n fontSize: 'inherit',\r\n lineHeight: 'normal',\r\n '&::placeholder': { color: theme.colors.textTertiary },\r\n '&:disabled': { cursor: 'not-allowed', color: theme.colors.textDisabled },\r\n },\r\n variants: {\r\n size: {\r\n sm: { paddingLeft: theme.spacing.sm, paddingRight: theme.spacing.sm },\r\n md: { paddingLeft: theme.spacing.sm, paddingRight: theme.spacing.sm },\r\n lg: { paddingLeft: theme.spacing.md, paddingRight: theme.spacing.md },\r\n },\r\n },\r\n defaultVariants: { size: 'md' },\r\n}), { id: 'textfield-input' })\r\n\r\nexport const TEXTFIELD_STYLES = createStyles((theme) => ({\r\n /** Wrapper for the start icon — aligned with the input baseline. Clickable to focus the input. */\r\n startIconWrap: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexShrink: 0,\r\n paddingLeft: theme.spacing.sm,\r\n cursor: 'pointer',\r\n },\r\n /** Wrapper for end actions (custom content + optional password toggle). */\r\n endActionWrap: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexShrink: 0,\r\n paddingRight: theme.spacing.xs,\r\n gap: theme.spacing['2xs'],\r\n },\r\n}), { id: 'textfield-extra' })\r\n","import { RefCallback, RefObject, useCallback, useId, useRef, useState } from 'react'\r\n\r\nimport { useMergedRefs } from '@hooks/common/use-merged-refs/useMergedRefs'\r\n\r\nimport type { TextFieldProps } from '@components/forms/text-field/TextField.props'\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { TextFieldSize } from '@components/forms/text-field/textField.types'\r\n\r\n/** Maps field size to an Icon size token for the start icon. */\r\nconst ICON_SIZE_MAP: Record<TextFieldSize, keyof Theme['fontSize']> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n}\r\n\r\n/** Maps field size to the password toggle IconButton size. */\r\nconst ICON_BUTTON_SIZE_MAP: Record<TextFieldSize, 'sm' | 'md' | 'lg'> = {\r\n sm: 'sm',\r\n md: 'sm',\r\n lg: 'md',\r\n}\r\n\r\ntype UseTextFieldParams = {\r\n id?: string\r\n ref?: TextFieldProps['ref']\r\n type?: TextFieldProps['type']\r\n size: TextFieldSize\r\n endAction?: TextFieldProps['endAction']\r\n}\r\n\r\ntype UseTextFieldReturn = {\r\n fieldId: string\r\n helperId: string\r\n inputRef: RefObject<HTMLInputElement | null>\r\n mergedRef: RefCallback<HTMLInputElement>\r\n isPassword: boolean\r\n showPassword: boolean\r\n togglePassword: () => void\r\n resolvedType: TextFieldProps['type']\r\n iconSize: keyof Theme['fontSize']\r\n iconButtonSize: 'sm' | 'md' | 'lg'\r\n hasEndSection: boolean\r\n focusInput: () => void\r\n}\r\n\r\n/**\r\n * Business logic for the TextField component: id resolution, ref merging,\r\n * password visibility toggling and size/status derived tokens.\r\n */\r\nexport const useTextField = ({\r\n id,\r\n ref,\r\n type,\r\n size,\r\n endAction,\r\n}: UseTextFieldParams): UseTextFieldReturn => {\r\n const generatedId = useId()\r\n const fieldId = id ?? generatedId\r\n const helperId = `${fieldId}-helper`\r\n\r\n const inputRef = useRef<HTMLInputElement | null>(null)\r\n const mergedRef = useMergedRefs<HTMLInputElement>(ref, inputRef)\r\n\r\n const [showPassword, setShowPassword] = useState(false)\r\n const isPassword = type === 'password'\r\n const resolvedType = isPassword ? (showPassword ? 'text' : 'password') : type\r\n\r\n const togglePassword = useCallback(() => setShowPassword((prev) => !prev), [])\r\n const focusInput = useCallback(() => inputRef.current?.focus(), [])\r\n\r\n return {\r\n fieldId,\r\n helperId,\r\n inputRef,\r\n mergedRef,\r\n isPassword,\r\n showPassword,\r\n togglePassword,\r\n resolvedType,\r\n iconSize: ICON_SIZE_MAP[size],\r\n iconButtonSize: ICON_BUTTON_SIZE_MAP[size],\r\n hasEndSection: endAction !== undefined || isPassword,\r\n focusInput,\r\n }\r\n}\r\n","import { FC } from 'react'\r\n\r\nimport EyeIcon from '@resources/assets/icons/EyeIcon.svg?react'\r\nimport EyeSlashIcon from '@resources/assets/icons/EyeSlashIcon.svg?react'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Text } from '@components/foundation/text'\r\nimport { IconButton } from '@components/actions/icon-button'\r\nimport { Stack } from '@components/layout/stack'\r\nimport { FormHelperText } from '@components/forms/_common/form-helper-text'\r\nimport { TEXTFIELD_INPUT_VARIANTS, TEXTFIELD_STYLES, TEXTFIELD_WRAPPER_VARIANTS } from '@components/forms/text-field/TextField.styles'\r\nimport { useTextField } from '@components/forms/text-field/utils/useTextField.utils'\r\n\r\nimport type { TextFieldProps } from '@components/forms/text-field/TextField.props'\r\n\r\n/**\r\n * Full-featured text input with label, helper text, icons and end actions.\r\n *\r\n * Supports all native input types. When `type` is `'password'`, a visibility\r\n * toggle is automatically injected as an end action.\r\n *\r\n * @example <TextField label=\"Email\" placeholder=\"you@example.com\" />\r\n * @example <TextField label=\"Password\" type=\"password\" helperText=\"Min. 8 characters.\" />\r\n * @example <TextField label=\"Name\" status=\"error\" helperText=\"This field is required.\" />\r\n * @example <TextField label=\"Search\" startIcon={SearchIcon} endAction={<ClearButton />} />\r\n */\r\nconst TextField: FC<TextFieldProps> = ({\r\n ref,\r\n label,\r\n helperText,\r\n size = 'md',\r\n status = 'default',\r\n startIcon: StartIcon,\r\n endAction,\r\n type,\r\n id,\r\n disabled,\r\n required,\r\n // ── Layout props → outer Stack wrapper (NOT the native <input>) ──\r\n width = '100%',\r\n minWidth = 0,\r\n maxWidth,\r\n flex,\r\n flexGrow,\r\n flexShrink,\r\n flexBasis,\r\n ...rest\r\n}) => {\r\n const {\r\n fieldId,\r\n helperId,\r\n mergedRef,\r\n isPassword,\r\n showPassword,\r\n togglePassword,\r\n resolvedType,\r\n iconSize,\r\n iconButtonSize,\r\n hasEndSection,\r\n focusInput,\r\n } = useTextField({ id, ref, type, size, endAction })\r\n\r\n // Associate the label with the input via `aria-labelledby` (and NOT `htmlFor`)\r\n // so the label stays accessible without natively focusing the input on click —\r\n // only clicking inside the bordered box should focus the field.\r\n const labelId = `${fieldId}-label`\r\n\r\n return (\r\n <Stack\r\n flexDirection={'column'}\r\n gap={'xs'}\r\n width={width}\r\n minWidth={minWidth}\r\n maxWidth={maxWidth}\r\n flex={flex}\r\n flexGrow={flexGrow}\r\n flexShrink={flexShrink}\r\n flexBasis={flexBasis}\r\n >\r\n {label !== undefined && (\r\n <Text\r\n variant={'label'}\r\n fontSize={'sm'}\r\n fontWeight={'medium'}\r\n color={'textSecondary'}\r\n id={labelId}\r\n >\r\n {label}\r\n {required && (\r\n <Text\r\n variant={'span'}\r\n color={'errorMain'}\r\n aria-hidden={true}\r\n >\r\n {' *'}\r\n </Text>\r\n )}\r\n </Text>\r\n )}\r\n\r\n <div\r\n className={TEXTFIELD_WRAPPER_VARIANTS({ size, status })}\r\n data-disabled={disabled || undefined}\r\n >\r\n {StartIcon && (\r\n <span\r\n className={TEXTFIELD_STYLES.startIconWrap}\r\n onClick={focusInput}\r\n aria-hidden={true}\r\n >\r\n <Icon\r\n icon={StartIcon}\r\n size={iconSize}\r\n strokeColor={'textSecondary'}\r\n />\r\n </span>\r\n )}\r\n\r\n <input\r\n ref={mergedRef}\r\n id={fieldId}\r\n type={resolvedType}\r\n disabled={disabled}\r\n required={required}\r\n aria-required={required || undefined}\r\n aria-invalid={status === 'error' || undefined}\r\n aria-labelledby={label !== undefined ? labelId : undefined}\r\n aria-describedby={helperText !== undefined ? helperId : undefined}\r\n aria-errormessage={status === 'error' && helperText !== undefined ? helperId : undefined}\r\n className={TEXTFIELD_INPUT_VARIANTS({ size })}\r\n {...rest}\r\n />\r\n\r\n {hasEndSection && (\r\n <span className={TEXTFIELD_STYLES.endActionWrap}>\r\n {endAction}\r\n {isPassword && (\r\n <IconButton\r\n icon={showPassword ? EyeSlashIcon : EyeIcon}\r\n ariaLabel={showPassword ? 'Hide password' : 'Show password'}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={iconButtonSize}\r\n type={'button'}\r\n onClick={togglePassword}\r\n />\r\n )}\r\n </span>\r\n )}\r\n </div>\r\n\r\n {helperText !== undefined && (\r\n <FormHelperText\r\n id={helperId}\r\n status={status}\r\n >\r\n {helperText}\r\n </FormHelperText>\r\n )}\r\n </Stack>\r\n )\r\n}\r\n\r\nTextField.displayName = 'TextField'\r\n\r\nexport default TextField\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\n/**\r\n * Vertical padding (in px) applied to the top and bottom of the menu panel.\r\n * Matches `theme.spacing.xs` (0.25rem = 4px at 16px base font).\r\n * Exported so submenus can offset their position upward by this amount to align\r\n * their first item with the trigger item.\r\n */\r\nexport const MENU_PANEL_PADDING_Y_PX = 5\r\n\r\nexport const MENU_PANEL_STYLES = createStyles((theme) => ({\r\n backdrop: {\r\n position: 'fixed' as const,\r\n inset: 0,\r\n zIndex: theme.zIndex.dropdown - 1,\r\n },\r\n panel: {\r\n position: 'fixed' as const,\r\n zIndex: theme.zIndex.dropdown,\r\n backgroundColor: theme.colors.surfacePaper,\r\n borderRadius: theme.radius.lg,\r\n border: `1px solid ${theme.colors.borderMain}`,\r\n boxShadow: theme.shadows.md,\r\n overflowY: 'auto' as const,\r\n paddingTop: theme.spacing.xs,\r\n paddingBottom: theme.spacing.xs,\r\n },\r\n}), { id: 'menu-panel' })\r\n","import { useEffect, useRef } from 'react'\nimport type { KeyPressMap, UseKeyPressOptions } from '@hooks/common/use-key-press/useKeyPress.types'\n\n/**\n * Listens to keyboard events and dispatches to the matching handler in `keyMap`.\n * A single hook call can handle multiple keys.\n *\n * @example\n * `\ts\n * useKeyPress(\n * { ArrowDown: onDown, ArrowUp: onUp, Enter: onEnter, Escape: onClose },\n * { enabled: isOpen }\n * )\n * `\n */\nexport const useKeyPress = (\n keyMap: KeyPressMap,\n { target, enabled = true }: UseKeyPressOptions = {}\n): void => {\n const mapRef = useRef<KeyPressMap>(keyMap)\n\n useEffect(() => {\n mapRef.current = keyMap\n })\n\n useEffect(() => {\n if (!enabled) {return}\n\n const eventTarget = target ?? document\n const listener = (event: Event): void => {\n const keyboardEvent = event as KeyboardEvent\n const handler = mapRef.current[keyboardEvent.key]\n handler?.(keyboardEvent)\n }\n\n eventTarget.addEventListener('keydown', listener)\n return () => eventTarget.removeEventListener('keydown', listener)\n }, [enabled, target])\n}\n","import { CSSProperties, useCallback, useEffect, useLayoutEffect, useState } from 'react'\r\nimport type { UseMenuPositionOptions, UseMenuPositionResult } from '@hooks/components/overlay/use-menu-position/useMenuPosition.types'\r\n\r\nconst VIEWPORT_MARGIN_PX = 8\r\n\r\n/** Floor applied to the menu width so dropdowns never feel cramped. */\r\nconst MENU_MIN_WIDTH_PX = 224\r\n\r\n/**\r\n * Computes and continuously updates the `position: fixed` style for a menu panel.\r\n *\r\n * Positioning strategy:\r\n * - `placement=\"bottom\"` (default): opens below the anchor; overflows are shifted up.\r\n * - `placement=\"top\"`: opens above the anchor; flips to bottom when no room.\r\n * - `placement=\"right\"`: opens to the right of the anchor; flips to the left when no room.\r\n * - `placement=\"left\"`: opens to the left of the anchor; flips to the right when no room.\r\n *\r\n * In all cases the vertical position is clamped inside the viewport.\r\n *\r\n * Scroll handling: the page scroll is locked while the menu is open (see\r\n * `MenuPanel`), so the anchor cannot move out from under the menu. As a safety\r\n * net for nested scroll containers, the menu re-positions on scroll/resize so it\r\n * always stays attached to its anchor.\r\n *\r\n * Uses a two-pass strategy: first render with `menuHeight = 0`, then a rAF\r\n * recompute with the actual rendered size to apply any overflow offset.\r\n */\r\nexport const useMenuPosition = ({\r\n anchorEl,\r\n open,\r\n menuRef,\r\n minWidth,\r\n gap = 4,\r\n verticalOffset = 0,\r\n placement = 'bottom',\r\n}: UseMenuPositionOptions): UseMenuPositionResult => {\r\n const [style, setStyle] = useState<CSSProperties>({})\r\n // Stays false until the rAF second pass has run with the real panel dimensions.\r\n // Keeps the panel invisible during the initial style={} state and the first\r\n // pass (menuHeight = 0) to prevent the position-jump flickering.\r\n const [isPositioned, setIsPositioned] = useState(false)\r\n\r\n const computePosition = useCallback(() => {\r\n if (!anchorEl) {return}\r\n\r\n const anchor = anchorEl.getBoundingClientRect()\r\n const menuEl = menuRef.current\r\n const menuHeight = menuEl?.offsetHeight ?? 0\r\n const menuWidth = menuEl?.offsetWidth ?? 0\r\n const viewportRight = window.innerWidth - VIEWPORT_MARGIN_PX\r\n const viewportBottom = window.innerHeight - VIEWPORT_MARGIN_PX\r\n\r\n if (placement === 'right' || placement === 'left') {\r\n // --- Vertical: align with the anchor top, offset upward by verticalOffset\r\n // (e.g. the panel's paddingTop) so the first item lines up with the trigger,\r\n // then clamp inside the viewport. ---\r\n let top = anchor.top - verticalOffset\r\n if (menuHeight > 0 && top + menuHeight > viewportBottom) {\r\n top = Math.max(VIEWPORT_MARGIN_PX, viewportBottom - menuHeight)\r\n }\r\n\r\n // --- Horizontal: open to the preferred side, flip to the opposite when no room ---\r\n let left: number\r\n if (placement === 'right') {\r\n left = anchor.right + gap\r\n if (menuWidth > 0 && left + menuWidth > viewportRight) {\r\n const flippedLeft = anchor.left - gap - menuWidth\r\n left = flippedLeft >= VIEWPORT_MARGIN_PX\r\n ? flippedLeft\r\n : Math.max(VIEWPORT_MARGIN_PX, viewportRight - menuWidth)\r\n }\r\n } else {\r\n // placement === 'left'\r\n left = anchor.left - gap - menuWidth\r\n if (menuWidth > 0 && left < VIEWPORT_MARGIN_PX) {\r\n const flippedLeft = anchor.right + gap\r\n left = flippedLeft + menuWidth <= viewportRight\r\n ? flippedLeft\r\n : Math.max(VIEWPORT_MARGIN_PX, viewportRight - menuWidth)\r\n }\r\n }\r\n\r\n setStyle({ top, left, minWidth: minWidth ?? MENU_MIN_WIDTH_PX })\r\n return\r\n }\r\n\r\n if (placement === 'top') {\r\n // --- Vertical: open above, flip to bottom when no room ---\r\n let top = anchor.top - gap - menuHeight\r\n if (menuHeight > 0 && top < VIEWPORT_MARGIN_PX) {\r\n const flippedTop = anchor.bottom + gap\r\n top = flippedTop + menuHeight <= viewportBottom\r\n ? flippedTop\r\n : Math.max(VIEWPORT_MARGIN_PX, viewportBottom - menuHeight)\r\n }\r\n\r\n // --- Horizontal ---\r\n const fallbackMinWidth = Math.max(anchor.width, MENU_MIN_WIDTH_PX)\r\n const resolvedMinWidth = typeof minWidth === 'number' ? minWidth : fallbackMinWidth\r\n const effectiveWidth = Math.max(menuWidth, resolvedMinWidth)\r\n const maxLeft = window.innerWidth - effectiveWidth - VIEWPORT_MARGIN_PX\r\n const left = Math.max(VIEWPORT_MARGIN_PX, Math.min(anchor.left, maxLeft))\r\n\r\n setStyle({ top, left, minWidth: minWidth ?? fallbackMinWidth })\r\n return\r\n }\r\n\r\n // --- placement === 'bottom' ---\r\n // --- Vertical ---\r\n const preferredTop = anchor.bottom + gap\r\n let top = preferredTop\r\n if (menuHeight > 0 && preferredTop + menuHeight > viewportBottom) {\r\n top = Math.max(VIEWPORT_MARGIN_PX, viewportBottom - menuHeight)\r\n }\r\n\r\n // --- Horizontal ---\r\n const fallbackMinWidth = Math.max(anchor.width, MENU_MIN_WIDTH_PX)\r\n const resolvedMinWidth = typeof minWidth === 'number' ? minWidth : fallbackMinWidth\r\n const effectiveWidth = Math.max(menuWidth, resolvedMinWidth)\r\n const maxLeft = window.innerWidth - effectiveWidth - VIEWPORT_MARGIN_PX\r\n const left = Math.max(VIEWPORT_MARGIN_PX, Math.min(anchor.left, maxLeft))\r\n\r\n setStyle({ top, left, minWidth: minWidth ?? fallbackMinWidth })\r\n }, [anchorEl, menuRef, minWidth, gap, verticalOffset, placement])\r\n\r\n // First pass: compute as soon as the menu opens (menuHeight = 0)\r\n useLayoutEffect(() => {\r\n if (open) {computePosition()}\r\n else {\r\n setStyle({})\r\n setIsPositioned(false)\r\n }\r\n }, [open, computePosition])\r\n\r\n // Second pass: recompute after the panel renders to get actual height/width,\r\n // then mark as positioned so the panel becomes visible.\r\n useEffect(() => {\r\n if (!open) {return}\r\n const id = requestAnimationFrame(() => {\r\n computePosition()\r\n setIsPositioned(true)\r\n })\r\n return () => cancelAnimationFrame(id)\r\n }, [open, computePosition])\r\n\r\n // Keep the menu glued to its anchor on scroll (nested containers) and resize.\r\n useEffect(() => {\r\n if (!open) {return}\r\n window.addEventListener('scroll', computePosition, true)\r\n window.addEventListener('resize', computePosition)\r\n return () => {\r\n window.removeEventListener('scroll', computePosition, true)\r\n window.removeEventListener('resize', computePosition)\r\n }\r\n }, [open, computePosition])\r\n\r\n // Hide the panel until it is correctly positioned to avoid the position-jump\r\n // flicker. `opacity` (rather than `visibility`/`display`) is used so the panel\r\n // stays in the accessibility tree and remains interactive — only its paint is\r\n // deferred for a single frame.\r\n return {\r\n style: isPositioned ? style : { ...style, opacity: 0 },\r\n }\r\n}\r\n","import { createContext } from 'react'\r\n\r\n/** Custom DOM event fired on a submenu trigger item to request it opens. */\r\nexport const OPEN_SUBMENU_EVENT = 'menu:open-submenu'\r\n\r\nexport type MenuContextValue = {\r\n /**\r\n * Called by a nested submenu (via its trigger item) when its open state\r\n * changes, so the parent menu can pause its own keyboard handling while a\r\n * descendant submenu is open. Only the innermost open menu reacts to keys.\r\n */\r\n setChildOpen?: (open: boolean) => void\r\n /**\r\n * Closes the whole menu tree (root menu). Propagated unchanged down to every\r\n * nested submenu so that clicking a leaf item can dismiss the entire menu.\r\n */\r\n closeMenu?: () => void\r\n}\r\n\r\n/**\r\n * Propagates submenu-open coordination and the root close handler down the menu\r\n * tree so that only the innermost open menu handles keyboard navigation and any\r\n * item can close the whole menu.\r\n */\r\nexport const MenuContext = createContext<MenuContextValue>({})\r\n\r\nexport type MenuNavigationContextValue = {\r\n /**\r\n * Id of the item currently highlighted by keyboard navigation within the\r\n * owning panel. Each `MenuItem` compares it to its own id to render\r\n * `data-focused`, and the panel exposes it via `aria-activedescendant`.\r\n * Driven entirely by React state — no direct DOM mutation — so it can never\r\n * desync from the rendered items.\r\n */\r\n focusedId?: string\r\n}\r\n\r\n/**\r\n * Scoped per `MenuPanel`: shares the keyboard-focused item id with that panel's\r\n * items only. Nested submenus provide their own value, so each panel manages its\r\n * own roving focus independently.\r\n */\r\nexport const MenuNavigationContext = createContext<MenuNavigationContextValue>({})\r\n","import { CSSProperties, RefObject, useCallback, useEffect, useRef, useState } from 'react'\r\n\r\nimport { useKeyPress } from '@hooks/common/use-key-press/useKeyPress'\r\nimport { useMenuPosition } from '@hooks/components/overlay/use-menu-position/useMenuPosition'\r\nimport { OPEN_SUBMENU_EVENT } from '@components/overlay/menu/MenuContext'\r\n\r\nimport type { MenuPlacement } from '@hooks/components/overlay/use-menu-position/useMenuPosition.types'\r\n\r\ntype UseMenuPanelParams = {\r\n /** Whether the menu is visible. */\r\n open: boolean\r\n /** Called when the menu should close (Escape, outside scroll…). */\r\n onClose: () => void\r\n /** Reference element used to position the menu. */\r\n anchorEl?: HTMLElement | null\r\n /** Minimum width override. */\r\n minWidth?: number | string\r\n /** Where the menu opens relative to the anchor. @default 'bottom' */\r\n placement?: MenuPlacement\r\n /**\r\n * Vertical offset in px applied for `'right'`/`'left'` placements — shifts\r\n * the panel upward so its first item aligns with the trigger item.\r\n * @default 0\r\n */\r\n verticalOffset?: number\r\n /**\r\n * Called when ArrowLeft is pressed — used by submenus to close themselves\r\n * and return focus to their trigger.\r\n */\r\n onArrowLeft?: () => void\r\n}\r\n\r\ntype UseMenuPanelReturn = {\r\n /** Ref to attach to the menu panel. */\r\n panelRef: RefObject<HTMLDivElement | null>\r\n /** Computed inline positioning style for the panel. */\r\n style: CSSProperties\r\n /**\r\n * Id of the keyboard-focused item — used both for `aria-activedescendant`\r\n * and shared with items (via context) so each renders its own `data-focused`.\r\n */\r\n focusedId: string | undefined\r\n /**\r\n * Setter passed down via context so a child submenu can pause this panel's\r\n * keyboard handling while it is open.\r\n */\r\n setChildOpen: (open: boolean) => void\r\n}\r\n\r\n/** CSS selector matching the focusable items of a menu/listbox panel. */\r\nconst ITEM_SELECTOR = '[role^=\"menuitem\"]:not([data-disabled]), [role=\"option\"]:not([data-disabled])'\r\n\r\n/**\r\n * Business logic for a menu panel: positioning, roving keyboard navigation\r\n * (Arrow/Home/End/Enter/Space), Escape-to-close, opening submenus (ArrowRight)\r\n * and pausing keyboard while a descendant submenu is open. Uses the WAI-ARIA\r\n * `menu` / `menuitem` pattern.\r\n *\r\n * Focus is tracked as a stable item **id** in React state (never by mutating the\r\n * DOM). The id is shared with items through `MenuNavigationContext` so each item\r\n * renders its own `data-focused`, and surfaced as the panel's\r\n * `aria-activedescendant`. Item order is read from the DOM (read-only) so the\r\n * logic stays correct across groups and dynamic content.\r\n */\r\nexport const useMenuPanel = ({\r\n open,\r\n onClose,\r\n anchorEl,\r\n minWidth,\r\n placement = 'bottom',\r\n verticalOffset = 0,\r\n onArrowLeft,\r\n}: UseMenuPanelParams): UseMenuPanelReturn => {\r\n const panelRef = useRef<HTMLDivElement>(null)\r\n const [focusedId, setFocusedId] = useState<string | undefined>(undefined)\r\n // True while a descendant submenu is open → pause this panel's keyboard nav.\r\n const [childOpen, setChildOpen] = useState(false)\r\n\r\n const { style } = useMenuPosition({ anchorEl, open, menuRef: panelRef, minWidth, placement, verticalOffset })\r\n\r\n /** Read this panel's focusable items in DOM order (excluding nested submenus). */\r\n const getItems = useCallback((): HTMLElement[] => {\r\n const panel = panelRef.current\r\n if (!panel) {return []}\r\n return Array.from(panel.querySelectorAll<HTMLElement>(ITEM_SELECTOR))\r\n .filter((el) => el.closest('[data-menu-panel]') === panel)\r\n }, [])\r\n\r\n /** Returns the currently focused item element (if still present). */\r\n const getFocusedItem = useCallback(\r\n (): HTMLElement | undefined => getItems().find((el) => el.id === focusedId),\r\n [getItems, focusedId]\r\n )\r\n\r\n /** Move the roving focus by `step`, wrapping around. Starts from the edge when nothing is focused. */\r\n const moveFocus = useCallback((step: 1 | -1): void => {\r\n const items = getItems()\r\n if (items.length === 0) {return}\r\n const current = items.findIndex((el) => el.id === focusedId)\r\n const next = current === -1\r\n ? (step === 1 ? 0 : items.length - 1)\r\n : (current + step + items.length) % items.length\r\n setFocusedId(items[next]?.id)\r\n }, [getItems, focusedId])\r\n\r\n // On open: focus the panel and pre-select a checked/selected item if any.\r\n // When nothing is pre-selected, leave focusedId undefined so no item appears\r\n // highlighted on mouse-open — the first ArrowDown/Up starts navigation.\r\n useEffect(() => {\r\n if (!open) {\r\n setFocusedId(undefined)\r\n return\r\n }\r\n const raf = requestAnimationFrame(() => {\r\n panelRef.current?.focus()\r\n const preselected = getItems().find(\r\n (el) => el.getAttribute('aria-checked') === 'true' || el.hasAttribute('data-selected')\r\n )\r\n setFocusedId(preselected?.id)\r\n })\r\n return () => cancelAnimationFrame(raf)\r\n }, [open, getItems])\r\n\r\n // Keep the focused item scrolled into view (read-only DOM access).\r\n useEffect(() => {\r\n if (!open || !focusedId) {return}\r\n getFocusedItem()?.scrollIntoView({ block: 'nearest' })\r\n }, [open, focusedId, getFocusedItem])\r\n\r\n // Switching to the mouse clears the keyboard highlight (hover takes over).\r\n useEffect(() => {\r\n const panel = panelRef.current\r\n if (!panel || !open) {return}\r\n const clearFocus = (): void => setFocusedId(undefined)\r\n panel.addEventListener('mousemove', clearFocus)\r\n return () => panel.removeEventListener('mousemove', clearFocus)\r\n }, [open])\r\n\r\n useKeyPress(\r\n {\r\n Escape: (e) => {\r\n e.preventDefault()\r\n onClose()\r\n },\r\n ArrowDown: (e) => {\r\n e.preventDefault()\r\n moveFocus(1)\r\n },\r\n ArrowUp: (e) => {\r\n e.preventDefault()\r\n moveFocus(-1)\r\n },\r\n ArrowRight: (e) => {\r\n // Open the submenu of the focused item (if any).\r\n const focused = getFocusedItem()\r\n if (focused?.getAttribute('aria-haspopup') === 'menu') {\r\n e.preventDefault()\r\n focused.dispatchEvent(new CustomEvent(OPEN_SUBMENU_EVENT))\r\n }\r\n },\r\n ArrowLeft: (e) => {\r\n if (onArrowLeft) {\r\n e.preventDefault()\r\n onArrowLeft()\r\n }\r\n },\r\n Home: (e) => {\r\n e.preventDefault()\r\n setFocusedId(getItems()[0]?.id)\r\n },\r\n End: (e) => {\r\n e.preventDefault()\r\n const items = getItems()\r\n setFocusedId(items[items.length - 1]?.id)\r\n },\r\n Enter: (e) => {\r\n e.preventDefault()\r\n getFocusedItem()?.click()\r\n },\r\n ' ': (e) => {\r\n e.preventDefault()\r\n getFocusedItem()?.click()\r\n },\r\n },\r\n { enabled: open && !childOpen }\r\n )\r\n\r\n return { panelRef, style, focusedId, setChildOpen }\r\n}\r\n","import { useEffect } from 'react'\r\n\r\n/** Returns the visible scrollbar width (0 with overlay/inset scrollbars like macOS). */\r\nconst getScrollbarWidth = (): number => window.innerWidth - document.documentElement.clientWidth\r\n\r\n/**\r\n * Returns every element that is currently scrollable, skipping entire subtrees\r\n * rooted at `[data-scroll-lock-ignore]` (overlays: menus, dialogs, drawers…).\r\n *\r\n * Uses a TreeWalker so ignored subtrees are never visited at all.\r\n * `getComputedStyle` is called only for elements whose scroll dimensions already\r\n * confirm overflow — avoiding expensive style recalculation for every node.\r\n *\r\n * `<html>` is checked separately; its computed `overflow` is often `'visible'`\r\n * even when the full page scrolls.\r\n */\r\nconst getScrollableElements = (): HTMLElement[] => {\r\n const scrollable: HTMLElement[] = []\r\n\r\n // Document-level scroll lives on <html>.\r\n if (document.documentElement.scrollHeight > window.innerHeight) {\r\n scrollable.push(document.documentElement)\r\n }\r\n\r\n const walker = document.createTreeWalker(\r\n document.body,\r\n NodeFilter.SHOW_ELEMENT,\r\n {\r\n acceptNode(node) {\r\n const el = node as HTMLElement\r\n\r\n // Reject entire overlay subtrees in one step (menus, dialogs, drawers…).\r\n if (el.hasAttribute('data-scroll-lock-ignore')) {\r\n return NodeFilter.FILTER_REJECT\r\n }\r\n\r\n // Cheap dimension pre-check — skips getComputedStyle for most nodes.\r\n const mayScrollY = el.scrollHeight > el.clientHeight\r\n const mayScrollX = el.scrollWidth > el.clientWidth\r\n\r\n if (!mayScrollY && !mayScrollX) {\r\n return NodeFilter.FILTER_SKIP\r\n }\r\n\r\n // Confirm that overflow is actually set to scroll/auto.\r\n const { overflowY, overflowX } = window.getComputedStyle(el)\r\n const scrollsY = mayScrollY && (overflowY === 'scroll' || overflowY === 'auto')\r\n const scrollsX = mayScrollX && (overflowX === 'scroll' || overflowX === 'auto')\r\n\r\n return scrollsY || scrollsX ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP\r\n },\r\n }\r\n )\r\n\r\n let node: Node | null\r\n while ((node = walker.nextNode())) {\r\n scrollable.push(node as HTMLElement)\r\n }\r\n\r\n return scrollable\r\n}\r\n\r\n/**\r\n * Locks **all** currently scrollable elements while `active` is true.\r\n *\r\n * Instead of assuming the scroll lives on `document.body`, this hook discovers\r\n * every element with real overflow and freezes it with `overflow: hidden`.\r\n * Elements marked `data-scroll-lock-ignore` — and their entire subtrees — are\r\n * skipped so overlays (menus, dialogs, drawers…) remain scrollable internally.\r\n *\r\n * For `<html>`, `paddingRight` is compensated when a native scrollbar is present\r\n * to prevent horizontal layout shift.\r\n *\r\n * All original styles are restored on cleanup.\r\n *\r\n * @example useBodyScrollLock(isMenuOpen)\r\n */\r\nexport const useBodyScrollLock = (active: boolean): void => {\r\n useEffect(() => {\r\n if (!active) {return}\r\n\r\n const scrollbarWidth = getScrollbarWidth()\r\n const elements = getScrollableElements()\r\n\r\n const restorers = elements.map((el) => {\r\n const savedOverflow = el.style.overflow\r\n const savedPaddingRight = el.style.paddingRight\r\n\r\n el.style.overflow = 'hidden'\r\n\r\n // Preserve the scrollbar gutter on the document root.\r\n if (el === document.documentElement && scrollbarWidth > 0) {\r\n const currentPadding = parseFloat(window.getComputedStyle(el).paddingRight) || 0\r\n el.style.paddingRight = `${currentPadding + scrollbarWidth}px`\r\n }\r\n\r\n return () => {\r\n el.style.overflow = savedOverflow\r\n if (el === document.documentElement && scrollbarWidth > 0) {\r\n el.style.paddingRight = savedPaddingRight\r\n }\r\n }\r\n })\r\n\r\n return () => restorers.forEach((restore) => restore())\r\n }, [active])\r\n}\r\n","import { FC, useContext, useMemo } from 'react'\r\nimport { createPortal } from 'react-dom'\r\nimport { MENU_PANEL_STYLES, MENU_PANEL_PADDING_Y_PX } from '@components/overlay/menu/menu-panel/MenuPanel.styles'\r\nimport { useMenuPanel } from '@components/overlay/menu/menu-panel/utils/useMenuPanel.utils'\r\nimport { MenuContext, MenuNavigationContext, type MenuContextValue, type MenuNavigationContextValue } from '@components/overlay/menu/MenuContext'\r\nimport { useBodyScrollLock } from '@hooks/common/use-body-scroll-lock/useBodyScrollLock'\r\nimport type { MenuPanelProps } from '@components/overlay/menu/menu-panel/MenuPanel.props'\r\n\r\n/**\r\n * Core menu surface used by both the root `Menu` and nested submenus.\r\n *\r\n * Renders a `role=\"menu\"` panel into a portal, wires keyboard navigation via\r\n * `useMenuPanel`, and (for the root only) a click-catching backdrop and a body\r\n * scroll lock. Locking the background scroll (the same strategy as Material UI)\r\n * keeps the menu glued to its anchor instead of drifting or detaching on scroll,\r\n * while the panel itself still scrolls internally when its content overflows.\r\n * The root close handler is propagated unchanged to every submenu so any leaf\r\n * item can dismiss the whole menu.\r\n */\r\nconst MenuPanel: FC<MenuPanelProps> = ({\r\n open,\r\n onClose,\r\n anchorEl,\r\n minWidth,\r\n maxHeight = '20rem',\r\n placement = 'bottom',\r\n isSubmenu = false,\r\n id,\r\n role = 'menu',\r\n 'aria-label': ariaLabel,\r\n 'aria-labelledby': ariaLabelledBy,\r\n onArrowLeft,\r\n onMouseEnter,\r\n onMouseLeave,\r\n children,\r\n}) => {\r\n const parentContext = useContext(MenuContext)\r\n // Submenus close the entire menu tree via the inherited root close handler.\r\n const closeMenu = isSubmenu ? parentContext.closeMenu ?? onClose : onClose\r\n\r\n // Only the root menu locks the page scroll (submenus inherit the locked state).\r\n useBodyScrollLock(open && !isSubmenu)\r\n\r\n const { panelRef, style, focusedId, setChildOpen } = useMenuPanel({\r\n open,\r\n onClose,\r\n anchorEl,\r\n minWidth,\r\n placement,\r\n // Shift submenus upward by the panel's paddingTop so the first item aligns\r\n // visually with the trigger item in the parent menu.\r\n verticalOffset: isSubmenu ? MENU_PANEL_PADDING_Y_PX : 0,\r\n onArrowLeft,\r\n })\r\n\r\n const contextValue = useMemo<MenuContextValue>(\r\n () => ({ setChildOpen, closeMenu }),\r\n [setChildOpen, closeMenu]\r\n )\r\n\r\n const navigationValue = useMemo<MenuNavigationContextValue>(\r\n () => ({ focusedId }),\r\n [focusedId]\r\n )\r\n\r\n if (!open) {return null}\r\n\r\n return createPortal(\r\n <MenuContext.Provider value={contextValue}>\r\n {!isSubmenu && (\r\n <div\r\n className={MENU_PANEL_STYLES.backdrop}\r\n onClick={onClose}\r\n aria-hidden={true}\r\n />\r\n )}\r\n <div\r\n ref={panelRef}\r\n id={id}\r\n role={role}\r\n tabIndex={-1}\r\n data-menu-panel={true}\r\n data-scroll-lock-ignore={true}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-activedescendant={focusedId}\r\n className={MENU_PANEL_STYLES.panel}\r\n style={{ ...style, maxHeight, outline: 'none' }}\r\n onMouseEnter={onMouseEnter}\r\n onMouseLeave={onMouseLeave}\r\n >\r\n <MenuNavigationContext.Provider value={navigationValue}>\r\n {children}\r\n </MenuNavigationContext.Provider>\r\n </div>\r\n </MenuContext.Provider>,\r\n document.body\r\n )\r\n}\r\n\r\nMenuPanel.displayName = 'MenuPanel'\r\n\r\nexport default MenuPanel\r\n","import { useId } from 'react'\r\n\r\ntype UseMenuGroupReturn = {\r\n /** Generated id linking the group label to its list. */\r\n labelId: string\r\n /** Value for the list's `aria-labelledby` (undefined when the group has no label). */\r\n labelledBy: string | undefined\r\n}\r\n\r\n/**\r\n * Business logic for a `MenuGroup`: generates a stable id so the group's list can\r\n * be associated with its (optional) visible label via `aria-labelledby`.\r\n */\r\nexport const useMenuGroup = (hasLabel: boolean): UseMenuGroupReturn => {\r\n const labelId = useId()\r\n return { labelId, labelledBy: hasLabel ? labelId : undefined }\r\n}\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const MENU_GROUP_STYLES = createStyles((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'column' as const,\r\n },\r\n divider: {\r\n height: '1px',\r\n backgroundColor: c.borderMain,\r\n marginTop: theme.spacing.xs,\r\n marginBottom: theme.spacing.xs,\r\n marginLeft: theme.spacing.md,\r\n marginRight: theme.spacing.md,\r\n },\r\n label: {\r\n paddingTop: theme.spacing.xs,\r\n paddingBottom: theme.spacing.xs,\r\n paddingLeft: theme.spacing.md,\r\n paddingRight: theme.spacing.md,\r\n color: c.textTertiary,\r\n fontSize: theme.fontSize.xs,\r\n fontWeight: theme.fontWeight.medium,\r\n userSelect: 'none' as const,\r\n textTransform: 'uppercase' as const,\r\n letterSpacing: '0.05em',\r\n },\r\n list: {\r\n listStyle: 'none',\r\n margin: '0',\r\n padding: '0',\r\n display: 'flex',\r\n flexDirection: 'column' as const,\r\n },\r\n }\r\n}, { id: 'menu-group' })\r\n","import { type FC } from 'react'\r\nimport { useMenuGroup } from '@components/overlay/menu/menu-group/utils/useMenuGroup.utils'\r\nimport { MENU_GROUP_STYLES } from '@components/overlay/menu/menu-group/MenuGroup.styles'\r\nimport type { MenuGroupProps } from '@components/overlay/menu/menu-group/MenuGroup.props'\r\n\r\nconst MenuGroup: FC<MenuGroupProps> = ({\r\n label,\r\n divider,\r\n children,\r\n}) => {\r\n const { labelId, labelledBy } = useMenuGroup(label !== undefined)\r\n\r\n return (\r\n <div className={MENU_GROUP_STYLES.root}>\r\n {divider && (\r\n <div\r\n className={MENU_GROUP_STYLES.divider}\r\n role={'separator'}\r\n aria-hidden={true}\r\n />\r\n )}\r\n {label !== undefined && (\r\n <span\r\n id={labelId}\r\n className={MENU_GROUP_STYLES.label}\r\n aria-hidden={true}\r\n >\r\n {label}\r\n </span>\r\n )}\r\n <ul\r\n className={MENU_GROUP_STYLES.list}\r\n role={'group'}\r\n aria-labelledby={labelledBy}\r\n >\r\n {children}\r\n </ul>\r\n </div>\r\n )\r\n}\r\n\r\nMenuGroup.displayName = 'MenuGroup'\r\n\r\nexport default MenuGroup\r\n","import { useCallback, useContext, useEffect, useRef, useState, type MouseEvent, type Ref, type RefObject } from 'react'\r\nimport { useMergedRefs } from '@hooks/common/use-merged-refs/useMergedRefs'\r\nimport { MenuContext, OPEN_SUBMENU_EVENT } from '@components/overlay/menu/MenuContext'\r\nimport type { MenuItemRole } from '@components/overlay/menu/menu-item/MenuItem.props'\r\n\r\n/** Delay before a hovered submenu opens / closes, to avoid flicker. */\r\nconst HOVER_OPEN_DELAY_MS = 120\r\nconst HOVER_CLOSE_DELAY_MS = 160\r\n\r\ntype UseMenuItemParams = {\r\n /** Forwarded consumer ref, merged with the internal `<li>` ref. */\r\n ref?: Ref<HTMLLIElement>\r\n /** Item ARIA role — drives the default close-on-click behaviour. */\r\n role: MenuItemRole\r\n /** Whether the item owns a submenu. */\r\n hasSubmenu: boolean\r\n /** Whether the item is non-interactive. */\r\n disabled?: boolean\r\n /** Consumer click handler (the item's action). */\r\n onClick?: (event: MouseEvent<HTMLLIElement>) => void\r\n /**\r\n * Whether clicking closes the whole menu. Defaults to `true` for plain\r\n * `menuitem`, `false` for `menuitemcheckbox` / `menuitemradio`.\r\n */\r\n closeOnClick?: boolean\r\n /**\r\n * What triggers the submenu to open/close.\r\n * - `'hover'` — opens on mouse enter, closes on mouse leave (default).\r\n * - `'click'` — opens/closes on click only; hover has no effect.\r\n * @default 'click'\r\n */\r\n submenuTrigger?: 'hover' | 'click'\r\n}\r\n\r\ntype UseMenuItemReturn = {\r\n /** Internal ref to the `<li>` element. */\r\n liRef: RefObject<HTMLLIElement | null>\r\n /** Merged ref to spread on the `<li>` (consumer ref + internal ref). */\r\n mergedRef: (node: HTMLLIElement | null) => void\r\n /** Whether the item's submenu is currently open. */\r\n submenuOpen: boolean\r\n /** Click handler running the action then closing the menu when appropriate. */\r\n handleClick: (event: MouseEvent<HTMLLIElement>) => void\r\n /** Schedules opening the submenu after a short hover delay. */\r\n scheduleOpen: () => void\r\n /** Schedules closing the submenu after a short hover delay. */\r\n scheduleClose: () => void\r\n /** Cancels any pending open/close timers (keeps the submenu state). */\r\n clearTimers: () => void\r\n /** Closes the submenu, optionally returning focus to the parent panel. */\r\n closeSubmenu: (refocusTrigger: boolean) => void\r\n /** Whether the submenu opens/closes on hover or on click only. */\r\n submenuTrigger: 'hover' | 'click'\r\n}\r\n\r\n/**\r\n * Business logic for a `MenuItem`: submenu open/close (hover, click, ArrowRight),\r\n * focus restoration, parent-keyboard pausing and the configurable close-on-click\r\n * behaviour.\r\n */\r\nexport const useMenuItem = ({\r\n ref,\r\n role,\r\n hasSubmenu,\r\n disabled,\r\n onClick,\r\n closeOnClick,\r\n submenuTrigger = 'hover',\r\n}: UseMenuItemParams): UseMenuItemReturn => {\r\n const { setChildOpen, closeMenu } = useContext(MenuContext)\r\n const liRef = useRef<HTMLLIElement>(null)\r\n const mergedRef = useMergedRefs(ref, liRef)\r\n const openTimer = useRef<ReturnType<typeof setTimeout>>(undefined)\r\n const closeTimer = useRef<ReturnType<typeof setTimeout>>(undefined)\r\n const [submenuOpen, setSubmenuOpen] = useState(false)\r\n\r\n const clearTimers = useCallback(() => {\r\n clearTimeout(openTimer.current)\r\n clearTimeout(closeTimer.current)\r\n }, [])\r\n\r\n const openSubmenu = useCallback(() => {\r\n clearTimers()\r\n setSubmenuOpen(true)\r\n }, [clearTimers])\r\n\r\n const closeSubmenu = useCallback((refocusTrigger: boolean) => {\r\n clearTimers()\r\n setSubmenuOpen(false)\r\n if (refocusTrigger) {\r\n // Return focus to the parent menu panel so keyboard nav resumes there.\r\n const parentPanel = liRef.current?.closest('[data-menu-panel]') as HTMLElement | null\r\n parentPanel?.focus()\r\n }\r\n }, [clearTimers])\r\n\r\n const scheduleOpen = useCallback(() => {\r\n clearTimeout(closeTimer.current)\r\n openTimer.current = setTimeout(() => setSubmenuOpen(true), HOVER_OPEN_DELAY_MS)\r\n }, [])\r\n\r\n const scheduleClose = useCallback(() => {\r\n clearTimeout(openTimer.current)\r\n closeTimer.current = setTimeout(() => setSubmenuOpen(false), HOVER_CLOSE_DELAY_MS)\r\n }, [])\r\n\r\n // Keep the parent menu informed so it pauses its own keyboard handling.\r\n useEffect(() => {\r\n if (!hasSubmenu) {return}\r\n setChildOpen?.(submenuOpen)\r\n return () => setChildOpen?.(false)\r\n }, [submenuOpen, hasSubmenu, setChildOpen])\r\n\r\n // Open on ArrowRight (dispatched by the parent menu's keyboard handler).\r\n useEffect(() => {\r\n const node = liRef.current\r\n if (!node || !hasSubmenu) {return}\r\n const handleOpen = (): void => openSubmenu()\r\n node.addEventListener(OPEN_SUBMENU_EVENT, handleOpen)\r\n return () => node.removeEventListener(OPEN_SUBMENU_EVENT, handleOpen)\r\n }, [hasSubmenu, openSubmenu])\r\n\r\n // Cleanup timers on unmount.\r\n useEffect(() => clearTimers, [clearTimers])\r\n\r\n // Plain action items and listbox options close the menu by default;\r\n // checkbox/radio items stay open.\r\n const shouldCloseOnClick = closeOnClick ?? (role === 'menuitem' || role === 'option')\r\n\r\n const handleClick = useCallback((event: MouseEvent<HTMLLIElement>): void => {\r\n if (disabled) {return}\r\n if (hasSubmenu) {\r\n if (submenuTrigger === 'click') {\r\n // Toggle: click again closes the submenu.\r\n setSubmenuOpen((prev) => !prev)\r\n } else {\r\n openSubmenu()\r\n }\r\n return\r\n }\r\n onClick?.(event)\r\n if (shouldCloseOnClick) {closeMenu?.()}\r\n }, [disabled, hasSubmenu, submenuTrigger, openSubmenu, onClick, shouldCloseOnClick, closeMenu])\r\n\r\n return {\r\n liRef,\r\n mergedRef,\r\n submenuOpen,\r\n handleClick,\r\n scheduleOpen,\r\n scheduleClose,\r\n clearTimers,\r\n closeSubmenu,\r\n submenuTrigger,\r\n }\r\n}\r\n","import { createStyles } from '@aurora-ds/theme'\r\nimport { DEFAULT_DRAWER_ITEM_SIZE } from '@constants/app.constants'\r\nimport type { MenuItemSize } from '@components/overlay/menu/menu-item/MenuItem.props'\r\n\r\ntype MenuItemStyleParams = { size: MenuItemSize }\r\n\r\nexport const MENU_ITEM_STYLES = createStyles((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n root: ({ size }: MenuItemStyleParams) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing.sm,\r\n paddingLeft: `calc(${theme.spacing.md} - 2px)`,\r\n paddingRight: theme.spacing.md,\r\n ...(size === 'default'\r\n ? { height: DEFAULT_DRAWER_ITEM_SIZE }\r\n : { paddingTop: theme.spacing.xs, paddingBottom: theme.spacing.xs }),\r\n borderLeft: '2px solid transparent',\r\n cursor: 'pointer',\r\n userSelect: 'none' as const,\r\n color: c.textPrimary,\r\n fontSize: theme.fontSize.sm,\r\n listStyle: 'none',\r\n transition: `background-color ${theme.transition.fast}, border-color ${theme.transition.fast}`,\r\n '&[data-selected]': {\r\n backgroundColor: c.primarySubtle,\r\n color: c.primaryMain,\r\n fontWeight: theme.fontWeight.medium,\r\n },\r\n '&[data-focused]': {\r\n backgroundColor: c.defaultSubtleHover,\r\n },\r\n '&[data-focused][data-selected]': {\r\n backgroundColor: c.primarySubtleHover,\r\n },\r\n '&[data-submenu-open]': {\r\n backgroundColor: c.primarySubtle,\r\n color: c.primaryMain,\r\n borderLeftColor: c.primaryMain,\r\n },\r\n '&[data-submenu-open]:hover:not([data-disabled])': {\r\n backgroundColor: c.primarySubtleHover,\r\n },\r\n '&[data-disabled]': {\r\n cursor: 'not-allowed',\r\n opacity: theme.opacity.high,\r\n },\r\n ':hover:not([data-disabled])': {\r\n backgroundColor: c.defaultSubtleHover,\r\n },\r\n ':active:not([data-disabled])': {\r\n backgroundColor: c.defaultSubtleActive,\r\n },\r\n }),\r\n /** Fixed-width leading slot keeping labels aligned for checkbox/radio items. */\r\n indicator: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: theme.fontSize.sm,\r\n height: theme.fontSize.sm,\r\n flexShrink: 0,\r\n },\r\n /** Filled dot shown for a checked radio item. */\r\n radioDot: {\r\n width: '0.5rem',\r\n height: '0.5rem',\r\n borderRadius: theme.radius.full,\r\n backgroundColor: c.primaryMain,\r\n },\r\n /** Pushes the trailing submenu chevron to the far right. */\r\n label: {\r\n flex: 1,\r\n minWidth: 0,\r\n },\r\n /** Trailing chevron for submenu trigger items. */\r\n submenuChevron: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n marginLeft: theme.spacing.sm,\r\n flexShrink: 0,\r\n },\r\n }\r\n}, { id: 'menu-item' })\r\n","import { useContext, useId, type FC } from 'react'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Text } from '@components/foundation/text'\r\nimport { MenuPanel } from '@components/overlay/menu/menu-panel'\r\nimport { useMenuItem } from '@components/overlay/menu/menu-item/utils/useMenuItem.utils'\r\nimport { MENU_ITEM_STYLES } from '@components/overlay/menu/menu-item/MenuItem.styles'\r\nimport { MenuNavigationContext } from '@components/overlay/menu/MenuContext'\r\nimport { CheckIcon, ChevronRightIcon } from '@resources/Icons'\r\nimport type { MenuItemProps } from '@components/overlay/menu/menu-item/MenuItem.props'\r\n\r\nconst MenuItem: FC<MenuItemProps> = ({\r\n ref,\r\n id,\r\n label,\r\n icon,\r\n iconColor,\r\n role = 'menuitem',\r\n checked,\r\n selected,\r\n focused,\r\n disabled,\r\n size = 'default',\r\n closeOnClick,\r\n submenu,\r\n submenuTrigger = 'click',\r\n submenuPlacement = 'right',\r\n onClick,\r\n ...rest\r\n}) => {\r\n const hasSubmenu = submenu !== undefined\r\n const isCheckable = role === 'menuitemcheckbox' || role === 'menuitemradio'\r\n const isOption = role === 'option'\r\n const isHighlighted = isCheckable ? Boolean(checked) : Boolean(selected)\r\n\r\n // Stable id used for roving focus (data-focused) and the panel's\r\n // aria-activedescendant. Consumers may override it via the `id` prop.\r\n const generatedId = useId()\r\n const itemId = id ?? generatedId\r\n\r\n // Keyboard focus is driven by the owning panel via context (no DOM mutation).\r\n // `focused` remains a manual override for consumers that drive it themselves.\r\n const { focusedId } = useContext(MenuNavigationContext)\r\n const isFocused = focused || focusedId === itemId\r\n\r\n const {\r\n liRef,\r\n mergedRef,\r\n submenuOpen,\r\n handleClick,\r\n scheduleOpen,\r\n scheduleClose,\r\n clearTimers,\r\n closeSubmenu,\r\n } = useMenuItem({ ref, role, hasSubmenu, disabled, onClick, closeOnClick, submenuTrigger })\r\n\r\n const isHoverTrigger = submenuTrigger === 'hover'\r\n\r\n return (\r\n <>\r\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions */}\r\n <li\r\n ref={mergedRef}\r\n id={itemId}\r\n role={role}\r\n aria-checked={isCheckable ? Boolean(checked) : undefined}\r\n aria-selected={isOption ? Boolean(selected) : undefined}\r\n aria-disabled={disabled}\r\n aria-haspopup={hasSubmenu ? 'menu' : undefined}\r\n aria-expanded={hasSubmenu ? submenuOpen : undefined}\r\n data-selected={isHighlighted || undefined}\r\n data-focused={isFocused || undefined}\r\n data-disabled={disabled || undefined}\r\n data-submenu-open={hasSubmenu && submenuOpen || undefined}\r\n className={MENU_ITEM_STYLES.root({ size })}\r\n onClick={handleClick}\r\n onMouseEnter={hasSubmenu && !disabled && isHoverTrigger ? scheduleOpen : undefined}\r\n onMouseLeave={hasSubmenu && isHoverTrigger ? scheduleClose : undefined}\r\n {...rest}\r\n >\r\n {isCheckable && (\r\n <span\r\n className={MENU_ITEM_STYLES.indicator}\r\n aria-hidden={true}\r\n >\r\n {checked && role === 'menuitemcheckbox' && (\r\n <Icon\r\n icon={CheckIcon}\r\n size={size === 'default' ? 'sm' : 'md'}\r\n strokeColor={'primaryMain'}\r\n />\r\n )}\r\n {checked && role === 'menuitemradio' && (\r\n <span className={MENU_ITEM_STYLES.radioDot} />\r\n )}\r\n </span>\r\n )}\r\n {icon !== undefined && (\r\n <Icon\r\n icon={icon}\r\n size={'sm'}\r\n strokeColor={iconColor ?? (isHighlighted ? 'primaryMain' : 'textSecondary')}\r\n />\r\n )}\r\n <Text\r\n variant={'span'}\r\n fontSize={'sm'}\r\n className={MENU_ITEM_STYLES.label}\r\n >\r\n {label}\r\n </Text>\r\n {hasSubmenu && (\r\n <span\r\n className={MENU_ITEM_STYLES.submenuChevron}\r\n aria-hidden={true}\r\n >\r\n <Icon\r\n icon={ChevronRightIcon}\r\n size={'sm'}\r\n strokeColor={'textTertiary'}\r\n />\r\n </span>\r\n )}\r\n </li>\r\n {hasSubmenu && (\r\n <MenuPanel\r\n open={submenuOpen}\r\n onClose={() => closeSubmenu(true)}\r\n onArrowLeft={() => closeSubmenu(true)}\r\n anchorEl={liRef.current}\r\n placement={submenuPlacement}\r\n isSubmenu={true}\r\n aria-label={label}\r\n onMouseEnter={isHoverTrigger ? clearTimers : undefined}\r\n onMouseLeave={isHoverTrigger ? scheduleClose : undefined}\r\n >\r\n {submenu}\r\n </MenuPanel>\r\n )}\r\n </>\r\n )\r\n}\r\n\r\nMenuItem.displayName = 'MenuItem'\r\n\r\nexport default MenuItem\r\n","import { FC } from 'react'\r\nimport { MenuPanel } from '@components/overlay/menu/menu-panel'\r\nimport MenuGroup from '@components/overlay/menu/menu-group/MenuGroup'\r\nimport MenuItem from '@components/overlay/menu/menu-item/MenuItem'\r\nimport type { MenuProps } from '@components/overlay/menu/Menu.props'\r\nimport type { MenuComponent } from '@components/overlay/menu/Menu.types'\r\n\r\nconst MenuBase: FC<MenuProps> = (props) => <MenuPanel {...props} />\r\n\r\nMenuBase.displayName = 'Menu'\r\n\r\nconst Menu = MenuBase as MenuComponent\r\nMenu.Item = MenuItem\r\nMenu.Group = MenuGroup\r\n\r\nexport default Menu\r\n","import { createStyles, createVariants } from '@aurora-ds/theme'\r\n\r\nexport const SELECT_TRIGGER_VARIANTS = createVariants((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n base: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing.sm,\r\n boxSizing: 'border-box' as const,\r\n width: '100%',\r\n borderWidth: '1px',\r\n borderStyle: 'solid',\r\n borderRadius: theme.radius.md,\r\n backgroundColor: c.surfacePaper,\r\n cursor: 'pointer',\r\n transition: `border-color ${theme.transition.fast}`,\r\n outline: 'none',\r\n fontFamily: 'inherit',\r\n // No focus ring on the trigger: focus is conveyed by the border\r\n // colour change (see the `status` variants below).\r\n '&[data-open]': {\r\n borderColor: c.primaryMain,\r\n },\r\n '&[data-disabled]': {\r\n opacity: theme.opacity.high,\r\n backgroundColor: c.disabledMain,\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n variants: {\r\n size: {\r\n sm: {\r\n height: '2rem',\r\n paddingLeft: theme.spacing.md,\r\n paddingRight: theme.spacing.sm,\r\n fontSize: theme.fontSize.xs,\r\n },\r\n md: {\r\n height: '2.5rem',\r\n paddingLeft: theme.spacing.md,\r\n paddingRight: theme.spacing.sm,\r\n fontSize: theme.fontSize.sm,\r\n },\r\n lg: {\r\n height: '3rem',\r\n paddingLeft: theme.spacing.lg,\r\n paddingRight: theme.spacing.md,\r\n fontSize: theme.fontSize.md,\r\n },\r\n },\r\n status: {\r\n default: {\r\n borderColor: c.borderMain,\r\n ':hover:not([data-disabled]):not([data-open])': {\r\n borderColor: c.borderStrong,\r\n },\r\n '&:focus-visible:not([data-open])': {\r\n borderColor: c.primaryMain,\r\n },\r\n },\r\n error: {\r\n borderColor: c.errorMain,\r\n },\r\n success: {\r\n borderColor: c.successMain,\r\n },\r\n warning: {\r\n borderColor: c.warningMain,\r\n },\r\n },\r\n },\r\n defaultVariants: { size: 'md', status: 'default' },\r\n }\r\n}, { id: 'select-trigger' })\r\n\r\nexport const SELECT_TRIGGER_STYLES = createStyles((theme) => ({\r\n value: {\r\n flex: 1,\r\n minWidth: 0,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap' as const,\r\n color: theme.colors.textPrimary,\r\n textAlign: 'left' as const,\r\n },\r\n placeholder: {\r\n flex: 1,\r\n minWidth: 0,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap' as const,\r\n color: theme.colors.textTertiary,\r\n textAlign: 'left' as const,\r\n },\r\n chevron: {\r\n flexShrink: 0,\r\n transition: `transform ${theme.transition.fast}`,\r\n color: theme.colors.textSecondary,\r\n },\r\n chevronOpen: {\r\n transform: 'rotate(180deg)',\r\n },\r\n}), { id: 'select-trigger-extra' })\r\n","import type { FC } from 'react'\r\nimport { cx } from '@aurora-ds/theme'\r\nimport ChevronDownIcon from '@resources/assets/icons/ChevronDownIcon.svg?react'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { SELECT_TRIGGER_STYLES, SELECT_TRIGGER_VARIANTS } from '@components/forms/select/select-trigger/SelectTrigger.styles'\r\nimport type { SelectTriggerProps } from '@components/forms/select/select-trigger/SelectTrigger.props'\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { TextFieldSize } from '@components/forms/text-field/textField.types'\r\n\r\nconst ICON_SIZE_MAP: Record<TextFieldSize, keyof Theme['fontSize']> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n}\r\n\r\nconst SelectTrigger: FC<SelectTriggerProps> = ({\r\n ref,\r\n size = 'md',\r\n status = 'default',\r\n open,\r\n hasValue,\r\n startIcon,\r\n startIconColor = 'textSecondary',\r\n disabled,\r\n children,\r\n 'aria-expanded': ariaExpanded,\r\n 'aria-controls': ariaControls,\r\n ...rest\r\n}) => {\r\n const iconSize = ICON_SIZE_MAP[size]\r\n\r\n return (\r\n <button\r\n type={'button'}\r\n role={'combobox'}\r\n ref={ref}\r\n className={SELECT_TRIGGER_VARIANTS({ size, status })}\r\n data-open={open || undefined}\r\n data-disabled={disabled || undefined}\r\n disabled={disabled}\r\n aria-expanded={ariaExpanded}\r\n aria-controls={ariaControls}\r\n {...rest}\r\n >\r\n {startIcon !== undefined && (\r\n <Icon\r\n icon={startIcon}\r\n size={iconSize}\r\n strokeColor={startIconColor}\r\n />\r\n )}\r\n <span className={hasValue ? SELECT_TRIGGER_STYLES.value : SELECT_TRIGGER_STYLES.placeholder}>\r\n {children}\r\n </span>\r\n <Icon\r\n icon={ChevronDownIcon}\r\n size={iconSize}\r\n className={cx(SELECT_TRIGGER_STYLES.chevron, open ? SELECT_TRIGGER_STYLES.chevronOpen : undefined)}\r\n strokeColor={'textSecondary'}\r\n />\r\n </button>\r\n )\r\n}\r\n\r\nSelectTrigger.displayName = 'SelectTrigger'\r\n\r\nexport default SelectTrigger\r\n","import { RefCallback, RefObject, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react'\r\n\r\nimport { useControllableState } from '@hooks/common/use-controllable-state/useControllableState'\r\nimport { useMergedRefs } from '@hooks/common/use-merged-refs/useMergedRefs'\r\n\r\nimport type { SelectProps } from '@components/forms/select/Select.props'\r\nimport type { SelectOption } from '@components/forms/select/select.types'\r\n\r\ntype UseSelectParams = {\r\n id?: string\r\n ref?: SelectProps['ref']\r\n value?: string\r\n defaultValue?: string\r\n onChange?: (value: string) => void\r\n options?: SelectOption[]\r\n disabled?: boolean\r\n}\r\n\r\ntype UseSelectReturn = {\r\n fieldId: string\r\n labelId: string\r\n helperId: string\r\n menuId: string\r\n triggerRef: RefObject<HTMLButtonElement | null>\r\n mergedRef: RefCallback<HTMLButtonElement>\r\n open: boolean\r\n toggle: () => void\r\n close: () => void\r\n currentValue: string\r\n selectedOption: SelectOption | undefined\r\n groupedOptions: Map<string | undefined, SelectOption[]>\r\n handleSelect: (optValue: string) => void\r\n}\r\n\r\n/**\r\n * Business logic for the Select component: id resolution, ref merging,\r\n * controlled/uncontrolled value handling, open state, option grouping and\r\n * focus restoration to the trigger when the menu closes.\r\n */\r\nexport const useSelect = ({\r\n id,\r\n ref,\r\n value,\r\n defaultValue,\r\n onChange,\r\n options,\r\n disabled,\r\n}: UseSelectParams): UseSelectReturn => {\r\n const generatedId = useId()\r\n const fieldId = id ?? generatedId\r\n const helperId = `${fieldId}-helper`\r\n const menuId = `${fieldId}-menu`\r\n const labelId = `${fieldId}-label`\r\n\r\n const triggerRef = useRef<HTMLButtonElement | null>(null)\r\n const mergedRef = useMergedRefs<HTMLButtonElement>(ref, triggerRef)\r\n\r\n const [open, setOpen] = useState(false)\r\n\r\n const [currentValue, setValue] = useControllableState<string>({\r\n value,\r\n defaultValue: defaultValue ?? '',\r\n onChange,\r\n })\r\n\r\n // Restore focus to the trigger when the menu closes.\r\n const wasOpenRef = useRef(false)\r\n useEffect(() => {\r\n if (wasOpenRef.current && !open) {\r\n triggerRef.current?.focus()\r\n }\r\n wasOpenRef.current = open\r\n }, [open])\r\n\r\n const selectedOption = useMemo(\r\n () => options?.find((opt) => opt.value === currentValue),\r\n [options, currentValue]\r\n )\r\n\r\n const groupedOptions = useMemo(() => {\r\n const map = new Map<string | undefined, SelectOption[]>()\r\n for (const opt of options ?? []) {\r\n const key = opt.group\r\n const existing = map.get(key)\r\n if (existing !== undefined) {\r\n existing.push(opt)\r\n } else {\r\n map.set(key, [opt])\r\n }\r\n }\r\n return map\r\n }, [options])\r\n\r\n const handleSelect = useCallback(\r\n (optValue: string) => {\r\n setValue(optValue)\r\n setOpen(false)\r\n },\r\n [setValue]\r\n )\r\n\r\n const toggle = useCallback(() => {\r\n if (!disabled) {\r\n setOpen((prev) => !prev)\r\n }\r\n }, [disabled])\r\n\r\n const close = useCallback(() => setOpen(false), [])\r\n\r\n return {\r\n fieldId,\r\n labelId,\r\n helperId,\r\n menuId,\r\n triggerRef,\r\n mergedRef,\r\n open,\r\n toggle,\r\n close,\r\n currentValue,\r\n selectedOption,\r\n groupedOptions,\r\n handleSelect,\r\n }\r\n}\r\n","import { FC } from 'react'\r\nimport { Stack } from '@components/layout/stack'\r\nimport { Text } from '@components/foundation/text'\r\nimport { FormHelperText } from '@components/forms/_common/form-helper-text'\r\nimport { Menu } from '@components/overlay/menu'\r\nimport { SelectTrigger } from '@components/forms/select/select-trigger'\r\nimport { useSelect } from '@components/forms/select/utils/useSelect.utils'\r\nimport type { SelectProps } from '@components/forms/select/Select.props'\r\n\r\nconst Select: FC<SelectProps> = ({\r\n ref,\r\n value,\r\n defaultValue,\r\n onChange,\r\n options,\r\n label,\r\n helperText,\r\n placeholder,\r\n size = 'md',\r\n status = 'default',\r\n disabled,\r\n required,\r\n width,\r\n id,\r\n}) => {\r\n const {\r\n fieldId,\r\n labelId,\r\n helperId,\r\n menuId,\r\n triggerRef,\r\n mergedRef,\r\n open,\r\n toggle,\r\n close,\r\n currentValue,\r\n selectedOption,\r\n groupedOptions,\r\n handleSelect,\r\n } = useSelect({ id, ref, value, defaultValue, onChange, options, disabled })\r\n\r\n return (\r\n <Stack\r\n flexDirection={'column'}\r\n gap={'xs'}\r\n style={{ width: width ?? '100%' }}\r\n >\r\n {label !== undefined && (\r\n <Text\r\n variant={'label'}\r\n fontSize={'sm'}\r\n fontWeight={'medium'}\r\n color={'textSecondary'}\r\n htmlFor={fieldId}\r\n id={labelId}\r\n >\r\n {label}\r\n {required && (\r\n <Text\r\n variant={'span'}\r\n color={'errorMain'}\r\n aria-hidden={true}\r\n >\r\n {' *'}\r\n </Text>\r\n )}\r\n </Text>\r\n )}\r\n\r\n <SelectTrigger\r\n ref={mergedRef}\r\n id={fieldId}\r\n size={size}\r\n status={status}\r\n open={open}\r\n hasValue={selectedOption !== undefined}\r\n startIcon={selectedOption?.icon}\r\n startIconColor={selectedOption?.iconColor}\r\n disabled={disabled}\r\n aria-haspopup={'listbox'}\r\n aria-expanded={open}\r\n aria-controls={menuId}\r\n aria-labelledby={label !== undefined ? `${labelId} ${fieldId}` : undefined}\r\n aria-required={required || undefined}\r\n aria-invalid={status === 'error' || undefined}\r\n aria-errormessage={status === 'error' && helperText !== undefined ? helperId : undefined}\r\n aria-describedby={helperText !== undefined ? helperId : undefined}\r\n onClick={toggle}\r\n >\r\n {selectedOption !== undefined ? selectedOption.label : placeholder}\r\n </SelectTrigger>\r\n\r\n <Menu\r\n open={open}\r\n onClose={close}\r\n anchorEl={triggerRef.current}\r\n id={menuId}\r\n role={'listbox'}\r\n aria-labelledby={label !== undefined ? labelId : undefined}\r\n aria-label={label === undefined ? placeholder : undefined}\r\n >\r\n {Array.from(groupedOptions.entries()).map(([groupKey, groupOpts], groupIndex) => {\r\n const items = groupOpts.map((opt) => (\r\n <Menu.Item\r\n key={opt.value}\r\n role={'option'}\r\n size={'compact'}\r\n label={opt.label}\r\n icon={opt.icon}\r\n iconColor={opt.iconColor}\r\n selected={opt.value === currentValue}\r\n disabled={opt.disabled}\r\n onClick={() => handleSelect(opt.value)}\r\n />\r\n ))\r\n return groupKey !== undefined ? (\r\n <Menu.Group\r\n key={groupKey}\r\n label={groupKey}\r\n divider={groupIndex > 0}\r\n >\r\n {items}\r\n </Menu.Group>\r\n ) : (\r\n <Menu.Group\r\n key={'__ungrouped'}\r\n divider={groupIndex > 0}\r\n >\r\n {items}\r\n </Menu.Group>\r\n )\r\n })}\r\n </Menu>\r\n\r\n {helperText !== undefined && (\r\n <FormHelperText\r\n id={helperId}\r\n status={status}\r\n >\r\n {helperText}\r\n </FormHelperText>\r\n )}\r\n </Stack>\r\n )\r\n}\r\n\r\nSelect.displayName = 'Select'\r\n\r\nexport default Select\r\n","import { createStyles, createVariants } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const CHECKBOX_ROOT_VARIANTS = createVariants((theme) => ({\r\n base: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: theme.spacing.sm,\r\n cursor: 'pointer',\r\n userSelect: 'none',\r\n },\r\n variants: {\r\n disabled: {\r\n true: {\r\n cursor: 'not-allowed',\r\n opacity: theme.opacity.high,\r\n },\r\n false: {},\r\n },\r\n },\r\n defaultVariants: {\r\n disabled: 'false',\r\n },\r\n}), { id: 'checkbox-root' })\r\n\r\nexport const CHECKBOX_INPUT_VARIANTS = createVariants((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n base: {\r\n appearance: 'none',\r\n position: 'relative' as const,\r\n margin: 0,\r\n borderWidth: '1px',\r\n borderStyle: 'solid',\r\n borderColor: c.borderStrong,\r\n borderRadius: theme.radius.sm,\r\n backgroundColor: c.surfacePaper,\r\n transition: `border-color ${theme.transition.fast}, background-color ${theme.transition.fast}`,\r\n cursor: 'pointer',\r\n '&:focus-visible': getFocusRingStyles(theme),\r\n '&::after': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n left: '50%',\r\n top: '50%',\r\n transform: 'translate(-50%, -56%) rotate(45deg)',\r\n width: '0.25rem',\r\n height: '0.5rem',\r\n borderRight: `2px solid ${c.textInverse}`,\r\n borderBottom: `2px solid ${c.textInverse}`,\r\n opacity: 0,\r\n },\r\n '&:checked::after': {\r\n opacity: 1,\r\n },\r\n '&:indeterminate::after': {\r\n width: '0.5rem',\r\n height: '0',\r\n borderRight: '0',\r\n borderBottom: `2px solid ${c.textInverse}`,\r\n transform: 'translate(-50%, -50%)',\r\n opacity: 1,\r\n },\r\n },\r\n variants: {\r\n size: {\r\n sm: {\r\n width: '1rem',\r\n height: '1rem',\r\n },\r\n md: {\r\n width: '1.125rem',\r\n height: '1.125rem',\r\n },\r\n lg: {\r\n width: '1.25rem',\r\n height: '1.25rem',\r\n },\r\n },\r\n status: {\r\n default: {\r\n '&:checked, &:indeterminate': {\r\n borderColor: c.primaryMain,\r\n backgroundColor: c.primaryMain,\r\n },\r\n },\r\n error: {\r\n borderColor: c.errorMain,\r\n '&:checked, &:indeterminate': {\r\n borderColor: c.errorMain,\r\n backgroundColor: c.errorMain,\r\n },\r\n },\r\n success: {\r\n borderColor: c.successMain,\r\n '&:checked, &:indeterminate': {\r\n borderColor: c.successMain,\r\n backgroundColor: c.successMain,\r\n },\r\n },\r\n warning: {\r\n borderColor: c.warningMain,\r\n '&:checked, &:indeterminate': {\r\n borderColor: c.warningMain,\r\n backgroundColor: c.warningMain,\r\n },\r\n },\r\n },\r\n disabled: {\r\n true: {\r\n cursor: 'not-allowed',\r\n backgroundColor: c.disabledMain,\r\n borderColor: c.disabledMain,\r\n '&:checked, &:indeterminate': {\r\n backgroundColor: c.disabledText,\r\n borderColor: c.disabledText,\r\n },\r\n },\r\n false: {},\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n status: 'default',\r\n disabled: 'false',\r\n },\r\n }\r\n}, { id: 'checkbox-input' })\r\n\r\nexport const CHECKBOX_STYLES = createStyles((theme) => ({\r\n wrapper: {\r\n display: 'inline-flex',\r\n flexDirection: 'column',\r\n gap: theme.spacing.xs,\r\n },\r\n helper: {\r\n marginLeft: `calc(1.125rem + ${theme.spacing.sm})`,\r\n },\r\n}), { id: 'checkbox-extra' })\r\n","import { type RefObject, useEffect, useId, useRef } from 'react'\r\n\r\nimport { useMergedRefs } from '@hooks/common/use-merged-refs/useMergedRefs'\r\n\r\nimport type { CheckboxProps } from '@components/forms/checkbox/Checkbox.props'\r\n\r\ntype UseCheckboxParams = {\r\n id?: string\r\n ref?: CheckboxProps['ref']\r\n indeterminate?: boolean\r\n}\r\n\r\ntype UseCheckboxReturn = {\r\n checkboxId: string\r\n helperId: string\r\n mergedRef: (node: HTMLInputElement | null) => void\r\n inputRef: RefObject<HTMLInputElement | null>\r\n}\r\n\r\n/** Handles id generation, ref merging and native indeterminate state sync. */\r\nexport const useCheckbox = ({ id, ref, indeterminate = false }: UseCheckboxParams): UseCheckboxReturn => {\r\n const generatedId = useId()\r\n const checkboxId = id ?? generatedId\r\n const helperId = `${checkboxId}-helper`\r\n\r\n const inputRef = useRef<HTMLInputElement | null>(null)\r\n const mergedRef = useMergedRefs<HTMLInputElement>(ref, inputRef)\r\n\r\n useEffect(() => {\r\n if (inputRef.current) {\r\n inputRef.current.indeterminate = indeterminate\r\n }\r\n }, [indeterminate])\r\n\r\n return {\r\n checkboxId,\r\n helperId,\r\n mergedRef,\r\n inputRef,\r\n }\r\n}\r\n","import { type FC } from 'react'\r\n\r\nimport { Text } from '@components/foundation/text'\r\nimport { FormHelperText } from '@components/forms/_common/form-helper-text'\r\nimport {\r\n CHECKBOX_INPUT_VARIANTS,\r\n CHECKBOX_ROOT_VARIANTS,\r\n CHECKBOX_STYLES,\r\n} from '@components/forms/checkbox/Checkbox.styles'\r\nimport { useCheckbox } from '@components/forms/checkbox/utils/useCheckbox.utils'\r\n\r\nimport type { CheckboxProps } from '@components/forms/checkbox/Checkbox.props'\r\n\r\nconst Checkbox: FC<CheckboxProps> = ({\r\n ref,\r\n label,\r\n helperText,\r\n size = 'md',\r\n status = 'default',\r\n indeterminate = false,\r\n error,\r\n id,\r\n disabled,\r\n required,\r\n ...rest\r\n}) => {\r\n const resolvedStatus = error ? 'error' : status\r\n const { checkboxId, helperId, mergedRef } = useCheckbox({ id, ref, indeterminate })\r\n\r\n return (\r\n <div className={CHECKBOX_STYLES.wrapper}>\r\n <label\r\n htmlFor={checkboxId}\r\n className={CHECKBOX_ROOT_VARIANTS({ disabled: disabled ? 'true' : 'false' })}\r\n >\r\n <input\r\n ref={mergedRef}\r\n id={checkboxId}\r\n type={'checkbox'}\r\n disabled={disabled}\r\n required={required}\r\n aria-required={required || undefined}\r\n aria-invalid={resolvedStatus === 'error' || undefined}\r\n aria-describedby={helperText !== undefined ? helperId : undefined}\r\n aria-errormessage={resolvedStatus === 'error' && helperText !== undefined ? helperId : undefined}\r\n className={CHECKBOX_INPUT_VARIANTS({\r\n size,\r\n status: resolvedStatus,\r\n disabled: disabled ? 'true' : 'false',\r\n })}\r\n {...rest}\r\n />\r\n\r\n {label !== undefined && (\r\n <Text\r\n variant={'span'}\r\n fontSize={size === 'lg' ? 'md' : 'sm'}\r\n color={disabled ? 'textDisabled' : 'textSecondary'}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n </label>\r\n\r\n {helperText !== undefined && (\r\n <FormHelperText\r\n id={helperId}\r\n status={resolvedStatus}\r\n className={CHECKBOX_STYLES.helper}\r\n >\r\n {helperText}\r\n </FormHelperText>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nCheckbox.displayName = 'Checkbox'\r\n\r\nexport default Checkbox\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const CALENDAR_STYLES = createStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'column' as const,\r\n gap: theme.spacing.sm,\r\n padding: theme.spacing.sm,\r\n width: '17.5rem',\r\n boxSizing: 'border-box' as const,\r\n fontFamily: 'inherit',\r\n },\r\n}), { id: 'calendar' })\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const CALENDAR_PICKER_HEADER_STYLES = createStyles((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n header: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n gap: theme.spacing['2xs'],\r\n },\r\n navGroup: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing['2xs'],\r\n flexShrink: 0,\r\n },\r\n heading: {\r\n flex: 1,\r\n textAlign: 'center' as const,\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.semibold,\r\n color: c.textPrimary,\r\n textTransform: 'capitalize' as const,\r\n whiteSpace: 'nowrap' as const,\r\n },\r\n /** Clickable heading that opens the month / year picker panels. */\r\n headingButton: {\r\n flex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: theme.spacing['2xs'],\r\n minWidth: 0,\r\n padding: `${theme.spacing['2xs']} ${theme.spacing.xs}`,\r\n border: 'none',\r\n borderRadius: theme.radius.md,\r\n background: 'transparent',\r\n color: c.textPrimary,\r\n fontFamily: 'inherit',\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.semibold,\r\n textTransform: 'capitalize' as const,\r\n whiteSpace: 'nowrap' as const,\r\n cursor: 'pointer',\r\n transition: `background-color ${theme.transition.fast}`,\r\n outline: 'none',\r\n ':hover': {\r\n backgroundColor: c.primarySubtle,\r\n },\r\n ':focus-visible': getFocusRingStyles(theme),\r\n },\r\n }\r\n}, { id: 'calendar-picker-header' })\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const CALENDAR_DAY_VIEW_STYLES = createStyles((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n grid: {\r\n display: 'flex',\r\n flexDirection: 'column' as const,\r\n },\r\n weekRow: {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(7, 1fr)',\r\n },\r\n weekdayHeader: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: '2rem',\r\n fontSize: theme.fontSize.xs,\r\n fontWeight: theme.fontWeight.medium,\r\n color: c.textTertiary,\r\n textTransform: 'capitalize' as const,\r\n },\r\n cell: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '0.0625rem',\r\n },\r\n day: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: '2rem',\r\n height: '2rem',\r\n padding: 0,\r\n border: 'none',\r\n borderRadius: theme.radius.md,\r\n background: 'transparent',\r\n color: c.textPrimary,\r\n fontFamily: 'inherit',\r\n fontSize: theme.fontSize.sm,\r\n cursor: 'pointer',\r\n transition: `background-color ${theme.transition.fast}, color ${theme.transition.fast}`,\r\n outline: 'none',\r\n ':hover:not([data-disabled]):not([data-selected])': {\r\n backgroundColor: c.primarySubtle,\r\n },\r\n ':focus-visible': getFocusRingStyles(theme),\r\n // Days outside the displayed month.\r\n '&[data-outside]': {\r\n color: c.textDisabled,\r\n },\r\n // Out-of-range days.\r\n '&[data-disabled]': {\r\n color: c.textDisabled,\r\n cursor: 'not-allowed',\r\n },\r\n // Today marker.\r\n '&[data-today]:not([data-selected])': {\r\n fontWeight: theme.fontWeight.bold,\r\n boxShadow: `inset 0 0 0 1px ${c.borderStrong}`,\r\n },\r\n // Selected day.\r\n '&[data-selected]': {\r\n backgroundColor: c.primaryMain,\r\n color: c.primaryOn,\r\n fontWeight: theme.fontWeight.semibold,\r\n },\r\n },\r\n }\r\n}, { id: 'calendar-day-view' })\r\n","import type { WeekStart } from '@components/forms/date-picker/datePicker.types'\r\n\r\n/** Whether `value` is a valid `Date` instance (not `Invalid Date`). */\r\nexport const isValidDate = (value: unknown): value is Date =>\r\n value instanceof Date && !Number.isNaN(value.getTime())\r\n\r\n/** Returns a new `Date` set to the start of the day (00:00:00.000) in local time. */\r\nexport const startOfDay = (date: Date): Date => {\r\n const next = new Date(date)\r\n next.setHours(0, 0, 0, 0)\r\n return next\r\n}\r\n\r\n/** Whether two dates fall on the same calendar day (ignoring time). */\r\nexport const isSameDay = (a: Date | null | undefined, b: Date | null | undefined): boolean => {\r\n if (!isValidDate(a) || !isValidDate(b)) {\r\n return false\r\n }\r\n return (\r\n a.getFullYear() === b.getFullYear() &&\r\n a.getMonth() === b.getMonth() &&\r\n a.getDate() === b.getDate()\r\n )\r\n}\r\n\r\n/** Whether two dates fall in the same month and year. */\r\nexport const isSameMonth = (a: Date, b: Date): boolean =>\r\n a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth()\r\n\r\n/** Returns a new date offset by `amount` days. */\r\nexport const addDays = (date: Date, amount: number): Date => {\r\n const next = new Date(date)\r\n next.setDate(next.getDate() + amount)\r\n return next\r\n}\r\n\r\n/** Returns a new date offset by `amount` months, clamping the day to the target month length. */\r\nexport const addMonths = (date: Date, amount: number): Date => {\r\n const next = new Date(date)\r\n const targetDay = next.getDate()\r\n next.setDate(1)\r\n next.setMonth(next.getMonth() + amount)\r\n const lastDay = new Date(next.getFullYear(), next.getMonth() + 1, 0).getDate()\r\n next.setDate(Math.min(targetDay, lastDay))\r\n return next\r\n}\r\n\r\n/** Returns a new date offset by `amount` years. */\r\nexport const addYears = (date: Date, amount: number): Date => addMonths(date, amount * 12)\r\n\r\n/**\r\n * Whether `date` is outside the inclusive `[min, max]` range.\r\n * Comparison is done at day precision so the bounds days remain selectable.\r\n */\r\nexport const isDateDisabled = (date: Date, min?: Date, max?: Date): boolean => {\r\n const time = startOfDay(date).getTime()\r\n if (isValidDate(min) && time < startOfDay(min).getTime()) {\r\n return true\r\n }\r\n return isValidDate(max) && time > startOfDay(max).getTime()\r\n}\r\n\r\n/** Clamps `date` into the inclusive `[min, max]` range when bounds are provided. */\r\nexport const clampDate = (date: Date, min?: Date, max?: Date): Date => {\r\n let result = date\r\n if (isValidDate(min) && startOfDay(result).getTime() < startOfDay(min).getTime()) {\r\n result = min\r\n }\r\n if (isValidDate(max) && startOfDay(result).getTime() > startOfDay(max).getTime()) {\r\n result = max\r\n }\r\n return result\r\n}\r\n\r\n/**\r\n * Builds the 6×7 matrix of days shown for the month containing `viewDate`.\r\n * Leading/trailing cells are filled with the adjacent months' days so the grid\r\n * is always complete (always 42 cells).\r\n */\r\nexport const getMonthMatrix = (viewDate: Date, weekStartsOn: WeekStart): Date[][] => {\r\n const firstOfMonth = new Date(viewDate.getFullYear(), viewDate.getMonth(), 1)\r\n const offset = (firstOfMonth.getDay() - weekStartsOn + 7) % 7\r\n const gridStart = addDays(firstOfMonth, -offset)\r\n\r\n const weeks: Date[][] = []\r\n let cursor = gridStart\r\n for (let week = 0; week < 6; week += 1) {\r\n const days: Date[] = []\r\n for (let day = 0; day < 7; day += 1) {\r\n days.push(cursor)\r\n cursor = addDays(cursor, 1)\r\n }\r\n weeks.push(days)\r\n }\r\n return weeks\r\n}\r\n\r\n/** Ordered weekday indexes (0–6) starting from `weekStartsOn`. */\r\nexport const getWeekdayOrder = (weekStartsOn: WeekStart): number[] =>\r\n Array.from({ length: 7 }, (_, index) => (weekStartsOn + index) % 7)\r\n\r\n/** Localized short + long weekday labels, ordered from `weekStartsOn`. */\r\nexport const getWeekdayLabels = (\r\n locale: string,\r\n weekStartsOn: WeekStart\r\n): Array<{ short: string; long: string }> => {\r\n const shortFmt = new Intl.DateTimeFormat(locale, { weekday: 'short' })\r\n const longFmt = new Intl.DateTimeFormat(locale, { weekday: 'long' })\r\n // 2021-08-01 is a Sunday — a stable reference week for label generation.\r\n const reference = new Date(2021, 7, 1)\r\n return getWeekdayOrder(weekStartsOn).map((weekday) => {\r\n const sample = addDays(reference, weekday)\r\n return { short: shortFmt.format(sample), long: longFmt.format(sample) }\r\n })\r\n}\r\n\r\n/** Localized \"Month Year\" heading for the calendar (e.g. \"June 2026\"). */\r\nexport const getMonthYearLabel = (date: Date, locale: string): string =>\r\n new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' }).format(date)\r\n\r\n/** Localized short month labels (e.g. \"Jan\" … \"Dec\"), indexed `0`–`11`. */\r\nexport const getMonthLabels = (locale: string): string[] => {\r\n const fmt = new Intl.DateTimeFormat(locale, { month: 'short' })\r\n return Array.from({ length: 12 }, (_, month) => fmt.format(new Date(2021, month, 1)))\r\n}\r\n\r\n/** Localized full month label for a given month index (e.g. \"January\"). */\r\nexport const getMonthLabel = (locale: string, month: number): string =>\r\n new Intl.DateTimeFormat(locale, { month: 'long' }).format(new Date(2021, month, 1))\r\n\r\n/** Whether the whole month is outside the inclusive `[min, max]` range. */\r\nexport const isMonthDisabled = (year: number, month: number, min?: Date, max?: Date): boolean => {\r\n const lastOfMonth = new Date(year, month + 1, 0)\r\n if (isValidDate(min) && startOfDay(lastOfMonth).getTime() < startOfDay(min).getTime()) {\r\n return true\r\n }\r\n const firstOfMonth = new Date(year, month, 1)\r\n return isValidDate(max) && startOfDay(firstOfMonth).getTime() > startOfDay(max).getTime()\r\n}\r\n\r\n/** Whether the whole year is outside the inclusive `[min, max]` range. */\r\nexport const isYearDisabled = (year: number, min?: Date, max?: Date): boolean => {\r\n const lastOfYear = new Date(year, 11, 31)\r\n if (isValidDate(min) && startOfDay(lastOfYear).getTime() < startOfDay(min).getTime()) {\r\n return true\r\n }\r\n const firstOfYear = new Date(year, 0, 1)\r\n return isValidDate(max) && startOfDay(firstOfYear).getTime() > startOfDay(max).getTime()\r\n}\r\n\r\n/**\r\n * Returns the block of consecutive years containing `year`, aligned on `size`\r\n * (e.g. for `size = 12`, 2026 yields 2016…2027). Used by the year-picker grid.\r\n */\r\nexport const getYearRange = (year: number, size = 12): number[] => {\r\n const start = year - (((year % size) + size) % size)\r\n return Array.from({ length: size }, (_, index) => start + index)\r\n}\r\n\r\n/**\r\n * Derives a `dd`/`MM`/`yyyy` token format from a BCP 47 locale, preserving the\r\n * locale's field order and separators (e.g. `en-US` → `MM/dd/yyyy`, `fr-FR` → `dd/MM/yyyy`).\r\n */\r\nexport const getLocaleDateFormat = (locale: string): string =>\r\n new Intl.DateTimeFormat(locale, { day: '2-digit', month: '2-digit', year: 'numeric' })\r\n .formatToParts(new Date(2021, 0, 1))\r\n .map((part) => {\r\n switch (part.type) {\r\n case 'day':\r\n return 'dd'\r\n case 'month':\r\n return 'MM'\r\n case 'year':\r\n return 'yyyy'\r\n default:\r\n return part.value\r\n }\r\n })\r\n .join('')\r\n\r\n/** Localized, fully spelled-out date used for the accessible name of a day cell. */\r\nexport const getFullDateLabel = (date: Date, locale: string): string =>\r\n new Intl.DateTimeFormat(locale, { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' }).format(date)\r\n\r\n/**\r\n * Formats a date using a small token vocabulary: `dd`, `MM`, `yyyy`.\r\n * Kept locale-independent so the text input round-trips with `parseDate`.\r\n */\r\nexport const formatDate = (date: Date | null | undefined, format: string): string => {\r\n if (!isValidDate(date)) {\r\n return ''\r\n }\r\n const day = String(date.getDate()).padStart(2, '0')\r\n const month = String(date.getMonth() + 1).padStart(2, '0')\r\n const year = String(date.getFullYear()).padStart(4, '0')\r\n return format.replace('yyyy', year).replace('MM', month).replace('dd', day)\r\n}\r\n\r\n/**\r\n * Parses a string into a `Date` using the same `dd`/`MM`/`yyyy` token format.\r\n * Returns `null` when the string does not match or the date is invalid (e.g. 31/02).\r\n */\r\nexport const parseDate = (value: string, format: string): Date | null => {\r\n const trimmed = value.trim()\r\n if (trimmed === '') {\r\n return null\r\n }\r\n\r\n const tokens = ['dd', 'MM', 'yyyy'] as const\r\n const positions = tokens\r\n .map((token) => ({ token, index: format.indexOf(token) }))\r\n .filter((entry) => entry.index >= 0)\r\n .sort((a, b) => a.index - b.index)\r\n\r\n // Build a regex from the format so literal separators are matched exactly.\r\n let pattern = ''\r\n let cursor = 0\r\n for (const { token, index } of positions) {\r\n pattern += escapeRegExp(format.slice(cursor, index))\r\n pattern += token === 'yyyy' ? '(\\\\d{1,4})' : '(\\\\d{1,2})'\r\n cursor = index + token.length\r\n }\r\n pattern += escapeRegExp(format.slice(cursor))\r\n\r\n const match = new RegExp(`^${pattern}$`).exec(trimmed)\r\n if (!match) {\r\n return null\r\n }\r\n\r\n const parts: Record<string, number> = {}\r\n positions.forEach(({ token }, order) => {\r\n parts[token] = Number(match[order + 1])\r\n })\r\n\r\n const year = parts.yyyy ?? new Date().getFullYear()\r\n const month = (parts.MM ?? 1) - 1\r\n const day = parts.dd ?? 1\r\n\r\n const candidate = new Date(year, month, day)\r\n // Reject overflow (e.g. 31/02 rolling into March).\r\n if (\r\n candidate.getFullYear() !== year ||\r\n candidate.getMonth() !== month ||\r\n candidate.getDate() !== day\r\n ) {\r\n return null\r\n }\r\n return candidate\r\n}\r\n\r\n/** Escapes a literal string for safe insertion into a RegExp. */\r\nconst escapeRegExp = (value: string): string => value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\r\n","import { FC } from 'react'\r\n\r\nimport {\r\n ChevronLeftIcon,\r\n ChevronRightIcon,\r\n ChevronsLeftIcon,\r\n ChevronsRightIcon,\r\n} from '@resources/Icons'\r\nimport { IconButton } from '@components/actions/icon-button'\r\nimport { CALENDAR_PICKER_HEADER_STYLES } from '@components/forms/date-picker/calendar/components/calendar-picker-header/CalendarPickerHeader.styles'\r\nimport { CALENDAR_DAY_VIEW_STYLES } from '@components/forms/date-picker/calendar/components/calendar-day-view/CalendarDayView.styles'\r\nimport {\r\n getFullDateLabel,\r\n isDateDisabled,\r\n isSameDay,\r\n isSameMonth,\r\n} from '@components/forms/date-picker/utils/date.utils'\r\n\r\nimport type { CalendarDayViewProps } from '@components/forms/date-picker/calendar/components/calendar-day-view/CalendarDayView.props'\r\n\r\n/**\r\n * Day grid panel: month/year navigation header + weekday column headers + day cells.\r\n * Implements the WAI-ARIA date-grid pattern with a single tab stop (roving tabindex).\r\n */\r\nconst CalendarDayView: FC<CalendarDayViewProps> = ({\r\n headingId,\r\n gridRef,\r\n viewDate,\r\n focusedDate,\r\n selectedDate,\r\n monthLabel,\r\n weekdays,\r\n weeks,\r\n locale,\r\n minDate,\r\n maxDate,\r\n today,\r\n isPreviousMonthDisabled,\r\n isNextMonthDisabled,\r\n isPreviousYearDisabled,\r\n isNextYearDisabled,\r\n goToPreviousMonth,\r\n goToNextMonth,\r\n goToPreviousYear,\r\n goToNextYear,\r\n handleGridKeyDown,\r\n selectDate,\r\n registerDayRef,\r\n getDayKey,\r\n showMonthView,\r\n}) => (\r\n <>\r\n <div className={CALENDAR_PICKER_HEADER_STYLES.header}>\r\n <div className={CALENDAR_PICKER_HEADER_STYLES.navGroup}>\r\n <IconButton\r\n icon={ChevronsLeftIcon}\r\n ariaLabel={'Previous year'}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={'sm'}\r\n disabled={isPreviousYearDisabled}\r\n onClick={goToPreviousYear}\r\n />\r\n <IconButton\r\n icon={ChevronLeftIcon}\r\n ariaLabel={'Previous month'}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={'sm'}\r\n disabled={isPreviousMonthDisabled}\r\n onClick={goToPreviousMonth}\r\n />\r\n </div>\r\n\r\n <button\r\n type={'button'}\r\n id={headingId}\r\n className={CALENDAR_PICKER_HEADER_STYLES.headingButton}\r\n aria-live={'polite'}\r\n aria-label={`${monthLabel}, choose a month or year`}\r\n onClick={showMonthView}\r\n >\r\n {monthLabel}\r\n </button>\r\n\r\n <div className={CALENDAR_PICKER_HEADER_STYLES.navGroup}>\r\n <IconButton\r\n icon={ChevronRightIcon}\r\n ariaLabel={'Next month'}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={'sm'}\r\n disabled={isNextMonthDisabled}\r\n onClick={goToNextMonth}\r\n />\r\n <IconButton\r\n icon={ChevronsRightIcon}\r\n ariaLabel={'Next year'}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={'sm'}\r\n disabled={isNextYearDisabled}\r\n onClick={goToNextYear}\r\n />\r\n </div>\r\n </div>\r\n\r\n <div\r\n ref={gridRef}\r\n role={'grid'}\r\n tabIndex={-1}\r\n aria-labelledby={headingId}\r\n className={CALENDAR_DAY_VIEW_STYLES.grid}\r\n onKeyDown={handleGridKeyDown}\r\n >\r\n <div\r\n role={'row'}\r\n className={CALENDAR_DAY_VIEW_STYLES.weekRow}\r\n >\r\n {weekdays.map((weekday) => (\r\n <span\r\n key={weekday.long}\r\n role={'columnheader'}\r\n aria-label={weekday.long}\r\n className={CALENDAR_DAY_VIEW_STYLES.weekdayHeader}\r\n >\r\n <abbr\r\n title={weekday.long}\r\n style={{ textDecoration: 'none' }}\r\n >\r\n {weekday.short}\r\n </abbr>\r\n </span>\r\n ))}\r\n </div>\r\n\r\n {weeks.map((week) => (\r\n <div\r\n key={getDayKey(week[0])}\r\n role={'row'}\r\n className={CALENDAR_DAY_VIEW_STYLES.weekRow}\r\n >\r\n {week.map((day) => {\r\n const isOutside = !isSameMonth(day, viewDate)\r\n const isSelected = isSameDay(day, selectedDate)\r\n const isToday = isSameDay(day, today)\r\n const isDisabled = isDateDisabled(day, minDate, maxDate)\r\n const isFocusTarget = isSameDay(day, focusedDate)\r\n\r\n return (\r\n <div\r\n key={getDayKey(day)}\r\n role={'gridcell'}\r\n aria-selected={isSelected || undefined}\r\n className={CALENDAR_DAY_VIEW_STYLES.cell}\r\n >\r\n <button\r\n ref={(node) => registerDayRef(getDayKey(day), node)}\r\n type={'button'}\r\n tabIndex={isFocusTarget ? 0 : -1}\r\n className={CALENDAR_DAY_VIEW_STYLES.day}\r\n data-outside={isOutside || undefined}\r\n data-selected={isSelected || undefined}\r\n data-today={isToday || undefined}\r\n data-disabled={isDisabled || undefined}\r\n aria-label={getFullDateLabel(day, locale)}\r\n aria-current={isToday ? 'date' : undefined}\r\n aria-disabled={isDisabled || undefined}\r\n onClick={() => selectDate(day)}\r\n >\r\n {day.getDate()}\r\n </button>\r\n </div>\r\n )\r\n })}\r\n </div>\r\n ))}\r\n </div>\r\n </>\r\n)\r\n\r\nCalendarDayView.displayName = 'CalendarDayView'\r\n\r\nexport default CalendarDayView\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const CALENDAR_MONTH_VIEW_STYLES = createStyles((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n /** 3-column grid hosting the month options. */\r\n optionGrid: {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(3, 1fr)',\r\n gap: theme.spacing['2xs'],\r\n padding: `${theme.spacing['2xs']} 0`,\r\n },\r\n /** A single month choice inside the picker panel. */\r\n option: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: '2.5rem',\r\n padding: `0 ${theme.spacing.xs}`,\r\n border: 'none',\r\n borderRadius: theme.radius.md,\r\n background: 'transparent',\r\n color: c.textPrimary,\r\n fontFamily: 'inherit',\r\n fontSize: theme.fontSize.sm,\r\n cursor: 'pointer',\r\n transition: `background-color ${theme.transition.fast}, color ${theme.transition.fast}`,\r\n outline: 'none',\r\n textTransform: 'capitalize' as const,\r\n ':hover:not([data-disabled]):not([data-selected])': {\r\n backgroundColor: c.primarySubtle,\r\n },\r\n ':focus-visible': getFocusRingStyles(theme),\r\n '&[data-disabled]': {\r\n color: c.textDisabled,\r\n cursor: 'not-allowed',\r\n },\r\n '&[data-today]:not([data-selected])': {\r\n fontWeight: theme.fontWeight.bold,\r\n boxShadow: `inset 0 0 0 1px ${c.borderStrong}`,\r\n },\r\n '&[data-selected]': {\r\n backgroundColor: c.primaryMain,\r\n color: c.primaryOn,\r\n fontWeight: theme.fontWeight.semibold,\r\n },\r\n },\r\n }\r\n}, { id: 'calendar-month-view' })\r\n","import { FC } from 'react'\r\n\r\nimport { ChevronLeftIcon, ChevronRightIcon } from '@resources/Icons'\r\nimport { IconButton } from '@components/actions/icon-button'\r\nimport { CALENDAR_PICKER_HEADER_STYLES } from '@components/forms/date-picker/calendar/components/calendar-picker-header/CalendarPickerHeader.styles'\r\n\r\nimport type { CalendarPickerHeaderProps } from '@components/forms/date-picker/calendar/components/calendar-picker-header/CalendarPickerHeader.props'\r\n\r\n/** Shared navigation header used by the month-picker and year-picker panels. */\r\nconst CalendarPickerHeader: FC<CalendarPickerHeaderProps> = ({\r\n label,\r\n onLabelClick,\r\n headingId,\r\n previousAriaLabel,\r\n nextAriaLabel,\r\n isPreviousDisabled,\r\n isNextDisabled,\r\n onPrevious,\r\n onNext,\r\n}) => (\r\n <div className={CALENDAR_PICKER_HEADER_STYLES.header}>\r\n <div className={CALENDAR_PICKER_HEADER_STYLES.navGroup}>\r\n <IconButton\r\n icon={ChevronLeftIcon}\r\n ariaLabel={previousAriaLabel}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={'sm'}\r\n disabled={isPreviousDisabled}\r\n onClick={onPrevious}\r\n />\r\n </div>\r\n\r\n {onLabelClick ? (\r\n <button\r\n type={'button'}\r\n className={CALENDAR_PICKER_HEADER_STYLES.headingButton}\r\n onClick={onLabelClick}\r\n >\r\n {label}\r\n </button>\r\n ) : (\r\n <span\r\n id={headingId}\r\n className={CALENDAR_PICKER_HEADER_STYLES.heading}\r\n aria-live={'polite'}\r\n >\r\n {label}\r\n </span>\r\n )}\r\n\r\n <div className={CALENDAR_PICKER_HEADER_STYLES.navGroup}>\r\n <IconButton\r\n icon={ChevronRightIcon}\r\n ariaLabel={nextAriaLabel}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={'sm'}\r\n disabled={isNextDisabled}\r\n onClick={onNext}\r\n />\r\n </div>\r\n </div>\r\n)\r\n\r\nCalendarPickerHeader.displayName = 'CalendarPickerHeader'\r\n\r\nexport default CalendarPickerHeader\r\n","import { FC } from 'react'\r\n\r\nimport { CALENDAR_MONTH_VIEW_STYLES } from '@components/forms/date-picker/calendar/components/calendar-month-view/CalendarMonthView.styles'\r\nimport CalendarPickerHeader from '@components/forms/date-picker/calendar/components/calendar-picker-header/CalendarPickerHeader'\r\nimport { getMonthLabel, isMonthDisabled } from '@components/forms/date-picker/utils/date.utils'\r\n\r\nimport type { CalendarMonthViewProps } from '@components/forms/date-picker/calendar/components/calendar-month-view/CalendarMonthView.props'\r\n\r\n/** 3-column month picker panel with year navigation and a clickable year heading. */\r\nconst CalendarMonthView: FC<CalendarMonthViewProps> = ({\r\n viewYear,\r\n selectedYear,\r\n selectedMonth,\r\n todayYear,\r\n todayMonth,\r\n monthLabels,\r\n locale,\r\n minDate,\r\n maxDate,\r\n isPreviousYearDisabled,\r\n isNextYearDisabled,\r\n goToPreviousYear,\r\n goToNextYear,\r\n showYearView,\r\n selectMonth,\r\n}) => (\r\n <>\r\n <CalendarPickerHeader\r\n label={String(viewYear)}\r\n onLabelClick={showYearView}\r\n previousAriaLabel={'Previous year'}\r\n nextAriaLabel={'Next year'}\r\n isPreviousDisabled={isPreviousYearDisabled}\r\n isNextDisabled={isNextYearDisabled}\r\n onPrevious={goToPreviousYear}\r\n onNext={goToNextYear}\r\n />\r\n\r\n <div\r\n role={'grid'}\r\n aria-label={'Choose a month'}\r\n className={CALENDAR_MONTH_VIEW_STYLES.optionGrid}\r\n >\r\n {monthLabels.map((label, month) => {\r\n const isDisabled = isMonthDisabled(viewYear, month, minDate, maxDate)\r\n const isSelected = selectedYear === viewYear && selectedMonth === month\r\n const isCurrent = todayYear === viewYear && todayMonth === month\r\n\r\n return (\r\n <button\r\n key={label}\r\n type={'button'}\r\n className={CALENDAR_MONTH_VIEW_STYLES.option}\r\n data-selected={isSelected || undefined}\r\n data-today={isCurrent || undefined}\r\n data-disabled={isDisabled || undefined}\r\n aria-label={getMonthLabel(locale, month)}\r\n aria-disabled={isDisabled || undefined}\r\n aria-current={isCurrent ? 'date' : undefined}\r\n onClick={() => !isDisabled && selectMonth(month)}\r\n >\r\n {label}\r\n </button>\r\n )\r\n })}\r\n </div>\r\n </>\r\n)\r\n\r\nCalendarMonthView.displayName = 'CalendarMonthView'\r\n\r\nexport default CalendarMonthView\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const CALENDAR_YEAR_VIEW_STYLES = createStyles((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n /** 3-column grid hosting the year options. */\r\n optionGrid: {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(3, 1fr)',\r\n gap: theme.spacing['2xs'],\r\n padding: `${theme.spacing['2xs']} 0`,\r\n },\r\n /** A single year choice inside the picker panel. */\r\n option: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: '2.5rem',\r\n padding: `0 ${theme.spacing.xs}`,\r\n border: 'none',\r\n borderRadius: theme.radius.md,\r\n background: 'transparent',\r\n color: c.textPrimary,\r\n fontFamily: 'inherit',\r\n fontSize: theme.fontSize.sm,\r\n cursor: 'pointer',\r\n transition: `background-color ${theme.transition.fast}, color ${theme.transition.fast}`,\r\n outline: 'none',\r\n textTransform: 'capitalize' as const,\r\n ':hover:not([data-disabled]):not([data-selected])': {\r\n backgroundColor: c.primarySubtle,\r\n },\r\n ':focus-visible': getFocusRingStyles(theme),\r\n '&[data-disabled]': {\r\n color: c.textDisabled,\r\n cursor: 'not-allowed',\r\n },\r\n '&[data-today]:not([data-selected])': {\r\n fontWeight: theme.fontWeight.bold,\r\n boxShadow: `inset 0 0 0 1px ${c.borderStrong}`,\r\n },\r\n '&[data-selected]': {\r\n backgroundColor: c.primaryMain,\r\n color: c.primaryOn,\r\n fontWeight: theme.fontWeight.semibold,\r\n },\r\n },\r\n }\r\n}, { id: 'calendar-year-view' })\r\n","import { FC } from 'react'\r\n\r\nimport { CALENDAR_YEAR_VIEW_STYLES } from '@components/forms/date-picker/calendar/components/calendar-year-view/CalendarYearView.styles'\r\nimport CalendarPickerHeader from '@components/forms/date-picker/calendar/components/calendar-picker-header/CalendarPickerHeader'\r\nimport { isYearDisabled } from '@components/forms/date-picker/utils/date.utils'\r\n\r\nimport type { CalendarYearViewProps } from '@components/forms/date-picker/calendar/components/calendar-year-view/CalendarYearView.props'\r\n\r\n/** 3-column year picker panel with year-range navigation. */\r\nconst CalendarYearView: FC<CalendarYearViewProps> = ({\r\n yearRange,\r\n selectedYear,\r\n todayYear,\r\n minDate,\r\n maxDate,\r\n goToPreviousYears,\r\n goToNextYears,\r\n selectYear,\r\n}) => (\r\n <>\r\n <CalendarPickerHeader\r\n label={`${yearRange[0]} \\u2013 ${yearRange[yearRange.length - 1]}`}\r\n previousAriaLabel={'Previous years'}\r\n nextAriaLabel={'Next years'}\r\n onPrevious={goToPreviousYears}\r\n onNext={goToNextYears}\r\n />\r\n\r\n <div\r\n role={'grid'}\r\n aria-label={'Choose a year'}\r\n className={CALENDAR_YEAR_VIEW_STYLES.optionGrid}\r\n >\r\n {yearRange.map((year) => {\r\n const isDisabled = isYearDisabled(year, minDate, maxDate)\r\n const isSelected = selectedYear === year\r\n const isCurrent = todayYear === year\r\n\r\n return (\r\n <button\r\n key={year}\r\n type={'button'}\r\n className={CALENDAR_YEAR_VIEW_STYLES.option}\r\n data-selected={isSelected || undefined}\r\n data-today={isCurrent || undefined}\r\n data-disabled={isDisabled || undefined}\r\n aria-disabled={isDisabled || undefined}\r\n aria-current={isCurrent ? 'date' : undefined}\r\n onClick={() => !isDisabled && selectYear(year)}\r\n >\r\n {year}\r\n </button>\r\n )\r\n })}\r\n </div>\r\n </>\r\n)\r\n\r\nCalendarYearView.displayName = 'CalendarYearView'\r\n\r\nexport default CalendarYearView\r\n","import { KeyboardEvent, RefObject, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react'\r\n\r\nimport {\r\n addDays,\r\n addMonths,\r\n addYears,\r\n clampDate,\r\n getYearRange,\r\n isDateDisabled,\r\n isSameMonth,\r\n isValidDate,\r\n startOfDay,\r\n} from '@components/forms/date-picker/utils/date.utils'\r\n\r\nimport type { CalendarView, WeekStart } from '@components/forms/date-picker/datePicker.types'\r\n\r\n/** Number of years shown per page in the year-picker grid. */\r\nconst YEARS_PER_PAGE = 12\r\n\r\ntype UseCalendarParams = {\r\n selectedDate: Date | null\r\n minDate?: Date\r\n maxDate?: Date\r\n weekStartsOn: WeekStart\r\n id?: string\r\n onSelect: (date: Date) => void\r\n}\r\n\r\ntype UseCalendarReturn = {\r\n headingId: string\r\n gridRef: RefObject<HTMLDivElement | null>\r\n /** First day of the month currently displayed in the grid. */\r\n viewDate: Date\r\n /** The day that owns `tabIndex = 0` (roving tabindex). */\r\n focusedDate: Date\r\n /** Active panel: day grid, month picker or year picker. */\r\n view: CalendarView\r\n /** Inclusive list of years shown in the year-picker grid. */\r\n yearRange: number[]\r\n /** Switches the calendar to the month-picker panel. */\r\n showMonthView: () => void\r\n /** Switches the calendar to the year-picker panel. */\r\n showYearView: () => void\r\n /** Picks a month (0–11) and returns to the day grid. */\r\n selectMonth: (month: number) => void\r\n /** Picks a year and returns to the month-picker panel. */\r\n selectYear: (year: number) => void\r\n /** Registers a day button so focus can be moved to it programmatically. */\r\n registerDayRef: (key: string, node: HTMLButtonElement | null) => void\r\n /** Stable key for a given date used by `registerDayRef`. */\r\n getDayKey: (date: Date) => string\r\n goToPreviousMonth: () => void\r\n goToNextMonth: () => void\r\n goToPreviousYear: () => void\r\n goToNextYear: () => void\r\n goToPreviousYears: () => void\r\n goToNextYears: () => void\r\n isPreviousMonthDisabled: boolean\r\n isNextMonthDisabled: boolean\r\n isPreviousYearDisabled: boolean\r\n isNextYearDisabled: boolean\r\n handleGridKeyDown: (event: KeyboardEvent<HTMLDivElement>) => void\r\n selectDate: (date: Date) => void\r\n}\r\n\r\n/** Stable, locale-independent key for a date (used to map day refs). */\r\nconst dateKey = (date: Date): string =>\r\n `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`\r\n\r\n/**\r\n * Business logic for the Calendar: month navigation, roving-tabindex focus\r\n * management and full keyboard support (arrows, Home/End, PageUp/PageDown,\r\n * Shift+PageUp/PageDown for years), clamped to the `[minDate, maxDate]` range.\r\n */\r\nexport const useCalendar = ({\r\n selectedDate,\r\n minDate,\r\n maxDate,\r\n weekStartsOn,\r\n id,\r\n onSelect,\r\n}: UseCalendarParams): UseCalendarReturn => {\r\n const generatedId = useId()\r\n const rootId = id ?? generatedId\r\n const headingId = `${rootId}-heading`\r\n\r\n const gridRef = useRef<HTMLDivElement>(null)\r\n const dayRefs = useRef(new Map<string, HTMLButtonElement>())\r\n // When true, the next render focuses the button matching `focusedDate`.\r\n const shouldFocusRef = useRef(false)\r\n\r\n const initialDate = useMemo(() => {\r\n const base = isValidDate(selectedDate) ? selectedDate : new Date()\r\n return clampDate(startOfDay(base), minDate, maxDate)\r\n // Only compute the initial date once (on mount); later changes use navigation.\r\n }, [])\r\n\r\n const [viewDate, setViewDate] = useState<Date>(\r\n () => new Date(initialDate.getFullYear(), initialDate.getMonth(), 1)\r\n )\r\n const [focusedDate, setFocusedDate] = useState<Date>(initialDate)\r\n const [view, setView] = useState<CalendarView>('days')\r\n\r\n const registerDayRef = useCallback((key: string, node: HTMLButtonElement | null) => {\r\n if (node) {\r\n dayRefs.current.set(key, node)\r\n } else {\r\n dayRefs.current.delete(key)\r\n }\r\n }, [])\r\n\r\n // After a keyboard move, focus the button representing the focused date.\r\n useEffect(() => {\r\n if (!shouldFocusRef.current) {\r\n return\r\n }\r\n shouldFocusRef.current = false\r\n dayRefs.current.get(dateKey(focusedDate))?.focus()\r\n }, [focusedDate, viewDate])\r\n\r\n /** Moves the focused day, clamping into range and syncing the visible month. */\r\n const moveFocus = useCallback(\r\n (next: Date) => {\r\n const clamped = clampDate(startOfDay(next), minDate, maxDate)\r\n shouldFocusRef.current = true\r\n setFocusedDate(clamped)\r\n setViewDate((current) =>\r\n isSameMonth(current, clamped)\r\n ? current\r\n : new Date(clamped.getFullYear(), clamped.getMonth(), 1)\r\n )\r\n },\r\n [minDate, maxDate]\r\n )\r\n\r\n const goToPreviousMonth = useCallback(() => setViewDate((d) => addMonths(d, -1)), [])\r\n const goToNextMonth = useCallback(() => setViewDate((d) => addMonths(d, 1)), [])\r\n const goToPreviousYear = useCallback(() => setViewDate((d) => addYears(d, -1)), [])\r\n const goToNextYear = useCallback(() => setViewDate((d) => addYears(d, 1)), [])\r\n const goToPreviousYears = useCallback(() => setViewDate((d) => addYears(d, -YEARS_PER_PAGE)), [])\r\n const goToNextYears = useCallback(() => setViewDate((d) => addYears(d, YEARS_PER_PAGE)), [])\r\n\r\n // --- Month / year picker panels (mirrors the native date input affordance) ---\r\n const showMonthView = useCallback(() => setView('months'), [])\r\n const showYearView = useCallback(() => setView('years'), [])\r\n\r\n const selectMonth = useCallback((month: number) => {\r\n setViewDate((d) => new Date(d.getFullYear(), month, 1))\r\n setView('days')\r\n }, [])\r\n\r\n const selectYear = useCallback((year: number) => {\r\n setViewDate((d) => new Date(year, d.getMonth(), 1))\r\n setView('months')\r\n }, [])\r\n\r\n const yearRange = useMemo(() => getYearRange(viewDate.getFullYear(), YEARS_PER_PAGE), [viewDate])\r\n\r\n const selectDate = useCallback(\r\n (date: Date) => {\r\n if (isDateDisabled(date, minDate, maxDate)) {\r\n return\r\n }\r\n onSelect(startOfDay(date))\r\n },\r\n [minDate, maxDate, onSelect]\r\n )\r\n\r\n const handleGridKeyDown = useCallback(\r\n (event: KeyboardEvent<HTMLDivElement>) => {\r\n const handlers: Record<string, () => Date | undefined> = {\r\n ArrowLeft: () => addDays(focusedDate, -1),\r\n ArrowRight: () => addDays(focusedDate, 1),\r\n ArrowUp: () => addDays(focusedDate, -7),\r\n ArrowDown: () => addDays(focusedDate, 7),\r\n Home: () => addDays(focusedDate, -((focusedDate.getDay() - weekStartsOn + 7) % 7)),\r\n End: () => addDays(focusedDate, 6 - ((focusedDate.getDay() - weekStartsOn + 7) % 7)),\r\n PageUp: () => addMonths(focusedDate, event.shiftKey ? -12 : -1),\r\n PageDown: () => addMonths(focusedDate, event.shiftKey ? 12 : 1),\r\n }\r\n\r\n const compute = handlers[event.key]\r\n if (!compute) {\r\n return\r\n }\r\n const next = compute()\r\n if (next) {\r\n event.preventDefault()\r\n moveFocus(next)\r\n }\r\n },\r\n [focusedDate, weekStartsOn, moveFocus]\r\n )\r\n\r\n // --- Navigation button disabled states (whole target month out of range) ---\r\n const isPreviousMonthDisabled = useMemo(() => {\r\n if (!isValidDate(minDate)) {\r\n return false\r\n }\r\n const lastOfPrev = new Date(viewDate.getFullYear(), viewDate.getMonth(), 0)\r\n return isDateDisabled(lastOfPrev, minDate, maxDate)\r\n }, [viewDate, minDate, maxDate])\r\n\r\n const isNextMonthDisabled = useMemo(() => {\r\n if (!isValidDate(maxDate)) {\r\n return false\r\n }\r\n const firstOfNext = new Date(viewDate.getFullYear(), viewDate.getMonth() + 1, 1)\r\n return isDateDisabled(firstOfNext, minDate, maxDate)\r\n }, [viewDate, minDate, maxDate])\r\n\r\n const isPreviousYearDisabled = useMemo(() => {\r\n if (!isValidDate(minDate)) {\r\n return false\r\n }\r\n const lastOfPrevYear = new Date(viewDate.getFullYear() - 1, viewDate.getMonth() + 1, 0)\r\n return isDateDisabled(lastOfPrevYear, minDate, maxDate)\r\n }, [viewDate, minDate, maxDate])\r\n\r\n const isNextYearDisabled = useMemo(() => {\r\n if (!isValidDate(maxDate)) {\r\n return false\r\n }\r\n const firstOfNextYear = new Date(viewDate.getFullYear() + 1, viewDate.getMonth(), 1)\r\n return isDateDisabled(firstOfNextYear, minDate, maxDate)\r\n }, [viewDate, minDate, maxDate])\r\n\r\n return {\r\n headingId,\r\n gridRef,\r\n viewDate,\r\n focusedDate,\r\n view,\r\n yearRange,\r\n showMonthView,\r\n showYearView,\r\n selectMonth,\r\n selectYear,\r\n registerDayRef,\r\n getDayKey: dateKey,\r\n goToPreviousMonth,\r\n goToNextMonth,\r\n goToPreviousYear,\r\n goToNextYear,\r\n goToPreviousYears,\r\n goToNextYears,\r\n isPreviousMonthDisabled,\r\n isNextMonthDisabled,\r\n isPreviousYearDisabled,\r\n isNextYearDisabled,\r\n handleGridKeyDown,\r\n selectDate,\r\n }\r\n}\r\n","import { FC } from 'react'\r\n\r\nimport { CALENDAR_STYLES } from '@components/forms/date-picker/calendar/Calendar.styles'\r\nimport CalendarDayView from '@components/forms/date-picker/calendar/components/calendar-day-view/CalendarDayView'\r\nimport CalendarMonthView from '@components/forms/date-picker/calendar/components/calendar-month-view/CalendarMonthView'\r\nimport CalendarYearView from '@components/forms/date-picker/calendar/components/calendar-year-view/CalendarYearView'\r\nimport { useCalendar } from '@components/forms/date-picker/calendar/utils/useCalendar.utils'\r\nimport {\r\n getMonthLabels,\r\n getMonthMatrix,\r\n getMonthYearLabel,\r\n getWeekdayLabels,\r\n startOfDay,\r\n} from '@components/forms/date-picker/utils/date.utils'\r\n\r\nimport type { CalendarProps } from '@components/forms/date-picker/calendar/Calendar.props'\r\n\r\n/**\r\n * Accessible month calendar following the WAI-ARIA date-grid pattern.\r\n *\r\n * Renders a `role=\"grid\"` of days with a single tab stop (roving tabindex) and\r\n * full keyboard support handled by `useCalendar`. Clicking the heading swaps the\r\n * grid for a month picker, then a year picker (mirroring the native date input),\r\n * so the user can jump across months and years without paging one step at a time.\r\n */\r\nconst Calendar: FC<CalendarProps> = ({\r\n selectedDate,\r\n minDate,\r\n maxDate,\r\n locale,\r\n weekStartsOn,\r\n onSelect,\r\n id,\r\n}) => {\r\n const {\r\n headingId,\r\n gridRef,\r\n viewDate,\r\n focusedDate,\r\n view,\r\n yearRange,\r\n showMonthView,\r\n showYearView,\r\n selectMonth,\r\n selectYear,\r\n registerDayRef,\r\n getDayKey,\r\n goToPreviousMonth,\r\n goToNextMonth,\r\n goToPreviousYear,\r\n goToNextYear,\r\n goToPreviousYears,\r\n goToNextYears,\r\n isPreviousMonthDisabled,\r\n isNextMonthDisabled,\r\n isPreviousYearDisabled,\r\n isNextYearDisabled,\r\n handleGridKeyDown,\r\n selectDate,\r\n } = useCalendar({ selectedDate, minDate, maxDate, weekStartsOn, id, onSelect })\r\n\r\n const weekdays = getWeekdayLabels(locale, weekStartsOn)\r\n const weeks = getMonthMatrix(viewDate, weekStartsOn)\r\n const monthLabel = getMonthYearLabel(viewDate, locale)\r\n const monthLabels = getMonthLabels(locale)\r\n const today = startOfDay(new Date())\r\n const viewYear = viewDate.getFullYear()\r\n const selectedYear = selectedDate?.getFullYear()\r\n const selectedMonth = selectedDate?.getMonth()\r\n const todayYear = today.getFullYear()\r\n const todayMonth = today.getMonth()\r\n\r\n return (\r\n <div\r\n id={id}\r\n className={CALENDAR_STYLES.root}\r\n >\r\n {view === 'months' && (\r\n <CalendarMonthView\r\n viewYear={viewYear}\r\n selectedYear={selectedYear}\r\n selectedMonth={selectedMonth}\r\n todayYear={todayYear}\r\n todayMonth={todayMonth}\r\n monthLabels={monthLabels}\r\n locale={locale}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n isPreviousYearDisabled={isPreviousYearDisabled}\r\n isNextYearDisabled={isNextYearDisabled}\r\n goToPreviousYear={goToPreviousYear}\r\n goToNextYear={goToNextYear}\r\n showYearView={showYearView}\r\n selectMonth={selectMonth}\r\n />\r\n )}\r\n\r\n {view === 'years' && (\r\n <CalendarYearView\r\n yearRange={yearRange}\r\n selectedYear={selectedYear}\r\n todayYear={todayYear}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n goToPreviousYears={goToPreviousYears}\r\n goToNextYears={goToNextYears}\r\n selectYear={selectYear}\r\n />\r\n )}\r\n\r\n {view === 'days' && (\r\n <CalendarDayView\r\n headingId={headingId}\r\n gridRef={gridRef}\r\n viewDate={viewDate}\r\n focusedDate={focusedDate}\r\n selectedDate={selectedDate}\r\n monthLabel={monthLabel}\r\n weekdays={weekdays}\r\n weeks={weeks}\r\n locale={locale}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n today={today}\r\n isPreviousMonthDisabled={isPreviousMonthDisabled}\r\n isNextMonthDisabled={isNextMonthDisabled}\r\n isPreviousYearDisabled={isPreviousYearDisabled}\r\n isNextYearDisabled={isNextYearDisabled}\r\n goToPreviousMonth={goToPreviousMonth}\r\n goToNextMonth={goToNextMonth}\r\n goToPreviousYear={goToPreviousYear}\r\n goToNextYear={goToNextYear}\r\n handleGridKeyDown={handleGridKeyDown}\r\n selectDate={selectDate}\r\n registerDayRef={registerDayRef}\r\n getDayKey={getDayKey}\r\n showMonthView={showMonthView}\r\n />\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nCalendar.displayName = 'Calendar'\r\n\r\nexport default Calendar\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const DATE_PICKER_STYLES = createStyles((theme) => ({\r\n /** Transparent full-viewport layer that closes the popover on outside click. */\r\n backdrop: {\r\n position: 'fixed' as const,\r\n inset: 0,\r\n zIndex: theme.zIndex.dropdown - 1,\r\n },\r\n /** Floating dialog panel that hosts the calendar. */\r\n panel: {\r\n position: 'fixed' as const,\r\n zIndex: theme.zIndex.dropdown,\r\n backgroundColor: theme.colors.surfacePaper,\r\n borderRadius: theme.radius.lg,\r\n border: `1px solid ${theme.colors.borderMain}`,\r\n boxShadow: theme.shadows.md,\r\n outline: 'none',\r\n },\r\n}), { id: 'date-picker' })\r\n","import { RefObject, useEffect } from 'react'\r\n\r\nconst FOCUSABLE_SELECTOR = [\r\n 'a[href]',\r\n 'button:not([disabled])',\r\n 'textarea:not([disabled])',\r\n 'input:not([disabled])',\r\n 'select:not([disabled])',\r\n '[tabindex]:not([tabindex=\"-1\"])',\r\n].join(',')\r\n\r\nconst getFocusable = (container: HTMLElement): HTMLElement[] =>\r\n Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\r\n (el) => el.offsetParent !== null || el === document.activeElement\r\n )\r\n\r\n/**\r\n * Traps Tab / Shift+Tab focus within the element referenced by `containerRef`\r\n * while `active` is true. Focusable elements are recomputed on each Tab press\r\n * so dynamic content is handled correctly. Required for accessible modals.\r\n *\r\n * @example useFocusTrap(panelRef, open)\r\n */\r\nexport const useFocusTrap = (\r\n containerRef: RefObject<HTMLElement | null>,\r\n active: boolean\r\n): void => {\r\n useEffect(() => {\r\n if (!active) {return}\r\n const container = containerRef.current\r\n if (!container) {return}\r\n\r\n const handleKeyDown = (event: KeyboardEvent): void => {\r\n if (event.key !== 'Tab') {return}\r\n\r\n const focusable = getFocusable(container)\r\n if (focusable.length === 0) {\r\n event.preventDefault()\r\n container.focus()\r\n return\r\n }\r\n\r\n const first = focusable[0]\r\n const last = focusable[focusable.length - 1]\r\n const activeEl = document.activeElement\r\n\r\n if (event.shiftKey) {\r\n if (activeEl === first || activeEl === container || !container.contains(activeEl)) {\r\n event.preventDefault()\r\n last.focus()\r\n }\r\n } else if (activeEl === last) {\r\n event.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n container.addEventListener('keydown', handleKeyDown)\r\n return () => container.removeEventListener('keydown', handleKeyDown)\r\n }, [active, containerRef])\r\n}\r\n","import { FC, useEffect, useRef } from 'react'\r\nimport { createPortal } from 'react-dom'\r\n\r\nimport { Calendar } from '@components/forms/date-picker/calendar'\r\nimport { DATE_PICKER_STYLES } from '@components/forms/date-picker/DatePicker.styles'\r\nimport { useFocusTrap } from '@hooks/common/use-focus-trap/useFocusTrap'\r\nimport { useKeyPress } from '@hooks/common/use-key-press/useKeyPress'\r\nimport { useMenuPosition } from '@hooks/components/overlay/use-menu-position/useMenuPosition'\r\n\r\nimport type { CalendarPopoverProps } from '@components/forms/date-picker/calendar-popover/CalendarPopover.props'\r\n\r\n/** Floating, focus-trapped dialog that hosts the calendar grid. */\r\nconst CalendarPopover: FC<CalendarPopoverProps> = ({\r\n anchorEl,\r\n dialogId,\r\n ariaLabel,\r\n onClose,\r\n selectedDate,\r\n minDate,\r\n maxDate,\r\n locale,\r\n weekStartsOn,\r\n onSelect,\r\n}) => {\r\n const panelRef = useRef<HTMLDivElement>(null)\r\n const { style } = useMenuPosition({ anchorEl, open: true, menuRef: panelRef })\r\n\r\n useFocusTrap(panelRef, true)\r\n useKeyPress({ Escape: onClose }, { enabled: true })\r\n\r\n // Move focus into the calendar (onto the active day) once the panel renders.\r\n useEffect(() => {\r\n const id = requestAnimationFrame(() => {\r\n const activeDay = panelRef.current?.querySelector<HTMLButtonElement>(\r\n '[role=\"gridcell\"] button[tabindex=\"0\"]'\r\n )\r\n activeDay?.focus()\r\n })\r\n return () => cancelAnimationFrame(id)\r\n }, [])\r\n\r\n return createPortal(\r\n <>\r\n <div\r\n className={DATE_PICKER_STYLES.backdrop}\r\n onClick={onClose}\r\n aria-hidden={true}\r\n />\r\n <div\r\n ref={panelRef}\r\n id={dialogId}\r\n role={'dialog'}\r\n aria-modal={true}\r\n aria-label={ariaLabel}\r\n className={DATE_PICKER_STYLES.panel}\r\n style={{ ...style, minWidth: 'fit-content' }}\r\n >\r\n <Calendar\r\n selectedDate={selectedDate}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n locale={locale}\r\n weekStartsOn={weekStartsOn ?? 1}\r\n onSelect={onSelect}\r\n />\r\n </div>\r\n </>,\r\n document.body\r\n )\r\n}\r\n\r\nCalendarPopover.displayName = 'CalendarPopover'\r\n\r\nexport default CalendarPopover\r\n","import {\r\n ChangeEvent,\r\n RefCallback,\r\n RefObject,\r\n useCallback,\r\n useEffect,\r\n useId,\r\n useMemo,\r\n useRef,\r\n useState,\r\n} from 'react'\r\n\r\nimport { useControllableState } from '@hooks/common/use-controllable-state/useControllableState'\r\nimport { useMergedRefs } from '@hooks/common/use-merged-refs/useMergedRefs'\r\n\r\nimport { clampDate, formatDate, isValidDate, parseDate, startOfDay } from '@components/forms/date-picker/utils/date.utils'\r\n\r\nimport type { DatePickerProps } from '@components/forms/date-picker/DatePicker.props'\r\n\r\ntype UseDatePickerParams = {\r\n id?: string\r\n ref?: DatePickerProps['ref']\r\n value?: Date | null\r\n defaultValue?: Date | null\r\n onChange?: (date: Date | null) => void\r\n minDate?: Date\r\n maxDate?: Date\r\n displayFormat: string\r\n disabled?: boolean\r\n}\r\n\r\ntype UseDatePickerReturn = {\r\n fieldId: string\r\n helperId: string\r\n dialogId: string\r\n inputRef: RefObject<HTMLInputElement | null>\r\n mergedRef: RefCallback<HTMLInputElement>\r\n anchorEl: HTMLElement | null\r\n open: boolean\r\n openMenu: () => void\r\n toggle: () => void\r\n close: () => void\r\n currentValue: Date | null\r\n inputValue: string\r\n handleInputChange: (event: ChangeEvent<HTMLInputElement>) => void\r\n handleInputBlur: () => void\r\n handleSelect: (date: Date) => void\r\n}\r\n\r\n/**\r\n * Business logic for the DatePicker: id resolution, ref merging,\r\n * controlled/uncontrolled `Date` handling, text input parsing/formatting,\r\n * open state and focus restoration to the input when the calendar closes.\r\n */\r\nexport const useDatePicker = ({\r\n id,\r\n ref,\r\n value,\r\n defaultValue,\r\n onChange,\r\n minDate,\r\n maxDate,\r\n displayFormat,\r\n disabled,\r\n}: UseDatePickerParams): UseDatePickerReturn => {\r\n const generatedId = useId()\r\n const fieldId = id ?? generatedId\r\n const helperId = `${fieldId}-helper`\r\n const dialogId = `${fieldId}-dialog`\r\n\r\n const inputRef = useRef<HTMLInputElement | null>(null)\r\n const mergedRef = useMergedRefs<HTMLInputElement>(ref, inputRef)\r\n\r\n const [open, setOpen] = useState(false)\r\n\r\n const [currentValue, setValue] = useControllableState<Date | null>({\r\n value,\r\n defaultValue: defaultValue ?? null,\r\n onChange,\r\n })\r\n\r\n // Text shown in the input. Kept in sync with the value, but editable so the\r\n // user can type freely without losing keystrokes before the value parses.\r\n const formattedValue = useMemo(\r\n () => formatDate(currentValue, displayFormat),\r\n [currentValue, displayFormat]\r\n )\r\n const [draft, setDraft] = useState<string | null>(null)\r\n const inputValue = draft ?? formattedValue\r\n\r\n // Restore focus to the input when the calendar closes.\r\n const wasOpenRef = useRef(false)\r\n useEffect(() => {\r\n if (wasOpenRef.current && !open) {\r\n inputRef.current?.focus()\r\n }\r\n wasOpenRef.current = open\r\n }, [open])\r\n\r\n // Commits a value into the (controlled/uncontrolled) state, clamped to range.\r\n const commitValue = useCallback(\r\n (date: Date | null) => {\r\n const next = isValidDate(date) ? clampDate(startOfDay(date), minDate, maxDate) : null\r\n setValue(next)\r\n },\r\n [setValue, minDate, maxDate]\r\n )\r\n\r\n const handleInputChange = useCallback(\r\n (event: ChangeEvent<HTMLInputElement>) => {\r\n const text = event.target.value\r\n // Keep the raw text as the source of truth while the user is typing so\r\n // keystrokes are never overwritten by the formatted value mid-entry.\r\n setDraft(text)\r\n const parsed = parseDate(text, displayFormat)\r\n if (parsed) {\r\n commitValue(parsed)\r\n } else if (text.trim() === '') {\r\n commitValue(null)\r\n }\r\n },\r\n [displayFormat, commitValue]\r\n )\r\n\r\n const handleInputBlur = useCallback(() => {\r\n // Drop the draft so the input snaps back to the formatted value.\r\n setDraft(null)\r\n }, [])\r\n\r\n const openMenu = useCallback(() => {\r\n if (!disabled) {\r\n setOpen(true)\r\n }\r\n }, [disabled])\r\n\r\n const toggle = useCallback(() => {\r\n if (!disabled) {\r\n setOpen((prev) => !prev)\r\n }\r\n }, [disabled])\r\n\r\n const close = useCallback(() => setOpen(false), [])\r\n\r\n const handleSelect = useCallback(\r\n (date: Date) => {\r\n commitValue(date)\r\n setDraft(null)\r\n setOpen(false)\r\n },\r\n [commitValue]\r\n )\r\n\r\n return {\r\n fieldId,\r\n helperId,\r\n dialogId,\r\n inputRef,\r\n mergedRef,\r\n anchorEl: inputRef.current?.parentElement ?? inputRef.current,\r\n open,\r\n openMenu,\r\n toggle,\r\n close,\r\n currentValue,\r\n inputValue,\r\n handleInputChange,\r\n handleInputBlur,\r\n handleSelect,\r\n }\r\n}\r\n","import type { DatePickerSize } from '@components/forms/date-picker/datePicker.types'\r\n\r\n/** Maps the field size to the trigger IconButton size. */\r\nexport const ICON_BUTTON_SIZE: Record<DatePickerSize, 'sm' | 'md' | 'lg'> = {\r\n sm: 'sm',\r\n md: 'sm',\r\n lg: 'md',\r\n}\r\n","import { FC, KeyboardEvent } from 'react'\r\n\r\nimport { CalendarIcon } from '@resources/Icons'\r\nimport { IconButton } from '@components/actions/icon-button'\r\nimport { TextField } from '@components/forms/text-field'\r\nimport { CalendarPopover } from '@components/forms/date-picker/calendar-popover'\r\nimport { getLocaleDateFormat } from '@components/forms/date-picker/utils/date.utils'\r\nimport { useDatePicker } from '@components/forms/date-picker/utils/useDatePicker.utils'\r\nimport { ICON_BUTTON_SIZE } from '@components/forms/date-picker/utils/iconButtonSize.utils'\r\n\r\nimport type { DatePickerProps } from '@components/forms/date-picker/DatePicker.props'\r\n\r\n/**\r\n * Accessible date field combining a text input trigger and a calendar popover.\r\n *\r\n * The input round-trips the value with `displayFormat` (typing is allowed unless\r\n * `editable={false}`), while the trailing icon button opens a focus-trapped\r\n * `role=\"dialog\"` calendar following the WAI-ARIA date-grid pattern.\r\n *\r\n * @example <DatePicker label=\"Birth date\" />\r\n * @example <DatePicker label=\"Start\" minDate={new Date()} required helperText=\"Pick a future date.\" />\r\n */\r\nconst DatePicker: FC<DatePickerProps> = ({\r\n ref,\r\n value,\r\n defaultValue,\r\n onChange,\r\n minDate,\r\n maxDate,\r\n label,\r\n helperText,\r\n placeholder,\r\n size = 'md',\r\n status = 'default',\r\n disabled,\r\n required,\r\n editable = true,\r\n displayFormat,\r\n locale = 'en-US',\r\n weekStartsOn = 1,\r\n width,\r\n id,\r\n}) => {\r\n // When no explicit format is given, derive it from the locale (field order + separators).\r\n const resolvedFormat = displayFormat ?? getLocaleDateFormat(locale)\r\n\r\n const {\r\n fieldId,\r\n dialogId,\r\n mergedRef,\r\n anchorEl,\r\n open,\r\n openMenu,\r\n toggle,\r\n close,\r\n currentValue,\r\n inputValue,\r\n handleInputChange,\r\n handleInputBlur,\r\n handleSelect,\r\n } = useDatePicker({\r\n id,\r\n ref,\r\n value,\r\n defaultValue,\r\n onChange,\r\n minDate,\r\n maxDate,\r\n displayFormat: resolvedFormat,\r\n disabled,\r\n })\r\n\r\n const handleInputKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\r\n // ArrowDown (optionally with Alt) opens the calendar – common combobox affordance.\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault()\r\n openMenu()\r\n }\r\n }\r\n\r\n const calendarLabel = label !== undefined ? `Choose date, ${label}` : 'Choose date'\r\n\r\n return (\r\n <div style={{ width: width ?? '100%' }}>\r\n <TextField\r\n ref={mergedRef}\r\n id={fieldId}\r\n label={label}\r\n helperText={helperText}\r\n size={size}\r\n status={status}\r\n disabled={disabled}\r\n required={required}\r\n placeholder={placeholder ?? resolvedFormat.toUpperCase()}\r\n value={inputValue}\r\n readOnly={!editable}\r\n inputMode={'numeric'}\r\n autoComplete={'off'}\r\n aria-haspopup={'dialog'}\r\n aria-expanded={open}\r\n aria-controls={open ? dialogId : undefined}\r\n onChange={handleInputChange}\r\n onBlur={handleInputBlur}\r\n onKeyDown={handleInputKeyDown}\r\n onClick={!editable ? openMenu : undefined}\r\n endAction={\r\n <IconButton\r\n icon={CalendarIcon}\r\n ariaLabel={open ? 'Close calendar' : 'Open calendar'}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={ICON_BUTTON_SIZE[size]}\r\n type={'button'}\r\n disabled={disabled}\r\n aria-haspopup={'dialog'}\r\n aria-expanded={open}\r\n aria-controls={open ? dialogId : undefined}\r\n onClick={toggle}\r\n />\r\n }\r\n />\r\n\r\n {open && (\r\n <CalendarPopover\r\n anchorEl={anchorEl}\r\n dialogId={dialogId}\r\n ariaLabel={calendarLabel}\r\n onClose={close}\r\n selectedDate={currentValue}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n locale={locale}\r\n weekStartsOn={weekStartsOn}\r\n onSelect={handleSelect}\r\n />\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nDatePicker.displayName = 'DatePicker'\r\n\r\nexport default DatePicker\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\n\r\nimport type { ArticleProps } from '@components/layout/article/Article.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Semantic `<article>` enriched with the same token-aware style props as `Box`.\r\n *\r\n * Use `Article` for self-contained content that could stand alone and be\r\n * re-distributed independently (blog posts, news articles, forum posts, cards).\r\n * Each `Article` should ideally have a heading.\r\n *\r\n * @example <Article padding=\"lg\" borderRadius=\"md\" backgroundColor=\"surfacePaper\">…</Article>\r\n */\r\nconst Article: FC<ArticleProps> = ({ ref, style, className, children, ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps(props)\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <article\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </article>\r\n )\r\n}\r\n\r\nArticle.displayName = 'Article'\r\n\r\nexport default Article\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\n\r\nimport type { AsideProps } from '@components/layout/aside/Aside.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Semantic `<aside>` enriched with the same token-aware style props as `Box`.\r\n *\r\n * Use `Aside` for supplemental content that is tangentially related to the\r\n * surrounding content (sidebars, pull-quotes, ads, related links).\r\n * Screen-readers expose it as the `complementary` landmark.\r\n *\r\n * @example <Aside aria-label=\"Related articles\" width=\"280px\" padding=\"md\">…</Aside>\r\n */\r\nconst Aside: FC<AsideProps> = ({ ref, style, className, children, ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps(props)\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <aside\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </aside>\r\n )\r\n}\r\n\r\nAside.displayName = 'Aside'\r\n\r\nexport default Aside\r\n","import { createVariants } from '@aurora-ds/theme'\r\n\r\nexport const CARD_VARIANTS = createVariants((theme) => ({\r\n base: {\r\n boxSizing: 'border-box' as const,\r\n borderRadius: theme.radius.lg,\r\n border: '1px solid transparent',\r\n },\r\n variants: {\r\n variant: {\r\n elevated: {\r\n backgroundColor: theme.colors.surfacePaper,\r\n boxShadow: theme.shadows.md,\r\n },\r\n outlined: {\r\n backgroundColor: theme.colors.surfacePaper,\r\n borderColor: theme.colors.borderMain,\r\n },\r\n },\r\n },\r\n defaultVariants: { variant: 'elevated' },\r\n}), { id: 'card' })\r\n","import type { FC } from 'react'\nimport { Icon } from '@components/foundation/icon'\nimport { Text } from '@components/foundation/text'\nimport { Stack } from '@components/layout/stack'\nimport type { CardHeaderProps } from '@components/layout/card/card-header/CardHeader.props'\n\nconst CardHeader: FC<CardHeaderProps> = ({\n label,\n icon,\n actions,\n flexDirection = 'row',\n gap = 'sm',\n alignItems = 'center',\n justifyContent = 'space-between',\n py = 'sm',\n px = 'md',\n ...rest\n}) => {\n return (\n <Stack\n flexDirection={flexDirection}\n alignItems={alignItems}\n justifyContent={justifyContent}\n gap={gap}\n py={py}\n px={px}\n {...rest}\n >\n <Stack\n alignItems={'center'}\n gap={'sm'}\n flex={1}\n minWidth={'0'}\n >\n {icon !== undefined && (\n <Icon\n icon={icon}\n size={'md'}\n strokeColor={'textSecondary'}\n />\n )}\n <Text\n variant={'span'}\n fontSize={'sm'}\n fontWeight={'semibold'}\n color={'textPrimary'}\n >\n {label}\n </Text>\n </Stack>\n {actions !== undefined && (\n <Stack\n alignItems={'center'}\n gap={'xs'}\n flexShrink={0}\n >\n {actions}\n </Stack>\n )}\n </Stack>\n )\n}\n\nCardHeader.displayName = 'Card.Header'\n\nexport default CardHeader\n","import type { FC } from 'react'\nimport type { CardBodyProps } from '@components/layout/card/card-body/CardBody.props'\nimport { Stack } from '@components/layout/stack'\n\nconst CardBody: FC<CardBodyProps> = ({\n children,\n py = 'md',\n px = 'md',\n flexDirection = 'column',\n gap = 'sm',\n ...rest\n}) => {\n return (\n <Stack\n flexDirection={flexDirection}\n gap={gap}\n py={py}\n px={px}\n {...rest}\n >\n {children}\n </Stack>\n )\n}\n\nCardBody.displayName = 'Card.Body'\n\nexport default CardBody\n","import { cx } from '@aurora-ds/theme'\r\nimport type { FC } from 'react'\r\nimport { CARD_VARIANTS } from '@components/layout/card/Card.styles'\r\nimport Box from '@components/layout/box/Box'\r\nimport type { BoxProps } from '@components/layout/box/Box.props'\r\nimport CardHeader from '@components/layout/card/card-header/CardHeader'\r\nimport CardBody from '@components/layout/card/card-body/CardBody'\r\nimport type { CardProps } from '@components/layout/card/Card.props'\r\nimport type { CardComponent } from '@components/layout/card/card.types'\r\n\r\nconst CardBase: FC<CardProps> = (\r\n { ref, variant = 'outlined', padding = 'none', className, children, ...rest }\r\n) => {\r\n return (\r\n <Box\r\n ref={ref}\r\n padding={padding}\r\n className={cx(CARD_VARIANTS({ variant }), className)}\r\n {...rest as BoxProps}\r\n >\r\n {children}\r\n </Box>\r\n )\r\n}\r\n\r\nCardBase.displayName = 'Card'\r\n\r\nconst Card = CardBase as CardComponent\r\nCard.Header = CardHeader\r\nCard.Body = CardBody\r\n\r\nexport default Card\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\n\r\nimport type { FooterProps } from '@components/layout/footer/Footer.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Semantic `<footer>` enriched with the same token-aware style props as `Box`.\r\n *\r\n * Use `Footer` for the closing content of a page or a section\r\n * (copyright, links, contact info). Screen-readers expose it as the\r\n * `contentinfo` landmark when it is a direct child of `<body>`.\r\n *\r\n * @example <Footer py=\"md\" display=\"flex\" justifyContent=\"space-between\">…</Footer>\r\n */\r\nconst Footer: FC<FooterProps> = ({ ref, style, className, children, ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps(props)\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <footer\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </footer>\r\n )\r\n}\r\n\r\nFooter.displayName = 'Footer'\r\n\r\nexport default Footer\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { GridStyleProps } from '@components/layout/grid/Grid.props'\r\n\r\nexport const GRID_STYLES = createStyles(() => ({\r\n root: ({\r\n autoFlow,\r\n autoColumns,\r\n autoRows,\r\n alignContent,\r\n justifyItems,\r\n placeItems,\r\n placeContent,\r\n }: Pick<GridStyleProps, 'autoFlow' | 'autoColumns' | 'autoRows' | 'alignContent' | 'justifyItems' | 'placeItems' | 'placeContent'>) => ({\r\n ...(autoFlow !== undefined && { gridAutoFlow: autoFlow }),\r\n ...(autoColumns !== undefined && { gridAutoColumns: autoColumns }),\r\n ...(autoRows !== undefined && { gridAutoRows: autoRows }),\r\n ...(alignContent !== undefined && { alignContent }),\r\n ...(justifyItems !== undefined && { justifyItems }),\r\n ...(placeItems !== undefined && { placeItems }),\r\n ...(placeContent !== undefined && { placeContent }),\r\n }),\r\n}))\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { Box } from '@components/layout/box'\r\nimport { GRID_STYLES } from '@components/layout/grid/Grid.styles'\r\n\r\nimport type { GridProps } from '@components/layout/grid/Grid.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * A CSS Grid `Box` with convenience props for common grid patterns.\r\n *\r\n * Defaults to `display: grid`. The `columns` and `rows` shorthands accept either a\r\n * number (expanded to `repeat(n, 1fr)`) or any valid CSS `grid-template-*` string.\r\n * All `Box` style props remain available (`gap`, `rowGap`, `columnGap`,\r\n * `gridTemplateColumns`, `gridTemplateRows`, `alignItems`, `justifyContent`, …).\r\n *\r\n * @example <Grid columns={3} gap='md'>…</Grid>\r\n * @example <Grid columns='repeat(auto-fill, minmax(200px, 1fr))' gap='lg'>…</Grid>\r\n * @example <Grid rows={2} autoFlow='column' gap='sm' alignItems='center'>…</Grid>\r\n */\r\nconst Grid: FC<GridProps> = (\r\n {\r\n display = 'grid',\r\n columns,\r\n rows,\r\n autoFlow,\r\n autoColumns,\r\n autoRows,\r\n alignContent,\r\n justifyItems,\r\n placeItems,\r\n placeContent,\r\n gridTemplateColumns,\r\n gridTemplateRows,\r\n className,\r\n rowGap='sm',\r\n columnGap='sm',\r\n ...rest\r\n }\r\n) => {\r\n const resolvedColumns = columns !== undefined\r\n ? (typeof columns === 'number' ? `repeat(${columns}, 1fr)` : columns)\r\n : gridTemplateColumns\r\n\r\n const resolvedRows = rows !== undefined\r\n ? (typeof rows === 'number' ? `repeat(${rows}, 1fr)` : rows)\r\n : gridTemplateRows\r\n\r\n const gridClassName = GRID_STYLES.root({\r\n autoFlow,\r\n autoColumns,\r\n autoRows,\r\n alignContent,\r\n justifyItems,\r\n placeItems,\r\n placeContent,\r\n })\r\n\r\n return (\r\n <Box\r\n display={display}\r\n gridTemplateColumns={resolvedColumns}\r\n gridTemplateRows={resolvedRows}\r\n rowGap={rowGap}\r\n columnGap={columnGap}\r\n className={cx(gridClassName, className)}\r\n {...rest}\r\n />\r\n )\r\n}\r\n\r\nGrid.displayName = 'Grid'\r\n\r\nexport default Grid\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const HEADER_STYLES = createStyles((theme) => ({\r\n withBorder: () => ({\r\n borderBottom: `1px solid ${theme.colors.borderMain}`,\r\n }),\r\n}), { id: 'header' })\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\nimport { HEADER_STYLES } from '@components/layout/header/Header.styles'\r\n\r\nimport type { HeaderProps } from '@components/layout/header/Header.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Semantic `<header>` enriched with the same token-aware style props as `Box`.\r\n *\r\n * Use `Header` for the introductory content of a page or a section\r\n * (logo, site title, navigation). Screen-readers expose it as the\r\n * `banner` landmark when it is a direct child of `<body>`.\r\n *\r\n * @example <Header px=\"sm\" py=\"xs\" alignItems=\"center\" gap=\"sm\">…</Header>\r\n * @example <Header withBorder>…</Header>\r\n */\r\nconst Header: FC<HeaderProps> = ({ ref, style, className, children, withBorder = true, width = '100%', display = 'flex', px = 'sm', py = 'xs', ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps({ display, px, py, width, ...props })\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <header\r\n ref={ref}\r\n className={cx(generatedClassName, withBorder && HEADER_STYLES.withBorder(), className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </header>\r\n )\r\n}\r\n\r\nHeader.displayName = 'Header'\r\n\r\nexport default Header\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\n\r\nimport type { MainProps } from '@components/layout/main/Main.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Semantic `<main>` enriched with the same token-aware style props as `Box`.\r\n *\r\n * Use `Main` for the primary content of the page. There should be only **one**\r\n * `Main` per page. Screen-readers expose it as the `main` landmark, allowing\r\n * users to jump directly to the core content.\r\n *\r\n * @example <Main padding=\"xl\" display=\"flex\" flexDirection=\"column\" gap=\"lg\">…</Main>\r\n */\r\nconst Main: FC<MainProps> = ({ ref, style, className, children, ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps(props)\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <main\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </main>\r\n )\r\n}\r\n\r\nMain.displayName = 'Main'\r\n\r\nexport default Main\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\n\r\nimport type { NavProps } from '@components/layout/nav/Nav.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Semantic `<nav>` enriched with the same token-aware style props as `Box`.\r\n *\r\n * Use `Nav` to wrap sets of navigation links. When multiple `Nav` elements\r\n * are present, give each a distinct `aria-label` so screen-reader users can\r\n * tell them apart (e.g. `aria-label=\"Main navigation\"` vs `aria-label=\"Footer links\"`).\r\n *\r\n * @example <Nav aria-label=\"Main navigation\" display=\"flex\" gap=\"sm\">…</Nav>\r\n */\r\nconst Nav: FC<NavProps> = ({ ref, style, className, children, ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps(props)\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <nav\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </nav>\r\n )\r\n}\r\n\r\nNav.displayName = 'Nav'\r\n\r\nexport default Nav\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\n\r\nimport type { SectionProps } from '@components/layout/section/Section.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Semantic `<section>` enriched with the same token-aware style props as `Box`.\r\n *\r\n * Use `Section` to group thematically related content — the browser outline\r\n * and screen-readers will announce it as a landmark region when it has an\r\n * accessible name (`aria-label` or `aria-labelledby`).\r\n *\r\n * @example <Section aria-label=\"Features\" padding=\"lg\" gap=\"md\">…</Section>\r\n */\r\nconst Section: FC<SectionProps> = ({ ref, style, className, children, ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps(props)\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <section\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </section>\r\n )\r\n}\r\n\r\nSection.displayName = 'Section'\r\n\r\nexport default Section\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { SeparatorStyleParams } from '@components/layout/separator/Separator.props'\r\nimport type { SeparatorThickness } from '@components/layout/separator/separator.types'\r\n\r\n/** Maps thickness token to a CSS pixel value. Exported for use in the component. */\r\nexport const THICKNESS_PX: Record<SeparatorThickness, string> = {\r\n '1': '1px',\r\n '2': '2px',\r\n '4': '4px',\r\n}\r\n\r\nexport const SEPARATOR_STYLES = createStyles((theme) => ({\r\n root: ({ orientation = 'horizontal', color = 'borderMain', thickness = '1', spacing, hasLabel }: SeparatorStyleParams) => {\r\n const borderColor = theme.colors[color]\r\n const borderWidth = THICKNESS_PX[thickness]\r\n\r\n if (orientation === 'vertical') {\r\n return {\r\n display: 'inline-block',\r\n alignSelf: 'stretch',\r\n width: borderWidth,\r\n minHeight: '1em',\r\n backgroundColor: borderColor,\r\n border: 'none',\r\n flexShrink: 0,\r\n ...(spacing && { margin: `0 ${theme.spacing[spacing]}` }),\r\n }\r\n }\r\n\r\n if (hasLabel) {\r\n return {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing.sm,\r\n width: '100%',\r\n border: 'none',\r\n margin: 0,\r\n padding: 0,\r\n ...(spacing && { margin: `${theme.spacing[spacing]} 0` }),\r\n }\r\n }\r\n\r\n return {\r\n display: 'block',\r\n width: '100%',\r\n height: 0,\r\n border: 'none',\r\n borderTop: `${borderWidth} solid ${borderColor}`,\r\n margin: 0,\r\n ...(spacing && { margin: `${theme.spacing[spacing]} 0` }),\r\n }\r\n },\r\n}), { id: 'separator' })\r\n","import { useTheme } from '@aurora-ds/theme'\r\nimport { SEPARATOR_STYLES, THICKNESS_PX } from '@components/layout/separator/Separator.styles'\r\nimport { Text } from '@components/foundation/text'\r\nimport { type CSSProperties, type FC, type Ref } from 'react'\r\n\r\nimport type { SeparatorProps } from '@components/layout/separator/Separator.props'\r\n\r\n/**\r\n * A visual separator line (horizontal or vertical) with optional centered label.\r\n *\r\n * Uses `<hr>` for horizontal separators (implicit `role=\"separator\"`) and a\r\n * `<div role=\"separator\">` for vertical or labeled variants.\r\n *\r\n * @example <Separator />\r\n * @example <Separator orientation=\"vertical\" />\r\n * @example <Separator label=\"Or\" spacing=\"md\" />\r\n * @example <Separator color=\"primaryMain\" thickness=\"2\" />\r\n * @example <Separator decorative />\r\n */\r\nconst Separator: FC<SeparatorProps> = ({\r\n ref,\r\n orientation = 'horizontal',\r\n color = 'borderMain',\r\n thickness = '1',\r\n spacing,\r\n label,\r\n decorative = true,\r\n ...rest\r\n}) => {\r\n const theme = useTheme()\r\n const hasLabel = !!label && orientation === 'horizontal'\r\n\r\n const rootClassName = SEPARATOR_STYLES.root({ orientation, color, thickness, spacing, hasLabel })\r\n\r\n /** Inline style for the decorative line spans flanking the label. */\r\n const lineStyle: CSSProperties = {\r\n flex: 1,\r\n height: 0,\r\n border: 'none',\r\n borderTop: `${THICKNESS_PX[thickness]} solid ${theme.colors[color]}`,\r\n }\r\n\r\n /**\r\n * Decorative separators are hidden from assistive technology.\r\n * Meaningful separators expose role + orientation (and optionally a label).\r\n */\r\n const a11yProps = decorative\r\n ? { 'aria-hidden': true as const, role: 'none' as const }\r\n : {\r\n role: 'separator' as const,\r\n 'aria-orientation': orientation,\r\n ...(label && { 'aria-label': label }),\r\n }\r\n\r\n // ── Labeled horizontal separator ─────────────────────────────────────────\r\n if (hasLabel) {\r\n return (\r\n <div\r\n ref={ref as Ref<HTMLDivElement>}\r\n className={rootClassName}\r\n {...a11yProps}\r\n {...rest}\r\n >\r\n <span\r\n style={lineStyle}\r\n aria-hidden={'true'}\r\n />\r\n <Text\r\n variant={'span'}\r\n fontSize={'xs'}\r\n fontWeight={'medium'}\r\n color={'textTertiary'}\r\n noWrap\r\n >\r\n {label}\r\n </Text>\r\n <span\r\n style={lineStyle}\r\n aria-hidden={'true'}\r\n />\r\n </div>\r\n )\r\n }\r\n\r\n // ── Vertical separator ────────────────────────────────────────────────────\r\n if (orientation === 'vertical') {\r\n return (\r\n <div\r\n ref={ref as Ref<HTMLDivElement>}\r\n className={rootClassName}\r\n {...a11yProps}\r\n {...rest}\r\n />\r\n )\r\n }\r\n\r\n // ── Horizontal separator (default) ────────────────────────────────────────\r\n // <hr> carries the implicit role=\"separator\" natively.\r\n return (\r\n <hr\r\n ref={ref as Ref<HTMLHRElement>}\r\n className={rootClassName}\r\n {...a11yProps}\r\n {...rest}\r\n />\r\n )\r\n}\r\n\r\nSeparator.displayName = 'Separator'\r\n\r\nexport default Separator\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const BREADCRUMB_STYLES = createStyles((_theme) => ({\r\n nav: {\r\n display: 'block',\r\n },\r\n list: {\r\n display: 'flex',\r\n flexWrap: 'wrap' as const,\r\n alignItems: 'center',\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: 0,\r\n },\r\n}), { id: 'breadcrumb' })\r\n","import { createContext, useContext } from 'react'\r\nimport type { BreadcrumbSeparator } from '@components/navigation/breadcrumb/breadcrumb.types'\r\n\r\nexport type BreadcrumbContextValue = {\r\n separator: BreadcrumbSeparator\r\n}\r\n\r\nexport const BreadcrumbContext = createContext<BreadcrumbContextValue>({\r\n separator: '/',\r\n})\r\n\r\nexport const useBreadcrumbContext = (): BreadcrumbContextValue =>\r\n useContext(BreadcrumbContext)\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const BREADCRUMB_ITEM_STYLES = createStyles((theme) => ({\r\n item: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n fontSize: theme.fontSize.sm,\r\n lineHeight: theme.lineHeight.normal,\r\n },\r\n separator: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n marginLeft: theme.spacing.sm,\r\n marginRight: theme.spacing.sm,\r\n color: theme.colors.textTertiary,\r\n userSelect: 'none' as const,\r\n },\r\n}), { id: 'breadcrumb-item' })\r\n","import { type FC } from 'react'\r\n\r\nimport { BREADCRUMB_ITEM_STYLES } from '@components/navigation/breadcrumb/breadcrumb-item/BreadcrumbItem.styles'\r\nimport { useBreadcrumbContext } from '@components/navigation/breadcrumb/Breadcrumb.context'\r\nimport { Link } from '@components/actions/link'\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { BreadcrumbItemProps } from '@components/navigation/breadcrumb/breadcrumb-item/BreadcrumbItem.props'\r\n\r\nconst BreadcrumbItem: FC<BreadcrumbItemProps> = ({\r\n label,\r\n href,\r\n onClick,\r\n current = false,\r\n isFirst = false,\r\n}) => {\r\n const { separator } = useBreadcrumbContext()\r\n\r\n return (\r\n // aria-current=\"page\" is placed on the <li> (not on a nested span) because\r\n // the current item is non-interactive text. WAI-ARIA requires aria-current\r\n // on the element that represents the current page in the trail.\r\n <li\r\n className={BREADCRUMB_ITEM_STYLES.item}\r\n aria-current={current ? 'page' : undefined}\r\n >\r\n {!isFirst && (\r\n <span\r\n aria-hidden={true}\r\n className={BREADCRUMB_ITEM_STYLES.separator}\r\n >\r\n {separator}\r\n </span>\r\n )}\r\n\r\n {current ? (\r\n <Text\r\n variant={'span'}\r\n fontWeight={'semibold'}\r\n color={'textPrimary'}\r\n >\r\n {label}\r\n </Text>\r\n ) : (\r\n <Link\r\n href={href}\r\n onClick={onClick}\r\n color={'secondary'}\r\n underline={'hover'}\r\n label={label}\r\n />\r\n )}\r\n </li>\r\n )\r\n}\r\n\r\nBreadcrumbItem.displayName = 'Breadcrumb.Item'\r\n\r\nexport default BreadcrumbItem\r\n","import { Children, cloneElement, isValidElement, useMemo, type FC } from 'react'\r\n\r\nimport { BREADCRUMB_STYLES } from '@components/navigation/breadcrumb/Breadcrumb.styles'\r\nimport { BreadcrumbContext, type BreadcrumbContextValue } from '@components/navigation/breadcrumb/Breadcrumb.context'\r\nimport BreadcrumbItem from '@components/navigation/breadcrumb/breadcrumb-item/BreadcrumbItem'\r\n\r\nimport type { BreadcrumbProps } from '@components/navigation/breadcrumb/Breadcrumb.props'\r\nimport type { BreadcrumbComponent } from '@components/navigation/breadcrumb/Breadcrumb.component.types'\r\n\r\n/**\r\n * WAI-ARIA compliant breadcrumb navigation using a compound component API.\r\n *\r\n * ```tsx\r\n * <Breadcrumb separator='/'>\r\n * <Breadcrumb.Item label='Home' href='/' />\r\n * <Breadcrumb.Item label='Products' href='/products' />\r\n * <Breadcrumb.Item label='Laptop Pro X' current />\r\n * </Breadcrumb>\r\n * ```\r\n *\r\n * The last item is typically marked as `current` — it renders as bold text (non-clickable)\r\n * and exposes `aria-current=\"page\"` for assistive technologies.\r\n */\r\nconst BreadcrumbBase: FC<BreadcrumbProps> = ({\r\n children,\r\n separator = '/',\r\n ariaLabel = 'Breadcrumb',\r\n}) => {\r\n const contextValue = useMemo<BreadcrumbContextValue>(\r\n () => ({ separator }),\r\n [separator],\r\n )\r\n\r\n const items = Children.map(children, (child, index) => {\r\n if (!isValidElement(child)) {return child}\r\n return cloneElement(child as React.ReactElement<{ isFirst?: boolean }>, {\r\n isFirst: index === 0,\r\n })\r\n })\r\n\r\n return (\r\n <BreadcrumbContext.Provider value={contextValue}>\r\n <nav\r\n aria-label={ariaLabel}\r\n className={BREADCRUMB_STYLES.nav}\r\n >\r\n <ol className={BREADCRUMB_STYLES.list}>\r\n {items}\r\n </ol>\r\n </nav>\r\n </BreadcrumbContext.Provider>\r\n )\r\n}\r\n\r\nBreadcrumbBase.displayName = 'Breadcrumb'\r\n\r\nconst Breadcrumb = BreadcrumbBase as BreadcrumbComponent\r\nBreadcrumb.Item = BreadcrumbItem\r\n\r\nexport default Breadcrumb\r\n","import { createContext, useContext } from 'react'\r\n\r\nexport type DrawerContextValue = {\r\n /** Whether the drawer is in expanded (true) or collapsed (false) state. */\r\n isExpanded: boolean\r\n}\r\n\r\nexport const DrawerContext = createContext<DrawerContextValue>({\r\n isExpanded: true,\r\n})\r\n\r\nexport const useDrawerContext = (): DrawerContextValue => useContext(DrawerContext)\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport {\r\n COLLAPSED_DRAWER_WIDTH,\r\n DEFAULT_TRANSITION_DURATION_MS,\r\n EXPANDED_DRAWER_WIDTH,\r\n} from '@constants/app.constants'\r\n\r\nexport { COLLAPSED_DRAWER_WIDTH, EXPANDED_DRAWER_WIDTH }\r\n\r\nconst TRANSITION = `${DEFAULT_TRANSITION_DURATION_MS}ms ease`\r\n\r\nexport const DRAWER_STYLES = createStyles((theme) => ({\r\n root: ({ isExpanded }: { isExpanded: boolean }) => ({\r\n display: 'flex',\r\n flexDirection: 'column' as const,\r\n width: isExpanded ? EXPANDED_DRAWER_WIDTH : COLLAPSED_DRAWER_WIDTH,\r\n transition: `width ${theme.transition.normal}`,\r\n overflow: 'hidden',\r\n backgroundColor: theme.colors.surfacePaper,\r\n borderRight: `1px solid ${theme.colors.borderMain}`,\r\n boxSizing: 'border-box' as const,\r\n flexShrink: 0,\r\n }),\r\n\r\n /** Temporary variant: slides in from the left as a fixed portal overlay. */\r\n temporaryPanel: {\r\n position: 'fixed' as const,\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n width: EXPANDED_DRAWER_WIDTH,\r\n zIndex: theme.zIndex.modal,\r\n display: 'flex',\r\n flexDirection: 'column' as const,\r\n backgroundColor: theme.colors.surfacePaper,\r\n borderRight: `1px solid ${theme.colors.borderMain}`,\r\n boxSizing: 'border-box' as const,\r\n overflowY: 'auto' as const,\r\n overflowX: 'hidden' as const,\r\n willChange: 'transform',\r\n transform: 'translateX(-100%)',\r\n transition: `transform ${TRANSITION}`,\r\n boxShadow: theme.shadows.xl,\r\n },\r\n\r\n temporaryPanelVisible: {\r\n transform: 'translateX(0)',\r\n },\r\n}))\r\n","/**\r\n * Responsive breakpoints (min-width, mobile-first).\r\n * Keep in sync with themeBreakpoints.\r\n */\r\nexport const BREAKPOINTS = {\r\n xs: 480,\r\n sm: 640,\r\n md: 768,\r\n lg: 1024,\r\n xl: 1280,\r\n '2xl': 1536,\r\n} as const\r\n\r\n/** Max-width media query strings (max = breakpoint - 1px). */\r\nexport const MEDIA_MAX = {\r\n xs: `max-width: ${BREAKPOINTS.xs - 1}px`,\r\n sm: `max-width: ${BREAKPOINTS.sm - 1}px`,\r\n md: `max-width: ${BREAKPOINTS.md - 1}px`,\r\n lg: `max-width: ${BREAKPOINTS.lg - 1}px`,\r\n xl: `max-width: ${BREAKPOINTS.xl - 1}px`,\r\n '2xl': `max-width: ${BREAKPOINTS['2xl'] - 1}px`,\r\n} as const\r\n\r\n/** Min-width media query strings (standard breakpoints). */\r\nexport const MEDIA_MIN = {\r\n xs: `min-width: ${BREAKPOINTS.xs}px`,\r\n sm: `min-width: ${BREAKPOINTS.sm}px`,\r\n md: `min-width: ${BREAKPOINTS.md}px`,\r\n lg: `min-width: ${BREAKPOINTS.lg}px`,\r\n xl: `min-width: ${BREAKPOINTS.xl}px`,\r\n '2xl': `min-width: ${BREAKPOINTS['2xl']}px`,\r\n} as const\r\n","import { useState, useEffect } from 'react'\r\n\r\nimport { BREAKPOINTS } from '@constants/breakpoints.constants'\r\n\r\nimport type { DrawerVariant } from '@components/navigation/drawer/Drawer.props'\r\n\r\nconst MOBILE_MQ = `(max-width: ${BREAKPOINTS.sm - 1}px)`\r\n\r\n/**\r\n * Resolves the effective drawer variant based on the explicit `variant` prop\r\n * and the current viewport width.\r\n *\r\n * - If `variant` is explicitly provided (`'permanent'` or `'temporary'`), returns it as-is.\r\n * - Otherwise, auto-detects: `'temporary'` on mobile (< sm breakpoint), `'permanent'` on desktop.\r\n *\r\n * Reacts to viewport changes (window resize) so switching between mobile and desktop\r\n * automatically updates the variant without requiring a page reload.\r\n */\r\nexport const useDrawerVariant = (variant?: DrawerVariant): DrawerVariant => {\r\n const [isMobile, setIsMobile] = useState<boolean>(() => {\r\n if (typeof window === 'undefined') { return false }\r\n return window.matchMedia(MOBILE_MQ).matches\r\n })\r\n\r\n useEffect(() => {\r\n if (typeof window === 'undefined') { return }\r\n const mq = window.matchMedia(MOBILE_MQ)\r\n const handler = (e: MediaQueryListEvent): void => setIsMobile(e.matches)\r\n mq.addEventListener('change', handler)\r\n return () => mq.removeEventListener('change', handler)\r\n }, [])\r\n\r\n if (variant !== undefined) { return variant }\r\n return isMobile ? 'temporary' : 'permanent'\r\n}\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { DEFAULT_TRANSITION_DURATION_MS } from '@constants/app.constants'\r\n\r\nconst TRANSITION = `${DEFAULT_TRANSITION_DURATION_MS}ms ease`\r\n\r\nexport const BACKDROP_STYLES = createStyles((theme) => ({\r\n root: {\r\n position: 'fixed' as const,\r\n inset: 0,\r\n zIndex: theme.zIndex.modal - 1,\r\n backgroundColor: 'rgba(0, 0, 0, 0)',\r\n transition: `background-color ${TRANSITION}`,\r\n },\r\n\r\n visible: {\r\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\r\n },\r\n}), { id: 'backdrop' })\r\n","import { type FC } from 'react'\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { BACKDROP_STYLES } from '@components/overlay/backdrop/Backdrop.styles'\r\n\r\nimport type { BackdropProps } from '@components/overlay/backdrop/Backdrop.props'\r\n\r\n/**\r\n * Semi-transparent full-screen overlay used to visually block page content\r\n * while a modal element (dialog, temporary drawer…) is open.\r\n *\r\n * The `visible` prop drives the opacity transition: `false` = transparent,\r\n * `true` = `rgba(0,0,0,0.5)`. Mount/unmount is managed by the parent.\r\n *\r\n * @example\r\n * <Backdrop visible={isFadingIn} onClick={onClose} />\r\n */\r\nconst Backdrop: FC<BackdropProps> = ({ visible, onClick }) => (\r\n <div\r\n className={cx(BACKDROP_STYLES.root, visible && BACKDROP_STYLES.visible)}\r\n onClick={onClick}\r\n aria-hidden={true}\r\n />\r\n)\r\n\r\nBackdrop.displayName = 'Backdrop'\r\n\r\nexport default Backdrop\r\n","import { useEffect, useLayoutEffect, useState } from 'react'\r\n\r\nimport { DEFAULT_TRANSITION_DURATION_MS } from '@constants/app.constants'\r\n\r\nimport type { UseTransitionRenderReturnType } from '@hooks/common/use-transition-render/useTransitionRender.types'\r\n\r\n/**\r\n * Returns `true` if the user has requested reduced motion at the OS/browser level.\r\n * Falls back to `false` in environments where `matchMedia` is unavailable (SSR, tests).\r\n */\r\nconst getPrefersReducedMotion = (): boolean =>\r\n typeof window !== 'undefined' &&\r\n window.matchMedia('(prefers-reduced-motion: reduce)').matches\r\n\r\n/**\r\n * Manages mount/unmount transitions with a two-phase approach (visible → fading-in).\r\n *\r\n * Opening sequence:\r\n * 1. `useLayoutEffect` sets `isVisible=true` synchronously before the browser paints\r\n * → element is in the DOM at its initial hidden state on the very first frame.\r\n * 2. Double `requestAnimationFrame` in `useEffect` waits for two rendered frames\r\n * before setting `isFadingIn=true`, guaranteeing the CSS transition always starts\r\n * from the painted hidden state (prevents flickering).\r\n *\r\n * Closing sequence:\r\n * `isFadingIn=false` → CSS transition plays → after `duration` ms → `isVisible=false`.\r\n *\r\n * When `prefers-reduced-motion: reduce` is active the effective duration is forced to\r\n * `0` so the element is removed from the DOM immediately after hiding, in sync with\r\n * the near-instant CSS transition set by the global `globals.css` rule.\r\n *\r\n * @param isOpen - Whether the element should be shown.\r\n * @param duration - Transition duration in milliseconds (defaults to `DEFAULT_TRANSITION_DURATION_MS`).\r\n */\r\nexport const useTransitionRender = (\r\n isOpen: boolean,\r\n duration = DEFAULT_TRANSITION_DURATION_MS\r\n): UseTransitionRenderReturnType => {\r\n const effectiveDuration = getPrefersReducedMotion() ? 0 : duration\r\n const [isVisible, setIsVisible] = useState(isOpen)\r\n const [isFadingIn, setIsFadingIn] = useState(isOpen)\r\n\r\n // Mount synchronously before paint so the element is in the DOM at opacity:0\r\n // on the very first frame — no extra render cycle between null and the initial state.\r\n useLayoutEffect(() => {\r\n if (isOpen) {\r\n setIsVisible(true)\r\n }\r\n }, [isOpen])\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n // Double RAF: frame 1 → element rendered; frame 2 → element painted at hidden\r\n // state → THEN trigger the CSS transition.\r\n let raf2: number\r\n const raf1 = requestAnimationFrame(() => {\r\n raf2 = requestAnimationFrame(() => setIsFadingIn(true))\r\n })\r\n return () => {\r\n cancelAnimationFrame(raf1)\r\n cancelAnimationFrame(raf2)\r\n }\r\n } else {\r\n setIsFadingIn(false)\r\n const timeout = setTimeout(() => setIsVisible(false), effectiveDuration)\r\n return () => clearTimeout(timeout)\r\n }\r\n }, [isOpen, effectiveDuration])\r\n\r\n return { isVisible, isFadingIn }\r\n}\r\n","import { Box } from '@components/layout/box'\r\nimport { FC } from 'react'\r\nimport { DrawerHeaderProps } from '@components/navigation/drawer/drawer-header/DrawerHeader.props'\r\n\r\nconst DrawerHeader: FC<DrawerHeaderProps> = ({\r\n children,\r\n role,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n ariaDescribedBy,\r\n ...rest\r\n}) => {\r\n return (\r\n <Box\r\n px={'sm'}\r\n py={'xs'}\r\n role={role}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n {...rest}\r\n >\r\n {children}\r\n </Box>\r\n )\r\n}\r\n\r\nexport default DrawerHeader\r\n","import { Stack } from '@components/layout/stack'\r\nimport { FC } from 'react'\r\nimport { DrawerBodyProps } from '@components/navigation/drawer/drawer-body/DrawerBody.props'\r\n\r\nconst DrawerBody: FC<DrawerBodyProps> = ({\r\n children,\r\n role,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n ariaDescribedBy,\r\n ...rest\r\n}) => {\r\n return (\r\n <Stack\r\n px={'sm'}\r\n py={'xs'}\r\n height={'100%'}\r\n flexDirection={'column'}\r\n gap={'none'}\r\n role={role}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n overflow={'auto'}\r\n {...rest}\r\n >\r\n {children}\r\n </Stack>\r\n )\r\n}\r\n\r\nexport default DrawerBody\r\n","import { Box } from '@components/layout/box'\r\nimport { FC } from 'react'\r\nimport { DrawerFooterProps } from '@components/navigation/drawer/drawer-footer/DrawerFooter.props'\r\n\r\nconst DrawerFooter: FC<DrawerFooterProps> = ({\r\n children,\r\n role,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n ariaDescribedBy,\r\n ...rest\r\n}) => {\r\n return (\r\n <Box\r\n px={'sm'}\r\n py={'xs'}\r\n role={role}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n {...rest}\r\n >\r\n {children}\r\n </Box>\r\n )\r\n}\r\n\r\nexport default DrawerFooter\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport {\r\n COLLAPSED_DRAWER_ITEM_WIDTH,\r\n DEFAULT_DRAWER_ITEM_SIZE,\r\n DEFAULT_TRANSITION_DURATION_MS,\r\n EXPANDED_DRAWER_ITEM_WIDTH,\r\n} from '@constants/app.constants'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\ntype DrawerItemStyleParams = {\r\n selected: boolean\r\n isExpanded: boolean\r\n}\r\n\r\ntype LabelWrapperStyleParams = {\r\n isFadingIn: boolean\r\n}\r\n\r\nexport const DRAWER_ITEM_STYLES = createStyles((theme) => ({\r\n root: ({ selected, isExpanded }: DrawerItemStyleParams) => ({\r\n position: 'relative',\r\n display: 'flex',\r\n alignItems: 'center',\r\n width: isExpanded ? EXPANDED_DRAWER_ITEM_WIDTH : COLLAPSED_DRAWER_ITEM_WIDTH,\r\n gap: theme.spacing.sm,\r\n padding: `0 ${theme.spacing.smPlus}`,\r\n border: '1px solid transparent',\r\n borderRadius: theme.radius.md,\r\n fontFamily: 'inherit',\r\n fontSize: theme.fontSize.sm,\r\n userSelect: 'none' as const,\r\n cursor: 'pointer',\r\n outline: 'none',\r\n textDecoration: 'none',\r\n boxSizing: 'border-box' as const,\r\n transition: `width ${theme.transition.normal}, background-color ${theme.transition.fast}, color ${theme.transition.fast}`,\r\n whiteSpace: 'nowrap' as const,\r\n overflow: 'hidden',\r\n height: DEFAULT_DRAWER_ITEM_SIZE,\r\n ...(selected\r\n ? {\r\n backgroundColor: theme.colors.primaryMain,\r\n color: theme.colors.primaryOn,\r\n ':hover': { backgroundColor: theme.colors.primaryHover, color: theme.colors.primaryOn },\r\n ':active': { backgroundColor: theme.colors.primaryActive, color: theme.colors.primaryOn },\r\n }\r\n : {\r\n backgroundColor: 'transparent',\r\n color: theme.colors.defaultMain,\r\n ':hover:not(:disabled)': { backgroundColor: theme.colors.defaultSubtleHover, color: theme.colors.defaultHover },\r\n ':active:not(:disabled)': { backgroundColor: theme.colors.defaultSubtleActive, color: theme.colors.defaultActive },\r\n }),\r\n ':focus-visible': getFocusRingStyles(theme),\r\n ':disabled': { cursor: 'not-allowed', opacity: theme.opacity.high },\r\n }),\r\n iconWrap: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n },\r\n labelWrapper: ({ isFadingIn }: LabelWrapperStyleParams) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexDirection: 'row',\r\n gap: theme.spacing.sm,\r\n width: '100%',\r\n justifyContent: 'space-between',\r\n flex: 1,\r\n overflow: 'hidden',\r\n minWidth: 0,\r\n opacity: isFadingIn ? 1 : 0,\r\n transition: `opacity ${DEFAULT_TRANSITION_DURATION_MS}ms ease`,\r\n }),\r\n label: {\r\n flex: 1,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n fontWeight: theme.fontWeight.medium,\r\n },\r\n endContent: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexShrink: 0,\r\n marginLeft: 'auto',\r\n },\r\n}))\r\n","import { type FC, type MouseEvent } from 'react'\r\n\r\nimport { useDrawerContext } from '@components/navigation/drawer/Drawer.context'\r\nimport { DRAWER_ITEM_STYLES } from '@components/navigation/drawer/drawer-item/DrawerItem.styles'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Tooltip } from '@components/overlay/tooltip'\r\nimport { useTransitionRender } from '@hooks/common/use-transition-render/useTransitionRender'\r\n\r\nimport type { DrawerItemProps } from '@components/navigation/drawer/drawer-item/DrawerItem.props'\r\nimport { Stack } from '@components/layout/stack'\r\nimport { Text } from '@components/foundation/text'\r\n\r\n/**\r\n * Navigation/action item for use inside Drawer.Body or Drawer.Footer.\r\n *\r\n * - In **expanded** mode: shows icon + label (fade-in) + optional end content.\r\n * - In **collapsed** mode: shows only the icon; the label fades out before unmounting\r\n * and appears as a right-side tooltip on hover.\r\n * - Renders as `<a>` when `href` is provided, otherwise as `<button>`.\r\n * - The `selected` prop applies a primary-color highlight.\r\n */\r\nconst DrawerItem: FC<DrawerItemProps> = ({\r\n startIcon,\r\n label,\r\n selected = false,\r\n endContent,\r\n href,\r\n onClick,\r\n disabled = false,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n ariaDescribedBy,\r\n ariaControls,\r\n ariaExpanded,\r\n ariaHasPopup,\r\n ariaCurrent,\r\n}) => {\r\n const { isExpanded } = useDrawerContext()\r\n const { isVisible: isLabelVisible, isFadingIn: isLabelFadingIn } = useTransitionRender(isExpanded, 200)\r\n const rootClassName = DRAWER_ITEM_STYLES.root({ selected, isExpanded })\r\n const computedAriaLabel = ariaLabel ?? (!isExpanded ? label : undefined)\r\n const computedAriaCurrent = ariaCurrent ?? (selected ? 'page' : undefined)\r\n\r\n const handleClick = (e: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => {\r\n if (disabled) {\r\n e.preventDefault()\r\n return\r\n }\r\n // When an onClick handler is provided (e.g. React Router's navigate),\r\n // prevent the browser from following the href and let the handler drive navigation.\r\n if (onClick) {\r\n e.preventDefault()\r\n onClick(e)\r\n }\r\n }\r\n\r\n const innerContent = (\r\n <Stack\r\n width={'100%'}\r\n justifyContent={'start'}\r\n >\r\n {startIcon && (\r\n <span className={DRAWER_ITEM_STYLES.iconWrap}>\r\n <Icon\r\n icon={startIcon}\r\n size={'md'}\r\n />\r\n </span>\r\n )}\r\n {isLabelVisible && (\r\n <span className={DRAWER_ITEM_STYLES.labelWrapper({ isFadingIn: isLabelFadingIn })}>\r\n <Text\r\n variant={'span'}\r\n fontSize={'sm'}\r\n fontWeight={'medium'}\r\n className={DRAWER_ITEM_STYLES.label}\r\n textAlign={'start'}\r\n >\r\n {label}\r\n </Text>\r\n\r\n {endContent && (\r\n <span className={DRAWER_ITEM_STYLES.endContent}>\r\n {endContent}\r\n </span>\r\n )}\r\n </span>\r\n )}\r\n\r\n </Stack>\r\n )\r\n\r\n const item = href ? (\r\n <a\r\n href={href}\r\n className={rootClassName}\r\n aria-disabled={disabled || undefined}\r\n aria-current={computedAriaCurrent}\r\n aria-label={computedAriaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n aria-controls={ariaControls}\r\n aria-expanded={ariaExpanded}\r\n aria-haspopup={ariaHasPopup}\r\n tabIndex={disabled ? -1 : undefined}\r\n onClick={handleClick}\r\n >\r\n {innerContent}\r\n </a>\r\n ) : (\r\n <button\r\n type={'button'}\r\n className={rootClassName}\r\n disabled={disabled}\r\n aria-current={computedAriaCurrent}\r\n aria-label={computedAriaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n aria-controls={ariaControls}\r\n aria-expanded={ariaExpanded}\r\n aria-haspopup={ariaHasPopup}\r\n onClick={handleClick}\r\n >\r\n {innerContent}\r\n </button>\r\n )\r\n\r\n return (\r\n <Tooltip\r\n label={label}\r\n placement={'right'}\r\n inline\r\n withArrow\r\n disabled={isExpanded || disabled}\r\n >\r\n {item}\r\n </Tooltip>\r\n )\r\n}\r\n\r\nDrawerItem.displayName = 'DrawerItem'\r\n\r\nexport default DrawerItem\r\n","import { createPortal } from 'react-dom'\r\nimport { type AriaRole, type FC, type CSSProperties, type ReactNode } from 'react'\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { DrawerContext } from '@components/navigation/drawer/Drawer.context'\r\nimport { DRAWER_STYLES } from '@components/navigation/drawer/Drawer.styles'\r\nimport { useDrawerVariant } from '@components/navigation/drawer/utils/useDrawerVariant.utils'\r\nimport { Backdrop } from '@components/overlay/backdrop'\r\nimport { useTransitionRender } from '@hooks/common/use-transition-render/useTransitionRender'\r\nimport { useBodyScrollLock } from '@hooks/common/use-body-scroll-lock/useBodyScrollLock'\r\nimport { useKeyPress } from '@hooks/common/use-key-press/useKeyPress'\r\nimport DrawerHeader from '@components/navigation/drawer/drawer-header/DrawerHeader'\r\nimport DrawerBody from '@components/navigation/drawer/drawer-body/DrawerBody'\r\nimport DrawerFooter from '@components/navigation/drawer/drawer-footer/DrawerFooter'\r\nimport DrawerItem from '@components/navigation/drawer/drawer-item/DrawerItem'\r\n\r\nimport type { DrawerProps } from '@components/navigation/drawer/Drawer.props'\r\nimport type { DrawerComponent } from '@components/navigation/drawer/Drawer.types'\r\n\r\n// ─── Temporary overlay drawer ───────────────────────────────────────────────\r\n\r\ntype DrawerTemporaryPanelProps = {\r\n isExpanded: boolean\r\n onClose: () => void\r\n height?: CSSProperties['height']\r\n children: ReactNode\r\n role?: AriaRole\r\n ariaLabel: string\r\n ariaLabelledBy?: string\r\n ariaDescribedBy?: string\r\n}\r\n\r\n/**\r\n * Internal component: renders the temporary drawer as a fixed portal overlay\r\n * that slides in from the left with a backdrop, animated via `useTransitionRender`.\r\n */\r\nconst DrawerTemporaryPanel: FC<DrawerTemporaryPanelProps> = ({\r\n isExpanded,\r\n onClose,\r\n children,\r\n role,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n ariaDescribedBy,\r\n}) => {\r\n const { isVisible, isFadingIn } = useTransitionRender(isExpanded)\r\n\r\n useBodyScrollLock(isExpanded)\r\n useKeyPress({ Escape: onClose }, { enabled: isExpanded })\r\n\r\n if (!isVisible) {\r\n return null\r\n }\r\n\r\n return createPortal(\r\n <>\r\n <Backdrop\r\n visible={isFadingIn}\r\n onClick={onClose}\r\n />\r\n <DrawerContext.Provider value={{ isExpanded: true }}>\r\n <nav\r\n className={cx(\r\n DRAWER_STYLES.temporaryPanel,\r\n isFadingIn && DRAWER_STYLES.temporaryPanelVisible,\r\n )}\r\n role={role}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n data-scroll-lock-ignore={true}\r\n >\r\n {children}\r\n </nav>\r\n </DrawerContext.Provider>\r\n </>,\r\n document.body,\r\n )\r\n}\r\n\r\nDrawerTemporaryPanel.displayName = 'DrawerTemporaryPanel'\r\n\r\n// ─── Main Drawer ─────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Collapsible side navigation drawer with controlled expanded/collapsed state.\r\n *\r\n * **Variants**\r\n * - `'permanent'` (default on desktop): inline drawer that pushes page content.\r\n * Toggles between `expanded` and `collapsed` states with animated width.\r\n * - `'temporary'` (default on mobile): portal overlay with a backdrop that slides\r\n * in from the left. `isExpanded` controls open/closed; `onClose` is called on\r\n * backdrop click or Escape.\r\n * - Omit `variant` to auto-detect based on viewport width.\r\n *\r\n * @example Permanent\r\n * <Drawer isExpanded={open} onExpandedChange={setOpen} height=\"100dvh\">\r\n * <Drawer.Header>…</Drawer.Header>\r\n * <Drawer.Body>\r\n * <Drawer.Item startIcon={HomeIcon} label=\"Home\" selected />\r\n * </Drawer.Body>\r\n * </Drawer>\r\n *\r\n * @example Temporary\r\n * <Drawer variant=\"temporary\" isExpanded={open} onClose={() => setOpen(false)}>\r\n * …\r\n * </Drawer>\r\n */\r\nconst DrawerBase: FC<DrawerProps> = ({\r\n height = '100dvh',\r\n isExpanded,\r\n onExpandedChange,\r\n onClose,\r\n variant,\r\n children,\r\n role = 'navigation',\r\n ariaLabel = 'Navigation',\r\n ariaLabelledBy,\r\n ariaDescribedBy,\r\n}) => {\r\n const resolvedVariant = useDrawerVariant(variant)\r\n const handleClose = onClose ?? (() => onExpandedChange?.(false))\r\n\r\n if (resolvedVariant === 'temporary') {\r\n return (\r\n <DrawerTemporaryPanel\r\n isExpanded={isExpanded}\r\n onClose={handleClose}\r\n height={height}\r\n role={role}\r\n ariaLabel={ariaLabel}\r\n ariaLabelledBy={ariaLabelledBy}\r\n ariaDescribedBy={ariaDescribedBy}\r\n >\r\n {children}\r\n </DrawerTemporaryPanel>\r\n )\r\n }\r\n\r\n return (\r\n <DrawerContext.Provider value={{ isExpanded }}>\r\n <nav\r\n className={DRAWER_STYLES.root({ isExpanded })}\r\n style={{ height }}\r\n role={role}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n >\r\n {children}\r\n </nav>\r\n </DrawerContext.Provider>\r\n )\r\n}\r\n\r\nDrawerBase.displayName = 'Drawer'\r\n\r\nconst Drawer = DrawerBase as DrawerComponent\r\nDrawer.Header = DrawerHeader\r\nDrawer.Body = DrawerBody\r\nDrawer.Footer = DrawerFooter\r\nDrawer.Item = DrawerItem\r\n\r\nexport default Drawer\r\n","import { createStyles } from '@aurora-ds/theme'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nimport type { PaginationShape, PaginationSize } from '@components/navigation/pagination/pagination.types'\r\nimport type {\r\n PaginationCellStyleParams,\r\n PaginationEllipsisStyleParams,\r\n} from '@components/navigation/pagination/Pagination.props'\r\n\r\nexport const PAGINATION_STYLES = createStyles((theme) => {\r\n /** Square box dimensions + font size per size token. */\r\n const dimensions: Record<PaginationSize, { box: string; font: string }> = {\r\n sm: { box: '2rem', font: theme.fontSize.sm },\r\n md: { box: '2.5rem', font: theme.fontSize.sm },\r\n lg: { box: '3rem', font: theme.fontSize.md },\r\n }\r\n\r\n const radiusFor = (shape: PaginationShape): string =>\r\n shape === 'circular' ? theme.radius.full : theme.radius.md\r\n\r\n /** Shared box geometry for every interactive cell and the ellipsis. */\r\n const baseCell = (size: PaginationSize, shape: PaginationShape) => ({\r\n boxSizing: 'border-box' as const,\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n minWidth: dimensions[size].box,\r\n height: dimensions[size].box,\r\n padding: `0 ${theme.spacing.xs}`,\r\n margin: 0,\r\n border: '1px solid transparent',\r\n borderRadius: radiusFor(shape),\r\n fontFamily: 'inherit',\r\n fontSize: dimensions[size].font,\r\n fontWeight: theme.fontWeight.medium,\r\n lineHeight: theme.lineHeight.none,\r\n })\r\n\r\n const interactiveBase = (size: PaginationSize, shape: PaginationShape) => ({\r\n ...baseCell(size, shape),\r\n cursor: 'pointer',\r\n outline: 'none',\r\n transition: `background-color ${theme.transition.normal}, border-color ${theme.transition.normal}, color ${theme.transition.normal}, box-shadow ${theme.transition.normal}`,\r\n ':focus-visible': getFocusRingStyles(theme),\r\n ':disabled': { cursor: 'not-allowed', opacity: theme.opacity.high },\r\n })\r\n\r\n return {\r\n nav: {\r\n display: 'block',\r\n },\r\n list: {\r\n display: 'flex',\r\n flexWrap: 'wrap' as const,\r\n alignItems: 'center',\r\n gap: theme.spacing.xs,\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: 0,\r\n },\r\n item: {\r\n display: 'inline-flex',\r\n },\r\n ellipsis: ({ size }: PaginationEllipsisStyleParams) => ({\r\n ...baseCell(size, 'rounded'),\r\n color: theme.colors.textTertiary,\r\n userSelect: 'none' as const,\r\n }),\r\n control: ({ size, shape }: PaginationCellStyleParams) => ({\r\n ...interactiveBase(size, shape),\r\n backgroundColor: 'transparent',\r\n color: theme.colors.textSecondary,\r\n ':hover:not(:disabled)': {\r\n backgroundColor: theme.colors.secondaryHover,\r\n color: theme.colors.textPrimary,\r\n },\r\n ':active:not(:disabled)': {\r\n backgroundColor: theme.colors.secondaryActive,\r\n },\r\n }),\r\n page: ({ size, shape, selected }: PaginationCellStyleParams) => ({\r\n ...interactiveBase(size, shape),\r\n ...(selected\r\n ? {\r\n backgroundColor: theme.colors.primaryMain,\r\n borderColor: theme.colors.primaryMain,\r\n color: theme.colors.primaryOn,\r\n boxShadow: theme.shadows.xs,\r\n ':hover:not(:disabled)': {\r\n backgroundColor: theme.colors.primaryHover,\r\n borderColor: theme.colors.primaryHover,\r\n },\r\n ':active:not(:disabled)': {\r\n backgroundColor: theme.colors.primaryActive,\r\n borderColor: theme.colors.primaryActive,\r\n },\r\n }\r\n : {\r\n backgroundColor: 'transparent',\r\n color: theme.colors.textSecondary,\r\n ':hover:not(:disabled)': {\r\n backgroundColor: theme.colors.secondaryHover,\r\n color: theme.colors.textPrimary,\r\n },\r\n ':active:not(:disabled)': {\r\n backgroundColor: theme.colors.secondaryActive,\r\n },\r\n }),\r\n }),\r\n }\r\n}, { id: 'pagination' })\r\n\r\n// ─── Style warm-up ─────────────────────────────────────────────────────────────\r\n// Pre-register every (size × shape) combination so the CSS classes exist up-front.\r\n\r\nconst SIZES: PaginationSize[] = ['sm', 'md', 'lg']\r\nconst SHAPES: PaginationShape[] = ['rounded', 'circular']\r\n\r\nSIZES.forEach((size) => {\r\n PAGINATION_STYLES.ellipsis({ size })\r\n SHAPES.forEach((shape) => {\r\n PAGINATION_STYLES.control({ size, shape })\r\n PAGINATION_STYLES.page({ size, shape, selected: false })\r\n PAGINATION_STYLES.page({ size, shape, selected: true })\r\n })\r\n})\r\n","import type { PaginationItem } from '@components/navigation/pagination/pagination.types'\r\n\r\n/** Builds an inclusive list of integers between `start` and `end`. */\r\nconst range = (start: number, end: number): number[] =>\r\n Array.from({ length: Math.max(end - start + 1, 0) }, (_, index) => start + index)\r\n\r\ntype GetPaginationRangeParams = {\r\n /** Total number of available pages (1-based). */\r\n totalPages: number\r\n /** Currently active page (1-based). */\r\n currentPage: number\r\n /** Pages displayed on each side of the current page. @default 1 */\r\n siblingCount?: number\r\n /** Pages always displayed at the very start and very end. @default 1 */\r\n boundaryCount?: number\r\n}\r\n\r\n/**\r\n * Computes the list of pagination items to render, inserting ellipses where\r\n * pages are collapsed. Mirrors the well-known \"boundary + sibling\" algorithm.\r\n *\r\n * @example getPaginationRange({ totalPages: 10, currentPage: 5 })\r\n * // → [1, 'start-ellipsis', 4, 5, 6, 'end-ellipsis', 10]\r\n */\r\nexport const getPaginationRange = ({\r\n totalPages,\r\n currentPage,\r\n siblingCount = 1,\r\n boundaryCount = 1,\r\n}: GetPaginationRangeParams): PaginationItem[] => {\r\n if (totalPages <= 0) {return []}\r\n\r\n // Pages pinned at the beginning and at the end of the list.\r\n const startPages = range(1, Math.min(boundaryCount, totalPages))\r\n const endPages = range(\r\n Math.max(totalPages - boundaryCount + 1, boundaryCount + 1),\r\n totalPages,\r\n )\r\n\r\n // Window of pages surrounding the current page, clamped within bounds.\r\n const siblingsStart = Math.max(\r\n Math.min(\r\n currentPage - siblingCount,\r\n totalPages - boundaryCount - siblingCount * 2 - 1,\r\n ),\r\n boundaryCount + 2,\r\n )\r\n const siblingsEnd = Math.min(\r\n Math.max(currentPage + siblingCount, boundaryCount + siblingCount * 2 + 2),\r\n endPages.length > 0 ? endPages[0] - 2 : totalPages - 1,\r\n )\r\n\r\n return [\r\n ...startPages,\r\n\r\n // Insert a start ellipsis, or the single page that was hidden by it.\r\n ...(siblingsStart > boundaryCount + 2\r\n ? (['start-ellipsis'] as const)\r\n : boundaryCount + 1 < totalPages - boundaryCount\r\n ? [boundaryCount + 1]\r\n : []),\r\n\r\n ...range(siblingsStart, siblingsEnd),\r\n\r\n // Insert an end ellipsis, or the single page that was hidden by it.\r\n ...(siblingsEnd < totalPages - boundaryCount - 1\r\n ? (['end-ellipsis'] as const)\r\n : totalPages - boundaryCount > boundaryCount\r\n ? [totalPages - boundaryCount]\r\n : []),\r\n\r\n ...endPages,\r\n ]\r\n}\r\n","import { useMemo, type FC } from 'react'\r\n\r\nimport {\r\n ChevronLeftIcon,\r\n ChevronRightIcon,\r\n ChevronsLeftIcon,\r\n ChevronsRightIcon,\r\n} from '@resources/Icons'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { PAGINATION_STYLES } from '@components/navigation/pagination/Pagination.styles'\r\nimport { getPaginationRange } from '@components/navigation/pagination/utils/getPaginationRange.utils'\r\n\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { PaginationProps } from '@components/navigation/pagination/Pagination.props'\r\nimport type { PaginationSize } from '@components/navigation/pagination/pagination.types'\r\n\r\n/** Maps the pagination size to an Icon size token. */\r\nconst ICON_SIZE: Record<PaginationSize, keyof Theme['fontSize']> = {\r\n sm: 'sm',\r\n md: 'sm',\r\n lg: 'md',\r\n}\r\n\r\nconst defaultPageAriaLabel = (page: number, selected: boolean): string =>\r\n selected ? `page ${page}` : `Go to page ${page}`\r\n\r\n/**\r\n * Accessible, controlled pagination control.\r\n *\r\n * Renders a `<nav>` landmark wrapping a list of page buttons, with optional\r\n * previous/next and first/last controls. Collapses long ranges using ellipses\r\n * (configurable via `siblingCount` and `boundaryCount`). The active page exposes\r\n * `aria-current=\"page\"`.\r\n *\r\n * ```tsx\r\n * const [page, setPage] = useState(1)\r\n *\r\n * <Pagination\r\n * currentPage={page}\r\n * totalPages={10}\r\n * onPageChange={setPage}\r\n * showFirstLast\r\n * />\r\n * ```\r\n */\r\nconst Pagination: FC<PaginationProps> = ({\r\n currentPage,\r\n totalPages,\r\n onPageChange,\r\n siblingCount = 1,\r\n boundaryCount = 1,\r\n size = 'md',\r\n shape = 'rounded',\r\n showPrevNext = true,\r\n showFirstLast = false,\r\n disabled = false,\r\n ariaLabel = 'Pagination',\r\n previousAriaLabel = 'Go to previous page',\r\n nextAriaLabel = 'Go to next page',\r\n firstAriaLabel = 'Go to first page',\r\n lastAriaLabel = 'Go to last page',\r\n getPageAriaLabel = defaultPageAriaLabel,\r\n}) => {\r\n const items = useMemo(\r\n () => getPaginationRange({ totalPages, currentPage, siblingCount, boundaryCount }),\r\n [totalPages, currentPage, siblingCount, boundaryCount],\r\n )\r\n\r\n if (totalPages <= 0) {return null}\r\n\r\n const iconSize = ICON_SIZE[size]\r\n const isFirstPage = currentPage <= 1\r\n const isLastPage = currentPage >= totalPages\r\n\r\n const goTo = (page: number): void => {\r\n const next = Math.min(Math.max(page, 1), totalPages)\r\n if (next !== currentPage) {onPageChange(next)}\r\n }\r\n\r\n return (\r\n <nav\r\n aria-label={ariaLabel}\r\n className={PAGINATION_STYLES.nav}\r\n >\r\n <ul className={PAGINATION_STYLES.list}>\r\n {showFirstLast && (\r\n <li className={PAGINATION_STYLES.item}>\r\n <button\r\n type={'button'}\r\n className={PAGINATION_STYLES.control({ size, shape })}\r\n aria-label={firstAriaLabel}\r\n disabled={disabled || isFirstPage}\r\n onClick={() => goTo(1)}\r\n >\r\n <Icon\r\n icon={ChevronsLeftIcon}\r\n size={iconSize}\r\n />\r\n </button>\r\n </li>\r\n )}\r\n\r\n {showPrevNext && (\r\n <li className={PAGINATION_STYLES.item}>\r\n <button\r\n type={'button'}\r\n className={PAGINATION_STYLES.control({ size, shape })}\r\n aria-label={previousAriaLabel}\r\n disabled={disabled || isFirstPage}\r\n onClick={() => goTo(currentPage - 1)}\r\n >\r\n <Icon\r\n icon={ChevronLeftIcon}\r\n size={iconSize}\r\n />\r\n </button>\r\n </li>\r\n )}\r\n\r\n {items.map((item) => {\r\n if (item === 'start-ellipsis' || item === 'end-ellipsis') {\r\n return (\r\n <li\r\n key={item}\r\n className={PAGINATION_STYLES.item}\r\n >\r\n <span\r\n aria-hidden={true}\r\n className={PAGINATION_STYLES.ellipsis({ size })}\r\n >\r\n {'…'}\r\n </span>\r\n </li>\r\n )\r\n }\r\n\r\n const selected = item === currentPage\r\n\r\n return (\r\n <li\r\n key={item}\r\n className={PAGINATION_STYLES.item}\r\n >\r\n <button\r\n type={'button'}\r\n className={PAGINATION_STYLES.page({ size, shape, selected })}\r\n aria-label={getPageAriaLabel(item, selected)}\r\n aria-current={selected ? 'page' : undefined}\r\n disabled={disabled}\r\n onClick={() => goTo(item)}\r\n >\r\n {item}\r\n </button>\r\n </li>\r\n )\r\n })}\r\n\r\n {showPrevNext && (\r\n <li className={PAGINATION_STYLES.item}>\r\n <button\r\n type={'button'}\r\n className={PAGINATION_STYLES.control({ size, shape })}\r\n aria-label={nextAriaLabel}\r\n disabled={disabled || isLastPage}\r\n onClick={() => goTo(currentPage + 1)}\r\n >\r\n <Icon\r\n icon={ChevronRightIcon}\r\n size={iconSize}\r\n />\r\n </button>\r\n </li>\r\n )}\r\n\r\n {showFirstLast && (\r\n <li className={PAGINATION_STYLES.item}>\r\n <button\r\n type={'button'}\r\n className={PAGINATION_STYLES.control({ size, shape })}\r\n aria-label={lastAriaLabel}\r\n disabled={disabled || isLastPage}\r\n onClick={() => goTo(totalPages)}\r\n >\r\n <Icon\r\n icon={ChevronsRightIcon}\r\n size={iconSize}\r\n />\r\n </button>\r\n </li>\r\n )}\r\n </ul>\r\n </nav>\r\n )\r\n}\r\n\r\nPagination.displayName = 'Pagination'\r\n\r\nexport default Pagination\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const TABS_LIST_STYLES = createStyles(() => ({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'row' as const,\r\n alignItems: 'center',\r\n overflowX: 'auto' as const,\r\n scrollbarWidth: 'none' as const,\r\n width: 'fit-content',\r\n '::-webkit-scrollbar': { display: 'none' as const },\r\n },\r\n}))\r\n","import { createContext } from 'react'\r\n\r\nexport type TabsContextValue = {\r\n /** Currently selected tab value. */\r\n value: string\r\n /** Selects a new tab. */\r\n setValue: (value: string) => void\r\n /** Stable id used to derive `id`/`aria-controls`/`aria-labelledby`. */\r\n baseId: string\r\n /** Registers a tab value so List can compute keyboard navigation. */\r\n registerTab: (value: string) => () => void\r\n /** Returns the ordered list of registered tab values. */\r\n getTabValues: () => string[]\r\n}\r\n\r\nexport const TabsContext = createContext<TabsContextValue | null>(null)\r\n","import { useContext } from 'react'\r\n\r\nimport { TabsContext, type TabsContextValue } from '@components/navigation/tabs/Tabs.context'\r\n\r\n/**\r\n * Internal hook — consumes the Tabs context and throws if used outside a `<Tabs>` provider.\r\n * @internal\r\n */\r\nexport const useTabsContext = (): TabsContextValue => {\r\n const ctx = useContext(TabsContext)\r\n if (!ctx) {\r\n throw new Error('This component must be used inside a <Tabs> provider.')\r\n }\r\n return ctx\r\n}\r\n","import { type FC, type KeyboardEvent } from 'react'\r\n\r\nimport { TABS_LIST_STYLES } from '@components/navigation/tabs/tabs-list/TabsList.styles'\r\nimport { useTabsContext } from '@components/navigation/tabs/useTabsContext'\r\n\r\nimport type { TabsListProps } from '@components/navigation/tabs/tabs-list/TabsList.props'\r\n\r\nconst TabsList: FC<TabsListProps> = ({ children, ariaLabel, ariaLabelledBy }) => {\r\n const { value, setValue, baseId, getTabValues } = useTabsContext()\r\n\r\n /**\r\n * Returns true if the tab at the given index is aria-disabled.\r\n * We check the DOM attribute because disabled state lives in TabItem,\r\n * not in the shared context, and we want to avoid adding it to the context.\r\n */\r\n const isTabDisabled = (tabValue: string): boolean => {\r\n const el = document.getElementById(`${baseId}-tab-${tabValue}`)\r\n return el?.getAttribute('aria-disabled') === 'true'\r\n }\r\n\r\n /**\r\n * Moves focus to the nearest non-disabled tab starting from `startIndex`\r\n * and stepping in the given `direction` (+1 = right, -1 = left).\r\n * Stops after a full loop if all tabs are disabled.\r\n */\r\n const focusNextEnabled = (startIndex: number, direction: 1 | -1): void => {\r\n const values = getTabValues()\r\n for (let i = 1; i <= values.length; i++) {\r\n const index = (startIndex + direction * i + values.length) % values.length\r\n const nextValue = values[index]\r\n if (!isTabDisabled(nextValue)) {\r\n document.getElementById(`${baseId}-tab-${nextValue}`)?.focus()\r\n setValue(nextValue)\r\n return\r\n }\r\n }\r\n }\r\n\r\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>): void => {\r\n const values = getTabValues()\r\n const currentIndex = values.indexOf(value)\r\n if (currentIndex === -1) {\r\n return\r\n }\r\n\r\n switch (event.key) {\r\n case 'ArrowRight':\r\n event.preventDefault()\r\n focusNextEnabled(currentIndex, 1)\r\n break\r\n case 'ArrowLeft':\r\n event.preventDefault()\r\n focusNextEnabled(currentIndex, -1)\r\n break\r\n case 'Home': {\r\n event.preventDefault()\r\n // Focus the first non-disabled tab\r\n const firstIdx = values.findIndex((v) => !isTabDisabled(v))\r\n if (firstIdx !== -1) {\r\n document.getElementById(`${baseId}-tab-${values[firstIdx]}`)?.focus()\r\n setValue(values[firstIdx])\r\n }\r\n break\r\n }\r\n case 'End': {\r\n event.preventDefault()\r\n // Focus the last non-disabled tab\r\n const lastIdx = [...values].reverse().findIndex((v) => !isTabDisabled(v))\r\n if (lastIdx !== -1) {\r\n const realIndex = values.length - 1 - lastIdx\r\n document.getElementById(`${baseId}-tab-${values[realIndex]}`)?.focus()\r\n setValue(values[realIndex])\r\n }\r\n break\r\n }\r\n default:\r\n break\r\n }\r\n }\r\n\r\n return (\r\n // WAI-ARIA: the tablist div is not focusable — only its tab children are,\r\n // via roving tabIndex. The keydown handler bubbles up from the focused tab.\r\n // eslint-disable-next-line jsx-a11y/interactive-supports-focus\r\n <div\r\n role={'tablist'}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n className={TABS_LIST_STYLES.root}\r\n onKeyDown={handleKeyDown}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nTabsList.displayName = 'Tabs.List'\r\n\r\nexport default TabsList\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const TABS_PANEL_STYLES = createStyles(() => ({\r\n root: {\r\n width: '100%',\r\n },\r\n}))\r\n","import { type FC } from 'react'\r\n\r\nimport { TABS_PANEL_STYLES } from '@components/navigation/tabs/tabs-panel/TabsPanel.styles'\r\nimport { useTabsContext } from '@components/navigation/tabs/useTabsContext'\r\n\r\nimport type { TabsPanelProps } from '@components/navigation/tabs/tabs-panel/TabsPanel.props'\r\n\r\nconst TabsPanel: FC<TabsPanelProps> = ({ value, children, keepMounted = false }) => {\r\n const { value: activeValue, baseId } = useTabsContext()\r\n const isActive = activeValue === value\r\n\r\n if (!isActive && !keepMounted) {\r\n return null\r\n }\r\n\r\n return (\r\n <div\r\n role={'tabpanel'}\r\n id={`${baseId}-panel-${value}`}\r\n aria-labelledby={`${baseId}-tab-${value}`}\r\n // WAI-ARIA APG: tabIndex={0} allows keyboard scrolling when the panel has no focusable child.\r\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\r\n tabIndex={0}\r\n hidden={!isActive}\r\n className={TABS_PANEL_STYLES.root}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nTabsPanel.displayName = 'Tabs.Panel'\r\n\r\nexport default TabsPanel\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\ntype TabItemStyleParams = {\r\n isActive: boolean\r\n disabled: boolean\r\n}\r\n\r\nexport const TAB_ITEM_STYLES = createStyles((theme) => ({\r\n root: ({ isActive, disabled }: TabItemStyleParams) => ({\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center' as const,\r\n boxSizing: 'border-box' as const,\r\n paddingTop: theme.spacing.xs,\r\n paddingBottom: theme.spacing.xs,\r\n paddingLeft: theme.spacing.md,\r\n paddingRight: theme.spacing.md,\r\n border: 'none',\r\n borderBottom: `2px solid ${isActive ? theme.colors.primaryMain : 'transparent'}`,\r\n background: 'transparent',\r\n cursor: disabled ? ('not-allowed' as const) : ('pointer' as const),\r\n fontFamily: 'inherit',\r\n whiteSpace: 'nowrap' as const,\r\n transition: `border-color ${theme.transition.fast}`,\r\n ...(disabled ? {} : {\r\n ':hover': {\r\n borderBottomColor: isActive ? theme.colors.primaryMain : theme.colors.textTertiary,\r\n },\r\n }),\r\n // Inset + elevate: TabsList is a horizontally scrollable, glued row —\r\n // keep the ring inside the bounds and above neighbours so it is never clipped.\r\n ':focus-visible': getFocusRingStyles(theme, { inset: true, elevate: true }),\r\n }),\r\n}))\r\n","import { useEffect } from 'react'\r\n\r\nimport { useTabsContext } from '@components/navigation/tabs/useTabsContext'\r\n\r\ntype UseTabItemParams = {\r\n value: string\r\n disabled: boolean\r\n}\r\n\r\ntype UseTabItemReturn = {\r\n /** Whether this tab is the currently selected one. */\r\n isActive: boolean\r\n /** All ARIA + interaction props to spread onto the `<button>` element. */\r\n buttonProps: {\r\n id: string\r\n 'aria-selected': boolean\r\n 'aria-controls': string\r\n 'aria-disabled': true | undefined\r\n tabIndex: 0 | -1\r\n onClick: () => void\r\n }\r\n}\r\n\r\n/**\r\n * Handles tab registration, active state derivation and interaction props\r\n * for a single `Tabs.Tab` (TabItem) button.\r\n *\r\n * Registers the tab value into the shared ordered registry on mount so that\r\n * `TabsList` can perform correct ArrowLeft/Right/Home/End keyboard navigation.\r\n */\r\nexport const useTabItem = ({ value, disabled }: UseTabItemParams): UseTabItemReturn => {\r\n const { value: activeValue, setValue, baseId, registerTab } = useTabsContext()\r\n\r\n // Maintains the ordered tab registry used by TabsList for keyboard navigation.\r\n useEffect(() => registerTab(value), [registerTab, value])\r\n\r\n const isActive = activeValue === value\r\n\r\n return {\r\n isActive,\r\n buttonProps: {\r\n id: `${baseId}-tab-${value}`,\r\n 'aria-selected': isActive,\r\n 'aria-controls': `${baseId}-panel-${value}`,\r\n 'aria-disabled': disabled || undefined,\r\n tabIndex: isActive ? 0 : -1,\r\n onClick: () => {\r\n if (!disabled) {\r\n setValue(value)\r\n }\r\n },\r\n },\r\n }\r\n}\r\n","import { type FC } from 'react'\r\n\r\nimport { TAB_ITEM_STYLES } from '@components/navigation/tabs/tab-item/TabItem.styles'\r\nimport { useTabItem } from '@components/navigation/tabs/tab-item/useTabItem'\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { TabItemProps } from '@components/navigation/tabs/tab-item/TabItem.props'\r\n\r\nconst TabItem: FC<TabItemProps> = ({ value, label, disabled = false }) => {\r\n const { isActive, buttonProps } = useTabItem({ value, disabled })\r\n\r\n return (\r\n <button\r\n type={'button'}\r\n role={'tab'}\r\n className={TAB_ITEM_STYLES.root({ isActive, disabled })}\r\n {...buttonProps}\r\n >\r\n <Text\r\n variant={'span'}\r\n fontSize={'sm'}\r\n fontWeight={isActive ? 'semibold' : 'medium'}\r\n color={disabled ? 'textDisabled' : isActive ? 'textPrimary' : 'textSecondary'}\r\n >\r\n {label}\r\n </Text>\r\n </button>\r\n )\r\n}\r\n\r\nTabItem.displayName = 'Tabs.Tab'\r\n\r\nexport default TabItem\r\n","import { useCallback, useId, useMemo, useRef, useState, type FC } from 'react'\r\n\r\nimport TabsList from '@components/navigation/tabs/tabs-list/TabsList'\r\nimport TabsPanel from '@components/navigation/tabs/tabs-panel/TabsPanel'\r\nimport TabItem from '@components/navigation/tabs/tab-item/TabItem'\r\nimport { TabsContext, type TabsContextValue } from '@components/navigation/tabs/Tabs.context'\r\n\r\nimport type { TabsProps } from '@components/navigation/tabs/Tabs.props'\r\nimport type { TabsComponent } from '@components/navigation/tabs/Tabs.types'\r\n\r\n/**\r\n * WAI-ARIA compliant tab interface using a compound component API.\r\n *\r\n * ```tsx\r\n * <Tabs defaultValue={'active'} onChange={handleChange}>\r\n * <Tabs.List ariaLabel={'Subscriptions'}>\r\n * <Tabs.Tab value={'active'} label={'Active'} />\r\n * <Tabs.Tab value={'cancelled'} label={'Cancelled'} />\r\n * </Tabs.List>\r\n * <Tabs.Panel value={'active'}>...</Tabs.Panel>\r\n * <Tabs.Panel value={'cancelled'}>...</Tabs.Panel>\r\n * </Tabs>\r\n * ```\r\n *\r\n * Supports controlled (`value` + `onChange`) and uncontrolled (`defaultValue`) modes.\r\n * Keyboard navigation: `ArrowLeft/Right`, `Home`, `End`.\r\n * Only the active panel is mounted — use `keepMounted` on `Tabs.Panel` to preserve state across switches.\r\n */\r\nconst TabsBase: FC<TabsProps> = ({\r\n children,\r\n value: controlledValue,\r\n defaultValue,\r\n onChange,\r\n id,\r\n}) => {\r\n const reactId = useId()\r\n const baseId = id ?? `tabs-${reactId}`\r\n\r\n const [internalValue, setInternalValue] = useState<string>(defaultValue ?? '')\r\n const isControlled = controlledValue !== undefined\r\n const value = isControlled ? controlledValue : internalValue\r\n\r\n const tabsRef = useRef<string[]>([])\r\n\r\n const registerTab = useCallback((tabValue: string) => {\r\n if (!tabsRef.current.includes(tabValue)) {\r\n tabsRef.current.push(tabValue)\r\n }\r\n return () => {\r\n tabsRef.current = tabsRef.current.filter((v) => v !== tabValue)\r\n }\r\n }, [])\r\n\r\n const getTabValues = useCallback(() => tabsRef.current, [])\r\n\r\n const setValue = useCallback(\r\n (next: string) => {\r\n if (!isControlled) {\r\n setInternalValue(next)\r\n }\r\n onChange?.(next)\r\n },\r\n [isControlled, onChange],\r\n )\r\n\r\n const contextValue = useMemo<TabsContextValue>(\r\n () => ({ value, setValue, baseId, registerTab, getTabValues }),\r\n [value, setValue, baseId, registerTab, getTabValues],\r\n )\r\n\r\n return (\r\n <TabsContext.Provider value={contextValue}>\r\n {children}\r\n </TabsContext.Provider>\r\n )\r\n}\r\n\r\nTabsBase.displayName = 'Tabs'\r\n\r\nconst Tabs = TabsBase as TabsComponent\r\nTabs.List = TabsList\r\nTabs.Tab = TabItem\r\nTabs.Panel = TabsPanel\r\n\r\nexport default Tabs\r\n","import { useId, useMemo } from 'react'\r\n\r\nimport { useControllableState } from '@hooks/common/use-controllable-state/useControllableState'\r\n\r\nimport type { AccordionContextValue } from '@components/overlay/accordion/Accordion.context'\r\n\r\ntype UseAccordionOptions = {\r\n open?: boolean\r\n defaultOpen?: boolean\r\n onOpenChange?: (open: boolean) => void\r\n disabled?: boolean\r\n}\r\n\r\ntype UseAccordionReturn = {\r\n contextValue: AccordionContextValue\r\n}\r\n\r\n/**\r\n * Encapsulates all stateful logic for the Accordion component:\r\n * - Stable trigger/panel IDs (via `useId`)\r\n * - Controlled/uncontrolled open state (via `useControllableState`)\r\n * - Toggle handler\r\n * - Memoised context value\r\n */\r\nexport const useAccordion = ({\r\n open,\r\n defaultOpen = false,\r\n onOpenChange,\r\n disabled = false,\r\n}: UseAccordionOptions): UseAccordionReturn => {\r\n const uid = useId()\r\n const triggerId = `accordion-trigger-${uid}`\r\n const panelId = `accordion-panel-${uid}`\r\n\r\n const [isOpen, setIsOpen] = useControllableState<boolean>({\r\n value: open,\r\n defaultValue: defaultOpen,\r\n onChange: onOpenChange,\r\n })\r\n\r\n const toggle = () => {\r\n if (!disabled) {\r\n setIsOpen(!isOpen)\r\n }\r\n }\r\n\r\n const contextValue = useMemo(\r\n () => ({ isOpen, toggle, triggerId, panelId, disabled }),\r\n [isOpen, disabled, triggerId, panelId],\r\n )\r\n\r\n return { contextValue }\r\n}\r\n","import { createContext, useContext } from 'react'\r\n\r\nexport type AccordionContextValue = {\r\n /** Whether the panel is currently expanded. */\r\n isOpen: boolean\r\n /** Toggles the panel open/closed. */\r\n toggle: () => void\r\n /** Stable ID for the trigger `<button>` — used by `aria-labelledby` on the panel. */\r\n triggerId: string\r\n /** Stable ID for the body panel — used by `aria-controls` on the trigger. */\r\n panelId: string\r\n /** Whether the accordion is disabled. */\r\n disabled: boolean\r\n}\r\n\r\nexport const AccordionContext = createContext<AccordionContextValue>({\r\n isOpen: false,\r\n toggle: () => undefined,\r\n triggerId: '',\r\n panelId: '',\r\n disabled: false,\r\n})\r\n\r\nexport const useAccordionContext = () => useContext(AccordionContext)\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const ACCORDION_STYLES = createStyles((theme) => ({\r\n\r\n /** Outer container — handles the border / ghost visual variant. */\r\n root: {\r\n boxSizing: 'border-box' as const,\r\n borderRadius: theme.radius.lg,\r\n overflow: 'hidden' as const,\r\n width: '100%',\r\n },\r\n\r\n rootOutlined: {\r\n border: `1px solid ${theme.colors.borderMain}`,\r\n backgroundColor: theme.colors.surfacePaper,\r\n },\r\n\r\n rootGhost: {\r\n backgroundColor: 'transparent',\r\n borderRadius: 0,\r\n },\r\n\r\n}), { id: 'accordion' })\r\n","import { createStyles } from '@aurora-ds/theme'\r\nimport { DEFAULT_TRANSITION_DURATION_MS } from '@constants/app.constants'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nconst TRANSITION = `${DEFAULT_TRANSITION_DURATION_MS}ms ease`\r\n\r\nexport const ACCORDION_TITLE_STYLES = createStyles((theme) => ({\r\n\r\n /** Semantic heading wrapping the trigger button. */\r\n heading: {\r\n margin: 0,\r\n },\r\n\r\n /** Trigger button — full-width, flex row, resets native button styles. */\r\n trigger: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n gap: theme.spacing.sm,\r\n width: '100%',\r\n padding: `${theme.spacing.md} ${theme.spacing.lg}`,\r\n background: 'none',\r\n border: 'none',\r\n cursor: 'pointer',\r\n textAlign: 'left' as const,\r\n color: theme.colors.textPrimary,\r\n borderRadius: 'inherit',\r\n outline: 'none',\r\n '&:focus-visible': getFocusRingStyles(theme, { inset: true }),\r\n '&:hover:not(:disabled)': {\r\n backgroundColor: theme.colors.surfaceElevated,\r\n },\r\n '&:disabled': {\r\n cursor: 'not-allowed',\r\n opacity: 0.5,\r\n },\r\n },\r\n\r\n /** Chevron icon — rotates when the panel is open. */\r\n chevron: {\r\n flexShrink: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: theme.colors.textSecondary,\r\n transition: `transform ${TRANSITION}`,\r\n width: '1.25rem',\r\n height: '1.25rem',\r\n },\r\n\r\n chevronOpen: {\r\n transform: 'rotate(180deg)',\r\n },\r\n\r\n}), { id: 'accordion-title' })\r\n","import type { FC } from 'react'\r\n\r\nimport ChevronDownIcon from '@resources/assets/icons/ChevronDownIcon.svg?react'\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { ACCORDION_TITLE_STYLES } from '@components/overlay/accordion/accordion-title/AccordionTitle.styles'\r\nimport { useAccordionContext } from '@components/overlay/accordion/Accordion.context'\r\n\r\nimport type { AccordionTitleProps } from '@components/overlay/accordion/accordion-title/AccordionTitle.props'\r\n\r\n/**\r\n * Trigger button for the accordion. Toggles the body open or closed.\r\n * Accepts any ReactNode as children.\r\n * Must be used inside an `<Accordion>` component.\r\n *\r\n * @example\r\n * <Accordion.Title>Frequently asked question</Accordion.Title>\r\n */\r\nconst AccordionTitle: FC<AccordionTitleProps> = ({ children, headingLevel = 3 }) => {\r\n const { isOpen, toggle, triggerId, panelId, disabled } = useAccordionContext()\r\n\r\n const Heading = `h${headingLevel}` as 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\r\n const headingClassName = (ACCORDION_TITLE_STYLES as Record<string, string>).heading\r\n\r\n return (\r\n <Heading className={headingClassName}>\r\n <button\r\n id={triggerId}\r\n type={'button'}\r\n aria-expanded={isOpen}\r\n aria-controls={panelId}\r\n disabled={disabled}\r\n className={ACCORDION_TITLE_STYLES.trigger}\r\n onClick={toggle}\r\n >\r\n {children}\r\n\r\n <span\r\n aria-hidden={true}\r\n className={cx(\r\n ACCORDION_TITLE_STYLES.chevron,\r\n isOpen && ACCORDION_TITLE_STYLES.chevronOpen,\r\n )}\r\n >\r\n <ChevronDownIcon\r\n width={20}\r\n height={20}\r\n />\r\n </span>\r\n </button>\r\n </Heading>\r\n )\r\n}\r\n\r\nAccordionTitle.displayName = 'Accordion.Title'\r\n\r\nexport default AccordionTitle\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { DEFAULT_TRANSITION_DURATION_MS } from '@constants/app.constants'\r\n\r\nconst TRANSITION = `${DEFAULT_TRANSITION_DURATION_MS}ms ease`\r\n\r\nexport const ACCORDION_BODY_STYLES = createStyles((theme) => ({\r\n\r\n /**\r\n * Panel wrapper — uses the CSS grid trick to animate height from 0 → auto\r\n * without JavaScript-computed pixel values.\r\n */\r\n panelWrapper: {\r\n display: 'grid',\r\n gridTemplateRows: '0fr',\r\n transition: `grid-template-rows ${TRANSITION}`,\r\n // Safari < 16.4 fallback (grid-template-rows animation not supported)\r\n '@supports not (grid-template-rows: 0fr)': {\r\n display: 'none',\r\n },\r\n },\r\n\r\n panelWrapperOpen: {\r\n gridTemplateRows: '1fr',\r\n },\r\n\r\n /** Inner panel — `overflow: hidden` is required for the grid trick to work. */\r\n panelInner: {\r\n overflow: 'hidden' as const,\r\n },\r\n\r\n /** Actual content area with padding. */\r\n panelContent: {\r\n padding: `0 ${theme.spacing.lg} ${theme.spacing.md}`,\r\n color: theme.colors.textSecondary,\r\n },\r\n\r\n}), { id: 'accordion-body' })\r\n","import type { FC } from 'react'\r\n\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { ACCORDION_BODY_STYLES } from '@components/overlay/accordion/accordion-body/AccordionBody.styles'\r\nimport { useAccordionContext } from '@components/overlay/accordion/Accordion.context'\r\n\r\nimport type { AccordionBodyProps } from '@components/overlay/accordion/accordion-body/AccordionBody.props'\r\n\r\n/**\r\n * Animated content panel of the accordion.\r\n * Uses the CSS `grid-template-rows` trick for height animation without JS.\r\n * Must be used inside an `<Accordion>` component.\r\n *\r\n * @example\r\n * <Accordion.Body>\r\n * <p>This content is revealed when the accordion is open.</p>\r\n * </Accordion.Body>\r\n */\r\nconst AccordionBody: FC<AccordionBodyProps> = ({ children }) => {\r\n const { isOpen, triggerId, panelId } = useAccordionContext()\r\n\r\n return (\r\n <div\r\n id={panelId}\r\n role={'region'}\r\n aria-labelledby={triggerId}\r\n className={cx(\r\n ACCORDION_BODY_STYLES.panelWrapper,\r\n isOpen && ACCORDION_BODY_STYLES.panelWrapperOpen,\r\n )}\r\n >\r\n <div className={ACCORDION_BODY_STYLES.panelInner}>\r\n <div className={ACCORDION_BODY_STYLES.panelContent}>\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nAccordionBody.displayName = 'Accordion.Body'\r\n\r\nexport default AccordionBody\r\n","import { type FC } from 'react'\r\n\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { useAccordion } from '@components/overlay/accordion/utils/useAccordion.utils'\r\nimport { AccordionContext } from '@components/overlay/accordion/Accordion.context'\r\nimport { ACCORDION_STYLES } from '@components/overlay/accordion/Accordion.styles'\r\nimport AccordionTitle from '@components/overlay/accordion/accordion-title/AccordionTitle'\r\nimport AccordionBody from '@components/overlay/accordion/accordion-body/AccordionBody'\r\n\r\nimport type { AccordionProps } from '@components/overlay/accordion/Accordion.props'\r\nimport type { AccordionComponent } from '@components/overlay/accordion/accordion.types'\r\n\r\n/**\r\n * Accessible accordion with animated body.\r\n *\r\n * Uses the CSS `grid-template-rows` trick (0fr → 1fr) to animate height\r\n * without JavaScript-computed pixel values.\r\n *\r\n * Supports both controlled (`open` + `onOpenChange`) and uncontrolled\r\n * (`defaultOpen`) modes via `useControllableState`.\r\n *\r\n * @example\r\n * // Uncontrolled\r\n * <Accordion>\r\n * <Accordion.Title>What is Aurora DS?</Accordion.Title>\r\n * <Accordion.Body>Aurora DS is a React component library.</Accordion.Body>\r\n * </Accordion>\r\n *\r\n * @example\r\n * // Controlled\r\n * const [open, setOpen] = useState(false)\r\n * <Accordion open={open} onOpenChange={setOpen}>\r\n * <Accordion.Title>Controlled accordion</Accordion.Title>\r\n * <Accordion.Body>Content shown when open is true.</Accordion.Body>\r\n * </Accordion>\r\n */\r\nconst AccordionBase: FC<AccordionProps> = ({\r\n open,\r\n defaultOpen = false,\r\n onOpenChange,\r\n children,\r\n variant = 'ghost',\r\n disabled = false,\r\n}) => {\r\n const { contextValue } = useAccordion({ open, defaultOpen, onOpenChange, disabled })\r\n\r\n return (\r\n <AccordionContext.Provider value={contextValue}>\r\n <div\r\n className={cx(\r\n ACCORDION_STYLES.root,\r\n variant === 'outlined' && ACCORDION_STYLES.rootOutlined,\r\n variant === 'ghost' && ACCORDION_STYLES.rootGhost,\r\n )}\r\n >\r\n {children}\r\n </div>\r\n </AccordionContext.Provider>\r\n )\r\n}\r\n\r\nAccordionBase.displayName = 'Accordion'\r\n\r\nconst Accordion = AccordionBase as AccordionComponent\r\nAccordion.Title = AccordionTitle\r\nAccordion.Body = AccordionBody\r\n\r\nexport default Accordion\r\n","import { createContext, useContext } from 'react'\r\n\r\nimport type { AlertVariant } from '@components/overlay/alert/alert.types'\r\nimport type { Theme } from '@theme/theme.types'\r\n\r\ntype AlertContextValue = {\r\n variant: AlertVariant\r\n accentColor: keyof Theme['colors']\r\n}\r\n\r\nexport const AlertContext = createContext<AlertContextValue>({\r\n variant: 'default',\r\n accentColor: 'defaultActive',\r\n})\r\n\r\nexport const useAlertContext = () => useContext(AlertContext)\r\n","import type { ComponentType, FC, SVGProps } from 'react'\r\n\r\nimport AlertSuccessIcon from '@resources/assets/icons/AlertSuccessIcon.svg?react'\r\nimport AlertErrorIcon from '@resources/assets/icons/AlertErrorIcon.svg?react'\r\nimport AlertWarningIcon from '@resources/assets/icons/AlertWarningIcon.svg?react'\r\nimport AlertInfoIcon from '@resources/assets/icons/AlertInfoIcon.svg?react'\r\nimport CloseIcon from '@resources/assets/icons/CloseIcon.svg?react'\r\n\r\nimport { Stack } from '@components/layout/stack'\r\nimport { Text } from '@components/foundation/text'\r\nimport { IconButton } from '@components/actions/icon-button'\r\nimport { useAlertContext } from '@components/overlay/alert/Alert.context'\r\n\r\nimport type { ButtonColor } from '@components/actions/button/button.types'\r\nimport type { AlertVariant } from '@components/overlay/alert/alert.types'\r\nimport type { AlertTitleProps } from '@components/overlay/alert/alert-title/AlertTitle.props'\r\n\r\nconst VARIANT_DISMISS_COLOR: Record<AlertVariant, ButtonColor> = {\r\n default: 'neutral',\r\n success: 'success',\r\n error: 'error',\r\n warning: 'warning',\r\n info: 'info',\r\n}\r\n\r\nconst VARIANT_ICONS: Partial<Record<AlertVariant, FC<SVGProps<SVGSVGElement>>>> = {\r\n success: AlertSuccessIcon,\r\n error: AlertErrorIcon,\r\n warning: AlertWarningIcon,\r\n info: AlertInfoIcon,\r\n}\r\n\r\n/** Returns true if value is a React component type (function/class), false if it is a rendered node. */\r\nconst isSvgComponent = (value: unknown): value is ComponentType<SVGProps<SVGSVGElement>> =>\r\n typeof value === 'function'\r\n\r\n/**\r\n * Alert title row: renders the variant icon alongside the title text.\r\n * Must be used inside an `<Alert>` component.\r\n */\r\nconst AlertTitle: FC<AlertTitleProps> = ({ children, icon, onDismiss }) => {\r\n const { variant, accentColor } = useAlertContext()\r\n\r\n // Resolve which icon to render:\r\n // - custom icon prop always takes precedence over the built-in variant icon\r\n // - for \"default\" variant there is no built-in icon; custom icon adds one\r\n const builtInIcon = VARIANT_ICONS[variant]\r\n // Must be capitalised for JSX to treat it as a component (not an HTML tag)\r\n const ResolvedIcon: ComponentType<SVGProps<SVGSVGElement>> | null =\r\n icon && isSvgComponent(icon) ? icon : (icon === undefined ? (builtInIcon ?? null) : null)\r\n const customNode = icon && !isSvgComponent(icon) ? icon : null\r\n\r\n const hasIcon = ResolvedIcon !== null || customNode !== null\r\n\r\n return (\r\n <Stack\r\n flexDirection={'row'}\r\n alignItems={'center'}\r\n gap={'sm'}\r\n justifyContent={onDismiss ? 'space-between' : undefined}\r\n >\r\n <Stack\r\n flexDirection={'row'}\r\n alignItems={'center'}\r\n gap={'sm'}\r\n >\r\n {hasIcon && (\r\n <Stack\r\n flexShrink={0}\r\n alignItems={'center'}\r\n color={accentColor}\r\n width={'1.25rem'}\r\n height={'1.25rem'}\r\n aria-hidden={true}\r\n >\r\n {ResolvedIcon ? (\r\n <ResolvedIcon\r\n width={20}\r\n height={20}\r\n />\r\n ) : (\r\n customNode\r\n )}\r\n </Stack>\r\n )}\r\n <Text\r\n fontWeight={'semibold'}\r\n fontSize={'sm'}\r\n color={accentColor}\r\n >\r\n {children}\r\n </Text>\r\n </Stack>\r\n {onDismiss && (\r\n <IconButton\r\n icon={CloseIcon}\r\n ariaLabel={'Dismiss'}\r\n variant={'text'}\r\n color={VARIANT_DISMISS_COLOR[variant]}\r\n size={'sm'}\r\n onClick={onDismiss}\r\n />\r\n )}\r\n </Stack>\r\n )\r\n}\r\n\r\nAlertTitle.displayName = 'Alert.Title'\r\n\r\nexport default AlertTitle\r\n","import type { FC } from 'react'\r\n\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { AlertBodyProps } from '@components/overlay/alert/alert-body/AlertBody.props'\r\n\r\n/**\r\n * Alert message body. Must be used inside an `<Alert>` component.\r\n */\r\nconst AlertBody: FC<AlertBodyProps> = ({ children }) => (\r\n <Text\r\n as={'p'}\r\n fontSize={'sm'}\r\n color={'textSecondary'}\r\n >\r\n {children}\r\n </Text>\r\n)\r\n\r\nAlertBody.displayName = 'Alert.Body'\r\n\r\nexport default AlertBody\r\n","import type { FC } from 'react'\r\n\r\nimport { Stack } from '@components/layout/stack'\r\n\r\nimport type { AlertActionsProps } from '@components/overlay/alert/alert-actions/AlertActions.props'\r\n\r\n/**\r\n * Alert actions row: renders action elements (buttons, links…) at the bottom of an `<Alert>`.\r\n * Must be used inside an `<Alert>` component.\r\n *\r\n * @example\r\n * <Alert variant=\"error\">\r\n * <Alert.Title>Something went wrong</Alert.Title>\r\n * <Alert.Body>Please try again.</Alert.Body>\r\n * <Alert.Actions>\r\n * <Button size=\"sm\" variant=\"outlined\" color=\"error\">Retry</Button>\r\n * </Alert.Actions>\r\n * </Alert>\r\n */\r\nconst AlertActions: FC<AlertActionsProps> = ({ children }) => (\r\n <Stack\r\n flexDirection={'row'}\r\n alignItems={'center'}\r\n flexWrap={'wrap'}\r\n justifyContent={'end'}\r\n gap={'sm'}\r\n paddingTop={'xs'}\r\n >\r\n {children}\r\n </Stack>\r\n)\r\n\r\nAlertActions.displayName = 'Alert.Actions'\r\n\r\nexport default AlertActions\r\n","import { Stack } from '@components/layout/stack'\r\nimport { AlertContext } from '@components/overlay/alert/Alert.context'\r\nimport AlertTitle from '@components/overlay/alert/alert-title/AlertTitle'\r\nimport AlertBody from '@components/overlay/alert/alert-body/AlertBody'\r\nimport AlertActions from '@components/overlay/alert/alert-actions/AlertActions'\r\n\r\nimport type { AlertComponent, AlertVariant } from '@components/overlay/alert/alert.types'\r\nimport type { AlertProps } from '@components/overlay/alert/Alert.props'\r\nimport type { Theme } from '@theme/theme.types'\r\nimport { FC } from 'react'\r\n\r\ntype VariantTokens = {\r\n backgroundColor: keyof Theme['colors']\r\n borderColor: keyof Theme['colors']\r\n accentColor: keyof Theme['colors']\r\n}\r\n\r\nconst VARIANT_TOKENS: Record<AlertVariant, VariantTokens> = {\r\n default: { backgroundColor: 'surfacePaper', borderColor: 'defaultMain', accentColor: 'defaultActive' },\r\n success: { backgroundColor: 'successSubtle', borderColor: 'successMain', accentColor: 'successActive' },\r\n error: { backgroundColor: 'errorSubtle', borderColor: 'errorMain', accentColor: 'errorActive' },\r\n warning: { backgroundColor: 'warningSubtle', borderColor: 'warningMain', accentColor: 'warningActive' },\r\n info: { backgroundColor: 'infoSubtle', borderColor: 'infoMain', accentColor: 'infoActive' },\r\n}\r\n\r\nconst VARIANT_ARIA_LIVE: Record<AlertVariant, 'polite' | 'assertive'> = {\r\n default: 'polite',\r\n success: 'polite',\r\n error: 'assertive',\r\n warning: 'polite',\r\n info: 'polite',\r\n}\r\n\r\n/** role=\"alert\" implies aria-live=\"assertive\" — reserve it for errors.\r\n * Other variants use role=\"status\" (implies aria-live=\"polite\"). */\r\nconst VARIANT_ROLE: Record<AlertVariant, 'alert' | 'status'> = {\r\n default: 'status',\r\n success: 'status',\r\n error: 'alert',\r\n warning: 'status',\r\n info: 'status',\r\n}\r\n\r\n/**\r\n * Inline alert banner with 5 visual variants: default, success, error, warning, info.\r\n * Use `Alert.Title` (icon + heading) and `Alert.Body` (message) as children.\r\n *\r\n * @example\r\n * <Alert variant=\"success\">\r\n * <Alert.Title>Saved</Alert.Title>\r\n * <Alert.Body>Your changes have been saved successfully.</Alert.Body>\r\n * </Alert>\r\n */\r\nconst AlertBase: FC<AlertProps> = ({\r\n variant = 'default',\r\n children,\r\n width = '100%',\r\n outline = false,\r\n shadow = 'none',\r\n}) => {\r\n const { backgroundColor, borderColor, accentColor } = VARIANT_TOKENS[variant]\r\n\r\n return (\r\n <AlertContext.Provider value={{ variant, accentColor }}>\r\n <Stack\r\n role={VARIANT_ROLE[variant]}\r\n aria-live={VARIANT_ARIA_LIVE[variant]}\r\n flexDirection={'column'}\r\n gap={'xs'}\r\n padding={'md'}\r\n borderRadius={'lg'}\r\n backgroundColor={backgroundColor}\r\n borderColor={outline ? borderColor : undefined}\r\n borderWidth={outline ? '1px' : undefined}\r\n borderStyle={outline ? 'solid' : undefined}\r\n boxShadow={shadow}\r\n width={width}\r\n >\r\n {children}\r\n </Stack>\r\n </AlertContext.Provider>\r\n )\r\n}\r\n\r\nAlertBase.displayName = 'Alert'\r\n\r\nconst Alert = AlertBase as AlertComponent\r\nAlert.Title = AlertTitle\r\nAlert.Body = AlertBody\r\nAlert.Actions = AlertActions\r\n\r\nexport default Alert\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { MEDIA_MAX } from '@constants/breakpoints.constants'\r\nimport { DEFAULT_TRANSITION_DURATION_MS } from '@constants/app.constants'\r\n\r\nconst TRANSITION = `${DEFAULT_TRANSITION_DURATION_MS}ms ease`\r\n\r\nexport const DIALOG_STYLES = createStyles((theme) => ({\r\n panel: {\r\n position: 'fixed' as const,\r\n inset: 0,\r\n margin: 'auto',\r\n width: '90vw',\r\n height: 'fit-content',\r\n maxWidth: 'var(--dialog-max-width, 80vw)',\r\n maxHeight: 'var(--dialog-max-height, 80vh)',\r\n minWidth: 'var(--dialog-min-width, 0px)',\r\n minHeight: 'var(--dialog-min-height, 0px)',\r\n zIndex: theme.zIndex.modal,\r\n backgroundColor: theme.colors.surfacePaper,\r\n borderRadius: theme.radius['2xl'],\r\n boxShadow: theme.shadows.xl,\r\n display: 'flex',\r\n flexDirection: 'column' as const,\r\n overflow: 'hidden' as const,\r\n willChange: 'opacity, transform',\r\n opacity: 0,\r\n transform: 'scale(0.97)',\r\n transition: `opacity ${TRANSITION}, transform ${TRANSITION}`,\r\n // Mobile: bottom sheet\r\n [`@media (${MEDIA_MAX.sm})`]: {\r\n top: 'auto',\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n margin: 0,\r\n width: '100%',\r\n height: 'auto',\r\n maxWidth: 'none',\r\n maxHeight: 'var(--dialog-max-height, 85vh)',\r\n borderRadius: `${theme.radius['2xl']} ${theme.radius['2xl']} 0 0`,\r\n transform: 'translateY(100%)',\r\n },\r\n },\r\n\r\n panelVisible: {\r\n opacity: 1,\r\n transform: 'scale(1)',\r\n [`@media (${MEDIA_MAX.sm})`]: {\r\n transform: 'translateY(0)',\r\n },\r\n },\r\n\r\n // Full-viewport variant (applied via `fullscreen` prop — all screen sizes)\r\n panelFullscreen: {\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n margin: 0,\r\n width: '100%',\r\n height: '100dvh',\r\n maxWidth: 'none',\r\n maxHeight: 'none',\r\n borderRadius: 0,\r\n },\r\n\r\n}), { id: 'dialog' })\r\n","import { createContext, useContext } from 'react'\r\n\r\nimport type CloseIcon from '@resources/assets/icons/CloseIcon.svg?react'\r\n\r\nexport type DialogContextValue = {\r\n /** Stable id for the title element, used by `aria-labelledby` on the panel. */\r\n titleId: string\r\n /** Close icon SVG component forwarded to Dialog.Header. */\r\n CloseIconComponent: typeof CloseIcon\r\n}\r\n\r\nexport const DialogContext = createContext<DialogContextValue>({\r\n titleId: '',\r\n CloseIconComponent: null as any,\r\n})\r\n\r\nexport const useDialogContext = (): DialogContextValue => useContext(DialogContext)\r\n","import { useId, useEffect, useRef, useCallback, type CSSProperties, type RefObject } from 'react'\r\n\r\nimport { useTransitionRender } from '@hooks/common/use-transition-render/useTransitionRender'\r\nimport { useKeyPress } from '@hooks/common/use-key-press/useKeyPress'\r\nimport { useBodyScrollLock } from '@hooks/common/use-body-scroll-lock/useBodyScrollLock'\r\nimport { useFocusTrap } from '@hooks/common/use-focus-trap/useFocusTrap'\r\nimport { BREAKPOINTS } from '@constants/breakpoints.constants'\r\nimport { DEFAULT_TRANSITION_DURATION_MS } from '@constants/app.constants'\r\n\r\nimport type { DialogProps } from '@components/overlay/dialog/Dialog.props'\r\n\r\nconst MOBILE_MEDIA_QUERY = `(max-width: ${BREAKPOINTS.sm - 1}px)`\r\n\r\ntype UseDialogReturn = {\r\n isVisible: boolean\r\n isFadingIn: boolean\r\n panelRef: RefObject<HTMLDivElement | null>\r\n titleId: string\r\n labelledBy: string | undefined\r\n handleBackdropClick: () => void\r\n cssVars: CSSProperties\r\n}\r\n\r\nconst resolvePx = (v: number | string): string =>\r\n typeof v === 'number' ? `${v}px` : v\r\n\r\nexport const useDialog = ({\r\n open,\r\n onClose,\r\n closeOnBackdropClick,\r\n maxWidth,\r\n maxHeight,\r\n minWidth,\r\n minHeight,\r\n 'aria-label': ariaLabel,\r\n}: Pick<DialogProps, 'open' | 'onClose' | 'closeOnBackdropClick' | 'maxWidth' | 'maxHeight' | 'minWidth' | 'minHeight' | 'aria-label'>): UseDialogReturn => {\r\n\r\n const { isVisible, isFadingIn } = useTransitionRender(open, DEFAULT_TRANSITION_DURATION_MS)\r\n const titleId = useId()\r\n const panelRef = useRef<HTMLDivElement>(null)\r\n\r\n // Focus the panel after the opening transition completes\r\n useEffect(() => {\r\n if (!open) {return}\r\n const timer = setTimeout(() => {\r\n panelRef.current?.focus({ preventScroll: true })\r\n }, DEFAULT_TRANSITION_DURATION_MS)\r\n return () => clearTimeout(timer)\r\n }, [open])\r\n\r\n // Lock body scroll while the dialog is open, preserving the scrollbar to avoid layout shift\r\n useBodyScrollLock(open)\r\n\r\n // Trap focus within the dialog panel while it is mounted (accessible modal)\r\n useFocusTrap(panelRef, isVisible)\r\n\r\n // Backdrop is always clickable on mobile (bottom-sheet UX), opt-in on desktop\r\n const handleBackdropClick = useCallback(() => {\r\n const isMobile = window.matchMedia(MOBILE_MEDIA_QUERY).matches\r\n if (closeOnBackdropClick || isMobile) {\r\n onClose()\r\n }\r\n }, [closeOnBackdropClick, onClose])\r\n\r\n useKeyPress({ Escape: onClose }, { enabled: open })\r\n\r\n const cssVars: CSSProperties = {\r\n '--dialog-max-width': resolvePx(maxWidth!),\r\n '--dialog-max-height': maxHeight,\r\n ...(minWidth !== undefined && { '--dialog-min-width': resolvePx(minWidth) }),\r\n ...(minHeight !== undefined && { '--dialog-min-height': resolvePx(minHeight) }),\r\n } as CSSProperties\r\n\r\n const labelledBy = ariaLabel ? undefined : titleId\r\n\r\n return { isVisible, isFadingIn, panelRef, titleId, labelledBy, handleBackdropClick, cssVars }\r\n}\r\n","import { useContext, type FC } from 'react'\r\n\r\nimport { IconButton } from '@components/actions/icon-button'\r\nimport { Text } from '@components/foundation/text'\r\nimport { Stack } from '@components/layout/stack'\r\nimport { DialogContext } from '@components/overlay/dialog/Dialog.context'\r\n\r\nimport type { DialogHeaderProps } from '@components/overlay/dialog/dialog-header/DialogHeader.props'\r\n\r\n/**\r\n * Standard dialog header with a title and a close button.\r\n * The `titleId` is wired automatically to the parent Dialog's `aria-labelledby`.\r\n *\r\n * @example\r\n * <Dialog.Header title=\"Confirm action\" onClose={handleClose} />\r\n */\r\nconst DialogHeader: FC<DialogHeaderProps> = ({ title, onClose }) => {\r\n const { titleId, CloseIconComponent } = useContext(DialogContext)\r\n\r\n return (\r\n <Stack\r\n flexDirection={'row'}\r\n alignItems={'center'}\r\n justifyContent={'space-between'}\r\n gap={'md'}\r\n paddingTop={'md'}\r\n paddingBottom={'md'}\r\n paddingLeft={'lg'}\r\n paddingRight={'md'}\r\n flexShrink={0}\r\n >\r\n <Text\r\n id={titleId}\r\n variant={'span'}\r\n as={'h2'}\r\n fontSize={'md'}\r\n fontWeight={'semibold'}\r\n color={'textPrimary'}\r\n >\r\n {title}\r\n </Text>\r\n\r\n <IconButton\r\n icon={CloseIconComponent}\r\n ariaLabel={'Close dialog'}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={'sm'}\r\n type={'button'}\r\n onClick={onClose}\r\n />\r\n </Stack>\r\n )\r\n}\r\n\r\nDialogHeader.displayName = 'Dialog.Header'\r\n\r\nexport default DialogHeader\r\n","import type { FC } from 'react'\r\n\r\nimport { Box } from '@components/layout/box'\r\n\r\nimport type { DialogBodyProps } from '@components/overlay/dialog/dialog-body/DialogBody.props'\r\n\r\n/**\r\n * Scrollable content area of the dialog.\r\n *\r\n * @example\r\n * <Dialog.Body>\r\n * <p>Are you sure you want to delete this item?</p>\r\n * </Dialog.Body>\r\n */\r\nconst DialogBody: FC<DialogBodyProps> = ({ children }) => (\r\n <Box\r\n flexGrow={1}\r\n minHeight={'0'}\r\n overflowY={'auto'}\r\n padding={'lg'}\r\n >\r\n {children}\r\n </Box>\r\n)\r\n\r\nDialogBody.displayName = 'Dialog.Body'\r\n\r\nexport default DialogBody\r\n","import { createPortal } from 'react-dom'\r\nimport { type FC } from 'react'\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport CloseIcon from '@resources/assets/icons/CloseIcon.svg?react'\r\nimport { DIALOG_STYLES } from '@components/overlay/dialog/Dialog.styles'\r\nimport { DialogContext } from '@components/overlay/dialog/Dialog.context'\r\nimport { useDialog } from '@components/overlay/dialog/utils/useDialog.utils'\r\nimport DialogHeader from '@components/overlay/dialog/dialog-header/DialogHeader'\r\nimport DialogBody from '@components/overlay/dialog/dialog-body/DialogBody'\r\nimport { Backdrop } from '@components/overlay/backdrop'\r\n\r\nimport type { DialogProps } from '@components/overlay/dialog/Dialog.props'\r\nimport type { DialogComponent } from '@components/overlay/dialog/Dialog.types'\r\n\r\n/**\r\n * Modal dialog with a semi-transparent overlay. Supports responsive layout:\r\n * centered on desktop, full-width bottom sheet on mobile (< sm breakpoint).\r\n *\r\n * Animated via `useTransitionRender` on both open and close.\r\n * Closed by pressing Escape or using `Dialog.Header`'s built-in close button.\r\n * Backdrop click: always enabled on mobile, opt-in on desktop via `closeOnBackdropClick`.\r\n *\r\n * @example\r\n * <Dialog open={open} onClose={() => setOpen(false)}>\r\n * <Dialog.Header title=\"Settings\" onClose={() => setOpen(false)} />\r\n * <Dialog.Body>…content…</Dialog.Body>\r\n * </Dialog>\r\n */\r\nconst DialogBase: FC<DialogProps> = ({\r\n open,\r\n onClose,\r\n children,\r\n closeOnBackdropClick = false,\r\n fullscreen = false,\r\n maxWidth = '80vw',\r\n maxHeight = '80vh',\r\n minWidth,\r\n minHeight,\r\n 'aria-label': ariaLabel,\r\n}) => {\r\n const { isVisible, isFadingIn, panelRef, titleId, labelledBy, handleBackdropClick, cssVars } =\r\n useDialog({ open, onClose, closeOnBackdropClick, maxWidth, maxHeight, minWidth, minHeight, 'aria-label': ariaLabel })\r\n\r\n if (!isVisible) {return null}\r\n\r\n return createPortal(\r\n <>\r\n <Backdrop\r\n visible={isFadingIn}\r\n onClick={handleBackdropClick}\r\n />\r\n\r\n <div\r\n ref={panelRef}\r\n role={'dialog'}\r\n aria-modal={true}\r\n aria-labelledby={labelledBy}\r\n aria-label={ariaLabel}\r\n tabIndex={-1}\r\n data-scroll-lock-ignore={true}\r\n className={cx(\r\n DIALOG_STYLES.panel,\r\n isFadingIn && DIALOG_STYLES.panelVisible,\r\n fullscreen && DIALOG_STYLES.panelFullscreen,\r\n )}\r\n style={cssVars}\r\n >\r\n <DialogContext.Provider value={{ titleId, CloseIconComponent: CloseIcon }}>\r\n {children}\r\n </DialogContext.Provider>\r\n </div>\r\n </>,\r\n document.body\r\n )\r\n}\r\n\r\nDialogBase.displayName = 'Dialog'\r\n\r\nconst Dialog = DialogBase as DialogComponent\r\nDialog.Header = DialogHeader\r\nDialog.Body = DialogBody\r\n\r\nexport default Dialog\r\n","import { useEffect, useState } from 'react'\r\n\r\nimport { BREAKPOINTS } from '@constants/breakpoints.constants'\r\n\r\ntype Breakpoint = keyof typeof BREAKPOINTS\r\n\r\n/**\r\n * Listens to a CSS media query string and returns whether it currently matches.\r\n *\r\n * @param query - A valid CSS media query string, e.g. `'(max-width: 639px)'`.\r\n * @returns `true` when the media query matches, `false` otherwise.\r\n *\r\n * @example\r\n * const isMobile = useMediaQuery('(max-width: 639px)')\r\n */\r\nexport const useMediaQuery = (query: string): boolean => {\r\n const [matches, setMatches] = useState<boolean>(() => {\r\n if (typeof window === 'undefined') {return false}\r\n return window.matchMedia(query).matches\r\n })\r\n\r\n useEffect(() => {\r\n if (typeof window === 'undefined') {return}\r\n const mediaQueryList = window.matchMedia(query)\r\n setMatches(mediaQueryList.matches)\r\n\r\n const listener = (event: MediaQueryListEvent) => setMatches(event.matches)\r\n mediaQueryList.addEventListener('change', listener)\r\n return () => mediaQueryList.removeEventListener('change', listener)\r\n }, [query])\r\n\r\n return matches\r\n}\r\n\r\n/**\r\n * Returns `true` when the viewport width is **below** the given breakpoint (mobile-first max).\r\n *\r\n * @param breakpoint - One of the Aurora breakpoints: `xs` | `sm` | `md` | `lg` | `xl` | `2xl`.\r\n *\r\n * @example\r\n * const isMobile = useBreakpointMax('sm') // true when width < 640px\r\n */\r\nexport const useBreakpointMax = (breakpoint: Breakpoint): boolean =>\r\n useMediaQuery(`(max-width: ${BREAKPOINTS[breakpoint] - 1}px)`)\r\n\r\n/**\r\n * Returns `true` when the viewport width is **at or above** the given breakpoint.\r\n *\r\n * @param breakpoint - One of the Aurora breakpoints: `xs` | `sm` | `md` | `lg` | `xl` | `2xl`.\r\n *\r\n * @example\r\n * const isDesktop = useBreakpointMin('md') // true when width >= 768px\r\n */\r\nexport const useBreakpointMin = (breakpoint: Breakpoint): boolean =>\r\n useMediaQuery(`(min-width: ${BREAKPOINTS[breakpoint]}px)`)","import { useCallback, useEffect, useRef, useState } from 'react'\nimport { useKeyPress } from '@hooks/common/use-key-press/useKeyPress'\nimport type {\n UseListKeyNavOptions,\n UseListKeyNavResult\n} from '@hooks/components/overlay/use-list-key-nav/useListKeyNav.types'\n\n/**\n * Manages keyboard navigation for a listbox-style menu.\n *\n * Binds ArrowDown, ArrowUp, Home, End, and Enter using `useKeyPress`.\n * Automatically skips disabled items and optionally wraps around (loop).\n * Resets focus when `enabled` toggles.\n */\nexport const useListKeyNav = ({\n itemCount,\n enabled,\n onSelect,\n isDisabled,\n loop = true,\n initialIndex = 0,\n}: UseListKeyNavOptions): UseListKeyNavResult => {\n const [focusedIndex, setFocusedIndex] = useState(-1)\n\n const initialIndexRef = useRef(initialIndex)\n useEffect(() => {\n initialIndexRef.current = initialIndex\n }, [initialIndex])\n\n useEffect(() => {\n setFocusedIndex(enabled ? initialIndexRef.current : -1)\n }, [enabled])\n\n const getNextIndex = useCallback(\n (current: number, direction: 1 | -1): number => {\n if (itemCount === 0) {return -1}\n let next = current + direction\n for (let i = 0; i < itemCount; i++) {\n if (next < 0) {next = loop ? itemCount - 1 : 0}\n if (next >= itemCount) {next = loop ? 0 : itemCount - 1}\n if (!isDisabled?.(next)) {return next}\n next += direction\n }\n return current\n },\n [itemCount, loop, isDisabled]\n )\n\n useKeyPress(\n {\n ArrowDown: (e) => {\n e.preventDefault()\n setFocusedIndex((prev) => getNextIndex(prev, 1))\n },\n ArrowUp: (e) => {\n e.preventDefault()\n setFocusedIndex((prev) => getNextIndex(prev, -1))\n },\n Home: (e) => {\n e.preventDefault()\n setFocusedIndex(getNextIndex(-1, 1))\n },\n End: (e) => {\n e.preventDefault()\n setFocusedIndex(getNextIndex(itemCount, -1))\n },\n Enter: () => {\n if (focusedIndex >= 0) {onSelect(focusedIndex)}\n },\n },\n { enabled }\n )\n\n return { focusedIndex, setFocusedIndex }\n}\n","export const lightPalette = {\r\n // Surface\r\n surfaceBackground: '#f8fafc',\r\n surfacePaper: '#ffffff',\r\n surfaceElevated: '#f1f5f9',\r\n\r\n // Text\r\n textPrimary: '#0f172a',\r\n textSecondary: '#475569',\r\n textTertiary: '#64748b',\r\n textDisabled: '#94a3b8',\r\n textInverse: '#ffffff',\r\n\r\n // Primary (Indigo brand)\r\n primaryMain: '#5b5aef',\r\n primaryHover: '#4f46e5',\r\n primaryActive: '#4338ca',\r\n primarySubtle: '#eef2ff',\r\n primarySubtleHover: '#e0e7ff',\r\n primarySubtleActive: '#c7d2fe',\r\n primaryDisabled: '#a5b4fc',\r\n primaryOn: '#ffffff',\r\n\r\n // Secondary (Fuchsia — vivid brand accent, no semantic meaning)\r\n // Distinct from: success (green), error (red), warning (amber), info (sky)\r\n // secondaryMain (#c026d3) + secondaryOn (#ffffff) → contrast ~4.67:1 ✓ (AA)\r\n secondaryMain: '#c026d3',\r\n secondaryHover: '#a21caf',\r\n secondaryActive: '#86198f',\r\n secondarySubtle: '#fdf4ff',\r\n secondarySubtleHover: '#fae8ff',\r\n secondarySubtleActive: '#f5d0fe',\r\n secondaryDisabled: '#f0abfc',\r\n secondaryOn: '#ffffff',\r\n\r\n // Border\r\n borderSubtle: '#f1f5f9',\r\n borderMain: '#e2e8f0',\r\n borderStrong: '#cbd5e1',\r\n\r\n // Focus ring — single source of truth for the focus-visible outline\r\n focusRing: '#000000',\r\n\r\n // Disabled state\r\n disabledMain: '#e2e8f0',\r\n disabledText: '#94a3b8',\r\n\r\n // Success (Emerald)\r\n successMain: '#059669',\r\n successHover: '#047857',\r\n successActive: '#065f46',\r\n successSubtle: '#d1fae5',\r\n successSubtleHover: '#a7f3d0',\r\n successSubtleActive: '#6ee7b7',\r\n successOn: '#ffffff',\r\n\r\n // Warning (Amber)\r\n warningMain: '#d97706',\r\n warningHover: '#b45309',\r\n warningActive: '#92400e',\r\n warningSubtle: '#fef3c7',\r\n warningSubtleHover: '#fde68a',\r\n warningSubtleActive: '#fcd34d',\r\n warningOn: '#ffffff',\r\n\r\n // Error (Red)\r\n errorMain: '#dc2626',\r\n errorHover: '#b91c1c',\r\n errorActive: '#991b1b',\r\n errorSubtle: '#fee2e2',\r\n errorSubtleHover: '#fecaca',\r\n errorSubtleActive: '#fca5a5',\r\n errorOn: '#ffffff',\r\n\r\n // Info (Sky)\r\n infoMain: '#0284c7',\r\n infoHover: '#0369a1',\r\n infoActive: '#0c4a6e',\r\n infoSubtle: '#e0f2fe',\r\n infoSubtleHover: '#bae6fd',\r\n infoSubtleActive: '#7dd3fc',\r\n infoOn: '#ffffff',\r\n\r\n // Orange\r\n orangeMain: '#ea580c',\r\n orangeHover: '#c2410c',\r\n orangeActive: '#9a2e0f',\r\n orangeSubtle: '#ffedd5',\r\n orangeSubtleHover: '#fed7aa',\r\n orangeSubtleActive: '#fdba74',\r\n orangeOn: '#ffffff',\r\n\r\n // Pink\r\n pinkMain: '#db2777',\r\n pinkHover: '#be185d',\r\n pinkActive: '#9d174d',\r\n pinkSubtle: '#fce7f3',\r\n pinkSubtleHover: '#fbcfe8',\r\n pinkSubtleActive: '#f9a8d4',\r\n pinkOn: '#ffffff',\r\n\r\n // Violet\r\n violetMain: '#7c3aed',\r\n violetHover: '#6d28d9',\r\n violetActive: '#5b21b6',\r\n violetSubtle: '#ede9fe',\r\n violetSubtleHover: '#ddd6fe',\r\n violetSubtleActive: '#c4b5fd',\r\n violetOn: '#ffffff',\r\n\r\n // Default (Slate)\r\n defaultMain: '#64748b',\r\n defaultHover: '#475569',\r\n defaultActive: '#334155',\r\n defaultSubtle: '#f1f5f9',\r\n defaultSubtleHover: '#e2e8f0',\r\n defaultSubtleActive: '#cbd5e1',\r\n\r\n // Skeleton\r\n skeletonPrimary: '#dde3ec',\r\n skeletonSecondary: '#edf0f5',\r\n\r\n // Link (Blue)\r\n linkMain: '#1e40af',\r\n linkHover: '#2563eb',\r\n linkActive: '#4f46e5',\r\n linkDisabled: '#93c5fd',\r\n}\r\n","/**\r\n * Default breakpoint tokens\r\n */\r\nexport const themeBreakpoints = {\r\n xs: '480px', // Extra small devices (phones in landscape)\r\n sm: '640px', // Small devices (large phones, small tablets)\r\n md: '768px', // Medium devices (tablets)\r\n lg: '1024px', // Large devices (desktops)\r\n xl: '1280px', // Extra large devices (large desktops)\r\n '2xl': '1536px', // Extra extra large devices (wide screens)\r\n}\r\n","/**\r\n * Default font size tokens\r\n */\r\nexport const themeFontSize = {\r\n '2xs': '0.625rem', // 10px\r\n xs: '0.75rem', // 12px\r\n sm: '0.875rem', // 14px\r\n md: '1rem', // 16px\r\n lg: '1.25rem', // 20px\r\n xl: '1.5rem', // 24px\r\n '2xl': '2rem', // 32px\r\n '3xl': '2.5rem', // 40px\r\n '4xl': '3rem', // 48px\r\n '5xl': '4rem', // 64px\r\n}\r\n","/**\r\n * Default font weight tokens\r\n */\r\nexport const themeFontWeight = {\r\n light: 300,\r\n regular: 400,\r\n medium: 500,\r\n semibold: 600,\r\n bold: 700,\r\n}\r\n","/**\r\n * Default line height tokens\r\n */\r\nexport const themeLineHeight = {\r\n none: 1,\r\n tight: 1.25,\r\n normal: 1.5,\r\n relaxed: 1.75,\r\n loose: 2,\r\n}\r\n","/**\r\n * Default opacity tokens\r\n */\r\nexport const themeOpacity = {\r\n none: 0,\r\n lowest: 0.05,\r\n low: 0.1,\r\n medium: 0.25,\r\n high: 0.5,\r\n higher: 0.75,\r\n full: 1,\r\n}\r\n","/**\r\n * Default border radius tokens\r\n */\r\nexport const themeRadius = {\r\n none: '0',\r\n xs: '0.125rem', // 2px\r\n sm: '0.25rem', // 4px\r\n md: '0.375rem', // 6px\r\n lg: '0.5rem', // 8px\r\n xl: '0.75rem', // 12px\r\n '2xl': '1rem', // 16px\r\n full: '9999px',\r\n}\r\n","/**\r\n * Default shadow tokens\r\n */\r\nexport const themeShadows = {\r\n none: 'none',\r\n xs: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\r\n sm: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\r\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\r\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\r\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\r\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\r\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\r\n focus: '0 0 0 3px rgb(99 102 241 / 0.4)',\r\n dropSm: 'drop-shadow(0 1px 3px rgb(0 0 0 / 0.1)) drop-shadow(0 1px 2px rgb(0 0 0 / 0.1))',\r\n}\r\n","/**\r\n * Default spacing tokens\r\n *\r\n * ⚠️ Token keys MUST stay CSS-custom-property safe (letters, digits, hyphens only).\r\n * They are turned into CSS variables (e.g. `smPlus` → `--theme-spacing-sm-plus`) by\r\n * the theme proxy, so characters like `+` would produce invalid variable names and\r\n * silently break any style that uses them.\r\n */\r\nexport const themeSpacing = {\r\n none: '0',\r\n '2xs': '0.125rem', // 2px\r\n xs: '0.25rem', // 4px\r\n xsPlus: '0.375rem', // 6px\r\n sm: '0.5rem', // 8px\r\n smPlus: '0.75rem', // 12px\r\n md: '1rem', // 16px\r\n lg: '1.5rem', // 24px\r\n xl: '2rem', // 32px\r\n '2xl': '3rem', // 48px\r\n '3xl': '4rem', // 64px\r\n '4xl': '6rem', // 96px\r\n '5xl': '8rem', // 128px\r\n}\r\n","/**\r\n * Default transition tokens\r\n */\r\nexport const themeTransition = {\r\n fast: '100ms ease-in-out',\r\n normal: '200ms ease-in-out',\r\n slow: '300ms ease-in-out',\r\n}\r\n","/**\r\n * Default z-index tokens\r\n */\r\nexport const themeZIndex = {\r\n behind: -1,\r\n base: 0,\r\n dropdown: 1000,\r\n sticky: 1100,\r\n overlay: 1300,\r\n modal: 1400,\r\n popover: 1500,\r\n tooltip: 1600,\r\n toast: 1700,\r\n}\r\n","import { createTheme } from '@aurora-ds/theme'\r\nimport { lightPalette } from '@theme/_palettes/lightPalette'\r\nimport { themeBreakpoints } from '@theme/values/themeBreakpoints'\r\nimport { themeFontSize } from '@theme/values/themeFontSize'\r\nimport { themeFontWeight } from '@theme/values/themeFontWeight'\r\nimport { themeLineHeight } from '@theme/values/themeLineHeight'\r\nimport { themeOpacity } from '@theme/values/themeOpacity'\r\nimport { themeRadius } from '@theme/values/themeRadius'\r\nimport { themeShadows } from '@theme/values/themeShadows'\r\nimport { themeSpacing } from '@theme/values/themeSpacing'\r\nimport { themeTransition } from '@theme/values/themeTransition'\r\nimport { themeZIndex } from '@theme/values/themeZIndex'\r\n\r\nexport const lightTheme = createTheme({\r\n colors: lightPalette,\r\n spacing: themeSpacing,\r\n radius: themeRadius,\r\n shadows: themeShadows,\r\n fontSize: themeFontSize,\r\n fontWeight: themeFontWeight,\r\n lineHeight: themeLineHeight,\r\n zIndex: themeZIndex,\r\n transition: themeTransition,\r\n opacity: themeOpacity,\r\n breakpoints: themeBreakpoints,\r\n})\r\n","export const darkPalette = {\r\n // Surface\r\n surfaceBackground: '#1F1F21',\r\n surfacePaper: '#2A2A2D',\r\n surfaceElevated: '#333336',\r\n\r\n // Text\r\n // textPrimary → contrast ~14.5:1 on surfaceBackground ✓ (AAA)\r\n // textSecondary → contrast ~6.1:1 on surfaceBackground ✓ (AA)\r\n // textTertiary → contrast ~4.6:1 on surfaceBackground ✓ (AA)\r\n // textDisabled → intentionally low (disabled elements are WCAG-exempt)\r\n textPrimary: '#F2F2F3',\r\n textSecondary: '#A0A0A8',\r\n textTertiary: '#888891',\r\n textDisabled: '#55555A',\r\n textInverse: '#1F1F21',\r\n\r\n // Primary (Indigo — brightened for dark backgrounds)\r\n // primaryMain (#818cf8) + primaryOn (#1F1F21) → contrast ~5.4:1 ✓ (AA)\r\n primaryMain: '#818cf8',\r\n primaryHover: '#a5b4fc',\r\n primaryActive: '#c7d2fe',\r\n primarySubtle: '#1C1A2E',\r\n primarySubtleHover: '#252242',\r\n primarySubtleActive: '#2E2A56',\r\n primaryDisabled: '#3730a3',\r\n primaryOn: '#1F1F21',\r\n\r\n // Secondary (Fuchsia — vivid brand accent, no semantic meaning)\r\n // secondaryMain (#e879f9) + secondaryOn (#1F1F21) → contrast ~7.1:1 ✓ (AAA)\r\n secondaryMain: '#e879f9',\r\n secondaryHover: '#f0abfc',\r\n secondaryActive: '#f5d0fe',\r\n secondarySubtle: '#27102A',\r\n secondarySubtleHover: '#3A163E',\r\n secondarySubtleActive: '#4D1C52',\r\n secondaryDisabled: '#86198f',\r\n secondaryOn: '#1F1F21',\r\n\r\n // Border\r\n borderSubtle: '#2A2A2D',\r\n borderMain: '#3A3A3E',\r\n borderStrong: '#505055',\r\n\r\n // Focus ring — single source of truth for the focus-visible outline\r\n focusRing: '#ffffff',\r\n\r\n // Disabled state\r\n disabledMain: '#3A3A3E',\r\n disabledText: '#55555A',\r\n\r\n // Success (Emerald)\r\n // successMain (#34d399) + successOn (#051A12) → contrast ~10:1 ✓ (AAA)\r\n successMain: '#34d399',\r\n successHover: '#6ee7b7',\r\n successActive: '#a7f3d0',\r\n successSubtle: '#071F16',\r\n successSubtleHover: '#0A3324',\r\n successSubtleActive: '#0D4430',\r\n successOn: '#051A12',\r\n\r\n // Warning (Amber)\r\n // warningMain (#fbbf24) + warningOn (#1A1206') → contrast ~9.5:1 ✓ (AAA)\r\n warningMain: '#fbbf24',\r\n warningHover: '#fcd34d',\r\n warningActive: '#fde68a',\r\n warningSubtle: '#221605',\r\n warningSubtleHover: '#321F06',\r\n warningSubtleActive: '#3F2807',\r\n warningOn: '#1A1206',\r\n\r\n // Error (Red)\r\n // errorMain (#f87171) + errorOn (#1F0606) → contrast ~5.1:1 ✓ (AA)\r\n errorMain: '#f87171',\r\n errorHover: '#fca5a5',\r\n errorActive: '#fecaca',\r\n errorSubtle: '#270707',\r\n errorSubtleHover: '#3D0B0B',\r\n errorSubtleActive: '#510E0E',\r\n errorOn: '#1F0606',\r\n\r\n // Info (Sky)\r\n // infoMain (#38bdf8) + infoOn (#061520') → contrast ~10.1:1 ✓ (AAA)\r\n infoMain: '#38bdf8',\r\n infoHover: '#7dd3fc',\r\n infoActive: '#bae6fd',\r\n infoSubtle: '#081A24',\r\n infoSubtleHover: '#0B2A38',\r\n infoSubtleActive: '#0D3849',\r\n infoOn: '#061520',\r\n\r\n // Orange\r\n // orangeMain (#fb923c) + orangeOn (#1A0D03') → contrast ~7.2:1 ✓ (AAA)\r\n orangeMain: '#fb923c',\r\n orangeHover: '#fdba74',\r\n orangeActive: '#fed7aa',\r\n orangeSubtle: '#241104',\r\n orangeSubtleHover: '#361A06',\r\n orangeSubtleActive: '#472207',\r\n orangeOn: '#1A0D03',\r\n\r\n // Pink\r\n // pinkMain (#f472b6) + pinkOn (#1F0712') → contrast ~6.4:1 ✓ (AA)\r\n pinkMain: '#f472b6',\r\n pinkHover: '#f9a8d4',\r\n pinkActive: '#fbcfe8',\r\n pinkSubtle: '#260B18',\r\n pinkSubtleHover: '#390F25',\r\n pinkSubtleActive: '#4C1432',\r\n pinkOn: '#1F0712',\r\n\r\n // Violet\r\n // violetMain (#a78bfa) + violetOn (#130A24') → contrast ~7.2:1 ✓ (AAA)\r\n violetMain: '#a78bfa',\r\n violetHover: '#c4b5fd',\r\n violetActive: '#ddd6fe',\r\n violetSubtle: '#1A0E33',\r\n violetSubtleHover: '#25134A',\r\n violetSubtleActive: '#301860',\r\n violetOn: '#130A24',\r\n\r\n // Default (Neutral)\r\n defaultMain: '#A0A0A8',\r\n defaultHover: '#C8C8CF',\r\n defaultActive: '#DCDCE2',\r\n defaultSubtle: '#2A2A2D',\r\n defaultSubtleHover: '#333336',\r\n defaultSubtleActive: '#3A3A3E',\r\n\r\n // Skeleton — visible shimmer on dark surfaces\r\n skeletonPrimary: '#2A2A2D',\r\n skeletonSecondary: '#3A3A3E',\r\n\r\n // Link — 3-step progression: sky blue → indigo → violet\r\n // linkMain (#60a5fa) → contrast ~6.7:1 on surfaceBackground ✓ (AA)\r\n linkMain: '#60a5fa',\r\n linkHover: '#818cf8',\r\n linkActive: '#c4b5fd',\r\n linkDisabled: '#2A3F7A',\r\n}\r\n","import { createTheme } from '@aurora-ds/theme'\r\nimport { darkPalette } from '@theme/_palettes/darkPalette'\r\nimport { themeBreakpoints } from '@theme/values/themeBreakpoints'\r\nimport { themeFontSize } from '@theme/values/themeFontSize'\r\nimport { themeFontWeight } from '@theme/values/themeFontWeight'\r\nimport { themeLineHeight } from '@theme/values/themeLineHeight'\r\nimport { themeOpacity } from '@theme/values/themeOpacity'\r\nimport { themeRadius } from '@theme/values/themeRadius'\r\nimport { themeShadows } from '@theme/values/themeShadows'\r\nimport { themeSpacing } from '@theme/values/themeSpacing'\r\nimport { themeTransition } from '@theme/values/themeTransition'\r\nimport { themeZIndex } from '@theme/values/themeZIndex'\r\n\r\nexport const darkTheme = createTheme({\r\n colors: darkPalette,\r\n spacing: themeSpacing,\r\n radius: themeRadius,\r\n shadows: themeShadows,\r\n fontSize: themeFontSize,\r\n fontWeight: themeFontWeight,\r\n lineHeight: themeLineHeight,\r\n zIndex: themeZIndex,\r\n transition: themeTransition,\r\n opacity: themeOpacity,\r\n breakpoints: themeBreakpoints,\r\n})\r\n"],"names":["keyframes","createStyles","_jsx","createElement","Fragment","theme","useTheme","LABEL_FONT_SIZE","ICON_SIZE","cx","_jsxs","ICON_SIZE_MAP","createPortal","VARIANTS","COLORS","SIZES","createContext","useContext","useState","useCallback","useMemo","Children","isValidElement","cloneElement","createVariants","VIEWPORT_MARGIN_PX","useRef","useEffect","useId","_Fragment","Component","useLayoutEffect","TRANSITION","createTheme"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/resources/Icons.ts","../../src/constants/animation.constants.ts","../../src/constants/app.constants.ts","../../src/theme/components/focusRing.ts","../../src/components/actions/_common/buttonVariants.styles.ts","../../src/components/actions/button/Button.styles.ts","../../src/components/foundation/icon/Icon.styles.ts","../../src/components/foundation/icon/Icon.tsx","../../src/components/foundation/text/utils/getTextVariantStyles.utils.ts","../../src/components/foundation/text/Text.styles.ts","../../src/components/foundation/text/utils/getTruncateTextStyles.utils.ts","../../src/components/foundation/text/utils/parseTextWithBold.utils.ts","../../src/components/foundation/text/Text.tsx","../../src/components/actions/button/Button.tsx","../../src/components/actions/fab/Fab.styles.ts","../../src/components/actions/fab/utils/buildPlacementStyle.utils.ts","../../src/components/actions/fab/Fab.tsx","../../src/components/actions/icon-button/IconButton.styles.ts","../../src/components/actions/icon-button/IconButton.tsx","../../src/components/actions/link/Link.styles.ts","../../src/components/actions/link/Link.tsx","../../src/components/actions/toggle/utils/buildToggleIntents.utils.ts","../../src/components/actions/toggle/utils/buildTogglePressedStyles.utils.ts","../../src/components/actions/toggle/toggle-button/ToggleButton.styles.ts","../../src/components/actions/toggle/toggle-group/ToggleGroup.context.ts","../../src/components/actions/toggle/hooks/useToggleState.ts","../../src/components/actions/toggle/toggle-button/ToggleButton.tsx","../../src/components/actions/toggle/toggle-icon-button/ToggleIconButton.styles.ts","../../src/components/actions/toggle/toggle-icon-button/ToggleIconButton.tsx","../../src/components/actions/toggle/toggle-group/ToggleGroup.styles.ts","../../src/components/actions/toggle/toggle-group/hooks/useToggleGroup.ts","../../src/components/actions/toggle/toggle-group/ToggleGroup.tsx","../../src/components/data-display/avatar/Avatar.styles.ts","../../src/components/data-display/avatar/utils/getAvatarInitials.utils.ts","../../src/components/data-display/avatar/Avatar.tsx","../../src/components/data-display/avatar/AvatarGroup.styles.ts","../../src/components/data-display/avatar/AvatarGroup.tsx","../../src/components/data-display/badge/utils/getBadgeColorStyles.utils.ts","../../src/components/data-display/badge/Badge.styles.ts","../../src/components/data-display/badge/Badge.tsx","../../src/hooks/components/overlay/use-tooltip-position/useTooltipPosition.ts","../../src/components/overlay/tooltip/Tooltip.styles.ts","../../src/components/overlay/tooltip/Tooltip.tsx","../../src/components/data-display/info-bubble/InfoBubble.styles.ts","../../src/components/data-display/info-bubble/InfoBubble.tsx","../../src/components/data-display/table/Table.context.ts","../../src/components/data-display/table/Table.styles.ts","../../src/components/data-display/table/table-body/TableBody.styles.ts","../../src/components/data-display/table/table-cell/TableCell.styles.ts","../../src/components/data-display/table/useTableContext.ts","../../src/components/data-display/table/table-cell/TableCell.tsx","../../src/components/data-display/table/table-row/TableRow.tsx","../../src/components/foundation/skeleton/Skeleton.styles.ts","../../src/components/foundation/skeleton/Skeleton.tsx","../../src/components/data-display/table/table-body/TableBody.tsx","../../src/components/data-display/table/table-foot/TableFoot.tsx","../../src/components/data-display/table/table-head/TableHead.tsx","../../src/components/data-display/table/table-header-cell/TableHeaderCell.styles.ts","../../src/components/data-display/table/table-header-cell/TableHeaderCell.tsx","../../src/components/data-display/table/Table.tsx","../../src/components/foundation/error-boundary/DefaultErrorFallback.styles.ts","../../src/components/layout/_common/extractBoxStyleProps.utils.ts","../../src/components/layout/box/Box.styles.ts","../../src/components/layout/box/Box.tsx","../../src/components/layout/stack/Stack.tsx","../../src/components/foundation/error-boundary/DefaultErrorFallback.tsx","../../src/components/foundation/error-boundary/ErrorBoundary.tsx","../../src/components/foundation/image/Image.styles.ts","../../src/components/foundation/image/Image.tsx","../../src/components/foundation/loader/LoaderScreen.styles.ts","../../src/components/foundation/loader/LoaderScreen.tsx","../../src/components/foundation/svg-image/SvgImage.styles.ts","../../src/components/foundation/svg-image/SvgImage.tsx","../../src/components/forms/form/Form.styles.ts","../../src/components/forms/form/Form.tsx","../../src/components/forms/_common/form-helper-text/FormHelperText.tsx","../../src/components/forms/radio/radio-button/RadioButton.styles.ts","../../src/hooks/common/use-merged-refs/useMergedRefs.ts","../../src/components/forms/radio/radio-button/utils/useRadioButton.utils.ts","../../src/components/forms/radio/radio-group/radioGroupContext.ts","../../src/components/forms/radio/radio-button/RadioButton.tsx","../../src/components/forms/radio/radio-group/RadioGroup.styles.ts","../../src/hooks/common/use-controllable-state/useControllableState.ts","../../src/components/forms/radio/radio-group/utils/useRadioGroup.utils.ts","../../src/components/forms/radio/radio-group/RadioGroup.tsx","../../src/components/forms/switch/Switch.styles.ts","../../src/components/forms/switch/utils/useSwitch.utils.ts","../../src/components/forms/switch/Switch.tsx","../../src/components/forms/text-field/TextField.styles.ts","../../src/components/forms/text-field/utils/useTextField.utils.ts","../../src/components/forms/text-field/TextField.tsx","../../src/components/overlay/menu/menu-panel/MenuPanel.styles.ts","../../src/hooks/common/use-key-press/useKeyPress.ts","../../src/hooks/components/overlay/use-menu-position/useMenuPosition.ts","../../src/components/overlay/menu/MenuContext.ts","../../src/components/overlay/menu/menu-panel/utils/useMenuPanel.utils.ts","../../src/hooks/common/use-body-scroll-lock/useBodyScrollLock.ts","../../src/components/overlay/menu/menu-panel/MenuPanel.tsx","../../src/components/overlay/menu/menu-group/utils/useMenuGroup.utils.ts","../../src/components/overlay/menu/menu-group/MenuGroup.styles.ts","../../src/components/overlay/menu/menu-group/MenuGroup.tsx","../../src/components/overlay/menu/menu-item/utils/useMenuItem.utils.ts","../../src/components/overlay/menu/menu-item/MenuItem.styles.ts","../../src/components/overlay/menu/menu-item/MenuItem.tsx","../../src/components/overlay/menu/Menu.tsx","../../src/components/forms/select/select-trigger/SelectTrigger.styles.ts","../../src/components/forms/select/select-trigger/SelectTrigger.tsx","../../src/components/forms/select/utils/useSelect.utils.ts","../../src/components/forms/select/Select.tsx","../../src/components/forms/checkbox/Checkbox.styles.ts","../../src/components/forms/checkbox/utils/useCheckbox.utils.ts","../../src/components/forms/checkbox/Checkbox.tsx","../../src/components/forms/date-picker/calendar/Calendar.styles.ts","../../src/components/forms/date-picker/calendar/components/calendar-picker-header/CalendarPickerHeader.styles.ts","../../src/components/forms/date-picker/calendar/components/calendar-day-view/CalendarDayView.styles.ts","../../src/components/forms/date-picker/utils/date.utils.ts","../../src/components/forms/date-picker/calendar/components/calendar-day-view/CalendarDayView.tsx","../../src/components/forms/date-picker/calendar/components/calendar-month-view/CalendarMonthView.styles.ts","../../src/components/forms/date-picker/calendar/components/calendar-picker-header/CalendarPickerHeader.tsx","../../src/components/forms/date-picker/calendar/components/calendar-month-view/CalendarMonthView.tsx","../../src/components/forms/date-picker/calendar/components/calendar-year-view/CalendarYearView.styles.ts","../../src/components/forms/date-picker/calendar/components/calendar-year-view/CalendarYearView.tsx","../../src/components/forms/date-picker/calendar/utils/useCalendar.utils.ts","../../src/components/forms/date-picker/calendar/Calendar.tsx","../../src/components/forms/date-picker/DatePicker.styles.ts","../../src/hooks/common/use-focus-trap/useFocusTrap.ts","../../src/components/forms/date-picker/calendar-popover/CalendarPopover.tsx","../../src/components/forms/date-picker/utils/useDatePicker.utils.ts","../../src/components/forms/date-picker/utils/iconButtonSize.utils.ts","../../src/components/forms/date-picker/DatePicker.tsx","../../src/components/layout/article/Article.tsx","../../src/components/layout/aside/Aside.tsx","../../src/components/layout/card/Card.styles.ts","../../src/components/layout/card/card-header/CardHeader.tsx","../../src/components/layout/card/card-body/CardBody.tsx","../../src/components/layout/card/Card.tsx","../../src/components/layout/footer/Footer.tsx","../../src/components/layout/grid/Grid.styles.ts","../../src/components/layout/grid/Grid.tsx","../../src/components/layout/header/Header.styles.ts","../../src/components/layout/header/Header.tsx","../../src/components/layout/main/Main.tsx","../../src/components/layout/nav/Nav.tsx","../../src/components/layout/section/Section.tsx","../../src/components/layout/separator/Separator.styles.ts","../../src/components/layout/separator/Separator.tsx","../../src/components/navigation/breadcrumb/Breadcrumb.styles.ts","../../src/components/navigation/breadcrumb/Breadcrumb.context.ts","../../src/components/navigation/breadcrumb/breadcrumb-item/BreadcrumbItem.styles.ts","../../src/components/navigation/breadcrumb/breadcrumb-item/BreadcrumbItem.tsx","../../src/components/navigation/breadcrumb/Breadcrumb.tsx","../../src/components/navigation/drawer/Drawer.context.ts","../../src/components/navigation/drawer/Drawer.styles.ts","../../src/constants/breakpoints.constants.ts","../../src/components/navigation/drawer/utils/useDrawerVariant.utils.ts","../../src/components/overlay/backdrop/Backdrop.styles.ts","../../src/components/overlay/backdrop/Backdrop.tsx","../../src/hooks/common/use-transition-render/useTransitionRender.ts","../../src/components/navigation/drawer/drawer-header/DrawerHeader.tsx","../../src/components/navigation/drawer/drawer-body/DrawerBody.tsx","../../src/components/navigation/drawer/drawer-footer/DrawerFooter.tsx","../../src/components/navigation/drawer/drawer-item/DrawerItem.styles.ts","../../src/components/navigation/drawer/drawer-item/DrawerItem.tsx","../../src/components/navigation/drawer/Drawer.tsx","../../src/components/navigation/pagination/Pagination.styles.ts","../../src/components/navigation/pagination/utils/getPaginationRange.utils.ts","../../src/components/navigation/pagination/Pagination.tsx","../../src/components/navigation/tabs/tabs-list/TabsList.styles.ts","../../src/components/navigation/tabs/Tabs.context.ts","../../src/components/navigation/tabs/useTabsContext.ts","../../src/components/navigation/tabs/tabs-list/TabsList.tsx","../../src/components/navigation/tabs/tabs-panel/TabsPanel.styles.ts","../../src/components/navigation/tabs/tabs-panel/TabsPanel.tsx","../../src/components/navigation/tabs/tab-item/TabItem.styles.ts","../../src/components/navigation/tabs/tab-item/useTabItem.ts","../../src/components/navigation/tabs/tab-item/TabItem.tsx","../../src/components/navigation/tabs/Tabs.tsx","../../src/components/overlay/accordion/utils/useAccordion.utils.ts","../../src/components/overlay/accordion/Accordion.context.ts","../../src/components/overlay/accordion/Accordion.styles.ts","../../src/components/overlay/accordion/accordion-title/AccordionTitle.styles.ts","../../src/components/overlay/accordion/accordion-title/AccordionTitle.tsx","../../src/components/overlay/accordion/accordion-body/AccordionBody.styles.ts","../../src/components/overlay/accordion/accordion-body/AccordionBody.tsx","../../src/components/overlay/accordion/Accordion.tsx","../../src/components/overlay/alert/Alert.context.ts","../../src/components/overlay/alert/alert-title/AlertTitle.tsx","../../src/components/overlay/alert/alert-body/AlertBody.tsx","../../src/components/overlay/alert/alert-actions/AlertActions.tsx","../../src/components/overlay/alert/Alert.tsx","../../src/components/overlay/dialog/Dialog.styles.ts","../../src/components/overlay/dialog/Dialog.context.ts","../../src/components/overlay/dialog/utils/useDialog.utils.ts","../../src/components/overlay/dialog/dialog-header/DialogHeader.tsx","../../src/components/overlay/dialog/dialog-body/DialogBody.tsx","../../src/components/overlay/dialog/Dialog.tsx","../../src/hooks/common/use-media-query/useMediaQuery.ts","../../src/hooks/components/overlay/use-list-key-nav/useListKeyNav.ts","../../src/theme/_palettes/lightPalette.ts","../../src/theme/values/themeBreakpoints.ts","../../src/theme/values/themeFontSize.ts","../../src/theme/values/themeFontWeight.ts","../../src/theme/values/themeLineHeight.ts","../../src/theme/values/themeOpacity.ts","../../src/theme/values/themeRadius.ts","../../src/theme/values/themeShadows.ts","../../src/theme/values/themeSpacing.ts","../../src/theme/values/themeTransition.ts","../../src/theme/values/themeZIndex.ts","../../src/theme/themes/lightTheme.ts","../../src/theme/_palettes/darkPalette.ts","../../src/theme/themes/darkTheme.ts"],"sourcesContent":["import AlertErrorIcon from '@resources/assets/icons/AlertErrorIcon.svg?react'\r\nimport AlertInfoIcon from '@resources/assets/icons/AlertInfoIcon.svg?react'\r\nimport AlertSuccessIcon from '@resources/assets/icons/AlertSuccessIcon.svg?react'\r\nimport AlertWarningIcon from '@resources/assets/icons/AlertWarningIcon.svg?react'\r\nimport CalendarIcon from '@resources/assets/icons/CalendarIcon.svg?react'\r\nimport CheckIcon from '@resources/assets/icons/CheckIcon.svg?react'\r\nimport ChevronDownIcon from '@resources/assets/icons/ChevronDownIcon.svg?react'\r\nimport ChevronLeftIcon from '@resources/assets/icons/ChevronLeftIcon.svg?react'\r\nimport ChevronRightIcon from '@resources/assets/icons/ChevronRightIcon.svg?react'\r\nimport ChevronsLeftIcon from '@resources/assets/icons/ChevronsLeftIcon.svg?react'\r\nimport ChevronsRightIcon from '@resources/assets/icons/ChevronsRightIcon.svg?react'\r\nimport CloseIcon from '@resources/assets/icons/CloseIcon.svg?react'\r\nimport EyeIcon from '@resources/assets/icons/EyeIcon.svg?react'\r\nimport EyeSlashIcon from '@resources/assets/icons/EyeSlashIcon.svg?react'\r\nimport SpinnerIcon from '@resources/assets/icons/SpinnerIcon.svg?react'\r\n\r\nexport const IconRegistry = {\r\n AlertErrorIcon,\r\n AlertInfoIcon,\r\n AlertSuccessIcon,\r\n AlertWarningIcon,\r\n CalendarIcon,\r\n CheckIcon,\r\n ChevronDownIcon,\r\n ChevronLeftIcon,\r\n ChevronRightIcon,\r\n ChevronsLeftIcon,\r\n ChevronsRightIcon,\r\n CloseIcon,\r\n EyeIcon,\r\n EyeSlashIcon,\r\n SpinnerIcon,\r\n} as const\r\n\r\nexport {\r\n AlertErrorIcon,\r\n AlertInfoIcon,\r\n AlertSuccessIcon,\r\n AlertWarningIcon,\r\n CalendarIcon,\r\n CheckIcon,\r\n ChevronDownIcon,\r\n ChevronLeftIcon,\r\n ChevronRightIcon,\r\n ChevronsLeftIcon,\r\n ChevronsRightIcon,\r\n CloseIcon,\r\n EyeIcon,\r\n EyeSlashIcon,\r\n SpinnerIcon,\r\n}\r\n","import { keyframes } from '@aurora-ds/theme'\r\n\r\nexport const spinAnimation = keyframes({\r\n '0%': { transform: 'rotate(0deg)' },\r\n '100%': { transform: 'rotate(360deg)' },\r\n})\r\n\r\nexport const skeletonShimmerAnimation = keyframes({\r\n '0%': { backgroundPosition: '100% 50%' },\r\n '100%': { backgroundPosition: '0% 50%' },\r\n})\r\n","/** Default duration in milliseconds for mount/unmount transition animations. */\r\nexport const DEFAULT_TRANSITION_DURATION_MS = 150\r\n\r\nexport const DEFAULT_BUTTON_HEIGHT = 40\r\nexport const DEFAULT_DRAWER_ITEM_SIZE = 40\r\n\r\n/** Drawer widths (px) — single source of truth for both the Drawer and its items. */\r\nexport const EXPANDED_DRAWER_WIDTH = 240\r\nexport const COLLAPSED_DRAWER_WIDTH = 58\r\n\r\n/**\r\n * Horizontal padding (px) applied by `Drawer.Body` on EACH side of its items\r\n * (Box `px=\"sm\"` → theme.spacing.sm = 0.5rem = 8px).\r\n */\r\nconst DRAWER_BODY_HORIZONTAL_PADDING = 8\r\n\r\n/**\r\n * DrawerItem widths (px), always derived from the drawer width minus the body\r\n * horizontal padding. Using explicit widths (instead of `width: 100%`) lets the\r\n * item animate its own width in sync with the drawer for a smooth transition.\r\n */\r\nexport const EXPANDED_DRAWER_ITEM_WIDTH = EXPANDED_DRAWER_WIDTH - DRAWER_BODY_HORIZONTAL_PADDING * 2 // 264\r\nexport const COLLAPSED_DRAWER_ITEM_WIDTH = COLLAPSED_DRAWER_WIDTH - DRAWER_BODY_HORIZONTAL_PADDING * 2 // 44\r\n","import { FocusRingOptions, FocusRingTheme } from '@theme/components/focusRing.types'\r\n\r\n/**\r\n * Width of the focus ring outline. Kept thick enough to be clearly visible\r\n * across every focusable component.\r\n */\r\nexport const FOCUS_RING_WIDTH = '2px'\r\n\r\n/** Default gap between the element and its focus ring (outset ring). */\r\nexport const FOCUS_RING_OFFSET = '2px'\r\n\r\n/**\r\n * Returns a consistent, fully-visible focus ring meant to be spread inside a\r\n * `:focus-visible` (or `&:focus-visible`) selector.\r\n *\r\n * This is the **single source of truth** for the design-system focus style:\r\n * every focusable component must use it so the focus indicator is always a\r\n * complete, clearly visible outline (never a partial/soft glow).\r\n *\r\n * @example\r\n * ':focus-visible': getFocusRingStyles(theme)\r\n *\r\n * @example\r\n * // Glued segmented control / tabs (avoid clipping + neighbour overlap)\r\n * ':focus-visible': getFocusRingStyles(theme, { inset: true, elevate: true })\r\n */\r\nexport const getFocusRingStyles = (theme: FocusRingTheme, options: FocusRingOptions = {}) => {\r\n const {\r\n color = theme.colors.focusRing,\r\n inset = false,\r\n elevate = false,\r\n offset = inset ? `-${FOCUS_RING_WIDTH}` : FOCUS_RING_OFFSET,\r\n } = options\r\n\r\n return {\r\n outline: `${FOCUS_RING_WIDTH} solid ${color}`,\r\n outlineOffset: offset,\r\n ...(elevate ? { position: 'relative' as const, zIndex: 1 } : {}),\r\n }\r\n}\r\n","import type { StyleWithPseudos } from '@aurora-ds/theme'\r\n\r\nimport type { ButtonColor, ButtonVariant, } from '@components/actions/button/button.types'\r\nimport type { ButtonIntentMap, ButtonVariantTheme } from '@components/actions/_common/buttonIntent.types'\r\nimport { DEFAULT_BUTTON_HEIGHT } from '@constants/app.constants'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\n/**\r\n * Focus-ring overrides forwarded to {@link getFocusRingStyles}. Glued button\r\n * groups (e.g. ToggleGroup) pass `{ inset: true, elevate: true }` so the ring\r\n * is never clipped/overlapped by adjacent segments.\r\n */\r\ntype ActionButtonFocusOptions = Parameters<typeof getFocusRingStyles>[1]\r\n\r\n/**\r\n * Returns the complete root styles for an action button (base + color/variant),\r\n * all in one object so CSS transitions work correctly.\r\n * Size-specific styles (height, padding, fontSize) are added by the caller.\r\n *\r\n * @param theme\r\n * @param variant\r\n * @param color\r\n * @param focusOptions - Optional focus-ring overrides (e.g. glued segmented groups).\r\n */\r\nexport const buildActionButtonRootStyle = (\r\n theme: ButtonVariantTheme,\r\n variant: ButtonVariant,\r\n color: ButtonColor,\r\n focusOptions?: ActionButtonFocusOptions,\r\n): StyleWithPseudos => {\r\n const c = theme.colors\r\n\r\n const intents: ButtonIntentMap = {\r\n primary: {\r\n main: c.primaryMain, hover: c.primaryHover, active: c.primaryActive,\r\n on: c.primaryOn, subtle: c.primarySubtle, subtleHover: c.primarySubtleHover, subtleActive: c.primarySubtleActive,\r\n fg: c.primaryMain, fgHover: c.primaryHover, border: c.primaryMain,\r\n },\r\n secondary: {\r\n main: c.secondaryMain, hover: c.secondaryHover, active: c.secondaryActive,\r\n on: c.secondaryOn, subtle: c.secondarySubtle, subtleHover: c.secondarySubtleHover, subtleActive: c.secondarySubtleActive,\r\n fg: c.secondaryMain, fgHover: c.secondaryHover, border: c.secondaryMain,\r\n },\r\n neutral: {\r\n main: c.defaultMain, hover: c.defaultHover, active: c.defaultActive,\r\n on: c.textInverse, subtle: c.defaultSubtle, subtleHover: c.defaultSubtleHover, subtleActive: c.defaultSubtleActive,\r\n fg: c.defaultMain, fgHover: c.defaultHover, border: c.defaultMain,\r\n },\r\n info: {\r\n main: c.infoMain, hover: c.infoHover, active: c.infoActive,\r\n on: c.infoOn, subtle: c.infoSubtle, subtleHover: c.infoSubtleHover, subtleActive: c.infoSubtleActive,\r\n fg: c.infoMain, fgHover: c.infoHover, border: c.infoMain,\r\n },\r\n success: {\r\n main: c.successMain, hover: c.successHover, active: c.successActive,\r\n on: c.successOn, subtle: c.successSubtle, subtleHover: c.successSubtleHover, subtleActive: c.successSubtleActive,\r\n fg: c.successMain, fgHover: c.successHover, border: c.successMain,\r\n },\r\n warning: {\r\n main: c.warningMain, hover: c.warningHover, active: c.warningActive,\r\n on: c.warningOn, subtle: c.warningSubtle, subtleHover: c.warningSubtleHover, subtleActive: c.warningSubtleActive,\r\n fg: c.warningMain, fgHover: c.warningHover, border: c.warningMain,\r\n },\r\n error: {\r\n main: c.errorMain, hover: c.errorHover, active: c.errorActive,\r\n on: c.errorOn, subtle: c.errorSubtle, subtleHover: c.errorSubtleHover, subtleActive: c.errorSubtleActive,\r\n fg: c.errorMain, fgHover: c.errorHover, border: c.errorMain,\r\n },\r\n 'textPrimary': {\r\n main: c.primaryMain, hover: c.primaryHover, active: c.primaryActive,\r\n on: c.primaryOn, subtle: c.primarySubtle, subtleHover: c.primarySubtleHover, subtleActive: c.primarySubtleActive,\r\n fg: c.textPrimary, fgHover: c.textPrimary, border: c.primaryMain,\r\n },\r\n }\r\n\r\n const intent = intents[color]\r\n\r\n const colorVariantStyles: StyleWithPseudos =\r\n variant === 'contained'\r\n ? {\r\n backgroundColor: intent.main,\r\n borderColor: intent.main,\r\n color: intent.on,\r\n ':hover:not(:disabled)': { backgroundColor: intent.hover },\r\n ':active:not(:disabled)': { backgroundColor: intent.active },\r\n }\r\n : variant === 'outlined'\r\n ? {\r\n backgroundColor: 'transparent',\r\n borderColor: intent.border,\r\n color: intent.fg,\r\n ':hover:not(:disabled)': { backgroundColor: intent.subtleHover, color: intent.fgHover },\r\n ':active:not(:disabled)': { backgroundColor: intent.subtleActive, color: intent.active },\r\n }\r\n : {\r\n backgroundColor: 'transparent',\r\n borderColor: 'transparent',\r\n color: intent.fg,\r\n ':hover:not(:disabled)': { backgroundColor: intent.subtleHover, color: intent.fgHover },\r\n ':active:not(:disabled)': { backgroundColor: intent.subtleActive, color: intent.active },\r\n }\r\n\r\n return {\r\n position: 'relative',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n boxSizing: 'border-box',\r\n border: '1px solid transparent',\r\n borderRadius: theme.radius.md,\r\n fontFamily: 'inherit',\r\n userSelect: 'none',\r\n height: DEFAULT_BUTTON_HEIGHT,\r\n cursor: 'pointer',\r\n outline: 'none',\r\n transition: `background-color ${theme.transition.normal}, color ${theme.transition.normal}`,\r\n ...colorVariantStyles,\r\n ':focus-visible': getFocusRingStyles(theme, focusOptions),\r\n ':disabled': { cursor: 'not-allowed', opacity: theme.opacity.high },\r\n }\r\n}\r\n","import { createStyles } from '@aurora-ds/theme'\n\nimport { spinAnimation } from '@constants/animation.constants'\nimport { buildActionButtonRootStyle } from '@components/actions/_common/buttonVariants.styles'\n\nimport type { ButtonColor, ButtonRootParams, ButtonSize, ButtonVariant } from '@components/actions/button/button.types'\n\nexport const BUTTON_STYLES = createStyles((theme) => ({\n root: ({ variant, color, size }: ButtonRootParams) => ({\n ...buildActionButtonRootStyle(theme, variant, color),\n ...(size === 'sm'\n ? { height: '2rem', padding: `0 ${theme.spacing.sm}`, fontSize: theme.fontSize.xs }\n : size === 'lg'\n ? { height: '3rem', padding: `0 ${theme.spacing.lg}`, fontSize: theme.fontSize.md }\n : { height: '2.5rem', padding: `0 ${theme.spacing.md}`, fontSize: theme.fontSize.sm }),\n }),\n /** Inner wrapper holding icons + label, centered by the button. */\n content: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.5em',\n },\n /** Hidden (but keeps width) while loading. */\n contentHidden: { visibility: 'hidden' },\n /** Centers the spinner icon over the button content while loading. */\n spinnerWrap: {\n position: 'absolute',\n inset: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n /** Spinning animation applied to the SpinnerIcon wrapper. */\n spinnerIcon: {\n animation: `${spinAnimation} 0.75s linear infinite`,\n '@media (prefers-reduced-motion: reduce)': { animation: 'none' },\n },\n}), { id: 'button' })\n\n// Pre-generate CSS for all variant/color/size combinations at module load.\n// This ensures the CSS is already in the stylesheet before the first user interaction,\n// preventing the \"first click is instant\" issue caused by lazy CSS injection.\nconst BUTTON_VARIANT_VALUES: ButtonVariant[] = ['contained', 'outlined', 'text']\nconst BUTTON_COLOR_VALUES: ButtonColor[] = ['primary', 'secondary', 'neutral', 'info', 'success', 'warning', 'error']\nconst BUTTON_SIZE_VALUES: ButtonSize[] = ['sm', 'md', 'lg']\n\nBUTTON_VARIANT_VALUES.forEach(variant =>\n BUTTON_COLOR_VALUES.forEach(color =>\n BUTTON_SIZE_VALUES.forEach(size => BUTTON_STYLES.root({ variant, color, size }))\n )\n)\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { IconStyleParams } from '@components/foundation/icon/Icon.props'\r\n\r\nexport const ICON_STYLES = createStyles((theme) => ({\r\n root: ({ size, strokeColor, fill, backgroundColor, padding, borderRadius }: IconStyleParams) => ({\r\n boxSizing: 'content-box' as const,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n overflow: 'hidden',\r\n transition: `color ${theme.transition.fast}, fill ${theme.transition.fast}`,\r\n flexShrink: 0,\r\n lineHeight: 0,\r\n height: theme.fontSize[size ?? 'md'],\r\n width: theme.fontSize[size ?? 'md'],\r\n minWidth: theme.fontSize[size ?? 'md'],\r\n minHeight: theme.fontSize[size ?? 'md'],\r\n backgroundColor: backgroundColor ? theme.colors[backgroundColor] : undefined,\r\n padding: padding ? theme.spacing[padding] : 0,\r\n borderRadius: theme.radius[borderRadius ?? 'none'],\r\n '& svg': {\r\n color: strokeColor ? theme.colors[strokeColor] : undefined,\r\n stroke: strokeColor ? theme.colors[strokeColor] : undefined,\r\n },\r\n '& svg [fill=\"currentColor\"], & svg[fill=\"currentColor\"]': {\r\n fill: fill ? theme.colors[fill] : undefined,\r\n },\r\n }),\r\n}))\r\n","import { ICON_STYLES } from '@components/foundation/icon/Icon.styles'\r\nimport type { IconProps } from '@components/foundation/icon/Icon.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Renders an SVG icon inside a theme-aware wrapper.\r\n *\r\n * @example <Icon icon={MenuIcon} size='md' strokeColor='primaryMain' />\r\n * @example <Icon icon={CloseIcon} strokeColor='textInverse' backgroundColor='primaryMain' padding='sm' borderRadius='full' />\r\n */\r\nconst Icon: FC<IconProps> = (\r\n {\r\n ref,\r\n icon: SvgIcon,\r\n size,\r\n strokeColor,\r\n fill,\r\n backgroundColor,\r\n padding,\r\n borderRadius,\r\n className,\r\n role,\r\n ...rest\r\n }\r\n) => {\r\n const generatedClassName = ICON_STYLES.root({ size, strokeColor, fill, backgroundColor, padding, borderRadius })\r\n const mergedClassName = className ? `${generatedClassName} ${className}` : generatedClassName\r\n const isLabelled = Boolean(rest['aria-label'] || rest['aria-labelledby'])\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={mergedClassName}\r\n aria-hidden={isLabelled ? undefined : true}\r\n role={role ?? (isLabelled ? 'img' : 'presentation')}\r\n {...rest}\r\n >\r\n <SvgIcon\r\n width={'100%'}\r\n height={'100%'}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nIcon.displayName = 'Icon'\r\n\r\nexport default Icon\r\n","import type { TextVariants, TextVariantStyle } from '@components/foundation/text/text.types'\r\nimport type { Theme } from '@theme/theme.types'\r\n\r\n/** Returns the baseline font styles for each text variant. */\r\nexport const getTextVariantStyles = (theme: Theme): Record<TextVariants, TextVariantStyle> => ({\r\n h1: {\r\n tag: 'h1',\r\n fontSize: theme.fontSize['3xl'],\r\n fontWeight: theme.fontWeight.bold,\r\n lineHeight: theme.lineHeight.tight,\r\n },\r\n h2: {\r\n tag: 'h2',\r\n fontSize: theme.fontSize['2xl'],\r\n fontWeight: theme.fontWeight.bold,\r\n lineHeight: theme.lineHeight.tight,\r\n },\r\n h3: {\r\n tag: 'h3',\r\n fontSize: theme.fontSize.xl,\r\n fontWeight: theme.fontWeight.semibold,\r\n lineHeight: theme.lineHeight.tight,\r\n },\r\n h4: {\r\n tag: 'h4',\r\n fontSize: theme.fontSize.lg,\r\n fontWeight: theme.fontWeight.semibold,\r\n lineHeight: theme.lineHeight.normal,\r\n },\r\n h5: {\r\n tag: 'h5',\r\n fontSize: theme.fontSize.md,\r\n fontWeight: theme.fontWeight.medium,\r\n lineHeight: theme.lineHeight.normal,\r\n },\r\n h6: {\r\n tag: 'h6',\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.medium,\r\n lineHeight: theme.lineHeight.normal,\r\n },\r\n p: {\r\n tag: 'p',\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.regular,\r\n lineHeight: theme.lineHeight.relaxed,\r\n },\r\n span: {\r\n tag: 'span',\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.regular,\r\n lineHeight: theme.lineHeight.normal,\r\n },\r\n label: {\r\n tag: 'label',\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.medium,\r\n lineHeight: theme.lineHeight.normal,\r\n },\r\n strong: {\r\n tag: 'strong',\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.bold,\r\n lineHeight: theme.lineHeight.normal,\r\n },\r\n})\r\n","import { createStyles } from '@aurora-ds/theme'\r\nimport { getTextVariantStyles } from '@components/foundation/text/utils/getTextVariantStyles.utils'\r\n\r\nimport type { TextStyleParams } from '@components/foundation/text/Text.props'\r\n\r\nexport const TEXT_STYLES = createStyles((theme) => {\r\n const variantStyles = getTextVariantStyles(theme)\r\n\r\n return {\r\n root: ({\r\n variant = 'span',\r\n color,\r\n fontSize,\r\n fontWeight,\r\n lineHeight,\r\n fontFamily,\r\n underline,\r\n strikethrough,\r\n italic,\r\n noWrap,\r\n preserveWhitespace,\r\n width,\r\n textTransform,\r\n letterSpacing,\r\n textAlign,\r\n }: TextStyleParams) => {\r\n const textDecoration =\r\n underline && strikethrough\r\n ? 'underline line-through'\r\n : underline\r\n ? 'underline'\r\n : strikethrough\r\n ? 'line-through'\r\n : undefined\r\n\r\n return {\r\n margin: 0,\r\n padding: 0,\r\n fontSize: fontSize ? theme.fontSize[fontSize] : variantStyles[variant].fontSize,\r\n fontWeight: fontWeight ? theme.fontWeight[fontWeight] : variantStyles[variant].fontWeight,\r\n lineHeight: lineHeight ? theme.lineHeight[lineHeight] : variantStyles[variant].lineHeight,\r\n color: color ? theme.colors[color] : 'inherit',\r\n cursor: 'inherit',\r\n ...(width !== undefined && { width }),\r\n ...(fontFamily && { fontFamily }),\r\n ...(textTransform && { textTransform }),\r\n ...(letterSpacing !== undefined && { letterSpacing }),\r\n ...(textAlign && { textAlign }),\r\n ...(italic && { fontStyle: 'italic' }),\r\n // noWrap and preserveWhitespace are mutually exclusive; noWrap wins.\r\n // Truncation (maxLines/truncate) injects whiteSpace via inline style — both are ignored there.\r\n ...(noWrap\r\n ? { whiteSpace: 'nowrap' as const }\r\n : preserveWhitespace\r\n ? { whiteSpace: 'pre-wrap' as const }\r\n : {}),\r\n ...(textDecoration && {\r\n textDecoration,\r\n ...(underline && { textUnderlineOffset: '3px' }),\r\n }),\r\n }\r\n },\r\n }\r\n})\r\n","/**\r\n * Returns inline CSS styles to truncate text with an ellipsis.\r\n *\r\n * - 1 line → classic `white-space: nowrap` + `text-overflow: ellipsis` (best browser support)\r\n * - n lines → `-webkit-line-clamp` (supported in all modern browsers)\r\n */\r\nexport const getTruncateTextStyles = (maxLines: number) => {\r\n if (maxLines === 1) {\r\n return {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap' as const,\r\n }\r\n }\r\n\r\n return {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n display: '-webkit-box',\r\n WebkitLineClamp: maxLines,\r\n WebkitBoxOrient: 'vertical' as const,\r\n whiteSpace: 'normal' as const,\r\n overflowWrap: 'break-word' as const,\r\n wordBreak: 'break-word' as const,\r\n }\r\n}\r\n","import { createElement, Fragment, type ReactNode } from 'react'\r\n\r\n/**\r\n * Parses text content and converts **bold** syntax to <strong> elements\r\n * @param children - The content to parse (string or ReactNode)\r\n * @returns Parsed content with bold text wrapped in <strong> elements\r\n */\r\nexport const parseTextWithBold = (children: ReactNode): ReactNode => {\r\n if (typeof children !== 'string' || !children.includes('**')) {\r\n return children\r\n }\r\n\r\n const boldPattern = /\\*\\*(.+?)\\*\\*/g\r\n const parts: ReactNode[] = []\r\n let lastIndex = 0\r\n let match: RegExpExecArray | null\r\n\r\n while ((match = boldPattern.exec(children)) !== null) {\r\n if (match.index > lastIndex) {\r\n parts.push(children.slice(lastIndex, match.index))\r\n }\r\n\r\n parts.push(\r\n createElement('strong', { key: match.index }, match[1])\r\n )\r\n\r\n lastIndex = match.index + match[0].length\r\n }\r\n\r\n if (parts.length === 0) {\r\n return children\r\n }\r\n\r\n if (lastIndex < children.length) {\r\n parts.push(children.slice(lastIndex))\r\n }\r\n\r\n return createElement(Fragment, null, ...parts)\r\n}\r\n","import { useTheme } from '@aurora-ds/theme'\r\nimport { TEXT_STYLES } from '@components/foundation/text/Text.styles'\r\nimport { getTextVariantStyles } from '@components/foundation/text/utils/getTextVariantStyles.utils'\r\nimport { getTruncateTextStyles } from '@components/foundation/text/utils/getTruncateTextStyles.utils'\r\nimport { parseTextWithBold } from '@components/foundation/text/utils/parseTextWithBold.utils'\r\nimport { createElement, type FC } from 'react'\r\n\r\nimport type { TextProps } from '@components/foundation/text/Text.props'\r\n\r\n/**\r\n * Renders a semantic HTML text element with theme-aware styling.\r\n *\r\n * @example <Text variant='h1' color='text.primary'>Title</Text>\r\n * @example <Text variant='p' maxLines={2}>Long content…</Text>\r\n * @example <Text variant='h1' as='h2'>h1 styles, h2 semantics</Text>\r\n * @example <Text variant='label' htmlFor='email'>Email</Text>\r\n * @example <Text>Hello **world**!</Text> // → Hello <strong>world</strong>!\r\n */\r\nconst Text: FC<TextProps> = (\r\n {\r\n ref,\r\n children,\r\n variant = 'span',\r\n as,\r\n color,\r\n fontSize,\r\n fontWeight,\r\n lineHeight,\r\n fontFamily,\r\n width,\r\n textTransform,\r\n letterSpacing,\r\n textAlign,\r\n underline,\r\n strikethrough,\r\n italic,\r\n maxLines,\r\n truncate,\r\n noWrap,\r\n preserveWhitespace,\r\n htmlFor,\r\n className,\r\n style,\r\n ...rest\r\n }\r\n) => {\r\n const theme = useTheme()\r\n const variantStyles = getTextVariantStyles(theme)\r\n\r\n const effectiveLines = truncate ? 1 : maxLines\r\n const tag = as ?? variantStyles[variant].tag\r\n const parsedChildren = parseTextWithBold(children)\r\n const truncateStyles = effectiveLines ? getTruncateTextStyles(effectiveLines) : undefined\r\n\r\n const generatedClassName = TEXT_STYLES.root({\r\n variant,\r\n color,\r\n fontSize,\r\n fontWeight,\r\n lineHeight,\r\n fontFamily,\r\n underline,\r\n strikethrough,\r\n italic,\r\n noWrap: effectiveLines ? false : noWrap,\r\n preserveWhitespace,\r\n width,\r\n textTransform,\r\n letterSpacing,\r\n textAlign,\r\n })\r\n\r\n const mergedClassName = className ? `${generatedClassName} ${className}` : generatedClassName\r\n const mergedStyle = truncateStyles ? { ...truncateStyles, ...style } : style\r\n\r\n return createElement(\r\n tag,\r\n {\r\n ref,\r\n className: mergedClassName,\r\n style: mergedStyle,\r\n ...(tag === 'label' && htmlFor !== undefined ? { htmlFor } : {}),\r\n ...rest,\r\n },\r\n parsedChildren\r\n )\r\n}\r\n\r\nexport default Text\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { SpinnerIcon } from '@resources/Icons'\r\nimport { BUTTON_STYLES } from '@components/actions/button/Button.styles'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { ButtonProps } from '@components/actions/button/Button.props'\r\nimport type { ButtonSize } from '@components/actions/button/button.types'\r\nimport type { FC } from 'react'\r\n\r\n/** Maps the button size to a Text font-size token so the label scales with the button. */\r\nconst LABEL_FONT_SIZE: Record<ButtonSize, keyof Theme['fontSize']> = {\r\n sm: 'xs',\r\n md: 'sm',\r\n lg: 'md',\r\n}\r\n\r\n/** Maps the button size to an Icon size token. */\r\nconst ICON_SIZE: Record<ButtonSize, keyof Theme['fontSize']> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n}\r\n\r\n/**\r\n * Theme-aware button built on `createVariants`.\r\n *\r\n * @example <Button label='Save' onClick={save} />\r\n * @example <Button label='Delete' variant='outlined' color='error' startIcon={IconRegistry.CloseIcon} />\r\n * @example <Button label='Submitting…' color='success' isLoading width='100%' />\r\n */\r\nconst Button: FC<ButtonProps> = (\r\n {\r\n ref,\r\n variant = 'contained',\r\n color = 'primary',\r\n size = 'md',\r\n width,\r\n flexGrow,\r\n flexShrink,\r\n isLoading = false,\r\n startIcon: StartIcon,\r\n endIcon: EndIcon,\r\n label,\r\n children,\r\n className,\r\n type = 'button',\r\n disabled,\r\n style,\r\n ...rest\r\n }\r\n) => {\r\n const isDisabled = disabled || isLoading\r\n const iconSize = ICON_SIZE[size]\r\n\r\n const rootClassName = cx(BUTTON_STYLES.root({ variant, color, size }), className)\r\n const mergedStyle = {\r\n ...style,\r\n ...(width !== undefined ? { width } : {}),\r\n ...(flexGrow !== undefined ? { flexGrow } : {}),\r\n ...(flexShrink !== undefined ? { flexShrink } : {}),\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type={type}\r\n className={rootClassName}\r\n disabled={isDisabled}\r\n aria-busy={isLoading || undefined}\r\n style={mergedStyle}\r\n {...rest}\r\n >\r\n {isLoading && (\r\n <span className={BUTTON_STYLES.spinnerWrap}>\r\n <Icon\r\n icon={SpinnerIcon}\r\n size={iconSize}\r\n className={BUTTON_STYLES.spinnerIcon}\r\n />\r\n </span>\r\n )}\r\n\r\n <span className={cx(BUTTON_STYLES.content, isLoading && BUTTON_STYLES.contentHidden)}>\r\n {StartIcon && (\r\n <Icon\r\n icon={StartIcon}\r\n size={iconSize}\r\n />\r\n )}\r\n\r\n {(label !== undefined || children !== undefined) && (\r\n <Text\r\n variant={'span'}\r\n fontSize={LABEL_FONT_SIZE[size]}\r\n fontWeight={'medium'}\r\n lineHeight={'none'}\r\n >\r\n {label ?? children}\r\n </Text>\r\n )}\r\n\r\n {EndIcon && (\r\n <Icon\r\n icon={EndIcon}\r\n size={iconSize}\r\n />\r\n )}\r\n </span>\r\n </button>\r\n )\r\n}\r\n\r\nButton.displayName = 'Button'\r\n\r\nexport default Button\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { spinAnimation } from '@constants/animation.constants'\r\n\r\nimport type { FabColor, FabRootParams } from '@components/actions/fab/fab.types'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\n/** Pixel dimensions per size. */\r\nconst SIZE_MAP = {\r\n sm: '3rem',\r\n md: '3.5rem',\r\n lg: '4rem',\r\n} as const\r\n\r\n/** Icon pixel size per FAB size. */\r\nconst ICON_SIZE_MAP = {\r\n sm: '1.125rem',\r\n md: '1.375rem',\r\n lg: '1.625rem',\r\n} as const\r\n\r\nexport const FAB_STYLES = createStyles((theme) => ({\r\n root: ({ color, size, extended }: FabRootParams) => {\r\n const c = theme.colors\r\n\r\n const colorMap: Record<FabColor, { bg: string; bgHover: string; bgActive: string; fg: string }> = {\r\n primary: { bg: c.primaryMain, bgHover: c.primaryHover, bgActive: c.primaryActive, fg: c.primaryOn },\r\n secondary: { bg: c.secondaryMain, bgHover: c.secondaryHover, bgActive: c.secondaryActive, fg: c.secondaryOn },\r\n neutral: { bg: c.defaultMain, bgHover: c.defaultHover, bgActive: c.defaultActive, fg: c.textInverse },\r\n info: { bg: c.infoMain, bgHover: c.infoHover, bgActive: c.infoActive, fg: c.infoOn },\r\n success: { bg: c.successMain, bgHover: c.successHover, bgActive: c.successActive, fg: c.successOn },\r\n warning: { bg: c.warningMain, bgHover: c.warningHover, bgActive: c.warningActive, fg: c.warningOn },\r\n error: { bg: c.errorMain, bgHover: c.errorHover, bgActive: c.errorActive, fg: c.errorOn },\r\n 'textPrimary': { bg: c.primaryMain, bgHover: c.primaryHover, bgActive: c.primaryActive, fg: c.primaryOn },\r\n }\r\n\r\n const { bg, bgHover, bgActive, fg } = colorMap[color]\r\n const dim = SIZE_MAP[size]\r\n\r\n return {\r\n position: 'relative',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n boxSizing: 'border-box',\r\n border: 'none',\r\n borderRadius: extended ? '100px' : '50%',\r\n height: dim,\r\n minWidth: dim,\r\n padding: extended ? `0 ${theme.spacing.md}` : '0',\r\n backgroundColor: bg,\r\n color: fg,\r\n boxShadow: theme.shadows.md,\r\n fontFamily: 'inherit',\r\n fontWeight: theme.fontWeight.medium,\r\n fontSize: theme.fontSize.sm,\r\n userSelect: 'none',\r\n cursor: 'pointer',\r\n outline: 'none',\r\n transition: `background-color ${theme.transition.normal}, box-shadow ${theme.transition.normal}`,\r\n ':hover:not(:disabled)': { backgroundColor: bgHover, boxShadow: theme.shadows.lg },\r\n ':active:not(:disabled)': { backgroundColor: bgActive, boxShadow: theme.shadows.sm },\r\n ':focus-visible': getFocusRingStyles(theme),\r\n ':disabled': { cursor: 'not-allowed', opacity: theme.opacity.high, boxShadow: 'none' },\r\n }\r\n },\r\n\r\n /** Spinning animation applied to the SpinnerIcon. */\r\n spinnerIcon: {\r\n animation: `${spinAnimation} 0.75s linear infinite`,\r\n '@media (prefers-reduced-motion: reduce)': { animation: 'none' },\r\n },\r\n\r\n /** Inner wrapper holding icon (+ optional label), centered by the button. */\r\n content: {\r\n display: 'inline-flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: '0.375rem',\r\n whiteSpace: 'nowrap',\r\n },\r\n\r\n /** Hidden (but keeps dimensions) while loading. */\r\n contentHidden: { visibility: 'hidden' },\r\n\r\n /** Centers the spinner absolutely over the button content while loading. */\r\n spinnerWrap: {\r\n position: 'absolute',\r\n inset: 0,\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n}), { id: 'fab' })\r\n\r\n// Pre-generate CSS for all color/size/extended combinations.\r\nconst FAB_COLOR_VALUES: FabColor[] = ['primary', 'secondary', 'neutral', 'info', 'success', 'warning', 'error', 'textPrimary']\r\nconst FAB_SIZE_VALUES = ['sm', 'md', 'lg'] as const\r\n\r\nFAB_COLOR_VALUES.forEach(color =>\r\n FAB_SIZE_VALUES.forEach(size => {\r\n FAB_STYLES.root({ color, size, extended: false })\r\n FAB_STYLES.root({ color, size, extended: true })\r\n })\r\n)\r\n\r\nexport { SIZE_MAP, ICON_SIZE_MAP }\r\n","import type { FabPlacement } from '@components/actions/fab/fab.types'\r\nimport type { CSSProperties } from 'react'\r\n\r\n/**\r\n * Builds the inline `style` object that pins the FAB to a screen corner via\r\n * `position: fixed`.\r\n *\r\n * Returns an empty object when `placement` is `null` / `undefined` so the\r\n * button can be used inline without any fixed positioning.\r\n */\r\nexport const buildPlacementStyle = (\r\n placement: FabPlacement | null | undefined,\r\n offsetX: string,\r\n offsetY: string,\r\n): CSSProperties => {\r\n if (!placement) { return {} }\r\n\r\n const isBottom = placement.startsWith('bottom')\r\n const isRight = placement.endsWith('right')\r\n\r\n return {\r\n position: 'fixed',\r\n zIndex: 1000,\r\n [isBottom ? 'bottom' : 'top']: offsetY,\r\n [isRight ? 'right' : 'left']: offsetX,\r\n }\r\n}\r\n","import { createPortal } from 'react-dom'\r\n\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { SpinnerIcon } from '@resources/Icons'\r\nimport { FAB_STYLES, ICON_SIZE_MAP } from '@components/actions/fab/Fab.styles'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Text } from '@components/foundation/text'\r\nimport { buildPlacementStyle } from '@components/actions/fab/utils/buildPlacementStyle.utils'\r\n\r\nimport type { FabProps } from '@components/actions/fab/Fab.props'\r\nimport type { CSSProperties, FC } from 'react'\r\n\r\n/**\r\n * Floating Action Button (FAB).\r\n *\r\n * A circular elevated button intended for the primary action of a screen.\r\n * Pass a `label` to get an extended (pill-shaped) FAB.\r\n *\r\n * @example <Fab icon={AddIcon} ariaLabel=\"Add item\" />\r\n * @example <Fab icon={AddIcon} ariaLabel=\"Add item\" label=\"Add\" color=\"success\" />\r\n * @example <Fab icon={EditIcon} ariaLabel=\"Edit\" placement=\"bottom-left\" />\r\n * @example <Fab icon={AddIcon} ariaLabel=\"Add\" placement={null} /> // inline, no fixed positioning\r\n */\r\nconst Fab: FC<FabProps> = (\r\n {\r\n ref,\r\n icon: IconComponent,\r\n ariaLabel,\r\n label,\r\n color = 'primary',\r\n size = 'md',\r\n placement = 'bottom-right',\r\n offsetX = '1.5rem',\r\n offsetY = '1.5rem',\r\n isLoading = false,\r\n type = 'button',\r\n disabled,\r\n style,\r\n ...rest\r\n }\r\n) => {\r\n const isDisabled = disabled || isLoading\r\n const extended = label !== undefined\r\n const iconPixelSize = ICON_SIZE_MAP[size]\r\n\r\n const rootClassName = FAB_STYLES.root({ color, size, extended })\r\n const placementStyle = buildPlacementStyle(placement, offsetX, offsetY)\r\n\r\n const mergedStyle: CSSProperties = { ...placementStyle, ...style }\r\n\r\n const button = (\r\n <button\r\n ref={ref}\r\n type={type}\r\n className={rootClassName}\r\n disabled={isDisabled}\r\n aria-label={ariaLabel}\r\n aria-busy={isLoading || undefined}\r\n style={mergedStyle}\r\n {...rest}\r\n >\r\n {isLoading && (\r\n <span className={FAB_STYLES.spinnerWrap}>\r\n <Icon\r\n icon={SpinnerIcon}\r\n className={cx(FAB_STYLES.spinnerIcon)}\r\n style={{ width: iconPixelSize, height: iconPixelSize }}\r\n />\r\n </span>\r\n )}\r\n\r\n <span className={cx(FAB_STYLES.content, isLoading && FAB_STYLES.contentHidden)}>\r\n <Icon\r\n icon={IconComponent}\r\n style={{ width: iconPixelSize, height: iconPixelSize }}\r\n />\r\n\r\n {extended && (\r\n <Text\r\n variant={'span'}\r\n fontSize={'sm'}\r\n fontWeight={'medium'}\r\n lineHeight={'none'}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n </span>\r\n </button>\r\n )\r\n\r\n // When fixed to the screen, render via a portal so that ancestor CSS transforms\r\n // (e.g. transform, filter, will-change) cannot break `position: fixed`.\r\n if (placement) {\r\n return createPortal(button, document.body)\r\n }\r\n\r\n return button\r\n}\r\n\r\nFab.displayName = 'Fab'\r\n\r\nexport default Fab\r\n","import { createStyles } from '@aurora-ds/theme'\n\nimport { spinAnimation } from '@constants/animation.constants'\nimport { buildActionButtonRootStyle } from '@components/actions/_common/buttonVariants.styles'\n\nimport type { ButtonColor, ButtonSize, ButtonVariant } from '@components/actions/button/button.types'\nimport { IconButtonRootParams } from '@components/actions/icon-button/IconButton.types'\n\nexport const ICON_BUTTON_STYLES = createStyles((theme) => ({\n root: ({ variant, color, size }: IconButtonRootParams) => ({\n ...buildActionButtonRootStyle(theme, variant, color),\n ...(size === 'sm'\n ? { width: '2rem', height: '2rem', padding: '0' }\n : size === 'lg'\n ? { width: '3rem', height: '3rem', padding: '0' }\n : { width: '2.5rem', height: '2.5rem', padding: '0' }),\n }),\n /** Spinning animation applied to the SpinnerIcon. */\n spinnerIcon: {\n animation: `${spinAnimation} 0.75s linear infinite`,\n '@media (prefers-reduced-motion: reduce)': { animation: 'none' },\n },\n /** Hidden (but keeps size) while loading. */\n iconHidden: { visibility: 'hidden' },\n /** Centers the spinner icon absolutely over the button while loading. */\n spinnerWrap: {\n position: 'absolute',\n inset: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n}), { id: 'icon-button' })\n\nconst ICON_BUTTON_VARIANT_VALUES: ButtonVariant[] = ['contained', 'outlined', 'text']\nconst ICON_BUTTON_COLOR_VALUES: ButtonColor[] = ['primary', 'secondary', 'neutral', 'info', 'success', 'warning', 'error']\nconst ICON_BUTTON_SIZE_VALUES: ButtonSize[] = ['sm', 'md', 'lg']\n\nICON_BUTTON_VARIANT_VALUES.forEach(variant =>\n ICON_BUTTON_COLOR_VALUES.forEach(color =>\n ICON_BUTTON_SIZE_VALUES.forEach(size => ICON_BUTTON_STYLES.root({ variant, color, size }))\n )\n)\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { SpinnerIcon } from '@resources/Icons'\r\nimport { ICON_BUTTON_STYLES } from '@components/actions/icon-button/IconButton.styles'\r\nimport { Icon } from '@components/foundation/icon'\r\n\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { ButtonSize } from '@components/actions/button/button.types'\r\nimport type { IconButtonProps } from '@components/actions/icon-button/IconButton.props'\r\nimport type { FC } from 'react'\r\n\r\n/** Maps the icon-button size to an Icon size token. */\r\nconst ICON_SIZE: Record<ButtonSize, keyof Theme['fontSize']> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n}\r\n\r\n/**\r\n * Square icon-only button.\r\n * `ariaLabel` is mandatory since there is no visible text.\r\n *\r\n * @example <IconButton icon={CloseIcon} ariaLabel={t('common.close')} />\r\n * @example <IconButton icon={DeleteIcon} ariaLabel={t('actions.delete')} variant='outlined' color='error' />\r\n * @example <IconButton icon={SaveIcon} ariaLabel={t('actions.save')} isLoading />\r\n */\r\nconst IconButton: FC<IconButtonProps> = (\r\n {\r\n ref,\r\n icon: IconComponent,\r\n ariaLabel,\r\n variant = 'contained',\r\n color = 'primary',\r\n size = 'md',\r\n isLoading = false,\r\n className,\r\n type = 'button',\r\n disabled,\r\n ...rest\r\n }\r\n) => {\r\n const isDisabled = disabled || isLoading\r\n const iconSize = ICON_SIZE[size]\r\n\r\n const rootClassName = cx(ICON_BUTTON_STYLES.root({ variant, color, size }), className)\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type={type}\r\n className={rootClassName}\r\n disabled={isDisabled}\r\n aria-label={ariaLabel}\r\n aria-busy={isLoading || undefined}\r\n {...rest}\r\n >\r\n {isLoading && (\r\n <span className={ICON_BUTTON_STYLES.spinnerWrap}>\r\n <Icon\r\n icon={SpinnerIcon}\r\n size={iconSize}\r\n className={ICON_BUTTON_STYLES.spinnerIcon}\r\n />\r\n </span>\r\n )}\r\n\r\n <Icon\r\n icon={IconComponent}\r\n size={iconSize}\r\n className={cx(isLoading && ICON_BUTTON_STYLES.iconHidden)}\r\n />\r\n </button>\r\n )\r\n}\r\n\r\nIconButton.displayName = 'IconButton'\r\n\r\nexport default IconButton\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { LinkStyleParams } from '@components/actions/link/Link.props'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const LINK_STYLES = createStyles((theme) => ({\r\n root: ({ underline = 'hover', color = 'default' }: LinkStyleParams) => {\r\n const mainColor = color === 'secondary' ? theme.colors.textSecondary : theme.colors.linkMain\r\n const hoverColor = color === 'secondary' ? theme.colors.textTertiary : theme.colors.linkHover\r\n const activeColor = color === 'secondary' ? theme.colors.textPrimary : theme.colors.linkActive\r\n const disabledColor = color === 'secondary' ? theme.colors.textDisabled : theme.colors.linkDisabled\r\n\r\n // We always set `text-decoration: underline` and drive visibility via\r\n // `text-decoration-color` so the transition is smooth.\r\n const underlineVisible = underline === 'always' ? mainColor : 'transparent'\r\n const underlineHover = underline !== 'none' ? hoverColor : 'transparent'\r\n\r\n return {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '0.25em',\r\n color: mainColor,\r\n fontFamily: 'inherit',\r\n fontSize: 'inherit',\r\n lineHeight: 'inherit',\r\n fontWeight: 'inherit',\r\n textDecoration: 'underline',\r\n textDecorationColor: underlineVisible,\r\n textUnderlineOffset: '0.2em',\r\n cursor: 'pointer',\r\n borderRadius: theme.radius.xs,\r\n transition: `color ${theme.transition.fast}, text-decoration-color ${theme.transition.fast}`,\r\n ':hover:not([aria-disabled=\"true\"])': {\r\n color: hoverColor,\r\n textDecorationColor: underlineHover,\r\n },\r\n ':active:not([aria-disabled=\"true\"])': {\r\n color: activeColor,\r\n textDecorationColor: underline !== 'none' ? activeColor : 'transparent',\r\n },\r\n ':focus-visible': getFocusRingStyles(theme),\r\n '&[aria-disabled=\"true\"]': {\r\n color: disabledColor,\r\n cursor: 'not-allowed',\r\n textDecorationColor: 'transparent',\r\n },\r\n }\r\n },\r\n icon: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n flexShrink: 0,\r\n width: '1em',\r\n height: '1em',\r\n },\r\n}), { id: 'link' })\r\n","import { cx } from '@aurora-ds/theme'\n\nimport { LINK_STYLES } from '@components/actions/link/Link.styles'\nimport { Text } from '@components/foundation/text'\n\nimport type { LinkProps } from '@components/actions/link/Link.props'\nimport type { FC, MouseEvent, KeyboardEvent } from 'react'\n\n/**\n * Theme-aware anchor element with optional icons and underline control.\n *\n * Supports SPA navigation (e.g. React Router) via `onClick` without `href`.\n * In that case the component stays accessible: it gets `role=\"link\"`,\n * `tabIndex={0}` and keyboard Enter support automatically.\n *\n * @example <Link href='/about' label='About' />\n * @example <Link href='https://example.com' label='External site' external />\n * @example <Link href='/profile' underline='always' startIcon={UserIcon} label='Profile' />\n * @example <Link href='/terms' underline='none' label='Terms' />\n * @example <Link onClick={() => navigate('/about')} label='About (SPA)' />\n */\nconst Link: FC<LinkProps> = (\n {\n ref,\n label,\n fontSize = 'sm',\n underline = 'hover',\n color = 'default',\n external = false,\n disabled = false,\n startIcon: StartIcon,\n endIcon: EndIcon,\n className,\n href,\n onClick,\n onKeyDown,\n ...rest\n }\n) => {\n // An <a> without href has no implicit ARIA role and is not focusable.\n // When used for SPA navigation (onClick only), we restore both behaviours.\n const hasHref = !!href\n\n const handleClick = (e: MouseEvent<HTMLAnchorElement>) => {\n if (disabled) {\n e.preventDefault()\n return\n }\n // When an onClick handler is provided (e.g. React Router's navigate),\n // prevent the browser from following the href and let the handler drive navigation.\n if (onClick) {\n e.preventDefault()\n onClick(e)\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent<HTMLAnchorElement>) => {\n if (disabled && e.key === 'Enter') {\n e.preventDefault()\n }\n // Without href, the browser does not fire a click on Enter natively.\n if (!hasHref && !disabled && e.key === 'Enter') {\n e.currentTarget.click()\n }\n onKeyDown?.(e)\n }\n\n return (\n <a\n ref={ref}\n href={href}\n className={cx(LINK_STYLES.root({ underline, color }), className)}\n aria-disabled={disabled || undefined}\n // Without href: must be explicitly put in the tab order.\n // With href: the browser handles focusability natively (no tabIndex needed).\n tabIndex={disabled ? -1 : (!hasHref ? 0 : undefined)}\n // Without href: <a> has no implicit ARIA role — add role=\"link\" explicitly.\n role={!hasHref ? 'link' : undefined}\n target={external ? '_blank' : undefined}\n rel={external ? 'noopener noreferrer' : undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {StartIcon && (\n <span\n className={LINK_STYLES.icon}\n aria-hidden={true}\n >\n <StartIcon\n width={'1em'}\n height={'1em'}\n />\n </span>\n )}\n\n <Text\n as={'span'}\n fontSize={fontSize}\n >\n {label}\n </Text>\n\n {EndIcon && (\n <span\n className={LINK_STYLES.icon}\n aria-hidden={true}\n >\n <EndIcon\n width={'1em'}\n height={'1em'}\n />\n </span>\n )}\n </a>\n )\n}\n\nLink.displayName = 'Link'\n\nexport default Link\n","import type { ButtonIntentMap } from '@components/actions/_common/buttonIntent.types'\r\nimport type { Theme } from '@theme/theme.types'\r\n\r\n/**\r\n * Builds the full intent map for toggle button colors from theme tokens.\r\n * Extracted to avoid duplication across ToggleButton and ToggleIconButton style files.\r\n */\r\nexport const buildToggleIntents = (c: Theme['colors']): ButtonIntentMap => ({\r\n primary: {\r\n main: c.primaryMain, hover: c.primaryHover, active: c.primaryActive,\r\n on: c.primaryOn, subtle: c.primarySubtle, subtleHover: c.primarySubtleHover, subtleActive: c.primarySubtleActive,\r\n fg: c.primaryMain, fgHover: c.primaryHover, border: c.primaryMain,\r\n },\r\n secondary: {\r\n main: c.secondaryMain, hover: c.secondaryHover, active: c.secondaryActive,\r\n on: c.secondaryOn, subtle: c.secondarySubtle, subtleHover: c.secondarySubtleHover, subtleActive: c.secondarySubtleActive,\r\n fg: c.secondaryOn, fgHover: c.secondaryOn, border: c.borderStrong,\r\n },\r\n neutral: {\r\n main: c.defaultMain, hover: c.defaultHover, active: c.defaultActive,\r\n on: c.textInverse, subtle: c.defaultSubtle, subtleHover: c.defaultSubtleHover, subtleActive: c.defaultSubtleActive,\r\n fg: c.defaultMain, fgHover: c.defaultHover, border: c.defaultMain,\r\n },\r\n info: {\r\n main: c.infoMain, hover: c.infoHover, active: c.infoActive,\r\n on: c.infoOn, subtle: c.infoSubtle, subtleHover: c.infoSubtleHover, subtleActive: c.infoSubtleActive,\r\n fg: c.infoMain, fgHover: c.infoHover, border: c.infoMain,\r\n },\r\n success: {\r\n main: c.successMain, hover: c.successHover, active: c.successActive,\r\n on: c.successOn, subtle: c.successSubtle, subtleHover: c.successSubtleHover, subtleActive: c.successSubtleActive,\r\n fg: c.successMain, fgHover: c.successHover, border: c.successMain,\r\n },\r\n warning: {\r\n main: c.warningMain, hover: c.warningHover, active: c.warningActive,\r\n on: c.warningOn, subtle: c.warningSubtle, subtleHover: c.warningSubtleHover, subtleActive: c.warningSubtleActive,\r\n fg: c.warningMain, fgHover: c.warningHover, border: c.warningMain,\r\n },\r\n error: {\r\n main: c.errorMain, hover: c.errorHover, active: c.errorActive,\r\n on: c.errorOn, subtle: c.errorSubtle, subtleHover: c.errorSubtleHover, subtleActive: c.errorSubtleActive,\r\n fg: c.errorMain, fgHover: c.errorHover, border: c.errorMain,\r\n },\r\n textPrimary: {\r\n main: c.primaryMain, hover: c.primaryHover, active: c.primaryActive,\r\n on: c.primaryOn, subtle: c.primarySubtle, subtleHover: c.primarySubtleHover, subtleActive: c.primarySubtleActive,\r\n fg: c.textPrimary, fgHover: c.textPrimary, border: c.primaryMain,\r\n },\r\n})\r\n","import type { CSSProperties } from 'react'\r\n\r\nimport type { ButtonColor } from '@components/actions/button/button.types'\r\nimport type { ButtonIntentMap } from '@components/actions/_common/buttonIntent.types'\r\nimport type { ToggleButtonVariant } from '@components/actions/toggle/toggle.types'\r\n\r\n/**\r\n * Returns the CSS properties for the `[aria-pressed=\"true\"]` state.\r\n * Both variants fill with `intent.main` for strong visual distinction.\r\n * Border width is intentionally unchanged — only the color shifts.\r\n */\r\nexport const buildTogglePressedStyles = (\r\n intents: ButtonIntentMap,\r\n variant: ToggleButtonVariant,\r\n color: ButtonColor,\r\n): CSSProperties => {\r\n const intent = intents[color]\r\n\r\n return variant === 'outlined'\r\n ? {\r\n backgroundColor: intent.main,\r\n borderColor: intent.main,\r\n color: intent.on,\r\n }\r\n : {\r\n backgroundColor: intent.main,\r\n color: intent.on,\r\n }\r\n}\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { spinAnimation } from '@constants/animation.constants'\r\nimport { buildActionButtonRootStyle } from '@components/actions/_common/buttonVariants.styles'\r\nimport { buildToggleIntents } from '@components/actions/toggle/utils/buildToggleIntents.utils'\r\nimport { buildTogglePressedStyles } from '@components/actions/toggle/utils/buildTogglePressedStyles.utils'\r\nimport type { ToggleButtonVariant } from '@components/actions/toggle/toggle.types'\r\nimport type { ButtonColor, ButtonSize } from '@components/actions/button/button.types'\r\n\r\ntype ToggleButtonRootParams = {\r\n variant: ToggleButtonVariant\r\n color: ButtonColor\r\n size: ButtonSize\r\n}\r\n\r\nexport const TOGGLE_BUTTON_STYLES = createStyles((theme) => ({\r\n root: ({ variant, color, size }: ToggleButtonRootParams) => {\r\n const intents = buildToggleIntents(theme.colors)\r\n const pressedStyles = buildTogglePressedStyles(intents, variant, color)\r\n\r\n return {\r\n ...buildActionButtonRootStyle(theme, variant, color, { inset: true, elevate: true }),\r\n ...(size === 'sm'\r\n ? { height: '2rem', padding: `0 ${theme.spacing.sm}`, fontSize: theme.fontSize.xs }\r\n : size === 'lg'\r\n ? { height: '3rem', padding: `0 ${theme.spacing.lg}`, fontSize: theme.fontSize.md }\r\n : { height: '2.5rem', padding: `0 ${theme.spacing.md}`, fontSize: theme.fontSize.sm }),\r\n '&[aria-pressed=\"true\"]:not(:disabled)': {\r\n ...pressedStyles,\r\n fontWeight: theme.fontWeight.semibold,\r\n },\r\n }\r\n },\r\n content: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: '0.5em',\r\n },\r\n contentHidden: { visibility: 'hidden' },\r\n spinnerWrap: {\r\n position: 'absolute',\r\n inset: 0,\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n spinnerIcon: {\r\n animation: `${spinAnimation} 0.75s linear infinite`,\r\n '@media (prefers-reduced-motion: reduce)': { animation: 'none' },\r\n },\r\n}), { id: 'toggle-button' })\r\n\r\n// Pre-generate all combinations to avoid first-render CSS injection delay.\r\nconst VARIANTS: ToggleButtonVariant[] = ['outlined', 'text']\r\nconst COLORS: ButtonColor[] = ['primary', 'secondary', 'neutral', 'info', 'success', 'warning', 'error']\r\nconst SIZES: ButtonSize[] = ['sm', 'md', 'lg']\r\n\r\nVARIANTS.forEach(variant =>\r\n COLORS.forEach(color =>\r\n SIZES.forEach(size => TOGGLE_BUTTON_STYLES.root({ variant, color, size }))\r\n )\r\n)\r\n","import { createContext } from 'react'\r\n\r\nimport type { ButtonColor, ButtonSize } from '@components/actions/button/button.types'\r\nimport type { ToggleButtonVariant } from '@components/actions/toggle/toggle.types'\r\n\r\nexport type ToggleGroupContextValue = {\r\n /** Currently selected toggle value, or null if nothing is selected. */\r\n value: string | null\r\n /** Selects or deselects a toggle in the group. */\r\n setValue: (value: string | null) => void\r\n /** Variant override propagated to all child toggles. */\r\n variant?: ToggleButtonVariant\r\n /** Color override propagated to all child toggles. */\r\n color?: ButtonColor\r\n /** Size override propagated to all child toggles. */\r\n size?: ButtonSize\r\n}\r\n\r\nexport const ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null)\r\n","import { useCallback, useContext, useState, type MouseEvent } from 'react'\r\n\r\nimport { ToggleGroupContext } from '@components/actions/toggle/toggle-group/ToggleGroup.context'\r\nimport type { ButtonColor, ButtonSize } from '@components/actions/button/button.types'\r\nimport type { ToggleButtonVariant } from '@components/actions/toggle/toggle.types'\r\n\r\nexport type UseToggleStateOptions = {\r\n /** Controlled active state. Defined → controlled mode. */\r\n active?: boolean\r\n /** Initial state for uncontrolled mode. @default false */\r\n defaultActive?: boolean\r\n /** Called when the active state changes. */\r\n onActiveChange?: (active: boolean) => void\r\n /** Identifier used by ToggleGroup for mutual exclusivity. */\r\n value?: string\r\n disabled?: boolean\r\n isLoading?: boolean\r\n variantProp: ToggleButtonVariant\r\n colorProp: ButtonColor\r\n sizeProp: ButtonSize\r\n onClick?: (e: MouseEvent<HTMLButtonElement>) => void\r\n}\r\n\r\nexport type UseToggleStateResult = {\r\n isActive: boolean\r\n isDisabled: boolean\r\n variant: ToggleButtonVariant\r\n color: ButtonColor\r\n size: ButtonSize\r\n handleClick: (e: MouseEvent<HTMLButtonElement>) => void\r\n}\r\n\r\n/**\r\n * Encapsulates all toggle state logic:\r\n * - Reads variant/color/size overrides from a parent ToggleGroup (if any)\r\n * - Resolves controlled vs uncontrolled active state\r\n * - Produces the handleClick that delegates to the group or toggles locally\r\n */\r\nexport const useToggleState = ({\r\n active: activeProp,\r\n defaultActive = false,\r\n onActiveChange,\r\n value,\r\n disabled = false,\r\n isLoading = false,\r\n variantProp,\r\n colorProp,\r\n sizeProp,\r\n onClick,\r\n}: UseToggleStateOptions): UseToggleStateResult => {\r\n const groupCtx = useContext(ToggleGroupContext)\r\n\r\n // Group context overrides individual props when present\r\n const variant = groupCtx?.variant ?? variantProp\r\n const color = groupCtx?.color ?? colorProp\r\n const size = groupCtx?.size ?? sizeProp\r\n\r\n const isControlled = activeProp !== undefined\r\n const [internalActive, setInternalActive] = useState(defaultActive)\r\n\r\n const isActive = groupCtx !== null\r\n ? (value !== undefined ? groupCtx.value === value : false)\r\n : isControlled\r\n ? activeProp!\r\n : internalActive\r\n\r\n const handleClick = useCallback(\r\n (e: MouseEvent<HTMLButtonElement>) => {\r\n if (groupCtx !== null) {\r\n if (value !== undefined) {\r\n groupCtx.setValue(value)\r\n }\r\n } else {\r\n const next = !isActive\r\n if (!isControlled) {\r\n setInternalActive(next)\r\n }\r\n onActiveChange?.(next)\r\n }\r\n onClick?.(e)\r\n },\r\n [groupCtx, isActive, isControlled, onActiveChange, onClick, value],\r\n )\r\n\r\n return {\r\n isActive,\r\n isDisabled: disabled || isLoading,\r\n variant,\r\n color,\r\n size,\r\n handleClick,\r\n }\r\n}\r\n","import { type FC } from 'react'\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { SpinnerIcon } from '@resources/Icons'\r\nimport { TOGGLE_BUTTON_STYLES } from '@components/actions/toggle/toggle-button/ToggleButton.styles'\r\nimport { useToggleState } from '@components/actions/toggle/hooks/useToggleState'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { ButtonSize } from '@components/actions/button/button.types'\r\nimport type { ToggleButtonProps } from '@components/actions/toggle/toggle-button/ToggleButton.props'\r\n\r\nconst LABEL_FONT_SIZE: Record<ButtonSize, keyof Theme['fontSize']> = {\r\n sm: 'xs',\r\n md: 'sm',\r\n lg: 'md',\r\n}\r\n\r\nconst ICON_SIZE: Record<ButtonSize, keyof Theme['fontSize']> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n}\r\n\r\n/**\r\n * A toggle button that can be pressed/unpressed (`aria-pressed`).\r\n * Supports both **controlled** (`active` + `onActiveChange`) and **uncontrolled**\r\n * (`defaultActive`) modes.\r\n *\r\n * When placed inside a `ToggleGroup`, the group manages mutual exclusivity:\r\n * the `value` prop identifies this button within the group.\r\n *\r\n * @example\r\n * // Standalone, uncontrolled\r\n * <ToggleButton label=\"Bold\" defaultActive={false} onActiveChange={setBold} />\r\n *\r\n * @example\r\n * // Standalone, controlled\r\n * <ToggleButton label=\"Bold\" active={isBold} onActiveChange={setIsBold} />\r\n *\r\n * @example\r\n * // Inside a ToggleGroup\r\n * <ToggleGroup defaultValue=\"md\" ariaLabel=\"Text size\">\r\n * <ToggleButton value=\"sm\" label=\"Small\" />\r\n * <ToggleButton value=\"md\" label=\"Medium\" />\r\n * </ToggleGroup>\r\n */\r\nconst ToggleButton: FC<ToggleButtonProps> = ({\r\n ref,\r\n label,\r\n variant: variantProp = 'outlined',\r\n color: colorProp = 'primary',\r\n size: sizeProp = 'md',\r\n width,\r\n flexGrow,\r\n flexShrink,\r\n active: activeProp,\r\n defaultActive = false,\r\n onActiveChange,\r\n value,\r\n startIcon: StartIcon,\r\n endIcon: EndIcon,\r\n isLoading = false,\r\n className,\r\n type = 'button',\r\n disabled = false,\r\n style,\r\n onClick,\r\n ...rest\r\n} = {}) => {\r\n const { isActive, isDisabled, variant, color, size, handleClick } = useToggleState({\r\n active: activeProp,\r\n defaultActive,\r\n onActiveChange,\r\n value,\r\n disabled,\r\n isLoading,\r\n variantProp,\r\n colorProp,\r\n sizeProp,\r\n onClick,\r\n })\r\n\r\n const iconSize = ICON_SIZE[size]\r\n const rootClassName = cx(TOGGLE_BUTTON_STYLES.root({ variant, color, size }), className)\r\n const mergedStyle = {\r\n ...style,\r\n ...(width !== undefined ? { width } : {}),\r\n ...(flexGrow !== undefined ? { flexGrow } : {}),\r\n ...(flexShrink !== undefined ? { flexShrink } : {}),\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type={type}\r\n className={rootClassName}\r\n disabled={isDisabled}\r\n aria-pressed={isActive}\r\n aria-busy={isLoading || undefined}\r\n style={mergedStyle}\r\n onClick={handleClick}\r\n {...rest}\r\n >\r\n {isLoading && (\r\n <span className={TOGGLE_BUTTON_STYLES.spinnerWrap}>\r\n <Icon\r\n icon={SpinnerIcon}\r\n size={iconSize}\r\n className={TOGGLE_BUTTON_STYLES.spinnerIcon}\r\n />\r\n </span>\r\n )}\r\n\r\n <span className={cx(TOGGLE_BUTTON_STYLES.content, isLoading && TOGGLE_BUTTON_STYLES.contentHidden)}>\r\n {StartIcon && (\r\n <Icon\r\n icon={StartIcon}\r\n size={iconSize}\r\n />\r\n )}\r\n\r\n {label !== undefined && (\r\n <Text\r\n variant={'span'}\r\n fontSize={LABEL_FONT_SIZE[size]}\r\n fontWeight={'medium'}\r\n lineHeight={'none'}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n\r\n {EndIcon && (\r\n <Icon\r\n icon={EndIcon}\r\n size={iconSize}\r\n />\r\n )}\r\n </span>\r\n </button>\r\n )\r\n}\r\n\r\nToggleButton.displayName = 'ToggleButton'\r\n\r\nexport default ToggleButton\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { spinAnimation } from '@constants/animation.constants'\r\nimport { buildActionButtonRootStyle } from '@components/actions/_common/buttonVariants.styles'\r\nimport { buildToggleIntents } from '@components/actions/toggle/utils/buildToggleIntents.utils'\r\nimport { buildTogglePressedStyles } from '@components/actions/toggle/utils/buildTogglePressedStyles.utils'\r\nimport type { ToggleButtonVariant } from '@components/actions/toggle/toggle.types'\r\nimport type { ButtonColor, ButtonSize } from '@components/actions/button/button.types'\r\n\r\ntype ToggleIconButtonRootParams = {\r\n variant: ToggleButtonVariant\r\n color: ButtonColor\r\n size: ButtonSize\r\n}\r\n\r\nexport const TOGGLE_ICON_BUTTON_STYLES = createStyles((theme) => ({\r\n root: ({ variant, color, size }: ToggleIconButtonRootParams) => {\r\n const intents = buildToggleIntents(theme.colors)\r\n const pressedStyles = buildTogglePressedStyles(intents, variant, color)\r\n\r\n return {\r\n ...buildActionButtonRootStyle(theme, variant, color, { inset: true, elevate: true }),\r\n ...(size === 'sm'\r\n ? { width: '2rem', height: '2rem', padding: '0' }\r\n : size === 'lg'\r\n ? { width: '3rem', height: '3rem', padding: '0' }\r\n : { width: '2.5rem', height: '2.5rem', padding: '0' }),\r\n '&[aria-pressed=\"true\"]:not(:disabled)': pressedStyles,\r\n }\r\n },\r\n spinnerIcon: {\r\n animation: `${spinAnimation} 0.75s linear infinite`,\r\n '@media (prefers-reduced-motion: reduce)': { animation: 'none' },\r\n },\r\n iconHidden: { visibility: 'hidden' },\r\n spinnerWrap: {\r\n position: 'absolute',\r\n inset: 0,\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n}), { id: 'toggle-icon-button' })\r\n\r\n// Pre-generate all combinations to avoid first-render CSS injection delay.\r\nconst VARIANTS: ToggleButtonVariant[] = ['outlined', 'text']\r\nconst COLORS: ButtonColor[] = ['primary', 'secondary', 'neutral', 'info', 'success', 'warning', 'error']\r\nconst SIZES: ButtonSize[] = ['sm', 'md', 'lg']\r\n\r\nVARIANTS.forEach(variant =>\r\n COLORS.forEach(color =>\r\n SIZES.forEach(size => TOGGLE_ICON_BUTTON_STYLES.root({ variant, color, size }))\r\n )\r\n)\r\n","import { type FC } from 'react'\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { SpinnerIcon } from '@resources/Icons'\r\nimport { TOGGLE_ICON_BUTTON_STYLES } from '@components/actions/toggle/toggle-icon-button/ToggleIconButton.styles'\r\nimport { useToggleState } from '@components/actions/toggle/hooks/useToggleState'\r\nimport { Icon } from '@components/foundation/icon'\r\n\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { ButtonSize } from '@components/actions/button/button.types'\r\nimport type { ToggleIconButtonProps } from '@components/actions/toggle/toggle-icon-button/ToggleIconButton.props'\r\n\r\nconst ICON_SIZE: Record<ButtonSize, keyof Theme['fontSize']> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n}\r\n\r\n/**\r\n * A square icon-only toggle button that can be pressed/unpressed (`aria-pressed`).\r\n * `ariaLabel` is mandatory since there is no visible text.\r\n *\r\n * Supports both **controlled** (`active` + `onActiveChange`) and **uncontrolled**\r\n * (`defaultActive`) modes.\r\n *\r\n * When placed inside a `ToggleGroup`, the group manages mutual exclusivity:\r\n * the `value` prop identifies this button within the group.\r\n *\r\n * @example\r\n * // Standalone, controlled\r\n * <ToggleIconButton icon={BoldIcon} ariaLabel=\"Toggle bold\" active={isBold} onActiveChange={setIsBold} />\r\n *\r\n * @example\r\n * // Inside a ToggleGroup (alignment segmented control)\r\n * <ToggleGroup value={align} onChange={setAlign} ariaLabel=\"Text alignment\" joined>\r\n * <ToggleIconButton value=\"left\" icon={AlignLeftIcon} ariaLabel=\"Align left\" />\r\n * <ToggleIconButton value=\"center\" icon={AlignCenterIcon} ariaLabel=\"Align center\" />\r\n * <ToggleIconButton value=\"right\" icon={AlignRightIcon} ariaLabel=\"Align right\" />\r\n * </ToggleGroup>\r\n */\r\nconst ToggleIconButton: FC<ToggleIconButtonProps> = ({\r\n ref,\r\n icon: IconComponent,\r\n ariaLabel,\r\n variant: variantProp = 'outlined',\r\n color: colorProp = 'primary',\r\n size: sizeProp = 'md',\r\n isLoading = false,\r\n className,\r\n type = 'button',\r\n disabled = false,\r\n active: activeProp,\r\n defaultActive = false,\r\n onActiveChange,\r\n value,\r\n onClick,\r\n ...rest\r\n}) => {\r\n const { isActive, isDisabled, variant, color, size, handleClick } = useToggleState({\r\n active: activeProp,\r\n defaultActive,\r\n onActiveChange,\r\n value,\r\n disabled,\r\n isLoading,\r\n variantProp,\r\n colorProp,\r\n sizeProp,\r\n onClick,\r\n })\r\n\r\n const iconSize = ICON_SIZE[size]\r\n const rootClassName = cx(TOGGLE_ICON_BUTTON_STYLES.root({ variant, color, size }), className)\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type={type}\r\n className={rootClassName}\r\n disabled={isDisabled}\r\n aria-label={ariaLabel}\r\n aria-pressed={isActive}\r\n aria-busy={isLoading || undefined}\r\n onClick={handleClick}\r\n {...rest}\r\n >\r\n {isLoading && (\r\n <span className={TOGGLE_ICON_BUTTON_STYLES.spinnerWrap}>\r\n <Icon\r\n icon={SpinnerIcon}\r\n size={iconSize}\r\n className={TOGGLE_ICON_BUTTON_STYLES.spinnerIcon}\r\n />\r\n </span>\r\n )}\r\n\r\n <Icon\r\n icon={IconComponent}\r\n size={iconSize}\r\n className={cx(isLoading && TOGGLE_ICON_BUTTON_STYLES.iconHidden)}\r\n />\r\n </button>\r\n )\r\n}\r\n\r\nToggleIconButton.displayName = 'ToggleIconButton'\r\n\r\nexport default ToggleIconButton\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const TOGGLE_GROUP_STYLES = createStyles((theme) => ({\r\n root: ({\r\n orientation,\r\n joined,\r\n }: {\r\n orientation: 'horizontal' | 'vertical'\r\n joined: boolean\r\n }) => ({\r\n display: 'inline-flex',\r\n flexDirection: orientation === 'vertical' ? 'column' : 'row',\r\n alignItems: orientation === 'vertical' ? 'stretch' : 'center',\r\n gap: joined ? '0' : theme.spacing.xs,\r\n ...(joined && {\r\n '& > button:not(:first-child):not(:last-child)': {\r\n borderRadius: '0',\r\n },\r\n '& > button:first-child:not(:last-child)': {\r\n borderRadius:\r\n orientation === 'vertical'\r\n ? `${theme.radius.md} ${theme.radius.md} 0 0`\r\n : `${theme.radius.md} 0 0 ${theme.radius.md}`,\r\n },\r\n '& > button:last-child:not(:first-child)': {\r\n borderRadius:\r\n orientation === 'vertical'\r\n ? `0 0 ${theme.radius.md} ${theme.radius.md}`\r\n : `0 ${theme.radius.md} ${theme.radius.md} 0`,\r\n },\r\n '& > button:not(:first-child)': {\r\n marginLeft: orientation === 'vertical' ? '0' : '-1px',\r\n marginTop: orientation === 'vertical' ? '-1px' : '0',\r\n },\r\n }),\r\n }),\r\n}), { id: 'toggle-group' })\r\n","import { useCallback, useMemo, useState } from 'react'\r\n\r\nimport { type ToggleGroupContextValue } from '@components/actions/toggle/toggle-group/ToggleGroup.context'\r\nimport type { ToggleGroupProps } from '@components/actions/toggle/toggle-group/ToggleGroup.props'\r\n\r\ntype UseToggleGroupParams = Pick<\r\n ToggleGroupProps,\r\n 'value' | 'defaultValue' | 'onChange' | 'allowDeselect' | 'variant' | 'color' | 'size'\r\n>\r\n\r\ntype UseToggleGroupReturn = {\r\n contextValue: ToggleGroupContextValue\r\n}\r\n\r\n/**\r\n * Encapsulates the controlled/uncontrolled state logic and context value\r\n * construction for `ToggleGroup`.\r\n */\r\nconst useToggleGroup = ({\r\n value: controlledValue,\r\n defaultValue = null,\r\n onChange,\r\n allowDeselect = true,\r\n variant,\r\n color,\r\n size,\r\n}: UseToggleGroupParams): UseToggleGroupReturn => {\r\n const isControlled = controlledValue !== undefined\r\n const [internalValue, setInternalValue] = useState<string | null>(defaultValue)\r\n\r\n const value = isControlled ? controlledValue! : internalValue\r\n\r\n const setValue = useCallback(\r\n (next: string | null) => {\r\n if (!isControlled) {\r\n setInternalValue(next)\r\n }\r\n onChange?.(next)\r\n },\r\n [isControlled, onChange],\r\n )\r\n\r\n const handleToggle = useCallback(\r\n (toggleValue: string) => {\r\n if (value === toggleValue) {\r\n if (allowDeselect) {\r\n setValue(null)\r\n }\r\n } else {\r\n setValue(toggleValue)\r\n }\r\n },\r\n [value, allowDeselect, setValue],\r\n )\r\n\r\n const contextValue = useMemo<ToggleGroupContextValue>(\r\n () => ({ value, setValue: handleToggle, variant, color, size } as ToggleGroupContextValue),\r\n [value, handleToggle, variant, color, size],\r\n )\r\n\r\n return { contextValue }\r\n}\r\n\r\nexport default useToggleGroup\r\n","import { type FC } from 'react'\r\n\r\nimport { TOGGLE_GROUP_STYLES } from '@components/actions/toggle/toggle-group/ToggleGroup.styles'\r\nimport { ToggleGroupContext } from '@components/actions/toggle/toggle-group/ToggleGroup.context'\r\nimport type { ToggleGroupProps } from '@components/actions/toggle/toggle-group/ToggleGroup.props'\r\nimport useToggleGroup from '@components/actions/toggle/toggle-group/hooks/useToggleGroup'\r\n\r\n/**\r\n * Groups multiple `ToggleButton` or `ToggleIconButton` components so that only\r\n * one can be active at a time (mutual exclusivity).\r\n *\r\n * Supports both **controlled** (`value` + `onChange`) and **uncontrolled**\r\n * (`defaultValue`) modes. Set `allowDeselect={false}` to always keep one\r\n * option selected.\r\n *\r\n * @example\r\n * // Uncontrolled\r\n * <ToggleGroup defaultValue=\"md\" ariaLabel=\"Text size\">\r\n * <ToggleButton value=\"sm\" label=\"Small\" />\r\n * <ToggleButton value=\"md\" label=\"Medium\" />\r\n * <ToggleButton value=\"lg\" label=\"Large\" />\r\n * </ToggleGroup>\r\n *\r\n * @example\r\n * // Controlled\r\n * const [align, setAlign] = useState<string | null>('left')\r\n * <ToggleGroup value={align} onChange={setAlign} ariaLabel=\"Text alignment\" joined>\r\n * <ToggleIconButton value=\"left\" icon={AlignLeftIcon} ariaLabel=\"Align left\" />\r\n * <ToggleIconButton value=\"center\" icon={AlignCenterIcon} ariaLabel=\"Align center\" />\r\n * <ToggleIconButton value=\"right\" icon={AlignRightIcon} ariaLabel=\"Align right\" />\r\n * </ToggleGroup>\r\n */\r\nconst ToggleGroup: FC<ToggleGroupProps> = ({\r\n children,\r\n value,\r\n defaultValue,\r\n onChange,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n orientation = 'horizontal',\r\n joined = false,\r\n allowDeselect = true,\r\n variant,\r\n color,\r\n size,\r\n}) => {\r\n const { contextValue } = useToggleGroup({ value, defaultValue, onChange, allowDeselect, variant, color, size })\r\n\r\n return (\r\n <ToggleGroupContext.Provider value={contextValue}>\r\n <div\r\n role={'toolbar'}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-orientation={orientation}\r\n className={TOGGLE_GROUP_STYLES.root({ orientation, joined })}\r\n >\r\n {children}\r\n </div>\r\n </ToggleGroupContext.Provider>\r\n )\r\n}\r\n\r\nToggleGroup.displayName = 'ToggleGroup'\r\n\r\nexport default ToggleGroup\r\n","import { createStyles } from '@aurora-ds/theme'\r\nimport type { Palette } from '@theme/theme.types'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nimport type { AvatarStyleParams } from '@components/data-display/avatar/Avatar.props'\r\nimport type { AvatarColor, AvatarSize } from '@components/data-display/avatar/avatar.types'\r\n\r\n/** Pixel dimensions per size token. */\r\nconst AVATAR_SIZE_PX: Record<AvatarSize, string> = {\r\n xs: '1.5rem', // 24px\r\n sm: '2rem', // 32px\r\n md: '2.5rem', // 40px\r\n lg: '3rem', // 48px\r\n xl: '3.5rem', // 56px\r\n '2xl': '4rem', // 64px\r\n}\r\n\r\n/** Initials font size per size token. */\r\nconst AVATAR_FONT_SIZE: Record<AvatarSize, string> = {\r\n xs: '0.5rem',\r\n sm: '0.625rem',\r\n md: '0.75rem',\r\n lg: '0.875rem',\r\n xl: '1rem',\r\n '2xl': '1.125rem',\r\n}\r\n\r\n/** Maps color token to theme palette keys. */\r\nconst AVATAR_COLOR_MAP: Record<AvatarColor, { bg: keyof Palette; text: keyof Palette }> = {\r\n primary: { bg: 'primaryMain', text: 'primaryOn' },\r\n secondary: { bg: 'defaultMain', text: 'textInverse' },\r\n default: { bg: 'defaultMain', text: 'textInverse' },\r\n success: { bg: 'successMain', text: 'successOn' },\r\n warning: { bg: 'warningMain', text: 'warningOn' },\r\n error: { bg: 'errorMain', text: 'errorOn' },\r\n info: { bg: 'infoMain', text: 'infoOn' },\r\n orange: { bg: 'orangeMain', text: 'orangeOn' },\r\n pink: { bg: 'pinkMain', text: 'pinkOn' },\r\n violet: { bg: 'violetMain', text: 'violetOn' },\r\n}\r\n\r\nexport const AVATAR_STYLES = createStyles((theme) => ({\r\n root: ({ size = 'md', shape = 'circle', color = 'primary', isInteractive = false }: AvatarStyleParams) => {\r\n const dim = AVATAR_SIZE_PX[size]\r\n const colorMap = AVATAR_COLOR_MAP[color]\r\n\r\n return {\r\n position: 'relative',\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n overflow: 'hidden',\r\n flexShrink: 0,\r\n boxSizing: 'border-box' as const,\r\n border: `2px solid ${theme.colors.surfacePaper}`,\r\n width: dim,\r\n height: dim,\r\n minWidth: dim,\r\n minHeight: dim,\r\n borderRadius: shape === 'square' ? theme.radius.lg : theme.radius.full,\r\n backgroundColor: theme.colors[colorMap.bg],\r\n color: theme.colors[colorMap.text],\r\n fontSize: AVATAR_FONT_SIZE[size],\r\n fontWeight: theme.fontWeight.semibold,\r\n fontFamily: 'inherit',\r\n userSelect: 'none' as const,\r\n lineHeight: 1,\r\n ...(isInteractive\r\n ? {\r\n cursor: 'pointer',\r\n transition: `opacity ${theme.transition.fast}, outline ${theme.transition.fast}`,\r\n '&:hover': { opacity: 0.85 },\r\n '&:focus-visible': getFocusRingStyles(theme),\r\n }\r\n : {}),\r\n }\r\n },\r\n image: () => ({\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'cover' as const,\r\n display: 'block',\r\n }),\r\n}))\r\n","/**\r\n * Extracts 1–2 initials from a full name.\r\n *\r\n * - Single word → first letter capitalised\r\n * - Multiple words → first letter of first word + first letter of last word\r\n *\r\n * @example getAvatarInitials('Alice') // → 'A'\r\n * @example getAvatarInitials('Alice Dupont') // → 'AD'\r\n * @example getAvatarInitials('Jean-Paul Martin')// → 'JM'\r\n */\r\nexport const getAvatarInitials = (name: string): string => {\r\n const parts = name.trim().split(/\\s+/).filter(Boolean)\r\n if (parts.length === 0) {return ''}\r\n if (parts.length === 1) {return parts[0].charAt(0).toUpperCase()}\r\n return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase()\r\n}\r\n","import { type FC, type KeyboardEvent, useState } from 'react'\r\n\r\n\r\nimport { AVATAR_STYLES } from '@components/data-display/avatar/Avatar.styles'\r\nimport { getAvatarInitials } from '@components/data-display/avatar/utils/getAvatarInitials.utils'\r\n\r\nimport type { AvatarProps } from '@components/data-display/avatar/Avatar.props'\r\n\r\n/**\r\n * Displays a user's profile picture, falling back gracefully to initials\r\n * and then to a blank coloured circle when no image is available.\r\n *\r\n * **Display priority:**\r\n * 1. `src` image (hides on load error)\r\n * 2. `initials` (explicit) or letters derived from `name`\r\n * 3. Empty coloured circle\r\n *\r\n * **Accessibility:**\r\n * - Static avatar → `role=\"img\"` + `aria-label`\r\n * - Interactive avatar (has `onClick`) → `role=\"button\"` + keyboard support\r\n *\r\n * @example\r\n * ```tsx\r\n * // Image avatar:\r\n * <Avatar src=\"/users/alice.jpg\" name=\"Alice Dupont\" size=\"md\" />\r\n *\r\n * // Initials fallback:\r\n * <Avatar name=\"Bob Martin\" color=\"info\" size=\"lg\" />\r\n *\r\n * // Interactive:\r\n * <Avatar src=\"/me.jpg\" name=\"Me\" onClick={() => openProfile()} ariaLabel=\"Open profile\" />\r\n * ```\r\n */\r\nconst Avatar: FC<AvatarProps> = ({\r\n src,\r\n name,\r\n initials,\r\n size = 'md',\r\n shape = 'circle',\r\n color = 'primary',\r\n onClick,\r\n ariaLabel,\r\n ref,\r\n id,\r\n 'aria-haspopup': ariaHasPopup,\r\n 'aria-expanded': ariaExpanded,\r\n 'aria-controls': ariaControls,\r\n}) => {\r\n const [imageError, setImageError] = useState(false)\r\n const isInteractive = Boolean(onClick)\r\n\r\n const resolvedInitials = initials ?? (name ? getAvatarInitials(name) : undefined)\r\n const resolvedAriaLabel = ariaLabel ?? name ?? 'Avatar'\r\n const showImage = Boolean(src) && !imageError\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault()\r\n onClick?.()\r\n }\r\n }\r\n\r\n const avatarContent = showImage ? (\r\n // aria-hidden: the parent div owns the accessible name via aria-label;\r\n // the img is purely decorative from the a11y tree's perspective.\r\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\r\n <img\r\n src={src}\r\n alt={''}\r\n aria-hidden={true}\r\n className={AVATAR_STYLES.image()}\r\n onError={() => setImageError(true)}\r\n />\r\n ) : (\r\n // aria-hidden: initials are visual sugar – the parent already carries\r\n // the accessible name, so we hide this text node from the a11y tree.\r\n resolvedInitials\r\n ? <span aria-hidden={true}>{resolvedInitials}</span>\r\n : null\r\n )\r\n\r\n if (isInteractive) {\r\n return (\r\n <div\r\n ref={ref}\r\n id={id}\r\n role={'button'}\r\n tabIndex={0}\r\n aria-label={resolvedAriaLabel}\r\n aria-haspopup={ariaHasPopup}\r\n aria-expanded={ariaExpanded}\r\n aria-controls={ariaControls}\r\n title={resolvedAriaLabel}\r\n className={AVATAR_STYLES.root({ size, shape, color, isInteractive: true })}\r\n onClick={onClick}\r\n onKeyDown={handleKeyDown}\r\n >\r\n {avatarContent}\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n id={id}\r\n role={'img'}\r\n aria-label={resolvedAriaLabel}\r\n title={resolvedAriaLabel}\r\n className={AVATAR_STYLES.root({ size, shape, color, isInteractive: false })}\r\n >\r\n {avatarContent}\r\n </div>\r\n )\r\n}\r\n\r\nAvatar.displayName = 'Avatar'\r\n\r\nexport default Avatar\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { AvatarGroupStyleParams } from '@components/data-display/avatar/AvatarGroup.props'\r\nimport type { AvatarGroupOverlap } from '@components/data-display/avatar/avatar.types'\r\n\r\n/**\r\n * Negative margin-left per overlap level.\r\n * sm = tight (more overlap), lg = loose (less overlap) — intuitive naming.\r\n */\r\nconst OVERLAP_MAP: Record<AvatarGroupOverlap, string> = {\r\n sm: '-1.5rem', // 24px – tight (most overlap)\r\n md: '-1rem', // 16px – moderate (default)\r\n lg: '-0.625rem', // 10px – loose (least overlap)\r\n}\r\n\r\nexport const AVATAR_GROUP_STYLES = createStyles((theme) => ({\r\n root: {\r\n display: 'inline-flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n },\r\n\r\n /** Item slot for a non-interactive avatar — no hover effect. */\r\n item: ({ overlap = 'md' }: AvatarGroupStyleParams) => ({\r\n marginLeft: OVERLAP_MAP[overlap],\r\n '&:first-child': {\r\n marginLeft: 0,\r\n },\r\n }),\r\n\r\n /**\r\n * Item slot for an interactive avatar — lifts and scales on hover\r\n * to give a visual affordance that the avatar is clickable.\r\n */\r\n itemInteractive: ({ overlap = 'md' }: AvatarGroupStyleParams) => ({\r\n marginLeft: OVERLAP_MAP[overlap],\r\n transition: `transform ${theme.transition.fast}`,\r\n '&:first-child': {\r\n marginLeft: 0,\r\n },\r\n '&:hover': {\r\n zIndex: 1,\r\n transform: 'scale(1.08)',\r\n },\r\n }),\r\n}))\r\n","import { Children, cloneElement, isValidElement, type FC, type ReactElement } from 'react'\r\n\r\nimport { AVATAR_GROUP_STYLES } from '@components/data-display/avatar/AvatarGroup.styles'\r\nimport type { AvatarGroupProps } from '@components/data-display/avatar/AvatarGroup.props'\r\nimport type { AvatarProps } from '@components/data-display/avatar/Avatar.props'\r\nimport Avatar from '@components/data-display/avatar/Avatar'\r\n\r\n/**\r\n * Renders a horizontally overlapping stack of `Avatar` components.\r\n *\r\n * When the number of children exceeds `max`, the remaining count is shown\r\n * as a **surplus avatar** (`+N`) at the end of the row.\r\n *\r\n * **Accessibility:**\r\n * - Root element uses `role=\"list\"` so screen readers announce the item count.\r\n * - Each slot uses `role=\"listitem\"`.\r\n * - The `aria-label` on the root is auto-built from children `name` props\r\n * (e.g. *\"Alice Dupont, Bob Martin et 3 autres\"*) unless overridden.\r\n *\r\n * @example\r\n * ```tsx\r\n * <AvatarGroup max={4} size=\"md\" overlap=\"md\">\r\n * <Avatar name=\"Alice Dupont\" color=\"primary\" />\r\n * <Avatar name=\"Bob Martin\" color=\"info\" />\r\n * <Avatar src=\"/carol.jpg\" name=\"Carol\" />\r\n * <Avatar name=\"Dan Lee\" color=\"success\" />\r\n * <Avatar name=\"Eve Chen\" color=\"warning\" />\r\n * </AvatarGroup>\r\n * // → shows 4 avatars + \"+1\"\r\n * ```\r\n */\r\nconst AvatarGroup: FC<AvatarGroupProps> = ({\r\n children,\r\n max,\r\n size,\r\n shape,\r\n overlap = 'md',\r\n surplusColor = 'default',\r\n ariaLabel,\r\n}) => {\r\n const all = Children.toArray(children)\r\n const surplus = max !== undefined ? Math.max(0, all.length - max) : 0\r\n const visible = max !== undefined ? all.slice(0, max) : all\r\n\r\n // Build a meaningful accessible label from children `name` props\r\n const resolvedAriaLabel = ariaLabel ?? (() => {\r\n const names = all\r\n .filter((c) => isValidElement<AvatarProps>(c))\r\n .map((c) => (c as ReactElement<AvatarProps>).props.name)\r\n .filter(Boolean) as string[]\r\n\r\n if (names.length === 0) {return surplus > 0 ? `Avatars, ${all.length} au total` : 'Avatars'}\r\n\r\n const visibleNames = max !== undefined ? names.slice(0, max) : names\r\n const surplusCount = max !== undefined ? Math.max(0, names.length - max) : 0\r\n\r\n if (surplusCount > 0) {\r\n return `${visibleNames.join(', ')} et ${surplusCount} autre${surplusCount > 1 ? 's' : ''}`\r\n }\r\n return visibleNames.join(', ')\r\n })()\r\n\r\n const surplusAriaLabel = `et ${surplus} autre${surplus > 1 ? 's' : ''}`\r\n\r\n // Pre-compute both item class variants\r\n const itemClass = AVATAR_GROUP_STYLES.item({ overlap })\r\n const itemInteractiveClass = AVATAR_GROUP_STYLES.itemInteractive({ overlap })\r\n\r\n return (\r\n <div\r\n role={'list'}\r\n aria-label={resolvedAriaLabel}\r\n className={AVATAR_GROUP_STYLES.root}\r\n >\r\n {visible.map((child, index) => {\r\n const isChildInteractive =\r\n isValidElement<AvatarProps>(child) && Boolean(child.props.onClick)\r\n\r\n const cloned =\r\n isValidElement<AvatarProps>(child)\r\n ? cloneElement(child as ReactElement<AvatarProps>, {\r\n size: size ?? child.props.size,\r\n shape: shape ?? child.props.shape,\r\n })\r\n : child\r\n\r\n return (\r\n <div\r\n key={index}\r\n role={'listitem'}\r\n className={isChildInteractive ? itemInteractiveClass : itemClass}\r\n >\r\n {cloned}\r\n </div>\r\n )\r\n })}\r\n\r\n {surplus > 0 && (\r\n <div\r\n role={'listitem'}\r\n className={itemClass}\r\n >\r\n <Avatar\r\n initials={`+${surplus}`}\r\n size={size}\r\n shape={shape}\r\n color={surplusColor}\r\n ariaLabel={surplusAriaLabel}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nAvatarGroup.displayName = 'AvatarGroup'\r\n\r\nexport default AvatarGroup\r\n","import type { BadgeColor, BadgeVariant } from '@components/data-display/badge/badge.types'\r\n\r\nconst BADGE_VARIANTS_LIST: BadgeVariant[] = ['filled', 'outlined', 'subtle', 'subtleOutlined']\r\n\r\ntype BadgeIntent = {\r\n bg: string\r\n on: string\r\n fg: string\r\n fgStrong: string\r\n subtle: string\r\n border: string\r\n}\r\n\r\n/**\r\n * Builds compound variants combining `variant` × `color` for the Badge.\r\n * Returns one entry per (color, variant) pair with static color styles.\r\n */\r\nexport const buildBadgeCompoundVariants = (theme: { colors: Record<string, string> }) => {\r\n const c = theme.colors\r\n\r\n const intents: Record<BadgeColor, BadgeIntent> = {\r\n default: {\r\n bg: c.defaultMain,\r\n on: c.textInverse,\r\n fg: c.defaultMain,\r\n fgStrong: c.defaultHover,\r\n subtle: c.defaultSubtle,\r\n border: c.defaultMain,\r\n },\r\n primary: {\r\n bg: c.primaryMain,\r\n on: c.primaryOn,\r\n fg: c.primaryMain,\r\n fgStrong: c.primaryHover,\r\n subtle: c.primarySubtle,\r\n border: c.primaryMain,\r\n },\r\n secondary: {\r\n bg: c.secondaryMain,\r\n on: c.secondaryOn,\r\n fg: c.secondaryOn,\r\n fgStrong: c.secondaryOn,\r\n subtle: c.secondarySubtle,\r\n border: c.borderStrong,\r\n },\r\n success: {\r\n bg: c.successMain,\r\n on: c.successOn,\r\n fg: c.successMain,\r\n fgStrong: c.successHover,\r\n subtle: c.successSubtle,\r\n border: c.successMain,\r\n },\r\n warning: {\r\n bg: c.warningMain,\r\n on: c.warningOn,\r\n fg: c.warningMain,\r\n fgStrong: c.warningHover,\r\n subtle: c.warningSubtle,\r\n border: c.warningMain,\r\n },\r\n error: {\r\n bg: c.errorMain,\r\n on: c.errorOn,\r\n fg: c.errorMain,\r\n fgStrong: c.errorHover,\r\n subtle: c.errorSubtle,\r\n border: c.errorMain,\r\n },\r\n info: {\r\n bg: c.infoMain,\r\n on: c.infoOn,\r\n fg: c.infoMain,\r\n fgStrong: c.infoHover,\r\n subtle: c.infoSubtle,\r\n border: c.infoMain,\r\n },\r\n orange: {\r\n bg: c.orangeMain,\r\n on: c.orangeOn,\r\n fg: c.orangeMain,\r\n fgStrong: c.orangeHover,\r\n subtle: c.orangeSubtle,\r\n border: c.orangeMain,\r\n },\r\n pink: {\r\n bg: c.pinkMain,\r\n on: c.pinkOn,\r\n fg: c.pinkMain,\r\n fgStrong: c.pinkHover,\r\n subtle: c.pinkSubtle,\r\n border: c.pinkMain,\r\n },\r\n violet: {\r\n bg: c.violetMain,\r\n on: c.violetOn,\r\n fg: c.violetMain,\r\n fgStrong: c.violetHover,\r\n subtle: c.violetSubtle,\r\n border: c.violetMain,\r\n },\r\n }\r\n\r\n const getColorStyles = (intent: BadgeIntent, appearance: BadgeVariant) => {\r\n if (appearance === 'filled') {\r\n return {\r\n backgroundColor: intent.bg,\r\n borderColor: intent.bg,\r\n color: intent.on,\r\n }\r\n }\r\n\r\n if (appearance === 'outlined') {\r\n return {\r\n backgroundColor: 'transparent',\r\n borderColor: intent.border,\r\n color: intent.fgStrong,\r\n }\r\n }\r\n\r\n if (appearance === 'subtleOutlined') {\r\n return {\r\n backgroundColor: intent.subtle,\r\n borderColor: intent.border,\r\n color: intent.fgStrong,\r\n }\r\n }\r\n\r\n // subtle\r\n return {\r\n backgroundColor: intent.subtle,\r\n borderColor: 'transparent',\r\n color: intent.fgStrong,\r\n }\r\n }\r\n\r\n return (Object.keys(intents) as BadgeColor[]).flatMap((color) =>\r\n BADGE_VARIANTS_LIST.map((variant) => ({\r\n color,\r\n variant,\r\n styles: getColorStyles(intents[color], variant),\r\n }))\r\n )\r\n}\r\n","import { createVariants } from '@aurora-ds/theme'\r\nimport { buildBadgeCompoundVariants } from '@components/data-display/badge/utils/getBadgeColorStyles.utils'\r\n\r\nexport const BADGE_VARIANTS = createVariants((theme) => ({\r\n base: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: theme.spacing.xs,\r\n boxSizing: 'border-box' as const,\r\n borderRadius: theme.radius.full,\r\n border: '1px solid transparent',\r\n fontFamily: 'inherit',\r\n fontWeight: theme.fontWeight.medium,\r\n lineHeight: theme.lineHeight.none,\r\n whiteSpace: 'nowrap' as const,\r\n userSelect: 'none' as const,\r\n },\r\n variants: {\r\n size: {\r\n sm: {\r\n height: '1.25rem',\r\n padding: `0.125rem ${theme.spacing.xsPlus}`,\r\n fontSize: theme.fontSize['2xs'],\r\n },\r\n md: {\r\n height: '1.5rem',\r\n padding: `0.1875rem ${theme.spacing.sm}`,\r\n fontSize: theme.fontSize.xs,\r\n },\r\n lg: {\r\n height: '2rem',\r\n padding: `0.25rem ${theme.spacing.md}`,\r\n fontSize: theme.fontSize.sm,\r\n },\r\n },\r\n // Appearance and color styling is handled entirely by compoundVariants.\r\n variant: { filled: {}, outlined: {}, subtle: {}, subtleOutlined: {} },\r\n color: {\r\n default: {},\r\n primary: {},\r\n secondary: {},\r\n success: {},\r\n warning: {},\r\n error: {},\r\n info: {},\r\n orange: {},\r\n pink: {},\r\n violet: {},\r\n },\r\n },\r\n defaultVariants: { size: 'md', variant: 'subtle', color: 'default' },\r\n compoundVariants: buildBadgeCompoundVariants(theme),\r\n}), { id: 'badge' })\r\n","import { useTheme } from '@aurora-ds/theme'\r\nimport { BADGE_VARIANTS } from '@components/data-display/badge/Badge.styles'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { BadgeProps } from '@components/data-display/badge/Badge.props'\r\nimport type { BadgeSize } from '@components/data-display/badge/badge.types'\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { CSSProperties, FC } from 'react'\r\n\r\n/** Maps badge size to an Icon size token. */\r\nconst ICON_SIZE: Record<BadgeSize, keyof Theme['fontSize']> = {\r\n sm: 'xs',\r\n md: 'xs',\r\n lg: 'sm',\r\n}\r\n\r\n/** Maps badge size to a Text font-size token. */\r\nconst LABEL_FONT_SIZE: Record<BadgeSize, keyof Theme['fontSize']> = {\r\n sm: '2xs',\r\n md: 'xs',\r\n lg: 'sm',\r\n}\r\n\r\n/** Diameter of the dot indicator per size. */\r\nconst DOT_SIZE: Record<BadgeSize, string> = {\r\n sm: '0.375rem',\r\n md: '0.5rem',\r\n lg: '0.625rem',\r\n}\r\n\r\n/**\r\n * Compact label used to convey status, category or count information.\r\n *\r\n * @example <Badge color='success'>Active</Badge>\r\n * @example <Badge variant='outlined' color='error'>Critical</Badge>\r\n * @example <Badge variant='filled' color='primary' size='sm' startIcon={StarIcon}>Featured</Badge>\r\n * @example <Badge dot color='warning' />\r\n */\r\nconst Badge: FC<BadgeProps> = (\r\n {\r\n ref,\r\n variant = 'subtle',\r\n color = 'default',\r\n size = 'md',\r\n borderRadius = 'sm',\r\n startIcon: StartIcon,\r\n endIcon: EndIcon,\r\n icon,\r\n dot = false,\r\n children,\r\n className,\r\n style,\r\n ...rest\r\n }\r\n) => {\r\n const theme = useTheme()\r\n const rootClassName = BADGE_VARIANTS({ variant, color, size }, className)\r\n const resolvedBorderRadius = borderRadius ? theme.radius[borderRadius] : undefined\r\n const effectiveStartIcon = StartIcon ?? icon\r\n\r\n if (dot) {\r\n const dotStyle: CSSProperties = {\r\n width: DOT_SIZE[size],\r\n height: DOT_SIZE[size],\r\n minWidth: DOT_SIZE[size],\r\n padding: 0,\r\n border: 'none',\r\n borderRadius: resolvedBorderRadius ?? '9999px',\r\n }\r\n return (\r\n <span\r\n ref={ref}\r\n className={rootClassName}\r\n style={{ ...dotStyle, ...style }}\r\n aria-hidden={true}\r\n {...rest}\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <span\r\n ref={ref}\r\n className={rootClassName}\r\n style={{ ...(resolvedBorderRadius ? { borderRadius: resolvedBorderRadius } : {}), ...style }}\r\n {...rest}\r\n >\r\n {effectiveStartIcon && (\r\n <Icon\r\n icon={effectiveStartIcon}\r\n size={ICON_SIZE[size]}\r\n />\r\n )}\r\n\r\n {children !== undefined && children !== null && (\r\n <Text\r\n variant={'span'}\r\n fontSize={LABEL_FONT_SIZE[size]}\r\n fontWeight={'medium'}\r\n lineHeight={'none'}\r\n >\r\n {children}\r\n </Text>\r\n )}\r\n\r\n {EndIcon && (\r\n <Icon\r\n icon={EndIcon}\r\n size={ICON_SIZE[size]}\r\n />\r\n )}\r\n </span>\r\n )\r\n}\r\n\r\nBadge.displayName = 'Badge'\r\n\r\nexport default Badge\r\n","import { useCallback, useEffect, useRef, useState } from 'react'\r\nimport type { UseTooltipPositionOptions, UseTooltipPositionResult, TooltipPosition } from '@hooks/components/overlay/use-tooltip-position/useTooltipPosition.types'\r\nimport type { TooltipPlacement } from '@components/overlay/tooltip/Tooltip.props'\r\n\r\nconst VIEWPORT_MARGIN_PX = 8\r\nconst GAP_PX = 6\r\nconst FADE_IN_DELAY_MS = 10\r\n\r\n/**\r\n * Computes and continuously updates the `position: fixed` coordinates for a\r\n * tooltip bubble, clamping it to the viewport on all four sides.\r\n *\r\n * Positioning strategy (two-pass):\r\n * - First pass: mount the bubble at the preferred position.\r\n * - Second pass (rAF): read the actual rendered size and clamp all sides.\r\n *\r\n * Handles:\r\n * - All four placements: top, bottom, left, right.\r\n * - Screen-edge clamping so the tooltip never overflows any side.\r\n * - Fade-in animation (sets `isFadingIn` on next tick to trigger CSS transition).\r\n * - Mouse/focus event handlers for show/hide.\r\n */\r\nexport const useTooltipPosition = ({\r\n placement,\r\n}: UseTooltipPositionOptions): UseTooltipPositionResult => {\r\n const wrapperRef = useRef<HTMLDivElement>(null)\r\n const bubbleRef = useRef<HTMLDivElement>(null)\r\n const [isVisible, setIsVisible] = useState(false)\r\n const [isFadingIn, setIsFadingIn] = useState(false)\r\n const [position, setPosition] = useState<TooltipPosition>({ top: 0, left: 0 })\r\n const showTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n\r\n const computePosition = useCallback(\r\n (currentPlacement: TooltipPlacement = placement) => {\r\n const trigger = wrapperRef.current\r\n const bubble = bubbleRef.current\r\n if (!trigger) {return}\r\n\r\n const rect = trigger.getBoundingClientRect()\r\n const bubbleW = bubble?.offsetWidth ?? 0\r\n const bubbleH = bubble?.offsetHeight ?? 0\r\n\r\n let top = 0\r\n let left = 0\r\n\r\n switch (currentPlacement) {\r\n case 'top':\r\n top = rect.top - bubbleH - GAP_PX\r\n left = rect.left + rect.width / 2 - bubbleW / 2\r\n break\r\n case 'bottom':\r\n top = rect.bottom + GAP_PX\r\n left = rect.left + rect.width / 2 - bubbleW / 2\r\n break\r\n case 'left':\r\n top = rect.top + rect.height / 2 - bubbleH / 2\r\n left = rect.left - bubbleW - GAP_PX\r\n break\r\n case 'right':\r\n top = rect.top + rect.height / 2 - bubbleH / 2\r\n left = rect.right + GAP_PX\r\n break\r\n }\r\n\r\n // Clamp horizontally\r\n const maxLeft = window.innerWidth - bubbleW - VIEWPORT_MARGIN_PX\r\n left = Math.max(VIEWPORT_MARGIN_PX, Math.min(left, maxLeft))\r\n\r\n // Clamp vertically\r\n const maxTop = window.innerHeight - bubbleH - VIEWPORT_MARGIN_PX\r\n top = Math.max(VIEWPORT_MARGIN_PX, Math.min(top, maxTop))\r\n\r\n setPosition({ top, left })\r\n },\r\n [placement],\r\n )\r\n\r\n const show = useCallback(() => {\r\n setIsVisible(true)\r\n // Defer isFadingIn so the initial render (opacity 0) is committed first,\r\n // then the transition fires on the next paint.\r\n showTimerRef.current = setTimeout(() => {\r\n setIsFadingIn(true)\r\n requestAnimationFrame(() => computePosition())\r\n }, FADE_IN_DELAY_MS)\r\n }, [computePosition])\r\n\r\n const hide = useCallback(() => {\r\n if (showTimerRef.current !== null) {\r\n clearTimeout(showTimerRef.current)\r\n showTimerRef.current = null\r\n }\r\n setIsVisible(false)\r\n setIsFadingIn(false)\r\n }, [])\r\n\r\n // Re-compute on scroll or resize while visible\r\n useEffect(() => {\r\n if (!isVisible) {return}\r\n const handleUpdate = () => requestAnimationFrame(() => computePosition())\r\n window.addEventListener('scroll', handleUpdate, true)\r\n window.addEventListener('resize', handleUpdate)\r\n return () => {\r\n window.removeEventListener('scroll', handleUpdate, true)\r\n window.removeEventListener('resize', handleUpdate)\r\n }\r\n }, [isVisible, computePosition])\r\n\r\n // Second-pass: once the bubble mounts, recompute with actual dimensions\r\n useEffect(() => {\r\n if (isVisible && bubbleRef.current) {\r\n const id = requestAnimationFrame(() => computePosition())\r\n return () => cancelAnimationFrame(id)\r\n }\r\n }, [isVisible, computePosition])\r\n\r\n // Cleanup timers on unmount\r\n useEffect(() => {\r\n return () => {\r\n if (showTimerRef.current !== null) {clearTimeout(showTimerRef.current)}\r\n }\r\n }, [])\r\n\r\n return {\r\n wrapperRef,\r\n bubbleRef,\r\n isVisible,\r\n isFadingIn,\r\n position,\r\n handleMouseEnter: show,\r\n handleMouseLeave: hide,\r\n handleFocus: show,\r\n handleBlur: hide,\r\n handleClick: hide,\r\n }\r\n}\r\n","import { createStyles } from '@aurora-ds/theme'\r\nimport type { TooltipPlacement } from '@components/overlay/tooltip/Tooltip.props'\r\n\r\ntype TooltipBubbleStyleParams = {\r\n placement: TooltipPlacement\r\n isFadingIn: boolean\r\n width: number\r\n}\r\n\r\ntype CaretStyleParams = {\r\n placement: TooltipPlacement\r\n}\r\n\r\nexport const TOOLTIP_STYLES = createStyles((theme) => {\r\n const CARET_OUTER: Record<TooltipPlacement, object> = {\r\n top: { bottom: -6, left: '50%', transform: 'translateX(-50%)', borderLeft: '6px solid transparent', borderRight: '6px solid transparent', borderTop: `6px solid ${theme.colors.borderMain}` },\r\n bottom: { top: -6, left: '50%', transform: 'translateX(-50%)', borderLeft: '6px solid transparent', borderRight: '6px solid transparent', borderBottom: `6px solid ${theme.colors.borderMain}` },\r\n left: { right: -6, top: '50%', transform: 'translateY(-50%)', borderTop: '6px solid transparent', borderBottom: '6px solid transparent', borderLeft: `6px solid ${theme.colors.borderMain}` },\r\n right: { left: -6, top: '50%', transform: 'translateY(-50%)', borderTop: '6px solid transparent', borderBottom: '6px solid transparent', borderRight: `6px solid ${theme.colors.borderMain}` },\r\n }\r\n\r\n const CARET_INNER: Record<TooltipPlacement, object> = {\r\n top: { bottom: -5, left: '50%', transform: 'translateX(-50%)', borderLeft: '5px solid transparent', borderRight: '5px solid transparent', borderTop: `5px solid ${theme.colors.surfacePaper}` },\r\n bottom: { top: -5, left: '50%', transform: 'translateX(-50%)', borderLeft: '5px solid transparent', borderRight: '5px solid transparent', borderBottom: `5px solid ${theme.colors.surfacePaper}` },\r\n left: { right: -5, top: '50%', transform: 'translateY(-50%)', borderTop: '5px solid transparent', borderBottom: '5px solid transparent', borderLeft: `5px solid ${theme.colors.surfacePaper}` },\r\n right: { left: -5, top: '50%', transform: 'translateY(-50%)', borderTop: '5px solid transparent', borderBottom: '5px solid transparent', borderRight: `5px solid ${theme.colors.surfacePaper}` },\r\n }\r\n\r\n return {\r\n wrapper: {\r\n display: 'flex',\r\n width: '100%',\r\n },\r\n wrapperInline: {\r\n display: 'inline-flex',\r\n width: 'auto',\r\n },\r\n bubble: ({ isFadingIn, width }: TooltipBubbleStyleParams) => ({\r\n position: 'fixed' as const,\r\n opacity: isFadingIn ? 1 : 0,\r\n transform: `scale(${isFadingIn ? 1 : 0.95})`,\r\n transformOrigin: 'center',\r\n transition: `opacity ${theme.transition.fast}, transform ${theme.transition.fast}`,\r\n backgroundColor: theme.colors.surfacePaper,\r\n border: `1px solid ${theme.colors.borderMain}`,\r\n borderRadius: theme.radius.md,\r\n padding: theme.spacing.sm,\r\n // filter: drop-shadow follows the painted shape including CSS-triangle carets,\r\n // unlike box-shadow which is clipped to the rectangular border-box.\r\n filter: theme.shadows.dropSm,\r\n pointerEvents: 'none' as const,\r\n maxWidth: width,\r\n whiteSpace: 'normal' as const,\r\n wordBreak: 'break-word' as const,\r\n overflowWrap: 'break-word' as const,\r\n zIndex: theme.zIndex.tooltip,\r\n color: theme.colors.textPrimary,\r\n }),\r\n caretOuter: ({ placement }: CaretStyleParams) => ({\r\n position: 'absolute' as const,\r\n width: 0,\r\n height: 0,\r\n ...CARET_OUTER[placement],\r\n }),\r\n caretInner: ({ placement }: CaretStyleParams) => ({\r\n position: 'absolute' as const,\r\n width: 0,\r\n height: 0,\r\n ...CARET_INNER[placement],\r\n }),\r\n }\r\n})\r\n","import { cloneElement, isValidElement, useId, type FC, type MouseEvent as ReactMouseEvent } from 'react'\r\nimport { createPortal } from 'react-dom'\r\n\r\nimport { useTooltipPosition } from '@hooks/components/overlay/use-tooltip-position/useTooltipPosition'\r\nimport { TOOLTIP_STYLES } from '@components/overlay/tooltip/Tooltip.styles'\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { TooltipProps } from '@components/overlay/tooltip/Tooltip.props'\r\n\r\n/** Returns true when the primary input is a touch/pointer-coarse device (mobile). */\r\nconst isTouchDevice = (): boolean =>\r\n typeof window !== 'undefined' && window.matchMedia('(pointer: coarse)').matches\r\n\r\nconst DEFAULT_WIDTH = 200\r\n\r\n/**\r\n * Tooltip\r\n *\r\n * A hover/focus-triggered tooltip rendered in a portal to avoid clipping\r\n * by parent `overflow: hidden` containers. Computes its fixed position from\r\n * the trigger element's bounding rect and clamps it to the viewport on all sides.\r\n *\r\n * **Placements:** `top` | `bottom` | `left` | `right` (default)\r\n *\r\n * By default the tooltip is disabled on touch/mobile devices (`pointer: coarse`).\r\n * Set `disableOnMobile={false}` to keep it active on mobile (e.g. InfoBubble).\r\n *\r\n * @example\r\n * ```tsx\r\n * <Tooltip label=\"Save document\" placement=\"top\">\r\n * <Button>Save</Button>\r\n * </Tooltip>\r\n * ```\r\n */\r\nconst Tooltip: FC<TooltipProps> = ({\r\n children,\r\n label,\r\n placement = 'right',\r\n disabled = false,\r\n inline = false,\r\n withArrow = false,\r\n width = DEFAULT_WIDTH,\r\n hideOnClick = true,\r\n disableOnMobile = true,\r\n}) => {\r\n const tooltipId = useId()\r\n const isEffectivelyDisabled = disabled || (disableOnMobile && isTouchDevice())\r\n\r\n const {\r\n wrapperRef,\r\n bubbleRef,\r\n isVisible,\r\n isFadingIn,\r\n position,\r\n handleMouseEnter,\r\n handleMouseLeave,\r\n handleFocus,\r\n handleBlur,\r\n handleClick,\r\n } = useTooltipPosition({ placement })\r\n\r\n // Inject aria-describedby on the direct child so screen readers associate\r\n // the tooltip text with the focused trigger element. Also forward handleClick\r\n // on the child itself (instead of the wrapper div) to satisfy a11y rules.\r\n // The child's own onClick is preserved and composed with the tooltip handler.\r\n const childOnClick = isValidElement<{ onClick?: (event: ReactMouseEvent) => void }>(children)\r\n ? children.props.onClick\r\n : undefined\r\n\r\n const trigger = !isEffectivelyDisabled && isValidElement<Record<string, unknown>>(children)\r\n ? cloneElement(children, {\r\n 'aria-describedby': tooltipId,\r\n ...(hideOnClick && {\r\n onClick: (event: ReactMouseEvent) => {\r\n childOnClick?.(event)\r\n handleClick()\r\n },\r\n }),\r\n })\r\n : children\r\n\r\n return (\r\n <div\r\n ref={wrapperRef}\r\n className={inline ? TOOLTIP_STYLES.wrapperInline : TOOLTIP_STYLES.wrapper}\r\n onMouseEnter={isEffectivelyDisabled ? undefined : handleMouseEnter}\r\n onMouseLeave={isEffectivelyDisabled ? undefined : handleMouseLeave}\r\n onFocus={isEffectivelyDisabled ? undefined : handleFocus}\r\n onBlur={isEffectivelyDisabled ? undefined : handleBlur}\r\n >\r\n {trigger}\r\n {!isEffectivelyDisabled && isVisible && createPortal(\r\n <div\r\n ref={bubbleRef}\r\n id={tooltipId}\r\n className={TOOLTIP_STYLES.bubble({ placement, isFadingIn, width })}\r\n style={{ top: position.top, left: position.left }}\r\n role={'tooltip'}\r\n aria-live={'polite'}\r\n >\r\n <Text fontSize={'sm'}>\r\n {label}\r\n </Text>\r\n {withArrow && (\r\n <>\r\n <div className={TOOLTIP_STYLES.caretOuter({ placement })} />\r\n <div className={TOOLTIP_STYLES.caretInner({ placement })} />\r\n </>\r\n )}\r\n </div>,\r\n document.body,\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nTooltip.displayName = 'Tooltip'\r\n\r\nexport default Tooltip\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const INFO_BUBBLE_STYLES = createStyles((theme) => ({\r\n trigger: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n cursor: 'pointer',\r\n // Ensure the icon is keyboard-focusable and shows focus ring\r\n outline: 'none',\r\n border: 'none',\r\n aspectRatio: '1 !important',\r\n flexShrink: 0,\r\n backgroundColor: 'transparent',\r\n margin: 0,\r\n padding: theme.spacing.xs,\r\n ':focus-visible': getFocusRingStyles(theme),\r\n },\r\n}))\r\n","import { type FC } from 'react'\r\nimport { Tooltip } from '@components/overlay/tooltip'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { INFO_BUBBLE_STYLES } from '@components/data-display/info-bubble/InfoBubble.styles'\r\nimport { IconRegistry } from '@resources/Icons'\r\n\r\nimport type { InfoBubbleProps } from '@components/data-display/info-bubble/InfoBubble.props'\r\n\r\n/**\r\n * InfoBubble\r\n *\r\n * An info icon with an attached tooltip. Unlike the regular `Tooltip`, the\r\n * tooltip is **not** disabled on mobile — users can tap the icon to read the\r\n * information on touch devices.\r\n *\r\n * @example\r\n * ```tsx\r\n * <InfoBubble label=\"This field is required for compliance.\" />\r\n * ```\r\n *\r\n * @example\r\n * ```tsx\r\n * <InfoBubble label=\"Detailed explanation\" placement=\"right\" withArrow={false} />\r\n * ```\r\n */\r\nconst InfoBubble: FC<InfoBubbleProps> = ({\r\n label,\r\n placement = 'top',\r\n width = 200,\r\n withArrow = true,\r\n}) => {\r\n return (\r\n <Tooltip\r\n label={label}\r\n placement={placement}\r\n width={width}\r\n withArrow={withArrow}\r\n inline={true}\r\n hideOnClick={false}\r\n disableOnMobile={false}\r\n >\r\n <button\r\n type={'button'}\r\n className={INFO_BUBBLE_STYLES.trigger}\r\n aria-label={label}\r\n tabIndex={0}\r\n >\r\n <Icon\r\n icon={IconRegistry.AlertInfoIcon}\r\n size={'sm'}\r\n strokeColor={'textSecondary'}\r\n />\r\n </button>\r\n </Tooltip>\r\n )\r\n}\r\n\r\nInfoBubble.displayName = 'InfoBubble'\r\n\r\nexport default InfoBubble\r\n","import { createContext, type ReactNode } from 'react'\r\n\r\nimport type { TableColumn } from '@components/data-display/table/table.types'\r\n\r\nexport type TableContextValue = {\r\n /** Column definitions driving the `<colgroup>` and skeleton/empty rendering. */\r\n columns: TableColumn[]\r\n /** Number of columns — derived from `columns`, falls back to `1`. */\r\n columnCount: number\r\n /** Alternate background on even body rows. */\r\n striped: boolean\r\n /** Highlight body rows on hover. */\r\n hoverable: boolean\r\n /** Whether the header cells stick to the top while scrolling. */\r\n stickyHeader: boolean\r\n /** Whether the body should render its loading skeleton. */\r\n loading: boolean\r\n /** Number of skeleton rows rendered while loading. */\r\n loadingRows: number\r\n /** Whether the body should render its empty placeholder. */\r\n isEmpty: boolean\r\n /** Content shown when `isEmpty` is true. */\r\n emptyContent: ReactNode\r\n}\r\n\r\nexport const TableContext = createContext<TableContextValue | null>(null)\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { TableLayout } from '@components/data-display/table/table.types'\r\nimport type { CSSProperties } from 'react'\r\n\r\ntype TableStyleParams = {\r\n bordered: boolean\r\n layout: TableLayout\r\n maxHeight?: CSSProperties['maxHeight']\r\n}\r\n\r\nexport const TABLE_STYLES = createStyles((theme) => ({\r\n /**\r\n * Scroll container — enables overflow and the optional border.\r\n * When `maxHeight` is set it becomes the vertical scroller, which is what\r\n * makes the `stickyHeader` cells stick.\r\n */\r\n wrapper: ({ bordered, maxHeight }: TableStyleParams) => ({\r\n width: '100%',\r\n overflow: 'auto' as const,\r\n boxSizing: 'border-box' as const,\r\n ...(maxHeight != null ? { maxHeight } : {}),\r\n ...(bordered\r\n ? {\r\n border: `1px solid ${theme.colors.borderMain}`,\r\n borderRadius: theme.radius.lg,\r\n }\r\n : {}),\r\n }),\r\n /** The table element itself. `fixed` layout makes `<colgroup>` widths authoritative. */\r\n table: ({ layout }: TableStyleParams) => ({\r\n width: '100%',\r\n borderCollapse: 'collapse' as const,\r\n borderSpacing: 0,\r\n tableLayout: layout,\r\n fontFamily: 'inherit',\r\n color: theme.colors.textPrimary,\r\n }),\r\n}))\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\ntype TableBodyStyleParams = {\r\n striped: boolean\r\n hoverable: boolean\r\n}\r\n\r\nexport const TABLE_BODY_STYLES = createStyles((theme) => ({\r\n /**\r\n * Row visual states are scoped here through descendant selectors so individual\r\n * `Table.Row`s stay simple passthroughs and striping uses native `:nth-of-type`.\r\n *\r\n * Keys MUST start with `&` — the theme engine only treats `&`/`:`/`@` keys as\r\n * selectors and silently ignores bare element selectors (e.g. `'tr'`).\r\n *\r\n * Order matters: stripe → selected → hover (last wins on equal specificity).\r\n */\r\n root: ({ striped, hoverable }: TableBodyStyleParams) => ({\r\n '& tr': {\r\n transition: `background-color ${theme.transition.fast}`,\r\n },\r\n ...(striped\r\n ? { '& tr:nth-of-type(even)': { backgroundColor: theme.colors.surfaceElevated } }\r\n : {}),\r\n '& tr[aria-selected=\"true\"]': { backgroundColor: theme.colors.primarySubtle },\r\n ...(hoverable\r\n ? { '& tr:hover': { backgroundColor: theme.colors.primarySubtleHover } }\r\n : {}),\r\n }),\r\n /** Centered placeholder cell spanning the whole row width. */\r\n emptyCell: {\r\n textAlign: 'center' as const,\r\n padding: `${theme.spacing.xl} ${theme.spacing.md}`,\r\n color: theme.colors.textSecondary,\r\n fontSize: theme.fontSize.sm,\r\n },\r\n}))\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { TableAlign } from '@components/data-display/table/table.types'\r\n\r\nexport type TableCellStyleParams = {\r\n align: TableAlign\r\n}\r\n\r\nexport const TABLE_CELL_STYLES = createStyles((theme) => ({\r\n root: ({ align }: TableCellStyleParams) => ({\r\n boxSizing: 'border-box' as const,\r\n padding: `${theme.spacing.sm} ${theme.spacing.smPlus}`,\r\n textAlign: align,\r\n verticalAlign: 'middle' as const,\r\n color: theme.colors.textPrimary,\r\n fontSize: theme.fontSize.sm,\r\n lineHeight: theme.lineHeight.normal,\r\n borderBottom: `1px solid ${theme.colors.borderSubtle}`,\r\n overflowWrap: 'break-word' as const,\r\n }),\r\n}))\r\n","import { useContext } from 'react'\r\n\r\nimport { TableContext, type TableContextValue } from '@components/data-display/table/Table.context'\r\n\r\n/**\r\n * Internal hook — consumes the Table context and throws if used outside a `<Table>` provider.\r\n * @internal\r\n */\r\nexport const useTableContext = (): TableContextValue => {\r\n const ctx = useContext(TableContext)\r\n if (!ctx) {\r\n throw new Error('This component must be used inside a <Table> provider.')\r\n }\r\n return ctx\r\n}\r\n","import { TABLE_CELL_STYLES } from '@components/data-display/table/table-cell/TableCell.styles'\r\nimport { useTableContext } from '@components/data-display/table/useTableContext'\r\n\r\nimport type { TableCellProps } from '@components/data-display/table/table-cell/TableCell.props'\r\nimport type { FC } from 'react'\r\n\r\n/** `<td>` data cell. */\r\nconst TableCell: FC<TableCellProps> = ({ ref, children, align = 'left', style, ...rest }) => {\r\n useTableContext()\r\n\r\n return (\r\n <td\r\n ref={ref}\r\n className={TABLE_CELL_STYLES.root({ align })}\r\n style={style}\r\n {...rest}\r\n >\r\n {children}\r\n </td>\r\n )\r\n}\r\n\r\nTableCell.displayName = 'Table.Cell'\r\n\r\nexport default TableCell\r\n","import type { FC } from 'react'\r\n\r\nimport type { TableRowProps } from '@components/data-display/table/table-row/TableRow.props'\r\n\r\n/**\r\n * `<tr>` wrapper for the compound Table.\r\n * Striping and hover styling are handled by the parent `Table.Body`.\r\n */\r\nconst TableRow: FC<TableRowProps> = ({ ref, children, selected, ...rest }) => (\r\n <tr\r\n ref={ref}\r\n aria-selected={selected ? true : undefined}\r\n {...rest}\r\n >\r\n {children}\r\n </tr>\r\n)\r\n\r\nTableRow.displayName = 'Table.Row'\r\n\r\nexport default TableRow\r\n","import { createVariants } from '@aurora-ds/theme'\r\n\r\nimport { skeletonShimmerAnimation } from '@constants/animation.constants'\r\n\r\nexport const SKELETON_VARIANTS = createVariants((theme) => ({\r\n base: {\r\n display: 'block',\r\n boxSizing: 'border-box',\r\n backgroundColor: theme.colors.skeletonPrimary,\r\n overflow: 'hidden',\r\n },\r\n variants: {\r\n variant: {\r\n /** Inline-text placeholder: em-relative height, slight vertical scale. */\r\n text: {\r\n borderRadius: theme.radius.sm,\r\n height: '1em',\r\n transform: 'scale(1, 0.6)',\r\n transformOrigin: '0 60%',\r\n width: '100%',\r\n },\r\n /** Fully rounded placeholder for avatars and icons. */\r\n circular: {\r\n borderRadius: theme.radius.full,\r\n },\r\n /** Sharp-cornered placeholder for images and media blocks. */\r\n rectangular: {\r\n borderRadius: '0',\r\n },\r\n /** Softly rounded placeholder for cards and chips. */\r\n rounded: {\r\n borderRadius: theme.radius.md,\r\n },\r\n },\r\n animation: {\r\n /** Sliding gradient highlight from right to left. */\r\n shimmer: {\r\n background: `linear-gradient(90deg, ${theme.colors.skeletonPrimary} 25%, ${theme.colors.skeletonSecondary} 50%, ${theme.colors.skeletonPrimary} 75%)`,\r\n backgroundSize: '400% 100%',\r\n animation: `${skeletonShimmerAnimation} 2.5s linear infinite`,\r\n '@media (prefers-reduced-motion: reduce)': { animation: 'none' },\r\n },\r\n /** No animation. */\r\n none: {},\r\n },\r\n },\r\n defaultVariants: { variant: 'rounded', animation: 'shimmer' },\r\n}), { id: 'skeleton' })\r\n","import { SKELETON_VARIANTS } from '@components/foundation/skeleton/Skeleton.styles'\r\n\r\nimport type { SkeletonProps } from '@components/foundation/skeleton/Skeleton.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Block-level placeholder rendered while content is loading.\r\n *\r\n * @example // Text line\r\n * <Skeleton variant='text' width={200} />\r\n *\r\n * @example // Avatar\r\n * <Skeleton variant='circular' width={40} height={40} />\r\n *\r\n * @example // Card thumbnail\r\n * <Skeleton variant='rounded' width='100%' height={160} />\r\n *\r\n * @example // No animation\r\n * <Skeleton variant='rectangular' width='100%' height={80} animation={false} />\r\n */\r\nconst Skeleton: FC<SkeletonProps> = (\r\n {\r\n ref,\r\n variant = 'rectangular',\r\n animation = 'shimmer',\r\n width,\r\n height,\r\n className,\r\n style,\r\n ...rest\r\n }\r\n) => (\r\n <span\r\n ref={ref}\r\n className={SKELETON_VARIANTS(\r\n { variant, animation: animation === false ? 'none' : animation },\r\n className,\r\n )}\r\n style={{ width, height, ...style }}\r\n aria-hidden={true}\r\n {...rest}\r\n />\r\n)\r\n\r\nSkeleton.displayName = 'Skeleton'\r\n\r\nexport default Skeleton\r\n","import { TABLE_BODY_STYLES } from '@components/data-display/table/table-body/TableBody.styles'\r\nimport TableCell from '@components/data-display/table/table-cell/TableCell'\r\nimport TableRow from '@components/data-display/table/table-row/TableRow'\r\nimport { useTableContext } from '@components/data-display/table/useTableContext'\r\nimport { Skeleton } from '@components/foundation/skeleton'\r\n\r\nimport type { TableBodyProps } from '@components/data-display/table/table-body/TableBody.props'\r\nimport type { TableColumn } from '@components/data-display/table/table.types'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * `<tbody>` for the compound Table. Handles three states based on the parent\r\n * `Table` context: `loading` (skeleton rows), `isEmpty` (placeholder), or data.\r\n */\r\nconst TableBody: FC<TableBodyProps> = ({ children }) => {\r\n const {\r\n columns,\r\n columnCount,\r\n loading,\r\n loadingRows,\r\n isEmpty,\r\n emptyContent,\r\n striped,\r\n hoverable,\r\n } = useTableContext()\r\n\r\n const className = TABLE_BODY_STYLES.root({ striped, hoverable })\r\n\r\n if (loading) {\r\n // Each skeleton fills its column width (driven by the <colgroup>),\r\n // so the placeholder always matches the real column sizing.\r\n const skeletonColumns: TableColumn[] =\r\n columns.length > 0 ? columns : Array.from({ length: columnCount }, () => ({}))\r\n\r\n return (\r\n <tbody className={className}>\r\n {Array.from({ length: loadingRows }, (_, rowIndex) => (\r\n <TableRow key={`skeleton-row-${rowIndex}`}>\r\n {skeletonColumns.map((column, cellIndex) => (\r\n <TableCell\r\n key={`skeleton-cell-${cellIndex}`}\r\n align={column.align ?? 'left'}\r\n >\r\n <Skeleton\r\n variant={'text'}\r\n width={'100%'}\r\n />\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n ))}\r\n </tbody>\r\n )\r\n }\r\n\r\n if (isEmpty) {\r\n return (\r\n <tbody className={className}>\r\n <tr>\r\n <td\r\n colSpan={columnCount}\r\n className={TABLE_BODY_STYLES.emptyCell}\r\n >\r\n {emptyContent}\r\n </td>\r\n </tr>\r\n </tbody>\r\n )\r\n }\r\n\r\n return <tbody className={className}>\r\n {children}\r\n </tbody>\r\n}\r\n\r\nTableBody.displayName = 'Table.Body'\r\n\r\nexport default TableBody\r\n","import type { FC } from 'react'\r\n\r\nimport type { TableFootProps } from '@components/data-display/table/table-foot/TableFoot.props'\r\n\r\n/** `<tfoot>` wrapper for the compound Table. */\r\nconst TableFoot: FC<TableFootProps> = ({ children }) => (\r\n <tfoot>\r\n {children}\r\n </tfoot>\r\n)\r\n\r\nTableFoot.displayName = 'Table.Foot'\r\n\r\nexport default TableFoot\r\n","import type { FC } from 'react'\r\n\r\nimport type { TableHeadProps } from '@components/data-display/table/table-head/TableHead.props'\r\n\r\n/** `<thead>` wrapper for the compound Table. */\r\nconst TableHead: FC<TableHeadProps> = ({ children }) => (\r\n <thead>\r\n {children}\r\n </thead>\r\n)\r\n\r\nTableHead.displayName = 'Table.Head'\r\n\r\nexport default TableHead\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { TableAlign } from '@components/data-display/table/table.types'\r\n\r\nexport type TableHeaderCellStyleParams = {\r\n align: TableAlign\r\n sticky: boolean\r\n}\r\n\r\nexport const TABLE_HEADER_CELL_STYLES = createStyles((theme) => ({\r\n root: ({ align, sticky }: TableHeaderCellStyleParams) => ({\r\n boxSizing: 'border-box' as const,\r\n padding: `${theme.spacing.sm} ${theme.spacing.smPlus}`,\r\n textAlign: align,\r\n verticalAlign: 'middle' as const,\r\n color: theme.colors.textSecondary,\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.semibold,\r\n lineHeight: theme.lineHeight.normal,\r\n backgroundColor: theme.colors.surfaceElevated,\r\n borderBottom: `1px solid ${theme.colors.borderStrong}`,\r\n ...(sticky\r\n ? {\r\n position: 'sticky' as const,\r\n top: 0,\r\n zIndex: 1,\r\n boxShadow: `inset 0 -1px 0 0 ${theme.colors.borderStrong}`,\r\n }\r\n : {}),\r\n }),\r\n}))\r\n","import { TABLE_HEADER_CELL_STYLES } from '@components/data-display/table/table-header-cell/TableHeaderCell.styles'\r\nimport { useTableContext } from '@components/data-display/table/useTableContext'\r\n\r\nimport type { TableHeaderCellProps } from '@components/data-display/table/table-header-cell/TableHeaderCell.props'\r\nimport type { FC } from 'react'\r\n\r\n/** `<th>` header cell — defaults to `scope=\"col\"` for accessible column association. */\r\nconst TableHeaderCell: FC<TableHeaderCellProps> = ({\r\n ref,\r\n children,\r\n align = 'left',\r\n scope = 'col',\r\n sortDirection,\r\n style,\r\n ...rest\r\n}) => {\r\n const { stickyHeader } = useTableContext()\r\n\r\n return (\r\n <th\r\n ref={ref}\r\n scope={scope}\r\n aria-sort={sortDirection}\r\n className={TABLE_HEADER_CELL_STYLES.root({ align, sticky: stickyHeader })}\r\n style={style}\r\n {...rest}\r\n >\r\n {children}\r\n </th>\r\n )\r\n}\r\n\r\nTableHeaderCell.displayName = 'Table.HeaderCell'\r\n\r\nexport default TableHeaderCell\r\n","import { useMemo, type FC } from 'react'\r\n\r\nimport { TableContext, type TableContextValue } from '@components/data-display/table/Table.context'\r\nimport { TABLE_STYLES } from '@components/data-display/table/Table.styles'\r\nimport TableBody from '@components/data-display/table/table-body/TableBody'\r\nimport TableCell from '@components/data-display/table/table-cell/TableCell'\r\nimport TableFoot from '@components/data-display/table/table-foot/TableFoot'\r\nimport TableHead from '@components/data-display/table/table-head/TableHead'\r\nimport TableHeaderCell from '@components/data-display/table/table-header-cell/TableHeaderCell'\r\nimport TableRow from '@components/data-display/table/table-row/TableRow'\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { TableProps } from '@components/data-display/table/Table.props'\r\nimport type { TableBodyProps } from '@components/data-display/table/table-body/TableBody.props'\r\nimport type { TableCellProps } from '@components/data-display/table/table-cell/TableCell.props'\r\nimport type { TableFootProps } from '@components/data-display/table/table-foot/TableFoot.props'\r\nimport type { TableHeadProps } from '@components/data-display/table/table-head/TableHead.props'\r\nimport type { TableHeaderCellProps } from '@components/data-display/table/table-header-cell/TableHeaderCell.props'\r\nimport type { TableRowProps } from '@components/data-display/table/table-row/TableRow.props'\r\n\r\n/** Compound component type — `Table` plus its statically attached sub-components. */\r\nexport type TableComponent = FC<TableProps> & {\r\n Head: FC<TableHeadProps>\r\n Body: FC<TableBodyProps>\r\n Foot: FC<TableFootProps>\r\n Row: FC<TableRowProps>\r\n HeaderCell: FC<TableHeaderCellProps>\r\n Cell: FC<TableCellProps>\r\n}\r\n\r\n/**\r\n * Accessible data table built with a compound component API.\r\n *\r\n * Column widths are configured **once** through the `columns` prop, rendered as a\r\n * native `<colgroup>`. Combined with the default `layout=\"fixed\"`, this is the\r\n * simplest and most robust way to control column sizing.\r\n *\r\n * ```tsx\r\n * <Table\r\n * caption={'Team members'}\r\n * columns={[{ width: '40%' }, { width: 160 }, { width: 'auto', align: 'right' }]}\r\n * loading={isLoading}\r\n * isEmpty={!isLoading && rows.length === 0}\r\n * striped\r\n * hoverable\r\n * >\r\n * <Table.Head>\r\n * <Table.Row>\r\n * <Table.HeaderCell>Name</Table.HeaderCell>\r\n * <Table.HeaderCell>Role</Table.HeaderCell>\r\n * <Table.HeaderCell align={'right'}>Actions</Table.HeaderCell>\r\n * </Table.Row>\r\n * </Table.Head>\r\n * <Table.Body>\r\n * {rows.map((row) => (\r\n * <Table.Row key={row.id}>\r\n * <Table.Cell>{row.name}</Table.Cell>\r\n * <Table.Cell>{row.role}</Table.Cell>\r\n * <Table.Cell align={'right'}>…</Table.Cell>\r\n * </Table.Row>\r\n * ))}\r\n * </Table.Body>\r\n * </Table>\r\n * ```\r\n *\r\n * - `loading` swaps the body for skeleton rows sized to each column.\r\n * - `isEmpty` shows a centered placeholder spanning all columns.\r\n * - Sets `aria-busy` while loading; pair with a visible `caption` or `ariaLabel`.\r\n */\r\nconst TableBase: FC<TableProps> = ({\r\n children,\r\n columns = [],\r\n layout = 'fixed',\r\n striped = false,\r\n hoverable = false,\r\n bordered = false,\r\n stickyHeader = false,\r\n maxHeight,\r\n loading = false,\r\n loadingRows = 3,\r\n isEmpty = false,\r\n emptyContent,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n id,\r\n}) => {\r\n const columnCount = columns.length || 1\r\n\r\n const resolvedEmptyContent = emptyContent ?? (\r\n <Text\r\n variant={'span'}\r\n color={'textSecondary'}\r\n fontSize={'sm'}\r\n >\r\n No data available\r\n </Text>\r\n )\r\n\r\n const contextValue = useMemo<TableContextValue>(\r\n () => ({\r\n columns,\r\n columnCount,\r\n striped,\r\n hoverable,\r\n stickyHeader,\r\n loading,\r\n loadingRows,\r\n isEmpty,\r\n emptyContent: resolvedEmptyContent,\r\n }),\r\n [\r\n columns,\r\n columnCount,\r\n striped,\r\n hoverable,\r\n stickyHeader,\r\n loading,\r\n loadingRows,\r\n isEmpty,\r\n resolvedEmptyContent,\r\n ],\r\n )\r\n\r\n return (\r\n <TableContext.Provider value={contextValue}>\r\n <div className={TABLE_STYLES.wrapper({ bordered, layout, maxHeight })}>\r\n <table\r\n id={id}\r\n className={TABLE_STYLES.table({ bordered, layout, maxHeight })}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-busy={loading || undefined}\r\n >\r\n\r\n {columns.length > 0 && (\r\n <colgroup>\r\n {columns.map((column, index) => (\r\n <col\r\n\r\n key={index}\r\n style={{\r\n width: column.width,\r\n minWidth: column.minWidth,\r\n maxWidth: column.maxWidth,\r\n }}\r\n />\r\n ))}\r\n </colgroup>\r\n )}\r\n\r\n {children}\r\n </table>\r\n </div>\r\n </TableContext.Provider>\r\n )\r\n}\r\n\r\nTableBase.displayName = 'Table'\r\n\r\nconst Table = TableBase as TableComponent\r\nTable.Head = TableHead\r\nTable.Body = TableBody\r\nTable.Foot = TableFoot\r\nTable.Row = TableRow\r\nTable.HeaderCell = TableHeaderCell\r\nTable.Cell = TableCell\r\n\r\nexport default Table\r\n","import type { CSSProperties } from 'react'\r\n\r\n/** Inline styles reserved for native HTML elements that have no DS equivalent. */\r\nexport const DEFAULT_ERROR_FALLBACK_STYLES: Record<string, CSSProperties> = {\r\n /** Left-aligned details block with a max-width so the pre doesn't stretch too wide. */\r\n details: {\r\n textAlign: 'left',\r\n maxWidth: 600,\r\n width: '100%',\r\n },\r\n /** Monospace error dump inside the collapsible section. */\r\n pre: {\r\n fontFamily: 'monospace',\r\n fontSize: 12,\r\n opacity: 0.6,\r\n whiteSpace: 'pre-wrap',\r\n margin: '8px 0 0',\r\n },\r\n}\r\n","import type { BoxStyleProps } from '@components/layout/box/Box.props'\r\n\r\n/**\r\n * All keys belonging to `BoxStyleProps`.\r\n * Used at runtime to split a props object into style props and native HTML attributes.\r\n */\r\nconst BOX_STYLE_PROP_KEYS: ReadonlySet<string> = new Set<keyof BoxStyleProps>([\r\n // Display\r\n 'display',\r\n // Dimensions\r\n 'width', 'height', 'minWidth', 'maxWidth', 'minHeight', 'maxHeight',\r\n // Padding\r\n 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'px', 'py',\r\n // Margin\r\n 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'mx', 'my',\r\n // Flex / grid container\r\n 'gap', 'rowGap', 'columnGap',\r\n 'flexDirection', 'flexWrap', 'alignItems', 'justifyContent',\r\n 'gridTemplateColumns', 'gridTemplateRows',\r\n // Flex / grid item\r\n 'flex', 'flexGrow', 'flexShrink', 'flexBasis',\r\n 'alignSelf', 'justifySelf', 'gridColumn', 'gridRow', 'order',\r\n // Position\r\n 'position', 'top', 'right', 'bottom', 'left', 'inset', 'zIndex',\r\n // Overflow\r\n 'overflow', 'overflowX', 'overflowY',\r\n // Appearance\r\n 'backgroundColor', 'color', 'borderRadius', 'boxShadow',\r\n 'border', 'borderColor', 'borderWidth', 'borderStyle',\r\n 'textAlign', 'cursor', 'opacity',\r\n])\r\n\r\n/**\r\n * Splits a combined props object into `BoxStyleProps` and the remaining native\r\n * HTML attributes so that semantic layout components (Article, Aside, …) can\r\n * forward only the style props to `BOX_STYLES.root()` without manually\r\n * destructuring every single prop.\r\n *\r\n * @example\r\n * const { styleProps, restProps } = extractBoxStyleProps(props)\r\n * const className = BOX_STYLES.root(styleProps)\r\n * return <article className={cx(className, ownClassName)} {...restProps} />\r\n */\r\nexport const extractBoxStyleProps = <T extends Record<string, unknown>>(\r\n props: T,\r\n): { styleProps: BoxStyleProps; restProps: Omit<T, keyof BoxStyleProps> } => {\r\n const styleProps: Partial<BoxStyleProps> = {}\r\n const restProps: Record<string, unknown> = {}\r\n\r\n for (const key of Object.keys(props)) {\r\n if (BOX_STYLE_PROP_KEYS.has(key)) {\r\n (styleProps as Record<string, unknown>)[key] = props[key]\r\n } else {\r\n restProps[key] = props[key]\r\n }\r\n }\r\n\r\n return {\r\n styleProps: styleProps as BoxStyleProps,\r\n restProps: restProps as Omit<T, keyof BoxStyleProps>,\r\n }\r\n}\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { BoxStyleProps } from '@components/layout/box/Box.props'\r\n\r\nexport const BOX_STYLES = createStyles((theme) => ({\r\n root: ({\r\n // Display\r\n display,\r\n // Dimensions\r\n width, height, minWidth, maxWidth, minHeight, maxHeight,\r\n // Padding\r\n padding, paddingTop, paddingRight, paddingBottom, paddingLeft, px, py,\r\n // Margin\r\n margin, marginTop, marginRight, marginBottom, marginLeft, mx, my,\r\n // Flex / grid container\r\n gap, rowGap, columnGap,\r\n flexDirection, flexWrap, alignItems, justifyContent,\r\n gridTemplateColumns, gridTemplateRows,\r\n // Flex / grid item\r\n flex, flexGrow, flexShrink, flexBasis,\r\n alignSelf, justifySelf, gridColumn, gridRow, order,\r\n // Position\r\n position, top, right, bottom, left, inset, zIndex,\r\n // Overflow\r\n overflow, overflowX, overflowY,\r\n // Appearance\r\n backgroundColor, color, borderRadius, boxShadow,\r\n border, borderColor, borderWidth, borderStyle, textAlign, cursor, opacity,\r\n }: BoxStyleProps) => {\r\n // Local casts: our token types are structurally identical to the aurora theme sub-objects.\r\n const sp = theme.spacing as Record<keyof Theme['spacing'], string>\r\n const cl = theme.colors as Record<keyof Theme['colors'], string>\r\n const rd = theme.radius as Record<keyof Theme['radius'], string>\r\n const sh = theme.shadows as Record<keyof Theme['shadows'], string>\r\n const zi = theme.zIndex as Record<keyof Theme['zIndex'], number>\r\n\r\n return {\r\n boxSizing: 'border-box' as const,\r\n\r\n // Display\r\n ...(display !== undefined && { display }),\r\n\r\n // Dimensions\r\n ...(width !== undefined && { width }),\r\n ...(height !== undefined && { height }),\r\n ...(minWidth !== undefined && { minWidth }),\r\n ...(maxWidth !== undefined && { maxWidth }),\r\n ...(minHeight !== undefined && { minHeight }),\r\n ...(maxHeight !== undefined && { maxHeight }),\r\n\r\n // Padding — shorthands first, explicit per-side props override (last key wins).\r\n ...(px !== undefined && { paddingLeft: sp[px], paddingRight: sp[px] }),\r\n ...(py !== undefined && { paddingTop: sp[py], paddingBottom: sp[py] }),\r\n ...(padding !== undefined && { padding: sp[padding] }),\r\n ...(paddingTop !== undefined && { paddingTop: sp[paddingTop] }),\r\n ...(paddingRight !== undefined && { paddingRight: sp[paddingRight] }),\r\n ...(paddingBottom !== undefined && { paddingBottom: sp[paddingBottom] }),\r\n ...(paddingLeft !== undefined && { paddingLeft: sp[paddingLeft] }),\r\n\r\n // Margin\r\n ...(mx !== undefined && { marginLeft: sp[mx], marginRight: sp[mx] }),\r\n ...(my !== undefined && { marginTop: sp[my], marginBottom: sp[my] }),\r\n ...(margin !== undefined && { margin: sp[margin] }),\r\n ...(marginTop !== undefined && { marginTop: sp[marginTop] }),\r\n ...(marginRight !== undefined && { marginRight: sp[marginRight] }),\r\n ...(marginBottom !== undefined && { marginBottom: sp[marginBottom] }),\r\n ...(marginLeft !== undefined && { marginLeft: sp[marginLeft] }),\r\n\r\n // Flex / grid container\r\n ...(gap !== undefined && { gap: sp[gap] }),\r\n ...(rowGap !== undefined && { rowGap: sp[rowGap] }),\r\n ...(columnGap !== undefined && { columnGap: sp[columnGap] }),\r\n ...(flexDirection !== undefined && { flexDirection }),\r\n ...(flexWrap !== undefined && { flexWrap }),\r\n ...(alignItems !== undefined && { alignItems }),\r\n ...(justifyContent !== undefined && { justifyContent }),\r\n ...(gridTemplateColumns !== undefined && { gridTemplateColumns }),\r\n ...(gridTemplateRows !== undefined && { gridTemplateRows }),\r\n\r\n // Flex / grid item\r\n ...(flex !== undefined && { flex }),\r\n ...(flexGrow !== undefined && { flexGrow }),\r\n ...(flexShrink !== undefined && { flexShrink }),\r\n ...(flexBasis !== undefined && { flexBasis }),\r\n ...(alignSelf !== undefined && { alignSelf }),\r\n ...(justifySelf !== undefined && { justifySelf }),\r\n ...(gridColumn !== undefined && { gridColumn }),\r\n ...(gridRow !== undefined && { gridRow }),\r\n ...(order !== undefined && { order }),\r\n\r\n // Position\r\n ...(position !== undefined && { position }),\r\n ...(top !== undefined && { top }),\r\n ...(right !== undefined && { right }),\r\n ...(bottom !== undefined && { bottom }),\r\n ...(left !== undefined && { left }),\r\n ...(inset !== undefined && { inset }),\r\n ...(zIndex !== undefined && { zIndex: zi[zIndex] }),\r\n\r\n // Overflow\r\n ...(overflow !== undefined && { overflow }),\r\n ...(overflowX !== undefined && { overflowX }),\r\n ...(overflowY !== undefined && { overflowY }),\r\n\r\n // Appearance\r\n ...(backgroundColor !== undefined && { backgroundColor: cl[backgroundColor] }),\r\n ...(color !== undefined && { color: cl[color] }),\r\n ...(borderRadius !== undefined && { borderRadius: rd[borderRadius] }),\r\n ...(boxShadow !== undefined && { boxShadow: sh[boxShadow] }),\r\n ...(border !== undefined && { border }),\r\n ...(borderColor !== undefined && { borderColor: cl[borderColor] }),\r\n ...(borderWidth !== undefined && { borderWidth }),\r\n ...(borderStyle !== undefined && { borderStyle }),\r\n ...(textAlign !== undefined && { textAlign }),\r\n ...(cursor !== undefined && { cursor }),\r\n ...(opacity !== undefined && { opacity }),\r\n }\r\n },\r\n}))\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\n\r\nimport type { BoxProps } from '@components/layout/box/Box.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * A plain `div` enriched with convenient, token-aware style props.\r\n *\r\n * Spacing / color / radius / shadow / z-index props accept theme tokens only\r\n * (e.g. `padding='md'`, `backgroundColor='surfacePaper'`).\r\n * Dimensions and position offsets accept any CSS value.\r\n * All native `div` attributes are forwarded, and `ref` points to the element.\r\n *\r\n * @example <Box padding='md' backgroundColor='surfacePaper' borderRadius='lg'>Content</Box>\r\n * @example <Box display='flex' gap='sm' alignItems='center'>…</Box>\r\n */\r\nconst Box: FC<BoxProps> = ({ ref, style, className, children, ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps(props)\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nBox.displayName = 'Box'\r\n\r\nexport default Box\r\n","import { Box } from '@components/layout/box'\r\n\r\nimport type { StackProps } from '@components/layout/stack/Stack.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * A flex `Box` for laying out children along a single axis.\r\n *\r\n * Defaults to `display: flex` and a vertical (`column`) direction. Every\r\n * `Box` style prop is available (`gap`, `alignItems`, `justifyContent`, …),\r\n * and `display` can still be overridden (e.g. `'inline-flex'`).\r\n *\r\n * @example <Stack gap='sm'>…</Stack>\r\n * @example <Stack flexDirection='row' gap='md' alignItems='center' justifyContent='space-between'>…</Stack>\r\n */\r\nconst Stack: FC<StackProps> = (\r\n {\r\n flexDirection = 'row',\r\n display = 'flex',\r\n gap = 'sm',\r\n alignItems = 'center',\r\n ...rest\r\n }\r\n) => (\r\n <Box\r\n display={display}\r\n flexDirection={flexDirection}\r\n alignItems={alignItems}\r\n gap={gap}\r\n {...rest}\r\n />\r\n)\r\n\r\nStack.displayName = 'Stack'\r\n\r\nexport default Stack\r\n","import { Button } from '@components/actions/button'\r\nimport { DEFAULT_ERROR_FALLBACK_STYLES } from '@components/foundation/error-boundary/DefaultErrorFallback.styles'\r\nimport type { DefaultErrorFallbackProps } from '@components/foundation/error-boundary/DefaultErrorFallback.props'\r\nimport { Text } from '@components/foundation/text'\r\nimport { Stack } from '@components/layout/stack'\r\n\r\n/**\r\n * Default fallback UI rendered by `ErrorBoundary` when no custom\r\n * `fallback` prop is provided.\r\n *\r\n * Displays a centred error message with a collapsible technical detail\r\n * section and a retry button that resets the boundary state.\r\n *\r\n * @example\r\n * ```tsx\r\n * // Used automatically by ErrorBoundary:\r\n * <ErrorBoundary>\r\n * <MyFeature />\r\n * </ErrorBoundary>\r\n *\r\n * // Or rendered directly with mocked data (e.g. in Storybook):\r\n * <DefaultErrorFallback\r\n * error={new Error('Network request failed')}\r\n * onRetry={() => refetch()}\r\n * title=\"Failed to load data\"\r\n * />\r\n * ```\r\n */\r\nconst DefaultErrorFallback = ({\r\n error,\r\n onRetry,\r\n title = 'Something went wrong',\r\n message = 'An unexpected error occurred. Please try again.',\r\n retryLabel = 'Try again',\r\n}: DefaultErrorFallbackProps) => (\r\n <Stack\r\n role={'alert'}\r\n aria-live={'assertive'}\r\n flexDirection={'column'}\r\n alignItems={'center'}\r\n justifyContent={'center'}\r\n gap={'md'}\r\n minHeight={'100dvh'}\r\n padding={'lg'}\r\n textAlign={'center'}\r\n >\r\n <Text variant={'h1'}>{title}</Text>\r\n <Text\r\n variant={'p'}\r\n color={'textSecondary'}\r\n >\r\n {message}\r\n </Text>\r\n <details style={DEFAULT_ERROR_FALLBACK_STYLES.details}>\r\n <summary>Technical details</summary>\r\n <pre style={DEFAULT_ERROR_FALLBACK_STYLES.pre}>{error.message}</pre>\r\n </details>\r\n <Button\r\n label={retryLabel}\r\n variant={'outlined'}\r\n onClick={onRetry}\r\n />\r\n </Stack>\r\n)\r\n\r\nDefaultErrorFallback.displayName = 'DefaultErrorFallback'\r\n\r\nexport default DefaultErrorFallback\r\n","import { Component, type ErrorInfo } from 'react'\r\n\r\nimport DefaultErrorFallback from '@components/foundation/error-boundary/DefaultErrorFallback'\r\n\r\nimport type {\r\n ErrorBoundaryProps,\r\n ErrorBoundaryState,\r\n} from '@components/foundation/error-boundary/ErrorBoundary.props'\r\n\r\n/**\r\n * Generic React error boundary.\r\n * Catches synchronous render-time errors thrown by descendant components\r\n * and renders a recoverable fallback UI instead of crashing the whole app.\r\n *\r\n * Note: error boundaries do NOT catch:\r\n * - errors in event handlers (use try/catch + setState),\r\n * - errors in async code (promises, setTimeout),\r\n * - errors during SSR,\r\n * - errors thrown in the boundary itself.\r\n *\r\n * For routing errors thrown by loaders/actions, use `RouteErrorBoundary`\r\n * (powered by `useRouteError`) directly on a `RouteObject.errorElement`.\r\n *\r\n * Class component is mandatory: hooks cannot replace `componentDidCatch`\r\n * / `getDerivedStateFromError` as of React 19.\r\n */\r\nclass ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\r\n static displayName = 'ErrorBoundary'\r\n\r\n state: ErrorBoundaryState = { error: null }\r\n\r\n static getDerivedStateFromError = (error: Error): ErrorBoundaryState => {\r\n return { error }\r\n }\r\n\r\n componentDidCatch(error: Error, info: ErrorInfo): void {\r\n this.props.onError?.(error, info)\r\n // Replace with a real telemetry sink (Sentry, Datadog…) when available.\r\n console.error('[ErrorBoundary]', error, info)\r\n }\r\n\r\n private reset = (): void => {\r\n this.setState({ error: null })\r\n }\r\n\r\n render() {\r\n const { error } = this.state\r\n const { fallback, children } = this.props\r\n\r\n if (error) {\r\n if (fallback) {\r\n return fallback({ error, reset: this.reset })\r\n }\r\n return (\r\n <DefaultErrorFallback\r\n error={error}\r\n onRetry={this.reset}\r\n />\r\n )\r\n }\r\n\r\n return children\r\n }\r\n}\r\n\r\nexport default ErrorBoundary\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { ImageProps } from '@components/foundation/image/Image.props'\r\n\r\ntype ImageStyleParams = Pick<ImageProps, 'width' | 'height' | 'maxWidth' | 'maxHeight' | 'objectFit' | 'borderRadius'>\r\n\r\nexport const IMAGE_STYLES = createStyles((theme) => ({\r\n root: ({ width, height, maxWidth, maxHeight, objectFit, borderRadius }: ImageStyleParams) => ({\r\n display: 'block',\r\n flexShrink: 0,\r\n width: width ?? 'auto',\r\n height: height ?? 'auto',\r\n maxWidth: maxWidth ?? undefined,\r\n maxHeight: maxHeight ?? undefined,\r\n objectFit: objectFit ?? 'cover',\r\n borderRadius: borderRadius ? theme.radius[borderRadius] : undefined,\r\n }),\r\n}))\r\n","import { type FC } from 'react'\r\n\r\nimport { IMAGE_STYLES } from '@components/foundation/image/Image.styles'\r\nimport type { ImageProps } from '@components/foundation/image/Image.props'\r\n\r\n/**\r\n * Renders a standard HTML image (`<img>`) with sizing, object-fit, border radius,\r\n * and accessibility support.\r\n *\r\n * **Features:**\r\n * - Free sizing via `width` / `height` (e.g. `'200px'`, `'50%'`, `200`)\r\n * - Responsive constraint via `maxWidth` / `maxHeight`\r\n * - `objectFit` to control how the image fills its container\r\n * - `borderRadius` using theme tokens (e.g. `'md'`, `'full'`)\r\n * - Native lazy-loading via `loading` prop (defaults to `'lazy'`)\r\n * - Accessibility: `alt` is required — pass `\"\"` for decorative images\r\n *\r\n * @example\r\n * ```tsx\r\n * // Decorative image (empty alt):\r\n * <Image src=\"/bg.jpg\" alt=\"\" width=\"100%\" height={200} objectFit=\"cover\" />\r\n *\r\n * // Meaningful image:\r\n * <Image\r\n * src=\"/avatar.png\"\r\n * alt=\"Profile picture of Jane Doe\"\r\n * width={64}\r\n * height={64}\r\n * borderRadius=\"full\"\r\n * objectFit=\"cover\"\r\n * />\r\n * ```\r\n */\r\nconst Image: FC<ImageProps> = ({\r\n src,\r\n alt,\r\n width,\r\n height,\r\n maxWidth,\r\n maxHeight,\r\n objectFit = 'cover',\r\n loading = 'lazy',\r\n borderRadius,\r\n ariaDescribedBy,\r\n}) => {\r\n return (\r\n <img\r\n src={src}\r\n alt={alt}\r\n title={alt || undefined}\r\n loading={loading}\r\n aria-describedby={ariaDescribedBy}\r\n className={IMAGE_STYLES.root({ width, height, maxWidth, maxHeight, objectFit, borderRadius })}\r\n />\r\n )\r\n}\r\n\r\nImage.displayName = 'Image'\r\n\r\nexport default Image\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { spinAnimation } from '@constants/animation.constants'\r\n\r\nexport const LOADER_SCREEN_STYLES = createStyles(() => ({\r\n spinner: {\r\n animation: `${spinAnimation} 1s linear infinite`,\r\n '@media (prefers-reduced-motion: reduce)': { animation: 'none' },\r\n },\r\n}))\r\n","import { Icon } from '@components/foundation/icon'\r\nimport { LOADER_SCREEN_STYLES } from '@components/foundation/loader/LoaderScreen.styles'\r\nimport { Stack } from '@components/layout/stack'\r\nimport { SpinnerIcon } from '@resources/Icons'\r\n\r\nimport type { LoaderScreenProps } from '@components/foundation/loader/LoaderScreen.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Full-screen loading placeholder shown while data is being fetched.\r\n *\r\n * Renders a centred spinner over a full-viewport surface.\r\n * The spinner rotation is suppressed when the user prefers reduced motion.\r\n *\r\n * @example\r\n * ```tsx\r\n * // Swap with real content once data is ready:\r\n * {isLoading ? <LoaderScreen /> : <AppContent />}\r\n *\r\n * // With a custom label for screen readers:\r\n * <LoaderScreen label=\"Loading your dashboard…\" />\r\n * ```\r\n */\r\nconst LoaderScreen: FC<LoaderScreenProps> = ({ label = 'Loading…' }) => (\r\n <Stack\r\n role={'status'}\r\n aria-busy={'true'}\r\n aria-label={label}\r\n alignItems={'center'}\r\n justifyContent={'center'}\r\n width={'100vw'}\r\n height={'100dvh'}\r\n backgroundColor={'surfaceBackground'}\r\n >\r\n <Icon\r\n icon={SpinnerIcon}\r\n size={'2xl'}\r\n strokeColor={'primaryMain'}\r\n className={LOADER_SCREEN_STYLES.spinner}\r\n />\r\n </Stack>\r\n)\r\n\r\nLoaderScreen.displayName = 'LoaderScreen'\r\n\r\nexport default LoaderScreen\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { SvgImageProps } from '@components/foundation/svg-image/SvgImage.props'\r\n\r\ntype SvgImageStyleParams = Pick<SvgImageProps, 'width' | 'height' | 'maxWidth' | 'maxHeight'>\r\n\r\nexport const SVG_IMAGE_STYLES = createStyles(() => ({\r\n root: ({ width, height, maxWidth, maxHeight }: SvgImageStyleParams) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n lineHeight: 0,\r\n width: width ?? 'auto',\r\n height: height ?? 'auto',\r\n maxWidth: maxWidth ?? undefined,\r\n maxHeight: maxHeight ?? undefined,\r\n '& svg': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n }),\r\n}))\r\n","import { type FC } from 'react'\r\n\r\nimport { SVG_IMAGE_STYLES } from '@components/foundation/svg-image/SvgImage.styles'\r\nimport type { SvgImageProps } from '@components/foundation/svg-image/SvgImage.props'\r\n\r\n/**\r\n * Renders an SVG illustration with free-form sizing.\r\n *\r\n * Unlike `Icon` (constrained to theme font sizes), `SvgImage` accepts any\r\n * valid CSS value for `width` and `height`.\r\n *\r\n * **Features:**\r\n * - Free sizing via `width` / `height` (e.g. `'200px'`, `'50%'`, `200`)\r\n * - Responsive constraint via `maxWidth` / `maxHeight`\r\n * - Accessibility: `ariaLabel`, `ariaLabelledBy`, `ariaDescribedBy`\r\n * - No label → `aria-hidden` (decorative illustration)\r\n *\r\n * @example\r\n * ```tsx\r\n * // Decorative illustration (no accessible label needed):\r\n * <SvgImage image={ImagesRegistry.WelcomeIllustration} width={320} />\r\n *\r\n * // Meaningful illustration (must have a label):\r\n * <SvgImage\r\n * image={ImagesRegistry.EmptyStateIllustration}\r\n * width={'50%'}\r\n * maxWidth={400}\r\n * ariaLabel=\"No results found illustration\"\r\n * />\r\n * ```\r\n */\r\nconst SvgImage: FC<SvgImageProps> = ({\r\n image: SvgComponent,\r\n width,\r\n height,\r\n maxWidth,\r\n maxHeight,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n ariaDescribedBy,\r\n}) => {\r\n const isDecorative = !ariaLabel && !ariaLabelledBy\r\n\r\n return (\r\n <div\r\n className={SVG_IMAGE_STYLES.root({ width, height, maxWidth, maxHeight })}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n aria-hidden={isDecorative || undefined}\r\n role={isDecorative ? 'presentation' : 'img'}\r\n >\r\n <SvgComponent />\r\n </div>\r\n )\r\n}\r\n\r\nSvgImage.displayName = 'SvgImage'\r\n\r\nexport default SvgImage\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const FORM_STYLES = createStyles(() => ({\r\n root: {\r\n display: 'contents',\r\n },\r\n}))\r\n","import type { FC, FormEvent } from 'react'\r\n\r\nimport type { FormProps } from '@components/forms/form/Form.props'\r\nimport { FORM_STYLES } from '@components/forms/form/Form.styles'\r\n\r\n/**\r\n * Thin wrapper around `<form>`. Prevents the default browser submit and\r\n * delegates to the `onSubmit` callback.\r\n *\r\n * @example\r\n * <Form onSubmit={handleSubmit}>\r\n * <TextField label=\"Email\" />\r\n * <Button type=\"submit\">Send</Button>\r\n * </Form>\r\n */\r\nconst Form: FC<FormProps> = ({\r\n children,\r\n onSubmit,\r\n 'aria-label': ariaLabel,\r\n 'aria-labelledby': ariaLabelledBy,\r\n}) => {\r\n const handleSubmit = (event: FormEvent<HTMLFormElement>) => {\r\n event.preventDefault()\r\n onSubmit(event)\r\n }\r\n\r\n return (\r\n <form\r\n onSubmit={handleSubmit}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n className={FORM_STYLES.root}\r\n noValidate\r\n >\r\n {children}\r\n </form>\r\n )\r\n}\r\n\r\nForm.displayName = 'Form'\r\n\r\nexport default Form\r\n","import { type FC } from 'react'\r\n\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { TextFieldStatus } from '@components/forms/text-field/textField.types'\r\nimport type { FormHelperTextProps } from '@components/forms/_common/form-helper-text/FormHelperText.props'\r\n\r\nconst HELPER_COLOR_MAP: Record<TextFieldStatus, keyof Theme['colors']> = {\r\n default: 'textSecondary',\r\n error: 'errorHover',\r\n success: 'successHover',\r\n warning: 'warningHover',\r\n}\r\n\r\nconst FormHelperText: FC<FormHelperTextProps> = ({\r\n id,\r\n status = 'default',\r\n ariaLive,\r\n className,\r\n children,\r\n}) => {\r\n const resolvedAriaLive = ariaLive ?? (status === 'error' ? 'assertive' : 'polite')\r\n\r\n return (\r\n <Text\r\n id={id}\r\n variant={'span'}\r\n fontSize={'xs'}\r\n color={HELPER_COLOR_MAP[status]}\r\n aria-live={resolvedAriaLive}\r\n className={className}\r\n >\r\n {children}\r\n </Text>\r\n )\r\n}\r\n\r\nFormHelperText.displayName = 'FormHelperText'\r\n\r\nexport default FormHelperText\r\n","import { createStyles, createVariants } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const RADIO_ROOT_VARIANTS = createVariants((theme) => ({\r\n base: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: theme.spacing.sm,\r\n cursor: 'pointer',\r\n userSelect: 'none',\r\n },\r\n variants: {\r\n disabled: {\r\n true: {\r\n cursor: 'not-allowed',\r\n opacity: theme.opacity.high,\r\n },\r\n false: {},\r\n },\r\n },\r\n defaultVariants: {\r\n disabled: 'false',\r\n },\r\n}), { id: 'radio-root' })\r\n\r\nexport const RADIO_INPUT_VARIANTS = createVariants((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n base: {\r\n appearance: 'none',\r\n position: 'relative' as const,\r\n margin: 0,\r\n borderWidth: '1px',\r\n borderStyle: 'solid',\r\n borderColor: c.borderStrong,\r\n borderRadius: '50%',\r\n backgroundColor: c.surfacePaper,\r\n flexShrink: 0,\r\n transition: `border-color ${theme.transition.fast}, background-color ${theme.transition.fast}`,\r\n cursor: 'pointer',\r\n '&:focus-visible': getFocusRingStyles(theme),\r\n '&::after': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n left: '50%',\r\n top: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n width: '40%',\r\n height: '40%',\r\n borderRadius: '50%',\r\n backgroundColor: c.textInverse,\r\n opacity: 0,\r\n transition: `opacity ${theme.transition.fast}`,\r\n },\r\n '&:checked::after': {\r\n opacity: 1,\r\n },\r\n },\r\n variants: {\r\n size: {\r\n sm: {\r\n width: '1rem',\r\n height: '1rem',\r\n },\r\n md: {\r\n width: '1.125rem',\r\n height: '1.125rem',\r\n },\r\n lg: {\r\n width: '1.25rem',\r\n height: '1.25rem',\r\n },\r\n },\r\n status: {\r\n default: {\r\n '&:checked': {\r\n borderColor: c.primaryMain,\r\n backgroundColor: c.primaryMain,\r\n },\r\n },\r\n error: {\r\n borderColor: c.errorMain,\r\n '&:checked': {\r\n borderColor: c.errorMain,\r\n backgroundColor: c.errorMain,\r\n },\r\n },\r\n success: {\r\n borderColor: c.successMain,\r\n '&:checked': {\r\n borderColor: c.successMain,\r\n backgroundColor: c.successMain,\r\n },\r\n },\r\n warning: {\r\n borderColor: c.warningMain,\r\n '&:checked': {\r\n borderColor: c.warningMain,\r\n backgroundColor: c.warningMain,\r\n },\r\n },\r\n },\r\n disabled: {\r\n true: {\r\n cursor: 'not-allowed',\r\n backgroundColor: c.disabledMain,\r\n borderColor: c.disabledMain,\r\n '&:checked': {\r\n backgroundColor: c.disabledText,\r\n borderColor: c.disabledText,\r\n },\r\n },\r\n false: {},\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n status: 'default',\r\n disabled: 'false',\r\n },\r\n }\r\n}, { id: 'radio-input' })\r\n\r\nexport const RADIO_STYLES = createStyles((theme) => ({\r\n wrapper: {\r\n display: 'inline-flex',\r\n flexDirection: 'column',\r\n gap: theme.spacing.xs,\r\n },\r\n helper: {\r\n marginLeft: `calc(1.125rem + ${theme.spacing.sm})`,\r\n },\r\n}), { id: 'radio-extra' })\r\n","import { MutableRefObject, Ref, RefCallback, useCallback, useRef } from 'react'\r\n\r\nconst assignRef = <T>(ref: Ref<T> | undefined, node: T | null): void => {\r\n if (typeof ref === 'function') {\r\n ref(node)\r\n } else if (ref != null) {\r\n (ref as MutableRefObject<T | null>).current = node\r\n }\r\n}\r\n\r\n/**\r\n * Merges several refs (callback or object) into a single stable callback ref.\r\n *\r\n * Useful when a component needs an internal ref while still forwarding the\r\n * consumer's `ref`. The returned callback keeps a stable identity across\r\n * renders to avoid detach/attach churn, always assigning to the latest refs.\r\n *\r\n * @example\r\n * const inputRef = useRef<HTMLInputElement | null>(null)\r\n * const mergedRef = useMergedRefs(ref, inputRef)\r\n */\r\nexport const useMergedRefs = <T>(...refs: Array<Ref<T> | undefined>): RefCallback<T> => {\r\n const refsRef = useRef(refs)\r\n refsRef.current = refs\r\n\r\n return useCallback((node: T | null) => {\r\n for (const ref of refsRef.current) {\r\n assignRef(ref, node)\r\n }\r\n }, [])\r\n}\r\n","import { useId } from 'react'\r\n\r\nimport { useMergedRefs } from '@hooks/common/use-merged-refs/useMergedRefs'\r\n\r\nimport type { RadioButtonProps } from '@components/forms/radio/radio-button/RadioButton.props'\r\n\r\ntype UseRadioButtonParams = {\r\n id?: string\r\n ref?: RadioButtonProps['ref']\r\n}\r\n\r\ntype UseRadioButtonReturn = {\r\n radioId: string\r\n helperId: string\r\n mergedRef: (node: HTMLInputElement | null) => void\r\n}\r\n\r\n/** Handles id generation and ref merging for the RadioButton component. */\r\nexport const useRadioButton = ({ id, ref }: UseRadioButtonParams): UseRadioButtonReturn => {\r\n const generatedId = useId()\r\n const radioId = id ?? generatedId\r\n const helperId = `${radioId}-helper`\r\n const mergedRef = useMergedRefs<HTMLInputElement>(ref)\r\n\r\n return {\r\n radioId,\r\n helperId,\r\n mergedRef,\r\n }\r\n}\r\n","import { createContext, useContext } from 'react'\r\n\r\nimport type { RadioButtonSize, RadioButtonStatus } from '@components/forms/radio/radio-button/radioButton.types'\r\n\r\nexport type RadioGroupContextValue = {\r\n /** The name attribute shared across all radio inputs in the group. */\r\n name: string\r\n /** The currently selected value (controlled). */\r\n value?: string\r\n /** Callback triggered when a radio option is selected. */\r\n onChange?: (value: string) => void\r\n /** Whether all radio buttons in the group are disabled. */\r\n disabled?: boolean\r\n /** Size applied to all radio buttons unless overridden. */\r\n size?: RadioButtonSize\r\n /** Status applied to all radio buttons unless overridden. */\r\n status?: RadioButtonStatus\r\n}\r\n\r\nexport const RadioGroupContext = createContext<RadioGroupContextValue | null>(null)\r\n\r\n/** Returns the RadioGroup context value, or null when used outside a RadioGroup. */\r\nexport const useRadioGroupContext = (): RadioGroupContextValue | null =>\r\n useContext(RadioGroupContext)\r\n","import { type ChangeEvent, type FC, useCallback } from 'react'\r\n\r\nimport { Text } from '@components/foundation/text'\r\nimport { FormHelperText } from '@components/forms/_common/form-helper-text'\r\nimport {\r\n RADIO_INPUT_VARIANTS,\r\n RADIO_ROOT_VARIANTS,\r\n RADIO_STYLES,\r\n} from '@components/forms/radio/radio-button/RadioButton.styles'\r\nimport { useRadioButton } from '@components/forms/radio/radio-button/utils/useRadioButton.utils'\r\nimport { useRadioGroupContext } from '@components/forms/radio/radio-group/radioGroupContext'\r\n\r\nimport type { RadioButtonProps } from '@components/forms/radio/radio-button/RadioButton.props'\r\n\r\nconst RadioButton: FC<RadioButtonProps> = ({\r\n ref,\r\n label,\r\n helperText,\r\n size,\r\n status,\r\n error,\r\n id,\r\n disabled,\r\n required,\r\n value,\r\n checked,\r\n defaultChecked,\r\n onChange,\r\n ...rest\r\n}) => {\r\n const ctx = useRadioGroupContext()\r\n\r\n // Merge context values — explicit props take precedence\r\n const effectiveName = rest.name ?? ctx?.name\r\n const effectiveDisabled = disabled ?? ctx?.disabled\r\n const effectiveSize = size ?? ctx?.size ?? 'md'\r\n const effectiveStatus = error ? 'error' : (status ?? ctx?.status ?? 'default')\r\n\r\n // When inside a RadioGroup, derive checked from the group's selected value\r\n const isInGroup = ctx !== null\r\n const groupChecked = isInGroup && value !== undefined ? ctx.value === String(value) : undefined\r\n const effectiveChecked = isInGroup ? groupChecked : checked\r\n\r\n const handleChange = useCallback(\r\n (event: ChangeEvent<HTMLInputElement>) => {\r\n if (isInGroup && ctx?.onChange && value !== undefined) {\r\n ctx.onChange(String(value))\r\n }\r\n onChange?.(event)\r\n },\r\n [isInGroup, ctx, value, onChange]\r\n )\r\n\r\n const { radioId, helperId, mergedRef } = useRadioButton({ id, ref })\r\n\r\n return (\r\n <div className={RADIO_STYLES.wrapper}>\r\n <label\r\n htmlFor={radioId}\r\n className={RADIO_ROOT_VARIANTS({ disabled: effectiveDisabled ? 'true' : 'false' })}\r\n >\r\n <input\r\n ref={mergedRef}\r\n id={radioId}\r\n type={'radio'}\r\n name={effectiveName}\r\n value={value}\r\n checked={effectiveChecked}\r\n defaultChecked={isInGroup ? undefined : defaultChecked}\r\n disabled={effectiveDisabled}\r\n required={required}\r\n aria-invalid={effectiveStatus === 'error' || undefined}\r\n aria-describedby={helperText !== undefined ? helperId : undefined}\r\n aria-errormessage={effectiveStatus === 'error' && helperText !== undefined ? helperId : undefined}\r\n onChange={handleChange}\r\n className={RADIO_INPUT_VARIANTS({\r\n size: effectiveSize,\r\n status: effectiveStatus,\r\n disabled: effectiveDisabled ? 'true' : 'false',\r\n })}\r\n {...rest}\r\n />\r\n\r\n {label !== undefined && (\r\n <Text\r\n variant={'span'}\r\n fontSize={effectiveSize === 'lg' ? 'md' : 'sm'}\r\n color={effectiveDisabled ? 'textDisabled' : 'textSecondary'}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n </label>\r\n\r\n {helperText !== undefined && (\r\n <FormHelperText\r\n id={helperId}\r\n status={effectiveStatus}\r\n className={RADIO_STYLES.helper}\r\n >\r\n {helperText}\r\n </FormHelperText>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nRadioButton.displayName = 'RadioButton'\r\n\r\nexport default RadioButton\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const RADIO_GROUP_STYLES = createStyles((theme) => ({\r\n fieldset: {\r\n border: 'none',\r\n margin: 0,\r\n padding: 0,\r\n },\r\n legend: {\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.medium,\r\n color: theme.colors.textPrimary,\r\n marginBottom: theme.spacing.sm,\r\n padding: 0,\r\n },\r\n group: {\r\n display: 'flex',\r\n gap: theme.spacing.sm,\r\n },\r\n groupVertical: {\r\n flexDirection: 'column',\r\n },\r\n groupHorizontal: {\r\n flexDirection: 'row',\r\n flexWrap: 'wrap',\r\n alignItems: 'flex-start',\r\n },\r\n}), { id: 'radio-group' })\r\n","import { useCallback, useRef, useState } from 'react'\r\n\r\nimport type {\r\n UseControllableStateOptions,\r\n UseControllableStateResult,\r\n} from '@hooks/common/use-controllable-state/useControllableState.types'\r\n\r\n/**\r\n * Unifies controlled and uncontrolled value handling.\r\n *\r\n * - When `value` is provided the hook is controlled: the returned value mirrors\r\n * it and internal state is never used to render.\r\n * - Otherwise it is uncontrolled: state starts at `defaultValue` and updates\r\n * internally.\r\n *\r\n * In both modes `setValue` calls `onChange` with the next value, so consumers\r\n * have a single code path regardless of mode.\r\n *\r\n * @example\r\n * const [value, setValue] = useControllableState({ value, defaultValue: '', onChange })\r\n */\r\nexport const useControllableState = <T>({\r\n value,\r\n defaultValue,\r\n onChange,\r\n}: UseControllableStateOptions<T>): UseControllableStateResult<T> => {\r\n const isControlled = value !== undefined\r\n const [internalValue, setInternalValue] = useState<T>(defaultValue)\r\n\r\n const onChangeRef = useRef(onChange)\r\n onChangeRef.current = onChange\r\n\r\n const resolvedValue = isControlled ? (value as T) : internalValue\r\n\r\n const setValue = useCallback(\r\n (next: T) => {\r\n if (!isControlled) {\r\n setInternalValue(next)\r\n }\r\n onChangeRef.current?.(next)\r\n },\r\n [isControlled]\r\n )\r\n\r\n return [resolvedValue, setValue]\r\n}\r\n","import { useId } from 'react'\r\n\r\nimport { useControllableState } from '@hooks/common/use-controllable-state/useControllableState'\r\n\r\nimport type { RadioGroupProps } from '@components/forms/radio/radio-group/RadioGroup.props'\r\n\r\ntype UseRadioGroupParams = Pick<RadioGroupProps, 'name' | 'value' | 'defaultValue' | 'onChange'>\r\n\r\ntype UseRadioGroupReturn = {\r\n /** Resolved name (provided or auto-generated). */\r\n resolvedName: string\r\n /** Currently selected value. */\r\n selectedValue: string | undefined\r\n /** Handler to update the selected value. */\r\n handleChange: (value: string) => void\r\n}\r\n\r\n/** Handles name generation and controlled/uncontrolled value state for RadioGroup. */\r\nexport const useRadioGroup = ({ name, value, defaultValue, onChange }: UseRadioGroupParams): UseRadioGroupReturn => {\r\n const generatedName = useId()\r\n const resolvedName = name ?? generatedName\r\n\r\n const [selectedValue, setSelectedValue] = useControllableState<string | undefined>({\r\n value,\r\n defaultValue: defaultValue ?? undefined,\r\n })\r\n\r\n const handleChange = (newValue: string) => {\r\n setSelectedValue(newValue)\r\n onChange?.(newValue)\r\n }\r\n\r\n return {\r\n resolvedName,\r\n selectedValue,\r\n handleChange,\r\n }\r\n}\r\n","import { type FC } from 'react'\r\n\r\nimport { Text } from '@components/foundation/text'\r\nimport { RADIO_GROUP_STYLES } from '@components/forms/radio/radio-group/RadioGroup.styles'\r\nimport { RadioGroupContext } from '@components/forms/radio/radio-group/radioGroupContext'\r\nimport { useRadioGroup } from '@components/forms/radio/radio-group/utils/useRadioGroup.utils'\r\n\r\nimport type { RadioGroupProps } from '@components/forms/radio/radio-group/RadioGroup.props'\r\n\r\n/**\r\n * Accessible radio group wrapping multiple `RadioButton` components inside a `<fieldset>`.\r\n *\r\n * Supports controlled (`value` + `onChange`) and uncontrolled (`defaultValue`) modes.\r\n * Propagates `name`, `value`, `disabled`, `size`, and `status` to all child `RadioButton` elements via context.\r\n *\r\n * @example\r\n * <RadioGroup legend=\"Preferred contact\" defaultValue=\"email\" onChange={setValue}>\r\n * <RadioButton value=\"email\" label=\"Email\" />\r\n * <RadioButton value=\"phone\" label=\"Phone\" />\r\n * </RadioGroup>\r\n */\r\nconst RadioGroup: FC<RadioGroupProps> = ({\r\n children,\r\n name,\r\n value,\r\n defaultValue,\r\n onChange,\r\n orientation = 'vertical',\r\n disabled,\r\n required,\r\n legend,\r\n size = 'md',\r\n status,\r\n error,\r\n}) => {\r\n const resolvedStatus = error ? 'error' : (status ?? 'default')\r\n const { resolvedName, selectedValue, handleChange } = useRadioGroup({ name, value, defaultValue, onChange })\r\n\r\n const groupClass = [\r\n RADIO_GROUP_STYLES.group,\r\n orientation === 'horizontal' ? RADIO_GROUP_STYLES.groupHorizontal : RADIO_GROUP_STYLES.groupVertical,\r\n ].join(' ')\r\n\r\n return (\r\n <RadioGroupContext.Provider\r\n value={{\r\n name: resolvedName,\r\n value: selectedValue,\r\n onChange: handleChange,\r\n disabled,\r\n size,\r\n status: resolvedStatus,\r\n }}\r\n >\r\n <fieldset\r\n role={'radiogroup'}\r\n aria-required={required || undefined}\r\n aria-disabled={disabled || undefined}\r\n className={RADIO_GROUP_STYLES.fieldset}\r\n disabled={disabled}\r\n >\r\n {legend !== undefined && (\r\n <legend className={RADIO_GROUP_STYLES.legend}>\r\n <Text\r\n variant={'span'}\r\n fontSize={'sm'}\r\n fontWeight={'medium'}\r\n color={'textPrimary'}\r\n >\r\n {legend}\r\n </Text>\r\n </legend>\r\n )}\r\n\r\n <div className={groupClass}>\r\n {children}\r\n </div>\r\n </fieldset>\r\n </RadioGroupContext.Provider>\r\n )\r\n}\r\n\r\nRadioGroup.displayName = 'RadioGroup'\r\n\r\nexport default RadioGroup\r\n","import { type CompoundVariant, createStyles, createVariants, type StyleWithPseudos } from '@aurora-ds/theme'\r\n\r\nimport type { SwitchColor } from '@components/forms/switch/switch.types'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\n// sm → track 2rem × 1.125rem | thumb 0.875rem | checked left: 1rem\r\n// md → track 2.75rem × 1.5rem | thumb 1.25rem | checked left: 1.375rem\r\n// lg → track 3.5rem × 2rem | thumb 1.75rem | checked left: 1.625rem\r\n\r\nexport const SWITCH_TRACK_VARIANTS = createVariants((theme) => {\r\n const c = theme.colors\r\n\r\n const colorTokens: Record<SwitchColor, string> = {\r\n primary: c.primaryMain,\r\n success: c.successMain,\r\n error: c.errorMain,\r\n warning: c.warningMain,\r\n info: c.infoMain,\r\n neutral: c.defaultMain,\r\n }\r\n\r\n const compoundVariants = (Object.keys(colorTokens) as SwitchColor[]).map((color) => ({\r\n color,\r\n checked: 'true' as const,\r\n disabled: 'false' as const,\r\n styles: { backgroundColor: colorTokens[color] },\r\n })) as CompoundVariant<{\r\n color: Record<SwitchColor, StyleWithPseudos>\r\n size: Record<'sm' | 'md' | 'lg', StyleWithPseudos>\r\n checked: Record<'true' | 'false', StyleWithPseudos>\r\n disabled: Record<'true' | 'false', StyleWithPseudos>\r\n }>[]\r\n\r\n return {\r\n base: {\r\n position: 'relative' as const,\r\n display: 'inline-block',\r\n flexShrink: 0,\r\n borderRadius: theme.radius.full,\r\n backgroundColor: c.disabledMain,\r\n cursor: 'pointer',\r\n transition: `background-color ${theme.transition.fast}, box-shadow ${theme.transition.fast}`,\r\n // Full, always-visible focus ring on the track when the hidden input is focused.\r\n '&:has(:focus-visible)': getFocusRingStyles(theme),\r\n },\r\n variants: {\r\n size: {\r\n sm: { width: '2rem', height: '1.125rem' },\r\n md: { width: '2.75rem', height: '1.5rem' },\r\n lg: { width: '3.5rem', height: '2rem' },\r\n },\r\n color: {\r\n primary: {}, success: {}, error: {}, warning: {}, info: {}, neutral: {},\r\n },\r\n checked: { true: {}, false: {} },\r\n disabled: { true: { cursor: 'not-allowed' }, false: {} },\r\n },\r\n defaultVariants: { size: 'md', color: 'primary', checked: 'false', disabled: 'false' },\r\n compoundVariants,\r\n }\r\n}, { id: 'switch-track' })\r\n\r\nexport const SWITCH_THUMB_VARIANTS = createVariants((theme) => ({\r\n base: {\r\n position: 'absolute' as const,\r\n top: '0.125rem',\r\n left: '0.125rem',\r\n borderRadius: theme.radius.full,\r\n backgroundColor: theme.colors.textInverse,\r\n boxShadow: theme.shadows.xs,\r\n transition: `left ${theme.transition.fast}`,\r\n pointerEvents: 'none' as const,\r\n },\r\n variants: {\r\n size: {\r\n sm: { width: '0.875rem', height: '0.875rem' },\r\n md: { width: '1.25rem', height: '1.25rem' },\r\n lg: { width: '1.75rem', height: '1.75rem' },\r\n },\r\n checked: { true: {}, false: {} },\r\n },\r\n defaultVariants: { size: 'md', checked: 'false' },\r\n compoundVariants: [\r\n { size: 'sm', checked: 'true', styles: { left: '1rem' } },\r\n { size: 'md', checked: 'true', styles: { left: '1.375rem' } },\r\n { size: 'lg', checked: 'true', styles: { left: '1.625rem' } },\r\n ],\r\n}), { id: 'switch-thumb' })\r\n\r\nexport const SWITCH_STYLES = createStyles((theme) => ({\r\n root: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: theme.spacing.sm,\r\n cursor: 'pointer',\r\n userSelect: 'none',\r\n '&[data-disabled]': {\r\n cursor: 'not-allowed',\r\n opacity: theme.opacity.high,\r\n },\r\n },\r\n input: {\r\n position: 'absolute',\r\n width: '1px',\r\n height: '1px',\r\n padding: '0',\r\n margin: '-1px',\r\n overflow: 'hidden',\r\n clip: 'rect(0, 0, 0, 0)',\r\n whiteSpace: 'nowrap',\r\n borderWidth: '0',\r\n },\r\n}), { id: 'switch-extra' })\r\n","import { ChangeEvent, InputHTMLAttributes, useCallback, useId } from 'react'\r\n\r\nimport { useControllableState } from '@hooks/common/use-controllable-state/useControllableState'\r\n\r\nimport type { SwitchProps } from '@components/forms/switch/Switch.props'\r\n\r\ntype UseSwitchParams = Pick<SwitchProps, 'id' | 'checked' | 'defaultChecked' | 'onChange'>\r\n\r\ntype UseSwitchReturn = {\r\n /** Resolved id (provided or generated) wiring the label to the input. */\r\n switchId: string\r\n /** Whether the switch is visually checked. */\r\n isChecked: boolean\r\n /** Props to spread on the native input — controlled or uncontrolled, never both. */\r\n inputValueProps: Pick<InputHTMLAttributes<HTMLInputElement>, 'checked' | 'defaultChecked' | 'onChange'>\r\n}\r\n\r\n/**\r\n * Business logic for the Switch component: id resolution and\r\n * controlled/uncontrolled checked state handling.\r\n */\r\nexport const useSwitch = ({ id, checked, defaultChecked, onChange }: UseSwitchParams): UseSwitchReturn => {\r\n const generatedId = useId()\r\n const switchId = id ?? generatedId\r\n\r\n const [isChecked, setChecked] = useControllableState<boolean>({\r\n value: checked,\r\n defaultValue: defaultChecked ?? false,\r\n })\r\n\r\n const handleChange = useCallback(\r\n (event: ChangeEvent<HTMLInputElement>) => {\r\n setChecked(event.target.checked)\r\n onChange?.(event)\r\n },\r\n [setChecked, onChange]\r\n )\r\n\r\n const inputValueProps = checked !== undefined\r\n ? { checked, onChange: handleChange }\r\n : { defaultChecked: defaultChecked ?? false, onChange: handleChange }\r\n\r\n return { switchId, isChecked, inputValueProps }\r\n}\r\n","import { type FC } from 'react'\r\n\r\nimport {\r\n SWITCH_STYLES,\r\n SWITCH_THUMB_VARIANTS,\r\n SWITCH_TRACK_VARIANTS,\r\n} from '@components/forms/switch/Switch.styles'\r\nimport { Text } from '@components/foundation/text'\r\nimport { useSwitch } from '@components/forms/switch/utils/useSwitch.utils'\r\n\r\nimport type { SwitchProps } from '@components/forms/switch/Switch.props'\r\n\r\n/**\r\n * Accessible toggle switch built on `<input type=\"checkbox\" role=\"switch\">`.\r\n *\r\n * Supports controlled (`checked` + `onChange`) and uncontrolled (`defaultChecked`) modes.\r\n *\r\n * @example <Switch label='Enable notifications' defaultChecked />\r\n * @example <Switch checked={isEnabled} onChange={(e) => setEnabled(e.target.checked)} color='success' size='lg' />\r\n */\r\nconst Switch: FC<SwitchProps> = (\r\n {\r\n ref,\r\n label,\r\n size = 'md',\r\n color = 'primary',\r\n id,\r\n checked,\r\n defaultChecked,\r\n disabled,\r\n onChange,\r\n ...rest\r\n }\r\n) => {\r\n const { switchId, isChecked, inputValueProps } = useSwitch({ id, checked, defaultChecked, onChange })\r\n const checkedVariant = isChecked ? 'true' : 'false'\r\n\r\n return (\r\n <label\r\n htmlFor={switchId}\r\n className={SWITCH_STYLES.root}\r\n data-disabled={disabled || undefined}\r\n >\r\n <span className={SWITCH_TRACK_VARIANTS({ size, color, checked: checkedVariant, disabled: disabled ? 'true' : 'false' })}>\r\n <input\r\n ref={ref}\r\n id={switchId}\r\n type={'checkbox'}\r\n role={'switch'}\r\n disabled={disabled}\r\n className={SWITCH_STYLES.input}\r\n {...inputValueProps}\r\n {...rest}\r\n />\r\n <span\r\n aria-hidden={'true'}\r\n className={SWITCH_THUMB_VARIANTS({ size, checked: checkedVariant })}\r\n />\r\n </span>\r\n\r\n {label !== undefined && (\r\n <Text\r\n variant={'span'}\r\n fontSize={'sm'}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n </label>\r\n )\r\n}\r\n\r\nSwitch.displayName = 'Switch'\r\n\r\nexport default Switch\r\n","import { createStyles, createVariants } from '@aurora-ds/theme'\r\n\r\nexport const TEXTFIELD_WRAPPER_VARIANTS = createVariants((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n base: {\r\n display: 'flex',\r\n // `stretch` lets the inner input fill the full height of the box so\r\n // clicking anywhere (including the vertical padding area) hits it.\r\n alignItems: 'stretch',\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n borderWidth: '1px',\r\n borderStyle: 'solid',\r\n borderRadius: theme.radius.md,\r\n backgroundColor: c.surfacePaper,\r\n // No focus ring on text inputs: focus is conveyed by the status\r\n // border colour change (see the `status` variants below).\r\n transition: `border-color ${theme.transition.fast}`,\r\n '&[data-disabled]': {\r\n opacity: theme.opacity.high,\r\n backgroundColor: c.disabledMain,\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n variants: {\r\n size: {\r\n // Horizontal padding lives on the input itself (see TEXTFIELD_INPUT_VARIANTS),\r\n // not here, so the whole bordered area is part of the clickable input.\r\n // Font-size is set on the wrapper so the native input inherits it via `fontSize: 'inherit'`.\r\n sm: { height: '2rem', fontSize: theme.fontSize.xs },\r\n md: { height: '2.5rem', fontSize: theme.fontSize.sm },\r\n lg: { height: '3rem', fontSize: theme.fontSize.md },\r\n },\r\n status: {\r\n default: {\r\n borderColor: c.borderMain,\r\n ':hover:not(:focus-within)': { borderColor: c.borderStrong },\r\n ':focus-within': { borderColor: c.primaryMain },\r\n },\r\n error: {\r\n borderColor: c.errorMain,\r\n ':focus-within': { borderColor: c.errorMain },\r\n },\r\n success: {\r\n borderColor: c.successMain,\r\n ':focus-within': { borderColor: c.successMain },\r\n },\r\n warning: {\r\n borderColor: c.warningMain,\r\n ':focus-within': { borderColor: c.warningMain },\r\n },\r\n },\r\n },\r\n defaultVariants: { size: 'md', status: 'default' },\r\n }\r\n}, { id: 'textfield-wrapper' })\r\n\r\n/**\r\n * The native input carries the horizontal padding and fills 100% of the\r\n * wrapper height, so the entire bordered box is part of the clickable input\r\n * (no dead zone between the text and the border).\r\n */\r\nexport const TEXTFIELD_INPUT_VARIANTS = createVariants((theme) => ({\r\n base: {\r\n flex: 1,\r\n minWidth: 0,\r\n height: '100%',\r\n boxSizing: 'border-box' as const,\r\n border: 'none',\r\n outline: 'none',\r\n background: 'transparent',\r\n color: theme.colors.textPrimary,\r\n fontFamily: 'inherit',\r\n fontSize: 'inherit',\r\n lineHeight: 'normal',\r\n '&::placeholder': { color: theme.colors.textTertiary },\r\n '&:disabled': { cursor: 'not-allowed', color: theme.colors.textDisabled },\r\n },\r\n variants: {\r\n size: {\r\n sm: { paddingLeft: theme.spacing.sm, paddingRight: theme.spacing.sm },\r\n md: { paddingLeft: theme.spacing.sm, paddingRight: theme.spacing.sm },\r\n lg: { paddingLeft: theme.spacing.md, paddingRight: theme.spacing.md },\r\n },\r\n },\r\n defaultVariants: { size: 'md' },\r\n}), { id: 'textfield-input' })\r\n\r\nexport const TEXTFIELD_STYLES = createStyles((theme) => ({\r\n /** Wrapper for the start icon — aligned with the input baseline. Clickable to focus the input. */\r\n startIconWrap: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexShrink: 0,\r\n paddingLeft: theme.spacing.sm,\r\n cursor: 'pointer',\r\n },\r\n /** Wrapper for end actions (custom content + optional password toggle). */\r\n endActionWrap: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexShrink: 0,\r\n paddingRight: theme.spacing.xs,\r\n gap: theme.spacing['2xs'],\r\n },\r\n}), { id: 'textfield-extra' })\r\n","import { RefCallback, RefObject, useCallback, useId, useRef, useState } from 'react'\r\n\r\nimport { useMergedRefs } from '@hooks/common/use-merged-refs/useMergedRefs'\r\n\r\nimport type { TextFieldProps } from '@components/forms/text-field/TextField.props'\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { TextFieldSize } from '@components/forms/text-field/textField.types'\r\n\r\n/** Maps field size to an Icon size token for the start icon. */\r\nconst ICON_SIZE_MAP: Record<TextFieldSize, keyof Theme['fontSize']> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n}\r\n\r\n/** Maps field size to the password toggle IconButton size. */\r\nconst ICON_BUTTON_SIZE_MAP: Record<TextFieldSize, 'sm' | 'md' | 'lg'> = {\r\n sm: 'sm',\r\n md: 'sm',\r\n lg: 'md',\r\n}\r\n\r\ntype UseTextFieldParams = {\r\n id?: string\r\n ref?: TextFieldProps['ref']\r\n type?: TextFieldProps['type']\r\n size: TextFieldSize\r\n endAction?: TextFieldProps['endAction']\r\n}\r\n\r\ntype UseTextFieldReturn = {\r\n fieldId: string\r\n helperId: string\r\n inputRef: RefObject<HTMLInputElement | null>\r\n mergedRef: RefCallback<HTMLInputElement>\r\n isPassword: boolean\r\n showPassword: boolean\r\n togglePassword: () => void\r\n resolvedType: TextFieldProps['type']\r\n iconSize: keyof Theme['fontSize']\r\n iconButtonSize: 'sm' | 'md' | 'lg'\r\n hasEndSection: boolean\r\n focusInput: () => void\r\n}\r\n\r\n/**\r\n * Business logic for the TextField component: id resolution, ref merging,\r\n * password visibility toggling and size/status derived tokens.\r\n */\r\nexport const useTextField = ({\r\n id,\r\n ref,\r\n type,\r\n size,\r\n endAction,\r\n}: UseTextFieldParams): UseTextFieldReturn => {\r\n const generatedId = useId()\r\n const fieldId = id ?? generatedId\r\n const helperId = `${fieldId}-helper`\r\n\r\n const inputRef = useRef<HTMLInputElement | null>(null)\r\n const mergedRef = useMergedRefs<HTMLInputElement>(ref, inputRef)\r\n\r\n const [showPassword, setShowPassword] = useState(false)\r\n const isPassword = type === 'password'\r\n const resolvedType = isPassword ? (showPassword ? 'text' : 'password') : type\r\n\r\n const togglePassword = useCallback(() => setShowPassword((prev) => !prev), [])\r\n const focusInput = useCallback(() => inputRef.current?.focus(), [])\r\n\r\n return {\r\n fieldId,\r\n helperId,\r\n inputRef,\r\n mergedRef,\r\n isPassword,\r\n showPassword,\r\n togglePassword,\r\n resolvedType,\r\n iconSize: ICON_SIZE_MAP[size],\r\n iconButtonSize: ICON_BUTTON_SIZE_MAP[size],\r\n hasEndSection: endAction !== undefined || isPassword,\r\n focusInput,\r\n }\r\n}\r\n","import { FC } from 'react'\r\n\r\nimport EyeIcon from '@resources/assets/icons/EyeIcon.svg?react'\r\nimport EyeSlashIcon from '@resources/assets/icons/EyeSlashIcon.svg?react'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Text } from '@components/foundation/text'\r\nimport { IconButton } from '@components/actions/icon-button'\r\nimport { Stack } from '@components/layout/stack'\r\nimport { FormHelperText } from '@components/forms/_common/form-helper-text'\r\nimport { TEXTFIELD_INPUT_VARIANTS, TEXTFIELD_STYLES, TEXTFIELD_WRAPPER_VARIANTS } from '@components/forms/text-field/TextField.styles'\r\nimport { useTextField } from '@components/forms/text-field/utils/useTextField.utils'\r\n\r\nimport type { TextFieldProps } from '@components/forms/text-field/TextField.props'\r\n\r\n/**\r\n * Full-featured text input with label, helper text, icons and end actions.\r\n *\r\n * Supports all native input types. When `type` is `'password'`, a visibility\r\n * toggle is automatically injected as an end action.\r\n *\r\n * @example <TextField label=\"Email\" placeholder=\"you@example.com\" />\r\n * @example <TextField label=\"Password\" type=\"password\" helperText=\"Min. 8 characters.\" />\r\n * @example <TextField label=\"Name\" status=\"error\" helperText=\"This field is required.\" />\r\n * @example <TextField label=\"Search\" startIcon={SearchIcon} endAction={<ClearButton />} />\r\n */\r\nconst TextField: FC<TextFieldProps> = ({\r\n ref,\r\n label,\r\n helperText,\r\n size = 'md',\r\n status = 'default',\r\n startIcon: StartIcon,\r\n endAction,\r\n type,\r\n id,\r\n disabled,\r\n required,\r\n // ── Layout props → outer Stack wrapper (NOT the native <input>) ──\r\n width = '100%',\r\n minWidth = 0,\r\n maxWidth,\r\n flex,\r\n flexGrow,\r\n flexShrink,\r\n flexBasis,\r\n ...rest\r\n}) => {\r\n const {\r\n fieldId,\r\n helperId,\r\n mergedRef,\r\n isPassword,\r\n showPassword,\r\n togglePassword,\r\n resolvedType,\r\n iconSize,\r\n iconButtonSize,\r\n hasEndSection,\r\n focusInput,\r\n } = useTextField({ id, ref, type, size, endAction })\r\n\r\n // Associate the label with the input via `aria-labelledby` (and NOT `htmlFor`)\r\n // so the label stays accessible without natively focusing the input on click —\r\n // only clicking inside the bordered box should focus the field.\r\n const labelId = `${fieldId}-label`\r\n\r\n return (\r\n <Stack\r\n flexDirection={'column'}\r\n gap={'xs'}\r\n width={width}\r\n minWidth={minWidth}\r\n maxWidth={maxWidth}\r\n flex={flex}\r\n flexGrow={flexGrow}\r\n flexShrink={flexShrink}\r\n flexBasis={flexBasis}\r\n >\r\n {label !== undefined && (\r\n <Text\r\n variant={'label'}\r\n fontSize={'sm'}\r\n fontWeight={'medium'}\r\n color={'textSecondary'}\r\n id={labelId}\r\n >\r\n {label}\r\n {required && (\r\n <Text\r\n variant={'span'}\r\n color={'errorMain'}\r\n aria-hidden={true}\r\n >\r\n {' *'}\r\n </Text>\r\n )}\r\n </Text>\r\n )}\r\n\r\n <div\r\n className={TEXTFIELD_WRAPPER_VARIANTS({ size, status })}\r\n data-disabled={disabled || undefined}\r\n >\r\n {StartIcon && (\r\n <span\r\n className={TEXTFIELD_STYLES.startIconWrap}\r\n onClick={focusInput}\r\n aria-hidden={true}\r\n >\r\n <Icon\r\n icon={StartIcon}\r\n size={iconSize}\r\n strokeColor={'textSecondary'}\r\n />\r\n </span>\r\n )}\r\n\r\n <input\r\n ref={mergedRef}\r\n id={fieldId}\r\n type={resolvedType}\r\n disabled={disabled}\r\n required={required}\r\n aria-required={required || undefined}\r\n aria-invalid={status === 'error' || undefined}\r\n aria-labelledby={label !== undefined ? labelId : undefined}\r\n aria-describedby={helperText !== undefined ? helperId : undefined}\r\n aria-errormessage={status === 'error' && helperText !== undefined ? helperId : undefined}\r\n className={TEXTFIELD_INPUT_VARIANTS({ size })}\r\n {...rest}\r\n />\r\n\r\n {hasEndSection && (\r\n <span className={TEXTFIELD_STYLES.endActionWrap}>\r\n {endAction}\r\n {isPassword && (\r\n <IconButton\r\n icon={showPassword ? EyeSlashIcon : EyeIcon}\r\n ariaLabel={showPassword ? 'Hide password' : 'Show password'}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={iconButtonSize}\r\n type={'button'}\r\n onClick={togglePassword}\r\n />\r\n )}\r\n </span>\r\n )}\r\n </div>\r\n\r\n {helperText !== undefined && (\r\n <FormHelperText\r\n id={helperId}\r\n status={status}\r\n >\r\n {helperText}\r\n </FormHelperText>\r\n )}\r\n </Stack>\r\n )\r\n}\r\n\r\nTextField.displayName = 'TextField'\r\n\r\nexport default TextField\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\n/**\r\n * Vertical padding (in px) applied to the top and bottom of the menu panel.\r\n * Matches `theme.spacing.xs` (0.25rem = 4px at 16px base font).\r\n * Exported so submenus can offset their position upward by this amount to align\r\n * their first item with the trigger item.\r\n */\r\nexport const MENU_PANEL_PADDING_Y_PX = 5\r\n\r\nexport const MENU_PANEL_STYLES = createStyles((theme) => ({\r\n backdrop: {\r\n position: 'fixed' as const,\r\n inset: 0,\r\n zIndex: theme.zIndex.dropdown - 1,\r\n },\r\n panel: {\r\n position: 'fixed' as const,\r\n zIndex: theme.zIndex.dropdown,\r\n backgroundColor: theme.colors.surfacePaper,\r\n borderRadius: theme.radius.lg,\r\n border: `1px solid ${theme.colors.borderMain}`,\r\n boxShadow: theme.shadows.md,\r\n overflowY: 'auto' as const,\r\n paddingTop: theme.spacing.xs,\r\n paddingBottom: theme.spacing.xs,\r\n },\r\n}), { id: 'menu-panel' })\r\n","import { useEffect, useRef } from 'react'\nimport type { KeyPressMap, UseKeyPressOptions } from '@hooks/common/use-key-press/useKeyPress.types'\n\n/**\n * Listens to keyboard events and dispatches to the matching handler in `keyMap`.\n * A single hook call can handle multiple keys.\n *\n * @example\n * `\ts\n * useKeyPress(\n * { ArrowDown: onDown, ArrowUp: onUp, Enter: onEnter, Escape: onClose },\n * { enabled: isOpen }\n * )\n * `\n */\nexport const useKeyPress = (\n keyMap: KeyPressMap,\n { target, enabled = true }: UseKeyPressOptions = {}\n): void => {\n const mapRef = useRef<KeyPressMap>(keyMap)\n\n useEffect(() => {\n mapRef.current = keyMap\n })\n\n useEffect(() => {\n if (!enabled) {return}\n\n const eventTarget = target ?? document\n const listener = (event: Event): void => {\n const keyboardEvent = event as KeyboardEvent\n const handler = mapRef.current[keyboardEvent.key]\n handler?.(keyboardEvent)\n }\n\n eventTarget.addEventListener('keydown', listener)\n return () => eventTarget.removeEventListener('keydown', listener)\n }, [enabled, target])\n}\n","import { CSSProperties, useCallback, useEffect, useLayoutEffect, useState } from 'react'\r\nimport type { UseMenuPositionOptions, UseMenuPositionResult } from '@hooks/components/overlay/use-menu-position/useMenuPosition.types'\r\n\r\nconst VIEWPORT_MARGIN_PX = 8\r\n\r\n/** Floor applied to the menu width so dropdowns never feel cramped. */\r\nconst MENU_MIN_WIDTH_PX = 224\r\n\r\n/**\r\n * Computes and continuously updates the `position: fixed` style for a menu panel.\r\n *\r\n * Positioning strategy:\r\n * - `placement=\"bottom\"` (default): opens below the anchor; overflows are shifted up.\r\n * - `placement=\"top\"`: opens above the anchor; flips to bottom when no room.\r\n * - `placement=\"right\"`: opens to the right of the anchor; flips to the left when no room.\r\n * - `placement=\"left\"`: opens to the left of the anchor; flips to the right when no room.\r\n *\r\n * In all cases the vertical position is clamped inside the viewport.\r\n *\r\n * Scroll handling: the page scroll is locked while the menu is open (see\r\n * `MenuPanel`), so the anchor cannot move out from under the menu. As a safety\r\n * net for nested scroll containers, the menu re-positions on scroll/resize so it\r\n * always stays attached to its anchor.\r\n *\r\n * Uses a two-pass strategy: first render with `menuHeight = 0`, then a rAF\r\n * recompute with the actual rendered size to apply any overflow offset.\r\n */\r\nexport const useMenuPosition = ({\r\n anchorEl,\r\n open,\r\n menuRef,\r\n minWidth,\r\n gap = 4,\r\n verticalOffset = 0,\r\n placement = 'bottom',\r\n}: UseMenuPositionOptions): UseMenuPositionResult => {\r\n const [style, setStyle] = useState<CSSProperties>({})\r\n // Stays false until the rAF second pass has run with the real panel dimensions.\r\n // Keeps the panel invisible during the initial style={} state and the first\r\n // pass (menuHeight = 0) to prevent the position-jump flickering.\r\n const [isPositioned, setIsPositioned] = useState(false)\r\n\r\n const computePosition = useCallback(() => {\r\n if (!anchorEl) {return}\r\n\r\n const anchor = anchorEl.getBoundingClientRect()\r\n const menuEl = menuRef.current\r\n const menuHeight = menuEl?.offsetHeight ?? 0\r\n const menuWidth = menuEl?.offsetWidth ?? 0\r\n const viewportRight = window.innerWidth - VIEWPORT_MARGIN_PX\r\n const viewportBottom = window.innerHeight - VIEWPORT_MARGIN_PX\r\n\r\n if (placement === 'right' || placement === 'left') {\r\n // --- Vertical: align with the anchor top, offset upward by verticalOffset\r\n // (e.g. the panel's paddingTop) so the first item lines up with the trigger,\r\n // then clamp inside the viewport. ---\r\n let top = anchor.top - verticalOffset\r\n if (menuHeight > 0 && top + menuHeight > viewportBottom) {\r\n top = Math.max(VIEWPORT_MARGIN_PX, viewportBottom - menuHeight)\r\n }\r\n\r\n // --- Horizontal: open to the preferred side, flip to the opposite when no room ---\r\n let left: number\r\n if (placement === 'right') {\r\n left = anchor.right + gap\r\n if (menuWidth > 0 && left + menuWidth > viewportRight) {\r\n const flippedLeft = anchor.left - gap - menuWidth\r\n left = flippedLeft >= VIEWPORT_MARGIN_PX\r\n ? flippedLeft\r\n : Math.max(VIEWPORT_MARGIN_PX, viewportRight - menuWidth)\r\n }\r\n } else {\r\n // placement === 'left'\r\n left = anchor.left - gap - menuWidth\r\n if (menuWidth > 0 && left < VIEWPORT_MARGIN_PX) {\r\n const flippedLeft = anchor.right + gap\r\n left = flippedLeft + menuWidth <= viewportRight\r\n ? flippedLeft\r\n : Math.max(VIEWPORT_MARGIN_PX, viewportRight - menuWidth)\r\n }\r\n }\r\n\r\n setStyle({ top, left, minWidth: minWidth ?? MENU_MIN_WIDTH_PX })\r\n return\r\n }\r\n\r\n if (placement === 'top') {\r\n // --- Vertical: open above, flip to bottom when no room ---\r\n let top = anchor.top - gap - menuHeight\r\n if (menuHeight > 0 && top < VIEWPORT_MARGIN_PX) {\r\n const flippedTop = anchor.bottom + gap\r\n top = flippedTop + menuHeight <= viewportBottom\r\n ? flippedTop\r\n : Math.max(VIEWPORT_MARGIN_PX, viewportBottom - menuHeight)\r\n }\r\n\r\n // --- Horizontal ---\r\n const fallbackMinWidth = Math.max(anchor.width, MENU_MIN_WIDTH_PX)\r\n const resolvedMinWidth = typeof minWidth === 'number' ? minWidth : fallbackMinWidth\r\n const effectiveWidth = Math.max(menuWidth, resolvedMinWidth)\r\n const maxLeft = window.innerWidth - effectiveWidth - VIEWPORT_MARGIN_PX\r\n const left = Math.max(VIEWPORT_MARGIN_PX, Math.min(anchor.left, maxLeft))\r\n\r\n setStyle({ top, left, minWidth: minWidth ?? fallbackMinWidth })\r\n return\r\n }\r\n\r\n // --- placement === 'bottom' ---\r\n // --- Vertical ---\r\n const preferredTop = anchor.bottom + gap\r\n let top = preferredTop\r\n if (menuHeight > 0 && preferredTop + menuHeight > viewportBottom) {\r\n top = Math.max(VIEWPORT_MARGIN_PX, viewportBottom - menuHeight)\r\n }\r\n\r\n // --- Horizontal ---\r\n const fallbackMinWidth = Math.max(anchor.width, MENU_MIN_WIDTH_PX)\r\n const resolvedMinWidth = typeof minWidth === 'number' ? minWidth : fallbackMinWidth\r\n const effectiveWidth = Math.max(menuWidth, resolvedMinWidth)\r\n const maxLeft = window.innerWidth - effectiveWidth - VIEWPORT_MARGIN_PX\r\n const left = Math.max(VIEWPORT_MARGIN_PX, Math.min(anchor.left, maxLeft))\r\n\r\n setStyle({ top, left, minWidth: minWidth ?? fallbackMinWidth })\r\n }, [anchorEl, menuRef, minWidth, gap, verticalOffset, placement])\r\n\r\n // First pass: compute as soon as the menu opens (menuHeight = 0)\r\n useLayoutEffect(() => {\r\n if (open) {computePosition()}\r\n else {\r\n setStyle({})\r\n setIsPositioned(false)\r\n }\r\n }, [open, computePosition])\r\n\r\n // Second pass: recompute after the panel renders to get actual height/width,\r\n // then mark as positioned so the panel becomes visible.\r\n useEffect(() => {\r\n if (!open) {return}\r\n const id = requestAnimationFrame(() => {\r\n computePosition()\r\n setIsPositioned(true)\r\n })\r\n return () => cancelAnimationFrame(id)\r\n }, [open, computePosition])\r\n\r\n // Keep the menu glued to its anchor on scroll (nested containers) and resize.\r\n useEffect(() => {\r\n if (!open) {return}\r\n window.addEventListener('scroll', computePosition, true)\r\n window.addEventListener('resize', computePosition)\r\n return () => {\r\n window.removeEventListener('scroll', computePosition, true)\r\n window.removeEventListener('resize', computePosition)\r\n }\r\n }, [open, computePosition])\r\n\r\n // Hide the panel until it is correctly positioned to avoid the position-jump\r\n // flicker. `opacity` (rather than `visibility`/`display`) is used so the panel\r\n // stays in the accessibility tree and remains interactive — only its paint is\r\n // deferred for a single frame.\r\n return {\r\n style: isPositioned ? style : { ...style, opacity: 0 },\r\n }\r\n}\r\n","import { createContext } from 'react'\r\n\r\n/** Custom DOM event fired on a submenu trigger item to request it opens. */\r\nexport const OPEN_SUBMENU_EVENT = 'menu:open-submenu'\r\n\r\nexport type MenuContextValue = {\r\n /**\r\n * Called by a nested submenu (via its trigger item) when its open state\r\n * changes, so the parent menu can pause its own keyboard handling while a\r\n * descendant submenu is open. Only the innermost open menu reacts to keys.\r\n */\r\n setChildOpen?: (open: boolean) => void\r\n /**\r\n * Closes the whole menu tree (root menu). Propagated unchanged down to every\r\n * nested submenu so that clicking a leaf item can dismiss the entire menu.\r\n */\r\n closeMenu?: () => void\r\n}\r\n\r\n/**\r\n * Propagates submenu-open coordination and the root close handler down the menu\r\n * tree so that only the innermost open menu handles keyboard navigation and any\r\n * item can close the whole menu.\r\n */\r\nexport const MenuContext = createContext<MenuContextValue>({})\r\n\r\nexport type MenuNavigationContextValue = {\r\n /**\r\n * Id of the item currently highlighted by keyboard navigation within the\r\n * owning panel. Each `MenuItem` compares it to its own id to render\r\n * `data-focused`, and the panel exposes it via `aria-activedescendant`.\r\n * Driven entirely by React state — no direct DOM mutation — so it can never\r\n * desync from the rendered items.\r\n */\r\n focusedId?: string\r\n}\r\n\r\n/**\r\n * Scoped per `MenuPanel`: shares the keyboard-focused item id with that panel's\r\n * items only. Nested submenus provide their own value, so each panel manages its\r\n * own roving focus independently.\r\n */\r\nexport const MenuNavigationContext = createContext<MenuNavigationContextValue>({})\r\n","import { CSSProperties, RefObject, useCallback, useEffect, useRef, useState } from 'react'\r\n\r\nimport { useKeyPress } from '@hooks/common/use-key-press/useKeyPress'\r\nimport { useMenuPosition } from '@hooks/components/overlay/use-menu-position/useMenuPosition'\r\nimport { OPEN_SUBMENU_EVENT } from '@components/overlay/menu/MenuContext'\r\n\r\nimport type { MenuPlacement } from '@hooks/components/overlay/use-menu-position/useMenuPosition.types'\r\n\r\ntype UseMenuPanelParams = {\r\n /** Whether the menu is visible. */\r\n open: boolean\r\n /** Called when the menu should close (Escape, outside scroll…). */\r\n onClose: () => void\r\n /** Reference element used to position the menu. */\r\n anchorEl?: HTMLElement | null\r\n /** Minimum width override. */\r\n minWidth?: number | string\r\n /** Where the menu opens relative to the anchor. @default 'bottom' */\r\n placement?: MenuPlacement\r\n /**\r\n * Vertical offset in px applied for `'right'`/`'left'` placements — shifts\r\n * the panel upward so its first item aligns with the trigger item.\r\n * @default 0\r\n */\r\n verticalOffset?: number\r\n /**\r\n * Called when ArrowLeft is pressed — used by submenus to close themselves\r\n * and return focus to their trigger.\r\n */\r\n onArrowLeft?: () => void\r\n}\r\n\r\ntype UseMenuPanelReturn = {\r\n /** Ref to attach to the menu panel. */\r\n panelRef: RefObject<HTMLDivElement | null>\r\n /** Computed inline positioning style for the panel. */\r\n style: CSSProperties\r\n /**\r\n * Id of the keyboard-focused item — used both for `aria-activedescendant`\r\n * and shared with items (via context) so each renders its own `data-focused`.\r\n */\r\n focusedId: string | undefined\r\n /**\r\n * Setter passed down via context so a child submenu can pause this panel's\r\n * keyboard handling while it is open.\r\n */\r\n setChildOpen: (open: boolean) => void\r\n}\r\n\r\n/** CSS selector matching the focusable items of a menu/listbox panel. */\r\nconst ITEM_SELECTOR = '[role^=\"menuitem\"]:not([data-disabled]), [role=\"option\"]:not([data-disabled])'\r\n\r\n/**\r\n * Business logic for a menu panel: positioning, roving keyboard navigation\r\n * (Arrow/Home/End/Enter/Space), Escape-to-close, opening submenus (ArrowRight)\r\n * and pausing keyboard while a descendant submenu is open. Uses the WAI-ARIA\r\n * `menu` / `menuitem` pattern.\r\n *\r\n * Focus is tracked as a stable item **id** in React state (never by mutating the\r\n * DOM). The id is shared with items through `MenuNavigationContext` so each item\r\n * renders its own `data-focused`, and surfaced as the panel's\r\n * `aria-activedescendant`. Item order is read from the DOM (read-only) so the\r\n * logic stays correct across groups and dynamic content.\r\n */\r\nexport const useMenuPanel = ({\r\n open,\r\n onClose,\r\n anchorEl,\r\n minWidth,\r\n placement = 'bottom',\r\n verticalOffset = 0,\r\n onArrowLeft,\r\n}: UseMenuPanelParams): UseMenuPanelReturn => {\r\n const panelRef = useRef<HTMLDivElement>(null)\r\n const [focusedId, setFocusedId] = useState<string | undefined>(undefined)\r\n // True while a descendant submenu is open → pause this panel's keyboard nav.\r\n const [childOpen, setChildOpen] = useState(false)\r\n\r\n const { style } = useMenuPosition({ anchorEl, open, menuRef: panelRef, minWidth, placement, verticalOffset })\r\n\r\n /** Read this panel's focusable items in DOM order (excluding nested submenus). */\r\n const getItems = useCallback((): HTMLElement[] => {\r\n const panel = panelRef.current\r\n if (!panel) {return []}\r\n return Array.from(panel.querySelectorAll<HTMLElement>(ITEM_SELECTOR))\r\n .filter((el) => el.closest('[data-menu-panel]') === panel)\r\n }, [])\r\n\r\n /** Returns the currently focused item element (if still present). */\r\n const getFocusedItem = useCallback(\r\n (): HTMLElement | undefined => getItems().find((el) => el.id === focusedId),\r\n [getItems, focusedId]\r\n )\r\n\r\n /** Move the roving focus by `step`, wrapping around. Starts from the edge when nothing is focused. */\r\n const moveFocus = useCallback((step: 1 | -1): void => {\r\n const items = getItems()\r\n if (items.length === 0) {return}\r\n const current = items.findIndex((el) => el.id === focusedId)\r\n const next = current === -1\r\n ? (step === 1 ? 0 : items.length - 1)\r\n : (current + step + items.length) % items.length\r\n setFocusedId(items[next]?.id)\r\n }, [getItems, focusedId])\r\n\r\n // On open: focus the panel and pre-select a checked/selected item if any.\r\n // When nothing is pre-selected, leave focusedId undefined so no item appears\r\n // highlighted on mouse-open — the first ArrowDown/Up starts navigation.\r\n useEffect(() => {\r\n if (!open) {\r\n setFocusedId(undefined)\r\n return\r\n }\r\n const raf = requestAnimationFrame(() => {\r\n panelRef.current?.focus()\r\n const preselected = getItems().find(\r\n (el) => el.getAttribute('aria-checked') === 'true' || el.hasAttribute('data-selected')\r\n )\r\n setFocusedId(preselected?.id)\r\n })\r\n return () => cancelAnimationFrame(raf)\r\n }, [open, getItems])\r\n\r\n // Keep the focused item scrolled into view (read-only DOM access).\r\n useEffect(() => {\r\n if (!open || !focusedId) {return}\r\n getFocusedItem()?.scrollIntoView({ block: 'nearest' })\r\n }, [open, focusedId, getFocusedItem])\r\n\r\n // Switching to the mouse clears the keyboard highlight (hover takes over).\r\n useEffect(() => {\r\n const panel = panelRef.current\r\n if (!panel || !open) {return}\r\n const clearFocus = (): void => setFocusedId(undefined)\r\n panel.addEventListener('mousemove', clearFocus)\r\n return () => panel.removeEventListener('mousemove', clearFocus)\r\n }, [open])\r\n\r\n useKeyPress(\r\n {\r\n Escape: (e) => {\r\n e.preventDefault()\r\n onClose()\r\n },\r\n ArrowDown: (e) => {\r\n e.preventDefault()\r\n moveFocus(1)\r\n },\r\n ArrowUp: (e) => {\r\n e.preventDefault()\r\n moveFocus(-1)\r\n },\r\n ArrowRight: (e) => {\r\n // Open the submenu of the focused item (if any).\r\n const focused = getFocusedItem()\r\n if (focused?.getAttribute('aria-haspopup') === 'menu') {\r\n e.preventDefault()\r\n focused.dispatchEvent(new CustomEvent(OPEN_SUBMENU_EVENT))\r\n }\r\n },\r\n ArrowLeft: (e) => {\r\n if (onArrowLeft) {\r\n e.preventDefault()\r\n onArrowLeft()\r\n }\r\n },\r\n Home: (e) => {\r\n e.preventDefault()\r\n setFocusedId(getItems()[0]?.id)\r\n },\r\n End: (e) => {\r\n e.preventDefault()\r\n const items = getItems()\r\n setFocusedId(items[items.length - 1]?.id)\r\n },\r\n Enter: (e) => {\r\n e.preventDefault()\r\n getFocusedItem()?.click()\r\n },\r\n ' ': (e) => {\r\n e.preventDefault()\r\n getFocusedItem()?.click()\r\n },\r\n },\r\n { enabled: open && !childOpen }\r\n )\r\n\r\n return { panelRef, style, focusedId, setChildOpen }\r\n}\r\n","import { useEffect } from 'react'\r\n\r\n/** Returns the visible scrollbar width (0 with overlay/inset scrollbars like macOS). */\r\nconst getScrollbarWidth = (): number => window.innerWidth - document.documentElement.clientWidth\r\n\r\n/**\r\n * Returns every element that is currently scrollable, skipping entire subtrees\r\n * rooted at `[data-scroll-lock-ignore]` (overlays: menus, dialogs, drawers…).\r\n *\r\n * Uses a TreeWalker so ignored subtrees are never visited at all.\r\n * `getComputedStyle` is called only for elements whose scroll dimensions already\r\n * confirm overflow — avoiding expensive style recalculation for every node.\r\n *\r\n * `<html>` is checked separately; its computed `overflow` is often `'visible'`\r\n * even when the full page scrolls.\r\n */\r\nconst getScrollableElements = (): HTMLElement[] => {\r\n const scrollable: HTMLElement[] = []\r\n\r\n // Document-level scroll lives on <html>.\r\n if (document.documentElement.scrollHeight > window.innerHeight) {\r\n scrollable.push(document.documentElement)\r\n }\r\n\r\n const walker = document.createTreeWalker(\r\n document.body,\r\n NodeFilter.SHOW_ELEMENT,\r\n {\r\n acceptNode(node) {\r\n const el = node as HTMLElement\r\n\r\n // Reject entire overlay subtrees in one step (menus, dialogs, drawers…).\r\n if (el.hasAttribute('data-scroll-lock-ignore')) {\r\n return NodeFilter.FILTER_REJECT\r\n }\r\n\r\n // Cheap dimension pre-check — skips getComputedStyle for most nodes.\r\n const mayScrollY = el.scrollHeight > el.clientHeight\r\n const mayScrollX = el.scrollWidth > el.clientWidth\r\n\r\n if (!mayScrollY && !mayScrollX) {\r\n return NodeFilter.FILTER_SKIP\r\n }\r\n\r\n // Confirm that overflow is actually set to scroll/auto.\r\n const { overflowY, overflowX } = window.getComputedStyle(el)\r\n const scrollsY = mayScrollY && (overflowY === 'scroll' || overflowY === 'auto')\r\n const scrollsX = mayScrollX && (overflowX === 'scroll' || overflowX === 'auto')\r\n\r\n return scrollsY || scrollsX ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP\r\n },\r\n }\r\n )\r\n\r\n let node: Node | null\r\n while ((node = walker.nextNode())) {\r\n scrollable.push(node as HTMLElement)\r\n }\r\n\r\n return scrollable\r\n}\r\n\r\n/**\r\n * Locks **all** currently scrollable elements while `active` is true.\r\n *\r\n * Instead of assuming the scroll lives on `document.body`, this hook discovers\r\n * every element with real overflow and freezes it with `overflow: hidden`.\r\n * Elements marked `data-scroll-lock-ignore` — and their entire subtrees — are\r\n * skipped so overlays (menus, dialogs, drawers…) remain scrollable internally.\r\n *\r\n * For `<html>`, `paddingRight` is compensated when a native scrollbar is present\r\n * to prevent horizontal layout shift.\r\n *\r\n * All original styles are restored on cleanup.\r\n *\r\n * @example useBodyScrollLock(isMenuOpen)\r\n */\r\nexport const useBodyScrollLock = (active: boolean): void => {\r\n useEffect(() => {\r\n if (!active) {return}\r\n\r\n const scrollbarWidth = getScrollbarWidth()\r\n const elements = getScrollableElements()\r\n\r\n const restorers = elements.map((el) => {\r\n const savedOverflow = el.style.overflow\r\n const savedPaddingRight = el.style.paddingRight\r\n\r\n el.style.overflow = 'hidden'\r\n\r\n // Preserve the scrollbar gutter on the document root.\r\n if (el === document.documentElement && scrollbarWidth > 0) {\r\n const currentPadding = parseFloat(window.getComputedStyle(el).paddingRight) || 0\r\n el.style.paddingRight = `${currentPadding + scrollbarWidth}px`\r\n }\r\n\r\n return () => {\r\n el.style.overflow = savedOverflow\r\n if (el === document.documentElement && scrollbarWidth > 0) {\r\n el.style.paddingRight = savedPaddingRight\r\n }\r\n }\r\n })\r\n\r\n return () => restorers.forEach((restore) => restore())\r\n }, [active])\r\n}\r\n","import { FC, useContext, useMemo } from 'react'\r\nimport { createPortal } from 'react-dom'\r\nimport { MENU_PANEL_STYLES, MENU_PANEL_PADDING_Y_PX } from '@components/overlay/menu/menu-panel/MenuPanel.styles'\r\nimport { useMenuPanel } from '@components/overlay/menu/menu-panel/utils/useMenuPanel.utils'\r\nimport { MenuContext, MenuNavigationContext, type MenuContextValue, type MenuNavigationContextValue } from '@components/overlay/menu/MenuContext'\r\nimport { useBodyScrollLock } from '@hooks/common/use-body-scroll-lock/useBodyScrollLock'\r\nimport type { MenuPanelProps } from '@components/overlay/menu/menu-panel/MenuPanel.props'\r\n\r\n/**\r\n * Core menu surface used by both the root `Menu` and nested submenus.\r\n *\r\n * Renders a `role=\"menu\"` panel into a portal, wires keyboard navigation via\r\n * `useMenuPanel`, and (for the root only) a click-catching backdrop and a body\r\n * scroll lock. Locking the background scroll (the same strategy as Material UI)\r\n * keeps the menu glued to its anchor instead of drifting or detaching on scroll,\r\n * while the panel itself still scrolls internally when its content overflows.\r\n * The root close handler is propagated unchanged to every submenu so any leaf\r\n * item can dismiss the whole menu.\r\n */\r\nconst MenuPanel: FC<MenuPanelProps> = ({\r\n open,\r\n onClose,\r\n anchorEl,\r\n minWidth,\r\n maxHeight = '20rem',\r\n placement = 'bottom',\r\n isSubmenu = false,\r\n id,\r\n role = 'menu',\r\n 'aria-label': ariaLabel,\r\n 'aria-labelledby': ariaLabelledBy,\r\n onArrowLeft,\r\n onMouseEnter,\r\n onMouseLeave,\r\n children,\r\n}) => {\r\n const parentContext = useContext(MenuContext)\r\n // Submenus close the entire menu tree via the inherited root close handler.\r\n const closeMenu = isSubmenu ? parentContext.closeMenu ?? onClose : onClose\r\n\r\n // Only the root menu locks the page scroll (submenus inherit the locked state).\r\n useBodyScrollLock(open && !isSubmenu)\r\n\r\n const { panelRef, style, focusedId, setChildOpen } = useMenuPanel({\r\n open,\r\n onClose,\r\n anchorEl,\r\n minWidth,\r\n placement,\r\n // Shift submenus upward by the panel's paddingTop so the first item aligns\r\n // visually with the trigger item in the parent menu.\r\n verticalOffset: isSubmenu ? MENU_PANEL_PADDING_Y_PX : 0,\r\n onArrowLeft,\r\n })\r\n\r\n const contextValue = useMemo<MenuContextValue>(\r\n () => ({ setChildOpen, closeMenu }),\r\n [setChildOpen, closeMenu]\r\n )\r\n\r\n const navigationValue = useMemo<MenuNavigationContextValue>(\r\n () => ({ focusedId }),\r\n [focusedId]\r\n )\r\n\r\n if (!open) {return null}\r\n\r\n return createPortal(\r\n <MenuContext.Provider value={contextValue}>\r\n {!isSubmenu && (\r\n <div\r\n className={MENU_PANEL_STYLES.backdrop}\r\n onClick={onClose}\r\n aria-hidden={true}\r\n />\r\n )}\r\n <div\r\n ref={panelRef}\r\n id={id}\r\n role={role}\r\n tabIndex={-1}\r\n data-menu-panel={true}\r\n data-scroll-lock-ignore={true}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-activedescendant={focusedId}\r\n className={MENU_PANEL_STYLES.panel}\r\n style={{ ...style, maxHeight, outline: 'none' }}\r\n onMouseEnter={onMouseEnter}\r\n onMouseLeave={onMouseLeave}\r\n >\r\n <MenuNavigationContext.Provider value={navigationValue}>\r\n {children}\r\n </MenuNavigationContext.Provider>\r\n </div>\r\n </MenuContext.Provider>,\r\n document.body\r\n )\r\n}\r\n\r\nMenuPanel.displayName = 'MenuPanel'\r\n\r\nexport default MenuPanel\r\n","import { useId } from 'react'\r\n\r\ntype UseMenuGroupReturn = {\r\n /** Generated id linking the group label to its list. */\r\n labelId: string\r\n /** Value for the list's `aria-labelledby` (undefined when the group has no label). */\r\n labelledBy: string | undefined\r\n}\r\n\r\n/**\r\n * Business logic for a `MenuGroup`: generates a stable id so the group's list can\r\n * be associated with its (optional) visible label via `aria-labelledby`.\r\n */\r\nexport const useMenuGroup = (hasLabel: boolean): UseMenuGroupReturn => {\r\n const labelId = useId()\r\n return { labelId, labelledBy: hasLabel ? labelId : undefined }\r\n}\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const MENU_GROUP_STYLES = createStyles((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'column' as const,\r\n },\r\n divider: {\r\n height: '1px',\r\n backgroundColor: c.borderMain,\r\n marginTop: theme.spacing.xs,\r\n marginBottom: theme.spacing.xs,\r\n marginLeft: theme.spacing.md,\r\n marginRight: theme.spacing.md,\r\n },\r\n label: {\r\n paddingTop: theme.spacing.xs,\r\n paddingBottom: theme.spacing.xs,\r\n paddingLeft: theme.spacing.md,\r\n paddingRight: theme.spacing.md,\r\n color: c.textTertiary,\r\n fontSize: theme.fontSize.xs,\r\n fontWeight: theme.fontWeight.medium,\r\n userSelect: 'none' as const,\r\n textTransform: 'uppercase' as const,\r\n letterSpacing: '0.05em',\r\n },\r\n list: {\r\n listStyle: 'none',\r\n margin: '0',\r\n padding: '0',\r\n display: 'flex',\r\n flexDirection: 'column' as const,\r\n },\r\n }\r\n}, { id: 'menu-group' })\r\n","import { type FC } from 'react'\r\nimport { useMenuGroup } from '@components/overlay/menu/menu-group/utils/useMenuGroup.utils'\r\nimport { MENU_GROUP_STYLES } from '@components/overlay/menu/menu-group/MenuGroup.styles'\r\nimport type { MenuGroupProps } from '@components/overlay/menu/menu-group/MenuGroup.props'\r\n\r\nconst MenuGroup: FC<MenuGroupProps> = ({\r\n label,\r\n divider,\r\n children,\r\n}) => {\r\n const { labelId, labelledBy } = useMenuGroup(label !== undefined)\r\n\r\n return (\r\n <div className={MENU_GROUP_STYLES.root}>\r\n {divider && (\r\n <div\r\n className={MENU_GROUP_STYLES.divider}\r\n role={'separator'}\r\n aria-hidden={true}\r\n />\r\n )}\r\n {label !== undefined && (\r\n <span\r\n id={labelId}\r\n className={MENU_GROUP_STYLES.label}\r\n aria-hidden={true}\r\n >\r\n {label}\r\n </span>\r\n )}\r\n <ul\r\n className={MENU_GROUP_STYLES.list}\r\n role={'group'}\r\n aria-labelledby={labelledBy}\r\n >\r\n {children}\r\n </ul>\r\n </div>\r\n )\r\n}\r\n\r\nMenuGroup.displayName = 'MenuGroup'\r\n\r\nexport default MenuGroup\r\n","import { useCallback, useContext, useEffect, useRef, useState, type MouseEvent, type Ref, type RefObject } from 'react'\r\nimport { useMergedRefs } from '@hooks/common/use-merged-refs/useMergedRefs'\r\nimport { MenuContext, OPEN_SUBMENU_EVENT } from '@components/overlay/menu/MenuContext'\r\nimport type { MenuItemRole } from '@components/overlay/menu/menu-item/MenuItem.props'\r\n\r\n/** Delay before a hovered submenu opens / closes, to avoid flicker. */\r\nconst HOVER_OPEN_DELAY_MS = 120\r\nconst HOVER_CLOSE_DELAY_MS = 160\r\n\r\ntype UseMenuItemParams = {\r\n /** Forwarded consumer ref, merged with the internal `<li>` ref. */\r\n ref?: Ref<HTMLLIElement>\r\n /** Item ARIA role — drives the default close-on-click behaviour. */\r\n role: MenuItemRole\r\n /** Whether the item owns a submenu. */\r\n hasSubmenu: boolean\r\n /** Whether the item is non-interactive. */\r\n disabled?: boolean\r\n /** Consumer click handler (the item's action). */\r\n onClick?: (event: MouseEvent<HTMLLIElement>) => void\r\n /**\r\n * Whether clicking closes the whole menu. Defaults to `true` for plain\r\n * `menuitem`, `false` for `menuitemcheckbox` / `menuitemradio`.\r\n */\r\n closeOnClick?: boolean\r\n /**\r\n * What triggers the submenu to open/close.\r\n * - `'hover'` — opens on mouse enter, closes on mouse leave (default).\r\n * - `'click'` — opens/closes on click only; hover has no effect.\r\n * @default 'click'\r\n */\r\n submenuTrigger?: 'hover' | 'click'\r\n}\r\n\r\ntype UseMenuItemReturn = {\r\n /** Internal ref to the `<li>` element. */\r\n liRef: RefObject<HTMLLIElement | null>\r\n /** Merged ref to spread on the `<li>` (consumer ref + internal ref). */\r\n mergedRef: (node: HTMLLIElement | null) => void\r\n /** Whether the item's submenu is currently open. */\r\n submenuOpen: boolean\r\n /** Click handler running the action then closing the menu when appropriate. */\r\n handleClick: (event: MouseEvent<HTMLLIElement>) => void\r\n /** Schedules opening the submenu after a short hover delay. */\r\n scheduleOpen: () => void\r\n /** Schedules closing the submenu after a short hover delay. */\r\n scheduleClose: () => void\r\n /** Cancels any pending open/close timers (keeps the submenu state). */\r\n clearTimers: () => void\r\n /** Closes the submenu, optionally returning focus to the parent panel. */\r\n closeSubmenu: (refocusTrigger: boolean) => void\r\n /** Whether the submenu opens/closes on hover or on click only. */\r\n submenuTrigger: 'hover' | 'click'\r\n}\r\n\r\n/**\r\n * Business logic for a `MenuItem`: submenu open/close (hover, click, ArrowRight),\r\n * focus restoration, parent-keyboard pausing and the configurable close-on-click\r\n * behaviour.\r\n */\r\nexport const useMenuItem = ({\r\n ref,\r\n role,\r\n hasSubmenu,\r\n disabled,\r\n onClick,\r\n closeOnClick,\r\n submenuTrigger = 'hover',\r\n}: UseMenuItemParams): UseMenuItemReturn => {\r\n const { setChildOpen, closeMenu } = useContext(MenuContext)\r\n const liRef = useRef<HTMLLIElement>(null)\r\n const mergedRef = useMergedRefs(ref, liRef)\r\n const openTimer = useRef<ReturnType<typeof setTimeout>>(undefined)\r\n const closeTimer = useRef<ReturnType<typeof setTimeout>>(undefined)\r\n const [submenuOpen, setSubmenuOpen] = useState(false)\r\n\r\n const clearTimers = useCallback(() => {\r\n clearTimeout(openTimer.current)\r\n clearTimeout(closeTimer.current)\r\n }, [])\r\n\r\n const openSubmenu = useCallback(() => {\r\n clearTimers()\r\n setSubmenuOpen(true)\r\n }, [clearTimers])\r\n\r\n const closeSubmenu = useCallback((refocusTrigger: boolean) => {\r\n clearTimers()\r\n setSubmenuOpen(false)\r\n if (refocusTrigger) {\r\n // Return focus to the parent menu panel so keyboard nav resumes there.\r\n const parentPanel = liRef.current?.closest('[data-menu-panel]') as HTMLElement | null\r\n parentPanel?.focus()\r\n }\r\n }, [clearTimers])\r\n\r\n const scheduleOpen = useCallback(() => {\r\n clearTimeout(closeTimer.current)\r\n openTimer.current = setTimeout(() => setSubmenuOpen(true), HOVER_OPEN_DELAY_MS)\r\n }, [])\r\n\r\n const scheduleClose = useCallback(() => {\r\n clearTimeout(openTimer.current)\r\n closeTimer.current = setTimeout(() => setSubmenuOpen(false), HOVER_CLOSE_DELAY_MS)\r\n }, [])\r\n\r\n // Keep the parent menu informed so it pauses its own keyboard handling.\r\n useEffect(() => {\r\n if (!hasSubmenu) {return}\r\n setChildOpen?.(submenuOpen)\r\n return () => setChildOpen?.(false)\r\n }, [submenuOpen, hasSubmenu, setChildOpen])\r\n\r\n // Open on ArrowRight (dispatched by the parent menu's keyboard handler).\r\n useEffect(() => {\r\n const node = liRef.current\r\n if (!node || !hasSubmenu) {return}\r\n const handleOpen = (): void => openSubmenu()\r\n node.addEventListener(OPEN_SUBMENU_EVENT, handleOpen)\r\n return () => node.removeEventListener(OPEN_SUBMENU_EVENT, handleOpen)\r\n }, [hasSubmenu, openSubmenu])\r\n\r\n // Cleanup timers on unmount.\r\n useEffect(() => clearTimers, [clearTimers])\r\n\r\n // Plain action items and listbox options close the menu by default;\r\n // checkbox/radio items stay open.\r\n const shouldCloseOnClick = closeOnClick ?? (role === 'menuitem' || role === 'option')\r\n\r\n const handleClick = useCallback((event: MouseEvent<HTMLLIElement>): void => {\r\n if (disabled) {return}\r\n if (hasSubmenu) {\r\n if (submenuTrigger === 'click') {\r\n // Toggle: click again closes the submenu.\r\n setSubmenuOpen((prev) => !prev)\r\n } else {\r\n openSubmenu()\r\n }\r\n return\r\n }\r\n onClick?.(event)\r\n if (shouldCloseOnClick) {closeMenu?.()}\r\n }, [disabled, hasSubmenu, submenuTrigger, openSubmenu, onClick, shouldCloseOnClick, closeMenu])\r\n\r\n return {\r\n liRef,\r\n mergedRef,\r\n submenuOpen,\r\n handleClick,\r\n scheduleOpen,\r\n scheduleClose,\r\n clearTimers,\r\n closeSubmenu,\r\n submenuTrigger,\r\n }\r\n}\r\n","import { createStyles } from '@aurora-ds/theme'\r\nimport { DEFAULT_DRAWER_ITEM_SIZE } from '@constants/app.constants'\r\nimport type { MenuItemSize } from '@components/overlay/menu/menu-item/MenuItem.props'\r\n\r\ntype MenuItemStyleParams = { size: MenuItemSize }\r\n\r\nexport const MENU_ITEM_STYLES = createStyles((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n root: ({ size }: MenuItemStyleParams) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing.sm,\r\n paddingLeft: `calc(${theme.spacing.md} - 2px)`,\r\n paddingRight: theme.spacing.md,\r\n ...(size === 'default'\r\n ? { height: DEFAULT_DRAWER_ITEM_SIZE }\r\n : { paddingTop: theme.spacing.xs, paddingBottom: theme.spacing.xs }),\r\n borderLeft: '2px solid transparent',\r\n cursor: 'pointer',\r\n userSelect: 'none' as const,\r\n color: c.textPrimary,\r\n fontSize: theme.fontSize.sm,\r\n listStyle: 'none',\r\n transition: `background-color ${theme.transition.fast}, border-color ${theme.transition.fast}`,\r\n '&[data-selected]': {\r\n backgroundColor: c.primarySubtle,\r\n color: c.primaryMain,\r\n fontWeight: theme.fontWeight.medium,\r\n },\r\n '&[data-focused]': {\r\n backgroundColor: c.defaultSubtleHover,\r\n },\r\n '&[data-focused][data-selected]': {\r\n backgroundColor: c.primarySubtleHover,\r\n },\r\n '&[data-submenu-open]': {\r\n backgroundColor: c.primarySubtle,\r\n color: c.primaryMain,\r\n borderLeftColor: c.primaryMain,\r\n },\r\n '&[data-submenu-open]:hover:not([data-disabled])': {\r\n backgroundColor: c.primarySubtleHover,\r\n },\r\n '&[data-disabled]': {\r\n cursor: 'not-allowed',\r\n opacity: theme.opacity.high,\r\n },\r\n ':hover:not([data-disabled])': {\r\n backgroundColor: c.defaultSubtleHover,\r\n },\r\n ':active:not([data-disabled])': {\r\n backgroundColor: c.defaultSubtleActive,\r\n },\r\n }),\r\n /** Fixed-width leading slot keeping labels aligned for checkbox/radio items. */\r\n indicator: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: theme.fontSize.sm,\r\n height: theme.fontSize.sm,\r\n flexShrink: 0,\r\n },\r\n /** Filled dot shown for a checked radio item. */\r\n radioDot: {\r\n width: '0.5rem',\r\n height: '0.5rem',\r\n borderRadius: theme.radius.full,\r\n backgroundColor: c.primaryMain,\r\n },\r\n /** Pushes the trailing submenu chevron to the far right. */\r\n label: {\r\n flex: 1,\r\n minWidth: 0,\r\n },\r\n /** Trailing chevron for submenu trigger items. */\r\n submenuChevron: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n marginLeft: theme.spacing.sm,\r\n flexShrink: 0,\r\n },\r\n /**\r\n * Full-size transparent `<a>` wrapper used when `href` is provided.\r\n * Resets link defaults and mirrors the parent `<li>`'s flex layout so\r\n * the icon / label / chevron align correctly.\r\n */\r\n link: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing.sm,\r\n width: '100%',\r\n color: 'inherit',\r\n textDecoration: 'none',\r\n outline: 'none',\r\n '&:focus-visible': {\r\n outline: 'none',\r\n },\r\n },\r\n }\r\n}, { id: 'menu-item' })\r\n","import { useContext, useId, type FC, type MouseEvent } from 'react'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Text } from '@components/foundation/text'\r\nimport { MenuPanel } from '@components/overlay/menu/menu-panel'\r\nimport { useMenuItem } from '@components/overlay/menu/menu-item/utils/useMenuItem.utils'\r\nimport { MENU_ITEM_STYLES } from '@components/overlay/menu/menu-item/MenuItem.styles'\r\nimport { MenuNavigationContext } from '@components/overlay/menu/MenuContext'\r\nimport { CheckIcon, ChevronRightIcon } from '@resources/Icons'\r\nimport type { MenuItemProps } from '@components/overlay/menu/menu-item/MenuItem.props'\r\n\r\nconst MenuItem: FC<MenuItemProps> = ({\r\n ref,\r\n id,\r\n label,\r\n icon,\r\n iconColor,\r\n role = 'menuitem',\r\n checked,\r\n selected,\r\n focused,\r\n disabled,\r\n size = 'default',\r\n closeOnClick,\r\n submenu,\r\n submenuTrigger = 'click',\r\n submenuPlacement = 'right',\r\n href,\r\n target,\r\n onClick,\r\n ...rest\r\n}) => {\r\n const hasSubmenu = submenu !== undefined\r\n const isCheckable = role === 'menuitemcheckbox' || role === 'menuitemradio'\r\n const isOption = role === 'option'\r\n const isHighlighted = isCheckable ? Boolean(checked) : Boolean(selected)\r\n\r\n // Stable id used for roving focus (data-focused) and the panel's\r\n // aria-activedescendant. Consumers may override it via the `id` prop.\r\n const generatedId = useId()\r\n const itemId = id ?? generatedId\r\n\r\n // Keyboard focus is driven by the owning panel via context (no DOM mutation).\r\n // `focused` remains a manual override for consumers that drive it themselves.\r\n const { focusedId } = useContext(MenuNavigationContext)\r\n const isFocused = focused || focusedId === itemId\r\n\r\n const {\r\n liRef,\r\n mergedRef,\r\n submenuOpen,\r\n handleClick,\r\n scheduleOpen,\r\n scheduleClose,\r\n clearTimers,\r\n closeSubmenu,\r\n } = useMenuItem({ ref, role, hasSubmenu, disabled, onClick, closeOnClick, submenuTrigger })\r\n\r\n const isHoverTrigger = submenuTrigger === 'hover'\r\n\r\n /**\r\n * When `href` is provided, the `<a>` is the browser navigation element.\r\n * - If `onClick` is also given (SPA routing): prevent browser navigation,\r\n * the click bubbles to `<li>` where `handleClick` calls `onClick` + `closeMenu`.\r\n * - If only `href` (plain link): let the browser navigate, `handleClick` on\r\n * the `<li>` still fires via bubbling and closes the menu.\r\n * - If `disabled`: prevent navigation entirely.\r\n */\r\n const handleAnchorClick = (e: MouseEvent<HTMLAnchorElement>): void => {\r\n if (disabled) {\r\n e.preventDefault()\r\n return\r\n }\r\n if (onClick) {\r\n // Prevent browser follow; SPA handler will be called via bubbling.\r\n e.preventDefault()\r\n }\r\n }\r\n\r\n const innerContent = (\r\n <>\r\n {isCheckable && (\r\n <span\r\n className={MENU_ITEM_STYLES.indicator}\r\n aria-hidden={true}\r\n >\r\n {checked && role === 'menuitemcheckbox' && (\r\n <Icon\r\n icon={CheckIcon}\r\n size={size === 'default' ? 'sm' : 'md'}\r\n strokeColor={'primaryMain'}\r\n />\r\n )}\r\n {checked && role === 'menuitemradio' && (\r\n <span className={MENU_ITEM_STYLES.radioDot} />\r\n )}\r\n </span>\r\n )}\r\n {icon !== undefined && (\r\n <Icon\r\n icon={icon}\r\n size={'sm'}\r\n strokeColor={iconColor ?? (isHighlighted ? 'primaryMain' : 'textSecondary')}\r\n />\r\n )}\r\n <Text\r\n variant={'span'}\r\n fontSize={'sm'}\r\n className={MENU_ITEM_STYLES.label}\r\n >\r\n {label}\r\n </Text>\r\n {hasSubmenu && (\r\n <span\r\n className={MENU_ITEM_STYLES.submenuChevron}\r\n aria-hidden={true}\r\n >\r\n <Icon\r\n icon={ChevronRightIcon}\r\n size={'sm'}\r\n strokeColor={'textTertiary'}\r\n />\r\n </span>\r\n )}\r\n </>\r\n )\r\n\r\n return (\r\n <>\r\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions */}\r\n <li\r\n ref={mergedRef}\r\n id={itemId}\r\n role={role}\r\n aria-checked={isCheckable ? Boolean(checked) : undefined}\r\n aria-selected={isOption ? Boolean(selected) : undefined}\r\n aria-disabled={disabled}\r\n aria-haspopup={hasSubmenu ? 'menu' : undefined}\r\n aria-expanded={hasSubmenu ? submenuOpen : undefined}\r\n data-selected={isHighlighted || undefined}\r\n data-focused={isFocused || undefined}\r\n data-disabled={disabled || undefined}\r\n data-submenu-open={hasSubmenu && submenuOpen || undefined}\r\n className={MENU_ITEM_STYLES.root({ size })}\r\n onClick={handleClick}\r\n onMouseEnter={hasSubmenu && !disabled && isHoverTrigger ? scheduleOpen : undefined}\r\n onMouseLeave={hasSubmenu && isHoverTrigger ? scheduleClose : undefined}\r\n {...rest}\r\n >\r\n {href ? (\r\n <a\r\n href={href}\r\n target={target}\r\n rel={target === '_blank' ? 'noopener noreferrer' : undefined}\r\n aria-disabled={disabled || undefined}\r\n className={MENU_ITEM_STYLES.link}\r\n tabIndex={-1}\r\n onClick={handleAnchorClick}\r\n >\r\n {innerContent}\r\n </a>\r\n ) : innerContent}\r\n </li>\r\n {hasSubmenu && (\r\n <MenuPanel\r\n open={submenuOpen}\r\n onClose={() => closeSubmenu(true)}\r\n onArrowLeft={() => closeSubmenu(true)}\r\n anchorEl={liRef.current}\r\n placement={submenuPlacement}\r\n isSubmenu={true}\r\n aria-label={label}\r\n onMouseEnter={isHoverTrigger ? clearTimers : undefined}\r\n onMouseLeave={isHoverTrigger ? scheduleClose : undefined}\r\n >\r\n {submenu}\r\n </MenuPanel>\r\n )}\r\n </>\r\n )\r\n}\r\n\r\nMenuItem.displayName = 'MenuItem'\r\n\r\nexport default MenuItem\r\n","import { FC } from 'react'\r\nimport { MenuPanel } from '@components/overlay/menu/menu-panel'\r\nimport MenuGroup from '@components/overlay/menu/menu-group/MenuGroup'\r\nimport MenuItem from '@components/overlay/menu/menu-item/MenuItem'\r\nimport type { MenuProps } from '@components/overlay/menu/Menu.props'\r\nimport type { MenuComponent } from '@components/overlay/menu/Menu.types'\r\n\r\nconst MenuBase: FC<MenuProps> = (props) => <MenuPanel {...props} />\r\n\r\nMenuBase.displayName = 'Menu'\r\n\r\nconst Menu = MenuBase as MenuComponent\r\nMenu.Item = MenuItem\r\nMenu.Group = MenuGroup\r\n\r\nexport default Menu\r\n","import { createStyles, createVariants } from '@aurora-ds/theme'\r\n\r\nexport const SELECT_TRIGGER_VARIANTS = createVariants((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n base: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing.sm,\r\n boxSizing: 'border-box' as const,\r\n width: '100%',\r\n borderWidth: '1px',\r\n borderStyle: 'solid',\r\n borderRadius: theme.radius.md,\r\n backgroundColor: c.surfacePaper,\r\n cursor: 'pointer',\r\n transition: `border-color ${theme.transition.fast}`,\r\n outline: 'none',\r\n fontFamily: 'inherit',\r\n // No focus ring on the trigger: focus is conveyed by the border\r\n // colour change (see the `status` variants below).\r\n '&[data-open]': {\r\n borderColor: c.primaryMain,\r\n },\r\n '&[data-disabled]': {\r\n opacity: theme.opacity.high,\r\n backgroundColor: c.disabledMain,\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n variants: {\r\n size: {\r\n sm: {\r\n height: '2rem',\r\n paddingLeft: theme.spacing.md,\r\n paddingRight: theme.spacing.sm,\r\n fontSize: theme.fontSize.xs,\r\n },\r\n md: {\r\n height: '2.5rem',\r\n paddingLeft: theme.spacing.md,\r\n paddingRight: theme.spacing.sm,\r\n fontSize: theme.fontSize.sm,\r\n },\r\n lg: {\r\n height: '3rem',\r\n paddingLeft: theme.spacing.lg,\r\n paddingRight: theme.spacing.md,\r\n fontSize: theme.fontSize.md,\r\n },\r\n },\r\n status: {\r\n default: {\r\n borderColor: c.borderMain,\r\n ':hover:not([data-disabled]):not([data-open])': {\r\n borderColor: c.borderStrong,\r\n },\r\n '&:focus-visible:not([data-open])': {\r\n borderColor: c.primaryMain,\r\n },\r\n },\r\n error: {\r\n borderColor: c.errorMain,\r\n },\r\n success: {\r\n borderColor: c.successMain,\r\n },\r\n warning: {\r\n borderColor: c.warningMain,\r\n },\r\n },\r\n },\r\n defaultVariants: { size: 'md', status: 'default' },\r\n }\r\n}, { id: 'select-trigger' })\r\n\r\nexport const SELECT_TRIGGER_STYLES = createStyles((theme) => ({\r\n value: {\r\n flex: 1,\r\n minWidth: 0,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap' as const,\r\n color: theme.colors.textPrimary,\r\n textAlign: 'left' as const,\r\n },\r\n placeholder: {\r\n flex: 1,\r\n minWidth: 0,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap' as const,\r\n color: theme.colors.textTertiary,\r\n textAlign: 'left' as const,\r\n },\r\n chevron: {\r\n flexShrink: 0,\r\n transition: `transform ${theme.transition.fast}`,\r\n color: theme.colors.textSecondary,\r\n },\r\n chevronOpen: {\r\n transform: 'rotate(180deg)',\r\n },\r\n}), { id: 'select-trigger-extra' })\r\n","import type { FC } from 'react'\r\nimport { cx } from '@aurora-ds/theme'\r\nimport ChevronDownIcon from '@resources/assets/icons/ChevronDownIcon.svg?react'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { SELECT_TRIGGER_STYLES, SELECT_TRIGGER_VARIANTS } from '@components/forms/select/select-trigger/SelectTrigger.styles'\r\nimport type { SelectTriggerProps } from '@components/forms/select/select-trigger/SelectTrigger.props'\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { TextFieldSize } from '@components/forms/text-field/textField.types'\r\n\r\nconst ICON_SIZE_MAP: Record<TextFieldSize, keyof Theme['fontSize']> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg',\r\n}\r\n\r\nconst SelectTrigger: FC<SelectTriggerProps> = ({\r\n ref,\r\n size = 'md',\r\n status = 'default',\r\n open,\r\n hasValue,\r\n startIcon,\r\n startIconColor = 'textSecondary',\r\n disabled,\r\n children,\r\n 'aria-expanded': ariaExpanded,\r\n 'aria-controls': ariaControls,\r\n ...rest\r\n}) => {\r\n const iconSize = ICON_SIZE_MAP[size]\r\n\r\n return (\r\n <button\r\n type={'button'}\r\n role={'combobox'}\r\n ref={ref}\r\n className={SELECT_TRIGGER_VARIANTS({ size, status })}\r\n data-open={open || undefined}\r\n data-disabled={disabled || undefined}\r\n disabled={disabled}\r\n aria-expanded={ariaExpanded}\r\n aria-controls={ariaControls}\r\n {...rest}\r\n >\r\n {startIcon !== undefined && (\r\n <Icon\r\n icon={startIcon}\r\n size={iconSize}\r\n strokeColor={startIconColor}\r\n />\r\n )}\r\n <span className={hasValue ? SELECT_TRIGGER_STYLES.value : SELECT_TRIGGER_STYLES.placeholder}>\r\n {children}\r\n </span>\r\n <Icon\r\n icon={ChevronDownIcon}\r\n size={iconSize}\r\n className={cx(SELECT_TRIGGER_STYLES.chevron, open ? SELECT_TRIGGER_STYLES.chevronOpen : undefined)}\r\n strokeColor={'textSecondary'}\r\n />\r\n </button>\r\n )\r\n}\r\n\r\nSelectTrigger.displayName = 'SelectTrigger'\r\n\r\nexport default SelectTrigger\r\n","import { RefCallback, RefObject, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react'\r\n\r\nimport { useControllableState } from '@hooks/common/use-controllable-state/useControllableState'\r\nimport { useMergedRefs } from '@hooks/common/use-merged-refs/useMergedRefs'\r\n\r\nimport type { SelectProps } from '@components/forms/select/Select.props'\r\nimport type { SelectOption } from '@components/forms/select/select.types'\r\n\r\ntype UseSelectParams = {\r\n id?: string\r\n ref?: SelectProps['ref']\r\n value?: string\r\n defaultValue?: string\r\n onChange?: (value: string) => void\r\n options?: SelectOption[]\r\n disabled?: boolean\r\n}\r\n\r\ntype UseSelectReturn = {\r\n fieldId: string\r\n labelId: string\r\n helperId: string\r\n menuId: string\r\n triggerRef: RefObject<HTMLButtonElement | null>\r\n mergedRef: RefCallback<HTMLButtonElement>\r\n open: boolean\r\n toggle: () => void\r\n close: () => void\r\n currentValue: string\r\n selectedOption: SelectOption | undefined\r\n groupedOptions: Map<string | undefined, SelectOption[]>\r\n handleSelect: (optValue: string) => void\r\n}\r\n\r\n/**\r\n * Business logic for the Select component: id resolution, ref merging,\r\n * controlled/uncontrolled value handling, open state, option grouping and\r\n * focus restoration to the trigger when the menu closes.\r\n */\r\nexport const useSelect = ({\r\n id,\r\n ref,\r\n value,\r\n defaultValue,\r\n onChange,\r\n options,\r\n disabled,\r\n}: UseSelectParams): UseSelectReturn => {\r\n const generatedId = useId()\r\n const fieldId = id ?? generatedId\r\n const helperId = `${fieldId}-helper`\r\n const menuId = `${fieldId}-menu`\r\n const labelId = `${fieldId}-label`\r\n\r\n const triggerRef = useRef<HTMLButtonElement | null>(null)\r\n const mergedRef = useMergedRefs<HTMLButtonElement>(ref, triggerRef)\r\n\r\n const [open, setOpen] = useState(false)\r\n\r\n const [currentValue, setValue] = useControllableState<string>({\r\n value,\r\n defaultValue: defaultValue ?? '',\r\n onChange,\r\n })\r\n\r\n // Restore focus to the trigger when the menu closes.\r\n const wasOpenRef = useRef(false)\r\n useEffect(() => {\r\n if (wasOpenRef.current && !open) {\r\n triggerRef.current?.focus()\r\n }\r\n wasOpenRef.current = open\r\n }, [open])\r\n\r\n const selectedOption = useMemo(\r\n () => options?.find((opt) => opt.value === currentValue),\r\n [options, currentValue]\r\n )\r\n\r\n const groupedOptions = useMemo(() => {\r\n const map = new Map<string | undefined, SelectOption[]>()\r\n for (const opt of options ?? []) {\r\n const key = opt.group\r\n const existing = map.get(key)\r\n if (existing !== undefined) {\r\n existing.push(opt)\r\n } else {\r\n map.set(key, [opt])\r\n }\r\n }\r\n return map\r\n }, [options])\r\n\r\n const handleSelect = useCallback(\r\n (optValue: string) => {\r\n setValue(optValue)\r\n setOpen(false)\r\n },\r\n [setValue]\r\n )\r\n\r\n const toggle = useCallback(() => {\r\n if (!disabled) {\r\n setOpen((prev) => !prev)\r\n }\r\n }, [disabled])\r\n\r\n const close = useCallback(() => setOpen(false), [])\r\n\r\n return {\r\n fieldId,\r\n labelId,\r\n helperId,\r\n menuId,\r\n triggerRef,\r\n mergedRef,\r\n open,\r\n toggle,\r\n close,\r\n currentValue,\r\n selectedOption,\r\n groupedOptions,\r\n handleSelect,\r\n }\r\n}\r\n","import { FC } from 'react'\r\nimport { Stack } from '@components/layout/stack'\r\nimport { Text } from '@components/foundation/text'\r\nimport { FormHelperText } from '@components/forms/_common/form-helper-text'\r\nimport { Menu } from '@components/overlay/menu'\r\nimport { SelectTrigger } from '@components/forms/select/select-trigger'\r\nimport { useSelect } from '@components/forms/select/utils/useSelect.utils'\r\nimport type { SelectProps } from '@components/forms/select/Select.props'\r\n\r\nconst Select: FC<SelectProps> = ({\r\n ref,\r\n value,\r\n defaultValue,\r\n onChange,\r\n options,\r\n label,\r\n helperText,\r\n placeholder,\r\n size = 'md',\r\n status = 'default',\r\n disabled,\r\n required,\r\n width,\r\n id,\r\n}) => {\r\n const {\r\n fieldId,\r\n labelId,\r\n helperId,\r\n menuId,\r\n triggerRef,\r\n mergedRef,\r\n open,\r\n toggle,\r\n close,\r\n currentValue,\r\n selectedOption,\r\n groupedOptions,\r\n handleSelect,\r\n } = useSelect({ id, ref, value, defaultValue, onChange, options, disabled })\r\n\r\n return (\r\n <Stack\r\n flexDirection={'column'}\r\n gap={'xs'}\r\n style={{ width: width ?? '100%' }}\r\n >\r\n {label !== undefined && (\r\n <Text\r\n variant={'label'}\r\n fontSize={'sm'}\r\n fontWeight={'medium'}\r\n color={'textSecondary'}\r\n htmlFor={fieldId}\r\n id={labelId}\r\n >\r\n {label}\r\n {required && (\r\n <Text\r\n variant={'span'}\r\n color={'errorMain'}\r\n aria-hidden={true}\r\n >\r\n {' *'}\r\n </Text>\r\n )}\r\n </Text>\r\n )}\r\n\r\n <SelectTrigger\r\n ref={mergedRef}\r\n id={fieldId}\r\n size={size}\r\n status={status}\r\n open={open}\r\n hasValue={selectedOption !== undefined}\r\n startIcon={selectedOption?.icon}\r\n startIconColor={selectedOption?.iconColor}\r\n disabled={disabled}\r\n aria-haspopup={'listbox'}\r\n aria-expanded={open}\r\n aria-controls={menuId}\r\n aria-labelledby={label !== undefined ? `${labelId} ${fieldId}` : undefined}\r\n aria-required={required || undefined}\r\n aria-invalid={status === 'error' || undefined}\r\n aria-errormessage={status === 'error' && helperText !== undefined ? helperId : undefined}\r\n aria-describedby={helperText !== undefined ? helperId : undefined}\r\n onClick={toggle}\r\n >\r\n {selectedOption !== undefined ? selectedOption.label : placeholder}\r\n </SelectTrigger>\r\n\r\n <Menu\r\n open={open}\r\n onClose={close}\r\n anchorEl={triggerRef.current}\r\n id={menuId}\r\n role={'listbox'}\r\n aria-labelledby={label !== undefined ? labelId : undefined}\r\n aria-label={label === undefined ? placeholder : undefined}\r\n >\r\n {Array.from(groupedOptions.entries()).map(([groupKey, groupOpts], groupIndex) => {\r\n const items = groupOpts.map((opt) => (\r\n <Menu.Item\r\n key={opt.value}\r\n role={'option'}\r\n size={'compact'}\r\n label={opt.label}\r\n icon={opt.icon}\r\n iconColor={opt.iconColor}\r\n selected={opt.value === currentValue}\r\n disabled={opt.disabled}\r\n onClick={() => handleSelect(opt.value)}\r\n />\r\n ))\r\n return groupKey !== undefined ? (\r\n <Menu.Group\r\n key={groupKey}\r\n label={groupKey}\r\n divider={groupIndex > 0}\r\n >\r\n {items}\r\n </Menu.Group>\r\n ) : (\r\n <Menu.Group\r\n key={'__ungrouped'}\r\n divider={groupIndex > 0}\r\n >\r\n {items}\r\n </Menu.Group>\r\n )\r\n })}\r\n </Menu>\r\n\r\n {helperText !== undefined && (\r\n <FormHelperText\r\n id={helperId}\r\n status={status}\r\n >\r\n {helperText}\r\n </FormHelperText>\r\n )}\r\n </Stack>\r\n )\r\n}\r\n\r\nSelect.displayName = 'Select'\r\n\r\nexport default Select\r\n","import { createStyles, createVariants } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const CHECKBOX_ROOT_VARIANTS = createVariants((theme) => ({\r\n base: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: theme.spacing.sm,\r\n cursor: 'pointer',\r\n userSelect: 'none',\r\n },\r\n variants: {\r\n disabled: {\r\n true: {\r\n cursor: 'not-allowed',\r\n opacity: theme.opacity.high,\r\n },\r\n false: {},\r\n },\r\n },\r\n defaultVariants: {\r\n disabled: 'false',\r\n },\r\n}), { id: 'checkbox-root' })\r\n\r\nexport const CHECKBOX_INPUT_VARIANTS = createVariants((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n base: {\r\n appearance: 'none',\r\n position: 'relative' as const,\r\n margin: 0,\r\n borderWidth: '1px',\r\n borderStyle: 'solid',\r\n borderColor: c.borderStrong,\r\n borderRadius: theme.radius.sm,\r\n backgroundColor: c.surfacePaper,\r\n transition: `border-color ${theme.transition.fast}, background-color ${theme.transition.fast}`,\r\n cursor: 'pointer',\r\n '&:focus-visible': getFocusRingStyles(theme),\r\n '&::after': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n left: '50%',\r\n top: '50%',\r\n transform: 'translate(-50%, -56%) rotate(45deg)',\r\n width: '0.25rem',\r\n height: '0.5rem',\r\n borderRight: `2px solid ${c.textInverse}`,\r\n borderBottom: `2px solid ${c.textInverse}`,\r\n opacity: 0,\r\n },\r\n '&:checked::after': {\r\n opacity: 1,\r\n },\r\n '&:indeterminate::after': {\r\n width: '0.5rem',\r\n height: '0',\r\n borderRight: '0',\r\n borderBottom: `2px solid ${c.textInverse}`,\r\n transform: 'translate(-50%, -50%)',\r\n opacity: 1,\r\n },\r\n },\r\n variants: {\r\n size: {\r\n sm: {\r\n width: '1rem',\r\n height: '1rem',\r\n },\r\n md: {\r\n width: '1.125rem',\r\n height: '1.125rem',\r\n },\r\n lg: {\r\n width: '1.25rem',\r\n height: '1.25rem',\r\n },\r\n },\r\n status: {\r\n default: {\r\n '&:checked, &:indeterminate': {\r\n borderColor: c.primaryMain,\r\n backgroundColor: c.primaryMain,\r\n },\r\n },\r\n error: {\r\n borderColor: c.errorMain,\r\n '&:checked, &:indeterminate': {\r\n borderColor: c.errorMain,\r\n backgroundColor: c.errorMain,\r\n },\r\n },\r\n success: {\r\n borderColor: c.successMain,\r\n '&:checked, &:indeterminate': {\r\n borderColor: c.successMain,\r\n backgroundColor: c.successMain,\r\n },\r\n },\r\n warning: {\r\n borderColor: c.warningMain,\r\n '&:checked, &:indeterminate': {\r\n borderColor: c.warningMain,\r\n backgroundColor: c.warningMain,\r\n },\r\n },\r\n },\r\n disabled: {\r\n true: {\r\n cursor: 'not-allowed',\r\n backgroundColor: c.disabledMain,\r\n borderColor: c.disabledMain,\r\n '&:checked, &:indeterminate': {\r\n backgroundColor: c.disabledText,\r\n borderColor: c.disabledText,\r\n },\r\n },\r\n false: {},\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'md',\r\n status: 'default',\r\n disabled: 'false',\r\n },\r\n }\r\n}, { id: 'checkbox-input' })\r\n\r\nexport const CHECKBOX_STYLES = createStyles((theme) => ({\r\n wrapper: {\r\n display: 'inline-flex',\r\n flexDirection: 'column',\r\n gap: theme.spacing.xs,\r\n },\r\n helper: {\r\n marginLeft: `calc(1.125rem + ${theme.spacing.sm})`,\r\n },\r\n}), { id: 'checkbox-extra' })\r\n","import { type RefObject, useEffect, useId, useRef } from 'react'\r\n\r\nimport { useMergedRefs } from '@hooks/common/use-merged-refs/useMergedRefs'\r\n\r\nimport type { CheckboxProps } from '@components/forms/checkbox/Checkbox.props'\r\n\r\ntype UseCheckboxParams = {\r\n id?: string\r\n ref?: CheckboxProps['ref']\r\n indeterminate?: boolean\r\n}\r\n\r\ntype UseCheckboxReturn = {\r\n checkboxId: string\r\n helperId: string\r\n mergedRef: (node: HTMLInputElement | null) => void\r\n inputRef: RefObject<HTMLInputElement | null>\r\n}\r\n\r\n/** Handles id generation, ref merging and native indeterminate state sync. */\r\nexport const useCheckbox = ({ id, ref, indeterminate = false }: UseCheckboxParams): UseCheckboxReturn => {\r\n const generatedId = useId()\r\n const checkboxId = id ?? generatedId\r\n const helperId = `${checkboxId}-helper`\r\n\r\n const inputRef = useRef<HTMLInputElement | null>(null)\r\n const mergedRef = useMergedRefs<HTMLInputElement>(ref, inputRef)\r\n\r\n useEffect(() => {\r\n if (inputRef.current) {\r\n inputRef.current.indeterminate = indeterminate\r\n }\r\n }, [indeterminate])\r\n\r\n return {\r\n checkboxId,\r\n helperId,\r\n mergedRef,\r\n inputRef,\r\n }\r\n}\r\n","import { type FC } from 'react'\r\n\r\nimport { Text } from '@components/foundation/text'\r\nimport { FormHelperText } from '@components/forms/_common/form-helper-text'\r\nimport {\r\n CHECKBOX_INPUT_VARIANTS,\r\n CHECKBOX_ROOT_VARIANTS,\r\n CHECKBOX_STYLES,\r\n} from '@components/forms/checkbox/Checkbox.styles'\r\nimport { useCheckbox } from '@components/forms/checkbox/utils/useCheckbox.utils'\r\n\r\nimport type { CheckboxProps } from '@components/forms/checkbox/Checkbox.props'\r\n\r\nconst Checkbox: FC<CheckboxProps> = ({\r\n ref,\r\n label,\r\n helperText,\r\n size = 'md',\r\n status = 'default',\r\n indeterminate = false,\r\n error,\r\n id,\r\n disabled,\r\n required,\r\n ...rest\r\n}) => {\r\n const resolvedStatus = error ? 'error' : status\r\n const { checkboxId, helperId, mergedRef } = useCheckbox({ id, ref, indeterminate })\r\n\r\n return (\r\n <div className={CHECKBOX_STYLES.wrapper}>\r\n <label\r\n htmlFor={checkboxId}\r\n className={CHECKBOX_ROOT_VARIANTS({ disabled: disabled ? 'true' : 'false' })}\r\n >\r\n <input\r\n ref={mergedRef}\r\n id={checkboxId}\r\n type={'checkbox'}\r\n disabled={disabled}\r\n required={required}\r\n aria-required={required || undefined}\r\n aria-invalid={resolvedStatus === 'error' || undefined}\r\n aria-describedby={helperText !== undefined ? helperId : undefined}\r\n aria-errormessage={resolvedStatus === 'error' && helperText !== undefined ? helperId : undefined}\r\n className={CHECKBOX_INPUT_VARIANTS({\r\n size,\r\n status: resolvedStatus,\r\n disabled: disabled ? 'true' : 'false',\r\n })}\r\n {...rest}\r\n />\r\n\r\n {label !== undefined && (\r\n <Text\r\n variant={'span'}\r\n fontSize={size === 'lg' ? 'md' : 'sm'}\r\n color={disabled ? 'textDisabled' : 'textSecondary'}\r\n >\r\n {label}\r\n </Text>\r\n )}\r\n </label>\r\n\r\n {helperText !== undefined && (\r\n <FormHelperText\r\n id={helperId}\r\n status={resolvedStatus}\r\n className={CHECKBOX_STYLES.helper}\r\n >\r\n {helperText}\r\n </FormHelperText>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nCheckbox.displayName = 'Checkbox'\r\n\r\nexport default Checkbox\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const CALENDAR_STYLES = createStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'column' as const,\r\n gap: theme.spacing.sm,\r\n padding: theme.spacing.sm,\r\n width: '17.5rem',\r\n boxSizing: 'border-box' as const,\r\n fontFamily: 'inherit',\r\n },\r\n}), { id: 'calendar' })\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const CALENDAR_PICKER_HEADER_STYLES = createStyles((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n header: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n gap: theme.spacing['2xs'],\r\n },\r\n navGroup: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing['2xs'],\r\n flexShrink: 0,\r\n },\r\n heading: {\r\n flex: 1,\r\n textAlign: 'center' as const,\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.semibold,\r\n color: c.textPrimary,\r\n textTransform: 'capitalize' as const,\r\n whiteSpace: 'nowrap' as const,\r\n },\r\n /** Clickable heading that opens the month / year picker panels. */\r\n headingButton: {\r\n flex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: theme.spacing['2xs'],\r\n minWidth: 0,\r\n padding: `${theme.spacing['2xs']} ${theme.spacing.xs}`,\r\n border: 'none',\r\n borderRadius: theme.radius.md,\r\n background: 'transparent',\r\n color: c.textPrimary,\r\n fontFamily: 'inherit',\r\n fontSize: theme.fontSize.sm,\r\n fontWeight: theme.fontWeight.semibold,\r\n textTransform: 'capitalize' as const,\r\n whiteSpace: 'nowrap' as const,\r\n cursor: 'pointer',\r\n transition: `background-color ${theme.transition.fast}`,\r\n outline: 'none',\r\n ':hover': {\r\n backgroundColor: c.primarySubtle,\r\n },\r\n ':focus-visible': getFocusRingStyles(theme),\r\n },\r\n }\r\n}, { id: 'calendar-picker-header' })\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const CALENDAR_DAY_VIEW_STYLES = createStyles((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n grid: {\r\n display: 'flex',\r\n flexDirection: 'column' as const,\r\n },\r\n weekRow: {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(7, 1fr)',\r\n },\r\n weekdayHeader: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: '2rem',\r\n fontSize: theme.fontSize.xs,\r\n fontWeight: theme.fontWeight.medium,\r\n color: c.textTertiary,\r\n textTransform: 'capitalize' as const,\r\n },\r\n cell: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '0.0625rem',\r\n },\r\n day: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: '2rem',\r\n height: '2rem',\r\n padding: 0,\r\n border: 'none',\r\n borderRadius: theme.radius.md,\r\n background: 'transparent',\r\n color: c.textPrimary,\r\n fontFamily: 'inherit',\r\n fontSize: theme.fontSize.sm,\r\n cursor: 'pointer',\r\n transition: `background-color ${theme.transition.fast}, color ${theme.transition.fast}`,\r\n outline: 'none',\r\n ':hover:not([data-disabled]):not([data-selected])': {\r\n backgroundColor: c.primarySubtle,\r\n },\r\n ':focus-visible': getFocusRingStyles(theme),\r\n // Days outside the displayed month.\r\n '&[data-outside]': {\r\n color: c.textDisabled,\r\n },\r\n // Out-of-range days.\r\n '&[data-disabled]': {\r\n color: c.textDisabled,\r\n cursor: 'not-allowed',\r\n },\r\n // Today marker.\r\n '&[data-today]:not([data-selected])': {\r\n fontWeight: theme.fontWeight.bold,\r\n boxShadow: `inset 0 0 0 1px ${c.borderStrong}`,\r\n },\r\n // Selected day.\r\n '&[data-selected]': {\r\n backgroundColor: c.primaryMain,\r\n color: c.primaryOn,\r\n fontWeight: theme.fontWeight.semibold,\r\n },\r\n },\r\n }\r\n}, { id: 'calendar-day-view' })\r\n","import type { WeekStart } from '@components/forms/date-picker/datePicker.types'\r\n\r\n/** Whether `value` is a valid `Date` instance (not `Invalid Date`). */\r\nexport const isValidDate = (value: unknown): value is Date =>\r\n value instanceof Date && !Number.isNaN(value.getTime())\r\n\r\n/** Returns a new `Date` set to the start of the day (00:00:00.000) in local time. */\r\nexport const startOfDay = (date: Date): Date => {\r\n const next = new Date(date)\r\n next.setHours(0, 0, 0, 0)\r\n return next\r\n}\r\n\r\n/** Whether two dates fall on the same calendar day (ignoring time). */\r\nexport const isSameDay = (a: Date | null | undefined, b: Date | null | undefined): boolean => {\r\n if (!isValidDate(a) || !isValidDate(b)) {\r\n return false\r\n }\r\n return (\r\n a.getFullYear() === b.getFullYear() &&\r\n a.getMonth() === b.getMonth() &&\r\n a.getDate() === b.getDate()\r\n )\r\n}\r\n\r\n/** Whether two dates fall in the same month and year. */\r\nexport const isSameMonth = (a: Date, b: Date): boolean =>\r\n a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth()\r\n\r\n/** Returns a new date offset by `amount` days. */\r\nexport const addDays = (date: Date, amount: number): Date => {\r\n const next = new Date(date)\r\n next.setDate(next.getDate() + amount)\r\n return next\r\n}\r\n\r\n/** Returns a new date offset by `amount` months, clamping the day to the target month length. */\r\nexport const addMonths = (date: Date, amount: number): Date => {\r\n const next = new Date(date)\r\n const targetDay = next.getDate()\r\n next.setDate(1)\r\n next.setMonth(next.getMonth() + amount)\r\n const lastDay = new Date(next.getFullYear(), next.getMonth() + 1, 0).getDate()\r\n next.setDate(Math.min(targetDay, lastDay))\r\n return next\r\n}\r\n\r\n/** Returns a new date offset by `amount` years. */\r\nexport const addYears = (date: Date, amount: number): Date => addMonths(date, amount * 12)\r\n\r\n/**\r\n * Whether `date` is outside the inclusive `[min, max]` range.\r\n * Comparison is done at day precision so the bounds days remain selectable.\r\n */\r\nexport const isDateDisabled = (date: Date, min?: Date, max?: Date): boolean => {\r\n const time = startOfDay(date).getTime()\r\n if (isValidDate(min) && time < startOfDay(min).getTime()) {\r\n return true\r\n }\r\n return isValidDate(max) && time > startOfDay(max).getTime()\r\n}\r\n\r\n/** Clamps `date` into the inclusive `[min, max]` range when bounds are provided. */\r\nexport const clampDate = (date: Date, min?: Date, max?: Date): Date => {\r\n let result = date\r\n if (isValidDate(min) && startOfDay(result).getTime() < startOfDay(min).getTime()) {\r\n result = min\r\n }\r\n if (isValidDate(max) && startOfDay(result).getTime() > startOfDay(max).getTime()) {\r\n result = max\r\n }\r\n return result\r\n}\r\n\r\n/**\r\n * Builds the 6×7 matrix of days shown for the month containing `viewDate`.\r\n * Leading/trailing cells are filled with the adjacent months' days so the grid\r\n * is always complete (always 42 cells).\r\n */\r\nexport const getMonthMatrix = (viewDate: Date, weekStartsOn: WeekStart): Date[][] => {\r\n const firstOfMonth = new Date(viewDate.getFullYear(), viewDate.getMonth(), 1)\r\n const offset = (firstOfMonth.getDay() - weekStartsOn + 7) % 7\r\n const gridStart = addDays(firstOfMonth, -offset)\r\n\r\n const weeks: Date[][] = []\r\n let cursor = gridStart\r\n for (let week = 0; week < 6; week += 1) {\r\n const days: Date[] = []\r\n for (let day = 0; day < 7; day += 1) {\r\n days.push(cursor)\r\n cursor = addDays(cursor, 1)\r\n }\r\n weeks.push(days)\r\n }\r\n return weeks\r\n}\r\n\r\n/** Ordered weekday indexes (0–6) starting from `weekStartsOn`. */\r\nexport const getWeekdayOrder = (weekStartsOn: WeekStart): number[] =>\r\n Array.from({ length: 7 }, (_, index) => (weekStartsOn + index) % 7)\r\n\r\n/** Localized short + long weekday labels, ordered from `weekStartsOn`. */\r\nexport const getWeekdayLabels = (\r\n locale: string,\r\n weekStartsOn: WeekStart\r\n): Array<{ short: string; long: string }> => {\r\n const shortFmt = new Intl.DateTimeFormat(locale, { weekday: 'short' })\r\n const longFmt = new Intl.DateTimeFormat(locale, { weekday: 'long' })\r\n // 2021-08-01 is a Sunday — a stable reference week for label generation.\r\n const reference = new Date(2021, 7, 1)\r\n return getWeekdayOrder(weekStartsOn).map((weekday) => {\r\n const sample = addDays(reference, weekday)\r\n return { short: shortFmt.format(sample), long: longFmt.format(sample) }\r\n })\r\n}\r\n\r\n/** Localized \"Month Year\" heading for the calendar (e.g. \"June 2026\"). */\r\nexport const getMonthYearLabel = (date: Date, locale: string): string =>\r\n new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' }).format(date)\r\n\r\n/** Localized short month labels (e.g. \"Jan\" … \"Dec\"), indexed `0`–`11`. */\r\nexport const getMonthLabels = (locale: string): string[] => {\r\n const fmt = new Intl.DateTimeFormat(locale, { month: 'short' })\r\n return Array.from({ length: 12 }, (_, month) => fmt.format(new Date(2021, month, 1)))\r\n}\r\n\r\n/** Localized full month label for a given month index (e.g. \"January\"). */\r\nexport const getMonthLabel = (locale: string, month: number): string =>\r\n new Intl.DateTimeFormat(locale, { month: 'long' }).format(new Date(2021, month, 1))\r\n\r\n/** Whether the whole month is outside the inclusive `[min, max]` range. */\r\nexport const isMonthDisabled = (year: number, month: number, min?: Date, max?: Date): boolean => {\r\n const lastOfMonth = new Date(year, month + 1, 0)\r\n if (isValidDate(min) && startOfDay(lastOfMonth).getTime() < startOfDay(min).getTime()) {\r\n return true\r\n }\r\n const firstOfMonth = new Date(year, month, 1)\r\n return isValidDate(max) && startOfDay(firstOfMonth).getTime() > startOfDay(max).getTime()\r\n}\r\n\r\n/** Whether the whole year is outside the inclusive `[min, max]` range. */\r\nexport const isYearDisabled = (year: number, min?: Date, max?: Date): boolean => {\r\n const lastOfYear = new Date(year, 11, 31)\r\n if (isValidDate(min) && startOfDay(lastOfYear).getTime() < startOfDay(min).getTime()) {\r\n return true\r\n }\r\n const firstOfYear = new Date(year, 0, 1)\r\n return isValidDate(max) && startOfDay(firstOfYear).getTime() > startOfDay(max).getTime()\r\n}\r\n\r\n/**\r\n * Returns the block of consecutive years containing `year`, aligned on `size`\r\n * (e.g. for `size = 12`, 2026 yields 2016…2027). Used by the year-picker grid.\r\n */\r\nexport const getYearRange = (year: number, size = 12): number[] => {\r\n const start = year - (((year % size) + size) % size)\r\n return Array.from({ length: size }, (_, index) => start + index)\r\n}\r\n\r\n/**\r\n * Derives a `dd`/`MM`/`yyyy` token format from a BCP 47 locale, preserving the\r\n * locale's field order and separators (e.g. `en-US` → `MM/dd/yyyy`, `fr-FR` → `dd/MM/yyyy`).\r\n */\r\nexport const getLocaleDateFormat = (locale: string): string =>\r\n new Intl.DateTimeFormat(locale, { day: '2-digit', month: '2-digit', year: 'numeric' })\r\n .formatToParts(new Date(2021, 0, 1))\r\n .map((part) => {\r\n switch (part.type) {\r\n case 'day':\r\n return 'dd'\r\n case 'month':\r\n return 'MM'\r\n case 'year':\r\n return 'yyyy'\r\n default:\r\n return part.value\r\n }\r\n })\r\n .join('')\r\n\r\n/** Localized, fully spelled-out date used for the accessible name of a day cell. */\r\nexport const getFullDateLabel = (date: Date, locale: string): string =>\r\n new Intl.DateTimeFormat(locale, { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' }).format(date)\r\n\r\n/**\r\n * Formats a date using a small token vocabulary: `dd`, `MM`, `yyyy`.\r\n * Kept locale-independent so the text input round-trips with `parseDate`.\r\n */\r\nexport const formatDate = (date: Date | null | undefined, format: string): string => {\r\n if (!isValidDate(date)) {\r\n return ''\r\n }\r\n const day = String(date.getDate()).padStart(2, '0')\r\n const month = String(date.getMonth() + 1).padStart(2, '0')\r\n const year = String(date.getFullYear()).padStart(4, '0')\r\n return format.replace('yyyy', year).replace('MM', month).replace('dd', day)\r\n}\r\n\r\n/**\r\n * Parses a string into a `Date` using the same `dd`/`MM`/`yyyy` token format.\r\n * Returns `null` when the string does not match or the date is invalid (e.g. 31/02).\r\n */\r\nexport const parseDate = (value: string, format: string): Date | null => {\r\n const trimmed = value.trim()\r\n if (trimmed === '') {\r\n return null\r\n }\r\n\r\n const tokens = ['dd', 'MM', 'yyyy'] as const\r\n const positions = tokens\r\n .map((token) => ({ token, index: format.indexOf(token) }))\r\n .filter((entry) => entry.index >= 0)\r\n .sort((a, b) => a.index - b.index)\r\n\r\n // Build a regex from the format so literal separators are matched exactly.\r\n let pattern = ''\r\n let cursor = 0\r\n for (const { token, index } of positions) {\r\n pattern += escapeRegExp(format.slice(cursor, index))\r\n pattern += token === 'yyyy' ? '(\\\\d{1,4})' : '(\\\\d{1,2})'\r\n cursor = index + token.length\r\n }\r\n pattern += escapeRegExp(format.slice(cursor))\r\n\r\n const match = new RegExp(`^${pattern}$`).exec(trimmed)\r\n if (!match) {\r\n return null\r\n }\r\n\r\n const parts: Record<string, number> = {}\r\n positions.forEach(({ token }, order) => {\r\n parts[token] = Number(match[order + 1])\r\n })\r\n\r\n const year = parts.yyyy ?? new Date().getFullYear()\r\n const month = (parts.MM ?? 1) - 1\r\n const day = parts.dd ?? 1\r\n\r\n const candidate = new Date(year, month, day)\r\n // Reject overflow (e.g. 31/02 rolling into March).\r\n if (\r\n candidate.getFullYear() !== year ||\r\n candidate.getMonth() !== month ||\r\n candidate.getDate() !== day\r\n ) {\r\n return null\r\n }\r\n return candidate\r\n}\r\n\r\n/** Escapes a literal string for safe insertion into a RegExp. */\r\nconst escapeRegExp = (value: string): string => value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\r\n","import { FC } from 'react'\r\n\r\nimport {\r\n ChevronLeftIcon,\r\n ChevronRightIcon,\r\n ChevronsLeftIcon,\r\n ChevronsRightIcon,\r\n} from '@resources/Icons'\r\nimport { IconButton } from '@components/actions/icon-button'\r\nimport { CALENDAR_PICKER_HEADER_STYLES } from '@components/forms/date-picker/calendar/components/calendar-picker-header/CalendarPickerHeader.styles'\r\nimport { CALENDAR_DAY_VIEW_STYLES } from '@components/forms/date-picker/calendar/components/calendar-day-view/CalendarDayView.styles'\r\nimport {\r\n getFullDateLabel,\r\n isDateDisabled,\r\n isSameDay,\r\n isSameMonth,\r\n} from '@components/forms/date-picker/utils/date.utils'\r\n\r\nimport type { CalendarDayViewProps } from '@components/forms/date-picker/calendar/components/calendar-day-view/CalendarDayView.props'\r\n\r\n/**\r\n * Day grid panel: month/year navigation header + weekday column headers + day cells.\r\n * Implements the WAI-ARIA date-grid pattern with a single tab stop (roving tabindex).\r\n */\r\nconst CalendarDayView: FC<CalendarDayViewProps> = ({\r\n headingId,\r\n gridRef,\r\n viewDate,\r\n focusedDate,\r\n selectedDate,\r\n monthLabel,\r\n weekdays,\r\n weeks,\r\n locale,\r\n minDate,\r\n maxDate,\r\n today,\r\n isPreviousMonthDisabled,\r\n isNextMonthDisabled,\r\n isPreviousYearDisabled,\r\n isNextYearDisabled,\r\n goToPreviousMonth,\r\n goToNextMonth,\r\n goToPreviousYear,\r\n goToNextYear,\r\n handleGridKeyDown,\r\n selectDate,\r\n registerDayRef,\r\n getDayKey,\r\n showMonthView,\r\n}) => (\r\n <>\r\n <div className={CALENDAR_PICKER_HEADER_STYLES.header}>\r\n <div className={CALENDAR_PICKER_HEADER_STYLES.navGroup}>\r\n <IconButton\r\n icon={ChevronsLeftIcon}\r\n ariaLabel={'Previous year'}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={'sm'}\r\n disabled={isPreviousYearDisabled}\r\n onClick={goToPreviousYear}\r\n />\r\n <IconButton\r\n icon={ChevronLeftIcon}\r\n ariaLabel={'Previous month'}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={'sm'}\r\n disabled={isPreviousMonthDisabled}\r\n onClick={goToPreviousMonth}\r\n />\r\n </div>\r\n\r\n <button\r\n type={'button'}\r\n id={headingId}\r\n className={CALENDAR_PICKER_HEADER_STYLES.headingButton}\r\n aria-live={'polite'}\r\n aria-label={`${monthLabel}, choose a month or year`}\r\n onClick={showMonthView}\r\n >\r\n {monthLabel}\r\n </button>\r\n\r\n <div className={CALENDAR_PICKER_HEADER_STYLES.navGroup}>\r\n <IconButton\r\n icon={ChevronRightIcon}\r\n ariaLabel={'Next month'}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={'sm'}\r\n disabled={isNextMonthDisabled}\r\n onClick={goToNextMonth}\r\n />\r\n <IconButton\r\n icon={ChevronsRightIcon}\r\n ariaLabel={'Next year'}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={'sm'}\r\n disabled={isNextYearDisabled}\r\n onClick={goToNextYear}\r\n />\r\n </div>\r\n </div>\r\n\r\n <div\r\n ref={gridRef}\r\n role={'grid'}\r\n tabIndex={-1}\r\n aria-labelledby={headingId}\r\n className={CALENDAR_DAY_VIEW_STYLES.grid}\r\n onKeyDown={handleGridKeyDown}\r\n >\r\n <div\r\n role={'row'}\r\n className={CALENDAR_DAY_VIEW_STYLES.weekRow}\r\n >\r\n {weekdays.map((weekday) => (\r\n <span\r\n key={weekday.long}\r\n role={'columnheader'}\r\n aria-label={weekday.long}\r\n className={CALENDAR_DAY_VIEW_STYLES.weekdayHeader}\r\n >\r\n <abbr\r\n title={weekday.long}\r\n style={{ textDecoration: 'none' }}\r\n >\r\n {weekday.short}\r\n </abbr>\r\n </span>\r\n ))}\r\n </div>\r\n\r\n {weeks.map((week) => (\r\n <div\r\n key={getDayKey(week[0])}\r\n role={'row'}\r\n className={CALENDAR_DAY_VIEW_STYLES.weekRow}\r\n >\r\n {week.map((day) => {\r\n const isOutside = !isSameMonth(day, viewDate)\r\n const isSelected = isSameDay(day, selectedDate)\r\n const isToday = isSameDay(day, today)\r\n const isDisabled = isDateDisabled(day, minDate, maxDate)\r\n const isFocusTarget = isSameDay(day, focusedDate)\r\n\r\n return (\r\n <div\r\n key={getDayKey(day)}\r\n role={'gridcell'}\r\n aria-selected={isSelected || undefined}\r\n className={CALENDAR_DAY_VIEW_STYLES.cell}\r\n >\r\n <button\r\n ref={(node) => registerDayRef(getDayKey(day), node)}\r\n type={'button'}\r\n tabIndex={isFocusTarget ? 0 : -1}\r\n className={CALENDAR_DAY_VIEW_STYLES.day}\r\n data-outside={isOutside || undefined}\r\n data-selected={isSelected || undefined}\r\n data-today={isToday || undefined}\r\n data-disabled={isDisabled || undefined}\r\n aria-label={getFullDateLabel(day, locale)}\r\n aria-current={isToday ? 'date' : undefined}\r\n aria-disabled={isDisabled || undefined}\r\n onClick={() => selectDate(day)}\r\n >\r\n {day.getDate()}\r\n </button>\r\n </div>\r\n )\r\n })}\r\n </div>\r\n ))}\r\n </div>\r\n </>\r\n)\r\n\r\nCalendarDayView.displayName = 'CalendarDayView'\r\n\r\nexport default CalendarDayView\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const CALENDAR_MONTH_VIEW_STYLES = createStyles((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n /** 3-column grid hosting the month options. */\r\n optionGrid: {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(3, 1fr)',\r\n gap: theme.spacing['2xs'],\r\n padding: `${theme.spacing['2xs']} 0`,\r\n },\r\n /** A single month choice inside the picker panel. */\r\n option: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: '2.5rem',\r\n padding: `0 ${theme.spacing.xs}`,\r\n border: 'none',\r\n borderRadius: theme.radius.md,\r\n background: 'transparent',\r\n color: c.textPrimary,\r\n fontFamily: 'inherit',\r\n fontSize: theme.fontSize.sm,\r\n cursor: 'pointer',\r\n transition: `background-color ${theme.transition.fast}, color ${theme.transition.fast}`,\r\n outline: 'none',\r\n textTransform: 'capitalize' as const,\r\n ':hover:not([data-disabled]):not([data-selected])': {\r\n backgroundColor: c.primarySubtle,\r\n },\r\n ':focus-visible': getFocusRingStyles(theme),\r\n '&[data-disabled]': {\r\n color: c.textDisabled,\r\n cursor: 'not-allowed',\r\n },\r\n '&[data-today]:not([data-selected])': {\r\n fontWeight: theme.fontWeight.bold,\r\n boxShadow: `inset 0 0 0 1px ${c.borderStrong}`,\r\n },\r\n '&[data-selected]': {\r\n backgroundColor: c.primaryMain,\r\n color: c.primaryOn,\r\n fontWeight: theme.fontWeight.semibold,\r\n },\r\n },\r\n }\r\n}, { id: 'calendar-month-view' })\r\n","import { FC } from 'react'\r\n\r\nimport { ChevronLeftIcon, ChevronRightIcon } from '@resources/Icons'\r\nimport { IconButton } from '@components/actions/icon-button'\r\nimport { CALENDAR_PICKER_HEADER_STYLES } from '@components/forms/date-picker/calendar/components/calendar-picker-header/CalendarPickerHeader.styles'\r\n\r\nimport type { CalendarPickerHeaderProps } from '@components/forms/date-picker/calendar/components/calendar-picker-header/CalendarPickerHeader.props'\r\n\r\n/** Shared navigation header used by the month-picker and year-picker panels. */\r\nconst CalendarPickerHeader: FC<CalendarPickerHeaderProps> = ({\r\n label,\r\n onLabelClick,\r\n headingId,\r\n previousAriaLabel,\r\n nextAriaLabel,\r\n isPreviousDisabled,\r\n isNextDisabled,\r\n onPrevious,\r\n onNext,\r\n}) => (\r\n <div className={CALENDAR_PICKER_HEADER_STYLES.header}>\r\n <div className={CALENDAR_PICKER_HEADER_STYLES.navGroup}>\r\n <IconButton\r\n icon={ChevronLeftIcon}\r\n ariaLabel={previousAriaLabel}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={'sm'}\r\n disabled={isPreviousDisabled}\r\n onClick={onPrevious}\r\n />\r\n </div>\r\n\r\n {onLabelClick ? (\r\n <button\r\n type={'button'}\r\n className={CALENDAR_PICKER_HEADER_STYLES.headingButton}\r\n onClick={onLabelClick}\r\n >\r\n {label}\r\n </button>\r\n ) : (\r\n <span\r\n id={headingId}\r\n className={CALENDAR_PICKER_HEADER_STYLES.heading}\r\n aria-live={'polite'}\r\n >\r\n {label}\r\n </span>\r\n )}\r\n\r\n <div className={CALENDAR_PICKER_HEADER_STYLES.navGroup}>\r\n <IconButton\r\n icon={ChevronRightIcon}\r\n ariaLabel={nextAriaLabel}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={'sm'}\r\n disabled={isNextDisabled}\r\n onClick={onNext}\r\n />\r\n </div>\r\n </div>\r\n)\r\n\r\nCalendarPickerHeader.displayName = 'CalendarPickerHeader'\r\n\r\nexport default CalendarPickerHeader\r\n","import { FC } from 'react'\r\n\r\nimport { CALENDAR_MONTH_VIEW_STYLES } from '@components/forms/date-picker/calendar/components/calendar-month-view/CalendarMonthView.styles'\r\nimport CalendarPickerHeader from '@components/forms/date-picker/calendar/components/calendar-picker-header/CalendarPickerHeader'\r\nimport { getMonthLabel, isMonthDisabled } from '@components/forms/date-picker/utils/date.utils'\r\n\r\nimport type { CalendarMonthViewProps } from '@components/forms/date-picker/calendar/components/calendar-month-view/CalendarMonthView.props'\r\n\r\n/** 3-column month picker panel with year navigation and a clickable year heading. */\r\nconst CalendarMonthView: FC<CalendarMonthViewProps> = ({\r\n viewYear,\r\n selectedYear,\r\n selectedMonth,\r\n todayYear,\r\n todayMonth,\r\n monthLabels,\r\n locale,\r\n minDate,\r\n maxDate,\r\n isPreviousYearDisabled,\r\n isNextYearDisabled,\r\n goToPreviousYear,\r\n goToNextYear,\r\n showYearView,\r\n selectMonth,\r\n}) => (\r\n <>\r\n <CalendarPickerHeader\r\n label={String(viewYear)}\r\n onLabelClick={showYearView}\r\n previousAriaLabel={'Previous year'}\r\n nextAriaLabel={'Next year'}\r\n isPreviousDisabled={isPreviousYearDisabled}\r\n isNextDisabled={isNextYearDisabled}\r\n onPrevious={goToPreviousYear}\r\n onNext={goToNextYear}\r\n />\r\n\r\n <div\r\n role={'grid'}\r\n aria-label={'Choose a month'}\r\n className={CALENDAR_MONTH_VIEW_STYLES.optionGrid}\r\n >\r\n {monthLabels.map((label, month) => {\r\n const isDisabled = isMonthDisabled(viewYear, month, minDate, maxDate)\r\n const isSelected = selectedYear === viewYear && selectedMonth === month\r\n const isCurrent = todayYear === viewYear && todayMonth === month\r\n\r\n return (\r\n <button\r\n key={label}\r\n type={'button'}\r\n className={CALENDAR_MONTH_VIEW_STYLES.option}\r\n data-selected={isSelected || undefined}\r\n data-today={isCurrent || undefined}\r\n data-disabled={isDisabled || undefined}\r\n aria-label={getMonthLabel(locale, month)}\r\n aria-disabled={isDisabled || undefined}\r\n aria-current={isCurrent ? 'date' : undefined}\r\n onClick={() => !isDisabled && selectMonth(month)}\r\n >\r\n {label}\r\n </button>\r\n )\r\n })}\r\n </div>\r\n </>\r\n)\r\n\r\nCalendarMonthView.displayName = 'CalendarMonthView'\r\n\r\nexport default CalendarMonthView\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nexport const CALENDAR_YEAR_VIEW_STYLES = createStyles((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n /** 3-column grid hosting the year options. */\r\n optionGrid: {\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(3, 1fr)',\r\n gap: theme.spacing['2xs'],\r\n padding: `${theme.spacing['2xs']} 0`,\r\n },\r\n /** A single year choice inside the picker panel. */\r\n option: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: '2.5rem',\r\n padding: `0 ${theme.spacing.xs}`,\r\n border: 'none',\r\n borderRadius: theme.radius.md,\r\n background: 'transparent',\r\n color: c.textPrimary,\r\n fontFamily: 'inherit',\r\n fontSize: theme.fontSize.sm,\r\n cursor: 'pointer',\r\n transition: `background-color ${theme.transition.fast}, color ${theme.transition.fast}`,\r\n outline: 'none',\r\n textTransform: 'capitalize' as const,\r\n ':hover:not([data-disabled]):not([data-selected])': {\r\n backgroundColor: c.primarySubtle,\r\n },\r\n ':focus-visible': getFocusRingStyles(theme),\r\n '&[data-disabled]': {\r\n color: c.textDisabled,\r\n cursor: 'not-allowed',\r\n },\r\n '&[data-today]:not([data-selected])': {\r\n fontWeight: theme.fontWeight.bold,\r\n boxShadow: `inset 0 0 0 1px ${c.borderStrong}`,\r\n },\r\n '&[data-selected]': {\r\n backgroundColor: c.primaryMain,\r\n color: c.primaryOn,\r\n fontWeight: theme.fontWeight.semibold,\r\n },\r\n },\r\n }\r\n}, { id: 'calendar-year-view' })\r\n","import { FC } from 'react'\r\n\r\nimport { CALENDAR_YEAR_VIEW_STYLES } from '@components/forms/date-picker/calendar/components/calendar-year-view/CalendarYearView.styles'\r\nimport CalendarPickerHeader from '@components/forms/date-picker/calendar/components/calendar-picker-header/CalendarPickerHeader'\r\nimport { isYearDisabled } from '@components/forms/date-picker/utils/date.utils'\r\n\r\nimport type { CalendarYearViewProps } from '@components/forms/date-picker/calendar/components/calendar-year-view/CalendarYearView.props'\r\n\r\n/** 3-column year picker panel with year-range navigation. */\r\nconst CalendarYearView: FC<CalendarYearViewProps> = ({\r\n yearRange,\r\n selectedYear,\r\n todayYear,\r\n minDate,\r\n maxDate,\r\n goToPreviousYears,\r\n goToNextYears,\r\n selectYear,\r\n}) => (\r\n <>\r\n <CalendarPickerHeader\r\n label={`${yearRange[0]} \\u2013 ${yearRange[yearRange.length - 1]}`}\r\n previousAriaLabel={'Previous years'}\r\n nextAriaLabel={'Next years'}\r\n onPrevious={goToPreviousYears}\r\n onNext={goToNextYears}\r\n />\r\n\r\n <div\r\n role={'grid'}\r\n aria-label={'Choose a year'}\r\n className={CALENDAR_YEAR_VIEW_STYLES.optionGrid}\r\n >\r\n {yearRange.map((year) => {\r\n const isDisabled = isYearDisabled(year, minDate, maxDate)\r\n const isSelected = selectedYear === year\r\n const isCurrent = todayYear === year\r\n\r\n return (\r\n <button\r\n key={year}\r\n type={'button'}\r\n className={CALENDAR_YEAR_VIEW_STYLES.option}\r\n data-selected={isSelected || undefined}\r\n data-today={isCurrent || undefined}\r\n data-disabled={isDisabled || undefined}\r\n aria-disabled={isDisabled || undefined}\r\n aria-current={isCurrent ? 'date' : undefined}\r\n onClick={() => !isDisabled && selectYear(year)}\r\n >\r\n {year}\r\n </button>\r\n )\r\n })}\r\n </div>\r\n </>\r\n)\r\n\r\nCalendarYearView.displayName = 'CalendarYearView'\r\n\r\nexport default CalendarYearView\r\n","import { KeyboardEvent, RefObject, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react'\r\n\r\nimport {\r\n addDays,\r\n addMonths,\r\n addYears,\r\n clampDate,\r\n getYearRange,\r\n isDateDisabled,\r\n isSameMonth,\r\n isValidDate,\r\n startOfDay,\r\n} from '@components/forms/date-picker/utils/date.utils'\r\n\r\nimport type { CalendarView, WeekStart } from '@components/forms/date-picker/datePicker.types'\r\n\r\n/** Number of years shown per page in the year-picker grid. */\r\nconst YEARS_PER_PAGE = 12\r\n\r\ntype UseCalendarParams = {\r\n selectedDate: Date | null\r\n minDate?: Date\r\n maxDate?: Date\r\n weekStartsOn: WeekStart\r\n id?: string\r\n onSelect: (date: Date) => void\r\n}\r\n\r\ntype UseCalendarReturn = {\r\n headingId: string\r\n gridRef: RefObject<HTMLDivElement | null>\r\n /** First day of the month currently displayed in the grid. */\r\n viewDate: Date\r\n /** The day that owns `tabIndex = 0` (roving tabindex). */\r\n focusedDate: Date\r\n /** Active panel: day grid, month picker or year picker. */\r\n view: CalendarView\r\n /** Inclusive list of years shown in the year-picker grid. */\r\n yearRange: number[]\r\n /** Switches the calendar to the month-picker panel. */\r\n showMonthView: () => void\r\n /** Switches the calendar to the year-picker panel. */\r\n showYearView: () => void\r\n /** Picks a month (0–11) and returns to the day grid. */\r\n selectMonth: (month: number) => void\r\n /** Picks a year and returns to the month-picker panel. */\r\n selectYear: (year: number) => void\r\n /** Registers a day button so focus can be moved to it programmatically. */\r\n registerDayRef: (key: string, node: HTMLButtonElement | null) => void\r\n /** Stable key for a given date used by `registerDayRef`. */\r\n getDayKey: (date: Date) => string\r\n goToPreviousMonth: () => void\r\n goToNextMonth: () => void\r\n goToPreviousYear: () => void\r\n goToNextYear: () => void\r\n goToPreviousYears: () => void\r\n goToNextYears: () => void\r\n isPreviousMonthDisabled: boolean\r\n isNextMonthDisabled: boolean\r\n isPreviousYearDisabled: boolean\r\n isNextYearDisabled: boolean\r\n handleGridKeyDown: (event: KeyboardEvent<HTMLDivElement>) => void\r\n selectDate: (date: Date) => void\r\n}\r\n\r\n/** Stable, locale-independent key for a date (used to map day refs). */\r\nconst dateKey = (date: Date): string =>\r\n `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`\r\n\r\n/**\r\n * Business logic for the Calendar: month navigation, roving-tabindex focus\r\n * management and full keyboard support (arrows, Home/End, PageUp/PageDown,\r\n * Shift+PageUp/PageDown for years), clamped to the `[minDate, maxDate]` range.\r\n */\r\nexport const useCalendar = ({\r\n selectedDate,\r\n minDate,\r\n maxDate,\r\n weekStartsOn,\r\n id,\r\n onSelect,\r\n}: UseCalendarParams): UseCalendarReturn => {\r\n const generatedId = useId()\r\n const rootId = id ?? generatedId\r\n const headingId = `${rootId}-heading`\r\n\r\n const gridRef = useRef<HTMLDivElement>(null)\r\n const dayRefs = useRef(new Map<string, HTMLButtonElement>())\r\n // When true, the next render focuses the button matching `focusedDate`.\r\n const shouldFocusRef = useRef(false)\r\n\r\n const initialDate = useMemo(() => {\r\n const base = isValidDate(selectedDate) ? selectedDate : new Date()\r\n return clampDate(startOfDay(base), minDate, maxDate)\r\n // Only compute the initial date once (on mount); later changes use navigation.\r\n }, [])\r\n\r\n const [viewDate, setViewDate] = useState<Date>(\r\n () => new Date(initialDate.getFullYear(), initialDate.getMonth(), 1)\r\n )\r\n const [focusedDate, setFocusedDate] = useState<Date>(initialDate)\r\n const [view, setView] = useState<CalendarView>('days')\r\n\r\n const registerDayRef = useCallback((key: string, node: HTMLButtonElement | null) => {\r\n if (node) {\r\n dayRefs.current.set(key, node)\r\n } else {\r\n dayRefs.current.delete(key)\r\n }\r\n }, [])\r\n\r\n // After a keyboard move, focus the button representing the focused date.\r\n useEffect(() => {\r\n if (!shouldFocusRef.current) {\r\n return\r\n }\r\n shouldFocusRef.current = false\r\n dayRefs.current.get(dateKey(focusedDate))?.focus()\r\n }, [focusedDate, viewDate])\r\n\r\n /** Moves the focused day, clamping into range and syncing the visible month. */\r\n const moveFocus = useCallback(\r\n (next: Date) => {\r\n const clamped = clampDate(startOfDay(next), minDate, maxDate)\r\n shouldFocusRef.current = true\r\n setFocusedDate(clamped)\r\n setViewDate((current) =>\r\n isSameMonth(current, clamped)\r\n ? current\r\n : new Date(clamped.getFullYear(), clamped.getMonth(), 1)\r\n )\r\n },\r\n [minDate, maxDate]\r\n )\r\n\r\n const goToPreviousMonth = useCallback(() => setViewDate((d) => addMonths(d, -1)), [])\r\n const goToNextMonth = useCallback(() => setViewDate((d) => addMonths(d, 1)), [])\r\n const goToPreviousYear = useCallback(() => setViewDate((d) => addYears(d, -1)), [])\r\n const goToNextYear = useCallback(() => setViewDate((d) => addYears(d, 1)), [])\r\n const goToPreviousYears = useCallback(() => setViewDate((d) => addYears(d, -YEARS_PER_PAGE)), [])\r\n const goToNextYears = useCallback(() => setViewDate((d) => addYears(d, YEARS_PER_PAGE)), [])\r\n\r\n // --- Month / year picker panels (mirrors the native date input affordance) ---\r\n const showMonthView = useCallback(() => setView('months'), [])\r\n const showYearView = useCallback(() => setView('years'), [])\r\n\r\n const selectMonth = useCallback((month: number) => {\r\n setViewDate((d) => new Date(d.getFullYear(), month, 1))\r\n setView('days')\r\n }, [])\r\n\r\n const selectYear = useCallback((year: number) => {\r\n setViewDate((d) => new Date(year, d.getMonth(), 1))\r\n setView('months')\r\n }, [])\r\n\r\n const yearRange = useMemo(() => getYearRange(viewDate.getFullYear(), YEARS_PER_PAGE), [viewDate])\r\n\r\n const selectDate = useCallback(\r\n (date: Date) => {\r\n if (isDateDisabled(date, minDate, maxDate)) {\r\n return\r\n }\r\n onSelect(startOfDay(date))\r\n },\r\n [minDate, maxDate, onSelect]\r\n )\r\n\r\n const handleGridKeyDown = useCallback(\r\n (event: KeyboardEvent<HTMLDivElement>) => {\r\n const handlers: Record<string, () => Date | undefined> = {\r\n ArrowLeft: () => addDays(focusedDate, -1),\r\n ArrowRight: () => addDays(focusedDate, 1),\r\n ArrowUp: () => addDays(focusedDate, -7),\r\n ArrowDown: () => addDays(focusedDate, 7),\r\n Home: () => addDays(focusedDate, -((focusedDate.getDay() - weekStartsOn + 7) % 7)),\r\n End: () => addDays(focusedDate, 6 - ((focusedDate.getDay() - weekStartsOn + 7) % 7)),\r\n PageUp: () => addMonths(focusedDate, event.shiftKey ? -12 : -1),\r\n PageDown: () => addMonths(focusedDate, event.shiftKey ? 12 : 1),\r\n }\r\n\r\n const compute = handlers[event.key]\r\n if (!compute) {\r\n return\r\n }\r\n const next = compute()\r\n if (next) {\r\n event.preventDefault()\r\n moveFocus(next)\r\n }\r\n },\r\n [focusedDate, weekStartsOn, moveFocus]\r\n )\r\n\r\n // --- Navigation button disabled states (whole target month out of range) ---\r\n const isPreviousMonthDisabled = useMemo(() => {\r\n if (!isValidDate(minDate)) {\r\n return false\r\n }\r\n const lastOfPrev = new Date(viewDate.getFullYear(), viewDate.getMonth(), 0)\r\n return isDateDisabled(lastOfPrev, minDate, maxDate)\r\n }, [viewDate, minDate, maxDate])\r\n\r\n const isNextMonthDisabled = useMemo(() => {\r\n if (!isValidDate(maxDate)) {\r\n return false\r\n }\r\n const firstOfNext = new Date(viewDate.getFullYear(), viewDate.getMonth() + 1, 1)\r\n return isDateDisabled(firstOfNext, minDate, maxDate)\r\n }, [viewDate, minDate, maxDate])\r\n\r\n const isPreviousYearDisabled = useMemo(() => {\r\n if (!isValidDate(minDate)) {\r\n return false\r\n }\r\n const lastOfPrevYear = new Date(viewDate.getFullYear() - 1, viewDate.getMonth() + 1, 0)\r\n return isDateDisabled(lastOfPrevYear, minDate, maxDate)\r\n }, [viewDate, minDate, maxDate])\r\n\r\n const isNextYearDisabled = useMemo(() => {\r\n if (!isValidDate(maxDate)) {\r\n return false\r\n }\r\n const firstOfNextYear = new Date(viewDate.getFullYear() + 1, viewDate.getMonth(), 1)\r\n return isDateDisabled(firstOfNextYear, minDate, maxDate)\r\n }, [viewDate, minDate, maxDate])\r\n\r\n return {\r\n headingId,\r\n gridRef,\r\n viewDate,\r\n focusedDate,\r\n view,\r\n yearRange,\r\n showMonthView,\r\n showYearView,\r\n selectMonth,\r\n selectYear,\r\n registerDayRef,\r\n getDayKey: dateKey,\r\n goToPreviousMonth,\r\n goToNextMonth,\r\n goToPreviousYear,\r\n goToNextYear,\r\n goToPreviousYears,\r\n goToNextYears,\r\n isPreviousMonthDisabled,\r\n isNextMonthDisabled,\r\n isPreviousYearDisabled,\r\n isNextYearDisabled,\r\n handleGridKeyDown,\r\n selectDate,\r\n }\r\n}\r\n","import { FC } from 'react'\r\n\r\nimport { CALENDAR_STYLES } from '@components/forms/date-picker/calendar/Calendar.styles'\r\nimport CalendarDayView from '@components/forms/date-picker/calendar/components/calendar-day-view/CalendarDayView'\r\nimport CalendarMonthView from '@components/forms/date-picker/calendar/components/calendar-month-view/CalendarMonthView'\r\nimport CalendarYearView from '@components/forms/date-picker/calendar/components/calendar-year-view/CalendarYearView'\r\nimport { useCalendar } from '@components/forms/date-picker/calendar/utils/useCalendar.utils'\r\nimport {\r\n getMonthLabels,\r\n getMonthMatrix,\r\n getMonthYearLabel,\r\n getWeekdayLabels,\r\n startOfDay,\r\n} from '@components/forms/date-picker/utils/date.utils'\r\n\r\nimport type { CalendarProps } from '@components/forms/date-picker/calendar/Calendar.props'\r\n\r\n/**\r\n * Accessible month calendar following the WAI-ARIA date-grid pattern.\r\n *\r\n * Renders a `role=\"grid\"` of days with a single tab stop (roving tabindex) and\r\n * full keyboard support handled by `useCalendar`. Clicking the heading swaps the\r\n * grid for a month picker, then a year picker (mirroring the native date input),\r\n * so the user can jump across months and years without paging one step at a time.\r\n */\r\nconst Calendar: FC<CalendarProps> = ({\r\n selectedDate,\r\n minDate,\r\n maxDate,\r\n locale,\r\n weekStartsOn,\r\n onSelect,\r\n id,\r\n}) => {\r\n const {\r\n headingId,\r\n gridRef,\r\n viewDate,\r\n focusedDate,\r\n view,\r\n yearRange,\r\n showMonthView,\r\n showYearView,\r\n selectMonth,\r\n selectYear,\r\n registerDayRef,\r\n getDayKey,\r\n goToPreviousMonth,\r\n goToNextMonth,\r\n goToPreviousYear,\r\n goToNextYear,\r\n goToPreviousYears,\r\n goToNextYears,\r\n isPreviousMonthDisabled,\r\n isNextMonthDisabled,\r\n isPreviousYearDisabled,\r\n isNextYearDisabled,\r\n handleGridKeyDown,\r\n selectDate,\r\n } = useCalendar({ selectedDate, minDate, maxDate, weekStartsOn, id, onSelect })\r\n\r\n const weekdays = getWeekdayLabels(locale, weekStartsOn)\r\n const weeks = getMonthMatrix(viewDate, weekStartsOn)\r\n const monthLabel = getMonthYearLabel(viewDate, locale)\r\n const monthLabels = getMonthLabels(locale)\r\n const today = startOfDay(new Date())\r\n const viewYear = viewDate.getFullYear()\r\n const selectedYear = selectedDate?.getFullYear()\r\n const selectedMonth = selectedDate?.getMonth()\r\n const todayYear = today.getFullYear()\r\n const todayMonth = today.getMonth()\r\n\r\n return (\r\n <div\r\n id={id}\r\n className={CALENDAR_STYLES.root}\r\n >\r\n {view === 'months' && (\r\n <CalendarMonthView\r\n viewYear={viewYear}\r\n selectedYear={selectedYear}\r\n selectedMonth={selectedMonth}\r\n todayYear={todayYear}\r\n todayMonth={todayMonth}\r\n monthLabels={monthLabels}\r\n locale={locale}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n isPreviousYearDisabled={isPreviousYearDisabled}\r\n isNextYearDisabled={isNextYearDisabled}\r\n goToPreviousYear={goToPreviousYear}\r\n goToNextYear={goToNextYear}\r\n showYearView={showYearView}\r\n selectMonth={selectMonth}\r\n />\r\n )}\r\n\r\n {view === 'years' && (\r\n <CalendarYearView\r\n yearRange={yearRange}\r\n selectedYear={selectedYear}\r\n todayYear={todayYear}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n goToPreviousYears={goToPreviousYears}\r\n goToNextYears={goToNextYears}\r\n selectYear={selectYear}\r\n />\r\n )}\r\n\r\n {view === 'days' && (\r\n <CalendarDayView\r\n headingId={headingId}\r\n gridRef={gridRef}\r\n viewDate={viewDate}\r\n focusedDate={focusedDate}\r\n selectedDate={selectedDate}\r\n monthLabel={monthLabel}\r\n weekdays={weekdays}\r\n weeks={weeks}\r\n locale={locale}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n today={today}\r\n isPreviousMonthDisabled={isPreviousMonthDisabled}\r\n isNextMonthDisabled={isNextMonthDisabled}\r\n isPreviousYearDisabled={isPreviousYearDisabled}\r\n isNextYearDisabled={isNextYearDisabled}\r\n goToPreviousMonth={goToPreviousMonth}\r\n goToNextMonth={goToNextMonth}\r\n goToPreviousYear={goToPreviousYear}\r\n goToNextYear={goToNextYear}\r\n handleGridKeyDown={handleGridKeyDown}\r\n selectDate={selectDate}\r\n registerDayRef={registerDayRef}\r\n getDayKey={getDayKey}\r\n showMonthView={showMonthView}\r\n />\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nCalendar.displayName = 'Calendar'\r\n\r\nexport default Calendar\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const DATE_PICKER_STYLES = createStyles((theme) => ({\r\n /** Transparent full-viewport layer that closes the popover on outside click. */\r\n backdrop: {\r\n position: 'fixed' as const,\r\n inset: 0,\r\n zIndex: theme.zIndex.dropdown - 1,\r\n },\r\n /** Floating dialog panel that hosts the calendar. */\r\n panel: {\r\n position: 'fixed' as const,\r\n zIndex: theme.zIndex.dropdown,\r\n backgroundColor: theme.colors.surfacePaper,\r\n borderRadius: theme.radius.lg,\r\n border: `1px solid ${theme.colors.borderMain}`,\r\n boxShadow: theme.shadows.md,\r\n outline: 'none',\r\n },\r\n}), { id: 'date-picker' })\r\n","import { RefObject, useEffect } from 'react'\r\n\r\nconst FOCUSABLE_SELECTOR = [\r\n 'a[href]',\r\n 'button:not([disabled])',\r\n 'textarea:not([disabled])',\r\n 'input:not([disabled])',\r\n 'select:not([disabled])',\r\n '[tabindex]:not([tabindex=\"-1\"])',\r\n].join(',')\r\n\r\nconst getFocusable = (container: HTMLElement): HTMLElement[] =>\r\n Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\r\n (el) => el.offsetParent !== null || el === document.activeElement\r\n )\r\n\r\n/**\r\n * Traps Tab / Shift+Tab focus within the element referenced by `containerRef`\r\n * while `active` is true. Focusable elements are recomputed on each Tab press\r\n * so dynamic content is handled correctly. Required for accessible modals.\r\n *\r\n * @example useFocusTrap(panelRef, open)\r\n */\r\nexport const useFocusTrap = (\r\n containerRef: RefObject<HTMLElement | null>,\r\n active: boolean\r\n): void => {\r\n useEffect(() => {\r\n if (!active) {return}\r\n const container = containerRef.current\r\n if (!container) {return}\r\n\r\n const handleKeyDown = (event: KeyboardEvent): void => {\r\n if (event.key !== 'Tab') {return}\r\n\r\n const focusable = getFocusable(container)\r\n if (focusable.length === 0) {\r\n event.preventDefault()\r\n container.focus()\r\n return\r\n }\r\n\r\n const first = focusable[0]\r\n const last = focusable[focusable.length - 1]\r\n const activeEl = document.activeElement\r\n\r\n if (event.shiftKey) {\r\n if (activeEl === first || activeEl === container || !container.contains(activeEl)) {\r\n event.preventDefault()\r\n last.focus()\r\n }\r\n } else if (activeEl === last) {\r\n event.preventDefault()\r\n first.focus()\r\n }\r\n }\r\n\r\n container.addEventListener('keydown', handleKeyDown)\r\n return () => container.removeEventListener('keydown', handleKeyDown)\r\n }, [active, containerRef])\r\n}\r\n","import { FC, useEffect, useRef } from 'react'\r\nimport { createPortal } from 'react-dom'\r\n\r\nimport { Calendar } from '@components/forms/date-picker/calendar'\r\nimport { DATE_PICKER_STYLES } from '@components/forms/date-picker/DatePicker.styles'\r\nimport { useFocusTrap } from '@hooks/common/use-focus-trap/useFocusTrap'\r\nimport { useKeyPress } from '@hooks/common/use-key-press/useKeyPress'\r\nimport { useMenuPosition } from '@hooks/components/overlay/use-menu-position/useMenuPosition'\r\n\r\nimport type { CalendarPopoverProps } from '@components/forms/date-picker/calendar-popover/CalendarPopover.props'\r\n\r\n/** Floating, focus-trapped dialog that hosts the calendar grid. */\r\nconst CalendarPopover: FC<CalendarPopoverProps> = ({\r\n anchorEl,\r\n dialogId,\r\n ariaLabel,\r\n onClose,\r\n selectedDate,\r\n minDate,\r\n maxDate,\r\n locale,\r\n weekStartsOn,\r\n onSelect,\r\n}) => {\r\n const panelRef = useRef<HTMLDivElement>(null)\r\n const { style } = useMenuPosition({ anchorEl, open: true, menuRef: panelRef })\r\n\r\n useFocusTrap(panelRef, true)\r\n useKeyPress({ Escape: onClose }, { enabled: true })\r\n\r\n // Move focus into the calendar (onto the active day) once the panel renders.\r\n useEffect(() => {\r\n const id = requestAnimationFrame(() => {\r\n const activeDay = panelRef.current?.querySelector<HTMLButtonElement>(\r\n '[role=\"gridcell\"] button[tabindex=\"0\"]'\r\n )\r\n activeDay?.focus()\r\n })\r\n return () => cancelAnimationFrame(id)\r\n }, [])\r\n\r\n return createPortal(\r\n <>\r\n <div\r\n className={DATE_PICKER_STYLES.backdrop}\r\n onClick={onClose}\r\n aria-hidden={true}\r\n />\r\n <div\r\n ref={panelRef}\r\n id={dialogId}\r\n role={'dialog'}\r\n aria-modal={true}\r\n aria-label={ariaLabel}\r\n className={DATE_PICKER_STYLES.panel}\r\n style={{ ...style, minWidth: 'fit-content' }}\r\n >\r\n <Calendar\r\n selectedDate={selectedDate}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n locale={locale}\r\n weekStartsOn={weekStartsOn ?? 1}\r\n onSelect={onSelect}\r\n />\r\n </div>\r\n </>,\r\n document.body\r\n )\r\n}\r\n\r\nCalendarPopover.displayName = 'CalendarPopover'\r\n\r\nexport default CalendarPopover\r\n","import {\r\n ChangeEvent,\r\n RefCallback,\r\n RefObject,\r\n useCallback,\r\n useEffect,\r\n useId,\r\n useMemo,\r\n useRef,\r\n useState,\r\n} from 'react'\r\n\r\nimport { useControllableState } from '@hooks/common/use-controllable-state/useControllableState'\r\nimport { useMergedRefs } from '@hooks/common/use-merged-refs/useMergedRefs'\r\n\r\nimport { clampDate, formatDate, isValidDate, parseDate, startOfDay } from '@components/forms/date-picker/utils/date.utils'\r\n\r\nimport type { DatePickerProps } from '@components/forms/date-picker/DatePicker.props'\r\n\r\ntype UseDatePickerParams = {\r\n id?: string\r\n ref?: DatePickerProps['ref']\r\n value?: Date | null\r\n defaultValue?: Date | null\r\n onChange?: (date: Date | null) => void\r\n minDate?: Date\r\n maxDate?: Date\r\n displayFormat: string\r\n disabled?: boolean\r\n}\r\n\r\ntype UseDatePickerReturn = {\r\n fieldId: string\r\n helperId: string\r\n dialogId: string\r\n inputRef: RefObject<HTMLInputElement | null>\r\n mergedRef: RefCallback<HTMLInputElement>\r\n anchorEl: HTMLElement | null\r\n open: boolean\r\n openMenu: () => void\r\n toggle: () => void\r\n close: () => void\r\n currentValue: Date | null\r\n inputValue: string\r\n handleInputChange: (event: ChangeEvent<HTMLInputElement>) => void\r\n handleInputBlur: () => void\r\n handleSelect: (date: Date) => void\r\n}\r\n\r\n/**\r\n * Business logic for the DatePicker: id resolution, ref merging,\r\n * controlled/uncontrolled `Date` handling, text input parsing/formatting,\r\n * open state and focus restoration to the input when the calendar closes.\r\n */\r\nexport const useDatePicker = ({\r\n id,\r\n ref,\r\n value,\r\n defaultValue,\r\n onChange,\r\n minDate,\r\n maxDate,\r\n displayFormat,\r\n disabled,\r\n}: UseDatePickerParams): UseDatePickerReturn => {\r\n const generatedId = useId()\r\n const fieldId = id ?? generatedId\r\n const helperId = `${fieldId}-helper`\r\n const dialogId = `${fieldId}-dialog`\r\n\r\n const inputRef = useRef<HTMLInputElement | null>(null)\r\n const mergedRef = useMergedRefs<HTMLInputElement>(ref, inputRef)\r\n\r\n const [open, setOpen] = useState(false)\r\n\r\n const [currentValue, setValue] = useControllableState<Date | null>({\r\n value,\r\n defaultValue: defaultValue ?? null,\r\n onChange,\r\n })\r\n\r\n // Text shown in the input. Kept in sync with the value, but editable so the\r\n // user can type freely without losing keystrokes before the value parses.\r\n const formattedValue = useMemo(\r\n () => formatDate(currentValue, displayFormat),\r\n [currentValue, displayFormat]\r\n )\r\n const [draft, setDraft] = useState<string | null>(null)\r\n const inputValue = draft ?? formattedValue\r\n\r\n // Restore focus to the input when the calendar closes.\r\n const wasOpenRef = useRef(false)\r\n useEffect(() => {\r\n if (wasOpenRef.current && !open) {\r\n inputRef.current?.focus()\r\n }\r\n wasOpenRef.current = open\r\n }, [open])\r\n\r\n // Commits a value into the (controlled/uncontrolled) state, clamped to range.\r\n const commitValue = useCallback(\r\n (date: Date | null) => {\r\n const next = isValidDate(date) ? clampDate(startOfDay(date), minDate, maxDate) : null\r\n setValue(next)\r\n },\r\n [setValue, minDate, maxDate]\r\n )\r\n\r\n const handleInputChange = useCallback(\r\n (event: ChangeEvent<HTMLInputElement>) => {\r\n const text = event.target.value\r\n // Keep the raw text as the source of truth while the user is typing so\r\n // keystrokes are never overwritten by the formatted value mid-entry.\r\n setDraft(text)\r\n const parsed = parseDate(text, displayFormat)\r\n if (parsed) {\r\n commitValue(parsed)\r\n } else if (text.trim() === '') {\r\n commitValue(null)\r\n }\r\n },\r\n [displayFormat, commitValue]\r\n )\r\n\r\n const handleInputBlur = useCallback(() => {\r\n // Drop the draft so the input snaps back to the formatted value.\r\n setDraft(null)\r\n }, [])\r\n\r\n const openMenu = useCallback(() => {\r\n if (!disabled) {\r\n setOpen(true)\r\n }\r\n }, [disabled])\r\n\r\n const toggle = useCallback(() => {\r\n if (!disabled) {\r\n setOpen((prev) => !prev)\r\n }\r\n }, [disabled])\r\n\r\n const close = useCallback(() => setOpen(false), [])\r\n\r\n const handleSelect = useCallback(\r\n (date: Date) => {\r\n commitValue(date)\r\n setDraft(null)\r\n setOpen(false)\r\n },\r\n [commitValue]\r\n )\r\n\r\n return {\r\n fieldId,\r\n helperId,\r\n dialogId,\r\n inputRef,\r\n mergedRef,\r\n anchorEl: inputRef.current?.parentElement ?? inputRef.current,\r\n open,\r\n openMenu,\r\n toggle,\r\n close,\r\n currentValue,\r\n inputValue,\r\n handleInputChange,\r\n handleInputBlur,\r\n handleSelect,\r\n }\r\n}\r\n","import type { DatePickerSize } from '@components/forms/date-picker/datePicker.types'\r\n\r\n/** Maps the field size to the trigger IconButton size. */\r\nexport const ICON_BUTTON_SIZE: Record<DatePickerSize, 'sm' | 'md' | 'lg'> = {\r\n sm: 'sm',\r\n md: 'sm',\r\n lg: 'md',\r\n}\r\n","import { FC, KeyboardEvent } from 'react'\r\n\r\nimport { CalendarIcon } from '@resources/Icons'\r\nimport { IconButton } from '@components/actions/icon-button'\r\nimport { TextField } from '@components/forms/text-field'\r\nimport { CalendarPopover } from '@components/forms/date-picker/calendar-popover'\r\nimport { getLocaleDateFormat } from '@components/forms/date-picker/utils/date.utils'\r\nimport { useDatePicker } from '@components/forms/date-picker/utils/useDatePicker.utils'\r\nimport { ICON_BUTTON_SIZE } from '@components/forms/date-picker/utils/iconButtonSize.utils'\r\n\r\nimport type { DatePickerProps } from '@components/forms/date-picker/DatePicker.props'\r\n\r\n/**\r\n * Accessible date field combining a text input trigger and a calendar popover.\r\n *\r\n * The input round-trips the value with `displayFormat` (typing is allowed unless\r\n * `editable={false}`), while the trailing icon button opens a focus-trapped\r\n * `role=\"dialog\"` calendar following the WAI-ARIA date-grid pattern.\r\n *\r\n * @example <DatePicker label=\"Birth date\" />\r\n * @example <DatePicker label=\"Start\" minDate={new Date()} required helperText=\"Pick a future date.\" />\r\n */\r\nconst DatePicker: FC<DatePickerProps> = ({\r\n ref,\r\n value,\r\n defaultValue,\r\n onChange,\r\n minDate,\r\n maxDate,\r\n label,\r\n helperText,\r\n placeholder,\r\n size = 'md',\r\n status = 'default',\r\n disabled,\r\n required,\r\n editable = true,\r\n displayFormat,\r\n locale = 'en-US',\r\n weekStartsOn = 1,\r\n width,\r\n id,\r\n}) => {\r\n // When no explicit format is given, derive it from the locale (field order + separators).\r\n const resolvedFormat = displayFormat ?? getLocaleDateFormat(locale)\r\n\r\n const {\r\n fieldId,\r\n dialogId,\r\n mergedRef,\r\n anchorEl,\r\n open,\r\n openMenu,\r\n toggle,\r\n close,\r\n currentValue,\r\n inputValue,\r\n handleInputChange,\r\n handleInputBlur,\r\n handleSelect,\r\n } = useDatePicker({\r\n id,\r\n ref,\r\n value,\r\n defaultValue,\r\n onChange,\r\n minDate,\r\n maxDate,\r\n displayFormat: resolvedFormat,\r\n disabled,\r\n })\r\n\r\n const handleInputKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\r\n // ArrowDown (optionally with Alt) opens the calendar – common combobox affordance.\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault()\r\n openMenu()\r\n }\r\n }\r\n\r\n const calendarLabel = label !== undefined ? `Choose date, ${label}` : 'Choose date'\r\n\r\n return (\r\n <div style={{ width: width ?? '100%' }}>\r\n <TextField\r\n ref={mergedRef}\r\n id={fieldId}\r\n label={label}\r\n helperText={helperText}\r\n size={size}\r\n status={status}\r\n disabled={disabled}\r\n required={required}\r\n placeholder={placeholder ?? resolvedFormat.toUpperCase()}\r\n value={inputValue}\r\n readOnly={!editable}\r\n inputMode={'numeric'}\r\n autoComplete={'off'}\r\n aria-haspopup={'dialog'}\r\n aria-expanded={open}\r\n aria-controls={open ? dialogId : undefined}\r\n onChange={handleInputChange}\r\n onBlur={handleInputBlur}\r\n onKeyDown={handleInputKeyDown}\r\n onClick={!editable ? openMenu : undefined}\r\n endAction={\r\n <IconButton\r\n icon={CalendarIcon}\r\n ariaLabel={open ? 'Close calendar' : 'Open calendar'}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={ICON_BUTTON_SIZE[size]}\r\n type={'button'}\r\n disabled={disabled}\r\n aria-haspopup={'dialog'}\r\n aria-expanded={open}\r\n aria-controls={open ? dialogId : undefined}\r\n onClick={toggle}\r\n />\r\n }\r\n />\r\n\r\n {open && (\r\n <CalendarPopover\r\n anchorEl={anchorEl}\r\n dialogId={dialogId}\r\n ariaLabel={calendarLabel}\r\n onClose={close}\r\n selectedDate={currentValue}\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n locale={locale}\r\n weekStartsOn={weekStartsOn}\r\n onSelect={handleSelect}\r\n />\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nDatePicker.displayName = 'DatePicker'\r\n\r\nexport default DatePicker\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\n\r\nimport type { ArticleProps } from '@components/layout/article/Article.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Semantic `<article>` enriched with the same token-aware style props as `Box`.\r\n *\r\n * Use `Article` for self-contained content that could stand alone and be\r\n * re-distributed independently (blog posts, news articles, forum posts, cards).\r\n * Each `Article` should ideally have a heading.\r\n *\r\n * @example <Article padding=\"lg\" borderRadius=\"md\" backgroundColor=\"surfacePaper\">…</Article>\r\n */\r\nconst Article: FC<ArticleProps> = ({ ref, style, className, children, ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps(props)\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <article\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </article>\r\n )\r\n}\r\n\r\nArticle.displayName = 'Article'\r\n\r\nexport default Article\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\n\r\nimport type { AsideProps } from '@components/layout/aside/Aside.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Semantic `<aside>` enriched with the same token-aware style props as `Box`.\r\n *\r\n * Use `Aside` for supplemental content that is tangentially related to the\r\n * surrounding content (sidebars, pull-quotes, ads, related links).\r\n * Screen-readers expose it as the `complementary` landmark.\r\n *\r\n * @example <Aside aria-label=\"Related articles\" width=\"280px\" padding=\"md\">…</Aside>\r\n */\r\nconst Aside: FC<AsideProps> = ({ ref, style, className, children, ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps(props)\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <aside\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </aside>\r\n )\r\n}\r\n\r\nAside.displayName = 'Aside'\r\n\r\nexport default Aside\r\n","import { createVariants } from '@aurora-ds/theme'\r\n\r\nexport const CARD_VARIANTS = createVariants((theme) => ({\r\n base: {\r\n boxSizing: 'border-box' as const,\r\n borderRadius: theme.radius.lg,\r\n border: '1px solid transparent',\r\n },\r\n variants: {\r\n variant: {\r\n elevated: {\r\n backgroundColor: theme.colors.surfacePaper,\r\n boxShadow: theme.shadows.md,\r\n },\r\n outlined: {\r\n backgroundColor: theme.colors.surfacePaper,\r\n borderColor: theme.colors.borderMain,\r\n },\r\n },\r\n },\r\n defaultVariants: { variant: 'elevated' },\r\n}), { id: 'card' })\r\n","import type { FC } from 'react'\nimport { Icon } from '@components/foundation/icon'\nimport { Text } from '@components/foundation/text'\nimport { Stack } from '@components/layout/stack'\nimport type { CardHeaderProps } from '@components/layout/card/card-header/CardHeader.props'\n\nconst CardHeader: FC<CardHeaderProps> = ({\n label,\n icon,\n actions,\n flexDirection = 'row',\n gap = 'sm',\n alignItems = 'center',\n justifyContent = 'space-between',\n py = 'sm',\n px = 'md',\n ...rest\n}) => {\n return (\n <Stack\n flexDirection={flexDirection}\n alignItems={alignItems}\n justifyContent={justifyContent}\n gap={gap}\n py={py}\n px={px}\n {...rest}\n >\n <Stack\n alignItems={'center'}\n gap={'sm'}\n flex={1}\n minWidth={'0'}\n >\n {icon !== undefined && (\n <Icon\n icon={icon}\n size={'md'}\n strokeColor={'textSecondary'}\n />\n )}\n <Text\n variant={'span'}\n fontSize={'sm'}\n fontWeight={'semibold'}\n color={'textPrimary'}\n >\n {label}\n </Text>\n </Stack>\n {actions !== undefined && (\n <Stack\n alignItems={'center'}\n gap={'xs'}\n flexShrink={0}\n >\n {actions}\n </Stack>\n )}\n </Stack>\n )\n}\n\nCardHeader.displayName = 'Card.Header'\n\nexport default CardHeader\n","import type { FC } from 'react'\nimport type { CardBodyProps } from '@components/layout/card/card-body/CardBody.props'\nimport { Stack } from '@components/layout/stack'\n\nconst CardBody: FC<CardBodyProps> = ({\n children,\n py = 'md',\n px = 'md',\n flexDirection = 'column',\n gap = 'sm',\n ...rest\n}) => {\n return (\n <Stack\n flexDirection={flexDirection}\n gap={gap}\n py={py}\n px={px}\n {...rest}\n >\n {children}\n </Stack>\n )\n}\n\nCardBody.displayName = 'Card.Body'\n\nexport default CardBody\n","import { cx } from '@aurora-ds/theme'\r\nimport type { FC } from 'react'\r\nimport { CARD_VARIANTS } from '@components/layout/card/Card.styles'\r\nimport Box from '@components/layout/box/Box'\r\nimport type { BoxProps } from '@components/layout/box/Box.props'\r\nimport CardHeader from '@components/layout/card/card-header/CardHeader'\r\nimport CardBody from '@components/layout/card/card-body/CardBody'\r\nimport type { CardProps } from '@components/layout/card/Card.props'\r\nimport type { CardComponent } from '@components/layout/card/card.types'\r\n\r\nconst CardBase: FC<CardProps> = (\r\n { ref, variant = 'outlined', padding = 'none', className, children, ...rest }\r\n) => {\r\n return (\r\n <Box\r\n ref={ref}\r\n padding={padding}\r\n className={cx(CARD_VARIANTS({ variant }), className)}\r\n {...rest as BoxProps}\r\n >\r\n {children}\r\n </Box>\r\n )\r\n}\r\n\r\nCardBase.displayName = 'Card'\r\n\r\nconst Card = CardBase as CardComponent\r\nCard.Header = CardHeader\r\nCard.Body = CardBody\r\n\r\nexport default Card\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\n\r\nimport type { FooterProps } from '@components/layout/footer/Footer.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Semantic `<footer>` enriched with the same token-aware style props as `Box`.\r\n *\r\n * Use `Footer` for the closing content of a page or a section\r\n * (copyright, links, contact info). Screen-readers expose it as the\r\n * `contentinfo` landmark when it is a direct child of `<body>`.\r\n *\r\n * @example <Footer py=\"md\" display=\"flex\" justifyContent=\"space-between\">…</Footer>\r\n */\r\nconst Footer: FC<FooterProps> = ({ ref, style, className, children, ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps(props)\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <footer\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </footer>\r\n )\r\n}\r\n\r\nFooter.displayName = 'Footer'\r\n\r\nexport default Footer\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { GridStyleProps } from '@components/layout/grid/Grid.props'\r\n\r\nexport const GRID_STYLES = createStyles(() => ({\r\n root: ({\r\n autoFlow,\r\n autoColumns,\r\n autoRows,\r\n alignContent,\r\n justifyItems,\r\n placeItems,\r\n placeContent,\r\n }: Pick<GridStyleProps, 'autoFlow' | 'autoColumns' | 'autoRows' | 'alignContent' | 'justifyItems' | 'placeItems' | 'placeContent'>) => ({\r\n ...(autoFlow !== undefined && { gridAutoFlow: autoFlow }),\r\n ...(autoColumns !== undefined && { gridAutoColumns: autoColumns }),\r\n ...(autoRows !== undefined && { gridAutoRows: autoRows }),\r\n ...(alignContent !== undefined && { alignContent }),\r\n ...(justifyItems !== undefined && { justifyItems }),\r\n ...(placeItems !== undefined && { placeItems }),\r\n ...(placeContent !== undefined && { placeContent }),\r\n }),\r\n}))\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { Box } from '@components/layout/box'\r\nimport { GRID_STYLES } from '@components/layout/grid/Grid.styles'\r\n\r\nimport type { GridProps } from '@components/layout/grid/Grid.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * A CSS Grid `Box` with convenience props for common grid patterns.\r\n *\r\n * Defaults to `display: grid`. The `columns` and `rows` shorthands accept either a\r\n * number (expanded to `repeat(n, 1fr)`) or any valid CSS `grid-template-*` string.\r\n * All `Box` style props remain available (`gap`, `rowGap`, `columnGap`,\r\n * `gridTemplateColumns`, `gridTemplateRows`, `alignItems`, `justifyContent`, …).\r\n *\r\n * @example <Grid columns={3} gap='md'>…</Grid>\r\n * @example <Grid columns='repeat(auto-fill, minmax(200px, 1fr))' gap='lg'>…</Grid>\r\n * @example <Grid rows={2} autoFlow='column' gap='sm' alignItems='center'>…</Grid>\r\n */\r\nconst Grid: FC<GridProps> = (\r\n {\r\n display = 'grid',\r\n columns,\r\n rows,\r\n autoFlow,\r\n autoColumns,\r\n autoRows,\r\n alignContent,\r\n justifyItems,\r\n placeItems,\r\n placeContent,\r\n gridTemplateColumns,\r\n gridTemplateRows,\r\n className,\r\n rowGap='sm',\r\n columnGap='sm',\r\n ...rest\r\n }\r\n) => {\r\n const resolvedColumns = columns !== undefined\r\n ? (typeof columns === 'number' ? `repeat(${columns}, 1fr)` : columns)\r\n : gridTemplateColumns\r\n\r\n const resolvedRows = rows !== undefined\r\n ? (typeof rows === 'number' ? `repeat(${rows}, 1fr)` : rows)\r\n : gridTemplateRows\r\n\r\n const gridClassName = GRID_STYLES.root({\r\n autoFlow,\r\n autoColumns,\r\n autoRows,\r\n alignContent,\r\n justifyItems,\r\n placeItems,\r\n placeContent,\r\n })\r\n\r\n return (\r\n <Box\r\n display={display}\r\n gridTemplateColumns={resolvedColumns}\r\n gridTemplateRows={resolvedRows}\r\n rowGap={rowGap}\r\n columnGap={columnGap}\r\n className={cx(gridClassName, className)}\r\n {...rest}\r\n />\r\n )\r\n}\r\n\r\nGrid.displayName = 'Grid'\r\n\r\nexport default Grid\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const HEADER_STYLES = createStyles((theme) => ({\r\n withBorder: () => ({\r\n borderBottom: `1px solid ${theme.colors.borderMain}`,\r\n }),\r\n}), { id: 'header' })\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\nimport { HEADER_STYLES } from '@components/layout/header/Header.styles'\r\n\r\nimport type { HeaderProps } from '@components/layout/header/Header.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Semantic `<header>` enriched with the same token-aware style props as `Box`.\r\n *\r\n * Use `Header` for the introductory content of a page or a section\r\n * (logo, site title, navigation). Screen-readers expose it as the\r\n * `banner` landmark when it is a direct child of `<body>`.\r\n *\r\n * @example <Header px=\"sm\" py=\"xs\" alignItems=\"center\" gap=\"sm\">…</Header>\r\n * @example <Header withBorder>…</Header>\r\n */\r\nconst Header: FC<HeaderProps> = ({ ref, style, className, children, withBorder = true, width = '100%', display = 'flex', px = 'sm', py = 'xs', ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps({ display, px, py, width, ...props })\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <header\r\n ref={ref}\r\n className={cx(generatedClassName, withBorder && HEADER_STYLES.withBorder(), className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </header>\r\n )\r\n}\r\n\r\nHeader.displayName = 'Header'\r\n\r\nexport default Header\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\n\r\nimport type { MainProps } from '@components/layout/main/Main.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Semantic `<main>` enriched with the same token-aware style props as `Box`.\r\n *\r\n * Use `Main` for the primary content of the page. There should be only **one**\r\n * `Main` per page. Screen-readers expose it as the `main` landmark, allowing\r\n * users to jump directly to the core content.\r\n *\r\n * @example <Main padding=\"xl\" display=\"flex\" flexDirection=\"column\" gap=\"lg\">…</Main>\r\n */\r\nconst Main: FC<MainProps> = ({ ref, style, className, children, ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps(props)\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <main\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </main>\r\n )\r\n}\r\n\r\nMain.displayName = 'Main'\r\n\r\nexport default Main\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\n\r\nimport type { NavProps } from '@components/layout/nav/Nav.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Semantic `<nav>` enriched with the same token-aware style props as `Box`.\r\n *\r\n * Use `Nav` to wrap sets of navigation links. When multiple `Nav` elements\r\n * are present, give each a distinct `aria-label` so screen-reader users can\r\n * tell them apart (e.g. `aria-label=\"Main navigation\"` vs `aria-label=\"Footer links\"`).\r\n *\r\n * @example <Nav aria-label=\"Main navigation\" display=\"flex\" gap=\"sm\">…</Nav>\r\n */\r\nconst Nav: FC<NavProps> = ({ ref, style, className, children, ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps(props)\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <nav\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </nav>\r\n )\r\n}\r\n\r\nNav.displayName = 'Nav'\r\n\r\nexport default Nav\r\n","import { cx } from '@aurora-ds/theme'\r\n\r\nimport { extractBoxStyleProps } from '@components/layout/_common/extractBoxStyleProps.utils'\r\nimport { BOX_STYLES } from '@components/layout/box/Box.styles'\r\n\r\nimport type { SectionProps } from '@components/layout/section/Section.props'\r\nimport type { FC } from 'react'\r\n\r\n/**\r\n * Semantic `<section>` enriched with the same token-aware style props as `Box`.\r\n *\r\n * Use `Section` to group thematically related content — the browser outline\r\n * and screen-readers will announce it as a landmark region when it has an\r\n * accessible name (`aria-label` or `aria-labelledby`).\r\n *\r\n * @example <Section aria-label=\"Features\" padding=\"lg\" gap=\"md\">…</Section>\r\n */\r\nconst Section: FC<SectionProps> = ({ ref, style, className, children, ...props }) => {\r\n const { styleProps, restProps } = extractBoxStyleProps(props)\r\n const generatedClassName = BOX_STYLES.root(styleProps)\r\n\r\n return (\r\n <section\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...restProps}\r\n >\r\n {children}\r\n </section>\r\n )\r\n}\r\n\r\nSection.displayName = 'Section'\r\n\r\nexport default Section\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport type { SeparatorStyleParams } from '@components/layout/separator/Separator.props'\r\nimport type { SeparatorThickness } from '@components/layout/separator/separator.types'\r\n\r\n/** Maps thickness token to a CSS pixel value. Exported for use in the component. */\r\nexport const THICKNESS_PX: Record<SeparatorThickness, string> = {\r\n '1': '1px',\r\n '2': '2px',\r\n '4': '4px',\r\n}\r\n\r\nexport const SEPARATOR_STYLES = createStyles((theme) => ({\r\n root: ({ orientation = 'horizontal', color = 'borderMain', thickness = '1', spacing, hasLabel }: SeparatorStyleParams) => {\r\n const borderColor = theme.colors[color]\r\n const borderWidth = THICKNESS_PX[thickness]\r\n\r\n if (orientation === 'vertical') {\r\n return {\r\n display: 'inline-block',\r\n alignSelf: 'stretch',\r\n width: borderWidth,\r\n minHeight: '1em',\r\n backgroundColor: borderColor,\r\n border: 'none',\r\n flexShrink: 0,\r\n ...(spacing && { margin: `0 ${theme.spacing[spacing]}` }),\r\n }\r\n }\r\n\r\n if (hasLabel) {\r\n return {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing.sm,\r\n width: '100%',\r\n border: 'none',\r\n margin: 0,\r\n padding: 0,\r\n ...(spacing && { margin: `${theme.spacing[spacing]} 0` }),\r\n }\r\n }\r\n\r\n return {\r\n display: 'block',\r\n width: '100%',\r\n height: 0,\r\n border: 'none',\r\n borderTop: `${borderWidth} solid ${borderColor}`,\r\n margin: 0,\r\n ...(spacing && { margin: `${theme.spacing[spacing]} 0` }),\r\n }\r\n },\r\n}), { id: 'separator' })\r\n","import { useTheme } from '@aurora-ds/theme'\r\nimport { SEPARATOR_STYLES, THICKNESS_PX } from '@components/layout/separator/Separator.styles'\r\nimport { Text } from '@components/foundation/text'\r\nimport { type CSSProperties, type FC, type Ref } from 'react'\r\n\r\nimport type { SeparatorProps } from '@components/layout/separator/Separator.props'\r\n\r\n/**\r\n * A visual separator line (horizontal or vertical) with optional centered label.\r\n *\r\n * Uses `<hr>` for horizontal separators (implicit `role=\"separator\"`) and a\r\n * `<div role=\"separator\">` for vertical or labeled variants.\r\n *\r\n * @example <Separator />\r\n * @example <Separator orientation=\"vertical\" />\r\n * @example <Separator label=\"Or\" spacing=\"md\" />\r\n * @example <Separator color=\"primaryMain\" thickness=\"2\" />\r\n * @example <Separator decorative />\r\n */\r\nconst Separator: FC<SeparatorProps> = ({\r\n ref,\r\n orientation = 'horizontal',\r\n color = 'borderMain',\r\n thickness = '1',\r\n spacing,\r\n label,\r\n decorative = true,\r\n ...rest\r\n}) => {\r\n const theme = useTheme()\r\n const hasLabel = !!label && orientation === 'horizontal'\r\n\r\n const rootClassName = SEPARATOR_STYLES.root({ orientation, color, thickness, spacing, hasLabel })\r\n\r\n /** Inline style for the decorative line spans flanking the label. */\r\n const lineStyle: CSSProperties = {\r\n flex: 1,\r\n height: 0,\r\n border: 'none',\r\n borderTop: `${THICKNESS_PX[thickness]} solid ${theme.colors[color]}`,\r\n }\r\n\r\n /**\r\n * Decorative separators are hidden from assistive technology.\r\n * Meaningful separators expose role + orientation (and optionally a label).\r\n */\r\n const a11yProps = decorative\r\n ? { 'aria-hidden': true as const, role: 'none' as const }\r\n : {\r\n role: 'separator' as const,\r\n 'aria-orientation': orientation,\r\n ...(label && { 'aria-label': label }),\r\n }\r\n\r\n // ── Labeled horizontal separator ─────────────────────────────────────────\r\n if (hasLabel) {\r\n return (\r\n <div\r\n ref={ref as Ref<HTMLDivElement>}\r\n className={rootClassName}\r\n {...a11yProps}\r\n {...rest}\r\n >\r\n <span\r\n style={lineStyle}\r\n aria-hidden={'true'}\r\n />\r\n <Text\r\n variant={'span'}\r\n fontSize={'xs'}\r\n fontWeight={'medium'}\r\n color={'textTertiary'}\r\n noWrap\r\n >\r\n {label}\r\n </Text>\r\n <span\r\n style={lineStyle}\r\n aria-hidden={'true'}\r\n />\r\n </div>\r\n )\r\n }\r\n\r\n // ── Vertical separator ────────────────────────────────────────────────────\r\n if (orientation === 'vertical') {\r\n return (\r\n <div\r\n ref={ref as Ref<HTMLDivElement>}\r\n className={rootClassName}\r\n {...a11yProps}\r\n {...rest}\r\n />\r\n )\r\n }\r\n\r\n // ── Horizontal separator (default) ────────────────────────────────────────\r\n // <hr> carries the implicit role=\"separator\" natively.\r\n return (\r\n <hr\r\n ref={ref as Ref<HTMLHRElement>}\r\n className={rootClassName}\r\n {...a11yProps}\r\n {...rest}\r\n />\r\n )\r\n}\r\n\r\nSeparator.displayName = 'Separator'\r\n\r\nexport default Separator\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const BREADCRUMB_STYLES = createStyles((_theme) => ({\r\n nav: {\r\n display: 'block',\r\n },\r\n list: {\r\n display: 'flex',\r\n flexWrap: 'wrap' as const,\r\n alignItems: 'center',\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: 0,\r\n },\r\n}), { id: 'breadcrumb' })\r\n","import { createContext, useContext } from 'react'\r\nimport type { BreadcrumbSeparator } from '@components/navigation/breadcrumb/breadcrumb.types'\r\n\r\nexport type BreadcrumbContextValue = {\r\n separator: BreadcrumbSeparator\r\n}\r\n\r\nexport const BreadcrumbContext = createContext<BreadcrumbContextValue>({\r\n separator: '/',\r\n})\r\n\r\nexport const useBreadcrumbContext = (): BreadcrumbContextValue =>\r\n useContext(BreadcrumbContext)\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const BREADCRUMB_ITEM_STYLES = createStyles((theme) => ({\r\n item: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n fontSize: theme.fontSize.sm,\r\n lineHeight: theme.lineHeight.normal,\r\n },\r\n separator: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n marginLeft: theme.spacing.sm,\r\n marginRight: theme.spacing.sm,\r\n color: theme.colors.textTertiary,\r\n userSelect: 'none' as const,\r\n },\r\n}), { id: 'breadcrumb-item' })\r\n","import { type FC } from 'react'\r\n\r\nimport { BREADCRUMB_ITEM_STYLES } from '@components/navigation/breadcrumb/breadcrumb-item/BreadcrumbItem.styles'\r\nimport { useBreadcrumbContext } from '@components/navigation/breadcrumb/Breadcrumb.context'\r\nimport { Link } from '@components/actions/link'\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { BreadcrumbItemProps } from '@components/navigation/breadcrumb/breadcrumb-item/BreadcrumbItem.props'\r\n\r\nconst BreadcrumbItem: FC<BreadcrumbItemProps> = ({\r\n label,\r\n href,\r\n onClick,\r\n current = false,\r\n isFirst = false,\r\n}) => {\r\n const { separator } = useBreadcrumbContext()\r\n\r\n return (\r\n // aria-current=\"page\" is placed on the <li> (not on a nested span) because\r\n // the current item is non-interactive text. WAI-ARIA requires aria-current\r\n // on the element that represents the current page in the trail.\r\n <li\r\n className={BREADCRUMB_ITEM_STYLES.item}\r\n aria-current={current ? 'page' : undefined}\r\n >\r\n {!isFirst && (\r\n <span\r\n aria-hidden={true}\r\n className={BREADCRUMB_ITEM_STYLES.separator}\r\n >\r\n {separator}\r\n </span>\r\n )}\r\n\r\n {current ? (\r\n <Text\r\n variant={'span'}\r\n fontWeight={'semibold'}\r\n color={'textPrimary'}\r\n >\r\n {label}\r\n </Text>\r\n ) : (\r\n <Link\r\n href={href}\r\n onClick={onClick}\r\n color={'secondary'}\r\n underline={'hover'}\r\n label={label}\r\n />\r\n )}\r\n </li>\r\n )\r\n}\r\n\r\nBreadcrumbItem.displayName = 'Breadcrumb.Item'\r\n\r\nexport default BreadcrumbItem\r\n","import { Children, cloneElement, isValidElement, useMemo, type FC } from 'react'\r\n\r\nimport { BREADCRUMB_STYLES } from '@components/navigation/breadcrumb/Breadcrumb.styles'\r\nimport { BreadcrumbContext, type BreadcrumbContextValue } from '@components/navigation/breadcrumb/Breadcrumb.context'\r\nimport BreadcrumbItem from '@components/navigation/breadcrumb/breadcrumb-item/BreadcrumbItem'\r\n\r\nimport type { BreadcrumbProps } from '@components/navigation/breadcrumb/Breadcrumb.props'\r\nimport type { BreadcrumbComponent } from '@components/navigation/breadcrumb/Breadcrumb.component.types'\r\n\r\n/**\r\n * WAI-ARIA compliant breadcrumb navigation using a compound component API.\r\n *\r\n * ```tsx\r\n * <Breadcrumb separator='/'>\r\n * <Breadcrumb.Item label='Home' href='/' />\r\n * <Breadcrumb.Item label='Products' href='/products' />\r\n * <Breadcrumb.Item label='Laptop Pro X' current />\r\n * </Breadcrumb>\r\n * ```\r\n *\r\n * The last item is typically marked as `current` — it renders as bold text (non-clickable)\r\n * and exposes `aria-current=\"page\"` for assistive technologies.\r\n */\r\nconst BreadcrumbBase: FC<BreadcrumbProps> = ({\r\n children,\r\n separator = '/',\r\n ariaLabel = 'Breadcrumb',\r\n}) => {\r\n const contextValue = useMemo<BreadcrumbContextValue>(\r\n () => ({ separator }),\r\n [separator],\r\n )\r\n\r\n const items = Children.map(children, (child, index) => {\r\n if (!isValidElement(child)) {return child}\r\n return cloneElement(child as React.ReactElement<{ isFirst?: boolean }>, {\r\n isFirst: index === 0,\r\n })\r\n })\r\n\r\n return (\r\n <BreadcrumbContext.Provider value={contextValue}>\r\n <nav\r\n aria-label={ariaLabel}\r\n className={BREADCRUMB_STYLES.nav}\r\n >\r\n <ol className={BREADCRUMB_STYLES.list}>\r\n {items}\r\n </ol>\r\n </nav>\r\n </BreadcrumbContext.Provider>\r\n )\r\n}\r\n\r\nBreadcrumbBase.displayName = 'Breadcrumb'\r\n\r\nconst Breadcrumb = BreadcrumbBase as BreadcrumbComponent\r\nBreadcrumb.Item = BreadcrumbItem\r\n\r\nexport default Breadcrumb\r\n","import { createContext, useContext } from 'react'\r\n\r\nexport type DrawerContextValue = {\r\n /** Whether the drawer is in expanded (true) or collapsed (false) state. */\r\n isExpanded: boolean\r\n}\r\n\r\nexport const DrawerContext = createContext<DrawerContextValue>({\r\n isExpanded: true,\r\n})\r\n\r\nexport const useDrawerContext = (): DrawerContextValue => useContext(DrawerContext)\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport {\r\n COLLAPSED_DRAWER_WIDTH,\r\n DEFAULT_TRANSITION_DURATION_MS,\r\n EXPANDED_DRAWER_WIDTH,\r\n} from '@constants/app.constants'\r\n\r\nexport { COLLAPSED_DRAWER_WIDTH, EXPANDED_DRAWER_WIDTH }\r\n\r\nconst TRANSITION = `${DEFAULT_TRANSITION_DURATION_MS}ms ease`\r\n\r\nexport const DRAWER_STYLES = createStyles((theme) => ({\r\n root: ({ isExpanded }: { isExpanded: boolean }) => ({\r\n display: 'flex',\r\n flexDirection: 'column' as const,\r\n width: isExpanded ? EXPANDED_DRAWER_WIDTH : COLLAPSED_DRAWER_WIDTH,\r\n transition: `width ${theme.transition.normal}`,\r\n overflow: 'hidden',\r\n backgroundColor: theme.colors.surfacePaper,\r\n borderRight: `1px solid ${theme.colors.borderMain}`,\r\n boxSizing: 'border-box' as const,\r\n flexShrink: 0,\r\n }),\r\n\r\n /** Temporary variant: slides in from the left as a fixed portal overlay. */\r\n temporaryPanel: {\r\n position: 'fixed' as const,\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n width: EXPANDED_DRAWER_WIDTH,\r\n zIndex: theme.zIndex.modal,\r\n display: 'flex',\r\n flexDirection: 'column' as const,\r\n backgroundColor: theme.colors.surfacePaper,\r\n borderRight: `1px solid ${theme.colors.borderMain}`,\r\n boxSizing: 'border-box' as const,\r\n overflowY: 'auto' as const,\r\n overflowX: 'hidden' as const,\r\n willChange: 'transform',\r\n transform: 'translateX(-100%)',\r\n transition: `transform ${TRANSITION}`,\r\n boxShadow: theme.shadows.xl,\r\n },\r\n\r\n temporaryPanelVisible: {\r\n transform: 'translateX(0)',\r\n },\r\n}))\r\n","/**\r\n * Responsive breakpoints (min-width, mobile-first).\r\n * Keep in sync with themeBreakpoints.\r\n */\r\nexport const BREAKPOINTS = {\r\n xs: 480,\r\n sm: 640,\r\n md: 768,\r\n lg: 1024,\r\n xl: 1280,\r\n '2xl': 1536,\r\n} as const\r\n\r\n/** Max-width media query strings (max = breakpoint - 1px). */\r\nexport const MEDIA_MAX = {\r\n xs: `max-width: ${BREAKPOINTS.xs - 1}px`,\r\n sm: `max-width: ${BREAKPOINTS.sm - 1}px`,\r\n md: `max-width: ${BREAKPOINTS.md - 1}px`,\r\n lg: `max-width: ${BREAKPOINTS.lg - 1}px`,\r\n xl: `max-width: ${BREAKPOINTS.xl - 1}px`,\r\n '2xl': `max-width: ${BREAKPOINTS['2xl'] - 1}px`,\r\n} as const\r\n\r\n/** Min-width media query strings (standard breakpoints). */\r\nexport const MEDIA_MIN = {\r\n xs: `min-width: ${BREAKPOINTS.xs}px`,\r\n sm: `min-width: ${BREAKPOINTS.sm}px`,\r\n md: `min-width: ${BREAKPOINTS.md}px`,\r\n lg: `min-width: ${BREAKPOINTS.lg}px`,\r\n xl: `min-width: ${BREAKPOINTS.xl}px`,\r\n '2xl': `min-width: ${BREAKPOINTS['2xl']}px`,\r\n} as const\r\n","import { useState, useEffect } from 'react'\r\n\r\nimport { BREAKPOINTS } from '@constants/breakpoints.constants'\r\n\r\nimport type { DrawerVariant } from '@components/navigation/drawer/Drawer.props'\r\n\r\nconst MOBILE_MQ = `(max-width: ${BREAKPOINTS.sm - 1}px)`\r\n\r\n/**\r\n * Resolves the effective drawer variant based on the explicit `variant` prop\r\n * and the current viewport width.\r\n *\r\n * - If `variant` is explicitly provided (`'permanent'` or `'temporary'`), returns it as-is.\r\n * - Otherwise, auto-detects: `'temporary'` on mobile (< sm breakpoint), `'permanent'` on desktop.\r\n *\r\n * Reacts to viewport changes (window resize) so switching between mobile and desktop\r\n * automatically updates the variant without requiring a page reload.\r\n */\r\nexport const useDrawerVariant = (variant?: DrawerVariant): DrawerVariant => {\r\n const [isMobile, setIsMobile] = useState<boolean>(() => {\r\n if (typeof window === 'undefined') { return false }\r\n return window.matchMedia(MOBILE_MQ).matches\r\n })\r\n\r\n useEffect(() => {\r\n if (typeof window === 'undefined') { return }\r\n const mq = window.matchMedia(MOBILE_MQ)\r\n const handler = (e: MediaQueryListEvent): void => setIsMobile(e.matches)\r\n mq.addEventListener('change', handler)\r\n return () => mq.removeEventListener('change', handler)\r\n }, [])\r\n\r\n if (variant !== undefined) { return variant }\r\n return isMobile ? 'temporary' : 'permanent'\r\n}\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { DEFAULT_TRANSITION_DURATION_MS } from '@constants/app.constants'\r\n\r\nconst TRANSITION = `${DEFAULT_TRANSITION_DURATION_MS}ms ease`\r\n\r\nexport const BACKDROP_STYLES = createStyles((theme) => ({\r\n root: {\r\n position: 'fixed' as const,\r\n inset: 0,\r\n zIndex: theme.zIndex.modal - 1,\r\n backgroundColor: 'rgba(0, 0, 0, 0)',\r\n transition: `background-color ${TRANSITION}`,\r\n },\r\n\r\n visible: {\r\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\r\n },\r\n}), { id: 'backdrop' })\r\n","import { type FC } from 'react'\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { BACKDROP_STYLES } from '@components/overlay/backdrop/Backdrop.styles'\r\n\r\nimport type { BackdropProps } from '@components/overlay/backdrop/Backdrop.props'\r\n\r\n/**\r\n * Semi-transparent full-screen overlay used to visually block page content\r\n * while a modal element (dialog, temporary drawer…) is open.\r\n *\r\n * The `visible` prop drives the opacity transition: `false` = transparent,\r\n * `true` = `rgba(0,0,0,0.5)`. Mount/unmount is managed by the parent.\r\n *\r\n * @example\r\n * <Backdrop visible={isFadingIn} onClick={onClose} />\r\n */\r\nconst Backdrop: FC<BackdropProps> = ({ visible, onClick }) => (\r\n <div\r\n className={cx(BACKDROP_STYLES.root, visible && BACKDROP_STYLES.visible)}\r\n onClick={onClick}\r\n aria-hidden={true}\r\n />\r\n)\r\n\r\nBackdrop.displayName = 'Backdrop'\r\n\r\nexport default Backdrop\r\n","import { useEffect, useLayoutEffect, useState } from 'react'\r\n\r\nimport { DEFAULT_TRANSITION_DURATION_MS } from '@constants/app.constants'\r\n\r\nimport type { UseTransitionRenderReturnType } from '@hooks/common/use-transition-render/useTransitionRender.types'\r\n\r\n/**\r\n * Returns `true` if the user has requested reduced motion at the OS/browser level.\r\n * Falls back to `false` in environments where `matchMedia` is unavailable (SSR, tests).\r\n */\r\nconst getPrefersReducedMotion = (): boolean =>\r\n typeof window !== 'undefined' &&\r\n window.matchMedia('(prefers-reduced-motion: reduce)').matches\r\n\r\n/**\r\n * Manages mount/unmount transitions with a two-phase approach (visible → fading-in).\r\n *\r\n * Opening sequence:\r\n * 1. `useLayoutEffect` sets `isVisible=true` synchronously before the browser paints\r\n * → element is in the DOM at its initial hidden state on the very first frame.\r\n * 2. Double `requestAnimationFrame` in `useEffect` waits for two rendered frames\r\n * before setting `isFadingIn=true`, guaranteeing the CSS transition always starts\r\n * from the painted hidden state (prevents flickering).\r\n *\r\n * Closing sequence:\r\n * `isFadingIn=false` → CSS transition plays → after `duration` ms → `isVisible=false`.\r\n *\r\n * When `prefers-reduced-motion: reduce` is active the effective duration is forced to\r\n * `0` so the element is removed from the DOM immediately after hiding, in sync with\r\n * the near-instant CSS transition set by the global `globals.css` rule.\r\n *\r\n * @param isOpen - Whether the element should be shown.\r\n * @param duration - Transition duration in milliseconds (defaults to `DEFAULT_TRANSITION_DURATION_MS`).\r\n */\r\nexport const useTransitionRender = (\r\n isOpen: boolean,\r\n duration = DEFAULT_TRANSITION_DURATION_MS\r\n): UseTransitionRenderReturnType => {\r\n const effectiveDuration = getPrefersReducedMotion() ? 0 : duration\r\n const [isVisible, setIsVisible] = useState(isOpen)\r\n const [isFadingIn, setIsFadingIn] = useState(isOpen)\r\n\r\n // Mount synchronously before paint so the element is in the DOM at opacity:0\r\n // on the very first frame — no extra render cycle between null and the initial state.\r\n useLayoutEffect(() => {\r\n if (isOpen) {\r\n setIsVisible(true)\r\n }\r\n }, [isOpen])\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n // Double RAF: frame 1 → element rendered; frame 2 → element painted at hidden\r\n // state → THEN trigger the CSS transition.\r\n let raf2: number\r\n const raf1 = requestAnimationFrame(() => {\r\n raf2 = requestAnimationFrame(() => setIsFadingIn(true))\r\n })\r\n return () => {\r\n cancelAnimationFrame(raf1)\r\n cancelAnimationFrame(raf2)\r\n }\r\n } else {\r\n setIsFadingIn(false)\r\n const timeout = setTimeout(() => setIsVisible(false), effectiveDuration)\r\n return () => clearTimeout(timeout)\r\n }\r\n }, [isOpen, effectiveDuration])\r\n\r\n return { isVisible, isFadingIn }\r\n}\r\n","import { Box } from '@components/layout/box'\r\nimport { FC } from 'react'\r\nimport { DrawerHeaderProps } from '@components/navigation/drawer/drawer-header/DrawerHeader.props'\r\n\r\nconst DrawerHeader: FC<DrawerHeaderProps> = ({\r\n children,\r\n role,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n ariaDescribedBy,\r\n ...rest\r\n}) => {\r\n return (\r\n <Box\r\n px={'sm'}\r\n py={'xs'}\r\n role={role}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n {...rest}\r\n >\r\n {children}\r\n </Box>\r\n )\r\n}\r\n\r\nexport default DrawerHeader\r\n","import { Stack } from '@components/layout/stack'\r\nimport { FC } from 'react'\r\nimport { DrawerBodyProps } from '@components/navigation/drawer/drawer-body/DrawerBody.props'\r\n\r\nconst DrawerBody: FC<DrawerBodyProps> = ({\r\n children,\r\n role,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n ariaDescribedBy,\r\n ...rest\r\n}) => {\r\n return (\r\n <Stack\r\n px={'sm'}\r\n py={'xs'}\r\n height={'100%'}\r\n flexDirection={'column'}\r\n gap={'none'}\r\n role={role}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n overflow={'auto'}\r\n {...rest}\r\n >\r\n {children}\r\n </Stack>\r\n )\r\n}\r\n\r\nexport default DrawerBody\r\n","import { Box } from '@components/layout/box'\r\nimport { FC } from 'react'\r\nimport { DrawerFooterProps } from '@components/navigation/drawer/drawer-footer/DrawerFooter.props'\r\n\r\nconst DrawerFooter: FC<DrawerFooterProps> = ({\r\n children,\r\n role,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n ariaDescribedBy,\r\n ...rest\r\n}) => {\r\n return (\r\n <Box\r\n px={'sm'}\r\n py={'xs'}\r\n role={role}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n {...rest}\r\n >\r\n {children}\r\n </Box>\r\n )\r\n}\r\n\r\nexport default DrawerFooter\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport {\r\n COLLAPSED_DRAWER_ITEM_WIDTH,\r\n DEFAULT_DRAWER_ITEM_SIZE,\r\n DEFAULT_TRANSITION_DURATION_MS,\r\n EXPANDED_DRAWER_ITEM_WIDTH,\r\n} from '@constants/app.constants'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\ntype DrawerItemStyleParams = {\r\n selected: boolean\r\n isExpanded: boolean\r\n}\r\n\r\ntype LabelWrapperStyleParams = {\r\n isFadingIn: boolean\r\n}\r\n\r\nexport const DRAWER_ITEM_STYLES = createStyles((theme) => ({\r\n root: ({ selected, isExpanded }: DrawerItemStyleParams) => ({\r\n position: 'relative',\r\n display: 'flex',\r\n alignItems: 'center',\r\n width: isExpanded ? EXPANDED_DRAWER_ITEM_WIDTH : COLLAPSED_DRAWER_ITEM_WIDTH,\r\n gap: theme.spacing.sm,\r\n padding: `0 ${theme.spacing.smPlus}`,\r\n border: '1px solid transparent',\r\n borderRadius: theme.radius.md,\r\n fontFamily: 'inherit',\r\n fontSize: theme.fontSize.sm,\r\n userSelect: 'none' as const,\r\n cursor: 'pointer',\r\n outline: 'none',\r\n textDecoration: 'none',\r\n boxSizing: 'border-box' as const,\r\n transition: `width ${theme.transition.normal}, background-color ${theme.transition.fast}, color ${theme.transition.fast}`,\r\n whiteSpace: 'nowrap' as const,\r\n overflow: 'hidden',\r\n height: DEFAULT_DRAWER_ITEM_SIZE,\r\n ...(selected\r\n ? {\r\n backgroundColor: theme.colors.primaryMain,\r\n color: theme.colors.primaryOn,\r\n ':hover': { backgroundColor: theme.colors.primaryHover, color: theme.colors.primaryOn },\r\n ':active': { backgroundColor: theme.colors.primaryActive, color: theme.colors.primaryOn },\r\n }\r\n : {\r\n backgroundColor: 'transparent',\r\n color: theme.colors.defaultMain,\r\n ':hover:not(:disabled)': { backgroundColor: theme.colors.defaultSubtleHover, color: theme.colors.defaultHover },\r\n ':active:not(:disabled)': { backgroundColor: theme.colors.defaultSubtleActive, color: theme.colors.defaultActive },\r\n }),\r\n ':focus-visible': getFocusRingStyles(theme),\r\n ':disabled': { cursor: 'not-allowed', opacity: theme.opacity.high },\r\n }),\r\n iconWrap: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n },\r\n labelWrapper: ({ isFadingIn }: LabelWrapperStyleParams) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexDirection: 'row',\r\n gap: theme.spacing.sm,\r\n width: '100%',\r\n justifyContent: 'space-between',\r\n flex: 1,\r\n overflow: 'hidden',\r\n minWidth: 0,\r\n opacity: isFadingIn ? 1 : 0,\r\n transition: `opacity ${DEFAULT_TRANSITION_DURATION_MS}ms ease`,\r\n }),\r\n label: {\r\n flex: 1,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n fontWeight: theme.fontWeight.medium,\r\n },\r\n endContent: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexShrink: 0,\r\n marginLeft: 'auto',\r\n },\r\n}))\r\n","import { type FC, type MouseEvent } from 'react'\r\n\r\nimport { useDrawerContext } from '@components/navigation/drawer/Drawer.context'\r\nimport { DRAWER_ITEM_STYLES } from '@components/navigation/drawer/drawer-item/DrawerItem.styles'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Tooltip } from '@components/overlay/tooltip'\r\nimport { useTransitionRender } from '@hooks/common/use-transition-render/useTransitionRender'\r\n\r\nimport type { DrawerItemProps } from '@components/navigation/drawer/drawer-item/DrawerItem.props'\r\nimport { Stack } from '@components/layout/stack'\r\nimport { Text } from '@components/foundation/text'\r\n\r\n/**\r\n * Navigation/action item for use inside Drawer.Body or Drawer.Footer.\r\n *\r\n * - In **expanded** mode: shows icon + label (fade-in) + optional end content.\r\n * - In **collapsed** mode: shows only the icon; the label fades out before unmounting\r\n * and appears as a right-side tooltip on hover.\r\n * - Renders as `<a>` when `href` is provided, otherwise as `<button>`.\r\n * - The `selected` prop applies a primary-color highlight.\r\n */\r\nconst DrawerItem: FC<DrawerItemProps> = ({\r\n startIcon,\r\n label,\r\n selected = false,\r\n endContent,\r\n href,\r\n onClick,\r\n disabled = false,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n ariaDescribedBy,\r\n ariaControls,\r\n ariaExpanded,\r\n ariaHasPopup,\r\n ariaCurrent,\r\n}) => {\r\n const { isExpanded } = useDrawerContext()\r\n const { isVisible: isLabelVisible, isFadingIn: isLabelFadingIn } = useTransitionRender(isExpanded, 200)\r\n const rootClassName = DRAWER_ITEM_STYLES.root({ selected, isExpanded })\r\n const computedAriaLabel = ariaLabel ?? (!isExpanded ? label : undefined)\r\n const computedAriaCurrent = ariaCurrent ?? (selected ? 'page' : undefined)\r\n\r\n const handleClick = (e: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => {\r\n if (disabled) {\r\n e.preventDefault()\r\n return\r\n }\r\n // When an onClick handler is provided (e.g. React Router's navigate),\r\n // prevent the browser from following the href and let the handler drive navigation.\r\n if (onClick) {\r\n e.preventDefault()\r\n onClick(e)\r\n }\r\n }\r\n\r\n const innerContent = (\r\n <Stack\r\n width={'100%'}\r\n justifyContent={'start'}\r\n >\r\n {startIcon && (\r\n <span className={DRAWER_ITEM_STYLES.iconWrap}>\r\n <Icon\r\n icon={startIcon}\r\n size={'md'}\r\n />\r\n </span>\r\n )}\r\n {isLabelVisible && (\r\n <span className={DRAWER_ITEM_STYLES.labelWrapper({ isFadingIn: isLabelFadingIn })}>\r\n <Text\r\n variant={'span'}\r\n fontSize={'sm'}\r\n fontWeight={'medium'}\r\n className={DRAWER_ITEM_STYLES.label}\r\n textAlign={'start'}\r\n >\r\n {label}\r\n </Text>\r\n\r\n {endContent && (\r\n <span className={DRAWER_ITEM_STYLES.endContent}>\r\n {endContent}\r\n </span>\r\n )}\r\n </span>\r\n )}\r\n\r\n </Stack>\r\n )\r\n\r\n const item = href ? (\r\n <a\r\n href={href}\r\n className={rootClassName}\r\n aria-disabled={disabled || undefined}\r\n aria-current={computedAriaCurrent}\r\n aria-label={computedAriaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n aria-controls={ariaControls}\r\n aria-expanded={ariaExpanded}\r\n aria-haspopup={ariaHasPopup}\r\n tabIndex={disabled ? -1 : undefined}\r\n onClick={handleClick}\r\n >\r\n {innerContent}\r\n </a>\r\n ) : (\r\n <button\r\n type={'button'}\r\n className={rootClassName}\r\n disabled={disabled}\r\n aria-current={computedAriaCurrent}\r\n aria-label={computedAriaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n aria-controls={ariaControls}\r\n aria-expanded={ariaExpanded}\r\n aria-haspopup={ariaHasPopup}\r\n onClick={handleClick}\r\n >\r\n {innerContent}\r\n </button>\r\n )\r\n\r\n return (\r\n <Tooltip\r\n label={label}\r\n placement={'right'}\r\n inline\r\n withArrow\r\n disabled={isExpanded || disabled}\r\n >\r\n {item}\r\n </Tooltip>\r\n )\r\n}\r\n\r\nDrawerItem.displayName = 'DrawerItem'\r\n\r\nexport default DrawerItem\r\n","import { createPortal } from 'react-dom'\r\nimport { type AriaRole, type FC, type CSSProperties, type ReactNode } from 'react'\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { DrawerContext } from '@components/navigation/drawer/Drawer.context'\r\nimport { DRAWER_STYLES } from '@components/navigation/drawer/Drawer.styles'\r\nimport { useDrawerVariant } from '@components/navigation/drawer/utils/useDrawerVariant.utils'\r\nimport { Backdrop } from '@components/overlay/backdrop'\r\nimport { useTransitionRender } from '@hooks/common/use-transition-render/useTransitionRender'\r\nimport { useBodyScrollLock } from '@hooks/common/use-body-scroll-lock/useBodyScrollLock'\r\nimport { useKeyPress } from '@hooks/common/use-key-press/useKeyPress'\r\nimport DrawerHeader from '@components/navigation/drawer/drawer-header/DrawerHeader'\r\nimport DrawerBody from '@components/navigation/drawer/drawer-body/DrawerBody'\r\nimport DrawerFooter from '@components/navigation/drawer/drawer-footer/DrawerFooter'\r\nimport DrawerItem from '@components/navigation/drawer/drawer-item/DrawerItem'\r\n\r\nimport type { DrawerProps } from '@components/navigation/drawer/Drawer.props'\r\nimport type { DrawerComponent } from '@components/navigation/drawer/Drawer.types'\r\n\r\n// ─── Temporary overlay drawer ───────────────────────────────────────────────\r\n\r\ntype DrawerTemporaryPanelProps = {\r\n isExpanded: boolean\r\n onClose: () => void\r\n height?: CSSProperties['height']\r\n children: ReactNode\r\n role?: AriaRole\r\n ariaLabel: string\r\n ariaLabelledBy?: string\r\n ariaDescribedBy?: string\r\n}\r\n\r\n/**\r\n * Internal component: renders the temporary drawer as a fixed portal overlay\r\n * that slides in from the left with a backdrop, animated via `useTransitionRender`.\r\n */\r\nconst DrawerTemporaryPanel: FC<DrawerTemporaryPanelProps> = ({\r\n isExpanded,\r\n onClose,\r\n children,\r\n role,\r\n ariaLabel,\r\n ariaLabelledBy,\r\n ariaDescribedBy,\r\n}) => {\r\n const { isVisible, isFadingIn } = useTransitionRender(isExpanded)\r\n\r\n useBodyScrollLock(isExpanded)\r\n useKeyPress({ Escape: onClose }, { enabled: isExpanded })\r\n\r\n if (!isVisible) {\r\n return null\r\n }\r\n\r\n return createPortal(\r\n <>\r\n <Backdrop\r\n visible={isFadingIn}\r\n onClick={onClose}\r\n />\r\n <DrawerContext.Provider value={{ isExpanded: true }}>\r\n <nav\r\n className={cx(\r\n DRAWER_STYLES.temporaryPanel,\r\n isFadingIn && DRAWER_STYLES.temporaryPanelVisible,\r\n )}\r\n role={role}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n data-scroll-lock-ignore={true}\r\n >\r\n {children}\r\n </nav>\r\n </DrawerContext.Provider>\r\n </>,\r\n document.body,\r\n )\r\n}\r\n\r\nDrawerTemporaryPanel.displayName = 'DrawerTemporaryPanel'\r\n\r\n// ─── Main Drawer ─────────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Collapsible side navigation drawer with controlled expanded/collapsed state.\r\n *\r\n * **Variants**\r\n * - `'permanent'` (default on desktop): inline drawer that pushes page content.\r\n * Toggles between `expanded` and `collapsed` states with animated width.\r\n * - `'temporary'` (default on mobile): portal overlay with a backdrop that slides\r\n * in from the left. `isExpanded` controls open/closed; `onClose` is called on\r\n * backdrop click or Escape.\r\n * - Omit `variant` to auto-detect based on viewport width.\r\n *\r\n * @example Permanent\r\n * <Drawer isExpanded={open} onExpandedChange={setOpen} height=\"100dvh\">\r\n * <Drawer.Header>…</Drawer.Header>\r\n * <Drawer.Body>\r\n * <Drawer.Item startIcon={HomeIcon} label=\"Home\" selected />\r\n * </Drawer.Body>\r\n * </Drawer>\r\n *\r\n * @example Temporary\r\n * <Drawer variant=\"temporary\" isExpanded={open} onClose={() => setOpen(false)}>\r\n * …\r\n * </Drawer>\r\n */\r\nconst DrawerBase: FC<DrawerProps> = ({\r\n height = '100dvh',\r\n isExpanded,\r\n onExpandedChange,\r\n onClose,\r\n variant,\r\n children,\r\n role = 'navigation',\r\n ariaLabel = 'Navigation',\r\n ariaLabelledBy,\r\n ariaDescribedBy,\r\n}) => {\r\n const resolvedVariant = useDrawerVariant(variant)\r\n const handleClose = onClose ?? (() => onExpandedChange?.(false))\r\n\r\n if (resolvedVariant === 'temporary') {\r\n return (\r\n <DrawerTemporaryPanel\r\n isExpanded={isExpanded}\r\n onClose={handleClose}\r\n height={height}\r\n role={role}\r\n ariaLabel={ariaLabel}\r\n ariaLabelledBy={ariaLabelledBy}\r\n ariaDescribedBy={ariaDescribedBy}\r\n >\r\n {children}\r\n </DrawerTemporaryPanel>\r\n )\r\n }\r\n\r\n return (\r\n <DrawerContext.Provider value={{ isExpanded }}>\r\n <nav\r\n className={DRAWER_STYLES.root({ isExpanded })}\r\n style={{ height }}\r\n role={role}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n >\r\n {children}\r\n </nav>\r\n </DrawerContext.Provider>\r\n )\r\n}\r\n\r\nDrawerBase.displayName = 'Drawer'\r\n\r\nconst Drawer = DrawerBase as DrawerComponent\r\nDrawer.Header = DrawerHeader\r\nDrawer.Body = DrawerBody\r\nDrawer.Footer = DrawerFooter\r\nDrawer.Item = DrawerItem\r\n\r\nexport default Drawer\r\n","import { createStyles } from '@aurora-ds/theme'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nimport type { PaginationShape, PaginationSize } from '@components/navigation/pagination/pagination.types'\r\nimport type {\r\n PaginationCellStyleParams,\r\n PaginationEllipsisStyleParams,\r\n} from '@components/navigation/pagination/Pagination.props'\r\n\r\nexport const PAGINATION_STYLES = createStyles((theme) => {\r\n /** Square box dimensions + font size per size token. */\r\n const dimensions: Record<PaginationSize, { box: string; font: string }> = {\r\n sm: { box: '2rem', font: theme.fontSize.sm },\r\n md: { box: '2.5rem', font: theme.fontSize.sm },\r\n lg: { box: '3rem', font: theme.fontSize.md },\r\n }\r\n\r\n const radiusFor = (shape: PaginationShape): string =>\r\n shape === 'circular' ? theme.radius.full : theme.radius.md\r\n\r\n /** Shared box geometry for every interactive cell and the ellipsis. */\r\n const baseCell = (size: PaginationSize, shape: PaginationShape) => ({\r\n boxSizing: 'border-box' as const,\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n minWidth: dimensions[size].box,\r\n height: dimensions[size].box,\r\n padding: `0 ${theme.spacing.xs}`,\r\n margin: 0,\r\n border: '1px solid transparent',\r\n borderRadius: radiusFor(shape),\r\n fontFamily: 'inherit',\r\n fontSize: dimensions[size].font,\r\n fontWeight: theme.fontWeight.medium,\r\n lineHeight: theme.lineHeight.none,\r\n })\r\n\r\n const interactiveBase = (size: PaginationSize, shape: PaginationShape) => ({\r\n ...baseCell(size, shape),\r\n cursor: 'pointer',\r\n outline: 'none',\r\n transition: `background-color ${theme.transition.normal}, border-color ${theme.transition.normal}, color ${theme.transition.normal}, box-shadow ${theme.transition.normal}`,\r\n ':focus-visible': getFocusRingStyles(theme),\r\n ':disabled': { cursor: 'not-allowed', opacity: theme.opacity.high },\r\n })\r\n\r\n return {\r\n nav: {\r\n display: 'block',\r\n },\r\n list: {\r\n display: 'flex',\r\n flexWrap: 'wrap' as const,\r\n alignItems: 'center',\r\n gap: theme.spacing.xs,\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: 0,\r\n },\r\n item: {\r\n display: 'inline-flex',\r\n },\r\n ellipsis: ({ size }: PaginationEllipsisStyleParams) => ({\r\n ...baseCell(size, 'rounded'),\r\n color: theme.colors.textTertiary,\r\n userSelect: 'none' as const,\r\n }),\r\n control: ({ size, shape }: PaginationCellStyleParams) => ({\r\n ...interactiveBase(size, shape),\r\n backgroundColor: 'transparent',\r\n color: theme.colors.textSecondary,\r\n ':hover:not(:disabled)': {\r\n backgroundColor: theme.colors.secondaryHover,\r\n color: theme.colors.textPrimary,\r\n },\r\n ':active:not(:disabled)': {\r\n backgroundColor: theme.colors.secondaryActive,\r\n },\r\n }),\r\n page: ({ size, shape, selected }: PaginationCellStyleParams) => ({\r\n ...interactiveBase(size, shape),\r\n ...(selected\r\n ? {\r\n backgroundColor: theme.colors.primaryMain,\r\n borderColor: theme.colors.primaryMain,\r\n color: theme.colors.primaryOn,\r\n boxShadow: theme.shadows.xs,\r\n ':hover:not(:disabled)': {\r\n backgroundColor: theme.colors.primaryHover,\r\n borderColor: theme.colors.primaryHover,\r\n },\r\n ':active:not(:disabled)': {\r\n backgroundColor: theme.colors.primaryActive,\r\n borderColor: theme.colors.primaryActive,\r\n },\r\n }\r\n : {\r\n backgroundColor: 'transparent',\r\n color: theme.colors.textSecondary,\r\n ':hover:not(:disabled)': {\r\n backgroundColor: theme.colors.secondaryHover,\r\n color: theme.colors.textPrimary,\r\n },\r\n ':active:not(:disabled)': {\r\n backgroundColor: theme.colors.secondaryActive,\r\n },\r\n }),\r\n }),\r\n }\r\n}, { id: 'pagination' })\r\n\r\n// ─── Style warm-up ─────────────────────────────────────────────────────────────\r\n// Pre-register every (size × shape) combination so the CSS classes exist up-front.\r\n\r\nconst SIZES: PaginationSize[] = ['sm', 'md', 'lg']\r\nconst SHAPES: PaginationShape[] = ['rounded', 'circular']\r\n\r\nSIZES.forEach((size) => {\r\n PAGINATION_STYLES.ellipsis({ size })\r\n SHAPES.forEach((shape) => {\r\n PAGINATION_STYLES.control({ size, shape })\r\n PAGINATION_STYLES.page({ size, shape, selected: false })\r\n PAGINATION_STYLES.page({ size, shape, selected: true })\r\n })\r\n})\r\n","import type { PaginationItem } from '@components/navigation/pagination/pagination.types'\r\n\r\n/** Builds an inclusive list of integers between `start` and `end`. */\r\nconst range = (start: number, end: number): number[] =>\r\n Array.from({ length: Math.max(end - start + 1, 0) }, (_, index) => start + index)\r\n\r\ntype GetPaginationRangeParams = {\r\n /** Total number of available pages (1-based). */\r\n totalPages: number\r\n /** Currently active page (1-based). */\r\n currentPage: number\r\n /** Pages displayed on each side of the current page. @default 1 */\r\n siblingCount?: number\r\n /** Pages always displayed at the very start and very end. @default 1 */\r\n boundaryCount?: number\r\n}\r\n\r\n/**\r\n * Computes the list of pagination items to render, inserting ellipses where\r\n * pages are collapsed. Mirrors the well-known \"boundary + sibling\" algorithm.\r\n *\r\n * @example getPaginationRange({ totalPages: 10, currentPage: 5 })\r\n * // → [1, 'start-ellipsis', 4, 5, 6, 'end-ellipsis', 10]\r\n */\r\nexport const getPaginationRange = ({\r\n totalPages,\r\n currentPage,\r\n siblingCount = 1,\r\n boundaryCount = 1,\r\n}: GetPaginationRangeParams): PaginationItem[] => {\r\n if (totalPages <= 0) {return []}\r\n\r\n // Pages pinned at the beginning and at the end of the list.\r\n const startPages = range(1, Math.min(boundaryCount, totalPages))\r\n const endPages = range(\r\n Math.max(totalPages - boundaryCount + 1, boundaryCount + 1),\r\n totalPages,\r\n )\r\n\r\n // Window of pages surrounding the current page, clamped within bounds.\r\n const siblingsStart = Math.max(\r\n Math.min(\r\n currentPage - siblingCount,\r\n totalPages - boundaryCount - siblingCount * 2 - 1,\r\n ),\r\n boundaryCount + 2,\r\n )\r\n const siblingsEnd = Math.min(\r\n Math.max(currentPage + siblingCount, boundaryCount + siblingCount * 2 + 2),\r\n endPages.length > 0 ? endPages[0] - 2 : totalPages - 1,\r\n )\r\n\r\n return [\r\n ...startPages,\r\n\r\n // Insert a start ellipsis, or the single page that was hidden by it.\r\n ...(siblingsStart > boundaryCount + 2\r\n ? (['start-ellipsis'] as const)\r\n : boundaryCount + 1 < totalPages - boundaryCount\r\n ? [boundaryCount + 1]\r\n : []),\r\n\r\n ...range(siblingsStart, siblingsEnd),\r\n\r\n // Insert an end ellipsis, or the single page that was hidden by it.\r\n ...(siblingsEnd < totalPages - boundaryCount - 1\r\n ? (['end-ellipsis'] as const)\r\n : totalPages - boundaryCount > boundaryCount\r\n ? [totalPages - boundaryCount]\r\n : []),\r\n\r\n ...endPages,\r\n ]\r\n}\r\n","import { useMemo, type FC } from 'react'\r\n\r\nimport {\r\n ChevronLeftIcon,\r\n ChevronRightIcon,\r\n ChevronsLeftIcon,\r\n ChevronsRightIcon,\r\n} from '@resources/Icons'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { PAGINATION_STYLES } from '@components/navigation/pagination/Pagination.styles'\r\nimport { getPaginationRange } from '@components/navigation/pagination/utils/getPaginationRange.utils'\r\n\r\nimport type { Theme } from '@theme/theme.types'\r\nimport type { PaginationProps } from '@components/navigation/pagination/Pagination.props'\r\nimport type { PaginationSize } from '@components/navigation/pagination/pagination.types'\r\n\r\n/** Maps the pagination size to an Icon size token. */\r\nconst ICON_SIZE: Record<PaginationSize, keyof Theme['fontSize']> = {\r\n sm: 'sm',\r\n md: 'sm',\r\n lg: 'md',\r\n}\r\n\r\nconst defaultPageAriaLabel = (page: number, selected: boolean): string =>\r\n selected ? `page ${page}` : `Go to page ${page}`\r\n\r\n/**\r\n * Accessible, controlled pagination control.\r\n *\r\n * Renders a `<nav>` landmark wrapping a list of page buttons, with optional\r\n * previous/next and first/last controls. Collapses long ranges using ellipses\r\n * (configurable via `siblingCount` and `boundaryCount`). The active page exposes\r\n * `aria-current=\"page\"`.\r\n *\r\n * ```tsx\r\n * const [page, setPage] = useState(1)\r\n *\r\n * <Pagination\r\n * currentPage={page}\r\n * totalPages={10}\r\n * onPageChange={setPage}\r\n * showFirstLast\r\n * />\r\n * ```\r\n */\r\nconst Pagination: FC<PaginationProps> = ({\r\n currentPage,\r\n totalPages,\r\n onPageChange,\r\n siblingCount = 1,\r\n boundaryCount = 1,\r\n size = 'md',\r\n shape = 'rounded',\r\n showPrevNext = true,\r\n showFirstLast = false,\r\n disabled = false,\r\n ariaLabel = 'Pagination',\r\n previousAriaLabel = 'Go to previous page',\r\n nextAriaLabel = 'Go to next page',\r\n firstAriaLabel = 'Go to first page',\r\n lastAriaLabel = 'Go to last page',\r\n getPageAriaLabel = defaultPageAriaLabel,\r\n}) => {\r\n const items = useMemo(\r\n () => getPaginationRange({ totalPages, currentPage, siblingCount, boundaryCount }),\r\n [totalPages, currentPage, siblingCount, boundaryCount],\r\n )\r\n\r\n if (totalPages <= 0) {return null}\r\n\r\n const iconSize = ICON_SIZE[size]\r\n const isFirstPage = currentPage <= 1\r\n const isLastPage = currentPage >= totalPages\r\n\r\n const goTo = (page: number): void => {\r\n const next = Math.min(Math.max(page, 1), totalPages)\r\n if (next !== currentPage) {onPageChange(next)}\r\n }\r\n\r\n return (\r\n <nav\r\n aria-label={ariaLabel}\r\n className={PAGINATION_STYLES.nav}\r\n >\r\n <ul className={PAGINATION_STYLES.list}>\r\n {showFirstLast && (\r\n <li className={PAGINATION_STYLES.item}>\r\n <button\r\n type={'button'}\r\n className={PAGINATION_STYLES.control({ size, shape })}\r\n aria-label={firstAriaLabel}\r\n disabled={disabled || isFirstPage}\r\n onClick={() => goTo(1)}\r\n >\r\n <Icon\r\n icon={ChevronsLeftIcon}\r\n size={iconSize}\r\n />\r\n </button>\r\n </li>\r\n )}\r\n\r\n {showPrevNext && (\r\n <li className={PAGINATION_STYLES.item}>\r\n <button\r\n type={'button'}\r\n className={PAGINATION_STYLES.control({ size, shape })}\r\n aria-label={previousAriaLabel}\r\n disabled={disabled || isFirstPage}\r\n onClick={() => goTo(currentPage - 1)}\r\n >\r\n <Icon\r\n icon={ChevronLeftIcon}\r\n size={iconSize}\r\n />\r\n </button>\r\n </li>\r\n )}\r\n\r\n {items.map((item) => {\r\n if (item === 'start-ellipsis' || item === 'end-ellipsis') {\r\n return (\r\n <li\r\n key={item}\r\n className={PAGINATION_STYLES.item}\r\n >\r\n <span\r\n aria-hidden={true}\r\n className={PAGINATION_STYLES.ellipsis({ size })}\r\n >\r\n {'…'}\r\n </span>\r\n </li>\r\n )\r\n }\r\n\r\n const selected = item === currentPage\r\n\r\n return (\r\n <li\r\n key={item}\r\n className={PAGINATION_STYLES.item}\r\n >\r\n <button\r\n type={'button'}\r\n className={PAGINATION_STYLES.page({ size, shape, selected })}\r\n aria-label={getPageAriaLabel(item, selected)}\r\n aria-current={selected ? 'page' : undefined}\r\n disabled={disabled}\r\n onClick={() => goTo(item)}\r\n >\r\n {item}\r\n </button>\r\n </li>\r\n )\r\n })}\r\n\r\n {showPrevNext && (\r\n <li className={PAGINATION_STYLES.item}>\r\n <button\r\n type={'button'}\r\n className={PAGINATION_STYLES.control({ size, shape })}\r\n aria-label={nextAriaLabel}\r\n disabled={disabled || isLastPage}\r\n onClick={() => goTo(currentPage + 1)}\r\n >\r\n <Icon\r\n icon={ChevronRightIcon}\r\n size={iconSize}\r\n />\r\n </button>\r\n </li>\r\n )}\r\n\r\n {showFirstLast && (\r\n <li className={PAGINATION_STYLES.item}>\r\n <button\r\n type={'button'}\r\n className={PAGINATION_STYLES.control({ size, shape })}\r\n aria-label={lastAriaLabel}\r\n disabled={disabled || isLastPage}\r\n onClick={() => goTo(totalPages)}\r\n >\r\n <Icon\r\n icon={ChevronsRightIcon}\r\n size={iconSize}\r\n />\r\n </button>\r\n </li>\r\n )}\r\n </ul>\r\n </nav>\r\n )\r\n}\r\n\r\nPagination.displayName = 'Pagination'\r\n\r\nexport default Pagination\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const TABS_LIST_STYLES = createStyles(() => ({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'row' as const,\r\n alignItems: 'center',\r\n overflowX: 'auto' as const,\r\n scrollbarWidth: 'none' as const,\r\n width: 'fit-content',\r\n '::-webkit-scrollbar': { display: 'none' as const },\r\n },\r\n}))\r\n","import { createContext } from 'react'\r\n\r\nexport type TabsContextValue = {\r\n /** Currently selected tab value. */\r\n value: string\r\n /** Selects a new tab. */\r\n setValue: (value: string) => void\r\n /** Stable id used to derive `id`/`aria-controls`/`aria-labelledby`. */\r\n baseId: string\r\n /** Registers a tab value so List can compute keyboard navigation. */\r\n registerTab: (value: string) => () => void\r\n /** Returns the ordered list of registered tab values. */\r\n getTabValues: () => string[]\r\n}\r\n\r\nexport const TabsContext = createContext<TabsContextValue | null>(null)\r\n","import { useContext } from 'react'\r\n\r\nimport { TabsContext, type TabsContextValue } from '@components/navigation/tabs/Tabs.context'\r\n\r\n/**\r\n * Internal hook — consumes the Tabs context and throws if used outside a `<Tabs>` provider.\r\n * @internal\r\n */\r\nexport const useTabsContext = (): TabsContextValue => {\r\n const ctx = useContext(TabsContext)\r\n if (!ctx) {\r\n throw new Error('This component must be used inside a <Tabs> provider.')\r\n }\r\n return ctx\r\n}\r\n","import { type FC, type KeyboardEvent } from 'react'\r\n\r\nimport { TABS_LIST_STYLES } from '@components/navigation/tabs/tabs-list/TabsList.styles'\r\nimport { useTabsContext } from '@components/navigation/tabs/useTabsContext'\r\n\r\nimport type { TabsListProps } from '@components/navigation/tabs/tabs-list/TabsList.props'\r\n\r\nconst TabsList: FC<TabsListProps> = ({ children, ariaLabel, ariaLabelledBy }) => {\r\n const { value, setValue, baseId, getTabValues } = useTabsContext()\r\n\r\n /**\r\n * Returns true if the tab at the given index is aria-disabled.\r\n * We check the DOM attribute because disabled state lives in TabItem,\r\n * not in the shared context, and we want to avoid adding it to the context.\r\n */\r\n const isTabDisabled = (tabValue: string): boolean => {\r\n const el = document.getElementById(`${baseId}-tab-${tabValue}`)\r\n return el?.getAttribute('aria-disabled') === 'true'\r\n }\r\n\r\n /**\r\n * Moves focus to the nearest non-disabled tab starting from `startIndex`\r\n * and stepping in the given `direction` (+1 = right, -1 = left).\r\n * Stops after a full loop if all tabs are disabled.\r\n */\r\n const focusNextEnabled = (startIndex: number, direction: 1 | -1): void => {\r\n const values = getTabValues()\r\n for (let i = 1; i <= values.length; i++) {\r\n const index = (startIndex + direction * i + values.length) % values.length\r\n const nextValue = values[index]\r\n if (!isTabDisabled(nextValue)) {\r\n document.getElementById(`${baseId}-tab-${nextValue}`)?.focus()\r\n setValue(nextValue)\r\n return\r\n }\r\n }\r\n }\r\n\r\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>): void => {\r\n const values = getTabValues()\r\n const currentIndex = values.indexOf(value)\r\n if (currentIndex === -1) {\r\n return\r\n }\r\n\r\n switch (event.key) {\r\n case 'ArrowRight':\r\n event.preventDefault()\r\n focusNextEnabled(currentIndex, 1)\r\n break\r\n case 'ArrowLeft':\r\n event.preventDefault()\r\n focusNextEnabled(currentIndex, -1)\r\n break\r\n case 'Home': {\r\n event.preventDefault()\r\n // Focus the first non-disabled tab\r\n const firstIdx = values.findIndex((v) => !isTabDisabled(v))\r\n if (firstIdx !== -1) {\r\n document.getElementById(`${baseId}-tab-${values[firstIdx]}`)?.focus()\r\n setValue(values[firstIdx])\r\n }\r\n break\r\n }\r\n case 'End': {\r\n event.preventDefault()\r\n // Focus the last non-disabled tab\r\n const lastIdx = [...values].reverse().findIndex((v) => !isTabDisabled(v))\r\n if (lastIdx !== -1) {\r\n const realIndex = values.length - 1 - lastIdx\r\n document.getElementById(`${baseId}-tab-${values[realIndex]}`)?.focus()\r\n setValue(values[realIndex])\r\n }\r\n break\r\n }\r\n default:\r\n break\r\n }\r\n }\r\n\r\n return (\r\n // WAI-ARIA: the tablist div is not focusable — only its tab children are,\r\n // via roving tabIndex. The keydown handler bubbles up from the focused tab.\r\n // eslint-disable-next-line jsx-a11y/interactive-supports-focus\r\n <div\r\n role={'tablist'}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n className={TABS_LIST_STYLES.root}\r\n onKeyDown={handleKeyDown}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nTabsList.displayName = 'Tabs.List'\r\n\r\nexport default TabsList\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const TABS_PANEL_STYLES = createStyles(() => ({\r\n root: {\r\n width: '100%',\r\n },\r\n}))\r\n","import { type FC } from 'react'\r\n\r\nimport { TABS_PANEL_STYLES } from '@components/navigation/tabs/tabs-panel/TabsPanel.styles'\r\nimport { useTabsContext } from '@components/navigation/tabs/useTabsContext'\r\n\r\nimport type { TabsPanelProps } from '@components/navigation/tabs/tabs-panel/TabsPanel.props'\r\n\r\nconst TabsPanel: FC<TabsPanelProps> = ({ value, children, keepMounted = false }) => {\r\n const { value: activeValue, baseId } = useTabsContext()\r\n const isActive = activeValue === value\r\n\r\n if (!isActive && !keepMounted) {\r\n return null\r\n }\r\n\r\n return (\r\n <div\r\n role={'tabpanel'}\r\n id={`${baseId}-panel-${value}`}\r\n aria-labelledby={`${baseId}-tab-${value}`}\r\n // WAI-ARIA APG: tabIndex={0} allows keyboard scrolling when the panel has no focusable child.\r\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\r\n tabIndex={0}\r\n hidden={!isActive}\r\n className={TABS_PANEL_STYLES.root}\r\n >\r\n {children}\r\n </div>\r\n )\r\n}\r\n\r\nTabsPanel.displayName = 'Tabs.Panel'\r\n\r\nexport default TabsPanel\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\ntype TabItemStyleParams = {\r\n isActive: boolean\r\n disabled: boolean\r\n}\r\n\r\nexport const TAB_ITEM_STYLES = createStyles((theme) => ({\r\n root: ({ isActive, disabled }: TabItemStyleParams) => ({\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center' as const,\r\n boxSizing: 'border-box' as const,\r\n paddingTop: theme.spacing.xs,\r\n paddingBottom: theme.spacing.xs,\r\n paddingLeft: theme.spacing.md,\r\n paddingRight: theme.spacing.md,\r\n border: 'none',\r\n borderBottom: `2px solid ${isActive ? theme.colors.primaryMain : 'transparent'}`,\r\n background: 'transparent',\r\n cursor: disabled ? ('not-allowed' as const) : ('pointer' as const),\r\n fontFamily: 'inherit',\r\n whiteSpace: 'nowrap' as const,\r\n transition: `border-color ${theme.transition.fast}`,\r\n ...(disabled ? {} : {\r\n ':hover': {\r\n borderBottomColor: isActive ? theme.colors.primaryMain : theme.colors.textTertiary,\r\n },\r\n }),\r\n // Inset + elevate: TabsList is a horizontally scrollable, glued row —\r\n // keep the ring inside the bounds and above neighbours so it is never clipped.\r\n ':focus-visible': getFocusRingStyles(theme, { inset: true, elevate: true }),\r\n }),\r\n}))\r\n","import { useEffect } from 'react'\r\n\r\nimport { useTabsContext } from '@components/navigation/tabs/useTabsContext'\r\n\r\ntype UseTabItemParams = {\r\n value: string\r\n disabled: boolean\r\n}\r\n\r\ntype UseTabItemReturn = {\r\n /** Whether this tab is the currently selected one. */\r\n isActive: boolean\r\n /** All ARIA + interaction props to spread onto the `<button>` element. */\r\n buttonProps: {\r\n id: string\r\n 'aria-selected': boolean\r\n 'aria-controls': string\r\n 'aria-disabled': true | undefined\r\n tabIndex: 0 | -1\r\n onClick: () => void\r\n }\r\n}\r\n\r\n/**\r\n * Handles tab registration, active state derivation and interaction props\r\n * for a single `Tabs.Tab` (TabItem) button.\r\n *\r\n * Registers the tab value into the shared ordered registry on mount so that\r\n * `TabsList` can perform correct ArrowLeft/Right/Home/End keyboard navigation.\r\n */\r\nexport const useTabItem = ({ value, disabled }: UseTabItemParams): UseTabItemReturn => {\r\n const { value: activeValue, setValue, baseId, registerTab } = useTabsContext()\r\n\r\n // Maintains the ordered tab registry used by TabsList for keyboard navigation.\r\n useEffect(() => registerTab(value), [registerTab, value])\r\n\r\n const isActive = activeValue === value\r\n\r\n return {\r\n isActive,\r\n buttonProps: {\r\n id: `${baseId}-tab-${value}`,\r\n 'aria-selected': isActive,\r\n 'aria-controls': `${baseId}-panel-${value}`,\r\n 'aria-disabled': disabled || undefined,\r\n tabIndex: isActive ? 0 : -1,\r\n onClick: () => {\r\n if (!disabled) {\r\n setValue(value)\r\n }\r\n },\r\n },\r\n }\r\n}\r\n","import { type FC } from 'react'\r\n\r\nimport { TAB_ITEM_STYLES } from '@components/navigation/tabs/tab-item/TabItem.styles'\r\nimport { useTabItem } from '@components/navigation/tabs/tab-item/useTabItem'\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { TabItemProps } from '@components/navigation/tabs/tab-item/TabItem.props'\r\n\r\nconst TabItem: FC<TabItemProps> = ({ value, label, disabled = false }) => {\r\n const { isActive, buttonProps } = useTabItem({ value, disabled })\r\n\r\n return (\r\n <button\r\n type={'button'}\r\n role={'tab'}\r\n className={TAB_ITEM_STYLES.root({ isActive, disabled })}\r\n {...buttonProps}\r\n >\r\n <Text\r\n variant={'span'}\r\n fontSize={'sm'}\r\n fontWeight={isActive ? 'semibold' : 'medium'}\r\n color={disabled ? 'textDisabled' : isActive ? 'textPrimary' : 'textSecondary'}\r\n >\r\n {label}\r\n </Text>\r\n </button>\r\n )\r\n}\r\n\r\nTabItem.displayName = 'Tabs.Tab'\r\n\r\nexport default TabItem\r\n","import { useCallback, useId, useMemo, useRef, useState, type FC } from 'react'\r\n\r\nimport TabsList from '@components/navigation/tabs/tabs-list/TabsList'\r\nimport TabsPanel from '@components/navigation/tabs/tabs-panel/TabsPanel'\r\nimport TabItem from '@components/navigation/tabs/tab-item/TabItem'\r\nimport { TabsContext, type TabsContextValue } from '@components/navigation/tabs/Tabs.context'\r\n\r\nimport type { TabsProps } from '@components/navigation/tabs/Tabs.props'\r\nimport type { TabsComponent } from '@components/navigation/tabs/Tabs.types'\r\n\r\n/**\r\n * WAI-ARIA compliant tab interface using a compound component API.\r\n *\r\n * ```tsx\r\n * <Tabs defaultValue={'active'} onChange={handleChange}>\r\n * <Tabs.List ariaLabel={'Subscriptions'}>\r\n * <Tabs.Tab value={'active'} label={'Active'} />\r\n * <Tabs.Tab value={'cancelled'} label={'Cancelled'} />\r\n * </Tabs.List>\r\n * <Tabs.Panel value={'active'}>...</Tabs.Panel>\r\n * <Tabs.Panel value={'cancelled'}>...</Tabs.Panel>\r\n * </Tabs>\r\n * ```\r\n *\r\n * Supports controlled (`value` + `onChange`) and uncontrolled (`defaultValue`) modes.\r\n * Keyboard navigation: `ArrowLeft/Right`, `Home`, `End`.\r\n * Only the active panel is mounted — use `keepMounted` on `Tabs.Panel` to preserve state across switches.\r\n */\r\nconst TabsBase: FC<TabsProps> = ({\r\n children,\r\n value: controlledValue,\r\n defaultValue,\r\n onChange,\r\n id,\r\n}) => {\r\n const reactId = useId()\r\n const baseId = id ?? `tabs-${reactId}`\r\n\r\n const [internalValue, setInternalValue] = useState<string>(defaultValue ?? '')\r\n const isControlled = controlledValue !== undefined\r\n const value = isControlled ? controlledValue : internalValue\r\n\r\n const tabsRef = useRef<string[]>([])\r\n\r\n const registerTab = useCallback((tabValue: string) => {\r\n if (!tabsRef.current.includes(tabValue)) {\r\n tabsRef.current.push(tabValue)\r\n }\r\n return () => {\r\n tabsRef.current = tabsRef.current.filter((v) => v !== tabValue)\r\n }\r\n }, [])\r\n\r\n const getTabValues = useCallback(() => tabsRef.current, [])\r\n\r\n const setValue = useCallback(\r\n (next: string) => {\r\n if (!isControlled) {\r\n setInternalValue(next)\r\n }\r\n onChange?.(next)\r\n },\r\n [isControlled, onChange],\r\n )\r\n\r\n const contextValue = useMemo<TabsContextValue>(\r\n () => ({ value, setValue, baseId, registerTab, getTabValues }),\r\n [value, setValue, baseId, registerTab, getTabValues],\r\n )\r\n\r\n return (\r\n <TabsContext.Provider value={contextValue}>\r\n {children}\r\n </TabsContext.Provider>\r\n )\r\n}\r\n\r\nTabsBase.displayName = 'Tabs'\r\n\r\nconst Tabs = TabsBase as TabsComponent\r\nTabs.List = TabsList\r\nTabs.Tab = TabItem\r\nTabs.Panel = TabsPanel\r\n\r\nexport default Tabs\r\n","import { useId, useMemo } from 'react'\r\n\r\nimport { useControllableState } from '@hooks/common/use-controllable-state/useControllableState'\r\n\r\nimport type { AccordionContextValue } from '@components/overlay/accordion/Accordion.context'\r\n\r\ntype UseAccordionOptions = {\r\n open?: boolean\r\n defaultOpen?: boolean\r\n onOpenChange?: (open: boolean) => void\r\n disabled?: boolean\r\n}\r\n\r\ntype UseAccordionReturn = {\r\n contextValue: AccordionContextValue\r\n}\r\n\r\n/**\r\n * Encapsulates all stateful logic for the Accordion component:\r\n * - Stable trigger/panel IDs (via `useId`)\r\n * - Controlled/uncontrolled open state (via `useControllableState`)\r\n * - Toggle handler\r\n * - Memoised context value\r\n */\r\nexport const useAccordion = ({\r\n open,\r\n defaultOpen = false,\r\n onOpenChange,\r\n disabled = false,\r\n}: UseAccordionOptions): UseAccordionReturn => {\r\n const uid = useId()\r\n const triggerId = `accordion-trigger-${uid}`\r\n const panelId = `accordion-panel-${uid}`\r\n\r\n const [isOpen, setIsOpen] = useControllableState<boolean>({\r\n value: open,\r\n defaultValue: defaultOpen,\r\n onChange: onOpenChange,\r\n })\r\n\r\n const toggle = () => {\r\n if (!disabled) {\r\n setIsOpen(!isOpen)\r\n }\r\n }\r\n\r\n const contextValue = useMemo(\r\n () => ({ isOpen, toggle, triggerId, panelId, disabled }),\r\n [isOpen, disabled, triggerId, panelId],\r\n )\r\n\r\n return { contextValue }\r\n}\r\n","import { createContext, useContext } from 'react'\r\n\r\nexport type AccordionContextValue = {\r\n /** Whether the panel is currently expanded. */\r\n isOpen: boolean\r\n /** Toggles the panel open/closed. */\r\n toggle: () => void\r\n /** Stable ID for the trigger `<button>` — used by `aria-labelledby` on the panel. */\r\n triggerId: string\r\n /** Stable ID for the body panel — used by `aria-controls` on the trigger. */\r\n panelId: string\r\n /** Whether the accordion is disabled. */\r\n disabled: boolean\r\n}\r\n\r\nexport const AccordionContext = createContext<AccordionContextValue>({\r\n isOpen: false,\r\n toggle: () => undefined,\r\n triggerId: '',\r\n panelId: '',\r\n disabled: false,\r\n})\r\n\r\nexport const useAccordionContext = () => useContext(AccordionContext)\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const ACCORDION_STYLES = createStyles((theme) => ({\r\n\r\n /** Outer container — handles the border / ghost visual variant. */\r\n root: {\r\n boxSizing: 'border-box' as const,\r\n borderRadius: theme.radius.lg,\r\n overflow: 'hidden' as const,\r\n width: '100%',\r\n },\r\n\r\n rootOutlined: {\r\n border: `1px solid ${theme.colors.borderMain}`,\r\n backgroundColor: theme.colors.surfacePaper,\r\n },\r\n\r\n rootGhost: {\r\n backgroundColor: 'transparent',\r\n borderRadius: 0,\r\n },\r\n\r\n}), { id: 'accordion' })\r\n","import { createStyles } from '@aurora-ds/theme'\r\nimport { DEFAULT_TRANSITION_DURATION_MS } from '@constants/app.constants'\r\nimport { getFocusRingStyles } from '@theme/components/focusRing'\r\n\r\nconst TRANSITION = `${DEFAULT_TRANSITION_DURATION_MS}ms ease`\r\n\r\nexport const ACCORDION_TITLE_STYLES = createStyles((theme) => ({\r\n\r\n /** Semantic heading wrapping the trigger button. */\r\n heading: {\r\n margin: 0,\r\n },\r\n\r\n /** Trigger button — full-width, flex row, resets native button styles. */\r\n trigger: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n gap: theme.spacing.sm,\r\n width: '100%',\r\n padding: `${theme.spacing.md} ${theme.spacing.lg}`,\r\n background: 'none',\r\n border: 'none',\r\n cursor: 'pointer',\r\n textAlign: 'left' as const,\r\n color: theme.colors.textPrimary,\r\n borderRadius: 'inherit',\r\n outline: 'none',\r\n '&:focus-visible': getFocusRingStyles(theme, { inset: true }),\r\n '&:hover:not(:disabled)': {\r\n backgroundColor: theme.colors.surfaceElevated,\r\n },\r\n '&:disabled': {\r\n cursor: 'not-allowed',\r\n opacity: 0.5,\r\n },\r\n },\r\n\r\n /** Chevron icon — rotates when the panel is open. */\r\n chevron: {\r\n flexShrink: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: theme.colors.textSecondary,\r\n transition: `transform ${TRANSITION}`,\r\n width: '1.25rem',\r\n height: '1.25rem',\r\n },\r\n\r\n chevronOpen: {\r\n transform: 'rotate(180deg)',\r\n },\r\n\r\n}), { id: 'accordion-title' })\r\n","import type { FC } from 'react'\r\n\r\nimport ChevronDownIcon from '@resources/assets/icons/ChevronDownIcon.svg?react'\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { ACCORDION_TITLE_STYLES } from '@components/overlay/accordion/accordion-title/AccordionTitle.styles'\r\nimport { useAccordionContext } from '@components/overlay/accordion/Accordion.context'\r\n\r\nimport type { AccordionTitleProps } from '@components/overlay/accordion/accordion-title/AccordionTitle.props'\r\n\r\n/**\r\n * Trigger button for the accordion. Toggles the body open or closed.\r\n * Accepts any ReactNode as children.\r\n * Must be used inside an `<Accordion>` component.\r\n *\r\n * @example\r\n * <Accordion.Title>Frequently asked question</Accordion.Title>\r\n */\r\nconst AccordionTitle: FC<AccordionTitleProps> = ({ children, headingLevel = 3 }) => {\r\n const { isOpen, toggle, triggerId, panelId, disabled } = useAccordionContext()\r\n\r\n const Heading = `h${headingLevel}` as 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\r\n const headingClassName = (ACCORDION_TITLE_STYLES as Record<string, string>).heading\r\n\r\n return (\r\n <Heading className={headingClassName}>\r\n <button\r\n id={triggerId}\r\n type={'button'}\r\n aria-expanded={isOpen}\r\n aria-controls={panelId}\r\n disabled={disabled}\r\n className={ACCORDION_TITLE_STYLES.trigger}\r\n onClick={toggle}\r\n >\r\n {children}\r\n\r\n <span\r\n aria-hidden={true}\r\n className={cx(\r\n ACCORDION_TITLE_STYLES.chevron,\r\n isOpen && ACCORDION_TITLE_STYLES.chevronOpen,\r\n )}\r\n >\r\n <ChevronDownIcon\r\n width={20}\r\n height={20}\r\n />\r\n </span>\r\n </button>\r\n </Heading>\r\n )\r\n}\r\n\r\nAccordionTitle.displayName = 'Accordion.Title'\r\n\r\nexport default AccordionTitle\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { DEFAULT_TRANSITION_DURATION_MS } from '@constants/app.constants'\r\n\r\nconst TRANSITION = `${DEFAULT_TRANSITION_DURATION_MS}ms ease`\r\n\r\nexport const ACCORDION_BODY_STYLES = createStyles((theme) => ({\r\n\r\n /**\r\n * Panel wrapper — uses the CSS grid trick to animate height from 0 → auto\r\n * without JavaScript-computed pixel values.\r\n */\r\n panelWrapper: {\r\n display: 'grid',\r\n gridTemplateRows: '0fr',\r\n transition: `grid-template-rows ${TRANSITION}`,\r\n // Safari < 16.4 fallback (grid-template-rows animation not supported)\r\n '@supports not (grid-template-rows: 0fr)': {\r\n display: 'none',\r\n },\r\n },\r\n\r\n panelWrapperOpen: {\r\n gridTemplateRows: '1fr',\r\n },\r\n\r\n /** Inner panel — `overflow: hidden` is required for the grid trick to work. */\r\n panelInner: {\r\n overflow: 'hidden' as const,\r\n },\r\n\r\n /** Actual content area with padding. */\r\n panelContent: {\r\n padding: `0 ${theme.spacing.lg} ${theme.spacing.md}`,\r\n color: theme.colors.textSecondary,\r\n },\r\n\r\n}), { id: 'accordion-body' })\r\n","import type { FC } from 'react'\r\n\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { ACCORDION_BODY_STYLES } from '@components/overlay/accordion/accordion-body/AccordionBody.styles'\r\nimport { useAccordionContext } from '@components/overlay/accordion/Accordion.context'\r\n\r\nimport type { AccordionBodyProps } from '@components/overlay/accordion/accordion-body/AccordionBody.props'\r\n\r\n/**\r\n * Animated content panel of the accordion.\r\n * Uses the CSS `grid-template-rows` trick for height animation without JS.\r\n * Must be used inside an `<Accordion>` component.\r\n *\r\n * @example\r\n * <Accordion.Body>\r\n * <p>This content is revealed when the accordion is open.</p>\r\n * </Accordion.Body>\r\n */\r\nconst AccordionBody: FC<AccordionBodyProps> = ({ children }) => {\r\n const { isOpen, triggerId, panelId } = useAccordionContext()\r\n\r\n return (\r\n <div\r\n id={panelId}\r\n role={'region'}\r\n aria-labelledby={triggerId}\r\n className={cx(\r\n ACCORDION_BODY_STYLES.panelWrapper,\r\n isOpen && ACCORDION_BODY_STYLES.panelWrapperOpen,\r\n )}\r\n >\r\n <div className={ACCORDION_BODY_STYLES.panelInner}>\r\n <div className={ACCORDION_BODY_STYLES.panelContent}>\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nAccordionBody.displayName = 'Accordion.Body'\r\n\r\nexport default AccordionBody\r\n","import { type FC } from 'react'\r\n\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport { useAccordion } from '@components/overlay/accordion/utils/useAccordion.utils'\r\nimport { AccordionContext } from '@components/overlay/accordion/Accordion.context'\r\nimport { ACCORDION_STYLES } from '@components/overlay/accordion/Accordion.styles'\r\nimport AccordionTitle from '@components/overlay/accordion/accordion-title/AccordionTitle'\r\nimport AccordionBody from '@components/overlay/accordion/accordion-body/AccordionBody'\r\n\r\nimport type { AccordionProps } from '@components/overlay/accordion/Accordion.props'\r\nimport type { AccordionComponent } from '@components/overlay/accordion/accordion.types'\r\n\r\n/**\r\n * Accessible accordion with animated body.\r\n *\r\n * Uses the CSS `grid-template-rows` trick (0fr → 1fr) to animate height\r\n * without JavaScript-computed pixel values.\r\n *\r\n * Supports both controlled (`open` + `onOpenChange`) and uncontrolled\r\n * (`defaultOpen`) modes via `useControllableState`.\r\n *\r\n * @example\r\n * // Uncontrolled\r\n * <Accordion>\r\n * <Accordion.Title>What is Aurora DS?</Accordion.Title>\r\n * <Accordion.Body>Aurora DS is a React component library.</Accordion.Body>\r\n * </Accordion>\r\n *\r\n * @example\r\n * // Controlled\r\n * const [open, setOpen] = useState(false)\r\n * <Accordion open={open} onOpenChange={setOpen}>\r\n * <Accordion.Title>Controlled accordion</Accordion.Title>\r\n * <Accordion.Body>Content shown when open is true.</Accordion.Body>\r\n * </Accordion>\r\n */\r\nconst AccordionBase: FC<AccordionProps> = ({\r\n open,\r\n defaultOpen = false,\r\n onOpenChange,\r\n children,\r\n variant = 'ghost',\r\n disabled = false,\r\n}) => {\r\n const { contextValue } = useAccordion({ open, defaultOpen, onOpenChange, disabled })\r\n\r\n return (\r\n <AccordionContext.Provider value={contextValue}>\r\n <div\r\n className={cx(\r\n ACCORDION_STYLES.root,\r\n variant === 'outlined' && ACCORDION_STYLES.rootOutlined,\r\n variant === 'ghost' && ACCORDION_STYLES.rootGhost,\r\n )}\r\n >\r\n {children}\r\n </div>\r\n </AccordionContext.Provider>\r\n )\r\n}\r\n\r\nAccordionBase.displayName = 'Accordion'\r\n\r\nconst Accordion = AccordionBase as AccordionComponent\r\nAccordion.Title = AccordionTitle\r\nAccordion.Body = AccordionBody\r\n\r\nexport default Accordion\r\n","import { createContext, useContext } from 'react'\r\n\r\nimport type { AlertVariant } from '@components/overlay/alert/alert.types'\r\nimport type { Theme } from '@theme/theme.types'\r\n\r\ntype AlertContextValue = {\r\n variant: AlertVariant\r\n accentColor: keyof Theme['colors']\r\n}\r\n\r\nexport const AlertContext = createContext<AlertContextValue>({\r\n variant: 'default',\r\n accentColor: 'defaultActive',\r\n})\r\n\r\nexport const useAlertContext = () => useContext(AlertContext)\r\n","import type { ComponentType, FC, SVGProps } from 'react'\r\n\r\nimport AlertSuccessIcon from '@resources/assets/icons/AlertSuccessIcon.svg?react'\r\nimport AlertErrorIcon from '@resources/assets/icons/AlertErrorIcon.svg?react'\r\nimport AlertWarningIcon from '@resources/assets/icons/AlertWarningIcon.svg?react'\r\nimport AlertInfoIcon from '@resources/assets/icons/AlertInfoIcon.svg?react'\r\nimport CloseIcon from '@resources/assets/icons/CloseIcon.svg?react'\r\n\r\nimport { Stack } from '@components/layout/stack'\r\nimport { Text } from '@components/foundation/text'\r\nimport { IconButton } from '@components/actions/icon-button'\r\nimport { useAlertContext } from '@components/overlay/alert/Alert.context'\r\n\r\nimport type { ButtonColor } from '@components/actions/button/button.types'\r\nimport type { AlertVariant } from '@components/overlay/alert/alert.types'\r\nimport type { AlertTitleProps } from '@components/overlay/alert/alert-title/AlertTitle.props'\r\n\r\nconst VARIANT_DISMISS_COLOR: Record<AlertVariant, ButtonColor> = {\r\n default: 'neutral',\r\n success: 'success',\r\n error: 'error',\r\n warning: 'warning',\r\n info: 'info',\r\n}\r\n\r\nconst VARIANT_ICONS: Partial<Record<AlertVariant, FC<SVGProps<SVGSVGElement>>>> = {\r\n success: AlertSuccessIcon,\r\n error: AlertErrorIcon,\r\n warning: AlertWarningIcon,\r\n info: AlertInfoIcon,\r\n}\r\n\r\n/** Returns true if value is a React component type (function/class), false if it is a rendered node. */\r\nconst isSvgComponent = (value: unknown): value is ComponentType<SVGProps<SVGSVGElement>> =>\r\n typeof value === 'function'\r\n\r\n/**\r\n * Alert title row: renders the variant icon alongside the title text.\r\n * Must be used inside an `<Alert>` component.\r\n */\r\nconst AlertTitle: FC<AlertTitleProps> = ({ children, icon, onDismiss }) => {\r\n const { variant, accentColor } = useAlertContext()\r\n\r\n // Resolve which icon to render:\r\n // - custom icon prop always takes precedence over the built-in variant icon\r\n // - for \"default\" variant there is no built-in icon; custom icon adds one\r\n const builtInIcon = VARIANT_ICONS[variant]\r\n // Must be capitalised for JSX to treat it as a component (not an HTML tag)\r\n const ResolvedIcon: ComponentType<SVGProps<SVGSVGElement>> | null =\r\n icon && isSvgComponent(icon) ? icon : (icon === undefined ? (builtInIcon ?? null) : null)\r\n const customNode = icon && !isSvgComponent(icon) ? icon : null\r\n\r\n const hasIcon = ResolvedIcon !== null || customNode !== null\r\n\r\n return (\r\n <Stack\r\n flexDirection={'row'}\r\n alignItems={'center'}\r\n gap={'sm'}\r\n justifyContent={onDismiss ? 'space-between' : undefined}\r\n >\r\n <Stack\r\n flexDirection={'row'}\r\n alignItems={'center'}\r\n gap={'sm'}\r\n >\r\n {hasIcon && (\r\n <Stack\r\n flexShrink={0}\r\n alignItems={'center'}\r\n color={accentColor}\r\n width={'1.25rem'}\r\n height={'1.25rem'}\r\n aria-hidden={true}\r\n >\r\n {ResolvedIcon ? (\r\n <ResolvedIcon\r\n width={20}\r\n height={20}\r\n />\r\n ) : (\r\n customNode\r\n )}\r\n </Stack>\r\n )}\r\n <Text\r\n fontWeight={'semibold'}\r\n fontSize={'sm'}\r\n color={accentColor}\r\n >\r\n {children}\r\n </Text>\r\n </Stack>\r\n {onDismiss && (\r\n <IconButton\r\n icon={CloseIcon}\r\n ariaLabel={'Dismiss'}\r\n variant={'text'}\r\n color={VARIANT_DISMISS_COLOR[variant]}\r\n size={'sm'}\r\n onClick={onDismiss}\r\n />\r\n )}\r\n </Stack>\r\n )\r\n}\r\n\r\nAlertTitle.displayName = 'Alert.Title'\r\n\r\nexport default AlertTitle\r\n","import type { FC } from 'react'\r\n\r\nimport { Text } from '@components/foundation/text'\r\n\r\nimport type { AlertBodyProps } from '@components/overlay/alert/alert-body/AlertBody.props'\r\n\r\n/**\r\n * Alert message body. Must be used inside an `<Alert>` component.\r\n */\r\nconst AlertBody: FC<AlertBodyProps> = ({ children }) => (\r\n <Text\r\n as={'p'}\r\n fontSize={'sm'}\r\n color={'textSecondary'}\r\n >\r\n {children}\r\n </Text>\r\n)\r\n\r\nAlertBody.displayName = 'Alert.Body'\r\n\r\nexport default AlertBody\r\n","import type { FC } from 'react'\r\n\r\nimport { Stack } from '@components/layout/stack'\r\n\r\nimport type { AlertActionsProps } from '@components/overlay/alert/alert-actions/AlertActions.props'\r\n\r\n/**\r\n * Alert actions row: renders action elements (buttons, links…) at the bottom of an `<Alert>`.\r\n * Must be used inside an `<Alert>` component.\r\n *\r\n * @example\r\n * <Alert variant=\"error\">\r\n * <Alert.Title>Something went wrong</Alert.Title>\r\n * <Alert.Body>Please try again.</Alert.Body>\r\n * <Alert.Actions>\r\n * <Button size=\"sm\" variant=\"outlined\" color=\"error\">Retry</Button>\r\n * </Alert.Actions>\r\n * </Alert>\r\n */\r\nconst AlertActions: FC<AlertActionsProps> = ({ children }) => (\r\n <Stack\r\n flexDirection={'row'}\r\n alignItems={'center'}\r\n flexWrap={'wrap'}\r\n justifyContent={'end'}\r\n gap={'sm'}\r\n paddingTop={'xs'}\r\n >\r\n {children}\r\n </Stack>\r\n)\r\n\r\nAlertActions.displayName = 'Alert.Actions'\r\n\r\nexport default AlertActions\r\n","import { Stack } from '@components/layout/stack'\r\nimport { AlertContext } from '@components/overlay/alert/Alert.context'\r\nimport AlertTitle from '@components/overlay/alert/alert-title/AlertTitle'\r\nimport AlertBody from '@components/overlay/alert/alert-body/AlertBody'\r\nimport AlertActions from '@components/overlay/alert/alert-actions/AlertActions'\r\n\r\nimport type { AlertComponent, AlertVariant } from '@components/overlay/alert/alert.types'\r\nimport type { AlertProps } from '@components/overlay/alert/Alert.props'\r\nimport type { Theme } from '@theme/theme.types'\r\nimport { FC } from 'react'\r\n\r\ntype VariantTokens = {\r\n backgroundColor: keyof Theme['colors']\r\n borderColor: keyof Theme['colors']\r\n accentColor: keyof Theme['colors']\r\n}\r\n\r\nconst VARIANT_TOKENS: Record<AlertVariant, VariantTokens> = {\r\n default: { backgroundColor: 'surfacePaper', borderColor: 'defaultMain', accentColor: 'defaultActive' },\r\n success: { backgroundColor: 'successSubtle', borderColor: 'successMain', accentColor: 'successActive' },\r\n error: { backgroundColor: 'errorSubtle', borderColor: 'errorMain', accentColor: 'errorActive' },\r\n warning: { backgroundColor: 'warningSubtle', borderColor: 'warningMain', accentColor: 'warningActive' },\r\n info: { backgroundColor: 'infoSubtle', borderColor: 'infoMain', accentColor: 'infoActive' },\r\n}\r\n\r\nconst VARIANT_ARIA_LIVE: Record<AlertVariant, 'polite' | 'assertive'> = {\r\n default: 'polite',\r\n success: 'polite',\r\n error: 'assertive',\r\n warning: 'polite',\r\n info: 'polite',\r\n}\r\n\r\n/** role=\"alert\" implies aria-live=\"assertive\" — reserve it for errors.\r\n * Other variants use role=\"status\" (implies aria-live=\"polite\"). */\r\nconst VARIANT_ROLE: Record<AlertVariant, 'alert' | 'status'> = {\r\n default: 'status',\r\n success: 'status',\r\n error: 'alert',\r\n warning: 'status',\r\n info: 'status',\r\n}\r\n\r\n/**\r\n * Inline alert banner with 5 visual variants: default, success, error, warning, info.\r\n * Use `Alert.Title` (icon + heading) and `Alert.Body` (message) as children.\r\n *\r\n * @example\r\n * <Alert variant=\"success\">\r\n * <Alert.Title>Saved</Alert.Title>\r\n * <Alert.Body>Your changes have been saved successfully.</Alert.Body>\r\n * </Alert>\r\n */\r\nconst AlertBase: FC<AlertProps> = ({\r\n variant = 'default',\r\n children,\r\n width = '100%',\r\n outline = false,\r\n shadow = 'none',\r\n}) => {\r\n const { backgroundColor, borderColor, accentColor } = VARIANT_TOKENS[variant]\r\n\r\n return (\r\n <AlertContext.Provider value={{ variant, accentColor }}>\r\n <Stack\r\n role={VARIANT_ROLE[variant]}\r\n aria-live={VARIANT_ARIA_LIVE[variant]}\r\n flexDirection={'column'}\r\n gap={'xs'}\r\n padding={'md'}\r\n borderRadius={'lg'}\r\n backgroundColor={backgroundColor}\r\n borderColor={outline ? borderColor : undefined}\r\n borderWidth={outline ? '1px' : undefined}\r\n borderStyle={outline ? 'solid' : undefined}\r\n boxShadow={shadow}\r\n width={width}\r\n >\r\n {children}\r\n </Stack>\r\n </AlertContext.Provider>\r\n )\r\n}\r\n\r\nAlertBase.displayName = 'Alert'\r\n\r\nconst Alert = AlertBase as AlertComponent\r\nAlert.Title = AlertTitle\r\nAlert.Body = AlertBody\r\nAlert.Actions = AlertActions\r\n\r\nexport default Alert\r\n","import { createStyles } from '@aurora-ds/theme'\r\n\r\nimport { MEDIA_MAX } from '@constants/breakpoints.constants'\r\nimport { DEFAULT_TRANSITION_DURATION_MS } from '@constants/app.constants'\r\n\r\nconst TRANSITION = `${DEFAULT_TRANSITION_DURATION_MS}ms ease`\r\n\r\nexport const DIALOG_STYLES = createStyles((theme) => ({\r\n panel: {\r\n position: 'fixed' as const,\r\n inset: 0,\r\n margin: 'auto',\r\n width: '90vw',\r\n height: 'fit-content',\r\n maxWidth: 'var(--dialog-max-width, 80vw)',\r\n maxHeight: 'var(--dialog-max-height, 80vh)',\r\n minWidth: 'var(--dialog-min-width, 0px)',\r\n minHeight: 'var(--dialog-min-height, 0px)',\r\n zIndex: theme.zIndex.modal,\r\n backgroundColor: theme.colors.surfacePaper,\r\n borderRadius: theme.radius['2xl'],\r\n boxShadow: theme.shadows.xl,\r\n display: 'flex',\r\n flexDirection: 'column' as const,\r\n overflow: 'hidden' as const,\r\n willChange: 'opacity, transform',\r\n opacity: 0,\r\n transform: 'scale(0.97)',\r\n transition: `opacity ${TRANSITION}, transform ${TRANSITION}`,\r\n // Mobile: bottom sheet\r\n [`@media (${MEDIA_MAX.sm})`]: {\r\n top: 'auto',\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n margin: 0,\r\n width: '100%',\r\n height: 'auto',\r\n maxWidth: 'none',\r\n maxHeight: 'var(--dialog-max-height, 85vh)',\r\n borderRadius: `${theme.radius['2xl']} ${theme.radius['2xl']} 0 0`,\r\n transform: 'translateY(100%)',\r\n },\r\n },\r\n\r\n panelVisible: {\r\n opacity: 1,\r\n transform: 'scale(1)',\r\n [`@media (${MEDIA_MAX.sm})`]: {\r\n transform: 'translateY(0)',\r\n },\r\n },\r\n\r\n // Full-viewport variant (applied via `fullscreen` prop — all screen sizes)\r\n panelFullscreen: {\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n margin: 0,\r\n width: '100%',\r\n height: '100dvh',\r\n maxWidth: 'none',\r\n maxHeight: 'none',\r\n borderRadius: 0,\r\n },\r\n\r\n}), { id: 'dialog' })\r\n","import { createContext, useContext } from 'react'\r\n\r\nimport type CloseIcon from '@resources/assets/icons/CloseIcon.svg?react'\r\n\r\nexport type DialogContextValue = {\r\n /** Stable id for the title element, used by `aria-labelledby` on the panel. */\r\n titleId: string\r\n /** Close icon SVG component forwarded to Dialog.Header. */\r\n CloseIconComponent: typeof CloseIcon\r\n}\r\n\r\nexport const DialogContext = createContext<DialogContextValue>({\r\n titleId: '',\r\n CloseIconComponent: null as any,\r\n})\r\n\r\nexport const useDialogContext = (): DialogContextValue => useContext(DialogContext)\r\n","import { useId, useEffect, useRef, useCallback, type CSSProperties, type RefObject } from 'react'\r\n\r\nimport { useTransitionRender } from '@hooks/common/use-transition-render/useTransitionRender'\r\nimport { useKeyPress } from '@hooks/common/use-key-press/useKeyPress'\r\nimport { useBodyScrollLock } from '@hooks/common/use-body-scroll-lock/useBodyScrollLock'\r\nimport { useFocusTrap } from '@hooks/common/use-focus-trap/useFocusTrap'\r\nimport { BREAKPOINTS } from '@constants/breakpoints.constants'\r\nimport { DEFAULT_TRANSITION_DURATION_MS } from '@constants/app.constants'\r\n\r\nimport type { DialogProps } from '@components/overlay/dialog/Dialog.props'\r\n\r\nconst MOBILE_MEDIA_QUERY = `(max-width: ${BREAKPOINTS.sm - 1}px)`\r\n\r\ntype UseDialogReturn = {\r\n isVisible: boolean\r\n isFadingIn: boolean\r\n panelRef: RefObject<HTMLDivElement | null>\r\n titleId: string\r\n labelledBy: string | undefined\r\n handleBackdropClick: () => void\r\n cssVars: CSSProperties\r\n}\r\n\r\nconst resolvePx = (v: number | string): string =>\r\n typeof v === 'number' ? `${v}px` : v\r\n\r\nexport const useDialog = ({\r\n open,\r\n onClose,\r\n closeOnBackdropClick,\r\n maxWidth,\r\n maxHeight,\r\n minWidth,\r\n minHeight,\r\n 'aria-label': ariaLabel,\r\n}: Pick<DialogProps, 'open' | 'onClose' | 'closeOnBackdropClick' | 'maxWidth' | 'maxHeight' | 'minWidth' | 'minHeight' | 'aria-label'>): UseDialogReturn => {\r\n\r\n const { isVisible, isFadingIn } = useTransitionRender(open, DEFAULT_TRANSITION_DURATION_MS)\r\n const titleId = useId()\r\n const panelRef = useRef<HTMLDivElement>(null)\r\n\r\n // Focus the panel after the opening transition completes\r\n useEffect(() => {\r\n if (!open) {return}\r\n const timer = setTimeout(() => {\r\n panelRef.current?.focus({ preventScroll: true })\r\n }, DEFAULT_TRANSITION_DURATION_MS)\r\n return () => clearTimeout(timer)\r\n }, [open])\r\n\r\n // Lock body scroll while the dialog is open, preserving the scrollbar to avoid layout shift\r\n useBodyScrollLock(open)\r\n\r\n // Trap focus within the dialog panel while it is mounted (accessible modal)\r\n useFocusTrap(panelRef, isVisible)\r\n\r\n // Backdrop is always clickable on mobile (bottom-sheet UX), opt-in on desktop\r\n const handleBackdropClick = useCallback(() => {\r\n const isMobile = window.matchMedia(MOBILE_MEDIA_QUERY).matches\r\n if (closeOnBackdropClick || isMobile) {\r\n onClose()\r\n }\r\n }, [closeOnBackdropClick, onClose])\r\n\r\n useKeyPress({ Escape: onClose }, { enabled: open })\r\n\r\n const cssVars: CSSProperties = {\r\n '--dialog-max-width': resolvePx(maxWidth!),\r\n '--dialog-max-height': maxHeight,\r\n ...(minWidth !== undefined && { '--dialog-min-width': resolvePx(minWidth) }),\r\n ...(minHeight !== undefined && { '--dialog-min-height': resolvePx(minHeight) }),\r\n } as CSSProperties\r\n\r\n const labelledBy = ariaLabel ? undefined : titleId\r\n\r\n return { isVisible, isFadingIn, panelRef, titleId, labelledBy, handleBackdropClick, cssVars }\r\n}\r\n","import { useContext, type FC } from 'react'\r\n\r\nimport { IconButton } from '@components/actions/icon-button'\r\nimport { Text } from '@components/foundation/text'\r\nimport { Stack } from '@components/layout/stack'\r\nimport { DialogContext } from '@components/overlay/dialog/Dialog.context'\r\n\r\nimport type { DialogHeaderProps } from '@components/overlay/dialog/dialog-header/DialogHeader.props'\r\n\r\n/**\r\n * Standard dialog header with a title and a close button.\r\n * The `titleId` is wired automatically to the parent Dialog's `aria-labelledby`.\r\n *\r\n * @example\r\n * <Dialog.Header title=\"Confirm action\" onClose={handleClose} />\r\n */\r\nconst DialogHeader: FC<DialogHeaderProps> = ({ title, onClose }) => {\r\n const { titleId, CloseIconComponent } = useContext(DialogContext)\r\n\r\n return (\r\n <Stack\r\n flexDirection={'row'}\r\n alignItems={'center'}\r\n justifyContent={'space-between'}\r\n gap={'md'}\r\n paddingTop={'md'}\r\n paddingBottom={'md'}\r\n paddingLeft={'lg'}\r\n paddingRight={'md'}\r\n flexShrink={0}\r\n >\r\n <Text\r\n id={titleId}\r\n variant={'span'}\r\n as={'h2'}\r\n fontSize={'md'}\r\n fontWeight={'semibold'}\r\n color={'textPrimary'}\r\n >\r\n {title}\r\n </Text>\r\n\r\n <IconButton\r\n icon={CloseIconComponent}\r\n ariaLabel={'Close dialog'}\r\n variant={'text'}\r\n color={'neutral'}\r\n size={'sm'}\r\n type={'button'}\r\n onClick={onClose}\r\n />\r\n </Stack>\r\n )\r\n}\r\n\r\nDialogHeader.displayName = 'Dialog.Header'\r\n\r\nexport default DialogHeader\r\n","import type { FC } from 'react'\r\n\r\nimport { Box } from '@components/layout/box'\r\n\r\nimport type { DialogBodyProps } from '@components/overlay/dialog/dialog-body/DialogBody.props'\r\n\r\n/**\r\n * Scrollable content area of the dialog.\r\n *\r\n * @example\r\n * <Dialog.Body>\r\n * <p>Are you sure you want to delete this item?</p>\r\n * </Dialog.Body>\r\n */\r\nconst DialogBody: FC<DialogBodyProps> = ({ children }) => (\r\n <Box\r\n flexGrow={1}\r\n minHeight={'0'}\r\n overflowY={'auto'}\r\n padding={'lg'}\r\n >\r\n {children}\r\n </Box>\r\n)\r\n\r\nDialogBody.displayName = 'Dialog.Body'\r\n\r\nexport default DialogBody\r\n","import { createPortal } from 'react-dom'\r\nimport { type FC } from 'react'\r\nimport { cx } from '@aurora-ds/theme'\r\n\r\nimport CloseIcon from '@resources/assets/icons/CloseIcon.svg?react'\r\nimport { DIALOG_STYLES } from '@components/overlay/dialog/Dialog.styles'\r\nimport { DialogContext } from '@components/overlay/dialog/Dialog.context'\r\nimport { useDialog } from '@components/overlay/dialog/utils/useDialog.utils'\r\nimport DialogHeader from '@components/overlay/dialog/dialog-header/DialogHeader'\r\nimport DialogBody from '@components/overlay/dialog/dialog-body/DialogBody'\r\nimport { Backdrop } from '@components/overlay/backdrop'\r\n\r\nimport type { DialogProps } from '@components/overlay/dialog/Dialog.props'\r\nimport type { DialogComponent } from '@components/overlay/dialog/Dialog.types'\r\n\r\n/**\r\n * Modal dialog with a semi-transparent overlay. Supports responsive layout:\r\n * centered on desktop, full-width bottom sheet on mobile (< sm breakpoint).\r\n *\r\n * Animated via `useTransitionRender` on both open and close.\r\n * Closed by pressing Escape or using `Dialog.Header`'s built-in close button.\r\n * Backdrop click: always enabled on mobile, opt-in on desktop via `closeOnBackdropClick`.\r\n *\r\n * @example\r\n * <Dialog open={open} onClose={() => setOpen(false)}>\r\n * <Dialog.Header title=\"Settings\" onClose={() => setOpen(false)} />\r\n * <Dialog.Body>…content…</Dialog.Body>\r\n * </Dialog>\r\n */\r\nconst DialogBase: FC<DialogProps> = ({\r\n open,\r\n onClose,\r\n children,\r\n closeOnBackdropClick = false,\r\n fullscreen = false,\r\n maxWidth = '80vw',\r\n maxHeight = '80vh',\r\n minWidth,\r\n minHeight,\r\n 'aria-label': ariaLabel,\r\n}) => {\r\n const { isVisible, isFadingIn, panelRef, titleId, labelledBy, handleBackdropClick, cssVars } =\r\n useDialog({ open, onClose, closeOnBackdropClick, maxWidth, maxHeight, minWidth, minHeight, 'aria-label': ariaLabel })\r\n\r\n if (!isVisible) {return null}\r\n\r\n return createPortal(\r\n <>\r\n <Backdrop\r\n visible={isFadingIn}\r\n onClick={handleBackdropClick}\r\n />\r\n\r\n <div\r\n ref={panelRef}\r\n role={'dialog'}\r\n aria-modal={true}\r\n aria-labelledby={labelledBy}\r\n aria-label={ariaLabel}\r\n tabIndex={-1}\r\n data-scroll-lock-ignore={true}\r\n className={cx(\r\n DIALOG_STYLES.panel,\r\n isFadingIn && DIALOG_STYLES.panelVisible,\r\n fullscreen && DIALOG_STYLES.panelFullscreen,\r\n )}\r\n style={cssVars}\r\n >\r\n <DialogContext.Provider value={{ titleId, CloseIconComponent: CloseIcon }}>\r\n {children}\r\n </DialogContext.Provider>\r\n </div>\r\n </>,\r\n document.body\r\n )\r\n}\r\n\r\nDialogBase.displayName = 'Dialog'\r\n\r\nconst Dialog = DialogBase as DialogComponent\r\nDialog.Header = DialogHeader\r\nDialog.Body = DialogBody\r\n\r\nexport default Dialog\r\n","import { useEffect, useState } from 'react'\r\n\r\nimport { BREAKPOINTS } from '@constants/breakpoints.constants'\r\n\r\ntype Breakpoint = keyof typeof BREAKPOINTS\r\n\r\n/**\r\n * Listens to a CSS media query string and returns whether it currently matches.\r\n *\r\n * @param query - A valid CSS media query string, e.g. `'(max-width: 639px)'`.\r\n * @returns `true` when the media query matches, `false` otherwise.\r\n *\r\n * @example\r\n * const isMobile = useMediaQuery('(max-width: 639px)')\r\n */\r\nexport const useMediaQuery = (query: string): boolean => {\r\n const [matches, setMatches] = useState<boolean>(() => {\r\n if (typeof window === 'undefined') {return false}\r\n return window.matchMedia(query).matches\r\n })\r\n\r\n useEffect(() => {\r\n if (typeof window === 'undefined') {return}\r\n const mediaQueryList = window.matchMedia(query)\r\n setMatches(mediaQueryList.matches)\r\n\r\n const listener = (event: MediaQueryListEvent) => setMatches(event.matches)\r\n mediaQueryList.addEventListener('change', listener)\r\n return () => mediaQueryList.removeEventListener('change', listener)\r\n }, [query])\r\n\r\n return matches\r\n}\r\n\r\n/**\r\n * Returns `true` when the viewport width is **below** the given breakpoint (mobile-first max).\r\n *\r\n * @param breakpoint - One of the Aurora breakpoints: `xs` | `sm` | `md` | `lg` | `xl` | `2xl`.\r\n *\r\n * @example\r\n * const isMobile = useBreakpointMax('sm') // true when width < 640px\r\n */\r\nexport const useBreakpointMax = (breakpoint: Breakpoint): boolean =>\r\n useMediaQuery(`(max-width: ${BREAKPOINTS[breakpoint] - 1}px)`)\r\n\r\n/**\r\n * Returns `true` when the viewport width is **at or above** the given breakpoint.\r\n *\r\n * @param breakpoint - One of the Aurora breakpoints: `xs` | `sm` | `md` | `lg` | `xl` | `2xl`.\r\n *\r\n * @example\r\n * const isDesktop = useBreakpointMin('md') // true when width >= 768px\r\n */\r\nexport const useBreakpointMin = (breakpoint: Breakpoint): boolean =>\r\n useMediaQuery(`(min-width: ${BREAKPOINTS[breakpoint]}px)`)","import { useCallback, useEffect, useRef, useState } from 'react'\nimport { useKeyPress } from '@hooks/common/use-key-press/useKeyPress'\nimport type {\n UseListKeyNavOptions,\n UseListKeyNavResult\n} from '@hooks/components/overlay/use-list-key-nav/useListKeyNav.types'\n\n/**\n * Manages keyboard navigation for a listbox-style menu.\n *\n * Binds ArrowDown, ArrowUp, Home, End, and Enter using `useKeyPress`.\n * Automatically skips disabled items and optionally wraps around (loop).\n * Resets focus when `enabled` toggles.\n */\nexport const useListKeyNav = ({\n itemCount,\n enabled,\n onSelect,\n isDisabled,\n loop = true,\n initialIndex = 0,\n}: UseListKeyNavOptions): UseListKeyNavResult => {\n const [focusedIndex, setFocusedIndex] = useState(-1)\n\n const initialIndexRef = useRef(initialIndex)\n useEffect(() => {\n initialIndexRef.current = initialIndex\n }, [initialIndex])\n\n useEffect(() => {\n setFocusedIndex(enabled ? initialIndexRef.current : -1)\n }, [enabled])\n\n const getNextIndex = useCallback(\n (current: number, direction: 1 | -1): number => {\n if (itemCount === 0) {return -1}\n let next = current + direction\n for (let i = 0; i < itemCount; i++) {\n if (next < 0) {next = loop ? itemCount - 1 : 0}\n if (next >= itemCount) {next = loop ? 0 : itemCount - 1}\n if (!isDisabled?.(next)) {return next}\n next += direction\n }\n return current\n },\n [itemCount, loop, isDisabled]\n )\n\n useKeyPress(\n {\n ArrowDown: (e) => {\n e.preventDefault()\n setFocusedIndex((prev) => getNextIndex(prev, 1))\n },\n ArrowUp: (e) => {\n e.preventDefault()\n setFocusedIndex((prev) => getNextIndex(prev, -1))\n },\n Home: (e) => {\n e.preventDefault()\n setFocusedIndex(getNextIndex(-1, 1))\n },\n End: (e) => {\n e.preventDefault()\n setFocusedIndex(getNextIndex(itemCount, -1))\n },\n Enter: () => {\n if (focusedIndex >= 0) {onSelect(focusedIndex)}\n },\n },\n { enabled }\n )\n\n return { focusedIndex, setFocusedIndex }\n}\n","export const lightPalette = {\r\n // Surface\r\n surfaceBackground: '#f8fafc',\r\n surfacePaper: '#ffffff',\r\n surfaceElevated: '#f1f5f9',\r\n\r\n // Text\r\n textPrimary: '#0f172a',\r\n textSecondary: '#475569',\r\n textTertiary: '#64748b',\r\n textDisabled: '#94a3b8',\r\n textInverse: '#ffffff',\r\n\r\n // Primary (Indigo brand)\r\n primaryMain: '#5b5aef',\r\n primaryHover: '#4f46e5',\r\n primaryActive: '#4338ca',\r\n primarySubtle: '#eef2ff',\r\n primarySubtleHover: '#e0e7ff',\r\n primarySubtleActive: '#c7d2fe',\r\n primaryDisabled: '#a5b4fc',\r\n primaryOn: '#ffffff',\r\n\r\n // Secondary (Fuchsia — vivid brand accent, no semantic meaning)\r\n // Distinct from: success (green), error (red), warning (amber), info (sky)\r\n // secondaryMain (#c026d3) + secondaryOn (#ffffff) → contrast ~4.67:1 ✓ (AA)\r\n secondaryMain: '#c026d3',\r\n secondaryHover: '#a21caf',\r\n secondaryActive: '#86198f',\r\n secondarySubtle: '#fdf4ff',\r\n secondarySubtleHover: '#fae8ff',\r\n secondarySubtleActive: '#f5d0fe',\r\n secondaryDisabled: '#f0abfc',\r\n secondaryOn: '#ffffff',\r\n\r\n // Border\r\n borderSubtle: '#f1f5f9',\r\n borderMain: '#e2e8f0',\r\n borderStrong: '#cbd5e1',\r\n\r\n // Focus ring — single source of truth for the focus-visible outline\r\n focusRing: '#000000',\r\n\r\n // Disabled state\r\n disabledMain: '#e2e8f0',\r\n disabledText: '#94a3b8',\r\n\r\n // Success (Emerald)\r\n successMain: '#059669',\r\n successHover: '#047857',\r\n successActive: '#065f46',\r\n successSubtle: '#d1fae5',\r\n successSubtleHover: '#a7f3d0',\r\n successSubtleActive: '#6ee7b7',\r\n successOn: '#ffffff',\r\n\r\n // Warning (Amber)\r\n warningMain: '#d97706',\r\n warningHover: '#b45309',\r\n warningActive: '#92400e',\r\n warningSubtle: '#fef3c7',\r\n warningSubtleHover: '#fde68a',\r\n warningSubtleActive: '#fcd34d',\r\n warningOn: '#ffffff',\r\n\r\n // Error (Red)\r\n errorMain: '#dc2626',\r\n errorHover: '#b91c1c',\r\n errorActive: '#991b1b',\r\n errorSubtle: '#fee2e2',\r\n errorSubtleHover: '#fecaca',\r\n errorSubtleActive: '#fca5a5',\r\n errorOn: '#ffffff',\r\n\r\n // Info (Sky)\r\n infoMain: '#0284c7',\r\n infoHover: '#0369a1',\r\n infoActive: '#0c4a6e',\r\n infoSubtle: '#e0f2fe',\r\n infoSubtleHover: '#bae6fd',\r\n infoSubtleActive: '#7dd3fc',\r\n infoOn: '#ffffff',\r\n\r\n // Orange\r\n orangeMain: '#ea580c',\r\n orangeHover: '#c2410c',\r\n orangeActive: '#9a2e0f',\r\n orangeSubtle: '#ffedd5',\r\n orangeSubtleHover: '#fed7aa',\r\n orangeSubtleActive: '#fdba74',\r\n orangeOn: '#ffffff',\r\n\r\n // Pink\r\n pinkMain: '#db2777',\r\n pinkHover: '#be185d',\r\n pinkActive: '#9d174d',\r\n pinkSubtle: '#fce7f3',\r\n pinkSubtleHover: '#fbcfe8',\r\n pinkSubtleActive: '#f9a8d4',\r\n pinkOn: '#ffffff',\r\n\r\n // Violet\r\n violetMain: '#7c3aed',\r\n violetHover: '#6d28d9',\r\n violetActive: '#5b21b6',\r\n violetSubtle: '#ede9fe',\r\n violetSubtleHover: '#ddd6fe',\r\n violetSubtleActive: '#c4b5fd',\r\n violetOn: '#ffffff',\r\n\r\n // Default (Slate)\r\n defaultMain: '#64748b',\r\n defaultHover: '#475569',\r\n defaultActive: '#334155',\r\n defaultSubtle: '#f1f5f9',\r\n defaultSubtleHover: '#e2e8f0',\r\n defaultSubtleActive: '#cbd5e1',\r\n\r\n // Skeleton\r\n skeletonPrimary: '#dde3ec',\r\n skeletonSecondary: '#edf0f5',\r\n\r\n // Link (Blue)\r\n linkMain: '#1e40af',\r\n linkHover: '#2563eb',\r\n linkActive: '#4f46e5',\r\n linkDisabled: '#93c5fd',\r\n}\r\n","/**\r\n * Default breakpoint tokens\r\n */\r\nexport const themeBreakpoints = {\r\n xs: '480px', // Extra small devices (phones in landscape)\r\n sm: '640px', // Small devices (large phones, small tablets)\r\n md: '768px', // Medium devices (tablets)\r\n lg: '1024px', // Large devices (desktops)\r\n xl: '1280px', // Extra large devices (large desktops)\r\n '2xl': '1536px', // Extra extra large devices (wide screens)\r\n}\r\n","/**\r\n * Default font size tokens\r\n */\r\nexport const themeFontSize = {\r\n '2xs': '0.625rem', // 10px\r\n xs: '0.75rem', // 12px\r\n sm: '0.875rem', // 14px\r\n md: '1rem', // 16px\r\n lg: '1.25rem', // 20px\r\n xl: '1.5rem', // 24px\r\n '2xl': '2rem', // 32px\r\n '3xl': '2.5rem', // 40px\r\n '4xl': '3rem', // 48px\r\n '5xl': '4rem', // 64px\r\n}\r\n","/**\r\n * Default font weight tokens\r\n */\r\nexport const themeFontWeight = {\r\n light: 300,\r\n regular: 400,\r\n medium: 500,\r\n semibold: 600,\r\n bold: 700,\r\n}\r\n","/**\r\n * Default line height tokens\r\n */\r\nexport const themeLineHeight = {\r\n none: 1,\r\n tight: 1.25,\r\n normal: 1.5,\r\n relaxed: 1.75,\r\n loose: 2,\r\n}\r\n","/**\r\n * Default opacity tokens\r\n */\r\nexport const themeOpacity = {\r\n none: 0,\r\n lowest: 0.05,\r\n low: 0.1,\r\n medium: 0.25,\r\n high: 0.5,\r\n higher: 0.75,\r\n full: 1,\r\n}\r\n","/**\r\n * Default border radius tokens\r\n */\r\nexport const themeRadius = {\r\n none: '0',\r\n xs: '0.125rem', // 2px\r\n sm: '0.25rem', // 4px\r\n md: '0.375rem', // 6px\r\n lg: '0.5rem', // 8px\r\n xl: '0.75rem', // 12px\r\n '2xl': '1rem', // 16px\r\n full: '9999px',\r\n}\r\n","/**\r\n * Default shadow tokens\r\n */\r\nexport const themeShadows = {\r\n none: 'none',\r\n xs: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\r\n sm: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\r\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\r\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\r\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\r\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\r\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\r\n focus: '0 0 0 3px rgb(99 102 241 / 0.4)',\r\n dropSm: 'drop-shadow(0 1px 3px rgb(0 0 0 / 0.1)) drop-shadow(0 1px 2px rgb(0 0 0 / 0.1))',\r\n}\r\n","/**\r\n * Default spacing tokens\r\n *\r\n * ⚠️ Token keys MUST stay CSS-custom-property safe (letters, digits, hyphens only).\r\n * They are turned into CSS variables (e.g. `smPlus` → `--theme-spacing-sm-plus`) by\r\n * the theme proxy, so characters like `+` would produce invalid variable names and\r\n * silently break any style that uses them.\r\n */\r\nexport const themeSpacing = {\r\n none: '0',\r\n '2xs': '0.125rem', // 2px\r\n xs: '0.25rem', // 4px\r\n xsPlus: '0.375rem', // 6px\r\n sm: '0.5rem', // 8px\r\n smPlus: '0.75rem', // 12px\r\n md: '1rem', // 16px\r\n lg: '1.5rem', // 24px\r\n xl: '2rem', // 32px\r\n '2xl': '3rem', // 48px\r\n '3xl': '4rem', // 64px\r\n '4xl': '6rem', // 96px\r\n '5xl': '8rem', // 128px\r\n}\r\n","/**\r\n * Default transition tokens\r\n */\r\nexport const themeTransition = {\r\n fast: '100ms ease-in-out',\r\n normal: '200ms ease-in-out',\r\n slow: '300ms ease-in-out',\r\n}\r\n","/**\r\n * Default z-index tokens\r\n */\r\nexport const themeZIndex = {\r\n behind: -1,\r\n base: 0,\r\n dropdown: 1000,\r\n sticky: 1100,\r\n overlay: 1300,\r\n modal: 1400,\r\n popover: 1500,\r\n tooltip: 1600,\r\n toast: 1700,\r\n}\r\n","import { createTheme } from '@aurora-ds/theme'\r\nimport { lightPalette } from '@theme/_palettes/lightPalette'\r\nimport { themeBreakpoints } from '@theme/values/themeBreakpoints'\r\nimport { themeFontSize } from '@theme/values/themeFontSize'\r\nimport { themeFontWeight } from '@theme/values/themeFontWeight'\r\nimport { themeLineHeight } from '@theme/values/themeLineHeight'\r\nimport { themeOpacity } from '@theme/values/themeOpacity'\r\nimport { themeRadius } from '@theme/values/themeRadius'\r\nimport { themeShadows } from '@theme/values/themeShadows'\r\nimport { themeSpacing } from '@theme/values/themeSpacing'\r\nimport { themeTransition } from '@theme/values/themeTransition'\r\nimport { themeZIndex } from '@theme/values/themeZIndex'\r\n\r\nexport const lightTheme = createTheme({\r\n colors: lightPalette,\r\n spacing: themeSpacing,\r\n radius: themeRadius,\r\n shadows: themeShadows,\r\n fontSize: themeFontSize,\r\n fontWeight: themeFontWeight,\r\n lineHeight: themeLineHeight,\r\n zIndex: themeZIndex,\r\n transition: themeTransition,\r\n opacity: themeOpacity,\r\n breakpoints: themeBreakpoints,\r\n})\r\n","export const darkPalette = {\r\n // Surface\r\n surfaceBackground: '#1F1F21',\r\n surfacePaper: '#2A2A2D',\r\n surfaceElevated: '#333336',\r\n\r\n // Text\r\n // textPrimary → contrast ~14.5:1 on surfaceBackground ✓ (AAA)\r\n // textSecondary → contrast ~6.1:1 on surfaceBackground ✓ (AA)\r\n // textTertiary → contrast ~4.6:1 on surfaceBackground ✓ (AA)\r\n // textDisabled → intentionally low (disabled elements are WCAG-exempt)\r\n textPrimary: '#F2F2F3',\r\n textSecondary: '#A0A0A8',\r\n textTertiary: '#888891',\r\n textDisabled: '#55555A',\r\n textInverse: '#1F1F21',\r\n\r\n // Primary (Indigo — brightened for dark backgrounds)\r\n // primaryMain (#818cf8) + primaryOn (#1F1F21) → contrast ~5.4:1 ✓ (AA)\r\n primaryMain: '#818cf8',\r\n primaryHover: '#a5b4fc',\r\n primaryActive: '#c7d2fe',\r\n primarySubtle: '#1C1A2E',\r\n primarySubtleHover: '#252242',\r\n primarySubtleActive: '#2E2A56',\r\n primaryDisabled: '#3730a3',\r\n primaryOn: '#1F1F21',\r\n\r\n // Secondary (Fuchsia — vivid brand accent, no semantic meaning)\r\n // secondaryMain (#e879f9) + secondaryOn (#1F1F21) → contrast ~7.1:1 ✓ (AAA)\r\n secondaryMain: '#e879f9',\r\n secondaryHover: '#f0abfc',\r\n secondaryActive: '#f5d0fe',\r\n secondarySubtle: '#27102A',\r\n secondarySubtleHover: '#3A163E',\r\n secondarySubtleActive: '#4D1C52',\r\n secondaryDisabled: '#86198f',\r\n secondaryOn: '#1F1F21',\r\n\r\n // Border\r\n borderSubtle: '#2A2A2D',\r\n borderMain: '#3A3A3E',\r\n borderStrong: '#505055',\r\n\r\n // Focus ring — single source of truth for the focus-visible outline\r\n focusRing: '#ffffff',\r\n\r\n // Disabled state\r\n disabledMain: '#3A3A3E',\r\n disabledText: '#55555A',\r\n\r\n // Success (Emerald)\r\n // successMain (#34d399) + successOn (#051A12) → contrast ~10:1 ✓ (AAA)\r\n successMain: '#34d399',\r\n successHover: '#6ee7b7',\r\n successActive: '#a7f3d0',\r\n successSubtle: '#071F16',\r\n successSubtleHover: '#0A3324',\r\n successSubtleActive: '#0D4430',\r\n successOn: '#051A12',\r\n\r\n // Warning (Amber)\r\n // warningMain (#fbbf24) + warningOn (#1A1206') → contrast ~9.5:1 ✓ (AAA)\r\n warningMain: '#fbbf24',\r\n warningHover: '#fcd34d',\r\n warningActive: '#fde68a',\r\n warningSubtle: '#221605',\r\n warningSubtleHover: '#321F06',\r\n warningSubtleActive: '#3F2807',\r\n warningOn: '#1A1206',\r\n\r\n // Error (Red)\r\n // errorMain (#f87171) + errorOn (#1F0606) → contrast ~5.1:1 ✓ (AA)\r\n errorMain: '#f87171',\r\n errorHover: '#fca5a5',\r\n errorActive: '#fecaca',\r\n errorSubtle: '#270707',\r\n errorSubtleHover: '#3D0B0B',\r\n errorSubtleActive: '#510E0E',\r\n errorOn: '#1F0606',\r\n\r\n // Info (Sky)\r\n // infoMain (#38bdf8) + infoOn (#061520') → contrast ~10.1:1 ✓ (AAA)\r\n infoMain: '#38bdf8',\r\n infoHover: '#7dd3fc',\r\n infoActive: '#bae6fd',\r\n infoSubtle: '#081A24',\r\n infoSubtleHover: '#0B2A38',\r\n infoSubtleActive: '#0D3849',\r\n infoOn: '#061520',\r\n\r\n // Orange\r\n // orangeMain (#fb923c) + orangeOn (#1A0D03') → contrast ~7.2:1 ✓ (AAA)\r\n orangeMain: '#fb923c',\r\n orangeHover: '#fdba74',\r\n orangeActive: '#fed7aa',\r\n orangeSubtle: '#241104',\r\n orangeSubtleHover: '#361A06',\r\n orangeSubtleActive: '#472207',\r\n orangeOn: '#1A0D03',\r\n\r\n // Pink\r\n // pinkMain (#f472b6) + pinkOn (#1F0712') → contrast ~6.4:1 ✓ (AA)\r\n pinkMain: '#f472b6',\r\n pinkHover: '#f9a8d4',\r\n pinkActive: '#fbcfe8',\r\n pinkSubtle: '#260B18',\r\n pinkSubtleHover: '#390F25',\r\n pinkSubtleActive: '#4C1432',\r\n pinkOn: '#1F0712',\r\n\r\n // Violet\r\n // violetMain (#a78bfa) + violetOn (#130A24') → contrast ~7.2:1 ✓ (AAA)\r\n violetMain: '#a78bfa',\r\n violetHover: '#c4b5fd',\r\n violetActive: '#ddd6fe',\r\n violetSubtle: '#1A0E33',\r\n violetSubtleHover: '#25134A',\r\n violetSubtleActive: '#301860',\r\n violetOn: '#130A24',\r\n\r\n // Default (Neutral)\r\n defaultMain: '#A0A0A8',\r\n defaultHover: '#C8C8CF',\r\n defaultActive: '#DCDCE2',\r\n defaultSubtle: '#2A2A2D',\r\n defaultSubtleHover: '#333336',\r\n defaultSubtleActive: '#3A3A3E',\r\n\r\n // Skeleton — visible shimmer on dark surfaces\r\n skeletonPrimary: '#2A2A2D',\r\n skeletonSecondary: '#3A3A3E',\r\n\r\n // Link — 3-step progression: sky blue → indigo → violet\r\n // linkMain (#60a5fa) → contrast ~6.7:1 on surfaceBackground ✓ (AA)\r\n linkMain: '#60a5fa',\r\n linkHover: '#818cf8',\r\n linkActive: '#c4b5fd',\r\n linkDisabled: '#2A3F7A',\r\n}\r\n","import { createTheme } from '@aurora-ds/theme'\r\nimport { darkPalette } from '@theme/_palettes/darkPalette'\r\nimport { themeBreakpoints } from '@theme/values/themeBreakpoints'\r\nimport { themeFontSize } from '@theme/values/themeFontSize'\r\nimport { themeFontWeight } from '@theme/values/themeFontWeight'\r\nimport { themeLineHeight } from '@theme/values/themeLineHeight'\r\nimport { themeOpacity } from '@theme/values/themeOpacity'\r\nimport { themeRadius } from '@theme/values/themeRadius'\r\nimport { themeShadows } from '@theme/values/themeShadows'\r\nimport { themeSpacing } from '@theme/values/themeSpacing'\r\nimport { themeTransition } from '@theme/values/themeTransition'\r\nimport { themeZIndex } from '@theme/values/themeZIndex'\r\n\r\nexport const darkTheme = createTheme({\r\n colors: darkPalette,\r\n spacing: themeSpacing,\r\n radius: themeRadius,\r\n shadows: themeShadows,\r\n fontSize: themeFontSize,\r\n fontWeight: themeFontWeight,\r\n lineHeight: themeLineHeight,\r\n zIndex: themeZIndex,\r\n transition: themeTransition,\r\n opacity: themeOpacity,\r\n breakpoints: themeBreakpoints,\r\n})\r\n"],"names":["keyframes","createStyles","_jsx","createElement","Fragment","theme","useTheme","LABEL_FONT_SIZE","ICON_SIZE","cx","_jsxs","ICON_SIZE_MAP","createPortal","VARIANTS","COLORS","SIZES","createContext","useContext","useState","useCallback","useMemo","Children","isValidElement","cloneElement","createVariants","VIEWPORT_MARGIN_PX","useRef","useEffect","useId","_Fragment","Component","useLayoutEffect","TRANSITION","createTheme"],"mappings":"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"}
|