@charcoal-ui/react 6.0.0-rc.7 → 6.0.0-rc.9

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 (285) hide show
  1. package/dist/_lib/createDivComponent.cjs +20 -0
  2. package/dist/_lib/createDivComponent.cjs.map +1 -0
  3. package/dist/_lib/createDivComponent.js +19 -0
  4. package/dist/_lib/createDivComponent.js.map +1 -0
  5. package/dist/_lib/index.cjs +22 -0
  6. package/dist/_lib/index.cjs.map +1 -0
  7. package/dist/_lib/index.js +20 -0
  8. package/dist/_lib/index.js.map +1 -0
  9. package/dist/_lib/useClassNames.cjs +15 -0
  10. package/dist/_lib/useClassNames.cjs.map +1 -0
  11. package/dist/_lib/useClassNames.js +14 -0
  12. package/dist/_lib/useClassNames.js.map +1 -0
  13. package/dist/_lib/useForwardedRef.cjs +19 -0
  14. package/dist/_lib/useForwardedRef.cjs.map +1 -0
  15. package/dist/_lib/useForwardedRef.js +17 -0
  16. package/dist/_lib/useForwardedRef.js.map +1 -0
  17. package/dist/_lib/useIsomorphicLayoutEffect.cjs +13 -0
  18. package/dist/_lib/useIsomorphicLayoutEffect.cjs.map +1 -0
  19. package/dist/_lib/useIsomorphicLayoutEffect.js +12 -0
  20. package/dist/_lib/useIsomorphicLayoutEffect.js.map +1 -0
  21. package/dist/_virtual/_rolldown/runtime.cjs +30 -0
  22. package/dist/components/Button/index2.cjs +26 -0
  23. package/dist/components/Button/index2.cjs.map +1 -0
  24. package/dist/components/Button/index2.js +24 -0
  25. package/dist/components/Button/index2.js.map +1 -0
  26. package/dist/components/Carousel/CarouselItem.cjs +46 -0
  27. package/dist/components/Carousel/CarouselItem.cjs.map +1 -0
  28. package/dist/components/Carousel/CarouselItem.js +45 -0
  29. package/dist/components/Carousel/CarouselItem.js.map +1 -0
  30. package/dist/components/Carousel/carouselStore.cjs +38 -0
  31. package/dist/components/Carousel/carouselStore.cjs.map +1 -0
  32. package/dist/components/Carousel/carouselStore.js +37 -0
  33. package/dist/components/Carousel/carouselStore.js.map +1 -0
  34. package/dist/components/Carousel/index2.cjs +145 -0
  35. package/dist/components/Carousel/index2.cjs.map +1 -0
  36. package/dist/components/Carousel/index2.js +144 -0
  37. package/dist/components/Carousel/index2.js.map +1 -0
  38. package/dist/components/Carousel/intersectionObserver.cjs +46 -0
  39. package/dist/components/Carousel/intersectionObserver.cjs.map +1 -0
  40. package/dist/components/Carousel/intersectionObserver.js +45 -0
  41. package/dist/components/Carousel/intersectionObserver.js.map +1 -0
  42. package/dist/components/Carousel/resizeObserver.cjs +34 -0
  43. package/dist/components/Carousel/resizeObserver.cjs.map +1 -0
  44. package/dist/components/Carousel/resizeObserver.js +33 -0
  45. package/dist/components/Carousel/resizeObserver.js.map +1 -0
  46. package/dist/components/Carousel/store.cjs +24 -0
  47. package/dist/components/Carousel/store.cjs.map +1 -0
  48. package/dist/components/Carousel/store.js +23 -0
  49. package/dist/components/Carousel/store.js.map +1 -0
  50. package/dist/components/Carousel/useCarouselScroller.cjs +149 -0
  51. package/dist/components/Carousel/useCarouselScroller.cjs.map +1 -0
  52. package/dist/components/Carousel/useCarouselScroller.js +148 -0
  53. package/dist/components/Carousel/useCarouselScroller.js.map +1 -0
  54. package/dist/components/Checkbox/CheckboxInput/index2.cjs +29 -0
  55. package/dist/components/Checkbox/CheckboxInput/index2.cjs.map +1 -0
  56. package/dist/components/Checkbox/CheckboxInput/index2.js +28 -0
  57. package/dist/components/Checkbox/CheckboxInput/index2.js.map +1 -0
  58. package/dist/components/Checkbox/CheckboxWithLabel.cjs +23 -0
  59. package/dist/components/Checkbox/CheckboxWithLabel.cjs.map +1 -0
  60. package/dist/components/Checkbox/CheckboxWithLabel.js +21 -0
  61. package/dist/components/Checkbox/CheckboxWithLabel.js.map +1 -0
  62. package/dist/components/Checkbox/index2.cjs +34 -0
  63. package/dist/components/Checkbox/index2.cjs.map +1 -0
  64. package/dist/components/Checkbox/index2.js +33 -0
  65. package/dist/components/Checkbox/index2.js.map +1 -0
  66. package/dist/components/Clickable/index2.cjs +21 -0
  67. package/dist/components/Clickable/index2.cjs.map +1 -0
  68. package/dist/components/Clickable/index2.js +19 -0
  69. package/dist/components/Clickable/index2.js.map +1 -0
  70. package/dist/components/DropdownSelector/DropdownMenuItem/index2.cjs +44 -0
  71. package/dist/components/DropdownSelector/DropdownMenuItem/index2.cjs.map +1 -0
  72. package/dist/components/DropdownSelector/DropdownMenuItem/index2.js +43 -0
  73. package/dist/components/DropdownSelector/DropdownMenuItem/index2.js.map +1 -0
  74. package/dist/components/DropdownSelector/DropdownPopover.cjs +41 -0
  75. package/dist/components/DropdownSelector/DropdownPopover.cjs.map +1 -0
  76. package/dist/components/DropdownSelector/DropdownPopover.js +40 -0
  77. package/dist/components/DropdownSelector/DropdownPopover.js.map +1 -0
  78. package/dist/components/DropdownSelector/ListItem/index2.cjs +19 -0
  79. package/dist/components/DropdownSelector/ListItem/index2.cjs.map +1 -0
  80. package/dist/components/DropdownSelector/ListItem/index2.js +18 -0
  81. package/dist/components/DropdownSelector/ListItem/index2.js.map +1 -0
  82. package/dist/components/DropdownSelector/MenuItem/index.cjs +30 -0
  83. package/dist/components/DropdownSelector/MenuItem/index.cjs.map +1 -0
  84. package/dist/components/DropdownSelector/MenuItem/index.js +29 -0
  85. package/dist/components/DropdownSelector/MenuItem/index.js.map +1 -0
  86. package/dist/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.cjs +30 -0
  87. package/dist/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.cjs.map +1 -0
  88. package/dist/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.js +29 -0
  89. package/dist/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.js.map +1 -0
  90. package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.cjs +53 -0
  91. package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.cjs.map +1 -0
  92. package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.js +52 -0
  93. package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.js.map +1 -0
  94. package/dist/components/DropdownSelector/MenuItemGroup/index2.cjs +20 -0
  95. package/dist/components/DropdownSelector/MenuItemGroup/index2.cjs.map +1 -0
  96. package/dist/components/DropdownSelector/MenuItemGroup/index2.js +19 -0
  97. package/dist/components/DropdownSelector/MenuItemGroup/index2.js.map +1 -0
  98. package/dist/components/DropdownSelector/MenuList/MenuListContext.cjs +15 -0
  99. package/dist/components/DropdownSelector/MenuList/MenuListContext.cjs.map +1 -0
  100. package/dist/components/DropdownSelector/MenuList/MenuListContext.js +14 -0
  101. package/dist/components/DropdownSelector/MenuList/MenuListContext.js.map +1 -0
  102. package/dist/components/DropdownSelector/MenuList/index2.cjs +32 -0
  103. package/dist/components/DropdownSelector/MenuList/index2.cjs.map +1 -0
  104. package/dist/components/DropdownSelector/MenuList/index2.js +31 -0
  105. package/dist/components/DropdownSelector/MenuList/index2.js.map +1 -0
  106. package/dist/components/DropdownSelector/MenuList/internals/getValuesRecursive.cjs +34 -0
  107. package/dist/components/DropdownSelector/MenuList/internals/getValuesRecursive.cjs.map +1 -0
  108. package/dist/components/DropdownSelector/MenuList/internals/getValuesRecursive.js +32 -0
  109. package/dist/components/DropdownSelector/MenuList/internals/getValuesRecursive.js.map +1 -0
  110. package/dist/components/DropdownSelector/Popover/index2.cjs +71 -0
  111. package/dist/components/DropdownSelector/Popover/index2.cjs.map +1 -0
  112. package/dist/components/DropdownSelector/Popover/index2.js +70 -0
  113. package/dist/components/DropdownSelector/Popover/index2.js.map +1 -0
  114. package/dist/components/DropdownSelector/Popover/usePreventScroll.cjs +27 -0
  115. package/dist/components/DropdownSelector/Popover/usePreventScroll.cjs.map +1 -0
  116. package/dist/components/DropdownSelector/Popover/usePreventScroll.js +26 -0
  117. package/dist/components/DropdownSelector/Popover/usePreventScroll.js.map +1 -0
  118. package/dist/components/DropdownSelector/index2.cjs +113 -0
  119. package/dist/components/DropdownSelector/index2.cjs.map +1 -0
  120. package/dist/components/DropdownSelector/index2.js +111 -0
  121. package/dist/components/DropdownSelector/index2.js.map +1 -0
  122. package/dist/components/DropdownSelector/utils/findPreviewRecursive.cjs +34 -0
  123. package/dist/components/DropdownSelector/utils/findPreviewRecursive.cjs.map +1 -0
  124. package/dist/components/DropdownSelector/utils/findPreviewRecursive.js +32 -0
  125. package/dist/components/DropdownSelector/utils/findPreviewRecursive.js.map +1 -0
  126. package/dist/components/FieldLabel/index2.cjs +35 -0
  127. package/dist/components/FieldLabel/index2.cjs.map +1 -0
  128. package/dist/components/FieldLabel/index2.js +33 -0
  129. package/dist/components/FieldLabel/index2.js.map +1 -0
  130. package/dist/components/HintText/index2.cjs +25 -0
  131. package/dist/components/HintText/index2.cjs.map +1 -0
  132. package/dist/components/HintText/index2.js +24 -0
  133. package/dist/components/HintText/index2.js.map +1 -0
  134. package/dist/components/Icon/index.cjs +39 -0
  135. package/dist/components/Icon/index.cjs.map +1 -0
  136. package/dist/components/Icon/index.js +37 -0
  137. package/dist/components/Icon/index.js.map +1 -0
  138. package/dist/components/IconButton/index2.cjs +46 -0
  139. package/dist/components/IconButton/index2.cjs.map +1 -0
  140. package/dist/components/IconButton/index2.js +44 -0
  141. package/dist/components/IconButton/index2.js.map +1 -0
  142. package/dist/components/LoadingSpinner/index2.cjs +43 -0
  143. package/dist/components/LoadingSpinner/index2.cjs.map +1 -0
  144. package/dist/components/LoadingSpinner/index2.js +41 -0
  145. package/dist/components/LoadingSpinner/index2.js.map +1 -0
  146. package/dist/components/Modal/Dialog/index2.cjs +30 -0
  147. package/dist/components/Modal/Dialog/index2.cjs.map +1 -0
  148. package/dist/components/Modal/Dialog/index2.js +28 -0
  149. package/dist/components/Modal/Dialog/index2.js.map +1 -0
  150. package/dist/components/Modal/ModalBackgroundContext.cjs +14 -0
  151. package/dist/components/Modal/ModalBackgroundContext.cjs.map +1 -0
  152. package/dist/components/Modal/ModalBackgroundContext.js +12 -0
  153. package/dist/components/Modal/ModalBackgroundContext.js.map +1 -0
  154. package/dist/components/Modal/ModalPlumbing2.cjs +30 -0
  155. package/dist/components/Modal/ModalPlumbing2.cjs.map +1 -0
  156. package/dist/components/Modal/ModalPlumbing2.js +26 -0
  157. package/dist/components/Modal/ModalPlumbing2.js.map +1 -0
  158. package/dist/components/Modal/index2.cjs +121 -0
  159. package/dist/components/Modal/index2.cjs.map +1 -0
  160. package/dist/components/Modal/index2.js +118 -0
  161. package/dist/components/Modal/index2.js.map +1 -0
  162. package/dist/components/Modal/useCustomModalOverlay.cjs +48 -0
  163. package/dist/components/Modal/useCustomModalOverlay.cjs.map +1 -0
  164. package/dist/components/Modal/useCustomModalOverlay.js +45 -0
  165. package/dist/components/Modal/useCustomModalOverlay.js.map +1 -0
  166. package/dist/components/Modal/useTransitionPresence.cjs +57 -0
  167. package/dist/components/Modal/useTransitionPresence.cjs.map +1 -0
  168. package/dist/components/Modal/useTransitionPresence.js +56 -0
  169. package/dist/components/Modal/useTransitionPresence.js.map +1 -0
  170. package/dist/components/MultiSelect/context.cjs +19 -0
  171. package/dist/components/MultiSelect/context.cjs.map +1 -0
  172. package/dist/components/MultiSelect/context.js +18 -0
  173. package/dist/components/MultiSelect/context.js.map +1 -0
  174. package/dist/components/MultiSelect/index2.cjs +97 -0
  175. package/dist/components/MultiSelect/index2.cjs.map +1 -0
  176. package/dist/components/MultiSelect/index2.js +93 -0
  177. package/dist/components/MultiSelect/index2.js.map +1 -0
  178. package/dist/components/Pagination/PaginationContext.cjs +16 -0
  179. package/dist/components/Pagination/PaginationContext.cjs.map +1 -0
  180. package/dist/components/Pagination/PaginationContext.js +14 -0
  181. package/dist/components/Pagination/PaginationContext.js.map +1 -0
  182. package/dist/components/Pagination/helper.cjs +63 -0
  183. package/dist/components/Pagination/helper.cjs.map +1 -0
  184. package/dist/components/Pagination/helper.js +61 -0
  185. package/dist/components/Pagination/helper.js.map +1 -0
  186. package/dist/components/Pagination/index2.cjs +301 -0
  187. package/dist/components/Pagination/index2.cjs.map +1 -0
  188. package/dist/components/Pagination/index2.js +288 -0
  189. package/dist/components/Pagination/index2.js.map +1 -0
  190. package/dist/components/Radio/RadioGroup/index2.cjs +49 -0
  191. package/dist/components/Radio/RadioGroup/index2.cjs.map +1 -0
  192. package/dist/components/Radio/RadioGroup/index2.js +47 -0
  193. package/dist/components/Radio/RadioGroup/index2.js.map +1 -0
  194. package/dist/components/Radio/RadioGroupContext.cjs +20 -0
  195. package/dist/components/Radio/RadioGroupContext.cjs.map +1 -0
  196. package/dist/components/Radio/RadioGroupContext.js +18 -0
  197. package/dist/components/Radio/RadioGroupContext.js.map +1 -0
  198. package/dist/components/Radio/RadioInput/index2.cjs +27 -0
  199. package/dist/components/Radio/RadioInput/index2.cjs.map +1 -0
  200. package/dist/components/Radio/RadioInput/index2.js +26 -0
  201. package/dist/components/Radio/RadioInput/index2.js.map +1 -0
  202. package/dist/components/Radio/index2.cjs +42 -0
  203. package/dist/components/Radio/index2.cjs.map +1 -0
  204. package/dist/components/Radio/index2.js +39 -0
  205. package/dist/components/Radio/index2.js.map +1 -0
  206. package/dist/components/SegmentedControl/RadioGroupContext.cjs +24 -0
  207. package/dist/components/SegmentedControl/RadioGroupContext.cjs.map +1 -0
  208. package/dist/components/SegmentedControl/RadioGroupContext.js +21 -0
  209. package/dist/components/SegmentedControl/RadioGroupContext.js.map +1 -0
  210. package/dist/components/SegmentedControl/index2.cjs +72 -0
  211. package/dist/components/SegmentedControl/index2.cjs.map +1 -0
  212. package/dist/components/SegmentedControl/index2.js +70 -0
  213. package/dist/components/SegmentedControl/index2.js.map +1 -0
  214. package/dist/components/Switch/SwitchInput/index2.cjs +25 -0
  215. package/dist/components/Switch/SwitchInput/index2.cjs.map +1 -0
  216. package/dist/components/Switch/SwitchInput/index2.js +24 -0
  217. package/dist/components/Switch/SwitchInput/index2.js.map +1 -0
  218. package/dist/components/Switch/SwitchWithLabel.cjs +23 -0
  219. package/dist/components/Switch/SwitchWithLabel.cjs.map +1 -0
  220. package/dist/components/Switch/SwitchWithLabel.js +21 -0
  221. package/dist/components/Switch/SwitchWithLabel.js.map +1 -0
  222. package/dist/components/Switch/index2.cjs +37 -0
  223. package/dist/components/Switch/index2.cjs.map +1 -0
  224. package/dist/components/Switch/index2.js +36 -0
  225. package/dist/components/Switch/index2.js.map +1 -0
  226. package/dist/components/TagItem/index2.cjs +57 -0
  227. package/dist/components/TagItem/index2.cjs.map +1 -0
  228. package/dist/components/TagItem/index2.js +55 -0
  229. package/dist/components/TagItem/index2.js.map +1 -0
  230. package/dist/components/TextArea/index2.cjs +134 -0
  231. package/dist/components/TextArea/index2.cjs.map +1 -0
  232. package/dist/components/TextArea/index2.js +133 -0
  233. package/dist/components/TextArea/index2.js.map +1 -0
  234. package/dist/components/TextEllipsis/helper.cjs +31 -0
  235. package/dist/components/TextEllipsis/helper.cjs.map +1 -0
  236. package/dist/components/TextEllipsis/helper.js +30 -0
  237. package/dist/components/TextEllipsis/helper.js.map +1 -0
  238. package/dist/components/TextEllipsis/index2.cjs +119 -0
  239. package/dist/components/TextEllipsis/index2.cjs.map +1 -0
  240. package/dist/components/TextEllipsis/index2.js +114 -0
  241. package/dist/components/TextEllipsis/index2.js.map +1 -0
  242. package/dist/components/TextField/AssistiveText/index2.cjs +10 -0
  243. package/dist/components/TextField/AssistiveText/index2.cjs.map +1 -0
  244. package/dist/components/TextField/AssistiveText/index2.js +10 -0
  245. package/dist/components/TextField/AssistiveText/index2.js.map +1 -0
  246. package/dist/components/TextField/index2.cjs +101 -0
  247. package/dist/components/TextField/index2.cjs.map +1 -0
  248. package/dist/components/TextField/index2.js +100 -0
  249. package/dist/components/TextField/index2.js.map +1 -0
  250. package/dist/components/TextField/useFocusWithClick.cjs +23 -0
  251. package/dist/components/TextField/useFocusWithClick.cjs.map +1 -0
  252. package/dist/components/TextField/useFocusWithClick.js +22 -0
  253. package/dist/components/TextField/useFocusWithClick.js.map +1 -0
  254. package/dist/core/CharcoalProvider.cjs +16 -0
  255. package/dist/core/CharcoalProvider.cjs.map +1 -0
  256. package/dist/core/CharcoalProvider.js +14 -0
  257. package/dist/core/CharcoalProvider.js.map +1 -0
  258. package/dist/core/OverlayProvider.js +4 -0
  259. package/dist/core/SSRProvider.cjs +15 -0
  260. package/dist/core/SSRProvider.cjs.map +1 -0
  261. package/dist/core/SSRProvider.js +14 -0
  262. package/dist/core/SSRProvider.js.map +1 -0
  263. package/dist/core/SetThemeScript.cjs +45 -0
  264. package/dist/core/SetThemeScript.cjs.map +1 -0
  265. package/dist/core/SetThemeScript.js +43 -0
  266. package/dist/core/SetThemeScript.js.map +1 -0
  267. package/dist/core/themeHelper.cjs +154 -0
  268. package/dist/core/themeHelper.cjs.map +1 -0
  269. package/dist/core/themeHelper.js +143 -0
  270. package/dist/core/themeHelper.js.map +1 -0
  271. package/dist/index.cjs +81 -12
  272. package/dist/index.css +1536 -1530
  273. package/dist/index.js +31 -12
  274. package/dist/layered.css +1508 -1502
  275. package/dist/layered.css.map +1 -1
  276. package/package.json +5 -5
  277. package/src/__tests__/css-shorthand-safety.test.ts +150 -0
  278. package/src/components/Button/__snapshots__/index.css.snap +8 -3
  279. package/src/components/Button/index.css +8 -3
  280. package/src/components/LoadingSpinner/__snapshots__/index.css.snap +1 -2
  281. package/src/components/LoadingSpinner/index.css +1 -2
  282. package/src/components/Pagination/__snapshots__/index.css.snap +3 -1
  283. package/src/components/Pagination/index.css +3 -1
  284. package/dist/index.cjs.map +0 -1
  285. package/dist/index.js.map +0 -1
@@ -0,0 +1,149 @@
1
+ "use client";
2
+ const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
3
+ const require_useIsomorphicLayoutEffect = require('../../_lib/useIsomorphicLayoutEffect.cjs');
4
+ let react = require("react");
5
+
6
+ //#region src/components/Carousel/useCarouselScroller.ts
7
+ const INTERACTION_EVENTS = [
8
+ "pointerdown",
9
+ "wheel",
10
+ "touchstart"
11
+ ];
12
+ function useCarouselScroller(scrollerRef, store, itemCount, options) {
13
+ const { align, offset, scrollStep, onScroll, onResize, onScrollStateChange } = options;
14
+ const initialScrollActive = (0, react.useRef)(true);
15
+ const callbacksRef = (0, react.useRef)({
16
+ onScroll,
17
+ onResize,
18
+ onScrollStateChange
19
+ });
20
+ (0, react.useEffect)(() => {
21
+ callbacksRef.current = {
22
+ onScroll,
23
+ onResize,
24
+ onScrollStateChange
25
+ };
26
+ });
27
+ const prevCanScroll = (0, react.useRef)(null);
28
+ const updateScrollState = (0, react.useCallback)(() => {
29
+ const el = scrollerRef.current;
30
+ if (!el) return;
31
+ const { scrollLeft, scrollWidth, clientWidth } = el;
32
+ const canPrev = scrollLeft > 1;
33
+ const canNext = scrollLeft < scrollWidth - clientWidth - 1;
34
+ store.dispatch({
35
+ type: "setScrollState",
36
+ canPrev,
37
+ canNext
38
+ });
39
+ const canScroll = canPrev || canNext;
40
+ if (prevCanScroll.current !== canScroll) {
41
+ prevCanScroll.current = canScroll;
42
+ callbacksRef.current.onScrollStateChange?.(canScroll);
43
+ }
44
+ }, [scrollerRef, store]);
45
+ const applyInitialScroll = (0, react.useCallback)(() => {
46
+ const el = scrollerRef.current;
47
+ if (!el || !initialScrollActive.current) return;
48
+ const maxScroll = el.scrollWidth - el.clientWidth;
49
+ let left = offset;
50
+ switch (align) {
51
+ case "center":
52
+ left = maxScroll / 2 + offset;
53
+ break;
54
+ case "right":
55
+ left = maxScroll + offset;
56
+ break;
57
+ }
58
+ el.scrollTo({
59
+ left: Math.max(0, Math.min(left, maxScroll)),
60
+ behavior: "instant"
61
+ });
62
+ }, [
63
+ scrollerRef,
64
+ align,
65
+ offset
66
+ ]);
67
+ require_useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
68
+ const el = scrollerRef.current;
69
+ if (!el) return;
70
+ updateScrollState();
71
+ const handleScroll = () => {
72
+ updateScrollState();
73
+ callbacksRef.current.onScroll?.(el.scrollLeft);
74
+ };
75
+ el.addEventListener("scroll", handleScroll, { passive: true });
76
+ return () => el.removeEventListener("scroll", handleScroll);
77
+ }, [
78
+ scrollerRef,
79
+ updateScrollState,
80
+ itemCount
81
+ ]);
82
+ require_useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
83
+ const el = scrollerRef.current;
84
+ if (!el || typeof ResizeObserver === "undefined") return;
85
+ const ro = new ResizeObserver(() => {
86
+ applyInitialScroll();
87
+ updateScrollState();
88
+ callbacksRef.current.onResize?.(el.clientWidth);
89
+ });
90
+ ro.observe(el);
91
+ return () => ro.disconnect();
92
+ }, [
93
+ scrollerRef,
94
+ applyInitialScroll,
95
+ updateScrollState
96
+ ]);
97
+ require_useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
98
+ initialScrollActive.current = true;
99
+ applyInitialScroll();
100
+ updateScrollState();
101
+ const el = scrollerRef.current;
102
+ if (!el) return;
103
+ const stop = () => {
104
+ initialScrollActive.current = false;
105
+ };
106
+ for (const type of INTERACTION_EVENTS) el.addEventListener(type, stop, true);
107
+ return () => {
108
+ for (const type of INTERACTION_EVENTS) el.removeEventListener(type, stop, true);
109
+ };
110
+ }, [
111
+ scrollerRef,
112
+ applyInitialScroll,
113
+ updateScrollState,
114
+ itemCount
115
+ ]);
116
+ const onItemResize = (0, react.useCallback)(() => {
117
+ applyInitialScroll();
118
+ updateScrollState();
119
+ }, [applyInitialScroll, updateScrollState]);
120
+ const resetScroll = (0, react.useCallback)(() => {
121
+ initialScrollActive.current = true;
122
+ applyInitialScroll();
123
+ updateScrollState();
124
+ }, [applyInitialScroll, updateScrollState]);
125
+ return {
126
+ scrollByStep: (0, react.useCallback)((direction) => {
127
+ const el = scrollerRef.current;
128
+ if (!el) return;
129
+ initialScrollActive.current = false;
130
+ const { clientWidth, scrollWidth, scrollLeft } = el;
131
+ const delta = typeof scrollStep === "function" ? scrollStep({
132
+ clientWidth,
133
+ scrollWidth,
134
+ scrollLeft,
135
+ direction
136
+ }) : clientWidth * scrollStep;
137
+ el.scrollBy({
138
+ left: direction === "next" ? delta : -delta,
139
+ behavior: "smooth"
140
+ });
141
+ }, [scrollerRef, scrollStep]),
142
+ onItemResize,
143
+ resetScroll
144
+ };
145
+ }
146
+
147
+ //#endregion
148
+ exports.useCarouselScroller = useCarouselScroller;
149
+ //# sourceMappingURL=useCarouselScroller.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCarouselScroller.cjs","names":["useCallback","useEffect","useRef","RefObject","useIsomorphicLayoutEffect","CarouselStore","ScrollAlign","ScrollStep","INTERACTION_EVENTS","const","CarouselScrollerOptions","Readonly","align","offset","scrollStep","onScroll","left","onResize","width","onScrollStateChange","canScroll","CarouselScrollerResult","scrollByStep","direction","onItemResize","resetScroll","useCarouselScroller","scrollerRef","HTMLElement","store","itemCount","options","initialScrollActive","callbacksRef","current","prevCanScroll","updateScrollState","el","scrollLeft","scrollWidth","clientWidth","canPrev","canNext","dispatch","type","applyInitialScroll","maxScroll","scrollTo","Math","max","min","behavior","handleScroll","addEventListener","passive","removeEventListener","ResizeObserver","ro","observe","disconnect","stop","delta","scrollBy"],"sources":["../../../src/components/Carousel/useCarouselScroller.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, type RefObject } from 'react'\nimport { useIsomorphicLayoutEffect } from '../../_lib/useIsomorphicLayoutEffect'\nimport type { CarouselStore } from './carouselStore'\nimport type { ScrollAlign, ScrollStep } from './index'\n\nconst INTERACTION_EVENTS = ['pointerdown', 'wheel', 'touchstart'] as const\n\nexport type CarouselScrollerOptions = Readonly<{\n align: ScrollAlign\n offset: number\n scrollStep: ScrollStep\n onScroll?: (left: number) => void\n onResize?: (width: number) => void\n onScrollStateChange?: (canScroll: boolean) => void\n}>\n\nexport type CarouselScrollerResult = Readonly<{\n scrollByStep: (direction: 'prev' | 'next') => void\n onItemResize: () => void\n resetScroll: () => void\n}>\n\nexport function useCarouselScroller(\n scrollerRef: RefObject<HTMLElement | null>,\n store: CarouselStore,\n itemCount: number,\n options: CarouselScrollerOptions,\n): CarouselScrollerResult {\n const { align, offset, scrollStep, onScroll, onResize, onScrollStateChange } =\n options\n const initialScrollActive = useRef(true)\n\n // コールバックは最新参照を ref に保持し、リスナーの貼り直しを避ける。\n const callbacksRef = useRef({ onScroll, onResize, onScrollStateChange })\n useEffect(() => {\n callbacksRef.current = { onScroll, onResize, onScrollStateChange }\n })\n\n // onScrollStateChange は canScroll(=canPrev||canNext) が変化した時だけ発火する。\n const prevCanScroll = useRef<boolean | null>(null)\n\n const updateScrollState = useCallback(() => {\n const el = scrollerRef.current\n if (!el) return\n const { scrollLeft, scrollWidth, clientWidth } = el\n const canPrev = scrollLeft > 1\n const canNext = scrollLeft < scrollWidth - clientWidth - 1\n store.dispatch({ type: 'setScrollState', canPrev, canNext })\n const canScroll = canPrev || canNext\n if (prevCanScroll.current !== canScroll) {\n prevCanScroll.current = canScroll\n callbacksRef.current.onScrollStateChange?.(canScroll)\n }\n }, [scrollerRef, store])\n\n const applyInitialScroll = useCallback(() => {\n const el = scrollerRef.current\n if (!el || !initialScrollActive.current) return\n const maxScroll = el.scrollWidth - el.clientWidth\n let left = offset\n switch (align) {\n case 'center':\n left = maxScroll / 2 + offset\n break\n case 'right':\n left = maxScroll + offset\n break\n }\n // scrollLeft 代入は CSS の scroll-behavior: smooth の対象になり\n // 初期位置決めがアニメーションしてしまうため、instant で確定させる。\n el.scrollTo({\n left: Math.max(0, Math.min(left, maxScroll)),\n behavior: 'instant',\n })\n }, [scrollerRef, align, offset])\n\n // canPrev/canNext: scroll で更新。onScroll もここから発火。itemCount 変化で貼り直し。\n useIsomorphicLayoutEffect(() => {\n const el = scrollerRef.current\n if (!el) return\n updateScrollState()\n const handleScroll = () => {\n updateScrollState()\n callbacksRef.current.onScroll?.(el.scrollLeft)\n }\n el.addEventListener('scroll', handleScroll, { passive: true })\n return () => el.removeEventListener('scroll', handleScroll)\n }, [scrollerRef, updateScrollState, itemCount])\n\n // scroller 幅の変化で onResize(clientWidth) を通知し、状態と初期位置を再計算する。\n useIsomorphicLayoutEffect(() => {\n const el = scrollerRef.current\n if (!el || typeof ResizeObserver === 'undefined') return\n const ro = new ResizeObserver(() => {\n applyInitialScroll()\n updateScrollState()\n callbacksRef.current.onResize?.(el.clientWidth)\n })\n ro.observe(el)\n return () => ro.disconnect()\n }, [scrollerRef, applyInitialScroll, updateScrollState])\n\n // 初期スクロール適用 + ユーザー操作で打ち切り。\n useIsomorphicLayoutEffect(() => {\n initialScrollActive.current = true\n applyInitialScroll()\n // 初期位置適用後の scrollLeft で canPrev/canNext を確定させる\n // (center/right 初期化で scroll イベント待ちにならないように)。\n updateScrollState()\n const el = scrollerRef.current\n if (!el) return\n const stop = () => {\n initialScrollActive.current = false\n }\n for (const type of INTERACTION_EVENTS) el.addEventListener(type, stop, true)\n return () => {\n for (const type of INTERACTION_EVENTS)\n el.removeEventListener(type, stop, true)\n }\n }, [scrollerRef, applyInitialScroll, updateScrollState, itemCount])\n\n const onItemResize = useCallback(() => {\n applyInitialScroll()\n updateScrollState()\n }, [applyInitialScroll, updateScrollState])\n\n // defaultScroll の初期位置へ戻す(命令的 API: CarouselHandlerRef.resetScroll)。\n const resetScroll = useCallback(() => {\n initialScrollActive.current = true\n applyInitialScroll()\n updateScrollState()\n }, [applyInitialScroll, updateScrollState])\n\n const scrollByStep = useCallback(\n (direction: 'prev' | 'next') => {\n const el = scrollerRef.current\n if (!el) return\n initialScrollActive.current = false\n const { clientWidth, scrollWidth, scrollLeft } = el\n // 進む量(px)の絶対値。符号は direction で付ける。\n const delta =\n typeof scrollStep === 'function'\n ? scrollStep({ clientWidth, scrollWidth, scrollLeft, direction })\n : clientWidth * scrollStep\n el.scrollBy({\n left: direction === 'next' ? delta : -delta,\n behavior: 'smooth',\n })\n },\n [scrollerRef, scrollStep],\n )\n\n return { scrollByStep, onItemResize, resetScroll }\n}\n"],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ "use client";
2
+ import { useIsomorphicLayoutEffect } from "../../_lib/useIsomorphicLayoutEffect.js";
3
+ import { useCallback, useEffect, useRef } from "react";
4
+
5
+ //#region src/components/Carousel/useCarouselScroller.ts
6
+ const INTERACTION_EVENTS = [
7
+ "pointerdown",
8
+ "wheel",
9
+ "touchstart"
10
+ ];
11
+ function useCarouselScroller(scrollerRef, store, itemCount, options) {
12
+ const { align, offset, scrollStep, onScroll, onResize, onScrollStateChange } = options;
13
+ const initialScrollActive = useRef(true);
14
+ const callbacksRef = useRef({
15
+ onScroll,
16
+ onResize,
17
+ onScrollStateChange
18
+ });
19
+ useEffect(() => {
20
+ callbacksRef.current = {
21
+ onScroll,
22
+ onResize,
23
+ onScrollStateChange
24
+ };
25
+ });
26
+ const prevCanScroll = useRef(null);
27
+ const updateScrollState = useCallback(() => {
28
+ const el = scrollerRef.current;
29
+ if (!el) return;
30
+ const { scrollLeft, scrollWidth, clientWidth } = el;
31
+ const canPrev = scrollLeft > 1;
32
+ const canNext = scrollLeft < scrollWidth - clientWidth - 1;
33
+ store.dispatch({
34
+ type: "setScrollState",
35
+ canPrev,
36
+ canNext
37
+ });
38
+ const canScroll = canPrev || canNext;
39
+ if (prevCanScroll.current !== canScroll) {
40
+ prevCanScroll.current = canScroll;
41
+ callbacksRef.current.onScrollStateChange?.(canScroll);
42
+ }
43
+ }, [scrollerRef, store]);
44
+ const applyInitialScroll = useCallback(() => {
45
+ const el = scrollerRef.current;
46
+ if (!el || !initialScrollActive.current) return;
47
+ const maxScroll = el.scrollWidth - el.clientWidth;
48
+ let left = offset;
49
+ switch (align) {
50
+ case "center":
51
+ left = maxScroll / 2 + offset;
52
+ break;
53
+ case "right":
54
+ left = maxScroll + offset;
55
+ break;
56
+ }
57
+ el.scrollTo({
58
+ left: Math.max(0, Math.min(left, maxScroll)),
59
+ behavior: "instant"
60
+ });
61
+ }, [
62
+ scrollerRef,
63
+ align,
64
+ offset
65
+ ]);
66
+ useIsomorphicLayoutEffect(() => {
67
+ const el = scrollerRef.current;
68
+ if (!el) return;
69
+ updateScrollState();
70
+ const handleScroll = () => {
71
+ updateScrollState();
72
+ callbacksRef.current.onScroll?.(el.scrollLeft);
73
+ };
74
+ el.addEventListener("scroll", handleScroll, { passive: true });
75
+ return () => el.removeEventListener("scroll", handleScroll);
76
+ }, [
77
+ scrollerRef,
78
+ updateScrollState,
79
+ itemCount
80
+ ]);
81
+ useIsomorphicLayoutEffect(() => {
82
+ const el = scrollerRef.current;
83
+ if (!el || typeof ResizeObserver === "undefined") return;
84
+ const ro = new ResizeObserver(() => {
85
+ applyInitialScroll();
86
+ updateScrollState();
87
+ callbacksRef.current.onResize?.(el.clientWidth);
88
+ });
89
+ ro.observe(el);
90
+ return () => ro.disconnect();
91
+ }, [
92
+ scrollerRef,
93
+ applyInitialScroll,
94
+ updateScrollState
95
+ ]);
96
+ useIsomorphicLayoutEffect(() => {
97
+ initialScrollActive.current = true;
98
+ applyInitialScroll();
99
+ updateScrollState();
100
+ const el = scrollerRef.current;
101
+ if (!el) return;
102
+ const stop = () => {
103
+ initialScrollActive.current = false;
104
+ };
105
+ for (const type of INTERACTION_EVENTS) el.addEventListener(type, stop, true);
106
+ return () => {
107
+ for (const type of INTERACTION_EVENTS) el.removeEventListener(type, stop, true);
108
+ };
109
+ }, [
110
+ scrollerRef,
111
+ applyInitialScroll,
112
+ updateScrollState,
113
+ itemCount
114
+ ]);
115
+ const onItemResize = useCallback(() => {
116
+ applyInitialScroll();
117
+ updateScrollState();
118
+ }, [applyInitialScroll, updateScrollState]);
119
+ const resetScroll = useCallback(() => {
120
+ initialScrollActive.current = true;
121
+ applyInitialScroll();
122
+ updateScrollState();
123
+ }, [applyInitialScroll, updateScrollState]);
124
+ return {
125
+ scrollByStep: useCallback((direction) => {
126
+ const el = scrollerRef.current;
127
+ if (!el) return;
128
+ initialScrollActive.current = false;
129
+ const { clientWidth, scrollWidth, scrollLeft } = el;
130
+ const delta = typeof scrollStep === "function" ? scrollStep({
131
+ clientWidth,
132
+ scrollWidth,
133
+ scrollLeft,
134
+ direction
135
+ }) : clientWidth * scrollStep;
136
+ el.scrollBy({
137
+ left: direction === "next" ? delta : -delta,
138
+ behavior: "smooth"
139
+ });
140
+ }, [scrollerRef, scrollStep]),
141
+ onItemResize,
142
+ resetScroll
143
+ };
144
+ }
145
+
146
+ //#endregion
147
+ export { useCarouselScroller };
148
+ //# sourceMappingURL=useCarouselScroller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCarouselScroller.js","names":["useCallback","useEffect","useRef","RefObject","useIsomorphicLayoutEffect","CarouselStore","ScrollAlign","ScrollStep","INTERACTION_EVENTS","const","CarouselScrollerOptions","Readonly","align","offset","scrollStep","onScroll","left","onResize","width","onScrollStateChange","canScroll","CarouselScrollerResult","scrollByStep","direction","onItemResize","resetScroll","useCarouselScroller","scrollerRef","HTMLElement","store","itemCount","options","initialScrollActive","callbacksRef","current","prevCanScroll","updateScrollState","el","scrollLeft","scrollWidth","clientWidth","canPrev","canNext","dispatch","type","applyInitialScroll","maxScroll","scrollTo","Math","max","min","behavior","handleScroll","addEventListener","passive","removeEventListener","ResizeObserver","ro","observe","disconnect","stop","delta","scrollBy"],"sources":["../../../src/components/Carousel/useCarouselScroller.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, type RefObject } from 'react'\nimport { useIsomorphicLayoutEffect } from '../../_lib/useIsomorphicLayoutEffect'\nimport type { CarouselStore } from './carouselStore'\nimport type { ScrollAlign, ScrollStep } from './index'\n\nconst INTERACTION_EVENTS = ['pointerdown', 'wheel', 'touchstart'] as const\n\nexport type CarouselScrollerOptions = Readonly<{\n align: ScrollAlign\n offset: number\n scrollStep: ScrollStep\n onScroll?: (left: number) => void\n onResize?: (width: number) => void\n onScrollStateChange?: (canScroll: boolean) => void\n}>\n\nexport type CarouselScrollerResult = Readonly<{\n scrollByStep: (direction: 'prev' | 'next') => void\n onItemResize: () => void\n resetScroll: () => void\n}>\n\nexport function useCarouselScroller(\n scrollerRef: RefObject<HTMLElement | null>,\n store: CarouselStore,\n itemCount: number,\n options: CarouselScrollerOptions,\n): CarouselScrollerResult {\n const { align, offset, scrollStep, onScroll, onResize, onScrollStateChange } =\n options\n const initialScrollActive = useRef(true)\n\n // コールバックは最新参照を ref に保持し、リスナーの貼り直しを避ける。\n const callbacksRef = useRef({ onScroll, onResize, onScrollStateChange })\n useEffect(() => {\n callbacksRef.current = { onScroll, onResize, onScrollStateChange }\n })\n\n // onScrollStateChange は canScroll(=canPrev||canNext) が変化した時だけ発火する。\n const prevCanScroll = useRef<boolean | null>(null)\n\n const updateScrollState = useCallback(() => {\n const el = scrollerRef.current\n if (!el) return\n const { scrollLeft, scrollWidth, clientWidth } = el\n const canPrev = scrollLeft > 1\n const canNext = scrollLeft < scrollWidth - clientWidth - 1\n store.dispatch({ type: 'setScrollState', canPrev, canNext })\n const canScroll = canPrev || canNext\n if (prevCanScroll.current !== canScroll) {\n prevCanScroll.current = canScroll\n callbacksRef.current.onScrollStateChange?.(canScroll)\n }\n }, [scrollerRef, store])\n\n const applyInitialScroll = useCallback(() => {\n const el = scrollerRef.current\n if (!el || !initialScrollActive.current) return\n const maxScroll = el.scrollWidth - el.clientWidth\n let left = offset\n switch (align) {\n case 'center':\n left = maxScroll / 2 + offset\n break\n case 'right':\n left = maxScroll + offset\n break\n }\n // scrollLeft 代入は CSS の scroll-behavior: smooth の対象になり\n // 初期位置決めがアニメーションしてしまうため、instant で確定させる。\n el.scrollTo({\n left: Math.max(0, Math.min(left, maxScroll)),\n behavior: 'instant',\n })\n }, [scrollerRef, align, offset])\n\n // canPrev/canNext: scroll で更新。onScroll もここから発火。itemCount 変化で貼り直し。\n useIsomorphicLayoutEffect(() => {\n const el = scrollerRef.current\n if (!el) return\n updateScrollState()\n const handleScroll = () => {\n updateScrollState()\n callbacksRef.current.onScroll?.(el.scrollLeft)\n }\n el.addEventListener('scroll', handleScroll, { passive: true })\n return () => el.removeEventListener('scroll', handleScroll)\n }, [scrollerRef, updateScrollState, itemCount])\n\n // scroller 幅の変化で onResize(clientWidth) を通知し、状態と初期位置を再計算する。\n useIsomorphicLayoutEffect(() => {\n const el = scrollerRef.current\n if (!el || typeof ResizeObserver === 'undefined') return\n const ro = new ResizeObserver(() => {\n applyInitialScroll()\n updateScrollState()\n callbacksRef.current.onResize?.(el.clientWidth)\n })\n ro.observe(el)\n return () => ro.disconnect()\n }, [scrollerRef, applyInitialScroll, updateScrollState])\n\n // 初期スクロール適用 + ユーザー操作で打ち切り。\n useIsomorphicLayoutEffect(() => {\n initialScrollActive.current = true\n applyInitialScroll()\n // 初期位置適用後の scrollLeft で canPrev/canNext を確定させる\n // (center/right 初期化で scroll イベント待ちにならないように)。\n updateScrollState()\n const el = scrollerRef.current\n if (!el) return\n const stop = () => {\n initialScrollActive.current = false\n }\n for (const type of INTERACTION_EVENTS) el.addEventListener(type, stop, true)\n return () => {\n for (const type of INTERACTION_EVENTS)\n el.removeEventListener(type, stop, true)\n }\n }, [scrollerRef, applyInitialScroll, updateScrollState, itemCount])\n\n const onItemResize = useCallback(() => {\n applyInitialScroll()\n updateScrollState()\n }, [applyInitialScroll, updateScrollState])\n\n // defaultScroll の初期位置へ戻す(命令的 API: CarouselHandlerRef.resetScroll)。\n const resetScroll = useCallback(() => {\n initialScrollActive.current = true\n applyInitialScroll()\n updateScrollState()\n }, [applyInitialScroll, updateScrollState])\n\n const scrollByStep = useCallback(\n (direction: 'prev' | 'next') => {\n const el = scrollerRef.current\n if (!el) return\n initialScrollActive.current = false\n const { clientWidth, scrollWidth, scrollLeft } = el\n // 進む量(px)の絶対値。符号は direction で付ける。\n const delta =\n typeof scrollStep === 'function'\n ? scrollStep({ clientWidth, scrollWidth, scrollLeft, direction })\n : clientWidth * scrollStep\n el.scrollBy({\n left: direction === 'next' ? delta : -delta,\n behavior: 'smooth',\n })\n },\n [scrollerRef, scrollStep],\n )\n\n return { scrollByStep, onItemResize, resetScroll }\n}\n"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ const require_runtime = require('../../../_virtual/_rolldown/runtime.cjs');
3
+ const require_useClassNames = require('../../../_lib/useClassNames.cjs');
4
+ require('./index.cjs');
5
+ let react = require("react");
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+
8
+ //#region src/components/Checkbox/CheckboxInput/index.tsx
9
+ const CheckboxInput = (0, react.forwardRef)(function CheckboxInput({ onChange, checked, invalid, className, rounded, ...props }, ref) {
10
+ const handleChange = (0, react.useCallback)((e) => {
11
+ const el = e.currentTarget;
12
+ onChange?.(el.checked);
13
+ }, [onChange]);
14
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
15
+ className: require_useClassNames.useClassNames("charcoal-checkbox-input", className),
16
+ ref,
17
+ type: "checkbox",
18
+ onChange: handleChange,
19
+ "aria-invalid": invalid,
20
+ checked,
21
+ "data-rounded": rounded,
22
+ ...props
23
+ });
24
+ });
25
+ var CheckboxInput_default = (0, react.memo)(CheckboxInput);
26
+
27
+ //#endregion
28
+ exports.default = CheckboxInput_default;
29
+ //# sourceMappingURL=index2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2.cjs","names":["forwardRef","memo","useCallback","useClassNames","CharcoalCheckboxInputProps","invalid","onChange","checked","rounded","InputProps","React","HTMLProps","HTMLInputElement","CheckboxInputProps","Omit","CheckboxInput","className","props","ref","handleChange","e","ChangeEvent","el","currentTarget","classNames"],"sources":["../../../../src/components/Checkbox/CheckboxInput/index.tsx"],"sourcesContent":["import './index.css'\n\nimport { forwardRef, memo, useCallback } from 'react'\nimport { useClassNames } from '../../../_lib/useClassNames'\n\ntype CharcoalCheckboxInputProps = {\n invalid?: boolean\n onChange?: (checked: boolean) => void\n rounded?: boolean\n}\n\ntype InputProps = React.HTMLProps<HTMLInputElement>\n\nexport type CheckboxInputProps = CharcoalCheckboxInputProps &\n Omit<InputProps, keyof CharcoalCheckboxInputProps | 'ref'>\n\nconst CheckboxInput = forwardRef<HTMLInputElement, CheckboxInputProps>(\n function CheckboxInput(\n { onChange, checked, invalid, className, rounded, ...props },\n ref,\n ) {\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const el = e.currentTarget\n onChange?.(el.checked)\n },\n [onChange],\n )\n\n const classNames = useClassNames('charcoal-checkbox-input', className)\n\n return (\n <input\n className={classNames}\n ref={ref}\n type=\"checkbox\"\n onChange={handleChange}\n aria-invalid={invalid}\n checked={checked}\n data-rounded={rounded}\n {...props}\n />\n )\n },\n)\n\nexport default memo(CheckboxInput)\n"],"mappings":";;;;;;;;AAgBA,MAAMe,sCACJ,SAASA,cACP,EAAET,UAAUC,SAASF,SAASW,WAAWR,SAAS,GAAGS,SACrDC,KACA;CACA,MAAMC,uCACHC,MAA2C;EAC1C,MAAME,KAAKF,EAAEG;EACbjB,WAAWgB,GAAGf,QAAQ;IAExB,CAACD,SACH,CAAC;CAID,OACE,2CAAC,SAAD;EACE,WAJeH,oCAAc,2BAA2Ba,UAInC;EAChBE;EACL,MAAK;EACL,UAAUC;EACV,gBAAcd;EACLE;EACT,gBAAcC;EACd,GAAIS;EACJ;EAGP;AAED,4CAAoBF,cAAc"}
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import { useClassNames } from "../../../_lib/useClassNames.js";
3
+ /* empty css */
4
+ import { forwardRef, memo, useCallback } from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+
7
+ //#region src/components/Checkbox/CheckboxInput/index.tsx
8
+ const CheckboxInput = forwardRef(function CheckboxInput({ onChange, checked, invalid, className, rounded, ...props }, ref) {
9
+ const handleChange = useCallback((e) => {
10
+ const el = e.currentTarget;
11
+ onChange?.(el.checked);
12
+ }, [onChange]);
13
+ return /* @__PURE__ */ jsx("input", {
14
+ className: useClassNames("charcoal-checkbox-input", className),
15
+ ref,
16
+ type: "checkbox",
17
+ onChange: handleChange,
18
+ "aria-invalid": invalid,
19
+ checked,
20
+ "data-rounded": rounded,
21
+ ...props
22
+ });
23
+ });
24
+ var CheckboxInput_default = memo(CheckboxInput);
25
+
26
+ //#endregion
27
+ export { CheckboxInput_default as default };
28
+ //# sourceMappingURL=index2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2.js","names":["forwardRef","memo","useCallback","useClassNames","CharcoalCheckboxInputProps","invalid","onChange","checked","rounded","InputProps","React","HTMLProps","HTMLInputElement","CheckboxInputProps","Omit","CheckboxInput","className","props","ref","handleChange","e","ChangeEvent","el","currentTarget","classNames"],"sources":["../../../../src/components/Checkbox/CheckboxInput/index.tsx"],"sourcesContent":["import './index.css'\n\nimport { forwardRef, memo, useCallback } from 'react'\nimport { useClassNames } from '../../../_lib/useClassNames'\n\ntype CharcoalCheckboxInputProps = {\n invalid?: boolean\n onChange?: (checked: boolean) => void\n rounded?: boolean\n}\n\ntype InputProps = React.HTMLProps<HTMLInputElement>\n\nexport type CheckboxInputProps = CharcoalCheckboxInputProps &\n Omit<InputProps, keyof CharcoalCheckboxInputProps | 'ref'>\n\nconst CheckboxInput = forwardRef<HTMLInputElement, CheckboxInputProps>(\n function CheckboxInput(\n { onChange, checked, invalid, className, rounded, ...props },\n ref,\n ) {\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const el = e.currentTarget\n onChange?.(el.checked)\n },\n [onChange],\n )\n\n const classNames = useClassNames('charcoal-checkbox-input', className)\n\n return (\n <input\n className={classNames}\n ref={ref}\n type=\"checkbox\"\n onChange={handleChange}\n aria-invalid={invalid}\n checked={checked}\n data-rounded={rounded}\n {...props}\n />\n )\n },\n)\n\nexport default memo(CheckboxInput)\n"],"mappings":";;;;;;;AAgBA,MAAMe,gBAAgBf,WACpB,SAASe,cACP,EAAET,UAAUC,SAASF,SAASW,WAAWR,SAAS,GAAGS,SACrDC,KACA;CACA,MAAMC,eAAejB,aAClBkB,MAA2C;EAC1C,MAAME,KAAKF,EAAEG;EACbjB,WAAWgB,GAAGf,QAAQ;IAExB,CAACD,SACH,CAAC;CAID,OACE,oBAAC,SAAD;EACE,WAJeH,cAAc,2BAA2Ba,UAInC;EAChBE;EACL,MAAK;EACL,UAAUC;EACV,gBAAcd;EACLE;EACT,gBAAcC;EACd,GAAIS;EACJ;EAGP;AAED,4BAAehB,KAAKc,cAAc"}
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
3
+ const require_useClassNames = require('../../_lib/useClassNames.cjs');
4
+ let react = require("react");
5
+ react = require_runtime.__toESM(react);
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+
8
+ //#region src/components/Checkbox/CheckboxWithLabel.tsx
9
+ const CheckboxWithLabel = react.default.memo(function CheckboxWithLabel({ className, children, input, id, disabled }) {
10
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
11
+ htmlFor: id,
12
+ "aria-disabled": disabled,
13
+ className: require_useClassNames.useClassNames("charcoal-checkbox__label", className),
14
+ children: [input, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
15
+ className: "charcoal-checkbox__label_div",
16
+ children
17
+ })]
18
+ });
19
+ });
20
+
21
+ //#endregion
22
+ exports.CheckboxWithLabel = CheckboxWithLabel;
23
+ //# sourceMappingURL=CheckboxWithLabel.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxWithLabel.cjs","names":["React","useClassNames","CheckboxWithLabel","memo","className","children","input","id","disabled","ReactNode","classNames"],"sources":["../../../src/components/Checkbox/CheckboxWithLabel.tsx"],"sourcesContent":["import React from 'react'\nimport { useClassNames } from '../../_lib/useClassNames'\n\nexport const CheckboxWithLabel = React.memo(function CheckboxWithLabel({\n className,\n children,\n input,\n id,\n disabled,\n}: {\n children: React.ReactNode\n input: React.ReactNode\n disabled?: boolean\n className?: string\n id?: string\n}) {\n const classNames = useClassNames('charcoal-checkbox__label', className)\n return (\n <label htmlFor={id} aria-disabled={disabled} className={classNames}>\n {input}\n <div className=\"charcoal-checkbox__label_div\">{children}</div>\n </label>\n )\n})\n"],"mappings":";;;;;;;;AAGA,MAAaE,oBAAoBF,cAAMG,KAAK,SAASD,kBAAkB,EACrEE,WACAC,UACAC,OACAC,IACAC,YAOC;CAED,OACE,4CAAC,SAAD;EAAO,SAASD;EAAI,iBAAeC;EAAU,WAF5BP,oCAAc,4BAA4BG,UAEO;YAAlE,CACGE,OACD,2CAAC,OAAD;GAAK,WAAU;GAAgCD;GAAc,EACvD;;EAEV"}
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import { useClassNames } from "../../_lib/useClassNames.js";
3
+ import React from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+
6
+ //#region src/components/Checkbox/CheckboxWithLabel.tsx
7
+ const CheckboxWithLabel = React.memo(function CheckboxWithLabel({ className, children, input, id, disabled }) {
8
+ return /* @__PURE__ */ jsxs("label", {
9
+ htmlFor: id,
10
+ "aria-disabled": disabled,
11
+ className: useClassNames("charcoal-checkbox__label", className),
12
+ children: [input, /* @__PURE__ */ jsx("div", {
13
+ className: "charcoal-checkbox__label_div",
14
+ children
15
+ })]
16
+ });
17
+ });
18
+
19
+ //#endregion
20
+ export { CheckboxWithLabel };
21
+ //# sourceMappingURL=CheckboxWithLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxWithLabel.js","names":["React","useClassNames","CheckboxWithLabel","memo","className","children","input","id","disabled","ReactNode","classNames"],"sources":["../../../src/components/Checkbox/CheckboxWithLabel.tsx"],"sourcesContent":["import React from 'react'\nimport { useClassNames } from '../../_lib/useClassNames'\n\nexport const CheckboxWithLabel = React.memo(function CheckboxWithLabel({\n className,\n children,\n input,\n id,\n disabled,\n}: {\n children: React.ReactNode\n input: React.ReactNode\n disabled?: boolean\n className?: string\n id?: string\n}) {\n const classNames = useClassNames('charcoal-checkbox__label', className)\n return (\n <label htmlFor={id} aria-disabled={disabled} className={classNames}>\n {input}\n <div className=\"charcoal-checkbox__label_div\">{children}</div>\n </label>\n )\n})\n"],"mappings":";;;;;;AAGA,MAAaE,oBAAoBF,MAAMG,KAAK,SAASD,kBAAkB,EACrEE,WACAC,UACAC,OACAC,IACAC,YAOC;CAED,OACE,qBAAC,SAAD;EAAO,SAASD;EAAI,iBAAeC;EAAU,WAF5BP,cAAc,4BAA4BG,UAEO;YAAlE,CACGE,OACD,oBAAC,OAAD;GAAK,WAAU;GAAgCD;GAAc,EACvD;;EAEV"}
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
3
+ require('./index.cjs');
4
+ const require_index$1 = require('./CheckboxInput/index2.cjs');
5
+ const require_CheckboxWithLabel = require('./CheckboxWithLabel.cjs');
6
+ let react = require("react");
7
+ let react_jsx_runtime = require("react/jsx-runtime");
8
+ let react_aria_useId = require("react-aria/useId");
9
+
10
+ //#region src/components/Checkbox/index.tsx
11
+ const Checkbox = (0, react.forwardRef)(function Checkbox({ disabled, className, id, children, ...props }, ref) {
12
+ const htmlId = (0, react_aria_useId.useId)(id);
13
+ const noChildren = children === void 0;
14
+ const input = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_index$1.default, {
15
+ ...props,
16
+ className: noChildren ? className : void 0,
17
+ disabled,
18
+ id: htmlId,
19
+ ref
20
+ });
21
+ if (noChildren) return input;
22
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_CheckboxWithLabel.CheckboxWithLabel, {
23
+ className,
24
+ disabled,
25
+ id: htmlId,
26
+ input,
27
+ children
28
+ });
29
+ });
30
+ var Checkbox_default = (0, react.memo)(Checkbox);
31
+
32
+ //#endregion
33
+ exports.default = Checkbox_default;
34
+ //# sourceMappingURL=index2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2.cjs","names":["forwardRef","memo","CheckboxInput","CheckboxInputProps","CheckboxWithLabel","useId","CheckboxProps","Checkbox","HTMLInputElement","disabled","className","id","children","props","ref","htmlId","noChildren","undefined","input"],"sources":["../../../src/components/Checkbox/index.tsx"],"sourcesContent":["import './index.css'\n\nimport { forwardRef, memo } from 'react'\nimport CheckboxInput, { CheckboxInputProps } from './CheckboxInput'\nimport { CheckboxWithLabel } from './CheckboxWithLabel'\nimport { useId } from 'react-aria/useId'\n\nexport type CheckboxProps = CheckboxInputProps\n\nconst Checkbox = forwardRef<HTMLInputElement, CheckboxInputProps>(\n function Checkbox({ disabled, className, id, children, ...props }, ref) {\n const htmlId = useId(id)\n const noChildren = children === undefined\n const input = (\n <CheckboxInput\n {...props}\n className={noChildren ? className : undefined}\n disabled={disabled}\n id={htmlId}\n ref={ref}\n />\n )\n if (noChildren) {\n return input\n }\n return (\n <CheckboxWithLabel\n className={className}\n disabled={disabled}\n id={htmlId}\n input={input}\n >\n {children}\n </CheckboxWithLabel>\n )\n },\n)\n\nexport default memo(Checkbox)\n"],"mappings":";;;;;;;;;;AASA,MAAMO,iCACJ,SAASA,SAAS,EAAEE,UAAUC,WAAWC,IAAIC,UAAU,GAAGC,SAASC,KAAK;CACtE,MAAMC,qCAAeJ,GAAG;CACxB,MAAMK,aAAaJ,aAAaK;CAChC,MAAMC,QACJ,2CAAC,yBAAD;EACE,GAAIL;EACJ,WAAWG,aAAaN,YAAYO;EAC1BR;EACV,IAAIM;EACCD;EAER;CACD,IAAIE,YACF,OAAOE;CAET,OACE,2CAAC,6CAAD;EACaR;EACDD;EACV,IAAIM;EACGG;EAENN;EACiB;EAGzB;AAED,uCAAoBL,SAAS"}
@@ -0,0 +1,33 @@
1
+ "use client";
2
+ /* empty css */
3
+ import CheckboxInput_default from "./CheckboxInput/index2.js";
4
+ import { CheckboxWithLabel } from "./CheckboxWithLabel.js";
5
+ import { forwardRef, memo } from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { useId } from "react-aria/useId";
8
+
9
+ //#region src/components/Checkbox/index.tsx
10
+ const Checkbox = forwardRef(function Checkbox({ disabled, className, id, children, ...props }, ref) {
11
+ const htmlId = useId(id);
12
+ const noChildren = children === void 0;
13
+ const input = /* @__PURE__ */ jsx(CheckboxInput_default, {
14
+ ...props,
15
+ className: noChildren ? className : void 0,
16
+ disabled,
17
+ id: htmlId,
18
+ ref
19
+ });
20
+ if (noChildren) return input;
21
+ return /* @__PURE__ */ jsx(CheckboxWithLabel, {
22
+ className,
23
+ disabled,
24
+ id: htmlId,
25
+ input,
26
+ children
27
+ });
28
+ });
29
+ var Checkbox_default = memo(Checkbox);
30
+
31
+ //#endregion
32
+ export { Checkbox_default as default };
33
+ //# sourceMappingURL=index2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2.js","names":["forwardRef","memo","CheckboxInput","CheckboxInputProps","CheckboxWithLabel","useId","CheckboxProps","Checkbox","HTMLInputElement","disabled","className","id","children","props","ref","htmlId","noChildren","undefined","input"],"sources":["../../../src/components/Checkbox/index.tsx"],"sourcesContent":["import './index.css'\n\nimport { forwardRef, memo } from 'react'\nimport CheckboxInput, { CheckboxInputProps } from './CheckboxInput'\nimport { CheckboxWithLabel } from './CheckboxWithLabel'\nimport { useId } from 'react-aria/useId'\n\nexport type CheckboxProps = CheckboxInputProps\n\nconst Checkbox = forwardRef<HTMLInputElement, CheckboxInputProps>(\n function Checkbox({ disabled, className, id, children, ...props }, ref) {\n const htmlId = useId(id)\n const noChildren = children === undefined\n const input = (\n <CheckboxInput\n {...props}\n className={noChildren ? className : undefined}\n disabled={disabled}\n id={htmlId}\n ref={ref}\n />\n )\n if (noChildren) {\n return input\n }\n return (\n <CheckboxWithLabel\n className={className}\n disabled={disabled}\n id={htmlId}\n input={input}\n >\n {children}\n </CheckboxWithLabel>\n )\n },\n)\n\nexport default memo(Checkbox)\n"],"mappings":";;;;;;;;;AASA,MAAMO,WAAWP,WACf,SAASO,SAAS,EAAEE,UAAUC,WAAWC,IAAIC,UAAU,GAAGC,SAASC,KAAK;CACtE,MAAMC,SAASV,MAAMM,GAAG;CACxB,MAAMK,aAAaJ,aAAaK;CAChC,MAAMC,QACJ,oBAAC,uBAAD;EACE,GAAIL;EACJ,WAAWG,aAAaN,YAAYO;EAC1BR;EACV,IAAIM;EACCD;EAER;CACD,IAAIE,YACF,OAAOE;CAET,OACE,oBAAC,mBAAD;EACaR;EACDD;EACV,IAAIM;EACGG;EAENN;EACiB;EAGzB;AAED,uBAAeX,KAAKM,SAAS"}
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
3
+ const require_useClassNames = require('../../_lib/useClassNames.cjs');
4
+ require('./index.cjs');
5
+ let react = require("react");
6
+ react = require_runtime.__toESM(react);
7
+ let react_jsx_runtime = require("react/jsx-runtime");
8
+
9
+ //#region src/components/Clickable/index.tsx
10
+ const Clickable = (0, react.forwardRef)(function Clickable({ component, ...props }, ref) {
11
+ const className = require_useClassNames.useClassNames("charcoal-clickable", props.className);
12
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)((0, react.useMemo)(() => component ?? "button", [component]), {
13
+ ...props,
14
+ ref,
15
+ className
16
+ });
17
+ });
18
+
19
+ //#endregion
20
+ exports.default = Clickable;
21
+ //# sourceMappingURL=index2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2.cjs","names":["React","useMemo","forwardRef","ReactNode","JSX","useClassNames","ClickableProps","ElementType","children","component","T","Omit","ComponentPropsWithRef","Clickable","props","ref","ForwardedRef","HTMLButtonElement","className","Component","p","Element","ClickableElement","HTMLAnchorElement"],"sources":["../../../src/components/Clickable/index.tsx"],"sourcesContent":["import React, { useMemo, forwardRef, ReactNode, type JSX } from 'react'\nimport { useClassNames } from '../../_lib/useClassNames'\nimport './index.css'\n\nexport type ClickableProps<T extends React.ElementType = 'button'> = {\n children?: ReactNode\n /**\n * The component used for root element.\n * @type T extends React.ElementType = 'button'\n */\n component?: T\n} & Omit<React.ComponentPropsWithRef<T>, 'children'>\n\nconst Clickable = forwardRef(function Clickable<T extends React.ElementType>(\n { component, ...props }: ClickableProps<T>,\n ref: React.ForwardedRef<HTMLButtonElement>,\n) {\n const className = useClassNames('charcoal-clickable', props.className)\n\n const Component = useMemo(() => component ?? 'button', [component])\n\n return <Component {...props} ref={ref} className={className} />\n}) as <T extends React.ElementType = 'button'>(\n p: ClickableProps<T>,\n) => JSX.Element\nexport default Clickable\n\n/**\n * @deprecated\n * remained for v3 compatibility and will be removed in the future\n */\nexport type ClickableElement = HTMLButtonElement & HTMLAnchorElement\n"],"mappings":";;;;;;;;;AAaA,MAAMa,kCAAuB,SAASA,UACpC,EAAEJ,WAAW,GAAGK,SAChBC,KACA;CACA,MAAMG,YAAYb,oCAAc,sBAAsBS,MAAMI,UAAU;CAItE,OAAO,oEAFyBT,aAAa,UAAU,CAACA,UAAU,CAEjD,EAAV;EAAW,GAAIK;EAAYC;EAAgBG;EAAa;EAC/D"}
@@ -0,0 +1,19 @@
1
+ "use client";
2
+ import { useClassNames } from "../../_lib/useClassNames.js";
3
+ /* empty css */
4
+ import React, { forwardRef, useMemo } from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+
7
+ //#region src/components/Clickable/index.tsx
8
+ const Clickable = forwardRef(function Clickable({ component, ...props }, ref) {
9
+ const className = useClassNames("charcoal-clickable", props.className);
10
+ return /* @__PURE__ */ jsx(useMemo(() => component ?? "button", [component]), {
11
+ ...props,
12
+ ref,
13
+ className
14
+ });
15
+ });
16
+
17
+ //#endregion
18
+ export { Clickable as default };
19
+ //# sourceMappingURL=index2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2.js","names":["React","useMemo","forwardRef","ReactNode","JSX","useClassNames","ClickableProps","ElementType","children","component","T","Omit","ComponentPropsWithRef","Clickable","props","ref","ForwardedRef","HTMLButtonElement","className","Component","p","Element","ClickableElement","HTMLAnchorElement"],"sources":["../../../src/components/Clickable/index.tsx"],"sourcesContent":["import React, { useMemo, forwardRef, ReactNode, type JSX } from 'react'\nimport { useClassNames } from '../../_lib/useClassNames'\nimport './index.css'\n\nexport type ClickableProps<T extends React.ElementType = 'button'> = {\n children?: ReactNode\n /**\n * The component used for root element.\n * @type T extends React.ElementType = 'button'\n */\n component?: T\n} & Omit<React.ComponentPropsWithRef<T>, 'children'>\n\nconst Clickable = forwardRef(function Clickable<T extends React.ElementType>(\n { component, ...props }: ClickableProps<T>,\n ref: React.ForwardedRef<HTMLButtonElement>,\n) {\n const className = useClassNames('charcoal-clickable', props.className)\n\n const Component = useMemo(() => component ?? 'button', [component])\n\n return <Component {...props} ref={ref} className={className} />\n}) as <T extends React.ElementType = 'button'>(\n p: ClickableProps<T>,\n) => JSX.Element\nexport default Clickable\n\n/**\n * @deprecated\n * remained for v3 compatibility and will be removed in the future\n */\nexport type ClickableElement = HTMLButtonElement & HTMLAnchorElement\n"],"mappings":";;;;;;;AAaA,MAAMa,YAAYX,WAAW,SAASW,UACpC,EAAEJ,WAAW,GAAGK,SAChBC,KACA;CACA,MAAMG,YAAYb,cAAc,sBAAsBS,MAAMI,UAAU;CAItE,OAAO,oBAFWjB,cAAcQ,aAAa,UAAU,CAACA,UAAU,CAEjD,EAAV;EAAW,GAAIK;EAAYC;EAAgBG;EAAa;EAC/D"}