@intlayer/design-system 6.1.5 → 6.1.6

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 (336) hide show
  1. package/dist/.vite/manifest.json +13 -9
  2. package/dist/Form-CriPBaZk.js.map +1 -1
  3. package/dist/Form-DJrUK3mm.cjs.map +1 -1
  4. package/dist/components/Accordion/Accordion.cjs +51 -15
  5. package/dist/components/Accordion/Accordion.cjs.map +1 -1
  6. package/dist/components/Accordion/Accordion.d.ts +44 -5
  7. package/dist/components/Accordion/Accordion.d.ts.map +1 -1
  8. package/dist/components/Accordion/Accordion.mjs +52 -16
  9. package/dist/components/Accordion/Accordion.mjs.map +1 -1
  10. package/dist/components/Avatar/index.cjs +114 -31
  11. package/dist/components/Avatar/index.cjs.map +1 -1
  12. package/dist/components/Avatar/index.d.ts +46 -2
  13. package/dist/components/Avatar/index.d.ts.map +1 -1
  14. package/dist/components/Avatar/index.mjs +115 -32
  15. package/dist/components/Avatar/index.mjs.map +1 -1
  16. package/dist/components/Badge/index.cjs +88 -9
  17. package/dist/components/Badge/index.cjs.map +1 -1
  18. package/dist/components/Badge/index.d.ts +80 -2
  19. package/dist/components/Badge/index.d.ts.map +1 -1
  20. package/dist/components/Badge/index.mjs +89 -10
  21. package/dist/components/Badge/index.mjs.map +1 -1
  22. package/dist/components/Breadcrumb/index.cjs +124 -59
  23. package/dist/components/Breadcrumb/index.cjs.map +1 -1
  24. package/dist/components/Breadcrumb/index.d.ts +89 -5
  25. package/dist/components/Breadcrumb/index.d.ts.map +1 -1
  26. package/dist/components/Breadcrumb/index.mjs +124 -59
  27. package/dist/components/Breadcrumb/index.mjs.map +1 -1
  28. package/dist/components/Button/Button.cjs +44 -25
  29. package/dist/components/Button/Button.cjs.map +1 -1
  30. package/dist/components/Button/Button.d.ts +95 -1
  31. package/dist/components/Button/Button.d.ts.map +1 -1
  32. package/dist/components/Button/Button.mjs +44 -25
  33. package/dist/components/Button/Button.mjs.map +1 -1
  34. package/dist/components/ClickOutsideDiv/index.cjs +38 -7
  35. package/dist/components/ClickOutsideDiv/index.cjs.map +1 -1
  36. package/dist/components/ClickOutsideDiv/index.d.ts +13 -0
  37. package/dist/components/ClickOutsideDiv/index.d.ts.map +1 -1
  38. package/dist/components/ClickOutsideDiv/index.mjs +39 -8
  39. package/dist/components/ClickOutsideDiv/index.mjs.map +1 -1
  40. package/dist/components/Container/index.cjs +2 -0
  41. package/dist/components/Container/index.cjs.map +1 -1
  42. package/dist/components/Container/index.d.ts +42 -0
  43. package/dist/components/Container/index.d.ts.map +1 -1
  44. package/dist/components/Container/index.mjs +2 -0
  45. package/dist/components/Container/index.mjs.map +1 -1
  46. package/dist/components/ContentEditor/ContentEditor.cjs +80 -33
  47. package/dist/components/ContentEditor/ContentEditor.cjs.map +1 -1
  48. package/dist/components/ContentEditor/ContentEditor.d.ts +29 -0
  49. package/dist/components/ContentEditor/ContentEditor.d.ts.map +1 -1
  50. package/dist/components/ContentEditor/ContentEditor.mjs +80 -33
  51. package/dist/components/ContentEditor/ContentEditor.mjs.map +1 -1
  52. package/dist/components/ContentEditor/ContentEditorInput.cjs +58 -31
  53. package/dist/components/ContentEditor/ContentEditorInput.cjs.map +1 -1
  54. package/dist/components/ContentEditor/ContentEditorInput.d.ts +33 -0
  55. package/dist/components/ContentEditor/ContentEditorInput.d.ts.map +1 -1
  56. package/dist/components/ContentEditor/ContentEditorInput.mjs +58 -31
  57. package/dist/components/ContentEditor/ContentEditorInput.mjs.map +1 -1
  58. package/dist/components/ContentEditor/ContentEditorTextArea.cjs +58 -30
  59. package/dist/components/ContentEditor/ContentEditorTextArea.cjs.map +1 -1
  60. package/dist/components/ContentEditor/ContentEditorTextArea.d.ts +35 -0
  61. package/dist/components/ContentEditor/ContentEditorTextArea.d.ts.map +1 -1
  62. package/dist/components/ContentEditor/ContentEditorTextArea.mjs +59 -31
  63. package/dist/components/ContentEditor/ContentEditorTextArea.mjs.map +1 -1
  64. package/dist/components/ContentEditor/index.cjs +4 -0
  65. package/dist/components/ContentEditor/index.cjs.map +1 -1
  66. package/dist/components/ContentEditor/index.d.ts +2 -0
  67. package/dist/components/ContentEditor/index.d.ts.map +1 -1
  68. package/dist/components/ContentEditor/index.mjs +5 -1
  69. package/dist/components/ContentEditor/index.mjs.map +1 -1
  70. package/dist/components/ContentSelector/ContentSelector.cjs +9 -1
  71. package/dist/components/ContentSelector/ContentSelector.cjs.map +1 -1
  72. package/dist/components/ContentSelector/ContentSelector.d.ts +167 -0
  73. package/dist/components/ContentSelector/ContentSelector.d.ts.map +1 -1
  74. package/dist/components/ContentSelector/ContentSelector.mjs +9 -1
  75. package/dist/components/ContentSelector/ContentSelector.mjs.map +1 -1
  76. package/dist/components/CopyButton/index.cjs +23 -8
  77. package/dist/components/CopyButton/index.cjs.map +1 -1
  78. package/dist/components/CopyButton/index.d.ts +78 -0
  79. package/dist/components/CopyButton/index.d.ts.map +1 -1
  80. package/dist/components/CopyButton/index.mjs +23 -8
  81. package/dist/components/CopyButton/index.mjs.map +1 -1
  82. package/dist/components/CopyToClipboard/index.cjs +58 -22
  83. package/dist/components/CopyToClipboard/index.cjs.map +1 -1
  84. package/dist/components/CopyToClipboard/index.d.ts +68 -2
  85. package/dist/components/CopyToClipboard/index.d.ts.map +1 -1
  86. package/dist/components/CopyToClipboard/index.mjs +59 -23
  87. package/dist/components/CopyToClipboard/index.mjs.map +1 -1
  88. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.cjs +4 -2
  89. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.cjs.map +1 -1
  90. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts +1 -0
  91. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts.map +1 -1
  92. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +4 -2
  93. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
  94. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.cjs +2 -2
  95. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.cjs.map +1 -1
  96. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +2 -2
  97. package/dist/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
  98. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.cjs +3 -0
  99. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.cjs.map +1 -1
  100. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts +1 -0
  101. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts.map +1 -1
  102. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +3 -0
  103. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
  104. package/dist/components/DropDown/index.cjs +6 -4
  105. package/dist/components/DropDown/index.cjs.map +1 -1
  106. package/dist/components/DropDown/index.d.ts +92 -15
  107. package/dist/components/DropDown/index.d.ts.map +1 -1
  108. package/dist/components/DropDown/index.mjs +6 -4
  109. package/dist/components/DropDown/index.mjs.map +1 -1
  110. package/dist/components/EditableField/EditableFieldInput.cjs.map +1 -1
  111. package/dist/components/EditableField/EditableFieldInput.d.ts +38 -0
  112. package/dist/components/EditableField/EditableFieldInput.d.ts.map +1 -1
  113. package/dist/components/EditableField/EditableFieldInput.mjs.map +1 -1
  114. package/dist/components/EditableField/EditableFieldLayout.cjs +10 -2
  115. package/dist/components/EditableField/EditableFieldLayout.cjs.map +1 -1
  116. package/dist/components/EditableField/EditableFieldLayout.d.ts.map +1 -1
  117. package/dist/components/EditableField/EditableFieldLayout.mjs +10 -2
  118. package/dist/components/EditableField/EditableFieldLayout.mjs.map +1 -1
  119. package/dist/components/EditableField/EditableFieldTextArea.cjs.map +1 -1
  120. package/dist/components/EditableField/EditableFieldTextArea.d.ts +42 -0
  121. package/dist/components/EditableField/EditableFieldTextArea.d.ts.map +1 -1
  122. package/dist/components/EditableField/EditableFieldTextArea.mjs.map +1 -1
  123. package/dist/components/ExpandCollapse/ExpandCollapse.cjs.map +1 -1
  124. package/dist/components/ExpandCollapse/ExpandCollapse.d.ts +58 -0
  125. package/dist/components/ExpandCollapse/ExpandCollapse.d.ts.map +1 -1
  126. package/dist/components/ExpandCollapse/ExpandCollapse.mjs.map +1 -1
  127. package/dist/components/Footer/index.cjs.map +1 -1
  128. package/dist/components/Footer/index.d.ts +101 -0
  129. package/dist/components/Footer/index.d.ts.map +1 -1
  130. package/dist/components/Footer/index.mjs.map +1 -1
  131. package/dist/components/Form/elements/MultiselectElement.d.ts.map +1 -1
  132. package/dist/components/Form/elements/SelectElement.d.ts.map +1 -1
  133. package/dist/components/Form/elements/SwitchSelectorElement.d.ts.map +1 -1
  134. package/dist/components/Headers/index.cjs.map +1 -1
  135. package/dist/components/Headers/index.d.ts +69 -2
  136. package/dist/components/Headers/index.d.ts.map +1 -1
  137. package/dist/components/Headers/index.mjs.map +1 -1
  138. package/dist/components/HeightResizer/index.cjs +10 -7
  139. package/dist/components/HeightResizer/index.cjs.map +1 -1
  140. package/dist/components/HeightResizer/index.d.ts +89 -0
  141. package/dist/components/HeightResizer/index.d.ts.map +1 -1
  142. package/dist/components/HeightResizer/index.mjs +10 -7
  143. package/dist/components/HeightResizer/index.mjs.map +1 -1
  144. package/dist/components/InformationTag/index.cjs.map +1 -1
  145. package/dist/components/InformationTag/index.d.ts +72 -0
  146. package/dist/components/InformationTag/index.d.ts.map +1 -1
  147. package/dist/components/InformationTag/index.mjs.map +1 -1
  148. package/dist/components/KeyboardScreenAdapter/index.cjs.map +1 -1
  149. package/dist/components/KeyboardScreenAdapter/index.d.ts +100 -0
  150. package/dist/components/KeyboardScreenAdapter/index.d.ts.map +1 -1
  151. package/dist/components/KeyboardScreenAdapter/index.mjs.map +1 -1
  152. package/dist/components/Label/index.cjs +25 -3
  153. package/dist/components/Label/index.cjs.map +1 -1
  154. package/dist/components/Label/index.d.ts +65 -1
  155. package/dist/components/Label/index.d.ts.map +1 -1
  156. package/dist/components/Label/index.mjs +26 -4
  157. package/dist/components/Label/index.mjs.map +1 -1
  158. package/dist/components/Link/Link.cjs +0 -4
  159. package/dist/components/Link/Link.cjs.map +1 -1
  160. package/dist/components/Link/Link.d.ts +169 -0
  161. package/dist/components/Link/Link.d.ts.map +1 -1
  162. package/dist/components/Link/Link.mjs +0 -4
  163. package/dist/components/Link/Link.mjs.map +1 -1
  164. package/dist/components/Loader/index.cjs.map +1 -1
  165. package/dist/components/Loader/index.d.ts +82 -11
  166. package/dist/components/Loader/index.d.ts.map +1 -1
  167. package/dist/components/Loader/index.mjs.map +1 -1
  168. package/dist/components/Loader/spinner.cjs.map +1 -1
  169. package/dist/components/Loader/spinner.d.ts +56 -0
  170. package/dist/components/Loader/spinner.d.ts.map +1 -1
  171. package/dist/components/Loader/spinner.mjs.map +1 -1
  172. package/dist/components/MarkDownRender/MarkDownRender.cjs +0 -1
  173. package/dist/components/MarkDownRender/MarkDownRender.cjs.map +1 -1
  174. package/dist/components/MarkDownRender/MarkDownRender.d.ts +147 -0
  175. package/dist/components/MarkDownRender/MarkDownRender.d.ts.map +1 -1
  176. package/dist/components/MarkDownRender/MarkDownRender.mjs +0 -1
  177. package/dist/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
  178. package/dist/components/MarkDownRender/processor.cjs +12 -9
  179. package/dist/components/MarkDownRender/processor.cjs.map +1 -1
  180. package/dist/components/MarkDownRender/processor.d.ts.map +1 -1
  181. package/dist/components/MarkDownRender/processor.mjs +12 -9
  182. package/dist/components/MarkDownRender/processor.mjs.map +1 -1
  183. package/dist/components/MaxHeightSmoother/index.cjs.map +1 -1
  184. package/dist/components/MaxHeightSmoother/index.d.ts +152 -0
  185. package/dist/components/MaxHeightSmoother/index.d.ts.map +1 -1
  186. package/dist/components/MaxHeightSmoother/index.mjs.map +1 -1
  187. package/dist/components/Modal/Modal.cjs +5 -0
  188. package/dist/components/Modal/Modal.cjs.map +1 -1
  189. package/dist/components/Modal/Modal.d.ts +81 -3
  190. package/dist/components/Modal/Modal.d.ts.map +1 -1
  191. package/dist/components/Modal/Modal.mjs +5 -0
  192. package/dist/components/Modal/Modal.mjs.map +1 -1
  193. package/dist/components/Navbar/Burger.cjs.map +1 -1
  194. package/dist/components/Navbar/Burger.d.ts +54 -0
  195. package/dist/components/Navbar/Burger.d.ts.map +1 -1
  196. package/dist/components/Navbar/Burger.mjs.map +1 -1
  197. package/dist/components/Navbar/DesktopNavbar.cjs.map +1 -1
  198. package/dist/components/Navbar/DesktopNavbar.d.ts +78 -0
  199. package/dist/components/Navbar/DesktopNavbar.d.ts.map +1 -1
  200. package/dist/components/Navbar/DesktopNavbar.mjs.map +1 -1
  201. package/dist/components/Navbar/MobileNavbar.cjs.map +1 -1
  202. package/dist/components/Navbar/MobileNavbar.d.ts +88 -0
  203. package/dist/components/Navbar/MobileNavbar.d.ts.map +1 -1
  204. package/dist/components/Navbar/MobileNavbar.mjs.map +1 -1
  205. package/dist/components/Navbar/index.cjs.map +1 -1
  206. package/dist/components/Navbar/index.d.ts +69 -0
  207. package/dist/components/Navbar/index.d.ts.map +1 -1
  208. package/dist/components/Navbar/index.mjs.map +1 -1
  209. package/dist/components/Navbar/useNavigation.cjs +8 -1
  210. package/dist/components/Navbar/useNavigation.cjs.map +1 -1
  211. package/dist/components/Navbar/useNavigation.d.ts +83 -0
  212. package/dist/components/Navbar/useNavigation.d.ts.map +1 -1
  213. package/dist/components/Navbar/useNavigation.mjs +8 -1
  214. package/dist/components/Navbar/useNavigation.mjs.map +1 -1
  215. package/dist/components/Pattern/DotPattern.cjs.map +1 -1
  216. package/dist/components/Pattern/DotPattern.d.ts +101 -0
  217. package/dist/components/Pattern/DotPattern.d.ts.map +1 -1
  218. package/dist/components/Pattern/DotPattern.mjs.map +1 -1
  219. package/dist/components/Pattern/GridPattern.cjs.map +1 -1
  220. package/dist/components/Pattern/GridPattern.d.ts +114 -0
  221. package/dist/components/Pattern/GridPattern.d.ts.map +1 -1
  222. package/dist/components/Pattern/GridPattern.mjs.map +1 -1
  223. package/dist/components/Pattern/SpotLight.cjs.map +1 -1
  224. package/dist/components/Pattern/SpotLight.d.ts +125 -0
  225. package/dist/components/Pattern/SpotLight.d.ts.map +1 -1
  226. package/dist/components/Pattern/SpotLight.mjs.map +1 -1
  227. package/dist/components/Popover/index.cjs +10 -10
  228. package/dist/components/Popover/index.cjs.map +1 -1
  229. package/dist/components/Popover/index.d.ts +110 -15
  230. package/dist/components/Popover/index.d.ts.map +1 -1
  231. package/dist/components/Popover/index.mjs +10 -10
  232. package/dist/components/Popover/index.mjs.map +1 -1
  233. package/dist/components/PressableSpan/PressableSpan.cjs +22 -5
  234. package/dist/components/PressableSpan/PressableSpan.cjs.map +1 -1
  235. package/dist/components/PressableSpan/PressableSpan.d.ts +105 -3
  236. package/dist/components/PressableSpan/PressableSpan.d.ts.map +1 -1
  237. package/dist/components/PressableSpan/PressableSpan.mjs +22 -5
  238. package/dist/components/PressableSpan/PressableSpan.mjs.map +1 -1
  239. package/dist/components/RightDrawer/RightDrawer.cjs.map +1 -1
  240. package/dist/components/RightDrawer/RightDrawer.d.ts +182 -0
  241. package/dist/components/RightDrawer/RightDrawer.d.ts.map +1 -1
  242. package/dist/components/RightDrawer/RightDrawer.mjs.map +1 -1
  243. package/dist/components/RightDrawer/isElementAtTopAndNotCovered.cjs.map +1 -1
  244. package/dist/components/RightDrawer/isElementAtTopAndNotCovered.d.ts +44 -0
  245. package/dist/components/RightDrawer/isElementAtTopAndNotCovered.d.ts.map +1 -1
  246. package/dist/components/RightDrawer/isElementAtTopAndNotCovered.mjs.map +1 -1
  247. package/dist/components/RightDrawer/useRightDrawerStore.cjs.map +1 -1
  248. package/dist/components/RightDrawer/useRightDrawerStore.d.ts +102 -0
  249. package/dist/components/RightDrawer/useRightDrawerStore.d.ts.map +1 -1
  250. package/dist/components/RightDrawer/useRightDrawerStore.mjs.map +1 -1
  251. package/dist/components/Select/Multiselect.cjs.map +1 -1
  252. package/dist/components/Select/Multiselect.d.ts +125 -18
  253. package/dist/components/Select/Multiselect.d.ts.map +1 -1
  254. package/dist/components/Select/Multiselect.mjs.map +1 -1
  255. package/dist/components/Select/Select.cjs.map +1 -1
  256. package/dist/components/Select/Select.d.ts +214 -7
  257. package/dist/components/Select/Select.d.ts.map +1 -1
  258. package/dist/components/Select/Select.mjs.map +1 -1
  259. package/dist/components/SwitchSelector/index.cjs.map +1 -1
  260. package/dist/components/SwitchSelector/index.d.ts +157 -8
  261. package/dist/components/SwitchSelector/index.d.ts.map +1 -1
  262. package/dist/components/SwitchSelector/index.mjs.map +1 -1
  263. package/dist/components/Table/Table.cjs.map +1 -1
  264. package/dist/components/Table/Table.d.ts +184 -0
  265. package/dist/components/Table/Table.d.ts.map +1 -1
  266. package/dist/components/Table/Table.mjs.map +1 -1
  267. package/dist/components/Tag/index.cjs.map +1 -1
  268. package/dist/components/Tag/index.d.ts +223 -0
  269. package/dist/components/Tag/index.d.ts.map +1 -1
  270. package/dist/components/Tag/index.mjs.map +1 -1
  271. package/dist/components/TextArea/AutoSizeTextArea.cjs.map +1 -1
  272. package/dist/components/TextArea/AutoSizeTextArea.d.ts +91 -0
  273. package/dist/components/TextArea/AutoSizeTextArea.d.ts.map +1 -1
  274. package/dist/components/TextArea/AutoSizeTextArea.mjs.map +1 -1
  275. package/dist/components/TextArea/AutocompleteTextArea.cjs.map +1 -1
  276. package/dist/components/TextArea/AutocompleteTextArea.d.ts +145 -0
  277. package/dist/components/TextArea/AutocompleteTextArea.d.ts.map +1 -1
  278. package/dist/components/TextArea/AutocompleteTextArea.mjs.map +1 -1
  279. package/dist/components/TextArea/TextArea.cjs.map +1 -1
  280. package/dist/components/TextArea/TextArea.d.ts +74 -0
  281. package/dist/components/TextArea/TextArea.d.ts.map +1 -1
  282. package/dist/components/TextArea/TextArea.mjs.map +1 -1
  283. package/dist/components/Toaster/Toast.cjs +4 -0
  284. package/dist/components/Toaster/Toast.cjs.map +1 -1
  285. package/dist/components/Toaster/Toast.d.ts +148 -2
  286. package/dist/components/Toaster/Toast.d.ts.map +1 -1
  287. package/dist/components/Toaster/Toast.mjs +4 -0
  288. package/dist/components/Toaster/Toast.mjs.map +1 -1
  289. package/dist/components/Toaster/Toaster.cjs.map +1 -1
  290. package/dist/components/Toaster/Toaster.d.ts +42 -0
  291. package/dist/components/Toaster/Toaster.d.ts.map +1 -1
  292. package/dist/components/Toaster/Toaster.mjs.map +1 -1
  293. package/dist/components/Toaster/useToast.cjs.map +1 -1
  294. package/dist/components/Toaster/useToast.d.ts +199 -2
  295. package/dist/components/Toaster/useToast.d.ts.map +1 -1
  296. package/dist/components/Toaster/useToast.mjs.map +1 -1
  297. package/dist/components/WithResizer/index.cjs.map +1 -1
  298. package/dist/components/WithResizer/index.d.ts +143 -0
  299. package/dist/components/WithResizer/index.d.ts.map +1 -1
  300. package/dist/components/WithResizer/index.mjs.map +1 -1
  301. package/dist/components/index.cjs +2 -2
  302. package/dist/components/index.d.ts +0 -1
  303. package/dist/components/index.d.ts.map +1 -1
  304. package/dist/components/index.mjs +4 -4
  305. package/dist/components/index.mjs.map +1 -1
  306. package/dist/hooks/auth.cjs +2 -2
  307. package/dist/hooks/auth.cjs.map +1 -1
  308. package/dist/hooks/auth.mjs +2 -2
  309. package/dist/hooks/auth.mjs.map +1 -1
  310. package/dist/hooks/reactQuery.cjs +2 -1
  311. package/dist/hooks/reactQuery.cjs.map +1 -1
  312. package/dist/hooks/reactQuery.d.ts +1 -1
  313. package/dist/hooks/reactQuery.d.ts.map +1 -1
  314. package/dist/hooks/reactQuery.mjs +2 -1
  315. package/dist/hooks/reactQuery.mjs.map +1 -1
  316. package/dist/hooks/useAuth/useOAuth2.cjs +3 -3
  317. package/dist/hooks/useAuth/useOAuth2.cjs.map +1 -1
  318. package/dist/hooks/useAuth/useOAuth2.mjs +3 -3
  319. package/dist/hooks/useAuth/useOAuth2.mjs.map +1 -1
  320. package/dist/hooks/useAuth/useSession.cjs +3 -3
  321. package/dist/hooks/useAuth/useSession.cjs.map +1 -1
  322. package/dist/hooks/useAuth/useSession.mjs +3 -3
  323. package/dist/hooks/useAuth/useSession.mjs.map +1 -1
  324. package/dist/utils/image.cjs +30 -0
  325. package/dist/utils/image.cjs.map +1 -0
  326. package/dist/utils/image.d.ts +37 -0
  327. package/dist/utils/image.d.ts.map +1 -0
  328. package/dist/utils/image.mjs +30 -0
  329. package/dist/utils/image.mjs.map +1 -0
  330. package/package.json +20 -18
  331. package/dist/utils/capitalize.cjs +0 -10
  332. package/dist/utils/capitalize.cjs.map +0 -1
  333. package/dist/utils/capitalize.d.ts +0 -2
  334. package/dist/utils/capitalize.d.ts.map +0 -1
  335. package/dist/utils/capitalize.mjs +0 -10
  336. package/dist/utils/capitalize.mjs.map +0 -1
@@ -1,6 +1,9 @@
1
1
  import { VariantProps } from 'class-variance-authority';
2
2
  import { LucideIcon } from 'lucide-react';
3
3
  import { ButtonHTMLAttributes, DetailedHTMLProps, FC } from 'react';
4
+ /**
5
+ * Button size variants for different use cases
6
+ */
4
7
  export declare enum ButtonSize {
5
8
  SM = "sm",
6
9
  MD = "md",
@@ -11,10 +14,16 @@ export declare enum ButtonSize {
11
14
  ICON_LG = "icon-lg",
12
15
  ICON_XL = "icon-xl"
13
16
  }
17
+ /**
18
+ * Icon positioning within the button
19
+ */
14
20
  export declare enum ButtonIconPosition {
15
21
  LEFT = "left",
16
22
  RIGHT = "right"
17
23
  }
24
+ /**
25
+ * Button visual style variants
26
+ */
18
27
  export declare enum ButtonVariant {
19
28
  DEFAULT = "default",
20
29
  NONE = "none",
@@ -24,6 +33,9 @@ export declare enum ButtonVariant {
24
33
  HOVERABLE = "hoverable",
25
34
  INPUT = "input"
26
35
  }
36
+ /**
37
+ * Button color themes that work with the design system
38
+ */
27
39
  export declare enum ButtonColor {
28
40
  PRIMARY = "primary",
29
41
  SECONDARY = "secondary",
@@ -37,11 +49,17 @@ export declare enum ButtonColor {
37
49
  SUCCESS = "success",
38
50
  CUSTOM = "custom"
39
51
  }
52
+ /**
53
+ * Text alignment options for button content
54
+ */
40
55
  export declare enum ButtonTextAlign {
41
56
  LEFT = "left",
42
57
  CENTER = "center",
43
58
  RIGHT = "right"
44
59
  }
60
+ /**
61
+ * Enhanced button variants with improved accessibility and focus states
62
+ */
45
63
  declare const buttonVariants: (props?: ({
46
64
  size?: "sm" | "md" | "lg" | "xl" | "icon-sm" | "icon-md" | "icon-lg" | "icon-xl" | null | undefined;
47
65
  color?: "text" | "primary" | "secondary" | "destructive" | "neutral" | "light" | "dark" | "text-inverse" | "error" | "success" | "custom" | null | undefined;
@@ -51,18 +69,94 @@ declare const buttonVariants: (props?: ({
51
69
  hasIconLeft?: boolean | null | undefined;
52
70
  hasIconRight?: boolean | null | undefined;
53
71
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
72
+ /**
73
+ * Enhanced Button component props with comprehensive type safety and accessibility features
74
+ */
54
75
  export type ButtonProps = DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement> & VariantProps<typeof buttonVariants> & {
55
76
  /**
56
- * Optional icon to be displayed on the button
77
+ * Accessible label for screen readers and assistive technologies.
78
+ * This is required for accessibility compliance.
57
79
  */
58
80
  label: string;
81
+ /**
82
+ * Optional icon to display on the left side of the button
83
+ */
59
84
  Icon?: FC | LucideIcon;
85
+ /**
86
+ * Optional icon to display on the right side of the button
87
+ */
60
88
  IconRight?: FC | LucideIcon;
89
+ /**
90
+ * Additional CSS classes for icon styling
91
+ */
61
92
  iconClassName?: string;
93
+ /**
94
+ * Shows loading spinner and disables button interaction when true
95
+ */
62
96
  isLoading?: boolean;
97
+ /**
98
+ * Marks the button as active (useful for navigation or toggle states)
99
+ */
63
100
  isActive?: boolean;
101
+ /**
102
+ * Makes the button span the full width of its container
103
+ */
64
104
  isFullWidth?: boolean;
105
+ /**
106
+ * Additional description for complex buttons (optional)
107
+ */
108
+ 'aria-describedby'?: string;
109
+ /**
110
+ * Expanded state for collapsible sections (optional)
111
+ */
112
+ 'aria-expanded'?: boolean;
113
+ /**
114
+ * Controls whether the button has popup/menu (optional)
115
+ */
116
+ 'aria-haspopup'?: boolean | 'true' | 'false' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';
117
+ /**
118
+ * Indicates if button controls are currently pressed (for toggle buttons)
119
+ */
120
+ 'aria-pressed'?: boolean;
65
121
  };
122
+ /**
123
+ * Button Component - A comprehensive, accessible button component
124
+ *
125
+ * Features:
126
+ * - Full accessibility compliance with ARIA attributes
127
+ * - Multiple variants and sizes for different use cases
128
+ * - Icon support (left and right positioning)
129
+ * - Loading states with spinner
130
+ * - Keyboard navigation support
131
+ * - Focus management with visible indicators
132
+ * - Responsive design adaptations
133
+ *
134
+ * @example
135
+ * ```tsx
136
+ * // Basic button
137
+ * <Button label="Click me">Click me</Button>
138
+ *
139
+ * // Button with icon and loading state
140
+ * <Button
141
+ * label="Save document"
142
+ * Icon={SaveIcon}
143
+ * isLoading={saving}
144
+ * disabled={!hasChanges}
145
+ * >
146
+ * Save
147
+ * </Button>
148
+ *
149
+ * // Destructive action button
150
+ * <Button
151
+ * variant={ButtonVariant.OUTLINE}
152
+ * color={ButtonColor.DESTRUCTIVE}
153
+ * label="Delete item permanently"
154
+ * aria-describedby="delete-warning"
155
+ * >
156
+ * Delete
157
+ * </Button>
158
+ * ```
159
+ */
66
160
  export declare const Button: FC<ButtonProps>;
67
161
  export {};
68
162
  //# sourceMappingURL=Button.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AAGf,oBAAY,UAAU;IACpB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,oBAAY,kBAAkB;IAC5B,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAwBD,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,cAAc,mBAAmB;IACjC,SAAS,cAAc;IACvB,KAAK,UAAU;CAChB;AAED,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,YAAY,iBAAiB;IAC7B,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED,QAAA,MAAM,cAAc;;;;;;;;8EA6EnB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,iBAAiB,CACzC,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,iBAAiB,CAClB,GACC,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEJ,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CA+ElC,CAAC"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AAGf;;GAEG;AACH,oBAAY,UAAU;IACpB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,oBAAY,kBAAkB;IAC5B,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAwBD;;GAEG;AACH,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,cAAc,mBAAmB;IACjC,SAAS,cAAc;IACvB,KAAK,UAAU;CAChB;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,YAAY,iBAAiB;IAC7B,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED;;GAEG;AACH,QAAA,MAAM,cAAc;;;;;;;;8EAwFnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,iBAAiB,CACzC,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,iBAAiB,CAClB,GACC,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC;IAE5B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,eAAe,CAAC,EACZ,OAAO,GACP,MAAM,GACN,OAAO,GACP,MAAM,GACN,SAAS,GACT,MAAM,GACN,MAAM,GACN,QAAQ,CAAC;IAEb;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CAqGlC,CAAC"}
@@ -70,7 +70,7 @@ var ButtonTextAlign = /* @__PURE__ */ ((ButtonTextAlign2) => {
70
70
  return ButtonTextAlign2;
71
71
  })(ButtonTextAlign || {});
72
72
  const buttonVariants = cva(
73
- "relative cursor-pointer truncate whitespace-nowrap font-medium transition focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50",
73
+ "relative cursor-pointer truncate whitespace-nowrap font-medium transition-all duration-200 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50",
74
74
  {
75
75
  variants: {
76
76
  size: {
@@ -84,22 +84,22 @@ const buttonVariants = cva(
84
84
  [`${"icon-xl"}`]: "p-3"
85
85
  },
86
86
  color: {
87
- [`${"primary"}`]: "text-primary *:text-text-light",
88
- [`${"secondary"}`]: "text-secondary *:text-text-light",
89
- [`${"destructive"}`]: "text-destructive *:text-text-light",
90
- [`${"neutral"}`]: "text-neutral *:text-text-light",
91
- [`${"light"}`]: "text-white *:text-text-light",
92
- [`${"dark"}`]: "text-neutral-800 *:text-text-light",
93
- [`${"text"}`]: "text-text *:text-text-opposite",
94
- [`${"text-inverse"}`]: "text-text-opposite *:text-text",
95
- [`${"error"}`]: "text-error *:text-text-light",
96
- [`${"success"}`]: "text-success *:text-text-light",
97
- [`${"custom"}`]: ""
87
+ [`${"primary"}`]: "text-primary *:text-text-light focus:ring-primary-500",
88
+ [`${"secondary"}`]: "text-secondary *:text-text-light focus:ring-secondary-500",
89
+ [`${"destructive"}`]: "text-destructive *:text-text-light focus:ring-destructive-500",
90
+ [`${"neutral"}`]: "text-neutral *:text-text-light focus:ring-neutral-500",
91
+ [`${"light"}`]: "text-white *:text-text-light focus:ring-white/50",
92
+ [`${"dark"}`]: "text-neutral-800 *:text-text-light focus:ring-neutral-800/50",
93
+ [`${"text"}`]: "text-text *:text-text-opposite focus:ring-neutral-500",
94
+ [`${"text-inverse"}`]: "text-text-opposite *:text-text focus:ring-neutral-500",
95
+ [`${"error"}`]: "text-error *:text-text-light focus:ring-error/50",
96
+ [`${"success"}`]: "text-success *:text-text-light focus:ring-success/50",
97
+ [`${"custom"}`]: "focus:ring-primary-500"
98
98
  },
99
99
  variant: {
100
- [`${"default"}`]: "rounded-lg bg-current",
100
+ [`${"default"}`]: "rounded-lg bg-current hover:bg-current/90",
101
101
  [`${"none"}`]: "border-none bg-current/0 text-inherit hover:bg-current/0",
102
- [`${"outline"}`]: "*:!text-current rounded-lg border-[1.5px] bg-current/0 hover:bg-current/30",
102
+ [`${"outline"}`]: "*:!text-current rounded-lg border-[1.5px] bg-current/0 hover:bg-current/30 border-current",
103
103
  [`${"link"}`]: "*:!text-current h-auto justify-start border-inherit bg-transparent px-1 underline-offset-4 hover:bg-transparent hover:underline",
104
104
  [`${"invisible-link"}`]: "*:!text-current h-auto justify-start border-inherit bg-transparent px-1 underline-offset-4 hover:bg-transparent",
105
105
  [`${"hoverable"}`]: "*:!text-current rounded-lg border-none bg-current/0 transition hover:bg-current/10 aria-[current]:bg-current/5",
@@ -147,25 +147,38 @@ const Button = ({
147
147
  Icon,
148
148
  IconRight,
149
149
  iconClassName,
150
- isLoading,
151
- isActive,
150
+ isLoading = false,
151
+ isActive = false,
152
152
  isFullWidth = false,
153
153
  textAlign,
154
154
  disabled,
155
155
  label,
156
156
  className,
157
157
  type = "button",
158
+ "aria-describedby": ariaDescribedBy,
159
+ "aria-expanded": ariaExpanded,
160
+ "aria-haspopup": ariaHasPopup,
161
+ "aria-pressed": ariaPressed,
158
162
  ...props
159
163
  }) => {
160
164
  const isLink = variant === "link" || variant === "invisible-link";
165
+ const isIconOnly = !children && (Icon || IconRight);
166
+ const accessibilityProps = {
167
+ "aria-label": isIconOnly ? label : void 0,
168
+ "aria-labelledby": !isIconOnly ? void 0 : void 0,
169
+ "aria-describedby": ariaDescribedBy,
170
+ "aria-expanded": ariaExpanded,
171
+ "aria-haspopup": ariaHasPopup,
172
+ "aria-pressed": isActive !== void 0 ? isActive : ariaPressed,
173
+ "aria-busy": isLoading,
174
+ "aria-current": isActive ? "page" : void 0,
175
+ "aria-disabled": disabled || isLoading
176
+ };
161
177
  return /* @__PURE__ */ jsxs(
162
178
  "button",
163
179
  {
164
180
  disabled: isLoading || disabled,
165
- "aria-current": isActive ? "page" : void 0,
166
- "aria-label": label,
167
- "aria-busy": isLoading,
168
- role: isLink ? "link" : void 0,
181
+ role: isLink ? "link" : "button",
169
182
  type,
170
183
  className: buttonVariants({
171
184
  variant,
@@ -174,13 +187,14 @@ const Button = ({
174
187
  isFullWidth,
175
188
  textAlign: textAlign ?? (IconRight ? "left" : "center"),
176
189
  hasIconLeft: Boolean(
177
- typeof children !== "undefined" && (typeof Icon !== "undefined" || typeof isLoading !== "undefined")
190
+ typeof children !== "undefined" && (typeof Icon !== "undefined" || isLoading)
178
191
  ),
179
192
  hasIconRight: Boolean(
180
193
  typeof children !== "undefined" && typeof IconRight !== "undefined"
181
194
  ),
182
195
  className
183
196
  }),
197
+ ...accessibilityProps,
184
198
  ...props,
185
199
  children: [
186
200
  Icon && !isLoading && /* @__PURE__ */ jsx(
@@ -191,7 +205,8 @@ const Button = ({
191
205
  className: iconClassName,
192
206
  position: "left"
193
207
  /* LEFT */
194
- })
208
+ }),
209
+ "aria-hidden": "true"
195
210
  }
196
211
  ),
197
212
  /* @__PURE__ */ jsx(
@@ -203,10 +218,13 @@ const Button = ({
203
218
  position: "left"
204
219
  /* LEFT */
205
220
  }),
206
- isLoading: isLoading ?? false
221
+ isLoading,
222
+ "aria-hidden": "true",
223
+ "data-testid": "loader"
207
224
  }
208
225
  ),
209
- /* @__PURE__ */ jsx("span", { children }),
226
+ children && /* @__PURE__ */ jsx("span", { children }),
227
+ !children && isIconOnly && /* @__PURE__ */ jsx("span", { className: "sr-only", children: label }),
210
228
  IconRight && /* @__PURE__ */ jsx(
211
229
  IconRight,
212
230
  {
@@ -215,7 +233,8 @@ const Button = ({
215
233
  className: iconClassName,
216
234
  position: "right"
217
235
  /* RIGHT */
218
- })
236
+ }),
237
+ "aria-hidden": "true"
219
238
  }
220
239
  )
221
240
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"Button.mjs","sources":["../../../src/components/Button/Button.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport type { LucideIcon } from 'lucide-react';\nimport {\n type ButtonHTMLAttributes,\n type DetailedHTMLProps,\n type FC,\n} from 'react';\nimport { Loader } from '../Loader';\n\nexport enum ButtonSize {\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n ICON_SM = 'icon-sm',\n ICON_MD = 'icon-md',\n ICON_LG = 'icon-lg',\n ICON_XL = 'icon-xl',\n}\n\nexport enum ButtonIconPosition {\n LEFT = 'left',\n RIGHT = 'right',\n}\n\nconst buttonIconVariants = cva('', {\n variants: {\n size: {\n [`${ButtonSize.SM}`]: 'size-3 absolute top-1/2 -translate-y-1/2',\n [`${ButtonSize.MD}`]: 'size-4 absolute top-1/2 -translate-y-1/2',\n [`${ButtonSize.LG}`]: 'size-5 absolute top-1/2 -translate-y-1/2',\n [`${ButtonSize.XL}`]: 'size-6 absolute top-1/2 -translate-y-1/2',\n [`${ButtonSize.ICON_SM}`]: 'size-3',\n [`${ButtonSize.ICON_MD}`]: 'size-4',\n [`${ButtonSize.ICON_LG}`]: 'size-5',\n [`${ButtonSize.ICON_XL}`]: 'size-6',\n },\n position: {\n [`${ButtonIconPosition.LEFT}`]: 'left-3',\n [`${ButtonIconPosition.RIGHT}`]: 'right-3',\n },\n },\n defaultVariants: {\n size: ButtonSize.MD,\n },\n});\n\nexport enum ButtonVariant {\n DEFAULT = 'default',\n NONE = 'none',\n OUTLINE = 'outline',\n LINK = 'link',\n INVISIBLE_LINK = 'invisible-link',\n HOVERABLE = 'hoverable',\n INPUT = 'input',\n}\n\nexport enum ButtonColor {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n DESTRUCTIVE = 'destructive',\n NEUTRAL = 'neutral',\n LIGHT = 'light',\n DARK = 'dark',\n TEXT = 'text',\n TEXT_INVERSE = 'text-inverse',\n ERROR = 'error',\n SUCCESS = 'success',\n CUSTOM = 'custom',\n}\n\nexport enum ButtonTextAlign {\n LEFT = 'left',\n CENTER = 'center',\n RIGHT = 'right',\n}\n\nconst buttonVariants = cva(\n 'relative cursor-pointer truncate whitespace-nowrap font-medium transition focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n size: {\n [`${ButtonSize.SM}`]: 'min-h-7 px-3 max-md:py-1 text-xs',\n [`${ButtonSize.MD}`]: 'min-h-8 px-6 max-md:py-2 text-sm',\n [`${ButtonSize.LG}`]: 'min-h-10 px-8 max-md:py-3 text-lg',\n [`${ButtonSize.XL}`]: 'min-h-11 px-10 max-md:py-4 text-xl',\n [`${ButtonSize.ICON_SM}`]: 'p-1.5',\n [`${ButtonSize.ICON_MD}`]: 'p-1.5',\n [`${ButtonSize.ICON_LG}`]: 'p-2',\n [`${ButtonSize.ICON_XL}`]: 'p-3',\n },\n color: {\n [`${ButtonColor.PRIMARY}`]: 'text-primary *:text-text-light',\n [`${ButtonColor.SECONDARY}`]: 'text-secondary *:text-text-light',\n [`${ButtonColor.DESTRUCTIVE}`]: 'text-destructive *:text-text-light',\n [`${ButtonColor.NEUTRAL}`]: 'text-neutral *:text-text-light',\n [`${ButtonColor.LIGHT}`]: 'text-white *:text-text-light',\n [`${ButtonColor.DARK}`]: 'text-neutral-800 *:text-text-light',\n [`${ButtonColor.TEXT}`]: 'text-text *:text-text-opposite',\n [`${ButtonColor.TEXT_INVERSE}`]: 'text-text-opposite *:text-text',\n [`${ButtonColor.ERROR}`]: 'text-error *:text-text-light',\n [`${ButtonColor.SUCCESS}`]: 'text-success *:text-text-light',\n [`${ButtonColor.CUSTOM}`]: '',\n },\n variant: {\n [`${ButtonVariant.DEFAULT}`]: 'rounded-lg bg-current',\n [`${ButtonVariant.NONE}`]:\n 'border-none bg-current/0 text-inherit hover:bg-current/0',\n [`${ButtonVariant.OUTLINE}`]:\n '*:!text-current rounded-lg border-[1.5px] bg-current/0 hover:bg-current/30',\n [`${ButtonVariant.LINK}`]:\n '*:!text-current h-auto justify-start border-inherit bg-transparent px-1 underline-offset-4 hover:bg-transparent hover:underline',\n [`${ButtonVariant.INVISIBLE_LINK}`]:\n '*:!text-current h-auto justify-start border-inherit bg-transparent px-1 underline-offset-4 hover:bg-transparent',\n [`${ButtonVariant.HOVERABLE}`]:\n '*:!text-current rounded-lg border-none bg-current/0 transition hover:bg-current/10 aria-[current]:bg-current/5',\n [`${ButtonVariant.INPUT}`]: [\n '*:!text-current w-full select-text resize-none rounded-xl border-2 bg-input-background text-sm text-input-text shadow-none outline-0 transition-all',\n 'border-input-border hover:border-input-border-hover focus:border-input-border-focus focus:outline-0 focus:[box-shadow:none]',\n 'aria-[invalid=true]:border-error',\n 'disabled:opacity-50',\n ],\n },\n\n textAlign: {\n [`${ButtonTextAlign.LEFT}`]: 'text-left',\n [`${ButtonTextAlign.CENTER}`]: 'text-center',\n [`${ButtonTextAlign.RIGHT}`]: 'text-right',\n },\n\n isFullWidth: {\n true: 'w-full',\n false: '',\n },\n\n hasIconLeft: {\n true: 'px-12',\n false: '',\n },\n hasIconRight: {\n true: 'pr-8',\n false: '',\n },\n },\n defaultVariants: {\n variant: ButtonVariant.DEFAULT,\n size: ButtonSize.MD,\n color: ButtonColor.CUSTOM,\n textAlign: ButtonTextAlign.CENTER,\n isFullWidth: false,\n hasIconRight: false,\n hasIconLeft: false,\n },\n }\n);\n\nexport type ButtonProps = DetailedHTMLProps<\n ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n> &\n VariantProps<typeof buttonVariants> & {\n /**\n * Optional icon to be displayed on the button\n */\n label: string;\n Icon?: FC | LucideIcon;\n IconRight?: FC | LucideIcon;\n iconClassName?: string;\n isLoading?: boolean;\n isActive?: boolean;\n isFullWidth?: boolean;\n };\n\nexport const Button: FC<ButtonProps> = ({\n variant,\n size,\n color,\n children,\n Icon,\n IconRight,\n iconClassName,\n isLoading,\n isActive,\n isFullWidth = false,\n textAlign,\n disabled,\n label,\n className,\n type = 'button',\n ...props\n}) => {\n const isLink = variant === 'link' || variant === 'invisible-link';\n\n return (\n <button\n disabled={isLoading || disabled}\n aria-current={isActive ? 'page' : undefined}\n aria-label={label}\n aria-busy={isLoading}\n role={isLink ? 'link' : undefined}\n type={type}\n className={buttonVariants({\n variant,\n size,\n color,\n isFullWidth,\n textAlign:\n textAlign ??\n (IconRight ? ButtonTextAlign.LEFT : ButtonTextAlign.CENTER),\n hasIconLeft: Boolean(\n typeof children !== 'undefined' &&\n (typeof Icon !== 'undefined' || typeof isLoading !== 'undefined')\n ),\n hasIconRight: Boolean(\n typeof children !== 'undefined' && typeof IconRight !== 'undefined'\n ),\n className,\n })}\n {...props}\n >\n {Icon && !isLoading && (\n <Icon\n className={buttonIconVariants({\n size,\n className: iconClassName,\n position: ButtonIconPosition.LEFT,\n })}\n />\n )}\n\n <Loader\n className={buttonIconVariants({\n size,\n className: iconClassName,\n position: ButtonIconPosition.LEFT,\n })}\n isLoading={isLoading ?? false}\n />\n\n <span>{children}</span>\n\n {IconRight && (\n <IconRight\n className={buttonIconVariants({\n size,\n className: iconClassName,\n position: ButtonIconPosition.RIGHT,\n })}\n />\n )}\n </button>\n );\n};\n"],"names":["ButtonSize","ButtonIconPosition","ButtonVariant","ButtonColor","ButtonTextAlign"],"mappings":"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"}
1
+ {"version":3,"file":"Button.mjs","sources":["../../../src/components/Button/Button.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport type { LucideIcon } from 'lucide-react';\nimport {\n type ButtonHTMLAttributes,\n type DetailedHTMLProps,\n type FC,\n} from 'react';\nimport { Loader } from '../Loader';\n\n/**\n * Button size variants for different use cases\n */\nexport enum ButtonSize {\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n ICON_SM = 'icon-sm',\n ICON_MD = 'icon-md',\n ICON_LG = 'icon-lg',\n ICON_XL = 'icon-xl',\n}\n\n/**\n * Icon positioning within the button\n */\nexport enum ButtonIconPosition {\n LEFT = 'left',\n RIGHT = 'right',\n}\n\nconst buttonIconVariants = cva('', {\n variants: {\n size: {\n [`${ButtonSize.SM}`]: 'size-3 absolute top-1/2 -translate-y-1/2',\n [`${ButtonSize.MD}`]: 'size-4 absolute top-1/2 -translate-y-1/2',\n [`${ButtonSize.LG}`]: 'size-5 absolute top-1/2 -translate-y-1/2',\n [`${ButtonSize.XL}`]: 'size-6 absolute top-1/2 -translate-y-1/2',\n [`${ButtonSize.ICON_SM}`]: 'size-3',\n [`${ButtonSize.ICON_MD}`]: 'size-4',\n [`${ButtonSize.ICON_LG}`]: 'size-5',\n [`${ButtonSize.ICON_XL}`]: 'size-6',\n },\n position: {\n [`${ButtonIconPosition.LEFT}`]: 'left-3',\n [`${ButtonIconPosition.RIGHT}`]: 'right-3',\n },\n },\n defaultVariants: {\n size: ButtonSize.MD,\n },\n});\n\n/**\n * Button visual style variants\n */\nexport enum ButtonVariant {\n DEFAULT = 'default',\n NONE = 'none',\n OUTLINE = 'outline',\n LINK = 'link',\n INVISIBLE_LINK = 'invisible-link',\n HOVERABLE = 'hoverable',\n INPUT = 'input',\n}\n\n/**\n * Button color themes that work with the design system\n */\nexport enum ButtonColor {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n DESTRUCTIVE = 'destructive',\n NEUTRAL = 'neutral',\n LIGHT = 'light',\n DARK = 'dark',\n TEXT = 'text',\n TEXT_INVERSE = 'text-inverse',\n ERROR = 'error',\n SUCCESS = 'success',\n CUSTOM = 'custom',\n}\n\n/**\n * Text alignment options for button content\n */\nexport enum ButtonTextAlign {\n LEFT = 'left',\n CENTER = 'center',\n RIGHT = 'right',\n}\n\n/**\n * Enhanced button variants with improved accessibility and focus states\n */\nconst buttonVariants = cva(\n 'relative cursor-pointer truncate whitespace-nowrap font-medium transition-all duration-200 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n size: {\n [`${ButtonSize.SM}`]: 'min-h-7 px-3 max-md:py-1 text-xs',\n [`${ButtonSize.MD}`]: 'min-h-8 px-6 max-md:py-2 text-sm',\n [`${ButtonSize.LG}`]: 'min-h-10 px-8 max-md:py-3 text-lg',\n [`${ButtonSize.XL}`]: 'min-h-11 px-10 max-md:py-4 text-xl',\n [`${ButtonSize.ICON_SM}`]: 'p-1.5',\n [`${ButtonSize.ICON_MD}`]: 'p-1.5',\n [`${ButtonSize.ICON_LG}`]: 'p-2',\n [`${ButtonSize.ICON_XL}`]: 'p-3',\n },\n color: {\n [`${ButtonColor.PRIMARY}`]:\n 'text-primary *:text-text-light focus:ring-primary-500',\n [`${ButtonColor.SECONDARY}`]:\n 'text-secondary *:text-text-light focus:ring-secondary-500',\n [`${ButtonColor.DESTRUCTIVE}`]:\n 'text-destructive *:text-text-light focus:ring-destructive-500',\n [`${ButtonColor.NEUTRAL}`]:\n 'text-neutral *:text-text-light focus:ring-neutral-500',\n [`${ButtonColor.LIGHT}`]:\n 'text-white *:text-text-light focus:ring-white/50',\n [`${ButtonColor.DARK}`]:\n 'text-neutral-800 *:text-text-light focus:ring-neutral-800/50',\n [`${ButtonColor.TEXT}`]:\n 'text-text *:text-text-opposite focus:ring-neutral-500',\n [`${ButtonColor.TEXT_INVERSE}`]:\n 'text-text-opposite *:text-text focus:ring-neutral-500',\n [`${ButtonColor.ERROR}`]:\n 'text-error *:text-text-light focus:ring-error/50',\n [`${ButtonColor.SUCCESS}`]:\n 'text-success *:text-text-light focus:ring-success/50',\n [`${ButtonColor.CUSTOM}`]: 'focus:ring-primary-500',\n },\n variant: {\n [`${ButtonVariant.DEFAULT}`]:\n 'rounded-lg bg-current hover:bg-current/90',\n [`${ButtonVariant.NONE}`]:\n 'border-none bg-current/0 text-inherit hover:bg-current/0',\n [`${ButtonVariant.OUTLINE}`]:\n '*:!text-current rounded-lg border-[1.5px] bg-current/0 hover:bg-current/30 border-current',\n [`${ButtonVariant.LINK}`]:\n '*:!text-current h-auto justify-start border-inherit bg-transparent px-1 underline-offset-4 hover:bg-transparent hover:underline',\n [`${ButtonVariant.INVISIBLE_LINK}`]:\n '*:!text-current h-auto justify-start border-inherit bg-transparent px-1 underline-offset-4 hover:bg-transparent',\n [`${ButtonVariant.HOVERABLE}`]:\n '*:!text-current rounded-lg border-none bg-current/0 transition hover:bg-current/10 aria-[current]:bg-current/5',\n [`${ButtonVariant.INPUT}`]: [\n '*:!text-current w-full select-text resize-none rounded-xl border-2 bg-input-background text-sm text-input-text shadow-none outline-0 transition-all',\n 'border-input-border hover:border-input-border-hover focus:border-input-border-focus focus:outline-0 focus:[box-shadow:none]',\n 'aria-[invalid=true]:border-error',\n 'disabled:opacity-50',\n ],\n },\n\n textAlign: {\n [`${ButtonTextAlign.LEFT}`]: 'text-left',\n [`${ButtonTextAlign.CENTER}`]: 'text-center',\n [`${ButtonTextAlign.RIGHT}`]: 'text-right',\n },\n\n isFullWidth: {\n true: 'w-full',\n false: '',\n },\n\n hasIconLeft: {\n true: 'px-12',\n false: '',\n },\n hasIconRight: {\n true: 'pr-8',\n false: '',\n },\n },\n defaultVariants: {\n variant: ButtonVariant.DEFAULT,\n size: ButtonSize.MD,\n color: ButtonColor.CUSTOM,\n textAlign: ButtonTextAlign.CENTER,\n isFullWidth: false,\n hasIconRight: false,\n hasIconLeft: false,\n },\n }\n);\n\n/**\n * Enhanced Button component props with comprehensive type safety and accessibility features\n */\nexport type ButtonProps = DetailedHTMLProps<\n ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n> &\n VariantProps<typeof buttonVariants> & {\n /**\n * Accessible label for screen readers and assistive technologies.\n * This is required for accessibility compliance.\n */\n label: string;\n\n /**\n * Optional icon to display on the left side of the button\n */\n Icon?: FC | LucideIcon;\n\n /**\n * Optional icon to display on the right side of the button\n */\n IconRight?: FC | LucideIcon;\n\n /**\n * Additional CSS classes for icon styling\n */\n iconClassName?: string;\n\n /**\n * Shows loading spinner and disables button interaction when true\n */\n isLoading?: boolean;\n\n /**\n * Marks the button as active (useful for navigation or toggle states)\n */\n isActive?: boolean;\n\n /**\n * Makes the button span the full width of its container\n */\n isFullWidth?: boolean;\n\n /**\n * Additional description for complex buttons (optional)\n */\n 'aria-describedby'?: string;\n\n /**\n * Expanded state for collapsible sections (optional)\n */\n 'aria-expanded'?: boolean;\n\n /**\n * Controls whether the button has popup/menu (optional)\n */\n 'aria-haspopup'?:\n | boolean\n | 'true'\n | 'false'\n | 'menu'\n | 'listbox'\n | 'tree'\n | 'grid'\n | 'dialog';\n\n /**\n * Indicates if button controls are currently pressed (for toggle buttons)\n */\n 'aria-pressed'?: boolean;\n };\n\n/**\n * Button Component - A comprehensive, accessible button component\n *\n * Features:\n * - Full accessibility compliance with ARIA attributes\n * - Multiple variants and sizes for different use cases\n * - Icon support (left and right positioning)\n * - Loading states with spinner\n * - Keyboard navigation support\n * - Focus management with visible indicators\n * - Responsive design adaptations\n *\n * @example\n * ```tsx\n * // Basic button\n * <Button label=\"Click me\">Click me</Button>\n *\n * // Button with icon and loading state\n * <Button\n * label=\"Save document\"\n * Icon={SaveIcon}\n * isLoading={saving}\n * disabled={!hasChanges}\n * >\n * Save\n * </Button>\n *\n * // Destructive action button\n * <Button\n * variant={ButtonVariant.OUTLINE}\n * color={ButtonColor.DESTRUCTIVE}\n * label=\"Delete item permanently\"\n * aria-describedby=\"delete-warning\"\n * >\n * Delete\n * </Button>\n * ```\n */\nexport const Button: FC<ButtonProps> = ({\n variant,\n size,\n color,\n children,\n Icon,\n IconRight,\n iconClassName,\n isLoading = false,\n isActive = false,\n isFullWidth = false,\n textAlign,\n disabled,\n label,\n className,\n type = 'button',\n 'aria-describedby': ariaDescribedBy,\n 'aria-expanded': ariaExpanded,\n 'aria-haspopup': ariaHasPopup,\n 'aria-pressed': ariaPressed,\n ...props\n}) => {\n const isLink =\n variant === ButtonVariant.LINK || variant === ButtonVariant.INVISIBLE_LINK;\n const isIconOnly = !children && (Icon || IconRight);\n\n const accessibilityProps = {\n 'aria-label': isIconOnly ? label : undefined,\n 'aria-labelledby': !isIconOnly ? undefined : undefined,\n 'aria-describedby': ariaDescribedBy,\n 'aria-expanded': ariaExpanded,\n 'aria-haspopup': ariaHasPopup,\n 'aria-pressed': isActive !== undefined ? isActive : ariaPressed,\n 'aria-busy': isLoading,\n 'aria-current': (isActive ? 'page' : undefined) as 'page' | undefined,\n 'aria-disabled': disabled || isLoading,\n };\n\n return (\n <button\n disabled={isLoading || disabled}\n role={isLink ? 'link' : 'button'}\n type={type}\n className={buttonVariants({\n variant,\n size,\n color,\n isFullWidth,\n textAlign:\n textAlign ??\n (IconRight ? ButtonTextAlign.LEFT : ButtonTextAlign.CENTER),\n hasIconLeft: Boolean(\n typeof children !== 'undefined' &&\n (typeof Icon !== 'undefined' || isLoading)\n ),\n hasIconRight: Boolean(\n typeof children !== 'undefined' && typeof IconRight !== 'undefined'\n ),\n className,\n })}\n {...accessibilityProps}\n {...props}\n >\n {Icon && !isLoading && (\n <Icon\n className={buttonIconVariants({\n size,\n className: iconClassName,\n position: ButtonIconPosition.LEFT,\n })}\n aria-hidden=\"true\"\n />\n )}\n\n <Loader\n className={buttonIconVariants({\n size,\n className: iconClassName,\n position: ButtonIconPosition.LEFT,\n })}\n isLoading={isLoading}\n aria-hidden=\"true\"\n data-testid=\"loader\"\n />\n\n {children && <span>{children}</span>}\n\n {!children && isIconOnly && <span className=\"sr-only\">{label}</span>}\n\n {IconRight && (\n <IconRight\n className={buttonIconVariants({\n size,\n className: iconClassName,\n position: ButtonIconPosition.RIGHT,\n })}\n aria-hidden=\"true\"\n />\n )}\n </button>\n );\n};\n"],"names":["ButtonSize","ButtonIconPosition","ButtonVariant","ButtonColor","ButtonTextAlign"],"mappings":"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"}
@@ -6,21 +6,52 @@ const ReactExports = require("react");
6
6
  const ClickOutsideDiv = ({
7
7
  children,
8
8
  onClickOutSide,
9
+ listenForEscape = false,
10
+ disabled = false,
9
11
  ...props
10
12
  }) => {
11
13
  const divRef = ReactExports.useRef(null);
12
- ReactExports.useEffect(() => {
13
- const handleClick = (event) => {
14
+ const handleClickOutside = ReactExports.useCallback(
15
+ (event) => {
16
+ if (disabled) return;
14
17
  if (divRef.current && !divRef.current.contains(event.target)) {
15
18
  onClickOutSide();
16
19
  }
17
- };
18
- document.addEventListener("mousedown", handleClick, { passive: true });
20
+ },
21
+ [onClickOutSide, disabled]
22
+ );
23
+ const handleKeyDown = ReactExports.useCallback(
24
+ (event) => {
25
+ if (disabled || !listenForEscape) return;
26
+ if (event.key === "Escape") {
27
+ onClickOutSide();
28
+ }
29
+ },
30
+ [onClickOutSide, disabled, listenForEscape]
31
+ );
32
+ ReactExports.useEffect(() => {
33
+ document.addEventListener("mousedown", handleClickOutside, {
34
+ passive: true
35
+ });
36
+ if (listenForEscape) {
37
+ document.addEventListener("keydown", handleKeyDown);
38
+ }
19
39
  return () => {
20
- document.removeEventListener("mousedown", handleClick);
40
+ document.removeEventListener("mousedown", handleClickOutside);
41
+ if (listenForEscape) {
42
+ document.removeEventListener("keydown", handleKeyDown);
43
+ }
21
44
  };
22
- }, [onClickOutSide]);
23
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref: divRef, ...props, children });
45
+ }, [handleClickOutside, handleKeyDown, listenForEscape]);
46
+ return /* @__PURE__ */ jsxRuntime.jsx(
47
+ "div",
48
+ {
49
+ ref: divRef,
50
+ ...props,
51
+ role: props.role || "region",
52
+ children
53
+ }
54
+ );
24
55
  };
25
56
  exports.ClickOutsideDiv = ClickOutsideDiv;
26
57
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/ClickOutsideDiv/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n type FC,\n type HTMLAttributes,\n type PropsWithChildren,\n useEffect,\n useRef,\n} from 'react';\n\nexport type ClickOutsideDivProps = PropsWithChildren<{\n onClickOutSide: () => void; // note: changed return type to `void`\n}> &\n HTMLAttributes<HTMLDivElement>;\n\nexport const ClickOutsideDiv: FC<ClickOutsideDivProps> = ({\n children,\n onClickOutSide,\n ...props\n}) => {\n const divRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClick = (event: MouseEvent) => {\n // If clicking outside of the referenced element, call onClickOutSide\n if (divRef.current && !divRef.current.contains(event.target as Node)) {\n onClickOutSide();\n }\n };\n\n // Attach the event listener\n document.addEventListener('mousedown', handleClick, { passive: true });\n\n // Clean up on unmount\n return () => {\n document.removeEventListener('mousedown', handleClick);\n };\n }, [onClickOutSide]);\n\n return (\n <div ref={divRef} {...props}>\n {children}\n </div>\n );\n};\n"],"names":["useRef","useEffect"],"mappings":";;;;;AAeO,MAAM,kBAA4C,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,SAASA,aAAAA,OAAuB,IAAI;AAE1CC,eAAAA,UAAU,MAAM;AACd,UAAM,cAAc,CAAC,UAAsB;AAEzC,UAAI,OAAO,WAAW,CAAC,OAAO,QAAQ,SAAS,MAAM,MAAc,GAAG;AACpE,uBAAA;AAAA,MACF;AAAA,IACF;AAGA,aAAS,iBAAiB,aAAa,aAAa,EAAE,SAAS,MAAM;AAGrE,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,WAAW;AAAA,IACvD;AAAA,EACF,GAAG,CAAC,cAAc,CAAC;AAEnB,wCACG,OAAA,EAAI,KAAK,QAAS,GAAG,OACnB,UACH;AAEJ;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/ClickOutsideDiv/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n type FC,\n type HTMLAttributes,\n type PropsWithChildren,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\n\nexport type ClickOutsideDivProps = PropsWithChildren<{\n /**\n * Callback function called when a click occurs outside the component\n */\n onClickOutSide: () => void;\n /**\n * Whether to listen for Escape key presses\n * @default false\n */\n listenForEscape?: boolean;\n /**\n * Whether the component is disabled (won't trigger onClickOutSide)\n * @default false\n */\n disabled?: boolean;\n}> &\n HTMLAttributes<HTMLDivElement>;\n\nexport const ClickOutsideDiv: FC<ClickOutsideDivProps> = ({\n children,\n onClickOutSide,\n listenForEscape = false,\n disabled = false,\n ...props\n}) => {\n const divRef = useRef<HTMLDivElement>(null);\n\n const handleClickOutside = useCallback(\n (event: MouseEvent) => {\n if (disabled) return;\n\n // If clicking outside of the referenced element, call onClickOutSide\n if (divRef.current && !divRef.current.contains(event.target as Node)) {\n onClickOutSide();\n }\n },\n [onClickOutSide, disabled]\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (disabled || !listenForEscape) return;\n\n if (event.key === 'Escape') {\n onClickOutSide();\n }\n },\n [onClickOutSide, disabled, listenForEscape]\n );\n\n useEffect(() => {\n // Attach the event listeners\n document.addEventListener('mousedown', handleClickOutside, {\n passive: true,\n });\n\n if (listenForEscape) {\n document.addEventListener('keydown', handleKeyDown);\n }\n\n // Clean up on unmount\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n if (listenForEscape) {\n document.removeEventListener('keydown', handleKeyDown);\n }\n };\n }, [handleClickOutside, handleKeyDown, listenForEscape]);\n\n return (\n <div\n ref={divRef}\n {...props}\n // Add role for better accessibility when used as a container\n role={props.role || 'region'}\n >\n {children}\n </div>\n );\n};\n"],"names":["useRef","useCallback","useEffect","jsx"],"mappings":";;;;;AA6BO,MAAM,kBAA4C,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX,GAAG;AACL,MAAM;AACJ,QAAM,SAASA,aAAAA,OAAuB,IAAI;AAE1C,QAAM,qBAAqBC,aAAAA;AAAAA,IACzB,CAAC,UAAsB;AACrB,UAAI,SAAU;AAGd,UAAI,OAAO,WAAW,CAAC,OAAO,QAAQ,SAAS,MAAM,MAAc,GAAG;AACpE,uBAAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB,QAAQ;AAAA,EAAA;AAG3B,QAAM,gBAAgBA,aAAAA;AAAAA,IACpB,CAAC,UAAyB;AACxB,UAAI,YAAY,CAAC,gBAAiB;AAElC,UAAI,MAAM,QAAQ,UAAU;AAC1B,uBAAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB,UAAU,eAAe;AAAA,EAAA;AAG5CC,eAAAA,UAAU,MAAM;AAEd,aAAS,iBAAiB,aAAa,oBAAoB;AAAA,MACzD,SAAS;AAAA,IAAA,CACV;AAED,QAAI,iBAAiB;AACnB,eAAS,iBAAiB,WAAW,aAAa;AAAA,IACpD;AAGA,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,kBAAkB;AAC5D,UAAI,iBAAiB;AACnB,iBAAS,oBAAoB,WAAW,aAAa;AAAA,MACvD;AAAA,IACF;AAAA,EACF,GAAG,CAAC,oBAAoB,eAAe,eAAe,CAAC;AAEvD,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACJ,GAAG;AAAA,MAEJ,MAAM,MAAM,QAAQ;AAAA,MAEnB;AAAA,IAAA;AAAA,EAAA;AAGP;;"}
@@ -1,6 +1,19 @@
1
1
  import { FC, HTMLAttributes, PropsWithChildren } from 'react';
2
2
  export type ClickOutsideDivProps = PropsWithChildren<{
3
+ /**
4
+ * Callback function called when a click occurs outside the component
5
+ */
3
6
  onClickOutSide: () => void;
7
+ /**
8
+ * Whether to listen for Escape key presses
9
+ * @default false
10
+ */
11
+ listenForEscape?: boolean;
12
+ /**
13
+ * Whether the component is disabled (won't trigger onClickOutSide)
14
+ * @default false
15
+ */
16
+ disabled?: boolean;
4
17
  }> & HTMLAttributes<HTMLDivElement>;
5
18
  export declare const ClickOutsideDiv: FC<ClickOutsideDivProps>;
6
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ClickOutsideDiv/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,EAAE,EACP,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAGvB,MAAM,OAAO,CAAC;AAEf,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;IACnD,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC,GACA,cAAc,CAAC,cAAc,CAAC,CAAC;AAEjC,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CA6BpD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ClickOutsideDiv/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,EAAE,EACP,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAIvB,MAAM,OAAO,CAAC;AAEf,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;IACnD;;OAEG;IACH,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC,GACA,cAAc,CAAC,cAAc,CAAC,CAAC;AAEjC,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CA6DpD,CAAC"}
@@ -1,24 +1,55 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import { useRef, useEffect } from "react";
3
+ import { useRef, useCallback, useEffect } from "react";
4
4
  const ClickOutsideDiv = ({
5
5
  children,
6
6
  onClickOutSide,
7
+ listenForEscape = false,
8
+ disabled = false,
7
9
  ...props
8
10
  }) => {
9
11
  const divRef = useRef(null);
10
- useEffect(() => {
11
- const handleClick = (event) => {
12
+ const handleClickOutside = useCallback(
13
+ (event) => {
14
+ if (disabled) return;
12
15
  if (divRef.current && !divRef.current.contains(event.target)) {
13
16
  onClickOutSide();
14
17
  }
15
- };
16
- document.addEventListener("mousedown", handleClick, { passive: true });
18
+ },
19
+ [onClickOutSide, disabled]
20
+ );
21
+ const handleKeyDown = useCallback(
22
+ (event) => {
23
+ if (disabled || !listenForEscape) return;
24
+ if (event.key === "Escape") {
25
+ onClickOutSide();
26
+ }
27
+ },
28
+ [onClickOutSide, disabled, listenForEscape]
29
+ );
30
+ useEffect(() => {
31
+ document.addEventListener("mousedown", handleClickOutside, {
32
+ passive: true
33
+ });
34
+ if (listenForEscape) {
35
+ document.addEventListener("keydown", handleKeyDown);
36
+ }
17
37
  return () => {
18
- document.removeEventListener("mousedown", handleClick);
38
+ document.removeEventListener("mousedown", handleClickOutside);
39
+ if (listenForEscape) {
40
+ document.removeEventListener("keydown", handleKeyDown);
41
+ }
19
42
  };
20
- }, [onClickOutSide]);
21
- return /* @__PURE__ */ jsx("div", { ref: divRef, ...props, children });
43
+ }, [handleClickOutside, handleKeyDown, listenForEscape]);
44
+ return /* @__PURE__ */ jsx(
45
+ "div",
46
+ {
47
+ ref: divRef,
48
+ ...props,
49
+ role: props.role || "region",
50
+ children
51
+ }
52
+ );
22
53
  };
23
54
  export {
24
55
  ClickOutsideDiv
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/components/ClickOutsideDiv/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n type FC,\n type HTMLAttributes,\n type PropsWithChildren,\n useEffect,\n useRef,\n} from 'react';\n\nexport type ClickOutsideDivProps = PropsWithChildren<{\n onClickOutSide: () => void; // note: changed return type to `void`\n}> &\n HTMLAttributes<HTMLDivElement>;\n\nexport const ClickOutsideDiv: FC<ClickOutsideDivProps> = ({\n children,\n onClickOutSide,\n ...props\n}) => {\n const divRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClick = (event: MouseEvent) => {\n // If clicking outside of the referenced element, call onClickOutSide\n if (divRef.current && !divRef.current.contains(event.target as Node)) {\n onClickOutSide();\n }\n };\n\n // Attach the event listener\n document.addEventListener('mousedown', handleClick, { passive: true });\n\n // Clean up on unmount\n return () => {\n document.removeEventListener('mousedown', handleClick);\n };\n }, [onClickOutSide]);\n\n return (\n <div ref={divRef} {...props}>\n {children}\n </div>\n );\n};\n"],"names":[],"mappings":";;;AAeO,MAAM,kBAA4C,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,SAAS,OAAuB,IAAI;AAE1C,YAAU,MAAM;AACd,UAAM,cAAc,CAAC,UAAsB;AAEzC,UAAI,OAAO,WAAW,CAAC,OAAO,QAAQ,SAAS,MAAM,MAAc,GAAG;AACpE,uBAAA;AAAA,MACF;AAAA,IACF;AAGA,aAAS,iBAAiB,aAAa,aAAa,EAAE,SAAS,MAAM;AAGrE,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,WAAW;AAAA,IACvD;AAAA,EACF,GAAG,CAAC,cAAc,CAAC;AAEnB,6BACG,OAAA,EAAI,KAAK,QAAS,GAAG,OACnB,UACH;AAEJ;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/components/ClickOutsideDiv/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n type FC,\n type HTMLAttributes,\n type PropsWithChildren,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\n\nexport type ClickOutsideDivProps = PropsWithChildren<{\n /**\n * Callback function called when a click occurs outside the component\n */\n onClickOutSide: () => void;\n /**\n * Whether to listen for Escape key presses\n * @default false\n */\n listenForEscape?: boolean;\n /**\n * Whether the component is disabled (won't trigger onClickOutSide)\n * @default false\n */\n disabled?: boolean;\n}> &\n HTMLAttributes<HTMLDivElement>;\n\nexport const ClickOutsideDiv: FC<ClickOutsideDivProps> = ({\n children,\n onClickOutSide,\n listenForEscape = false,\n disabled = false,\n ...props\n}) => {\n const divRef = useRef<HTMLDivElement>(null);\n\n const handleClickOutside = useCallback(\n (event: MouseEvent) => {\n if (disabled) return;\n\n // If clicking outside of the referenced element, call onClickOutSide\n if (divRef.current && !divRef.current.contains(event.target as Node)) {\n onClickOutSide();\n }\n },\n [onClickOutSide, disabled]\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (disabled || !listenForEscape) return;\n\n if (event.key === 'Escape') {\n onClickOutSide();\n }\n },\n [onClickOutSide, disabled, listenForEscape]\n );\n\n useEffect(() => {\n // Attach the event listeners\n document.addEventListener('mousedown', handleClickOutside, {\n passive: true,\n });\n\n if (listenForEscape) {\n document.addEventListener('keydown', handleKeyDown);\n }\n\n // Clean up on unmount\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n if (listenForEscape) {\n document.removeEventListener('keydown', handleKeyDown);\n }\n };\n }, [handleClickOutside, handleKeyDown, listenForEscape]);\n\n return (\n <div\n ref={divRef}\n {...props}\n // Add role for better accessibility when used as a container\n role={props.role || 'region'}\n >\n {children}\n </div>\n );\n};\n"],"names":[],"mappings":";;;AA6BO,MAAM,kBAA4C,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX,GAAG;AACL,MAAM;AACJ,QAAM,SAAS,OAAuB,IAAI;AAE1C,QAAM,qBAAqB;AAAA,IACzB,CAAC,UAAsB;AACrB,UAAI,SAAU;AAGd,UAAI,OAAO,WAAW,CAAC,OAAO,QAAQ,SAAS,MAAM,MAAc,GAAG;AACpE,uBAAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB,QAAQ;AAAA,EAAA;AAG3B,QAAM,gBAAgB;AAAA,IACpB,CAAC,UAAyB;AACxB,UAAI,YAAY,CAAC,gBAAiB;AAElC,UAAI,MAAM,QAAQ,UAAU;AAC1B,uBAAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,gBAAgB,UAAU,eAAe;AAAA,EAAA;AAG5C,YAAU,MAAM;AAEd,aAAS,iBAAiB,aAAa,oBAAoB;AAAA,MACzD,SAAS;AAAA,IAAA,CACV;AAED,QAAI,iBAAiB;AACnB,eAAS,iBAAiB,WAAW,aAAa;AAAA,IACpD;AAGA,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,kBAAkB;AAC5D,UAAI,iBAAiB;AACnB,iBAAS,oBAAoB,WAAW,aAAa;AAAA,MACvD;AAAA,IACF;AAAA,EACF,GAAG,CAAC,oBAAoB,eAAe,eAAe,CAAC;AAEvD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACJ,GAAG;AAAA,MAEJ,MAAM,MAAM,QAAQ;AAAA,MAEnB;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -143,6 +143,7 @@ const Container = ({
143
143
  border,
144
144
  borderColor,
145
145
  background,
146
+ gap,
146
147
  ...props
147
148
  }) => /* @__PURE__ */ jsxRuntime.jsx(
148
149
  "div",
@@ -156,6 +157,7 @@ const Container = ({
156
157
  border: typeof border === "boolean" ? border ? "with" : "none" : void 0,
157
158
  background,
158
159
  borderColor,
160
+ gap,
159
161
  className
160
162
  })
161
163
  ),
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/Container/index.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport {\n type DetailedHTMLProps,\n type FC,\n type HTMLAttributes,\n type PropsWithChildren,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\nexport const containerVariants = cva('flex text-text flex-col backdrop-blur', {\n variants: {\n roundedSize: {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n '3xl': 'rounded-3xl',\n full: 'rounded-full',\n },\n transparency: {\n none: 'bg-card',\n sm: 'bg-card/95',\n md: 'bg-card/70',\n lg: 'bg-card/40',\n xl: 'bg-card/20',\n full: '',\n },\n padding: {\n none: 'p-0',\n sm: 'p-1',\n md: 'p-2',\n lg: 'p-3',\n xl: 'p-4',\n },\n separator: {\n without: '',\n x: 'divide-x divide-dashed divide-text/20',\n y: 'divide-y divide-dashed divide-text/20',\n both: 'divide-x divide-y divide-dashed divide-text/20',\n },\n border: {\n none: '',\n with: 'border-[1.5px]',\n },\n borderColor: {\n primary: 'border-primary',\n secondary: 'border-secondary',\n neutral: 'border-neutral',\n text: 'border-text ',\n error: 'border-error',\n warning: 'border-warning',\n success: 'border-success',\n },\n background: {\n none: 'bg-inherit',\n hoverable:\n '!bg-opacity-5 backdrop-blur-0 hover:!bg-opacity-10 hover:backdrop-blur focus:!bg-opacity-10 focus:backdrop-blur aria-selected:!bg-opacity-15 aria-selected:backdrop-blur',\n with: '',\n },\n gap: {\n none: 'gap-0',\n sm: 'gap-1',\n md: 'gap-3',\n lg: 'gap-5',\n xl: 'gap-8',\n '2xl': 'gap-10',\n },\n },\n defaultVariants: {\n roundedSize: 'md',\n border: 'none',\n borderColor: 'text',\n transparency: 'md',\n padding: 'none',\n separator: 'without',\n gap: 'none',\n },\n});\n\nexport enum ContainerRoundedSize {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n TWO_XL = '2xl',\n THREE_XL = '3xl',\n FULL = 'full',\n}\n\nexport enum ContainerTransparency {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n FULL = 'full',\n}\n\nexport enum ContainerPadding {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n}\n\nexport enum ContainerSeparator {\n WITHOUT = 'without',\n X = 'x',\n Y = 'y',\n BOTH = 'both',\n}\n\nexport enum ContainerBorderColor {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n NEUTRAL = 'neutral',\n TEXT = 'text',\n ERROR = 'error',\n WARNING = 'warning',\n SUCCESS = 'success',\n}\n\nexport enum ContainerBackground {\n NONE = 'none',\n HOVERABLE = 'hoverable',\n WITH = 'with',\n}\n\nexport enum ContainerGap {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n TWO_XL = '2xl',\n}\n\nexport type ContainerProps = PropsWithChildren<\n Omit<VariantProps<typeof containerVariants>, 'border'>\n> &\n DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement> & {\n border?: boolean;\n };\n\nexport const Container: FC<ContainerProps> = ({\n children,\n roundedSize,\n padding,\n transparency,\n separator,\n className,\n border,\n borderColor,\n background,\n ...props\n}) => (\n <div\n className={cn(\n containerVariants({\n roundedSize,\n transparency,\n padding,\n separator,\n border:\n typeof border === 'boolean' ? (border ? 'with' : 'none') : undefined,\n background,\n borderColor,\n className,\n })\n )}\n {...props}\n >\n {children}\n </div>\n);\n"],"names":["cva","ContainerRoundedSize","ContainerTransparency","ContainerPadding","ContainerSeparator","ContainerBorderColor","ContainerBackground","ContainerGap","jsx","cn"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Container/index.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport {\n type DetailedHTMLProps,\n type FC,\n type HTMLAttributes,\n type PropsWithChildren,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\n/**\n * Container component variants using class-variance-authority\n * Provides flexible styling options for background, padding, borders, and layout\n */\nexport const containerVariants = cva('flex text-text flex-col backdrop-blur', {\n variants: {\n roundedSize: {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n '3xl': 'rounded-3xl',\n full: 'rounded-full',\n },\n transparency: {\n none: 'bg-card',\n sm: 'bg-card/95',\n md: 'bg-card/70',\n lg: 'bg-card/40',\n xl: 'bg-card/20',\n full: '',\n },\n padding: {\n none: 'p-0',\n sm: 'p-1',\n md: 'p-2',\n lg: 'p-3',\n xl: 'p-4',\n },\n separator: {\n without: '',\n x: 'divide-x divide-dashed divide-text/20',\n y: 'divide-y divide-dashed divide-text/20',\n both: 'divide-x divide-y divide-dashed divide-text/20',\n },\n border: {\n none: '',\n with: 'border-[1.5px]',\n },\n borderColor: {\n primary: 'border-primary',\n secondary: 'border-secondary',\n neutral: 'border-neutral',\n text: 'border-text ',\n error: 'border-error',\n warning: 'border-warning',\n success: 'border-success',\n },\n background: {\n none: 'bg-inherit',\n hoverable:\n '!bg-opacity-5 backdrop-blur-0 hover:!bg-opacity-10 hover:backdrop-blur focus:!bg-opacity-10 focus:backdrop-blur aria-selected:!bg-opacity-15 aria-selected:backdrop-blur',\n with: '',\n },\n gap: {\n none: 'gap-0',\n sm: 'gap-1',\n md: 'gap-3',\n lg: 'gap-5',\n xl: 'gap-8',\n '2xl': 'gap-10',\n },\n },\n defaultVariants: {\n roundedSize: 'md',\n border: 'none',\n borderColor: 'text',\n transparency: 'md',\n padding: 'none',\n separator: 'without',\n gap: 'none',\n },\n});\n\n/** Available rounded corner sizes for the container */\nexport enum ContainerRoundedSize {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n TWO_XL = '2xl',\n THREE_XL = '3xl',\n FULL = 'full',\n}\n\n/** Background transparency levels for the container */\nexport enum ContainerTransparency {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n FULL = 'full',\n}\n\n/** Padding sizes for container content */\nexport enum ContainerPadding {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n}\n\n/** Separator options for dividing container children */\nexport enum ContainerSeparator {\n WITHOUT = 'without',\n X = 'x',\n Y = 'y',\n BOTH = 'both',\n}\n\n/** Border color options for the container */\nexport enum ContainerBorderColor {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n NEUTRAL = 'neutral',\n TEXT = 'text',\n ERROR = 'error',\n WARNING = 'warning',\n SUCCESS = 'success',\n}\n\n/** Background interaction states for the container */\nexport enum ContainerBackground {\n NONE = 'none',\n HOVERABLE = 'hoverable',\n WITH = 'with',\n}\n\n/** Gap sizes between container children */\nexport enum ContainerGap {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n TWO_XL = '2xl',\n}\n\n/** Container component props extending HTML div attributes */\nexport type ContainerProps = PropsWithChildren<\n Omit<VariantProps<typeof containerVariants>, 'border'>\n> &\n DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement> & {\n /** Whether to show a border around the container */\n border?: boolean;\n };\n\n/**\n * Container Component\n *\n * A flexible container component for organizing content with customizable styling options.\n * Supports various visual states, layouts, and accessibility features.\n *\n * ## Features\n * - **Flexible Layout**: Supports different padding, gap, and separator options\n * - **Visual Variants**: Multiple background transparency levels and border styles\n * - **Responsive Design**: Configurable rounded corners and spacing\n * - **Semantic HTML**: Proper div element with extensible attributes\n *\n * ## Accessibility\n * - Inherits all standard div accessibility features\n * - Supports ARIA attributes through spread props\n * - Maintains proper semantic structure for screen readers\n *\n * @param children - The content to display inside the container\n * @param roundedSize - Border radius size (default: 'md')\n * @param transparency - Background transparency level (default: 'md')\n * @param padding - Internal padding size (default: 'none')\n * @param separator - Divider lines between children (default: 'without')\n * @param border - Whether to show border (default: false)\n * @param borderColor - Color of the border (default: 'text')\n * @param background - Background interaction behavior (default: 'none')\n * @param gap - Space between child elements (default: 'none')\n * @param className - Additional CSS classes\n * @param props - Additional HTML div attributes including ARIA attributes\n */\nexport const Container: FC<ContainerProps> = ({\n children,\n roundedSize,\n padding,\n transparency,\n separator,\n className,\n border,\n borderColor,\n background,\n gap,\n ...props\n}) => (\n <div\n className={cn(\n containerVariants({\n roundedSize,\n transparency,\n padding,\n separator,\n border:\n typeof border === 'boolean' ? (border ? 'with' : 'none') : undefined,\n background,\n borderColor,\n gap,\n className,\n })\n )}\n {...props}\n >\n {children}\n </div>\n);\n"],"names":["cva","ContainerRoundedSize","ContainerTransparency","ContainerPadding","ContainerSeparator","ContainerBorderColor","ContainerBackground","ContainerGap","jsx","cn"],"mappings":"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"}