@avenue-ticketing/ui 0.12.0-beta.7 → 0.12.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/date-picker-mobile-overlay-K7k5Wj8h.d.ts +12 -0
- package/dist/react/button.d.ts +1 -1
- package/dist/react/calendar.d.ts +19 -0
- package/dist/react/calendar.js +611 -0
- package/dist/react/calendar.js.map +1 -0
- package/dist/react/date-picker.d.ts +17 -0
- package/dist/react/date-picker.js +879 -0
- package/dist/react/date-picker.js.map +1 -0
- package/dist/react/date-range-picker.d.ts +17 -0
- package/dist/react/date-range-picker.js +1836 -0
- package/dist/react/date-range-picker.js.map +1 -0
- package/dist/react/range-calendar.d.ts +33 -0
- package/dist/react/range-calendar.js +1560 -0
- package/dist/react/range-calendar.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../utils/cx.ts","../../../../utils/is-react-component.ts","../../../../components/base/buttons/button.tsx","../../../../components/base/input/hint-text.tsx","../../../../components/base/tooltip/tooltip.tsx","../../../../components/base/input/label.tsx","../../../../components/base/input/input.tsx","../../../../components/base/input/input-date.tsx","../../../../components/base/avatar/base-components/avatar-online-indicator.tsx","../../../../components/base/avatar/base-components/verified-tick.tsx","../../../../components/base/avatar/base-components/avatar-count.tsx","../../../../components/base/avatar/avatar.tsx","../../../../hooks/use-is-mobile.ts","../../../../components/base/select/select-mobile-sheet.ts","../../../../components/base/select/popover.tsx","../../../../components/base/select/select-shared.tsx","../../../../hooks/use-resize-observer.ts","../../../../components/base/select/combobox.tsx","../../../../components/base/checkbox/checkbox.tsx","../../../../components/base/select/select-item.tsx","../../../../components/base/select/select.tsx","../../../../hooks/use-breakpoint.ts","../../../../components/application/date-picker/cell.tsx","../../../../components/application/date-picker/range-calendar.tsx"],"names":["Fragment","AriaLink","AriaButton","jsx","AriaText","jsxs","AriaTooltipTrigger","AriaTooltip","AriaOverlayArrow","AriaLabel","HelpCircle","createContext","useContext","sizes","AriaGroup","isDisabled","isInvalid","AriaDateInput","AriaDateSegment","InfoCircle","styles","useState","User01","useEffect","X","AriaPopover","isValidElement","SearchLg","AriaInput","useMemo","AriaComboBox","AriaListBox","useRef","useLayoutEffect","AriaListBoxItem","Check","AriaSelectValue","ChevronDown","AriaSelect","AriaCalendarCell","RangeCalendarContext","useSlottedContext","AriaRangeCalendar","ChevronLeft","ChevronRight","AriaCalendarGrid","AriaCalendarGridHeader","AriaCalendarHeaderCell","AriaCalendarGridBody"],"mappings":"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","file":"range-calendar.js","sourcesContent":["import { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({\n extend: {\n theme: {\n text: [\"display-xs\", \"display-sm\", \"display-md\", \"display-lg\", \"display-xl\", \"display-2xl\"],\n },\n },\n});\n\n/**\n * This function is a wrapper around the twMerge function.\n * It is used to merge the classes inside style objects.\n */\nexport const cx = twMerge;\n\n/**\n * This function does nothing besides helping us to be able to\n * sort the classes inside style objects which is not supported\n * by the Tailwind IntelliSense by default.\n */\nexport function sortCx<T extends Record<string, string | number | Record<string, string | number | Record<string, string | number>>>>(classes: T): T {\n return classes;\n}\n","/* We cannot use type `unknown` instead of `any` here because it will break the type assertion `isReactComponent` function is providing. */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type React from \"react\";\n\ntype ReactComponent = React.FC<any> | React.ComponentClass<any, any>;\n\n/**\n * Checks if a given value is a function component.\n */\nexport const isFunctionComponent = (component: any): component is React.FC<any> => {\n return typeof component === \"function\";\n};\n\n/**\n * Checks if a given value is a class component.\n */\nexport const isClassComponent = (component: any): component is React.ComponentClass<any, any> => {\n return typeof component === \"function\" && component.prototype && (!!component.prototype.isReactComponent || !!component.prototype.render);\n};\n\n/**\n * Checks if a given value is a forward ref component.\n */\nexport const isForwardRefComponent = (component: any): component is React.ForwardRefExoticComponent<any> => {\n return typeof component === \"object\" && component !== null && component.$$typeof.toString() === \"Symbol(react.forward_ref)\";\n};\n\n/**\n * Checks if a given value is a valid React component.\n */\nexport const isReactComponent = (component: any): component is ReactComponent => {\n return isFunctionComponent(component) || isForwardRefComponent(component) || isClassComponent(component);\n};\n","\"use client\";\n\nimport type { FC, ReactElement, ReactNode } from \"react\";\nimport React, { isValidElement } from \"react\";\nimport type { ButtonProps as AriaButtonProps, LinkProps as AriaLinkProps } from \"react-aria-components\";\nimport { Button as AriaButton, Link as AriaLink } from \"react-aria-components\";\nimport { cx, sortCx } from \"@/utils/cx\";\nimport { isReactComponent } from \"@/utils/is-react-component\";\n\n/**\n * Figma: Buttons/Button (3287:427074), Buttons/Button destructive (6218:85578)\n *\n * Hierarchy mapping (Figma → Untitled `color` prop):\n * - Primary → `primary` (dark neutral solid — default CTA, black in light mode)\n * - Brand → `brand` (purple solid)\n * - Secondary / Tertiary / Link color / Link gray → same names\n *\n * Focus: Figma spread-shadow ring (2px surface gap + 4px focus-ring), not outline.\n * Skeuomorphic: shadow-xs-skeuomorphic + gradient top rim (#ffffff1f).\n */\n\n/** Plain focus — Tertiary, Link color, Link gray (Figma Focus rings/focus-ring). */\nconst focusShadowPlain =\n \"focus-visible:outline-none focus-visible:[box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]\";\n\n/** Skeuomorphic focus — Primary, Brand, Secondary (Figma focus-ring-shadow-xs-skeuomorphic). */\nconst focusShadowSkeuomorphic =\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-xs-skeuomorphic),0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]\";\n\n/** Figma Gradient/skeuemorphic-gradient-border — 1px inner rim, strongest at top. */\nconst skeuomorphicGradientBorderClass = [\n \"ring-1 ring-inset ring-transparent\",\n \"before:pointer-events-none before:absolute before:inset-px before:rounded-[inherit] before:border before:border-[#ffffff1f] before:content-['']\",\n \"before:[mask-image:linear-gradient(to_bottom,#000,transparent)]\",\n].join(\" \");\n\nconst skeuomorphicShadowClass = [\"shadow-xs-skeuomorphic\", focusShadowSkeuomorphic, \"overflow-hidden\"].join(\" \");\n\n/** Secondary focus — shadow-xs + spread focus ring (Figma focus-ring-shadow-xs-skeuomorphic; keeps real border). */\nconst focusShadowSecondary =\n \"focus-visible:outline-none focus-visible:[box-shadow:0px_1px_2px_0px_rgba(0,0,0,0.05),0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]\";\n\n/** Secondary depth — bottom inset only; outer edge is border-primary (inner 1px rim stacks visually with border). */\nconst secondaryInnerShadow =\n \"after:pointer-events-none after:absolute after:inset-0 after:rounded-[inherit] after:content-[''] after:[box-shadow:inset_0px_-1px_0px_0px_rgba(0,0,0,0.05)]\";\n\nconst secondaryShadowClass = [\"relative overflow-hidden shadow-xs\", secondaryInnerShadow, focusShadowSecondary].join(\" \");\n\n/** Number input stepper buttons — shell owns border/focus; match outer rounded-lg corners. */\nconst inputNumberButtonClass =\n [\n \"in-data-number-input:border-0 in-data-number-input:shadow-none in-data-number-input:!rounded-none in-data-number-input:!h-full in-data-number-input:!min-h-0 in-data-number-input:self-stretch in-data-number-input:overflow-hidden\",\n \"in-data-number-input:before:hidden in-data-number-input:after:hidden\",\n \"in-data-number-input:focus-visible:outline-none in-data-number-input:focus-visible:shadow-none in-data-number-input:focus-visible:ring-0 in-data-number-input:focus-visible:![box-shadow:none]\",\n ].join(\" \");\n\n/** InputGroup addon buttons — shell owns outer border/corners; button is a flat inner segment (like NativeSelect). */\nconst inputAddonButtonClass =\n [\n \"in-data-input-wrapper:border-0 in-data-input-wrapper:shadow-none in-data-input-wrapper:!rounded-none in-data-input-wrapper:overflow-hidden\",\n \"in-data-input-wrapper:in-data-trailing:border-l in-data-input-wrapper:in-data-trailing:border-solid in-data-input-wrapper:in-data-trailing:border-primary\",\n \"in-data-input-wrapper:in-data-leading:border-r in-data-input-wrapper:in-data-leading:border-solid in-data-input-wrapper:in-data-leading:border-primary\",\n \"in-data-input-wrapper:group-invalid:in-data-trailing:border-error_subtle in-data-input-wrapper:group-invalid:in-data-leading:border-error_subtle\",\n \"in-data-input-wrapper:before:hidden in-data-input-wrapper:after:hidden\",\n \"in-data-input-wrapper:focus-visible:outline-none in-data-input-wrapper:focus-visible:shadow-none in-data-input-wrapper:focus-visible:ring-0 in-data-input-wrapper:focus-visible:![box-shadow:none]\",\n ].join(\" \");\n\nconst styles = sortCx({\n common: {\n root: [\n \"group relative inline-flex shrink-0 cursor-pointer items-center justify-center whitespace-nowrap rounded-full font-body outline-none before:absolute\",\n \"font-semibold transition-[color,background-color,border-color,box-shadow,opacity,transform] duration-150 ease-out\",\n \"pressed:scale-[0.985] pressed:duration-100 pressed:ease-linear motion-reduce:pressed:scale-100\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed in-data-input-wrapper:disabled:opacity-100\",\n inputAddonButtonClass,\n inputNumberButtonClass,\n // Stretch to InputGroup row height; padding/typography follow `data-input-size` on the field (Figma 85:1269).\n \"in-data-input-wrapper:!h-full in-data-input-wrapper:!min-h-0 in-data-input-wrapper:self-stretch\",\n \"in-data-input-wrapper:in-data-[input-size=sm]:gap-1 in-data-input-wrapper:in-data-[input-size=sm]:px-3 in-data-input-wrapper:in-data-[input-size=sm]:py-2 in-data-input-wrapper:in-data-[input-size=sm]:text-sm\",\n \"in-data-input-wrapper:in-data-[input-size=md]:gap-1 in-data-input-wrapper:in-data-[input-size=md]:px-3.5 in-data-input-wrapper:in-data-[input-size=md]:py-2.5 in-data-input-wrapper:in-data-[input-size=md]:text-sm\",\n \"in-data-input-wrapper:in-data-[input-size=lg]:gap-1.5 in-data-input-wrapper:in-data-[input-size=lg]:px-4 in-data-input-wrapper:in-data-[input-size=lg]:py-2.5 in-data-input-wrapper:in-data-[input-size=lg]:text-md\",\n \"*:data-icon:pointer-events-none *:data-icon:shrink-0 *:data-icon:transition-inherit-all\",\n ].join(\" \"),\n icon: \"pointer-events-none shrink-0 transition-inherit-all\",\n },\n sizes: {\n xs: {\n root: [\n \"h-8 min-h-8 gap-1 px-[0.625rem] py-1.5 text-sm data-icon-only:size-8 data-icon-only:min-h-8 data-icon-only:min-w-8 data-icon-only:p-2\",\n \"in-data-input-wrapper:data-icon-only:p-2.5\",\n \"*:data-icon:size-4\",\n ].join(\" \"),\n linkRoot: \"h-auto min-h-0 gap-1 px-0! py-0! text-sm *:data-text:underline-offset-3\",\n },\n sm: {\n root: [\n \"h-9 min-h-9 gap-1 px-3 py-2 text-sm data-icon-only:size-9 data-icon-only:min-h-9 data-icon-only:min-w-9 data-icon-only:p-2\",\n \"in-data-input-wrapper:data-icon-only:p-2.5\",\n \"*:data-icon:size-5\",\n ].join(\" \"),\n linkRoot: \"h-auto min-h-0 gap-1 px-0! py-0! text-sm *:data-text:underline-offset-3\",\n },\n md: {\n root: [\n \"h-10 min-h-10 gap-1 px-3.5 py-2.5 text-sm data-icon-only:size-10 data-icon-only:min-h-10 data-icon-only:min-w-10 data-icon-only:p-2.5\",\n \"in-data-input-wrapper:data-icon-only:p-3\",\n \"*:data-icon:size-5\",\n ].join(\" \"),\n linkRoot: \"h-auto min-h-0 gap-1 px-0! py-0! text-sm *:data-text:underline-offset-4\",\n },\n lg: {\n root: \"h-11 min-h-11 gap-1.5 px-4 py-2.5 text-md data-icon-only:size-11 data-icon-only:min-h-11 data-icon-only:min-w-11 data-icon-only:p-3 *:data-icon:size-5\",\n linkRoot: \"h-auto min-h-0 gap-1.5 px-0! py-0! text-md *:data-text:underline-offset-4\",\n },\n xl: {\n root: \"h-12 min-h-12 gap-1.5 px-[1.125rem] py-3 text-md data-icon-only:size-12 data-icon-only:min-h-12 data-icon-only:min-w-12 data-icon-only:p-3 data-icon-only:*:data-icon:size-6 *:data-icon:size-5\",\n linkRoot: \"h-auto min-h-0 gap-1.5 px-0! py-0! text-md *:data-text:underline-offset-4\",\n },\n },\n\n colors: {\n /** Figma Hierarchy=Primary — dark neutral solid; hover lightens to fg-tertiary_hover (#404040). */\n primary: {\n root: [\n \"bg-primary-solid text-white\",\n skeuomorphicShadowClass,\n skeuomorphicGradientBorderClass,\n \"hover:bg-fg-tertiary_hover dark:hover:bg-quaternary\",\n \"disabled:opacity-30\",\n \"data-loading:bg-fg-tertiary_hover dark:data-loading:bg-quaternary\",\n \"*:data-icon:not([data-icon=loading]):text-white/70\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Brand — purple solid; hover darkens to bg-brand-solid_hover (#6d28d9). */\n brand: {\n root: [\n \"bg-brand-solid text-primary_on-brand\",\n skeuomorphicShadowClass,\n skeuomorphicGradientBorderClass,\n \"hover:bg-brand-solid_hover\",\n \"disabled:opacity-50\",\n \"data-loading:bg-brand-solid_hover\",\n \"*:data-icon:not([data-icon=loading]):text-primary_on-brand\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Secondary — border-primary + shadow-xs + skeuomorphic inner rim overlay. */\n secondary: {\n root: [\n \"border border-solid border-primary bg-primary text-secondary\",\n secondaryShadowClass,\n \"hover:bg-primary_hover hover:text-secondary_hover\",\n \"disabled:opacity-50\",\n \"data-loading:bg-primary_hover\",\n \"*:data-icon:text-fg-secondary\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Tertiary */\n tertiary: {\n root: [\n \"border border-transparent bg-transparent text-tertiary\",\n focusShadowPlain,\n \"hover:bg-primary_hover hover:text-tertiary_hover\",\n \"disabled:opacity-50\",\n \"*:data-icon:text-fg-tertiary\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Link color — text + icons share brand-secondary; hover underlines with fg-brand-secondary. */\n \"link-color\": {\n root: [\n \"h-auto min-h-0 border-0 bg-transparent px-0! py-0! text-brand-secondary shadow-none\",\n focusShadowPlain,\n \"hover:text-brand-secondary_hover\",\n \"disabled:opacity-50\",\n \"*:data-text:underline *:data-text:decoration-transparent *:data-text:decoration-solid hover:*:data-text:decoration-fg-brand-secondary\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Link gray — text + icons share tertiary; hover underlines with fg-quaternary. */\n \"link-gray\": {\n root: [\n \"h-auto min-h-0 border-0 bg-transparent px-0! py-0! text-tertiary shadow-none\",\n focusShadowPlain,\n \"hover:text-tertiary_hover\",\n \"disabled:opacity-50\",\n \"*:data-text:underline *:data-text:decoration-transparent *:data-text:decoration-solid hover:*:data-text:decoration-fg-quaternary\",\n ].join(\" \"),\n },\n \"primary-destructive\": {\n root: [\n \"bg-error-solid text-white\",\n skeuomorphicShadowClass,\n skeuomorphicGradientBorderClass,\n \"hover:bg-error-solid_hover\",\n \"disabled:opacity-50\",\n \"data-loading:bg-error-solid_hover\",\n \"*:data-icon:not([data-icon=loading]):text-white/70\",\n ].join(\" \"),\n },\n \"secondary-destructive\": {\n root: [\n \"border border-solid border-primary bg-primary text-error-primary\",\n secondaryShadowClass,\n \"hover:bg-error-primary hover:text-error-primary_hover\",\n \"disabled:opacity-50\",\n \"data-loading:bg-error-primary\",\n \"*:data-icon:text-fg-error-secondary hover:*:data-icon:text-fg-error-primary\",\n ].join(\" \"),\n },\n \"tertiary-destructive\": {\n root: [\n \"border border-transparent bg-transparent text-error-primary\",\n focusShadowPlain,\n \"hover:bg-error-primary hover:text-error-primary_hover\",\n \"disabled:opacity-50\",\n \"*:data-icon:text-fg-error-secondary hover:*:data-icon:text-fg-error-primary\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Link (destructive) — text + icons share error-primary; hover underlines. */\n \"link-destructive\": {\n root: [\n \"h-auto min-h-0 border-0 bg-transparent px-0! py-0! text-error-primary shadow-none\",\n focusShadowPlain,\n \"hover:text-error-primary_hover\",\n \"disabled:opacity-50\",\n \"*:data-text:underline *:data-text:decoration-transparent *:data-text:decoration-solid hover:*:data-text:decoration-current\",\n ].join(\" \"),\n },\n },\n});\n\n/**\n * Common props shared between button and anchor variants\n */\nexport interface CommonProps {\n /** Disables the button and shows a disabled state */\n isDisabled?: boolean;\n /** Shows a loading spinner and disables the button */\n isLoading?: boolean;\n /** The size variant of the button */\n size?: keyof typeof styles.sizes;\n /** The color variant of the button */\n color?: keyof typeof styles.colors;\n /** Icon component or element to show before the text */\n iconLeading?: FC<{ className?: string }> | ReactNode;\n /** Icon component or element to show after the text */\n iconTrailing?: FC<{ className?: string }> | ReactNode;\n /** Removes horizontal padding from the text content */\n noTextPadding?: boolean;\n /** When true, keeps the text visible during loading state */\n showTextWhileLoading?: boolean;\n\n children?: ReactNode;\n className?: string;\n}\n\n/**\n * Props for the button variant (non-link)\n */\nexport interface ButtonProps extends CommonProps, Omit<AriaButtonProps, \"children\" | \"className\"> {}\n/**\n * Props for the link variant (anchor tag)\n */\ninterface LinkProps extends CommonProps, Omit<AriaLinkProps, \"children\" | \"className\"> {\n href: NonNullable<AriaLinkProps[\"href\"]>;\n}\n\n/** Union type of button and link props */\nexport type Props = ButtonProps | LinkProps;\n\nexport const Button: {\n (props: LinkProps): ReactElement<LinkProps>;\n (props: ButtonProps): ReactElement<ButtonProps>;\n} = ({\n size = \"md\",\n color = \"primary\",\n children,\n className,\n noTextPadding,\n iconLeading: IconLeading,\n iconTrailing: IconTrailing,\n isDisabled: disabled,\n isLoading: loading,\n showTextWhileLoading,\n ...props\n}) => {\n const href = \"href\" in props ? props.href : undefined;\n\n const isIcon = (IconLeading || IconTrailing) && !children;\n const isLinkType = [\"link-gray\", \"link-color\", \"link-destructive\"].includes(color);\n\n noTextPadding = isLinkType || noTextPadding;\n\n const commonChildren = (\n <>\n {isValidElement(IconLeading) && IconLeading}\n {isReactComponent(IconLeading) && <IconLeading data-icon=\"leading\" className={styles.common.icon} />}\n\n {loading && (\n <svg\n fill=\"none\"\n data-icon=\"loading\"\n viewBox=\"0 0 256 256\"\n aria-hidden\n className={cx(\n styles.common.icon,\n \"size-5 animate-spin\",\n !showTextWhileLoading && \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\",\n )}\n >\n <path\n fill=\"currentColor\"\n d=\"M232,128a104,104,0,0,1-208,0c0-41,23.81-78.36,60.66-95.27a8,8,0,0,1,6.68,14.54C60,61.46,40,93.27,40,128a88,88,0,0,0,176,0c0-34.73-20-66.54-51.34-80.73a8,8,0,0,1,6.68-14.54C208.19,49.64,232,87,232,128Z\"\n />\n </svg>\n )}\n\n {children && (\n <span data-text className={cx(\"transition-inherit-all\", !noTextPadding && !isLinkType && \"px-0.5\")}>\n {children}\n </span>\n )}\n\n {isValidElement(IconTrailing) && IconTrailing}\n {isReactComponent(IconTrailing) && <IconTrailing data-icon=\"trailing\" className={styles.common.icon} />}\n </>\n );\n\n const commonProps = {\n \"data-icon-only\": isIcon ? true : undefined,\n \"data-loading\": loading ? true : undefined,\n ...props,\n isDisabled: disabled || loading,\n className: cx(\n styles.common.root,\n styles.sizes[size].root,\n styles.colors[color].root,\n isLinkType && styles.sizes[size].linkRoot,\n (loading || (href && (disabled || loading))) && \"pointer-events-none\",\n loading && (showTextWhileLoading ? \"[&>*:not([data-icon=loading]):not([data-text])]:hidden\" : \"[&>*:not([data-icon=loading])]:invisible\"),\n className,\n ),\n children: commonChildren,\n };\n\n if (\"href\" in commonProps) {\n return <AriaLink {...commonProps} href={disabled || loading ? undefined : href} />;\n }\n\n return <AriaButton {...commonProps} type={commonProps.type || \"button\"} isPending={loading} />;\n};\n","\"use client\";\n\nimport type { ReactNode, Ref } from \"react\";\nimport type { TextProps as AriaTextProps } from \"react-aria-components\";\nimport { Text as AriaText } from \"react-aria-components\";\nimport { cx } from \"@/utils/cx\";\n\ninterface HintTextProps extends AriaTextProps {\n /** Indicates that the hint text is an error message. */\n isInvalid?: boolean;\n ref?: Ref<HTMLElement>;\n size?: \"sm\" | \"md\";\n children: ReactNode;\n}\n\nexport const HintText = ({ isInvalid, className, size = \"md\", ...props }: HintTextProps) => {\n return (\n <AriaText\n {...props}\n slot={isInvalid ? \"errorMessage\" : \"description\"}\n className={cx(\n \"text-sm text-tertiary\",\n\n // Size\n size === \"sm\" && \"text-xs\",\n \"in-data-[input-size=sm]:text-xs\",\n\n // Invalid state\n isInvalid && \"text-error-primary\",\n \"group-invalid:text-error-primary\",\n\n className,\n )}\n />\n );\n};\n\nHintText.displayName = \"HintText\";\n","\"use client\";\n\n/** Figma: Tooltip (1052:485) */\n\nimport type { ReactNode } from \"react\";\nimport type {\n ButtonProps as AriaButtonProps,\n TooltipProps as AriaTooltipProps,\n TooltipTriggerComponentProps as AriaTooltipTriggerComponentProps,\n} from \"react-aria-components\";\nimport { Button as AriaButton, OverlayArrow as AriaOverlayArrow, Tooltip as AriaTooltip, TooltipTrigger as AriaTooltipTrigger } from \"react-aria-components\";\nimport { cx } from \"@/utils/cx\";\n\ninterface TooltipProps extends AriaTooltipTriggerComponentProps, Omit<AriaTooltipProps, \"children\"> {\n /**\n * The title of the tooltip.\n */\n title: ReactNode;\n /**\n * The description of the tooltip.\n */\n description?: ReactNode;\n /**\n * Whether to show the arrow on the tooltip.\n *\n * @default false\n */\n arrow?: boolean;\n /**\n * Delay in milliseconds before the tooltip is shown on first hover.\n *\n * @default 100\n */\n delay?: number;\n}\n\nexport const Tooltip = ({\n title,\n description,\n children,\n arrow = false,\n delay = 100,\n closeDelay = 0,\n trigger,\n isDisabled,\n isOpen,\n defaultOpen,\n offset = 6,\n crossOffset,\n placement = \"top\",\n onOpenChange,\n ...tooltipProps\n}: TooltipProps) => {\n const isTopOrBottomLeft = [\"top left\", \"top end\", \"bottom left\", \"bottom end\"].includes(placement);\n const isTopOrBottomRight = [\"top right\", \"top start\", \"bottom right\", \"bottom start\"].includes(placement);\n // Set negative cross offset for left and right placement to visually balance the tooltip.\n const calculatedCrossOffset = isTopOrBottomLeft ? -12 : isTopOrBottomRight ? 12 : 0;\n\n return (\n <AriaTooltipTrigger {...{ trigger, delay, closeDelay, isDisabled, isOpen, defaultOpen, onOpenChange }}>\n {children}\n\n <AriaTooltip\n {...tooltipProps}\n offset={offset}\n placement={placement}\n crossOffset={crossOffset ?? calculatedCrossOffset}\n className={({ isEntering, isExiting }) => cx(isEntering && \"ease-out animate-in\", isExiting && \"ease-in animate-out\")}\n >\n {({ isEntering, isExiting }) => (\n <div\n className={cx(\n \"z-50 flex max-w-xs origin-(--trigger-anchor-point) flex-col items-start gap-1 rounded-lg bg-primary-solid px-3 shadow-lg will-change-transform\",\n description ? \"py-3\" : \"py-2\",\n\n isEntering &&\n \"ease-out animate-in fade-in zoom-in-95 in-placement-left:slide-in-from-right-0.5 in-placement-right:slide-in-from-left-0.5 in-placement-top:slide-in-from-bottom-0.5 in-placement-bottom:slide-in-from-top-0.5\",\n isExiting &&\n \"ease-in animate-out fade-out zoom-out-95 in-placement-left:slide-out-to-right-0.5 in-placement-right:slide-out-to-left-0.5 in-placement-top:slide-out-to-bottom-0.5 in-placement-bottom:slide-out-to-top-0.5\",\n )}\n >\n <span className=\"text-xs font-semibold text-white\">{title}</span>\n\n {description && <span className=\"text-xs font-medium text-tooltip-supporting-text\">{description}</span>}\n\n {arrow && (\n <AriaOverlayArrow>\n <svg\n viewBox=\"0 0 100 100\"\n className=\"size-2.5 fill-bg-primary-solid in-placement-left:-rotate-90 in-placement-right:rotate-90 in-placement-top:rotate-0 in-placement-bottom:rotate-180\"\n >\n <path d=\"M0,0 L35.858,35.858 Q50,50 64.142,35.858 L100,0 Z\" />\n </svg>\n </AriaOverlayArrow>\n )}\n </div>\n )}\n </AriaTooltip>\n </AriaTooltipTrigger>\n );\n};\n\ninterface TooltipTriggerProps extends AriaButtonProps {}\n\nexport const TooltipTrigger = ({ children, className, ...buttonProps }: TooltipTriggerProps) => {\n return (\n <AriaButton {...buttonProps} className={(values) => cx(\"h-max w-max outline-hidden\", typeof className === \"function\" ? className(values) : className)}>\n {children}\n </AriaButton>\n );\n};\n","\"use client\";\n\nimport type { ReactNode, Ref } from \"react\";\nimport { QuestionIcon as HelpCircle } from \"@phosphor-icons/react/dist/csr/Question\";\nimport type { LabelProps as AriaLabelProps } from \"react-aria-components\";\nimport { Label as AriaLabel } from \"react-aria-components\";\nimport { Tooltip, TooltipTrigger } from \"@/components/base/tooltip/tooltip\";\nimport { cx } from \"@/utils/cx\";\n\ninterface LabelProps extends AriaLabelProps {\n children: ReactNode;\n isInvalid?: boolean;\n isRequired?: boolean;\n tooltip?: string;\n tooltipDescription?: string;\n ref?: Ref<HTMLLabelElement>;\n}\n\nexport const Label = ({ isInvalid, isRequired, tooltip, tooltipDescription, className, ...props }: LabelProps) => {\n return (\n <AriaLabel\n // Used for conditionally hiding/showing the label element via CSS:\n // <Input label=\"Visible only on mobile\" className=\"lg:**:data-label:hidden\" />\n // or\n // <Input label=\"Visible only on mobile\" className=\"lg:label:hidden\" />\n data-label=\"true\"\n {...props}\n className={cx(\"flex cursor-default items-center gap-0.5 text-sm font-medium text-secondary\", className)}\n >\n {props.children}\n\n <span\n className={cx(\n \"hidden text-brand-tertiary\",\n isRequired && \"block\",\n typeof isRequired === \"undefined\" && \"group-required:block\",\n\n isInvalid && \"text-error-primary\",\n typeof isInvalid === \"undefined\" && \"group-invalid:text-error-primary\",\n )}\n >\n *\n </span>\n\n {tooltip && (\n <Tooltip title={tooltip} description={tooltipDescription} placement=\"top\">\n <TooltipTrigger\n // `TooltipTrigger` inherits the disabled state from the parent form field\n // but we don't that. We want the tooltip be enabled even if the parent\n // field is disabled.\n isDisabled={false}\n className=\"cursor-pointer text-fg-quaternary transition duration-200 hover:text-fg-quaternary_hover focus:text-fg-quaternary_hover\"\n >\n <HelpCircle className=\"size-4\" />\n </TooltipTrigger>\n </Tooltip>\n )}\n </AriaLabel>\n );\n};\n\nLabel.displayName = \"Label\";\n","\"use client\";\n\nimport { type ComponentType, type HTMLAttributes, type ReactNode, type Ref, createContext, useContext, useState } from \"react\";\nimport { EyeIcon as Eye } from \"@phosphor-icons/react/dist/csr/Eye\";\nimport { EyeSlashIcon as EyeOff } from \"@phosphor-icons/react/dist/csr/EyeSlash\";\nimport { QuestionIcon as HelpCircle } from \"@phosphor-icons/react/dist/csr/Question\";\nimport { InfoIcon as InfoCircle } from \"@phosphor-icons/react/dist/csr/Info\";\nimport type { InputProps as AriaInputProps, TextFieldProps as AriaTextFieldProps } from \"react-aria-components\";\nimport { Button as AriaButton, Group as AriaGroup, Input as AriaInput, TextField as AriaTextField } from \"react-aria-components\";\nimport { HintText } from \"@/components/base/input/hint-text\";\nimport { Label } from \"@/components/base/input/label\";\nimport { Tooltip, TooltipTrigger } from \"@/components/base/tooltip/tooltip\";\nimport { cx, sortCx } from \"@/utils/cx\";\n\n/**\n * Figma: Inputs (85:1269)\n *\n * Default: border (1px) border-primary + shadow-xs.\n * Focus: 1px border-brand + inset ring-brand (2px visual, no layout shift from border-2).\n * Error default: border-error_subtle; error focus: border-error + inset ring-error.\n */\nexport const inputFocusRingShadow = \"border-brand ring-1 ring-inset ring-brand\";\nexport const inputErrorFocusRingShadow = \"border-error ring-1 ring-inset ring-error\";\n/** Shell focus overlay — border + inset ring on one ::after above children (no host border-brand; avoids double-ring gap). */\nexport const inputFocusRingShellOverlay =\n \"after:pointer-events-none after:absolute after:-inset-px after:z-10 after:rounded-lg after:border after:border-solid after:border-brand after:ring-1 after:ring-inset after:ring-brand after:content-['']\";\nexport const inputErrorFocusRingShellOverlay =\n \"after:pointer-events-none after:absolute after:-inset-px after:z-10 after:rounded-lg after:border after:border-solid after:border-error after:ring-1 after:ring-inset after:ring-error after:content-['']\";\nexport const inputErrorFocusRingGroupInvalidShellOverlay =\n \"group-invalid:focus-within:after:pointer-events-none group-invalid:focus-within:after:absolute group-invalid:focus-within:after:-inset-px group-invalid:focus-within:after:z-10 group-invalid:focus-within:after:rounded-lg group-invalid:focus-within:after:border group-invalid:focus-within:after:border-solid group-invalid:focus-within:after:border-error group-invalid:focus-within:after:ring-1 group-invalid:focus-within:after:ring-inset group-invalid:focus-within:after:ring-error group-invalid:focus-within:after:content-['']\";\nexport const inputFocusVisibleRingShadow =\n \"focus-visible:outline-none focus-visible:border-brand focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-brand\";\nexport const inputErrorFocusVisibleRingShadow =\n \"focus-visible:outline-none focus-visible:border-error focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-error\";\n\nexport interface InputBaseProps extends Omit<AriaInputProps, \"size\"> {\n /** Tooltip message on hover. */\n tooltip?: string;\n /** Whether the input is invalid. */\n isInvalid?: boolean;\n /** Whether the input is disabled. */\n isDisabled?: boolean;\n /** Whether the input is required. */\n isRequired?: boolean;\n /**\n * Input size.\n * @default \"sm\"\n */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Placeholder text. */\n placeholder?: string;\n /** Class name for the icon. */\n iconClassName?: string;\n /** Class name for the input. */\n inputClassName?: string;\n /** Class name for the input wrapper. */\n wrapperClassName?: string;\n /** Class name for the tooltip. */\n tooltipClassName?: string;\n /** Keyboard shortcut to display. */\n shortcut?: string | boolean;\n ref?: Ref<HTMLInputElement>;\n groupRef?: Ref<HTMLDivElement>;\n /** Icon component to display on the left side of the input. */\n icon?: ComponentType<HTMLAttributes<HTMLOrSVGElement>>;\n}\n\nexport const InputBase = ({\n ref,\n tooltip,\n shortcut,\n groupRef,\n size = \"md\",\n isInvalid,\n isDisabled,\n isRequired,\n icon: Icon,\n placeholder,\n wrapperClassName,\n tooltipClassName,\n inputClassName,\n iconClassName,\n type = \"text\",\n ...inputProps\n}: InputBaseProps) => {\n const [isPasswordVisible, setIsPasswordVisible] = useState(false);\n\n // Check if the input has a leading icon or tooltip\n const hasTrailingIcon = tooltip || isInvalid || type === \"password\";\n const hasLeadingIcon = Icon;\n\n // If the input is inside a `TextFieldContext`, use its context to simplify applying styles\n const context = useContext(TextFieldContext);\n\n const inputSize = context?.size || size;\n\n const sizes = sortCx({\n sm: {\n root: cx(\"px-3 py-2 text-sm\", hasLeadingIcon && \"pl-9\", hasTrailingIcon && \"pr-9\"),\n iconLeading: \"left-3 size-4 stroke-[2.25px]\",\n iconTrailing: \"right-3\",\n shortcut: \"pr-1.5\",\n },\n md: {\n root: cx(\"px-3 py-2 text-md\", hasLeadingIcon && \"pl-10\", hasTrailingIcon && \"pr-9\"),\n iconLeading: \"left-3 size-5\",\n iconTrailing: \"right-3\",\n shortcut: \"pr-2\",\n },\n lg: {\n root: cx(\"px-3.5 py-2.5 text-md\", hasLeadingIcon && \"pl-10.5\", hasTrailingIcon && \"pr-9.5\"),\n iconLeading: \"left-3.5 size-5\",\n iconTrailing: \"right-3.5\",\n shortcut: \"pr-2.5\",\n },\n });\n\n return (\n <AriaGroup\n {...{ isDisabled, isInvalid }}\n ref={groupRef}\n className={({ isFocusWithin, isDisabled, isInvalid }) =>\n cx(\n \"group/input relative flex w-full flex-row place-content-center place-items-center rounded-lg border border-solid border-primary bg-primary shadow-xs transition-[border-color,box-shadow] duration-100 ease-linear\",\n\n isFocusWithin && !isDisabled && !isInvalid && inputFocusRingShadow,\n\n // Disabled state styles\n isDisabled && \"cursor-not-allowed opacity-50\",\n \"group-disabled:cursor-not-allowed group-disabled:opacity-50\",\n\n // Invalid state styles\n isInvalid && !isFocusWithin && \"border-error_subtle\",\n \"group-invalid:border-error_subtle\",\n \"group-invalid:focus-within:border-error group-invalid:focus-within:ring-1 group-invalid:focus-within:ring-inset group-invalid:focus-within:ring-error\",\n\n // Invalid + focus — darker error stroke (not brand)\n isInvalid && isFocusWithin && inputErrorFocusRingShadow,\n\n context?.wrapperClassName,\n wrapperClassName,\n )\n }\n >\n {/* Leading icon and Payment icon */}\n {Icon && (\n <Icon className={cx(\"pointer-events-none absolute text-fg-quaternary\", sizes[inputSize].iconLeading, context?.iconClassName, iconClassName)} />\n )}\n\n {/* Input field */}\n <AriaInput\n {...(inputProps as AriaInputProps)}\n ref={ref}\n required={isRequired}\n type={type === \"password\" && isPasswordVisible ? \"text\" : type}\n placeholder={placeholder}\n className={cx(\n \"m-0 w-full bg-transparent text-primary ring-0 outline-hidden placeholder:text-placeholder autofill:rounded-lg autofill:text-primary disabled:cursor-not-allowed\",\n sizes[inputSize].root,\n context?.inputClassName,\n inputClassName,\n )}\n />\n\n {/* Tooltip and help icon */}\n {tooltip && type !== \"password\" && (\n <Tooltip title={tooltip} placement=\"top\">\n <TooltipTrigger\n className={cx(\n \"absolute cursor-pointer text-fg-quaternary transition duration-100 ease-linear group-invalid/input:hidden hover:text-fg-quaternary_hover focus:text-fg-quaternary_hover\",\n sizes[inputSize].iconTrailing,\n context?.tooltipClassName,\n tooltipClassName,\n )}\n >\n <HelpCircle className=\"size-4 stroke-[2.25px]\" />\n </TooltipTrigger>\n </Tooltip>\n )}\n\n {/* Invalid icon */}\n {type !== \"password\" && (\n <InfoCircle\n className={cx(\n \"pointer-events-none absolute hidden size-4 stroke-[2.25px] text-fg-error-secondary group-invalid/input:block\",\n sizes[inputSize].iconTrailing,\n context?.tooltipClassName,\n tooltipClassName,\n )}\n />\n )}\n\n {/* Password visibility toggle */}\n {type === \"password\" && (\n <AriaButton\n aria-label=\"Toggle password visibility\"\n onClick={() => setIsPasswordVisible(!isPasswordVisible)}\n className={cx(\n \"absolute flex cursor-pointer items-center justify-center text-fg-quaternary transition duration-100 ease-linear hover:text-fg-quaternary_hover focus:text-fg-quaternary_hover focus:outline-hidden\",\n sizes[inputSize].iconTrailing,\n )}\n >\n {isPasswordVisible ? <EyeOff className=\"size-4 stroke-[2.25px]\" /> : <Eye className=\"size-4 stroke-[2.25px]\" />}\n </AriaButton>\n )}\n\n {/* Shortcut */}\n {shortcut && (\n <div\n className={cx(\n \"pointer-events-none absolute inset-y-0.5 right-0.5 z-10 hidden items-center rounded-r-[inherit] bg-linear-to-r from-transparent to-bg-primary to-40% pl-8 md:flex\",\n sizes[inputSize].shortcut,\n )}\n >\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none rounded px-1 py-px text-xs font-medium text-quaternary ring-1 ring-secondary select-none ring-inset\"\n >\n {typeof shortcut === \"string\" ? shortcut : \"⌘K\"}\n </span>\n </div>\n )}\n </AriaGroup>\n );\n};\n\nInputBase.displayName = \"InputBase\";\n\ninterface TextFieldContextProps extends Partial<Pick<InputBaseProps, \"size\" | \"wrapperClassName\" | \"inputClassName\" | \"iconClassName\" | \"tooltipClassName\">> {}\n\nconst TextFieldContext = createContext<TextFieldContextProps>({});\n\nexport interface TextFieldProps extends AriaTextFieldProps, TextFieldContextProps {}\n\nexport const TextField = ({ className, size = \"md\", inputClassName, wrapperClassName, iconClassName, tooltipClassName, ...props }: TextFieldProps) => {\n return (\n <TextFieldContext.Provider value={{ inputClassName, wrapperClassName, iconClassName, tooltipClassName, size }}>\n <AriaTextField\n {...props}\n data-input-wrapper\n data-input-size={size}\n className={(state) =>\n cx(\"group flex h-max w-full flex-col items-start justify-start gap-1.5\", typeof className === \"function\" ? className(state) : className)\n }\n />\n </TextFieldContext.Provider>\n );\n};\n\nTextField.displayName = \"TextField\";\n\nexport interface InputProps\n extends\n AriaTextFieldProps,\n Pick<\n InputBaseProps,\n | \"ref\"\n | \"placeholder\"\n | \"icon\"\n | \"shortcut\"\n | \"tooltip\"\n | \"groupRef\"\n | \"size\"\n | \"wrapperClassName\"\n | \"inputClassName\"\n | \"iconClassName\"\n | \"tooltipClassName\"\n > {\n /** Label text for the input */\n label?: string;\n /** Helper text displayed below the input */\n hint?: ReactNode;\n /** Whether to hide required indicator from label */\n hideRequiredIndicator?: boolean;\n}\n\nexport const Input = ({\n size = \"md\",\n placeholder,\n icon: Icon,\n label,\n hint,\n shortcut,\n hideRequiredIndicator,\n className,\n ref,\n groupRef,\n tooltip,\n iconClassName,\n inputClassName,\n wrapperClassName,\n tooltipClassName,\n type = \"text\",\n ...props\n}: InputProps) => {\n return (\n <TextField aria-label={!label ? placeholder : undefined} {...props} size={size} className={className}>\n {({ isRequired, isInvalid }) => (\n <>\n {label && (\n <Label isRequired={hideRequiredIndicator ? !hideRequiredIndicator : isRequired} isInvalid={isInvalid}>\n {label}\n </Label>\n )}\n\n <InputBase\n {...{\n ref,\n groupRef,\n size,\n placeholder,\n icon: Icon,\n shortcut,\n iconClassName,\n inputClassName,\n wrapperClassName,\n tooltipClassName,\n tooltip,\n type,\n isInvalid,\n }}\n />\n\n {hint && <HintText isInvalid={isInvalid}>{hint}</HintText>}\n </>\n )}\n </TextField>\n );\n};\n\nInput.displayName = \"Input\";\n","\"use client\";\n\nimport { type ComponentType, type HTMLAttributes, type ReactNode, type Ref, createContext, useContext } from \"react\";\nimport { QuestionIcon as HelpCircle } from \"@phosphor-icons/react/dist/csr/Question\";\nimport { InfoIcon as InfoCircle } from \"@phosphor-icons/react/dist/csr/Info\";\nimport type { DateInputProps as AriaDateInputProps } from \"react-aria-components\";\nimport {\n DateField as AriaDateField,\n type DateFieldProps as AriaDateFieldProps,\n DateInput as AriaDateInput,\n DateSegment as AriaDateSegment,\n Group as AriaGroup,\n type DateValue,\n} from \"react-aria-components\";\nimport { cx, sortCx } from \"@/utils/cx\";\nimport { inputErrorFocusRingShadow, inputFocusRingShadow } from \"./input\";\nimport { Tooltip, TooltipTrigger } from \"../tooltip/tooltip\";\nimport { HintText } from \"./hint-text\";\nimport { Label } from \"./label\";\n\nconst DateFieldContext = createContext<{\n size?: \"sm\" | \"md\" | \"lg\";\n wrapperClassName?: string;\n iconClassName?: string;\n tooltipClassName?: string;\n inputClassName?: string;\n}>({});\n\nexport interface InputDateBaseProps extends Omit<AriaDateInputProps, \"children\"> {\n /** Tooltip message on hover. */\n tooltip?: string;\n /**\n * Input size.\n * @default \"sm\"\n */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Placeholder text. */\n placeholder?: string;\n /** Class name for the icon. */\n iconClassName?: string;\n /** Class name for the input wrapper. */\n wrapperClassName?: string;\n /** Class name for the tooltip. */\n tooltipClassName?: string;\n /** Keyboard shortcut to display. */\n shortcut?: string | boolean;\n ref?: Ref<HTMLInputElement>;\n groupRef?: Ref<HTMLDivElement>;\n /** Icon component to display on the left side of the input. */\n icon?: ComponentType<HTMLAttributes<HTMLOrSVGElement>>;\n isInvalid?: boolean;\n isDisabled?: boolean;\n}\n\nexport const InputDateBase = ({\n tooltip,\n shortcut,\n groupRef,\n size = \"md\",\n isInvalid,\n isDisabled,\n icon: Icon,\n wrapperClassName,\n tooltipClassName,\n iconClassName,\n ...inputProps\n}: Omit<InputDateBaseProps, \"label\" | \"hint\">) => {\n // Check if the input has a leading icon or tooltip\n const hasTrailingIcon = tooltip || isInvalid;\n const hasLeadingIcon = Icon;\n\n // If the input is inside a `TextFieldContext`, use its context to simplify applying styles\n const context = useContext(DateFieldContext);\n\n const inputSize = context?.size || size;\n\n const sizes = sortCx({\n sm: {\n root: cx(\"px-3 py-2 text-sm\", hasTrailingIcon && \"pr-9\", hasLeadingIcon && \"pl-8.5\"),\n iconLeading: \"left-3 size-4 stroke-[2.25px]\",\n iconTrailing: \"right-3\",\n shortcut: \"pr-2.5\",\n },\n md: {\n root: cx(\"px-3 py-2 text-md\", hasTrailingIcon && \"pr-9\", hasLeadingIcon && \"pl-10\"),\n iconLeading: \"left-3 size-5\",\n iconTrailing: \"right-3\",\n shortcut: \"pr-2.5\",\n },\n lg: {\n root: cx(\"px-3.5 py-2.5 text-md\", hasTrailingIcon && \"pr-9.5\", hasLeadingIcon && \"pl-10.5\"),\n iconLeading: \"left-3.5 size-5\",\n iconTrailing: \"right-3.5\",\n shortcut: \"pr-3\",\n },\n });\n\n return (\n <AriaGroup\n {...{ isDisabled, isInvalid }}\n ref={groupRef}\n className={({ isFocusWithin, isDisabled, isInvalid }) =>\n cx(\n \"group/input relative flex w-full flex-row place-content-center place-items-center rounded-lg border border-solid border-primary bg-primary shadow-xs transition-[border-color,box-shadow] duration-100 ease-linear\",\n\n isFocusWithin && !isDisabled && !isInvalid && inputFocusRingShadow,\n\n // Disabled state styles\n isDisabled && \"cursor-not-allowed opacity-50 in-data-input-wrapper:opacity-100\",\n \"group-disabled:cursor-not-allowed group-disabled:opacity-50 in-data-input-wrapper:group-disabled:opacity-100\",\n\n // Invalid state styles\n isInvalid && !isFocusWithin && \"border-error_subtle\",\n \"group-invalid:border-error_subtle\",\n \"group-invalid:focus-within:border-error group-invalid:focus-within:ring-1 group-invalid:focus-within:ring-inset group-invalid:focus-within:ring-error\",\n\n isInvalid && isFocusWithin && inputErrorFocusRingShadow,\n\n context?.wrapperClassName,\n wrapperClassName,\n )\n }\n >\n {/* Leading icon and Payment icon */}\n {Icon && (\n <Icon className={cx(\"pointer-events-none absolute text-fg-quaternary\", sizes[inputSize].iconLeading, context?.iconClassName, iconClassName)} />\n )}\n\n {/* Input field */}\n <AriaDateInput {...inputProps} className={cx(\"flex w-full\", sizes[size].root, typeof inputProps.className === \"string\" && inputProps.className)}>\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cx(\n \"rounded px-0.5 text-primary tabular-nums caret-transparent focus:bg-brand-solid focus:font-medium focus:text-white focus:outline-hidden\",\n // The placeholder segment.\n segment.isPlaceholder && \"text-placeholder uppercase\",\n // The separator \"/\" segment.\n segment.type === \"literal\" && \"text-fg-quaternary\",\n )}\n />\n )}\n </AriaDateInput>\n\n {/* Tooltip and help icon */}\n {tooltip && (\n <Tooltip title={tooltip} placement=\"top\">\n <TooltipTrigger\n className={cx(\n \"absolute cursor-pointer text-fg-quaternary transition duration-200 group-invalid/input:hidden hover:text-fg-quaternary_hover focus:text-fg-quaternary_hover\",\n sizes[inputSize].iconTrailing,\n context?.tooltipClassName,\n tooltipClassName,\n )}\n >\n <HelpCircle className=\"size-4 stroke-[2.25px]\" />\n </TooltipTrigger>\n </Tooltip>\n )}\n\n {/* Invalid icon */}\n <InfoCircle\n className={cx(\n \"pointer-events-none absolute hidden size-4 stroke-[2.25px] text-fg-error-secondary group-invalid/input:block\",\n sizes[inputSize].iconTrailing,\n context?.tooltipClassName,\n tooltipClassName,\n )}\n />\n\n {/* Shortcut */}\n {shortcut && (\n <div\n className={cx(\n \"pointer-events-none absolute inset-y-0.5 right-0.5 z-10 flex items-center rounded-r-[inherit] bg-linear-to-r from-transparent to-bg-primary to-40% pl-8\",\n sizes[inputSize].shortcut,\n )}\n >\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none rounded px-1 py-px text-xs font-medium text-quaternary ring-1 ring-secondary select-none ring-inset\"\n >\n {typeof shortcut === \"string\" ? shortcut : \"⌘K\"}\n </span>\n </div>\n )}\n </AriaGroup>\n );\n};\n\ninterface InputProps\n extends\n AriaDateFieldProps<DateValue>,\n Pick<\n InputDateBaseProps,\n \"ref\" | \"size\" | \"placeholder\" | \"icon\" | \"shortcut\" | \"tooltip\" | \"groupRef\" | \"iconClassName\" | \"wrapperClassName\" | \"tooltipClassName\"\n > {\n /** Label text for the input */\n label?: string;\n /** Helper text displayed below the input */\n hint?: ReactNode;\n /** Whether to hide required indicator from label */\n hideRequiredIndicator?: boolean;\n /** Class name for the input. */\n inputClassName?: string;\n}\n\nexport const InputDate = ({\n size = \"md\",\n placeholder,\n icon: Icon,\n label,\n hint,\n shortcut,\n hideRequiredIndicator,\n className,\n ref,\n groupRef,\n tooltip,\n iconClassName,\n inputClassName,\n wrapperClassName,\n tooltipClassName,\n ...props\n}: InputProps) => {\n return (\n <AriaDateField\n {...props}\n className={(state) =>\n cx(\"group flex h-max w-full flex-col items-start justify-start gap-1.5\", typeof className === \"function\" ? className(state) : className)\n }\n >\n {({ isInvalid, state }) => (\n <>\n {label && (\n <Label isRequired={hideRequiredIndicator ? !hideRequiredIndicator : state.isRequired} isInvalid={isInvalid}>\n {label}\n </Label>\n )}\n\n <InputDateBase\n className={inputClassName}\n {...{\n ref,\n groupRef,\n size,\n placeholder,\n icon: Icon,\n shortcut,\n iconClassName,\n wrapperClassName,\n tooltipClassName,\n tooltip,\n }}\n />\n\n {hint && (\n <HintText isInvalid={isInvalid} className={cx(size === \"sm\" && \"text-xs\")}>\n {hint}\n </HintText>\n )}\n </>\n )}\n </AriaDateField>\n );\n};\n","\"use client\";\n\nimport { cx } from \"@/utils/cx\";\n\nconst sizes = {\n xs: \"size-1.5\",\n sm: \"size-2\",\n md: \"size-2.5\",\n lg: \"size-3\",\n xl: \"size-3.5\",\n \"2xl\": \"size-4\",\n \"3xl\": \"size-4.5\",\n \"4xl\": \"size-5\",\n};\n\ninterface AvatarOnlineIndicatorProps {\n size: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\";\n status: \"online\" | \"offline\";\n className?: string;\n}\n\nexport const AvatarOnlineIndicator = ({ size, status, className }: AvatarOnlineIndicatorProps) => (\n <span\n className={cx(\n \"absolute right-0 bottom-0 flex justify-center rounded-full ring-[1.5px] ring-bg-primary\",\n status === \"online\" ? \"bg-fg-success-secondary\" : \"bg-utility-neutral-300\",\n sizes[size],\n className,\n )}\n style={{\n backgroundImage:\n \"radial-gradient(43.75% 43.75% at 50% 28.75%, rgba(255, 255, 255, 0.05) 0%, rgba(255, 255, 255, 0.00) 100%), radial-gradient(50% 50% at 50% 50%, rgba(255, 255, 255, 0.00) 74.66%, rgba(255, 255, 255, 0.18) 100%), radial-gradient(75% 75% at 50% 0%, rgba(255, 255, 255, 0.00) 0%, rgba(255, 255, 255, 0.00) 50%, rgba(255, 255, 255, 0.08) 99%, rgba(255, 255, 255, 0.00) 100%)\",\n }}\n >\n {/* Reflection */}\n <svg viewBox=\"0 0 7.2 2.85\" fill=\"none\" className=\"mt-[10%] h-[20%] w-[60%]\">\n <path\n d=\"M7.2 1.83107C7.2 2.84235 5.58823 2.19729 3.6 2.19729C1.61177 2.19729 0 2.84235 0 1.83107C0 0.8198 1.61177 0 3.6 0C5.58823 0 7.2 0.8198 7.2 1.83107Z\"\n fill=\"url(#reflection-gradient)\"\n fillOpacity=\"0.4\"\n />\n <defs>\n <linearGradient id=\"reflection-gradient\" x1=\"3.6\" y1=\"0\" x2=\"3.6\" y2=\"2.4\" gradientUnits=\"userSpaceOnUse\">\n <stop stopColor=\"white\" />\n <stop offset=\"1\" stopColor=\"white\" stopOpacity=\"0.1\" />\n </linearGradient>\n </defs>\n </svg>\n </span>\n);\n","\"use client\";\n\nimport { cx } from \"@/utils/cx\";\n\nconst sizes = {\n xs: \"size-2.5\",\n sm: \"size-3\",\n md: \"size-3.5\",\n lg: \"size-4\",\n xl: \"size-4.5\",\n \"2xl\": \"size-5\",\n \"3xl\": \"size-6\",\n \"4xl\": \"size-8\",\n};\n\ninterface VerifiedTickProps {\n size: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\";\n className?: string;\n}\n\nexport const VerifiedTick = ({ size, className }: VerifiedTickProps) => (\n <svg className={cx(\"z-10 text-utility-blue-500\", sizes[size], className)} viewBox=\"0 0 10 10\" fill=\"none\">\n <path\n d=\"M7.72237 1.77098C7.81734 2.00068 7.99965 2.18326 8.2292 2.27858L9.03413 2.61199C9.26384 2.70714 9.44635 2.88965 9.5415 3.11936C9.63665 3.34908 9.63665 3.60718 9.5415 3.83689L9.20833 4.64125C9.11313 4.87106 9.113 5.12943 9.20863 5.35913L9.54122 6.16325C9.58839 6.27702 9.61268 6.39897 9.6127 6.52214C9.61272 6.6453 9.58847 6.76726 9.54134 6.88105C9.4942 6.99484 9.42511 7.09823 9.33801 7.18531C9.2509 7.27238 9.14749 7.34144 9.03369 7.38854L8.22934 7.72171C7.99964 7.81669 7.81706 7.99899 7.72174 8.22855L7.38833 9.03348C7.29318 9.26319 7.11067 9.4457 6.88096 9.54085C6.65124 9.636 6.39314 9.636 6.16343 9.54085L5.35907 9.20767C5.12935 9.11276 4.87134 9.11295 4.64177 9.20821L3.83684 9.54115C3.60725 9.63608 3.34937 9.636 3.11984 9.54092C2.89032 9.44585 2.70791 9.26356 2.6127 9.03409L2.27918 8.22892C2.18421 7.99923 2.0019 7.81665 1.77235 7.72133L0.967421 7.38792C0.737807 7.29281 0.555355 7.11041 0.460169 6.88083C0.364983 6.65125 0.364854 6.39327 0.45981 6.16359L0.792984 5.35924C0.8879 5.12952 0.887707 4.87151 0.792445 4.64193L0.459749 3.83642C0.41258 3.72265 0.388291 3.60069 0.388272 3.47753C0.388252 3.35436 0.412501 3.2324 0.459634 3.11861C0.506767 3.00482 0.57586 2.90144 0.662965 2.81436C0.75007 2.72728 0.853479 2.65822 0.967283 2.61113L1.77164 2.27795C2.00113 2.18306 2.1836 2.00099 2.27899 1.7717L2.6124 0.966768C2.70755 0.737054 2.89006 0.554547 3.11978 0.459397C3.34949 0.364246 3.60759 0.364246 3.83731 0.459397L4.64166 0.792571C4.87138 0.887487 5.12939 0.887293 5.35897 0.792031L6.16424 0.459913C6.39392 0.364816 6.65197 0.364836 6.88164 0.459968C7.11131 0.555099 7.29379 0.737554 7.38895 0.967208L7.72247 1.77238L7.72237 1.77098Z\"\n className=\"fill-current\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.95829 3.68932C7.02509 3.58439 7.04747 3.45723 7.02051 3.3358C6.99356 3.21437 6.91946 3.10862 6.81454 3.04182C6.70961 2.97502 6.58245 2.95264 6.46102 2.97959C6.33959 3.00655 6.23384 3.08064 6.16704 3.18557L4.33141 6.06995L3.49141 5.01995C3.41375 4.92281 3.30069 4.8605 3.17709 4.84673C3.05349 4.83296 2.92949 4.86885 2.83235 4.94651C2.73522 5.02417 2.67291 5.13723 2.65914 5.26083C2.64536 5.38443 2.68125 5.50843 2.75891 5.60557L4.00891 7.16807C4.0555 7.22638 4.11533 7.27271 4.18344 7.30323C4.25154 7.33375 4.32595 7.34757 4.40047 7.34353C4.47499 7.3395 4.54747 7.31773 4.61188 7.28004C4.67629 7.24234 4.73077 7.18981 4.77079 7.12682L6.95829 3.68932Z\"\n fill=\"white\"\n />\n </svg>\n);\n","\"use client\";\n\nimport { cx } from \"@/utils/cx\";\n\ninterface AvatarCountProps {\n count: number;\n className?: string;\n}\n\nexport const AvatarCount = ({ count, className }: AvatarCountProps) => (\n <div className={cx(\"absolute right-0 bottom-0 p-px\", className)}>\n <div className=\"flex size-3.5 items-center justify-center rounded-full bg-fg-error-primary text-center text-[10px] leading-[13px] font-bold text-white\">\n {count}\n </div>\n </div>\n);\n","\"use client\";\n\n/** Figma: Avatar (18:1350) */\n\nimport { type FC, type ReactNode, useState } from \"react\";\nimport { UserIcon as User01 } from \"@phosphor-icons/react/dist/csr/User\";\nimport { cx } from \"@/utils/cx\";\nimport { AvatarOnlineIndicator, VerifiedTick } from \"./base-components\";\nimport { AvatarCount } from \"./base-components/avatar-count\";\n\nexport interface AvatarProps {\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n className?: string;\n /**\n * The class name for the main child of the avatar.\n */\n contentClassName?: string;\n src?: string | null;\n alt?: string;\n /**\n * Display an inner contrast border around the avatar image.\n */\n contrastBorder?: boolean;\n /**\n * Whether the avatar should be rounded.\n * @default true\n */\n rounded?: boolean;\n /**\n * Display an outer border around the avatar.\n */\n border?: boolean;\n /**\n * Display a badge (i.e. company logo).\n */\n badge?: ReactNode;\n /**\n * Display a status indicator.\n */\n status?: \"online\" | \"offline\";\n /**\n * Display a verified tick icon.\n *\n * @default false\n */\n verified?: boolean;\n /**\n * Display a count badge.\n */\n count?: number;\n /**\n * The initials of the user to display if no image is available.\n */\n initials?: string;\n /**\n * An icon to display if no image is available.\n */\n placeholderIcon?: FC<{ className?: string }>;\n /**\n * A placeholder to display if no image is available.\n */\n placeholder?: ReactNode;\n\n /**\n * Whether the avatar should show a focus ring when the parent group is in focus.\n * For example, when the avatar is wrapped inside a link.\n *\n * @default false\n */\n focusable?: boolean;\n}\n\nconst styles = {\n xs: { root: \"size-6\", rootWithBorder: \"p-px\", initials: \"text-xs font-semibold\", icon: \"size-4\" },\n sm: { root: \"size-8\", rootWithBorder: \"p-px\", initials: \"text-sm font-semibold\", icon: \"size-5\" },\n md: { root: \"size-10\", rootWithBorder: \"p-px\", initials: \"text-md font-semibold\", icon: \"size-6\" },\n lg: { root: \"size-12\", rootWithBorder: \"p-[1.5px]\", initials: \"text-lg font-semibold\", icon: \"size-7\" },\n xl: { root: \"size-14\", rootWithBorder: \"p-0.5\", initials: \"text-xl font-semibold\", icon: \"size-8\" },\n \"2xl\": { root: \"size-16\", rootWithBorder: \"p-0.5\", initials: \"text-display-xs font-semibold\", icon: \"size-8\" },\n};\n\nexport const Avatar = ({\n size = \"md\",\n src,\n alt,\n initials,\n placeholder,\n placeholderIcon: PlaceholderIcon,\n border,\n badge,\n status,\n verified,\n count,\n focusable = false,\n rounded = true,\n className,\n contentClassName,\n}: AvatarProps) => {\n const [isFailed, setIsFailed] = useState(false);\n\n const canShowImage = src && !isFailed;\n\n const renderMainContent = () => {\n if (canShowImage) {\n return <img data-avatar-img className=\"size-full object-cover\" src={src} alt={alt} onError={() => setIsFailed(true)} />;\n }\n\n if (initials) {\n return <span className={cx(\"text-quaternary\", styles[size].initials)}>{initials}</span>;\n }\n\n if (PlaceholderIcon) {\n return <PlaceholderIcon className={cx(\"text-fg-quaternary\", styles[size].icon)} />;\n }\n\n return placeholder || <User01 className={cx(\"text-fg-quaternary\", styles[size].icon)} />;\n };\n\n const renderBadgeContent = () => {\n if (status) {\n return <AvatarOnlineIndicator status={status} size={size} />;\n }\n\n if (verified) {\n return <VerifiedTick size={size} className={cx(\"absolute right-0 bottom-0\", size === \"xs\" && \"-right-px -bottom-px\")} />;\n }\n\n if (count) {\n return <AvatarCount count={count} />;\n }\n\n return badge;\n };\n\n return (\n <div\n data-avatar\n className={cx(\n \"relative inline-flex shrink-0 rounded-[7px]\",\n rounded && \"rounded-full\",\n // Focus styles\n focusable &&\n \"outline-none group-focus-visible:[box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]\",\n border && \"ring-1 ring-secondary_alt\",\n border && styles[size].rootWithBorder,\n styles[size].root,\n className,\n )}\n >\n <div\n className={cx(\n \"relative inline-flex size-full shrink-0 items-center justify-center overflow-hidden rounded-md bg-tertiary outline-[0.5px] -outline-offset-[0.5px] outline-black/16 before:inset-[0.5px]\",\n rounded && \"rounded-full\",\n canShowImage &&\n size !== \"xs\" &&\n \"before:absolute before:inset-0 before:rounded-[inherit] before:border before:border-white/32 before:mask-[linear-gradient(to_bottom,black_0%,transparent_25%,transparent_75%,black_100%)]\",\n contentClassName,\n )}\n >\n {renderMainContent()}\n </div>\n {renderBadgeContent()}\n </div>\n );\n};\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\n/** Viewport width at or below which mobile sheet behavior applies (matches Avenue dropdown/select). */\nexport const MOBILE_SHEET_MAX_PX = 1024;\n\n/**\n * Returns true when the viewport is at most {@link MOBILE_SHEET_MAX_PX} wide.\n * Initial value is read synchronously on mount so the first paint matches mobile layout.\n */\nexport function useIsMobile(breakpoint = MOBILE_SHEET_MAX_PX + 1): boolean {\n const [isMobile, setIsMobile] = useState(() => {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(`(max-width: ${breakpoint - 1}px)`).matches;\n });\n\n useEffect(() => {\n const mq = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);\n const handler = (e: MediaQueryListEvent) => setIsMobile(e.matches);\n mq.addEventListener(\"change\", handler);\n return () => mq.removeEventListener(\"change\", handler);\n }, [breakpoint]);\n\n return isMobile;\n}\n","\"use client\";\n\nimport { useEffect, useLayoutEffect, useState, type CSSProperties } from \"react\";\n\n/** Matches Avenue dropdown/select mobile sheet motion. */\nexport const MOBILE_SHEET_MOTION_MS = 175;\nexport const MOBILE_SHEET_ENTRY_EASING = \"cubic-bezier(0.85, 0, 0.15, 1)\";\nexport const MOBILE_SHEET_EXIT_EASING = \"cubic-bezier(0.85, 0, 1, 0.15)\";\nexport const MOBILE_SHEET_SLIDE_ENTRANCE_OFFSET_PX = 120;\n\nexport interface SelectMobileOptions {\n /** When `false`, keep the floating menu on narrow viewports. Default `true`. */\n sheet?: boolean;\n /** Optional header title on the same row as the close control. */\n title?: string;\n /** Extra classes on the sheet panel (merged after base sheet styles). */\n className?: string;\n /** Extra classes on the scrollable body below the header. */\n contentClassName?: string;\n}\n\nexport function resolveSelectMobileOptions(mobileOptions?: SelectMobileOptions) {\n return {\n sheet: mobileOptions?.sheet ?? true,\n title: mobileOptions?.title,\n sheetClassName: mobileOptions?.className,\n contentClassName: mobileOptions?.contentClassName,\n };\n}\n\nexport function useMobileSheetAnimation(\n open: boolean,\n enabled: boolean,\n slideEntrance = true,\n slideOffsetPx = MOBILE_SHEET_SLIDE_ENTRANCE_OFFSET_PX,\n) {\n const [shouldRender, setShouldRender] = useState(open);\n const [isAnimating, setIsAnimating] = useState(false);\n\n useLayoutEffect(() => {\n if (!enabled) {\n setShouldRender(open);\n return;\n }\n\n if (open) {\n setShouldRender(true);\n }\n }, [open, enabled]);\n\n useEffect(() => {\n if (!enabled || open) return;\n\n const timer = setTimeout(() => setShouldRender(false), MOBILE_SHEET_MOTION_MS);\n return () => clearTimeout(timer);\n }, [open, enabled]);\n\n useLayoutEffect(() => {\n if (!enabled || open || !shouldRender) return;\n setIsAnimating(false);\n }, [enabled, open, shouldRender]);\n\n useEffect(() => {\n if (!enabled || !shouldRender || !open) return;\n\n let raf2 = 0;\n const raf1 = requestAnimationFrame(() => {\n raf2 = requestAnimationFrame(() => setIsAnimating(true));\n });\n\n return () => {\n cancelAnimationFrame(raf1);\n if (raf2) cancelAnimationFrame(raf2);\n };\n }, [shouldRender, open, enabled]);\n\n const motionEasing = open ? MOBILE_SHEET_ENTRY_EASING : MOBILE_SHEET_EXIT_EASING;\n const hiddenTransform = slideEntrance ? `translateY(${slideOffsetPx}px)` : \"translateY(100%)\";\n\n const panelStyle: CSSProperties | undefined = enabled\n ? {\n transform: isAnimating ? \"translateY(0)\" : hiddenTransform,\n opacity: isAnimating ? 1 : 0,\n transitionProperty: \"transform, opacity\",\n transitionDuration: `${MOBILE_SHEET_MOTION_MS}ms`,\n transitionTimingFunction: motionEasing,\n }\n : undefined;\n\n const backdropStyle: CSSProperties | undefined = enabled\n ? {\n opacity: isAnimating ? 1 : 0,\n transitionProperty: \"opacity\",\n transitionDuration: `${MOBILE_SHEET_MOTION_MS}ms`,\n transitionTimingFunction: motionEasing,\n }\n : undefined;\n\n return { shouldRender, isAnimating, panelStyle, backdropStyle };\n}\n","\"use client\";\n\n/** Figma: Select menu popover (11132:11643) — desktop floating menu; mobile bottom sheet (≤1024px). */\n\nimport { useContext, useEffect, useMemo, type ReactNode, type RefAttributes } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { XIcon as X } from \"@phosphor-icons/react/dist/csr/X\";\nimport type { PopoverProps as AriaPopoverProps } from \"react-aria-components\";\nimport { OverlayTriggerStateContext, Popover as AriaPopover } from \"react-aria-components\";\nimport { useIsMobile } from \"@/hooks/use-is-mobile\";\nimport {\n resolveSelectMobileOptions,\n useMobileSheetAnimation,\n type SelectMobileOptions,\n} from \"@/components/base/select/select-mobile-sheet\";\nimport { cx } from \"@/utils/cx\";\n\ninterface PopoverProps extends AriaPopoverProps, RefAttributes<HTMLElement> {\n size: \"sm\" | \"md\" | \"lg\";\n /** Narrow-viewport (≤1024px) bottom-sheet options. */\n mobileOptions?: SelectMobileOptions;\n /**\n * When `true`, the popover shell does not scroll and has no max-height;\n * inner content manages its own regions (e.g. multi-select search + list + footer).\n * @default false\n */\n compoundContent?: boolean;\n}\n\nfunction MobileSheetCloseButton({ onClose }: { onClose: () => void }) {\n return (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onClose();\n }}\n className=\"flex size-12 shrink-0 cursor-pointer items-center justify-center rounded-full text-fg-primary transition duration-100 ease-linear hover:bg-primary_hover active:scale-[0.96] focus-visible:outline-none focus-visible:[box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]\"\n >\n <X className=\"size-5\" aria-hidden=\"true\" />\n <span className=\"sr-only\">Close</span>\n </button>\n );\n}\n\nfunction MobileSheetChrome({\n title,\n contentClassName,\n onClose,\n children,\n}: {\n title?: string;\n contentClassName?: string;\n onClose: () => void;\n children: ReactNode;\n}) {\n return (\n <>\n <div className={cx(\"flex w-full shrink-0 items-center py-2 pl-4 pr-2\", title ? \"justify-between gap-3\" : \"justify-end\")}>\n {title ? <p className=\"min-w-0 flex-1 truncate text-base font-semibold text-primary\">{title}</p> : null}\n <MobileSheetCloseButton onClose={onClose} />\n </div>\n <div\n className={cx(\n \"min-h-0 flex-1 overflow-y-auto pb-[calc(5rem+env(safe-area-inset-bottom,0px))]\",\n contentClassName,\n )}\n >\n {children}\n </div>\n </>\n );\n}\n\nexport const Popover = ({ mobileOptions, children, size, className, style, compoundContent = false, ...props }: PopoverProps) => {\n const isMobile = useIsMobile();\n const resolvedMobile = useMemo(() => resolveSelectMobileOptions(mobileOptions), [mobileOptions]);\n const useMobileSheet = isMobile && resolvedMobile.sheet;\n const overlayState = useContext(OverlayTriggerStateContext);\n const open = overlayState?.isOpen ?? false;\n const { shouldRender, panelStyle, backdropStyle } = useMobileSheetAnimation(open, useMobileSheet);\n\n useEffect(() => {\n if (!useMobileSheet || !open) return;\n\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = prev;\n };\n }, [useMobileSheet, open]);\n\n const close = () => overlayState?.close();\n const showMobileSheet = useMobileSheet && shouldRender;\n const isMobileSheetExiting = showMobileSheet && !open;\n\n const mobileScrim =\n useMobileSheet && shouldRender && typeof document !== \"undefined\"\n ? createPortal(\n <div\n className=\"fixed inset-0 z-50 bg-overlay/70\"\n style={backdropStyle}\n onClick={close}\n aria-hidden=\"true\"\n />,\n document.body,\n )\n : null;\n\n return (\n <>\n {mobileScrim}\n <AriaPopover\n placement=\"bottom\"\n containerPadding={0}\n offset={4}\n {...props}\n isExiting={isMobileSheetExiting}\n {...(useMobileSheet ? { \"data-select-mobile-sheet\": true } : {})}\n style={useMobileSheet ? { ...panelStyle, ...style } : style}\n className={(state) =>\n cx(\n \"outline-hidden\",\n !useMobileSheet && [\n \"w-(--trigger-width) origin-(--trigger-anchor-point) rounded-lg bg-primary shadow-lg ring-1 ring-secondary_alt will-change-transform\",\n compoundContent\n ? \"overflow-hidden outline-hidden\"\n : \"overflow-x-hidden overflow-y-auto py-1 outline-hidden\",\n state.isEntering &&\n \"duration-150 ease-out animate-in fade-in placement-right:slide-in-from-left-0.5 placement-top:slide-in-from-bottom-0.5 placement-bottom:slide-in-from-top-0.5\",\n state.isExiting &&\n \"duration-100 ease-in animate-out fade-out placement-right:slide-out-to-left-0.5 placement-top:slide-out-to-bottom-0.5 placement-bottom:slide-out-to-top-0.5\",\n !compoundContent && size === \"sm\" && \"max-h-56!\",\n !compoundContent && size === \"md\" && \"max-h-64!\",\n !compoundContent && size === \"lg\" && \"max-h-80!\",\n ],\n useMobileSheet && [\n \"fixed! inset-x-0! bottom-0! top-auto! left-0! right-0! z-[51] flex w-full! max-w-none! flex-col overflow-hidden rounded-t-2xl rounded-b-none border-x-0 border-t border-secondary bg-primary shadow-xl\",\n \"max-h-[min(90dvh,calc(100dvh-env(safe-area-inset-bottom,0px)))]\",\n resolvedMobile.sheetClassName,\n ],\n typeof className === \"function\" ? className(state) : className,\n )\n }\n >\n {(state) => {\n const content = typeof children === \"function\" ? children(state) : children;\n\n if (useMobileSheet) {\n return (\n <MobileSheetChrome\n title={resolvedMobile.title}\n contentClassName={resolvedMobile.contentClassName}\n onClose={close}\n >\n {content}\n </MobileSheetChrome>\n );\n }\n\n return content;\n }}\n </AriaPopover>\n </>\n );\n};\n","\"use client\";\n\nimport type { FC, ReactNode } from \"react\";\nimport { createContext } from \"react\";\nimport type { SelectMobileOptions } from \"./select-mobile-sheet\";\n\nexport type SelectItemType = {\n /** Unique identifier for the item. */\n id: string | number;\n /** The primary display text. */\n label?: string;\n /** Avatar image URL. */\n avatarUrl?: string;\n /** Whether the item is disabled. */\n isDisabled?: boolean;\n /** Secondary text displayed alongside the label. */\n supportingText?: string;\n /** Leading icon component or element. */\n icon?: FC | ReactNode;\n};\n\nexport interface CommonProps {\n /** Helper text displayed below the input. */\n hint?: string;\n /** Field label displayed above the input. */\n label?: string;\n /** Tooltip text for the help icon next to the label. */\n tooltip?: string;\n /**\n * The size of the component.\n * @default \"md\"\n */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Placeholder text when no value is selected. */\n placeholder?: string;\n /** Whether to hide the required indicator from the label. */\n hideRequiredIndicator?: boolean;\n /**\n * Narrow-viewport (≤1024px) bottom-sheet options for the menu.\n * `sheet` defaults to `true` on viewports ≤1024px wide.\n */\n mobileOptions?: SelectMobileOptions;\n}\n\nexport const sizes = {\n sm: {\n root: \"py-2 pl-3 pr-2.5 gap-2 *:data-icon:size-4 *:data-icon:stroke-[2.25px]\",\n withIcon: \"\",\n text: \"text-sm\",\n textContainer: \"gap-x-1.5\",\n shortcut: \"pr-2.5\",\n },\n md: { root: \"py-2 px-3 gap-2 *:data-icon:size-5\", withIcon: \"\", text: \"text-md\", textContainer: \"gap-x-1.5\", shortcut: \"pr-2.5\" },\n lg: { root: \"py-2.5 px-3.5 gap-2 *:data-icon:size-5\", withIcon: \"\", text: \"text-md\", textContainer: \"gap-x-1.5\", shortcut: \"pr-3\" },\n};\n\n/** Shared search-field layout for multi-select and combo box mobile sheets. */\nexport const searchSizes = {\n sm: { wrapper: \"py-1\", root: \"px-3 py-2 gap-2 *:data-icon:size-4 *:data-icon:stroke-[2.25px]\", text: \"text-sm\" },\n md: { wrapper: \"py-0.5\", root: \"px-3 py-2 gap-2 *:data-icon:size-5\", text: \"text-md\" },\n lg: { wrapper: \"py-0.5\", root: \"px-3.5 py-2.5 gap-2 *:data-icon:size-5\", text: \"text-md\" },\n};\n\nexport const SelectContext = createContext<{ size: \"sm\" | \"md\" | \"lg\" }>({ size: \"md\" });\n\nexport type { SelectMobileOptions } from \"./select-mobile-sheet\";\n","import { useEffect } from \"react\";\nimport type { RefObject } from \"@react-types/shared\";\n\n/**\n * Checks if the ResizeObserver API is supported.\n * @returns True if the ResizeObserver API is supported, false otherwise.\n */\nfunction hasResizeObserver() {\n return typeof window.ResizeObserver !== \"undefined\";\n}\n\n/**\n * The options for the useResizeObserver hook.\n */\ntype useResizeObserverOptionsType<T> = {\n /**\n * The ref to the element to observe.\n */\n ref: RefObject<T | undefined | null> | undefined;\n /**\n * The box to observe.\n */\n box?: ResizeObserverBoxOptions;\n /**\n * The callback function to call when the size changes.\n */\n onResize: () => void;\n};\n\n/**\n * A hook that observes the size of an element and calls a callback function when the size changes.\n * @param options - The options for the hook.\n */\nexport function useResizeObserver<T extends Element>(options: useResizeObserverOptionsType<T>) {\n const { ref, box, onResize } = options;\n\n useEffect(() => {\n const element = ref?.current;\n if (!element) {\n return;\n }\n\n if (!hasResizeObserver()) {\n window.addEventListener(\"resize\", onResize, false);\n\n return () => {\n window.removeEventListener(\"resize\", onResize, false);\n };\n } else {\n const resizeObserverInstance = new window.ResizeObserver((entries) => {\n if (!entries.length) {\n return;\n }\n\n onResize();\n });\n\n resizeObserverInstance.observe(element, { box });\n\n return () => {\n if (element) {\n resizeObserverInstance.unobserve(element);\n }\n };\n }\n }, [onResize, ref, box]);\n}\n","\"use client\";\n\n/** Figma: Select / ComboBox (11132:11643) */\n\nimport type { FC, FocusEventHandler, PointerEventHandler, ReactNode, Ref, RefAttributes, RefObject } from \"react\";\nimport { isValidElement, useCallback, useContext, useMemo, useRef, useState } from \"react\";\nimport { MagnifyingGlassIcon as SearchLg } from \"@phosphor-icons/react/dist/csr/MagnifyingGlass\";\nimport type { ComboBoxProps as AriaComboBoxProps, GroupProps as AriaGroupProps, ListBoxProps as AriaListBoxProps } from \"react-aria-components\";\nimport {\n Button as AriaButton,\n ComboBox as AriaComboBox,\n Group as AriaGroup,\n Input as AriaInput,\n ListBox as AriaListBox,\n ComboBoxStateContext,\n} from \"react-aria-components\";\nimport { HintText } from \"@/components/base/input/hint-text\";\nimport { Label } from \"@/components/base/input/label\";\nimport { Popover } from \"@/components/base/select/popover\";\nimport { resolveSelectMobileOptions } from \"@/components/base/select/select-mobile-sheet\";\nimport { type CommonProps, searchSizes, SelectContext, type SelectItemType, sizes } from \"@/components/base/select/select-shared\";\nimport { useIsMobile } from \"@/hooks/use-is-mobile\";\nimport { useResizeObserver } from \"@/hooks/use-resize-observer\";\nimport { cx } from \"@/utils/cx\";\nimport { inputErrorFocusRingShadow, inputFocusRingShadow } from \"@/components/base/input/input\";\nimport { isReactComponent } from \"@/utils/is-react-component\";\n\ninterface ComboBoxProps extends Omit<AriaComboBoxProps<SelectItemType>, \"children\" | \"items\">, RefAttributes<HTMLDivElement>, CommonProps {\n shortcut?: boolean;\n items?: SelectItemType[];\n popoverClassName?: string;\n shortcutClassName?: string;\n /** Leading icon component displayed before the input. */\n icon?: FC | ReactNode;\n children: AriaListBoxProps<SelectItemType>[\"children\"];\n}\n\ninterface ComboBoxValueProps extends AriaGroupProps {\n size: \"sm\" | \"md\" | \"lg\";\n shortcut: boolean;\n placeholder?: string;\n shortcutClassName?: string;\n icon?: FC | ReactNode;\n isInvalid?: boolean;\n onFocus?: FocusEventHandler;\n onPointerEnter?: PointerEventHandler;\n ref?: Ref<HTMLDivElement>;\n}\n\ninterface ComboBoxMobileTriggerProps {\n size: \"sm\" | \"md\" | \"lg\";\n placeholder?: string;\n icon?: FC | ReactNode;\n isInvalid?: boolean;\n onPointerEnter?: PointerEventHandler;\n ref?: Ref<HTMLButtonElement>;\n}\n\nconst ComboBoxMobileTrigger = ({ size, placeholder, icon: IconProp, isInvalid, onPointerEnter, ref }: ComboBoxMobileTriggerProps) => {\n const state = useContext(ComboBoxStateContext);\n const selectedItem = state?.selectedItem?.value ?? null;\n\n return (\n <AriaButton\n ref={ref}\n onPress={() => state?.open()}\n onPointerEnter={onPointerEnter}\n className={({ isFocusVisible, isDisabled }) =>\n cx(\n \"relative flex w-full cursor-pointer items-center gap-2 rounded-lg border border-solid border-primary bg-primary text-left shadow-xs outline-hidden transition-[border-color,box-shadow] duration-100 ease-linear\",\n isDisabled && \"cursor-not-allowed opacity-50\",\n !isInvalid && (isFocusVisible || state?.isOpen) && inputFocusRingShadow,\n isInvalid && !(isFocusVisible || state?.isOpen) && \"border-error_subtle\",\n isInvalid && (isFocusVisible || state?.isOpen) && inputErrorFocusRingShadow,\n \"*:data-icon:shrink-0 *:data-icon:text-fg-quaternary\",\n sizes[size].root,\n )\n }\n >\n {isReactComponent(IconProp) ? (\n <IconProp data-icon className=\"pointer-events-none\" aria-hidden=\"true\" />\n ) : isValidElement(IconProp) ? (\n IconProp\n ) : (\n <SearchLg data-icon className=\"pointer-events-none\" aria-hidden=\"true\" />\n )}\n\n {selectedItem ? (\n <section className={cx(\"flex w-full truncate\", sizes[size].textContainer)}>\n <p className={cx(\"truncate font-medium text-primary\", sizes[size].text)}>{selectedItem.label}</p>\n {selectedItem.supportingText && <p className={cx(\"text-tertiary\", sizes[size].text)}>{selectedItem.supportingText}</p>}\n </section>\n ) : (\n <p className={cx(\"truncate text-placeholder\", sizes[size].text)}>{placeholder}</p>\n )}\n </AriaButton>\n );\n};\n\ninterface ComboBoxSheetSearchProps {\n size: \"sm\" | \"md\" | \"lg\";\n placeholder?: string;\n icon?: FC | ReactNode;\n}\n\nconst ComboBoxSheetSearch = ({ size, placeholder, icon: IconProp }: ComboBoxSheetSearchProps) => (\n <div className={cx(\"shrink-0 border-b border-secondary\", searchSizes[size].wrapper)}>\n <div className={cx(\"flex items-center\", searchSizes[size].root)}>\n {isReactComponent(IconProp) ? (\n <IconProp data-icon aria-hidden=\"true\" className=\"shrink-0 text-fg-quaternary\" />\n ) : isValidElement(IconProp) ? (\n IconProp\n ) : (\n <SearchLg data-icon aria-hidden=\"true\" className=\"shrink-0 text-fg-quaternary\" />\n )}\n <AriaInput\n placeholder={placeholder}\n className={cx(\n \"w-full appearance-none bg-transparent text-primary caret-alpha-black/90 outline-hidden placeholder:text-placeholder\",\n searchSizes[size].text,\n )}\n />\n </div>\n </div>\n);\n\nconst ComboBoxValue = ({ size, shortcut, placeholder, shortcutClassName, icon: IconProp, isInvalid, ref, ...otherProps }: ComboBoxValueProps) => {\n const state = useContext(ComboBoxStateContext);\n\n const value = state?.selectedItem?.value || null;\n const inputValue = state?.inputValue || null;\n\n const first = inputValue?.split(value?.supportingText)?.[0] || \"\";\n const last = inputValue?.split(first)[1];\n\n return (\n <AriaGroup\n ref={ref}\n {...otherProps}\n isInvalid={isInvalid}\n className={({ isDisabled, isInvalid: isGroupInvalid }) =>\n cx(\n \"relative flex w-full items-center gap-2 rounded-lg border border-solid border-primary bg-primary shadow-xs outline-hidden transition-[border-color,box-shadow] duration-100 ease-linear\",\n isDisabled && \"cursor-not-allowed opacity-50\",\n !isGroupInvalid && state?.isOpen && inputFocusRingShadow,\n !isGroupInvalid &&\n \"has-[input:focus-visible]:border-brand has-[input:focus-visible]:ring-1 has-[input:focus-visible]:ring-inset has-[input:focus-visible]:ring-brand\",\n isGroupInvalid && !state?.isOpen && \"border-error_subtle\",\n isGroupInvalid && state?.isOpen && inputErrorFocusRingShadow,\n isGroupInvalid &&\n \"has-[input:focus-visible]:border-error has-[input:focus-visible]:ring-1 has-[input:focus-visible]:ring-inset has-[input:focus-visible]:ring-error\",\n\n // Icon styles\n \"*:data-icon:shrink-0 *:data-icon:text-fg-quaternary\",\n\n sizes[size].root,\n )\n }\n >\n {isReactComponent(IconProp) ? (\n <IconProp data-icon className=\"pointer-events-none\" aria-hidden=\"true\" />\n ) : isValidElement(IconProp) ? (\n IconProp\n ) : (\n <SearchLg data-icon className=\"pointer-events-none\" aria-hidden=\"true\" />\n )}\n\n <div className=\"relative flex w-full items-center\">\n {inputValue && (\n <span className={cx(\"absolute top-1/2 z-0 inline-flex w-full -translate-y-1/2 truncate\", sizes[size].textContainer)} aria-hidden=\"true\">\n <p className={cx(\"font-medium text-primary\", sizes[size].text)}>{first}</p>\n {last && <p className={cx(\"-ml-0.75 text-tertiary\", sizes[size].text)}>{last}</p>}\n </span>\n )}\n\n <AriaInput\n placeholder={placeholder}\n className={cx(\n \"z-10 w-full appearance-none bg-transparent text-transparent caret-alpha-black/90 placeholder:text-placeholder focus:outline-hidden disabled:cursor-not-allowed\",\n sizes[size].text,\n )}\n />\n </div>\n\n {shortcut && (\n <div\n className={cx(\n \"absolute inset-y-0.5 right-0.5 z-10 hidden items-center rounded-r-[inherit] bg-linear-to-r from-transparent to-bg-primary to-40% pl-8 md:flex\",\n sizes[size].shortcut,\n shortcutClassName,\n )}\n >\n <span\n className=\"pointer-events-none rounded px-1 py-px text-xs font-medium text-quaternary ring-1 ring-secondary select-none ring-inset\"\n aria-hidden=\"true\"\n >\n ⌘K\n </span>\n </div>\n )}\n </AriaGroup>\n );\n};\n\nexport const ComboBox = ({\n placeholder = \"Search\",\n shortcut = true,\n size = \"md\",\n children,\n items,\n shortcutClassName,\n icon,\n hideRequiredIndicator,\n mobileOptions,\n ...otherProps\n}: ComboBoxProps) => {\n const isMobile = useIsMobile();\n const resolvedMobile = useMemo(() => resolveSelectMobileOptions(mobileOptions), [mobileOptions]);\n const useMobileSheet = isMobile && resolvedMobile.sheet;\n const triggerRef = useRef<HTMLButtonElement | HTMLDivElement | null>(null);\n const [popoverWidth, setPopoverWidth] = useState(\"\");\n\n // Resize observer for popover width\n const onResize = useCallback(() => {\n if (!triggerRef.current) return;\n\n const divRect = triggerRef.current.getBoundingClientRect();\n\n setPopoverWidth(divRect.width + \"px\");\n }, []);\n\n useResizeObserver({\n ref: triggerRef,\n box: \"border-box\",\n onResize,\n });\n\n return (\n <SelectContext.Provider value={{ size }}>\n <AriaComboBox menuTrigger={useMobileSheet ? \"manual\" : \"focus\"} {...otherProps}>\n {(state) => (\n <div className=\"flex flex-col gap-1.5\">\n {otherProps.label && (\n <Label isRequired={hideRequiredIndicator ? false : state.isRequired} tooltip={otherProps.tooltip}>\n {otherProps.label}\n </Label>\n )}\n\n {useMobileSheet ? (\n <ComboBoxMobileTrigger\n ref={triggerRef as Ref<HTMLButtonElement>}\n placeholder={placeholder}\n icon={icon}\n size={size}\n isInvalid={state.isInvalid}\n onPointerEnter={onResize}\n />\n ) : (\n <ComboBoxValue\n ref={triggerRef as Ref<HTMLDivElement>}\n placeholder={placeholder}\n shortcut={shortcut}\n shortcutClassName={shortcutClassName}\n icon={icon}\n size={size}\n isInvalid={state.isInvalid}\n // This is a workaround to correctly calculating the trigger width\n // while using ResizeObserver wasn't 100% reliable.\n onFocus={onResize}\n onPointerEnter={onResize}\n />\n )}\n\n <Popover\n size={size}\n triggerRef={triggerRef as RefObject<Element | null>}\n compoundContent={useMobileSheet}\n style={useMobileSheet ? undefined : { width: popoverWidth }}\n className={otherProps.popoverClassName}\n mobileOptions={{ title: otherProps.label, ...mobileOptions }}\n >\n {useMobileSheet ? (\n <div className=\"flex min-h-0 flex-col overflow-hidden outline-hidden\">\n <ComboBoxSheetSearch size={size} placeholder={placeholder} icon={icon} />\n <AriaListBox items={items} className=\"min-h-0 flex-1 overflow-y-auto py-1 outline-hidden\">\n {children}\n </AriaListBox>\n </div>\n ) : (\n <AriaListBox items={items} className=\"size-full outline-hidden\">\n {children}\n </AriaListBox>\n )}\n </Popover>\n\n {otherProps.hint && (\n <HintText isInvalid={state.isInvalid} className={cx(size === \"sm\" && \"text-xs\")}>\n {otherProps.hint}\n </HintText>\n )}\n </div>\n )}\n </AriaComboBox>\n </SelectContext.Provider>\n );\n};\n","\"use client\";\n\nimport { useLayoutEffect, useRef, type ReactNode, type Ref } from \"react\";\nimport { Checkbox as AriaCheckbox, type CheckboxProps as AriaCheckboxProps } from \"react-aria-components\";\nimport { cx } from \"@/utils/cx\";\n\nconst CHECKBOX_TICK_DELAY_MS = 60;\nconst CHECKBOX_TICK_DRAW_MS = 100;\n\n/** Draw-on-check tick animation — remounts when checked so it replays each time. */\nfunction CheckboxAnimatedCheckMark({ pixelSize, className }: { pixelSize: number; className?: string }) {\n const pathRef = useRef<SVGPathElement>(null);\n\n useLayoutEffect(() => {\n const path = pathRef.current;\n if (!path || typeof path.getTotalLength !== \"function\") return;\n const len = path.getTotalLength();\n if (len <= 0) return;\n\n path.style.strokeDasharray = `${len}`;\n path.style.strokeDashoffset = `${len}`;\n\n if (typeof path.animate !== \"function\") {\n path.style.strokeDashoffset = \"0\";\n return;\n }\n\n const anim = path.animate([{ strokeDashoffset: len }, { strokeDashoffset: 0 }], {\n duration: CHECKBOX_TICK_DRAW_MS,\n delay: CHECKBOX_TICK_DELAY_MS,\n easing: \"cubic-bezier(0.45, 0, 0.2, 1)\",\n fill: \"forwards\",\n });\n return () => anim.cancel();\n }, []);\n\n return (\n <svg aria-hidden=\"true\" width={pixelSize} height={pixelSize} viewBox=\"0 0 14 14\" fill=\"none\" className={cx(\"block\", className)}>\n <path\n ref={pathRef}\n d=\"M2.33325 7L5.24992 9.91667L11.6666 3.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\n/** Figma Focus rings/focus-ring — 2px surface gap + 4px brand ring (matches Button). */\nconst focusRingShadow =\n \"outline-none [box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]\";\n\nexport interface CheckboxBaseProps {\n size?: \"sm\" | \"md\";\n className?: string;\n isFocusVisible?: boolean;\n isSelected?: boolean;\n isDisabled?: boolean;\n isIndeterminate?: boolean;\n}\n\nexport const CheckboxBase = ({ className, isSelected, isDisabled, isIndeterminate, size = \"sm\", isFocusVisible = false }: CheckboxBaseProps) => {\n const isChecked = isSelected || isIndeterminate;\n const iconPixelSize = size === \"sm\" ? 10 : 14;\n\n return (\n <div\n className={cx(\n \"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center overflow-clip border border-solid border-primary\",\n size === \"sm\" ? \"size-4 rounded-xs\" : \"size-5 rounded-sm\",\n isChecked ? \"border-transparent bg-brand-solid\" : \"bg-primary\",\n !isChecked && !isDisabled && \"group-hover:bg-primary_hover\",\n isDisabled && \"cursor-not-allowed opacity-50\",\n isDisabled && !isChecked && \"bg-tertiary\",\n isFocusVisible && !isDisabled && focusRingShadow,\n className,\n )}\n >\n {isIndeterminate && (\n <svg\n aria-hidden=\"true\"\n width={iconPixelSize}\n height={iconPixelSize}\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n className=\"pointer-events-none block text-fg-white\"\n >\n <path d=\"M2.91675 7H11.0834\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )}\n\n {isSelected && !isIndeterminate && (\n <CheckboxAnimatedCheckMark pixelSize={iconPixelSize} className=\"pointer-events-none text-fg-white\" />\n )}\n </div>\n );\n};\nCheckboxBase.displayName = \"CheckboxBase\";\n\ninterface CheckboxProps extends AriaCheckboxProps {\n ref?: Ref<HTMLLabelElement>;\n size?: \"sm\" | \"md\";\n label?: ReactNode;\n hint?: ReactNode;\n}\n\nexport const Checkbox = ({ label, hint, size = \"sm\", className, ...ariaCheckboxProps }: CheckboxProps) => {\n const sizes = {\n sm: {\n root: \"gap-2\",\n textWrapper: \"\",\n label: \"text-sm font-medium\",\n hint: \"text-sm\",\n },\n md: {\n root: \"gap-3\",\n textWrapper: \"gap-0.5 break-words\",\n label: \"text-md font-medium\",\n hint: \"text-md\",\n },\n };\n\n return (\n <AriaCheckbox\n {...ariaCheckboxProps}\n className={(state) =>\n cx(\n \"group relative flex items-start\",\n state.isDisabled && \"cursor-not-allowed\",\n sizes[size].root,\n typeof className === \"function\" ? className(state) : className,\n )\n }\n >\n {({ isSelected, isIndeterminate, isDisabled, isFocusVisible }) => (\n <>\n <CheckboxBase\n size={size}\n isSelected={isSelected}\n isIndeterminate={isIndeterminate}\n isDisabled={isDisabled}\n isFocusVisible={isFocusVisible}\n className={label || hint ? \"mt-0.5\" : \"\"}\n />\n {(label || hint) && (\n <div className={cx(\"inline-flex flex-col\", sizes[size].textWrapper)}>\n {label && <p className={cx(\"text-secondary select-none\", sizes[size].label)}>{label}</p>}\n {hint && (\n <span className={cx(\"text-tertiary\", sizes[size].hint)} onClick={(event) => event.stopPropagation()}>\n {hint}\n </span>\n )}\n </div>\n )}\n </>\n )}\n </AriaCheckbox>\n );\n};\nCheckbox.displayName = \"Checkbox\";\n","\"use client\";\n\n/** Figma: Select item (11132:11643) — selected uses bg-brand-primary_alt; hover/focus use bg-primary_hover. */\n\nimport { isValidElement, useContext } from \"react\";\nimport { CheckIcon as Check } from \"@phosphor-icons/react/dist/csr/Check\";\nimport type { ListBoxItemProps as AriaListBoxItemProps } from \"react-aria-components\";\nimport { ListBoxItem as AriaListBoxItem, Text as AriaText } from \"react-aria-components\";\nimport { Avatar } from \"@/components/base/avatar/avatar\";\nimport { CheckboxBase } from \"@/components/base/checkbox/checkbox\";\nimport { cx } from \"@/utils/cx\";\nimport { isReactComponent } from \"@/utils/is-react-component\";\nimport type { SelectItemType } from \"./select-shared\";\nimport { SelectContext } from \"./select-shared\";\n\nconst sizes = {\n sm: {\n root: \"p-2 pr-2.5 gap-2 *:data-icon:size-4 *:data-icon:stroke-[2.25px]\",\n text: \"text-sm\",\n textContainer: \"gap-x-1.5\",\n check: \"size-4 stroke-[2.25px]\",\n checkbox: \"sm\" as const,\n },\n md: {\n root: \"p-2 pr-2.5 gap-2 *:data-icon:size-5\",\n text: \"text-md\",\n textContainer: \"gap-x-2\",\n check: \"size-5\",\n checkbox: \"sm\" as const,\n },\n lg: {\n root: \"p-2.5 pl-2 gap-2 *:data-icon:size-5\",\n text: \"text-md\",\n textContainer: \"gap-x-2\",\n check: \"size-5\",\n checkbox: \"md\" as const,\n },\n};\n\ninterface SelectItemProps extends Omit<AriaListBoxItemProps<SelectItemType>, \"id\">, SelectItemType {\n /** The selection indicator to be displayed on the item. */\n selectionIndicator?: \"checkmark\" | \"checkbox\" | \"none\";\n /** The alignment of the selection indicator. */\n selectionIndicatorAlign?: \"left\" | \"right\";\n}\n\nexport const SelectItem = ({\n label,\n id,\n value,\n avatarUrl,\n supportingText,\n isDisabled,\n icon: Icon,\n className,\n children,\n selectionIndicator = \"checkmark\",\n selectionIndicatorAlign = \"right\",\n ...props\n}: SelectItemProps) => {\n const { size } = useContext(SelectContext);\n\n const labelOrChildren = label || (typeof children === \"string\" ? children : \"\");\n const textValue = supportingText ? labelOrChildren + \" \" + supportingText : labelOrChildren;\n\n const isLeft = selectionIndicatorAlign === \"left\";\n\n return (\n <AriaListBoxItem\n id={id}\n value={\n value ?? {\n id,\n label: labelOrChildren,\n avatarUrl,\n supportingText,\n isDisabled,\n icon: Icon,\n }\n }\n textValue={textValue}\n isDisabled={isDisabled}\n {...props}\n className={(state) =>\n cx(\"w-full py-px outline-hidden\", size === \"sm\" ? \"px-1\" : \"px-1.5\", typeof className === \"function\" ? className(state) : className)\n }\n >\n {(state) => (\n <div\n className={cx(\n \"flex cursor-pointer items-center rounded-md outline-hidden select-none\",\n (state.isFocused || state.isHovered) &&\n !(state.isSelected && selectionIndicator !== \"checkbox\") &&\n \"bg-primary_hover\",\n state.isSelected && selectionIndicator !== \"checkbox\" && \"bg-brand-primary_alt\",\n state.isDisabled && \"cursor-not-allowed opacity-50\",\n\n // Icon styles\n \"*:data-icon:shrink-0 *:data-icon:text-fg-quaternary\",\n\n sizes[size].root,\n )}\n >\n {isLeft && selectionIndicator === \"checkbox\" && (\n <CheckboxBase size={sizes[size].checkbox} isSelected={state.isSelected} isDisabled={state.isDisabled} />\n )}\n\n {avatarUrl ? (\n <Avatar aria-hidden=\"true\" size=\"xs\" src={avatarUrl} alt={label} className={cx(size === \"sm\" && \"size-5\")} />\n ) : isReactComponent(Icon) ? (\n <Icon data-icon aria-hidden=\"true\" />\n ) : isValidElement(Icon) ? (\n Icon\n ) : null}\n\n <div className={cx(\"flex w-full min-w-0 flex-1 flex-wrap\", sizes[size].textContainer)}>\n <AriaText slot=\"label\" className={cx(\"truncate font-medium whitespace-nowrap text-primary\", sizes[size].text)}>\n {label || (typeof children === \"function\" ? children(state) : children)}\n </AriaText>\n\n {supportingText && (\n <AriaText slot=\"description\" className={cx(\"whitespace-nowrap text-tertiary\", sizes[size].text)}>\n {supportingText}\n </AriaText>\n )}\n </div>\n\n {state.isSelected && selectionIndicator === \"checkmark\" && (\n <Check aria-hidden=\"true\" className={cx(\"ml-auto text-fg-brand-primary\", sizes[size].check)} />\n )}\n\n {!isLeft && selectionIndicator === \"checkbox\" && (\n <CheckboxBase size={sizes[size].checkbox} isSelected={state.isSelected} isDisabled={state.isDisabled} className=\"ml-auto\" />\n )}\n </div>\n )}\n </AriaListBoxItem>\n );\n};\n","\"use client\";\n\n/** Figma: Select trigger (11132:11643) — inset ring focus; error focus uses border-error. */\n\nimport type { FC, ReactNode, Ref, RefAttributes } from \"react\";\nimport { isValidElement } from \"react\";\nimport { CaretDownIcon as ChevronDown } from \"@phosphor-icons/react/dist/csr/CaretDown\";\nimport type { SelectProps as AriaSelectProps } from \"react-aria-components\";\nimport { Button as AriaButton, ListBox as AriaListBox, Select as AriaSelect, SelectValue as AriaSelectValue } from \"react-aria-components\";\nimport { Avatar } from \"@/components/base/avatar/avatar\";\nimport { HintText } from \"@/components/base/input/hint-text\";\nimport { Label } from \"@/components/base/input/label\";\nimport { cx } from \"@/utils/cx\";\nimport { inputErrorFocusRingShadow, inputFocusRingShadow } from \"@/components/base/input/input\";\nimport { isReactComponent } from \"@/utils/is-react-component\";\nimport { ComboBox } from \"./combobox\";\nimport { Popover } from \"./popover\";\nimport { SelectItem } from \"./select-item\";\nimport { type CommonProps, SelectContext, type SelectItemType, sizes } from \"./select-shared\";\n\nexport { SelectContext, sizes, type CommonProps, type SelectItemType, type SelectMobileOptions } from \"./select-shared\";\n\nexport interface SelectProps extends Omit<AriaSelectProps<SelectItemType>, \"children\" | \"items\">, RefAttributes<HTMLDivElement>, CommonProps {\n items?: SelectItemType[];\n popoverClassName?: string;\n icon?: FC | ReactNode;\n children: ReactNode | ((item: SelectItemType) => ReactNode);\n}\n\ninterface SelectValueProps {\n isOpen: boolean;\n size: \"sm\" | \"md\" | \"lg\";\n isFocusVisible: boolean;\n isDisabled: boolean;\n isInvalid?: boolean;\n placeholder?: string;\n ref?: Ref<HTMLButtonElement>;\n icon?: FC | ReactNode;\n}\n\nconst SelectValue = ({ isOpen, isFocusVisible, isDisabled, isInvalid, size, placeholder, icon, ref }: SelectValueProps) => {\n const isActive = isOpen || isFocusVisible;\n\n return (\n <AriaButton\n ref={ref}\n className={cx(\n \"relative flex w-full cursor-pointer items-center rounded-lg border border-solid border-primary bg-primary shadow-xs outline-hidden transition-[border-color,box-shadow] duration-100 ease-linear\",\n !isInvalid && isActive && inputFocusRingShadow,\n isInvalid && !isActive && \"border-error_subtle\",\n isInvalid && isActive && inputErrorFocusRingShadow,\n isDisabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n <AriaSelectValue<SelectItemType>\n className={(state) =>\n cx(\n \"flex h-max w-full items-center justify-start truncate text-left align-middle\",\n\n sizes[size].root,\n\n // With icon\n (state.selectedItems[0]?.icon || icon) && sizes[size].withIcon,\n\n // Icon styles\n \"*:data-icon:shrink-0 *:data-icon:text-fg-quaternary\",\n )\n }\n >\n {(state) => {\n const selectedItem = state.selectedItems[0];\n const Icon = selectedItem?.icon || icon;\n\n return (\n <>\n {selectedItem?.avatarUrl ? (\n <Avatar size=\"xs\" src={selectedItem.avatarUrl} alt={selectedItem.label} className={cx(size === \"sm\" && \"size-5\")} />\n ) : isReactComponent(Icon) ? (\n <Icon data-icon aria-hidden=\"true\" />\n ) : isValidElement(Icon) ? (\n Icon\n ) : null}\n\n {selectedItem ? (\n <section className={cx(\"flex w-full truncate\", sizes[size].textContainer)}>\n <p className={cx(\"truncate font-medium text-primary\", sizes[size].text)}>{selectedItem?.label}</p>\n {selectedItem?.supportingText && <p className={cx(\"text-tertiary\", sizes[size].text)}>{selectedItem?.supportingText}</p>}\n </section>\n ) : (\n <p className={cx(\"text-placeholder\", sizes[size].text)}>{placeholder}</p>\n )}\n\n <ChevronDown\n aria-hidden=\"true\"\n className={cx(\"ml-auto shrink-0 text-fg-quaternary\", size === \"lg\" ? \"size-5\" : \"size-4 stroke-[2.25px]\")}\n />\n </>\n );\n }}\n </AriaSelectValue>\n </AriaButton>\n );\n};\n\nconst Select = ({ placeholder = \"Select\", icon, size = \"md\", children, items, label, hint, tooltip, hideRequiredIndicator, mobileOptions, className, ...rest }: SelectProps) => {\n return (\n <SelectContext.Provider value={{ size }}>\n <AriaSelect {...rest} className={(state) => cx(\"flex flex-col gap-1.5\", typeof className === \"function\" ? className(state) : className)}>\n {(state) => (\n <>\n {label && (\n <Label isRequired={hideRequiredIndicator ? false : state.isRequired} tooltip={tooltip}>\n {label}\n </Label>\n )}\n\n <SelectValue {...state} {...{ size, placeholder }} icon={icon} />\n\n <Popover size={size} className={rest.popoverClassName} mobileOptions={{ title: label, ...mobileOptions }}>\n <AriaListBox items={items} className=\"size-full outline-hidden\">\n {children}\n </AriaListBox>\n </Popover>\n\n {hint && (\n <HintText isInvalid={state.isInvalid} className={cx(size === \"sm\" && \"text-xs\")}>\n {hint}\n </HintText>\n )}\n </>\n )}\n </AriaSelect>\n </SelectContext.Provider>\n );\n};\n\nconst _Select = Select as typeof Select & {\n ComboBox: typeof ComboBox;\n Item: typeof SelectItem;\n};\n_Select.ComboBox = ComboBox;\n_Select.Item = SelectItem;\n\nexport { _Select as Select };\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nconst screens = {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n \"2xl\": \"1536px\",\n};\n\n/**\n * Checks whether a particular Tailwind CSS viewport size applies.\n *\n * @param size The size to check, which must either be included in Tailwind CSS's\n * list of default screen sizes, or added to the Tailwind CSS config file.\n *\n * @returns A boolean indicating whether the viewport size applies.\n */\nexport const useBreakpoint = (size: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\") => {\n const [matches, setMatches] = useState(typeof window !== \"undefined\" ? window.matchMedia(`(min-width: ${screens[size]})`).matches : true);\n\n useEffect(() => {\n const breakpoint = window.matchMedia(`(min-width: ${screens[size]})`);\n\n setMatches(breakpoint.matches);\n\n const handleChange = (value: MediaQueryListEvent) => setMatches(value.matches);\n\n breakpoint.addEventListener(\"change\", handleChange);\n return () => breakpoint.removeEventListener(\"change\", handleChange);\n }, [size]);\n\n return matches;\n};\n","\"use client\";\n\nimport { getDayOfWeek, getLocalTimeZone, isToday } from \"@internationalized/date\";\nimport type { CalendarCellProps as AriaCalendarCellProps } from \"react-aria-components\";\nimport { CalendarCell as AriaCalendarCell, RangeCalendarContext, useLocale, useSlottedContext } from \"react-aria-components\";\nimport { cx } from \"@/utils/cx\";\n\ninterface CalendarCellProps extends AriaCalendarCellProps {\n /** Whether the calendar is a range calendar. */\n isRangeCalendar?: boolean;\n /** Whether the cell is highlighted. */\n isHighlighted?: boolean;\n /** Whether to show out of range dates. */\n showOutOfRangeDates?: boolean;\n /** Stretch the cell to fill its grid column while staying square (mobile full-screen). */\n fluid?: boolean;\n}\n\nexport const CalendarCell = ({ date, isHighlighted, showOutOfRangeDates = false, fluid = false, ...props }: CalendarCellProps) => {\n const { locale } = useLocale();\n const dayOfWeek = getDayOfWeek(date, locale);\n const rangeCalendarContext = useSlottedContext(RangeCalendarContext);\n\n const isRangeCalendar = !!rangeCalendarContext;\n\n const start = rangeCalendarContext?.value?.start;\n const end = rangeCalendarContext?.value?.end;\n\n const isAfterStart = start ? date.compare(start) > 0 : true;\n const isBeforeEnd = end ? date.compare(end) < 0 : true;\n\n const isAfterOrOnStart = start && date.compare(start) >= 0;\n const isBeforeOrOnEnd = end && date.compare(end) <= 0;\n const isInRange = isAfterOrOnStart && isBeforeOrOnEnd;\n\n const lastDayOfMonth = new Date(date.year, date.month, 0).getDate();\n const isLastDayOfMonth = date.day === lastDayOfMonth;\n const isFirstDayOfMonth = date.day === 1;\n\n const isTodayDate = isToday(date, getLocalTimeZone());\n\n return (\n <AriaCalendarCell\n {...props}\n date={date}\n className={({ isDisabled, isFocusVisible, isSelectionStart, isSelectionEnd, isSelected, isOutsideMonth }) => {\n const isRoundedLeft = isSelectionStart || dayOfWeek === 0;\n const isRoundedRight = isSelectionEnd || dayOfWeek === 6;\n\n return cx(\n \"relative focus:outline-hidden\",\n fluid ? \"aspect-square w-full\" : \"size-10\",\n isRoundedLeft && \"rounded-l-full\",\n isRoundedRight && \"rounded-r-full\",\n isInRange && isDisabled && \"bg-secondary\",\n isSelected && isRangeCalendar && \"bg-secondary\",\n isDisabled ? \"pointer-events-none\" : \"cursor-pointer\",\n isFocusVisible ? \"z-10\" : \"z-0\",\n isOutsideMonth && \"opacity-50\",\n isRangeCalendar && isOutsideMonth && !showOutOfRangeDates && \"hidden\",\n\n // Show gradient on last day of month if it's within the selected range.\n isLastDayOfMonth &&\n isSelected &&\n isBeforeEnd &&\n isRangeCalendar &&\n \"after:absolute after:inset-0 after:translate-x-full after:bg-gradient-to-l after:from-transparent after:to-bg-secondary in-[[role=gridcell]:last-child]:after:hidden\",\n\n // Show gradient on first day of month if it's within the selected range.\n isFirstDayOfMonth &&\n isSelected &&\n isAfterStart &&\n isRangeCalendar &&\n \"after:absolute after:inset-0 after:-translate-x-full after:bg-gradient-to-r after:from-transparent after:to-bg-secondary in-[[role=gridcell]:first-child]:after:hidden\",\n );\n }}\n >\n {({ isDisabled, isFocusVisible, isSelectionStart, isSelectionEnd, isSelected, formattedDate }) => {\n const markedAsSelected = isSelectionStart || isSelectionEnd || (isSelected && !isDisabled && !isRangeCalendar);\n\n return (\n <div\n className={cx(\n \"relative flex size-full items-center justify-center rounded-full text-sm text-secondary hover:text-secondary_hover\",\n // Disabled state.\n isDisabled && \"text-secondary/50\",\n // Focus ring, visible while the cell has keyboard focus.\n isFocusVisible ? \"outline-2 outline-offset-2 outline-focus-ring\" : \"\",\n // Hover state for cells in the middle of the range.\n isSelected && !isDisabled && isRangeCalendar ? \"font-medium\" : \"\",\n markedAsSelected && \"bg-brand-solid font-medium text-white hover:bg-brand-solid_hover hover:text-white\",\n // Hover state for non-selected cells.\n !isSelected && !isDisabled ? \"hover:bg-primary_hover hover:font-medium!\" : \"\",\n !isSelected && isTodayDate ? \"bg-secondary font-medium hover:bg-secondary_hover\" : \"\",\n )}\n >\n {formattedDate}\n\n {(isHighlighted || isTodayDate) && (\n <div\n className={cx(\n \"absolute bottom-1 left-1/2 size-1.25 -translate-x-1/2 rounded-full\",\n markedAsSelected ? \"bg-fg-white\" : \"bg-fg-brand-primary\",\n isDisabled && \"opacity-50\",\n )}\n />\n )}\n </div>\n );\n }}\n </AriaCalendarCell>\n );\n};\n","\"use client\";\n\nimport type { HTMLAttributes, PropsWithChildren } from \"react\";\nimport { Fragment, useContext, useState } from \"react\";\nimport type { CalendarDate } from \"@internationalized/date\";\nimport { CaretLeftIcon as ChevronLeft } from \"@phosphor-icons/react/dist/csr/CaretLeft\";\nimport { CaretRightIcon as ChevronRight } from \"@phosphor-icons/react/dist/csr/CaretRight\";\nimport { useDateFormatter } from \"react-aria\";\nimport type { RangeCalendarProps as AriaRangeCalendarProps, DateValue } from \"react-aria-components\";\nimport {\n CalendarGrid as AriaCalendarGrid,\n CalendarGridBody as AriaCalendarGridBody,\n CalendarGridHeader as AriaCalendarGridHeader,\n CalendarHeaderCell as AriaCalendarHeaderCell,\n RangeCalendar as AriaRangeCalendar,\n RangeCalendarContext,\n RangeCalendarStateContext,\n useSlottedContext,\n} from \"react-aria-components\";\nimport type { ButtonProps } from \"@/components/base/buttons/button\";\nimport { Button } from \"@/components/base/buttons/button\";\nimport { InputDateBase } from \"@/components/base/input/input-date\";\nimport { Select } from \"@/components/base/select/select\";\nimport type { SelectItemType } from \"@/components/base/select/select-shared\";\nimport { useBreakpoint } from \"@/hooks/use-breakpoint\";\nimport { cx } from \"@/utils/cx\";\nimport { CalendarCell } from \"./cell\";\n\nexport const RangeCalendarContextProvider = ({ children }: PropsWithChildren) => {\n const [value, onChange] = useState<{ start: DateValue; end: DateValue } | null>(null);\n const [focusedValue, onFocusChange] = useState<DateValue | undefined>();\n\n return <RangeCalendarContext.Provider value={{ value, onChange, focusedValue, onFocusChange }}>{children}</RangeCalendarContext.Provider>;\n};\n\nconst RangeCalendarTitle = ({ part }: { part: \"start\" | \"end\" }) => {\n const context = useContext(RangeCalendarStateContext);\n\n if (!context) {\n throw new Error(\"<RangeCalendarTitle /> must be used within a <RangeCalendar /> component.\");\n }\n\n const formatter = useDateFormatter({\n month: \"long\",\n year: \"numeric\",\n calendar: context.visibleRange.start.calendar.identifier,\n timeZone: context.timeZone,\n });\n\n return part === \"start\"\n ? formatter.format(context.visibleRange.start.toDate(context.timeZone))\n : formatter.format(context.visibleRange.end.toDate(context.timeZone));\n};\n\ninterface RangePresetButtonProps extends HTMLAttributes<HTMLButtonElement> {\n value: { start: DateValue; end: DateValue };\n}\n\nexport const RangePresetButton = ({ value, className, children, ...props }: RangePresetButtonProps) => {\n const context = useSlottedContext(RangeCalendarContext);\n\n const isSelected = context?.value?.start?.compare(value.start) === 0 && context?.value?.end?.compare(value.end) === 0;\n\n return (\n <button\n {...props}\n className={cx(\n \"cursor-pointer rounded-md px-3 py-2 text-left text-sm font-medium text-white outline-focus-ring transition duration-100 ease-linear focus-visible:outline-2 focus-visible:outline-offset-2\",\n isSelected ? \"bg-secondary text-secondary_hover hover:bg-secondary_hover\" : \"text-secondary hover:bg-primary_hover hover:text-secondary_hover\",\n className,\n )}\n >\n {children}\n </button>\n );\n};\n\ninterface MobilePresetButtonProps extends Omit<ButtonProps, \"value\" | \"slot\" | \"size\" | \"color\" | \"onClick\"> {\n value: { start: DateValue; end: DateValue };\n}\n\nconst MobilePresetButton = ({ value, children, ...props }: MobilePresetButtonProps) => {\n const context = useContext(RangeCalendarStateContext);\n\n return (\n <Button\n {...props}\n slot={null}\n size=\"sm\"\n color=\"link-color\"\n onClick={() => {\n context?.setValue(value);\n context?.setFocusedDate(value.start as CalendarDate);\n }}\n >\n {children}\n </Button>\n );\n};\n\nconst MobilePresetSelect = ({ presets }: { presets: Record<string, { label: string; value: { start: DateValue; end: DateValue } }> }) => {\n const context = useContext(RangeCalendarStateContext);\n\n const entries = Object.entries(presets);\n const items: SelectItemType[] = entries.map(([id, preset]) => ({ id, label: preset.label }));\n\n const current = context?.value;\n const selectedKey =\n current?.start && current?.end\n ? (entries.find(([, preset]) => preset.value.start.compare(current.start) === 0 && preset.value.end.compare(current.end) === 0)?.[0] ?? null)\n : null;\n\n return (\n <Select\n aria-label=\"Date range presets\"\n size=\"sm\"\n placeholder=\"Select a range\"\n items={items}\n selectedKey={selectedKey}\n mobileOptions={{ title: \"Select a range\", className: \"h-dvh! max-h-dvh! rounded-none\", contentClassName: \"px-2\" }}\n onSelectionChange={(key) => {\n const preset = key != null ? presets[String(key)] : undefined;\n if (!preset) return;\n context?.setValue(preset.value);\n context?.setFocusedDate(preset.value.start as CalendarDate);\n }}\n >\n {(item) => <Select.Item id={item.id}>{item.label}</Select.Item>}\n </Select>\n );\n};\n\ninterface RangeCalendarProps extends AriaRangeCalendarProps<DateValue> {\n /** The dates to highlight. */\n highlightedDates?: DateValue[];\n /** The date presets to display. */\n presets?: Record<string, { label: string; value: { start: DateValue; end: DateValue } }>;\n /** Whether to show out of range dates. */\n showOutOfRangeDates?: boolean;\n /** Whether to show presets on desktop. */\n showPresetsOnDesktop?: boolean;\n /** Force the single-month, full-width mobile layout (mobile full-screen dialog). */\n fluid?: boolean;\n}\n\nexport const RangeCalendar = ({\n presets,\n visibleDuration,\n showOutOfRangeDates = false,\n showPresetsOnDesktop = false,\n fluid = false,\n ...props\n}: RangeCalendarProps) => {\n const isDesktop = useBreakpoint(\"md\") && !fluid;\n const context = useSlottedContext(RangeCalendarContext);\n\n const ContextWrapper = context ? Fragment : RangeCalendarContextProvider;\n\n const visibleDurationMonths = fluid ? 1 : visibleDuration?.months || (isDesktop ? 2 : 1);\n\n return (\n <ContextWrapper>\n <AriaRangeCalendar\n {...props}\n className={(state) =>\n cx(\n fluid ? \"flex w-full flex-col items-stretch\" : \"flex items-start\",\n typeof props.className === \"function\" ? props.className(state) : props.className,\n )\n }\n visibleDuration={{\n months: visibleDurationMonths,\n }}\n >\n <div className={cx(\"flex flex-col gap-3 md:gap-2\", fluid ? \"w-full px-4 pt-1 pb-4\" : \"px-6 py-5\")}>\n <header className={cx(\"relative flex items-center\", visibleDurationMonths > 1 ? \"justify-start\" : \"justify-between\")}>\n <Button slot=\"previous\" iconLeading={ChevronLeft} size=\"sm\" color=\"tertiary\" className=\"size-8\" />\n\n <h2 className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 text-sm font-semibold text-fg-secondary\">\n <RangeCalendarTitle part=\"start\" />\n </h2>\n\n {visibleDurationMonths === 1 && <Button slot=\"next\" iconLeading={ChevronRight} size=\"sm\" color=\"tertiary\" className=\"size-8\" />}\n </header>\n\n {!isDesktop && (\n <div\n className={cx(\n \"flex w-full gap-2\",\n fluid ? \"flex-col items-stretch\" : \"items-center\",\n !fluid && \"md:hidden\",\n )}\n >\n <InputDateBase slot=\"start\" size=\"sm\" wrapperClassName=\"min-w-0 flex-1\" />\n {!fluid && <div className=\"text-md text-quaternary\">–</div>}\n <InputDateBase slot=\"end\" size=\"sm\" wrapperClassName=\"min-w-0 flex-1\" />\n </div>\n )}\n\n {fluid && presets ? (\n <div className=\"mt-1\">\n <MobilePresetSelect presets={presets} />\n </div>\n ) : (showPresetsOnDesktop || !isDesktop) && presets ? (\n <div className=\"mt-1 flex justify-between gap-3 px-2\">\n {Object.values(presets).map((preset) => (\n <MobilePresetButton key={preset.label} value={preset.value}>\n {preset.label}\n </MobilePresetButton>\n ))}\n </div>\n ) : null}\n\n <AriaCalendarGrid weekdayStyle=\"short\" className={cx(fluid ? \"w-full table-fixed\" : \"w-max\")}>\n <AriaCalendarGridHeader>\n {(day) => (\n <AriaCalendarHeaderCell className=\"border-b-4 border-transparent p-0\">\n <div\n className={cx(\n \"flex items-center justify-center text-sm font-medium text-secondary\",\n fluid ? \"h-10 w-full\" : \"size-10\",\n )}\n >\n {day.slice(0, 2)}\n </div>\n </AriaCalendarHeaderCell>\n )}\n </AriaCalendarGridHeader>\n <AriaCalendarGridBody className=\"[&_td]:p-0 [&_tr]:border-b-4 [&_tr]:border-transparent [&_tr:last-of-type]:border-none\">\n {(date) => <CalendarCell date={date} fluid={fluid} showOutOfRangeDates={showOutOfRangeDates} />}\n </AriaCalendarGridBody>\n </AriaCalendarGrid>\n </div>\n\n {visibleDurationMonths > 1 && (\n <div className=\"flex flex-col gap-3 border-l border-secondary px-6 py-5\">\n <header className=\"relative flex items-center justify-end\">\n <h2 className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 text-sm font-semibold text-fg-secondary\">\n <RangeCalendarTitle part=\"end\" />\n </h2>\n\n <Button slot=\"next\" iconLeading={ChevronRight} size=\"sm\" color=\"tertiary\" className=\"size-8\" />\n </header>\n\n <AriaCalendarGrid weekdayStyle=\"short\" offset={{ months: 1 }} className=\"w-max\">\n <AriaCalendarGridHeader>\n {(day) => (\n <AriaCalendarHeaderCell className=\"border-b-4 border-transparent p-0\">\n <div className=\"flex size-10 items-center justify-center text-sm font-medium text-secondary\">{day.slice(0, 2)}</div>\n </AriaCalendarHeaderCell>\n )}\n </AriaCalendarGridHeader>\n <AriaCalendarGridBody className=\"[&_td]:p-0 [&_tr]:border-b-4 [&_tr]:border-transparent [&_tr:last-of-type]:border-none\">\n {(date) => <CalendarCell date={date} />}\n </AriaCalendarGridBody>\n </AriaCalendarGrid>\n </div>\n )}\n </AriaRangeCalendar>\n </ContextWrapper>\n );\n};\n"]}
|