@fragments-sdk/ui 0.13.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 (656) 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 +7 -3
  11. package/dist/components/Accordion/index.cjs.map +1 -1
  12. package/dist/components/Accordion/index.d.ts +24 -11
  13. package/dist/components/Accordion/index.d.ts.map +1 -1
  14. package/dist/components/Accordion/index.js +7 -3
  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/Combobox/Combobox.module.scss.cjs +15 -15
  110. package/dist/components/Combobox/Combobox.module.scss.js +15 -15
  111. package/dist/components/Combobox/index.cjs +68 -18
  112. package/dist/components/Combobox/index.cjs.map +1 -1
  113. package/dist/components/Combobox/index.d.ts +32 -11
  114. package/dist/components/Combobox/index.d.ts.map +1 -1
  115. package/dist/components/Combobox/index.js +68 -18
  116. package/dist/components/Combobox/index.js.map +1 -1
  117. package/dist/components/Command/Command.module.scss.cjs +11 -11
  118. package/dist/components/Command/Command.module.scss.js +11 -11
  119. package/dist/components/Command/index.cjs +4 -4
  120. package/dist/components/Command/index.cjs.map +1 -1
  121. package/dist/components/Command/index.d.ts +1 -1
  122. package/dist/components/Command/index.d.ts.map +1 -1
  123. package/dist/components/Command/index.js +4 -4
  124. package/dist/components/Command/index.js.map +1 -1
  125. package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
  126. package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
  127. package/dist/components/ConversationList/index.cjs +6 -3
  128. package/dist/components/ConversationList/index.cjs.map +1 -1
  129. package/dist/components/ConversationList/index.d.ts +1 -1
  130. package/dist/components/ConversationList/index.d.ts.map +1 -1
  131. package/dist/components/ConversationList/index.js +6 -3
  132. package/dist/components/ConversationList/index.js.map +1 -1
  133. package/dist/components/DataTable/DataTable.module.scss.cjs +26 -26
  134. package/dist/components/DataTable/DataTable.module.scss.js +26 -26
  135. package/dist/components/DataTable/index.cjs +13 -4
  136. package/dist/components/DataTable/index.cjs.map +1 -1
  137. package/dist/components/DataTable/index.d.ts +7 -2
  138. package/dist/components/DataTable/index.d.ts.map +1 -1
  139. package/dist/components/DataTable/index.js +13 -4
  140. package/dist/components/DataTable/index.js.map +1 -1
  141. package/dist/components/DatePicker/DatePicker.module.scss.cjs +26 -26
  142. package/dist/components/DatePicker/DatePicker.module.scss.js +26 -26
  143. package/dist/components/DatePicker/index.d.ts +2 -2
  144. package/dist/components/DatePicker/index.d.ts.map +1 -1
  145. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  146. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  147. package/dist/components/Dialog/index.cjs +2 -1
  148. package/dist/components/Dialog/index.cjs.map +1 -1
  149. package/dist/components/Dialog/index.d.ts +20 -7
  150. package/dist/components/Dialog/index.d.ts.map +1 -1
  151. package/dist/components/Dialog/index.js +2 -1
  152. package/dist/components/Dialog/index.js.map +1 -1
  153. package/dist/components/Drawer/Drawer.module.scss.cjs +26 -26
  154. package/dist/components/Drawer/Drawer.module.scss.js +26 -26
  155. package/dist/components/Drawer/index.cjs +30 -3
  156. package/dist/components/Drawer/index.cjs.map +1 -1
  157. package/dist/components/Drawer/index.d.ts +3 -1
  158. package/dist/components/Drawer/index.d.ts.map +1 -1
  159. package/dist/components/Drawer/index.js +13 -3
  160. package/dist/components/Drawer/index.js.map +1 -1
  161. package/dist/components/Editor/Editor.module.scss.cjs +17 -17
  162. package/dist/components/Editor/Editor.module.scss.js +17 -17
  163. package/dist/components/Editor/index.cjs +32 -7
  164. package/dist/components/Editor/index.cjs.map +1 -1
  165. package/dist/components/Editor/index.d.ts +16 -3
  166. package/dist/components/Editor/index.d.ts.map +1 -1
  167. package/dist/components/Editor/index.js +32 -7
  168. package/dist/components/Editor/index.js.map +1 -1
  169. package/dist/components/EmptyState/EmptyState.module.scss.cjs +8 -8
  170. package/dist/components/EmptyState/EmptyState.module.scss.js +8 -8
  171. package/dist/components/EmptyState/index.cjs +12 -8
  172. package/dist/components/EmptyState/index.cjs.map +1 -1
  173. package/dist/components/EmptyState/index.d.ts +8 -12
  174. package/dist/components/EmptyState/index.d.ts.map +1 -1
  175. package/dist/components/EmptyState/index.js +12 -8
  176. package/dist/components/EmptyState/index.js.map +1 -1
  177. package/dist/components/Fieldset/index.cjs +2 -2
  178. package/dist/components/Fieldset/index.cjs.map +1 -1
  179. package/dist/components/Fieldset/index.d.ts +2 -3
  180. package/dist/components/Fieldset/index.d.ts.map +1 -1
  181. package/dist/components/Fieldset/index.js +2 -2
  182. package/dist/components/Fieldset/index.js.map +1 -1
  183. package/dist/components/Form/index.cjs +13 -13
  184. package/dist/components/Form/index.cjs.map +1 -1
  185. package/dist/components/Form/index.d.ts +5 -2
  186. package/dist/components/Form/index.d.ts.map +1 -1
  187. package/dist/components/Form/index.js +13 -13
  188. package/dist/components/Form/index.js.map +1 -1
  189. package/dist/components/Grid/Grid.module.scss.cjs +57 -57
  190. package/dist/components/Grid/Grid.module.scss.js +57 -57
  191. package/dist/components/Grid/index.cjs +7 -4
  192. package/dist/components/Grid/index.cjs.map +1 -1
  193. package/dist/components/Grid/index.d.ts +5 -3
  194. package/dist/components/Grid/index.d.ts.map +1 -1
  195. package/dist/components/Grid/index.js +7 -4
  196. package/dist/components/Grid/index.js.map +1 -1
  197. package/dist/components/Header/Header.module.scss.cjs +21 -21
  198. package/dist/components/Header/Header.module.scss.js +21 -21
  199. package/dist/components/Header/index.cjs +61 -23
  200. package/dist/components/Header/index.cjs.map +1 -1
  201. package/dist/components/Header/index.d.ts +27 -34
  202. package/dist/components/Header/index.d.ts.map +1 -1
  203. package/dist/components/Header/index.js +61 -23
  204. package/dist/components/Header/index.js.map +1 -1
  205. package/dist/components/Icon/index.cjs +11 -1
  206. package/dist/components/Icon/index.cjs.map +1 -1
  207. package/dist/components/Icon/index.d.ts +28 -9
  208. package/dist/components/Icon/index.d.ts.map +1 -1
  209. package/dist/components/Icon/index.js +11 -1
  210. package/dist/components/Icon/index.js.map +1 -1
  211. package/dist/components/Image/index.cjs +15 -4
  212. package/dist/components/Image/index.cjs.map +1 -1
  213. package/dist/components/Image/index.d.ts +7 -1
  214. package/dist/components/Image/index.d.ts.map +1 -1
  215. package/dist/components/Image/index.js +15 -4
  216. package/dist/components/Image/index.js.map +1 -1
  217. package/dist/components/Input/Input.module.scss.cjs +13 -13
  218. package/dist/components/Input/Input.module.scss.js +13 -13
  219. package/dist/components/Input/index.cjs +79 -31
  220. package/dist/components/Input/index.cjs.map +1 -1
  221. package/dist/components/Input/index.d.ts +17 -3
  222. package/dist/components/Input/index.d.ts.map +1 -1
  223. package/dist/components/Input/index.js +79 -31
  224. package/dist/components/Input/index.js.map +1 -1
  225. package/dist/components/Link/index.cjs +17 -0
  226. package/dist/components/Link/index.cjs.map +1 -1
  227. package/dist/components/Link/index.d.ts.map +1 -1
  228. package/dist/components/Link/index.js +17 -0
  229. package/dist/components/Link/index.js.map +1 -1
  230. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  231. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  232. package/dist/components/Listbox/index.cjs +10 -6
  233. package/dist/components/Listbox/index.cjs.map +1 -1
  234. package/dist/components/Listbox/index.d.ts +2 -2
  235. package/dist/components/Listbox/index.d.ts.map +1 -1
  236. package/dist/components/Listbox/index.js +10 -6
  237. package/dist/components/Listbox/index.js.map +1 -1
  238. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  239. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  240. package/dist/components/Markdown/index.d.ts +4 -2
  241. package/dist/components/Markdown/index.d.ts.map +1 -1
  242. package/dist/components/Menu/Menu.module.scss.cjs +13 -13
  243. package/dist/components/Menu/Menu.module.scss.js +13 -13
  244. package/dist/components/Menu/index.cjs +12 -1
  245. package/dist/components/Menu/index.cjs.map +1 -1
  246. package/dist/components/Menu/index.d.ts +9 -4
  247. package/dist/components/Menu/index.d.ts.map +1 -1
  248. package/dist/components/Menu/index.js +12 -1
  249. package/dist/components/Menu/index.js.map +1 -1
  250. package/dist/components/Message/Message.module.scss.cjs +18 -18
  251. package/dist/components/Message/Message.module.scss.js +18 -18
  252. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +28 -28
  253. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +28 -28
  254. package/dist/components/NavigationMenu/NavigationMenuContext.cjs.map +1 -1
  255. package/dist/components/NavigationMenu/NavigationMenuContext.d.ts +8 -0
  256. package/dist/components/NavigationMenu/NavigationMenuContext.d.ts.map +1 -1
  257. package/dist/components/NavigationMenu/NavigationMenuContext.js.map +1 -1
  258. package/dist/components/NavigationMenu/index.cjs +49 -10
  259. package/dist/components/NavigationMenu/index.cjs.map +1 -1
  260. package/dist/components/NavigationMenu/index.d.ts +5 -1
  261. package/dist/components/NavigationMenu/index.d.ts.map +1 -1
  262. package/dist/components/NavigationMenu/index.js +49 -10
  263. package/dist/components/NavigationMenu/index.js.map +1 -1
  264. package/dist/components/Pagination/index.cjs +37 -9
  265. package/dist/components/Pagination/index.cjs.map +1 -1
  266. package/dist/components/Pagination/index.d.ts +2 -3
  267. package/dist/components/Pagination/index.d.ts.map +1 -1
  268. package/dist/components/Pagination/index.js +37 -9
  269. package/dist/components/Pagination/index.js.map +1 -1
  270. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  271. package/dist/components/Popover/Popover.module.scss.js +10 -10
  272. package/dist/components/Popover/index.cjs +43 -2
  273. package/dist/components/Popover/index.cjs.map +1 -1
  274. package/dist/components/Popover/index.d.ts +16 -6
  275. package/dist/components/Popover/index.d.ts.map +1 -1
  276. package/dist/components/Popover/index.js +26 -2
  277. package/dist/components/Popover/index.js.map +1 -1
  278. package/dist/components/Progress/index.cjs +3 -1
  279. package/dist/components/Progress/index.cjs.map +1 -1
  280. package/dist/components/Progress/index.d.ts.map +1 -1
  281. package/dist/components/Progress/index.js +3 -1
  282. package/dist/components/Progress/index.js.map +1 -1
  283. package/dist/components/Prompt/Prompt.module.scss.cjs +14 -14
  284. package/dist/components/Prompt/Prompt.module.scss.js +14 -14
  285. package/dist/components/Prompt/index.cjs +14 -2
  286. package/dist/components/Prompt/index.cjs.map +1 -1
  287. package/dist/components/Prompt/index.d.ts +8 -5
  288. package/dist/components/Prompt/index.d.ts.map +1 -1
  289. package/dist/components/Prompt/index.js +14 -2
  290. package/dist/components/Prompt/index.js.map +1 -1
  291. package/dist/components/RadioGroup/index.cjs +14 -6
  292. package/dist/components/RadioGroup/index.cjs.map +1 -1
  293. package/dist/components/RadioGroup/index.d.ts +12 -2
  294. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  295. package/dist/components/RadioGroup/index.js +14 -6
  296. package/dist/components/RadioGroup/index.js.map +1 -1
  297. package/dist/components/Select/Select.module.scss.cjs +10 -10
  298. package/dist/components/Select/Select.module.scss.js +10 -10
  299. package/dist/components/Select/index.cjs +37 -24
  300. package/dist/components/Select/index.cjs.map +1 -1
  301. package/dist/components/Select/index.d.ts +6 -2
  302. package/dist/components/Select/index.d.ts.map +1 -1
  303. package/dist/components/Select/index.js +37 -24
  304. package/dist/components/Select/index.js.map +1 -1
  305. package/dist/components/Sidebar/Sidebar.module.scss.cjs +42 -42
  306. package/dist/components/Sidebar/Sidebar.module.scss.js +42 -42
  307. package/dist/components/Sidebar/index.cjs +2 -2
  308. package/dist/components/Sidebar/index.cjs.map +1 -1
  309. package/dist/components/Sidebar/index.d.ts +3 -3
  310. package/dist/components/Sidebar/index.d.ts.map +1 -1
  311. package/dist/components/Sidebar/index.js +2 -2
  312. package/dist/components/Sidebar/index.js.map +1 -1
  313. package/dist/components/Skeleton/index.cjs +6 -3
  314. package/dist/components/Skeleton/index.cjs.map +1 -1
  315. package/dist/components/Skeleton/index.d.ts +3 -7
  316. package/dist/components/Skeleton/index.d.ts.map +1 -1
  317. package/dist/components/Skeleton/index.js +6 -3
  318. package/dist/components/Skeleton/index.js.map +1 -1
  319. package/dist/components/Slider/Slider.module.scss.cjs +13 -10
  320. package/dist/components/Slider/Slider.module.scss.cjs.map +1 -1
  321. package/dist/components/Slider/Slider.module.scss.js +13 -10
  322. package/dist/components/Slider/Slider.module.scss.js.map +1 -1
  323. package/dist/components/Slider/index.cjs +33 -1
  324. package/dist/components/Slider/index.cjs.map +1 -1
  325. package/dist/components/Slider/index.d.ts +2 -0
  326. package/dist/components/Slider/index.d.ts.map +1 -1
  327. package/dist/components/Slider/index.js +33 -1
  328. package/dist/components/Slider/index.js.map +1 -1
  329. package/dist/components/Stack/index.cjs +12 -2
  330. package/dist/components/Stack/index.cjs.map +1 -1
  331. package/dist/components/Stack/index.d.ts +3 -2
  332. package/dist/components/Stack/index.d.ts.map +1 -1
  333. package/dist/components/Stack/index.js +12 -2
  334. package/dist/components/Stack/index.js.map +1 -1
  335. package/dist/components/Table/Table.module.scss.cjs +16 -16
  336. package/dist/components/Table/Table.module.scss.js +16 -16
  337. package/dist/components/Table/index.d.ts +10 -4
  338. package/dist/components/Table/index.d.ts.map +1 -1
  339. package/dist/components/TableOfContents/index.cjs +8 -5
  340. package/dist/components/TableOfContents/index.cjs.map +1 -1
  341. package/dist/components/TableOfContents/index.d.ts +2 -2
  342. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  343. package/dist/components/TableOfContents/index.js +8 -5
  344. package/dist/components/TableOfContents/index.js.map +1 -1
  345. package/dist/components/Tabs/Tabs.module.scss.cjs +9 -9
  346. package/dist/components/Tabs/Tabs.module.scss.js +9 -9
  347. package/dist/components/Tabs/index.cjs +9 -6
  348. package/dist/components/Tabs/index.cjs.map +1 -1
  349. package/dist/components/Tabs/index.d.ts +4 -1
  350. package/dist/components/Tabs/index.d.ts.map +1 -1
  351. package/dist/components/Tabs/index.js +9 -6
  352. package/dist/components/Tabs/index.js.map +1 -1
  353. package/dist/components/Textarea/index.cjs +61 -43
  354. package/dist/components/Textarea/index.cjs.map +1 -1
  355. package/dist/components/Textarea/index.d.ts +9 -1
  356. package/dist/components/Textarea/index.d.ts.map +1 -1
  357. package/dist/components/Textarea/index.js +61 -43
  358. package/dist/components/Textarea/index.js.map +1 -1
  359. package/dist/components/Theme/index.cjs +3 -1
  360. package/dist/components/Theme/index.cjs.map +1 -1
  361. package/dist/components/Theme/index.d.ts +2 -4
  362. package/dist/components/Theme/index.d.ts.map +1 -1
  363. package/dist/components/Theme/index.js +3 -1
  364. package/dist/components/Theme/index.js.map +1 -1
  365. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +22 -22
  366. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +22 -22
  367. package/dist/components/Toast/Toast.module.scss.cjs +20 -20
  368. package/dist/components/Toast/Toast.module.scss.js +20 -20
  369. package/dist/components/Toast/index.cjs +15 -14
  370. package/dist/components/Toast/index.cjs.map +1 -1
  371. package/dist/components/Toast/index.d.ts +9 -5
  372. package/dist/components/Toast/index.d.ts.map +1 -1
  373. package/dist/components/Toast/index.js +15 -14
  374. package/dist/components/Toast/index.js.map +1 -1
  375. package/dist/components/Toggle/Toggle.module.scss.cjs +11 -11
  376. package/dist/components/Toggle/Toggle.module.scss.js +11 -11
  377. package/dist/components/Toggle/index.cjs +1 -1
  378. package/dist/components/Toggle/index.cjs.map +1 -1
  379. package/dist/components/Toggle/index.js +1 -1
  380. package/dist/components/Toggle/index.js.map +1 -1
  381. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +17 -17
  382. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +17 -17
  383. package/dist/components/ToggleGroup/index.cjs +27 -8
  384. package/dist/components/ToggleGroup/index.cjs.map +1 -1
  385. package/dist/components/ToggleGroup/index.d.ts +8 -3
  386. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  387. package/dist/components/ToggleGroup/index.js +27 -8
  388. package/dist/components/ToggleGroup/index.js.map +1 -1
  389. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  390. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  391. package/dist/components/Tooltip/index.cjs +20 -4
  392. package/dist/components/Tooltip/index.cjs.map +1 -1
  393. package/dist/components/Tooltip/index.d.ts +3 -1
  394. package/dist/components/Tooltip/index.d.ts.map +1 -1
  395. package/dist/components/Tooltip/index.js +20 -4
  396. package/dist/components/Tooltip/index.js.map +1 -1
  397. package/dist/components/VisuallyHidden/index.cjs +10 -2
  398. package/dist/components/VisuallyHidden/index.cjs.map +1 -1
  399. package/dist/components/VisuallyHidden/index.d.ts +1 -1
  400. package/dist/components/VisuallyHidden/index.d.ts.map +1 -1
  401. package/dist/components/VisuallyHidden/index.js +10 -2
  402. package/dist/components/VisuallyHidden/index.js.map +1 -1
  403. package/dist/datepicker.cjs +8 -1
  404. package/dist/datepicker.cjs.map +1 -1
  405. package/dist/datepicker.js +8 -1
  406. package/dist/datepicker.js.map +1 -1
  407. package/dist/index.cjs.map +1 -1
  408. package/dist/index.d.ts +2 -1
  409. package/dist/index.d.ts.map +1 -1
  410. package/dist/index.js.map +1 -1
  411. package/dist/markdown.cjs +5 -5
  412. package/dist/markdown.cjs.map +1 -1
  413. package/dist/markdown.js +5 -5
  414. package/dist/markdown.js.map +1 -1
  415. package/dist/table.cjs +19 -3
  416. package/dist/table.cjs.map +1 -1
  417. package/dist/table.js +19 -3
  418. package/dist/table.js.map +1 -1
  419. package/fragments.json +1 -1
  420. package/package.json +2 -2
  421. package/src/blocks/AccountSettings.block.ts +1 -1
  422. package/src/blocks/ActivityFeed.block.ts +1 -1
  423. package/src/blocks/ActivityFeedSkeleton.block.ts +1 -1
  424. package/src/blocks/BlogEditor.block.ts +1 -1
  425. package/src/blocks/ChatInterface.block.ts +1 -1
  426. package/src/blocks/ChatMessages.block.ts +1 -1
  427. package/src/blocks/CheckoutForm.block.ts +1 -1
  428. package/src/blocks/CommandPalette.block.ts +1 -1
  429. package/src/blocks/ContactForm.block.ts +1 -1
  430. package/src/blocks/DashboardLayout.block.ts +1 -1
  431. package/src/blocks/DashboardPage.block.ts +1 -1
  432. package/src/blocks/DashboardSkeleton.block.ts +1 -1
  433. package/src/blocks/DataTable.block.ts +1 -1
  434. package/src/blocks/EmptyState.block.ts +1 -1
  435. package/src/blocks/FAQSection.block.ts +1 -1
  436. package/src/blocks/FeatureGrid.block.ts +1 -1
  437. package/src/blocks/HeroSection.block.ts +1 -1
  438. package/src/blocks/LoginForm.block.ts +1 -1
  439. package/src/blocks/NavigationHeader.block.ts +1 -1
  440. package/src/blocks/PaginatedTable.block.ts +1 -1
  441. package/src/blocks/PricingComparison.block.ts +1 -1
  442. package/src/blocks/ProductCard.block.ts +1 -1
  443. package/src/blocks/RegistrationForm.block.ts +1 -1
  444. package/src/blocks/SettingsDrawer.block.ts +1 -1
  445. package/src/blocks/SettingsPanel.block.ts +1 -1
  446. package/src/blocks/ShoppingCart.block.ts +1 -1
  447. package/src/blocks/StatsCard.block.ts +1 -1
  448. package/src/blocks/StatsCardSkeleton.block.ts +1 -1
  449. package/src/blocks/TableSkeleton.block.ts +1 -1
  450. package/src/blocks/ThinkingStates.block.ts +1 -1
  451. package/src/components/Accordion/Accordion.fragment.tsx +7 -7
  452. package/src/components/Accordion/Accordion.module.scss +2 -2
  453. package/src/components/Accordion/Accordion.test.tsx +8 -5
  454. package/src/components/Accordion/index.tsx +33 -13
  455. package/src/components/Alert/Alert.fragment.tsx +5 -1
  456. package/src/components/Alert/Alert.module.scss +1 -1
  457. package/src/components/Alert/Alert.test.tsx +25 -0
  458. package/src/components/Alert/index.tsx +49 -30
  459. package/src/components/AppShell/AppShell.fragment.tsx +1 -1
  460. package/src/components/AppShell/AppShell.module.scss +5 -5
  461. package/src/components/AppShell/AppShell.test.tsx +12 -0
  462. package/src/components/AppShell/index.tsx +2 -0
  463. package/src/components/Avatar/Avatar.fragment.tsx +7 -1
  464. package/src/components/Avatar/Avatar.test.tsx +24 -2
  465. package/src/components/Avatar/index.tsx +13 -1
  466. package/src/components/Badge/Badge.fragment.tsx +16 -1
  467. package/src/components/Badge/Badge.test.tsx +8 -1
  468. package/src/components/Badge/index.tsx +7 -2
  469. package/src/components/BentoGrid/BentoGrid.fragment.tsx +3 -1
  470. package/src/components/BentoGrid/BentoGrid.module.scss +52 -16
  471. package/src/components/BentoGrid/BentoGrid.test.tsx +20 -0
  472. package/src/components/BentoGrid/index.tsx +9 -12
  473. package/src/components/Box/Box.fragment.tsx +3 -1
  474. package/src/components/Box/Box.test.tsx +14 -0
  475. package/src/components/Box/index.tsx +8 -2
  476. package/src/components/Breadcrumbs/Breadcrumbs.fragment.tsx +19 -1
  477. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +13 -0
  478. package/src/components/Breadcrumbs/index.tsx +5 -1
  479. package/src/components/Button/Button.fragment.tsx +28 -6
  480. package/src/components/Button/Button.module.scss +3 -3
  481. package/src/components/Button/Button.test.tsx +11 -0
  482. package/src/components/Button/index.tsx +16 -6
  483. package/src/components/ButtonGroup/ButtonGroup.fragment.tsx +4 -2
  484. package/src/components/ButtonGroup/ButtonGroup.test.tsx +10 -0
  485. package/src/components/ButtonGroup/index.tsx +3 -3
  486. package/src/components/Card/Card.fragment.tsx +24 -9
  487. package/src/components/Card/Card.module.scss +8 -8
  488. package/src/components/Card/Card.test.tsx +4 -5
  489. package/src/components/Card/index.tsx +8 -38
  490. package/src/components/Chart/Chart.fragment.tsx +5 -3
  491. package/src/components/Chart/Chart.module.scss +1 -1
  492. package/src/components/Chart/index.tsx +12 -10
  493. package/src/components/Checkbox/Checkbox.fragment.tsx +27 -1
  494. package/src/components/Checkbox/Checkbox.module.scss +3 -3
  495. package/src/components/Checkbox/index.tsx +16 -3
  496. package/src/components/Chip/Chip.fragment.tsx +20 -3
  497. package/src/components/Chip/Chip.test.tsx +28 -0
  498. package/src/components/Chip/index.tsx +14 -6
  499. package/src/components/CodeBlock/CodeBlock.fragment.tsx +3 -1
  500. package/src/components/CodeBlock/CodeBlock.module.scss +9 -9
  501. package/src/components/CodeBlock/CodeBlock.test.tsx +21 -0
  502. package/src/components/CodeBlock/index.tsx +23 -9
  503. package/src/components/Collapsible/Collapsible.fragment.tsx +1 -1
  504. package/src/components/Collapsible/Collapsible.module.scss +1 -1
  505. package/src/components/ColorPicker/ColorPicker.fragment.tsx +1 -1
  506. package/src/components/Combobox/Combobox.fragment.tsx +63 -9
  507. package/src/components/Combobox/Combobox.module.scss +4 -7
  508. package/src/components/Combobox/Combobox.test.tsx +24 -3
  509. package/src/components/Combobox/index.tsx +117 -34
  510. package/src/components/Command/Command.fragment.tsx +3 -3
  511. package/src/components/Command/Command.module.scss +5 -5
  512. package/src/components/Command/Command.test.tsx +17 -0
  513. package/src/components/Command/index.tsx +8 -5
  514. package/src/components/ConversationList/ConversationList.fragment.tsx +4 -3
  515. package/src/components/ConversationList/ConversationList.module.scss +5 -5
  516. package/src/components/ConversationList/ConversationList.test.tsx +21 -0
  517. package/src/components/ConversationList/index.tsx +8 -4
  518. package/src/components/DataTable/DataTable.fragment.tsx +12 -2
  519. package/src/components/DataTable/DataTable.module.scss +3 -3
  520. package/src/components/DataTable/DataTable.test.tsx +23 -2
  521. package/src/components/DataTable/index.tsx +23 -5
  522. package/src/components/DatePicker/DatePicker.fragment.tsx +3 -1
  523. package/src/components/DatePicker/DatePicker.module.scss +1 -1
  524. package/src/components/DatePicker/DatePicker.test.tsx +17 -0
  525. package/src/components/DatePicker/index.tsx +9 -2
  526. package/src/components/Dialog/Dialog.fragment.tsx +28 -1
  527. package/src/components/Dialog/Dialog.module.scss +6 -6
  528. package/src/components/Dialog/index.tsx +25 -7
  529. package/src/components/Drawer/Drawer.fragment.tsx +4 -1
  530. package/src/components/Drawer/Drawer.module.scss +3 -3
  531. package/src/components/Drawer/Drawer.test.tsx +8 -0
  532. package/src/components/Drawer/index.tsx +15 -3
  533. package/src/components/Editor/Editor.fragment.tsx +10 -3
  534. package/src/components/Editor/Editor.module.scss +4 -4
  535. package/src/components/Editor/Editor.test.tsx +68 -1
  536. package/src/components/Editor/index.tsx +60 -9
  537. package/src/components/EmptyState/EmptyState.fragment.tsx +3 -1
  538. package/src/components/EmptyState/EmptyState.module.scss +3 -3
  539. package/src/components/EmptyState/EmptyState.test.tsx +18 -0
  540. package/src/components/EmptyState/index.tsx +16 -16
  541. package/src/components/Field/Field.fragment.tsx +1 -1
  542. package/src/components/Fieldset/Fieldset.fragment.tsx +3 -1
  543. package/src/components/Fieldset/Fieldset.test.tsx +14 -0
  544. package/src/components/Fieldset/index.tsx +3 -4
  545. package/src/components/Form/Form.fragment.tsx +12 -7
  546. package/src/components/Form/index.tsx +13 -17
  547. package/src/components/Grid/Grid.fragment.tsx +4 -3
  548. package/src/components/Grid/Grid.module.scss +3 -3
  549. package/src/components/Grid/index.tsx +11 -6
  550. package/src/components/Header/Header.fragment.tsx +31 -1
  551. package/src/components/Header/Header.module.scss +6 -6
  552. package/src/components/Header/Header.test.tsx +95 -1
  553. package/src/components/Header/index.tsx +95 -46
  554. package/src/components/Icon/Icon.fragment.tsx +21 -8
  555. package/src/components/Icon/Icon.test.tsx +27 -3
  556. package/src/components/Icon/index.tsx +39 -15
  557. package/src/components/Image/Image.fragment.tsx +15 -1
  558. package/src/components/Image/Image.test.tsx +32 -1
  559. package/src/components/Image/index.tsx +24 -4
  560. package/src/components/Input/Input.fragment.tsx +49 -1
  561. package/src/components/Input/Input.module.scss +4 -2
  562. package/src/components/Input/Input.test.tsx +3 -3
  563. package/src/components/Input/index.tsx +103 -37
  564. package/src/components/Link/Link.fragment.tsx +7 -6
  565. package/src/components/Link/Link.test.tsx +17 -1
  566. package/src/components/Link/index.tsx +22 -0
  567. package/src/components/List/List.fragment.tsx +1 -1
  568. package/src/components/Listbox/Listbox.fragment.tsx +3 -3
  569. package/src/components/Listbox/Listbox.module.scss +4 -4
  570. package/src/components/Listbox/Listbox.test.tsx +14 -0
  571. package/src/components/Listbox/index.tsx +12 -2
  572. package/src/components/Loading/Loading.fragment.tsx +1 -1
  573. package/src/components/Markdown/Markdown.fragment.tsx +5 -3
  574. package/src/components/Markdown/Markdown.module.scss +5 -5
  575. package/src/components/Markdown/Markdown.test.tsx +6 -0
  576. package/src/components/Markdown/index.tsx +12 -9
  577. package/src/components/Menu/Menu.fragment.tsx +19 -1
  578. package/src/components/Menu/Menu.module.scss +11 -11
  579. package/src/components/Menu/index.tsx +19 -7
  580. package/src/components/Message/Message.fragment.tsx +1 -1
  581. package/src/components/Message/Message.module.scss +3 -3
  582. package/src/components/NavigationMenu/NavigationMenu.fragment.tsx +9 -1
  583. package/src/components/NavigationMenu/NavigationMenu.module.scss +7 -7
  584. package/src/components/NavigationMenu/NavigationMenu.test.tsx +48 -0
  585. package/src/components/NavigationMenu/NavigationMenuContext.ts +14 -0
  586. package/src/components/NavigationMenu/index.tsx +70 -7
  587. package/src/components/Pagination/Pagination.fragment.tsx +4 -1
  588. package/src/components/Pagination/Pagination.test.tsx +39 -0
  589. package/src/components/Pagination/index.tsx +36 -10
  590. package/src/components/Popover/Popover.fragment.tsx +18 -1
  591. package/src/components/Popover/Popover.module.scss +13 -13
  592. package/src/components/Popover/index.tsx +33 -8
  593. package/src/components/Progress/Progress.fragment.tsx +3 -1
  594. package/src/components/Progress/Progress.test.tsx +8 -0
  595. package/src/components/Progress/index.tsx +9 -1
  596. package/src/components/Prompt/Prompt.fragment.tsx +4 -1
  597. package/src/components/Prompt/Prompt.module.scss +3 -3
  598. package/src/components/Prompt/Prompt.test.tsx +19 -0
  599. package/src/components/Prompt/index.tsx +24 -6
  600. package/src/components/RadioGroup/RadioGroup.fragment.tsx +31 -1
  601. package/src/components/RadioGroup/index.tsx +22 -3
  602. package/src/components/ScrollArea/ScrollArea.fragment.tsx +1 -1
  603. package/src/components/Select/Select.fragment.tsx +30 -3
  604. package/src/components/Select/Select.module.scss +3 -3
  605. package/src/components/Select/index.tsx +46 -33
  606. package/src/components/Separator/Separator.fragment.tsx +1 -1
  607. package/src/components/Sidebar/Sidebar.fragment.tsx +3 -1
  608. package/src/components/Sidebar/Sidebar.module.scss +20 -20
  609. package/src/components/Sidebar/Sidebar.test.tsx +25 -0
  610. package/src/components/Sidebar/index.tsx +7 -7
  611. package/src/components/Skeleton/Skeleton.fragment.tsx +3 -1
  612. package/src/components/Skeleton/Skeleton.test.tsx +12 -0
  613. package/src/components/Skeleton/index.tsx +6 -7
  614. package/src/components/Slider/Slider.fragment.tsx +21 -1
  615. package/src/components/Slider/Slider.module.scss +31 -0
  616. package/src/components/Slider/Slider.test.tsx +16 -0
  617. package/src/components/Slider/index.tsx +40 -1
  618. package/src/components/Stack/Stack.fragment.tsx +3 -1
  619. package/src/components/Stack/index.tsx +13 -6
  620. package/src/components/Table/Table.fragment.tsx +43 -2
  621. package/src/components/Table/Table.module.scss +2 -2
  622. package/src/components/Table/index.tsx +23 -5
  623. package/src/components/TableOfContents/TableOfContents.fragment.tsx +4 -2
  624. package/src/components/TableOfContents/TableOfContents.test.tsx +34 -9
  625. package/src/components/TableOfContents/index.tsx +9 -5
  626. package/src/components/Tabs/Tabs.fragment.tsx +33 -8
  627. package/src/components/Tabs/Tabs.module.scss +8 -8
  628. package/src/components/Tabs/index.tsx +22 -14
  629. package/src/components/Text/Text.fragment.tsx +1 -1
  630. package/src/components/Textarea/Textarea.fragment.tsx +27 -1
  631. package/src/components/Textarea/index.tsx +39 -14
  632. package/src/components/Theme/Theme.fragment.tsx +3 -1
  633. package/src/components/Theme/Theme.test.tsx +11 -0
  634. package/src/components/Theme/index.tsx +3 -3
  635. package/src/components/ThinkingIndicator/ThinkingIndicator.fragment.tsx +1 -1
  636. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +1 -1
  637. package/src/components/Toast/Toast.fragment.tsx +6 -3
  638. package/src/components/Toast/Toast.module.scss +8 -6
  639. package/src/components/Toast/index.tsx +24 -20
  640. package/src/components/Toggle/Toggle.fragment.tsx +1 -1
  641. package/src/components/Toggle/Toggle.module.scss +61 -21
  642. package/src/components/Toggle/index.tsx +3 -3
  643. package/src/components/ToggleGroup/ToggleGroup.fragment.tsx +33 -8
  644. package/src/components/ToggleGroup/ToggleGroup.module.scss +3 -3
  645. package/src/components/ToggleGroup/index.tsx +29 -9
  646. package/src/components/Tooltip/Tooltip.fragment.tsx +16 -1
  647. package/src/components/Tooltip/Tooltip.module.scss +1 -1
  648. package/src/components/Tooltip/index.tsx +16 -1
  649. package/src/components/VisuallyHidden/VisuallyHidden.fragment.tsx +3 -1
  650. package/src/components/VisuallyHidden/VisuallyHidden.test.tsx +12 -0
  651. package/src/components/VisuallyHidden/index.tsx +7 -3
  652. package/src/index.ts +3 -2
  653. package/src/tokens/_computed.scss +1 -19
  654. package/src/tokens/_density.scss +0 -42
  655. package/src/tokens/_mixins.scss +4 -0
  656. package/src/tokens/_variables.scss +12 -114
@@ -26,7 +26,8 @@ const BentoGrid = React.forwardRef(
26
26
  columns = 3,
27
27
  gap = "md",
28
28
  className,
29
- style
29
+ style,
30
+ ...htmlProps
30
31
  }, ref) {
31
32
  const classes = [
32
33
  styles.grid,
@@ -34,7 +35,7 @@ const BentoGrid = React.forwardRef(
34
35
  gapClasses[gap],
35
36
  className
36
37
  ].filter(Boolean).join(" ");
37
- return /* @__PURE__ */ jsx("div", { ref, className: classes, style, children });
38
+ return /* @__PURE__ */ jsx("div", { ref, ...htmlProps, className: classes, style, children });
38
39
  }
39
40
  );
40
41
  const BentoGridItem = React.forwardRef(
@@ -42,16 +43,18 @@ const BentoGridItem = React.forwardRef(
42
43
  children,
43
44
  colSpan,
44
45
  rowSpan,
45
- className
46
+ className,
47
+ style,
48
+ ...htmlProps
46
49
  }, ref) {
47
50
  const spanVars = {
48
51
  ...getSpanVars(colSpan, "bento-col-span"),
49
52
  ...getSpanVars(rowSpan, "bento-row-span")
50
53
  };
51
54
  const hasVars = Object.keys(spanVars).length > 0;
52
- const inlineStyle = hasVars ? spanVars : void 0;
55
+ const inlineStyle = hasVars ? { ...spanVars, ...style } : style;
53
56
  const classes = [styles.item, className].filter(Boolean).join(" ");
54
- return /* @__PURE__ */ jsx("div", { ref, className: classes, style: inlineStyle, children });
57
+ return /* @__PURE__ */ jsx("div", { ref, ...htmlProps, className: classes, style: inlineStyle, children });
55
58
  }
56
59
  );
57
60
  BentoGrid.Item = BentoGridItem;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/BentoGrid/index.tsx"],"sourcesContent":["import * as React from 'react';\nimport styles from './BentoGrid.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\ntype SpanValue = 1 | 2 | 3;\n\nexport interface ResponsiveSpan {\n /** Default (mobile-first) */\n base?: SpanValue;\n /** ≥640px */\n sm?: SpanValue;\n /** ≥768px */\n md?: SpanValue;\n /** ≥1024px */\n lg?: SpanValue;\n /** ≥1280px */\n xl?: SpanValue;\n}\n\nexport interface BentoGridProps {\n children?: React.ReactNode;\n /** Number of columns (default: 3) — auto-collapses responsively */\n columns?: 2 | 3 | 4;\n /** Gap between grid items */\n gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Additional class name */\n className?: string;\n /** Inline styles */\n style?: React.CSSProperties;\n}\n\nexport interface BentoGridItemProps {\n children?: React.ReactNode;\n /** Columns to span — number for all breakpoints, object for per-breakpoint */\n colSpan?: SpanValue | ResponsiveSpan;\n /** Rows to span — number for all breakpoints, object for per-breakpoint */\n rowSpan?: SpanValue | ResponsiveSpan;\n /** Additional class name */\n className?: string;\n}\n\n// ============================================\n// Helpers\n// ============================================\n\nconst gapClasses: Record<NonNullable<BentoGridProps['gap']>, string> = {\n none: styles.gapNone,\n xs: styles.gapXs,\n sm: styles.gapSm,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n};\n\nfunction getSpanVars(\n span: SpanValue | ResponsiveSpan | undefined,\n prefix: string\n): Record<string, number> {\n if (!span || span === 1) return {};\n if (typeof span === 'number') return { [`--${prefix}`]: span };\n const vars: Record<string, number> = {};\n if (span.base && span.base > 1) vars[`--${prefix}`] = span.base;\n if (span.sm) vars[`--${prefix}-sm`] = span.sm;\n if (span.md) vars[`--${prefix}-md`] = span.md;\n if (span.lg) vars[`--${prefix}-lg`] = span.lg;\n if (span.xl) vars[`--${prefix}-xl`] = span.xl;\n return vars;\n}\n\n// ============================================\n// BentoGrid Component\n// ============================================\n\nexport const BentoGrid = React.forwardRef<HTMLDivElement, BentoGridProps>(\n function BentoGrid(\n {\n children,\n columns = 3,\n gap = 'md',\n className,\n style,\n },\n ref\n ) {\n const classes = [\n styles.grid,\n styles[`columns${columns}`],\n gapClasses[gap],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div ref={ref} className={classes} style={style}>\n {children}\n </div>\n );\n }\n) as BentoGridComponent;\n\n// ============================================\n// BentoGrid.Item Sub-component\n// ============================================\n\nconst BentoGridItem = React.forwardRef<HTMLDivElement, BentoGridItemProps>(\n function BentoGridItem(\n {\n children,\n colSpan,\n rowSpan,\n className,\n },\n ref\n ) {\n const spanVars = {\n ...getSpanVars(colSpan, 'bento-col-span'),\n ...getSpanVars(rowSpan, 'bento-row-span'),\n };\n\n const hasVars = Object.keys(spanVars).length > 0;\n const inlineStyle = hasVars\n ? (spanVars as unknown as React.CSSProperties)\n : undefined;\n\n const classes = [styles.item, className].filter(Boolean).join(' ');\n\n return (\n <div ref={ref} className={classes} style={inlineStyle}>\n {children}\n </div>\n );\n }\n);\n\n// ============================================\n// Compound component type\n// ============================================\n\ninterface BentoGridComponent\n extends React.ForwardRefExoticComponent<BentoGridProps & React.RefAttributes<HTMLDivElement>> {\n Item: typeof BentoGridItem;\n}\n\n(BentoGrid as BentoGridComponent).Item = BentoGridItem;\n"],"names":["BentoGrid","BentoGridItem"],"mappings":";;;AAgDA,MAAM,aAAiE;AAAA,EACrE,MAAM,OAAO;AAAA,EACb,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AACb;AAEA,SAAS,YACP,MACA,QACwB;AACxB,MAAI,CAAC,QAAQ,SAAS,UAAU,CAAA;AAChC,MAAI,OAAO,SAAS,SAAU,QAAO,EAAE,CAAC,KAAK,MAAM,EAAE,GAAG,KAAA;AACxD,QAAM,OAA+B,CAAA;AACrC,MAAI,KAAK,QAAQ,KAAK,OAAO,QAAQ,KAAK,MAAM,EAAE,IAAI,KAAK;AAC3D,MAAI,KAAK,GAAI,MAAK,KAAK,MAAM,KAAK,IAAI,KAAK;AAC3C,MAAI,KAAK,GAAI,MAAK,KAAK,MAAM,KAAK,IAAI,KAAK;AAC3C,MAAI,KAAK,GAAI,MAAK,KAAK,MAAM,KAAK,IAAI,KAAK;AAC3C,MAAI,KAAK,GAAI,MAAK,KAAK,MAAM,KAAK,IAAI,KAAK;AAC3C,SAAO;AACT;AAMO,MAAM,YAAY,MAAM;AAAA,EAC7B,SAASA,WACP;AAAA,IACE;AAAA,IACA,UAAU;AAAA,IACV,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EAAA,GAEF,KACA;AACA,UAAM,UAAU;AAAA,MACd,OAAO;AAAA,MACP,OAAO,UAAU,OAAO,EAAE;AAAA,MAC1B,WAAW,GAAG;AAAA,MACd;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,+BACG,OAAA,EAAI,KAAU,WAAW,SAAS,OAChC,UACH;AAAA,EAEJ;AACF;AAMA,MAAM,gBAAgB,MAAM;AAAA,EAC1B,SAASC,eACP;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,GAEF,KACA;AACA,UAAM,WAAW;AAAA,MACf,GAAG,YAAY,SAAS,gBAAgB;AAAA,MACxC,GAAG,YAAY,SAAS,gBAAgB;AAAA,IAAA;AAG1C,UAAM,UAAU,OAAO,KAAK,QAAQ,EAAE,SAAS;AAC/C,UAAM,cAAc,UACf,WACD;AAEJ,UAAM,UAAU,CAAC,OAAO,MAAM,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAEjE,+BACG,OAAA,EAAI,KAAU,WAAW,SAAS,OAAO,aACvC,UACH;AAAA,EAEJ;AACF;AAWC,UAAiC,OAAO;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/BentoGrid/index.tsx"],"sourcesContent":["import * as React from 'react';\nimport styles from './BentoGrid.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\ntype SpanValue = 1 | 2 | 3;\n\nexport interface ResponsiveSpan {\n /** Default (mobile-first) */\n base?: SpanValue;\n /** ≥640px */\n sm?: SpanValue;\n /** ≥768px */\n md?: SpanValue;\n /** ≥1024px */\n lg?: SpanValue;\n /** ≥1280px */\n xl?: SpanValue;\n}\n\nexport interface BentoGridProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n /** Number of columns (default: 3) — auto-collapses responsively */\n columns?: 2 | 3 | 4;\n /** Gap between grid items */\n gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n}\n\nexport interface BentoGridItemProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode;\n /** Columns to span — number for all breakpoints, object for per-breakpoint */\n colSpan?: SpanValue | ResponsiveSpan;\n /** Rows to span — number for all breakpoints, object for per-breakpoint */\n rowSpan?: SpanValue | ResponsiveSpan;\n}\n\n// ============================================\n// Helpers\n// ============================================\n\nconst gapClasses: Record<NonNullable<BentoGridProps['gap']>, string> = {\n none: styles.gapNone,\n xs: styles.gapXs,\n sm: styles.gapSm,\n md: styles.gapMd,\n lg: styles.gapLg,\n xl: styles.gapXl,\n};\n\nfunction getSpanVars(\n span: SpanValue | ResponsiveSpan | undefined,\n prefix: string\n): Record<string, number> {\n if (!span || span === 1) return {};\n if (typeof span === 'number') return { [`--${prefix}`]: span };\n const vars: Record<string, number> = {};\n if (span.base && span.base > 1) vars[`--${prefix}`] = span.base;\n if (span.sm) vars[`--${prefix}-sm`] = span.sm;\n if (span.md) vars[`--${prefix}-md`] = span.md;\n if (span.lg) vars[`--${prefix}-lg`] = span.lg;\n if (span.xl) vars[`--${prefix}-xl`] = span.xl;\n return vars;\n}\n\n// ============================================\n// BentoGrid Component\n// ============================================\n\nexport const BentoGrid = React.forwardRef<HTMLDivElement, BentoGridProps>(\n function BentoGrid(\n {\n children,\n columns = 3,\n gap = 'md',\n className,\n style,\n ...htmlProps\n },\n ref\n ) {\n const classes = [\n styles.grid,\n styles[`columns${columns}`],\n gapClasses[gap],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div ref={ref} {...htmlProps} className={classes} style={style}>\n {children}\n </div>\n );\n }\n) as BentoGridComponent;\n\n// ============================================\n// BentoGrid.Item Sub-component\n// ============================================\n\nconst BentoGridItem = React.forwardRef<HTMLDivElement, BentoGridItemProps>(\n function BentoGridItem(\n {\n children,\n colSpan,\n rowSpan,\n className,\n style,\n ...htmlProps\n },\n ref\n ) {\n const spanVars = {\n ...getSpanVars(colSpan, 'bento-col-span'),\n ...getSpanVars(rowSpan, 'bento-row-span'),\n };\n\n const hasVars = Object.keys(spanVars).length > 0;\n const inlineStyle = hasVars\n ? ({ ...(spanVars as unknown as React.CSSProperties), ...style } as React.CSSProperties)\n : style;\n\n const classes = [styles.item, className].filter(Boolean).join(' ');\n\n return (\n <div ref={ref} {...htmlProps} className={classes} style={inlineStyle}>\n {children}\n </div>\n );\n }\n);\n\n// ============================================\n// Compound component type\n// ============================================\n\ninterface BentoGridComponent\n extends React.ForwardRefExoticComponent<BentoGridProps & React.RefAttributes<HTMLDivElement>> {\n Item: typeof BentoGridItem;\n}\n\n(BentoGrid as BentoGridComponent).Item = BentoGridItem;\n"],"names":["BentoGrid","BentoGridItem"],"mappings":";;;AA0CA,MAAM,aAAiE;AAAA,EACrE,MAAM,OAAO;AAAA,EACb,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AACb;AAEA,SAAS,YACP,MACA,QACwB;AACxB,MAAI,CAAC,QAAQ,SAAS,UAAU,CAAA;AAChC,MAAI,OAAO,SAAS,SAAU,QAAO,EAAE,CAAC,KAAK,MAAM,EAAE,GAAG,KAAA;AACxD,QAAM,OAA+B,CAAA;AACrC,MAAI,KAAK,QAAQ,KAAK,OAAO,QAAQ,KAAK,MAAM,EAAE,IAAI,KAAK;AAC3D,MAAI,KAAK,GAAI,MAAK,KAAK,MAAM,KAAK,IAAI,KAAK;AAC3C,MAAI,KAAK,GAAI,MAAK,KAAK,MAAM,KAAK,IAAI,KAAK;AAC3C,MAAI,KAAK,GAAI,MAAK,KAAK,MAAM,KAAK,IAAI,KAAK;AAC3C,MAAI,KAAK,GAAI,MAAK,KAAK,MAAM,KAAK,IAAI,KAAK;AAC3C,SAAO;AACT;AAMO,MAAM,YAAY,MAAM;AAAA,EAC7B,SAASA,WACP;AAAA,IACE;AAAA,IACA,UAAU;AAAA,IACV,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,GAEL,KACA;AACA,UAAM,UAAU;AAAA,MACd,OAAO;AAAA,MACP,OAAO,UAAU,OAAO,EAAE;AAAA,MAC1B,WAAW,GAAG;AAAA,MACd;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,WACE,oBAAC,SAAI,KAAW,GAAG,WAAW,WAAW,SAAS,OAC/C,UACH;AAAA,EAEJ;AACF;AAMA,MAAM,gBAAgB,MAAM;AAAA,EAC1B,SAASC,eACP;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,GAEL,KACA;AACA,UAAM,WAAW;AAAA,MACf,GAAG,YAAY,SAAS,gBAAgB;AAAA,MACxC,GAAG,YAAY,SAAS,gBAAgB;AAAA,IAAA;AAG1C,UAAM,UAAU,OAAO,KAAK,QAAQ,EAAE,SAAS;AAC/C,UAAM,cAAc,UACf,EAAE,GAAI,UAA6C,GAAG,UACvD;AAEJ,UAAM,UAAU,CAAC,OAAO,MAAM,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAEjE,WACE,oBAAC,SAAI,KAAW,GAAG,WAAW,WAAW,SAAS,OAAO,aACtD,SAAA,CACH;AAAA,EAEJ;AACF;AAWC,UAAiC,OAAO;"}
@@ -52,7 +52,8 @@ const BoxRoot = React__namespace.forwardRef(
52
52
  minHeight,
53
53
  maxHeight,
54
54
  className,
55
- style
55
+ style,
56
+ ...htmlProps
56
57
  }, ref) {
57
58
  const classes = [
58
59
  Box_module.default.box,
@@ -85,7 +86,16 @@ const BoxRoot = React__namespace.forwardRef(
85
86
  if (maxHeight != null) sizingStyle.maxHeight = toCss(maxHeight);
86
87
  const hasSizing = Object.keys(sizingStyle).length > 0;
87
88
  const mergedStyle = hasSizing ? { ...sizingStyle, ...style } : style;
88
- return /* @__PURE__ */ jsxRuntime.jsx(Component, { ref, className: classes, style: mergedStyle, children });
89
+ return /* @__PURE__ */ jsxRuntime.jsx(
90
+ Component,
91
+ {
92
+ ref,
93
+ ...htmlProps,
94
+ className: classes,
95
+ style: mergedStyle,
96
+ children
97
+ }
98
+ );
89
99
  }
90
100
  );
91
101
  const Box = Object.assign(BoxRoot, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/Box/index.tsx"],"sourcesContent":["import * as React from 'react';\nimport styles from './Box.module.scss';\n\nexport interface BoxProps {\n children?: React.ReactNode;\n /** HTML element to render */\n as?: 'div' | 'section' | 'article' | 'aside' | 'main' | 'header' | 'footer' | 'nav' | 'span';\n /** Padding on all sides */\n padding?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Horizontal padding (overrides padding) */\n paddingX?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Vertical padding (overrides padding) */\n paddingY?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Margin on all sides */\n margin?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';\n /** Horizontal margin (overrides margin) */\n marginX?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';\n /** Vertical margin (overrides margin) */\n marginY?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';\n /** Background color */\n background?: 'none' | 'primary' | 'secondary' | 'tertiary' | 'elevated';\n /** Border radius */\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n /** Border */\n border?: boolean;\n /** Top border */\n borderTop?: boolean;\n /** Bottom border */\n borderBottom?: boolean;\n /** Left border */\n borderLeft?: boolean;\n /** Right border */\n borderRight?: boolean;\n /** Border color variant */\n borderColor?: 'default' | 'strong' | 'accent' | 'danger';\n /** Box shadow */\n shadow?: 'sm' | 'md' | 'lg' | 'none';\n /** Overflow behavior */\n overflow?: 'hidden' | 'auto' | 'scroll' | 'visible';\n /** Text color */\n color?: 'primary' | 'secondary' | 'tertiary' | 'accent' | 'inverse';\n /** Display type */\n display?: 'block' | 'inline' | 'inline-block' | 'flex' | 'inline-flex' | 'grid' | 'none';\n /** Width (CSS value, e.g. \"100%\", \"300px\", 200) */\n width?: string | number;\n /** Min width */\n minWidth?: string | number;\n /** Max width */\n maxWidth?: string | number;\n /** Height (CSS value, e.g. \"100%\", \"300px\", 200) */\n height?: string | number;\n /** Min height */\n minHeight?: string | number;\n /** Max height */\n maxHeight?: string | number;\n /** Additional class name */\n className?: string;\n /** Inline styles */\n style?: React.CSSProperties;\n}\n\n/** Convert string | number to CSS value */\nfunction toCss(value: string | number): string {\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nconst BoxRoot = React.forwardRef<HTMLElement, BoxProps>(\n function Box(\n {\n children,\n as: Component = 'div',\n padding,\n paddingX,\n paddingY,\n margin,\n marginX,\n marginY,\n background,\n rounded,\n border,\n borderTop,\n borderBottom,\n borderLeft,\n borderRight,\n borderColor,\n shadow,\n overflow,\n color,\n display,\n width,\n minWidth,\n maxWidth,\n height,\n minHeight,\n maxHeight,\n className,\n style,\n },\n ref\n ) {\n const classes = [\n styles.box,\n padding && styles[`p-${padding}`],\n paddingX && styles[`px-${paddingX}`],\n paddingY && styles[`py-${paddingY}`],\n margin && styles[`m-${margin}`],\n marginX && styles[`mx-${marginX}`],\n marginY && styles[`my-${marginY}`],\n background && styles[`bg-${background}`],\n rounded && styles[`rounded-${rounded}`],\n border && styles.border,\n borderTop && styles.borderTop,\n borderBottom && styles.borderBottom,\n borderLeft && styles.borderLeft,\n borderRight && styles.borderRight,\n borderColor && styles[`borderColor-${borderColor}`],\n shadow && styles[`shadow-${shadow}`],\n overflow && styles[`overflow-${overflow}`],\n color && styles[`color-${color}`],\n display && styles[`display-${display}`],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Build sizing styles only when props are provided\n const sizingStyle: React.CSSProperties = {};\n if (width != null) sizingStyle.width = toCss(width);\n if (minWidth != null) sizingStyle.minWidth = toCss(minWidth);\n if (maxWidth != null) sizingStyle.maxWidth = toCss(maxWidth);\n if (height != null) sizingStyle.height = toCss(height);\n if (minHeight != null) sizingStyle.minHeight = toCss(minHeight);\n if (maxHeight != null) sizingStyle.maxHeight = toCss(maxHeight);\n\n const hasSizing = Object.keys(sizingStyle).length > 0;\n const mergedStyle = hasSizing ? { ...sizingStyle, ...style } : style;\n\n return (\n <Component ref={ref as React.Ref<never>} className={classes} style={mergedStyle}>\n {children}\n </Component>\n );\n }\n);\n\nexport const Box = Object.assign(BoxRoot, {\n Root: BoxRoot,\n});\n"],"names":["React","Box","styles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA8DA,SAAS,MAAM,OAAgC;AAC7C,SAAO,OAAO,UAAU,WAAW,GAAG,KAAK,OAAO;AACpD;AAEA,MAAM,UAAUA,iBAAM;AAAA,EACpB,SAASC,KACP;AAAA,IACE;AAAA,IACA,IAAI,YAAY;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,GAEF,KACA;AACA,UAAM,UAAU;AAAA,MACdC,WAAAA,QAAO;AAAA,MACP,WAAWA,WAAAA,QAAO,KAAK,OAAO,EAAE;AAAA,MAChC,YAAYA,WAAAA,QAAO,MAAM,QAAQ,EAAE;AAAA,MACnC,YAAYA,WAAAA,QAAO,MAAM,QAAQ,EAAE;AAAA,MACnC,UAAUA,WAAAA,QAAO,KAAK,MAAM,EAAE;AAAA,MAC9B,WAAWA,WAAAA,QAAO,MAAM,OAAO,EAAE;AAAA,MACjC,WAAWA,WAAAA,QAAO,MAAM,OAAO,EAAE;AAAA,MACjC,cAAcA,WAAAA,QAAO,MAAM,UAAU,EAAE;AAAA,MACvC,WAAWA,WAAAA,QAAO,WAAW,OAAO,EAAE;AAAA,MACtC,UAAUA,WAAAA,QAAO;AAAA,MACjB,aAAaA,WAAAA,QAAO;AAAA,MACpB,gBAAgBA,WAAAA,QAAO;AAAA,MACvB,cAAcA,WAAAA,QAAO;AAAA,MACrB,eAAeA,WAAAA,QAAO;AAAA,MACtB,eAAeA,WAAAA,QAAO,eAAe,WAAW,EAAE;AAAA,MAClD,UAAUA,WAAAA,QAAO,UAAU,MAAM,EAAE;AAAA,MACnC,YAAYA,WAAAA,QAAO,YAAY,QAAQ,EAAE;AAAA,MACzC,SAASA,WAAAA,QAAO,SAAS,KAAK,EAAE;AAAA,MAChC,WAAWA,WAAAA,QAAO,WAAW,OAAO,EAAE;AAAA,MACtC;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAGX,UAAM,cAAmC,CAAA;AACzC,QAAI,SAAS,KAAM,aAAY,QAAQ,MAAM,KAAK;AAClD,QAAI,YAAY,KAAM,aAAY,WAAW,MAAM,QAAQ;AAC3D,QAAI,YAAY,KAAM,aAAY,WAAW,MAAM,QAAQ;AAC3D,QAAI,UAAU,KAAM,aAAY,SAAS,MAAM,MAAM;AACrD,QAAI,aAAa,KAAM,aAAY,YAAY,MAAM,SAAS;AAC9D,QAAI,aAAa,KAAM,aAAY,YAAY,MAAM,SAAS;AAE9D,UAAM,YAAY,OAAO,KAAK,WAAW,EAAE,SAAS;AACpD,UAAM,cAAc,YAAY,EAAE,GAAG,aAAa,GAAG,UAAU;AAE/D,0CACG,WAAA,EAAU,KAA8B,WAAW,SAAS,OAAO,aACjE,UACH;AAAA,EAEJ;AACF;AAEO,MAAM,MAAM,OAAO,OAAO,SAAS;AAAA,EACxC,MAAM;AACR,CAAC;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Box/index.tsx"],"sourcesContent":["import * as React from 'react';\nimport styles from './Box.module.scss';\n\nexport interface BoxProps extends Omit<React.HTMLAttributes<HTMLElement>, 'color'> {\n children?: React.ReactNode;\n /** HTML element to render */\n as?: 'div' | 'section' | 'article' | 'aside' | 'main' | 'header' | 'footer' | 'nav' | 'span';\n /** Padding on all sides */\n padding?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Horizontal padding (overrides padding) */\n paddingX?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Vertical padding (overrides padding) */\n paddingY?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Margin on all sides */\n margin?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';\n /** Horizontal margin (overrides margin) */\n marginX?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';\n /** Vertical margin (overrides margin) */\n marginY?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';\n /** Background color */\n background?: 'none' | 'primary' | 'secondary' | 'tertiary' | 'elevated';\n /** Border radius */\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n /** Border */\n border?: boolean;\n /** Top border */\n borderTop?: boolean;\n /** Bottom border */\n borderBottom?: boolean;\n /** Left border */\n borderLeft?: boolean;\n /** Right border */\n borderRight?: boolean;\n /** Border color variant */\n borderColor?: 'default' | 'strong' | 'accent' | 'danger';\n /** Box shadow */\n shadow?: 'sm' | 'md' | 'lg' | 'none';\n /** Overflow behavior */\n overflow?: 'hidden' | 'auto' | 'scroll' | 'visible';\n /** Text color */\n color?: 'primary' | 'secondary' | 'tertiary' | 'accent' | 'inverse';\n /** Display type */\n display?: 'block' | 'inline' | 'inline-block' | 'flex' | 'inline-flex' | 'grid' | 'none';\n /** Width (CSS value, e.g. \"100%\", \"300px\", 200) */\n width?: string | number;\n /** Min width */\n minWidth?: string | number;\n /** Max width */\n maxWidth?: string | number;\n /** Height (CSS value, e.g. \"100%\", \"300px\", 200) */\n height?: string | number;\n /** Min height */\n minHeight?: string | number;\n /** Max height */\n maxHeight?: string | number;\n /** Additional class name */\n className?: string;\n /** Inline styles */\n style?: React.CSSProperties;\n}\n\n/** Convert string | number to CSS value */\nfunction toCss(value: string | number): string {\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nconst BoxRoot = React.forwardRef<HTMLElement, BoxProps>(\n function Box(\n {\n children,\n as: Component = 'div',\n padding,\n paddingX,\n paddingY,\n margin,\n marginX,\n marginY,\n background,\n rounded,\n border,\n borderTop,\n borderBottom,\n borderLeft,\n borderRight,\n borderColor,\n shadow,\n overflow,\n color,\n display,\n width,\n minWidth,\n maxWidth,\n height,\n minHeight,\n maxHeight,\n className,\n style,\n ...htmlProps\n },\n ref\n ) {\n const classes = [\n styles.box,\n padding && styles[`p-${padding}`],\n paddingX && styles[`px-${paddingX}`],\n paddingY && styles[`py-${paddingY}`],\n margin && styles[`m-${margin}`],\n marginX && styles[`mx-${marginX}`],\n marginY && styles[`my-${marginY}`],\n background && styles[`bg-${background}`],\n rounded && styles[`rounded-${rounded}`],\n border && styles.border,\n borderTop && styles.borderTop,\n borderBottom && styles.borderBottom,\n borderLeft && styles.borderLeft,\n borderRight && styles.borderRight,\n borderColor && styles[`borderColor-${borderColor}`],\n shadow && styles[`shadow-${shadow}`],\n overflow && styles[`overflow-${overflow}`],\n color && styles[`color-${color}`],\n display && styles[`display-${display}`],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Build sizing styles only when props are provided\n const sizingStyle: React.CSSProperties = {};\n if (width != null) sizingStyle.width = toCss(width);\n if (minWidth != null) sizingStyle.minWidth = toCss(minWidth);\n if (maxWidth != null) sizingStyle.maxWidth = toCss(maxWidth);\n if (height != null) sizingStyle.height = toCss(height);\n if (minHeight != null) sizingStyle.minHeight = toCss(minHeight);\n if (maxHeight != null) sizingStyle.maxHeight = toCss(maxHeight);\n\n const hasSizing = Object.keys(sizingStyle).length > 0;\n const mergedStyle = hasSizing ? { ...sizingStyle, ...style } : style;\n\n return (\n <Component\n ref={ref as React.Ref<never>}\n {...htmlProps}\n className={classes}\n style={mergedStyle}\n >\n {children}\n </Component>\n );\n }\n);\n\nexport const Box = Object.assign(BoxRoot, {\n Root: BoxRoot,\n});\n"],"names":["React","Box","styles","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA8DA,SAAS,MAAM,OAAgC;AAC7C,SAAO,OAAO,UAAU,WAAW,GAAG,KAAK,OAAO;AACpD;AAEA,MAAM,UAAUA,iBAAM;AAAA,EACpB,SAASC,KACP;AAAA,IACE;AAAA,IACA,IAAI,YAAY;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,GAEL,KACA;AACA,UAAM,UAAU;AAAA,MACdC,WAAAA,QAAO;AAAA,MACP,WAAWA,WAAAA,QAAO,KAAK,OAAO,EAAE;AAAA,MAChC,YAAYA,WAAAA,QAAO,MAAM,QAAQ,EAAE;AAAA,MACnC,YAAYA,WAAAA,QAAO,MAAM,QAAQ,EAAE;AAAA,MACnC,UAAUA,WAAAA,QAAO,KAAK,MAAM,EAAE;AAAA,MAC9B,WAAWA,WAAAA,QAAO,MAAM,OAAO,EAAE;AAAA,MACjC,WAAWA,WAAAA,QAAO,MAAM,OAAO,EAAE;AAAA,MACjC,cAAcA,WAAAA,QAAO,MAAM,UAAU,EAAE;AAAA,MACvC,WAAWA,WAAAA,QAAO,WAAW,OAAO,EAAE;AAAA,MACtC,UAAUA,WAAAA,QAAO;AAAA,MACjB,aAAaA,WAAAA,QAAO;AAAA,MACpB,gBAAgBA,WAAAA,QAAO;AAAA,MACvB,cAAcA,WAAAA,QAAO;AAAA,MACrB,eAAeA,WAAAA,QAAO;AAAA,MACtB,eAAeA,WAAAA,QAAO,eAAe,WAAW,EAAE;AAAA,MAClD,UAAUA,WAAAA,QAAO,UAAU,MAAM,EAAE;AAAA,MACnC,YAAYA,WAAAA,QAAO,YAAY,QAAQ,EAAE;AAAA,MACzC,SAASA,WAAAA,QAAO,SAAS,KAAK,EAAE;AAAA,MAChC,WAAWA,WAAAA,QAAO,WAAW,OAAO,EAAE;AAAA,MACtC;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAGX,UAAM,cAAmC,CAAA;AACzC,QAAI,SAAS,KAAM,aAAY,QAAQ,MAAM,KAAK;AAClD,QAAI,YAAY,KAAM,aAAY,WAAW,MAAM,QAAQ;AAC3D,QAAI,YAAY,KAAM,aAAY,WAAW,MAAM,QAAQ;AAC3D,QAAI,UAAU,KAAM,aAAY,SAAS,MAAM,MAAM;AACrD,QAAI,aAAa,KAAM,aAAY,YAAY,MAAM,SAAS;AAC9D,QAAI,aAAa,KAAM,aAAY,YAAY,MAAM,SAAS;AAE9D,UAAM,YAAY,OAAO,KAAK,WAAW,EAAE,SAAS;AACpD,UAAM,cAAc,YAAY,EAAE,GAAG,aAAa,GAAG,UAAU;AAE/D,WACEC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACC,GAAG;AAAA,QACJ,WAAW;AAAA,QACX,OAAO;AAAA,QAEN;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEO,MAAM,MAAM,OAAO,OAAO,SAAS;AAAA,EACxC,MAAM;AACR,CAAC;;"}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- export interface BoxProps {
2
+ export interface BoxProps extends Omit<React.HTMLAttributes<HTMLElement>, 'color'> {
3
3
  children?: React.ReactNode;
4
4
  /** HTML element to render */
5
5
  as?: 'div' | 'section' | 'article' | 'aside' | 'main' | 'header' | 'footer' | 'nav' | 'span';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Box/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Box/index.tsx"],"names":[],"mappings":"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"}
@@ -33,7 +33,8 @@ const BoxRoot = React.forwardRef(
33
33
  minHeight,
34
34
  maxHeight,
35
35
  className,
36
- style
36
+ style,
37
+ ...htmlProps
37
38
  }, ref) {
38
39
  const classes = [
39
40
  styles.box,
@@ -66,7 +67,16 @@ const BoxRoot = React.forwardRef(
66
67
  if (maxHeight != null) sizingStyle.maxHeight = toCss(maxHeight);
67
68
  const hasSizing = Object.keys(sizingStyle).length > 0;
68
69
  const mergedStyle = hasSizing ? { ...sizingStyle, ...style } : style;
69
- return /* @__PURE__ */ jsx(Component, { ref, className: classes, style: mergedStyle, children });
70
+ return /* @__PURE__ */ jsx(
71
+ Component,
72
+ {
73
+ ref,
74
+ ...htmlProps,
75
+ className: classes,
76
+ style: mergedStyle,
77
+ children
78
+ }
79
+ );
70
80
  }
71
81
  );
72
82
  const Box = Object.assign(BoxRoot, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Box/index.tsx"],"sourcesContent":["import * as React from 'react';\nimport styles from './Box.module.scss';\n\nexport interface BoxProps {\n children?: React.ReactNode;\n /** HTML element to render */\n as?: 'div' | 'section' | 'article' | 'aside' | 'main' | 'header' | 'footer' | 'nav' | 'span';\n /** Padding on all sides */\n padding?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Horizontal padding (overrides padding) */\n paddingX?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Vertical padding (overrides padding) */\n paddingY?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Margin on all sides */\n margin?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';\n /** Horizontal margin (overrides margin) */\n marginX?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';\n /** Vertical margin (overrides margin) */\n marginY?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';\n /** Background color */\n background?: 'none' | 'primary' | 'secondary' | 'tertiary' | 'elevated';\n /** Border radius */\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n /** Border */\n border?: boolean;\n /** Top border */\n borderTop?: boolean;\n /** Bottom border */\n borderBottom?: boolean;\n /** Left border */\n borderLeft?: boolean;\n /** Right border */\n borderRight?: boolean;\n /** Border color variant */\n borderColor?: 'default' | 'strong' | 'accent' | 'danger';\n /** Box shadow */\n shadow?: 'sm' | 'md' | 'lg' | 'none';\n /** Overflow behavior */\n overflow?: 'hidden' | 'auto' | 'scroll' | 'visible';\n /** Text color */\n color?: 'primary' | 'secondary' | 'tertiary' | 'accent' | 'inverse';\n /** Display type */\n display?: 'block' | 'inline' | 'inline-block' | 'flex' | 'inline-flex' | 'grid' | 'none';\n /** Width (CSS value, e.g. \"100%\", \"300px\", 200) */\n width?: string | number;\n /** Min width */\n minWidth?: string | number;\n /** Max width */\n maxWidth?: string | number;\n /** Height (CSS value, e.g. \"100%\", \"300px\", 200) */\n height?: string | number;\n /** Min height */\n minHeight?: string | number;\n /** Max height */\n maxHeight?: string | number;\n /** Additional class name */\n className?: string;\n /** Inline styles */\n style?: React.CSSProperties;\n}\n\n/** Convert string | number to CSS value */\nfunction toCss(value: string | number): string {\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nconst BoxRoot = React.forwardRef<HTMLElement, BoxProps>(\n function Box(\n {\n children,\n as: Component = 'div',\n padding,\n paddingX,\n paddingY,\n margin,\n marginX,\n marginY,\n background,\n rounded,\n border,\n borderTop,\n borderBottom,\n borderLeft,\n borderRight,\n borderColor,\n shadow,\n overflow,\n color,\n display,\n width,\n minWidth,\n maxWidth,\n height,\n minHeight,\n maxHeight,\n className,\n style,\n },\n ref\n ) {\n const classes = [\n styles.box,\n padding && styles[`p-${padding}`],\n paddingX && styles[`px-${paddingX}`],\n paddingY && styles[`py-${paddingY}`],\n margin && styles[`m-${margin}`],\n marginX && styles[`mx-${marginX}`],\n marginY && styles[`my-${marginY}`],\n background && styles[`bg-${background}`],\n rounded && styles[`rounded-${rounded}`],\n border && styles.border,\n borderTop && styles.borderTop,\n borderBottom && styles.borderBottom,\n borderLeft && styles.borderLeft,\n borderRight && styles.borderRight,\n borderColor && styles[`borderColor-${borderColor}`],\n shadow && styles[`shadow-${shadow}`],\n overflow && styles[`overflow-${overflow}`],\n color && styles[`color-${color}`],\n display && styles[`display-${display}`],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Build sizing styles only when props are provided\n const sizingStyle: React.CSSProperties = {};\n if (width != null) sizingStyle.width = toCss(width);\n if (minWidth != null) sizingStyle.minWidth = toCss(minWidth);\n if (maxWidth != null) sizingStyle.maxWidth = toCss(maxWidth);\n if (height != null) sizingStyle.height = toCss(height);\n if (minHeight != null) sizingStyle.minHeight = toCss(minHeight);\n if (maxHeight != null) sizingStyle.maxHeight = toCss(maxHeight);\n\n const hasSizing = Object.keys(sizingStyle).length > 0;\n const mergedStyle = hasSizing ? { ...sizingStyle, ...style } : style;\n\n return (\n <Component ref={ref as React.Ref<never>} className={classes} style={mergedStyle}>\n {children}\n </Component>\n );\n }\n);\n\nexport const Box = Object.assign(BoxRoot, {\n Root: BoxRoot,\n});\n"],"names":["Box"],"mappings":";;;AA8DA,SAAS,MAAM,OAAgC;AAC7C,SAAO,OAAO,UAAU,WAAW,GAAG,KAAK,OAAO;AACpD;AAEA,MAAM,UAAU,MAAM;AAAA,EACpB,SAASA,KACP;AAAA,IACE;AAAA,IACA,IAAI,YAAY;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,GAEF,KACA;AACA,UAAM,UAAU;AAAA,MACd,OAAO;AAAA,MACP,WAAW,OAAO,KAAK,OAAO,EAAE;AAAA,MAChC,YAAY,OAAO,MAAM,QAAQ,EAAE;AAAA,MACnC,YAAY,OAAO,MAAM,QAAQ,EAAE;AAAA,MACnC,UAAU,OAAO,KAAK,MAAM,EAAE;AAAA,MAC9B,WAAW,OAAO,MAAM,OAAO,EAAE;AAAA,MACjC,WAAW,OAAO,MAAM,OAAO,EAAE;AAAA,MACjC,cAAc,OAAO,MAAM,UAAU,EAAE;AAAA,MACvC,WAAW,OAAO,WAAW,OAAO,EAAE;AAAA,MACtC,UAAU,OAAO;AAAA,MACjB,aAAa,OAAO;AAAA,MACpB,gBAAgB,OAAO;AAAA,MACvB,cAAc,OAAO;AAAA,MACrB,eAAe,OAAO;AAAA,MACtB,eAAe,OAAO,eAAe,WAAW,EAAE;AAAA,MAClD,UAAU,OAAO,UAAU,MAAM,EAAE;AAAA,MACnC,YAAY,OAAO,YAAY,QAAQ,EAAE;AAAA,MACzC,SAAS,OAAO,SAAS,KAAK,EAAE;AAAA,MAChC,WAAW,OAAO,WAAW,OAAO,EAAE;AAAA,MACtC;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAGX,UAAM,cAAmC,CAAA;AACzC,QAAI,SAAS,KAAM,aAAY,QAAQ,MAAM,KAAK;AAClD,QAAI,YAAY,KAAM,aAAY,WAAW,MAAM,QAAQ;AAC3D,QAAI,YAAY,KAAM,aAAY,WAAW,MAAM,QAAQ;AAC3D,QAAI,UAAU,KAAM,aAAY,SAAS,MAAM,MAAM;AACrD,QAAI,aAAa,KAAM,aAAY,YAAY,MAAM,SAAS;AAC9D,QAAI,aAAa,KAAM,aAAY,YAAY,MAAM,SAAS;AAE9D,UAAM,YAAY,OAAO,KAAK,WAAW,EAAE,SAAS;AACpD,UAAM,cAAc,YAAY,EAAE,GAAG,aAAa,GAAG,UAAU;AAE/D,+BACG,WAAA,EAAU,KAA8B,WAAW,SAAS,OAAO,aACjE,UACH;AAAA,EAEJ;AACF;AAEO,MAAM,MAAM,OAAO,OAAO,SAAS;AAAA,EACxC,MAAM;AACR,CAAC;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Box/index.tsx"],"sourcesContent":["import * as React from 'react';\nimport styles from './Box.module.scss';\n\nexport interface BoxProps extends Omit<React.HTMLAttributes<HTMLElement>, 'color'> {\n children?: React.ReactNode;\n /** HTML element to render */\n as?: 'div' | 'section' | 'article' | 'aside' | 'main' | 'header' | 'footer' | 'nav' | 'span';\n /** Padding on all sides */\n padding?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Horizontal padding (overrides padding) */\n paddingX?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Vertical padding (overrides padding) */\n paddingY?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Margin on all sides */\n margin?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';\n /** Horizontal margin (overrides margin) */\n marginX?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';\n /** Vertical margin (overrides margin) */\n marginY?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';\n /** Background color */\n background?: 'none' | 'primary' | 'secondary' | 'tertiary' | 'elevated';\n /** Border radius */\n rounded?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n /** Border */\n border?: boolean;\n /** Top border */\n borderTop?: boolean;\n /** Bottom border */\n borderBottom?: boolean;\n /** Left border */\n borderLeft?: boolean;\n /** Right border */\n borderRight?: boolean;\n /** Border color variant */\n borderColor?: 'default' | 'strong' | 'accent' | 'danger';\n /** Box shadow */\n shadow?: 'sm' | 'md' | 'lg' | 'none';\n /** Overflow behavior */\n overflow?: 'hidden' | 'auto' | 'scroll' | 'visible';\n /** Text color */\n color?: 'primary' | 'secondary' | 'tertiary' | 'accent' | 'inverse';\n /** Display type */\n display?: 'block' | 'inline' | 'inline-block' | 'flex' | 'inline-flex' | 'grid' | 'none';\n /** Width (CSS value, e.g. \"100%\", \"300px\", 200) */\n width?: string | number;\n /** Min width */\n minWidth?: string | number;\n /** Max width */\n maxWidth?: string | number;\n /** Height (CSS value, e.g. \"100%\", \"300px\", 200) */\n height?: string | number;\n /** Min height */\n minHeight?: string | number;\n /** Max height */\n maxHeight?: string | number;\n /** Additional class name */\n className?: string;\n /** Inline styles */\n style?: React.CSSProperties;\n}\n\n/** Convert string | number to CSS value */\nfunction toCss(value: string | number): string {\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nconst BoxRoot = React.forwardRef<HTMLElement, BoxProps>(\n function Box(\n {\n children,\n as: Component = 'div',\n padding,\n paddingX,\n paddingY,\n margin,\n marginX,\n marginY,\n background,\n rounded,\n border,\n borderTop,\n borderBottom,\n borderLeft,\n borderRight,\n borderColor,\n shadow,\n overflow,\n color,\n display,\n width,\n minWidth,\n maxWidth,\n height,\n minHeight,\n maxHeight,\n className,\n style,\n ...htmlProps\n },\n ref\n ) {\n const classes = [\n styles.box,\n padding && styles[`p-${padding}`],\n paddingX && styles[`px-${paddingX}`],\n paddingY && styles[`py-${paddingY}`],\n margin && styles[`m-${margin}`],\n marginX && styles[`mx-${marginX}`],\n marginY && styles[`my-${marginY}`],\n background && styles[`bg-${background}`],\n rounded && styles[`rounded-${rounded}`],\n border && styles.border,\n borderTop && styles.borderTop,\n borderBottom && styles.borderBottom,\n borderLeft && styles.borderLeft,\n borderRight && styles.borderRight,\n borderColor && styles[`borderColor-${borderColor}`],\n shadow && styles[`shadow-${shadow}`],\n overflow && styles[`overflow-${overflow}`],\n color && styles[`color-${color}`],\n display && styles[`display-${display}`],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Build sizing styles only when props are provided\n const sizingStyle: React.CSSProperties = {};\n if (width != null) sizingStyle.width = toCss(width);\n if (minWidth != null) sizingStyle.minWidth = toCss(minWidth);\n if (maxWidth != null) sizingStyle.maxWidth = toCss(maxWidth);\n if (height != null) sizingStyle.height = toCss(height);\n if (minHeight != null) sizingStyle.minHeight = toCss(minHeight);\n if (maxHeight != null) sizingStyle.maxHeight = toCss(maxHeight);\n\n const hasSizing = Object.keys(sizingStyle).length > 0;\n const mergedStyle = hasSizing ? { ...sizingStyle, ...style } : style;\n\n return (\n <Component\n ref={ref as React.Ref<never>}\n {...htmlProps}\n className={classes}\n style={mergedStyle}\n >\n {children}\n </Component>\n );\n }\n);\n\nexport const Box = Object.assign(BoxRoot, {\n Root: BoxRoot,\n});\n"],"names":["Box"],"mappings":";;;AA8DA,SAAS,MAAM,OAAgC;AAC7C,SAAO,OAAO,UAAU,WAAW,GAAG,KAAK,OAAO;AACpD;AAEA,MAAM,UAAU,MAAM;AAAA,EACpB,SAASA,KACP;AAAA,IACE;AAAA,IACA,IAAI,YAAY;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,GAEL,KACA;AACA,UAAM,UAAU;AAAA,MACd,OAAO;AAAA,MACP,WAAW,OAAO,KAAK,OAAO,EAAE;AAAA,MAChC,YAAY,OAAO,MAAM,QAAQ,EAAE;AAAA,MACnC,YAAY,OAAO,MAAM,QAAQ,EAAE;AAAA,MACnC,UAAU,OAAO,KAAK,MAAM,EAAE;AAAA,MAC9B,WAAW,OAAO,MAAM,OAAO,EAAE;AAAA,MACjC,WAAW,OAAO,MAAM,OAAO,EAAE;AAAA,MACjC,cAAc,OAAO,MAAM,UAAU,EAAE;AAAA,MACvC,WAAW,OAAO,WAAW,OAAO,EAAE;AAAA,MACtC,UAAU,OAAO;AAAA,MACjB,aAAa,OAAO;AAAA,MACpB,gBAAgB,OAAO;AAAA,MACvB,cAAc,OAAO;AAAA,MACrB,eAAe,OAAO;AAAA,MACtB,eAAe,OAAO,eAAe,WAAW,EAAE;AAAA,MAClD,UAAU,OAAO,UAAU,MAAM,EAAE;AAAA,MACnC,YAAY,OAAO,YAAY,QAAQ,EAAE;AAAA,MACzC,SAAS,OAAO,SAAS,KAAK,EAAE;AAAA,MAChC,WAAW,OAAO,WAAW,OAAO,EAAE;AAAA,MACtC;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAGX,UAAM,cAAmC,CAAA;AACzC,QAAI,SAAS,KAAM,aAAY,QAAQ,MAAM,KAAK;AAClD,QAAI,YAAY,KAAM,aAAY,WAAW,MAAM,QAAQ;AAC3D,QAAI,YAAY,KAAM,aAAY,WAAW,MAAM,QAAQ;AAC3D,QAAI,UAAU,KAAM,aAAY,SAAS,MAAM,MAAM;AACrD,QAAI,aAAa,KAAM,aAAY,YAAY,MAAM,SAAS;AAC9D,QAAI,aAAa,KAAM,aAAY,YAAY,MAAM,SAAS;AAE9D,UAAM,YAAY,OAAO,KAAK,WAAW,EAAE,SAAS;AACpD,UAAM,cAAc,YAAY,EAAE,GAAG,aAAa,GAAG,UAAU;AAE/D,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACC,GAAG;AAAA,QACJ,WAAW;AAAA,QACX,OAAO;AAAA,QAEN;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEO,MAAM,MAAM,OAAO,OAAO,SAAS;AAAA,EACxC,MAAM;AACR,CAAC;"}
@@ -25,7 +25,9 @@ function BreadcrumbsRoot({
25
25
  children,
26
26
  separator = "/",
27
27
  maxItems,
28
+ label = "Breadcrumb",
28
29
  className,
30
+ "aria-label": ariaLabel,
29
31
  ...htmlProps
30
32
  }) {
31
33
  const classes = [Breadcrumbs_module.default.root, className].filter(Boolean).join(" ");
@@ -39,7 +41,7 @@ function BreadcrumbsRoot({
39
41
  collapsedItems = items.slice(1, items.length - (maxItems - 1));
40
42
  items = [...first, ...last];
41
43
  }
42
- return /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbsSeparatorContext.Provider, { value: separator, children: /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "Breadcrumb", className: classes, ...htmlProps, children: /* @__PURE__ */ jsxRuntime.jsx("ol", { className: Breadcrumbs_module.default.list, children: items.map((item, index) => {
44
+ return /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbsSeparatorContext.Provider, { value: separator, children: /* @__PURE__ */ jsxRuntime.jsx("nav", { ...htmlProps, "aria-label": ariaLabel ?? label, className: classes, children: /* @__PURE__ */ jsxRuntime.jsx("ol", { className: Breadcrumbs_module.default.list, children: items.map((item, index) => {
43
45
  const isFirst = index === 0;
44
46
  const showEllipsis = collapsed && index === 1;
45
47
  return /* @__PURE__ */ jsxRuntime.jsxs(React__namespace.Fragment, { children: [
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/Breadcrumbs/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './Breadcrumbs.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\nexport interface BreadcrumbsProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n /** Custom separator between items (default: '/') */\n separator?: React.ReactNode;\n /** Maximum visible items before collapsing middle items with ellipsis */\n maxItems?: number;\n}\n\nexport interface BreadcrumbsItemProps extends React.HTMLAttributes<HTMLLIElement> {\n children: React.ReactNode;\n /** URL to navigate to (renders <a> if provided) */\n href?: string;\n /** Icon element to display before the label */\n icon?: React.ReactNode;\n /** Marks this item as the current page */\n current?: boolean;\n}\n\nexport interface BreadcrumbsSeparatorProps {\n children?: React.ReactNode;\n className?: string;\n}\n\n// ============================================\n// Context for separator\n// ============================================\n\nconst BreadcrumbsSeparatorContext = React.createContext<React.ReactNode>('/');\n\n// ============================================\n// Components\n// ============================================\n\nfunction BreadcrumbsRoot({\n children,\n separator = '/',\n maxItems,\n className,\n ...htmlProps\n}: BreadcrumbsProps) {\n const classes = [styles.root, className].filter(Boolean).join(' ');\n\n let items = React.Children.toArray(children).filter(React.isValidElement);\n\n // Collapse middle items if maxItems is set\n let collapsed = false;\n let collapsedItems: React.ReactElement[] = [];\n if (maxItems != null && maxItems > 1 && items.length > maxItems) {\n collapsed = true;\n const first = items.slice(0, 1);\n const last = items.slice(-(maxItems - 1));\n collapsedItems = items.slice(1, items.length - (maxItems - 1)) as React.ReactElement[];\n items = [...first, ...last];\n }\n\n return (\n <BreadcrumbsSeparatorContext.Provider value={separator}>\n <nav aria-label=\"Breadcrumb\" className={classes} {...htmlProps}>\n <ol className={styles.list}>\n {items.map((item, index) => {\n const isFirst = index === 0;\n const showEllipsis = collapsed && index === 1;\n\n return (\n <React.Fragment key={(item as React.ReactElement).key ?? index}>\n {!isFirst && (\n <li role=\"presentation\" aria-hidden=\"true\" className={styles.separator}>\n {separator}\n </li>\n )}\n {showEllipsis && (\n <EllipsisItem items={collapsedItems} separator={separator} />\n )}\n {item}\n </React.Fragment>\n );\n })}\n </ol>\n </nav>\n </BreadcrumbsSeparatorContext.Provider>\n );\n}\n\nfunction EllipsisItem({\n items,\n separator,\n}: {\n items: React.ReactElement[];\n separator: React.ReactNode;\n}) {\n const [expanded, setExpanded] = React.useState(false);\n\n if (expanded) {\n return (\n <>\n {items.map((item, i) => (\n <React.Fragment key={item.key ?? `collapsed-${i}`}>\n {item}\n <li role=\"presentation\" aria-hidden=\"true\" className={styles.separator}>\n {separator}\n </li>\n </React.Fragment>\n ))}\n </>\n );\n }\n\n return (\n <>\n <li className={styles.item}>\n <button\n type=\"button\"\n className={styles.ellipsis}\n aria-label=\"Show collapsed breadcrumbs\"\n onClick={() => setExpanded(true)}\n >\n &hellip;\n </button>\n </li>\n <li role=\"presentation\" aria-hidden=\"true\" className={styles.separator}>\n {separator}\n </li>\n </>\n );\n}\n\nfunction BreadcrumbsItem({\n children,\n href,\n icon,\n current = false,\n className,\n ...htmlProps\n}: BreadcrumbsItemProps) {\n const classes = [styles.item, className].filter(Boolean).join(' ');\n\n const iconEl = icon ? <span className={styles.icon}>{icon}</span> : null;\n\n if (current) {\n return (\n <li className={classes} {...htmlProps}>\n <span className={styles.current} aria-current=\"page\">\n {iconEl}\n {children}\n </span>\n </li>\n );\n }\n\n if (href) {\n return (\n <li className={classes} {...htmlProps}>\n <a href={href} className={styles.link}>\n {iconEl}\n {children}\n </a>\n </li>\n );\n }\n\n return (\n <li className={classes} {...htmlProps}>\n <span className={styles.link}>\n {iconEl}\n {children}\n </span>\n </li>\n );\n}\n\nfunction BreadcrumbsSeparator({ children, className }: BreadcrumbsSeparatorProps) {\n const defaultSeparator = React.useContext(BreadcrumbsSeparatorContext);\n const classes = [styles.separator, className].filter(Boolean).join(' ');\n\n return (\n <span className={classes} role=\"presentation\" aria-hidden=\"true\">\n {children ?? defaultSeparator}\n </span>\n );\n}\n\n// ============================================\n// Export compound component\n// ============================================\n\nexport const Breadcrumbs = Object.assign(BreadcrumbsRoot, {\n Item: BreadcrumbsItem,\n Separator: BreadcrumbsSeparator,\n});\n\n// Re-export individual components\nexport { BreadcrumbsRoot, BreadcrumbsItem, BreadcrumbsSeparator };\n"],"names":["React","styles","jsx","jsxs","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Breadcrumbs/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './Breadcrumbs.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\nexport interface BreadcrumbsProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n /** Custom separator between items (default: '/') */\n separator?: React.ReactNode;\n /** Maximum visible items before collapsing middle items with ellipsis */\n maxItems?: number;\n /** Accessible label for the breadcrumb nav landmark (default: \"Breadcrumb\") */\n label?: string;\n}\n\nexport interface BreadcrumbsItemProps extends React.HTMLAttributes<HTMLLIElement> {\n children: React.ReactNode;\n /** URL to navigate to (renders <a> if provided) */\n href?: string;\n /** Icon element to display before the label */\n icon?: React.ReactNode;\n /** Marks this item as the current page */\n current?: boolean;\n}\n\nexport interface BreadcrumbsSeparatorProps {\n children?: React.ReactNode;\n className?: string;\n}\n\n// ============================================\n// Context for separator\n// ============================================\n\nconst BreadcrumbsSeparatorContext = React.createContext<React.ReactNode>('/');\n\n// ============================================\n// Components\n// ============================================\n\nfunction BreadcrumbsRoot({\n children,\n separator = '/',\n maxItems,\n label = 'Breadcrumb',\n className,\n 'aria-label': ariaLabel,\n ...htmlProps\n}: BreadcrumbsProps) {\n const classes = [styles.root, className].filter(Boolean).join(' ');\n\n let items = React.Children.toArray(children).filter(React.isValidElement);\n\n // Collapse middle items if maxItems is set\n let collapsed = false;\n let collapsedItems: React.ReactElement[] = [];\n if (maxItems != null && maxItems > 1 && items.length > maxItems) {\n collapsed = true;\n const first = items.slice(0, 1);\n const last = items.slice(-(maxItems - 1));\n collapsedItems = items.slice(1, items.length - (maxItems - 1)) as React.ReactElement[];\n items = [...first, ...last];\n }\n\n return (\n <BreadcrumbsSeparatorContext.Provider value={separator}>\n <nav {...htmlProps} aria-label={ariaLabel ?? label} className={classes}>\n <ol className={styles.list}>\n {items.map((item, index) => {\n const isFirst = index === 0;\n const showEllipsis = collapsed && index === 1;\n\n return (\n <React.Fragment key={(item as React.ReactElement).key ?? index}>\n {!isFirst && (\n <li role=\"presentation\" aria-hidden=\"true\" className={styles.separator}>\n {separator}\n </li>\n )}\n {showEllipsis && (\n <EllipsisItem items={collapsedItems} separator={separator} />\n )}\n {item}\n </React.Fragment>\n );\n })}\n </ol>\n </nav>\n </BreadcrumbsSeparatorContext.Provider>\n );\n}\n\nfunction EllipsisItem({\n items,\n separator,\n}: {\n items: React.ReactElement[];\n separator: React.ReactNode;\n}) {\n const [expanded, setExpanded] = React.useState(false);\n\n if (expanded) {\n return (\n <>\n {items.map((item, i) => (\n <React.Fragment key={item.key ?? `collapsed-${i}`}>\n {item}\n <li role=\"presentation\" aria-hidden=\"true\" className={styles.separator}>\n {separator}\n </li>\n </React.Fragment>\n ))}\n </>\n );\n }\n\n return (\n <>\n <li className={styles.item}>\n <button\n type=\"button\"\n className={styles.ellipsis}\n aria-label=\"Show collapsed breadcrumbs\"\n onClick={() => setExpanded(true)}\n >\n &hellip;\n </button>\n </li>\n <li role=\"presentation\" aria-hidden=\"true\" className={styles.separator}>\n {separator}\n </li>\n </>\n );\n}\n\nfunction BreadcrumbsItem({\n children,\n href,\n icon,\n current = false,\n className,\n ...htmlProps\n}: BreadcrumbsItemProps) {\n const classes = [styles.item, className].filter(Boolean).join(' ');\n\n const iconEl = icon ? <span className={styles.icon}>{icon}</span> : null;\n\n if (current) {\n return (\n <li className={classes} {...htmlProps}>\n <span className={styles.current} aria-current=\"page\">\n {iconEl}\n {children}\n </span>\n </li>\n );\n }\n\n if (href) {\n return (\n <li className={classes} {...htmlProps}>\n <a href={href} className={styles.link}>\n {iconEl}\n {children}\n </a>\n </li>\n );\n }\n\n return (\n <li className={classes} {...htmlProps}>\n <span className={styles.link}>\n {iconEl}\n {children}\n </span>\n </li>\n );\n}\n\nfunction BreadcrumbsSeparator({ children, className }: BreadcrumbsSeparatorProps) {\n const defaultSeparator = React.useContext(BreadcrumbsSeparatorContext);\n const classes = [styles.separator, className].filter(Boolean).join(' ');\n\n return (\n <span className={classes} role=\"presentation\" aria-hidden=\"true\">\n {children ?? defaultSeparator}\n </span>\n );\n}\n\n// ============================================\n// Export compound component\n// ============================================\n\nexport const Breadcrumbs = Object.assign(BreadcrumbsRoot, {\n Item: BreadcrumbsItem,\n Separator: BreadcrumbsSeparator,\n});\n\n// Re-export individual components\nexport { BreadcrumbsRoot, BreadcrumbsItem, BreadcrumbsSeparator };\n"],"names":["React","styles","jsx","jsxs","Fragment"],"mappings":"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"}
@@ -5,6 +5,8 @@ export interface BreadcrumbsProps extends React.HTMLAttributes<HTMLElement> {
5
5
  separator?: React.ReactNode;
6
6
  /** Maximum visible items before collapsing middle items with ellipsis */
7
7
  maxItems?: number;
8
+ /** Accessible label for the breadcrumb nav landmark (default: "Breadcrumb") */
9
+ label?: string;
8
10
  }
9
11
  export interface BreadcrumbsItemProps extends React.HTMLAttributes<HTMLLIElement> {
10
12
  children: React.ReactNode;
@@ -19,7 +21,7 @@ export interface BreadcrumbsSeparatorProps {
19
21
  children?: React.ReactNode;
20
22
  className?: string;
21
23
  }
22
- declare function BreadcrumbsRoot({ children, separator, maxItems, className, ...htmlProps }: BreadcrumbsProps): import("react/jsx-runtime").JSX.Element;
24
+ declare function BreadcrumbsRoot({ children, separator, maxItems, label, className, 'aria-label': ariaLabel, ...htmlProps }: BreadcrumbsProps): import("react/jsx-runtime").JSX.Element;
23
25
  declare function BreadcrumbsItem({ children, href, icon, current, className, ...htmlProps }: BreadcrumbsItemProps): import("react/jsx-runtime").JSX.Element;
24
26
  declare function BreadcrumbsSeparator({ children, className }: BreadcrumbsSeparatorProps): import("react/jsx-runtime").JSX.Element;
25
27
  export declare const Breadcrumbs: typeof BreadcrumbsRoot & {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Breadcrumbs/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACzE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,oDAAoD;IACpD,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAqB,SAAQ,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC;IAC/E,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,iBAAS,eAAe,CAAC,EACvB,QAAQ,EACR,SAAe,EACf,QAAQ,EACR,SAAS,EACT,GAAG,SAAS,EACb,EAAE,gBAAgB,2CA0ClB;AA6CD,iBAAS,eAAe,CAAC,EACvB,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,OAAe,EACf,SAAS,EACT,GAAG,SAAS,EACb,EAAE,oBAAoB,2CAmCtB;AAED,iBAAS,oBAAoB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,yBAAyB,2CAS/E;AAMD,eAAO,MAAM,WAAW;;;CAGtB,CAAC;AAGH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Breadcrumbs/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACzE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,oDAAoD;IACpD,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAqB,SAAQ,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC;IAC/E,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,iBAAS,eAAe,CAAC,EACvB,QAAQ,EACR,SAAe,EACf,QAAQ,EACR,KAAoB,EACpB,SAAS,EACT,YAAY,EAAE,SAAS,EACvB,GAAG,SAAS,EACb,EAAE,gBAAgB,2CA0ClB;AA6CD,iBAAS,eAAe,CAAC,EACvB,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,OAAe,EACf,SAAS,EACT,GAAG,SAAS,EACb,EAAE,oBAAoB,2CAmCtB;AAED,iBAAS,oBAAoB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,yBAAyB,2CAS/E;AAMD,eAAO,MAAM,WAAW;;;CAGtB,CAAC;AAGH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,CAAC"}
@@ -6,7 +6,9 @@ function BreadcrumbsRoot({
6
6
  children,
7
7
  separator = "/",
8
8
  maxItems,
9
+ label = "Breadcrumb",
9
10
  className,
11
+ "aria-label": ariaLabel,
10
12
  ...htmlProps
11
13
  }) {
12
14
  const classes = [styles.root, className].filter(Boolean).join(" ");
@@ -20,7 +22,7 @@ function BreadcrumbsRoot({
20
22
  collapsedItems = items.slice(1, items.length - (maxItems - 1));
21
23
  items = [...first, ...last];
22
24
  }
23
- return /* @__PURE__ */ jsx(BreadcrumbsSeparatorContext.Provider, { value: separator, children: /* @__PURE__ */ jsx("nav", { "aria-label": "Breadcrumb", className: classes, ...htmlProps, children: /* @__PURE__ */ jsx("ol", { className: styles.list, children: items.map((item, index) => {
25
+ return /* @__PURE__ */ jsx(BreadcrumbsSeparatorContext.Provider, { value: separator, children: /* @__PURE__ */ jsx("nav", { ...htmlProps, "aria-label": ariaLabel ?? label, className: classes, children: /* @__PURE__ */ jsx("ol", { className: styles.list, children: items.map((item, index) => {
24
26
  const isFirst = index === 0;
25
27
  const showEllipsis = collapsed && index === 1;
26
28
  return /* @__PURE__ */ jsxs(React.Fragment, { children: [
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Breadcrumbs/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './Breadcrumbs.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\nexport interface BreadcrumbsProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n /** Custom separator between items (default: '/') */\n separator?: React.ReactNode;\n /** Maximum visible items before collapsing middle items with ellipsis */\n maxItems?: number;\n}\n\nexport interface BreadcrumbsItemProps extends React.HTMLAttributes<HTMLLIElement> {\n children: React.ReactNode;\n /** URL to navigate to (renders <a> if provided) */\n href?: string;\n /** Icon element to display before the label */\n icon?: React.ReactNode;\n /** Marks this item as the current page */\n current?: boolean;\n}\n\nexport interface BreadcrumbsSeparatorProps {\n children?: React.ReactNode;\n className?: string;\n}\n\n// ============================================\n// Context for separator\n// ============================================\n\nconst BreadcrumbsSeparatorContext = React.createContext<React.ReactNode>('/');\n\n// ============================================\n// Components\n// ============================================\n\nfunction BreadcrumbsRoot({\n children,\n separator = '/',\n maxItems,\n className,\n ...htmlProps\n}: BreadcrumbsProps) {\n const classes = [styles.root, className].filter(Boolean).join(' ');\n\n let items = React.Children.toArray(children).filter(React.isValidElement);\n\n // Collapse middle items if maxItems is set\n let collapsed = false;\n let collapsedItems: React.ReactElement[] = [];\n if (maxItems != null && maxItems > 1 && items.length > maxItems) {\n collapsed = true;\n const first = items.slice(0, 1);\n const last = items.slice(-(maxItems - 1));\n collapsedItems = items.slice(1, items.length - (maxItems - 1)) as React.ReactElement[];\n items = [...first, ...last];\n }\n\n return (\n <BreadcrumbsSeparatorContext.Provider value={separator}>\n <nav aria-label=\"Breadcrumb\" className={classes} {...htmlProps}>\n <ol className={styles.list}>\n {items.map((item, index) => {\n const isFirst = index === 0;\n const showEllipsis = collapsed && index === 1;\n\n return (\n <React.Fragment key={(item as React.ReactElement).key ?? index}>\n {!isFirst && (\n <li role=\"presentation\" aria-hidden=\"true\" className={styles.separator}>\n {separator}\n </li>\n )}\n {showEllipsis && (\n <EllipsisItem items={collapsedItems} separator={separator} />\n )}\n {item}\n </React.Fragment>\n );\n })}\n </ol>\n </nav>\n </BreadcrumbsSeparatorContext.Provider>\n );\n}\n\nfunction EllipsisItem({\n items,\n separator,\n}: {\n items: React.ReactElement[];\n separator: React.ReactNode;\n}) {\n const [expanded, setExpanded] = React.useState(false);\n\n if (expanded) {\n return (\n <>\n {items.map((item, i) => (\n <React.Fragment key={item.key ?? `collapsed-${i}`}>\n {item}\n <li role=\"presentation\" aria-hidden=\"true\" className={styles.separator}>\n {separator}\n </li>\n </React.Fragment>\n ))}\n </>\n );\n }\n\n return (\n <>\n <li className={styles.item}>\n <button\n type=\"button\"\n className={styles.ellipsis}\n aria-label=\"Show collapsed breadcrumbs\"\n onClick={() => setExpanded(true)}\n >\n &hellip;\n </button>\n </li>\n <li role=\"presentation\" aria-hidden=\"true\" className={styles.separator}>\n {separator}\n </li>\n </>\n );\n}\n\nfunction BreadcrumbsItem({\n children,\n href,\n icon,\n current = false,\n className,\n ...htmlProps\n}: BreadcrumbsItemProps) {\n const classes = [styles.item, className].filter(Boolean).join(' ');\n\n const iconEl = icon ? <span className={styles.icon}>{icon}</span> : null;\n\n if (current) {\n return (\n <li className={classes} {...htmlProps}>\n <span className={styles.current} aria-current=\"page\">\n {iconEl}\n {children}\n </span>\n </li>\n );\n }\n\n if (href) {\n return (\n <li className={classes} {...htmlProps}>\n <a href={href} className={styles.link}>\n {iconEl}\n {children}\n </a>\n </li>\n );\n }\n\n return (\n <li className={classes} {...htmlProps}>\n <span className={styles.link}>\n {iconEl}\n {children}\n </span>\n </li>\n );\n}\n\nfunction BreadcrumbsSeparator({ children, className }: BreadcrumbsSeparatorProps) {\n const defaultSeparator = React.useContext(BreadcrumbsSeparatorContext);\n const classes = [styles.separator, className].filter(Boolean).join(' ');\n\n return (\n <span className={classes} role=\"presentation\" aria-hidden=\"true\">\n {children ?? defaultSeparator}\n </span>\n );\n}\n\n// ============================================\n// Export compound component\n// ============================================\n\nexport const Breadcrumbs = Object.assign(BreadcrumbsRoot, {\n Item: BreadcrumbsItem,\n Separator: BreadcrumbsSeparator,\n});\n\n// Re-export individual components\nexport { BreadcrumbsRoot, BreadcrumbsItem, BreadcrumbsSeparator };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Breadcrumbs/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './Breadcrumbs.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\nexport interface BreadcrumbsProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n /** Custom separator between items (default: '/') */\n separator?: React.ReactNode;\n /** Maximum visible items before collapsing middle items with ellipsis */\n maxItems?: number;\n /** Accessible label for the breadcrumb nav landmark (default: \"Breadcrumb\") */\n label?: string;\n}\n\nexport interface BreadcrumbsItemProps extends React.HTMLAttributes<HTMLLIElement> {\n children: React.ReactNode;\n /** URL to navigate to (renders <a> if provided) */\n href?: string;\n /** Icon element to display before the label */\n icon?: React.ReactNode;\n /** Marks this item as the current page */\n current?: boolean;\n}\n\nexport interface BreadcrumbsSeparatorProps {\n children?: React.ReactNode;\n className?: string;\n}\n\n// ============================================\n// Context for separator\n// ============================================\n\nconst BreadcrumbsSeparatorContext = React.createContext<React.ReactNode>('/');\n\n// ============================================\n// Components\n// ============================================\n\nfunction BreadcrumbsRoot({\n children,\n separator = '/',\n maxItems,\n label = 'Breadcrumb',\n className,\n 'aria-label': ariaLabel,\n ...htmlProps\n}: BreadcrumbsProps) {\n const classes = [styles.root, className].filter(Boolean).join(' ');\n\n let items = React.Children.toArray(children).filter(React.isValidElement);\n\n // Collapse middle items if maxItems is set\n let collapsed = false;\n let collapsedItems: React.ReactElement[] = [];\n if (maxItems != null && maxItems > 1 && items.length > maxItems) {\n collapsed = true;\n const first = items.slice(0, 1);\n const last = items.slice(-(maxItems - 1));\n collapsedItems = items.slice(1, items.length - (maxItems - 1)) as React.ReactElement[];\n items = [...first, ...last];\n }\n\n return (\n <BreadcrumbsSeparatorContext.Provider value={separator}>\n <nav {...htmlProps} aria-label={ariaLabel ?? label} className={classes}>\n <ol className={styles.list}>\n {items.map((item, index) => {\n const isFirst = index === 0;\n const showEllipsis = collapsed && index === 1;\n\n return (\n <React.Fragment key={(item as React.ReactElement).key ?? index}>\n {!isFirst && (\n <li role=\"presentation\" aria-hidden=\"true\" className={styles.separator}>\n {separator}\n </li>\n )}\n {showEllipsis && (\n <EllipsisItem items={collapsedItems} separator={separator} />\n )}\n {item}\n </React.Fragment>\n );\n })}\n </ol>\n </nav>\n </BreadcrumbsSeparatorContext.Provider>\n );\n}\n\nfunction EllipsisItem({\n items,\n separator,\n}: {\n items: React.ReactElement[];\n separator: React.ReactNode;\n}) {\n const [expanded, setExpanded] = React.useState(false);\n\n if (expanded) {\n return (\n <>\n {items.map((item, i) => (\n <React.Fragment key={item.key ?? `collapsed-${i}`}>\n {item}\n <li role=\"presentation\" aria-hidden=\"true\" className={styles.separator}>\n {separator}\n </li>\n </React.Fragment>\n ))}\n </>\n );\n }\n\n return (\n <>\n <li className={styles.item}>\n <button\n type=\"button\"\n className={styles.ellipsis}\n aria-label=\"Show collapsed breadcrumbs\"\n onClick={() => setExpanded(true)}\n >\n &hellip;\n </button>\n </li>\n <li role=\"presentation\" aria-hidden=\"true\" className={styles.separator}>\n {separator}\n </li>\n </>\n );\n}\n\nfunction BreadcrumbsItem({\n children,\n href,\n icon,\n current = false,\n className,\n ...htmlProps\n}: BreadcrumbsItemProps) {\n const classes = [styles.item, className].filter(Boolean).join(' ');\n\n const iconEl = icon ? <span className={styles.icon}>{icon}</span> : null;\n\n if (current) {\n return (\n <li className={classes} {...htmlProps}>\n <span className={styles.current} aria-current=\"page\">\n {iconEl}\n {children}\n </span>\n </li>\n );\n }\n\n if (href) {\n return (\n <li className={classes} {...htmlProps}>\n <a href={href} className={styles.link}>\n {iconEl}\n {children}\n </a>\n </li>\n );\n }\n\n return (\n <li className={classes} {...htmlProps}>\n <span className={styles.link}>\n {iconEl}\n {children}\n </span>\n </li>\n );\n}\n\nfunction BreadcrumbsSeparator({ children, className }: BreadcrumbsSeparatorProps) {\n const defaultSeparator = React.useContext(BreadcrumbsSeparatorContext);\n const classes = [styles.separator, className].filter(Boolean).join(' ');\n\n return (\n <span className={classes} role=\"presentation\" aria-hidden=\"true\">\n {children ?? defaultSeparator}\n </span>\n );\n}\n\n// ============================================\n// Export compound component\n// ============================================\n\nexport const Breadcrumbs = Object.assign(BreadcrumbsRoot, {\n Item: BreadcrumbsItem,\n Separator: BreadcrumbsSeparator,\n});\n\n// Re-export individual components\nexport { BreadcrumbsRoot, BreadcrumbsItem, BreadcrumbsSeparator };\n"],"names":[],"mappings":"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"}
@@ -1,16 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const button = "_button_1d9eh_1";
4
- const sm = "_sm_1d9eh_42";
5
- const md = "_md_1d9eh_48";
6
- const lg = "_lg_1d9eh_54";
7
- const primary = "_primary_1d9eh_60";
8
- const secondary = "_secondary_1d9eh_72";
9
- const ghost = "_ghost_1d9eh_84";
10
- const danger = "_danger_1d9eh_96";
11
- const outlined = "_outlined_1d9eh_108";
12
- const icon = "_icon_1d9eh_120";
13
- const fullWidth = "_fullWidth_1d9eh_134";
3
+ const button = "_button_rqtum_1";
4
+ const sm = "_sm_rqtum_42";
5
+ const md = "_md_rqtum_48";
6
+ const lg = "_lg_rqtum_54";
7
+ const primary = "_primary_rqtum_60";
8
+ const secondary = "_secondary_rqtum_72";
9
+ const ghost = "_ghost_rqtum_84";
10
+ const danger = "_danger_rqtum_96";
11
+ const outlined = "_outlined_rqtum_108";
12
+ const icon = "_icon_rqtum_120";
13
+ const fullWidth = "_fullWidth_rqtum_134";
14
14
  const styles = {
15
15
  button,
16
16
  sm,
@@ -1,14 +1,14 @@
1
- const button = "_button_1d9eh_1";
2
- const sm = "_sm_1d9eh_42";
3
- const md = "_md_1d9eh_48";
4
- const lg = "_lg_1d9eh_54";
5
- const primary = "_primary_1d9eh_60";
6
- const secondary = "_secondary_1d9eh_72";
7
- const ghost = "_ghost_1d9eh_84";
8
- const danger = "_danger_1d9eh_96";
9
- const outlined = "_outlined_1d9eh_108";
10
- const icon = "_icon_1d9eh_120";
11
- const fullWidth = "_fullWidth_1d9eh_134";
1
+ const button = "_button_rqtum_1";
2
+ const sm = "_sm_rqtum_42";
3
+ const md = "_md_rqtum_48";
4
+ const lg = "_lg_rqtum_54";
5
+ const primary = "_primary_rqtum_60";
6
+ const secondary = "_secondary_rqtum_72";
7
+ const ghost = "_ghost_rqtum_84";
8
+ const danger = "_danger_rqtum_96";
9
+ const outlined = "_outlined_rqtum_108";
10
+ const icon = "_icon_rqtum_120";
11
+ const fullWidth = "_fullWidth_rqtum_134";
12
12
  const styles = {
13
13
  button,
14
14
  sm,
@@ -32,17 +32,20 @@ const ButtonRoot = React__namespace.forwardRef(function Button2(props, ref) {
32
32
  className,
33
33
  ...rest
34
34
  } = props;
35
- const variant = variantProp === "outline" ? "outlined" : variantProp;
35
+ const iconOnly = icon || variantProp === "icon";
36
+ const variant = variantProp === "outline" ? "outlined" : variantProp === "icon" ? "ghost" : variantProp;
36
37
  const classNames = [
37
38
  Button_module.default.button,
38
39
  Button_module.default[size],
39
40
  Button_module.default[variant],
40
- icon && Button_module.default.icon,
41
+ iconOnly && Button_module.default.icon,
41
42
  fullWidth && Button_module.default.fullWidth,
42
43
  className
43
44
  ].filter(Boolean).join(" ");
44
45
  if (asChild && React__namespace.isValidElement(children)) {
46
+ const { as: _as2, ...childProps } = rest;
45
47
  return React__namespace.cloneElement(children, {
48
+ ...childProps,
46
49
  className: [classNames, children.props.className].filter(Boolean).join(" "),
47
50
  ref
48
51
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/Button/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Button as BaseButton } from '@base-ui/react/button';\nimport styles from './Button.module.scss';\n\n/**\n * Button props.\n * @see https://usefragments.com/components/button\n */\ntype ButtonBaseProps = {\n children: React.ReactNode;\n /** Visual style variant. `\"outline\"` is an alias for `\"outlined\"`.\n * @default \"primary\"\n * @see https://usefragments.com/components/button#variants */\n variant?: 'primary' | 'secondary' | 'ghost' | 'danger' | 'outlined' | 'outline';\n /** Button size.\n * @default \"md\"\n * @see https://usefragments.com/components/button#sizes */\n size?: 'sm' | 'md' | 'lg';\n /** Render as icon-only button (square aspect ratio) */\n icon?: boolean;\n /** Make button full width of container */\n fullWidth?: boolean;\n /** Merge props onto child element instead of rendering a button. Useful for composition with Link components.\n * @see https://usefragments.com/components/button#aschild */\n asChild?: boolean;\n};\n\n// Button as native button element\nexport interface ButtonAsButtonProps\n extends ButtonBaseProps,\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n as?: 'button';\n}\n\n// Button as anchor element\nexport interface ButtonAsAnchorProps\n extends ButtonBaseProps,\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> {\n as: 'a';\n}\n\nexport type ButtonProps = ButtonAsButtonProps | ButtonAsAnchorProps;\n\nconst ButtonRoot = React.forwardRef<\n HTMLButtonElement | HTMLAnchorElement,\n ButtonProps\n>(function Button(props, ref) {\n const {\n children,\n variant: variantProp = 'primary',\n size = 'md',\n icon = false,\n fullWidth = false,\n asChild = false,\n className,\n ...rest\n } = props;\n\n // Resolve alias: \"outline\" → \"outlined\"\n const variant = variantProp === 'outline' ? 'outlined' : variantProp;\n\n const classNames = [\n styles.button,\n styles[size],\n styles[variant],\n icon && styles.icon,\n fullWidth && styles.fullWidth,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // asChild: merge button styling onto child element (e.g. Next.js Link)\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<Record<string, unknown>>, {\n className: [classNames, (children.props as Record<string, unknown>).className].filter(Boolean).join(' '),\n ref,\n });\n }\n\n // Render as anchor\n if (props.as === 'a') {\n const { as: _as, ...anchorProps } = rest as ButtonAsAnchorProps & { as?: 'a' };\n return (\n <a\n ref={ref as React.Ref<HTMLAnchorElement>}\n className={classNames}\n {...anchorProps}\n >\n {children}\n </a>\n );\n }\n\n // Render as button (default)\n const { as: _as, ...buttonProps } = rest as ButtonAsButtonProps;\n return (\n <BaseButton\n ref={ref as React.Ref<HTMLButtonElement>}\n type={(buttonProps as ButtonAsButtonProps).type || 'button'}\n disabled={(buttonProps as ButtonAsButtonProps).disabled || false}\n className={classNames}\n {...buttonProps}\n >\n {children}\n </BaseButton>\n );\n});\n\nexport const Button = Object.assign(ButtonRoot, {\n Root: ButtonRoot,\n});\n"],"names":["React","Button","styles","_as","jsx","BaseButton"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA6CA,MAAM,aAAaA,iBAAM,WAGvB,SAASC,QAAO,OAAO,KAAK;AAC5B,QAAM;AAAA,IACJ;AAAA,IACA,SAAS,cAAc;AAAA,IACvB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,UAAU;AAAA,IACV;AAAA,IACA,GAAG;AAAA,EAAA,IACD;AAGJ,QAAM,UAAU,gBAAgB,YAAY,aAAa;AAEzD,QAAM,aAAa;AAAA,IACjBC,cAAAA,QAAO;AAAA,IACPA,cAAAA,QAAO,IAAI;AAAA,IACXA,cAAAA,QAAO,OAAO;AAAA,IACd,QAAQA,cAAAA,QAAO;AAAA,IACf,aAAaA,cAAAA,QAAO;AAAA,IACpB;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAGX,MAAI,WAAWF,iBAAM,eAAe,QAAQ,GAAG;AAC7C,WAAOA,iBAAM,aAAa,UAAyD;AAAA,MACjF,WAAW,CAAC,YAAa,SAAS,MAAkC,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MACvG;AAAA,IAAA,CACD;AAAA,EACH;AAGA,MAAI,MAAM,OAAO,KAAK;AACpB,UAAM,EAAE,IAAIG,MAAK,GAAG,gBAAgB;AACpC,WACEC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,QACV,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AAGA,QAAM,EAAE,IAAI,KAAK,GAAG,gBAAgB;AACpC,SACEA,2BAAAA;AAAAA,IAACC,OAAAA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA,MAAO,YAAoC,QAAQ;AAAA,MACnD,UAAW,YAAoC,YAAY;AAAA,MAC3D,WAAW;AAAA,MACV,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;AAEM,MAAM,SAAS,OAAO,OAAO,YAAY;AAAA,EAC9C,MAAM;AACR,CAAC;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Button/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Button as BaseButton } from '@base-ui/react/button';\nimport styles from './Button.module.scss';\n\n/**\n * Button props.\n * @see https://usefragments.com/components/button\n */\ntype ButtonBaseProps = {\n children: React.ReactNode;\n /** Visual style variant. `\"outline\"` is an alias for `\"outlined\"`. `\"icon\"` is a convenience alias for a ghost icon-only button.\n * @default \"primary\"\n * @see https://usefragments.com/components/button#variants */\n variant?: 'primary' | 'secondary' | 'ghost' | 'danger' | 'outlined' | 'outline' | 'icon';\n /** Button size.\n * @default \"md\"\n * @see https://usefragments.com/components/button#sizes */\n size?: 'sm' | 'md' | 'lg';\n /** Render as icon-only button (square aspect ratio). Prefer `variant=\"icon\"` for the default ghost icon button. */\n icon?: boolean;\n /** Make button full width of container */\n fullWidth?: boolean;\n /** Merge props onto child element instead of rendering a button. Useful for composition with Link components.\n * @see https://usefragments.com/components/button#aschild */\n asChild?: boolean;\n};\n\n// Button as native button element\nexport interface ButtonAsButtonProps\n extends ButtonBaseProps,\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n as?: 'button';\n}\n\n// Button as anchor element\nexport interface ButtonAsAnchorProps\n extends ButtonBaseProps,\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> {\n as: 'a';\n}\n\nexport type ButtonProps = ButtonAsButtonProps | ButtonAsAnchorProps;\n\nconst ButtonRoot = React.forwardRef<\n HTMLButtonElement | HTMLAnchorElement,\n ButtonProps\n>(function Button(props, ref) {\n const {\n children,\n variant: variantProp = 'primary',\n size = 'md',\n icon = false,\n fullWidth = false,\n asChild = false,\n className,\n ...rest\n } = props;\n\n const iconOnly = icon || variantProp === 'icon';\n\n // Resolve aliases:\n // \"outline\" → \"outlined\"\n // \"icon\" → visual \"ghost\" + icon-only sizing\n const variant = variantProp === 'outline'\n ? 'outlined'\n : variantProp === 'icon'\n ? 'ghost'\n : variantProp;\n\n const classNames = [\n styles.button,\n styles[size],\n styles[variant],\n iconOnly && styles.icon,\n fullWidth && styles.fullWidth,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // asChild: merge button styling onto child element (e.g. Next.js Link)\n if (asChild && React.isValidElement(children)) {\n const { as: _as, ...childProps } = rest as ButtonProps & { as?: 'a' | 'button' };\n return React.cloneElement(children as React.ReactElement<Record<string, unknown>>, {\n ...childProps,\n className: [classNames, (children.props as Record<string, unknown>).className].filter(Boolean).join(' '),\n ref,\n });\n }\n\n // Render as anchor\n if (props.as === 'a') {\n const { as: _as, ...anchorProps } = rest as ButtonAsAnchorProps & { as?: 'a' };\n return (\n <a\n ref={ref as React.Ref<HTMLAnchorElement>}\n className={classNames}\n {...anchorProps}\n >\n {children}\n </a>\n );\n }\n\n // Render as button (default)\n const { as: _as, ...buttonProps } = rest as ButtonAsButtonProps;\n return (\n <BaseButton\n ref={ref as React.Ref<HTMLButtonElement>}\n type={(buttonProps as ButtonAsButtonProps).type || 'button'}\n disabled={(buttonProps as ButtonAsButtonProps).disabled || false}\n className={classNames}\n {...buttonProps}\n >\n {children}\n </BaseButton>\n );\n});\n\nexport const Button = Object.assign(ButtonRoot, {\n Root: ButtonRoot,\n});\n"],"names":["React","Button","styles","_as","jsx","BaseButton"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA6CA,MAAM,aAAaA,iBAAM,WAGvB,SAASC,QAAO,OAAO,KAAK;AAC5B,QAAM;AAAA,IACJ;AAAA,IACA,SAAS,cAAc;AAAA,IACvB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,UAAU;AAAA,IACV;AAAA,IACA,GAAG;AAAA,EAAA,IACD;AAEJ,QAAM,WAAW,QAAQ,gBAAgB;AAKzC,QAAM,UAAU,gBAAgB,YAC5B,aACA,gBAAgB,SACd,UACA;AAEN,QAAM,aAAa;AAAA,IACjBC,cAAAA,QAAO;AAAA,IACPA,cAAAA,QAAO,IAAI;AAAA,IACXA,cAAAA,QAAO,OAAO;AAAA,IACd,YAAYA,cAAAA,QAAO;AAAA,IACnB,aAAaA,cAAAA,QAAO;AAAA,IACpB;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAGX,MAAI,WAAWF,iBAAM,eAAe,QAAQ,GAAG;AAC7C,UAAM,EAAE,IAAIG,MAAK,GAAG,eAAe;AACnC,WAAOH,iBAAM,aAAa,UAAyD;AAAA,MACjF,GAAG;AAAA,MACH,WAAW,CAAC,YAAa,SAAS,MAAkC,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MACvG;AAAA,IAAA,CACD;AAAA,EACH;AAGA,MAAI,MAAM,OAAO,KAAK;AACpB,UAAM,EAAE,IAAIG,MAAK,GAAG,gBAAgB;AACpC,WACEC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,QACV,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AAGA,QAAM,EAAE,IAAI,KAAK,GAAG,gBAAgB;AACpC,SACEA,2BAAAA;AAAAA,IAACC,OAAAA;AAAAA,IAAA;AAAA,MACC;AAAA,MACA,MAAO,YAAoC,QAAQ;AAAA,MACnD,UAAW,YAAoC,YAAY;AAAA,MAC3D,WAAW;AAAA,MACV,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;AAEM,MAAM,SAAS,OAAO,OAAO,YAAY;AAAA,EAC9C,MAAM;AACR,CAAC;;"}
@@ -5,15 +5,15 @@ import * as React from 'react';
5
5
  */
6
6
  type ButtonBaseProps = {
7
7
  children: React.ReactNode;
8
- /** Visual style variant. `"outline"` is an alias for `"outlined"`.
8
+ /** Visual style variant. `"outline"` is an alias for `"outlined"`. `"icon"` is a convenience alias for a ghost icon-only button.
9
9
  * @default "primary"
10
10
  * @see https://usefragments.com/components/button#variants */
11
- variant?: 'primary' | 'secondary' | 'ghost' | 'danger' | 'outlined' | 'outline';
11
+ variant?: 'primary' | 'secondary' | 'ghost' | 'danger' | 'outlined' | 'outline' | 'icon';
12
12
  /** Button size.
13
13
  * @default "md"
14
14
  * @see https://usefragments.com/components/button#sizes */
15
15
  size?: 'sm' | 'md' | 'lg';
16
- /** Render as icon-only button (square aspect ratio) */
16
+ /** Render as icon-only button (square aspect ratio). Prefer `variant="icon"` for the default ghost icon button. */
17
17
  icon?: boolean;
18
18
  /** Make button full width of container */
19
19
  fullWidth?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Button/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;GAGG;AACH,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;kEAE8D;IAC9D,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAChF;;+DAE2D;IAC3D,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,uDAAuD;IACvD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;iEAC6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAGF,MAAM,WAAW,mBACf,SAAQ,eAAe,EACrB,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACjE,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf;AAGD,MAAM,WAAW,mBACf,SAAQ,eAAe,EACrB,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACjE,EAAE,EAAE,GAAG,CAAC;CACT;AAED,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAoEpE,eAAO,MAAM,MAAM;;CAEjB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Button/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;GAGG;AACH,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;kEAE8D;IAC9D,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IACzF;;+DAE2D;IAC3D,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,mHAAmH;IACnH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;iEAC6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAGF,MAAM,WAAW,mBACf,SAAQ,eAAe,EACrB,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACjE,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf;AAGD,MAAM,WAAW,mBACf,SAAQ,eAAe,EACrB,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACjE,EAAE,EAAE,GAAG,CAAC;CACT;AAED,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AA8EpE,eAAO,MAAM,MAAM;;CAEjB,CAAC"}
@@ -13,17 +13,20 @@ const ButtonRoot = React.forwardRef(function Button2(props, ref) {
13
13
  className,
14
14
  ...rest
15
15
  } = props;
16
- const variant = variantProp === "outline" ? "outlined" : variantProp;
16
+ const iconOnly = icon || variantProp === "icon";
17
+ const variant = variantProp === "outline" ? "outlined" : variantProp === "icon" ? "ghost" : variantProp;
17
18
  const classNames = [
18
19
  styles.button,
19
20
  styles[size],
20
21
  styles[variant],
21
- icon && styles.icon,
22
+ iconOnly && styles.icon,
22
23
  fullWidth && styles.fullWidth,
23
24
  className
24
25
  ].filter(Boolean).join(" ");
25
26
  if (asChild && React.isValidElement(children)) {
27
+ const { as: _as2, ...childProps } = rest;
26
28
  return React.cloneElement(children, {
29
+ ...childProps,
27
30
  className: [classNames, children.props.className].filter(Boolean).join(" "),
28
31
  ref
29
32
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Button/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Button as BaseButton } from '@base-ui/react/button';\nimport styles from './Button.module.scss';\n\n/**\n * Button props.\n * @see https://usefragments.com/components/button\n */\ntype ButtonBaseProps = {\n children: React.ReactNode;\n /** Visual style variant. `\"outline\"` is an alias for `\"outlined\"`.\n * @default \"primary\"\n * @see https://usefragments.com/components/button#variants */\n variant?: 'primary' | 'secondary' | 'ghost' | 'danger' | 'outlined' | 'outline';\n /** Button size.\n * @default \"md\"\n * @see https://usefragments.com/components/button#sizes */\n size?: 'sm' | 'md' | 'lg';\n /** Render as icon-only button (square aspect ratio) */\n icon?: boolean;\n /** Make button full width of container */\n fullWidth?: boolean;\n /** Merge props onto child element instead of rendering a button. Useful for composition with Link components.\n * @see https://usefragments.com/components/button#aschild */\n asChild?: boolean;\n};\n\n// Button as native button element\nexport interface ButtonAsButtonProps\n extends ButtonBaseProps,\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n as?: 'button';\n}\n\n// Button as anchor element\nexport interface ButtonAsAnchorProps\n extends ButtonBaseProps,\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> {\n as: 'a';\n}\n\nexport type ButtonProps = ButtonAsButtonProps | ButtonAsAnchorProps;\n\nconst ButtonRoot = React.forwardRef<\n HTMLButtonElement | HTMLAnchorElement,\n ButtonProps\n>(function Button(props, ref) {\n const {\n children,\n variant: variantProp = 'primary',\n size = 'md',\n icon = false,\n fullWidth = false,\n asChild = false,\n className,\n ...rest\n } = props;\n\n // Resolve alias: \"outline\" → \"outlined\"\n const variant = variantProp === 'outline' ? 'outlined' : variantProp;\n\n const classNames = [\n styles.button,\n styles[size],\n styles[variant],\n icon && styles.icon,\n fullWidth && styles.fullWidth,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // asChild: merge button styling onto child element (e.g. Next.js Link)\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<Record<string, unknown>>, {\n className: [classNames, (children.props as Record<string, unknown>).className].filter(Boolean).join(' '),\n ref,\n });\n }\n\n // Render as anchor\n if (props.as === 'a') {\n const { as: _as, ...anchorProps } = rest as ButtonAsAnchorProps & { as?: 'a' };\n return (\n <a\n ref={ref as React.Ref<HTMLAnchorElement>}\n className={classNames}\n {...anchorProps}\n >\n {children}\n </a>\n );\n }\n\n // Render as button (default)\n const { as: _as, ...buttonProps } = rest as ButtonAsButtonProps;\n return (\n <BaseButton\n ref={ref as React.Ref<HTMLButtonElement>}\n type={(buttonProps as ButtonAsButtonProps).type || 'button'}\n disabled={(buttonProps as ButtonAsButtonProps).disabled || false}\n className={classNames}\n {...buttonProps}\n >\n {children}\n </BaseButton>\n );\n});\n\nexport const Button = Object.assign(ButtonRoot, {\n Root: ButtonRoot,\n});\n"],"names":["Button","_as","BaseButton"],"mappings":";;;;AA6CA,MAAM,aAAa,MAAM,WAGvB,SAASA,QAAO,OAAO,KAAK;AAC5B,QAAM;AAAA,IACJ;AAAA,IACA,SAAS,cAAc;AAAA,IACvB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,UAAU;AAAA,IACV;AAAA,IACA,GAAG;AAAA,EAAA,IACD;AAGJ,QAAM,UAAU,gBAAgB,YAAY,aAAa;AAEzD,QAAM,aAAa;AAAA,IACjB,OAAO;AAAA,IACP,OAAO,IAAI;AAAA,IACX,OAAO,OAAO;AAAA,IACd,QAAQ,OAAO;AAAA,IACf,aAAa,OAAO;AAAA,IACpB;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAGX,MAAI,WAAW,MAAM,eAAe,QAAQ,GAAG;AAC7C,WAAO,MAAM,aAAa,UAAyD;AAAA,MACjF,WAAW,CAAC,YAAa,SAAS,MAAkC,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MACvG;AAAA,IAAA,CACD;AAAA,EACH;AAGA,MAAI,MAAM,OAAO,KAAK;AACpB,UAAM,EAAE,IAAIC,MAAK,GAAG,gBAAgB;AACpC,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,QACV,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AAGA,QAAM,EAAE,IAAI,KAAK,GAAG,gBAAgB;AACpC,SACE;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC;AAAA,MACA,MAAO,YAAoC,QAAQ;AAAA,MACnD,UAAW,YAAoC,YAAY;AAAA,MAC3D,WAAW;AAAA,MACV,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;AAEM,MAAM,SAAS,OAAO,OAAO,YAAY;AAAA,EAC9C,MAAM;AACR,CAAC;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Button/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Button as BaseButton } from '@base-ui/react/button';\nimport styles from './Button.module.scss';\n\n/**\n * Button props.\n * @see https://usefragments.com/components/button\n */\ntype ButtonBaseProps = {\n children: React.ReactNode;\n /** Visual style variant. `\"outline\"` is an alias for `\"outlined\"`. `\"icon\"` is a convenience alias for a ghost icon-only button.\n * @default \"primary\"\n * @see https://usefragments.com/components/button#variants */\n variant?: 'primary' | 'secondary' | 'ghost' | 'danger' | 'outlined' | 'outline' | 'icon';\n /** Button size.\n * @default \"md\"\n * @see https://usefragments.com/components/button#sizes */\n size?: 'sm' | 'md' | 'lg';\n /** Render as icon-only button (square aspect ratio). Prefer `variant=\"icon\"` for the default ghost icon button. */\n icon?: boolean;\n /** Make button full width of container */\n fullWidth?: boolean;\n /** Merge props onto child element instead of rendering a button. Useful for composition with Link components.\n * @see https://usefragments.com/components/button#aschild */\n asChild?: boolean;\n};\n\n// Button as native button element\nexport interface ButtonAsButtonProps\n extends ButtonBaseProps,\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n as?: 'button';\n}\n\n// Button as anchor element\nexport interface ButtonAsAnchorProps\n extends ButtonBaseProps,\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'children'> {\n as: 'a';\n}\n\nexport type ButtonProps = ButtonAsButtonProps | ButtonAsAnchorProps;\n\nconst ButtonRoot = React.forwardRef<\n HTMLButtonElement | HTMLAnchorElement,\n ButtonProps\n>(function Button(props, ref) {\n const {\n children,\n variant: variantProp = 'primary',\n size = 'md',\n icon = false,\n fullWidth = false,\n asChild = false,\n className,\n ...rest\n } = props;\n\n const iconOnly = icon || variantProp === 'icon';\n\n // Resolve aliases:\n // \"outline\" → \"outlined\"\n // \"icon\" → visual \"ghost\" + icon-only sizing\n const variant = variantProp === 'outline'\n ? 'outlined'\n : variantProp === 'icon'\n ? 'ghost'\n : variantProp;\n\n const classNames = [\n styles.button,\n styles[size],\n styles[variant],\n iconOnly && styles.icon,\n fullWidth && styles.fullWidth,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // asChild: merge button styling onto child element (e.g. Next.js Link)\n if (asChild && React.isValidElement(children)) {\n const { as: _as, ...childProps } = rest as ButtonProps & { as?: 'a' | 'button' };\n return React.cloneElement(children as React.ReactElement<Record<string, unknown>>, {\n ...childProps,\n className: [classNames, (children.props as Record<string, unknown>).className].filter(Boolean).join(' '),\n ref,\n });\n }\n\n // Render as anchor\n if (props.as === 'a') {\n const { as: _as, ...anchorProps } = rest as ButtonAsAnchorProps & { as?: 'a' };\n return (\n <a\n ref={ref as React.Ref<HTMLAnchorElement>}\n className={classNames}\n {...anchorProps}\n >\n {children}\n </a>\n );\n }\n\n // Render as button (default)\n const { as: _as, ...buttonProps } = rest as ButtonAsButtonProps;\n return (\n <BaseButton\n ref={ref as React.Ref<HTMLButtonElement>}\n type={(buttonProps as ButtonAsButtonProps).type || 'button'}\n disabled={(buttonProps as ButtonAsButtonProps).disabled || false}\n className={classNames}\n {...buttonProps}\n >\n {children}\n </BaseButton>\n );\n});\n\nexport const Button = Object.assign(ButtonRoot, {\n Root: ButtonRoot,\n});\n"],"names":["Button","_as","BaseButton"],"mappings":";;;;AA6CA,MAAM,aAAa,MAAM,WAGvB,SAASA,QAAO,OAAO,KAAK;AAC5B,QAAM;AAAA,IACJ;AAAA,IACA,SAAS,cAAc;AAAA,IACvB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,UAAU;AAAA,IACV;AAAA,IACA,GAAG;AAAA,EAAA,IACD;AAEJ,QAAM,WAAW,QAAQ,gBAAgB;AAKzC,QAAM,UAAU,gBAAgB,YAC5B,aACA,gBAAgB,SACd,UACA;AAEN,QAAM,aAAa;AAAA,IACjB,OAAO;AAAA,IACP,OAAO,IAAI;AAAA,IACX,OAAO,OAAO;AAAA,IACd,YAAY,OAAO;AAAA,IACnB,aAAa,OAAO;AAAA,IACpB;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAGX,MAAI,WAAW,MAAM,eAAe,QAAQ,GAAG;AAC7C,UAAM,EAAE,IAAIC,MAAK,GAAG,eAAe;AACnC,WAAO,MAAM,aAAa,UAAyD;AAAA,MACjF,GAAG;AAAA,MACH,WAAW,CAAC,YAAa,SAAS,MAAkC,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MACvG;AAAA,IAAA,CACD;AAAA,EACH;AAGA,MAAI,MAAM,OAAO,KAAK;AACpB,UAAM,EAAE,IAAIA,MAAK,GAAG,gBAAgB;AACpC,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,QACV,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AAGA,QAAM,EAAE,IAAI,KAAK,GAAG,gBAAgB;AACpC,SACE;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC;AAAA,MACA,MAAO,YAAoC,QAAQ;AAAA,MACnD,UAAW,YAAoC,YAAY;AAAA,MAC3D,WAAW;AAAA,MACV,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;AAEM,MAAM,SAAS,OAAO,OAAO,YAAY;AAAA,EAC9C,MAAM;AACR,CAAC;"}
@@ -26,7 +26,8 @@ const ButtonGroupRoot = React__namespace.forwardRef(
26
26
  gap = "sm",
27
27
  wrap = false,
28
28
  align,
29
- className
29
+ className,
30
+ ...htmlProps
30
31
  }, ref) {
31
32
  const classes = [
32
33
  ButtonGroup_module.default.group,
@@ -35,7 +36,7 @@ const ButtonGroupRoot = React__namespace.forwardRef(
35
36
  align && ButtonGroup_module.default[`align-${align}`],
36
37
  className
37
38
  ].filter(Boolean).join(" ");
38
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: classes, children });
39
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, ...htmlProps, className: classes, children });
39
40
  }
40
41
  );
41
42
  const ButtonGroup = Object.assign(ButtonGroupRoot, {