@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
@@ -1,33 +1,33 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const group = "_group_1ea4w_1";
4
- const gapXs = "_gap-xs_1ea4w_6";
5
- const gapSm = "_gap-sm_1ea4w_10";
6
- const item = "_item_1ea4w_20";
7
- const selected = "_selected_1ea4w_25";
8
- const pills = "_pills_1ea4w_30";
9
- const outline = "_outline_1ea4w_43";
10
- const disabled = "_disabled_1ea4w_101";
11
- const sizeSm = "_size-sm_1ea4w_106";
12
- const sizeMd = "_size-md_1ea4w_112";
13
- const sizeLg = "_size-lg_1ea4w_118";
3
+ const group = "_group_lpcmd_1";
4
+ const gapXs = "_gap-xs_lpcmd_6";
5
+ const gapSm = "_gap-sm_lpcmd_10";
6
+ const item = "_item_lpcmd_20";
7
+ const selected = "_selected_lpcmd_25";
8
+ const pills = "_pills_lpcmd_30";
9
+ const outline = "_outline_lpcmd_43";
10
+ const disabled = "_disabled_lpcmd_101";
11
+ const sizeSm = "_size-sm_lpcmd_106";
12
+ const sizeMd = "_size-md_lpcmd_112";
13
+ const sizeLg = "_size-lg_lpcmd_118";
14
14
  const styles = {
15
15
  group,
16
- "gap-xs": "_gap-xs_1ea4w_6",
16
+ "gap-xs": "_gap-xs_lpcmd_6",
17
17
  gapXs,
18
- "gap-sm": "_gap-sm_1ea4w_10",
18
+ "gap-sm": "_gap-sm_lpcmd_10",
19
19
  gapSm,
20
- "default": "_default_1ea4w_14",
20
+ "default": "_default_lpcmd_14",
21
21
  item,
22
22
  selected,
23
23
  pills,
24
24
  outline,
25
25
  disabled,
26
- "size-sm": "_size-sm_1ea4w_106",
26
+ "size-sm": "_size-sm_lpcmd_106",
27
27
  sizeSm,
28
- "size-md": "_size-md_1ea4w_112",
28
+ "size-md": "_size-md_lpcmd_112",
29
29
  sizeMd,
30
- "size-lg": "_size-lg_1ea4w_118",
30
+ "size-lg": "_size-lg_lpcmd_118",
31
31
  sizeLg
32
32
  };
33
33
  exports.default = styles;
@@ -1,31 +1,31 @@
1
- const group = "_group_1ea4w_1";
2
- const gapXs = "_gap-xs_1ea4w_6";
3
- const gapSm = "_gap-sm_1ea4w_10";
4
- const item = "_item_1ea4w_20";
5
- const selected = "_selected_1ea4w_25";
6
- const pills = "_pills_1ea4w_30";
7
- const outline = "_outline_1ea4w_43";
8
- const disabled = "_disabled_1ea4w_101";
9
- const sizeSm = "_size-sm_1ea4w_106";
10
- const sizeMd = "_size-md_1ea4w_112";
11
- const sizeLg = "_size-lg_1ea4w_118";
1
+ const group = "_group_lpcmd_1";
2
+ const gapXs = "_gap-xs_lpcmd_6";
3
+ const gapSm = "_gap-sm_lpcmd_10";
4
+ const item = "_item_lpcmd_20";
5
+ const selected = "_selected_lpcmd_25";
6
+ const pills = "_pills_lpcmd_30";
7
+ const outline = "_outline_lpcmd_43";
8
+ const disabled = "_disabled_lpcmd_101";
9
+ const sizeSm = "_size-sm_lpcmd_106";
10
+ const sizeMd = "_size-md_lpcmd_112";
11
+ const sizeLg = "_size-lg_lpcmd_118";
12
12
  const styles = {
13
13
  group,
14
- "gap-xs": "_gap-xs_1ea4w_6",
14
+ "gap-xs": "_gap-xs_lpcmd_6",
15
15
  gapXs,
16
- "gap-sm": "_gap-sm_1ea4w_10",
16
+ "gap-sm": "_gap-sm_lpcmd_10",
17
17
  gapSm,
18
- "default": "_default_1ea4w_14",
18
+ "default": "_default_lpcmd_14",
19
19
  item,
20
20
  selected,
21
21
  pills,
22
22
  outline,
23
23
  disabled,
24
- "size-sm": "_size-sm_1ea4w_106",
24
+ "size-sm": "_size-sm_lpcmd_106",
25
25
  sizeSm,
26
- "size-md": "_size-md_1ea4w_112",
26
+ "size-md": "_size-md_lpcmd_112",
27
27
  sizeMd,
28
- "size-lg": "_size-lg_1ea4w_118",
28
+ "size-lg": "_size-lg_lpcmd_118",
29
29
  sizeLg
30
30
  };
31
31
  export {
@@ -32,21 +32,32 @@ function useToggleGroupContext() {
32
32
  }
33
33
  function ToggleGroupRoot({
34
34
  value,
35
+ defaultValue,
35
36
  onChange,
36
37
  onValueChange,
37
38
  children,
38
39
  variant = "default",
39
40
  size = "md",
40
41
  gap = "xs",
42
+ selectionMode = "single",
41
43
  className,
42
44
  ...htmlProps
43
45
  }) {
44
46
  var _a;
45
- const resolvedOnChange = onChange ?? onValueChange ?? (() => {
46
- });
47
+ const normalizedVariant = variant === "outlined" ? "outline" : variant;
48
+ const [internalValue, setInternalValue] = React__namespace.useState(defaultValue ?? "");
49
+ const isControlled = value !== void 0;
50
+ const currentValue = isControlled ? value ?? "" : internalValue;
51
+ const emitChange = React__namespace.useCallback((nextValue) => {
52
+ var _a2;
53
+ if (!isControlled) {
54
+ setInternalValue(nextValue);
55
+ }
56
+ (_a2 = onChange ?? onValueChange) == null ? void 0 : _a2(nextValue);
57
+ }, [isControlled, onChange, onValueChange]);
47
58
  const classes = [
48
59
  ToggleGroup_module.default.group,
49
- ToggleGroup_module.default[variant],
60
+ ToggleGroup_module.default[normalizedVariant],
50
61
  ToggleGroup_module.default[`size-${size}`],
51
62
  gap !== "none" && ToggleGroup_module.default[`gap-${gap}`],
52
63
  className
@@ -56,17 +67,25 @@ function ToggleGroupRoot({
56
67
  );
57
68
  const firstEnabledValue = ((_a = childItems.find((item) => !item.props.disabled)) == null ? void 0 : _a.props.value) ?? null;
58
69
  const hasFocusableSelection = childItems.some(
59
- (item) => !item.props.disabled && item.props.value === value
70
+ (item) => !item.props.disabled && item.props.value === currentValue
60
71
  );
61
72
  const contextValue = {
62
- value,
63
- onChange: resolvedOnChange,
64
- variant,
73
+ value: currentValue,
74
+ onChange: emitChange,
75
+ variant: normalizedVariant,
65
76
  size,
66
77
  hasFocusableSelection,
67
78
  firstEnabledValue
68
79
  };
69
- return /* @__PURE__ */ jsxRuntime.jsx(ToggleGroupContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx("div", { ...htmlProps, role: "radiogroup", className: classes, children }) });
80
+ return /* @__PURE__ */ jsxRuntime.jsx(ToggleGroupContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
81
+ "div",
82
+ {
83
+ ...htmlProps,
84
+ role: selectionMode === "single" ? "radiogroup" : "radiogroup",
85
+ className: classes,
86
+ children
87
+ }
88
+ ) });
70
89
  }
71
90
  function ToggleGroupItem({
72
91
  value,
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/ToggleGroup/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './ToggleGroup.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\n/**\n * A group of toggle buttons where only one can be selected at a time.\n * @see https://usefragments.com/components/togglegroup\n */\nexport interface ToggleGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current selected value */\n value: string;\n /** Callback when selection changes */\n onChange?: (value: string) => void;\n /** Alias for onChange (Radix convention) */\n onValueChange?: (value: string) => void;\n /** Toggle items */\n children: React.ReactNode;\n /** Visual variant.\n * @default \"default\"\n * @see https://usefragments.com/components/togglegroup#variants */\n variant?: 'default' | 'pills' | 'outline';\n /** Size.\n * @default \"md\" */\n size?: 'sm' | 'md' | 'lg';\n /** Gap between items (for pills/outline variants) */\n gap?: 'none' | 'xs' | 'sm';\n}\n\nexport interface ToggleGroupItemProps extends Omit<React.HTMLAttributes<HTMLButtonElement>, 'onClick'> {\n /** Value for this item */\n value: string;\n /** Item content */\n children: React.ReactNode;\n /** Disabled state */\n disabled?: boolean;\n}\n\n// ============================================\n// Context\n// ============================================\n\ninterface ToggleGroupContextValue {\n value: string;\n onChange: (value: string) => void;\n variant: 'default' | 'pills' | 'outline';\n size: 'sm' | 'md' | 'lg';\n hasFocusableSelection: boolean;\n firstEnabledValue: string | null;\n}\n\nconst ToggleGroupContext = React.createContext<ToggleGroupContextValue | null>(\n null\n);\n\nfunction useToggleGroupContext() {\n const context = React.useContext(ToggleGroupContext);\n if (!context) {\n throw new Error('ToggleGroup.Item must be used within a ToggleGroup');\n }\n return context;\n}\n\n// ============================================\n// Components\n// ============================================\n\nfunction ToggleGroupRoot({\n value,\n onChange,\n onValueChange,\n children,\n variant = 'default',\n size = 'md',\n gap = 'xs',\n className,\n ...htmlProps\n}: ToggleGroupProps) {\n const resolvedOnChange = onChange ?? onValueChange ?? (() => {});\n const classes = [\n styles.group,\n styles[variant],\n styles[`size-${size}`],\n gap !== 'none' && styles[`gap-${gap}`],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const childItems = React.Children.toArray(children).filter(\n (child): child is React.ReactElement<ToggleGroupItemProps> =>\n React.isValidElement<ToggleGroupItemProps>(child)\n );\n const firstEnabledValue = childItems.find((item) => !item.props.disabled)?.props.value ?? null;\n const hasFocusableSelection = childItems.some(\n (item) => !item.props.disabled && item.props.value === value\n );\n\n const contextValue: ToggleGroupContextValue = {\n value,\n onChange: resolvedOnChange,\n variant,\n size,\n hasFocusableSelection,\n firstEnabledValue,\n };\n\n return (\n <ToggleGroupContext.Provider value={contextValue}>\n <div {...htmlProps} role=\"radiogroup\" className={classes}>\n {children}\n </div>\n </ToggleGroupContext.Provider>\n );\n}\n\nfunction ToggleGroupItem({\n value,\n children,\n disabled = false,\n className,\n onKeyDown,\n ...htmlProps\n}: ToggleGroupItemProps) {\n const context = useToggleGroupContext();\n const isSelected = context.value === value;\n const isTabbableSelected = isSelected && !disabled;\n const isFirstFallback = !context.hasFocusableSelection && !disabled && context.firstEnabledValue === value;\n\n const classes = [\n styles.item,\n isSelected && styles.selected,\n disabled && styles.disabled,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleClick = () => {\n if (!disabled) {\n context.onChange(value);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n\n if (disabled) return;\n\n const key = event.key;\n const supportsRoving =\n key === 'ArrowRight' ||\n key === 'ArrowDown' ||\n key === 'ArrowLeft' ||\n key === 'ArrowUp' ||\n key === 'Home' ||\n key === 'End';\n\n if (!supportsRoving) return;\n\n event.preventDefault();\n\n const group = event.currentTarget.closest('[role=\"radiogroup\"]');\n if (!group) return;\n\n const radios = Array.from(\n group.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]:not(:disabled)')\n );\n\n if (radios.length === 0) return;\n\n const currentIndex = radios.indexOf(event.currentTarget);\n const fallbackIndex = currentIndex >= 0 ? currentIndex : 0;\n let nextIndex = fallbackIndex;\n\n if (key === 'ArrowRight' || key === 'ArrowDown') {\n nextIndex = (fallbackIndex + 1) % radios.length;\n } else if (key === 'ArrowLeft' || key === 'ArrowUp') {\n nextIndex = (fallbackIndex - 1 + radios.length) % radios.length;\n } else if (key === 'Home') {\n nextIndex = 0;\n } else if (key === 'End') {\n nextIndex = radios.length - 1;\n }\n\n const target = radios[nextIndex];\n const nextValue = target.dataset.value;\n if (nextValue != null) {\n context.onChange(nextValue);\n }\n target.focus();\n };\n\n return (\n <button\n {...htmlProps}\n type=\"button\"\n data-value={value}\n role=\"radio\"\n aria-checked={isSelected}\n tabIndex={isTabbableSelected || isFirstFallback ? 0 : -1}\n disabled={disabled}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={classes}\n >\n {children}\n </button>\n );\n}\n\n// ============================================\n// Export compound component\n// ============================================\n\nexport const ToggleGroup = Object.assign(ToggleGroupRoot, {\n Item: ToggleGroupItem,\n});\n\nexport { ToggleGroupRoot, ToggleGroupItem, useToggleGroupContext };\n"],"names":["React","styles","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/ToggleGroup/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './ToggleGroup.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\n/**\n * A group of toggle buttons where only one can be selected at a time.\n * @see https://usefragments.com/components/togglegroup\n */\nexport interface ToggleGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current selected value */\n value?: string;\n /** Default selected value (uncontrolled) */\n defaultValue?: string;\n /** Callback when selection changes */\n onChange?: (value: string) => void;\n /** Alias for onChange (Radix convention) */\n onValueChange?: (value: string) => void;\n /** Toggle items */\n children: React.ReactNode;\n /** Visual variant.\n * @default \"default\"\n * @see https://usefragments.com/components/togglegroup#variants */\n variant?: 'default' | 'pills' | 'outline' | 'outlined';\n /** Size.\n * @default \"md\" */\n size?: 'sm' | 'md' | 'lg';\n /** Gap between items (for pills/outline variants) */\n gap?: 'none' | 'xs' | 'sm';\n /** Selection mode for this control. Currently only single-select is supported.\n * @default \"single\" */\n selectionMode?: 'single';\n}\n\nexport interface ToggleGroupItemProps extends Omit<React.HTMLAttributes<HTMLButtonElement>, 'onClick'> {\n /** Value for this item */\n value: string;\n /** Item content */\n children: React.ReactNode;\n /** Disabled state */\n disabled?: boolean;\n}\n\n// ============================================\n// Context\n// ============================================\n\ninterface ToggleGroupContextValue {\n value: string;\n onChange: (value: string) => void;\n variant: 'default' | 'pills' | 'outline';\n size: 'sm' | 'md' | 'lg';\n hasFocusableSelection: boolean;\n firstEnabledValue: string | null;\n}\n\nconst ToggleGroupContext = React.createContext<ToggleGroupContextValue | null>(\n null\n);\n\nfunction useToggleGroupContext() {\n const context = React.useContext(ToggleGroupContext);\n if (!context) {\n throw new Error('ToggleGroup.Item must be used within a ToggleGroup');\n }\n return context;\n}\n\n// ============================================\n// Components\n// ============================================\n\nfunction ToggleGroupRoot({\n value,\n defaultValue,\n onChange,\n onValueChange,\n children,\n variant = 'default',\n size = 'md',\n gap = 'xs',\n selectionMode = 'single',\n className,\n ...htmlProps\n}: ToggleGroupProps) {\n const normalizedVariant = variant === 'outlined' ? 'outline' : variant;\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? '');\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value ?? '' : internalValue;\n const emitChange = React.useCallback((nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n (onChange ?? onValueChange)?.(nextValue);\n }, [isControlled, onChange, onValueChange]);\n const classes = [\n styles.group,\n styles[normalizedVariant],\n styles[`size-${size}`],\n gap !== 'none' && styles[`gap-${gap}`],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const childItems = React.Children.toArray(children).filter(\n (child): child is React.ReactElement<ToggleGroupItemProps> =>\n React.isValidElement<ToggleGroupItemProps>(child)\n );\n const firstEnabledValue = childItems.find((item) => !item.props.disabled)?.props.value ?? null;\n const hasFocusableSelection = childItems.some(\n (item) => !item.props.disabled && item.props.value === currentValue\n );\n\n const contextValue: ToggleGroupContextValue = {\n value: currentValue,\n onChange: emitChange,\n variant: normalizedVariant,\n size,\n hasFocusableSelection,\n firstEnabledValue,\n };\n\n return (\n <ToggleGroupContext.Provider value={contextValue}>\n <div\n {...htmlProps}\n role={selectionMode === 'single' ? 'radiogroup' : 'radiogroup'}\n className={classes}\n >\n {children}\n </div>\n </ToggleGroupContext.Provider>\n );\n}\n\nfunction ToggleGroupItem({\n value,\n children,\n disabled = false,\n className,\n onKeyDown,\n ...htmlProps\n}: ToggleGroupItemProps) {\n const context = useToggleGroupContext();\n const isSelected = context.value === value;\n const isTabbableSelected = isSelected && !disabled;\n const isFirstFallback = !context.hasFocusableSelection && !disabled && context.firstEnabledValue === value;\n\n const classes = [\n styles.item,\n isSelected && styles.selected,\n disabled && styles.disabled,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleClick = () => {\n if (!disabled) {\n context.onChange(value);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n\n if (disabled) return;\n\n const key = event.key;\n const supportsRoving =\n key === 'ArrowRight' ||\n key === 'ArrowDown' ||\n key === 'ArrowLeft' ||\n key === 'ArrowUp' ||\n key === 'Home' ||\n key === 'End';\n\n if (!supportsRoving) return;\n\n event.preventDefault();\n\n const group = event.currentTarget.closest('[role=\"radiogroup\"]');\n if (!group) return;\n\n const radios = Array.from(\n group.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]:not(:disabled)')\n );\n\n if (radios.length === 0) return;\n\n const currentIndex = radios.indexOf(event.currentTarget);\n const fallbackIndex = currentIndex >= 0 ? currentIndex : 0;\n let nextIndex = fallbackIndex;\n\n if (key === 'ArrowRight' || key === 'ArrowDown') {\n nextIndex = (fallbackIndex + 1) % radios.length;\n } else if (key === 'ArrowLeft' || key === 'ArrowUp') {\n nextIndex = (fallbackIndex - 1 + radios.length) % radios.length;\n } else if (key === 'Home') {\n nextIndex = 0;\n } else if (key === 'End') {\n nextIndex = radios.length - 1;\n }\n\n const target = radios[nextIndex];\n const nextValue = target.dataset.value;\n if (nextValue != null) {\n context.onChange(nextValue);\n }\n target.focus();\n };\n\n return (\n <button\n {...htmlProps}\n type=\"button\"\n data-value={value}\n role=\"radio\"\n aria-checked={isSelected}\n tabIndex={isTabbableSelected || isFirstFallback ? 0 : -1}\n disabled={disabled}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={classes}\n >\n {children}\n </button>\n );\n}\n\n// ============================================\n// Export compound component\n// ============================================\n\nexport const ToggleGroup = Object.assign(ToggleGroupRoot, {\n Item: ToggleGroupItem,\n});\n\nexport { ToggleGroupRoot, ToggleGroupItem, useToggleGroupContext };\n"],"names":["React","_a","styles","jsx"],"mappings":"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"}
@@ -5,7 +5,9 @@ import * as React from 'react';
5
5
  */
6
6
  export interface ToggleGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
7
7
  /** Current selected value */
8
- value: string;
8
+ value?: string;
9
+ /** Default selected value (uncontrolled) */
10
+ defaultValue?: string;
9
11
  /** Callback when selection changes */
10
12
  onChange?: (value: string) => void;
11
13
  /** Alias for onChange (Radix convention) */
@@ -15,12 +17,15 @@ export interface ToggleGroupProps extends Omit<React.HTMLAttributes<HTMLDivEleme
15
17
  /** Visual variant.
16
18
  * @default "default"
17
19
  * @see https://usefragments.com/components/togglegroup#variants */
18
- variant?: 'default' | 'pills' | 'outline';
20
+ variant?: 'default' | 'pills' | 'outline' | 'outlined';
19
21
  /** Size.
20
22
  * @default "md" */
21
23
  size?: 'sm' | 'md' | 'lg';
22
24
  /** Gap between items (for pills/outline variants) */
23
25
  gap?: 'none' | 'xs' | 'sm';
26
+ /** Selection mode for this control. Currently only single-select is supported.
27
+ * @default "single" */
28
+ selectionMode?: 'single';
24
29
  }
25
30
  export interface ToggleGroupItemProps extends Omit<React.HTMLAttributes<HTMLButtonElement>, 'onClick'> {
26
31
  /** Value for this item */
@@ -39,7 +44,7 @@ interface ToggleGroupContextValue {
39
44
  firstEnabledValue: string | null;
40
45
  }
41
46
  declare function useToggleGroupContext(): ToggleGroupContextValue;
42
- declare function ToggleGroupRoot({ value, onChange, onValueChange, children, variant, size, gap, className, ...htmlProps }: ToggleGroupProps): import("react/jsx-runtime").JSX.Element;
47
+ declare function ToggleGroupRoot({ value, defaultValue, onChange, onValueChange, children, variant, size, gap, selectionMode, className, ...htmlProps }: ToggleGroupProps): import("react/jsx-runtime").JSX.Element;
43
48
  declare function ToggleGroupItem({ value, children, disabled, className, onKeyDown, ...htmlProps }: ToggleGroupItemProps): import("react/jsx-runtime").JSX.Element;
44
49
  export declare const ToggleGroup: typeof ToggleGroupRoot & {
45
50
  Item: typeof ToggleGroupItem;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ToggleGroup/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC9F,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,mBAAmB;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;uEAEmE;IACnE,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAC1C;uBACmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,SAAS,CAAC;IACpG,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACzC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACzB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAMD,iBAAS,qBAAqB,4BAM7B;AAMD,iBAAS,eAAe,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,OAAmB,EACnB,IAAW,EACX,GAAU,EACV,SAAS,EACT,GAAG,SAAS,EACb,EAAE,gBAAgB,2CAqClB;AAED,iBAAS,eAAe,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,SAAS,EACT,SAAS,EACT,GAAG,SAAS,EACb,EAAE,oBAAoB,2CAuFtB;AAMD,eAAO,MAAM,WAAW;;CAEtB,CAAC;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ToggleGroup/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC9F,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,mBAAmB;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;uEAEmE;IACnE,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;IACvD;uBACmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3B;2BACuB;IACvB,aAAa,CAAC,EAAE,QAAQ,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,SAAS,CAAC;IACpG,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACzC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACzB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAMD,iBAAS,qBAAqB,4BAM7B;AAMD,iBAAS,eAAe,CAAC,EACvB,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,OAAmB,EACnB,IAAW,EACX,GAAU,EACV,aAAwB,EACxB,SAAS,EACT,GAAG,SAAS,EACb,EAAE,gBAAgB,2CAkDlB;AAED,iBAAS,eAAe,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,SAAS,EACT,SAAS,EACT,GAAG,SAAS,EACb,EAAE,oBAAoB,2CAuFtB;AAMD,eAAO,MAAM,WAAW;;CAEtB,CAAC;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAC"}
@@ -13,21 +13,32 @@ function useToggleGroupContext() {
13
13
  }
14
14
  function ToggleGroupRoot({
15
15
  value,
16
+ defaultValue,
16
17
  onChange,
17
18
  onValueChange,
18
19
  children,
19
20
  variant = "default",
20
21
  size = "md",
21
22
  gap = "xs",
23
+ selectionMode = "single",
22
24
  className,
23
25
  ...htmlProps
24
26
  }) {
25
27
  var _a;
26
- const resolvedOnChange = onChange ?? onValueChange ?? (() => {
27
- });
28
+ const normalizedVariant = variant === "outlined" ? "outline" : variant;
29
+ const [internalValue, setInternalValue] = React.useState(defaultValue ?? "");
30
+ const isControlled = value !== void 0;
31
+ const currentValue = isControlled ? value ?? "" : internalValue;
32
+ const emitChange = React.useCallback((nextValue) => {
33
+ var _a2;
34
+ if (!isControlled) {
35
+ setInternalValue(nextValue);
36
+ }
37
+ (_a2 = onChange ?? onValueChange) == null ? void 0 : _a2(nextValue);
38
+ }, [isControlled, onChange, onValueChange]);
28
39
  const classes = [
29
40
  styles.group,
30
- styles[variant],
41
+ styles[normalizedVariant],
31
42
  styles[`size-${size}`],
32
43
  gap !== "none" && styles[`gap-${gap}`],
33
44
  className
@@ -37,17 +48,25 @@ function ToggleGroupRoot({
37
48
  );
38
49
  const firstEnabledValue = ((_a = childItems.find((item) => !item.props.disabled)) == null ? void 0 : _a.props.value) ?? null;
39
50
  const hasFocusableSelection = childItems.some(
40
- (item) => !item.props.disabled && item.props.value === value
51
+ (item) => !item.props.disabled && item.props.value === currentValue
41
52
  );
42
53
  const contextValue = {
43
- value,
44
- onChange: resolvedOnChange,
45
- variant,
54
+ value: currentValue,
55
+ onChange: emitChange,
56
+ variant: normalizedVariant,
46
57
  size,
47
58
  hasFocusableSelection,
48
59
  firstEnabledValue
49
60
  };
50
- return /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx("div", { ...htmlProps, role: "radiogroup", className: classes, children }) });
61
+ return /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
62
+ "div",
63
+ {
64
+ ...htmlProps,
65
+ role: selectionMode === "single" ? "radiogroup" : "radiogroup",
66
+ className: classes,
67
+ children
68
+ }
69
+ ) });
51
70
  }
52
71
  function ToggleGroupItem({
53
72
  value,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/ToggleGroup/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './ToggleGroup.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\n/**\n * A group of toggle buttons where only one can be selected at a time.\n * @see https://usefragments.com/components/togglegroup\n */\nexport interface ToggleGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current selected value */\n value: string;\n /** Callback when selection changes */\n onChange?: (value: string) => void;\n /** Alias for onChange (Radix convention) */\n onValueChange?: (value: string) => void;\n /** Toggle items */\n children: React.ReactNode;\n /** Visual variant.\n * @default \"default\"\n * @see https://usefragments.com/components/togglegroup#variants */\n variant?: 'default' | 'pills' | 'outline';\n /** Size.\n * @default \"md\" */\n size?: 'sm' | 'md' | 'lg';\n /** Gap between items (for pills/outline variants) */\n gap?: 'none' | 'xs' | 'sm';\n}\n\nexport interface ToggleGroupItemProps extends Omit<React.HTMLAttributes<HTMLButtonElement>, 'onClick'> {\n /** Value for this item */\n value: string;\n /** Item content */\n children: React.ReactNode;\n /** Disabled state */\n disabled?: boolean;\n}\n\n// ============================================\n// Context\n// ============================================\n\ninterface ToggleGroupContextValue {\n value: string;\n onChange: (value: string) => void;\n variant: 'default' | 'pills' | 'outline';\n size: 'sm' | 'md' | 'lg';\n hasFocusableSelection: boolean;\n firstEnabledValue: string | null;\n}\n\nconst ToggleGroupContext = React.createContext<ToggleGroupContextValue | null>(\n null\n);\n\nfunction useToggleGroupContext() {\n const context = React.useContext(ToggleGroupContext);\n if (!context) {\n throw new Error('ToggleGroup.Item must be used within a ToggleGroup');\n }\n return context;\n}\n\n// ============================================\n// Components\n// ============================================\n\nfunction ToggleGroupRoot({\n value,\n onChange,\n onValueChange,\n children,\n variant = 'default',\n size = 'md',\n gap = 'xs',\n className,\n ...htmlProps\n}: ToggleGroupProps) {\n const resolvedOnChange = onChange ?? onValueChange ?? (() => {});\n const classes = [\n styles.group,\n styles[variant],\n styles[`size-${size}`],\n gap !== 'none' && styles[`gap-${gap}`],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const childItems = React.Children.toArray(children).filter(\n (child): child is React.ReactElement<ToggleGroupItemProps> =>\n React.isValidElement<ToggleGroupItemProps>(child)\n );\n const firstEnabledValue = childItems.find((item) => !item.props.disabled)?.props.value ?? null;\n const hasFocusableSelection = childItems.some(\n (item) => !item.props.disabled && item.props.value === value\n );\n\n const contextValue: ToggleGroupContextValue = {\n value,\n onChange: resolvedOnChange,\n variant,\n size,\n hasFocusableSelection,\n firstEnabledValue,\n };\n\n return (\n <ToggleGroupContext.Provider value={contextValue}>\n <div {...htmlProps} role=\"radiogroup\" className={classes}>\n {children}\n </div>\n </ToggleGroupContext.Provider>\n );\n}\n\nfunction ToggleGroupItem({\n value,\n children,\n disabled = false,\n className,\n onKeyDown,\n ...htmlProps\n}: ToggleGroupItemProps) {\n const context = useToggleGroupContext();\n const isSelected = context.value === value;\n const isTabbableSelected = isSelected && !disabled;\n const isFirstFallback = !context.hasFocusableSelection && !disabled && context.firstEnabledValue === value;\n\n const classes = [\n styles.item,\n isSelected && styles.selected,\n disabled && styles.disabled,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleClick = () => {\n if (!disabled) {\n context.onChange(value);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n\n if (disabled) return;\n\n const key = event.key;\n const supportsRoving =\n key === 'ArrowRight' ||\n key === 'ArrowDown' ||\n key === 'ArrowLeft' ||\n key === 'ArrowUp' ||\n key === 'Home' ||\n key === 'End';\n\n if (!supportsRoving) return;\n\n event.preventDefault();\n\n const group = event.currentTarget.closest('[role=\"radiogroup\"]');\n if (!group) return;\n\n const radios = Array.from(\n group.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]:not(:disabled)')\n );\n\n if (radios.length === 0) return;\n\n const currentIndex = radios.indexOf(event.currentTarget);\n const fallbackIndex = currentIndex >= 0 ? currentIndex : 0;\n let nextIndex = fallbackIndex;\n\n if (key === 'ArrowRight' || key === 'ArrowDown') {\n nextIndex = (fallbackIndex + 1) % radios.length;\n } else if (key === 'ArrowLeft' || key === 'ArrowUp') {\n nextIndex = (fallbackIndex - 1 + radios.length) % radios.length;\n } else if (key === 'Home') {\n nextIndex = 0;\n } else if (key === 'End') {\n nextIndex = radios.length - 1;\n }\n\n const target = radios[nextIndex];\n const nextValue = target.dataset.value;\n if (nextValue != null) {\n context.onChange(nextValue);\n }\n target.focus();\n };\n\n return (\n <button\n {...htmlProps}\n type=\"button\"\n data-value={value}\n role=\"radio\"\n aria-checked={isSelected}\n tabIndex={isTabbableSelected || isFirstFallback ? 0 : -1}\n disabled={disabled}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={classes}\n >\n {children}\n </button>\n );\n}\n\n// ============================================\n// Export compound component\n// ============================================\n\nexport const ToggleGroup = Object.assign(ToggleGroupRoot, {\n Item: ToggleGroupItem,\n});\n\nexport { ToggleGroupRoot, ToggleGroupItem, useToggleGroupContext };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/ToggleGroup/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styles from './ToggleGroup.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\n/**\n * A group of toggle buttons where only one can be selected at a time.\n * @see https://usefragments.com/components/togglegroup\n */\nexport interface ToggleGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current selected value */\n value?: string;\n /** Default selected value (uncontrolled) */\n defaultValue?: string;\n /** Callback when selection changes */\n onChange?: (value: string) => void;\n /** Alias for onChange (Radix convention) */\n onValueChange?: (value: string) => void;\n /** Toggle items */\n children: React.ReactNode;\n /** Visual variant.\n * @default \"default\"\n * @see https://usefragments.com/components/togglegroup#variants */\n variant?: 'default' | 'pills' | 'outline' | 'outlined';\n /** Size.\n * @default \"md\" */\n size?: 'sm' | 'md' | 'lg';\n /** Gap between items (for pills/outline variants) */\n gap?: 'none' | 'xs' | 'sm';\n /** Selection mode for this control. Currently only single-select is supported.\n * @default \"single\" */\n selectionMode?: 'single';\n}\n\nexport interface ToggleGroupItemProps extends Omit<React.HTMLAttributes<HTMLButtonElement>, 'onClick'> {\n /** Value for this item */\n value: string;\n /** Item content */\n children: React.ReactNode;\n /** Disabled state */\n disabled?: boolean;\n}\n\n// ============================================\n// Context\n// ============================================\n\ninterface ToggleGroupContextValue {\n value: string;\n onChange: (value: string) => void;\n variant: 'default' | 'pills' | 'outline';\n size: 'sm' | 'md' | 'lg';\n hasFocusableSelection: boolean;\n firstEnabledValue: string | null;\n}\n\nconst ToggleGroupContext = React.createContext<ToggleGroupContextValue | null>(\n null\n);\n\nfunction useToggleGroupContext() {\n const context = React.useContext(ToggleGroupContext);\n if (!context) {\n throw new Error('ToggleGroup.Item must be used within a ToggleGroup');\n }\n return context;\n}\n\n// ============================================\n// Components\n// ============================================\n\nfunction ToggleGroupRoot({\n value,\n defaultValue,\n onChange,\n onValueChange,\n children,\n variant = 'default',\n size = 'md',\n gap = 'xs',\n selectionMode = 'single',\n className,\n ...htmlProps\n}: ToggleGroupProps) {\n const normalizedVariant = variant === 'outlined' ? 'outline' : variant;\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? '');\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value ?? '' : internalValue;\n const emitChange = React.useCallback((nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n (onChange ?? onValueChange)?.(nextValue);\n }, [isControlled, onChange, onValueChange]);\n const classes = [\n styles.group,\n styles[normalizedVariant],\n styles[`size-${size}`],\n gap !== 'none' && styles[`gap-${gap}`],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const childItems = React.Children.toArray(children).filter(\n (child): child is React.ReactElement<ToggleGroupItemProps> =>\n React.isValidElement<ToggleGroupItemProps>(child)\n );\n const firstEnabledValue = childItems.find((item) => !item.props.disabled)?.props.value ?? null;\n const hasFocusableSelection = childItems.some(\n (item) => !item.props.disabled && item.props.value === currentValue\n );\n\n const contextValue: ToggleGroupContextValue = {\n value: currentValue,\n onChange: emitChange,\n variant: normalizedVariant,\n size,\n hasFocusableSelection,\n firstEnabledValue,\n };\n\n return (\n <ToggleGroupContext.Provider value={contextValue}>\n <div\n {...htmlProps}\n role={selectionMode === 'single' ? 'radiogroup' : 'radiogroup'}\n className={classes}\n >\n {children}\n </div>\n </ToggleGroupContext.Provider>\n );\n}\n\nfunction ToggleGroupItem({\n value,\n children,\n disabled = false,\n className,\n onKeyDown,\n ...htmlProps\n}: ToggleGroupItemProps) {\n const context = useToggleGroupContext();\n const isSelected = context.value === value;\n const isTabbableSelected = isSelected && !disabled;\n const isFirstFallback = !context.hasFocusableSelection && !disabled && context.firstEnabledValue === value;\n\n const classes = [\n styles.item,\n isSelected && styles.selected,\n disabled && styles.disabled,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleClick = () => {\n if (!disabled) {\n context.onChange(value);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n\n if (disabled) return;\n\n const key = event.key;\n const supportsRoving =\n key === 'ArrowRight' ||\n key === 'ArrowDown' ||\n key === 'ArrowLeft' ||\n key === 'ArrowUp' ||\n key === 'Home' ||\n key === 'End';\n\n if (!supportsRoving) return;\n\n event.preventDefault();\n\n const group = event.currentTarget.closest('[role=\"radiogroup\"]');\n if (!group) return;\n\n const radios = Array.from(\n group.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]:not(:disabled)')\n );\n\n if (radios.length === 0) return;\n\n const currentIndex = radios.indexOf(event.currentTarget);\n const fallbackIndex = currentIndex >= 0 ? currentIndex : 0;\n let nextIndex = fallbackIndex;\n\n if (key === 'ArrowRight' || key === 'ArrowDown') {\n nextIndex = (fallbackIndex + 1) % radios.length;\n } else if (key === 'ArrowLeft' || key === 'ArrowUp') {\n nextIndex = (fallbackIndex - 1 + radios.length) % radios.length;\n } else if (key === 'Home') {\n nextIndex = 0;\n } else if (key === 'End') {\n nextIndex = radios.length - 1;\n }\n\n const target = radios[nextIndex];\n const nextValue = target.dataset.value;\n if (nextValue != null) {\n context.onChange(nextValue);\n }\n target.focus();\n };\n\n return (\n <button\n {...htmlProps}\n type=\"button\"\n data-value={value}\n role=\"radio\"\n aria-checked={isSelected}\n tabIndex={isTabbableSelected || isFirstFallback ? 0 : -1}\n disabled={disabled}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={classes}\n >\n {children}\n </button>\n );\n}\n\n// ============================================\n// Export compound component\n// ============================================\n\nexport const ToggleGroup = Object.assign(ToggleGroupRoot, {\n Item: ToggleGroupItem,\n});\n\nexport { ToggleGroupRoot, ToggleGroupItem, useToggleGroupContext };\n"],"names":["_a"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const positioner = "_positioner_1513t_1";
4
- const popup = "_popup_1513t_6";
5
- const arrow = "_arrow_1513t_43";
3
+ const positioner = "_positioner_6b9nf_1";
4
+ const popup = "_popup_6b9nf_6";
5
+ const arrow = "_arrow_6b9nf_43";
6
6
  const styles = {
7
7
  positioner,
8
8
  popup,
@@ -1,6 +1,6 @@
1
- const positioner = "_positioner_1513t_1";
2
- const popup = "_popup_1513t_6";
3
- const arrow = "_arrow_1513t_43";
1
+ const positioner = "_positioner_6b9nf_1";
2
+ const popup = "_popup_6b9nf_6";
3
+ const arrow = "_arrow_6b9nf_43";
4
4
  const styles = {
5
5
  positioner,
6
6
  popup,
@@ -35,7 +35,9 @@ function TooltipRoot({
35
35
  open,
36
36
  defaultOpen,
37
37
  onOpenChange,
38
+ contentProps,
38
39
  className,
40
+ style,
39
41
  ...htmlProps
40
42
  }) {
41
43
  const hasExternalProvider = React__namespace.useContext(TooltipProviderContext);
@@ -59,6 +61,11 @@ function TooltipRoot({
59
61
  if (disabled) {
60
62
  return children;
61
63
  }
64
+ const {
65
+ className: contentClassName,
66
+ style: contentStyle,
67
+ ...contentHtmlProps
68
+ } = contentProps ?? {};
62
69
  const tooltipNode = /* @__PURE__ */ jsxRuntime.jsxs(
63
70
  tooltip.Tooltip.Root,
64
71
  {
@@ -74,10 +81,19 @@ function TooltipRoot({
74
81
  align,
75
82
  sideOffset,
76
83
  className: Tooltip_module.default.positioner,
77
- children: /* @__PURE__ */ jsxRuntime.jsxs(tooltip.Tooltip.Popup, { ...htmlProps, className: [Tooltip_module.default.popup, className].filter(Boolean).join(" "), children: [
78
- content,
79
- arrow && /* @__PURE__ */ jsxRuntime.jsx(tooltip.Tooltip.Arrow, { className: Tooltip_module.default.arrow })
80
- ] })
84
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
85
+ tooltip.Tooltip.Popup,
86
+ {
87
+ ...htmlProps,
88
+ ...contentHtmlProps,
89
+ className: [Tooltip_module.default.popup, className, contentClassName].filter(Boolean).join(" "),
90
+ style: { ...style ?? {}, ...contentStyle ?? {} },
91
+ children: [
92
+ content,
93
+ arrow && /* @__PURE__ */ jsxRuntime.jsx(tooltip.Tooltip.Arrow, { className: Tooltip_module.default.arrow })
94
+ ]
95
+ }
96
+ )
81
97
  }
82
98
  ) })
83
99
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/Tooltip/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport styles from './Tooltip.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\nexport type TooltipSide = 'top' | 'bottom' | 'left' | 'right';\nexport type TooltipAlign = 'start' | 'center' | 'end';\n\nexport interface TooltipProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'content' | 'defaultChecked'> {\n /** The element that triggers the tooltip */\n children: React.ReactElement;\n /** Content to display in the tooltip */\n content: React.ReactNode;\n /** Which side to show the tooltip */\n side?: TooltipSide;\n /** Alignment along the side */\n align?: TooltipAlign;\n /** Offset from the trigger (px) */\n sideOffset?: number;\n /** Delay before showing (ms) */\n delay?: number;\n /** Delay before hiding (ms) */\n closeDelay?: number;\n /** Whether the tooltip is disabled */\n disabled?: boolean;\n /** Show arrow pointing to trigger */\n arrow?: boolean;\n /** Controlled open state */\n open?: boolean;\n /** Default open state */\n defaultOpen?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n}\n\nexport interface TooltipProviderProps {\n children: React.ReactNode;\n /** Default delay for all tooltips (ms) */\n delay?: number;\n /** Default close delay for all tooltips (ms) */\n closeDelay?: number;\n /** Timeout for instant open when moving between tooltips (ms) */\n timeout?: number;\n /** Alias for `delay` (Radix convention) */\n delayDuration?: number;\n /** Alias for `timeout` (Radix convention) */\n skipDelayDuration?: number;\n}\n\n// ============================================\n// Components\n// ============================================\n\nconst TooltipProviderContext = React.createContext(false);\n\n/**\n * Tooltip - Shows contextual information on hover/focus\n *\n * @example\n * ```tsx\n * <Tooltip content=\"Save your changes\">\n * <Button>Save</Button>\n * </Tooltip>\n * ```\n */\nfunction TooltipRoot({\n children,\n content,\n side = 'top',\n align = 'center',\n sideOffset = 6,\n delay,\n closeDelay,\n disabled = false,\n arrow = true,\n open,\n defaultOpen,\n onOpenChange,\n className,\n ...htmlProps\n}: TooltipProps) {\n const hasExternalProvider = React.useContext(TooltipProviderContext);\n const renderTrigger = React.useCallback(\n (triggerProps: React.HTMLAttributes<HTMLElement> & { ref?: React.Ref<HTMLElement> }) => {\n const childProps = children.props as Record<string, unknown>;\n const mergedProps: Record<string, unknown> = { ...childProps, ...triggerProps };\n\n for (const [key, triggerHandler] of Object.entries(triggerProps)) {\n const childHandler = childProps[key];\n if (\n key.startsWith('on') &&\n typeof triggerHandler === 'function' &&\n typeof childHandler === 'function'\n ) {\n mergedProps[key] = (...args: unknown[]) => {\n (childHandler as (...event: unknown[]) => void)(...args);\n (triggerHandler as (...event: unknown[]) => void)(...args);\n };\n }\n }\n\n return React.cloneElement(children, mergedProps);\n },\n [children],\n );\n\n if (disabled) {\n return children;\n }\n\n const tooltipNode = (\n <BaseTooltip.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <BaseTooltip.Trigger render={renderTrigger} />\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n className={styles.positioner}\n >\n <BaseTooltip.Popup {...htmlProps} className={[styles.popup, className].filter(Boolean).join(' ')}>\n {content}\n {arrow && <BaseTooltip.Arrow className={styles.arrow} />}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n </BaseTooltip.Root>\n );\n\n // Only create a local provider when no shared provider exists, or when a local delay override is requested.\n if (!hasExternalProvider || delay !== undefined || closeDelay !== undefined) {\n return (\n <BaseTooltip.Provider delay={delay ?? 400} closeDelay={closeDelay ?? 0}>\n {tooltipNode}\n </BaseTooltip.Provider>\n );\n }\n\n return tooltipNode;\n}\n\n/**\n * TooltipProvider - Manages shared delay behavior for multiple tooltips\n *\n * @example\n * ```tsx\n * <TooltipProvider delay={200}>\n * <Tooltip content=\"First\">...</Tooltip>\n * <Tooltip content=\"Second\">...</Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport function TooltipProvider({\n children,\n delay,\n closeDelay = 0,\n timeout,\n delayDuration,\n skipDelayDuration,\n}: TooltipProviderProps) {\n // Resolve Radix-compatible aliases\n const resolvedDelay = delay ?? delayDuration ?? 400;\n const resolvedTimeout = timeout ?? skipDelayDuration ?? 400;\n\n return (\n <TooltipProviderContext.Provider value={true}>\n <BaseTooltip.Provider\n delay={resolvedDelay}\n closeDelay={closeDelay}\n timeout={resolvedTimeout}\n >\n {children}\n </BaseTooltip.Provider>\n </TooltipProviderContext.Provider>\n );\n}\n\nexport const Tooltip = Object.assign(TooltipRoot, {\n Root: TooltipRoot,\n Provider: TooltipProvider,\n});\n"],"names":["React","jsxs","BaseTooltip","jsx","styles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA0DA,MAAM,yBAAyBA,iBAAM,cAAc,KAAK;AAYxD,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAiB;AACf,QAAM,sBAAsBA,iBAAM,WAAW,sBAAsB;AACnE,QAAM,gBAAgBA,iBAAM;AAAA,IAC1B,CAAC,iBAAuF;AACtF,YAAM,aAAa,SAAS;AAC5B,YAAM,cAAuC,EAAE,GAAG,YAAY,GAAG,aAAA;AAEjE,iBAAW,CAAC,KAAK,cAAc,KAAK,OAAO,QAAQ,YAAY,GAAG;AAChE,cAAM,eAAe,WAAW,GAAG;AACnC,YACE,IAAI,WAAW,IAAI,KACnB,OAAO,mBAAmB,cAC1B,OAAO,iBAAiB,YACxB;AACA,sBAAY,GAAG,IAAI,IAAI,SAAoB;AACxC,yBAA+C,GAAG,IAAI;AACtD,2BAAiD,GAAG,IAAI;AAAA,UAC3D;AAAA,QACF;AAAA,MACF;AAEA,aAAOA,iBAAM,aAAa,UAAU,WAAW;AAAA,IACjD;AAAA,IACA,CAAC,QAAQ;AAAA,EAAA;AAGX,MAAI,UAAU;AACZ,WAAO;AAAA,EACT;AAEA,QAAM,cACJC,2BAAAA;AAAAA,IAACC,QAAAA,QAAY;AAAA,IAAZ;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MAEA,UAAA;AAAA,QAAAC,2BAAAA,IAACD,QAAAA,QAAY,SAAZ,EAAoB,QAAQ,cAAA,CAAe;AAAA,QAC5CC,2BAAAA,IAACD,QAAAA,QAAY,QAAZ,EACC,UAAAC,2BAAAA;AAAAA,UAACD,QAAAA,QAAY;AAAA,UAAZ;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAWE,eAAAA,QAAO;AAAA,YAElB,0CAACF,gBAAY,OAAZ,EAAmB,GAAG,WAAW,WAAW,CAACE,eAAAA,QAAO,OAAO,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAC5F,UAAA;AAAA,cAAA;AAAA,cACA,SAASD,2BAAAA,IAACD,gBAAY,OAAZ,EAAkB,WAAWE,eAAAA,QAAO,MAAA,CAAO;AAAA,YAAA,EAAA,CACxD;AAAA,UAAA;AAAA,QAAA,EACF,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAKJ,MAAI,CAAC,uBAAuB,UAAU,UAAa,eAAe,QAAW;AAC3E,WACED,2BAAAA,IAACD,QAAAA,QAAY,UAAZ,EAAqB,OAAO,SAAS,KAAK,YAAY,cAAc,GAClE,UAAA,YAAA,CACH;AAAA,EAEJ;AAEA,SAAO;AACT;AAaO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AAEvB,QAAM,gBAAgB,SAAS,iBAAiB;AAChD,QAAM,kBAAkB,WAAW,qBAAqB;AAExD,SACEC,2BAAAA,IAAC,uBAAuB,UAAvB,EAAgC,OAAO,MACtC,UAAAA,2BAAAA;AAAAA,IAACD,QAAAA,QAAY;AAAA,IAAZ;AAAA,MACC,OAAO;AAAA,MACP;AAAA,MACA,SAAS;AAAA,MAER;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;AAEO,MAAM,UAAU,OAAO,OAAO,aAAa;AAAA,EAChD,MAAM;AAAA,EACN,UAAU;AACZ,CAAC;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Tooltip/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport styles from './Tooltip.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\nexport type TooltipSide = 'top' | 'bottom' | 'left' | 'right';\nexport type TooltipAlign = 'start' | 'center' | 'end';\n\nexport interface TooltipProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'content' | 'defaultChecked'> {\n /** The element that triggers the tooltip */\n children: React.ReactElement;\n /** Content to display in the tooltip */\n content: React.ReactNode;\n /** Which side to show the tooltip */\n side?: TooltipSide;\n /** Alignment along the side */\n align?: TooltipAlign;\n /** Offset from the trigger (px) */\n sideOffset?: number;\n /** Delay before showing (ms) */\n delay?: number;\n /** Delay before hiding (ms) */\n closeDelay?: number;\n /** Whether the tooltip is disabled */\n disabled?: boolean;\n /** Show arrow pointing to trigger */\n arrow?: boolean;\n /** Controlled open state */\n open?: boolean;\n /** Default open state */\n defaultOpen?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Explicit props for the tooltip popup element (preferred over top-level HTMLAttributes for clarity) */\n contentProps?: React.HTMLAttributes<HTMLDivElement>;\n}\n\nexport interface TooltipProviderProps {\n children: React.ReactNode;\n /** Default delay for all tooltips (ms) */\n delay?: number;\n /** Default close delay for all tooltips (ms) */\n closeDelay?: number;\n /** Timeout for instant open when moving between tooltips (ms) */\n timeout?: number;\n /** Alias for `delay` (Radix convention) */\n delayDuration?: number;\n /** Alias for `timeout` (Radix convention) */\n skipDelayDuration?: number;\n}\n\n// ============================================\n// Components\n// ============================================\n\nconst TooltipProviderContext = React.createContext(false);\n\n/**\n * Tooltip - Shows contextual information on hover/focus\n *\n * @example\n * ```tsx\n * <Tooltip content=\"Save your changes\">\n * <Button>Save</Button>\n * </Tooltip>\n * ```\n */\nfunction TooltipRoot({\n children,\n content,\n side = 'top',\n align = 'center',\n sideOffset = 6,\n delay,\n closeDelay,\n disabled = false,\n arrow = true,\n open,\n defaultOpen,\n onOpenChange,\n contentProps,\n className,\n style,\n ...htmlProps\n}: TooltipProps) {\n const hasExternalProvider = React.useContext(TooltipProviderContext);\n const renderTrigger = React.useCallback(\n (triggerProps: React.HTMLAttributes<HTMLElement> & { ref?: React.Ref<HTMLElement> }) => {\n const childProps = children.props as Record<string, unknown>;\n const mergedProps: Record<string, unknown> = { ...childProps, ...triggerProps };\n\n for (const [key, triggerHandler] of Object.entries(triggerProps)) {\n const childHandler = childProps[key];\n if (\n key.startsWith('on') &&\n typeof triggerHandler === 'function' &&\n typeof childHandler === 'function'\n ) {\n mergedProps[key] = (...args: unknown[]) => {\n (childHandler as (...event: unknown[]) => void)(...args);\n (triggerHandler as (...event: unknown[]) => void)(...args);\n };\n }\n }\n\n return React.cloneElement(children, mergedProps);\n },\n [children],\n );\n\n if (disabled) {\n return children;\n }\n\n const {\n className: contentClassName,\n style: contentStyle,\n ...contentHtmlProps\n } = contentProps ?? {};\n\n const tooltipNode = (\n <BaseTooltip.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <BaseTooltip.Trigger render={renderTrigger} />\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n className={styles.positioner}\n >\n <BaseTooltip.Popup\n {...htmlProps}\n {...contentHtmlProps}\n className={[styles.popup, className, contentClassName].filter(Boolean).join(' ')}\n style={{ ...(style ?? {}), ...(contentStyle ?? {}) }}\n >\n {content}\n {arrow && <BaseTooltip.Arrow className={styles.arrow} />}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n </BaseTooltip.Root>\n );\n\n // Only create a local provider when no shared provider exists, or when a local delay override is requested.\n if (!hasExternalProvider || delay !== undefined || closeDelay !== undefined) {\n return (\n <BaseTooltip.Provider delay={delay ?? 400} closeDelay={closeDelay ?? 0}>\n {tooltipNode}\n </BaseTooltip.Provider>\n );\n }\n\n return tooltipNode;\n}\n\n/**\n * TooltipProvider - Manages shared delay behavior for multiple tooltips\n *\n * @example\n * ```tsx\n * <TooltipProvider delay={200}>\n * <Tooltip content=\"First\">...</Tooltip>\n * <Tooltip content=\"Second\">...</Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport function TooltipProvider({\n children,\n delay,\n closeDelay = 0,\n timeout,\n delayDuration,\n skipDelayDuration,\n}: TooltipProviderProps) {\n // Resolve Radix-compatible aliases\n const resolvedDelay = delay ?? delayDuration ?? 400;\n const resolvedTimeout = timeout ?? skipDelayDuration ?? 400;\n\n return (\n <TooltipProviderContext.Provider value={true}>\n <BaseTooltip.Provider\n delay={resolvedDelay}\n closeDelay={closeDelay}\n timeout={resolvedTimeout}\n >\n {children}\n </BaseTooltip.Provider>\n </TooltipProviderContext.Provider>\n );\n}\n\nexport const Tooltip = Object.assign(TooltipRoot, {\n Root: TooltipRoot,\n Provider: TooltipProvider,\n});\n"],"names":["React","jsxs","BaseTooltip","jsx","styles"],"mappings":"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"}
@@ -26,6 +26,8 @@ export interface TooltipProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
26
26
  defaultOpen?: boolean;
27
27
  /** Callback when open state changes */
28
28
  onOpenChange?: (open: boolean) => void;
29
+ /** Explicit props for the tooltip popup element (preferred over top-level HTMLAttributes for clarity) */
30
+ contentProps?: React.HTMLAttributes<HTMLDivElement>;
29
31
  }
30
32
  export interface TooltipProviderProps {
31
33
  children: React.ReactNode;
@@ -50,7 +52,7 @@ export interface TooltipProviderProps {
50
52
  * </Tooltip>
51
53
  * ```
52
54
  */
53
- declare function TooltipRoot({ children, content, side, align, sideOffset, delay, closeDelay, disabled, arrow, open, defaultOpen, onOpenChange, className, ...htmlProps }: TooltipProps): import("react/jsx-runtime").JSX.Element;
55
+ declare function TooltipRoot({ children, content, side, align, sideOffset, delay, closeDelay, disabled, arrow, open, defaultOpen, onOpenChange, contentProps, className, style, ...htmlProps }: TooltipProps): import("react/jsx-runtime").JSX.Element;
54
56
  /**
55
57
  * TooltipProvider - Manages shared delay behavior for multiple tooltips
56
58
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEtD,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,GAAG,gBAAgB,CAAC;IAC5G,4CAA4C;IAC5C,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAC7B,wCAAwC;IACxC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,qCAAqC;IACrC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yBAAyB;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uCAAuC;IACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAQD;;;;;;;;;GASG;AACH,iBAAS,WAAW,CAAC,EACnB,QAAQ,EACR,OAAO,EACP,IAAY,EACZ,KAAgB,EAChB,UAAc,EACd,KAAK,EACL,UAAU,EACV,QAAgB,EAChB,KAAY,EACZ,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,GAAG,SAAS,EACb,EAAE,YAAY,2CA+Dd;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,KAAK,EACL,UAAc,EACd,OAAO,EACP,aAAa,EACb,iBAAiB,GAClB,EAAE,oBAAoB,2CAgBtB;AAED,eAAO,MAAM,OAAO;;;CAGlB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEtD,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,GAAG,gBAAgB,CAAC;IAC5G,4CAA4C;IAC5C,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAC7B,wCAAwC;IACxC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,qCAAqC;IACrC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yBAAyB;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uCAAuC;IACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,yGAAyG;IACzG,YAAY,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAQD;;;;;;;;;GASG;AACH,iBAAS,WAAW,CAAC,EACnB,QAAQ,EACR,OAAO,EACP,IAAY,EACZ,KAAgB,EAChB,UAAc,EACd,KAAK,EACL,UAAU,EACV,QAAgB,EAChB,KAAY,EACZ,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,KAAK,EACL,GAAG,SAAS,EACb,EAAE,YAAY,2CA0Ed;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,KAAK,EACL,UAAc,EACd,OAAO,EACP,aAAa,EACb,iBAAiB,GAClB,EAAE,oBAAoB,2CAgBtB;AAED,eAAO,MAAM,OAAO;;;CAGlB,CAAC"}
@@ -16,7 +16,9 @@ function TooltipRoot({
16
16
  open,
17
17
  defaultOpen,
18
18
  onOpenChange,
19
+ contentProps,
19
20
  className,
21
+ style,
20
22
  ...htmlProps
21
23
  }) {
22
24
  const hasExternalProvider = React.useContext(TooltipProviderContext);
@@ -40,6 +42,11 @@ function TooltipRoot({
40
42
  if (disabled) {
41
43
  return children;
42
44
  }
45
+ const {
46
+ className: contentClassName,
47
+ style: contentStyle,
48
+ ...contentHtmlProps
49
+ } = contentProps ?? {};
43
50
  const tooltipNode = /* @__PURE__ */ jsxs(
44
51
  Tooltip$1.Root,
45
52
  {
@@ -55,10 +62,19 @@ function TooltipRoot({
55
62
  align,
56
63
  sideOffset,
57
64
  className: styles.positioner,
58
- children: /* @__PURE__ */ jsxs(Tooltip$1.Popup, { ...htmlProps, className: [styles.popup, className].filter(Boolean).join(" "), children: [
59
- content,
60
- arrow && /* @__PURE__ */ jsx(Tooltip$1.Arrow, { className: styles.arrow })
61
- ] })
65
+ children: /* @__PURE__ */ jsxs(
66
+ Tooltip$1.Popup,
67
+ {
68
+ ...htmlProps,
69
+ ...contentHtmlProps,
70
+ className: [styles.popup, className, contentClassName].filter(Boolean).join(" "),
71
+ style: { ...style ?? {}, ...contentStyle ?? {} },
72
+ children: [
73
+ content,
74
+ arrow && /* @__PURE__ */ jsx(Tooltip$1.Arrow, { className: styles.arrow })
75
+ ]
76
+ }
77
+ )
62
78
  }
63
79
  ) })
64
80
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Tooltip/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport styles from './Tooltip.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\nexport type TooltipSide = 'top' | 'bottom' | 'left' | 'right';\nexport type TooltipAlign = 'start' | 'center' | 'end';\n\nexport interface TooltipProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'content' | 'defaultChecked'> {\n /** The element that triggers the tooltip */\n children: React.ReactElement;\n /** Content to display in the tooltip */\n content: React.ReactNode;\n /** Which side to show the tooltip */\n side?: TooltipSide;\n /** Alignment along the side */\n align?: TooltipAlign;\n /** Offset from the trigger (px) */\n sideOffset?: number;\n /** Delay before showing (ms) */\n delay?: number;\n /** Delay before hiding (ms) */\n closeDelay?: number;\n /** Whether the tooltip is disabled */\n disabled?: boolean;\n /** Show arrow pointing to trigger */\n arrow?: boolean;\n /** Controlled open state */\n open?: boolean;\n /** Default open state */\n defaultOpen?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n}\n\nexport interface TooltipProviderProps {\n children: React.ReactNode;\n /** Default delay for all tooltips (ms) */\n delay?: number;\n /** Default close delay for all tooltips (ms) */\n closeDelay?: number;\n /** Timeout for instant open when moving between tooltips (ms) */\n timeout?: number;\n /** Alias for `delay` (Radix convention) */\n delayDuration?: number;\n /** Alias for `timeout` (Radix convention) */\n skipDelayDuration?: number;\n}\n\n// ============================================\n// Components\n// ============================================\n\nconst TooltipProviderContext = React.createContext(false);\n\n/**\n * Tooltip - Shows contextual information on hover/focus\n *\n * @example\n * ```tsx\n * <Tooltip content=\"Save your changes\">\n * <Button>Save</Button>\n * </Tooltip>\n * ```\n */\nfunction TooltipRoot({\n children,\n content,\n side = 'top',\n align = 'center',\n sideOffset = 6,\n delay,\n closeDelay,\n disabled = false,\n arrow = true,\n open,\n defaultOpen,\n onOpenChange,\n className,\n ...htmlProps\n}: TooltipProps) {\n const hasExternalProvider = React.useContext(TooltipProviderContext);\n const renderTrigger = React.useCallback(\n (triggerProps: React.HTMLAttributes<HTMLElement> & { ref?: React.Ref<HTMLElement> }) => {\n const childProps = children.props as Record<string, unknown>;\n const mergedProps: Record<string, unknown> = { ...childProps, ...triggerProps };\n\n for (const [key, triggerHandler] of Object.entries(triggerProps)) {\n const childHandler = childProps[key];\n if (\n key.startsWith('on') &&\n typeof triggerHandler === 'function' &&\n typeof childHandler === 'function'\n ) {\n mergedProps[key] = (...args: unknown[]) => {\n (childHandler as (...event: unknown[]) => void)(...args);\n (triggerHandler as (...event: unknown[]) => void)(...args);\n };\n }\n }\n\n return React.cloneElement(children, mergedProps);\n },\n [children],\n );\n\n if (disabled) {\n return children;\n }\n\n const tooltipNode = (\n <BaseTooltip.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <BaseTooltip.Trigger render={renderTrigger} />\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n className={styles.positioner}\n >\n <BaseTooltip.Popup {...htmlProps} className={[styles.popup, className].filter(Boolean).join(' ')}>\n {content}\n {arrow && <BaseTooltip.Arrow className={styles.arrow} />}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n </BaseTooltip.Root>\n );\n\n // Only create a local provider when no shared provider exists, or when a local delay override is requested.\n if (!hasExternalProvider || delay !== undefined || closeDelay !== undefined) {\n return (\n <BaseTooltip.Provider delay={delay ?? 400} closeDelay={closeDelay ?? 0}>\n {tooltipNode}\n </BaseTooltip.Provider>\n );\n }\n\n return tooltipNode;\n}\n\n/**\n * TooltipProvider - Manages shared delay behavior for multiple tooltips\n *\n * @example\n * ```tsx\n * <TooltipProvider delay={200}>\n * <Tooltip content=\"First\">...</Tooltip>\n * <Tooltip content=\"Second\">...</Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport function TooltipProvider({\n children,\n delay,\n closeDelay = 0,\n timeout,\n delayDuration,\n skipDelayDuration,\n}: TooltipProviderProps) {\n // Resolve Radix-compatible aliases\n const resolvedDelay = delay ?? delayDuration ?? 400;\n const resolvedTimeout = timeout ?? skipDelayDuration ?? 400;\n\n return (\n <TooltipProviderContext.Provider value={true}>\n <BaseTooltip.Provider\n delay={resolvedDelay}\n closeDelay={closeDelay}\n timeout={resolvedTimeout}\n >\n {children}\n </BaseTooltip.Provider>\n </TooltipProviderContext.Provider>\n );\n}\n\nexport const Tooltip = Object.assign(TooltipRoot, {\n Root: TooltipRoot,\n Provider: TooltipProvider,\n});\n"],"names":["BaseTooltip"],"mappings":";;;;AA0DA,MAAM,yBAAyB,MAAM,cAAc,KAAK;AAYxD,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAiB;AACf,QAAM,sBAAsB,MAAM,WAAW,sBAAsB;AACnE,QAAM,gBAAgB,MAAM;AAAA,IAC1B,CAAC,iBAAuF;AACtF,YAAM,aAAa,SAAS;AAC5B,YAAM,cAAuC,EAAE,GAAG,YAAY,GAAG,aAAA;AAEjE,iBAAW,CAAC,KAAK,cAAc,KAAK,OAAO,QAAQ,YAAY,GAAG;AAChE,cAAM,eAAe,WAAW,GAAG;AACnC,YACE,IAAI,WAAW,IAAI,KACnB,OAAO,mBAAmB,cAC1B,OAAO,iBAAiB,YACxB;AACA,sBAAY,GAAG,IAAI,IAAI,SAAoB;AACxC,yBAA+C,GAAG,IAAI;AACtD,2BAAiD,GAAG,IAAI;AAAA,UAC3D;AAAA,QACF;AAAA,MACF;AAEA,aAAO,MAAM,aAAa,UAAU,WAAW;AAAA,IACjD;AAAA,IACA,CAAC,QAAQ;AAAA,EAAA;AAGX,MAAI,UAAU;AACZ,WAAO;AAAA,EACT;AAEA,QAAM,cACJ;AAAA,IAACA,UAAY;AAAA,IAAZ;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MAEA,UAAA;AAAA,QAAA,oBAACA,UAAY,SAAZ,EAAoB,QAAQ,cAAA,CAAe;AAAA,QAC5C,oBAACA,UAAY,QAAZ,EACC,UAAA;AAAA,UAACA,UAAY;AAAA,UAAZ;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAW,OAAO;AAAA,YAElB,+BAACA,UAAY,OAAZ,EAAmB,GAAG,WAAW,WAAW,CAAC,OAAO,OAAO,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAC5F,UAAA;AAAA,cAAA;AAAA,cACA,SAAS,oBAACA,UAAY,OAAZ,EAAkB,WAAW,OAAO,MAAA,CAAO;AAAA,YAAA,EAAA,CACxD;AAAA,UAAA;AAAA,QAAA,EACF,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAKJ,MAAI,CAAC,uBAAuB,UAAU,UAAa,eAAe,QAAW;AAC3E,WACE,oBAACA,UAAY,UAAZ,EAAqB,OAAO,SAAS,KAAK,YAAY,cAAc,GAClE,UAAA,YAAA,CACH;AAAA,EAEJ;AAEA,SAAO;AACT;AAaO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AAEvB,QAAM,gBAAgB,SAAS,iBAAiB;AAChD,QAAM,kBAAkB,WAAW,qBAAqB;AAExD,SACE,oBAAC,uBAAuB,UAAvB,EAAgC,OAAO,MACtC,UAAA;AAAA,IAACA,UAAY;AAAA,IAAZ;AAAA,MACC,OAAO;AAAA,MACP;AAAA,MACA,SAAS;AAAA,MAER;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;AAEO,MAAM,UAAU,OAAO,OAAO,aAAa;AAAA,EAChD,MAAM;AAAA,EACN,UAAU;AACZ,CAAC;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Tooltip/index.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport styles from './Tooltip.module.scss';\n\n// ============================================\n// Types\n// ============================================\n\nexport type TooltipSide = 'top' | 'bottom' | 'left' | 'right';\nexport type TooltipAlign = 'start' | 'center' | 'end';\n\nexport interface TooltipProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'content' | 'defaultChecked'> {\n /** The element that triggers the tooltip */\n children: React.ReactElement;\n /** Content to display in the tooltip */\n content: React.ReactNode;\n /** Which side to show the tooltip */\n side?: TooltipSide;\n /** Alignment along the side */\n align?: TooltipAlign;\n /** Offset from the trigger (px) */\n sideOffset?: number;\n /** Delay before showing (ms) */\n delay?: number;\n /** Delay before hiding (ms) */\n closeDelay?: number;\n /** Whether the tooltip is disabled */\n disabled?: boolean;\n /** Show arrow pointing to trigger */\n arrow?: boolean;\n /** Controlled open state */\n open?: boolean;\n /** Default open state */\n defaultOpen?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Explicit props for the tooltip popup element (preferred over top-level HTMLAttributes for clarity) */\n contentProps?: React.HTMLAttributes<HTMLDivElement>;\n}\n\nexport interface TooltipProviderProps {\n children: React.ReactNode;\n /** Default delay for all tooltips (ms) */\n delay?: number;\n /** Default close delay for all tooltips (ms) */\n closeDelay?: number;\n /** Timeout for instant open when moving between tooltips (ms) */\n timeout?: number;\n /** Alias for `delay` (Radix convention) */\n delayDuration?: number;\n /** Alias for `timeout` (Radix convention) */\n skipDelayDuration?: number;\n}\n\n// ============================================\n// Components\n// ============================================\n\nconst TooltipProviderContext = React.createContext(false);\n\n/**\n * Tooltip - Shows contextual information on hover/focus\n *\n * @example\n * ```tsx\n * <Tooltip content=\"Save your changes\">\n * <Button>Save</Button>\n * </Tooltip>\n * ```\n */\nfunction TooltipRoot({\n children,\n content,\n side = 'top',\n align = 'center',\n sideOffset = 6,\n delay,\n closeDelay,\n disabled = false,\n arrow = true,\n open,\n defaultOpen,\n onOpenChange,\n contentProps,\n className,\n style,\n ...htmlProps\n}: TooltipProps) {\n const hasExternalProvider = React.useContext(TooltipProviderContext);\n const renderTrigger = React.useCallback(\n (triggerProps: React.HTMLAttributes<HTMLElement> & { ref?: React.Ref<HTMLElement> }) => {\n const childProps = children.props as Record<string, unknown>;\n const mergedProps: Record<string, unknown> = { ...childProps, ...triggerProps };\n\n for (const [key, triggerHandler] of Object.entries(triggerProps)) {\n const childHandler = childProps[key];\n if (\n key.startsWith('on') &&\n typeof triggerHandler === 'function' &&\n typeof childHandler === 'function'\n ) {\n mergedProps[key] = (...args: unknown[]) => {\n (childHandler as (...event: unknown[]) => void)(...args);\n (triggerHandler as (...event: unknown[]) => void)(...args);\n };\n }\n }\n\n return React.cloneElement(children, mergedProps);\n },\n [children],\n );\n\n if (disabled) {\n return children;\n }\n\n const {\n className: contentClassName,\n style: contentStyle,\n ...contentHtmlProps\n } = contentProps ?? {};\n\n const tooltipNode = (\n <BaseTooltip.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <BaseTooltip.Trigger render={renderTrigger} />\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n className={styles.positioner}\n >\n <BaseTooltip.Popup\n {...htmlProps}\n {...contentHtmlProps}\n className={[styles.popup, className, contentClassName].filter(Boolean).join(' ')}\n style={{ ...(style ?? {}), ...(contentStyle ?? {}) }}\n >\n {content}\n {arrow && <BaseTooltip.Arrow className={styles.arrow} />}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n </BaseTooltip.Root>\n );\n\n // Only create a local provider when no shared provider exists, or when a local delay override is requested.\n if (!hasExternalProvider || delay !== undefined || closeDelay !== undefined) {\n return (\n <BaseTooltip.Provider delay={delay ?? 400} closeDelay={closeDelay ?? 0}>\n {tooltipNode}\n </BaseTooltip.Provider>\n );\n }\n\n return tooltipNode;\n}\n\n/**\n * TooltipProvider - Manages shared delay behavior for multiple tooltips\n *\n * @example\n * ```tsx\n * <TooltipProvider delay={200}>\n * <Tooltip content=\"First\">...</Tooltip>\n * <Tooltip content=\"Second\">...</Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport function TooltipProvider({\n children,\n delay,\n closeDelay = 0,\n timeout,\n delayDuration,\n skipDelayDuration,\n}: TooltipProviderProps) {\n // Resolve Radix-compatible aliases\n const resolvedDelay = delay ?? delayDuration ?? 400;\n const resolvedTimeout = timeout ?? skipDelayDuration ?? 400;\n\n return (\n <TooltipProviderContext.Provider value={true}>\n <BaseTooltip.Provider\n delay={resolvedDelay}\n closeDelay={closeDelay}\n timeout={resolvedTimeout}\n >\n {children}\n </BaseTooltip.Provider>\n </TooltipProviderContext.Provider>\n );\n}\n\nexport const Tooltip = Object.assign(TooltipRoot, {\n Root: TooltipRoot,\n Provider: TooltipProvider,\n});\n"],"names":["BaseTooltip"],"mappings":"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"}