@moduix/react 2.5.1 → 2.7.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 (204) hide show
  1. package/README.md +24 -3
  2. package/THIRD_PARTY_NOTICES.md +49 -0
  3. package/dist/components/accordion/Accordion.js +20 -21
  4. package/dist/components/alert/Alert.js +18 -19
  5. package/dist/components/alert/Alert_module.css +3 -16
  6. package/dist/components/angle-slider/AngleSlider.d.ts +5 -11
  7. package/dist/components/angle-slider/AngleSlider.js +29 -71
  8. package/dist/components/aspect-ratio/AspectRatio.js +1 -2
  9. package/dist/components/aspect-ratio/AspectRatio_module.css +0 -13
  10. package/dist/components/avatar/Avatar.d.ts +3 -6
  11. package/dist/components/avatar/Avatar.js +14 -57
  12. package/dist/components/avatar/Avatar.module.js +1 -2
  13. package/dist/components/avatar/Avatar_module.css +0 -6
  14. package/dist/components/badge/Badge.d.ts +2 -2
  15. package/dist/components/badge/Badge.js +5 -10
  16. package/dist/components/badge/Badge_module.css +7 -14
  17. package/dist/components/bleed/Bleed.js +1 -2
  18. package/dist/components/breadcrumbs/Breadcrumbs.d.ts +1 -1
  19. package/dist/components/breadcrumbs/Breadcrumbs.js +16 -32
  20. package/dist/components/breadcrumbs/Breadcrumbs_module.css +12 -14
  21. package/dist/components/button/Button.d.ts +4 -4
  22. package/dist/components/button/Button.js +1 -2
  23. package/dist/components/button/Button_module.css +2 -8
  24. package/dist/components/card/Card.d.ts +15 -15
  25. package/dist/components/card/Card.js +30 -31
  26. package/dist/components/card/Card_module.css +2 -18
  27. package/dist/components/carousel/Carousel.d.ts +1 -1
  28. package/dist/components/carousel/Carousel.js +34 -35
  29. package/dist/components/carousel/Carousel_module.css +7 -0
  30. package/dist/components/chart/Chart.d.ts +9 -8
  31. package/dist/components/chart/Chart.js +21 -22
  32. package/dist/components/chart/Chart_module.css +0 -2
  33. package/dist/components/checkbox/Checkbox.d.ts +3 -2
  34. package/dist/components/checkbox/Checkbox.js +20 -43
  35. package/dist/components/clipboard/Clipboard.js +27 -27
  36. package/dist/components/close-button/CloseButton.js +1 -2
  37. package/dist/components/close-button/CloseButton_module.css +1 -10
  38. package/dist/components/collapsible/Collapsible.js +17 -20
  39. package/dist/components/collapsible/Collapsible_module.css +2 -4
  40. package/dist/components/color-picker/ColorPicker.d.ts +4 -3
  41. package/dist/components/color-picker/ColorPicker.js +79 -92
  42. package/dist/components/color-picker/ColorPicker_module.css +0 -1
  43. package/dist/components/combobox/Combobox.d.ts +5 -5
  44. package/dist/components/combobox/Combobox.js +51 -60
  45. package/dist/components/combobox/Combobox_module.css +0 -1
  46. package/dist/components/command-palette/CommandPalette.d.ts +7 -18
  47. package/dist/components/command-palette/CommandPalette.js +99 -126
  48. package/dist/components/command-palette/CommandPalette_module.css +11 -18
  49. package/dist/components/container/Container.js +1 -2
  50. package/dist/components/container/Container_module.css +1 -1
  51. package/dist/components/date-input/DateInput.d.ts +7 -9
  52. package/dist/components/date-input/DateInput.js +24 -54
  53. package/dist/components/date-input/DateInput_module.css +0 -1
  54. package/dist/components/date-picker/DatePicker.d.ts +1 -1
  55. package/dist/components/date-picker/DatePicker.js +84 -93
  56. package/dist/components/date-picker/DatePicker.module.js +1 -1
  57. package/dist/components/date-picker/DatePicker_module.css +5 -2
  58. package/dist/components/dialog/Dialog.d.ts +1 -1
  59. package/dist/components/dialog/Dialog.js +31 -32
  60. package/dist/components/drawer/Drawer.d.ts +6 -3
  61. package/dist/components/drawer/Drawer.js +63 -54
  62. package/dist/components/editable/Editable.d.ts +1 -1
  63. package/dist/components/editable/Editable.js +27 -28
  64. package/dist/components/empty/Empty.js +18 -19
  65. package/dist/components/field/Field.js +29 -30
  66. package/dist/components/fieldset/Fieldset.js +15 -16
  67. package/dist/components/file-upload/FileUpload.d.ts +3 -2
  68. package/dist/components/file-upload/FileUpload.js +52 -79
  69. package/dist/components/file-upload/FileUpload_module.css +4 -13
  70. package/dist/components/floating-panel/FloatingPanel.d.ts +3 -3
  71. package/dist/components/floating-panel/FloatingPanel.js +36 -37
  72. package/dist/components/floating-panel/FloatingPanel_module.css +4 -17
  73. package/dist/components/floating-panel/index.d.ts +1 -0
  74. package/dist/components/heading/Heading.js +1 -2
  75. package/dist/components/highlight/Highlight.js +1 -2
  76. package/dist/components/hover-card/HoverCard.d.ts +3 -2
  77. package/dist/components/hover-card/HoverCard.js +24 -15
  78. package/dist/components/hover-card/HoverCard.module.js +1 -0
  79. package/dist/components/hover-card/HoverCard_module.css +18 -3
  80. package/dist/components/hover-card/index.d.ts +1 -0
  81. package/dist/components/image/Image.js +1 -2
  82. package/dist/components/image-cropper/ImageCropper.d.ts +1 -1
  83. package/dist/components/image-cropper/ImageCropper.js +21 -22
  84. package/dist/components/input/Input.d.ts +4 -4
  85. package/dist/components/input/Input.js +1 -2
  86. package/dist/components/input-group/InputGroup.d.ts +5 -5
  87. package/dist/components/input-group/InputGroup.js +5 -6
  88. package/dist/components/json-tree-view/JsonTreeView.js +3 -4
  89. package/dist/components/json-tree-view/JsonTreeView_module.css +26 -10
  90. package/dist/components/kbd/Kbd.js +6 -7
  91. package/dist/components/lightbox/Lightbox.d.ts +1 -1
  92. package/dist/components/lightbox/Lightbox.js +38 -39
  93. package/dist/components/lightbox/Lightbox_module.css +0 -2
  94. package/dist/components/list/List.js +2 -3
  95. package/dist/components/listbox/Listbox.d.ts +5 -5
  96. package/dist/components/listbox/Listbox.js +50 -56
  97. package/dist/components/listbox/Listbox.module.js +2 -2
  98. package/dist/components/listbox/Listbox_module.css +3 -13
  99. package/dist/components/marquee/Marquee.js +18 -19
  100. package/dist/components/menu/Menu.d.ts +2 -1
  101. package/dist/components/menu/Menu.js +72 -79
  102. package/dist/components/menu/Menu.module.js +1 -1
  103. package/dist/components/menu/Menu_module.css +8 -8
  104. package/dist/components/native-select/NativeSelect.js +2 -3
  105. package/dist/components/native-select/NativeSelect_module.css +0 -1
  106. package/dist/components/navigation-menu/NavigationMenu.js +39 -58
  107. package/dist/components/navigation-menu/NavigationMenu.module.js +2 -3
  108. package/dist/components/navigation-menu/NavigationMenu_module.css +15 -32
  109. package/dist/components/number-input/NumberInput.js +25 -26
  110. package/dist/components/pagination/Pagination.js +28 -31
  111. package/dist/components/pagination/Pagination_module.css +1 -5
  112. package/dist/components/password-input/PasswordInput.js +20 -21
  113. package/dist/components/pin-input/PinInput.d.ts +3 -2
  114. package/dist/components/pin-input/PinInput.js +20 -61
  115. package/dist/components/popover/Popover.d.ts +5 -3
  116. package/dist/components/popover/Popover.js +41 -42
  117. package/dist/components/progress-circular/ProgressCircular.js +24 -25
  118. package/dist/components/progress-circular/ProgressCircular.module.js +1 -3
  119. package/dist/components/progress-circular/ProgressCircular_module.css +0 -10
  120. package/dist/components/progress-linear/ProgressLinear.js +21 -22
  121. package/dist/components/progress-linear/ProgressLinear.module.js +1 -5
  122. package/dist/components/progress-linear/ProgressLinear_module.css +0 -20
  123. package/dist/components/qr-code/QrCode.js +18 -19
  124. package/dist/components/radio-group/RadioGroup.d.ts +1 -0
  125. package/dist/components/radio-group/RadioGroup.js +25 -39
  126. package/dist/components/radio-group/RadioGroup_module.css +0 -1
  127. package/dist/components/rating-group/RatingGroup.d.ts +1 -0
  128. package/dist/components/rating-group/RatingGroup.js +19 -36
  129. package/dist/components/rating-group/RatingGroup_module.css +1 -1
  130. package/dist/components/scroll-area/ScrollArea.js +7 -8
  131. package/dist/components/segment-group/SegmentGroup.d.ts +1 -0
  132. package/dist/components/segment-group/SegmentGroup.js +28 -42
  133. package/dist/components/segment-group/SegmentGroup_module.css +4 -0
  134. package/dist/components/select/Select.d.ts +4 -7
  135. package/dist/components/select/Select.js +69 -119
  136. package/dist/components/select/Select.module.js +1 -1
  137. package/dist/components/select/Select_module.css +4 -31
  138. package/dist/components/separator/Separator.d.ts +6 -6
  139. package/dist/components/separator/Separator.js +1 -2
  140. package/dist/components/sidebar/Sidebar.d.ts +16 -16
  141. package/dist/components/sidebar/Sidebar.js +81 -86
  142. package/dist/components/sidebar/Sidebar.module.js +2 -3
  143. package/dist/components/sidebar/Sidebar_module.css +62 -158
  144. package/dist/components/signature-pad/SignaturePad.d.ts +5 -8
  145. package/dist/components/signature-pad/SignaturePad.js +28 -57
  146. package/dist/components/signature-pad/SignaturePad_module.css +0 -1
  147. package/dist/components/simple-grid/SimpleGrid.js +13 -8
  148. package/dist/components/skeleton/Skeleton.d.ts +2 -2
  149. package/dist/components/skeleton/Skeleton.js +1 -2
  150. package/dist/components/slider/Slider.d.ts +2 -2
  151. package/dist/components/slider/Slider.js +38 -52
  152. package/dist/components/spinner/Spinner.d.ts +2 -2
  153. package/dist/components/spinner/Spinner.js +1 -2
  154. package/dist/components/split-button/SplitButton.d.ts +7 -7
  155. package/dist/components/split-button/SplitButton.js +25 -17
  156. package/dist/components/splitter/Splitter.js +14 -15
  157. package/dist/components/splitter/Splitter_module.css +2 -10
  158. package/dist/components/stack/Stack.d.ts +6 -6
  159. package/dist/components/stack/Stack.js +4 -5
  160. package/dist/components/stack/Stack_module.css +1 -1
  161. package/dist/components/steps/Steps.js +35 -36
  162. package/dist/components/steps/Steps_module.css +2 -3
  163. package/dist/components/swap/Swap.js +9 -10
  164. package/dist/components/switch/Switch.d.ts +3 -2
  165. package/dist/components/switch/Switch.js +17 -40
  166. package/dist/components/switch/Switch_module.css +0 -1
  167. package/dist/components/table/Table.d.ts +5 -5
  168. package/dist/components/table/Table.js +35 -36
  169. package/dist/components/tabs/Tabs.js +18 -19
  170. package/dist/components/tabs/Tabs_module.css +5 -10
  171. package/dist/components/tag/Tag.js +5 -6
  172. package/dist/components/tag/Tag_module.css +2 -4
  173. package/dist/components/tags-input/TagsInput.d.ts +3 -3
  174. package/dist/components/tags-input/TagsInput.js +37 -91
  175. package/dist/components/tags-input/TagsInput_module.css +0 -1
  176. package/dist/components/text/Text.js +1 -2
  177. package/dist/components/textarea/Textarea.js +1 -2
  178. package/dist/components/timer/Timer.js +21 -22
  179. package/dist/components/toast/Toast.d.ts +1 -1
  180. package/dist/components/toast/Toast.js +15 -16
  181. package/dist/components/toast/Toast_module.css +1 -2
  182. package/dist/components/toc/Toc.js +29 -30
  183. package/dist/components/toc/Toc_module.css +2 -2
  184. package/dist/components/toggle/Toggle.js +6 -7
  185. package/dist/components/toggle-group/ToggleGroup.d.ts +1 -1
  186. package/dist/components/toggle-group/ToggleGroup.js +3 -4
  187. package/dist/components/tooltip/Tooltip.d.ts +1 -1
  188. package/dist/components/tooltip/Tooltip.js +17 -18
  189. package/dist/components/tooltip/Tooltip_module.css +1 -1
  190. package/dist/components/tour/Tour.d.ts +1 -1
  191. package/dist/components/tour/Tour.js +39 -40
  192. package/dist/components/tree-view/TreeView.d.ts +4 -4
  193. package/dist/components/tree-view/TreeView.js +47 -48
  194. package/dist/components/tree-view/TreeView_module.css +39 -12
  195. package/dist/components/typeset/Typeset.js +2 -3
  196. package/dist/components/typeset/Typeset_module.css +300 -159
  197. package/dist/internal/icons/ui/Icons.d.ts +9 -30
  198. package/dist/internal/icons/ui/Icons.js +67 -807
  199. package/dist/internal/icons/ui/index.d.ts +1 -1
  200. package/dist/styles/animations.css +310 -0
  201. package/dist/styles/style.css +168 -2
  202. package/package.json +23 -23
  203. package/dist/internal/normalizeClassName.d.ts +0 -1
  204. package/dist/internal/normalizeClassName.js +0 -2
@@ -112,7 +112,6 @@
112
112
  --moduix-close-button-color: var(--moduix-listbox-filter-icon-color, var(--moduix-color-muted-foreground));
113
113
  --moduix-close-button-color-hover: var(--moduix-listbox-filter-action-color-hover, var(--moduix-color-foreground));
114
114
  --moduix-close-button-icon-size: var(--moduix-listbox-filter-icon-size, var(--moduix-spacing-4));
115
- --moduix-close-button-transition: var(--moduix-listbox-transition, var(--moduix-transition-default));
116
115
  position: absolute;
117
116
  inset-inline-end: var(--moduix-listbox-filter-padding-x, var(--moduix-spacing-3));
118
117
  transform: translateY(-50%);
@@ -132,7 +131,6 @@
132
131
  solid transparent;
133
132
  outline-offset: calc(var(--moduix-listbox-focus-ring-width, var(--moduix-focus-ring-inset-width, var(--moduix-border-width-sm))) *
134
133
  -1);
135
- overscroll-behavior: auto;
136
134
  scrollbar-gutter: stable;
137
135
  scroll-padding-block: var(--moduix-listbox-content-padding-y, var(--moduix-popup-list-padding-y, var(--moduix-spacing-1)));
138
136
  transition: border-color var(--moduix-listbox-transition, var(--moduix-transition-default)),
@@ -156,7 +154,7 @@
156
154
  .content-bWizSr[data-orientation="horizontal"]:not([data-layout="grid"]) {
157
155
  gap: var(--moduix-listbox-horizontal-gap, var(--moduix-spacing-2));
158
156
  max-height: var(--moduix-listbox-horizontal-content-max-height, none);
159
- padding-inline: var(--moduix-listbox-content-padding-y, var(--moduix-spacing-1));
157
+ padding-inline: var(--moduix-spacing-1);
160
158
  flex-direction: row;
161
159
  overflow: auto hidden;
162
160
  }
@@ -219,7 +217,7 @@
219
217
  }
220
218
 
221
219
  @media (hover: hover) {
222
- .item-zgaYnD:not([data-disabled]):hover {
220
+ .item-zgaYnD:where(:not([data-disabled]):hover) {
223
221
  background-color: var(--moduix-listbox-hover-bg, var(--moduix-listbox-highlight-bg, var(--moduix-color-accent)));
224
222
  color: var(--moduix-listbox-hover-color, var(--moduix-listbox-highlight-color, var(--moduix-color-accent-foreground)));
225
223
  }
@@ -261,10 +259,9 @@
261
259
  color: var(--moduix-listbox-grid-selected-color, var(--moduix-color-foreground));
262
260
  }
263
261
 
264
- .itemText-UXCIHm {
262
+ .itemText-UXCIHm, .itemTextLabel-gzLhrK {
265
263
  text-overflow: ellipsis;
266
264
  white-space: nowrap;
267
- flex: 1;
268
265
  min-width: 0;
269
266
  overflow: hidden;
270
267
  }
@@ -312,12 +309,5 @@
312
309
  align-items: center;
313
310
  display: inline-flex;
314
311
  }
315
-
316
- .itemTextLabel-gzLhrK {
317
- text-overflow: ellipsis;
318
- white-space: nowrap;
319
- min-width: 0;
320
- overflow: hidden;
321
- }
322
312
  }
323
313
 
@@ -2,54 +2,53 @@ import { jsx } from "react/jsx-runtime";
2
2
  import { Marquee, useMarquee, useMarqueeContext } from "@ark-ui/react/marquee";
3
3
  import { clsx } from "clsx";
4
4
  import { forwardRef } from "react";
5
- import { normalizeClassName } from "../../internal/normalizeClassName.js";
6
5
  import Marquee_module from "./Marquee.module.js";
7
6
  const Marquee_MarqueeRoot = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
8
7
  return /*#__PURE__*/ jsx(Marquee.Root, {
9
8
  ref: ref,
10
- "data-slot": "marquee-root",
11
- className: clsx(Marquee_module.root, normalizeClassName(className)),
12
- ...props
9
+ className: clsx(Marquee_module.root, className),
10
+ ...props,
11
+ "data-slot": "marquee-root"
13
12
  });
14
13
  });
15
14
  const Marquee_MarqueeRootProvider = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
16
15
  return /*#__PURE__*/ jsx(Marquee.RootProvider, {
17
16
  ref: ref,
18
- "data-slot": "marquee-root-provider",
19
- className: clsx(Marquee_module.root, normalizeClassName(className)),
20
- ...props
17
+ className: clsx(Marquee_module.root, className),
18
+ ...props,
19
+ "data-slot": "marquee-root-provider"
21
20
  });
22
21
  });
23
22
  const Marquee_MarqueeViewport = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
24
23
  return /*#__PURE__*/ jsx(Marquee.Viewport, {
25
24
  ref: ref,
26
- "data-slot": "marquee-viewport",
27
- className: clsx(Marquee_module.viewport, normalizeClassName(className)),
28
- ...props
25
+ className: clsx(Marquee_module.viewport, className),
26
+ ...props,
27
+ "data-slot": "marquee-viewport"
29
28
  });
30
29
  });
31
30
  const Marquee_MarqueeContent = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
32
31
  return /*#__PURE__*/ jsx(Marquee.Content, {
33
32
  ref: ref,
34
- "data-slot": "marquee-content",
35
- className: clsx(Marquee_module.content, normalizeClassName(className)),
36
- ...props
33
+ className: clsx(Marquee_module.content, className),
34
+ ...props,
35
+ "data-slot": "marquee-content"
37
36
  });
38
37
  });
39
38
  const Marquee_MarqueeItem = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
40
39
  return /*#__PURE__*/ jsx(Marquee.Item, {
41
40
  ref: ref,
42
- "data-slot": "marquee-item",
43
- className: clsx(Marquee_module.item, normalizeClassName(className)),
44
- ...props
41
+ className: clsx(Marquee_module.item, className),
42
+ ...props,
43
+ "data-slot": "marquee-item"
45
44
  });
46
45
  });
47
46
  const Marquee_MarqueeEdge = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
48
47
  return /*#__PURE__*/ jsx(Marquee.Edge, {
49
48
  ref: ref,
50
- "data-slot": "marquee-edge",
51
- className: clsx(Marquee_module.edge, normalizeClassName(className)),
52
- ...props
49
+ className: clsx(Marquee_module.edge, className),
50
+ ...props,
51
+ "data-slot": "marquee-edge"
53
52
  });
54
53
  });
55
54
  const Marquee_Marquee = Object.assign(Marquee_MarqueeRoot, {
@@ -1,6 +1,6 @@
1
1
  import { Menu as MenuPrimitive, useMenu, useMenuContext, useMenuItemContext } from '@ark-ui/react/menu';
2
2
  import type { ComponentProps } from 'react';
3
- import { type OverlayPortalProps } from '../../internal/overlayPortal';
3
+ import { type OverlayPortalProps } from '../../internal/overlayPortal.js';
4
4
  type MenuIndicatorPosition = 'start' | 'end' | 'none';
5
5
  type MenuItemTone = 'default' | 'destructive';
6
6
  type MenuItemProps = ComponentProps<typeof MenuPrimitive.Item> & {
@@ -28,6 +28,7 @@ declare const Menu: typeof MenuRoot & {
28
28
  ContextTrigger: import("react").ForwardRefExoticComponent<Omit<MenuPrimitive.ContextTriggerProps & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
29
29
  Positioner: import("react").ForwardRefExoticComponent<Omit<MenuPrimitive.PositionerProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
30
30
  Content: import("react").ForwardRefExoticComponent<Omit<MenuPrimitive.ContentProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
31
+ Viewport: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("@ark-ui/react/factory").PolymorphicProps & import("react").RefAttributes<HTMLDivElement>>;
31
32
  Arrow: import("react").ForwardRefExoticComponent<Omit<MenuPrimitive.ArrowProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
32
33
  ArrowTip: import("react").ForwardRefExoticComponent<Omit<MenuPrimitive.ArrowTipProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
33
34
  Item: import("react").ForwardRefExoticComponent<Omit<MenuItemProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,11 +1,10 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { jsx } from "react/jsx-runtime";
3
3
  import { ark } from "@ark-ui/react/factory";
4
4
  import { Menu, useMenu, useMenuContext, useMenuItemContext } from "@ark-ui/react/menu";
5
5
  import { clsx } from "clsx";
6
- import { Children, forwardRef, isValidElement } from "react";
6
+ import { forwardRef } from "react";
7
7
  import { CheckIcon, ChevronDownIcon, ChevronRightIcon } from "../../internal/icons/ui/index.js";
8
- import { normalizeClassName } from "../../internal/normalizeClassName.js";
9
8
  import { OverlayPortal, OverlayPortalProvider } from "../../internal/overlayPortal.js";
10
9
  import Menu_module from "./Menu.module.js";
11
10
  function MenuRoot({ lazyMount = true, portalled, portalRef, unmountOnExit = true, ...props }) {
@@ -33,17 +32,17 @@ function MenuRootProvider({ lazyMount = true, portalled, portalRef, unmountOnExi
33
32
  const Menu_MenuTrigger = /*#__PURE__*/ forwardRef(function({ asChild, className, ...props }, ref) {
34
33
  return /*#__PURE__*/ jsx(Menu.Trigger, {
35
34
  ref: ref,
36
- "data-slot": "menu-trigger",
37
35
  asChild: asChild,
38
- className: clsx(!asChild && Menu_module.trigger, normalizeClassName(className)),
39
- ...props
36
+ className: clsx(!asChild && Menu_module.trigger, className),
37
+ ...props,
38
+ "data-slot": "menu-trigger"
40
39
  });
41
40
  });
42
41
  function MenuTriggerIcon({ className, children, ...props }) {
43
42
  return /*#__PURE__*/ jsx("span", {
44
- "data-slot": "menu-trigger-icon",
45
43
  className: clsx(Menu_module.triggerIcon, className),
46
44
  ...props,
45
+ "data-slot": "menu-trigger-icon",
47
46
  children: children ?? /*#__PURE__*/ jsx(ChevronDownIcon, {
48
47
  className: Menu_module.iconSvg
49
48
  })
@@ -52,9 +51,9 @@ function MenuTriggerIcon({ className, children, ...props }) {
52
51
  const Menu_MenuIndicator = /*#__PURE__*/ forwardRef(function({ className, children, ...props }, ref) {
53
52
  return /*#__PURE__*/ jsx(Menu.Indicator, {
54
53
  ref: ref,
55
- "data-slot": "menu-indicator",
56
- className: clsx(Menu_module.indicator, normalizeClassName(className)),
54
+ className: clsx(Menu_module.indicator, className),
57
55
  ...props,
56
+ "data-slot": "menu-indicator",
58
57
  children: children ?? /*#__PURE__*/ jsx(ChevronDownIcon, {
59
58
  className: Menu_module.iconSvg
60
59
  })
@@ -63,89 +62,82 @@ const Menu_MenuIndicator = /*#__PURE__*/ forwardRef(function({ className, childr
63
62
  const Menu_MenuContextTrigger = /*#__PURE__*/ forwardRef(function({ asChild, className, ...props }, ref) {
64
63
  return /*#__PURE__*/ jsx(Menu.ContextTrigger, {
65
64
  ref: ref,
66
- "data-slot": "menu-context-trigger",
67
65
  asChild: asChild,
68
- className: clsx(!asChild && Menu_module.contextTrigger, normalizeClassName(className)),
69
- ...props
66
+ className: clsx(!asChild && Menu_module.contextTrigger, className),
67
+ ...props,
68
+ "data-slot": "menu-context-trigger"
70
69
  });
71
70
  });
72
71
  const Menu_MenuPositioner = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
73
72
  return /*#__PURE__*/ jsx(OverlayPortal, {
74
73
  children: /*#__PURE__*/ jsx(Menu.Positioner, {
75
74
  ref: ref,
76
- "data-slot": "menu-positioner",
77
- className: clsx(Menu_module.positioner, normalizeClassName(className)),
78
- ...props
75
+ className: clsx(Menu_module.positioner, className),
76
+ ...props,
77
+ "data-slot": "menu-positioner"
79
78
  })
80
79
  });
81
80
  });
82
81
  const Menu_MenuContent = /*#__PURE__*/ forwardRef(function({ asChild, className, children, ...props }, ref) {
83
- if (asChild) return /*#__PURE__*/ jsx(Menu.Content, {
82
+ return /*#__PURE__*/ jsx(Menu.Content, {
84
83
  ref: ref,
85
- "data-slot": "menu-content",
86
- asChild: true,
87
- className: clsx(Menu_module.content, normalizeClassName(className)),
84
+ asChild: asChild,
85
+ className: clsx(Menu_module.content, className),
88
86
  ...props,
87
+ "data-slot": "menu-content",
89
88
  children: children
90
89
  });
91
- const childrenArray = Children.toArray(children);
92
- const arrows = childrenArray.filter((child)=>/*#__PURE__*/ isValidElement(child) && child.type === Menu_MenuArrow);
93
- const content = childrenArray.filter((child)=>!/*#__PURE__*/ isValidElement(child) || child.type !== Menu_MenuArrow);
94
- return /*#__PURE__*/ jsxs(Menu.Content, {
90
+ });
91
+ const Menu_MenuViewport = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
92
+ return /*#__PURE__*/ jsx(ark.div, {
95
93
  ref: ref,
96
- "data-slot": "menu-content",
97
- asChild: asChild,
98
- className: clsx(Menu_module.content, normalizeClassName(className)),
94
+ "data-scope": "menu",
95
+ "data-part": "viewport",
96
+ className: clsx(Menu_module.viewport, className),
99
97
  ...props,
100
- children: [
101
- arrows,
102
- /*#__PURE__*/ jsx("div", {
103
- className: Menu_module.contentViewport,
104
- children: content
105
- })
106
- ]
98
+ "data-slot": "menu-viewport"
107
99
  });
108
100
  });
109
101
  const Menu_MenuArrow = /*#__PURE__*/ forwardRef(function({ className, children, ...props }, ref) {
110
102
  return /*#__PURE__*/ jsx(Menu.Arrow, {
111
103
  ref: ref,
112
- "data-slot": "menu-arrow",
113
- className: clsx(Menu_module.arrow, normalizeClassName(className)),
104
+ className: clsx(Menu_module.arrow, className),
114
105
  ...props,
106
+ "data-slot": "menu-arrow",
115
107
  children: children ?? /*#__PURE__*/ jsx(Menu_MenuArrowTip, {})
116
108
  });
117
109
  });
118
110
  const Menu_MenuArrowTip = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
119
111
  return /*#__PURE__*/ jsx(Menu.ArrowTip, {
120
112
  ref: ref,
121
- "data-slot": "menu-arrow-tip",
122
- className: clsx(Menu_module.arrowTip, normalizeClassName(className)),
123
- ...props
113
+ className: clsx(Menu_module.arrowTip, className),
114
+ ...props,
115
+ "data-slot": "menu-arrow-tip"
124
116
  });
125
117
  });
126
118
  const Menu_MenuItem = /*#__PURE__*/ forwardRef(function({ className, tone = 'default', ...props }, ref) {
127
119
  return /*#__PURE__*/ jsx(Menu.Item, {
128
120
  ref: ref,
129
- "data-slot": "menu-item",
130
121
  "data-tone": tone,
131
- className: clsx(Menu_module.item, normalizeClassName(className)),
132
- ...props
122
+ className: clsx(Menu_module.item, className),
123
+ ...props,
124
+ "data-slot": "menu-item"
133
125
  });
134
126
  });
135
127
  const Menu_MenuTriggerItem = /*#__PURE__*/ forwardRef(function({ className, children, ...props }, ref) {
136
128
  return /*#__PURE__*/ jsx(Menu.TriggerItem, {
137
129
  ref: ref,
138
- "data-slot": "menu-trigger-item",
139
- className: clsx(Menu_module.triggerItem, normalizeClassName(className)),
130
+ className: clsx(Menu_module.triggerItem, className),
140
131
  ...props,
132
+ "data-slot": "menu-trigger-item",
141
133
  children: children
142
134
  });
143
135
  });
144
136
  function MenuTriggerItemIcon({ className, children, ...props }) {
145
137
  return /*#__PURE__*/ jsx("span", {
146
- "data-slot": "menu-trigger-item-icon",
147
138
  className: clsx(Menu_module.triggerItemIcon, className),
148
139
  ...props,
140
+ "data-slot": "menu-trigger-item-icon",
149
141
  children: children ?? /*#__PURE__*/ jsx(ChevronRightIcon, {
150
142
  className: Menu_module.iconSvg
151
143
  })
@@ -154,59 +146,59 @@ function MenuTriggerItemIcon({ className, children, ...props }) {
154
146
  const Menu_MenuSeparator = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
155
147
  return /*#__PURE__*/ jsx(Menu.Separator, {
156
148
  ref: ref,
157
- "data-slot": "menu-separator",
158
- className: clsx(Menu_module.separator, normalizeClassName(className)),
159
- ...props
149
+ className: clsx(Menu_module.separator, className),
150
+ ...props,
151
+ "data-slot": "menu-separator"
160
152
  });
161
153
  });
162
154
  const Menu_MenuItemGroup = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
163
155
  return /*#__PURE__*/ jsx(Menu.ItemGroup, {
164
156
  ref: ref,
165
- "data-slot": "menu-item-group",
166
- className: clsx(Menu_module.itemGroup, normalizeClassName(className)),
167
- ...props
157
+ className: clsx(Menu_module.itemGroup, className),
158
+ ...props,
159
+ "data-slot": "menu-item-group"
168
160
  });
169
161
  });
170
162
  const Menu_MenuItemGroupLabel = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
171
163
  return /*#__PURE__*/ jsx(Menu.ItemGroupLabel, {
172
164
  ref: ref,
173
- "data-slot": "menu-item-group-label",
174
- className: clsx(Menu_module.itemGroupLabel, normalizeClassName(className)),
175
- ...props
165
+ className: clsx(Menu_module.itemGroupLabel, className),
166
+ ...props,
167
+ "data-slot": "menu-item-group-label"
176
168
  });
177
169
  });
178
170
  const Menu_MenuRadioItemGroup = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
179
171
  return /*#__PURE__*/ jsx(Menu.RadioItemGroup, {
180
172
  ref: ref,
181
- "data-slot": "menu-radio-item-group",
182
- className: clsx(Menu_module.radioItemGroup, normalizeClassName(className)),
183
- ...props
173
+ className: clsx(Menu_module.radioItemGroup, className),
174
+ ...props,
175
+ "data-slot": "menu-radio-item-group"
184
176
  });
185
177
  });
186
178
  const Menu_MenuRadioItem = /*#__PURE__*/ forwardRef(function({ className, indicator = 'start', ...props }, ref) {
187
179
  return /*#__PURE__*/ jsx(Menu.RadioItem, {
188
180
  ref: ref,
189
- "data-slot": "menu-radio-item",
190
181
  "data-indicator-position": indicator,
191
- className: clsx(Menu_module.radioItem, normalizeClassName(className)),
192
- ...props
182
+ className: clsx(Menu_module.radioItem, className),
183
+ ...props,
184
+ "data-slot": "menu-radio-item"
193
185
  });
194
186
  });
195
187
  const Menu_MenuCheckboxItem = /*#__PURE__*/ forwardRef(function({ className, indicator = 'start', ...props }, ref) {
196
188
  return /*#__PURE__*/ jsx(Menu.CheckboxItem, {
197
189
  ref: ref,
198
- "data-slot": "menu-checkbox-item",
199
190
  "data-indicator-position": indicator,
200
- className: clsx(Menu_module.checkboxItem, normalizeClassName(className)),
201
- ...props
191
+ className: clsx(Menu_module.checkboxItem, className),
192
+ ...props,
193
+ "data-slot": "menu-checkbox-item"
202
194
  });
203
195
  });
204
196
  const Menu_MenuItemIndicator = /*#__PURE__*/ forwardRef(function({ className, children, ...props }, ref) {
205
197
  return /*#__PURE__*/ jsx(Menu.ItemIndicator, {
206
198
  ref: ref,
207
- "data-slot": "menu-item-indicator",
208
- className: clsx(Menu_module.itemIndicator, normalizeClassName(className)),
199
+ className: clsx(Menu_module.itemIndicator, className),
209
200
  ...props,
201
+ "data-slot": "menu-item-indicator",
210
202
  children: children ?? /*#__PURE__*/ jsx(CheckIcon, {
211
203
  className: Menu_module.itemIndicatorIcon
212
204
  })
@@ -215,41 +207,41 @@ const Menu_MenuItemIndicator = /*#__PURE__*/ forwardRef(function({ className, ch
215
207
  const Menu_MenuItemText = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
216
208
  return /*#__PURE__*/ jsx(Menu.ItemText, {
217
209
  ref: ref,
218
- "data-slot": "menu-item-text",
219
- className: clsx(Menu_module.itemText, normalizeClassName(className)),
220
- ...props
210
+ className: clsx(Menu_module.itemText, className),
211
+ ...props,
212
+ "data-slot": "menu-item-text"
221
213
  });
222
214
  });
223
215
  const Menu_MenuItemTextContent = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
224
216
  return /*#__PURE__*/ jsx(ark.span, {
225
217
  ref: ref,
226
- "data-slot": "menu-item-text-content",
227
- className: clsx(Menu_module.itemTextContent, normalizeClassName(className)),
228
- ...props
218
+ className: clsx(Menu_module.itemTextContent, className),
219
+ ...props,
220
+ "data-slot": "menu-item-text-content"
229
221
  });
230
222
  });
231
223
  const Menu_MenuItemTextIcon = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
232
224
  return /*#__PURE__*/ jsx(ark.span, {
233
225
  ref: ref,
234
- "data-slot": "menu-item-text-icon",
235
- className: clsx(Menu_module.itemTextIcon, normalizeClassName(className)),
236
- ...props
226
+ className: clsx(Menu_module.itemTextIcon, className),
227
+ ...props,
228
+ "data-slot": "menu-item-text-icon"
237
229
  });
238
230
  });
239
231
  const Menu_MenuItemTextLabel = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
240
232
  return /*#__PURE__*/ jsx(ark.span, {
241
233
  ref: ref,
242
- "data-slot": "menu-item-text-label",
243
- className: clsx(Menu_module.itemTextLabel, normalizeClassName(className)),
244
- ...props
234
+ className: clsx(Menu_module.itemTextLabel, className),
235
+ ...props,
236
+ "data-slot": "menu-item-text-label"
245
237
  });
246
238
  });
247
239
  const Menu_MenuItemShortcut = /*#__PURE__*/ forwardRef(function({ className, ...props }, ref) {
248
240
  return /*#__PURE__*/ jsx(ark.span, {
249
241
  ref: ref,
250
- "data-slot": "menu-item-shortcut",
251
- className: clsx(Menu_module.itemShortcut, normalizeClassName(className)),
252
- ...props
242
+ className: clsx(Menu_module.itemShortcut, className),
243
+ ...props,
244
+ "data-slot": "menu-item-shortcut"
253
245
  });
254
246
  });
255
247
  const Menu_Menu = Object.assign(MenuRoot, {
@@ -262,6 +254,7 @@ const Menu_Menu = Object.assign(MenuRoot, {
262
254
  ContextTrigger: Menu_MenuContextTrigger,
263
255
  Positioner: Menu_MenuPositioner,
264
256
  Content: Menu_MenuContent,
257
+ Viewport: Menu_MenuViewport,
265
258
  Arrow: Menu_MenuArrow,
266
259
  ArrowTip: Menu_MenuArrowTip,
267
260
  Item: Menu_MenuItem,
@@ -8,8 +8,8 @@ const Menu_module = {
8
8
  positioner: "positioner-Dxj8G1",
9
9
  content: "content-yFF7GN",
10
10
  menuContentIn: "menuContentIn-XDpUnW",
11
- contentViewport: "contentViewport-GpY3ZX",
12
11
  menuContentOut: "menuContentOut-Q7Drkj",
12
+ viewport: "viewport-aiGW8J",
13
13
  arrow: "arrow-sziCms",
14
14
  arrowTip: "arrowTip-h3KKa6",
15
15
  item: "item-DZSt0x",
@@ -44,7 +44,7 @@
44
44
  -1);
45
45
  }
46
46
 
47
- :is(.trigger-GnJcCa, .contextTrigger-jyrQRV)[data-disabled], :is(.trigger-GnJcCa, .contextTrigger-jyrQRV):disabled {
47
+ :is(.trigger-GnJcCa, .contextTrigger-jyrQRV)[data-disabled] {
48
48
  pointer-events: none;
49
49
  opacity: var(--moduix-menu-disabled-opacity, var(--moduix-opacity-disabled));
50
50
  }
@@ -100,19 +100,19 @@
100
100
  var(--moduix-popup-motion-easing, var(--moduix-ease-in-out)));
101
101
  }
102
102
 
103
- .content-yFF7GN .contentViewport-GpY3ZX {
104
- max-height: min(var(--moduix-menu-popup-max-height, 24rem), var(--available-height, 100dvh));
105
- flex-direction: column;
106
- display: flex;
107
- overflow: auto;
108
- }
109
-
110
103
  .content-yFF7GN[data-state="closed"] {
111
104
  animation: menuContentOut-Q7Drkj
112
105
  var(--moduix-menu-transition, var(--moduix-popup-motion-duration, var(--moduix-duration-normal))
113
106
  var(--moduix-popup-motion-easing, var(--moduix-ease-in-out)));
114
107
  }
115
108
 
109
+ .viewport-aiGW8J {
110
+ max-height: min(var(--moduix-menu-popup-max-height, 24rem), var(--available-height, 100dvh));
111
+ flex-direction: column;
112
+ display: flex;
113
+ overflow: auto;
114
+ }
115
+
116
116
  .arrow-sziCms {
117
117
  --arrow-background: var(--moduix-menu-popup-bg, var(--moduix-color-popover));
118
118
  }
@@ -3,7 +3,6 @@ import { Field } from "@ark-ui/react/field";
3
3
  import { clsx } from "clsx";
4
4
  import { forwardRef } from "react";
5
5
  import { ChevronDownIcon } from "../../internal/icons/ui/index.js";
6
- import { normalizeClassName } from "../../internal/normalizeClassName.js";
7
6
  import NativeSelect_module from "./NativeSelect.module.js";
8
7
  const NativeSelect_NativeSelectRoot = /*#__PURE__*/ forwardRef(function({ className, controlProps, ...props }, ref) {
9
8
  return /*#__PURE__*/ jsxs("span", {
@@ -11,13 +10,13 @@ const NativeSelect_NativeSelectRoot = /*#__PURE__*/ forwardRef(function({ classN
11
10
  "data-scope": "native-select",
12
11
  "data-part": "control",
13
12
  "data-slot": "native-select-control",
14
- className: clsx(NativeSelect_module.control, normalizeClassName(controlProps?.className)),
13
+ className: clsx(NativeSelect_module.control, controlProps?.className),
15
14
  children: [
16
15
  /*#__PURE__*/ jsx(Field.Select, {
17
16
  ...props,
18
17
  ref: ref,
19
18
  "data-slot": "native-select-root",
20
- className: clsx(NativeSelect_module.root, normalizeClassName(className))
19
+ className: clsx(NativeSelect_module.root, className)
21
20
  }),
22
21
  /*#__PURE__*/ jsx("span", {
23
22
  "aria-hidden": "true",
@@ -1,6 +1,5 @@
1
1
  @layer moduix.components {
2
2
  .control-D7osAi {
3
- width: -moz-fit-content;
4
3
  width: fit-content;
5
4
  min-width: 0;
6
5
  max-width: 100%;