@intlayer/design-system 8.1.2 → 8.1.3

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 (828) hide show
  1. package/dist/esm/_virtual/_rolldown/runtime.mjs +1 -18
  2. package/dist/esm/components/Accordion/Accordion.mjs +1 -99
  3. package/dist/esm/components/Accordion/Accordion.mjs.map +1 -1
  4. package/dist/esm/components/Accordion/index.mjs +1 -3
  5. package/dist/esm/components/Avatar/index.mjs +1 -126
  6. package/dist/esm/components/Avatar/index.mjs.map +1 -1
  7. package/dist/esm/components/Badge/index.mjs +1 -150
  8. package/dist/esm/components/Badge/index.mjs.map +1 -1
  9. package/dist/esm/components/Breadcrumb/breadcrumb.content.mjs +1 -32
  10. package/dist/esm/components/Breadcrumb/breadcrumb.content.mjs.map +1 -1
  11. package/dist/esm/components/Breadcrumb/index.mjs +1 -232
  12. package/dist/esm/components/Breadcrumb/index.mjs.map +1 -1
  13. package/dist/esm/components/Browser/Browser.content.mjs +1 -179
  14. package/dist/esm/components/Browser/Browser.content.mjs.map +1 -1
  15. package/dist/esm/components/Browser/Browser.mjs +1 -249
  16. package/dist/esm/components/Browser/Browser.mjs.map +1 -1
  17. package/dist/esm/components/Browser/index.mjs +1 -3
  18. package/dist/esm/components/Button/Button.mjs +1 -287
  19. package/dist/esm/components/Button/Button.mjs.map +1 -1
  20. package/dist/esm/components/Button/index.mjs +1 -3
  21. package/dist/esm/components/Carousel/index.content.mjs +1 -79
  22. package/dist/esm/components/Carousel/index.content.mjs.map +1 -1
  23. package/dist/esm/components/Carousel/index.mjs +4 -270
  24. package/dist/esm/components/Carousel/index.mjs.map +1 -1
  25. package/dist/esm/components/ClickOutsideDiv/index.mjs +1 -42
  26. package/dist/esm/components/ClickOutsideDiv/index.mjs.map +1 -1
  27. package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs +1 -246
  28. package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs.map +1 -1
  29. package/dist/esm/components/CollapsibleTable/index.mjs +1 -3
  30. package/dist/esm/components/Command/index.mjs +1 -88
  31. package/dist/esm/components/Command/index.mjs.map +1 -1
  32. package/dist/esm/components/Container/index.mjs +1 -203
  33. package/dist/esm/components/Container/index.mjs.map +1 -1
  34. package/dist/esm/components/ContentEditor/ContentEditor.mjs +1 -107
  35. package/dist/esm/components/ContentEditor/ContentEditor.mjs.map +1 -1
  36. package/dist/esm/components/ContentEditor/ContentEditorInput.mjs +1 -110
  37. package/dist/esm/components/ContentEditor/ContentEditorInput.mjs.map +1 -1
  38. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +1 -113
  39. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs.map +1 -1
  40. package/dist/esm/components/ContentEditor/index.mjs +1 -5
  41. package/dist/esm/components/ContentSelector/ContentSelector.mjs +1 -81
  42. package/dist/esm/components/ContentSelector/ContentSelector.mjs.map +1 -1
  43. package/dist/esm/components/ContentSelector/index.mjs +1 -3
  44. package/dist/esm/components/CopyButton/CopyButton.content.mjs +1 -32
  45. package/dist/esm/components/CopyButton/CopyButton.content.mjs.map +1 -1
  46. package/dist/esm/components/CopyButton/index.mjs +1 -121
  47. package/dist/esm/components/CopyButton/index.mjs.map +1 -1
  48. package/dist/esm/components/CopyToClipboard/index.mjs +1 -101
  49. package/dist/esm/components/CopyToClipboard/index.mjs.map +1 -1
  50. package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs +1 -31
  51. package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs.map +1 -1
  52. package/dist/esm/components/DictionaryEditor/ItemLayout.mjs +1 -36
  53. package/dist/esm/components/DictionaryEditor/ItemLayout.mjs.map +1 -1
  54. package/dist/esm/components/DictionaryEditor/NodeWrapper/ArrayWrapper.mjs +1 -35
  55. package/dist/esm/components/DictionaryEditor/NodeWrapper/ArrayWrapper.mjs.map +1 -1
  56. package/dist/esm/components/DictionaryEditor/NodeWrapper/ConditionWrapper.mjs +1 -32
  57. package/dist/esm/components/DictionaryEditor/NodeWrapper/ConditionWrapper.mjs.map +1 -1
  58. package/dist/esm/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.mjs +1 -32
  59. package/dist/esm/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.mjs.map +1 -1
  60. package/dist/esm/components/DictionaryEditor/NodeWrapper/FileWrapper.mjs +1 -36
  61. package/dist/esm/components/DictionaryEditor/NodeWrapper/FileWrapper.mjs.map +1 -1
  62. package/dist/esm/components/DictionaryEditor/NodeWrapper/HtmlWrapper.mjs +1 -21
  63. package/dist/esm/components/DictionaryEditor/NodeWrapper/HtmlWrapper.mjs.map +1 -1
  64. package/dist/esm/components/DictionaryEditor/NodeWrapper/InsertionWrapper.mjs +1 -21
  65. package/dist/esm/components/DictionaryEditor/NodeWrapper/InsertionWrapper.mjs.map +1 -1
  66. package/dist/esm/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.mjs +1 -21
  67. package/dist/esm/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.mjs.map +1 -1
  68. package/dist/esm/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs +1 -39
  69. package/dist/esm/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs.map +1 -1
  70. package/dist/esm/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs +1 -35
  71. package/dist/esm/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs.map +1 -1
  72. package/dist/esm/components/DictionaryEditor/NodeWrapper/TranslationWrapper.mjs +1 -22
  73. package/dist/esm/components/DictionaryEditor/NodeWrapper/TranslationWrapper.mjs.map +1 -1
  74. package/dist/esm/components/DictionaryEditor/NodeWrapper/index.mjs +1 -88
  75. package/dist/esm/components/DictionaryEditor/NodeWrapper/index.mjs.map +1 -1
  76. package/dist/esm/components/DictionaryEditor/index.mjs +1 -3
  77. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs +1 -61
  78. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs.map +1 -1
  79. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +1 -661
  80. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
  81. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +1 -64
  82. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs.map +1 -1
  83. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs +1 -268
  84. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs.map +1 -1
  85. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.mjs +1 -98
  86. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.mjs.map +1 -1
  87. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs +1 -14
  88. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs.map +1 -1
  89. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +1 -328
  90. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
  91. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs +1 -575
  92. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs.map +1 -1
  93. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.mjs +1 -338
  94. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.mjs.map +1 -1
  95. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs +1 -29
  96. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs.map +1 -1
  97. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +1 -112
  98. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
  99. package/dist/esm/components/DictionaryFieldEditor/EnumKeyInput.mjs +1 -98
  100. package/dist/esm/components/DictionaryFieldEditor/EnumKeyInput.mjs.map +1 -1
  101. package/dist/esm/components/DictionaryFieldEditor/JSONEditor.mjs +1 -28
  102. package/dist/esm/components/DictionaryFieldEditor/JSONEditor.mjs.map +1 -1
  103. package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs +1 -22
  104. package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs.map +1 -1
  105. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +1 -172
  106. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
  107. package/dist/esm/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs +1 -268
  108. package/dist/esm/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs.map +1 -1
  109. package/dist/esm/components/DictionaryFieldEditor/NodeTypeSelector.mjs +1 -84
  110. package/dist/esm/components/DictionaryFieldEditor/NodeTypeSelector.mjs.map +1 -1
  111. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +1 -153
  112. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
  113. package/dist/esm/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs +1 -350
  114. package/dist/esm/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs.map +1 -1
  115. package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs +1 -19
  116. package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs.map +1 -1
  117. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs +1 -199
  118. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs.map +1 -1
  119. package/dist/esm/components/DictionaryFieldEditor/StructureView/structureView.content.mjs +1 -100
  120. package/dist/esm/components/DictionaryFieldEditor/StructureView/structureView.content.mjs.map +1 -1
  121. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs +1 -73
  122. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs.map +1 -1
  123. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.mjs +1 -27
  124. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.mjs.map +1 -1
  125. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/index.mjs +1 -4
  126. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.mjs +1 -78
  127. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.mjs.map +1 -1
  128. package/dist/esm/components/DictionaryFieldEditor/dictionaryFieldEditor.content.mjs +1 -58
  129. package/dist/esm/components/DictionaryFieldEditor/dictionaryFieldEditor.content.mjs.map +1 -1
  130. package/dist/esm/components/DictionaryFieldEditor/getIsEditableSection.mjs +1 -14
  131. package/dist/esm/components/DictionaryFieldEditor/getIsEditableSection.mjs.map +1 -1
  132. package/dist/esm/components/DictionaryFieldEditor/index.mjs +1 -10
  133. package/dist/esm/components/DictionaryFieldEditor/nodeTypeSelector.content.mjs +1 -318
  134. package/dist/esm/components/DictionaryFieldEditor/nodeTypeSelector.content.mjs.map +1 -1
  135. package/dist/esm/components/DropDown/index.mjs +1 -177
  136. package/dist/esm/components/DropDown/index.mjs.map +1 -1
  137. package/dist/esm/components/EditableField/EditableFieldInput.mjs +1 -68
  138. package/dist/esm/components/EditableField/EditableFieldInput.mjs.map +1 -1
  139. package/dist/esm/components/EditableField/EditableFieldLayout.mjs +1 -103
  140. package/dist/esm/components/EditableField/EditableFieldLayout.mjs.map +1 -1
  141. package/dist/esm/components/EditableField/EditableFieldTextArea.mjs +1 -77
  142. package/dist/esm/components/EditableField/EditableFieldTextArea.mjs.map +1 -1
  143. package/dist/esm/components/EditableField/index.mjs +1 -4
  144. package/dist/esm/components/ExpandCollapse/ExpandCollapse.mjs +1 -96
  145. package/dist/esm/components/ExpandCollapse/ExpandCollapse.mjs.map +1 -1
  146. package/dist/esm/components/ExpandCollapse/expandCollapse.content.mjs +1 -58
  147. package/dist/esm/components/ExpandCollapse/expandCollapse.content.mjs.map +1 -1
  148. package/dist/esm/components/ExpandCollapse/index.mjs +1 -3
  149. package/dist/esm/components/Flags/Flag.mjs +1 -326
  150. package/dist/esm/components/Flags/Flag.mjs.map +1 -1
  151. package/dist/esm/components/Flags/ae.mjs +1 -36
  152. package/dist/esm/components/Flags/ae.mjs.map +1 -1
  153. package/dist/esm/components/Flags/af.mjs +1 -96
  154. package/dist/esm/components/Flags/af.mjs.map +1 -1
  155. package/dist/esm/components/Flags/al.mjs +1 -37
  156. package/dist/esm/components/Flags/al.mjs.map +1 -1
  157. package/dist/esm/components/Flags/am.mjs +1 -33
  158. package/dist/esm/components/Flags/am.mjs.map +1 -1
  159. package/dist/esm/components/Flags/ar.mjs +1 -160
  160. package/dist/esm/components/Flags/ar.mjs.map +1 -1
  161. package/dist/esm/components/Flags/at.mjs +1 -30
  162. package/dist/esm/components/Flags/at.mjs.map +1 -1
  163. package/dist/esm/components/Flags/au.mjs +1 -42
  164. package/dist/esm/components/Flags/au.mjs.map +1 -1
  165. package/dist/esm/components/Flags/az.mjs +1 -46
  166. package/dist/esm/components/Flags/az.mjs.map +1 -1
  167. package/dist/esm/components/Flags/ba.mjs +1 -40
  168. package/dist/esm/components/Flags/ba.mjs.map +1 -1
  169. package/dist/esm/components/Flags/bd.mjs +1 -32
  170. package/dist/esm/components/Flags/bd.mjs.map +1 -1
  171. package/dist/esm/components/Flags/be.mjs +1 -36
  172. package/dist/esm/components/Flags/be.mjs.map +1 -1
  173. package/dist/esm/components/Flags/bg.mjs +1 -33
  174. package/dist/esm/components/Flags/bg.mjs.map +1 -1
  175. package/dist/esm/components/Flags/bh.mjs +1 -30
  176. package/dist/esm/components/Flags/bh.mjs.map +1 -1
  177. package/dist/esm/components/Flags/bn.mjs +1 -42
  178. package/dist/esm/components/Flags/bn.mjs.map +1 -1
  179. package/dist/esm/components/Flags/bo.mjs +1 -3030
  180. package/dist/esm/components/Flags/bo.mjs.map +1 -1
  181. package/dist/esm/components/Flags/br.mjs +1 -106
  182. package/dist/esm/components/Flags/br.mjs.map +1 -1
  183. package/dist/esm/components/Flags/bw.mjs +1 -33
  184. package/dist/esm/components/Flags/bw.mjs.map +1 -1
  185. package/dist/esm/components/Flags/by.mjs +1 -45
  186. package/dist/esm/components/Flags/by.mjs.map +1 -1
  187. package/dist/esm/components/Flags/bz.mjs +1 -338
  188. package/dist/esm/components/Flags/bz.mjs.map +1 -1
  189. package/dist/esm/components/Flags/ca.mjs +1 -30
  190. package/dist/esm/components/Flags/ca.mjs.map +1 -1
  191. package/dist/esm/components/Flags/ch.mjs +1 -30
  192. package/dist/esm/components/Flags/ch.mjs.map +1 -1
  193. package/dist/esm/components/Flags/cl.mjs +1 -43
  194. package/dist/esm/components/Flags/cl.mjs.map +1 -1
  195. package/dist/esm/components/Flags/cn.mjs +1 -57
  196. package/dist/esm/components/Flags/cn.mjs.map +1 -1
  197. package/dist/esm/components/Flags/co.mjs +1 -36
  198. package/dist/esm/components/Flags/co.mjs.map +1 -1
  199. package/dist/esm/components/Flags/cr.mjs +1 -36
  200. package/dist/esm/components/Flags/cr.mjs.map +1 -1
  201. package/dist/esm/components/Flags/cu.mjs +1 -43
  202. package/dist/esm/components/Flags/cu.mjs.map +1 -1
  203. package/dist/esm/components/Flags/cv.mjs +1 -43
  204. package/dist/esm/components/Flags/cv.mjs.map +1 -1
  205. package/dist/esm/components/Flags/cz.mjs +1 -33
  206. package/dist/esm/components/Flags/cz.mjs.map +1 -1
  207. package/dist/esm/components/Flags/de.mjs +1 -33
  208. package/dist/esm/components/Flags/de.mjs.map +1 -1
  209. package/dist/esm/components/Flags/dj.mjs +1 -43
  210. package/dist/esm/components/Flags/dj.mjs.map +1 -1
  211. package/dist/esm/components/Flags/dk.mjs +1 -33
  212. package/dist/esm/components/Flags/dk.mjs.map +1 -1
  213. package/dist/esm/components/Flags/do.mjs +1 -211
  214. package/dist/esm/components/Flags/do.mjs.map +1 -1
  215. package/dist/esm/components/Flags/dz.mjs +1 -33
  216. package/dist/esm/components/Flags/dz.mjs.map +1 -1
  217. package/dist/esm/components/Flags/ec.mjs +1 -622
  218. package/dist/esm/components/Flags/ec.mjs.map +1 -1
  219. package/dist/esm/components/Flags/ee.mjs +1 -33
  220. package/dist/esm/components/Flags/ee.mjs.map +1 -1
  221. package/dist/esm/components/Flags/eg.mjs +1 -112
  222. package/dist/esm/components/Flags/eg.mjs.map +1 -1
  223. package/dist/esm/components/Flags/es-ct.mjs +1 -32
  224. package/dist/esm/components/Flags/es-ct.mjs.map +1 -1
  225. package/dist/esm/components/Flags/es-ga.mjs +1 -792
  226. package/dist/esm/components/Flags/es-ga.mjs.map +1 -1
  227. package/dist/esm/components/Flags/es-pv.mjs +1 -33
  228. package/dist/esm/components/Flags/es-pv.mjs.map +1 -1
  229. package/dist/esm/components/Flags/es.mjs +1 -2226
  230. package/dist/esm/components/Flags/es.mjs.map +1 -1
  231. package/dist/esm/components/Flags/et.mjs +1 -50
  232. package/dist/esm/components/Flags/et.mjs.map +1 -1
  233. package/dist/esm/components/Flags/fi.mjs +1 -33
  234. package/dist/esm/components/Flags/fi.mjs.map +1 -1
  235. package/dist/esm/components/Flags/flags.mjs +1 -1363
  236. package/dist/esm/components/Flags/flags.mjs.map +1 -1
  237. package/dist/esm/components/Flags/fo.mjs +1 -41
  238. package/dist/esm/components/Flags/fo.mjs.map +1 -1
  239. package/dist/esm/components/Flags/fr.mjs +1 -33
  240. package/dist/esm/components/Flags/fr.mjs.map +1 -1
  241. package/dist/esm/components/Flags/gb-wls.mjs +1 -43
  242. package/dist/esm/components/Flags/gb-wls.mjs.map +1 -1
  243. package/dist/esm/components/Flags/gb.mjs +1 -39
  244. package/dist/esm/components/Flags/gb.mjs.map +1 -1
  245. package/dist/esm/components/Flags/ge.mjs +1 -37
  246. package/dist/esm/components/Flags/ge.mjs.map +1 -1
  247. package/dist/esm/components/Flags/gh.mjs +1 -36
  248. package/dist/esm/components/Flags/gh.mjs.map +1 -1
  249. package/dist/esm/components/Flags/gr.mjs +1 -66
  250. package/dist/esm/components/Flags/gr.mjs.map +1 -1
  251. package/dist/esm/components/Flags/gt.mjs +1 -461
  252. package/dist/esm/components/Flags/gt.mjs.map +1 -1
  253. package/dist/esm/components/Flags/gw.mjs +1 -67
  254. package/dist/esm/components/Flags/gw.mjs.map +1 -1
  255. package/dist/esm/components/Flags/hk.mjs +1 -44
  256. package/dist/esm/components/Flags/hk.mjs.map +1 -1
  257. package/dist/esm/components/Flags/hn.mjs +1 -83
  258. package/dist/esm/components/Flags/hn.mjs.map +1 -1
  259. package/dist/esm/components/Flags/hr.mjs +1 -94
  260. package/dist/esm/components/Flags/hr.mjs.map +1 -1
  261. package/dist/esm/components/Flags/hu.mjs +1 -33
  262. package/dist/esm/components/Flags/hu.mjs.map +1 -1
  263. package/dist/esm/components/Flags/id.mjs +1 -30
  264. package/dist/esm/components/Flags/id.mjs.map +1 -1
  265. package/dist/esm/components/Flags/ie.mjs +1 -36
  266. package/dist/esm/components/Flags/ie.mjs.map +1 -1
  267. package/dist/esm/components/Flags/il.mjs +1 -46
  268. package/dist/esm/components/Flags/il.mjs.map +1 -1
  269. package/dist/esm/components/Flags/in.mjs +1 -74
  270. package/dist/esm/components/Flags/in.mjs.map +1 -1
  271. package/dist/esm/components/Flags/index.mjs +1 -4
  272. package/dist/esm/components/Flags/iq.mjs +1 -40
  273. package/dist/esm/components/Flags/iq.mjs.map +1 -1
  274. package/dist/esm/components/Flags/ir.mjs +1 -112
  275. package/dist/esm/components/Flags/ir.mjs.map +1 -1
  276. package/dist/esm/components/Flags/is.mjs +1 -40
  277. package/dist/esm/components/Flags/is.mjs.map +1 -1
  278. package/dist/esm/components/Flags/it.mjs +1 -36
  279. package/dist/esm/components/Flags/it.mjs.map +1 -1
  280. package/dist/esm/components/Flags/jm.mjs +1 -36
  281. package/dist/esm/components/Flags/jm.mjs.map +1 -1
  282. package/dist/esm/components/Flags/jo.mjs +1 -48
  283. package/dist/esm/components/Flags/jo.mjs.map +1 -1
  284. package/dist/esm/components/Flags/jp.mjs +1 -41
  285. package/dist/esm/components/Flags/jp.mjs.map +1 -1
  286. package/dist/esm/components/Flags/ke.mjs +1 -91
  287. package/dist/esm/components/Flags/ke.mjs.map +1 -1
  288. package/dist/esm/components/Flags/kg.mjs +1 -49
  289. package/dist/esm/components/Flags/kg.mjs.map +1 -1
  290. package/dist/esm/components/Flags/kh.mjs +1 -76
  291. package/dist/esm/components/Flags/kh.mjs.map +1 -1
  292. package/dist/esm/components/Flags/km.mjs +1 -52
  293. package/dist/esm/components/Flags/km.mjs.map +1 -1
  294. package/dist/esm/components/Flags/kr.mjs +1 -64
  295. package/dist/esm/components/Flags/kr.mjs.map +1 -1
  296. package/dist/esm/components/Flags/kw.mjs +1 -44
  297. package/dist/esm/components/Flags/kw.mjs.map +1 -1
  298. package/dist/esm/components/Flags/kz.mjs +1 -94
  299. package/dist/esm/components/Flags/kz.mjs.map +1 -1
  300. package/dist/esm/components/Flags/la.mjs +1 -39
  301. package/dist/esm/components/Flags/la.mjs.map +1 -1
  302. package/dist/esm/components/Flags/lb.mjs +1 -50
  303. package/dist/esm/components/Flags/lb.mjs.map +1 -1
  304. package/dist/esm/components/Flags/li.mjs +1 -136
  305. package/dist/esm/components/Flags/li.mjs.map +1 -1
  306. package/dist/esm/components/Flags/lk.mjs +1 -73
  307. package/dist/esm/components/Flags/lk.mjs.map +1 -1
  308. package/dist/esm/components/Flags/lt.mjs +1 -46
  309. package/dist/esm/components/Flags/lt.mjs.map +1 -1
  310. package/dist/esm/components/Flags/lu.mjs +1 -33
  311. package/dist/esm/components/Flags/lu.mjs.map +1 -1
  312. package/dist/esm/components/Flags/lv.mjs +1 -30
  313. package/dist/esm/components/Flags/lv.mjs.map +1 -1
  314. package/dist/esm/components/Flags/ly.mjs +1 -39
  315. package/dist/esm/components/Flags/ly.mjs.map +1 -1
  316. package/dist/esm/components/Flags/ma.mjs +1 -32
  317. package/dist/esm/components/Flags/ma.mjs.map +1 -1
  318. package/dist/esm/components/Flags/mc.mjs +1 -33
  319. package/dist/esm/components/Flags/mc.mjs.map +1 -1
  320. package/dist/esm/components/Flags/md.mjs +1 -317
  321. package/dist/esm/components/Flags/md.mjs.map +1 -1
  322. package/dist/esm/components/Flags/mk.mjs +1 -37
  323. package/dist/esm/components/Flags/mk.mjs.map +1 -1
  324. package/dist/esm/components/Flags/mm.mjs +1 -58
  325. package/dist/esm/components/Flags/mm.mjs.map +1 -1
  326. package/dist/esm/components/Flags/mn.mjs +1 -59
  327. package/dist/esm/components/Flags/mn.mjs.map +1 -1
  328. package/dist/esm/components/Flags/mo.mjs +1 -42
  329. package/dist/esm/components/Flags/mo.mjs.map +1 -1
  330. package/dist/esm/components/Flags/mr.mjs +1 -37
  331. package/dist/esm/components/Flags/mr.mjs.map +1 -1
  332. package/dist/esm/components/Flags/mt.mjs +1 -153
  333. package/dist/esm/components/Flags/mt.mjs.map +1 -1
  334. package/dist/esm/components/Flags/mv.mjs +1 -40
  335. package/dist/esm/components/Flags/mv.mjs.map +1 -1
  336. package/dist/esm/components/Flags/mx.mjs +1 -1365
  337. package/dist/esm/components/Flags/mx.mjs.map +1 -1
  338. package/dist/esm/components/Flags/my.mjs +1 -78
  339. package/dist/esm/components/Flags/my.mjs.map +1 -1
  340. package/dist/esm/components/Flags/mz.mjs +1 -92
  341. package/dist/esm/components/Flags/mz.mjs.map +1 -1
  342. package/dist/esm/components/Flags/ng.mjs +1 -33
  343. package/dist/esm/components/Flags/ng.mjs.map +1 -1
  344. package/dist/esm/components/Flags/ni.mjs +1 -451
  345. package/dist/esm/components/Flags/ni.mjs.map +1 -1
  346. package/dist/esm/components/Flags/nl.mjs +1 -33
  347. package/dist/esm/components/Flags/nl.mjs.map +1 -1
  348. package/dist/esm/components/Flags/no.mjs +1 -39
  349. package/dist/esm/components/Flags/no.mjs.map +1 -1
  350. package/dist/esm/components/Flags/np.mjs +1 -38
  351. package/dist/esm/components/Flags/np.mjs.map +1 -1
  352. package/dist/esm/components/Flags/nz.mjs +1 -104
  353. package/dist/esm/components/Flags/nz.mjs.map +1 -1
  354. package/dist/esm/components/Flags/om.mjs +1 -539
  355. package/dist/esm/components/Flags/om.mjs.map +1 -1
  356. package/dist/esm/components/Flags/pa.mjs +1 -46
  357. package/dist/esm/components/Flags/pa.mjs.map +1 -1
  358. package/dist/esm/components/Flags/pe.mjs +1 -30
  359. package/dist/esm/components/Flags/pe.mjs.map +1 -1
  360. package/dist/esm/components/Flags/ph.mjs +1 -36
  361. package/dist/esm/components/Flags/ph.mjs.map +1 -1
  362. package/dist/esm/components/Flags/pk.mjs +1 -38
  363. package/dist/esm/components/Flags/pk.mjs.map +1 -1
  364. package/dist/esm/components/Flags/pl.mjs +1 -30
  365. package/dist/esm/components/Flags/pl.mjs.map +1 -1
  366. package/dist/esm/components/Flags/pr.mjs +1 -43
  367. package/dist/esm/components/Flags/pr.mjs.map +1 -1
  368. package/dist/esm/components/Flags/ps.mjs +1 -45
  369. package/dist/esm/components/Flags/ps.mjs.map +1 -1
  370. package/dist/esm/components/Flags/pt.mjs +1 -152
  371. package/dist/esm/components/Flags/pt.mjs.map +1 -1
  372. package/dist/esm/components/Flags/py.mjs +1 -61
  373. package/dist/esm/components/Flags/py.mjs.map +1 -1
  374. package/dist/esm/components/Flags/qa.mjs +1 -30
  375. package/dist/esm/components/Flags/qa.mjs.map +1 -1
  376. package/dist/esm/components/Flags/ro.mjs +1 -36
  377. package/dist/esm/components/Flags/ro.mjs.map +1 -1
  378. package/dist/esm/components/Flags/rs.mjs +1 -820
  379. package/dist/esm/components/Flags/rs.mjs.map +1 -1
  380. package/dist/esm/components/Flags/ru.mjs +1 -33
  381. package/dist/esm/components/Flags/ru.mjs.map +1 -1
  382. package/dist/esm/components/Flags/sa.mjs +1 -79
  383. package/dist/esm/components/Flags/sa.mjs.map +1 -1
  384. package/dist/esm/components/Flags/sd.mjs +1 -44
  385. package/dist/esm/components/Flags/sd.mjs.map +1 -1
  386. package/dist/esm/components/Flags/se.mjs +1 -30
  387. package/dist/esm/components/Flags/se.mjs.map +1 -1
  388. package/dist/esm/components/Flags/sg.mjs +1 -42
  389. package/dist/esm/components/Flags/sg.mjs.map +1 -1
  390. package/dist/esm/components/Flags/si.mjs +1 -59
  391. package/dist/esm/components/Flags/si.mjs.map +1 -1
  392. package/dist/esm/components/Flags/sk.mjs +1 -45
  393. package/dist/esm/components/Flags/sk.mjs.map +1 -1
  394. package/dist/esm/components/Flags/so.mjs +1 -37
  395. package/dist/esm/components/Flags/so.mjs.map +1 -1
  396. package/dist/esm/components/Flags/st.mjs +1 -73
  397. package/dist/esm/components/Flags/st.mjs.map +1 -1
  398. package/dist/esm/components/Flags/sv.mjs +1 -1735
  399. package/dist/esm/components/Flags/sv.mjs.map +1 -1
  400. package/dist/esm/components/Flags/sy.mjs +1 -36
  401. package/dist/esm/components/Flags/sy.mjs.map +1 -1
  402. package/dist/esm/components/Flags/td.mjs +1 -33
  403. package/dist/esm/components/Flags/td.mjs.map +1 -1
  404. package/dist/esm/components/Flags/th.mjs +1 -33
  405. package/dist/esm/components/Flags/th.mjs.map +1 -1
  406. package/dist/esm/components/Flags/tl.mjs +1 -43
  407. package/dist/esm/components/Flags/tl.mjs.map +1 -1
  408. package/dist/esm/components/Flags/tn.mjs +1 -30
  409. package/dist/esm/components/Flags/tn.mjs.map +1 -1
  410. package/dist/esm/components/Flags/tr.mjs +1 -36
  411. package/dist/esm/components/Flags/tr.mjs.map +1 -1
  412. package/dist/esm/components/Flags/tt.mjs +1 -35
  413. package/dist/esm/components/Flags/tt.mjs.map +1 -1
  414. package/dist/esm/components/Flags/tw.mjs +1 -40
  415. package/dist/esm/components/Flags/tw.mjs.map +1 -1
  416. package/dist/esm/components/Flags/tz.mjs +1 -44
  417. package/dist/esm/components/Flags/tz.mjs.map +1 -1
  418. package/dist/esm/components/Flags/ua.mjs +1 -33
  419. package/dist/esm/components/Flags/ua.mjs.map +1 -1
  420. package/dist/esm/components/Flags/ug.mjs +1 -145
  421. package/dist/esm/components/Flags/ug.mjs.map +1 -1
  422. package/dist/esm/components/Flags/us.mjs +1 -45
  423. package/dist/esm/components/Flags/us.mjs.map +1 -1
  424. package/dist/esm/components/Flags/uy.mjs +1 -63
  425. package/dist/esm/components/Flags/uy.mjs.map +1 -1
  426. package/dist/esm/components/Flags/uz.mjs +1 -109
  427. package/dist/esm/components/Flags/uz.mjs.map +1 -1
  428. package/dist/esm/components/Flags/ve.mjs +1 -84
  429. package/dist/esm/components/Flags/ve.mjs.map +1 -1
  430. package/dist/esm/components/Flags/vn.mjs +1 -37
  431. package/dist/esm/components/Flags/vn.mjs.map +1 -1
  432. package/dist/esm/components/Flags/xx.mjs +1 -35
  433. package/dist/esm/components/Flags/xx.mjs.map +1 -1
  434. package/dist/esm/components/Flags/ye.mjs +1 -36
  435. package/dist/esm/components/Flags/ye.mjs.map +1 -1
  436. package/dist/esm/components/Flags/za.mjs +1 -51
  437. package/dist/esm/components/Flags/za.mjs.map +1 -1
  438. package/dist/esm/components/Flags/zw.mjs +1 -70
  439. package/dist/esm/components/Flags/zw.mjs.map +1 -1
  440. package/dist/esm/components/Footer/index.mjs +1 -123
  441. package/dist/esm/components/Footer/index.mjs.map +1 -1
  442. package/dist/esm/components/Form/Form.mjs +1 -65
  443. package/dist/esm/components/Form/Form.mjs.map +1 -1
  444. package/dist/esm/components/Form/FormBase.mjs +1 -50
  445. package/dist/esm/components/Form/FormBase.mjs.map +1 -1
  446. package/dist/esm/components/Form/FormControl.mjs +1 -19
  447. package/dist/esm/components/Form/FormControl.mjs.map +1 -1
  448. package/dist/esm/components/Form/FormDescription.mjs +1 -17
  449. package/dist/esm/components/Form/FormDescription.mjs.map +1 -1
  450. package/dist/esm/components/Form/FormField.mjs +1 -34
  451. package/dist/esm/components/Form/FormField.mjs.map +1 -1
  452. package/dist/esm/components/Form/FormItem.mjs +1 -23
  453. package/dist/esm/components/Form/FormItem.mjs.map +1 -1
  454. package/dist/esm/components/Form/FormLabel.mjs +1 -19
  455. package/dist/esm/components/Form/FormLabel.mjs.map +1 -1
  456. package/dist/esm/components/Form/FormMessage.mjs +1 -21
  457. package/dist/esm/components/Form/FormMessage.mjs.map +1 -1
  458. package/dist/esm/components/Form/elements/AutoSizeTextAreaElement.mjs +1 -14
  459. package/dist/esm/components/Form/elements/AutoSizeTextAreaElement.mjs.map +1 -1
  460. package/dist/esm/components/Form/elements/CheckboxElement.mjs +1 -25
  461. package/dist/esm/components/Form/elements/CheckboxElement.mjs.map +1 -1
  462. package/dist/esm/components/Form/elements/EditableFieldInputElement.mjs +1 -16
  463. package/dist/esm/components/Form/elements/EditableFieldInputElement.mjs.map +1 -1
  464. package/dist/esm/components/Form/elements/EditableFieldTextAreaElement.mjs +1 -16
  465. package/dist/esm/components/Form/elements/EditableFieldTextAreaElement.mjs.map +1 -1
  466. package/dist/esm/components/Form/elements/FormElement.mjs +1 -58
  467. package/dist/esm/components/Form/elements/FormElement.mjs.map +1 -1
  468. package/dist/esm/components/Form/elements/FormElementWrapper.mjs +1 -34
  469. package/dist/esm/components/Form/elements/FormElementWrapper.mjs.map +1 -1
  470. package/dist/esm/components/Form/elements/InputElement.mjs +1 -16
  471. package/dist/esm/components/Form/elements/InputElement.mjs.map +1 -1
  472. package/dist/esm/components/Form/elements/InputPasswordElement.mjs +1 -19
  473. package/dist/esm/components/Form/elements/InputPasswordElement.mjs.map +1 -1
  474. package/dist/esm/components/Form/elements/MultiselectElement.mjs +1 -49
  475. package/dist/esm/components/Form/elements/MultiselectElement.mjs.map +1 -1
  476. package/dist/esm/components/Form/elements/OTPElement.mjs +1 -108
  477. package/dist/esm/components/Form/elements/OTPElement.mjs.map +1 -1
  478. package/dist/esm/components/Form/elements/SearchInputElement.mjs +1 -16
  479. package/dist/esm/components/Form/elements/SearchInputElement.mjs.map +1 -1
  480. package/dist/esm/components/Form/elements/SelectElement.mjs +1 -49
  481. package/dist/esm/components/Form/elements/SelectElement.mjs.map +1 -1
  482. package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs +1 -48
  483. package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs.map +1 -1
  484. package/dist/esm/components/Form/elements/TextAreaElement.mjs +1 -16
  485. package/dist/esm/components/Form/elements/TextAreaElement.mjs.map +1 -1
  486. package/dist/esm/components/Form/elements/index.mjs +1 -10
  487. package/dist/esm/components/Form/index.mjs +1 -5
  488. package/dist/esm/components/Form/layout/FormItemLayout.mjs +1 -24
  489. package/dist/esm/components/Form/layout/FormItemLayout.mjs.map +1 -1
  490. package/dist/esm/components/Form/layout/FormLabelLayout.mjs +1 -20
  491. package/dist/esm/components/Form/layout/FormLabelLayout.mjs.map +1 -1
  492. package/dist/esm/components/Form/layout/RequiredStar.mjs +1 -10
  493. package/dist/esm/components/Form/layout/RequiredStar.mjs.map +1 -1
  494. package/dist/esm/components/Form/layout/index.mjs +1 -4
  495. package/dist/esm/components/HTMLRender/HTMLRender.mjs +1 -65
  496. package/dist/esm/components/HTMLRender/HTMLRender.mjs.map +1 -1
  497. package/dist/esm/components/HTMLRender/index.mjs +1 -3
  498. package/dist/esm/components/Headers/index.mjs +1 -216
  499. package/dist/esm/components/Headers/index.mjs.map +1 -1
  500. package/dist/esm/components/HeightResizer/index.mjs +1 -163
  501. package/dist/esm/components/HeightResizer/index.mjs.map +1 -1
  502. package/dist/esm/components/HideShow/index.mjs +1 -70
  503. package/dist/esm/components/HideShow/index.mjs.map +1 -1
  504. package/dist/esm/components/IDE/Code.mjs +2 -59
  505. package/dist/esm/components/IDE/Code.mjs.map +1 -1
  506. package/dist/esm/components/IDE/CodeBlockClient.mjs +2 -31
  507. package/dist/esm/components/IDE/CodeBlockClient.mjs.map +1 -1
  508. package/dist/esm/components/IDE/CodeBlockServer.mjs +2 -45
  509. package/dist/esm/components/IDE/CodeBlockServer.mjs.map +1 -1
  510. package/dist/esm/components/IDE/CodeBlockShiki.mjs +1 -109
  511. package/dist/esm/components/IDE/CodeBlockShiki.mjs.map +1 -1
  512. package/dist/esm/components/IDE/CodeConditionalRenderer.mjs +1 -20
  513. package/dist/esm/components/IDE/CodeConditionalRenderer.mjs.map +1 -1
  514. package/dist/esm/components/IDE/CodeContext.mjs +1 -44
  515. package/dist/esm/components/IDE/CodeContext.mjs.map +1 -1
  516. package/dist/esm/components/IDE/CodeFormatSelector.mjs +1 -40
  517. package/dist/esm/components/IDE/CodeFormatSelector.mjs.map +1 -1
  518. package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs +1 -41
  519. package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs.map +1 -1
  520. package/dist/esm/components/IDE/CopyCode.mjs +1 -27
  521. package/dist/esm/components/IDE/CopyCode.mjs.map +1 -1
  522. package/dist/esm/components/IDE/FileList.mjs +1 -34
  523. package/dist/esm/components/IDE/FileList.mjs.map +1 -1
  524. package/dist/esm/components/IDE/FileTree.mjs +1 -64
  525. package/dist/esm/components/IDE/FileTree.mjs.map +1 -1
  526. package/dist/esm/components/IDE/IDE.mjs +1 -87
  527. package/dist/esm/components/IDE/IDE.mjs.map +1 -1
  528. package/dist/esm/components/IDE/MarkDownRender.mjs +1 -22
  529. package/dist/esm/components/IDE/MarkDownRender.mjs.map +1 -1
  530. package/dist/esm/components/IDE/MonacoCode.mjs +2 -103
  531. package/dist/esm/components/IDE/MonacoCode.mjs.map +1 -1
  532. package/dist/esm/components/IDE/PackageManagerSelector.mjs +1 -42
  533. package/dist/esm/components/IDE/PackageManagerSelector.mjs.map +1 -1
  534. package/dist/esm/components/IDE/code.content.mjs +1 -58
  535. package/dist/esm/components/IDE/code.content.mjs.map +1 -1
  536. package/dist/esm/components/IDE/copyCode.content.mjs +1 -58
  537. package/dist/esm/components/IDE/copyCode.content.mjs.map +1 -1
  538. package/dist/esm/components/IDE/createFileTree.mjs +1 -31
  539. package/dist/esm/components/IDE/createFileTree.mjs.map +1 -1
  540. package/dist/esm/components/IDE/index.mjs +1 -6
  541. package/dist/esm/components/IDE/selectors.content.mjs +1 -144
  542. package/dist/esm/components/IDE/selectors.content.mjs.map +1 -1
  543. package/dist/esm/components/InformationTag/index.mjs +1 -80
  544. package/dist/esm/components/InformationTag/index.mjs.map +1 -1
  545. package/dist/esm/components/Input/Checkbox.mjs +1 -97
  546. package/dist/esm/components/Input/Checkbox.mjs.map +1 -1
  547. package/dist/esm/components/Input/Input.mjs +1 -64
  548. package/dist/esm/components/Input/Input.mjs.map +1 -1
  549. package/dist/esm/components/Input/InputPassword.mjs +1 -38
  550. package/dist/esm/components/Input/InputPassword.mjs.map +1 -1
  551. package/dist/esm/components/Input/OTPInput.mjs +2 -474
  552. package/dist/esm/components/Input/OTPInput.mjs.map +1 -1
  553. package/dist/esm/components/Input/SearchInput.mjs +1 -17
  554. package/dist/esm/components/Input/SearchInput.mjs.map +1 -1
  555. package/dist/esm/components/Input/index.mjs +1 -7
  556. package/dist/esm/components/KeyboardScreenAdapter/index.mjs +1 -119
  557. package/dist/esm/components/KeyboardScreenAdapter/index.mjs.map +1 -1
  558. package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs +1 -230
  559. package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs.map +1 -1
  560. package/dist/esm/components/KeyboardShortcut/index.mjs +1 -3
  561. package/dist/esm/components/Label/index.mjs +1 -53
  562. package/dist/esm/components/Label/index.mjs.map +1 -1
  563. package/dist/esm/components/LanguageBackground/index.mjs +1 -87
  564. package/dist/esm/components/LanguageBackground/index.mjs.map +1 -1
  565. package/dist/esm/components/Link/Link.mjs +1 -239
  566. package/dist/esm/components/Link/Link.mjs.map +1 -1
  567. package/dist/esm/components/Link/index.mjs +1 -3
  568. package/dist/esm/components/Loader/index.content.mjs +1 -32
  569. package/dist/esm/components/Loader/index.content.mjs.map +1 -1
  570. package/dist/esm/components/Loader/index.mjs +1 -111
  571. package/dist/esm/components/Loader/index.mjs.map +1 -1
  572. package/dist/esm/components/Loader/spinner.mjs +1 -121
  573. package/dist/esm/components/Loader/spinner.mjs.map +1 -1
  574. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +1 -183
  575. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs.map +1 -1
  576. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs +1 -29
  577. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs.map +1 -1
  578. package/dist/esm/components/LocaleSwitcherContentDropDown/index.mjs +1 -4
  579. package/dist/esm/components/LocaleSwitcherContentDropDown/localeSwitcher.content.mjs +1 -182
  580. package/dist/esm/components/LocaleSwitcherContentDropDown/localeSwitcher.content.mjs.map +1 -1
  581. package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs +1 -134
  582. package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs.map +1 -1
  583. package/dist/esm/components/LocaleSwitcherDropDown/index.mjs +1 -3
  584. package/dist/esm/components/LocaleSwitcherDropDown/localeSwitcher.content.mjs +1 -140
  585. package/dist/esm/components/LocaleSwitcherDropDown/localeSwitcher.content.mjs.map +1 -1
  586. package/dist/esm/components/Logo/Logo.mjs +1 -34
  587. package/dist/esm/components/Logo/Logo.mjs.map +1 -1
  588. package/dist/esm/components/Logo/LogoTextOnly.mjs +1 -28
  589. package/dist/esm/components/Logo/LogoTextOnly.mjs.map +1 -1
  590. package/dist/esm/components/Logo/LogoWithText.mjs +1 -34
  591. package/dist/esm/components/Logo/LogoWithText.mjs.map +1 -1
  592. package/dist/esm/components/Logo/LogoWithTextBelow.mjs +1 -34
  593. package/dist/esm/components/Logo/LogoWithTextBelow.mjs.map +1 -1
  594. package/dist/esm/components/Logo/index.mjs +1 -6
  595. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs +1 -167
  596. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
  597. package/dist/esm/components/MarkDownRender/index.mjs +1 -3
  598. package/dist/esm/components/MaxHeightSmoother/index.mjs +1 -163
  599. package/dist/esm/components/MaxHeightSmoother/index.mjs.map +1 -1
  600. package/dist/esm/components/MaxWidthSmoother/index.mjs +1 -18
  601. package/dist/esm/components/MaxWidthSmoother/index.mjs.map +1 -1
  602. package/dist/esm/components/Modal/Modal.mjs +1 -201
  603. package/dist/esm/components/Modal/Modal.mjs.map +1 -1
  604. package/dist/esm/components/Modal/index.mjs +1 -3
  605. package/dist/esm/components/Navbar/Burger.mjs +1 -76
  606. package/dist/esm/components/Navbar/Burger.mjs.map +1 -1
  607. package/dist/esm/components/Navbar/DesktopNavbar.mjs +1 -96
  608. package/dist/esm/components/Navbar/DesktopNavbar.mjs.map +1 -1
  609. package/dist/esm/components/Navbar/MobileNavbar.mjs +1 -169
  610. package/dist/esm/components/Navbar/MobileNavbar.mjs.map +1 -1
  611. package/dist/esm/components/Navbar/index.mjs +1 -86
  612. package/dist/esm/components/Navbar/index.mjs.map +1 -1
  613. package/dist/esm/components/Navbar/useNavigation.mjs +1 -152
  614. package/dist/esm/components/Navbar/useNavigation.mjs.map +1 -1
  615. package/dist/esm/components/Pagination/NumberItemsSelector.mjs +1 -46
  616. package/dist/esm/components/Pagination/NumberItemsSelector.mjs.map +1 -1
  617. package/dist/esm/components/Pagination/Pagination.mjs +1 -173
  618. package/dist/esm/components/Pagination/Pagination.mjs.map +1 -1
  619. package/dist/esm/components/Pagination/ShowingResultsNumberItems.mjs +1 -27
  620. package/dist/esm/components/Pagination/ShowingResultsNumberItems.mjs.map +1 -1
  621. package/dist/esm/components/Pagination/index.mjs +1 -5
  622. package/dist/esm/components/Pagination/pagination.content.mjs +1 -114
  623. package/dist/esm/components/Pagination/pagination.content.mjs.map +1 -1
  624. package/dist/esm/components/Pattern/DotPattern.mjs +1 -121
  625. package/dist/esm/components/Pattern/DotPattern.mjs.map +1 -1
  626. package/dist/esm/components/Pattern/GridPattern.mjs +1 -156
  627. package/dist/esm/components/Pattern/GridPattern.mjs.map +1 -1
  628. package/dist/esm/components/Pattern/SpotLight.mjs +1 -168
  629. package/dist/esm/components/Pattern/SpotLight.mjs.map +1 -1
  630. package/dist/esm/components/Pattern/index.mjs +1 -5
  631. package/dist/esm/components/Popover/dynamic.mjs +1 -128
  632. package/dist/esm/components/Popover/dynamic.mjs.map +1 -1
  633. package/dist/esm/components/Popover/index.mjs +1 -4
  634. package/dist/esm/components/Popover/static.mjs +1 -192
  635. package/dist/esm/components/Popover/static.mjs.map +1 -1
  636. package/dist/esm/components/PressableSpan/PressableSpan.mjs +1 -158
  637. package/dist/esm/components/PressableSpan/PressableSpan.mjs.map +1 -1
  638. package/dist/esm/components/PressableSpan/index.mjs +1 -3
  639. package/dist/esm/components/RightDrawer/RightDrawer.mjs +1 -179
  640. package/dist/esm/components/RightDrawer/RightDrawer.mjs.map +1 -1
  641. package/dist/esm/components/RightDrawer/index.mjs +1 -4
  642. package/dist/esm/components/RightDrawer/isElementAtTopAndNotCovered.mjs +1 -60
  643. package/dist/esm/components/RightDrawer/isElementAtTopAndNotCovered.mjs.map +1 -1
  644. package/dist/esm/components/RightDrawer/rightDrawer.content.mjs +1 -59
  645. package/dist/esm/components/RightDrawer/rightDrawer.content.mjs.map +1 -1
  646. package/dist/esm/components/RightDrawer/useRightDrawer.mjs +1 -64
  647. package/dist/esm/components/RightDrawer/useRightDrawer.mjs.map +1 -1
  648. package/dist/esm/components/Select/Multiselect.mjs +1 -353
  649. package/dist/esm/components/Select/Multiselect.mjs.map +1 -1
  650. package/dist/esm/components/Select/Select.mjs +1 -276
  651. package/dist/esm/components/Select/Select.mjs.map +1 -1
  652. package/dist/esm/components/Select/index.mjs +1 -4
  653. package/dist/esm/components/SocialNetworks/DiscordLogo.mjs +1 -20
  654. package/dist/esm/components/SocialNetworks/DiscordLogo.mjs.map +1 -1
  655. package/dist/esm/components/SocialNetworks/FacebookLogo.mjs +1 -17
  656. package/dist/esm/components/SocialNetworks/FacebookLogo.mjs.map +1 -1
  657. package/dist/esm/components/SocialNetworks/InstagramLogo.mjs +1 -29
  658. package/dist/esm/components/SocialNetworks/InstagramLogo.mjs.map +1 -1
  659. package/dist/esm/components/SocialNetworks/LinkedInLogo.mjs +1 -32
  660. package/dist/esm/components/SocialNetworks/LinkedInLogo.mjs.map +1 -1
  661. package/dist/esm/components/SocialNetworks/ProductHuntLogo.mjs +1 -15
  662. package/dist/esm/components/SocialNetworks/ProductHuntLogo.mjs.map +1 -1
  663. package/dist/esm/components/SocialNetworks/TiktokLogo.mjs +1 -17
  664. package/dist/esm/components/SocialNetworks/TiktokLogo.mjs.map +1 -1
  665. package/dist/esm/components/SocialNetworks/XLogo.mjs +1 -17
  666. package/dist/esm/components/SocialNetworks/XLogo.mjs.map +1 -1
  667. package/dist/esm/components/SocialNetworks/YoutubeLogo.mjs +1 -17
  668. package/dist/esm/components/SocialNetworks/YoutubeLogo.mjs.map +1 -1
  669. package/dist/esm/components/SocialNetworks/index.mjs +1 -64
  670. package/dist/esm/components/SocialNetworks/index.mjs.map +1 -1
  671. package/dist/esm/components/SwitchSelector/index.mjs +1 -145
  672. package/dist/esm/components/SwitchSelector/index.mjs.map +1 -1
  673. package/dist/esm/components/Tab/Tab.mjs +1 -148
  674. package/dist/esm/components/Tab/Tab.mjs.map +1 -1
  675. package/dist/esm/components/Tab/TabContext.mjs +1 -33
  676. package/dist/esm/components/Tab/TabContext.mjs.map +1 -1
  677. package/dist/esm/components/Tab/index.mjs +1 -3
  678. package/dist/esm/components/TabSelector/TabSelector.mjs +1 -111
  679. package/dist/esm/components/TabSelector/TabSelector.mjs.map +1 -1
  680. package/dist/esm/components/TabSelector/index.mjs +1 -3
  681. package/dist/esm/components/Table/Table.mjs +1 -195
  682. package/dist/esm/components/Table/Table.mjs.map +1 -1
  683. package/dist/esm/components/Table/index.mjs +1 -3
  684. package/dist/esm/components/Table/table.content.mjs +1 -36
  685. package/dist/esm/components/Table/table.content.mjs.map +1 -1
  686. package/dist/esm/components/Tag/index.mjs +1 -316
  687. package/dist/esm/components/Tag/index.mjs.map +1 -1
  688. package/dist/esm/components/Terminal/Terminal.mjs +3 -160
  689. package/dist/esm/components/Terminal/Terminal.mjs.map +1 -1
  690. package/dist/esm/components/Terminal/index.mjs +1 -3
  691. package/dist/esm/components/Terminal/terminal.content.mjs +1 -60
  692. package/dist/esm/components/Terminal/terminal.content.mjs.map +1 -1
  693. package/dist/esm/components/TextArea/AutoSizeTextArea.mjs +1 -106
  694. package/dist/esm/components/TextArea/AutoSizeTextArea.mjs.map +1 -1
  695. package/dist/esm/components/TextArea/AutocompleteTextArea.mjs +1 -257
  696. package/dist/esm/components/TextArea/AutocompleteTextArea.mjs.map +1 -1
  697. package/dist/esm/components/TextArea/TextArea.mjs +1 -58
  698. package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
  699. package/dist/esm/components/TextArea/index.mjs +1 -5
  700. package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs +1 -79
  701. package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs.map +1 -1
  702. package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs +1 -53
  703. package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs.map +1 -1
  704. package/dist/esm/components/ThemeSwitcherDropDown/index.mjs +1 -5
  705. package/dist/esm/components/ThemeSwitcherDropDown/types.mjs +1 -10
  706. package/dist/esm/components/ThemeSwitcherDropDown/types.mjs.map +1 -1
  707. package/dist/esm/components/Toaster/Toast.mjs +1 -187
  708. package/dist/esm/components/Toaster/Toast.mjs.map +1 -1
  709. package/dist/esm/components/Toaster/Toaster.mjs +1 -66
  710. package/dist/esm/components/Toaster/Toaster.mjs.map +1 -1
  711. package/dist/esm/components/Toaster/index.mjs +1 -5
  712. package/dist/esm/components/Toaster/useToast.mjs +1 -308
  713. package/dist/esm/components/Toaster/useToast.mjs.map +1 -1
  714. package/dist/esm/components/WithResizer/index.mjs +1 -200
  715. package/dist/esm/components/WithResizer/index.mjs.map +1 -1
  716. package/dist/esm/components/index.mjs +1 -105
  717. package/dist/esm/hooks/index.mjs +1 -22
  718. package/dist/esm/hooks/reactQuery.mjs +1 -915
  719. package/dist/esm/hooks/reactQuery.mjs.map +1 -1
  720. package/dist/esm/hooks/useAuth/index.mjs +1 -5
  721. package/dist/esm/hooks/useAuth/useAuth.mjs +1 -21
  722. package/dist/esm/hooks/useAuth/useAuth.mjs.map +1 -1
  723. package/dist/esm/hooks/useAuth/useOAuth2.mjs +1 -28
  724. package/dist/esm/hooks/useAuth/useOAuth2.mjs.map +1 -1
  725. package/dist/esm/hooks/useAuth/useSession.mjs +1 -42
  726. package/dist/esm/hooks/useAuth/useSession.mjs.map +1 -1
  727. package/dist/esm/hooks/useDevice.mjs +1 -71
  728. package/dist/esm/hooks/useDevice.mjs.map +1 -1
  729. package/dist/esm/hooks/useGetElementById.mjs +1 -15
  730. package/dist/esm/hooks/useGetElementById.mjs.map +1 -1
  731. package/dist/esm/hooks/useGetElementOrWindow.mjs +1 -15
  732. package/dist/esm/hooks/useGetElementOrWindow.mjs.map +1 -1
  733. package/dist/esm/hooks/useHorizontalSwipe.mjs +1 -123
  734. package/dist/esm/hooks/useHorizontalSwipe.mjs.map +1 -1
  735. package/dist/esm/hooks/useIntlayerAPI.mjs +1 -21
  736. package/dist/esm/hooks/useIntlayerAPI.mjs.map +1 -1
  737. package/dist/esm/hooks/useIsDarkMode.mjs +1 -15
  738. package/dist/esm/hooks/useIsDarkMode.mjs.map +1 -1
  739. package/dist/esm/hooks/useIsMounted.mjs +1 -15
  740. package/dist/esm/hooks/useIsMounted.mjs.map +1 -1
  741. package/dist/esm/hooks/useItemSelector.mjs +1 -146
  742. package/dist/esm/hooks/useItemSelector.mjs.map +1 -1
  743. package/dist/esm/hooks/useKeyboardDetector.mjs +1 -26
  744. package/dist/esm/hooks/useKeyboardDetector.mjs.map +1 -1
  745. package/dist/esm/hooks/usePersistedStore.mjs +1 -65
  746. package/dist/esm/hooks/usePersistedStore.mjs.map +1 -1
  747. package/dist/esm/hooks/useScreenWidth.mjs +1 -20
  748. package/dist/esm/hooks/useScreenWidth.mjs.map +1 -1
  749. package/dist/esm/hooks/useScrollBlockage/index.mjs +1 -27
  750. package/dist/esm/hooks/useScrollBlockage/index.mjs.map +1 -1
  751. package/dist/esm/hooks/useScrollBlockage/useScrollBlockageStore.mjs +1 -70
  752. package/dist/esm/hooks/useScrollBlockage/useScrollBlockageStore.mjs.map +1 -1
  753. package/dist/esm/hooks/useScrollDetection.mjs +1 -61
  754. package/dist/esm/hooks/useScrollDetection.mjs.map +1 -1
  755. package/dist/esm/hooks/useScrollY.mjs +1 -68
  756. package/dist/esm/hooks/useScrollY.mjs.map +1 -1
  757. package/dist/esm/hooks/useSearch.mjs +1 -50
  758. package/dist/esm/hooks/useSearch.mjs.map +1 -1
  759. package/dist/esm/hooks/useUser/index.mjs +1 -28
  760. package/dist/esm/hooks/useUser/index.mjs.map +1 -1
  761. package/dist/esm/libs/auth.mjs +1 -176
  762. package/dist/esm/libs/auth.mjs.map +1 -1
  763. package/dist/esm/libs/index.mjs +1 -3
  764. package/dist/esm/providers/ReactQueryProvider.mjs +1 -86
  765. package/dist/esm/providers/ReactQueryProvider.mjs.map +1 -1
  766. package/dist/esm/providers/index.mjs +1 -4
  767. package/dist/esm/tailwind.config.mjs +1 -15
  768. package/dist/esm/tailwind.config.mjs.map +1 -1
  769. package/dist/esm/utils/cn.mjs +1 -8
  770. package/dist/esm/utils/cn.mjs.map +1 -1
  771. package/dist/esm/utils/image.mjs +1 -51
  772. package/dist/esm/utils/image.mjs.map +1 -1
  773. package/dist/esm/utils/object.mjs +1 -32
  774. package/dist/esm/utils/object.mjs.map +1 -1
  775. package/dist/types/components/Avatar/index.d.ts.map +1 -1
  776. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +1 -1
  777. package/dist/types/components/Browser/Browser.content.d.ts +8 -8
  778. package/dist/types/components/Button/Button.d.ts +3 -3
  779. package/dist/types/components/Carousel/index.content.d.ts +5 -5
  780. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +2 -84
  781. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts.map +1 -1
  782. package/dist/types/components/Command/index.d.ts +2 -2
  783. package/dist/types/components/Container/index.d.ts +7 -7
  784. package/dist/types/components/CopyButton/CopyButton.content.d.ts +1 -1
  785. package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts +1 -1
  786. package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts +1 -1
  787. package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts +1 -1
  788. package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts.map +1 -1
  789. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts +1 -1
  790. package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts +1 -1
  791. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts +1 -1
  792. package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts +1 -1
  793. package/dist/types/components/DictionaryEditor/NodeWrapper/index.d.ts.map +1 -1
  794. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
  795. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +12 -12
  796. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +4 -4
  797. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +27 -27
  798. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +16 -16
  799. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +12 -12
  800. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +16 -16
  801. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +4 -4
  802. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts +3 -3
  803. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +2 -2
  804. package/dist/types/components/DictionaryFieldEditor/getIsEditableSection.d.ts.map +1 -1
  805. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +15 -15
  806. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts +3 -3
  807. package/dist/types/components/HTMLRender/HTMLRender.d.ts.map +1 -1
  808. package/dist/types/components/IDE/MonacoCode.d.ts.map +1 -1
  809. package/dist/types/components/IDE/code.content.d.ts +2 -2
  810. package/dist/types/components/IDE/copyCode.content.d.ts +2 -2
  811. package/dist/types/components/IDE/selectors.content.d.ts +6 -6
  812. package/dist/types/components/Input/Checkbox.d.ts +2 -2
  813. package/dist/types/components/Input/Input.d.ts +1 -1
  814. package/dist/types/components/Link/Link.d.ts +3 -3
  815. package/dist/types/components/Loader/index.content.d.ts +1 -1
  816. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +8 -8
  817. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +6 -6
  818. package/dist/types/components/Pagination/Pagination.d.ts +1 -1
  819. package/dist/types/components/Pagination/pagination.content.d.ts +7 -7
  820. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts +2 -2
  821. package/dist/types/components/SwitchSelector/index.d.ts +2 -2
  822. package/dist/types/components/Tab/Tab.d.ts +1 -1
  823. package/dist/types/components/TabSelector/TabSelector.d.ts +1 -1
  824. package/dist/types/components/Table/table.content.d.ts +1 -1
  825. package/dist/types/components/Tag/index.d.ts +3 -3
  826. package/dist/types/components/Terminal/terminal.content.d.ts +2 -2
  827. package/package.json +14 -14
  828. package/tailwind.css +3 -1
@@ -1,309 +1,2 @@
1
- 'use client';
2
-
3
- import { useEffect, useState } from "react";
4
-
5
- //#region src/components/Toaster/useToast.tsx
6
- /**
7
- * Maximum number of toasts that can be displayed simultaneously.
8
- * Prevents UI overflow and maintains clean notification experience.
9
- */
10
- const TOAST_LIMIT = 1;
11
- /**
12
- * Delay before automatically removing dismissed toasts from memory.
13
- * Set to 15 minutes (900,000ms) to allow for potential undo actions.
14
- */
15
- const TOAST_REMOVE_DELAY = 900 * 1e3;
16
- /**
17
- * Action types for toast state management using reducer pattern.
18
- *
19
- * Defines all possible actions that can be performed on the toast state,
20
- * enabling predictable state updates and better debugging.
21
- */
22
- var ActionTypes = /* @__PURE__ */ function(ActionTypes) {
23
- /** Add a new toast to the display queue */
24
- ActionTypes["ADD_TOAST"] = "ADD_TOAST";
25
- /** Update properties of an existing toast */
26
- ActionTypes["UPDATE_TOAST"] = "UPDATE_TOAST";
27
- /** Mark a toast as dismissed (triggers exit animation) */
28
- ActionTypes["DISMISS_TOAST"] = "DISMISS_TOAST";
29
- /** Completely remove a toast from memory */
30
- ActionTypes["REMOVE_TOAST"] = "REMOVE_TOAST";
31
- return ActionTypes;
32
- }(ActionTypes || {});
33
- let count = 0;
34
- const genId = () => {
35
- count = (count + 1) % Number.MAX_SAFE_INTEGER;
36
- return count.toString();
37
- };
38
- const toastTimeouts = /* @__PURE__ */ new Map();
39
- const addToRemoveQueue = (toastId) => {
40
- if (toastTimeouts.has(toastId)) return;
41
- const timeout = setTimeout(() => {
42
- toastTimeouts.delete(toastId);
43
- dispatch({
44
- type: ActionTypes.REMOVE_TOAST,
45
- toastId
46
- });
47
- }, TOAST_REMOVE_DELAY);
48
- toastTimeouts.set(toastId, timeout);
49
- };
50
- /**
51
- * Toast state reducer function that handles all toast state transitions.
52
- *
53
- * Implements predictable state updates using the reducer pattern, ensuring
54
- * consistent behavior across all toast operations.
55
- *
56
- * ## State Management
57
- * - **ADD_TOAST**: Adds new toast and enforces limit by removing excess toasts
58
- * - **UPDATE_TOAST**: Updates existing toast properties while preserving identity
59
- * - **DISMISS_TOAST**: Marks toasts as closed and schedules removal
60
- * - **REMOVE_TOAST**: Permanently removes toasts from state
61
- *
62
- * ## Side Effects
63
- * The DISMISS_TOAST action includes side effects for scheduling toast removal,
64
- * which could be extracted but is kept here for simplicity.
65
- *
66
- * @param state - Current toast state
67
- * @param action - Action to perform on the state
68
- * @returns Updated toast state
69
- *
70
- * @example
71
- * ```tsx
72
- * // Add a new toast
73
- * const newState = reducer(state, {
74
- * type: ActionTypes.ADD_TOAST,
75
- * toast: { id: '1', title: 'Hello', variant: 'default' }
76
- * });
77
- *
78
- * // Dismiss a specific toast
79
- * const dismissedState = reducer(state, {
80
- * type: ActionTypes.DISMISS_TOAST,
81
- * toastId: '1'
82
- * });
83
- * ```
84
- */
85
- const reducer = (state, action) => {
86
- switch (action.type) {
87
- case ActionTypes.ADD_TOAST: return {
88
- ...state,
89
- toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT)
90
- };
91
- case ActionTypes.UPDATE_TOAST: return {
92
- ...state,
93
- toasts: state.toasts.map((t) => t.id === action.toast.id ? {
94
- ...t,
95
- ...action.toast
96
- } : t)
97
- };
98
- case ActionTypes.DISMISS_TOAST: {
99
- const { toastId } = action;
100
- if (toastId) addToRemoveQueue(toastId);
101
- else state.toasts.forEach((toast) => {
102
- addToRemoveQueue(toast.id);
103
- });
104
- return {
105
- ...state,
106
- toasts: state.toasts.map((t) => t.id === toastId || toastId === void 0 ? {
107
- ...t,
108
- open: false
109
- } : t)
110
- };
111
- }
112
- case ActionTypes.REMOVE_TOAST:
113
- if (action.toastId === void 0) return {
114
- ...state,
115
- toasts: []
116
- };
117
- return {
118
- ...state,
119
- toasts: state.toasts.filter((t) => t.id !== action.toastId)
120
- };
121
- }
122
- };
123
- const listeners = [];
124
- let memoryState = { toasts: [] };
125
- const dispatch = (action) => {
126
- memoryState = reducer(memoryState, action);
127
- listeners.forEach((listener) => {
128
- listener(memoryState);
129
- });
130
- };
131
- /**
132
- * Creates and displays a new toast notification.
133
- *
134
- * This is the primary function for showing toast notifications to users.
135
- * It automatically generates unique IDs, handles state updates, and provides
136
- * control functions for managing the toast lifecycle.
137
- *
138
- * ## Features
139
- * - **Automatic ID Generation**: Each toast gets a unique identifier
140
- * - **State Management**: Integrates with global toast state
141
- * - **Lifecycle Control**: Returns functions to update or dismiss the toast
142
- * - **Auto-dismiss**: Automatically closes when user dismisses
143
- *
144
- * ## Return Value
145
- * Returns an object with control functions:
146
- * - `id`: Unique identifier for the toast
147
- * - `dismiss()`: Function to manually dismiss the toast
148
- * - `update()`: Function to update toast properties
149
- *
150
- * @param props - Toast configuration (title, description, variant, etc.)
151
- * @returns Object with toast ID and control functions
152
- *
153
- * @example
154
- * ```tsx
155
- * // Basic success toast
156
- * const { dismiss } = toast({
157
- * title: 'Success!',
158
- * description: 'Your file was uploaded successfully.',
159
- * variant: 'success'
160
- * });
161
- *
162
- * // Error toast with retry action
163
- * const errorToast = toast({
164
- * title: 'Upload Failed',
165
- * description: 'Could not upload file. Please try again.',
166
- * variant: 'error',
167
- * action: <ToastAction altText="Retry upload">Retry</ToastAction>
168
- * });
169
- *
170
- * // Update toast content dynamically
171
- * errorToast.update({
172
- * title: 'Retrying...',
173
- * description: 'Please wait while we retry the upload.',
174
- * variant: 'default'
175
- * });
176
- *
177
- * // Manually dismiss toast
178
- * setTimeout(() => errorToast.dismiss(), 5000);
179
- * ```
180
- */
181
- const toast = ({ ...props }) => {
182
- const id = genId();
183
- const update = (props) => dispatch({
184
- type: ActionTypes.UPDATE_TOAST,
185
- toast: {
186
- ...props,
187
- id
188
- }
189
- });
190
- const dismiss = () => dispatch({
191
- type: ActionTypes.DISMISS_TOAST,
192
- toastId: id
193
- });
194
- dispatch({
195
- type: ActionTypes.ADD_TOAST,
196
- toast: {
197
- ...props,
198
- id,
199
- open: true,
200
- onOpenChange: (open) => {
201
- if (!open) dismiss();
202
- }
203
- }
204
- });
205
- return {
206
- id,
207
- dismiss,
208
- update
209
- };
210
- };
211
- /**
212
- * React hook for managing toast notifications.
213
- *
214
- * Provides access to the global toast state and functions for creating and
215
- * managing toast notifications. This hook connects components to the toast
216
- * system and ensures reactive updates when toasts change.
217
- *
218
- * ## Features
219
- * - **State Synchronization**: Automatically updates when toast state changes
220
- * - **Toast Creation**: Provides the `toast()` function for creating notifications
221
- * - **Batch Dismissal**: Can dismiss all toasts or specific toasts by ID
222
- * - **Memory Management**: Handles proper cleanup of listeners
223
- *
224
- * ## Return Value
225
- * - `toasts`: Array of current toast objects
226
- * - `toast()`: Function to create new toast notifications
227
- * - `dismiss()`: Function to dismiss toasts (all or by ID)
228
- *
229
- * @returns Toast state and control functions
230
- *
231
- * @example
232
- * ```tsx
233
- * function NotificationButton() {
234
- * const { toast, toasts, dismiss } = useToast();
235
- *
236
- * const showSuccess = () => {
237
- * toast({
238
- * title: 'Success!',
239
- * description: 'Operation completed successfully.',
240
- * variant: 'success'
241
- * });
242
- * };
243
- *
244
- * const clearAll = () => {
245
- * dismiss(); // Dismisses all toasts
246
- * };
247
- *
248
- * return (
249
- * <div>
250
- * <button onClick={showSuccess}>Show Success</button>
251
- * <button onClick={clearAll}>Clear All ({toasts.length})</button>
252
- * </div>
253
- * );
254
- * }
255
- *
256
- * // Usage in a form component
257
- * function ContactForm() {
258
- * const { toast } = useToast();
259
- *
260
- * const handleSubmit = async (data) => {
261
- * try {
262
- * await submitForm(data);
263
- * toast({
264
- * title: 'Form Submitted',
265
- * description: 'We\'ll get back to you soon!',
266
- * variant: 'success'
267
- * });
268
- * } catch (error) {
269
- * toast({
270
- * title: 'Submission Failed',
271
- * description: 'Please check your connection and try again.',
272
- * variant: 'error',
273
- * action: <ToastAction altText="Retry">Retry</ToastAction>
274
- * });
275
- * }
276
- * };
277
- *
278
- * // ... form JSX
279
- * }
280
- * ```
281
- *
282
- * ## Usage Notes
283
- * - Must be used within a component tree that includes `<Toaster />`
284
- * - Toast state is global - changes affect all components using this hook
285
- * - Toasts are automatically cleaned up after the configured delay
286
- * - Consider UX best practices: don't overwhelm users with too many toasts
287
- */
288
- const useToast = () => {
289
- const [state, setState] = useState(memoryState);
290
- useEffect(() => {
291
- listeners.push(setState);
292
- return () => {
293
- const index = listeners.indexOf(setState);
294
- if (index > -1) listeners.splice(index, 1);
295
- };
296
- }, [state]);
297
- return {
298
- ...state,
299
- toast,
300
- dismiss: (toastId) => dispatch({
301
- type: ActionTypes.DISMISS_TOAST,
302
- toastId
303
- })
304
- };
305
- };
306
-
307
- //#endregion
308
- export { reducer, toast, useToast };
1
+ "use client";import{useEffect as e,useState as t}from"react";var n=function(e){return e.ADD_TOAST=`ADD_TOAST`,e.UPDATE_TOAST=`UPDATE_TOAST`,e.DISMISS_TOAST=`DISMISS_TOAST`,e.REMOVE_TOAST=`REMOVE_TOAST`,e}(n||{});let r=0;const i=()=>(r=(r+1)%(2**53-1),r.toString()),a=new Map,o=e=>{if(a.has(e))return;let t=setTimeout(()=>{a.delete(e),u({type:n.REMOVE_TOAST,toastId:e})},9e5);a.set(e,t)},s=(e,t)=>{switch(t.type){case n.ADD_TOAST:return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case n.UPDATE_TOAST:return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case n.DISMISS_TOAST:{let{toastId:n}=t;return n?o(n):e.toasts.forEach(e=>{o(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===n||n===void 0?{...e,open:!1}:e)}}case n.REMOVE_TOAST:return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},c=[];let l={toasts:[]};const u=e=>{l=s(l,e),c.forEach(e=>{e(l)})},d=({...e})=>{let t=i(),r=e=>u({type:n.UPDATE_TOAST,toast:{...e,id:t}}),a=()=>u({type:n.DISMISS_TOAST,toastId:t});return u({type:n.ADD_TOAST,toast:{...e,id:t,open:!0,onOpenChange:e=>{e||a()}}}),{id:t,dismiss:a,update:r}},f=()=>{let[r,i]=t(l);return e(()=>(c.push(i),()=>{let e=c.indexOf(i);e>-1&&c.splice(e,1)}),[r]),{...r,toast:d,dismiss:e=>u({type:n.DISMISS_TOAST,toastId:e})}};export{s as reducer,d as toast,f as useToast};
309
2
  //# sourceMappingURL=useToast.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useToast.mjs","names":[],"sources":["../../../../src/components/Toaster/useToast.tsx"],"sourcesContent":["'use client';\n\nimport { type ReactNode, useEffect, useState } from 'react';\nimport type { ToastActionElement, ToastProps } from './Toast';\n\n/**\n * Maximum number of toasts that can be displayed simultaneously.\n * Prevents UI overflow and maintains clean notification experience.\n */\nconst TOAST_LIMIT = 1;\n\n/**\n * Delay before automatically removing dismissed toasts from memory.\n * Set to 15 minutes (900,000ms) to allow for potential undo actions.\n */\nconst TOAST_REMOVE_DELAY = 15 * 60 * 1000; // 15 seconds\n\n/**\n * Extended toast configuration with additional properties for the toast system.\n *\n * Combines base ToastProps with specific fields needed for toast management\n * including unique identification and content elements.\n *\n * @example\n * ```tsx\n * const toast: ToasterToast = {\n * id: '1',\n * variant: 'success',\n * title: 'Success!',\n * description: 'Your action completed successfully.',\n * action: <ToastAction altText=\"View details\">View</ToastAction>\n * };\n * ```\n */\ntype ToasterToast = ToastProps & {\n /** Unique identifier for the toast instance */\n id: string;\n /** Optional title text or React element */\n title?: ReactNode;\n /** Optional description text or React element */\n description?: ReactNode;\n /** Optional action button element */\n action?: ToastActionElement;\n};\n\n/**\n * Action types for toast state management using reducer pattern.\n *\n * Defines all possible actions that can be performed on the toast state,\n * enabling predictable state updates and better debugging.\n */\nenum ActionTypes {\n /** Add a new toast to the display queue */\n ADD_TOAST = 'ADD_TOAST',\n /** Update properties of an existing toast */\n UPDATE_TOAST = 'UPDATE_TOAST',\n /** Mark a toast as dismissed (triggers exit animation) */\n DISMISS_TOAST = 'DISMISS_TOAST',\n /** Completely remove a toast from memory */\n REMOVE_TOAST = 'REMOVE_TOAST',\n}\n\nlet count = 0;\n\nconst genId = () => {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n};\n\ntype Action =\n | {\n type: ActionTypes.ADD_TOAST;\n toast: ToasterToast;\n }\n | {\n type: ActionTypes.UPDATE_TOAST;\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionTypes.DISMISS_TOAST;\n toastId?: ToasterToast['id'];\n }\n | {\n type: ActionTypes.REMOVE_TOAST;\n toastId?: ToasterToast['id'];\n };\n\ntype State = {\n toasts: ToasterToast[];\n};\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: ActionTypes.REMOVE_TOAST,\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\n/**\n * Toast state reducer function that handles all toast state transitions.\n *\n * Implements predictable state updates using the reducer pattern, ensuring\n * consistent behavior across all toast operations.\n *\n * ## State Management\n * - **ADD_TOAST**: Adds new toast and enforces limit by removing excess toasts\n * - **UPDATE_TOAST**: Updates existing toast properties while preserving identity\n * - **DISMISS_TOAST**: Marks toasts as closed and schedules removal\n * - **REMOVE_TOAST**: Permanently removes toasts from state\n *\n * ## Side Effects\n * The DISMISS_TOAST action includes side effects for scheduling toast removal,\n * which could be extracted but is kept here for simplicity.\n *\n * @param state - Current toast state\n * @param action - Action to perform on the state\n * @returns Updated toast state\n *\n * @example\n * ```tsx\n * // Add a new toast\n * const newState = reducer(state, {\n * type: ActionTypes.ADD_TOAST,\n * toast: { id: '1', title: 'Hello', variant: 'default' }\n * });\n *\n * // Dismiss a specific toast\n * const dismissedState = reducer(state, {\n * type: ActionTypes.DISMISS_TOAST,\n * toastId: '1'\n * });\n * ```\n */\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case ActionTypes.ADD_TOAST:\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case ActionTypes.UPDATE_TOAST:\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case ActionTypes.DISMISS_TOAST: {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n };\n }\n case ActionTypes.REMOVE_TOAST:\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: ((state: State) => void)[] = [];\n\nlet memoryState: State = { toasts: [] };\n\nconst dispatch = (action: Action) => {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n};\n\n/**\n * Toast configuration type for creating new toasts.\n * Omits the 'id' field as it's automatically generated.\n */\ntype Toast = Omit<ToasterToast, 'id'>;\n\n/**\n * Creates and displays a new toast notification.\n *\n * This is the primary function for showing toast notifications to users.\n * It automatically generates unique IDs, handles state updates, and provides\n * control functions for managing the toast lifecycle.\n *\n * ## Features\n * - **Automatic ID Generation**: Each toast gets a unique identifier\n * - **State Management**: Integrates with global toast state\n * - **Lifecycle Control**: Returns functions to update or dismiss the toast\n * - **Auto-dismiss**: Automatically closes when user dismisses\n *\n * ## Return Value\n * Returns an object with control functions:\n * - `id`: Unique identifier for the toast\n * - `dismiss()`: Function to manually dismiss the toast\n * - `update()`: Function to update toast properties\n *\n * @param props - Toast configuration (title, description, variant, etc.)\n * @returns Object with toast ID and control functions\n *\n * @example\n * ```tsx\n * // Basic success toast\n * const { dismiss } = toast({\n * title: 'Success!',\n * description: 'Your file was uploaded successfully.',\n * variant: 'success'\n * });\n *\n * // Error toast with retry action\n * const errorToast = toast({\n * title: 'Upload Failed',\n * description: 'Could not upload file. Please try again.',\n * variant: 'error',\n * action: <ToastAction altText=\"Retry upload\">Retry</ToastAction>\n * });\n *\n * // Update toast content dynamically\n * errorToast.update({\n * title: 'Retrying...',\n * description: 'Please wait while we retry the upload.',\n * variant: 'default'\n * });\n *\n * // Manually dismiss toast\n * setTimeout(() => errorToast.dismiss(), 5000);\n * ```\n */\nconst toast = ({ ...props }: Toast) => {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: ActionTypes.UPDATE_TOAST,\n toast: { ...props, id },\n });\n const dismiss = () =>\n dispatch({ type: ActionTypes.DISMISS_TOAST, toastId: id });\n\n dispatch({\n type: ActionTypes.ADD_TOAST,\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n};\n\n/**\n * React hook for managing toast notifications.\n *\n * Provides access to the global toast state and functions for creating and\n * managing toast notifications. This hook connects components to the toast\n * system and ensures reactive updates when toasts change.\n *\n * ## Features\n * - **State Synchronization**: Automatically updates when toast state changes\n * - **Toast Creation**: Provides the `toast()` function for creating notifications\n * - **Batch Dismissal**: Can dismiss all toasts or specific toasts by ID\n * - **Memory Management**: Handles proper cleanup of listeners\n *\n * ## Return Value\n * - `toasts`: Array of current toast objects\n * - `toast()`: Function to create new toast notifications\n * - `dismiss()`: Function to dismiss toasts (all or by ID)\n *\n * @returns Toast state and control functions\n *\n * @example\n * ```tsx\n * function NotificationButton() {\n * const { toast, toasts, dismiss } = useToast();\n *\n * const showSuccess = () => {\n * toast({\n * title: 'Success!',\n * description: 'Operation completed successfully.',\n * variant: 'success'\n * });\n * };\n *\n * const clearAll = () => {\n * dismiss(); // Dismisses all toasts\n * };\n *\n * return (\n * <div>\n * <button onClick={showSuccess}>Show Success</button>\n * <button onClick={clearAll}>Clear All ({toasts.length})</button>\n * </div>\n * );\n * }\n *\n * // Usage in a form component\n * function ContactForm() {\n * const { toast } = useToast();\n *\n * const handleSubmit = async (data) => {\n * try {\n * await submitForm(data);\n * toast({\n * title: 'Form Submitted',\n * description: 'We\\'ll get back to you soon!',\n * variant: 'success'\n * });\n * } catch (error) {\n * toast({\n * title: 'Submission Failed',\n * description: 'Please check your connection and try again.',\n * variant: 'error',\n * action: <ToastAction altText=\"Retry\">Retry</ToastAction>\n * });\n * }\n * };\n *\n * // ... form JSX\n * }\n * ```\n *\n * ## Usage Notes\n * - Must be used within a component tree that includes `<Toaster />`\n * - Toast state is global - changes affect all components using this hook\n * - Toasts are automatically cleaned up after the configured delay\n * - Consider UX best practices: don't overwhelm users with too many toasts\n */\nconst useToast = () => {\n const [state, setState] = useState<State>(memoryState);\n\n useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) =>\n dispatch({ type: ActionTypes.DISMISS_TOAST, toastId }),\n };\n};\n\nexport { toast, useToast };\n"],"mappings":";;;;;;;;;AASA,MAAM,cAAc;;;;;AAMpB,MAAM,qBAAqB,MAAU;;;;;;;AAoCrC,IAAK,oDAAL;;AAEE;;AAEA;;AAEA;;AAEA;;EARG;AAWL,IAAI,QAAQ;AAEZ,MAAM,cAAc;AAClB,UAAS,QAAQ,KAAK,OAAO;AAC7B,QAAO,MAAM,UAAU;;AAyBzB,MAAM,gCAAgB,IAAI,KAA4C;AAEtE,MAAM,oBAAoB,YAAoB;AAC5C,KAAI,cAAc,IAAI,QAAQ,CAC5B;CAGF,MAAM,UAAU,iBAAiB;AAC/B,gBAAc,OAAO,QAAQ;AAC7B,WAAS;GACP,MAAM,YAAY;GACT;GACV,CAAC;IACD,mBAAmB;AAEtB,eAAc,IAAI,SAAS,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCrC,MAAa,WAAW,OAAc,WAA0B;AAC9D,SAAQ,OAAO,MAAf;EACE,KAAK,YAAY,UACf,QAAO;GACL,GAAG;GACH,QAAQ,CAAC,OAAO,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,GAAG,YAAY;GAC9D;EAEH,KAAK,YAAY,aACf,QAAO;GACL,GAAG;GACH,QAAQ,MAAM,OAAO,KAAK,MACxB,EAAE,OAAO,OAAO,MAAM,KAAK;IAAE,GAAG;IAAG,GAAG,OAAO;IAAO,GAAG,EACxD;GACF;EAEH,KAAK,YAAY,eAAe;GAC9B,MAAM,EAAE,YAAY;AAIpB,OAAI,QACF,kBAAiB,QAAQ;OAEzB,OAAM,OAAO,SAAS,UAAU;AAC9B,qBAAiB,MAAM,GAAG;KAC1B;AAGJ,UAAO;IACL,GAAG;IACH,QAAQ,MAAM,OAAO,KAAK,MACxB,EAAE,OAAO,WAAW,YAAY,SAC5B;KACE,GAAG;KACH,MAAM;KACP,GACD,EACL;IACF;;EAEH,KAAK,YAAY;AACf,OAAI,OAAO,YAAY,OACrB,QAAO;IACL,GAAG;IACH,QAAQ,EAAE;IACX;AAEH,UAAO;IACL,GAAG;IACH,QAAQ,MAAM,OAAO,QAAQ,MAAM,EAAE,OAAO,OAAO,QAAQ;IAC5D;;;AAIP,MAAM,YAAwC,EAAE;AAEhD,IAAI,cAAqB,EAAE,QAAQ,EAAE,EAAE;AAEvC,MAAM,YAAY,WAAmB;AACnC,eAAc,QAAQ,aAAa,OAAO;AAC1C,WAAU,SAAS,aAAa;AAC9B,WAAS,YAAY;GACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DJ,MAAM,SAAS,EAAE,GAAG,YAAmB;CACrC,MAAM,KAAK,OAAO;CAElB,MAAM,UAAU,UACd,SAAS;EACP,MAAM,YAAY;EAClB,OAAO;GAAE,GAAG;GAAO;GAAI;EACxB,CAAC;CACJ,MAAM,gBACJ,SAAS;EAAE,MAAM,YAAY;EAAe,SAAS;EAAI,CAAC;AAE5D,UAAS;EACP,MAAM,YAAY;EAClB,OAAO;GACL,GAAG;GACH;GACA,MAAM;GACN,eAAe,SAAS;AACtB,QAAI,CAAC,KAAM,UAAS;;GAEvB;EACF,CAAC;AAEF,QAAO;EACD;EACJ;EACA;EACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFH,MAAM,iBAAiB;CACrB,MAAM,CAAC,OAAO,YAAY,SAAgB,YAAY;AAEtD,iBAAgB;AACd,YAAU,KAAK,SAAS;AACxB,eAAa;GACX,MAAM,QAAQ,UAAU,QAAQ,SAAS;AACzC,OAAI,QAAQ,GACV,WAAU,OAAO,OAAO,EAAE;;IAG7B,CAAC,MAAM,CAAC;AAEX,QAAO;EACL,GAAG;EACH;EACA,UAAU,YACR,SAAS;GAAE,MAAM,YAAY;GAAe;GAAS,CAAC;EACzD"}
1
+ {"version":3,"file":"useToast.mjs","names":[],"sources":["../../../../src/components/Toaster/useToast.tsx"],"sourcesContent":["'use client';\n\nimport { type ReactNode, useEffect, useState } from 'react';\nimport type { ToastActionElement, ToastProps } from './Toast';\n\n/**\n * Maximum number of toasts that can be displayed simultaneously.\n * Prevents UI overflow and maintains clean notification experience.\n */\nconst TOAST_LIMIT = 1;\n\n/**\n * Delay before automatically removing dismissed toasts from memory.\n * Set to 15 minutes (900,000ms) to allow for potential undo actions.\n */\nconst TOAST_REMOVE_DELAY = 15 * 60 * 1000; // 15 seconds\n\n/**\n * Extended toast configuration with additional properties for the toast system.\n *\n * Combines base ToastProps with specific fields needed for toast management\n * including unique identification and content elements.\n *\n * @example\n * ```tsx\n * const toast: ToasterToast = {\n * id: '1',\n * variant: 'success',\n * title: 'Success!',\n * description: 'Your action completed successfully.',\n * action: <ToastAction altText=\"View details\">View</ToastAction>\n * };\n * ```\n */\ntype ToasterToast = ToastProps & {\n /** Unique identifier for the toast instance */\n id: string;\n /** Optional title text or React element */\n title?: ReactNode;\n /** Optional description text or React element */\n description?: ReactNode;\n /** Optional action button element */\n action?: ToastActionElement;\n};\n\n/**\n * Action types for toast state management using reducer pattern.\n *\n * Defines all possible actions that can be performed on the toast state,\n * enabling predictable state updates and better debugging.\n */\nenum ActionTypes {\n /** Add a new toast to the display queue */\n ADD_TOAST = 'ADD_TOAST',\n /** Update properties of an existing toast */\n UPDATE_TOAST = 'UPDATE_TOAST',\n /** Mark a toast as dismissed (triggers exit animation) */\n DISMISS_TOAST = 'DISMISS_TOAST',\n /** Completely remove a toast from memory */\n REMOVE_TOAST = 'REMOVE_TOAST',\n}\n\nlet count = 0;\n\nconst genId = () => {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n};\n\ntype Action =\n | {\n type: ActionTypes.ADD_TOAST;\n toast: ToasterToast;\n }\n | {\n type: ActionTypes.UPDATE_TOAST;\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionTypes.DISMISS_TOAST;\n toastId?: ToasterToast['id'];\n }\n | {\n type: ActionTypes.REMOVE_TOAST;\n toastId?: ToasterToast['id'];\n };\n\ntype State = {\n toasts: ToasterToast[];\n};\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: ActionTypes.REMOVE_TOAST,\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\n/**\n * Toast state reducer function that handles all toast state transitions.\n *\n * Implements predictable state updates using the reducer pattern, ensuring\n * consistent behavior across all toast operations.\n *\n * ## State Management\n * - **ADD_TOAST**: Adds new toast and enforces limit by removing excess toasts\n * - **UPDATE_TOAST**: Updates existing toast properties while preserving identity\n * - **DISMISS_TOAST**: Marks toasts as closed and schedules removal\n * - **REMOVE_TOAST**: Permanently removes toasts from state\n *\n * ## Side Effects\n * The DISMISS_TOAST action includes side effects for scheduling toast removal,\n * which could be extracted but is kept here for simplicity.\n *\n * @param state - Current toast state\n * @param action - Action to perform on the state\n * @returns Updated toast state\n *\n * @example\n * ```tsx\n * // Add a new toast\n * const newState = reducer(state, {\n * type: ActionTypes.ADD_TOAST,\n * toast: { id: '1', title: 'Hello', variant: 'default' }\n * });\n *\n * // Dismiss a specific toast\n * const dismissedState = reducer(state, {\n * type: ActionTypes.DISMISS_TOAST,\n * toastId: '1'\n * });\n * ```\n */\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case ActionTypes.ADD_TOAST:\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case ActionTypes.UPDATE_TOAST:\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case ActionTypes.DISMISS_TOAST: {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n };\n }\n case ActionTypes.REMOVE_TOAST:\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: ((state: State) => void)[] = [];\n\nlet memoryState: State = { toasts: [] };\n\nconst dispatch = (action: Action) => {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n};\n\n/**\n * Toast configuration type for creating new toasts.\n * Omits the 'id' field as it's automatically generated.\n */\ntype Toast = Omit<ToasterToast, 'id'>;\n\n/**\n * Creates and displays a new toast notification.\n *\n * This is the primary function for showing toast notifications to users.\n * It automatically generates unique IDs, handles state updates, and provides\n * control functions for managing the toast lifecycle.\n *\n * ## Features\n * - **Automatic ID Generation**: Each toast gets a unique identifier\n * - **State Management**: Integrates with global toast state\n * - **Lifecycle Control**: Returns functions to update or dismiss the toast\n * - **Auto-dismiss**: Automatically closes when user dismisses\n *\n * ## Return Value\n * Returns an object with control functions:\n * - `id`: Unique identifier for the toast\n * - `dismiss()`: Function to manually dismiss the toast\n * - `update()`: Function to update toast properties\n *\n * @param props - Toast configuration (title, description, variant, etc.)\n * @returns Object with toast ID and control functions\n *\n * @example\n * ```tsx\n * // Basic success toast\n * const { dismiss } = toast({\n * title: 'Success!',\n * description: 'Your file was uploaded successfully.',\n * variant: 'success'\n * });\n *\n * // Error toast with retry action\n * const errorToast = toast({\n * title: 'Upload Failed',\n * description: 'Could not upload file. Please try again.',\n * variant: 'error',\n * action: <ToastAction altText=\"Retry upload\">Retry</ToastAction>\n * });\n *\n * // Update toast content dynamically\n * errorToast.update({\n * title: 'Retrying...',\n * description: 'Please wait while we retry the upload.',\n * variant: 'default'\n * });\n *\n * // Manually dismiss toast\n * setTimeout(() => errorToast.dismiss(), 5000);\n * ```\n */\nconst toast = ({ ...props }: Toast) => {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: ActionTypes.UPDATE_TOAST,\n toast: { ...props, id },\n });\n const dismiss = () =>\n dispatch({ type: ActionTypes.DISMISS_TOAST, toastId: id });\n\n dispatch({\n type: ActionTypes.ADD_TOAST,\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n};\n\n/**\n * React hook for managing toast notifications.\n *\n * Provides access to the global toast state and functions for creating and\n * managing toast notifications. This hook connects components to the toast\n * system and ensures reactive updates when toasts change.\n *\n * ## Features\n * - **State Synchronization**: Automatically updates when toast state changes\n * - **Toast Creation**: Provides the `toast()` function for creating notifications\n * - **Batch Dismissal**: Can dismiss all toasts or specific toasts by ID\n * - **Memory Management**: Handles proper cleanup of listeners\n *\n * ## Return Value\n * - `toasts`: Array of current toast objects\n * - `toast()`: Function to create new toast notifications\n * - `dismiss()`: Function to dismiss toasts (all or by ID)\n *\n * @returns Toast state and control functions\n *\n * @example\n * ```tsx\n * function NotificationButton() {\n * const { toast, toasts, dismiss } = useToast();\n *\n * const showSuccess = () => {\n * toast({\n * title: 'Success!',\n * description: 'Operation completed successfully.',\n * variant: 'success'\n * });\n * };\n *\n * const clearAll = () => {\n * dismiss(); // Dismisses all toasts\n * };\n *\n * return (\n * <div>\n * <button onClick={showSuccess}>Show Success</button>\n * <button onClick={clearAll}>Clear All ({toasts.length})</button>\n * </div>\n * );\n * }\n *\n * // Usage in a form component\n * function ContactForm() {\n * const { toast } = useToast();\n *\n * const handleSubmit = async (data) => {\n * try {\n * await submitForm(data);\n * toast({\n * title: 'Form Submitted',\n * description: 'We\\'ll get back to you soon!',\n * variant: 'success'\n * });\n * } catch (error) {\n * toast({\n * title: 'Submission Failed',\n * description: 'Please check your connection and try again.',\n * variant: 'error',\n * action: <ToastAction altText=\"Retry\">Retry</ToastAction>\n * });\n * }\n * };\n *\n * // ... form JSX\n * }\n * ```\n *\n * ## Usage Notes\n * - Must be used within a component tree that includes `<Toaster />`\n * - Toast state is global - changes affect all components using this hook\n * - Toasts are automatically cleaned up after the configured delay\n * - Consider UX best practices: don't overwhelm users with too many toasts\n */\nconst useToast = () => {\n const [state, setState] = useState<State>(memoryState);\n\n useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) =>\n dispatch({ type: ActionTypes.DISMISS_TOAST, toastId }),\n };\n};\n\nexport { toast, useToast };\n"],"mappings":"6DAmDA,IAAK,EAAA,SAAA,EAAL,OAEE,GAAA,UAAA,YAEA,EAAA,aAAA,eAEA,EAAA,cAAA,gBAEA,EAAA,aAAA,kBARG,GAAA,EAAA,CAAA,CAWL,IAAI,EAAQ,EAEZ,MAAM,OACJ,GAAS,EAAQ,aACV,EAAM,UAAU,EAyBnB,EAAgB,IAAI,IAEpB,EAAoB,GAAoB,CAC5C,GAAI,EAAc,IAAI,EAAQ,CAC5B,OAGF,IAAM,EAAU,eAAiB,CAC/B,EAAc,OAAO,EAAQ,CAC7B,EAAS,CACP,KAAM,EAAY,aACT,UACV,CAAC,EACD,IAAmB,CAEtB,EAAc,IAAI,EAAS,EAAQ,EAsCxB,GAAW,EAAc,IAA0B,CAC9D,OAAQ,EAAO,KAAf,CACE,KAAK,EAAY,UACf,MAAO,CACL,GAAG,EACH,OAAQ,CAAC,EAAO,MAAO,GAAG,EAAM,OAAO,CAAC,MAAM,EAAG,EAAY,CAC9D,CAEH,KAAK,EAAY,aACf,MAAO,CACL,GAAG,EACH,OAAQ,EAAM,OAAO,IAAK,GACxB,EAAE,KAAO,EAAO,MAAM,GAAK,CAAE,GAAG,EAAG,GAAG,EAAO,MAAO,CAAG,EACxD,CACF,CAEH,KAAK,EAAY,cAAe,CAC9B,GAAM,CAAE,WAAY,EAYpB,OARI,EACF,EAAiB,EAAQ,CAEzB,EAAM,OAAO,QAAS,GAAU,CAC9B,EAAiB,EAAM,GAAG,EAC1B,CAGG,CACL,GAAG,EACH,OAAQ,EAAM,OAAO,IAAK,GACxB,EAAE,KAAO,GAAW,IAAY,IAAA,GAC5B,CACE,GAAG,EACH,KAAM,GACP,CACD,EACL,CACF,CAEH,KAAK,EAAY,aAOf,OANI,EAAO,UAAY,IAAA,GACd,CACL,GAAG,EACH,OAAQ,EAAE,CACX,CAEI,CACL,GAAG,EACH,OAAQ,EAAM,OAAO,OAAQ,GAAM,EAAE,KAAO,EAAO,QAAQ,CAC5D,GAID,EAAwC,EAAE,CAEhD,IAAI,EAAqB,CAAE,OAAQ,EAAE,CAAE,CAEvC,MAAM,EAAY,GAAmB,CACnC,EAAc,EAAQ,EAAa,EAAO,CAC1C,EAAU,QAAS,GAAa,CAC9B,EAAS,EAAY,EACrB,EA2DE,GAAS,CAAE,GAAG,KAAmB,CACrC,IAAM,EAAK,GAAO,CAEZ,EAAU,GACd,EAAS,CACP,KAAM,EAAY,aAClB,MAAO,CAAE,GAAG,EAAO,KAAI,CACxB,CAAC,CACE,MACJ,EAAS,CAAE,KAAM,EAAY,cAAe,QAAS,EAAI,CAAC,CAc5D,OAZA,EAAS,CACP,KAAM,EAAY,UAClB,MAAO,CACL,GAAG,EACH,KACA,KAAM,GACN,aAAe,GAAS,CACjB,GAAM,GAAS,EAEvB,CACF,CAAC,CAEK,CACD,KACJ,UACA,SACD,EAgFG,MAAiB,CACrB,GAAM,CAAC,EAAO,GAAY,EAAgB,EAAY,CAYtD,OAVA,OACE,EAAU,KAAK,EAAS,KACX,CACX,IAAM,EAAQ,EAAU,QAAQ,EAAS,CACrC,EAAQ,IACV,EAAU,OAAO,EAAO,EAAE,GAG7B,CAAC,EAAM,CAAC,CAEJ,CACL,GAAG,EACH,QACA,QAAU,GACR,EAAS,CAAE,KAAM,EAAY,cAAe,UAAS,CAAC,CACzD"}
@@ -1,201 +1,2 @@
1
- 'use client';
2
-
3
- import { cn } from "../../utils/cn.mjs";
4
- import { useCallback, useEffect, useRef, useState } from "react";
5
- import { jsx } from "react/jsx-runtime";
6
-
7
- //#region src/components/WithResizer/index.tsx
8
- /**
9
- * WithResizer Component
10
- *
11
- * A flexible container component that allows users to dynamically resize its width
12
- * through mouse or touch drag interactions. Perfect for creating adjustable panels,
13
- * sidebars, and split-pane layouts.
14
- *
15
- * ## Features
16
- * - **Mouse & Touch Support**: Works with both mouse drag and touch interactions
17
- * - **Constraint Enforcement**: Respects minimum and maximum width boundaries
18
- * - **Visual Feedback**: Clear resize handle with hover and active states
19
- * - **Smooth Interactions**: Passive event listeners for optimal performance
20
- * - **Accessibility**: ARIA slider role with proper value announcements
21
- * - **Responsive Design**: Adapts to different screen sizes and containers
22
- *
23
- * ## Technical Implementation
24
- * - **Event Handling**: Uses `useCallback` for optimal performance
25
- * - **Boundary Calculation**: Real-time width calculation based on mouse/touch position
26
- * - **State Management**: Tracks resizing state for visual feedback
27
- * - **Memory Management**: Proper cleanup of global event listeners
28
- * - **Touch Events**: Full support for mobile touch interactions
29
- *
30
- * ## Visual Design
31
- * - **Resize Handle**: Rounded handle positioned on the right border
32
- * - **Border Indicator**: Visual border showing resizable edge
33
- * - **State Feedback**: Different colors for normal, hover, and active states
34
- * - **Dark Mode**: Full support with appropriate color scheme
35
- * - **Smooth Transitions**: CSS transitions for visual polish
36
- *
37
- * ## Use Cases
38
- * - **Application Sidebars**: Collapsible navigation and tool panels
39
- * - **Content Panels**: Adjustable content areas in complex layouts
40
- * - **Split Panes**: Dividing screen space between multiple content areas
41
- * - **Inspector Panels**: Debugging tools and property inspectors
42
- * - **File Explorers**: Tree views with adjustable column widths
43
- * - **Dashboard Widgets**: Customizable widget sizes for dashboards
44
- *
45
- * ## Accessibility Features
46
- * - **ARIA Slider**: Proper slider role for screen readers
47
- * - **Value Announcements**: Current, minimum, and maximum values announced
48
- * - **Keyboard Focus**: Focusable with tab navigation
49
- * - **Clear Affordances**: Visual indicators for interactive elements
50
- *
51
- * @example
52
- * ```tsx
53
- * // Application sidebar with resizing
54
- * const [sidebarWidth, setSidebarWidth] = useState(250);
55
- *
56
- * <div className="flex h-screen">
57
- * <WithResizer
58
- * initialWidth={sidebarWidth}
59
- * minWidth={200}
60
- * maxWidth={400}
61
- * >
62
- * <aside className="h-full bg-gray-100 p-4">
63
- * <nav>
64
- * <NavItems />
65
- * </nav>
66
- * </aside>
67
- * </WithResizer>
68
- *
69
- * <main className="flex-1 p-6">
70
- * <MainContent />
71
- * </main>
72
- * </div>
73
- *
74
- * // Developer tools panel
75
- * <WithResizer
76
- * initialWidth={350}
77
- * minWidth={250}
78
- * maxWidth={600}
79
- * >
80
- * <div className="h-full flex flex-col">
81
- * <div className="flex-1 overflow-auto p-4">
82
- * <InspectorContent />
83
- * </div>
84
- * <div className="border-t p-2">
85
- * <Controls />
86
- * </div>
87
- * </div>
88
- * </WithResizer>
89
- *
90
- * // Multi-column layout
91
- * <div className="flex h-full">
92
- * <WithResizer initialWidth={300} minWidth={200} maxWidth={500}>
93
- * <FileExplorer />
94
- * </WithResizer>
95
- *
96
- * <WithResizer initialWidth={400} minWidth={300}>
97
- * <CodeEditor />
98
- * </WithResizer>
99
- *
100
- * <div className="flex-1 min-w-0">
101
- * <OutputPanel />
102
- * </div>
103
- * </div>
104
- * ```
105
- *
106
- * ## Performance Considerations
107
- * - Uses passive event listeners to prevent scroll blocking
108
- * - Optimized with `useCallback` to prevent unnecessary re-renders
109
- * - Efficient boundary calculations using `getBoundingClientRect`
110
- * - Minimal DOM manipulation for smooth drag interactions
111
- *
112
- * ## Browser Support
113
- * - Modern browsers with support for touch events
114
- * - Graceful degradation for older browsers
115
- * - Mobile-first touch interaction handling
116
- */
117
- const WithResizer = ({ initialWidth, maxWidth, minWidth = 0, handlePosition = "right", children }) => {
118
- const containerRef = useRef(null);
119
- const [width, setWidth] = useState(initialWidth);
120
- const resizeState = useRef({
121
- startX: 0,
122
- startWidth: 0,
123
- factor: 1
124
- });
125
- const resize = useCallback((mouseMoveEvent) => {
126
- if (resizeState.current.startWidth === 0) return;
127
- let clientX = 0;
128
- if (mouseMoveEvent instanceof MouseEvent) clientX = mouseMoveEvent.clientX;
129
- else if (typeof TouchEvent !== "undefined" && mouseMoveEvent instanceof TouchEvent) clientX = mouseMoveEvent.touches[0].clientX;
130
- const { startX, startWidth, factor } = resizeState.current;
131
- const delta = (clientX - startX) / factor;
132
- const newWidth = startWidth + (handlePosition === "left" ? -delta : delta);
133
- setWidth(Math.max(Math.min(newWidth, maxWidth ?? Infinity), minWidth));
134
- }, [
135
- maxWidth,
136
- minWidth,
137
- handlePosition
138
- ]);
139
- const stopResizing = useCallback(() => {
140
- document.body.style.cursor = "";
141
- document.body.style.userSelect = "";
142
- window.removeEventListener("mousemove", resize);
143
- window.removeEventListener("mouseup", stopResizing);
144
- window.removeEventListener("touchmove", resize);
145
- window.removeEventListener("touchend", stopResizing);
146
- }, [resize]);
147
- const startResizing = useCallback((mouseDownEvent) => {
148
- mouseDownEvent.preventDefault();
149
- const container = containerRef.current;
150
- if (!container) return;
151
- const { width: rectWidth } = container.getBoundingClientRect();
152
- const offsetWidth = container.offsetWidth;
153
- const factor = offsetWidth > 0 ? rectWidth / offsetWidth : 1;
154
- let clientX = 0;
155
- if ("touches" in mouseDownEvent) clientX = mouseDownEvent.touches[0].clientX;
156
- else clientX = mouseDownEvent.clientX;
157
- resizeState.current = {
158
- startX: clientX,
159
- startWidth: offsetWidth,
160
- factor
161
- };
162
- document.body.style.cursor = "ew-resize";
163
- document.body.style.userSelect = "none";
164
- window.addEventListener("mousemove", resize, { passive: true });
165
- window.addEventListener("mouseup", stopResizing);
166
- window.addEventListener("touchmove", resize, { passive: true });
167
- window.addEventListener("touchend", stopResizing);
168
- }, [resize, stopResizing]);
169
- useEffect(() => {
170
- return () => {
171
- window.removeEventListener("mousemove", resize);
172
- window.removeEventListener("mouseup", stopResizing);
173
- window.removeEventListener("touchmove", resize);
174
- window.removeEventListener("touchend", stopResizing);
175
- };
176
- }, [resize, stopResizing]);
177
- return /* @__PURE__ */ jsx("div", {
178
- className: cn("relative h-full w-full max-w-[80%] shrink-0 cursor-ew-resize border-neutral-200 transition dark:border-neutral-950", handlePosition === "right" ? ["border-r-[2px]", "after:absolute after:top-1/2 after:right-0 after:block after:h-10 after:w-2 after:translate-x-1/2 after:-translate-y-1/2 after:transform after:cursor-ew-resize after:rounded-full after:bg-neutral-200 after:transition after:content-[\"\"] dark:after:bg-neutral-950"] : ["border-l-[2px]", "after:absolute after:top-1/2 after:left-0 after:block after:h-10 after:w-2 after:-translate-x-1/2 after:-translate-y-1/2 after:transform after:cursor-ew-resize after:rounded-full after:bg-neutral-200 after:transition after:content-[\"\"] dark:after:bg-neutral-950"], "active:border-neutral-400 active:after:bg-neutral-400 dark:active:border-neutral-600 active:dark:after:bg-neutral-600", minWidth && `min-w-[${minWidth}px]`, maxWidth && `max-w-[${maxWidth}px]`),
179
- style: { width: `${width}px` },
180
- ref: containerRef,
181
- onMouseDown: startResizing,
182
- onTouchStart: startResizing,
183
- "aria-valuemin": minWidth,
184
- "aria-valuemax": maxWidth,
185
- "aria-valuenow": width,
186
- "aria-label": "Resizable component",
187
- role: "slider",
188
- tabIndex: 0,
189
- children: /* @__PURE__ */ jsx("div", {
190
- role: "presentation",
191
- className: "absolute top-0 left-0 size-full cursor-default overflow-hidden",
192
- onMouseDown: (e) => e.stopPropagation(),
193
- onTouchStart: (e) => e.stopPropagation(),
194
- children
195
- })
196
- });
197
- };
198
-
199
- //#endregion
200
- export { WithResizer };
1
+ "use client";import{cn as e}from"../../utils/cn.mjs";import{useCallback as t,useEffect as n,useRef as r,useState as i}from"react";import{jsx as a}from"react/jsx-runtime";const o=({initialWidth:o,maxWidth:s,minWidth:c=0,handlePosition:l=`right`,children:u})=>{let d=r(null),[f,p]=i(o),m=r({startX:0,startWidth:0,factor:1}),h=t(e=>{if(m.current.startWidth===0)return;let t=0;e instanceof MouseEvent?t=e.clientX:typeof TouchEvent<`u`&&e instanceof TouchEvent&&(t=e.touches[0].clientX);let{startX:n,startWidth:r,factor:i}=m.current,a=(t-n)/i,o=r+(l===`left`?-a:a);p(Math.max(Math.min(o,s??1/0),c))},[s,c,l]),g=t(()=>{document.body.style.cursor=``,document.body.style.userSelect=``,window.removeEventListener(`mousemove`,h),window.removeEventListener(`mouseup`,g),window.removeEventListener(`touchmove`,h),window.removeEventListener(`touchend`,g)},[h]),_=t(e=>{e.preventDefault();let t=d.current;if(!t)return;let{width:n}=t.getBoundingClientRect(),r=t.offsetWidth,i=r>0?n/r:1,a=0;a=`touches`in e?e.touches[0].clientX:e.clientX,m.current={startX:a,startWidth:r,factor:i},document.body.style.cursor=`ew-resize`,document.body.style.userSelect=`none`,window.addEventListener(`mousemove`,h,{passive:!0}),window.addEventListener(`mouseup`,g),window.addEventListener(`touchmove`,h,{passive:!0}),window.addEventListener(`touchend`,g)},[h,g]);return n(()=>()=>{window.removeEventListener(`mousemove`,h),window.removeEventListener(`mouseup`,g),window.removeEventListener(`touchmove`,h),window.removeEventListener(`touchend`,g)},[h,g]),a(`div`,{className:e(`relative h-full w-full max-w-[80%] shrink-0 cursor-ew-resize border-neutral-200 transition dark:border-neutral-950`,l===`right`?[`border-r-[2px]`,`after:absolute after:top-1/2 after:right-0 after:block after:h-10 after:w-2 after:translate-x-1/2 after:-translate-y-1/2 after:transform after:cursor-ew-resize after:rounded-full after:bg-neutral-200 after:transition after:content-[""] dark:after:bg-neutral-950`]:[`border-l-[2px]`,`after:absolute after:top-1/2 after:left-0 after:block after:h-10 after:w-2 after:-translate-x-1/2 after:-translate-y-1/2 after:transform after:cursor-ew-resize after:rounded-full after:bg-neutral-200 after:transition after:content-[""] dark:after:bg-neutral-950`],`active:border-neutral-400 active:after:bg-neutral-400 dark:active:border-neutral-600 active:dark:after:bg-neutral-600`,c&&`min-w-[${c}px]`,s&&`max-w-[${s}px]`),style:{width:`${f}px`},ref:d,onMouseDown:_,onTouchStart:_,"aria-valuemin":c,"aria-valuemax":s,"aria-valuenow":f,"aria-label":`Resizable component`,role:`slider`,tabIndex:0,children:a(`div`,{role:`presentation`,className:`absolute top-0 left-0 size-full cursor-default overflow-hidden`,onMouseDown:e=>e.stopPropagation(),onTouchStart:e=>e.stopPropagation(),children:u})})};export{o as WithResizer};
201
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/WithResizer/index.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@utils/cn';\nimport React, {\n type FC,\n type PropsWithChildren,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\n/**\n * Props for the WithResizer component.\n *\n * Defines the configuration for a resizable container with drag-based width adjustment.\n *\n * @example\n * ```tsx\n * // Basic resizable container\n * <WithResizer initialWidth={300} minWidth={200} maxWidth={600}>\n * <div className=\"p-4\">Resizable content</div>\n * </WithResizer>\n *\n * // Sidebar with resizing\n * <WithResizer\n * initialWidth={250}\n * minWidth={180}\n * maxWidth={400}\n * >\n * <nav className=\"h-full p-4\">\n * <SidebarContent />\n * </nav>\n * </WithResizer>\n *\n * // Panel with unlimited growth\n * <WithResizer initialWidth={400} minWidth={300}>\n * <div className=\"h-full overflow-auto\">\n * <PanelContent />\n * </div>\n * </WithResizer>\n * ```\n */\ntype WithResizerProps = {\n /** Initial width of the resizable container in pixels */\n initialWidth: number;\n /** Maximum allowed width in pixels (optional, no limit if not specified) */\n maxWidth?: number;\n /** Minimum allowed width in pixels */\n minWidth?: number;\n /** Position of the resize handle (default: 'right') */\n handlePosition?: 'left' | 'right';\n};\n\n/**\n * WithResizer Component\n *\n * A flexible container component that allows users to dynamically resize its width\n * through mouse or touch drag interactions. Perfect for creating adjustable panels,\n * sidebars, and split-pane layouts.\n *\n * ## Features\n * - **Mouse & Touch Support**: Works with both mouse drag and touch interactions\n * - **Constraint Enforcement**: Respects minimum and maximum width boundaries\n * - **Visual Feedback**: Clear resize handle with hover and active states\n * - **Smooth Interactions**: Passive event listeners for optimal performance\n * - **Accessibility**: ARIA slider role with proper value announcements\n * - **Responsive Design**: Adapts to different screen sizes and containers\n *\n * ## Technical Implementation\n * - **Event Handling**: Uses `useCallback` for optimal performance\n * - **Boundary Calculation**: Real-time width calculation based on mouse/touch position\n * - **State Management**: Tracks resizing state for visual feedback\n * - **Memory Management**: Proper cleanup of global event listeners\n * - **Touch Events**: Full support for mobile touch interactions\n *\n * ## Visual Design\n * - **Resize Handle**: Rounded handle positioned on the right border\n * - **Border Indicator**: Visual border showing resizable edge\n * - **State Feedback**: Different colors for normal, hover, and active states\n * - **Dark Mode**: Full support with appropriate color scheme\n * - **Smooth Transitions**: CSS transitions for visual polish\n *\n * ## Use Cases\n * - **Application Sidebars**: Collapsible navigation and tool panels\n * - **Content Panels**: Adjustable content areas in complex layouts\n * - **Split Panes**: Dividing screen space between multiple content areas\n * - **Inspector Panels**: Debugging tools and property inspectors\n * - **File Explorers**: Tree views with adjustable column widths\n * - **Dashboard Widgets**: Customizable widget sizes for dashboards\n *\n * ## Accessibility Features\n * - **ARIA Slider**: Proper slider role for screen readers\n * - **Value Announcements**: Current, minimum, and maximum values announced\n * - **Keyboard Focus**: Focusable with tab navigation\n * - **Clear Affordances**: Visual indicators for interactive elements\n *\n * @example\n * ```tsx\n * // Application sidebar with resizing\n * const [sidebarWidth, setSidebarWidth] = useState(250);\n *\n * <div className=\"flex h-screen\">\n * <WithResizer\n * initialWidth={sidebarWidth}\n * minWidth={200}\n * maxWidth={400}\n * >\n * <aside className=\"h-full bg-gray-100 p-4\">\n * <nav>\n * <NavItems />\n * </nav>\n * </aside>\n * </WithResizer>\n *\n * <main className=\"flex-1 p-6\">\n * <MainContent />\n * </main>\n * </div>\n *\n * // Developer tools panel\n * <WithResizer\n * initialWidth={350}\n * minWidth={250}\n * maxWidth={600}\n * >\n * <div className=\"h-full flex flex-col\">\n * <div className=\"flex-1 overflow-auto p-4\">\n * <InspectorContent />\n * </div>\n * <div className=\"border-t p-2\">\n * <Controls />\n * </div>\n * </div>\n * </WithResizer>\n *\n * // Multi-column layout\n * <div className=\"flex h-full\">\n * <WithResizer initialWidth={300} minWidth={200} maxWidth={500}>\n * <FileExplorer />\n * </WithResizer>\n *\n * <WithResizer initialWidth={400} minWidth={300}>\n * <CodeEditor />\n * </WithResizer>\n *\n * <div className=\"flex-1 min-w-0\">\n * <OutputPanel />\n * </div>\n * </div>\n * ```\n *\n * ## Performance Considerations\n * - Uses passive event listeners to prevent scroll blocking\n * - Optimized with `useCallback` to prevent unnecessary re-renders\n * - Efficient boundary calculations using `getBoundingClientRect`\n * - Minimal DOM manipulation for smooth drag interactions\n *\n * ## Browser Support\n * - Modern browsers with support for touch events\n * - Graceful degradation for older browsers\n * - Mobile-first touch interaction handling\n */\nexport const WithResizer: FC<PropsWithChildren<WithResizerProps>> = ({\n initialWidth,\n maxWidth,\n minWidth = 0,\n handlePosition = 'right',\n children,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [width, setWidth] = useState(initialWidth);\n\n const resizeState = useRef({\n startX: 0,\n startWidth: 0,\n factor: 1,\n });\n\n // Handler to resize the div\n const resize = useCallback(\n (mouseMoveEvent: MouseEvent | TouchEvent) => {\n if (resizeState.current.startWidth === 0) return;\n\n let clientX = 0;\n if (mouseMoveEvent instanceof MouseEvent) {\n clientX = mouseMoveEvent.clientX;\n } else if (\n typeof TouchEvent !== 'undefined' &&\n mouseMoveEvent instanceof TouchEvent\n ) {\n clientX = mouseMoveEvent.touches[0].clientX;\n }\n\n const { startX, startWidth, factor } = resizeState.current;\n const delta = (clientX - startX) / factor;\n // Invert delta for left handle (moving left decreases width, moving right increases width)\n const adjustedDelta = handlePosition === 'left' ? -delta : delta;\n const newWidth = startWidth + adjustedDelta;\n\n const constrainedWidth = Math.max(\n Math.min(newWidth, maxWidth ?? Infinity),\n minWidth\n );\n\n setWidth(constrainedWidth);\n },\n [maxWidth, minWidth, handlePosition]\n );\n\n // Handler to stop resizing\n const stopResizing = useCallback(() => {\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n window.removeEventListener('mousemove', resize);\n window.removeEventListener('mouseup', stopResizing);\n window.removeEventListener('touchmove', resize);\n window.removeEventListener('touchend', stopResizing);\n }, [resize]);\n\n // Handler to start resizing\n const startResizing = useCallback(\n (\n mouseDownEvent:\n | React.MouseEvent<HTMLDivElement>\n | React.TouchEvent<HTMLDivElement>\n ) => {\n mouseDownEvent.preventDefault();\n const container = containerRef.current;\n\n if (!container) return;\n\n const { width: rectWidth } = container.getBoundingClientRect();\n const offsetWidth = container.offsetWidth;\n const factor = offsetWidth > 0 ? rectWidth / offsetWidth : 1;\n\n let clientX = 0;\n if ('touches' in mouseDownEvent) {\n clientX = mouseDownEvent.touches[0].clientX;\n } else {\n clientX = mouseDownEvent.clientX;\n }\n\n resizeState.current = {\n startX: clientX,\n startWidth: offsetWidth,\n factor,\n };\n\n document.body.style.cursor = 'ew-resize';\n document.body.style.userSelect = 'none';\n\n window.addEventListener('mousemove', resize, { passive: true });\n window.addEventListener('mouseup', stopResizing);\n window.addEventListener('touchmove', resize, { passive: true });\n window.addEventListener('touchend', stopResizing);\n },\n [resize, stopResizing]\n );\n\n useEffect(() => {\n return () => {\n window.removeEventListener('mousemove', resize);\n window.removeEventListener('mouseup', stopResizing);\n window.removeEventListener('touchmove', resize);\n window.removeEventListener('touchend', stopResizing);\n };\n }, [resize, stopResizing]);\n\n return (\n <div\n className={cn(\n 'relative h-full w-full max-w-[80%] shrink-0 cursor-ew-resize border-neutral-200 transition dark:border-neutral-950',\n handlePosition === 'right'\n ? [\n 'border-r-[2px]',\n 'after:absolute after:top-1/2 after:right-0 after:block after:h-10 after:w-2 after:translate-x-1/2 after:-translate-y-1/2 after:transform after:cursor-ew-resize after:rounded-full after:bg-neutral-200 after:transition after:content-[\"\"] dark:after:bg-neutral-950',\n ]\n : [\n 'border-l-[2px]',\n 'after:absolute after:top-1/2 after:left-0 after:block after:h-10 after:w-2 after:-translate-x-1/2 after:-translate-y-1/2 after:transform after:cursor-ew-resize after:rounded-full after:bg-neutral-200 after:transition after:content-[\"\"] dark:after:bg-neutral-950',\n ],\n 'active:border-neutral-400 active:after:bg-neutral-400 dark:active:border-neutral-600 active:dark:after:bg-neutral-600',\n minWidth && `min-w-[${minWidth}px]`,\n maxWidth && `max-w-[${maxWidth}px]`\n )}\n style={{\n width: `${width}px`,\n }}\n ref={containerRef}\n onMouseDown={startResizing}\n onTouchStart={startResizing}\n aria-valuemin={minWidth}\n aria-valuemax={maxWidth}\n aria-valuenow={width}\n aria-label=\"Resizable component\"\n role=\"slider\"\n tabIndex={0}\n >\n {/* biome-ignore lint/a11y/noStaticElementInteractions: This div stops event propagation to prevent content clicks from triggering resize */}\n <div\n role=\"presentation\"\n className=\"absolute top-0 left-0 size-full cursor-default overflow-hidden\"\n onMouseDown={(e) => e.stopPropagation()}\n onTouchStart={(e) => e.stopPropagation()}\n >\n {children}\n </div>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmKA,MAAa,eAAwD,EACnE,cACA,UACA,WAAW,GACX,iBAAiB,SACjB,eACI;CACJ,MAAM,eAAe,OAAuB,KAAK;CACjD,MAAM,CAAC,OAAO,YAAY,SAAS,aAAa;CAEhD,MAAM,cAAc,OAAO;EACzB,QAAQ;EACR,YAAY;EACZ,QAAQ;EACT,CAAC;CAGF,MAAM,SAAS,aACZ,mBAA4C;AAC3C,MAAI,YAAY,QAAQ,eAAe,EAAG;EAE1C,IAAI,UAAU;AACd,MAAI,0BAA0B,WAC5B,WAAU,eAAe;WAEzB,OAAO,eAAe,eACtB,0BAA0B,WAE1B,WAAU,eAAe,QAAQ,GAAG;EAGtC,MAAM,EAAE,QAAQ,YAAY,WAAW,YAAY;EACnD,MAAM,SAAS,UAAU,UAAU;EAGnC,MAAM,WAAW,cADK,mBAAmB,SAAS,CAAC,QAAQ;AAQ3D,WALyB,KAAK,IAC5B,KAAK,IAAI,UAAU,YAAY,SAAS,EACxC,SACD,CAEyB;IAE5B;EAAC;EAAU;EAAU;EAAe,CACrC;CAGD,MAAM,eAAe,kBAAkB;AACrC,WAAS,KAAK,MAAM,SAAS;AAC7B,WAAS,KAAK,MAAM,aAAa;AACjC,SAAO,oBAAoB,aAAa,OAAO;AAC/C,SAAO,oBAAoB,WAAW,aAAa;AACnD,SAAO,oBAAoB,aAAa,OAAO;AAC/C,SAAO,oBAAoB,YAAY,aAAa;IACnD,CAAC,OAAO,CAAC;CAGZ,MAAM,gBAAgB,aAElB,mBAGG;AACH,iBAAe,gBAAgB;EAC/B,MAAM,YAAY,aAAa;AAE/B,MAAI,CAAC,UAAW;EAEhB,MAAM,EAAE,OAAO,cAAc,UAAU,uBAAuB;EAC9D,MAAM,cAAc,UAAU;EAC9B,MAAM,SAAS,cAAc,IAAI,YAAY,cAAc;EAE3D,IAAI,UAAU;AACd,MAAI,aAAa,eACf,WAAU,eAAe,QAAQ,GAAG;MAEpC,WAAU,eAAe;AAG3B,cAAY,UAAU;GACpB,QAAQ;GACR,YAAY;GACZ;GACD;AAED,WAAS,KAAK,MAAM,SAAS;AAC7B,WAAS,KAAK,MAAM,aAAa;AAEjC,SAAO,iBAAiB,aAAa,QAAQ,EAAE,SAAS,MAAM,CAAC;AAC/D,SAAO,iBAAiB,WAAW,aAAa;AAChD,SAAO,iBAAiB,aAAa,QAAQ,EAAE,SAAS,MAAM,CAAC;AAC/D,SAAO,iBAAiB,YAAY,aAAa;IAEnD,CAAC,QAAQ,aAAa,CACvB;AAED,iBAAgB;AACd,eAAa;AACX,UAAO,oBAAoB,aAAa,OAAO;AAC/C,UAAO,oBAAoB,WAAW,aAAa;AACnD,UAAO,oBAAoB,aAAa,OAAO;AAC/C,UAAO,oBAAoB,YAAY,aAAa;;IAErD,CAAC,QAAQ,aAAa,CAAC;AAE1B,QACE,oBAAC;EACC,WAAW,GACT,sHACA,mBAAmB,UACf,CACE,kBACA,0QACD,GACD,CACE,kBACA,0QACD,EACL,yHACA,YAAY,UAAU,SAAS,MAC/B,YAAY,UAAU,SAAS,KAChC;EACD,OAAO,EACL,OAAO,GAAG,MAAM,KACjB;EACD,KAAK;EACL,aAAa;EACb,cAAc;EACd,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,cAAW;EACX,MAAK;EACL,UAAU;YAGV,oBAAC;GACC,MAAK;GACL,WAAU;GACV,cAAc,MAAM,EAAE,iBAAiB;GACvC,eAAe,MAAM,EAAE,iBAAiB;GAEvC;IACG;GACF"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/WithResizer/index.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@utils/cn';\nimport React, {\n type FC,\n type PropsWithChildren,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\n/**\n * Props for the WithResizer component.\n *\n * Defines the configuration for a resizable container with drag-based width adjustment.\n *\n * @example\n * ```tsx\n * // Basic resizable container\n * <WithResizer initialWidth={300} minWidth={200} maxWidth={600}>\n * <div className=\"p-4\">Resizable content</div>\n * </WithResizer>\n *\n * // Sidebar with resizing\n * <WithResizer\n * initialWidth={250}\n * minWidth={180}\n * maxWidth={400}\n * >\n * <nav className=\"h-full p-4\">\n * <SidebarContent />\n * </nav>\n * </WithResizer>\n *\n * // Panel with unlimited growth\n * <WithResizer initialWidth={400} minWidth={300}>\n * <div className=\"h-full overflow-auto\">\n * <PanelContent />\n * </div>\n * </WithResizer>\n * ```\n */\ntype WithResizerProps = {\n /** Initial width of the resizable container in pixels */\n initialWidth: number;\n /** Maximum allowed width in pixels (optional, no limit if not specified) */\n maxWidth?: number;\n /** Minimum allowed width in pixels */\n minWidth?: number;\n /** Position of the resize handle (default: 'right') */\n handlePosition?: 'left' | 'right';\n};\n\n/**\n * WithResizer Component\n *\n * A flexible container component that allows users to dynamically resize its width\n * through mouse or touch drag interactions. Perfect for creating adjustable panels,\n * sidebars, and split-pane layouts.\n *\n * ## Features\n * - **Mouse & Touch Support**: Works with both mouse drag and touch interactions\n * - **Constraint Enforcement**: Respects minimum and maximum width boundaries\n * - **Visual Feedback**: Clear resize handle with hover and active states\n * - **Smooth Interactions**: Passive event listeners for optimal performance\n * - **Accessibility**: ARIA slider role with proper value announcements\n * - **Responsive Design**: Adapts to different screen sizes and containers\n *\n * ## Technical Implementation\n * - **Event Handling**: Uses `useCallback` for optimal performance\n * - **Boundary Calculation**: Real-time width calculation based on mouse/touch position\n * - **State Management**: Tracks resizing state for visual feedback\n * - **Memory Management**: Proper cleanup of global event listeners\n * - **Touch Events**: Full support for mobile touch interactions\n *\n * ## Visual Design\n * - **Resize Handle**: Rounded handle positioned on the right border\n * - **Border Indicator**: Visual border showing resizable edge\n * - **State Feedback**: Different colors for normal, hover, and active states\n * - **Dark Mode**: Full support with appropriate color scheme\n * - **Smooth Transitions**: CSS transitions for visual polish\n *\n * ## Use Cases\n * - **Application Sidebars**: Collapsible navigation and tool panels\n * - **Content Panels**: Adjustable content areas in complex layouts\n * - **Split Panes**: Dividing screen space between multiple content areas\n * - **Inspector Panels**: Debugging tools and property inspectors\n * - **File Explorers**: Tree views with adjustable column widths\n * - **Dashboard Widgets**: Customizable widget sizes for dashboards\n *\n * ## Accessibility Features\n * - **ARIA Slider**: Proper slider role for screen readers\n * - **Value Announcements**: Current, minimum, and maximum values announced\n * - **Keyboard Focus**: Focusable with tab navigation\n * - **Clear Affordances**: Visual indicators for interactive elements\n *\n * @example\n * ```tsx\n * // Application sidebar with resizing\n * const [sidebarWidth, setSidebarWidth] = useState(250);\n *\n * <div className=\"flex h-screen\">\n * <WithResizer\n * initialWidth={sidebarWidth}\n * minWidth={200}\n * maxWidth={400}\n * >\n * <aside className=\"h-full bg-gray-100 p-4\">\n * <nav>\n * <NavItems />\n * </nav>\n * </aside>\n * </WithResizer>\n *\n * <main className=\"flex-1 p-6\">\n * <MainContent />\n * </main>\n * </div>\n *\n * // Developer tools panel\n * <WithResizer\n * initialWidth={350}\n * minWidth={250}\n * maxWidth={600}\n * >\n * <div className=\"h-full flex flex-col\">\n * <div className=\"flex-1 overflow-auto p-4\">\n * <InspectorContent />\n * </div>\n * <div className=\"border-t p-2\">\n * <Controls />\n * </div>\n * </div>\n * </WithResizer>\n *\n * // Multi-column layout\n * <div className=\"flex h-full\">\n * <WithResizer initialWidth={300} minWidth={200} maxWidth={500}>\n * <FileExplorer />\n * </WithResizer>\n *\n * <WithResizer initialWidth={400} minWidth={300}>\n * <CodeEditor />\n * </WithResizer>\n *\n * <div className=\"flex-1 min-w-0\">\n * <OutputPanel />\n * </div>\n * </div>\n * ```\n *\n * ## Performance Considerations\n * - Uses passive event listeners to prevent scroll blocking\n * - Optimized with `useCallback` to prevent unnecessary re-renders\n * - Efficient boundary calculations using `getBoundingClientRect`\n * - Minimal DOM manipulation for smooth drag interactions\n *\n * ## Browser Support\n * - Modern browsers with support for touch events\n * - Graceful degradation for older browsers\n * - Mobile-first touch interaction handling\n */\nexport const WithResizer: FC<PropsWithChildren<WithResizerProps>> = ({\n initialWidth,\n maxWidth,\n minWidth = 0,\n handlePosition = 'right',\n children,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [width, setWidth] = useState(initialWidth);\n\n const resizeState = useRef({\n startX: 0,\n startWidth: 0,\n factor: 1,\n });\n\n // Handler to resize the div\n const resize = useCallback(\n (mouseMoveEvent: MouseEvent | TouchEvent) => {\n if (resizeState.current.startWidth === 0) return;\n\n let clientX = 0;\n if (mouseMoveEvent instanceof MouseEvent) {\n clientX = mouseMoveEvent.clientX;\n } else if (\n typeof TouchEvent !== 'undefined' &&\n mouseMoveEvent instanceof TouchEvent\n ) {\n clientX = mouseMoveEvent.touches[0].clientX;\n }\n\n const { startX, startWidth, factor } = resizeState.current;\n const delta = (clientX - startX) / factor;\n // Invert delta for left handle (moving left decreases width, moving right increases width)\n const adjustedDelta = handlePosition === 'left' ? -delta : delta;\n const newWidth = startWidth + adjustedDelta;\n\n const constrainedWidth = Math.max(\n Math.min(newWidth, maxWidth ?? Infinity),\n minWidth\n );\n\n setWidth(constrainedWidth);\n },\n [maxWidth, minWidth, handlePosition]\n );\n\n // Handler to stop resizing\n const stopResizing = useCallback(() => {\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n window.removeEventListener('mousemove', resize);\n window.removeEventListener('mouseup', stopResizing);\n window.removeEventListener('touchmove', resize);\n window.removeEventListener('touchend', stopResizing);\n }, [resize]);\n\n // Handler to start resizing\n const startResizing = useCallback(\n (\n mouseDownEvent:\n | React.MouseEvent<HTMLDivElement>\n | React.TouchEvent<HTMLDivElement>\n ) => {\n mouseDownEvent.preventDefault();\n const container = containerRef.current;\n\n if (!container) return;\n\n const { width: rectWidth } = container.getBoundingClientRect();\n const offsetWidth = container.offsetWidth;\n const factor = offsetWidth > 0 ? rectWidth / offsetWidth : 1;\n\n let clientX = 0;\n if ('touches' in mouseDownEvent) {\n clientX = mouseDownEvent.touches[0].clientX;\n } else {\n clientX = mouseDownEvent.clientX;\n }\n\n resizeState.current = {\n startX: clientX,\n startWidth: offsetWidth,\n factor,\n };\n\n document.body.style.cursor = 'ew-resize';\n document.body.style.userSelect = 'none';\n\n window.addEventListener('mousemove', resize, { passive: true });\n window.addEventListener('mouseup', stopResizing);\n window.addEventListener('touchmove', resize, { passive: true });\n window.addEventListener('touchend', stopResizing);\n },\n [resize, stopResizing]\n );\n\n useEffect(() => {\n return () => {\n window.removeEventListener('mousemove', resize);\n window.removeEventListener('mouseup', stopResizing);\n window.removeEventListener('touchmove', resize);\n window.removeEventListener('touchend', stopResizing);\n };\n }, [resize, stopResizing]);\n\n return (\n <div\n className={cn(\n 'relative h-full w-full max-w-[80%] shrink-0 cursor-ew-resize border-neutral-200 transition dark:border-neutral-950',\n handlePosition === 'right'\n ? [\n 'border-r-[2px]',\n 'after:absolute after:top-1/2 after:right-0 after:block after:h-10 after:w-2 after:translate-x-1/2 after:-translate-y-1/2 after:transform after:cursor-ew-resize after:rounded-full after:bg-neutral-200 after:transition after:content-[\"\"] dark:after:bg-neutral-950',\n ]\n : [\n 'border-l-[2px]',\n 'after:absolute after:top-1/2 after:left-0 after:block after:h-10 after:w-2 after:-translate-x-1/2 after:-translate-y-1/2 after:transform after:cursor-ew-resize after:rounded-full after:bg-neutral-200 after:transition after:content-[\"\"] dark:after:bg-neutral-950',\n ],\n 'active:border-neutral-400 active:after:bg-neutral-400 dark:active:border-neutral-600 active:dark:after:bg-neutral-600',\n minWidth && `min-w-[${minWidth}px]`,\n maxWidth && `max-w-[${maxWidth}px]`\n )}\n style={{\n width: `${width}px`,\n }}\n ref={containerRef}\n onMouseDown={startResizing}\n onTouchStart={startResizing}\n aria-valuemin={minWidth}\n aria-valuemax={maxWidth}\n aria-valuenow={width}\n aria-label=\"Resizable component\"\n role=\"slider\"\n tabIndex={0}\n >\n {/* biome-ignore lint/a11y/noStaticElementInteractions: This div stops event propagation to prevent content clicks from triggering resize */}\n <div\n role=\"presentation\"\n className=\"absolute top-0 left-0 size-full cursor-default overflow-hidden\"\n onMouseDown={(e) => e.stopPropagation()}\n onTouchStart={(e) => e.stopPropagation()}\n >\n {children}\n </div>\n </div>\n );\n};\n"],"mappings":"0KAmKA,MAAa,GAAwD,CACnE,eACA,WACA,WAAW,EACX,iBAAiB,QACjB,cACI,CACJ,IAAM,EAAe,EAAuB,KAAK,CAC3C,CAAC,EAAO,GAAY,EAAS,EAAa,CAE1C,EAAc,EAAO,CACzB,OAAQ,EACR,WAAY,EACZ,OAAQ,EACT,CAAC,CAGI,EAAS,EACZ,GAA4C,CAC3C,GAAI,EAAY,QAAQ,aAAe,EAAG,OAE1C,IAAI,EAAU,EACV,aAA0B,WAC5B,EAAU,EAAe,QAEzB,OAAO,WAAe,KACtB,aAA0B,aAE1B,EAAU,EAAe,QAAQ,GAAG,SAGtC,GAAM,CAAE,SAAQ,aAAY,UAAW,EAAY,QAC7C,GAAS,EAAU,GAAU,EAG7B,EAAW,GADK,IAAmB,OAAS,CAAC,EAAQ,GAQ3D,EALyB,KAAK,IAC5B,KAAK,IAAI,EAAU,GAAY,IAAS,CACxC,EACD,CAEyB,EAE5B,CAAC,EAAU,EAAU,EAAe,CACrC,CAGK,EAAe,MAAkB,CACrC,SAAS,KAAK,MAAM,OAAS,GAC7B,SAAS,KAAK,MAAM,WAAa,GACjC,OAAO,oBAAoB,YAAa,EAAO,CAC/C,OAAO,oBAAoB,UAAW,EAAa,CACnD,OAAO,oBAAoB,YAAa,EAAO,CAC/C,OAAO,oBAAoB,WAAY,EAAa,EACnD,CAAC,EAAO,CAAC,CAGN,EAAgB,EAElB,GAGG,CACH,EAAe,gBAAgB,CAC/B,IAAM,EAAY,EAAa,QAE/B,GAAI,CAAC,EAAW,OAEhB,GAAM,CAAE,MAAO,GAAc,EAAU,uBAAuB,CACxD,EAAc,EAAU,YACxB,EAAS,EAAc,EAAI,EAAY,EAAc,EAEvD,EAAU,EACd,AAGE,EAHE,YAAa,EACL,EAAe,QAAQ,GAAG,QAE1B,EAAe,QAG3B,EAAY,QAAU,CACpB,OAAQ,EACR,WAAY,EACZ,SACD,CAED,SAAS,KAAK,MAAM,OAAS,YAC7B,SAAS,KAAK,MAAM,WAAa,OAEjC,OAAO,iBAAiB,YAAa,EAAQ,CAAE,QAAS,GAAM,CAAC,CAC/D,OAAO,iBAAiB,UAAW,EAAa,CAChD,OAAO,iBAAiB,YAAa,EAAQ,CAAE,QAAS,GAAM,CAAC,CAC/D,OAAO,iBAAiB,WAAY,EAAa,EAEnD,CAAC,EAAQ,EAAa,CACvB,CAWD,OATA,UACe,CACX,OAAO,oBAAoB,YAAa,EAAO,CAC/C,OAAO,oBAAoB,UAAW,EAAa,CACnD,OAAO,oBAAoB,YAAa,EAAO,CAC/C,OAAO,oBAAoB,WAAY,EAAa,EAErD,CAAC,EAAQ,EAAa,CAAC,CAGxB,EAAC,MAAA,CACC,UAAW,EACT,qHACA,IAAmB,QACf,CACE,iBACA,wQACD,CACD,CACE,iBACA,wQACD,CACL,wHACA,GAAY,UAAU,EAAS,KAC/B,GAAY,UAAU,EAAS,KAChC,CACD,MAAO,CACL,MAAO,GAAG,EAAM,IACjB,CACD,IAAK,EACL,YAAa,EACb,aAAc,EACd,gBAAe,EACf,gBAAe,EACf,gBAAe,EACf,aAAW,sBACX,KAAK,SACL,SAAU,WAGV,EAAC,MAAA,CACC,KAAK,eACL,UAAU,iEACV,YAAc,GAAM,EAAE,iBAAiB,CACvC,aAAe,GAAM,EAAE,iBAAiB,CAEvC,YACG,EACF"}