@fragments-sdk/ui 0.12.0 → 0.14.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 (675) hide show
  1. package/dist/assets/ui.css +1642 -1679
  2. package/dist/chart.cjs.map +1 -1
  3. package/dist/chart.js.map +1 -1
  4. package/dist/codeblock.cjs +26 -18
  5. package/dist/codeblock.cjs.map +1 -1
  6. package/dist/codeblock.js +26 -18
  7. package/dist/codeblock.js.map +1 -1
  8. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  9. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  10. package/dist/components/Accordion/index.cjs +17 -6
  11. package/dist/components/Accordion/index.cjs.map +1 -1
  12. package/dist/components/Accordion/index.d.ts +25 -12
  13. package/dist/components/Accordion/index.d.ts.map +1 -1
  14. package/dist/components/Accordion/index.js +17 -6
  15. package/dist/components/Accordion/index.js.map +1 -1
  16. package/dist/components/Alert/Alert.module.scss.cjs +12 -12
  17. package/dist/components/Alert/Alert.module.scss.js +12 -12
  18. package/dist/components/Alert/index.cjs +37 -15
  19. package/dist/components/Alert/index.cjs.map +1 -1
  20. package/dist/components/Alert/index.d.ts +15 -22
  21. package/dist/components/Alert/index.d.ts.map +1 -1
  22. package/dist/components/Alert/index.js +37 -15
  23. package/dist/components/Alert/index.js.map +1 -1
  24. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  25. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  26. package/dist/components/AppShell/index.cjs +3 -1
  27. package/dist/components/AppShell/index.cjs.map +1 -1
  28. package/dist/components/AppShell/index.d.ts.map +1 -1
  29. package/dist/components/AppShell/index.js +3 -1
  30. package/dist/components/AppShell/index.js.map +1 -1
  31. package/dist/components/Avatar/index.cjs +9 -1
  32. package/dist/components/Avatar/index.cjs.map +1 -1
  33. package/dist/components/Avatar/index.d.ts +2 -0
  34. package/dist/components/Avatar/index.d.ts.map +1 -1
  35. package/dist/components/Avatar/index.js +9 -1
  36. package/dist/components/Avatar/index.js.map +1 -1
  37. package/dist/components/Badge/index.cjs +4 -2
  38. package/dist/components/Badge/index.cjs.map +1 -1
  39. package/dist/components/Badge/index.d.ts +3 -0
  40. package/dist/components/Badge/index.d.ts.map +1 -1
  41. package/dist/components/Badge/index.js +4 -2
  42. package/dist/components/Badge/index.js.map +1 -1
  43. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +11 -11
  44. package/dist/components/BentoGrid/BentoGrid.module.scss.js +11 -11
  45. package/dist/components/BentoGrid/index.cjs +8 -5
  46. package/dist/components/BentoGrid/index.cjs.map +1 -1
  47. package/dist/components/BentoGrid/index.d.ts +2 -8
  48. package/dist/components/BentoGrid/index.d.ts.map +1 -1
  49. package/dist/components/BentoGrid/index.js +8 -5
  50. package/dist/components/BentoGrid/index.js.map +1 -1
  51. package/dist/components/Box/index.cjs +12 -2
  52. package/dist/components/Box/index.cjs.map +1 -1
  53. package/dist/components/Box/index.d.ts +1 -1
  54. package/dist/components/Box/index.d.ts.map +1 -1
  55. package/dist/components/Box/index.js +12 -2
  56. package/dist/components/Box/index.js.map +1 -1
  57. package/dist/components/Breadcrumbs/index.cjs +3 -1
  58. package/dist/components/Breadcrumbs/index.cjs.map +1 -1
  59. package/dist/components/Breadcrumbs/index.d.ts +3 -1
  60. package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
  61. package/dist/components/Breadcrumbs/index.js +3 -1
  62. package/dist/components/Breadcrumbs/index.js.map +1 -1
  63. package/dist/components/Button/Button.module.scss.cjs +11 -11
  64. package/dist/components/Button/Button.module.scss.js +11 -11
  65. package/dist/components/Button/index.cjs +5 -2
  66. package/dist/components/Button/index.cjs.map +1 -1
  67. package/dist/components/Button/index.d.ts +3 -3
  68. package/dist/components/Button/index.d.ts.map +1 -1
  69. package/dist/components/Button/index.js +5 -2
  70. package/dist/components/Button/index.js.map +1 -1
  71. package/dist/components/ButtonGroup/index.cjs +3 -2
  72. package/dist/components/ButtonGroup/index.cjs.map +1 -1
  73. package/dist/components/ButtonGroup/index.d.ts +1 -2
  74. package/dist/components/ButtonGroup/index.d.ts.map +1 -1
  75. package/dist/components/ButtonGroup/index.js +3 -2
  76. package/dist/components/ButtonGroup/index.js.map +1 -1
  77. package/dist/components/Card/Card.module.scss.cjs +14 -14
  78. package/dist/components/Card/Card.module.scss.js +14 -14
  79. package/dist/components/Card/index.cjs +3 -22
  80. package/dist/components/Card/index.cjs.map +1 -1
  81. package/dist/components/Card/index.d.ts +6 -11
  82. package/dist/components/Card/index.d.ts.map +1 -1
  83. package/dist/components/Card/index.js +3 -22
  84. package/dist/components/Card/index.js.map +1 -1
  85. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  86. package/dist/components/Chart/Chart.module.scss.js +15 -15
  87. package/dist/components/Chart/index.d.ts +3 -3
  88. package/dist/components/Chart/index.d.ts.map +1 -1
  89. package/dist/components/Checkbox/Checkbox.module.scss.cjs +10 -10
  90. package/dist/components/Checkbox/Checkbox.module.scss.js +10 -10
  91. package/dist/components/Checkbox/index.cjs +11 -4
  92. package/dist/components/Checkbox/index.cjs.map +1 -1
  93. package/dist/components/Checkbox/index.d.ts +6 -0
  94. package/dist/components/Checkbox/index.d.ts.map +1 -1
  95. package/dist/components/Checkbox/index.js +11 -4
  96. package/dist/components/Checkbox/index.js.map +1 -1
  97. package/dist/components/Chip/index.cjs +11 -3
  98. package/dist/components/Chip/index.cjs.map +1 -1
  99. package/dist/components/Chip/index.d.ts +1 -2
  100. package/dist/components/Chip/index.d.ts.map +1 -1
  101. package/dist/components/Chip/index.js +11 -3
  102. package/dist/components/Chip/index.js.map +1 -1
  103. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +20 -20
  104. package/dist/components/CodeBlock/CodeBlock.module.scss.js +20 -20
  105. package/dist/components/CodeBlock/index.d.ts +8 -2
  106. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  107. package/dist/components/Collapsible/Collapsible.module.scss.cjs +10 -10
  108. package/dist/components/Collapsible/Collapsible.module.scss.js +10 -10
  109. package/dist/components/Collapsible/index.cjs +45 -10
  110. package/dist/components/Collapsible/index.cjs.map +1 -1
  111. package/dist/components/Collapsible/index.d.ts +6 -12
  112. package/dist/components/Collapsible/index.d.ts.map +1 -1
  113. package/dist/components/Collapsible/index.js +45 -10
  114. package/dist/components/Collapsible/index.js.map +1 -1
  115. package/dist/components/Combobox/Combobox.module.scss.cjs +15 -15
  116. package/dist/components/Combobox/Combobox.module.scss.js +15 -15
  117. package/dist/components/Combobox/index.cjs +86 -27
  118. package/dist/components/Combobox/index.cjs.map +1 -1
  119. package/dist/components/Combobox/index.d.ts +40 -23
  120. package/dist/components/Combobox/index.d.ts.map +1 -1
  121. package/dist/components/Combobox/index.js +86 -27
  122. package/dist/components/Combobox/index.js.map +1 -1
  123. package/dist/components/Command/Command.module.scss.cjs +11 -11
  124. package/dist/components/Command/Command.module.scss.js +11 -11
  125. package/dist/components/Command/index.cjs +55 -22
  126. package/dist/components/Command/index.cjs.map +1 -1
  127. package/dist/components/Command/index.d.ts +3 -3
  128. package/dist/components/Command/index.d.ts.map +1 -1
  129. package/dist/components/Command/index.js +55 -22
  130. package/dist/components/Command/index.js.map +1 -1
  131. package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
  132. package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
  133. package/dist/components/ConversationList/index.cjs +6 -3
  134. package/dist/components/ConversationList/index.cjs.map +1 -1
  135. package/dist/components/ConversationList/index.d.ts +1 -1
  136. package/dist/components/ConversationList/index.d.ts.map +1 -1
  137. package/dist/components/ConversationList/index.js +6 -3
  138. package/dist/components/ConversationList/index.js.map +1 -1
  139. package/dist/components/DataTable/DataTable.module.scss.cjs +26 -26
  140. package/dist/components/DataTable/DataTable.module.scss.js +26 -26
  141. package/dist/components/DataTable/index.cjs +25 -4
  142. package/dist/components/DataTable/index.cjs.map +1 -1
  143. package/dist/components/DataTable/index.d.ts +7 -2
  144. package/dist/components/DataTable/index.d.ts.map +1 -1
  145. package/dist/components/DataTable/index.js +25 -4
  146. package/dist/components/DataTable/index.js.map +1 -1
  147. package/dist/components/DatePicker/DatePicker.module.scss.cjs +26 -26
  148. package/dist/components/DatePicker/DatePicker.module.scss.js +26 -26
  149. package/dist/components/DatePicker/index.d.ts +4 -5
  150. package/dist/components/DatePicker/index.d.ts.map +1 -1
  151. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  152. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  153. package/dist/components/Dialog/index.cjs +14 -10
  154. package/dist/components/Dialog/index.cjs.map +1 -1
  155. package/dist/components/Dialog/index.d.ts +26 -17
  156. package/dist/components/Dialog/index.d.ts.map +1 -1
  157. package/dist/components/Dialog/index.js +14 -10
  158. package/dist/components/Dialog/index.js.map +1 -1
  159. package/dist/components/Drawer/Drawer.module.scss.cjs +26 -26
  160. package/dist/components/Drawer/Drawer.module.scss.js +26 -26
  161. package/dist/components/Drawer/index.cjs +41 -11
  162. package/dist/components/Drawer/index.cjs.map +1 -1
  163. package/dist/components/Drawer/index.d.ts +11 -13
  164. package/dist/components/Drawer/index.d.ts.map +1 -1
  165. package/dist/components/Drawer/index.js +24 -11
  166. package/dist/components/Drawer/index.js.map +1 -1
  167. package/dist/components/Editor/Editor.module.scss.cjs +17 -17
  168. package/dist/components/Editor/Editor.module.scss.js +17 -17
  169. package/dist/components/Editor/index.cjs +32 -7
  170. package/dist/components/Editor/index.cjs.map +1 -1
  171. package/dist/components/Editor/index.d.ts +16 -3
  172. package/dist/components/Editor/index.d.ts.map +1 -1
  173. package/dist/components/Editor/index.js +32 -7
  174. package/dist/components/Editor/index.js.map +1 -1
  175. package/dist/components/EmptyState/EmptyState.module.scss.cjs +8 -8
  176. package/dist/components/EmptyState/EmptyState.module.scss.js +8 -8
  177. package/dist/components/EmptyState/index.cjs +12 -8
  178. package/dist/components/EmptyState/index.cjs.map +1 -1
  179. package/dist/components/EmptyState/index.d.ts +8 -12
  180. package/dist/components/EmptyState/index.d.ts.map +1 -1
  181. package/dist/components/EmptyState/index.js +12 -8
  182. package/dist/components/EmptyState/index.js.map +1 -1
  183. package/dist/components/Fieldset/index.cjs +2 -2
  184. package/dist/components/Fieldset/index.cjs.map +1 -1
  185. package/dist/components/Fieldset/index.d.ts +2 -3
  186. package/dist/components/Fieldset/index.d.ts.map +1 -1
  187. package/dist/components/Fieldset/index.js +2 -2
  188. package/dist/components/Fieldset/index.js.map +1 -1
  189. package/dist/components/Form/index.cjs +13 -13
  190. package/dist/components/Form/index.cjs.map +1 -1
  191. package/dist/components/Form/index.d.ts +5 -2
  192. package/dist/components/Form/index.d.ts.map +1 -1
  193. package/dist/components/Form/index.js +13 -13
  194. package/dist/components/Form/index.js.map +1 -1
  195. package/dist/components/Grid/Grid.module.scss.cjs +57 -57
  196. package/dist/components/Grid/Grid.module.scss.js +57 -57
  197. package/dist/components/Grid/index.cjs +7 -4
  198. package/dist/components/Grid/index.cjs.map +1 -1
  199. package/dist/components/Grid/index.d.ts +5 -3
  200. package/dist/components/Grid/index.d.ts.map +1 -1
  201. package/dist/components/Grid/index.js +7 -4
  202. package/dist/components/Grid/index.js.map +1 -1
  203. package/dist/components/Header/Header.module.scss.cjs +21 -21
  204. package/dist/components/Header/Header.module.scss.js +21 -21
  205. package/dist/components/Header/index.cjs +61 -23
  206. package/dist/components/Header/index.cjs.map +1 -1
  207. package/dist/components/Header/index.d.ts +27 -34
  208. package/dist/components/Header/index.d.ts.map +1 -1
  209. package/dist/components/Header/index.js +61 -23
  210. package/dist/components/Header/index.js.map +1 -1
  211. package/dist/components/Icon/index.cjs +11 -1
  212. package/dist/components/Icon/index.cjs.map +1 -1
  213. package/dist/components/Icon/index.d.ts +28 -9
  214. package/dist/components/Icon/index.d.ts.map +1 -1
  215. package/dist/components/Icon/index.js +11 -1
  216. package/dist/components/Icon/index.js.map +1 -1
  217. package/dist/components/Image/index.cjs +15 -4
  218. package/dist/components/Image/index.cjs.map +1 -1
  219. package/dist/components/Image/index.d.ts +7 -1
  220. package/dist/components/Image/index.d.ts.map +1 -1
  221. package/dist/components/Image/index.js +15 -4
  222. package/dist/components/Image/index.js.map +1 -1
  223. package/dist/components/Input/Input.module.scss.cjs +13 -13
  224. package/dist/components/Input/Input.module.scss.js +13 -13
  225. package/dist/components/Input/index.cjs +79 -31
  226. package/dist/components/Input/index.cjs.map +1 -1
  227. package/dist/components/Input/index.d.ts +17 -3
  228. package/dist/components/Input/index.d.ts.map +1 -1
  229. package/dist/components/Input/index.js +79 -31
  230. package/dist/components/Input/index.js.map +1 -1
  231. package/dist/components/Link/index.cjs +17 -0
  232. package/dist/components/Link/index.cjs.map +1 -1
  233. package/dist/components/Link/index.d.ts.map +1 -1
  234. package/dist/components/Link/index.js +17 -0
  235. package/dist/components/Link/index.js.map +1 -1
  236. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  237. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  238. package/dist/components/Listbox/index.cjs +10 -6
  239. package/dist/components/Listbox/index.cjs.map +1 -1
  240. package/dist/components/Listbox/index.d.ts +2 -2
  241. package/dist/components/Listbox/index.d.ts.map +1 -1
  242. package/dist/components/Listbox/index.js +10 -6
  243. package/dist/components/Listbox/index.js.map +1 -1
  244. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  245. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  246. package/dist/components/Markdown/index.d.ts +4 -2
  247. package/dist/components/Markdown/index.d.ts.map +1 -1
  248. package/dist/components/Menu/Menu.module.scss.cjs +13 -13
  249. package/dist/components/Menu/Menu.module.scss.js +13 -13
  250. package/dist/components/Menu/index.cjs +41 -16
  251. package/dist/components/Menu/index.cjs.map +1 -1
  252. package/dist/components/Menu/index.d.ts +24 -27
  253. package/dist/components/Menu/index.d.ts.map +1 -1
  254. package/dist/components/Menu/index.js +41 -16
  255. package/dist/components/Menu/index.js.map +1 -1
  256. package/dist/components/Message/Message.module.scss.cjs +18 -18
  257. package/dist/components/Message/Message.module.scss.js +18 -18
  258. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +28 -28
  259. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +28 -28
  260. package/dist/components/NavigationMenu/NavigationMenuContext.cjs.map +1 -1
  261. package/dist/components/NavigationMenu/NavigationMenuContext.d.ts +9 -0
  262. package/dist/components/NavigationMenu/NavigationMenuContext.d.ts.map +1 -1
  263. package/dist/components/NavigationMenu/NavigationMenuContext.js.map +1 -1
  264. package/dist/components/NavigationMenu/index.cjs +92 -21
  265. package/dist/components/NavigationMenu/index.cjs.map +1 -1
  266. package/dist/components/NavigationMenu/index.d.ts +5 -1
  267. package/dist/components/NavigationMenu/index.d.ts.map +1 -1
  268. package/dist/components/NavigationMenu/index.js +92 -21
  269. package/dist/components/NavigationMenu/index.js.map +1 -1
  270. package/dist/components/NavigationMenu/useNavigationMenu.cjs +2 -0
  271. package/dist/components/NavigationMenu/useNavigationMenu.cjs.map +1 -1
  272. package/dist/components/NavigationMenu/useNavigationMenu.d.ts +1 -0
  273. package/dist/components/NavigationMenu/useNavigationMenu.d.ts.map +1 -1
  274. package/dist/components/NavigationMenu/useNavigationMenu.js +2 -0
  275. package/dist/components/NavigationMenu/useNavigationMenu.js.map +1 -1
  276. package/dist/components/Pagination/index.cjs +37 -9
  277. package/dist/components/Pagination/index.cjs.map +1 -1
  278. package/dist/components/Pagination/index.d.ts +2 -3
  279. package/dist/components/Pagination/index.d.ts.map +1 -1
  280. package/dist/components/Pagination/index.js +37 -9
  281. package/dist/components/Pagination/index.js.map +1 -1
  282. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  283. package/dist/components/Popover/Popover.module.scss.js +10 -10
  284. package/dist/components/Popover/index.cjs +52 -10
  285. package/dist/components/Popover/index.cjs.map +1 -1
  286. package/dist/components/Popover/index.d.ts +22 -16
  287. package/dist/components/Popover/index.d.ts.map +1 -1
  288. package/dist/components/Popover/index.js +35 -10
  289. package/dist/components/Popover/index.js.map +1 -1
  290. package/dist/components/Progress/index.cjs +3 -1
  291. package/dist/components/Progress/index.cjs.map +1 -1
  292. package/dist/components/Progress/index.d.ts.map +1 -1
  293. package/dist/components/Progress/index.js +3 -1
  294. package/dist/components/Progress/index.js.map +1 -1
  295. package/dist/components/Prompt/Prompt.module.scss.cjs +14 -14
  296. package/dist/components/Prompt/Prompt.module.scss.js +14 -14
  297. package/dist/components/Prompt/index.cjs +14 -2
  298. package/dist/components/Prompt/index.cjs.map +1 -1
  299. package/dist/components/Prompt/index.d.ts +8 -5
  300. package/dist/components/Prompt/index.d.ts.map +1 -1
  301. package/dist/components/Prompt/index.js +14 -2
  302. package/dist/components/Prompt/index.js.map +1 -1
  303. package/dist/components/RadioGroup/index.cjs +14 -6
  304. package/dist/components/RadioGroup/index.cjs.map +1 -1
  305. package/dist/components/RadioGroup/index.d.ts +12 -2
  306. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  307. package/dist/components/RadioGroup/index.js +14 -6
  308. package/dist/components/RadioGroup/index.js.map +1 -1
  309. package/dist/components/Select/Select.module.scss.cjs +10 -10
  310. package/dist/components/Select/Select.module.scss.js +10 -10
  311. package/dist/components/Select/index.cjs +43 -29
  312. package/dist/components/Select/index.cjs.map +1 -1
  313. package/dist/components/Select/index.d.ts +12 -11
  314. package/dist/components/Select/index.d.ts.map +1 -1
  315. package/dist/components/Select/index.js +43 -29
  316. package/dist/components/Select/index.js.map +1 -1
  317. package/dist/components/Sidebar/Sidebar.module.scss.cjs +42 -42
  318. package/dist/components/Sidebar/Sidebar.module.scss.js +42 -42
  319. package/dist/components/Sidebar/index.cjs +73 -26
  320. package/dist/components/Sidebar/index.cjs.map +1 -1
  321. package/dist/components/Sidebar/index.d.ts +23 -35
  322. package/dist/components/Sidebar/index.d.ts.map +1 -1
  323. package/dist/components/Sidebar/index.js +73 -26
  324. package/dist/components/Sidebar/index.js.map +1 -1
  325. package/dist/components/Skeleton/index.cjs +6 -3
  326. package/dist/components/Skeleton/index.cjs.map +1 -1
  327. package/dist/components/Skeleton/index.d.ts +3 -7
  328. package/dist/components/Skeleton/index.d.ts.map +1 -1
  329. package/dist/components/Skeleton/index.js +6 -3
  330. package/dist/components/Skeleton/index.js.map +1 -1
  331. package/dist/components/Slider/Slider.module.scss.cjs +13 -10
  332. package/dist/components/Slider/Slider.module.scss.cjs.map +1 -1
  333. package/dist/components/Slider/Slider.module.scss.js +13 -10
  334. package/dist/components/Slider/Slider.module.scss.js.map +1 -1
  335. package/dist/components/Slider/index.cjs +33 -1
  336. package/dist/components/Slider/index.cjs.map +1 -1
  337. package/dist/components/Slider/index.d.ts +2 -0
  338. package/dist/components/Slider/index.d.ts.map +1 -1
  339. package/dist/components/Slider/index.js +33 -1
  340. package/dist/components/Slider/index.js.map +1 -1
  341. package/dist/components/Stack/index.cjs +12 -2
  342. package/dist/components/Stack/index.cjs.map +1 -1
  343. package/dist/components/Stack/index.d.ts +3 -2
  344. package/dist/components/Stack/index.d.ts.map +1 -1
  345. package/dist/components/Stack/index.js +12 -2
  346. package/dist/components/Stack/index.js.map +1 -1
  347. package/dist/components/Table/Table.module.scss.cjs +16 -16
  348. package/dist/components/Table/Table.module.scss.js +16 -16
  349. package/dist/components/Table/index.d.ts +10 -4
  350. package/dist/components/Table/index.d.ts.map +1 -1
  351. package/dist/components/TableOfContents/index.cjs +8 -5
  352. package/dist/components/TableOfContents/index.cjs.map +1 -1
  353. package/dist/components/TableOfContents/index.d.ts +2 -2
  354. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  355. package/dist/components/TableOfContents/index.js +8 -5
  356. package/dist/components/TableOfContents/index.js.map +1 -1
  357. package/dist/components/Tabs/Tabs.module.scss.cjs +9 -9
  358. package/dist/components/Tabs/Tabs.module.scss.js +9 -9
  359. package/dist/components/Tabs/index.cjs +9 -6
  360. package/dist/components/Tabs/index.cjs.map +1 -1
  361. package/dist/components/Tabs/index.d.ts +4 -1
  362. package/dist/components/Tabs/index.d.ts.map +1 -1
  363. package/dist/components/Tabs/index.js +9 -6
  364. package/dist/components/Tabs/index.js.map +1 -1
  365. package/dist/components/Textarea/index.cjs +61 -43
  366. package/dist/components/Textarea/index.cjs.map +1 -1
  367. package/dist/components/Textarea/index.d.ts +9 -1
  368. package/dist/components/Textarea/index.d.ts.map +1 -1
  369. package/dist/components/Textarea/index.js +61 -43
  370. package/dist/components/Textarea/index.js.map +1 -1
  371. package/dist/components/Theme/index.cjs +3 -1
  372. package/dist/components/Theme/index.cjs.map +1 -1
  373. package/dist/components/Theme/index.d.ts +2 -4
  374. package/dist/components/Theme/index.d.ts.map +1 -1
  375. package/dist/components/Theme/index.js +3 -1
  376. package/dist/components/Theme/index.js.map +1 -1
  377. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +22 -22
  378. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +22 -22
  379. package/dist/components/Toast/Toast.module.scss.cjs +20 -20
  380. package/dist/components/Toast/Toast.module.scss.js +20 -20
  381. package/dist/components/Toast/index.cjs +15 -14
  382. package/dist/components/Toast/index.cjs.map +1 -1
  383. package/dist/components/Toast/index.d.ts +9 -5
  384. package/dist/components/Toast/index.d.ts.map +1 -1
  385. package/dist/components/Toast/index.js +15 -14
  386. package/dist/components/Toast/index.js.map +1 -1
  387. package/dist/components/Toggle/Toggle.module.scss.cjs +11 -11
  388. package/dist/components/Toggle/Toggle.module.scss.js +11 -11
  389. package/dist/components/Toggle/index.cjs +1 -1
  390. package/dist/components/Toggle/index.cjs.map +1 -1
  391. package/dist/components/Toggle/index.js +1 -1
  392. package/dist/components/Toggle/index.js.map +1 -1
  393. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +17 -17
  394. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +17 -17
  395. package/dist/components/ToggleGroup/index.cjs +27 -8
  396. package/dist/components/ToggleGroup/index.cjs.map +1 -1
  397. package/dist/components/ToggleGroup/index.d.ts +8 -3
  398. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  399. package/dist/components/ToggleGroup/index.js +27 -8
  400. package/dist/components/ToggleGroup/index.js.map +1 -1
  401. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  402. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  403. package/dist/components/Tooltip/index.cjs +32 -10
  404. package/dist/components/Tooltip/index.cjs.map +1 -1
  405. package/dist/components/Tooltip/index.d.ts +3 -1
  406. package/dist/components/Tooltip/index.d.ts.map +1 -1
  407. package/dist/components/Tooltip/index.js +32 -10
  408. package/dist/components/Tooltip/index.js.map +1 -1
  409. package/dist/components/VisuallyHidden/index.cjs +10 -2
  410. package/dist/components/VisuallyHidden/index.cjs.map +1 -1
  411. package/dist/components/VisuallyHidden/index.d.ts +1 -1
  412. package/dist/components/VisuallyHidden/index.d.ts.map +1 -1
  413. package/dist/components/VisuallyHidden/index.js +10 -2
  414. package/dist/components/VisuallyHidden/index.js.map +1 -1
  415. package/dist/datepicker.cjs +32 -11
  416. package/dist/datepicker.cjs.map +1 -1
  417. package/dist/datepicker.js +32 -11
  418. package/dist/datepicker.js.map +1 -1
  419. package/dist/index.cjs.map +1 -1
  420. package/dist/index.d.ts +2 -1
  421. package/dist/index.d.ts.map +1 -1
  422. package/dist/index.js.map +1 -1
  423. package/dist/markdown.cjs +5 -5
  424. package/dist/markdown.cjs.map +1 -1
  425. package/dist/markdown.js +5 -5
  426. package/dist/markdown.js.map +1 -1
  427. package/dist/table.cjs +19 -3
  428. package/dist/table.cjs.map +1 -1
  429. package/dist/table.js +19 -3
  430. package/dist/table.js.map +1 -1
  431. package/fragments.json +1 -1
  432. package/package.json +2 -2
  433. package/src/blocks/AccountSettings.block.ts +1 -1
  434. package/src/blocks/ActivityFeed.block.ts +1 -1
  435. package/src/blocks/ActivityFeedSkeleton.block.ts +1 -1
  436. package/src/blocks/BlogEditor.block.ts +1 -1
  437. package/src/blocks/ChatInterface.block.ts +1 -1
  438. package/src/blocks/ChatMessages.block.ts +1 -1
  439. package/src/blocks/CheckoutForm.block.ts +1 -1
  440. package/src/blocks/CommandPalette.block.ts +1 -1
  441. package/src/blocks/ContactForm.block.ts +1 -1
  442. package/src/blocks/DashboardLayout.block.ts +1 -1
  443. package/src/blocks/DashboardPage.block.ts +1 -1
  444. package/src/blocks/DashboardSkeleton.block.ts +1 -1
  445. package/src/blocks/DataTable.block.ts +1 -1
  446. package/src/blocks/EmptyState.block.ts +1 -1
  447. package/src/blocks/FAQSection.block.ts +1 -1
  448. package/src/blocks/FeatureGrid.block.ts +1 -1
  449. package/src/blocks/HeroSection.block.ts +1 -1
  450. package/src/blocks/LoginForm.block.ts +1 -1
  451. package/src/blocks/NavigationHeader.block.ts +1 -1
  452. package/src/blocks/PaginatedTable.block.ts +1 -1
  453. package/src/blocks/PricingComparison.block.ts +1 -1
  454. package/src/blocks/ProductCard.block.ts +1 -1
  455. package/src/blocks/RegistrationForm.block.ts +1 -1
  456. package/src/blocks/SettingsDrawer.block.ts +1 -1
  457. package/src/blocks/SettingsPanel.block.ts +1 -1
  458. package/src/blocks/ShoppingCart.block.ts +1 -1
  459. package/src/blocks/StatsCard.block.ts +1 -1
  460. package/src/blocks/StatsCardSkeleton.block.ts +1 -1
  461. package/src/blocks/TableSkeleton.block.ts +1 -1
  462. package/src/blocks/ThinkingStates.block.ts +1 -1
  463. package/src/components/Accordion/Accordion.fragment.tsx +7 -7
  464. package/src/components/Accordion/Accordion.module.scss +2 -2
  465. package/src/components/Accordion/Accordion.test.tsx +41 -5
  466. package/src/components/Accordion/index.tsx +41 -14
  467. package/src/components/Alert/Alert.fragment.tsx +5 -1
  468. package/src/components/Alert/Alert.module.scss +1 -1
  469. package/src/components/Alert/Alert.test.tsx +25 -0
  470. package/src/components/Alert/index.tsx +49 -30
  471. package/src/components/AppShell/AppShell.fragment.tsx +1 -1
  472. package/src/components/AppShell/AppShell.module.scss +5 -5
  473. package/src/components/AppShell/AppShell.test.tsx +12 -0
  474. package/src/components/AppShell/index.tsx +2 -0
  475. package/src/components/Avatar/Avatar.fragment.tsx +7 -1
  476. package/src/components/Avatar/Avatar.test.tsx +24 -2
  477. package/src/components/Avatar/index.tsx +13 -1
  478. package/src/components/Badge/Badge.fragment.tsx +16 -1
  479. package/src/components/Badge/Badge.test.tsx +8 -1
  480. package/src/components/Badge/index.tsx +7 -2
  481. package/src/components/BentoGrid/BentoGrid.fragment.tsx +3 -1
  482. package/src/components/BentoGrid/BentoGrid.module.scss +52 -16
  483. package/src/components/BentoGrid/BentoGrid.test.tsx +20 -0
  484. package/src/components/BentoGrid/index.tsx +9 -12
  485. package/src/components/Box/Box.fragment.tsx +3 -1
  486. package/src/components/Box/Box.test.tsx +14 -0
  487. package/src/components/Box/index.tsx +8 -2
  488. package/src/components/Breadcrumbs/Breadcrumbs.fragment.tsx +19 -1
  489. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +13 -0
  490. package/src/components/Breadcrumbs/index.tsx +5 -1
  491. package/src/components/Button/Button.fragment.tsx +28 -6
  492. package/src/components/Button/Button.module.scss +3 -3
  493. package/src/components/Button/Button.test.tsx +11 -0
  494. package/src/components/Button/index.tsx +16 -6
  495. package/src/components/ButtonGroup/ButtonGroup.fragment.tsx +4 -2
  496. package/src/components/ButtonGroup/ButtonGroup.test.tsx +10 -0
  497. package/src/components/ButtonGroup/index.tsx +3 -3
  498. package/src/components/Card/Card.fragment.tsx +24 -9
  499. package/src/components/Card/Card.module.scss +8 -8
  500. package/src/components/Card/Card.test.tsx +4 -5
  501. package/src/components/Card/index.tsx +8 -38
  502. package/src/components/Chart/Chart.fragment.tsx +5 -3
  503. package/src/components/Chart/Chart.module.scss +1 -1
  504. package/src/components/Chart/index.tsx +12 -10
  505. package/src/components/Checkbox/Checkbox.fragment.tsx +27 -1
  506. package/src/components/Checkbox/Checkbox.module.scss +3 -3
  507. package/src/components/Checkbox/index.tsx +16 -3
  508. package/src/components/Chip/Chip.fragment.tsx +20 -3
  509. package/src/components/Chip/Chip.test.tsx +28 -0
  510. package/src/components/Chip/index.tsx +14 -6
  511. package/src/components/CodeBlock/CodeBlock.fragment.tsx +3 -1
  512. package/src/components/CodeBlock/CodeBlock.module.scss +9 -9
  513. package/src/components/CodeBlock/CodeBlock.test.tsx +21 -0
  514. package/src/components/CodeBlock/index.tsx +23 -9
  515. package/src/components/Collapsible/Collapsible.fragment.tsx +1 -1
  516. package/src/components/Collapsible/Collapsible.module.scss +1 -1
  517. package/src/components/Collapsible/Collapsible.test.tsx +41 -0
  518. package/src/components/Collapsible/index.tsx +53 -16
  519. package/src/components/ColorPicker/ColorPicker.fragment.tsx +1 -1
  520. package/src/components/Combobox/Combobox.fragment.tsx +63 -9
  521. package/src/components/Combobox/Combobox.module.scss +4 -7
  522. package/src/components/Combobox/Combobox.test.tsx +79 -3
  523. package/src/components/Combobox/index.tsx +140 -51
  524. package/src/components/Command/Command.fragment.tsx +3 -3
  525. package/src/components/Command/Command.module.scss +5 -5
  526. package/src/components/Command/Command.test.tsx +110 -0
  527. package/src/components/Command/index.tsx +66 -20
  528. package/src/components/ConversationList/ConversationList.fragment.tsx +4 -3
  529. package/src/components/ConversationList/ConversationList.module.scss +5 -5
  530. package/src/components/ConversationList/ConversationList.test.tsx +21 -0
  531. package/src/components/ConversationList/index.tsx +8 -4
  532. package/src/components/DataTable/DataTable.fragment.tsx +12 -2
  533. package/src/components/DataTable/DataTable.module.scss +3 -3
  534. package/src/components/DataTable/DataTable.test.tsx +34 -4
  535. package/src/components/DataTable/index.tsx +44 -6
  536. package/src/components/DatePicker/DatePicker.fragment.tsx +3 -1
  537. package/src/components/DatePicker/DatePicker.module.scss +1 -1
  538. package/src/components/DatePicker/DatePicker.test.tsx +96 -0
  539. package/src/components/DatePicker/index.tsx +38 -16
  540. package/src/components/Dialog/Dialog.fragment.tsx +28 -1
  541. package/src/components/Dialog/Dialog.module.scss +6 -6
  542. package/src/components/Dialog/Dialog.test.tsx +23 -0
  543. package/src/components/Dialog/index.tsx +38 -21
  544. package/src/components/Drawer/Drawer.fragment.tsx +4 -1
  545. package/src/components/Drawer/Drawer.module.scss +3 -3
  546. package/src/components/Drawer/Drawer.test.tsx +35 -0
  547. package/src/components/Drawer/index.tsx +29 -18
  548. package/src/components/Editor/Editor.fragment.tsx +10 -3
  549. package/src/components/Editor/Editor.module.scss +4 -4
  550. package/src/components/Editor/Editor.test.tsx +68 -1
  551. package/src/components/Editor/index.tsx +60 -9
  552. package/src/components/EmptyState/EmptyState.fragment.tsx +3 -1
  553. package/src/components/EmptyState/EmptyState.module.scss +3 -3
  554. package/src/components/EmptyState/EmptyState.test.tsx +18 -0
  555. package/src/components/EmptyState/index.tsx +16 -16
  556. package/src/components/Field/Field.fragment.tsx +1 -1
  557. package/src/components/Fieldset/Fieldset.fragment.tsx +3 -1
  558. package/src/components/Fieldset/Fieldset.test.tsx +14 -0
  559. package/src/components/Fieldset/index.tsx +3 -4
  560. package/src/components/Form/Form.fragment.tsx +12 -7
  561. package/src/components/Form/index.tsx +13 -17
  562. package/src/components/Grid/Grid.fragment.tsx +4 -3
  563. package/src/components/Grid/Grid.module.scss +3 -3
  564. package/src/components/Grid/index.tsx +11 -6
  565. package/src/components/Header/Header.fragment.tsx +31 -1
  566. package/src/components/Header/Header.module.scss +6 -6
  567. package/src/components/Header/Header.test.tsx +95 -1
  568. package/src/components/Header/index.tsx +95 -46
  569. package/src/components/Icon/Icon.fragment.tsx +21 -8
  570. package/src/components/Icon/Icon.test.tsx +27 -3
  571. package/src/components/Icon/index.tsx +39 -15
  572. package/src/components/Image/Image.fragment.tsx +15 -1
  573. package/src/components/Image/Image.test.tsx +32 -1
  574. package/src/components/Image/index.tsx +24 -4
  575. package/src/components/Input/Input.fragment.tsx +49 -1
  576. package/src/components/Input/Input.module.scss +4 -2
  577. package/src/components/Input/Input.test.tsx +3 -3
  578. package/src/components/Input/index.tsx +103 -37
  579. package/src/components/Link/Link.fragment.tsx +7 -6
  580. package/src/components/Link/Link.test.tsx +17 -1
  581. package/src/components/Link/index.tsx +22 -0
  582. package/src/components/List/List.fragment.tsx +1 -1
  583. package/src/components/Listbox/Listbox.fragment.tsx +3 -3
  584. package/src/components/Listbox/Listbox.module.scss +4 -4
  585. package/src/components/Listbox/Listbox.test.tsx +14 -0
  586. package/src/components/Listbox/index.tsx +12 -2
  587. package/src/components/Loading/Loading.fragment.tsx +1 -1
  588. package/src/components/Markdown/Markdown.fragment.tsx +5 -3
  589. package/src/components/Markdown/Markdown.module.scss +5 -5
  590. package/src/components/Markdown/Markdown.test.tsx +6 -0
  591. package/src/components/Markdown/index.tsx +12 -9
  592. package/src/components/Menu/Menu.fragment.tsx +19 -1
  593. package/src/components/Menu/Menu.module.scss +11 -11
  594. package/src/components/Menu/index.tsx +50 -33
  595. package/src/components/Message/Message.fragment.tsx +1 -1
  596. package/src/components/Message/Message.module.scss +3 -3
  597. package/src/components/NavigationMenu/NavigationMenu.fragment.tsx +10 -2
  598. package/src/components/NavigationMenu/NavigationMenu.module.scss +7 -7
  599. package/src/components/NavigationMenu/NavigationMenu.test.tsx +88 -4
  600. package/src/components/NavigationMenu/NavigationMenuContext.ts +17 -0
  601. package/src/components/NavigationMenu/index.tsx +119 -20
  602. package/src/components/NavigationMenu/useNavigationMenu.ts +4 -0
  603. package/src/components/Pagination/Pagination.fragment.tsx +4 -1
  604. package/src/components/Pagination/Pagination.test.tsx +39 -0
  605. package/src/components/Pagination/index.tsx +36 -10
  606. package/src/components/Popover/Popover.fragment.tsx +18 -1
  607. package/src/components/Popover/Popover.module.scss +13 -13
  608. package/src/components/Popover/Popover.test.tsx +23 -0
  609. package/src/components/Popover/index.tsx +44 -22
  610. package/src/components/Progress/Progress.fragment.tsx +3 -1
  611. package/src/components/Progress/Progress.test.tsx +8 -0
  612. package/src/components/Progress/index.tsx +9 -1
  613. package/src/components/Prompt/Prompt.fragment.tsx +4 -1
  614. package/src/components/Prompt/Prompt.module.scss +3 -3
  615. package/src/components/Prompt/Prompt.test.tsx +19 -0
  616. package/src/components/Prompt/index.tsx +24 -6
  617. package/src/components/RadioGroup/RadioGroup.fragment.tsx +31 -1
  618. package/src/components/RadioGroup/index.tsx +22 -3
  619. package/src/components/ScrollArea/ScrollArea.fragment.tsx +1 -1
  620. package/src/components/Select/Select.fragment.tsx +30 -3
  621. package/src/components/Select/Select.module.scss +3 -3
  622. package/src/components/Select/Select.test.tsx +41 -0
  623. package/src/components/Select/index.tsx +55 -44
  624. package/src/components/Separator/Separator.fragment.tsx +1 -1
  625. package/src/components/Sidebar/Sidebar.fragment.tsx +3 -1
  626. package/src/components/Sidebar/Sidebar.module.scss +20 -20
  627. package/src/components/Sidebar/Sidebar.test.tsx +108 -4
  628. package/src/components/Sidebar/index.tsx +93 -51
  629. package/src/components/Skeleton/Skeleton.fragment.tsx +3 -1
  630. package/src/components/Skeleton/Skeleton.test.tsx +12 -0
  631. package/src/components/Skeleton/index.tsx +6 -7
  632. package/src/components/Slider/Slider.fragment.tsx +21 -1
  633. package/src/components/Slider/Slider.module.scss +31 -0
  634. package/src/components/Slider/Slider.test.tsx +16 -0
  635. package/src/components/Slider/index.tsx +40 -1
  636. package/src/components/Stack/Stack.fragment.tsx +3 -1
  637. package/src/components/Stack/index.tsx +13 -6
  638. package/src/components/Table/Table.fragment.tsx +43 -2
  639. package/src/components/Table/Table.module.scss +2 -2
  640. package/src/components/Table/index.tsx +23 -5
  641. package/src/components/TableOfContents/TableOfContents.fragment.tsx +4 -2
  642. package/src/components/TableOfContents/TableOfContents.test.tsx +34 -9
  643. package/src/components/TableOfContents/index.tsx +9 -5
  644. package/src/components/Tabs/Tabs.fragment.tsx +33 -8
  645. package/src/components/Tabs/Tabs.module.scss +8 -8
  646. package/src/components/Tabs/index.tsx +22 -14
  647. package/src/components/Text/Text.fragment.tsx +1 -1
  648. package/src/components/Textarea/Textarea.fragment.tsx +27 -1
  649. package/src/components/Textarea/index.tsx +39 -14
  650. package/src/components/Theme/Theme.fragment.tsx +3 -1
  651. package/src/components/Theme/Theme.test.tsx +11 -0
  652. package/src/components/Theme/index.tsx +3 -3
  653. package/src/components/ThinkingIndicator/ThinkingIndicator.fragment.tsx +1 -1
  654. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +1 -1
  655. package/src/components/Toast/Toast.fragment.tsx +6 -3
  656. package/src/components/Toast/Toast.module.scss +8 -6
  657. package/src/components/Toast/index.tsx +24 -20
  658. package/src/components/Toggle/Toggle.fragment.tsx +1 -1
  659. package/src/components/Toggle/Toggle.module.scss +61 -21
  660. package/src/components/Toggle/index.tsx +3 -3
  661. package/src/components/ToggleGroup/ToggleGroup.fragment.tsx +33 -8
  662. package/src/components/ToggleGroup/ToggleGroup.module.scss +3 -3
  663. package/src/components/ToggleGroup/index.tsx +29 -9
  664. package/src/components/Tooltip/Tooltip.fragment.tsx +16 -1
  665. package/src/components/Tooltip/Tooltip.module.scss +1 -1
  666. package/src/components/Tooltip/Tooltip.test.tsx +17 -0
  667. package/src/components/Tooltip/index.tsx +60 -31
  668. package/src/components/VisuallyHidden/VisuallyHidden.fragment.tsx +3 -1
  669. package/src/components/VisuallyHidden/VisuallyHidden.test.tsx +12 -0
  670. package/src/components/VisuallyHidden/index.tsx +7 -3
  671. package/src/index.ts +3 -2
  672. package/src/tokens/_computed.scss +1 -19
  673. package/src/tokens/_density.scss +0 -42
  674. package/src/tokens/_mixins.scss +4 -0
  675. package/src/tokens/_variables.scss +12 -114
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/Checkbox/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox';\nimport styles from './Checkbox.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\n/**\n * Checkbox for boolean or indeterminate selections in forms.\n * @see https://usefragments.com/components/checkbox\n */\nexport interface CheckboxProps extends Omit<React.HTMLAttributes<HTMLLabelElement>, 'onChange' | 'defaultChecked'> {\n /** Whether the checkbox is checked */\n checked?: boolean;\n /** Default checked state (uncontrolled) */\n defaultChecked?: boolean;\n /** Callback when checked state changes */\n onCheckedChange?: (checked: boolean) => void;\n /** Whether the checkbox is in an indeterminate state */\n indeterminate?: boolean;\n /** Whether the checkbox is disabled */\n disabled?: boolean;\n /** Whether the checkbox is required */\n required?: boolean;\n /** Size variant.\n * @default \"md\" */\n size?: 'sm' | 'md' | 'lg';\n /** Label text */\n label?: string;\n /** Description text below the label */\n description?: string;\n /** Name attribute for form submission */\n name?: string;\n /** Value attribute for form submission */\n value?: string;\n /** ID for the checkbox input */\n id?: string;\n /** Accessible label for icon-only mode */\n 'aria-label'?: string;\n /** Accessible labelled-by relationship for icon-only mode */\n 'aria-labelledby'?: string;\n /** Accessible described-by relationship */\n 'aria-describedby'?: string;\n}\n\nfunction mergeAriaIds(...ids: Array<string | undefined>): string | undefined {\n const merged = ids.filter(Boolean).join(' ').trim();\n return merged.length > 0 ? merged : undefined;\n}\n\n// ============================================\n// Icons\n// ============================================\n\nfunction CheckIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\nfunction MinusIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n );\n}\n\n// ============================================\n// Component\n// ============================================\n\nconst CheckboxRoot = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n function Checkbox(\n {\n checked,\n defaultChecked,\n onCheckedChange,\n indeterminate = false,\n disabled = false,\n required = false,\n size = 'md',\n label,\n description,\n name,\n value,\n className,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...htmlProps\n },\n ref\n ) {\n const generatedId = React.useId();\n const checkboxId = id ?? `checkbox-${generatedId}`;\n const labelId = label ? `${checkboxId}-label` : undefined;\n const descriptionId = description ? `${checkboxId}-description` : undefined;\n\n const checkboxClasses = [\n styles.checkbox,\n size === 'sm' && styles.sm,\n size === 'lg' && styles.lg,\n ].filter(Boolean).join(' ');\n\n const labelClasses = [\n styles.label,\n size === 'sm' && styles.labelSm,\n size === 'lg' && styles.labelLg,\n ].filter(Boolean).join(' ');\n\n const wrapperClasses = [styles.wrapper, className].filter(Boolean).join(' ');\n\n // If no label/description, render just the checkbox\n if (!label && !description) {\n return (\n <BaseCheckbox.Root\n ref={ref}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n indeterminate={indeterminate}\n disabled={disabled}\n required={required}\n name={name}\n value={value}\n id={checkboxId}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n className={[checkboxClasses, className].filter(Boolean).join(' ')}\n >\n <BaseCheckbox.Indicator className={styles.indicator} keepMounted>\n {indeterminate ? <MinusIcon /> : <CheckIcon />}\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n );\n }\n\n return (\n <label\n {...htmlProps}\n className={wrapperClasses}\n data-disabled={disabled || undefined}\n data-has-description={description ? true : undefined}\n >\n <BaseCheckbox.Root\n ref={ref}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n indeterminate={indeterminate}\n disabled={disabled}\n required={required}\n name={name}\n value={value}\n id={checkboxId}\n aria-label={ariaLabel}\n aria-labelledby={mergeAriaIds(ariaLabelledBy, labelId)}\n aria-describedby={mergeAriaIds(ariaDescribedBy, descriptionId)}\n className={checkboxClasses}\n >\n <BaseCheckbox.Indicator className={styles.indicator} keepMounted>\n {indeterminate ? <MinusIcon /> : <CheckIcon />}\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n <div className={styles.content}>\n <span id={labelId} className={labelClasses}>{label}</span>\n {description && (\n <span id={descriptionId} className={styles.description}>{description}</span>\n )}\n </div>\n </label>\n );\n }\n);\n\nexport const Checkbox = Object.assign(CheckboxRoot, {\n Root: CheckboxRoot,\n});\n"],"names":["jsx","React","Checkbox","styles","BaseCheckbox","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Checkbox/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox';\nimport styles from './Checkbox.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\n/**\n * Checkbox for boolean or indeterminate selections in forms.\n * @see https://usefragments.com/components/checkbox\n */\nexport interface CheckboxProps extends Omit<React.HTMLAttributes<HTMLLabelElement>, 'onChange' | 'defaultChecked'> {\n /** Whether the checkbox is checked */\n checked?: boolean;\n /** Default checked state (uncontrolled) */\n defaultChecked?: boolean;\n /** Callback when checked state changes */\n onCheckedChange?: (checked: boolean) => void;\n /** Alias for onCheckedChange */\n onChange?: (checked: boolean) => void;\n /** Whether the checkbox is in an indeterminate state */\n indeterminate?: boolean;\n /** Whether the checkbox is disabled */\n disabled?: boolean;\n /** Whether the checkbox is required */\n required?: boolean;\n /** Size variant.\n * @default \"md\" */\n size?: 'sm' | 'md' | 'lg';\n /** Label text */\n label?: string;\n /** Description text below the label */\n description?: string;\n /** Name attribute for form submission */\n name?: string;\n /** Value attribute for form submission */\n value?: string;\n /** ID for the checkbox input */\n id?: string;\n /** Class applied directly to the checkbox control element */\n controlClassName?: string;\n /** Class applied to the label/description content wrapper */\n contentClassName?: string;\n /** Accessible label for icon-only mode */\n 'aria-label'?: string;\n /** Accessible labelled-by relationship for icon-only mode */\n 'aria-labelledby'?: string;\n /** Accessible described-by relationship */\n 'aria-describedby'?: string;\n}\n\nfunction mergeAriaIds(...ids: Array<string | undefined>): string | undefined {\n const merged = ids.filter(Boolean).join(' ').trim();\n return merged.length > 0 ? merged : undefined;\n}\n\n// ============================================\n// Icons\n// ============================================\n\nfunction CheckIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\nfunction MinusIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n );\n}\n\n// ============================================\n// Component\n// ============================================\n\nconst CheckboxRoot = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n function Checkbox(\n {\n checked,\n defaultChecked,\n onCheckedChange,\n onChange,\n indeterminate = false,\n disabled = false,\n required = false,\n size = 'md',\n label,\n description,\n name,\n value,\n className,\n controlClassName,\n contentClassName,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...htmlProps\n },\n ref\n ) {\n const generatedId = React.useId();\n const checkboxId = id ?? `checkbox-${generatedId}`;\n const labelId = label ? `${checkboxId}-label` : undefined;\n const descriptionId = description ? `${checkboxId}-description` : undefined;\n\n const checkboxClasses = [\n styles.checkbox,\n size === 'sm' && styles.sm,\n size === 'lg' && styles.lg,\n controlClassName,\n ].filter(Boolean).join(' ');\n\n const labelClasses = [\n styles.label,\n size === 'sm' && styles.labelSm,\n size === 'lg' && styles.labelLg,\n ].filter(Boolean).join(' ');\n\n const wrapperClasses = [styles.wrapper, className].filter(Boolean).join(' ');\n const handleCheckedChange = onChange ?? onCheckedChange;\n\n // If no label/description, render just the checkbox\n if (!label && !description) {\n const iconOnlyHtmlProps = htmlProps as unknown as Record<string, unknown>;\n return (\n <BaseCheckbox.Root\n {...iconOnlyHtmlProps}\n ref={ref}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={handleCheckedChange}\n indeterminate={indeterminate}\n disabled={disabled}\n required={required}\n name={name}\n value={value}\n id={checkboxId}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n className={[checkboxClasses, className].filter(Boolean).join(' ')}\n >\n <BaseCheckbox.Indicator className={styles.indicator} keepMounted>\n {indeterminate ? <MinusIcon /> : <CheckIcon />}\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n );\n }\n\n return (\n <label\n {...htmlProps}\n className={wrapperClasses}\n data-disabled={disabled || undefined}\n data-has-description={description ? true : undefined}\n >\n <BaseCheckbox.Root\n ref={ref}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={handleCheckedChange}\n indeterminate={indeterminate}\n disabled={disabled}\n required={required}\n name={name}\n value={value}\n id={checkboxId}\n aria-label={ariaLabel}\n aria-labelledby={mergeAriaIds(ariaLabelledBy, labelId)}\n aria-describedby={mergeAriaIds(ariaDescribedBy, descriptionId)}\n className={checkboxClasses}\n >\n <BaseCheckbox.Indicator className={styles.indicator} keepMounted>\n {indeterminate ? <MinusIcon /> : <CheckIcon />}\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n <div className={[styles.content, contentClassName].filter(Boolean).join(' ')}>\n <span id={labelId} className={labelClasses}>{label}</span>\n {description && (\n <span id={descriptionId} className={styles.description}>{description}</span>\n )}\n </div>\n </label>\n );\n }\n);\n\nexport const Checkbox = Object.assign(CheckboxRoot, {\n Root: CheckboxRoot,\n});\n"],"names":["jsx","React","Checkbox","styles","BaseCheckbox","jsxs"],"mappings":"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"}
@@ -10,6 +10,8 @@ export interface CheckboxProps extends Omit<React.HTMLAttributes<HTMLLabelElemen
10
10
  defaultChecked?: boolean;
11
11
  /** Callback when checked state changes */
12
12
  onCheckedChange?: (checked: boolean) => void;
13
+ /** Alias for onCheckedChange */
14
+ onChange?: (checked: boolean) => void;
13
15
  /** Whether the checkbox is in an indeterminate state */
14
16
  indeterminate?: boolean;
15
17
  /** Whether the checkbox is disabled */
@@ -29,6 +31,10 @@ export interface CheckboxProps extends Omit<React.HTMLAttributes<HTMLLabelElemen
29
31
  value?: string;
30
32
  /** ID for the checkbox input */
31
33
  id?: string;
34
+ /** Class applied directly to the checkbox control element */
35
+ controlClassName?: string;
36
+ /** Class applied to the label/description content wrapper */
37
+ contentClassName?: string;
32
38
  /** Accessible label for icon-only mode */
33
39
  'aria-label'?: string;
34
40
  /** Accessible labelled-by relationship for icon-only mode */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B;;;GAGG;AACH,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,UAAU,GAAG,gBAAgB,CAAC;IAChH,sCAAsC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0CAA0C;IAC1C,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,wDAAwD;IACxD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;uBACmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AA2JD,eAAO,MAAM,QAAQ;;CAEnB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B;;;GAGG;AACH,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,UAAU,GAAG,gBAAgB,CAAC;IAChH,sCAAsC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0CAA0C;IAC1C,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,gCAAgC;IAChC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,wDAAwD;IACxD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;uBACmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAkKD,eAAO,MAAM,QAAQ;;CAEnB,CAAC"}
@@ -43,6 +43,7 @@ const CheckboxRoot = React.forwardRef(
43
43
  checked,
44
44
  defaultChecked,
45
45
  onCheckedChange,
46
+ onChange,
46
47
  indeterminate = false,
47
48
  disabled = false,
48
49
  required = false,
@@ -52,6 +53,8 @@ const CheckboxRoot = React.forwardRef(
52
53
  name,
53
54
  value,
54
55
  className,
56
+ controlClassName,
57
+ contentClassName,
55
58
  id,
56
59
  "aria-label": ariaLabel,
57
60
  "aria-labelledby": ariaLabelledBy,
@@ -65,7 +68,8 @@ const CheckboxRoot = React.forwardRef(
65
68
  const checkboxClasses = [
66
69
  styles.checkbox,
67
70
  size === "sm" && styles.sm,
68
- size === "lg" && styles.lg
71
+ size === "lg" && styles.lg,
72
+ controlClassName
69
73
  ].filter(Boolean).join(" ");
70
74
  const labelClasses = [
71
75
  styles.label,
@@ -73,14 +77,17 @@ const CheckboxRoot = React.forwardRef(
73
77
  size === "lg" && styles.labelLg
74
78
  ].filter(Boolean).join(" ");
75
79
  const wrapperClasses = [styles.wrapper, className].filter(Boolean).join(" ");
80
+ const handleCheckedChange = onChange ?? onCheckedChange;
76
81
  if (!label && !description) {
82
+ const iconOnlyHtmlProps = htmlProps;
77
83
  return /* @__PURE__ */ jsx(
78
84
  Checkbox$1.Root,
79
85
  {
86
+ ...iconOnlyHtmlProps,
80
87
  ref,
81
88
  checked,
82
89
  defaultChecked,
83
- onCheckedChange,
90
+ onCheckedChange: handleCheckedChange,
84
91
  indeterminate,
85
92
  disabled,
86
93
  required,
@@ -109,7 +116,7 @@ const CheckboxRoot = React.forwardRef(
109
116
  ref,
110
117
  checked,
111
118
  defaultChecked,
112
- onCheckedChange,
119
+ onCheckedChange: handleCheckedChange,
113
120
  indeterminate,
114
121
  disabled,
115
122
  required,
@@ -123,7 +130,7 @@ const CheckboxRoot = React.forwardRef(
123
130
  children: /* @__PURE__ */ jsx(Checkbox$1.Indicator, { className: styles.indicator, keepMounted: true, children: indeterminate ? /* @__PURE__ */ jsx(MinusIcon, {}) : /* @__PURE__ */ jsx(CheckIcon, {}) })
124
131
  }
125
132
  ),
126
- /* @__PURE__ */ jsxs("div", { className: styles.content, children: [
133
+ /* @__PURE__ */ jsxs("div", { className: [styles.content, contentClassName].filter(Boolean).join(" "), children: [
127
134
  /* @__PURE__ */ jsx("span", { id: labelId, className: labelClasses, children: label }),
128
135
  description && /* @__PURE__ */ jsx("span", { id: descriptionId, className: styles.description, children: description })
129
136
  ] })
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Checkbox/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox';\nimport styles from './Checkbox.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\n/**\n * Checkbox for boolean or indeterminate selections in forms.\n * @see https://usefragments.com/components/checkbox\n */\nexport interface CheckboxProps extends Omit<React.HTMLAttributes<HTMLLabelElement>, 'onChange' | 'defaultChecked'> {\n /** Whether the checkbox is checked */\n checked?: boolean;\n /** Default checked state (uncontrolled) */\n defaultChecked?: boolean;\n /** Callback when checked state changes */\n onCheckedChange?: (checked: boolean) => void;\n /** Whether the checkbox is in an indeterminate state */\n indeterminate?: boolean;\n /** Whether the checkbox is disabled */\n disabled?: boolean;\n /** Whether the checkbox is required */\n required?: boolean;\n /** Size variant.\n * @default \"md\" */\n size?: 'sm' | 'md' | 'lg';\n /** Label text */\n label?: string;\n /** Description text below the label */\n description?: string;\n /** Name attribute for form submission */\n name?: string;\n /** Value attribute for form submission */\n value?: string;\n /** ID for the checkbox input */\n id?: string;\n /** Accessible label for icon-only mode */\n 'aria-label'?: string;\n /** Accessible labelled-by relationship for icon-only mode */\n 'aria-labelledby'?: string;\n /** Accessible described-by relationship */\n 'aria-describedby'?: string;\n}\n\nfunction mergeAriaIds(...ids: Array<string | undefined>): string | undefined {\n const merged = ids.filter(Boolean).join(' ').trim();\n return merged.length > 0 ? merged : undefined;\n}\n\n// ============================================\n// Icons\n// ============================================\n\nfunction CheckIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\nfunction MinusIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n );\n}\n\n// ============================================\n// Component\n// ============================================\n\nconst CheckboxRoot = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n function Checkbox(\n {\n checked,\n defaultChecked,\n onCheckedChange,\n indeterminate = false,\n disabled = false,\n required = false,\n size = 'md',\n label,\n description,\n name,\n value,\n className,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...htmlProps\n },\n ref\n ) {\n const generatedId = React.useId();\n const checkboxId = id ?? `checkbox-${generatedId}`;\n const labelId = label ? `${checkboxId}-label` : undefined;\n const descriptionId = description ? `${checkboxId}-description` : undefined;\n\n const checkboxClasses = [\n styles.checkbox,\n size === 'sm' && styles.sm,\n size === 'lg' && styles.lg,\n ].filter(Boolean).join(' ');\n\n const labelClasses = [\n styles.label,\n size === 'sm' && styles.labelSm,\n size === 'lg' && styles.labelLg,\n ].filter(Boolean).join(' ');\n\n const wrapperClasses = [styles.wrapper, className].filter(Boolean).join(' ');\n\n // If no label/description, render just the checkbox\n if (!label && !description) {\n return (\n <BaseCheckbox.Root\n ref={ref}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n indeterminate={indeterminate}\n disabled={disabled}\n required={required}\n name={name}\n value={value}\n id={checkboxId}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n className={[checkboxClasses, className].filter(Boolean).join(' ')}\n >\n <BaseCheckbox.Indicator className={styles.indicator} keepMounted>\n {indeterminate ? <MinusIcon /> : <CheckIcon />}\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n );\n }\n\n return (\n <label\n {...htmlProps}\n className={wrapperClasses}\n data-disabled={disabled || undefined}\n data-has-description={description ? true : undefined}\n >\n <BaseCheckbox.Root\n ref={ref}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={onCheckedChange}\n indeterminate={indeterminate}\n disabled={disabled}\n required={required}\n name={name}\n value={value}\n id={checkboxId}\n aria-label={ariaLabel}\n aria-labelledby={mergeAriaIds(ariaLabelledBy, labelId)}\n aria-describedby={mergeAriaIds(ariaDescribedBy, descriptionId)}\n className={checkboxClasses}\n >\n <BaseCheckbox.Indicator className={styles.indicator} keepMounted>\n {indeterminate ? <MinusIcon /> : <CheckIcon />}\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n <div className={styles.content}>\n <span id={labelId} className={labelClasses}>{label}</span>\n {description && (\n <span id={descriptionId} className={styles.description}>{description}</span>\n )}\n </div>\n </label>\n );\n }\n);\n\nexport const Checkbox = Object.assign(CheckboxRoot, {\n Root: CheckboxRoot,\n});\n"],"names":["Checkbox","BaseCheckbox"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Checkbox/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox';\nimport styles from './Checkbox.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\n/**\n * Checkbox for boolean or indeterminate selections in forms.\n * @see https://usefragments.com/components/checkbox\n */\nexport interface CheckboxProps extends Omit<React.HTMLAttributes<HTMLLabelElement>, 'onChange' | 'defaultChecked'> {\n /** Whether the checkbox is checked */\n checked?: boolean;\n /** Default checked state (uncontrolled) */\n defaultChecked?: boolean;\n /** Callback when checked state changes */\n onCheckedChange?: (checked: boolean) => void;\n /** Alias for onCheckedChange */\n onChange?: (checked: boolean) => void;\n /** Whether the checkbox is in an indeterminate state */\n indeterminate?: boolean;\n /** Whether the checkbox is disabled */\n disabled?: boolean;\n /** Whether the checkbox is required */\n required?: boolean;\n /** Size variant.\n * @default \"md\" */\n size?: 'sm' | 'md' | 'lg';\n /** Label text */\n label?: string;\n /** Description text below the label */\n description?: string;\n /** Name attribute for form submission */\n name?: string;\n /** Value attribute for form submission */\n value?: string;\n /** ID for the checkbox input */\n id?: string;\n /** Class applied directly to the checkbox control element */\n controlClassName?: string;\n /** Class applied to the label/description content wrapper */\n contentClassName?: string;\n /** Accessible label for icon-only mode */\n 'aria-label'?: string;\n /** Accessible labelled-by relationship for icon-only mode */\n 'aria-labelledby'?: string;\n /** Accessible described-by relationship */\n 'aria-describedby'?: string;\n}\n\nfunction mergeAriaIds(...ids: Array<string | undefined>): string | undefined {\n const merged = ids.filter(Boolean).join(' ').trim();\n return merged.length > 0 ? merged : undefined;\n}\n\n// ============================================\n// Icons\n// ============================================\n\nfunction CheckIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\nfunction MinusIcon() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n );\n}\n\n// ============================================\n// Component\n// ============================================\n\nconst CheckboxRoot = React.forwardRef<HTMLButtonElement, CheckboxProps>(\n function Checkbox(\n {\n checked,\n defaultChecked,\n onCheckedChange,\n onChange,\n indeterminate = false,\n disabled = false,\n required = false,\n size = 'md',\n label,\n description,\n name,\n value,\n className,\n controlClassName,\n contentClassName,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...htmlProps\n },\n ref\n ) {\n const generatedId = React.useId();\n const checkboxId = id ?? `checkbox-${generatedId}`;\n const labelId = label ? `${checkboxId}-label` : undefined;\n const descriptionId = description ? `${checkboxId}-description` : undefined;\n\n const checkboxClasses = [\n styles.checkbox,\n size === 'sm' && styles.sm,\n size === 'lg' && styles.lg,\n controlClassName,\n ].filter(Boolean).join(' ');\n\n const labelClasses = [\n styles.label,\n size === 'sm' && styles.labelSm,\n size === 'lg' && styles.labelLg,\n ].filter(Boolean).join(' ');\n\n const wrapperClasses = [styles.wrapper, className].filter(Boolean).join(' ');\n const handleCheckedChange = onChange ?? onCheckedChange;\n\n // If no label/description, render just the checkbox\n if (!label && !description) {\n const iconOnlyHtmlProps = htmlProps as unknown as Record<string, unknown>;\n return (\n <BaseCheckbox.Root\n {...iconOnlyHtmlProps}\n ref={ref}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={handleCheckedChange}\n indeterminate={indeterminate}\n disabled={disabled}\n required={required}\n name={name}\n value={value}\n id={checkboxId}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n className={[checkboxClasses, className].filter(Boolean).join(' ')}\n >\n <BaseCheckbox.Indicator className={styles.indicator} keepMounted>\n {indeterminate ? <MinusIcon /> : <CheckIcon />}\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n );\n }\n\n return (\n <label\n {...htmlProps}\n className={wrapperClasses}\n data-disabled={disabled || undefined}\n data-has-description={description ? true : undefined}\n >\n <BaseCheckbox.Root\n ref={ref}\n checked={checked}\n defaultChecked={defaultChecked}\n onCheckedChange={handleCheckedChange}\n indeterminate={indeterminate}\n disabled={disabled}\n required={required}\n name={name}\n value={value}\n id={checkboxId}\n aria-label={ariaLabel}\n aria-labelledby={mergeAriaIds(ariaLabelledBy, labelId)}\n aria-describedby={mergeAriaIds(ariaDescribedBy, descriptionId)}\n className={checkboxClasses}\n >\n <BaseCheckbox.Indicator className={styles.indicator} keepMounted>\n {indeterminate ? <MinusIcon /> : <CheckIcon />}\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n <div className={[styles.content, contentClassName].filter(Boolean).join(' ')}>\n <span id={labelId} className={labelClasses}>{label}</span>\n {description && (\n <span id={descriptionId} className={styles.description}>{description}</span>\n )}\n </div>\n </label>\n );\n }\n);\n\nexport const Checkbox = Object.assign(CheckboxRoot, {\n Root: CheckboxRoot,\n});\n"],"names":["Checkbox","BaseCheckbox"],"mappings":"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"}
@@ -86,7 +86,7 @@ const ChipBase = React__namespace.forwardRef(
86
86
  }
87
87
  );
88
88
  const EMPTY_CHIP_GROUP = [];
89
- function ChipGroupInner({ children, value: controlledValue, defaultValue = EMPTY_CHIP_GROUP, onChange, className }, ref) {
89
+ function ChipGroupInner({ children, value: controlledValue, defaultValue = EMPTY_CHIP_GROUP, onChange, className, ...htmlProps }, ref) {
90
90
  const [internalValue, setInternalValue] = React__namespace.useState(defaultValue);
91
91
  const isControlled = controlledValue !== void 0;
92
92
  const currentValue = isControlled ? controlledValue : internalValue;
@@ -101,9 +101,17 @@ function ChipGroupInner({ children, value: controlledValue, defaultValue = EMPTY
101
101
  [currentValue, isControlled, onChange]
102
102
  );
103
103
  const classes = [Chip_module.default.group, className].filter(Boolean).join(" ");
104
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: classes, children: React__namespace.Children.map(children, (child) => {
104
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, ...htmlProps, className: classes, children: React__namespace.Children.map(children, (child, index) => {
105
105
  if (!React__namespace.isValidElement(child)) return child;
106
- const chipValue = child.props.value ?? (typeof child.props.children === "string" ? child.props.children : "");
106
+ const chipValue = (() => {
107
+ if (child.props.value != null) return child.props.value;
108
+ if (typeof child.props.children === "string") return child.props.children;
109
+ if (child.key != null) return String(child.key);
110
+ if (process.env.NODE_ENV !== "production") {
111
+ console.warn("Chip.Group: Chips with non-string children should provide a `value` prop.");
112
+ }
113
+ return `__chip-${index}`;
114
+ })();
107
115
  return React__namespace.cloneElement(child, {
108
116
  selected: currentValue.includes(chipValue),
109
117
  onClick: (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/Chip/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './Chip.module.scss';\n\n/**\n * Chip for selections, filters, and tags. Use with Chip.Group for multi-select.\n * @see https://usefragments.com/components/chip\n */\nexport interface ChipProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n children: React.ReactNode;\n /** Visual style variant. `\"outline\"` is an alias for `\"outlined\"`.\n * @default \"filled\"\n * @see https://usefragments.com/components/chip#variants */\n variant?: 'filled' | 'outlined' | 'outline' | 'soft';\n /** Chip size.\n * @default \"md\" */\n size?: 'sm' | 'md' | 'lg';\n /** Whether the chip is selected */\n selected?: boolean;\n /** Icon element rendered before the label */\n icon?: React.ReactNode;\n /** Avatar element rendered before the label */\n avatar?: React.ReactNode;\n /** Makes chip removable. Called when X is clicked. */\n onRemove?: () => void;\n /** Value identifier used by Chip.Group */\n value?: string;\n}\n\nexport interface ChipGroupProps {\n children: React.ReactNode;\n /** Controlled selected values */\n value?: string[];\n /** Default selected values (uncontrolled) */\n defaultValue?: string[];\n /** Called when selection changes */\n onChange?: (value: string[]) => void;\n className?: string;\n}\n\nconst ChipBase = React.forwardRef<HTMLButtonElement, ChipProps>(\n function Chip(\n {\n children,\n variant: variantProp = 'filled',\n size = 'md',\n selected = false,\n disabled = false,\n icon,\n avatar,\n onRemove,\n className,\n onClick,\n value: _value,\n ...htmlProps\n },\n ref\n ) {\n // Resolve alias: \"outline\" → \"outlined\"\n const variant = variantProp === 'outline' ? 'outlined' : variantProp;\n\n const classes = [\n styles.chip,\n styles[size],\n styles[variant],\n selected && styles.selected,\n onRemove && styles.withRemove,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleRemoveClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onRemove?.();\n };\n\n const removeAriaLabel = `Remove ${typeof children === 'string' ? children : 'chip'}`;\n\n const chipButton = (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={selected}\n disabled={disabled}\n className={classes}\n onClick={onClick}\n {...htmlProps}\n >\n {avatar && (\n <span className={styles.avatar} aria-hidden=\"true\">\n {avatar}\n </span>\n )}\n {icon && (\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span>{children}</span>\n </button>\n );\n\n if (!onRemove) {\n return chipButton;\n }\n\n return (\n <span className={styles.removableChip} data-disabled={disabled || undefined}>\n {chipButton}\n <button\n type=\"button\"\n className={styles.remove}\n onClick={handleRemoveClick}\n aria-label={removeAriaLabel}\n disabled={disabled}\n >\n &times;\n </button>\n </span>\n );\n }\n);\n\nconst EMPTY_CHIP_GROUP: string[] = [];\n\nfunction ChipGroupInner(\n { children, value: controlledValue, defaultValue = EMPTY_CHIP_GROUP, onChange, className }: ChipGroupProps,\n ref: React.Ref<HTMLDivElement>\n) {\n const [internalValue, setInternalValue] = React.useState<string[]>(defaultValue);\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n\n const toggle = React.useCallback(\n (chipValue: string) => {\n const next = currentValue.includes(chipValue)\n ? currentValue.filter((v) => v !== chipValue)\n : [...currentValue, chipValue];\n\n if (!isControlled) {\n setInternalValue(next);\n }\n onChange?.(next);\n },\n [currentValue, isControlled, onChange]\n );\n\n const classes = [styles.group, className].filter(Boolean).join(' ');\n\n return (\n <div ref={ref} className={classes}>\n {React.Children.map(children, (child) => {\n if (!React.isValidElement<ChipProps>(child)) return child;\n const chipValue = child.props.value ?? (typeof child.props.children === 'string' ? child.props.children : '');\n return React.cloneElement(child, {\n selected: currentValue.includes(chipValue),\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => {\n child.props.onClick?.(e);\n if (!e.defaultPrevented) {\n toggle(chipValue);\n }\n },\n } as Partial<ChipProps>);\n })}\n </div>\n );\n}\n\nconst ChipGroup = React.forwardRef<HTMLDivElement, ChipGroupProps>(ChipGroupInner);\n\n// Compose Chip with static Group property\nexport const Chip = Object.assign(ChipBase, { Group: ChipGroup });\n"],"names":["React","Chip","styles","jsxs","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Chip/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './Chip.module.scss';\n\n/**\n * Chip for selections, filters, and tags. Use with Chip.Group for multi-select.\n * @see https://usefragments.com/components/chip\n */\nexport interface ChipProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n children: React.ReactNode;\n /** Visual style variant. `\"outline\"` is an alias for `\"outlined\"`.\n * @default \"filled\"\n * @see https://usefragments.com/components/chip#variants */\n variant?: 'filled' | 'outlined' | 'outline' | 'soft';\n /** Chip size.\n * @default \"md\" */\n size?: 'sm' | 'md' | 'lg';\n /** Whether the chip is selected */\n selected?: boolean;\n /** Icon element rendered before the label */\n icon?: React.ReactNode;\n /** Avatar element rendered before the label */\n avatar?: React.ReactNode;\n /** Makes chip removable. Called when X is clicked. */\n onRemove?: () => void;\n /** Value identifier used by Chip.Group */\n value?: string;\n}\n\nexport interface ChipGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'onChange'> {\n children: React.ReactNode;\n /** Controlled selected values */\n value?: string[];\n /** Default selected values (uncontrolled) */\n defaultValue?: string[];\n /** Called when selection changes */\n onChange?: (value: string[]) => void;\n}\n\nconst ChipBase = React.forwardRef<HTMLButtonElement, ChipProps>(\n function Chip(\n {\n children,\n variant: variantProp = 'filled',\n size = 'md',\n selected = false,\n disabled = false,\n icon,\n avatar,\n onRemove,\n className,\n onClick,\n value: _value,\n ...htmlProps\n },\n ref\n ) {\n // Resolve alias: \"outline\" → \"outlined\"\n const variant = variantProp === 'outline' ? 'outlined' : variantProp;\n\n const classes = [\n styles.chip,\n styles[size],\n styles[variant],\n selected && styles.selected,\n onRemove && styles.withRemove,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleRemoveClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onRemove?.();\n };\n\n const removeAriaLabel = `Remove ${typeof children === 'string' ? children : 'chip'}`;\n\n const chipButton = (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={selected}\n disabled={disabled}\n className={classes}\n onClick={onClick}\n {...htmlProps}\n >\n {avatar && (\n <span className={styles.avatar} aria-hidden=\"true\">\n {avatar}\n </span>\n )}\n {icon && (\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span>{children}</span>\n </button>\n );\n\n if (!onRemove) {\n return chipButton;\n }\n\n return (\n <span className={styles.removableChip} data-disabled={disabled || undefined}>\n {chipButton}\n <button\n type=\"button\"\n className={styles.remove}\n onClick={handleRemoveClick}\n aria-label={removeAriaLabel}\n disabled={disabled}\n >\n &times;\n </button>\n </span>\n );\n }\n);\n\nconst EMPTY_CHIP_GROUP: string[] = [];\n\nfunction ChipGroupInner(\n { children, value: controlledValue, defaultValue = EMPTY_CHIP_GROUP, onChange, className, ...htmlProps }: ChipGroupProps,\n ref: React.Ref<HTMLDivElement>\n) {\n const [internalValue, setInternalValue] = React.useState<string[]>(defaultValue);\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n\n const toggle = React.useCallback(\n (chipValue: string) => {\n const next = currentValue.includes(chipValue)\n ? currentValue.filter((v) => v !== chipValue)\n : [...currentValue, chipValue];\n\n if (!isControlled) {\n setInternalValue(next);\n }\n onChange?.(next);\n },\n [currentValue, isControlled, onChange]\n );\n\n const classes = [styles.group, className].filter(Boolean).join(' ');\n\n return (\n <div ref={ref} {...htmlProps} className={classes}>\n {React.Children.map(children, (child, index) => {\n if (!React.isValidElement<ChipProps>(child)) return child;\n const chipValue = (() => {\n if (child.props.value != null) return child.props.value;\n if (typeof child.props.children === 'string') return child.props.children;\n if (child.key != null) return String(child.key);\n if (process.env.NODE_ENV !== 'production') {\n // Non-string labels need an explicit value to avoid unstable group selection keys.\n console.warn('Chip.Group: Chips with non-string children should provide a `value` prop.');\n }\n return `__chip-${index}`;\n })();\n return React.cloneElement(child, {\n selected: currentValue.includes(chipValue),\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => {\n child.props.onClick?.(e);\n if (!e.defaultPrevented) {\n toggle(chipValue);\n }\n },\n } as Partial<ChipProps>);\n })}\n </div>\n );\n}\n\nconst ChipGroup = React.forwardRef<HTMLDivElement, ChipGroupProps>(ChipGroupInner);\n\n// Compose Chip with static Group property\nexport const Chip = Object.assign(ChipBase, { Group: ChipGroup });\n"],"names":["React","Chip","styles","jsxs","jsx"],"mappings":"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"}
@@ -23,7 +23,7 @@ export interface ChipProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonEle
23
23
  /** Value identifier used by Chip.Group */
24
24
  value?: string;
25
25
  }
26
- export interface ChipGroupProps {
26
+ export interface ChipGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'onChange'> {
27
27
  children: React.ReactNode;
28
28
  /** Controlled selected values */
29
29
  value?: string[];
@@ -31,7 +31,6 @@ export interface ChipGroupProps {
31
31
  defaultValue?: string[];
32
32
  /** Called when selection changes */
33
33
  onChange?: (value: string[]) => void;
34
- className?: string;
35
34
  }
36
35
  export declare const Chip: React.ForwardRefExoticComponent<ChipProps & React.RefAttributes<HTMLButtonElement>> & {
37
36
  Group: React.ForwardRefExoticComponent<ChipGroupProps & React.RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Chip/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAChG,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;gEAE4D;IAC5D,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IACrD;uBACmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsID,eAAO,MAAM,IAAI;;CAAgD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Chip/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAChG,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;gEAE4D;IAC5D,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IACrD;uBACmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACzG,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACtC;AA+ID,eAAO,MAAM,IAAI;;CAAgD,CAAC"}
@@ -67,7 +67,7 @@ const ChipBase = React.forwardRef(
67
67
  }
68
68
  );
69
69
  const EMPTY_CHIP_GROUP = [];
70
- function ChipGroupInner({ children, value: controlledValue, defaultValue = EMPTY_CHIP_GROUP, onChange, className }, ref) {
70
+ function ChipGroupInner({ children, value: controlledValue, defaultValue = EMPTY_CHIP_GROUP, onChange, className, ...htmlProps }, ref) {
71
71
  const [internalValue, setInternalValue] = React.useState(defaultValue);
72
72
  const isControlled = controlledValue !== void 0;
73
73
  const currentValue = isControlled ? controlledValue : internalValue;
@@ -82,9 +82,17 @@ function ChipGroupInner({ children, value: controlledValue, defaultValue = EMPTY
82
82
  [currentValue, isControlled, onChange]
83
83
  );
84
84
  const classes = [styles.group, className].filter(Boolean).join(" ");
85
- return /* @__PURE__ */ jsx("div", { ref, className: classes, children: React.Children.map(children, (child) => {
85
+ return /* @__PURE__ */ jsx("div", { ref, ...htmlProps, className: classes, children: React.Children.map(children, (child, index) => {
86
86
  if (!React.isValidElement(child)) return child;
87
- const chipValue = child.props.value ?? (typeof child.props.children === "string" ? child.props.children : "");
87
+ const chipValue = (() => {
88
+ if (child.props.value != null) return child.props.value;
89
+ if (typeof child.props.children === "string") return child.props.children;
90
+ if (child.key != null) return String(child.key);
91
+ if (process.env.NODE_ENV !== "production") {
92
+ console.warn("Chip.Group: Chips with non-string children should provide a `value` prop.");
93
+ }
94
+ return `__chip-${index}`;
95
+ })();
88
96
  return React.cloneElement(child, {
89
97
  selected: currentValue.includes(chipValue),
90
98
  onClick: (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Chip/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './Chip.module.scss';\n\n/**\n * Chip for selections, filters, and tags. Use with Chip.Group for multi-select.\n * @see https://usefragments.com/components/chip\n */\nexport interface ChipProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n children: React.ReactNode;\n /** Visual style variant. `\"outline\"` is an alias for `\"outlined\"`.\n * @default \"filled\"\n * @see https://usefragments.com/components/chip#variants */\n variant?: 'filled' | 'outlined' | 'outline' | 'soft';\n /** Chip size.\n * @default \"md\" */\n size?: 'sm' | 'md' | 'lg';\n /** Whether the chip is selected */\n selected?: boolean;\n /** Icon element rendered before the label */\n icon?: React.ReactNode;\n /** Avatar element rendered before the label */\n avatar?: React.ReactNode;\n /** Makes chip removable. Called when X is clicked. */\n onRemove?: () => void;\n /** Value identifier used by Chip.Group */\n value?: string;\n}\n\nexport interface ChipGroupProps {\n children: React.ReactNode;\n /** Controlled selected values */\n value?: string[];\n /** Default selected values (uncontrolled) */\n defaultValue?: string[];\n /** Called when selection changes */\n onChange?: (value: string[]) => void;\n className?: string;\n}\n\nconst ChipBase = React.forwardRef<HTMLButtonElement, ChipProps>(\n function Chip(\n {\n children,\n variant: variantProp = 'filled',\n size = 'md',\n selected = false,\n disabled = false,\n icon,\n avatar,\n onRemove,\n className,\n onClick,\n value: _value,\n ...htmlProps\n },\n ref\n ) {\n // Resolve alias: \"outline\" → \"outlined\"\n const variant = variantProp === 'outline' ? 'outlined' : variantProp;\n\n const classes = [\n styles.chip,\n styles[size],\n styles[variant],\n selected && styles.selected,\n onRemove && styles.withRemove,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleRemoveClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onRemove?.();\n };\n\n const removeAriaLabel = `Remove ${typeof children === 'string' ? children : 'chip'}`;\n\n const chipButton = (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={selected}\n disabled={disabled}\n className={classes}\n onClick={onClick}\n {...htmlProps}\n >\n {avatar && (\n <span className={styles.avatar} aria-hidden=\"true\">\n {avatar}\n </span>\n )}\n {icon && (\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span>{children}</span>\n </button>\n );\n\n if (!onRemove) {\n return chipButton;\n }\n\n return (\n <span className={styles.removableChip} data-disabled={disabled || undefined}>\n {chipButton}\n <button\n type=\"button\"\n className={styles.remove}\n onClick={handleRemoveClick}\n aria-label={removeAriaLabel}\n disabled={disabled}\n >\n &times;\n </button>\n </span>\n );\n }\n);\n\nconst EMPTY_CHIP_GROUP: string[] = [];\n\nfunction ChipGroupInner(\n { children, value: controlledValue, defaultValue = EMPTY_CHIP_GROUP, onChange, className }: ChipGroupProps,\n ref: React.Ref<HTMLDivElement>\n) {\n const [internalValue, setInternalValue] = React.useState<string[]>(defaultValue);\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n\n const toggle = React.useCallback(\n (chipValue: string) => {\n const next = currentValue.includes(chipValue)\n ? currentValue.filter((v) => v !== chipValue)\n : [...currentValue, chipValue];\n\n if (!isControlled) {\n setInternalValue(next);\n }\n onChange?.(next);\n },\n [currentValue, isControlled, onChange]\n );\n\n const classes = [styles.group, className].filter(Boolean).join(' ');\n\n return (\n <div ref={ref} className={classes}>\n {React.Children.map(children, (child) => {\n if (!React.isValidElement<ChipProps>(child)) return child;\n const chipValue = child.props.value ?? (typeof child.props.children === 'string' ? child.props.children : '');\n return React.cloneElement(child, {\n selected: currentValue.includes(chipValue),\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => {\n child.props.onClick?.(e);\n if (!e.defaultPrevented) {\n toggle(chipValue);\n }\n },\n } as Partial<ChipProps>);\n })}\n </div>\n );\n}\n\nconst ChipGroup = React.forwardRef<HTMLDivElement, ChipGroupProps>(ChipGroupInner);\n\n// Compose Chip with static Group property\nexport const Chip = Object.assign(ChipBase, { Group: ChipGroup });\n"],"names":["Chip"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Chip/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './Chip.module.scss';\n\n/**\n * Chip for selections, filters, and tags. Use with Chip.Group for multi-select.\n * @see https://usefragments.com/components/chip\n */\nexport interface ChipProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n children: React.ReactNode;\n /** Visual style variant. `\"outline\"` is an alias for `\"outlined\"`.\n * @default \"filled\"\n * @see https://usefragments.com/components/chip#variants */\n variant?: 'filled' | 'outlined' | 'outline' | 'soft';\n /** Chip size.\n * @default \"md\" */\n size?: 'sm' | 'md' | 'lg';\n /** Whether the chip is selected */\n selected?: boolean;\n /** Icon element rendered before the label */\n icon?: React.ReactNode;\n /** Avatar element rendered before the label */\n avatar?: React.ReactNode;\n /** Makes chip removable. Called when X is clicked. */\n onRemove?: () => void;\n /** Value identifier used by Chip.Group */\n value?: string;\n}\n\nexport interface ChipGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'onChange'> {\n children: React.ReactNode;\n /** Controlled selected values */\n value?: string[];\n /** Default selected values (uncontrolled) */\n defaultValue?: string[];\n /** Called when selection changes */\n onChange?: (value: string[]) => void;\n}\n\nconst ChipBase = React.forwardRef<HTMLButtonElement, ChipProps>(\n function Chip(\n {\n children,\n variant: variantProp = 'filled',\n size = 'md',\n selected = false,\n disabled = false,\n icon,\n avatar,\n onRemove,\n className,\n onClick,\n value: _value,\n ...htmlProps\n },\n ref\n ) {\n // Resolve alias: \"outline\" → \"outlined\"\n const variant = variantProp === 'outline' ? 'outlined' : variantProp;\n\n const classes = [\n styles.chip,\n styles[size],\n styles[variant],\n selected && styles.selected,\n onRemove && styles.withRemove,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleRemoveClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onRemove?.();\n };\n\n const removeAriaLabel = `Remove ${typeof children === 'string' ? children : 'chip'}`;\n\n const chipButton = (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={selected}\n disabled={disabled}\n className={classes}\n onClick={onClick}\n {...htmlProps}\n >\n {avatar && (\n <span className={styles.avatar} aria-hidden=\"true\">\n {avatar}\n </span>\n )}\n {icon && (\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span>{children}</span>\n </button>\n );\n\n if (!onRemove) {\n return chipButton;\n }\n\n return (\n <span className={styles.removableChip} data-disabled={disabled || undefined}>\n {chipButton}\n <button\n type=\"button\"\n className={styles.remove}\n onClick={handleRemoveClick}\n aria-label={removeAriaLabel}\n disabled={disabled}\n >\n &times;\n </button>\n </span>\n );\n }\n);\n\nconst EMPTY_CHIP_GROUP: string[] = [];\n\nfunction ChipGroupInner(\n { children, value: controlledValue, defaultValue = EMPTY_CHIP_GROUP, onChange, className, ...htmlProps }: ChipGroupProps,\n ref: React.Ref<HTMLDivElement>\n) {\n const [internalValue, setInternalValue] = React.useState<string[]>(defaultValue);\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n\n const toggle = React.useCallback(\n (chipValue: string) => {\n const next = currentValue.includes(chipValue)\n ? currentValue.filter((v) => v !== chipValue)\n : [...currentValue, chipValue];\n\n if (!isControlled) {\n setInternalValue(next);\n }\n onChange?.(next);\n },\n [currentValue, isControlled, onChange]\n );\n\n const classes = [styles.group, className].filter(Boolean).join(' ');\n\n return (\n <div ref={ref} {...htmlProps} className={classes}>\n {React.Children.map(children, (child, index) => {\n if (!React.isValidElement<ChipProps>(child)) return child;\n const chipValue = (() => {\n if (child.props.value != null) return child.props.value;\n if (typeof child.props.children === 'string') return child.props.children;\n if (child.key != null) return String(child.key);\n if (process.env.NODE_ENV !== 'production') {\n // Non-string labels need an explicit value to avoid unstable group selection keys.\n console.warn('Chip.Group: Chips with non-string children should provide a `value` prop.');\n }\n return `__chip-${index}`;\n })();\n return React.cloneElement(child, {\n selected: currentValue.includes(chipValue),\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => {\n child.props.onClick?.(e);\n if (!e.defaultPrevented) {\n toggle(chipValue);\n }\n },\n } as Partial<ChipProps>);\n })}\n </div>\n );\n}\n\nconst ChipGroup = React.forwardRef<HTMLDivElement, ChipGroupProps>(ChipGroupInner);\n\n// Compose Chip with static Group property\nexport const Chip = Object.assign(ChipBase, { Group: ChipGroup });\n"],"names":["Chip"],"mappings":"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"}
@@ -1,25 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const container = "_container_1j662_1";
4
- const title = "_title_1j662_5";
5
- const wrapper = "_wrapper_1j662_14";
6
- const header = "_header_1j662_22";
7
- const filename = "_filename_1j662_32";
8
- const copyButton = "_copyButton_1j662_39";
9
- const copied = "_copied_1j662_77";
10
- const copyOverlay = "_copyOverlay_1j662_81";
11
- const withCopyOverlay = "_withCopyOverlay_1j662_92";
12
- const codeContainer = "_codeContainer_1j662_92";
13
- const loading = "_loading_1j662_93";
14
- const icon = "_icon_1j662_97";
15
- const persistentCopy = "_persistentCopy_1j662_101";
16
- const withLineNumbers = "_withLineNumbers_1j662_188";
17
- const withDiff = "_withDiff_1j662_192";
18
- const compact = "_compact_1j662_216";
19
- const wordWrap = "_wordWrap_1j662_230";
20
- const caption = "_caption_1j662_240";
21
- const collapseButton = "_collapseButton_1j662_247";
22
- const tabbedPanel = "_tabbedPanel_1j662_291";
3
+ const container = "_container_1vzq9_1";
4
+ const title = "_title_1vzq9_5";
5
+ const wrapper = "_wrapper_1vzq9_14";
6
+ const header = "_header_1vzq9_22";
7
+ const filename = "_filename_1vzq9_32";
8
+ const copyButton = "_copyButton_1vzq9_39";
9
+ const copied = "_copied_1vzq9_77";
10
+ const copyOverlay = "_copyOverlay_1vzq9_81";
11
+ const withCopyOverlay = "_withCopyOverlay_1vzq9_92";
12
+ const codeContainer = "_codeContainer_1vzq9_92";
13
+ const loading = "_loading_1vzq9_93";
14
+ const icon = "_icon_1vzq9_97";
15
+ const persistentCopy = "_persistentCopy_1vzq9_101";
16
+ const withLineNumbers = "_withLineNumbers_1vzq9_188";
17
+ const withDiff = "_withDiff_1vzq9_192";
18
+ const compact = "_compact_1vzq9_216";
19
+ const wordWrap = "_wordWrap_1vzq9_230";
20
+ const caption = "_caption_1vzq9_240";
21
+ const collapseButton = "_collapseButton_1vzq9_247";
22
+ const tabbedPanel = "_tabbedPanel_1vzq9_291";
23
23
  const styles = {
24
24
  container,
25
25
  title,
@@ -1,23 +1,23 @@
1
- const container = "_container_1j662_1";
2
- const title = "_title_1j662_5";
3
- const wrapper = "_wrapper_1j662_14";
4
- const header = "_header_1j662_22";
5
- const filename = "_filename_1j662_32";
6
- const copyButton = "_copyButton_1j662_39";
7
- const copied = "_copied_1j662_77";
8
- const copyOverlay = "_copyOverlay_1j662_81";
9
- const withCopyOverlay = "_withCopyOverlay_1j662_92";
10
- const codeContainer = "_codeContainer_1j662_92";
11
- const loading = "_loading_1j662_93";
12
- const icon = "_icon_1j662_97";
13
- const persistentCopy = "_persistentCopy_1j662_101";
14
- const withLineNumbers = "_withLineNumbers_1j662_188";
15
- const withDiff = "_withDiff_1j662_192";
16
- const compact = "_compact_1j662_216";
17
- const wordWrap = "_wordWrap_1j662_230";
18
- const caption = "_caption_1j662_240";
19
- const collapseButton = "_collapseButton_1j662_247";
20
- const tabbedPanel = "_tabbedPanel_1j662_291";
1
+ const container = "_container_1vzq9_1";
2
+ const title = "_title_1vzq9_5";
3
+ const wrapper = "_wrapper_1vzq9_14";
4
+ const header = "_header_1vzq9_22";
5
+ const filename = "_filename_1vzq9_32";
6
+ const copyButton = "_copyButton_1vzq9_39";
7
+ const copied = "_copied_1vzq9_77";
8
+ const copyOverlay = "_copyOverlay_1vzq9_81";
9
+ const withCopyOverlay = "_withCopyOverlay_1vzq9_92";
10
+ const codeContainer = "_codeContainer_1vzq9_92";
11
+ const loading = "_loading_1vzq9_93";
12
+ const icon = "_icon_1vzq9_97";
13
+ const persistentCopy = "_persistentCopy_1vzq9_101";
14
+ const withLineNumbers = "_withLineNumbers_1vzq9_188";
15
+ const withDiff = "_withDiff_1vzq9_192";
16
+ const compact = "_compact_1vzq9_216";
17
+ const wordWrap = "_wordWrap_1vzq9_230";
18
+ const caption = "_caption_1vzq9_240";
19
+ const collapseButton = "_collapseButton_1vzq9_247";
20
+ const tabbedPanel = "_tabbedPanel_1vzq9_291";
21
21
  const styles = {
22
22
  container,
23
23
  title,
@@ -51,6 +51,8 @@ export interface CodeBlockProps extends React.HTMLAttributes<HTMLDivElement> {
51
51
  export interface CodeBlockTab {
52
52
  /** Label shown in the tab */
53
53
  label: string;
54
+ /** Stable tab value (defaults to label) */
55
+ value?: string;
54
56
  /** Code string to display */
55
57
  code: string;
56
58
  /** Programming language for syntax highlighting */
@@ -59,8 +61,12 @@ export interface CodeBlockTab {
59
61
  export interface TabbedCodeBlockProps {
60
62
  /** Array of code tabs */
61
63
  tabs: CodeBlockTab[];
62
- /** Default selected tab (by label) */
64
+ /** Default selected tab (by tab value, or label when value is omitted) */
63
65
  defaultTab?: string;
66
+ /** Controlled selected tab value */
67
+ value?: string;
68
+ /** Called when the selected tab changes */
69
+ onValueChange?: (value: string) => void;
64
70
  /** Show copy button */
65
71
  showCopy?: boolean;
66
72
  /** Placement of copy button when not using persistent copy */
@@ -80,7 +86,7 @@ export interface TabbedCodeBlockProps {
80
86
  /** Callback fired when a tab's copy button is clicked. Receives the tab label. */
81
87
  onCopy?: (tabLabel: string) => void;
82
88
  }
83
- declare function TabbedCodeBlock({ tabs, defaultTab, showCopy, copyPlacement, showLineNumbers, theme, tabsVariant, wordWrap, maxHeight, className, onCopy, }: TabbedCodeBlockProps): import("react/jsx-runtime").JSX.Element;
89
+ declare function TabbedCodeBlock({ tabs, defaultTab, value, onValueChange, showCopy, copyPlacement, showLineNumbers, theme, tabsVariant, wordWrap, maxHeight, className, onCopy, }: TabbedCodeBlockProps): import("react/jsx-runtime").JSX.Element;
84
90
  export declare const CodeBlock: React.ForwardRefExoticComponent<CodeBlockProps & React.RefAttributes<HTMLDivElement>> & {
85
91
  Tabbed: typeof TabbedCodeBlock;
86
92
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CodeBlock/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CodeBlock/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA8B/B,OAAO,2BAA2B,CAAC;AAEnC,MAAM,MAAM,iBAAiB,GACzB,KAAK,GACL,YAAY,GACZ,IAAI,GACJ,YAAY,GACZ,IAAI,GACJ,KAAK,GACL,MAAM,GACN,OAAO,GACP,KAAK,GACL,MAAM,GACN,MAAM,GACN,MAAM,GACN,MAAM,GACN,KAAK,GACL,UAAU,GACV,IAAI,GACJ,MAAM,GACN,KAAK,GACL,QAAQ,GACR,IAAI,GACJ,MAAM,GACN,IAAI,GACJ,MAAM,GACN,MAAM,GACN,QAAQ,GACR,OAAO,GACP,GAAG,GACH,KAAK,GACL,QAAQ,GACR,KAAK,GACL,KAAK,GACL,SAAS,GACT,MAAM,GACN,WAAW,GACX,MAAM,CAAC;AASX,2CAA2C;AAC3C,MAAM,MAAM,cAAc,GACtB,cAAc,GACd,aAAa,GACb,cAAc,GACd,cAAc,GACd,SAAS,GACT,MAAM,GACN,SAAS,GACT,cAAc,GACd,eAAe,GACf,UAAU,GACV,WAAW,CAAC;AAEhB,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnE,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC1E,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,gCAAgC;IAChC,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wCAAwC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACrC,yCAAyC;IACzC,UAAU,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACjC,2CAA2C;IAC3C,YAAY,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACnC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAqnBD,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,yBAAyB;IACzB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,wBAAwB;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sDAAsD;IACtD,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;IACpC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,iBAAS,eAAe,CAAC,EACvB,IAAI,EACJ,UAAU,EACV,KAAK,EACL,aAAa,EACb,QAAe,EACf,aAAsB,EACtB,eAAuB,EACvB,KAAK,EACL,WAAqB,EACrB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,MAAM,GACP,EAAE,oBAAoB,2CAqCtB;AAMD,eAAO,MAAM,SAAS;;CAEpB,CAAC;AAEH,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const root = "_root_okqbn_1";
4
- const trigger = "_trigger_okqbn_5";
5
- const triggerContent = "_triggerContent_okqbn_33";
6
- const chevron = "_chevron_okqbn_38";
7
- const chevronOpen = "_chevronOpen_okqbn_44";
8
- const content = "_content_okqbn_48";
9
- const contentOpen = "_contentOpen_okqbn_53";
10
- const contentClosed = "_contentClosed_okqbn_58";
11
- const contentInner = "_contentInner_okqbn_63";
12
- const disabled = "_disabled_okqbn_67";
3
+ const root = "_root_1i10a_1";
4
+ const trigger = "_trigger_1i10a_5";
5
+ const triggerContent = "_triggerContent_1i10a_33";
6
+ const chevron = "_chevron_1i10a_38";
7
+ const chevronOpen = "_chevronOpen_1i10a_44";
8
+ const content = "_content_1i10a_48";
9
+ const contentOpen = "_contentOpen_1i10a_53";
10
+ const contentClosed = "_contentClosed_1i10a_58";
11
+ const contentInner = "_contentInner_1i10a_63";
12
+ const disabled = "_disabled_1i10a_67";
13
13
  const styles = {
14
14
  root,
15
15
  trigger,
@@ -1,13 +1,13 @@
1
- const root = "_root_okqbn_1";
2
- const trigger = "_trigger_okqbn_5";
3
- const triggerContent = "_triggerContent_okqbn_33";
4
- const chevron = "_chevron_okqbn_38";
5
- const chevronOpen = "_chevronOpen_okqbn_44";
6
- const content = "_content_okqbn_48";
7
- const contentOpen = "_contentOpen_okqbn_53";
8
- const contentClosed = "_contentClosed_okqbn_58";
9
- const contentInner = "_contentInner_okqbn_63";
10
- const disabled = "_disabled_okqbn_67";
1
+ const root = "_root_1i10a_1";
2
+ const trigger = "_trigger_1i10a_5";
3
+ const triggerContent = "_triggerContent_1i10a_33";
4
+ const chevron = "_chevron_1i10a_38";
5
+ const chevronOpen = "_chevronOpen_1i10a_44";
6
+ const content = "_content_1i10a_48";
7
+ const contentOpen = "_contentOpen_1i10a_53";
8
+ const contentClosed = "_contentClosed_1i10a_58";
9
+ const contentInner = "_contentInner_1i10a_63";
10
+ const disabled = "_disabled_1i10a_67";
11
11
  const styles = {
12
12
  root,
13
13
  trigger,