@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
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/Container/index.tsx"],"sourcesContent":["import { cn } from '@utils/cn';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type {\n DetailedHTMLProps,\n FC,\n HTMLAttributes,\n PropsWithChildren,\n} from 'react';\n\n/**\n * Container component variants using class-variance-authority\n * Provides flexible styling options for background, padding, borders, and layout\n */\nexport const containerVariants = cva('flex flex-col text-text backdrop-blur', {\n variants: {\n roundedSize: {\n none: 'rounded-none',\n sm: 'rounded-sm [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-md',\n md: 'rounded-md [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-lg',\n lg: 'rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl',\n xl: 'rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl',\n '2xl':\n 'rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl',\n '3xl':\n 'rounded-3xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-4xl',\n '4xl':\n 'rounded-4xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-[2.5rem]',\n full: 'rounded-full',\n },\n transparency: {\n none: 'bg-card',\n xs: 'bg-card/95',\n sm: 'bg-card/90',\n md: 'bg-card/70',\n lg: 'bg-card/40',\n xl: 'bg-card/20',\n full: '',\n },\n padding: {\n none: 'p-0',\n sm: 'px-3 py-2',\n md: 'px-4 py-3',\n lg: 'px-6 py-4',\n xl: 'px-8 py-6',\n '2xl': 'px-10 py-8',\n },\n separator: {\n without: '',\n x: 'divide-x divide-dashed divide-text/20',\n y: 'divide-y divide-dashed divide-text/20',\n both: 'divide-x divide-y divide-dashed divide-text/20',\n },\n border: {\n none: '',\n with: 'border-[1.3px]',\n },\n borderColor: {\n primary: 'border-primary',\n secondary: 'border-secondary',\n neutral: 'border-neutral',\n card: 'border-card',\n text: 'border-text',\n error: 'border-error',\n warning: 'border-warning',\n success: 'border-success',\n },\n background: {\n none: '',\n hoverable:\n 'bg-opacity-5! backdrop-blur-0 hover:bg-opacity-10! hover:backdrop-blur focus:bg-opacity-10! focus:backdrop-blur aria-selected:bg-opacity-15! aria-selected:backdrop-blur',\n with: '',\n },\n gap: {\n none: 'gap-0',\n sm: 'gap-1',\n md: 'gap-3',\n lg: 'gap-5',\n xl: 'gap-8',\n '2xl': 'gap-10',\n },\n },\n defaultVariants: {\n roundedSize: 'lg',\n border: 'none',\n borderColor: 'text',\n transparency: 'md',\n padding: 'none',\n separator: 'without',\n gap: 'none',\n },\n compoundVariants: [\n {\n background: 'none',\n class: 'bg-transparent',\n },\n ],\n});\n\n/** Available rounded corner sizes for the container */\nexport enum ContainerRoundedSize {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n '2xl' = '2xl',\n '3xl' = '3xl',\n '4xl' = '4xl',\n '5xl' = '5xl',\n FULL = 'full',\n}\n\n/** Background transparency levels for the container */\nexport enum ContainerTransparency {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n FULL = 'full',\n}\n\n/** Padding sizes for container content */\nexport enum ContainerPadding {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n}\n\n/** Separator options for dividing container children */\nexport enum ContainerSeparator {\n WITHOUT = 'without',\n X = 'x',\n Y = 'y',\n BOTH = 'both',\n}\n\n/** Border color options for the container */\nexport enum ContainerBorderColor {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n NEUTRAL = 'neutral',\n CARD = 'card',\n TEXT = 'text',\n ERROR = 'error',\n WARNING = 'warning',\n SUCCESS = 'success',\n}\n\n/** Background interaction states for the container */\nexport enum ContainerBackground {\n NONE = 'none',\n HOVERABLE = 'hoverable',\n WITH = 'with',\n}\n\n/** Gap sizes between container children */\nexport enum ContainerGap {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n '2xl' = '2xl',\n}\n\n/** Container component props extending HTML div attributes */\nexport type ContainerProps = PropsWithChildren<\n Omit<VariantProps<typeof containerVariants>, 'border'>\n> &\n DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement> & {\n /** Whether to show a border around the container */\n border?: boolean;\n };\n\n/**\n * Container Component\n *\n * A flexible container component for organizing content with customizable styling options.\n * Supports various visual states, layouts, and accessibility features.\n *\n * ## Features\n * - **Flexible Layout**: Supports different padding, gap, and separator options\n * - **Visual Variants**: Multiple background transparency levels and border styles\n * - **Responsive Design**: Configurable rounded corners and spacing\n * - **Semantic HTML**: Proper div element with extensible attributes\n *\n * ## Accessibility\n * - Inherits all standard div accessibility features\n * - Supports ARIA attributes through spread props\n * - Maintains proper semantic structure for screen readers\n *\n * @param children - The content to display inside the container\n * @param roundedSize - Border radius size (default: 'md')\n * @param transparency - Background transparency level (default: 'md')\n * @param padding - Internal padding size (default: 'none')\n * @param separator - Divider lines between children (default: 'without')\n * @param border - Whether to show border (default: false)\n * @param borderColor - Color of the border (default: 'text')\n * @param background - Background interaction behavior (default: 'none')\n * @param gap - Space between child elements (default: 'none')\n * @param className - Additional CSS classes\n * @param props - Additional HTML div attributes including ARIA attributes\n */\nexport const Container: FC<ContainerProps> = ({\n children,\n roundedSize,\n padding,\n transparency,\n separator,\n className,\n border,\n borderColor,\n background,\n gap,\n ...props\n}) => (\n <div\n className={cn(\n containerVariants({\n roundedSize,\n transparency,\n padding,\n separator,\n border:\n typeof border === 'boolean' ? (border ? 'with' : 'none') : undefined,\n background,\n borderColor,\n gap,\n }),\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n"],"mappings":"+HAaA,MAAa,EAAoB,EAAI,wCAAyC,CAC5E,SAAU,CACR,YAAa,CACX,KAAM,eACN,GAAI,iFACJ,GAAI,iFACJ,GAAI,iFACJ,GAAI,kFACJ,MACE,mFACF,MACE,mFACF,MACE,wFACF,KAAM,eACP,CACD,aAAc,CACZ,KAAM,UACN,GAAI,aACJ,GAAI,aACJ,GAAI,aACJ,GAAI,aACJ,GAAI,aACJ,KAAM,GACP,CACD,QAAS,CACP,KAAM,MACN,GAAI,YACJ,GAAI,YACJ,GAAI,YACJ,GAAI,YACJ,MAAO,aACR,CACD,UAAW,CACT,QAAS,GACT,EAAG,wCACH,EAAG,wCACH,KAAM,iDACP,CACD,OAAQ,CACN,KAAM,GACN,KAAM,iBACP,CACD,YAAa,CACX,QAAS,iBACT,UAAW,mBACX,QAAS,iBACT,KAAM,cACN,KAAM,cACN,MAAO,eACP,QAAS,iBACT,QAAS,iBACV,CACD,WAAY,CACV,KAAM,GACN,UACE,2KACF,KAAM,GACP,CACD,IAAK,CACH,KAAM,QACN,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,MAAO,SACR,CACF,CACD,gBAAiB,CACf,YAAa,KACb,OAAQ,OACR,YAAa,OACb,aAAc,KACd,QAAS,OACT,UAAW,UACX,IAAK,OACN,CACD,iBAAkB,CAChB,CACE,WAAY,OACZ,MAAO,iBACR,CACF,CACF,CAAC,CAGF,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,KAAA,OACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,OAAA,MACA,EAAA,OAAA,MACA,EAAA,OAAA,MACA,EAAA,OAAA,MACA,EAAA,KAAA,aACD,CAGW,EAAL,SAAA,EAAA,OACL,GAAA,KAAA,OACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,KAAA,aACD,CAGW,EAAL,SAAA,EAAA,OACL,GAAA,KAAA,OACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,WACD,CAGW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,UACA,EAAA,EAAA,IACA,EAAA,EAAA,IACA,EAAA,KAAA,aACD,CAGW,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,UACA,EAAA,UAAA,YACA,EAAA,QAAA,UACA,EAAA,KAAA,OACA,EAAA,KAAA,OACA,EAAA,MAAA,QACA,EAAA,QAAA,UACA,EAAA,QAAA,gBACD,CAGW,EAAL,SAAA,EAAA,OACL,GAAA,KAAA,OACA,EAAA,UAAA,YACA,EAAA,KAAA,aACD,CAGW,EAAL,SAAA,EAAA,OACL,GAAA,KAAA,OACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,OAAA,YACD,CAwCD,MAAa,GAAiC,CAC5C,WACA,cACA,UACA,eACA,YACA,YACA,SACA,cACA,aACA,MACA,GAAG,KAEH,EAAC,MAAD,CACE,UAAW,EACT,EAAkB,CAChB,cACA,eACA,UACA,YACA,OACE,OAAO,GAAW,UAAa,EAAS,OAAS,OAAU,IAAA,GAC7D,aACA,cACA,MACD,CAAC,CACF,EACD,CACD,GAAI,EAEH,WACG,CAAA"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/Container/index.tsx"],"sourcesContent":["import { cn } from '@utils/cn';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type {\n DetailedHTMLProps,\n FC,\n HTMLAttributes,\n PropsWithChildren,\n} from 'react';\n\n/**\n * Container component variants using class-variance-authority\n * Provides flexible styling options for background, padding, borders, and layout\n */\nexport const containerVariants = cva('flex flex-col text-text backdrop-blur', {\n variants: {\n roundedSize: {\n none: 'rounded-none',\n sm: 'rounded-sm [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-md',\n md: 'rounded-md [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-lg',\n lg: 'rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl',\n xl: 'rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl',\n '2xl':\n 'rounded-2xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl',\n '3xl':\n 'rounded-3xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-4xl',\n '4xl':\n 'rounded-4xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-[2.5rem]',\n full: 'rounded-full',\n },\n transparency: {\n none: 'bg-card',\n xs: 'bg-card/95',\n sm: 'bg-card/90',\n md: 'bg-card/70',\n lg: 'bg-card/40',\n xl: 'bg-card/20',\n full: '',\n },\n padding: {\n none: 'p-0',\n sm: 'px-3 py-2',\n md: 'px-4 py-3',\n lg: 'px-6 py-4',\n xl: 'px-8 py-6',\n '2xl': 'px-10 py-8',\n },\n separator: {\n without: '',\n x: 'divide-x divide-dashed divide-text/20',\n y: 'divide-y divide-dashed divide-text/20',\n both: 'divide-x divide-y divide-dashed divide-text/20',\n },\n border: {\n none: '',\n with: 'border-[1.3px]',\n },\n borderColor: {\n primary: 'border-primary',\n secondary: 'border-secondary',\n neutral: 'border-neutral',\n card: 'border-card',\n text: 'border-text',\n error: 'border-error',\n warning: 'border-warning',\n success: 'border-success',\n },\n background: {\n none: '',\n hoverable:\n 'bg-opacity-5! backdrop-blur-0 hover:bg-opacity-10! hover:backdrop-blur focus:bg-opacity-10! focus:backdrop-blur aria-selected:bg-opacity-15! aria-selected:backdrop-blur',\n with: '',\n },\n gap: {\n none: 'gap-0',\n sm: 'gap-1',\n md: 'gap-3',\n lg: 'gap-5',\n xl: 'gap-8',\n '2xl': 'gap-10',\n },\n },\n defaultVariants: {\n roundedSize: 'lg',\n border: 'none',\n borderColor: 'text',\n transparency: 'md',\n padding: 'none',\n separator: 'without',\n gap: 'none',\n },\n compoundVariants: [\n {\n background: 'none',\n class: 'bg-transparent',\n },\n ],\n});\n\n/** Available rounded corner sizes for the container */\nexport enum ContainerRoundedSize {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n '2xl' = '2xl',\n '3xl' = '3xl',\n '4xl' = '4xl',\n '5xl' = '5xl',\n FULL = 'full',\n}\n\n/** Background transparency levels for the container */\nexport enum ContainerTransparency {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n FULL = 'full',\n}\n\n/** Padding sizes for container content */\nexport enum ContainerPadding {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n}\n\n/** Separator options for dividing container children */\nexport enum ContainerSeparator {\n WITHOUT = 'without',\n X = 'x',\n Y = 'y',\n BOTH = 'both',\n}\n\n/** Border color options for the container */\nexport enum ContainerBorderColor {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n NEUTRAL = 'neutral',\n CARD = 'card',\n TEXT = 'text',\n ERROR = 'error',\n WARNING = 'warning',\n SUCCESS = 'success',\n}\n\n/** Background interaction states for the container */\nexport enum ContainerBackground {\n NONE = 'none',\n HOVERABLE = 'hoverable',\n WITH = 'with',\n}\n\n/** Gap sizes between container children */\nexport enum ContainerGap {\n NONE = 'none',\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n XL = 'xl',\n '2xl' = '2xl',\n}\n\n/** Container component props extending HTML div attributes */\nexport type ContainerProps = PropsWithChildren<\n Omit<VariantProps<typeof containerVariants>, 'border'>\n> &\n DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement> & {\n /** Whether to show a border around the container */\n border?: boolean;\n };\n\n/**\n * Container Component\n *\n * A flexible container component for organizing content with customizable styling options.\n * Supports various visual states, layouts, and accessibility features.\n *\n * ## Features\n * - **Flexible Layout**: Supports different padding, gap, and separator options\n * - **Visual Variants**: Multiple background transparency levels and border styles\n * - **Responsive Design**: Configurable rounded corners and spacing\n * - **Semantic HTML**: Proper div element with extensible attributes\n *\n * ## Accessibility\n * - Inherits all standard div accessibility features\n * - Supports ARIA attributes through spread props\n * - Maintains proper semantic structure for screen readers\n *\n * @param children - The content to display inside the container\n * @param roundedSize - Border radius size (default: 'md')\n * @param transparency - Background transparency level (default: 'md')\n * @param padding - Internal padding size (default: 'none')\n * @param separator - Divider lines between children (default: 'without')\n * @param border - Whether to show border (default: false)\n * @param borderColor - Color of the border (default: 'text')\n * @param background - Background interaction behavior (default: 'none')\n * @param gap - Space between child elements (default: 'none')\n * @param className - Additional CSS classes\n * @param props - Additional HTML div attributes including ARIA attributes\n */\nexport const Container: FC<ContainerProps> = ({\n children,\n roundedSize,\n padding,\n transparency,\n separator,\n className,\n border,\n borderColor,\n background,\n gap,\n ...props\n}) => (\n <div\n className={cn(\n containerVariants({\n roundedSize,\n transparency,\n padding,\n separator,\n border:\n typeof border === 'boolean' ? (border ? 'with' : 'none') : undefined,\n background,\n borderColor,\n gap,\n }),\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n"],"mappings":";;;;;;;;;AAaA,MAAa,oBAAoB,IAAI,yCAAyC;CAC5E,UAAU;EACR,aAAa;GACX,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,OACE;GACF,OACE;GACF,OACE;GACF,MAAM;GACP;EACD,cAAc;GACZ,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,MAAM;GACP;EACD,SAAS;GACP,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,OAAO;GACR;EACD,WAAW;GACT,SAAS;GACT,GAAG;GACH,GAAG;GACH,MAAM;GACP;EACD,QAAQ;GACN,MAAM;GACN,MAAM;GACP;EACD,aAAa;GACX,SAAS;GACT,WAAW;GACX,SAAS;GACT,MAAM;GACN,MAAM;GACN,OAAO;GACP,SAAS;GACT,SAAS;GACV;EACD,YAAY;GACV,MAAM;GACN,WACE;GACF,MAAM;GACP;EACD,KAAK;GACH,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,OAAO;GACR;EACF;CACD,iBAAiB;EACf,aAAa;EACb,QAAQ;EACR,aAAa;EACb,cAAc;EACd,SAAS;EACT,WAAW;EACX,KAAK;EACN;CACD,kBAAkB,CAChB;EACE,YAAY;EACZ,OAAO;EACR,CACF;CACF,CAAC;;AAGF,IAAY,uBAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;KACD;;AAGD,IAAY,wBAAL;AACL;AACA;AACA;AACA;AACA;AACA;;KACD;;AAGD,IAAY,mBAAL;AACL;AACA;AACA;AACA;AACA;;KACD;;AAGD,IAAY,qBAAL;AACL;AACA;AACA;AACA;;KACD;;AAGD,IAAY,uBAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;KACD;;AAGD,IAAY,sBAAL;AACL;AACA;AACA;;KACD;;AAGD,IAAY,eAAL;AACL;AACA;AACA;AACA;AACA;AACA;;KACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCD,MAAa,aAAiC,EAC5C,UACA,aACA,SACA,cACA,WACA,WACA,QACA,aACA,YACA,KACA,GAAG,YAEH,oBAAC,OAAD;CACE,WAAW,GACT,kBAAkB;EAChB;EACA;EACA;EACA;EACA,QACE,OAAO,WAAW,YAAa,SAAS,SAAS,SAAU;EAC7D;EACA;EACA;EACD,CAAC,EACF,UACD;CACD,GAAI;CAEH;CACG"}
@@ -1,2 +1,108 @@
1
- "use client";import{cn as e}from"../../utils/cn.mjs";import{InputVariant as t}from"../Input/Input.mjs";import{AutoSizedTextArea as n}from"../TextArea/AutoSizeTextArea.mjs";import{useState as r}from"react";import{Check as i,X as a}from"lucide-react";import{jsx as o,jsxs as s}from"react/jsx-runtime";const c=({children:c,onContentChange:l,isEditing:u,...d})=>{let[f,p]=r(c),[m,h]=r(0),g=f!==c,_=()=>{p(c),h(e=>e+1)},v=()=>{l(f)},y=e=>p(e.target.value??``),b=e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)?(e.preventDefault(),v()):e.key===`Escape`&&(e.preventDefault(),_())};return s(`div`,{className:`flex flex-row items-center justify-between gap-2`,role:`group`,"aria-label":`Content editor`,children:[o(n,{className:e(`break-word m-3 inline w-full bg-transparent outline-hidden`,u?`cursor-text`:`cursor-pointer`),onChange:y,onKeyDown:b,variant:t.INVISIBLE,defaultValue:c,"aria-label":`Editable content`,"aria-describedby":g?`content-editor-actions`:void 0,...d},m),g&&s(`div`,{id:`content-editor-actions`,className:`flex flex-row items-center justify-between gap-2`,role:`group`,"aria-label":`Edit actions`,children:[o(i,{className:`cursor-pointer text-green-600 hover:scale-110`,size:16,onClick:v,role:`button`,tabIndex:0,"aria-label":`Save changes (Ctrl+Enter)`,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),v())}}),o(a,{className:`cursor-pointer text-red-600 hover:scale-110`,size:16,onClick:_,role:`button`,tabIndex:0,"aria-label":`Cancel changes (Escape)`,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),_())}})]})]})};export{c as ContentEditor};
1
+ 'use client';
2
+
3
+ import { cn } from "../../utils/cn.mjs";
4
+ import { InputVariant } from "../Input/Input.mjs";
5
+ import { AutoSizedTextArea } from "../TextArea/AutoSizeTextArea.mjs";
6
+ import { useState } from "react";
7
+ import { Check, X } from "lucide-react";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+
10
+ //#region src/components/ContentEditor/ContentEditor.tsx
11
+ /**
12
+ * ContentEditor Component
13
+ *
14
+ * An inline editing component that allows users to edit text content with
15
+ * validation and cancellation options. Built on top of AutoSizedTextArea
16
+ * for flexible text editing experiences.
17
+ *
18
+ * ## Features
19
+ * - **Inline Editing**: Edit content directly in place with visual feedback
20
+ * - **Auto-sizing**: Textarea automatically adjusts to content size
21
+ * - **Validation Controls**: Check and X buttons appear when content is modified
22
+ * - **Keyboard Support**: Full keyboard navigation and accessibility
23
+ * - **State Management**: Handles editing states and content validation
24
+ *
25
+ * ## Accessibility
26
+ * - Proper ARIA labels for all interactive elements
27
+ * - Keyboard navigation support (Tab, Enter, Escape)
28
+ * - Screen reader announcements for state changes
29
+ * - Focus management between edit and display modes
30
+ *
31
+ * @param children - The current content to display and edit
32
+ * @param onContentChange - Callback when content is saved
33
+ * @param isEditing - Whether editor is in editing mode
34
+ * @param props - Additional AutoSizedTextArea props
35
+ */
36
+ const ContentEditor = ({ children, onContentChange, isEditing, ...props }) => {
37
+ const [newValue, setNewValue] = useState(children);
38
+ const [resetIncrementor, setResetIncrementor] = useState(0);
39
+ const isEdited = newValue !== children;
40
+ const handleCancel = () => {
41
+ setNewValue(children);
42
+ setResetIncrementor((prev) => prev + 1);
43
+ };
44
+ const handleValid = () => {
45
+ onContentChange(newValue);
46
+ };
47
+ const handleOnContentChange = (e) => setNewValue(e.target.value ?? "");
48
+ const handleKeyDown = (e) => {
49
+ if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) {
50
+ e.preventDefault();
51
+ handleValid();
52
+ } else if (e.key === "Escape") {
53
+ e.preventDefault();
54
+ handleCancel();
55
+ }
56
+ };
57
+ return /* @__PURE__ */ jsxs("div", {
58
+ className: "flex flex-row items-center justify-between gap-2",
59
+ role: "group",
60
+ "aria-label": "Content editor",
61
+ children: [/* @__PURE__ */ jsx(AutoSizedTextArea, {
62
+ className: cn("break-word m-3 inline w-full bg-transparent outline-hidden", isEditing ? "cursor-text" : "cursor-pointer"),
63
+ onChange: handleOnContentChange,
64
+ onKeyDown: handleKeyDown,
65
+ variant: InputVariant.INVISIBLE,
66
+ defaultValue: children,
67
+ "aria-label": "Editable content",
68
+ "aria-describedby": isEdited ? "content-editor-actions" : void 0,
69
+ ...props
70
+ }, resetIncrementor), isEdited && /* @__PURE__ */ jsxs("div", {
71
+ id: "content-editor-actions",
72
+ className: "flex flex-row items-center justify-between gap-2",
73
+ role: "group",
74
+ "aria-label": "Edit actions",
75
+ children: [/* @__PURE__ */ jsx(Check, {
76
+ className: "cursor-pointer text-green-600 hover:scale-110",
77
+ size: 16,
78
+ onClick: handleValid,
79
+ role: "button",
80
+ tabIndex: 0,
81
+ "aria-label": "Save changes (Ctrl+Enter)",
82
+ onKeyDown: (e) => {
83
+ if (e.key === "Enter" || e.key === " ") {
84
+ e.preventDefault();
85
+ handleValid();
86
+ }
87
+ }
88
+ }), /* @__PURE__ */ jsx(X, {
89
+ className: "cursor-pointer text-red-600 hover:scale-110",
90
+ size: 16,
91
+ onClick: handleCancel,
92
+ role: "button",
93
+ tabIndex: 0,
94
+ "aria-label": "Cancel changes (Escape)",
95
+ onKeyDown: (e) => {
96
+ if (e.key === "Enter" || e.key === " ") {
97
+ e.preventDefault();
98
+ handleCancel();
99
+ }
100
+ }
101
+ })]
102
+ })]
103
+ });
104
+ };
105
+
106
+ //#endregion
107
+ export { ContentEditor };
2
108
  //# sourceMappingURL=ContentEditor.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContentEditor.mjs","names":[],"sources":["../../../../src/components/ContentEditor/ContentEditor.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@utils/cn';\nimport { Check, X } from 'lucide-react';\nimport { type ChangeEventHandler, type FC, useState } from 'react';\nimport { InputVariant } from '../Input';\nimport {\n AutoSizedTextArea,\n type AutoSizedTextAreaProps,\n} from '../TextArea/AutoSizeTextArea';\n\n/** Props for the ContentEditor component */\nexport type ContentEditorProps = {\n /** The current content to display and edit */\n children: string;\n /** Callback function called when content is saved/validated */\n onContentChange: (content: string) => void;\n /** Whether the editor is currently in editing mode */\n isEditing?: boolean;\n} & AutoSizedTextAreaProps;\n\n/**\n * ContentEditor Component\n *\n * An inline editing component that allows users to edit text content with\n * validation and cancellation options. Built on top of AutoSizedTextArea\n * for flexible text editing experiences.\n *\n * ## Features\n * - **Inline Editing**: Edit content directly in place with visual feedback\n * - **Auto-sizing**: Textarea automatically adjusts to content size\n * - **Validation Controls**: Check and X buttons appear when content is modified\n * - **Keyboard Support**: Full keyboard navigation and accessibility\n * - **State Management**: Handles editing states and content validation\n *\n * ## Accessibility\n * - Proper ARIA labels for all interactive elements\n * - Keyboard navigation support (Tab, Enter, Escape)\n * - Screen reader announcements for state changes\n * - Focus management between edit and display modes\n *\n * @param children - The current content to display and edit\n * @param onContentChange - Callback when content is saved\n * @param isEditing - Whether editor is in editing mode\n * @param props - Additional AutoSizedTextArea props\n */\nexport const ContentEditor: FC<ContentEditorProps> = ({\n children,\n onContentChange,\n isEditing,\n ...props\n}) => {\n const [newValue, setNewValue] = useState<string>(children);\n const [resetIncrementor, setResetIncrementor] = useState<number>(0); // To reset the div on cancel\n const isEdited: boolean = newValue !== children;\n\n const handleCancel = () => {\n setNewValue(children);\n setResetIncrementor((prev) => prev + 1);\n };\n\n const handleValid = () => {\n onContentChange(newValue);\n };\n\n const handleOnContentChange: ChangeEventHandler<HTMLTextAreaElement> = (e) =>\n setNewValue(e.target.value ?? '');\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n handleValid();\n } else if (e.key === 'Escape') {\n e.preventDefault();\n handleCancel();\n }\n };\n\n return (\n <div\n className=\"flex flex-row items-center justify-between gap-2\"\n role=\"group\"\n aria-label=\"Content editor\"\n >\n <AutoSizedTextArea\n className={cn(\n 'break-word m-3 inline w-full bg-transparent outline-hidden',\n isEditing ? 'cursor-text' : 'cursor-pointer'\n )}\n onChange={handleOnContentChange}\n onKeyDown={handleKeyDown}\n key={resetIncrementor}\n variant={InputVariant.INVISIBLE}\n defaultValue={children}\n aria-label=\"Editable content\"\n aria-describedby={isEdited ? 'content-editor-actions' : undefined}\n {...props}\n />\n {isEdited && (\n <div\n id=\"content-editor-actions\"\n className=\"flex flex-row items-center justify-between gap-2\"\n role=\"group\"\n aria-label=\"Edit actions\"\n >\n <Check\n className=\"cursor-pointer text-green-600 hover:scale-110\"\n size={16}\n onClick={handleValid}\n role=\"button\"\n tabIndex={0}\n aria-label=\"Save changes (Ctrl+Enter)\"\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleValid();\n }\n }}\n />\n <X\n className=\"cursor-pointer text-red-600 hover:scale-110\"\n size={16}\n onClick={handleCancel}\n role=\"button\"\n tabIndex={0}\n aria-label=\"Cancel changes (Escape)\"\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleCancel();\n }\n }}\n />\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"2SA8CA,MAAa,GAAyC,CACpD,WACA,kBACA,YACA,GAAG,KACC,CACJ,GAAM,CAAC,EAAU,GAAe,EAAiB,EAAS,CACpD,CAAC,EAAkB,GAAuB,EAAiB,EAAE,CAC7D,EAAoB,IAAa,EAEjC,MAAqB,CACzB,EAAY,EAAS,CACrB,EAAqB,GAAS,EAAO,EAAE,EAGnC,MAAoB,CACxB,EAAgB,EAAS,EAGrB,EAAkE,GACtE,EAAY,EAAE,OAAO,OAAS,GAAG,CAE7B,EAAiB,GAAgD,CACjE,EAAE,MAAQ,UAAY,EAAE,SAAW,EAAE,UACvC,EAAE,gBAAgB,CAClB,GAAa,EACJ,EAAE,MAAQ,WACnB,EAAE,gBAAgB,CAClB,GAAc,GAIlB,OACE,EAAC,MAAD,CACE,UAAU,mDACV,KAAK,QACL,aAAW,0BAHb,CAKE,EAAC,EAAD,CACE,UAAW,EACT,6DACA,EAAY,cAAgB,iBAC7B,CACD,SAAU,EACV,UAAW,EAEX,QAAS,EAAa,UACtB,aAAc,EACd,aAAW,mBACX,mBAAkB,EAAW,yBAA2B,IAAA,GACxD,GAAI,EACJ,CANK,EAML,CACD,GACC,EAAC,MAAD,CACE,GAAG,yBACH,UAAU,mDACV,KAAK,QACL,aAAW,wBAJb,CAME,EAAC,EAAD,CACE,UAAU,gDACV,KAAM,GACN,QAAS,EACT,KAAK,SACL,SAAU,EACV,aAAW,4BACX,UAAY,GAAM,EACZ,EAAE,MAAQ,SAAW,EAAE,MAAQ,OACjC,EAAE,gBAAgB,CAClB,GAAa,GAGjB,CAAA,CACF,EAAC,EAAD,CACE,UAAU,8CACV,KAAM,GACN,QAAS,EACT,KAAK,SACL,SAAU,EACV,aAAW,0BACX,UAAY,GAAM,EACZ,EAAE,MAAQ,SAAW,EAAE,MAAQ,OACjC,EAAE,gBAAgB,CAClB,GAAc,GAGlB,CAAA,CACE,GAEJ"}
1
+ {"version":3,"file":"ContentEditor.mjs","names":[],"sources":["../../../../src/components/ContentEditor/ContentEditor.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@utils/cn';\nimport { Check, X } from 'lucide-react';\nimport { type ChangeEventHandler, type FC, useState } from 'react';\nimport { InputVariant } from '../Input';\nimport {\n AutoSizedTextArea,\n type AutoSizedTextAreaProps,\n} from '../TextArea/AutoSizeTextArea';\n\n/** Props for the ContentEditor component */\nexport type ContentEditorProps = {\n /** The current content to display and edit */\n children: string;\n /** Callback function called when content is saved/validated */\n onContentChange: (content: string) => void;\n /** Whether the editor is currently in editing mode */\n isEditing?: boolean;\n} & AutoSizedTextAreaProps;\n\n/**\n * ContentEditor Component\n *\n * An inline editing component that allows users to edit text content with\n * validation and cancellation options. Built on top of AutoSizedTextArea\n * for flexible text editing experiences.\n *\n * ## Features\n * - **Inline Editing**: Edit content directly in place with visual feedback\n * - **Auto-sizing**: Textarea automatically adjusts to content size\n * - **Validation Controls**: Check and X buttons appear when content is modified\n * - **Keyboard Support**: Full keyboard navigation and accessibility\n * - **State Management**: Handles editing states and content validation\n *\n * ## Accessibility\n * - Proper ARIA labels for all interactive elements\n * - Keyboard navigation support (Tab, Enter, Escape)\n * - Screen reader announcements for state changes\n * - Focus management between edit and display modes\n *\n * @param children - The current content to display and edit\n * @param onContentChange - Callback when content is saved\n * @param isEditing - Whether editor is in editing mode\n * @param props - Additional AutoSizedTextArea props\n */\nexport const ContentEditor: FC<ContentEditorProps> = ({\n children,\n onContentChange,\n isEditing,\n ...props\n}) => {\n const [newValue, setNewValue] = useState<string>(children);\n const [resetIncrementor, setResetIncrementor] = useState<number>(0); // To reset the div on cancel\n const isEdited: boolean = newValue !== children;\n\n const handleCancel = () => {\n setNewValue(children);\n setResetIncrementor((prev) => prev + 1);\n };\n\n const handleValid = () => {\n onContentChange(newValue);\n };\n\n const handleOnContentChange: ChangeEventHandler<HTMLTextAreaElement> = (e) =>\n setNewValue(e.target.value ?? '');\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n handleValid();\n } else if (e.key === 'Escape') {\n e.preventDefault();\n handleCancel();\n }\n };\n\n return (\n <div\n className=\"flex flex-row items-center justify-between gap-2\"\n role=\"group\"\n aria-label=\"Content editor\"\n >\n <AutoSizedTextArea\n className={cn(\n 'break-word m-3 inline w-full bg-transparent outline-hidden',\n isEditing ? 'cursor-text' : 'cursor-pointer'\n )}\n onChange={handleOnContentChange}\n onKeyDown={handleKeyDown}\n key={resetIncrementor}\n variant={InputVariant.INVISIBLE}\n defaultValue={children}\n aria-label=\"Editable content\"\n aria-describedby={isEdited ? 'content-editor-actions' : undefined}\n {...props}\n />\n {isEdited && (\n <div\n id=\"content-editor-actions\"\n className=\"flex flex-row items-center justify-between gap-2\"\n role=\"group\"\n aria-label=\"Edit actions\"\n >\n <Check\n className=\"cursor-pointer text-green-600 hover:scale-110\"\n size={16}\n onClick={handleValid}\n role=\"button\"\n tabIndex={0}\n aria-label=\"Save changes (Ctrl+Enter)\"\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleValid();\n }\n }}\n />\n <X\n className=\"cursor-pointer text-red-600 hover:scale-110\"\n size={16}\n onClick={handleCancel}\n role=\"button\"\n tabIndex={0}\n aria-label=\"Cancel changes (Escape)\"\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleCancel();\n }\n }}\n />\n </div>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,MAAa,iBAAyC,EACpD,UACA,iBACA,WACA,GAAG,YACC;CACJ,MAAM,CAAC,UAAU,eAAe,SAAiB,SAAS;CAC1D,MAAM,CAAC,kBAAkB,uBAAuB,SAAiB,EAAE;CACnE,MAAM,WAAoB,aAAa;CAEvC,MAAM,qBAAqB;AACzB,cAAY,SAAS;AACrB,uBAAqB,SAAS,OAAO,EAAE;;CAGzC,MAAM,oBAAoB;AACxB,kBAAgB,SAAS;;CAG3B,MAAM,yBAAkE,MACtE,YAAY,EAAE,OAAO,SAAS,GAAG;CAEnC,MAAM,iBAAiB,MAAgD;AACrE,MAAI,EAAE,QAAQ,YAAY,EAAE,WAAW,EAAE,UAAU;AACjD,KAAE,gBAAgB;AAClB,gBAAa;aACJ,EAAE,QAAQ,UAAU;AAC7B,KAAE,gBAAgB;AAClB,iBAAc;;;AAIlB,QACE,qBAAC,OAAD;EACE,WAAU;EACV,MAAK;EACL,cAAW;YAHb,CAKE,oBAAC,mBAAD;GACE,WAAW,GACT,8DACA,YAAY,gBAAgB,iBAC7B;GACD,UAAU;GACV,WAAW;GAEX,SAAS,aAAa;GACtB,cAAc;GACd,cAAW;GACX,oBAAkB,WAAW,2BAA2B;GACxD,GAAI;GACJ,EANK,iBAML,EACD,YACC,qBAAC,OAAD;GACE,IAAG;GACH,WAAU;GACV,MAAK;GACL,cAAW;aAJb,CAME,oBAAC,OAAD;IACE,WAAU;IACV,MAAM;IACN,SAAS;IACT,MAAK;IACL,UAAU;IACV,cAAW;IACX,YAAY,MAAM;AAChB,SAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,QAAE,gBAAgB;AAClB,mBAAa;;;IAGjB,GACF,oBAAC,GAAD;IACE,WAAU;IACV,MAAM;IACN,SAAS;IACT,MAAK;IACL,UAAU;IACV,cAAW;IACX,YAAY,MAAM;AAChB,SAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,QAAE,gBAAgB;AAClB,oBAAc;;;IAGlB,EACE;KAEJ"}
@@ -1,2 +1,111 @@
1
- "use client";import{Button as e,ButtonColor as t,ButtonSize as n,ButtonVariant as r}from"../Button/Button.mjs";import{Input as i,InputVariant as a}from"../Input/Input.mjs";import{useEffect as o,useState as s}from"react";import{Check as c,X as l}from"lucide-react";import{Fragment as u,jsx as d,jsxs as f}from"react/jsx-runtime";const p=({children:p,onContentChange:m,disabled:h,validate:g,additionalButtons:_,...v})=>{let[y,b]=s(p),[x,S]=s(0),C=y!==p,w=()=>{b(p),S(e=>e+1)},T=()=>{m(y)},E=e=>{b(e.currentTarget.value)},D=e=>{e.key===`Enter`&&!h&&O?(e.preventDefault(),T()):e.key===`Escape`&&(e.preventDefault(),w())};o(()=>{b(p),S(e=>e+1)},[p]);let O=g?.(y)??!0;return f(`div`,{className:`flex size-full flex-col items-center justify-between gap-2`,role:`group`,"aria-label":`Content editor input`,children:[d(i,{onChange:E,onKeyDown:D,"aria-label":`Editable input value`,"aria-describedby":C||_?`content-editor-input-actions`:void 0,"aria-invalid":!O,variant:a.INVISIBLE,className:`size-full`,defaultValue:p,disabled:h,...v},x),(C||_)&&f(`div`,{id:`content-editor-input-actions`,className:`flex w-full items-center justify-end gap-2`,role:`group`,"aria-label":`Edit actions`,children:[C&&f(u,{children:[d(e,{Icon:c,label:`Save changes${O?``:` (invalid content)`}`,variant:r.HOVERABLE,color:t.TEXT,size:n.ICON_SM,className:`cursor-pointer hover:scale-110`,disabled:h||!O,onClick:T,"aria-describedby":O?void 0:`validation-error`}),d(e,{Icon:l,label:`Cancel changes`,variant:r.HOVERABLE,size:n.ICON_SM,color:t.TEXT,className:`cursor-pointer hover:scale-110`,onClick:w,disabled:h})]}),_]})]},String(p))};export{p as ContentEditorInput};
1
+ 'use client';
2
+
3
+ import { Button, ButtonColor, ButtonSize, ButtonVariant } from "../Button/Button.mjs";
4
+ import { Input, InputVariant } from "../Input/Input.mjs";
5
+ import { useEffect, useState } from "react";
6
+ import { Check, X } from "lucide-react";
7
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
8
+
9
+ //#region src/components/ContentEditor/ContentEditorInput.tsx
10
+ /**
11
+ * ContentEditorInput Component
12
+ *
13
+ * An inline editing component for single-line text input with validation,
14
+ * cancel/save functionality, and support for additional action buttons.
15
+ *
16
+ * ## Features
17
+ * - **Inline Input Editing**: Edit single-line content with immediate feedback
18
+ * - **Validation Support**: Optional content validation with visual feedback
19
+ * - **Action Buttons**: Built-in save/cancel with support for additional buttons
20
+ * - **Keyboard Shortcuts**: Enter to save, Escape to cancel
21
+ * - **Accessibility**: Full ARIA support and keyboard navigation
22
+ * - **State Management**: Handles editing states and validation
23
+ *
24
+ * ## Accessibility
25
+ * - Proper ARIA labels and descriptions for all controls
26
+ * - Keyboard navigation (Tab, Enter, Escape)
27
+ * - Screen reader support for validation states
28
+ * - Focus management and visual indicators
29
+ *
30
+ * @param children - Current input value
31
+ * @param onContentChange - Callback when content is saved
32
+ * @param disabled - Whether the editor is disabled
33
+ * @param validate - Optional validation function
34
+ * @param additionalButtons - Extra buttons to display
35
+ * @param props - Additional Input component props
36
+ */
37
+ const ContentEditorInput = ({ children, onContentChange, disabled, validate, additionalButtons, ...props }) => {
38
+ const [newValue, setNewValue] = useState(children);
39
+ const [resetIncrementor, setResetIncrementor] = useState(0);
40
+ const isEdited = newValue !== children;
41
+ const handleCancel = () => {
42
+ setNewValue(children);
43
+ setResetIncrementor((prev) => prev + 1);
44
+ };
45
+ const handleValid = () => {
46
+ onContentChange(newValue);
47
+ };
48
+ const handleOnContentChange = (e) => {
49
+ setNewValue(e.currentTarget.value);
50
+ };
51
+ const handleKeyDown = (e) => {
52
+ if (e.key === "Enter" && !disabled && isValid) {
53
+ e.preventDefault();
54
+ handleValid();
55
+ } else if (e.key === "Escape") {
56
+ e.preventDefault();
57
+ handleCancel();
58
+ }
59
+ };
60
+ useEffect(() => {
61
+ setNewValue(children);
62
+ setResetIncrementor((prev) => prev + 1);
63
+ }, [children]);
64
+ const isValid = validate?.(newValue) ?? true;
65
+ return /* @__PURE__ */ jsxs("div", {
66
+ className: "flex size-full flex-col items-center justify-between gap-2",
67
+ role: "group",
68
+ "aria-label": "Content editor input",
69
+ children: [/* @__PURE__ */ jsx(Input, {
70
+ onChange: handleOnContentChange,
71
+ onKeyDown: handleKeyDown,
72
+ "aria-label": "Editable input value",
73
+ "aria-describedby": isEdited || additionalButtons ? "content-editor-input-actions" : void 0,
74
+ "aria-invalid": !isValid,
75
+ variant: InputVariant.INVISIBLE,
76
+ className: "size-full",
77
+ defaultValue: children,
78
+ disabled,
79
+ ...props
80
+ }, resetIncrementor), (isEdited || additionalButtons) && /* @__PURE__ */ jsxs("div", {
81
+ id: "content-editor-input-actions",
82
+ className: "flex w-full items-center justify-end gap-2",
83
+ role: "group",
84
+ "aria-label": "Edit actions",
85
+ children: [isEdited && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Button, {
86
+ Icon: Check,
87
+ label: `Save changes${!isValid ? " (invalid content)" : ""}`,
88
+ variant: ButtonVariant.HOVERABLE,
89
+ color: ButtonColor.TEXT,
90
+ size: ButtonSize.ICON_SM,
91
+ className: "cursor-pointer hover:scale-110",
92
+ disabled: disabled || !isValid,
93
+ onClick: handleValid,
94
+ "aria-describedby": !isValid ? "validation-error" : void 0
95
+ }), /* @__PURE__ */ jsx(Button, {
96
+ Icon: X,
97
+ label: "Cancel changes",
98
+ variant: ButtonVariant.HOVERABLE,
99
+ size: ButtonSize.ICON_SM,
100
+ color: ButtonColor.TEXT,
101
+ className: "cursor-pointer hover:scale-110",
102
+ onClick: handleCancel,
103
+ disabled
104
+ })] }), additionalButtons]
105
+ })]
106
+ }, String(children));
107
+ };
108
+
109
+ //#endregion
110
+ export { ContentEditorInput };
2
111
  //# sourceMappingURL=ContentEditorInput.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContentEditorInput.mjs","names":[],"sources":["../../../../src/components/ContentEditor/ContentEditorInput.tsx"],"sourcesContent":["'use client';\n\nimport { Check, X } from 'lucide-react';\nimport {\n type ChangeEventHandler,\n type FC,\n type ReactNode,\n useEffect,\n useState,\n} from 'react';\nimport { Button, ButtonColor, ButtonSize, ButtonVariant } from '../Button';\nimport { Input, type InputProps, InputVariant } from '../Input';\n\n/** Props for the ContentEditorInput component */\nexport type ContentEditorInputProps = {\n /** The current content to display and edit */\n children: InputProps['value'];\n /** Callback function called when content is saved/validated */\n onContentChange: (content: InputProps['value']) => void;\n /** Whether the editor is disabled */\n disabled?: boolean;\n /** Optional validation function to check content validity */\n validate?: (content: InputProps['value']) => boolean;\n /** Additional buttons to display alongside edit actions */\n additionalButtons?: ReactNode;\n} & Omit<InputProps, 'children'>;\n\n/**\n * ContentEditorInput Component\n *\n * An inline editing component for single-line text input with validation,\n * cancel/save functionality, and support for additional action buttons.\n *\n * ## Features\n * - **Inline Input Editing**: Edit single-line content with immediate feedback\n * - **Validation Support**: Optional content validation with visual feedback\n * - **Action Buttons**: Built-in save/cancel with support for additional buttons\n * - **Keyboard Shortcuts**: Enter to save, Escape to cancel\n * - **Accessibility**: Full ARIA support and keyboard navigation\n * - **State Management**: Handles editing states and validation\n *\n * ## Accessibility\n * - Proper ARIA labels and descriptions for all controls\n * - Keyboard navigation (Tab, Enter, Escape)\n * - Screen reader support for validation states\n * - Focus management and visual indicators\n *\n * @param children - Current input value\n * @param onContentChange - Callback when content is saved\n * @param disabled - Whether the editor is disabled\n * @param validate - Optional validation function\n * @param additionalButtons - Extra buttons to display\n * @param props - Additional Input component props\n */\nexport const ContentEditorInput: FC<ContentEditorInputProps> = ({\n children,\n onContentChange,\n disabled,\n validate,\n additionalButtons,\n ...props\n}) => {\n const [newValue, setNewValue] = useState<InputProps['value']>(children);\n const [resetIncrementor, setResetIncrementor] = useState<number>(0); // To reset the div on cancel\n const isEdited: boolean = newValue !== children;\n\n const handleCancel = () => {\n setNewValue(children);\n setResetIncrementor((prev) => prev + 1);\n };\n\n const handleValid = () => {\n onContentChange(newValue);\n };\n\n const handleOnContentChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n setNewValue(e.currentTarget.value);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && !disabled && isValid) {\n e.preventDefault();\n handleValid();\n } else if (e.key === 'Escape') {\n e.preventDefault();\n handleCancel();\n }\n };\n\n useEffect(() => {\n setNewValue(children);\n // Force input to reset when children changes externally\n setResetIncrementor((prev) => prev + 1);\n }, [children]);\n\n const isValid = validate?.(newValue) ?? true;\n\n return (\n <div\n className=\"flex size-full flex-col items-center justify-between gap-2\"\n key={String(children)}\n role=\"group\"\n aria-label=\"Content editor input\"\n >\n <Input\n onChange={handleOnContentChange}\n onKeyDown={handleKeyDown}\n key={resetIncrementor}\n aria-label=\"Editable input value\"\n aria-describedby={\n isEdited || additionalButtons\n ? 'content-editor-input-actions'\n : undefined\n }\n aria-invalid={!isValid}\n variant={InputVariant.INVISIBLE}\n className=\"size-full\"\n defaultValue={children}\n disabled={disabled}\n {...props}\n />\n {(isEdited || additionalButtons) && (\n <div\n id=\"content-editor-input-actions\"\n className=\"flex w-full items-center justify-end gap-2\"\n role=\"group\"\n aria-label=\"Edit actions\"\n >\n {isEdited && (\n <>\n <Button\n Icon={Check}\n label={`Save changes${!isValid ? ' (invalid content)' : ''}`}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n size={ButtonSize.ICON_SM}\n className=\"cursor-pointer hover:scale-110\"\n disabled={disabled || !isValid}\n onClick={handleValid}\n aria-describedby={!isValid ? 'validation-error' : undefined}\n />\n <Button\n Icon={X}\n label=\"Cancel changes\"\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n className=\"cursor-pointer hover:scale-110\"\n onClick={handleCancel}\n disabled={disabled}\n />\n </>\n )}\n {additionalButtons}\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"wUAsDA,MAAa,GAAmD,CAC9D,WACA,kBACA,WACA,WACA,oBACA,GAAG,KACC,CACJ,GAAM,CAAC,EAAU,GAAe,EAA8B,EAAS,CACjE,CAAC,EAAkB,GAAuB,EAAiB,EAAE,CAC7D,EAAoB,IAAa,EAEjC,MAAqB,CACzB,EAAY,EAAS,CACrB,EAAqB,GAAS,EAAO,EAAE,EAGnC,MAAoB,CACxB,EAAgB,EAAS,EAGrB,EAA+D,GAAM,CACzE,EAAY,EAAE,cAAc,MAAM,EAG9B,EAAiB,GAA6C,CAC9D,EAAE,MAAQ,SAAW,CAAC,GAAY,GACpC,EAAE,gBAAgB,CAClB,GAAa,EACJ,EAAE,MAAQ,WACnB,EAAE,gBAAgB,CAClB,GAAc,GAIlB,MAAgB,CACd,EAAY,EAAS,CAErB,EAAqB,GAAS,EAAO,EAAE,EACtC,CAAC,EAAS,CAAC,CAEd,IAAM,EAAU,IAAW,EAAS,EAAI,GAExC,OACE,EAAC,MAAD,CACE,UAAU,6DAEV,KAAK,QACL,aAAW,gCAJb,CAME,EAAC,EAAD,CACE,SAAU,EACV,UAAW,EAEX,aAAW,uBACX,mBACE,GAAY,EACR,+BACA,IAAA,GAEN,eAAc,CAAC,EACf,QAAS,EAAa,UACtB,UAAU,YACV,aAAc,EACJ,WACV,GAAI,EACJ,CAbK,EAaL,EACA,GAAY,IACZ,EAAC,MAAD,CACE,GAAG,+BACH,UAAU,6CACV,KAAK,QACL,aAAW,wBAJb,CAMG,GACC,EAAA,EAAA,CAAA,SAAA,CACE,EAAC,EAAD,CACE,KAAM,EACN,MAAO,eAAgB,EAAiC,GAAvB,uBACjC,QAAS,EAAc,UACvB,MAAO,EAAY,KACnB,KAAM,EAAW,QACjB,UAAU,iCACV,SAAU,GAAY,CAAC,EACvB,QAAS,EACT,mBAAmB,EAA+B,IAAA,GAArB,mBAC7B,CAAA,CACF,EAAC,EAAD,CACE,KAAM,EACN,MAAM,iBACN,QAAS,EAAc,UACvB,KAAM,EAAW,QACjB,MAAO,EAAY,KACnB,UAAU,iCACV,QAAS,EACC,WACV,CAAA,CACD,CAAA,CAAA,CAEJ,EACG,GAEJ,EAxDC,OAAO,EAAS,CAwDjB"}
1
+ {"version":3,"file":"ContentEditorInput.mjs","names":[],"sources":["../../../../src/components/ContentEditor/ContentEditorInput.tsx"],"sourcesContent":["'use client';\n\nimport { Check, X } from 'lucide-react';\nimport {\n type ChangeEventHandler,\n type FC,\n type ReactNode,\n useEffect,\n useState,\n} from 'react';\nimport { Button, ButtonColor, ButtonSize, ButtonVariant } from '../Button';\nimport { Input, type InputProps, InputVariant } from '../Input';\n\n/** Props for the ContentEditorInput component */\nexport type ContentEditorInputProps = {\n /** The current content to display and edit */\n children: InputProps['value'];\n /** Callback function called when content is saved/validated */\n onContentChange: (content: InputProps['value']) => void;\n /** Whether the editor is disabled */\n disabled?: boolean;\n /** Optional validation function to check content validity */\n validate?: (content: InputProps['value']) => boolean;\n /** Additional buttons to display alongside edit actions */\n additionalButtons?: ReactNode;\n} & Omit<InputProps, 'children'>;\n\n/**\n * ContentEditorInput Component\n *\n * An inline editing component for single-line text input with validation,\n * cancel/save functionality, and support for additional action buttons.\n *\n * ## Features\n * - **Inline Input Editing**: Edit single-line content with immediate feedback\n * - **Validation Support**: Optional content validation with visual feedback\n * - **Action Buttons**: Built-in save/cancel with support for additional buttons\n * - **Keyboard Shortcuts**: Enter to save, Escape to cancel\n * - **Accessibility**: Full ARIA support and keyboard navigation\n * - **State Management**: Handles editing states and validation\n *\n * ## Accessibility\n * - Proper ARIA labels and descriptions for all controls\n * - Keyboard navigation (Tab, Enter, Escape)\n * - Screen reader support for validation states\n * - Focus management and visual indicators\n *\n * @param children - Current input value\n * @param onContentChange - Callback when content is saved\n * @param disabled - Whether the editor is disabled\n * @param validate - Optional validation function\n * @param additionalButtons - Extra buttons to display\n * @param props - Additional Input component props\n */\nexport const ContentEditorInput: FC<ContentEditorInputProps> = ({\n children,\n onContentChange,\n disabled,\n validate,\n additionalButtons,\n ...props\n}) => {\n const [newValue, setNewValue] = useState<InputProps['value']>(children);\n const [resetIncrementor, setResetIncrementor] = useState<number>(0); // To reset the div on cancel\n const isEdited: boolean = newValue !== children;\n\n const handleCancel = () => {\n setNewValue(children);\n setResetIncrementor((prev) => prev + 1);\n };\n\n const handleValid = () => {\n onContentChange(newValue);\n };\n\n const handleOnContentChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n setNewValue(e.currentTarget.value);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && !disabled && isValid) {\n e.preventDefault();\n handleValid();\n } else if (e.key === 'Escape') {\n e.preventDefault();\n handleCancel();\n }\n };\n\n useEffect(() => {\n setNewValue(children);\n // Force input to reset when children changes externally\n setResetIncrementor((prev) => prev + 1);\n }, [children]);\n\n const isValid = validate?.(newValue) ?? true;\n\n return (\n <div\n className=\"flex size-full flex-col items-center justify-between gap-2\"\n key={String(children)}\n role=\"group\"\n aria-label=\"Content editor input\"\n >\n <Input\n onChange={handleOnContentChange}\n onKeyDown={handleKeyDown}\n key={resetIncrementor}\n aria-label=\"Editable input value\"\n aria-describedby={\n isEdited || additionalButtons\n ? 'content-editor-input-actions'\n : undefined\n }\n aria-invalid={!isValid}\n variant={InputVariant.INVISIBLE}\n className=\"size-full\"\n defaultValue={children}\n disabled={disabled}\n {...props}\n />\n {(isEdited || additionalButtons) && (\n <div\n id=\"content-editor-input-actions\"\n className=\"flex w-full items-center justify-end gap-2\"\n role=\"group\"\n aria-label=\"Edit actions\"\n >\n {isEdited && (\n <>\n <Button\n Icon={Check}\n label={`Save changes${!isValid ? ' (invalid content)' : ''}`}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n size={ButtonSize.ICON_SM}\n className=\"cursor-pointer hover:scale-110\"\n disabled={disabled || !isValid}\n onClick={handleValid}\n aria-describedby={!isValid ? 'validation-error' : undefined}\n />\n <Button\n Icon={X}\n label=\"Cancel changes\"\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n className=\"cursor-pointer hover:scale-110\"\n onClick={handleCancel}\n disabled={disabled}\n />\n </>\n )}\n {additionalButtons}\n </div>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDA,MAAa,sBAAmD,EAC9D,UACA,iBACA,UACA,UACA,mBACA,GAAG,YACC;CACJ,MAAM,CAAC,UAAU,eAAe,SAA8B,SAAS;CACvE,MAAM,CAAC,kBAAkB,uBAAuB,SAAiB,EAAE;CACnE,MAAM,WAAoB,aAAa;CAEvC,MAAM,qBAAqB;AACzB,cAAY,SAAS;AACrB,uBAAqB,SAAS,OAAO,EAAE;;CAGzC,MAAM,oBAAoB;AACxB,kBAAgB,SAAS;;CAG3B,MAAM,yBAA+D,MAAM;AACzE,cAAY,EAAE,cAAc,MAAM;;CAGpC,MAAM,iBAAiB,MAA6C;AAClE,MAAI,EAAE,QAAQ,WAAW,CAAC,YAAY,SAAS;AAC7C,KAAE,gBAAgB;AAClB,gBAAa;aACJ,EAAE,QAAQ,UAAU;AAC7B,KAAE,gBAAgB;AAClB,iBAAc;;;AAIlB,iBAAgB;AACd,cAAY,SAAS;AAErB,uBAAqB,SAAS,OAAO,EAAE;IACtC,CAAC,SAAS,CAAC;CAEd,MAAM,UAAU,WAAW,SAAS,IAAI;AAExC,QACE,qBAAC,OAAD;EACE,WAAU;EAEV,MAAK;EACL,cAAW;YAJb,CAME,oBAAC,OAAD;GACE,UAAU;GACV,WAAW;GAEX,cAAW;GACX,oBACE,YAAY,oBACR,iCACA;GAEN,gBAAc,CAAC;GACf,SAAS,aAAa;GACtB,WAAU;GACV,cAAc;GACJ;GACV,GAAI;GACJ,EAbK,iBAaL,GACA,YAAY,sBACZ,qBAAC,OAAD;GACE,IAAG;GACH,WAAU;GACV,MAAK;GACL,cAAW;aAJb,CAMG,YACC,8CACE,oBAAC,QAAD;IACE,MAAM;IACN,OAAO,eAAe,CAAC,UAAU,uBAAuB;IACxD,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,WAAU;IACV,UAAU,YAAY,CAAC;IACvB,SAAS;IACT,oBAAkB,CAAC,UAAU,qBAAqB;IAClD,GACF,oBAAC,QAAD;IACE,MAAM;IACN,OAAM;IACN,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,WAAU;IACV,SAAS;IACC;IACV,EACD,KAEJ,kBACG;KAEJ;IAxDC,OAAO,SAAS,CAwDjB"}
@@ -1,2 +1,114 @@
1
- "use client";import{useUser as e}from"../../hooks/useUser/index.mjs";import{Button as t,ButtonColor as n,ButtonSize as r,ButtonVariant as i}from"../Button/Button.mjs";import{AutoCompleteTextarea as a}from"../TextArea/AutocompleteTextArea.mjs";import{useEffect as o,useState as s}from"react";import{Check as c,X as l}from"lucide-react";import{Fragment as u,jsx as d,jsxs as f}from"react/jsx-runtime";const p=({children:p,onContentChange:m,disabled:h,validate:g,additionalButtons:_,...v})=>{let{isAuthenticated:y}=e(),[b,x]=s(p),[S,C]=s(0),w=b!==p,T=()=>{x(p),C(e=>e+1)},E=()=>{m(b)},D=e=>x(e.currentTarget.value??``),O=e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&!h&&k?(e.preventDefault(),E()):e.key===`Escape`&&(e.preventDefault(),T())};o(()=>{x(p),C(e=>e+1)},[p]);let k=g?.(b)??!0;return f(`div`,{className:`flex size-full flex-col items-center justify-between gap-2`,role:`group`,"aria-label":`Content editor textarea`,children:[d(a,{onChange:D,onKeyDown:O,variant:`invisible`,className:`size-full`,value:p,isActive:y,disabled:h,"aria-label":`Editable textarea content`,"aria-describedby":w||_?`content-editor-textarea-actions`:void 0,"aria-invalid":!k,...v},S),(w||_)&&f(`div`,{id:`content-editor-textarea-actions`,className:`flex w-full items-center justify-end gap-2`,role:`group`,"aria-label":`Edit actions`,children:[w&&f(u,{children:[d(t,{Icon:c,label:`Save changes${k?``:` (invalid content)`}`,variant:i.HOVERABLE,color:n.TEXT,size:r.ICON_SM,className:`cursor-pointer hover:scale-110`,disabled:h||!k,onClick:E,"aria-describedby":k?void 0:`textarea-validation-error`}),d(t,{Icon:l,label:`Cancel changes`,variant:i.HOVERABLE,size:r.ICON_SM,color:n.TEXT,className:`cursor-pointer hover:scale-110`,onClick:T,disabled:h})]}),_]})]},p)};export{p as ContentEditorTextArea};
1
+ 'use client';
2
+
3
+ import { useUser } from "../../hooks/useUser/index.mjs";
4
+ import { Button, ButtonColor, ButtonSize, ButtonVariant } from "../Button/Button.mjs";
5
+ import { AutoCompleteTextarea } from "../TextArea/AutocompleteTextArea.mjs";
6
+ import { useEffect, useState } from "react";
7
+ import { Check, X } from "lucide-react";
8
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
+
10
+ //#region src/components/ContentEditor/ContentEditorTextArea.tsx
11
+ /**
12
+ * ContentEditorTextArea Component
13
+ *
14
+ * An inline editing component for multi-line text with autocomplete functionality,
15
+ * user authentication integration, and validation support. This component combines
16
+ * the auto-sizing textarea with smart autocomplete features.
17
+ *
18
+ * ## Features
19
+ * - **Auto-sizing Textarea**: Automatically adjusts height to content
20
+ * - **Autocomplete Integration**: Smart text completion when user is authenticated
21
+ * - **Validation Support**: Optional content validation with visual feedback
22
+ * - **Action Buttons**: Built-in save/cancel with support for additional buttons
23
+ * - **Keyboard Shortcuts**: Enter to save, Escape to cancel
24
+ * - **User Authentication**: Autocomplete features activate based on auth status
25
+ * - **Accessibility**: Full ARIA support and keyboard navigation
26
+ *
27
+ * ## Accessibility
28
+ * - Proper ARIA labels and descriptions for all controls
29
+ * - Keyboard navigation (Tab, Enter, Escape)
30
+ * - Screen reader support for validation states and user auth status
31
+ * - Focus management and visual indicators
32
+ *
33
+ * @param children - Current textarea content
34
+ * @param onContentChange - Callback when content is saved
35
+ * @param disabled - Whether the editor is disabled
36
+ * @param validate - Optional validation function
37
+ * @param additionalButtons - Extra buttons to display
38
+ * @param props - Additional AutoSizedTextArea component props
39
+ */
40
+ const ContentEditorTextArea = ({ children, onContentChange, disabled, validate, additionalButtons, ...props }) => {
41
+ const { isAuthenticated } = useUser();
42
+ const [newValue, setNewValue] = useState(children);
43
+ const [resetIncrementor, setResetIncrementor] = useState(0);
44
+ const isEdited = newValue !== children;
45
+ const handleCancel = () => {
46
+ setNewValue(children);
47
+ setResetIncrementor((prev) => prev + 1);
48
+ };
49
+ const handleValid = () => {
50
+ onContentChange(newValue);
51
+ };
52
+ const handleOnContentChange = (e) => setNewValue(e.currentTarget.value ?? "");
53
+ const handleKeyDown = (e) => {
54
+ if (e.key === "Enter" && (e.metaKey || e.ctrlKey) && !disabled && isValid) {
55
+ e.preventDefault();
56
+ handleValid();
57
+ } else if (e.key === "Escape") {
58
+ e.preventDefault();
59
+ handleCancel();
60
+ }
61
+ };
62
+ useEffect(() => {
63
+ setNewValue(children);
64
+ setResetIncrementor((prev) => prev + 1);
65
+ }, [children]);
66
+ const isValid = validate?.(newValue) ?? true;
67
+ return /* @__PURE__ */ jsxs("div", {
68
+ className: "flex size-full flex-col items-center justify-between gap-2",
69
+ role: "group",
70
+ "aria-label": "Content editor textarea",
71
+ children: [/* @__PURE__ */ jsx(AutoCompleteTextarea, {
72
+ onChange: handleOnContentChange,
73
+ onKeyDown: handleKeyDown,
74
+ variant: "invisible",
75
+ className: "size-full",
76
+ value: children,
77
+ isActive: isAuthenticated,
78
+ disabled,
79
+ "aria-label": "Editable textarea content",
80
+ "aria-describedby": isEdited || additionalButtons ? "content-editor-textarea-actions" : void 0,
81
+ "aria-invalid": !isValid,
82
+ ...props
83
+ }, resetIncrementor), (isEdited || additionalButtons) && /* @__PURE__ */ jsxs("div", {
84
+ id: "content-editor-textarea-actions",
85
+ className: "flex w-full items-center justify-end gap-2",
86
+ role: "group",
87
+ "aria-label": "Edit actions",
88
+ children: [isEdited && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Button, {
89
+ Icon: Check,
90
+ label: `Save changes${!isValid ? " (invalid content)" : ""}`,
91
+ variant: ButtonVariant.HOVERABLE,
92
+ color: ButtonColor.TEXT,
93
+ size: ButtonSize.ICON_SM,
94
+ className: "cursor-pointer hover:scale-110",
95
+ disabled: disabled || !isValid,
96
+ onClick: handleValid,
97
+ "aria-describedby": !isValid ? "textarea-validation-error" : void 0
98
+ }), /* @__PURE__ */ jsx(Button, {
99
+ Icon: X,
100
+ label: "Cancel changes",
101
+ variant: ButtonVariant.HOVERABLE,
102
+ size: ButtonSize.ICON_SM,
103
+ color: ButtonColor.TEXT,
104
+ className: "cursor-pointer hover:scale-110",
105
+ onClick: handleCancel,
106
+ disabled
107
+ })] }), additionalButtons]
108
+ })]
109
+ }, children);
110
+ };
111
+
112
+ //#endregion
113
+ export { ContentEditorTextArea };
2
114
  //# sourceMappingURL=ContentEditorTextArea.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContentEditorTextArea.mjs","names":[],"sources":["../../../../src/components/ContentEditor/ContentEditorTextArea.tsx"],"sourcesContent":["'use client';\n\nimport { useUser } from '@hooks/useUser';\nimport { Check, X } from 'lucide-react';\nimport {\n type ChangeEventHandler,\n type FC,\n type ReactNode,\n useEffect,\n useState,\n} from 'react';\nimport { Button, ButtonColor, ButtonSize, ButtonVariant } from '../Button';\nimport { AutoCompleteTextarea, type AutoSizedTextAreaProps } from '../TextArea';\n\n/** Props for the ContentEditorTextArea component */\nexport type ContentEditorTextAreaProps = {\n /** The current content to display and edit */\n children: string;\n /** Callback function called when content is saved/validated */\n onContentChange: (content: string) => void;\n /** Whether the editor is disabled */\n disabled?: boolean;\n /** Optional validation function to check content validity */\n validate?: (content: string) => boolean;\n /** Additional buttons to display alongside edit actions */\n additionalButtons?: ReactNode;\n} & Omit<AutoSizedTextAreaProps, 'children'>;\n\n/**\n * ContentEditorTextArea Component\n *\n * An inline editing component for multi-line text with autocomplete functionality,\n * user authentication integration, and validation support. This component combines\n * the auto-sizing textarea with smart autocomplete features.\n *\n * ## Features\n * - **Auto-sizing Textarea**: Automatically adjusts height to content\n * - **Autocomplete Integration**: Smart text completion when user is authenticated\n * - **Validation Support**: Optional content validation with visual feedback\n * - **Action Buttons**: Built-in save/cancel with support for additional buttons\n * - **Keyboard Shortcuts**: Enter to save, Escape to cancel\n * - **User Authentication**: Autocomplete features activate based on auth status\n * - **Accessibility**: Full ARIA support and keyboard navigation\n *\n * ## Accessibility\n * - Proper ARIA labels and descriptions for all controls\n * - Keyboard navigation (Tab, Enter, Escape)\n * - Screen reader support for validation states and user auth status\n * - Focus management and visual indicators\n *\n * @param children - Current textarea content\n * @param onContentChange - Callback when content is saved\n * @param disabled - Whether the editor is disabled\n * @param validate - Optional validation function\n * @param additionalButtons - Extra buttons to display\n * @param props - Additional AutoSizedTextArea component props\n */\nexport const ContentEditorTextArea: FC<ContentEditorTextAreaProps> = ({\n children,\n onContentChange,\n disabled,\n validate,\n additionalButtons,\n ...props\n}) => {\n const { isAuthenticated } = useUser();\n const [newValue, setNewValue] = useState<string>(children);\n const [resetIncrementor, setResetIncrementor] = useState<number>(0); // To reset the textarea on cancel\n const isEdited: boolean = newValue !== children;\n\n const handleCancel = () => {\n setNewValue(children);\n setResetIncrementor((prev) => prev + 1);\n };\n\n const handleValid = () => {\n onContentChange(newValue);\n };\n\n const handleOnContentChange: ChangeEventHandler<HTMLTextAreaElement> = (e) =>\n setNewValue(e.currentTarget.value ?? '');\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey) && !disabled && isValid) {\n e.preventDefault();\n handleValid();\n } else if (e.key === 'Escape') {\n e.preventDefault();\n handleCancel();\n }\n };\n\n useEffect(() => {\n setNewValue(children);\n // Force textarea to reset when children changes externally\n setResetIncrementor((prev) => prev + 1);\n }, [children]);\n\n const isValid = validate?.(newValue) ?? true;\n\n return (\n <div\n className=\"flex size-full flex-col items-center justify-between gap-2\"\n key={children}\n role=\"group\"\n aria-label=\"Content editor textarea\"\n >\n <AutoCompleteTextarea\n onChange={handleOnContentChange}\n onKeyDown={handleKeyDown}\n key={resetIncrementor}\n variant=\"invisible\"\n className=\"size-full\"\n value={children}\n isActive={isAuthenticated}\n disabled={disabled}\n aria-label=\"Editable textarea content\"\n aria-describedby={\n isEdited || additionalButtons\n ? 'content-editor-textarea-actions'\n : undefined\n }\n aria-invalid={!isValid}\n {...props}\n />\n {(isEdited || additionalButtons) && (\n <div\n id=\"content-editor-textarea-actions\"\n className=\"flex w-full items-center justify-end gap-2\"\n role=\"group\"\n aria-label=\"Edit actions\"\n >\n {isEdited && (\n <>\n <Button\n Icon={Check}\n label={`Save changes${!isValid ? ' (invalid content)' : ''}`}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n size={ButtonSize.ICON_SM}\n className=\"cursor-pointer hover:scale-110\"\n disabled={disabled || !isValid}\n onClick={handleValid}\n aria-describedby={\n !isValid ? 'textarea-validation-error' : undefined\n }\n />\n <Button\n Icon={X}\n label=\"Cancel changes\"\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n className=\"cursor-pointer hover:scale-110\"\n onClick={handleCancel}\n disabled={disabled}\n />\n </>\n )}\n {additionalButtons}\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"+YAyDA,MAAa,GAAyD,CACpE,WACA,kBACA,WACA,WACA,oBACA,GAAG,KACC,CACJ,GAAM,CAAE,mBAAoB,GAAS,CAC/B,CAAC,EAAU,GAAe,EAAiB,EAAS,CACpD,CAAC,EAAkB,GAAuB,EAAiB,EAAE,CAC7D,EAAoB,IAAa,EAEjC,MAAqB,CACzB,EAAY,EAAS,CACrB,EAAqB,GAAS,EAAO,EAAE,EAGnC,MAAoB,CACxB,EAAgB,EAAS,EAGrB,EAAkE,GACtE,EAAY,EAAE,cAAc,OAAS,GAAG,CAEpC,EAAiB,GAAgD,CACjE,EAAE,MAAQ,UAAY,EAAE,SAAW,EAAE,UAAY,CAAC,GAAY,GAChE,EAAE,gBAAgB,CAClB,GAAa,EACJ,EAAE,MAAQ,WACnB,EAAE,gBAAgB,CAClB,GAAc,GAIlB,MAAgB,CACd,EAAY,EAAS,CAErB,EAAqB,GAAS,EAAO,EAAE,EACtC,CAAC,EAAS,CAAC,CAEd,IAAM,EAAU,IAAW,EAAS,EAAI,GAExC,OACE,EAAC,MAAD,CACE,UAAU,6DAEV,KAAK,QACL,aAAW,mCAJb,CAME,EAAC,EAAD,CACE,SAAU,EACV,UAAW,EAEX,QAAQ,YACR,UAAU,YACV,MAAO,EACP,SAAU,EACA,WACV,aAAW,4BACX,mBACE,GAAY,EACR,kCACA,IAAA,GAEN,eAAc,CAAC,EACf,GAAI,EACJ,CAdK,EAcL,EACA,GAAY,IACZ,EAAC,MAAD,CACE,GAAG,kCACH,UAAU,6CACV,KAAK,QACL,aAAW,wBAJb,CAMG,GACC,EAAA,EAAA,CAAA,SAAA,CACE,EAAC,EAAD,CACE,KAAM,EACN,MAAO,eAAgB,EAAiC,GAAvB,uBACjC,QAAS,EAAc,UACvB,MAAO,EAAY,KACnB,KAAM,EAAW,QACjB,UAAU,iCACV,SAAU,GAAY,CAAC,EACvB,QAAS,EACT,mBACG,EAAwC,IAAA,GAA9B,4BAEb,CAAA,CACF,EAAC,EAAD,CACE,KAAM,EACN,MAAM,iBACN,QAAS,EAAc,UACvB,KAAM,EAAW,QACjB,MAAO,EAAY,KACnB,UAAU,iCACV,QAAS,EACC,WACV,CAAA,CACD,CAAA,CAAA,CAEJ,EACG,GAEJ,EA3DC,EA2DD"}
1
+ {"version":3,"file":"ContentEditorTextArea.mjs","names":[],"sources":["../../../../src/components/ContentEditor/ContentEditorTextArea.tsx"],"sourcesContent":["'use client';\n\nimport { useUser } from '@hooks/useUser';\nimport { Check, X } from 'lucide-react';\nimport {\n type ChangeEventHandler,\n type FC,\n type ReactNode,\n useEffect,\n useState,\n} from 'react';\nimport { Button, ButtonColor, ButtonSize, ButtonVariant } from '../Button';\nimport { AutoCompleteTextarea, type AutoSizedTextAreaProps } from '../TextArea';\n\n/** Props for the ContentEditorTextArea component */\nexport type ContentEditorTextAreaProps = {\n /** The current content to display and edit */\n children: string;\n /** Callback function called when content is saved/validated */\n onContentChange: (content: string) => void;\n /** Whether the editor is disabled */\n disabled?: boolean;\n /** Optional validation function to check content validity */\n validate?: (content: string) => boolean;\n /** Additional buttons to display alongside edit actions */\n additionalButtons?: ReactNode;\n} & Omit<AutoSizedTextAreaProps, 'children'>;\n\n/**\n * ContentEditorTextArea Component\n *\n * An inline editing component for multi-line text with autocomplete functionality,\n * user authentication integration, and validation support. This component combines\n * the auto-sizing textarea with smart autocomplete features.\n *\n * ## Features\n * - **Auto-sizing Textarea**: Automatically adjusts height to content\n * - **Autocomplete Integration**: Smart text completion when user is authenticated\n * - **Validation Support**: Optional content validation with visual feedback\n * - **Action Buttons**: Built-in save/cancel with support for additional buttons\n * - **Keyboard Shortcuts**: Enter to save, Escape to cancel\n * - **User Authentication**: Autocomplete features activate based on auth status\n * - **Accessibility**: Full ARIA support and keyboard navigation\n *\n * ## Accessibility\n * - Proper ARIA labels and descriptions for all controls\n * - Keyboard navigation (Tab, Enter, Escape)\n * - Screen reader support for validation states and user auth status\n * - Focus management and visual indicators\n *\n * @param children - Current textarea content\n * @param onContentChange - Callback when content is saved\n * @param disabled - Whether the editor is disabled\n * @param validate - Optional validation function\n * @param additionalButtons - Extra buttons to display\n * @param props - Additional AutoSizedTextArea component props\n */\nexport const ContentEditorTextArea: FC<ContentEditorTextAreaProps> = ({\n children,\n onContentChange,\n disabled,\n validate,\n additionalButtons,\n ...props\n}) => {\n const { isAuthenticated } = useUser();\n const [newValue, setNewValue] = useState<string>(children);\n const [resetIncrementor, setResetIncrementor] = useState<number>(0); // To reset the textarea on cancel\n const isEdited: boolean = newValue !== children;\n\n const handleCancel = () => {\n setNewValue(children);\n setResetIncrementor((prev) => prev + 1);\n };\n\n const handleValid = () => {\n onContentChange(newValue);\n };\n\n const handleOnContentChange: ChangeEventHandler<HTMLTextAreaElement> = (e) =>\n setNewValue(e.currentTarget.value ?? '');\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey) && !disabled && isValid) {\n e.preventDefault();\n handleValid();\n } else if (e.key === 'Escape') {\n e.preventDefault();\n handleCancel();\n }\n };\n\n useEffect(() => {\n setNewValue(children);\n // Force textarea to reset when children changes externally\n setResetIncrementor((prev) => prev + 1);\n }, [children]);\n\n const isValid = validate?.(newValue) ?? true;\n\n return (\n <div\n className=\"flex size-full flex-col items-center justify-between gap-2\"\n key={children}\n role=\"group\"\n aria-label=\"Content editor textarea\"\n >\n <AutoCompleteTextarea\n onChange={handleOnContentChange}\n onKeyDown={handleKeyDown}\n key={resetIncrementor}\n variant=\"invisible\"\n className=\"size-full\"\n value={children}\n isActive={isAuthenticated}\n disabled={disabled}\n aria-label=\"Editable textarea content\"\n aria-describedby={\n isEdited || additionalButtons\n ? 'content-editor-textarea-actions'\n : undefined\n }\n aria-invalid={!isValid}\n {...props}\n />\n {(isEdited || additionalButtons) && (\n <div\n id=\"content-editor-textarea-actions\"\n className=\"flex w-full items-center justify-end gap-2\"\n role=\"group\"\n aria-label=\"Edit actions\"\n >\n {isEdited && (\n <>\n <Button\n Icon={Check}\n label={`Save changes${!isValid ? ' (invalid content)' : ''}`}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n size={ButtonSize.ICON_SM}\n className=\"cursor-pointer hover:scale-110\"\n disabled={disabled || !isValid}\n onClick={handleValid}\n aria-describedby={\n !isValid ? 'textarea-validation-error' : undefined\n }\n />\n <Button\n Icon={X}\n label=\"Cancel changes\"\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n className=\"cursor-pointer hover:scale-110\"\n onClick={handleCancel}\n disabled={disabled}\n />\n </>\n )}\n {additionalButtons}\n </div>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDA,MAAa,yBAAyD,EACpE,UACA,iBACA,UACA,UACA,mBACA,GAAG,YACC;CACJ,MAAM,EAAE,oBAAoB,SAAS;CACrC,MAAM,CAAC,UAAU,eAAe,SAAiB,SAAS;CAC1D,MAAM,CAAC,kBAAkB,uBAAuB,SAAiB,EAAE;CACnE,MAAM,WAAoB,aAAa;CAEvC,MAAM,qBAAqB;AACzB,cAAY,SAAS;AACrB,uBAAqB,SAAS,OAAO,EAAE;;CAGzC,MAAM,oBAAoB;AACxB,kBAAgB,SAAS;;CAG3B,MAAM,yBAAkE,MACtE,YAAY,EAAE,cAAc,SAAS,GAAG;CAE1C,MAAM,iBAAiB,MAAgD;AACrE,MAAI,EAAE,QAAQ,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,YAAY,SAAS;AACzE,KAAE,gBAAgB;AAClB,gBAAa;aACJ,EAAE,QAAQ,UAAU;AAC7B,KAAE,gBAAgB;AAClB,iBAAc;;;AAIlB,iBAAgB;AACd,cAAY,SAAS;AAErB,uBAAqB,SAAS,OAAO,EAAE;IACtC,CAAC,SAAS,CAAC;CAEd,MAAM,UAAU,WAAW,SAAS,IAAI;AAExC,QACE,qBAAC,OAAD;EACE,WAAU;EAEV,MAAK;EACL,cAAW;YAJb,CAME,oBAAC,sBAAD;GACE,UAAU;GACV,WAAW;GAEX,SAAQ;GACR,WAAU;GACV,OAAO;GACP,UAAU;GACA;GACV,cAAW;GACX,oBACE,YAAY,oBACR,oCACA;GAEN,gBAAc,CAAC;GACf,GAAI;GACJ,EAdK,iBAcL,GACA,YAAY,sBACZ,qBAAC,OAAD;GACE,IAAG;GACH,WAAU;GACV,MAAK;GACL,cAAW;aAJb,CAMG,YACC,8CACE,oBAAC,QAAD;IACE,MAAM;IACN,OAAO,eAAe,CAAC,UAAU,uBAAuB;IACxD,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,WAAU;IACV,UAAU,YAAY,CAAC;IACvB,SAAS;IACT,oBACE,CAAC,UAAU,8BAA8B;IAE3C,GACF,oBAAC,QAAD;IACE,MAAM;IACN,OAAM;IACN,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,WAAU;IACV,SAAS;IACC;IACV,EACD,KAEJ,kBACG;KAEJ;IA3DC,SA2DD"}
@@ -1 +1,5 @@
1
- import{ContentEditorInput as e}from"./ContentEditorInput.mjs";import{ContentEditorTextArea as t}from"./ContentEditorTextArea.mjs";import{ContentEditor as n}from"./ContentEditor.mjs";export{n as ContentEditor,e as ContentEditorInput,t as ContentEditorTextArea};
1
+ import { ContentEditorInput } from "./ContentEditorInput.mjs";
2
+ import { ContentEditorTextArea } from "./ContentEditorTextArea.mjs";
3
+ import { ContentEditor } from "./ContentEditor.mjs";
4
+
5
+ export { ContentEditor, ContentEditorInput, ContentEditorTextArea };
@@ -1,2 +1,82 @@
1
- "use client";import{PressableSpan as e}from"../PressableSpan/PressableSpan.mjs";import{jsx as t}from"react/jsx-runtime";const n=({children:n,onSelect:r,onUnselect:i,isSelecting:a,pressDuration:o,className:s,"aria-label":c,"aria-describedby":l})=>t(e,{onPress:r,onClickOutside:i,isSelecting:a,pressDuration:o,className:s,"aria-label":c,"aria-describedby":l,children:n});export{n as ContentSelector};
1
+ 'use client';
2
+
3
+ import { PressableSpan } from "../PressableSpan/PressableSpan.mjs";
4
+ import { jsx } from "react/jsx-runtime";
5
+
6
+ //#region src/components/ContentSelector/ContentSelector.tsx
7
+ /**
8
+ * ContentSelector - A higher-level wrapper around PressableSpan for content selection
9
+ *
10
+ * This component provides a semantic interface for making any content selectable through
11
+ * long press gestures. It's specifically designed for content management interfaces
12
+ * where users need to select text, images, or other elements to perform actions like
13
+ * editing, moving, or applying operations.
14
+ *
15
+ * ## Key Features
16
+ * - **Content Selection**: Makes any React content selectable via long press
17
+ * - **Visual Feedback**: Inherits outline-based selection indicators from PressableSpan
18
+ * - **Accessibility**: Full keyboard navigation and screen reader support
19
+ * - **Click Outside**: Automatic deselection when clicking elsewhere
20
+ * - **External Control**: Can be controlled externally for complex selection states
21
+ *
22
+ * ## Use Cases
23
+ * - Content management systems with inline editing
24
+ * - Text and media selection interfaces
25
+ * - Interactive documentation with selectable sections
26
+ * - Dashboard widgets with configurable content
27
+ * - Form builders with selectable form elements
28
+ *
29
+ * ## Accessibility
30
+ * - Inherits all accessibility features from PressableSpan
31
+ * - Keyboard navigation with Tab, Enter, Space, and Escape
32
+ * - Screen reader announcements for selection states
33
+ * - Focus management and proper ARIA attributes
34
+ *
35
+ * @example
36
+ * Basic content selection:
37
+ * ```tsx
38
+ * <ContentSelector onSelect={() => setIsEditing(true)}>
39
+ * <p>This paragraph becomes selectable</p>
40
+ * </ContentSelector>
41
+ * ```
42
+ *
43
+ * @example
44
+ * With deselection handling:
45
+ * ```tsx
46
+ * <ContentSelector
47
+ * onSelect={() => setSelectedContent(contentId)}
48
+ * onUnselect={() => setSelectedContent(null)}
49
+ * >
50
+ * <div className="content-block">
51
+ * <h2>Selectable Content Block</h2>
52
+ * <p>Long press to select this entire block</p>
53
+ * </div>
54
+ * </ContentSelector>
55
+ * ```
56
+ *
57
+ * @example
58
+ * Controlled selection state:
59
+ * ```tsx
60
+ * <ContentSelector
61
+ * isSelecting={selectedItems.includes(itemId)}
62
+ * onSelect={() => selectItem(itemId)}
63
+ * onUnselect={() => deselectItem(itemId)}
64
+ * >
65
+ * <ContentCard data={cardData} />
66
+ * </ContentSelector>
67
+ * ```
68
+ */
69
+ const ContentSelector = ({ children, onSelect, onUnselect, isSelecting, pressDuration, className, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy }) => /* @__PURE__ */ jsx(PressableSpan, {
70
+ onPress: onSelect,
71
+ onClickOutside: onUnselect,
72
+ isSelecting,
73
+ pressDuration,
74
+ className,
75
+ "aria-label": ariaLabel,
76
+ "aria-describedby": ariaDescribedBy,
77
+ children
78
+ });
79
+
80
+ //#endregion
81
+ export { ContentSelector };
2
82
  //# sourceMappingURL=ContentSelector.mjs.map