@intlayer/design-system 8.1.1 → 8.1.3-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (834) 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 -175
  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 -912
  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/Container/index.d.ts +1 -1
  783. package/dist/types/components/CopyButton/CopyButton.content.d.ts +1 -1
  784. package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts +1 -1
  785. package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts +1 -1
  786. package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts +1 -1
  787. package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts.map +1 -1
  788. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts +1 -1
  789. package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts +1 -1
  790. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts +1 -1
  791. package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts +1 -1
  792. package/dist/types/components/DictionaryEditor/NodeWrapper/index.d.ts.map +1 -1
  793. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
  794. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +12 -12
  795. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +4 -4
  796. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +27 -27
  797. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +16 -16
  798. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.d.ts +1 -1
  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/code.content.d.ts +2 -2
  809. package/dist/types/components/IDE/copyCode.content.d.ts +2 -2
  810. package/dist/types/components/IDE/selectors.content.d.ts +6 -6
  811. package/dist/types/components/Input/Checkbox.d.ts +2 -2
  812. package/dist/types/components/Input/Input.d.ts +1 -1
  813. package/dist/types/components/Link/Link.d.ts +1 -1
  814. package/dist/types/components/Loader/index.content.d.ts +1 -1
  815. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +8 -8
  816. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +6 -6
  817. package/dist/types/components/Pagination/Pagination.d.ts +2 -2
  818. package/dist/types/components/Pagination/pagination.content.d.ts +7 -7
  819. package/dist/types/components/RightDrawer/RightDrawer.d.ts +5 -0
  820. package/dist/types/components/RightDrawer/RightDrawer.d.ts.map +1 -1
  821. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts +2 -2
  822. package/dist/types/components/SwitchSelector/index.d.ts +1 -1
  823. package/dist/types/components/Tab/Tab.d.ts +1 -1
  824. package/dist/types/components/TabSelector/TabSelector.d.ts +1 -1
  825. package/dist/types/components/Table/table.content.d.ts +1 -1
  826. package/dist/types/components/Tag/index.d.ts +1 -1
  827. package/dist/types/components/Terminal/terminal.content.d.ts +2 -2
  828. package/dist/types/components/Toaster/Toast.d.ts +1 -1
  829. package/dist/types/hooks/reactQuery.d.ts.map +1 -1
  830. package/dist/types/hooks/useAuth/useSession.d.ts +1 -1
  831. package/dist/types/hooks/useAuth/useSession.d.ts.map +1 -1
  832. package/dist/types/providers/ReactQueryProvider.d.ts.map +1 -1
  833. package/package.json +17 -17
  834. package/tailwind.css +3 -1
@@ -1,250 +1,2 @@
1
- 'use client';
2
-
3
- import { cn } from "../../utils/cn.mjs";
4
- import { Button } from "../Button/Button.mjs";
5
- import { Input, inputVariants } from "../Input/Input.mjs";
6
- import { useEffect, useImperativeHandle, useRef, useState } from "react";
7
- import { ArrowLeft, ArrowRight, RotateCw } from "lucide-react";
8
- import { jsx, jsxs } from "react/jsx-runtime";
9
- import { useIntlayer } from "react-intlayer";
10
-
11
- //#region src/components/Browser/Browser.tsx
12
- const Browser = ({ initialUrl = "https://example.com", path, className, style, size = "md", "aria-label": ariaLabel, sandbox = "allow-scripts allow-same-origin allow-forms allow-popups allow-popups-to-escape-sandbox allow-downloads", ref, domainRestriction, ...props }) => {
13
- const [inputUrl, setInputUrl] = useState(initialUrl);
14
- const [currentUrl, setCurrentUrl] = useState(initialUrl);
15
- const [history, setHistory] = useState([initialUrl]);
16
- const [currentIndex, setCurrentIndex] = useState(0);
17
- const [error, setError] = useState(null);
18
- const [submitted, setSubmitted] = useState(false);
19
- const internalIframeRef = useRef(null);
20
- useImperativeHandle(ref, () => internalIframeRef.current, []);
21
- const content = useIntlayer("browser");
22
- useEffect(() => {
23
- setInputUrl(initialUrl);
24
- setCurrentUrl(initialUrl);
25
- setHistory([initialUrl]);
26
- setCurrentIndex(0);
27
- setError(null);
28
- setSubmitted(false);
29
- }, [initialUrl]);
30
- useEffect(() => {
31
- if (!path) return;
32
- try {
33
- const baseOrigin = domainRestriction ?? initialUrl;
34
- const fullUrl = `${new URL(baseOrigin).origin}${path}`;
35
- setInputUrl(fullUrl);
36
- let isAlreadyAtUrl = false;
37
- if (internalIframeRef.current?.contentWindow) try {
38
- const currentIframeHref = internalIframeRef.current.contentWindow.location.href;
39
- if (new URL(currentIframeHref).href === new URL(fullUrl).href) isAlreadyAtUrl = true;
40
- } catch {}
41
- if (history[currentIndex] !== fullUrl) {
42
- setHistory((prev) => {
43
- const newHistory = prev.slice(0, currentIndex + 1);
44
- newHistory.push(fullUrl);
45
- return newHistory;
46
- });
47
- setCurrentIndex((prev) => prev + 1);
48
- }
49
- if (!isAlreadyAtUrl) setCurrentUrl(fullUrl);
50
- setError(null);
51
- } catch {}
52
- }, [
53
- path,
54
- domainRestriction,
55
- initialUrl
56
- ]);
57
- const handleNavigateTo = (url) => {
58
- try {
59
- const validated = normalizeUrl(url);
60
- if (validated === currentUrl) {
61
- handleReload();
62
- return;
63
- }
64
- setCurrentUrl(validated);
65
- setInputUrl(validated);
66
- setError(null);
67
- const newHistory = history.slice(0, currentIndex + 1);
68
- newHistory.push(validated);
69
- setHistory(newHistory);
70
- setCurrentIndex(newHistory.length - 1);
71
- } catch (e) {
72
- if (e instanceof Error && e.message === "URL does not match allowed domain" && domainRestriction) setError(content.domainRestrictionError?.value ?? `Only URLs from ${domainRestriction} are allowed.`);
73
- else setError(content.errorMessage.value);
74
- }
75
- };
76
- const handleBack = () => {
77
- if (currentIndex > 0) {
78
- const newIndex = currentIndex - 1;
79
- const prevUrl = history[newIndex];
80
- setCurrentIndex(newIndex);
81
- setCurrentUrl(prevUrl);
82
- setInputUrl(prevUrl);
83
- setError(null);
84
- }
85
- };
86
- const handleForward = () => {
87
- if (currentIndex < history.length - 1) {
88
- const newIndex = currentIndex + 1;
89
- const nextUrl = history[newIndex];
90
- setCurrentIndex(newIndex);
91
- setCurrentUrl(nextUrl);
92
- setInputUrl(nextUrl);
93
- setError(null);
94
- }
95
- };
96
- const handleSubmit = (e) => {
97
- e.preventDefault();
98
- setSubmitted(true);
99
- handleNavigateTo(inputUrl);
100
- };
101
- const handleReload = () => {
102
- if (internalIframeRef.current) {
103
- const src = internalIframeRef.current.src;
104
- internalIframeRef.current.src = "";
105
- setTimeout(() => {
106
- if (internalIframeRef.current) internalIframeRef.current.src = src;
107
- }, 50);
108
- }
109
- };
110
- const isValidHostname = (host) => {
111
- if (host === "localhost") return true;
112
- if (/^(\d{1,3}\.){3}\d{1,3}$/.test(host)) return true;
113
- if (/^[a-f0-9:]+$/i.test(host)) return true;
114
- if (!/^[a-z0-9.-]+$/i.test(host)) return false;
115
- if (/^[-.]/.test(host) || /[-.]$/.test(host)) return false;
116
- if (host.includes("..")) return false;
117
- if (!host.includes(".")) return false;
118
- return true;
119
- };
120
- const getRestrictionOrigin = () => {
121
- if (!domainRestriction) return null;
122
- try {
123
- return new URL(domainRestriction);
124
- } catch {
125
- return null;
126
- }
127
- };
128
- const normalizeUrl = (raw) => {
129
- const trimmed = raw.trim();
130
- if (!trimmed || /\s/.test(trimmed)) throw new Error("Invalid");
131
- const restrictionOrigin = getRestrictionOrigin();
132
- if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
133
- if (restrictionOrigin) return new URL(`${restrictionOrigin.origin}${trimmed}`).toString();
134
- return new URL(`${new URL(currentUrl).origin}${trimmed}`).toString();
135
- }
136
- const candidate = /^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(trimmed) ? trimmed : `https://${trimmed}`;
137
- const url = new URL(candidate);
138
- if (url.protocol !== "http:" && url.protocol !== "https:") throw new Error("Only http(s) is allowed");
139
- if (!isValidHostname(url.hostname)) throw new Error("Invalid host");
140
- if (restrictionOrigin) {
141
- if (!(url.hostname === restrictionOrigin.hostname && url.protocol === restrictionOrigin.protocol && (restrictionOrigin.port === "" || url.port === restrictionOrigin.port || url.host === restrictionOrigin.host))) throw new Error("URL does not match allowed domain");
142
- }
143
- return url.toString();
144
- };
145
- const showError = submitted && !!error;
146
- const canGoBack = currentIndex > 0;
147
- const canGoForward = currentIndex < history.length - 1;
148
- return /* @__PURE__ */ jsxs("section", {
149
- className: cn("flex w-full flex-col overflow-hidden rounded-xl bg-background shadow-[0_4px_12px_rgba(0,0,0,0.4),0_0_1px_rgba(0,0,0,0.2)]", className),
150
- style,
151
- "aria-label": ariaLabel ?? content.ariaLabel.value,
152
- children: [/* @__PURE__ */ jsxs("div", {
153
- className: "relative z-10 flex shrink-0 items-center gap-3 rounded-t-xl bg-text/15 px-4 py-2",
154
- children: [
155
- /* @__PURE__ */ jsxs("div", {
156
- className: "flex items-center gap-1",
157
- children: [/* @__PURE__ */ jsx(Button, {
158
- type: "button",
159
- onClick: handleBack,
160
- disabled: !canGoBack,
161
- variant: "hoverable",
162
- size: "icon-md",
163
- label: content.backButtonLabel.value,
164
- Icon: ArrowLeft
165
- }), /* @__PURE__ */ jsx(Button, {
166
- type: "button",
167
- onClick: handleForward,
168
- disabled: !canGoForward,
169
- variant: "hoverable",
170
- size: "icon-md",
171
- label: content.forwardButtonLabel.value,
172
- Icon: ArrowRight
173
- })]
174
- }),
175
- /* @__PURE__ */ jsxs("form", {
176
- onSubmit: handleSubmit,
177
- noValidate: true,
178
- className: cn(inputVariants(), "flex w-full gap-2 rounded-xl p-0.5! supports-[corner-shape:squircle]:rounded-2xl", "bg-neutral/10 text-text/50 placeholder:text-neutral/80"),
179
- children: [
180
- /* @__PURE__ */ jsx("label", {
181
- htmlFor: "browser-url",
182
- className: "sr-only",
183
- children: content.urlLabel.value
184
- }),
185
- /* @__PURE__ */ jsx(Input, {
186
- id: "browser-url",
187
- type: "text",
188
- inputMode: "url",
189
- spellCheck: false,
190
- autoCapitalize: "off",
191
- variant: "invisible",
192
- className: "ml-3 p-0!",
193
- size: "sm",
194
- autoCorrect: "off",
195
- value: inputUrl,
196
- onChange: (e) => {
197
- setInputUrl(e.target.value);
198
- if (showError) setError(null);
199
- },
200
- placeholder: content.urlPlaceholder.value,
201
- "aria-label": content.urlLabel.value,
202
- "aria-invalid": showError,
203
- "aria-describedby": showError ? "browser-url-error" : void 0
204
- }),
205
- /* @__PURE__ */ jsx(Button, {
206
- type: "button",
207
- onClick: handleReload,
208
- variant: "hoverable",
209
- size: "icon-md",
210
- className: "p-1!",
211
- label: "content.reloadButtonTitle.value",
212
- Icon: RotateCw
213
- }),
214
- /* @__PURE__ */ jsx("button", {
215
- type: "submit",
216
- className: "sr-only absolute",
217
- tabIndex: -1
218
- })
219
- ]
220
- }),
221
- showError && /* @__PURE__ */ jsx("div", {
222
- className: "absolute top-full left-4 z-20 mt-1",
223
- children: /* @__PURE__ */ jsx("p", {
224
- id: "browser-url-error",
225
- role: "alert",
226
- "aria-live": "assertive",
227
- className: "rounded-md bg-red-900/90 px-3 py-1.5 text-red-100 text-xs shadow-md backdrop-blur-sm",
228
- children: error
229
- })
230
- })
231
- ]
232
- }), /* @__PURE__ */ jsx("div", {
233
- className: "relative z-0 flex min-h-0 w-full flex-1 flex-col overflow-hidden rounded-b-xl bg-background",
234
- children: /* @__PURE__ */ jsx("iframe", {
235
- ref: internalIframeRef,
236
- src: currentUrl,
237
- title: content.iframeTitle.value,
238
- className: "size-full flex-1",
239
- sandbox,
240
- loading: "lazy",
241
- "aria-live": "polite",
242
- ...props
243
- })
244
- })]
245
- });
246
- };
247
-
248
- //#endregion
249
- export { Browser };
1
+ "use client";import{cn as e}from"../../utils/cn.mjs";import{Button as t}from"../Button/Button.mjs";import{Input as n,inputVariants as r}from"../Input/Input.mjs";import{ArrowLeft as i,ArrowRight as a,RotateCw as o}from"lucide-react";import{useEffect as s,useImperativeHandle as c,useRef as l,useState as u}from"react";import{jsx as d,jsxs as f}from"react/jsx-runtime";import{useIntlayer as p}from"react-intlayer";const m=({initialUrl:m=`https://example.com`,path:h,className:g,style:_,size:v=`md`,"aria-label":y,sandbox:b=`allow-scripts allow-same-origin allow-forms allow-popups allow-popups-to-escape-sandbox allow-downloads`,ref:x,domainRestriction:S,...C})=>{let[w,T]=u(m),[E,D]=u(m),[O,k]=u([m]),[A,j]=u(0),[M,N]=u(null),[P,F]=u(!1),I=l(null);c(x,()=>I.current,[]);let L=p(`browser`);s(()=>{T(m),D(m),k([m]),j(0),N(null),F(!1)},[m]),s(()=>{if(h)try{let e=S??m,t=`${new URL(e).origin}${h}`;T(t);let n=!1;if(I.current?.contentWindow)try{let e=I.current.contentWindow.location.href;new URL(e).href===new URL(t).href&&(n=!0)}catch{}O[A]!==t&&(k(e=>{let n=e.slice(0,A+1);return n.push(t),n}),j(e=>e+1)),n||D(t),N(null)}catch{}},[h,S,m]);let R=e=>{try{let t=G(e);if(t===E){H();return}D(t),T(t),N(null);let n=O.slice(0,A+1);n.push(t),k(n),j(n.length-1)}catch(e){e instanceof Error&&e.message===`URL does not match allowed domain`&&S?N(L.domainRestrictionError?.value??`Only URLs from ${S} are allowed.`):N(L.errorMessage.value)}},z=()=>{if(A>0){let e=A-1,t=O[e];j(e),D(t),T(t),N(null)}},B=()=>{if(A<O.length-1){let e=A+1,t=O[e];j(e),D(t),T(t),N(null)}},V=e=>{e.preventDefault(),F(!0),R(w)},H=()=>{if(I.current){let e=I.current.src;I.current.src=``,setTimeout(()=>{I.current&&(I.current.src=e)},50)}},U=e=>e===`localhost`||/^(\d{1,3}\.){3}\d{1,3}$/.test(e)||/^[a-f0-9:]+$/i.test(e)?!0:!(!/^[a-z0-9.-]+$/i.test(e)||/^[-.]/.test(e)||/[-.]$/.test(e)||e.includes(`..`)||!e.includes(`.`)),W=()=>{if(!S)return null;try{return new URL(S)}catch{return null}},G=e=>{let t=e.trim();if(!t||/\s/.test(t))throw Error(`Invalid`);let n=W();if(t.startsWith(`/`)&&!t.startsWith(`//`))return n?new URL(`${n.origin}${t}`).toString():new URL(`${new URL(E).origin}${t}`).toString();let r=/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(t)?t:`https://${t}`,i=new URL(r);if(i.protocol!==`http:`&&i.protocol!==`https:`)throw Error(`Only http(s) is allowed`);if(!U(i.hostname))throw Error(`Invalid host`);if(n&&!(i.hostname===n.hostname&&i.protocol===n.protocol&&(n.port===``||i.port===n.port||i.host===n.host)))throw Error(`URL does not match allowed domain`);return i.toString()},K=P&&!!M,q=A>0,J=A<O.length-1;return f(`section`,{className:e(`flex w-full flex-col overflow-hidden rounded-xl bg-background shadow-[0_4px_12px_rgba(0,0,0,0.4),0_0_1px_rgba(0,0,0,0.2)]`,g),style:_,"aria-label":y??L.ariaLabel.value,children:[f(`div`,{className:`relative z-10 flex shrink-0 items-center gap-3 rounded-t-xl bg-text/15 px-4 py-2`,children:[f(`div`,{className:`flex items-center gap-1`,children:[d(t,{type:`button`,onClick:z,disabled:!q,variant:`hoverable`,size:`icon-md`,label:L.backButtonLabel.value,Icon:i}),d(t,{type:`button`,onClick:B,disabled:!J,variant:`hoverable`,size:`icon-md`,label:L.forwardButtonLabel.value,Icon:a})]}),f(`form`,{onSubmit:V,noValidate:!0,className:e(r(),`flex w-full gap-2 rounded-xl p-0.5! supports-[corner-shape:squircle]:rounded-2xl`,`bg-neutral/10 text-text/50 placeholder:text-neutral/80`),children:[d(`label`,{htmlFor:`browser-url`,className:`sr-only`,children:L.urlLabel.value}),d(n,{id:`browser-url`,type:`text`,inputMode:`url`,spellCheck:!1,autoCapitalize:`off`,variant:`invisible`,className:`ml-3 p-0!`,size:`sm`,autoCorrect:`off`,value:w,onChange:e=>{T(e.target.value),K&&N(null)},placeholder:L.urlPlaceholder.value,"aria-label":L.urlLabel.value,"aria-invalid":K,"aria-describedby":K?`browser-url-error`:void 0}),d(t,{type:`button`,onClick:H,variant:`hoverable`,size:`icon-md`,className:`p-1!`,label:`content.reloadButtonTitle.value`,Icon:o}),d(`button`,{type:`submit`,className:`sr-only absolute`,tabIndex:-1})]}),K&&d(`div`,{className:`absolute top-full left-4 z-20 mt-1`,children:d(`p`,{id:`browser-url-error`,role:`alert`,"aria-live":`assertive`,className:`rounded-md bg-red-900/90 px-3 py-1.5 text-red-100 text-xs shadow-md backdrop-blur-sm`,children:M})})]}),d(`div`,{className:`relative z-0 flex min-h-0 w-full flex-1 flex-col overflow-hidden rounded-b-xl bg-background`,children:d(`iframe`,{ref:I,src:E,title:L.iframeTitle.value,className:`size-full flex-1`,sandbox:b,loading:`lazy`,"aria-live":`polite`,...C})})]})};export{m as Browser};
250
2
  //# sourceMappingURL=Browser.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Browser.mjs","names":[],"sources":["../../../../src/components/Browser/Browser.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@utils/cn';\nimport { ArrowLeft, ArrowRight, RotateCw } from 'lucide-react';\nimport {\n type CSSProperties,\n type FormEvent,\n type HTMLAttributes,\n type RefObject,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Button } from '../Button';\nimport { Input, inputVariants } from '../Input';\n\nexport type BrowserProps = {\n initialUrl?: string;\n path?: string;\n className?: string;\n style?: CSSProperties;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n 'aria-label'?: string;\n sandbox?: string;\n ref?: RefObject<HTMLIFrameElement | null>;\n domainRestriction?: string;\n} & HTMLAttributes<HTMLIFrameElement>;\n\nexport const Browser = ({\n initialUrl = 'https://example.com',\n path,\n className,\n style,\n size = 'md',\n 'aria-label': ariaLabel,\n sandbox = 'allow-scripts allow-same-origin allow-forms allow-popups allow-popups-to-escape-sandbox allow-downloads',\n ref,\n domainRestriction,\n ...props\n}: BrowserProps) => {\n // --- State -----------------------------------------------------------------\n const [inputUrl, setInputUrl] = useState(initialUrl);\n const [currentUrl, setCurrentUrl] = useState(initialUrl);\n\n // History Management\n const [history, setHistory] = useState<string[]>([initialUrl]);\n const [currentIndex, setCurrentIndex] = useState(0);\n\n const [error, setError] = useState<string | null>(null);\n const [submitted, setSubmitted] = useState(false);\n const internalIframeRef = useRef<HTMLIFrameElement>(null);\n\n useImperativeHandle(ref, () => internalIframeRef.current!, []);\n const content = useIntlayer('browser');\n\n // --- Effects ---------------------------------------------------------------\n\n // Reset everything if initialUrl changes completely\n useEffect(() => {\n setInputUrl(initialUrl);\n setCurrentUrl(initialUrl);\n setHistory([initialUrl]);\n setCurrentIndex(0);\n setError(null);\n setSubmitted(false);\n }, [initialUrl]);\n\n // Sync external path changes with the URL bar and History\n useEffect(() => {\n if (!path) return;\n\n try {\n const baseOrigin = domainRestriction ?? initialUrl;\n const origin = new URL(baseOrigin).origin;\n const fullUrl = `${origin}${path}`;\n\n // Update Input (Always update the visual bar)\n setInputUrl(fullUrl);\n\n // Check internal iframe state to avoid reload if already there\n let isAlreadyAtUrl = false;\n if (internalIframeRef.current?.contentWindow) {\n try {\n const currentIframeHref =\n internalIframeRef.current.contentWindow.location.href;\n if (new URL(currentIframeHref).href === new URL(fullUrl).href) {\n isAlreadyAtUrl = true;\n }\n } catch {\n // Cross-origin access ignored\n }\n }\n\n // Update History Stack\n // We perform this check regardless of `isAlreadyAtUrl`.\n // If the path changed (even internally), we want to record it in the arrow stack.\n if (history[currentIndex] !== fullUrl) {\n setHistory((prev) => {\n const newHistory = prev.slice(0, currentIndex + 1);\n newHistory.push(fullUrl);\n return newHistory;\n });\n setCurrentIndex((prev) => prev + 1);\n }\n\n // Navigate (Update src) only if NOT already there\n // This prevents the iframe from refreshing when the user navigated inside it.\n if (!isAlreadyAtUrl) {\n setCurrentUrl(fullUrl);\n }\n\n setError(null);\n } catch {\n // Ignore invalid paths\n }\n }, [path, domainRestriction, initialUrl]); // Removed currentIndex dependency to prevent loops\n\n // --- Navigation Logic ------------------------------------------------------\n\n const handleNavigateTo = (url: string) => {\n try {\n const validated = normalizeUrl(url);\n\n // If we are navigating to the exact same URL, just reload\n if (validated === currentUrl) {\n handleReload();\n return;\n }\n\n setCurrentUrl(validated);\n setInputUrl(validated);\n setError(null);\n\n // Update History: Slice future if we went back, then push new\n const newHistory = history.slice(0, currentIndex + 1);\n newHistory.push(validated);\n setHistory(newHistory);\n setCurrentIndex(newHistory.length - 1);\n } catch (e) {\n if (\n e instanceof Error &&\n e.message === 'URL does not match allowed domain' &&\n domainRestriction\n ) {\n setError(\n content.domainRestrictionError?.value ??\n `Only URLs from ${domainRestriction} are allowed.`\n );\n } else {\n setError(content.errorMessage.value);\n }\n }\n };\n\n const handleBack = () => {\n if (currentIndex > 0) {\n const newIndex = currentIndex - 1;\n const prevUrl = history[newIndex];\n setCurrentIndex(newIndex);\n setCurrentUrl(prevUrl);\n setInputUrl(prevUrl);\n setError(null);\n }\n };\n\n const handleForward = () => {\n if (currentIndex < history.length - 1) {\n const newIndex = currentIndex + 1;\n const nextUrl = history[newIndex];\n setCurrentIndex(newIndex);\n setCurrentUrl(nextUrl);\n setInputUrl(nextUrl);\n setError(null);\n }\n };\n\n const handleSubmit = (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setSubmitted(true);\n handleNavigateTo(inputUrl);\n };\n\n const handleReload = () => {\n if (internalIframeRef.current) {\n // Create a clean reload effect\n const src = internalIframeRef.current.src;\n internalIframeRef.current.src = '';\n setTimeout(() => {\n if (internalIframeRef.current) internalIframeRef.current.src = src;\n }, 50);\n }\n };\n\n // --- Validation Helpers ----------------------------------------------------\n const isValidHostname = (host: string) => {\n if (host === 'localhost') return true;\n if (/^(\\d{1,3}\\.){3}\\d{1,3}$/.test(host)) return true;\n if (/^[a-f0-9:]+$/i.test(host)) return true;\n if (!/^[a-z0-9.-]+$/i.test(host)) return false;\n if (/^[-.]/.test(host) || /[-.]$/.test(host)) return false;\n if (host.includes('..')) return false;\n if (!host.includes('.')) return false;\n return true;\n };\n\n const getRestrictionOrigin = (): URL | null => {\n if (!domainRestriction) return null;\n try {\n return new URL(domainRestriction);\n } catch {\n return null;\n }\n };\n\n const normalizeUrl = (raw: string) => {\n const trimmed = raw.trim();\n if (!trimmed || /\\s/.test(trimmed)) throw new Error('Invalid');\n\n const restrictionOrigin = getRestrictionOrigin();\n const isRelativePath = trimmed.startsWith('/') && !trimmed.startsWith('//');\n\n if (isRelativePath) {\n if (restrictionOrigin) {\n return new URL(`${restrictionOrigin.origin}${trimmed}`).toString();\n }\n return new URL(`${new URL(currentUrl).origin}${trimmed}`).toString();\n }\n\n const hasProtocol = /^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(trimmed);\n const candidate = hasProtocol ? trimmed : `https://${trimmed}`;\n const url = new URL(candidate);\n\n if (url.protocol !== 'http:' && url.protocol !== 'https:') {\n throw new Error('Only http(s) is allowed');\n }\n\n if (!isValidHostname(url.hostname)) throw new Error('Invalid host');\n\n if (restrictionOrigin) {\n const urlMatches =\n url.hostname === restrictionOrigin.hostname &&\n url.protocol === restrictionOrigin.protocol &&\n (restrictionOrigin.port === '' ||\n url.port === restrictionOrigin.port ||\n url.host === restrictionOrigin.host);\n\n if (!urlMatches) throw new Error('URL does not match allowed domain');\n }\n\n return url.toString();\n };\n\n const showError = submitted && !!error;\n const canGoBack = currentIndex > 0;\n const canGoForward = currentIndex < history.length - 1;\n\n return (\n <section\n className={cn(\n 'flex w-full flex-col overflow-hidden rounded-xl bg-background shadow-[0_4px_12px_rgba(0,0,0,0.4),0_0_1px_rgba(0,0,0,0.2)]',\n className\n )}\n style={style}\n aria-label={ariaLabel ?? content.ariaLabel.value}\n >\n {/* Top bar */}\n <div className=\"relative z-10 flex shrink-0 items-center gap-3 rounded-t-xl bg-text/15 px-4 py-2\">\n {/* Navigation Controls */}\n <div className=\"flex items-center gap-1\">\n <Button\n type=\"button\"\n onClick={handleBack}\n disabled={!canGoBack}\n variant=\"hoverable\"\n size=\"icon-md\"\n label={content.backButtonLabel.value}\n Icon={ArrowLeft}\n />\n <Button\n type=\"button\"\n onClick={handleForward}\n disabled={!canGoForward}\n variant=\"hoverable\"\n size=\"icon-md\"\n label={content.forwardButtonLabel.value}\n Icon={ArrowRight}\n />\n </div>\n\n {/* URL Bar */}\n <form\n onSubmit={handleSubmit}\n noValidate\n className={cn(\n inputVariants(),\n 'flex w-full gap-2 rounded-xl p-0.5! supports-[corner-shape:squircle]:rounded-2xl',\n 'bg-neutral/10 text-text/50 placeholder:text-neutral/80'\n )}\n >\n <label htmlFor=\"browser-url\" className=\"sr-only\">\n {content.urlLabel.value}\n </label>\n <Input\n id=\"browser-url\"\n type=\"text\"\n inputMode=\"url\"\n spellCheck={false}\n autoCapitalize=\"off\"\n variant=\"invisible\"\n className=\"ml-3 p-0!\"\n size=\"sm\"\n autoCorrect=\"off\"\n value={inputUrl}\n onChange={(e) => {\n setInputUrl(e.target.value);\n if (showError) setError(null);\n }}\n placeholder={content.urlPlaceholder.value}\n aria-label={content.urlLabel.value}\n aria-invalid={showError}\n aria-describedby={showError ? 'browser-url-error' : undefined}\n />\n\n <Button\n type=\"button\"\n onClick={handleReload}\n variant=\"hoverable\"\n size=\"icon-md\"\n className=\"p-1!\"\n label={'content.reloadButtonTitle.value'}\n Icon={RotateCw}\n />\n\n {/* invisible submit */}\n <button type=\"submit\" className=\"sr-only absolute\" tabIndex={-1} />\n </form>\n\n {/* Error Message Tooltip */}\n {showError && (\n <div className=\"absolute top-full left-4 z-20 mt-1\">\n <p\n id=\"browser-url-error\"\n role=\"alert\"\n aria-live=\"assertive\"\n className=\"rounded-md bg-red-900/90 px-3 py-1.5 text-red-100 text-xs shadow-md backdrop-blur-sm\"\n >\n {error}\n </p>\n </div>\n )}\n </div>\n\n {/* Iframe */}\n <div className=\"relative z-0 flex min-h-0 w-full flex-1 flex-col overflow-hidden rounded-b-xl bg-background\">\n <iframe\n ref={internalIframeRef}\n src={currentUrl}\n title={content.iframeTitle.value}\n className=\"size-full flex-1\"\n sandbox={sandbox}\n loading=\"lazy\"\n aria-live=\"polite\"\n {...props}\n />\n </div>\n </section>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Browser.mjs","names":[],"sources":["../../../../src/components/Browser/Browser.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@utils/cn';\nimport { ArrowLeft, ArrowRight, RotateCw } from 'lucide-react';\nimport {\n type CSSProperties,\n type FormEvent,\n type HTMLAttributes,\n type RefObject,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Button } from '../Button';\nimport { Input, inputVariants } from '../Input';\n\nexport type BrowserProps = {\n initialUrl?: string;\n path?: string;\n className?: string;\n style?: CSSProperties;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n 'aria-label'?: string;\n sandbox?: string;\n ref?: RefObject<HTMLIFrameElement | null>;\n domainRestriction?: string;\n} & HTMLAttributes<HTMLIFrameElement>;\n\nexport const Browser = ({\n initialUrl = 'https://example.com',\n path,\n className,\n style,\n size = 'md',\n 'aria-label': ariaLabel,\n sandbox = 'allow-scripts allow-same-origin allow-forms allow-popups allow-popups-to-escape-sandbox allow-downloads',\n ref,\n domainRestriction,\n ...props\n}: BrowserProps) => {\n // --- State -----------------------------------------------------------------\n const [inputUrl, setInputUrl] = useState(initialUrl);\n const [currentUrl, setCurrentUrl] = useState(initialUrl);\n\n // History Management\n const [history, setHistory] = useState<string[]>([initialUrl]);\n const [currentIndex, setCurrentIndex] = useState(0);\n\n const [error, setError] = useState<string | null>(null);\n const [submitted, setSubmitted] = useState(false);\n const internalIframeRef = useRef<HTMLIFrameElement>(null);\n\n useImperativeHandle(ref, () => internalIframeRef.current!, []);\n const content = useIntlayer('browser');\n\n // --- Effects ---------------------------------------------------------------\n\n // Reset everything if initialUrl changes completely\n useEffect(() => {\n setInputUrl(initialUrl);\n setCurrentUrl(initialUrl);\n setHistory([initialUrl]);\n setCurrentIndex(0);\n setError(null);\n setSubmitted(false);\n }, [initialUrl]);\n\n // Sync external path changes with the URL bar and History\n useEffect(() => {\n if (!path) return;\n\n try {\n const baseOrigin = domainRestriction ?? initialUrl;\n const origin = new URL(baseOrigin).origin;\n const fullUrl = `${origin}${path}`;\n\n // Update Input (Always update the visual bar)\n setInputUrl(fullUrl);\n\n // Check internal iframe state to avoid reload if already there\n let isAlreadyAtUrl = false;\n if (internalIframeRef.current?.contentWindow) {\n try {\n const currentIframeHref =\n internalIframeRef.current.contentWindow.location.href;\n if (new URL(currentIframeHref).href === new URL(fullUrl).href) {\n isAlreadyAtUrl = true;\n }\n } catch {\n // Cross-origin access ignored\n }\n }\n\n // Update History Stack\n // We perform this check regardless of `isAlreadyAtUrl`.\n // If the path changed (even internally), we want to record it in the arrow stack.\n if (history[currentIndex] !== fullUrl) {\n setHistory((prev) => {\n const newHistory = prev.slice(0, currentIndex + 1);\n newHistory.push(fullUrl);\n return newHistory;\n });\n setCurrentIndex((prev) => prev + 1);\n }\n\n // Navigate (Update src) only if NOT already there\n // This prevents the iframe from refreshing when the user navigated inside it.\n if (!isAlreadyAtUrl) {\n setCurrentUrl(fullUrl);\n }\n\n setError(null);\n } catch {\n // Ignore invalid paths\n }\n }, [path, domainRestriction, initialUrl]); // Removed currentIndex dependency to prevent loops\n\n // --- Navigation Logic ------------------------------------------------------\n\n const handleNavigateTo = (url: string) => {\n try {\n const validated = normalizeUrl(url);\n\n // If we are navigating to the exact same URL, just reload\n if (validated === currentUrl) {\n handleReload();\n return;\n }\n\n setCurrentUrl(validated);\n setInputUrl(validated);\n setError(null);\n\n // Update History: Slice future if we went back, then push new\n const newHistory = history.slice(0, currentIndex + 1);\n newHistory.push(validated);\n setHistory(newHistory);\n setCurrentIndex(newHistory.length - 1);\n } catch (e) {\n if (\n e instanceof Error &&\n e.message === 'URL does not match allowed domain' &&\n domainRestriction\n ) {\n setError(\n content.domainRestrictionError?.value ??\n `Only URLs from ${domainRestriction} are allowed.`\n );\n } else {\n setError(content.errorMessage.value);\n }\n }\n };\n\n const handleBack = () => {\n if (currentIndex > 0) {\n const newIndex = currentIndex - 1;\n const prevUrl = history[newIndex];\n setCurrentIndex(newIndex);\n setCurrentUrl(prevUrl);\n setInputUrl(prevUrl);\n setError(null);\n }\n };\n\n const handleForward = () => {\n if (currentIndex < history.length - 1) {\n const newIndex = currentIndex + 1;\n const nextUrl = history[newIndex];\n setCurrentIndex(newIndex);\n setCurrentUrl(nextUrl);\n setInputUrl(nextUrl);\n setError(null);\n }\n };\n\n const handleSubmit = (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setSubmitted(true);\n handleNavigateTo(inputUrl);\n };\n\n const handleReload = () => {\n if (internalIframeRef.current) {\n // Create a clean reload effect\n const src = internalIframeRef.current.src;\n internalIframeRef.current.src = '';\n setTimeout(() => {\n if (internalIframeRef.current) internalIframeRef.current.src = src;\n }, 50);\n }\n };\n\n // --- Validation Helpers ----------------------------------------------------\n const isValidHostname = (host: string) => {\n if (host === 'localhost') return true;\n if (/^(\\d{1,3}\\.){3}\\d{1,3}$/.test(host)) return true;\n if (/^[a-f0-9:]+$/i.test(host)) return true;\n if (!/^[a-z0-9.-]+$/i.test(host)) return false;\n if (/^[-.]/.test(host) || /[-.]$/.test(host)) return false;\n if (host.includes('..')) return false;\n if (!host.includes('.')) return false;\n return true;\n };\n\n const getRestrictionOrigin = (): URL | null => {\n if (!domainRestriction) return null;\n try {\n return new URL(domainRestriction);\n } catch {\n return null;\n }\n };\n\n const normalizeUrl = (raw: string) => {\n const trimmed = raw.trim();\n if (!trimmed || /\\s/.test(trimmed)) throw new Error('Invalid');\n\n const restrictionOrigin = getRestrictionOrigin();\n const isRelativePath = trimmed.startsWith('/') && !trimmed.startsWith('//');\n\n if (isRelativePath) {\n if (restrictionOrigin) {\n return new URL(`${restrictionOrigin.origin}${trimmed}`).toString();\n }\n return new URL(`${new URL(currentUrl).origin}${trimmed}`).toString();\n }\n\n const hasProtocol = /^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(trimmed);\n const candidate = hasProtocol ? trimmed : `https://${trimmed}`;\n const url = new URL(candidate);\n\n if (url.protocol !== 'http:' && url.protocol !== 'https:') {\n throw new Error('Only http(s) is allowed');\n }\n\n if (!isValidHostname(url.hostname)) throw new Error('Invalid host');\n\n if (restrictionOrigin) {\n const urlMatches =\n url.hostname === restrictionOrigin.hostname &&\n url.protocol === restrictionOrigin.protocol &&\n (restrictionOrigin.port === '' ||\n url.port === restrictionOrigin.port ||\n url.host === restrictionOrigin.host);\n\n if (!urlMatches) throw new Error('URL does not match allowed domain');\n }\n\n return url.toString();\n };\n\n const showError = submitted && !!error;\n const canGoBack = currentIndex > 0;\n const canGoForward = currentIndex < history.length - 1;\n\n return (\n <section\n className={cn(\n 'flex w-full flex-col overflow-hidden rounded-xl bg-background shadow-[0_4px_12px_rgba(0,0,0,0.4),0_0_1px_rgba(0,0,0,0.2)]',\n className\n )}\n style={style}\n aria-label={ariaLabel ?? content.ariaLabel.value}\n >\n {/* Top bar */}\n <div className=\"relative z-10 flex shrink-0 items-center gap-3 rounded-t-xl bg-text/15 px-4 py-2\">\n {/* Navigation Controls */}\n <div className=\"flex items-center gap-1\">\n <Button\n type=\"button\"\n onClick={handleBack}\n disabled={!canGoBack}\n variant=\"hoverable\"\n size=\"icon-md\"\n label={content.backButtonLabel.value}\n Icon={ArrowLeft}\n />\n <Button\n type=\"button\"\n onClick={handleForward}\n disabled={!canGoForward}\n variant=\"hoverable\"\n size=\"icon-md\"\n label={content.forwardButtonLabel.value}\n Icon={ArrowRight}\n />\n </div>\n\n {/* URL Bar */}\n <form\n onSubmit={handleSubmit}\n noValidate\n className={cn(\n inputVariants(),\n 'flex w-full gap-2 rounded-xl p-0.5! supports-[corner-shape:squircle]:rounded-2xl',\n 'bg-neutral/10 text-text/50 placeholder:text-neutral/80'\n )}\n >\n <label htmlFor=\"browser-url\" className=\"sr-only\">\n {content.urlLabel.value}\n </label>\n <Input\n id=\"browser-url\"\n type=\"text\"\n inputMode=\"url\"\n spellCheck={false}\n autoCapitalize=\"off\"\n variant=\"invisible\"\n className=\"ml-3 p-0!\"\n size=\"sm\"\n autoCorrect=\"off\"\n value={inputUrl}\n onChange={(e) => {\n setInputUrl(e.target.value);\n if (showError) setError(null);\n }}\n placeholder={content.urlPlaceholder.value}\n aria-label={content.urlLabel.value}\n aria-invalid={showError}\n aria-describedby={showError ? 'browser-url-error' : undefined}\n />\n\n <Button\n type=\"button\"\n onClick={handleReload}\n variant=\"hoverable\"\n size=\"icon-md\"\n className=\"p-1!\"\n label={'content.reloadButtonTitle.value'}\n Icon={RotateCw}\n />\n\n {/* invisible submit */}\n <button type=\"submit\" className=\"sr-only absolute\" tabIndex={-1} />\n </form>\n\n {/* Error Message Tooltip */}\n {showError && (\n <div className=\"absolute top-full left-4 z-20 mt-1\">\n <p\n id=\"browser-url-error\"\n role=\"alert\"\n aria-live=\"assertive\"\n className=\"rounded-md bg-red-900/90 px-3 py-1.5 text-red-100 text-xs shadow-md backdrop-blur-sm\"\n >\n {error}\n </p>\n </div>\n )}\n </div>\n\n {/* Iframe */}\n <div className=\"relative z-0 flex min-h-0 w-full flex-1 flex-col overflow-hidden rounded-b-xl bg-background\">\n <iframe\n ref={internalIframeRef}\n src={currentUrl}\n title={content.iframeTitle.value}\n className=\"size-full flex-1\"\n sandbox={sandbox}\n loading=\"lazy\"\n aria-live=\"polite\"\n {...props}\n />\n </div>\n </section>\n );\n};\n"],"mappings":"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"}
@@ -1,3 +1 @@
1
- import { Browser } from "./Browser.mjs";
2
-
3
- export { Browser };
1
+ import{Browser as e}from"./Browser.mjs";export{e as Browser};
@@ -1,288 +1,2 @@
1
- import { cn } from "../../utils/cn.mjs";
2
- import { ContainerRoundedSize } from "../Container/index.mjs";
3
- import { Loader } from "../Loader/index.mjs";
4
- import { cva } from "class-variance-authority";
5
- import { jsx, jsxs } from "react/jsx-runtime";
6
-
7
- //#region src/components/Button/Button.tsx
8
- /**
9
- * Button size variants for different use cases
10
- */
11
- let ButtonSize = /* @__PURE__ */ function(ButtonSize) {
12
- ButtonSize["SM"] = "sm";
13
- ButtonSize["MD"] = "md";
14
- ButtonSize["LG"] = "lg";
15
- ButtonSize["XL"] = "xl";
16
- ButtonSize["ICON_SM"] = "icon-sm";
17
- ButtonSize["ICON_MD"] = "icon-md";
18
- ButtonSize["ICON_LG"] = "icon-lg";
19
- ButtonSize["ICON_XL"] = "icon-xl";
20
- return ButtonSize;
21
- }({});
22
- const buttonIconVariants = cva("flex-none shrink-0", {
23
- variants: { size: {
24
- [`${ButtonSize.SM}`]: "size-3",
25
- [`${ButtonSize.MD}`]: "size-4",
26
- [`${ButtonSize.LG}`]: "size-5",
27
- [`${ButtonSize.XL}`]: "size-6",
28
- [`${ButtonSize.ICON_SM}`]: "size-3",
29
- [`${ButtonSize.ICON_MD}`]: "size-4",
30
- [`${ButtonSize.ICON_LG}`]: "size-4",
31
- [`${ButtonSize.ICON_XL}`]: "size-5"
32
- } },
33
- defaultVariants: { size: ButtonSize.MD }
34
- });
35
- /**
36
- * Button visual style variants
37
- */
38
- let ButtonVariant = /* @__PURE__ */ function(ButtonVariant) {
39
- ButtonVariant["DEFAULT"] = "default";
40
- ButtonVariant["NONE"] = "none";
41
- ButtonVariant["OUTLINE"] = "outline";
42
- ButtonVariant["LINK"] = "link";
43
- ButtonVariant["INVISIBLE_LINK"] = "invisible-link";
44
- ButtonVariant["HOVERABLE"] = "hoverable";
45
- ButtonVariant["FADE"] = "fade";
46
- ButtonVariant["INPUT"] = "input";
47
- return ButtonVariant;
48
- }({});
49
- /**
50
- * Button color themes that work with the design system
51
- */
52
- let ButtonColor = /* @__PURE__ */ function(ButtonColor) {
53
- ButtonColor["PRIMARY"] = "primary";
54
- ButtonColor["SECONDARY"] = "secondary";
55
- ButtonColor["DESTRUCTIVE"] = "destructive";
56
- ButtonColor["NEUTRAL"] = "neutral";
57
- ButtonColor["LIGHT"] = "light";
58
- ButtonColor["DARK"] = "dark";
59
- ButtonColor["TEXT"] = "text";
60
- ButtonColor["CARD"] = "card";
61
- ButtonColor["TEXT_INVERSE"] = "text-inverse";
62
- ButtonColor["CURRENT"] = "current";
63
- ButtonColor["ERROR"] = "error";
64
- ButtonColor["SUCCESS"] = "success";
65
- ButtonColor["CUSTOM"] = "custom";
66
- return ButtonColor;
67
- }({});
68
- /**
69
- * Text alignment options for button content
70
- */
71
- let ButtonTextAlign = /* @__PURE__ */ function(ButtonTextAlign) {
72
- ButtonTextAlign["LEFT"] = "left";
73
- ButtonTextAlign["CENTER"] = "center";
74
- ButtonTextAlign["RIGHT"] = "right";
75
- return ButtonTextAlign;
76
- }({});
77
- /**
78
- * Enhanced button variants with improved accessibility and focus states
79
- */
80
- const buttonVariants = cva("relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50", {
81
- variants: {
82
- size: {
83
- [`${ButtonSize.SM}`]: "min-h-7 px-3 text-xs max-md:py-1",
84
- [`${ButtonSize.MD}`]: "min-h-8 px-6 text-sm max-md:py-2",
85
- [`${ButtonSize.LG}`]: "min-h-10 px-8 text-lg max-md:py-3",
86
- [`${ButtonSize.XL}`]: "min-h-11 px-10 text-xl max-md:py-4",
87
- [`${ButtonSize.ICON_SM}`]: "p-1.5",
88
- [`${ButtonSize.ICON_MD}`]: "p-1.5",
89
- [`${ButtonSize.ICON_LG}`]: "p-2",
90
- [`${ButtonSize.ICON_XL}`]: "p-3"
91
- },
92
- color: {
93
- [`${ButtonColor.PRIMARY}`]: "hover-primary-500/20 text-primary ring-primary-500/20 *:text-text-light",
94
- [`${ButtonColor.SECONDARY}`]: "hover-secondary-500/20 text-secondary ring-secondary-500/20 *:text-text-light",
95
- [`${ButtonColor.DESTRUCTIVE}`]: "hover-destructive-500/20 text-destructive ring-destructive-500/20 *:text-text-light",
96
- [`${ButtonColor.NEUTRAL}`]: "text-neutral ring-neutral-500/5 *:text-text-light",
97
- [`${ButtonColor.CARD}`]: "hover-card-500/20 text-card ring-card-500/20 *:text-text-light",
98
- [`${ButtonColor.LIGHT}`]: "hover-white-500/20 text-white ring-white/20 *:text-text-light",
99
- [`${ButtonColor.DARK}`]: "text-neutral-800 ring-text-light/50 *:text-text-light",
100
- [`${ButtonColor.TEXT}`]: "text-text ring-text/20 *:text-text-opposite",
101
- [`${ButtonColor.CURRENT}`]: "hover-current-500/10 text-current ring-current/10 *:text-text-light",
102
- [`${ButtonColor.TEXT_INVERSE}`]: "text-text-opposite ring-text-opposite/20 *:text-text",
103
- [`${ButtonColor.ERROR}`]: "hover-error-500/20 text-error ring-error/20 *:text-text-light",
104
- [`${ButtonColor.SUCCESS}`]: "hover-success-500/20 text-success ring-success/20 *:text-text-light",
105
- [`${ButtonColor.CUSTOM}`]: ""
106
- },
107
- roundedSize: {
108
- [`${ContainerRoundedSize.NONE}`]: "rounded-none",
109
- [`${ContainerRoundedSize.SM}`]: "rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl",
110
- [`${ContainerRoundedSize.MD}`]: "rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl",
111
- [`${ContainerRoundedSize.LG}`]: "rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl",
112
- [`${ContainerRoundedSize.XL}`]: "rounded-3xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-4xl",
113
- [`${ContainerRoundedSize["2xl"]}`]: "rounded-4xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-[2.5rem]",
114
- [`${ContainerRoundedSize["3xl"]}`]: "rounded-[2.5rem] [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-[3rem]",
115
- [`${ContainerRoundedSize["4xl"]}`]: "rounded-[3rem] [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-[4rem]",
116
- [`${ContainerRoundedSize["5xl"]}`]: "rounded-[4rem] [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-[5rem]",
117
- [`${ContainerRoundedSize.FULL}`]: "rounded-full"
118
- },
119
- variant: {
120
- [`${ButtonVariant.DEFAULT}`]: [
121
- "bg-current",
122
- "hover:bg-current/90",
123
- "hover:ring-5",
124
- "aria-selected:ring-5"
125
- ],
126
- [`${ButtonVariant.OUTLINE}`]: [
127
- "rounded-2xl border-[1.3px] border-current bg-current/0 *:text-current!",
128
- "hover:bg-current/20 focus-visible:bg-current/20",
129
- "hover:ring-5 focus-visible:ring-5",
130
- "aria-selected:ring-5"
131
- ],
132
- [`${ButtonVariant.NONE}`]: "border-none bg-current/0 text-inherit hover:bg-current/0",
133
- [`${ButtonVariant.LINK}`]: "h-auto justify-start border-inherit bg-transparent px-1 underline-offset-4 *:text-current! hover:bg-transparent hover:underline",
134
- [`${ButtonVariant.INVISIBLE_LINK}`]: "h-auto justify-start border-inherit bg-transparent px-1 underline-offset-4 *:text-current! hover:bg-transparent",
135
- [`${ButtonVariant.HOVERABLE}`]: "rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/20 aria-[current]:bg-current/5",
136
- [`${ButtonVariant.FADE}`]: [
137
- "rounded-lg border-none bg-current/10 ring-current/5 transition *:text-current! hover:bg-current/20 aria-[current]:bg-current/5",
138
- "hover:ring-5 focus-visible:ring-5",
139
- "aria-selected:ring-5"
140
- ],
141
- [`${ButtonVariant.INPUT}`]: [
142
- "text-text",
143
- "w-full select-text resize-none rounded-2xl text-base shadow-none outline-none supports-[corner-shape:squircle]:rounded-4xl",
144
- "transition-shadow duration-100 md:text-sm",
145
- "ring-0",
146
- "disabled:opacity-50",
147
- "text-text",
148
- "bg-neutral-50 dark:bg-neutral-950",
149
- "ring-neutral-100 dark:ring-neutral-700",
150
- "hover:ring-3",
151
- "aria-selected:ring-4",
152
- "focus-visible:ring-3",
153
- "disabled:ring-0",
154
- "focus-visible:outline-none",
155
- "[box-shadow:none] focus:[box-shadow:none]",
156
- "aria-invalid:border-error"
157
- ]
158
- },
159
- textAlign: {
160
- [`${ButtonTextAlign.LEFT}`]: "justify-start text-left",
161
- [`${ButtonTextAlign.CENTER}`]: "justify-center text-center",
162
- [`${ButtonTextAlign.RIGHT}`]: "justify-end text-right"
163
- },
164
- isFullWidth: {
165
- true: "w-full",
166
- false: ""
167
- }
168
- },
169
- defaultVariants: {
170
- variant: `${ButtonVariant.DEFAULT}`,
171
- size: `${ButtonSize.MD}`,
172
- color: `${ButtonColor.CUSTOM}`,
173
- roundedSize: `${ContainerRoundedSize.MD}`,
174
- textAlign: `${ButtonTextAlign.CENTER}`,
175
- isFullWidth: false
176
- }
177
- });
178
- /**
179
- * Button Component - A comprehensive, accessible button component
180
- *
181
- * Features:
182
- * - Full accessibility compliance with ARIA attributes
183
- * - Multiple variants and sizes for different use cases
184
- * - Icon support (left and right positioning)
185
- * - Loading states with spinner
186
- * - Keyboard navigation support
187
- * - Focus management with visible indicators
188
- * - Responsive design adaptations
189
- *
190
- * @example
191
- * ```tsx
192
- * // Basic button
193
- * <Button label="Click me">Click me</Button>
194
- *
195
- * // Button with icon and loading state
196
- * <Button
197
- * label="Save document"
198
- * Icon={SaveIcon}
199
- * isLoading={saving}
200
- * disabled={!hasChanges}
201
- * >
202
- * Save
203
- * </Button>
204
- *
205
- * // Destructive action button
206
- * <Button
207
- * variant={`${ButtonVariant.OUTLINE}`}
208
- * color={ButtonColor.DESTRUCTIVE}
209
- * label="Delete item permanently"
210
- * aria-describedby="delete-warning"
211
- * >
212
- * Delete
213
- * </Button>
214
- * ```
215
- */
216
- const Button = ({ variant, size, color, children, Icon, IconRight, iconClassName, isLoading = false, isActive, isSelected, isFullWidth, roundedSize, textAlign, disabled, label, className, type = "button", "aria-describedby": ariaDescribedBy, "aria-expanded": ariaExpanded, "aria-haspopup": ariaHasPopup, "aria-pressed": ariaPressed, ...props }) => {
217
- const isLink = variant === `${ButtonVariant.LINK}` || variant === `${ButtonVariant.INVISIBLE_LINK}`;
218
- const isIconOnly = !children && (Icon || IconRight);
219
- const accessibilityProps = {
220
- "aria-label": isIconOnly ? label ?? void 0 : void 0,
221
- "aria-labelledby": !isIconOnly ? void 0 : void 0,
222
- "aria-describedby": ariaDescribedBy,
223
- "aria-expanded": ariaExpanded,
224
- "aria-haspopup": ariaHasPopup,
225
- "aria-pressed": isActive !== void 0 ? isActive : ariaPressed,
226
- "aria-busy": isLoading,
227
- "aria-current": isActive ? "page" : void 0,
228
- "aria-disabled": disabled || isLoading,
229
- "aria-selected": isSelected
230
- };
231
- const isSquareButton = size === ButtonSize.ICON_SM || size === ButtonSize.ICON_MD || size === ButtonSize.ICON_LG || size === ButtonSize.ICON_XL;
232
- return /* @__PURE__ */ jsxs("button", {
233
- disabled: isLoading || disabled,
234
- role: isLink ? "link" : "button",
235
- type,
236
- className: buttonVariants({
237
- variant,
238
- size,
239
- color,
240
- isFullWidth,
241
- roundedSize,
242
- textAlign: textAlign ?? (IconRight ? ButtonTextAlign.LEFT : ButtonTextAlign.CENTER),
243
- className
244
- }),
245
- ...accessibilityProps,
246
- ...props,
247
- children: [
248
- Icon && !isLoading && /* @__PURE__ */ jsx(Icon, {
249
- className: buttonIconVariants({
250
- size,
251
- className: cn(!isSquareButton && "mr-3", iconClassName)
252
- }),
253
- "aria-hidden": "true"
254
- }),
255
- /* @__PURE__ */ jsx("div", {
256
- className: cn("flex items-center justify-center transition-[width] duration-300", isLoading && size === ButtonSize.SM && "w-3", isLoading && size === ButtonSize.MD && "w-4", isLoading && size === ButtonSize.LG && "w-5", isLoading && size === ButtonSize.XL && "w-6"),
257
- children: /* @__PURE__ */ jsx(Loader, {
258
- className: buttonIconVariants({
259
- size,
260
- className: cn(!isSquareButton && "mr-3", iconClassName)
261
- }),
262
- isLoading,
263
- "aria-hidden": "true",
264
- "data-testid": "loader"
265
- })
266
- }),
267
- children && /* @__PURE__ */ jsx("span", {
268
- className: "flex-1 truncate whitespace-nowrap",
269
- children
270
- }),
271
- !children && isIconOnly && /* @__PURE__ */ jsx("span", {
272
- className: "sr-only",
273
- children: label
274
- }),
275
- IconRight && /* @__PURE__ */ jsx(IconRight, {
276
- className: buttonIconVariants({
277
- size,
278
- className: cn(!isSquareButton && "ml-3", iconClassName)
279
- }),
280
- "aria-hidden": "true"
281
- })
282
- ]
283
- });
284
- };
285
-
286
- //#endregion
287
- export { Button, ButtonColor, ButtonSize, ButtonTextAlign, ButtonVariant, buttonVariants };
1
+ import{cn as e}from"../../utils/cn.mjs";import{ContainerRoundedSize as t}from"../Container/index.mjs";import{Loader as n}from"../Loader/index.mjs";import{cva as r}from"class-variance-authority";import{jsx as i,jsxs as a}from"react/jsx-runtime";let o=function(e){return e.SM=`sm`,e.MD=`md`,e.LG=`lg`,e.XL=`xl`,e.ICON_SM=`icon-sm`,e.ICON_MD=`icon-md`,e.ICON_LG=`icon-lg`,e.ICON_XL=`icon-xl`,e}({});const s=r(`flex-none shrink-0`,{variants:{size:{[`${o.SM}`]:`size-3`,[`${o.MD}`]:`size-4`,[`${o.LG}`]:`size-5`,[`${o.XL}`]:`size-6`,[`${o.ICON_SM}`]:`size-3`,[`${o.ICON_MD}`]:`size-4`,[`${o.ICON_LG}`]:`size-4`,[`${o.ICON_XL}`]:`size-5`}},defaultVariants:{size:o.MD}});let c=function(e){return e.DEFAULT=`default`,e.NONE=`none`,e.OUTLINE=`outline`,e.LINK=`link`,e.INVISIBLE_LINK=`invisible-link`,e.HOVERABLE=`hoverable`,e.FADE=`fade`,e.INPUT=`input`,e}({}),l=function(e){return e.PRIMARY=`primary`,e.SECONDARY=`secondary`,e.DESTRUCTIVE=`destructive`,e.NEUTRAL=`neutral`,e.LIGHT=`light`,e.DARK=`dark`,e.TEXT=`text`,e.CARD=`card`,e.TEXT_INVERSE=`text-inverse`,e.CURRENT=`current`,e.ERROR=`error`,e.SUCCESS=`success`,e.CUSTOM=`custom`,e}({}),u=function(e){return e.LEFT=`left`,e.CENTER=`center`,e.RIGHT=`right`,e}({});const d=r(`relative inline-flex cursor-pointer items-center justify-center font-medium ring-0 transition-all duration-300 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50`,{variants:{size:{[`${o.SM}`]:`min-h-7 px-3 text-xs max-md:py-1`,[`${o.MD}`]:`min-h-8 px-6 text-sm max-md:py-2`,[`${o.LG}`]:`min-h-10 px-8 text-lg max-md:py-3`,[`${o.XL}`]:`min-h-11 px-10 text-xl max-md:py-4`,[`${o.ICON_SM}`]:`p-1.5`,[`${o.ICON_MD}`]:`p-1.5`,[`${o.ICON_LG}`]:`p-2`,[`${o.ICON_XL}`]:`p-3`},color:{[`${l.PRIMARY}`]:`hover-primary-500/20 text-primary ring-primary-500/20 *:text-text-light`,[`${l.SECONDARY}`]:`hover-secondary-500/20 text-secondary ring-secondary-500/20 *:text-text-light`,[`${l.DESTRUCTIVE}`]:`hover-destructive-500/20 text-destructive ring-destructive-500/20 *:text-text-light`,[`${l.NEUTRAL}`]:`text-neutral ring-neutral-500/5 *:text-text-light`,[`${l.CARD}`]:`hover-card-500/20 text-card ring-card-500/20 *:text-text-light`,[`${l.LIGHT}`]:`hover-white-500/20 text-white ring-white/20 *:text-text-light`,[`${l.DARK}`]:`text-neutral-800 ring-text-light/50 *:text-text-light`,[`${l.TEXT}`]:`text-text ring-text/20 *:text-text-opposite`,[`${l.CURRENT}`]:`hover-current-500/10 text-current ring-current/10 *:text-text-light`,[`${l.TEXT_INVERSE}`]:`text-text-opposite ring-text-opposite/20 *:text-text`,[`${l.ERROR}`]:`hover-error-500/20 text-error ring-error/20 *:text-text-light`,[`${l.SUCCESS}`]:`hover-success-500/20 text-success ring-success/20 *:text-text-light`,[`${l.CUSTOM}`]:``},roundedSize:{[`${t.NONE}`]:`rounded-none`,[`${t.SM}`]:`rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl`,[`${t.MD}`]:`rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl`,[`${t.LG}`]:`rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl`,[`${t.XL}`]:`rounded-3xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-4xl`,[`${t[`2xl`]}`]:`rounded-4xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-[2.5rem]`,[`${t[`3xl`]}`]:`rounded-[2.5rem] [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-[3rem]`,[`${t[`4xl`]}`]:`rounded-[3rem] [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-[4rem]`,[`${t[`5xl`]}`]:`rounded-[4rem] [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-[5rem]`,[`${t.FULL}`]:`rounded-full`},variant:{[`${c.DEFAULT}`]:[`bg-current`,`hover:bg-current/90`,`hover:ring-5`,`aria-selected:ring-5`],[`${c.OUTLINE}`]:[`rounded-2xl border-[1.3px] border-current bg-current/0 *:text-current!`,`hover:bg-current/20 focus-visible:bg-current/20`,`hover:ring-5 focus-visible:ring-5`,`aria-selected:ring-5`],[`${c.NONE}`]:`border-none bg-current/0 text-inherit hover:bg-current/0`,[`${c.LINK}`]:`h-auto justify-start border-inherit bg-transparent px-1 underline-offset-4 *:text-current! hover:bg-transparent hover:underline`,[`${c.INVISIBLE_LINK}`]:`h-auto justify-start border-inherit bg-transparent px-1 underline-offset-4 *:text-current! hover:bg-transparent`,[`${c.HOVERABLE}`]:`rounded-lg border-none bg-current/0 transition *:text-current! hover:bg-current/20 aria-[current]:bg-current/5`,[`${c.FADE}`]:[`rounded-lg border-none bg-current/10 ring-current/5 transition *:text-current! hover:bg-current/20 aria-[current]:bg-current/5`,`hover:ring-5 focus-visible:ring-5`,`aria-selected:ring-5`],[`${c.INPUT}`]:[`text-text`,`w-full select-text resize-none rounded-2xl text-base shadow-none outline-none supports-[corner-shape:squircle]:rounded-4xl`,`transition-shadow duration-100 md:text-sm`,`ring-0`,`disabled:opacity-50`,`text-text`,`bg-neutral-50 dark:bg-neutral-950`,`ring-neutral-100 dark:ring-neutral-700`,`hover:ring-3`,`aria-selected:ring-4`,`focus-visible:ring-3`,`disabled:ring-0`,`focus-visible:outline-none`,`[box-shadow:none] focus:[box-shadow:none]`,`aria-invalid:border-error`]},textAlign:{[`${u.LEFT}`]:`justify-start text-left`,[`${u.CENTER}`]:`justify-center text-center`,[`${u.RIGHT}`]:`justify-end text-right`},isFullWidth:{true:`w-full`,false:``}},defaultVariants:{variant:`${c.DEFAULT}`,size:`${o.MD}`,color:`${l.CUSTOM}`,roundedSize:`${t.MD}`,textAlign:`${u.CENTER}`,isFullWidth:!1}}),f=({variant:t,size:r,color:l,children:f,Icon:p,IconRight:m,iconClassName:h,isLoading:g=!1,isActive:_,isSelected:v,isFullWidth:y,roundedSize:b,textAlign:x,disabled:S,label:C,className:w,type:T=`button`,"aria-describedby":E,"aria-expanded":D,"aria-haspopup":O,"aria-pressed":k,...A})=>{let j=t===`${c.LINK}`||t===`${c.INVISIBLE_LINK}`,M=!f&&(p||m),N={"aria-label":M?C??void 0:void 0,"aria-labelledby":void 0,"aria-describedby":E,"aria-expanded":D,"aria-haspopup":O,"aria-pressed":_===void 0?k:_,"aria-busy":g,"aria-current":_?`page`:void 0,"aria-disabled":S||g,"aria-selected":v},P=r===o.ICON_SM||r===o.ICON_MD||r===o.ICON_LG||r===o.ICON_XL;return a(`button`,{disabled:g||S,role:j?`link`:`button`,type:T,className:d({variant:t,size:r,color:l,isFullWidth:y,roundedSize:b,textAlign:x??(m?u.LEFT:u.CENTER),className:w}),...N,...A,children:[p&&!g&&i(p,{className:s({size:r,className:e(!P&&`mr-3`,h)}),"aria-hidden":`true`}),i(`div`,{className:e(`flex items-center justify-center transition-[width] duration-300`,g&&r===o.SM&&`w-3`,g&&r===o.MD&&`w-4`,g&&r===o.LG&&`w-5`,g&&r===o.XL&&`w-6`),children:i(n,{className:s({size:r,className:e(!P&&`mr-3`,h)}),isLoading:g,"aria-hidden":`true`,"data-testid":`loader`})}),f&&i(`span`,{className:`flex-1 truncate whitespace-nowrap`,children:f}),!f&&M&&i(`span`,{className:`sr-only`,children:C}),m&&i(m,{className:s({size:r,className:e(!P&&`ml-3`,h)}),"aria-hidden":`true`})]})};export{f as Button,l as ButtonColor,o as ButtonSize,u as ButtonTextAlign,c as ButtonVariant,d as buttonVariants};
288
2
  //# sourceMappingURL=Button.mjs.map