@intlayer/design-system 8.4.3 → 8.4.5

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 (845) hide show
  1. package/dist/esm/_virtual/_rolldown/runtime.mjs +18 -1
  2. package/dist/esm/components/Accordion/Accordion.mjs +99 -1
  3. package/dist/esm/components/Accordion/Accordion.mjs.map +1 -1
  4. package/dist/esm/components/Accordion/index.mjs +3 -1
  5. package/dist/esm/components/Avatar/index.mjs +126 -1
  6. package/dist/esm/components/Avatar/index.mjs.map +1 -1
  7. package/dist/esm/components/Badge/index.mjs +150 -1
  8. package/dist/esm/components/Badge/index.mjs.map +1 -1
  9. package/dist/esm/components/Breadcrumb/breadcrumb.content.mjs +32 -1
  10. package/dist/esm/components/Breadcrumb/breadcrumb.content.mjs.map +1 -1
  11. package/dist/esm/components/Breadcrumb/index.mjs +232 -1
  12. package/dist/esm/components/Breadcrumb/index.mjs.map +1 -1
  13. package/dist/esm/components/Browser/Browser.content.mjs +179 -1
  14. package/dist/esm/components/Browser/Browser.content.mjs.map +1 -1
  15. package/dist/esm/components/Browser/Browser.mjs +249 -1
  16. package/dist/esm/components/Browser/Browser.mjs.map +1 -1
  17. package/dist/esm/components/Browser/index.mjs +3 -1
  18. package/dist/esm/components/Button/Button.mjs +287 -1
  19. package/dist/esm/components/Button/Button.mjs.map +1 -1
  20. package/dist/esm/components/Button/index.mjs +3 -1
  21. package/dist/esm/components/Carousel/index.content.mjs +79 -1
  22. package/dist/esm/components/Carousel/index.content.mjs.map +1 -1
  23. package/dist/esm/components/Carousel/index.mjs +292 -4
  24. package/dist/esm/components/Carousel/index.mjs.map +1 -1
  25. package/dist/esm/components/ClickOutsideDiv/index.mjs +42 -1
  26. package/dist/esm/components/ClickOutsideDiv/index.mjs.map +1 -1
  27. package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs +165 -1
  28. package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs.map +1 -1
  29. package/dist/esm/components/CollapsibleTable/index.mjs +3 -1
  30. package/dist/esm/components/Command/index.mjs +88 -1
  31. package/dist/esm/components/Command/index.mjs.map +1 -1
  32. package/dist/esm/components/Container/index.mjs +203 -1
  33. package/dist/esm/components/Container/index.mjs.map +1 -1
  34. package/dist/esm/components/ContentEditor/ContentEditor.mjs +107 -1
  35. package/dist/esm/components/ContentEditor/ContentEditor.mjs.map +1 -1
  36. package/dist/esm/components/ContentEditor/ContentEditorInput.mjs +110 -1
  37. package/dist/esm/components/ContentEditor/ContentEditorInput.mjs.map +1 -1
  38. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +113 -1
  39. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs.map +1 -1
  40. package/dist/esm/components/ContentEditor/index.mjs +5 -1
  41. package/dist/esm/components/ContentSelector/ContentSelector.mjs +81 -1
  42. package/dist/esm/components/ContentSelector/ContentSelector.mjs.map +1 -1
  43. package/dist/esm/components/ContentSelector/index.mjs +3 -1
  44. package/dist/esm/components/CopyButton/CopyButton.content.mjs +32 -1
  45. package/dist/esm/components/CopyButton/CopyButton.content.mjs.map +1 -1
  46. package/dist/esm/components/CopyButton/index.mjs +121 -1
  47. package/dist/esm/components/CopyButton/index.mjs.map +1 -1
  48. package/dist/esm/components/CopyToClipboard/index.mjs +101 -1
  49. package/dist/esm/components/CopyToClipboard/index.mjs.map +1 -1
  50. package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs +33 -1
  51. package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs.map +1 -1
  52. package/dist/esm/components/DictionaryEditor/ItemLayout.mjs +36 -1
  53. package/dist/esm/components/DictionaryEditor/ItemLayout.mjs.map +1 -1
  54. package/dist/esm/components/DictionaryEditor/NodeWrapper/ArrayWrapper.mjs +35 -1
  55. package/dist/esm/components/DictionaryEditor/NodeWrapper/ArrayWrapper.mjs.map +1 -1
  56. package/dist/esm/components/DictionaryEditor/NodeWrapper/BooleanWrapper.mjs +33 -1
  57. package/dist/esm/components/DictionaryEditor/NodeWrapper/BooleanWrapper.mjs.map +1 -1
  58. package/dist/esm/components/DictionaryEditor/NodeWrapper/ConditionWrapper.mjs +32 -1
  59. package/dist/esm/components/DictionaryEditor/NodeWrapper/ConditionWrapper.mjs.map +1 -1
  60. package/dist/esm/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.mjs +32 -1
  61. package/dist/esm/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.mjs.map +1 -1
  62. package/dist/esm/components/DictionaryEditor/NodeWrapper/FileWrapper.mjs +36 -1
  63. package/dist/esm/components/DictionaryEditor/NodeWrapper/FileWrapper.mjs.map +1 -1
  64. package/dist/esm/components/DictionaryEditor/NodeWrapper/HtmlWrapper.mjs +21 -1
  65. package/dist/esm/components/DictionaryEditor/NodeWrapper/HtmlWrapper.mjs.map +1 -1
  66. package/dist/esm/components/DictionaryEditor/NodeWrapper/InsertionWrapper.mjs +21 -1
  67. package/dist/esm/components/DictionaryEditor/NodeWrapper/InsertionWrapper.mjs.map +1 -1
  68. package/dist/esm/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.mjs +21 -1
  69. package/dist/esm/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.mjs.map +1 -1
  70. package/dist/esm/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs +39 -1
  71. package/dist/esm/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs.map +1 -1
  72. package/dist/esm/components/DictionaryEditor/NodeWrapper/NumberWrapper.mjs +34 -1
  73. package/dist/esm/components/DictionaryEditor/NodeWrapper/NumberWrapper.mjs.map +1 -1
  74. package/dist/esm/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs +34 -1
  75. package/dist/esm/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs.map +1 -1
  76. package/dist/esm/components/DictionaryEditor/NodeWrapper/TranslationWrapper.mjs +22 -1
  77. package/dist/esm/components/DictionaryEditor/NodeWrapper/TranslationWrapper.mjs.map +1 -1
  78. package/dist/esm/components/DictionaryEditor/NodeWrapper/index.mjs +98 -1
  79. package/dist/esm/components/DictionaryEditor/NodeWrapper/index.mjs.map +1 -1
  80. package/dist/esm/components/DictionaryEditor/index.mjs +3 -1
  81. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs +61 -1
  82. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs.map +1 -1
  83. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +662 -1
  84. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
  85. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +64 -1
  86. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs.map +1 -1
  87. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs +268 -1
  88. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs.map +1 -1
  89. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.mjs +98 -1
  90. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.mjs.map +1 -1
  91. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs +14 -1
  92. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs.map +1 -1
  93. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +328 -1
  94. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
  95. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs +575 -1
  96. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs.map +1 -1
  97. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.mjs +338 -1
  98. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.mjs.map +1 -1
  99. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs +29 -1
  100. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs.map +1 -1
  101. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +109 -1
  102. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
  103. package/dist/esm/components/DictionaryFieldEditor/EnumKeyInput.mjs +98 -1
  104. package/dist/esm/components/DictionaryFieldEditor/EnumKeyInput.mjs.map +1 -1
  105. package/dist/esm/components/DictionaryFieldEditor/JSONEditor.mjs +28 -1
  106. package/dist/esm/components/DictionaryFieldEditor/JSONEditor.mjs.map +1 -1
  107. package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs +22 -1
  108. package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs.map +1 -1
  109. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +173 -1
  110. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
  111. package/dist/esm/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs +268 -1
  112. package/dist/esm/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs.map +1 -1
  113. package/dist/esm/components/DictionaryFieldEditor/NodeTypeSelector.mjs +84 -1
  114. package/dist/esm/components/DictionaryFieldEditor/NodeTypeSelector.mjs.map +1 -1
  115. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +153 -1
  116. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
  117. package/dist/esm/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs +350 -1
  118. package/dist/esm/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs.map +1 -1
  119. package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs +19 -1
  120. package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs.map +1 -1
  121. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs +200 -1
  122. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs.map +1 -1
  123. package/dist/esm/components/DictionaryFieldEditor/StructureView/structureView.content.mjs +100 -1
  124. package/dist/esm/components/DictionaryFieldEditor/StructureView/structureView.content.mjs.map +1 -1
  125. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs +73 -1
  126. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs.map +1 -1
  127. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.mjs +27 -1
  128. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.mjs.map +1 -1
  129. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/index.mjs +4 -1
  130. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.mjs +78 -1
  131. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.mjs.map +1 -1
  132. package/dist/esm/components/DictionaryFieldEditor/dictionaryFieldEditor.content.mjs +58 -1
  133. package/dist/esm/components/DictionaryFieldEditor/dictionaryFieldEditor.content.mjs.map +1 -1
  134. package/dist/esm/components/DictionaryFieldEditor/getIsEditableSection.mjs +14 -1
  135. package/dist/esm/components/DictionaryFieldEditor/getIsEditableSection.mjs.map +1 -1
  136. package/dist/esm/components/DictionaryFieldEditor/index.mjs +10 -1
  137. package/dist/esm/components/DictionaryFieldEditor/nodeTypeSelector.content.mjs +318 -1
  138. package/dist/esm/components/DictionaryFieldEditor/nodeTypeSelector.content.mjs.map +1 -1
  139. package/dist/esm/components/DropDown/index.mjs +177 -1
  140. package/dist/esm/components/DropDown/index.mjs.map +1 -1
  141. package/dist/esm/components/EditableField/EditableFieldInput.mjs +68 -1
  142. package/dist/esm/components/EditableField/EditableFieldInput.mjs.map +1 -1
  143. package/dist/esm/components/EditableField/EditableFieldLayout.mjs +103 -1
  144. package/dist/esm/components/EditableField/EditableFieldLayout.mjs.map +1 -1
  145. package/dist/esm/components/EditableField/EditableFieldTextArea.mjs +77 -1
  146. package/dist/esm/components/EditableField/EditableFieldTextArea.mjs.map +1 -1
  147. package/dist/esm/components/EditableField/index.mjs +4 -1
  148. package/dist/esm/components/ExpandCollapse/ExpandCollapse.mjs +101 -1
  149. package/dist/esm/components/ExpandCollapse/ExpandCollapse.mjs.map +1 -1
  150. package/dist/esm/components/ExpandCollapse/expandCollapse.content.mjs +58 -1
  151. package/dist/esm/components/ExpandCollapse/expandCollapse.content.mjs.map +1 -1
  152. package/dist/esm/components/ExpandCollapse/index.mjs +3 -1
  153. package/dist/esm/components/Flags/Flag.mjs +326 -1
  154. package/dist/esm/components/Flags/Flag.mjs.map +1 -1
  155. package/dist/esm/components/Flags/ae.mjs +36 -1
  156. package/dist/esm/components/Flags/ae.mjs.map +1 -1
  157. package/dist/esm/components/Flags/af.mjs +96 -1
  158. package/dist/esm/components/Flags/af.mjs.map +1 -1
  159. package/dist/esm/components/Flags/al.mjs +37 -1
  160. package/dist/esm/components/Flags/al.mjs.map +1 -1
  161. package/dist/esm/components/Flags/am.mjs +33 -1
  162. package/dist/esm/components/Flags/am.mjs.map +1 -1
  163. package/dist/esm/components/Flags/ar.mjs +160 -1
  164. package/dist/esm/components/Flags/ar.mjs.map +1 -1
  165. package/dist/esm/components/Flags/at.mjs +30 -1
  166. package/dist/esm/components/Flags/at.mjs.map +1 -1
  167. package/dist/esm/components/Flags/au.mjs +42 -1
  168. package/dist/esm/components/Flags/au.mjs.map +1 -1
  169. package/dist/esm/components/Flags/az.mjs +46 -1
  170. package/dist/esm/components/Flags/az.mjs.map +1 -1
  171. package/dist/esm/components/Flags/ba.mjs +40 -1
  172. package/dist/esm/components/Flags/ba.mjs.map +1 -1
  173. package/dist/esm/components/Flags/bd.mjs +32 -1
  174. package/dist/esm/components/Flags/bd.mjs.map +1 -1
  175. package/dist/esm/components/Flags/be.mjs +36 -1
  176. package/dist/esm/components/Flags/be.mjs.map +1 -1
  177. package/dist/esm/components/Flags/bg.mjs +33 -1
  178. package/dist/esm/components/Flags/bg.mjs.map +1 -1
  179. package/dist/esm/components/Flags/bh.mjs +30 -1
  180. package/dist/esm/components/Flags/bh.mjs.map +1 -1
  181. package/dist/esm/components/Flags/bn.mjs +42 -1
  182. package/dist/esm/components/Flags/bn.mjs.map +1 -1
  183. package/dist/esm/components/Flags/bo.mjs +3030 -1
  184. package/dist/esm/components/Flags/bo.mjs.map +1 -1
  185. package/dist/esm/components/Flags/br.mjs +106 -1
  186. package/dist/esm/components/Flags/br.mjs.map +1 -1
  187. package/dist/esm/components/Flags/bw.mjs +33 -1
  188. package/dist/esm/components/Flags/bw.mjs.map +1 -1
  189. package/dist/esm/components/Flags/by.mjs +45 -1
  190. package/dist/esm/components/Flags/by.mjs.map +1 -1
  191. package/dist/esm/components/Flags/bz.mjs +338 -1
  192. package/dist/esm/components/Flags/bz.mjs.map +1 -1
  193. package/dist/esm/components/Flags/ca.mjs +30 -1
  194. package/dist/esm/components/Flags/ca.mjs.map +1 -1
  195. package/dist/esm/components/Flags/ch.mjs +30 -1
  196. package/dist/esm/components/Flags/ch.mjs.map +1 -1
  197. package/dist/esm/components/Flags/cl.mjs +43 -1
  198. package/dist/esm/components/Flags/cl.mjs.map +1 -1
  199. package/dist/esm/components/Flags/cn.mjs +57 -1
  200. package/dist/esm/components/Flags/cn.mjs.map +1 -1
  201. package/dist/esm/components/Flags/co.mjs +36 -1
  202. package/dist/esm/components/Flags/co.mjs.map +1 -1
  203. package/dist/esm/components/Flags/cr.mjs +36 -1
  204. package/dist/esm/components/Flags/cr.mjs.map +1 -1
  205. package/dist/esm/components/Flags/cu.mjs +43 -1
  206. package/dist/esm/components/Flags/cu.mjs.map +1 -1
  207. package/dist/esm/components/Flags/cv.mjs +43 -1
  208. package/dist/esm/components/Flags/cv.mjs.map +1 -1
  209. package/dist/esm/components/Flags/cz.mjs +33 -1
  210. package/dist/esm/components/Flags/cz.mjs.map +1 -1
  211. package/dist/esm/components/Flags/de.mjs +33 -1
  212. package/dist/esm/components/Flags/de.mjs.map +1 -1
  213. package/dist/esm/components/Flags/dj.mjs +43 -1
  214. package/dist/esm/components/Flags/dj.mjs.map +1 -1
  215. package/dist/esm/components/Flags/dk.mjs +33 -1
  216. package/dist/esm/components/Flags/dk.mjs.map +1 -1
  217. package/dist/esm/components/Flags/do.mjs +211 -1
  218. package/dist/esm/components/Flags/do.mjs.map +1 -1
  219. package/dist/esm/components/Flags/dz.mjs +33 -1
  220. package/dist/esm/components/Flags/dz.mjs.map +1 -1
  221. package/dist/esm/components/Flags/ec.mjs +622 -1
  222. package/dist/esm/components/Flags/ec.mjs.map +1 -1
  223. package/dist/esm/components/Flags/ee.mjs +33 -1
  224. package/dist/esm/components/Flags/ee.mjs.map +1 -1
  225. package/dist/esm/components/Flags/eg.mjs +112 -1
  226. package/dist/esm/components/Flags/eg.mjs.map +1 -1
  227. package/dist/esm/components/Flags/es-ct.mjs +32 -1
  228. package/dist/esm/components/Flags/es-ct.mjs.map +1 -1
  229. package/dist/esm/components/Flags/es-ga.mjs +792 -1
  230. package/dist/esm/components/Flags/es-ga.mjs.map +1 -1
  231. package/dist/esm/components/Flags/es-pv.mjs +33 -1
  232. package/dist/esm/components/Flags/es-pv.mjs.map +1 -1
  233. package/dist/esm/components/Flags/es.mjs +2226 -1
  234. package/dist/esm/components/Flags/es.mjs.map +1 -1
  235. package/dist/esm/components/Flags/et.mjs +50 -1
  236. package/dist/esm/components/Flags/et.mjs.map +1 -1
  237. package/dist/esm/components/Flags/fi.mjs +33 -1
  238. package/dist/esm/components/Flags/fi.mjs.map +1 -1
  239. package/dist/esm/components/Flags/flags.mjs +1363 -1
  240. package/dist/esm/components/Flags/flags.mjs.map +1 -1
  241. package/dist/esm/components/Flags/fo.mjs +41 -1
  242. package/dist/esm/components/Flags/fo.mjs.map +1 -1
  243. package/dist/esm/components/Flags/fr.mjs +33 -1
  244. package/dist/esm/components/Flags/fr.mjs.map +1 -1
  245. package/dist/esm/components/Flags/gb-wls.mjs +43 -1
  246. package/dist/esm/components/Flags/gb-wls.mjs.map +1 -1
  247. package/dist/esm/components/Flags/gb.mjs +39 -1
  248. package/dist/esm/components/Flags/gb.mjs.map +1 -1
  249. package/dist/esm/components/Flags/ge.mjs +37 -1
  250. package/dist/esm/components/Flags/ge.mjs.map +1 -1
  251. package/dist/esm/components/Flags/gh.mjs +36 -1
  252. package/dist/esm/components/Flags/gh.mjs.map +1 -1
  253. package/dist/esm/components/Flags/gr.mjs +66 -1
  254. package/dist/esm/components/Flags/gr.mjs.map +1 -1
  255. package/dist/esm/components/Flags/gt.mjs +461 -1
  256. package/dist/esm/components/Flags/gt.mjs.map +1 -1
  257. package/dist/esm/components/Flags/gw.mjs +67 -1
  258. package/dist/esm/components/Flags/gw.mjs.map +1 -1
  259. package/dist/esm/components/Flags/hk.mjs +44 -1
  260. package/dist/esm/components/Flags/hk.mjs.map +1 -1
  261. package/dist/esm/components/Flags/hn.mjs +83 -1
  262. package/dist/esm/components/Flags/hn.mjs.map +1 -1
  263. package/dist/esm/components/Flags/hr.mjs +94 -1
  264. package/dist/esm/components/Flags/hr.mjs.map +1 -1
  265. package/dist/esm/components/Flags/hu.mjs +33 -1
  266. package/dist/esm/components/Flags/hu.mjs.map +1 -1
  267. package/dist/esm/components/Flags/id.mjs +30 -1
  268. package/dist/esm/components/Flags/id.mjs.map +1 -1
  269. package/dist/esm/components/Flags/ie.mjs +36 -1
  270. package/dist/esm/components/Flags/ie.mjs.map +1 -1
  271. package/dist/esm/components/Flags/il.mjs +46 -1
  272. package/dist/esm/components/Flags/il.mjs.map +1 -1
  273. package/dist/esm/components/Flags/in.mjs +74 -1
  274. package/dist/esm/components/Flags/in.mjs.map +1 -1
  275. package/dist/esm/components/Flags/index.mjs +4 -1
  276. package/dist/esm/components/Flags/iq.mjs +40 -1
  277. package/dist/esm/components/Flags/iq.mjs.map +1 -1
  278. package/dist/esm/components/Flags/ir.mjs +112 -1
  279. package/dist/esm/components/Flags/ir.mjs.map +1 -1
  280. package/dist/esm/components/Flags/is.mjs +40 -1
  281. package/dist/esm/components/Flags/is.mjs.map +1 -1
  282. package/dist/esm/components/Flags/it.mjs +36 -1
  283. package/dist/esm/components/Flags/it.mjs.map +1 -1
  284. package/dist/esm/components/Flags/jm.mjs +36 -1
  285. package/dist/esm/components/Flags/jm.mjs.map +1 -1
  286. package/dist/esm/components/Flags/jo.mjs +48 -1
  287. package/dist/esm/components/Flags/jo.mjs.map +1 -1
  288. package/dist/esm/components/Flags/jp.mjs +41 -1
  289. package/dist/esm/components/Flags/jp.mjs.map +1 -1
  290. package/dist/esm/components/Flags/ke.mjs +91 -1
  291. package/dist/esm/components/Flags/ke.mjs.map +1 -1
  292. package/dist/esm/components/Flags/kg.mjs +49 -1
  293. package/dist/esm/components/Flags/kg.mjs.map +1 -1
  294. package/dist/esm/components/Flags/kh.mjs +76 -1
  295. package/dist/esm/components/Flags/kh.mjs.map +1 -1
  296. package/dist/esm/components/Flags/km.mjs +52 -1
  297. package/dist/esm/components/Flags/km.mjs.map +1 -1
  298. package/dist/esm/components/Flags/kr.mjs +64 -1
  299. package/dist/esm/components/Flags/kr.mjs.map +1 -1
  300. package/dist/esm/components/Flags/kw.mjs +44 -1
  301. package/dist/esm/components/Flags/kw.mjs.map +1 -1
  302. package/dist/esm/components/Flags/kz.mjs +94 -1
  303. package/dist/esm/components/Flags/kz.mjs.map +1 -1
  304. package/dist/esm/components/Flags/la.mjs +39 -1
  305. package/dist/esm/components/Flags/la.mjs.map +1 -1
  306. package/dist/esm/components/Flags/lb.mjs +50 -1
  307. package/dist/esm/components/Flags/lb.mjs.map +1 -1
  308. package/dist/esm/components/Flags/li.mjs +136 -1
  309. package/dist/esm/components/Flags/li.mjs.map +1 -1
  310. package/dist/esm/components/Flags/lk.mjs +73 -1
  311. package/dist/esm/components/Flags/lk.mjs.map +1 -1
  312. package/dist/esm/components/Flags/lt.mjs +46 -1
  313. package/dist/esm/components/Flags/lt.mjs.map +1 -1
  314. package/dist/esm/components/Flags/lu.mjs +33 -1
  315. package/dist/esm/components/Flags/lu.mjs.map +1 -1
  316. package/dist/esm/components/Flags/lv.mjs +30 -1
  317. package/dist/esm/components/Flags/lv.mjs.map +1 -1
  318. package/dist/esm/components/Flags/ly.mjs +39 -1
  319. package/dist/esm/components/Flags/ly.mjs.map +1 -1
  320. package/dist/esm/components/Flags/ma.mjs +32 -1
  321. package/dist/esm/components/Flags/ma.mjs.map +1 -1
  322. package/dist/esm/components/Flags/mc.mjs +33 -1
  323. package/dist/esm/components/Flags/mc.mjs.map +1 -1
  324. package/dist/esm/components/Flags/md.mjs +317 -1
  325. package/dist/esm/components/Flags/md.mjs.map +1 -1
  326. package/dist/esm/components/Flags/mk.mjs +37 -1
  327. package/dist/esm/components/Flags/mk.mjs.map +1 -1
  328. package/dist/esm/components/Flags/mm.mjs +58 -1
  329. package/dist/esm/components/Flags/mm.mjs.map +1 -1
  330. package/dist/esm/components/Flags/mn.mjs +59 -1
  331. package/dist/esm/components/Flags/mn.mjs.map +1 -1
  332. package/dist/esm/components/Flags/mo.mjs +42 -1
  333. package/dist/esm/components/Flags/mo.mjs.map +1 -1
  334. package/dist/esm/components/Flags/mr.mjs +37 -1
  335. package/dist/esm/components/Flags/mr.mjs.map +1 -1
  336. package/dist/esm/components/Flags/mt.mjs +153 -1
  337. package/dist/esm/components/Flags/mt.mjs.map +1 -1
  338. package/dist/esm/components/Flags/mv.mjs +40 -1
  339. package/dist/esm/components/Flags/mv.mjs.map +1 -1
  340. package/dist/esm/components/Flags/mx.mjs +1365 -1
  341. package/dist/esm/components/Flags/mx.mjs.map +1 -1
  342. package/dist/esm/components/Flags/my.mjs +78 -1
  343. package/dist/esm/components/Flags/my.mjs.map +1 -1
  344. package/dist/esm/components/Flags/mz.mjs +92 -1
  345. package/dist/esm/components/Flags/mz.mjs.map +1 -1
  346. package/dist/esm/components/Flags/ng.mjs +33 -1
  347. package/dist/esm/components/Flags/ng.mjs.map +1 -1
  348. package/dist/esm/components/Flags/ni.mjs +451 -1
  349. package/dist/esm/components/Flags/ni.mjs.map +1 -1
  350. package/dist/esm/components/Flags/nl.mjs +33 -1
  351. package/dist/esm/components/Flags/nl.mjs.map +1 -1
  352. package/dist/esm/components/Flags/no.mjs +39 -1
  353. package/dist/esm/components/Flags/no.mjs.map +1 -1
  354. package/dist/esm/components/Flags/np.mjs +38 -1
  355. package/dist/esm/components/Flags/np.mjs.map +1 -1
  356. package/dist/esm/components/Flags/nz.mjs +104 -1
  357. package/dist/esm/components/Flags/nz.mjs.map +1 -1
  358. package/dist/esm/components/Flags/om.mjs +539 -1
  359. package/dist/esm/components/Flags/om.mjs.map +1 -1
  360. package/dist/esm/components/Flags/pa.mjs +46 -1
  361. package/dist/esm/components/Flags/pa.mjs.map +1 -1
  362. package/dist/esm/components/Flags/pe.mjs +30 -1
  363. package/dist/esm/components/Flags/pe.mjs.map +1 -1
  364. package/dist/esm/components/Flags/ph.mjs +36 -1
  365. package/dist/esm/components/Flags/ph.mjs.map +1 -1
  366. package/dist/esm/components/Flags/pk.mjs +38 -1
  367. package/dist/esm/components/Flags/pk.mjs.map +1 -1
  368. package/dist/esm/components/Flags/pl.mjs +30 -1
  369. package/dist/esm/components/Flags/pl.mjs.map +1 -1
  370. package/dist/esm/components/Flags/pr.mjs +43 -1
  371. package/dist/esm/components/Flags/pr.mjs.map +1 -1
  372. package/dist/esm/components/Flags/ps.mjs +45 -1
  373. package/dist/esm/components/Flags/ps.mjs.map +1 -1
  374. package/dist/esm/components/Flags/pt.mjs +152 -1
  375. package/dist/esm/components/Flags/pt.mjs.map +1 -1
  376. package/dist/esm/components/Flags/py.mjs +61 -1
  377. package/dist/esm/components/Flags/py.mjs.map +1 -1
  378. package/dist/esm/components/Flags/qa.mjs +30 -1
  379. package/dist/esm/components/Flags/qa.mjs.map +1 -1
  380. package/dist/esm/components/Flags/ro.mjs +36 -1
  381. package/dist/esm/components/Flags/ro.mjs.map +1 -1
  382. package/dist/esm/components/Flags/rs.mjs +820 -1
  383. package/dist/esm/components/Flags/rs.mjs.map +1 -1
  384. package/dist/esm/components/Flags/ru.mjs +33 -1
  385. package/dist/esm/components/Flags/ru.mjs.map +1 -1
  386. package/dist/esm/components/Flags/sa.mjs +79 -1
  387. package/dist/esm/components/Flags/sa.mjs.map +1 -1
  388. package/dist/esm/components/Flags/sd.mjs +44 -1
  389. package/dist/esm/components/Flags/sd.mjs.map +1 -1
  390. package/dist/esm/components/Flags/se.mjs +30 -1
  391. package/dist/esm/components/Flags/se.mjs.map +1 -1
  392. package/dist/esm/components/Flags/sg.mjs +42 -1
  393. package/dist/esm/components/Flags/sg.mjs.map +1 -1
  394. package/dist/esm/components/Flags/si.mjs +59 -1
  395. package/dist/esm/components/Flags/si.mjs.map +1 -1
  396. package/dist/esm/components/Flags/sk.mjs +45 -1
  397. package/dist/esm/components/Flags/sk.mjs.map +1 -1
  398. package/dist/esm/components/Flags/so.mjs +37 -1
  399. package/dist/esm/components/Flags/so.mjs.map +1 -1
  400. package/dist/esm/components/Flags/st.mjs +73 -1
  401. package/dist/esm/components/Flags/st.mjs.map +1 -1
  402. package/dist/esm/components/Flags/sv.mjs +1735 -1
  403. package/dist/esm/components/Flags/sv.mjs.map +1 -1
  404. package/dist/esm/components/Flags/sy.mjs +36 -1
  405. package/dist/esm/components/Flags/sy.mjs.map +1 -1
  406. package/dist/esm/components/Flags/td.mjs +33 -1
  407. package/dist/esm/components/Flags/td.mjs.map +1 -1
  408. package/dist/esm/components/Flags/th.mjs +33 -1
  409. package/dist/esm/components/Flags/th.mjs.map +1 -1
  410. package/dist/esm/components/Flags/tl.mjs +43 -1
  411. package/dist/esm/components/Flags/tl.mjs.map +1 -1
  412. package/dist/esm/components/Flags/tn.mjs +30 -1
  413. package/dist/esm/components/Flags/tn.mjs.map +1 -1
  414. package/dist/esm/components/Flags/tr.mjs +36 -1
  415. package/dist/esm/components/Flags/tr.mjs.map +1 -1
  416. package/dist/esm/components/Flags/tt.mjs +35 -1
  417. package/dist/esm/components/Flags/tt.mjs.map +1 -1
  418. package/dist/esm/components/Flags/tw.mjs +40 -1
  419. package/dist/esm/components/Flags/tw.mjs.map +1 -1
  420. package/dist/esm/components/Flags/tz.mjs +44 -1
  421. package/dist/esm/components/Flags/tz.mjs.map +1 -1
  422. package/dist/esm/components/Flags/ua.mjs +33 -1
  423. package/dist/esm/components/Flags/ua.mjs.map +1 -1
  424. package/dist/esm/components/Flags/ug.mjs +145 -1
  425. package/dist/esm/components/Flags/ug.mjs.map +1 -1
  426. package/dist/esm/components/Flags/us.mjs +45 -1
  427. package/dist/esm/components/Flags/us.mjs.map +1 -1
  428. package/dist/esm/components/Flags/uy.mjs +63 -1
  429. package/dist/esm/components/Flags/uy.mjs.map +1 -1
  430. package/dist/esm/components/Flags/uz.mjs +109 -1
  431. package/dist/esm/components/Flags/uz.mjs.map +1 -1
  432. package/dist/esm/components/Flags/ve.mjs +84 -1
  433. package/dist/esm/components/Flags/ve.mjs.map +1 -1
  434. package/dist/esm/components/Flags/vn.mjs +37 -1
  435. package/dist/esm/components/Flags/vn.mjs.map +1 -1
  436. package/dist/esm/components/Flags/xx.mjs +35 -1
  437. package/dist/esm/components/Flags/xx.mjs.map +1 -1
  438. package/dist/esm/components/Flags/ye.mjs +36 -1
  439. package/dist/esm/components/Flags/ye.mjs.map +1 -1
  440. package/dist/esm/components/Flags/za.mjs +51 -1
  441. package/dist/esm/components/Flags/za.mjs.map +1 -1
  442. package/dist/esm/components/Flags/zw.mjs +70 -1
  443. package/dist/esm/components/Flags/zw.mjs.map +1 -1
  444. package/dist/esm/components/Footer/index.mjs +123 -1
  445. package/dist/esm/components/Footer/index.mjs.map +1 -1
  446. package/dist/esm/components/Form/Form.mjs +65 -1
  447. package/dist/esm/components/Form/Form.mjs.map +1 -1
  448. package/dist/esm/components/Form/FormBase.mjs +50 -1
  449. package/dist/esm/components/Form/FormBase.mjs.map +1 -1
  450. package/dist/esm/components/Form/FormControl.mjs +19 -1
  451. package/dist/esm/components/Form/FormControl.mjs.map +1 -1
  452. package/dist/esm/components/Form/FormDescription.mjs +17 -1
  453. package/dist/esm/components/Form/FormDescription.mjs.map +1 -1
  454. package/dist/esm/components/Form/FormField.mjs +34 -1
  455. package/dist/esm/components/Form/FormField.mjs.map +1 -1
  456. package/dist/esm/components/Form/FormItem.mjs +23 -1
  457. package/dist/esm/components/Form/FormItem.mjs.map +1 -1
  458. package/dist/esm/components/Form/FormLabel.mjs +19 -1
  459. package/dist/esm/components/Form/FormLabel.mjs.map +1 -1
  460. package/dist/esm/components/Form/FormMessage.mjs +21 -1
  461. package/dist/esm/components/Form/FormMessage.mjs.map +1 -1
  462. package/dist/esm/components/Form/elements/AutoSizeTextAreaElement.mjs +14 -1
  463. package/dist/esm/components/Form/elements/AutoSizeTextAreaElement.mjs.map +1 -1
  464. package/dist/esm/components/Form/elements/CheckboxElement.mjs +25 -1
  465. package/dist/esm/components/Form/elements/CheckboxElement.mjs.map +1 -1
  466. package/dist/esm/components/Form/elements/EditableFieldInputElement.mjs +16 -1
  467. package/dist/esm/components/Form/elements/EditableFieldInputElement.mjs.map +1 -1
  468. package/dist/esm/components/Form/elements/EditableFieldTextAreaElement.mjs +16 -1
  469. package/dist/esm/components/Form/elements/EditableFieldTextAreaElement.mjs.map +1 -1
  470. package/dist/esm/components/Form/elements/FormElement.mjs +58 -1
  471. package/dist/esm/components/Form/elements/FormElement.mjs.map +1 -1
  472. package/dist/esm/components/Form/elements/FormElementWrapper.mjs +34 -1
  473. package/dist/esm/components/Form/elements/FormElementWrapper.mjs.map +1 -1
  474. package/dist/esm/components/Form/elements/InputElement.mjs +16 -1
  475. package/dist/esm/components/Form/elements/InputElement.mjs.map +1 -1
  476. package/dist/esm/components/Form/elements/InputPasswordElement.mjs +19 -1
  477. package/dist/esm/components/Form/elements/InputPasswordElement.mjs.map +1 -1
  478. package/dist/esm/components/Form/elements/MultiselectElement.mjs +49 -1
  479. package/dist/esm/components/Form/elements/MultiselectElement.mjs.map +1 -1
  480. package/dist/esm/components/Form/elements/OTPElement.mjs +108 -1
  481. package/dist/esm/components/Form/elements/OTPElement.mjs.map +1 -1
  482. package/dist/esm/components/Form/elements/SearchInputElement.mjs +16 -1
  483. package/dist/esm/components/Form/elements/SearchInputElement.mjs.map +1 -1
  484. package/dist/esm/components/Form/elements/SelectElement.mjs +49 -1
  485. package/dist/esm/components/Form/elements/SelectElement.mjs.map +1 -1
  486. package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs +48 -1
  487. package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs.map +1 -1
  488. package/dist/esm/components/Form/elements/TextAreaElement.mjs +16 -1
  489. package/dist/esm/components/Form/elements/TextAreaElement.mjs.map +1 -1
  490. package/dist/esm/components/Form/elements/index.mjs +10 -1
  491. package/dist/esm/components/Form/index.mjs +5 -1
  492. package/dist/esm/components/Form/layout/FormItemLayout.mjs +24 -1
  493. package/dist/esm/components/Form/layout/FormItemLayout.mjs.map +1 -1
  494. package/dist/esm/components/Form/layout/FormLabelLayout.mjs +20 -1
  495. package/dist/esm/components/Form/layout/FormLabelLayout.mjs.map +1 -1
  496. package/dist/esm/components/Form/layout/RequiredStar.mjs +10 -1
  497. package/dist/esm/components/Form/layout/RequiredStar.mjs.map +1 -1
  498. package/dist/esm/components/Form/layout/index.mjs +4 -1
  499. package/dist/esm/components/HTMLRender/HTMLRender.mjs +67 -1
  500. package/dist/esm/components/HTMLRender/HTMLRender.mjs.map +1 -1
  501. package/dist/esm/components/HTMLRender/index.mjs +3 -1
  502. package/dist/esm/components/Headers/index.mjs +216 -1
  503. package/dist/esm/components/Headers/index.mjs.map +1 -1
  504. package/dist/esm/components/HeightResizer/index.mjs +163 -1
  505. package/dist/esm/components/HeightResizer/index.mjs.map +1 -1
  506. package/dist/esm/components/HideShow/index.mjs +70 -1
  507. package/dist/esm/components/HideShow/index.mjs.map +1 -1
  508. package/dist/esm/components/IDE/Code.mjs +59 -2
  509. package/dist/esm/components/IDE/Code.mjs.map +1 -1
  510. package/dist/esm/components/IDE/CodeBlockClient.mjs +31 -2
  511. package/dist/esm/components/IDE/CodeBlockClient.mjs.map +1 -1
  512. package/dist/esm/components/IDE/CodeBlockServer.mjs +45 -2
  513. package/dist/esm/components/IDE/CodeBlockServer.mjs.map +1 -1
  514. package/dist/esm/components/IDE/CodeBlockShiki.mjs +119 -1
  515. package/dist/esm/components/IDE/CodeBlockShiki.mjs.map +1 -1
  516. package/dist/esm/components/IDE/CodeConditionalRenderer.mjs +20 -1
  517. package/dist/esm/components/IDE/CodeConditionalRenderer.mjs.map +1 -1
  518. package/dist/esm/components/IDE/CodeContext.mjs +44 -1
  519. package/dist/esm/components/IDE/CodeContext.mjs.map +1 -1
  520. package/dist/esm/components/IDE/CodeFormatSelector.mjs +40 -1
  521. package/dist/esm/components/IDE/CodeFormatSelector.mjs.map +1 -1
  522. package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs +41 -1
  523. package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs.map +1 -1
  524. package/dist/esm/components/IDE/CopyCode.mjs +27 -1
  525. package/dist/esm/components/IDE/CopyCode.mjs.map +1 -1
  526. package/dist/esm/components/IDE/FileList.mjs +34 -1
  527. package/dist/esm/components/IDE/FileList.mjs.map +1 -1
  528. package/dist/esm/components/IDE/FileTree.mjs +64 -1
  529. package/dist/esm/components/IDE/FileTree.mjs.map +1 -1
  530. package/dist/esm/components/IDE/IDE.mjs +90 -1
  531. package/dist/esm/components/IDE/IDE.mjs.map +1 -1
  532. package/dist/esm/components/IDE/MarkDownRender.mjs +22 -1
  533. package/dist/esm/components/IDE/MarkDownRender.mjs.map +1 -1
  534. package/dist/esm/components/IDE/MonacoCode.mjs +106 -2
  535. package/dist/esm/components/IDE/MonacoCode.mjs.map +1 -1
  536. package/dist/esm/components/IDE/PackageManagerSelector.mjs +42 -1
  537. package/dist/esm/components/IDE/PackageManagerSelector.mjs.map +1 -1
  538. package/dist/esm/components/IDE/code.content.mjs +58 -1
  539. package/dist/esm/components/IDE/code.content.mjs.map +1 -1
  540. package/dist/esm/components/IDE/copyCode.content.mjs +58 -1
  541. package/dist/esm/components/IDE/copyCode.content.mjs.map +1 -1
  542. package/dist/esm/components/IDE/createFileTree.mjs +31 -1
  543. package/dist/esm/components/IDE/createFileTree.mjs.map +1 -1
  544. package/dist/esm/components/IDE/index.mjs +6 -1
  545. package/dist/esm/components/IDE/selectors.content.mjs +144 -1
  546. package/dist/esm/components/IDE/selectors.content.mjs.map +1 -1
  547. package/dist/esm/components/InformationTag/index.mjs +80 -1
  548. package/dist/esm/components/InformationTag/index.mjs.map +1 -1
  549. package/dist/esm/components/Input/Checkbox.mjs +99 -1
  550. package/dist/esm/components/Input/Checkbox.mjs.map +1 -1
  551. package/dist/esm/components/Input/Input.mjs +65 -1
  552. package/dist/esm/components/Input/Input.mjs.map +1 -1
  553. package/dist/esm/components/Input/InputPassword.mjs +38 -1
  554. package/dist/esm/components/Input/InputPassword.mjs.map +1 -1
  555. package/dist/esm/components/Input/OTPInput.mjs +474 -2
  556. package/dist/esm/components/Input/OTPInput.mjs.map +1 -1
  557. package/dist/esm/components/Input/SearchInput.mjs +17 -1
  558. package/dist/esm/components/Input/SearchInput.mjs.map +1 -1
  559. package/dist/esm/components/Input/index.mjs +7 -1
  560. package/dist/esm/components/KeyboardScreenAdapter/index.mjs +119 -1
  561. package/dist/esm/components/KeyboardScreenAdapter/index.mjs.map +1 -1
  562. package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs +230 -1
  563. package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs.map +1 -1
  564. package/dist/esm/components/KeyboardShortcut/index.mjs +3 -1
  565. package/dist/esm/components/Label/index.mjs +54 -1
  566. package/dist/esm/components/Label/index.mjs.map +1 -1
  567. package/dist/esm/components/LanguageBackground/index.mjs +88 -1
  568. package/dist/esm/components/LanguageBackground/index.mjs.map +1 -1
  569. package/dist/esm/components/Link/Link.mjs +239 -1
  570. package/dist/esm/components/Link/Link.mjs.map +1 -1
  571. package/dist/esm/components/Link/index.mjs +3 -1
  572. package/dist/esm/components/Loader/index.content.mjs +32 -1
  573. package/dist/esm/components/Loader/index.content.mjs.map +1 -1
  574. package/dist/esm/components/Loader/index.mjs +111 -1
  575. package/dist/esm/components/Loader/index.mjs.map +1 -1
  576. package/dist/esm/components/Loader/spinner.mjs +121 -1
  577. package/dist/esm/components/Loader/spinner.mjs.map +1 -1
  578. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +184 -1
  579. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs.map +1 -1
  580. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs +29 -1
  581. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs.map +1 -1
  582. package/dist/esm/components/LocaleSwitcherContentDropDown/index.mjs +4 -1
  583. package/dist/esm/components/LocaleSwitcherContentDropDown/localeSwitcher.content.mjs +182 -1
  584. package/dist/esm/components/LocaleSwitcherContentDropDown/localeSwitcher.content.mjs.map +1 -1
  585. package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs +136 -1
  586. package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs.map +1 -1
  587. package/dist/esm/components/LocaleSwitcherDropDown/index.mjs +3 -1
  588. package/dist/esm/components/LocaleSwitcherDropDown/localeSwitcher.content.mjs +140 -1
  589. package/dist/esm/components/LocaleSwitcherDropDown/localeSwitcher.content.mjs.map +1 -1
  590. package/dist/esm/components/Logo/Logo.mjs +34 -1
  591. package/dist/esm/components/Logo/Logo.mjs.map +1 -1
  592. package/dist/esm/components/Logo/LogoTextOnly.mjs +28 -1
  593. package/dist/esm/components/Logo/LogoTextOnly.mjs.map +1 -1
  594. package/dist/esm/components/Logo/LogoWithText.mjs +34 -1
  595. package/dist/esm/components/Logo/LogoWithText.mjs.map +1 -1
  596. package/dist/esm/components/Logo/LogoWithTextBelow.mjs +34 -1
  597. package/dist/esm/components/Logo/LogoWithTextBelow.mjs.map +1 -1
  598. package/dist/esm/components/Logo/index.mjs +6 -1
  599. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs +171 -1
  600. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
  601. package/dist/esm/components/MarkDownRender/index.mjs +3 -1
  602. package/dist/esm/components/MaxHeightSmoother/index.mjs +143 -1
  603. package/dist/esm/components/MaxHeightSmoother/index.mjs.map +1 -1
  604. package/dist/esm/components/MaxWidthSmoother/index.mjs +18 -1
  605. package/dist/esm/components/MaxWidthSmoother/index.mjs.map +1 -1
  606. package/dist/esm/components/Modal/Modal.mjs +201 -1
  607. package/dist/esm/components/Modal/Modal.mjs.map +1 -1
  608. package/dist/esm/components/Modal/index.mjs +3 -1
  609. package/dist/esm/components/Navbar/Burger.mjs +76 -1
  610. package/dist/esm/components/Navbar/Burger.mjs.map +1 -1
  611. package/dist/esm/components/Navbar/DesktopNavbar.mjs +96 -1
  612. package/dist/esm/components/Navbar/DesktopNavbar.mjs.map +1 -1
  613. package/dist/esm/components/Navbar/MobileNavbar.mjs +169 -1
  614. package/dist/esm/components/Navbar/MobileNavbar.mjs.map +1 -1
  615. package/dist/esm/components/Navbar/index.mjs +86 -1
  616. package/dist/esm/components/Navbar/index.mjs.map +1 -1
  617. package/dist/esm/components/Navbar/useNavigation.mjs +152 -1
  618. package/dist/esm/components/Navbar/useNavigation.mjs.map +1 -1
  619. package/dist/esm/components/Pagination/NumberItemsSelector.mjs +46 -1
  620. package/dist/esm/components/Pagination/NumberItemsSelector.mjs.map +1 -1
  621. package/dist/esm/components/Pagination/Pagination.mjs +173 -1
  622. package/dist/esm/components/Pagination/Pagination.mjs.map +1 -1
  623. package/dist/esm/components/Pagination/ShowingResultsNumberItems.mjs +27 -1
  624. package/dist/esm/components/Pagination/ShowingResultsNumberItems.mjs.map +1 -1
  625. package/dist/esm/components/Pagination/index.mjs +5 -1
  626. package/dist/esm/components/Pagination/pagination.content.mjs +114 -1
  627. package/dist/esm/components/Pagination/pagination.content.mjs.map +1 -1
  628. package/dist/esm/components/Pattern/DotPattern.mjs +121 -1
  629. package/dist/esm/components/Pattern/DotPattern.mjs.map +1 -1
  630. package/dist/esm/components/Pattern/GridPattern.mjs +156 -1
  631. package/dist/esm/components/Pattern/GridPattern.mjs.map +1 -1
  632. package/dist/esm/components/Pattern/SpotLight.mjs +168 -1
  633. package/dist/esm/components/Pattern/SpotLight.mjs.map +1 -1
  634. package/dist/esm/components/Pattern/index.mjs +5 -1
  635. package/dist/esm/components/Popover/dynamic.mjs +128 -1
  636. package/dist/esm/components/Popover/dynamic.mjs.map +1 -1
  637. package/dist/esm/components/Popover/index.mjs +4 -1
  638. package/dist/esm/components/Popover/static.mjs +192 -1
  639. package/dist/esm/components/Popover/static.mjs.map +1 -1
  640. package/dist/esm/components/PressableSpan/PressableSpan.mjs +158 -1
  641. package/dist/esm/components/PressableSpan/PressableSpan.mjs.map +1 -1
  642. package/dist/esm/components/PressableSpan/index.mjs +3 -1
  643. package/dist/esm/components/RightDrawer/RightDrawer.mjs +179 -1
  644. package/dist/esm/components/RightDrawer/RightDrawer.mjs.map +1 -1
  645. package/dist/esm/components/RightDrawer/index.mjs +4 -1
  646. package/dist/esm/components/RightDrawer/isElementAtTopAndNotCovered.mjs +60 -1
  647. package/dist/esm/components/RightDrawer/isElementAtTopAndNotCovered.mjs.map +1 -1
  648. package/dist/esm/components/RightDrawer/rightDrawer.content.mjs +59 -1
  649. package/dist/esm/components/RightDrawer/rightDrawer.content.mjs.map +1 -1
  650. package/dist/esm/components/RightDrawer/useRightDrawer.mjs +64 -1
  651. package/dist/esm/components/RightDrawer/useRightDrawer.mjs.map +1 -1
  652. package/dist/esm/components/Select/Multiselect.mjs +353 -1
  653. package/dist/esm/components/Select/Multiselect.mjs.map +1 -1
  654. package/dist/esm/components/Select/Select.mjs +277 -1
  655. package/dist/esm/components/Select/Select.mjs.map +1 -1
  656. package/dist/esm/components/Select/index.mjs +4 -1
  657. package/dist/esm/components/SocialNetworks/DiscordLogo.mjs +20 -1
  658. package/dist/esm/components/SocialNetworks/DiscordLogo.mjs.map +1 -1
  659. package/dist/esm/components/SocialNetworks/FacebookLogo.mjs +17 -1
  660. package/dist/esm/components/SocialNetworks/FacebookLogo.mjs.map +1 -1
  661. package/dist/esm/components/SocialNetworks/InstagramLogo.mjs +29 -1
  662. package/dist/esm/components/SocialNetworks/InstagramLogo.mjs.map +1 -1
  663. package/dist/esm/components/SocialNetworks/LinkedInLogo.mjs +32 -1
  664. package/dist/esm/components/SocialNetworks/LinkedInLogo.mjs.map +1 -1
  665. package/dist/esm/components/SocialNetworks/ProductHuntLogo.mjs +15 -1
  666. package/dist/esm/components/SocialNetworks/ProductHuntLogo.mjs.map +1 -1
  667. package/dist/esm/components/SocialNetworks/TiktokLogo.mjs +17 -1
  668. package/dist/esm/components/SocialNetworks/TiktokLogo.mjs.map +1 -1
  669. package/dist/esm/components/SocialNetworks/XLogo.mjs +17 -1
  670. package/dist/esm/components/SocialNetworks/XLogo.mjs.map +1 -1
  671. package/dist/esm/components/SocialNetworks/YoutubeLogo.mjs +17 -1
  672. package/dist/esm/components/SocialNetworks/YoutubeLogo.mjs.map +1 -1
  673. package/dist/esm/components/SocialNetworks/index.mjs +64 -1
  674. package/dist/esm/components/SocialNetworks/index.mjs.map +1 -1
  675. package/dist/esm/components/SwitchSelector/index.mjs +145 -1
  676. package/dist/esm/components/SwitchSelector/index.mjs.map +1 -1
  677. package/dist/esm/components/Tab/Tab.mjs +148 -1
  678. package/dist/esm/components/Tab/Tab.mjs.map +1 -1
  679. package/dist/esm/components/Tab/TabContext.mjs +33 -1
  680. package/dist/esm/components/Tab/TabContext.mjs.map +1 -1
  681. package/dist/esm/components/Tab/index.mjs +3 -1
  682. package/dist/esm/components/TabSelector/TabSelector.mjs +111 -1
  683. package/dist/esm/components/TabSelector/TabSelector.mjs.map +1 -1
  684. package/dist/esm/components/TabSelector/index.mjs +3 -1
  685. package/dist/esm/components/Table/Table.mjs +195 -1
  686. package/dist/esm/components/Table/Table.mjs.map +1 -1
  687. package/dist/esm/components/Table/index.mjs +3 -1
  688. package/dist/esm/components/Table/table.content.mjs +36 -1
  689. package/dist/esm/components/Table/table.content.mjs.map +1 -1
  690. package/dist/esm/components/Tag/index.mjs +316 -1
  691. package/dist/esm/components/Tag/index.mjs.map +1 -1
  692. package/dist/esm/components/Terminal/Terminal.mjs +160 -3
  693. package/dist/esm/components/Terminal/Terminal.mjs.map +1 -1
  694. package/dist/esm/components/Terminal/index.mjs +3 -1
  695. package/dist/esm/components/Terminal/terminal.content.mjs +60 -1
  696. package/dist/esm/components/Terminal/terminal.content.mjs.map +1 -1
  697. package/dist/esm/components/TextArea/AutoSizeTextArea.mjs +106 -1
  698. package/dist/esm/components/TextArea/AutoSizeTextArea.mjs.map +1 -1
  699. package/dist/esm/components/TextArea/AutocompleteTextArea.mjs +257 -1
  700. package/dist/esm/components/TextArea/AutocompleteTextArea.mjs.map +1 -1
  701. package/dist/esm/components/TextArea/TextArea.mjs +58 -1
  702. package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
  703. package/dist/esm/components/TextArea/index.mjs +5 -1
  704. package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs +79 -1
  705. package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs.map +1 -1
  706. package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs +53 -1
  707. package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs.map +1 -1
  708. package/dist/esm/components/ThemeSwitcherDropDown/index.mjs +5 -1
  709. package/dist/esm/components/ThemeSwitcherDropDown/types.mjs +10 -1
  710. package/dist/esm/components/ThemeSwitcherDropDown/types.mjs.map +1 -1
  711. package/dist/esm/components/Toaster/Toast.mjs +187 -1
  712. package/dist/esm/components/Toaster/Toast.mjs.map +1 -1
  713. package/dist/esm/components/Toaster/Toaster.mjs +66 -1
  714. package/dist/esm/components/Toaster/Toaster.mjs.map +1 -1
  715. package/dist/esm/components/Toaster/index.mjs +5 -1
  716. package/dist/esm/components/Toaster/useToast.mjs +308 -1
  717. package/dist/esm/components/Toaster/useToast.mjs.map +1 -1
  718. package/dist/esm/components/WithResizer/index.mjs +200 -1
  719. package/dist/esm/components/WithResizer/index.mjs.map +1 -1
  720. package/dist/esm/components/index.mjs +105 -1
  721. package/dist/esm/hooks/index.mjs +22 -1
  722. package/dist/esm/hooks/reactQuery.mjs +1029 -1
  723. package/dist/esm/hooks/reactQuery.mjs.map +1 -1
  724. package/dist/esm/hooks/useAuth/index.mjs +5 -1
  725. package/dist/esm/hooks/useAuth/useAuth.mjs +21 -1
  726. package/dist/esm/hooks/useAuth/useAuth.mjs.map +1 -1
  727. package/dist/esm/hooks/useAuth/useOAuth2.mjs +28 -1
  728. package/dist/esm/hooks/useAuth/useOAuth2.mjs.map +1 -1
  729. package/dist/esm/hooks/useAuth/useSession.mjs +42 -1
  730. package/dist/esm/hooks/useAuth/useSession.mjs.map +1 -1
  731. package/dist/esm/hooks/useDevice.mjs +71 -1
  732. package/dist/esm/hooks/useDevice.mjs.map +1 -1
  733. package/dist/esm/hooks/useGetElementById.mjs +15 -1
  734. package/dist/esm/hooks/useGetElementById.mjs.map +1 -1
  735. package/dist/esm/hooks/useGetElementOrWindow.mjs +15 -1
  736. package/dist/esm/hooks/useGetElementOrWindow.mjs.map +1 -1
  737. package/dist/esm/hooks/useHorizontalSwipe.mjs +123 -1
  738. package/dist/esm/hooks/useHorizontalSwipe.mjs.map +1 -1
  739. package/dist/esm/hooks/useIntlayerAPI.mjs +21 -1
  740. package/dist/esm/hooks/useIntlayerAPI.mjs.map +1 -1
  741. package/dist/esm/hooks/useIsDarkMode.mjs +15 -1
  742. package/dist/esm/hooks/useIsDarkMode.mjs.map +1 -1
  743. package/dist/esm/hooks/useIsMounted.mjs +15 -1
  744. package/dist/esm/hooks/useIsMounted.mjs.map +1 -1
  745. package/dist/esm/hooks/useItemSelector.mjs +146 -1
  746. package/dist/esm/hooks/useItemSelector.mjs.map +1 -1
  747. package/dist/esm/hooks/useKeyboardDetector.mjs +26 -1
  748. package/dist/esm/hooks/useKeyboardDetector.mjs.map +1 -1
  749. package/dist/esm/hooks/usePersistedStore.mjs +65 -1
  750. package/dist/esm/hooks/usePersistedStore.mjs.map +1 -1
  751. package/dist/esm/hooks/useScreenWidth.mjs +20 -1
  752. package/dist/esm/hooks/useScreenWidth.mjs.map +1 -1
  753. package/dist/esm/hooks/useScrollBlockage/index.mjs +30 -1
  754. package/dist/esm/hooks/useScrollBlockage/index.mjs.map +1 -1
  755. package/dist/esm/hooks/useScrollBlockage/useScrollBlockageStore.mjs +70 -1
  756. package/dist/esm/hooks/useScrollBlockage/useScrollBlockageStore.mjs.map +1 -1
  757. package/dist/esm/hooks/useScrollDetection.mjs +61 -1
  758. package/dist/esm/hooks/useScrollDetection.mjs.map +1 -1
  759. package/dist/esm/hooks/useScrollY.mjs +68 -1
  760. package/dist/esm/hooks/useScrollY.mjs.map +1 -1
  761. package/dist/esm/hooks/useSearch.mjs +50 -1
  762. package/dist/esm/hooks/useSearch.mjs.map +1 -1
  763. package/dist/esm/hooks/useUser/index.mjs +28 -1
  764. package/dist/esm/hooks/useUser/index.mjs.map +1 -1
  765. package/dist/esm/libs/auth.mjs +184 -1
  766. package/dist/esm/libs/auth.mjs.map +1 -1
  767. package/dist/esm/libs/index.mjs +3 -1
  768. package/dist/esm/providers/ReactQueryProvider.mjs +86 -1
  769. package/dist/esm/providers/ReactQueryProvider.mjs.map +1 -1
  770. package/dist/esm/providers/index.mjs +4 -1
  771. package/dist/esm/tailwind.config.mjs +15 -1
  772. package/dist/esm/tailwind.config.mjs.map +1 -1
  773. package/dist/esm/utils/cn.mjs +8 -1
  774. package/dist/esm/utils/cn.mjs.map +1 -1
  775. package/dist/esm/utils/image.mjs +51 -1
  776. package/dist/esm/utils/image.mjs.map +1 -1
  777. package/dist/esm/utils/object.mjs +32 -1
  778. package/dist/esm/utils/object.mjs.map +1 -1
  779. package/dist/types/components/Badge/index.d.ts +1 -1
  780. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +2 -2
  781. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts.map +1 -1
  782. package/dist/types/components/Browser/Browser.content.d.ts +16 -16
  783. package/dist/types/components/Browser/Browser.content.d.ts.map +1 -1
  784. package/dist/types/components/Button/Button.d.ts +3 -3
  785. package/dist/types/components/Carousel/index.content.d.ts +6 -6
  786. package/dist/types/components/Carousel/index.content.d.ts.map +1 -1
  787. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +2 -2
  788. package/dist/types/components/Command/index.d.ts +2 -2
  789. package/dist/types/components/Container/index.d.ts +6 -6
  790. package/dist/types/components/CopyButton/CopyButton.content.d.ts +2 -2
  791. package/dist/types/components/CopyButton/CopyButton.content.d.ts.map +1 -1
  792. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts.map +1 -1
  793. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts.map +1 -1
  794. package/dist/types/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts.map +1 -1
  795. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
  796. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +24 -24
  797. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts.map +1 -1
  798. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +8 -8
  799. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts.map +1 -1
  800. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +54 -54
  801. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts.map +1 -1
  802. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +32 -32
  803. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts.map +1 -1
  804. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +24 -24
  805. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts.map +1 -1
  806. package/dist/types/components/DictionaryFieldEditor/NodeTypeSelector.d.ts.map +1 -1
  807. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +32 -32
  808. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts.map +1 -1
  809. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +8 -8
  810. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts.map +1 -1
  811. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts +6 -6
  812. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts.map +1 -1
  813. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +4 -4
  814. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts.map +1 -1
  815. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +30 -30
  816. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts.map +1 -1
  817. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts +2 -2
  818. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts.map +1 -1
  819. package/dist/types/components/IDE/code.content.d.ts +4 -4
  820. package/dist/types/components/IDE/code.content.d.ts.map +1 -1
  821. package/dist/types/components/IDE/copyCode.content.d.ts +4 -4
  822. package/dist/types/components/IDE/copyCode.content.d.ts.map +1 -1
  823. package/dist/types/components/IDE/selectors.content.d.ts +12 -12
  824. package/dist/types/components/IDE/selectors.content.d.ts.map +1 -1
  825. package/dist/types/components/Input/Checkbox.d.ts +1 -1
  826. package/dist/types/components/Link/Link.d.ts +3 -3
  827. package/dist/types/components/Loader/index.content.d.ts +2 -2
  828. package/dist/types/components/Loader/index.content.d.ts.map +1 -1
  829. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +16 -16
  830. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts.map +1 -1
  831. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +12 -12
  832. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts.map +1 -1
  833. package/dist/types/components/Pagination/Pagination.d.ts +1 -1
  834. package/dist/types/components/Pagination/pagination.content.d.ts +10 -10
  835. package/dist/types/components/Pagination/pagination.content.d.ts.map +1 -1
  836. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts +4 -4
  837. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts.map +1 -1
  838. package/dist/types/components/SwitchSelector/index.d.ts +1 -1
  839. package/dist/types/components/TabSelector/TabSelector.d.ts +1 -1
  840. package/dist/types/components/Table/table.content.d.ts +2 -2
  841. package/dist/types/components/Table/table.content.d.ts.map +1 -1
  842. package/dist/types/components/Tag/index.d.ts +2 -2
  843. package/dist/types/components/Terminal/terminal.content.d.ts +4 -4
  844. package/dist/types/components/Terminal/terminal.content.d.ts.map +1 -1
  845. package/package.json +14 -14
@@ -1,2 +1,250 @@
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{useEffect as i,useImperativeHandle as a,useRef as o,useState as s}from"react";import{ArrowLeft as c,ArrowRight as l,RotateCw as u}from"lucide-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]=s(m),[E,D]=s(m),[O,k]=s([m]),[A,j]=s(0),[M,N]=s(null),[P,F]=s(!1),I=o(null);a(x,()=>I.current,[]);let L=p(`browser`);i(()=>{T(m),D(m),k([m]),j(0),N(null),F(!1)},[m]),i(()=>{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:c}),d(t,{type:`button`,onClick:B,disabled:!J,variant:`hoverable`,size:`icon-md`,label:L.forwardButtonLabel.value,Icon:l})]}),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:u}),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};
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 };
2
250
  //# 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":"4ZA8BA,MAAa,GAAW,CACtB,aAAa,sBACb,OACA,YACA,QACA,OAAO,KACP,aAAc,EACd,UAAU,0GACV,MACA,oBACA,GAAG,KACe,CAElB,GAAM,CAAC,EAAU,GAAe,EAAS,EAAW,CAC9C,CAAC,EAAY,GAAiB,EAAS,EAAW,CAGlD,CAAC,EAAS,GAAc,EAAmB,CAAC,EAAW,CAAC,CACxD,CAAC,EAAc,GAAmB,EAAS,EAAE,CAE7C,CAAC,EAAO,GAAY,EAAwB,KAAK,CACjD,CAAC,EAAW,GAAgB,EAAS,GAAM,CAC3C,EAAoB,EAA0B,KAAK,CAEzD,EAAoB,MAAW,EAAkB,QAAU,EAAE,CAAC,CAC9D,IAAM,EAAU,EAAY,UAAU,CAKtC,MAAgB,CACd,EAAY,EAAW,CACvB,EAAc,EAAW,CACzB,EAAW,CAAC,EAAW,CAAC,CACxB,EAAgB,EAAE,CAClB,EAAS,KAAK,CACd,EAAa,GAAM,EAClB,CAAC,EAAW,CAAC,CAGhB,MAAgB,CACT,KAEL,GAAI,CACF,IAAM,EAAa,GAAqB,EAElC,EAAU,GADD,IAAI,IAAI,EAAW,CAAC,SACP,IAG5B,EAAY,EAAQ,CAGpB,IAAI,EAAiB,GACrB,GAAI,EAAkB,SAAS,cAC7B,GAAI,CACF,IAAM,EACJ,EAAkB,QAAQ,cAAc,SAAS,KAC/C,IAAI,IAAI,EAAkB,CAAC,OAAS,IAAI,IAAI,EAAQ,CAAC,OACvD,EAAiB,SAEb,EAQN,EAAQ,KAAkB,IAC5B,EAAY,GAAS,CACnB,IAAM,EAAa,EAAK,MAAM,EAAG,EAAe,EAAE,CAElD,OADA,EAAW,KAAK,EAAQ,CACjB,GACP,CACF,EAAiB,GAAS,EAAO,EAAE,EAKhC,GACH,EAAc,EAAQ,CAGxB,EAAS,KAAK,MACR,IAGP,CAAC,EAAM,EAAmB,EAAW,CAAC,CAIzC,IAAM,EAAoB,GAAgB,CACxC,GAAI,CACF,IAAM,EAAY,EAAa,EAAI,CAGnC,GAAI,IAAc,EAAY,CAC5B,GAAc,CACd,OAGF,EAAc,EAAU,CACxB,EAAY,EAAU,CACtB,EAAS,KAAK,CAGd,IAAM,EAAa,EAAQ,MAAM,EAAG,EAAe,EAAE,CACrD,EAAW,KAAK,EAAU,CAC1B,EAAW,EAAW,CACtB,EAAgB,EAAW,OAAS,EAAE,OAC/B,EAAG,CAER,aAAa,OACb,EAAE,UAAY,qCACd,EAEA,EACE,EAAQ,wBAAwB,OAC9B,kBAAkB,EAAkB,eACvC,CAED,EAAS,EAAQ,aAAa,MAAM,GAKpC,MAAmB,CACvB,GAAI,EAAe,EAAG,CACpB,IAAM,EAAW,EAAe,EAC1B,EAAU,EAAQ,GACxB,EAAgB,EAAS,CACzB,EAAc,EAAQ,CACtB,EAAY,EAAQ,CACpB,EAAS,KAAK,GAIZ,MAAsB,CAC1B,GAAI,EAAe,EAAQ,OAAS,EAAG,CACrC,IAAM,EAAW,EAAe,EAC1B,EAAU,EAAQ,GACxB,EAAgB,EAAS,CACzB,EAAc,EAAQ,CACtB,EAAY,EAAQ,CACpB,EAAS,KAAK,GAIZ,EAAgB,GAAkC,CACtD,EAAE,gBAAgB,CAClB,EAAa,GAAK,CAClB,EAAiB,EAAS,EAGtB,MAAqB,CACzB,GAAI,EAAkB,QAAS,CAE7B,IAAM,EAAM,EAAkB,QAAQ,IACtC,EAAkB,QAAQ,IAAM,GAChC,eAAiB,CACX,EAAkB,UAAS,EAAkB,QAAQ,IAAM,IAC9D,GAAG,GAKJ,EAAmB,GACnB,IAAS,aACT,0BAA0B,KAAK,EAAK,EACpC,gBAAgB,KAAK,EAAK,CAAS,GAIvC,EAHI,CAAC,iBAAiB,KAAK,EAAK,EAC5B,QAAQ,KAAK,EAAK,EAAI,QAAQ,KAAK,EAAK,EACxC,EAAK,SAAS,KAAK,EACnB,CAAC,EAAK,SAAS,IAAI,EAInB,MAAyC,CAC7C,GAAI,CAAC,EAAmB,OAAO,KAC/B,GAAI,CACF,OAAO,IAAI,IAAI,EAAkB,MAC3B,CACN,OAAO,OAIL,EAAgB,GAAgB,CACpC,IAAM,EAAU,EAAI,MAAM,CAC1B,GAAI,CAAC,GAAW,KAAK,KAAK,EAAQ,CAAE,MAAU,MAAM,UAAU,CAE9D,IAAM,EAAoB,GAAsB,CAGhD,GAFuB,EAAQ,WAAW,IAAI,EAAI,CAAC,EAAQ,WAAW,KAAK,CAMzE,OAHI,EACK,IAAI,IAAI,GAAG,EAAkB,SAAS,IAAU,CAAC,UAAU,CAE7D,IAAI,IAAI,GAAG,IAAI,IAAI,EAAW,CAAC,SAAS,IAAU,CAAC,UAAU,CAItE,IAAM,EADc,4BAA4B,KAAK,EAAQ,CAC7B,EAAU,WAAW,IAC/C,EAAM,IAAI,IAAI,EAAU,CAE9B,GAAI,EAAI,WAAa,SAAW,EAAI,WAAa,SAC/C,MAAU,MAAM,0BAA0B,CAG5C,GAAI,CAAC,EAAgB,EAAI,SAAS,CAAE,MAAU,MAAM,eAAe,CAEnE,GAAI,GAQE,EANF,EAAI,WAAa,EAAkB,UACnC,EAAI,WAAa,EAAkB,WAClC,EAAkB,OAAS,IAC1B,EAAI,OAAS,EAAkB,MAC/B,EAAI,OAAS,EAAkB,OAElB,MAAU,MAAM,oCAAoC,CAGvE,OAAO,EAAI,UAAU,EAGjB,EAAY,GAAa,CAAC,CAAC,EAC3B,EAAY,EAAe,EAC3B,EAAe,EAAe,EAAQ,OAAS,EAErD,OACE,EAAC,UAAD,CACE,UAAW,EACT,4HACA,EACD,CACM,QACP,aAAY,GAAa,EAAQ,UAAU,eAN7C,CASE,EAAC,MAAD,CAAK,UAAU,4FAAf,CAEE,EAAC,MAAD,CAAK,UAAU,mCAAf,CACE,EAAC,EAAD,CACE,KAAK,SACL,QAAS,EACT,SAAU,CAAC,EACX,QAAQ,YACR,KAAK,UACL,MAAO,EAAQ,gBAAgB,MAC/B,KAAM,EACN,CAAA,CACF,EAAC,EAAD,CACE,KAAK,SACL,QAAS,EACT,SAAU,CAAC,EACX,QAAQ,YACR,KAAK,UACL,MAAO,EAAQ,mBAAmB,MAClC,KAAM,EACN,CAAA,CACE,GAGN,EAAC,OAAD,CACE,SAAU,EACV,WAAA,GACA,UAAW,EACT,GAAe,CACf,mFACA,yDACD,UAPH,CASE,EAAC,QAAD,CAAO,QAAQ,cAAc,UAAU,mBACpC,EAAQ,SAAS,MACZ,CAAA,CACR,EAAC,EAAD,CACE,GAAG,cACH,KAAK,OACL,UAAU,MACV,WAAY,GACZ,eAAe,MACf,QAAQ,YACR,UAAU,YACV,KAAK,KACL,YAAY,MACZ,MAAO,EACP,SAAW,GAAM,CACf,EAAY,EAAE,OAAO,MAAM,CACvB,GAAW,EAAS,KAAK,EAE/B,YAAa,EAAQ,eAAe,MACpC,aAAY,EAAQ,SAAS,MAC7B,eAAc,EACd,mBAAkB,EAAY,oBAAsB,IAAA,GACpD,CAAA,CAEF,EAAC,EAAD,CACE,KAAK,SACL,QAAS,EACT,QAAQ,YACR,KAAK,UACL,UAAU,OACV,MAAO,kCACP,KAAM,EACN,CAAA,CAGF,EAAC,SAAD,CAAQ,KAAK,SAAS,UAAU,mBAAmB,SAAU,GAAM,CAAA,CAC9D,GAGN,GACC,EAAC,MAAD,CAAK,UAAU,8CACb,EAAC,IAAD,CACE,GAAG,oBACH,KAAK,QACL,YAAU,YACV,UAAU,gGAET,EACC,CAAA,CACA,CAAA,CAEJ,GAGN,EAAC,MAAD,CAAK,UAAU,uGACb,EAAC,SAAD,CACE,IAAK,EACL,IAAK,EACL,MAAO,EAAQ,YAAY,MAC3B,UAAU,mBACD,UACT,QAAQ,OACR,YAAU,SACV,GAAI,EACJ,CAAA,CACE,CAAA,CACE"}
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 +1,3 @@
1
- import{Browser as e}from"./Browser.mjs";export{e as Browser};
1
+ import { Browser } from "./Browser.mjs";
2
+
3
+ export { Browser };
@@ -1,2 +1,288 @@
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};
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 };
2
288
  //# sourceMappingURL=Button.mjs.map