@arolariu/components 1.1.0 → 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 (325) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/components/ui/accordion.js +3 -3
  3. package/dist/components/ui/accordion.js.map +1 -1
  4. package/dist/components/ui/accordion_module.css.map +1 -1
  5. package/dist/components/ui/alert-dialog.js +8 -8
  6. package/dist/components/ui/alert-dialog.js.map +1 -1
  7. package/dist/components/ui/alert-dialog_module.css +1 -1
  8. package/dist/components/ui/alert-dialog_module.css.map +1 -1
  9. package/dist/components/ui/alert.js +4 -4
  10. package/dist/components/ui/alert.js.map +1 -1
  11. package/dist/components/ui/alert_module.css.map +1 -1
  12. package/dist/components/ui/aspect-ratio.js +2 -2
  13. package/dist/components/ui/aspect-ratio.js.map +1 -1
  14. package/dist/components/ui/aspect-ratio_module.css.map +1 -1
  15. package/dist/components/ui/async-boundary.js +2 -2
  16. package/dist/components/ui/async-boundary.js.map +1 -1
  17. package/dist/components/ui/avatar.js +4 -4
  18. package/dist/components/ui/avatar.js.map +1 -1
  19. package/dist/components/ui/avatar_module.css.map +1 -1
  20. package/dist/components/ui/background-beams.js +3 -3
  21. package/dist/components/ui/background-beams.js.map +1 -1
  22. package/dist/components/ui/background-beams_module.css.map +1 -1
  23. package/dist/components/ui/badge.js +2 -2
  24. package/dist/components/ui/badge.js.map +1 -1
  25. package/dist/components/ui/badge_module.css.map +1 -1
  26. package/dist/components/ui/breadcrumb.js +10 -10
  27. package/dist/components/ui/breadcrumb.js.map +1 -1
  28. package/dist/components/ui/breadcrumb_module.css.map +1 -1
  29. package/dist/components/ui/bubble-background.js +5 -5
  30. package/dist/components/ui/bubble-background.js.map +1 -1
  31. package/dist/components/ui/bubble-background_module.css.map +1 -1
  32. package/dist/components/ui/button-group.js +6 -6
  33. package/dist/components/ui/button-group.js.map +1 -1
  34. package/dist/components/ui/button-group_module.css.map +1 -1
  35. package/dist/components/ui/button.js +4 -4
  36. package/dist/components/ui/button.js.map +1 -1
  37. package/dist/components/ui/button_module.css.map +1 -1
  38. package/dist/components/ui/calendar.d.ts +2 -1
  39. package/dist/components/ui/calendar.d.ts.map +1 -1
  40. package/dist/components/ui/calendar.js +4 -4
  41. package/dist/components/ui/calendar.js.map +1 -1
  42. package/dist/components/ui/calendar_module.css.map +1 -1
  43. package/dist/components/ui/card-skeleton.js +2 -2
  44. package/dist/components/ui/card-skeleton.js.map +1 -1
  45. package/dist/components/ui/card-skeleton_module.css.map +1 -1
  46. package/dist/components/ui/card.js +8 -8
  47. package/dist/components/ui/card.js.map +1 -1
  48. package/dist/components/ui/card_module.css.map +1 -1
  49. package/dist/components/ui/carousel.js +16 -16
  50. package/dist/components/ui/carousel.js.map +1 -1
  51. package/dist/components/ui/carousel_module.css +1 -1
  52. package/dist/components/ui/carousel_module.css.map +1 -1
  53. package/dist/components/ui/chart.d.ts +6 -3
  54. package/dist/components/ui/chart.d.ts.map +1 -1
  55. package/dist/components/ui/chart.js +70 -136
  56. package/dist/components/ui/chart.js.map +1 -1
  57. package/dist/components/ui/chart_module.css.map +1 -1
  58. package/dist/components/ui/checkbox-group.js +2 -2
  59. package/dist/components/ui/checkbox-group.js.map +1 -1
  60. package/dist/components/ui/checkbox-group_module.css.map +1 -1
  61. package/dist/components/ui/checkbox.js +2 -2
  62. package/dist/components/ui/checkbox.js.map +1 -1
  63. package/dist/components/ui/checkbox_module.css.map +1 -1
  64. package/dist/components/ui/collapsible.js +4 -4
  65. package/dist/components/ui/collapsible.js.map +1 -1
  66. package/dist/components/ui/collapsible_module.css.map +1 -1
  67. package/dist/components/ui/combobox.js +13 -13
  68. package/dist/components/ui/combobox.js.map +1 -1
  69. package/dist/components/ui/combobox_module.css.map +1 -1
  70. package/dist/components/ui/command.js +40 -40
  71. package/dist/components/ui/command.js.map +1 -1
  72. package/dist/components/ui/command_module.css +1 -1
  73. package/dist/components/ui/command_module.css.map +1 -1
  74. package/dist/components/ui/context-menu.js +6 -6
  75. package/dist/components/ui/context-menu.js.map +1 -1
  76. package/dist/components/ui/context-menu_module.css.map +1 -1
  77. package/dist/components/ui/copy-button.js +6 -6
  78. package/dist/components/ui/copy-button.js.map +1 -1
  79. package/dist/components/ui/copy-button_module.css.map +1 -1
  80. package/dist/components/ui/counting-number.js +6 -6
  81. package/dist/components/ui/counting-number.js.map +1 -1
  82. package/dist/components/ui/counting-number_module.css.map +1 -1
  83. package/dist/components/ui/dialog.js +6 -6
  84. package/dist/components/ui/dialog.js.map +1 -1
  85. package/dist/components/ui/dialog_module.css +1 -1
  86. package/dist/components/ui/dialog_module.css.map +1 -1
  87. package/dist/components/ui/dot-background_module.css.map +1 -1
  88. package/dist/components/ui/drawer.js +5 -5
  89. package/dist/components/ui/drawer.js.map +1 -1
  90. package/dist/components/ui/drawer_module.css.map +1 -1
  91. package/dist/components/ui/dropdown-menu.js +6 -6
  92. package/dist/components/ui/dropdown-menu.js.map +1 -1
  93. package/dist/components/ui/dropdown-menu_module.css.map +1 -1
  94. package/dist/components/ui/dropdrawer.js +52 -52
  95. package/dist/components/ui/dropdrawer.js.map +1 -1
  96. package/dist/components/ui/dropdrawer_module.css.map +1 -1
  97. package/dist/components/ui/empty.js +7 -7
  98. package/dist/components/ui/empty.js.map +1 -1
  99. package/dist/components/ui/empty_module.css.map +1 -1
  100. package/dist/components/ui/error-boundary.js +2 -2
  101. package/dist/components/ui/error-boundary.js.map +1 -1
  102. package/dist/components/ui/error-boundary_module.css.map +1 -1
  103. package/dist/components/ui/field.js +12 -12
  104. package/dist/components/ui/field.js.map +1 -1
  105. package/dist/components/ui/field_module.css.map +1 -1
  106. package/dist/components/ui/fireworks-background.js +6 -6
  107. package/dist/components/ui/fireworks-background.js.map +1 -1
  108. package/dist/components/ui/fireworks-background_module.css.map +1 -1
  109. package/dist/components/ui/flip-button.js +5 -5
  110. package/dist/components/ui/flip-button.js.map +1 -1
  111. package/dist/components/ui/flip-button_module.css.map +1 -1
  112. package/dist/components/ui/focus-scope.js +6 -6
  113. package/dist/components/ui/focus-scope.js.map +1 -1
  114. package/dist/components/ui/focus-scope_module.css.map +1 -1
  115. package/dist/components/ui/form-skeleton.js +2 -2
  116. package/dist/components/ui/form-skeleton.js.map +1 -1
  117. package/dist/components/ui/form-skeleton_module.css.map +1 -1
  118. package/dist/components/ui/form.d.ts +3 -3
  119. package/dist/components/ui/form.d.ts.map +1 -1
  120. package/dist/components/ui/form.js +13 -13
  121. package/dist/components/ui/form.js.map +1 -1
  122. package/dist/components/ui/form_module.css.map +1 -1
  123. package/dist/components/ui/gradient-background.js +2 -2
  124. package/dist/components/ui/gradient-background.js.map +1 -1
  125. package/dist/components/ui/gradient-background_module.css.map +1 -1
  126. package/dist/components/ui/gradient-text.js +2 -2
  127. package/dist/components/ui/gradient-text.js.map +1 -1
  128. package/dist/components/ui/gradient-text_module.css.map +1 -1
  129. package/dist/components/ui/highlight-text.js +4 -4
  130. package/dist/components/ui/highlight-text.js.map +1 -1
  131. package/dist/components/ui/highlight-text_module.css.map +1 -1
  132. package/dist/components/ui/hole-background.js +21 -21
  133. package/dist/components/ui/hole-background.js.map +1 -1
  134. package/dist/components/ui/hole-background_module.css.map +1 -1
  135. package/dist/components/ui/hover-card.js +3 -3
  136. package/dist/components/ui/hover-card.js.map +1 -1
  137. package/dist/components/ui/hover-card_module.css.map +1 -1
  138. package/dist/components/ui/input-group.js +7 -7
  139. package/dist/components/ui/input-group.js.map +1 -1
  140. package/dist/components/ui/input-group_module.css.map +1 -1
  141. package/dist/components/ui/input-otp.d.ts +3 -3
  142. package/dist/components/ui/input-otp.d.ts.map +1 -1
  143. package/dist/components/ui/input-otp.js +6 -6
  144. package/dist/components/ui/input-otp.js.map +1 -1
  145. package/dist/components/ui/input-otp_module.css.map +1 -1
  146. package/dist/components/ui/input.js +2 -2
  147. package/dist/components/ui/input.js.map +1 -1
  148. package/dist/components/ui/input_module.css.map +1 -1
  149. package/dist/components/ui/item.js +13 -13
  150. package/dist/components/ui/item.js.map +1 -1
  151. package/dist/components/ui/item_module.css.map +1 -1
  152. package/dist/components/ui/kbd.js +3 -3
  153. package/dist/components/ui/kbd.js.map +1 -1
  154. package/dist/components/ui/kbd_module.css.map +1 -1
  155. package/dist/components/ui/label.js +2 -2
  156. package/dist/components/ui/label.js.map +1 -1
  157. package/dist/components/ui/label_module.css.map +1 -1
  158. package/dist/components/ui/list-skeleton.js +2 -2
  159. package/dist/components/ui/list-skeleton.js.map +1 -1
  160. package/dist/components/ui/list-skeleton_module.css.map +1 -1
  161. package/dist/components/ui/loading-overlay.js +2 -2
  162. package/dist/components/ui/loading-overlay.js.map +1 -1
  163. package/dist/components/ui/loading-overlay_module.css.map +1 -1
  164. package/dist/components/ui/menubar.js +4 -4
  165. package/dist/components/ui/menubar.js.map +1 -1
  166. package/dist/components/ui/menubar_module.css.map +1 -1
  167. package/dist/components/ui/meter.js +5 -5
  168. package/dist/components/ui/meter.js.map +1 -1
  169. package/dist/components/ui/meter_module.css.map +1 -1
  170. package/dist/components/ui/navigation-menu.js +5 -5
  171. package/dist/components/ui/navigation-menu.js.map +1 -1
  172. package/dist/components/ui/navigation-menu_module.css +1 -1
  173. package/dist/components/ui/navigation-menu_module.css.map +1 -1
  174. package/dist/components/ui/number-field.js +3 -3
  175. package/dist/components/ui/number-field.js.map +1 -1
  176. package/dist/components/ui/number-field_module.css.map +1 -1
  177. package/dist/components/ui/pagination.js +8 -8
  178. package/dist/components/ui/pagination.js.map +1 -1
  179. package/dist/components/ui/pagination_module.css.map +1 -1
  180. package/dist/components/ui/popover.js +5 -5
  181. package/dist/components/ui/popover.js.map +1 -1
  182. package/dist/components/ui/popover_module.css.map +1 -1
  183. package/dist/components/ui/progress.js +2 -2
  184. package/dist/components/ui/progress.js.map +1 -1
  185. package/dist/components/ui/progress_module.css.map +1 -1
  186. package/dist/components/ui/radio-group.js +3 -3
  187. package/dist/components/ui/radio-group.js.map +1 -1
  188. package/dist/components/ui/radio-group_module.css.map +1 -1
  189. package/dist/components/ui/resizable.d.ts +13 -29
  190. package/dist/components/ui/resizable.d.ts.map +1 -1
  191. package/dist/components/ui/resizable.js +8 -7
  192. package/dist/components/ui/resizable.js.map +1 -1
  193. package/dist/components/ui/resizable_module.css.map +1 -1
  194. package/dist/components/ui/ripple-button.js +9 -9
  195. package/dist/components/ui/ripple-button.js.map +1 -1
  196. package/dist/components/ui/ripple-button_module.css.map +1 -1
  197. package/dist/components/ui/scratcher_module.css.map +1 -1
  198. package/dist/components/ui/scroll-area.js +2 -2
  199. package/dist/components/ui/scroll-area.js.map +1 -1
  200. package/dist/components/ui/scroll-area_module.css.map +1 -1
  201. package/dist/components/ui/select.js +4 -4
  202. package/dist/components/ui/select.js.map +1 -1
  203. package/dist/components/ui/select_module.css.map +1 -1
  204. package/dist/components/ui/separator.js +2 -2
  205. package/dist/components/ui/separator.js.map +1 -1
  206. package/dist/components/ui/separator_module.css.map +1 -1
  207. package/dist/components/ui/sheet.js +6 -6
  208. package/dist/components/ui/sheet.js.map +1 -1
  209. package/dist/components/ui/sheet_module.css.map +1 -1
  210. package/dist/components/ui/sidebar.js +36 -36
  211. package/dist/components/ui/sidebar.js.map +1 -1
  212. package/dist/components/ui/sidebar_module.css.map +1 -1
  213. package/dist/components/ui/skeleton.js +2 -2
  214. package/dist/components/ui/skeleton.js.map +1 -1
  215. package/dist/components/ui/skeleton_module.css.map +1 -1
  216. package/dist/components/ui/slider.js +2 -2
  217. package/dist/components/ui/slider.js.map +1 -1
  218. package/dist/components/ui/slider_module.css.map +1 -1
  219. package/dist/components/ui/spinner.js +2 -2
  220. package/dist/components/ui/spinner.js.map +1 -1
  221. package/dist/components/ui/spinner_module.css.map +1 -1
  222. package/dist/components/ui/stepper.js +2 -2
  223. package/dist/components/ui/stepper.js.map +1 -1
  224. package/dist/components/ui/stepper_module.css.map +1 -1
  225. package/dist/components/ui/switch.js +2 -2
  226. package/dist/components/ui/switch.js.map +1 -1
  227. package/dist/components/ui/switch_module.css.map +1 -1
  228. package/dist/components/ui/table-skeleton.js +2 -2
  229. package/dist/components/ui/table-skeleton.js.map +1 -1
  230. package/dist/components/ui/table-skeleton_module.css.map +1 -1
  231. package/dist/components/ui/table.js +9 -9
  232. package/dist/components/ui/table.js.map +1 -1
  233. package/dist/components/ui/table_module.css.map +1 -1
  234. package/dist/components/ui/tabs.js +3 -3
  235. package/dist/components/ui/tabs.js.map +1 -1
  236. package/dist/components/ui/tabs_module.css.map +1 -1
  237. package/dist/components/ui/textarea.js +2 -2
  238. package/dist/components/ui/textarea.js.map +1 -1
  239. package/dist/components/ui/textarea_module.css.map +1 -1
  240. package/dist/components/ui/timeline.js +5 -5
  241. package/dist/components/ui/timeline.js.map +1 -1
  242. package/dist/components/ui/timeline_module.css.map +1 -1
  243. package/dist/components/ui/{sonner.d.ts → toast.d.ts} +10 -2
  244. package/dist/components/ui/toast.d.ts.map +1 -0
  245. package/dist/components/ui/{sonner.js → toast.js} +40 -40
  246. package/dist/components/ui/toast.js.map +1 -0
  247. package/dist/components/ui/toast.module.js +34 -0
  248. package/dist/components/ui/toast.module.js.map +1 -0
  249. package/dist/components/ui/{sonner_module.css → toast_module.css} +35 -35
  250. package/dist/components/ui/toast_module.css.map +1 -0
  251. package/dist/components/ui/toggle-group.js +5 -5
  252. package/dist/components/ui/toggle-group.js.map +1 -1
  253. package/dist/components/ui/toggle-group_module.css.map +1 -1
  254. package/dist/components/ui/toggle.js +2 -2
  255. package/dist/components/ui/toggle.js.map +1 -1
  256. package/dist/components/ui/toggle_module.css.map +1 -1
  257. package/dist/components/ui/toolbar.js +6 -6
  258. package/dist/components/ui/toolbar.js.map +1 -1
  259. package/dist/components/ui/toolbar_module.css.map +1 -1
  260. package/dist/components/ui/tooltip.js +4 -4
  261. package/dist/components/ui/tooltip.js.map +1 -1
  262. package/dist/components/ui/tooltip_module.css.map +1 -1
  263. package/dist/components/ui/typewriter.js +4 -4
  264. package/dist/components/ui/typewriter.js.map +1 -1
  265. package/dist/components/ui/typewriter_module.css.map +1 -1
  266. package/dist/components/ui/visually-hidden.js +2 -2
  267. package/dist/components/ui/visually-hidden.js.map +1 -1
  268. package/dist/components/ui/visually-hidden_module.css.map +1 -1
  269. package/dist/hooks/useAnnounce.js +5 -5
  270. package/dist/hooks/useAnnounce.js.map +1 -1
  271. package/dist/hooks/useClipboard.js +6 -6
  272. package/dist/hooks/useClipboard.js.map +1 -1
  273. package/dist/hooks/useControllableState.js +3 -3
  274. package/dist/hooks/useControllableState.js.map +1 -1
  275. package/dist/hooks/useDebounce.js +3 -3
  276. package/dist/hooks/useDebounce.js.map +1 -1
  277. package/dist/hooks/useEventCallback.js +4 -4
  278. package/dist/hooks/useEventCallback.js.map +1 -1
  279. package/dist/hooks/useFocusManager.js +6 -6
  280. package/dist/hooks/useFocusManager.js.map +1 -1
  281. package/dist/hooks/useFocusVisible.js +5 -5
  282. package/dist/hooks/useFocusVisible.js.map +1 -1
  283. package/dist/hooks/useId.js +4 -4
  284. package/dist/hooks/useId.js.map +1 -1
  285. package/dist/hooks/useIntersectionObserver.js +3 -3
  286. package/dist/hooks/useIntersectionObserver.js.map +1 -1
  287. package/dist/hooks/useInterval.js +4 -4
  288. package/dist/hooks/useInterval.js.map +1 -1
  289. package/dist/hooks/useLocalStorage.js +4 -4
  290. package/dist/hooks/useLocalStorage.js.map +1 -1
  291. package/dist/hooks/useMediaQuery.js +3 -3
  292. package/dist/hooks/useMediaQuery.js.map +1 -1
  293. package/dist/hooks/useMergedRefs.js +2 -2
  294. package/dist/hooks/useMergedRefs.js.map +1 -1
  295. package/dist/hooks/useOnClickOutside.js +2 -2
  296. package/dist/hooks/useOnClickOutside.js.map +1 -1
  297. package/dist/hooks/usePrevious.js +3 -3
  298. package/dist/hooks/usePrevious.js.map +1 -1
  299. package/dist/hooks/useThrottle.js +7 -7
  300. package/dist/hooks/useThrottle.js.map +1 -1
  301. package/dist/hooks/useTimeout.js +4 -4
  302. package/dist/hooks/useTimeout.js.map +1 -1
  303. package/dist/index.css.map +1 -1
  304. package/dist/index.d.ts +3 -3
  305. package/dist/index.d.ts.map +1 -1
  306. package/dist/index.js +1 -1
  307. package/dist/motion/Collapse.js +2 -2
  308. package/dist/motion/Collapse.js.map +1 -1
  309. package/dist/motion/Collapse_module.css.map +1 -1
  310. package/package.json +7 -8
  311. package/src/components/ui/calendar.tsx +2 -1
  312. package/src/components/ui/chart.tsx +2 -2
  313. package/src/components/ui/form.tsx +28 -3
  314. package/src/components/ui/input-otp.tsx +3 -3
  315. package/src/components/ui/resizable.tsx +15 -18
  316. package/src/components/ui/{sonner.module.css → toast.module.css} +1 -1
  317. package/src/components/ui/{sonner.tsx → toast.tsx} +2 -2
  318. package/src/index.ts +4 -4
  319. package/dist/components/ui/sonner.d.ts.map +0 -1
  320. package/dist/components/ui/sonner.js.map +0 -1
  321. package/dist/components/ui/sonner.module.js +0 -34
  322. package/dist/components/ui/sonner.module.js.map +0 -1
  323. package/dist/components/ui/sonner_module.css.map +0 -1
  324. package/dist/rslib-runtime.js +0 -39
  325. package/dist/rslib-runtime.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { motion } from "motion/react";
4
- import { forwardRef, useCallback, useEffect, useImperativeHandle, useRef } from "react";
5
4
  import { cn } from "../../lib/utilities.js";
6
5
  import hole_background_module from "./hole-background.module.js";
6
+ import * as __rspack_external_react from "react";
7
7
  const linear = (progress)=>progress;
8
8
  const easeInExpo = (progress)=>0 === progress ? 0 : 2 ** (10 * (progress - 1));
9
9
  const createEmptyDisc = ()=>({
@@ -43,21 +43,21 @@ const createInitialState = ()=>({
43
43
  particleArea: createEmptyParticleArea(),
44
44
  linesCanvas: null
45
45
  });
46
- const HoleBackground = /*#__PURE__*/ forwardRef(({ strokeColor = "#737373", numberOfLines = 50, numberOfDiscs = 50, particleRGBColor = [
46
+ const HoleBackground = /*#__PURE__*/ __rspack_external_react.forwardRef(({ strokeColor = "#737373", numberOfLines = 50, numberOfDiscs = 50, particleRGBColor = [
47
47
  255,
48
48
  255,
49
49
  255
50
50
  ], className, children, ...props }, ref)=>{
51
- const canvasRef = useRef(null);
52
- const animationFrameIdRef = useRef(0);
53
- const stateRef = useRef(createInitialState());
54
- useImperativeHandle(ref, ()=>canvasRef.current, []);
55
- const tweenValue = useCallback((start, end, progress, ease = null)=>{
51
+ const canvasRef = __rspack_external_react.useRef(null);
52
+ const animationFrameIdRef = __rspack_external_react.useRef(0);
53
+ const stateRef = __rspack_external_react.useRef(createInitialState());
54
+ __rspack_external_react.useImperativeHandle(ref, ()=>canvasRef.current, []);
55
+ const tweenValue = __rspack_external_react.useCallback((start, end, progress, ease = null)=>{
56
56
  const delta = end - start;
57
57
  const easeFunction = "inExpo" === ease ? easeInExpo : linear;
58
58
  return start + delta * easeFunction(progress);
59
59
  }, []);
60
- const tweenDisc = useCallback((disc)=>{
60
+ const tweenDisc = __rspack_external_react.useCallback((disc)=>{
61
61
  const { startDisc, endDisc } = stateRef.current;
62
62
  disc.x = tweenValue(startDisc.x, endDisc.x, disc.p);
63
63
  disc.y = tweenValue(startDisc.y, endDisc.y, disc.p, "inExpo");
@@ -66,7 +66,7 @@ const HoleBackground = /*#__PURE__*/ forwardRef(({ strokeColor = "#737373", numb
66
66
  }, [
67
67
  tweenValue
68
68
  ]);
69
- const setSize = useCallback(()=>{
69
+ const setSize = __rspack_external_react.useCallback(()=>{
70
70
  const canvas = canvasRef.current;
71
71
  if (!canvas) return;
72
72
  const rect = canvas.getBoundingClientRect();
@@ -82,7 +82,7 @@ const HoleBackground = /*#__PURE__*/ forwardRef(({ strokeColor = "#737373", numb
82
82
  canvas.width = stateRef.current.render.width * stateRef.current.render.dpi;
83
83
  canvas.height = stateRef.current.render.height * stateRef.current.render.dpi;
84
84
  }, []);
85
- const setDiscs = useCallback(()=>{
85
+ const setDiscs = __rspack_external_react.useCallback(()=>{
86
86
  const { width, height } = stateRef.current.rect;
87
87
  stateRef.current.discs = [];
88
88
  stateRef.current.startDisc = {
@@ -135,7 +135,7 @@ const HoleBackground = /*#__PURE__*/ forwardRef(({ strokeColor = "#737373", numb
135
135
  numberOfDiscs,
136
136
  tweenDisc
137
137
  ]);
138
- const setLines = useCallback(()=>{
138
+ const setLines = __rspack_external_react.useCallback(()=>{
139
139
  const { width, height } = stateRef.current.rect;
140
140
  stateRef.current.lines = [];
141
141
  const linesAngle = 2 * Math.PI / numberOfLines;
@@ -179,7 +179,7 @@ const HoleBackground = /*#__PURE__*/ forwardRef(({ strokeColor = "#737373", numb
179
179
  numberOfLines,
180
180
  strokeColor
181
181
  ]);
182
- const initParticle = useCallback((start = false)=>{
182
+ const initParticle = __rspack_external_react.useCallback((start = false)=>{
183
183
  const { particleArea } = stateRef.current;
184
184
  const sx = particleArea.sx + particleArea.sw * Math.random();
185
185
  const ex = particleArea.ex + particleArea.ew * Math.random();
@@ -200,7 +200,7 @@ const HoleBackground = /*#__PURE__*/ forwardRef(({ strokeColor = "#737373", numb
200
200
  }, [
201
201
  particleRGBColor
202
202
  ]);
203
- const setParticles = useCallback(()=>{
203
+ const setParticles = __rspack_external_react.useCallback(()=>{
204
204
  const { width, height } = stateRef.current.rect;
205
205
  stateRef.current.particles = [];
206
206
  const { disc } = stateRef.current.clip;
@@ -215,7 +215,7 @@ const HoleBackground = /*#__PURE__*/ forwardRef(({ strokeColor = "#737373", numb
215
215
  }, [
216
216
  initParticle
217
217
  ]);
218
- const drawDiscs = useCallback((context)=>{
218
+ const drawDiscs = __rspack_external_react.useCallback((context)=>{
219
219
  context.strokeStyle = strokeColor;
220
220
  context.lineWidth = 2;
221
221
  const outerDisc = stateRef.current.startDisc;
@@ -239,10 +239,10 @@ const HoleBackground = /*#__PURE__*/ forwardRef(({ strokeColor = "#737373", numb
239
239
  }, [
240
240
  strokeColor
241
241
  ]);
242
- const drawLines = useCallback((context)=>{
242
+ const drawLines = __rspack_external_react.useCallback((context)=>{
243
243
  if (stateRef.current.linesCanvas) context.drawImage(stateRef.current.linesCanvas, 0, 0);
244
244
  }, []);
245
- const drawParticles = useCallback((context)=>{
245
+ const drawParticles = __rspack_external_react.useCallback((context)=>{
246
246
  const clipPath = stateRef.current.clip.path;
247
247
  if (!clipPath) return;
248
248
  context.save();
@@ -256,7 +256,7 @@ const HoleBackground = /*#__PURE__*/ forwardRef(({ strokeColor = "#737373", numb
256
256
  });
257
257
  context.restore();
258
258
  }, []);
259
- const moveDiscs = useCallback(()=>{
259
+ const moveDiscs = __rspack_external_react.useCallback(()=>{
260
260
  stateRef.current.discs.forEach((disc)=>{
261
261
  disc.p = (disc.p + 0.001) % 1;
262
262
  tweenDisc(disc);
@@ -264,7 +264,7 @@ const HoleBackground = /*#__PURE__*/ forwardRef(({ strokeColor = "#737373", numb
264
264
  }, [
265
265
  tweenDisc
266
266
  ]);
267
- const moveParticles = useCallback(()=>{
267
+ const moveParticles = __rspack_external_react.useCallback(()=>{
268
268
  stateRef.current.particles.forEach((particle, index)=>{
269
269
  particle.p = 1 - particle.y / Math.max(stateRef.current.particleArea.h, 1);
270
270
  particle.x = particle.sx + particle.dx * particle.p;
@@ -274,7 +274,7 @@ const HoleBackground = /*#__PURE__*/ forwardRef(({ strokeColor = "#737373", numb
274
274
  }, [
275
275
  initParticle
276
276
  ]);
277
- const tick = useCallback(()=>{
277
+ const tick = __rspack_external_react.useCallback(()=>{
278
278
  const canvas = canvasRef.current;
279
279
  if (!canvas) return;
280
280
  const context = canvas.getContext("2d");
@@ -296,7 +296,7 @@ const HoleBackground = /*#__PURE__*/ forwardRef(({ strokeColor = "#737373", numb
296
296
  moveDiscs,
297
297
  moveParticles
298
298
  ]);
299
- const init = useCallback(()=>{
299
+ const init = __rspack_external_react.useCallback(()=>{
300
300
  setSize();
301
301
  setDiscs();
302
302
  setLines();
@@ -307,7 +307,7 @@ const HoleBackground = /*#__PURE__*/ forwardRef(({ strokeColor = "#737373", numb
307
307
  setParticles,
308
308
  setSize
309
309
  ]);
310
- useEffect(()=>{
310
+ __rspack_external_react.useEffect(()=>{
311
311
  const canvas = canvasRef.current;
312
312
  if (!canvas) return;
313
313
  init();
@@ -1 +1 @@
1
- {"version":3,"file":"components/ui/hole-background.js","sources":["../../../src/components/ui/hole-background.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport {motion} from \"motion/react\";\r\nimport * as React from \"react\";\r\n\r\nimport {cn} from \"@/lib/utilities\";\r\nimport styles from \"./hole-background.module.css\";\r\n\r\n/** Props accepted by {@link HoleBackground}. */\r\nexport interface HoleBackgroundProps extends React.HTMLAttributes<HTMLCanvasElement> {\r\n /** Stroke color used for the wireframe discs and line work. @default \"#737373\" */\r\n strokeColor?: string;\r\n /** Number of radial line groups drawn through the tunnel. @default 50 */\r\n numberOfLines?: number;\r\n /** Number of animated discs used to build the tunnel depth effect. @default 50 */\r\n numberOfDiscs?: number;\r\n /** RGB tuple used to tint the floating particle field. @default [255, 255, 255] */\r\n particleRGBColor?: [number, number, number];\r\n}\r\n\r\ninterface Disc {\r\n p: number;\r\n x: number;\r\n y: number;\r\n w: number;\r\n h: number;\r\n}\r\n\r\ninterface Point {\r\n x: number;\r\n y: number;\r\n}\r\n\r\ninterface Particle {\r\n x: number;\r\n sx: number;\r\n dx: number;\r\n y: number;\r\n vy: number;\r\n p: number;\r\n r: number;\r\n c: string;\r\n}\r\n\r\ninterface ClipState {\r\n disc: Disc;\r\n i: number;\r\n path: Path2D | null;\r\n}\r\n\r\ninterface RectState {\r\n width: number;\r\n height: number;\r\n}\r\n\r\ninterface RenderState {\r\n width: number;\r\n height: number;\r\n dpi: number;\r\n}\r\n\r\ninterface ParticleArea {\r\n sx: number;\r\n sw: number;\r\n ex: number;\r\n ew: number;\r\n h: number;\r\n}\r\n\r\ninterface HoleState {\r\n discs: Array<Disc>;\r\n lines: Array<Array<Point>>;\r\n particles: Array<Particle>;\r\n clip: ClipState;\r\n startDisc: Disc;\r\n endDisc: Disc;\r\n rect: RectState;\r\n render: RenderState;\r\n particleArea: ParticleArea;\r\n linesCanvas: HTMLCanvasElement | null;\r\n}\r\n\r\nconst linear = (progress: number): number => progress;\r\nconst easeInExpo = (progress: number): number => (progress === 0 ? 0 : 2 ** (10 * (progress - 1)));\r\n\r\nconst createEmptyDisc = (): Disc => ({p: 0, x: 0, y: 0, w: 0, h: 0});\r\nconst createEmptyParticleArea = (): ParticleArea => ({sx: 0, sw: 0, ex: 0, ew: 0, h: 0});\r\nconst createInitialState = (): HoleState => ({\r\n discs: [],\r\n lines: [],\r\n particles: [],\r\n clip: {disc: createEmptyDisc(), i: 0, path: null},\r\n startDisc: createEmptyDisc(),\r\n endDisc: createEmptyDisc(),\r\n rect: {width: 0, height: 0},\r\n render: {width: 0, height: 0, dpi: 1},\r\n particleArea: createEmptyParticleArea(),\r\n linesCanvas: null,\r\n});\r\n\r\n/**\r\n * Renders a vortex-style tunnel animation with discs, scanlines, and particles.\r\n *\r\n * @remarks\r\n * - Animated component using the `motion` library\r\n * - Renders a `<div>` element containing a `<canvas>`\r\n * - Styling via CSS Modules with `--ac-*` custom properties\r\n * - Client-side only (`\"use client\"` directive)\r\n *\r\n * @example\r\n * ```tsx\r\n * <HoleBackground />\r\n * ```\r\n *\r\n * @see {@link HoleBackgroundProps} for available props\r\n */\r\nconst HoleBackground = React.forwardRef<HTMLCanvasElement, HoleBackgroundProps>(\r\n (\r\n {strokeColor = \"#737373\", numberOfLines = 50, numberOfDiscs = 50, particleRGBColor = [255, 255, 255], className, children, ...props},\r\n ref,\r\n ) => {\r\n const canvasRef = React.useRef<HTMLCanvasElement>(null);\r\n const animationFrameIdRef = React.useRef(0);\r\n const stateRef = React.useRef<HoleState>(createInitialState());\r\n\r\n React.useImperativeHandle(ref, () => canvasRef.current!, []);\r\n\r\n const tweenValue = React.useCallback((start: number, end: number, progress: number, ease: \"inExpo\" | null = null): number => {\r\n const delta = end - start;\r\n const easeFunction = ease === \"inExpo\" ? easeInExpo : linear;\r\n return start + delta * easeFunction(progress);\r\n }, []);\r\n\r\n const tweenDisc = React.useCallback(\r\n (disc: Disc): void => {\r\n const {startDisc, endDisc} = stateRef.current;\r\n disc.x = tweenValue(startDisc.x, endDisc.x, disc.p);\r\n disc.y = tweenValue(startDisc.y, endDisc.y, disc.p, \"inExpo\");\r\n disc.w = tweenValue(startDisc.w, endDisc.w, disc.p);\r\n disc.h = tweenValue(startDisc.h, endDisc.h, disc.p);\r\n },\r\n [tweenValue],\r\n );\r\n\r\n const setSize = React.useCallback((): void => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) {\r\n return;\r\n }\r\n\r\n const rect = canvas.getBoundingClientRect();\r\n stateRef.current.rect = {width: rect.width, height: rect.height};\r\n stateRef.current.render = {\r\n width: rect.width,\r\n height: rect.height,\r\n dpi: globalThis.window.devicePixelRatio || 1,\r\n };\r\n canvas.width = stateRef.current.render.width * stateRef.current.render.dpi;\r\n canvas.height = stateRef.current.render.height * stateRef.current.render.dpi;\r\n }, []);\r\n\r\n const setDiscs = React.useCallback((): void => {\r\n const {width, height} = stateRef.current.rect;\r\n stateRef.current.discs = [];\r\n stateRef.current.startDisc = {\r\n x: width * 0.5,\r\n y: height * 0.45,\r\n w: width * 0.75,\r\n h: height * 0.7,\r\n p: 0,\r\n };\r\n stateRef.current.endDisc = {\r\n x: width * 0.5,\r\n y: height * 0.95,\r\n w: 0,\r\n h: 0,\r\n p: 0,\r\n };\r\n\r\n let previousBottom = height;\r\n stateRef.current.clip = {disc: createEmptyDisc(), i: 0, path: null};\r\n\r\n for (let index = 0; index < numberOfDiscs; index += 1) {\r\n const progress = index / numberOfDiscs;\r\n const disc: Disc = {p: progress, x: 0, y: 0, w: 0, h: 0};\r\n tweenDisc(disc);\r\n const bottom = disc.y + disc.h;\r\n if (bottom <= previousBottom) {\r\n stateRef.current.clip = {disc: {...disc}, i: index, path: null};\r\n }\r\n previousBottom = bottom;\r\n stateRef.current.discs.push(disc);\r\n }\r\n\r\n const clipPath = new globalThis.Path2D();\r\n const {disc} = stateRef.current.clip;\r\n clipPath.ellipse(disc.x, disc.y, disc.w, disc.h, 0, 0, Math.PI * 2);\r\n clipPath.rect(disc.x - disc.w, 0, disc.w * 2, disc.y);\r\n stateRef.current.clip.path = clipPath;\r\n }, [numberOfDiscs, tweenDisc]);\r\n\r\n const setLines = React.useCallback((): void => {\r\n const {width, height} = stateRef.current.rect;\r\n stateRef.current.lines = [];\r\n const linesAngle = (Math.PI * 2) / numberOfLines;\r\n for (let index = 0; index < numberOfLines; index += 1) {\r\n stateRef.current.lines.push([]);\r\n }\r\n\r\n stateRef.current.discs.forEach((disc) => {\r\n for (let index = 0; index < numberOfLines; index += 1) {\r\n const angle = index * linesAngle;\r\n const point: Point = {\r\n x: disc.x + Math.cos(angle) * disc.w,\r\n y: disc.y + Math.sin(angle) * disc.h,\r\n };\r\n stateRef.current.lines[index]!.push(point);\r\n }\r\n });\r\n\r\n const offCanvas = globalThis.document.createElement(\"canvas\");\r\n offCanvas.width = width;\r\n offCanvas.height = height;\r\n const context = offCanvas.getContext(\"2d\");\r\n const clipPath = stateRef.current.clip.path;\r\n if (!context || !clipPath) {\r\n return;\r\n }\r\n\r\n stateRef.current.lines.forEach((line) => {\r\n context.save();\r\n let lineIsIn = false;\r\n line.forEach((point, lineIndex) => {\r\n if (lineIndex === 0) {\r\n return;\r\n }\r\n\r\n const previousPoint = line[lineIndex - 1]!;\r\n if (!lineIsIn && (context.isPointInPath(clipPath, point.x, point.y) || context.isPointInStroke(clipPath, point.x, point.y))) {\r\n lineIsIn = true;\r\n } else if (lineIsIn) {\r\n context.clip(clipPath);\r\n }\r\n\r\n context.beginPath();\r\n context.moveTo(previousPoint.x, previousPoint.y);\r\n context.lineTo(point.x, point.y);\r\n context.strokeStyle = strokeColor;\r\n context.lineWidth = 2;\r\n context.stroke();\r\n context.closePath();\r\n });\r\n context.restore();\r\n });\r\n\r\n stateRef.current.linesCanvas = offCanvas;\r\n }, [numberOfLines, strokeColor]);\r\n\r\n const initParticle = React.useCallback(\r\n (start = false): Particle => {\r\n const {particleArea} = stateRef.current;\r\n const sx = particleArea.sx + particleArea.sw * Math.random();\r\n const ex = particleArea.ex + particleArea.ew * Math.random();\r\n const dx = ex - sx;\r\n const y = start ? particleArea.h * Math.random() : particleArea.h;\r\n const radius = 0.5 + Math.random() * 4;\r\n const vy = 0.5 + Math.random();\r\n\r\n return {\r\n x: sx,\r\n sx,\r\n dx,\r\n y,\r\n vy,\r\n p: 0,\r\n r: radius,\r\n c: `rgba(${particleRGBColor[0]}, ${particleRGBColor[1]}, ${particleRGBColor[2]}, ${Math.random()})`,\r\n };\r\n },\r\n [particleRGBColor],\r\n );\r\n\r\n const setParticles = React.useCallback((): void => {\r\n const {width, height} = stateRef.current.rect;\r\n stateRef.current.particles = [];\r\n const {disc} = stateRef.current.clip;\r\n stateRef.current.particleArea = {\r\n sx: (width - disc.w * 0.5) / 2,\r\n sw: disc.w * 0.5,\r\n ex: (width - disc.w * 2) / 2,\r\n ew: disc.w * 2,\r\n h: height * 0.85,\r\n };\r\n\r\n for (let index = 0; index < 100; index += 1) {\r\n stateRef.current.particles.push(initParticle(true));\r\n }\r\n }, [initParticle]);\r\n\r\n const drawDiscs = React.useCallback(\r\n (context: CanvasRenderingContext2D): void => {\r\n context.strokeStyle = strokeColor;\r\n context.lineWidth = 2;\r\n const outerDisc = stateRef.current.startDisc;\r\n context.beginPath();\r\n context.ellipse(outerDisc.x, outerDisc.y, outerDisc.w, outerDisc.h, 0, 0, Math.PI * 2);\r\n context.stroke();\r\n context.closePath();\r\n\r\n const clipPath = stateRef.current.clip.path;\r\n stateRef.current.discs.forEach((disc, index) => {\r\n if (index % 5 !== 0) {\r\n return;\r\n }\r\n\r\n if (clipPath && disc.w < stateRef.current.clip.disc.w - 5) {\r\n context.save();\r\n context.clip(clipPath);\r\n }\r\n\r\n context.beginPath();\r\n context.ellipse(disc.x, disc.y, disc.w, disc.h, 0, 0, Math.PI * 2);\r\n context.stroke();\r\n context.closePath();\r\n\r\n if (clipPath && disc.w < stateRef.current.clip.disc.w - 5) {\r\n context.restore();\r\n }\r\n });\r\n },\r\n [strokeColor],\r\n );\r\n\r\n const drawLines = React.useCallback((context: CanvasRenderingContext2D): void => {\r\n if (stateRef.current.linesCanvas) {\r\n context.drawImage(stateRef.current.linesCanvas, 0, 0);\r\n }\r\n }, []);\r\n\r\n const drawParticles = React.useCallback((context: CanvasRenderingContext2D): void => {\r\n const clipPath = stateRef.current.clip.path;\r\n if (!clipPath) {\r\n return;\r\n }\r\n\r\n context.save();\r\n context.clip(clipPath);\r\n stateRef.current.particles.forEach((particle) => {\r\n context.fillStyle = particle.c;\r\n context.beginPath();\r\n context.rect(particle.x, particle.y, particle.r, particle.r);\r\n context.closePath();\r\n context.fill();\r\n });\r\n context.restore();\r\n }, []);\r\n\r\n const moveDiscs = React.useCallback((): void => {\r\n stateRef.current.discs.forEach((disc) => {\r\n disc.p = (disc.p + 0.001) % 1;\r\n tweenDisc(disc);\r\n });\r\n }, [tweenDisc]);\r\n\r\n const moveParticles = React.useCallback((): void => {\r\n stateRef.current.particles.forEach((particle, index) => {\r\n particle.p = 1 - particle.y / Math.max(stateRef.current.particleArea.h, 1);\r\n particle.x = particle.sx + particle.dx * particle.p;\r\n particle.y -= particle.vy;\r\n if (particle.y < 0) {\r\n stateRef.current.particles[index] = initParticle();\r\n }\r\n });\r\n }, [initParticle]);\r\n\r\n const tick = React.useCallback((): void => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) {\r\n return;\r\n }\r\n\r\n const context = canvas.getContext(\"2d\");\r\n if (!context) {\r\n return;\r\n }\r\n\r\n context.clearRect(0, 0, canvas.width, canvas.height);\r\n context.save();\r\n context.scale(stateRef.current.render.dpi, stateRef.current.render.dpi);\r\n moveDiscs();\r\n moveParticles();\r\n drawDiscs(context);\r\n drawLines(context);\r\n drawParticles(context);\r\n context.restore();\r\n animationFrameIdRef.current = globalThis.requestAnimationFrame(tick);\r\n }, [drawDiscs, drawLines, drawParticles, moveDiscs, moveParticles]);\r\n\r\n const init = React.useCallback((): void => {\r\n setSize();\r\n setDiscs();\r\n setLines();\r\n setParticles();\r\n }, [setDiscs, setLines, setParticles, setSize]);\r\n\r\n React.useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) {\r\n return;\r\n }\r\n\r\n init();\r\n tick();\r\n\r\n const handleResize = (): void => {\r\n setSize();\r\n setDiscs();\r\n setLines();\r\n setParticles();\r\n };\r\n\r\n globalThis.window.addEventListener(\"resize\", handleResize);\r\n return () => {\r\n globalThis.window.removeEventListener(\"resize\", handleResize);\r\n globalThis.cancelAnimationFrame(animationFrameIdRef.current);\r\n };\r\n }, [init, setDiscs, setLines, setParticles, setSize, tick]);\r\n\r\n return (\r\n <div className={cn(styles.root, className)}>\r\n {children}\r\n <canvas\r\n ref={canvasRef}\r\n className={styles.canvas}\r\n {...props}\r\n />\r\n <motion.div\r\n aria-hidden='true'\r\n className={styles.glow}\r\n animate={{backgroundPosition: \"0% 300%\"}}\r\n transition={{duration: 5, ease: \"linear\", repeat: Infinity}}\r\n />\r\n <div\r\n aria-hidden='true'\r\n className={styles.scanlines}\r\n />\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nHoleBackground.displayName = \"HoleBackground\";\r\n\r\nexport {HoleBackground};\r\n"],"names":["linear","progress","easeInExpo","createEmptyDisc","createEmptyParticleArea","createInitialState","HoleBackground","React","strokeColor","numberOfLines","numberOfDiscs","particleRGBColor","className","children","props","ref","canvasRef","animationFrameIdRef","stateRef","tweenValue","start","end","ease","delta","easeFunction","tweenDisc","disc","startDisc","endDisc","setSize","canvas","rect","globalThis","setDiscs","width","height","previousBottom","index","bottom","clipPath","Math","setLines","linesAngle","angle","point","offCanvas","context","line","lineIsIn","lineIndex","previousPoint","initParticle","particleArea","sx","ex","dx","y","radius","vy","setParticles","drawDiscs","outerDisc","drawLines","drawParticles","particle","moveDiscs","moveParticles","tick","init","handleResize","cn","styles","motion","Infinity"],"mappings":"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"}
1
+ {"version":3,"file":"components/ui/hole-background.js","sources":["../../../src/components/ui/hole-background.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport {motion} from \"motion/react\";\r\nimport * as React from \"react\";\r\n\r\nimport {cn} from \"@/lib/utilities\";\r\nimport styles from \"./hole-background.module.css\";\r\n\r\n/** Props accepted by {@link HoleBackground}. */\r\nexport interface HoleBackgroundProps extends React.HTMLAttributes<HTMLCanvasElement> {\r\n /** Stroke color used for the wireframe discs and line work. @default \"#737373\" */\r\n strokeColor?: string;\r\n /** Number of radial line groups drawn through the tunnel. @default 50 */\r\n numberOfLines?: number;\r\n /** Number of animated discs used to build the tunnel depth effect. @default 50 */\r\n numberOfDiscs?: number;\r\n /** RGB tuple used to tint the floating particle field. @default [255, 255, 255] */\r\n particleRGBColor?: [number, number, number];\r\n}\r\n\r\ninterface Disc {\r\n p: number;\r\n x: number;\r\n y: number;\r\n w: number;\r\n h: number;\r\n}\r\n\r\ninterface Point {\r\n x: number;\r\n y: number;\r\n}\r\n\r\ninterface Particle {\r\n x: number;\r\n sx: number;\r\n dx: number;\r\n y: number;\r\n vy: number;\r\n p: number;\r\n r: number;\r\n c: string;\r\n}\r\n\r\ninterface ClipState {\r\n disc: Disc;\r\n i: number;\r\n path: Path2D | null;\r\n}\r\n\r\ninterface RectState {\r\n width: number;\r\n height: number;\r\n}\r\n\r\ninterface RenderState {\r\n width: number;\r\n height: number;\r\n dpi: number;\r\n}\r\n\r\ninterface ParticleArea {\r\n sx: number;\r\n sw: number;\r\n ex: number;\r\n ew: number;\r\n h: number;\r\n}\r\n\r\ninterface HoleState {\r\n discs: Array<Disc>;\r\n lines: Array<Array<Point>>;\r\n particles: Array<Particle>;\r\n clip: ClipState;\r\n startDisc: Disc;\r\n endDisc: Disc;\r\n rect: RectState;\r\n render: RenderState;\r\n particleArea: ParticleArea;\r\n linesCanvas: HTMLCanvasElement | null;\r\n}\r\n\r\nconst linear = (progress: number): number => progress;\r\nconst easeInExpo = (progress: number): number => (progress === 0 ? 0 : 2 ** (10 * (progress - 1)));\r\n\r\nconst createEmptyDisc = (): Disc => ({p: 0, x: 0, y: 0, w: 0, h: 0});\r\nconst createEmptyParticleArea = (): ParticleArea => ({sx: 0, sw: 0, ex: 0, ew: 0, h: 0});\r\nconst createInitialState = (): HoleState => ({\r\n discs: [],\r\n lines: [],\r\n particles: [],\r\n clip: {disc: createEmptyDisc(), i: 0, path: null},\r\n startDisc: createEmptyDisc(),\r\n endDisc: createEmptyDisc(),\r\n rect: {width: 0, height: 0},\r\n render: {width: 0, height: 0, dpi: 1},\r\n particleArea: createEmptyParticleArea(),\r\n linesCanvas: null,\r\n});\r\n\r\n/**\r\n * Renders a vortex-style tunnel animation with discs, scanlines, and particles.\r\n *\r\n * @remarks\r\n * - Animated component using the `motion` library\r\n * - Renders a `<div>` element containing a `<canvas>`\r\n * - Styling via CSS Modules with `--ac-*` custom properties\r\n * - Client-side only (`\"use client\"` directive)\r\n *\r\n * @example\r\n * ```tsx\r\n * <HoleBackground />\r\n * ```\r\n *\r\n * @see {@link HoleBackgroundProps} for available props\r\n */\r\nconst HoleBackground = React.forwardRef<HTMLCanvasElement, HoleBackgroundProps>(\r\n (\r\n {strokeColor = \"#737373\", numberOfLines = 50, numberOfDiscs = 50, particleRGBColor = [255, 255, 255], className, children, ...props},\r\n ref,\r\n ) => {\r\n const canvasRef = React.useRef<HTMLCanvasElement>(null);\r\n const animationFrameIdRef = React.useRef(0);\r\n const stateRef = React.useRef<HoleState>(createInitialState());\r\n\r\n React.useImperativeHandle(ref, () => canvasRef.current!, []);\r\n\r\n const tweenValue = React.useCallback((start: number, end: number, progress: number, ease: \"inExpo\" | null = null): number => {\r\n const delta = end - start;\r\n const easeFunction = ease === \"inExpo\" ? easeInExpo : linear;\r\n return start + delta * easeFunction(progress);\r\n }, []);\r\n\r\n const tweenDisc = React.useCallback(\r\n (disc: Disc): void => {\r\n const {startDisc, endDisc} = stateRef.current;\r\n disc.x = tweenValue(startDisc.x, endDisc.x, disc.p);\r\n disc.y = tweenValue(startDisc.y, endDisc.y, disc.p, \"inExpo\");\r\n disc.w = tweenValue(startDisc.w, endDisc.w, disc.p);\r\n disc.h = tweenValue(startDisc.h, endDisc.h, disc.p);\r\n },\r\n [tweenValue],\r\n );\r\n\r\n const setSize = React.useCallback((): void => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) {\r\n return;\r\n }\r\n\r\n const rect = canvas.getBoundingClientRect();\r\n stateRef.current.rect = {width: rect.width, height: rect.height};\r\n stateRef.current.render = {\r\n width: rect.width,\r\n height: rect.height,\r\n dpi: globalThis.window.devicePixelRatio || 1,\r\n };\r\n canvas.width = stateRef.current.render.width * stateRef.current.render.dpi;\r\n canvas.height = stateRef.current.render.height * stateRef.current.render.dpi;\r\n }, []);\r\n\r\n const setDiscs = React.useCallback((): void => {\r\n const {width, height} = stateRef.current.rect;\r\n stateRef.current.discs = [];\r\n stateRef.current.startDisc = {\r\n x: width * 0.5,\r\n y: height * 0.45,\r\n w: width * 0.75,\r\n h: height * 0.7,\r\n p: 0,\r\n };\r\n stateRef.current.endDisc = {\r\n x: width * 0.5,\r\n y: height * 0.95,\r\n w: 0,\r\n h: 0,\r\n p: 0,\r\n };\r\n\r\n let previousBottom = height;\r\n stateRef.current.clip = {disc: createEmptyDisc(), i: 0, path: null};\r\n\r\n for (let index = 0; index < numberOfDiscs; index += 1) {\r\n const progress = index / numberOfDiscs;\r\n const disc: Disc = {p: progress, x: 0, y: 0, w: 0, h: 0};\r\n tweenDisc(disc);\r\n const bottom = disc.y + disc.h;\r\n if (bottom <= previousBottom) {\r\n stateRef.current.clip = {disc: {...disc}, i: index, path: null};\r\n }\r\n previousBottom = bottom;\r\n stateRef.current.discs.push(disc);\r\n }\r\n\r\n const clipPath = new globalThis.Path2D();\r\n const {disc} = stateRef.current.clip;\r\n clipPath.ellipse(disc.x, disc.y, disc.w, disc.h, 0, 0, Math.PI * 2);\r\n clipPath.rect(disc.x - disc.w, 0, disc.w * 2, disc.y);\r\n stateRef.current.clip.path = clipPath;\r\n }, [numberOfDiscs, tweenDisc]);\r\n\r\n const setLines = React.useCallback((): void => {\r\n const {width, height} = stateRef.current.rect;\r\n stateRef.current.lines = [];\r\n const linesAngle = (Math.PI * 2) / numberOfLines;\r\n for (let index = 0; index < numberOfLines; index += 1) {\r\n stateRef.current.lines.push([]);\r\n }\r\n\r\n stateRef.current.discs.forEach((disc) => {\r\n for (let index = 0; index < numberOfLines; index += 1) {\r\n const angle = index * linesAngle;\r\n const point: Point = {\r\n x: disc.x + Math.cos(angle) * disc.w,\r\n y: disc.y + Math.sin(angle) * disc.h,\r\n };\r\n stateRef.current.lines[index]!.push(point);\r\n }\r\n });\r\n\r\n const offCanvas = globalThis.document.createElement(\"canvas\");\r\n offCanvas.width = width;\r\n offCanvas.height = height;\r\n const context = offCanvas.getContext(\"2d\");\r\n const clipPath = stateRef.current.clip.path;\r\n if (!context || !clipPath) {\r\n return;\r\n }\r\n\r\n stateRef.current.lines.forEach((line) => {\r\n context.save();\r\n let lineIsIn = false;\r\n line.forEach((point, lineIndex) => {\r\n if (lineIndex === 0) {\r\n return;\r\n }\r\n\r\n const previousPoint = line[lineIndex - 1]!;\r\n if (!lineIsIn && (context.isPointInPath(clipPath, point.x, point.y) || context.isPointInStroke(clipPath, point.x, point.y))) {\r\n lineIsIn = true;\r\n } else if (lineIsIn) {\r\n context.clip(clipPath);\r\n }\r\n\r\n context.beginPath();\r\n context.moveTo(previousPoint.x, previousPoint.y);\r\n context.lineTo(point.x, point.y);\r\n context.strokeStyle = strokeColor;\r\n context.lineWidth = 2;\r\n context.stroke();\r\n context.closePath();\r\n });\r\n context.restore();\r\n });\r\n\r\n stateRef.current.linesCanvas = offCanvas;\r\n }, [numberOfLines, strokeColor]);\r\n\r\n const initParticle = React.useCallback(\r\n (start = false): Particle => {\r\n const {particleArea} = stateRef.current;\r\n const sx = particleArea.sx + particleArea.sw * Math.random();\r\n const ex = particleArea.ex + particleArea.ew * Math.random();\r\n const dx = ex - sx;\r\n const y = start ? particleArea.h * Math.random() : particleArea.h;\r\n const radius = 0.5 + Math.random() * 4;\r\n const vy = 0.5 + Math.random();\r\n\r\n return {\r\n x: sx,\r\n sx,\r\n dx,\r\n y,\r\n vy,\r\n p: 0,\r\n r: radius,\r\n c: `rgba(${particleRGBColor[0]}, ${particleRGBColor[1]}, ${particleRGBColor[2]}, ${Math.random()})`,\r\n };\r\n },\r\n [particleRGBColor],\r\n );\r\n\r\n const setParticles = React.useCallback((): void => {\r\n const {width, height} = stateRef.current.rect;\r\n stateRef.current.particles = [];\r\n const {disc} = stateRef.current.clip;\r\n stateRef.current.particleArea = {\r\n sx: (width - disc.w * 0.5) / 2,\r\n sw: disc.w * 0.5,\r\n ex: (width - disc.w * 2) / 2,\r\n ew: disc.w * 2,\r\n h: height * 0.85,\r\n };\r\n\r\n for (let index = 0; index < 100; index += 1) {\r\n stateRef.current.particles.push(initParticle(true));\r\n }\r\n }, [initParticle]);\r\n\r\n const drawDiscs = React.useCallback(\r\n (context: CanvasRenderingContext2D): void => {\r\n context.strokeStyle = strokeColor;\r\n context.lineWidth = 2;\r\n const outerDisc = stateRef.current.startDisc;\r\n context.beginPath();\r\n context.ellipse(outerDisc.x, outerDisc.y, outerDisc.w, outerDisc.h, 0, 0, Math.PI * 2);\r\n context.stroke();\r\n context.closePath();\r\n\r\n const clipPath = stateRef.current.clip.path;\r\n stateRef.current.discs.forEach((disc, index) => {\r\n if (index % 5 !== 0) {\r\n return;\r\n }\r\n\r\n if (clipPath && disc.w < stateRef.current.clip.disc.w - 5) {\r\n context.save();\r\n context.clip(clipPath);\r\n }\r\n\r\n context.beginPath();\r\n context.ellipse(disc.x, disc.y, disc.w, disc.h, 0, 0, Math.PI * 2);\r\n context.stroke();\r\n context.closePath();\r\n\r\n if (clipPath && disc.w < stateRef.current.clip.disc.w - 5) {\r\n context.restore();\r\n }\r\n });\r\n },\r\n [strokeColor],\r\n );\r\n\r\n const drawLines = React.useCallback((context: CanvasRenderingContext2D): void => {\r\n if (stateRef.current.linesCanvas) {\r\n context.drawImage(stateRef.current.linesCanvas, 0, 0);\r\n }\r\n }, []);\r\n\r\n const drawParticles = React.useCallback((context: CanvasRenderingContext2D): void => {\r\n const clipPath = stateRef.current.clip.path;\r\n if (!clipPath) {\r\n return;\r\n }\r\n\r\n context.save();\r\n context.clip(clipPath);\r\n stateRef.current.particles.forEach((particle) => {\r\n context.fillStyle = particle.c;\r\n context.beginPath();\r\n context.rect(particle.x, particle.y, particle.r, particle.r);\r\n context.closePath();\r\n context.fill();\r\n });\r\n context.restore();\r\n }, []);\r\n\r\n const moveDiscs = React.useCallback((): void => {\r\n stateRef.current.discs.forEach((disc) => {\r\n disc.p = (disc.p + 0.001) % 1;\r\n tweenDisc(disc);\r\n });\r\n }, [tweenDisc]);\r\n\r\n const moveParticles = React.useCallback((): void => {\r\n stateRef.current.particles.forEach((particle, index) => {\r\n particle.p = 1 - particle.y / Math.max(stateRef.current.particleArea.h, 1);\r\n particle.x = particle.sx + particle.dx * particle.p;\r\n particle.y -= particle.vy;\r\n if (particle.y < 0) {\r\n stateRef.current.particles[index] = initParticle();\r\n }\r\n });\r\n }, [initParticle]);\r\n\r\n const tick = React.useCallback((): void => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) {\r\n return;\r\n }\r\n\r\n const context = canvas.getContext(\"2d\");\r\n if (!context) {\r\n return;\r\n }\r\n\r\n context.clearRect(0, 0, canvas.width, canvas.height);\r\n context.save();\r\n context.scale(stateRef.current.render.dpi, stateRef.current.render.dpi);\r\n moveDiscs();\r\n moveParticles();\r\n drawDiscs(context);\r\n drawLines(context);\r\n drawParticles(context);\r\n context.restore();\r\n animationFrameIdRef.current = globalThis.requestAnimationFrame(tick);\r\n }, [drawDiscs, drawLines, drawParticles, moveDiscs, moveParticles]);\r\n\r\n const init = React.useCallback((): void => {\r\n setSize();\r\n setDiscs();\r\n setLines();\r\n setParticles();\r\n }, [setDiscs, setLines, setParticles, setSize]);\r\n\r\n React.useEffect(() => {\r\n const canvas = canvasRef.current;\r\n if (!canvas) {\r\n return;\r\n }\r\n\r\n init();\r\n tick();\r\n\r\n const handleResize = (): void => {\r\n setSize();\r\n setDiscs();\r\n setLines();\r\n setParticles();\r\n };\r\n\r\n globalThis.window.addEventListener(\"resize\", handleResize);\r\n return () => {\r\n globalThis.window.removeEventListener(\"resize\", handleResize);\r\n globalThis.cancelAnimationFrame(animationFrameIdRef.current);\r\n };\r\n }, [init, setDiscs, setLines, setParticles, setSize, tick]);\r\n\r\n return (\r\n <div className={cn(styles.root, className)}>\r\n {children}\r\n <canvas\r\n ref={canvasRef}\r\n className={styles.canvas}\r\n {...props}\r\n />\r\n <motion.div\r\n aria-hidden='true'\r\n className={styles.glow}\r\n animate={{backgroundPosition: \"0% 300%\"}}\r\n transition={{duration: 5, ease: \"linear\", repeat: Infinity}}\r\n />\r\n <div\r\n aria-hidden='true'\r\n className={styles.scanlines}\r\n />\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nHoleBackground.displayName = \"HoleBackground\";\r\n\r\nexport {HoleBackground};\r\n"],"names":["linear","progress","easeInExpo","createEmptyDisc","createEmptyParticleArea","createInitialState","HoleBackground","React","strokeColor","numberOfLines","numberOfDiscs","particleRGBColor","className","children","props","ref","canvasRef","animationFrameIdRef","stateRef","tweenValue","start","end","ease","delta","easeFunction","tweenDisc","disc","startDisc","endDisc","setSize","canvas","rect","globalThis","setDiscs","width","height","previousBottom","index","bottom","clipPath","Math","setLines","linesAngle","angle","point","offCanvas","context","line","lineIsIn","lineIndex","previousPoint","initParticle","particleArea","sx","ex","dx","y","radius","vy","setParticles","drawDiscs","outerDisc","drawLines","drawParticles","particle","moveDiscs","moveParticles","tick","init","handleResize","cn","styles","motion","Infinity"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://./home/runner/work/arolariu.ro/arolariu.ro/packages/components/src/components/ui/hole-background.module.css","webpack://./src/components/ui/hole-background.module.css"],"names":[],"mappings":"AADA;ECEE,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,gBAAgB;AAClB;;AAEA;EACE,WAAW;EACX,4DAA4D;EAC5D,WAAW;EACX,YAAY;EACZ,cAAc;EACd,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,qCAAqC;AACvC;;AAEA;EACE,4DAA4D;AAC9D;;AAEA;EACE,4DAA4D;AAC9D;;AAEA;EACE,WAAW;EACX,uBAAuB;EACvB,UAAU;EACV,+DAA+D;EAC/D,QAAQ;EACR,SAAS;EACT,qCAAqC;AACvC;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,cAAc;EACd,kBAAkB;AACpB;;AAEA;EACE,WAAW;EACX,QAAQ;AACV;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,kBAAkB;EAClB,2BAA2B;EAC3B,YAAY;EACZ,UAAU;EACV,oJAAoJ;EACpJ,kCAAkC;EAClC,iCAAiC;EACjC,UAAU;EACV,YAAY;EACZ,kBAAkB;EAClB,WAAW;EACX,SAAS;EACT,kCAAkC;AACpC;;AAEA;EACE,4BAA4B;EAC5B,iIAAiI;AACnI;;AAEA;EACE,uBAAuB;EACvB,WAAW;EACX,UAAU;EACV,mEAAmE;EACnE,kBAAkB;EAClB,QAAQ;AACV","sourcesContent":[".root{height:100%;overflow:hidden;position:relative;width:100%}.root:before{background:radial-gradient(ellipse at 50% 55%,transparent 10%,#fff 50%);content:\"\";display:block;height:140%;left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0);width:140%}:global(.dark) .root:before,:global([data-theme=dark]) .root:before{background:radial-gradient(ellipse at 50% 55%,transparent 10%,#000 50%)}.root:after{background:radial-gradient(ellipse at 50% 75%,#a900ff 20%,transparent 75%);content:\"\";left:50%;mix-blend-mode:overlay;top:50%;transform:translate3d(-50%,-50%,0);z-index:5}.canvas,.root:after{display:block;height:100%;position:absolute;width:100%}.canvas{inset:0;opacity:.1}:global(.dark) .canvas,:global([data-theme=dark]) .canvas{opacity:.2}.glow{background:linear-gradient(20deg,#00f8f1,rgba(255,189,30,.25) 16.5%,#fe848f 33%,rgba(254,132,143,.25) 49.5%,#00f8f1 66%,rgba(0,248,241,.5) 85.5%,#ffbd1e);background-position:0 100%;background-size:100% 200%;border-bottom-left-radius:9999px;border-bottom-right-radius:9999px;filter:blur(48px);height:140%;left:50%;mix-blend-mode:plus-darker;opacity:.75;position:absolute;top:-71.5%;transform:translate3d(-50%,0,0);width:30%;z-index:3}:global(.dark) .glow,:global([data-theme=dark]) .glow{background:linear-gradient(20deg,#00f8f1,rgba(255,189,30,.125) 16.5%,#fe848f 33%,rgba(254,132,143,.125) 49.5%,#00f8f1 66%,rgba(0,248,241,.375) 85.5%,#ffbd1e);mix-blend-mode:plus-lighter}.scanlines{background:repeating-linear-gradient(transparent,transparent 1px,#fff 0,#fff 2px);inset:0;mix-blend-mode:overlay;opacity:.5;position:absolute;z-index:7}",".root {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n\n.root:before {\n content: \"\";\n background: radial-gradient(at 50% 55%, #0000 10%, #fff 50%);\n width: 140%;\n height: 140%;\n display: block;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate3d(-50%, -50%, 0);\n}\n\n:global(.dark) .root:before {\n background: radial-gradient(at 50% 55%, #0000 10%, #000 50%);\n}\n\n:global([data-theme=dark]) .root:before {\n background: radial-gradient(at 50% 55%, #0000 10%, #000 50%);\n}\n\n.root:after {\n content: \"\";\n mix-blend-mode: overlay;\n z-index: 5;\n background: radial-gradient(at 50% 75%, #a900ff 20%, #0000 75%);\n top: 50%;\n left: 50%;\n transform: translate3d(-50%, -50%, 0);\n}\n\n.canvas, .root:after {\n width: 100%;\n height: 100%;\n display: block;\n position: absolute;\n}\n\n.canvas {\n opacity: .1;\n inset: 0;\n}\n\n:is(:global(.dark) .canvas, :global([data-theme=dark]) .canvas) {\n opacity: .2;\n}\n\n.glow {\n filter: blur(48px);\n mix-blend-mode: plus-darker;\n opacity: .75;\n z-index: 3;\n background: linear-gradient(20deg, #00f8f1, #ffbd1e40 16.5%, #fe848f 33%, #fe848f40 49.5%, #00f8f1 66%, #00f8f180 85.5%, #ffbd1e) 0 100% / 100% 200%;\n border-bottom-right-radius: 9999px;\n border-bottom-left-radius: 9999px;\n width: 30%;\n height: 140%;\n position: absolute;\n top: -71.5%;\n left: 50%;\n transform: translate3d(-50%, 0, 0);\n}\n\n:is(:global(.dark) .glow, :global([data-theme=dark]) .glow) {\n mix-blend-mode: plus-lighter;\n background: linear-gradient(20deg, #00f8f1, #ffbd1e20 16.5%, #fe848f 33%, #fe848f20 49.5%, #00f8f1 66%, #00f8f160 85.5%, #ffbd1e);\n}\n\n.scanlines {\n mix-blend-mode: overlay;\n opacity: .5;\n z-index: 7;\n background: repeating-linear-gradient(#0000, #0000 1px, #fff 0 2px);\n position: absolute;\n inset: 0;\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://./../../node_modules/@rslib/core/node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[1].oneOf[2].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[1].oneOf[2].use[2]!/home/runner/work/arolariu.ro/arolariu.ro/node_modules/@rslib/core/node_modules/@rsbuild/core/compiled/postcss-loader/index.js??ruleSet[1].rules[1].oneOf[2].use[3]!/home/runner/work/arolariu.ro/arolariu.ro/packages/components/src/components/ui/hole-background.module.css","webpack://./src/components/ui/hole-background.module.css"],"names":[],"mappings":"AAAA;ECCE,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,gBAAgB;AAClB;;ADL+D;ECQ7D,WAAW;EACX,4DAA4D;EAC5D,WAAW;EACX,YAAY;EACZ,cAAc;EACd,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,qCAAqC;AACvC;;ADjB0Q;ECoBxQ,4DAA4D;AAC9D;;ADrB0Q;ECwBxQ,4DAA4D;AAC9D;;ADzBsZ;EC4BpZ,WAAW;EACX,uBAAuB;EACvB,UAAU;EACV,+DAA+D;EAC/D,QAAQ;EACR,SAAS;EACT,qCAAqC;AACvC;;ADnC6kB;ECsC3kB,WAAW;EACX,YAAY;EACZ,cAAc;EACd,kBAAkB;AACpB;;AD1CwpB;EC6CtpB,WAAW;EACX,QAAQ;AACV;;AD/CmrB;ECkDjrB,WAAW;AACb;;ADnDwvB;ECsDtvB,kBAAkB;EAClB,2BAA2B;EAC3B,YAAY;EACZ,UAAU;EACV,oJAAoJ;EACpJ,kCAAkC;EAClC,iCAAiC;EACjC,UAAU;EACV,YAAY;EACZ,kBAAkB;EAClB,WAAW;EACX,SAAS;EACT,kCAAkC;AACpC;;ADnE+qC;ECsE7qC,4BAA4B;EAC5B,iIAAiI;AACnI;;ADxE+5C;EC2E75C,uBAAuB;EACvB,WAAW;EACX,UAAU;EACV,mEAAmE;EACnE,kBAAkB;EAClB,QAAQ;AACV","sourcesContent":[".root{height:100%;overflow:hidden;position:relative;width:100%}.root:before{background:radial-gradient(ellipse at 50% 55%,transparent 10%,#fff 50%);content:\"\";display:block;height:140%;left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0);width:140%}:global(.dark) .root:before,:global([data-theme=dark]) .root:before{background:radial-gradient(ellipse at 50% 55%,transparent 10%,#000 50%)}.root:after{background:radial-gradient(ellipse at 50% 75%,#a900ff 20%,transparent 75%);content:\"\";left:50%;mix-blend-mode:overlay;top:50%;transform:translate3d(-50%,-50%,0);z-index:5}.canvas,.root:after{display:block;height:100%;position:absolute;width:100%}.canvas{inset:0;opacity:.1}:global(.dark) .canvas,:global([data-theme=dark]) .canvas{opacity:.2}.glow{background:linear-gradient(20deg,#00f8f1,rgba(255,189,30,.25) 16.5%,#fe848f 33%,rgba(254,132,143,.25) 49.5%,#00f8f1 66%,rgba(0,248,241,.5) 85.5%,#ffbd1e);background-position:0 100%;background-size:100% 200%;border-bottom-left-radius:9999px;border-bottom-right-radius:9999px;filter:blur(48px);height:140%;left:50%;mix-blend-mode:plus-darker;opacity:.75;position:absolute;top:-71.5%;transform:translate3d(-50%,0,0);width:30%;z-index:3}:global(.dark) .glow,:global([data-theme=dark]) .glow{background:linear-gradient(20deg,#00f8f1,rgba(255,189,30,.125) 16.5%,#fe848f 33%,rgba(254,132,143,.125) 49.5%,#00f8f1 66%,rgba(0,248,241,.375) 85.5%,#ffbd1e);mix-blend-mode:plus-lighter}.scanlines{background:repeating-linear-gradient(transparent,transparent 1px,#fff 0,#fff 2px);inset:0;mix-blend-mode:overlay;opacity:.5;position:absolute;z-index:7}",".root {\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n\n.root:before {\n content: \"\";\n background: radial-gradient(at 50% 55%, #0000 10%, #fff 50%);\n width: 140%;\n height: 140%;\n display: block;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate3d(-50%, -50%, 0);\n}\n\n:global(.dark) .root:before {\n background: radial-gradient(at 50% 55%, #0000 10%, #000 50%);\n}\n\n:global([data-theme=dark]) .root:before {\n background: radial-gradient(at 50% 55%, #0000 10%, #000 50%);\n}\n\n.root:after {\n content: \"\";\n mix-blend-mode: overlay;\n z-index: 5;\n background: radial-gradient(at 50% 75%, #a900ff 20%, #0000 75%);\n top: 50%;\n left: 50%;\n transform: translate3d(-50%, -50%, 0);\n}\n\n.canvas, .root:after {\n width: 100%;\n height: 100%;\n display: block;\n position: absolute;\n}\n\n.canvas {\n opacity: .1;\n inset: 0;\n}\n\n:is(:global(.dark) .canvas, :global([data-theme=dark]) .canvas) {\n opacity: .2;\n}\n\n.glow {\n filter: blur(48px);\n mix-blend-mode: plus-darker;\n opacity: .75;\n z-index: 3;\n background: linear-gradient(20deg, #00f8f1, #ffbd1e40 16.5%, #fe848f 33%, #fe848f40 49.5%, #00f8f1 66%, #00f8f180 85.5%, #ffbd1e) 0 100% / 100% 200%;\n border-bottom-right-radius: 9999px;\n border-bottom-left-radius: 9999px;\n width: 30%;\n height: 140%;\n position: absolute;\n top: -71.5%;\n left: 50%;\n transform: translate3d(-50%, 0, 0);\n}\n\n:is(:global(.dark) .glow, :global([data-theme=dark]) .glow) {\n mix-blend-mode: plus-lighter;\n background: linear-gradient(20deg, #00f8f1, #ffbd1e20 16.5%, #fe848f 33%, #fe848f20 49.5%, #00f8f1 66%, #00f8f160 85.5%, #ffbd1e);\n}\n\n.scanlines {\n mix-blend-mode: overlay;\n opacity: .5;\n z-index: 7;\n background: repeating-linear-gradient(#0000, #0000 1px, #fff 0 2px);\n position: absolute;\n inset: 0;\n}\n"],"sourceRoot":""}
@@ -3,15 +3,15 @@ import { jsx } from "react/jsx-runtime";
3
3
  import { mergeProps } from "@base-ui/react/merge-props";
4
4
  import { PreviewCard } from "@base-ui/react/preview-card";
5
5
  import { useRender } from "@base-ui/react/use-render";
6
- import { forwardRef } from "react";
7
6
  import { cn } from "../../lib/utilities.js";
8
7
  import hover_card_module from "./hover-card.module.js";
8
+ import * as __rspack_external_react from "react";
9
9
  function HoverCard(props) {
10
10
  return /*#__PURE__*/ jsx(PreviewCard.Root, {
11
11
  ...props
12
12
  });
13
13
  }
14
- const HoverCardTrigger = /*#__PURE__*/ forwardRef((props, ref)=>{
14
+ const HoverCardTrigger = /*#__PURE__*/ __rspack_external_react.forwardRef((props, ref)=>{
15
15
  const { className, children, render, ...otherProps } = props;
16
16
  return /*#__PURE__*/ jsx(PreviewCard.Trigger, {
17
17
  ref: ref,
@@ -26,7 +26,7 @@ const HoverCardTrigger = /*#__PURE__*/ forwardRef((props, ref)=>{
26
26
  children: children
27
27
  });
28
28
  });
29
- const HoverCardContent = /*#__PURE__*/ forwardRef((props, ref)=>{
29
+ const HoverCardContent = /*#__PURE__*/ __rspack_external_react.forwardRef((props, ref)=>{
30
30
  const { className, children, render, sideOffset = 4, ...otherProps } = props;
31
31
  return /*#__PURE__*/ jsx(PreviewCard.Portal, {
32
32
  children: /*#__PURE__*/ jsx(PreviewCard.Positioner, {
@@ -1 +1 @@
1
- {"version":3,"file":"components/ui/hover-card.js","sources":["../../../src/components/ui/hover-card.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport {mergeProps} from \"@base-ui/react/merge-props\";\r\nimport {PreviewCard as BasePreviewCard} from \"@base-ui/react/preview-card\";\r\nimport {useRender} from \"@base-ui/react/use-render\";\r\nimport * as React from \"react\";\r\n\r\nimport {cn} from \"@/lib/utilities\";\r\nimport styles from \"./hover-card.module.css\";\r\n\r\ninterface HoverCardProps extends React.ComponentPropsWithRef<typeof BasePreviewCard.Root> {}\r\ninterface HoverCardTriggerProps extends Omit<React.ComponentPropsWithRef<typeof BasePreviewCard.Trigger>, \"className\"> {\r\n /**\r\n * Applies additional CSS classes to the component root element.\r\n * @default undefined\r\n */\r\n className?: string;\r\n}\r\ninterface HoverCardContentProps extends Omit<React.ComponentPropsWithRef<typeof BasePreviewCard.Positioner>, \"className\"> {\r\n /**\r\n * Applies additional CSS classes to the component root element.\r\n * @default undefined\r\n */\r\n className?: string;\r\n /**\r\n * Offsets the floating content from its anchor in pixels.\r\n * @default 4\r\n */\r\n sideOffset?: number;\r\n}\r\n\r\n/**\r\n * Coordinates hover card state and accessibility behavior.\r\n *\r\n * @remarks\r\n * - Delegates structure and state to the underlying Base UI primitive\r\n * - Built on {@link https://base-ui.com/react/components/preview-card | Base UI Preview Card}\r\n * - Preserves the underlying primitive API for advanced composition\r\n *\r\n * @example\r\n * ```tsx\r\n * <HoverCard>Content</HoverCard>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/preview-card | Base UI Documentation}\r\n */\r\nfunction HoverCard(props: Readonly<HoverCard.Props>): React.ReactElement {\r\n return <BasePreviewCard.Root {...props} />;\r\n}\r\n\r\n/**\r\n * Renders the hover card trigger.\r\n *\r\n * @remarks\r\n * - Renders a `<a>` element by default\r\n * - Built on {@link https://base-ui.com/react/components/preview-card | Base UI Preview Card}\r\n * - Supports the `render` prop for element composition\r\n *\r\n * @example\r\n * ```tsx\r\n * <HoverCardTrigger>Content</HoverCardTrigger>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/preview-card | Base UI Documentation}\r\n */\r\nconst HoverCardTrigger = React.forwardRef<HTMLAnchorElement, HoverCardTrigger.Props>(\r\n (props: Readonly<HoverCardTrigger.Props>, ref): React.ReactElement => {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return (\r\n <BasePreviewCard.Trigger\r\n ref={ref}\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"a\",\r\n render: render as never,\r\n props: mergeProps({className}, {}),\r\n })}>\r\n {children}\r\n </BasePreviewCard.Trigger>\r\n );\r\n },\r\n);\r\n\r\n/**\r\n * Renders the hover card content.\r\n *\r\n * @remarks\r\n * - Renders a `<div>` element by default\r\n * - Built on {@link https://base-ui.com/react/components/preview-card | Base UI Preview Card}\r\n * - Supports the `render` prop for element composition\r\n *\r\n * @example\r\n * ```tsx\r\n * <HoverCardContent>Content</HoverCardContent>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/preview-card | Base UI Documentation}\r\n */\r\nconst HoverCardContent = React.forwardRef<React.ComponentRef<typeof BasePreviewCard.Popup>, HoverCardContent.Props>(\r\n (props: Readonly<HoverCardContent.Props>, ref): React.ReactElement => {\r\n const {className, children, render, sideOffset = 4, ...otherProps} = props;\r\n\r\n return (\r\n <BasePreviewCard.Portal>\r\n <BasePreviewCard.Positioner\r\n sideOffset={sideOffset}\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n props: mergeProps({className: styles.positioner}, {}),\r\n })}>\r\n <BasePreviewCard.Popup\r\n ref={ref}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.popup, className)}, {}),\r\n })}>\r\n {children}\r\n </BasePreviewCard.Popup>\r\n </BasePreviewCard.Positioner>\r\n </BasePreviewCard.Portal>\r\n );\r\n },\r\n);\r\n\r\n// eslint-disable-next-line no-redeclare -- required for the canonical component namespace typing API\r\nnamespace HoverCard {\r\n export type Props = HoverCardProps;\r\n export type State = BasePreviewCard.Root.State;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare -- required for the canonical component namespace typing API\r\nnamespace HoverCardTrigger {\r\n export type Props = HoverCardTriggerProps;\r\n export type State = BasePreviewCard.Trigger.State;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare -- required for the canonical component namespace typing API\r\nnamespace HoverCardContent {\r\n export type Props = HoverCardContentProps;\r\n export type State = BasePreviewCard.Popup.State;\r\n}\r\n\r\nHoverCard.displayName = \"HoverCard\";\r\nHoverCardTrigger.displayName = \"HoverCardTrigger\";\r\nHoverCardContent.displayName = \"HoverCardContent\";\r\n\r\nexport {HoverCard, HoverCardContent, HoverCardTrigger};\r\n"],"names":["HoverCard","props","BasePreviewCard","HoverCardTrigger","React","ref","className","children","render","otherProps","useRender","mergeProps","HoverCardContent","sideOffset","styles","cn"],"mappings":";;;;;;;;AA8CA,SAASA,UAAUC,KAAgC;IACjD,OAAO,WAAP,GAAO,IAACC,YAAAA,IAAoB;QAAE,GAAGD,KAAK;;AACxC;AAiBA,MAAME,mBAAmB,WAAHA,GAAGC,WACvB,CAACH,OAAyCI;IACxC,MAAM,EAACC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAGC,YAAW,GAAGR;IAErD,OAAO,WAAP,GACE,IAACC,YAAAA,OAAuB;QACtB,KAAKG;QACJ,GAAGI,UAAU;QACd,QAAQC,UAAU;YAChB,gBAAgB;YAChB,QAAQF;YACR,OAAOG,WAAW;gBAACL;YAAS,GAAG,CAAC;QAClC;kBACCC;;AAGP;AAkBF,MAAMK,mBAAmB,WAAHA,GAAGR,WACvB,CAACH,OAAyCI;IACxC,MAAM,EAACC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEK,aAAa,CAAC,EAAE,GAAGJ,YAAW,GAAGR;IAErE,OAAO,WAAP,GACE,IAACC,YAAAA,MAAsB;kBACrB,kBAACA,YAAAA,UAA0B;YACzB,YAAYW;YACX,GAAGJ,UAAU;YACd,QAAQC,UAAU;gBAChB,gBAAgB;gBAChB,OAAOC,WAAW;oBAAC,WAAWG,kBAAAA,UAAiB;gBAAA,GAAG,CAAC;YACrD;sBACA,kBAACZ,YAAAA,KAAqB;gBACpB,KAAKG;gBACL,QAAQK,UAAU;oBAChB,gBAAgB;oBAChB,QAAQF;oBACR,OAAOG,WAAW;wBAAC,WAAWI,GAAGD,kBAAAA,KAAY,EAAER;oBAAU,GAAG,CAAC;gBAC/D;0BACCC;;;;AAKX;AAqBFP,UAAU,WAAW,GAAG;AACxBG,iBAAiB,WAAW,GAAG;AAC/BS,iBAAiB,WAAW,GAAG"}
1
+ {"version":3,"file":"components/ui/hover-card.js","sources":["../../../src/components/ui/hover-card.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport {mergeProps} from \"@base-ui/react/merge-props\";\r\nimport {PreviewCard as BasePreviewCard} from \"@base-ui/react/preview-card\";\r\nimport {useRender} from \"@base-ui/react/use-render\";\r\nimport * as React from \"react\";\r\n\r\nimport {cn} from \"@/lib/utilities\";\r\nimport styles from \"./hover-card.module.css\";\r\n\r\ninterface HoverCardProps extends React.ComponentPropsWithRef<typeof BasePreviewCard.Root> {}\r\ninterface HoverCardTriggerProps extends Omit<React.ComponentPropsWithRef<typeof BasePreviewCard.Trigger>, \"className\"> {\r\n /**\r\n * Applies additional CSS classes to the component root element.\r\n * @default undefined\r\n */\r\n className?: string;\r\n}\r\ninterface HoverCardContentProps extends Omit<React.ComponentPropsWithRef<typeof BasePreviewCard.Positioner>, \"className\"> {\r\n /**\r\n * Applies additional CSS classes to the component root element.\r\n * @default undefined\r\n */\r\n className?: string;\r\n /**\r\n * Offsets the floating content from its anchor in pixels.\r\n * @default 4\r\n */\r\n sideOffset?: number;\r\n}\r\n\r\n/**\r\n * Coordinates hover card state and accessibility behavior.\r\n *\r\n * @remarks\r\n * - Delegates structure and state to the underlying Base UI primitive\r\n * - Built on {@link https://base-ui.com/react/components/preview-card | Base UI Preview Card}\r\n * - Preserves the underlying primitive API for advanced composition\r\n *\r\n * @example\r\n * ```tsx\r\n * <HoverCard>Content</HoverCard>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/preview-card | Base UI Documentation}\r\n */\r\nfunction HoverCard(props: Readonly<HoverCard.Props>): React.ReactElement {\r\n return <BasePreviewCard.Root {...props} />;\r\n}\r\n\r\n/**\r\n * Renders the hover card trigger.\r\n *\r\n * @remarks\r\n * - Renders a `<a>` element by default\r\n * - Built on {@link https://base-ui.com/react/components/preview-card | Base UI Preview Card}\r\n * - Supports the `render` prop for element composition\r\n *\r\n * @example\r\n * ```tsx\r\n * <HoverCardTrigger>Content</HoverCardTrigger>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/preview-card | Base UI Documentation}\r\n */\r\nconst HoverCardTrigger = React.forwardRef<HTMLAnchorElement, HoverCardTrigger.Props>(\r\n (props: Readonly<HoverCardTrigger.Props>, ref): React.ReactElement => {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return (\r\n <BasePreviewCard.Trigger\r\n ref={ref}\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"a\",\r\n render: render as never,\r\n props: mergeProps({className}, {}),\r\n })}>\r\n {children}\r\n </BasePreviewCard.Trigger>\r\n );\r\n },\r\n);\r\n\r\n/**\r\n * Renders the hover card content.\r\n *\r\n * @remarks\r\n * - Renders a `<div>` element by default\r\n * - Built on {@link https://base-ui.com/react/components/preview-card | Base UI Preview Card}\r\n * - Supports the `render` prop for element composition\r\n *\r\n * @example\r\n * ```tsx\r\n * <HoverCardContent>Content</HoverCardContent>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/preview-card | Base UI Documentation}\r\n */\r\nconst HoverCardContent = React.forwardRef<React.ComponentRef<typeof BasePreviewCard.Popup>, HoverCardContent.Props>(\r\n (props: Readonly<HoverCardContent.Props>, ref): React.ReactElement => {\r\n const {className, children, render, sideOffset = 4, ...otherProps} = props;\r\n\r\n return (\r\n <BasePreviewCard.Portal>\r\n <BasePreviewCard.Positioner\r\n sideOffset={sideOffset}\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n props: mergeProps({className: styles.positioner}, {}),\r\n })}>\r\n <BasePreviewCard.Popup\r\n ref={ref}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.popup, className)}, {}),\r\n })}>\r\n {children}\r\n </BasePreviewCard.Popup>\r\n </BasePreviewCard.Positioner>\r\n </BasePreviewCard.Portal>\r\n );\r\n },\r\n);\r\n\r\n// eslint-disable-next-line no-redeclare -- required for the canonical component namespace typing API\r\nnamespace HoverCard {\r\n export type Props = HoverCardProps;\r\n export type State = BasePreviewCard.Root.State;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare -- required for the canonical component namespace typing API\r\nnamespace HoverCardTrigger {\r\n export type Props = HoverCardTriggerProps;\r\n export type State = BasePreviewCard.Trigger.State;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare -- required for the canonical component namespace typing API\r\nnamespace HoverCardContent {\r\n export type Props = HoverCardContentProps;\r\n export type State = BasePreviewCard.Popup.State;\r\n}\r\n\r\nHoverCard.displayName = \"HoverCard\";\r\nHoverCardTrigger.displayName = \"HoverCardTrigger\";\r\nHoverCardContent.displayName = \"HoverCardContent\";\r\n\r\nexport {HoverCard, HoverCardContent, HoverCardTrigger};\r\n"],"names":["HoverCard","props","BasePreviewCard","HoverCardTrigger","React","ref","className","children","render","otherProps","useRender","mergeProps","HoverCardContent","sideOffset","styles","cn"],"mappings":";;;;;;;;AA8CA,SAASA,UAAUC,KAAgC;IACjD,OAAO,WAAP,GAAO,IAACC,YAAAA,IAAoB;QAAE,GAAGD,KAAK;;AACxC;AAiBA,MAAME,mBAAmB,WAAHA,GAAGC,wBAAAA,UAAgB,CACvC,CAACH,OAAyCI;IACxC,MAAM,EAACC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAGC,YAAW,GAAGR;IAErD,OAAO,WAAP,GACE,IAACC,YAAAA,OAAuB;QACtB,KAAKG;QACJ,GAAGI,UAAU;QACd,QAAQC,UAAU;YAChB,gBAAgB;YAChB,QAAQF;YACR,OAAOG,WAAW;gBAACL;YAAS,GAAG,CAAC;QAClC;kBACCC;;AAGP;AAkBF,MAAMK,mBAAmB,WAAHA,GAAGR,wBAAAA,UAAgB,CACvC,CAACH,OAAyCI;IACxC,MAAM,EAACC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEK,aAAa,CAAC,EAAE,GAAGJ,YAAW,GAAGR;IAErE,OAAO,WAAP,GACE,IAACC,YAAAA,MAAsB;kBACrB,kBAACA,YAAAA,UAA0B;YACzB,YAAYW;YACX,GAAGJ,UAAU;YACd,QAAQC,UAAU;gBAChB,gBAAgB;gBAChB,OAAOC,WAAW;oBAAC,WAAWG,kBAAAA,UAAiB;gBAAA,GAAG,CAAC;YACrD;sBACA,kBAACZ,YAAAA,KAAqB;gBACpB,KAAKG;gBACL,QAAQK,UAAU;oBAChB,gBAAgB;oBAChB,QAAQF;oBACR,OAAOG,WAAW;wBAAC,WAAWI,GAAGD,kBAAAA,KAAY,EAAER;oBAAU,GAAG,CAAC;gBAC/D;0BACCC;;;;AAKX;AAqBFP,UAAU,WAAW,GAAG;AACxBG,iBAAiB,WAAW,GAAG;AAC/BS,iBAAiB,WAAW,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://./home/runner/work/arolariu.ro/arolariu.ro/packages/components/src/components/ui/hover-card.module.css","webpack://./src/components/ui/hover-card.module.css"],"names":[],"mappings":"AADA;ECEE,WAAW;AACb;;AAEA;EACE,mCAAmC;EACnC,kCAAkC;EAClC,kCAAkC;EAClC,mCAAmC;EACnC,0BAA0B;EAC1B,qFAAqF;EACrF,aAAa;EACb,YAAY;EACZ,uCAAuC;AACzC;;AAEA;EACE,UAAU;EACV,qBAAqB;AACvB","sourcesContent":[".positioner{z-index:50}.popup{background-color:var(--ac-popover);border:1px solid var(--ac-border);border-radius:var(--ac-radius-md);box-shadow:0 16px 40px -16px rgba(0,0,0,.3);color:var(--ac-popover-foreground);outline:none;padding:var(--ac-space-4);transition:opacity var(--ac-transition-normal),transform var(--ac-transition-normal);width:16rem}.popup[data-ending-style],.popup[data-starting-style]{opacity:0;transform:scale(.96)}",".positioner {\n z-index: 50;\n}\n\n.popup {\n background-color: var(--ac-popover);\n border: 1px solid var(--ac-border);\n border-radius: var(--ac-radius-md);\n color: var(--ac-popover-foreground);\n padding: var(--ac-space-4);\n transition: opacity var(--ac-transition-normal),transform var(--ac-transition-normal);\n outline: none;\n width: 16rem;\n box-shadow: 0 16px 40px -16px #0000004d;\n}\n\n.popup[data-ending-style], .popup[data-starting-style] {\n opacity: 0;\n transform: scale(.96);\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://./../../node_modules/@rslib/core/node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[1].oneOf[2].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[1].oneOf[2].use[2]!/home/runner/work/arolariu.ro/arolariu.ro/node_modules/@rslib/core/node_modules/@rsbuild/core/compiled/postcss-loader/index.js??ruleSet[1].rules[1].oneOf[2].use[3]!/home/runner/work/arolariu.ro/arolariu.ro/packages/components/src/components/ui/hover-card.module.css","webpack://./src/components/ui/hover-card.module.css"],"names":[],"mappings":"AAAA;ECCE,WAAW;AACb;;ADFuB;ECKrB,mCAAmC;EACnC,kCAAkC;EAClC,kCAAkC;EAClC,mCAAmC;EACnC,0BAA0B;EAC1B,qFAAqF;EACrF,aAAa;EACb,YAAY;EACZ,uCAAuC;AACzC;;ADd4V;ECiB1V,UAAU;EACV,qBAAqB;AACvB","sourcesContent":[".positioner{z-index:50}.popup{background-color:var(--ac-popover);border:1px solid var(--ac-border);border-radius:var(--ac-radius-md);box-shadow:0 16px 40px -16px rgba(0,0,0,.3);color:var(--ac-popover-foreground);outline:none;padding:var(--ac-space-4);transition:opacity var(--ac-transition-normal),transform var(--ac-transition-normal);width:16rem}.popup[data-ending-style],.popup[data-starting-style]{opacity:0;transform:scale(.96)}",".positioner {\n z-index: 50;\n}\n\n.popup {\n background-color: var(--ac-popover);\n border: 1px solid var(--ac-border);\n border-radius: var(--ac-radius-md);\n color: var(--ac-popover-foreground);\n padding: var(--ac-space-4);\n transition: opacity var(--ac-transition-normal),transform var(--ac-transition-normal);\n outline: none;\n width: 16rem;\n box-shadow: 0 16px 40px -16px #0000004d;\n}\n\n.popup[data-ending-style], .popup[data-starting-style] {\n opacity: 0;\n transform: scale(.96);\n}\n"],"sourceRoot":""}
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import { forwardRef } from "react";
4
3
  import { Button } from "./button.js";
5
4
  import { Input } from "./input.js";
6
5
  import { Textarea } from "./textarea.js";
7
6
  import { cn } from "../../lib/utilities.js";
8
7
  import input_group_module from "./input-group.module.js";
8
+ import * as __rspack_external_react from "react";
9
9
  function getAddonAlignClass(align) {
10
10
  switch(align){
11
11
  case "block-end":
@@ -30,14 +30,14 @@ function getButtonSizeClass(size) {
30
30
  return input_group_module.buttonXs;
31
31
  }
32
32
  }
33
- const InputGroup = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
33
+ const InputGroup = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
34
34
  ref: ref,
35
35
  role: "group",
36
36
  "data-slot": "input-group",
37
37
  className: cn(input_group_module.group, className),
38
38
  ...props
39
39
  }));
40
- const InputGroupAddon = /*#__PURE__*/ forwardRef(({ className, align = "inline-start", onClick, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
40
+ const InputGroupAddon = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, align = "inline-start", onClick, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
41
41
  ref: ref,
42
42
  role: "group",
43
43
  "data-slot": "input-group-addon",
@@ -51,7 +51,7 @@ const InputGroupAddon = /*#__PURE__*/ forwardRef(({ className, align = "inline-s
51
51
  },
52
52
  ...props
53
53
  }));
54
- const InputGroupButton = /*#__PURE__*/ forwardRef(({ className, type = "button", variant = "ghost", size = "xs", ...props }, ref)=>/*#__PURE__*/ jsx(Button, {
54
+ const InputGroupButton = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, type = "button", variant = "ghost", size = "xs", ...props }, ref)=>/*#__PURE__*/ jsx(Button, {
55
55
  ref: ref,
56
56
  type: type,
57
57
  "data-size": size,
@@ -59,18 +59,18 @@ const InputGroupButton = /*#__PURE__*/ forwardRef(({ className, type = "button",
59
59
  className: cn(input_group_module.button, getButtonSizeClass(size), className),
60
60
  ...props
61
61
  }));
62
- const InputGroupText = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("span", {
62
+ const InputGroupText = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("span", {
63
63
  ref: ref,
64
64
  className: cn(input_group_module.text, className),
65
65
  ...props
66
66
  }));
67
- const InputGroupInput = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(Input, {
67
+ const InputGroupInput = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(Input, {
68
68
  ref: ref,
69
69
  "data-slot": "input-group-control",
70
70
  className: cn(input_group_module.input, className),
71
71
  ...props
72
72
  }));
73
- const InputGroupTextarea = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(Textarea, {
73
+ const InputGroupTextarea = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(Textarea, {
74
74
  ref: ref,
75
75
  "data-slot": "input-group-control",
76
76
  className: cn(input_group_module.textarea, className),
@@ -1 +1 @@
1
- {"version":3,"file":"components/ui/input-group.js","sources":["../../../src/components/ui/input-group.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\n\r\nimport {Button} from \"@/components/ui/button\";\r\nimport {Input} from \"@/components/ui/input\";\r\nimport {Textarea} from \"@/components/ui/textarea\";\r\nimport {cn} from \"@/lib/utilities\";\r\nimport styles from \"./input-group.module.css\";\r\n\r\n/** Supported alignment options for {@link InputGroupAddon}. */\r\nexport type InputGroupAddonAlign = \"inline-start\" | \"inline-end\" | \"block-start\" | \"block-end\";\r\n\r\n/** Supported compact button sizes for {@link InputGroupButton}. */\r\nexport type InputGroupButtonSize = \"xs\" | \"sm\" | \"icon-xs\" | \"icon-sm\";\r\n\r\n/**\r\n * Props for the {@link InputGroup} component.\r\n */\r\nexport type InputGroupProps = React.ComponentPropsWithoutRef<\"div\">;\r\n\r\n/**\r\n * Props for the {@link InputGroupAddon} component.\r\n */\r\nexport interface InputGroupAddonProps extends React.ComponentPropsWithoutRef<\"div\"> {\r\n /** Position of the addon relative to the input control. @default \"inline-start\" */\r\n align?: InputGroupAddonAlign;\r\n}\r\n\r\n/**\r\n * Props for the {@link InputGroupButton} component.\r\n */\r\nexport interface InputGroupButtonProps extends Omit<React.ComponentPropsWithoutRef<typeof Button>, \"size\"> {\r\n /** Compact button size used within the group chrome. @default \"xs\" */\r\n size?: InputGroupButtonSize;\r\n}\r\n\r\n/**\r\n * Props for the {@link InputGroupText} component.\r\n */\r\nexport type InputGroupTextProps = React.ComponentPropsWithoutRef<\"span\">;\r\n\r\n/**\r\n * Props for the {@link InputGroupInput} component.\r\n */\r\nexport type InputGroupInputProps = React.ComponentPropsWithoutRef<\"input\">;\r\n\r\n/**\r\n * Props for the {@link InputGroupTextarea} component.\r\n */\r\nexport type InputGroupTextareaProps = React.ComponentPropsWithoutRef<\"textarea\">;\r\n\r\nfunction getAddonAlignClass(align: InputGroupAddonAlign): string {\r\n switch (align) {\r\n case \"block-end\": {\r\n return styles.blockEnd;\r\n }\r\n case \"block-start\": {\r\n return styles.blockStart;\r\n }\r\n case \"inline-end\": {\r\n return styles.inlineEnd;\r\n }\r\n default: {\r\n return styles.inlineStart;\r\n }\r\n }\r\n}\r\n\r\nfunction getButtonSizeClass(size: InputGroupButtonSize): string {\r\n switch (size) {\r\n case \"icon-sm\": {\r\n return styles.buttonIconSm;\r\n }\r\n case \"icon-xs\": {\r\n return styles.buttonIconXs;\r\n }\r\n case \"sm\": {\r\n return styles.buttonSm;\r\n }\r\n default: {\r\n return styles.buttonXs;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Creates a composable shell for grouped text inputs and controls.\r\n *\r\n * @remarks\r\n * - Pure CSS component (no Base UI primitive)\r\n * - Renders a `<div>` element\r\n * - Styling via CSS Modules with `--ac-*` custom properties\r\n *\r\n * @example\r\n * ```tsx\r\n * <InputGroup>\r\n * <InputGroupInput />\r\n * </InputGroup>\r\n * ```\r\n *\r\n * @see {@link InputGroupProps} for available props\r\n */\r\nconst InputGroup = React.forwardRef<HTMLDivElement, InputGroupProps>(\r\n ({className, ...props}: Readonly<InputGroupProps>, ref): React.JSX.Element => (\r\n <div\r\n ref={ref}\r\n role='group'\r\n data-slot='input-group'\r\n className={cn(styles.group, className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\n\r\n/**\r\n * Renders supplementary content around an input group control.\r\n *\r\n * @remarks\r\n * - Pure CSS component (no Base UI primitive)\r\n * - Renders a `<div>` element\r\n * - Styling via CSS Modules with `--ac-*` custom properties\r\n *\r\n * @example\r\n * ```tsx\r\n * <InputGroupAddon align='inline-end'>.com</InputGroupAddon>\r\n * ```\r\n *\r\n * @see {@link InputGroupAddonProps} for available props\r\n */\r\nconst InputGroupAddon = React.forwardRef<HTMLDivElement, InputGroupAddonProps>(\r\n ({className, align = \"inline-start\", onClick, ...props}: Readonly<InputGroupAddonProps>, ref): React.JSX.Element => (\r\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions -- clicking the addon focuses the related control.\r\n <div\r\n ref={ref}\r\n role='group'\r\n data-slot='input-group-addon'\r\n data-align={align}\r\n className={cn(styles.addon, getAddonAlignClass(align), className)}\r\n onClick={(event): void => {\r\n if ((event.target as HTMLElement).closest(\"button\")) {\r\n onClick?.(event);\r\n return;\r\n }\r\n\r\n onClick?.(event);\r\n\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n\r\n event.currentTarget.parentElement?.querySelector<HTMLInputElement | HTMLTextAreaElement>(\"input, textarea\")?.focus();\r\n }}\r\n {...props}\r\n />\r\n ),\r\n);\r\n\r\n/**\r\n * Renders a compact button matched to input group dimensions.\r\n *\r\n * @remarks\r\n * - Pure CSS component (no Base UI primitive)\r\n * - Renders a wrapped `Button` component\r\n * - Styling via CSS Modules with `--ac-*` custom properties\r\n *\r\n * @example\r\n * ```tsx\r\n * <InputGroupButton size='sm'>Search</InputGroupButton>\r\n * ```\r\n *\r\n * @see {@link InputGroupButtonProps} for available props\r\n */\r\nconst InputGroupButton = React.forwardRef<HTMLButtonElement, InputGroupButtonProps>(\r\n ({className, type = \"button\", variant = \"ghost\", size = \"xs\", ...props}: Readonly<InputGroupButtonProps>, ref): React.JSX.Element => (\r\n <Button\r\n ref={ref}\r\n type={type}\r\n data-size={size}\r\n variant={variant}\r\n className={cn(styles.button, getButtonSizeClass(size), className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\n\r\n/**\r\n * Displays static inline text within an input group.\r\n *\r\n * @remarks\r\n * - Pure CSS component (no Base UI primitive)\r\n * - Renders a `<span>` element\r\n * - Styling via CSS Modules with `--ac-*` custom properties\r\n *\r\n * @example\r\n * ```tsx\r\n * <InputGroupText>@</InputGroupText>\r\n * ```\r\n *\r\n * @see {@link InputGroupTextProps} for available props\r\n */\r\nconst InputGroupText = React.forwardRef<HTMLSpanElement, InputGroupTextProps>(\r\n ({className, ...props}: Readonly<InputGroupTextProps>, ref): React.JSX.Element => (\r\n <span\r\n ref={ref}\r\n className={cn(styles.text, className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\n\r\n/**\r\n * Renders the primary input control inside an input group.\r\n *\r\n * @remarks\r\n * - Pure CSS component (no Base UI primitive)\r\n * - Renders a wrapped `Input` component\r\n * - Styling via CSS Modules with `--ac-*` custom properties\r\n *\r\n * @example\r\n * ```tsx\r\n * <InputGroupInput placeholder='Search...' />\r\n * ```\r\n *\r\n * @see {@link InputGroupInputProps} for available props\r\n */\r\nconst InputGroupInput = React.forwardRef<HTMLInputElement, InputGroupInputProps>(\r\n ({className, ...props}: Readonly<InputGroupInputProps>, ref): React.JSX.Element => (\r\n <Input\r\n ref={ref}\r\n data-slot='input-group-control'\r\n className={cn(styles.input, className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\n\r\n/**\r\n * Renders a textarea control inside an input group.\r\n *\r\n * @remarks\r\n * - Pure CSS component (no Base UI primitive)\r\n * - Renders a wrapped `Textarea` component\r\n * - Styling via CSS Modules with `--ac-*` custom properties\r\n *\r\n * @example\r\n * ```tsx\r\n * <InputGroupTextarea rows={4} />\r\n * ```\r\n *\r\n * @see {@link InputGroupTextareaProps} for available props\r\n */\r\nconst InputGroupTextarea = React.forwardRef<HTMLTextAreaElement, InputGroupTextareaProps>(\r\n ({className, ...props}: Readonly<InputGroupTextareaProps>, ref): React.JSX.Element => (\r\n <Textarea\r\n ref={ref}\r\n data-slot='input-group-control'\r\n className={cn(styles.textarea, className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\n\r\nInputGroup.displayName = \"InputGroup\";\r\nInputGroupAddon.displayName = \"InputGroupAddon\";\r\nInputGroupButton.displayName = \"InputGroupButton\";\r\nInputGroupText.displayName = \"InputGroupText\";\r\nInputGroupInput.displayName = \"InputGroupInput\";\r\nInputGroupTextarea.displayName = \"InputGroupTextarea\";\r\n\r\nexport {InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea};\r\n"],"names":["getAddonAlignClass","align","styles","getButtonSizeClass","size","InputGroup","React","className","props","ref","cn","InputGroupAddon","onClick","event","InputGroupButton","type","variant","Button","InputGroupText","InputGroupInput","Input","InputGroupTextarea","Textarea"],"mappings":";;;;;;;;AAoDA,SAASA,mBAAmBC,KAA2B;IACrD,OAAQA;QACN,KAAK;YACH,OAAOC,mBAAAA,QAAe;QAExB,KAAK;YACH,OAAOA,mBAAAA,UAAiB;QAE1B,KAAK;YACH,OAAOA,mBAAAA,SAAgB;QAEzB;YACE,OAAOA,mBAAAA,WAAkB;IAE7B;AACF;AAEA,SAASC,mBAAmBC,IAA0B;IACpD,OAAQA;QACN,KAAK;YACH,OAAOF,mBAAAA,YAAmB;QAE5B,KAAK;YACH,OAAOA,mBAAAA,YAAmB;QAE5B,KAAK;YACH,OAAOA,mBAAAA,QAAe;QAExB;YACE,OAAOA,mBAAAA,QAAe;IAE1B;AACF;AAmBA,MAAMG,aAAa,WAAHA,GAAGC,WACjB,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAiC,EAAEC,MAAAA,WAAAA,GACjD,IAAC;QACC,KAAKA;QACL,MAAK;QACL,aAAU;QACV,WAAWC,GAAGR,mBAAAA,KAAY,EAAEK;QAC3B,GAAGC,KAAK;;AAoBf,MAAMG,kBAAkB,WAAHA,GAAGL,WACtB,CAAC,EAACC,SAAS,EAAEN,QAAQ,cAAc,EAAEW,OAAO,EAAE,GAAGJ,OAAsC,EAAEC,M,cAEvF,IAAC;QACC,KAAKA;QACL,MAAK;QACL,aAAU;QACV,cAAYR;QACZ,WAAWS,GAAGR,mBAAAA,KAAY,EAAEF,mBAAmBC,QAAQM;QACvD,SAAS,CAACM;YACR,IAAKA,MAAM,MAAM,CAAiB,OAAO,CAAC,WAAW,YACnDD,UAAUC;YAIZD,UAAUC;YAEV,IAAIA,MAAM,gBAAgB,EACxB;YAGFA,MAAM,aAAa,CAAC,aAAa,EAAE,cAAsD,oBAAoB;QAC/G;QACC,GAAGL,KAAK;;AAoBf,MAAMM,mBAAmB,WAAHA,GAAGR,WACvB,CAAC,EAACC,SAAS,EAAEQ,OAAO,QAAQ,EAAEC,UAAU,OAAO,EAAEZ,OAAO,IAAI,EAAE,GAAGI,OAAuC,EAAEC,MAAAA,WAAAA,GACxG,IAACQ,QAAMA;QACL,KAAKR;QACL,MAAMM;QACN,aAAWX;QACX,SAASY;QACT,WAAWN,GAAGR,mBAAAA,MAAa,EAAEC,mBAAmBC,OAAOG;QACtD,GAAGC,KAAK;;AAoBf,MAAMU,iBAAiB,WAAHA,GAAGZ,WACrB,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAqC,EAAEC,MAAAA,WAAAA,GACrD,IAAC;QACC,KAAKA;QACL,WAAWC,GAAGR,mBAAAA,IAAW,EAAEK;QAC1B,GAAGC,KAAK;;AAoBf,MAAMW,kBAAkB,WAAHA,GAAGb,WACtB,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAsC,EAAEC,MAAAA,WAAAA,GACtD,IAACW,OAAKA;QACJ,KAAKX;QACL,aAAU;QACV,WAAWC,GAAGR,mBAAAA,KAAY,EAAEK;QAC3B,GAAGC,KAAK;;AAoBf,MAAMa,qBAAqB,WAAHA,GAAGf,WACzB,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAyC,EAAEC,MAAAA,WAAAA,GACzD,IAACa,UAAQA;QACP,KAAKb;QACL,aAAU;QACV,WAAWC,GAAGR,mBAAAA,QAAe,EAAEK;QAC9B,GAAGC,KAAK;;AAKfH,WAAW,WAAW,GAAG;AACzBM,gBAAgB,WAAW,GAAG;AAC9BG,iBAAiB,WAAW,GAAG;AAC/BI,eAAe,WAAW,GAAG;AAC7BC,gBAAgB,WAAW,GAAG;AAC9BE,mBAAmB,WAAW,GAAG"}
1
+ {"version":3,"file":"components/ui/input-group.js","sources":["../../../src/components/ui/input-group.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\n\r\nimport {Button} from \"@/components/ui/button\";\r\nimport {Input} from \"@/components/ui/input\";\r\nimport {Textarea} from \"@/components/ui/textarea\";\r\nimport {cn} from \"@/lib/utilities\";\r\nimport styles from \"./input-group.module.css\";\r\n\r\n/** Supported alignment options for {@link InputGroupAddon}. */\r\nexport type InputGroupAddonAlign = \"inline-start\" | \"inline-end\" | \"block-start\" | \"block-end\";\r\n\r\n/** Supported compact button sizes for {@link InputGroupButton}. */\r\nexport type InputGroupButtonSize = \"xs\" | \"sm\" | \"icon-xs\" | \"icon-sm\";\r\n\r\n/**\r\n * Props for the {@link InputGroup} component.\r\n */\r\nexport type InputGroupProps = React.ComponentPropsWithoutRef<\"div\">;\r\n\r\n/**\r\n * Props for the {@link InputGroupAddon} component.\r\n */\r\nexport interface InputGroupAddonProps extends React.ComponentPropsWithoutRef<\"div\"> {\r\n /** Position of the addon relative to the input control. @default \"inline-start\" */\r\n align?: InputGroupAddonAlign;\r\n}\r\n\r\n/**\r\n * Props for the {@link InputGroupButton} component.\r\n */\r\nexport interface InputGroupButtonProps extends Omit<React.ComponentPropsWithoutRef<typeof Button>, \"size\"> {\r\n /** Compact button size used within the group chrome. @default \"xs\" */\r\n size?: InputGroupButtonSize;\r\n}\r\n\r\n/**\r\n * Props for the {@link InputGroupText} component.\r\n */\r\nexport type InputGroupTextProps = React.ComponentPropsWithoutRef<\"span\">;\r\n\r\n/**\r\n * Props for the {@link InputGroupInput} component.\r\n */\r\nexport type InputGroupInputProps = React.ComponentPropsWithoutRef<\"input\">;\r\n\r\n/**\r\n * Props for the {@link InputGroupTextarea} component.\r\n */\r\nexport type InputGroupTextareaProps = React.ComponentPropsWithoutRef<\"textarea\">;\r\n\r\nfunction getAddonAlignClass(align: InputGroupAddonAlign): string {\r\n switch (align) {\r\n case \"block-end\": {\r\n return styles.blockEnd;\r\n }\r\n case \"block-start\": {\r\n return styles.blockStart;\r\n }\r\n case \"inline-end\": {\r\n return styles.inlineEnd;\r\n }\r\n default: {\r\n return styles.inlineStart;\r\n }\r\n }\r\n}\r\n\r\nfunction getButtonSizeClass(size: InputGroupButtonSize): string {\r\n switch (size) {\r\n case \"icon-sm\": {\r\n return styles.buttonIconSm;\r\n }\r\n case \"icon-xs\": {\r\n return styles.buttonIconXs;\r\n }\r\n case \"sm\": {\r\n return styles.buttonSm;\r\n }\r\n default: {\r\n return styles.buttonXs;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Creates a composable shell for grouped text inputs and controls.\r\n *\r\n * @remarks\r\n * - Pure CSS component (no Base UI primitive)\r\n * - Renders a `<div>` element\r\n * - Styling via CSS Modules with `--ac-*` custom properties\r\n *\r\n * @example\r\n * ```tsx\r\n * <InputGroup>\r\n * <InputGroupInput />\r\n * </InputGroup>\r\n * ```\r\n *\r\n * @see {@link InputGroupProps} for available props\r\n */\r\nconst InputGroup = React.forwardRef<HTMLDivElement, InputGroupProps>(\r\n ({className, ...props}: Readonly<InputGroupProps>, ref): React.JSX.Element => (\r\n <div\r\n ref={ref}\r\n role='group'\r\n data-slot='input-group'\r\n className={cn(styles.group, className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\n\r\n/**\r\n * Renders supplementary content around an input group control.\r\n *\r\n * @remarks\r\n * - Pure CSS component (no Base UI primitive)\r\n * - Renders a `<div>` element\r\n * - Styling via CSS Modules with `--ac-*` custom properties\r\n *\r\n * @example\r\n * ```tsx\r\n * <InputGroupAddon align='inline-end'>.com</InputGroupAddon>\r\n * ```\r\n *\r\n * @see {@link InputGroupAddonProps} for available props\r\n */\r\nconst InputGroupAddon = React.forwardRef<HTMLDivElement, InputGroupAddonProps>(\r\n ({className, align = \"inline-start\", onClick, ...props}: Readonly<InputGroupAddonProps>, ref): React.JSX.Element => (\r\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions -- clicking the addon focuses the related control.\r\n <div\r\n ref={ref}\r\n role='group'\r\n data-slot='input-group-addon'\r\n data-align={align}\r\n className={cn(styles.addon, getAddonAlignClass(align), className)}\r\n onClick={(event): void => {\r\n if ((event.target as HTMLElement).closest(\"button\")) {\r\n onClick?.(event);\r\n return;\r\n }\r\n\r\n onClick?.(event);\r\n\r\n if (event.defaultPrevented) {\r\n return;\r\n }\r\n\r\n event.currentTarget.parentElement?.querySelector<HTMLInputElement | HTMLTextAreaElement>(\"input, textarea\")?.focus();\r\n }}\r\n {...props}\r\n />\r\n ),\r\n);\r\n\r\n/**\r\n * Renders a compact button matched to input group dimensions.\r\n *\r\n * @remarks\r\n * - Pure CSS component (no Base UI primitive)\r\n * - Renders a wrapped `Button` component\r\n * - Styling via CSS Modules with `--ac-*` custom properties\r\n *\r\n * @example\r\n * ```tsx\r\n * <InputGroupButton size='sm'>Search</InputGroupButton>\r\n * ```\r\n *\r\n * @see {@link InputGroupButtonProps} for available props\r\n */\r\nconst InputGroupButton = React.forwardRef<HTMLButtonElement, InputGroupButtonProps>(\r\n ({className, type = \"button\", variant = \"ghost\", size = \"xs\", ...props}: Readonly<InputGroupButtonProps>, ref): React.JSX.Element => (\r\n <Button\r\n ref={ref}\r\n type={type}\r\n data-size={size}\r\n variant={variant}\r\n className={cn(styles.button, getButtonSizeClass(size), className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\n\r\n/**\r\n * Displays static inline text within an input group.\r\n *\r\n * @remarks\r\n * - Pure CSS component (no Base UI primitive)\r\n * - Renders a `<span>` element\r\n * - Styling via CSS Modules with `--ac-*` custom properties\r\n *\r\n * @example\r\n * ```tsx\r\n * <InputGroupText>@</InputGroupText>\r\n * ```\r\n *\r\n * @see {@link InputGroupTextProps} for available props\r\n */\r\nconst InputGroupText = React.forwardRef<HTMLSpanElement, InputGroupTextProps>(\r\n ({className, ...props}: Readonly<InputGroupTextProps>, ref): React.JSX.Element => (\r\n <span\r\n ref={ref}\r\n className={cn(styles.text, className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\n\r\n/**\r\n * Renders the primary input control inside an input group.\r\n *\r\n * @remarks\r\n * - Pure CSS component (no Base UI primitive)\r\n * - Renders a wrapped `Input` component\r\n * - Styling via CSS Modules with `--ac-*` custom properties\r\n *\r\n * @example\r\n * ```tsx\r\n * <InputGroupInput placeholder='Search...' />\r\n * ```\r\n *\r\n * @see {@link InputGroupInputProps} for available props\r\n */\r\nconst InputGroupInput = React.forwardRef<HTMLInputElement, InputGroupInputProps>(\r\n ({className, ...props}: Readonly<InputGroupInputProps>, ref): React.JSX.Element => (\r\n <Input\r\n ref={ref}\r\n data-slot='input-group-control'\r\n className={cn(styles.input, className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\n\r\n/**\r\n * Renders a textarea control inside an input group.\r\n *\r\n * @remarks\r\n * - Pure CSS component (no Base UI primitive)\r\n * - Renders a wrapped `Textarea` component\r\n * - Styling via CSS Modules with `--ac-*` custom properties\r\n *\r\n * @example\r\n * ```tsx\r\n * <InputGroupTextarea rows={4} />\r\n * ```\r\n *\r\n * @see {@link InputGroupTextareaProps} for available props\r\n */\r\nconst InputGroupTextarea = React.forwardRef<HTMLTextAreaElement, InputGroupTextareaProps>(\r\n ({className, ...props}: Readonly<InputGroupTextareaProps>, ref): React.JSX.Element => (\r\n <Textarea\r\n ref={ref}\r\n data-slot='input-group-control'\r\n className={cn(styles.textarea, className)}\r\n {...props}\r\n />\r\n ),\r\n);\r\n\r\nInputGroup.displayName = \"InputGroup\";\r\nInputGroupAddon.displayName = \"InputGroupAddon\";\r\nInputGroupButton.displayName = \"InputGroupButton\";\r\nInputGroupText.displayName = \"InputGroupText\";\r\nInputGroupInput.displayName = \"InputGroupInput\";\r\nInputGroupTextarea.displayName = \"InputGroupTextarea\";\r\n\r\nexport {InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea};\r\n"],"names":["getAddonAlignClass","align","styles","getButtonSizeClass","size","InputGroup","React","className","props","ref","cn","InputGroupAddon","onClick","event","InputGroupButton","type","variant","Button","InputGroupText","InputGroupInput","Input","InputGroupTextarea","Textarea"],"mappings":";;;;;;;;AAoDA,SAASA,mBAAmBC,KAA2B;IACrD,OAAQA;QACN,KAAK;YACH,OAAOC,mBAAAA,QAAe;QAExB,KAAK;YACH,OAAOA,mBAAAA,UAAiB;QAE1B,KAAK;YACH,OAAOA,mBAAAA,SAAgB;QAEzB;YACE,OAAOA,mBAAAA,WAAkB;IAE7B;AACF;AAEA,SAASC,mBAAmBC,IAA0B;IACpD,OAAQA;QACN,KAAK;YACH,OAAOF,mBAAAA,YAAmB;QAE5B,KAAK;YACH,OAAOA,mBAAAA,YAAmB;QAE5B,KAAK;YACH,OAAOA,mBAAAA,QAAe;QAExB;YACE,OAAOA,mBAAAA,QAAe;IAE1B;AACF;AAmBA,MAAMG,aAAa,WAAHA,GAAGC,wBAAAA,UAAgB,CACjC,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAiC,EAAEC,MAAAA,WAAAA,GACjD,IAAC;QACC,KAAKA;QACL,MAAK;QACL,aAAU;QACV,WAAWC,GAAGR,mBAAAA,KAAY,EAAEK;QAC3B,GAAGC,KAAK;;AAoBf,MAAMG,kBAAkB,WAAHA,GAAGL,wBAAAA,UAAgB,CACtC,CAAC,EAACC,SAAS,EAAEN,QAAQ,cAAc,EAAEW,OAAO,EAAE,GAAGJ,OAAsC,EAAEC,M,cAEvF,IAAC;QACC,KAAKA;QACL,MAAK;QACL,aAAU;QACV,cAAYR;QACZ,WAAWS,GAAGR,mBAAAA,KAAY,EAAEF,mBAAmBC,QAAQM;QACvD,SAAS,CAACM;YACR,IAAKA,MAAM,MAAM,CAAiB,OAAO,CAAC,WAAW,YACnDD,UAAUC;YAIZD,UAAUC;YAEV,IAAIA,MAAM,gBAAgB,EACxB;YAGFA,MAAM,aAAa,CAAC,aAAa,EAAE,cAAsD,oBAAoB;QAC/G;QACC,GAAGL,KAAK;;AAoBf,MAAMM,mBAAmB,WAAHA,GAAGR,wBAAAA,UAAgB,CACvC,CAAC,EAACC,SAAS,EAAEQ,OAAO,QAAQ,EAAEC,UAAU,OAAO,EAAEZ,OAAO,IAAI,EAAE,GAAGI,OAAuC,EAAEC,MAAAA,WAAAA,GACxG,IAACQ,QAAMA;QACL,KAAKR;QACL,MAAMM;QACN,aAAWX;QACX,SAASY;QACT,WAAWN,GAAGR,mBAAAA,MAAa,EAAEC,mBAAmBC,OAAOG;QACtD,GAAGC,KAAK;;AAoBf,MAAMU,iBAAiB,WAAHA,GAAGZ,wBAAAA,UAAgB,CACrC,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAqC,EAAEC,MAAAA,WAAAA,GACrD,IAAC;QACC,KAAKA;QACL,WAAWC,GAAGR,mBAAAA,IAAW,EAAEK;QAC1B,GAAGC,KAAK;;AAoBf,MAAMW,kBAAkB,WAAHA,GAAGb,wBAAAA,UAAgB,CACtC,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAsC,EAAEC,MAAAA,WAAAA,GACtD,IAACW,OAAKA;QACJ,KAAKX;QACL,aAAU;QACV,WAAWC,GAAGR,mBAAAA,KAAY,EAAEK;QAC3B,GAAGC,KAAK;;AAoBf,MAAMa,qBAAqB,WAAHA,GAAGf,wBAAAA,UAAgB,CACzC,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAyC,EAAEC,MAAAA,WAAAA,GACzD,IAACa,UAAQA;QACP,KAAKb;QACL,aAAU;QACV,WAAWC,GAAGR,mBAAAA,QAAe,EAAEK;QAC9B,GAAGC,KAAK;;AAKfH,WAAW,WAAW,GAAG;AACzBM,gBAAgB,WAAW,GAAG;AAC9BG,iBAAiB,WAAW,GAAG;AAC/BI,eAAe,WAAW,GAAG;AAC7BC,gBAAgB,WAAW,GAAG;AAC9BE,mBAAmB,WAAW,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://./home/runner/work/arolariu.ro/arolariu.ro/packages/components/src/components/ui/input-group.module.css","webpack://./src/components/ui/input-group.module.css"],"names":[],"mappings":"AADA;ECEE,sCAAsC;EACtC,iCAAiC;EACjC,kCAAkC;EAClC,kCAAkC;EAClC,uFAAuF;EACvF,mBAAmB;EACnB,WAAW;EACX,aAAa;EACb,kBAAkB;EAClB,+BAA+B;AACjC;;AAEA;EACE,4BAA4B;EAC5B,oCAAoC;AACtC;;AAEA;EACE,oBAAoB;EACpB,gBAAgB;AAClB;;AAEA;EACE,mCAAmC;EACnC,+EAA+E;AACjF;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,sBAAsB;EACtB,oBAAoB;AACtB;;AAEA;EACE,iCAAiC;EACjC,YAAY;EACZ,4BAA4B;EAC5B,mBAAmB;EACnB,sBAAsB;EACtB,yBAAyB;EACzB,iBAAiB;EACjB,gBAAgB;EAChB,aAAa;AACf;;AAEA;EACE,cAAc;EACd,WAAW;EACX,YAAY;AACd;;AAEA;EACE,+BAA+B;EAC/B,gCAAgC;EAChC,SAAS;AACX;;AAEA;EACE,+BAA+B;EAC/B,gCAAgC;EAChC,QAAQ;AACV;;AAEA;EACE,8CAA8C;EAC9C,SAAS;AACX;;AAEA;EACE,2BAA2B;EAC3B,WAAW;AACb;;AAEA;EACE,8CAA8C;EAC9C,QAAQ;AACV;;AAEA;EACE,gBAAgB;EAChB,cAAc;AAChB;;AAEA;EACE,8CAA8C;EAC9C,4BAA4B;EAC5B,yBAAyB;EACzB,4BAA4B;AAC9B;;AAEA;EACE,8CAA8C;EAC9C,8BAA8B;EAC9B,4BAA4B;AAC9B;;AAEA;EACE,8CAA8C;EAC9C,yBAAyB;EACzB,wBAAwB;EACxB,UAAU;AACZ;;AAEA;EACE,8BAA8B;EAC9B,6BAA6B;EAC7B,UAAU;AACZ;;AAEA;EACE,iCAAiC;EACjC,4BAA4B;EAC5B,mBAAmB;EACnB,sBAAsB;EACtB,aAAa;AACf;;AAEA;EACE,gBAAgB;EAChB,uBAAuB;EACvB,SAAS;EACT,gBAAgB;EAChB,UAAU;EACV,YAAY;AACd;;AAEA;EACE,gBAAgB;EAChB,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;EAChB,0CAA0C;EAC1C,YAAY;EACZ,iCAAiC;EACjC,8BAA8B;EAC9B,YAAY;EACZ,uBAAuB;EACvB,SAAS;EACT,gBAAgB;EAChB,UAAU;AACZ","sourcesContent":[".group{align-items:center;background-color:var(--ac-background);border:1px solid var(--ac-input);border-radius:var(--ac-radius-md);box-shadow:0 1px 2px 0 rgba(0,0,0,.04);display:flex;min-height:var(--ac-size-default);position:relative;transition:border-color var(--ac-transition-fast),box-shadow var(--ac-transition-fast);width:100%}.group:focus-within{border-color:var(--ac-ring);box-shadow:0 0 0 1px var(--ac-ring)}.group:has(textarea){align-items:stretch;min-height:auto}.group:has([aria-invalid=true]){border-color:var(--ac-destructive);box-shadow:0 0 0 1px color-mix(in oklch,var(--ac-destructive),transparent 65%)}.group[data-disabled=true]{opacity:.5}.group:has([data-align=block-end]),.group:has([data-align=block-start]){align-items:stretch;flex-direction:column}.addon{align-items:center;color:var(--ac-muted-foreground);cursor:text;display:flex;font-size:var(--ac-text-sm);font-weight:500;gap:var(--ac-space-2);user-select:none}.addon>svg,.text>svg{flex-shrink:0;height:1rem;width:1rem}.inlineStart{order:-1;padding-left:var(--ac-space-3);padding-right:var(--ac-space-2)}.inlineEnd{order:1;padding-left:var(--ac-space-2);padding-right:var(--ac-space-3)}.blockStart{order:-1;padding:var(--ac-space-3) var(--ac-space-3) 0}.blockEnd,.blockStart{justify-content:flex-start;width:100%}.blockEnd{order:1;padding:0 var(--ac-space-3) var(--ac-space-3)}.button{box-shadow:none;flex-shrink:0}.buttonXs{border-radius:calc(var(--ac-radius-md) - 2px);font-size:var(--ac-text-xs);height:var(--ac-size-sm);padding:0 var(--ac-space-2)}.buttonSm{border-radius:calc(var(--ac-radius-md) - 1px);height:var(--ac-size-default);padding:0 var(--ac-space-3)}.buttonIconXs{border-radius:calc(var(--ac-radius-md) - 2px);height:var(--ac-size-sm);padding:0;width:var(--ac-size-sm)}.buttonIconSm{height:var(--ac-size-default);padding:0;width:var(--ac-size-default)}.text{align-items:center;color:var(--ac-muted-foreground);display:flex;font-size:var(--ac-text-sm);gap:var(--ac-space-2)}.input{background-color:transparent;border:0;border-radius:0;box-shadow:none;flex:1 1 auto;min-width:0}.input:focus-visible,.textarea:focus-visible{border-color:transparent;box-shadow:none}.textarea{background-color:transparent;border:0;border-radius:0;box-shadow:none;flex:1 1 auto;min-height:calc(var(--ac-size-default)*2);min-width:0;padding-bottom:var(--ac-space-3);padding-top:var(--ac-space-3);resize:none}",".group {\n background-color: var(--ac-background);\n border: 1px solid var(--ac-input);\n border-radius: var(--ac-radius-md);\n min-height: var(--ac-size-default);\n transition: border-color var(--ac-transition-fast),box-shadow var(--ac-transition-fast);\n align-items: center;\n width: 100%;\n display: flex;\n position: relative;\n box-shadow: 0 1px 2px #0000000a;\n}\n\n.group:focus-within {\n border-color: var(--ac-ring);\n box-shadow: 0 0 0 1px var(--ac-ring);\n}\n\n.group:has(textarea) {\n align-items: stretch;\n min-height: auto;\n}\n\n.group:has([aria-invalid=\"true\"]) {\n border-color: var(--ac-destructive);\n box-shadow: 0 0 0 1px color-mix(in oklch,var(--ac-destructive),transparent 65%);\n}\n\n.group[data-disabled=\"true\"] {\n opacity: .5;\n}\n\n.group:has([data-align=\"block-end\"]), .group:has([data-align=\"block-start\"]) {\n flex-direction: column;\n align-items: stretch;\n}\n\n.addon {\n color: var(--ac-muted-foreground);\n cursor: text;\n font-size: var(--ac-text-sm);\n align-items: center;\n gap: var(--ac-space-2);\n -webkit-user-select: none;\n user-select: none;\n font-weight: 500;\n display: flex;\n}\n\n.addon > svg, .text > svg {\n flex-shrink: 0;\n width: 1rem;\n height: 1rem;\n}\n\n.inlineStart {\n padding-left: var(--ac-space-3);\n padding-right: var(--ac-space-2);\n order: -1;\n}\n\n.inlineEnd {\n padding-left: var(--ac-space-2);\n padding-right: var(--ac-space-3);\n order: 1;\n}\n\n.blockStart {\n padding: var(--ac-space-3) var(--ac-space-3) 0;\n order: -1;\n}\n\n.blockEnd, .blockStart {\n justify-content: flex-start;\n width: 100%;\n}\n\n.blockEnd {\n padding: 0 var(--ac-space-3) var(--ac-space-3);\n order: 1;\n}\n\n.button {\n box-shadow: none;\n flex-shrink: 0;\n}\n\n.buttonXs {\n border-radius: calc(var(--ac-radius-md) - 2px);\n font-size: var(--ac-text-xs);\n height: var(--ac-size-sm);\n padding: 0 var(--ac-space-2);\n}\n\n.buttonSm {\n border-radius: calc(var(--ac-radius-md) - 1px);\n height: var(--ac-size-default);\n padding: 0 var(--ac-space-3);\n}\n\n.buttonIconXs {\n border-radius: calc(var(--ac-radius-md) - 2px);\n height: var(--ac-size-sm);\n width: var(--ac-size-sm);\n padding: 0;\n}\n\n.buttonIconSm {\n height: var(--ac-size-default);\n width: var(--ac-size-default);\n padding: 0;\n}\n\n.text {\n color: var(--ac-muted-foreground);\n font-size: var(--ac-text-sm);\n align-items: center;\n gap: var(--ac-space-2);\n display: flex;\n}\n\n.input {\n box-shadow: none;\n background-color: #0000;\n border: 0;\n border-radius: 0;\n flex: auto;\n min-width: 0;\n}\n\n.input:focus-visible, .textarea:focus-visible {\n box-shadow: none;\n border-color: #0000;\n}\n\n.textarea {\n box-shadow: none;\n min-height: calc(var(--ac-size-default)*2);\n min-width: 0;\n padding-bottom: var(--ac-space-3);\n padding-top: var(--ac-space-3);\n resize: none;\n background-color: #0000;\n border: 0;\n border-radius: 0;\n flex: auto;\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://./../../node_modules/@rslib/core/node_modules/@rsbuild/core/compiled/css-loader/index.js??ruleSet[1].rules[1].oneOf[2].use[1]!builtin:lightningcss-loader??ruleSet[1].rules[1].oneOf[2].use[2]!/home/runner/work/arolariu.ro/arolariu.ro/node_modules/@rslib/core/node_modules/@rsbuild/core/compiled/postcss-loader/index.js??ruleSet[1].rules[1].oneOf[2].use[3]!/home/runner/work/arolariu.ro/arolariu.ro/packages/components/src/components/ui/input-group.module.css","webpack://./src/components/ui/input-group.module.css"],"names":[],"mappings":"AAAA;ECCE,sCAAsC;EACtC,iCAAiC;EACjC,kCAAkC;EAClC,kCAAkC;EAClC,uFAAuF;EACvF,mBAAmB;EACnB,WAAW;EACX,aAAa;EACb,kBAAkB;EAClB,+BAA+B;AACjC;;ADX6U;ECc3U,4BAA4B;EAC5B,oCAAoC;AACtC;;ADhBia;ECmB/Z,oBAAoB;EACpB,gBAAgB;AAClB;;ADrB0d;ECwBxd,mCAAmC;EACnC,+EAA+E;AACjF;;AD1B4mB;EC6B1mB,WAAW;AACb;;AD9BkpB;ECiChpB,sBAAsB;EACtB,oBAAoB;AACtB;;ADnCowB;ECsClwB,iCAAiC;EACjC,YAAY;EACZ,4BAA4B;EAC5B,mBAAmB;EACnB,sBAAsB;EACtB,yBAAyB;EACzB,iBAAiB;EACjB,gBAAgB;EAChB,aAAa;AACf;;AD/C26B;ECkDz6B,cAAc;EACd,WAAW;EACX,YAAY;AACd;;ADrDq+B;ECwDn+B,+BAA+B;EAC/B,gCAAgC;EAChC,SAAS;AACX;;AD3D0jC;EC8DxjC,+BAA+B;EAC/B,gCAAgC;EAChC,QAAQ;AACV;;ADjE4oC;ECoE1oC,8CAA8C;EAC9C,SAAS;AACX;;ADtE+sC;ECyE7sC,2BAA2B;EAC3B,WAAW;AACb;;AD3E2wC;EC8EzwC,8CAA8C;EAC9C,QAAQ;AACV;;ADhF20C;ECmFz0C,gBAAgB;EAChB,cAAc;AAChB;;ADrFi3C;ECwF/2C,8CAA8C;EAC9C,4BAA4B;EAC5B,yBAAyB;EACzB,4BAA4B;AAC9B;;AD5F0/C;EC+Fx/C,8CAA8C;EAC9C,8BAA8B;EAC9B,4BAA4B;AAC9B;;ADlG4mD;ECqG1mD,8CAA8C;EAC9C,yBAAyB;EACzB,wBAAwB;EACxB,UAAU;AACZ;;ADzGmuD;EC4GjuD,8BAA8B;EAC9B,6BAA6B;EAC7B,UAAU;AACZ;;AD/GszD;ECkHpzD,iCAAiC;EACjC,4BAA4B;EAC5B,mBAAmB;EACnB,sBAAsB;EACtB,aAAa;AACf;;ADvH+6D;EC0H76D,gBAAgB;EAChB,uBAAuB;EACvB,SAAS;EACT,gBAAgB;EAChB,UAAU;EACV,YAAY;AACd;;ADhIshE;ECmIphE,gBAAgB;EAChB,mBAAmB;AACrB;;ADrI4mE;ECwI1mE,gBAAgB;EAChB,0CAA0C;EAC1C,YAAY;EACZ,iCAAiC;EACjC,8BAA8B;EAC9B,YAAY;EACZ,uBAAuB;EACvB,SAAS;EACT,gBAAgB;EAChB,UAAU;AACZ","sourcesContent":[".group{align-items:center;background-color:var(--ac-background);border:1px solid var(--ac-input);border-radius:var(--ac-radius-md);box-shadow:0 1px 2px 0 rgba(0,0,0,.04);display:flex;min-height:var(--ac-size-default);position:relative;transition:border-color var(--ac-transition-fast),box-shadow var(--ac-transition-fast);width:100%}.group:focus-within{border-color:var(--ac-ring);box-shadow:0 0 0 1px var(--ac-ring)}.group:has(textarea){align-items:stretch;min-height:auto}.group:has([aria-invalid=true]){border-color:var(--ac-destructive);box-shadow:0 0 0 1px color-mix(in oklch,var(--ac-destructive),transparent 65%)}.group[data-disabled=true]{opacity:.5}.group:has([data-align=block-end]),.group:has([data-align=block-start]){align-items:stretch;flex-direction:column}.addon{align-items:center;color:var(--ac-muted-foreground);cursor:text;display:flex;font-size:var(--ac-text-sm);font-weight:500;gap:var(--ac-space-2);user-select:none}.addon>svg,.text>svg{flex-shrink:0;height:1rem;width:1rem}.inlineStart{order:-1;padding-left:var(--ac-space-3);padding-right:var(--ac-space-2)}.inlineEnd{order:1;padding-left:var(--ac-space-2);padding-right:var(--ac-space-3)}.blockStart{order:-1;padding:var(--ac-space-3) var(--ac-space-3) 0}.blockEnd,.blockStart{justify-content:flex-start;width:100%}.blockEnd{order:1;padding:0 var(--ac-space-3) var(--ac-space-3)}.button{box-shadow:none;flex-shrink:0}.buttonXs{border-radius:calc(var(--ac-radius-md) - 2px);font-size:var(--ac-text-xs);height:var(--ac-size-sm);padding:0 var(--ac-space-2)}.buttonSm{border-radius:calc(var(--ac-radius-md) - 1px);height:var(--ac-size-default);padding:0 var(--ac-space-3)}.buttonIconXs{border-radius:calc(var(--ac-radius-md) - 2px);height:var(--ac-size-sm);padding:0;width:var(--ac-size-sm)}.buttonIconSm{height:var(--ac-size-default);padding:0;width:var(--ac-size-default)}.text{align-items:center;color:var(--ac-muted-foreground);display:flex;font-size:var(--ac-text-sm);gap:var(--ac-space-2)}.input{background-color:transparent;border:0;border-radius:0;box-shadow:none;flex:1 1 auto;min-width:0}.input:focus-visible,.textarea:focus-visible{border-color:transparent;box-shadow:none}.textarea{background-color:transparent;border:0;border-radius:0;box-shadow:none;flex:1 1 auto;min-height:calc(var(--ac-size-default)*2);min-width:0;padding-bottom:var(--ac-space-3);padding-top:var(--ac-space-3);resize:none}",".group {\n background-color: var(--ac-background);\n border: 1px solid var(--ac-input);\n border-radius: var(--ac-radius-md);\n min-height: var(--ac-size-default);\n transition: border-color var(--ac-transition-fast),box-shadow var(--ac-transition-fast);\n align-items: center;\n width: 100%;\n display: flex;\n position: relative;\n box-shadow: 0 1px 2px #0000000a;\n}\n\n.group:focus-within {\n border-color: var(--ac-ring);\n box-shadow: 0 0 0 1px var(--ac-ring);\n}\n\n.group:has(textarea) {\n align-items: stretch;\n min-height: auto;\n}\n\n.group:has([aria-invalid=\"true\"]) {\n border-color: var(--ac-destructive);\n box-shadow: 0 0 0 1px color-mix(in oklch,var(--ac-destructive),transparent 65%);\n}\n\n.group[data-disabled=\"true\"] {\n opacity: .5;\n}\n\n.group:has([data-align=\"block-end\"]), .group:has([data-align=\"block-start\"]) {\n flex-direction: column;\n align-items: stretch;\n}\n\n.addon {\n color: var(--ac-muted-foreground);\n cursor: text;\n font-size: var(--ac-text-sm);\n align-items: center;\n gap: var(--ac-space-2);\n -webkit-user-select: none;\n user-select: none;\n font-weight: 500;\n display: flex;\n}\n\n.addon > svg, .text > svg {\n flex-shrink: 0;\n width: 1rem;\n height: 1rem;\n}\n\n.inlineStart {\n padding-left: var(--ac-space-3);\n padding-right: var(--ac-space-2);\n order: -1;\n}\n\n.inlineEnd {\n padding-left: var(--ac-space-2);\n padding-right: var(--ac-space-3);\n order: 1;\n}\n\n.blockStart {\n padding: var(--ac-space-3) var(--ac-space-3) 0;\n order: -1;\n}\n\n.blockEnd, .blockStart {\n justify-content: flex-start;\n width: 100%;\n}\n\n.blockEnd {\n padding: 0 var(--ac-space-3) var(--ac-space-3);\n order: 1;\n}\n\n.button {\n box-shadow: none;\n flex-shrink: 0;\n}\n\n.buttonXs {\n border-radius: calc(var(--ac-radius-md) - 2px);\n font-size: var(--ac-text-xs);\n height: var(--ac-size-sm);\n padding: 0 var(--ac-space-2);\n}\n\n.buttonSm {\n border-radius: calc(var(--ac-radius-md) - 1px);\n height: var(--ac-size-default);\n padding: 0 var(--ac-space-3);\n}\n\n.buttonIconXs {\n border-radius: calc(var(--ac-radius-md) - 2px);\n height: var(--ac-size-sm);\n width: var(--ac-size-sm);\n padding: 0;\n}\n\n.buttonIconSm {\n height: var(--ac-size-default);\n width: var(--ac-size-default);\n padding: 0;\n}\n\n.text {\n color: var(--ac-muted-foreground);\n font-size: var(--ac-text-sm);\n align-items: center;\n gap: var(--ac-space-2);\n display: flex;\n}\n\n.input {\n box-shadow: none;\n background-color: #0000;\n border: 0;\n border-radius: 0;\n flex: auto;\n min-width: 0;\n}\n\n.input:focus-visible, .textarea:focus-visible {\n box-shadow: none;\n border-color: #0000;\n}\n\n.textarea {\n box-shadow: none;\n min-height: calc(var(--ac-size-default)*2);\n min-width: 0;\n padding-bottom: var(--ac-space-3);\n padding-top: var(--ac-space-3);\n resize: none;\n background-color: #0000;\n border: 0;\n border-radius: 0;\n flex: auto;\n}\n"],"sourceRoot":""}
@@ -1,7 +1,7 @@
1
- import { OTPInput } from "input-otp";
1
+ import { OTPInput, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS, type OTPInputProps, type SlotProps } from "input-otp";
2
2
  import * as React from "react";
3
- export { REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from "input-otp";
4
- export type { OTPInputProps, SlotProps } from "input-otp";
3
+ export { REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS };
4
+ export type { OTPInputProps, SlotProps };
5
5
  /**
6
6
  * Props for the {@link InputOTP} component.
7
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"input-otp.d.ts","sourceRoot":"","sources":["../../../src/components/ui/input-otp.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAkB,MAAM,WAAW,CAAC;AAEpD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAC,iBAAiB,EAAE,kBAAkB,EAAE,4BAA4B,EAAC,MAAM,WAAW,CAAC;AAC9F,YAAY,EAAC,aAAa,EAAE,SAAS,EAAC,MAAM,WAAW,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,QAAQ,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAC9E,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,QAAA,MAAM,QAAQ,wFASb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,QAAA,MAAM,aAAa,mKAQlB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,YAAY,0FA2BjB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,iBAAiB,mKAUtB,CAAC;AAOF,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAC,CAAC"}
1
+ {"version":3,"file":"input-otp.d.ts","sourceRoot":"","sources":["../../../src/components/ui/input-otp.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAmB,iBAAiB,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAC,MAAM,WAAW,CAAC;AAE7J,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAC,iBAAiB,EAAE,kBAAkB,EAAE,4BAA4B,EAAC,CAAC;AAC7E,YAAY,EAAC,aAAa,EAAE,SAAS,EAAC,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,QAAQ,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAC9E,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,QAAA,MAAM,QAAQ,wFASb,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,QAAA,MAAM,aAAa,mKAQlB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,YAAY,0FA2BjB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,iBAAiB,mKAUtB,CAAC;AAOF,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAC,CAAC"}
@@ -2,23 +2,23 @@
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { OTPInput, OTPInputContext, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from "input-otp";
4
4
  import { Minus } from "lucide-react";
5
- import { forwardRef, useContext } from "react";
6
5
  import { cn } from "../../lib/utilities.js";
7
6
  import input_otp_module from "./input-otp.module.js";
7
+ import * as __rspack_external_react from "react";
8
8
  const DEFAULT_SLOT_PLACEHOLDER_CHARACTER = "·";
9
- const InputOTP = /*#__PURE__*/ forwardRef(({ className, containerClassName, ...props }, ref)=>/*#__PURE__*/ jsx(OTPInput, {
9
+ const InputOTP = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, containerClassName, ...props }, ref)=>/*#__PURE__*/ jsx(OTPInput, {
10
10
  ref: ref,
11
11
  containerClassName: cn(input_otp_module.container, containerClassName),
12
12
  className: cn(input_otp_module.input, className),
13
13
  ...props
14
14
  }));
15
- const InputOTPGroup = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
15
+ const InputOTPGroup = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
16
16
  ref: ref,
17
17
  className: cn(input_otp_module.group, className),
18
18
  ...props
19
19
  }));
20
- const InputOTPSlot = /*#__PURE__*/ forwardRef(({ index, className, ...props }, ref)=>{
21
- const inputOTPContext = useContext(OTPInputContext);
20
+ const InputOTPSlot = /*#__PURE__*/ __rspack_external_react.forwardRef(({ index, className, ...props }, ref)=>{
21
+ const inputOTPContext = __rspack_external_react.useContext(OTPInputContext);
22
22
  const slot = inputOTPContext.slots[index];
23
23
  if (!slot) throw new Error(`InputOTPSlot could not find slot at index ${index}.`);
24
24
  const { char, hasFakeCaret, isActive, placeholderChar } = slot;
@@ -39,7 +39,7 @@ const InputOTPSlot = /*#__PURE__*/ forwardRef(({ index, className, ...props }, r
39
39
  ]
40
40
  });
41
41
  });
42
- const InputOTPSeparator = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
42
+ const InputOTPSeparator = /*#__PURE__*/ __rspack_external_react.forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
43
43
  ref: ref,
44
44
  role: "separator",
45
45
  className: cn(input_otp_module.separator, className),