@refineui/react 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/dist/index.cjs +15530 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +3905 -0
  4. package/dist/index.d.ts +3905 -0
  5. package/dist/index.js +15445 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/spec/README.md +95 -0
  8. package/dist/spec/components/accordion.json +126 -0
  9. package/dist/spec/components/alert.json +71 -0
  10. package/dist/spec/components/avatar.json +30 -0
  11. package/dist/spec/components/avatars.json +29 -0
  12. package/dist/spec/components/badge.json +41 -0
  13. package/dist/spec/components/box.json +16 -0
  14. package/dist/spec/components/breadcrumb.json +40 -0
  15. package/dist/spec/components/bubble.json +31 -0
  16. package/dist/spec/components/button.json +104 -0
  17. package/dist/spec/components/calendar.json +52 -0
  18. package/dist/spec/components/card.json +57 -0
  19. package/dist/spec/components/carousel.json +65 -0
  20. package/dist/spec/components/chart.json +34 -0
  21. package/dist/spec/components/checkbox.json +38 -0
  22. package/dist/spec/components/chip.json +65 -0
  23. package/dist/spec/components/command.json +65 -0
  24. package/dist/spec/components/container.json +16 -0
  25. package/dist/spec/components/dialog.json +95 -0
  26. package/dist/spec/components/divider.json +29 -0
  27. package/dist/spec/components/drawer.json +71 -0
  28. package/dist/spec/components/dropdown.json +64 -0
  29. package/dist/spec/components/field.json +31 -0
  30. package/dist/spec/components/footer.json +45 -0
  31. package/dist/spec/components/grid.json +17 -0
  32. package/dist/spec/components/input-otp.json +34 -0
  33. package/dist/spec/components/input.json +36 -0
  34. package/dist/spec/components/label.json +24 -0
  35. package/dist/spec/components/link.json +38 -0
  36. package/dist/spec/components/menu.json +67 -0
  37. package/dist/spec/components/navigation-menu.json +74 -0
  38. package/dist/spec/components/pagination.json +41 -0
  39. package/dist/spec/components/popover.json +42 -0
  40. package/dist/spec/components/progress-stepper.json +61 -0
  41. package/dist/spec/components/progress.json +28 -0
  42. package/dist/spec/components/radio.json +43 -0
  43. package/dist/spec/components/resizable.json +34 -0
  44. package/dist/spec/components/scroll-area.json +50 -0
  45. package/dist/spec/components/search-field.json +53 -0
  46. package/dist/spec/components/segmented-control.json +67 -0
  47. package/dist/spec/components/select.json +113 -0
  48. package/dist/spec/components/sidebar.json +45 -0
  49. package/dist/spec/components/skeleton.json +21 -0
  50. package/dist/spec/components/slider.json +43 -0
  51. package/dist/spec/components/spacer.json +16 -0
  52. package/dist/spec/components/spin-button.json +45 -0
  53. package/dist/spec/components/spinner.json +35 -0
  54. package/dist/spec/components/stack.json +16 -0
  55. package/dist/spec/components/stepper.json +62 -0
  56. package/dist/spec/components/switch.json +52 -0
  57. package/dist/spec/components/table.json +17 -0
  58. package/dist/spec/components/tabs.json +77 -0
  59. package/dist/spec/components/tag.json +65 -0
  60. package/dist/spec/components/text.json +16 -0
  61. package/dist/spec/components/textarea.json +22 -0
  62. package/dist/spec/components/toast.json +45 -0
  63. package/dist/spec/components/tooltip.json +31 -0
  64. package/dist/spec/components/tree.json +80 -0
  65. package/dist/spec/contract-index.json +721 -0
  66. package/dist/spec/manifest.json +686 -0
  67. package/dist/spec/schema/component-spec.schema.json +203 -0
  68. package/dist/spec/token-graph.json +6605 -0
  69. package/dist/spec/token-trace-v2.json +5170 -0
  70. package/package.json +54 -0
  71. package/refineui.css +2275 -0
  72. package/spec/README.md +95 -0
  73. package/spec/components/accordion.json +126 -0
  74. package/spec/components/alert.json +71 -0
  75. package/spec/components/avatar.json +30 -0
  76. package/spec/components/avatars.json +29 -0
  77. package/spec/components/badge.json +41 -0
  78. package/spec/components/box.json +16 -0
  79. package/spec/components/breadcrumb.json +40 -0
  80. package/spec/components/bubble.json +31 -0
  81. package/spec/components/button.json +104 -0
  82. package/spec/components/calendar.json +52 -0
  83. package/spec/components/card.json +57 -0
  84. package/spec/components/carousel.json +65 -0
  85. package/spec/components/chart.json +34 -0
  86. package/spec/components/checkbox.json +38 -0
  87. package/spec/components/chip.json +65 -0
  88. package/spec/components/command.json +65 -0
  89. package/spec/components/container.json +16 -0
  90. package/spec/components/dialog.json +95 -0
  91. package/spec/components/divider.json +29 -0
  92. package/spec/components/drawer.json +71 -0
  93. package/spec/components/dropdown.json +64 -0
  94. package/spec/components/field.json +31 -0
  95. package/spec/components/footer.json +45 -0
  96. package/spec/components/grid.json +17 -0
  97. package/spec/components/input-otp.json +34 -0
  98. package/spec/components/input.json +36 -0
  99. package/spec/components/label.json +24 -0
  100. package/spec/components/link.json +38 -0
  101. package/spec/components/menu.json +67 -0
  102. package/spec/components/navigation-menu.json +74 -0
  103. package/spec/components/pagination.json +41 -0
  104. package/spec/components/popover.json +42 -0
  105. package/spec/components/progress-stepper.json +61 -0
  106. package/spec/components/progress.json +28 -0
  107. package/spec/components/radio.json +43 -0
  108. package/spec/components/resizable.json +34 -0
  109. package/spec/components/scroll-area.json +50 -0
  110. package/spec/components/search-field.json +53 -0
  111. package/spec/components/segmented-control.json +67 -0
  112. package/spec/components/select.json +113 -0
  113. package/spec/components/sidebar.json +45 -0
  114. package/spec/components/skeleton.json +21 -0
  115. package/spec/components/slider.json +43 -0
  116. package/spec/components/spacer.json +16 -0
  117. package/spec/components/spin-button.json +45 -0
  118. package/spec/components/spinner.json +35 -0
  119. package/spec/components/stack.json +16 -0
  120. package/spec/components/stepper.json +62 -0
  121. package/spec/components/switch.json +52 -0
  122. package/spec/components/table.json +17 -0
  123. package/spec/components/tabs.json +77 -0
  124. package/spec/components/tag.json +65 -0
  125. package/spec/components/text.json +16 -0
  126. package/spec/components/textarea.json +22 -0
  127. package/spec/components/toast.json +45 -0
  128. package/spec/components/tooltip.json +31 -0
  129. package/spec/components/tree.json +80 -0
  130. package/spec/manifest.json +686 -0
  131. package/spec/schema/component-spec.schema.json +203 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/tokens/componentColorTokens.ts","../src/tokens/componentTypographyTokens.ts","../src/typography.ts","../src/componentSizes.ts","../src/WebIcon.tsx","../src/components/Button/Button.tsx","../src/recipes/types.ts","../src/recipes/button.recipe.ts","../src/components/Input/Input.tsx","../src/formControlSizes.ts","../src/components/Input/style.ts","../src/components/Field/context.ts","../src/components/InputOTP/InputOTP.tsx","../src/components/InputOTP/style.ts","../src/components/SearchField/SearchField.tsx","../src/components/SearchField/style.ts","../src/components/Text/Text.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Textarea/style.ts","../src/components/Badge/Badge.tsx","../src/recipes/badge.recipe.ts","../src/components/Card/Card.tsx","../src/components/Card/style.ts","../src/components/Card/CardHeaderMain.tsx","../src/components/Card/CardHeader.tsx","../src/components/Card/CardTitle.tsx","../src/components/Card/CardDescription.tsx","../src/components/Card/CardAction.tsx","../src/components/Card/CardContent.tsx","../src/components/Card/CardFooter.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Label/style.ts","../src/components/Checkbox/style.ts","../src/components/Radio/Radio.tsx","../src/components/Radio/RadioInput.tsx","../src/components/Radio/style.ts","../src/components/Select/Select.tsx","../src/components/ScrollArea/ScrollAreaRegion.tsx","../src/components/ScrollArea/ScrollArea.tsx","../src/components/ScrollArea/style.ts","../src/components/Select/style.ts","../src/components/Toggle/Toggle.tsx","../src/components/Toggle/style.ts","../src/components/Chip/Chip.tsx","../src/recipes/chip.recipe.ts","../src/components/Command/Command.tsx","../src/components/Dialog/Dialog.tsx","../src/hooks/useFocusTrap.ts","../src/recipes/dialog.recipe.ts","../src/components/Command/style.ts","../src/components/Avatar/Avatar.tsx","../src/components/Avatar/avatarStyles.ts","../src/components/Avatar/avatarStatusGraphics.tsx","../src/components/Avatar/style.ts","../src/components/Avatars/Avatars.tsx","../src/components/Avatars/style.ts","../src/components/Alert/Alert.tsx","../src/components/Alert/context.ts","../src/recipes/alert.recipe.ts","../src/components/Alert/AlertTitle.tsx","../src/components/Alert/AlertDescription.tsx","../src/components/Progress/Progress.tsx","../src/components/Progress/style.ts","../src/components/ProgressStepper/ProgressStepper.tsx","../src/components/ProgressStepper/style.ts","../src/components/Spinner/Spinner.tsx","../src/components/Spinner/style.ts","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/style.ts","../src/components/SegmentedControl/SegmentedControl.tsx","../src/recipes/segmented-control.recipe.ts","../src/components/Table/Table.tsx","../src/components/Table/style.ts","../src/components/Accordion/Accordion.tsx","../src/components/Accordion/context.ts","../src/recipes/accordion.recipe.ts","../src/components/Accordion/AccordionItem.tsx","../src/components/Accordion/AccordionTrigger.tsx","../src/components/Accordion/AccordionContent.tsx","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/Breadcrumb/style.ts","../src/components/Footer/Footer.tsx","../src/components/Footer/style.ts","../src/components/Calendar/Calendar.tsx","../src/components/Calendar/style.ts","../src/components/Divider/Divider.tsx","../src/components/Divider/style.ts","../src/components/Layout/Stack.tsx","../src/components/Layout/style.ts","../src/components/Layout/Grid.tsx","../src/components/Layout/Container.tsx","../src/components/Layout/Box.tsx","../src/components/Layout/Spacer.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Drawer/style.ts","../src/components/Dropdown/Dropdown.tsx","../src/components/Dropdown/style.ts","../src/components/Dropdown/positioning.ts","../src/components/Field/Field.tsx","../src/components/Label/Label.tsx","../src/components/Label/LabelRequired.tsx","../src/components/Field/style.ts","../src/components/Link/Link.tsx","../src/components/Link/style.ts","../src/components/Menu/Menu.tsx","../src/components/Menu/style.ts","../src/components/NavigationMenu/NavigationMenu.tsx","../src/components/NavigationMenu/style.ts","../src/components/Sidebar/Sidebar.tsx","../src/components/Sidebar/style.ts","../src/components/Sidebar/SidebarPeek.tsx","../src/components/Sidebar/peekStyle.ts","../src/components/Pagination/Pagination.tsx","../src/components/Pagination/style.ts","../src/components/PopOver/PopOver.tsx","../src/components/PopOver/style.ts","../src/components/Skeleton/Skeleton.tsx","../src/components/Skeleton/style.ts","../src/components/Slider/Slider.tsx","../src/components/Slider/style.ts","../src/components/Carousel/Carousel.tsx","../src/components/Carousel/style.ts","../src/components/Bubble/Bubble.tsx","../src/components/Bubble/style.ts","../src/components/Stepper/Stepper.tsx","../src/components/Stepper/style.ts","../src/components/Resizable/Resizable.tsx","../src/components/Resizable/style.ts","../src/components/SpinButton/SpinButton.tsx","../src/components/SpinButton/style.ts","../src/components/Toast/Toast.tsx","../src/recipes/toast.recipe.ts","../src/components/Tree/Tree.tsx","../src/components/Tree/context.ts","../src/components/Tree/style.ts","../src/components/Tree/TreeItem.tsx","../src/components/Tree/TreeItemTrigger.tsx","../src/components/Tree/TreeItemContent.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Tooltip/style.ts","../src/components/Chart/Chart.tsx","../src/components/Chart/style.ts","../src/components/Chart/utils.ts"],"sourcesContent":["export { componentColorTokens } from \"./tokens/componentColorTokens\";\nexport { componentTypographyTokens, type ControlSize } from \"./tokens/componentTypographyTokens\";\nexport {\n componentTextClass,\n semanticTextClass,\n sizedComponentTextClass,\n} from \"./typography\";\nexport { SEMANTIC_TEXT, type FoundationTypographyName, type SemanticTextName } from \"@refineui/tokens\";\nexport { componentSizes, componentSizeFoundationKeys, foundationSizes } from \"./componentSizes\";\nexport { WebIcon, type WebIconProps } from \"./WebIcon\";\nexport {\n Button,\n type ButtonLayout,\n type ButtonProps,\n type ButtonSize,\n type ButtonVariant,\n} from \"./components/Button\";\nexport { Input, type InputProps } from \"./components/Input\";\nexport {\n InputOTP,\n InputOTPSlot,\n type InputOTPProps,\n type InputOTPSlotProps,\n type InputOTPSize,\n} from \"./components/InputOTP\";\nexport {\n SearchField,\n SearchFieldClear,\n SearchFieldIcon,\n SearchFieldInput,\n type SearchFieldClearProps,\n type SearchFieldIconProps,\n type SearchFieldInputProps,\n type SearchFieldProps,\n} from \"./components/SearchField\";\nexport { Text, type TextProps } from \"./components/Text\";\nexport { Textarea, type TextareaProps } from \"./components/Textarea\";\nexport { Badge, type BadgeProps, type BadgeVariant, type BadgeLayout } from \"./components/Badge\";\nexport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardHeaderMain,\n CardTitle,\n type CardProps,\n} from \"./components/Card\";\nexport { Checkbox, type CheckboxProps } from \"./components/Checkbox\";\nexport { Radio, type RadioProps, RadioInput, type RadioInputProps } from \"./components/Radio\";\nexport {\n Select,\n SelectArrow,\n SelectContent,\n SelectGroup,\n SelectIcon,\n SelectItem,\n SelectItemIndicator,\n SelectItemText,\n SelectLabel,\n SelectPortal,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSection,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n SelectViewport,\n type SelectArrowProps,\n type SelectContentProps,\n type SelectGroupProps,\n type SelectIconProps,\n type SelectItemProps,\n type SelectItemIndicatorProps,\n type SelectItemTextProps,\n type SelectLabelProps,\n type SelectPortalProps,\n type SelectProps,\n type SelectScrollDownButtonProps,\n type SelectScrollUpButtonProps,\n type SelectSectionProps,\n type SelectSeparatorProps,\n type SelectTriggerAppearance,\n type SelectTriggerProps,\n type SelectValueProps,\n type SelectViewportProps,\n} from \"./components/Select\";\nexport { Toggle, type ToggleProps } from \"./components/Toggle\";\nexport { Switch, type SwitchProps } from \"./components/Switch\";\nexport { Chip, type ChipProps, type ChipVariant, type ChipSize } from \"./components/Chip\";\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandGroupHeading,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n defaultCommandFilter,\n type CommandDialogProps,\n type CommandEmptyProps,\n type CommandFilter,\n type CommandGroupHeadingProps,\n type CommandGroupProps,\n type CommandInputProps,\n type CommandItemProps,\n type CommandListProps,\n type CommandProps,\n type CommandSeparatorProps,\n type CommandShortcutProps,\n} from \"./components/Command\";\nexport { Tag, type TagProps, type TagVariant, type TagSize } from \"./components/Tag\";\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarText,\n AvatarBadge,\n AvatarIcon,\n AvatarGroup,\n AvatarGroupCount,\n type AvatarProps,\n type AvatarSize,\n type AvatarColor,\n type AvatarColorIcon,\n type AvatarColorImage,\n type AvatarColorInitials,\n type AvatarLayout,\n type AvatarImageProps,\n type AvatarFallbackProps,\n type AvatarTextProps,\n type AvatarBadgeProps,\n type AvatarIconProps,\n type AvatarGroupProps,\n type AvatarGroupCountProps,\n type AvatarPresenceStatus,\n} from \"./components/Avatar\";\nexport { Avatars, type AvatarsProps, type AvatarItem, type AvatarsSize, type AvatarsLayout } from \"./components/Avatars\";\nexport {\n AlertAction,\n AlertActions,\n AlertBody,\n AlertClose,\n AlertContent,\n AlertIcon,\n AlertRow,\n Alert,\n AlertTitle,\n AlertDescription,\n type AlertActionProps,\n type AlertActionsProps,\n type AlertBodyProps,\n type AlertCloseProps,\n type AlertContentProps,\n type AlertIconProps,\n type AlertProps,\n type AlertRowProps,\n type AlertVariant,\n type AlertTitleProps,\n type AlertDescriptionProps,\n} from \"./components/Alert\";\nexport { Progress, type ProgressProps } from \"./components/Progress\";\nexport {\n ProgressStepper,\n ProgressStepperList,\n ProgressStepperItem,\n ProgressStepperMarker,\n ProgressStepperLabel,\n type ProgressStepperProps,\n type ProgressStepperListProps,\n type ProgressStepperItemProps,\n type ProgressStepperMarkerProps,\n type ProgressStepperLabelProps,\n type ProgressStepperState,\n} from \"./components/ProgressStepper\";\nexport {\n Spinner,\n type SpinnerProps,\n type SpinnerSize,\n type SpinnerLabelPosition,\n} from \"./components/Spinner\";\nexport {\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n type TabsProps,\n type TabsListProps,\n type TabsTriggerProps,\n type TabsContentProps,\n} from \"./components/Tabs\";\nexport {\n SegmentedControl,\n SegmentedControlItem,\n type SegmentedControlProps,\n type SegmentedControlItemProps,\n} from \"./components/SegmentedControl\";\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableRow,\n TableHead,\n TableCell,\n TableCaption,\n type TableProps,\n type TableHeaderProps,\n type TableBodyProps,\n type TableFooterProps,\n type TableRowProps,\n type TableHeadProps,\n type TableCellProps,\n type TableCaptionProps,\n} from \"./components/Table\";\nexport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n type AccordionProps,\n type AccordionItemSlotProps,\n type AccordionContentProps,\n type AccordionTriggerProps,\n type AccordionSize,\n type AccordionType,\n} from \"./components/Accordion\";\nexport {\n breadcrumbLinkClassName,\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbEllipsisTrigger,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n type BreadcrumbEllipsisProps,\n type BreadcrumbEllipsisTriggerProps,\n type BreadcrumbItemProps,\n type BreadcrumbLinkProps,\n type BreadcrumbListProps,\n type BreadcrumbPageProps,\n type BreadcrumbProps,\n type BreadcrumbSeparatorProps,\n} from \"./components/Breadcrumb\";\nexport {\n footerLinkClassName,\n footerLocaleLinkClassName,\n footerLocaleTriggerClassName,\n footerSocialLinkClassName,\n Footer,\n FooterBottom,\n FooterBrand,\n FooterBrandDescription,\n FooterBrandName,\n FooterContent,\n FooterCopyright,\n FooterExplore,\n FooterGroup,\n FooterGroupLabel,\n FooterLink,\n FooterLocale,\n FooterLogo,\n FooterMeta,\n FooterMetaEnd,\n FooterNav,\n FooterSocial,\n type FooterBottomProps,\n type FooterBrandDescriptionProps,\n type FooterBrandNameProps,\n type FooterBrandProps,\n type FooterContentProps,\n type FooterCopyrightProps,\n type FooterExploreProps,\n type FooterGroupLabelProps,\n type FooterGroupProps,\n type FooterLinkProps,\n type FooterLocaleProps,\n type FooterLogoProps,\n type FooterMetaEndProps,\n type FooterMetaProps,\n type FooterNavProps,\n type FooterProps,\n type FooterSocialProps,\n} from \"./components/Footer\";\nexport { Calendar, type CalendarProps, type CalendarMode } from \"./components/Calendar\";\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n type DialogCloseProps,\n type DialogContentProps,\n type DialogDescriptionProps,\n type DialogHeaderProps,\n type DialogProps,\n type DialogTitleProps,\n type DialogTriggerProps,\n} from \"./components/Dialog\";\nexport { Divider, type DividerProps } from \"./components/Divider\";\nexport {\n Box,\n Container,\n Grid,\n GridItem,\n Spacer,\n Stack,\n type BoxProps,\n type ContainerProps,\n type GridItemProps,\n type GridProps,\n type LayoutAlign,\n type LayoutAs,\n type LayoutBackground,\n type LayoutBorderColor,\n type LayoutDirection,\n type LayoutGap,\n type LayoutJustify,\n type LayoutRadius,\n type LayoutStroke,\n type LayoutWrap,\n type SpacerProps,\n type StackProps,\n} from \"./components/Layout\";\nexport {\n Drawer,\n DrawerTrigger,\n DrawerContent,\n DrawerHeader,\n DrawerTitle,\n DrawerDescription,\n DrawerBody,\n DrawerFooter,\n DrawerClose,\n type DrawerProps,\n type DrawerTriggerProps,\n type DrawerContentProps,\n type DrawerHeaderProps,\n type DrawerTitleProps,\n type DrawerDescriptionProps,\n type DrawerBodyProps,\n type DrawerFooterProps,\n type DrawerCloseProps,\n} from \"./components/Drawer\";\nexport type { MenuAlign as DropdownAlign } from \"./components/Dropdown\";\nexport {\n Dropdown,\n DropdownContent,\n type DropdownContentProps,\n DropdownGroup,\n DropdownItem,\n type DropdownItemProps,\n DropdownLabel,\n DropdownPortal,\n DropdownSeparator,\n DropdownShortcut,\n DropdownSub,\n DropdownSubContent,\n type DropdownSubContentProps,\n DropdownSubTrigger,\n type DropdownSubTriggerProps,\n DropdownTrigger,\n type DropdownTriggerProps,\n} from \"./components/Dropdown\";\nexport {\n Field,\n FieldError,\n FieldHint,\n FieldLabel,\n FieldRequired,\n type FieldErrorProps,\n type FieldHintProps,\n type FieldLabelProps,\n type FieldProps,\n type FieldRequiredProps,\n} from \"./components/Field\";\nexport {\n Label,\n LabelRequired,\n type LabelProps,\n type LabelRequiredProps,\n} from \"./components/Label\";\nexport { Link, type LinkProps } from \"./components/Link\";\nexport {\n Menu,\n MenuTrigger,\n MenuPopover,\n MenuList,\n MenuSection,\n MenuDivider,\n MenuItem,\n MenuSub,\n MenuSubTrigger,\n MenuSubContent,\n type MenuProps,\n type MenuSubTriggerProps,\n type MenuSubContentProps,\n} from \"./components/Menu\";\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuTrigger,\n NavigationMenuContent,\n NavigationMenuLink,\n NavigationMenuIndicator,\n type NavigationMenuProps,\n type NavigationMenuListProps,\n type NavigationMenuItemProps,\n type NavigationMenuTriggerProps,\n type NavigationMenuContentProps,\n type NavigationMenuLinkProps,\n type NavigationMenuIndicatorProps,\n} from \"./components/NavigationMenu\";\nexport {\n Sidebar,\n SidebarBrand,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarLink,\n SidebarNav,\n SidebarPeek,\n SidebarPeekEdge,\n SidebarPeekInset,\n SidebarPeekPanel,\n SidebarPeekPin,\n useSidebarPeek,\n type SidebarBrandProps,\n type SidebarContentProps,\n type SidebarFooterProps,\n type SidebarGroupLabelProps,\n type SidebarGroupProps,\n type SidebarHeaderProps,\n type SidebarLinkProps,\n type SidebarNavProps,\n type SidebarProps,\n type SidebarPeekEdgeProps,\n type SidebarPeekInsetProps,\n type SidebarPeekMode,\n type SidebarPeekPanelProps,\n type SidebarPeekPinProps,\n type SidebarPeekProps,\n} from \"./components/Sidebar\";\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n type PaginationContentProps,\n type PaginationEllipsisProps,\n type PaginationItemProps,\n type PaginationLinkProps,\n type PaginationNextProps,\n type PaginationPreviousProps,\n type PaginationProps,\n type PaginationRootProps,\n} from \"./components/Pagination\";\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopOver,\n type PopoverProps,\n type PopoverTriggerProps,\n type PopoverContentProps,\n type PopoverPlacement,\n type PopoverAlign,\n type PopOverProps,\n type PopOverAlign,\n} from \"./components/PopOver\";\nexport { Skeleton, type SkeletonProps } from \"./components/Skeleton\";\nexport { Slider, type SliderProps } from \"./components/Slider\";\nexport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselControls,\n CarouselPrevious,\n CarouselNext,\n CarouselIndicators,\n type CarouselProps,\n type CarouselContentProps,\n type CarouselItemProps,\n type CarouselControlsProps,\n type CarouselPreviousProps,\n type CarouselNextProps,\n type CarouselIndicatorsProps,\n} from \"./components/Carousel\";\nexport {\n Bubble,\n BubbleContent,\n BubbleReactions,\n BubbleGroup,\n type BubbleProps,\n type BubbleContentProps,\n type BubbleReactionsProps,\n type BubbleGroupProps,\n type BubbleVariant,\n type BubbleAlign,\n type BubbleReactionsSide,\n} from \"./components/Bubble\";\nexport {\n Stepper,\n StepperList,\n StepperItem,\n StepperIndicator,\n StepperContent,\n StepperTitle,\n StepperDescription,\n StepperSeparator,\n type StepperProps,\n type StepperListProps,\n type StepperItemProps,\n type StepperIndicatorProps,\n type StepperContentProps,\n type StepperTitleProps,\n type StepperDescriptionProps,\n type StepperSeparatorProps,\n type StepperOrientation,\n type StepperState,\n} from \"./components/Stepper\";\nexport {\n ResizablePanelGroup,\n ResizablePanel,\n ResizableHandle,\n type ResizablePanelGroupProps,\n type ResizablePanelProps,\n type ResizableHandleProps,\n type ResizableOrientation,\n} from \"./components/Resizable\";\nexport {\n ScrollArea,\n ScrollAreaViewport,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n type ScrollAreaProps,\n type ScrollAreaViewportProps,\n type ScrollAreaScrollbarProps,\n type ScrollAreaThumbProps,\n type ScrollAreaOrientation,\n type ScrollAreaType,\n} from \"./components/ScrollArea\";\nexport { SpinButton, type SpinButtonProps } from \"./components/SpinButton\";\nexport {\n Toast,\n Toaster,\n toast,\n dismissToast,\n type ToastProps,\n type ToastVariant,\n type ToastSwipeDirection,\n type ToastOptions,\n type ToastAction,\n type ToasterProps,\n} from \"./components/Toast\";\nexport {\n Tree,\n TreeItem,\n TreeItemContent,\n TreeItemTrigger,\n type TreeProps,\n type TreeItemProps,\n type TreeItemContentProps,\n type TreeItemTriggerProps,\n type TreeSize,\n} from \"./components/Tree\";\nexport { Tooltip, type TooltipAlign, type TooltipPosition, type TooltipProps } from \"./components/Tooltip\";\nexport {\n Chart,\n ChartAxisLabels,\n ChartBars,\n ChartBody,\n ChartContent,\n ChartGrid,\n ChartLegend,\n ChartLegendItem,\n ChartLine,\n ChartPlot,\n ChartTooltip,\n ChartYAxisLabels,\n type ChartAxisLabelsProps,\n type ChartBarsProps,\n type ChartBodyProps,\n type ChartContentProps,\n type ChartGridProps,\n type ChartItemState,\n type ChartLegendItemProps,\n type ChartLegendProps,\n type ChartLineProps,\n type ChartPlotProps,\n type ChartProps,\n type ChartSeriesColor,\n type ChartTooltipProps,\n type ChartYAxisLabelsProps,\n} from \"./components/Chart\";\n","/**\n * Component Color Tokens (Web Kit language layer)\n *\n * Primitive (global/colors) -> Semantic (semantic/colors) ->\n * Component Token (this file) -> Component implementation.\n *\n * This file declares token refs only (no raw color strings).\n * `@refineui/utilities` resolves CSS variables.\n */\nimport type { PaletteColors, SemanticColorName } from \"@refineui/tokens\";\nimport { paletteColorToken, semanticColorToken } from \"@refineui/utilities/color\";\n\nconst semanticToken = (name: SemanticColorName) => semanticColorToken(name);\nconst paletteToken = (name: keyof PaletteColors) => paletteColorToken(String(name));\n\nconst buttonPrimaryColorTokens = {\n appearance: {\n background: semanticToken(\"backgroundBrand\"),\n foreground: semanticToken(\"foregroundOnBrand\"),\n },\n states: {\n hover: { background: semanticToken(\"backgroundBrandHover\") },\n pressed: { background: semanticToken(\"backgroundBrandActive\") },\n disabled: {\n background: semanticToken(\"backgroundBrandDisabled\"),\n foreground: semanticToken(\"foregroundDisabled\"),\n },\n },\n} as const;\n\nexport const componentColorTokens = {\n webIcon: {\n default: \"currentColor\",\n primary: semanticToken(\"foregroundPrimary\"),\n secondary: semanticToken(\"foregroundSecondary\"),\n disabled: semanticToken(\"foregroundDisabled\"),\n inversed: semanticToken(\"foregroundInversed\"),\n },\n button: {\n primary: {\n ...buttonPrimaryColorTokens.appearance,\n hoverBackground: buttonPrimaryColorTokens.states.hover.background,\n activeBackground: buttonPrimaryColorTokens.states.pressed.background,\n disabledBackground: buttonPrimaryColorTokens.states.disabled.background,\n disabledForeground: buttonPrimaryColorTokens.states.disabled.foreground,\n appearance: buttonPrimaryColorTokens.appearance,\n states: buttonPrimaryColorTokens.states,\n },\n secondary: {\n background: semanticToken(\"backgroundPrimary\"),\n foreground: semanticToken(\"foregroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n hoverBackground: semanticToken(\"backgroundSurfaceHover\"),\n hoverBorder: semanticToken(\"borderStrong\"),\n activeBackground: semanticToken(\"backgroundSurfaceActive\"),\n disabledBackground: semanticToken(\"backgroundSurfaceDisabled\"),\n disabledBorder: semanticToken(\"borderDisabled\"),\n disabledForeground: semanticToken(\"foregroundDisabled\"),\n },\n outline: {\n background: \"transparent\",\n foreground: semanticToken(\"foregroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n hoverBorder: semanticToken(\"borderStrong\"),\n activeBorder: semanticToken(\"borderStrong\"),\n disabledBorder: semanticToken(\"borderDisabled\"),\n disabledForeground: semanticToken(\"foregroundDisabled\"),\n },\n ghost: {\n background: \"transparent\",\n foreground: semanticToken(\"foregroundPrimary\"),\n hoverBackground: semanticToken(\"backgroundPrimaryHover\"),\n hoverForeground: semanticToken(\"foregroundPrimaryHover\"),\n activeBackground: semanticToken(\"backgroundPrimaryActive\"),\n activeForeground: semanticToken(\"foregroundPrimary\"),\n disabledForeground: semanticToken(\"foregroundDisabled\"),\n },\n },\n input: {\n text: semanticToken(\"foregroundPrimary\"),\n placeholder: semanticToken(\"foregroundPlaceholder\"),\n background: semanticToken(\"backgroundPrimary\"),\n disabledBackground: semanticToken(\"backgroundSurfaceDisabled\"),\n border: {\n default: semanticToken(\"borderDefault\"),\n focus: semanticToken(\"borderFocus\"),\n error: semanticToken(\"borderError\"),\n success: semanticToken(\"borderSuccess\"),\n disabled: semanticToken(\"borderDisabled\"),\n },\n },\n textarea: {\n text: semanticToken(\"foregroundPrimary\"),\n placeholder: semanticToken(\"foregroundPlaceholder\"),\n background: semanticToken(\"backgroundPrimary\"),\n disabledBackground: semanticToken(\"backgroundSurfaceDisabled\"),\n border: {\n default: semanticToken(\"borderDefault\"),\n focus: semanticToken(\"borderFocus\"),\n error: semanticToken(\"borderError\"),\n success: semanticToken(\"borderSuccess\"),\n disabled: semanticToken(\"borderDisabled\"),\n },\n },\n pagination: {\n navIcon: {\n default: semanticToken(\"foregroundPrimary\"),\n disabled: semanticToken(\"foregroundDisabled\"),\n },\n page: {\n text: semanticToken(\"foregroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n background: semanticToken(\"backgroundPrimary\"),\n hoverBackground: semanticToken(\"backgroundPrimaryHover\"),\n hoverBorder: semanticToken(\"borderHover\"),\n selectedBackground: semanticToken(\"backgroundPrimaryActive\"),\n selectedBorder: semanticToken(\"borderFocus\"),\n disabledBackground: semanticToken(\"backgroundSurfaceDisabled\"),\n disabledBorder: semanticToken(\"borderDisabled\"),\n },\n },\n dropdown: {\n trigger: {\n icon: semanticToken(\"foregroundPrimary\"),\n background: semanticToken(\"backgroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n },\n menu: {\n background: semanticToken(\"backgroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n title: semanticToken(\"foregroundPrimary\"),\n itemText: semanticToken(\"foregroundPrimary\"),\n itemTextSubtle: semanticToken(\"foregroundSecondary\"),\n itemHoverBackground: semanticToken(\"backgroundSurfaceHover\"),\n itemDisabledText: semanticToken(\"foregroundDisabled\"),\n },\n },\n select: {\n text: semanticToken(\"foregroundPrimary\"),\n placeholder: semanticToken(\"foregroundPlaceholder\"),\n background: semanticToken(\"backgroundPrimary\"),\n disabledBackground: semanticToken(\"backgroundSurfaceDisabled\"),\n border: {\n default: semanticToken(\"borderDefault\"),\n disabled: semanticToken(\"borderDisabled\"),\n error: semanticToken(\"borderError\"),\n success: semanticToken(\"borderSuccess\"),\n },\n },\n tooltip: {\n default: {\n background: semanticToken(\"surfacePopover\"),\n foreground: semanticToken(\"foregroundPrimary\"),\n }\n },\n popover: {\n default: {\n background: semanticToken(\"surfacePopover\"),\n foreground: semanticToken(\"foregroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n },\n inverted: {\n background: semanticToken(\"surfaceInverse\"),\n foreground: semanticToken(\"foregroundInversed\"),\n border: semanticToken(\"borderStrong\"),\n },\n },\n field: {\n label: semanticToken(\"foregroundPrimary\"),\n required: semanticToken(\"foregroundError\"),\n hint: semanticToken(\"foregroundTertiary\"),\n error: semanticToken(\"foregroundError\"),\n },\n label: {\n text: semanticToken(\"foregroundPrimary\"),\n disabledText: semanticToken(\"foregroundDisabled\"),\n required: semanticToken(\"foregroundError\"),\n },\n checkbox: {\n label: {\n default: semanticToken(\"foregroundPrimary\"),\n description: semanticToken(\"foregroundSecondary\"),\n disabled: semanticToken(\"foregroundDisabled\"),\n },\n checkIcon: {\n default: semanticToken(\"foregroundInversed\"),\n disabled: semanticToken(\"foregroundSecondary\"),\n },\n },\n radio: {\n label: {\n default: semanticToken(\"foregroundPrimary\"),\n description: semanticToken(\"foregroundSecondary\"),\n disabled: semanticToken(\"foregroundDisabled\"),\n },\n control: {\n dot: semanticToken(\"backgroundBrand\"),\n dotHover: semanticToken(\"backgroundBrandActive\"),\n background: semanticToken(\"backgroundPrimary\"),\n disabledDot: semanticToken(\"foregroundDisabled\"),\n borderDefault: semanticToken(\"borderDefault\"),\n borderFocus: semanticToken(\"borderStrong\"),\n borderDisabled: semanticToken(\"borderDisabled\"),\n },\n },\n toggle: {\n track: {\n on: semanticToken(\"backgroundBrand\"),\n off: semanticToken(\"backgroundPrimaryActive\"),\n hoverOn: semanticToken(\"backgroundBrandHover\"),\n activeOn: semanticToken(\"backgroundBrandActive\"),\n /** Darken on hover/press (rest is already primaryActive) */\n hoverOff: semanticToken(\"backgroundSurfaceSelected\"),\n activeOff: semanticToken(\"backgroundBrandSubtle\"),\n disabledOff: semanticToken(\"backgroundSurfaceDisabled\"),\n disabledOn: semanticToken(\"backgroundBrandSubtle\"),\n },\n thumb: {\n default: semanticToken(\"backgroundPrimary\"),\n disabledOff: semanticToken(\"backgroundBrandSubtle\"),\n disabledOn: semanticToken(\"backgroundPrimary\"),\n },\n },\n switch: {\n track: {\n on: semanticToken(\"backgroundBrand\"),\n off: semanticToken(\"backgroundPrimaryActive\"),\n hoverOn: semanticToken(\"backgroundBrandHover\"),\n activeOn: semanticToken(\"backgroundBrandActive\"),\n hoverOff: semanticToken(\"backgroundSurfaceSelected\"),\n activeOff: semanticToken(\"backgroundBrandSubtle\"),\n disabledOff: semanticToken(\"backgroundSurfaceDisabled\"),\n disabledOn: semanticToken(\"backgroundBrandSubtle\"),\n },\n thumb: {\n default: semanticToken(\"backgroundPrimary\"),\n disabledOff: semanticToken(\"backgroundBrandSubtle\"),\n disabledOn: semanticToken(\"backgroundPrimary\"),\n },\n },\n dialog: {\n overlay: semanticToken(\"surfaceOverlay\"),\n content: {\n background: semanticToken(\"backgroundPrimary\"),\n },\n header: {\n foreground: semanticToken(\"foregroundPrimary\"),\n },\n title: {\n foreground: semanticToken(\"foregroundPrimary\"),\n },\n description: {\n foreground: semanticToken(\"foregroundSecondary\"),\n },\n close: {\n icon: \"currentColor\",\n },\n panel: {\n background: semanticToken(\"backgroundPrimary\"),\n title: semanticToken(\"foregroundPrimary\"),\n description: semanticToken(\"foregroundSecondary\"),\n },\n },\n drawer: {\n overlay: semanticToken(\"surfaceOverlay\"),\n content: {\n background: semanticToken(\"backgroundPrimary\"),\n },\n header: {\n foreground: semanticToken(\"foregroundPrimary\"),\n divider: semanticToken(\"borderDefault\"),\n },\n title: {\n foreground: semanticToken(\"foregroundPrimary\"),\n },\n description: {\n foreground: semanticToken(\"foregroundSecondary\"),\n },\n body: {\n foreground: semanticToken(\"foregroundPrimary\"),\n divider: semanticToken(\"borderDefault\"),\n },\n footer: {\n divider: semanticToken(\"borderDefault\"),\n },\n close: {\n icon: \"currentColor\",\n },\n panel: {\n background: semanticToken(\"backgroundPrimary\"),\n title: semanticToken(\"foregroundPrimary\"),\n description: semanticToken(\"foregroundSecondary\"),\n divider: semanticToken(\"borderDefault\"),\n body: semanticToken(\"foregroundPrimary\"),\n },\n },\n alert: {\n background: semanticToken(\"backgroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n title: semanticToken(\"foregroundPrimary\"),\n description: {\n default: semanticToken(\"foregroundBrand\"),\n info: paletteToken(\"blue600\"),\n success: paletteToken(\"green600\"),\n warning: paletteToken(\"yellow600\"),\n danger: paletteToken(\"red600\"),\n custom: paletteToken(\"purple600\"),\n },\n accent: {\n default: semanticToken(\"foregroundPrimary\"),\n info: paletteToken(\"blue600\"),\n success: paletteToken(\"green600\"),\n warning: paletteToken(\"yellow600\"),\n danger: paletteToken(\"red600\"),\n custom: paletteToken(\"purple600\"),\n },\n },\n badge: {\n default: {\n background: semanticToken(\"backgroundBrand\"),\n foreground: semanticToken(\"foregroundOnBrand\"),\n },\n neutral: {\n background: semanticToken(\"backgroundBrandSubtle\"),\n foreground: semanticToken(\"foregroundBrandStrong\"),\n },\n outline: {\n background: \"transparent\",\n foreground: semanticToken(\"foregroundBrandStrong\"),\n border: semanticToken(\"borderDefault\"),\n },\n success: {\n background: semanticToken(\"backgroundSuccess\"),\n foreground: semanticToken(\"foregroundOnSuccess\"),\n },\n warning: {\n background: paletteToken(\"orange500\"),\n foreground: paletteToken(\"neutralWhite\"),\n },\n danger: {\n background: semanticToken(\"backgroundError\"),\n foreground: semanticToken(\"foregroundOnError\"),\n },\n },\n chip: {\n default: {\n background: semanticToken(\"backgroundSurface\"),\n foreground: semanticToken(\"foregroundBrand\"),\n hoverBackground: semanticToken(\"backgroundPrimaryHover\"),\n activeBackground: semanticToken(\"backgroundPrimaryActive\"),\n disabledBackground: semanticToken(\"backgroundSurfaceDisabled\"),\n disabledForeground: semanticToken(\"foregroundDisabled\"),\n },\n outline: {\n background: \"transparent\",\n foreground: semanticToken(\"foregroundBrand\"),\n border: semanticToken(\"borderDefault\"),\n hoverBorder: semanticToken(\"borderHover\"),\n activeBorder: semanticToken(\"borderFocus\"),\n disabledBorder: semanticToken(\"borderDisabled\"),\n disabledForeground: semanticToken(\"foregroundDisabled\"),\n },\n filled: {\n background: semanticToken(\"backgroundBrand\"),\n foreground: semanticToken(\"foregroundInversed\"),\n hoverBackground: semanticToken(\"backgroundBrandHover\"),\n activeBackground: semanticToken(\"backgroundBrandActive\"),\n disabledBackground: semanticToken(\"backgroundSurfaceDisabled\"),\n disabledForeground: semanticToken(\"foregroundDisabled\"),\n },\n remove: {\n icon: \"currentColor\",\n },\n },\n tag: {\n default: {\n background: semanticToken(\"backgroundSurface\"),\n foreground: semanticToken(\"foregroundBrand\"),\n },\n outline: {\n background: \"transparent\",\n foreground: semanticToken(\"foregroundBrand\"),\n border: semanticToken(\"borderDefault\"),\n },\n filled: {\n background: semanticToken(\"backgroundBrand\"),\n foreground: semanticToken(\"foregroundInversed\"),\n },\n },\n progress: {\n track: semanticToken(\"backgroundBrandSubtle\"),\n indicator: {\n default: semanticToken(\"backgroundBrand\"),\n success: semanticToken(\"backgroundSuccess\"),\n warning: semanticToken(\"backgroundWarning\"),\n danger: semanticToken(\"backgroundError\"),\n },\n },\n chart: {\n plotBackground: semanticToken(\"backgroundPrimary\"),\n grid: semanticToken(\"borderSubtle\"),\n gridBaseline: semanticToken(\"borderDefault\"),\n axis: semanticToken(\"foregroundTertiary\"),\n pointStroke: semanticToken(\"backgroundPrimary\"),\n cursor: semanticToken(\"backgroundSurfaceHover\"),\n tooltip: {\n background: semanticToken(\"surfacePopover\"),\n foreground: semanticToken(\"foregroundPrimary\"),\n muted: semanticToken(\"foregroundSecondary\"),\n border: semanticToken(\"borderDefault\"),\n },\n series: {\n brand: semanticToken(\"backgroundBrand\"),\n info: semanticToken(\"backgroundInfo\"),\n success: semanticToken(\"backgroundSuccess\"),\n warning: semanticToken(\"backgroundWarning\"),\n error: semanticToken(\"backgroundError\"),\n discovery: semanticToken(\"backgroundDiscovery\"),\n },\n seriesSubtle: {\n brand: semanticToken(\"backgroundBrandSubtle\"),\n info: semanticToken(\"backgroundInfoSubtle\"),\n success: semanticToken(\"backgroundSuccessSubtle\"),\n warning: semanticToken(\"backgroundWarningSubtle\"),\n error: semanticToken(\"backgroundErrorSubtle\"),\n discovery: semanticToken(\"backgroundDiscoverySubtle\"),\n },\n },\n spinner: {\n track: semanticToken(\"backgroundBrandSubtle\"),\n indicator: semanticToken(\"backgroundBrand\"),\n label: semanticToken(\"foregroundPrimary\"),\n },\n skeleton: {\n background: semanticToken(\"backgroundSurfaceSelected\"),\n },\n carousel: {\n nav: {\n background: semanticToken(\"backgroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n foreground: semanticToken(\"foregroundPrimary\"),\n hoverBackground: semanticToken(\"backgroundSurfaceHover\"),\n hoverBorder: semanticToken(\"borderStrong\"),\n },\n indicator: {\n default: semanticToken(\"backgroundBrandSubtle\"),\n selected: semanticToken(\"backgroundBrand\"),\n },\n },\n scrollArea: {\n track: {\n background: semanticToken(\"backgroundSurfaceSelected\"),\n },\n thumb: {\n background: semanticToken(\"borderStrong\"),\n hoverBackground: semanticToken(\"foregroundSecondary\"),\n },\n },\n toast: {\n background: semanticToken(\"surfacePopover\"),\n message: semanticToken(\"foregroundPrimary\"),\n accent: {\n default: semanticToken(\"foregroundPrimary\"),\n success: semanticToken(\"foregroundSuccess\"),\n error: semanticToken(\"foregroundError\"),\n warning: semanticToken(\"foregroundWarning\"),\n },\n },\n toaster: {\n stackBackground: \"transparent\",\n },\n tabs: {\n listLine: semanticToken(\"borderDefault\"),\n selectedLine: semanticToken(\"backgroundBrand\"),\n itemForeground: semanticToken(\"foregroundTertiary\"),\n selectedForeground: semanticToken(\"foregroundPrimary\"),\n hoverForeground: semanticToken(\"foregroundPrimaryHover\"),\n itemDisabledForeground: semanticToken(\"foregroundDisabled\"),\n },\n segmentedControl: {\n barBackground: semanticToken(\"backgroundBrandSubtle\"),\n barBorder: semanticToken(\"borderDefault\"),\n itemForeground: semanticToken(\"foregroundSecondary\"),\n itemDisabledForeground: semanticToken(\"foregroundDisabled\"),\n selectedBackground: semanticToken(\"backgroundBrand\"),\n selectedForeground: semanticToken(\"foregroundOnBrand\"),\n selectedHoverBackground: semanticToken(\"backgroundBrandHover\"),\n selectedDisabledBackground: semanticToken(\"backgroundSurfaceDisabled\"),\n hoverForeground: semanticToken(\"foregroundPrimary\"),\n },\n accordion: {\n item: {\n border: semanticToken(\"borderDefault\"),\n },\n trigger: {\n background: semanticToken(\"backgroundPrimary\"),\n foreground: semanticToken(\"foregroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n },\n content: {\n background: semanticToken(\"backgroundPrimaryHover\"),\n foreground: semanticToken(\"foregroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n },\n },\n breadcrumb: {\n list: {\n foreground: semanticToken(\"foregroundTertiary\"),\n },\n item: semanticToken(\"foregroundTertiary\"),\n link: {\n foreground: semanticToken(\"foregroundTertiary\"),\n },\n page: {\n foreground: semanticToken(\"foregroundPrimary\"),\n },\n current: semanticToken(\"foregroundPrimary\"),\n separatorToken: {\n foreground: semanticToken(\"foregroundTertiary\"),\n },\n separator: semanticToken(\"foregroundTertiary\"),\n ellipsisTrigger: {\n foreground: semanticToken(\"foregroundSecondary\"),\n },\n ellipsis: semanticToken(\"foregroundSecondary\"),\n },\n menu: {\n panel: {\n background: semanticToken(\"backgroundSurface\"),\n border: semanticToken(\"borderDefault\"),\n },\n popover: {\n background: \"transparent\",\n },\n list: {\n background: semanticToken(\"backgroundSurface\"),\n border: semanticToken(\"borderDefault\"),\n },\n section: semanticToken(\"foregroundPrimary\"),\n sectionToken: {\n foreground: semanticToken(\"foregroundPrimary\"),\n },\n divider: semanticToken(\"borderDefault\"),\n dividerToken: {\n border: semanticToken(\"borderDefault\"),\n },\n item: {\n text: semanticToken(\"foregroundPrimary\"),\n description: semanticToken(\"foregroundPrimary\"),\n disabledText: semanticToken(\"foregroundDisabled\"),\n hoverBackground: semanticToken(\"backgroundSurfaceHover\"),\n activeBackground: semanticToken(\"backgroundSurfaceSelected\"),\n pressedBackground: semanticToken(\"backgroundSurfaceActive\"),\n disabledBackground: semanticToken(\"backgroundSurfaceDisabled\"),\n },\n },\n command: {\n panel: {\n background: semanticToken(\"backgroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n },\n input: {\n foreground: semanticToken(\"foregroundPrimary\"),\n placeholder: semanticToken(\"foregroundPlaceholder\"),\n icon: semanticToken(\"foregroundTertiary\"),\n },\n group: semanticToken(\"foregroundTertiary\"),\n empty: semanticToken(\"foregroundTertiary\"),\n separator: semanticToken(\"borderDefault\"),\n item: {\n text: semanticToken(\"foregroundPrimary\"),\n disabledText: semanticToken(\"foregroundDisabled\"),\n selectedBackground: semanticToken(\"backgroundSurfaceHover\"),\n shortcut: semanticToken(\"foregroundTertiary\"),\n },\n },\n link: {\n default: semanticToken(\"foregroundLink\"),\n hover: semanticToken(\"foregroundLinkHover\"),\n active: semanticToken(\"foregroundLinkActive\"),\n visited: semanticToken(\"foregroundLinkVisited\"),\n disabled: semanticToken(\"foregroundDisabled\"),\n subtle: {\n default: semanticToken(\"foregroundSecondary\"),\n hover: semanticToken(\"foregroundPrimary\"),\n active: semanticToken(\"foregroundBrandStrong\"),\n },\n },\n calendar: {\n background: semanticToken(\"backgroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n weekday: semanticToken(\"foregroundPrimary\"),\n day: {\n default: semanticToken(\"foregroundPrimary\"),\n otherMonth: semanticToken(\"foregroundDisabled\"),\n selectedBackground: semanticToken(\"backgroundBrand\"),\n selectedForeground: semanticToken(\"foregroundInversed\"),\n rangeMiddleBackground: semanticToken(\"backgroundPrimaryHover\"),\n rangeMiddleForeground: semanticToken(\"foregroundPrimary\"),\n hoverBackground: semanticToken(\"backgroundPrimaryHover\"),\n hoverForeground: semanticToken(\"foregroundPrimaryHover\"),\n activeBackground: semanticToken(\"backgroundPrimaryActive\"),\n activeForeground: semanticToken(\"foregroundPrimary\"),\n },\n },\n card: {\n header: {\n foreground: semanticToken(\"foregroundPrimary\"),\n },\n headerMain: {\n foreground: semanticToken(\"foregroundPrimary\"),\n },\n content: {\n foreground: semanticToken(\"foregroundPrimary\"),\n },\n footer: {\n foreground: semanticToken(\"foregroundPrimary\"),\n },\n action: {\n foreground: \"currentColor\",\n },\n titleToken: {\n foreground: semanticToken(\"foregroundPrimary\"),\n },\n descriptionToken: {\n foreground: semanticToken(\"foregroundSecondary\"),\n },\n elevated: {\n background: semanticToken(\"backgroundPrimary\"),\n },\n outlined: {\n background: semanticToken(\"backgroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n },\n title: semanticToken(\"foregroundPrimary\"),\n description: semanticToken(\"foregroundSecondary\"),\n },\n divider: {\n line: semanticToken(\"borderDefault\"),\n label: paletteToken(\"primaryBlack\"),\n icon: paletteToken(\"primaryBlack\"),\n },\n avatar: {\n image: {\n background: \"transparent\",\n },\n fallback: {\n foreground: \"currentColor\",\n },\n badge: {\n background: \"transparent\",\n },\n avatarIcon: {\n foreground: \"currentColor\",\n },\n overflow: {\n background: semanticToken(\"backgroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n foreground: semanticToken(\"foregroundPrimary\"),\n icon: semanticToken(\"foregroundPrimary\"),\n },\n group: {\n background: \"transparent\",\n },\n groupCount: {\n background: semanticToken(\"backgroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n foreground: semanticToken(\"foregroundSecondary\"),\n },\n /** Cell fill only — Global tint per MCP `Color`. Glyph/initials ink: `avatar.icon`. */\n shell: {\n background: {\n neutral: paletteToken(\"neutral300\"),\n blue: paletteToken(\"blue100\"),\n green: paletteToken(\"green100\"),\n lime: paletteToken(\"lime100\"),\n magenta: paletteToken(\"magenta100\"),\n orange: paletteToken(\"orange100\"),\n purple: paletteToken(\"purple100\"),\n red: paletteToken(\"red100\"),\n teal: paletteToken(\"teal100\"),\n yellow: paletteToken(\"yellow100\"),\n },\n },\n icon: {\n neutral: paletteToken(\"neutral850\"),\n blue: paletteToken(\"blue1000\"),\n green: paletteToken(\"green1000\"),\n lime: paletteToken(\"lime1000\"),\n magenta: paletteToken(\"magenta1000\"),\n orange: paletteToken(\"orange1000\"),\n purple: paletteToken(\"purple1000\"),\n red: paletteToken(\"red1000\"),\n teal: paletteToken(\"teal1000\"),\n yellow: paletteToken(\"yellow1000\"),\n },\n status: {\n online: paletteToken(\"green500\"),\n away: paletteToken(\"yellow300\"),\n unavailable: {\n background: paletteToken(\"red500\"),\n mark: paletteToken(\"neutralWhite\"),\n },\n offline: paletteToken(\"neutral300\"),\n },\n },\n avatars: {\n stack: {\n background: \"transparent\",\n },\n spread: {\n background: \"transparent\",\n },\n count: {\n background: semanticToken(\"backgroundPrimary\"),\n border: semanticToken(\"borderDefault\"),\n foreground: semanticToken(\"foregroundSecondary\"),\n },\n },\n} as const;\n","/**\n * Component typography tokens (Web Kit language layer)\n *\n * Primitive (`typographys`) → Semantic (`SEMANTIC_TEXT`) → Component (this file) → implementation.\n */\nimport type { SemanticTextName } from \"@refineui/tokens\";\nimport { semanticTextToken } from \"@refineui/utilities\";\n\nconst role = (name: SemanticTextName) => semanticTextToken(name);\n\nexport type ControlSize = \"sm\" | \"md\" | \"lg\";\n\nexport const componentTypographyTokens = {\n formControl: {\n sm: role(\"bodySm\"),\n md: role(\"bodyMd\"),\n lg: role(\"bodyLg\"),\n },\n label: {\n sm: role(\"labelSm\"),\n md: role(\"labelMd\"),\n lg: role(\"labelLg\"),\n },\n labelCompanion: {\n label: role(\"labelMd\"),\n description: role(\"captionMd\"),\n },\n fieldFeedback: role(\"captionSm\"),\n /** Trigger = size + medium weight; content = one step smaller / lighter for readable hierarchy */\n accordion: {\n trigger: {\n sm: role(\"labelMd\"),\n md: role(\"bodyLg\"),\n lg: role(\"subtitleLg\"),\n },\n content: {\n sm: role(\"bodySm\"),\n md: role(\"bodyMd\"),\n lg: role(\"bodyLg\"),\n },\n },\n button: {\n sm: role(\"bodySm\"),\n md: role(\"bodyLg\"),\n lg: role(\"subtitleLg\"),\n },\n link: role(\"bodyLg\"),\n breadcrumb: {\n row: role(\"captionLg\"),\n },\n /** Top navigation — trigger denser like segmented control; content links match menu rows. */\n navigationMenu: {\n trigger: role(\"captionLg\"),\n link: role(\"captionLg\"),\n contentLink: role(\"bodyMd\"),\n },\n /** Site footer — sitemap body; locale trigger uses Button sm typography. */\n footer: {\n brandName: role(\"bodyMd\"),\n brandDescription: role(\"bodyXs\"),\n groupLabel: role(\"bodyMd\"),\n link: role(\"bodyMd\"),\n copyright: role(\"bodyMd\"),\n },\n /** App sidebar — group labels match menu sections; links match menu rows. */\n sidebar: {\n brand: role(\"bodyMd\"),\n groupLabel: role(\"captionLg\"),\n link: role(\"bodyMd\"),\n },\n menu: {\n section: role(\"captionLg\"),\n item: role(\"bodyMd\"),\n description: role(\"bodyXs\"),\n shortcut: role(\"bodyXs\"),\n },\n /** Command palette — same scale as Menu (list / section / shortcut). */\n command: {\n group: role(\"captionLg\"),\n item: role(\"bodyMd\"),\n empty: role(\"bodyXs\"),\n shortcut: role(\"bodyXs\"),\n input: role(\"bodyMd\"),\n },\n dropdown: {\n label: role(\"captionLg\"),\n item: role(\"bodyMd\"),\n shortcut: role(\"bodyXs\"),\n },\n dialog: {\n title: role(\"subtitleMd\"),\n description: role(\"bodyXs\"),\n },\n drawer: {\n title: role(\"subtitleLg\"),\n description: role(\"bodyXs\"),\n body: role(\"bodyMd\"),\n },\n card: {\n title: role(\"titleSm\"),\n description: role(\"bodyMd\"),\n },\n alert: {\n title: role(\"captionLg\"),\n description: role(\"captionLg\"),\n },\n bubble: role(\"bodyMd\"),\n /** Digits use title scale — applied via `refineui.css` `[data-refineui=\"input-otp\"][data-size]`. */\n inputOtp: {\n sm: role(\"subtitleLg\"),\n md: role(\"titleSm\"),\n lg: role(\"titleMd\"),\n },\n stepper: {\n indicator: role(\"captionLg\"),\n title: role(\"labelMd\"),\n description: role(\"captionMd\"),\n },\n progressStepper: {\n marker: role(\"captionSm\"),\n label: role(\"labelSm\"),\n },\n\n toast: {\n message: role(\"bodyLg\"),\n },\n /** Hierarchical tree — density matches sidebar / menu rows. */\n tree: {\n item: {\n sm: role(\"bodySm\"),\n md: role(\"bodyMd\"),\n lg: role(\"bodyLg\"),\n },\n },\n pagination: role(\"bodyLg\"),\n chip: {\n sm: role(\"labelSm\"),\n md: role(\"bodySm\"),\n lg: role(\"bodyLg\"),\n },\n badge: role(\"captionMd\"),\n segmentedControl: role(\"captionLg\"),\n tabs: role(\"captionLg\"),\n table: {\n head: role(\"bodySm\"),\n cell: role(\"bodySm\"),\n caption: role(\"bodyXs\"),\n },\n tooltip: role(\"bodyXs\"),\n textarea: role(\"bodyMd\"),\n select: {\n /** Trigger density matches Navigation Menu (`captionLg` at md). */\n trigger: {\n sm: role(\"captionMd\"),\n md: role(\"captionLg\"),\n lg: role(\"bodyMd\"),\n },\n label: role(\"captionLg\"),\n item: role(\"bodyMd\"),\n },\n calendar: {\n day: role(\"captionLg\"),\n weekday: role(\"captionLg\"),\n },\n divider: {\n contentLabel: role(\"captionMd\"),\n },\n chart: {\n axisLabel: role(\"captionSm\"),\n legendLabel: role(\"captionMd\"),\n tooltipLabel: role(\"captionMd\"),\n tooltipValue: role(\"bodySm\"),\n },\n spinner: {\n xs: role(\"captionLg\"),\n sm: role(\"bodyMd\"),\n md: role(\"bodyLg\"),\n lg: role(\"subtitleMd\"),\n xl: role(\"subtitleLg\"),\n xxl: role(\"titleSm\"),\n },\n avatar: {\n initialsNeutral: {\n xxxsmall: role(\"bodyXs\"),\n xxsmall: role(\"bodyMd\"),\n xsmall: role(\"bodyLg\"),\n small: role(\"bodyLg\"),\n medium: role(\"bodyLg\"),\n large: role(\"bodyLg\"),\n xlarge: role(\"subtitleLg\"),\n xxlarge: role(\"titleSm\"),\n xxxlarge: role(\"titleMd\"),\n },\n initialsAccent: {\n xxxlarge: role(\"titleMd\"),\n xxlarge: role(\"titleSm\"),\n xlarge: role(\"subtitleLg\"),\n default: role(\"bodyLg\"),\n },\n groupCount: {\n xxxsmall: role(\"captionSm\"),\n xxsmall: role(\"captionSm\"),\n xsmall: role(\"captionMd\"),\n small: role(\"captionMd\"),\n medium: role(\"captionLg\"),\n large: role(\"captionLg\"),\n xlarge: role(\"bodyMd\"),\n xxlarge: role(\"bodyMd\"),\n xxxlarge: role(\"bodyMd\"),\n },\n },\n} as const;\n","import { SEMANTIC_TEXT, type SemanticTextName } from \"@refineui/tokens\";\nimport {\n foundationTypographyUtilityClass,\n isSemanticTextTokenRef,\n semanticTextToken,\n type SemanticTextTokenRef,\n} from \"@refineui/utilities\";\n\n/** Resolve a semantic text role → `refineui-typo-*` utility class. */\nexport function semanticTextClass(name: SemanticTextName): string {\n return foundationTypographyUtilityClass(SEMANTIC_TEXT[name]);\n}\n\n/** Resolve a component typography token ref → utility class. */\nexport function componentTextClass(ref: SemanticTextTokenRef<SemanticTextName>): string {\n if (!isSemanticTextTokenRef(ref)) {\n throw new Error(\"componentTextClass expects a semantic text token ref.\");\n }\n return semanticTextClass(ref.name);\n}\n\n/** Size-keyed component token map → utility class (`formControl`, `label`, …). */\nexport function sizedComponentTextClass<TSize extends string>(\n map: Record<TSize, SemanticTextTokenRef<SemanticTextName>>,\n size: TSize,\n): string {\n return componentTextClass(map[size]);\n}\n\n/** Materialize a size/role map of token refs into Tailwind utility class strings. */\nexport function buildSemanticTextClassMap<TKey extends string>(\n map: Record<TKey, SemanticTextTokenRef<SemanticTextName>>,\n): Record<TKey, string> {\n return Object.fromEntries(\n Object.entries(map).map(([key, token]) => [\n key,\n componentTextClass(token as SemanticTextTokenRef<SemanticTextName>),\n ]),\n ) as Record<TKey, string>;\n}\n","/**\n * Web Kit component sizes — re-export from `@refineui/tokens`.\n * Values are Foundation aliases (`componentSizeFoundationKeys`); do not add raw px here.\n */\nexport {\n componentSizes,\n componentSizeFoundationKeys,\n foundationSizes,\n type ComponentSizeName,\n type FoundationSizeName,\n} from \"@refineui/tokens\";\n","import { clsx } from \"clsx\";\nimport type { CSSProperties, ReactNode } from \"react\";\nimport { iconSizes } from \"@refineui/tokens\";\nimport { getIconChar, getFontFamily } from \"@refineui/web-icons\";\n\nexport interface WebIconProps {\n name: string;\n size?: number;\n color?: string;\n /** RefineUI System Icons style (default: regular) */\n iconStyle?: \"regular\" | \"filled\";\n className?: string;\n style?: CSSProperties;\n /** Shown when the glyph is missing */\n fallback?: ReactNode;\n /** Accessibility: omit label → aria-hidden */\n \"aria-label\"?: string;\n}\n\n/** Glyph from @refineui/web-icons — size/color stay inline on the glyph */\nexport function WebIcon({\n name,\n size = iconSizes.medium,\n color,\n iconStyle = \"regular\",\n className,\n style,\n fallback = null,\n \"aria-label\": ariaLabel,\n}: WebIconProps) {\n const char = getIconChar(name, iconStyle, size);\n if (char == null) return <>{fallback}</>;\n\n return (\n <span\n role={ariaLabel ? \"img\" : undefined}\n aria-label={ariaLabel}\n aria-hidden={!ariaLabel}\n className={clsx(\n \"inline-flex shrink-0 items-center justify-start leading-none\",\n className,\n )}\n style={{\n width: size,\n minWidth: size,\n height: size,\n minHeight: size,\n fontFamily: getFontFamily(iconStyle),\n fontSize: size,\n color,\n ...style,\n }}\n >\n {char}\n </span>\n );\n}\n","import { clsx } from \"clsx\";\nimport { forwardRef } from \"react\";\nimport { buttonIconSizeClass, buttonLabelSizeClass, buttonStyles, buttonVariantClass } from \"./style\";\nimport type { ButtonProps } from \"./types\";\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = \"primary\",\n size = \"md\",\n layout = \"label\",\n fullWidth = false,\n className,\n disabled,\n type = \"button\",\n \"aria-disabled\": ariaDisabledProp,\n ...rest\n },\n ref,\n) {\n const inactive =\n Boolean(disabled) || ariaDisabledProp === true || ariaDisabledProp === \"true\";\n\n const variantStyles =\n variant === \"ghost\" && layout === \"icon\"\n ? buttonStyles.iconGhost\n : buttonVariantClass[variant];\n\n const sizeStyles = layout === \"icon\" ? buttonIconSizeClass[size] : buttonLabelSizeClass[size];\n\n /** Icon layout: Primary/Ghost omit border so a 1px stroke does not shrink the box. */\n const iconNoStroke =\n layout === \"icon\" && (variant === \"primary\" || variant === \"ghost\") ? \"border-0\" : null;\n\n return (\n <button\n ref={ref}\n type={type}\n data-refineui=\"button\"\n data-variant={variant}\n data-size={size}\n data-layout={layout}\n data-inactive={inactive ? \"true\" : undefined}\n className={clsx(\n buttonStyles.base,\n variantStyles,\n sizeStyles,\n iconNoStroke,\n fullWidth && \"w-full\",\n inactive && \"cursor-not-allowed\",\n className,\n )}\n disabled={disabled}\n aria-disabled={inactive ? true : ariaDisabledProp ?? undefined}\n {...rest}\n />\n );\n});\n","/**\n * Recipe model — explicit layer between component tokens and component implementation.\n * Inspired by Panda CSS recipes; `style.ts` may re-export recipe output during migration.\n *\n * SlotRecipe v1 is visual-only. Contracts (states, a11y, keyboard, focus) live in Component Spec.\n */\n\n/** CSS pseudo-class interaction states — documented on single-part recipes only. */\nexport type CssInteractionState = \"hover\" | \"active\" | \"focus-visible\" | \"disabled\";\n\n/** Component-owned states exposed via `data-state`. */\nexport type ComponentDataState =\n | \"default\"\n | \"open\"\n | \"closed\"\n | \"selected\"\n | \"checked\"\n | \"expanded\"\n | \"collapsed\"\n | \"pressed\"\n | \"loading\"\n | \"active\";\n\nexport type RecipeVariantMap = Readonly<Record<string, Readonly<Record<string, string>>>>;\n\nexport type RecipeCompoundVariant = Readonly<{\n /** Variant keys that must all match (e.g. variant + disabled). */\n match: Readonly<Record<string, string | boolean>>;\n className: string;\n}>;\n\n/** Single-part component recipe (Button, Input, Badge, …). */\nexport type ComponentRecipe = Readonly<{\n name: string;\n base: string;\n variants?: RecipeVariantMap;\n compoundVariants?: readonly RecipeCompoundVariant[];\n defaultVariants?: Readonly<Record<string, string>>;\n /** CSS pseudo states owned by refineui.css — documented for Doctor/MCP. */\n cssStates?: readonly CssInteractionState[];\n /** Component states via data-state — documented for Doctor/MCP. */\n dataStates?: readonly ComponentDataState[];\n}>;\n\n/** Per-slot class strings keyed by slot name. */\nexport type SlotClassMap = Readonly<Record<string, string>>;\n\n/** Variant axis → value → partial slot class overrides. */\nexport type SlotVariantMap = Readonly<Record<string, Readonly<Record<string, SlotClassMap>>>>;\n\nexport type SlotCompoundVariant = Readonly<{\n match: Readonly<Record<string, string | boolean>>;\n slots: SlotClassMap;\n}>;\n\n/**\n * Multi-part slot recipe v1 — visual composition only.\n * Canonical shape: slots → base → variants → compoundVariants → defaultVariants\n */\nexport type SlotRecipe = Readonly<{\n name: string;\n slots: readonly string[];\n base: SlotClassMap;\n variants?: SlotVariantMap;\n compoundVariants?: readonly SlotCompoundVariant[];\n defaultVariants?: Readonly<Record<string, string>>;\n}>;\n\nexport function defineRecipe<T extends ComponentRecipe>(recipe: T): T {\n return recipe;\n}\n\nfunction assertSlotRecipe(recipe: SlotRecipe): void {\n for (const key of Object.keys(recipe.base)) {\n if (!recipe.slots.includes(key)) {\n throw new Error(\n `Slot recipe \"${recipe.name}\": base key \"${key}\" is not listed in slots`,\n );\n }\n }\n\n if (!recipe.variants) return;\n\n for (const [axis, values] of Object.entries(recipe.variants)) {\n for (const slotMap of Object.values(values)) {\n for (const slot of Object.keys(slotMap)) {\n if (!recipe.slots.includes(slot)) {\n throw new Error(\n `Slot recipe \"${recipe.name}\": variants.${axis} references unknown slot \"${slot}\"`,\n );\n }\n }\n }\n }\n\n for (const compound of recipe.compoundVariants ?? []) {\n for (const slot of Object.keys(compound.slots)) {\n if (!recipe.slots.includes(slot)) {\n throw new Error(\n `Slot recipe \"${recipe.name}\": compoundVariants references unknown slot \"${slot}\"`,\n );\n }\n }\n }\n}\n\nexport function defineSlotRecipe<T extends SlotRecipe>(recipe: T): T {\n assertSlotRecipe(recipe);\n return recipe;\n}\n\n/** Merge base + variant + compound slot classes for runtime consumption. */\nexport function resolveSlotClasses(\n recipe: SlotRecipe,\n slot: string,\n variants: Readonly<Record<string, string | undefined>> = {},\n): string {\n if (!recipe.slots.includes(slot)) return \"\";\n\n const merged: Record<string, string> = { ...recipe.defaultVariants };\n for (const [key, value] of Object.entries(variants)) {\n if (value !== undefined) merged[key] = value;\n }\n\n const parts: string[] = [];\n const baseClass = recipe.base[slot];\n if (baseClass) parts.push(baseClass);\n\n if (recipe.variants) {\n for (const [axis, value] of Object.entries(merged)) {\n const slotMap = recipe.variants[axis]?.[value];\n const variantClass = slotMap?.[slot];\n if (variantClass) parts.push(variantClass);\n }\n }\n\n for (const compound of recipe.compoundVariants ?? []) {\n const matches = Object.entries(compound.match).every(\n ([key, expected]) => merged[key] === String(expected),\n );\n if (matches) {\n const compoundClass = compound.slots[slot];\n if (compoundClass) parts.push(compoundClass);\n }\n }\n\n return parts.join(\" \");\n}\n","/**\n * Button recipe — visual mapping only.\n * Contract (states, a11y, keyboard): packages/react/spec/components/button.json\n */\nimport { componentTypographyTokens } from \"../tokens/componentTypographyTokens\";\nimport { sizedComponentTextClass } from \"../typography\";\nimport { defineRecipe } from \"./types\";\nimport type { ButtonSize, ButtonVariant } from \"../components/Button/types\";\n\nconst buttonVariantClass: Record<ButtonVariant, string> = {\n primary:\n \"border-refineui-none border border-transparent bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed\",\n secondary:\n \"border-refineui-thin border-refineui-alias-border-default bg-refineui-alias-background-surface text-refineui-alias-foreground-primary\",\n outline:\n \"border-refineui-thin border-refineui-alias-border-default bg-transparent text-refineui-alias-foreground-primary\",\n ghost: \"border-refineui-none border border-transparent bg-transparent text-refineui-alias-foreground-primary\",\n};\n\nconst buttonLabelSizeClass: Record<ButtonSize, string> = {\n sm: `min-h-refineui-button-min-height-sm gap-refineui-size-xx-small rounded-refineui-large px-refineui-size-medium py-refineui-size-xx-small ${sizedComponentTextClass(componentTypographyTokens.button, \"sm\")}`,\n md: `min-h-refineui-button-min-height-md gap-refineui-size-xx-small rounded-refineui-x-large px-refineui-size-medium py-refineui-size-x-small ${sizedComponentTextClass(componentTypographyTokens.button, \"md\")}`,\n lg: `min-h-refineui-button-min-height-lg gap-refineui-size-xx-small rounded-refineui-xx-large px-refineui-size-large py-refineui-size-medium ${sizedComponentTextClass(componentTypographyTokens.button, \"lg\")}`,\n};\n\nconst buttonIconSizeClass: Record<ButtonSize, string> = {\n sm: \"min-h-refineui-button-min-height-sm min-w-refineui-button-min-height-sm shrink-0 gap-0 rounded-refineui-large p-refineui-size-xx-small leading-none\",\n md: \"min-h-refineui-button-min-height-md min-w-refineui-button-min-height-md shrink-0 gap-0 rounded-refineui-x-large p-refineui-size-x-small leading-none\",\n lg: \"min-h-refineui-button-min-height-lg min-w-refineui-button-min-height-lg shrink-0 gap-0 rounded-refineui-xx-large p-refineui-size-medium leading-none\",\n};\n\nexport const buttonRecipe = defineRecipe({\n name: \"button\",\n base: \"box-border inline-flex cursor-pointer items-center justify-center border transition-[opacity,background-color,border-color,color,transform] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]\",\n variants: {\n variant: buttonVariantClass,\n layout: {\n label: \"\",\n icon: \"\",\n },\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n {\n match: { variant: \"ghost\", layout: \"icon\" },\n className:\n \"border-refineui-none border border-transparent bg-transparent text-refineui-alias-foreground-secondary hover:text-refineui-alias-foreground-primary-hover\",\n },\n {\n match: { layout: \"icon\", variant: \"primary\" },\n className: \"border-0\",\n },\n {\n match: { layout: \"icon\", variant: \"ghost\" },\n className: \"border-0\",\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n layout: \"label\",\n size: \"md\",\n },\n cssStates: [\"hover\", \"active\", \"focus-visible\", \"disabled\"],\n dataStates: [\"default\", \"loading\"],\n});\n\n/** Resolved class maps consumed by Button/style.ts and component spec. */\nexport const buttonStyles = {\n base: buttonRecipe.base,\n iconGhost: buttonRecipe.compoundVariants?.[0]?.className ?? \"\",\n} as const;\n\nexport { buttonVariantClass, buttonLabelSizeClass, buttonIconSizeClass };\n","import { clsx } from \"clsx\";\nimport { inputBorderClass, inputSizeClass, inputStyles } from \"./style\";\nimport type { InputProps } from \"./types\";\nimport { useOptionalFieldSize } from \"../Field/context\";\n\nexport function Input({\n error = false,\n success = false,\n fullWidth = false,\n size: sizeProp,\n disabled,\n className,\n ...props\n}: InputProps) {\n const fieldSize = useOptionalFieldSize();\n const size = sizeProp ?? fieldSize ?? \"lg\";\n const borderClass = disabled\n ? inputBorderClass.disabled\n : error\n ? inputBorderClass.error\n : success\n ? inputBorderClass.success\n : inputBorderClass.default;\n\n return (\n <input\n data-refineui=\"input\"\n data-size={size}\n data-error={error || undefined}\n data-success={success || undefined}\n disabled={disabled}\n aria-invalid={error || undefined}\n className={clsx(\n inputStyles.base,\n inputStyles.text,\n inputStyles.disabledText,\n borderClass,\n disabled ? inputStyles.disabledBg : inputStyles.defaultBg,\n fullWidth && \"w-full\",\n inputSizeClass[size],\n className,\n )}\n {...props}\n />\n );\n}\n","/** Shared sm / md / lg tiers for Input, SpinButton — keep in sync. */\nimport { componentTypographyTokens, type ControlSize } from \"./tokens/componentTypographyTokens\";\nimport { sizedComponentTextClass } from \"./typography\";\n\nexport type FormControlSize = ControlSize;\n\nconst minHeight: Record<FormControlSize, string> = {\n sm: \"min-h-refineui-control-height-sm\",\n md: \"min-h-refineui-control-height-md\",\n lg: \"min-h-refineui-control-height-lg\",\n};\n\nconst fixedHeight: Record<FormControlSize, string> = {\n sm: \"h-refineui-control-height-sm min-h-refineui-control-height-sm\",\n md: \"h-refineui-control-height-md min-h-refineui-control-height-md\",\n lg: \"h-refineui-control-height-lg min-h-refineui-control-height-lg\",\n};\n\nconst radius: Record<FormControlSize, string> = {\n sm: \"rounded-refineui-large\",\n md: \"rounded-refineui-x-large\",\n lg: \"rounded-refineui-xx-large\",\n};\n\nconst padding: Record<FormControlSize, string> = {\n sm: \"px-refineui-size-medium py-refineui-size-x-small\",\n md: \"px-refineui-size-large py-refineui-size-medium\",\n lg: \"px-refineui-size-x-large py-refineui-size-large\",\n};\n\nconst typography: Record<FormControlSize, string> = {\n sm: sizedComponentTextClass(componentTypographyTokens.formControl, \"sm\"),\n md: sizedComponentTextClass(componentTypographyTokens.formControl, \"md\"),\n lg: sizedComponentTextClass(componentTypographyTokens.formControl, \"lg\"),\n};\n\nexport const formControlTypoClass = typography;\n\n/** `<input>` — flexible height, grows with content if needed */\nexport const formControlInputSizeClass: Record<FormControlSize, string> = {\n sm: [minHeight.sm, radius.sm, padding.sm, typography.sm].join(\" \"),\n md: [minHeight.md, radius.md, padding.md, typography.md].join(\" \"),\n lg: [minHeight.lg, radius.lg, padding.lg, typography.lg].join(\" \"),\n};\n\n/** Fixed-height field shell (SpinButton). Select trigger uses Navigation Menu density instead. */\nexport const formControlShellSizeClass: Record<FormControlSize, string> = {\n sm: [fixedHeight.sm, radius.sm, padding.sm, typography.sm].join(\" \"),\n md: [fixedHeight.md, radius.md, padding.md, typography.md].join(\" \"),\n lg: [fixedHeight.lg, radius.lg, padding.lg, typography.lg].join(\" \"),\n};\n\n/**\n * SpinButton shell — same control height + radius as other fields,\n * no outer padding (stepper must sit flush on the trailing edge).\n */\nexport const formControlShellHeightClass: Record<FormControlSize, string> = {\n sm: [fixedHeight.sm, radius.sm].join(\" \"),\n md: [fixedHeight.md, radius.md].join(\" \"),\n lg: [fixedHeight.lg, radius.lg].join(\" \"),\n};\n","import type { InputProps } from \"./types\";\nimport { formControlInputSizeClass } from \"../../formControlSizes\";\n\nexport const inputStyles = {\n base: \"box-border appearance-none outline-none transition-[border-color,box-shadow,background-color] duration-[var(--refineui-motion-duration-fast)]\",\n text: \"text-refineui-alias-foreground-primary placeholder:text-refineui-alias-foreground-placeholder\",\n disabledText: \"disabled:text-refineui-alias-foreground-disabled\",\n disabledBg: \"bg-refineui-alias-background-surface-disabled\",\n defaultBg: \"bg-refineui-alias-background-primary\",\n} as const;\n\nexport const inputSizeClass: Record<NonNullable<InputProps[\"size\"]>, string> = formControlInputSizeClass;\n\nexport const inputBorderClass = {\n disabled: \"border-refineui-thin border-refineui-alias-border-disabled\",\n error: \"border-refineui-thin border-refineui-alias-border-error\",\n success: \"border-refineui-thin border-refineui-alias-border-success\",\n default: \"border-refineui-thin border-refineui-alias-border-default\",\n} as const;\n","import { createContext, useContext } from \"react\";\nimport type { FieldProps } from \"./types\";\n\ntype FieldSize = NonNullable<FieldProps[\"size\"]>;\n\nexport const FieldSizeContext = createContext<FieldSize | null>(null);\n\n/** `null` outside `Field` — controls inherit only when wrapped. */\nexport function useOptionalFieldSize(): FieldSize | null {\n return useContext(FieldSizeContext);\n}\n\nexport function useFieldSize(): FieldSize {\n return useContext(FieldSizeContext) ?? \"lg\";\n}\n","import { clsx } from \"clsx\";\nimport type {\n ChangeEvent,\n ClipboardEvent,\n FocusEvent,\n InputHTMLAttributes,\n KeyboardEvent,\n} from \"react\";\nimport {\n createContext,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useOptionalFieldSize } from \"../Field/context\";\nimport { inputOtpSlotSizeClass, inputOtpStyles } from \"./style\";\nimport type { InputOTPProps, InputOTPSize, InputOTPSlotProps } from \"./types\";\n\nconst DEFAULT_PATTERN = /\\d/;\n\ntype InputOTPContextValue = {\n value: string;\n maxLength: number;\n size: InputOTPSize;\n disabled: boolean;\n inputMode: InputHTMLAttributes<HTMLInputElement>[\"inputMode\"];\n autoComplete: InputHTMLAttributes<HTMLInputElement>[\"autoComplete\"];\n name?: string;\n inputId: string;\n autoFocus: boolean;\n register: (index: number, el: HTMLInputElement | null) => void;\n focusAt: (index: number) => void;\n setCharAt: (index: number, char: string) => void;\n clearAt: (index: number) => void;\n pasteAt: (index: number, text: string) => void;\n};\n\nconst InputOTPContext = createContext<InputOTPContextValue | null>(null);\n\nfunction useInputOTPContext(component: string): InputOTPContextValue {\n const v = useContext(InputOTPContext);\n if (!v) throw new Error(`${component} must be used within InputOTP.`);\n return v;\n}\n\nfunction filterChars(raw: string, pattern: RegExp): string {\n let out = \"\";\n for (const char of raw) {\n pattern.lastIndex = 0;\n if (!pattern.test(char)) continue;\n out += char;\n }\n return out;\n}\n\nfunction filterValue(raw: string, maxLength: number, pattern: RegExp): string {\n return filterChars(raw, pattern).slice(0, maxLength);\n}\n\nexport function InputOTP({\n value: valueProp,\n defaultValue = \"\",\n onValueChange,\n maxLength,\n size: sizeProp,\n disabled = false,\n pattern = DEFAULT_PATTERN,\n autoFocus = false,\n name,\n id,\n inputMode = \"numeric\",\n autoComplete = \"one-time-code\",\n className,\n children,\n \"aria-label\": ariaLabel = \"One-time password\",\n ...props\n}: InputOTPProps) {\n const fieldSize = useOptionalFieldSize();\n const size = sizeProp ?? fieldSize ?? \"lg\";\n const isControlled = valueProp !== undefined;\n const [uncontrolled, setUncontrolled] = useState(() =>\n filterValue(defaultValue, maxLength, pattern),\n );\n const value = filterValue(isControlled ? valueProp! : uncontrolled, maxLength, pattern);\n const refs = useRef<(HTMLInputElement | null)[]>([]);\n const reactId = useId();\n const inputId = id ?? `refineui-input-otp-${reactId}`;\n\n const commit = useCallback(\n (next: string) => {\n const filtered = filterValue(next, maxLength, pattern);\n if (!isControlled) setUncontrolled(filtered);\n onValueChange?.(filtered);\n return filtered;\n },\n [isControlled, maxLength, onValueChange, pattern],\n );\n\n const focusAt = useCallback(\n (index: number) => {\n const i = Math.min(Math.max(index, 0), Math.max(maxLength - 1, 0));\n const el = refs.current[i];\n el?.focus();\n el?.select();\n },\n [maxLength],\n );\n\n const register = useCallback((index: number, el: HTMLInputElement | null) => {\n refs.current[index] = el;\n }, []);\n\n const setCharAt = useCallback(\n (index: number, char: string) => {\n const digit = filterChars(char, pattern).slice(-1);\n if (!digit) return;\n const at = Math.min(Math.max(index, 0), maxLength - 1);\n commit(value.slice(0, at) + digit);\n if (at < maxLength - 1) focusAt(at + 1);\n else focusAt(at);\n },\n [commit, focusAt, maxLength, pattern, value],\n );\n\n const clearAt = useCallback(\n (index: number) => {\n const at = Math.min(Math.max(index, 0), maxLength - 1);\n if (value[at]) {\n commit(value.slice(0, at) + value.slice(at + 1));\n focusAt(at);\n return;\n }\n if (at > 0) {\n commit(value.slice(0, at - 1) + value.slice(at));\n focusAt(at - 1);\n }\n },\n [commit, focusAt, maxLength, value],\n );\n\n const pasteAt = useCallback(\n (index: number, text: string) => {\n const chunk = filterChars(text, pattern);\n if (!chunk) return;\n const at = Math.min(Math.max(index, 0), maxLength - 1);\n const next = commit(value.slice(0, at) + chunk);\n focusAt(Math.min(Math.max(next.length, 0), maxLength - 1));\n },\n [commit, focusAt, maxLength, pattern, value],\n );\n\n const ctx = useMemo<InputOTPContextValue>(\n () => ({\n value,\n maxLength,\n size,\n disabled,\n inputMode,\n autoComplete,\n name,\n inputId,\n autoFocus,\n register,\n focusAt,\n setCharAt,\n clearAt,\n pasteAt,\n }),\n [\n value,\n maxLength,\n size,\n disabled,\n inputMode,\n autoComplete,\n name,\n inputId,\n autoFocus,\n register,\n focusAt,\n setCharAt,\n clearAt,\n pasteAt,\n ],\n );\n\n return (\n <InputOTPContext.Provider value={ctx}>\n <div\n data-refineui=\"input-otp\"\n data-size={size}\n data-disabled={disabled || undefined}\n role=\"group\"\n aria-label={ariaLabel}\n className={clsx(inputOtpStyles.root, className)}\n {...props}\n >\n {children}\n </div>\n </InputOTPContext.Provider>\n );\n}\n\nexport function InputOTPSlot({\n index,\n className,\n onChange,\n onKeyDown,\n onPaste,\n onFocus,\n ...props\n}: InputOTPSlotProps) {\n const {\n value,\n size,\n disabled,\n inputMode,\n autoComplete,\n name,\n inputId,\n autoFocus,\n register,\n focusAt,\n setCharAt,\n clearAt,\n pasteAt,\n maxLength,\n } = useInputOTPContext(\"InputOTPSlot\");\n\n const char = value[index] ?? \"\";\n\n const onSlotChange = (e: ChangeEvent<HTMLInputElement>) => {\n onChange?.(e);\n if (e.defaultPrevented) return;\n const raw = e.target.value;\n if (!raw) {\n clearAt(index);\n return;\n }\n if (raw.length > 1) {\n pasteAt(index, raw);\n return;\n }\n setCharAt(index, raw);\n };\n\n const onSlotKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n\n if (e.key === \"Backspace\") {\n e.preventDefault();\n clearAt(index);\n return;\n }\n if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n focusAt(index - 1);\n return;\n }\n if (e.key === \"ArrowRight\") {\n e.preventDefault();\n focusAt(index + 1);\n }\n };\n\n const onSlotPaste = (e: ClipboardEvent<HTMLInputElement>) => {\n onPaste?.(e);\n if (e.defaultPrevented) return;\n e.preventDefault();\n pasteAt(index, e.clipboardData.getData(\"text\"));\n };\n\n const onSlotFocus = (e: FocusEvent<HTMLInputElement>) => {\n onFocus?.(e);\n e.target.select();\n };\n\n return (\n <input\n ref={(el) => register(index, el)}\n data-refineui=\"input-otp-slot\"\n data-index={index}\n data-filled={char ? true : undefined}\n id={index === 0 ? inputId : `${inputId}-${index}`}\n name={name ? `${name}-${index}` : undefined}\n type=\"text\"\n inputMode={inputMode}\n autoComplete={index === 0 ? autoComplete : \"off\"}\n autoCapitalize=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n autoFocus={autoFocus && index === 0}\n disabled={disabled}\n maxLength={index === 0 ? maxLength : 1}\n value={char}\n aria-label={`Digit ${index + 1} of ${maxLength}`}\n className={clsx(inputOtpStyles.slot, inputOtpSlotSizeClass[size], className)}\n onChange={onSlotChange}\n onKeyDown={onSlotKeyDown}\n onPaste={onSlotPaste}\n onFocus={onSlotFocus}\n {...props}\n />\n );\n}\n","import { clsx } from \"clsx\";\nimport type { FormControlSize } from \"../../formControlSizes\";\n\n/**\n * InputOTP — independent soft square `<input>` cells with gap. No merged shell.\n * Digit typography lives in `refineui.css` (`[data-size]` → Foundation title scale).\n */\nexport const inputOtpStyles = {\n /** Row of separate cells. */\n root: \"relative box-border inline-flex items-center gap-refineui-size-small outline-none\",\n slot: clsx(\n \"box-border appearance-none outline-none\",\n \"inline-flex shrink-0 cursor-text items-center justify-center\",\n \"border-refineui-thin border-transparent\",\n // Soft grey tile (not white) so cells read on light preview / page.\n \"bg-refineui-alias-background-surface-selected\",\n \"text-center tabular-nums\",\n \"text-refineui-alias-foreground-primary\",\n \"transition-[background-color,border-color]\",\n \"duration-[var(--refineui-motion-duration-fast)]\",\n \"ease-[var(--refineui-motion-easing-emphasized)]\",\n \"disabled:cursor-not-allowed\",\n \"disabled:border-refineui-alias-border-disabled\",\n \"disabled:bg-refineui-alias-background-surface-disabled\",\n \"disabled:text-refineui-alias-foreground-disabled\",\n ),\n} as const;\n\nexport const inputOtpSlotSizeClass: Record<FormControlSize, string> = {\n sm: \"size-refineui-control-height-sm rounded-refineui-large p-0\",\n md: \"size-refineui-control-height-md rounded-refineui-x-large p-0\",\n lg: \"size-refineui-control-height-lg rounded-refineui-xx-large p-0\",\n};\n","import { clsx } from \"clsx\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type MutableRefObject,\n type PointerEvent,\n} from \"react\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { searchFieldClearIconSize, searchFieldLeadingIconSize, searchFieldStyles } from \"./style\";\nimport type {\n SearchFieldClearProps,\n SearchFieldIconProps,\n SearchFieldInputProps,\n SearchFieldProps,\n} from \"./types\";\n\ntype SearchFieldContextValue = {\n value: string;\n setValue: (next: string) => void;\n clear: () => void;\n disabled: boolean;\n inputId: string;\n inputLabel: string | undefined;\n inputRef: MutableRefObject<HTMLInputElement | null>;\n};\n\nconst SearchFieldContext = createContext<SearchFieldContextValue | null>(null);\n\nfunction useSearchFieldContext(component: string): SearchFieldContextValue {\n const ctx = useContext(SearchFieldContext);\n if (!ctx) {\n throw new Error(`${component} must be used within SearchField.`);\n }\n return ctx;\n}\n\nfunction useControllableString(\n controlled: string | undefined,\n defaultValue: string | undefined,\n onChange: ((next: string) => void) | undefined,\n): [string, (next: string) => void] {\n const [internal, setInternal] = useState(defaultValue ?? \"\");\n const isControlled = controlled !== undefined;\n const value = isControlled ? controlled : internal;\n const setValue = useCallback(\n (next: string) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n },\n [isControlled, onChange],\n );\n return [value, setValue];\n}\n\nexport function SearchField({\n value,\n defaultValue,\n onValueChange,\n disabled = false,\n appearance = \"filled\",\n className,\n children,\n id,\n onPointerDown,\n \"aria-label\": ariaLabel = \"Search\",\n ...props\n}: SearchFieldProps) {\n const [query, setQuery] = useControllableString(value, defaultValue, onValueChange);\n const inputRef = useRef<HTMLInputElement>(null);\n const reactId = useId();\n const inputId = id ?? `refineui-search-field-${reactId}`;\n\n const clear = useCallback(() => {\n setQuery(\"\");\n inputRef.current?.focus();\n }, [setQuery]);\n\n const ctx = useMemo<SearchFieldContextValue>(\n () => ({\n value: query,\n setValue: setQuery,\n clear,\n disabled,\n inputId,\n inputLabel: ariaLabel,\n inputRef,\n }),\n [ariaLabel, clear, disabled, inputId, query, setQuery],\n );\n\n const handlePointerDown = (event: PointerEvent<HTMLDivElement>) => {\n onPointerDown?.(event);\n if (event.defaultPrevented || disabled) return;\n const target = event.target;\n if (!(target instanceof HTMLElement)) return;\n if (target.closest(\"input, button\")) return;\n event.preventDefault();\n inputRef.current?.focus();\n };\n\n return (\n <SearchFieldContext.Provider value={ctx}>\n <div\n data-refineui=\"search-field\"\n data-appearance={appearance}\n data-disabled={disabled || undefined}\n className={clsx(\n searchFieldStyles.root,\n appearance === \"plain\" ? searchFieldStyles.rootPlain : searchFieldStyles.rootFilled,\n disabled &&\n (appearance === \"plain\"\n ? searchFieldStyles.rootPlainDisabled\n : searchFieldStyles.rootDisabled),\n className,\n )}\n {...props}\n onPointerDown={handlePointerDown}\n >\n {children}\n </div>\n </SearchFieldContext.Provider>\n );\n}\n\nexport function SearchFieldIcon({ children, className, ...props }: SearchFieldIconProps) {\n const { disabled } = useSearchFieldContext(\"SearchFieldIcon\");\n\n return (\n <span\n data-refineui=\"search-field-icon\"\n aria-hidden\n className={clsx(\n searchFieldStyles.icon,\n disabled && searchFieldStyles.iconDisabled,\n className,\n )}\n {...props}\n >\n {children ?? (\n <WebIcon\n name=\"search\"\n size={searchFieldLeadingIconSize}\n color=\"currentColor\"\n aria-hidden\n />\n )}\n </span>\n );\n}\n\nexport const SearchFieldInput = forwardRef<HTMLInputElement, SearchFieldInputProps>(\n function SearchFieldInput(\n {\n className,\n id,\n onChange,\n onKeyDown,\n autoComplete = \"off\",\n enterKeyHint = \"search\",\n \"aria-label\": ariaLabel,\n ...props\n },\n ref,\n ) {\n const { value, setValue, disabled, inputId, inputLabel, inputRef } =\n useSearchFieldContext(\"SearchFieldInput\");\n\n const setRefs = (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Escape\" && value.length > 0) {\n event.preventDefault();\n setValue(\"\");\n }\n onKeyDown?.(event);\n };\n\n return (\n <input\n {...props}\n ref={setRefs}\n id={id ?? inputId}\n type=\"search\"\n value={value}\n disabled={disabled}\n autoComplete={autoComplete}\n enterKeyHint={enterKeyHint}\n aria-label={ariaLabel ?? inputLabel}\n data-refineui=\"search-field-input\"\n className={clsx(searchFieldStyles.input, className)}\n onChange={(event) => {\n setValue(event.target.value);\n onChange?.(event);\n }}\n onKeyDown={handleKeyDown}\n />\n );\n },\n);\n\nexport function SearchFieldClear({\n className,\n children,\n disabled: disabledProp,\n onClick,\n \"aria-label\": ariaLabel = \"Clear search\",\n ...props\n}: SearchFieldClearProps) {\n const { value, clear, disabled } = useSearchFieldContext(\"SearchFieldClear\");\n const isDisabled = disabledProp ?? disabled;\n\n if (value.length === 0) return null;\n\n return (\n <button\n {...props}\n type=\"button\"\n data-refineui=\"search-field-clear\"\n aria-label={ariaLabel}\n disabled={isDisabled}\n className={clsx(\n searchFieldStyles.clear,\n isDisabled && searchFieldStyles.clearDisabled,\n className,\n )}\n onClick={(event) => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n clear();\n }}\n >\n {children ?? (\n <WebIcon\n name=\"dismiss\"\n size={searchFieldClearIconSize}\n color=\"currentColor\"\n iconStyle=\"filled\"\n aria-hidden\n />\n )}\n </button>\n );\n}\n","import { iconSizes } from \"@refineui/tokens\";\nimport { formControlTypoClass } from \"../../formControlSizes\";\n\nexport const searchFieldLeadingIconSize = iconSizes.medium;\nexport const searchFieldClearIconSize = iconSizes.small;\n\nexport const searchFieldStyles = {\n root: [\n \"box-border flex w-full min-w-0 items-center gap-refineui-size-x-small overflow-hidden outline-none\",\n formControlTypoClass.md,\n \"transition-[background-color,border-color]\",\n \"duration-[var(--refineui-motion-duration-fast)]\",\n \"ease-[var(--refineui-motion-easing-emphasized)]\",\n ].join(\" \"),\n rootFilled: [\n \"h-refineui-control-height-md min-h-refineui-control-height-md\",\n \"rounded-refineui-x-large px-refineui-size-large\",\n \"border-refineui-thin border-transparent\",\n /** Same soft plate as InputOTP slots */\n \"bg-refineui-alias-background-surface-selected\",\n ].join(\" \"),\n rootPlain: [\n \"h-auto min-h-0 rounded-none border-none bg-transparent px-0 py-0\",\n ].join(\" \"),\n rootDisabled:\n \"border-refineui-alias-border-disabled bg-refineui-alias-background-surface-disabled\",\n rootPlainDisabled: \"bg-transparent\",\n icon: \"inline-flex shrink-0 items-center justify-center text-refineui-alias-foreground-tertiary\",\n iconDisabled: \"text-refineui-alias-foreground-disabled\",\n input:\n \"min-w-0 flex-1 appearance-none border-none bg-transparent p-0 text-refineui-alias-foreground-primary outline-none placeholder:text-refineui-alias-foreground-placeholder disabled:cursor-not-allowed disabled:text-refineui-alias-foreground-disabled\",\n clear:\n \"inline-flex shrink-0 cursor-pointer items-center justify-center border-none bg-transparent p-0 leading-none text-refineui-alias-foreground-tertiary\",\n clearDisabled: \"cursor-not-allowed text-refineui-alias-foreground-disabled\",\n} as const;\n","import { clsx } from \"clsx\";\nimport type { ElementType, HTMLAttributes } from \"react\";\nimport type { SemanticTextName } from \"@refineui/tokens\";\nimport { semanticTextClass } from \"../../typography\";\n\nexport interface TextProps extends HTMLAttributes<HTMLElement> {\n /** Semantic text role — maps to Foundation typography via `SEMANTIC_TEXT`. */\n variant: SemanticTextName;\n /** Root element. Default `span`. */\n as?: ElementType;\n}\n\n/** Semantic typography primitive — Polaris `Text` / M3 typescale consumer. */\nexport function Text({ variant, as: Component = \"span\", className, ...props }: TextProps) {\n return (\n <Component\n data-refineui=\"text\"\n data-variant={variant}\n className={clsx(semanticTextClass(variant), className)}\n {...props}\n />\n );\n}\n","import { clsx } from \"clsx\";\nimport { textareaBorderClass, textareaStyles } from \"./style\";\nimport type { TextareaProps } from \"./types\";\n\nexport function Textarea({\n error = false,\n success = false,\n fullWidth = false,\n disabled,\n className,\n ...props\n}: TextareaProps) {\n const borderClass = disabled\n ? textareaBorderClass.disabled\n : error\n ? textareaBorderClass.error\n : success\n ? textareaBorderClass.success\n : textareaBorderClass.default;\n\n return (\n <textarea\n data-refineui=\"textarea\"\n data-error={error || undefined}\n data-success={success || undefined}\n disabled={disabled}\n aria-invalid={error || undefined}\n className={clsx(\n textareaStyles.base,\n textareaStyles.field,\n textareaStyles.text,\n textareaStyles.disabledText,\n borderClass,\n disabled ? textareaStyles.disabledBg : textareaStyles.defaultBg,\n fullWidth && \"w-full\",\n className,\n )}\n {...props}\n />\n );\n}\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\n/**\n * Web Kit Textarea `529:5454` — single size:\n * minHeight `controlTextareaMin`, radius `roundedLarge`, body2,\n * padding py `sizeMedium` / px `sizeXSmall` (differs from Input md).\n */\nexport const textareaStyles = {\n base: \"box-border appearance-none outline-none transition-[border-color,box-shadow,background-color] duration-[var(--refineui-motion-duration-fast)]\",\n field: clsx(\n componentTextClass(componentTypographyTokens.textarea),\n \"min-h-refineui-control-textarea-min resize-y rounded-refineui-large px-refineui-size-x-small py-refineui-size-medium\",\n ),\n text: \"text-refineui-alias-foreground-primary placeholder:text-refineui-alias-foreground-placeholder\",\n disabledText: \"disabled:text-refineui-alias-foreground-disabled\",\n disabledBg: \"bg-refineui-alias-background-surface-disabled\",\n defaultBg: \"bg-refineui-alias-background-primary\",\n} as const;\n\n/** Same border aliases as Input / Select trigger */\nexport const textareaBorderClass = {\n disabled: \"border-refineui-thin border-refineui-alias-border-disabled\",\n error: \"border-refineui-thin border-refineui-alias-border-error\",\n success: \"border-refineui-thin border-refineui-alias-border-success\",\n default: \"border-refineui-thin border-refineui-alias-border-default\",\n} as const;\n","import { clsx } from \"clsx\";\nimport { badgeStyles, badgeVariantClass } from \"./style\";\nimport type { BadgeProps } from \"./types\";\n\nexport function Badge({ variant = \"default\", layout = \"label\", className, ...props }: BadgeProps) {\n return (\n <span\n data-refineui=\"badge\"\n data-variant={variant}\n data-layout={layout}\n className={clsx(\n badgeStyles.base,\n layout === \"number\" ? badgeStyles.number : badgeStyles.label,\n badgeVariantClass[variant],\n className,\n )}\n {...props}\n />\n );\n}\n","/**\n * Badge recipe — visual mapping only.\n * Contract: packages/react/spec/components/badge.json\n * Tokens: componentColorTokens.badge\n */\nimport { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../typography\";\nimport { defineRecipe } from \"./types\";\nimport type { BadgeVariant } from \"../components/Badge/types\";\n\nexport const badgeVariantClass: Record<BadgeVariant, string> = {\n default: \"bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed\",\n neutral: \"bg-refineui-alias-background-primary text-refineui-alias-foreground-primary\",\n outline:\n \"border-refineui-thin border-refineui-alias-border-default border bg-transparent text-refineui-alias-foreground-primary box-border\",\n success: \"bg-refineui-alias-background-success text-refineui-alias-foreground-inversed\",\n warning: \"bg-refineui-alias-background-warning text-refineui-alias-foreground-inversed\",\n danger: \"bg-refineui-alias-background-error text-refineui-alias-foreground-inversed\",\n};\n\nexport const badgeRecipe = defineRecipe({\n name: \"badge\",\n base: clsx(\n componentTextClass(componentTypographyTokens.badge),\n \"inline-flex items-center justify-center py-refineui-size-xxsmall px-refineui-size-small\",\n ),\n variants: {\n variant: badgeVariantClass,\n layout: {\n label: \"rounded-refineui-medium\",\n number: \"rounded-refineui-circle\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n layout: \"label\",\n },\n});\n\nexport const badgeStyles = {\n base: badgeRecipe.base,\n number: badgeRecipe.variants?.layout.number ?? \"rounded-refineui-circle\",\n label: badgeRecipe.variants?.layout.label ?? \"rounded-refineui-medium\",\n} as const;\n","import { clsx } from \"clsx\";\nimport type { HTMLAttributes } from \"react\";\nimport { cardStyles } from \"./style\";\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n variant?: \"elevated\" | \"outlined\";\n interactive?: boolean;\n state?: \"default\" | \"hover\" | \"pressed\" | \"disabled\";\n}\n\nexport function Card({\n variant = \"elevated\",\n interactive = false,\n state = \"default\",\n className,\n ...props\n}: CardProps) {\n const isDisabled = state === \"disabled\";\n\n return (\n <div\n data-refineui=\"card\"\n data-variant={variant}\n data-interactive={interactive ? \"true\" : undefined}\n data-state={state}\n aria-disabled={isDisabled || undefined}\n className={clsx(\n cardStyles.root,\n variant === \"elevated\" ? cardStyles.elevated : cardStyles.outlined,\n state === \"default\" && cardStyles.stateDefault,\n state === \"hover\" && cardStyles.stateHover,\n state === \"pressed\" && cardStyles.statePressed,\n state === \"disabled\" && cardStyles.stateDisabled,\n interactive && !isDisabled && cardStyles.interactive,\n className,\n )}\n {...props}\n />\n );\n}\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\nexport const cardStyles = {\n root: \"box-border flex h-full flex-col gap-refineui-size-none overflow-hidden rounded-refineui-xx-large bg-refineui-alias-background-primary\",\n elevated: \"border-refineui-none shadow-refineui-4\",\n outlined: \"border-refineui-thin border-refineui-alias-border-default shadow-none\",\n stateDefault: \"bg-refineui-alias-background-primary\",\n stateHover: \"bg-refineui-alias-background-primary-hover\",\n statePressed: \"bg-refineui-alias-background-surface-active\",\n stateDisabled: \"bg-refineui-alias-background-surface-disabled\",\n interactive:\n \"cursor-pointer transition-[background-color,border-color,box-shadow,outline-color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]\",\n headerMain: \"flex min-w-0 flex-1 flex-col gap-refineui-size-xx-small\",\n header:\n \"flex flex-row flex-wrap items-start justify-between gap-refineui-size-medium px-refineui-size-x-large py-refineui-size-large\",\n title: clsx(\n componentTextClass(componentTypographyTokens.card.title),\n \"text-refineui-alias-foreground-primary\",\n ),\n description: clsx(\n componentTextClass(componentTypographyTokens.card.description),\n \"text-refineui-alias-foreground-tertiary\",\n ),\n action: \"flex shrink-0 items-center justify-end\",\n content: \"flex flex-1 flex-col px-refineui-size-x-large pb-refineui-size-large\",\n footer:\n \"mt-auto flex shrink-0 items-center justify-end gap-refineui-size-x-small px-refineui-size-x-large py-refineui-size-medium\",\n} as const;\n","import { clsx } from \"clsx\";\nimport type { HTMLAttributes } from \"react\";\nimport { cardStyles } from \"./style\";\n\nexport function CardHeaderMain({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div data-refineui=\"card-header-main\" className={clsx(cardStyles.headerMain, className)} {...props} />;\n}\n","import { clsx } from \"clsx\";\nimport type { HTMLAttributes } from \"react\";\nimport { cardStyles } from \"./style\";\n\nexport function CardHeader({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div data-refineui=\"card-header\" className={clsx(cardStyles.header, className)} {...props} />;\n}\n","import { clsx } from \"clsx\";\nimport type { HTMLAttributes } from \"react\";\nimport { cardStyles } from \"./style\";\n\nexport function CardTitle({ className, ...props }: HTMLAttributes<HTMLHeadingElement>) {\n return <h3 data-refineui=\"card-title\" className={clsx(cardStyles.title, className)} {...props} />;\n}\n","import { clsx } from \"clsx\";\nimport type { HTMLAttributes } from \"react\";\nimport { cardStyles } from \"./style\";\n\nexport function CardDescription({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p data-refineui=\"card-description\" className={clsx(cardStyles.description, className)} {...props} />;\n}\n","import { clsx } from \"clsx\";\nimport type { HTMLAttributes } from \"react\";\nimport { cardStyles } from \"./style\";\n\nexport function CardAction({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div data-refineui=\"card-action\" className={clsx(cardStyles.action, className)} {...props} />;\n}\n","import { clsx } from \"clsx\";\nimport type { HTMLAttributes } from \"react\";\nimport { cardStyles } from \"./style\";\n\nexport function CardContent({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div data-refineui=\"card-content\" className={clsx(cardStyles.content, className)} {...props} />;\n}\n","import { clsx } from \"clsx\";\nimport type { HTMLAttributes } from \"react\";\nimport { cardStyles } from \"./style\";\n\nexport function CardFooter({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div data-refineui=\"card-footer\" className={clsx(cardStyles.footer, className)} {...props} />;\n}\n","import { clsx } from \"clsx\";\nimport type { ChangeEvent } from \"react\";\nimport { useId, useState } from \"react\";\nimport { iconSizes } from \"@refineui/tokens\";\nimport { resolveColorTokenValue } from \"@refineui/utilities/color\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { componentColorTokens } from \"../../tokens/componentColorTokens\";\nimport { checkboxStyles } from \"./style\";\nimport type { CheckboxProps } from \"./types\";\n\nexport function Checkbox({\n label,\n description,\n variant = \"default\",\n id,\n className,\n disabled,\n checked: checkedProp,\n defaultChecked,\n onChange,\n ...props\n}: CheckboxProps) {\n const uid = useId();\n const inputId = id ?? uid;\n const showText = Boolean(label || description);\n const isControlled = checkedProp !== undefined;\n const [internalChecked, setInternalChecked] = useState(!!defaultChecked);\n const checked = isControlled ? !!checkedProp : internalChecked;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) setInternalChecked(e.target.checked);\n onChange?.(e);\n };\n\n const checkColor = disabled\n ? resolveColorTokenValue(componentColorTokens.checkbox.checkIcon.disabled)\n : resolveColorTokenValue(componentColorTokens.checkbox.checkIcon.default);\n\n return (\n <label\n htmlFor={inputId}\n className={clsx(\n checkboxStyles.root,\n description ? checkboxStyles.textTop : checkboxStyles.textCenter,\n disabled ? checkboxStyles.disabledCursor : checkboxStyles.enabledCursor,\n className,\n )}\n >\n <span\n className={clsx(\n checkboxStyles.controlWrap,\n description && checkboxStyles.controlWrapDesc,\n )}\n >\n <input\n id={inputId}\n type=\"checkbox\"\n checked={isControlled ? checkedProp : undefined}\n defaultChecked={!isControlled ? defaultChecked : undefined}\n disabled={disabled}\n onChange={handleChange}\n className={clsx(\n checkboxStyles.input,\n disabled && checkboxStyles.inputDisabled,\n )}\n {...props}\n />\n <span\n data-refineui=\"checkbox\"\n data-variant={variant}\n data-checked={checked ? \"true\" : \"false\"}\n data-disabled={disabled ? \"true\" : undefined}\n aria-hidden\n className={checkboxStyles.visual}\n >\n {checked && (\n <WebIcon\n name=\"checkmark\"\n size={iconSizes.small}\n color={checkColor}\n iconStyle=\"filled\"\n />\n )}\n </span>\n </span>\n {showText && (\n <span className={checkboxStyles.textCol}>\n {label && (\n <span\n className={clsx(\n checkboxStyles.label,\n disabled\n ? checkboxStyles.textDisabled\n : checkboxStyles.textEnabled,\n )}\n >\n {label}\n </span>\n )}\n {description && (\n <span\n className={clsx(\n checkboxStyles.desc,\n disabled\n ? checkboxStyles.textDisabled\n : checkboxStyles.descEnabled,\n )}\n >\n {description}\n </span>\n )}\n </span>\n )}\n </label>\n );\n}\n","import type { LabelProps } from \"./types\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass, sizedComponentTextClass } from \"../../typography\";\n\n/** Shared by `Label` and `FieldLabel` — Web Kit Label `216:1681` / Field label typography */\nexport const labelStyles = {\n base: \"mb-refineui-size-xx-small block\",\n disabled: \"text-refineui-alias-foreground-disabled\",\n enabled: \"text-refineui-alias-foreground-primary\",\n required: \"ms-refineui-size-xxx-small text-refineui-alias-foreground-error\",\n} as const;\n\nexport const labelSizeTypo: Record<NonNullable<LabelProps[\"size\"]>, string> = {\n sm: sizedComponentTextClass(componentTypographyTokens.label, \"sm\"),\n md: sizedComponentTextClass(componentTypographyTokens.label, \"md\"),\n lg: sizedComponentTextClass(componentTypographyTokens.label, \"lg\"),\n};\n\n/** Inline copy beside controls — same typography/colors as `Label` (Checkbox / Radio). */\nexport const labelCompanionStyles = {\n label: componentTextClass(componentTypographyTokens.labelCompanion.label),\n description: componentTextClass(componentTypographyTokens.labelCompanion.description),\n enabled: \"text-refineui-alias-foreground-primary\",\n descriptionEnabled: \"text-refineui-alias-foreground-secondary\",\n disabled: \"text-refineui-alias-foreground-disabled\",\n} as const;\n","import { labelCompanionStyles } from \"../Label/style\";\n\nexport const checkboxStyles = {\n root: \"inline-flex gap-refineui-size-x-small\",\n textTop: \"items-start\",\n textCenter: \"items-center\",\n disabledCursor: \"cursor-not-allowed\",\n enabledCursor: \"cursor-pointer\",\n controlWrap:\n \"relative h-[var(--refineui-size-control-checkbox,20px)] w-[var(--refineui-size-control-checkbox,20px)] shrink-0\",\n controlWrapDesc: \"mt-refineui-size-xxx-small\",\n input: \"absolute inset-0 z-1 m-0 h-full w-full cursor-pointer opacity-0 outline-none\",\n inputDisabled: \"cursor-not-allowed\",\n visual: \"pointer-events-none absolute inset-0 box-border flex items-center justify-center overflow-hidden\",\n textCol: \"flex min-w-0 flex-col gap-refineui-size-x-small\",\n label: labelCompanionStyles.label,\n desc: labelCompanionStyles.description,\n textEnabled: labelCompanionStyles.enabled,\n textDisabled: labelCompanionStyles.disabled,\n descEnabled: labelCompanionStyles.descriptionEnabled,\n} as const;\n","import { clsx } from \"clsx\";\nimport { useId, useRef } from \"react\";\nimport { RadioInput } from \"./RadioInput\";\nimport { radioStyles } from \"./style\";\nimport type { RadioProps } from \"./types\";\n\nexport function Radio({\n label,\n description,\n id,\n className,\n disabled,\n allowUncheck = true,\n onClick,\n ...props\n}: RadioProps) {\n const uid = useId();\n const inputId = id ?? uid;\n const showText = Boolean(label || description);\n const wasCheckedRef = useRef(false);\n\n return (\n <label\n htmlFor={inputId}\n className={clsx(\n radioStyles.root,\n description ? radioStyles.rootWithDescription : radioStyles.rootWithoutDescription,\n disabled ? radioStyles.rootDisabled : radioStyles.rootEnabled,\n className,\n )}\n >\n <RadioInput\n id={inputId}\n disabled={disabled}\n {...props}\n className={clsx(\n description && radioStyles.inputWithDescriptionOffset,\n disabled && radioStyles.rootDisabled,\n )}\n onMouseDown={(e) => {\n props.onMouseDown?.(e);\n wasCheckedRef.current = e.currentTarget.checked;\n }}\n onClick={(e) => {\n onClick?.(e);\n if (\n e.defaultPrevented ||\n !allowUncheck ||\n disabled ||\n !wasCheckedRef.current\n ) {\n return;\n }\n e.preventDefault();\n e.currentTarget.checked = false;\n e.currentTarget.dispatchEvent(new Event(\"input\", { bubbles: true }));\n e.currentTarget.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }}\n />\n {showText && (\n <span className={radioStyles.textWrap}>\n {label && (\n <span\n className={clsx(\n radioStyles.label,\n disabled ? radioStyles.textDisabled : radioStyles.labelEnabled,\n )}\n >\n {label}\n </span>\n )}\n {description && (\n <span\n className={clsx(\n radioStyles.description,\n disabled ? radioStyles.textDisabled : radioStyles.descriptionEnabled,\n )}\n >\n {description}\n </span>\n )}\n </span>\n )}\n </label>\n );\n}\n","import { clsx } from \"clsx\";\nimport { forwardRef } from \"react\";\nimport { radioStyles } from \"./style\";\nimport type { RadioInputProps } from \"./types\";\n\nexport const RadioInput = forwardRef<HTMLInputElement, RadioInputProps>(function RadioInput(\n { className, ...props },\n ref,\n) {\n return (\n <input\n ref={ref}\n type=\"radio\"\n data-refineui=\"radio\"\n className={clsx(radioStyles.input, className)}\n {...props}\n />\n );\n});\n","import { labelCompanionStyles } from \"../Label/style\";\n\nexport const radioStyles = {\n root: \"inline-flex gap-refineui-size-x-small\",\n rootWithDescription: \"items-start\",\n rootWithoutDescription: \"items-center\",\n rootDisabled: \"cursor-not-allowed\",\n rootEnabled: \"cursor-pointer\",\n input: \"h-[var(--refineui-size-control-checkbox-radio,20px)] w-[var(--refineui-size-control-checkbox-radio,20px)] shrink-0 cursor-pointer\",\n inputWithDescriptionOffset: \"mt-refineui-size-xxx-small\",\n textWrap: \"flex min-w-0 flex-col gap-refineui-size-x-small\",\n label: labelCompanionStyles.label,\n description: labelCompanionStyles.description,\n textDisabled: labelCompanionStyles.disabled,\n labelEnabled: labelCompanionStyles.enabled,\n descriptionEnabled: labelCompanionStyles.descriptionEnabled,\n} as const;\n","import { clsx } from \"clsx\";\nimport {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent,\n type MutableRefObject,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { iconSizes } from \"@refineui/tokens\";\nimport { componentSizes, foundationSizes } from \"../../componentSizes\";\nimport { acquireBodyScrollLock, composeRefs } from \"@refineui/utilities/react\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { ScrollAreaRegion } from \"../ScrollArea/ScrollAreaRegion\";\nimport { selectTriggerSizeClass, selectStyles } from \"./style\";\nimport { useOptionalFieldSize } from \"../Field/context\";\nimport type {\n SelectArrowProps,\n SelectContentProps,\n SelectGroupProps,\n SelectIconProps,\n SelectItemIndicatorProps,\n SelectItemProps,\n SelectItemTextProps,\n SelectLabelProps,\n SelectPortalProps,\n SelectProps,\n SelectScrollDownButtonProps,\n SelectScrollUpButtonProps,\n SelectSectionProps,\n SelectSeparatorProps,\n SelectTriggerProps,\n SelectValueProps,\n SelectViewportProps,\n} from \"./types\";\n\ntype RegisteredItem = {\n value: string;\n label: string;\n disabled: boolean;\n ref: MutableRefObject<HTMLDivElement | null>;\n};\n\ntype SelectCtxValue = {\n value: string;\n setValue: (v: string) => void;\n open: boolean;\n setOpen: (v: boolean) => void;\n disabled: boolean;\n activeIndex: number;\n setActiveIndex: (i: number) => void;\n itemsVersion: number;\n itemsRef: MutableRefObject<RegisteredItem[]>;\n registerItem: (item: RegisteredItem) => () => void;\n triggerRef: MutableRefObject<HTMLButtonElement | null>;\n contentRef: MutableRefObject<HTMLDivElement | null>;\n viewportRef: MutableRefObject<HTMLDivElement | null>;\n onKeyDown: (e: KeyboardEvent<HTMLElement>) => void;\n getLabelByValue: (v: string) => string | undefined;\n placeholder?: string;\n size: \"sm\" | \"md\" | \"lg\";\n fullWidth: boolean;\n};\n\nconst SelectCtx = createContext<SelectCtxValue | null>(null);\n\nfunction useSelectCtx() {\n const ctx = useContext(SelectCtx);\n if (!ctx) throw new Error(\"Select subcomponents must be used within Select\");\n return ctx;\n}\n\nconst PortalContainerContext = createContext<HTMLElement | undefined>(undefined);\n\n/** `SelectContent` `position` — viewport vs panel style branch */\nconst SelectContentPositionContext = createContext<\"popper\" | \"item-aligned\">(\"item-aligned\");\n\nfunction parsePx(px: string, fallback: number) {\n const n = Number.parseFloat(px);\n return Number.isFinite(n) ? n : fallback;\n}\n\n/** Content–trigger gap (~Themes sideOffset 4px) */\nconst SIDE_OFFSET = parsePx(foundationSizes.foundationSize40, 4);\n/** Viewport edge margin */\nconst CONTENT_MARGIN = parsePx(foundationSizes.foundationSize100, 10);\n\nfunction clampNumber(value: number, [minB, maxB]: [number, number]) {\n return Math.min(Math.max(value, minB), maxB);\n}\n\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? useLayoutEffect : useEffect;\n\nfunction isScrollableElement(el: HTMLElement): boolean {\n const { overflow, overflowX, overflowY } = getComputedStyle(el);\n return (\n [overflow, overflowX, overflowY].some((o) => o === \"auto\" || o === \"scroll\" || o === \"overlay\") ||\n el.scrollHeight > el.clientHeight + 1\n );\n}\n\nfunction getScrollableAncestors(target: HTMLElement | null): HTMLElement[] {\n const list: HTMLElement[] = [];\n let el: HTMLElement | null = target?.parentElement ?? null;\n while (el) {\n if (isScrollableElement(el)) list.push(el);\n el = el.parentElement;\n }\n return list;\n}\n\nfunction subscribeScrollAndScrollableAncestors(target: HTMLElement | null, fn: (event: Event) => void): () => void {\n if (typeof window === \"undefined\") return () => {};\n const list: (Element | Window)[] = [window, ...getScrollableAncestors(target)];\n for (const t of list) t.addEventListener(\"scroll\", fn, true);\n return () => {\n for (const t of list) t.removeEventListener(\"scroll\", fn, true);\n };\n}\n\nfunction useSelectContentPosition() {\n return useContext(SelectContentPositionContext);\n}\n\nexport function Select({\n value: ctrlValue,\n onValueChange,\n defaultValue = \"\",\n open: ctrlOpen,\n onOpenChange,\n children,\n placeholder,\n size: sizeProp,\n fullWidth = false,\n disabled = false,\n className,\n ...props\n}: SelectProps) {\n const fieldSize = useOptionalFieldSize();\n const size = sizeProp ?? fieldSize ?? \"md\";\n const [innerValue, setInnerValue] = useState(defaultValue);\n const [innerOpen, setInnerOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(-1);\n const [itemsVersion, setItemsVersion] = useState(0);\n\n const itemsRef = useRef<RegisteredItem[]>([]);\n const labelCacheRef = useRef<Record<string, string>>({});\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const viewportRef = useRef<HTMLDivElement | null>(null);\n\n const value = ctrlValue !== undefined ? ctrlValue : innerValue;\n const open = ctrlOpen !== undefined ? ctrlOpen : innerOpen;\n\n const setOpen = useCallback(\n (nextOpen: boolean) => {\n if (disabled) return;\n if (ctrlOpen === undefined) setInnerOpen(nextOpen);\n onOpenChange?.(nextOpen);\n },\n [ctrlOpen, onOpenChange, disabled],\n );\n\n const setValue = useCallback(\n (nextValue: string) => {\n if (ctrlValue === undefined) setInnerValue(nextValue);\n onValueChange?.(nextValue);\n },\n [ctrlValue, onValueChange],\n );\n\n const registerItem = useCallback((item: RegisteredItem) => {\n itemsRef.current = [...itemsRef.current.filter((i) => i.value !== item.value), item];\n labelCacheRef.current[item.value] = item.label;\n setItemsVersion((v) => v + 1);\n return () => {\n itemsRef.current = itemsRef.current.filter((i) => i.value !== item.value);\n setItemsVersion((v) => v + 1);\n };\n }, []);\n\n const enabledItems = useMemo(() => itemsRef.current.filter((i) => !i.disabled), [itemsVersion]);\n\n useEffect(() => {\n if (!open) {\n setActiveIndex(-1);\n return;\n }\n const selected = enabledItems.findIndex((item) => item.value === value);\n setActiveIndex(selected >= 0 ? selected : enabledItems.length > 0 ? 0 : -1);\n }, [open, value, enabledItems]);\n\n useEffect(() => {\n if (!open) return;\n const onOutside = (event: MouseEvent) => {\n const target = event.target as Node;\n if (triggerRef.current?.contains(target) || contentRef.current?.contains(target)) return;\n setOpen(false);\n };\n document.addEventListener(\"mousedown\", onOutside);\n return () => document.removeEventListener(\"mousedown\", onOutside);\n }, [open, setOpen]);\n\n /** Lock document + scrollable ancestors while open */\n useEffect(() => {\n if (!open) return;\n const releaseBodyLock = acquireBodyScrollLock();\n const ancestors = getScrollableAncestors(triggerRef.current).filter(\n (el) => el !== document.body && el !== document.documentElement,\n );\n const prevStyles = ancestors.map((el) => ({\n el,\n overflow: el.style.overflow,\n overflowX: el.style.overflowX,\n overflowY: el.style.overflowY,\n }));\n for (const { el } of prevStyles) {\n el.style.overflow = \"hidden\";\n el.style.overflowX = \"hidden\";\n el.style.overflowY = \"hidden\";\n }\n return () => {\n for (const { el, overflow, overflowX, overflowY } of prevStyles) {\n el.style.overflow = overflow;\n el.style.overflowX = overflowX;\n el.style.overflowY = overflowY;\n }\n releaseBodyLock();\n };\n }, [open]);\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent<HTMLElement>) => {\n if (disabled) return;\n\n if (!open) {\n if ([\"ArrowDown\", \"ArrowUp\", \"Enter\", \" \"].includes(event.key)) {\n event.preventDefault();\n setOpen(true);\n }\n return;\n }\n\n switch (event.key) {\n case \"Escape\":\n event.preventDefault();\n setOpen(false);\n triggerRef.current?.focus();\n return;\n case \"ArrowDown\":\n event.preventDefault();\n setActiveIndex((prev) => Math.min(prev + 1, enabledItems.length - 1));\n return;\n case \"ArrowUp\":\n event.preventDefault();\n setActiveIndex((prev) => Math.max(prev - 1, 0));\n return;\n case \"Home\":\n event.preventDefault();\n setActiveIndex(enabledItems.length > 0 ? 0 : -1);\n return;\n case \"End\":\n event.preventDefault();\n setActiveIndex(enabledItems.length - 1);\n return;\n case \"Enter\":\n case \" \":\n event.preventDefault();\n if (activeIndex >= 0 && enabledItems[activeIndex]) {\n setValue(enabledItems[activeIndex].value);\n setOpen(false);\n triggerRef.current?.focus();\n }\n return;\n default:\n if (event.key.length !== 1) return;\n const needle = event.key.toLowerCase();\n const next = enabledItems.findIndex(\n (item, index) => index > activeIndex && item.label.toLowerCase().startsWith(needle),\n );\n const found =\n next >= 0 ? next : enabledItems.findIndex((item) => item.label.toLowerCase().startsWith(needle));\n if (found >= 0) setActiveIndex(found);\n }\n },\n [disabled, open, activeIndex, enabledItems, setOpen, setValue],\n );\n\n const getLabelByValue = useCallback(\n (nextValue: string) =>\n labelCacheRef.current[nextValue] ?? itemsRef.current.find((item) => item.value === nextValue)?.label,\n [],\n );\n\n const ctxValue = useMemo(\n () => ({\n value,\n setValue,\n open,\n setOpen,\n disabled,\n activeIndex,\n setActiveIndex,\n itemsVersion,\n itemsRef,\n registerItem,\n triggerRef,\n contentRef,\n viewportRef,\n onKeyDown,\n getLabelByValue,\n placeholder,\n size,\n fullWidth,\n }),\n [\n value,\n setValue,\n open,\n setOpen,\n disabled,\n activeIndex,\n setActiveIndex,\n itemsVersion,\n registerItem,\n onKeyDown,\n getLabelByValue,\n placeholder,\n size,\n fullWidth,\n ],\n );\n\n return (\n <SelectCtx.Provider value={ctxValue}>\n <div className={clsx(selectStyles.root, fullWidth && \"w-full\", className)} {...props}>\n {children}\n </div>\n </SelectCtx.Provider>\n );\n}\n\nexport const SelectTrigger = forwardRef<HTMLButtonElement, SelectTriggerProps>(function SelectTrigger(props, forwardedRef) {\n const { className, children, style, appearance = \"filled\", ...triggerRest } = props;\n const { open, setOpen, triggerRef, onKeyDown, size, fullWidth, disabled, value, getLabelByValue } = useSelectCtx();\n const hasLabel = Boolean(getLabelByValue(value));\n const isPlain = appearance === \"plain\";\n const setRefs = useCallback(\n (node: HTMLButtonElement | null) => {\n (triggerRef as MutableRefObject<HTMLButtonElement | null>).current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) (forwardedRef as MutableRefObject<HTMLButtonElement | null>).current = node;\n },\n [forwardedRef, triggerRef],\n );\n return (\n <button\n ref={setRefs}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n data-refineui=\"select-trigger\"\n data-appearance={appearance}\n data-size={size}\n data-state={open ? \"open\" : \"closed\"}\n data-placeholder={hasLabel ? undefined : \"\"}\n disabled={disabled}\n onMouseDown={(event) => {\n event.preventDefault();\n setOpen(!open);\n triggerRef.current?.focus();\n }}\n onKeyDown={onKeyDown}\n className={clsx(\n \"data-[placeholder]:[&_[data-refineui-select-value]]:text-refineui-alias-foreground-placeholder\",\n isPlain ? selectStyles.triggerPlain : selectStyles.trigger,\n !isPlain && selectTriggerSizeClass[size],\n !isPlain && open && selectStyles.triggerOpen,\n disabled && (isPlain ? selectStyles.triggerPlainDisabled : selectStyles.triggerDisabled),\n fullWidth && \"w-full\",\n className,\n )}\n style={style}\n {...triggerRest}\n >\n <span data-refineui-select-trigger-value className={selectStyles.triggerInner}>\n {children}\n </span>\n <WebIcon\n name=\"chevron-down\"\n size={iconSizes.xsmall}\n color=\"currentColor\"\n className={clsx(selectStyles.chevron, open && selectStyles.chevronOpen)}\n aria-hidden\n />\n </button>\n );\n});\nSelectTrigger.displayName = \"SelectTrigger\";\n\nexport function SelectValue({ placeholder, className, ...props }: SelectValueProps) {\n const { value, getLabelByValue, placeholder: rootPlaceholder } = useSelectCtx();\n const label = getLabelByValue(value);\n return (\n <span data-refineui-select-value=\"\" className={clsx(selectStyles.value, !label && \"text-refineui-alias-foreground-placeholder\", className)} {...props}>\n {label || placeholder || rootPlaceholder || \"Select...\"}\n </span>\n );\n}\n\nexport function SelectIcon({ children, className, ...props }: SelectIconProps) {\n return (\n <span className={clsx(selectStyles.iconWrap, className)} {...props}>\n {children ?? <WebIcon name=\"chevron-down\" size={iconSizes.xsmall} />}\n </span>\n );\n}\n\nexport function SelectPortal({ children, container }: SelectPortalProps) {\n return <PortalContainerContext.Provider value={container ?? undefined}>{children}</PortalContainerContext.Provider>;\n}\n\nexport const SelectContent = forwardRef<HTMLDivElement, SelectContentProps>(function SelectContent(props, forwardedRef) {\n const {\n className,\n children,\n position = \"item-aligned\",\n container: containerProp,\n style: styleProp,\n ...rest\n } = props;\n const { open, contentRef, onKeyDown, triggerRef, viewportRef, itemsRef, itemsVersion, value } = useSelectCtx();\n const portalFromCtx = useContext(PortalContainerContext);\n const [side, setSide] = useState<\"top\" | \"bottom\">(\"bottom\");\n const [contentStyle, setContentStyle] = useState<CSSProperties>({});\n const rafRef = useRef<number | null>(null);\n const positionerRef = useRef<HTMLDivElement | null>(null);\n const shouldExpandOnScrollRef = useRef(false);\n const shouldRepositionRef = useRef(true);\n const prevScrollTopRef = useRef(0);\n const contentStyleRef = useRef<CSSProperties>({});\n const isPopper = position === \"popper\";\n\n const commitContentStyle = useCallback((next: CSSProperties) => {\n const prev = contentStyleRef.current;\n const fields: (keyof CSSProperties)[] = [\n \"left\",\n \"top\",\n \"bottom\",\n \"height\",\n \"maxHeight\",\n \"minHeight\",\n \"minWidth\",\n \"margin\",\n \"justifyContent\",\n ];\n const unchanged = fields.every((key) => prev[key] === next[key]);\n if (unchanged) return;\n contentStyleRef.current = next;\n setContentStyle(next);\n }, []);\n\n const updatePositionItemAligned = useCallback(() => {\n if (!open || !triggerRef.current || !contentRef.current || !viewportRef.current) return;\n const trigger = triggerRef.current;\n const content = contentRef.current;\n const viewport = viewportRef.current;\n const triggerRect = trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n const valueNode = trigger.querySelector<HTMLElement>(\"[data-refineui-select-trigger-value]\");\n const itemsOrdered = itemsRef.current;\n const selectedRegistration =\n itemsOrdered.find((item) => item.value === value && item.ref.current) ??\n itemsOrdered.find((item) => !item.disabled && item.ref.current);\n const selectedItem = selectedRegistration?.ref.current ?? null;\n const selectedItemText = selectedItem?.querySelector<HTMLElement>(\"[data-refineui-select-item-text]\");\n if (!valueNode || !selectedItem || !selectedItemText) return;\n\n const itemTextRect = selectedItemText.getBoundingClientRect();\n const itemTextOffset = itemTextRect.left - contentRect.left;\n const left = valueNode.getBoundingClientRect().left - itemTextOffset;\n const leftDelta = triggerRect.left - left;\n const minContentWidth = triggerRect.width + leftDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const rightEdge = vw - CONTENT_MARGIN;\n const clampedLeft = clampNumber(left, [CONTENT_MARGIN, Math.max(CONTENT_MARGIN, rightEdge - contentWidth)]);\n\n const itemsHeight = viewport.scrollHeight;\n const contentStyles = window.getComputedStyle(content);\n const contentBorderTopWidth = Number.parseInt(contentStyles.borderTopWidth, 10) || 0;\n const contentPaddingTop = Number.parseInt(contentStyles.paddingTop, 10) || 0;\n const contentBorderBottomWidth = Number.parseInt(contentStyles.borderBottomWidth, 10) || 0;\n const contentPaddingBottom = Number.parseInt(contentStyles.paddingBottom, 10) || 0;\n const fullContentHeight =\n contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;\n const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight);\n const viewportStyles = window.getComputedStyle(viewport);\n const viewportPaddingTop = Number.parseInt(viewportStyles.paddingTop, 10) || 0;\n const viewportPaddingBottom = Number.parseInt(viewportStyles.paddingBottom, 10) || 0;\n const availableHeight = vh - CONTENT_MARGIN * 2;\n const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;\n const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;\n const selectedItemHalfHeight = selectedItem.offsetHeight / 2;\n // Same as Radix: trigger-middle alignment from selectedItem.offsetTop\n const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight;\n const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;\n const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;\n const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;\n let wrapperHeightPx = 0;\n\n if (willAlignWithoutTopOverflow) {\n const isLastItem = itemsOrdered.length > 0 && selectedItem === itemsOrdered[itemsOrdered.length - 1]?.ref.current;\n const viewportOffsetBottom = content.clientHeight - viewport.offsetTop - viewport.offsetHeight;\n const clampedTriggerMiddleToBottomEdge = Math.max(\n triggerMiddleToBottomEdge,\n selectedItemHalfHeight +\n (isLastItem ? viewportPaddingBottom : 0) +\n viewportOffsetBottom +\n contentBorderBottomWidth,\n );\n wrapperHeightPx = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;\n } else {\n const isFirstItem = itemsOrdered.length > 0 && selectedItem === itemsOrdered[0]?.ref.current;\n const clampedTopEdgeToTriggerMiddle = Math.max(\n topEdgeToTriggerMiddle,\n contentBorderTopWidth + viewport.offsetTop + (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight,\n );\n wrapperHeightPx = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;\n viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop;\n }\n\n const next: CSSProperties = {\n position: \"fixed\",\n left: `${clampedLeft}px`,\n minWidth: `${minContentWidth}px`,\n margin: `${CONTENT_MARGIN}px 0`,\n minHeight: `${minContentHeight}px`,\n maxHeight: `${availableHeight}px`,\n height: `${wrapperHeightPx}px`,\n ...(willAlignWithoutTopOverflow ? { bottom: 0, top: \"auto\" } : { top: 0, bottom: \"auto\" }),\n ...styleProp,\n };\n (next as Record<string, string>)[\"--refineui-select-content-available-height\"] = `${availableHeight}px`;\n (next as Record<string, string>)[\"--refineui-select-trigger-width\"] = `${minContentWidth}px`;\n commitContentStyle(next);\n setSide(willAlignWithoutTopOverflow ? \"bottom\" : \"top\");\n }, [open, triggerRef, contentRef, styleProp, itemsRef, value, viewportRef, commitContentStyle]);\n\n const updatePositionPopper = useCallback(() => {\n if (!open || !triggerRef.current || !contentRef.current) return;\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n const minW = parsePx(componentSizes.dropdownMenuWidth, 180);\n const width = Math.min(Math.max(triggerRect.width, minW), vw - 2 * CONTENT_MARGIN);\n const left = clampNumber(triggerRect.left, [CONTENT_MARGIN, Math.max(CONTENT_MARGIN, vw - width - CONTENT_MARGIN)]);\n const gap = SIDE_OFFSET;\n const spaceBelow = vh - triggerRect.bottom - gap - CONTENT_MARGIN;\n const spaceAbove = triggerRect.top - gap - CONTENT_MARGIN;\n const scrollH = contentRef.current.scrollHeight;\n const preferBelow = spaceBelow >= spaceAbove || (spaceBelow >= scrollH && spaceBelow >= 120);\n const maxH = Math.max(120, preferBelow ? spaceBelow : spaceAbove);\n const next: CSSProperties = {\n position: \"fixed\",\n left: `${left}px`,\n width: `${width}px`,\n maxHeight: `${maxH}px`,\n ...styleProp,\n };\n if (preferBelow) {\n next.top = `${triggerRect.bottom + gap}px`;\n next.bottom = \"auto\";\n } else {\n next.top = \"auto\";\n next.bottom = `${vh - triggerRect.top + gap}px`;\n }\n (next as Record<string, string>)[\"--refineui-select-content-available-height\"] = `${maxH}px`;\n (next as Record<string, string>)[\"--refineui-select-trigger-width\"] = `${width}px`;\n commitContentStyle(next);\n setSide(preferBelow ? \"bottom\" : \"top\");\n }, [open, triggerRef, contentRef, styleProp, commitContentStyle]);\n\n const updatePosition = isPopper ? updatePositionPopper : updatePositionItemAligned;\n\n /** Radix Viewport onScroll: when panel is bottom-anchored, grow height via scroll; fix scrollTop/justifyContent */\n const onViewportScroll = useCallback(() => {\n const viewport = viewportRef.current;\n if (!viewport) return;\n const { scrollTop } = viewport;\n if (shouldExpandOnScrollRef.current) {\n const scrolledBy = Math.abs(prevScrollTopRef.current - scrollTop);\n if (scrolledBy > 0) {\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const wrapper = positionerRef.current;\n if (wrapper) {\n const cssMinHeight = Number.parseFloat(wrapper.style.minHeight || \"0\") || 0;\n const cssHeight = Number.parseFloat(wrapper.style.height || \"0\") || 0;\n const prevHeight = Math.max(cssMinHeight, cssHeight);\n if (prevHeight < availableHeight) {\n const nextHeight = prevHeight + scrolledBy;\n const clampedNextHeight = Math.min(availableHeight, nextHeight);\n const heightDiff = nextHeight - clampedNextHeight;\n wrapper.style.height = `${clampedNextHeight}px`;\n if (side === \"bottom\") {\n viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;\n wrapper.style.justifyContent = \"flex-end\";\n }\n const next = {\n ...contentStyleRef.current,\n height: `${clampedNextHeight}px`,\n ...(side === \"bottom\" ? { justifyContent: \"flex-end\" } : {}),\n } as CSSProperties;\n commitContentStyle(next);\n }\n }\n }\n }\n prevScrollTopRef.current = scrollTop;\n }, [viewportRef, commitContentStyle, side]);\n\n /** Radix `focusFirst`: first option scrollTop 0, last snaps to bottom so list start matches regardless of anchor */\n const focusSelectedItem = useCallback(() => {\n const viewport = viewportRef.current;\n if (!viewport) return;\n const enabledItems = itemsRef.current.filter((item) => !item.disabled);\n const firstEl = enabledItems[0]?.ref.current ?? null;\n const lastEl = enabledItems.length > 0 ? enabledItems[enabledItems.length - 1]?.ref.current ?? null : null;\n const selectedItem =\n itemsRef.current.find((item) => item.value === value && item.ref.current)?.ref.current ??\n itemsRef.current.find((item) => !item.disabled && item.ref.current)?.ref.current;\n if (!selectedItem) return;\n selectedItem.scrollIntoView({ block: \"nearest\" });\n if (firstEl && selectedItem === firstEl) viewport.scrollTop = 0;\n if (lastEl && selectedItem === lastEl) viewport.scrollTop = viewport.scrollHeight;\n }, [viewportRef, itemsRef, value]);\n\n useIsomorphicLayoutEffect(() => {\n if (!open) return;\n shouldExpandOnScrollRef.current = false;\n shouldRepositionRef.current = true;\n prevScrollTopRef.current = 0;\n /** Radix `SelectItemAlignedPosition`: sync measure after layout like `useLayoutEffect(() => position(), [position])` */\n updatePosition();\n const schedule = () => {\n if (rafRef.current != null) cancelAnimationFrame(rafRef.current);\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = null;\n updatePosition();\n });\n };\n schedule();\n const settleId = requestAnimationFrame(() => {\n if (positionerRef.current) positionerRef.current.style.justifyContent = \"\";\n updatePosition();\n onViewportScroll();\n shouldExpandOnScrollRef.current = true;\n if (viewportRef.current) {\n prevScrollTopRef.current = viewportRef.current.scrollTop;\n }\n if (shouldRepositionRef.current) {\n updatePosition();\n focusSelectedItem();\n /** Radix `handleScrollButtonChange`: if metrics change after scroll/focus, run `position()` again */\n if (!isPopper) {\n updatePosition();\n onViewportScroll();\n }\n shouldRepositionRef.current = false;\n }\n });\n const viewport = viewportRef.current;\n viewport?.addEventListener(\"scroll\", onViewportScroll);\n const timeoutId = window.setTimeout(schedule, 0);\n const timeoutScrollbarId = window.setTimeout(onViewportScroll, 0);\n window.addEventListener(\"resize\", schedule);\n const onAncestorScroll = (event: Event) => {\n const target = event.target as Node | null;\n if (target && contentRef.current?.contains(target)) return;\n schedule();\n };\n const unsubscribeAncestorScroll = subscribeScrollAndScrollableAncestors(triggerRef.current, onAncestorScroll);\n const ro =\n typeof ResizeObserver !== \"undefined\"\n ? new ResizeObserver(() => {\n schedule();\n onViewportScroll();\n })\n : null;\n if (ro && triggerRef.current) ro.observe(triggerRef.current);\n return () => {\n cancelAnimationFrame(settleId);\n window.clearTimeout(timeoutId);\n window.clearTimeout(timeoutScrollbarId);\n window.removeEventListener(\"resize\", schedule);\n unsubscribeAncestorScroll();\n viewport?.removeEventListener(\"scroll\", onViewportScroll);\n ro?.disconnect();\n shouldExpandOnScrollRef.current = false;\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n }, [open, itemsVersion, updatePosition, isPopper, triggerRef, contentRef, viewportRef, onViewportScroll, focusSelectedItem]);\n\n const setContentRefs = useCallback(\n (node: HTMLDivElement | null) => {\n (contentRef as MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) (forwardedRef as MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [forwardedRef, contentRef],\n );\n\n if (!open) return null;\n\n const normalizedChildren = (() => {\n const flat = Children.toArray(children);\n if (flat.length === 1 && isValidElement(flat[0]) && flat[0].type === SelectViewport) {\n return children as ReactNode;\n }\n return <SelectViewport>{children}</SelectViewport>;\n })();\n\n const portalTarget: HTMLElement | undefined =\n (containerProp === null ? undefined : containerProp) ??\n portalFromCtx ??\n (typeof document !== \"undefined\" ? document.body : undefined);\n\n const panel = (\n <SelectContentPositionContext.Provider value={position}>\n <div ref={positionerRef} className={selectStyles.positioner} style={contentStyle}>\n <div\n ref={setContentRefs}\n role=\"listbox\"\n tabIndex={-1}\n onKeyDown={onKeyDown}\n data-refineui=\"select-menu\"\n data-state=\"open\"\n data-side={side}\n className={clsx(\n selectStyles.contentShell,\n isPopper ? selectStyles.contentPopper : selectStyles.contentItemAligned,\n \"outline-none\",\n className,\n )}\n {...rest}\n >\n {normalizedChildren}\n </div>\n </div>\n </SelectContentPositionContext.Provider>\n );\n\n if (typeof document === \"undefined\" || !portalTarget) return panel;\n return createPortal(panel, portalTarget);\n});\nSelectContent.displayName = \"SelectContent\";\n\nexport const SelectViewport = forwardRef<HTMLDivElement, SelectViewportProps>(function SelectViewport(\n { className, children, ...props },\n forwardedRef,\n) {\n const { viewportRef } = useSelectCtx();\n const position = useSelectContentPosition();\n const viewportClass = position === \"popper\" ? selectStyles.viewportPopper : selectStyles.viewportItemAligned;\n const rootClass = position === \"popper\" ? selectStyles.scrollAreaRootPopper : selectStyles.scrollAreaRootItemAligned;\n return (\n <ScrollAreaRegion\n type=\"hover\"\n className={rootClass}\n viewportClassName={clsx(viewportClass, className)}\n viewportRef={composeRefs(viewportRef, forwardedRef)}\n {...props}\n >\n {children}\n </ScrollAreaRegion>\n );\n});\nSelectViewport.displayName = \"SelectViewport\";\n\nexport function SelectGroup({ children, className, ...props }: SelectGroupProps) {\n return (\n <div role=\"group\" className={clsx(selectStyles.group, className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport function SelectLabel({ children, className, ...props }: SelectLabelProps) {\n return (\n <div className={clsx(selectStyles.label, className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport function SelectSection({ children, className, ...props }: SelectSectionProps) {\n return (\n <div className={clsx(selectStyles.label, className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport function SelectSeparator({ className, ...props }: SelectSeparatorProps) {\n return <div role=\"separator\" className={clsx(selectStyles.separator, className)} {...props} />;\n}\n\nexport function SelectItem({\n value: itemValue,\n children,\n disabled = false,\n textValue,\n className,\n onPointerDown,\n onPointerUp,\n onPointerLeave,\n onPointerCancel,\n onMouseDown,\n onMouseUp,\n onMouseLeave,\n ...props\n}: SelectItemProps) {\n const { value, setValue, setOpen, activeIndex, setActiveIndex, itemsRef, registerItem, triggerRef } = useSelectCtx();\n const ref = useRef<HTMLDivElement | null>(null);\n const pointerTypeRef = useRef<\"mouse\" | \"touch\" | \"pen\">(\"touch\");\n const [pressed, setPressed] = useState(false);\n const isSelected = value === itemValue;\n const label = (textValue || (typeof children === \"string\" ? children : String(itemValue))).trim();\n\n useEffect(() => {\n return registerItem({ value: itemValue, label, disabled, ref });\n }, [registerItem, itemValue, label, disabled]);\n\n const enabledItems = itemsRef.current.filter((item) => !item.disabled);\n const myIndex = enabledItems.findIndex((item) => item.value === itemValue);\n /** Keyboard `activeIndex` + hover only — no `focus()` on options to avoid focus ring on pointer click */\n const isHighlighted = myIndex >= 0 && activeIndex === myIndex && !disabled;\n const handleSelect = () => {\n if (disabled) return;\n setValue(itemValue);\n setOpen(false);\n triggerRef.current?.focus();\n };\n\n return (\n <div\n ref={ref}\n role=\"option\"\n tabIndex={disabled ? undefined : -1}\n aria-selected={isSelected}\n aria-disabled={disabled}\n data-refineui=\"select-item\"\n data-selected={isSelected ? true : undefined}\n data-state={pressed ? \"pressed\" : isSelected ? \"selected\" : undefined}\n data-highlighted={isHighlighted ? \"\" : undefined}\n data-disabled={disabled ? \"\" : undefined}\n onFocus={() => {\n if (myIndex >= 0) setActiveIndex(myIndex);\n }}\n onPointerDown={(event) => {\n onPointerDown?.(event);\n pointerTypeRef.current = event.pointerType as \"mouse\" | \"touch\" | \"pen\";\n if (!disabled) setPressed(true);\n }}\n onPointerMove={(event) => {\n pointerTypeRef.current = event.pointerType as \"mouse\" | \"touch\" | \"pen\";\n if (pointerTypeRef.current === \"mouse\") {\n if (disabled) {\n setActiveIndex(-1);\n } else if (myIndex >= 0) {\n setActiveIndex(myIndex);\n }\n }\n }}\n onPointerLeave={(event) => {\n onPointerLeave?.(event);\n setPressed(false);\n if (event.currentTarget === document.activeElement) {\n setActiveIndex(-1);\n }\n }}\n onPointerCancel={(event) => {\n onPointerCancel?.(event);\n setPressed(false);\n }}\n onPointerUp={(event) => {\n onPointerUp?.(event);\n setPressed(false);\n if (pointerTypeRef.current === \"mouse\") handleSelect();\n }}\n onMouseDown={(event) => {\n onMouseDown?.(event);\n if (!disabled) setPressed(true);\n }}\n onMouseUp={(event) => {\n onMouseUp?.(event);\n setPressed(false);\n }}\n onMouseLeave={(event) => {\n onMouseLeave?.(event);\n setPressed(false);\n }}\n onClick={() => {\n if (pointerTypeRef.current !== \"mouse\") handleSelect();\n }}\n onKeyDown={(event) => {\n if (event.key === \" \" || event.key === \"Enter\") {\n event.preventDefault();\n handleSelect();\n }\n }}\n className={clsx(selectStyles.item, disabled && selectStyles.itemDisabled, className)}\n {...props}\n >\n <span\n className={clsx(selectStyles.itemIndicator, disabled && \"text-refineui-alias-foreground-disabled\")}\n aria-hidden\n >\n {isSelected ? <WebIcon name=\"checkmark\" size={iconSizes.xsmall} /> : null}\n </span>\n <span data-refineui-select-item-text className={selectStyles.itemText}>\n {children}\n </span>\n </div>\n );\n}\n\nexport function SelectItemText({ children, className, ...props }: SelectItemTextProps) {\n return (\n <span className={clsx(selectStyles.itemText, className)} {...props}>\n {children}\n </span>\n );\n}\n\nexport function SelectItemIndicator({ children, className, ...props }: SelectItemIndicatorProps) {\n return (\n <span className={clsx(selectStyles.itemIndicator, className)} {...props}>\n {children}\n </span>\n );\n}\n\nexport function SelectScrollUpButton({ children, ...props }: SelectScrollUpButtonProps) {\n return <div {...props}>{children}</div>;\n}\n\nexport function SelectScrollDownButton({ children, ...props }: SelectScrollDownButtonProps) {\n return <div {...props}>{children}</div>;\n}\n\nexport function SelectArrow({ children, ...props }: SelectArrowProps) {\n return <span {...props}>{children}</span>;\n}\n\n","import { clsx } from \"clsx\";\nimport { forwardRef, type Ref } from \"react\";\nimport {\n ScrollArea,\n ScrollAreaScrollbar,\n ScrollAreaThumb,\n ScrollAreaViewport,\n} from \"./ScrollArea\";\nimport type { ScrollAreaProps, ScrollAreaType } from \"./types\";\n\nexport type ScrollAreaRegionProps = Omit<ScrollAreaProps, \"type\"> & {\n type?: ScrollAreaType;\n viewportClassName?: string;\n viewportRef?: Ref<HTMLDivElement>;\n};\n\n/** Internal composed vertical ScrollArea — shared by Select, Dropdown, Dialog, Drawer. */\nexport const ScrollAreaRegion = forwardRef<HTMLDivElement, ScrollAreaRegionProps>(\n function ScrollAreaRegion(\n { type = \"hover\", className, viewportClassName, viewportRef, children, ...rootProps },\n ref,\n ) {\n return (\n <ScrollArea\n ref={ref}\n type={type}\n className={clsx(\"min-h-0 min-w-0 flex-1\", className)}\n {...rootProps}\n >\n <ScrollAreaViewport ref={viewportRef} className={viewportClassName}>\n {children}\n </ScrollAreaViewport>\n <ScrollAreaScrollbar orientation=\"vertical\">\n <ScrollAreaThumb />\n </ScrollAreaScrollbar>\n </ScrollArea>\n );\n },\n);\n","import { clsx } from \"clsx\";\nimport type {\n CSSProperties,\n MutableRefObject,\n PointerEvent as ReactPointerEvent,\n RefObject,\n} from \"react\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useComposedRefs } from \"@refineui/utilities/react\";\nimport {\n SCROLL_AREA_THUMB_MIN_PX,\n scrollAreaScrollbarOrientationClass,\n scrollAreaStyles,\n} from \"./style\";\nimport type {\n ScrollAreaOrientation,\n ScrollAreaProps,\n ScrollAreaScrollbarProps,\n ScrollAreaThumbProps,\n ScrollAreaType,\n ScrollAreaViewportProps,\n} from \"./types\";\n\nconst SCROLL_HIDE_DELAY_MS = 600;\n\ntype ScrollAxisMetrics = {\n scrollSize: number;\n clientSize: number;\n scrollOffset: number;\n};\n\n/** Which axes declared a scrollbar — drives viewport overflow per axis. */\ntype ScrollAreaAxes = Record<ScrollAreaOrientation, boolean>;\n\ntype ScrollAreaContextValue = {\n type: ScrollAreaType;\n viewportRef: MutableRefObject<HTMLDivElement | null>;\n setViewportNode: (node: HTMLDivElement | null) => void;\n axes: ScrollAreaAxes;\n setAxisEnabled: (orientation: ScrollAreaOrientation, enabled: boolean) => void;\n vertical: ScrollAxisMetrics;\n horizontal: ScrollAxisMetrics;\n scrolling: boolean;\n interacting: boolean;\n setInteracting: (active: boolean) => void;\n};\n\ntype ScrollbarContextValue = {\n orientation: ScrollAreaOrientation;\n metrics: ScrollAxisMetrics;\n trackRef: RefObject<HTMLDivElement | null>;\n};\n\nconst ScrollAreaContext = createContext<ScrollAreaContextValue | null>(null);\nconst ScrollbarContext = createContext<ScrollbarContextValue | null>(null);\n\nfunction useScrollAreaContext(component: string): ScrollAreaContextValue {\n const value = useContext(ScrollAreaContext);\n if (!value) throw new Error(`${component} must be used within ScrollArea.`);\n return value;\n}\n\nfunction useScrollbarContext(component: string): ScrollbarContextValue {\n const value = useContext(ScrollbarContext);\n if (!value) throw new Error(`${component} must be used within ScrollAreaScrollbar.`);\n return value;\n}\n\nconst EMPTY_METRICS: ScrollAxisMetrics = {\n scrollSize: 0,\n clientSize: 0,\n scrollOffset: 0,\n};\n\nconst NO_AXES: ScrollAreaAxes = { vertical: false, horizontal: false };\n\nfunction readMetrics(viewport: HTMLDivElement): {\n vertical: ScrollAxisMetrics;\n horizontal: ScrollAxisMetrics;\n} {\n return {\n vertical: {\n scrollSize: viewport.scrollHeight,\n clientSize: viewport.clientHeight,\n scrollOffset: viewport.scrollTop,\n },\n horizontal: {\n scrollSize: viewport.scrollWidth,\n clientSize: viewport.clientWidth,\n scrollOffset: viewport.scrollLeft,\n },\n };\n}\n\nfunction isScrollable(metrics: ScrollAxisMetrics): boolean {\n return metrics.scrollSize > metrics.clientSize + 1;\n}\n\n/**\n * Thumb size + offset in px against a full-height (100%) rail.\n * offset maps scrollOffset ∈ [0, maxScroll] → [0, trackSize − thumbSize].\n */\nfunction resolveThumbGeometry(\n metrics: ScrollAxisMetrics,\n trackSize: number,\n minThumb: number,\n): { thumbSize: number; offset: number } {\n if (trackSize <= 0 || metrics.scrollSize <= 0) {\n return { thumbSize: 0, offset: 0 };\n }\n\n const maxScroll = Math.max(metrics.scrollSize - metrics.clientSize, 0);\n if (maxScroll <= 0) {\n return { thumbSize: trackSize, offset: 0 };\n }\n\n const ideal = (metrics.clientSize / metrics.scrollSize) * trackSize;\n const thumbSize = Math.min(trackSize, Math.max(ideal, minThumb));\n const maxOffset = Math.max(trackSize - thumbSize, 0);\n const offset = (metrics.scrollOffset / maxScroll) * maxOffset;\n\n return { thumbSize, offset };\n}\n\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(function ScrollArea(\n {\n type = \"hover\",\n className,\n children,\n ...props\n },\n ref,\n) {\n const viewportRef = useRef<HTMLDivElement | null>(null);\n const [viewportEpoch, setViewportEpoch] = useState(0);\n const [vertical, setVertical] = useState<ScrollAxisMetrics>(EMPTY_METRICS);\n const [horizontal, setHorizontal] = useState<ScrollAxisMetrics>(EMPTY_METRICS);\n const [scrolling, setScrolling] = useState(false);\n const [interacting, setInteracting] = useState(false);\n const [axes, setAxes] = useState<ScrollAreaAxes>(NO_AXES);\n const hideTimerRef = useRef<number | null>(null);\n\n const setViewportNode = useCallback((node: HTMLDivElement | null) => {\n if (viewportRef.current === node) return;\n viewportRef.current = node;\n setViewportEpoch((n) => n + 1);\n }, []);\n\n const setAxisEnabled = useCallback(\n (orientation: ScrollAreaOrientation, enabled: boolean) => {\n setAxes((prev) =>\n prev[orientation] === enabled ? prev : { ...prev, [orientation]: enabled },\n );\n },\n [],\n );\n\n const sync = useCallback(() => {\n const viewport = viewportRef.current;\n if (!viewport) return;\n const next = readMetrics(viewport);\n setVertical(next.vertical);\n setHorizontal(next.horizontal);\n }, []);\n\n const markScrolling = useCallback(() => {\n setScrolling(true);\n if (hideTimerRef.current != null) window.clearTimeout(hideTimerRef.current);\n hideTimerRef.current = window.setTimeout(() => {\n setScrolling(false);\n hideTimerRef.current = null;\n }, SCROLL_HIDE_DELAY_MS);\n }, []);\n\n useLayoutEffect(() => {\n sync();\n }, [sync, axes, viewportEpoch]);\n\n useEffect(() => {\n const viewport = viewportRef.current;\n if (!viewport) return;\n\n const onScroll = () => {\n sync();\n markScrolling();\n };\n\n viewport.addEventListener(\"scroll\", onScroll, { passive: true });\n\n const resizeObserver = new ResizeObserver(() => sync());\n resizeObserver.observe(viewport);\n for (const child of Array.from(viewport.children)) {\n resizeObserver.observe(child);\n }\n\n const mutationObserver = new MutationObserver(() => sync());\n mutationObserver.observe(viewport, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n\n sync();\n\n return () => {\n viewport.removeEventListener(\"scroll\", onScroll);\n resizeObserver.disconnect();\n mutationObserver.disconnect();\n if (hideTimerRef.current != null) window.clearTimeout(hideTimerRef.current);\n };\n }, [sync, markScrolling, viewportEpoch]);\n\n const ctx = useMemo<ScrollAreaContextValue>(\n () => ({\n type,\n viewportRef,\n setViewportNode,\n axes,\n setAxisEnabled,\n vertical,\n horizontal,\n scrolling,\n interacting,\n setInteracting,\n }),\n [\n type,\n setViewportNode,\n axes,\n setAxisEnabled,\n vertical,\n horizontal,\n scrolling,\n interacting,\n ],\n );\n\n return (\n <ScrollAreaContext.Provider value={ctx}>\n <div\n ref={ref}\n data-refineui=\"scroll-area\"\n data-type={type}\n data-scrolling={scrolling || undefined}\n data-interacting={interacting || undefined}\n className={clsx(scrollAreaStyles.root, className)}\n {...props}\n >\n {children}\n </div>\n </ScrollAreaContext.Provider>\n );\n});\n\nexport const ScrollAreaViewport = forwardRef<HTMLDivElement, ScrollAreaViewportProps>(\n function ScrollAreaViewport({ className, children, ...props }, forwardedRef) {\n const { setViewportNode, axes, vertical, horizontal } =\n useScrollAreaContext(\"ScrollAreaViewport\");\n const composedRef = useComposedRefs(setViewportNode, forwardedRef);\n /** Keyboard scrolling needs a tab stop only while content actually overflows. */\n const scrollable = isScrollable(vertical) || isScrollable(horizontal);\n\n return (\n <div\n ref={composedRef}\n data-refineui=\"scroll-area-viewport\"\n data-overflow-x={axes.horizontal ? \"true\" : undefined}\n data-overflow-y={axes.vertical ? \"true\" : undefined}\n tabIndex={scrollable ? 0 : undefined}\n className={clsx(scrollAreaStyles.viewport, className)}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nexport function ScrollAreaScrollbar({\n orientation = \"vertical\",\n className,\n children,\n onPointerDown,\n ...props\n}: ScrollAreaScrollbarProps) {\n const {\n type,\n viewportRef,\n setAxisEnabled,\n vertical,\n horizontal,\n scrolling,\n interacting,\n } = useScrollAreaContext(\"ScrollAreaScrollbar\");\n const trackRef = useRef<HTMLDivElement>(null);\n const metrics = orientation === \"vertical\" ? vertical : horizontal;\n const visible = isScrollable(metrics);\n const active = scrolling || interacting;\n\n useLayoutEffect(() => {\n setAxisEnabled(orientation, true);\n return () => setAxisEnabled(orientation, false);\n }, [orientation, setAxisEnabled]);\n\n const scrollbarCtx = useMemo<ScrollbarContextValue>(\n () => ({ orientation, metrics, trackRef }),\n [orientation, metrics],\n );\n\n const onTrackPointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n onPointerDown?.(event);\n if (event.defaultPrevented || !visible) return;\n if ((event.target as HTMLElement).closest('[data-refineui=\"scroll-area-thumb\"]')) {\n return;\n }\n\n const viewport = viewportRef.current;\n const track = trackRef.current;\n if (!viewport || !track) return;\n\n const trackSize =\n orientation === \"vertical\" ? track.clientHeight : track.clientWidth;\n const rect = track.getBoundingClientRect();\n const clickPos =\n orientation === \"vertical\" ? event.clientY - rect.top : event.clientX - rect.left;\n const { thumbSize } = resolveThumbGeometry(\n metrics,\n trackSize,\n SCROLL_AREA_THUMB_MIN_PX,\n );\n const maxThumbOffset = Math.max(trackSize - thumbSize, 0);\n const nextThumbOffset = Math.min(\n Math.max(clickPos - thumbSize / 2, 0),\n maxThumbOffset,\n );\n const maxScroll = metrics.scrollSize - metrics.clientSize;\n const nextScroll =\n maxThumbOffset === 0 ? 0 : (nextThumbOffset / maxThumbOffset) * maxScroll;\n\n if (orientation === \"vertical\") viewport.scrollTop = nextScroll;\n else viewport.scrollLeft = nextScroll;\n };\n\n return (\n <ScrollbarContext.Provider value={scrollbarCtx}>\n <div\n data-refineui=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n data-state={visible ? \"visible\" : \"hidden\"}\n data-visibility={type}\n data-active={active || undefined}\n className={clsx(\n scrollAreaStyles.scrollbar,\n scrollAreaScrollbarOrientationClass[orientation],\n className,\n )}\n onPointerDown={onTrackPointerDown}\n {...props}\n >\n <div\n ref={trackRef as RefObject<HTMLDivElement>}\n data-refineui=\"scroll-area-track\"\n className={scrollAreaStyles.track}\n >\n {children}\n </div>\n </div>\n </ScrollbarContext.Provider>\n );\n}\n\nexport function ScrollAreaThumb({ className, style, ...props }: ScrollAreaThumbProps) {\n const { viewportRef, setInteracting } = useScrollAreaContext(\"ScrollAreaThumb\");\n const { orientation, metrics, trackRef } = useScrollbarContext(\"ScrollAreaThumb\");\n const [dragging, setDragging] = useState(false);\n const [trackSize, setTrackSize] = useState(0);\n const dragRef = useRef<{\n pointerId: number;\n startPos: number;\n startScroll: number;\n trackSize: number;\n thumbSize: number;\n } | null>(null);\n\n useLayoutEffect(() => {\n const track = trackRef.current;\n if (!track) return;\n\n const measure = () => {\n setTrackSize(\n orientation === \"vertical\" ? track.clientHeight : track.clientWidth,\n );\n };\n\n measure();\n const observer = new ResizeObserver(measure);\n observer.observe(track);\n return () => observer.disconnect();\n }, [orientation, trackRef, metrics.scrollSize, metrics.clientSize]);\n\n const { thumbSize, offset } = resolveThumbGeometry(\n metrics,\n trackSize,\n SCROLL_AREA_THUMB_MIN_PX,\n );\n\n const thumbStyle: CSSProperties =\n orientation === \"vertical\"\n ? {\n top: offset,\n height: thumbSize > 0 ? thumbSize : undefined,\n ...style,\n }\n : {\n left: offset,\n width: thumbSize > 0 ? thumbSize : undefined,\n ...style,\n };\n\n const onPointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n const viewport = viewportRef.current;\n const track = trackRef.current;\n if (!viewport || !track || event.button !== 0) return;\n event.preventDefault();\n event.stopPropagation();\n event.currentTarget.setPointerCapture(event.pointerId);\n\n const size = orientation === \"vertical\" ? track.clientHeight : track.clientWidth;\n const live: ScrollAxisMetrics =\n orientation === \"vertical\"\n ? {\n scrollSize: viewport.scrollHeight,\n clientSize: viewport.clientHeight,\n scrollOffset: viewport.scrollTop,\n }\n : {\n scrollSize: viewport.scrollWidth,\n clientSize: viewport.clientWidth,\n scrollOffset: viewport.scrollLeft,\n };\n const { thumbSize: sizeAtDrag } = resolveThumbGeometry(\n live,\n size,\n SCROLL_AREA_THUMB_MIN_PX,\n );\n\n dragRef.current = {\n pointerId: event.pointerId,\n startPos: orientation === \"vertical\" ? event.clientY : event.clientX,\n startScroll: live.scrollOffset,\n trackSize: size,\n thumbSize: sizeAtDrag,\n };\n setDragging(true);\n setInteracting(true);\n };\n\n const onPointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n const drag = dragRef.current;\n const viewport = viewportRef.current;\n if (!drag || !viewport || drag.pointerId !== event.pointerId) return;\n\n const maxThumbOffset = Math.max(drag.trackSize - drag.thumbSize, 0);\n const maxScroll =\n orientation === \"vertical\"\n ? Math.max(viewport.scrollHeight - viewport.clientHeight, 0)\n : Math.max(viewport.scrollWidth - viewport.clientWidth, 0);\n if (maxThumbOffset <= 0 || maxScroll <= 0) return;\n\n const pos = orientation === \"vertical\" ? event.clientY : event.clientX;\n const delta = pos - drag.startPos;\n const nextScroll = drag.startScroll + (delta / maxThumbOffset) * maxScroll;\n if (orientation === \"vertical\") viewport.scrollTop = nextScroll;\n else viewport.scrollLeft = nextScroll;\n };\n\n const endDrag = (event: ReactPointerEvent<HTMLDivElement>) => {\n if (dragRef.current?.pointerId !== event.pointerId) return;\n dragRef.current = null;\n setDragging(false);\n setInteracting(false);\n try {\n event.currentTarget.releasePointerCapture(event.pointerId);\n } catch {\n /* already released */\n }\n };\n\n return (\n <div\n data-refineui=\"scroll-area-thumb\"\n data-orientation={orientation}\n data-dragging={dragging || undefined}\n className={clsx(scrollAreaStyles.thumb, className)}\n style={thumbStyle}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n {...props}\n />\n );\n}\n","import { clsx } from \"clsx\";\nimport { spacings } from \"@refineui/tokens\";\nimport type { ScrollAreaOrientation } from \"./types\";\n\n/** Minimum thumb length — spacing `sizeXLarge`. */\nexport const SCROLL_AREA_THUMB_MIN_PX = Number.parseFloat(spacings.sizeXLarge);\n\n/**\n * ScrollArea — overlay scrollbar over the viewport (no layout shift).\n * Placement / visibility live in `refineui.css`.\n */\nexport const scrollAreaStyles = {\n root: \"box-border min-h-0 min-w-0 overflow-hidden outline-none\",\n\n /**\n * Overflow and scroll chaining are per axis: an axis only becomes scrollable\n * when its scrollbar is declared, so a horizontal-only area lets vertical\n * wheel gestures chain to the page instead of swallowing them.\n */\n viewport: clsx(\n \"size-full min-h-0 min-w-0 rounded-[inherit]\",\n \"overflow-hidden\",\n \"outline-none\",\n \"data-[overflow-x=true]:overflow-x-auto data-[overflow-x=true]:overscroll-x-contain\",\n \"data-[overflow-y=true]:overflow-y-auto data-[overflow-y=true]:overscroll-y-contain\",\n ),\n\n scrollbar: clsx(\n \"z-refineui-content box-border touch-none select-none\",\n \"transition-opacity duration-[var(--refineui-motion-duration-fast)]\",\n \"ease-[var(--refineui-motion-easing-ease-out)]\",\n ),\n\n scrollbarVertical: \"\",\n scrollbarHorizontal: \"\",\n\n /** Inner rail — thumb is absolutely positioned here (padding lives on the outer scrollbar). */\n track: \"relative size-full min-h-0 min-w-0 overflow-hidden rounded-refineui-circle\",\n\n thumb: clsx(\n \"absolute rounded-refineui-circle\",\n \"bg-refineui-alias-border-strong\",\n \"transition-[background-color] duration-[var(--refineui-motion-duration-fast)]\",\n \"ease-[var(--refineui-motion-easing-ease-out)]\",\n \"hover:bg-refineui-alias-foreground-secondary\",\n \"data-[dragging=true]:bg-refineui-alias-foreground-secondary\",\n ),\n} as const;\n\nexport const scrollAreaScrollbarOrientationClass: Record<ScrollAreaOrientation, string> = {\n vertical: scrollAreaStyles.scrollbarVertical,\n horizontal: scrollAreaStyles.scrollbarHorizontal,\n};\n","import type { SelectSize } from \"./types\";\nimport { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass, sizedComponentTextClass } from \"../../typography\";\n\n// Select trigger/menu chrome — see Navigation Menu for compact plate patterns.\nexport const selectStyles = {\n root: \"relative inline-block\",\n trigger: clsx(\n \"box-border inline-flex cursor-pointer items-center justify-between\",\n \"gap-refineui-size-x-small rounded-refineui-large\",\n \"border-refineui-hairline border-refineui-alias-border-default\",\n \"bg-refineui-alias-background-primary px-refineui-size-medium py-refineui-size-x-small\",\n \"text-refineui-alias-foreground-primary outline-none\",\n \"transition-[color,background-color,border-color] duration-[var(--refineui-motion-duration-fast)]\",\n ),\n /** Flush shell — consumer / parent owns padding, radius, surface. */\n triggerPlain: \"box-border inline-flex cursor-pointer items-center outline-none\",\n triggerInner: \"min-w-0 flex-1 overflow-hidden text-start\",\n triggerOpen: \"text-refineui-alias-foreground-primary\",\n triggerDisabled:\n \"cursor-not-allowed border-refineui-alias-border-disabled bg-refineui-alias-background-surface-disabled text-refineui-alias-foreground-disabled\",\n triggerPlainDisabled: \"cursor-not-allowed text-refineui-alias-foreground-disabled\",\n value: \"min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-start\",\n iconWrap: \"inline-flex size-refineui-icon-xsmall shrink-0 items-center justify-center\",\n chevron:\n \"shrink-0 transition-transform duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]\",\n chevronOpen: \"rotate-180\",\n positioner: \"z-refineui-popup flex flex-col overflow-hidden\",\n contentShell:\n \"box-border flex w-full min-h-0 flex-col overflow-hidden rounded-refineui-large border-refineui-hairline border-refineui-alias-border-default bg-refineui-alias-background-primary p-refineui-size-xx-small shadow-refineui-2 outline-none\",\n contentPopper: \"h-auto max-h-[var(--refineui-select-content-available-height,100dvh)]\",\n contentItemAligned: \"max-h-full\",\n viewportPopper:\n \"relative flex max-h-full min-h-0 min-w-full w-full flex-col\",\n viewportItemAligned:\n \"relative flex min-h-0 min-w-full w-full max-h-full flex-1 flex-col\",\n scrollAreaRootPopper: \"relative flex max-h-full min-h-0 flex-col\",\n scrollAreaRootItemAligned: \"relative flex h-full min-h-0 flex-1 flex-col\",\n\n group: \"flex flex-col gap-px\",\n label: clsx(\n componentTextClass(componentTypographyTokens.select.label),\n \"px-refineui-size-x-small py-refineui-size-x-small text-refineui-alias-foreground-tertiary\",\n ),\n separator: \"my-refineui-size-x-small h-px bg-refineui-alias-border-default\",\n\n item: clsx(\n componentTextClass(componentTypographyTokens.select.item),\n \"relative flex cursor-pointer items-center gap-refineui-size-x-small rounded-refineui-large border-refineui-none bg-transparent p-refineui-size-x-small text-refineui-alias-foreground-primary outline-none transition-colors data-[disabled]:cursor-not-allowed data-[disabled]:text-refineui-alias-foreground-disabled\",\n ),\n itemActive: \"bg-refineui-alias-background-primary-hover\",\n itemDisabled: \"cursor-not-allowed text-refineui-alias-foreground-disabled\",\n itemIndicator: \"inline-flex size-refineui-icon-xsmall shrink-0 items-center justify-center\",\n itemText: \"min-w-0 flex-1 truncate\",\n} as const;\n\nconst triggerMinHeight: Record<SelectSize, string> = {\n sm: \"min-h-refineui-button-min-height-sm\",\n md: \"min-h-refineui-button-min-height-md\",\n lg: \"min-h-refineui-button-min-height-lg\",\n};\n\nexport const selectTriggerSizeClass: Record<SelectSize, string> = {\n sm: [triggerMinHeight.sm, sizedComponentTextClass(componentTypographyTokens.select.trigger, \"sm\")].join(\" \"),\n md: [triggerMinHeight.md, sizedComponentTextClass(componentTypographyTokens.select.trigger, \"md\")].join(\" \"),\n lg: [triggerMinHeight.lg, sizedComponentTextClass(componentTypographyTokens.select.trigger, \"lg\")].join(\" \"),\n};\n","import { clsx } from \"clsx\";\nimport { toggleStyles } from \"./style\";\nimport type { ToggleProps } from \"./types\";\n\nexport function Toggle({\n checked = false,\n onCheckedChange,\n onClick,\n className,\n disabled,\n ...props\n}: ToggleProps) {\n const trackClass = disabled\n ? checked\n ? toggleStyles.disabledChecked\n : toggleStyles.disabledUnchecked\n : checked\n ? toggleStyles.checked\n : toggleStyles.unchecked;\n\n const thumbClass = disabled\n ? checked\n ? toggleStyles.thumbDisabledChecked\n : toggleStyles.thumbDisabledUnchecked\n : toggleStyles.thumbDefault;\n\n return (\n <button\n type=\"button\"\n data-refineui=\"switch\"\n data-checked={checked ? \"true\" : \"false\"}\n role=\"switch\"\n aria-checked={checked}\n className={clsx(toggleStyles.root, trackClass, className)}\n onClick={(e) => {\n onCheckedChange?.(!checked);\n onClick?.(e);\n }}\n disabled={disabled}\n {...props}\n >\n <span className={clsx(toggleStyles.thumb, thumbClass)} />\n </button>\n );\n}\n","export const toggleStyles = {\n root: \"box-border flex w-refineui-switch-width items-center rounded-refineui-x-large border-none p-refineui-switch-padding transition-colors duration-[var(--refineui-motion-duration-medium)]\",\n /** OFF rest — Web Kit track fill off */\n unchecked: \"cursor-pointer bg-refineui-alias-background-primary-active\",\n /** ON rest */\n checked: \"cursor-pointer bg-refineui-alias-background-brand\",\n /** Disabled OFF — muted empty track */\n disabledUnchecked: \"cursor-not-allowed bg-refineui-alias-background-surface-disabled\",\n /** Disabled ON — muted brand so on/off stay distinguishable */\n disabledChecked: \"cursor-not-allowed bg-refineui-alias-background-brand-subtle\",\n thumb: \"block h-refineui-switch-thumb w-refineui-switch-thumb rounded-refineui-x-large shadow-refineui-2 transition-[transform,background-color] duration-[var(--refineui-motion-duration-medium)]\",\n thumbDefault: \"bg-refineui-alias-background-primary\",\n /** Disabled OFF thumb — slightly darker than track */\n thumbDisabledUnchecked: \"bg-refineui-alias-background-brand-subtle shadow-none\",\n /** Disabled ON thumb — keep white chip, no elevation */\n thumbDisabledChecked: \"bg-refineui-alias-background-primary shadow-none\",\n} as const;\n","import { clsx } from \"clsx\";\nimport { WebIcon } from \"../../WebIcon\";\nimport {\n chipDisabledVariantClass,\n chipSizeClass,\n chipSizeIcon,\n chipSizeTypo,\n chipStyles,\n chipVariantClass,\n} from \"./style\";\nimport type { ChipProps } from \"./types\";\n\nexport function Chip({\n variant = \"default\",\n size = \"md\",\n disabled = false,\n avatar,\n onRemove,\n children,\n className,\n ...props\n}: ChipProps) {\n const iconSize = chipSizeIcon[size];\n\n return (\n <span\n data-refineui=\"chip\"\n data-variant={variant}\n data-size={size}\n {...(disabled ? { \"data-disabled\": true } : {})}\n aria-disabled={disabled || undefined}\n className={clsx(\n chipStyles.root,\n chipSizeClass[size],\n chipSizeTypo[size],\n disabled ? chipDisabledVariantClass[variant] : chipVariantClass[variant],\n className,\n )}\n {...props}\n >\n {avatar ? <span className={chipStyles.avatarWrap}>{avatar}</span> : null}\n {children}\n {onRemove && (\n <button\n type=\"button\"\n data-refineui=\"chip-remove\"\n disabled={disabled}\n aria-label=\"Remove\"\n className={clsx(\n chipStyles.removeBtnBase,\n disabled ? chipStyles.removeBtnDisabled : chipStyles.removeBtnEnabled,\n )}\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n >\n <WebIcon name=\"dismiss\" size={iconSize} color=\"currentColor\" />\n </button>\n )}\n </span>\n );\n}\n","/**\n * Chip recipe — visual mapping only.\n * Contract: packages/react/spec/components/chip.json (Tag re-exports Chip)\n * Tokens: componentColorTokens.chip\n */\nimport { iconSizes } from \"@refineui/tokens\";\nimport { buildSemanticTextClassMap } from \"../typography\";\nimport { componentTypographyTokens } from \"../tokens/componentTypographyTokens\";\nimport { defineRecipe } from \"./types\";\nimport type { ChipSize, ChipVariant } from \"../components/Chip/types\";\n\nexport const chipVariantClass: Record<ChipVariant, string> = {\n default: \"border-none bg-refineui-alias-background-surface text-refineui-alias-foreground-brand\",\n outline:\n \"border-refineui-thin border-refineui-alias-border-default box-border bg-transparent text-refineui-alias-foreground-brand\",\n filled: \"border-none bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed\",\n};\n\nexport const chipDisabledVariantClass: Record<ChipVariant, string> = {\n default: \"border-none bg-refineui-alias-background-surface-disabled text-refineui-alias-foreground-disabled\",\n outline:\n \"border-refineui-thin border-refineui-alias-border-disabled box-border bg-transparent text-refineui-alias-foreground-disabled\",\n filled: \"border-none bg-refineui-alias-background-surface-disabled text-refineui-alias-foreground-disabled\",\n};\n\nexport const chipSizeClass: Record<ChipSize, string> = {\n sm: \"min-h-refineui-chip-min-height-sm px-refineui-size-x-small\",\n md: \"min-h-refineui-chip-min-height-md px-refineui-size-x-small\",\n lg: \"min-h-refineui-chip-min-height-lg px-refineui-size-small\",\n};\n\nexport const chipSizeTypo: Record<ChipSize, string> = buildSemanticTextClassMap(componentTypographyTokens.chip);\n\nexport const chipSizeIcon: Record<ChipSize, number> = {\n sm: iconSizes.xxsmall,\n md: iconSizes.xsmall,\n lg: iconSizes.small,\n};\n\nexport const chipRecipe = defineRecipe({\n name: \"chip\",\n base: \"box-border inline-flex max-w-full items-center gap-refineui-size-xx-small rounded-refineui-medium\",\n variants: {\n variant: chipVariantClass,\n size: chipSizeClass,\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n cssStates: [\"hover\", \"active\", \"focus-visible\", \"disabled\"],\n});\n\nexport const chipStyles = {\n root: chipRecipe.base,\n avatarWrap: \"inline-flex shrink-0 items-center\",\n removeBtnBase: \"inline-flex items-center justify-center border-none bg-transparent p-0 leading-none text-inherit\",\n removeBtnDisabled: \"cursor-not-allowed\",\n removeBtnEnabled: \"cursor-pointer opacity-70 hover:opacity-100\",\n} as const;\n","import { clsx } from \"clsx\";\nimport {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactElement,\n type ReactNode,\n type RefObject,\n} from \"react\";\nimport { iconSizes } from \"@refineui/tokens\";\nimport { Dialog, DialogContent } from \"../Dialog\";\nimport { ScrollAreaRegion } from \"../ScrollArea/ScrollAreaRegion\";\nimport { SearchField, SearchFieldClear, SearchFieldIcon, SearchFieldInput } from \"../SearchField\";\nimport { commandStyles } from \"./style\";\nimport type {\n CommandDialogProps,\n CommandEmptyProps,\n CommandFilter,\n CommandGroupHeadingProps,\n CommandGroupProps,\n CommandInputProps,\n CommandItemProps,\n CommandListProps,\n CommandProps,\n CommandSeparatorProps,\n CommandShortcutProps,\n} from \"./types\";\n\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport const defaultCommandFilter: CommandFilter = (value, search, keywords = []) => {\n const query = search.trim().toLowerCase();\n if (!query) return 1;\n const haystack = [value, ...keywords].join(\" \").toLowerCase();\n return haystack.includes(query) ? 1 : 0;\n};\n\ntype ItemRegistration = {\n id: string;\n value: string;\n keywords: string[];\n disabled: boolean;\n forceMount: boolean;\n groupId: string | null;\n nodeRef: RefObject<HTMLButtonElement | null>;\n onSelect?: (value: string) => void;\n};\n\ntype CommandContextValue = {\n search: string;\n setSearch: (next: string) => void;\n shouldFilter: boolean;\n filter: CommandFilter;\n selectedValue: string;\n setSelectedValue: (value: string) => void;\n listId: string;\n label: string;\n registerItem: (item: ItemRegistration) => () => void;\n getVisibleOrderedIds: () => string[];\n isItemVisible: (id: string) => boolean;\n visibleCount: number;\n selectById: (id: string) => void;\n registerGroup: (groupId: string) => () => void;\n groupHasVisibleItems: (groupId: string) => boolean;\n};\n\nconst CommandContext = createContext<CommandContextValue | null>(null);\n\nfunction useCommandContext(component: string): CommandContextValue {\n const ctx = useContext(CommandContext);\n if (!ctx) {\n throw new Error(`${component} must be used within <Command>`);\n }\n return ctx;\n}\n\ntype GroupContextValue = {\n groupId: string;\n};\n\nconst CommandGroupContext = createContext<GroupContextValue | null>(null);\n\nfunction useControllableString(\n controlled: string | undefined,\n defaultValue: string | undefined,\n onChange: ((next: string) => void) | undefined,\n): [string, (next: string) => void] {\n const [internal, setInternal] = useState(defaultValue ?? \"\");\n const isControlled = controlled !== undefined;\n const value = isControlled ? controlled : internal;\n const setValue = useCallback(\n (next: string) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n },\n [isControlled, onChange],\n );\n return [value, setValue];\n}\n\nexport function Command({\n children,\n className,\n value,\n defaultValue,\n onValueChange,\n shouldFilter = true,\n filter = defaultCommandFilter,\n selectedValue: selectedValueProp,\n defaultSelectedValue,\n onSelectedValueChange,\n label = \"Command menu\",\n onKeyDown,\n ...props\n}: CommandProps) {\n const [search, setSearch] = useControllableString(value, defaultValue, onValueChange);\n const [selectedValue, setSelectedValue] = useControllableString(\n selectedValueProp,\n defaultSelectedValue,\n onSelectedValueChange,\n );\n const listId = useId();\n const itemsRef = useRef(new Map<string, ItemRegistration>());\n const groupsRef = useRef(new Set<string>());\n const [registryVersion, setRegistryVersion] = useState(0);\n\n const bumpRegistry = useCallback(() => {\n setRegistryVersion((v) => v + 1);\n }, []);\n\n const registerItem = useCallback(\n (item: ItemRegistration) => {\n itemsRef.current.set(item.id, item);\n bumpRegistry();\n return () => {\n itemsRef.current.delete(item.id);\n bumpRegistry();\n };\n },\n [bumpRegistry],\n );\n\n const registerGroup = useCallback(\n (groupId: string) => {\n groupsRef.current.add(groupId);\n bumpRegistry();\n return () => {\n groupsRef.current.delete(groupId);\n bumpRegistry();\n };\n },\n [bumpRegistry],\n );\n\n const scoreFor = useCallback(\n (item: ItemRegistration) => {\n if (item.forceMount || !shouldFilter) return 1;\n return filter(item.value, search, item.keywords);\n },\n [filter, search, shouldFilter],\n );\n\n const getVisibleOrderedIds = useCallback(() => {\n const scored: { id: string; score: number }[] = [];\n for (const item of itemsRef.current.values()) {\n const score = scoreFor(item);\n if (score > 0) scored.push({ id: item.id, score });\n }\n scored.sort((a, b) => b.score - a.score);\n return scored.map((s) => s.id);\n }, [scoreFor, registryVersion]);\n\n const isItemVisible = useCallback(\n (id: string) => {\n const item = itemsRef.current.get(id);\n if (!item) return false;\n return scoreFor(item) > 0;\n },\n [scoreFor, registryVersion],\n );\n\n const groupHasVisibleItems = useCallback(\n (groupId: string) => {\n for (const item of itemsRef.current.values()) {\n if (item.groupId === groupId && scoreFor(item) > 0) return true;\n }\n return false;\n },\n [scoreFor, registryVersion],\n );\n\n const visibleIds = useMemo(() => getVisibleOrderedIds(), [getVisibleOrderedIds]);\n const visibleCount = visibleIds.length;\n\n const selectById = useCallback(\n (id: string) => {\n const item = itemsRef.current.get(id);\n if (!item || item.disabled) return;\n setSelectedValue(item.value);\n item.onSelect?.(item.value);\n },\n [setSelectedValue],\n );\n\n useIsomorphicLayoutEffect(() => {\n if (visibleIds.length === 0) {\n if (selectedValue) setSelectedValue(\"\");\n return;\n }\n const stillVisible = [...itemsRef.current.values()].some(\n (item) => item.value === selectedValue && scoreFor(item) > 0 && !item.disabled,\n );\n if (stillVisible) return;\n const firstEnabled = visibleIds\n .map((id) => itemsRef.current.get(id))\n .find((item) => item && !item.disabled);\n if (firstEnabled) setSelectedValue(firstEnabled.value);\n }, [visibleIds, selectedValue, setSelectedValue, scoreFor, search]);\n\n const moveSelection = useCallback(\n (direction: 1 | -1) => {\n const enabled = visibleIds\n .map((id) => itemsRef.current.get(id))\n .filter((item): item is ItemRegistration => !!item && !item.disabled);\n if (enabled.length === 0) return;\n const currentIndex = enabled.findIndex((item) => item.value === selectedValue);\n const nextIndex =\n currentIndex === -1\n ? direction === 1\n ? 0\n : enabled.length - 1\n : (currentIndex + direction + enabled.length) % enabled.length;\n const next = enabled[nextIndex];\n if (!next) return;\n setSelectedValue(next.value);\n next.nodeRef.current?.scrollIntoView({ block: \"nearest\" });\n },\n [visibleIds, selectedValue, setSelectedValue],\n );\n\n const ctx = useMemo<CommandContextValue>(\n () => ({\n search,\n setSearch,\n shouldFilter,\n filter,\n selectedValue,\n setSelectedValue,\n listId,\n label,\n registerItem,\n getVisibleOrderedIds,\n isItemVisible,\n visibleCount,\n selectById,\n registerGroup,\n groupHasVisibleItems,\n }),\n [\n search,\n setSearch,\n shouldFilter,\n filter,\n selectedValue,\n setSelectedValue,\n listId,\n label,\n registerItem,\n getVisibleOrderedIds,\n isItemVisible,\n visibleCount,\n selectById,\n registerGroup,\n groupHasVisibleItems,\n ],\n );\n\n return (\n <CommandContext.Provider value={ctx}>\n <div\n data-refineui=\"command\"\n role=\"presentation\"\n className={clsx(commandStyles.root, className)}\n onKeyDown={(event: ReactKeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n moveSelection(1);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n moveSelection(-1);\n } else if (event.key === \"Enter\") {\n const active = [...itemsRef.current.values()].find(\n (item) => item.value === selectedValue && scoreFor(item) > 0,\n );\n if (active && !active.disabled) {\n event.preventDefault();\n selectById(active.id);\n }\n } else if (event.key === \"Home\") {\n event.preventDefault();\n const first = visibleIds\n .map((id) => itemsRef.current.get(id))\n .find((item) => item && !item.disabled);\n if (first) {\n setSelectedValue(first.value);\n first.nodeRef.current?.scrollIntoView({ block: \"nearest\" });\n }\n } else if (event.key === \"End\") {\n event.preventDefault();\n const enabled = visibleIds\n .map((id) => itemsRef.current.get(id))\n .filter((item): item is ItemRegistration => !!item && !item.disabled);\n const last = enabled[enabled.length - 1];\n if (last) {\n setSelectedValue(last.value);\n last.nodeRef.current?.scrollIntoView({ block: \"nearest\" });\n }\n }\n }}\n {...props}\n >\n {children}\n </div>\n </CommandContext.Provider>\n );\n}\n\nexport function CommandDialog({\n children,\n commandProps,\n size = \"lg\",\n ...dialogProps\n}: CommandDialogProps) {\n return (\n <Dialog size={size} {...dialogProps}>\n <DialogContent style={commandStyles.dialogContentPanel} scrollable={false}>\n <div className={commandStyles.dialogBody}>\n <Command\n {...commandProps}\n className={clsx(commandStyles.rootInDialog, commandProps?.className)}\n >\n {children}\n </Command>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n\nexport const CommandInput = forwardRef<HTMLInputElement, CommandInputProps>(function CommandInput(\n { className, startIcon, placeholder = \"Type a command or search…\", disabled, onKeyDown, ...props },\n ref,\n) {\n const { search, setSearch, listId, label, selectedValue } = useCommandContext(\"CommandInput\");\n const activeDescendantId = selectedValue ? `${listId}-item-${cssEscape(selectedValue)}` : undefined;\n\n return (\n <div data-refineui=\"command-input\" className={commandStyles.inputWrap}>\n <SearchField\n value={search}\n onValueChange={setSearch}\n disabled={disabled}\n aria-label={label}\n >\n <SearchFieldIcon>{startIcon}</SearchFieldIcon>\n <SearchFieldInput\n ref={ref}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded\n aria-controls={listId}\n aria-activedescendant={activeDescendantId}\n autoCorrect=\"off\"\n spellCheck={false}\n placeholder={placeholder}\n className={className}\n onKeyDown={onKeyDown}\n {...props}\n />\n <SearchFieldClear />\n </SearchField>\n </div>\n );\n});\n\nexport function CommandList({ className, children, ...props }: CommandListProps) {\n const { listId } = useCommandContext(\"CommandList\");\n return (\n <div\n data-refineui=\"command-list\"\n className={commandStyles.listShell}\n style={commandStyles.listShellHeight}\n >\n <ScrollAreaRegion\n type=\"hover\"\n className={clsx(commandStyles.list, className)}\n viewportClassName={commandStyles.listViewport}\n {...props}\n >\n <div id={listId} role=\"listbox\" className={commandStyles.listInner}>\n {children}\n </div>\n </ScrollAreaRegion>\n </div>\n );\n}\n\nexport function CommandEmpty({ className, children = \"No results found.\", ...props }: CommandEmptyProps) {\n const { visibleCount, search } = useCommandContext(\"CommandEmpty\");\n if (visibleCount > 0) return null;\n if (!search.trim()) return null;\n return (\n <div\n data-refineui=\"command-empty\"\n role=\"presentation\"\n className={clsx(commandStyles.empty, className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport function CommandGroup({ className, children, ...props }: CommandGroupProps) {\n const groupId = useId();\n const { registerGroup, groupHasVisibleItems } = useCommandContext(\"CommandGroup\");\n\n useEffect(() => registerGroup(groupId), [registerGroup, groupId]);\n\n const visible = groupHasVisibleItems(groupId);\n const groupCtx = useMemo(() => ({ groupId }), [groupId]);\n\n return (\n <CommandGroupContext.Provider value={groupCtx}>\n <div\n data-refineui=\"command-group\"\n role=\"group\"\n hidden={!visible}\n className={clsx(commandStyles.group, className)}\n {...props}\n >\n {children}\n </div>\n </CommandGroupContext.Provider>\n );\n}\n\nexport function CommandGroupHeading({ className, children, ...props }: CommandGroupHeadingProps) {\n useCommandContext(\"CommandGroupHeading\");\n return (\n <div\n data-refineui=\"command-group-heading\"\n className={clsx(commandStyles.groupHeading, className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nfunction isCommandListContentNode(node: Element): boolean {\n const slot = node.getAttribute(\"data-refineui\");\n if (slot === \"command-separator\" || slot === \"command-empty\") return false;\n if (node.hasAttribute(\"hidden\")) return false;\n if (slot === \"command-group\" || slot === \"command-item\") return true;\n return false;\n}\n\nfunction hasVisibleCommandNeighbor(el: HTMLElement, direction: \"previousElementSibling\" | \"nextElementSibling\"): boolean {\n let node: Element | null = el[direction];\n while (node) {\n if (isCommandListContentNode(node)) return true;\n node = node[direction];\n }\n return false;\n}\n\nexport function CommandSeparator({ className, ...props }: CommandSeparatorProps) {\n const { search, visibleCount } = useCommandContext(\"CommandSeparator\");\n const ref = useRef<HTMLDivElement>(null);\n const [show, setShow] = useState(true);\n\n useIsomorphicLayoutEffect(() => {\n const el = ref.current;\n if (!el) {\n setShow(false);\n return;\n }\n const hasBefore = hasVisibleCommandNeighbor(el, \"previousElementSibling\");\n const hasAfter = hasVisibleCommandNeighbor(el, \"nextElementSibling\");\n setShow(hasBefore && hasAfter);\n }, [search, visibleCount]);\n\n return (\n <div\n ref={ref}\n data-refineui=\"command-separator\"\n role=\"separator\"\n aria-orientation=\"horizontal\"\n hidden={!show}\n className={clsx(commandStyles.separatorWrap, className)}\n {...props}\n >\n <div className={commandStyles.separatorLine} />\n </div>\n );\n}\n\nexport function CommandShortcut({ className, children, ...props }: CommandShortcutProps) {\n return (\n <span data-refineui=\"command-shortcut\" className={clsx(commandStyles.shortcut, className)} {...props}>\n {children}\n </span>\n );\n}\n\nfunction isCommandShortcutElement(node: ReactNode): node is ReactElement {\n return isValidElement(node) && node.type === CommandShortcut;\n}\n\nfunction partitionCommandItemChildren(children: ReactNode): {\n content: ReactNode[];\n shortcuts: ReactElement[];\n} {\n const content: ReactNode[] = [];\n const shortcuts: ReactElement[] = [];\n Children.forEach(children, (child) => {\n if (isCommandShortcutElement(child)) {\n shortcuts.push(child);\n } else {\n content.push(child);\n }\n });\n return { content, shortcuts };\n}\n\nexport const CommandItem = forwardRef<HTMLButtonElement, CommandItemProps>(function CommandItem(\n {\n className,\n value,\n keywords,\n onSelect,\n forceMount = false,\n disabled = false,\n startIcon,\n endIcon,\n shortcut,\n children,\n onClick,\n onMouseMove,\n ...props\n },\n forwardedRef,\n) {\n const {\n selectedValue,\n setSelectedValue,\n listId,\n registerItem,\n isItemVisible,\n selectById,\n } = useCommandContext(\"CommandItem\");\n const group = useContext(CommandGroupContext);\n const itemId = useId();\n const nodeRef = useRef<HTMLButtonElement | null>(null);\n const onSelectRef = useRef(onSelect);\n onSelectRef.current = onSelect;\n const keywordsKey = keywords?.join(\"\\0\") ?? \"\";\n const { content, shortcuts } = partitionCommandItemChildren(children);\n const hasTrailing = shortcuts.length > 0 || shortcut != null || endIcon != null;\n\n const setRefs = useCallback(\n (node: HTMLButtonElement | null) => {\n nodeRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n },\n [forwardedRef],\n );\n\n useEffect(() => {\n const keywordList = keywordsKey ? keywordsKey.split(\"\\0\") : [];\n return registerItem({\n id: itemId,\n value,\n keywords: keywordList,\n disabled: !!disabled,\n forceMount,\n groupId: group?.groupId ?? null,\n nodeRef,\n onSelect: (v) => onSelectRef.current?.(v),\n });\n }, [registerItem, itemId, value, keywordsKey, disabled, forceMount, group?.groupId]);\n\n const visible = isItemVisible(itemId);\n if (!visible) return null;\n\n const isSelected = selectedValue === value;\n const domId = `${listId}-item-${cssEscape(value)}`;\n\n return (\n <button\n ref={setRefs}\n id={domId}\n type=\"button\"\n role=\"option\"\n aria-selected={isSelected}\n disabled={disabled}\n data-refineui=\"command-item\"\n data-state={disabled ? \"disabled\" : isSelected ? \"active\" : \"default\"}\n data-selected={isSelected || undefined}\n data-disabled={disabled || undefined}\n className={clsx(\n commandStyles.itemBase,\n disabled ? commandStyles.itemDisabled : commandStyles.itemEnabled,\n className,\n )}\n onMouseMove={(event) => {\n onMouseMove?.(event);\n if (!disabled && selectedValue !== value) setSelectedValue(value);\n }}\n onClick={(event) => {\n onClick?.(event);\n if (event.defaultPrevented || disabled) return;\n selectById(itemId);\n }}\n {...props}\n >\n {startIcon ? (\n <span\n className={commandStyles.iconWrap}\n style={{\n width: iconSizes.small,\n minWidth: iconSizes.small,\n height: iconSizes.small,\n }}\n >\n {startIcon}\n </span>\n ) : null}\n <span className={commandStyles.label}>{content}</span>\n {hasTrailing ? (\n <span className={commandStyles.rightWrap}>\n {shortcuts}\n {shortcut ? (\n typeof shortcut === \"string\" || typeof shortcut === \"number\" ? (\n <CommandShortcut>{shortcut}</CommandShortcut>\n ) : (\n shortcut\n )\n ) : null}\n {endIcon ? (\n <span\n className={commandStyles.iconWrap}\n style={{\n width: iconSizes.small,\n minWidth: iconSizes.small,\n height: iconSizes.small,\n }}\n >\n {endIcon}\n </span>\n ) : null}\n </span>\n ) : null}\n </button>\n );\n});\n\n/** Safe-ish id fragment for aria-activedescendant (values may contain spaces). */\nfunction cssEscape(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n}","import { clsx } from \"clsx\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n type RefObject,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { iconSizes, semanticInteraction } from \"@refineui/tokens\";\nimport { motionMsToNumber } from \"@refineui/utilities/animation\";\nimport { resolveColorTokenValue } from \"@refineui/utilities/color\";\nimport { componentSizes } from \"../../componentSizes\";\nimport { componentColorTokens } from \"../../tokens/componentColorTokens\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { useFocusTrap } from \"../../hooks/useFocusTrap\";\nimport { Button } from \"../Button\";\nimport { dialogStyles } from \"./style\";\nimport { ScrollAreaRegion } from \"../ScrollArea/ScrollAreaRegion\";\nimport type {\n DialogCloseProps,\n DialogContentProps,\n DialogDescriptionProps,\n DialogHeaderProps,\n DialogProps,\n DialogSize,\n DialogTitleProps,\n DialogTriggerProps,\n} from \"./types\";\n\n/** Web Kit COMPONENT_SET `Dialog` `393:1181` */\nconst PANEL_MS = motionMsToNumber(semanticInteraction.duration.panel);\nconst SCRIM_MS = motionMsToNumber(semanticInteraction.duration.overlay);\nconst EASING = semanticInteraction.easing.panel;\n\ntype DialogContextValue = {\n open: boolean;\n setOpen: (next: boolean) => void;\n size: DialogSize;\n titleId: string;\n descriptionId: string;\n panelRef: RefObject<HTMLDivElement>;\n hasTitle: boolean;\n setHasTitle: (v: boolean) => void;\n hasDescription: boolean;\n setHasDescription: (v: boolean) => void;\n};\n\nconst DialogContext = createContext<DialogContextValue | null>(null);\n\nfunction useDialogContext(component: string): DialogContextValue {\n const ctx = useContext(DialogContext);\n if (!ctx) throw new Error(`${component} must be used within <Dialog>`);\n return ctx;\n}\n\nfunction useDialogOpenState(\n openProp: boolean | undefined,\n defaultOpen: boolean | undefined,\n onOpenChange: ((open: boolean) => void) | undefined,\n): [boolean, (next: boolean) => void] {\n const [internalOpen, setInternalOpen] = useState(!!defaultOpen);\n const isControlled = openProp !== undefined;\n const open = isControlled ? !!openProp : internalOpen;\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange],\n );\n return [open, setOpen];\n}\n\nexport function Dialog({ open: openProp, defaultOpen, onOpenChange, size = \"lg\", children }: DialogProps) {\n const [open, setOpen] = useDialogOpenState(openProp, defaultOpen, onOpenChange);\n const titleId = useId();\n const descriptionId = useId();\n const panelRef = useRef<HTMLDivElement>(null);\n const [hasTitle, setHasTitle] = useState(false);\n const [hasDescription, setHasDescription] = useState(false);\n\n const value = useMemo(\n () => ({\n open,\n setOpen,\n size,\n titleId,\n descriptionId,\n panelRef,\n hasTitle,\n setHasTitle,\n hasDescription,\n setHasDescription,\n }),\n [open, setOpen, size, titleId, descriptionId, hasTitle, hasDescription],\n );\n\n return <DialogContext.Provider value={value}>{children}</DialogContext.Provider>;\n}\n\nexport const DialogTrigger = forwardRef<HTMLButtonElement, DialogTriggerProps>(function DialogTrigger(\n { onClick, ...props },\n ref,\n) {\n const { setOpen } = useDialogContext(\"DialogTrigger\");\n return (\n <Button\n ref={ref}\n {...props}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) setOpen(true);\n }}\n />\n );\n});\n\nexport function DialogContent({ className, style, container, scrollable = true, children, ...props }: DialogContentProps) {\n const { open, setOpen, size, titleId, descriptionId, panelRef, hasTitle, hasDescription } =\n useDialogContext(\"DialogContent\");\n const [rendering, setRendering] = useState(open);\n const [entered, setEntered] = useState(false);\n\n useFocusTrap(open && entered, panelRef);\n\n useEffect(() => {\n if (open) {\n setRendering(true);\n const id = requestAnimationFrame(() => requestAnimationFrame(() => setEntered(true)));\n return () => cancelAnimationFrame(id);\n }\n setEntered(false);\n const t = window.setTimeout(() => setRendering(false), PANEL_MS);\n return () => window.clearTimeout(t);\n }, [open]);\n\n useEffect(() => {\n if (!rendering) return;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = \"\";\n };\n }, [rendering]);\n\n useEffect(() => {\n if (!rendering || !entered) return;\n const handler = (e: KeyboardEvent) => e.key === \"Escape\" && setOpen(false);\n document.addEventListener(\"keydown\", handler);\n return () => document.removeEventListener(\"keydown\", handler);\n }, [rendering, entered, setOpen]);\n\n if (!rendering || typeof document === \"undefined\") return null;\n\n const target = container ?? document.body;\n\n const panelMotion: CSSProperties = {\n opacity: entered ? 1 : 0,\n transform: entered\n ? \"scale(1) translateY(0)\"\n : \"scale(var(--refineui-motion-scale-enter)) translateY(var(--refineui-spacing-size-small))\",\n transition: `opacity ${PANEL_MS}ms ${EASING}, transform ${PANEL_MS}ms ${EASING}`,\n willChange: \"opacity, transform\",\n maxWidth: size === \"lg\" ? componentSizes.dialogMaxWidth : componentSizes.dialogWidthSm,\n };\n\n const panelBody = scrollable ? (\n <ScrollAreaRegion\n type=\"hover\"\n className={dialogStyles.panelScrollWrap}\n viewportClassName=\"flex min-h-0 min-w-0 flex-1 flex-col gap-refineui-size-large\"\n >\n {children}\n </ScrollAreaRegion>\n ) : (\n children\n );\n\n const root = (\n <div\n data-refineui=\"dialog\"\n data-state={open ? \"open\" : \"closed\"}\n role=\"dialog\"\n aria-modal={true}\n aria-labelledby={hasTitle ? titleId : undefined}\n aria-describedby={hasDescription ? descriptionId : undefined}\n className={clsx(\n dialogStyles.root,\n className,\n )}\n {...props}\n >\n <div\n role=\"presentation\"\n className={dialogStyles.scrim}\n style={{\n backgroundColor: resolveColorTokenValue(componentColorTokens.dialog.overlay),\n opacity: entered ? 1 : 0,\n transition: `opacity ${SCRIM_MS}ms ${EASING}`,\n pointerEvents: entered ? \"auto\" : \"none\",\n }}\n onClick={() => setOpen(false)}\n aria-hidden\n />\n <div\n ref={panelRef}\n tabIndex={-1}\n className={dialogStyles.panel}\n style={{ ...panelMotion, ...style }}\n onClick={(e) => e.stopPropagation()}\n >\n {panelBody}\n </div>\n </div>\n );\n\n return createPortal(root, target);\n}\n\nexport function DialogHeader({ className, children, showClose = true, ...props }: DialogHeaderProps) {\n return (\n <div\n className={clsx(dialogStyles.header, className)}\n {...props}\n >\n <div className={dialogStyles.headerMain}>{children}</div>\n {showClose ? <DialogClose /> : null}\n </div>\n );\n}\n\nexport function DialogTitle({ className, id, children, ...props }: DialogTitleProps) {\n const { titleId, setHasTitle } = useDialogContext(\"DialogTitle\");\n useEffect(() => {\n setHasTitle(true);\n return () => setHasTitle(false);\n }, [setHasTitle]);\n return (\n <h2\n id={id ?? titleId}\n className={clsx(dialogStyles.title, className)}\n {...props}\n >\n {children}\n </h2>\n );\n}\n\nexport function DialogDescription({ className, id, children, ...props }: DialogDescriptionProps) {\n const { descriptionId, setHasDescription } = useDialogContext(\"DialogDescription\");\n useEffect(() => {\n setHasDescription(true);\n return () => setHasDescription(false);\n }, [setHasDescription]);\n return (\n <p\n id={id ?? descriptionId}\n className={clsx(dialogStyles.description, className)}\n {...props}\n >\n {children}\n </p>\n );\n}\n\nexport function DialogClose({ className, onClick, type = \"button\", ...props }: DialogCloseProps) {\n const { setOpen } = useDialogContext(\"DialogClose\");\n return (\n <Button\n {...props}\n type={type}\n variant=\"ghost\"\n size=\"sm\"\n layout=\"icon\"\n aria-label=\"Close\"\n className={className}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) setOpen(false);\n }}\n >\n <WebIcon name=\"dismiss\" size={iconSizes.small} color=\"currentColor\" iconStyle=\"regular\" aria-hidden />\n </Button>\n );\n}\n","import { useEffect, useRef, type RefObject } from \"react\";\n\nconst FOCUSABLE =\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\nfunction focusableIn(root: HTMLElement): HTMLElement[] {\n return Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE)).filter(\n (el) => el.getAttribute(\"aria-hidden\") !== \"true\" && el.closest(\"[aria-hidden='true']\") === null\n );\n}\n\n/** While open, keep focus inside the root; restore previous focus on close */\nexport function useFocusTrap(open: boolean, rootRef: RefObject<HTMLElement | null>) {\n const previousFocus = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (!open) return undefined;\n\n const root = rootRef.current;\n previousFocus.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n\n let raf = 0;\n raf = requestAnimationFrame(() => {\n if (!root) return;\n const nodes = focusableIn(root);\n if (nodes.length > 0) {\n nodes[0]!.focus();\n } else {\n root.focus();\n }\n });\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== \"Tab\" || !root) return;\n const nodes = focusableIn(root);\n if (nodes.length === 0) return;\n const first = nodes[0];\n const last = nodes[nodes.length - 1];\n if (e.shiftKey) {\n if (document.activeElement === first) {\n e.preventDefault();\n last.focus();\n }\n } else if (document.activeElement === last) {\n e.preventDefault();\n first.focus();\n }\n };\n\n document.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n cancelAnimationFrame(raf);\n document.removeEventListener(\"keydown\", onKeyDown, true);\n previousFocus.current?.focus({ preventScroll: true });\n previousFocus.current = null;\n };\n }, [open, rootRef]);\n}\n","/**\n * Dialog slot recipe — visual mapping only.\n * Contract: packages/react/spec/components/dialog.json\n * Tokens: componentColorTokens.dialog\n */\nimport { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../typography\";\nimport { defineSlotRecipe, resolveSlotClasses } from \"./types\";\n\nexport const dialogRecipe = defineSlotRecipe({\n name: \"dialog\",\n slots: [\"root\", \"scrim\", \"panel\", \"panelScrollWrap\", \"header\", \"headerMain\", \"title\", \"description\"],\n base: {\n root: \"fixed inset-0 z-refineui-messages flex items-center justify-center p-refineui-size-large\",\n scrim: \"absolute inset-0 cursor-pointer transition-opacity\",\n panel:\n \"relative box-border flex max-h-refineui-dialog-max-height-viewport w-full flex-col overflow-hidden rounded-refineui-xx-large bg-refineui-alias-background-primary p-refineui-size-xx-large shadow-refineui-8 outline-none\",\n panelScrollWrap: \"flex min-h-0 min-w-0 flex-1 flex-col\",\n header: \"flex shrink-0 items-start justify-between gap-refineui-size-x-small\",\n headerMain: \"flex min-w-0 flex-1 flex-col gap-refineui-size-x-small\",\n title: clsx(\n componentTextClass(componentTypographyTokens.dialog.title),\n \"m-0 min-w-0 text-refineui-alias-foreground-primary\",\n ),\n description: clsx(\n componentTextClass(componentTypographyTokens.dialog.description),\n \"m-0 min-w-0 text-refineui-alias-foreground-secondary\",\n ),\n },\n variants: {\n size: {\n sm: {},\n lg: {},\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n});\n\nexport function resolveDialogSlotClasses(slot: string, size: \"sm\" | \"lg\" = \"lg\"): string {\n return resolveSlotClasses(dialogRecipe, slot, { size });\n}\n\n/** Compatible map for Dialog components. */\nexport const dialogStyles = {\n root: dialogRecipe.base.root,\n scrim: dialogRecipe.base.scrim,\n panel: dialogRecipe.base.panel,\n panelScrollWrap: dialogRecipe.base.panelScrollWrap,\n header: dialogRecipe.base.header,\n headerMain: dialogRecipe.base.headerMain,\n title: dialogRecipe.base.title,\n description: dialogRecipe.base.description,\n} as const;\n","import { clsx } from \"clsx\";\nimport type { CSSProperties } from \"react\";\nimport { foundationSizes } from \"@refineui/tokens\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\n/** Same cap as Dropdown menus — explicit px so ScrollArea gets a real height. */\nconst COMMAND_LIST_MAX_HEIGHT = `min(60vh, ${foundationSizes.foundationSize3200})`;\n\nexport const commandStyles = {\n root: clsx(\n \"flex w-full flex-col overflow-hidden outline-none\",\n \"rounded-refineui-large border-refineui-hairline border-refineui-alias-border-default\",\n \"bg-refineui-alias-background-primary text-refineui-alias-foreground-primary\",\n \"shadow-refineui-2\",\n ),\n /** Nested inside Dialog panel — Dialog already supplies radius / elevation */\n rootInDialog: \"min-h-0 w-full flex-col overflow-hidden rounded-none border-none shadow-none\",\n dialogContentPanel: {\n padding: 0,\n overflow: \"hidden\",\n } as const,\n dialogBody: \"flex min-h-0 w-full flex-col overflow-hidden\",\n inputWrap: \"shrink-0 p-refineui-size-medium\",\n /** Fixed list height — command palettes need an explicit cap (not content-sized flex). */\n listShell: \"box-border w-full overflow-hidden\",\n list: \"h-full min-h-0 w-full\",\n listShellHeight: {\n height: COMMAND_LIST_MAX_HEIGHT,\n maxHeight: COMMAND_LIST_MAX_HEIGHT,\n } satisfies CSSProperties,\n listViewport: \"outline-none\",\n listInner:\n \"flex flex-col gap-refineui-size-xxx-small px-refineui-size-medium py-refineui-size-small\",\n empty: clsx(\n componentTextClass(componentTypographyTokens.command.empty),\n \"px-refineui-size-medium py-refineui-size-xx-large text-center text-refineui-alias-foreground-tertiary\",\n ),\n group: \"flex flex-col gap-refineui-size-xxx-small overflow-hidden\",\n groupHeading: clsx(\n componentTextClass(componentTypographyTokens.command.group),\n \"flex w-full items-center overflow-hidden px-refineui-size-x-small pb-refineui-size-xxx-small pt-refineui-size-x-small text-refineui-alias-foreground-tertiary\",\n ),\n separatorWrap: \"flex w-full items-center px-refineui-size-x-small py-refineui-size-x-small\",\n separatorLine: \"h-px w-full shrink-0 bg-refineui-alias-border-default\",\n itemBase: clsx(\n componentTextClass(componentTypographyTokens.command.item),\n \"flex w-full items-center gap-refineui-size-x-small rounded-refineui-large border-none bg-transparent\",\n \"px-refineui-size-x-small py-refineui-size-small text-start outline-none\",\n ),\n itemDisabled: \"cursor-not-allowed text-refineui-alias-foreground-disabled\",\n itemEnabled: \"cursor-pointer text-refineui-alias-foreground-primary\",\n iconWrap: \"inline-flex shrink-0 items-center justify-center text-current [&>span]:leading-none\",\n label: \"min-w-0 flex-1 truncate text-start\",\n rightWrap: \"ms-auto flex shrink-0 items-center gap-refineui-size-x-small\",\n shortcut: clsx(\n componentTextClass(componentTypographyTokens.command.shortcut),\n \"shrink-0 tracking-wide text-refineui-alias-foreground-tertiary\",\n ),\n} as const;\n","import { clsx } from \"clsx\";\nimport { Children, cloneElement, createContext, isValidElement, useContext, useState } from \"react\";\nimport type { ReactElement, ReactNode } from \"react\";\nimport { resolveColorTokenValue } from \"@refineui/utilities/color\";\nimport { componentColorTokens } from \"../../tokens/componentColorTokens\";\nimport { WebIcon } from \"../../WebIcon\";\nimport {\n AVATAR_INNER_MASK,\n avatarGroupCountTypo,\n avatarIconSlotSize,\n avatarSizeDim,\n avatarSizeVar,\n avatarSpreadGap,\n avatarStackOverlapCssVar,\n avatarStatusDim,\n avatarStatusPosition,\n avatarStatusSizeVar,\n avatarTypoNeutral,\n defaultPersonIconColor,\n avatarNeutralForegroundColor,\n normalizeAvatarColor,\n normalizeAvatarSize,\n resolveAvatarShellColorLayer,\n resolveAvatarShellStyle,\n type AvatarColor,\n type AvatarColorIcon,\n type AvatarColorImage,\n type AvatarColorInitials,\n type AvatarLayout,\n type AvatarSize,\n type NormalizedAvatarSize,\n} from \"./avatarStyles\";\nimport { AvatarStatusGraphic } from \"./avatarStatusGraphics\";\nimport { avatarStyles } from \"./style\";\nimport type {\n AvatarBadgeProps,\n AvatarFallbackProps,\n AvatarGroupCountProps,\n AvatarGroupProps,\n AvatarIconProps,\n AvatarImageProps,\n AvatarPresenceStatus,\n AvatarProps,\n AvatarTextProps,\n} from \"./types\";\n\nconst AvatarGroupContext = createContext<{ size: NormalizedAvatarSize; layout: \"stack\" | \"spread\" } | null>(null);\nconst AvatarShellSizeContext = createContext<NormalizedAvatarSize | null>(null);\n\nexport function AvatarIcon({ size: sizeProp, ...props }: AvatarIconProps) {\n const shell = useContext(AvatarShellSizeContext) ?? \"medium\";\n return <WebIcon size={sizeProp ?? avatarIconSlotSize[shell]} {...props} />;\n}\n\ntype ParsedSlots = {\n image?: ReactElement<AvatarImageProps>;\n fallback?: ReactNode;\n badge?: ReactNode;\n icon?: ReactElement<AvatarIconProps>;\n text?: ReactElement<AvatarTextProps>;\n leading: ReactNode[];\n};\n\nfunction parseAvatarSlots(nodes: readonly ReactNode[]): ParsedSlots {\n const leading: ReactNode[] = [];\n let image: ParsedSlots[\"image\"];\n let fallback: ReactNode;\n let badge: ReactNode;\n let icon: ParsedSlots[\"icon\"];\n let text: ParsedSlots[\"text\"];\n for (const c of nodes) {\n if (!isValidElement(c)) {\n leading.push(c);\n continue;\n }\n if (c.type === AvatarImage) image = c as ReactElement<AvatarImageProps>;\n else if (c.type === AvatarFallback) fallback = c;\n else if (c.type === AvatarBadge) badge = c;\n else if (c.type === AvatarIcon) icon = c as ReactElement<AvatarIconProps>;\n else if (c.type === AvatarText) text = c as ReactElement<AvatarTextProps>;\n else leading.push(c);\n }\n return { image, fallback, badge, icon, text, leading };\n}\n\nfunction initialsFromAlt(alt: string, layout: AvatarLayout | undefined, size: NormalizedAvatarSize): string {\n const parts = alt.trim().split(/\\s+/).filter(Boolean);\n const letters = parts.map((p) => p[0] ?? \"\").join(\"\").toUpperCase();\n const oneLetterTiers: readonly NormalizedAvatarSize[] = [\"xxxsmall\", \"xxsmall\", \"xsmall\"];\n const max = layout === \"initials\" ? 2 : oneLetterTiers.includes(size) ? 1 : 2;\n return letters.slice(0, max);\n}\n\nfunction builtInFallback(initials: string, color: AvatarColor, layout: AvatarLayout): ReactNode {\n if (layout === \"icon\") return <AvatarIcon name=\"person\" color={defaultPersonIconColor[color]} />;\n if (layout === \"initials\") return initials || null;\n if (initials) return initials;\n return <AvatarIcon name=\"person\" color={defaultPersonIconColor[color]} />;\n}\n\nexport function Avatar({\n src,\n alt = \"\",\n size = \"md\",\n layout,\n color,\n showStatus = false,\n status = \"online\",\n className,\n innerClassName,\n children,\n style,\n ...props\n}: AvatarProps) {\n const [imageError, setImageError] = useState(false);\n const normalizedSize = normalizeAvatarSize(size);\n const box = avatarSizeVar[normalizedSize];\n const { image, fallback, badge, icon, text, leading } = parseAvatarSlots(Children.toArray(children));\n const slotPreferredLayout: AvatarLayout = icon ? \"icon\" : text ? \"initials\" : \"image\";\n const initials = initialsFromAlt(alt, layout ?? slotPreferredLayout, normalizedSize);\n const effectiveSrc = image?.props.src ?? src;\n const effectiveAlt = image?.props.alt ?? alt;\n const showingImage = Boolean(effectiveSrc && !imageError);\n const resolvedLayout: AvatarLayout = showingImage\n ? \"image\"\n : icon\n ? \"icon\"\n : text\n ? \"initials\"\n : layout ?? (initials.length > 0 ? \"initials\" : \"icon\");\n const effectiveColor = normalizeAvatarColor(resolvedLayout, color);\n const useNeutralShellTypo =\n effectiveColor === \"neutral\" &&\n resolvedLayout !== \"icon\" &&\n !showingImage &&\n (resolvedLayout === \"image\" || resolvedLayout === \"initials\") &&\n !fallback &&\n initials.length > 0;\n const statusSlot = badge ?? (showStatus ? <AvatarBadge status={status} /> : null);\n const hasStatus = showStatus || isValidElement(badge);\n\n return (\n <AvatarShellSizeContext.Provider value={normalizedSize}>\n <div\n data-refineui=\"avatar\"\n data-avatar-color={effectiveColor}\n data-avatar-layout={resolvedLayout}\n data-show-status={hasStatus ? \"true\" : undefined}\n className={clsx(avatarStyles.root, avatarSizeDim[normalizedSize], className)}\n style={{ width: box, height: box, minWidth: box, minHeight: box, ...style }}\n {...props}\n >\n <div\n className={clsx(\n AVATAR_INNER_MASK,\n resolveAvatarShellColorLayer(effectiveColor, normalizedSize, resolvedLayout),\n useNeutralShellTypo && avatarTypoNeutral[normalizedSize],\n innerClassName,\n )}\n style={{\n ...resolveAvatarShellStyle(effectiveColor, resolvedLayout),\n ...(useNeutralShellTypo ? { color: avatarNeutralForegroundColor } : {}),\n }}\n >\n {leading}\n {showingImage ? (\n <img\n src={effectiveSrc!}\n alt={effectiveAlt}\n onError={() => setImageError(true)}\n className={clsx(avatarStyles.image, image?.props.className)}\n />\n ) : fallback ? (\n fallback\n ) : icon ? (\n cloneElement(icon, {\n color: icon.props.color ?? defaultPersonIconColor[effectiveColor as AvatarColorIcon],\n })\n ) : text ? (\n cloneElement(text, {\n children: text.props.children ?? initials,\n })\n ) : (\n builtInFallback(initials, effectiveColor, resolvedLayout)\n )}\n </div>\n {statusSlot}\n </div>\n </AvatarShellSizeContext.Provider>\n );\n}\n\nexport function AvatarImage(_props: AvatarImageProps) {\n return null;\n}\n\nexport function AvatarFallback({ className, ...props }: AvatarFallbackProps) {\n return (\n <span\n className={clsx(avatarStyles.fallback, className)}\n {...props}\n />\n );\n}\n\nexport function AvatarText({ className, ...props }: AvatarTextProps) {\n return <span className={clsx(avatarStyles.text, className)} {...props} />;\n}\n\nexport function AvatarBadge({ className, status = \"online\", style, ...props }: AvatarBadgeProps) {\n const shell = useContext(AvatarShellSizeContext) ?? \"medium\";\n const box = avatarStatusSizeVar[shell];\n return (\n <span\n className={clsx(\n avatarStyles.badge,\n avatarStatusPosition[shell],\n avatarStatusDim[shell],\n className,\n )}\n data-avatar-status={status}\n style={{ width: box, height: box, minWidth: box, minHeight: box, ...style }}\n {...props}\n >\n <AvatarStatusGraphic status={status} />\n </span>\n );\n}\n\nexport function AvatarGroup({\n size = \"md\",\n layout = \"stack\",\n className,\n children,\n style,\n ...props\n}: AvatarGroupProps) {\n const list = Children.toArray(children);\n const normalizedSize = normalizeAvatarSize(size);\n return (\n <AvatarGroupContext.Provider value={{ size: normalizedSize, layout }}>\n <div\n {...props}\n data-refineui=\"avatars\"\n data-layout={layout}\n data-avatar-stack-size={normalizedSize}\n className={clsx(\n avatarStyles.groupRoot,\n layout === \"stack\" ? \"gap-0\" : avatarSpreadGap[normalizedSize],\n className,\n )}\n style={{\n ...(layout === \"stack\" ? { [\"--avatar-stack-overlap\" as string]: avatarStackOverlapCssVar[normalizedSize] } : {}),\n ...style,\n }}\n >\n {list.map((child, index) => {\n const isCount = isValidElement(child) && child.type === AvatarGroupCount;\n const z = layout === \"stack\" ? index : undefined;\n if (isCount) {\n return (\n <div key={`count-${index}`} className={avatarStyles.groupCountWrap} style={{ zIndex: z }}>\n {child}\n </div>\n );\n }\n return (\n <div key={`avatar-${index}`} className={avatarStyles.groupAvatarWrap} style={{ zIndex: z }}>\n {child}\n </div>\n );\n })}\n </div>\n </AvatarGroupContext.Provider>\n );\n}\n\nexport function AvatarGroupCount({ className, ...props }: AvatarGroupCountProps) {\n const ctx = useContext(AvatarGroupContext);\n const size = ctx?.size ?? \"medium\";\n const groupCountBg = resolveColorTokenValue(componentColorTokens.avatar.groupCount.background);\n const groupCountBorder = resolveColorTokenValue(componentColorTokens.avatar.groupCount.border);\n const groupCountFg = resolveColorTokenValue(componentColorTokens.avatar.groupCount.foreground);\n return (\n <span\n className={clsx(\n avatarStyles.groupCount,\n avatarSizeDim[size],\n avatarGroupCountTypo[size],\n className,\n )}\n style={{\n backgroundColor: groupCountBg,\n borderColor: groupCountBorder,\n color: groupCountFg,\n }}\n {...props}\n />\n );\n}\n","import { iconSizes } from \"@refineui/tokens\";\nimport { resolveColorTokenValue } from \"@refineui/utilities/color\";\nimport { componentColorTokens } from \"../../tokens/componentColorTokens\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { buildSemanticTextClassMap, componentTextClass } from \"../../typography\";\nimport type { CSSProperties } from \"react\";\n\nexport type NormalizedAvatarSize =\n | \"xxxsmall\"\n | \"xxsmall\"\n | \"xsmall\"\n | \"small\"\n | \"medium\"\n | \"large\"\n | \"xlarge\"\n | \"xxlarge\"\n | \"xxxlarge\";\n\nexport type AvatarSize =\n | \"3xs\"\n | \"2xs\"\n | \"xs\"\n | \"sm\"\n | \"md\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\";\n\nconst avatarSizeAliasMap: Record<AvatarSize, NormalizedAvatarSize> = {\n \"3xs\": \"xxxsmall\",\n \"2xs\": \"xxsmall\",\n xs: \"xsmall\",\n sm: \"small\",\n md: \"medium\",\n lg: \"large\",\n xl: \"xlarge\",\n \"2xl\": \"xxlarge\",\n \"3xl\": \"xxxlarge\",\n};\n\nexport function normalizeAvatarSize(size: AvatarSize): NormalizedAvatarSize {\n return avatarSizeAliasMap[size];\n}\n\n/** MCP / Figma `Avatar` `layout` */\nexport type AvatarLayout = \"image\" | \"icon\" | \"initials\";\n\nexport type AvatarColorImage = \"neutral\";\n\nexport type AvatarColorIcon =\n | \"blue\"\n | \"green\"\n | \"lime\"\n | \"magenta\"\n | \"neutral\"\n | \"orange\"\n | \"purple\"\n | \"red\"\n | \"teal\"\n | \"yellow\";\n\nexport type AvatarColorInitials = AvatarColorIcon;\n\nexport type AvatarColor = AvatarColorImage | AvatarColorIcon;\n\nconst ICON_INITIALS_PALETTE: readonly AvatarColorIcon[] = [\n \"blue\",\n \"green\",\n \"lime\",\n \"magenta\",\n \"neutral\",\n \"orange\",\n \"purple\",\n \"red\",\n \"teal\",\n \"yellow\",\n];\n\nfunction isAvatarColorIcon(c: string): c is AvatarColorIcon {\n return (ICON_INITIALS_PALETTE as readonly string[]).includes(c);\n}\n\nexport function normalizeAvatarColor(layout: AvatarLayout | undefined, color: AvatarColor | undefined): AvatarColor {\n if (layout === \"image\" || layout === undefined) return \"neutral\";\n const c = color ?? \"neutral\";\n if (layout === \"icon\" || layout === \"initials\") {\n return isAvatarColorIcon(c) ? c : \"neutral\";\n }\n return \"neutral\";\n}\n\n/** Figma `Global/Size/{n}` → CSS var (Avatar shell — do not rely only on Tailwind `size-*`). */\nexport const avatarSizeVar: Record<NormalizedAvatarSize, string> = {\n xxxsmall: \"var(--refineui-size-foundation-size-160)\",\n xxsmall: \"var(--refineui-size-foundation-size-200)\",\n xsmall: \"var(--refineui-size-foundation-size-240)\",\n small: \"var(--refineui-size-foundation-size-280)\",\n medium: \"var(--refineui-size-foundation-size-320)\",\n large: \"var(--refineui-size-foundation-size-360)\",\n xlarge: \"var(--refineui-size-foundation-size-480)\",\n xxlarge: \"var(--refineui-size-foundation-size-540)\",\n xxxlarge: \"var(--refineui-size-foundation-size-600)\",\n};\n\n/** Tailwind mirror of `avatarSizeVar` (optional; var styles are authoritative). */\nexport const avatarSizeDim: Record<NormalizedAvatarSize, string> = {\n xxxsmall: \"size-refineui-foundation-size-160\",\n xxsmall: \"size-refineui-foundation-size-200\",\n xsmall: \"size-refineui-foundation-size-240\",\n small: \"size-refineui-foundation-size-280\",\n medium: \"size-refineui-foundation-size-320\",\n large: \"size-refineui-foundation-size-360\",\n xlarge: \"size-refineui-foundation-size-480\",\n xxlarge: \"size-refineui-foundation-size-540\",\n xxxlarge: \"size-refineui-foundation-size-600\",\n};\n\nexport const avatarTypoNeutral = buildSemanticTextClassMap(\n componentTypographyTokens.avatar.initialsNeutral,\n);\n\nexport const avatarIconSlotSize: Record<NormalizedAvatarSize, number> = {\n xxxsmall: iconSizes.xxsmall,\n xxsmall: iconSizes.xsmall,\n xsmall: iconSizes.small,\n small: iconSizes.small,\n medium: iconSizes.medium,\n large: iconSizes.medium,\n xlarge: iconSizes.large,\n xxlarge: iconSizes.xlarge,\n xxxlarge: iconSizes.xxlarge,\n};\n\nexport const AVATAR_INNER_MASK =\n \"relative flex size-full min-h-0 min-w-0 items-center justify-center overflow-hidden rounded-refineui-circle\";\n\nfunction initialsAccentTypo(size: NormalizedAvatarSize): string {\n const tokens = componentTypographyTokens.avatar.initialsAccent;\n if (size === \"xxxlarge\") return componentTextClass(tokens.xxxlarge);\n if (size === \"xxlarge\") return componentTextClass(tokens.xxlarge);\n if (size === \"xlarge\") return componentTextClass(tokens.xlarge);\n return componentTextClass(tokens.default);\n}\n\nconst avatarShellBackgroundColor: Record<AvatarColor, string> = {\n neutral: resolveColorTokenValue(componentColorTokens.avatar.shell.background.neutral),\n blue: resolveColorTokenValue(componentColorTokens.avatar.shell.background.blue),\n green: resolveColorTokenValue(componentColorTokens.avatar.shell.background.green),\n lime: resolveColorTokenValue(componentColorTokens.avatar.shell.background.lime),\n magenta: resolveColorTokenValue(componentColorTokens.avatar.shell.background.magenta),\n orange: resolveColorTokenValue(componentColorTokens.avatar.shell.background.orange),\n purple: resolveColorTokenValue(componentColorTokens.avatar.shell.background.purple),\n red: resolveColorTokenValue(componentColorTokens.avatar.shell.background.red),\n teal: resolveColorTokenValue(componentColorTokens.avatar.shell.background.teal),\n yellow: resolveColorTokenValue(componentColorTokens.avatar.shell.background.yellow),\n};\n\nconst avatarShellInitialsForegroundColor: Record<AvatarColor, string> = {\n neutral: resolveColorTokenValue(componentColorTokens.avatar.icon.neutral),\n blue: resolveColorTokenValue(componentColorTokens.avatar.icon.blue),\n green: resolveColorTokenValue(componentColorTokens.avatar.icon.green),\n lime: resolveColorTokenValue(componentColorTokens.avatar.icon.lime),\n magenta: resolveColorTokenValue(componentColorTokens.avatar.icon.magenta),\n orange: resolveColorTokenValue(componentColorTokens.avatar.icon.orange),\n purple: resolveColorTokenValue(componentColorTokens.avatar.icon.purple),\n red: resolveColorTokenValue(componentColorTokens.avatar.icon.red),\n teal: resolveColorTokenValue(componentColorTokens.avatar.icon.teal),\n yellow: resolveColorTokenValue(componentColorTokens.avatar.icon.yellow),\n};\n\nexport const avatarNeutralForegroundColor = resolveColorTokenValue(componentColorTokens.avatar.icon.neutral);\n\nexport function resolveAvatarShellStyle(\n color: AvatarColor,\n layout: AvatarLayout | undefined,\n): CSSProperties {\n if (layout === \"initials\") {\n return {\n backgroundColor: avatarShellBackgroundColor[color],\n color: avatarShellInitialsForegroundColor[color],\n };\n }\n\n return {\n backgroundColor: avatarShellBackgroundColor[color],\n };\n}\n\nexport function resolveAvatarShellColorLayer(\n _color: AvatarColor,\n size: NormalizedAvatarSize,\n layout: AvatarLayout | undefined,\n): string {\n if (layout === \"initials\") {\n return initialsAccentTypo(size);\n }\n return \"\";\n}\n\nexport const defaultPersonIconColor: Record<AvatarColorIcon, string> = {\n neutral: resolveColorTokenValue(componentColorTokens.avatar.icon.neutral),\n blue: resolveColorTokenValue(componentColorTokens.avatar.icon.blue),\n green: resolveColorTokenValue(componentColorTokens.avatar.icon.green),\n lime: resolveColorTokenValue(componentColorTokens.avatar.icon.lime),\n magenta: resolveColorTokenValue(componentColorTokens.avatar.icon.magenta),\n orange: resolveColorTokenValue(componentColorTokens.avatar.icon.orange),\n purple: resolveColorTokenValue(componentColorTokens.avatar.icon.purple),\n red: resolveColorTokenValue(componentColorTokens.avatar.icon.red),\n teal: resolveColorTokenValue(componentColorTokens.avatar.icon.teal),\n yellow: resolveColorTokenValue(componentColorTokens.avatar.icon.yellow),\n};\n\n/** `AvatarOverflow` more-horizontal */\nexport const avatarOverflowIconSize: Record<NormalizedAvatarSize, number> = {\n xxxsmall: iconSizes.xsmall,\n xxsmall: iconSizes.xsmall,\n xsmall: iconSizes.small,\n small: iconSizes.small,\n medium: iconSizes.medium,\n large: iconSizes.medium,\n xlarge: iconSizes.large,\n xxlarge: iconSizes.xlarge,\n xxxlarge: iconSizes.xxlarge,\n};\n\n/** `AvatarGroup` `layout=\"spread\"` — Web Kit `Avatar` Spread `69:3007` */\nexport const avatarSpreadGap: Record<NormalizedAvatarSize, string> = {\n xxxsmall: \"gap-refineui-size-xx-small\",\n xxsmall: \"gap-refineui-size-xx-small\",\n xsmall: \"gap-refineui-size-x-small\",\n small: \"gap-refineui-size-medium\",\n medium: \"gap-refineui-size-medium\",\n large: \"gap-refineui-size-large\",\n xlarge: \"gap-refineui-size-large\",\n xxlarge: \"gap-refineui-size-x-large\",\n xxxlarge: \"gap-refineui-size-x-large\",\n};\n\nexport const avatarGroupCountTypo = buildSemanticTextClassMap(\n componentTypographyTokens.avatar.groupCount,\n);\n\nexport const avatarStatusPosition: Record<NormalizedAvatarSize, string> = {\n xxxsmall: \"bottom-0 end-0\",\n xxsmall: \"bottom-0 end-0\",\n xsmall: \"bottom-px end-px\",\n small: \"bottom-px end-px\",\n medium: \"bottom-px end-px\",\n large: \"bottom-px end-px\",\n xlarge: \"bottom-px end-px\",\n xxlarge: \"bottom-0 end-0\",\n xxxlarge: \"bottom-[-2px] end-[-2px]\",\n};\n\nexport const avatarStatusDim: Record<NormalizedAvatarSize, string> = {\n xxxsmall: \"size-refineui-foundation-size-40\",\n xxsmall: \"size-refineui-foundation-size-60\",\n xsmall: \"size-refineui-foundation-size-60\",\n small: \"size-refineui-foundation-size-60\",\n medium: \"size-refineui-foundation-size-80\",\n large: \"size-refineui-foundation-size-100\",\n xlarge: \"size-refineui-foundation-size-120\",\n xxlarge: \"size-refineui-foundation-size-120\",\n xxxlarge: \"size-refineui-avatar-status-xxxlarge\",\n};\n\n/** Status dot CSS vars — prevents SVG default ~300px when Tailwind `size-*` is missing. */\nexport const avatarStatusSizeVar: Record<NormalizedAvatarSize, string> = {\n xxxsmall: \"var(--refineui-size-foundation-size-40)\",\n xxsmall: \"var(--refineui-size-foundation-size-60)\",\n xsmall: \"var(--refineui-size-foundation-size-60)\",\n small: \"var(--refineui-size-foundation-size-60)\",\n medium: \"var(--refineui-size-foundation-size-80)\",\n large: \"var(--refineui-size-foundation-size-100)\",\n xlarge: \"var(--refineui-size-foundation-size-120)\",\n xxlarge: \"var(--refineui-size-foundation-size-120)\",\n xxxlarge: \"var(--refineui-size-avatar-status-xxxlarge)\",\n};\n\nexport const avatarStackOverlapCssVar: Record<NormalizedAvatarSize, string> = {\n xxxsmall: \"var(--refineui-size-foundation-size-40)\",\n xxsmall: \"var(--refineui-size-foundation-size-40)\",\n xsmall: \"var(--refineui-size-foundation-size-40)\",\n small: \"var(--refineui-size-foundation-size-60)\",\n medium: \"var(--refineui-size-foundation-size-60)\",\n large: \"var(--refineui-size-foundation-size-80)\",\n xlarge: \"var(--refineui-size-foundation-size-100)\",\n xxlarge: \"var(--refineui-size-foundation-size-100)\",\n xxxlarge: \"var(--refineui-size-foundation-size-120)\",\n};\n","import type { SVGProps } from \"react\";\nimport { useId } from \"react\";\nimport { clsx } from \"clsx\";\nimport { resolveColorTokenValue } from \"@refineui/utilities/color\";\nimport { componentColorTokens } from \"../../tokens/componentColorTokens\";\n\nexport type AvatarStatusGraphicStatus = \"online\" | \"away\" | \"unavailable\" | \"offline\";\n\ntype Props = {\n status: AvatarStatusGraphicStatus;\n} & Omit<SVGProps<SVGSVGElement>, \"children\" | \"viewBox\">;\n\nexport function AvatarStatusGraphic({ status, className, ...props }: Props) {\n const uid = useId().replace(/:/g, \"\");\n const clipId = `avatar-status-clip-${uid}`;\n const cn = clsx(\"block size-full max-h-full max-w-full shrink-0\", className);\n\n switch (status) {\n case \"online\":\n return (\n <svg viewBox=\"0 0 14 14\" className={cn} aria-hidden {...props}>\n <g clipPath={`url(#${clipId}-online)`}>\n <circle cx=\"7\" cy=\"7\" r=\"7\" fill={resolveColorTokenValue(componentColorTokens.avatar.status.online)} />\n </g>\n <defs>\n <clipPath id={`${clipId}-online`}>\n <rect width=\"14\" height=\"14\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n case \"away\":\n return (\n <svg viewBox=\"0 0 14 14\" className={cn} aria-hidden {...props}>\n <g clipPath={`url(#${clipId}-away)`}>\n <path\n d=\"M8.92116 0C11.8596 0.889805 14 3.61568 14 6.84512C14 10.7966 10.7972 14 6.84631 14C3.61717 14 0.889453 11.8596 0 8.92031C0.657662 9.11969 1.35442 9.23008 2.07718 9.23008C6.02805 9.23008 9.23087 6.02673 9.23087 2.0752C9.23087 1.3531 9.12008 0.657147 8.92116 0Z\"\n fill={resolveColorTokenValue(componentColorTokens.avatar.status.away)}\n />\n </g>\n <defs>\n <clipPath id={`${clipId}-away`}>\n <rect width=\"14\" height=\"14\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n case \"unavailable\":\n return (\n <svg viewBox=\"0 0 14 14\" className={cn} aria-hidden {...props}>\n <g clipPath={`url(#${clipId}-unav)`}>\n <path\n d=\"M14 7C14 10.866 10.866 14 7 14C3.13401 14 0 10.866 0 7C0 3.13401 3.13401 0 7 0C10.866 0 14 3.13401 14 7Z\"\n fill={resolveColorTokenValue(componentColorTokens.avatar.status.unavailable.background)}\n />\n <path\n d=\"M2.33333 7C2.33333 6.35567 2.85567 5.83333 3.5 5.83333H10.5C11.1443 5.83333 11.6667 6.35567 11.6667 7C11.6667 7.64433 11.1443 8.16667 10.5 8.16667H3.5C2.85567 8.16667 2.33333 7.64433 2.33333 7Z\"\n fill={resolveColorTokenValue(componentColorTokens.avatar.status.unavailable.mark)}\n />\n </g>\n <defs>\n <clipPath id={`${clipId}-unav`}>\n <rect width=\"14\" height=\"14\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n case \"offline\":\n return (\n <svg viewBox=\"0 0 14 14\" className={cn} aria-hidden {...props}>\n <g clipPath={`url(#${clipId}-off)`}>\n <circle cx=\"7\" cy=\"7\" r=\"7\" fill={resolveColorTokenValue(componentColorTokens.avatar.status.offline)} />\n </g>\n <defs>\n <clipPath id={`${clipId}-off`}>\n <rect width=\"14\" height=\"14\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n }\n}\n","export const avatarStyles = {\n root: \"relative shrink-0\",\n image: \"size-full object-cover\",\n fallback: \"inline-flex size-full items-center justify-center\",\n text: \"inline-flex size-full items-center justify-center\",\n badge:\n \"pointer-events-none absolute z-refineui-content inline-flex items-center justify-center overflow-hidden rounded-refineui-circle bg-transparent\",\n groupRoot: \"flex items-center\",\n groupCountWrap: \"shrink-0\",\n groupAvatarWrap: \"relative shrink-0\",\n groupCount:\n \"relative box-border inline-flex items-center justify-center rounded-refineui-circle border-refineui-thin font-medium\",\n} as const;\n\n","import { clsx } from \"clsx\";\nimport { Avatar } from \"../Avatar\";\nimport {\n avatarStackOverlapCssVar,\n normalizeAvatarSize,\n} from \"../Avatar/avatarStyles\";\nimport { avatarsCountSizeBySize, avatarsCountTypoBySize, avatarsSpreadGapBySize, avatarsStyles } from \"./style\";\nimport type { AvatarsProps } from \"./types\";\n\nexport function Avatars({\n avatars,\n size = \"md\",\n max = 4,\n layout = \"stack\",\n className,\n style,\n ...props\n}: AvatarsProps) {\n const display = avatars.slice(0, max);\n const remainder = avatars.length > max ? avatars.length - max : 0;\n const isStack = layout === \"stack\";\n const normalizedSize = normalizeAvatarSize(size);\n\n return (\n <div\n {...props}\n data-refineui=\"avatars\"\n data-layout={layout}\n data-avatar-stack-size={normalizedSize}\n className={clsx(avatarsStyles.root, isStack ? \"gap-0\" : avatarsSpreadGapBySize[normalizedSize], className)}\n style={{\n ...(isStack ? { [\"--avatar-stack-overlap\" as string]: avatarStackOverlapCssVar[normalizedSize] } : {}),\n ...style,\n }}\n >\n {display.map((a, i) => (\n <div key={i} className={avatarsStyles.avatarWrap} style={isStack ? { zIndex: i } : undefined}>\n <Avatar src={a.src} alt={a.alt} size={size} />\n </div>\n ))}\n {remainder > 0 && (\n <div\n className={clsx(\n avatarsStyles.overflowCount,\n avatarsCountSizeBySize[normalizedSize],\n avatarsCountTypoBySize[normalizedSize],\n )}\n style={isStack ? { zIndex: display.length } : undefined}\n >\n +{remainder}\n </div>\n )}\n </div>\n );\n}\n","import type { NormalizedAvatarSize } from \"../Avatar/avatarStyles\";\nimport { avatarGroupCountTypo, avatarSizeDim, avatarSpreadGap } from \"../Avatar/avatarStyles\";\n\nexport const avatarsStyles = {\n root: \"flex items-center\",\n avatarWrap: \"relative shrink-0\",\n overflowCount:\n \"relative box-border flex shrink-0 items-center justify-center rounded-refineui-circle border-refineui-thin border-refineui-alias-border-default bg-refineui-alias-background-primary font-medium text-refineui-alias-foreground-secondary\",\n} as const;\n\nexport const avatarsSpreadGapBySize: Record<NormalizedAvatarSize, string> = avatarSpreadGap;\nexport const avatarsCountSizeBySize: Record<NormalizedAvatarSize, string> = avatarSizeDim;\nexport const avatarsCountTypoBySize: Record<NormalizedAvatarSize, string> = avatarGroupCountTypo;\n\n","import { clsx } from \"clsx\";\nimport { iconSizes } from \"@refineui/tokens\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { Button } from \"../Button\";\nimport { AlertContext, useAlertVariant } from \"./context\";\nimport { alertVariantIcons, resolveAlertSlotClasses } from \"./style\";\nimport type {\n AlertActionProps,\n AlertActionsProps,\n AlertBodyProps,\n AlertCloseProps,\n AlertContentProps,\n AlertIconProps,\n AlertProps,\n AlertRowProps,\n} from \"./types\";\n\nexport function AlertIcon({ className, name, children, ...props }: AlertIconProps) {\n const variant = useAlertVariant();\n const iconName = name ?? alertVariantIcons[variant];\n return (\n <div\n data-refineui=\"alert-icon\"\n className={clsx(resolveAlertSlotClasses(\"icon\", variant), className)}\n {...props}\n >\n {children ?? (\n <WebIcon name={iconName} size={iconSizes.medium} color=\"currentColor\" fallback=\"●\" aria-hidden />\n )}\n </div>\n );\n}\n\nexport function AlertContent({ className, ...props }: AlertContentProps) {\n const variant = useAlertVariant();\n return (\n <div\n data-refineui=\"alert-content\"\n className={clsx(resolveAlertSlotClasses(\"content\", variant), className)}\n {...props}\n />\n );\n}\n\nexport function AlertRow({ className, ...props }: AlertRowProps) {\n const variant = useAlertVariant();\n return (\n <div\n data-refineui=\"alert-row\"\n className={clsx(resolveAlertSlotClasses(\"row\", variant), className)}\n {...props}\n />\n );\n}\n\nexport function AlertBody({ className, ...props }: AlertBodyProps) {\n const variant = useAlertVariant();\n return (\n <div\n data-refineui=\"alert-body\"\n className={clsx(resolveAlertSlotClasses(\"body\", variant), className)}\n {...props}\n />\n );\n}\n\nexport function AlertActions({ className, ...props }: AlertActionsProps) {\n const variant = useAlertVariant();\n return (\n <div\n data-refineui=\"alert-actions\"\n className={clsx(resolveAlertSlotClasses(\"actions\", variant), className)}\n {...props}\n />\n );\n}\n\nexport function AlertAction({ className, type = \"button\", ...props }: AlertActionProps) {\n const variant = useAlertVariant();\n return (\n <Button\n type={type}\n className={clsx(resolveAlertSlotClasses(\"action\", variant), className)}\n {...props}\n variant=\"primary\"\n size=\"sm\"\n />\n );\n}\n\nexport function AlertClose({ className, type = \"button\", children, ...props }: AlertCloseProps) {\n const variant = useAlertVariant();\n return (\n <Button\n type={type}\n variant=\"ghost\"\n size=\"sm\"\n layout=\"icon\"\n aria-label=\"Close\"\n className={clsx(resolveAlertSlotClasses(\"close\", variant), className)}\n {...props}\n >\n {children ?? (\n <WebIcon\n name=\"dismiss\"\n size={iconSizes.small}\n color=\"currentColor\"\n iconStyle=\"regular\"\n fallback=\"×\"\n aria-hidden\n />\n )}\n </Button>\n );\n}\n\nexport function Alert({ variant = \"info\", className, children, ...props }: AlertProps) {\n return (\n <AlertContext.Provider value={variant}>\n <div\n data-refineui=\"alert\"\n data-variant={variant}\n role=\"alert\"\n className={clsx(resolveAlertSlotClasses(\"root\", variant), className)}\n {...props}\n >\n <AlertContent>{children}</AlertContent>\n </div>\n </AlertContext.Provider>\n );\n}\n","import { createContext, useContext } from \"react\";\nimport type { AlertVariant } from \"./types\";\n\nexport const AlertContext = createContext<AlertVariant | null>(null);\n\nexport function useAlertVariant(): AlertVariant {\n return useContext(AlertContext) ?? \"info\";\n}\n\n","/**\n * Alert slot recipe — visual mapping only.\n * Contract (anatomy, states, a11y): packages/react/spec/components/alert.json\n * Tokens: componentColorTokens.alert → semantic aliases\n */\nimport { componentTypographyTokens } from \"../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../typography\";\nimport { defineSlotRecipe, resolveSlotClasses } from \"./types\";\nimport type { AlertVariant } from \"../components/Alert/types\";\n\nconst titleTypography = componentTextClass(componentTypographyTokens.alert.title);\nconst descriptionTypography = componentTextClass(componentTypographyTokens.alert.description);\n\n/** Semantic alias classes aligned with componentColorTokens.alert.accent / .description */\nconst variantSlotClasses: Record<AlertVariant, Readonly<Record<string, string>>> = {\n default: {\n root: \"bg-refineui-alias-background-primary\",\n icon: \"text-refineui-alias-foreground-primary\",\n title: \"text-refineui-alias-foreground-primary\",\n description: \"text-refineui-alias-foreground-secondary\",\n },\n info: {\n root: \"bg-refineui-alias-background-primary\",\n icon: \"text-refineui-alias-foreground-info\",\n title: \"text-refineui-alias-foreground-info\",\n description: \"text-refineui-alias-background-info\",\n },\n success: {\n root: \"bg-refineui-alias-background-primary\",\n icon: \"text-refineui-alias-foreground-success\",\n title: \"text-refineui-alias-foreground-success\",\n description: \"text-refineui-alias-background-success\",\n },\n warning: {\n root: \"bg-refineui-alias-background-primary\",\n icon: \"text-refineui-alias-foreground-warning\",\n title: \"text-refineui-alias-foreground-warning\",\n description: \"text-refineui-alias-background-warning\",\n },\n danger: {\n root: \"bg-refineui-alias-background-error-subtle\",\n icon: \"text-refineui-alias-foreground-error\",\n title: \"text-refineui-alias-foreground-error\",\n description: \"text-refineui-alias-background-error\",\n },\n custom: {\n root: \"bg-refineui-alias-background-primary\",\n icon: \"text-refineui-alias-foreground-discovery\",\n title: \"text-refineui-alias-foreground-discovery\",\n description: \"text-refineui-alias-background-discovery\",\n },\n};\n\nexport const alertRecipe = defineSlotRecipe({\n name: \"alert\",\n slots: [\n \"root\",\n \"icon\",\n \"content\",\n \"row\",\n \"body\",\n \"title\",\n \"description\",\n \"actions\",\n \"action\",\n \"close\",\n ],\n base: {\n root: \"box-border flex items-start border-refineui-thin border-refineui-alias-border-default px-refineui-size-large py-refineui-size-medium\",\n icon: \"relative box-border flex size-refineui-size-xx-large min-w-refineui-size-xx-large shrink-0 items-center justify-center overflow-hidden rounded-refineui-circle\",\n content: \"flex min-w-0 flex-1 flex-col gap-refineui-size-medium\",\n row: \"flex w-full flex-row items-start gap-refineui-size-medium\",\n body: \"flex min-w-0 flex-1 flex-col gap-refineui-size-xx-small\",\n title: `${titleTypography} m-0 w-full min-w-0 font-medium`,\n description: `${descriptionTypography} w-full min-w-0 font-medium`,\n actions: \"flex w-full flex-row flex-wrap items-center justify-end gap-refineui-size-medium\",\n action: \"\",\n close: \"\",\n },\n variants: {\n variant: {\n default: variantSlotClasses.default,\n info: variantSlotClasses.info,\n success: variantSlotClasses.success,\n warning: variantSlotClasses.warning,\n danger: variantSlotClasses.danger,\n custom: variantSlotClasses.custom,\n },\n },\n defaultVariants: {\n variant: \"info\",\n },\n});\n\nexport const alertVariantIcons: Record<AlertVariant, string> = {\n default: \"circle\",\n info: \"info\",\n success: \"checkmark\",\n warning: \"warning\",\n danger: \"error-circle\",\n custom: \"star\",\n};\n\nexport function resolveAlertSlotClasses(\n slot: string,\n variant: AlertVariant,\n): string {\n return resolveSlotClasses(alertRecipe, slot, { variant });\n}\n\n/** Static base slot classes (variant-agnostic) — for docs and style re-exports. */\nexport const alertStyles = {\n root: alertRecipe.base.root,\n icon: alertRecipe.base.icon,\n content: alertRecipe.base.content,\n row: alertRecipe.base.row,\n body: alertRecipe.base.body,\n title: alertRecipe.base.title,\n description: alertRecipe.base.description,\n actions: alertRecipe.base.actions,\n action: alertRecipe.base.action,\n close: alertRecipe.base.close,\n} as const;\n\nexport { variantSlotClasses as alertVariantSlotClasses };\n","import { clsx } from \"clsx\";\nimport { useAlertVariant } from \"./context\";\nimport { resolveAlertSlotClasses } from \"./style\";\nimport type { AlertTitleProps } from \"./types\";\n\nexport function AlertTitle({ className, ...props }: AlertTitleProps) {\n const variant = useAlertVariant();\n return (\n <h5\n data-refineui=\"alert-title\"\n className={clsx(resolveAlertSlotClasses(\"title\", variant), className)}\n {...props}\n />\n );\n}\n","import { clsx } from \"clsx\";\nimport { useAlertVariant } from \"./context\";\nimport { resolveAlertSlotClasses } from \"./style\";\nimport type { AlertDescriptionProps } from \"./types\";\n\nexport function AlertDescription({ className, ...props }: AlertDescriptionProps) {\n const variant = useAlertVariant();\n return (\n <div\n data-refineui=\"alert-description\"\n className={clsx(resolveAlertSlotClasses(\"description\", variant), className)}\n {...props}\n />\n );\n}\n","import { clsx } from \"clsx\";\nimport { progressStyles } from \"./style\";\nimport type { ProgressProps } from \"./types\";\n\nexport function Progress({\n value,\n max = 100,\n size = \"sm\",\n className,\n ...props\n}: ProgressProps) {\n const pct = Math.min(100, Math.max(0, (value / max) * 100));\n return (\n <div\n data-refineui=\"progress\"\n data-size={size}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n className={clsx(\n progressStyles.root,\n size === \"lg\" ? progressStyles.sizeLg : progressStyles.sizeSm,\n className,\n )}\n {...props}\n >\n <div\n className={progressStyles.bar}\n style={{ width: `${pct}%` }}\n />\n </div>\n );\n}\n","export const progressStyles = {\n root: \"w-full min-w-0 overflow-hidden rounded-refineui-circle bg-refineui-alias-background-brand-subtle\",\n sizeSm: \"h-refineui-progress-track-height-sm\",\n sizeLg: \"h-refineui-progress-track-height-lg\",\n bar: \"h-full rounded-refineui-circle bg-refineui-alias-background-brand transition-[width] duration-[var(--refineui-motion-duration-panel)] ease-[var(--refineui-motion-easing-ease-out)]\",\n} as const;\n","import { clsx } from \"clsx\";\nimport {\n Children,\n createContext,\n isValidElement,\n useCallback,\n useContext,\n useMemo,\n useState,\n type KeyboardEvent,\n type ReactNode,\n} from \"react\";\nimport { progressStepperStyles, progressStepperVars } from \"./style\";\nimport type {\n ProgressStepperItemProps,\n ProgressStepperLabelProps,\n ProgressStepperListProps,\n ProgressStepperMarkerProps,\n ProgressStepperProps,\n ProgressStepperState,\n} from \"./types\";\n\ntype ProgressStepperContextValue = {\n value: number;\n setValue: (next: number) => void;\n interactive: boolean;\n};\n\ntype ProgressStepperItemContextValue = {\n state: ProgressStepperState;\n disabled: boolean;\n markerLeft: string;\n};\n\ntype ProgressStepperListLayout = {\n count: number;\n sorted: number[];\n};\n\nconst ProgressStepperContext = createContext<ProgressStepperContextValue | null>(null);\nconst ProgressStepperItemContext = createContext<ProgressStepperItemContextValue | null>(null);\nconst ProgressStepperListLayoutContext = createContext<ProgressStepperListLayout | null>(null);\n\nfunction useProgressStepperContext(component: string): ProgressStepperContextValue {\n const v = useContext(ProgressStepperContext);\n if (!v) throw new Error(`${component} must be used within ProgressStepper.`);\n return v;\n}\n\nfunction useProgressStepperItemContext(component: string): ProgressStepperItemContextValue {\n const v = useContext(ProgressStepperItemContext);\n if (!v) throw new Error(`${component} must be used within ProgressStepperItem.`);\n return v;\n}\n\nfunction resolveState(itemValue: number, active: number): ProgressStepperState {\n if (itemValue < active) return \"complete\";\n if (itemValue === active) return \"current\";\n return \"upcoming\";\n}\n\nfunction readItemValues(children: ReactNode): number[] {\n return Children.toArray(children).flatMap((child) => {\n if (!isValidElement(child)) return [];\n const value = (child.props as { value?: unknown }).value;\n return typeof value === \"number\" ? [value] : [];\n });\n}\n\n/**\n * Fill stays a pill. Width = current pip right + track/2 (the fill cap radius).\n */\nfunction pipLeftForIndex(index: number, count: number): string {\n const inset = \"var(--refineui-progress-stepper-inset)\";\n const pip = \"var(--refineui-progress-stepper-pip)\";\n if (count <= 1) return inset;\n return `calc(${inset} + ${index} * (100% - ${inset} - ${inset} - ${pip}) / ${count - 1})`;\n}\n\nfunction fillWidthForStep(index: number, count: number): string {\n const inset = \"var(--refineui-progress-stepper-inset)\";\n const pip = \"var(--refineui-progress-stepper-pip)\";\n const cap = \"var(--refineui-progress-stepper-track)\";\n if (count <= 1 || index >= count - 1) return \"100%\";\n return `calc(${inset} + ${index} * (100% - ${inset} - ${inset} - ${pip}) / ${count - 1} + ${pip} + (${cap} / 2))`;\n}\n\nexport function ProgressStepper({\n children,\n className,\n style,\n value: valueControlled,\n defaultValue = 0,\n onValueChange,\n ...props\n}: ProgressStepperProps) {\n const isControlled = valueControlled !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue);\n const value = isControlled ? valueControlled! : internalValue;\n\n const setValue = useCallback(\n (next: number) => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n },\n [isControlled, onValueChange],\n );\n\n const ctx = useMemo(\n () => ({\n value,\n setValue,\n interactive: typeof onValueChange === \"function\" || !isControlled,\n }),\n [value, setValue, onValueChange, isControlled],\n );\n\n return (\n <ProgressStepperContext.Provider value={ctx}>\n <div\n data-refineui=\"progress-stepper\"\n className={clsx(progressStepperStyles.root, className)}\n style={{ ...progressStepperVars, ...style }}\n {...props}\n >\n {children}\n </div>\n </ProgressStepperContext.Provider>\n );\n}\n\nexport function ProgressStepperList({ className, children, style, ...props }: ProgressStepperListProps) {\n const { value } = useProgressStepperContext(\"ProgressStepperList\");\n const itemValues = readItemValues(children);\n const count = itemValues.length;\n const sorted = [...itemValues].sort((a, b) => a - b);\n const min = sorted[0] ?? 0;\n const max = sorted[count - 1] ?? 0;\n const clamped = Math.min(max, Math.max(min, value));\n const index = sorted.reduce((last, stepValue, i) => (stepValue <= clamped ? i : last), 0);\n const layout = useMemo<ProgressStepperListLayout>(\n () => ({ count, sorted: [...itemValues].sort((a, b) => a - b) }),\n [count, itemValues],\n );\n const fillWidth = fillWidthForStep(index, count);\n\n return (\n <ProgressStepperListLayoutContext.Provider value={layout}>\n <div\n data-refineui=\"progress-stepper-list-wrap\"\n className={progressStepperStyles.listWrap}\n >\n <div\n data-refineui=\"progress-stepper-track\"\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={count}\n aria-valuenow={count <= 0 ? 0 : index + 1}\n className={progressStepperStyles.track}\n >\n <span\n data-refineui=\"progress-stepper-fill\"\n className={progressStepperStyles.fill}\n style={{ width: fillWidth }}\n />\n </div>\n <ol\n data-refineui=\"progress-stepper-list\"\n className={clsx(progressStepperStyles.list, className)}\n style={style}\n {...props}\n >\n {children}\n </ol>\n </div>\n </ProgressStepperListLayoutContext.Provider>\n );\n}\n\nexport function ProgressStepperItem({\n value: itemValue,\n disabled = false,\n className,\n onClick,\n onKeyDown,\n children,\n ...props\n}: ProgressStepperItemProps) {\n const { value, setValue, interactive } = useProgressStepperContext(\"ProgressStepperItem\");\n const layout = useContext(ProgressStepperListLayoutContext);\n const state = resolveState(itemValue, value);\n const canActivate = interactive && !disabled;\n const stepIndex = layout == null ? 0 : layout.sorted.indexOf(itemValue);\n const markerLeft = pipLeftForIndex(stepIndex < 0 ? 0 : stepIndex, layout?.count ?? 1);\n\n const activate = () => {\n if (!canActivate) return;\n setValue(itemValue);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLLIElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || !canActivate) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n activate();\n }\n };\n\n const itemCtx = useMemo(\n () => ({ state, disabled, markerLeft }),\n [state, disabled, markerLeft],\n );\n\n return (\n <ProgressStepperItemContext.Provider value={itemCtx}>\n <li\n data-refineui=\"progress-stepper-item\"\n data-state={state}\n data-disabled={disabled ? \"true\" : undefined}\n aria-current={state === \"current\" ? \"step\" : undefined}\n tabIndex={canActivate ? 0 : undefined}\n className={clsx(\n progressStepperStyles.item,\n canActivate && progressStepperStyles.itemInteractive,\n disabled && progressStepperStyles.itemDisabled,\n className,\n )}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) activate();\n }}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </li>\n </ProgressStepperItemContext.Provider>\n );\n}\n\nexport function ProgressStepperMarker({\n className,\n children,\n style,\n ...props\n}: ProgressStepperMarkerProps) {\n const { state, markerLeft } = useProgressStepperItemContext(\"ProgressStepperMarker\");\n\n const stateClass =\n state === \"complete\"\n ? progressStepperStyles.markerComplete\n : state === \"current\"\n ? progressStepperStyles.markerCurrent\n : progressStepperStyles.markerUpcoming;\n\n return (\n <span\n data-refineui=\"progress-stepper-marker\"\n data-state={state}\n aria-hidden\n className={clsx(progressStepperStyles.marker, stateClass, className)}\n style={{ left: markerLeft, ...style }}\n {...props}\n >\n {children}\n </span>\n );\n}\n\nexport function ProgressStepperLabel({ className, ...props }: ProgressStepperLabelProps) {\n const { state } = useProgressStepperItemContext(\"ProgressStepperLabel\");\n const stateClass =\n state === \"complete\"\n ? progressStepperStyles.labelComplete\n : state === \"current\"\n ? progressStepperStyles.labelCurrent\n : progressStepperStyles.labelUpcoming;\n\n return (\n <span\n data-refineui=\"progress-stepper-label\"\n data-state={state}\n className={clsx(progressStepperStyles.label, stateClass, className)}\n {...props}\n />\n );\n}\n\nProgressStepper.displayName = \"ProgressStepper\";\nProgressStepperList.displayName = \"ProgressStepperList\";\nProgressStepperItem.displayName = \"ProgressStepperItem\";\nProgressStepperMarker.displayName = \"ProgressStepperMarker\";\nProgressStepperLabel.displayName = \"ProgressStepperLabel\";\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\n/**\n * Track is a 16px pill. End inset matches the cap radius so first/last\n * pips sit on the straight run without extra lead/trail length.\n * Fill stays a pill; width is current pip plus the fill cap radius so the\n * round tip sits after the pip instead of wrapping it.\n */\nexport const progressStepperVars = {\n [\"--refineui-progress-stepper-track\" as string]: \"var(--refineui-size-foundation-size-160)\",\n [\"--refineui-progress-stepper-pip\" as string]: \"var(--refineui-size-foundation-size-80)\",\n [\"--refineui-progress-stepper-inset\" as string]: \"var(--refineui-size-foundation-size-80)\",\n} as const;\n\nexport const progressStepperStyles = {\n root: \"box-border w-full outline-none\",\n\n listWrap: \"relative w-full overflow-visible\",\n\n track: clsx(\n \"pointer-events-none absolute start-0 end-0 top-0 z-0 w-full overflow-hidden rounded-refineui-circle\",\n \"h-[var(--refineui-progress-stepper-track)]\",\n \"bg-refineui-alias-background-brand-subtle\",\n ),\n fill: clsx(\n \"block h-full min-w-0 rounded-refineui-circle bg-refineui-alias-background-brand\",\n \"transition-[width] duration-[var(--refineui-motion-duration-panel)]\",\n \"ease-[var(--refineui-motion-easing-emphasized)]\",\n \"motion-reduce:transition-none\",\n ),\n\n list: \"relative z-[1] m-0 flex w-full list-none flex-row items-start gap-0 p-0\",\n\n item: clsx(\n \"group/step z-[1] box-border flex min-w-0 flex-1 flex-col\",\n \"pt-[calc(var(--refineui-progress-stepper-track)+var(--refineui-spacing-size-x-small))]\",\n \"overflow-visible outline-none\",\n \"transition-opacity duration-[var(--refineui-motion-duration-fast)]\",\n ),\n itemInteractive: clsx(\n \"cursor-pointer\",\n \"focus-visible:[&_[data-refineui=progress-stepper-marker]]:ring-2\",\n \"focus-visible:[&_[data-refineui=progress-stepper-marker]]:ring-refineui-alias-border-focus\",\n \"hover:[&_[data-refineui=progress-stepper-marker][data-state=upcoming]]:bg-refineui-alias-foreground-secondary\",\n \"hover:[&_[data-refineui=progress-stepper-label][data-state=upcoming]]:text-refineui-alias-foreground-secondary\",\n ),\n itemDisabled: \"cursor-not-allowed opacity-50\",\n\n marker: clsx(\n componentTextClass(componentTypographyTokens.progressStepper.marker),\n \"absolute box-border inline-flex size-[var(--refineui-progress-stepper-pip)] shrink-0 overflow-hidden\",\n \"items-center justify-center rounded-refineui-circle border-0\",\n \"top-[calc((var(--refineui-progress-stepper-track)-var(--refineui-progress-stepper-pip))/2)]\",\n \"transition-colors duration-[var(--refineui-motion-duration-fast)]\",\n \"motion-reduce:transition-none\",\n ),\n markerComplete: \"bg-refineui-alias-foreground-on-brand\",\n markerCurrent: \"bg-refineui-alias-foreground-on-brand\",\n markerUpcoming: \"bg-refineui-alias-border-default\",\n\n label: clsx(\n componentTextClass(componentTypographyTokens.progressStepper.label),\n /**\n * Truncates because steps split the track evenly (`flex-1`), so a narrow\n * container can hand a label less width than its text needs. Labels are\n * usually single words with no break opportunity, and the item is\n * `overflow-visible` for the absolute marker — without this the text\n * would paint over the neighbouring step instead of wrapping.\n */\n \"m-0 w-full truncate text-center\",\n \"group-first/step:pl-[var(--refineui-progress-stepper-inset)] group-first/step:text-start\",\n \"group-last/step:pr-[var(--refineui-progress-stepper-inset)] group-last/step:text-end\",\n \"transition-colors duration-[var(--refineui-motion-duration-fast)]\",\n ),\n labelComplete: \"text-refineui-alias-foreground-primary\",\n labelCurrent: \"font-medium text-refineui-alias-foreground-brand\",\n labelUpcoming: \"text-refineui-alias-foreground-tertiary\",\n} as const;\n","import { clsx } from \"clsx\";\nimport { spinnerLabelTypo, spinnerRingClass, spinnerStyles } from \"./style\";\nimport type { SpinnerProps } from \"./types\";\n\nexport function Spinner({\n size = \"md\",\n label,\n labelPosition = \"right\",\n className,\n ...props\n}: SpinnerProps) {\n const hasLabel = label != null && label !== \"\";\n\n const icon = (\n <div\n data-refineui=\"spinner\"\n data-size={size}\n className={clsx(\n spinnerStyles.ringBase,\n spinnerRingClass[size],\n )}\n aria-hidden={hasLabel ? true : undefined}\n />\n );\n\n const labelEl = <span className={clsx(spinnerLabelTypo[size], spinnerStyles.label)}>{label}</span>;\n\n if (!hasLabel) {\n return (\n <div role=\"status\" aria-label=\"Loading\" className={className} {...props}>\n {icon}\n </div>\n );\n }\n\n const row = labelPosition === \"left\" || labelPosition === \"right\";\n const iconFirst = labelPosition === \"left\" || labelPosition === \"top\";\n\n return (\n <div\n role=\"status\"\n aria-label=\"Loading\"\n className={clsx(\n spinnerStyles.withLabel,\n row ? \"flex-row\" : \"flex-col\",\n className,\n )}\n {...props}\n >\n {iconFirst ? (\n <>\n {icon}\n {labelEl}\n </>\n ) : (\n <>\n {labelEl}\n {icon}\n </>\n )}\n </div>\n );\n}\n","import type { SpinnerSize } from \"./types\";\nimport { buildSemanticTextClassMap } from \"../../typography\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\n\nexport const spinnerStyles = {\n ringBase:\n \"box-border rounded-refineui-circle border-solid border-refineui-alias-background-brand-subtle border-t-refineui-alias-background-brand\",\n label: \"text-refineui-alias-foreground-primary\",\n withLabel: \"inline-flex items-center justify-center gap-refineui-size-x-small\",\n} as const;\n\nexport const spinnerRingClass: Record<SpinnerSize, string> = {\n xs: \"size-refineui-spinner-size-x-small [border-width:var(--refineui-size-spinner-ring-width-x-small)]\",\n sm: \"size-refineui-spinner-size-small [border-width:var(--refineui-size-spinner-ring-width-small)]\",\n md: \"size-refineui-spinner-size-medium [border-width:var(--refineui-size-spinner-ring-width-medium)]\",\n lg: \"size-refineui-spinner-size-large [border-width:var(--refineui-size-spinner-ring-width-large)]\",\n xl: \"size-refineui-spinner-size-x-large [border-width:var(--refineui-size-spinner-ring-width-x-large)]\",\n xxl: \"size-refineui-spinner-size-xx-large [border-width:var(--refineui-size-spinner-ring-width-xx-large)]\",\n};\n\nexport const spinnerLabelTypo: Record<SpinnerSize, string> = buildSemanticTextClassMap(\n componentTypographyTokens.spinner,\n);\n","import { clsx } from \"clsx\";\nimport type { CSSProperties, KeyboardEvent, Ref, RefObject } from \"react\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { tabsStyles } from \"./style\";\nimport type { TabsContentProps, TabsListProps, TabsProps, TabsTriggerProps } from \"./types\";\n\nconst TRIGGER_SELECTOR = '[data-refineui=\"tab\"]';\nconst TRIGGER_ENABLED_SELECTOR = `${TRIGGER_SELECTOR}:not([disabled])`;\n\nfunction slugTabValue(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n}\n\ntype TabsContextValue = {\n selectedValue: string;\n setSelectedValue: (next: string) => void;\n tabListRef: RefObject<HTMLDivElement | null>;\n baseId: string;\n};\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nfunction useTabsContext(component: string): TabsContextValue {\n const v = useContext(TabsContext);\n if (!v) throw new Error(`${component} must be used within Tabs.`);\n return v;\n}\n\nexport function Tabs({\n children,\n className,\n defaultValue = \"\",\n value: valueControlled,\n onValueChange,\n ...props\n}: TabsProps) {\n const isControlled = valueControlled !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue);\n const selectedValue = isControlled ? valueControlled! : internalValue;\n\n const setSelectedValue = useCallback(\n (next: string) => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n },\n [isControlled, onValueChange],\n );\n\n const tabListRef = useRef<HTMLDivElement | null>(null);\n const baseId = useId();\n\n const ctx = useMemo(\n () => ({\n selectedValue,\n setSelectedValue,\n tabListRef,\n baseId,\n }),\n [selectedValue, setSelectedValue, baseId],\n );\n\n return (\n <TabsContext.Provider value={ctx}>\n <div data-refineui=\"tabs\" className={clsx(tabsStyles.root, className)} {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n );\n}\n\ntype IndicatorBox = {\n left: number;\n width: number;\n ready: boolean;\n};\n\nexport function TabsList({ className, children, ...props }: TabsListProps) {\n const { tabListRef, selectedValue } = useTabsContext(\"TabsList\");\n const [indicator, setIndicator] = useState<IndicatorBox>({\n left: 0,\n width: 0,\n ready: false,\n });\n\n const updateIndicator = useCallback(() => {\n const list = tabListRef.current;\n if (!list) return;\n const selected = list.querySelector<HTMLElement>(`${TRIGGER_SELECTOR}[data-selected=\"true\"]`);\n if (!selected) {\n setIndicator((prev) => ({ ...prev, width: 0, ready: false }));\n return;\n }\n setIndicator({\n left: selected.offsetLeft,\n width: selected.offsetWidth,\n ready: true,\n });\n }, [tabListRef]);\n\n useLayoutEffect(() => {\n updateIndicator();\n }, [updateIndicator, selectedValue, children]);\n\n useEffect(() => {\n const list = tabListRef.current;\n if (!list) return;\n\n const ro = new ResizeObserver(() => {\n updateIndicator();\n });\n ro.observe(list);\n for (const tab of Array.from(list.querySelectorAll(TRIGGER_SELECTOR))) {\n ro.observe(tab);\n }\n\n window.addEventListener(\"resize\", updateIndicator);\n\n return () => {\n ro.disconnect();\n window.removeEventListener(\"resize\", updateIndicator);\n };\n }, [tabListRef, updateIndicator, children]);\n\n const indicatorStyle: CSSProperties = {\n width: indicator.width,\n transform: `translate3d(${indicator.left}px, 0, 0)`,\n };\n\n return (\n <div\n ref={tabListRef as Ref<HTMLDivElement>}\n data-refineui=\"tabs-list\"\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n className={clsx(tabsStyles.list, className)}\n {...props}\n >\n <div\n data-refineui=\"tabs-indicator\"\n data-ready={indicator.ready ? \"true\" : undefined}\n aria-hidden\n className={tabsStyles.indicator}\n style={indicatorStyle}\n />\n {children}\n </div>\n );\n}\n\nexport const TabsTrigger = forwardRef<HTMLButtonElement, TabsTriggerProps>(function TabsTrigger(\n { value, disabled, className, children, onKeyDown, onClick, ...rest },\n ref,\n) {\n const ctx = useTabsContext(\"TabsTrigger\");\n const selected = ctx.selectedValue === value;\n const safe = slugTabValue(value);\n const tabId = `${ctx.baseId}-trigger-${safe}`;\n const panelId = `${ctx.baseId}-panel-${safe}`;\n\n const moveFocus = useCallback(\n (delta: number) => {\n const root = ctx.tabListRef.current;\n if (!root) return;\n const arr = Array.from(root.querySelectorAll<HTMLButtonElement>(TRIGGER_ENABLED_SELECTOR));\n const n = arr.length;\n if (n === 0) return;\n const ix = arr.findIndex((b) => b.dataset.tabValue === value);\n if (ix < 0) return;\n const next = arr[(ix + delta + n) % n];\n const nextValue = next?.dataset.tabValue;\n next?.focus();\n if (nextValue) ctx.setSelectedValue(nextValue);\n },\n [ctx, value],\n );\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n switch (e.key) {\n case \"ArrowRight\":\n case \"ArrowDown\":\n e.preventDefault();\n moveFocus(1);\n break;\n case \"ArrowLeft\":\n case \"ArrowUp\":\n e.preventDefault();\n moveFocus(-1);\n break;\n case \"Home\": {\n e.preventDefault();\n const first = ctx.tabListRef.current?.querySelector<HTMLButtonElement>(TRIGGER_ENABLED_SELECTOR);\n const nextValue = first?.dataset.tabValue;\n first?.focus();\n if (nextValue) ctx.setSelectedValue(nextValue);\n break;\n }\n case \"End\": {\n e.preventDefault();\n const all = ctx.tabListRef.current?.querySelectorAll<HTMLButtonElement>(TRIGGER_ENABLED_SELECTOR);\n if (!all?.length) break;\n const last = all[all.length - 1];\n const nextValue = last?.dataset.tabValue;\n last?.focus();\n if (nextValue) ctx.setSelectedValue(nextValue);\n break;\n }\n default:\n break;\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n id={tabId}\n data-refineui=\"tab\"\n data-tab-value={value}\n data-selected={selected ? \"true\" : \"false\"}\n role=\"tab\"\n aria-selected={selected}\n aria-controls={panelId}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n tabIndex={selected && !disabled ? 0 : -1}\n className={clsx(\n tabsStyles.trigger,\n disabled ? tabsStyles.triggerDisabled : tabsStyles.triggerEnabled,\n selected && !disabled && tabsStyles.triggerSelectedEnabled,\n selected && disabled && tabsStyles.triggerSelectedDisabled,\n !selected && tabsStyles.triggerUnselected,\n className,\n )}\n onClick={(e) => {\n onClick?.(e);\n if (!disabled && !e.defaultPrevented) ctx.setSelectedValue(value);\n }}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </button>\n );\n});\n\nexport function TabsContent({ value, className, children, hidden: hiddenProp, ...props }: TabsContentProps) {\n const ctx = useTabsContext(\"TabsContent\");\n const selected = ctx.selectedValue === value;\n const safe = slugTabValue(value);\n const tabId = `${ctx.baseId}-trigger-${safe}`;\n const panelId = `${ctx.baseId}-panel-${safe}`;\n\n return (\n <div\n role=\"tabpanel\"\n id={panelId}\n aria-labelledby={tabId}\n hidden={hiddenProp ?? !selected}\n className={clsx(className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\n/**\n * Page / section Tabs — underline track, sliding brand indicator, tabpanels.\n * Token composition (Web Kit `Tabs` pill visual ships as SegmentedControl).\n */\nexport const tabsStyles = {\n root: \"flex w-full min-w-0 flex-col gap-refineui-size-medium\",\n list: clsx(\n \"relative flex w-full min-w-0 flex-nowrap items-stretch overflow-x-auto\",\n \"after:pointer-events-none after:absolute after:inset-inline-0 after:bottom-0\",\n \"after:h-(--refineui-stroke-width-thin) after:bg-refineui-alias-border-default\",\n ),\n indicator: clsx(\n \"pointer-events-none absolute bottom-0 start-0 z-[1] block\",\n \"h-(--refineui-stroke-width-thick) bg-refineui-alias-background-brand\",\n \"will-change-[transform,width]\",\n ),\n trigger: clsx(\n componentTextClass(componentTypographyTokens.tabs),\n \"relative z-[1] box-border inline-flex min-h-0 min-w-0 shrink-0 items-center justify-center\",\n \"gap-refineui-size-x-small border-none bg-transparent\",\n \"px-refineui-size-medium py-refineui-size-x-small outline-none\",\n \"transition-colors duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]\",\n ),\n triggerDisabled: \"cursor-not-allowed text-refineui-alias-foreground-disabled\",\n triggerEnabled: \"cursor-pointer\",\n triggerSelectedEnabled: \"text-refineui-alias-foreground-primary\",\n triggerSelectedDisabled: \"text-refineui-alias-foreground-disabled\",\n triggerUnselected: \"text-refineui-alias-foreground-tertiary\",\n} as const;\n","import { clsx } from \"clsx\";\nimport type { CSSProperties, KeyboardEvent, RefObject } from \"react\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n useLayoutEffect,\n} from \"react\";\nimport { segmentedControlStyles } from \"./style\";\nimport type { SegmentedControlItemProps, SegmentedControlProps } from \"./types\";\n\nconst ITEM_SELECTOR = '[data-refineui=\"segmented-control-item\"]';\nconst ITEM_ENABLED_SELECTOR = `${ITEM_SELECTOR}:not([disabled])`;\n\ntype SegmentedControlContextValue = {\n selectedValue: string;\n setSelectedValue: (next: string) => void;\n groupRef: RefObject<HTMLDivElement | null>;\n};\n\nconst SegmentedControlContext = createContext<SegmentedControlContextValue | null>(null);\n\nfunction useSegmentedControlContext(component: string): SegmentedControlContextValue {\n const v = useContext(SegmentedControlContext);\n if (!v) throw new Error(`${component} must be used within SegmentedControl.`);\n return v;\n}\n\ntype IndicatorBox = {\n left: number;\n width: number;\n ready: boolean;\n};\n\nexport function SegmentedControl({\n children,\n className,\n defaultValue = \"\",\n value: valueControlled,\n onValueChange,\n ...props\n}: SegmentedControlProps) {\n const isControlled = valueControlled !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue);\n const selectedValue = isControlled ? valueControlled! : internalValue;\n\n const setSelectedValue = useCallback(\n (next: string) => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n },\n [isControlled, onValueChange],\n );\n\n const groupRef = useRef<HTMLDivElement | null>(null);\n\n const ctx = useMemo(\n () => ({\n selectedValue,\n setSelectedValue,\n groupRef,\n }),\n [selectedValue, setSelectedValue],\n );\n\n const [indicator, setIndicator] = useState<IndicatorBox>({\n left: 0,\n width: 0,\n ready: false,\n });\n\n const updateIndicator = useCallback(() => {\n const group = groupRef.current;\n if (!group) return;\n const selected = group.querySelector<HTMLElement>(\n `${ITEM_SELECTOR}[data-selected=\"true\"]`,\n );\n if (!selected) {\n setIndicator((prev) => ({ ...prev, width: 0, ready: false }));\n return;\n }\n setIndicator({\n left: selected.offsetLeft,\n width: selected.offsetWidth,\n ready: true,\n });\n }, []);\n\n useLayoutEffect(() => {\n updateIndicator();\n }, [updateIndicator, selectedValue, children]);\n\n useEffect(() => {\n const group = groupRef.current;\n if (!group) return;\n\n const ro = new ResizeObserver(() => {\n updateIndicator();\n });\n ro.observe(group);\n for (const item of Array.from(group.querySelectorAll(ITEM_SELECTOR))) {\n ro.observe(item);\n }\n\n window.addEventListener(\"resize\", updateIndicator);\n\n return () => {\n ro.disconnect();\n window.removeEventListener(\"resize\", updateIndicator);\n };\n }, [updateIndicator, children]);\n\n const indicatorStyle: CSSProperties = {\n width: indicator.width,\n transform: `translate3d(${indicator.left}px, 0, 0)`,\n };\n\n return (\n <SegmentedControlContext.Provider value={ctx}>\n <div\n ref={groupRef}\n data-refineui=\"segmented-control\"\n role=\"radiogroup\"\n aria-orientation=\"horizontal\"\n className={clsx(segmentedControlStyles.root, className)}\n {...props}\n >\n <div\n data-refineui=\"segmented-control-indicator\"\n data-ready={indicator.ready ? \"true\" : undefined}\n aria-hidden\n className={segmentedControlStyles.indicator}\n style={indicatorStyle}\n />\n {children}\n </div>\n </SegmentedControlContext.Provider>\n );\n}\n\nexport const SegmentedControlItem = forwardRef<HTMLButtonElement, SegmentedControlItemProps>(\n function SegmentedControlItem(\n { value, disabled, className, children, onKeyDown, onClick, ...rest },\n ref,\n ) {\n const ctx = useSegmentedControlContext(\"SegmentedControlItem\");\n const selected = ctx.selectedValue === value;\n\n const moveSelection = useCallback(\n (delta: number) => {\n const root = ctx.groupRef.current;\n if (!root) return;\n const arr = Array.from(root.querySelectorAll<HTMLButtonElement>(ITEM_ENABLED_SELECTOR));\n const n = arr.length;\n if (n === 0) return;\n const ix = arr.findIndex((b) => b.dataset.segmentValue === value);\n if (ix < 0) return;\n const next = arr[(ix + delta + n) % n];\n const nextValue = next?.dataset.segmentValue;\n next?.focus();\n if (nextValue) ctx.setSelectedValue(nextValue);\n },\n [ctx, value],\n );\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n switch (e.key) {\n case \"ArrowRight\":\n case \"ArrowDown\":\n e.preventDefault();\n moveSelection(1);\n break;\n case \"ArrowLeft\":\n case \"ArrowUp\":\n e.preventDefault();\n moveSelection(-1);\n break;\n case \"Home\": {\n e.preventDefault();\n const first = ctx.groupRef.current?.querySelector<HTMLButtonElement>(ITEM_ENABLED_SELECTOR);\n const nextValue = first?.dataset.segmentValue;\n first?.focus();\n if (nextValue) ctx.setSelectedValue(nextValue);\n break;\n }\n case \"End\": {\n e.preventDefault();\n const all = ctx.groupRef.current?.querySelectorAll<HTMLButtonElement>(ITEM_ENABLED_SELECTOR);\n if (!all?.length) break;\n const last = all[all.length - 1];\n const nextValue = last?.dataset.segmentValue;\n last?.focus();\n if (nextValue) ctx.setSelectedValue(nextValue);\n break;\n }\n default:\n break;\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n data-refineui=\"segmented-control-item\"\n data-segment-value={value}\n data-selected={selected ? \"true\" : \"false\"}\n role=\"radio\"\n aria-checked={selected}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n tabIndex={selected && !disabled ? 0 : -1}\n className={clsx(\n segmentedControlStyles.item,\n disabled ? segmentedControlStyles.itemDisabled : segmentedControlStyles.itemEnabled,\n selected && !disabled && segmentedControlStyles.itemSelectedEnabled,\n selected && disabled && segmentedControlStyles.itemSelectedDisabled,\n !selected && segmentedControlStyles.itemUnselected,\n className,\n )}\n onClick={(e) => {\n onClick?.(e);\n if (!disabled && !e.defaultPrevented) ctx.setSelectedValue(value);\n }}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n","/**\n * Segmented Control slot recipe — visual mapping only.\n * Contract: packages/react/spec/components/segmented-control.json\n * Tokens: componentColorTokens.segmentedControl\n */\nimport { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../typography\";\nimport { defineSlotRecipe, resolveSlotClasses } from \"./types\";\n\nexport const segmentedControlRecipe = defineSlotRecipe({\n name: \"segmented-control\",\n slots: [\"root\", \"indicator\", \"item\"],\n base: {\n root: clsx(\n \"relative box-border inline-flex max-w-full w-fit flex-nowrap items-stretch gap-refineui-size-none\",\n /**\n * Scrolls rather than clips: `max-w-full` caps the pill at the container,\n * so at narrow widths `overflow-hidden` would make trailing options\n * unreachable. Scrollbar chrome is suppressed in `refineui.css`.\n */\n \"overflow-x-auto overflow-y-hidden rounded-refineui-circle border-refineui-thin border-refineui-alias-border-default\",\n \"bg-refineui-alias-background-brand-subtle\",\n ),\n indicator: clsx(\n \"pointer-events-none absolute inset-y-0 start-0 z-0 block h-full\",\n \"rounded-refineui-circle bg-refineui-alias-background-brand shadow-refineui-2\",\n \"will-change-[transform,width]\",\n ),\n item: clsx(\n componentTextClass(componentTypographyTokens.segmentedControl),\n \"relative z-[1] box-border inline-flex min-h-0 min-w-0 shrink-0 items-center justify-center gap-refineui-size-xx-small\",\n \"rounded-refineui-circle border-none bg-transparent px-refineui-size-medium py-refineui-size-x-small outline-none\",\n \"transition-colors duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]\",\n ),\n },\n});\n\nexport function resolveSegmentedControlSlotClasses(slot: string): string {\n return resolveSlotClasses(segmentedControlRecipe, slot);\n}\n\nexport const segmentedControlStyles = {\n root: segmentedControlRecipe.base.root,\n indicator: segmentedControlRecipe.base.indicator,\n item: segmentedControlRecipe.base.item,\n itemDisabled: \"cursor-not-allowed text-refineui-alias-foreground-disabled\",\n itemEnabled: \"cursor-pointer\",\n itemSelectedEnabled: \"text-refineui-alias-foreground-on-brand\",\n itemSelectedDisabled: \"text-refineui-alias-foreground-disabled\",\n itemUnselected: \"text-refineui-alias-foreground-secondary\",\n} as const;\n","import { clsx } from \"clsx\";\nimport { forwardRef } from \"react\";\nimport { tableStyles } from \"./style\";\nimport type {\n TableBodyProps,\n TableCaptionProps,\n TableCellProps,\n TableFooterProps,\n TableHeadProps,\n TableHeaderProps,\n TableProps,\n TableRowProps,\n} from \"./types\";\n\n/** Dense semantic table — hover / selected via `refineui.css`. Overflow via composed `ScrollArea`. */\nexport const Table = forwardRef<HTMLTableElement, TableProps>(function Table(\n { className, ...props },\n ref,\n) {\n return (\n <div data-refineui=\"table\" className={tableStyles.wrapper}>\n <table ref={ref} className={clsx(tableStyles.table, className)} {...props} />\n </div>\n );\n});\n\nexport function TableHeader({ className, ...props }: TableHeaderProps) {\n return <thead className={clsx(tableStyles.header, className)} {...props} />;\n}\n\nexport function TableBody({ className, ...props }: TableBodyProps) {\n return <tbody className={clsx(tableStyles.body, className)} {...props} />;\n}\n\nexport function TableFooter({ className, ...props }: TableFooterProps) {\n return <tfoot className={clsx(tableStyles.footer, className)} {...props} />;\n}\n\nexport function TableRow({ className, ...props }: TableRowProps) {\n return <tr data-refineui=\"table-row\" className={clsx(tableStyles.row, className)} {...props} />;\n}\n\nexport function TableHead({ className, scope = \"col\", ...props }: TableHeadProps) {\n return <th className={clsx(tableStyles.head, className)} scope={scope} {...props} />;\n}\n\nexport function TableCell({ className, ...props }: TableCellProps) {\n return <td className={clsx(tableStyles.cell, className)} {...props} />;\n}\n\nexport function TableCaption({ className, ...props }: TableCaptionProps) {\n return <caption className={clsx(tableStyles.caption, className)} {...props} />;\n}\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\n/**\n * RefineUI Table — surface chrome strips · inset body rows.\n * Header/footer + hover/selected live in `refineui.css` (token CSS variables).\n */\nexport const tableStyles = {\n /** Overflow lives on composed `ScrollArea` when the table is constrained. */\n wrapper: clsx(\n \"relative box-border w-full min-w-0\",\n \"px-refineui-size-small pb-refineui-size-small\",\n ),\n table: \"w-full caption-bottom border-separate text-start\",\n header: \"\",\n body: \"\",\n footer: \"\",\n row: clsx(\n \"transition-[background-color,box-shadow,border-radius]\",\n \"duration-[var(--refineui-motion-duration-fast)]\",\n \"ease-[var(--refineui-motion-easing-ease-out)]\",\n ),\n head: clsx(\n componentTextClass(componentTypographyTokens.table.head),\n \"h-refineui-control-height-sm whitespace-nowrap px-refineui-size-medium\",\n /** Explicit start — UA `th { text-align: center }` otherwise wins over table inherit. */\n \"align-middle text-start font-medium text-refineui-alias-foreground-tertiary\",\n ),\n cell: clsx(\n componentTextClass(componentTypographyTokens.table.cell),\n \"h-refineui-control-height-md whitespace-nowrap px-refineui-size-medium\",\n \"align-middle text-start text-refineui-alias-foreground-primary\",\n ),\n caption: clsx(\n componentTextClass(componentTypographyTokens.table.caption),\n /** Explicit start — UA caption is centered by default. */\n \"mt-refineui-size-medium px-refineui-size-x-small text-start text-refineui-alias-foreground-tertiary\",\n ),\n} as const;\n","import type { HTMLAttributes } from \"react\";\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport { clsx } from \"clsx\";\nimport {\n AccordionContext,\n type AccordionSize,\n type AccordionType,\n type OpenState,\n toSet,\n usePrefersReducedMotion,\n} from \"./context\";\nimport { accordionStyles } from \"./style\";\n\nexport interface AccordionProps extends HTMLAttributes<HTMLDivElement> {\n type?: AccordionType;\n collapsible?: boolean;\n defaultValue?: string | string[];\n value?: string | string[];\n onValueChange?: (value: string | string[] | undefined) => void;\n /** Web Kit size tier — scales trigger & content typography via `componentTypographyTokens.accordion`. */\n size?: AccordionSize;\n}\n\nexport function Accordion({\n type,\n collapsible = false,\n defaultValue,\n value,\n onValueChange,\n size = \"md\",\n className,\n children,\n ...props\n}: AccordionProps) {\n const reduceMotion = usePrefersReducedMotion();\n const resolvedType: AccordionType = type ?? \"single\";\n const initial = toSet(defaultValue, resolvedType);\n const [uncontrolledOpen, setUncontrolledOpen] = useState<OpenState>(initial);\n const open = value === undefined ? uncontrolledOpen : toSet(value, resolvedType);\n\n const triggerOrderRef = useRef<string[]>([]);\n const triggerMapRef = useRef<Map<string, HTMLButtonElement>>(new Map());\n\n const registerTrigger = useCallback((itemValue: string, el: HTMLButtonElement | null) => {\n if (!triggerOrderRef.current.includes(itemValue)) {\n triggerOrderRef.current.push(itemValue);\n }\n if (el) triggerMapRef.current.set(itemValue, el);\n else triggerMapRef.current.delete(itemValue);\n }, []);\n\n const emit = useCallback(\n (next: OpenState) => {\n if (value === undefined) setUncontrolledOpen(next);\n if (!onValueChange) return;\n if (resolvedType === \"multiple\") onValueChange(Array.from(next));\n else onValueChange(Array.from(next)[0]);\n },\n [onValueChange, resolvedType, value],\n );\n\n const toggle = useCallback(\n (itemValue: string) => {\n const next = new Set(open);\n const opened = next.has(itemValue);\n if (opened) {\n if (resolvedType === \"multiple\" || collapsible) next.delete(itemValue);\n } else {\n if (resolvedType === \"single\") next.clear();\n next.add(itemValue);\n }\n emit(next);\n },\n [collapsible, emit, open, resolvedType],\n );\n\n const focusTrigger = (index: number) => {\n const list = triggerOrderRef.current\n .map((v) => triggerMapRef.current.get(v))\n .filter(Boolean) as HTMLButtonElement[];\n const n = list.length;\n if (n === 0) return;\n list[((index % n) + n) % n]?.focus();\n };\n\n const focusByDelta = useCallback((currentValue: string, delta: number) => {\n const idx = triggerOrderRef.current.indexOf(currentValue);\n focusTrigger(idx < 0 ? 0 : idx + delta);\n }, []);\n\n const contextValue = useMemo(\n () => ({\n size,\n isOpen: (itemValue: string) => open.has(itemValue),\n toggle,\n registerTrigger,\n focusByDelta,\n focusFirst: () => focusTrigger(0),\n focusLast: () => focusTrigger(triggerOrderRef.current.length - 1),\n reduceMotion,\n }),\n [focusByDelta, open, reduceMotion, registerTrigger, size, toggle],\n );\n\n return (\n <AccordionContext.Provider value={contextValue}>\n <div data-refineui=\"accordion\" className={clsx(accordionStyles.root, className)} {...props}>\n {children}\n </div>\n </AccordionContext.Provider>\n );\n}\n","import { createContext, useEffect, useState } from \"react\";\nimport { semanticInteraction } from \"@refineui/tokens\";\nimport { getReducedMotionQuery } from \"@refineui/utilities/animation\";\n\nexport type AccordionSize = \"sm\" | \"md\" | \"lg\";\nexport type AccordionType = \"single\" | \"multiple\";\nexport type OpenState = Set<string>;\n\nexport interface AccordionContextValue {\n size: AccordionSize;\n isOpen: (value: string) => boolean;\n toggle: (value: string) => void;\n registerTrigger: (value: string, el: HTMLButtonElement | null) => void;\n focusByDelta: (currentValue: string, delta: number) => void;\n focusFirst: () => void;\n focusLast: () => void;\n reduceMotion: boolean;\n}\n\nexport interface ItemContextValue {\n value: string;\n triggerId: string;\n panelId: string;\n open: boolean;\n icon?: string;\n}\n\nexport const AccordionContext = createContext<AccordionContextValue | null>(null);\nexport const AccordionItemContext = createContext<ItemContextValue | null>(null);\n\nexport const PANEL_HEIGHT_MS = Number.parseFloat(semanticInteraction.duration.accordionPanel) / 1000;\nexport const PANEL_CONTENT_MS = Number.parseFloat(semanticInteraction.duration.accordionContent) / 1000;\nexport const PANEL_HEIGHT_EASE = semanticInteraction.easing.panel;\nexport const PANEL_CONTENT_EASE = semanticInteraction.easing.content;\n\nexport function usePrefersReducedMotion(): boolean {\n const [reduce, setReduce] = useState(false);\n useEffect(() => {\n const mql = window.matchMedia(getReducedMotionQuery().replace(\"@media \", \"\"));\n const sync = () => setReduce(mql.matches);\n sync();\n mql.addEventListener(\"change\", sync);\n return () => mql.removeEventListener(\"change\", sync);\n }, []);\n return reduce;\n}\n\nexport function toSet(value: string | string[] | undefined, type: AccordionType): OpenState {\n if (value == null) return new Set();\n if (Array.isArray(value)) return new Set(value);\n return type === \"multiple\" ? new Set([value]) : new Set([value]);\n}\n\n","/**\n * Accordion slot recipe — visual mapping only.\n * Contract: packages/react/spec/components/accordion.json\n * Tokens: componentColorTokens.accordion\n */\nimport { iconSizes } from \"@refineui/tokens\";\nimport { componentTypographyTokens } from \"../tokens/componentTypographyTokens\";\nimport { sizedComponentTextClass } from \"../typography\";\nimport { defineSlotRecipe, resolveSlotClasses } from \"./types\";\nimport type { AccordionSize } from \"../components/Accordion/context\";\n\nexport const accordionRecipe = defineSlotRecipe({\n name: \"accordion\",\n slots: [\"root\", \"item\", \"trigger\", \"triggerRow\", \"chevron\", \"panel\", \"panelPad\", \"content\"],\n base: {\n root: \"flex flex-col gap-refineui-size-x-small\",\n item: \"overflow-hidden rounded-refineui-x-large transition-[background-color] duration-[var(--refineui-motion-duration-fast)]\",\n trigger:\n \"flex min-h-refineui-control-touch-min w-full cursor-pointer items-center justify-between gap-refineui-size-medium rounded-refineui-x-large border-none bg-transparent px-refineui-size-medium py-refineui-size-x-small text-start text-refineui-alias-foreground-primary outline-none transition-[background-color,transform] duration-[var(--refineui-motion-duration-fast)]\",\n triggerRow: \"flex min-w-0 flex-1 items-center gap-refineui-size-medium\",\n chevron:\n \"shrink-0 transition-transform duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]\",\n panel: \"min-h-0 overflow-hidden\",\n panelPad: \"box-border px-refineui-size-medium pb-refineui-size-medium pt-refineui-size-none\",\n content: \"text-refineui-alias-foreground-secondary\",\n },\n variants: {\n size: {\n sm: {},\n md: {},\n lg: {},\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\n/** Open-item background — applied when data-state=open (matches prior itemOpen). */\nexport const accordionItemOpenClass = \"bg-refineui-alias-background-primary-hover\";\n\nexport const accordionChevronOpenClass = \"rotate-180\";\n\nexport function resolveAccordionSlotClasses(slot: string, size: AccordionSize = \"md\"): string {\n return resolveSlotClasses(accordionRecipe, slot, { size });\n}\n\n/** Compatible map for Accordion components (pre-recipe import sites). */\nexport const accordionStyles = {\n root: accordionRecipe.base.root,\n itemOpen: `${accordionRecipe.base.item} ${accordionItemOpenClass}`,\n triggerBase: accordionRecipe.base.trigger,\n triggerRow: accordionRecipe.base.triggerRow,\n chevron: accordionRecipe.base.chevron,\n chevronOpen: accordionChevronOpenClass,\n panelOuter: accordionRecipe.base.panel,\n panelPad: accordionRecipe.base.panelPad,\n panelBody: accordionRecipe.base.content,\n} as const;\n\nexport const accordionIconSize: Record<AccordionSize, number> = {\n sm: iconSizes.xsmall,\n md: iconSizes.small,\n lg: iconSizes.medium,\n};\n\nexport const triggerTypo = {\n sm: sizedComponentTextClass(componentTypographyTokens.accordion.trigger, \"sm\"),\n md: sizedComponentTextClass(componentTypographyTokens.accordion.trigger, \"md\"),\n lg: sizedComponentTextClass(componentTypographyTokens.accordion.trigger, \"lg\"),\n} as const;\n\nexport const contentTypo = {\n sm: sizedComponentTextClass(componentTypographyTokens.accordion.content, \"sm\"),\n md: sizedComponentTextClass(componentTypographyTokens.accordion.content, \"md\"),\n lg: sizedComponentTextClass(componentTypographyTokens.accordion.content, \"lg\"),\n} as const;\n","import { clsx } from \"clsx\";\nimport type { HTMLAttributes } from \"react\";\nimport { useContext, useId } from \"react\";\nimport { AccordionContext, AccordionItemContext } from \"./context\";\nimport { accordionStyles } from \"./style\";\n\nexport interface AccordionItemSlotProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n icon?: string;\n}\n\nexport function AccordionItem({ value, icon, className, children, ...props }: AccordionItemSlotProps) {\n const accordion = useContext(AccordionContext);\n if (!accordion) throw new Error(\"AccordionItem must be used within Accordion.\");\n const open = accordion.isOpen(value);\n const uid = useId().replace(/:/g, \"\");\n const triggerId = `accordion-trigger-${uid}-${value}`;\n const panelId = `accordion-panel-${uid}-${value}`;\n\n return (\n <AccordionItemContext.Provider\n value={{ value, open, triggerId, panelId, icon }}\n >\n <div\n data-refineui=\"accordion-item\"\n data-state={open ? \"open\" : \"closed\"}\n className={clsx(open && accordionStyles.itemOpen, className)}\n {...props}\n >\n {children}\n </div>\n </AccordionItemContext.Provider>\n );\n}\n","import { clsx } from \"clsx\";\nimport type { HTMLAttributes, KeyboardEvent } from \"react\";\nimport { useContext } from \"react\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { AccordionContext, AccordionItemContext } from \"./context\";\nimport { accordionIconSize, accordionStyles, triggerTypo } from \"./style\";\n\nexport interface AccordionTriggerProps extends HTMLAttributes<HTMLButtonElement> {}\n\nexport function AccordionTrigger({ className, children, ...props }: AccordionTriggerProps) {\n const accordion = useContext(AccordionContext);\n const item = useContext(AccordionItemContext);\n if (!accordion || !item) throw new Error(\"AccordionTrigger must be used within AccordionItem.\");\n\n const iconSize = accordionIconSize[accordion.size];\n\n const onTriggerKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n accordion.focusByDelta(item.value, 1);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n accordion.focusByDelta(item.value, -1);\n break;\n case \"Home\":\n e.preventDefault();\n accordion.focusFirst();\n break;\n case \"End\":\n e.preventDefault();\n accordion.focusLast();\n break;\n default:\n break;\n }\n };\n\n return (\n <button\n ref={(el) => accordion.registerTrigger(item.value, el)}\n type=\"button\"\n data-refineui=\"accordion-trigger\"\n aria-expanded={item.open}\n aria-controls={item.panelId}\n id={item.triggerId}\n onClick={() => accordion.toggle(item.value)}\n onKeyDown={onTriggerKeyDown}\n className={clsx(accordionStyles.triggerBase, className)}\n {...props}\n >\n <span className={clsx(accordionStyles.triggerRow, triggerTypo[accordion.size])}>\n {item.icon ? <WebIcon name={item.icon} size={iconSize} color=\"currentColor\" /> : null}\n {children}\n </span>\n <WebIcon\n name=\"chevron-down\"\n size={iconSize}\n color=\"currentColor\"\n fallback=\"▼\"\n className={clsx(\n accordionStyles.chevron,\n item.open && accordionStyles.chevronOpen,\n accordion.reduceMotion && \"transition-none\",\n )}\n />\n </button>\n );\n}\n","import { clsx } from \"clsx\";\nimport type { CSSProperties, HTMLAttributes } from \"react\";\nimport { useContext } from \"react\";\nimport {\n AccordionContext,\n AccordionItemContext,\n PANEL_CONTENT_EASE,\n PANEL_CONTENT_MS,\n PANEL_HEIGHT_EASE,\n PANEL_HEIGHT_MS,\n} from \"./context\";\nimport { accordionStyles, contentTypo } from \"./style\";\n\nexport interface AccordionContentProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport function AccordionContent({ className, children, ...props }: AccordionContentProps) {\n const accordion = useContext(AccordionContext);\n const item = useContext(AccordionItemContext);\n if (!accordion || !item) throw new Error(\"AccordionContent must be used within AccordionItem.\");\n\n const gridStyle: CSSProperties = {\n display: \"grid\",\n gridTemplateRows: item.open ? \"1fr\" : \"0fr\",\n transition: accordion.reduceMotion\n ? undefined\n : `grid-template-rows ${PANEL_HEIGHT_MS}s ${PANEL_HEIGHT_EASE}`,\n };\n const innerMotionStyle: CSSProperties = {\n opacity: item.open ? 1 : 0,\n transform: item.open\n ? \"translate3d(0, 0, 0)\"\n : \"translate3d(0, calc(-1 * var(--refineui-spacing-size-x-small)), 0)\",\n transition: accordion.reduceMotion\n ? undefined\n : `opacity ${PANEL_CONTENT_MS}s ${PANEL_CONTENT_EASE}, transform ${PANEL_CONTENT_MS}s ${PANEL_CONTENT_EASE}`,\n pointerEvents: item.open ? undefined : \"none\",\n };\n\n return (\n <div\n id={item.panelId}\n role=\"region\"\n aria-labelledby={item.triggerId}\n aria-hidden={!item.open}\n data-refineui=\"accordion-panel\"\n style={gridStyle}\n >\n <div className={accordionStyles.panelOuter}>\n <div className={accordionStyles.panelPad} style={innerMotionStyle}>\n <div\n data-refineui=\"accordion-content\"\n className={clsx(\n accordionStyles.panelBody,\n contentTypo[accordion.size],\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import { clsx } from \"clsx\";\nimport { forwardRef } from \"react\";\nimport { iconSizes } from \"@refineui/tokens\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { breadcrumbStyles } from \"./style\";\nimport type {\n BreadcrumbEllipsisProps,\n BreadcrumbEllipsisTriggerProps,\n BreadcrumbItemProps,\n BreadcrumbLinkProps,\n BreadcrumbListProps,\n BreadcrumbPageProps,\n BreadcrumbProps,\n BreadcrumbSeparatorProps,\n} from \"./types\";\n\nexport function Breadcrumb({ className, ...props }: BreadcrumbProps) {\n return (\n <nav\n data-refineui=\"breadcrumb\"\n aria-label=\"Breadcrumb\"\n className={clsx(breadcrumbStyles.root, className)}\n {...props}\n />\n );\n}\n\nexport function BreadcrumbList({ className, ...props }: BreadcrumbListProps) {\n return (\n <ol\n className={clsx(\n breadcrumbStyles.list,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function BreadcrumbItem({ className, ...props }: BreadcrumbItemProps) {\n return (\n <li\n className={clsx(breadcrumbStyles.item, className)}\n {...props}\n />\n );\n}\n\nexport const breadcrumbLinkClassName = clsx(\n breadcrumbStyles.textRow,\n breadcrumbStyles.link,\n);\n\nexport function BreadcrumbLink({ className, children, ...props }: BreadcrumbLinkProps) {\n return (\n <a data-refineui=\"breadcrumb-link\" className={clsx(breadcrumbLinkClassName, className)} {...props}>\n {children}\n </a>\n );\n}\n\nexport function BreadcrumbPage({ className, ...props }: BreadcrumbPageProps) {\n return (\n <span\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n data-refineui=\"breadcrumb-page\"\n className={clsx(\n breadcrumbStyles.textRow,\n breadcrumbStyles.page,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function BreadcrumbSeparator({ children, className, ...props }: BreadcrumbSeparatorProps) {\n return (\n <li\n role=\"presentation\"\n aria-hidden\n className={clsx(breadcrumbStyles.separator, className)}\n {...props}\n >\n {children ?? (\n <span className={clsx(breadcrumbStyles.textRow, breadcrumbStyles.separatorText)}>/</span>\n )}\n </li>\n );\n}\n\nexport function BreadcrumbEllipsis({ className, ...props }: BreadcrumbEllipsisProps) {\n return (\n <span\n data-refineui=\"breadcrumb-ellipsis\"\n className={clsx(\n breadcrumbStyles.ellipsis,\n className,\n )}\n {...props}\n >\n <WebIcon\n name=\"more-horizontal\"\n size={iconSizes.small}\n color=\"currentColor\"\n fallback=\"⋯\"\n className=\"items-center justify-center\"\n />\n </span>\n );\n}\n\nexport const BreadcrumbEllipsisTrigger = forwardRef<HTMLButtonElement, BreadcrumbEllipsisTriggerProps>(\n function BreadcrumbEllipsisTrigger({ className, type = \"button\", children, ...props }, ref) {\n return (\n <button\n ref={ref}\n type={type}\n data-refineui=\"breadcrumb-ellipsis\"\n className={clsx(\n breadcrumbStyles.ellipsisTrigger,\n className,\n )}\n {...props}\n >\n {children ?? (\n <WebIcon\n name=\"more-horizontal\"\n size={iconSizes.small}\n color=\"currentColor\"\n fallback=\"⋯\"\n className=\"items-center justify-center\"\n />\n )}\n </button>\n );\n },\n);\n","import { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\nexport const breadcrumbStyles = {\n textRow: `${componentTextClass(componentTypographyTokens.breadcrumb.row)} whitespace-nowrap`,\n root: \"py-refineui-size-x-small\",\n list: \"m-0 flex flex-wrap list-none items-center gap-refineui-size-medium p-0\",\n item: \"inline-flex items-center\",\n link:\n \"box-border inline-flex min-h-refineui-button-min-height-sm items-center justify-center rounded-refineui-large px-refineui-size-medium py-refineui-size-x-small text-refineui-alias-foreground-tertiary no-underline outline-none transition-[color,background-color] duration-[var(--refineui-motion-duration-fast)]\",\n page:\n \"inline-flex items-center px-refineui-size-medium py-refineui-size-x-small font-medium text-refineui-alias-foreground-primary\",\n separator: \"inline-flex shrink-0 items-center\",\n separatorText: \"inline-flex items-center text-refineui-alias-foreground-tertiary select-none\",\n ellipsis:\n \"box-border inline-flex min-h-refineui-button-min-height-sm shrink-0 items-center justify-center rounded-refineui-large px-refineui-size-medium py-refineui-size-x-small text-refineui-alias-foreground-tertiary leading-none\",\n ellipsisTrigger:\n \"box-border inline-flex min-h-refineui-button-min-height-sm shrink-0 cursor-pointer items-center justify-center rounded-refineui-large border-none bg-transparent px-refineui-size-medium py-refineui-size-x-small text-refineui-alias-foreground-tertiary leading-none outline-none transition-[color,background-color] duration-[var(--refineui-motion-duration-fast)]\",\n} as const;\n","import { clsx } from \"clsx\";\nimport { createContext, useContext } from \"react\";\nimport { footerStyles } from \"./style\";\nimport type {\n FooterBrandDescriptionProps,\n FooterBrandNameProps,\n FooterBrandProps,\n FooterCopyrightProps,\n FooterExploreProps,\n FooterGroupLabelProps,\n FooterGroupProps,\n FooterLinkProps,\n FooterLocaleProps,\n FooterLogoProps,\n FooterMetaEndProps,\n FooterMetaProps,\n FooterNavProps,\n FooterProps,\n FooterSocialProps,\n} from \"./types\";\n\ntype FooterLinkRegion = \"default\" | \"social\" | \"locale\";\n\nconst FooterLinkRegionContext = createContext<FooterLinkRegion>(\"default\");\n\n/** Site footer landmark — token composition (no Web Kit COMPONENT_SET). */\nexport function Footer({ className, ...props }: FooterProps) {\n return (\n <footer\n data-refineui=\"footer\"\n className={clsx(footerStyles.root, className)}\n {...props}\n />\n );\n}\n\nexport function FooterExplore({ className, ...props }: FooterExploreProps) {\n return (\n <div\n data-refineui=\"footer-explore\"\n className={clsx(footerStyles.explore, className)}\n {...props}\n />\n );\n}\n\n/** Alias of `FooterExplore`. */\nexport const FooterContent = FooterExplore;\n\nexport function FooterBrand({ className, ...props }: FooterBrandProps) {\n return (\n <div\n data-refineui=\"footer-brand\"\n className={clsx(footerStyles.brand, className)}\n {...props}\n />\n );\n}\n\nexport function FooterLogo({ className, ...props }: FooterLogoProps) {\n return (\n <div\n data-refineui=\"footer-logo\"\n className={clsx(footerStyles.logo, className)}\n {...props}\n />\n );\n}\n\nexport function FooterBrandName({ className, ...props }: FooterBrandNameProps) {\n return (\n <p\n data-refineui=\"footer-brand-name\"\n className={clsx(footerStyles.brandName, className)}\n {...props}\n />\n );\n}\n\nexport function FooterBrandDescription({ className, ...props }: FooterBrandDescriptionProps) {\n return (\n <p\n data-refineui=\"footer-brand-description\"\n className={clsx(footerStyles.brandDescription, className)}\n {...props}\n />\n );\n}\n\nexport function FooterNav({ className, \"aria-label\": ariaLabel = \"Footer\", ...props }: FooterNavProps) {\n return (\n <nav\n data-refineui=\"footer-nav\"\n aria-label={ariaLabel}\n className={clsx(footerStyles.nav, className)}\n {...props}\n />\n );\n}\n\nexport function FooterGroup({ className, ...props }: FooterGroupProps) {\n return (\n <div\n data-refineui=\"footer-group\"\n className={clsx(footerStyles.group, className)}\n {...props}\n />\n );\n}\n\nexport function FooterGroupLabel({ className, ...props }: FooterGroupLabelProps) {\n return (\n <p\n data-refineui=\"footer-group-label\"\n className={clsx(footerStyles.groupLabel, className)}\n {...props}\n />\n );\n}\n\nexport const footerLinkClassName = footerStyles.link;\nexport const footerSocialLinkClassName = footerStyles.socialLink;\nexport const footerLocaleLinkClassName = footerStyles.localeLink;\nexport const footerLocaleTriggerClassName = footerStyles.localeTrigger;\n\nexport function FooterLink({ className, ...props }: FooterLinkProps) {\n const region = useContext(FooterLinkRegionContext);\n const regionClass =\n region === \"social\"\n ? footerSocialLinkClassName\n : region === \"locale\"\n ? footerLocaleLinkClassName\n : footerLinkClassName;\n return (\n <a\n data-refineui=\"footer-link\"\n className={clsx(regionClass, className)}\n {...props}\n />\n );\n}\n\nexport function FooterMeta({ className, ...props }: FooterMetaProps) {\n return (\n <div\n data-refineui=\"footer-meta\"\n className={clsx(footerStyles.meta, className)}\n {...props}\n />\n );\n}\n\n/** Alias of `FooterMeta`. */\nexport const FooterBottom = FooterMeta;\n\nexport function FooterMetaEnd({ className, ...props }: FooterMetaEndProps) {\n return (\n <div\n data-refineui=\"footer-meta-end\"\n className={clsx(footerStyles.metaEnd, className)}\n {...props}\n />\n );\n}\n\nexport function FooterCopyright({ className, ...props }: FooterCopyrightProps) {\n return (\n <p\n data-refineui=\"footer-copyright\"\n className={clsx(footerStyles.copyright, className)}\n {...props}\n />\n );\n}\n\nexport function FooterLocale({\n className,\n ...props\n}: FooterLocaleProps) {\n return (\n <FooterLinkRegionContext.Provider value=\"locale\">\n <div\n data-refineui=\"footer-locale\"\n className={clsx(footerStyles.locale, className)}\n {...props}\n />\n </FooterLinkRegionContext.Provider>\n );\n}\n\nexport function FooterSocial({ className, ...props }: FooterSocialProps) {\n return (\n <FooterLinkRegionContext.Provider value=\"social\">\n <div\n data-refineui=\"footer-social\"\n className={clsx(footerStyles.social, className)}\n {...props}\n />\n </FooterLinkRegionContext.Provider>\n );\n}\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\nimport {\n buttonLabelSizeClass,\n buttonStyles,\n buttonVariantClass,\n} from \"../../recipes/button.recipe\";\n\n/**\n * Site footer — sitemap, then meta: social | lockup | locale.\n * Brand stays centered even when social / locale slots are omitted\n * (`md:grid-cols-[1fr_auto_1fr]` + explicit column starts).\n */\nexport const footerStyles = {\n root: clsx(\n \"box-border flex w-full flex-col gap-refineui-size-xxx-large\",\n \"border-t-refineui-hairline border-refineui-alias-border-default\",\n \"bg-transparent\",\n \"px-refineui-size-xx-large py-refineui-size-xxx-large\",\n ),\n explore: \"flex w-full flex-col\",\n /** One-line lockup — always meta center column. */\n brand: clsx(\n \"flex min-w-0 flex-row flex-wrap items-center justify-center gap-refineui-size-small\",\n \"md:col-start-2 md:justify-self-center\",\n ),\n logo: \"flex shrink-0 items-center text-refineui-alias-foreground-primary\",\n brandName: clsx(\n componentTextClass(componentTypographyTokens.footer.brandName),\n \"m-0 text-refineui-alias-foreground-primary\",\n ),\n brandDescription: clsx(\n componentTextClass(componentTypographyTokens.footer.brandDescription),\n \"m-0 text-refineui-alias-foreground-tertiary\",\n ),\n nav: clsx(\n \"grid w-full items-start\",\n \"gap-x-refineui-size-xxx-large gap-y-refineui-size-xx-large\",\n ),\n group: \"flex min-w-0 flex-col gap-refineui-size-large\",\n groupLabel: clsx(\n componentTextClass(componentTypographyTokens.footer.groupLabel),\n \"m-0 text-refineui-alias-foreground-primary\",\n ),\n link: clsx(\n componentTextClass(componentTypographyTokens.footer.link),\n /** `min-h` carries the WCAG 2.2 Target Size (Minimum) 24px floor — the 20px line box alone is under it. */\n \"box-border inline-flex w-fit min-h-refineui-foundation-size-240 cursor-pointer items-center\",\n \"text-refineui-alias-foreground-tertiary no-underline outline-none\",\n \"transition-[color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]\",\n ),\n meta: clsx(\n \"grid w-full items-center gap-refineui-size-xx-large\",\n \"grid-cols-1 justify-items-center\",\n \"md:grid-cols-[1fr_auto_1fr] md:justify-items-stretch md:gap-refineui-size-x-large\",\n ),\n metaEnd: \"flex shrink-0 items-center md:col-start-3 md:justify-self-end\",\n locale: \"flex shrink-0 items-center\",\n localeLink: clsx(\n componentTextClass(componentTypographyTokens.footer.copyright),\n \"box-border inline-flex w-fit cursor-pointer items-center\",\n \"text-refineui-alias-foreground-tertiary no-underline outline-none\",\n \"transition-[color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]\",\n ),\n /** Select trigger chrome — Button `outline` / `sm` recipe (plain Select). */\n localeTrigger: clsx(\n buttonStyles.base,\n buttonVariantClass.outline,\n buttonLabelSizeClass.sm,\n \"w-fit min-w-0 shrink-0\",\n ),\n copyright: clsx(\n componentTextClass(componentTypographyTokens.footer.copyright),\n \"m-0 text-refineui-alias-foreground-primary\",\n ),\n social: clsx(\n \"flex flex-wrap items-center justify-center gap-refineui-size-large\",\n \"md:col-start-1 md:justify-self-start md:justify-start\",\n ),\n /** Box is the 24px tap target; the glyph inside stays 16px (see `refineui.css`). */\n socialLink: clsx(\n \"box-border inline-flex size-refineui-foundation-size-240 shrink-0 cursor-pointer items-center justify-center\",\n \"text-refineui-alias-foreground-tertiary no-underline outline-none\",\n \"transition-[color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]\",\n ),\n} as const;\n","import { clsx } from \"clsx\";\nimport { useState, type ReactNode } from \"react\";\nimport { iconSizes } from \"@refineui/tokens\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { Button } from \"../Button\";\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectPortal,\n SelectTrigger,\n SelectValue,\n} from \"../Select\";\nimport { calendarStyles } from \"./style\";\nimport type { CalendarProps } from \"./types\";\n\nconst WEEKDAYS = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"] as const;\nconst MONTH_COUNT = 12;\n/** Years listed before the earlier of the viewed year and the current year. */\nconst YEAR_OPTIONS_BEFORE = 50;\n/** Years listed after the later of the viewed year and the current year. */\nconst YEAR_OPTIONS_AFTER = 10;\n\nfunction startOfDay(d: Date) {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n}\n\nfunction sameDay(a: Date, b: Date) {\n return (\n a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate()\n );\n}\n\nfunction normalizeRange(start?: Date, end?: Date) {\n if (!start || !end) return { start, end };\n const t0 = startOfDay(start).getTime();\n const t1 = startOfDay(end).getTime();\n return t0 <= t1 ? { start, end } : { start: end, end: start };\n}\n\nfunction getWeekdayLabels(weekStartsOn: 0 | 1) {\n return [...WEEKDAYS.slice(weekStartsOn), ...WEEKDAYS.slice(0, weekStartsOn)];\n}\n\nfunction formatMonthName(year: number, month: number) {\n return new Intl.DateTimeFormat(\"en-US\", { month: \"long\" }).format(new Date(year, month, 1));\n}\n\nconst MONTH_LABELS = Array.from({ length: MONTH_COUNT }, (_, monthIndex) =>\n formatMonthName(2000, monthIndex),\n);\n\nfunction yearOptionsForView(viewYear: number): number[] {\n const referenceYear = new Date().getFullYear();\n const startYear = Math.min(viewYear, referenceYear) - YEAR_OPTIONS_BEFORE;\n const endYear = Math.max(viewYear, referenceYear) + YEAR_OPTIONS_AFTER;\n const years: number[] = [];\n for (let yearOption = startYear; yearOption <= endYear; yearOption += 1) {\n years.push(yearOption);\n }\n return years;\n}\n\nfunction CalendarCaptionSelect({\n value,\n placeholder,\n ariaLabel,\n header,\n onValueChange,\n children,\n}: {\n value: string;\n placeholder: string;\n ariaLabel: string;\n header: \"caption-month\" | \"caption-year\";\n onValueChange: (value: string) => void;\n children: ReactNode;\n}) {\n return (\n <Select value={value} onValueChange={onValueChange} aria-label={ariaLabel} size=\"sm\">\n <SelectTrigger\n appearance=\"plain\"\n data-calendar-header={header}\n className={calendarStyles.captionButton}\n > <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectPortal>\n <SelectContent>\n <SelectGroup>{children}</SelectGroup>\n </SelectContent>\n </SelectPortal>\n </Select>\n );\n}\n\ntype MonthOffset = -1 | 0 | 1;\ntype GridCell = { day: number; monthOffset: MonthOffset };\n\nfunction getMonthGrid(year: number, month: number, weekStartsOn: 0 | 1): GridCell[] {\n const first = new Date(year, month, 1);\n const last = new Date(year, month + 1, 0);\n const daysInMonth = last.getDate();\n const jsDay = first.getDay();\n const startPad = (jsDay - weekStartsOn + 7) % 7;\n\n const result: GridCell[] = [];\n const prevMonthLast = new Date(year, month, 0).getDate();\n for (let i = 0; i < startPad; i++) {\n result.push({ day: prevMonthLast - startPad + i + 1, monthOffset: -1 });\n }\n for (let d = 1; d <= daysInMonth; d++) {\n result.push({ day: d, monthOffset: 0 });\n }\n const remaining = 42 - result.length;\n for (let i = 1; i <= remaining; i++) {\n result.push({ day: i, monthOffset: 1 });\n }\n return result;\n}\n\nfunction chunkWeeks(cells: GridCell[]): GridCell[][] {\n const weeks: GridCell[][] = [];\n for (let i = 0; i < cells.length; i += 7) {\n weeks.push(cells.slice(i, i + 7));\n }\n return weeks;\n}\n\nexport function Calendar({\n mode = \"single\",\n value,\n onChange,\n rangeStart,\n rangeEnd,\n onRangeChange,\n weekStartsOn = 0,\n defaultMonth,\n className,\n ...props\n}: CalendarProps) {\n const isRangeMode = mode === \"range\";\n\n const [internalRange, setInternalRange] = useState<{ start?: Date; end?: Date }>({});\n const effectiveStart = rangeStart ?? internalRange.start;\n const effectiveEnd = rangeEnd ?? internalRange.end;\n const { start: normStart, end: normEnd } = normalizeRange(effectiveStart, effectiveEnd);\n\n const [view, setView] = useState(() => value ?? normStart ?? defaultMonth ?? new Date());\n const year = view.getFullYear();\n const month = view.getMonth();\n const cells = getMonthGrid(year, month, weekStartsOn);\n const weeks = chunkWeeks(cells);\n const weekdayLabels = getWeekdayLabels(weekStartsOn);\n const monthName = formatMonthName(year, month);\n\n const getDateFromCell = (d: number, monthOffset: MonthOffset) => new Date(year, month + monthOffset, d);\n\n const setRange = (start: Date | undefined, end: Date | undefined) => {\n if (onRangeChange) onRangeChange(start, end);\n else setInternalRange({ start, end });\n };\n\n const handleDayClick = (d: number, monthOffset: MonthOffset) => {\n const date = getDateFromCell(d, monthOffset);\n if (isRangeMode) {\n const s = effectiveStart;\n const e = effectiveEnd;\n if (!s || (s && e)) {\n setRange(date, undefined);\n } else {\n const t = startOfDay(date).getTime();\n const st = startOfDay(s).getTime();\n if (t < st) setRange(date, s);\n else setRange(s, date);\n }\n } else {\n setView(date);\n onChange?.(date);\n }\n };\n\n const renderDayButton = (cell: GridCell, key: string) => {\n const { day, monthOffset } = cell;\n const currentDate = getDateFromCell(day, monthOffset);\n const isCurrentMonth = monthOffset === 0;\n const t = startOfDay(currentDate).getTime();\n\n const hasRange = !!(normStart && normEnd);\n const rangeSingleDay = hasRange && sameDay(normStart, normEnd);\n const rangeSpan = hasRange && !rangeSingleDay;\n const pendingStart = isRangeMode && normStart && !normEnd;\n\n let isStart = false;\n let isEnd = false;\n let inRangeMiddle = false;\n if (rangeSpan && normStart && normEnd) {\n const st = startOfDay(normStart).getTime();\n const en = startOfDay(normEnd).getTime();\n isStart = sameDay(currentDate, normStart);\n isEnd = sameDay(currentDate, normEnd);\n inRangeMiddle = t > st && t < en;\n }\n\n const blackFull = () => (\n <button\n key={key}\n type=\"button\"\n data-refineui=\"calendar-day\"\n data-selected\n data-current-month={isCurrentMonth ? \"\" : undefined}\n data-other-month={!isCurrentMonth ? \"\" : undefined}\n role=\"gridcell\"\n onClick={() => handleDayClick(day, monthOffset)}\n className={clsx(\n calendarStyles.dayBase,\n calendarStyles.daySelected,\n )}\n >\n {day}\n </button>\n );\n\n const grayMiddle = () => (\n <button\n key={key}\n type=\"button\"\n data-refineui=\"calendar-day\"\n data-range-middle\n data-current-month={isCurrentMonth ? \"\" : undefined}\n data-other-month={!isCurrentMonth ? \"\" : undefined}\n role=\"gridcell\"\n onClick={() => handleDayClick(day, monthOffset)}\n className={clsx(\n calendarStyles.dayBase,\n calendarStyles.dayRangeMiddle,\n )}\n >\n {day}\n </button>\n );\n\n const endpointRange = (endpoint: \"start\" | \"end\") => (\n <div\n key={key}\n className={clsx(\n calendarStyles.dayWrapEndpoint,\n endpoint === \"start\" && calendarStyles.dayWrapEndpointStart,\n endpoint === \"end\" && calendarStyles.dayWrapEndpointEnd,\n )}\n >\n <button\n type=\"button\"\n data-refineui=\"calendar-day\"\n data-selected\n data-current-month={isCurrentMonth ? \"\" : undefined}\n data-other-month={!isCurrentMonth ? \"\" : undefined}\n data-range-endpoint={endpoint}\n role=\"gridcell\"\n onClick={() => handleDayClick(day, monthOffset)}\n className={clsx(\n calendarStyles.dayBase,\n calendarStyles.daySelected,\n )}\n >\n {day}\n </button>\n </div>\n );\n\n if (!isCurrentMonth) {\n const selOther = value && !isRangeMode && sameDay(currentDate, value);\n const inSelectedRange =\n isRangeMode &&\n hasRange &&\n t >= startOfDay(normStart!).getTime() &&\n t <= startOfDay(normEnd!).getTime();\n const showBlackOther = selOther || (inSelectedRange && (sameDay(currentDate, normStart!) || sameDay(currentDate, normEnd!)));\n return (\n <button\n key={key}\n type=\"button\"\n data-refineui=\"calendar-day\"\n data-other-month\n {...(showBlackOther ? { \"data-selected\": \"\" } : {})}\n role=\"gridcell\"\n onClick={() => handleDayClick(day, monthOffset)}\n className={clsx(\n calendarStyles.dayBase,\n showBlackOther\n ? calendarStyles.daySelected\n : calendarStyles.dayOtherMonthDefault,\n )}\n >\n {day}\n </button>\n );\n }\n\n if (isRangeMode && pendingStart && normStart && sameDay(currentDate, normStart)) {\n return blackFull();\n }\n\n if (isRangeMode && rangeSingleDay && normStart && sameDay(currentDate, normStart)) {\n return blackFull();\n }\n\n if (isRangeMode && rangeSpan) {\n if (inRangeMiddle) return grayMiddle();\n if (isStart && !isEnd) return endpointRange(\"start\");\n if (!isStart && isEnd) return endpointRange(\"end\");\n }\n\n const isSelectedSingle = !isRangeMode && !!value && sameDay(currentDate, value);\n return (\n <button\n key={key}\n type=\"button\"\n data-refineui=\"calendar-day\"\n data-current-month\n {...(isSelectedSingle ? { \"data-selected\": \"\" } : {})}\n role=\"gridcell\"\n onClick={() => handleDayClick(day, monthOffset)}\n className={clsx(\n calendarStyles.dayBase,\n isSelectedSingle\n ? calendarStyles.daySelected\n : calendarStyles.dayDefault,\n )}\n >\n {day}\n </button>\n );\n };\n\n return (\n <div\n data-refineui=\"calendar\"\n role=\"grid\"\n aria-label=\"Calendar\"\n className={clsx(\n calendarStyles.root,\n className,\n )}\n {...props}\n >\n <div className={calendarStyles.header}>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n layout=\"icon\"\n data-calendar-header=\"nav-prev\"\n aria-label=\"Previous month\"\n className={calendarStyles.navButton}\n onClick={() => setView(new Date(year, month - 1))}\n >\n <WebIcon name=\"chevron-left\" size={iconSizes.small} color=\"currentColor\" fallback=\"‹\" />\n </Button>\n <CalendarCaptionSelect\n value={String(month)}\n placeholder={monthName}\n ariaLabel={`Month: ${monthName}`}\n header=\"caption-month\"\n onValueChange={(nextMonth) => {\n setView(new Date(year, Number.parseInt(nextMonth, 10), 1));\n }}\n >\n {MONTH_LABELS.map((label, monthIndex) => (\n <SelectItem key={label} value={String(monthIndex)}>\n {label}\n </SelectItem>\n ))}\n </CalendarCaptionSelect>\n <CalendarCaptionSelect\n value={String(year)}\n placeholder={String(year)}\n ariaLabel={`Year: ${year}`}\n header=\"caption-year\"\n onValueChange={(nextYear) => {\n setView(new Date(Number.parseInt(nextYear, 10), month, 1));\n }}\n >\n {yearOptionsForView(year).map((yearOption) => (\n <SelectItem key={yearOption} value={String(yearOption)}>\n {String(yearOption)}\n </SelectItem>\n ))}\n </CalendarCaptionSelect>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n layout=\"icon\"\n data-calendar-header=\"nav-next\"\n aria-label=\"Next month\"\n className={calendarStyles.navButton}\n onClick={() => setView(new Date(year, month + 1))}\n >\n <WebIcon name=\"chevron-right\" size={iconSizes.small} color=\"currentColor\" fallback=\"›\" />\n </Button>\n </div>\n\n <div className={calendarStyles.body}>\n <div className={clsx(\"grid gap-refineui-size-none\", calendarStyles.grid7)}>\n {weekdayLabels.map((w) => (\n <div\n key={w}\n className={calendarStyles.weekday}\n >\n {w}\n </div>\n ))}\n </div>\n {weeks.map((row, wi) => (\n <div key={wi} className={clsx(\"grid gap-refineui-size-none\", calendarStyles.grid7)}>\n {row.map((cell, di) => renderDayButton(cell, `d-${wi}-${di}-${cell.monthOffset}-${cell.day}`))}\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\nexport const calendarStyles = {\n grid7: \"[grid-template-columns:repeat(7,var(--refineui-size-calendar-day-size))]\",\n dayBase: clsx(\n componentTextClass(componentTypographyTokens.calendar.day),\n \"box-border inline-flex size-refineui-calendar-day-size min-h-refineui-calendar-day-size min-w-refineui-calendar-day-size cursor-pointer items-center justify-center border-none p-0\",\n ),\n daySelected: \"rounded-refineui-large bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed\",\n dayRangeMiddle:\n \"rounded-refineui-none bg-refineui-alias-background-primary-hover text-refineui-alias-foreground-primary\",\n dayDefault: \"rounded-refineui-large bg-transparent text-refineui-alias-foreground-primary\",\n dayOtherMonthDefault: \"rounded-refineui-large bg-transparent text-refineui-alias-foreground-disabled\",\n dayWrapEndpoint: \"box-border flex size-refineui-calendar-day-size items-center justify-center bg-refineui-alias-background-primary-hover\",\n dayWrapEndpointStart: \"rounded-s-refineui-large\",\n dayWrapEndpointEnd: \"rounded-e-refineui-large\",\n root:\n \"box-border flex w-fit min-w-refineui-calendar-min-width flex-col gap-refineui-size-none rounded-refineui-large bg-refineui-alias-background-primary p-refineui-size-x-large\",\n header: \"flex w-full min-w-0 items-center justify-between pb-refineui-size-large\",\n navButton: \"shrink-0 text-refineui-alias-foreground-primary\",\n captionButton: clsx(\n \"shrink-0\",\n \"border-refineui-none border-transparent bg-transparent\",\n \"px-refineui-size-x-small py-refineui-size-xx-small\",\n \"text-refineui-alias-foreground-primary\",\n ),\n body: \"flex flex-col gap-refineui-size-small\",\n weekday: clsx(\n componentTextClass(componentTypographyTokens.calendar.weekday),\n \"box-border flex w-refineui-calendar-day-size items-center justify-center py-refineui-size-x-small text-center text-refineui-alias-foreground-primary\",\n ),\n} as const;\n","import { clsx } from \"clsx\";\nimport type { HTMLAttributes, ReactNode } from \"react\";\nimport { componentSizes } from \"../../componentSizes\";\nimport { dividerStyles } from \"./style\";\nimport type { DividerAlign, DividerProps } from \"./types\";\n\nfunction LineSegment({ grow }: { grow: boolean }) {\n return (\n <div\n data-name=\"Vector\"\n className={clsx(\n dividerStyles.line,\n grow ? dividerStyles.lineGrow : dividerStyles.lineShort,\n )}\n />\n );\n}\n\nfunction DividerCircleGlyph() {\n return (\n <span\n aria-hidden\n className={dividerStyles.iconCircle}\n style={{\n width: componentSizes.dividerIconCircleDiameter,\n height: componentSizes.dividerIconCircleDiameter,\n }}\n />\n );\n}\n\n/** Divider — layout default · content · icon; align center · left · right (horizontal). */\nexport function Divider(props: DividerProps) {\n const p = props as Omit<HTMLAttributes<HTMLDivElement>, \"children\"> & {\n layout?: \"default\" | \"content\" | \"icon\";\n align?: DividerAlign;\n children?: ReactNode;\n };\n const { layout = \"default\", align = \"center\", children, className, ...htmlProps } = p;\n\n const effectiveLayout =\n layout === \"icon\" ? \"icon\" : layout === \"content\" && children != null ? \"content\" : \"default\";\n\n if (effectiveLayout === \"default\") {\n return (\n <div\n data-refineui=\"divider\"\n data-layout=\"default\"\n role=\"separator\"\n aria-orientation=\"horizontal\"\n className={clsx(\n dividerStyles.default,\n className,\n )}\n {...htmlProps}\n />\n );\n }\n\n const isLeft = align === \"left\";\n const isRight = align === \"right\";\n\n const rowClass = dividerStyles.row;\n\n if (effectiveLayout === \"content\") {\n return (\n <div\n data-refineui=\"divider\"\n data-layout=\"content\"\n data-align={align}\n data-name=\"Divider\"\n role=\"separator\"\n aria-orientation=\"horizontal\"\n className={clsx(rowClass, className)}\n {...htmlProps}\n >\n <LineSegment grow={!isLeft} />\n <span className={dividerStyles.contentLabel}>\n {children}\n </span>\n <LineSegment grow={!isRight} />\n </div>\n );\n }\n\n return (\n <div\n data-refineui=\"divider\"\n data-layout=\"icon\"\n data-align={align}\n data-name=\"Divider\"\n role=\"separator\"\n aria-orientation=\"horizontal\"\n className={clsx(rowClass, className)}\n {...htmlProps}\n >\n <LineSegment grow={!isLeft} />\n <div\n data-name=\"Circle\"\n className={dividerStyles.iconSlot}\n >\n <DividerCircleGlyph />\n </div>\n <LineSegment grow={!isRight} />\n </div>\n );\n}\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\nexport const dividerStyles = {\n line:\n \"h-(--refineui-stroke-width-thin) min-h-(--refineui-stroke-width-thin) shrink-0 bg-refineui-alias-border-default\",\n lineGrow: \"min-w-0 flex-1\",\n lineShort: \"min-w-refineui-divider-short-end w-refineui-divider-short-end\",\n iconCircle:\n \"absolute start-refineui-divider-icon-circle-inset top-refineui-divider-icon-circle-inset box-border rounded-refineui-circle border-refineui-thin border-refineui-alias-foreground-brand\",\n default:\n \"box-border h-(--refineui-stroke-width-thin) min-h-(--refineui-stroke-width-thin) w-full border-none bg-refineui-alias-border-default\",\n row: \"box-border flex w-full items-center justify-center gap-refineui-size-medium overflow-hidden\",\n contentLabel: clsx(\n componentTextClass(componentTypographyTokens.divider.contentLabel),\n \"whitespace-nowrap text-refineui-alias-foreground-brand\",\n ),\n iconSlot: \"relative min-w-refineui-divider-icon-slot size-refineui-divider-icon-slot shrink-0 overflow-visible\",\n} as const;\n","import { clsx } from \"clsx\";\nimport {\n layoutAlignClass,\n layoutDirectionClass,\n layoutGapClass,\n layoutJustifyClass,\n layoutStyles,\n layoutWrapClass,\n} from \"./style\";\nimport type { LayoutWrap, StackProps } from \"./types\";\n\nfunction resolveWrap(wrap: StackProps[\"wrap\"]): LayoutWrap | undefined {\n if (wrap === true) return \"wrap\";\n if (wrap === false) return \"nowrap\";\n return wrap;\n}\n\n/** One-axis flex layout with Foundation `gap`. */\nexport function Stack({\n as: Component = \"div\",\n direction = \"column\",\n gap = \"sizeNone\",\n align,\n justify,\n wrap,\n inline = false,\n className,\n ...props\n}: StackProps) {\n const resolvedWrap = resolveWrap(wrap);\n\n return (\n <Component\n data-refineui=\"stack\"\n data-direction={direction}\n className={clsx(\n layoutStyles.stack,\n inline ? \"inline-flex\" : \"flex\",\n layoutDirectionClass[direction],\n layoutGapClass[gap],\n align && layoutAlignClass[align],\n justify && layoutJustifyClass[justify],\n resolvedWrap && layoutWrapClass[resolvedWrap],\n className,\n )}\n {...props}\n />\n );\n}\n","import type { FoundationSizeName, SemanticColorName, SpacingTokens, StrokeWidthTokens } from \"@refineui/tokens\";\nimport type { LayoutAlign, LayoutDirection, LayoutGap, LayoutJustify, LayoutWrap } from \"./types\";\n\nexport function layoutKebab(str: string): string {\n return str\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n .replace(/([A-Z]+)([A-Z][a-z])/g, \"$1-$2\")\n .replace(/([a-zA-Z])(\\d)/g, \"$1-$2\")\n .toLowerCase();\n}\n\nexport function layoutAliasColorVar(name: SemanticColorName): string {\n return `var(--refineui-color-alias-${layoutKebab(name)})`;\n}\n\nexport function layoutFoundationSizeVar(name: FoundationSizeName): string {\n return `var(--refineui-size-${layoutKebab(name)})`;\n}\n\nexport function layoutStrokeVar(name: keyof StrokeWidthTokens): string {\n const rest = name.replace(/^strokeWidth/, \"\");\n const kebab = rest.charAt(0).toLowerCase() + rest.slice(1);\n return `var(--refineui-stroke-width-${layoutKebab(kebab)})`;\n}\n\nexport function layoutRadiusVar(name: string): string {\n return `var(--refineui-radius-${layoutKebab(name)})`;\n}\n\nexport const layoutGapClass = {\n sizeNone: \"gap-refineui-size-none\",\n sizeXXXSmall: \"gap-refineui-size-xxx-small\",\n sizeXXSmall: \"gap-refineui-size-xx-small\",\n sizeXSmall: \"gap-refineui-size-x-small\",\n sizeSmall: \"gap-refineui-size-small\",\n sizeMedium: \"gap-refineui-size-medium\",\n sizeLarge: \"gap-refineui-size-large\",\n sizeXLarge: \"gap-refineui-size-x-large\",\n sizeXXLarge: \"gap-refineui-size-xx-large\",\n sizeXXXLarge: \"gap-refineui-size-xxx-large\",\n} as const satisfies Record<keyof SpacingTokens, string>;\n\nexport const layoutPaddingXClass = {\n sizeNone: \"px-refineui-size-none\",\n sizeXXXSmall: \"px-refineui-size-xxx-small\",\n sizeXXSmall: \"px-refineui-size-xx-small\",\n sizeXSmall: \"px-refineui-size-x-small\",\n sizeSmall: \"px-refineui-size-small\",\n sizeMedium: \"px-refineui-size-medium\",\n sizeLarge: \"px-refineui-size-large\",\n sizeXLarge: \"px-refineui-size-x-large\",\n sizeXXLarge: \"px-refineui-size-xx-large\",\n sizeXXXLarge: \"px-refineui-size-xxx-large\",\n} as const satisfies Record<keyof SpacingTokens, string>;\n\nexport const layoutDirectionClass: Record<LayoutDirection, string> = {\n row: \"flex-row\",\n column: \"flex-col\",\n \"row-reverse\": \"flex-row-reverse\",\n \"column-reverse\": \"flex-col-reverse\",\n};\n\nexport const layoutColumnGapClass = {\n sizeNone: \"gap-x-refineui-size-none\",\n sizeXXXSmall: \"gap-x-refineui-size-xxx-small\",\n sizeXXSmall: \"gap-x-refineui-size-xx-small\",\n sizeXSmall: \"gap-x-refineui-size-x-small\",\n sizeSmall: \"gap-x-refineui-size-small\",\n sizeMedium: \"gap-x-refineui-size-medium\",\n sizeLarge: \"gap-x-refineui-size-large\",\n sizeXLarge: \"gap-x-refineui-size-x-large\",\n sizeXXLarge: \"gap-x-refineui-size-xx-large\",\n sizeXXXLarge: \"gap-x-refineui-size-xxx-large\",\n} as const satisfies Record<keyof SpacingTokens, string>;\n\nexport const layoutRowGapClass = {\n sizeNone: \"gap-y-refineui-size-none\",\n sizeXXXSmall: \"gap-y-refineui-size-xxx-small\",\n sizeXXSmall: \"gap-y-refineui-size-xx-small\",\n sizeXSmall: \"gap-y-refineui-size-x-small\",\n sizeSmall: \"gap-y-refineui-size-small\",\n sizeMedium: \"gap-y-refineui-size-medium\",\n sizeLarge: \"gap-y-refineui-size-large\",\n sizeXLarge: \"gap-y-refineui-size-x-large\",\n sizeXXLarge: \"gap-y-refineui-size-xx-large\",\n sizeXXXLarge: \"gap-y-refineui-size-xxx-large\",\n} as const satisfies Record<keyof SpacingTokens, string>;\n\nexport const layoutAlignClass: Record<LayoutAlign, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n baseline: \"items-baseline\",\n};\n\nexport const layoutJustifyClass: Record<LayoutJustify, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n evenly: \"justify-evenly\",\n};\n\nexport const layoutWrapClass: Record<LayoutWrap, string> = {\n nowrap: \"flex-nowrap\",\n wrap: \"flex-wrap\",\n \"wrap-reverse\": \"flex-wrap-reverse\",\n};\n\nexport const layoutSpacingVar = {\n sizeNone: \"var(--refineui-spacing-size-none)\",\n sizeXXXSmall: \"var(--refineui-spacing-size-xxx-small)\",\n sizeXXSmall: \"var(--refineui-spacing-size-xx-small)\",\n sizeXSmall: \"var(--refineui-spacing-size-x-small)\",\n sizeSmall: \"var(--refineui-spacing-size-small)\",\n sizeMedium: \"var(--refineui-spacing-size-medium)\",\n sizeLarge: \"var(--refineui-spacing-size-large)\",\n sizeXLarge: \"var(--refineui-spacing-size-x-large)\",\n sizeXXLarge: \"var(--refineui-spacing-size-xx-large)\",\n sizeXXXLarge: \"var(--refineui-spacing-size-xxx-large)\",\n} as const satisfies Record<LayoutGap, string>;\n\nexport const layoutStyles = {\n stack: \"box-border min-w-0\",\n grid: \"box-border grid min-w-0 w-full\",\n gridItem: \"box-border min-w-0\",\n container: \"box-border mx-auto w-full max-w-full\",\n box: \"box-border min-w-0\",\n spacer: \"box-border min-h-0 min-w-0 flex-1 self-stretch\",\n} as const;\n\nexport const GRID_COLUMN_MIN = 1;\nexport const GRID_COLUMN_MAX = 12;\n\nexport function resolveGridSpan(span: number): number {\n const n = Math.floor(span);\n if (!Number.isFinite(n)) return GRID_COLUMN_MIN;\n return Math.min(GRID_COLUMN_MAX, Math.max(GRID_COLUMN_MIN, n));\n}\n","import { clsx } from \"clsx\";\nimport {\n layoutAlignClass,\n layoutColumnGapClass,\n layoutFoundationSizeVar,\n layoutGapClass,\n layoutJustifyClass,\n layoutRowGapClass,\n layoutStyles,\n resolveGridSpan,\n} from \"./style\";\nimport type { GridItemProps, GridProps } from \"./types\";\n\n/** CSS grid with equal columns or Foundation `minItem` auto-fit. */\nexport function Grid({\n as: Component = \"div\",\n columns = 1,\n minItem,\n gap = \"sizeNone\",\n columnGap,\n rowGap,\n align,\n justify,\n className,\n style,\n ...props\n}: GridProps) {\n const count = resolveGridSpan(columns);\n const template = minItem\n ? `repeat(auto-fit, minmax(${layoutFoundationSizeVar(minItem)}, 1fr))`\n : `repeat(${count}, minmax(0, 1fr))`;\n\n return (\n <Component\n data-refineui=\"grid\"\n data-columns={minItem ? undefined : count}\n className={clsx(\n layoutStyles.grid,\n layoutGapClass[gap],\n columnGap && layoutColumnGapClass[columnGap],\n rowGap && layoutRowGapClass[rowGap],\n align && layoutAlignClass[align],\n justify && layoutJustifyClass[justify],\n className,\n )}\n style={{ gridTemplateColumns: template, ...style }}\n {...props}\n />\n );\n}\n\n/** Column / row span inside `Grid`. */\nexport function GridItem({\n as: Component = \"div\",\n span = 1,\n rowSpan,\n className,\n style,\n ...props\n}: GridItemProps) {\n const col = resolveGridSpan(span);\n const row = rowSpan != null ? resolveGridSpan(rowSpan) : undefined;\n\n return (\n <Component\n data-refineui=\"grid-item\"\n data-span={col}\n data-row-span={row}\n className={clsx(layoutStyles.gridItem, className)}\n style={{\n gridColumn: `span ${col} / span ${col}`,\n ...(row != null ? { gridRow: `span ${row} / span ${row}` } : {}),\n ...style,\n }}\n {...props}\n />\n );\n}\n","import { clsx } from \"clsx\";\nimport { layoutPaddingXClass, layoutStyles } from \"./style\";\nimport type { ContainerProps } from \"./types\";\n\n/** Full-width column with Foundation horizontal padding. */\nexport function Container({\n as: Component = \"div\",\n padding = \"sizeXXLarge\",\n className,\n ...props\n}: ContainerProps) {\n return (\n <Component\n data-refineui=\"container\"\n className={clsx(layoutStyles.container, layoutPaddingXClass[padding], className)}\n {...props}\n />\n );\n}\n","import { clsx } from \"clsx\";\nimport type { CSSProperties } from \"react\";\nimport {\n layoutAliasColorVar,\n layoutRadiusVar,\n layoutSpacingVar,\n layoutStrokeVar,\n layoutStyles,\n} from \"./style\";\nimport type { BoxProps } from \"./types\";\n\n/** Padding, semantic fill, radius, and border. */\nexport function Box({\n as: Component = \"div\",\n padding,\n paddingX,\n paddingY,\n background,\n radius,\n border,\n borderColor,\n className,\n style,\n ...props\n}: BoxProps) {\n const boxStyle: CSSProperties = {};\n if (padding) boxStyle.padding = layoutSpacingVar[padding];\n if (paddingX) boxStyle.paddingInline = layoutSpacingVar[paddingX];\n if (paddingY) boxStyle.paddingBlock = layoutSpacingVar[paddingY];\n if (background) boxStyle.backgroundColor = layoutAliasColorVar(background);\n if (radius) boxStyle.borderRadius = layoutRadiusVar(radius);\n if (border) {\n boxStyle.borderWidth = layoutStrokeVar(border);\n boxStyle.borderStyle = border === \"strokeWidthNone\" ? \"none\" : \"solid\";\n boxStyle.borderColor = layoutAliasColorVar(borderColor ?? \"borderDefault\");\n } else if (borderColor) {\n boxStyle.borderWidth = layoutStrokeVar(\"strokeWidthThin\");\n boxStyle.borderStyle = \"solid\";\n boxStyle.borderColor = layoutAliasColorVar(borderColor);\n }\n\n return (\n <Component\n data-refineui=\"box\"\n className={clsx(layoutStyles.box, className)}\n style={{ ...boxStyle, ...style }}\n {...props}\n />\n );\n}\n","import { clsx } from \"clsx\";\nimport { layoutStyles } from \"./style\";\nimport type { SpacerProps } from \"./types\";\n\n/** Flex-grow filler between Stack children. */\nexport function Spacer({ className, ...props }: SpacerProps) {\n return <div data-refineui=\"spacer\" className={clsx(layoutStyles.spacer, className)} {...props} />;\n}\n","import { clsx } from \"clsx\";\nimport {\n Children,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type RefObject,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { iconSizes, semanticInteraction } from \"@refineui/tokens\";\nimport { motionMsToNumber } from \"@refineui/utilities/animation\";\nimport { resolveColorTokenValue } from \"@refineui/utilities/color\";\nimport { componentSizes } from \"../../componentSizes\";\nimport { acquireBodyScrollLock } from \"@refineui/utilities/react\";\nimport { componentColorTokens } from \"../../tokens/componentColorTokens\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { useFocusTrap } from \"../../hooks/useFocusTrap\";\nimport { Button } from \"../Button\";\nimport { drawerStyles } from \"./style\";\nimport { ScrollAreaRegion } from \"../ScrollArea/ScrollAreaRegion\";\nimport type {\n DrawerBodyProps,\n DrawerCloseProps,\n DrawerContentProps,\n DrawerDescriptionProps,\n DrawerFooterProps,\n DrawerFooterState,\n DrawerHeaderProps,\n DrawerPlacement,\n DrawerProps,\n DrawerSize,\n DrawerType,\n DrawerTitleProps,\n DrawerTriggerProps,\n} from \"./types\";\n\nconst PANEL_MS = motionMsToNumber(semanticInteraction.duration.panel);\nconst SCRIM_MS = motionMsToNumber(semanticInteraction.duration.overlay);\nconst EASING = semanticInteraction.easing.panel;\n\ntype DrawerContextValue = {\n open: boolean;\n setOpen: (next: boolean) => void;\n placement: DrawerPlacement;\n size: DrawerSize;\n type: DrawerType;\n showFooter: boolean;\n titleId: string;\n descriptionId: string;\n panelRef: RefObject<HTMLDivElement>;\n hasTitle: boolean;\n setHasTitle: (v: boolean) => void;\n hasDescription: boolean;\n setHasDescription: (v: boolean) => void;\n};\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null);\n\nfunction useDrawerContext(component: string): DrawerContextValue {\n const ctx = useContext(DrawerContext);\n if (!ctx) throw new Error(`${component} must be used within <Drawer>`);\n return ctx;\n}\n\nfunction useDrawerOpenState(\n openProp: boolean | undefined,\n defaultOpen: boolean | undefined,\n onOpenChange: ((open: boolean) => void) | undefined,\n): [boolean, (next: boolean) => void] {\n const [internalOpen, setInternalOpen] = useState(!!defaultOpen);\n const isControlled = openProp !== undefined;\n const open = isControlled ? !!openProp : internalOpen;\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange],\n );\n return [open, setOpen];\n}\n\nfunction widthToken(s: DrawerSize): string {\n switch (s) {\n case \"md\":\n return componentSizes.drawerWidthMd;\n case \"lg\":\n return componentSizes.drawerWidthLg;\n default:\n return componentSizes.drawerWidthSm;\n }\n}\n\nexport function Drawer({\n open: openProp,\n defaultOpen,\n onOpenChange,\n type = \"overlay\",\n showFooter = true,\n placement = \"right\",\n size = \"sm\",\n children,\n}: DrawerProps) {\n const defaultByType = type === \"inline\" ? true : defaultOpen;\n const [open, setOpen] = useDrawerOpenState(openProp, defaultByType, onOpenChange);\n const titleId = useId();\n const descriptionId = useId();\n const panelRef = useRef<HTMLDivElement>(null);\n const [hasTitle, setHasTitle] = useState(false);\n const [hasDescription, setHasDescription] = useState(false);\n\n const value = useMemo(\n () => ({\n open,\n setOpen,\n placement,\n size,\n type,\n showFooter,\n titleId,\n descriptionId,\n panelRef,\n hasTitle,\n setHasTitle,\n hasDescription,\n setHasDescription,\n }),\n [\n open,\n setOpen,\n placement,\n size,\n type,\n showFooter,\n titleId,\n descriptionId,\n hasTitle,\n hasDescription,\n ],\n );\n\n return <DrawerContext.Provider value={value}>{children}</DrawerContext.Provider>;\n}\n\nexport const DrawerTrigger = forwardRef<HTMLButtonElement, DrawerTriggerProps>(function DrawerTrigger(\n { onClick, ...props },\n ref,\n) {\n const { setOpen } = useDrawerContext(\"DrawerTrigger\");\n return (\n <Button\n ref={ref}\n {...props}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) setOpen(true);\n }}\n />\n );\n});\n\nexport function DrawerContent({\n className,\n style,\n container,\n children,\n type: typeProp,\n showFooter: showFooterProp,\n placement: placementProp,\n size: sizeProp,\n ...props\n}: DrawerContentProps) {\n const {\n open,\n setOpen,\n type: ctxType,\n showFooter: ctxShowFooter,\n placement: ctxPlacement,\n size: ctxSize,\n titleId,\n descriptionId,\n panelRef,\n hasTitle,\n hasDescription,\n } = useDrawerContext(\"DrawerContent\");\n const [rendering, setRendering] = useState(open);\n const [entered, setEntered] = useState(false);\n\n const drawerType = typeProp ?? ctxType;\n const showFooter = showFooterProp ?? ctxShowFooter;\n const isOverlay = drawerType === \"overlay\";\n\n useFocusTrap(isOverlay && open && entered, panelRef);\n\n useEffect(() => {\n if (open) {\n setRendering(true);\n const id = requestAnimationFrame(() => requestAnimationFrame(() => setEntered(true)));\n return () => cancelAnimationFrame(id);\n }\n setEntered(false);\n const t = window.setTimeout(() => setRendering(false), PANEL_MS);\n return () => window.clearTimeout(t);\n }, [open]);\n\n useEffect(() => {\n if (!isOverlay || !rendering) return;\n return acquireBodyScrollLock();\n }, [isOverlay, rendering]);\n\n useEffect(() => {\n if (!isOverlay || !rendering || !entered) return;\n const handler = (e: KeyboardEvent) => e.key === \"Escape\" && setOpen(false);\n document.addEventListener(\"keydown\", handler);\n return () => document.removeEventListener(\"keydown\", handler);\n }, [isOverlay, rendering, entered, setOpen]);\n\n if (!rendering) return null;\n if (isOverlay && typeof document === \"undefined\") return null;\n\n const placement = placementProp ?? ctxPlacement;\n const size = sizeProp ?? ctxSize;\n const isLeft = placement === \"left\";\n const w = widthToken(size);\n const offX = isLeft ? \"-100%\" : \"100%\";\n\n const panelMotion: CSSProperties = {\n width: `min(${w}, 100vw)`,\n maxWidth: w,\n transform: isOverlay ? (entered ? \"translateX(0)\" : `translateX(${offX})`) : undefined,\n transition: isOverlay ? `transform ${PANEL_MS}ms ${EASING}` : undefined,\n willChange: isOverlay ? \"transform\" : undefined,\n };\n\n const target = isOverlay ? (container ?? document.body) : null;\n\n const panel = (\n <div\n ref={panelRef}\n tabIndex={isOverlay ? -1 : undefined}\n className={clsx(\n drawerStyles.panel,\n isOverlay ? drawerStyles.panelOverlay : drawerStyles.panelInline,\n )}\n style={{ ...panelMotion, ...style }}\n onClick={(e) => e.stopPropagation()}\n >\n {children}\n </div>\n );\n\n const root = (\n <div\n data-refineui=\"drawer\"\n data-state={entered ? \"open\" : \"closed\"}\n role={isOverlay ? \"dialog\" : undefined}\n aria-modal={isOverlay ? \"true\" : undefined}\n aria-labelledby={hasTitle ? titleId : undefined}\n aria-describedby={hasDescription ? descriptionId : undefined}\n className={clsx(\n isOverlay ? drawerStyles.root : drawerStyles.inlineRoot,\n isLeft ? drawerStyles.rootLeft : drawerStyles.rootRight,\n className,\n )}\n {...props}\n >\n {isOverlay ? (\n <div\n role=\"presentation\"\n className={drawerStyles.scrim}\n style={{\n backgroundColor: resolveColorTokenValue(componentColorTokens.drawer.overlay),\n opacity: entered ? 1 : 0,\n transition: `opacity ${SCRIM_MS}ms ${EASING}`,\n pointerEvents: entered ? \"auto\" : \"none\",\n }}\n onClick={() => setOpen(false)}\n aria-hidden\n />\n ) : null}\n {panel}\n </div>\n );\n\n return isOverlay && target ? createPortal(root, target) : root;\n}\n\nexport function DrawerHeader({\n className,\n children,\n showClose = true,\n actions,\n ...props\n}: DrawerHeaderProps) {\n const hasActions = actions != null;\n return (\n <div\n data-name=\"Drawer / Header\"\n className={clsx(\n drawerStyles.header,\n className,\n )}\n {...props}\n >\n <div className={drawerStyles.headerMain}>\n <div className={drawerStyles.headerMainText}>{children}</div>\n {hasActions ? (\n <div className={drawerStyles.headerActions}>{actions}</div>\n ) : null}\n {showClose ? <DrawerClose /> : null}\n </div>\n </div>\n );\n}\n\nexport function DrawerTitle({ className, id, children, ...props }: DrawerTitleProps) {\n const { titleId, setHasTitle } = useDrawerContext(\"DrawerTitle\");\n useEffect(() => {\n setHasTitle(true);\n return () => setHasTitle(false);\n }, [setHasTitle]);\n return (\n <h2\n id={id ?? titleId}\n className={clsx(drawerStyles.title, className)}\n {...props}\n >\n {children}\n </h2>\n );\n}\n\nexport function DrawerDescription({ className, id, children, ...props }: DrawerDescriptionProps) {\n const { descriptionId, setHasDescription } = useDrawerContext(\"DrawerDescription\");\n useEffect(() => {\n setHasDescription(true);\n return () => setHasDescription(false);\n }, [setHasDescription]);\n return (\n <p\n id={id ?? descriptionId}\n className={clsx(drawerStyles.description, className)}\n {...props}\n >\n {children}\n </p>\n );\n}\n\nexport function DrawerBody({ className, ...props }: DrawerBodyProps) {\n return (\n <ScrollAreaRegion\n type=\"hover\"\n data-name=\"Body\"\n className={clsx(drawerStyles.body, className)}\n viewportClassName=\"box-border p-refineui-size-xx-large\"\n {...props}\n />\n );\n}\n\nexport function DrawerFooter({ className, ...props }: DrawerFooterProps) {\n const { showFooter } = useDrawerContext(\"DrawerFooter\");\n if (!showFooter) return null;\n const { children, state, ...rest } = props;\n const count = Children.count(children);\n const resolvedState: DrawerFooterState = state ?? (count <= 1 ? \"single\" : count === 2 ? \"split\" : \"icons\");\n return (\n <div\n data-name=\"Drawer / Footer\"\n className={clsx(\n drawerStyles.footerRoot,\n className,\n )}\n {...rest}\n >\n <div\n data-state={resolvedState}\n className={clsx(\n drawerStyles.footer,\n resolvedState === \"single\" && drawerStyles.footerSingle,\n resolvedState === \"split\" && drawerStyles.footerSplit,\n )}\n >\n {children}\n </div>\n </div>\n );\n}\n\nexport function DrawerClose({\n children,\n onClick,\n className,\n type = \"button\",\n variant,\n size,\n layout,\n ...props\n}: DrawerCloseProps) {\n const { setOpen } = useDrawerContext(\"DrawerClose\");\n const iconOnly = children == null;\n\n return (\n <Button\n {...props}\n type={type}\n variant={variant ?? (iconOnly ? \"ghost\" : \"outline\")}\n size={size ?? \"md\"}\n layout={layout ?? (iconOnly ? \"icon\" : \"label\")}\n aria-label={iconOnly ? \"Close\" : undefined}\n className={className}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) setOpen(false);\n }}\n >\n {iconOnly ? (\n <WebIcon name=\"dismiss\" size={iconSizes.xlarge} color=\"currentColor\" iconStyle=\"regular\" aria-hidden />\n ) : (\n children\n )}\n </Button>\n );\n}\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\nexport const drawerStyles = {\n root: \"fixed inset-0 z-refineui-messages flex\",\n inlineRoot: \"relative z-auto flex\",\n rootLeft: \"justify-start\",\n rootRight: \"justify-end\",\n scrim: \"absolute inset-0 cursor-pointer transition-opacity\",\n panel:\n \"relative box-border flex h-full flex-col overflow-hidden bg-refineui-alias-background-primary outline-none\",\n panelOverlay: \"shadow-refineui-16\",\n panelInline: \"shadow-none\",\n header: \"flex shrink-0 items-start px-refineui-size-xx-large pb-refineui-size-medium pt-refineui-size-xx-large\",\n headerMain: \"flex min-h-0 min-w-0 flex-1 items-center gap-refineui-size-x-small\",\n headerMainText: \"flex min-w-0 flex-1 flex-col gap-refineui-size-xxx-small\",\n headerActions: \"flex shrink-0 items-center gap-refineui-size-x-small\",\n title: clsx(\n componentTextClass(componentTypographyTokens.drawer.title),\n \"m-0 min-w-0 text-refineui-alias-foreground-primary\",\n ),\n description: clsx(\n componentTextClass(componentTypographyTokens.drawer.description),\n \"m-0 min-w-0 text-refineui-alias-foreground-secondary\",\n ),\n body: clsx(\n componentTextClass(componentTypographyTokens.drawer.body),\n \"box-border min-h-0 flex-1 text-refineui-alias-foreground-primary\",\n ),\n footerRoot: \"mt-auto shrink-0\",\n footer: \"flex items-center justify-end gap-refineui-size-x-small px-refineui-size-xx-large py-refineui-size-x-large\",\n footerIcons: \"\",\n footerSingle: \"[&>*]:w-full\",\n footerSplit: \"[&>*]:min-w-0 [&>*]:flex-1\",\n} as const;\n","import { clsx } from \"clsx\";\nimport type {\n CSSProperties,\n Dispatch,\n HTMLAttributes,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n ReactNode,\n Ref,\n RefObject,\n SetStateAction,\n} from \"react\";\nimport {\n cloneElement,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { iconSizes, spacings, strokeWidths, zIndex } from \"@refineui/tokens\";\nimport { resolveColorTokenValue } from \"@refineui/utilities/color\";\nimport { componentSizes } from \"../../componentSizes\";\nimport { componentColorTokens } from \"../../tokens/componentColorTokens\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { dropdownStyles } from \"./style\";\nimport { acquireBodyScrollLock, composeRefs, getMergeableTriggerChild } from \"@refineui/utilities/react\";\nimport { ScrollAreaRegion } from \"../ScrollArea/ScrollAreaRegion\";\nimport { RadioInput } from \"../Radio/RadioInput\";\nimport type {\n DropdownContentProps,\n DropdownItemProps,\n DropdownSubContentProps,\n DropdownSubTriggerProps,\n DropdownTriggerProps,\n MenuAlign,\n} from \"./types\";\nimport {\n computeAnchoredMenuPosition,\n computeSubmenuPanelPosition,\n parseCssPxLen,\n subscribeScrollAndScrollableAncestors,\n useIsomorphicLayoutEffect,\n} from \"./positioning\";\n\ntype TriggerProps = {\n onClick?: (e: MouseEvent<HTMLElement>) => void;\n onKeyDown?: (e: KeyboardEvent<HTMLElement>) => void;\n className?: string;\n};\ntype TriggerElement = ReactElement<TriggerProps> & { ref?: Ref<HTMLElement | null> };\n\n\nfunction DropdownCheckboxGlyph({ selected, disabled }: { selected: boolean; disabled?: boolean }) {\n return (\n <span\n aria-hidden\n className={clsx(\n \"inline-flex size-refineui-control-checkbox shrink-0 items-center justify-center rounded-refineui-small\",\n disabled && \"border-refineui-alias-border-disabled bg-refineui-alias-background-surface-disabled\",\n )}\n >\n {selected ? <WebIcon name=\"checkmark\" size={iconSizes.xsmall} color=\"currentColor\" /> : null}\n </span>\n );\n}\n\ntype RootCtx = {\n open: boolean;\n setOpen: Dispatch<SetStateAction<boolean>>;\n close: () => void;\n triggerRef: RefObject<HTMLElement | null>;\n menuRef: RefObject<HTMLDivElement | null>;\n menuId: string;\n subPanelRef: React.RefObject<HTMLDivElement | null>;\n registerSubPanel: (el: HTMLDivElement | null) => void;\n};\n\nconst DropdownCtx = createContext<RootCtx | null>(null);\n\nfunction useDropdownRoot(component: string): RootCtx {\n const v = useContext(DropdownCtx);\n if (!v) throw new Error(`${component} must be used within Dropdown.`);\n return v;\n}\n\nexport function Dropdown({\n className,\n children,\n defaultOpen = false,\n open: openProp,\n onOpenChange,\n ...props\n}: HTMLAttributes<HTMLDivElement> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const open = openProp ?? uncontrolledOpen;\n const setOpen = useCallback<Dispatch<SetStateAction<boolean>>>(\n (value) => {\n const next = typeof value === \"function\" ? value(open) : value;\n if (openProp === undefined) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [open, openProp, onOpenChange],\n );\n const triggerRef = useRef<HTMLElement | null>(null);\n const menuRef = useRef<HTMLDivElement | null>(null);\n const subPanelRef = useRef<HTMLDivElement | null>(null);\n const menuId = useId();\n\n const registerSubPanel = useCallback((el: HTMLDivElement | null) => {\n subPanelRef.current = el;\n }, []);\n\n const close = useCallback(() => {\n setOpen(false);\n triggerRef.current?.focus({ preventScroll: true });\n }, [setOpen]);\n\n const ctx = useMemo(\n () => ({\n open,\n setOpen,\n close,\n triggerRef,\n menuRef,\n menuId,\n subPanelRef,\n registerSubPanel,\n }),\n [open, menuId, registerSubPanel, close],\n );\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!open) return;\n const handler = (e: globalThis.MouseEvent) => {\n const t = e.target as Node;\n if (\n containerRef.current?.contains(t) ||\n menuRef.current?.contains(t) ||\n subPanelRef.current?.contains(t)\n ) {\n return;\n }\n setOpen(false);\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open]);\n\n useEffect(() => {\n if (!open) return;\n return acquireBodyScrollLock();\n }, [open]);\n\n return (\n <DropdownCtx.Provider value={ctx}>\n <div\n ref={containerRef}\n data-refineui=\"dropdown-menu-root\"\n className={clsx(\"relative inline-block\", className)}\n {...props}\n >\n {children}\n </div>\n </DropdownCtx.Provider>\n );\n}\n\n/** Like `PopoverTrigger` / `MenuTrigger`: merge ref/events onto one mergeable child, else wrap in `button`. */\nexport function DropdownTrigger({ children, className, ...props }: DropdownTriggerProps) {\n const { open, setOpen, triggerRef, menuId } = useDropdownRoot(\"DropdownTrigger\");\n\n const toggle = () => setOpen((o) => !o);\n\n const onTriggerKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setOpen((o) => !o);\n }\n if (e.key === \"ArrowDown\" && !open) {\n e.preventDefault();\n setOpen(true);\n }\n };\n\n const mergeEl = getMergeableTriggerChild(children);\n if (mergeEl) {\n const el = mergeEl as TriggerElement;\n const passthrough = props as TriggerProps & HTMLAttributes<HTMLElement>;\n const passthroughCn = (props as HTMLAttributes<HTMLElement>).className;\n return cloneElement(el, {\n ...props,\n ref: composeRefs(triggerRef, el.ref),\n className: clsx(className, passthroughCn, (el.props as HTMLAttributes<HTMLElement>).className),\n \"aria-expanded\": open,\n \"aria-haspopup\": \"menu\" as const,\n \"aria-controls\": menuId,\n onClick: (e: MouseEvent<HTMLElement>) => {\n passthrough.onClick?.(e as unknown as MouseEvent<HTMLElement>);\n el.props.onClick?.(e);\n toggle();\n },\n onKeyDown: (e: KeyboardEvent<HTMLElement>) => {\n passthrough.onKeyDown?.(e as unknown as KeyboardEvent<HTMLElement>);\n el.props.onKeyDown?.(e);\n onTriggerKeyDown(e);\n },\n } as Partial<TriggerProps>);\n }\n\n const passthroughBtn = props as HTMLAttributes<HTMLButtonElement>;\n\n return (\n <button\n type=\"button\"\n ref={triggerRef as React.RefObject<HTMLButtonElement>}\n aria-expanded={open}\n aria-haspopup=\"menu\"\n aria-controls={menuId}\n className={clsx(\n \"cursor-pointer border-none bg-transparent p-0 font-inherit text-inherit\",\n className,\n passthroughBtn.className,\n )}\n {...props}\n onClick={(e) => {\n passthroughBtn.onClick?.(e);\n toggle();\n }}\n onKeyDown={(e) => {\n passthroughBtn.onKeyDown?.(e);\n onTriggerKeyDown(e);\n }}\n >\n {children}\n </button>\n );\n}\n\nexport function DropdownContent({\n className,\n align = \"start\",\n side = \"auto\",\n sideOffset,\n style,\n children,\n ...props\n}: DropdownContentProps) {\n const { open, setOpen, close, triggerRef, menuRef, menuId } = useDropdownRoot(\"DropdownContent\");\n const [fixedStyle, setFixedStyle] = useState<CSSProperties | null>(null);\n const [menuSide, setMenuSide] = useState<\"top\" | \"bottom\">(\"bottom\");\n\n const gapPx = sideOffset ?? parseCssPxLen(spacings.sizeXXSmall, 4);\n const defaultMenuW = parseCssPxLen(componentSizes.dropdownMenuWidth, 180);\n const z = Number.parseInt(String(zIndex.zIndexMessages), 10) || 10000;\n\n useIsomorphicLayoutEffect(() => {\n if (!open) {\n setFixedStyle(null);\n setMenuSide(\"bottom\");\n return;\n }\n\n const apply = () => {\n const trigger = triggerRef.current;\n if (!trigger) return;\n const r = trigger.getBoundingClientRect();\n const menuW = menuRef.current?.offsetWidth && menuRef.current.offsetWidth > 0 ? menuRef.current.offsetWidth : defaultMenuW;\n const menuH =\n menuRef.current?.offsetHeight && menuRef.current.offsetHeight > 0\n ? menuRef.current.offsetHeight\n : Math.min(320, Math.max(120, 8 * 40));\n\n const pos = computeAnchoredMenuPosition({\n anchor: r,\n menuWidth: menuW,\n menuHeight: menuH,\n align,\n side,\n gap: gapPx,\n });\n\n setMenuSide(pos.side);\n setFixedStyle((prev) => {\n const next: CSSProperties = {\n position: \"fixed\",\n top: pos.top,\n left: pos.left,\n minWidth: componentSizes.dropdownMenuWidth,\n zIndex: z,\n maxHeight: \"min(60vh, 20rem)\",\n };\n if (\n prev &&\n prev.top === next.top &&\n prev.left === next.left &&\n prev.zIndex === next.zIndex &&\n prev.minWidth === next.minWidth\n ) {\n return prev;\n }\n return next;\n });\n };\n\n apply();\n const raf = requestAnimationFrame(() => apply());\n window.addEventListener(\"resize\", apply);\n const unsubScroll = subscribeScrollAndScrollableAncestors(triggerRef.current, apply);\n return () => {\n cancelAnimationFrame(raf);\n window.removeEventListener(\"resize\", apply);\n unsubScroll();\n };\n }, [open, align, side, gapPx, defaultMenuW, z, style]);\n\n useEffect(() => {\n if (!open || !fixedStyle) return;\n const onKey = (e: Event) => {\n const ke = e as globalThis.KeyboardEvent;\n if (ke.key === \"Escape\") {\n ke.preventDefault();\n close();\n }\n };\n document.addEventListener(\"keydown\", onKey, true);\n return () => document.removeEventListener(\"keydown\", onKey, true);\n }, [open, fixedStyle, close]);\n\n const onMenuKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Escape\") {\n e.preventDefault();\n close();\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n const list = menuRef.current?.querySelectorAll<HTMLElement>('[data-refineui=\"dropdown-item\"]:not(:disabled)');\n const first = list?.[0];\n first?.focus();\n }\n };\n\n if (!open || !fixedStyle || typeof document === \"undefined\") return null;\n\n const panel = (\n <div\n ref={menuRef as Ref<HTMLDivElement>}\n id={menuId}\n role=\"menu\"\n tabIndex={-1}\n data-refineui=\"dropdown-menu\"\n data-align={align}\n data-side={menuSide}\n onKeyDown={onMenuKeyDown}\n className={clsx(dropdownStyles.menuShell, className)}\n {...props}\n style={{\n ...fixedStyle,\n ...style,\n borderColor: resolveColorTokenValue(componentColorTokens.dropdown.menu.border),\n backgroundColor: resolveColorTokenValue(componentColorTokens.dropdown.menu.background),\n }}\n >\n <ScrollAreaRegion type=\"hover\" className=\"min-h-0 max-h-full\" viewportClassName={dropdownStyles.menuViewport}>\n {children}\n </ScrollAreaRegion>\n </div>\n );\n\n return createPortal(panel, document.body);\n}\n\nexport function DropdownGroup({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return (\n <div role=\"group\" data-refineui=\"dropdown-menu-group\" className={clsx(\"flex flex-col gap-px\", className)} {...props} />\n );\n}\n\nexport function DropdownLabel({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n role=\"presentation\"\n data-refineui=\"dropdown-menu-label\"\n className={clsx(dropdownStyles.label, className)}\n {...props}\n />\n );\n}\n\nexport function DropdownItem({\n className,\n disabled,\n selected = false,\n children,\n onClick,\n style,\n onPointerDown,\n onPointerUp,\n onPointerLeave,\n onPointerCancel,\n onMouseDown,\n onMouseUp,\n onMouseLeave,\n ...props\n}: DropdownItemProps) {\n const { close } = useDropdownRoot(\"DropdownItem\");\n const [pressed, setPressed] = useState(false);\n\n return (\n <button\n type=\"button\"\n role=\"menuitem\"\n data-refineui=\"dropdown-item\"\n data-selected={selected || undefined}\n data-state={pressed ? \"pressed\" : selected ? \"selected\" : undefined}\n disabled={disabled}\n tabIndex={-1}\n className={clsx(dropdownStyles.item, className)}\n style={style}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) close();\n }}\n onPointerDown={(e) => {\n onPointerDown?.(e);\n if (!disabled) setPressed(true);\n }}\n onPointerUp={(e) => {\n onPointerUp?.(e);\n setPressed(false);\n }}\n onPointerLeave={(e) => {\n onPointerLeave?.(e);\n setPressed(false);\n }}\n onPointerCancel={(e) => {\n onPointerCancel?.(e);\n setPressed(false);\n }}\n onMouseDown={(e) => {\n onMouseDown?.(e);\n if (!disabled) setPressed(true);\n }}\n onMouseUp={(e) => {\n onMouseUp?.(e);\n setPressed(false);\n }}\n onMouseLeave={(e) => {\n onMouseLeave?.(e);\n setPressed(false);\n }}\n {...props}\n >\n {children}\n </button>\n );\n}\n\nexport function DropdownSeparator({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n data-refineui=\"dropdown-menu-separator\"\n className={clsx(\n \"flex w-full items-center px-refineui-size-x-small py-refineui-size-xxx-small\",\n className,\n )}\n {...props}\n >\n <div\n role=\"presentation\"\n className=\"h-px w-full shrink-0 bg-refineui-alias-border-default\"\n />\n </div>\n );\n}\n\nexport function DropdownShortcut({ className, ...props }: HTMLAttributes<HTMLSpanElement>) {\n return (\n <span\n data-refineui=\"dropdown-menu-shortcut\"\n className={clsx(dropdownStyles.shortcut, className)}\n {...props}\n />\n );\n}\n\n/** Legacy: sub-panel already portals to `document.body` internally — renders children only. */\nexport function DropdownPortal({ children }: { children: ReactNode }) {\n return <>{children}</>;\n}\n\n/** Hover open/close — short open, longer close so the pointer can cross the gap */\nconst SUBMENU_OPEN_DELAY_MS = 75;\nconst SUBMENU_CLOSE_DELAY_MS = 220;\n\nfunction isFinePointerHover(): boolean {\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") {\n return false;\n }\n return window.matchMedia(\"(hover: hover) and (pointer: fine)\").matches;\n}\n\ntype SubCtx = {\n open: boolean;\n setOpen: Dispatch<SetStateAction<boolean>>;\n triggerRef: RefObject<HTMLButtonElement | null>;\n openIntent: () => void;\n closeIntent: () => void;\n cancelClose: () => void;\n};\n\nconst SubCtxBox = createContext<SubCtx | null>(null);\n\nexport function DropdownSub({ children }: { children: ReactNode }) {\n const [subOpen, setSubOpen] = useState(false);\n const subOpenRef = useRef(false);\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const openTimerRef = useRef<number | null>(null);\n const closeTimerRef = useRef<number | null>(null);\n const root = useContext(DropdownCtx);\n\n subOpenRef.current = subOpen;\n\n const clearTimers = useCallback(() => {\n if (openTimerRef.current != null) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }\n if (closeTimerRef.current != null) {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n const cancelClose = useCallback(() => {\n if (closeTimerRef.current != null) {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n const openIntent = useCallback(() => {\n cancelClose();\n if (subOpenRef.current) return;\n if (openTimerRef.current != null) return;\n openTimerRef.current = window.setTimeout(() => {\n openTimerRef.current = null;\n setSubOpen(true);\n }, SUBMENU_OPEN_DELAY_MS);\n }, [cancelClose]);\n\n const closeIntent = useCallback(() => {\n if (openTimerRef.current != null) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }\n if (closeTimerRef.current != null) return;\n closeTimerRef.current = window.setTimeout(() => {\n closeTimerRef.current = null;\n setSubOpen(false);\n }, SUBMENU_CLOSE_DELAY_MS);\n }, []);\n\n const setOpen = useCallback<Dispatch<SetStateAction<boolean>>>(\n (value) => {\n clearTimers();\n setSubOpen(value);\n },\n [clearTimers],\n );\n\n const ctx = useMemo(\n () => ({ open: subOpen, setOpen, triggerRef, openIntent, closeIntent, cancelClose }),\n [subOpen, setOpen, openIntent, closeIntent, cancelClose],\n );\n\n useEffect(() => {\n if (!root?.open) {\n clearTimers();\n setSubOpen(false);\n }\n }, [root?.open, clearTimers]);\n\n useEffect(() => () => clearTimers(), [clearTimers]);\n\n return <SubCtxBox.Provider value={ctx}>{children}</SubCtxBox.Provider>;\n}\n\nfunction useSub(component: string): SubCtx {\n const v = useContext(SubCtxBox);\n if (!v) throw new Error(`${component} must be used within DropdownSub.`);\n return v;\n}\n\nexport function DropdownSubTrigger({\n className,\n children,\n onClick,\n onPointerEnter,\n onPointerLeave,\n disabled,\n ...props\n}: DropdownSubTriggerProps) {\n const { open, setOpen, triggerRef, openIntent, closeIntent, cancelClose } = useSub(\"DropdownSubTrigger\");\n const isDisabled = Boolean(disabled);\n\n return (\n <button\n type=\"button\"\n ref={triggerRef as Ref<HTMLButtonElement>}\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n disabled={isDisabled}\n data-refineui=\"dropdown-item\"\n data-slot=\"dropdown-menu-sub-trigger\"\n tabIndex={-1}\n className={clsx(\n dropdownStyles.item,\n open && !isDisabled && \"bg-refineui-alias-background-primary-hover\",\n isDisabled && \"cursor-not-allowed text-refineui-alias-foreground-disabled\",\n className,\n )}\n onPointerEnter={(event) => {\n onPointerEnter?.(event);\n if (!isDisabled && isFinePointerHover()) {\n openIntent();\n }\n }}\n onPointerLeave={(event) => {\n onPointerLeave?.(event);\n if (!isDisabled && isFinePointerHover()) {\n closeIntent();\n }\n }}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || isDisabled) return;\n cancelClose();\n if (isFinePointerHover()) {\n setOpen(true);\n } else {\n setOpen((value) => !value);\n }\n }}\n {...props}\n >\n {children}\n <WebIcon\n name=\"chevron-right\"\n size={iconSizes.small}\n color=\"currentColor\"\n aria-hidden\n className=\"ms-auto shrink-0\"\n />\n </button>\n );\n}\n\nexport function DropdownSubContent({ className, children, style, ...props }: DropdownSubContentProps) {\n const root = useDropdownRoot(\"DropdownSubContent\");\n const sub = useSub(\"DropdownSubContent\");\n const panelRef = useRef<HTMLDivElement | null>(null);\n const [fixedStyle, setFixedStyle] = useState<CSSProperties | null>(null);\n const [side, setSide] = useState<\"left\" | \"right\">(\"right\");\n const defaultMenuW = parseCssPxLen(componentSizes.dropdownMenuWidth, 180);\n /** Tighter gap — easier to move pointer onto the panel without closing */\n const gapPx = parseCssPxLen(spacings.sizeXXXSmall, 2);\n\n const setPanelEl = useCallback(\n (el: HTMLDivElement | null) => {\n panelRef.current = el;\n if (sub.open) root.registerSubPanel(el);\n },\n [sub.open, root],\n );\n\n useIsomorphicLayoutEffect(() => {\n if (!sub.open || !root.open) {\n setFixedStyle(null);\n root.registerSubPanel(null);\n return;\n }\n\n const apply = () => {\n const triggerEl = sub.triggerRef.current;\n const tr = triggerEl?.getBoundingClientRect();\n if (!tr || !triggerEl) return;\n\n const vh = window.innerHeight;\n const vw = window.innerWidth;\n if (tr.bottom < 0 || tr.top > vh || tr.right < 0 || tr.left > vw) {\n sub.setOpen(false);\n return;\n }\n\n const pw = panelRef.current?.offsetWidth && panelRef.current.offsetWidth > 0 ? panelRef.current.offsetWidth : defaultMenuW;\n const ph =\n panelRef.current?.offsetHeight && panelRef.current.offsetHeight > 0\n ? panelRef.current.offsetHeight\n : 160;\n const pos = computeSubmenuPanelPosition({\n trigger: tr,\n panelWidth: pw,\n panelHeight: ph,\n gap: gapPx,\n });\n\n setSide(pos.left >= tr.right - 1 ? \"right\" : \"left\");\n setFixedStyle({\n position: \"fixed\",\n top: pos.top,\n left: pos.left,\n minWidth: componentSizes.dropdownMenuWidth,\n zIndex: (Number.parseInt(String(zIndex.zIndexMessages), 10) || 10000) + 100,\n maxHeight: \"min(60vh, 20rem)\",\n });\n };\n\n apply();\n const raf = requestAnimationFrame(() => apply());\n window.addEventListener(\"resize\", apply);\n const unsubScroll = subscribeScrollAndScrollableAncestors(sub.triggerRef.current, apply);\n return () => {\n cancelAnimationFrame(raf);\n window.removeEventListener(\"resize\", apply);\n unsubScroll();\n };\n }, [sub.open, sub.triggerRef, sub, root.open, defaultMenuW, gapPx, root]);\n\n if (!sub.open || !root.open || !fixedStyle || typeof document === \"undefined\") return null;\n\n const panel = (\n <div\n ref={setPanelEl}\n role=\"menu\"\n data-refineui=\"dropdown-menu\"\n data-submenu=\"true\"\n data-state=\"open\"\n data-side={side}\n tabIndex={-1}\n className={clsx(dropdownStyles.submenuShell, className)}\n style={{\n ...fixedStyle,\n ...style,\n borderColor: resolveColorTokenValue(componentColorTokens.dropdown.menu.border),\n backgroundColor: resolveColorTokenValue(componentColorTokens.dropdown.menu.background),\n }}\n onPointerEnter={() => sub.cancelClose()}\n onPointerLeave={() => {\n if (isFinePointerHover()) {\n sub.closeIntent();\n }\n }}\n {...props}\n >\n <ScrollAreaRegion type=\"hover\" className=\"min-h-0 max-h-full\" viewportClassName={dropdownStyles.menuViewport}>\n {children}\n </ScrollAreaRegion>\n </div>\n );\n\n return createPortal(panel, document.body);\n}\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\n/** Visual language aligned with `menuStyles` — shared panel/item chrome. */\nexport const dropdownStyles = {\n menuShell:\n \"box-border flex w-refineui-dropdown-menu-width min-w-refineui-dropdown-menu-width max-w-[min(100vw-16px,calc(100vw-2rem))] flex-col overflow-hidden rounded-refineui-large border-refineui-hairline border-refineui-alias-border-default bg-refineui-alias-background-primary shadow-refineui-2 outline-none\",\n submenuShell:\n \"box-border flex w-refineui-dropdown-menu-width min-w-refineui-dropdown-menu-width flex-col overflow-hidden rounded-refineui-large border-refineui-hairline border-refineui-alias-border-default bg-refineui-alias-background-primary shadow-refineui-2 outline-none\",\n menuViewport: \"box-border flex flex-col gap-px p-refineui-size-xx-small\",\n label: clsx(\n componentTextClass(componentTypographyTokens.dropdown.label),\n \"shrink-0 px-refineui-size-x-small py-refineui-size-x-small text-refineui-alias-foreground-tertiary\",\n ),\n item: clsx(\n componentTextClass(componentTypographyTokens.dropdown.item),\n \"flex w-full cursor-pointer items-center justify-between gap-refineui-size-x-small rounded-refineui-large border-none bg-transparent p-refineui-size-x-small text-start text-refineui-alias-foreground-primary outline-none disabled:cursor-not-allowed disabled:text-refineui-alias-foreground-disabled\",\n ),\n shortcut: clsx(\n componentTextClass(componentTypographyTokens.dropdown.shortcut),\n \"ms-auto shrink-0 tracking-wide text-refineui-alias-foreground-tertiary\",\n ),\n} as const;\n","import { useEffect, useLayoutEffect } from \"react\";\nimport type { MenuAlign } from \"./types\";\n\nexport const useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport function parseCssPxLen(value: string, fallback: number): number {\n const n = Number.parseFloat(value);\n return Number.isFinite(n) ? n : fallback;\n}\n\n/** Scrollable ancestors + window — for `getBoundingClientRect` refresh */\nexport function subscribeScrollAndScrollableAncestors(target: HTMLElement | null, fn: () => void): () => void {\n if (typeof window === \"undefined\") return () => {};\n const list: (Element | Window)[] = [window];\n let el: HTMLElement | null = target?.parentElement ?? null;\n while (el) {\n const { overflow, overflowX, overflowY } = getComputedStyle(el);\n if (\n [overflow, overflowX, overflowY].some((o) => o === \"auto\" || o === \"scroll\" || o === \"overlay\") ||\n el.scrollHeight > el.clientHeight + 1\n ) {\n list.push(el);\n }\n el = el.parentElement;\n }\n for (const t of list) {\n t.addEventListener(\"scroll\", fn, true);\n }\n return () => {\n for (const t of list) {\n t.removeEventListener(\"scroll\", fn, true);\n }\n };\n}\n\n/** Anchored menu placement matching shadcn `align` + RefineUI `side` (viewport clamp). */\nexport function computeAnchoredMenuPosition(params: {\n anchor: DOMRect;\n menuWidth: number;\n menuHeight: number;\n align: MenuAlign;\n side: \"auto\" | \"top\" | \"bottom\";\n gap: number;\n edge?: number;\n}): { top: number; left: number; side: \"top\" | \"bottom\" } {\n const edge = params.edge ?? 8;\n const { anchor, menuWidth: menuW, menuHeight: menuH, align, side, gap } = params;\n const vw = typeof window !== \"undefined\" ? window.innerWidth : 800;\n const vh = typeof window !== \"undefined\" ? window.innerHeight : 600;\n\n let left =\n align === \"start\"\n ? anchor.left\n : align === \"end\"\n ? anchor.right - menuW\n : anchor.left + anchor.width / 2 - menuW / 2;\n left = Math.max(edge, Math.min(left, vw - menuW - edge));\n\n const spaceBelow = vh - edge - (anchor.bottom + gap);\n const spaceAbove = anchor.top - gap - edge;\n const fitsBelow = menuH <= spaceBelow;\n const fitsAbove = menuH <= spaceAbove;\n\n let top: number;\n let resolvedSide: \"top\" | \"bottom\" = \"bottom\";\n\n if (side === \"bottom\") {\n resolvedSide = \"bottom\";\n top = anchor.bottom + gap;\n if (!fitsBelow && fitsAbove) {\n top = anchor.top - gap - menuH;\n resolvedSide = \"top\";\n } else if (!fitsBelow && !fitsAbove) {\n top = Math.max(edge, Math.min(anchor.bottom + gap, vh - edge - menuH));\n }\n } else if (side === \"top\") {\n resolvedSide = \"top\";\n top = anchor.top - gap - menuH;\n if (!fitsAbove && fitsBelow) {\n top = anchor.bottom + gap;\n resolvedSide = \"bottom\";\n } else if (!fitsBelow && !fitsAbove) {\n top = Math.max(edge, Math.min(anchor.top - gap - menuH, vh - edge - menuH));\n }\n } else {\n if (!fitsBelow && fitsAbove) {\n top = anchor.top - gap - menuH;\n resolvedSide = \"top\";\n } else {\n top = anchor.bottom + gap;\n resolvedSide = \"bottom\";\n }\n if (!fitsBelow && !fitsAbove) {\n top = Math.max(edge, Math.min(anchor.bottom + gap, vh - edge - menuH));\n resolvedSide = \"bottom\";\n }\n }\n\n return { top, left, side: resolvedSide };\n}\n\nexport function computeSubmenuPanelPosition(params: {\n trigger: DOMRect;\n panelWidth: number;\n panelHeight: number;\n gap: number;\n edge?: number;\n /** Default: right of trigger; flip left if needed */\n preferredSide?: \"right\" | \"left\";\n}): { top: number; left: number } {\n const edge = params.edge ?? 8;\n const { trigger: tr, panelWidth: pw, panelHeight: ph, gap } = params;\n const vw = typeof window !== \"undefined\" ? window.innerWidth : 800;\n const vh = typeof window !== \"undefined\" ? window.innerHeight : 600;\n\n let left = tr.right + gap;\n if (left + pw > vw - edge) {\n left = tr.left - gap - pw;\n }\n left = Math.max(edge, Math.min(left, vw - pw - edge));\n\n let top = tr.top;\n top = Math.max(edge, Math.min(top, vh - ph - edge));\n\n return { top, left };\n}\n\n","import { clsx } from \"clsx\";\nimport { resolveColorTokenValue } from \"@refineui/utilities/color\";\nimport { componentColorTokens } from \"../../tokens/componentColorTokens\";\nimport { Label } from \"../Label/Label\";\nimport { LabelRequired } from \"../Label/LabelRequired\";\nimport { FieldSizeContext, useOptionalFieldSize } from \"./context\";\nimport { fieldStyles } from \"./style\";\nimport type { FieldErrorProps, FieldHintProps, FieldLabelProps, FieldProps, FieldRequiredProps } from \"./types\";\n\nexport function Field({ size = \"lg\", className, ...props }: FieldProps) {\n return (\n <FieldSizeContext.Provider value={size}>\n <div data-refineui=\"field\" data-size={size} className={clsx(fieldStyles.root, className)} {...props} />\n </FieldSizeContext.Provider>\n );\n}\n\n/** Field-scoped `Label` — inherits `Field` `size` unless `size` is passed explicitly. */\nexport function FieldLabel({ size: sizeProp, className, ...props }: FieldLabelProps) {\n const fieldSize = useOptionalFieldSize();\n return (\n <Label\n size={sizeProp ?? fieldSize ?? \"md\"}\n className={clsx(fieldSize != null && fieldStyles.label, className)}\n {...props}\n />\n );\n}\n\n/** Field-scoped required mark — same atom as `LabelRequired`. */\nexport function FieldRequired(props: FieldRequiredProps) {\n return <LabelRequired {...props} />;\n}\n\nexport function FieldHint({ className, ...props }: FieldHintProps) {\n return (\n <div\n data-refineui=\"field-hint\"\n className={clsx(fieldStyles.feedback, className)}\n style={{ color: resolveColorTokenValue(componentColorTokens.field.hint) }}\n {...props}\n />\n );\n}\n\nexport function FieldError({ className, ...props }: FieldErrorProps) {\n return (\n <div\n data-refineui=\"field-error\"\n role=\"alert\"\n className={clsx(fieldStyles.feedback, className)}\n style={{ color: resolveColorTokenValue(componentColorTokens.field.error) }}\n {...props}\n />\n );\n}\n","import { clsx } from \"clsx\";\nimport { LabelRequired } from \"./LabelRequired\";\nimport { labelSizeTypo, labelStyles } from \"./style\";\nimport type { LabelProps } from \"./types\";\n\nexport function Label({\n required,\n size = \"md\",\n disabled = false,\n children,\n className,\n ...props\n}: LabelProps) {\n return (\n <label\n data-refineui=\"label\"\n data-size={size}\n data-disabled={disabled || undefined}\n aria-disabled={disabled || undefined}\n className={clsx(\n labelStyles.base,\n labelSizeTypo[size],\n disabled ? labelStyles.disabled : labelStyles.enabled,\n className,\n )}\n {...props}\n >\n {children}\n {required ? <LabelRequired /> : null}\n </label>\n );\n}\n","import { clsx } from \"clsx\";\nimport { labelStyles } from \"./style\";\nimport type { LabelRequiredProps } from \"./types\";\n\n/** Required asterisk — Web Kit `red700` / alias `foregroundError`. Decorative (`aria-hidden`). */\nexport function LabelRequired({ className, children = \"*\", ...props }: LabelRequiredProps) {\n return (\n <span\n data-refineui=\"label-required\"\n className={clsx(labelStyles.required, className)}\n aria-hidden\n {...props}\n >\n {children}\n </span>\n );\n}\n","import { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\n/** Field shell + feedback only — label/required styles live on `Label` */\nexport const fieldStyles = {\n root: \"mb-refineui-size-medium flex w-full flex-col gap-refineui-size-xx-small\",\n /** Overrides standalone `Label` bottom margin — stack gap comes from `root` */\n label: \"!mb-0\",\n feedback: componentTextClass(componentTypographyTokens.fieldFeedback),\n} as const;\n","import { clsx } from \"clsx\";\nimport { iconSizes } from \"@refineui/tokens\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { linkStyles } from \"./style\";\nimport type { LinkProps } from \"./types\";\n\n/** Web Kit `Link` `226:158` — colors and underline via `refineui.css` `[data-refineui=\"link\"]`. */\nexport function Link({\n showExternalIcon,\n target,\n disabled = false,\n children,\n className,\n ...props\n}: LinkProps) {\n const autoExternal = target === \"_blank\";\n const showOpen =\n showExternalIcon === true || (showExternalIcon !== false && autoExternal);\n\n return (\n <a\n data-refineui=\"link\"\n target={target}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : undefined}\n className={clsx(\n linkStyles.base,\n showOpen ? linkStyles.withIcon : linkStyles.inline,\n disabled && linkStyles.disabled,\n className,\n )}\n {...props}\n >\n {children}\n {showOpen && <WebIcon name=\"open\" size={iconSizes.large} color=\"currentColor\" />}\n </a>\n );\n}\n","import { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\nexport const linkStyles = {\n base: componentTextClass(componentTypographyTokens.link),\n withIcon: \"inline-flex items-center gap-refineui-size-xx-small\",\n inline: \"inline\",\n disabled: \"cursor-not-allowed\",\n} as const;\n","import { clsx } from \"clsx\";\nimport type {\n CSSProperties,\n Dispatch,\n KeyboardEvent as ReactKeyboardEvent,\n MouseEvent,\n ReactElement,\n ReactNode,\n RefObject,\n SetStateAction,\n} from \"react\";\nimport {\n cloneElement,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { iconSizes, semanticInteraction, spacings, zIndex } from \"@refineui/tokens\";\nimport { motionMsToNumber } from \"@refineui/utilities/animation\";\nimport { getMergeableTriggerChild } from \"@refineui/utilities/react\";\nimport { componentSizes } from \"../../componentSizes\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { computeSubmenuPanelPosition, subscribeScrollAndScrollableAncestors } from \"../Dropdown/positioning\";\nimport { menuStyles } from \"./style\";\nimport type {\n MenuDividerProps,\n MenuItemProps,\n MenuListProps,\n MenuPopoverProps,\n MenuPositioning,\n MenuProps,\n MenuSectionProps,\n MenuSubContentProps,\n MenuSubTriggerProps,\n} from \"./types\";\n\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? useLayoutEffect : useEffect;\n\nfunction parseCssPx(value: string, fallback: number): number {\n const n = Number.parseFloat(value);\n return Number.isFinite(n) ? n : fallback;\n}\n\ntype MenuContextValue = {\n open: boolean;\n setOpen: (open: boolean) => void;\n positioning?: MenuPositioning;\n rootRef: RefObject<HTMLDivElement>;\n popoverRef: RefObject<HTMLDivElement>;\n registerSubPanel: (el: HTMLDivElement | null) => void;\n};\n\nconst MenuContext = createContext<MenuContextValue | null>(null);\n\nfunction useMenuContext(componentName: string): MenuContextValue {\n const ctx = useContext(MenuContext);\n if (!ctx) {\n throw new Error(`${componentName} must be used within Menu.`);\n }\n return ctx;\n}\n\nexport function Menu({ children, className, positioning, ...props }: MenuProps) {\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const subPanelRef = useRef<HTMLDivElement | null>(null);\n\n const registerSubPanel = useCallback((el: HTMLDivElement | null) => {\n subPanelRef.current = el;\n }, []);\n\n const value = useMemo(\n () => ({ open, setOpen, positioning, rootRef, popoverRef, registerSubPanel }),\n [open, positioning, registerSubPanel],\n );\n\n useEffect(() => {\n if (!open) return;\n\n const onPointerDown = (event: PointerEvent) => {\n const target = event.target as Node;\n if (\n rootRef.current?.contains(target) ||\n popoverRef.current?.contains(target) ||\n subPanelRef.current?.contains(target)\n ) {\n return;\n }\n setOpen(false);\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"pointerdown\", onPointerDown);\n document.addEventListener(\"keydown\", onKeyDown);\n return () => {\n document.removeEventListener(\"pointerdown\", onPointerDown);\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [open]);\n\n return (\n <MenuContext.Provider value={value}>\n <div\n ref={rootRef}\n data-refineui=\"menu-root\"\n className={clsx(menuStyles.root, className)}\n {...props}\n >\n {children}\n </div>\n </MenuContext.Provider>\n );\n}\n\ntype MenuTriggerProps = {\n children: ReactNode;\n};\n\nexport function MenuTrigger({ children }: MenuTriggerProps) {\n const { open, setOpen } = useMenuContext(\"MenuTrigger\");\n\n const mergeEl = getMergeableTriggerChild(children);\n if (mergeEl) {\n const el = mergeEl as ReactElement<{ onClick?: (e: MouseEvent<HTMLElement>) => void }>;\n return cloneElement(el, {\n \"aria-expanded\": open,\n \"aria-haspopup\": \"menu\" as const,\n onClick: (e: MouseEvent<HTMLElement>) => {\n el.props.onClick?.(e);\n setOpen(!open);\n },\n } as never);\n }\n\n return (\n <button\n type=\"button\"\n aria-expanded={open}\n aria-haspopup=\"menu\"\n className={menuStyles.triggerFallback}\n onClick={() => setOpen(!open)}\n >\n {children}\n </button>\n );\n}\n\nexport function MenuPopover({ className, children, style, ...props }: MenuPopoverProps) {\n const { open, positioning, rootRef, popoverRef } = useMenuContext(\"MenuPopover\");\n const [shouldRender, setShouldRender] = useState(open);\n const [isClosing, setIsClosing] = useState(false);\n const [fixedStyle, setFixedStyle] = useState<CSSProperties | null>(null);\n\n const gapPx = parseCssPx(spacings.sizeXXSmall, 4);\n const z = Number.parseInt(String(zIndex.zIndexMessages), 10) || 10000;\n\n useEffect(() => {\n if (open) {\n setShouldRender(true);\n setIsClosing(false);\n return;\n }\n\n if (!shouldRender) {\n return;\n }\n\n setIsClosing(true);\n const timeout = window.setTimeout(() => {\n setShouldRender(false);\n setIsClosing(false);\n setFixedStyle(null);\n }, motionMsToNumber(semanticInteraction.duration.normal));\n\n return () => window.clearTimeout(timeout);\n }, [open, shouldRender]);\n\n useIsomorphicLayoutEffect(() => {\n if (!open) {\n return;\n }\n\n const apply = () => {\n const anchor = rootRef.current;\n if (!anchor) return;\n const rect = anchor.getBoundingClientRect();\n setFixedStyle({\n position: \"fixed\",\n top: rect.bottom + gapPx,\n left: rect.left,\n minWidth: componentSizes.menuPanelWidth,\n width: positioning?.autoSize ? \"max-content\" : undefined,\n maxWidth: \"min(100vw - 16px, 24rem)\",\n zIndex: z,\n });\n };\n\n apply();\n const raf = requestAnimationFrame(apply);\n window.addEventListener(\"resize\", apply);\n const unsubScroll = subscribeScrollAndScrollableAncestors(rootRef.current, apply);\n return () => {\n cancelAnimationFrame(raf);\n window.removeEventListener(\"resize\", apply);\n unsubScroll();\n };\n }, [open, gapPx, positioning?.autoSize, rootRef, z]);\n\n if (!shouldRender || !fixedStyle || typeof document === \"undefined\") {\n return null;\n }\n\n return createPortal(\n <div\n ref={popoverRef}\n data-refineui=\"menu-popover\"\n data-state={isClosing ? \"closed\" : \"open\"}\n className={clsx(menuStyles.popover, className)}\n style={{ ...fixedStyle, ...style }}\n {...props}\n >\n {children}\n </div>,\n document.body,\n );\n}\n\nexport function MenuList({ className, ...props }: MenuListProps) {\n return (\n <div\n data-refineui=\"menu\"\n role=\"menu\"\n className={clsx(menuStyles.list, className)}\n {...props}\n />\n );\n}\n\n/** Web Kit `Menu / Section` (`633:4258`) */\nexport function MenuSection({ className, children, ...props }: MenuSectionProps) {\n return (\n <div\n data-refineui=\"menu-section\"\n className={clsx(menuStyles.section, className)}\n {...props}\n >\n <span className={menuStyles.sectionText}>{children}</span>\n </div>\n );\n}\n\n/** Web Kit `Menu / Section` Divider (`633:4263`) */\nexport function MenuDivider({ className, ...props }: MenuDividerProps) {\n return (\n <div\n data-refineui=\"menu-divider\"\n role=\"separator\"\n aria-orientation=\"horizontal\"\n className={clsx(menuStyles.dividerWrap, className)}\n {...props}\n >\n <div className={menuStyles.dividerLine} />\n </div>\n );\n}\n\nexport function MenuItem({\n children,\n description,\n shortcut,\n startIcon,\n endIcon,\n className,\n disabled,\n state = \"default\",\n onClick,\n onKeyDown,\n ...props\n}: MenuItemProps) {\n const menu = useContext(MenuContext);\n const isDisabled = disabled || state === \"disabled\";\n const resolvedState = isDisabled ? \"disabled\" : state;\n\n const closeIfInMenu = () => {\n if (!isDisabled) {\n menu?.setOpen(false);\n }\n };\n\n return (\n <button\n data-refineui=\"menu-item\"\n data-state={resolvedState}\n role=\"menuitem\"\n type=\"button\"\n disabled={isDisabled}\n className={clsx(\n menuStyles.itemBase,\n isDisabled ? menuStyles.itemDisabled : menuStyles.itemEnabled,\n className,\n )}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n closeIfInMenu();\n }\n }}\n onKeyDown={(event: ReactKeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n if (event.key === \"Enter\" || event.key === \" \") {\n if (!event.defaultPrevented) {\n closeIfInMenu();\n }\n }\n }}\n {...props}\n >\n <span className={menuStyles.row}>\n {startIcon ? (\n <span\n className={menuStyles.iconWrap}\n style={{\n width: iconSizes.small,\n minWidth: iconSizes.small,\n height: iconSizes.small,\n }}\n >\n {startIcon}\n </span>\n ) : null}\n <span className={menuStyles.textCol}>\n <span className={menuStyles.title}>{children}</span>\n {description ? (\n <span\n className={clsx(\n menuStyles.description,\n isDisabled\n ? menuStyles.descriptionDisabled\n : menuStyles.descriptionEnabled,\n )}\n >\n {description}\n </span>\n ) : null}\n </span>\n {(shortcut || endIcon) && (\n <span className={menuStyles.rightWrap}>\n {shortcut ? (\n <span className={menuStyles.shortcut}>{shortcut}</span>\n ) : null}\n {endIcon ? (\n <span\n className={menuStyles.iconWrap}\n style={{\n width: iconSizes.small,\n minWidth: iconSizes.small,\n height: iconSizes.small,\n }}\n >\n {endIcon}\n </span>\n ) : null}\n </span>\n )}\n </span>\n </button>\n );\n}\n\ntype MenuSubCtx = {\n open: boolean;\n setOpen: Dispatch<SetStateAction<boolean>>;\n triggerRef: RefObject<HTMLButtonElement>;\n openIntent: () => void;\n closeIntent: () => void;\n cancelClose: () => void;\n};\n\nconst MenuSubContext = createContext<MenuSubCtx | null>(null);\n\n/** Hover open/close — short open, longer close so the pointer can cross the gap */\nconst SUBMENU_OPEN_DELAY_MS = 75;\nconst SUBMENU_CLOSE_DELAY_MS = 220;\n\nfunction isFinePointerHover(): boolean {\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") {\n return false;\n }\n return window.matchMedia(\"(hover: hover) and (pointer: fine)\").matches;\n}\n\nfunction useMenuSub(componentName: string): MenuSubCtx {\n const ctx = useContext(MenuSubContext);\n if (!ctx) {\n throw new Error(`${componentName} must be used within MenuSub.`);\n }\n return ctx;\n}\n\n/** Nested menu branch — chevron item opens a sibling panel (Web Kit endIcon / submenu). */\nexport function MenuSub({ children }: { children: ReactNode }) {\n const [subOpen, setSubOpen] = useState(false);\n const subOpenRef = useRef(false);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const openTimerRef = useRef<number | null>(null);\n const closeTimerRef = useRef<number | null>(null);\n const menu = useContext(MenuContext);\n\n subOpenRef.current = subOpen;\n\n const clearTimers = useCallback(() => {\n if (openTimerRef.current != null) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }\n if (closeTimerRef.current != null) {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n const cancelClose = useCallback(() => {\n if (closeTimerRef.current != null) {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n const openIntent = useCallback(() => {\n cancelClose();\n if (subOpenRef.current) return;\n if (openTimerRef.current != null) return;\n openTimerRef.current = window.setTimeout(() => {\n openTimerRef.current = null;\n setSubOpen(true);\n }, SUBMENU_OPEN_DELAY_MS);\n }, [cancelClose]);\n\n const closeIntent = useCallback(() => {\n if (openTimerRef.current != null) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }\n if (closeTimerRef.current != null) return;\n closeTimerRef.current = window.setTimeout(() => {\n closeTimerRef.current = null;\n setSubOpen(false);\n }, SUBMENU_CLOSE_DELAY_MS);\n }, []);\n\n const setOpen = useCallback<Dispatch<SetStateAction<boolean>>>(\n (value) => {\n clearTimers();\n setSubOpen(value);\n },\n [clearTimers],\n );\n\n const ctx = useMemo(\n () => ({ open: subOpen, setOpen, triggerRef, openIntent, closeIntent, cancelClose }),\n [subOpen, setOpen, openIntent, closeIntent, cancelClose],\n );\n\n useEffect(() => {\n if (menu && !menu.open) {\n clearTimers();\n setSubOpen(false);\n }\n }, [menu, menu?.open, clearTimers]);\n\n useEffect(() => () => clearTimers(), [clearTimers]);\n\n return <MenuSubContext.Provider value={ctx}>{children}</MenuSubContext.Provider>;\n}\n\nexport function MenuSubTrigger({\n children,\n description,\n startIcon,\n className,\n disabled,\n state = \"default\",\n onClick,\n onPointerEnter,\n onPointerLeave,\n ...props\n}: MenuSubTriggerProps) {\n const { open, setOpen, triggerRef, openIntent, closeIntent, cancelClose } = useMenuSub(\"MenuSubTrigger\");\n const isDisabled = disabled || state === \"disabled\";\n const resolvedState = isDisabled ? \"disabled\" : open ? \"active\" : state;\n\n return (\n <button\n ref={triggerRef}\n data-refineui=\"menu-item\"\n data-slot=\"menu-sub-trigger\"\n data-state={resolvedState}\n role=\"menuitem\"\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n disabled={isDisabled}\n className={clsx(\n menuStyles.itemBase,\n isDisabled ? menuStyles.itemDisabled : menuStyles.itemEnabled,\n open && !isDisabled && \"bg-refineui-alias-background-primary-hover\",\n className,\n )}\n onPointerEnter={(event) => {\n onPointerEnter?.(event);\n if (!isDisabled && isFinePointerHover()) {\n openIntent();\n }\n }}\n onPointerLeave={(event) => {\n onPointerLeave?.(event);\n if (!isDisabled && isFinePointerHover()) {\n closeIntent();\n }\n }}\n onClick={(event) => {\n onClick?.(event);\n if (event.defaultPrevented || isDisabled) return;\n cancelClose();\n if (isFinePointerHover()) {\n setOpen(true);\n } else {\n setOpen((value) => !value);\n }\n }}\n {...props}\n >\n <span className={menuStyles.row}>\n {startIcon ? (\n <span\n className={menuStyles.iconWrap}\n style={{\n width: iconSizes.small,\n minWidth: iconSizes.small,\n height: iconSizes.small,\n }}\n >\n {startIcon}\n </span>\n ) : null}\n <span className={menuStyles.textCol}>\n <span className={menuStyles.title}>{children}</span>\n {description ? (\n <span\n className={clsx(\n menuStyles.description,\n isDisabled\n ? menuStyles.descriptionDisabled\n : menuStyles.descriptionEnabled,\n )}\n >\n {description}\n </span>\n ) : null}\n </span>\n <span className={menuStyles.rightWrap}>\n <span\n className={menuStyles.iconWrap}\n style={{\n width: iconSizes.small,\n minWidth: iconSizes.small,\n height: iconSizes.small,\n }}\n >\n <WebIcon name=\"chevron-right\" size={iconSizes.small} color=\"currentColor\" aria-hidden />\n </span>\n </span>\n </span>\n </button>\n );\n}\n\nexport function MenuSubContent({ className, children, style, ...props }: MenuSubContentProps) {\n const menu = useContext(MenuContext);\n const sub = useMenuSub(\"MenuSubContent\");\n const panelRef = useRef<HTMLDivElement | null>(null);\n const [fixedStyle, setFixedStyle] = useState<CSSProperties | null>(null);\n const [side, setSide] = useState<\"left\" | \"right\">(\"right\");\n /** Tighter gap — easier to move pointer onto the panel without closing */\n const gapPx = parseCssPx(spacings.sizeXXXSmall, 2);\n const z = (Number.parseInt(String(zIndex.zIndexMessages), 10) || 10000) + 100;\n const defaultW = parseCssPx(componentSizes.menuPanelWidth, 244);\n\n const setPanelEl = useCallback(\n (el: HTMLDivElement | null) => {\n panelRef.current = el;\n if (sub.open) {\n menu?.registerSubPanel(el);\n }\n },\n [menu, sub.open],\n );\n\n useIsomorphicLayoutEffect(() => {\n if (!sub.open || (menu && !menu.open)) {\n setFixedStyle(null);\n menu?.registerSubPanel(null);\n return;\n }\n\n const apply = () => {\n const triggerEl = sub.triggerRef.current;\n const trigger = triggerEl?.getBoundingClientRect();\n if (!trigger || !triggerEl) return;\n\n const vh = window.innerHeight;\n const vw = window.innerWidth;\n if (trigger.bottom < 0 || trigger.top > vh || trigger.right < 0 || trigger.left > vw) {\n sub.setOpen(false);\n return;\n }\n\n const pw =\n panelRef.current?.offsetWidth && panelRef.current.offsetWidth > 0\n ? panelRef.current.offsetWidth\n : defaultW;\n const ph =\n panelRef.current?.offsetHeight && panelRef.current.offsetHeight > 0\n ? panelRef.current.offsetHeight\n : 160;\n const pos = computeSubmenuPanelPosition({\n trigger,\n panelWidth: pw,\n panelHeight: ph,\n gap: gapPx,\n });\n setSide(pos.left >= trigger.right - 1 ? \"right\" : \"left\");\n setFixedStyle({\n position: \"fixed\",\n top: pos.top,\n left: pos.left,\n minWidth: componentSizes.menuPanelWidth,\n zIndex: z,\n maxHeight: \"min(60vh, 20rem)\",\n });\n };\n\n apply();\n const raf = requestAnimationFrame(apply);\n window.addEventListener(\"resize\", apply);\n const unsubScroll = subscribeScrollAndScrollableAncestors(sub.triggerRef.current, apply);\n return () => {\n cancelAnimationFrame(raf);\n window.removeEventListener(\"resize\", apply);\n unsubScroll();\n };\n }, [sub.open, sub.triggerRef, sub, menu, menu?.open, defaultW, gapPx, z, menu?.registerSubPanel]);\n\n useEffect(() => {\n if (!sub.open || menu) return;\n\n const onPointerDown = (event: PointerEvent) => {\n const target = event.target as Node;\n if (sub.triggerRef.current?.contains(target) || panelRef.current?.contains(target)) {\n return;\n }\n sub.setOpen(false);\n };\n document.addEventListener(\"pointerdown\", onPointerDown);\n return () => document.removeEventListener(\"pointerdown\", onPointerDown);\n }, [sub, menu]);\n\n if (!sub.open || (menu && !menu.open) || !fixedStyle || typeof document === \"undefined\") {\n return null;\n }\n\n return createPortal(\n <div\n ref={setPanelEl}\n data-refineui=\"menu\"\n data-submenu=\"true\"\n data-state=\"open\"\n data-side={side}\n role=\"menu\"\n className={clsx(menuStyles.subPanel, className)}\n style={{ ...fixedStyle, ...style }}\n onPointerEnter={() => sub.cancelClose()}\n onPointerLeave={() => {\n if (isFinePointerHover()) {\n sub.closeIntent();\n }\n }}\n {...props}\n >\n {children}\n </div>,\n document.body,\n );\n}\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\nexport const menuStyles = {\n /** Panel chrome — Web Kit Menu `633:4268` (fill matches Dropdown elevated panel for contrast on docs) */\n panel:\n \"box-border flex w-refineui-menu-panel-width flex-col gap-px overflow-hidden rounded-refineui-large border-refineui-hairline border-refineui-alias-border-default bg-refineui-alias-background-primary p-refineui-size-xx-small shadow-refineui-2\",\n root: \"relative inline-flex items-center leading-none\",\n triggerFallback: \"cursor-pointer border-none bg-transparent p-0 font-inherit text-inherit\",\n /** Portal shell — position/z-index from `MenuPopover` fixed style */\n popover: \"z-refineui-messages\",\n list:\n \"box-border flex w-full min-w-refineui-menu-panel-width flex-col gap-px overflow-hidden rounded-refineui-large border-refineui-hairline border-refineui-alias-border-default bg-refineui-alias-background-primary p-refineui-size-xx-small shadow-refineui-2 outline-none\",\n subPanel:\n \"box-border flex w-refineui-menu-panel-width min-w-refineui-menu-panel-width flex-col gap-px overflow-hidden rounded-refineui-large border-refineui-hairline border-refineui-alias-border-default bg-refineui-alias-background-primary p-refineui-size-xx-small shadow-refineui-2 outline-none\",\n section: \"flex w-full items-center overflow-hidden px-refineui-size-x-small py-refineui-size-x-small\",\n sectionText: clsx(\n componentTextClass(componentTypographyTokens.menu.section),\n \"text-refineui-alias-foreground-tertiary\",\n ),\n dividerWrap: \"flex w-full items-center px-refineui-size-x-small py-refineui-size-xxx-small\",\n dividerLine: \"h-px w-full shrink-0 bg-refineui-alias-border-default\",\n itemBase:\n \"block w-full rounded-refineui-large border-none bg-transparent p-refineui-size-x-small text-start outline-none\",\n itemDisabled: \"cursor-not-allowed text-refineui-alias-foreground-disabled\",\n itemEnabled: \"cursor-pointer text-refineui-alias-foreground-primary\",\n row: \"flex items-center gap-refineui-size-x-small\",\n iconWrap: \"inline-flex shrink-0 items-center justify-center text-current [&>span]:leading-none\",\n textCol: \"flex min-w-0 flex-1 flex-col gap-refineui-size-xxx-small px-refineui-size-xxx-small\",\n title: clsx(componentTextClass(componentTypographyTokens.menu.item), \"truncate\"),\n description: clsx(componentTextClass(componentTypographyTokens.menu.description), \"truncate\"),\n descriptionEnabled: \"text-refineui-alias-foreground-tertiary\",\n descriptionDisabled: \"text-refineui-alias-foreground-disabled\",\n rightWrap: \"flex shrink-0 items-center gap-refineui-size-x-small\",\n shortcut: clsx(\n componentTextClass(componentTypographyTokens.menu.shortcut),\n \"tracking-wide text-refineui-alias-foreground-tertiary\",\n ),\n} as const;\n","import { clsx } from \"clsx\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type FocusEvent,\n type KeyboardEvent,\n type PointerEvent,\n} from \"react\";\nimport { iconSizes, semanticInteraction } from \"@refineui/tokens\";\nimport { motionMsToNumber } from \"@refineui/utilities/animation\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { navigationMenuStyles } from \"./style\";\nimport type {\n NavigationMenuContentProps,\n NavigationMenuIndicatorProps,\n NavigationMenuItemProps,\n NavigationMenuLinkProps,\n NavigationMenuListProps,\n NavigationMenuProps,\n NavigationMenuTriggerProps,\n} from \"./types\";\n\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? useLayoutEffect : useEffect;\n\ntype NavigationMenuContextValue = {\n value: string;\n setValue: (next: string) => void;\n openItem: (itemValue: string, options?: { immediate?: boolean }) => void;\n close: (options?: { immediate?: boolean }) => void;\n delayDuration: number;\n skipDelayDuration: number;\n listRef: React.RefObject<HTMLUListElement | null>;\n registerTrigger: (itemValue: string, el: HTMLButtonElement | null) => void;\n isInsideContent: boolean;\n};\n\nconst NavigationMenuContext = createContext<NavigationMenuContextValue | null>(null);\n\nfunction useNavigationMenu(component: string): NavigationMenuContextValue {\n const ctx = useContext(NavigationMenuContext);\n if (!ctx) {\n throw new Error(`${component} must be used within NavigationMenu.`);\n }\n return ctx;\n}\n\ntype NavigationMenuItemContextValue = {\n value: string;\n open: boolean;\n triggerId: string;\n contentId: string;\n};\n\nconst NavigationMenuItemContext = createContext<NavigationMenuItemContextValue | null>(null);\n\nfunction useNavigationMenuItem(component: string): NavigationMenuItemContextValue {\n const ctx = useContext(NavigationMenuItemContext);\n if (!ctx) {\n throw new Error(`${component} must be used within NavigationMenuItem.`);\n }\n return ctx;\n}\n\nfunction useControllableOpen(\n controlled: string | undefined,\n defaultValue: string | undefined,\n onChange: ((next: string) => void) | undefined,\n): [string, (next: string) => void] {\n const [internal, setInternal] = useState(defaultValue ?? \"\");\n const isControlled = controlled !== undefined;\n const value = isControlled ? controlled : internal;\n const setValue = useCallback(\n (next: string) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n },\n [isControlled, onChange],\n );\n return [value, setValue];\n}\n\nexport function NavigationMenu({\n children,\n className,\n value: valueControlled,\n defaultValue,\n onValueChange,\n delayDuration: delayDurationProp,\n skipDelayDuration: skipDelayDurationProp,\n \"aria-label\": ariaLabel = \"Main\",\n ...props\n}: NavigationMenuProps) {\n const [value, setValue] = useControllableOpen(valueControlled, defaultValue, onValueChange);\n const listRef = useRef<HTMLUListElement | null>(null);\n const triggerMapRef = useRef(new Map<string, HTMLButtonElement>());\n const openTimerRef = useRef<number | null>(null);\n const closeTimerRef = useRef<number | null>(null);\n const rootRef = useRef<HTMLElement | null>(null);\n\n const delayDuration =\n delayDurationProp ?? motionMsToNumber(semanticInteraction.duration.normal);\n const skipDelayDuration =\n skipDelayDurationProp ?? motionMsToNumber(semanticInteraction.duration.fast);\n\n const clearTimers = useCallback(() => {\n if (openTimerRef.current != null) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }\n if (closeTimerRef.current != null) {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n const setValueSafe = useCallback(\n (next: string) => {\n clearTimers();\n setValue(next);\n },\n [clearTimers, setValue],\n );\n\n const openItem = useCallback(\n (itemValue: string, options?: { immediate?: boolean }) => {\n clearTimers();\n const delay = options?.immediate || value !== \"\" ? skipDelayDuration : delayDuration;\n if (delay <= 0 || options?.immediate) {\n setValue(itemValue);\n return;\n }\n openTimerRef.current = window.setTimeout(() => {\n setValue(itemValue);\n openTimerRef.current = null;\n }, delay);\n },\n [clearTimers, delayDuration, setValue, skipDelayDuration, value],\n );\n\n const close = useCallback(\n (options?: { immediate?: boolean }) => {\n clearTimers();\n if (options?.immediate) {\n setValue(\"\");\n return;\n }\n closeTimerRef.current = window.setTimeout(() => {\n setValue(\"\");\n closeTimerRef.current = null;\n }, skipDelayDuration);\n },\n [clearTimers, setValue, skipDelayDuration],\n );\n\n const registerTrigger = useCallback((itemValue: string, el: HTMLButtonElement | null) => {\n if (el) {\n triggerMapRef.current.set(itemValue, el);\n } else {\n triggerMapRef.current.delete(itemValue);\n }\n }, []);\n\n useEffect(() => () => clearTimers(), [clearTimers]);\n\n useEffect(() => {\n if (!value) return;\n\n const onPointerDown = (event: globalThis.PointerEvent) => {\n const target = event.target as Node;\n if (rootRef.current?.contains(target)) return;\n setValueSafe(\"\");\n };\n\n const onKeyDown = (event: globalThis.KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setValueSafe(\"\");\n const trigger = triggerMapRef.current.get(value);\n trigger?.focus();\n }\n };\n\n document.addEventListener(\"pointerdown\", onPointerDown);\n document.addEventListener(\"keydown\", onKeyDown);\n return () => {\n document.removeEventListener(\"pointerdown\", onPointerDown);\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [setValueSafe, value]);\n\n const ctx = useMemo<NavigationMenuContextValue>(\n () => ({\n value,\n setValue: setValueSafe,\n openItem,\n close,\n delayDuration,\n skipDelayDuration,\n listRef,\n registerTrigger,\n isInsideContent: false,\n }),\n [close, delayDuration, openItem, registerTrigger, setValueSafe, skipDelayDuration, value],\n );\n\n return (\n <NavigationMenuContext.Provider value={ctx}>\n <nav\n ref={rootRef}\n data-refineui=\"navigation-menu\"\n aria-label={ariaLabel}\n className={clsx(navigationMenuStyles.root, className)}\n {...props}\n >\n {children}\n </nav>\n </NavigationMenuContext.Provider>\n );\n}\n\nfunction focusListSibling(list: HTMLUListElement | null, current: HTMLElement, direction: 1 | -1) {\n if (!list) return;\n const items = Array.from(\n list.querySelectorAll<HTMLElement>(\n '[data-refineui=\"navigation-menu-trigger\"]:not(:disabled), [data-refineui=\"navigation-menu-link\"]:not([aria-disabled=\"true\"])',\n ),\n ).filter((el) => list.contains(el) && el.closest('[data-refineui=\"navigation-menu-content\"]') == null);\n\n const index = items.indexOf(current);\n if (index < 0 || items.length === 0) return;\n const next = items[(index + direction + items.length) % items.length];\n next?.focus();\n}\n\nexport function NavigationMenuList({ className, onKeyDown, ...props }: NavigationMenuListProps) {\n const { listRef } = useNavigationMenu(\"NavigationMenuList\");\n\n return (\n <ul\n ref={listRef as React.Ref<HTMLUListElement>}\n data-refineui=\"navigation-menu-list\"\n className={clsx(navigationMenuStyles.list, className)}\n onKeyDown={(event: KeyboardEvent<HTMLUListElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n const target = event.target as HTMLElement;\n if (event.key === \"ArrowRight\") {\n event.preventDefault();\n focusListSibling(listRef.current, target, 1);\n } else if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n focusListSibling(listRef.current, target, -1);\n }\n }}\n {...props}\n />\n );\n}\n\nexport function NavigationMenuItem({\n children,\n className,\n value: valueProp,\n onPointerEnter,\n onPointerLeave,\n ...props\n}: NavigationMenuItemProps) {\n const menu = useNavigationMenu(\"NavigationMenuItem\");\n const reactId = useId();\n const value = valueProp ?? reactId;\n const open = menu.value === value;\n const triggerId = `refineui-nav-menu-trigger-${value}`;\n const contentId = `refineui-nav-menu-content-${value}`;\n\n const itemCtx = useMemo<NavigationMenuItemContextValue>(\n () => ({ value, open, triggerId, contentId }),\n [contentId, open, triggerId, value],\n );\n\n return (\n <NavigationMenuItemContext.Provider value={itemCtx}>\n <li\n data-refineui=\"navigation-menu-item\"\n data-state={open ? \"open\" : \"closed\"}\n className={clsx(navigationMenuStyles.item, className)}\n onPointerEnter={(event: PointerEvent<HTMLLIElement>) => {\n onPointerEnter?.(event);\n if (event.defaultPrevented) return;\n const hasTrigger = Boolean(\n event.currentTarget.querySelector('[data-refineui=\"navigation-menu-trigger\"]'),\n );\n if (hasTrigger) {\n menu.openItem(value);\n }\n }}\n onPointerLeave={(event: PointerEvent<HTMLLIElement>) => {\n onPointerLeave?.(event);\n if (event.defaultPrevented) return;\n menu.close();\n }}\n {...props}\n >\n {children}\n </li>\n </NavigationMenuItemContext.Provider>\n );\n}\n\nexport function NavigationMenuTrigger({\n children,\n className,\n disabled,\n onClick,\n onKeyDown,\n ...props\n}: NavigationMenuTriggerProps) {\n const menu = useNavigationMenu(\"NavigationMenuTrigger\");\n const item = useNavigationMenuItem(\"NavigationMenuTrigger\");\n\n const setTriggerRef = useCallback(\n (el: HTMLButtonElement | null) => {\n menu.registerTrigger(item.value, el);\n },\n [item.value, menu],\n );\n\n return (\n <button\n ref={setTriggerRef}\n type=\"button\"\n id={item.triggerId}\n data-refineui=\"navigation-menu-trigger\"\n data-state={item.open ? \"open\" : \"closed\"}\n aria-expanded={item.open}\n aria-controls={item.contentId}\n aria-haspopup=\"true\"\n disabled={disabled}\n className={clsx(\n navigationMenuStyles.trigger,\n item.open && navigationMenuStyles.triggerOpen,\n disabled && navigationMenuStyles.triggerDisabled,\n className,\n )}\n onClick={(event) => {\n onClick?.(event);\n if (event.defaultPrevented || disabled) return;\n if (item.open) {\n menu.setValue(\"\");\n } else {\n menu.openItem(item.value, { immediate: true });\n }\n }}\n onKeyDown={(event: KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || disabled) return;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n if (item.open) {\n menu.setValue(\"\");\n } else {\n menu.openItem(item.value, { immediate: true });\n }\n } else if (event.key === \"ArrowDown\" && !item.open) {\n event.preventDefault();\n menu.openItem(item.value, { immediate: true });\n }\n }}\n {...props}\n >\n {children}\n <WebIcon\n name=\"chevron-down\"\n size={iconSizes.xsmall}\n color=\"currentColor\"\n className={clsx(\n navigationMenuStyles.chevron,\n item.open && navigationMenuStyles.chevronOpen,\n )}\n />\n </button>\n );\n}\n\nexport function NavigationMenuContent({\n children,\n className,\n onKeyDown,\n ...props\n}: NavigationMenuContentProps) {\n const menu = useNavigationMenu(\"NavigationMenuContent\");\n const item = useNavigationMenuItem(\"NavigationMenuContent\");\n const [shouldRender, setShouldRender] = useState(item.open);\n const [isClosing, setIsClosing] = useState(false);\n\n useEffect(() => {\n if (item.open) {\n setShouldRender(true);\n setIsClosing(false);\n return;\n }\n if (!shouldRender) return;\n setIsClosing(true);\n const timeout = window.setTimeout(() => {\n setShouldRender(false);\n setIsClosing(false);\n }, motionMsToNumber(semanticInteraction.duration.fast));\n return () => window.clearTimeout(timeout);\n }, [item.open, shouldRender]);\n\n const contentCtx = useMemo<NavigationMenuContextValue>(\n () => ({ ...menu, isInsideContent: true }),\n [menu],\n );\n\n if (!shouldRender) return null;\n\n return (\n <NavigationMenuContext.Provider value={contentCtx}>\n <div\n id={item.contentId}\n role=\"region\"\n aria-labelledby={item.triggerId}\n data-refineui=\"navigation-menu-content\"\n data-state={isClosing || !item.open ? \"closed\" : \"open\"}\n className={clsx(navigationMenuStyles.content, className)}\n onKeyDown={(event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n if (event.key === \"Escape\") {\n event.preventDefault();\n menu.setValue(\"\");\n }\n }}\n {...props}\n >\n <div data-refineui=\"navigation-menu-content-panel\" className={navigationMenuStyles.contentPanel}>\n {children}\n </div>\n </div>\n </NavigationMenuContext.Provider>\n );\n}\n\nexport function NavigationMenuLink({\n children,\n className,\n active = false,\n onClick,\n onFocus,\n \"aria-disabled\": ariaDisabled,\n ...props\n}: NavigationMenuLinkProps) {\n const menu = useContext(NavigationMenuContext);\n const inContent = menu?.isInsideContent ?? false;\n const disabled = ariaDisabled === true || ariaDisabled === \"true\";\n\n return (\n <a\n data-refineui=\"navigation-menu-link\"\n data-active={active || undefined}\n aria-current={active ? \"page\" : undefined}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : undefined}\n className={clsx(\n inContent ? navigationMenuStyles.linkInContent : navigationMenuStyles.link,\n !inContent && active && navigationMenuStyles.linkActive,\n disabled && navigationMenuStyles.linkDisabled,\n className,\n )}\n onClick={(event) => {\n onClick?.(event);\n if (event.defaultPrevented || disabled) return;\n menu?.setValue(\"\");\n }}\n onFocus={(event: FocusEvent<HTMLAnchorElement>) => {\n onFocus?.(event);\n if (!inContent) {\n menu?.setValue(\"\");\n }\n }}\n {...props}\n >\n {children}\n {!inContent ? <span aria-hidden className={navigationMenuStyles.linkChevronSpacer} /> : null}\n </a>\n );\n}\n\ntype IndicatorBox = { left: number; width: number };\n\nexport function NavigationMenuIndicator({ className, style, ...props }: NavigationMenuIndicatorProps) {\n const { value, listRef } = useNavigationMenu(\"NavigationMenuIndicator\");\n const [box, setBox] = useState<IndicatorBox | null>(null);\n\n const measure = useCallback(() => {\n const list = listRef.current;\n if (!list || !value) {\n setBox(null);\n return;\n }\n const trigger = list.querySelector<HTMLElement>(\n `[data-refineui=\"navigation-menu-trigger\"][id=\"refineui-nav-menu-trigger-${CSS.escape(value)}\"]`,\n );\n if (!trigger) {\n setBox(null);\n return;\n }\n const listRect = list.getBoundingClientRect();\n const triggerRect = trigger.getBoundingClientRect();\n setBox({\n left: triggerRect.left - listRect.left,\n width: triggerRect.width,\n });\n }, [listRef, value]);\n\n useIsomorphicLayoutEffect(() => {\n measure();\n window.addEventListener(\"resize\", measure);\n return () => window.removeEventListener(\"resize\", measure);\n }, [measure]);\n\n if (!box) return null;\n\n const indicatorStyle: CSSProperties = {\n width: box.width,\n transform: `translateX(${box.left}px)`,\n ...style,\n };\n\n return (\n <div\n data-refineui=\"navigation-menu-indicator\"\n aria-hidden\n className={clsx(navigationMenuStyles.indicator, className)}\n style={indicatorStyle}\n {...props}\n />\n );\n}\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\nconst topLevelItem = clsx(\n componentTextClass(componentTypographyTokens.navigationMenu.trigger),\n \"box-border inline-flex cursor-pointer items-center justify-center gap-refineui-size-x-small\",\n \"rounded-refineui-large border-none bg-transparent px-refineui-size-medium py-refineui-size-x-small\",\n \"text-refineui-alias-foreground-tertiary outline-none leading-none\",\n \"transition-[color,background-color] duration-[var(--refineui-motion-duration-fast)]\",\n);\n\nconst chevron = clsx(\n \"shrink-0 transition-transform duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]\",\n);\n\n/**\n * Site / app top navigation — token-based composition.\n * Top-level hover plate uses primary surface tokens; content rows match Menu item.\n */\nexport const navigationMenuStyles = {\n root: \"relative isolate z-refineui-messages flex w-full max-w-max items-center\",\n list: \"relative m-0 flex list-none flex-wrap items-center gap-refineui-size-xx-small p-0\",\n item: \"relative inline-flex items-center\",\n trigger: clsx(topLevelItem, \"m-0 appearance-none font-inherit\"),\n triggerOpen: \"text-refineui-alias-foreground-primary\",\n triggerDisabled: \"cursor-not-allowed text-refineui-alias-foreground-disabled\",\n chevron,\n chevronOpen: \"rotate-180\",\n /** Matches trigger chevron box so direct top-level links align with dropdown triggers. */\n linkChevronSpacer: clsx(chevron, \"inline-block size-refineui-icon-xsmall shrink-0 pointer-events-none invisible\"),\n content: clsx(\n /** Flush under trigger so pointer does not leave the item while moving into the panel. */\n \"absolute start-0 top-full z-refineui-messages pt-refineui-size-xx-small\",\n \"box-border min-w-refineui-menu-panel-width\",\n \"outline-none\",\n ),\n contentPanel: clsx(\n \"box-border overflow-hidden rounded-refineui-large border-refineui-hairline border-refineui-alias-border-default\",\n \"bg-refineui-alias-background-primary p-refineui-size-xx-small shadow-refineui-2\",\n ),\n link: clsx(topLevelItem, \"no-underline\"),\n linkActive: \"text-refineui-alias-foreground-primary\",\n linkDisabled: \"cursor-not-allowed text-refineui-alias-foreground-disabled\",\n /** Dense row inside a content panel — same density as Menu item. */\n linkInContent: clsx(\n componentTextClass(componentTypographyTokens.navigationMenu.contentLink),\n \"box-border flex w-full cursor-pointer items-center gap-refineui-size-x-small\",\n \"rounded-refineui-large border-none bg-transparent p-refineui-size-x-small text-start no-underline outline-none\",\n \"text-refineui-alias-foreground-primary\",\n \"transition-[background-color,color] duration-[var(--refineui-motion-duration-fast)]\",\n ),\n /** Optional — prefer omitting; kept for API compatibility. */\n indicator: \"hidden\",\n} as const;\n","import { clsx } from \"clsx\";\nimport { sidebarStyles } from \"./style\";\nimport type {\n SidebarBrandProps,\n SidebarContentProps,\n SidebarFooterProps,\n SidebarGroupLabelProps,\n SidebarGroupProps,\n SidebarHeaderProps,\n SidebarLinkProps,\n SidebarNavProps,\n SidebarProps,\n} from \"./types\";\n\n/** App sidebar landmark — token composition (no Web Kit COMPONENT_SET). */\nexport function Sidebar({ className, ...props }: SidebarProps) {\n return (\n <aside\n data-refineui=\"sidebar\"\n className={clsx(sidebarStyles.root, className)}\n {...props}\n />\n );\n}\n\nexport function SidebarHeader({ className, ...props }: SidebarHeaderProps) {\n return (\n <div\n data-refineui=\"sidebar-header\"\n className={clsx(sidebarStyles.header, className)}\n {...props}\n />\n );\n}\n\nexport function SidebarBrand({ className, ...props }: SidebarBrandProps) {\n return (\n <div\n data-refineui=\"sidebar-brand\"\n className={clsx(sidebarStyles.brand, className)}\n {...props}\n />\n );\n}\n\nexport function SidebarContent({ className, ...props }: SidebarContentProps) {\n return (\n <div\n data-refineui=\"sidebar-content\"\n className={clsx(sidebarStyles.content, className)}\n {...props}\n />\n );\n}\n\nexport function SidebarNav({ className, \"aria-label\": ariaLabel = \"Sidebar\", ...props }: SidebarNavProps) {\n return (\n <nav\n data-refineui=\"sidebar-nav\"\n aria-label={ariaLabel}\n className={clsx(sidebarStyles.nav, className)}\n {...props}\n />\n );\n}\n\nexport function SidebarGroup({ className, ...props }: SidebarGroupProps) {\n return (\n <div\n data-refineui=\"sidebar-group\"\n className={clsx(sidebarStyles.group, className)}\n {...props}\n />\n );\n}\n\nexport function SidebarGroupLabel({ className, ...props }: SidebarGroupLabelProps) {\n return (\n <p\n data-refineui=\"sidebar-group-label\"\n className={clsx(sidebarStyles.groupLabel, className)}\n {...props}\n />\n );\n}\n\nexport function SidebarLink({\n className,\n active = false,\n \"aria-disabled\": ariaDisabled,\n ...props\n}: SidebarLinkProps) {\n const disabled = ariaDisabled === true || ariaDisabled === \"true\";\n\n return (\n <a\n data-refineui=\"sidebar-link\"\n data-active={active || undefined}\n aria-current={active ? \"page\" : undefined}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : undefined}\n className={clsx(\n sidebarStyles.link,\n active && sidebarStyles.linkActive,\n disabled && sidebarStyles.linkDisabled,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function SidebarFooter({ className, ...props }: SidebarFooterProps) {\n return (\n <div\n data-refineui=\"sidebar-footer\"\n className={clsx(sidebarStyles.footer, className)}\n {...props}\n />\n );\n}\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\n/**\n * App sidebar landmark — token composition (no Web Kit COMPONENT_SET).\n */\nexport const sidebarStyles = {\n root: clsx(\n \"box-border flex h-full min-h-0 w-full min-w-0 flex-1 flex-col\",\n \"border-e-refineui-hairline border-refineui-alias-border-default\",\n \"bg-refineui-alias-background-primary\",\n ),\n header: clsx(\n \"flex shrink-0 flex-col\",\n \"border-b-refineui-hairline border-refineui-alias-border-default\",\n \"px-refineui-size-large py-refineui-size-large\",\n ),\n brand: clsx(\n componentTextClass(componentTypographyTokens.sidebar.brand),\n \"m-0 flex min-w-0 items-center gap-refineui-size-small text-refineui-alias-foreground-primary\",\n ),\n content: \"flex min-h-0 flex-1 flex-col overflow-y-auto px-refineui-size-medium py-refineui-size-medium\",\n nav: \"flex min-h-0 flex-col gap-refineui-size-x-large\",\n group: \"flex min-w-0 flex-col gap-refineui-size-xx-small\",\n groupLabel: clsx(\n componentTextClass(componentTypographyTokens.sidebar.groupLabel),\n \"m-0 px-refineui-size-medium py-refineui-size-xxx-small text-refineui-alias-foreground-tertiary\",\n ),\n link: clsx(\n componentTextClass(componentTypographyTokens.sidebar.link),\n \"box-border flex w-full min-w-0 cursor-pointer items-center gap-refineui-size-x-small\",\n \"rounded-refineui-large border-none bg-transparent px-refineui-size-medium py-refineui-size-x-small\",\n \"text-refineui-alias-foreground-tertiary no-underline outline-none\",\n \"transition-[color,background-color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]\",\n ),\n linkActive: \"font-medium text-refineui-alias-foreground-primary\",\n linkDisabled: \"cursor-not-allowed text-refineui-alias-foreground-disabled\",\n footer: clsx(\n \"mt-auto flex shrink-0 flex-col\",\n \"border-t-refineui-hairline border-refineui-alias-border-default\",\n \"px-refineui-size-medium py-refineui-size-medium\",\n ),\n} as const;\n","import { clsx } from \"clsx\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { semanticInteraction } from \"@refineui/tokens\";\nimport { motionMsToNumber } from \"@refineui/utilities/animation\";\nimport { sidebarPeekStyles } from \"./peekStyle\";\nimport type {\n SidebarPeekEdgeProps,\n SidebarPeekInsetProps,\n SidebarPeekPanelProps,\n SidebarPeekPinProps,\n SidebarPeekProps,\n} from \"./types\";\n\nconst PEEK_OPEN_DELAY_MS = motionMsToNumber(semanticInteraction.duration.medium);\nconst PEEK_CLOSE_DELAY_MS = motionMsToNumber(semanticInteraction.duration.medium);\n/** Grace when crossing from the edge strip into the panel. */\nconst PEEK_BRIDGE_DELAY_MS = motionMsToNumber(semanticInteraction.duration.slow);\n\ntype SidebarPeekContextValue = {\n enabled: boolean;\n mode: \"contained\" | \"viewport\";\n peekOpen: boolean;\n flyoutWidthPx: number | undefined;\n schedulePeekOpen: () => void;\n schedulePeekClose: (delay?: number) => void;\n closePeekImmediate: () => void;\n cancelPeekClose: () => void;\n cancelPeekOpen: () => void;\n onPin?: () => void;\n};\n\nconst SidebarPeekContext = createContext<SidebarPeekContextValue | null>(null);\n\nfunction useSidebarPeekContext(component: string): SidebarPeekContextValue {\n const ctx = useContext(SidebarPeekContext);\n if (!ctx) throw new Error(`${component} must be used within <SidebarPeek>.`);\n return ctx;\n}\n\nexport function SidebarPeek({\n enabled = false,\n widthPercent,\n mode = \"contained\",\n onPin,\n className,\n style,\n children,\n ...props\n}: SidebarPeekProps) {\n const rootRef = useRef<HTMLDivElement>(null);\n const widthPercentRef = useRef(widthPercent);\n widthPercentRef.current = widthPercent;\n const [peekOpen, setPeekOpen] = useState(false);\n const [flyoutWidthPx, setFlyoutWidthPx] = useState<number | undefined>();\n const peekOpenTimerRef = useRef<number | null>(null);\n const peekCloseTimerRef = useRef<number | null>(null);\n\n const clearPeekOpenTimer = useCallback(() => {\n if (peekOpenTimerRef.current != null) {\n window.clearTimeout(peekOpenTimerRef.current);\n peekOpenTimerRef.current = null;\n }\n }, []);\n\n const clearPeekCloseTimer = useCallback(() => {\n if (peekCloseTimerRef.current != null) {\n window.clearTimeout(peekCloseTimerRef.current);\n peekCloseTimerRef.current = null;\n }\n }, []);\n\n const closePeekImmediate = useCallback(() => {\n clearPeekOpenTimer();\n clearPeekCloseTimer();\n setPeekOpen(false);\n }, [clearPeekCloseTimer, clearPeekOpenTimer]);\n\n const closePeek = useCallback(() => {\n closePeekImmediate();\n }, [closePeekImmediate]);\n\n useEffect(() => {\n if (enabled) return;\n closePeek();\n }, [closePeek, enabled]);\n\n useEffect(() => {\n const el = rootRef.current;\n if (!el) return;\n\n const syncFlyoutWidth = () => {\n setFlyoutWidthPx(Math.round((widthPercentRef.current / 100) * el.clientWidth));\n };\n\n syncFlyoutWidth();\n const observer = new ResizeObserver(syncFlyoutWidth);\n observer.observe(el);\n return () => observer.disconnect();\n }, []);\n\n const pointerRef = useRef({ x: 0, y: 0 });\n\n useEffect(() => {\n if (!enabled) return;\n const onPointerMove = (event: PointerEvent) => {\n pointerRef.current = { x: event.clientX, y: event.clientY };\n };\n document.addEventListener(\"pointermove\", onPointerMove, { passive: true });\n return () => document.removeEventListener(\"pointermove\", onPointerMove);\n }, [enabled]);\n\n useEffect(() => {\n if (!peekOpen) return;\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") closePeek();\n };\n window.addEventListener(\"keydown\", onKeyDown);\n return () => window.removeEventListener(\"keydown\", onKeyDown);\n }, [closePeek, peekOpen]);\n\n useEffect(\n () => () => {\n clearPeekOpenTimer();\n clearPeekCloseTimer();\n },\n [clearPeekCloseTimer, clearPeekOpenTimer],\n );\n\n const cancelPeekOpen = useCallback(() => {\n clearPeekOpenTimer();\n }, [clearPeekOpenTimer]);\n\n const schedulePeekOpen = useCallback(() => {\n if (!enabled || peekOpen) return;\n clearPeekCloseTimer();\n clearPeekOpenTimer();\n peekOpenTimerRef.current = window.setTimeout(() => {\n setPeekOpen(true);\n peekOpenTimerRef.current = null;\n }, PEEK_OPEN_DELAY_MS);\n }, [clearPeekCloseTimer, clearPeekOpenTimer, enabled, peekOpen]);\n\n const schedulePeekClose = useCallback(\n (delay = PEEK_CLOSE_DELAY_MS) => {\n clearPeekOpenTimer();\n if (!peekOpen) return;\n clearPeekCloseTimer();\n peekCloseTimerRef.current = window.setTimeout(() => {\n closePeekImmediate();\n peekCloseTimerRef.current = null;\n }, delay);\n },\n [clearPeekCloseTimer, clearPeekOpenTimer, closePeekImmediate, peekOpen],\n );\n\n const cancelPeekClose = useCallback(() => {\n clearPeekCloseTimer();\n }, [clearPeekCloseTimer]);\n\n useEffect(() => {\n if (!peekOpen || !enabled) return;\n const frame = requestAnimationFrame(() => {\n const root = rootRef.current;\n if (!root) return;\n const { x, y } = pointerRef.current;\n const zones = Array.from(\n root.querySelectorAll(\n '[data-refineui=\"sidebar-peek-edge\"], [data-refineui=\"sidebar-peek-surface\"]',\n ),\n );\n for (const zone of zones) {\n if (!(zone instanceof HTMLElement)) continue;\n const rect = zone.getBoundingClientRect();\n if (x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom) {\n cancelPeekClose();\n return;\n }\n }\n });\n return () => cancelAnimationFrame(frame);\n }, [cancelPeekClose, enabled, peekOpen]);\n\n const contextValue = useMemo<SidebarPeekContextValue>(\n () => ({\n enabled,\n mode,\n peekOpen,\n flyoutWidthPx,\n schedulePeekOpen,\n schedulePeekClose,\n closePeekImmediate,\n cancelPeekClose,\n cancelPeekOpen,\n onPin,\n }),\n [\n cancelPeekClose,\n cancelPeekOpen,\n closePeekImmediate,\n enabled,\n flyoutWidthPx,\n mode,\n onPin,\n peekOpen,\n schedulePeekClose,\n schedulePeekOpen,\n ],\n );\n\n return (\n <SidebarPeekContext.Provider value={contextValue}>\n <div\n ref={rootRef}\n data-refineui=\"sidebar-peek\"\n data-sidebar-peek={enabled ? undefined : \"disabled\"}\n data-sidebar-peek-open={peekOpen || undefined}\n className={clsx(sidebarPeekStyles.root, className)}\n style={style}\n {...props}\n >\n {children}\n </div>\n </SidebarPeekContext.Provider>\n );\n}\n\nexport function SidebarPeekEdge({ className, ...props }: SidebarPeekEdgeProps) {\n const { enabled, mode, peekOpen, schedulePeekOpen, schedulePeekClose, cancelPeekOpen } =\n useSidebarPeekContext(\"SidebarPeekEdge\");\n\n if (!enabled) return null;\n\n const handleEdgeLeave = () => {\n if (peekOpen) {\n schedulePeekClose(PEEK_BRIDGE_DELAY_MS);\n return;\n }\n cancelPeekOpen();\n };\n\n return (\n <div\n data-refineui=\"sidebar-peek-edge\"\n data-sidebar-peek-edge-suspended={peekOpen || undefined}\n aria-hidden\n className={clsx(\n mode === \"viewport\" ? sidebarPeekStyles.edgeViewport : sidebarPeekStyles.edgeContained,\n className,\n )}\n onMouseEnter={schedulePeekOpen}\n onMouseLeave={handleEdgeLeave}\n {...props}\n />\n );\n}\n\nexport function SidebarPeekPanel({ className, children, ...props }: SidebarPeekPanelProps) {\n const { enabled, mode, peekOpen, flyoutWidthPx, cancelPeekClose, schedulePeekClose } =\n useSidebarPeekContext(\"SidebarPeekPanel\");\n\n if (!enabled) return null;\n\n const surfaceStyle: CSSProperties | undefined =\n flyoutWidthPx == null\n ? undefined\n : ({\n \"--refineui-sidebar-peek-panel-width\": `${flyoutWidthPx}px`,\n } as CSSProperties);\n\n return (\n <div\n data-refineui=\"sidebar-peek-surface\"\n data-sidebar-peek-panel-open={peekOpen || undefined}\n data-sidebar-peek-mode={mode}\n aria-hidden={!peekOpen}\n className={clsx(\n mode === \"viewport\" ? sidebarPeekStyles.surfaceViewport : sidebarPeekStyles.surfaceContained,\n )}\n style={surfaceStyle}\n onMouseEnter={cancelPeekClose}\n onMouseLeave={() => {\n if (peekOpen) schedulePeekClose();\n }}\n >\n <div\n data-refineui=\"sidebar-peek-panel\"\n className={clsx(sidebarPeekStyles.panel, className)}\n {...props}\n >\n {children}\n </div>\n </div>\n );\n}\n\nexport function SidebarPeekPin({ className, children, ...props }: SidebarPeekPinProps) {\n return (\n <div data-refineui=\"sidebar-peek-pin\" className={clsx(sidebarPeekStyles.toolbar, className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport function SidebarPeekInset({ className, style, children, ...props }: SidebarPeekInsetProps) {\n return (\n <div\n data-refineui=\"sidebar-peek-inset\"\n className={clsx(sidebarPeekStyles.inset, className)}\n style={style}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport function useSidebarPeek(): SidebarPeekContextValue {\n return useSidebarPeekContext(\"useSidebarPeek\");\n}\n","import { clsx } from \"clsx\";\n\nexport const sidebarPeekStyles = {\n root: \"relative h-full w-full min-h-0 min-w-0\",\n edgeContained: clsx(\n \"absolute inset-y-0 inset-inline-start-0 z-[calc(var(--refineui-z-floating)-1)]\",\n \"w-refineui-foundation-size-120\",\n ),\n edgeViewport: clsx(\n \"fixed inset-inline-start-0 inset-block-end-0 z-[calc(var(--refineui-z-floating)-1)]\",\n \"w-refineui-foundation-size-120\",\n \"top-[var(--refineui-sidebar-peek-viewport-offset,0px)]\",\n ),\n surfaceContained: clsx(\"absolute z-refineui-floating flex min-h-0\"),\n surfaceViewport: clsx(\"fixed z-refineui-floating flex min-h-0\"),\n panel: clsx(\"box-border flex min-h-0 w-full flex-1 flex-col overflow-hidden\"),\n toolbar: \"flex shrink-0 justify-end px-refineui-size-x-small pt-refineui-size-x-small\",\n panelBody: \"flex min-h-0 w-full flex-1 flex-col\",\n inset: \"relative flex min-h-0 min-w-0 flex-1 flex-col\",\n} as const;\n","import { clsx } from \"clsx\";\nimport { iconSizes } from \"@refineui/tokens\";\nimport { resolveColorTokenValue } from \"@refineui/utilities/color\";\nimport { componentColorTokens } from \"../../tokens/componentColorTokens\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { paginationStyles } from \"./style\";\nimport type {\n PaginationContentProps,\n PaginationEllipsisProps,\n PaginationItemProps,\n PaginationLinkProps,\n PaginationNextProps,\n PaginationPreviousProps,\n PaginationProps,\n PaginationRootProps,\n} from \"./types\";\n\nexport function PaginationRoot({ className, ...props }: PaginationRootProps) {\n return <nav aria-label=\"Pagination\" className={clsx(paginationStyles.root, className)} {...props} />;\n}\n\nexport function PaginationContent({ className, ...props }: PaginationContentProps) {\n return <ul className={clsx(paginationStyles.listWrap, className)} {...props} />;\n}\n\nexport function PaginationItem({ className, ...props }: PaginationItemProps) {\n return <li className={className} {...props} />;\n}\n\nexport function PaginationLink({ className, isActive, ...props }: PaginationLinkProps) {\n return (\n <a\n data-refineui=\"pagination\"\n data-page=\"true\"\n data-selected={isActive ? \"true\" : \"false\"}\n aria-current={isActive ? \"page\" : undefined}\n className={clsx(paginationStyles.itemShell, paginationStyles.page, className)}\n {...props}\n />\n );\n}\n\nfunction PaginationNavButton({\n direction,\n className,\n disabled,\n ...props\n}: (PaginationPreviousProps | PaginationNextProps) & { direction: \"prev\" | \"next\" }) {\n const isPrev = direction === \"prev\";\n const iconColor = disabled\n ? resolveColorTokenValue(componentColorTokens.pagination.navIcon.disabled)\n : resolveColorTokenValue(componentColorTokens.pagination.navIcon.default);\n\n return (\n <button\n type=\"button\"\n data-refineui=\"pagination\"\n data-nav=\"true\"\n disabled={disabled}\n aria-label={isPrev ? \"Previous page\" : \"Next page\"}\n className={clsx(paginationStyles.itemShell, paginationStyles.nav, className)}\n {...props}\n >\n <WebIcon\n name={isPrev ? \"chevron-left\" : \"chevron-right\"}\n size={iconSizes.medium}\n color={iconColor}\n fallback={isPrev ? \"‹\" : \"›\"}\n />\n </button>\n );\n}\n\nexport function PaginationPrevious(props: PaginationPreviousProps) {\n return <PaginationNavButton direction=\"prev\" {...props} />;\n}\n\nexport function PaginationNext(props: PaginationNextProps) {\n return <PaginationNavButton direction=\"next\" {...props} />;\n}\n\nexport function PaginationEllipsis({ className, ...props }: PaginationEllipsisProps) {\n return (\n <span\n aria-hidden\n data-refineui=\"pagination\"\n data-ellipsis=\"true\"\n className={clsx(paginationStyles.itemShell, paginationStyles.ellipsis, className)}\n {...props}\n >\n <WebIcon\n name=\"more-horizontal\"\n size={iconSizes.medium}\n color={resolveColorTokenValue(componentColorTokens.pagination.navIcon.default)}\n fallback=\"…\"\n />\n </span>\n );\n}\n\nexport function Pagination(props: PaginationProps) {\n return <PaginationRoot {...props} />;\n}\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\nexport const paginationStyles = {\n root: \"flex flex-wrap items-center gap-refineui-size-medium\",\n listWrap: \"flex flex-wrap items-center gap-refineui-size-medium\",\n itemShell:\n \"box-border inline-flex h-refineui-pagination-button-min-width min-h-refineui-pagination-button-min-width w-refineui-pagination-button-min-width min-w-refineui-pagination-button-min-width shrink-0 items-center justify-center rounded-refineui-x-large border-refineui-thin p-refineui-size-x-small outline-none transition-[background-color,border-color,box-shadow,transform,color] duration-[var(--refineui-motion-duration-fast)]\",\n page: clsx(\n componentTextClass(componentTypographyTokens.pagination),\n \"border-refineui-alias-border-default bg-refineui-alias-background-primary font-medium text-refineui-alias-foreground-primary no-underline\",\n ),\n nav:\n \"cursor-pointer border-refineui-alias-border-default bg-refineui-alias-background-primary disabled:cursor-not-allowed disabled:border-refineui-alias-border-disabled disabled:bg-refineui-alias-background-surface-disabled\",\n ellipsis:\n \"pointer-events-none border-transparent bg-transparent text-refineui-alias-foreground-secondary\",\n} as const;\n","import { clsx } from \"clsx\";\nimport {\n cloneElement,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport { spacings, strokeWidths } from \"@refineui/tokens\";\nimport { resolveColorTokenValue } from \"@refineui/utilities/color\";\nimport { componentSizes, foundationSizes } from \"../../componentSizes\";\nimport { componentColorTokens } from \"../../tokens/componentColorTokens\";\nimport { useFocusTrap } from \"../../hooks/useFocusTrap\";\nimport { composeRefs, getMergeableTriggerChild } from \"@refineui/utilities/react\";\nimport { popoverFloatingClasses, popoverStyles } from \"./style\";\nimport type {\n PopOverProps,\n PopoverAlign,\n PopoverContentProps,\n PopoverPlacement,\n PopoverProps,\n PopoverTriggerProps,\n} from \"./types\";\n\ntype TriggerProps = {\n onClick?: (e: MouseEvent<HTMLElement>) => void;\n onKeyDown?: (e: KeyboardEvent<HTMLElement>) => void;\n};\n\ntype TriggerElement = ReactElement<TriggerProps> & { ref?: Ref<HTMLElement | null> };\n\ntype PopoverContextValue = {\n open: boolean;\n setOpen: (next: boolean) => void;\n toggle: () => void;\n containerRef: React.RefObject<HTMLDivElement | null>;\n contentRef: React.RefObject<HTMLDivElement | null>;\n triggerRef: React.RefObject<HTMLElement | null>;\n contentId: string;\n onTriggerKeyDown: (e: KeyboardEvent<HTMLElement>) => void;\n};\n\nconst PopoverContext = createContext<PopoverContextValue | null>(null);\n\nfunction usePopoverContext(component: string): PopoverContextValue {\n const ctx = useContext(PopoverContext);\n if (!ctx) throw new Error(`${component} must be used within <Popover>`);\n return ctx;\n}\n\nconst BEAK_W = foundationSizes.foundationSize160;\nconst BEAK_H = foundationSizes.foundationSize80;\nconst BEAK_OFFSET = foundationSizes.foundationSize80;\nconst BEAK_BORDER_OVERLAP = strokeWidths.strokeWidthThin;\nconst POPOVER_GAP = spacings.sizeMedium;\n\nfunction beakWrapperStyle(placement: PopoverPlacement, align: PopoverAlign): CSSProperties {\n const insetStart = componentSizes.popoverBeakInsetFromStartEdge;\n const insetEnd = componentSizes.popoverBeakInsetFromEndEdge;\n const edge = spacings.sizeMedium;\n\n const overlapOffset = `calc(-1 * ${BEAK_OFFSET} + ${BEAK_BORDER_OVERLAP})`;\n\n switch (placement) {\n case \"bottom\":\n if (align === \"center\") return { top: overlapOffset, left: `calc(50% - ${BEAK_W} / 2)` };\n if (align === \"start\") return { top: overlapOffset, left: insetStart };\n return { top: overlapOffset, right: insetEnd };\n case \"top\":\n if (align === \"center\") return { bottom: overlapOffset, left: `calc(50% - ${BEAK_W} / 2)` };\n if (align === \"start\") return { bottom: overlapOffset, left: insetStart };\n return { bottom: overlapOffset, right: insetEnd };\n case \"left\":\n if (align === \"center\") return { right: overlapOffset, top: `calc(50% - ${BEAK_W} / 2)` };\n if (align === \"start\") return { right: overlapOffset, top: edge };\n return { right: overlapOffset, bottom: edge };\n case \"right\":\n if (align === \"center\") return { left: overlapOffset, top: `calc(50% - ${BEAK_W} / 2)` };\n if (align === \"start\") return { left: overlapOffset, top: edge };\n return { left: overlapOffset, bottom: edge };\n default:\n return {};\n }\n}\n\nfunction beakRotateDeg(placement: PopoverPlacement): number {\n switch (placement) {\n case \"bottom\":\n return 0;\n case \"top\":\n return 180;\n case \"left\":\n return -90;\n case \"right\":\n return 90;\n default:\n return 0;\n }\n}\n\nfunction floatingGapStyle(placement: PopoverPlacement): CSSProperties {\n if (placement === \"top\") return { marginBottom: POPOVER_GAP };\n if (placement === \"bottom\") return { marginTop: POPOVER_GAP };\n if (placement === \"left\") return { marginRight: POPOVER_GAP };\n return { marginLeft: POPOVER_GAP };\n}\n\nexport function Popover({ children, className, open: openProp, defaultOpen = false, onOpenChange, ...props }: PopoverProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const open = openProp ?? internalOpen;\n const setOpen = useCallback(\n (next: boolean) => {\n if (openProp === undefined) setInternalOpen(next);\n onOpenChange?.(next);\n },\n [openProp, onOpenChange],\n );\n const toggle = useCallback(() => setOpen(!open), [open, setOpen]);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n const contentId = useId();\n\n useEffect(() => {\n const handler = (e: globalThis.MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) setOpen(false);\n };\n if (open) document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open, setOpen]);\n\n useEffect(() => {\n const onKey = (e: Event) => {\n if (e instanceof KeyboardEvent && e.key === \"Escape\") setOpen(false);\n };\n if (open) document.addEventListener(\"keydown\", onKey);\n return () => document.removeEventListener(\"keydown\", onKey);\n }, [open, setOpen]);\n\n const onTriggerKeyDown = useCallback(\n (e: KeyboardEvent<HTMLElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n toggle();\n }\n },\n [toggle],\n );\n\n const value = useMemo<PopoverContextValue>(\n () => ({\n open,\n setOpen,\n toggle,\n containerRef,\n contentRef,\n triggerRef,\n contentId,\n onTriggerKeyDown,\n }),\n [open, setOpen, toggle, contentId, onTriggerKeyDown],\n );\n\n return (\n <PopoverContext.Provider value={value}>\n <div\n ref={containerRef}\n data-refineui=\"popover-root\"\n className={clsx(popoverStyles.root, className)}\n {...props}\n >\n {children}\n </div>\n </PopoverContext.Provider>\n );\n}\n\nexport function PopoverTrigger({ children, className, ...props }: PopoverTriggerProps) {\n const { open, toggle, triggerRef, contentId, onTriggerKeyDown } = usePopoverContext(\"PopoverTrigger\");\n\n const mergeEl = getMergeableTriggerChild(children);\n if (mergeEl) {\n const el = mergeEl as unknown as TriggerElement;\n const passthrough = props as TriggerProps & HTMLAttributes<HTMLElement>;\n const passthroughCn = (props as HTMLAttributes<HTMLElement>).className;\n return cloneElement(el, {\n ...props,\n ref: composeRefs(triggerRef, el.ref),\n className: clsx(className, passthroughCn, (el.props as HTMLAttributes<HTMLElement>).className),\n \"aria-expanded\": open,\n \"aria-haspopup\": \"dialog\" as const,\n \"aria-controls\": contentId,\n onClick: (e: MouseEvent<HTMLElement>) => {\n passthrough.onClick?.(e as unknown as MouseEvent<HTMLElement>);\n el.props.onClick?.(e);\n toggle();\n },\n onKeyDown: (e: KeyboardEvent<HTMLElement>) => {\n passthrough.onKeyDown?.(e as unknown as KeyboardEvent<HTMLElement>);\n el.props.onKeyDown?.(e);\n onTriggerKeyDown(e);\n },\n } as Partial<TriggerProps>);\n }\n\n const passthroughBtn = props as HTMLAttributes<HTMLButtonElement>;\n\n return (\n <button\n type=\"button\"\n ref={triggerRef as React.RefObject<HTMLButtonElement>}\n aria-expanded={open}\n aria-haspopup=\"dialog\"\n aria-controls={contentId}\n className={clsx(\n popoverStyles.fallbackTrigger,\n className,\n passthroughBtn.className,\n )}\n {...props}\n onClick={(e) => {\n passthroughBtn.onClick?.(e);\n toggle();\n }}\n onKeyDown={(e) => {\n passthroughBtn.onKeyDown?.(e);\n onTriggerKeyDown(e);\n }}\n >\n {children}\n </button>\n );\n}\n\nexport function PopoverContent({\n children,\n placement = \"bottom\",\n align = \"center\",\n className,\n style: styleProp,\n ...props\n}: PopoverContentProps) {\n const { open, contentRef, contentId } = usePopoverContext(\"PopoverContent\");\n\n useFocusTrap(open, contentRef);\n\n const palette = componentColorTokens.popover.default;\n\n const bg = resolveColorTokenValue(palette.background);\n const borderCol = resolveColorTokenValue(palette.border);\n\n const bw = beakWrapperStyle(placement, align);\n const rot = beakRotateDeg(placement);\n const gapStyle = floatingGapStyle(placement);\n\n if (!open) return null;\n\n return (\n <div\n className={clsx(\n popoverStyles.floatingRoot,\n popoverFloatingClasses(placement, align),\n )}\n style={gapStyle}\n >\n <div className={popoverStyles.panelWrap}>\n <div className={popoverStyles.beakWrap} style={{ ...bw, width: BEAK_W, height: BEAK_H }} aria-hidden>\n <div\n style={{\n width: BEAK_W,\n height: BEAK_H,\n transform: `rotate(${rot}deg)`,\n transformOrigin: \"center center\",\n }}\n >\n <svg\n width={BEAK_W}\n height={BEAK_H}\n viewBox=\"0 0 16 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ display: \"block\" }}\n >\n <polygon points=\"8,0 0,8 16,8\" fill={borderCol} />\n <polygon points=\"8,2 2,8 14,8\" fill={bg} />\n </svg>\n </div>\n </div>\n <div\n ref={contentRef as React.RefObject<HTMLDivElement>}\n id={contentId}\n role=\"dialog\"\n aria-modal=\"false\"\n tabIndex={-1}\n data-refineui=\"popover\"\n data-placement={placement}\n data-align={align}\n className={clsx(\n popoverStyles.panel,\n popoverStyles.panelShadowDefault,\n className,\n )}\n style={{\n ...(styleProp && typeof styleProp === \"object\" ? styleProp : {}),\n minWidth: componentSizes.popoverPanelWidth,\n padding: spacings.sizeLarge,\n backgroundColor: bg,\n color: resolveColorTokenValue(palette.foreground),\n borderColor: borderCol,\n }}\n {...props}\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nexport function PopOver({\n trigger,\n content,\n placement,\n align,\n className,\n ...props\n}: PopOverProps) {\n return (\n <Popover className={className} {...props}>\n <PopoverTrigger>{trigger}</PopoverTrigger>\n <PopoverContent placement={placement} align={align}>\n {content}\n </PopoverContent>\n </Popover>\n );\n}\n","import type { PopoverAlign, PopoverPlacement } from \"./types\";\n\nexport const popoverStyles = {\n root: \"relative inline-block\",\n fallbackTrigger:\n \"cursor-pointer border-none bg-transparent p-0 font-inherit text-inherit\",\n floatingRoot: \"absolute z-refineui-popup\",\n panelWrap: \"relative inline-block min-w-refineui-popover-panel-width\",\n beakWrap: \"pointer-events-none absolute z-[1]\",\n panel:\n \"relative z-0 box-border min-w-refineui-popover-panel-width rounded-refineui-xx-large border-refineui-thin outline-none\",\n panelShadowDefault: \"shadow-refineui-8\",\n} as const;\n\nexport function popoverFloatingClasses(placement: PopoverPlacement, align: PopoverAlign): string {\n if (placement === \"bottom\") {\n if (align === \"center\") return \"top-full start-1/2 -translate-x-1/2\";\n if (align === \"start\") return \"top-full start-0\";\n return \"top-full end-0\";\n }\n if (placement === \"top\") {\n if (align === \"center\") return \"bottom-full start-1/2 -translate-x-1/2\";\n if (align === \"start\") return \"bottom-full start-0\";\n return \"bottom-full end-0\";\n }\n if (placement === \"left\") {\n if (align === \"center\") return \"end-full top-1/2 -translate-y-1/2\";\n if (align === \"start\") return \"end-full top-0\";\n return \"end-full bottom-0\";\n }\n if (align === \"center\") return \"start-full top-1/2 -translate-y-1/2\";\n if (align === \"start\") return \"start-full top-0\";\n return \"start-full bottom-0\";\n}\n\n","import { clsx } from \"clsx\";\nimport type { CSSProperties } from \"react\";\nimport { skeletonStyles } from \"./style\";\nimport type { SkeletonProps } from \"./types\";\n\nexport function Skeleton({\n width,\n height,\n shape = \"rectangle\",\n className,\n style,\n ...props\n}: SkeletonProps) {\n const defaultLine = \"var(--refineui-size-skeleton-default-height)\";\n const isCircle = shape === \"circle\";\n\n let w: number | string | undefined;\n let h: number | string | undefined;\n\n if (isCircle) {\n if (width != null && height == null) {\n w = width;\n h = width;\n } else if (height != null && width == null) {\n w = height;\n h = height;\n } else if (width == null && height == null) {\n w = defaultLine;\n h = defaultLine;\n } else {\n w = width ?? defaultLine;\n h = height ?? defaultLine;\n }\n } else {\n h = height ?? defaultLine;\n w = width ?? \"100%\";\n }\n\n const dimStyle: CSSProperties = { width: w, height: h };\n\n return (\n <div\n data-refineui=\"skeleton\"\n data-shape={shape}\n aria-hidden\n className={clsx(\n isCircle ? skeletonStyles.circle : skeletonStyles.rectangle,\n className,\n )}\n style={{ ...dimStyle, ...style }}\n {...props}\n />\n );\n}\n","export const skeletonStyles = {\n /** Line / block placeholder */\n rectangle: \"block rounded-refineui-large\",\n /** Avatar-style placeholder */\n circle: \"block shrink-0 rounded-refineui-circle\",\n} as const;\n","import { clsx } from \"clsx\";\nimport { useState } from \"react\";\nimport { sliderStyles } from \"./style\";\nimport type { SliderProps } from \"./types\";\n\nfunction clampPct(n: number) {\n if (Number.isNaN(n)) return 0;\n return Math.min(100, Math.max(0, n));\n}\n\nexport function Slider({\n min = 0,\n max = 100,\n step = 1,\n value,\n defaultValue,\n onChange,\n onInput,\n size = \"md\",\n className,\n style,\n ...props\n}: SliderProps) {\n const [internalFillPct, setInternalFillPct] = useState(() => {\n const v =\n defaultValue !== undefined ? Number(defaultValue) : (min + max) / 2;\n return clampPct(((v - min) / (max - min)) * 100);\n });\n\n const fillPct =\n value !== undefined\n ? clampPct(((Number(value) - min) / (max - min)) * 100)\n : internalFillPct;\n\n return (\n <input\n type=\"range\"\n data-refineui=\"slider\"\n data-size={size}\n min={min}\n max={max}\n step={step}\n value={value}\n defaultValue={defaultValue}\n onChange={(e) => {\n onChange?.(Number(e.target.value));\n }}\n onInput={(e) => {\n if (value === undefined) {\n const v = Number(e.currentTarget.value);\n setInternalFillPct(clampPct(((v - min) / (max - min)) * 100));\n }\n onInput?.(e);\n }}\n className={clsx(\n sliderStyles.root,\n className,\n )}\n style={{\n ...style,\n [\"--refineui-slider-fill\" as string]: `${fillPct}%`,\n }}\n {...props}\n />\n );\n}\n","export const sliderStyles = {\n root: \"h-refineui-slider-interaction-height w-full cursor-pointer\",\n} as const;\n\n","import { clsx } from \"clsx\";\nimport { iconSizes } from \"@refineui/tokens\";\nimport type { CSSProperties, KeyboardEvent, PointerEvent as ReactPointerEvent, TransitionEvent } from \"react\";\nimport {\n Children,\n cloneElement,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Button } from \"../Button\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { carouselStyles } from \"./style\";\nimport type {\n CarouselContentProps,\n CarouselControlsProps,\n CarouselIndicatorsProps,\n CarouselItemProps,\n CarouselNextProps,\n CarouselPreviousProps,\n CarouselProps,\n} from \"./types\";\n\nconst DRAG_COMMIT_RATIO = 0.18;\n\ntype CarouselContextValue = {\n index: number;\n count: number;\n setCount: (n: number) => void;\n trackIndex: number;\n setTrackIndex: (n: number | ((prev: number) => number)) => void;\n instant: boolean;\n setInstant: (v: boolean) => void;\n scrollPrev: () => void;\n scrollNext: () => void;\n scrollTo: (i: number) => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n loop: boolean;\n onTrackSettled: () => void;\n};\n\nconst CarouselContext = createContext<CarouselContextValue | null>(null);\n\nfunction useCarouselContext(component: string): CarouselContextValue {\n const v = useContext(CarouselContext);\n if (!v) throw new Error(`${component} must be used within Carousel.`);\n return v;\n}\n\nfunction clampIndex(i: number, count: number): number {\n if (count <= 0) return 0;\n return Math.min(count - 1, Math.max(0, i));\n}\n\nexport function Carousel({\n children,\n className,\n index: indexControlled,\n defaultIndex = 0,\n onIndexChange,\n loop = false,\n onKeyDown,\n ...props\n}: CarouselProps) {\n const isControlled = indexControlled !== undefined;\n const [internalIndex, setInternalIndex] = useState(defaultIndex);\n const [count, setCount] = useState(0);\n const [trackIndex, setTrackIndex] = useState(defaultIndex);\n const [instant, setInstant] = useState(false);\n const index = isControlled ? indexControlled! : internalIndex;\n const loopActive = loop && count > 1;\n\n const commitLogical = useCallback(\n (next: number) => {\n const normalized = clampIndex(next, Math.max(count, 1));\n if (!isControlled) setInternalIndex(normalized);\n onIndexChange?.(normalized);\n },\n [count, isControlled, onIndexChange],\n );\n\n useLayoutEffect(() => {\n if (count <= 0) return;\n const logical = clampIndex(index, count);\n if (logical !== index) commitLogical(logical);\n setTrackIndex(loopActive ? logical + 1 : logical);\n }, [count, loopActive]); // eslint-disable-line react-hooks/exhaustive-deps -- init / count / loop only\n\n useEffect(() => {\n if (count <= 0) return;\n if (!loopActive) {\n setTrackIndex(clampIndex(index, count));\n return;\n }\n // While on a real slide, keep track aligned with controlled/external index.\n // Skip when parked on edge clones (0 / count+1) during infinite wrap.\n setTrackIndex((t) => {\n if (t < 1 || t > count) return t;\n const expected = clampIndex(index, count) + 1;\n return expected === t ? t : expected;\n });\n }, [index, count, loopActive]);\n\n const canScrollPrev = loopActive ? true : index > 0;\n const canScrollNext = loopActive ? true : index < count - 1;\n\n const scrollTo = useCallback(\n (i: number) => {\n if (count <= 0) return;\n const next = clampIndex(i, count);\n commitLogical(next);\n setTrackIndex(loopActive ? next + 1 : next);\n },\n [commitLogical, count, loopActive],\n );\n\n const scrollPrev = useCallback(() => {\n if (count <= 0) return;\n if (loopActive) {\n // Ignore while parked on edge clones during seamless wrap.\n if (trackIndex < 1 || trackIndex > count) return;\n setTrackIndex(trackIndex - 1);\n commitLogical((index - 1 + count) % count);\n return;\n }\n if (index > 0) {\n commitLogical(index - 1);\n setTrackIndex(index - 1);\n }\n }, [commitLogical, count, index, loopActive, trackIndex]);\n\n const scrollNext = useCallback(() => {\n if (count <= 0) return;\n if (loopActive) {\n if (trackIndex < 1 || trackIndex > count) return;\n setTrackIndex(trackIndex + 1);\n commitLogical((index + 1) % count);\n return;\n }\n if (index < count - 1) {\n commitLogical(index + 1);\n setTrackIndex(index + 1);\n }\n }, [commitLogical, count, index, loopActive, trackIndex]);\n\n const onTrackSettled = useCallback(() => {\n if (!loopActive) return;\n if (trackIndex === 0) {\n setInstant(true);\n setTrackIndex(count);\n requestAnimationFrame(() => {\n requestAnimationFrame(() => setInstant(false));\n });\n } else if (trackIndex === count + 1) {\n setInstant(true);\n setTrackIndex(1);\n requestAnimationFrame(() => {\n requestAnimationFrame(() => setInstant(false));\n });\n }\n }, [count, loopActive, trackIndex]);\n\n const ctx = useMemo(\n () => ({\n index,\n count,\n setCount,\n trackIndex,\n setTrackIndex,\n instant,\n setInstant,\n scrollPrev,\n scrollNext,\n scrollTo,\n canScrollPrev,\n canScrollNext,\n loop: loopActive,\n onTrackSettled,\n }),\n [\n index,\n count,\n trackIndex,\n instant,\n scrollPrev,\n scrollNext,\n scrollTo,\n canScrollPrev,\n canScrollNext,\n loopActive,\n onTrackSettled,\n ],\n );\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n switch (e.key) {\n case \"ArrowLeft\":\n e.preventDefault();\n scrollPrev();\n break;\n case \"ArrowRight\":\n e.preventDefault();\n scrollNext();\n break;\n case \"Home\":\n e.preventDefault();\n scrollTo(0);\n break;\n case \"End\":\n e.preventDefault();\n scrollTo(Math.max(0, count - 1));\n break;\n default:\n break;\n }\n };\n\n return (\n <CarouselContext.Provider value={ctx}>\n <div\n data-refineui=\"carousel\"\n aria-roledescription=\"carousel\"\n tabIndex={0}\n className={clsx(carouselStyles.root, className)}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nexport function CarouselContent({ className, children, ...props }: CarouselContentProps) {\n const {\n trackIndex,\n setCount,\n scrollPrev,\n scrollNext,\n count,\n loop,\n instant,\n onTrackSettled,\n } = useCarouselContext(\"CarouselContent\");\n const viewportRef = useRef<HTMLDivElement | null>(null);\n const dragStartX = useRef<number | null>(null);\n const [dragPx, setDragPx] = useState(0);\n const [dragging, setDragging] = useState(false);\n\n const slides = Children.toArray(children).filter(isValidElement);\n const slideCount = slides.length;\n\n useEffect(() => {\n setCount(slideCount);\n }, [setCount, slideCount]);\n\n const trackSlides =\n loop && slides.length > 1\n ? [\n cloneElement(slides[slides.length - 1]!, { key: \"__carousel-clone-last\" }),\n ...slides,\n cloneElement(slides[0]!, { key: \"__carousel-clone-first\" }),\n ]\n : slides;\n\n const endDrag = useCallback(\n (clientX: number) => {\n if (dragStartX.current == null) return;\n const width = viewportRef.current?.offsetWidth ?? 1;\n const dx = clientX - dragStartX.current;\n dragStartX.current = null;\n setDragging(false);\n setDragPx(0);\n\n const threshold = width * DRAG_COMMIT_RATIO;\n if (dx <= -threshold) scrollNext();\n else if (dx >= threshold) scrollPrev();\n },\n [scrollNext, scrollPrev],\n );\n\n const onPointerDown = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (e.button !== 0 || count <= 1) return;\n dragStartX.current = e.clientX;\n setDragging(true);\n setDragPx(0);\n e.currentTarget.setPointerCapture(e.pointerId);\n };\n\n const onPointerMove = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (dragStartX.current == null) return;\n setDragPx(e.clientX - dragStartX.current);\n };\n\n const onPointerUp = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (dragStartX.current == null) return;\n try {\n e.currentTarget.releasePointerCapture(e.pointerId);\n } catch {\n /* already released */\n }\n endDrag(e.clientX);\n };\n\n const onPointerCancel = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (dragStartX.current == null) return;\n dragStartX.current = null;\n setDragging(false);\n setDragPx(0);\n try {\n e.currentTarget.releasePointerCapture(e.pointerId);\n } catch {\n /* ignore */\n }\n };\n\n const onTransitionEnd = (e: TransitionEvent<HTMLDivElement>) => {\n if (e.propertyName !== \"transform\") return;\n onTrackSettled();\n };\n\n const animated = !dragging && !instant;\n const transform =\n dragPx !== 0\n ? `translate3d(calc(-${trackIndex * 100}% + ${dragPx}px), 0, 0)`\n : `translate3d(-${trackIndex * 100}%, 0, 0)`;\n\n return (\n <div\n ref={viewportRef}\n data-refineui=\"carousel-viewport\"\n data-dragging={dragging ? \"true\" : undefined}\n className={carouselStyles.viewport}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerCancel}\n >\n <div\n data-refineui=\"carousel-track\"\n data-animated={animated ? \"true\" : \"false\"}\n className={clsx(carouselStyles.track, animated && carouselStyles.trackAnimated, className)}\n style={{ transform }}\n onTransitionEnd={onTransitionEnd}\n {...props}\n >\n {trackSlides}\n </div>\n </div>\n );\n}\n\nexport const CarouselItem = forwardRef<HTMLDivElement, CarouselItemProps>(function CarouselItem(\n { className, children, ...props },\n ref,\n) {\n useCarouselContext(\"CarouselItem\");\n return (\n <div\n ref={ref}\n data-refineui=\"carousel-item\"\n role=\"group\"\n aria-roledescription=\"slide\"\n className={clsx(carouselStyles.item, className)}\n {...props}\n >\n {children}\n </div>\n );\n});\n\nexport function CarouselControls({ className, children, ...props }: CarouselControlsProps) {\n useCarouselContext(\"CarouselControls\");\n return (\n <div data-refineui=\"carousel-controls\" className={clsx(carouselStyles.controls, className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport function CarouselPrevious({ className, disabled, onClick, ...props }: CarouselPreviousProps) {\n const { scrollPrev, canScrollPrev } = useCarouselContext(\"CarouselPrevious\");\n const isDisabled = disabled || !canScrollPrev;\n\n return (\n <Button\n variant=\"outline\"\n size=\"md\"\n layout=\"icon\"\n data-refineui=\"carousel-nav\"\n data-dir=\"prev\"\n aria-label=\"Previous slide\"\n disabled={isDisabled}\n className={className}\n {...props}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented && !isDisabled) scrollPrev();\n }}\n >\n <WebIcon\n name=\"chevron-left\"\n size={iconSizes.small}\n color=\"currentColor\"\n iconStyle=\"filled\"\n fallback=\"‹\"\n />\n </Button>\n );\n}\n\nexport function CarouselNext({ className, disabled, onClick, ...props }: CarouselNextProps) {\n const { scrollNext, canScrollNext } = useCarouselContext(\"CarouselNext\");\n const isDisabled = disabled || !canScrollNext;\n\n return (\n <Button\n variant=\"outline\"\n size=\"md\"\n layout=\"icon\"\n data-refineui=\"carousel-nav\"\n data-dir=\"next\"\n aria-label=\"Next slide\"\n disabled={isDisabled}\n className={className}\n {...props}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented && !isDisabled) scrollNext();\n }}\n >\n <WebIcon\n name=\"chevron-right\"\n size={iconSizes.small}\n color=\"currentColor\"\n iconStyle=\"filled\"\n fallback=\"›\"\n />\n </Button>\n );\n}\n\nexport function CarouselIndicators({ className, ...props }: CarouselIndicatorsProps) {\n const { count, index, scrollTo } = useCarouselContext(\"CarouselIndicators\");\n const trackRef = useRef<HTMLDivElement | null>(null);\n const [thumb, setThumb] = useState({ width: 0, x: 0, ready: false });\n\n const updateThumb = useCallback(() => {\n const el = trackRef.current;\n if (!el || count <= 0) {\n setThumb({ width: 0, x: 0, ready: false });\n return;\n }\n const hits = el.querySelector<HTMLElement>(\"[data-refineui='carousel-indicator-hits']\");\n const inner = hits?.clientWidth ?? el.clientWidth;\n const width = inner / count;\n setThumb({\n width,\n x: width * index,\n ready: true,\n });\n }, [count, index]);\n\n useLayoutEffect(() => {\n updateThumb();\n }, [updateThumb]);\n\n useEffect(() => {\n const el = trackRef.current;\n if (!el) return;\n const ro = new ResizeObserver(() => updateThumb());\n ro.observe(el);\n return () => ro.disconnect();\n }, [updateThumb]);\n\n if (count <= 0) return null;\n\n const thumbStyle: CSSProperties = {\n width: thumb.width,\n transform: `translate3d(${thumb.x}px, 0, 0)`,\n };\n\n return (\n <div\n ref={trackRef}\n data-refineui=\"carousel-indicators\"\n role=\"tablist\"\n aria-label=\"Slides\"\n className={clsx(carouselStyles.indicators, className)}\n {...props}\n >\n <span\n data-refineui=\"carousel-indicator-thumb\"\n data-ready={thumb.ready ? \"true\" : undefined}\n aria-hidden\n className={carouselStyles.indicatorThumb}\n style={thumbStyle}\n />\n <div data-refineui=\"carousel-indicator-hits\" className={carouselStyles.indicatorHitRow}>\n {Array.from({ length: count }, (_, i) => (\n <button\n key={i}\n type=\"button\"\n role=\"tab\"\n aria-label={`Go to slide ${i + 1}`}\n aria-selected={i === index}\n data-refineui=\"carousel-indicator\"\n data-selected={i === index ? \"true\" : \"false\"}\n className={carouselStyles.indicatorHit}\n onClick={() => scrollTo(i)}\n />\n ))}\n </div>\n </div>\n );\n}\n","import { clsx } from \"clsx\";\n\n/**\n * Carousel — stage + footer controls (no overlay).\n * Infinite loop uses cloned slides; indicator is a sliding pill in a track.\n */\nexport const carouselStyles = {\n root: \"box-border flex w-full flex-col gap-refineui-size-large outline-none\",\n viewport: clsx(\n \"relative w-full cursor-grab overflow-hidden rounded-refineui-xx-large\",\n \"border-refineui-thin border-refineui-alias-border-default bg-refineui-alias-background-primary\",\n \"shadow-refineui-2 select-none\",\n \"active:cursor-grabbing\",\n ),\n track: \"flex will-change-transform\",\n trackAnimated:\n \"transition-transform duration-[var(--refineui-motion-duration-panel)] ease-[var(--refineui-motion-easing-emphasized)]\",\n item: \"box-border min-w-0 shrink-0 grow-0 basis-full\",\n controls: \"flex w-full items-center justify-center gap-refineui-size-medium\",\n /** Sliding-pill meter (SegmentedControl-like), not a row of dots */\n indicators: clsx(\n \"relative box-border flex h-refineui-size-medium min-w-0 flex-1 items-stretch overflow-hidden\",\n \"max-w-[12rem] rounded-refineui-circle bg-refineui-alias-background-brand-subtle\",\n \"p-refineui-size-xxx-small\",\n ),\n indicatorThumb: clsx(\n \"pointer-events-none absolute top-refineui-size-xxx-small bottom-refineui-size-xxx-small start-refineui-size-xxx-small z-0\",\n \"rounded-refineui-circle bg-refineui-alias-background-brand shadow-refineui-2\",\n \"transition-transform duration-[var(--refineui-motion-duration-medium)] ease-[var(--refineui-motion-easing-emphasized)]\",\n ),\n indicatorHitRow: \"relative z-[1] flex h-full w-full\",\n indicatorHit: \"h-full min-w-0 flex-1 cursor-pointer border-none bg-transparent p-0 outline-none\",\n} as const;\n","import { clsx } from \"clsx\";\nimport {\n Children,\n createContext,\n isValidElement,\n useContext,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport {\n BUBBLE_MAX_WIDTH,\n bubbleContentVariantClass,\n bubbleReactionsAlignClass,\n bubbleReactionsSideClass,\n bubbleRootItemsClass,\n bubbleStyles,\n} from \"./style\";\nimport type {\n BubbleAlign,\n BubbleContentProps,\n BubbleGroupProps,\n BubbleProps,\n BubbleReactionsProps,\n BubbleReactionsSide,\n BubbleVariant,\n} from \"./types\";\n\ntype BubbleContextValue = {\n variant: BubbleVariant;\n align: BubbleAlign;\n};\n\nconst BubbleContext = createContext<BubbleContextValue | null>(null);\n\nfunction useBubbleContext(component: string): BubbleContextValue {\n const value = useContext(BubbleContext);\n if (!value) throw new Error(`${component} must be used within Bubble.`);\n return value;\n}\n\nfunction isBubbleReactionsElement(\n node: ReactNode,\n): node is ReactElement<BubbleReactionsProps> {\n return isValidElement(node) && node.type === BubbleReactions;\n}\n\nfunction partitionBubbleChildren(children: ReactNode): {\n top: ReactNode[];\n middle: ReactNode[];\n bottom: ReactNode[];\n hasTop: boolean;\n hasBottom: boolean;\n} {\n const top: ReactNode[] = [];\n const middle: ReactNode[] = [];\n const bottom: ReactNode[] = [];\n\n Children.forEach(children, (child) => {\n if (!isBubbleReactionsElement(child)) {\n middle.push(child);\n return;\n }\n const side: BubbleReactionsSide = child.props.side ?? \"bottom\";\n if (side === \"top\") top.push(child);\n else bottom.push(child);\n });\n\n return {\n top,\n middle,\n bottom,\n hasTop: top.length > 0,\n hasBottom: bottom.length > 0,\n };\n}\n\nexport function BubbleGroup({ className, ...props }: BubbleGroupProps) {\n return (\n <div\n data-refineui=\"bubble-group\"\n className={clsx(bubbleStyles.group, className)}\n {...props}\n />\n );\n}\n\nexport function Bubble({\n variant = \"default\",\n align = \"start\",\n className,\n style,\n children,\n ...props\n}: BubbleProps) {\n const rootStyle: CSSProperties | undefined =\n variant === \"ghost\"\n ? style\n : { maxWidth: BUBBLE_MAX_WIDTH, ...style };\n\n const { top, middle, bottom, hasTop, hasBottom } = partitionBubbleChildren(children);\n\n return (\n <BubbleContext.Provider value={{ variant, align }}>\n <div\n data-refineui=\"bubble\"\n data-variant={variant}\n data-align={align}\n data-has-reactions-top={hasTop ? \"true\" : undefined}\n data-has-reactions-bottom={hasBottom ? \"true\" : undefined}\n className={clsx(\n bubbleStyles.root,\n bubbleRootItemsClass[align],\n className,\n )}\n style={rootStyle}\n {...props}\n >\n <div data-refineui=\"bubble-surface\" className={bubbleStyles.surface}>\n {middle}\n {top}\n {bottom}\n </div>\n </div>\n </BubbleContext.Provider>\n );\n}\n\nexport function BubbleContent({ className, ...props }: BubbleContentProps) {\n const { variant } = useBubbleContext(\"BubbleContent\");\n\n return (\n <div\n data-refineui=\"bubble-content\"\n className={clsx(\n bubbleStyles.content,\n bubbleContentVariantClass[variant],\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function BubbleReactions({\n side = \"bottom\",\n align: alignProp,\n className,\n ...props\n}: BubbleReactionsProps) {\n const { align: bubbleAlign } = useBubbleContext(\"BubbleReactions\");\n /**\n * Default toward the conversation center:\n * other (start) → trailing reactions, mine (end) → leading reactions.\n */\n const align = alignProp ?? (bubbleAlign === \"start\" ? \"end\" : \"start\");\n\n return (\n <div\n data-refineui=\"bubble-reactions\"\n data-side={side}\n data-align={align}\n className={clsx(\n bubbleStyles.reactions,\n bubbleReactionsSideClass[side],\n bubbleReactionsAlignClass[align],\n className,\n )}\n {...props}\n />\n );\n}\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\nimport type { BubbleAlign, BubbleReactionsSide, BubbleVariant } from \"./types\";\n\n/**\n * Conversation column share for framed bubbles (ghost uses full width).\n * Relative layout ratio — not a Foundation size step.\n */\nexport const BUBBLE_MAX_WIDTH = \"80%\";\n\nexport const bubbleStyles = {\n group: clsx(\n \"flex min-w-0 flex-col gap-refineui-size-xx-small\",\n // Connected corners for consecutive bubbles\n \"[&>[data-refineui=bubble]:first-child:not(:only-child)_[data-refineui=bubble-content]]:rounded-b-[var(--refineui-radius-rounded-medium)]\",\n \"[&>[data-refineui=bubble]:last-child:not(:only-child)_[data-refineui=bubble-content]]:rounded-t-[var(--refineui-radius-rounded-medium)]\",\n \"[&>[data-refineui=bubble]:not(:first-child):not(:last-child)_[data-refineui=bubble-content]]:rounded-[var(--refineui-radius-rounded-medium)]\",\n // Room for overlapping reactions on the last bubble in a group\n \"[&>[data-refineui=bubble][data-has-reactions-bottom]:not(:last-child)]:mb-refineui-size-xx-large\",\n ),\n root: clsx(\n \"relative box-border flex w-fit min-w-0 flex-col\",\n \"data-[align=end]:self-end\",\n \"data-[variant=ghost]:max-w-full\",\n // Margin (not padding) so absolute reactions still sit on the content edge\n \"data-[has-reactions-bottom]:mb-refineui-size-xx-large\",\n \"data-[has-reactions-top]:mt-refineui-size-xx-large\",\n ),\n /** Positions reactions against the message surface (not outer margin). */\n surface: \"relative box-border w-fit max-w-full min-w-0\",\n content: clsx(\n componentTextClass(componentTypographyTokens.bubble),\n \"box-border w-fit max-w-full min-w-0 overflow-hidden break-words\",\n \"rounded-refineui-x-large border-refineui-thin border-transparent\",\n \"px-refineui-size-large py-refineui-size-medium\",\n \"outline-none\",\n ),\n reactions: clsx(\n \"absolute z-refineui-content flex w-fit shrink-0 items-center justify-center\",\n \"gap-refineui-size-xx-small rounded-refineui-circle\",\n \"border-refineui-thin border-refineui-alias-border-default\",\n \"bg-refineui-alias-background-primary px-refineui-size-x-small py-refineui-size-xx-small\",\n \"shadow-refineui-2\",\n \"has-[button]:p-0\",\n \"pointer-events-auto\",\n ),\n} as const;\n\nexport const bubbleRootItemsClass: Record<BubbleAlign, string> = {\n start: \"items-start\",\n end: \"items-end\",\n};\n\n/** Vertical edge overlap only (shadcn BubbleReactions). */\nexport const bubbleReactionsSideClass: Record<BubbleReactionsSide, string> = {\n top: \"top-0 -translate-y-3/4\",\n bottom: \"bottom-0 translate-y-3/4\",\n};\n\n/** Inset from the inline edge — not the corner vertex. */\nexport const bubbleReactionsAlignClass: Record<BubbleAlign, string> = {\n start: \"start-refineui-size-medium\",\n end: \"end-refineui-size-medium\",\n};\n\nexport const bubbleContentVariantClass: Record<BubbleVariant, string> = {\n default: \"bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed\",\n secondary:\n \"bg-refineui-alias-background-surface-selected text-refineui-alias-foreground-primary\",\n muted: \"bg-refineui-alias-background-surface-selected text-refineui-alias-foreground-primary\",\n tinted:\n \"border-refineui-alias-border-strong bg-refineui-alias-background-brand-subtle text-refineui-alias-foreground-brand\",\n outline:\n \"border-refineui-alias-border-strong bg-refineui-alias-background-surface text-refineui-alias-foreground-primary\",\n ghost: \"rounded-none border-none bg-transparent p-0 text-refineui-alias-foreground-primary\",\n destructive: \"bg-refineui-alias-background-error text-refineui-alias-foreground-on-error\",\n};\n","import { clsx } from \"clsx\";\nimport { iconSizes } from \"@refineui/tokens\";\nimport type { KeyboardEvent } from \"react\";\nimport { WebIcon } from \"../../WebIcon\";\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { stepperConnectorVars, stepperStyles } from \"./style\";\nimport type {\n StepperContentProps,\n StepperDescriptionProps,\n StepperIndicatorProps,\n StepperItemProps,\n StepperListProps,\n StepperOrientation,\n StepperProps,\n StepperSeparatorProps,\n StepperState,\n StepperTitleProps,\n} from \"./types\";\n\ntype StepperContextValue = {\n value: number;\n setValue: (next: number) => void;\n orientation: StepperOrientation;\n interactive: boolean;\n};\n\ntype StepperItemContextValue = {\n state: StepperState;\n disabled: boolean;\n};\n\n/**\n * Render-order registry so separators don’t rely on `node.type ===` checks\n * (those break across Vite/tsup duplicate module instances).\n */\ntype StepperListRegistry = {\n /** Call during StepperItem render. */\n noteItem: (itemValue: number) => void;\n /** Call during StepperSeparator render — uses the most recently noted item. */\n takeSeparatorState: () => \"complete\" | \"upcoming\";\n};\n\nconst StepperContext = createContext<StepperContextValue | null>(null);\nconst StepperItemContext = createContext<StepperItemContextValue | null>(null);\nconst StepperListRegistryContext = createContext<StepperListRegistry | null>(null);\n\nfunction useStepperContext(component: string): StepperContextValue {\n const v = useContext(StepperContext);\n if (!v) throw new Error(`${component} must be used within Stepper.`);\n return v;\n}\n\nfunction useStepperItemContext(component: string): StepperItemContextValue {\n const v = useContext(StepperItemContext);\n if (!v) throw new Error(`${component} must be used within StepperItem.`);\n return v;\n}\n\nfunction resolveState(itemValue: number, active: number): StepperState {\n if (itemValue < active) return \"complete\";\n if (itemValue === active) return \"current\";\n return \"upcoming\";\n}\n\nexport function Stepper({\n children,\n className,\n style,\n value: valueControlled,\n defaultValue = 0,\n onValueChange,\n orientation = \"horizontal\",\n ...props\n}: StepperProps) {\n const isControlled = valueControlled !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue);\n const value = isControlled ? valueControlled! : internalValue;\n\n const setValue = useCallback(\n (next: number) => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n },\n [isControlled, onValueChange],\n );\n\n const ctx = useMemo(\n () => ({\n value,\n setValue,\n orientation,\n interactive: typeof onValueChange === \"function\" || !isControlled,\n }),\n [value, setValue, orientation, onValueChange, isControlled],\n );\n\n return (\n <StepperContext.Provider value={ctx}>\n <div\n data-refineui=\"stepper\"\n data-orientation={orientation}\n className={clsx(stepperStyles.root, className)}\n style={{ ...stepperConnectorVars, ...style }}\n {...props}\n >\n {children}\n </div>\n </StepperContext.Provider>\n );\n}\n\nexport function StepperList({ className, children, ...props }: StepperListProps) {\n const { orientation, value } = useStepperContext(\"StepperList\");\n const cursorRef = useRef<number | null>(null);\n\n // Reset before this render’s children run so note/take order is per pass.\n cursorRef.current = null;\n\n const registry = useMemo<StepperListRegistry>(\n () => ({\n noteItem(itemValue: number) {\n cursorRef.current = itemValue;\n },\n takeSeparatorState() {\n const prev = cursorRef.current;\n return prev != null && prev < value ? \"complete\" : \"upcoming\";\n },\n }),\n [value],\n );\n\n return (\n <StepperListRegistryContext.Provider value={registry}>\n <ol\n data-refineui=\"stepper-list\"\n data-orientation={orientation}\n className={clsx(\n stepperStyles.list,\n orientation === \"vertical\"\n ? stepperStyles.listVertical\n : stepperStyles.listHorizontal,\n className,\n )}\n {...props}\n >\n {children}\n </ol>\n </StepperListRegistryContext.Provider>\n );\n}\n\nexport function StepperItem({\n value: itemValue,\n disabled = false,\n className,\n onClick,\n onKeyDown,\n children,\n ...props\n}: StepperItemProps) {\n const { value, setValue, orientation, interactive } = useStepperContext(\"StepperItem\");\n const registry = useContext(StepperListRegistryContext);\n registry?.noteItem(itemValue);\n\n const state = resolveState(itemValue, value);\n const canActivate = interactive && !disabled;\n\n const activate = () => {\n if (!canActivate) return;\n setValue(itemValue);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLLIElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || !canActivate) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n activate();\n }\n };\n\n const itemCtx = useMemo(\n () => ({ state, disabled }),\n [state, disabled],\n );\n\n return (\n <StepperItemContext.Provider value={itemCtx}>\n <li\n data-refineui=\"stepper-item\"\n data-state={state}\n data-disabled={disabled ? \"true\" : undefined}\n aria-current={state === \"current\" ? \"step\" : undefined}\n tabIndex={canActivate ? 0 : undefined}\n className={clsx(\n stepperStyles.item,\n orientation === \"vertical\"\n ? stepperStyles.itemVertical\n : stepperStyles.itemHorizontal,\n canActivate && stepperStyles.itemInteractive,\n disabled && stepperStyles.itemDisabled,\n className,\n )}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) activate();\n }}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </li>\n </StepperItemContext.Provider>\n );\n}\n\nexport function StepperIndicator({ className, children, ...props }: StepperIndicatorProps) {\n const { state } = useStepperItemContext(\"StepperIndicator\");\n\n const stateClass =\n state === \"complete\"\n ? stepperStyles.indicatorComplete\n : state === \"current\"\n ? stepperStyles.indicatorCurrent\n : stepperStyles.indicatorUpcoming;\n\n const content =\n state === \"upcoming\" ? (\n children\n ) : (\n <WebIcon\n name=\"checkmark\"\n size={iconSizes.xsmall}\n color=\"currentColor\"\n iconStyle=\"filled\"\n fallback=\"✓\"\n className=\"items-center justify-center\"\n />\n );\n\n return (\n <span\n data-refineui=\"stepper-indicator\"\n data-state={state}\n aria-hidden\n className={clsx(stepperStyles.indicator, stateClass, className)}\n {...props}\n >\n {content}\n </span>\n );\n}\n\nexport function StepperContent({ className, ...props }: StepperContentProps) {\n const { orientation } = useStepperContext(\"StepperContent\");\n useStepperItemContext(\"StepperContent\");\n return (\n <div\n data-refineui=\"stepper-content\"\n className={clsx(\n stepperStyles.content,\n orientation === \"vertical\"\n ? stepperStyles.contentVertical\n : stepperStyles.contentHorizontal,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function StepperTitle({ className, ...props }: StepperTitleProps) {\n const { state } = useStepperItemContext(\"StepperTitle\");\n const stateClass =\n state === \"complete\"\n ? stepperStyles.titleComplete\n : state === \"current\"\n ? stepperStyles.titleCurrent\n : stepperStyles.titleUpcoming;\n\n return (\n <span\n data-refineui=\"stepper-title\"\n data-state={state}\n className={clsx(stepperStyles.title, stateClass, className)}\n {...props}\n />\n );\n}\n\nexport function StepperDescription({ className, ...props }: StepperDescriptionProps) {\n const { state } = useStepperItemContext(\"StepperDescription\");\n const stateClass =\n state === \"complete\"\n ? stepperStyles.descriptionComplete\n : state === \"current\"\n ? stepperStyles.descriptionCurrent\n : stepperStyles.descriptionUpcoming;\n\n return (\n <span\n data-refineui=\"stepper-description\"\n data-state={state}\n className={clsx(stepperStyles.description, stateClass, className)}\n {...props}\n />\n );\n}\n\nexport function StepperSeparator({ className, ...props }: StepperSeparatorProps) {\n const { orientation } = useStepperContext(\"StepperSeparator\");\n const registry = useContext(StepperListRegistryContext);\n const state = registry?.takeSeparatorState() ?? \"upcoming\";\n const vertical = orientation === \"vertical\";\n\n return (\n <li\n data-refineui=\"stepper-separator\"\n data-orientation={orientation}\n data-state={state}\n role=\"presentation\"\n aria-hidden\n className={clsx(\n stepperStyles.separator,\n vertical ? stepperStyles.separatorVertical : stepperStyles.separatorHorizontal,\n className,\n )}\n {...props}\n >\n <span\n data-refineui=\"stepper-separator-rail\"\n className={clsx(\n stepperStyles.separatorRail,\n vertical\n ? stepperStyles.separatorRailVertical\n : stepperStyles.separatorRailHorizontal,\n )}\n >\n <span\n data-refineui=\"stepper-separator-track\"\n className={stepperStyles.separatorTrack}\n />\n <span\n data-refineui=\"stepper-separator-fill\"\n data-state={state}\n className={clsx(\n stepperStyles.separatorFill,\n vertical\n ? stepperStyles.separatorFillVertical\n : stepperStyles.separatorFillHorizontal,\n )}\n />\n </span>\n </li>\n );\n}\n\nStepper.displayName = \"Stepper\";\nStepperList.displayName = \"StepperList\";\nStepperItem.displayName = \"StepperItem\";\nStepperIndicator.displayName = \"StepperIndicator\";\nStepperContent.displayName = \"StepperContent\";\nStepperTitle.displayName = \"StepperTitle\";\nStepperDescription.displayName = \"StepperDescription\";\nStepperSeparator.displayName = \"StepperSeparator\";\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\n/**\n * Stepper — multi-step progress rail.\n * Markers share Calendar day cell selection language (`rounded-large`, brand fill).\n * Connectors are straight rails between marker edges — not pill/circle tracks.\n */\nconst INDICATOR_CENTER_OFFSET =\n \"calc((var(--refineui-size-calendar-day-size) - var(--refineui-size-progress-track-height-sm)) / 2)\";\n\n/** Half of calendar day size — inset so the rail meets the cell edge, not the center. */\nconst INDICATOR_HALF = \"calc(var(--refineui-size-calendar-day-size) / 2)\";\n\n/** Vertical rail tuck under the opaque indicator. */\nconst CONNECTOR_OVERLAP = \"var(--refineui-size-foundation-size-80)\";\n\nexport const stepperStyles = {\n root: \"box-border w-full outline-none\",\n\n list: \"m-0 flex list-none p-0\",\n listHorizontal: \"w-full flex-row items-start gap-0\",\n listVertical: \"w-full flex-col gap-0\",\n\n item: clsx(\n \"relative z-[1] box-border flex min-w-0\",\n \"outline-none transition-opacity duration-[var(--refineui-motion-duration-fast)]\",\n ),\n /** Equal columns; marker centered above labels so the rail can meet the cells. */\n itemHorizontal: \"flex-1 flex-col items-center gap-refineui-size-small\",\n itemVertical: \"w-full flex-row items-start gap-refineui-size-medium\",\n itemInteractive: clsx(\n \"cursor-pointer rounded-refineui-medium\",\n \"focus-visible:ring-2 focus-visible:ring-refineui-alias-border-focus focus-visible:ring-offset-2\",\n \"hover:[&_[data-refineui=stepper-indicator][data-state=upcoming]]:bg-refineui-alias-background-primary-hover\",\n \"hover:[&_[data-refineui=stepper-indicator][data-state=upcoming]]:border-refineui-alias-border-strong\",\n \"hover:[&_[data-refineui=stepper-indicator][data-state=upcoming]]:text-refineui-alias-foreground-primary-hover\",\n \"hover:[&_[data-refineui=stepper-title][data-state=upcoming]]:text-refineui-alias-foreground-primary\",\n ),\n itemDisabled: \"cursor-not-allowed opacity-50\",\n\n indicator: clsx(\n componentTextClass(componentTypographyTokens.stepper.indicator),\n \"relative z-[1] box-border inline-flex size-refineui-calendar-day-size shrink-0\",\n \"min-h-refineui-calendar-day-size min-w-refineui-calendar-day-size\",\n \"items-center justify-center overflow-hidden rounded-refineui-large border-refineui-thin p-0\",\n \"font-medium\",\n \"transition-[background-color,border-color,color]\",\n \"duration-[var(--refineui-motion-duration-medium)]\",\n \"ease-[var(--refineui-motion-easing-emphasized)]\",\n ),\n indicatorComplete: clsx(\n \"border-refineui-alias-background-brand bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed\",\n ),\n indicatorCurrent: clsx(\n \"border-refineui-alias-background-brand bg-refineui-alias-background-brand text-refineui-alias-foreground-inversed\",\n ),\n indicatorUpcoming: clsx(\n \"border-refineui-alias-border-default bg-transparent text-refineui-alias-foreground-secondary\",\n ),\n\n content: \"flex min-w-0 flex-col gap-refineui-size-xxx-small\",\n contentHorizontal: \"items-center text-center\",\n contentVertical: \"items-start pt-refineui-size-xxx-small text-start\",\n\n title: clsx(\n componentTextClass(componentTypographyTokens.stepper.title),\n \"m-0 font-medium transition-colors duration-[var(--refineui-motion-duration-fast)]\",\n ),\n titleComplete: \"text-refineui-alias-foreground-primary\",\n titleCurrent: \"text-refineui-alias-foreground-brand\",\n titleUpcoming: \"text-refineui-alias-foreground-secondary\",\n\n description: clsx(\n componentTextClass(componentTypographyTokens.stepper.description),\n \"m-0 transition-colors duration-[var(--refineui-motion-duration-fast)]\",\n ),\n descriptionComplete: \"text-refineui-alias-foreground-secondary\",\n descriptionCurrent: \"text-refineui-alias-foreground-secondary\",\n descriptionUpcoming: \"text-refineui-alias-foreground-tertiary\",\n\n /** Flex slot between equal columns — straight track + animated fill. */\n separator: \"pointer-events-none relative z-0 box-border list-none\",\n separatorHorizontal: clsx(\n \"min-w-[var(--refineui-size-foundation-size-240)] flex-1 self-start\",\n \"h-refineui-calendar-day-size\",\n ),\n separatorVertical: clsx(\n \"w-refineui-calendar-day-size shrink-0 self-start\",\n \"min-h-[var(--refineui-size-foundation-size-400)]\",\n ),\n\n /**\n * Equal flex item + separator widths → `-50%` reaches the adjacent column center;\n * inset by half the marker size so the stroke meets the cell edge.\n */\n separatorRail: \"absolute overflow-hidden\",\n separatorRailHorizontal: clsx(\n \"h-refineui-progress-track-height-sm\",\n \"top-[var(--refineui-stepper-indicator-center)]\",\n \"start-[calc(-50%+var(--refineui-stepper-indicator-half))]\",\n \"end-[calc(-50%+var(--refineui-stepper-indicator-half))]\",\n ),\n separatorRailVertical: clsx(\n \"w-refineui-progress-track-height-sm\",\n \"start-[var(--refineui-stepper-indicator-center)]\",\n \"top-[calc(-1*var(--refineui-stepper-connector-overlap))]\",\n \"bottom-[calc(-1*var(--refineui-stepper-connector-overlap))]\",\n ),\n\n separatorTrack: \"absolute inset-0 bg-refineui-alias-border-default\",\n\n separatorFill: clsx(\n \"absolute inset-0 bg-refineui-alias-background-brand\",\n \"transition-transform duration-[var(--refineui-motion-duration-panel)]\",\n \"ease-[var(--refineui-motion-easing-emphasized)]\",\n \"motion-reduce:transition-none\",\n ),\n separatorFillHorizontal: \"origin-left scale-x-0 data-[state=complete]:scale-x-100\",\n separatorFillVertical: \"origin-top scale-y-0 data-[state=complete]:scale-y-100\",\n} as const;\n\nexport const stepperConnectorVars = {\n [\"--refineui-stepper-indicator-center\" as string]: INDICATOR_CENTER_OFFSET,\n [\"--refineui-stepper-indicator-half\" as string]: INDICATOR_HALF,\n [\"--refineui-stepper-connector-overlap\" as string]: CONNECTOR_OVERLAP,\n} as const;\n","import { clsx } from \"clsx\";\nimport type {\n CSSProperties,\n KeyboardEvent as ReactKeyboardEvent,\n PointerEvent as ReactPointerEvent,\n RefObject,\n} from \"react\";\nimport {\n createContext,\n useCallback,\n useContext,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { resizableStyles } from \"./style\";\nimport type {\n ResizableHandleProps,\n ResizableOrientation,\n ResizablePanelGroupProps,\n ResizablePanelProps,\n} from \"./types\";\n\nconst KEYBOARD_STEP = 2;\nconst KEYBOARD_STEP_LARGE = 10;\nconst DEFAULT_SIZE = 50;\nconst DEFAULT_MIN_SIZE = 10;\nconst DEFAULT_MAX_SIZE = 100;\n\ntype PanelRecord = {\n id: string;\n defaultSize: number;\n minSize: number;\n maxSize: number;\n sizeControlled?: number;\n onResize?: (size: number) => void;\n order: number;\n};\n\ntype ResizableContextValue = {\n orientation: ResizableOrientation;\n groupRef: RefObject<HTMLDivElement | null>;\n sizes: Record<string, number>;\n registerPanel: (panel: Omit<PanelRecord, \"order\">) => void;\n unregisterPanel: (id: string) => void;\n getPanel: (id: string) => PanelRecord | undefined;\n resizeBetween: (leftId: string, rightId: string, deltaPct: number) => void;\n setBetween: (leftId: string, rightId: string, leftSize: number) => void;\n};\n\nconst ResizableContext = createContext<ResizableContextValue | null>(null);\n\nfunction useResizableContext(component: string): ResizableContextValue {\n const v = useContext(ResizableContext);\n if (!v) throw new Error(`${component} must be used within ResizablePanelGroup.`);\n return v;\n}\n\nfunction clamp(n: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, n));\n}\n\nfunction normalizeDefaults(panels: PanelRecord[]): Record<string, number> {\n if (panels.length === 0) return {};\n const sum = panels.reduce((acc, p) => acc + p.defaultSize, 0);\n if (sum <= 0) {\n const equal = 100 / panels.length;\n return Object.fromEntries(panels.map((p) => [p.id, equal]));\n }\n return Object.fromEntries(\n panels.map((p) => [p.id, (p.defaultSize / sum) * 100]),\n );\n}\n\nfunction orderedPanelIds(panels: Map<string, PanelRecord>): string[] {\n return [...panels.values()]\n .sort((a, b) => a.order - b.order)\n .map((p) => p.id);\n}\n\nfunction findAdjacentPanelIds(handle: HTMLElement): {\n leftId: string | null;\n rightId: string | null;\n} {\n let prev: Element | null = handle.previousElementSibling;\n while (prev && prev.getAttribute(\"data-refineui\") !== \"resizable-panel\") {\n prev = prev.previousElementSibling;\n }\n let next: Element | null = handle.nextElementSibling;\n while (next && next.getAttribute(\"data-refineui\") !== \"resizable-panel\") {\n next = next.nextElementSibling;\n }\n return {\n leftId: prev?.getAttribute(\"data-panel-id\") ?? null,\n rightId: next?.getAttribute(\"data-panel-id\") ?? null,\n };\n}\n\nfunction applyResize(\n sizes: Record<string, number>,\n panels: Map<string, PanelRecord>,\n leftId: string,\n rightId: string,\n deltaPct: number,\n): Record<string, number> | null {\n const left = panels.get(leftId);\n const right = panels.get(rightId);\n if (!left || !right) return null;\n\n const leftSize = sizes[leftId] ?? left.defaultSize;\n const rightSize = sizes[rightId] ?? right.defaultSize;\n const pairSum = leftSize + rightSize;\n\n const minLeft = Math.max(left.minSize, pairSum - right.maxSize);\n const maxLeft = Math.min(left.maxSize, pairSum - right.minSize);\n const nextLeft = clamp(leftSize + deltaPct, minLeft, maxLeft);\n const nextRight = pairSum - nextLeft;\n\n if (\n Math.abs(nextLeft - leftSize) < 0.001 &&\n Math.abs(nextRight - rightSize) < 0.001\n ) {\n return null;\n }\n\n return { ...sizes, [leftId]: nextLeft, [rightId]: nextRight };\n}\n\nexport function ResizablePanelGroup({\n children,\n className,\n style,\n orientation = \"horizontal\",\n onLayout,\n ...props\n}: ResizablePanelGroupProps) {\n const groupRef = useRef<HTMLDivElement>(null);\n const panelsRef = useRef(new Map<string, PanelRecord>());\n const orderCounterRef = useRef(0);\n const [sizes, setSizes] = useState<Record<string, number>>({});\n const onLayoutRef = useRef(onLayout);\n onLayoutRef.current = onLayout;\n\n const syncInitialSizes = useCallback(() => {\n const panels = [...panelsRef.current.values()].sort((a, b) => a.order - b.order);\n if (panels.length === 0) return;\n\n setSizes((prev) => {\n const ids = panels.map((p) => p.id);\n const missing = ids.some((id) => prev[id] === undefined);\n const extras = Object.keys(prev).some((id) => !panelsRef.current.has(id));\n\n if (!missing && !extras) {\n let changed = false;\n const next = { ...prev };\n for (const p of panels) {\n if (\n p.sizeControlled !== undefined &&\n next[p.id] !== p.sizeControlled\n ) {\n next[p.id] = p.sizeControlled;\n changed = true;\n }\n }\n return changed ? next : prev;\n }\n\n const base = normalizeDefaults(panels);\n for (const p of panels) {\n if (p.sizeControlled !== undefined) {\n base[p.id] = p.sizeControlled;\n } else if (prev[p.id] !== undefined) {\n base[p.id] = prev[p.id]!;\n }\n }\n const sum = ids.reduce((acc, id) => acc + (base[id] ?? 0), 0);\n if (sum > 0 && Math.abs(sum - 100) > 0.01) {\n for (const id of ids) {\n base[id] = ((base[id] ?? 0) / sum) * 100;\n }\n }\n return base;\n });\n }, []);\n\n const registerPanel = useCallback(\n (panel: Omit<PanelRecord, \"order\">) => {\n const existing = panelsRef.current.get(panel.id);\n const order = existing?.order ?? orderCounterRef.current++;\n panelsRef.current.set(panel.id, { ...panel, order });\n queueMicrotask(syncInitialSizes);\n },\n [syncInitialSizes],\n );\n\n const unregisterPanel = useCallback((id: string) => {\n panelsRef.current.delete(id);\n setSizes((prev) => {\n if (!(id in prev)) return prev;\n const next = { ...prev };\n delete next[id];\n return next;\n });\n }, []);\n\n const getPanel = useCallback((id: string) => panelsRef.current.get(id), []);\n\n const emitPanelResize = useCallback((next: Record<string, number>) => {\n for (const [id, size] of Object.entries(next)) {\n panelsRef.current.get(id)?.onResize?.(size);\n }\n }, []);\n\n const resizeBetween = useCallback(\n (leftId: string, rightId: string, deltaPct: number) => {\n setSizes((prev) => {\n const next = applyResize(\n prev,\n panelsRef.current,\n leftId,\n rightId,\n deltaPct,\n );\n if (!next) return prev;\n queueMicrotask(() => emitPanelResize(next));\n return next;\n });\n },\n [emitPanelResize],\n );\n\n const setBetween = useCallback(\n (leftId: string, rightId: string, leftSize: number) => {\n setSizes((prev) => {\n const left = panelsRef.current.get(leftId);\n const right = panelsRef.current.get(rightId);\n if (!left || !right) return prev;\n const pairSum =\n (prev[leftId] ?? left.defaultSize) +\n (prev[rightId] ?? right.defaultSize);\n const minLeft = Math.max(left.minSize, pairSum - right.maxSize);\n const maxLeft = Math.min(left.maxSize, pairSum - right.minSize);\n const clampedLeft = clamp(leftSize, minLeft, maxLeft);\n const nextRight = pairSum - clampedLeft;\n if (\n Math.abs(clampedLeft - (prev[leftId] ?? 0)) < 0.001 &&\n Math.abs(nextRight - (prev[rightId] ?? 0)) < 0.001\n ) {\n return prev;\n }\n const next = {\n ...prev,\n [leftId]: clampedLeft,\n [rightId]: nextRight,\n };\n queueMicrotask(() => emitPanelResize(next));\n return next;\n });\n },\n [emitPanelResize],\n );\n\n useLayoutEffect(() => {\n const ids = orderedPanelIds(panelsRef.current);\n if (ids.length === 0) return;\n if (ids.some((id) => sizes[id] === undefined)) return;\n onLayoutRef.current?.(ids.map((id) => sizes[id]!));\n }, [sizes]);\n\n const ctx = useMemo<ResizableContextValue>(\n () => ({\n orientation,\n groupRef,\n sizes,\n registerPanel,\n unregisterPanel,\n getPanel,\n resizeBetween,\n setBetween,\n }),\n [\n orientation,\n sizes,\n registerPanel,\n unregisterPanel,\n getPanel,\n resizeBetween,\n setBetween,\n ],\n );\n\n return (\n <ResizableContext.Provider value={ctx}>\n <div\n ref={groupRef}\n data-refineui=\"resizable-panel-group\"\n data-orientation={orientation}\n className={clsx(\n resizableStyles.group,\n orientation === \"horizontal\"\n ? resizableStyles.groupHorizontal\n : resizableStyles.groupVertical,\n className,\n )}\n style={style}\n {...props}\n >\n {children}\n </div>\n </ResizableContext.Provider>\n );\n}\n\nexport function ResizablePanel({\n children,\n className,\n style,\n defaultSize = DEFAULT_SIZE,\n minSize = DEFAULT_MIN_SIZE,\n maxSize = DEFAULT_MAX_SIZE,\n size: sizeControlled,\n onResize,\n ...props\n}: ResizablePanelProps) {\n const id = useId();\n const { orientation, sizes, registerPanel, unregisterPanel } =\n useResizableContext(\"ResizablePanel\");\n const onResizeRef = useRef(onResize);\n onResizeRef.current = onResize;\n\n useLayoutEffect(() => {\n registerPanel({\n id,\n defaultSize,\n minSize,\n maxSize,\n sizeControlled,\n onResize: (size) => onResizeRef.current?.(size),\n });\n return () => unregisterPanel(id);\n }, [\n id,\n defaultSize,\n minSize,\n maxSize,\n sizeControlled,\n registerPanel,\n unregisterPanel,\n ]);\n\n const size = sizeControlled ?? sizes[id] ?? defaultSize;\n\n const panelStyle: CSSProperties = {\n ...style,\n flexGrow: size,\n flexShrink: 1,\n flexBasis: 0,\n ...(orientation === \"horizontal\"\n ? { minWidth: `${minSize}%` }\n : { minHeight: `${minSize}%` }),\n };\n\n return (\n <div\n data-refineui=\"resizable-panel\"\n data-panel-id={id}\n className={clsx(resizableStyles.panel, className)}\n style={panelStyle}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport function ResizableHandle({\n className,\n style,\n withHandle = false,\n disabled = false,\n onKeyDown,\n onPointerDown,\n \"aria-label\": ariaLabel,\n \"aria-keyshortcuts\": ariaKeyshortcuts,\n ...props\n}: ResizableHandleProps) {\n const {\n orientation,\n groupRef,\n sizes,\n getPanel,\n resizeBetween,\n setBetween,\n } = useResizableContext(\"ResizableHandle\");\n const handleRef = useRef<HTMLDivElement>(null);\n const [active, setActive] = useState(false);\n /** Bumps once after mount so aria can read adjacent panel ids from the DOM. */\n const [, setAdjacentReady] = useState(false);\n\n const dragRef = useRef<{\n leftId: string;\n rightId: string;\n startPos: number;\n startLeft: number;\n } | null>(null);\n\n useLayoutEffect(() => {\n setAdjacentReady(true);\n }, []);\n\n const adjacent = handleRef.current\n ? findAdjacentPanelIds(handleRef.current)\n : { leftId: null, rightId: null };\n const leftPanel = adjacent.leftId ? getPanel(adjacent.leftId) : undefined;\n const ariaNow = Math.round(\n (adjacent.leftId ? sizes[adjacent.leftId] : undefined) ??\n leftPanel?.defaultSize ??\n DEFAULT_SIZE,\n );\n const ariaMin = leftPanel?.minSize ?? 0;\n const ariaMax = leftPanel?.maxSize ?? DEFAULT_MAX_SIZE;\n\n const defaultKeyshortcuts =\n orientation === \"horizontal\"\n ? \"ArrowLeft ArrowRight Home End\"\n : \"ArrowUp ArrowDown Home End\";\n\n const keepFocus = useCallback(() => {\n const el = handleRef.current;\n if (el && document.activeElement !== el) {\n el.focus({ preventScroll: true });\n }\n }, []);\n\n const handlePointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n onPointerDown?.(event);\n if (event.defaultPrevented || disabled || event.button !== 0) return;\n const el = handleRef.current;\n if (!el) return;\n const { leftId, rightId } = findAdjacentPanelIds(el);\n if (!leftId || !rightId) return;\n\n // Focus before preventDefault — otherwise the click never focuses the handle.\n el.focus({ preventScroll: true });\n event.preventDefault();\n el.setPointerCapture(event.pointerId);\n dragRef.current = {\n leftId,\n rightId,\n startPos: orientation === \"horizontal\" ? event.clientX : event.clientY,\n startLeft: sizes[leftId] ?? getPanel(leftId)?.defaultSize ?? DEFAULT_SIZE,\n };\n setActive(true);\n };\n\n const handlePointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n const drag = dragRef.current;\n const group = groupRef.current;\n if (!drag || !group) return;\n const rect = group.getBoundingClientRect();\n const extent = orientation === \"horizontal\" ? rect.width : rect.height;\n if (extent <= 0) return;\n const pos = orientation === \"horizontal\" ? event.clientX : event.clientY;\n const deltaPct = ((pos - drag.startPos) / extent) * 100;\n setBetween(drag.leftId, drag.rightId, drag.startLeft + deltaPct);\n };\n\n const handlePointerUp = (event: ReactPointerEvent<HTMLDivElement>) => {\n if (!dragRef.current) return;\n dragRef.current = null;\n setActive(false);\n if (handleRef.current?.hasPointerCapture(event.pointerId)) {\n handleRef.current.releasePointerCapture(event.pointerId);\n }\n keepFocus();\n };\n\n const handleKeyDown = (event: ReactKeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || disabled) return;\n const el = handleRef.current;\n if (!el) return;\n const { leftId, rightId } = findAdjacentPanelIds(el);\n if (!leftId || !rightId) return;\n\n const step = event.shiftKey ? KEYBOARD_STEP_LARGE : KEYBOARD_STEP;\n const horizontal = orientation === \"horizontal\";\n let delta = 0;\n\n switch (event.key) {\n case \"ArrowLeft\":\n if (horizontal) delta = -step;\n break;\n case \"ArrowRight\":\n if (horizontal) delta = step;\n break;\n case \"ArrowUp\":\n if (!horizontal) delta = -step;\n break;\n case \"ArrowDown\":\n if (!horizontal) delta = step;\n break;\n case \"Home\": {\n event.preventDefault();\n event.stopPropagation();\n const left = getPanel(leftId);\n if (left) setBetween(leftId, rightId, left.minSize);\n queueMicrotask(keepFocus);\n return;\n }\n case \"End\": {\n event.preventDefault();\n event.stopPropagation();\n const left = getPanel(leftId);\n const right = getPanel(rightId);\n if (!left || !right) return;\n const pairSum =\n (sizes[leftId] ?? left.defaultSize) +\n (sizes[rightId] ?? right.defaultSize);\n setBetween(\n leftId,\n rightId,\n Math.min(left.maxSize, pairSum - right.minSize),\n );\n queueMicrotask(keepFocus);\n return;\n }\n default:\n return;\n }\n\n if (delta === 0) return;\n event.preventDefault();\n event.stopPropagation();\n resizeBetween(leftId, rightId, delta);\n queueMicrotask(keepFocus);\n };\n\n return (\n <div\n ref={handleRef}\n role=\"separator\"\n tabIndex={disabled ? -1 : 0}\n aria-orientation={orientation}\n aria-valuenow={ariaNow}\n aria-valuemin={ariaMin}\n aria-valuemax={ariaMax}\n aria-disabled={disabled || undefined}\n aria-label={ariaLabel ?? \"Resize\"}\n aria-keyshortcuts={ariaKeyshortcuts ?? defaultKeyshortcuts}\n data-refineui=\"resizable-handle\"\n data-orientation={orientation}\n data-disabled={disabled ? \"\" : undefined}\n data-active={active ? \"\" : undefined}\n className={clsx(\n \"group/handle\",\n resizableStyles.handle,\n orientation === \"horizontal\"\n ? resizableStyles.handleHorizontal\n : resizableStyles.handleVertical,\n className,\n )}\n style={style}\n {...props}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerUp}\n onKeyDown={handleKeyDown}\n >\n {withHandle ? (\n <span\n aria-hidden\n className={clsx(\n resizableStyles.grip,\n orientation === \"horizontal\"\n ? resizableStyles.gripHorizontal\n : resizableStyles.gripVertical,\n )}\n />\n ) : null}\n </div>\n );\n}\n","import { clsx } from \"clsx\";\n\n/**\n * Resizable — accessible panel group + separator handle.\n * Hit target stays generous; withHandle draws a short center bar only.\n * Focus matches hover (no separate focus color / ring).\n */\nexport const resizableStyles = {\n group: \"box-border flex h-full w-full min-h-0 min-w-0 overflow-hidden outline-none\",\n groupHorizontal: \"flex-row\",\n groupVertical: \"flex-col\",\n\n panel: \"box-border min-h-0 min-w-0 overflow-hidden outline-none\",\n\n handle: clsx(\n \"relative z-[1] box-border shrink-0\",\n \"bg-transparent outline-none\",\n \"transition-colors duration-[var(--refineui-motion-duration-fast)]\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n ),\n /** Hit area only — no full-length rule when showing the center bar. */\n handleHorizontal: \"h-full w-[var(--refineui-size-foundation-size-120)] cursor-col-resize\",\n handleVertical: \"h-[var(--refineui-size-foundation-size-120)] w-full cursor-row-resize\",\n\n /**\n * Center bar affordance (`withHandle`).\n * Horizontal group → vertical bar; vertical group → horizontal bar.\n */\n grip: clsx(\n \"pointer-events-none absolute start-1/2 top-1/2 z-[1] -translate-x-1/2 -translate-y-1/2\",\n \"rounded-refineui-circle bg-refineui-alias-border-default\",\n \"transition-colors duration-[var(--refineui-motion-duration-fast)]\",\n \"group-hover/handle:bg-refineui-alias-border-strong\",\n \"group-focus/handle:bg-refineui-alias-border-strong\",\n \"group-data-[active]/handle:bg-refineui-alias-border-strong\",\n ),\n gripHorizontal:\n \"h-[var(--refineui-size-foundation-size-320)] w-[var(--refineui-size-foundation-size-40)]\",\n gripVertical:\n \"h-[var(--refineui-size-foundation-size-40)] w-[var(--refineui-size-foundation-size-320)]\",\n} as const;\n","import { clsx } from \"clsx\";\nimport { useEffect, useState } from \"react\";\nimport type { ChangeEvent, KeyboardEvent } from \"react\";\nimport { iconSizes } from \"@refineui/tokens\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { spinButtonShellClass, spinButtonStyles, spinButtonValueTypo } from \"./style\";\nimport type { SpinButtonProps } from \"./types\";\n\nexport function SpinButton({\n value,\n onChange,\n placeholder,\n min,\n max,\n step = 1,\n size = \"md\",\n disabled = false,\n className,\n onKeyDown,\n ...props\n}: SpinButtonProps) {\n const [draftValue, setDraftValue] = useState(String(value));\n\n useEffect(() => {\n setDraftValue(String(value));\n }, [value]);\n\n const clampValue = (next: number) => {\n if (min !== undefined && next < min) return min;\n if (max !== undefined && next > max) return max;\n return next;\n };\n\n const commitInputValue = () => {\n const trimmed = draftValue.trim();\n if (trimmed.length === 0) {\n setDraftValue(String(value));\n return;\n }\n const parsed = Number(trimmed);\n if (Number.isNaN(parsed)) {\n setDraftValue(String(value));\n return;\n }\n const normalized = clampValue(parsed);\n setDraftValue(String(normalized));\n if (normalized !== value) {\n onChange(normalized);\n }\n };\n\n const inc = () => {\n if (disabled) return;\n const next = clampValue(value + step);\n if (next === value) return;\n onChange(next);\n };\n const dec = () => {\n if (disabled) return;\n const next = clampValue(value - step);\n if (next === value) return;\n onChange(next);\n };\n\n const bigStep = step * 10;\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n switch (e.key) {\n case \"ArrowUp\":\n case \"Up\":\n e.preventDefault();\n inc();\n break;\n case \"ArrowDown\":\n case \"Down\":\n e.preventDefault();\n dec();\n break;\n case \"PageUp\": {\n e.preventDefault();\n const up = value + bigStep;\n onChange(clampValue(up));\n break;\n }\n case \"PageDown\": {\n e.preventDefault();\n const down = value - bigStep;\n onChange(clampValue(down));\n break;\n }\n case \"Home\":\n if (min !== undefined) {\n e.preventDefault();\n onChange(min);\n }\n break;\n case \"End\":\n if (max !== undefined) {\n e.preventDefault();\n onChange(max);\n }\n break;\n case \"Enter\":\n e.preventDefault();\n commitInputValue();\n break;\n default:\n break;\n }\n }\n onKeyDown?.(e);\n };\n\n const atMax = max !== undefined && value >= max;\n const atMin = min !== undefined && value <= min;\n\n const borderClass = disabled ? spinButtonStyles.borderDisabled : spinButtonStyles.borderDefault;\n\n return (\n <div\n role=\"spinbutton\"\n aria-label={props[\"aria-label\"] ?? \"Spin button\"}\n aria-disabled={disabled || undefined}\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n tabIndex={-1}\n data-refineui=\"spinbutton\"\n data-size={size}\n data-disabled={disabled ? \"true\" : undefined}\n className={clsx(\n spinButtonStyles.root,\n borderClass,\n disabled ? spinButtonStyles.bgDisabled : spinButtonStyles.bgDefault,\n spinButtonShellClass[size],\n className,\n )}\n {...props}\n onKeyDown={handleKeyDown}\n >\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className={clsx(\n spinButtonStyles.value,\n spinButtonValueTypo[size],\n disabled ? spinButtonStyles.valueTextDisabled : spinButtonStyles.valueTextDefault,\n disabled ? spinButtonStyles.bgDisabled : spinButtonStyles.bgDefault,\n )}\n >\n <input\n type=\"text\"\n inputMode=\"decimal\"\n value={draftValue}\n placeholder={placeholder}\n disabled={disabled}\n className={clsx(\n spinButtonStyles.valueInput,\n disabled ? spinButtonStyles.valueTextDisabled : spinButtonStyles.valueTextDefault,\n )}\n onChange={(e: ChangeEvent<HTMLInputElement>) => setDraftValue(e.target.value)}\n onBlur={commitInputValue}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commitInputValue();\n e.currentTarget.blur();\n }\n }}\n />\n </div>\n <div\n className={clsx(\n spinButtonStyles.stepper,\n disabled ? spinButtonStyles.bgDisabled : spinButtonStyles.bgDefault,\n )}\n >\n <button\n type=\"button\"\n data-refineui=\"spinbutton-step\"\n aria-label=\"Increase\"\n onClick={inc}\n disabled={disabled || atMax}\n className={clsx(\n spinButtonStyles.stepButtonBase,\n disabled || atMax\n ? spinButtonStyles.stepButtonDisabled\n : spinButtonStyles.stepButtonEnabled,\n )}\n >\n <WebIcon\n name=\"chevron-up\"\n size={iconSizes.xsmall}\n color=\"currentColor\"\n iconStyle=\"filled\"\n fallback=\"▲\"\n />\n </button>\n <button\n type=\"button\"\n data-refineui=\"spinbutton-step\"\n aria-label=\"Decrease\"\n onClick={dec}\n disabled={disabled || atMin}\n className={clsx(\n spinButtonStyles.stepButtonBase,\n disabled || atMin\n ? spinButtonStyles.stepButtonDisabled\n : spinButtonStyles.stepButtonEnabled,\n )}\n >\n <WebIcon\n name=\"chevron-down\"\n size={iconSizes.xsmall}\n color=\"currentColor\"\n iconStyle=\"filled\"\n fallback=\"▼\"\n />\n </button>\n </div>\n </div>\n );\n}\n","import type { SpinButtonProps } from \"./types\";\nimport { formControlShellHeightClass, formControlTypoClass } from \"../../formControlSizes\";\n\ntype SpinButtonSize = NonNullable<SpinButtonProps[\"size\"]>;\n\nexport const spinButtonStyles = {\n root: \"box-border flex w-full min-w-0 items-stretch overflow-hidden outline-none\",\n borderDisabled: \"border-refineui-thin border-refineui-alias-border-disabled\",\n borderDefault: \"border-refineui-thin border-refineui-alias-border-default\",\n bgDisabled: \"bg-refineui-alias-background-surface-disabled\",\n bgDefault: \"bg-refineui-alias-background-primary\",\n value:\n \"flex min-w-0 flex-[1_1_auto] items-center ps-refineui-spin-field-padding-inline-start pe-refineui-size-x-small\",\n valueInput: \"w-full border-none bg-transparent p-0 outline-none placeholder:text-refineui-alias-foreground-placeholder\",\n valueTextDisabled: \"text-refineui-alias-foreground-disabled\",\n valueTextDefault: \"text-refineui-alias-foreground-primary\",\n stepper: \"flex h-full min-h-0 w-refineui-spin-stepper-width shrink-0 flex-col\",\n /** Split column evenly inside shared `controlHeight*` shell */\n stepButtonBase:\n \"box-border flex min-h-0 w-full flex-1 items-center justify-center border-none p-0 text-refineui-alias-foreground-secondary\",\n stepButtonDisabled: \"cursor-not-allowed bg-refineui-alias-background-surface-disabled opacity-50\",\n stepButtonEnabled: \"cursor-pointer bg-refineui-alias-background-primary opacity-100\",\n} as const;\n\n/** Height + radius from shared form-control tokens; typography on value only */\nexport const spinButtonShellClass: Record<SpinButtonSize, string> = formControlShellHeightClass;\n\nexport const spinButtonValueTypo: Record<SpinButtonSize, string> = formControlTypoClass;\n","import { clsx } from \"clsx\";\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n useSyncExternalStore,\n type PointerEvent as ReactPointerEvent,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { iconSizes, semanticInteraction, spacings } from \"@refineui/tokens\";\nimport { motionMsToNumber } from \"@refineui/utilities/animation\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { Button } from \"../Button\";\nimport { toastStyles } from \"./style\";\nimport type {\n ToastOptions,\n ToastProps,\n ToastRecord,\n ToastSwipeDirection,\n ToastVariant,\n ToasterProps,\n} from \"./types\";\n\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? useLayoutEffect : useEffect;\n\nconst ENTER_MS = 20;\n/** Match `--refineui-motion-duration-toast-leave` + buffer for slide-out. */\nconst LEAVE_MS = motionMsToNumber(semanticInteraction.duration.toastLeave) + 60;\nconst DEFAULT_DURATION = 4200;\n/** Material-style: one toast at a time by default. */\nconst DEFAULT_MAX_TOASTS = 1;\nconst STACK_Z_BASE = 100;\nconst COLLAPSED_STEP_GAP = 0.85;\nconst COLLAPSED_STEP_FRONT = 0.035;\n/** Distance before drag offset starts (avoids jitter on click). */\nconst SWIPE_DEADZONE_PX = 12;\n/** Distance required to dismiss (Sonner uses ~45; we go higher for less twitchy dismiss). */\nconst SWIPE_THRESHOLD_PX = 96;\n/** px/ms — Sonner uses 0.11; raised so light flicks don't dismiss. */\nconst SWIPE_VELOCITY = 0.32;\n/** Minimum travel before velocity alone can dismiss. */\nconst SWIPE_VELOCITY_MIN_PX = 40;\n\nfunction swipeDampening(delta: number): number {\n const factor = Math.abs(delta) / 20;\n return 1 / (1.5 + factor);\n}\n\nfunction gapPxFromSpacingToken(token: string): number {\n const n = Number.parseFloat(String(token).replace(\"px\", \"\"));\n return Number.isFinite(n) && n > 0 ? n : 16;\n}\n\nconst TOAST_NARROW_STACK_MQ = \"(max-width: 480px), (hover: none)\";\n\nfunction readToastStackGapPx(): number {\n if (typeof globalThis.matchMedia === \"undefined\") {\n return gapPxFromSpacingToken(String(spacings.sizeLarge));\n }\n const mq = globalThis.matchMedia(TOAST_NARROW_STACK_MQ);\n return gapPxFromSpacingToken(mq.matches ? String(spacings.sizeMedium) : String(spacings.sizeLarge));\n}\n\nfunction subscribeToastStackGap(onChange: () => void): () => void {\n if (typeof globalThis.matchMedia === \"undefined\") return () => {};\n const mq = globalThis.matchMedia(TOAST_NARROW_STACK_MQ);\n mq.addEventListener(\"change\", onChange);\n return () => mq.removeEventListener(\"change\", onChange);\n}\n\nfunction useToastStackGapPx(): number {\n return useSyncExternalStore(subscribeToastStackGap, readToastStackGapPx, () =>\n gapPxFromSpacingToken(String(spacings.sizeLarge)),\n );\n}\n\nfunction readToastNaturalHeight(li: HTMLLIElement | null): number {\n if (!li) return 0;\n const toastEl = li.querySelector<HTMLElement>('[data-refineui=\"toast\"]');\n if (!toastEl) return 0;\n const layoutH = toastEl.offsetHeight;\n if (layoutH > 0) return layoutH;\n return Math.max(Math.round(toastEl.getBoundingClientRect().height), 1);\n}\n\nfunction computeStackLayout(records: ToastRecord[], items: Record<string, HTMLLIElement | null>, gapPx: number) {\n const naturalHeights = records.map((rec) => readToastNaturalHeight(items[rec.id] ?? null));\n const front = Math.max(naturalHeights[0] ?? 0, 1);\n const collapsedStep = gapPx * COLLAPSED_STEP_GAP + front * COLLAPSED_STEP_FRONT;\n const collapsedOffsets = records.map((_, idx) => idx * collapsedStep);\n\n let expandedY = 0;\n const expandedOffsets = records.map((_, idx) => {\n const y = expandedY;\n expandedY += (naturalHeights[idx] ?? 0) + gapPx;\n return y;\n });\n\n const slotHeight = (idx: number) => (idx === 0 ? Math.max(naturalHeights[idx] ?? 0, 1) : front);\n\n let collapsedBottom = 0;\n for (let i = 0; i < records.length; i++) {\n collapsedBottom = Math.max(collapsedBottom, (collapsedOffsets[i] ?? 0) + slotHeight(i));\n }\n\n const last = records.length - 1;\n const expandedBottom =\n last >= 0 ? (expandedOffsets[last] ?? 0) + (naturalHeights[last] ?? 0) : front;\n\n return { naturalHeights, front, collapsedOffsets, expandedOffsets, collapsedBottom, expandedBottom, slotHeight };\n}\n\nconst DEFAULT_SWIPE_DIRECTIONS: ToastSwipeDirection[] = [\"top\"];\n\nlet toastState: ToastRecord[] = [];\nconst toastListeners = new Set<(records: ToastRecord[]) => void>();\nconst leaveTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\nconst enterTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\n/** Latest mounted Toaster owns the portal — prevents stacked duplicate toasters (HMR / remount). */\nlet activeToasterKey: symbol | null = null;\nconst toasterOwnerListeners = new Set<() => void>();\n\nfunction notifyToasterOwners() {\n for (const listener of toasterOwnerListeners) {\n listener();\n }\n}\n\nfunction clearTrackedTimeout(map: Map<string, ReturnType<typeof setTimeout>>, id: string) {\n const handle = map.get(id);\n if (handle != null) {\n clearTimeout(handle);\n map.delete(id);\n }\n}\n\nfunction clearAllTrackedTimeouts(map: Map<string, ReturnType<typeof setTimeout>>) {\n for (const handle of map.values()) {\n clearTimeout(handle);\n }\n map.clear();\n}\n\nfunction notifyToastListeners() {\n for (const listener of toastListeners) {\n listener(toastState);\n }\n}\n\nfunction setToastState(next: ToastRecord[]) {\n toastState = next;\n notifyToastListeners();\n}\n\nfunction updateToastById(id: string, updater: (t: ToastRecord) => ToastRecord) {\n setToastState(toastState.map((t) => (t.id === id ? updater(t) : t)));\n}\n\nfunction scheduleRemoveToast(id: string) {\n clearTrackedTimeout(leaveTimeouts, id);\n leaveTimeouts.set(\n id,\n globalThis.setTimeout(() => {\n leaveTimeouts.delete(id);\n setToastState(toastState.filter((t) => t.id !== id));\n }, LEAVE_MS),\n );\n}\n\nexport function dismissToast(id?: string) {\n if (!id) {\n clearAllTrackedTimeouts(enterTimeouts);\n clearAllTrackedTimeouts(leaveTimeouts);\n const ids = toastState.map((t) => t.id);\n setToastState(toastState.map((t) => ({ ...t, phase: \"leaving\" })));\n for (const toastId of ids) {\n scheduleRemoveToast(toastId);\n }\n return;\n }\n clearTrackedTimeout(enterTimeouts, id);\n if (!toastState.some((t) => t.id === id)) return;\n updateToastById(id, (t) => ({ ...t, phase: \"leaving\" }));\n scheduleRemoveToast(id);\n}\n\n/** Show a toast. Replaces any visible toast (Material snackbar-style). */\nexport function toast(message: ToastRecord[\"message\"], options: ToastOptions = {}): string {\n const id = `${Date.now()}-${Math.random().toString(16).slice(2, 8)}`;\n const record: ToastRecord = {\n id,\n message,\n variant: options.variant ?? \"default\",\n iconName: options.iconName,\n icon: options.icon,\n action: options.action,\n duration: options.duration ?? DEFAULT_DURATION,\n phase: \"entering\",\n };\n\n // Drop previous immediately — never keep a leaving toast under the new one.\n clearAllTrackedTimeouts(enterTimeouts);\n clearAllTrackedTimeouts(leaveTimeouts);\n setToastState([record]);\n // Two frames so the browser paints `entering` (off-edge) before transitioning to idle.\n enterTimeouts.set(\n id,\n globalThis.setTimeout(() => {\n enterTimeouts.delete(id);\n if (typeof requestAnimationFrame === \"undefined\") {\n updateToastById(id, (t) => ({ ...t, phase: \"idle\" }));\n return;\n }\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n updateToastById(id, (t) => ({ ...t, phase: \"idle\" }));\n });\n });\n }, ENTER_MS),\n );\n return id;\n}\n\nfunction subscribeToasts(listener: (records: ToastRecord[]) => void) {\n toastListeners.add(listener);\n listener(toastState);\n return () => {\n toastListeners.delete(listener);\n };\n}\n\nconst variantIconNames: Record<ToastVariant, string> = {\n default: \"info\",\n success: \"checkmark\",\n error: \"error-circle\",\n warning: \"warning\",\n};\n\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(function Toast(props, ref) {\n const { variant = \"default\", message, iconName, icon, action, className, stackState, style, ...rest } =\n props;\n const domProps = { ...rest };\n delete (domProps as Record<string, unknown>).iconName;\n delete (domProps as Record<string, unknown>).icon;\n delete (domProps as Record<string, unknown>).action;\n\n const liveRole = variant === \"error\" ? \"alert\" : \"status\";\n const ariaLive =\n variant === \"error\" ? undefined : variant === \"warning\" ? (\"assertive\" as const) : (\"polite\" as const);\n\n const resolvedIconName = iconName ?? variantIconNames[variant];\n const iconContent =\n icon ?? (\n <WebIcon\n name={resolvedIconName}\n size={iconSizes.medium}\n color=\"currentColor\"\n iconStyle=\"filled\"\n />\n );\n\n const isPrimaryAction =\n !action || typeof action !== \"object\" || !(\"variant\" in action) || action.variant === \"primary\";\n const actionEl =\n typeof action === \"object\" && action !== null && \"label\" in action ? (\n <Button\n variant={isPrimaryAction ? \"primary\" : \"outline\"}\n size=\"sm\"\n onClick={action.onClick}\n className={toastStyles.actionButton}\n >\n {action.label}\n </Button>\n ) : (\n action\n );\n\n return (\n <div\n ref={ref}\n data-refineui=\"toast\"\n data-variant={variant}\n data-stack-state={stackState}\n role={liveRole}\n aria-live={ariaLive}\n {...domProps}\n style={style}\n className={clsx(toastStyles.card, className)}\n >\n <div data-refineui=\"toast-icon\" className={toastStyles.iconWrap}>\n {iconContent}\n </div>\n <div className={toastStyles.contentWrap}>\n {message != null && message !== \"\" ? (\n <div className={toastStyles.message}>{message}</div>\n ) : null}\n </div>\n {action != null && actionEl}\n </div>\n );\n});\n\ntype SwipeableToastProps = {\n record: ToastRecord;\n index: number;\n swipeDirections: ToastSwipeDirection[];\n onSwipeStart: () => void;\n onSwipeEnd: () => void;\n};\n\nfunction SwipeableToast({ record, index, swipeDirections, onSwipeStart, onSwipeEnd }: SwipeableToastProps) {\n const toastRef = useRef<HTMLDivElement | null>(null);\n const dragStartRef = useRef<{ x: number; y: number; time: number } | null>(null);\n const axisRef = useRef<\"x\" | \"y\" | null>(null);\n const offsetRef = useRef({ x: 0, y: 0 });\n const [swiping, setSwiping] = useState(false);\n\n const clearSwipeOffset = useCallback(() => {\n const el = toastRef.current;\n offsetRef.current = { x: 0, y: 0 };\n if (!el) return;\n el.style.setProperty(\"--refineui-toast-swipe-x\", \"0px\");\n el.style.setProperty(\"--refineui-toast-swipe-y\", \"0px\");\n delete el.dataset.swipeOut;\n }, []);\n\n const onPointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n if (record.phase === \"leaving\") return;\n if (event.button !== 0) return;\n if ((event.target as HTMLElement).closest(\"button, a, input, textarea, select\")) return;\n\n dragStartRef.current = { x: event.clientX, y: event.clientY, time: Date.now() };\n axisRef.current = null;\n offsetRef.current = { x: 0, y: 0 };\n event.currentTarget.setPointerCapture(event.pointerId);\n setSwiping(true);\n onSwipeStart();\n };\n\n const onPointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n const start = dragStartRef.current;\n const el = toastRef.current;\n if (!start || !el) return;\n\n const dx = event.clientX - start.x;\n const dy = event.clientY - start.y;\n\n if (!axisRef.current) {\n if (Math.abs(dx) < SWIPE_DEADZONE_PX && Math.abs(dy) < SWIPE_DEADZONE_PX) return;\n axisRef.current = Math.abs(dx) > Math.abs(dy) ? \"x\" : \"y\";\n }\n\n let offsetX = 0;\n let offsetY = 0;\n\n if (axisRef.current === \"x\") {\n const dir: ToastSwipeDirection = dx > 0 ? \"right\" : \"left\";\n const allowed = swipeDirections.includes(dir);\n offsetX = allowed ? dx : dx * swipeDampening(dx);\n } else {\n const dir: ToastSwipeDirection = dy > 0 ? \"bottom\" : \"top\";\n const allowed = swipeDirections.includes(dir);\n offsetY = allowed ? dy : dy * swipeDampening(dy);\n }\n\n offsetRef.current = { x: offsetX, y: offsetY };\n el.style.setProperty(\"--refineui-toast-swipe-x\", `${offsetX}px`);\n el.style.setProperty(\"--refineui-toast-swipe-y\", `${offsetY}px`);\n };\n\n const onPointerUp = (event: ReactPointerEvent<HTMLDivElement>) => {\n const start = dragStartRef.current;\n const el = toastRef.current;\n dragStartRef.current = null;\n setSwiping(false);\n\n if (el?.hasPointerCapture(event.pointerId)) {\n el.releasePointerCapture(event.pointerId);\n }\n\n if (!start || !el) {\n clearSwipeOffset();\n onSwipeEnd();\n return;\n }\n\n const { x: offsetX, y: offsetY } = offsetRef.current;\n const axis = axisRef.current;\n axisRef.current = null;\n\n const amount = axis === \"x\" ? offsetX : axis === \"y\" ? offsetY : 0;\n const dir: ToastSwipeDirection =\n axis === \"x\" ? (amount > 0 ? \"right\" : \"left\") : amount > 0 ? \"bottom\" : \"top\";\n const allowed = axis != null && swipeDirections.includes(dir);\n const elapsed = Math.max(Date.now() - start.time, 1);\n const velocity = Math.abs(amount) / elapsed;\n const farEnough = Math.abs(amount) >= SWIPE_THRESHOLD_PX;\n const fastEnough =\n Math.abs(amount) >= SWIPE_VELOCITY_MIN_PX && velocity > SWIPE_VELOCITY;\n\n if (allowed && (farEnough || fastEnough)) {\n el.dataset.swipeOut = dir;\n dismissToast(record.id);\n return;\n }\n\n clearSwipeOffset();\n onSwipeEnd();\n };\n\n return (\n <Toast\n ref={toastRef}\n variant={record.variant}\n message={record.message}\n iconName={record.iconName}\n icon={record.icon}\n action={record.action}\n stackState={record.phase}\n data-swiping={swiping ? \"true\" : undefined}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerUp}\n style={{\n [\"--refineui-toast-z-index\" as string]: STACK_Z_BASE - index,\n }}\n />\n );\n}\n\nexport function Toaster({\n maxToasts = DEFAULT_MAX_TOASTS,\n swipeDirections,\n className,\n}: ToasterProps) {\n const toasterKeyRef = useRef(Symbol(\"refineui-toaster\"));\n const isPortalOwner = useSyncExternalStore(\n (onStoreChange) => {\n toasterOwnerListeners.add(onStoreChange);\n return () => toasterOwnerListeners.delete(onStoreChange);\n },\n () => activeToasterKey === toasterKeyRef.current,\n () => false,\n );\n const [records, setRecords] = useState<ToastRecord[]>([]);\n const timerMapRef = useRef<Record<string, ReturnType<typeof setTimeout>>>({});\n const pausedRef = useRef<Set<string>>(new Set());\n const rootRef = useRef<HTMLOListElement | null>(null);\n const itemRefs = useRef<Record<string, HTMLLIElement | null>>({});\n const [layoutTick, setLayoutTick] = useState(0);\n const stackGapPx = useToastStackGapPx();\n const resolvedSwipe = swipeDirections ?? DEFAULT_SWIPE_DIRECTIONS;\n\n useIsomorphicLayoutEffect(() => {\n const key = toasterKeyRef.current;\n // Latest mount wins — avoids duplicate portals (docs HMR / remount).\n activeToasterKey = key;\n notifyToasterOwners();\n\n return () => {\n if (activeToasterKey === key) {\n activeToasterKey = null;\n notifyToasterOwners();\n }\n };\n }, []);\n\n useEffect(() => {\n if (!isPortalOwner) return;\n return subscribeToasts((next) => {\n setRecords(next.slice(0, Math.max(1, maxToasts)));\n });\n }, [isPortalOwner, maxToasts]);\n\n useEffect(() => {\n if (!isPortalOwner) return;\n\n for (const rec of records) {\n if (rec.phase === \"leaving\") continue;\n if (pausedRef.current.has(rec.id)) continue;\n if (timerMapRef.current[rec.id]) continue;\n timerMapRef.current[rec.id] = globalThis.setTimeout(() => {\n dismissToast(rec.id);\n const handle = timerMapRef.current[rec.id];\n if (handle) {\n clearTimeout(handle);\n delete timerMapRef.current[rec.id];\n }\n }, rec.duration);\n }\n\n for (const id of Object.keys(timerMapRef.current)) {\n if (!records.some((r) => r.id === id)) {\n clearTimeout(timerMapRef.current[id]);\n delete timerMapRef.current[id];\n }\n }\n }, [isPortalOwner, records]);\n\n useEffect(() => {\n return () => {\n for (const handle of Object.values(timerMapRef.current)) {\n clearTimeout(handle);\n }\n timerMapRef.current = {};\n };\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n if (!isPortalOwner) return;\n const root = rootRef.current;\n if (!root) return;\n\n const { front, naturalHeights, collapsedOffsets, expandedOffsets, collapsedBottom, expandedBottom, slotHeight } =\n computeStackLayout(records, itemRefs.current, stackGapPx);\n\n root.style.setProperty(\"--refineui-toast-front-height\", `${front}px`);\n root.style.setProperty(\"--refineui-toast-gap\", `${stackGapPx}px`);\n root.style.setProperty(\"--refineui-toast-collapsed-stack-height\", `${collapsedBottom}px`);\n root.style.setProperty(\"--refineui-toast-expanded-stack-height\", `${expandedBottom}px`);\n\n for (const [idx, rec] of records.entries()) {\n const li = itemRefs.current[rec.id];\n if (!li) continue;\n li.style.setProperty(\"--refineui-toast-offset-collapsed\", `${collapsedOffsets[idx] ?? 0}px`);\n li.style.setProperty(\"--refineui-toast-offset-expanded\", `${expandedOffsets[idx] ?? 0}px`);\n li.style.setProperty(\"--refineui-toast-initial-height\", `${naturalHeights[idx] ?? 0}px`);\n li.style.height = `${slotHeight(idx)}px`;\n }\n }, [isPortalOwner, layoutTick, records, stackGapPx]);\n\n useEffect(() => {\n if (!isPortalOwner) return;\n const root = rootRef.current;\n if (!root) return;\n if (typeof ResizeObserver === \"undefined\") {\n setLayoutTick((t) => t + 1);\n return;\n }\n const ro = new ResizeObserver(() => {\n setLayoutTick((t) => t + 1);\n });\n ro.observe(root);\n for (const rec of records) {\n const li = itemRefs.current[rec.id];\n if (li) ro.observe(li);\n }\n return () => ro.disconnect();\n }, [isPortalOwner, records]);\n\n const pauseTimer = (id: string) => {\n pausedRef.current.add(id);\n const handle = timerMapRef.current[id];\n if (handle) {\n clearTimeout(handle);\n delete timerMapRef.current[id];\n }\n };\n\n const resumeTimer = (id: string) => {\n pausedRef.current.delete(id);\n setRecords((prev) => [...prev]);\n };\n\n if (typeof document === \"undefined\" || !isPortalOwner) {\n return null;\n }\n return createPortal(\n <ol\n ref={rootRef}\n dir=\"ltr\"\n tabIndex={-1}\n data-refineui=\"toaster\"\n className={clsx(toastStyles.toasterRoot, className)}\n style={{\n [\"--refineui-toast-gap\" as string]: `${stackGapPx}px`,\n }}\n >\n {records.map((rec, index) => (\n <li\n key={rec.id}\n ref={(node) => {\n itemRefs.current[rec.id] = node;\n }}\n data-refineui=\"toast-item\"\n data-toast-id={rec.id}\n data-index={index}\n data-front={index === 0 ? \"true\" : \"false\"}\n style={{\n [\"--refineui-toast-z-index\" as string]: String(STACK_Z_BASE - index),\n [\"--refineui-toast-stack-index\" as string]: String(index),\n }}\n >\n <div data-refineui=\"toast-scale-layer\">\n <SwipeableToast\n record={rec}\n index={index}\n swipeDirections={resolvedSwipe}\n onSwipeStart={() => pauseTimer(rec.id)}\n onSwipeEnd={() => resumeTimer(rec.id)}\n />\n </div>\n </li>\n ))}\n </ol>,\n document.body,\n );\n}\n","/**\n * Toast recipe — visual mapping only.\n * Contract: packages/react/spec/components/toast.json\n * Tokens: componentColorTokens.toast\n */\nimport { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../typography\";\nimport { defineRecipe } from \"./types\";\n\nexport const toastRecipe = defineRecipe({\n name: \"toast\",\n base: \"relative isolate box-border flex w-fit max-w-refineui-toast-max-width cursor-grab items-center gap-refineui-size-small rounded-refineui-circle border-none py-refineui-size-medium ps-refineui-size-medium pe-refineui-size-large select-none\",\n variants: {\n variant: {\n default: \"\",\n success: \"\",\n error: \"\",\n warning: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n dataStates: [\"default\"],\n});\n\nexport const toastStyles = {\n card: toastRecipe.base,\n iconWrap: \"flex shrink-0 items-center justify-center self-center\",\n contentWrap: \"flex min-h-px min-w-0 flex-1 items-center\",\n message: clsx(\n componentTextClass(componentTypographyTokens.toast.message),\n \"text-refineui-alias-foreground-primary\",\n ),\n actionButton: \"shrink-0 whitespace-nowrap\",\n toasterRoot: \"refineui-toaster group\",\n} as const;\n","import { clsx } from \"clsx\";\nimport {\n useCallback,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n} from \"react\";\nimport {\n TreeContext,\n toExpandedSet,\n usePrefersReducedMotion,\n type TreeSize,\n} from \"./context\";\nimport { treeStyles } from \"./style\";\n\nexport interface TreeProps extends HTMLAttributes<HTMLUListElement> {\n size?: TreeSize;\n defaultExpanded?: string[];\n expanded?: string[];\n onExpandedChange?: (value: string[]) => void;\n defaultSelected?: string;\n selected?: string | null;\n onSelectedChange?: (value: string | null) => void;\n}\n\ntype ItemMeta = { parentValue: string | null; disabled: boolean };\n\nexport function Tree({\n size = \"md\",\n defaultExpanded,\n expanded: expandedProp,\n onExpandedChange,\n defaultSelected,\n selected: selectedProp,\n onSelectedChange,\n className,\n children,\n ...props\n}: TreeProps) {\n const reduceMotion = usePrefersReducedMotion();\n const [uncontrolledExpanded, setUncontrolledExpanded] = useState(() => toExpandedSet(defaultExpanded));\n const [uncontrolledSelected, setUncontrolledSelected] = useState<string | null>(defaultSelected ?? null);\n\n const expanded = expandedProp === undefined ? uncontrolledExpanded : toExpandedSet(expandedProp);\n const selected = selectedProp === undefined ? uncontrolledSelected : selectedProp;\n\n const orderRef = useRef<string[]>([]);\n const elMapRef = useRef<Map<string, HTMLElement>>(new Map());\n const metaMapRef = useRef<Map<string, ItemMeta>>(new Map());\n\n const emitExpanded = useCallback(\n (next: Set<string>) => {\n if (expandedProp === undefined) setUncontrolledExpanded(next);\n onExpandedChange?.(Array.from(next));\n },\n [expandedProp, onExpandedChange],\n );\n\n const emitSelected = useCallback(\n (next: string | null) => {\n if (selectedProp === undefined) setUncontrolledSelected(next);\n onSelectedChange?.(next);\n },\n [onSelectedChange, selectedProp],\n );\n\n const isExpanded = useCallback((value: string) => expanded.has(value), [expanded]);\n\n const toggleExpanded = useCallback(\n (value: string) => {\n const next = new Set(expanded);\n if (next.has(value)) next.delete(value);\n else next.add(value);\n emitExpanded(next);\n },\n [emitExpanded, expanded],\n );\n\n const expand = useCallback(\n (value: string) => {\n if (expanded.has(value)) return;\n const next = new Set(expanded);\n next.add(value);\n emitExpanded(next);\n },\n [emitExpanded, expanded],\n );\n\n const collapse = useCallback(\n (value: string) => {\n if (!expanded.has(value)) return;\n const next = new Set(expanded);\n next.delete(value);\n emitExpanded(next);\n },\n [emitExpanded, expanded],\n );\n\n const select = useCallback(\n (value: string) => {\n emitSelected(value);\n },\n [emitSelected],\n );\n\n const registerItem = useCallback((value: string, el: HTMLElement | null, meta: ItemMeta) => {\n metaMapRef.current.set(value, meta);\n if (!orderRef.current.includes(value)) {\n orderRef.current.push(value);\n }\n if (el) elMapRef.current.set(value, el);\n else {\n elMapRef.current.delete(value);\n metaMapRef.current.delete(value);\n orderRef.current = orderRef.current.filter((v) => v !== value);\n }\n }, []);\n\n const focusItem = useCallback((value: string) => {\n elMapRef.current.get(value)?.focus();\n }, []);\n\n const visibleValues = useCallback(() => {\n const result: string[] = [];\n const walk = (parent: string | null) => {\n for (const value of orderRef.current) {\n const meta = metaMapRef.current.get(value);\n if (!meta || meta.parentValue !== parent) continue;\n if (meta.disabled) continue;\n result.push(value);\n if (expanded.has(value)) walk(value);\n }\n };\n walk(null);\n return result;\n }, [expanded]);\n\n const focusByDelta = useCallback(\n (currentValue: string, delta: number) => {\n const list = visibleValues();\n const idx = list.indexOf(currentValue);\n if (list.length === 0) return;\n const next = list[((idx < 0 ? 0 : idx) + delta + list.length * 10) % list.length];\n if (next) focusItem(next);\n },\n [focusItem, visibleValues],\n );\n\n const focusFirst = useCallback(() => {\n const list = visibleValues();\n if (list[0]) focusItem(list[0]);\n }, [focusItem, visibleValues]);\n\n const focusLast = useCallback(() => {\n const list = visibleValues();\n const last = list[list.length - 1];\n if (last) focusItem(last);\n }, [focusItem, visibleValues]);\n\n const getParent = useCallback((value: string) => metaMapRef.current.get(value)?.parentValue ?? null, []);\n\n const contextValue = useMemo(\n () => ({\n size,\n isExpanded,\n toggleExpanded,\n expand,\n collapse,\n selected,\n select,\n registerItem,\n focusItem,\n focusByDelta,\n focusFirst,\n focusLast,\n getParent,\n reduceMotion,\n }),\n [\n collapse,\n expand,\n focusByDelta,\n focusFirst,\n focusItem,\n focusLast,\n getParent,\n isExpanded,\n reduceMotion,\n registerItem,\n select,\n selected,\n size,\n toggleExpanded,\n ],\n );\n\n return (\n <TreeContext.Provider value={contextValue}>\n <ul\n data-refineui=\"tree\"\n role=\"tree\"\n className={clsx(treeStyles.root, className)}\n {...props}\n >\n {children}\n </ul>\n </TreeContext.Provider>\n );\n}\n","import { createContext, useEffect, useState } from \"react\";\nimport { semanticInteraction } from \"@refineui/tokens\";\nimport { getReducedMotionQuery } from \"@refineui/utilities/animation\";\n\nexport type TreeSize = \"sm\" | \"md\" | \"lg\";\n\nexport const TREE_PANEL_MS = Number.parseFloat(semanticInteraction.duration.accordionPanel) / 1000;\nexport const TREE_CONTENT_MS = Number.parseFloat(semanticInteraction.duration.accordionContent) / 1000;\nexport const TREE_PANEL_EASE = semanticInteraction.easing.panel;\nexport const TREE_CONTENT_EASE = semanticInteraction.easing.content;\n\nexport interface TreeContextValue {\n size: TreeSize;\n isExpanded: (value: string) => boolean;\n toggleExpanded: (value: string) => void;\n expand: (value: string) => void;\n collapse: (value: string) => void;\n selected: string | null;\n select: (value: string) => void;\n registerItem: (value: string, el: HTMLElement | null, meta: { parentValue: string | null; disabled: boolean }) => void;\n focusItem: (value: string) => void;\n focusByDelta: (currentValue: string, delta: number) => void;\n focusFirst: () => void;\n focusLast: () => void;\n getParent: (value: string) => string | null;\n reduceMotion: boolean;\n}\n\nexport interface TreeItemContextValue {\n value: string;\n depth: number;\n parentValue: string | null;\n expanded: boolean;\n selected: boolean;\n disabled: boolean;\n hasBranch: boolean;\n setHasBranch: (has: boolean) => void;\n triggerId: string;\n groupId: string;\n}\n\nexport const TreeContext = createContext<TreeContextValue | null>(null);\nexport const TreeItemContext = createContext<TreeItemContextValue | null>(null);\n\nexport function usePrefersReducedMotion(): boolean {\n const [reduce, setReduce] = useState(false);\n useEffect(() => {\n const mql = window.matchMedia(getReducedMotionQuery().replace(\"@media \", \"\"));\n const sync = () => setReduce(mql.matches);\n sync();\n mql.addEventListener(\"change\", sync);\n return () => mql.removeEventListener(\"change\", sync);\n }, []);\n return reduce;\n}\n\nexport function toExpandedSet(value: string[] | undefined): Set<string> {\n if (value == null) return new Set();\n return new Set(value);\n}\n","import { clsx } from \"clsx\";\nimport { iconSizes } from \"@refineui/tokens\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { sizedComponentTextClass } from \"../../typography\";\nimport type { TreeSize } from \"./context\";\n\n/**\n * Hierarchical list — token composition (no Web Kit COMPONENT_SET; mirrors Sidebar link density).\n * Selection / hover paint the full row; depth indent lives on the inner content only.\n */\nexport const treeStyles = {\n root: \"m-0 flex list-none flex-col gap-px p-0\",\n item: \"m-0 list-none p-0\",\n group: \"m-0 flex min-h-0 list-none flex-col gap-px overflow-hidden p-0\",\n panel: \"min-h-0 overflow-hidden\",\n panelInner: \"min-h-0\",\n row: clsx(\n \"box-border flex w-full min-w-0 cursor-pointer items-center\",\n \"rounded-refineui-large border-none bg-transparent\",\n \"px-refineui-size-medium py-refineui-size-x-small\",\n \"text-refineui-alias-foreground-tertiary outline-none\",\n \"transition-[color,background-color] duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]\",\n ),\n rowSelected: \"font-medium text-refineui-alias-foreground-primary\",\n rowDisabled: \"cursor-not-allowed\",\n rowMain: \"flex min-w-0 flex-1 items-center gap-refineui-size-x-small\",\n chevronButton: clsx(\n \"inline-flex shrink-0 items-center justify-center\",\n \"size-refineui-icon-xsmall rounded-refineui-large border-none bg-transparent p-0\",\n \"text-current outline-none\",\n \"transition-transform duration-[var(--refineui-motion-duration-medium)] ease-[var(--refineui-motion-easing-emphasized)]\",\n ),\n chevronExpanded: \"rotate-90\",\n chevronSpacer: \"size-refineui-icon-xsmall shrink-0\",\n label: \"min-w-0 flex-1 truncate text-start\",\n} as const;\n\nexport const treeIconSize: Record<TreeSize, number> = {\n sm: iconSizes.xxsmall,\n md: iconSizes.xsmall,\n lg: iconSizes.xsmall,\n};\n\nexport const treeItemTypo = {\n sm: sizedComponentTextClass(componentTypographyTokens.tree.item, \"sm\"),\n md: sizedComponentTextClass(componentTypographyTokens.tree.item, \"md\"),\n lg: sizedComponentTextClass(componentTypographyTokens.tree.item, \"lg\"),\n} as const;\n","import { clsx } from \"clsx\";\nimport { useContext, useId, useMemo, useState, type HTMLAttributes, type ReactNode } from \"react\";\nimport { TreeContext, TreeItemContext } from \"./context\";\nimport { treeStyles } from \"./style\";\n\nexport interface TreeItemProps extends Omit<HTMLAttributes<HTMLLIElement>, \"value\"> {\n value: string;\n disabled?: boolean;\n children?: ReactNode;\n}\n\nexport function TreeItem({ value, disabled = false, className, children, ...props }: TreeItemProps) {\n const tree = useContext(TreeContext);\n const parent = useContext(TreeItemContext);\n if (!tree) throw new Error(\"TreeItem must be used within Tree.\");\n\n const [hasBranch, setHasBranch] = useState(false);\n const uid = useId().replace(/:/g, \"\");\n const depth = parent ? parent.depth + 1 : 0;\n const parentValue = parent?.value ?? null;\n const expanded = tree.isExpanded(value);\n const selected = tree.selected === value;\n const triggerId = `tree-trigger-${uid}-${value}`;\n const groupId = `tree-group-${uid}-${value}`;\n\n const itemContext = useMemo(\n () => ({\n value,\n depth,\n parentValue,\n expanded,\n selected,\n disabled,\n hasBranch,\n setHasBranch,\n triggerId,\n groupId,\n }),\n [value, depth, parentValue, expanded, selected, disabled, hasBranch, triggerId, groupId],\n );\n\n return (\n <TreeItemContext.Provider value={itemContext}>\n <li\n data-refineui=\"tree-item\"\n data-depth={depth}\n data-expanded={hasBranch ? (expanded ? \"true\" : \"false\") : undefined}\n data-selected={selected || undefined}\n data-disabled={disabled || undefined}\n role=\"treeitem\"\n aria-expanded={hasBranch ? expanded : undefined}\n aria-selected={selected}\n aria-disabled={disabled || undefined}\n className={clsx(treeStyles.item, className)}\n {...props}\n >\n {children}\n </li>\n </TreeItemContext.Provider>\n );\n}\n","import { clsx } from \"clsx\";\nimport {\n useContext,\n useEffect,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n} from \"react\";\nimport { WebIcon } from \"../../WebIcon\";\nimport { TreeContext, TreeItemContext } from \"./context\";\nimport { treeIconSize, treeItemTypo, treeStyles } from \"./style\";\n\nexport interface TreeItemTriggerProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport function TreeItemTrigger({ className, children, onClick, onKeyDown, ...props }: TreeItemTriggerProps) {\n const tree = useContext(TreeContext);\n const item = useContext(TreeItemContext);\n if (!tree || !item) throw new Error(\"TreeItemTrigger must be used within TreeItem.\");\n\n const iconSize = treeIconSize[tree.size];\n /** One tree column = icon slot + label gap (matches Select item indicator stride). */\n const depthIndent =\n \"calc(var(--refineui-spacing-size-large) + var(--refineui-spacing-size-x-small))\";\n const mainStyle = {\n paddingInlineStart:\n item.depth > 0 ? `calc(${depthIndent} * ${item.depth})` : undefined,\n };\n\n useEffect(() => {\n return () => {\n tree.registerItem(item.value, null, {\n parentValue: item.parentValue,\n disabled: item.disabled,\n });\n };\n }, [item.disabled, item.parentValue, item.value, tree.registerItem]);\n\n const setRowRef = (el: HTMLDivElement | null) => {\n tree.registerItem(item.value, el, {\n parentValue: item.parentValue,\n disabled: item.disabled,\n });\n };\n\n const onChevronClick = (event: MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n if (item.disabled || !item.hasBranch) return;\n tree.toggleExpanded(item.value);\n };\n\n const onRowClick = (event: MouseEvent<HTMLDivElement>) => {\n onClick?.(event);\n if (event.defaultPrevented || item.disabled) return;\n tree.select(item.value);\n if (item.hasBranch) {\n tree.toggleExpanded(item.value);\n }\n };\n\n const onRowKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || item.disabled) return;\n\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n tree.focusByDelta(item.value, 1);\n break;\n case \"ArrowUp\":\n event.preventDefault();\n tree.focusByDelta(item.value, -1);\n break;\n case \"ArrowRight\":\n event.preventDefault();\n if (item.hasBranch) {\n if (!item.expanded) tree.expand(item.value);\n else tree.focusByDelta(item.value, 1);\n }\n break;\n case \"ArrowLeft\":\n event.preventDefault();\n if (item.hasBranch && item.expanded) {\n tree.collapse(item.value);\n } else {\n const parent = tree.getParent(item.value);\n if (parent) tree.focusItem(parent);\n }\n break;\n case \"Home\":\n event.preventDefault();\n tree.focusFirst();\n break;\n case \"End\":\n event.preventDefault();\n tree.focusLast();\n break;\n case \"Enter\":\n case \" \":\n event.preventDefault();\n tree.select(item.value);\n if (item.hasBranch) {\n tree.toggleExpanded(item.value);\n }\n break;\n default:\n break;\n }\n };\n\n return (\n <div\n ref={setRowRef}\n id={item.triggerId}\n data-refineui=\"tree-item-trigger\"\n data-selected={item.selected ? \"true\" : undefined}\n data-disabled={item.disabled ? \"true\" : undefined}\n tabIndex={item.disabled ? -1 : 0}\n onClick={onRowClick}\n onKeyDown={onRowKeyDown}\n className={clsx(\n treeStyles.row,\n treeItemTypo[tree.size],\n item.selected && treeStyles.rowSelected,\n item.disabled && treeStyles.rowDisabled,\n className,\n )}\n {...props}\n >\n <div data-refineui=\"tree-item-main\" className={treeStyles.rowMain} style={mainStyle}>\n {item.hasBranch ? (\n <button\n type=\"button\"\n tabIndex={-1}\n aria-label={item.expanded ? \"Collapse\" : \"Expand\"}\n data-refineui=\"tree-item-chevron\"\n disabled={item.disabled}\n onClick={onChevronClick}\n className={clsx(\n treeStyles.chevronButton,\n item.expanded && treeStyles.chevronExpanded,\n tree.reduceMotion && \"transition-none\",\n )}\n >\n <WebIcon name=\"chevron-right\" size={iconSize} color=\"currentColor\" fallback=\"›\" />\n </button>\n ) : (\n <span className={treeStyles.chevronSpacer} aria-hidden=\"true\" />\n )}\n <span className={treeStyles.label}>{children}</span>\n </div>\n </div>\n );\n}\n","import { clsx } from \"clsx\";\nimport { useContext, useLayoutEffect, type CSSProperties, type HTMLAttributes } from \"react\";\nimport {\n TREE_CONTENT_EASE,\n TREE_CONTENT_MS,\n TREE_PANEL_EASE,\n TREE_PANEL_MS,\n TreeContext,\n TreeItemContext,\n} from \"./context\";\nimport { treeStyles } from \"./style\";\n\nexport interface TreeItemContentProps extends HTMLAttributes<HTMLUListElement> {}\n\nexport function TreeItemContent({ className, children, ...props }: TreeItemContentProps) {\n const tree = useContext(TreeContext);\n const item = useContext(TreeItemContext);\n if (!tree || !item) throw new Error(\"TreeItemContent must be used within TreeItem.\");\n\n const { setHasBranch, expanded, groupId, triggerId } = item;\n\n useLayoutEffect(() => {\n setHasBranch(true);\n return () => setHasBranch(false);\n }, [setHasBranch]);\n\n const gridStyle: CSSProperties = {\n display: \"grid\",\n gridTemplateRows: expanded ? \"1fr\" : \"0fr\",\n transition: tree.reduceMotion ? undefined : `grid-template-rows ${TREE_PANEL_MS}s ${TREE_PANEL_EASE}`,\n };\n\n const innerMotionStyle: CSSProperties = {\n opacity: expanded ? 1 : 0,\n transform: expanded\n ? \"translate3d(0, 0, 0)\"\n : \"translate3d(0, calc(-1 * var(--refineui-spacing-size-x-small)), 0)\",\n transition: tree.reduceMotion\n ? undefined\n : `opacity ${TREE_CONTENT_MS}s ${TREE_CONTENT_EASE}, transform ${TREE_CONTENT_MS}s ${TREE_CONTENT_EASE}`,\n pointerEvents: expanded ? undefined : \"none\",\n };\n\n return (\n <div\n ref={(el) => {\n if (!el) return;\n if (expanded) el.removeAttribute(\"inert\");\n else el.setAttribute(\"inert\", \"\");\n }}\n data-refineui=\"tree-item-panel\"\n aria-hidden={!expanded}\n style={gridStyle}\n >\n <div className={treeStyles.panel}>\n <div className={treeStyles.panelInner} style={innerMotionStyle}>\n <ul\n id={groupId}\n role=\"group\"\n aria-labelledby={triggerId}\n data-refineui=\"tree-item-content\"\n className={clsx(treeStyles.group, className)}\n {...props}\n >\n {children}\n </ul>\n </div>\n </div>\n </div>\n );\n}\n","import { clsx } from \"clsx\";\nimport type { CSSProperties, ReactElement, ReactNode } from \"react\";\nimport { cloneElement, useId, useRef, useState } from \"react\";\nimport { spacings } from \"@refineui/tokens\";\nimport { resolveColorTokenValue } from \"@refineui/utilities/color\";\nimport { componentColorTokens } from \"../../tokens/componentColorTokens\";\nimport { getMergeableTriggerChild } from \"@refineui/utilities/react\";\nimport { tooltipArrowStyle, tooltipPanelDropShadow, tooltipPanelStyle, tooltipStyles } from \"./style\";\nimport type { TooltipProps, TooltipTriggerMergeProps } from \"./types\";\n\nexport function Tooltip({\n trigger,\n content,\n position = \"Bottom\",\n align = \"Start\",\n delayMs = 120,\n open: ctrlOpen,\n defaultOpen = false,\n onOpenChange,\n className,\n ...props\n}: TooltipProps) {\n const [innerOpen, setInnerOpen] = useState(defaultOpen);\n const open = ctrlOpen !== undefined ? ctrlOpen : innerOpen;\n const tooltipId = useId();\n const showTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const setOpen = (next: boolean) => {\n if (ctrlOpen === undefined) setInnerOpen(next);\n onOpenChange?.(next);\n };\n\n const bg = resolveColorTokenValue(componentColorTokens.tooltip.default.background);\n const fg = resolveColorTokenValue(componentColorTokens.tooltip.default.foreground);\n\n const clearTimer = () => {\n if (showTimer.current != null) {\n clearTimeout(showTimer.current);\n showTimer.current = null;\n }\n };\n\n const scheduleShow = () => {\n clearTimer();\n showTimer.current = setTimeout(() => setOpen(true), delayMs);\n };\n\n const hide = () => {\n clearTimer();\n setOpen(false);\n };\n\n const arrowHalf = Number.parseInt(spacings.sizeXSmall, 10) || 6;\n const panelPos: CSSProperties = tooltipPanelStyle(position, align);\n const arrow: CSSProperties = tooltipArrowStyle(position, align, bg, arrowHalf);\n\n const describedBy = open ? tooltipId : undefined;\n const mergeEl = getMergeableTriggerChild(trigger);\n\n let triggerNode: ReactNode;\n if (mergeEl != null) {\n const el = mergeEl as ReactElement<TooltipTriggerMergeProps>;\n const prevDescribedBy = el.props[\"aria-describedby\"];\n triggerNode = cloneElement(el, {\n \"aria-describedby\":\n prevDescribedBy && describedBy\n ? `${prevDescribedBy} ${describedBy}`\n : describedBy ?? prevDescribedBy,\n onMouseEnter: (e) => {\n el.props.onMouseEnter?.(e);\n scheduleShow();\n },\n onMouseLeave: (e) => {\n el.props.onMouseLeave?.(e);\n hide();\n },\n onFocus: (e) => {\n el.props.onFocus?.(e);\n scheduleShow();\n },\n onBlur: (e) => {\n el.props.onBlur?.(e);\n if (!e.currentTarget.contains(e.relatedTarget as Node)) hide();\n },\n onKeyDown: (e) => {\n el.props.onKeyDown?.(e);\n if (e.key === \"Escape\") hide();\n },\n } as Partial<TooltipTriggerMergeProps>);\n } else {\n triggerNode = (\n <span\n tabIndex={0}\n aria-describedby={describedBy}\n onMouseEnter={scheduleShow}\n onMouseLeave={hide}\n onFocus={scheduleShow}\n onBlur={(e) => {\n if (!e.currentTarget.contains(e.relatedTarget as Node)) hide();\n }}\n onKeyDown={(e) => e.key === \"Escape\" && hide()}\n className={tooltipStyles.fallbackTrigger}\n >\n {trigger}\n </span>\n );\n }\n\n return (\n <div data-refineui=\"tooltip\" className={clsx(tooltipStyles.root, className)} {...props}>\n {triggerNode}\n {open && (\n <div\n id={tooltipId}\n role=\"tooltip\"\n data-position={position}\n data-align={align}\n className={tooltipStyles.panel}\n style={{\n ...panelPos,\n backgroundColor: bg,\n color: fg,\n filter: tooltipPanelDropShadow,\n }}\n >\n {content}\n <span aria-hidden style={arrow} />\n </div>\n )}\n </div>\n );\n}\n","import type { CSSProperties } from \"react\";\nimport { shadows, spacings, strokeWidths, type ShadowLevel } from \"@refineui/tokens\";\nimport { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\nimport type { TooltipAlign, TooltipPosition } from \"./types\";\n\nexport const tooltipStyles = {\n root: \"relative inline-block\",\n fallbackTrigger: \"inline-flex outline-none\",\n panel: clsx(\n componentTextClass(componentTypographyTokens.tooltip),\n \"pointer-events-none absolute z-refineui-popup max-w-refineui-tooltip-max-width whitespace-nowrap rounded-refineui-medium px-refineui-size-medium py-refineui-size-small\",\n ),\n} as const;\n\nconst gap = spacings.sizeXSmall;\nconst edgeInset = spacings.sizeMedium;\n/** Tuck the CSS triangle into the panel so a hairline does not show at the join. */\nconst arrowPanelOverlap = strokeWidths.strokeWidthThin;\n\nfunction arrowOutset(halfPx: number): string {\n return `calc(-1 * ${halfPx}px + ${arrowPanelOverlap})`;\n}\n\n/** `ShadowLevel` layers include spread; `drop-shadow()` does not. */\nfunction dropShadowFromLayer(layer: string): string {\n const [x, y, blur, , ...colorTokens] = layer.split(\" \");\n return `drop-shadow(${x} ${y} ${blur} ${colorTokens.join(\" \")})`;\n}\n\nfunction dropShadowFromLevel(level: ShadowLevel): string {\n return `${dropShadowFromLayer(level.key)} ${dropShadowFromLayer(level.ambient)}`;\n}\n\n/** Silhouette elevation so the arrow does not sit outside a rectangular box-shadow. */\nexport const tooltipPanelDropShadow = dropShadowFromLevel(shadows.shadow8Light);\n\n/** Panel `absolute` offset — MCP position × align */\nexport function tooltipPanelStyle(position: TooltipPosition, align: TooltipAlign): CSSProperties {\n switch (position) {\n case \"Top\":\n if (align === \"Start\") return { bottom: \"100%\", left: 0, marginBottom: gap };\n if (align === \"End\") return { bottom: \"100%\", right: 0, left: \"auto\", marginBottom: gap };\n return { bottom: \"100%\", left: \"50%\", transform: \"translateX(-50%)\", marginBottom: gap };\n case \"Bottom\":\n if (align === \"Start\") return { top: \"100%\", left: 0, marginTop: gap };\n if (align === \"End\") return { top: \"100%\", right: 0, left: \"auto\", marginTop: gap };\n return { top: \"100%\", left: \"50%\", transform: \"translateX(-50%)\", marginTop: gap };\n case \"Left\":\n // MCP: Left-Top = Start, Left-Bottom = End, Left-Center\n if (align === \"Start\") return { right: \"100%\", top: 0, marginRight: gap };\n if (align === \"End\") return { right: \"100%\", bottom: 0, top: \"auto\", marginRight: gap };\n return { right: \"100%\", top: \"50%\", transform: \"translateY(-50%)\", marginRight: gap };\n case \"Right\":\n // MCP: Right-Top = Start, Right-Bottom = End, Right-Center\n if (align === \"Start\") return { left: \"100%\", top: 0, marginLeft: gap };\n if (align === \"End\") return { left: \"100%\", bottom: 0, top: \"auto\", marginLeft: gap };\n return { left: \"100%\", top: \"50%\", transform: \"translateY(-50%)\", marginLeft: gap };\n default:\n return {};\n }\n}\n\n/** CSS border triangle — background `bg` (resolved hex), half-edge `b` (sizeSmall) */\nexport function tooltipArrowStyle(\n position: TooltipPosition,\n align: TooltipAlign,\n bg: string,\n b: number,\n): CSSProperties {\n const baseBox: CSSProperties = { position: \"absolute\", display: \"block\", width: 0, height: 0 };\n const outset = arrowOutset(b);\n\n if (position === \"Top\") {\n const tri = {\n ...baseBox,\n bottom: outset,\n borderLeft: `${b}px solid transparent`,\n borderRight: `${b}px solid transparent`,\n borderTop: `${b}px solid ${bg}`,\n };\n if (align === \"Start\") return { ...tri, left: edgeInset, marginLeft: 0 };\n if (align === \"End\") return { ...tri, right: edgeInset, left: \"auto\", marginLeft: 0 };\n return { ...tri, left: \"50%\", marginLeft: -b };\n }\n\n if (position === \"Bottom\") {\n const tri = {\n ...baseBox,\n top: outset,\n borderLeft: `${b}px solid transparent`,\n borderRight: `${b}px solid transparent`,\n borderBottom: `${b}px solid ${bg}`,\n };\n if (align === \"Start\") return { ...tri, left: edgeInset, marginLeft: 0 };\n if (align === \"End\") return { ...tri, right: edgeInset, left: \"auto\", marginLeft: 0 };\n return { ...tri, left: \"50%\", marginLeft: -b };\n }\n\n if (position === \"Left\") {\n const tri = {\n ...baseBox,\n right: outset,\n borderTop: `${b}px solid transparent`,\n borderBottom: `${b}px solid transparent`,\n borderLeft: `${b}px solid ${bg}`,\n };\n // Start = Top → arrow near top of panel; End = Bottom → near bottom\n if (align === \"Start\") return { ...tri, top: edgeInset, marginTop: 0 };\n if (align === \"End\") return { ...tri, bottom: edgeInset, top: \"auto\", marginTop: 0 };\n return { ...tri, top: \"50%\", marginTop: -b };\n }\n\n const tri = {\n ...baseBox,\n left: outset,\n borderTop: `${b}px solid transparent`,\n borderBottom: `${b}px solid transparent`,\n borderRight: `${b}px solid ${bg}`,\n };\n if (align === \"Start\") return { ...tri, top: edgeInset, marginTop: 0 };\n if (align === \"End\") return { ...tri, bottom: edgeInset, top: \"auto\", marginTop: 0 };\n return { ...tri, top: \"50%\", marginTop: -b };\n}\n","import { clsx } from \"clsx\";\nimport {\n Children,\n createContext,\n isValidElement,\n useContext,\n useId,\n useLayoutEffect,\n useMemo,\n useState,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { opacities } from \"@refineui/tokens\";\nimport { resolveColorTokenValue } from \"@refineui/utilities/color\";\nimport { componentColorTokens } from \"../../tokens/componentColorTokens\";\nimport { chartStyles } from \"./style\";\nimport type {\n ChartAxisLabelsProps,\n ChartBarsProps,\n ChartBodyProps,\n ChartContentProps,\n ChartGridProps,\n ChartItemState,\n ChartLegendItemProps,\n ChartLegendProps,\n ChartLineProps,\n ChartPlotProps,\n ChartProps,\n ChartSeriesColor,\n ChartTooltipProps,\n ChartYAxisLabelsProps,\n} from \"./types\";\nimport {\n CHART_BAR_RADIUS,\n CHART_PLOT_PADDING_TOP,\n CHART_PLOT_PADDING_X,\n CHART_POINT_RADIUS,\n CHART_POINT_STROKE,\n CHART_TOOLTIP_FLIP_X,\n CHART_TOOLTIP_FLIP_Y,\n CHART_VIEWBOX_HEIGHT,\n CHART_VIEWBOX_WIDTH,\n barBandCenterRatio,\n barLayout,\n barPathTopRounded,\n barX,\n formatAxisTick,\n gridLineY,\n hoverIndexFromPlotX,\n linePointCenterRatio,\n linePointCoords,\n monotoneAreaPath,\n monotoneLinePath,\n plotBaselineY,\n plotHeight,\n plotWidth,\n pointerFromClient,\n resolveChartScale,\n valueToY,\n viewBoxXToPercent,\n viewBoxYToPercent,\n yAxisTicks,\n} from \"./utils\";\n\ntype ChartSeriesSnapshot = {\n values: number[];\n seriesColor: ChartSeriesColor;\n max?: number;\n align: \"bar\" | \"line\";\n};\n\ntype ChartPointer = {\n x: number;\n y: number;\n};\n\ntype ChartContextValue = {\n hoverIndex: number | null;\n selectedIndex: number | null;\n pointer: ChartPointer | null;\n setHoverIndex: (index: number | null) => void;\n setSelectedIndex: (index: number | null) => void;\n setPointer: (pointer: ChartPointer | null) => void;\n labels: string[];\n setLabels: (labels: string[]) => void;\n series: ChartSeriesSnapshot | null;\n setSeries: (series: ChartSeriesSnapshot) => void;\n};\n\nconst ChartContext = createContext<ChartContextValue | null>(null);\n\nfunction useChartContext(component: string): ChartContextValue {\n const value = useContext(ChartContext);\n if (!value) throw new Error(`${component} must be used within Chart.`);\n return value;\n}\n\nfunction seriesColorToken(color: ChartSeriesColor) {\n return resolveColorTokenValue(componentColorTokens.chart.series[color]);\n}\n\nfunction seriesSubtleToken(color: ChartSeriesColor) {\n return resolveColorTokenValue(componentColorTokens.chart.seriesSubtle[color]);\n}\n\nfunction gridStroke() {\n return resolveColorTokenValue(componentColorTokens.chart.grid);\n}\n\nfunction gridBaselineStroke() {\n return resolveColorTokenValue(componentColorTokens.chart.gridBaseline);\n}\n\nfunction pointStrokeColor() {\n return resolveColorTokenValue(componentColorTokens.chart.pointStroke);\n}\n\nfunction resolveScale(values: number[] | undefined, max: number | undefined, fallbackMax = 100) {\n if (max !== undefined && max > 0) return max;\n if (values && values.length > 0) return resolveChartScale(values, max);\n return fallbackMax;\n}\n\nfunction itemState(\n index: number,\n hoverIndex: number | null,\n selectedIndex: number | null,\n): ChartItemState {\n if (selectedIndex === index) return \"selected\";\n if (hoverIndex === index) return \"hover\";\n return \"default\";\n}\n\nfunction isChartTooltipElement(node: ReactNode): node is ReactElement<ChartTooltipProps> {\n return isValidElement(node) && node.type === ChartTooltip;\n}\n\nexport function Chart({ className, children, ...props }: ChartProps) {\n const [hoverIndex, setHoverIndex] = useState<number | null>(null);\n const [selectedIndex, setSelectedIndex] = useState<number | null>(null);\n const [pointer, setPointer] = useState<ChartPointer | null>(null);\n const [labels, setLabels] = useState<string[]>([]);\n const [series, setSeries] = useState<ChartSeriesSnapshot | null>(null);\n\n const context = useMemo<ChartContextValue>(\n () => ({\n hoverIndex,\n selectedIndex,\n pointer,\n setHoverIndex,\n setSelectedIndex,\n setPointer,\n labels,\n setLabels,\n series,\n setSeries,\n }),\n [hoverIndex, selectedIndex, pointer, labels, series],\n );\n\n return (\n <ChartContext.Provider value={context}>\n <div\n data-refineui=\"chart\"\n className={clsx(chartStyles.root, className)}\n {...props}\n >\n {children}\n </div>\n </ChartContext.Provider>\n );\n}\n\nexport function ChartBody({ className, ...props }: ChartBodyProps) {\n return (\n <div\n data-refineui=\"chart-body\"\n className={clsx(chartStyles.body, className)}\n {...props}\n />\n );\n}\n\nexport function ChartContent({ className, ...props }: ChartContentProps) {\n return (\n <div\n data-refineui=\"chart-content\"\n className={clsx(chartStyles.plotColumn, className)}\n {...props}\n />\n );\n}\n\nfunction ChartHitArea() {\n const { series, selectedIndex, setHoverIndex, setPointer, setSelectedIndex } =\n useChartContext(\"ChartHitArea\");\n const count = series?.values.length ?? 0;\n if (count === 0 || !series) return null;\n\n const pointerFromEvent = (event: { currentTarget: SVGRectElement; clientX: number; clientY: number }) => {\n const svg = event.currentTarget.ownerSVGElement;\n if (!svg) return null;\n return pointerFromClient(svg.getBoundingClientRect(), event.clientX, event.clientY);\n };\n\n const applyPointer = (event: { currentTarget: SVGRectElement; clientX: number; clientY: number }) => {\n const next = pointerFromEvent(event);\n if (!next) return null;\n setPointer(next);\n setHoverIndex(hoverIndexFromPlotX(next.x, count, series.align));\n return next;\n };\n\n return (\n <rect\n data-refineui=\"chart-hit-area\"\n x={0}\n y={0}\n width={CHART_VIEWBOX_WIDTH}\n height={CHART_VIEWBOX_HEIGHT}\n fill=\"transparent\"\n className=\"cursor-pointer\"\n onPointerMove={applyPointer}\n onPointerLeave={() => {\n setPointer(null);\n setHoverIndex(null);\n }}\n onClick={(event) => {\n const next = applyPointer(event);\n if (!next) return;\n const index = hoverIndexFromPlotX(next.x, count, series.align);\n setSelectedIndex(selectedIndex === index ? null : index);\n }}\n aria-hidden\n />\n );\n}\n\nexport function ChartPlot({\n className,\n children,\n \"aria-label\": ariaLabel,\n ...props\n}: ChartPlotProps) {\n const { pointer, selectedIndex } = useChartContext(\"ChartPlot\");\n const svgChildren: ReactNode[] = [];\n const tooltipNodes: ReactNode[] = [];\n\n Children.forEach(children, (child) => {\n if (isChartTooltipElement(child)) tooltipNodes.push(child);\n else svgChildren.push(child);\n });\n\n return (\n <div\n data-refineui=\"chart-plot-frame\"\n data-hover={pointer != null ? \"true\" : undefined}\n data-selected={selectedIndex != null ? \"true\" : undefined}\n className={clsx(chartStyles.plotFrame, className)}\n {...props}\n >\n <svg\n data-refineui=\"chart-plot\"\n viewBox={`0 0 ${CHART_VIEWBOX_WIDTH} ${CHART_VIEWBOX_HEIGHT}`}\n preserveAspectRatio=\"none\"\n role=\"img\"\n aria-label={ariaLabel}\n className={chartStyles.plot}\n >\n {svgChildren}\n <ChartHitArea />\n </svg>\n {tooltipNodes}\n </div>\n );\n}\n\nexport function ChartTooltip({ className, children, style, ...props }: ChartTooltipProps) {\n const { hoverIndex, labels, pointer, series } = useChartContext(\"ChartTooltip\");\n if (pointer == null || hoverIndex == null || !series) return null;\n\n const value = series.values[hoverIndex];\n const label = labels[hoverIndex];\n const flipX = pointer.x > CHART_PLOT_PADDING_X + plotWidth() * CHART_TOOLTIP_FLIP_X;\n const flipY = pointer.y < CHART_PLOT_PADDING_TOP + plotHeight() * CHART_TOOLTIP_FLIP_Y;\n const offsetX = flipX\n ? \"calc(-100% - var(--refineui-spacing-size-small))\"\n : \"var(--refineui-spacing-size-small)\";\n const offsetY = flipY\n ? \"var(--refineui-spacing-size-small)\"\n : \"calc(-100% - var(--refineui-spacing-size-x-small))\";\n\n return (\n <div\n data-refineui=\"chart-tooltip\"\n role=\"tooltip\"\n className={clsx(chartStyles.tooltip, className)}\n style={{\n left: `${viewBoxXToPercent(pointer.x)}%`,\n top: `${viewBoxYToPercent(pointer.y)}%`,\n transform: `translate(${offsetX}, ${offsetY})`,\n ...style,\n }}\n {...props}\n >\n {children ?? (\n <>\n {label ? <span className={chartStyles.tooltipLabel}>{label}</span> : null}\n <span className={chartStyles.tooltipValue}>{formatAxisTick(value)}</span>\n </>\n )}\n </div>\n );\n}\n\nexport function ChartYAxisLabels({\n lines = 5,\n max,\n values,\n formatTick = formatAxisTick,\n className,\n ...props\n}: ChartYAxisLabelsProps) {\n const scaleMax = resolveScale(values, max);\n const ticks = yAxisTicks(scaleMax, lines).slice().reverse();\n\n return (\n <div\n data-refineui=\"chart-y-axis\"\n className={clsx(chartStyles.yAxis, className)}\n aria-hidden\n {...props}\n >\n {ticks.map((tick) => (\n <span\n key={tick}\n className={chartStyles.yAxisTick}\n style={{ top: `${viewBoxYToPercent(valueToY(tick, scaleMax))}%` }}\n >\n {formatTick(tick)}\n </span>\n ))}\n </div>\n );\n}\n\nexport function ChartGrid({\n lines = 5,\n max,\n values,\n className,\n ...props\n}: ChartGridProps) {\n const scaleMax = resolveScale(values, max);\n const ticks = yAxisTicks(scaleMax, lines);\n const gridColor = gridStroke();\n const baselineColor = gridBaselineStroke();\n\n return (\n <g data-refineui=\"chart-grid\" className={className} {...props}>\n {ticks.map((tick, index) => {\n const y = gridLineY(scaleMax, tick);\n const isBaseline = index === 0;\n const isTop = index === ticks.length - 1;\n if (isTop) return null;\n return (\n <line\n key={tick}\n x1={CHART_PLOT_PADDING_X}\n x2={CHART_VIEWBOX_WIDTH - CHART_PLOT_PADDING_X}\n y1={y}\n y2={y}\n stroke={isBaseline ? baselineColor : gridColor}\n strokeWidth=\"var(--refineui-stroke-width-thin)\"\n strokeOpacity={isBaseline ? opacities.opacityFull : opacities.opacityDisabled}\n vectorEffect=\"non-scaling-stroke\"\n />\n );\n })}\n </g>\n );\n}\n\nexport function ChartBars({\n values,\n max,\n seriesColor = \"brand\",\n showTrack = false,\n className,\n ...props\n}: ChartBarsProps) {\n const { hoverIndex, selectedIndex, setSeries } = useChartContext(\"ChartBars\");\n const scaleMax = resolveChartScale(values, max);\n const fill = seriesColorToken(seriesColor);\n const track = seriesSubtleToken(seriesColor);\n const { barWidth } = barLayout(values.length);\n const barRadius = Math.min(CHART_BAR_RADIUS, barWidth / 2);\n const baselineY = plotBaselineY();\n const trackHeight = plotHeight();\n\n useLayoutEffect(() => {\n setSeries({ values, seriesColor, max, align: \"bar\" });\n }, [values, seriesColor, max, setSeries]);\n\n return (\n <g data-refineui=\"chart-bars\" data-series-color={seriesColor} className={className} {...props}>\n {showTrack\n ? values.map((_, index) => {\n const x = barX(index, values.length);\n return (\n <path\n key={`track-${index}`}\n data-refineui=\"chart-bar-track\"\n d={barPathTopRounded(\n x,\n CHART_PLOT_PADDING_TOP,\n barWidth,\n trackHeight,\n barRadius,\n )}\n fill={track}\n />\n );\n })\n : null}\n {values.map((value, index) => {\n const x = barX(index, values.length);\n const y = valueToY(value, scaleMax);\n const height = baselineY - y;\n if (height <= 0) return null;\n const state = itemState(index, hoverIndex, selectedIndex);\n return (\n <path\n key={index}\n data-refineui=\"chart-bar\"\n data-state={state}\n d={barPathTopRounded(x, y, barWidth, height, barRadius)}\n fill={fill}\n />\n );\n })}\n </g>\n );\n}\n\nexport function ChartLine({\n values,\n max,\n seriesColor = \"brand\",\n showArea = false,\n showPoints = false,\n className,\n ...props\n}: ChartLineProps) {\n const { hoverIndex, selectedIndex, setSeries } = useChartContext(\"ChartLine\");\n const gradientId = useId().replace(/:/g, \"\");\n const scaleMax = resolveChartScale(values, max);\n const stroke = seriesColorToken(seriesColor);\n const coords = linePointCoords(values, scaleMax);\n const baselineY = plotBaselineY();\n const pointRing = pointStrokeColor();\n const linePath = monotoneLinePath(coords);\n\n useLayoutEffect(() => {\n setSeries({ values, seriesColor, max, align: \"line\" });\n }, [values, seriesColor, max, setSeries]);\n\n return (\n <g data-refineui=\"chart-line\" data-series-color={seriesColor} className={className} {...props}>\n {showArea && coords.length > 1 ? (\n <>\n <defs>\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop\n offset=\"0%\"\n stopColor={stroke}\n stopOpacity={opacities.opacityDisabled}\n />\n <stop offset=\"100%\" stopColor={stroke} stopOpacity=\"0\" />\n </linearGradient>\n </defs>\n <path\n data-refineui=\"chart-line-area\"\n d={monotoneAreaPath(coords, baselineY)}\n fill={`url(#${gradientId})`}\n />\n </>\n ) : null}\n <path\n data-refineui=\"chart-line-stroke\"\n d={linePath}\n fill=\"none\"\n pathLength={1}\n stroke={stroke}\n strokeWidth=\"var(--refineui-stroke-width-thick)\"\n vectorEffect=\"non-scaling-stroke\"\n strokeLinejoin=\"round\"\n strokeLinecap=\"round\"\n />\n {coords.map(({ x, y }, index) => {\n const state = itemState(index, hoverIndex, selectedIndex);\n const visible = showPoints || state !== \"default\";\n if (!visible) return null;\n return (\n <circle\n key={index}\n data-refineui=\"chart-point\"\n data-state={state}\n cx={x}\n cy={y}\n r={CHART_POINT_RADIUS}\n fill={stroke}\n stroke={pointRing}\n strokeWidth={CHART_POINT_STROKE}\n />\n );\n })}\n </g>\n );\n}\n\nexport function ChartAxisLabels({\n labels,\n align = \"bar\",\n className,\n ...props\n}: ChartAxisLabelsProps) {\n const { hoverIndex, selectedIndex, setLabels } = useChartContext(\"ChartAxisLabels\");\n const count = labels.length;\n const centerAt = align === \"line\" ? linePointCenterRatio : barBandCenterRatio;\n\n useLayoutEffect(() => {\n setLabels(labels);\n }, [labels, setLabels]);\n\n return (\n <div\n data-refineui=\"chart-axis-labels\"\n data-align={align}\n className={clsx(chartStyles.xAxis, className)}\n {...props}\n >\n {labels.map((label, index) => {\n const state = itemState(index, hoverIndex, selectedIndex);\n return (\n <span\n key={`${label}-${index}`}\n data-state={state}\n className={clsx(\n chartStyles.xAxisLabel,\n state !== \"default\" && chartStyles.xAxisLabelActive,\n )}\n style={{ left: `${centerAt(index, count)}%` }}\n >\n {label}\n </span>\n );\n })}\n </div>\n );\n}\n\nexport function ChartLegend({ className, ...props }: ChartLegendProps) {\n return (\n <ul\n data-refineui=\"chart-legend\"\n className={clsx(chartStyles.legend, className)}\n {...props}\n />\n );\n}\n\nexport function ChartLegendItem({\n seriesColor,\n className,\n children,\n style,\n ...props\n}: ChartLegendItemProps) {\n return (\n <li\n data-refineui=\"chart-legend-item\"\n data-series-color={seriesColor}\n className={clsx(chartStyles.legendItem, className)}\n {...props}\n >\n <span\n aria-hidden\n className={chartStyles.legendSwatch}\n style={{ backgroundColor: seriesColorToken(seriesColor), ...style }}\n />\n {children}\n </li>\n );\n}\n","import { clsx } from \"clsx\";\nimport { componentTypographyTokens } from \"../../tokens/componentTypographyTokens\";\nimport { componentTextClass } from \"../../typography\";\n\nexport const chartStyles = {\n root: \"flex w-full min-w-0 flex-col gap-refineui-size-medium\",\n body: \"grid w-full min-w-0 grid-cols-[auto_minmax(0,1fr)] grid-rows-[minmax(0,1fr)_auto_auto] items-stretch gap-x-refineui-size-medium\",\n plotColumn: \"contents\",\n plotFrame: \"relative col-start-2 row-start-1 min-w-0\",\n plot: \"block h-auto w-full min-w-0 aspect-[5/2] overflow-visible\",\n yAxis: \"relative col-start-1 row-start-1 min-w-refineui-foundation-size-400 pe-refineui-size-x-small\",\n yAxisTick: clsx(\n componentTextClass(componentTypographyTokens.chart.axisLabel),\n \"absolute end-0 -translate-y-1/2 whitespace-nowrap text-end tabular-nums text-refineui-alias-foreground-tertiary\",\n ),\n xAxis: \"relative col-start-2 row-start-2 mt-refineui-size-small h-refineui-foundation-size-240\",\n xAxisLabel: clsx(\n componentTextClass(componentTypographyTokens.chart.axisLabel),\n \"absolute top-0 -translate-x-1/2 truncate text-refineui-alias-foreground-tertiary\",\n \"transition-colors duration-[var(--refineui-motion-duration-fast)] ease-[var(--refineui-motion-easing-ease-out)]\",\n ),\n xAxisLabelActive: \"text-refineui-alias-foreground-primary\",\n tooltip: clsx(\n \"pointer-events-none absolute z-refineui-popup flex flex-col gap-refineui-size-xxx-small\",\n \"rounded-refineui-medium border-refineui-thin border-refineui-alias-border-default\",\n \"bg-refineui-alias-surface-popover px-refineui-size-medium py-refineui-size-small shadow-refineui-8light\",\n ),\n tooltipLabel: clsx(\n componentTextClass(componentTypographyTokens.chart.tooltipLabel),\n \"text-refineui-alias-foreground-secondary\",\n ),\n tooltipValue: clsx(\n componentTextClass(componentTypographyTokens.chart.tooltipValue),\n \"tabular-nums text-refineui-alias-foreground-primary\",\n ),\n legend: \"col-start-2 row-start-3 mt-refineui-size-medium flex flex-wrap items-center justify-start gap-x-refineui-size-x-large gap-y-refineui-size-x-small\",\n legendItem: clsx(\n componentTextClass(componentTypographyTokens.chart.legendLabel),\n \"flex items-center gap-refineui-size-x-small text-refineui-alias-foreground-secondary\",\n ),\n legendSwatch: \"size-refineui-foundation-size-80 shrink-0 rounded-refineui-small\",\n} as const;\n","import { borderRadii, foundationSizes, spacings } from \"@refineui/tokens\";\n\n/**\n * Reference plot space — 5:2 dashboard cartesian (shadcn chart height, not 16:9).\n * CSS `aspect-[5/2]` + matching viewBox keeps radii circular.\n */\nexport const CHART_VIEWBOX_WIDTH = 800;\nexport const CHART_VIEWBOX_HEIGHT = 320;\n\nexport const CHART_PLOT_PADDING_TOP = parseFloat(spacings.sizeMedium);\nexport const CHART_PLOT_PADDING_BOTTOM = parseFloat(spacings.sizeXXSmall);\nexport const CHART_PLOT_PADDING_X = parseFloat(spacings.sizeMedium);\n\nexport const CHART_BAR_RADIUS = parseFloat(borderRadii.roundedMedium);\n/** Slim bars with gutter — no px cap; band fill is the only width rule. */\nexport const CHART_BAR_BAND_FILL = 0.5;\n\nexport const CHART_POINT_RADIUS = parseFloat(foundationSizes.foundationSize40);\nexport const CHART_POINT_STROKE = parseFloat(foundationSizes.foundationSize20);\n\n/** Tooltip flips to the left / below when the pointer is past these plot ratios. */\nexport const CHART_TOOLTIP_FLIP_X = 0.75;\nexport const CHART_TOOLTIP_FLIP_Y = 0.25;\n\nexport type ChartPoint = { x: number; y: number };\n\nexport function clampValue(n: number) {\n if (Number.isNaN(n)) return 0;\n return Math.max(0, n);\n}\n\n/** Round scale maximum to readable ticks (MUI / Recharts-style). */\nexport function niceMax(rawMax: number) {\n if (rawMax <= 0) return 1;\n const magnitude = 10 ** Math.floor(Math.log10(rawMax));\n const normalized = rawMax / magnitude;\n let niceUnit: number;\n if (normalized <= 1) niceUnit = 1;\n else if (normalized <= 2) niceUnit = 2;\n else if (normalized <= 5) niceUnit = 5;\n else niceUnit = 10;\n return niceUnit * magnitude;\n}\n\nexport function resolveChartScale(values: number[], max?: number) {\n const peak = values.reduce((acc, v) => Math.max(acc, clampValue(v)), 0);\n const scaleMax = max !== undefined && max > 0 ? max : niceMax(peak);\n return scaleMax > 0 ? scaleMax : 1;\n}\n\nexport function yAxisTicks(scaleMax: number, lines: number) {\n const count = Math.max(2, lines);\n return Array.from({ length: count }, (_, index) => (scaleMax / (count - 1)) * index);\n}\n\nexport function plotHeight() {\n return CHART_VIEWBOX_HEIGHT - CHART_PLOT_PADDING_TOP - CHART_PLOT_PADDING_BOTTOM;\n}\n\nexport function plotWidth() {\n return CHART_VIEWBOX_WIDTH - CHART_PLOT_PADDING_X * 2;\n}\n\nexport function plotBaselineY() {\n return CHART_PLOT_PADDING_TOP + plotHeight();\n}\n\nexport function viewBoxYToPercent(y: number) {\n return (y / CHART_VIEWBOX_HEIGHT) * 100;\n}\n\nexport function viewBoxXToPercent(x: number) {\n return (x / CHART_VIEWBOX_WIDTH) * 100;\n}\n\nexport function clampPlotX(x: number) {\n return Math.min(CHART_VIEWBOX_WIDTH - CHART_PLOT_PADDING_X, Math.max(CHART_PLOT_PADDING_X, x));\n}\n\nexport function clampPlotY(y: number) {\n return Math.min(plotBaselineY(), Math.max(CHART_PLOT_PADDING_TOP, y));\n}\n\nexport function pointerFromClient(\n bounds: { left: number; top: number; width: number; height: number },\n clientX: number,\n clientY: number,\n) {\n const xRatio = bounds.width === 0 ? 0 : (clientX - bounds.left) / bounds.width;\n const yRatio = bounds.height === 0 ? 0 : (clientY - bounds.top) / bounds.height;\n return {\n x: clampPlotX(xRatio * CHART_VIEWBOX_WIDTH),\n y: clampPlotY(yRatio * CHART_VIEWBOX_HEIGHT),\n };\n}\n\nexport function indexFromPlotX(x: number, count: number) {\n const band = barBandWidth(count);\n if (count <= 0 || band <= 0) return 0;\n const inner = x - CHART_PLOT_PADDING_X;\n return Math.min(count - 1, Math.max(0, Math.floor(inner / band)));\n}\n\nexport function nearestLineIndex(x: number, count: number) {\n if (count <= 0) return 0;\n if (count === 1) return 0;\n const step = plotWidth() / (count - 1);\n const raw = (x - CHART_PLOT_PADDING_X) / step;\n return Math.min(count - 1, Math.max(0, Math.round(raw)));\n}\n\nexport function hoverIndexFromPlotX(x: number, count: number, align: \"bar\" | \"line\") {\n return align === \"line\" ? nearestLineIndex(x, count) : indexFromPlotX(x, count);\n}\n\nexport function barBandWidth(count: number) {\n return count > 0 ? plotWidth() / count : 0;\n}\n\nexport function barLayout(count: number) {\n const band = barBandWidth(count);\n const barWidth = band * CHART_BAR_BAND_FILL;\n return { band, barWidth };\n}\n\nexport function barX(index: number, count: number) {\n const { band, barWidth } = barLayout(count);\n return CHART_PLOT_PADDING_X + index * band + (band - barWidth) / 2;\n}\n\nexport function barBandCenterRatio(index: number, count: number) {\n const { band } = barLayout(count);\n const center = CHART_PLOT_PADDING_X + index * band + band / 2;\n return viewBoxXToPercent(center);\n}\n\nexport function linePointCenterRatio(index: number, count: number) {\n const width = plotWidth();\n const step = count === 1 ? 0 : width / (count - 1);\n const x = CHART_PLOT_PADDING_X + step * index;\n return viewBoxXToPercent(x);\n}\n\nexport function valueToY(value: number, scaleMax: number) {\n const ratio = clampValue(value) / scaleMax;\n const height = plotHeight();\n return CHART_PLOT_PADDING_TOP + height - ratio * height;\n}\n\nexport function gridLineY(scaleMax: number, tick: number) {\n return valueToY(tick, scaleMax);\n}\n\nexport function linePointCoords(values: number[], scaleMax: number): ChartPoint[] {\n const count = values.length;\n if (count === 0) return [];\n const width = plotWidth();\n const step = count === 1 ? 0 : width / (count - 1);\n return values.map((value, index) => ({\n x: CHART_PLOT_PADDING_X + step * index,\n y: valueToY(value, scaleMax),\n }));\n}\n\n/** Fritsch–Carlson monotone cubic — Recharts `type=\"monotone\"`. */\nexport function monotoneLinePath(coords: ChartPoint[]) {\n if (coords.length === 0) return \"\";\n if (coords.length === 1) return `M ${coords[0].x} ${coords[0].y}`;\n\n const n = coords.length;\n const dx: number[] = [];\n const m: number[] = [];\n for (let i = 0; i < n - 1; i += 1) {\n dx[i] = coords[i + 1].x - coords[i].x;\n const dy = coords[i + 1].y - coords[i].y;\n m[i] = dx[i] !== 0 ? dy / dx[i] : 0;\n }\n\n const d: number[] = [m[0]];\n for (let i = 1; i < n - 1; i += 1) {\n if (m[i - 1] * m[i] <= 0) {\n d[i] = 0;\n } else {\n const span = dx[i - 1] + dx[i];\n d[i] =\n span !== 0\n ? (3 * span) / ((span + dx[i]) / m[i - 1] + (span + dx[i - 1]) / m[i])\n : 0;\n }\n }\n d[n - 1] = m[n - 2];\n\n let path = `M ${coords[0].x} ${coords[0].y}`;\n for (let i = 0; i < n - 1; i += 1) {\n const x1 = coords[i].x;\n const y1 = coords[i].y;\n const x2 = coords[i + 1].x;\n const y2 = coords[i + 1].y;\n const h = dx[i];\n path += ` C ${x1 + h / 3} ${y1 + (d[i] * h) / 3} ${x2 - h / 3} ${y2 - (d[i + 1] * h) / 3} ${x2} ${y2}`;\n }\n return path;\n}\n\nexport function monotoneAreaPath(coords: ChartPoint[], baselineY: number) {\n if (coords.length === 0) return \"\";\n const first = coords[0];\n const last = coords[coords.length - 1];\n return `${monotoneLinePath(coords)} L ${last.x} ${baselineY} L ${first.x} ${baselineY} Z`;\n}\n\n/** Bar path with rounded top corners only — shadcn `radius={[4,4,0,0]}`. */\nexport function barPathTopRounded(x: number, y: number, width: number, height: number, radius: number) {\n const r = Math.min(radius, width / 2, height);\n if (r <= 0 || height <= 0) {\n return `M ${x} ${y + height} L ${x} ${y} L ${x + width} ${y} L ${x + width} ${y + height} Z`;\n }\n return [\n `M ${x} ${y + height}`,\n `L ${x} ${y + r}`,\n `Q ${x} ${y} ${x + r} ${y}`,\n `L ${x + width - r} ${y}`,\n `Q ${x + width} ${y} ${x + width} ${y + r}`,\n `L ${x + width} ${y + height}`,\n \"Z\",\n ].join(\" \");\n}\n\nexport function formatAxisTick(value: number) {\n if (Number.isInteger(value)) return String(value);\n return value.toFixed(1);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","names":["import_utilities","import_tokens","import_tokens","import_tokens","import_clsx","import_jsx_runtime","Button","import_clsx","import_react","import_jsx_runtime","import_clsx","import_react","import_clsx","import_jsx_runtime","import_clsx","import_react","import_tokens","import_jsx_runtime","SearchFieldInput","import_clsx","import_jsx_runtime","import_clsx","import_clsx","import_jsx_runtime","import_clsx","import_clsx","import_jsx_runtime","import_clsx","import_clsx","import_jsx_runtime","import_clsx","import_jsx_runtime","import_clsx","import_jsx_runtime","import_clsx","import_jsx_runtime","import_clsx","import_jsx_runtime","import_clsx","import_jsx_runtime","import_clsx","import_jsx_runtime","import_clsx","import_jsx_runtime","import_clsx","import_react","import_tokens","import_color","import_jsx_runtime","import_clsx","import_react","import_clsx","import_react","import_jsx_runtime","RadioInput","import_jsx_runtime","import_clsx","import_react","import_tokens","import_react","import_clsx","import_react","import_clsx","import_react","import_clsx","import_tokens","import_jsx_runtime","ScrollArea","ScrollAreaViewport","import_jsx_runtime","ScrollAreaRegion","import_clsx","import_jsx_runtime","SelectTrigger","SelectContent","gap","SelectViewport","import_clsx","import_jsx_runtime","import_clsx","import_tokens","import_jsx_runtime","import_clsx","import_react","import_tokens","import_clsx","import_react","import_react_dom","import_tokens","import_color","import_react","import_clsx","import_jsx_runtime","DialogTrigger","import_clsx","import_tokens","import_jsx_runtime","useIsomorphicLayoutEffect","useControllableString","CommandInput","CommandItem","import_clsx","import_react","import_color","import_tokens","import_color","import_react","import_clsx","import_color","import_jsx_runtime","import_jsx_runtime","import_clsx","import_jsx_runtime","import_clsx","import_tokens","import_react","import_jsx_runtime","import_clsx","import_jsx_runtime","import_clsx","import_jsx_runtime","import_clsx","import_jsx_runtime","import_clsx","import_react","import_clsx","import_jsx_runtime","import_clsx","import_jsx_runtime","import_clsx","import_react","import_clsx","import_jsx_runtime","TabsTrigger","import_clsx","import_react","import_clsx","import_jsx_runtime","SegmentedControlItem","import_clsx","import_react","import_clsx","import_jsx_runtime","Table","import_react","import_clsx","import_react","import_tokens","import_animation","import_tokens","import_jsx_runtime","import_clsx","import_react","import_jsx_runtime","import_clsx","import_react","import_jsx_runtime","import_clsx","import_react","import_jsx_runtime","import_clsx","import_react","import_tokens","import_jsx_runtime","BreadcrumbEllipsisTrigger","import_clsx","import_react","import_clsx","import_jsx_runtime","import_clsx","import_react","import_tokens","import_clsx","import_jsx_runtime","import_clsx","import_clsx","import_jsx_runtime","import_clsx","import_jsx_runtime","gap","import_clsx","import_jsx_runtime","gap","import_clsx","import_jsx_runtime","padding","import_clsx","import_jsx_runtime","padding","radius","import_clsx","import_jsx_runtime","import_clsx","import_react","import_react_dom","import_tokens","import_animation","import_color","import_react","import_clsx","import_jsx_runtime","PANEL_MS","SCRIM_MS","EASING","DrawerTrigger","import_clsx","import_react","import_react_dom","import_tokens","import_color","import_clsx","import_react","import_react","useIsomorphicLayoutEffect","subscribeScrollAndScrollableAncestors","gap","import_jsx_runtime","useIsomorphicLayoutEffect","subscribeScrollAndScrollableAncestors","import_clsx","import_color","import_clsx","import_clsx","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_clsx","import_tokens","import_jsx_runtime","import_clsx","import_react","import_react_dom","import_tokens","import_animation","import_clsx","import_jsx_runtime","useIsomorphicLayoutEffect","subscribeScrollAndScrollableAncestors","SUBMENU_OPEN_DELAY_MS","SUBMENU_CLOSE_DELAY_MS","isFinePointerHover","import_clsx","import_react","import_tokens","import_animation","import_clsx","import_jsx_runtime","useIsomorphicLayoutEffect","import_clsx","import_clsx","import_jsx_runtime","import_clsx","import_react","import_tokens","import_animation","import_clsx","import_jsx_runtime","import_clsx","import_tokens","import_color","import_clsx","import_jsx_runtime","import_clsx","import_react","import_tokens","import_color","import_react","import_jsx_runtime","import_clsx","import_jsx_runtime","import_clsx","import_react","import_jsx_runtime","import_clsx","import_tokens","import_react","import_clsx","import_jsx_runtime","CarouselItem","import_clsx","import_react","import_clsx","import_jsx_runtime","import_clsx","import_tokens","import_react","import_clsx","import_jsx_runtime","resolveState","import_clsx","import_react","import_clsx","import_jsx_runtime","size","import_clsx","import_react","import_tokens","import_jsx_runtime","clampValue","import_clsx","import_react","import_react_dom","import_tokens","import_animation","import_clsx","import_jsx_runtime","useIsomorphicLayoutEffect","Toast","import_clsx","import_react","import_react","import_tokens","import_animation","usePrefersReducedMotion","import_clsx","import_tokens","import_jsx_runtime","usePrefersReducedMotion","import_clsx","import_react","import_jsx_runtime","import_clsx","import_react","import_jsx_runtime","import_clsx","import_react","import_jsx_runtime","import_clsx","import_react","import_tokens","import_color","import_react","import_tokens","import_clsx","tri","import_jsx_runtime","import_clsx","import_react","import_tokens","import_color","import_clsx","import_tokens","radius","import_jsx_runtime"]}