@uselets/ui 1.20.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/README.md +309 -426
  2. package/dist/as-child-Dxg3Xo1G.d.ts +41 -0
  3. package/dist/cli/uselets.mjs +5 -4
  4. package/dist/cli/uselets.mjs.map +1 -1
  5. package/dist/components/accordion.d.ts +12 -8
  6. package/dist/components/accordion.js +1 -1
  7. package/dist/components/accordion.js.map +1 -1
  8. package/dist/components/alert-dialog.d.ts +20 -15
  9. package/dist/components/alert-dialog.js +1 -1
  10. package/dist/components/alert-dialog.js.map +1 -1
  11. package/dist/components/alert.d.ts +1 -1
  12. package/dist/components/anchor.d.ts +3 -5
  13. package/dist/components/anchor.js +1 -1
  14. package/dist/components/anchor.js.map +1 -1
  15. package/dist/components/area-chart.d.ts +54 -0
  16. package/dist/components/area-chart.js +1 -1
  17. package/dist/components/area-chart.js.map +1 -1
  18. package/dist/components/avatar.d.ts +12 -7
  19. package/dist/components/avatar.js +1 -1
  20. package/dist/components/avatar.js.map +1 -1
  21. package/dist/components/badge.d.ts +3 -5
  22. package/dist/components/badge.js +1 -1
  23. package/dist/components/badge.js.map +1 -1
  24. package/dist/components/bar-chart.d.ts +48 -0
  25. package/dist/components/bar-chart.js +1 -1
  26. package/dist/components/bar-chart.js.map +1 -1
  27. package/dist/components/bottom-nav.d.ts +7 -3
  28. package/dist/components/bottom-nav.js +1 -1
  29. package/dist/components/bottom-nav.js.map +1 -1
  30. package/dist/components/breadcrumb.d.ts +3 -4
  31. package/dist/components/breadcrumb.js +1 -1
  32. package/dist/components/breadcrumb.js.map +1 -1
  33. package/dist/components/button-group.d.ts +3 -4
  34. package/dist/components/button-group.js +1 -1
  35. package/dist/components/button-group.js.map +1 -1
  36. package/dist/components/button.d.ts +8 -4
  37. package/dist/components/button.js +1 -1
  38. package/dist/components/button.js.map +1 -1
  39. package/dist/components/calendar.d.ts +4 -0
  40. package/dist/components/calendar.js +1 -1
  41. package/dist/components/calendar.js.map +1 -1
  42. package/dist/components/card.d.ts +4 -0
  43. package/dist/components/card.js.map +1 -1
  44. package/dist/components/carousel.d.ts +11 -3
  45. package/dist/components/carousel.js +1 -1
  46. package/dist/components/carousel.js.map +1 -1
  47. package/dist/components/center.d.ts +1 -1
  48. package/dist/components/chart.js +4 -4
  49. package/dist/components/checkbox.d.ts +14 -4
  50. package/dist/components/checkbox.js +1 -1
  51. package/dist/components/checkbox.js.map +1 -1
  52. package/dist/components/collapsible.d.ts +8 -7
  53. package/dist/components/collapsible.js +1 -1
  54. package/dist/components/collapsible.js.map +1 -1
  55. package/dist/components/combobox.d.ts +48 -26
  56. package/dist/components/combobox.js +1 -1
  57. package/dist/components/combobox.js.map +1 -1
  58. package/dist/components/command.d.ts +16 -2
  59. package/dist/components/command.js +1 -1
  60. package/dist/components/command.js.map +1 -1
  61. package/dist/components/container.d.ts +1 -1
  62. package/dist/components/data-table.d.ts +39 -0
  63. package/dist/components/data-table.js +1 -1
  64. package/dist/components/data-table.js.map +1 -1
  65. package/dist/components/date-range-picker.d.ts +24 -2
  66. package/dist/components/date-range-picker.js +1 -1
  67. package/dist/components/date-range-picker.js.map +1 -1
  68. package/dist/components/dialog.d.ts +33 -15
  69. package/dist/components/dialog.js +1 -1
  70. package/dist/components/dialog.js.map +1 -1
  71. package/dist/components/direction.d.ts +7 -0
  72. package/dist/components/direction.js +1 -0
  73. package/dist/components/donut-chart.d.ts +12 -0
  74. package/dist/components/donut-chart.js +1 -1
  75. package/dist/components/donut-chart.js.map +1 -1
  76. package/dist/components/drawer.d.ts +33 -15
  77. package/dist/components/drawer.js +1 -1
  78. package/dist/components/drawer.js.map +1 -1
  79. package/dist/components/dropdown-menu.d.ts +36 -26
  80. package/dist/components/dropdown-menu.js +1 -1
  81. package/dist/components/dropdown-menu.js.map +1 -1
  82. package/dist/components/dropzone.d.ts +19 -0
  83. package/dist/components/dropzone.js +1 -1
  84. package/dist/components/dropzone.js.map +1 -1
  85. package/dist/components/field.d.ts +16 -4
  86. package/dist/components/field.js +1 -1
  87. package/dist/components/field.js.map +1 -1
  88. package/dist/components/flex.d.ts +1 -1
  89. package/dist/components/grid.d.ts +13 -0
  90. package/dist/components/grid.js.map +1 -1
  91. package/dist/components/group.d.ts +1 -1
  92. package/dist/components/heading.d.ts +3 -5
  93. package/dist/components/heading.js +1 -1
  94. package/dist/components/heading.js.map +1 -1
  95. package/dist/components/hover-card.d.ts +7 -6
  96. package/dist/components/hover-card.js +1 -1
  97. package/dist/components/hover-card.js.map +1 -1
  98. package/dist/components/input-group.d.ts +2 -2
  99. package/dist/components/input-group.js +1 -1
  100. package/dist/components/input-group.js.map +1 -1
  101. package/dist/components/input-otp.d.ts +4 -2
  102. package/dist/components/input-otp.js +1 -1
  103. package/dist/components/input-otp.js.map +1 -1
  104. package/dist/components/input.d.ts +1 -1
  105. package/dist/components/input.js +1 -1
  106. package/dist/components/input.js.map +1 -1
  107. package/dist/components/label.d.ts +3 -4
  108. package/dist/components/label.js +1 -1
  109. package/dist/components/label.js.map +1 -1
  110. package/dist/components/list.d.ts +8 -5
  111. package/dist/components/list.js +1 -1
  112. package/dist/components/list.js.map +1 -1
  113. package/dist/components/logo.d.ts +113 -0
  114. package/dist/components/marker.d.ts +4 -5
  115. package/dist/components/marker.js +1 -1
  116. package/dist/components/marker.js.map +1 -1
  117. package/dist/components/mask-input.d.ts +6 -0
  118. package/dist/components/mask-input.js.map +1 -1
  119. package/dist/components/native-select.d.ts +5 -1
  120. package/dist/components/native-select.js +1 -1
  121. package/dist/components/native-select.js.map +1 -1
  122. package/dist/components/navigation-menu.d.ts +19 -20
  123. package/dist/components/navigation-menu.js +1 -1
  124. package/dist/components/navigation-menu.js.map +1 -1
  125. package/dist/components/number-field.d.ts +18 -13
  126. package/dist/components/number-field.js +1 -1
  127. package/dist/components/number-field.js.map +1 -1
  128. package/dist/components/pagination.d.ts +9 -0
  129. package/dist/components/pagination.js +1 -1
  130. package/dist/components/pagination.js.map +1 -1
  131. package/dist/components/phone-input.d.ts +3 -0
  132. package/dist/components/phone-input.js +1 -1
  133. package/dist/components/phone-input.js.map +1 -1
  134. package/dist/components/pie-chart.d.ts +53 -0
  135. package/dist/components/pie-chart.js +1 -1
  136. package/dist/components/pie-chart.js.map +1 -1
  137. package/dist/components/popover.d.ts +13 -12
  138. package/dist/components/popover.js +1 -1
  139. package/dist/components/popover.js.map +1 -1
  140. package/dist/components/progress.d.ts +9 -3
  141. package/dist/components/progress.js +1 -1
  142. package/dist/components/progress.js.map +1 -1
  143. package/dist/components/radio-group.d.ts +20 -6
  144. package/dist/components/radio-group.js +1 -1
  145. package/dist/components/radio-group.js.map +1 -1
  146. package/dist/components/resizable.d.ts +1 -0
  147. package/dist/components/resizable.js.map +1 -1
  148. package/dist/components/ring-progress.d.ts +9 -1
  149. package/dist/components/ring-progress.js.map +1 -1
  150. package/dist/components/scroll-area.d.ts +3 -3
  151. package/dist/components/scroll-area.js +1 -1
  152. package/dist/components/scroll-area.js.map +1 -1
  153. package/dist/components/select.d.ts +25 -20
  154. package/dist/components/select.js +1 -1
  155. package/dist/components/select.js.map +1 -1
  156. package/dist/components/separator.d.ts +9 -4
  157. package/dist/components/separator.js +1 -1
  158. package/dist/components/separator.js.map +1 -1
  159. package/dist/components/sidebar.d.ts +63 -18
  160. package/dist/components/sidebar.js +1 -1
  161. package/dist/components/sidebar.js.map +1 -1
  162. package/dist/components/simple-grid.d.ts +7 -0
  163. package/dist/components/simple-grid.js +1 -1
  164. package/dist/components/simple-grid.js.map +1 -1
  165. package/dist/components/skeleton.d.ts +4 -0
  166. package/dist/components/skeleton.js.map +1 -1
  167. package/dist/components/slider.d.ts +2 -2
  168. package/dist/components/slider.js +1 -1
  169. package/dist/components/slider.js.map +1 -1
  170. package/dist/components/spinner.d.ts +1 -1
  171. package/dist/components/stack.d.ts +1 -1
  172. package/dist/components/stepper.d.ts +46 -25
  173. package/dist/components/stepper.js +1 -1
  174. package/dist/components/stepper.js.map +1 -1
  175. package/dist/components/switch.d.ts +17 -3
  176. package/dist/components/switch.js +1 -1
  177. package/dist/components/switch.js.map +1 -1
  178. package/dist/components/table.d.ts +10 -1
  179. package/dist/components/table.js +1 -1
  180. package/dist/components/table.js.map +1 -1
  181. package/dist/components/tabs.d.ts +14 -10
  182. package/dist/components/tabs.js +1 -1
  183. package/dist/components/tabs.js.map +1 -1
  184. package/dist/components/text.d.ts +3 -5
  185. package/dist/components/text.js +1 -1
  186. package/dist/components/text.js.map +1 -1
  187. package/dist/components/textarea.d.ts +1 -1
  188. package/dist/components/textarea.js +1 -1
  189. package/dist/components/textarea.js.map +1 -1
  190. package/dist/components/theme.d.ts +12 -0
  191. package/dist/components/theme.js +1 -1
  192. package/dist/components/theme.js.map +1 -1
  193. package/dist/components/timeline.d.ts +25 -1
  194. package/dist/components/timeline.js +1 -1
  195. package/dist/components/timeline.js.map +1 -1
  196. package/dist/components/toggle-group.d.ts +16 -6
  197. package/dist/components/toggle-group.js +1 -1
  198. package/dist/components/toggle-group.js.map +1 -1
  199. package/dist/components/toggle.d.ts +4 -4
  200. package/dist/components/toggle.js +1 -1
  201. package/dist/components/toggle.js.map +1 -1
  202. package/dist/components/tooltip.d.ts +15 -8
  203. package/dist/components/tooltip.js +1 -1
  204. package/dist/components/tooltip.js.map +1 -1
  205. package/dist/components/unstyled-button.d.ts +3 -5
  206. package/dist/components/unstyled-button.js +1 -1
  207. package/dist/components/unstyled-button.js.map +1 -1
  208. package/dist/components/visibility.d.ts +2 -0
  209. package/dist/components/visibility.js +1 -1
  210. package/dist/components/visibility.js.map +1 -1
  211. package/dist/hooks/use-breakpoint-value.d.ts +1 -0
  212. package/dist/hooks/use-breakpoint-value.js.map +1 -1
  213. package/dist/hooks/use-breakpoint.d.ts +1 -0
  214. package/dist/hooks/use-breakpoint.js.map +1 -1
  215. package/dist/hooks/use-disclosure.d.ts +3 -0
  216. package/dist/hooks/use-disclosure.js +1 -1
  217. package/dist/hooks/use-disclosure.js.map +1 -1
  218. package/dist/hooks/use-document-visibility.d.ts +1 -0
  219. package/dist/hooks/use-document-visibility.js.map +1 -1
  220. package/dist/hooks/use-hotkeys.d.ts +1 -1
  221. package/dist/hooks/use-idle.d.ts +9 -0
  222. package/dist/hooks/use-idle.js.map +1 -1
  223. package/dist/hooks/use-interval.d.ts +1 -0
  224. package/dist/hooks/use-interval.js.map +1 -1
  225. package/dist/hooks/use-local-storage.d.ts +6 -0
  226. package/dist/hooks/use-local-storage.js +1 -1
  227. package/dist/hooks/use-local-storage.js.map +1 -1
  228. package/dist/hooks/use-mask.d.ts +1 -0
  229. package/dist/hooks/use-mask.js.map +1 -1
  230. package/dist/hooks/use-mobile.d.ts +1 -0
  231. package/dist/hooks/use-mobile.js.map +1 -1
  232. package/dist/index.d.ts +7 -5
  233. package/dist/index.js +1 -1
  234. package/dist/lib/as-child.d.ts +2 -0
  235. package/dist/lib/as-child.js +2 -0
  236. package/dist/lib/as-child.js.map +1 -0
  237. package/dist/lib/utils.d.ts +1 -1
  238. package/dist/logo--R3_XDgA.js.map +1 -1
  239. package/dist/resolve-class-name-BurP8ngI.js +2 -0
  240. package/dist/resolve-class-name-BurP8ngI.js.map +1 -0
  241. package/dist/skills/uselets-ui/SKILL.md +8 -3
  242. package/dist/skills/uselets-ui/references/component-catalog.md +31 -16
  243. package/dist/skills/uselets-ui/references/migration-v1-to-v2.md +599 -0
  244. package/dist/skills/uselets-ui/references/package-guide.md +7 -7
  245. package/dist/styles/base.css +21 -0
  246. package/dist/{use-hotkeys-DOjcX9Tt.d.ts → use-hotkeys-D1_TEIwN.d.ts} +2 -1
  247. package/dist/use-hotkeys-YDJmGWX6.js.map +1 -1
  248. package/package.json +16 -17
  249. package/skills/uselets-ui/SKILL.md +8 -3
  250. package/skills/uselets-ui/references/component-catalog.md +31 -16
  251. package/skills/uselets-ui/references/migration-v1-to-v2.md +599 -0
  252. package/skills/uselets-ui/references/package-guide.md +7 -7
@@ -1,50 +1,72 @@
1
1
  import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
2
+ import { t as AsChildPrimitiveProps } from "../as-child-Dxg3Xo1G.js";
2
3
  import * as React from "react";
3
- import { Combobox as Combobox$1 } from "@base-ui/react";
4
+ import { Combobox as Combobox$1 } from "@base-ui/react/combobox";
4
5
  //#region src/components/combobox.d.ts
5
- export type ComboboxProps = React.ComponentProps<typeof Combobox$1.Root>;
6
+ export type ComboboxProps<Value = unknown, Multiple extends boolean | undefined = false> = Combobox$1.Root.Props<Value, Multiple>;
6
7
  export type ComboboxValueProps = Combobox$1.Value.Props;
7
- export type ComboboxTriggerProps = Combobox$1.Trigger.Props & {
8
+ export type ComboboxTriggerProps = AsChildPrimitiveProps<typeof Combobox$1.Trigger> & {
9
+ /** Icon of the trigger button. Defaults to an up/down chevron. */
8
10
  icon?: React.ReactNode;
9
11
  };
10
- export type ComboboxClearProps = Combobox$1.Clear.Props;
11
- export type ComboboxInputProps = Combobox$1.Input.Props & {
12
+ export type ComboboxClearProps = Omit<Combobox$1.Clear.Props, 'render'>;
13
+ export type ComboboxInputProps = Omit<Combobox$1.Input.Props, 'render' | 'className'> & {
14
+ /** Classes for the input group that wraps the input and its buttons. */
15
+ className?: string;
16
+ /** Icon shown at the start of the input. */
12
17
  icon?: React.ReactNode;
18
+ /** Replaces the icon of the trigger button. */
13
19
  triggerIcon?: React.ReactNode;
20
+ /**
21
+ * Shows the button that opens the list.
22
+ * @default true
23
+ */
14
24
  showTrigger?: boolean;
25
+ /**
26
+ * Shows a button that clears the value.
27
+ * @default false
28
+ */
15
29
  showClear?: boolean;
16
30
  };
17
- export type ComboboxContentProps = Combobox$1.Popup.Props & Pick<Combobox$1.Positioner.Props, 'side' | 'align' | 'sideOffset' | 'alignOffset' | 'anchor' | 'positionMethod' | 'collisionBoundary' | 'collisionPadding' | 'sticky' | 'arrowPadding' | 'disableAnchorTracking' | 'collisionAvoidance'> & Pick<Combobox$1.Portal.Props, 'container'>;
18
- export type ComboboxListProps = Combobox$1.List.Props;
19
- export type ComboboxItemProps = Combobox$1.Item.Props;
20
- export type ComboboxGroupProps = Combobox$1.Group.Props;
21
- export type ComboboxLabelProps = Combobox$1.GroupLabel.Props;
31
+ export type ComboboxContentProps = AsChildPrimitiveProps<typeof Combobox$1.Popup> & Pick<Combobox$1.Positioner.Props, 'side' | 'align' | 'sideOffset' | 'alignOffset' | 'anchor' | 'positionMethod' | 'collisionBoundary' | 'collisionPadding' | 'sticky' | 'arrowPadding' | 'disableAnchorTracking' | 'collisionAvoidance'> & Pick<Combobox$1.Portal.Props, 'container' | 'keepMounted'>;
32
+ export type ComboboxListProps = AsChildPrimitiveProps<typeof Combobox$1.List>;
33
+ export type ComboboxItemProps = AsChildPrimitiveProps<typeof Combobox$1.Item>;
34
+ export type ComboboxGroupProps = AsChildPrimitiveProps<typeof Combobox$1.Group>;
35
+ export type ComboboxLabelProps = AsChildPrimitiveProps<typeof Combobox$1.GroupLabel>;
22
36
  export type ComboboxCollectionProps = Combobox$1.Collection.Props;
23
- export type ComboboxEmptyProps = Combobox$1.Empty.Props;
24
- export type ComboboxSeparatorProps = Combobox$1.Separator.Props;
25
- export type ComboboxChipsProps = React.ComponentPropsWithRef<typeof Combobox$1.Chips> & Combobox$1.Chips.Props & {
37
+ export type ComboboxEmptyProps = AsChildPrimitiveProps<typeof Combobox$1.Empty>;
38
+ export type ComboboxSeparatorProps = AsChildPrimitiveProps<typeof Combobox$1.Separator>;
39
+ export type ComboboxChipsProps = AsChildPrimitiveProps<typeof Combobox$1.Chips> & {
40
+ /**
41
+ * Shows a button that removes all chips.
42
+ * @default false
43
+ */
26
44
  showClear?: boolean;
27
45
  };
28
- export type ComboboxChipProps = Combobox$1.Chip.Props & {
46
+ export type ComboboxChipProps = AsChildPrimitiveProps<typeof Combobox$1.Chip> & {
47
+ /**
48
+ * Shows the button that removes this chip.
49
+ * @default true
50
+ */
29
51
  showRemove?: boolean;
30
52
  };
31
- export type ComboboxChipsInputProps = Combobox$1.Input.Props;
53
+ export type ComboboxChipsInputProps = Omit<Combobox$1.Input.Props, 'render'>;
32
54
  declare const Combobox: typeof Combobox$1.Root;
33
55
  declare function ComboboxValue({ ...props }: ComboboxValueProps): React.JSX.Element;
34
- declare function ComboboxTrigger({ className, children, icon, ...props }: ComboboxTriggerProps): React.JSX.Element;
56
+ declare function ComboboxTrigger({ className, children, icon, asChild, ...props }: ComboboxTriggerProps): React.JSX.Element;
35
57
  declare function ComboboxClear({ className, ...props }: ComboboxClearProps): React.JSX.Element;
36
58
  declare function ComboboxInput({ className, children, disabled, icon, id, showTrigger, showClear, triggerIcon, ...props }: ComboboxInputProps): React.JSX.Element;
37
- declare function ComboboxContent({ className, side, sideOffset, align, alignOffset, anchor, container, positionMethod, collisionBoundary, collisionPadding, sticky, arrowPadding, disableAnchorTracking, collisionAvoidance, ...props }: ComboboxContentProps): React.JSX.Element;
38
- declare function ComboboxList({ className, ...props }: ComboboxListProps): React.JSX.Element;
39
- declare function ComboboxItem({ className, children, ...props }: ComboboxItemProps): React.JSX.Element;
40
- declare function ComboboxGroup({ className, ...props }: ComboboxGroupProps): React.JSX.Element;
41
- declare function ComboboxLabel({ className, ...props }: ComboboxLabelProps): React.JSX.Element;
59
+ declare function ComboboxContent({ className, asChild, children, side, sideOffset, align, alignOffset, anchor, container, keepMounted, positionMethod, collisionBoundary, collisionPadding, sticky, arrowPadding, disableAnchorTracking, collisionAvoidance, ...props }: ComboboxContentProps): React.JSX.Element;
60
+ declare function ComboboxList({ className, asChild, children, ...props }: ComboboxListProps): React.JSX.Element;
61
+ declare function ComboboxItem({ className, children, asChild, ...props }: ComboboxItemProps): React.JSX.Element;
62
+ declare function ComboboxGroup({ className, asChild, children, ...props }: ComboboxGroupProps): React.JSX.Element;
63
+ declare function ComboboxLabel({ className, asChild, children, ...props }: ComboboxLabelProps): React.JSX.Element;
42
64
  declare function ComboboxCollection({ ...props }: ComboboxCollectionProps): React.JSX.Element;
43
- declare function ComboboxEmpty({ className, ...props }: ComboboxEmptyProps): React.JSX.Element;
44
- declare function ComboboxSeparator({ className, ...props }: ComboboxSeparatorProps): React.JSX.Element;
45
- declare function ComboboxChips({ className, children, showClear, ...props }: ComboboxChipsProps): React.JSX.Element;
46
- declare function ComboboxChip({ className, children, showRemove, ...props }: ComboboxChipProps): React.JSX.Element;
47
- declare function ComboboxChipsInput({ className, id, ...props }: ComboboxChipsInputProps): React.JSX.Element;
65
+ declare function ComboboxEmpty({ className, asChild, children, ...props }: ComboboxEmptyProps): React.JSX.Element;
66
+ declare function ComboboxSeparator({ className, asChild, children, ...props }: ComboboxSeparatorProps): React.JSX.Element;
67
+ declare function ComboboxChips({ className, children, showClear, asChild, ...props }: ComboboxChipsProps): React.JSX.Element;
68
+ declare function ComboboxChip({ className, children, showRemove, asChild, ...props }: ComboboxChipProps): React.JSX.Element;
69
+ declare function ComboboxChipsInput({ className, id, 'aria-invalid': ariaInvalid, ...props }: ComboboxChipsInputProps): React.JSX.Element;
48
70
  declare function useComboboxAnchor(): React.RefObject<HTMLDivElement | null>;
49
71
  //#endregion
50
72
  export { Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxClear, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, useComboboxAnchor };
@@ -1,2 +1,2 @@
1
- import"../rolldown-runtime-BhWHdk3m.js";import{cn as e}from"../lib/utils.js";import{Button as t}from"./button.js";import{useFieldControlId as n}from"./field.js";import{InputGroup as r,InputGroupAddon as i,InputGroupButton as a,InputGroupInput as o}from"./input-group.js";import{IconCheck as s,IconSelector as c,IconX as l}from"@tabler/icons-react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import*as f from"react";import{Combobox as p}from"@base-ui/react";const m=p.Root;function ComboboxValue({...e}){return/* @__PURE__ */ u(p.Value,{"data-slot":`combobox-value`,...e})}function ComboboxTrigger({className:t,children:n,icon:r=/* @__PURE__ */ u(c,{className:`pointer-events-none size-4 text-muted-foreground`}),...i}){return/* @__PURE__ */ d(p.Trigger,{"data-slot":`combobox-trigger`,className:e(`[&_svg:not([class*='size-'])]:size-4`,t),...i,children:[n,r]})}function ComboboxClear({className:t,...n}){return/* @__PURE__ */ u(p.Clear,{"data-slot":`combobox-clear`,render:/* @__PURE__ */ u(a,{variant:`ghost`,size:`icon-xs`}),className:e(t),...n,children:/* @__PURE__ */ u(l,{className:`pointer-events-none`})})}function ComboboxInput({className:t,children:s,disabled:c=!1,icon:l,id:f,showTrigger:m=!0,showClear:h=!1,triggerIcon:g,..._}){let v=n(f);return/* @__PURE__ */ d(r,{className:e(`w-auto`,t),children:[l&&/* @__PURE__ */ u(i,{align:`inline-start`,children:l}),/* @__PURE__ */ u(p.Input,{id:v,render:/* @__PURE__ */ u(o,{disabled:c}),..._}),/* @__PURE__ */ d(i,{align:`inline-end`,children:[m&&/* @__PURE__ */ u(a,{size:`icon-xs`,variant:`ghost`,asChild:!0,"data-slot":`input-group-button`,className:`group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent`,disabled:c,children:/* @__PURE__ */ u(ComboboxTrigger,{icon:g})}),h&&/* @__PURE__ */ u(ComboboxClear,{disabled:c})]}),s]})}function ComboboxContent({className:t,side:n=`bottom`,sideOffset:r=6,align:i=`start`,alignOffset:a=0,anchor:o,container:s,positionMethod:c=`absolute`,collisionBoundary:l,collisionPadding:d,sticky:f,arrowPadding:m,disableAnchorTracking:h,collisionAvoidance:g,..._}){return/* @__PURE__ */ u(p.Portal,{container:s,className:`absolute`,children:/* @__PURE__ */ u(p.Positioner,{side:n,sideOffset:r,align:i,alignOffset:a,anchor:o,positionMethod:c,collisionBoundary:l,collisionPadding:d,sticky:f,arrowPadding:m,disableAnchorTracking:h,collisionAvoidance:g,className:`isolate z-50`,children:/* @__PURE__ */ u(p.Popup,{"data-slot":`combobox-content`,"data-chips":!!o,className:e(`group/combobox-content max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+(--spacing(7)))] origin-(--transform-origin) overflow-hidden rounded-lg text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!`,t),..._})})})}function ComboboxList({className:t,...n}){return/* @__PURE__ */ u(p.List,{"data-slot":`combobox-list`,className:e(`no-scrollbar max-h-[min(calc(--spacing(72)-(--spacing(9))),calc(var(--available-height)-(--spacing(9))))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0`,t),...n})}function ComboboxItem({className:t,children:n,...r}){return/* @__PURE__ */ d(p.Item,{"data-slot":`combobox-item`,className:e(`relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,t),...r,children:[n,/* @__PURE__ */ u(p.ItemIndicator,{render:/* @__PURE__ */ u(`span`,{className:`pointer-events-none absolute right-2 flex size-4 items-center justify-center`}),children:/* @__PURE__ */ u(s,{className:`pointer-events-none`})})]})}function ComboboxGroup({className:t,...n}){return/* @__PURE__ */ u(p.Group,{"data-slot":`combobox-group`,className:e(t),...n})}function ComboboxLabel({className:t,...n}){return/* @__PURE__ */ u(p.GroupLabel,{"data-slot":`combobox-label`,className:e(`px-2 py-1.5 text-xs text-muted-foreground`,t),...n})}function ComboboxCollection({...e}){return/* @__PURE__ */ u(p.Collection,{"data-slot":`combobox-collection`,...e})}function ComboboxEmpty({className:t,...n}){return/* @__PURE__ */ u(p.Empty,{"data-slot":`combobox-empty`,className:e(`hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex`,t),...n})}function ComboboxSeparator({className:t,...n}){return/* @__PURE__ */ u(p.Separator,{"data-slot":`combobox-separator`,className:e(`-mx-1 my-1 h-px bg-border`,t),...n})}function ComboboxChips({className:n,children:r,showClear:i=!1,...a}){return/* @__PURE__ */ d(p.Chips,{"data-slot":`combobox-chips`,className:e(`flex min-h-8 overflow-hidden flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40`,n),...a,children:[r,i&&/* @__PURE__ */ u(p.Clear,{"data-slot":`combobox-chips-clear`,render:/* @__PURE__ */ u(t,{variant:`ghost`,color:`zinc`,size:`icon-xs`}),className:`shrink-0 self-center size-5`,children:/* @__PURE__ */ u(l,{className:`pointer-events-none`})})]})}function ComboboxChip({className:n,children:r,showRemove:i=!0,...a}){return/* @__PURE__ */ d(p.Chip,{"data-slot":`combobox-chip`,className:e(`flex h-[calc(--spacing(5.25))] w-fit text-left max-w-full items-center justify-start gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0`,n),...a,children:[/* @__PURE__ */ u(`span`,{className:`flex-1 truncate`,children:r}),i&&/* @__PURE__ */ u(p.ChipRemove,{render:/* @__PURE__ */ u(t,{variant:`ghost`,color:`zinc`,size:`icon-xs`}),className:`-ml-1 opacity-50 shrink-0 hover:opacity-100`,"data-slot":`combobox-chip-remove`,children:/* @__PURE__ */ u(l,{className:`pointer-events-none`})})]})}function ComboboxChipsInput({className:t,id:r,...i}){let a=n(r);return/* @__PURE__ */ u(p.Input,{id:a,"data-slot":`combobox-chip-input`,className:e(`min-w-16 flex-1 outline-none`,t),...i})}function useComboboxAnchor(){return f.useRef(null)}export{m as Combobox,ComboboxChip,ComboboxChips,ComboboxChipsInput,ComboboxClear,ComboboxCollection,ComboboxContent,ComboboxEmpty,ComboboxGroup,ComboboxInput,ComboboxItem,ComboboxLabel,ComboboxList,ComboboxSeparator,ComboboxTrigger,ComboboxValue,useComboboxAnchor};
1
+ import"../rolldown-runtime-BhWHdk3m.js";import{toAsChildRenderProps as e}from"../lib/as-child.js";import{cn as t}from"../lib/utils.js";import{t as n}from"../resolve-class-name-BurP8ngI.js";import{Button as r}from"./button.js";import{useFieldControlId as i,useFieldInvalid as a}from"./field.js";import{InputGroup as o,InputGroupAddon as s,InputGroupButton as c,InputGroupInput as l}from"./input-group.js";import{IconCheck as u,IconSelector as d,IconX as f}from"@tabler/icons-react";import*as p from"react";import{jsx as m,jsxs as h}from"react/jsx-runtime";import{Combobox as g}from"@base-ui/react/combobox";const _=g.Root;function ComboboxValue({...e}){return/* @__PURE__ */ m(g.Value,{"data-slot":`combobox-value`,...e})}function ComboboxTrigger({className:r,children:i,icon:a=/* @__PURE__ */ m(d,{className:`pointer-events-none size-4 text-muted-foreground`}),asChild:o,...s}){return/* @__PURE__ */ h(g.Trigger,{"data-slot":`combobox-trigger`,className:e=>t(`[&_svg:not([class*='size-'])]:size-4`,n(r,e)),...s,...e(o,i),children:[!o&&i,!o&&a]})}function ComboboxClear({className:e,...r}){return/* @__PURE__ */ m(g.Clear,{"data-slot":`combobox-clear`,render:/* @__PURE__ */ m(c,{variant:`ghost`,size:`icon-xs`}),className:r=>t(n(e,r)),...r,children:/* @__PURE__ */ m(f,{className:`pointer-events-none`})})}function ComboboxInput({className:e,children:n,disabled:r=!1,icon:a,id:u,showTrigger:d=!0,showClear:f=!1,triggerIcon:p,..._}){let v=i(u);return/* @__PURE__ */ h(o,{className:t(`w-auto`,e),children:[a&&/* @__PURE__ */ m(s,{align:`inline-start`,children:a}),/* @__PURE__ */ m(g.Input,{id:v,render:/* @__PURE__ */ m(l,{disabled:r}),..._}),/* @__PURE__ */ h(s,{align:`inline-end`,children:[d&&/* @__PURE__ */ m(c,{size:`icon-xs`,variant:`ghost`,asChild:!0,"data-slot":`input-group-button`,className:`group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent`,disabled:r,children:/* @__PURE__ */ m(ComboboxTrigger,{icon:p})}),f&&/* @__PURE__ */ m(ComboboxClear,{disabled:r})]}),n]})}function ComboboxContent({className:r,asChild:i,children:a,side:o=`bottom`,sideOffset:s=6,align:c=`start`,alignOffset:l=0,anchor:u,container:d,keepMounted:f,positionMethod:p=`absolute`,collisionBoundary:h,collisionPadding:_,sticky:v,arrowPadding:y,disableAnchorTracking:b,collisionAvoidance:x,...S}){return/* @__PURE__ */ m(g.Portal,{container:d,keepMounted:f,children:/* @__PURE__ */ m(g.Positioner,{side:o,sideOffset:s,align:c,alignOffset:l,anchor:u,positionMethod:p,collisionBoundary:h,collisionPadding:_,sticky:v,arrowPadding:y,disableAnchorTracking:b,collisionAvoidance:x,className:`isolate z-50`,children:/* @__PURE__ */ m(g.Popup,{"data-slot":`combobox-content`,"data-chips":!!u,className:e=>t(`group/combobox-content max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+(--spacing(7)))] origin-(--transform-origin) overflow-hidden rounded-lg text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!`,n(r,e)),...S,...e(i,a)})})})}function ComboboxList({className:r,asChild:i,children:a,...o}){return/* @__PURE__ */ m(g.List,{"data-slot":`combobox-list`,className:e=>t(`no-scrollbar max-h-[min(calc(--spacing(72)-(--spacing(9))),calc(var(--available-height)-(--spacing(9))))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0`,n(r,e)),...o,...e(i,a)})}function ComboboxItem({className:r,children:i,asChild:a,...o}){return/* @__PURE__ */ h(g.Item,{"data-slot":`combobox-item`,className:e=>t(`relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,n(r,e)),...o,...e(a,i),children:[!a&&i,!a&&/* @__PURE__ */ m(g.ItemIndicator,{render:/* @__PURE__ */ m(`span`,{className:`pointer-events-none absolute right-2 flex size-4 items-center justify-center`}),children:/* @__PURE__ */ m(u,{className:`pointer-events-none`})})]})}function ComboboxGroup({className:r,asChild:i,children:a,...o}){return/* @__PURE__ */ m(g.Group,{"data-slot":`combobox-group`,className:e=>t(n(r,e)),...o,...e(i,a)})}function ComboboxLabel({className:r,asChild:i,children:a,...o}){return/* @__PURE__ */ m(g.GroupLabel,{"data-slot":`combobox-label`,className:e=>t(`px-2 py-1.5 text-xs text-muted-foreground`,n(r,e)),...o,...e(i,a)})}function ComboboxCollection({...e}){return/* @__PURE__ */ m(g.Collection,{"data-slot":`combobox-collection`,...e})}function ComboboxEmpty({className:r,asChild:i,children:a,...o}){return/* @__PURE__ */ m(g.Empty,{"data-slot":`combobox-empty`,className:e=>t(`hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex`,n(r,e)),...o,...e(i,a)})}function ComboboxSeparator({className:r,asChild:i,children:a,...o}){return/* @__PURE__ */ m(g.Separator,{"data-slot":`combobox-separator`,className:e=>t(`-mx-1 my-1 h-px bg-border`,n(r,e)),...o,...e(i,a)})}function ComboboxChips({className:i,children:a,showClear:o=!1,asChild:s,...c}){return/* @__PURE__ */ h(g.Chips,{"data-slot":`combobox-chips`,className:e=>t(`flex min-h-8 overflow-hidden flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40`,n(i,e)),...c,...e(s,a),children:[!s&&a,o&&!s&&/* @__PURE__ */ m(g.Clear,{"data-slot":`combobox-chips-clear`,render:/* @__PURE__ */ m(r,{variant:`ghost`,color:`zinc`,size:`icon-xs`}),className:`shrink-0 self-center size-5`,children:/* @__PURE__ */ m(f,{className:`pointer-events-none`})})]})}function ComboboxChip({className:i,children:a,showRemove:o=!0,asChild:s,...c}){return/* @__PURE__ */ h(g.Chip,{"data-slot":`combobox-chip`,className:e=>t(`flex h-[calc(--spacing(5.25))] w-fit text-left max-w-full items-center justify-start gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0`,n(i,e)),...c,...e(s,a),children:[!s&&/* @__PURE__ */ m(`span`,{className:`flex-1 truncate`,children:a}),o&&!s&&/* @__PURE__ */ m(g.ChipRemove,{render:/* @__PURE__ */ m(r,{variant:`ghost`,color:`zinc`,size:`icon-xs`}),className:`-ml-1 opacity-50 shrink-0 hover:opacity-100`,"data-slot":`combobox-chip-remove`,children:/* @__PURE__ */ m(f,{className:`pointer-events-none`})})]})}function ComboboxChipsInput({className:e,id:r,"aria-invalid":o,...s}){let c=i(r),l=a(o);return/* @__PURE__ */ m(g.Input,{id:c,"aria-invalid":l,"data-slot":`combobox-chip-input`,className:r=>t(`min-w-16 flex-1 outline-none`,n(e,r)),...s})}function useComboboxAnchor(){return p.useRef(null)}export{_ as Combobox,ComboboxChip,ComboboxChips,ComboboxChipsInput,ComboboxClear,ComboboxCollection,ComboboxContent,ComboboxEmpty,ComboboxGroup,ComboboxInput,ComboboxItem,ComboboxLabel,ComboboxList,ComboboxSeparator,ComboboxTrigger,ComboboxValue,useComboboxAnchor};
2
2
  //# sourceMappingURL=combobox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.js","names":["ComboboxPrimitive","React","Combobox$1","Combobox","props","IconSelector","cn","className","children","icon","InputGroupButton","IconX","fieldControlId","useFieldControlId","id","InputGroup","InputGroupAddon","InputGroupInput","showTrigger","triggerIcon","showClear","anchor","IconCheck","Button","showRemove"],"sources":["../../src/components/combobox.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { Combobox as ComboboxPrimitive } from '@base-ui/react'\nimport { IconCheck, IconSelector, IconX } from '@tabler/icons-react'\n\nimport { cn } from '../lib/utils'\nimport { Button } from './button'\nimport { useFieldControlId } from './field'\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from './input-group'\n\nexport type ComboboxProps = React.ComponentProps<typeof ComboboxPrimitive.Root>\n\nexport type ComboboxValueProps = ComboboxPrimitive.Value.Props\n\nexport type ComboboxTriggerProps = ComboboxPrimitive.Trigger.Props & {\n icon?: React.ReactNode\n}\n\nexport type ComboboxClearProps = ComboboxPrimitive.Clear.Props\n\nexport type ComboboxInputProps = ComboboxPrimitive.Input.Props & {\n icon?: React.ReactNode\n triggerIcon?: React.ReactNode\n showTrigger?: boolean\n showClear?: boolean\n}\n\nexport type ComboboxContentProps = ComboboxPrimitive.Popup.Props &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n | 'side'\n | 'align'\n | 'sideOffset'\n | 'alignOffset'\n | 'anchor'\n | 'positionMethod'\n | 'collisionBoundary'\n | 'collisionPadding'\n | 'sticky'\n | 'arrowPadding'\n | 'disableAnchorTracking'\n | 'collisionAvoidance'\n > &\n Pick<ComboboxPrimitive.Portal.Props, 'container'>\n\nexport type ComboboxListProps = ComboboxPrimitive.List.Props\n\nexport type ComboboxItemProps = ComboboxPrimitive.Item.Props\n\nexport type ComboboxGroupProps = ComboboxPrimitive.Group.Props\n\nexport type ComboboxLabelProps = ComboboxPrimitive.GroupLabel.Props\n\nexport type ComboboxCollectionProps = ComboboxPrimitive.Collection.Props\n\nexport type ComboboxEmptyProps = ComboboxPrimitive.Empty.Props\n\nexport type ComboboxSeparatorProps = ComboboxPrimitive.Separator.Props\n\nexport type ComboboxChipsProps = React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> &\n ComboboxPrimitive.Chips.Props & {\n showClear?: boolean\n }\n\nexport type ComboboxChipProps = ComboboxPrimitive.Chip.Props & {\n showRemove?: boolean\n}\n\nexport type ComboboxChipsInputProps = ComboboxPrimitive.Input.Props\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxValueProps) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n className,\n children,\n icon = <IconSelector className=\"pointer-events-none size-4 text-muted-foreground\" />,\n ...props\n}: ComboboxTriggerProps) {\n return (\n <ComboboxPrimitive.Trigger\n data-slot=\"combobox-trigger\"\n className={cn(\"[&_svg:not([class*='size-'])]:size-4\", className)}\n {...props}\n >\n {children}\n {icon}\n </ComboboxPrimitive.Trigger>\n )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxClearProps) {\n return (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n className={cn(className)}\n {...props}\n >\n <IconX className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled = false,\n icon,\n id,\n showTrigger = true,\n showClear = false,\n triggerIcon,\n ...props\n}: ComboboxInputProps) {\n const fieldControlId = useFieldControlId(id)\n\n return (\n <InputGroup className={cn('w-auto', className)}>\n {icon && <InputGroupAddon align=\"inline-start\">{icon}</InputGroupAddon>}\n <ComboboxPrimitive.Input id={fieldControlId} render={<InputGroupInput disabled={disabled} />} {...props} />\n <InputGroupAddon align=\"inline-end\">\n {showTrigger && (\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"ghost\"\n asChild\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n >\n <ComboboxTrigger icon={triggerIcon} />\n </InputGroupButton>\n )}\n {showClear && <ComboboxClear disabled={disabled} />}\n </InputGroupAddon>\n {children}\n </InputGroup>\n )\n}\n\nfunction ComboboxContent({\n className,\n side = 'bottom',\n sideOffset = 6,\n align = 'start',\n alignOffset = 0,\n anchor,\n container,\n positionMethod = 'absolute',\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n ...props\n}: ComboboxContentProps) {\n return (\n <ComboboxPrimitive.Portal container={container} className=\"absolute\">\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n positionMethod={positionMethod}\n collisionBoundary={collisionBoundary}\n collisionPadding={collisionPadding}\n sticky={sticky}\n arrowPadding={arrowPadding}\n disableAnchorTracking={disableAnchorTracking}\n collisionAvoidance={collisionAvoidance}\n className=\"isolate z-50\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n data-chips={!!anchor}\n className={cn(\n 'group/combobox-content max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+(--spacing(7)))] origin-(--transform-origin) overflow-hidden rounded-lg text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!',\n className\n )}\n {...props}\n />\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n )\n}\n\nfunction ComboboxList({ className, ...props }: ComboboxListProps) {\n return (\n <ComboboxPrimitive.List\n data-slot=\"combobox-list\"\n className={cn(\n 'no-scrollbar max-h-[min(calc(--spacing(72)-(--spacing(9))),calc(var(--available-height)-(--spacing(9))))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxItem({ className, children, ...props }: ComboboxItemProps) {\n return (\n <ComboboxPrimitive.Item\n data-slot=\"combobox-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ComboboxPrimitive.ItemIndicator\n render={<span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />}\n >\n <IconCheck className=\"pointer-events-none\" />\n </ComboboxPrimitive.ItemIndicator>\n </ComboboxPrimitive.Item>\n )\n}\n\nfunction ComboboxGroup({ className, ...props }: ComboboxGroupProps) {\n return <ComboboxPrimitive.Group data-slot=\"combobox-group\" className={cn(className)} {...props} />\n}\n\nfunction ComboboxLabel({ className, ...props }: ComboboxLabelProps) {\n return (\n <ComboboxPrimitive.GroupLabel\n data-slot=\"combobox-label\"\n className={cn('px-2 py-1.5 text-xs text-muted-foreground', className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxCollectionProps) {\n return <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n}\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxEmptyProps) {\n return (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className={cn(\n 'hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ComboboxSeparator({ className, ...props }: ComboboxSeparatorProps) {\n return (\n <ComboboxPrimitive.Separator\n data-slot=\"combobox-separator\"\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n />\n )\n}\n\nfunction ComboboxChips({ className, children, showClear = false, ...props }: ComboboxChipsProps) {\n return (\n <ComboboxPrimitive.Chips\n data-slot=\"combobox-chips\"\n className={cn(\n 'flex min-h-8 overflow-hidden flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40',\n className\n )}\n {...props}\n >\n {children}\n {showClear && (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-chips-clear\"\n render={<Button variant=\"ghost\" color=\"zinc\" size=\"icon-xs\" />}\n className=\"shrink-0 self-center size-5\"\n >\n <IconX className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )}\n </ComboboxPrimitive.Chips>\n )\n}\n\nfunction ComboboxChip({ className, children, showRemove = true, ...props }: ComboboxChipProps) {\n return (\n <ComboboxPrimitive.Chip\n data-slot=\"combobox-chip\"\n className={cn(\n 'flex h-[calc(--spacing(5.25))] w-fit text-left max-w-full items-center justify-start gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0',\n className\n )}\n {...props}\n >\n <span className=\"flex-1 truncate\">{children}</span>\n {showRemove && (\n <ComboboxPrimitive.ChipRemove\n render={<Button variant=\"ghost\" color=\"zinc\" size=\"icon-xs\" />}\n className=\"-ml-1 opacity-50 shrink-0 hover:opacity-100\"\n data-slot=\"combobox-chip-remove\"\n >\n <IconX className=\"pointer-events-none\" />\n </ComboboxPrimitive.ChipRemove>\n )}\n </ComboboxPrimitive.Chip>\n )\n}\n\nfunction ComboboxChipsInput({ className, id, ...props }: ComboboxChipsInputProps) {\n const fieldControlId = useFieldControlId(id)\n\n return (\n <ComboboxPrimitive.Input\n id={fieldControlId}\n data-slot=\"combobox-chip-input\"\n className={cn('min-w-16 flex-1 outline-none', className)}\n {...props}\n />\n )\n}\n\nfunction useComboboxAnchor() {\n return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n Combobox,\n ComboboxChip,\n ComboboxChips,\n ComboboxChipsInput,\n ComboboxClear,\n ComboboxCollection,\n ComboboxContent,\n ComboboxEmpty,\n ComboboxGroup,\n ComboboxInput,\n ComboboxItem,\n ComboboxLabel,\n ComboboxList,\n ComboboxSeparator,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor\n}\n"],"mappings":"gdAsEA,MAAMG,EAAWH,EAAkB,KAEnC,SAAS,cAAc,CAAE,GAAGI,GAA6B,CACvD,MAAO,kBAACJ,EAAkB,MAAnB,CAAyB,YAAU,iBAAiB,GAAII,CAAQ,CAAA,CACzE,CAEA,SAAS,gBAAgB,CACvB,YACA,WACA,OAAO,kBAACC,EAAD,CAAc,UAAU,kDAAoD,CAAA,EACnF,GAAGD,GACoB,CACvB,MACE,kBAACJ,EAAkB,QAAnB,CACE,YAAU,mBACV,UAAWM,EAAG,uCAAwCC,CAAS,EAC/D,GAAIH,EAHN,SAAA,CAKGI,EACAC,CACwB,GAE/B,CAEA,SAAS,cAAc,CAAE,YAAW,GAAGL,GAA6B,CAClE,MACE,kBAACJ,EAAkB,MAAnB,CACE,YAAU,iBACV,OAAQ,kBAACU,EAAD,CAAkB,QAAQ,QAAQ,KAAK,SAAW,CAAA,EAC1D,UAAWJ,EAAGC,CAAS,EACvB,GAAIH,EAEJ,SAAA,kBAACO,EAAD,CAAO,UAAU,qBAAuB,CAAA,CACjB,CAAA,CAE7B,CAEA,SAAS,cAAc,CACrB,YACA,WACA,WAAW,GACX,OACA,KACA,cAAc,GACd,YAAY,GACZ,cACA,GAAGP,GACkB,CACrB,IAAMQ,EAAiBC,EAAkBC,CAAE,EAE3C,MACE,kBAACC,EAAD,CAAY,UAAWT,EAAG,SAAUC,CAAS,EAA7C,SAAA,CACGE,GAAQ,kBAACO,EAAD,CAAiB,MAAM,eAAgB,SAAAP,CAAsB,CAAA,EACtE,kBAACT,EAAkB,MAAnB,CAAyB,GAAIY,EAAgB,OAAQ,kBAACK,EAAD,CAA2B,UAAW,CAAA,EAAG,GAAIb,CAAQ,CAAA,EAC1G,kBAACY,EAAD,CAAiB,MAAM,aAAvB,SAAA,CACGE,GACC,kBAACR,EAAD,CACE,KAAK,UACL,QAAQ,QACR,QAAA,GACA,YAAU,qBACV,UAAU,sFACA,WAEV,SAAA,kBAAC,gBAAD,CAAiB,KAAMS,CAAc,CAAA,CACrB,CAAA,EAEnBC,GAAa,kBAAC,cAAD,CAAyB,UAAW,CAAA,CACnC,IAChBZ,CACS,GAEhB,CAEA,SAAS,gBAAgB,CACvB,YACA,OAAO,SACP,aAAa,EACb,QAAQ,QACR,cAAc,EACd,SACA,YACA,iBAAiB,WACjB,oBACA,mBACA,SACA,eACA,wBACA,qBACA,GAAGJ,GACoB,CACvB,MACE,kBAACJ,EAAkB,OAAnB,CAAqC,YAAW,UAAU,WACxD,SAAA,kBAACA,EAAkB,WAAnB,CACQ,OACM,aACL,QACM,cACL,SACQ,iBACG,oBACD,mBACV,SACM,eACS,wBACH,qBACpB,UAAU,eAEV,SAAA,kBAACA,EAAkB,MAAnB,CACE,YAAU,mBACV,aAAY,CAAC,CAACqB,EACd,UAAWf,EACT,g+CACAC,CACF,EACA,GAAIH,CACL,CAAA,CAC2B,CAAA,CACN,CAAA,CAE9B,CAEA,SAAS,aAAa,CAAE,YAAW,GAAGA,GAA4B,CAChE,MACE,kBAACJ,EAAkB,KAAnB,CACE,YAAU,gBACV,UAAWM,EACT,8KACAC,CACF,EACA,GAAIH,CACL,CAAA,CAEL,CAEA,SAAS,aAAa,CAAE,YAAW,WAAU,GAAGA,GAA4B,CAC1E,MACE,kBAACJ,EAAkB,KAAnB,CACE,YAAU,gBACV,UAAWM,EACT,kZACAC,CACF,EACA,GAAIH,EANN,SAAA,CAQGI,EACD,kBAACR,EAAkB,cAAnB,CACE,OAAQ,kBAAC,OAAD,CAAM,UAAU,8EAAgF,CAAA,EAExG,SAAA,kBAACsB,EAAD,CAAW,UAAU,qBAAuB,CAAA,CACb,CAAA,CACX,GAE5B,CAEA,SAAS,cAAc,CAAE,YAAW,GAAGlB,GAA6B,CAClE,MAAO,kBAACJ,EAAkB,MAAnB,CAAyB,YAAU,iBAAiB,UAAWM,EAAGC,CAAS,EAAG,GAAIH,CAAQ,CAAA,CACnG,CAEA,SAAS,cAAc,CAAE,YAAW,GAAGA,GAA6B,CAClE,MACE,kBAACJ,EAAkB,WAAnB,CACE,YAAU,iBACV,UAAWM,EAAG,4CAA6CC,CAAS,EACpE,GAAIH,CACL,CAAA,CAEL,CAEA,SAAS,mBAAmB,CAAE,GAAGA,GAAkC,CACjE,MAAO,kBAACJ,EAAkB,WAAnB,CAA8B,YAAU,sBAAsB,GAAII,CAAQ,CAAA,CACnF,CAEA,SAAS,cAAc,CAAE,YAAW,GAAGA,GAA6B,CAClE,MACE,kBAACJ,EAAkB,MAAnB,CACE,YAAU,iBACV,UAAWM,EACT,qHACAC,CACF,EACA,GAAIH,CACL,CAAA,CAEL,CAEA,SAAS,kBAAkB,CAAE,YAAW,GAAGA,GAAiC,CAC1E,MACE,kBAACJ,EAAkB,UAAnB,CACE,YAAU,qBACV,UAAWM,EAAG,4BAA6BC,CAAS,EACpD,GAAIH,CACL,CAAA,CAEL,CAEA,SAAS,cAAc,CAAE,YAAW,WAAU,YAAY,GAAO,GAAGA,GAA6B,CAC/F,MACE,kBAACJ,EAAkB,MAAnB,CACE,YAAU,iBACV,UAAWM,EACT,kdACAC,CACF,EACA,GAAIH,EANN,SAAA,CAQGI,EACAY,GACC,kBAACpB,EAAkB,MAAnB,CACE,YAAU,uBACV,OAAQ,kBAACuB,EAAD,CAAQ,QAAQ,QAAQ,MAAM,OAAO,KAAK,SAAW,CAAA,EAC7D,UAAU,8BAEV,SAAA,kBAACZ,EAAD,CAAO,UAAU,qBAAuB,CAAA,CACjB,CAAA,CAEJ,GAE7B,CAEA,SAAS,aAAa,CAAE,YAAW,WAAU,aAAa,GAAM,GAAGP,GAA4B,CAC7F,MACE,kBAACJ,EAAkB,KAAnB,CACE,YAAU,gBACV,UAAWM,EACT,iTACAC,CACF,EACA,GAAIH,EANN,SAAA,CAQE,kBAAC,OAAD,CAAM,UAAU,kBAAmB,UAAe,CAAA,EACjDoB,GACC,kBAACxB,EAAkB,WAAnB,CACE,OAAQ,kBAACuB,EAAD,CAAQ,QAAQ,QAAQ,MAAM,OAAO,KAAK,SAAW,CAAA,EAC7D,UAAU,8CACV,YAAU,uBAEV,SAAA,kBAACZ,EAAD,CAAO,UAAU,qBAAuB,CAAA,CACZ,CAAA,CAEV,GAE5B,CAEA,SAAS,mBAAmB,CAAE,YAAW,KAAI,GAAGP,GAAkC,CAChF,IAAMQ,EAAiBC,EAAkBC,CAAE,EAE3C,MACE,kBAACd,EAAkB,MAAnB,CACE,GAAIY,EACJ,YAAU,sBACV,UAAWN,EAAG,+BAAgCC,CAAS,EACvD,GAAIH,CACL,CAAA,CAEL,CAEA,SAAS,mBAAoB,CAC3B,OAAOH,EAAM,OAA8B,IAAI,CACjD"}
1
+ {"version":3,"file":"combobox.js","names":["ComboboxPrimitive","resolveClassName","React","Combobox$1","Combobox","props","IconSelector","cn","className","state","toAsChildRenderProps","asChild","children","icon","InputGroupButton","IconX","fieldControlId","useFieldControlId","id","InputGroup","InputGroupAddon","InputGroupInput","showTrigger","triggerIcon","showClear","anchor","IconCheck","Button","showRemove","ariaInvalid","invalid","useFieldInvalid"],"sources":["../../src/components/combobox.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { Combobox as ComboboxPrimitive } from '@base-ui/react/combobox'\nimport { IconCheck, IconSelector, IconX } from '@tabler/icons-react'\n\nimport { type AsChildPrimitiveProps, toAsChildRenderProps } from '../lib/as-child'\nimport { cn } from '../lib/utils'\nimport { resolveClassName } from '../utils/resolve-class-name'\nimport { Button } from './button'\nimport { useFieldControlId, useFieldInvalid } from './field'\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from './input-group'\n\nexport type ComboboxProps<Value = unknown, Multiple extends boolean | undefined = false> = ComboboxPrimitive.Root.Props<\n Value,\n Multiple\n>\n\nexport type ComboboxValueProps = ComboboxPrimitive.Value.Props\n\nexport type ComboboxTriggerProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Trigger> & {\n /** Icon of the trigger button. Defaults to an up/down chevron. */\n icon?: React.ReactNode\n}\n\nexport type ComboboxClearProps = Omit<ComboboxPrimitive.Clear.Props, 'render'>\n\nexport type ComboboxInputProps = Omit<ComboboxPrimitive.Input.Props, 'render' | 'className'> & {\n /** Classes for the input group that wraps the input and its buttons. */\n className?: string\n /** Icon shown at the start of the input. */\n icon?: React.ReactNode\n /** Replaces the icon of the trigger button. */\n triggerIcon?: React.ReactNode\n /**\n * Shows the button that opens the list.\n * @default true\n */\n showTrigger?: boolean\n /**\n * Shows a button that clears the value.\n * @default false\n */\n showClear?: boolean\n}\n\nexport type ComboboxContentProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Popup> &\n Pick<\n ComboboxPrimitive.Positioner.Props,\n | 'side'\n | 'align'\n | 'sideOffset'\n | 'alignOffset'\n | 'anchor'\n | 'positionMethod'\n | 'collisionBoundary'\n | 'collisionPadding'\n | 'sticky'\n | 'arrowPadding'\n | 'disableAnchorTracking'\n | 'collisionAvoidance'\n > &\n Pick<ComboboxPrimitive.Portal.Props, 'container' | 'keepMounted'>\n\nexport type ComboboxListProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.List>\n\nexport type ComboboxItemProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Item>\n\nexport type ComboboxGroupProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Group>\n\nexport type ComboboxLabelProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.GroupLabel>\n\nexport type ComboboxCollectionProps = ComboboxPrimitive.Collection.Props\n\nexport type ComboboxEmptyProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Empty>\n\nexport type ComboboxSeparatorProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Separator>\n\nexport type ComboboxChipsProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Chips> & {\n /**\n * Shows a button that removes all chips.\n * @default false\n */\n showClear?: boolean\n}\n\nexport type ComboboxChipProps = AsChildPrimitiveProps<typeof ComboboxPrimitive.Chip> & {\n /**\n * Shows the button that removes this chip.\n * @default true\n */\n showRemove?: boolean\n}\n\nexport type ComboboxChipsInputProps = Omit<ComboboxPrimitive.Input.Props, 'render'>\n\nconst Combobox = ComboboxPrimitive.Root\n\nfunction ComboboxValue({ ...props }: ComboboxValueProps) {\n return <ComboboxPrimitive.Value data-slot=\"combobox-value\" {...props} />\n}\n\nfunction ComboboxTrigger({\n className,\n children,\n icon = <IconSelector className=\"pointer-events-none size-4 text-muted-foreground\" />,\n asChild,\n ...props\n}: ComboboxTriggerProps) {\n return (\n <ComboboxPrimitive.Trigger\n data-slot=\"combobox-trigger\"\n className={(state) => cn(\"[&_svg:not([class*='size-'])]:size-4\", resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && children}\n {!asChild && icon}\n </ComboboxPrimitive.Trigger>\n )\n}\n\nfunction ComboboxClear({ className, ...props }: ComboboxClearProps) {\n return (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n className={(state) => cn(resolveClassName(className, state))}\n {...props}\n >\n <IconX className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )\n}\n\nfunction ComboboxInput({\n className,\n children,\n disabled = false,\n icon,\n id,\n showTrigger = true,\n showClear = false,\n triggerIcon,\n ...props\n}: ComboboxInputProps) {\n const fieldControlId = useFieldControlId(id)\n\n return (\n <InputGroup className={cn('w-auto', className)}>\n {icon && <InputGroupAddon align=\"inline-start\">{icon}</InputGroupAddon>}\n <ComboboxPrimitive.Input id={fieldControlId} render={<InputGroupInput disabled={disabled} />} {...props} />\n <InputGroupAddon align=\"inline-end\">\n {showTrigger && (\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"ghost\"\n asChild\n data-slot=\"input-group-button\"\n className=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n disabled={disabled}\n >\n <ComboboxTrigger icon={triggerIcon} />\n </InputGroupButton>\n )}\n {showClear && <ComboboxClear disabled={disabled} />}\n </InputGroupAddon>\n {children}\n </InputGroup>\n )\n}\n\nfunction ComboboxContent({\n className,\n asChild,\n children,\n side = 'bottom',\n sideOffset = 6,\n align = 'start',\n alignOffset = 0,\n anchor,\n container,\n keepMounted,\n positionMethod = 'absolute',\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n ...props\n}: ComboboxContentProps) {\n return (\n <ComboboxPrimitive.Portal container={container} keepMounted={keepMounted}>\n <ComboboxPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n anchor={anchor}\n positionMethod={positionMethod}\n collisionBoundary={collisionBoundary}\n collisionPadding={collisionPadding}\n sticky={sticky}\n arrowPadding={arrowPadding}\n disableAnchorTracking={disableAnchorTracking}\n collisionAvoidance={collisionAvoidance}\n className=\"isolate z-50\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n data-chips={!!anchor}\n className={(state) =>\n cn(\n 'group/combobox-content max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+(--spacing(7)))] origin-(--transform-origin) overflow-hidden rounded-lg text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n )\n}\n\nfunction ComboboxList({ className, asChild, children, ...props }: ComboboxListProps) {\n return (\n <ComboboxPrimitive.List\n data-slot=\"combobox-list\"\n className={(state) =>\n cn(\n 'no-scrollbar max-h-[min(calc(--spacing(72)-(--spacing(9))),calc(var(--available-height)-(--spacing(9))))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction ComboboxItem({ className, children, asChild, ...props }: ComboboxItemProps) {\n return (\n <ComboboxPrimitive.Item\n data-slot=\"combobox-item\"\n className={(state) =>\n cn(\n \"relative flex w-full cursor-default items-center gap-2 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && children}\n {!asChild && (\n <ComboboxPrimitive.ItemIndicator\n render={<span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />}\n >\n <IconCheck className=\"pointer-events-none\" />\n </ComboboxPrimitive.ItemIndicator>\n )}\n </ComboboxPrimitive.Item>\n )\n}\n\nfunction ComboboxGroup({ className, asChild, children, ...props }: ComboboxGroupProps) {\n return (\n <ComboboxPrimitive.Group\n data-slot=\"combobox-group\"\n className={(state) => cn(resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction ComboboxLabel({ className, asChild, children, ...props }: ComboboxLabelProps) {\n return (\n <ComboboxPrimitive.GroupLabel\n data-slot=\"combobox-label\"\n className={(state) => cn('px-2 py-1.5 text-xs text-muted-foreground', resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction ComboboxCollection({ ...props }: ComboboxCollectionProps) {\n return <ComboboxPrimitive.Collection data-slot=\"combobox-collection\" {...props} />\n}\n\nfunction ComboboxEmpty({ className, asChild, children, ...props }: ComboboxEmptyProps) {\n return (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className={(state) =>\n cn(\n 'hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction ComboboxSeparator({ className, asChild, children, ...props }: ComboboxSeparatorProps) {\n return (\n <ComboboxPrimitive.Separator\n data-slot=\"combobox-separator\"\n className={(state) => cn('-mx-1 my-1 h-px bg-border', resolveClassName(className, state))}\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n />\n )\n}\n\nfunction ComboboxChips({ className, children, showClear = false, asChild, ...props }: ComboboxChipsProps) {\n return (\n <ComboboxPrimitive.Chips\n data-slot=\"combobox-chips\"\n className={(state) =>\n cn(\n 'flex min-h-8 overflow-hidden flex-wrap items-center gap-1 rounded-lg border border-input bg-transparent bg-clip-padding px-2.5 py-1 text-sm transition-colors focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && children}\n {showClear && !asChild && (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-chips-clear\"\n render={<Button variant=\"ghost\" color=\"zinc\" size=\"icon-xs\" />}\n className=\"shrink-0 self-center size-5\"\n >\n <IconX className=\"pointer-events-none\" />\n </ComboboxPrimitive.Clear>\n )}\n </ComboboxPrimitive.Chips>\n )\n}\n\nfunction ComboboxChip({ className, children, showRemove = true, asChild, ...props }: ComboboxChipProps) {\n return (\n <ComboboxPrimitive.Chip\n data-slot=\"combobox-chip\"\n className={(state) =>\n cn(\n 'flex h-[calc(--spacing(5.25))] w-fit text-left max-w-full items-center justify-start gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0',\n resolveClassName(className, state)\n )\n }\n {...props}\n {...toAsChildRenderProps(asChild, children)}\n >\n {!asChild && <span className=\"flex-1 truncate\">{children}</span>}\n {showRemove && !asChild && (\n <ComboboxPrimitive.ChipRemove\n render={<Button variant=\"ghost\" color=\"zinc\" size=\"icon-xs\" />}\n className=\"-ml-1 opacity-50 shrink-0 hover:opacity-100\"\n data-slot=\"combobox-chip-remove\"\n >\n <IconX className=\"pointer-events-none\" />\n </ComboboxPrimitive.ChipRemove>\n )}\n </ComboboxPrimitive.Chip>\n )\n}\n\nfunction ComboboxChipsInput({ className, id, 'aria-invalid': ariaInvalid, ...props }: ComboboxChipsInputProps) {\n const fieldControlId = useFieldControlId(id)\n const invalid = useFieldInvalid(ariaInvalid)\n\n return (\n <ComboboxPrimitive.Input\n id={fieldControlId}\n aria-invalid={invalid}\n data-slot=\"combobox-chip-input\"\n className={(state) => cn('min-w-16 flex-1 outline-none', resolveClassName(className, state))}\n {...props}\n />\n )\n}\n\nfunction useComboboxAnchor() {\n return React.useRef<HTMLDivElement | null>(null)\n}\n\nexport {\n Combobox,\n ComboboxChip,\n ComboboxChips,\n ComboboxChipsInput,\n ComboboxClear,\n ComboboxCollection,\n ComboboxContent,\n ComboboxEmpty,\n ComboboxGroup,\n ComboboxInput,\n ComboboxItem,\n ComboboxLabel,\n ComboboxList,\n ComboboxSeparator,\n ComboboxTrigger,\n ComboboxValue,\n useComboboxAnchor\n}\n"],"mappings":"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"}
@@ -4,10 +4,24 @@ import * as React from "react";
4
4
  import { Command as Command$1 } from "cmdk";
5
5
  //#region src/components/command.d.ts
6
6
  export type CommandProps = React.ComponentProps<typeof Command$1>;
7
- export type CommandDialogProps = React.ComponentProps<typeof Dialog> & {
7
+ export type CommandDialogProps = Omit<React.ComponentProps<typeof Dialog>, 'children'> & {
8
+ children?: React.ReactNode;
9
+ /**
10
+ * Dialog title, read by screen readers only.
11
+ * @default 'Command Palette'
12
+ */
8
13
  title?: string;
14
+ /**
15
+ * Dialog description, read by screen readers only.
16
+ * @default 'Search for a command to run...'
17
+ */
9
18
  description?: string;
19
+ /** Classes for the dialog content. */
10
20
  className?: string;
21
+ /**
22
+ * Shows the X button of the dialog.
23
+ * @default false
24
+ */
11
25
  showCloseButton?: boolean;
12
26
  };
13
27
  export type CommandInputProps = React.ComponentProps<typeof Command$1.Input>;
@@ -18,7 +32,7 @@ export type CommandSeparatorProps = React.ComponentProps<typeof Command$1.Separa
18
32
  export type CommandItemProps = React.ComponentProps<typeof Command$1.Item>;
19
33
  export type CommandShortcutProps = React.ComponentProps<'span'>;
20
34
  declare function Command({ className, ...props }: CommandProps): React.JSX.Element;
21
- declare function CommandDialog({ title, description, children, className, showCloseButton, ...props }: CommandDialogProps): React.JSX.Element;
35
+ declare function CommandDialog({ title, description, children, className, showCloseButton, size, ...props }: CommandDialogProps): React.JSX.Element;
22
36
  declare function CommandInput({ className, id, ...props }: CommandInputProps): React.JSX.Element;
23
37
  declare function CommandList({ className, ...props }: CommandListProps): React.JSX.Element;
24
38
  declare function CommandEmpty({ className, ...props }: CommandEmptyProps): React.JSX.Element;
@@ -1,2 +1,2 @@
1
- import"../rolldown-runtime-BhWHdk3m.js";import{cn as e}from"../lib/utils.js";import{useFieldControlId as t}from"./field.js";import{InputGroup as n,InputGroupAddon as r}from"./input-group.js";import{Dialog as i,DialogContent as a,DialogDescription as o,DialogHeader as s,DialogTitle as c}from"./dialog.js";import{IconCheck as l,IconSearch as u}from"@tabler/icons-react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{Command as p}from"cmdk";function Command({className:t,...n}){return/* @__PURE__ */ d(p,{"data-slot":`command`,className:e(`flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground`,t),...n})}function CommandDialog({title:t=`Command Palette`,description:n=`Search for a command to run...`,children:r,className:l,showCloseButton:u=!1,...p}){return/* @__PURE__ */ f(i,{...p,children:[/* @__PURE__ */ f(s,{className:`sr-only`,children:[/* @__PURE__ */ d(c,{children:t}),/* @__PURE__ */ d(o,{children:n})]}),/* @__PURE__ */ d(a,{className:e(`top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0`,l),showCloseButton:u,children:r})]})}function CommandInput({className:i,id:a,...o}){let s=t(a);return/* @__PURE__ */ d(`div`,{"data-slot":`command-input-wrapper`,className:`p-1 pb-0`,children:/* @__PURE__ */ f(n,{className:e(`h-8! rounded-lg! border-input/30 bg-input/30 shadow-none!`,`*:data-[slot=input-group-addon]:pl-2!`),children:[/* @__PURE__ */ d(p.Input,{id:s,"data-slot":`command-input`,className:e(`w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50`,i),...o}),/* @__PURE__ */ d(r,{children:/* @__PURE__ */ d(u,{className:`size-4 shrink-0 opacity-50`})})]})})}function CommandList({className:t,...n}){return/* @__PURE__ */ d(p.List,{"data-slot":`command-list`,className:e(`no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none`,t),...n})}function CommandEmpty({className:t,...n}){return/* @__PURE__ */ d(p.Empty,{"data-slot":`command-empty`,className:e(`py-6 text-center text-sm`,t),...n})}function CommandGroup({className:t,...n}){return/* @__PURE__ */ d(p.Group,{"data-slot":`command-group`,className:e(`overflow-hidden p-1 text-foreground`,`**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5`,`**:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium`,`**:[[cmdk-group-heading]]:text-muted-foreground`,t),...n})}function CommandSeparator({className:t,...n}){return/* @__PURE__ */ d(p.Separator,{"data-slot":`command-separator`,className:e(`-mx-1 h-px bg-border`,t),...n})}function CommandItem({className:t,children:n,...r}){return/* @__PURE__ */ f(p.Item,{"data-slot":`command-item`,className:e(`group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none`,`in-data-[slot=dialog-content]:rounded-lg!`,`data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50`,`data-selected:bg-muted data-selected:text-foreground data-selected:*:[svg]:text-foreground`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,t),...r,children:[n,/* @__PURE__ */ d(l,{className:e(`ml-auto opacity-0`,`group-has-data-[slot=command-shortcut]/command-item:hidden`,`group-data-[checked=true]/command-item:opacity-100`)})]})}function CommandShortcut({className:t,...n}){return/* @__PURE__ */ d(`span`,{"data-slot":`command-shortcut`,className:e(`ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground`,t),...n})}export{Command,CommandDialog,CommandEmpty,CommandGroup,CommandInput,CommandItem,CommandList,CommandSeparator,CommandShortcut};
1
+ import"../rolldown-runtime-BhWHdk3m.js";import{cn as e}from"../lib/utils.js";import{useFieldControlId as t}from"./field.js";import{InputGroup as n,InputGroupAddon as r}from"./input-group.js";import{Dialog as i,DialogContent as a,DialogDescription as o,DialogHeader as s,DialogTitle as c}from"./dialog.js";import{IconCheck as l,IconSearch as u}from"@tabler/icons-react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{Command as p}from"cmdk";function Command({className:t,...n}){return/* @__PURE__ */ d(p,{"data-slot":`command`,className:e(`flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground`,t),...n})}function CommandDialog({title:t=`Command Palette`,description:n=`Search for a command to run...`,children:r,className:l,showCloseButton:u=!1,size:p=`sm`,...m}){return/* @__PURE__ */ f(i,{size:p,...m,children:[/* @__PURE__ */ f(s,{className:`sr-only`,children:[/* @__PURE__ */ d(c,{children:t}),/* @__PURE__ */ d(o,{children:n})]}),/* @__PURE__ */ d(a,{className:e(`top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0`,l),showCloseButton:u,children:r})]})}function CommandInput({className:i,id:a,...o}){let s=t(a);return/* @__PURE__ */ d(`div`,{"data-slot":`command-input-wrapper`,className:`p-1 pb-0`,children:/* @__PURE__ */ f(n,{className:e(`h-8! rounded-lg! border-input/30 bg-input/30 shadow-none!`,`*:data-[slot=input-group-addon]:pl-2!`),children:[/* @__PURE__ */ d(p.Input,{id:s,"data-slot":`command-input`,className:e(`w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50`,i),...o}),/* @__PURE__ */ d(r,{children:/* @__PURE__ */ d(u,{className:`size-4 shrink-0 opacity-50`})})]})})}function CommandList({className:t,...n}){return/* @__PURE__ */ d(p.List,{"data-slot":`command-list`,className:e(`no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none`,t),...n})}function CommandEmpty({className:t,...n}){return/* @__PURE__ */ d(p.Empty,{"data-slot":`command-empty`,className:e(`py-6 text-center text-sm`,t),...n})}function CommandGroup({className:t,...n}){return/* @__PURE__ */ d(p.Group,{"data-slot":`command-group`,className:e(`overflow-hidden p-1 text-foreground`,`**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5`,`**:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium`,`**:[[cmdk-group-heading]]:text-muted-foreground`,t),...n})}function CommandSeparator({className:t,...n}){return/* @__PURE__ */ d(p.Separator,{"data-slot":`command-separator`,className:e(`-mx-1 h-px bg-border`,t),...n})}function CommandItem({className:t,children:n,...r}){return/* @__PURE__ */ f(p.Item,{"data-slot":`command-item`,className:e(`group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none`,`in-data-[slot=dialog-content]:rounded-lg!`,`data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50`,`data-selected:bg-muted data-selected:text-foreground data-selected:*:[svg]:text-foreground`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,t),...r,children:[n,/* @__PURE__ */ d(l,{className:e(`ml-auto opacity-0`,`group-has-data-[slot=command-shortcut]/command-item:hidden`,`group-data-[checked=true]/command-item:opacity-100`)})]})}function CommandShortcut({className:t,...n}){return/* @__PURE__ */ d(`span`,{"data-slot":`command-shortcut`,className:e(`ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground`,t),...n})}export{Command,CommandDialog,CommandEmpty,CommandGroup,CommandInput,CommandItem,CommandList,CommandSeparator,CommandShortcut};
2
2
  //# sourceMappingURL=command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","names":["CommandPrimitive","Command$1","props","cn","className","Dialog","DialogHeader","DialogTitle","title","DialogDescription","description","DialogContent","fieldControlId","useFieldControlId","id","InputGroup","InputGroupAddon","IconSearch","children","IconCheck"],"sources":["../../src/components/command.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { IconCheck, IconSearch } from '@tabler/icons-react'\nimport { Command as CommandPrimitive } from 'cmdk'\n\nimport { cn } from '../lib/utils'\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from './dialog'\nimport { useFieldControlId } from './field'\nimport { InputGroup, InputGroupAddon } from './input-group'\n\nexport type CommandProps = React.ComponentProps<typeof CommandPrimitive>\n\nexport type CommandDialogProps = React.ComponentProps<typeof Dialog> & {\n title?: string\n description?: string\n className?: string\n showCloseButton?: boolean\n}\n\nexport type CommandInputProps = React.ComponentProps<typeof CommandPrimitive.Input>\n\nexport type CommandListProps = React.ComponentProps<typeof CommandPrimitive.List>\n\nexport type CommandEmptyProps = React.ComponentProps<typeof CommandPrimitive.Empty>\n\nexport type CommandGroupProps = React.ComponentProps<typeof CommandPrimitive.Group>\n\nexport type CommandSeparatorProps = React.ComponentProps<typeof CommandPrimitive.Separator>\n\nexport type CommandItemProps = React.ComponentProps<typeof CommandPrimitive.Item>\n\nexport type CommandShortcutProps = React.ComponentProps<'span'>\n\nfunction Command({ className, ...props }: CommandProps) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n 'flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n showCloseButton = false,\n ...props\n}: CommandDialogProps) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn('top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0', className)}\n showCloseButton={showCloseButton}\n >\n {children}\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({ className, id, ...props }: CommandInputProps) {\n const fieldControlId = useFieldControlId(id)\n\n return (\n <div data-slot=\"command-input-wrapper\" className=\"p-1 pb-0\">\n <InputGroup\n className={cn(\n 'h-8! rounded-lg! border-input/30 bg-input/30 shadow-none!',\n '*:data-[slot=input-group-addon]:pl-2!'\n )}\n >\n <CommandPrimitive.Input\n id={fieldControlId}\n data-slot=\"command-input\"\n className={cn('w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50', className)}\n {...props}\n />\n <InputGroupAddon>\n <IconSearch className=\"size-4 shrink-0 opacity-50\" />\n </InputGroupAddon>\n </InputGroup>\n </div>\n )\n}\n\nfunction CommandList({ className, ...props }: CommandListProps) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn('no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none', className)}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({ className, ...props }: CommandEmptyProps) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className={cn('py-6 text-center text-sm', className)}\n {...props}\n />\n )\n}\n\nfunction CommandGroup({ className, ...props }: CommandGroupProps) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'overflow-hidden p-1 text-foreground',\n '**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5',\n '**:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium',\n '**:[[cmdk-group-heading]]:text-muted-foreground',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({ className, ...props }: CommandSeparatorProps) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn('-mx-1 h-px bg-border', className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({ className, children, ...props }: CommandItemProps) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n 'group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none',\n 'in-data-[slot=dialog-content]:rounded-lg!',\n 'data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50',\n 'data-selected:bg-muted data-selected:text-foreground data-selected:*:[svg]:text-foreground',\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <IconCheck\n className={cn(\n 'ml-auto opacity-0',\n 'group-has-data-[slot=command-shortcut]/command-item:hidden',\n 'group-data-[checked=true]/command-item:opacity-100'\n )}\n />\n </CommandPrimitive.Item>\n )\n}\n\nfunction CommandShortcut({ className, ...props }: CommandShortcutProps) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n 'ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground',\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut\n}\n"],"mappings":"kcAiCA,SAAS,QAAQ,CAAE,YAAW,GAAGE,GAAuB,CACtD,MACE,kBAACF,EAAD,CACE,YAAU,UACV,UAAWG,EACT,6FACAC,CACF,EACA,GAAIF,CACL,CAAA,CAEL,CAEA,SAAS,cAAc,CACrB,QAAQ,kBACR,cAAc,iCACd,WACA,YACA,kBAAkB,GAClB,GAAGA,GACkB,CACrB,MACE,kBAACG,EAAD,CAAQ,GAAIH,EAAZ,SAAA,CACE,kBAACI,EAAD,CAAc,UAAU,UAAxB,SAAA,CACE,kBAACC,EAAD,CAAA,SAAcC,CAAmB,CAAA,EACjC,kBAACC,EAAD,CAAA,SAAoBC,CAA+B,CAAA,CACvC,CACd,CAAA,EAAA,kBAACC,EAAD,CACE,UAAWR,EAAG,wDAAyDC,CAAS,EAC/D,kBAEhB,UACY,CAAA,CACT,GAEZ,CAEA,SAAS,aAAa,CAAE,YAAW,KAAI,GAAGF,GAA4B,CACpE,IAAMU,EAAiBC,EAAkBC,CAAE,EAE3C,MACE,kBAAC,MAAD,CAAK,YAAU,wBAAwB,UAAU,WAC/C,SAAA,kBAACC,EAAD,CACE,UAAWZ,EACT,4DACA,uCACF,EAJF,SAAA,CAME,kBAACH,EAAiB,MAAlB,CACE,GAAIY,EACJ,YAAU,gBACV,UAAWT,EAAG,gFAAiFC,CAAS,EACxG,GAAIF,CACL,CAAA,EACD,kBAACc,EAAD,CAAA,SACE,kBAACC,EAAD,CAAY,UAAU,4BAA8B,CAAA,CACrC,CAAA,CACP,GACT,CAAA,CAET,CAEA,SAAS,YAAY,CAAE,YAAW,GAAGf,GAA2B,CAC9D,MACE,kBAACF,EAAiB,KAAlB,CACE,YAAU,eACV,UAAWG,EAAG,mFAAoFC,CAAS,EAC3G,GAAIF,CACL,CAAA,CAEL,CAEA,SAAS,aAAa,CAAE,YAAW,GAAGA,GAA4B,CAChE,MACE,kBAACF,EAAiB,MAAlB,CACE,YAAU,gBACV,UAAWG,EAAG,2BAA4BC,CAAS,EACnD,GAAIF,CACL,CAAA,CAEL,CAEA,SAAS,aAAa,CAAE,YAAW,GAAGA,GAA4B,CAChE,MACE,kBAACF,EAAiB,MAAlB,CACE,YAAU,gBACV,UAAWG,EACT,sCACA,kEACA,0EACA,kDACAC,CACF,EACA,GAAIF,CACL,CAAA,CAEL,CAEA,SAAS,iBAAiB,CAAE,YAAW,GAAGA,GAAgC,CACxE,MACE,kBAACF,EAAiB,UAAlB,CACE,YAAU,oBACV,UAAWG,EAAG,uBAAwBC,CAAS,EAC/C,GAAIF,CACL,CAAA,CAEL,CAEA,SAAS,YAAY,CAAE,YAAW,WAAU,GAAGA,GAA2B,CACxE,MACE,kBAACF,EAAiB,KAAlB,CACE,YAAU,eACV,UAAWG,EACT,+HACA,4CACA,2EACA,6FACA,oFACAC,CACF,EACA,GAAIF,EAVN,SAAA,CAYGgB,EACD,kBAACC,EAAD,CACE,UAAWhB,EACT,oBACA,6DACA,oDACF,CACD,CAAA,CACoB,GAE3B,CAEA,SAAS,gBAAgB,CAAE,YAAW,GAAGD,GAA+B,CACtE,MACE,kBAAC,OAAD,CACE,YAAU,mBACV,UAAWC,EACT,yGACAC,CACF,EACA,GAAIF,CACL,CAAA,CAEL"}
1
+ {"version":3,"file":"command.js","names":["CommandPrimitive","Command$1","props","cn","className","Dialog","DialogHeader","DialogTitle","title","DialogDescription","description","DialogContent","fieldControlId","useFieldControlId","id","InputGroup","InputGroupAddon","IconSearch","children","IconCheck"],"sources":["../../src/components/command.tsx"],"sourcesContent":["import type * as React from 'react'\n\nimport { IconCheck, IconSearch } from '@tabler/icons-react'\nimport { Command as CommandPrimitive } from 'cmdk'\n\nimport { cn } from '../lib/utils'\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from './dialog'\nimport { useFieldControlId } from './field'\nimport { InputGroup, InputGroupAddon } from './input-group'\n\nexport type CommandProps = React.ComponentProps<typeof CommandPrimitive>\n\nexport type CommandDialogProps = Omit<React.ComponentProps<typeof Dialog>, 'children'> & {\n children?: React.ReactNode\n /**\n * Dialog title, read by screen readers only.\n * @default 'Command Palette'\n */\n title?: string\n /**\n * Dialog description, read by screen readers only.\n * @default 'Search for a command to run...'\n */\n description?: string\n /** Classes for the dialog content. */\n className?: string\n /**\n * Shows the X button of the dialog.\n * @default false\n */\n showCloseButton?: boolean\n}\n\nexport type CommandInputProps = React.ComponentProps<typeof CommandPrimitive.Input>\n\nexport type CommandListProps = React.ComponentProps<typeof CommandPrimitive.List>\n\nexport type CommandEmptyProps = React.ComponentProps<typeof CommandPrimitive.Empty>\n\nexport type CommandGroupProps = React.ComponentProps<typeof CommandPrimitive.Group>\n\nexport type CommandSeparatorProps = React.ComponentProps<typeof CommandPrimitive.Separator>\n\nexport type CommandItemProps = React.ComponentProps<typeof CommandPrimitive.Item>\n\nexport type CommandShortcutProps = React.ComponentProps<'span'>\n\nfunction Command({ className, ...props }: CommandProps) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n 'flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n showCloseButton = false,\n size = 'sm',\n ...props\n}: CommandDialogProps) {\n return (\n <Dialog size={size} {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn('top-1/3 translate-y-0 overflow-hidden rounded-xl! p-0', className)}\n showCloseButton={showCloseButton}\n >\n {children}\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({ className, id, ...props }: CommandInputProps) {\n const fieldControlId = useFieldControlId(id)\n\n return (\n <div data-slot=\"command-input-wrapper\" className=\"p-1 pb-0\">\n <InputGroup\n className={cn(\n 'h-8! rounded-lg! border-input/30 bg-input/30 shadow-none!',\n '*:data-[slot=input-group-addon]:pl-2!'\n )}\n >\n <CommandPrimitive.Input\n id={fieldControlId}\n data-slot=\"command-input\"\n className={cn('w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50', className)}\n {...props}\n />\n <InputGroupAddon>\n <IconSearch className=\"size-4 shrink-0 opacity-50\" />\n </InputGroupAddon>\n </InputGroup>\n </div>\n )\n}\n\nfunction CommandList({ className, ...props }: CommandListProps) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn('no-scrollbar max-h-72 scroll-py-1 overflow-x-hidden overflow-y-auto outline-none', className)}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({ className, ...props }: CommandEmptyProps) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className={cn('py-6 text-center text-sm', className)}\n {...props}\n />\n )\n}\n\nfunction CommandGroup({ className, ...props }: CommandGroupProps) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'overflow-hidden p-1 text-foreground',\n '**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5',\n '**:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium',\n '**:[[cmdk-group-heading]]:text-muted-foreground',\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({ className, ...props }: CommandSeparatorProps) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn('-mx-1 h-px bg-border', className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({ className, children, ...props }: CommandItemProps) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n 'group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none',\n 'in-data-[slot=dialog-content]:rounded-lg!',\n 'data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50',\n 'data-selected:bg-muted data-selected:text-foreground data-selected:*:[svg]:text-foreground',\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <IconCheck\n className={cn(\n 'ml-auto opacity-0',\n 'group-has-data-[slot=command-shortcut]/command-item:hidden',\n 'group-data-[checked=true]/command-item:opacity-100'\n )}\n />\n </CommandPrimitive.Item>\n )\n}\n\nfunction CommandShortcut({ className, ...props }: CommandShortcutProps) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n 'ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground',\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut\n}\n"],"mappings":"kcA+CA,SAAS,QAAQ,CAAE,YAAW,GAAGE,GAAuB,CACtD,MACE,kBAACF,EAAD,CACE,YAAU,UACV,UAAWG,EACT,6FACAC,CACF,EACA,GAAIF,CACL,CAAA,CAEL,CAEA,SAAS,cAAc,CACrB,QAAQ,kBACR,cAAc,iCACd,WACA,YACA,kBAAkB,GAClB,OAAO,KACP,GAAGA,GACkB,CACrB,MACE,kBAACG,EAAD,CAAc,OAAM,GAAIH,EAAxB,SAAA,CACE,kBAACI,EAAD,CAAc,UAAU,UAAxB,SAAA,CACE,kBAACC,EAAD,CAAA,SAAcC,CAAmB,CAAA,EACjC,kBAACC,EAAD,CAAA,SAAoBC,CAA+B,CAAA,CACvC,CACd,CAAA,EAAA,kBAACC,EAAD,CACE,UAAWR,EAAG,wDAAyDC,CAAS,EAC/D,kBAEhB,UACY,CAAA,CACT,GAEZ,CAEA,SAAS,aAAa,CAAE,YAAW,KAAI,GAAGF,GAA4B,CACpE,IAAMU,EAAiBC,EAAkBC,CAAE,EAE3C,MACE,kBAAC,MAAD,CAAK,YAAU,wBAAwB,UAAU,WAC/C,SAAA,kBAACC,EAAD,CACE,UAAWZ,EACT,4DACA,uCACF,EAJF,SAAA,CAME,kBAACH,EAAiB,MAAlB,CACE,GAAIY,EACJ,YAAU,gBACV,UAAWT,EAAG,gFAAiFC,CAAS,EACxG,GAAIF,CACL,CAAA,EACD,kBAACc,EAAD,CAAA,SACE,kBAACC,EAAD,CAAY,UAAU,4BAA8B,CAAA,CACrC,CAAA,CACP,GACT,CAAA,CAET,CAEA,SAAS,YAAY,CAAE,YAAW,GAAGf,GAA2B,CAC9D,MACE,kBAACF,EAAiB,KAAlB,CACE,YAAU,eACV,UAAWG,EAAG,mFAAoFC,CAAS,EAC3G,GAAIF,CACL,CAAA,CAEL,CAEA,SAAS,aAAa,CAAE,YAAW,GAAGA,GAA4B,CAChE,MACE,kBAACF,EAAiB,MAAlB,CACE,YAAU,gBACV,UAAWG,EAAG,2BAA4BC,CAAS,EACnD,GAAIF,CACL,CAAA,CAEL,CAEA,SAAS,aAAa,CAAE,YAAW,GAAGA,GAA4B,CAChE,MACE,kBAACF,EAAiB,MAAlB,CACE,YAAU,gBACV,UAAWG,EACT,sCACA,kEACA,0EACA,kDACAC,CACF,EACA,GAAIF,CACL,CAAA,CAEL,CAEA,SAAS,iBAAiB,CAAE,YAAW,GAAGA,GAAgC,CACxE,MACE,kBAACF,EAAiB,UAAlB,CACE,YAAU,oBACV,UAAWG,EAAG,uBAAwBC,CAAS,EAC/C,GAAIF,CACL,CAAA,CAEL,CAEA,SAAS,YAAY,CAAE,YAAW,WAAU,GAAGA,GAA2B,CACxE,MACE,kBAACF,EAAiB,KAAlB,CACE,YAAU,eACV,UAAWG,EACT,+HACA,4CACA,2EACA,6FACA,oFACAC,CACF,EACA,GAAIF,EAVN,SAAA,CAYGgB,EACD,kBAACC,EAAD,CACE,UAAWhB,EACT,oBACA,6DACA,oDACF,CACD,CAAA,CACoB,GAE3B,CAEA,SAAS,gBAAgB,CAAE,YAAW,GAAGD,GAA+B,CACtE,MACE,kBAAC,OAAD,CACE,YAAU,mBACV,UAAWC,EACT,yGACAC,CACF,EACA,GAAIF,CACL,CAAA,CAEL"}
@@ -1,6 +1,6 @@
1
1
  import { t as __name } from "../rolldown-runtime-BhWHdk3m.js";
2
- import { VariantProps } from "class-variance-authority";
3
2
  import * as React from "react";
3
+ import { VariantProps } from "class-variance-authority";
4
4
  //#region src/components/container.d.ts
5
5
  declare const containerVariants: (props?: ({
6
6
  size?: "full" | "lg" | "md" | "sm" | null | undefined;
@@ -48,26 +48,64 @@ export type DataTableLabels = {
48
48
  };
49
49
  export declare const defaultDataTableLabels: DataTableLabels;
50
50
  export type DataTableProps<TData extends RowData$1, TValue = unknown> = {
51
+ /** Column definitions (TanStack `ColumnDef`). */
51
52
  columns: ColumnDef<TData, TValue>[];
53
+ /** Rows to show. */
52
54
  data: TData[];
55
+ /** Returns a stable id for each row. Recommended with row selection. */
53
56
  getRowId?: (originalRow: TData, index: number, parent?: {
54
57
  id: string;
55
58
  }) => string;
59
+ /** Column id, or ids, searched by the text filter. With two or more, a select picks the column. */
56
60
  filterColumns?: string | string[];
61
+ /**
62
+ * Rows per page when pagination is on.
63
+ * @default 10
64
+ */
57
65
  pageSize?: number;
66
+ /**
67
+ * Options of the rows-per-page select.
68
+ * @default [10, 20, 30, 40, 50]
69
+ */
58
70
  pageSizeOptions?: number[];
71
+ /**
72
+ * Adds a checkbox column for selecting rows.
73
+ * @default false
74
+ */
59
75
  enableRowSelection?: boolean;
76
+ /**
77
+ * Makes columns sortable.
78
+ * @default false
79
+ */
60
80
  enableSorting?: boolean;
81
+ /**
82
+ * Shows the pagination footer.
83
+ * @default false
84
+ */
61
85
  showPagination?: boolean;
86
+ /**
87
+ * Shows the menu to hide and show columns.
88
+ * @default false
89
+ */
62
90
  showColumnVisibility?: boolean;
91
+ /** Content on the right of the toolbar, or a function that receives the `table`. */
63
92
  toolbarActions?: DataTableToolbarActions<TData>;
93
+ /** Overrides the default pt-BR texts. */
64
94
  labels?: Partial<DataTableLabels>;
95
+ /** Classes for the outer wrapper. */
65
96
  className?: string;
97
+ /** Classes for the `<table>`. */
66
98
  tableClassName?: string;
99
+ /**
100
+ * Table chrome: `line` or `outline`.
101
+ * @default 'line'
102
+ */
67
103
  variant?: TableProps['variant'];
68
104
  };
69
105
  export type DataTableColumnHeaderProps<TData extends RowData$1, TValue> = React.ComponentProps<'div'> & {
106
+ /** The column, from the `header` render function. */
70
107
  column: Column<TData, TValue>;
108
+ /** Header text. */
71
109
  title: React.ReactNode;
72
110
  };
73
111
  export type DataTablePaginationProps<TData extends RowData$1> = React.ComponentProps<'div'> & {
@@ -113,6 +151,7 @@ export type DataTableHeaderProps = {
113
151
  className?: string;
114
152
  };
115
153
  export type DataTableBodyProps = {
154
+ /** Content shown when there are no rows. */
116
155
  emptyMessage?: React.ReactNode;
117
156
  className?: string;
118
157
  };
@@ -1,2 +1,2 @@
1
- import"../rolldown-runtime-BhWHdk3m.js";import{cn as e}from"../lib/utils.js";import{Button as t}from"./button.js";import{Checkbox as n}from"./checkbox.js";import{Input as r}from"./input.js";import{InputGroup as i,InputGroupAddon as a,InputGroupInput as o}from"./input-group.js";import{DropdownMenu as s,DropdownMenuCheckboxItem as c,DropdownMenuContent as l,DropdownMenuGroup as u,DropdownMenuTrigger as d}from"./dropdown-menu.js";import{Select as f,SelectContent as p,SelectGroup as m,SelectItem as h,SelectTrigger as g,SelectValue as _}from"./select.js";import{Table as v,TableBody as y,TableCell as b,TableContainer as x,TableHead as S,TableHeader as C,TableRow as w}from"./table.js";import{IconArrowsSort as T,IconChevronLeft as E,IconChevronRight as ee,IconChevronsLeft as te,IconChevronsRight as D,IconColumns3 as O,IconSortAscending as k,IconSortDescending as A}from"@tabler/icons-react";import{jsx as j,jsxs as M}from"react/jsx-runtime";import*as N from"react";import{columnFilteringFeature as P,columnVisibilityFeature as F,createFilteredRowModel as I,createPaginatedRowModel as L,createSortedRowModel as R,filterFn_arrIncludes as z,filterFn_equals as B,filterFn_inDateRange as V,filterFn_inNumberRange as H,filterFn_includesString as U,filterFn_weakEquals as W,flexRender as G,rowPaginationFeature as K,rowSelectionFeature as q,rowSortingFeature as J,sortFn_alphanumeric as Y,sortFn_basic as X,sortFn_datetime as Z,sortFn_text as ne,tableFeatures as re,useTable as ie}from"@tanstack/react-table";const ae=re({columnFilteringFeature:P,rowSortingFeature:J,rowPaginationFeature:K,rowSelectionFeature:q,columnVisibilityFeature:F,filteredRowModel:I(),sortedRowModel:R(),paginatedRowModel:L(),filterFns:{includesString:U,inNumberRange:H,equals:B,arrIncludes:z,inDateRange:V,weakEquals:W},sortFns:{alphanumeric:Y,text:ne,datetime:Z,basic:X}}),Q={filterPlaceholder:`Filtrar linhas...`,filterColumnSelectorLabel:`Coluna para filtrar`,emptyMessage:`Nenhum resultado.`,columnsButton:`Colunas`,rowsPerPage:`Linhas por página`,pageOf:(e,t)=>`Página ${e} de ${t}`,goToFirstPage:`Ir para a primeira página`,goToPreviousPage:`Ir para a página anterior`,goToNextPage:`Ir para a próxima página`,goToLastPage:`Ir para a última página`,selectAllRows:`Selecionar todas as linhas`,selectRow:`Selecionar linha`},$=N.createContext(null);function useDataTableContext(){let e=N.useContext($);if(!e)throw Error(`useDataTableContext must be used within <DataTableRoot>`);return e}function useOptionalDataTableContext(){return N.useContext($)}function renderToolbarActions(e,t){return typeof e==`function`?e(t):e}function getColumnLabel(e){return e?e.columnDef.meta?.label??e.id:``}function useDataTable({columns:e,data:t,getRowId:n,pageSize:r=10,enableRowSelection:i=!1,enableSorting:a=!1,enablePagination:o=!1,labels:s}){let[c,l]=N.useState([]),[u,d]=N.useState([]),[f,p]=N.useState({}),[m,h]=N.useState({pageIndex:0,pageSize:r}),[g,_]=N.useState({}),v=N.useMemo(()=>({...Q,...s}),[s]),y=N.useMemo(()=>!i||e.some(e=>e.id===`select`)?e:[createDataTableSelectColumn({labels:{selectAllRows:v.selectAllRows,selectRow:v.selectRow}}),...e],[e,i,v.selectAllRows,v.selectRow]);return ie({features:ae,data:t,columns:y,getRowId:n,enableRowSelection:i,enableSorting:a,manualPagination:!o,state:{sorting:c,columnFilters:u,columnVisibility:f,rowSelection:g,pagination:m},onSortingChange:l,onColumnFiltersChange:d,onColumnVisibilityChange:p,onPaginationChange:h,onRowSelectionChange:_})}function DataTableRootControlled({table:t,labels:n,className:r,children:i}){let a={table:t,labels:N.useMemo(()=>({...Q,...n}),[n])};return/* @__PURE__ */ j($.Provider,{value:a,children:/* @__PURE__ */ j(`div`,{className:e(`flex w-full flex-col gap-4`,r),children:i})})}function DataTableRootUncontrolled({columns:e,data:t,getRowId:n,pageSize:r,enableRowSelection:i,enableSorting:a,enablePagination:o,labels:s,className:c,children:l}){let u=useDataTable({columns:e,data:t,getRowId:n,pageSize:r,enableRowSelection:i,enableSorting:a,enablePagination:o,labels:s});return/* @__PURE__ */ j(DataTableRootControlled,{table:u,labels:s,className:c,children:l})}function DataTableRoot(e){if(`table`in e&&e.table!==void 0){let{table:t,labels:n,className:r,children:i}=e;return/* @__PURE__ */ j(DataTableRootControlled,{table:t,labels:n,className:r,children:i})}let{columns:t,data:n,getRowId:r,pageSize:i,enableRowSelection:a,enableSorting:o,enablePagination:s,labels:c,className:l,children:u}=e;return/* @__PURE__ */ j(DataTableRootUncontrolled,{columns:t,data:n,getRowId:r,pageSize:i,enableRowSelection:a,enableSorting:o,enablePagination:s,labels:c,className:l,children:u})}function DataTableColumnHeader({column:n,title:r,className:i,...a}){if(!n.getCanSort())return/* @__PURE__ */ j(`div`,{className:e(`inline-flex items-center gap-1`,i),...a,children:r});let o=n.getIsSorted();return/* @__PURE__ */ M(`div`,{className:e(`inline-flex items-center gap-1`,i),...a,children:[r,/* @__PURE__ */ j(t,{variant:`ghost`,color:`zinc`,size:`icon-xs`,onClick:()=>{if(o===`desc`)return n.clearSorting();n.toggleSorting(o===`asc`)},children:j(o===`desc`?A:o===`asc`?k:T,{className:`size-4`,"data-icon":`inline-end`})})]})}function DataTableViewOptions({table:n,label:r,className:i,...a}){let o=useOptionalDataTableContext(),f=n??o?.table;if(!f)throw Error("DataTableViewOptions requires a `table` prop or to be rendered within <DataTableRoot>");let p=r??o?.labels.columnsButton??Q.columnsButton,m=f.getAllColumns().filter(e=>e.accessorFn!==void 0&&e.getCanHide());return m.length===0?null:/* @__PURE__ */ M(s,{children:[/* @__PURE__ */ j(d,{asChild:!0,children:/* @__PURE__ */ M(t,{type:`button`,variant:`outline`,color:`zinc`,size:`sm`,className:e(`ml-auto`,i),...a,children:[/* @__PURE__ */ j(O,{"data-icon":`inline-start`}),p]})}),/* @__PURE__ */ j(l,{align:`end`,className:`w-44`,children:/* @__PURE__ */ j(u,{children:m.map(e=>/* @__PURE__ */ j(c,{checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:e.id},e.id))})})]})}function DataTableToolbar({filterColumns:t,showColumnVisibility:n,toolbarActions:s,labels:c,className:l}){let{table:u,labels:d}=useDataTableContext(),f=N.useMemo(()=>c?{...d,...c}:d,[d,c]),p=N.useMemo(()=>t?Array.isArray(t)?t:[t]:[],[t]),m=renderToolbarActions(s,u),h=p.length>0,[g,_]=N.useState(p[0]);if(N.useEffect(()=>{p.length===0?_(void 0):_(e=>e&&p.includes(e)?e:p[0])},[p]),!h&&!n&&!m)return null;let v=g?u.getColumn(g):void 0,y=v?.getFilterValue()??``,handleColumnChange=e=>{e!==g&&(g&&u.getColumn(g)?.setFilterValue(void 0),_(e))};return/* @__PURE__ */ M(`div`,{className:e(`flex flex-col gap-2 sm:flex-row sm:items-center`,l),children:[h&&v?p.length>1?/* @__PURE__ */ M(i,{className:`h-8 w-full sm:max-w-md`,children:[/* @__PURE__ */ j(a,{align:`inline-start`,className:`pr-0`,children:/* @__PURE__ */ j(`select`,{"aria-label":f.filterColumnSelectorLabel,value:g,onChange:e=>handleColumnChange(e.target.value),className:`cursor-pointer appearance-none border-0 bg-transparent pr-1 text-sm font-medium text-foreground outline-none focus:outline-none`,children:p.map(e=>/* @__PURE__ */ j(`option`,{value:e,children:getColumnLabel(u.getColumn(e))},e))})}),/* @__PURE__ */ j(o,{placeholder:f.filterPlaceholder,value:y,onChange:e=>v.setFilterValue(e.target.value)})]}):/* @__PURE__ */ j(r,{placeholder:f.filterPlaceholder,value:y,onChange:e=>v.setFilterValue(e.target.value),className:`h-8 w-full sm:max-w-xs`}):null,/* @__PURE__ */ M(`div`,{className:`flex flex-1 items-center justify-end gap-2`,children:[m,n?/* @__PURE__ */ j(DataTableViewOptions,{table:u,label:f.columnsButton}):null]})]})}function DataTableHeader({className:e}={}){let{table:t}=useDataTableContext();return/* @__PURE__ */ j(C,{className:e,children:t.getHeaderGroups().map(e=>/* @__PURE__ */ j(w,{children:e.headers.map(e=>/* @__PURE__ */ j(S,{colSpan:e.colSpan,children:e.isPlaceholder?null:G(e.column.columnDef.header,e.getContext())},e.id))},e.id))})}function DataTableBody({emptyMessage:e,className:t}={}){let{table:n,labels:r}=useDataTableContext(),i=n.getRowModel().rows,a=n.getVisibleLeafColumns().length,o=e??r.emptyMessage;return/* @__PURE__ */ j(y,{className:t,children:i.length===0?/* @__PURE__ */ j(w,{children:/* @__PURE__ */ j(b,{colSpan:a,className:`h-24 text-center`,children:o})}):i.map(e=>/* @__PURE__ */ j(w,{"data-state":e.getIsSelected()?`selected`:void 0,children:e.getVisibleCells().map(e=>/* @__PURE__ */ j(b,{children:G(e.column.columnDef.cell,e.getContext())},e.id))},e.id))})}function DataTablePagination({table:n,pageSizeOptions:r=[10,20,30,40,50],labels:i,className:a,...o}){let s=useOptionalDataTableContext(),c=n??s?.table;if(!c)throw Error("DataTablePagination requires a `table` prop or to be rendered within <DataTableRoot>");let l=N.useMemo(()=>({...Q,...s?.labels,...i}),[s?.labels,i]),u=c.getPageCount(),d=Math.max(u,1),v=c.state.pagination.pageIndex;return/* @__PURE__ */ j(`div`,{className:e(`flex items-center justify-end gap-4 px-2`,a),...o,children:/* @__PURE__ */ M(`div`,{className:`flex items-center gap-6 lg:gap-8`,children:[/* @__PURE__ */ M(`div`,{className:`hidden items-center gap-2 sm:flex`,children:[/* @__PURE__ */ j(`p`,{className:`text-sm font-medium`,children:l.rowsPerPage}),/* @__PURE__ */ M(f,{value:`${c.state.pagination.pageSize}`,onValueChange:e=>c.setPageSize(Number(e)),children:[/* @__PURE__ */ j(g,{size:`sm`,className:`h-8 w-20`,children:/* @__PURE__ */ j(_,{})}),/* @__PURE__ */ j(p,{side:`top`,children:/* @__PURE__ */ j(m,{children:r.map(e=>/* @__PURE__ */ j(h,{value:`${e}`,children:e},e))})})]})]}),/* @__PURE__ */ j(`div`,{className:`text-sm font-medium`,children:l.pageOf(v+1,d)}),/* @__PURE__ */ M(`div`,{className:`flex items-center gap-1`,children:[/* @__PURE__ */ j(t,{type:`button`,variant:`secondary`,size:`icon-sm`,className:`hidden lg:inline-flex`,onClick:()=>c.setPageIndex(0),disabled:!c.getCanPreviousPage(),"aria-label":l.goToFirstPage,children:/* @__PURE__ */ j(te,{})}),/* @__PURE__ */ j(t,{type:`button`,variant:`secondary`,size:`icon-sm`,onClick:()=>c.previousPage(),disabled:!c.getCanPreviousPage(),"aria-label":l.goToPreviousPage,children:/* @__PURE__ */ j(E,{})}),/* @__PURE__ */ j(t,{type:`button`,variant:`secondary`,size:`icon-sm`,onClick:()=>c.nextPage(),disabled:!c.getCanNextPage(),"aria-label":l.goToNextPage,children:/* @__PURE__ */ j(ee,{})}),/* @__PURE__ */ j(t,{type:`button`,variant:`secondary`,size:`icon-sm`,className:`hidden lg:inline-flex`,onClick:()=>c.setPageIndex(u-1),disabled:!c.getCanNextPage(),"aria-label":l.goToLastPage,children:/* @__PURE__ */ j(D,{})})]})]})})}function createDataTableSelectColumn(e){let t=e?.labels?.selectAllRows??Q.selectAllRows,r=e?.labels?.selectRow??Q.selectRow;return{id:`select`,enableSorting:!1,enableHiding:!1,header:({table:e})=>/* @__PURE__ */ j(n,{"aria-label":t,checked:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected()&&`indeterminate`,onCheckedChange:t=>e.toggleAllPageRowsSelected(!!t)}),cell:({row:e})=>/* @__PURE__ */ j(n,{"aria-label":r,checked:e.getIsSelected()||e.getIsSomeSelected()&&`indeterminate`,disabled:!e.getCanSelect(),onCheckedChange:t=>e.toggleSelected(!!t)})}}function DataTable({columns:e,data:t,getRowId:n,filterColumns:r,pageSize:i=10,pageSizeOptions:a,enableRowSelection:o=!1,enableSorting:s=!1,showPagination:c=!1,showColumnVisibility:l=!1,toolbarActions:u,labels:d,className:f,tableClassName:p,variant:m}){return/* @__PURE__ */ M(DataTableRoot,{columns:e,data:t,getRowId:n,pageSize:i,enableRowSelection:o,enableSorting:s,enablePagination:c,labels:d,className:f,children:[/* @__PURE__ */ j(DataTableToolbar,{filterColumns:r,showColumnVisibility:l,toolbarActions:u}),/* @__PURE__ */ j(x,{children:/* @__PURE__ */ M(v,{className:p,variant:m,children:[/* @__PURE__ */ j(DataTableHeader,{}),/* @__PURE__ */ j(DataTableBody,{})]})}),c?/* @__PURE__ */ j(DataTablePagination,{pageSizeOptions:a}):null]})}export{DataTable,DataTableBody,DataTableColumnHeader,DataTableHeader,DataTablePagination,DataTableRoot,DataTableToolbar,DataTableViewOptions,createDataTableSelectColumn,Q as defaultDataTableLabels,useDataTable,useDataTableContext};
1
+ import"../rolldown-runtime-BhWHdk3m.js";import{cn as e}from"../lib/utils.js";import{Button as t}from"./button.js";import{Checkbox as n}from"./checkbox.js";import{Input as r}from"./input.js";import{InputGroup as i,InputGroupAddon as a,InputGroupInput as o}from"./input-group.js";import{DropdownMenu as s,DropdownMenuCheckboxItem as c,DropdownMenuContent as l,DropdownMenuGroup as u,DropdownMenuTrigger as d}from"./dropdown-menu.js";import{Select as f,SelectContent as p,SelectGroup as m,SelectItem as h,SelectTrigger as g,SelectValue as _}from"./select.js";import{Table as v,TableBody as y,TableCell as b,TableContainer as x,TableHead as S,TableHeader as C,TableRow as w}from"./table.js";import{IconArrowsSort as T,IconChevronLeft as E,IconChevronRight as D,IconChevronsLeft as ee,IconChevronsRight as te,IconColumns3 as ne,IconSortAscending as O,IconSortDescending as k}from"@tabler/icons-react";import*as A from"react";import{jsx as j,jsxs as M}from"react/jsx-runtime";import{columnFilteringFeature as N,columnVisibilityFeature as P,createFilteredRowModel as F,createPaginatedRowModel as I,createSortedRowModel as L,filterFn_arrIncludes as R,filterFn_equals as z,filterFn_inDateRange as B,filterFn_inNumberRange as V,filterFn_includesString as H,filterFn_weakEquals as U,flexRender as W,rowPaginationFeature as G,rowSelectionFeature as K,rowSortingFeature as q,sortFn_alphanumeric as J,sortFn_basic as Y,sortFn_datetime as X,sortFn_text as re,tableFeatures as ie,useTable as ae}from"@tanstack/react-table";const oe=ie({columnFilteringFeature:N,rowSortingFeature:q,rowPaginationFeature:G,rowSelectionFeature:K,columnVisibilityFeature:P,filteredRowModel:F(),sortedRowModel:L(),paginatedRowModel:I(),filterFns:{includesString:H,inNumberRange:V,equals:z,arrIncludes:R,inDateRange:B,weakEquals:U},sortFns:{alphanumeric:J,text:re,datetime:X,basic:Y}}),Z={filterPlaceholder:`Filtrar linhas...`,filterColumnSelectorLabel:`Coluna para filtrar`,emptyMessage:`Nenhum resultado.`,columnsButton:`Colunas`,rowsPerPage:`Linhas por página`,pageOf:(e,t)=>`Página ${e} de ${t}`,goToFirstPage:`Ir para a primeira página`,goToPreviousPage:`Ir para a página anterior`,goToNextPage:`Ir para a próxima página`,goToLastPage:`Ir para a última página`,selectAllRows:`Selecionar todas as linhas`,selectRow:`Selecionar linha`},Q=A.createContext(null),$=A.createContext(null);function useDataTableContext(){let e=A.useContext(Q);if(!e)throw Error(`useDataTableContext must be used within <DataTableRoot>`);return e}function useOptionalDataTableContext(){return A.useContext(Q)}function renderToolbarActions(e,t){return typeof e==`function`?e(t):e}function getColumnLabel(e){return e?e.columnDef.meta?.label??e.id:``}function useDataTable({columns:e,data:t,getRowId:n,pageSize:r=10,enableRowSelection:i=!1,enableSorting:a=!1,enablePagination:o=!1,labels:s}){let[c,l]=A.useState([]),[u,d]=A.useState([]),[f,p]=A.useState({}),[m,h]=A.useState({pageIndex:0,pageSize:r}),[g,_]=A.useState({}),[v,y]=A.useState(r);r!==v&&(y(r),h({pageIndex:0,pageSize:r}));let b=A.useMemo(()=>({...Z,...s}),[s]),x=A.useMemo(()=>!i||e.some(e=>e.id===`select`)?e:[createDataTableSelectColumn({labels:{selectAllRows:b.selectAllRows,selectRow:b.selectRow}}),...e],[e,i,b.selectAllRows,b.selectRow]);return ae({features:oe,data:t,columns:x,getRowId:n,enableRowSelection:i,enableSorting:a,manualPagination:!o,state:{sorting:c,columnFilters:u,columnVisibility:f,rowSelection:g,pagination:m},onSortingChange:l,onColumnFiltersChange:d,onColumnVisibilityChange:p,onPaginationChange:h,onRowSelectionChange:_})}function DataTableRootControlled({table:t,labels:n,className:r,children:i}){let a={table:t,labels:A.useMemo(()=>({...Z,...n}),[n])};return/* @__PURE__ */ j(Q.Provider,{value:a,children:/* @__PURE__ */ j(`div`,{className:e(`flex w-full flex-col gap-4`,r),children:i})})}function DataTableRootUncontrolled({columns:e,data:t,getRowId:n,pageSize:r,enableRowSelection:i,enableSorting:a,enablePagination:o,labels:s,className:c,children:l}){let[u,d]=A.useState(0),f=A.useCallback(()=>(d(e=>e+1),()=>d(e=>e-1)),[]),p=useDataTable({columns:e,data:t,getRowId:n,pageSize:r,enableRowSelection:i,enableSorting:a,enablePagination:o??u>0,labels:s});return/* @__PURE__ */ j($.Provider,{value:f,children:/* @__PURE__ */ j(DataTableRootControlled,{table:p,labels:s,className:c,children:l})})}function DataTableRoot(e){if(`table`in e&&e.table!==void 0){let{table:t,labels:n,className:r,children:i}=e;return/* @__PURE__ */ j(DataTableRootControlled,{table:t,labels:n,className:r,children:i})}let{columns:t,data:n,getRowId:r,pageSize:i,enableRowSelection:a,enableSorting:o,enablePagination:s,labels:c,className:l,children:u}=e;return/* @__PURE__ */ j(DataTableRootUncontrolled,{columns:t,data:n,getRowId:r,pageSize:i,enableRowSelection:a,enableSorting:o,enablePagination:s,labels:c,className:l,children:u})}function DataTableColumnHeader({column:n,title:r,className:i,...a}){if(!n.getCanSort())return/* @__PURE__ */ j(`div`,{className:e(`inline-flex items-center gap-1`,i),...a,children:r});let o=n.getIsSorted();return/* @__PURE__ */ M(`div`,{className:e(`inline-flex items-center gap-1`,i),...a,children:[r,/* @__PURE__ */ j(t,{variant:`ghost`,color:`zinc`,size:`icon-xs`,onClick:()=>{if(o===`desc`)return n.clearSorting();n.toggleSorting(o===`asc`)},children:j(o===`desc`?k:o===`asc`?O:T,{className:`size-4`,"data-icon":`inline-end`})})]})}function DataTableViewOptions({table:n,label:r,className:i,...a}){let o=useOptionalDataTableContext(),f=n??o?.table;if(!f)throw Error("DataTableViewOptions requires a `table` prop or to be rendered within <DataTableRoot>");let p=r??o?.labels.columnsButton??Z.columnsButton,m=f.getAllColumns().filter(e=>e.accessorFn!==void 0&&e.getCanHide());return m.length===0?null:/* @__PURE__ */ M(s,{children:[/* @__PURE__ */ j(d,{asChild:!0,children:/* @__PURE__ */ M(t,{type:`button`,variant:`secondary`,size:`sm`,className:e(`ml-auto`,i),...a,children:[/* @__PURE__ */ j(ne,{"data-icon":`inline-start`}),p]})}),/* @__PURE__ */ j(l,{align:`end`,className:`w-44`,children:/* @__PURE__ */ j(u,{children:m.map(e=>/* @__PURE__ */ j(c,{checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:getColumnLabel(e)},e.id))})})]})}function DataTableToolbar({filterColumns:t,showColumnVisibility:n,toolbarActions:s,labels:c,className:l}){let{table:u,labels:d}=useDataTableContext(),f=A.useMemo(()=>c?{...d,...c}:d,[d,c]),p=A.useMemo(()=>t?Array.isArray(t)?t:[t]:[],[t]),m=renderToolbarActions(s,u),h=p.length>0,[g,_]=A.useState(p[0]),v=A.useRef(p);if(A.useEffect(()=>{for(let e of v.current)p.includes(e)||u.getColumn(e)?.setFilterValue(void 0);v.current=p},[p,u]),A.useEffect(()=>{p.length===0?_(void 0):_(e=>e&&p.includes(e)?e:p[0])},[p]),!h&&!n&&!m)return null;let y=g?u.getColumn(g):void 0,b=y?.getFilterValue()??``,handleColumnChange=e=>{e!==g&&(g&&u.getColumn(g)?.setFilterValue(void 0),_(e))};return/* @__PURE__ */ M(`div`,{className:e(`flex flex-col gap-2 sm:flex-row sm:items-center`,l),children:[h&&y?p.length>1?/* @__PURE__ */ M(i,{className:`h-8 w-full sm:max-w-md`,children:[/* @__PURE__ */ j(a,{align:`inline-start`,className:`pr-0`,children:/* @__PURE__ */ j(`select`,{"aria-label":f.filterColumnSelectorLabel,value:g,onChange:e=>handleColumnChange(e.target.value),className:`cursor-pointer appearance-none border-0 bg-transparent pr-1 text-sm font-medium text-foreground outline-none focus:outline-none`,children:p.map(e=>/* @__PURE__ */ j(`option`,{value:e,children:getColumnLabel(u.getColumn(e))},e))})}),/* @__PURE__ */ j(o,{placeholder:f.filterPlaceholder,value:b,onChange:e=>y.setFilterValue(e.target.value)})]}):/* @__PURE__ */ j(r,{placeholder:f.filterPlaceholder,value:b,onChange:e=>y.setFilterValue(e.target.value),className:`h-8 w-full sm:max-w-xs`}):null,/* @__PURE__ */ M(`div`,{className:`flex flex-1 items-center justify-end gap-2`,children:[m,n?/* @__PURE__ */ j(DataTableViewOptions,{table:u,label:f.columnsButton,className:`ml-0`}):null]})]})}function DataTableHeader({className:e}={}){let{table:t}=useDataTableContext();return/* @__PURE__ */ j(C,{className:e,children:t.getHeaderGroups().map(e=>/* @__PURE__ */ j(w,{children:e.headers.map(e=>/* @__PURE__ */ j(S,{colSpan:e.colSpan,children:e.isPlaceholder?null:W(e.column.columnDef.header,e.getContext())},e.id))},e.id))})}function DataTableBody({emptyMessage:e,className:t}={}){let{table:n,labels:r}=useDataTableContext(),i=n.getRowModel().rows,a=n.getVisibleLeafColumns().length,o=e??r.emptyMessage;return/* @__PURE__ */ j(y,{className:t,children:i.length===0?/* @__PURE__ */ j(w,{children:/* @__PURE__ */ j(b,{colSpan:a,className:`h-24 text-center`,children:o})}):i.map(e=>/* @__PURE__ */ j(w,{"data-state":e.getIsSelected()?`selected`:void 0,children:e.getVisibleCells().map(e=>/* @__PURE__ */ j(b,{children:W(e.column.columnDef.cell,e.getContext())},e.id))},e.id))})}function DataTablePagination({table:n,pageSizeOptions:r=[10,20,30,40,50],labels:i,className:a,...o}){let s=useOptionalDataTableContext(),c=A.useContext($);A.useLayoutEffect(()=>c?.(),[c]);let l=n??s?.table;if(!l)throw Error("DataTablePagination requires a `table` prop or to be rendered within <DataTableRoot>");let u=A.useMemo(()=>({...Z,...s?.labels,...i}),[s?.labels,i]),d=l.getPageCount(),v=Math.max(d,1),y=l.state.pagination.pageIndex;return/* @__PURE__ */ j(`div`,{className:e(`flex items-center justify-end gap-4 px-2`,a),...o,children:/* @__PURE__ */ M(`div`,{className:`flex items-center gap-6 lg:gap-8`,children:[/* @__PURE__ */ M(`div`,{className:`hidden items-center gap-2 sm:flex`,children:[/* @__PURE__ */ j(`p`,{className:`text-sm font-medium`,children:u.rowsPerPage}),/* @__PURE__ */ M(f,{value:`${l.state.pagination.pageSize}`,onValueChange:e=>e!==null&&l.setPageSize(Number(e)),children:[/* @__PURE__ */ j(g,{size:`sm`,className:`h-8 w-20`,children:/* @__PURE__ */ j(_,{})}),/* @__PURE__ */ j(p,{side:`top`,children:/* @__PURE__ */ j(m,{children:r.map(e=>/* @__PURE__ */ j(h,{value:`${e}`,children:e},e))})})]})]}),/* @__PURE__ */ j(`div`,{className:`text-sm font-medium`,children:u.pageOf(y+1,v)}),/* @__PURE__ */ M(`div`,{className:`flex items-center gap-1`,children:[/* @__PURE__ */ j(t,{type:`button`,variant:`secondary`,size:`icon-sm`,className:`hidden lg:inline-flex`,onClick:()=>l.setPageIndex(0),disabled:!l.getCanPreviousPage(),"aria-label":u.goToFirstPage,children:/* @__PURE__ */ j(ee,{})}),/* @__PURE__ */ j(t,{type:`button`,variant:`secondary`,size:`icon-sm`,onClick:()=>l.previousPage(),disabled:!l.getCanPreviousPage(),"aria-label":u.goToPreviousPage,children:/* @__PURE__ */ j(E,{})}),/* @__PURE__ */ j(t,{type:`button`,variant:`secondary`,size:`icon-sm`,onClick:()=>l.nextPage(),disabled:!l.getCanNextPage(),"aria-label":u.goToNextPage,children:/* @__PURE__ */ j(D,{})}),/* @__PURE__ */ j(t,{type:`button`,variant:`secondary`,size:`icon-sm`,className:`hidden lg:inline-flex`,onClick:()=>l.setPageIndex(d-1),disabled:!l.getCanNextPage(),"aria-label":u.goToLastPage,children:/* @__PURE__ */ j(te,{})})]})]})})}function createDataTableSelectColumn(e){let t=e?.labels?.selectAllRows??Z.selectAllRows,r=e?.labels?.selectRow??Z.selectRow;return{id:`select`,enableSorting:!1,enableHiding:!1,header:({table:e})=>/* @__PURE__ */ j(n,{"aria-label":t,checked:e.getIsAllPageRowsSelected(),indeterminate:!e.getIsAllPageRowsSelected()&&e.getIsSomePageRowsSelected(),onCheckedChange:t=>e.toggleAllPageRowsSelected(t)}),cell:({row:e})=>/* @__PURE__ */ j(n,{"aria-label":r,checked:e.getIsSelected(),indeterminate:!e.getIsSelected()&&e.getIsSomeSelected(),disabled:!e.getCanSelect(),onCheckedChange:t=>e.toggleSelected(t)})}}function DataTable({columns:e,data:t,getRowId:n,filterColumns:r,pageSize:i=10,pageSizeOptions:a,enableRowSelection:o=!1,enableSorting:s=!1,showPagination:c=!1,showColumnVisibility:l=!1,toolbarActions:u,labels:d,className:f,tableClassName:p,variant:m}){return/* @__PURE__ */ M(DataTableRoot,{columns:e,data:t,getRowId:n,pageSize:i,enableRowSelection:o,enableSorting:s,enablePagination:c,labels:d,className:f,children:[/* @__PURE__ */ j(DataTableToolbar,{filterColumns:r,showColumnVisibility:l,toolbarActions:u}),/* @__PURE__ */ j(x,{children:/* @__PURE__ */ M(v,{className:p,variant:m,children:[/* @__PURE__ */ j(DataTableHeader,{}),/* @__PURE__ */ j(DataTableBody,{})]})}),c?/* @__PURE__ */ j(DataTablePagination,{pageSizeOptions:a}):null]})}export{DataTable,DataTableBody,DataTableColumnHeader,DataTableHeader,DataTablePagination,DataTableRoot,DataTableToolbar,DataTableViewOptions,createDataTableSelectColumn,Z as defaultDataTableLabels,useDataTable,useDataTableContext};
2
2
  //# sourceMappingURL=data-table.js.map