@intlayer/design-system 8.4.4 → 8.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (856) 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 +131 -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 +92 -1
  700. package/dist/esm/components/TextArea/AutocompleteTextArea.mjs.map +1 -1
  701. package/dist/esm/components/TextArea/ContentEditableTextArea.mjs +444 -0
  702. package/dist/esm/components/TextArea/ContentEditableTextArea.mjs.map +1 -0
  703. package/dist/esm/components/TextArea/TextArea.mjs +58 -1
  704. package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
  705. package/dist/esm/components/TextArea/index.mjs +6 -1
  706. package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs +79 -1
  707. package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs.map +1 -1
  708. package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs +53 -1
  709. package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs.map +1 -1
  710. package/dist/esm/components/ThemeSwitcherDropDown/index.mjs +5 -1
  711. package/dist/esm/components/ThemeSwitcherDropDown/types.mjs +10 -1
  712. package/dist/esm/components/ThemeSwitcherDropDown/types.mjs.map +1 -1
  713. package/dist/esm/components/Toaster/Toast.mjs +187 -1
  714. package/dist/esm/components/Toaster/Toast.mjs.map +1 -1
  715. package/dist/esm/components/Toaster/Toaster.mjs +66 -1
  716. package/dist/esm/components/Toaster/Toaster.mjs.map +1 -1
  717. package/dist/esm/components/Toaster/index.mjs +5 -1
  718. package/dist/esm/components/Toaster/useToast.mjs +308 -1
  719. package/dist/esm/components/Toaster/useToast.mjs.map +1 -1
  720. package/dist/esm/components/WithResizer/index.mjs +200 -1
  721. package/dist/esm/components/WithResizer/index.mjs.map +1 -1
  722. package/dist/esm/components/index.mjs +106 -1
  723. package/dist/esm/hooks/index.mjs +22 -1
  724. package/dist/esm/hooks/reactQuery.mjs +1029 -1
  725. package/dist/esm/hooks/reactQuery.mjs.map +1 -1
  726. package/dist/esm/hooks/useAuth/index.mjs +5 -1
  727. package/dist/esm/hooks/useAuth/useAuth.mjs +21 -1
  728. package/dist/esm/hooks/useAuth/useAuth.mjs.map +1 -1
  729. package/dist/esm/hooks/useAuth/useOAuth2.mjs +28 -1
  730. package/dist/esm/hooks/useAuth/useOAuth2.mjs.map +1 -1
  731. package/dist/esm/hooks/useAuth/useSession.mjs +42 -1
  732. package/dist/esm/hooks/useAuth/useSession.mjs.map +1 -1
  733. package/dist/esm/hooks/useDevice.mjs +71 -1
  734. package/dist/esm/hooks/useDevice.mjs.map +1 -1
  735. package/dist/esm/hooks/useGetElementById.mjs +15 -1
  736. package/dist/esm/hooks/useGetElementById.mjs.map +1 -1
  737. package/dist/esm/hooks/useGetElementOrWindow.mjs +15 -1
  738. package/dist/esm/hooks/useGetElementOrWindow.mjs.map +1 -1
  739. package/dist/esm/hooks/useHorizontalSwipe.mjs +123 -1
  740. package/dist/esm/hooks/useHorizontalSwipe.mjs.map +1 -1
  741. package/dist/esm/hooks/useIntlayerAPI.mjs +21 -1
  742. package/dist/esm/hooks/useIntlayerAPI.mjs.map +1 -1
  743. package/dist/esm/hooks/useIsDarkMode.mjs +15 -1
  744. package/dist/esm/hooks/useIsDarkMode.mjs.map +1 -1
  745. package/dist/esm/hooks/useIsMounted.mjs +15 -1
  746. package/dist/esm/hooks/useIsMounted.mjs.map +1 -1
  747. package/dist/esm/hooks/useItemSelector.mjs +146 -1
  748. package/dist/esm/hooks/useItemSelector.mjs.map +1 -1
  749. package/dist/esm/hooks/useKeyboardDetector.mjs +26 -1
  750. package/dist/esm/hooks/useKeyboardDetector.mjs.map +1 -1
  751. package/dist/esm/hooks/usePersistedStore.mjs +65 -1
  752. package/dist/esm/hooks/usePersistedStore.mjs.map +1 -1
  753. package/dist/esm/hooks/useScreenWidth.mjs +20 -1
  754. package/dist/esm/hooks/useScreenWidth.mjs.map +1 -1
  755. package/dist/esm/hooks/useScrollBlockage/index.mjs +30 -1
  756. package/dist/esm/hooks/useScrollBlockage/index.mjs.map +1 -1
  757. package/dist/esm/hooks/useScrollBlockage/useScrollBlockageStore.mjs +70 -1
  758. package/dist/esm/hooks/useScrollBlockage/useScrollBlockageStore.mjs.map +1 -1
  759. package/dist/esm/hooks/useScrollDetection.mjs +61 -1
  760. package/dist/esm/hooks/useScrollDetection.mjs.map +1 -1
  761. package/dist/esm/hooks/useScrollY.mjs +68 -1
  762. package/dist/esm/hooks/useScrollY.mjs.map +1 -1
  763. package/dist/esm/hooks/useSearch.mjs +50 -1
  764. package/dist/esm/hooks/useSearch.mjs.map +1 -1
  765. package/dist/esm/hooks/useUser/index.mjs +28 -1
  766. package/dist/esm/hooks/useUser/index.mjs.map +1 -1
  767. package/dist/esm/libs/auth.mjs +184 -1
  768. package/dist/esm/libs/auth.mjs.map +1 -1
  769. package/dist/esm/libs/index.mjs +3 -1
  770. package/dist/esm/providers/ReactQueryProvider.mjs +86 -1
  771. package/dist/esm/providers/ReactQueryProvider.mjs.map +1 -1
  772. package/dist/esm/providers/index.mjs +4 -1
  773. package/dist/esm/tailwind.config.mjs +15 -1
  774. package/dist/esm/tailwind.config.mjs.map +1 -1
  775. package/dist/esm/utils/cn.mjs +8 -1
  776. package/dist/esm/utils/cn.mjs.map +1 -1
  777. package/dist/esm/utils/image.mjs +51 -1
  778. package/dist/esm/utils/image.mjs.map +1 -1
  779. package/dist/esm/utils/object.mjs +32 -1
  780. package/dist/esm/utils/object.mjs.map +1 -1
  781. package/dist/types/components/Badge/index.d.ts +2 -2
  782. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +2 -2
  783. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts.map +1 -1
  784. package/dist/types/components/Browser/Browser.content.d.ts +16 -16
  785. package/dist/types/components/Browser/Browser.content.d.ts.map +1 -1
  786. package/dist/types/components/Button/Button.d.ts +3 -3
  787. package/dist/types/components/Carousel/index.content.d.ts +6 -6
  788. package/dist/types/components/Carousel/index.content.d.ts.map +1 -1
  789. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +2 -2
  790. package/dist/types/components/Command/index.d.ts +1 -1
  791. package/dist/types/components/Container/index.d.ts +7 -7
  792. package/dist/types/components/CopyButton/CopyButton.content.d.ts +2 -2
  793. package/dist/types/components/CopyButton/CopyButton.content.d.ts.map +1 -1
  794. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts.map +1 -1
  795. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts.map +1 -1
  796. package/dist/types/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts.map +1 -1
  797. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
  798. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +24 -24
  799. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts.map +1 -1
  800. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +8 -8
  801. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts.map +1 -1
  802. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +54 -54
  803. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts.map +1 -1
  804. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +32 -32
  805. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts.map +1 -1
  806. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +24 -24
  807. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts.map +1 -1
  808. package/dist/types/components/DictionaryFieldEditor/NodeTypeSelector.d.ts.map +1 -1
  809. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +32 -32
  810. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts.map +1 -1
  811. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +8 -8
  812. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts.map +1 -1
  813. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts +6 -6
  814. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts.map +1 -1
  815. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +4 -4
  816. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts.map +1 -1
  817. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +30 -30
  818. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts.map +1 -1
  819. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts +2 -2
  820. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts.map +1 -1
  821. package/dist/types/components/IDE/CodeBlockShiki.d.ts.map +1 -1
  822. package/dist/types/components/IDE/code.content.d.ts +4 -4
  823. package/dist/types/components/IDE/code.content.d.ts.map +1 -1
  824. package/dist/types/components/IDE/copyCode.content.d.ts +4 -4
  825. package/dist/types/components/IDE/copyCode.content.d.ts.map +1 -1
  826. package/dist/types/components/IDE/selectors.content.d.ts +12 -12
  827. package/dist/types/components/IDE/selectors.content.d.ts.map +1 -1
  828. package/dist/types/components/Input/Checkbox.d.ts +2 -2
  829. package/dist/types/components/Input/Input.d.ts +1 -1
  830. package/dist/types/components/Input/OTPInput.d.ts +1 -1
  831. package/dist/types/components/Link/Link.d.ts +3 -3
  832. package/dist/types/components/Loader/index.content.d.ts +2 -2
  833. package/dist/types/components/Loader/index.content.d.ts.map +1 -1
  834. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +16 -16
  835. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts.map +1 -1
  836. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +12 -12
  837. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts.map +1 -1
  838. package/dist/types/components/Pagination/Pagination.d.ts +2 -2
  839. package/dist/types/components/Pagination/pagination.content.d.ts +10 -10
  840. package/dist/types/components/Pagination/pagination.content.d.ts.map +1 -1
  841. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts +4 -4
  842. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts.map +1 -1
  843. package/dist/types/components/SwitchSelector/index.d.ts +2 -2
  844. package/dist/types/components/TabSelector/TabSelector.d.ts +1 -1
  845. package/dist/types/components/Table/table.content.d.ts +2 -2
  846. package/dist/types/components/Table/table.content.d.ts.map +1 -1
  847. package/dist/types/components/Tag/index.d.ts +3 -3
  848. package/dist/types/components/Terminal/terminal.content.d.ts +4 -4
  849. package/dist/types/components/Terminal/terminal.content.d.ts.map +1 -1
  850. package/dist/types/components/TextArea/AutocompleteTextArea.d.ts +14 -120
  851. package/dist/types/components/TextArea/AutocompleteTextArea.d.ts.map +1 -1
  852. package/dist/types/components/TextArea/ContentEditableTextArea.d.ts +65 -0
  853. package/dist/types/components/TextArea/ContentEditableTextArea.d.ts.map +1 -0
  854. package/dist/types/components/TextArea/index.d.ts +3 -2
  855. package/dist/types/components/index.d.ts +3 -2
  856. package/package.json +17 -17
@@ -0,0 +1,444 @@
1
+ 'use client';
2
+
3
+ import { cn } from "../../utils/cn.mjs";
4
+ import { inputVariants } from "../Input/Input.mjs";
5
+ import { useEffect, useImperativeHandle, useRef, useState } from "react";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+
8
+ //#region src/components/TextArea/ContentEditableTextArea.tsx
9
+ const ZERO_WIDTH_SPACE = "​";
10
+ const getTextFromContainer = (container) => {
11
+ const lineEls = container.querySelectorAll("[data-line]");
12
+ if (lineEls.length === 0) return (container.textContent ?? "").split(ZERO_WIDTH_SPACE).join("");
13
+ return Array.from(lineEls).map((el) => {
14
+ const raw = el.querySelector("[data-editable]")?.textContent ?? el.textContent ?? "";
15
+ return raw === ZERO_WIDTH_SPACE ? "" : raw.split(ZERO_WIDTH_SPACE).join("");
16
+ }).join("\n");
17
+ };
18
+ const splitLines = (text) => {
19
+ const lines = text.split("\n");
20
+ return lines.length === 0 ? [""] : lines;
21
+ };
22
+ const createGraphemeSegmenter = () => {
23
+ if (typeof Intl === "undefined" || !("Segmenter" in Intl)) return null;
24
+ const SegmenterCtor = Intl.Segmenter;
25
+ return new SegmenterCtor(void 0, { granularity: "grapheme" });
26
+ };
27
+ const graphemeSegmenter = createGraphemeSegmenter();
28
+ /**
29
+ * Find the previous grapheme cluster boundary for safe deletion.
30
+ * Falls back to code-point-aware deletion if Intl.Segmenter is unavailable.
31
+ */
32
+ const prevGraphemeBoundary = (text, offset) => {
33
+ if (offset <= 0) return 0;
34
+ if (graphemeSegmenter) {
35
+ const segments = [...graphemeSegmenter.segment(text.slice(0, offset))];
36
+ const last = segments[segments.length - 1];
37
+ return last ? offset - last.segment.length : offset - 1;
38
+ }
39
+ const code = text.charCodeAt(offset - 1);
40
+ if (code >= 56320 && code <= 57343 && offset >= 2) return offset - 2;
41
+ return offset - 1;
42
+ };
43
+ /**
44
+ * Find the next grapheme cluster boundary for safe forward deletion.
45
+ */
46
+ const nextGraphemeBoundary = (text, offset) => {
47
+ if (offset >= text.length) return text.length;
48
+ if (graphemeSegmenter) {
49
+ const first = [...graphemeSegmenter.segment(text.slice(offset))][0];
50
+ return first ? offset + first.segment.length : offset + 1;
51
+ }
52
+ const code = text.charCodeAt(offset);
53
+ if (code >= 55296 && code <= 56319 && offset + 1 < text.length) return offset + 2;
54
+ return offset + 1;
55
+ };
56
+ /**
57
+ * Find the previous word boundary for Option+Backspace.
58
+ */
59
+ const prevWordBoundary = (text, offset) => {
60
+ if (offset <= 0) return 0;
61
+ let i = offset - 1;
62
+ while (i > 0 && /\s/.test(text[i - 1])) i--;
63
+ while (i > 0 && /\S/.test(text[i - 1])) i--;
64
+ return i;
65
+ };
66
+ /**
67
+ * Find the next word boundary for Option+Delete.
68
+ */
69
+ const nextWordBoundary = (text, offset) => {
70
+ if (offset >= text.length) return text.length;
71
+ let i = offset;
72
+ while (i < text.length && /\S/.test(text[i])) i++;
73
+ while (i < text.length && /\s/.test(text[i])) i++;
74
+ return i;
75
+ };
76
+ /**
77
+ * Find the start of the current line (for Cmd+Backspace).
78
+ */
79
+ const lineStart = (text, offset) => {
80
+ return text.slice(0, offset).lastIndexOf("\n") + 1;
81
+ };
82
+ /**
83
+ * Find the end of the current line (for Cmd+Delete).
84
+ */
85
+ const lineEnd = (text, offset) => {
86
+ const nextNewline = text.indexOf("\n", offset);
87
+ return nextNewline === -1 ? text.length : nextNewline;
88
+ };
89
+ const useContentEditable = ({ value, defaultValue, onChange, disabled = false }) => {
90
+ const initialValue = value ?? defaultValue ?? "";
91
+ const [lines, setLines] = useState(() => splitLines(initialValue));
92
+ const containerRef = useRef(null);
93
+ const pendingCaretRef = useRef(null);
94
+ const isControlled = value !== void 0;
95
+ const linesRef = useRef(lines);
96
+ linesRef.current = lines;
97
+ useEffect(() => {
98
+ if (isControlled && value !== void 0) setLines(splitLines(value));
99
+ }, [value, isControlled]);
100
+ const getText = () => linesRef.current.join("\n");
101
+ const getCaretPosition = () => {
102
+ const sel = window.getSelection();
103
+ if (!sel?.rangeCount || !containerRef.current) return null;
104
+ const range = sel.getRangeAt(0);
105
+ const lineEls = containerRef.current.querySelectorAll("[data-line]");
106
+ for (let i = 0; i < lineEls.length; i++) if (lineEls[i].contains(range.startContainer)) return {
107
+ line: i,
108
+ offset: range.startOffset
109
+ };
110
+ return null;
111
+ };
112
+ const getSelectionOffsets = () => {
113
+ const sel = window.getSelection();
114
+ if (!sel?.rangeCount || !containerRef.current) return null;
115
+ const range = sel.getRangeAt(0);
116
+ const lineEls = containerRef.current.querySelectorAll("[data-line]");
117
+ const currentLines = linesRef.current;
118
+ const findOffset = (node, nodeOffset) => {
119
+ for (let i = 0; i < lineEls.length; i++) if (lineEls[i].contains(node)) {
120
+ let flat = 0;
121
+ for (let j = 0; j < i; j++) flat += currentLines[j].length + 1;
122
+ return flat + Math.min(nodeOffset, currentLines[i]?.length ?? 0);
123
+ }
124
+ if (node === containerRef.current) {
125
+ if (nodeOffset === 0) return 0;
126
+ return currentLines.join("\n").length;
127
+ }
128
+ return 0;
129
+ };
130
+ const start = findOffset(range.startContainer, range.startOffset);
131
+ const end = findOffset(range.endContainer, range.endOffset);
132
+ return {
133
+ start: Math.min(start, end),
134
+ end: Math.max(start, end),
135
+ hasSelection: !range.collapsed
136
+ };
137
+ };
138
+ const setCaretPosition = (pos) => {
139
+ if (!containerRef.current) return;
140
+ const lineEl = containerRef.current.querySelectorAll("[data-line]")[pos.line];
141
+ if (!lineEl) return;
142
+ const editable = lineEl.querySelector("[data-editable]");
143
+ const node = editable?.firstChild ?? editable ?? lineEl.firstChild ?? lineEl;
144
+ const sel = window.getSelection();
145
+ if (!sel) return;
146
+ const range = document.createRange();
147
+ const maxOff = Math.min(pos.offset, node.textContent?.length ?? 0);
148
+ try {
149
+ range.setStart(node, maxOff);
150
+ range.collapse(true);
151
+ sel.removeAllRanges();
152
+ sel.addRange(range);
153
+ } catch {
154
+ range.selectNodeContents(node);
155
+ range.collapse(false);
156
+ sel.removeAllRanges();
157
+ sel.addRange(range);
158
+ }
159
+ };
160
+ useEffect(() => {
161
+ if (pendingCaretRef.current && containerRef.current) {
162
+ setCaretPosition(pendingCaretRef.current);
163
+ pendingCaretRef.current = null;
164
+ }
165
+ });
166
+ const flatOffsetFromCaret = (pos) => {
167
+ const currentLines = linesRef.current;
168
+ let offset = 0;
169
+ for (let i = 0; i < pos.line; i++) offset += currentLines[i].length + 1;
170
+ return offset + pos.offset;
171
+ };
172
+ const caretFromFlatOffset = (flat, targetLines) => {
173
+ let rem = flat;
174
+ for (let i = 0; i < targetLines.length; i++) {
175
+ if (rem <= targetLines[i].length) return {
176
+ line: i,
177
+ offset: rem
178
+ };
179
+ rem -= targetLines[i].length + 1;
180
+ }
181
+ return {
182
+ line: targetLines.length - 1,
183
+ offset: targetLines[targetLines.length - 1]?.length ?? 0
184
+ };
185
+ };
186
+ const getCursorOffset = () => {
187
+ const pos = getCaretPosition();
188
+ if (!pos) return 0;
189
+ return flatOffsetFromCaret(pos);
190
+ };
191
+ /**
192
+ * Applies a text mutation: computes new lines, sets pending caret, updates state.
193
+ */
194
+ const applyTextChange = (newText, caretOffset) => {
195
+ const newLines = splitLines(newText);
196
+ pendingCaretRef.current = caretFromFlatOffset(caretOffset, newLines);
197
+ setLines(newLines);
198
+ onChange?.(newText);
199
+ };
200
+ const handleInput = () => {
201
+ if (pendingCaretRef.current !== null) return;
202
+ if (disabled || !containerRef.current) return;
203
+ const caretPos = getCaretPosition();
204
+ const newText = getTextFromContainer(containerRef.current);
205
+ const newLines = splitLines(newText);
206
+ pendingCaretRef.current = caretPos;
207
+ setLines(newLines);
208
+ onChange?.(newText);
209
+ };
210
+ const handleKeyDown = (e) => {
211
+ if (disabled) {
212
+ e.preventDefault();
213
+ return;
214
+ }
215
+ if (e.nativeEvent.isComposing) return;
216
+ if ((e.metaKey || e.ctrlKey) && e.key === "z") {
217
+ e.preventDefault();
218
+ return;
219
+ }
220
+ const selInfo = getSelectionOffsets();
221
+ if (!selInfo) return;
222
+ const currentText = linesRef.current.join("\n");
223
+ if (e.key === "Enter") {
224
+ e.preventDefault();
225
+ applyTextChange(currentText.slice(0, selInfo.start) + "\n" + currentText.slice(selInfo.end), selInfo.start + 1);
226
+ return;
227
+ }
228
+ if (e.key === "Backspace") {
229
+ e.preventDefault();
230
+ if (selInfo.hasSelection) applyTextChange(currentText.slice(0, selInfo.start) + currentText.slice(selInfo.end), selInfo.start);
231
+ else {
232
+ if (selInfo.start === 0) return;
233
+ let deleteFrom;
234
+ if (e.metaKey) deleteFrom = lineStart(currentText, selInfo.start);
235
+ else if (e.altKey) deleteFrom = prevWordBoundary(currentText, selInfo.start);
236
+ else deleteFrom = prevGraphemeBoundary(currentText, selInfo.start);
237
+ applyTextChange(currentText.slice(0, deleteFrom) + currentText.slice(selInfo.start), deleteFrom);
238
+ }
239
+ return;
240
+ }
241
+ if (e.key === "Delete") {
242
+ e.preventDefault();
243
+ if (selInfo.hasSelection) applyTextChange(currentText.slice(0, selInfo.start) + currentText.slice(selInfo.end), selInfo.start);
244
+ else {
245
+ if (selInfo.start >= currentText.length) return;
246
+ let deleteTo;
247
+ if (e.metaKey) deleteTo = lineEnd(currentText, selInfo.start);
248
+ else if (e.altKey) deleteTo = nextWordBoundary(currentText, selInfo.start);
249
+ else deleteTo = nextGraphemeBoundary(currentText, selInfo.start);
250
+ applyTextChange(currentText.slice(0, selInfo.start) + currentText.slice(deleteTo), selInfo.start);
251
+ }
252
+ return;
253
+ }
254
+ };
255
+ const handleCut = (e) => {
256
+ if (disabled) {
257
+ e.preventDefault();
258
+ return;
259
+ }
260
+ e.preventDefault();
261
+ const selInfo = getSelectionOffsets();
262
+ if (!selInfo || !selInfo.hasSelection) return;
263
+ const currentText = linesRef.current.join("\n");
264
+ const selectedText = currentText.slice(selInfo.start, selInfo.end);
265
+ e.clipboardData.setData("text/plain", selectedText);
266
+ applyTextChange(currentText.slice(0, selInfo.start) + currentText.slice(selInfo.end), selInfo.start);
267
+ };
268
+ const handlePaste = (e) => {
269
+ if (disabled) {
270
+ e.preventDefault();
271
+ return;
272
+ }
273
+ e.preventDefault();
274
+ const pastedText = e.clipboardData.getData("text/plain");
275
+ if (!pastedText) return;
276
+ const selInfo = getSelectionOffsets();
277
+ if (!selInfo) return;
278
+ const currentText = linesRef.current.join("\n");
279
+ applyTextChange(currentText.slice(0, selInfo.start) + pastedText + currentText.slice(selInfo.end), selInfo.start + pastedText.length);
280
+ };
281
+ const handleBeforeInput = (e) => {
282
+ if (disabled) return;
283
+ const inputEvent = e.nativeEvent;
284
+ if (inputEvent.isComposing) return;
285
+ const inputType = inputEvent.inputType;
286
+ if (inputType === "insertParagraph" || inputType === "insertLineBreak") return;
287
+ if (inputType === "deleteContentBackward" || inputType === "deleteContentForward") {
288
+ e.preventDefault();
289
+ const selInfo = getSelectionOffsets();
290
+ if (!selInfo) return;
291
+ const currentText = linesRef.current.join("\n");
292
+ if (selInfo.hasSelection) applyTextChange(currentText.slice(0, selInfo.start) + currentText.slice(selInfo.end), selInfo.start);
293
+ else if (inputType === "deleteContentBackward") {
294
+ if (selInfo.start === 0) return;
295
+ const deleteFrom = prevGraphemeBoundary(currentText, selInfo.start);
296
+ applyTextChange(currentText.slice(0, deleteFrom) + currentText.slice(selInfo.start), deleteFrom);
297
+ } else {
298
+ if (selInfo.start >= currentText.length) return;
299
+ const deleteTo = nextGraphemeBoundary(currentText, selInfo.start);
300
+ applyTextChange(currentText.slice(0, selInfo.start) + currentText.slice(deleteTo), selInfo.start);
301
+ }
302
+ return;
303
+ }
304
+ if (inputType === "insertReplacementText") {
305
+ e.preventDefault();
306
+ const selInfo = getSelectionOffsets();
307
+ if (!selInfo) return;
308
+ const currentText = linesRef.current.join("\n");
309
+ const replacement = inputEvent.data ?? inputEvent.dataTransfer?.getData("text/plain") ?? "";
310
+ applyTextChange(currentText.slice(0, selInfo.start) + replacement + currentText.slice(selInfo.end), selInfo.start + replacement.length);
311
+ return;
312
+ }
313
+ if (inputType === "insertText" && inputEvent.data) {
314
+ e.preventDefault();
315
+ const selInfo = getSelectionOffsets();
316
+ if (!selInfo) return;
317
+ const currentText = linesRef.current.join("\n");
318
+ const inserted = inputEvent.data;
319
+ applyTextChange(currentText.slice(0, selInfo.start) + inserted + currentText.slice(selInfo.end), selInfo.start + inserted.length);
320
+ }
321
+ };
322
+ const handleDrop = (e) => {
323
+ e.preventDefault();
324
+ };
325
+ const handleDragOver = (e) => {
326
+ e.preventDefault();
327
+ };
328
+ return {
329
+ lines,
330
+ containerRef,
331
+ getText,
332
+ handleInput,
333
+ handleBeforeInput,
334
+ handleKeyDown,
335
+ handleCut,
336
+ handlePaste,
337
+ handleDrop,
338
+ handleDragOver,
339
+ getCaretPosition,
340
+ setCaretPosition,
341
+ getCursorOffset,
342
+ caretFromFlatOffset
343
+ };
344
+ };
345
+ const Line = ({ index, text, isLast, ghostText }) => /* @__PURE__ */ jsxs("span", {
346
+ "data-line": index,
347
+ className: "block min-h-[1.5rem]",
348
+ children: [
349
+ /* @__PURE__ */ jsx("span", {
350
+ "data-editable": true,
351
+ children: text || "​"
352
+ }),
353
+ ghostText && /* @__PURE__ */ jsx("span", {
354
+ "data-ghost": true,
355
+ className: "pointer-events-none select-none text-neutral",
356
+ "aria-hidden": "true",
357
+ children: ghostText
358
+ }),
359
+ !isLast && /* @__PURE__ */ jsx("br", {})
360
+ ]
361
+ });
362
+ const LINE_HEIGHT = 24;
363
+ const LINE_PADDING = 12;
364
+ const ContentEditableTextArea = ({ value, defaultValue, onChange, placeholder, disabled = false, minRows = 1, maxRows = 999, autoSize = true, validationStyleEnabled = false, variant, ghostText, ghostLine, ghostOffset, onClick, className, dir = "auto", ref, ...rest }) => {
365
+ const { lines, containerRef, getText, handleInput, handleBeforeInput, handleKeyDown, handleCut, handlePaste, handleDrop, handleDragOver, getCursorOffset, setCaretPosition, caretFromFlatOffset } = useContentEditable({
366
+ value,
367
+ defaultValue,
368
+ onChange,
369
+ disabled
370
+ });
371
+ const elRef = useRef(null);
372
+ const setRef = (el) => {
373
+ elRef.current = el;
374
+ containerRef.current = el;
375
+ };
376
+ useImperativeHandle(ref, () => ({
377
+ getContainer: () => elRef.current,
378
+ getText,
379
+ focus: () => elRef.current?.focus(),
380
+ getCursorOffset,
381
+ setCursorAtOffset: (offset) => {
382
+ setCaretPosition(caretFromFlatOffset(offset, lines));
383
+ }
384
+ }));
385
+ useEffect(() => {
386
+ if (!autoSize || !elRef.current) return;
387
+ const el = elRef.current;
388
+ const max = LINE_HEIGHT * maxRows + LINE_PADDING;
389
+ const min = LINE_HEIGHT * minRows + LINE_PADDING;
390
+ el.style.height = "auto";
391
+ const sh = el.scrollHeight;
392
+ el.style.height = `${Math.max(Math.min(sh, max), min)}px`;
393
+ el.style.overflowY = sh > max ? "auto" : "hidden";
394
+ }, [
395
+ lines,
396
+ autoSize,
397
+ maxRows,
398
+ minRows
399
+ ]);
400
+ const isEmpty = lines.length === 1 && lines[0] === "";
401
+ const hasGhost = ghostText && ghostLine !== void 0 && ghostOffset !== void 0;
402
+ return /* @__PURE__ */ jsxs("div", {
403
+ className: "relative w-full",
404
+ children: [isEmpty && placeholder && /* @__PURE__ */ jsx("div", {
405
+ className: "pointer-events-none absolute inset-0 select-none px-2 py-3 text-base text-neutral-400 leading-[1.5rem] md:py-2 md:text-sm",
406
+ "aria-hidden": "true",
407
+ children: placeholder
408
+ }), /* @__PURE__ */ jsx("div", {
409
+ ...rest,
410
+ ref: setRef,
411
+ role: "textbox",
412
+ "aria-multiline": "true",
413
+ "aria-placeholder": placeholder,
414
+ "aria-disabled": disabled,
415
+ "aria-autocomplete": hasGhost ? "inline" : void 0,
416
+ tabIndex: disabled ? -1 : 0,
417
+ contentEditable: !disabled,
418
+ suppressContentEditableWarning: true,
419
+ dir,
420
+ onInput: handleInput,
421
+ onBeforeInput: handleBeforeInput,
422
+ onKeyDown: handleKeyDown,
423
+ onCut: handleCut,
424
+ onPaste: handlePaste,
425
+ onDrop: handleDrop,
426
+ onDragOver: handleDragOver,
427
+ onClick,
428
+ className: cn("resize-none whitespace-pre-wrap break-words outline-none", inputVariants({
429
+ variant,
430
+ validationStyleEnabled: validationStyleEnabled ? "enabled" : "disabled"
431
+ }), autoSize && "overflow-y-auto", className),
432
+ children: lines.map((text, i) => /* @__PURE__ */ jsx(Line, {
433
+ index: i,
434
+ text,
435
+ isLast: i === lines.length - 1,
436
+ ghostText: hasGhost && ghostLine === i ? ghostText : void 0
437
+ }, i))
438
+ })]
439
+ });
440
+ };
441
+
442
+ //#endregion
443
+ export { ContentEditableTextArea, useContentEditable };
444
+ //# sourceMappingURL=ContentEditableTextArea.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentEditableTextArea.mjs","names":[],"sources":["../../../../src/components/TextArea/ContentEditableTextArea.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@utils/cn';\nimport type { VariantProps } from 'class-variance-authority';\nimport {\n type ClipboardEvent,\n type DragEvent,\n type FC,\n type FormEvent,\n type HTMLAttributes,\n type KeyboardEvent,\n type MutableRefObject,\n type Ref,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { type InputVariant, inputVariants } from '../Input';\n\ntype CaretPosition = {\n line: number;\n offset: number;\n};\n\ntype UseContentEditableOptions = {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n};\n\nconst ZERO_WIDTH_SPACE = '\\u200B';\n\nconst getTextFromContainer = (container: HTMLDivElement): string => {\n const lineEls = container.querySelectorAll('[data-line]');\n if (lineEls.length === 0) {\n return (container.textContent ?? '').split(ZERO_WIDTH_SPACE).join('');\n }\n\n return Array.from(lineEls)\n .map((el) => {\n const editable = el.querySelector('[data-editable]');\n const raw = editable?.textContent ?? el.textContent ?? '';\n return raw === ZERO_WIDTH_SPACE\n ? ''\n : raw.split(ZERO_WIDTH_SPACE).join('');\n })\n .join('\\n');\n};\n\nconst splitLines = (text: string): string[] => {\n const lines = text.split('\\n');\n return lines.length === 0 ? [''] : lines;\n};\n\n// Cached Intl.Segmenter for grapheme-aware deletion (emoji, CJK, etc.)\n// Intl.Segmenter is ES2022+ but we feature-detect at runtime.\ntype GraphemeSegmenter = {\n segment: (input: string) => Iterable<{ segment: string }>;\n};\n\nconst createGraphemeSegmenter = (): GraphemeSegmenter | null => {\n if (typeof Intl === 'undefined' || !('Segmenter' in Intl)) return null;\n const SegmenterCtor = (\n Intl as unknown as Record<\n string,\n new (\n ...args: unknown[]\n ) => GraphemeSegmenter\n >\n ).Segmenter;\n return new SegmenterCtor(undefined, { granularity: 'grapheme' });\n};\n\nconst graphemeSegmenter = createGraphemeSegmenter();\n\n/**\n * Find the previous grapheme cluster boundary for safe deletion.\n * Falls back to code-point-aware deletion if Intl.Segmenter is unavailable.\n */\nconst prevGraphemeBoundary = (text: string, offset: number): number => {\n if (offset <= 0) return 0;\n\n if (graphemeSegmenter) {\n const segments = [...graphemeSegmenter.segment(text.slice(0, offset))];\n const last = segments[segments.length - 1];\n return last ? offset - last.segment.length : offset - 1;\n }\n\n // Fallback: handle surrogate pairs\n const code = text.charCodeAt(offset - 1);\n if (code >= 0xdc00 && code <= 0xdfff && offset >= 2) {\n return offset - 2;\n }\n return offset - 1;\n};\n\n/**\n * Find the next grapheme cluster boundary for safe forward deletion.\n */\nconst nextGraphemeBoundary = (text: string, offset: number): number => {\n if (offset >= text.length) return text.length;\n\n if (graphemeSegmenter) {\n const segments = [...graphemeSegmenter.segment(text.slice(offset))];\n const first = segments[0];\n return first ? offset + first.segment.length : offset + 1;\n }\n\n // Fallback: handle surrogate pairs\n const code = text.charCodeAt(offset);\n if (code >= 0xd800 && code <= 0xdbff && offset + 1 < text.length) {\n return offset + 2;\n }\n return offset + 1;\n};\n\n/**\n * Find the previous word boundary for Option+Backspace.\n */\nconst prevWordBoundary = (text: string, offset: number): number => {\n if (offset <= 0) return 0;\n let i = offset - 1;\n // Skip whitespace\n while (i > 0 && /\\s/.test(text[i - 1])) i--;\n // Skip word characters\n while (i > 0 && /\\S/.test(text[i - 1])) i--;\n return i;\n};\n\n/**\n * Find the next word boundary for Option+Delete.\n */\nconst nextWordBoundary = (text: string, offset: number): number => {\n if (offset >= text.length) return text.length;\n let i = offset;\n // Skip word characters\n while (i < text.length && /\\S/.test(text[i])) i++;\n // Skip whitespace\n while (i < text.length && /\\s/.test(text[i])) i++;\n return i;\n};\n\n/**\n * Find the start of the current line (for Cmd+Backspace).\n */\nconst lineStart = (text: string, offset: number): number => {\n const before = text.slice(0, offset);\n const lastNewline = before.lastIndexOf('\\n');\n return lastNewline + 1;\n};\n\n/**\n * Find the end of the current line (for Cmd+Delete).\n */\nconst lineEnd = (text: string, offset: number): number => {\n const nextNewline = text.indexOf('\\n', offset);\n return nextNewline === -1 ? text.length : nextNewline;\n};\n\nexport const useContentEditable = ({\n value,\n defaultValue,\n onChange,\n disabled = false,\n}: UseContentEditableOptions) => {\n const initialValue = value ?? defaultValue ?? '';\n const [lines, setLines] = useState<string[]>(() => splitLines(initialValue));\n const containerRef = useRef<HTMLDivElement | null>(null);\n const pendingCaretRef = useRef<CaretPosition | null>(null);\n const isControlled = value !== undefined;\n\n // Keep a ref to the latest lines to avoid stale closures in rapid typing\n const linesRef = useRef(lines);\n linesRef.current = lines;\n\n useEffect(() => {\n if (isControlled && value !== undefined) {\n setLines(splitLines(value));\n }\n }, [value, isControlled]);\n\n const getText = () => linesRef.current.join('\\n');\n\n const getCaretPosition = (): CaretPosition | null => {\n const sel = window.getSelection();\n if (!sel?.rangeCount || !containerRef.current) return null;\n\n const range = sel.getRangeAt(0);\n const lineEls = containerRef.current.querySelectorAll('[data-line]');\n\n for (let i = 0; i < lineEls.length; i++) {\n if (lineEls[i].contains(range.startContainer)) {\n return { line: i, offset: range.startOffset };\n }\n }\n return null;\n };\n\n const getSelectionOffsets = (): {\n start: number;\n end: number;\n hasSelection: boolean;\n } | null => {\n const sel = window.getSelection();\n if (!sel?.rangeCount || !containerRef.current) return null;\n\n const range = sel.getRangeAt(0);\n const lineEls = containerRef.current.querySelectorAll('[data-line]');\n const currentLines = linesRef.current;\n\n const findOffset = (node: Node, nodeOffset: number): number => {\n for (let i = 0; i < lineEls.length; i++) {\n if (lineEls[i].contains(node)) {\n let flat = 0;\n for (let j = 0; j < i; j++) {\n flat += currentLines[j].length + 1;\n }\n return flat + Math.min(nodeOffset, currentLines[i]?.length ?? 0);\n }\n }\n // Selection is on the root container (e.g. select-all)\n if (node === containerRef.current) {\n if (nodeOffset === 0) return 0;\n return currentLines.join('\\n').length;\n }\n return 0;\n };\n\n const start = findOffset(range.startContainer, range.startOffset);\n const end = findOffset(range.endContainer, range.endOffset);\n\n return {\n start: Math.min(start, end),\n end: Math.max(start, end),\n hasSelection: !range.collapsed,\n };\n };\n\n const setCaretPosition = (pos: CaretPosition) => {\n if (!containerRef.current) return;\n\n const lineEls = containerRef.current.querySelectorAll('[data-line]');\n const lineEl = lineEls[pos.line];\n if (!lineEl) return;\n\n const editable = lineEl.querySelector('[data-editable]');\n const node =\n editable?.firstChild ?? editable ?? lineEl.firstChild ?? lineEl;\n\n const sel = window.getSelection();\n if (!sel) return;\n\n const range = document.createRange();\n const maxOff = Math.min(pos.offset, node.textContent?.length ?? 0);\n\n try {\n range.setStart(node, maxOff);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n } catch {\n range.selectNodeContents(node);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n };\n\n useEffect(() => {\n if (pendingCaretRef.current && containerRef.current) {\n setCaretPosition(pendingCaretRef.current);\n pendingCaretRef.current = null;\n }\n });\n\n const flatOffsetFromCaret = (pos: CaretPosition): number => {\n const currentLines = linesRef.current;\n let offset = 0;\n for (let i = 0; i < pos.line; i++) {\n offset += currentLines[i].length + 1;\n }\n return offset + pos.offset;\n };\n\n const caretFromFlatOffset = (\n flat: number,\n targetLines: string[]\n ): CaretPosition => {\n let rem = flat;\n for (let i = 0; i < targetLines.length; i++) {\n if (rem <= targetLines[i].length) {\n return { line: i, offset: rem };\n }\n rem -= targetLines[i].length + 1;\n }\n return {\n line: targetLines.length - 1,\n offset: targetLines[targetLines.length - 1]?.length ?? 0,\n };\n };\n\n const getCursorOffset = (): number => {\n const pos = getCaretPosition();\n if (!pos) return 0;\n return flatOffsetFromCaret(pos);\n };\n\n /**\n * Applies a text mutation: computes new lines, sets pending caret, updates state.\n */\n const applyTextChange = (newText: string, caretOffset: number) => {\n const newLines = splitLines(newText);\n pendingCaretRef.current = caretFromFlatOffset(caretOffset, newLines);\n setLines(newLines);\n onChange?.(newText);\n };\n\n const handleInput = () => {\n if (pendingCaretRef.current !== null) return;\n if (disabled || !containerRef.current) return;\n\n const caretPos = getCaretPosition();\n const newText = getTextFromContainer(containerRef.current);\n const newLines = splitLines(newText);\n\n pendingCaretRef.current = caretPos;\n setLines(newLines);\n onChange?.(newText);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n // Don't intercept during IME composition (CJK input)\n if (e.nativeEvent.isComposing) return;\n\n // Block undo/redo - browser would mutate DOM out of sync with React\n if ((e.metaKey || e.ctrlKey) && e.key === 'z') {\n e.preventDefault();\n return;\n }\n\n const selInfo = getSelectionOffsets();\n if (!selInfo) return;\n\n const currentText = linesRef.current.join('\\n');\n\n if (e.key === 'Enter') {\n e.preventDefault();\n const newText =\n currentText.slice(0, selInfo.start) +\n '\\n' +\n currentText.slice(selInfo.end);\n applyTextChange(newText, selInfo.start + 1);\n return;\n }\n\n if (e.key === 'Backspace') {\n e.preventDefault();\n\n if (selInfo.hasSelection) {\n const newText =\n currentText.slice(0, selInfo.start) + currentText.slice(selInfo.end);\n applyTextChange(newText, selInfo.start);\n } else {\n if (selInfo.start === 0) return;\n\n let deleteFrom: number;\n if (e.metaKey) {\n // Cmd+Backspace: delete to start of line\n deleteFrom = lineStart(currentText, selInfo.start);\n } else if (e.altKey) {\n // Option+Backspace: delete previous word\n deleteFrom = prevWordBoundary(currentText, selInfo.start);\n } else {\n // Regular backspace: delete one grapheme\n deleteFrom = prevGraphemeBoundary(currentText, selInfo.start);\n }\n\n const newText =\n currentText.slice(0, deleteFrom) + currentText.slice(selInfo.start);\n applyTextChange(newText, deleteFrom);\n }\n return;\n }\n\n if (e.key === 'Delete') {\n e.preventDefault();\n\n if (selInfo.hasSelection) {\n const newText =\n currentText.slice(0, selInfo.start) + currentText.slice(selInfo.end);\n applyTextChange(newText, selInfo.start);\n } else {\n if (selInfo.start >= currentText.length) return;\n\n let deleteTo: number;\n if (e.metaKey) {\n // Cmd+Delete: delete to end of line\n deleteTo = lineEnd(currentText, selInfo.start);\n } else if (e.altKey) {\n // Option+Delete: delete next word\n deleteTo = nextWordBoundary(currentText, selInfo.start);\n } else {\n // Regular delete: delete one grapheme\n deleteTo = nextGraphemeBoundary(currentText, selInfo.start);\n }\n\n const newText =\n currentText.slice(0, selInfo.start) + currentText.slice(deleteTo);\n applyTextChange(newText, selInfo.start);\n }\n return;\n }\n };\n\n const handleCut = (e: ClipboardEvent<HTMLDivElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n e.preventDefault();\n const selInfo = getSelectionOffsets();\n if (!selInfo || !selInfo.hasSelection) return;\n\n const currentText = linesRef.current.join('\\n');\n const selectedText = currentText.slice(selInfo.start, selInfo.end);\n\n // Write selected text to clipboard\n e.clipboardData.setData('text/plain', selectedText);\n\n // Delete the selected text\n const newText =\n currentText.slice(0, selInfo.start) + currentText.slice(selInfo.end);\n applyTextChange(newText, selInfo.start);\n };\n\n const handlePaste = (e: ClipboardEvent<HTMLDivElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n e.preventDefault();\n const pastedText = e.clipboardData.getData('text/plain');\n if (!pastedText) return;\n\n const selInfo = getSelectionOffsets();\n if (!selInfo) return;\n\n const currentText = linesRef.current.join('\\n');\n const newText =\n currentText.slice(0, selInfo.start) +\n pastedText +\n currentText.slice(selInfo.end);\n applyTextChange(newText, selInfo.start + pastedText.length);\n };\n\n const handleBeforeInput = (e: FormEvent<HTMLDivElement>) => {\n if (disabled) return;\n\n const inputEvent = e.nativeEvent as InputEvent;\n\n // Don't intercept during IME composition (CJK input)\n if (inputEvent.isComposing) return;\n\n const inputType = inputEvent.inputType;\n\n // Skip types handled by handleKeyDown (when keydown fires)\n if (inputType === 'insertParagraph' || inputType === 'insertLineBreak') {\n return;\n }\n\n // Handle deletions as fallback for mobile keyboards that don't fire keydown\n if (\n inputType === 'deleteContentBackward' ||\n inputType === 'deleteContentForward'\n ) {\n e.preventDefault();\n const selInfo = getSelectionOffsets();\n if (!selInfo) return;\n\n const currentText = linesRef.current.join('\\n');\n\n if (selInfo.hasSelection) {\n const newText =\n currentText.slice(0, selInfo.start) + currentText.slice(selInfo.end);\n applyTextChange(newText, selInfo.start);\n } else if (inputType === 'deleteContentBackward') {\n if (selInfo.start === 0) return;\n const deleteFrom = prevGraphemeBoundary(currentText, selInfo.start);\n const newText =\n currentText.slice(0, deleteFrom) + currentText.slice(selInfo.start);\n applyTextChange(newText, deleteFrom);\n } else {\n if (selInfo.start >= currentText.length) return;\n const deleteTo = nextGraphemeBoundary(currentText, selInfo.start);\n const newText =\n currentText.slice(0, selInfo.start) + currentText.slice(deleteTo);\n applyTextChange(newText, selInfo.start);\n }\n return;\n }\n\n // Handle spell-check replacements\n if (inputType === 'insertReplacementText') {\n e.preventDefault();\n const selInfo = getSelectionOffsets();\n if (!selInfo) return;\n\n const currentText = linesRef.current.join('\\n');\n const replacement =\n inputEvent.data ?? inputEvent.dataTransfer?.getData('text/plain') ?? '';\n const newText =\n currentText.slice(0, selInfo.start) +\n replacement +\n currentText.slice(selInfo.end);\n applyTextChange(newText, selInfo.start + replacement.length);\n return;\n }\n\n if (inputType === 'insertText' && inputEvent.data) {\n e.preventDefault();\n\n const selInfo = getSelectionOffsets();\n if (!selInfo) return;\n\n const currentText = linesRef.current.join('\\n');\n const inserted = inputEvent.data;\n const newText =\n currentText.slice(0, selInfo.start) +\n inserted +\n currentText.slice(selInfo.end);\n applyTextChange(newText, selInfo.start + inserted.length);\n }\n };\n\n const handleDrop = (e: DragEvent<HTMLDivElement>) => {\n // Block drag-and-drop to prevent uncontrolled DOM mutations\n e.preventDefault();\n };\n\n const handleDragOver = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n };\n\n return {\n lines,\n containerRef,\n getText,\n handleInput,\n handleBeforeInput,\n handleKeyDown,\n handleCut,\n handlePaste,\n handleDrop,\n handleDragOver,\n getCaretPosition,\n setCaretPosition,\n getCursorOffset,\n caretFromFlatOffset,\n };\n};\n\ntype LineProps = {\n index: number;\n text: string;\n isLast: boolean;\n ghostText?: string;\n};\n\nconst Line: FC<LineProps> = ({ index, text, isLast, ghostText }) => (\n <span data-line={index} className=\"block min-h-[1.5rem]\">\n <span data-editable>{text || '\\u200B'}</span>\n {ghostText && (\n <span\n data-ghost\n className=\"pointer-events-none select-none text-neutral\"\n aria-hidden=\"true\"\n >\n {ghostText}\n </span>\n )}\n {!isLast && <br />}\n </span>\n);\n\nexport type ContentEditableTextAreaHandle = {\n getContainer: () => HTMLDivElement | null;\n getText: () => string;\n focus: () => void;\n getCursorOffset: () => number;\n setCursorAtOffset: (offset: number) => void;\n};\n\nexport type ContentEditableTextAreaProps = Omit<\n HTMLAttributes<HTMLDivElement>,\n 'onChange' | 'defaultValue'\n> & {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n disabled?: boolean;\n minRows?: number;\n maxRows?: number;\n autoSize?: boolean;\n validationStyleEnabled?: boolean;\n variant?: InputVariant | `${InputVariant}`;\n ghostText?: string;\n ghostLine?: number;\n ghostOffset?: number;\n ref?: Ref<ContentEditableTextAreaHandle>;\n dir?: 'ltr' | 'rtl' | 'auto';\n} & Omit<\n VariantProps<typeof inputVariants>,\n 'validationStyleEnabled' | 'variant'\n >;\n\nconst LINE_HEIGHT = 24;\nconst LINE_PADDING = 12;\n\nexport const ContentEditableTextArea: FC<ContentEditableTextAreaProps> = ({\n value,\n defaultValue,\n onChange,\n placeholder,\n disabled = false,\n minRows = 1,\n maxRows = 999,\n autoSize = true,\n validationStyleEnabled = false,\n variant,\n ghostText,\n ghostLine,\n ghostOffset,\n onClick,\n className,\n dir = 'auto',\n ref,\n ...rest\n}) => {\n const {\n lines,\n containerRef,\n getText,\n handleInput,\n handleBeforeInput,\n handleKeyDown,\n handleCut,\n handlePaste,\n handleDrop,\n handleDragOver,\n getCursorOffset,\n setCaretPosition,\n caretFromFlatOffset,\n } = useContentEditable({ value, defaultValue, onChange, disabled });\n\n const elRef = useRef<HTMLDivElement | null>(null);\n\n const setRef = (el: HTMLDivElement | null) => {\n elRef.current = el;\n (containerRef as MutableRefObject<HTMLDivElement | null>).current = el;\n };\n\n useImperativeHandle(ref, () => ({\n getContainer: () => elRef.current,\n getText,\n focus: () => elRef.current?.focus(),\n getCursorOffset,\n setCursorAtOffset: (offset: number) => {\n setCaretPosition(caretFromFlatOffset(offset, lines));\n },\n }));\n\n useEffect(() => {\n if (!autoSize || !elRef.current) return;\n\n const el = elRef.current;\n const max = LINE_HEIGHT * maxRows + LINE_PADDING;\n const min = LINE_HEIGHT * minRows + LINE_PADDING;\n\n el.style.height = 'auto';\n const sh = el.scrollHeight;\n el.style.height = `${Math.max(Math.min(sh, max), min)}px`;\n el.style.overflowY = sh > max ? 'auto' : 'hidden';\n }, [lines, autoSize, maxRows, minRows]);\n\n const isEmpty = lines.length === 1 && lines[0] === '';\n const hasGhost =\n ghostText && ghostLine !== undefined && ghostOffset !== undefined;\n\n return (\n <div className=\"relative w-full\">\n {isEmpty && placeholder && (\n <div\n className=\"pointer-events-none absolute inset-0 select-none px-2 py-3 text-base text-neutral-400 leading-[1.5rem] md:py-2 md:text-sm\"\n aria-hidden=\"true\"\n >\n {placeholder}\n </div>\n )}\n\n <div\n {...rest}\n ref={setRef}\n role=\"textbox\"\n aria-multiline=\"true\"\n aria-placeholder={placeholder}\n aria-disabled={disabled}\n aria-autocomplete={hasGhost ? 'inline' : undefined}\n tabIndex={disabled ? -1 : 0}\n contentEditable={!disabled}\n suppressContentEditableWarning\n dir={dir}\n onInput={handleInput}\n onBeforeInput={handleBeforeInput}\n onKeyDown={handleKeyDown}\n onCut={handleCut}\n onPaste={handlePaste}\n onDrop={handleDrop}\n onDragOver={handleDragOver}\n onClick={onClick}\n className={cn(\n 'resize-none whitespace-pre-wrap break-words outline-none',\n inputVariants({\n variant,\n validationStyleEnabled: validationStyleEnabled\n ? 'enabled'\n : 'disabled',\n }),\n autoSize && 'overflow-y-auto',\n className\n )}\n >\n {lines.map((text, i) => (\n <Line\n key={i}\n index={i}\n text={text}\n isLast={i === lines.length - 1}\n ghostText={hasGhost && ghostLine === i ? ghostText : undefined}\n />\n ))}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1,2 +1,59 @@
1
- import{cn as e}from"../../utils/cn.mjs";import{inputVariants as t}from"../Input/Input.mjs";import{jsx as n}from"react/jsx-runtime";const r=({className:r,variant:i,validationStyleEnabled:a=!1,...o})=>n(`textarea`,{className:e(`resize-none`,t({variant:i,validationStyleEnabled:a?`enabled`:`disabled`,className:r})),...o});export{r as TextArea};
1
+ import { cn } from "../../utils/cn.mjs";
2
+ import { inputVariants } from "../Input/Input.mjs";
3
+ import { jsx } from "react/jsx-runtime";
4
+
5
+ //#region src/components/TextArea/TextArea.tsx
6
+ /**
7
+ * TextArea Component
8
+ *
9
+ * A flexible textarea component that extends the standard HTML textarea with
10
+ * design system styling variants, validation states, and consistent visual appearance.
11
+ *
12
+ * ## Features
13
+ * - **Variant Support**: Multiple visual states (default, error, success, warning)
14
+ * - **Validation Styling**: Optional validation feedback styling
15
+ * - **Resize Control**: Disabled by default for consistent layout
16
+ * - **Design System Integration**: Uses shared input variants for consistency
17
+ * - **Accessibility**: Maintains all standard textarea accessibility features
18
+ *
19
+ * ## Use Cases
20
+ * - Multi-line text input forms
21
+ * - Comment and message composition
22
+ * - Description and content fields
23
+ * - Feedback and review forms
24
+ * - Code snippet input (when combined with monospace styling)
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * // Basic textarea
29
+ * <TextArea
30
+ * placeholder="Enter your thoughts..."
31
+ * rows={4}
32
+ * />
33
+ *
34
+ * // Controlled with validation
35
+ * const [content, setContent] = useState('');
36
+ * const hasError = content.length < 10;
37
+ *
38
+ * <TextArea
39
+ * value={content}
40
+ * onChange={(e) => setContent(e.target.value)}
41
+ * variant={hasError ? InputVariant.ERROR : InputVariant.SUCCESS}
42
+ * validationStyleEnabled={true}
43
+ * placeholder="Minimum 10 characters required"
44
+ * className="min-h-[100px]"
45
+ * />
46
+ * ```
47
+ */
48
+ const TextArea = ({ className, variant, validationStyleEnabled = false, ...props }) => /* @__PURE__ */ jsx("textarea", {
49
+ className: cn("resize-none", inputVariants({
50
+ variant,
51
+ validationStyleEnabled: validationStyleEnabled ? "enabled" : "disabled",
52
+ className
53
+ })),
54
+ ...props
55
+ });
56
+
57
+ //#endregion
58
+ export { TextArea };
2
59
  //# sourceMappingURL=TextArea.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea.mjs","names":[],"sources":["../../../../src/components/TextArea/TextArea.tsx"],"sourcesContent":["import { cn } from '@utils/cn';\nimport type { VariantProps } from 'class-variance-authority';\nimport type { DetailedHTMLProps, FC, TextareaHTMLAttributes } from 'react';\nimport { type InputVariant, inputVariants } from '../Input';\n\n/**\n * Props for the TextArea component.\n *\n * Extends standard HTML textarea attributes with additional design system variants\n * and validation styling options.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <TextArea placeholder=\"Enter your message...\" />\n *\n * // With error validation styling\n * <TextArea\n * value={message}\n * onChange={handleChange}\n * variant={InputVariant.ERROR}\n * validationStyleEnabled={true}\n * placeholder=\"Message is required\"\n * />\n *\n * // Large multiline input\n * <TextArea\n * rows={6}\n * cols={50}\n * variant={InputVariant.DEFAULT}\n * className=\"min-h-[120px]\"\n * placeholder=\"Write a detailed description...\"\n * />\n * ```\n */\nexport type TextAreaProps = DetailedHTMLProps<\n DetailedHTMLProps<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n HTMLTextAreaElement\n >,\n HTMLTextAreaElement\n> & {\n /** Enable validation styling based on the variant prop */\n validationStyleEnabled?: boolean;\n} & Omit<\n VariantProps<typeof inputVariants>,\n 'validationStyleEnabled' | 'variant'\n > & {\n /** Visual variant of the textarea (default, success, error, warning, etc.) */\n variant?: InputVariant | `${InputVariant}`;\n };\n\n/**\n * TextArea Component\n *\n * A flexible textarea component that extends the standard HTML textarea with\n * design system styling variants, validation states, and consistent visual appearance.\n *\n * ## Features\n * - **Variant Support**: Multiple visual states (default, error, success, warning)\n * - **Validation Styling**: Optional validation feedback styling\n * - **Resize Control**: Disabled by default for consistent layout\n * - **Design System Integration**: Uses shared input variants for consistency\n * - **Accessibility**: Maintains all standard textarea accessibility features\n *\n * ## Use Cases\n * - Multi-line text input forms\n * - Comment and message composition\n * - Description and content fields\n * - Feedback and review forms\n * - Code snippet input (when combined with monospace styling)\n *\n * @example\n * ```tsx\n * // Basic textarea\n * <TextArea\n * placeholder=\"Enter your thoughts...\"\n * rows={4}\n * />\n *\n * // Controlled with validation\n * const [content, setContent] = useState('');\n * const hasError = content.length < 10;\n *\n * <TextArea\n * value={content}\n * onChange={(e) => setContent(e.target.value)}\n * variant={hasError ? InputVariant.ERROR : InputVariant.SUCCESS}\n * validationStyleEnabled={true}\n * placeholder=\"Minimum 10 characters required\"\n * className=\"min-h-[100px]\"\n * />\n * ```\n */\nexport const TextArea: FC<TextAreaProps> = ({\n className,\n variant,\n validationStyleEnabled = false,\n ...props\n}) => (\n <textarea\n className={cn(\n 'resize-none',\n inputVariants({\n variant,\n validationStyleEnabled: validationStyleEnabled ? 'enabled' : 'disabled',\n className,\n })\n )}\n {...props}\n />\n);\n"],"mappings":"mIA8FA,MAAa,GAA+B,CAC1C,YACA,UACA,yBAAyB,GACzB,GAAG,KAEH,EAAC,WAAD,CACE,UAAW,EACT,cACA,EAAc,CACZ,UACA,uBAAwB,EAAyB,UAAY,WAC7D,YACD,CAAC,CACH,CACD,GAAI,EACJ,CAAA"}
1
+ {"version":3,"file":"TextArea.mjs","names":[],"sources":["../../../../src/components/TextArea/TextArea.tsx"],"sourcesContent":["import { cn } from '@utils/cn';\nimport type { VariantProps } from 'class-variance-authority';\nimport type { DetailedHTMLProps, FC, TextareaHTMLAttributes } from 'react';\nimport { type InputVariant, inputVariants } from '../Input';\n\n/**\n * Props for the TextArea component.\n *\n * Extends standard HTML textarea attributes with additional design system variants\n * and validation styling options.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <TextArea placeholder=\"Enter your message...\" />\n *\n * // With error validation styling\n * <TextArea\n * value={message}\n * onChange={handleChange}\n * variant={InputVariant.ERROR}\n * validationStyleEnabled={true}\n * placeholder=\"Message is required\"\n * />\n *\n * // Large multiline input\n * <TextArea\n * rows={6}\n * cols={50}\n * variant={InputVariant.DEFAULT}\n * className=\"min-h-[120px]\"\n * placeholder=\"Write a detailed description...\"\n * />\n * ```\n */\nexport type TextAreaProps = DetailedHTMLProps<\n DetailedHTMLProps<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n HTMLTextAreaElement\n >,\n HTMLTextAreaElement\n> & {\n /** Enable validation styling based on the variant prop */\n validationStyleEnabled?: boolean;\n} & Omit<\n VariantProps<typeof inputVariants>,\n 'validationStyleEnabled' | 'variant'\n > & {\n /** Visual variant of the textarea (default, success, error, warning, etc.) */\n variant?: InputVariant | `${InputVariant}`;\n };\n\n/**\n * TextArea Component\n *\n * A flexible textarea component that extends the standard HTML textarea with\n * design system styling variants, validation states, and consistent visual appearance.\n *\n * ## Features\n * - **Variant Support**: Multiple visual states (default, error, success, warning)\n * - **Validation Styling**: Optional validation feedback styling\n * - **Resize Control**: Disabled by default for consistent layout\n * - **Design System Integration**: Uses shared input variants for consistency\n * - **Accessibility**: Maintains all standard textarea accessibility features\n *\n * ## Use Cases\n * - Multi-line text input forms\n * - Comment and message composition\n * - Description and content fields\n * - Feedback and review forms\n * - Code snippet input (when combined with monospace styling)\n *\n * @example\n * ```tsx\n * // Basic textarea\n * <TextArea\n * placeholder=\"Enter your thoughts...\"\n * rows={4}\n * />\n *\n * // Controlled with validation\n * const [content, setContent] = useState('');\n * const hasError = content.length < 10;\n *\n * <TextArea\n * value={content}\n * onChange={(e) => setContent(e.target.value)}\n * variant={hasError ? InputVariant.ERROR : InputVariant.SUCCESS}\n * validationStyleEnabled={true}\n * placeholder=\"Minimum 10 characters required\"\n * className=\"min-h-[100px]\"\n * />\n * ```\n */\nexport const TextArea: FC<TextAreaProps> = ({\n className,\n variant,\n validationStyleEnabled = false,\n ...props\n}) => (\n <textarea\n className={cn(\n 'resize-none',\n inputVariants({\n variant,\n validationStyleEnabled: validationStyleEnabled ? 'enabled' : 'disabled',\n className,\n })\n )}\n {...props}\n />\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8FA,MAAa,YAA+B,EAC1C,WACA,SACA,yBAAyB,OACzB,GAAG,YAEH,oBAAC,YAAD;CACE,WAAW,GACT,eACA,cAAc;EACZ;EACA,wBAAwB,yBAAyB,YAAY;EAC7D;EACD,CAAC,CACH;CACD,GAAI;CACJ"}
@@ -1 +1,6 @@
1
- import{TextArea as e}from"./TextArea.mjs";import{AutoSizedTextArea as t}from"./AutoSizeTextArea.mjs";import{AutoCompleteTextarea as n,useDebounce as r}from"./AutocompleteTextArea.mjs";export{n as AutoCompleteTextarea,t as AutoSizedTextArea,e as TextArea,r as useDebounce};
1
+ import { ContentEditableTextArea, useContentEditable } from "./ContentEditableTextArea.mjs";
2
+ import { AutoCompleteTextarea } from "./AutocompleteTextArea.mjs";
3
+ import { TextArea } from "./TextArea.mjs";
4
+ import { AutoSizedTextArea } from "./AutoSizeTextArea.mjs";
5
+
6
+ export { AutoCompleteTextarea, AutoSizedTextArea, ContentEditableTextArea, TextArea, useContentEditable };