@aurora-ds/components 1.2.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/resources/Icons.ts","../../src/constants/animation.constants.ts","../../src/constants/app.constants.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/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/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/foundation/skeleton/Skeleton.styles.ts","../../src/components/foundation/skeleton/Skeleton.tsx","../../src/components/forms/form/Form.styles.ts","../../src/components/forms/form/Form.tsx","../../src/components/forms/switch/Switch.styles.ts","../../src/hooks/common/use-controllable-state/useControllableState.ts","../../src/components/forms/switch/utils/useSwitch.utils.ts","../../src/components/forms/switch/Switch.tsx","../../src/components/layout/box/Box.styles.ts","../../src/components/layout/box/Box.tsx","../../src/components/layout/stack/Stack.tsx","../../src/components/forms/_common/form-helper-text/FormHelperText.tsx","../../src/components/forms/text-field/TextField.styles.ts","../../src/hooks/common/use-merged-refs/useMergedRefs.ts","../../src/components/forms/text-field/utils/useTextField.utils.ts","../../src/components/forms/text-field/TextField.tsx","../../src/components/overlay/menu/Menu.styles.ts","../../src/hooks/common/use-key-press/useKeyPress.ts","../../src/hooks/components/overlay/use-menu-position/useMenuPosition.ts","../../src/components/overlay/menu/utils/useMenu.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/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/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/grid/Grid.styles.ts","../../src/components/layout/grid/Grid.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/hooks/common/use-body-scroll-lock/useBodyScrollLock.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/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.tsx","../../src/components/overlay/dialog/Dialog.styles.ts","../../src/components/overlay/dialog/Dialog.context.ts","../../src/hooks/common/use-focus-trap/useFocusTrap.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/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 ChevronDownIcon from '@resources/assets/icons/ChevronDownIcon.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 { SpinnerIcon }\r\n\r\nexport const IconRegistry = {\r\n AlertErrorIcon,\r\n AlertInfoIcon,\r\n AlertSuccessIcon,\r\n AlertWarningIcon,\r\n ChevronDownIcon,\r\n CloseIcon,\r\n EyeIcon,\r\n EyeSlashIcon,\r\n SpinnerIcon,\r\n} as const\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 = 250\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 type { StyleWithPseudos } from '@aurora-ds/theme'\n\nimport type { ButtonColor, ButtonVariant, } from '@components/actions/button/button.types'\nimport type { ButtonIntentMap, ButtonVariantTheme } from '@components/actions/_common/buttonIntent.types'\nimport { DEFAULT_BUTTON_HEIGHT } from '@constants/app.constants'\n\n/**\n * Returns the complete root styles for an action button (base + color/variant),\n * all in one object so CSS transitions work correctly.\n * Size-specific styles (height, padding, fontSize) are added by the caller.\n */\nexport const buildActionButtonRootStyle = (\n theme: ButtonVariantTheme,\n variant: ButtonVariant,\n color: ButtonColor,\n): StyleWithPseudos => {\n const c = theme.colors\n\n const intents: ButtonIntentMap = {\n primary: {\n main: c.primaryMain, hover: c.primaryHover, active: c.primaryActive,\n on: c.primaryOn, subtle: c.primarySubtle, subtleHover: c.primarySubtleHover, subtleActive: c.primarySubtleActive,\n fg: c.primaryMain, fgHover: c.primaryHover, border: c.primaryMain,\n },\n secondary: {\n main: c.secondaryMain, hover: c.secondaryHover, active: c.secondaryActive,\n on: c.secondaryOn, subtle: c.secondarySubtle, subtleHover: c.secondarySubtleHover, subtleActive: c.secondarySubtleActive,\n fg: c.secondaryOn, fgHover: c.secondaryOn, border: c.borderStrong,\n },\n neutral: {\n main: c.defaultMain, hover: c.defaultHover, active: c.defaultActive,\n on: c.textInverse, subtle: c.defaultSubtle, subtleHover: c.defaultSubtleHover, subtleActive: c.defaultSubtleActive,\n fg: c.defaultMain, fgHover: c.defaultHover, border: c.defaultMain,\n },\n info: {\n main: c.infoMain, hover: c.infoHover, active: c.infoActive,\n on: c.infoOn, subtle: c.infoSubtle, subtleHover: c.infoSubtleHover, subtleActive: c.infoSubtleActive,\n fg: c.infoMain, fgHover: c.infoHover, border: c.infoMain,\n },\n success: {\n main: c.successMain, hover: c.successHover, active: c.successActive,\n on: c.successOn, subtle: c.successSubtle, subtleHover: c.successSubtleHover, subtleActive: c.successSubtleActive,\n fg: c.successMain, fgHover: c.successHover, border: c.successMain,\n },\n warning: {\n main: c.warningMain, hover: c.warningHover, active: c.warningActive,\n on: c.warningOn, subtle: c.warningSubtle, subtleHover: c.warningSubtleHover, subtleActive: c.warningSubtleActive,\n fg: c.warningMain, fgHover: c.warningHover, border: c.warningMain,\n },\n error: {\n main: c.errorMain, hover: c.errorHover, active: c.errorActive,\n on: c.errorOn, subtle: c.errorSubtle, subtleHover: c.errorSubtleHover, subtleActive: c.errorSubtleActive,\n fg: c.errorMain, fgHover: c.errorHover, border: c.errorMain,\n },\n }\n\n const intent = intents[color]\n\n const colorVariantStyles: StyleWithPseudos =\n variant === 'contained'\n ? {\n backgroundColor: intent.main,\n borderColor: intent.main,\n color: intent.on,\n boxShadow: theme.shadows.xs,\n ':hover:not(:disabled)': { backgroundColor: intent.hover, borderColor: intent.hover, boxShadow: theme.shadows.sm },\n ':active:not(:disabled)': { backgroundColor: intent.active, borderColor: intent.active, boxShadow: theme.shadows.none },\n }\n : variant === 'outlined'\n ? {\n backgroundColor: 'transparent',\n borderColor: intent.border,\n color: intent.fg,\n ':hover:not(:disabled)': { backgroundColor: intent.subtleHover, color: intent.fgHover },\n ':active:not(:disabled)': { backgroundColor: intent.subtleActive, borderColor: intent.active, color: intent.active },\n }\n : {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n color: intent.fg,\n ':hover:not(:disabled)': { backgroundColor: intent.subtleHover, color: intent.fgHover },\n ':active:not(:disabled)': { backgroundColor: intent.subtleActive, color: intent.active },\n }\n\n return {\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxSizing: 'border-box',\n border: '1px solid transparent',\n borderRadius: theme.radius.md,\n fontFamily: 'inherit',\n userSelect: 'none',\n height: DEFAULT_BUTTON_HEIGHT,\n cursor: 'pointer',\n outline: 'none',\n transition: `background-color ${theme.transition.normal}, border-color ${theme.transition.normal}, color ${theme.transition.normal}, box-shadow ${theme.transition.normal}`,\n ...colorVariantStyles,\n ':focus-visible': { boxShadow: theme.shadows.focus },\n ':disabled': { cursor: 'not-allowed', opacity: theme.opacity.high, boxShadow: 'none' },\n }\n}\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'\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\n\r\nexport const LINK_STYLES = createStyles((theme) => ({\r\n root: ({ underline = 'hover' }: LinkStyleParams) => ({\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n gap: '0.25em',\r\n color: theme.colors.linkMain,\r\n fontFamily: 'inherit',\r\n fontSize: 'inherit',\r\n lineHeight: 'inherit',\r\n fontWeight: 'inherit',\r\n textDecoration: underline === 'always' ? 'underline' : 'none',\r\n cursor: 'pointer',\r\n borderRadius: theme.radius.xs,\r\n transition: `color ${theme.transition.fast}`,\r\n ':hover:not([aria-disabled=\"true\"])': {\r\n color: theme.colors.linkHover,\r\n textDecoration: underline !== 'none' ? 'underline' : 'none',\r\n },\r\n ':active:not([aria-disabled=\"true\"])': {\r\n color: theme.colors.linkActive,\r\n },\r\n ':focus-visible': {\r\n outline: `2px solid ${theme.colors.linkMain}`,\r\n outlineOffset: '2px',\r\n },\r\n '&[aria-disabled=\"true\"]': {\r\n color: theme.colors.linkDisabled,\r\n cursor: 'not-allowed',\r\n textDecoration: 'none',\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'\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'>About</Link>\n * @example <Link href='https://example.com' external>External site</Link>\n * @example <Link href='/profile' underline='always' startIcon={UserIcon}>Profile</Link>\n * @example <Link href='/terms' underline='none'>Terms</Link>\n * @example <Link onClick={() => navigate('/about')}>About (SPA)</Link>\n */\nconst Link: FC<LinkProps> = (\n {\n ref,\n underline = 'hover',\n external = false,\n disabled = false,\n startIcon: StartIcon,\n endIcon: EndIcon,\n children,\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 onClick?.(e)\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 }), 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 {children}\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 { 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 } 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 const trigger = !isEffectivelyDisabled && isValidElement<Record<string, unknown>>(children)\r\n ? cloneElement(children, {\r\n 'aria-describedby': tooltipId,\r\n ...(hideOnClick && { onClick: handleClick }),\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\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': {\r\n boxShadow: theme.shadows.focus,\r\n },\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 { 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 { 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 CompoundVariant, createStyles, createVariants, type StyleWithPseudos } from '@aurora-ds/theme'\r\n\r\nimport type { SwitchColor } from '@components/forms/switch/switch.types'\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 },\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 { 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 { 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 } 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 { 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> = (\r\n {\r\n ref,\r\n display,\r\n width, height, minWidth, maxWidth, minHeight, maxHeight,\r\n padding, paddingTop, paddingRight, paddingBottom, paddingLeft, px, py,\r\n margin, marginTop, marginRight, marginBottom, marginLeft, mx, my,\r\n gap, rowGap, columnGap,\r\n flexDirection, flexWrap, alignItems, justifyContent, gridTemplateColumns, gridTemplateRows,\r\n flex, flexGrow, flexShrink, flexBasis, alignSelf, justifySelf, gridColumn, gridRow, order,\r\n position, top, right, bottom, left, inset, zIndex,\r\n overflow, overflowX, overflowY,\r\n backgroundColor, color, borderRadius, boxShadow,\r\n border, borderColor, borderWidth, borderStyle, textAlign, cursor, opacity,\r\n style,\r\n className,\r\n children,\r\n ...rest\r\n }\r\n) => {\r\n const generatedClassName = BOX_STYLES.root({\r\n display,\r\n width, height, minWidth, maxWidth, minHeight, maxHeight,\r\n padding, paddingTop, paddingRight, paddingBottom, paddingLeft, px, py,\r\n margin, marginTop, marginRight, marginBottom, marginLeft, mx, my,\r\n gap, rowGap, columnGap,\r\n flexDirection, flexWrap, alignItems, justifyContent, gridTemplateColumns, gridTemplateRows,\r\n flex, flexGrow, flexShrink, flexBasis, alignSelf, justifySelf, gridColumn, gridRow, order,\r\n position, top, right, bottom, left, inset, zIndex,\r\n overflow, overflowX, overflowY,\r\n backgroundColor, color, borderRadius, boxShadow,\r\n border, borderColor, borderWidth, borderStyle, textAlign, cursor, opacity,\r\n })\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...rest}\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 ...rest\r\n }\r\n) => (\r\n <Box\r\n display={display}\r\n flexDirection={flexDirection}\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 { 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\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 alignItems: 'center',\r\n gap: theme.spacing.sm,\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 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 // Font-size is set on the wrapper so the native input inherits it via `fontSize: 'inherit'`.\r\n sm: { height: '2rem', paddingLeft: theme.spacing.sm, paddingRight: theme.spacing.xs, fontSize: theme.fontSize.xs },\r\n md: { height: '2.5rem', paddingLeft: theme.spacing.sm, paddingRight: theme.spacing.xs, fontSize: theme.fontSize.sm },\r\n lg: { height: '3rem', paddingLeft: theme.spacing.md, paddingRight: theme.spacing.sm, 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\nexport const TEXTFIELD_STYLES = createStyles((theme) => ({\r\n /** Visually hidden native input — fills the remaining space inside the wrapper. */\r\n input: {\r\n flex: 1,\r\n minWidth: 0,\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 padding: '0',\r\n '&::placeholder': { color: theme.colors.textTertiary },\r\n '&:disabled': { cursor: 'not-allowed', color: theme.colors.textDisabled },\r\n },\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 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 gap: theme.spacing['2xs'],\r\n },\r\n}), { id: 'textfield-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 { 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_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 ...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 return (\r\n <Stack\r\n flexDirection={'column'}\r\n gap={'xs'}\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 >\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-describedby={helperText !== undefined ? helperId : undefined}\r\n aria-errormessage={status === 'error' && helperText !== undefined ? helperId : undefined}\r\n className={TEXTFIELD_STYLES.input}\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\nexport const MENU_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' })\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'\nimport type { UseMenuPositionOptions, UseMenuPositionResult } from '@hooks/components/overlay/use-menu-position/useMenuPosition.types'\n\nconst VIEWPORT_MARGIN_PX = 8\n\n/**\n * Computes and continuously updates the `position: fixed` style for a menu panel.\n *\n * Positioning strategy:\n * - Preferred top: anchorBottom + gap (menu opens downward from anchor)\n * - If the menu bottom would exceed the viewport: shift `top` upward so the menu\n * bottom lands at viewportHeight - VIEWPORT_MARGIN_PX. `top` can go above\n * anchor.bottom when the menu is tall, but it never goes off the top of the screen.\n * - Horizontal: clamped so the menu never overflows the left or right viewport edges.\n *\n * Uses a two-pass strategy: first render with `menuHeight = 0` (preferredTop),\n * then a rAF recompute with the actual rendered height to apply the offset.\n */\nexport const useMenuPosition = ({\n anchorEl,\n open,\n menuRef,\n minWidth,\n gap = 4,\n}: UseMenuPositionOptions): UseMenuPositionResult => {\n const [style, setStyle] = useState<CSSProperties>({})\n\n const computePosition = useCallback(() => {\n if (!anchorEl) {return}\n\n const anchor = anchorEl.getBoundingClientRect()\n const menuEl = menuRef.current\n const menuHeight = menuEl?.offsetHeight ?? 0\n const menuWidth = menuEl?.offsetWidth ?? 0\n\n // --- Vertical ---\n const preferredTop = anchor.bottom + gap\n const viewportBottom = window.innerHeight - VIEWPORT_MARGIN_PX\n\n let top = preferredTop\n if (menuHeight > 0 && preferredTop + menuHeight > viewportBottom) {\n // Shift up so the bottom of the menu aligns with the viewport bottom\n top = viewportBottom - menuHeight\n // Never go above the top of the viewport\n top = Math.max(VIEWPORT_MARGIN_PX, top)\n }\n\n // --- Horizontal ---\n const resolvedMinWidth = typeof minWidth === 'number' ? minWidth : anchor.width\n const effectiveWidth = Math.max(menuWidth, resolvedMinWidth)\n const maxLeft = window.innerWidth - effectiveWidth - VIEWPORT_MARGIN_PX\n const left = Math.max(VIEWPORT_MARGIN_PX, Math.min(anchor.left, maxLeft))\n\n setStyle({ top, left, minWidth: minWidth ?? anchor.width })\n }, [anchorEl, menuRef, minWidth, gap])\n\n // First pass: compute as soon as the menu opens (menuHeight = 0 → preferredTop)\n useLayoutEffect(() => {\n if (open) {computePosition()}\n else {setStyle({})}\n }, [open, computePosition])\n\n // Second pass: recompute after the panel renders to get actual height/width\n useEffect(() => {\n if (!open) {return}\n const id = requestAnimationFrame(computePosition)\n return () => cancelAnimationFrame(id)\n }, [open, computePosition])\n\n // Keep position in sync on scroll (capture = all scroll containers) and resize\n useEffect(() => {\n if (!open) {return}\n window.addEventListener('scroll', computePosition, true)\n window.addEventListener('resize', computePosition)\n return () => {\n window.removeEventListener('scroll', computePosition, true)\n window.removeEventListener('resize', computePosition)\n }\n }, [open, computePosition])\n\n return { style }\n}\n","import { CSSProperties, RefObject, useCallback, useEffect, useId, 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\n\r\nimport type { MenuProps } from '@components/overlay/menu/Menu.props'\r\n\r\ntype UseMenuParams = Pick<MenuProps, 'open' | 'onClose' | 'anchorEl' | 'minWidth'>\r\n\r\ntype UseMenuReturn = {\r\n /** Ref to attach to the listbox panel. */\r\n panelRef: RefObject<HTMLDivElement | null>\r\n /** Computed inline positioning style for the panel. */\r\n style: CSSProperties\r\n /** Id of the currently focused option, for the listbox's `aria-activedescendant`. */\r\n activeDescendant: string | undefined\r\n}\r\n\r\n/**\r\n * Business logic for the Menu component: positioning, roving keyboard\r\n * navigation (Arrow/Home/End/Enter), Escape-to-close, and keeping the\r\n * `data-focused` attribute in sync with the active option.\r\n */\r\nexport const useMenu = ({ open, onClose, anchorEl, minWidth }: UseMenuParams): UseMenuReturn => {\r\n const panelRef = useRef<HTMLDivElement>(null)\r\n const baseId = useId()\r\n const [focusedIndex, setFocusedIndex] = useState(-1)\r\n const [activeDescendant, setActiveDescendant] = useState<string | undefined>(undefined)\r\n\r\n const { style } = useMenuPosition({ anchorEl, open, menuRef: panelRef, minWidth })\r\n\r\n /** Returns all non-disabled option elements inside the panel. */\r\n const getOptions = useCallback((): HTMLElement[] => {\r\n if (!panelRef.current) {return []}\r\n return Array.from(\r\n panelRef.current.querySelectorAll<HTMLElement>('[role=\"option\"]:not([data-disabled])')\r\n )\r\n }, [])\r\n\r\n // On open: focus panel, initialise focusedIndex to selected item (or 0)\r\n useEffect(() => {\r\n if (!open) {\r\n setFocusedIndex(-1)\r\n return\r\n }\r\n const raf = requestAnimationFrame(() => {\r\n panelRef.current?.focus()\r\n const options = getOptions()\r\n const selectedIdx = options.findIndex((el) => el.getAttribute('aria-selected') === 'true')\r\n setFocusedIndex(selectedIdx >= 0 ? selectedIdx : 0)\r\n })\r\n return () => cancelAnimationFrame(raf)\r\n }, [open, getOptions])\r\n\r\n // Keep data-focused (visual highlight) and aria-activedescendant (screen reader\r\n // announcement) in sync with focusedIndex. Each option is assigned a stable id\r\n // so the listbox can reference the active one via aria-activedescendant.\r\n useEffect(() => {\r\n if (!open) {\r\n setActiveDescendant(undefined)\r\n return\r\n }\r\n const options = getOptions()\r\n let activeId: string | undefined\r\n options.forEach((el, idx) => {\r\n if (!el.id) {\r\n el.id = `${baseId}-option-${idx}`\r\n }\r\n if (idx === focusedIndex) {\r\n el.setAttribute('data-focused', 'true')\r\n el.scrollIntoView({ block: 'nearest' })\r\n activeId = el.id\r\n } else {\r\n el.removeAttribute('data-focused')\r\n }\r\n })\r\n setActiveDescendant(activeId)\r\n }, [focusedIndex, open, getOptions, baseId])\r\n\r\n useKeyPress(\r\n {\r\n Escape: onClose,\r\n ArrowDown: (e) => {\r\n e.preventDefault()\r\n setFocusedIndex((prev) => {\r\n const count = getOptions().length\r\n return count === 0 ? prev : (prev + 1) % count\r\n })\r\n },\r\n ArrowUp: (e) => {\r\n e.preventDefault()\r\n setFocusedIndex((prev) => {\r\n const count = getOptions().length\r\n return count === 0 ? prev : (prev - 1 + count) % count\r\n })\r\n },\r\n Home: (e) => {\r\n e.preventDefault()\r\n const count = getOptions().length\r\n if (count > 0) {setFocusedIndex(0)}\r\n },\r\n End: (e) => {\r\n e.preventDefault()\r\n const count = getOptions().length\r\n if (count > 0) {setFocusedIndex(count - 1)}\r\n },\r\n Enter: () => {\r\n const options = getOptions()\r\n if (focusedIndex >= 0) {options[focusedIndex]?.click()}\r\n },\r\n },\r\n { enabled: open }\r\n )\r\n\r\n return { panelRef, style, activeDescendant }\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, useId } from 'react'\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 = useId()\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={label !== undefined ? labelId : undefined}\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 { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const MENU_ITEM_STYLES = createStyles((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n root: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing.sm,\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 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}`,\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-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 }\r\n}, { id: 'menu-item' })\r\n","import type { FC } from 'react'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Text } from '@components/foundation/text'\r\nimport { MENU_ITEM_STYLES } from '@components/overlay/menu/menu-item/MenuItem.styles'\r\nimport type { MenuItemProps } from '@components/overlay/menu/menu-item/MenuItem.props'\r\n\r\nconst MenuItem: FC<MenuItemProps> = ({\r\n ref,\r\n label,\r\n icon,\r\n selected,\r\n focused,\r\n disabled,\r\n onClick,\r\n ...rest\r\n}) => {\r\n return (\r\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\r\n <li\r\n ref={ref}\r\n role={'option'}\r\n aria-selected={selected}\r\n aria-disabled={disabled}\r\n data-selected={selected || undefined}\r\n data-focused={focused || undefined}\r\n data-disabled={disabled || undefined}\r\n className={MENU_ITEM_STYLES.root}\r\n onClick={disabled ? undefined : onClick}\r\n {...rest}\r\n >\r\n {icon !== undefined && (\r\n <Icon\r\n icon={icon}\r\n size={'sm'}\r\n strokeColor={selected ? 'primaryMain' : 'textSecondary'}\r\n />\r\n )}\r\n <Text\r\n variant={'span'}\r\n fontSize={'sm'}\r\n >\r\n {label}\r\n </Text>\r\n </li>\r\n )\r\n}\r\n\r\nMenuItem.displayName = 'MenuItem'\r\n\r\nexport default MenuItem\r\n","import { FC } from 'react'\nimport { createPortal } from 'react-dom'\nimport { MENU_STYLES } from '@components/overlay/menu/Menu.styles'\nimport { useMenu } from '@components/overlay/menu/utils/useMenu.utils'\nimport MenuGroup from '@components/overlay/menu/menu-group/MenuGroup'\nimport MenuItem from '@components/overlay/menu/menu-item/MenuItem'\nimport type { MenuProps } from '@components/overlay/menu/Menu.props'\nimport type { MenuComponent } from '@components/overlay/menu/Menu.types'\n\nconst MenuBase: FC<MenuProps> = ({\n open,\n onClose,\n anchorEl,\n minWidth,\n maxHeight = '20rem',\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n children,\n}) => {\n const { panelRef, style, activeDescendant } = useMenu({ open, onClose, anchorEl, minWidth })\n\n if (!open) {return null}\n\n return createPortal(\n <>\n <div\n className={MENU_STYLES.backdrop}\n onClick={onClose}\n aria-hidden={true}\n />\n <div\n ref={panelRef}\n id={id}\n role={'listbox'}\n tabIndex={-1}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-activedescendant={activeDescendant}\n className={MENU_STYLES.panel}\n style={{ ...style, maxHeight, outline: 'none' }}\n >\n {children}\n </div>\n </>,\n document.body\n )\n}\n\nMenuBase.displayName = 'Menu'\n\nconst Menu = MenuBase as MenuComponent\nMenu.Item = MenuItem\nMenu.Group = MenuGroup\n\nexport default Menu\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 '&[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': {\r\n borderColor: c.primaryMain,\r\n outline: 'none',\r\n },\r\n },\r\n error: {\r\n borderColor: c.errorMain,\r\n ':focus-visible': {\r\n outline: 'none',\r\n },\r\n },\r\n success: {\r\n borderColor: c.successMain,\r\n ':focus-visible': {\r\n outline: 'none',\r\n },\r\n },\r\n warning: {\r\n borderColor: c.warningMain,\r\n ':focus-visible': {\r\n outline: 'none',\r\n },\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 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={'textSecondary'}\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 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 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 label={opt.label}\r\n icon={opt.icon}\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\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': {\r\n outline: '2px solid transparent',\r\n boxShadow: `0 0 0 2px ${c.primarySubtleActive}`,\r\n },\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 { 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 { 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 { 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.slow}`,\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 * 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 * @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 [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), duration)\r\n return () => clearTimeout(timeout)\r\n }\r\n }, [isOpen, duration])\r\n\r\n return { isVisible, isFadingIn }\r\n}\r\n","import { useEffect } from 'react'\r\n\r\n/**\r\n * Locks scrolling on `document.body` while `active` is true.\r\n *\r\n * Preserves the current scroll position and keeps the scrollbar gutter\r\n * (`overflow-y: scroll`) to avoid horizontal layout shift when the scrollbar\r\n * disappears. The original styles and scroll position are restored on cleanup.\r\n *\r\n * @example useBodyScrollLock(isDialogOpen)\r\n */\r\nexport const useBodyScrollLock = (active: boolean): void => {\r\n useEffect(() => {\r\n if (!active) {return}\r\n\r\n const scrollY = window.scrollY\r\n const body = document.body\r\n body.style.position = 'fixed'\r\n body.style.top = `-${scrollY}px`\r\n body.style.overflowY = 'scroll'\r\n body.style.width = '100%'\r\n\r\n return () => {\r\n body.style.position = ''\r\n body.style.top = ''\r\n body.style.overflowY = ''\r\n body.style.width = ''\r\n window.scrollTo(0, scrollY)\r\n }\r\n }, [active])\r\n}\r\n","import { Box } from '@/components'\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'\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'\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\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.slow}, 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.primarySubtle,\r\n color: theme.colors.primaryMain,\r\n ':hover': { backgroundColor: theme.colors.primarySubtleHover, color: theme.colors.primaryHover },\r\n ':active': { backgroundColor: theme.colors.primarySubtleActive, color: theme.colors.primaryActive },\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': { boxShadow: theme.shadows.focus },\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, Text } from '@/components'\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)\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 onClick?.()\r\n }\r\n\r\n const innerContent = (\r\n <Stack\r\n width={'100%'}\r\n justifyContent={'start'}\r\n >\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 {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 >\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 { 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\n\r\nimport { Stack } from '@components/layout/stack'\r\nimport { Text } from '@components/foundation/text'\r\nimport { useAlertContext } from '@components/overlay/alert/Alert.context'\r\n\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_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 }) => {\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 >\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 )\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 { 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\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\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-height variant on mobile (applied via `fullscreen` prop)\r\n panelFullscreen: {\r\n [`@media (${MEDIA_MAX.sm})`]: {\r\n height: '100dvh',\r\n maxHeight: 'none',\r\n },\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 { 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 { 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 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","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 (Slate neutral)\r\n secondaryMain: '#f1f5f9',\r\n secondaryHover: '#e2e8f0',\r\n secondaryActive: '#cbd5e1',\r\n secondarySubtle: '#f8fafc',\r\n secondarySubtleHover: '#f1f5f9',\r\n secondarySubtleActive: '#e2e8f0',\r\n secondaryDisabled: '#e2e8f0',\r\n secondaryOn: '#1e293b',\r\n\r\n // Border\r\n borderSubtle: '#f1f5f9',\r\n borderMain: '#e2e8f0',\r\n borderStrong: '#cbd5e1',\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: '#1d4ed8',\r\n linkActive: '#2563eb',\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: '150ms ease-in-out',\r\n normal: '250ms ease-in-out',\r\n slow: '350ms 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: '#0f172a',\r\n surfacePaper: '#1e293b',\r\n surfaceElevated: '#273548',\r\n\r\n // Text\r\n textPrimary: '#f8fafc',\r\n textSecondary: '#cbd5e1',\r\n textTertiary: '#64748b',\r\n textDisabled: '#475569',\r\n textInverse: '#0f172a',\r\n\r\n // Primary (Indigo brand, lighter for dark bg)\r\n primaryMain: '#a5b4fc',\r\n primaryHover: '#c7d2fe',\r\n primaryActive: '#ddd6fe',\r\n primarySubtle: '#1e1b4b',\r\n primarySubtleHover: '#2d2a5e',\r\n primarySubtleActive: '#3b3878',\r\n primaryDisabled: '#4338ca',\r\n primaryOn: '#ffffff',\r\n\r\n // Secondary (Slate dark)\r\n secondaryMain: '#1e293b',\r\n secondaryHover: '#273548',\r\n secondaryActive: '#334155',\r\n secondarySubtle: '#0f172a',\r\n secondarySubtleHover: '#1e293b',\r\n secondarySubtleActive: '#273548',\r\n secondaryDisabled: '#1e293b',\r\n secondaryOn: '#f1f5f9',\r\n\r\n // Border\r\n borderSubtle: '#1e293b',\r\n borderMain: '#334155',\r\n borderStrong: '#475569',\r\n\r\n // Disabled state\r\n disabledMain: '#334155',\r\n disabledText: '#475569',\r\n\r\n // Success (Emerald)\r\n successMain: '#6ee7b7',\r\n successHover: '#a7f3d0',\r\n successActive: '#d1fae5',\r\n successSubtle: '#052e1f',\r\n successSubtleHover: '#063d29',\r\n successSubtleActive: '#084e35',\r\n successOn: '#0a0a0a',\r\n\r\n // Warning (Amber)\r\n warningMain: '#fcd34d',\r\n warningHover: '#fde68a',\r\n warningActive: '#fef3c7',\r\n warningSubtle: '#3a2a05',\r\n warningSubtleHover: '#4d390a',\r\n warningSubtleActive: '#62480e',\r\n warningOn: '#0a0a0a',\r\n\r\n // Error (Red)\r\n errorMain: '#fca5a5',\r\n errorHover: '#fecaca',\r\n errorActive: '#fee2e2',\r\n errorSubtle: '#3a0d0d',\r\n errorSubtleHover: '#4d1212',\r\n errorSubtleActive: '#621818',\r\n errorOn: '#0a0a0a',\r\n\r\n // Info (Sky)\r\n infoMain: '#7dd3fc',\r\n infoHover: '#bae6fd',\r\n infoActive: '#e0f2fe',\r\n infoSubtle: '#08263a',\r\n infoSubtleHover: '#0a3352',\r\n infoSubtleActive: '#0c4068',\r\n infoOn: '#0a0a0a',\r\n\r\n // Orange\r\n orangeMain: '#fdba74',\r\n orangeHover: '#fed7aa',\r\n orangeActive: '#ffedd5',\r\n orangeSubtle: '#3b1906',\r\n orangeSubtleHover: '#4f2309',\r\n orangeSubtleActive: '#642d0d',\r\n orangeOn: '#0a0a0a',\r\n\r\n // Pink\r\n pinkMain: '#f9a8d4',\r\n pinkHover: '#fbcfe8',\r\n pinkActive: '#fce7f3',\r\n pinkSubtle: '#3d0f28',\r\n pinkSubtleHover: '#511539',\r\n pinkSubtleActive: '#66204b',\r\n pinkOn: '#0a0a0a',\r\n\r\n // Violet\r\n violetMain: '#c4b5fd',\r\n violetHover: '#ddd6fe',\r\n violetActive: '#ede9fe',\r\n violetSubtle: '#22103f',\r\n violetSubtleHover: '#2f1856',\r\n violetSubtleActive: '#3d2270',\r\n violetOn: '#0a0a0a',\r\n\r\n // Default (Slate)\r\n defaultMain: '#94a3b8',\r\n defaultHover: '#cbd5e1',\r\n defaultActive: '#e2e8f0',\r\n defaultSubtle: '#1e293b',\r\n defaultSubtleHover: '#273548',\r\n defaultSubtleActive: '#334155',\r\n\r\n // Skeleton\r\n skeletonPrimary: '#1e293b',\r\n skeletonSecondary: '#3d5068',\r\n\r\n // Link (Blue)\r\n linkMain: '#93c5fd',\r\n linkHover: '#bfdbfe',\r\n linkActive: '#dbeafe',\r\n linkDisabled: '#1e40af',\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":["_jsx","LABEL_FONT_SIZE","ICON_SIZE","_jsxs","VIEWPORT_MARGIN_PX","_Fragment","ICON_SIZE_MAP","TRANSITION"],"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/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/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/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/foundation/skeleton/Skeleton.styles.ts","../../src/components/foundation/skeleton/Skeleton.tsx","../../src/components/forms/form/Form.styles.ts","../../src/components/forms/form/Form.tsx","../../src/components/forms/switch/Switch.styles.ts","../../src/hooks/common/use-controllable-state/useControllableState.ts","../../src/components/forms/switch/utils/useSwitch.utils.ts","../../src/components/forms/switch/Switch.tsx","../../src/components/layout/box/Box.styles.ts","../../src/components/layout/box/Box.tsx","../../src/components/layout/stack/Stack.tsx","../../src/components/forms/_common/form-helper-text/FormHelperText.tsx","../../src/components/forms/text-field/TextField.styles.ts","../../src/hooks/common/use-merged-refs/useMergedRefs.ts","../../src/components/forms/text-field/utils/useTextField.utils.ts","../../src/components/forms/text-field/TextField.tsx","../../src/components/overlay/menu/Menu.styles.ts","../../src/hooks/common/use-key-press/useKeyPress.ts","../../src/hooks/components/overlay/use-menu-position/useMenuPosition.ts","../../src/components/overlay/menu/utils/useMenu.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/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/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/grid/Grid.styles.ts","../../src/components/layout/grid/Grid.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/hooks/common/use-body-scroll-lock/useBodyScrollLock.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/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/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.tsx","../../src/components/overlay/dialog/Dialog.styles.ts","../../src/components/overlay/dialog/Dialog.context.ts","../../src/hooks/common/use-focus-trap/useFocusTrap.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/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 ChevronDownIcon from '@resources/assets/icons/ChevronDownIcon.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 { SpinnerIcon }\r\n\r\nexport const IconRegistry = {\r\n AlertErrorIcon,\r\n AlertInfoIcon,\r\n AlertSuccessIcon,\r\n AlertWarningIcon,\r\n ChevronDownIcon,\r\n CloseIcon,\r\n EyeIcon,\r\n EyeSlashIcon,\r\n SpinnerIcon,\r\n} as const\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 = 250\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 type { StyleWithPseudos } from '@aurora-ds/theme'\n\nimport type { ButtonColor, ButtonVariant, } from '@components/actions/button/button.types'\nimport type { ButtonIntentMap, ButtonVariantTheme } from '@components/actions/_common/buttonIntent.types'\nimport { DEFAULT_BUTTON_HEIGHT } from '@constants/app.constants'\n\n/**\n * Returns the complete root styles for an action button (base + color/variant),\n * all in one object so CSS transitions work correctly.\n * Size-specific styles (height, padding, fontSize) are added by the caller.\n */\nexport const buildActionButtonRootStyle = (\n theme: ButtonVariantTheme,\n variant: ButtonVariant,\n color: ButtonColor,\n): StyleWithPseudos => {\n const c = theme.colors\n\n const intents: ButtonIntentMap = {\n primary: {\n main: c.primaryMain, hover: c.primaryHover, active: c.primaryActive,\n on: c.primaryOn, subtle: c.primarySubtle, subtleHover: c.primarySubtleHover, subtleActive: c.primarySubtleActive,\n fg: c.primaryMain, fgHover: c.primaryHover, border: c.primaryMain,\n },\n secondary: {\n main: c.secondaryMain, hover: c.secondaryHover, active: c.secondaryActive,\n on: c.secondaryOn, subtle: c.secondarySubtle, subtleHover: c.secondarySubtleHover, subtleActive: c.secondarySubtleActive,\n fg: c.secondaryOn, fgHover: c.secondaryOn, border: c.borderStrong,\n },\n neutral: {\n main: c.defaultMain, hover: c.defaultHover, active: c.defaultActive,\n on: c.textInverse, subtle: c.defaultSubtle, subtleHover: c.defaultSubtleHover, subtleActive: c.defaultSubtleActive,\n fg: c.defaultMain, fgHover: c.defaultHover, border: c.defaultMain,\n },\n info: {\n main: c.infoMain, hover: c.infoHover, active: c.infoActive,\n on: c.infoOn, subtle: c.infoSubtle, subtleHover: c.infoSubtleHover, subtleActive: c.infoSubtleActive,\n fg: c.infoMain, fgHover: c.infoHover, border: c.infoMain,\n },\n success: {\n main: c.successMain, hover: c.successHover, active: c.successActive,\n on: c.successOn, subtle: c.successSubtle, subtleHover: c.successSubtleHover, subtleActive: c.successSubtleActive,\n fg: c.successMain, fgHover: c.successHover, border: c.successMain,\n },\n warning: {\n main: c.warningMain, hover: c.warningHover, active: c.warningActive,\n on: c.warningOn, subtle: c.warningSubtle, subtleHover: c.warningSubtleHover, subtleActive: c.warningSubtleActive,\n fg: c.warningMain, fgHover: c.warningHover, border: c.warningMain,\n },\n error: {\n main: c.errorMain, hover: c.errorHover, active: c.errorActive,\n on: c.errorOn, subtle: c.errorSubtle, subtleHover: c.errorSubtleHover, subtleActive: c.errorSubtleActive,\n fg: c.errorMain, fgHover: c.errorHover, border: c.errorMain,\n },\n }\n\n const intent = intents[color]\n\n const colorVariantStyles: StyleWithPseudos =\n variant === 'contained'\n ? {\n backgroundColor: intent.main,\n borderColor: intent.main,\n color: intent.on,\n boxShadow: theme.shadows.xs,\n ':hover:not(:disabled)': { backgroundColor: intent.hover, borderColor: intent.hover, boxShadow: theme.shadows.sm },\n ':active:not(:disabled)': { backgroundColor: intent.active, borderColor: intent.active, boxShadow: theme.shadows.none },\n }\n : variant === 'outlined'\n ? {\n backgroundColor: 'transparent',\n borderColor: intent.border,\n color: intent.fg,\n ':hover:not(:disabled)': { backgroundColor: intent.subtleHover, color: intent.fgHover },\n ':active:not(:disabled)': { backgroundColor: intent.subtleActive, borderColor: intent.active, color: intent.active },\n }\n : {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n color: intent.fg,\n ':hover:not(:disabled)': { backgroundColor: intent.subtleHover, color: intent.fgHover },\n ':active:not(:disabled)': { backgroundColor: intent.subtleActive, color: intent.active },\n }\n\n return {\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxSizing: 'border-box',\n border: '1px solid transparent',\n borderRadius: theme.radius.md,\n fontFamily: 'inherit',\n userSelect: 'none',\n height: DEFAULT_BUTTON_HEIGHT,\n cursor: 'pointer',\n outline: 'none',\n transition: `background-color ${theme.transition.normal}, border-color ${theme.transition.normal}, color ${theme.transition.normal}, box-shadow ${theme.transition.normal}`,\n ...colorVariantStyles,\n ':focus-visible': { boxShadow: theme.shadows.focus },\n ':disabled': { cursor: 'not-allowed', opacity: theme.opacity.high, boxShadow: 'none' },\n }\n}\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'\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\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 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 === 'always' ? 'underline' : 'none',\r\n cursor: 'pointer',\r\n borderRadius: theme.radius.xs,\r\n transition: `color ${theme.transition.fast}`,\r\n ':hover:not([aria-disabled=\"true\"])': {\r\n color: hoverColor,\r\n textDecoration: underline !== 'none' ? 'underline' : 'none',\r\n },\r\n ':active:not([aria-disabled=\"true\"])': {\r\n color: activeColor,\r\n },\r\n ':focus-visible': {\r\n outline: `2px solid ${mainColor}`,\r\n outlineOffset: '2px',\r\n },\r\n '&[aria-disabled=\"true\"]': {\r\n color: disabledColor,\r\n cursor: 'not-allowed',\r\n textDecoration: 'none',\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'\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'>About</Link>\n * @example <Link href='https://example.com' external>External site</Link>\n * @example <Link href='/profile' underline='always' startIcon={UserIcon}>Profile</Link>\n * @example <Link href='/terms' underline='none'>Terms</Link>\n * @example <Link onClick={() => navigate('/about')}>About (SPA)</Link>\n */\nconst Link: FC<LinkProps> = (\n {\n ref,\n underline = 'hover',\n color = 'default',\n external = false,\n disabled = false,\n startIcon: StartIcon,\n endIcon: EndIcon,\n children,\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 onClick?.(e)\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 {children}\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 { 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 } 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 const trigger = !isEffectivelyDisabled && isValidElement<Record<string, unknown>>(children)\r\n ? cloneElement(children, {\r\n 'aria-describedby': tooltipId,\r\n ...(hideOnClick && { onClick: handleClick }),\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\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': {\r\n boxShadow: theme.shadows.focus,\r\n },\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 { 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 { 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 CompoundVariant, createStyles, createVariants, type StyleWithPseudos } from '@aurora-ds/theme'\r\n\r\nimport type { SwitchColor } from '@components/forms/switch/switch.types'\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 },\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 { 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 { 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 } 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 { 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> = (\r\n {\r\n ref,\r\n display,\r\n width, height, minWidth, maxWidth, minHeight, maxHeight,\r\n padding, paddingTop, paddingRight, paddingBottom, paddingLeft, px, py,\r\n margin, marginTop, marginRight, marginBottom, marginLeft, mx, my,\r\n gap, rowGap, columnGap,\r\n flexDirection, flexWrap, alignItems, justifyContent, gridTemplateColumns, gridTemplateRows,\r\n flex, flexGrow, flexShrink, flexBasis, alignSelf, justifySelf, gridColumn, gridRow, order,\r\n position, top, right, bottom, left, inset, zIndex,\r\n overflow, overflowX, overflowY,\r\n backgroundColor, color, borderRadius, boxShadow,\r\n border, borderColor, borderWidth, borderStyle, textAlign, cursor, opacity,\r\n style,\r\n className,\r\n children,\r\n ...rest\r\n }\r\n) => {\r\n const generatedClassName = BOX_STYLES.root({\r\n display,\r\n width, height, minWidth, maxWidth, minHeight, maxHeight,\r\n padding, paddingTop, paddingRight, paddingBottom, paddingLeft, px, py,\r\n margin, marginTop, marginRight, marginBottom, marginLeft, mx, my,\r\n gap, rowGap, columnGap,\r\n flexDirection, flexWrap, alignItems, justifyContent, gridTemplateColumns, gridTemplateRows,\r\n flex, flexGrow, flexShrink, flexBasis, alignSelf, justifySelf, gridColumn, gridRow, order,\r\n position, top, right, bottom, left, inset, zIndex,\r\n overflow, overflowX, overflowY,\r\n backgroundColor, color, borderRadius, boxShadow,\r\n border, borderColor, borderWidth, borderStyle, textAlign, cursor, opacity,\r\n })\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cx(generatedClassName, className)}\r\n style={style}\r\n {...rest}\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 ...rest\r\n }\r\n) => (\r\n <Box\r\n display={display}\r\n flexDirection={flexDirection}\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 { 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\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 alignItems: 'center',\r\n gap: theme.spacing.sm,\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 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 // Font-size is set on the wrapper so the native input inherits it via `fontSize: 'inherit'`.\r\n sm: { height: '2rem', paddingLeft: theme.spacing.sm, paddingRight: theme.spacing.xs, fontSize: theme.fontSize.xs },\r\n md: { height: '2.5rem', paddingLeft: theme.spacing.sm, paddingRight: theme.spacing.xs, fontSize: theme.fontSize.sm },\r\n lg: { height: '3rem', paddingLeft: theme.spacing.md, paddingRight: theme.spacing.sm, 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\nexport const TEXTFIELD_STYLES = createStyles((theme) => ({\r\n /** Visually hidden native input — fills the remaining space inside the wrapper. */\r\n input: {\r\n flex: 1,\r\n minWidth: 0,\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 padding: '0',\r\n '&::placeholder': { color: theme.colors.textTertiary },\r\n '&:disabled': { cursor: 'not-allowed', color: theme.colors.textDisabled },\r\n },\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 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 gap: theme.spacing['2xs'],\r\n },\r\n}), { id: 'textfield-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 { 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_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 ...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 return (\r\n <Stack\r\n flexDirection={'column'}\r\n gap={'xs'}\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 >\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-describedby={helperText !== undefined ? helperId : undefined}\r\n aria-errormessage={status === 'error' && helperText !== undefined ? helperId : undefined}\r\n className={TEXTFIELD_STYLES.input}\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\nexport const MENU_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' })\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'\nimport type { UseMenuPositionOptions, UseMenuPositionResult } from '@hooks/components/overlay/use-menu-position/useMenuPosition.types'\n\nconst VIEWPORT_MARGIN_PX = 8\n\n/**\n * Computes and continuously updates the `position: fixed` style for a menu panel.\n *\n * Positioning strategy:\n * - Preferred top: anchorBottom + gap (menu opens downward from anchor)\n * - If the menu bottom would exceed the viewport: shift `top` upward so the menu\n * bottom lands at viewportHeight - VIEWPORT_MARGIN_PX. `top` can go above\n * anchor.bottom when the menu is tall, but it never goes off the top of the screen.\n * - Horizontal: clamped so the menu never overflows the left or right viewport edges.\n *\n * Uses a two-pass strategy: first render with `menuHeight = 0` (preferredTop),\n * then a rAF recompute with the actual rendered height to apply the offset.\n */\nexport const useMenuPosition = ({\n anchorEl,\n open,\n menuRef,\n minWidth,\n gap = 4,\n}: UseMenuPositionOptions): UseMenuPositionResult => {\n const [style, setStyle] = useState<CSSProperties>({})\n\n const computePosition = useCallback(() => {\n if (!anchorEl) {return}\n\n const anchor = anchorEl.getBoundingClientRect()\n const menuEl = menuRef.current\n const menuHeight = menuEl?.offsetHeight ?? 0\n const menuWidth = menuEl?.offsetWidth ?? 0\n\n // --- Vertical ---\n const preferredTop = anchor.bottom + gap\n const viewportBottom = window.innerHeight - VIEWPORT_MARGIN_PX\n\n let top = preferredTop\n if (menuHeight > 0 && preferredTop + menuHeight > viewportBottom) {\n // Shift up so the bottom of the menu aligns with the viewport bottom\n top = viewportBottom - menuHeight\n // Never go above the top of the viewport\n top = Math.max(VIEWPORT_MARGIN_PX, top)\n }\n\n // --- Horizontal ---\n const resolvedMinWidth = typeof minWidth === 'number' ? minWidth : anchor.width\n const effectiveWidth = Math.max(menuWidth, resolvedMinWidth)\n const maxLeft = window.innerWidth - effectiveWidth - VIEWPORT_MARGIN_PX\n const left = Math.max(VIEWPORT_MARGIN_PX, Math.min(anchor.left, maxLeft))\n\n setStyle({ top, left, minWidth: minWidth ?? anchor.width })\n }, [anchorEl, menuRef, minWidth, gap])\n\n // First pass: compute as soon as the menu opens (menuHeight = 0 → preferredTop)\n useLayoutEffect(() => {\n if (open) {computePosition()}\n else {setStyle({})}\n }, [open, computePosition])\n\n // Second pass: recompute after the panel renders to get actual height/width\n useEffect(() => {\n if (!open) {return}\n const id = requestAnimationFrame(computePosition)\n return () => cancelAnimationFrame(id)\n }, [open, computePosition])\n\n // Keep position in sync on scroll (capture = all scroll containers) and resize\n useEffect(() => {\n if (!open) {return}\n window.addEventListener('scroll', computePosition, true)\n window.addEventListener('resize', computePosition)\n return () => {\n window.removeEventListener('scroll', computePosition, true)\n window.removeEventListener('resize', computePosition)\n }\n }, [open, computePosition])\n\n return { style }\n}\n","import { CSSProperties, RefObject, useCallback, useEffect, useId, 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\n\r\nimport type { MenuProps } from '@components/overlay/menu/Menu.props'\r\n\r\ntype UseMenuParams = Pick<MenuProps, 'open' | 'onClose' | 'anchorEl' | 'minWidth'>\r\n\r\ntype UseMenuReturn = {\r\n /** Ref to attach to the listbox panel. */\r\n panelRef: RefObject<HTMLDivElement | null>\r\n /** Computed inline positioning style for the panel. */\r\n style: CSSProperties\r\n /** Id of the currently focused option, for the listbox's `aria-activedescendant`. */\r\n activeDescendant: string | undefined\r\n}\r\n\r\n/**\r\n * Business logic for the Menu component: positioning, roving keyboard\r\n * navigation (Arrow/Home/End/Enter), Escape-to-close, and keeping the\r\n * `data-focused` attribute in sync with the active option.\r\n */\r\nexport const useMenu = ({ open, onClose, anchorEl, minWidth }: UseMenuParams): UseMenuReturn => {\r\n const panelRef = useRef<HTMLDivElement>(null)\r\n const baseId = useId()\r\n const [focusedIndex, setFocusedIndex] = useState(-1)\r\n const [activeDescendant, setActiveDescendant] = useState<string | undefined>(undefined)\r\n\r\n const { style } = useMenuPosition({ anchorEl, open, menuRef: panelRef, minWidth })\r\n\r\n /** Returns all non-disabled option elements inside the panel. */\r\n const getOptions = useCallback((): HTMLElement[] => {\r\n if (!panelRef.current) {return []}\r\n return Array.from(\r\n panelRef.current.querySelectorAll<HTMLElement>('[role=\"option\"]:not([data-disabled])')\r\n )\r\n }, [])\r\n\r\n // On open: focus panel, initialise focusedIndex to selected item (or 0)\r\n useEffect(() => {\r\n if (!open) {\r\n setFocusedIndex(-1)\r\n return\r\n }\r\n const raf = requestAnimationFrame(() => {\r\n panelRef.current?.focus()\r\n const options = getOptions()\r\n const selectedIdx = options.findIndex((el) => el.getAttribute('aria-selected') === 'true')\r\n setFocusedIndex(selectedIdx >= 0 ? selectedIdx : 0)\r\n })\r\n return () => cancelAnimationFrame(raf)\r\n }, [open, getOptions])\r\n\r\n // Keep data-focused (visual highlight) and aria-activedescendant (screen reader\r\n // announcement) in sync with focusedIndex. Each option is assigned a stable id\r\n // so the listbox can reference the active one via aria-activedescendant.\r\n useEffect(() => {\r\n if (!open) {\r\n setActiveDescendant(undefined)\r\n return\r\n }\r\n const options = getOptions()\r\n let activeId: string | undefined\r\n options.forEach((el, idx) => {\r\n if (!el.id) {\r\n el.id = `${baseId}-option-${idx}`\r\n }\r\n if (idx === focusedIndex) {\r\n el.setAttribute('data-focused', 'true')\r\n el.scrollIntoView({ block: 'nearest' })\r\n activeId = el.id\r\n } else {\r\n el.removeAttribute('data-focused')\r\n }\r\n })\r\n setActiveDescendant(activeId)\r\n }, [focusedIndex, open, getOptions, baseId])\r\n\r\n useKeyPress(\r\n {\r\n Escape: onClose,\r\n ArrowDown: (e) => {\r\n e.preventDefault()\r\n setFocusedIndex((prev) => {\r\n const count = getOptions().length\r\n return count === 0 ? prev : (prev + 1) % count\r\n })\r\n },\r\n ArrowUp: (e) => {\r\n e.preventDefault()\r\n setFocusedIndex((prev) => {\r\n const count = getOptions().length\r\n return count === 0 ? prev : (prev - 1 + count) % count\r\n })\r\n },\r\n Home: (e) => {\r\n e.preventDefault()\r\n const count = getOptions().length\r\n if (count > 0) {setFocusedIndex(0)}\r\n },\r\n End: (e) => {\r\n e.preventDefault()\r\n const count = getOptions().length\r\n if (count > 0) {setFocusedIndex(count - 1)}\r\n },\r\n Enter: (e) => {\r\n e.preventDefault()\r\n const options = getOptions()\r\n if (focusedIndex >= 0) {options[focusedIndex]?.click()}\r\n },\r\n ' ': (e) => {\r\n e.preventDefault()\r\n const options = getOptions()\r\n if (focusedIndex >= 0) {options[focusedIndex]?.click()}\r\n },\r\n },\r\n { enabled: open }\r\n )\r\n\r\n return { panelRef, style, activeDescendant }\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, useId } from 'react'\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 = useId()\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={label !== undefined ? labelId : undefined}\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 { createStyles } from '@aurora-ds/theme'\r\n\r\nexport const MENU_ITEM_STYLES = createStyles((theme) => {\r\n const c = theme.colors\r\n\r\n return {\r\n root: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing.sm,\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 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}`,\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-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 }\r\n}, { id: 'menu-item' })\r\n","import type { FC } from 'react'\r\nimport { Icon } from '@components/foundation/icon'\r\nimport { Text } from '@components/foundation/text'\r\nimport { MENU_ITEM_STYLES } from '@components/overlay/menu/menu-item/MenuItem.styles'\r\nimport type { MenuItemProps } from '@components/overlay/menu/menu-item/MenuItem.props'\r\n\r\nconst MenuItem: FC<MenuItemProps> = ({\r\n ref,\r\n label,\r\n icon,\r\n selected,\r\n focused,\r\n disabled,\r\n onClick,\r\n ...rest\r\n}) => {\r\n return (\r\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\r\n <li\r\n ref={ref}\r\n role={'option'}\r\n aria-selected={selected}\r\n aria-disabled={disabled}\r\n data-selected={selected || undefined}\r\n data-focused={focused || undefined}\r\n data-disabled={disabled || undefined}\r\n className={MENU_ITEM_STYLES.root}\r\n onClick={disabled ? undefined : onClick}\r\n {...rest}\r\n >\r\n {icon !== undefined && (\r\n <Icon\r\n icon={icon}\r\n size={'sm'}\r\n strokeColor={selected ? 'primaryMain' : 'textSecondary'}\r\n />\r\n )}\r\n <Text\r\n variant={'span'}\r\n fontSize={'sm'}\r\n >\r\n {label}\r\n </Text>\r\n </li>\r\n )\r\n}\r\n\r\nMenuItem.displayName = 'MenuItem'\r\n\r\nexport default MenuItem\r\n","import { FC } from 'react'\nimport { createPortal } from 'react-dom'\nimport { MENU_STYLES } from '@components/overlay/menu/Menu.styles'\nimport { useMenu } from '@components/overlay/menu/utils/useMenu.utils'\nimport MenuGroup from '@components/overlay/menu/menu-group/MenuGroup'\nimport MenuItem from '@components/overlay/menu/menu-item/MenuItem'\nimport type { MenuProps } from '@components/overlay/menu/Menu.props'\nimport type { MenuComponent } from '@components/overlay/menu/Menu.types'\n\nconst MenuBase: FC<MenuProps> = ({\n open,\n onClose,\n anchorEl,\n minWidth,\n maxHeight = '20rem',\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n children,\n}) => {\n const { panelRef, style, activeDescendant } = useMenu({ open, onClose, anchorEl, minWidth })\n\n if (!open) {return null}\n\n return createPortal(\n <>\n <div\n className={MENU_STYLES.backdrop}\n onClick={onClose}\n aria-hidden={true}\n />\n <div\n ref={panelRef}\n id={id}\n role={'listbox'}\n tabIndex={-1}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-activedescendant={activeDescendant}\n className={MENU_STYLES.panel}\n style={{ ...style, maxHeight, outline: 'none' }}\n >\n {children}\n </div>\n </>,\n document.body\n )\n}\n\nMenuBase.displayName = 'Menu'\n\nconst Menu = MenuBase as MenuComponent\nMenu.Item = MenuItem\nMenu.Group = MenuGroup\n\nexport default Menu\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 '&[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': {\r\n borderColor: c.primaryMain,\r\n outline: 'none',\r\n },\r\n },\r\n error: {\r\n borderColor: c.errorMain,\r\n ':focus-visible': {\r\n outline: 'none',\r\n },\r\n },\r\n success: {\r\n borderColor: c.successMain,\r\n ':focus-visible': {\r\n outline: 'none',\r\n },\r\n },\r\n warning: {\r\n borderColor: c.warningMain,\r\n ':focus-visible': {\r\n outline: 'none',\r\n },\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 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={'textSecondary'}\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 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 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 label={opt.label}\r\n icon={opt.icon}\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\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': {\r\n outline: '2px solid transparent',\r\n boxShadow: `0 0 0 2px ${c.primarySubtleActive}`,\r\n },\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 { 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 { 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 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 >\r\n {label}\r\n </Link>\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.slow}`,\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 * 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 * @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 [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), duration)\r\n return () => clearTimeout(timeout)\r\n }\r\n }, [isOpen, duration])\r\n\r\n return { isVisible, isFadingIn }\r\n}\r\n","import { useEffect } from 'react'\r\n\r\n/**\r\n * Locks scrolling on `document.body` while `active` is true.\r\n *\r\n * Preserves the current scroll position and keeps the scrollbar gutter\r\n * (`overflow-y: scroll`) to avoid horizontal layout shift when the scrollbar\r\n * disappears. The original styles and scroll position are restored on cleanup.\r\n *\r\n * @example useBodyScrollLock(isDialogOpen)\r\n */\r\nexport const useBodyScrollLock = (active: boolean): void => {\r\n useEffect(() => {\r\n if (!active) {return}\r\n\r\n const scrollY = window.scrollY\r\n const body = document.body\r\n body.style.position = 'fixed'\r\n body.style.top = `-${scrollY}px`\r\n body.style.overflowY = 'scroll'\r\n body.style.width = '100%'\r\n\r\n return () => {\r\n body.style.position = ''\r\n body.style.top = ''\r\n body.style.overflowY = ''\r\n body.style.width = ''\r\n window.scrollTo(0, scrollY)\r\n }\r\n }, [active])\r\n}\r\n","import { Box } from '@/components'\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'\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'\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\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.slow}, 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.primarySubtle,\r\n color: theme.colors.primaryMain,\r\n ':hover': { backgroundColor: theme.colors.primarySubtleHover, color: theme.colors.primaryHover },\r\n ':active': { backgroundColor: theme.colors.primarySubtleActive, color: theme.colors.primaryActive },\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': { boxShadow: theme.shadows.focus },\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, Text } from '@/components'\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)\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 onClick?.()\r\n }\r\n\r\n const innerContent = (\r\n <Stack\r\n width={'100%'}\r\n justifyContent={'start'}\r\n >\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 {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 >\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\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\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 ':focus-visible': {\r\n outline: `2px solid ${theme.colors.primaryMain}`,\r\n outlineOffset: '2px',\r\n },\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 { 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\n\r\nimport { Stack } from '@components/layout/stack'\r\nimport { Text } from '@components/foundation/text'\r\nimport { useAlertContext } from '@components/overlay/alert/Alert.context'\r\n\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_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 }) => {\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 >\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 )\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 { 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\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\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-height variant on mobile (applied via `fullscreen` prop)\r\n panelFullscreen: {\r\n [`@media (${MEDIA_MAX.sm})`]: {\r\n height: '100dvh',\r\n maxHeight: 'none',\r\n },\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 { 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 { 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 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","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 (Slate neutral)\r\n secondaryMain: '#f1f5f9',\r\n secondaryHover: '#e2e8f0',\r\n secondaryActive: '#cbd5e1',\r\n secondarySubtle: '#f8fafc',\r\n secondarySubtleHover: '#f1f5f9',\r\n secondarySubtleActive: '#e2e8f0',\r\n secondaryDisabled: '#e2e8f0',\r\n secondaryOn: '#1e293b',\r\n\r\n // Border\r\n borderSubtle: '#f1f5f9',\r\n borderMain: '#e2e8f0',\r\n borderStrong: '#cbd5e1',\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: '#1d4ed8',\r\n linkActive: '#2563eb',\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: '150ms ease-in-out',\r\n normal: '250ms ease-in-out',\r\n slow: '350ms 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: '#0f172a',\r\n surfacePaper: '#1e293b',\r\n surfaceElevated: '#273548',\r\n\r\n // Text\r\n textPrimary: '#f8fafc',\r\n textSecondary: '#cbd5e1',\r\n textTertiary: '#64748b',\r\n textDisabled: '#475569',\r\n textInverse: '#0f172a',\r\n\r\n // Primary (Indigo brand, lighter for dark bg)\r\n primaryMain: '#a5b4fc',\r\n primaryHover: '#c7d2fe',\r\n primaryActive: '#ddd6fe',\r\n primarySubtle: '#1e1b4b',\r\n primarySubtleHover: '#2d2a5e',\r\n primarySubtleActive: '#3b3878',\r\n primaryDisabled: '#4338ca',\r\n primaryOn: '#ffffff',\r\n\r\n // Secondary (Slate dark)\r\n secondaryMain: '#1e293b',\r\n secondaryHover: '#273548',\r\n secondaryActive: '#334155',\r\n secondarySubtle: '#0f172a',\r\n secondarySubtleHover: '#1e293b',\r\n secondarySubtleActive: '#273548',\r\n secondaryDisabled: '#1e293b',\r\n secondaryOn: '#f1f5f9',\r\n\r\n // Border\r\n borderSubtle: '#1e293b',\r\n borderMain: '#334155',\r\n borderStrong: '#475569',\r\n\r\n // Disabled state\r\n disabledMain: '#334155',\r\n disabledText: '#475569',\r\n\r\n // Success (Emerald)\r\n successMain: '#6ee7b7',\r\n successHover: '#a7f3d0',\r\n successActive: '#d1fae5',\r\n successSubtle: '#052e1f',\r\n successSubtleHover: '#063d29',\r\n successSubtleActive: '#084e35',\r\n successOn: '#0a0a0a',\r\n\r\n // Warning (Amber)\r\n warningMain: '#fcd34d',\r\n warningHover: '#fde68a',\r\n warningActive: '#fef3c7',\r\n warningSubtle: '#3a2a05',\r\n warningSubtleHover: '#4d390a',\r\n warningSubtleActive: '#62480e',\r\n warningOn: '#0a0a0a',\r\n\r\n // Error (Red)\r\n errorMain: '#fca5a5',\r\n errorHover: '#fecaca',\r\n errorActive: '#fee2e2',\r\n errorSubtle: '#3a0d0d',\r\n errorSubtleHover: '#4d1212',\r\n errorSubtleActive: '#621818',\r\n errorOn: '#0a0a0a',\r\n\r\n // Info (Sky)\r\n infoMain: '#7dd3fc',\r\n infoHover: '#bae6fd',\r\n infoActive: '#e0f2fe',\r\n infoSubtle: '#08263a',\r\n infoSubtleHover: '#0a3352',\r\n infoSubtleActive: '#0c4068',\r\n infoOn: '#0a0a0a',\r\n\r\n // Orange\r\n orangeMain: '#fdba74',\r\n orangeHover: '#fed7aa',\r\n orangeActive: '#ffedd5',\r\n orangeSubtle: '#3b1906',\r\n orangeSubtleHover: '#4f2309',\r\n orangeSubtleActive: '#642d0d',\r\n orangeOn: '#0a0a0a',\r\n\r\n // Pink\r\n pinkMain: '#f9a8d4',\r\n pinkHover: '#fbcfe8',\r\n pinkActive: '#fce7f3',\r\n pinkSubtle: '#3d0f28',\r\n pinkSubtleHover: '#511539',\r\n pinkSubtleActive: '#66204b',\r\n pinkOn: '#0a0a0a',\r\n\r\n // Violet\r\n violetMain: '#c4b5fd',\r\n violetHover: '#ddd6fe',\r\n violetActive: '#ede9fe',\r\n violetSubtle: '#22103f',\r\n violetSubtleHover: '#2f1856',\r\n violetSubtleActive: '#3d2270',\r\n violetOn: '#0a0a0a',\r\n\r\n // Default (Slate)\r\n defaultMain: '#94a3b8',\r\n defaultHover: '#cbd5e1',\r\n defaultActive: '#e2e8f0',\r\n defaultSubtle: '#1e293b',\r\n defaultSubtleHover: '#273548',\r\n defaultSubtleActive: '#334155',\r\n\r\n // Skeleton\r\n skeletonPrimary: '#1e293b',\r\n skeletonSecondary: '#3d5068',\r\n\r\n // Link (Blue)\r\n linkMain: '#93c5fd',\r\n linkHover: '#bfdbfe',\r\n linkActive: '#dbeafe',\r\n linkDisabled: '#1e40af',\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":["_jsx","LABEL_FONT_SIZE","ICON_SIZE","_jsxs","VIEWPORT_MARGIN_PX","_Fragment","ICON_SIZE_MAP","TRANSITION"],"mappings":"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"}