@waveso/ui 0.7.7 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/README.md +2 -3
  2. package/dist/accordion.d.ts +1 -2
  3. package/dist/accordion.js +1 -3
  4. package/dist/action-bar.d.ts +1 -2
  5. package/dist/action-bar.js +24 -11
  6. package/dist/alert-dialog.d.ts +1 -2
  7. package/dist/alert-dialog.js +2 -4
  8. package/dist/alert.d.ts +1 -2
  9. package/dist/alert.js +2 -4
  10. package/dist/animate.d.ts +1 -2
  11. package/dist/animate.js +34 -8
  12. package/dist/aspect-ratio.d.ts +1 -2
  13. package/dist/aspect-ratio.js +0 -2
  14. package/dist/autocomplete.d.ts +1 -2
  15. package/dist/autocomplete.js +4 -6
  16. package/dist/avatar.d.ts +1 -2
  17. package/dist/avatar.js +1 -3
  18. package/dist/badge.d.ts +2 -3
  19. package/dist/badge.js +0 -2
  20. package/dist/breadcrumb.d.ts +1 -2
  21. package/dist/breadcrumb.js +0 -2
  22. package/dist/button-group.d.ts +3 -4
  23. package/dist/button-group.js +1 -2
  24. package/dist/button.d.ts +3 -4
  25. package/dist/button.js +1 -3
  26. package/dist/card.d.ts +1 -2
  27. package/dist/card.js +0 -2
  28. package/dist/checkbox.d.ts +1 -2
  29. package/dist/checkbox.js +6 -8
  30. package/dist/collapsible.d.ts +1 -2
  31. package/dist/collapsible.js +0 -2
  32. package/dist/combobox.d.ts +1 -2
  33. package/dist/combobox.js +2 -4
  34. package/dist/context-menu.d.ts +1 -2
  35. package/dist/context-menu.js +3 -5
  36. package/dist/count.d.ts +1 -2
  37. package/dist/count.js +10 -7
  38. package/dist/dialog.d.ts +1 -2
  39. package/dist/dialog.js +1 -3
  40. package/dist/drawer.d.ts +1 -2
  41. package/dist/drawer.js +2 -4
  42. package/dist/encrypted-text.d.ts +1 -2
  43. package/dist/encrypted-text.js +4 -5
  44. package/dist/field.d.ts +1 -2
  45. package/dist/field.js +2 -4
  46. package/dist/film-grain-shader.d.ts +1 -2
  47. package/dist/film-grain-shader.js +0 -2
  48. package/dist/film-grain-webgl.d.ts +1 -4
  49. package/dist/film-grain-webgl.js +7 -6
  50. package/dist/film-grain.d.ts +1 -2
  51. package/dist/film-grain.js +0 -3
  52. package/dist/form.d.ts +1 -2
  53. package/dist/form.js +0 -2
  54. package/dist/gradient-reveal-text.d.ts +1 -2
  55. package/dist/gradient-reveal-text.js +29 -7
  56. package/dist/hooks/use-mobile.d.ts +1 -2
  57. package/dist/hooks/use-mobile.js +0 -2
  58. package/dist/infinite-scroll.d.ts +1 -2
  59. package/dist/infinite-scroll.js +10 -5
  60. package/dist/input-group.d.ts +2 -3
  61. package/dist/input-group.js +3 -5
  62. package/dist/input-otp.d.ts +1 -2
  63. package/dist/input-otp.js +3 -5
  64. package/dist/input.d.ts +1 -2
  65. package/dist/input.js +1 -3
  66. package/dist/item.d.ts +2 -3
  67. package/dist/item.js +3 -5
  68. package/dist/kbd.d.ts +2 -2
  69. package/dist/kbd.js +1 -2
  70. package/dist/label.d.ts +1 -2
  71. package/dist/label.js +0 -2
  72. package/dist/lib/focus.d.ts +1 -2
  73. package/dist/lib/focus.js +0 -2
  74. package/dist/lib/internal-icons.d.ts +3 -10
  75. package/dist/lib/internal-icons.js +3 -12
  76. package/dist/lib/utils.d.ts +1 -2
  77. package/dist/lib/utils.js +0 -2
  78. package/dist/masonry.d.ts +1 -2
  79. package/dist/masonry.js +0 -2
  80. package/dist/menu.d.ts +1 -2
  81. package/dist/menu.js +3 -5
  82. package/dist/menubar.d.ts +1 -2
  83. package/dist/menubar.js +1 -3
  84. package/dist/pagination.d.ts +1 -2
  85. package/dist/pagination.js +0 -2
  86. package/dist/popover.d.ts +1 -2
  87. package/dist/popover.js +0 -2
  88. package/dist/preview-card.d.ts +1 -2
  89. package/dist/preview-card.js +0 -2
  90. package/dist/progress.d.ts +1 -2
  91. package/dist/progress.js +0 -2
  92. package/dist/radio-group.d.ts +1 -2
  93. package/dist/radio-group.js +0 -2
  94. package/dist/radio.d.ts +1 -2
  95. package/dist/radio.js +1 -3
  96. package/dist/scroll-area.d.ts +1 -2
  97. package/dist/scroll-area.js +1 -3
  98. package/dist/select.d.ts +1 -2
  99. package/dist/select.js +1 -4
  100. package/dist/separator.d.ts +1 -2
  101. package/dist/separator.js +0 -2
  102. package/dist/sidebar.d.ts +1 -2
  103. package/dist/sidebar.js +1 -3
  104. package/dist/skeleton.d.ts +2 -2
  105. package/dist/skeleton.js +1 -2
  106. package/dist/slider.d.ts +1 -2
  107. package/dist/slider.js +0 -2
  108. package/dist/spinner.d.ts +2 -2
  109. package/dist/spinner.js +1 -2
  110. package/dist/styles.css +13 -9
  111. package/dist/switch.d.ts +7 -5
  112. package/dist/switch.js +18 -6
  113. package/dist/table.d.ts +1 -2
  114. package/dist/table.js +0 -2
  115. package/dist/tabs.d.ts +1 -2
  116. package/dist/tabs.js +1 -3
  117. package/dist/textarea.d.ts +1 -2
  118. package/dist/textarea.js +1 -3
  119. package/dist/toast.d.ts +2 -3
  120. package/dist/toast.js +5 -7
  121. package/dist/toggle-group.d.ts +2 -2
  122. package/dist/toggle-group.js +5 -4
  123. package/dist/toggle.d.ts +1 -2
  124. package/dist/toggle.js +1 -3
  125. package/dist/tooltip.d.ts +1 -2
  126. package/dist/tooltip.js +0 -2
  127. package/dist/typewriter.d.ts +1 -2
  128. package/dist/typewriter.js +6 -2
  129. package/package.json +24 -8
  130. package/dist/accordion.d.ts.map +0 -1
  131. package/dist/accordion.js.map +0 -1
  132. package/dist/action-bar.d.ts.map +0 -1
  133. package/dist/action-bar.js.map +0 -1
  134. package/dist/alert-dialog.d.ts.map +0 -1
  135. package/dist/alert-dialog.js.map +0 -1
  136. package/dist/alert.d.ts.map +0 -1
  137. package/dist/alert.js.map +0 -1
  138. package/dist/animate.d.ts.map +0 -1
  139. package/dist/animate.js.map +0 -1
  140. package/dist/aspect-ratio.d.ts.map +0 -1
  141. package/dist/aspect-ratio.js.map +0 -1
  142. package/dist/autocomplete.d.ts.map +0 -1
  143. package/dist/autocomplete.js.map +0 -1
  144. package/dist/avatar.d.ts.map +0 -1
  145. package/dist/avatar.js.map +0 -1
  146. package/dist/badge.d.ts.map +0 -1
  147. package/dist/badge.js.map +0 -1
  148. package/dist/breadcrumb.d.ts.map +0 -1
  149. package/dist/breadcrumb.js.map +0 -1
  150. package/dist/button-group.d.ts.map +0 -1
  151. package/dist/button-group.js.map +0 -1
  152. package/dist/button.d.ts.map +0 -1
  153. package/dist/button.js.map +0 -1
  154. package/dist/card.d.ts.map +0 -1
  155. package/dist/card.js.map +0 -1
  156. package/dist/checkbox.d.ts.map +0 -1
  157. package/dist/checkbox.js.map +0 -1
  158. package/dist/collapsible.d.ts.map +0 -1
  159. package/dist/collapsible.js.map +0 -1
  160. package/dist/combobox.d.ts.map +0 -1
  161. package/dist/combobox.js.map +0 -1
  162. package/dist/context-menu.d.ts.map +0 -1
  163. package/dist/context-menu.js.map +0 -1
  164. package/dist/count.d.ts.map +0 -1
  165. package/dist/count.js.map +0 -1
  166. package/dist/dialog.d.ts.map +0 -1
  167. package/dist/dialog.js.map +0 -1
  168. package/dist/drawer.d.ts.map +0 -1
  169. package/dist/drawer.js.map +0 -1
  170. package/dist/encrypted-text.d.ts.map +0 -1
  171. package/dist/encrypted-text.js.map +0 -1
  172. package/dist/field.d.ts.map +0 -1
  173. package/dist/field.js.map +0 -1
  174. package/dist/film-grain-shader.d.ts.map +0 -1
  175. package/dist/film-grain-shader.js.map +0 -1
  176. package/dist/film-grain-webgl.d.ts.map +0 -1
  177. package/dist/film-grain-webgl.js.map +0 -1
  178. package/dist/film-grain.d.ts.map +0 -1
  179. package/dist/film-grain.js.map +0 -1
  180. package/dist/form.d.ts.map +0 -1
  181. package/dist/form.js.map +0 -1
  182. package/dist/gradient-reveal-text.d.ts.map +0 -1
  183. package/dist/gradient-reveal-text.js.map +0 -1
  184. package/dist/hooks/use-mobile.d.ts.map +0 -1
  185. package/dist/hooks/use-mobile.js.map +0 -1
  186. package/dist/infinite-scroll.d.ts.map +0 -1
  187. package/dist/infinite-scroll.js.map +0 -1
  188. package/dist/input-group.d.ts.map +0 -1
  189. package/dist/input-group.js.map +0 -1
  190. package/dist/input-otp.d.ts.map +0 -1
  191. package/dist/input-otp.js.map +0 -1
  192. package/dist/input.d.ts.map +0 -1
  193. package/dist/input.js.map +0 -1
  194. package/dist/item.d.ts.map +0 -1
  195. package/dist/item.js.map +0 -1
  196. package/dist/kbd.d.ts.map +0 -1
  197. package/dist/kbd.js.map +0 -1
  198. package/dist/label.d.ts.map +0 -1
  199. package/dist/label.js.map +0 -1
  200. package/dist/lib/focus.d.ts.map +0 -1
  201. package/dist/lib/focus.js.map +0 -1
  202. package/dist/lib/internal-icons.d.ts.map +0 -1
  203. package/dist/lib/internal-icons.js.map +0 -1
  204. package/dist/lib/utils.d.ts.map +0 -1
  205. package/dist/lib/utils.js.map +0 -1
  206. package/dist/masonry.d.ts.map +0 -1
  207. package/dist/masonry.js.map +0 -1
  208. package/dist/menu.d.ts.map +0 -1
  209. package/dist/menu.js.map +0 -1
  210. package/dist/menubar.d.ts.map +0 -1
  211. package/dist/menubar.js.map +0 -1
  212. package/dist/pagination.d.ts.map +0 -1
  213. package/dist/pagination.js.map +0 -1
  214. package/dist/popover.d.ts.map +0 -1
  215. package/dist/popover.js.map +0 -1
  216. package/dist/preview-card.d.ts.map +0 -1
  217. package/dist/preview-card.js.map +0 -1
  218. package/dist/progress.d.ts.map +0 -1
  219. package/dist/progress.js.map +0 -1
  220. package/dist/radio-group.d.ts.map +0 -1
  221. package/dist/radio-group.js.map +0 -1
  222. package/dist/radio.d.ts.map +0 -1
  223. package/dist/radio.js.map +0 -1
  224. package/dist/scroll-area.d.ts.map +0 -1
  225. package/dist/scroll-area.js.map +0 -1
  226. package/dist/select.d.ts.map +0 -1
  227. package/dist/select.js.map +0 -1
  228. package/dist/separator.d.ts.map +0 -1
  229. package/dist/separator.js.map +0 -1
  230. package/dist/sidebar.d.ts.map +0 -1
  231. package/dist/sidebar.js.map +0 -1
  232. package/dist/skeleton.d.ts.map +0 -1
  233. package/dist/skeleton.js.map +0 -1
  234. package/dist/slider.d.ts.map +0 -1
  235. package/dist/slider.js.map +0 -1
  236. package/dist/spinner.d.ts.map +0 -1
  237. package/dist/spinner.js.map +0 -1
  238. package/dist/switch.d.ts.map +0 -1
  239. package/dist/switch.js.map +0 -1
  240. package/dist/table.d.ts.map +0 -1
  241. package/dist/table.js.map +0 -1
  242. package/dist/tabs.d.ts.map +0 -1
  243. package/dist/tabs.js.map +0 -1
  244. package/dist/textarea.d.ts.map +0 -1
  245. package/dist/textarea.js.map +0 -1
  246. package/dist/toast.d.ts.map +0 -1
  247. package/dist/toast.js.map +0 -1
  248. package/dist/toggle-group.d.ts.map +0 -1
  249. package/dist/toggle-group.js.map +0 -1
  250. package/dist/toggle.d.ts.map +0 -1
  251. package/dist/toggle.js.map +0 -1
  252. package/dist/tooltip.d.ts.map +0 -1
  253. package/dist/tooltip.js.map +0 -1
  254. package/dist/typewriter.d.ts.map +0 -1
  255. package/dist/typewriter.js.map +0 -1
package/dist/combobox.js CHANGED
@@ -119,7 +119,7 @@ function ComboboxItem({ className, children, ...props }) {
119
119
  function ComboboxGroup({ className, ...props }) {
120
120
  return /* @__PURE__ */ jsx(Combobox$1.Group, {
121
121
  "data-slot": "combobox-group",
122
- className: cn(className),
122
+ className,
123
123
  ...props
124
124
  });
125
125
  }
@@ -177,7 +177,7 @@ function ComboboxChip({ className, children, showRemove = true, ...props }) {
177
177
  function ComboboxChipsInput({ className, ...props }) {
178
178
  return /* @__PURE__ */ jsx(Combobox$1.Input, {
179
179
  "data-slot": "combobox-chip-input",
180
- className: cn("min-w-16 flex-1 outline-none", className),
180
+ className: cn("min-w-16 flex-1 outline-hidden", className),
181
181
  ...props
182
182
  });
183
183
  }
@@ -186,5 +186,3 @@ function useComboboxAnchor() {
186
186
  }
187
187
  //#endregion
188
188
  export { Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxClear, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, useComboboxAnchor };
189
-
190
- //# sourceMappingURL=combobox.js.map
@@ -104,5 +104,4 @@ declare function ContextMenuShortcut({
104
104
  ...props
105
105
  }: ContextMenuShortcutProps): _$react_jsx_runtime0.JSX.Element;
106
106
  //#endregion
107
- export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger };
108
- //# sourceMappingURL=context-menu.d.ts.map
107
+ export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger };
@@ -28,14 +28,14 @@ function ContextMenuTrigger({ className, ...props }) {
28
28
  function ContextMenuContent({ className, align = "start", alignOffset = 4, side = "right", sideOffset = 0, restoreFocusOnClose, finalFocus, ...props }) {
29
29
  return /* @__PURE__ */ jsx(ContextMenu$1.Portal, { children: /* @__PURE__ */ jsx(ContextMenu$1.Positioner, {
30
30
  "data-slot": "context-menu-positioner",
31
- className: "isolate z-50 outline-none",
31
+ className: "isolate z-50 outline-hidden",
32
32
  align,
33
33
  alignOffset,
34
34
  side,
35
35
  sideOffset,
36
36
  children: /* @__PURE__ */ jsx(ContextMenu$1.Popup, {
37
37
  "data-slot": "context-menu-content",
38
- className: cn("motion-pop-md ring-contrast/10 bg-elevated text-contrast z-50 max-h-(--available-height) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md p-1 shadow-md ring-1 outline-none", className),
38
+ className: cn("motion-pop-md ring-contrast/10 bg-elevated text-contrast z-50 max-h-(--available-height) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md p-1 shadow-md ring-1 outline-hidden", className),
39
39
  finalFocus: resolveFinalFocus(restoreFocusOnClose, finalFocus),
40
40
  ...props
41
41
  })
@@ -74,7 +74,7 @@ function ContextMenuSubTrigger({ className, inset, children, ...props }) {
74
74
  return /* @__PURE__ */ jsxs(ContextMenu$1.SubmenuTrigger, {
75
75
  "data-slot": "context-menu-sub-trigger",
76
76
  "data-inset": inset,
77
- className: cn("focus:bg-primary focus:text-white data-open:bg-primary data-open:text-white flex cursor-clickable items-center gap-1.5 rounded-sm px-1.5 py-1 text-sm outline-hidden select-none data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
77
+ className: cn("focus:bg-primary focus:text-white data-popup-open:bg-primary data-popup-open:text-white flex cursor-clickable items-center gap-1.5 rounded-sm px-1.5 py-1 text-sm outline-hidden select-none data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
78
78
  ...props,
79
79
  children: [children, /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto" })]
80
80
  });
@@ -139,5 +139,3 @@ function ContextMenuShortcut({ className, ...props }) {
139
139
  }
140
140
  //#endregion
141
141
  export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger };
142
-
143
- //# sourceMappingURL=context-menu.js.map
package/dist/count.d.ts CHANGED
@@ -83,5 +83,4 @@ declare function Count({
83
83
  /** @deprecated Use `Count` instead */
84
84
  declare const CountUp: typeof Count;
85
85
  //#endregion
86
- export { Count, type CountProps, CountUp, type CountUpProps, easeOut };
87
- //# sourceMappingURL=count.d.ts.map
86
+ export { Count, type CountProps, CountUp, type CountUpProps, easeOut };
package/dist/count.js CHANGED
@@ -160,16 +160,21 @@ function DateCount({ to, delay, format, prefix, suffix, children, once, onComple
160
160
  ]);
161
161
  useEffect(() => {
162
162
  if (!started) return;
163
+ let interval;
163
164
  const tick = () => {
164
165
  const ms = Math.max(0, to.getTime() - Date.now());
165
166
  setRemaining(ms);
166
- if (ms <= 0 && !completedRef.current) {
167
- completedRef.current = true;
168
- onComplete?.();
167
+ if (ms <= 0) {
168
+ clearInterval(interval);
169
+ if (!completedRef.current) {
170
+ completedRef.current = true;
171
+ onComplete?.();
172
+ }
173
+ return true;
169
174
  }
175
+ return false;
170
176
  };
171
- tick();
172
- const interval = setInterval(tick, 1e3);
177
+ if (!tick()) interval = setInterval(tick, 1e3);
173
178
  return () => clearInterval(interval);
174
179
  }, [
175
180
  started,
@@ -187,5 +192,3 @@ function DateCount({ to, delay, format, prefix, suffix, children, once, onComple
187
192
  const CountUp = Count;
188
193
  //#endregion
189
194
  export { Count, CountUp, easeOut };
190
-
191
- //# sourceMappingURL=count.js.map
package/dist/dialog.d.ts CHANGED
@@ -71,5 +71,4 @@ declare function DialogDescription({
71
71
  ...props
72
72
  }: DialogDescriptionProps): _$react_jsx_runtime0.JSX.Element;
73
73
  //#endregion
74
- export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
75
- //# sourceMappingURL=dialog.d.ts.map
74
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
package/dist/dialog.js CHANGED
@@ -41,7 +41,7 @@ function DialogOverlay({ className, ...props }) {
41
41
  function DialogContent({ className, children, showCloseButton = true, ...props }) {
42
42
  return /* @__PURE__ */ jsxs(DialogPortal, { children: [/* @__PURE__ */ jsx(DialogOverlay, {}), /* @__PURE__ */ jsxs(Dialog$1.Popup, {
43
43
  "data-slot": "dialog-content",
44
- className: cn("motion-scale-lg bg-foundation ring-contrast/10 fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg p-4 text-sm ring-1 outline-none sm:max-w-sm", className),
44
+ className: cn("motion-scale-lg bg-foundation ring-contrast/10 fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg p-4 text-sm ring-1 outline-hidden sm:max-w-sm", className),
45
45
  ...props,
46
46
  children: [children, showCloseButton && /* @__PURE__ */ jsxs(Dialog$1.Close, {
47
47
  "data-slot": "dialog-close",
@@ -91,5 +91,3 @@ function DialogDescription({ className, ...props }) {
91
91
  }
92
92
  //#endregion
93
93
  export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
94
-
95
- //# sourceMappingURL=dialog.js.map
package/dist/drawer.d.ts CHANGED
@@ -55,5 +55,4 @@ declare function DrawerDescription({
55
55
  ...props
56
56
  }: DrawerDescriptionProps): _$react_jsx_runtime0.JSX.Element;
57
57
  //#endregion
58
- export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger };
59
- //# sourceMappingURL=drawer.d.ts.map
58
+ export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger };
package/dist/drawer.js CHANGED
@@ -40,10 +40,10 @@ function DrawerOverlay({ className, ...props }) {
40
40
  function DrawerContent({ className, children, showCloseButton = false, ...props }) {
41
41
  return /* @__PURE__ */ jsxs(DrawerPortal, { children: [/* @__PURE__ */ jsx(DrawerOverlay, {}), /* @__PURE__ */ jsx(Drawer$1.Viewport, {
42
42
  "data-slot": "drawer-viewport",
43
- className: "fixed inset-0 z-50 outline-none",
43
+ className: "fixed inset-0 z-50 outline-hidden",
44
44
  children: /* @__PURE__ */ jsxs(Drawer$1.Popup, {
45
45
  "data-slot": "drawer-content",
46
- className: cn("group/drawer-content bg-foundation fixed z-50 flex flex-col overflow-y-auto border-edge text-sm shadow-lg outline-none", "transition-[translate] duration-(--duration-lg) ease-(--ease) data-[swiping]:duration-0", "data-[swipe-direction=down]:inset-x-0 data-[swipe-direction=down]:bottom-0 data-[swipe-direction=down]:mt-24 data-[swipe-direction=down]:max-h-[80vh] data-[swipe-direction=down]:rounded-t-lg data-[swipe-direction=down]:border-t", "data-[swipe-direction=up]:inset-x-0 data-[swipe-direction=up]:top-0 data-[swipe-direction=up]:mb-24 data-[swipe-direction=up]:max-h-[80vh] data-[swipe-direction=up]:rounded-b-lg data-[swipe-direction=up]:border-b", "data-[swipe-direction=left]:inset-y-0 data-[swipe-direction=left]:left-0 data-[swipe-direction=left]:w-3/4 data-[swipe-direction=left]:rounded-r-lg data-[swipe-direction=left]:border-r data-[swipe-direction=left]:sm:max-w-sm", "data-[swipe-direction=right]:inset-y-0 data-[swipe-direction=right]:right-0 data-[swipe-direction=right]:w-3/4 data-[swipe-direction=right]:rounded-l-lg data-[swipe-direction=right]:border-l data-[swipe-direction=right]:sm:max-w-sm", "data-[swipe-direction=down]:data-[starting-style]:translate-y-full data-[swipe-direction=down]:data-[ending-style]:translate-y-full", "data-[swipe-direction=up]:data-[starting-style]:-translate-y-full data-[swipe-direction=up]:data-[ending-style]:-translate-y-full", "data-[swipe-direction=left]:data-[starting-style]:-translate-x-full data-[swipe-direction=left]:data-[ending-style]:-translate-x-full", "data-[swipe-direction=right]:data-[starting-style]:translate-x-full data-[swipe-direction=right]:data-[ending-style]:translate-x-full", className),
46
+ className: cn("group/drawer-content bg-foundation fixed z-50 flex flex-col overflow-y-auto border-edge text-sm shadow-lg outline-hidden", "transition-[translate] duration-(--duration-lg) ease-(--ease) data-[swiping]:duration-0", "data-[swipe-direction=down]:inset-x-0 data-[swipe-direction=down]:bottom-0 data-[swipe-direction=down]:mt-24 data-[swipe-direction=down]:max-h-[80vh] data-[swipe-direction=down]:rounded-t-lg data-[swipe-direction=down]:border-t", "data-[swipe-direction=up]:inset-x-0 data-[swipe-direction=up]:top-0 data-[swipe-direction=up]:mb-24 data-[swipe-direction=up]:max-h-[80vh] data-[swipe-direction=up]:rounded-b-lg data-[swipe-direction=up]:border-b", "data-[swipe-direction=left]:inset-y-0 data-[swipe-direction=left]:left-0 data-[swipe-direction=left]:w-3/4 data-[swipe-direction=left]:rounded-r-lg data-[swipe-direction=left]:border-r data-[swipe-direction=left]:sm:max-w-sm", "data-[swipe-direction=right]:inset-y-0 data-[swipe-direction=right]:right-0 data-[swipe-direction=right]:w-3/4 data-[swipe-direction=right]:rounded-l-lg data-[swipe-direction=right]:border-l data-[swipe-direction=right]:sm:max-w-sm", "data-[swipe-direction=down]:data-[starting-style]:translate-y-full data-[swipe-direction=down]:data-[ending-style]:translate-y-full", "data-[swipe-direction=up]:data-[starting-style]:-translate-y-full data-[swipe-direction=up]:data-[ending-style]:-translate-y-full", "data-[swipe-direction=left]:data-[starting-style]:-translate-x-full data-[swipe-direction=left]:data-[ending-style]:-translate-x-full", "data-[swipe-direction=right]:data-[starting-style]:translate-x-full data-[swipe-direction=right]:data-[ending-style]:translate-x-full", className),
47
47
  ...props,
48
48
  children: [
49
49
  /* @__PURE__ */ jsx("div", {
@@ -97,5 +97,3 @@ function DrawerDescription({ className, ...props }) {
97
97
  }
98
98
  //#endregion
99
99
  export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger };
100
-
101
- //# sourceMappingURL=drawer.js.map
@@ -25,5 +25,4 @@ declare function EncryptedText({
25
25
  ...props
26
26
  }: EncryptedTextProps): _$react_jsx_runtime0.JSX.Element | null;
27
27
  //#endregion
28
- export { EncryptedText };
29
- //# sourceMappingURL=encrypted-text.d.ts.map
28
+ export { EncryptedText };
@@ -23,7 +23,7 @@ function EncryptedText({ text, className, revealDelayMs = 50, charset = DEFAULT_
23
23
  const animationFrameRef = React.useRef(null);
24
24
  const startTimeRef = React.useRef(0);
25
25
  const lastFlipTimeRef = React.useRef(0);
26
- const scrambleCharsRef = React.useRef(text ? scramblePreservingSpaces(text, charset).split("") : []);
26
+ const scrambleCharsRef = React.useRef([]);
27
27
  React.useEffect(() => {
28
28
  if (prefersReducedMotion) return;
29
29
  const el = ref.current;
@@ -71,6 +71,7 @@ function EncryptedText({ text, className, revealDelayMs = 50, charset = DEFAULT_
71
71
  if (now - lastFlipTimeRef.current >= Math.max(0, flipDelayMs)) {
72
72
  for (let index = currentRevealCount; index < totalLength; index += 1) scrambleCharsRef.current[index] = text[index] === " " ? " " : randomChar(charset);
73
73
  lastFlipTimeRef.current = now;
74
+ setFlipTick((t) => t + 1 & 65535);
74
75
  }
75
76
  animationFrameRef.current = requestAnimationFrame(update);
76
77
  };
@@ -99,8 +100,8 @@ function EncryptedText({ text, className, revealDelayMs = 50, charset = DEFAULT_
99
100
  className: "sr-only",
100
101
  children: text
101
102
  }), text.split("").map((char, index) => {
102
- const isRevealed = prefersReducedMotion || !scrambleOnly && index < revealCount;
103
- const displayChar = isRevealed ? char : char === " " ? " " : scrambleCharsRef.current[index] ?? randomChar(charset);
103
+ const isRevealed = prefersReducedMotion || !isInView || !scrambleOnly && index < revealCount;
104
+ const displayChar = isRevealed ? char : char === " " ? " " : scrambleCharsRef.current[index] ?? char;
104
105
  return /* @__PURE__ */ jsx("span", {
105
106
  "aria-hidden": "true",
106
107
  "data-slot": "encrypted-text-char",
@@ -113,5 +114,3 @@ function EncryptedText({ text, className, revealDelayMs = 50, charset = DEFAULT_
113
114
  }
114
115
  //#endregion
115
116
  export { EncryptedText };
116
-
117
- //# sourceMappingURL=encrypted-text.js.map
package/dist/field.d.ts CHANGED
@@ -37,5 +37,4 @@ declare function FieldError({
37
37
  }: FieldErrorProps): _$react_jsx_runtime0.JSX.Element;
38
38
  declare const FieldValidity: React.FC<_$_base_ui_react0.FieldValidityProps>;
39
39
  //#endregion
40
- export { Field, FieldControl, FieldControlProps, FieldDescription, FieldDescriptionProps, FieldError, FieldErrorProps, FieldItem, FieldItemProps, FieldLabel, FieldLabelProps, FieldPrimitive, FieldProps, FieldValidity, FieldValidityProps };
41
- //# sourceMappingURL=field.d.ts.map
40
+ export { Field, FieldControl, FieldControlProps, FieldDescription, FieldDescriptionProps, FieldError, FieldErrorProps, FieldItem, FieldItemProps, FieldLabel, FieldLabelProps, FieldPrimitive, FieldProps, FieldValidity, FieldValidityProps };
package/dist/field.js CHANGED
@@ -21,14 +21,14 @@ function FieldLabel({ className, ...props }) {
21
21
  function FieldControl({ className, ...props }) {
22
22
  return /* @__PURE__ */ jsx(FieldPrimitive.Control, {
23
23
  "data-slot": "field-control",
24
- className: cn("rounded-md outline-none focus-visible:ring-3 focus-visible:ring-focus/50 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50", className),
24
+ className: cn("data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50", className),
25
25
  ...props
26
26
  });
27
27
  }
28
28
  function FieldDescription({ className, ...props }) {
29
29
  return /* @__PURE__ */ jsx(FieldPrimitive.Description, {
30
30
  "data-slot": "field-description",
31
- className: cn("text-muted text-left text-sm leading-normal font-normal group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5", "last:mt-0 nth-last-2:-mt-1", "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", className),
31
+ className: cn("text-muted text-left text-sm leading-normal font-normal", "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", className),
32
32
  ...props
33
33
  });
34
34
  }
@@ -49,5 +49,3 @@ function FieldError({ className, ...props }) {
49
49
  const FieldValidity = FieldPrimitive.Validity;
50
50
  //#endregion
51
51
  export { Field, FieldControl, FieldDescription, FieldError, FieldItem, FieldLabel, FieldPrimitive, FieldValidity };
52
-
53
- //# sourceMappingURL=field.js.map
@@ -2,5 +2,4 @@
2
2
  declare const vertexShader = "\nattribute vec2 position;\nvarying vec2 vUv;\n\nvoid main() {\n vUv = position * 0.5 + 0.5;\n gl_Position = vec4(position, 0.0, 1.0);\n}\n";
3
3
  declare const fragmentShader = "\nprecision highp float;\n\nuniform float uTime;\nuniform vec2 uResolution;\nuniform float uDensity;\nuniform float uOpacity;\nuniform float uFps;\nuniform vec3 uColor;\n\nvarying vec2 vUv;\n\n// Stable hash\nfloat hash(vec2 p, float seed) {\n return fract(sin(dot(p + seed, vec2(127.1, 311.7))) * 43758.5453123);\n}\n\n// Film response curve (soft toe + shoulder rolloff)\nfloat filmCurve(float x) {\n return smoothstep(0.0, 0.2, x) * (1.0 - smoothstep(0.8, 1.0, x));\n}\n\nvoid main() {\n vec2 uv = gl_FragCoord.xy;\n vec2 p = floor(uv);\n\n // Temporal coherence: blend between current and next frame seed\n float frame = floor(uTime * uFps);\n float t = fract(uTime * uFps);\n float seed = frame * 0.1731;\n\n // Multi-scale grain with inter-frame blending on fine layer\n float fineA = hash(p, seed);\n float fineB = hash(p, seed + 0.1731);\n float fine = mix(fineA, fineB, t);\n\n float medium = hash(floor(uv * 0.5), seed + 3.1);\n float coarse = hash(floor(uv * 0.25), seed + 7.93);\n\n float grain = fine * 0.65 + medium * 0.25 + coarse * 0.10;\n\n // Emulsion clumping (organic structure)\n float cluster = hash(floor(uv * 0.18), seed + 9.2);\n grain *= mix(0.75, 1.35, cluster);\n\n // Density threshold\n grain = smoothstep(1.0 - uDensity, 1.0, grain);\n\n // Film response curve (replaces raw pow gamma)\n grain = filmCurve(grain);\n\n // Micro-blur: sample neighbors for optical diffusion\n float n1 = hash(p + vec2(1.0, 0.0), seed);\n float n2 = hash(p - vec2(1.0, 0.0), seed);\n float n3 = hash(p + vec2(0.0, 1.0), seed);\n float n4 = hash(p - vec2(0.0, 1.0), seed);\n float neighbors = (n1 + n2 + n3 + n4) * 0.25;\n grain = mix(grain, neighbors, 0.15);\n\n // Chromatic aberration (reuse neighbor hashes)\n float rShift = n1 * 0.015;\n float bShift = n2 * 0.015;\n\n vec3 color = uColor * vec3(\n grain + rShift,\n grain,\n grain + bShift\n );\n\n color = clamp(color, 0.0, 1.0);\n\n gl_FragColor = vec4(color, grain * uOpacity);\n}\n";
4
4
  //#endregion
5
- export { fragmentShader, vertexShader };
6
- //# sourceMappingURL=film-grain-shader.d.ts.map
5
+ export { fragmentShader, vertexShader };
@@ -84,5 +84,3 @@ void main() {
84
84
  `;
85
85
  //#endregion
86
86
  export { fragmentShader, vertexShader };
87
-
88
- //# sourceMappingURL=film-grain-shader.js.map
@@ -3,7 +3,6 @@ import * as _$react from "react";
3
3
  //#region src/film-grain-webgl.d.ts
4
4
  interface UseFilmGrainOptions {
5
5
  density: number;
6
- opacity: number;
7
6
  /** Target FPS for both WebGL and canvas fallback. Default 18 */
8
7
  fps?: number;
9
8
  /** Hex color for canvas fallback grain. Default '#ffffff' */
@@ -11,10 +10,8 @@ interface UseFilmGrainOptions {
11
10
  }
12
11
  declare function useFilmGrain({
13
12
  density,
14
- opacity,
15
13
  fps,
16
14
  color
17
15
  }: UseFilmGrainOptions): _$react.RefObject<HTMLCanvasElement | null>;
18
16
  //#endregion
19
- export { useFilmGrain };
20
- //# sourceMappingURL=film-grain-webgl.d.ts.map
17
+ export { useFilmGrain };
@@ -96,7 +96,7 @@ function generateGrainTexture(width, height, density, color) {
96
96
  ctx.putImageData(imageData, 0, 0);
97
97
  return offscreen;
98
98
  }
99
- function useFilmGrain({ density, opacity, fps = 18, color = "#ffffff" }) {
99
+ function useFilmGrain({ density, fps = 18, color = "#ffffff" }) {
100
100
  const canvasRef = useRef(null);
101
101
  const rafRef = useRef(0);
102
102
  const visibleRef = useRef(true);
@@ -122,14 +122,18 @@ function useFilmGrain({ density, opacity, fps = 18, color = "#ffffff" }) {
122
122
  dpr
123
123
  };
124
124
  };
125
- const gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
125
+ const canGetWebGL = (c) => (c.getContext("webgl") || c.getContext("experimental-webgl")) ?? null;
126
+ const probeGl = canGetWebGL(document.createElement("canvas"));
127
+ const webglSupported = probeGl ? initWebGL(probeGl) !== null : false;
128
+ probeGl?.getExtension("WEBGL_lose_context")?.loseContext();
129
+ const gl = webglSupported ? canGetWebGL(canvas) : null;
126
130
  const uniforms = gl ? initWebGL(gl) : null;
127
131
  if (gl && uniforms) {
128
132
  let contextLost = false;
129
133
  const [cr, cg, cb] = parseHex(color);
130
134
  const setUniforms = () => {
131
135
  setUniform1f(gl, uniforms.uDensity, density);
132
- setUniform1f(gl, uniforms.uOpacity, opacity);
136
+ setUniform1f(gl, uniforms.uOpacity, 1);
133
137
  setUniform1f(gl, uniforms.uFps, fps);
134
138
  setUniform3f(gl, uniforms.uColor, cr / 255, cg / 255, cb / 255);
135
139
  };
@@ -293,7 +297,6 @@ function useFilmGrain({ density, opacity, fps = 18, color = "#ffffff" }) {
293
297
  };
294
298
  }, [
295
299
  density,
296
- opacity,
297
300
  fps,
298
301
  interval,
299
302
  color
@@ -302,5 +305,3 @@ function useFilmGrain({ density, opacity, fps = 18, color = "#ffffff" }) {
302
305
  }
303
306
  //#endregion
304
307
  export { useFilmGrain };
305
-
306
- //# sourceMappingURL=film-grain-webgl.js.map
@@ -21,5 +21,4 @@ declare function FilmGrain({
21
21
  style
22
22
  }: FilmGrainProps): _$react_jsx_runtime0.JSX.Element;
23
23
  //#endregion
24
- export { FilmGrain, type FilmGrainProps };
25
- //# sourceMappingURL=film-grain.d.ts.map
24
+ export { FilmGrain, type FilmGrainProps };
@@ -7,7 +7,6 @@ import { jsx } from "react/jsx-runtime";
7
7
  function FilmGrain({ density = .6, opacity = .08, blendMode = "overlay", fps = 18, color = "#ffffff", className, style }) {
8
8
  const canvasRef = useFilmGrain({
9
9
  density,
10
- opacity,
11
10
  fps,
12
11
  color
13
12
  });
@@ -29,5 +28,3 @@ function FilmGrain({ density = .6, opacity = .08, blendMode = "overlay", fps = 1
29
28
  }
30
29
  //#endregion
31
30
  export { FilmGrain };
32
-
33
- //# sourceMappingURL=film-grain.js.map
package/dist/form.d.ts CHANGED
@@ -94,5 +94,4 @@ declare function fieldControlProps<TFieldValues extends FieldValues, TName exten
94
94
  onChange: (...event: any[]) => void;
95
95
  };
96
96
  //#endregion
97
- export { Form, FormActions, FormError, FormField, type FormFieldProps, type FormFieldRenderArgs, FormMessage, FormRoot, fieldControlProps, useForm, useWatch };
98
- //# sourceMappingURL=form.d.ts.map
97
+ export { Form, FormActions, FormError, FormField, type FormFieldProps, type FormFieldRenderArgs, FormMessage, FormRoot, fieldControlProps, useForm, useWatch };
package/dist/form.js CHANGED
@@ -125,5 +125,3 @@ function fieldControlProps(field, opts) {
125
125
  }
126
126
  //#endregion
127
127
  export { Form, FormActions, FormError, FormField, FormMessage, FormRoot, fieldControlProps, useForm, useWatch };
128
-
129
- //# sourceMappingURL=form.js.map
@@ -48,5 +48,4 @@ declare function GradientRevealText({
48
48
  className
49
49
  }: GradientRevealTextProps): _$react_jsx_runtime0.JSX.Element;
50
50
  //#endregion
51
- export { GradientRevealText, type GradientRevealTextProps };
52
- //# sourceMappingURL=gradient-reveal-text.d.ts.map
51
+ export { GradientRevealText, type GradientRevealTextProps };
@@ -45,6 +45,7 @@ function GradientRevealText({ text, duration = 0, colors = DEFAULT_COLORS, baseO
45
45
  cy: .5
46
46
  });
47
47
  const rafId = useRef(0);
48
+ const requestFollow = useRef(() => {});
48
49
  const measure = useCallback(() => {
49
50
  const el = textRef.current;
50
51
  if (!el) return;
@@ -61,7 +62,11 @@ function GradientRevealText({ text, duration = 0, colors = DEFAULT_COLORS, baseO
61
62
  useEffect(() => {
62
63
  measure();
63
64
  document.fonts?.ready?.then(measure);
64
- }, [text, measure]);
65
+ }, [
66
+ text,
67
+ fontFamily,
68
+ measure
69
+ ]);
65
70
  const applyGradientPos = useCallback((cx, cy) => {
66
71
  const el = gradientRef.current;
67
72
  if (!el) return;
@@ -71,18 +76,37 @@ function GradientRevealText({ text, duration = 0, colors = DEFAULT_COLORS, baseO
71
76
  el.setAttribute("cy", String(svgCy));
72
77
  }, [vb]);
73
78
  useEffect(() => {
74
- if (duration <= 0) return;
79
+ if (duration <= 0) {
80
+ requestFollow.current = () => {};
81
+ return;
82
+ }
75
83
  const speed = 1 - Math.pow(.001, 1 / (duration * 60));
84
+ const EPSILON = 5e-4;
76
85
  const tick = () => {
77
86
  const cur = currentPos.current;
78
87
  const tgt = targetPos.current;
79
88
  cur.cx += (tgt.cx - cur.cx) * speed;
80
89
  cur.cy += (tgt.cy - cur.cy) * speed;
81
90
  applyGradientPos(cur.cx, cur.cy);
91
+ if (Math.abs(tgt.cx - cur.cx) < EPSILON && Math.abs(tgt.cy - cur.cy) < EPSILON) {
92
+ cur.cx = tgt.cx;
93
+ cur.cy = tgt.cy;
94
+ applyGradientPos(cur.cx, cur.cy);
95
+ rafId.current = 0;
96
+ return;
97
+ }
82
98
  rafId.current = requestAnimationFrame(tick);
83
99
  };
84
- rafId.current = requestAnimationFrame(tick);
85
- return () => cancelAnimationFrame(rafId.current);
100
+ requestFollow.current = () => {
101
+ if (rafId.current === 0) rafId.current = requestAnimationFrame(tick);
102
+ };
103
+ return () => {
104
+ requestFollow.current = () => {};
105
+ if (rafId.current !== 0) {
106
+ cancelAnimationFrame(rafId.current);
107
+ rafId.current = 0;
108
+ }
109
+ };
86
110
  }, [duration, applyGradientPos]);
87
111
  const updatePos = (e) => {
88
112
  const svg = svgRef.current;
@@ -100,7 +124,7 @@ function GradientRevealText({ text, duration = 0, colors = DEFAULT_COLORS, baseO
100
124
  cy
101
125
  };
102
126
  applyGradientPos(cx, cy);
103
- }
127
+ } else requestFollow.current();
104
128
  };
105
129
  const handleMouseEnter = (e) => {
106
130
  const svg = svgRef.current;
@@ -239,5 +263,3 @@ function GradientRevealText({ text, duration = 0, colors = DEFAULT_COLORS, baseO
239
263
  }
240
264
  //#endregion
241
265
  export { GradientRevealText };
242
-
243
- //# sourceMappingURL=gradient-reveal-text.js.map
@@ -6,5 +6,4 @@
6
6
  */
7
7
  declare function useIsMobile(breakpoint?: number): boolean;
8
8
  //#endregion
9
- export { useIsMobile };
10
- //# sourceMappingURL=use-mobile.d.ts.map
9
+ export { useIsMobile };
@@ -25,5 +25,3 @@ function useIsMobile(breakpoint = DEFAULT_MOBILE_BREAKPOINT) {
25
25
  }
26
26
  //#endregion
27
27
  export { useIsMobile };
28
-
29
- //# sourceMappingURL=use-mobile.js.map
@@ -29,5 +29,4 @@ declare function InfiniteScroll({
29
29
  children
30
30
  }: InfiniteScrollProps): _$react_jsx_runtime0.JSX.Element;
31
31
  //#endregion
32
- export { InfiniteScroll, type InfiniteScrollProps };
33
- //# sourceMappingURL=infinite-scroll.d.ts.map
32
+ export { InfiniteScroll, type InfiniteScrollProps };
@@ -53,14 +53,19 @@ function InfiniteScroll({ onLoadMore, hasMore, isLoading = false, direction = "d
53
53
  "aria-busy": isLoading,
54
54
  className: cn("flex flex-col", className),
55
55
  children: [
56
- direction === "up" && /* @__PURE__ */ jsxs(Fragment, { children: [sentinel, loaderContent] }),
56
+ direction === "up" && /* @__PURE__ */ jsxs(Fragment, { children: [
57
+ sentinel,
58
+ loaderContent,
59
+ endContent
60
+ ] }),
57
61
  children,
58
- direction === "down" && /* @__PURE__ */ jsxs(Fragment, { children: [sentinel, loaderContent] }),
59
- endContent
62
+ direction === "down" && /* @__PURE__ */ jsxs(Fragment, { children: [
63
+ sentinel,
64
+ loaderContent,
65
+ endContent
66
+ ] })
60
67
  ]
61
68
  });
62
69
  }
63
70
  //#endregion
64
71
  export { InfiniteScroll };
65
-
66
- //# sourceMappingURL=infinite-scroll.js.map
@@ -18,7 +18,7 @@ declare function InputGroup({
18
18
  ...props
19
19
  }: InputGroupProps): _$react_jsx_runtime0.JSX.Element;
20
20
  declare const inputGroupAddonVariants: (props?: ({
21
- align?: "inline-end" | "inline-start" | "block-end" | "block-start" | null | undefined;
21
+ align?: "inline-start" | "inline-end" | "block-start" | "block-end" | null | undefined;
22
22
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
23
23
  declare function InputGroupAddon({
24
24
  className,
@@ -48,5 +48,4 @@ declare function InputGroupTextarea({
48
48
  ...props
49
49
  }: InputGroupTextareaProps): _$react_jsx_runtime0.JSX.Element;
50
50
  //#endregion
51
- export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea };
52
- //# sourceMappingURL=input-group.d.ts.map
51
+ export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea };
@@ -11,7 +11,7 @@ function InputGroup({ className, ...props }) {
11
11
  return /* @__PURE__ */ jsx("div", {
12
12
  "data-slot": "input-group",
13
13
  role: "group",
14
- className: cn("border-edge dark:bg-edge/30 has-[[data-slot=input-group-control]:focus-visible]:border-focus has-[[data-slot=input-group-control]:focus-visible]:ring-focus/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-disabled:bg-edge/50 dark:has-disabled:bg-edge/80 group/input-group relative flex h-8 w-full min-w-0 items-center rounded-md border transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 not-has-disabled:has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5", className),
14
+ className: cn("border-edge dark:bg-edge/30 has-[[data-slot=input-group-control]:focus-visible]:border-focus has-[[data-slot=input-group-control]:focus-visible]:ring-focus/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-disabled:bg-edge/50 dark:has-disabled:bg-edge/80 group/input-group relative flex h-8 w-full min-w-0 items-center rounded-md border transition-colors outline-hidden in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 not-has-disabled:has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5", className),
15
15
  ...props
16
16
  });
17
17
  }
@@ -32,7 +32,7 @@ function InputGroupAddon({ className, align = "inline-start", ...props }) {
32
32
  className: cn(inputGroupAddonVariants({ align }), className),
33
33
  onClick: (e) => {
34
34
  if (e.target.closest("button")) return;
35
- e.currentTarget.parentElement?.querySelector("input")?.focus();
35
+ e.currentTarget.parentElement?.querySelector("input, textarea")?.focus();
36
36
  },
37
37
  ...props
38
38
  });
@@ -40,7 +40,7 @@ function InputGroupAddon({ className, align = "inline-start", ...props }) {
40
40
  const inputGroupButtonVariants = cva("gap-2 text-sm shadow-none flex items-center", {
41
41
  variants: { size: {
42
42
  xs: "h-6 gap-1 rounded-sm px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
43
- sm: "",
43
+ sm: "h-7 gap-1.5 rounded-sm px-2 [&>svg:not([class*='size-'])]:size-4",
44
44
  "icon-xs": "size-6 rounded-sm p-0",
45
45
  "icon-sm": "size-8 p-0"
46
46
  } },
@@ -78,5 +78,3 @@ function InputGroupTextarea({ className, ...props }) {
78
78
  }
79
79
  //#endregion
80
80
  export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea };
81
-
82
- //# sourceMappingURL=input-group.js.map
@@ -30,5 +30,4 @@ declare function InputOTPSeparator({
30
30
  ...props
31
31
  }: InputOTPSeparatorProps): _$react_jsx_runtime0.JSX.Element;
32
32
  //#endregion
33
- export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };
34
- //# sourceMappingURL=input-otp.d.ts.map
33
+ export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };
package/dist/input-otp.js CHANGED
@@ -8,7 +8,7 @@ import { OTPInput, OTPInputContext } from "input-otp";
8
8
  function InputOTP({ className, containerClassName, ...props }) {
9
9
  return /* @__PURE__ */ jsx(OTPInput, {
10
10
  "data-slot": "input-otp",
11
- containerClassName: cn("flex items-center has-disabled:opacity-50", containerClassName),
11
+ containerClassName: cn("group/input-otp flex items-center has-disabled:opacity-50", containerClassName),
12
12
  spellCheck: false,
13
13
  className: cn("disabled:cursor-not-allowed", className),
14
14
  ...props
@@ -17,7 +17,7 @@ function InputOTP({ className, containerClassName, ...props }) {
17
17
  function InputOTPGroup({ className, ...props }) {
18
18
  return /* @__PURE__ */ jsx("div", {
19
19
  "data-slot": "input-otp-group",
20
- className: cn("flex items-center rounded-md has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40", className),
20
+ className: cn("flex items-center rounded-md", className),
21
21
  ...props
22
22
  });
23
23
  }
@@ -26,7 +26,7 @@ function InputOTPSlot({ index, className, ...props }) {
26
26
  return /* @__PURE__ */ jsxs("div", {
27
27
  "data-slot": "input-otp-slot",
28
28
  "data-active": isActive || void 0,
29
- className: cn("border-edge dark:bg-edge/30 relative flex size-9 items-center justify-center border-y border-r text-sm motion-color outline-none first:rounded-l-md first:border-l last:rounded-r-md", "data-active:border-focus data-active:ring-3 data-active:ring-focus/50 data-active:z-10", "aria-invalid:border-destructive data-active:aria-invalid:border-destructive data-active:aria-invalid:ring-destructive/20 dark:data-active:aria-invalid:ring-destructive/40", className),
29
+ className: cn("border-edge dark:bg-edge/30 relative flex size-9 items-center justify-center border-y border-r text-sm motion-color outline-hidden first:rounded-l-md first:border-l last:rounded-r-md", "data-active:border-focus data-active:ring-3 data-active:ring-focus/50 data-active:z-10", "group-has-aria-invalid/input-otp:border-destructive group-has-aria-invalid/input-otp:data-active:ring-3 group-has-aria-invalid/input-otp:data-active:ring-destructive/20 dark:group-has-aria-invalid/input-otp:data-active:ring-destructive/40", className),
30
30
  ...props,
31
31
  children: [char, hasFakeCaret && /* @__PURE__ */ jsx("div", {
32
32
  className: "pointer-events-none absolute inset-0 flex items-center justify-center",
@@ -45,5 +45,3 @@ function InputOTPSeparator({ className, ...props }) {
45
45
  }
46
46
  //#endregion
47
47
  export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };
48
-
49
- //# sourceMappingURL=input-otp.js.map
package/dist/input.d.ts CHANGED
@@ -9,5 +9,4 @@ declare function Input({
9
9
  ...props
10
10
  }: InputProps): _$react_jsx_runtime0.JSX.Element;
11
11
  //#endregion
12
- export { Input };
13
- //# sourceMappingURL=input.d.ts.map
12
+ export { Input };
package/dist/input.js CHANGED
@@ -7,11 +7,9 @@ function Input({ className, type, ...props }) {
7
7
  return /* @__PURE__ */ jsx(Input$1, {
8
8
  type,
9
9
  "data-slot": "input",
10
- className: cn("dark:bg-edge/30 border-edge focus-visible:border-focus focus-visible:ring-focus/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-edge/50 dark:disabled:bg-edge/80 file:text-contrast placeholder:text-soft h-8 w-full min-w-0 rounded-md border bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:ring-3 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-3 md:text-sm", className),
10
+ className: cn("dark:bg-edge/30 border-edge focus-visible:border-focus focus-visible:ring-focus/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-edge/50 dark:disabled:bg-edge/80 file:text-contrast placeholder:text-soft h-8 w-full min-w-0 rounded-md border bg-transparent px-2.5 py-1 text-base transition-colors outline-hidden file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:ring-3 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-3 md:text-sm", className),
11
11
  ...props
12
12
  });
13
13
  }
14
14
  //#endregion
15
15
  export { Input };
16
-
17
- //# sourceMappingURL=input.js.map
package/dist/item.d.ts CHANGED
@@ -11,7 +11,7 @@ declare const itemVariants: (props?: ({
11
11
  size?: "default" | "xs" | "sm" | null | undefined;
12
12
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
13
13
  declare const itemMediaVariants: (props?: ({
14
- variant?: "default" | "icon" | "image" | null | undefined;
14
+ variant?: "default" | "image" | "icon" | null | undefined;
15
15
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
16
16
  type ItemGroupProps = React.ComponentProps<"div">;
17
17
  type ItemSeparatorProps = React.ComponentProps<typeof Separator>;
@@ -68,5 +68,4 @@ declare function ItemFooter({
68
68
  ...props
69
69
  }: ItemFooterProps): _$react_jsx_runtime0.JSX.Element;
70
70
  //#endregion
71
- export { Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle };
72
- //# sourceMappingURL=item.d.ts.map
71
+ export { Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle };