@intlayer/design-system 7.5.12 → 7.5.14

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 (366) hide show
  1. package/dist/esm/_virtual/rolldown_runtime.mjs +2 -2
  2. package/dist/esm/components/Accordion/Accordion.mjs +1 -1
  3. package/dist/esm/components/Accordion/Accordion.mjs.map +1 -1
  4. package/dist/esm/components/Avatar/index.mjs +1 -1
  5. package/dist/esm/components/Avatar/index.mjs.map +1 -1
  6. package/dist/esm/components/Badge/index.mjs.map +1 -1
  7. package/dist/esm/components/Breadcrumb/breadcrumb.content.mjs +2 -1
  8. package/dist/esm/components/Breadcrumb/breadcrumb.content.mjs.map +1 -1
  9. package/dist/esm/components/Breadcrumb/index.mjs +1 -1
  10. package/dist/esm/components/Breadcrumb/index.mjs.map +1 -1
  11. package/dist/esm/components/Browser/Browser.mjs +1 -1
  12. package/dist/esm/components/Browser/browser.content.mjs +16 -8
  13. package/dist/esm/components/Browser/browser.content.mjs.map +1 -1
  14. package/dist/esm/components/Button/Button.mjs.map +1 -1
  15. package/dist/esm/components/Carousel/index.content.mjs +25 -14
  16. package/dist/esm/components/Carousel/index.content.mjs.map +1 -1
  17. package/dist/esm/components/Carousel/index.mjs +1 -1
  18. package/dist/esm/components/Carousel/index.mjs.map +1 -1
  19. package/dist/esm/components/ClickOutsideDiv/index.mjs.map +1 -1
  20. package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs +1 -1
  21. package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs.map +1 -1
  22. package/dist/esm/components/Command/index.mjs.map +1 -1
  23. package/dist/esm/components/Container/index.mjs +5 -5
  24. package/dist/esm/components/Container/index.mjs.map +1 -1
  25. package/dist/esm/components/ContentEditor/ContentEditor.mjs +1 -1
  26. package/dist/esm/components/ContentEditor/ContentEditor.mjs.map +1 -1
  27. package/dist/esm/components/ContentEditor/ContentEditorInput.mjs +1 -1
  28. package/dist/esm/components/ContentEditor/ContentEditorInput.mjs.map +1 -1
  29. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +2 -2
  30. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs.map +1 -1
  31. package/dist/esm/components/ContentSelector/ContentSelector.mjs.map +1 -1
  32. package/dist/esm/components/CopyButton/CopyButton.content.mjs +2 -1
  33. package/dist/esm/components/CopyButton/CopyButton.content.mjs.map +1 -1
  34. package/dist/esm/components/CopyButton/index.mjs +1 -1
  35. package/dist/esm/components/CopyButton/index.mjs.map +1 -1
  36. package/dist/esm/components/CopyToClipboard/index.mjs +1 -1
  37. package/dist/esm/components/CopyToClipboard/index.mjs.map +1 -1
  38. package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs +1 -1
  39. package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs.map +1 -1
  40. package/dist/esm/components/DictionaryEditor/ItemLayout.mjs.map +1 -1
  41. package/dist/esm/components/DictionaryEditor/NodeWrapper/ArrayWrapper.mjs.map +1 -1
  42. package/dist/esm/components/DictionaryEditor/NodeWrapper/ConditionWrapper.mjs.map +1 -1
  43. package/dist/esm/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.mjs.map +1 -1
  44. package/dist/esm/components/DictionaryEditor/NodeWrapper/FileWrapper.mjs +1 -1
  45. package/dist/esm/components/DictionaryEditor/NodeWrapper/FileWrapper.mjs.map +1 -1
  46. package/dist/esm/components/DictionaryEditor/NodeWrapper/InsertionWrapper.mjs.map +1 -1
  47. package/dist/esm/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.mjs.map +1 -1
  48. package/dist/esm/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs.map +1 -1
  49. package/dist/esm/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs +1 -1
  50. package/dist/esm/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs.map +1 -1
  51. package/dist/esm/components/DictionaryEditor/NodeWrapper/TranslationWrapper.mjs.map +1 -1
  52. package/dist/esm/components/DictionaryEditor/NodeWrapper/index.mjs +1 -1
  53. package/dist/esm/components/DictionaryEditor/NodeWrapper/index.mjs.map +1 -1
  54. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs +1 -1
  55. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs.map +1 -1
  56. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +3 -3
  57. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
  58. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +1 -1
  59. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs.map +1 -1
  60. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs +24 -12
  61. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs.map +1 -1
  62. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.mjs +8 -4
  63. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.mjs.map +1 -1
  64. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +4 -4
  65. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
  66. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs +32 -16
  67. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs.map +1 -1
  68. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.mjs +24 -12
  69. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.mjs.map +1 -1
  70. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +2 -2
  71. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
  72. package/dist/esm/components/DictionaryFieldEditor/EnumKeyInput.mjs.map +1 -1
  73. package/dist/esm/components/DictionaryFieldEditor/JSONEditor.mjs +1 -1
  74. package/dist/esm/components/DictionaryFieldEditor/JSONEditor.mjs.map +1 -1
  75. package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs.map +1 -1
  76. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +2 -2
  77. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
  78. package/dist/esm/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs +24 -12
  79. package/dist/esm/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs.map +1 -1
  80. package/dist/esm/components/DictionaryFieldEditor/NodeTypeSelector.mjs.map +1 -1
  81. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +6 -5
  82. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
  83. package/dist/esm/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs +32 -16
  84. package/dist/esm/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs.map +1 -1
  85. package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs +1 -1
  86. package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs.map +1 -1
  87. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs +1 -1
  88. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs.map +1 -1
  89. package/dist/esm/components/DictionaryFieldEditor/StructureView/structureView.content.mjs +8 -4
  90. package/dist/esm/components/DictionaryFieldEditor/StructureView/structureView.content.mjs.map +1 -1
  91. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs.map +1 -1
  92. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.mjs.map +1 -1
  93. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.mjs +6 -3
  94. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.mjs.map +1 -1
  95. package/dist/esm/components/DictionaryFieldEditor/dictionaryFieldEditor.content.mjs +4 -2
  96. package/dist/esm/components/DictionaryFieldEditor/dictionaryFieldEditor.content.mjs.map +1 -1
  97. package/dist/esm/components/DictionaryFieldEditor/nodeTypeSelector.content.mjs +30 -15
  98. package/dist/esm/components/DictionaryFieldEditor/nodeTypeSelector.content.mjs.map +1 -1
  99. package/dist/esm/components/DropDown/index.mjs.map +1 -1
  100. package/dist/esm/components/EditableField/EditableFieldInput.mjs.map +1 -1
  101. package/dist/esm/components/EditableField/EditableFieldLayout.mjs +1 -1
  102. package/dist/esm/components/EditableField/EditableFieldLayout.mjs.map +1 -1
  103. package/dist/esm/components/EditableField/EditableFieldTextArea.mjs.map +1 -1
  104. package/dist/esm/components/ExpandCollapse/ExpandCollapse.mjs.map +1 -1
  105. package/dist/esm/components/ExpandCollapse/expandCollapse.content.mjs +4 -2
  106. package/dist/esm/components/ExpandCollapse/expandCollapse.content.mjs.map +1 -1
  107. package/dist/esm/components/Flags/Flag.mjs.map +1 -1
  108. package/dist/esm/components/Flags/flags.mjs +2 -2
  109. package/dist/esm/components/Footer/index.mjs.map +1 -1
  110. package/dist/esm/components/Form/FormControl.mjs.map +1 -1
  111. package/dist/esm/components/Form/FormDescription.mjs.map +1 -1
  112. package/dist/esm/components/Form/FormItem.mjs.map +1 -1
  113. package/dist/esm/components/Form/FormLabel.mjs.map +1 -1
  114. package/dist/esm/components/Form/FormMessage.mjs.map +1 -1
  115. package/dist/esm/components/Form/elements/AutoSizeTextAreaElement.mjs.map +1 -1
  116. package/dist/esm/components/Form/elements/CheckboxElement.mjs.map +1 -1
  117. package/dist/esm/components/Form/elements/FormElementWrapper.mjs.map +1 -1
  118. package/dist/esm/components/Form/elements/InputElement.mjs.map +1 -1
  119. package/dist/esm/components/Form/elements/InputPasswordElement.mjs.map +1 -1
  120. package/dist/esm/components/Form/elements/OTPElement.mjs +1 -1
  121. package/dist/esm/components/Form/elements/SearchInputElement.mjs.map +1 -1
  122. package/dist/esm/components/Form/elements/TextAreaElement.mjs.map +1 -1
  123. package/dist/esm/components/Form/layout/FormItemLayout.mjs.map +1 -1
  124. package/dist/esm/components/Form/layout/FormLabelLayout.mjs.map +1 -1
  125. package/dist/esm/components/Form/layout/RequiredStar.mjs.map +1 -1
  126. package/dist/esm/components/Headers/index.mjs.map +1 -1
  127. package/dist/esm/components/HeightResizer/index.mjs.map +1 -1
  128. package/dist/esm/components/HideShow/index.mjs +1 -1
  129. package/dist/esm/components/HideShow/index.mjs.map +1 -1
  130. package/dist/esm/components/IDE/Code.mjs.map +1 -1
  131. package/dist/esm/components/IDE/CodeBlockClient.mjs.map +1 -1
  132. package/dist/esm/components/IDE/CodeBlockServer.mjs.map +1 -1
  133. package/dist/esm/components/IDE/CodeBlockShiki.mjs.map +1 -1
  134. package/dist/esm/components/IDE/CodeConditionalRenderer.mjs.map +1 -1
  135. package/dist/esm/components/IDE/CodeContext.mjs.map +1 -1
  136. package/dist/esm/components/IDE/CodeFormatSelector.mjs.map +1 -1
  137. package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs.map +1 -1
  138. package/dist/esm/components/IDE/CopyCode.mjs.map +1 -1
  139. package/dist/esm/components/IDE/FileList.mjs.map +1 -1
  140. package/dist/esm/components/IDE/FileTree.mjs +1 -1
  141. package/dist/esm/components/IDE/FileTree.mjs.map +1 -1
  142. package/dist/esm/components/IDE/IDE.mjs.map +1 -1
  143. package/dist/esm/components/IDE/MarkDownRender.mjs.map +1 -1
  144. package/dist/esm/components/IDE/MonacoCode.mjs.map +1 -1
  145. package/dist/esm/components/IDE/PackageManagerSelector.mjs.map +1 -1
  146. package/dist/esm/components/IDE/code.content.mjs +4 -2
  147. package/dist/esm/components/IDE/code.content.mjs.map +1 -1
  148. package/dist/esm/components/IDE/copyCode.content.mjs +4 -2
  149. package/dist/esm/components/IDE/copyCode.content.mjs.map +1 -1
  150. package/dist/esm/components/IDE/createFileTree.mjs.map +1 -1
  151. package/dist/esm/components/IDE/selectors.content.mjs +12 -6
  152. package/dist/esm/components/IDE/selectors.content.mjs.map +1 -1
  153. package/dist/esm/components/InformationTag/index.mjs.map +1 -1
  154. package/dist/esm/components/Input/Checkbox.mjs.map +1 -1
  155. package/dist/esm/components/Input/Input.mjs.map +1 -1
  156. package/dist/esm/components/Input/InputPassword.mjs +1 -1
  157. package/dist/esm/components/Input/InputPassword.mjs.map +1 -1
  158. package/dist/esm/components/Input/OTPInput.mjs +1 -1
  159. package/dist/esm/components/Input/OTPInput.mjs.map +1 -1
  160. package/dist/esm/components/KeyboardScreenAdapter/index.mjs +1 -1
  161. package/dist/esm/components/KeyboardScreenAdapter/index.mjs.map +1 -1
  162. package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs +1 -1
  163. package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs.map +1 -1
  164. package/dist/esm/components/Label/index.mjs.map +1 -1
  165. package/dist/esm/components/LanguageBackground/index.mjs.map +1 -1
  166. package/dist/esm/components/Link/Link.mjs +1 -1
  167. package/dist/esm/components/Link/Link.mjs.map +1 -1
  168. package/dist/esm/components/Loader/index.content.mjs +2 -1
  169. package/dist/esm/components/Loader/index.content.mjs.map +1 -1
  170. package/dist/esm/components/Loader/index.mjs.map +1 -1
  171. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +2 -2
  172. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs.map +1 -1
  173. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs.map +1 -1
  174. package/dist/esm/components/LocaleSwitcherContentDropDown/localeSwitcher.content.mjs +16 -8
  175. package/dist/esm/components/LocaleSwitcherContentDropDown/localeSwitcher.content.mjs.map +1 -1
  176. package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs +1 -1
  177. package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs.map +1 -1
  178. package/dist/esm/components/LocaleSwitcherDropDown/localeSwitcher.content.mjs +12 -6
  179. package/dist/esm/components/LocaleSwitcherDropDown/localeSwitcher.content.mjs.map +1 -1
  180. package/dist/esm/components/Logo/Logo.mjs.map +1 -1
  181. package/dist/esm/components/Logo/LogoTextOnly.mjs.map +1 -1
  182. package/dist/esm/components/Logo/LogoWithText.mjs.map +1 -1
  183. package/dist/esm/components/Logo/LogoWithTextBelow.mjs.map +1 -1
  184. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
  185. package/dist/esm/components/MarkDownRender/processor.mjs.map +1 -1
  186. package/dist/esm/components/MaxHeightSmoother/index.mjs.map +1 -1
  187. package/dist/esm/components/Modal/Modal.mjs +4 -4
  188. package/dist/esm/components/Modal/Modal.mjs.map +1 -1
  189. package/dist/esm/components/Navbar/MobileNavbar.mjs +2 -2
  190. package/dist/esm/components/Navbar/MobileNavbar.mjs.map +1 -1
  191. package/dist/esm/components/Navbar/useNavigation.mjs.map +1 -1
  192. package/dist/esm/components/Pagination/NumberItemsSelector.mjs.map +1 -1
  193. package/dist/esm/components/Pagination/Pagination.mjs +2 -2
  194. package/dist/esm/components/Pagination/Pagination.mjs.map +1 -1
  195. package/dist/esm/components/Pagination/ShowingResultsNumberItems.mjs.map +1 -1
  196. package/dist/esm/components/Pagination/pagination.content.mjs +9 -4
  197. package/dist/esm/components/Pagination/pagination.content.mjs.map +1 -1
  198. package/dist/esm/components/Pattern/DotPattern.mjs.map +1 -1
  199. package/dist/esm/components/Pattern/GridPattern.mjs.map +1 -1
  200. package/dist/esm/components/Pattern/SpotLight.mjs.map +1 -1
  201. package/dist/esm/components/Popover/dynamic.mjs.map +1 -1
  202. package/dist/esm/components/Popover/static.mjs.map +1 -1
  203. package/dist/esm/components/PressableSpan/PressableSpan.mjs.map +1 -1
  204. package/dist/esm/components/RightDrawer/RightDrawer.mjs +3 -3
  205. package/dist/esm/components/RightDrawer/RightDrawer.mjs.map +1 -1
  206. package/dist/esm/components/RightDrawer/rightDrawer.content.mjs +13 -3
  207. package/dist/esm/components/RightDrawer/rightDrawer.content.mjs.map +1 -1
  208. package/dist/esm/components/Select/Multiselect.mjs +1 -1
  209. package/dist/esm/components/Select/Multiselect.mjs.map +1 -1
  210. package/dist/esm/components/Select/Select.mjs.map +1 -1
  211. package/dist/esm/components/SocialNetworks/DiscordLogo.mjs.map +1 -1
  212. package/dist/esm/components/SocialNetworks/FacebookLogo.mjs.map +1 -1
  213. package/dist/esm/components/SocialNetworks/InstagramLogo.mjs.map +1 -1
  214. package/dist/esm/components/SocialNetworks/LinkedInLogo.mjs.map +1 -1
  215. package/dist/esm/components/SocialNetworks/ProductHuntLogo.mjs.map +1 -1
  216. package/dist/esm/components/SocialNetworks/TiktokLogo.mjs.map +1 -1
  217. package/dist/esm/components/SocialNetworks/XLogo.mjs.map +1 -1
  218. package/dist/esm/components/SocialNetworks/YoutubeLogo.mjs.map +1 -1
  219. package/dist/esm/components/SocialNetworks/index.mjs.map +1 -1
  220. package/dist/esm/components/SwitchSelector/index.mjs +1 -1
  221. package/dist/esm/components/SwitchSelector/index.mjs.map +1 -1
  222. package/dist/esm/components/Tab/Tab.mjs +1 -1
  223. package/dist/esm/components/Tab/Tab.mjs.map +1 -1
  224. package/dist/esm/components/Tab/TabContext.mjs.map +1 -1
  225. package/dist/esm/components/TabSelector/TabSelector.mjs +1 -1
  226. package/dist/esm/components/Table/Table.mjs +1 -1
  227. package/dist/esm/components/Table/Table.mjs.map +1 -1
  228. package/dist/esm/components/Table/table.content.mjs +2 -1
  229. package/dist/esm/components/Table/table.content.mjs.map +1 -1
  230. package/dist/esm/components/Tag/index.mjs.map +1 -1
  231. package/dist/esm/components/Terminal/Terminal.mjs.map +1 -1
  232. package/dist/esm/components/Terminal/terminal.content.mjs +14 -3
  233. package/dist/esm/components/Terminal/terminal.content.mjs.map +1 -1
  234. package/dist/esm/components/TextArea/AutoSizeTextArea.mjs.map +1 -1
  235. package/dist/esm/components/TextArea/AutocompleteTextArea.mjs +1 -1
  236. package/dist/esm/components/TextArea/AutocompleteTextArea.mjs.map +1 -1
  237. package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
  238. package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs +1 -1
  239. package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs.map +1 -1
  240. package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs +1 -1
  241. package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs.map +1 -1
  242. package/dist/esm/components/Toaster/Toast.mjs +2 -2
  243. package/dist/esm/components/Toaster/Toast.mjs.map +1 -1
  244. package/dist/esm/components/Toaster/useToast.mjs.map +1 -1
  245. package/dist/esm/components/WithResizer/index.mjs.map +1 -1
  246. package/dist/esm/components/index.mjs +3 -3
  247. package/dist/esm/dist/esm/components/Container/index.mjs +5 -5
  248. package/dist/esm/dist/esm/components/Container/index.mjs.map +1 -1
  249. package/dist/esm/hooks/index.mjs +5 -5
  250. package/dist/esm/hooks/useHorizontalSwipe.mjs.map +1 -1
  251. package/dist/esm/hooks/useItemSelector.mjs.map +1 -1
  252. package/dist/esm/hooks/usePersistedStore.mjs.map +1 -1
  253. package/dist/esm/hooks/useScrollY.mjs.map +1 -1
  254. package/dist/esm/libs/auth.mjs.map +1 -1
  255. package/dist/esm/providers/ReactQueryProvider.mjs +1 -1
  256. package/dist/esm/providers/ReactQueryProvider.mjs.map +1 -1
  257. package/dist/esm/utils/object.mjs.map +1 -1
  258. package/dist/types/components/Badge/index.d.ts +2 -2
  259. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +5 -3
  260. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts.map +1 -1
  261. package/dist/types/components/Breadcrumb/index.d.ts +2 -2
  262. package/dist/types/components/Browser/Browser.d.ts +2 -2
  263. package/dist/types/components/Browser/Browser.d.ts.map +1 -1
  264. package/dist/types/components/Browser/browser.content.d.ts +33 -17
  265. package/dist/types/components/Browser/browser.content.d.ts.map +1 -1
  266. package/dist/types/components/Button/Button.d.ts +6 -6
  267. package/dist/types/components/Button/Button.d.ts.map +1 -1
  268. package/dist/types/components/Carousel/index.content.d.ts +37 -28
  269. package/dist/types/components/Carousel/index.content.d.ts.map +1 -1
  270. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +2 -2
  271. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts.map +1 -1
  272. package/dist/types/components/Command/index.d.ts +17 -17
  273. package/dist/types/components/Command/index.d.ts.map +1 -1
  274. package/dist/types/components/Container/index.d.ts +7 -7
  275. package/dist/types/components/Container/index.d.ts.map +1 -1
  276. package/dist/types/components/CopyButton/CopyButton.content.d.ts +5 -3
  277. package/dist/types/components/CopyButton/CopyButton.content.d.ts.map +1 -1
  278. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +49 -25
  279. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +17 -9
  280. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts.map +1 -1
  281. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +65 -33
  282. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +49 -25
  283. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts.map +1 -1
  284. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +49 -25
  285. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts.map +1 -1
  286. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +65 -33
  287. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +17 -9
  288. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts +13 -7
  289. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts.map +1 -1
  290. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +9 -5
  291. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +61 -31
  292. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts.map +1 -1
  293. package/dist/types/components/EditableField/EditableFieldInput.d.ts.map +1 -1
  294. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts +6 -4
  295. package/dist/types/components/Form/FormBase.d.ts +2 -2
  296. package/dist/types/components/Form/FormField.d.ts +2 -2
  297. package/dist/types/components/Form/FormItem.d.ts +2 -2
  298. package/dist/types/components/Form/FormItem.d.ts.map +1 -1
  299. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts +2 -2
  300. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts +2 -2
  301. package/dist/types/components/Form/elements/FormElement.d.ts +2 -2
  302. package/dist/types/components/Form/elements/MultiselectElement.d.ts +2 -2
  303. package/dist/types/components/Form/elements/OTPElement.d.ts +2 -2
  304. package/dist/types/components/Form/elements/SelectElement.d.ts +2 -2
  305. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts +2 -2
  306. package/dist/types/components/IDE/CodeContext.d.ts +2 -2
  307. package/dist/types/components/IDE/CodeContext.d.ts.map +1 -1
  308. package/dist/types/components/IDE/FileTree.d.ts.map +1 -1
  309. package/dist/types/components/IDE/code.content.d.ts +9 -5
  310. package/dist/types/components/IDE/code.content.d.ts.map +1 -1
  311. package/dist/types/components/IDE/copyCode.content.d.ts +9 -5
  312. package/dist/types/components/IDE/copyCode.content.d.ts.map +1 -1
  313. package/dist/types/components/IDE/selectors.content.d.ts +25 -13
  314. package/dist/types/components/IDE/selectors.content.d.ts.map +1 -1
  315. package/dist/types/components/Input/Checkbox.d.ts +3 -3
  316. package/dist/types/components/Input/Checkbox.d.ts.map +1 -1
  317. package/dist/types/components/Input/Input.d.ts +2 -2
  318. package/dist/types/components/Input/OTPInput.d.ts +6 -6
  319. package/dist/types/components/Input/OTPInput.d.ts.map +1 -1
  320. package/dist/types/components/Input/SearchInput.d.ts +2 -2
  321. package/dist/types/components/Link/Link.d.ts +5 -5
  322. package/dist/types/components/Link/Link.d.ts.map +1 -1
  323. package/dist/types/components/Loader/index.content.d.ts +5 -3
  324. package/dist/types/components/Loader/index.content.d.ts.map +1 -1
  325. package/dist/types/components/Loader/spinner.d.ts +2 -2
  326. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +33 -17
  327. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts.map +1 -1
  328. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +25 -13
  329. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts.map +1 -1
  330. package/dist/types/components/MaxWidthSmoother/index.d.ts +2 -2
  331. package/dist/types/components/MaxWidthSmoother/index.d.ts.map +1 -1
  332. package/dist/types/components/Modal/Modal.d.ts +1 -1
  333. package/dist/types/components/Modal/Modal.d.ts.map +1 -1
  334. package/dist/types/components/Navbar/Burger.d.ts +2 -2
  335. package/dist/types/components/Navbar/Burger.d.ts.map +1 -1
  336. package/dist/types/components/Navbar/DesktopNavbar.d.ts +2 -2
  337. package/dist/types/components/Navbar/DesktopNavbar.d.ts.map +1 -1
  338. package/dist/types/components/Navbar/MobileNavbar.d.ts +2 -2
  339. package/dist/types/components/Navbar/MobileNavbar.d.ts.map +1 -1
  340. package/dist/types/components/Pagination/Pagination.d.ts +4 -4
  341. package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
  342. package/dist/types/components/Pagination/pagination.content.d.ts +21 -11
  343. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts +12 -5
  344. package/dist/types/components/RightDrawer/rightDrawer.content.d.ts.map +1 -1
  345. package/dist/types/components/Select/Select.d.ts +3 -3
  346. package/dist/types/components/SocialNetworks/index.d.ts +2 -2
  347. package/dist/types/components/SocialNetworks/index.d.ts.map +1 -1
  348. package/dist/types/components/SwitchSelector/index.d.ts +6 -6
  349. package/dist/types/components/SwitchSelector/index.d.ts.map +1 -1
  350. package/dist/types/components/Tab/Tab.d.ts +6 -6
  351. package/dist/types/components/Tab/Tab.d.ts.map +1 -1
  352. package/dist/types/components/Tab/TabContext.d.ts +2 -2
  353. package/dist/types/components/Tab/TabContext.d.ts.map +1 -1
  354. package/dist/types/components/TabSelector/TabSelector.d.ts +5 -5
  355. package/dist/types/components/TabSelector/TabSelector.d.ts.map +1 -1
  356. package/dist/types/components/Table/table.content.d.ts +5 -3
  357. package/dist/types/components/Table/table.content.d.ts.map +1 -1
  358. package/dist/types/components/Tag/index.d.ts +5 -5
  359. package/dist/types/components/Tag/index.d.ts.map +1 -1
  360. package/dist/types/components/Terminal/terminal.content.d.ts +12 -5
  361. package/dist/types/components/Terminal/terminal.content.d.ts.map +1 -1
  362. package/dist/types/components/Toaster/Toast.d.ts +2 -2
  363. package/dist/types/components/Toaster/Toast.d.ts.map +1 -1
  364. package/dist/types/components/Toaster/Toaster.d.ts +2 -2
  365. package/dist/types/components/Toaster/Toaster.d.ts.map +1 -1
  366. package/package.json +31 -31
@@ -1 +1 @@
1
- {"version":3,"file":"StructureView.mjs","names":["NodeTypeView: FC<NodeTypeViewProps>","nodeType","NodeView: FC<NodeWrapperProps>","prevKeyPath: KeyPath[]","lastKeyPath: KeyPath","ObjectView: FC<ObjectViewProps>","StructureView: FC<StructureViewProps>"],"sources":["../../../../../src/components/DictionaryFieldEditor/StructureView/StructureView.tsx"],"sourcesContent":["'use client';\n\nimport {\n Button,\n ButtonColor,\n ButtonSize,\n ButtonVariant,\n} from '@components/Button';\nimport { Container } from '@components/Container';\nimport { EditableFieldInput } from '@components/EditableField';\nimport { InputVariant } from '@components/Input';\nimport { camelCaseToSentence } from '@intlayer/config/client';\nimport {\n getDefaultNode,\n getNodeChildren,\n getNodeType,\n isSameKeyPath,\n} from '@intlayer/core';\nimport {\n useConfiguration,\n useEditedContentActions,\n useFocusUnmergedDictionary,\n} from '@intlayer/editor-react';\nimport {\n type KeyPath,\n type LocalDictionaryId,\n NodeType,\n type TypedNode,\n} from '@intlayer/types';\nimport type { ContentNode } from 'intlayer';\nimport { Plus, Trash } from 'lucide-react';\nimport type { FC } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { NodeTypeSelector } from '../NodeTypeSelector';\n\ntype NodeTypeViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n onNodeTypeChange: (content?: ContentNode) => void;\n};\n\nconst NodeTypeView: FC<NodeTypeViewProps> = ({\n section,\n dictionaryLocalId,\n keyPath,\n onNodeTypeChange: onNodeTypeChangeProp,\n}) => {\n const locales = useConfiguration()?.internationalization.locales ?? [];\n const nodeType = getNodeType(section);\n const children = getNodeChildren(section);\n\n const onNodeTypeChange = (content?: ContentNode) => {\n const transformedContent = getDefaultNode(\n nodeType,\n locales,\n content\n ) as ContentNode;\n\n onNodeTypeChangeProp(transformedContent);\n };\n\n if (\n nodeType === NodeType.Translation ||\n nodeType === NodeType.Condition ||\n nodeType === NodeType.Gender ||\n nodeType === NodeType.Enumeration\n ) {\n const firstKey = Object.keys(\n (section as unknown as TypedNode)[nodeType as keyof typeof section]\n )[0];\n const childrenKeyPath = [\n ...keyPath,\n { type: nodeType, key: firstKey },\n ] as KeyPath[];\n\n return (\n <div className=\"flex w-full flex-col gap-1\">\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n\n <NodeTypeView\n section={children}\n keyPath={childrenKeyPath}\n dictionaryLocalId={dictionaryLocalId}\n onNodeTypeChange={onNodeTypeChange}\n />\n </div>\n );\n }\n\n if (nodeType === NodeType.Array) {\n const childrenKeyPath = [...keyPath, { type: nodeType, key: 0 } as KeyPath];\n return (\n <div className=\"flex w-full flex-col gap-1\">\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n\n <NodeTypeView\n section={children}\n keyPath={childrenKeyPath}\n dictionaryLocalId={dictionaryLocalId}\n onNodeTypeChange={onNodeTypeChange}\n />\n </div>\n );\n }\n\n if (nodeType === NodeType.Object) {\n return (\n <>\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n <div className=\"mt-6 ml-10\">\n <StructureView\n keyPath={keyPath}\n section={section}\n dictionaryLocalId={dictionaryLocalId}\n />\n </div>\n </>\n );\n }\n\n return (\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(getDefaultNode(nodeType, locales) as ContentNode)\n }\n />\n );\n};\n\ntype NodeWrapperProps = {\n sectionKey?: string;\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const NodeView: FC<NodeWrapperProps> = ({\n sectionKey,\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n const { focusedContent, setFocusedContentKeyPath } =\n useFocusUnmergedDictionary();\n const { renameEditedContent, addEditedContent } = useEditedContentActions();\n\n const { titleInput, deleteButton } = useIntlayer('structure-view');\n\n const handleRenameNodeKey = (keyName: string) => {\n renameEditedContent(dictionaryLocalId, keyName, keyPath);\n const prevKeyPath: KeyPath[] = keyPath.slice(0, -1);\n const lastKeyPath: KeyPath = keyPath[keyPath.length - 1];\n const newKeyPath: KeyPath[] = [\n ...prevKeyPath,\n { ...lastKeyPath, key: keyName } as KeyPath,\n ];\n setFocusedContentKeyPath(newKeyPath);\n };\n\n return (\n <Container\n transparency=\"xl\"\n roundedSize=\"xl\"\n className=\"w-full min-w-80 gap-2 overflow-auto px-5 py-2\"\n border\n borderColor=\"text\"\n background=\"none\"\n aria-selected={isSameKeyPath(keyPath, focusedContent?.keyPath ?? [])}\n onClick={() => setFocusedContentKeyPath(keyPath)}\n >\n <div className=\"flex w-full flex-col items-start justify-between gap-3\">\n {typeof sectionKey === 'string' && (\n <div className=\"w-full\">\n <div className=\"flex w-full items-center justify-between gap-10\">\n <EditableFieldInput\n name=\"key\"\n aria-label=\"Key\"\n placeholder={titleInput.placeholder.value}\n defaultValue={sectionKey}\n onSave={(value) => handleRenameNodeKey(value)}\n variant={InputVariant.INVISIBLE}\n />\n <Button\n label={deleteButton.label.value}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n className=\"translate-x-2\"\n Icon={Trash}\n onClick={() => {\n addEditedContent(dictionaryLocalId, undefined, keyPath);\n\n const parentKeyPath: KeyPath[] = keyPath.slice(0, -1);\n setFocusedContentKeyPath(parentKeyPath);\n }}\n />\n </div>\n\n <span className=\"ml-3 text-neutral text-sm\">\n ( {camelCaseToSentence(sectionKey)} )\n </span>\n </div>\n )}\n <NodeTypeView\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n section={section}\n onNodeTypeChange={(content) => {\n addEditedContent(dictionaryLocalId, content, keyPath);\n }}\n />\n </div>\n </Container>\n );\n};\n\ntype ObjectViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const ObjectView: FC<ObjectViewProps> = ({\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n const { addNodeButton } = useIntlayer('structure-view');\n const { setFocusedContentKeyPath } = useFocusUnmergedDictionary();\n const { addEditedContent } = useEditedContentActions();\n\n if (!section || typeof section !== 'object') {\n return <div>Not an object</div>;\n }\n\n return (\n <div className=\"flex flex-col gap-2 overflow-y-auto\">\n <ul className=\"mr-auto flex flex-col gap-4\">\n {Object.keys(section).map((key) => (\n <li\n key={`${JSON.stringify(keyPath)}-object-${key}`}\n className=\"flex w-full\"\n >\n <NodeView\n sectionKey={key}\n section={section?.[key as keyof typeof section]}\n keyPath={[...keyPath, { type: NodeType.Object, key }]}\n dictionaryLocalId={dictionaryLocalId}\n />\n </li>\n ))}\n </ul>\n <Button\n label={addNodeButton.label.value}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.MD}\n color={ButtonColor.TEXT}\n Icon={Plus}\n className=\"flex-1\"\n onClick={() => {\n const newKey = 'newKey';\n const newKeyPath = [\n ...keyPath,\n { type: NodeType.Object, key: newKey },\n ] as KeyPath[];\n addEditedContent(dictionaryLocalId, '', newKeyPath);\n setFocusedContentKeyPath(newKeyPath);\n }}\n >\n {addNodeButton.text}\n </Button>\n </div>\n );\n};\n\ntype StructureViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const StructureView: FC<StructureViewProps> = ({\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n if (\n !section ||\n typeof section !== 'object' ||\n typeof section.nodeType === 'string'\n ) {\n return (\n <NodeView\n sectionKey={'content'}\n section={section}\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n />\n );\n }\n\n return (\n <ObjectView\n section={section}\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n />\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"StructureView.mjs","names":["nodeType"],"sources":["../../../../../src/components/DictionaryFieldEditor/StructureView/StructureView.tsx"],"sourcesContent":["'use client';\n\nimport {\n Button,\n ButtonColor,\n ButtonSize,\n ButtonVariant,\n} from '@components/Button';\nimport { Container } from '@components/Container';\nimport { EditableFieldInput } from '@components/EditableField';\nimport { InputVariant } from '@components/Input';\nimport { camelCaseToSentence } from '@intlayer/config/client';\nimport {\n getDefaultNode,\n getNodeChildren,\n getNodeType,\n isSameKeyPath,\n} from '@intlayer/core';\nimport {\n useConfiguration,\n useEditedContentActions,\n useFocusUnmergedDictionary,\n} from '@intlayer/editor-react';\nimport {\n type KeyPath,\n type LocalDictionaryId,\n NodeType,\n type TypedNode,\n} from '@intlayer/types';\nimport type { ContentNode } from 'intlayer';\nimport { Plus, Trash } from 'lucide-react';\nimport type { FC } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { NodeTypeSelector } from '../NodeTypeSelector';\n\ntype NodeTypeViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n onNodeTypeChange: (content?: ContentNode) => void;\n};\n\nconst NodeTypeView: FC<NodeTypeViewProps> = ({\n section,\n dictionaryLocalId,\n keyPath,\n onNodeTypeChange: onNodeTypeChangeProp,\n}) => {\n const locales = useConfiguration()?.internationalization.locales ?? [];\n const nodeType = getNodeType(section);\n const children = getNodeChildren(section);\n\n const onNodeTypeChange = (content?: ContentNode) => {\n const transformedContent = getDefaultNode(\n nodeType,\n locales,\n content\n ) as ContentNode;\n\n onNodeTypeChangeProp(transformedContent);\n };\n\n if (\n nodeType === NodeType.Translation ||\n nodeType === NodeType.Condition ||\n nodeType === NodeType.Gender ||\n nodeType === NodeType.Enumeration\n ) {\n const firstKey = Object.keys(\n (section as unknown as TypedNode)[nodeType as keyof typeof section]\n )[0];\n const childrenKeyPath = [\n ...keyPath,\n { type: nodeType, key: firstKey },\n ] as KeyPath[];\n\n return (\n <div className=\"flex w-full flex-col gap-1\">\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n\n <NodeTypeView\n section={children}\n keyPath={childrenKeyPath}\n dictionaryLocalId={dictionaryLocalId}\n onNodeTypeChange={onNodeTypeChange}\n />\n </div>\n );\n }\n\n if (nodeType === NodeType.Array) {\n const childrenKeyPath = [...keyPath, { type: nodeType, key: 0 } as KeyPath];\n return (\n <div className=\"flex w-full flex-col gap-1\">\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n\n <NodeTypeView\n section={children}\n keyPath={childrenKeyPath}\n dictionaryLocalId={dictionaryLocalId}\n onNodeTypeChange={onNodeTypeChange}\n />\n </div>\n );\n }\n\n if (nodeType === NodeType.Object) {\n return (\n <>\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n <div className=\"mt-6 ml-10\">\n <StructureView\n keyPath={keyPath}\n section={section}\n dictionaryLocalId={dictionaryLocalId}\n />\n </div>\n </>\n );\n }\n\n return (\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(getDefaultNode(nodeType, locales) as ContentNode)\n }\n />\n );\n};\n\ntype NodeWrapperProps = {\n sectionKey?: string;\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const NodeView: FC<NodeWrapperProps> = ({\n sectionKey,\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n const { focusedContent, setFocusedContentKeyPath } =\n useFocusUnmergedDictionary();\n const { renameEditedContent, addEditedContent } = useEditedContentActions();\n\n const { titleInput, deleteButton } = useIntlayer('structure-view');\n\n const handleRenameNodeKey = (keyName: string) => {\n renameEditedContent(dictionaryLocalId, keyName, keyPath);\n const prevKeyPath: KeyPath[] = keyPath.slice(0, -1);\n const lastKeyPath: KeyPath = keyPath[keyPath.length - 1];\n const newKeyPath: KeyPath[] = [\n ...prevKeyPath,\n { ...lastKeyPath, key: keyName } as KeyPath,\n ];\n setFocusedContentKeyPath(newKeyPath);\n };\n\n return (\n <Container\n transparency=\"xl\"\n roundedSize=\"xl\"\n className=\"w-full min-w-80 gap-2 overflow-auto px-5 py-2\"\n border\n borderColor=\"text\"\n background=\"none\"\n aria-selected={isSameKeyPath(keyPath, focusedContent?.keyPath ?? [])}\n onClick={() => setFocusedContentKeyPath(keyPath)}\n >\n <div className=\"flex w-full flex-col items-start justify-between gap-3\">\n {typeof sectionKey === 'string' && (\n <div className=\"w-full\">\n <div className=\"flex w-full items-center justify-between gap-10\">\n <EditableFieldInput\n name=\"key\"\n aria-label=\"Key\"\n placeholder={titleInput.placeholder.value}\n defaultValue={sectionKey}\n onSave={(value) => handleRenameNodeKey(value)}\n variant={InputVariant.INVISIBLE}\n />\n <Button\n label={deleteButton.label.value}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n className=\"translate-x-2\"\n Icon={Trash}\n onClick={() => {\n addEditedContent(dictionaryLocalId, undefined, keyPath);\n\n const parentKeyPath: KeyPath[] = keyPath.slice(0, -1);\n setFocusedContentKeyPath(parentKeyPath);\n }}\n />\n </div>\n\n <span className=\"ml-3 text-neutral text-sm\">\n ( {camelCaseToSentence(sectionKey)} )\n </span>\n </div>\n )}\n <NodeTypeView\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n section={section}\n onNodeTypeChange={(content) => {\n addEditedContent(dictionaryLocalId, content, keyPath);\n }}\n />\n </div>\n </Container>\n );\n};\n\ntype ObjectViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const ObjectView: FC<ObjectViewProps> = ({\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n const { addNodeButton } = useIntlayer('structure-view');\n const { setFocusedContentKeyPath } = useFocusUnmergedDictionary();\n const { addEditedContent } = useEditedContentActions();\n\n if (!section || typeof section !== 'object') {\n return <div>Not an object</div>;\n }\n\n return (\n <div className=\"flex flex-col gap-2 overflow-y-auto\">\n <ul className=\"mr-auto flex flex-col gap-4\">\n {Object.keys(section).map((key) => (\n <li\n key={`${JSON.stringify(keyPath)}-object-${key}`}\n className=\"flex w-full\"\n >\n <NodeView\n sectionKey={key}\n section={section?.[key as keyof typeof section]}\n keyPath={[...keyPath, { type: NodeType.Object, key }]}\n dictionaryLocalId={dictionaryLocalId}\n />\n </li>\n ))}\n </ul>\n <Button\n label={addNodeButton.label.value}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.MD}\n color={ButtonColor.TEXT}\n Icon={Plus}\n className=\"flex-1\"\n onClick={() => {\n const newKey = 'newKey';\n const newKeyPath = [\n ...keyPath,\n { type: NodeType.Object, key: newKey },\n ] as KeyPath[];\n addEditedContent(dictionaryLocalId, '', newKeyPath);\n setFocusedContentKeyPath(newKeyPath);\n }}\n >\n {addNodeButton.text}\n </Button>\n </div>\n );\n};\n\ntype StructureViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const StructureView: FC<StructureViewProps> = ({\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n if (\n !section ||\n typeof section !== 'object' ||\n typeof section.nodeType === 'string'\n ) {\n return (\n <NodeView\n sectionKey={'content'}\n section={section}\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n />\n );\n }\n\n return (\n <ObjectView\n section={section}\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n />\n );\n};\n"],"mappings":"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"}
@@ -21,7 +21,8 @@ const structureViewContent = {
21
21
  tr: "Düğümünüzün anahtarını girin",
22
22
  pl: "Wprowadź klucz węzła",
23
23
  id: "Masukkan kunci node Anda",
24
- vi: "Nhập key của node của bạn"
24
+ vi: "Nhập key của node của bạn",
25
+ uk: "Введіть ключ вашого вузла"
25
26
  }) },
26
27
  deleteButton: { label: t({
27
28
  en: "Remove node from section",
@@ -40,7 +41,8 @@ const structureViewContent = {
40
41
  tr: "Düğümü bölümden kaldır",
41
42
  pl: "Usuń węzeł z sekcji",
42
43
  id: "Hapus node dari bagian",
43
- vi: "Xóa node khỏi section"
44
+ vi: "Xóa node khỏi section",
45
+ uk: "Видалити вузол з розділу"
44
46
  }) },
45
47
  addNodeButton: {
46
48
  label: t({
@@ -60,7 +62,8 @@ const structureViewContent = {
60
62
  tr: "Yeni bir düğüm eklemek için tıklayın",
61
63
  pl: "Kliknij, aby dodać nowy węzeł",
62
64
  id: "Klik untuk menambahkan node baru",
63
- vi: "Nhấp để thêm node mới"
65
+ vi: "Nhấp để thêm node mới",
66
+ uk: "Натисніть, щоб додати новий вузол"
64
67
  }),
65
68
  text: t({
66
69
  en: "Add a new node",
@@ -79,7 +82,8 @@ const structureViewContent = {
79
82
  tr: "Yeni bir düğüm ekle",
80
83
  pl: "Dodaj nowy węzeł",
81
84
  id: "Tambahkan node baru",
82
- vi: "Thêm node mới"
85
+ vi: "Thêm node mới",
86
+ uk: "Додати новий вузол"
83
87
  })
84
88
  }
85
89
  },
@@ -1 +1 @@
1
- {"version":3,"file":"structureView.content.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/StructureView/structureView.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nexport const structureViewContent = {\n key: 'structure-view',\n content: {\n titleInput: {\n placeholder: t({\n en: 'Enter the key of your node',\n 'en-GB': 'Enter the key of your node',\n fr: 'Entrez la clé de votre nœud',\n es: 'Ingrese la clave de su nodo',\n de: 'Geben Sie den Schlüssel Ihres Knotens ein',\n ja: 'ノードのキーを入力してください',\n ko: '노드의 키를 입력하세요',\n zh: '输入您节点的键',\n it: 'Inserisci la chiave del tuo nodo',\n pt: 'Insira a chave do seu nó',\n hi: 'अपनी नोड की कुंजी दर्ज करें',\n ar: 'أدخل مفتاح العقدة الخاص بك',\n ru: 'Введите ключ вашего узла',\n tr: 'Düğümünüzün anahtarını girin',\n pl: 'Wprowadź klucz węzła',\n id: 'Masukkan kunci node Anda',\n vi: 'Nhập key của node của bạn',\n }),\n },\n deleteButton: {\n label: t({\n en: 'Remove node from section',\n 'en-GB': 'Remove node from section',\n fr: 'Supprimer le nœud de la section',\n es: 'Eliminar el nodo de la sección',\n de: 'Knoten aus dem Abschnitt entfernen',\n ja: 'セクションからノードを削除',\n ko: '섹션에서 노드를 제거',\n zh: '从部分中移除节点',\n it: 'Rimuovi nodo dalla sezione',\n pt: 'Remover nó da seção',\n hi: 'सेक्शन से नोड हटाएं',\n ar: 'إزالة العقدة من القسم',\n ru: 'Удалить узел из секции',\n tr: 'Düğümü bölümden kaldır',\n pl: 'Usuń węzeł z sekcji',\n id: 'Hapus node dari bagian',\n vi: 'Xóa node khỏi section',\n }),\n },\n addNodeButton: {\n label: t({\n en: 'Click to add a new node',\n 'en-GB': 'Click to add a new node',\n fr: 'Cliquez pour ajouter un nouveau nœud',\n es: 'Haga clic para agregar un nuevo nodo',\n de: 'Klicken, um einen neuen Knoten hinzuzufügen',\n ja: '新しいノードを追加するにはクリックしてください',\n ko: '새 노드를 추가하려면 클릭하세요',\n zh: '点击添加新节点',\n it: 'Fai clic per aggiungere un nuovo nodo',\n pt: 'Clique para adicionar um novo nó',\n hi: 'नया नोड जोड़ने के लिए क्लिक करें',\n ar: 'انقر لإضافة عقدة جديدة',\n ru: 'Нажмите, чтобы добавить новый узел',\n tr: 'Yeni bir düğüm eklemek için tıklayın',\n pl: 'Kliknij, aby dodać nowy węzeł',\n id: 'Klik untuk menambahkan node baru',\n vi: 'Nhấp để thêm node mới',\n }),\n text: t({\n en: 'Add a new node',\n 'en-GB': 'Add a new node',\n fr: 'Ajouter un nouveau nœud',\n es: 'Agregar un nuevo nodo',\n de: 'Neuen Knoten hinzufügen',\n ja: '新しいノードを追加',\n ko: '새 노드 추가',\n zh: '添加新节点',\n it: 'Aggiungi un nuovo nodo',\n pt: 'Adicionar um novo nó',\n hi: 'नया नोड जोड़ें',\n ar: 'إضافة عقدة جديدة',\n ru: 'Добавить новый узел',\n tr: 'Yeni bir düğüm ekle',\n pl: 'Dodaj nowy węzeł',\n id: 'Tambahkan node baru',\n vi: 'Thêm node mới',\n }),\n },\n },\n title: 'Structure view',\n description:\n 'Interface content for managing nodes within a structured view, including actions to add, remove, and identify nodes by key.',\n tags: ['form', 'dictionary editor', 'structure management'],\n} satisfies Dictionary;\n\nexport default structureViewContent;\n"],"mappings":";;;AAEA,MAAa,uBAAuB;CAClC,KAAK;CACL,SAAS;EACP,YAAY,EACV,aAAa,EAAE;GACb,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC,EACH;EACD,cAAc,EACZ,OAAO,EAAE;GACP,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC,EACH;EACD,eAAe;GACb,OAAO,EAAE;IACP,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACL,CAAC;GACF,MAAM,EAAE;IACN,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACL,CAAC;GACH;EACF;CACD,OAAO;CACP,aACE;CACF,MAAM;EAAC;EAAQ;EAAqB;EAAuB;CAC5D;AAED,oCAAe"}
1
+ {"version":3,"file":"structureView.content.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/StructureView/structureView.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nexport const structureViewContent = {\n key: 'structure-view',\n content: {\n titleInput: {\n placeholder: t({\n en: 'Enter the key of your node',\n 'en-GB': 'Enter the key of your node',\n fr: 'Entrez la clé de votre nœud',\n es: 'Ingrese la clave de su nodo',\n de: 'Geben Sie den Schlüssel Ihres Knotens ein',\n ja: 'ノードのキーを入力してください',\n ko: '노드의 키를 입력하세요',\n zh: '输入您节点的键',\n it: 'Inserisci la chiave del tuo nodo',\n pt: 'Insira a chave do seu nó',\n hi: 'अपनी नोड की कुंजी दर्ज करें',\n ar: 'أدخل مفتاح العقدة الخاص بك',\n ru: 'Введите ключ вашего узла',\n tr: 'Düğümünüzün anahtarını girin',\n pl: 'Wprowadź klucz węzła',\n id: 'Masukkan kunci node Anda',\n vi: 'Nhập key của node của bạn',\n uk: 'Введіть ключ вашого вузла',\n }),\n },\n deleteButton: {\n label: t({\n en: 'Remove node from section',\n 'en-GB': 'Remove node from section',\n fr: 'Supprimer le nœud de la section',\n es: 'Eliminar el nodo de la sección',\n de: 'Knoten aus dem Abschnitt entfernen',\n ja: 'セクションからノードを削除',\n ko: '섹션에서 노드를 제거',\n zh: '从部分中移除节点',\n it: 'Rimuovi nodo dalla sezione',\n pt: 'Remover nó da seção',\n hi: 'सेक्शन से नोड हटाएं',\n ar: 'إزالة العقدة من القسم',\n ru: 'Удалить узел из секции',\n tr: 'Düğümü bölümden kaldır',\n pl: 'Usuń węzeł z sekcji',\n id: 'Hapus node dari bagian',\n vi: 'Xóa node khỏi section',\n uk: 'Видалити вузол з розділу',\n }),\n },\n addNodeButton: {\n label: t({\n en: 'Click to add a new node',\n 'en-GB': 'Click to add a new node',\n fr: 'Cliquez pour ajouter un nouveau nœud',\n es: 'Haga clic para agregar un nuevo nodo',\n de: 'Klicken, um einen neuen Knoten hinzuzufügen',\n ja: '新しいノードを追加するにはクリックしてください',\n ko: '새 노드를 추가하려면 클릭하세요',\n zh: '点击添加新节点',\n it: 'Fai clic per aggiungere un nuovo nodo',\n pt: 'Clique para adicionar um novo nó',\n hi: 'नया नोड जोड़ने के लिए क्लिक करें',\n ar: 'انقر لإضافة عقدة جديدة',\n ru: 'Нажмите, чтобы добавить новый узел',\n tr: 'Yeni bir düğüm eklemek için tıklayın',\n pl: 'Kliknij, aby dodać nowy węzeł',\n id: 'Klik untuk menambahkan node baru',\n vi: 'Nhấp để thêm node mới',\n uk: 'Натисніть, щоб додати новий вузол',\n }),\n text: t({\n en: 'Add a new node',\n 'en-GB': 'Add a new node',\n fr: 'Ajouter un nouveau nœud',\n es: 'Agregar un nuevo nodo',\n de: 'Neuen Knoten hinzufügen',\n ja: '新しいノードを追加',\n ko: '새 노드 추가',\n zh: '添加新节点',\n it: 'Aggiungi un nuovo nodo',\n pt: 'Adicionar um novo nó',\n hi: 'नया नोड जोड़ें',\n ar: 'إضافة عقدة جديدة',\n ru: 'Добавить новый узел',\n tr: 'Yeni bir düğüm ekle',\n pl: 'Dodaj nowy węzeł',\n id: 'Tambahkan node baru',\n vi: 'Thêm node mới',\n uk: 'Додати новий вузол',\n }),\n },\n },\n title: 'Structure view',\n description:\n 'Interface content for managing nodes within a structured view, including actions to add, remove, and identify nodes by key.',\n tags: ['form', 'dictionary editor', 'structure management'],\n} satisfies Dictionary;\n\nexport default structureViewContent;\n"],"mappings":";;;AAEA,MAAa,uBAAuB;CAClC,KAAK;CACL,SAAS;EACP,YAAY,EACV,aAAa,EAAE;GACb,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC,EACH;EACD,cAAc,EACZ,OAAO,EAAE;GACP,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC,EACH;EACD,eAAe;GACb,OAAO,EAAE;IACP,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACL,CAAC;GACF,MAAM,EAAE;IACN,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACL,CAAC;GACH;EACF;CACD,OAAO;CACP,aACE;CACF,MAAM;EAAC;EAAQ;EAAqB;EAAuB;CAC5D;AAED,oCAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"VersionSwitcher.mjs","names":["VersionSwitcher: FC<VersionSwitcherProps>"],"sources":["../../../../../src/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.tsx"],"sourcesContent":["'use client';\n\nimport {\n Button,\n ButtonColor,\n ButtonSize,\n ButtonTextAlign,\n ButtonVariant,\n} from '@components/Button';\nimport { Container } from '@components/Container';\nimport { DropDown, type PanelProps } from '@components/DropDown';\nimport { MoveVertical } from 'lucide-react';\nimport type { FC } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { useVersionSwitcher } from './VersionSwitcherContext';\n\nexport type VersionSwitcherProps = {\n panelProps?: Omit<PanelProps, 'identifier'>;\n};\n\nconst DROPDOWN_IDENTIFIER = 'version-switcher';\n\nexport const VersionSwitcher: FC<VersionSwitcherProps> = ({ panelProps }) => {\n const { switchTo, versionSwitcherLabel, versionListLabel } =\n useIntlayer('version-switcher');\n const { selectedVersion, versions, setSelectedVersion } =\n useVersionSwitcher();\n\n if (versions.length === 0) {\n return <></>;\n }\n\n return (\n <div\n className=\"rounded-xl border border-text text-text transition-colors\"\n aria-label={versionListLabel.value}\n >\n <DropDown identifier={DROPDOWN_IDENTIFIER}>\n <DropDown.Trigger identifier={DROPDOWN_IDENTIFIER}>\n <div className=\"flex w-full items-center justify-between\">\n <div className=\"px-2\">{selectedVersion ?? 'LTS'}</div>\n <MoveVertical className=\"w-5 self-center\" />\n </div>\n </DropDown.Trigger>\n\n <DropDown.Panel\n identifier={DROPDOWN_IDENTIFIER}\n isOverable\n isFocusable\n className=\"right-0 left-auto\"\n {...panelProps}\n >\n <Container\n className=\"max-h-[80vh] min-w-28\"\n separator=\"y\"\n role=\"listbox\"\n transparency=\"sm\"\n border\n roundedSize=\"2xl\"\n borderColor=\"text\"\n aria-label={versionSwitcherLabel.value}\n >\n <ol className=\"divide-y divide-dashed divide-text/20 overflow-y-auto p-1\">\n {versions.reverse().map((version) => (\n <li className=\"px-1.5 py-1\" key={version}>\n <Button\n onClick={() => setSelectedVersion(version)}\n label={`${switchTo} v${version}`}\n isActive={selectedVersion === version}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n isFullWidth\n textAlign={ButtonTextAlign.LEFT}\n size={ButtonSize.SM}\n >\n <div className=\"flex flex-1 flex-row items-center justify-between gap-3 px-2 py-1 text-neutral text-sm\">\n {version}\n </div>\n </Button>\n </li>\n ))}\n </ol>\n </Container>\n </DropDown.Panel>\n </DropDown>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;AAoBA,MAAM,sBAAsB;AAE5B,MAAaA,mBAA6C,EAAE,iBAAiB;CAC3E,MAAM,EAAE,UAAU,sBAAsB,qBACtC,YAAY,mBAAmB;CACjC,MAAM,EAAE,iBAAiB,UAAU,uBACjC,oBAAoB;AAEtB,KAAI,SAAS,WAAW,EACtB,QAAO,iCAAK;AAGd,QACE,oBAAC;EACC,WAAU;EACV,cAAY,iBAAiB;YAE7B,qBAAC;GAAS,YAAY;cACpB,oBAAC,SAAS;IAAQ,YAAY;cAC5B,qBAAC;KAAI,WAAU;gBACb,oBAAC;MAAI,WAAU;gBAAQ,mBAAmB;OAAY,EACtD,oBAAC,gBAAa,WAAU,oBAAoB;MACxC;KACW,EAEnB,oBAAC,SAAS;IACR,YAAY;IACZ;IACA;IACA,WAAU;IACV,GAAI;cAEJ,oBAAC;KACC,WAAU;KACV,WAAU;KACV,MAAK;KACL,cAAa;KACb;KACA,aAAY;KACZ,aAAY;KACZ,cAAY,qBAAqB;eAEjC,oBAAC;MAAG,WAAU;gBACX,SAAS,SAAS,CAAC,KAAK,YACvB,oBAAC;OAAG,WAAU;iBACZ,oBAAC;QACC,eAAe,mBAAmB,QAAQ;QAC1C,OAAO,GAAG,SAAS,IAAI;QACvB,UAAU,oBAAoB;QAC9B,SAAS,cAAc;QACvB,OAAO,YAAY;QACnB;QACA,WAAW,gBAAgB;QAC3B,MAAM,WAAW;kBAEjB,oBAAC;SAAI,WAAU;mBACZ;UACG;SACC;SAdsB,QAe5B,CACL;OACC;MACK;KACG;IACR;GACP"}
1
+ {"version":3,"file":"VersionSwitcher.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.tsx"],"sourcesContent":["'use client';\n\nimport {\n Button,\n ButtonColor,\n ButtonSize,\n ButtonTextAlign,\n ButtonVariant,\n} from '@components/Button';\nimport { Container } from '@components/Container';\nimport { DropDown, type PanelProps } from '@components/DropDown';\nimport { MoveVertical } from 'lucide-react';\nimport type { FC } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { useVersionSwitcher } from './VersionSwitcherContext';\n\nexport type VersionSwitcherProps = {\n panelProps?: Omit<PanelProps, 'identifier'>;\n};\n\nconst DROPDOWN_IDENTIFIER = 'version-switcher';\n\nexport const VersionSwitcher: FC<VersionSwitcherProps> = ({ panelProps }) => {\n const { switchTo, versionSwitcherLabel, versionListLabel } =\n useIntlayer('version-switcher');\n const { selectedVersion, versions, setSelectedVersion } =\n useVersionSwitcher();\n\n if (versions.length === 0) {\n return <></>;\n }\n\n return (\n <div\n className=\"rounded-xl border border-text text-text transition-colors\"\n aria-label={versionListLabel.value}\n >\n <DropDown identifier={DROPDOWN_IDENTIFIER}>\n <DropDown.Trigger identifier={DROPDOWN_IDENTIFIER}>\n <div className=\"flex w-full items-center justify-between\">\n <div className=\"px-2\">{selectedVersion ?? 'LTS'}</div>\n <MoveVertical className=\"w-5 self-center\" />\n </div>\n </DropDown.Trigger>\n\n <DropDown.Panel\n identifier={DROPDOWN_IDENTIFIER}\n isOverable\n isFocusable\n className=\"right-0 left-auto\"\n {...panelProps}\n >\n <Container\n className=\"max-h-[80vh] min-w-28\"\n separator=\"y\"\n role=\"listbox\"\n transparency=\"sm\"\n border\n roundedSize=\"2xl\"\n borderColor=\"text\"\n aria-label={versionSwitcherLabel.value}\n >\n <ol className=\"divide-y divide-dashed divide-text/20 overflow-y-auto p-1\">\n {versions.reverse().map((version) => (\n <li className=\"px-1.5 py-1\" key={version}>\n <Button\n onClick={() => setSelectedVersion(version)}\n label={`${switchTo} v${version}`}\n isActive={selectedVersion === version}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n isFullWidth\n textAlign={ButtonTextAlign.LEFT}\n size={ButtonSize.SM}\n >\n <div className=\"flex flex-1 flex-row items-center justify-between gap-3 px-2 py-1 text-neutral text-sm\">\n {version}\n </div>\n </Button>\n </li>\n ))}\n </ol>\n </Container>\n </DropDown.Panel>\n </DropDown>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;AAoBA,MAAM,sBAAsB;AAE5B,MAAa,mBAA6C,EAAE,iBAAiB;CAC3E,MAAM,EAAE,UAAU,sBAAsB,qBACtC,YAAY,mBAAmB;CACjC,MAAM,EAAE,iBAAiB,UAAU,uBACjC,oBAAoB;AAEtB,KAAI,SAAS,WAAW,EACtB,QAAO,iCAAK;AAGd,QACE,oBAAC;EACC,WAAU;EACV,cAAY,iBAAiB;YAE7B,qBAAC;GAAS,YAAY;cACpB,oBAAC,SAAS;IAAQ,YAAY;cAC5B,qBAAC;KAAI,WAAU;gBACb,oBAAC;MAAI,WAAU;gBAAQ,mBAAmB;OAAY,EACtD,oBAAC,gBAAa,WAAU,oBAAoB;MACxC;KACW,EAEnB,oBAAC,SAAS;IACR,YAAY;IACZ;IACA;IACA,WAAU;IACV,GAAI;cAEJ,oBAAC;KACC,WAAU;KACV,WAAU;KACV,MAAK;KACL,cAAa;KACb;KACA,aAAY;KACZ,aAAY;KACZ,cAAY,qBAAqB;eAEjC,oBAAC;MAAG,WAAU;gBACX,SAAS,SAAS,CAAC,KAAK,YACvB,oBAAC;OAAG,WAAU;iBACZ,oBAAC;QACC,eAAe,mBAAmB,QAAQ;QAC1C,OAAO,GAAG,SAAS,IAAI;QACvB,UAAU,oBAAoB;QAC9B,SAAS,cAAc;QACvB,OAAO,YAAY;QACnB;QACA,WAAW,gBAAgB;QAC3B,MAAM,WAAW;kBAEjB,oBAAC;SAAI,WAAU;mBACZ;UACG;SACC;SAdsB,QAe5B,CACL;OACC;MACK;KACG;IACR;GACP"}
@@ -1 +1 @@
1
- {"version":3,"file":"VersionSwitcherContext.mjs","names":["VersionSwitcherProvider: FC<\n PropsWithChildren<VersionSwitcherProviderProps>\n>"],"sources":["../../../../../src/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.tsx"],"sourcesContent":["'use client';\n\nimport { usePersistedStore } from '@hooks/usePersistedStore';\nimport {\n createContext,\n type Dispatch,\n type FC,\n type PropsWithChildren,\n type SetStateAction,\n useContext,\n} from 'react';\n\ntype VersionSwitcherContextProps = {\n versions: string[];\n selectedVersion: string | null;\n setSelectedVersion: Dispatch<SetStateAction<string | null>>;\n};\n\nconst VersionSwitcherContext = createContext<VersionSwitcherContextProps>({\n versions: [],\n selectedVersion: null,\n setSelectedVersion: () => {},\n});\n\nexport const useVersionSwitcher = () => useContext(VersionSwitcherContext);\n\ntype VersionSwitcherProviderProps = {\n versions: string[];\n defaultSelectedVersion?: string;\n};\n\nexport const VersionSwitcherProvider: FC<\n PropsWithChildren<VersionSwitcherProviderProps>\n> = ({ versions, defaultSelectedVersion, children }) => {\n const [selectedVersion, setSelectedVersion] = usePersistedStore<\n string | null\n >('version-selector', defaultSelectedVersion);\n\n return (\n <VersionSwitcherContext\n value={{\n versions,\n selectedVersion,\n setSelectedVersion,\n }}\n >\n {children}\n </VersionSwitcherContext>\n );\n};\n"],"mappings":";;;;;;;AAkBA,MAAM,yBAAyB,cAA2C;CACxE,UAAU,EAAE;CACZ,iBAAiB;CACjB,0BAA0B;CAC3B,CAAC;AAEF,MAAa,2BAA2B,WAAW,uBAAuB;AAO1E,MAAaA,2BAER,EAAE,UAAU,wBAAwB,eAAe;CACtD,MAAM,CAAC,iBAAiB,sBAAsB,kBAE5C,oBAAoB,uBAAuB;AAE7C,QACE,oBAAC;EACC,OAAO;GACL;GACA;GACA;GACD;EAEA;GACsB"}
1
+ {"version":3,"file":"VersionSwitcherContext.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.tsx"],"sourcesContent":["'use client';\n\nimport { usePersistedStore } from '@hooks/usePersistedStore';\nimport {\n createContext,\n type Dispatch,\n type FC,\n type PropsWithChildren,\n type SetStateAction,\n useContext,\n} from 'react';\n\ntype VersionSwitcherContextProps = {\n versions: string[];\n selectedVersion: string | null;\n setSelectedVersion: Dispatch<SetStateAction<string | null>>;\n};\n\nconst VersionSwitcherContext = createContext<VersionSwitcherContextProps>({\n versions: [],\n selectedVersion: null,\n setSelectedVersion: () => {},\n});\n\nexport const useVersionSwitcher = () => useContext(VersionSwitcherContext);\n\ntype VersionSwitcherProviderProps = {\n versions: string[];\n defaultSelectedVersion?: string;\n};\n\nexport const VersionSwitcherProvider: FC<\n PropsWithChildren<VersionSwitcherProviderProps>\n> = ({ versions, defaultSelectedVersion, children }) => {\n const [selectedVersion, setSelectedVersion] = usePersistedStore<\n string | null\n >('version-selector', defaultSelectedVersion);\n\n return (\n <VersionSwitcherContext\n value={{\n versions,\n selectedVersion,\n setSelectedVersion,\n }}\n >\n {children}\n </VersionSwitcherContext>\n );\n};\n"],"mappings":";;;;;;;AAkBA,MAAM,yBAAyB,cAA2C;CACxE,UAAU,EAAE;CACZ,iBAAiB;CACjB,0BAA0B;CAC3B,CAAC;AAEF,MAAa,2BAA2B,WAAW,uBAAuB;AAO1E,MAAa,2BAER,EAAE,UAAU,wBAAwB,eAAe;CACtD,MAAM,CAAC,iBAAiB,sBAAsB,kBAE5C,oBAAoB,uBAAuB;AAE7C,QACE,oBAAC;EACC,OAAO;GACL;GACA;GACA;GACD;EAEA;GACsB"}
@@ -21,7 +21,8 @@ const versionSwitcherContent = {
21
21
  tr: "Sürüm seçici",
22
22
  pl: "Wybór wersji",
23
23
  id: "Pemilih versi",
24
- vi: "Trình chọn phiên bản"
24
+ vi: "Trình chọn phiên bản",
25
+ uk: "Перемикач версій"
25
26
  }),
26
27
  versionListLabel: t({
27
28
  en: "Version list",
@@ -40,7 +41,8 @@ const versionSwitcherContent = {
40
41
  tr: "Sürüm listesi",
41
42
  pl: "Lista wersji",
42
43
  id: "Daftar versi",
43
- vi: "Danh sách phiên bản"
44
+ vi: "Danh sách phiên bản",
45
+ uk: "Список версій"
44
46
  }),
45
47
  switchTo: t({
46
48
  en: "Switch to",
@@ -59,7 +61,8 @@ const versionSwitcherContent = {
59
61
  tr: "Geçiş yap",
60
62
  pl: "Przełącz na",
61
63
  id: "Beralih ke",
62
- vi: "Chuyển sang"
64
+ vi: "Chuyển sang",
65
+ uk: "Перейти на"
63
66
  })
64
67
  },
65
68
  title: "Version switcher",
@@ -1 +1 @@
1
- {"version":3,"file":"versionSwitcherDropDown.content.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nconst versionSwitcherContent = {\n key: 'version-switcher',\n content: {\n versionSwitcherLabel: t({\n en: 'Version selector',\n 'en-GB': 'Version selector',\n fr: 'Sélecteur de version',\n es: 'Selector de versión',\n de: 'Version wähler',\n ja: 'バージョンセレクター',\n ko: '버전 선택기',\n zh: '版本选择器',\n it: 'Selettore di versione',\n pt: 'Seletor de versão',\n hi: 'संस्करण चयनकर्ता',\n ar: 'منتقي الإصدار',\n ru: 'Выбор версии',\n tr: 'Sürüm seçici',\n pl: 'Wybór wersji',\n id: 'Pemilih versi',\n vi: 'Trình chọn phiên bản',\n }),\n versionListLabel: t({\n en: 'Version list',\n 'en-GB': 'Version list',\n fr: 'Liste des versions',\n es: 'Lista de versiones',\n de: 'Versionsliste',\n ja: 'バージョンリスト',\n ko: '버전 목록',\n zh: '版本列表',\n it: 'Elenco delle versioni',\n pt: 'Lista de versões',\n hi: 'संस्करण सूची',\n ar: 'قائمة الإصدارات',\n ru: 'Список версий',\n tr: 'Sürüm listesi',\n pl: 'Lista wersji',\n id: 'Daftar versi',\n vi: 'Danh sách phiên bản',\n }),\n switchTo: t({\n en: 'Switch to',\n fr: 'Passer à',\n es: 'Cambiar a',\n 'en-GB': 'Switch to',\n de: 'Wechseln Sie zu',\n ja: 'に切り替える',\n ko: '전환',\n zh: '切换到',\n it: 'Passa a',\n pt: 'Mudar para',\n hi: 'स्विच करें',\n ar: 'التبديل إلى',\n ru: 'Переключиться на',\n tr: 'Geçiş yap',\n pl: 'Przełącz na',\n id: 'Beralih ke',\n vi: 'Chuyển sang',\n }),\n },\n title: 'Version switcher',\n description:\n 'Dictionary for UI labels used in the version switcher component, enabling users to select and switch between different content or documentation versions.',\n tags: ['interface', 'version control', 'component'],\n} satisfies Dictionary;\n\nexport default versionSwitcherContent;\n"],"mappings":";;;AAEA,MAAM,yBAAyB;CAC7B,KAAK;CACL,SAAS;EACP,sBAAsB,EAAE;GACtB,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,kBAAkB,EAAE;GAClB,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,OAAO;CACP,aACE;CACF,MAAM;EAAC;EAAa;EAAmB;EAAY;CACpD;AAED,8CAAe"}
1
+ {"version":3,"file":"versionSwitcherDropDown.content.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nconst versionSwitcherContent = {\n key: 'version-switcher',\n content: {\n versionSwitcherLabel: t({\n en: 'Version selector',\n 'en-GB': 'Version selector',\n fr: 'Sélecteur de version',\n es: 'Selector de versión',\n de: 'Version wähler',\n ja: 'バージョンセレクター',\n ko: '버전 선택기',\n zh: '版本选择器',\n it: 'Selettore di versione',\n pt: 'Seletor de versão',\n hi: 'संस्करण चयनकर्ता',\n ar: 'منتقي الإصدار',\n ru: 'Выбор версии',\n tr: 'Sürüm seçici',\n pl: 'Wybór wersji',\n id: 'Pemilih versi',\n vi: 'Trình chọn phiên bản',\n uk: 'Перемикач версій',\n }),\n versionListLabel: t({\n en: 'Version list',\n 'en-GB': 'Version list',\n fr: 'Liste des versions',\n es: 'Lista de versiones',\n de: 'Versionsliste',\n ja: 'バージョンリスト',\n ko: '버전 목록',\n zh: '版本列表',\n it: 'Elenco delle versioni',\n pt: 'Lista de versões',\n hi: 'संस्करण सूची',\n ar: 'قائمة الإصدارات',\n ru: 'Список версий',\n tr: 'Sürüm listesi',\n pl: 'Lista wersji',\n id: 'Daftar versi',\n vi: 'Danh sách phiên bản',\n uk: 'Список версій',\n }),\n switchTo: t({\n en: 'Switch to',\n fr: 'Passer à',\n es: 'Cambiar a',\n 'en-GB': 'Switch to',\n de: 'Wechseln Sie zu',\n ja: 'に切り替える',\n ko: '전환',\n zh: '切换到',\n it: 'Passa a',\n pt: 'Mudar para',\n hi: 'स्विच करें',\n ar: 'التبديل إلى',\n ru: 'Переключиться на',\n tr: 'Geçiş yap',\n pl: 'Przełącz na',\n id: 'Beralih ke',\n vi: 'Chuyển sang',\n uk: 'Перейти на',\n }),\n },\n title: 'Version switcher',\n description:\n 'Dictionary for UI labels used in the version switcher component, enabling users to select and switch between different content or documentation versions.',\n tags: ['interface', 'version control', 'component'],\n} satisfies Dictionary;\n\nexport default versionSwitcherContent;\n"],"mappings":";;;AAEA,MAAM,yBAAyB;CAC7B,KAAK;CACL,SAAS;EACP,sBAAsB,EAAE;GACtB,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,kBAAkB,EAAE;GAClB,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,OAAO;CACP,aACE;CACF,MAAM;EAAC;EAAa;EAAmB;EAAY;CACpD;AAED,8CAAe"}
@@ -21,7 +21,8 @@ const dictionaryFieldEditorContent = {
21
21
  tr: "Sözlük listesine dön",
22
22
  pl: "Powrót do listy słowników",
23
23
  id: "Kembali ke daftar kamus",
24
- vi: "Quay lại danh sách từ điển"
24
+ vi: "Quay lại danh sách từ điển",
25
+ uk: "Повернутися до списку словників"
25
26
  }),
26
27
  text: t({
27
28
  en: "Dictionary list",
@@ -40,7 +41,8 @@ const dictionaryFieldEditorContent = {
40
41
  tr: "Sözlük listesi",
41
42
  pl: "Lista słowników",
42
43
  id: "Daftar kamus",
43
- vi: "Danh sách từ điển"
44
+ vi: "Danh sách từ điển",
45
+ uk: "Список словників"
44
46
  })
45
47
  } },
46
48
  title: "Dictionary field editor",
@@ -1 +1 @@
1
- {"version":3,"file":"dictionaryFieldEditor.content.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/dictionaryFieldEditor.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nexport const dictionaryFieldEditorContent = {\n key: 'dictionary-field-editor',\n content: {\n returnToDictionaryList: {\n label: t({\n en: 'Return to dictionary list',\n 'en-GB': 'Return to dictionary list',\n fr: 'Retourner à la liste des dictionnaires',\n es: 'Volver a la lista de diccionarios',\n de: 'Zurück zur Wörterbuchliste',\n ja: '辞書リストに戻る',\n it: 'Torna alla lista dei dizionari',\n pt: 'Retornar à lista de dicionários',\n hi: 'शब्दकोश सूची पर वापस जाएं',\n ar: 'العودة إلى قائمة القوامل',\n ko: '사전 목록으로 돌아가기',\n zh: '返回字典列表',\n ru: 'Вернуться к списку словарей',\n tr: 'Sözlük listesine dön',\n pl: 'Powrót do listy słowników',\n id: 'Kembali ke daftar kamus',\n vi: 'Quay lại danh sách từ điển',\n }),\n text: t({\n en: 'Dictionary list',\n 'en-GB': 'Dictionary list',\n fr: 'Liste des dictionnaires',\n es: 'Lista de diccionarios',\n de: 'Wörterbuchliste',\n ja: '辞書リスト',\n ko: '사전 목록',\n zh: '字典列表',\n it: 'Elenco dei dizionari',\n pt: 'Lista de dicionários',\n hi: 'शब्दकोश सूची',\n ar: 'قائمة المعاجم',\n ru: 'Список словарей',\n tr: 'Sözlük listesi',\n pl: 'Lista słowników',\n id: 'Daftar kamus',\n vi: 'Danh sách từ điển',\n }),\n },\n },\n title: 'Dictionary field editor',\n description:\n 'Content declaration for the dictionary field editor component, including labels and texts used for navigation to the dictionary list.',\n tags: ['component', 'dictionary', 'design system'],\n} satisfies Dictionary;\n\nexport default dictionaryFieldEditorContent;\n"],"mappings":";;;AAEA,MAAa,+BAA+B;CAC1C,KAAK;CACL,SAAS,EACP,wBAAwB;EACtB,OAAO,EAAE;GACP,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,MAAM,EAAE;GACN,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH,EACF;CACD,OAAO;CACP,aACE;CACF,MAAM;EAAC;EAAa;EAAc;EAAgB;CACnD;AAED,4CAAe"}
1
+ {"version":3,"file":"dictionaryFieldEditor.content.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/dictionaryFieldEditor.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nexport const dictionaryFieldEditorContent = {\n key: 'dictionary-field-editor',\n content: {\n returnToDictionaryList: {\n label: t({\n en: 'Return to dictionary list',\n 'en-GB': 'Return to dictionary list',\n fr: 'Retourner à la liste des dictionnaires',\n es: 'Volver a la lista de diccionarios',\n de: 'Zurück zur Wörterbuchliste',\n ja: '辞書リストに戻る',\n it: 'Torna alla lista dei dizionari',\n pt: 'Retornar à lista de dicionários',\n hi: 'शब्दकोश सूची पर वापस जाएं',\n ar: 'العودة إلى قائمة القوامل',\n ko: '사전 목록으로 돌아가기',\n zh: '返回字典列表',\n ru: 'Вернуться к списку словарей',\n tr: 'Sözlük listesine dön',\n pl: 'Powrót do listy słowników',\n id: 'Kembali ke daftar kamus',\n vi: 'Quay lại danh sách từ điển',\n uk: 'Повернутися до списку словників',\n }),\n text: t({\n en: 'Dictionary list',\n 'en-GB': 'Dictionary list',\n fr: 'Liste des dictionnaires',\n es: 'Lista de diccionarios',\n de: 'Wörterbuchliste',\n ja: '辞書リスト',\n ko: '사전 목록',\n zh: '字典列表',\n it: 'Elenco dei dizionari',\n pt: 'Lista de dicionários',\n hi: 'शब्दकोश सूची',\n ar: 'قائمة المعاجم',\n ru: 'Список словарей',\n tr: 'Sözlük listesi',\n pl: 'Lista słowników',\n id: 'Daftar kamus',\n vi: 'Danh sách từ điển',\n uk: 'Список словників',\n }),\n },\n },\n title: 'Dictionary field editor',\n description:\n 'Content declaration for the dictionary field editor component, including labels and texts used for navigation to the dictionary list.',\n tags: ['component', 'dictionary', 'design system'],\n} satisfies Dictionary;\n\nexport default dictionaryFieldEditorContent;\n"],"mappings":";;;AAEA,MAAa,+BAA+B;CAC1C,KAAK;CACL,SAAS,EACP,wBAAwB;EACtB,OAAO,EAAE;GACP,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,MAAM,EAAE;GACN,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH,EACF;CACD,OAAO;CACP,aACE;CACF,MAAM;EAAC;EAAa;EAAc;EAAgB;CACnD;AAED,4CAAe"}
@@ -21,7 +21,8 @@ const nodeTypeSelectorContent = {
21
21
  tr: "Düğüm türü",
22
22
  pl: "Typ węzła",
23
23
  id: "Tipe Node",
24
- vi: "Kiểu node"
24
+ vi: "Kiểu node",
25
+ uk: "Тип вузла"
25
26
  }),
26
27
  multilingual: t({
27
28
  en: "Multilingual content",
@@ -40,7 +41,8 @@ const nodeTypeSelectorContent = {
40
41
  tr: "Çok dilli içerik",
41
42
  pl: "Treść wielojęzyczna",
42
43
  id: "Konten multibahasa",
43
- vi: "Nội dung đa ngôn ngữ"
44
+ vi: "Nội dung đa ngôn ngữ",
45
+ uk: "Багатомовний вміст"
44
46
  }),
45
47
  text: t({
46
48
  en: "Text",
@@ -59,7 +61,8 @@ const nodeTypeSelectorContent = {
59
61
  tr: "Metin",
60
62
  pl: "Tekst",
61
63
  id: "Teks",
62
- vi: "Văn bản"
64
+ vi: "Văn bản",
65
+ uk: "Текст"
63
66
  }),
64
67
  number: t({
65
68
  en: "Number",
@@ -78,7 +81,8 @@ const nodeTypeSelectorContent = {
78
81
  tr: "Sayı",
79
82
  pl: "Liczba",
80
83
  id: "Angka",
81
- vi: "Số"
84
+ vi: "Số",
85
+ uk: "Число"
82
86
  }),
83
87
  boolean: t({
84
88
  en: "Boolean",
@@ -97,7 +101,8 @@ const nodeTypeSelectorContent = {
97
101
  tr: "Boolean",
98
102
  pl: "Wartość logiczna",
99
103
  id: "Boolean",
100
- vi: "Boolean"
104
+ vi: "Boolean",
105
+ uk: "Булеве"
101
106
  }),
102
107
  node: t({
103
108
  en: "Object",
@@ -116,7 +121,8 @@ const nodeTypeSelectorContent = {
116
121
  tr: "Nesne",
117
122
  pl: "Obiekt",
118
123
  id: "Object",
119
- vi: "Đối tượng"
124
+ vi: "Đối tượng",
125
+ uk: "Об'єкт"
120
126
  }),
121
127
  array: t({
122
128
  en: "Array",
@@ -135,7 +141,8 @@ const nodeTypeSelectorContent = {
135
141
  tr: "Dizi",
136
142
  pl: "Tablica",
137
143
  id: "Array",
138
- vi: "Mảng"
144
+ vi: "Mảng",
145
+ uk: "Масив"
139
146
  }),
140
147
  enumeration: t({
141
148
  en: "Enumeration",
@@ -154,7 +161,8 @@ const nodeTypeSelectorContent = {
154
161
  tr: "Numaralandırma",
155
162
  pl: "Wyliczenie",
156
163
  id: "Enumeration",
157
- vi: "Kiểu liệt kê"
164
+ vi: "Kiểu liệt kê",
165
+ uk: "Перерахування"
158
166
  }),
159
167
  gender: t({
160
168
  en: "Gender",
@@ -173,7 +181,8 @@ const nodeTypeSelectorContent = {
173
181
  tr: "Cins",
174
182
  pl: "Płeć",
175
183
  id: "Gender",
176
- vi: "Giới tính"
184
+ vi: "Giới tính",
185
+ uk: "Стать"
177
186
  }),
178
187
  nest: t({
179
188
  en: "Nesting",
@@ -192,7 +201,8 @@ const nodeTypeSelectorContent = {
192
201
  tr: "İç içe geçme",
193
202
  pl: "Zagnieżdżanie",
194
203
  id: "Nesting",
195
- vi: "Lồng nhau"
204
+ vi: "Lồng nhau",
205
+ uk: "Вкладеність"
196
206
  }),
197
207
  insertion: t({
198
208
  en: "Insertion",
@@ -211,7 +221,8 @@ const nodeTypeSelectorContent = {
211
221
  tr: "Ekleme",
212
222
  pl: "Wstawianie",
213
223
  id: "Insertion",
214
- vi: "Chèn"
224
+ vi: "Chèn",
225
+ uk: "Вставка"
215
226
  }),
216
227
  condition: t({
217
228
  en: "Condition",
@@ -230,7 +241,8 @@ const nodeTypeSelectorContent = {
230
241
  tr: "Koşul",
231
242
  pl: "Warunek",
232
243
  id: "Condition",
233
- vi: "Điều kiện"
244
+ vi: "Điều kiện",
245
+ uk: "Умова"
234
246
  }),
235
247
  file: t({
236
248
  en: "File",
@@ -249,7 +261,8 @@ const nodeTypeSelectorContent = {
249
261
  tr: "Dosya",
250
262
  pl: "Plik",
251
263
  id: "File",
252
- vi: "Tệp"
264
+ vi: "Tệp",
265
+ uk: "Файл"
253
266
  }),
254
267
  markdown: t({
255
268
  en: "Markdown",
@@ -268,7 +281,8 @@ const nodeTypeSelectorContent = {
268
281
  tr: "Markdown",
269
282
  pl: "Markdown",
270
283
  id: "Markdown",
271
- vi: "Markdown"
284
+ vi: "Markdown",
285
+ uk: "Markdown"
272
286
  }),
273
287
  reactNode: t({
274
288
  en: "React Node",
@@ -287,7 +301,8 @@ const nodeTypeSelectorContent = {
287
301
  tr: "React Node",
288
302
  pl: "Węzeł React",
289
303
  id: "React Node",
290
- vi: "React Node"
304
+ vi: "React Node",
305
+ uk: "React-вузол"
291
306
  })
292
307
  },
293
308
  title: "Node type selector",
@@ -1 +1 @@
1
- {"version":3,"file":"nodeTypeSelector.content.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/nodeTypeSelector.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nexport const nodeTypeSelectorContent = {\n key: 'node-type-selector',\n content: {\n triggerPlaceHolder: t({\n en: 'Node type',\n 'en-GB': 'Node type',\n fr: 'Type du Nœud',\n es: 'Tipo del nodo',\n de: 'Knotentyp',\n ja: 'ノードタイプ',\n ko: '노드 유형',\n zh: '节点类型',\n it: 'Tipo di nodo',\n pt: 'Tipo de nó',\n hi: 'नोड प्रकार',\n ar: 'نوع العقدة',\n ru: 'Тип узла',\n tr: 'Düğüm türü',\n pl: 'Typ węzła',\n id: 'Tipe Node',\n vi: 'Kiểu node',\n }),\n multilingual: t({\n en: 'Multilingual content',\n 'en-GB': 'Multilingual content',\n fr: 'Contenu Multilingue',\n es: 'Contenido multilingüe',\n de: 'Mehrsprachiger Inhalt',\n ja: '複数言語コンテンツ',\n ko: '다중 언어 콘텐츠',\n zh: '多语言内容',\n it: 'Contenuto multilingue',\n pt: 'Conteúdo multilíngue',\n hi: 'बहुभाषी सामग्री',\n ar: 'محتوى متعدد اللغات',\n ru: 'Многоязычный контент',\n tr: 'Çok dilli içerik',\n pl: 'Treść wielojęzyczna',\n id: 'Konten multibahasa',\n vi: 'Nội dung đa ngôn ngữ',\n }),\n text: t({\n en: 'Text',\n 'en-GB': 'Text',\n fr: 'Texte',\n es: 'Texto',\n de: 'Text',\n ja: 'テキスト',\n ko: '텍스트',\n zh: '文本',\n it: 'Testo',\n pt: 'Texto',\n hi: 'पाठ',\n ar: 'نص',\n ru: 'Текст',\n tr: 'Metin',\n pl: 'Tekst',\n id: 'Teks',\n vi: 'Văn bản',\n }),\n number: t({\n en: 'Number',\n 'en-GB': 'Number',\n fr: 'Nombre',\n es: 'Número',\n de: 'Zahl',\n ja: '数字',\n ko: '숫자',\n zh: '数字',\n it: 'Numero',\n pt: 'Número',\n hi: 'संख्या',\n ar: 'رقم',\n ru: 'Число',\n tr: 'Sayı',\n pl: 'Liczba',\n id: 'Angka',\n vi: 'Số',\n }),\n boolean: t({\n en: 'Boolean',\n 'en-GB': 'Boolean',\n fr: 'Booléen',\n es: 'Booleano',\n de: 'Bool',\n ja: 'ブール',\n ko: '불리언',\n zh: '布尔',\n it: 'Booleano',\n pt: 'Booleano',\n hi: 'बूलियन',\n ar: 'منطقي',\n ru: 'Булево',\n tr: 'Boolean',\n pl: 'Wartość logiczna',\n id: 'Boolean',\n vi: 'Boolean',\n }),\n node: t({\n en: 'Object',\n 'en-GB': 'Object',\n fr: 'Objet',\n es: 'Objeto',\n de: 'Objekt',\n ja: 'オブジェクト',\n ko: '객체',\n zh: '对象',\n it: 'Oggetto',\n pt: 'Objeto',\n hi: 'ऑब्जेक्ट',\n ar: 'كائن',\n ru: 'Объект',\n tr: 'Nesne',\n pl: 'Obiekt',\n id: 'Object',\n vi: 'Đối tượng',\n }),\n array: t({\n en: 'Array',\n 'en-GB': 'Array',\n fr: 'Tableau',\n es: 'Arreglo',\n de: 'Array',\n ja: '配列',\n ko: '배열',\n zh: '数组',\n it: 'Array',\n pt: 'Array',\n hi: 'ऐरे',\n ar: 'مصفوفة',\n ru: 'Массив',\n tr: 'Dizi',\n pl: 'Tablica',\n id: 'Array',\n vi: 'Mảng',\n }),\n enumeration: t({\n en: 'Enumeration',\n 'en-GB': 'Enumeration',\n fr: 'Énumération',\n es: 'Enumeración',\n de: 'Enumeration',\n ja: '列挙',\n ko: '열거',\n zh: '枚举',\n it: 'Enumerazione',\n pt: 'Enumeração',\n hi: 'गणना',\n ar: 'تعداد',\n ru: 'Перечисление',\n tr: 'Numaralandırma',\n pl: 'Wyliczenie',\n id: 'Enumeration',\n vi: 'Kiểu liệt kê',\n }),\n gender: t({\n en: 'Gender',\n 'en-GB': 'Gender',\n fr: 'Genre',\n es: 'Género',\n de: 'Geschlecht',\n ja: '性別',\n ko: '성별',\n zh: '性别',\n it: 'Genere',\n pt: 'Gênero',\n hi: 'लिंग',\n ar: 'جنس',\n ru: 'Пол',\n tr: 'Cins',\n pl: 'Płeć',\n id: 'Gender',\n vi: 'Giới tính',\n }),\n nest: t({\n en: 'Nesting',\n 'en-GB': 'Nesting',\n fr: 'Imbriquation',\n es: 'Anidación',\n de: 'Vererbung',\n ja: 'ネスト',\n ko: '중첩',\n zh: '嵌套',\n it: 'Nidificazione',\n pt: 'Nido',\n hi: 'नेस्टेंस',\n ar: 'مستوى',\n ru: 'Вложенность',\n tr: 'İç içe geçme',\n pl: 'Zagnieżdżanie',\n id: 'Nesting',\n vi: 'Lồng nhau',\n }),\n insertion: t({\n en: 'Insertion',\n 'en-GB': 'Insertion',\n fr: 'Insertion',\n es: 'Inserción',\n de: 'Einfügung',\n ja: '挿入',\n ko: '삽입',\n zh: '插入',\n it: 'Inserimento',\n pt: 'Inserção',\n hi: 'सम्मिलन',\n ar: 'إدراج',\n ru: 'Вставка',\n tr: 'Ekleme',\n pl: 'Wstawianie',\n id: 'Insertion',\n vi: 'Chèn',\n }),\n condition: t({\n en: 'Condition',\n 'en-GB': 'Condition',\n fr: 'Condition',\n es: 'Condición',\n de: 'Bedingung',\n ja: '条件',\n ko: '조건',\n zh: '条件',\n it: 'Condizione',\n pt: 'Condição',\n hi: 'शर्त्ता',\n ar: 'شرط',\n ru: 'Условие',\n tr: 'Koşul',\n pl: 'Warunek',\n id: 'Condition',\n vi: 'Điều kiện',\n }),\n file: t({\n en: 'File',\n 'en-GB': 'File',\n fr: 'Fichier',\n es: 'Archivo',\n de: 'Datei',\n ja: 'ファイル',\n ko: '파일',\n zh: '文件',\n it: 'File',\n pt: 'Arquivo',\n hi: 'फ़ाइल',\n ar: 'ملف',\n ru: 'Файл',\n tr: 'Dosya',\n pl: 'Plik',\n id: 'File',\n vi: 'Tệp',\n }),\n markdown: t({\n en: 'Markdown',\n 'en-GB': 'Markdown',\n fr: 'Markdown',\n es: 'Markdown',\n de: 'Markdown',\n ja: 'マークダウン',\n ko: '마크다운',\n zh: 'Markdown',\n it: 'Markdown',\n pt: 'Markdown',\n hi: 'मार्कडाउन',\n ar: 'مارك داون',\n ru: 'Markdown',\n tr: 'Markdown',\n pl: 'Markdown',\n id: 'Markdown',\n vi: 'Markdown',\n }),\n reactNode: t({\n en: 'React Node',\n 'en-GB': 'React Node',\n fr: 'Node React',\n es: 'Nodo React',\n de: 'React-Knoten',\n ja: 'リアル・ノード',\n ko: '리액 노드',\n zh: 'React 节点',\n it: 'Nodo React',\n pt: 'Nó React',\n hi: 'रेड नोड',\n ar: 'عقدة رياكت',\n ru: 'Реакт узел',\n tr: 'React Node',\n pl: 'Węzeł React',\n id: 'React Node',\n vi: 'React Node',\n }),\n },\n title: 'Node type selector',\n description:\n 'Defines the available node types that can be selected for content modeling, including text, number, boolean, object structures, arrays, and other specialized types like enumeration, gender, condition, and markdown.',\n tags: ['content modeling', 'field type', 'editor'],\n} satisfies Dictionary;\n\nexport default nodeTypeSelectorContent;\n"],"mappings":"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"}
1
+ {"version":3,"file":"nodeTypeSelector.content.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/nodeTypeSelector.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nexport const nodeTypeSelectorContent = {\n key: 'node-type-selector',\n content: {\n triggerPlaceHolder: t({\n en: 'Node type',\n 'en-GB': 'Node type',\n fr: 'Type du Nœud',\n es: 'Tipo del nodo',\n de: 'Knotentyp',\n ja: 'ノードタイプ',\n ko: '노드 유형',\n zh: '节点类型',\n it: 'Tipo di nodo',\n pt: 'Tipo de nó',\n hi: 'नोड प्रकार',\n ar: 'نوع العقدة',\n ru: 'Тип узла',\n tr: 'Düğüm türü',\n pl: 'Typ węzła',\n id: 'Tipe Node',\n vi: 'Kiểu node',\n uk: 'Тип вузла',\n }),\n multilingual: t({\n en: 'Multilingual content',\n 'en-GB': 'Multilingual content',\n fr: 'Contenu Multilingue',\n es: 'Contenido multilingüe',\n de: 'Mehrsprachiger Inhalt',\n ja: '複数言語コンテンツ',\n ko: '다중 언어 콘텐츠',\n zh: '多语言内容',\n it: 'Contenuto multilingue',\n pt: 'Conteúdo multilíngue',\n hi: 'बहुभाषी सामग्री',\n ar: 'محتوى متعدد اللغات',\n ru: 'Многоязычный контент',\n tr: 'Çok dilli içerik',\n pl: 'Treść wielojęzyczna',\n id: 'Konten multibahasa',\n vi: 'Nội dung đa ngôn ngữ',\n uk: 'Багатомовний вміст',\n }),\n text: t({\n en: 'Text',\n 'en-GB': 'Text',\n fr: 'Texte',\n es: 'Texto',\n de: 'Text',\n ja: 'テキスト',\n ko: '텍스트',\n zh: '文本',\n it: 'Testo',\n pt: 'Texto',\n hi: 'पाठ',\n ar: 'نص',\n ru: 'Текст',\n tr: 'Metin',\n pl: 'Tekst',\n id: 'Teks',\n vi: 'Văn bản',\n uk: 'Текст',\n }),\n number: t({\n en: 'Number',\n 'en-GB': 'Number',\n fr: 'Nombre',\n es: 'Número',\n de: 'Zahl',\n ja: '数字',\n ko: '숫자',\n zh: '数字',\n it: 'Numero',\n pt: 'Número',\n hi: 'संख्या',\n ar: 'رقم',\n ru: 'Число',\n tr: 'Sayı',\n pl: 'Liczba',\n id: 'Angka',\n vi: 'Số',\n uk: 'Число',\n }),\n boolean: t({\n en: 'Boolean',\n 'en-GB': 'Boolean',\n fr: 'Booléen',\n es: 'Booleano',\n de: 'Bool',\n ja: 'ブール',\n ko: '불리언',\n zh: '布尔',\n it: 'Booleano',\n pt: 'Booleano',\n hi: 'बूलियन',\n ar: 'منطقي',\n ru: 'Булево',\n tr: 'Boolean',\n pl: 'Wartość logiczna',\n id: 'Boolean',\n vi: 'Boolean',\n uk: 'Булеве',\n }),\n node: t({\n en: 'Object',\n 'en-GB': 'Object',\n fr: 'Objet',\n es: 'Objeto',\n de: 'Objekt',\n ja: 'オブジェクト',\n ko: '객체',\n zh: '对象',\n it: 'Oggetto',\n pt: 'Objeto',\n hi: 'ऑब्जेक्ट',\n ar: 'كائن',\n ru: 'Объект',\n tr: 'Nesne',\n pl: 'Obiekt',\n id: 'Object',\n vi: 'Đối tượng',\n uk: \"Об'єкт\",\n }),\n array: t({\n en: 'Array',\n 'en-GB': 'Array',\n fr: 'Tableau',\n es: 'Arreglo',\n de: 'Array',\n ja: '配列',\n ko: '배열',\n zh: '数组',\n it: 'Array',\n pt: 'Array',\n hi: 'ऐरे',\n ar: 'مصفوفة',\n ru: 'Массив',\n tr: 'Dizi',\n pl: 'Tablica',\n id: 'Array',\n vi: 'Mảng',\n uk: 'Масив',\n }),\n enumeration: t({\n en: 'Enumeration',\n 'en-GB': 'Enumeration',\n fr: 'Énumération',\n es: 'Enumeración',\n de: 'Enumeration',\n ja: '列挙',\n ko: '열거',\n zh: '枚举',\n it: 'Enumerazione',\n pt: 'Enumeração',\n hi: 'गणना',\n ar: 'تعداد',\n ru: 'Перечисление',\n tr: 'Numaralandırma',\n pl: 'Wyliczenie',\n id: 'Enumeration',\n vi: 'Kiểu liệt kê',\n uk: 'Перерахування',\n }),\n gender: t({\n en: 'Gender',\n 'en-GB': 'Gender',\n fr: 'Genre',\n es: 'Género',\n de: 'Geschlecht',\n ja: '性別',\n ko: '성별',\n zh: '性别',\n it: 'Genere',\n pt: 'Gênero',\n hi: 'लिंग',\n ar: 'جنس',\n ru: 'Пол',\n tr: 'Cins',\n pl: 'Płeć',\n id: 'Gender',\n vi: 'Giới tính',\n uk: 'Стать',\n }),\n nest: t({\n en: 'Nesting',\n 'en-GB': 'Nesting',\n fr: 'Imbriquation',\n es: 'Anidación',\n de: 'Vererbung',\n ja: 'ネスト',\n ko: '중첩',\n zh: '嵌套',\n it: 'Nidificazione',\n pt: 'Nido',\n hi: 'नेस्टेंस',\n ar: 'مستوى',\n ru: 'Вложенность',\n tr: 'İç içe geçme',\n pl: 'Zagnieżdżanie',\n id: 'Nesting',\n vi: 'Lồng nhau',\n uk: 'Вкладеність',\n }),\n insertion: t({\n en: 'Insertion',\n 'en-GB': 'Insertion',\n fr: 'Insertion',\n es: 'Inserción',\n de: 'Einfügung',\n ja: '挿入',\n ko: '삽입',\n zh: '插入',\n it: 'Inserimento',\n pt: 'Inserção',\n hi: 'सम्मिलन',\n ar: 'إدراج',\n ru: 'Вставка',\n tr: 'Ekleme',\n pl: 'Wstawianie',\n id: 'Insertion',\n vi: 'Chèn',\n uk: 'Вставка',\n }),\n condition: t({\n en: 'Condition',\n 'en-GB': 'Condition',\n fr: 'Condition',\n es: 'Condición',\n de: 'Bedingung',\n ja: '条件',\n ko: '조건',\n zh: '条件',\n it: 'Condizione',\n pt: 'Condição',\n hi: 'शर्त्ता',\n ar: 'شرط',\n ru: 'Условие',\n tr: 'Koşul',\n pl: 'Warunek',\n id: 'Condition',\n vi: 'Điều kiện',\n uk: 'Умова',\n }),\n file: t({\n en: 'File',\n 'en-GB': 'File',\n fr: 'Fichier',\n es: 'Archivo',\n de: 'Datei',\n ja: 'ファイル',\n ko: '파일',\n zh: '文件',\n it: 'File',\n pt: 'Arquivo',\n hi: 'फ़ाइल',\n ar: 'ملف',\n ru: 'Файл',\n tr: 'Dosya',\n pl: 'Plik',\n id: 'File',\n vi: 'Tệp',\n uk: 'Файл',\n }),\n markdown: t({\n en: 'Markdown',\n 'en-GB': 'Markdown',\n fr: 'Markdown',\n es: 'Markdown',\n de: 'Markdown',\n ja: 'マークダウン',\n ko: '마크다운',\n zh: 'Markdown',\n it: 'Markdown',\n pt: 'Markdown',\n hi: 'मार्कडाउन',\n ar: 'مارك داون',\n ru: 'Markdown',\n tr: 'Markdown',\n pl: 'Markdown',\n id: 'Markdown',\n vi: 'Markdown',\n uk: 'Markdown',\n }),\n reactNode: t({\n en: 'React Node',\n 'en-GB': 'React Node',\n fr: 'Node React',\n es: 'Nodo React',\n de: 'React-Knoten',\n ja: 'リアル・ノード',\n ko: '리액 노드',\n zh: 'React 节点',\n it: 'Nodo React',\n pt: 'Nó React',\n hi: 'रेड नोड',\n ar: 'عقدة رياكت',\n ru: 'Реакт узел',\n tr: 'React Node',\n pl: 'Węzeł React',\n id: 'React Node',\n vi: 'React Node',\n uk: 'React-вузол',\n }),\n },\n title: 'Node type selector',\n description:\n 'Defines the available node types that can be selected for content modeling, including text, number, boolean, object structures, arrays, and other specialized types like enumeration, gender, condition, and markdown.',\n tags: ['content modeling', 'field type', 'editor'],\n} satisfies Dictionary;\n\nexport default nodeTypeSelectorContent;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["DropDown: DropDownType","Trigger: FC<TriggerProps>","Panel: FC<PanelProps>"],"sources":["../../../../src/components/DropDown/index.tsx"],"sourcesContent":["import { cn } from '@utils/cn';\nimport type { FC, HTMLAttributes } from 'react';\nimport { Button, type ButtonProps } from '../Button';\nimport { MaxHeightSmoother } from '../MaxHeightSmoother';\n\n/**\n * Props for the DropDown component\n */\nexport interface DropDownProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Unique identifier that links the trigger and panel for accessibility.\n * This is used to generate proper ARIA attributes.\n * @example \"user-menu\"\n * @example \"language-selector\"\n */\n identifier: string;\n}\n\nexport type DropDownType = FC<DropDownProps> & {\n Trigger: FC<TriggerProps>;\n Panel: FC<PanelProps>;\n};\n\n/**\n * DropDown Component\n *\n * A compound component that provides dropdown/popover functionality with flexible trigger mechanisms.\n * Supports hover, focus, and controlled visibility states with proper accessibility features.\n *\n * @example\n * ```tsx\n * // Basic hover dropdown\n * <DropDown identifier=\"menu\">\n * <DropDown.Trigger identifier=\"menu\">\n * Open Menu\n * </DropDown.Trigger>\n * <DropDown.Panel identifier=\"menu\" isOverable>\n * <div>Menu content</div>\n * </DropDown.Panel>\n * </DropDown>\n *\n * // Focus-based dropdown for accessibility\n * <DropDown identifier=\"accessible-menu\">\n * <DropDown.Trigger identifier=\"accessible-menu\">\n * Keyboard Accessible Menu\n * </DropDown.Trigger>\n * <DropDown.Panel identifier=\"accessible-menu\" isFocusable>\n * <div>Accessible content</div>\n * </DropDown.Panel>\n * </DropDown>\n *\n * // Controlled dropdown\n * <DropDown identifier=\"controlled\">\n * <DropDown.Trigger identifier=\"controlled\">\n * Controlled Menu\n * </DropDown.Trigger>\n * <DropDown.Panel identifier=\"controlled\" isHidden={!isOpen}>\n * <div>Controlled content</div>\n * </DropDown.Panel>\n * </DropDown>\n * ```\n *\n * @component\n * @accessibility\n * - Uses proper ARIA attributes (aria-haspopup, aria-labelledby, etc.)\n * - Supports keyboard navigation with focus management\n * - Screen reader compatible with proper role and labeling\n * - Maintains focus trap within dropdown when needed\n */\nexport const DropDown: DropDownType = ({\n children,\n className,\n identifier,\n ...props\n}) => (\n <div\n className={cn(`group/dropdown relative flex`, className)}\n aria-label={`DropDown ${identifier}`}\n id={`dropdown-container-${identifier}`}\n {...props}\n >\n {children}\n </div>\n);\n\n/**\n * Props for the DropDown.Trigger component\n */\nexport interface TriggerProps extends Partial<ButtonProps> {\n /**\n * Unique identifier that matches the parent DropDown identifier\n * @example \"user-menu\"\n */\n identifier: string;\n}\n\n/**\n * DropDown.Trigger Component\n *\n * The clickable/focusable element that controls the dropdown panel visibility.\n * Built on top of the Button component with enhanced dropdown-specific behaviors.\n *\n * @example\n * ```tsx\n * <DropDown.Trigger identifier=\"menu\">\n * <div>Click to open</div>\n * </DropDown.Trigger>\n * ```\n *\n * @component\n * @accessibility\n * - Automatically generates appropriate ARIA attributes\n * - Maintains proper focus management across browsers\n * - Works with keyboard navigation (Tab, Enter, Space)\n * - Announces dropdown state to screen readers\n *\n * @note Don't nest Button components inside the Trigger - it's already a button\n */\nconst Trigger: FC<TriggerProps> = ({\n children,\n identifier,\n className,\n label,\n ...props\n}) => (\n <Button\n className={cn([\n 'w-full cursor-pointer',\n 'group-focus-within/dropdown:bg-current/20 group-focus-within/dropdown:ring-4',\n className,\n ])}\n label={label ?? `Open panel ${identifier}`}\n aria-haspopup=\"true\"\n aria-controls={`dropdown-panel-${identifier}`}\n id={`dropdown-trigger-${identifier}`}\n onClick={(e) => {\n // Ensure focus behavior is consistent across all mobile browsers\n (e.currentTarget as HTMLButtonElement).focus();\n }}\n variant=\"none\"\n {...props}\n >\n {children}\n </Button>\n);\n\n/**\n * Horizontal alignment options for the dropdown panel relative to the trigger\n */\nexport enum DropDownAlign {\n /** Align panel to the start (left in LTR, right in RTL) of the trigger */\n START = 'start',\n /** Align panel to the end (right in LTR, left in RTL) of the trigger */\n END = 'end',\n}\n\n/**\n * Vertical alignment options for the dropdown panel relative to the trigger\n */\nexport enum DropDownYAlign {\n /** Position panel below the trigger (default) */\n BELOW = 'below',\n /** Position panel above the trigger */\n ABOVE = 'above',\n}\n\n/**\n * Props for the DropDown.Panel component\n */\nexport interface PanelProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Whether the panel should be visible when the trigger is focused.\n * Enables keyboard accessibility for the dropdown.\n * @default false\n */\n isFocusable?: boolean;\n\n /**\n * Controls panel visibility explicitly.\n * - `true`: Panel is hidden\n * - `false`: Panel is visible\n * - `undefined`: Panel visibility controlled by hover/focus states\n * @default undefined\n */\n isHidden?: boolean;\n\n /**\n * Whether the panel should be visible when hovering over the trigger.\n * Provides quick access via mouse interaction.\n * @default false\n */\n isOverable?: boolean;\n\n /**\n * Unique identifier that matches the parent DropDown identifier\n * @example \"user-menu\"\n */\n identifier: string;\n\n /**\n * Horizontal alignment of the panel relative to the trigger\n * @default DropDownAlign.START\n */\n align?: DropDownAlign | `${DropDownAlign}`;\n\n /**\n * Vertical alignment of the panel relative to the trigger\n * @default DropDownYAlign.BELOW\n */\n yAlign?: DropDownYAlign | `${DropDownYAlign}`;\n}\n\n/**\n * DropDown.Panel Component\n *\n * The content area that appears when the dropdown is triggered.\n * Supports multiple trigger methods (hover, focus, controlled) with smooth animations.\n *\n * @example\n * ```tsx\n * // Hover-triggered panel\n * <DropDown.Panel identifier=\"menu\" isOverable>\n * <div>Content appears on hover</div>\n * </DropDown.Panel>\n *\n * // Focus-triggered panel (accessible)\n * <DropDown.Panel identifier=\"menu\" isFocusable>\n * <div>Content appears on focus</div>\n * </DropDown.Panel>\n *\n * // Controlled panel\n * <DropDown.Panel identifier=\"menu\" isHidden={!isOpen}>\n * <div>Content visibility controlled externally</div>\n * </DropDown.Panel>\n *\n * // Right-aligned panel\n * <DropDown.Panel identifier=\"menu\" align={DropDownAlign.END} isOverable>\n * <div>Right-aligned content</div>\n * </DropDown.Panel>\n *\n * // Panel opening above the trigger\n * <DropDown.Panel identifier=\"menu\" yAlign={DropDownYAlign.ABOVE} isOverable>\n * <div>Content appears above</div>\n * </DropDown.Panel>\n * ```\n *\n * @component\n * @accessibility\n * - Proper ARIA attributes (role, aria-labelledby, aria-hidden)\n * - Smooth height transitions with MaxHeightSmoother\n * - Keyboard navigation support when isFocusable is enabled\n * - Screen reader announcements for state changes\n */\nconst Panel: FC<PanelProps> = ({\n children,\n isHidden = undefined,\n isOverable = false,\n isFocusable = false,\n align = DropDownAlign.START,\n yAlign = DropDownYAlign.BELOW,\n identifier,\n className,\n ...props\n}) => (\n <div\n className={cn(\n 'absolute z-100 min-w-full',\n /* Horizontal positioning */\n align === DropDownAlign.START && 'left-0',\n align === DropDownAlign.END && 'right-0',\n /* Vertical positioning */\n yAlign === DropDownYAlign.BELOW && 'top-[calc(100%+0.5rem)]',\n yAlign === DropDownYAlign.ABOVE && 'bottom-[calc(100%+0.5rem)]',\n className\n )}\n aria-hidden={isHidden}\n role=\"region\"\n aria-labelledby={`dropdown-trigger-${identifier}`}\n id={`dropdown-panel-${identifier}`}\n >\n <MaxHeightSmoother\n isHidden={isHidden}\n className={cn(\n 'overflow-x-visible',\n isHidden === false && 'invisible',\n isHidden === true && 'visible',\n isOverable &&\n 'group-hover/dropdown:visible group-hover/dropdown:grid-rows-[1fr]',\n isFocusable &&\n 'group-focus-within/dropdown:visible group-focus-within/dropdown:grid-rows-[1fr]'\n )}\n {...props}\n >\n {children}\n </MaxHeightSmoother>\n </div>\n);\n\nDropDown.Trigger = Trigger;\nDropDown.Panel = Panel;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqEA,MAAaA,YAA0B,EACrC,UACA,WACA,YACA,GAAG,YAEH,oBAAC;CACC,WAAW,GAAG,gCAAgC,UAAU;CACxD,cAAY,YAAY;CACxB,IAAI,sBAAsB;CAC1B,GAAI;CAEH;EACG;;;;;;;;;;;;;;;;;;;;;;;AAoCR,MAAMC,WAA6B,EACjC,UACA,YACA,WACA,OACA,GAAG,YAEH,oBAAC;CACC,WAAW,GAAG;EACZ;EACA;EACA;EACD,CAAC;CACF,OAAO,SAAS,cAAc;CAC9B,iBAAc;CACd,iBAAe,kBAAkB;CACjC,IAAI,oBAAoB;CACxB,UAAU,MAAM;AAEd,EAAC,EAAE,cAAoC,OAAO;;CAEhD,SAAQ;CACR,GAAI;CAEH;EACM;;;;AAMX,IAAY,0DAAL;;AAEL;;AAEA;;;;;;AAMF,IAAY,4DAAL;;AAEL;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0FF,MAAMC,SAAyB,EAC7B,UACA,WAAW,QACX,aAAa,OACb,cAAc,OACd,QAAQ,cAAc,OACtB,SAAS,eAAe,OACxB,YACA,WACA,GAAG,YAEH,oBAAC;CACC,WAAW,GACT,6BAEA,UAAU,cAAc,SAAS,UACjC,UAAU,cAAc,OAAO,WAE/B,WAAW,eAAe,SAAS,2BACnC,WAAW,eAAe,SAAS,8BACnC,UACD;CACD,eAAa;CACb,MAAK;CACL,mBAAiB,oBAAoB;CACrC,IAAI,kBAAkB;WAEtB,oBAAC;EACW;EACV,WAAW,GACT,sBACA,aAAa,SAAS,aACtB,aAAa,QAAQ,WACrB,cACE,qEACF,eACE,kFACH;EACD,GAAI;EAEH;GACiB;EAChB;AAGR,SAAS,UAAU;AACnB,SAAS,QAAQ"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/DropDown/index.tsx"],"sourcesContent":["import { cn } from '@utils/cn';\nimport type { FC, HTMLAttributes } from 'react';\nimport { Button, type ButtonProps } from '../Button';\nimport { MaxHeightSmoother } from '../MaxHeightSmoother';\n\n/**\n * Props for the DropDown component\n */\nexport interface DropDownProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Unique identifier that links the trigger and panel for accessibility.\n * This is used to generate proper ARIA attributes.\n * @example \"user-menu\"\n * @example \"language-selector\"\n */\n identifier: string;\n}\n\nexport type DropDownType = FC<DropDownProps> & {\n Trigger: FC<TriggerProps>;\n Panel: FC<PanelProps>;\n};\n\n/**\n * DropDown Component\n *\n * A compound component that provides dropdown/popover functionality with flexible trigger mechanisms.\n * Supports hover, focus, and controlled visibility states with proper accessibility features.\n *\n * @example\n * ```tsx\n * // Basic hover dropdown\n * <DropDown identifier=\"menu\">\n * <DropDown.Trigger identifier=\"menu\">\n * Open Menu\n * </DropDown.Trigger>\n * <DropDown.Panel identifier=\"menu\" isOverable>\n * <div>Menu content</div>\n * </DropDown.Panel>\n * </DropDown>\n *\n * // Focus-based dropdown for accessibility\n * <DropDown identifier=\"accessible-menu\">\n * <DropDown.Trigger identifier=\"accessible-menu\">\n * Keyboard Accessible Menu\n * </DropDown.Trigger>\n * <DropDown.Panel identifier=\"accessible-menu\" isFocusable>\n * <div>Accessible content</div>\n * </DropDown.Panel>\n * </DropDown>\n *\n * // Controlled dropdown\n * <DropDown identifier=\"controlled\">\n * <DropDown.Trigger identifier=\"controlled\">\n * Controlled Menu\n * </DropDown.Trigger>\n * <DropDown.Panel identifier=\"controlled\" isHidden={!isOpen}>\n * <div>Controlled content</div>\n * </DropDown.Panel>\n * </DropDown>\n * ```\n *\n * @component\n * @accessibility\n * - Uses proper ARIA attributes (aria-haspopup, aria-labelledby, etc.)\n * - Supports keyboard navigation with focus management\n * - Screen reader compatible with proper role and labeling\n * - Maintains focus trap within dropdown when needed\n */\nexport const DropDown: DropDownType = ({\n children,\n className,\n identifier,\n ...props\n}) => (\n <div\n className={cn(`group/dropdown relative flex`, className)}\n aria-label={`DropDown ${identifier}`}\n id={`dropdown-container-${identifier}`}\n {...props}\n >\n {children}\n </div>\n);\n\n/**\n * Props for the DropDown.Trigger component\n */\nexport interface TriggerProps extends Partial<ButtonProps> {\n /**\n * Unique identifier that matches the parent DropDown identifier\n * @example \"user-menu\"\n */\n identifier: string;\n}\n\n/**\n * DropDown.Trigger Component\n *\n * The clickable/focusable element that controls the dropdown panel visibility.\n * Built on top of the Button component with enhanced dropdown-specific behaviors.\n *\n * @example\n * ```tsx\n * <DropDown.Trigger identifier=\"menu\">\n * <div>Click to open</div>\n * </DropDown.Trigger>\n * ```\n *\n * @component\n * @accessibility\n * - Automatically generates appropriate ARIA attributes\n * - Maintains proper focus management across browsers\n * - Works with keyboard navigation (Tab, Enter, Space)\n * - Announces dropdown state to screen readers\n *\n * @note Don't nest Button components inside the Trigger - it's already a button\n */\nconst Trigger: FC<TriggerProps> = ({\n children,\n identifier,\n className,\n label,\n ...props\n}) => (\n <Button\n className={cn([\n 'w-full cursor-pointer',\n 'group-focus-within/dropdown:bg-current/20 group-focus-within/dropdown:ring-4',\n className,\n ])}\n label={label ?? `Open panel ${identifier}`}\n aria-haspopup=\"true\"\n aria-controls={`dropdown-panel-${identifier}`}\n id={`dropdown-trigger-${identifier}`}\n onClick={(e) => {\n // Ensure focus behavior is consistent across all mobile browsers\n (e.currentTarget as HTMLButtonElement).focus();\n }}\n variant=\"none\"\n {...props}\n >\n {children}\n </Button>\n);\n\n/**\n * Horizontal alignment options for the dropdown panel relative to the trigger\n */\nexport enum DropDownAlign {\n /** Align panel to the start (left in LTR, right in RTL) of the trigger */\n START = 'start',\n /** Align panel to the end (right in LTR, left in RTL) of the trigger */\n END = 'end',\n}\n\n/**\n * Vertical alignment options for the dropdown panel relative to the trigger\n */\nexport enum DropDownYAlign {\n /** Position panel below the trigger (default) */\n BELOW = 'below',\n /** Position panel above the trigger */\n ABOVE = 'above',\n}\n\n/**\n * Props for the DropDown.Panel component\n */\nexport interface PanelProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Whether the panel should be visible when the trigger is focused.\n * Enables keyboard accessibility for the dropdown.\n * @default false\n */\n isFocusable?: boolean;\n\n /**\n * Controls panel visibility explicitly.\n * - `true`: Panel is hidden\n * - `false`: Panel is visible\n * - `undefined`: Panel visibility controlled by hover/focus states\n * @default undefined\n */\n isHidden?: boolean;\n\n /**\n * Whether the panel should be visible when hovering over the trigger.\n * Provides quick access via mouse interaction.\n * @default false\n */\n isOverable?: boolean;\n\n /**\n * Unique identifier that matches the parent DropDown identifier\n * @example \"user-menu\"\n */\n identifier: string;\n\n /**\n * Horizontal alignment of the panel relative to the trigger\n * @default DropDownAlign.START\n */\n align?: DropDownAlign | `${DropDownAlign}`;\n\n /**\n * Vertical alignment of the panel relative to the trigger\n * @default DropDownYAlign.BELOW\n */\n yAlign?: DropDownYAlign | `${DropDownYAlign}`;\n}\n\n/**\n * DropDown.Panel Component\n *\n * The content area that appears when the dropdown is triggered.\n * Supports multiple trigger methods (hover, focus, controlled) with smooth animations.\n *\n * @example\n * ```tsx\n * // Hover-triggered panel\n * <DropDown.Panel identifier=\"menu\" isOverable>\n * <div>Content appears on hover</div>\n * </DropDown.Panel>\n *\n * // Focus-triggered panel (accessible)\n * <DropDown.Panel identifier=\"menu\" isFocusable>\n * <div>Content appears on focus</div>\n * </DropDown.Panel>\n *\n * // Controlled panel\n * <DropDown.Panel identifier=\"menu\" isHidden={!isOpen}>\n * <div>Content visibility controlled externally</div>\n * </DropDown.Panel>\n *\n * // Right-aligned panel\n * <DropDown.Panel identifier=\"menu\" align={DropDownAlign.END} isOverable>\n * <div>Right-aligned content</div>\n * </DropDown.Panel>\n *\n * // Panel opening above the trigger\n * <DropDown.Panel identifier=\"menu\" yAlign={DropDownYAlign.ABOVE} isOverable>\n * <div>Content appears above</div>\n * </DropDown.Panel>\n * ```\n *\n * @component\n * @accessibility\n * - Proper ARIA attributes (role, aria-labelledby, aria-hidden)\n * - Smooth height transitions with MaxHeightSmoother\n * - Keyboard navigation support when isFocusable is enabled\n * - Screen reader announcements for state changes\n */\nconst Panel: FC<PanelProps> = ({\n children,\n isHidden = undefined,\n isOverable = false,\n isFocusable = false,\n align = DropDownAlign.START,\n yAlign = DropDownYAlign.BELOW,\n identifier,\n className,\n ...props\n}) => (\n <div\n className={cn(\n 'absolute z-100 min-w-full',\n /* Horizontal positioning */\n align === DropDownAlign.START && 'left-0',\n align === DropDownAlign.END && 'right-0',\n /* Vertical positioning */\n yAlign === DropDownYAlign.BELOW && 'top-[calc(100%+0.5rem)]',\n yAlign === DropDownYAlign.ABOVE && 'bottom-[calc(100%+0.5rem)]',\n className\n )}\n aria-hidden={isHidden}\n role=\"region\"\n aria-labelledby={`dropdown-trigger-${identifier}`}\n id={`dropdown-panel-${identifier}`}\n >\n <MaxHeightSmoother\n isHidden={isHidden}\n className={cn(\n 'overflow-x-visible',\n isHidden === false && 'invisible',\n isHidden === true && 'visible',\n isOverable &&\n 'group-hover/dropdown:visible group-hover/dropdown:grid-rows-[1fr]',\n isFocusable &&\n 'group-focus-within/dropdown:visible group-focus-within/dropdown:grid-rows-[1fr]'\n )}\n {...props}\n >\n {children}\n </MaxHeightSmoother>\n </div>\n);\n\nDropDown.Trigger = Trigger;\nDropDown.Panel = Panel;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqEA,MAAa,YAA0B,EACrC,UACA,WACA,YACA,GAAG,YAEH,oBAAC;CACC,WAAW,GAAG,gCAAgC,UAAU;CACxD,cAAY,YAAY;CACxB,IAAI,sBAAsB;CAC1B,GAAI;CAEH;EACG;;;;;;;;;;;;;;;;;;;;;;;AAoCR,MAAM,WAA6B,EACjC,UACA,YACA,WACA,OACA,GAAG,YAEH,oBAAC;CACC,WAAW,GAAG;EACZ;EACA;EACA;EACD,CAAC;CACF,OAAO,SAAS,cAAc;CAC9B,iBAAc;CACd,iBAAe,kBAAkB;CACjC,IAAI,oBAAoB;CACxB,UAAU,MAAM;AAEd,EAAC,EAAE,cAAoC,OAAO;;CAEhD,SAAQ;CACR,GAAI;CAEH;EACM;;;;AAMX,IAAY,0DAAL;;AAEL;;AAEA;;;;;;AAMF,IAAY,4DAAL;;AAEL;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0FF,MAAM,SAAyB,EAC7B,UACA,WAAW,QACX,aAAa,OACb,cAAc,OACd,QAAQ,cAAc,OACtB,SAAS,eAAe,OACxB,YACA,WACA,GAAG,YAEH,oBAAC;CACC,WAAW,GACT,6BAEA,UAAU,cAAc,SAAS,UACjC,UAAU,cAAc,OAAO,WAE/B,WAAW,eAAe,SAAS,2BACnC,WAAW,eAAe,SAAS,8BACnC,UACD;CACD,eAAa;CACb,MAAK;CACL,mBAAiB,oBAAoB;CACrC,IAAI,kBAAkB;WAEtB,oBAAC;EACW;EACV,WAAW,GACT,sBACA,aAAa,SAAS,aACtB,aAAa,QAAQ,WACrB,cACE,qEACF,eACE,kFACH;EACD,GAAI;EAEH;GACiB;EAChB;AAGR,SAAS,UAAU;AACnB,SAAS,QAAQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditableFieldInput.mjs","names":["EditableFieldInput: FC<EditableFieldInputProps>"],"sources":["../../../../src/components/EditableField/EditableFieldInput.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, type Ref, useImperativeHandle, useMemo, useRef } from 'react';\nimport { Input, type InputProps } from '../Input';\nimport { EditableFieldLayout } from './EditableFieldLayout';\n\n/**\n * Props for the EditableFieldInput component, extending standard Input props\n */\ntype EditableFieldInputProps = InputProps & {\n /** Callback function called when the user saves the edited value */\n onSave?: (value: string) => void;\n /** Callback function called when the user cancels the edit operation */\n onCancel?: () => void;\n};\n\n/**\n * EditableFieldInput Component\n *\n * An inline editable input field that displays as read-only text until clicked.\n * When activated, it shows an input field with save and cancel buttons.\n *\n * @example\n * ```tsx\n * <EditableFieldInput\n * defaultValue=\"Edit me\"\n * placeholder=\"Click to edit...\"\n * onSave={(value) => console.log('Saved:', value)}\n * onCancel={() => console.log('Cancelled')}\n * />\n * ```\n *\n * ## Features\n * - **Inline Editing**: Click to edit, displays as text when not editing\n * - **Save/Cancel Actions**: Built-in save and cancel buttons with callbacks\n * - **Keyboard Support**: Accessible keyboard navigation\n * - **Input Variants**: Supports all Input component variants and sizes\n * - **Auto-save on Click Away**: Saves automatically when clicking outside\n * - **Ref Forwarding**: Exposes the underlying input element reference\n *\n * ## Accessibility\n * - Uses semantic HTML with proper ARIA attributes\n * - Keyboard accessible with tab navigation\n * - Screen reader friendly with descriptive labels\n * - Focus management for edit mode transitions\n *\n * @param props - EditableFieldInputProps extending InputProps\n * @returns React functional component\n */\nexport const EditableFieldInput: FC<EditableFieldInputProps> = ({\n onSave,\n onCancel,\n ref,\n ...props\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleSave = () => {\n // Your save logic here\n onSave?.(inputRef.current?.value ?? '');\n };\n\n const handleCancel = () => {\n if (inputRef.current) {\n inputRef.current.value = inputRef.current.defaultValue ?? '';\n }\n onCancel?.();\n };\n\n // Expose the input ref to parent components\n useImperativeHandle(ref as Ref<HTMLElement>, () => inputRef.current!);\n\n const value = useMemo(\n () =>\n (props.value as string) ??\n inputRef.current?.value ??\n (props.defaultValue as string),\n\n [props.value, props.defaultValue, inputRef.current?.value]\n );\n\n return (\n <EditableFieldLayout\n value={value}\n onCancel={handleCancel}\n onSave={handleSave}\n >\n <Input ref={inputRef} {...props} />\n </EditableFieldLayout>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,MAAaA,sBAAmD,EAC9D,QACA,UACA,KACA,GAAG,YACC;CACJ,MAAM,WAAW,OAAyB,KAAK;CAE/C,MAAM,mBAAmB;AAEvB,WAAS,SAAS,SAAS,SAAS,GAAG;;CAGzC,MAAM,qBAAqB;AACzB,MAAI,SAAS,QACX,UAAS,QAAQ,QAAQ,SAAS,QAAQ,gBAAgB;AAE5D,cAAY;;AAId,qBAAoB,WAA+B,SAAS,QAAS;AAWrE,QACE,oBAAC;EACC,OAXU,cAET,MAAM,SACP,SAAS,SAAS,SACjB,MAAM,cAET;GAAC,MAAM;GAAO,MAAM;GAAc,SAAS,SAAS;GAAM,CAC3D;EAKG,UAAU;EACV,QAAQ;YAER,oBAAC;GAAM,KAAK;GAAU,GAAI;IAAS;GACf"}
1
+ {"version":3,"file":"EditableFieldInput.mjs","names":[],"sources":["../../../../src/components/EditableField/EditableFieldInput.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, type Ref, useImperativeHandle, useMemo, useRef } from 'react';\nimport { Input, type InputProps } from '../Input';\nimport { EditableFieldLayout } from './EditableFieldLayout';\n\n/**\n * Props for the EditableFieldInput component, extending standard Input props\n */\ntype EditableFieldInputProps = InputProps & {\n /** Callback function called when the user saves the edited value */\n onSave?: (value: string) => void;\n /** Callback function called when the user cancels the edit operation */\n onCancel?: () => void;\n};\n\n/**\n * EditableFieldInput Component\n *\n * An inline editable input field that displays as read-only text until clicked.\n * When activated, it shows an input field with save and cancel buttons.\n *\n * @example\n * ```tsx\n * <EditableFieldInput\n * defaultValue=\"Edit me\"\n * placeholder=\"Click to edit...\"\n * onSave={(value) => console.log('Saved:', value)}\n * onCancel={() => console.log('Cancelled')}\n * />\n * ```\n *\n * ## Features\n * - **Inline Editing**: Click to edit, displays as text when not editing\n * - **Save/Cancel Actions**: Built-in save and cancel buttons with callbacks\n * - **Keyboard Support**: Accessible keyboard navigation\n * - **Input Variants**: Supports all Input component variants and sizes\n * - **Auto-save on Click Away**: Saves automatically when clicking outside\n * - **Ref Forwarding**: Exposes the underlying input element reference\n *\n * ## Accessibility\n * - Uses semantic HTML with proper ARIA attributes\n * - Keyboard accessible with tab navigation\n * - Screen reader friendly with descriptive labels\n * - Focus management for edit mode transitions\n *\n * @param props - EditableFieldInputProps extending InputProps\n * @returns React functional component\n */\nexport const EditableFieldInput: FC<EditableFieldInputProps> = ({\n onSave,\n onCancel,\n ref,\n ...props\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleSave = () => {\n // Your save logic here\n onSave?.(inputRef.current?.value ?? '');\n };\n\n const handleCancel = () => {\n if (inputRef.current) {\n inputRef.current.value = inputRef.current.defaultValue ?? '';\n }\n onCancel?.();\n };\n\n // Expose the input ref to parent components\n useImperativeHandle(ref as Ref<HTMLElement>, () => inputRef.current!);\n\n const value = useMemo(\n () =>\n (props.value as string) ??\n inputRef.current?.value ??\n (props.defaultValue as string),\n\n [props.value, props.defaultValue, inputRef.current?.value]\n );\n\n return (\n <EditableFieldLayout\n value={value}\n onCancel={handleCancel}\n onSave={handleSave}\n >\n <Input ref={inputRef} {...props} />\n </EditableFieldLayout>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,MAAa,sBAAmD,EAC9D,QACA,UACA,KACA,GAAG,YACC;CACJ,MAAM,WAAW,OAAyB,KAAK;CAE/C,MAAM,mBAAmB;AAEvB,WAAS,SAAS,SAAS,SAAS,GAAG;;CAGzC,MAAM,qBAAqB;AACzB,MAAI,SAAS,QACX,UAAS,QAAQ,QAAQ,SAAS,QAAQ,gBAAgB;AAE5D,cAAY;;AAId,qBAAoB,WAA+B,SAAS,QAAS;AAWrE,QACE,oBAAC;EACC,OAXU,cAET,MAAM,SACP,SAAS,SAAS,SACjB,MAAM,cAET;GAAC,MAAM;GAAO,MAAM;GAAc,SAAS,SAAS;GAAM,CAC3D;EAKG,UAAU;EACV,QAAQ;YAER,oBAAC;GAAM,KAAK;GAAU,GAAI;IAAS;GACf"}
@@ -2,8 +2,8 @@
2
2
 
3
3
  import { cn } from "../../utils/cn.mjs";
4
4
  import { Button, ButtonColor, ButtonSize, ButtonVariant } from "../Button/Button.mjs";
5
- import { useCallback, useEffect, useRef, useState } from "react";
6
5
  import { Check, Pencil, X } from "lucide-react";
6
+ import { useCallback, useEffect, useRef, useState } from "react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
 
9
9
  //#region src/components/EditableField/EditableFieldLayout.tsx
@@ -1 +1 @@
1
- {"version":3,"file":"EditableFieldLayout.mjs","names":["EditableFieldLayout: FC<EditableFieldLayoutProps>"],"sources":["../../../../src/components/EditableField/EditableFieldLayout.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@utils/cn';\nimport { Check, Pencil, X } from 'lucide-react';\nimport {\n type FC,\n type HTMLAttributes,\n type ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Button, ButtonColor, ButtonSize, ButtonVariant } from '../Button';\n\ntype EditableFieldLayoutProps = {\n value?: string | null | undefined;\n onCancel: () => void;\n onSave: () => void;\n children: ReactNode;\n isDisabled?: boolean;\n} & HTMLAttributes<HTMLSpanElement>;\n\nexport const EditableFieldLayout: FC<EditableFieldLayoutProps> = ({\n value = '',\n onCancel,\n onSave,\n onClick,\n children,\n isDisabled,\n ...props\n}) => {\n const [isEditing, setIsEditing] = useState(false);\n const editableFieldRef = useRef<HTMLSpanElement>(null);\n\n const handleSave = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n setIsEditing(false);\n onSave();\n };\n\n const handleCancel = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n setIsEditing(false);\n onCancel();\n };\n\n const result = !value || value === '' ? '-' : value;\n\n const handleClickOutside = useCallback(\n (e: MouseEvent) => {\n // Check if there's any text selected\n const selection = window.getSelection();\n if (selection && selection.toString().trim() !== '') {\n // If there is a selection, do not trigger the save and exit early.\n return;\n }\n\n // Proceed if the click is truly outside the component.\n if (\n editableFieldRef.current &&\n !editableFieldRef.current.contains(e.target as Node)\n ) {\n setIsEditing(false);\n onSave();\n }\n },\n [onSave]\n );\n\n useEffect(() => {\n if (isEditing) {\n document.addEventListener('click', handleClickOutside);\n } else {\n document.removeEventListener('click', handleClickOutside);\n }\n\n return () => document.removeEventListener('click', handleClickOutside);\n }, [handleClickOutside, isEditing]);\n\n return (\n <span\n className=\"group/editable-field flex gap-2\"\n role=\"button\"\n tabIndex={0}\n onClick={(e) => {\n setIsEditing(true);\n onClick?.(e);\n }}\n ref={editableFieldRef}\n {...props}\n >\n <div\n className={cn('flex flex-1 gap-2', isEditing ? 'display' : 'hidden')}\n key={String(isEditing)}\n >\n {children}\n <Button\n label=\"Save\"\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n Icon={Check}\n onClick={handleSave}\n disabled={isDisabled}\n className=\"!text-current\"\n role=\"button\"\n tabIndex={0}\n aria-label=\"Save changes\"\n data-testid=\"editable-field-save-button\"\n />\n <Button\n label=\"Cancel\"\n color={ButtonColor.TEXT}\n variant={ButtonVariant.HOVERABLE}\n className=\"!text-current\"\n size={ButtonSize.ICON_SM}\n Icon={X}\n onClick={handleCancel}\n disabled={isDisabled}\n role=\"button\"\n tabIndex={0}\n aria-label=\"Cancel changes\"\n data-testid=\"editable-field-cancel-button\"\n />\n </div>\n\n <div\n className={cn('flex flex-1 gap-2', isEditing ? 'hidden' : 'display')}\n >\n <span className=\"ml-2 flex w-full whitespace-pre-wrap p-1 text-sm leading-6\">\n {result}\n </span>\n <Button\n label=\"Edit\"\n Icon={Pencil}\n color={ButtonColor.TEXT}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n className=\"!text-current invisible group-hover/editable-field:visible\"\n disabled={isDisabled}\n onClick={(e) => {\n e.stopPropagation();\n setIsEditing(true);\n }}\n />\n </div>\n </span>\n );\n};\n"],"mappings":";;;;;;;;;AAuBA,MAAaA,uBAAqD,EAChE,QAAQ,IACR,UACA,QACA,SACA,UACA,YACA,GAAG,YACC;CACJ,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;CACjD,MAAM,mBAAmB,OAAwB,KAAK;CAEtD,MAAM,cAAc,MAA2C;AAC7D,IAAE,iBAAiB;AACnB,eAAa,MAAM;AACnB,UAAQ;;CAGV,MAAM,gBAAgB,MAA2C;AAC/D,IAAE,iBAAiB;AACnB,eAAa,MAAM;AACnB,YAAU;;CAGZ,MAAM,SAAS,CAAC,SAAS,UAAU,KAAK,MAAM;CAE9C,MAAM,qBAAqB,aACxB,MAAkB;EAEjB,MAAM,YAAY,OAAO,cAAc;AACvC,MAAI,aAAa,UAAU,UAAU,CAAC,MAAM,KAAK,GAE/C;AAIF,MACE,iBAAiB,WACjB,CAAC,iBAAiB,QAAQ,SAAS,EAAE,OAAe,EACpD;AACA,gBAAa,MAAM;AACnB,WAAQ;;IAGZ,CAAC,OAAO,CACT;AAED,iBAAgB;AACd,MAAI,UACF,UAAS,iBAAiB,SAAS,mBAAmB;MAEtD,UAAS,oBAAoB,SAAS,mBAAmB;AAG3D,eAAa,SAAS,oBAAoB,SAAS,mBAAmB;IACrE,CAAC,oBAAoB,UAAU,CAAC;AAEnC,QACE,qBAAC;EACC,WAAU;EACV,MAAK;EACL,UAAU;EACV,UAAU,MAAM;AACd,gBAAa,KAAK;AAClB,aAAU,EAAE;;EAEd,KAAK;EACL,GAAI;aAEJ,qBAAC;GACC,WAAW,GAAG,qBAAqB,YAAY,YAAY,SAAS;;IAGnE;IACD,oBAAC;KACC,OAAM;KACN,SAAS,cAAc;KACvB,MAAM,WAAW;KACjB,OAAO,YAAY;KACnB,MAAM;KACN,SAAS;KACT,UAAU;KACV,WAAU;KACV,MAAK;KACL,UAAU;KACV,cAAW;KACX,eAAY;MACZ;IACF,oBAAC;KACC,OAAM;KACN,OAAO,YAAY;KACnB,SAAS,cAAc;KACvB,WAAU;KACV,MAAM,WAAW;KACjB,MAAM;KACN,SAAS;KACT,UAAU;KACV,MAAK;KACL,UAAU;KACV,cAAW;KACX,eAAY;MACZ;;KA9BG,OAAO,UAAU,CA+BlB,EAEN,qBAAC;GACC,WAAW,GAAG,qBAAqB,YAAY,WAAW,UAAU;cAEpE,oBAAC;IAAK,WAAU;cACb;KACI,EACP,oBAAC;IACC,OAAM;IACN,MAAM;IACN,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,WAAU;IACV,UAAU;IACV,UAAU,MAAM;AACd,OAAE,iBAAiB;AACnB,kBAAa,KAAK;;KAEpB;IACE;GACD"}
1
+ {"version":3,"file":"EditableFieldLayout.mjs","names":[],"sources":["../../../../src/components/EditableField/EditableFieldLayout.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@utils/cn';\nimport { Check, Pencil, X } from 'lucide-react';\nimport {\n type FC,\n type HTMLAttributes,\n type ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Button, ButtonColor, ButtonSize, ButtonVariant } from '../Button';\n\ntype EditableFieldLayoutProps = {\n value?: string | null | undefined;\n onCancel: () => void;\n onSave: () => void;\n children: ReactNode;\n isDisabled?: boolean;\n} & HTMLAttributes<HTMLSpanElement>;\n\nexport const EditableFieldLayout: FC<EditableFieldLayoutProps> = ({\n value = '',\n onCancel,\n onSave,\n onClick,\n children,\n isDisabled,\n ...props\n}) => {\n const [isEditing, setIsEditing] = useState(false);\n const editableFieldRef = useRef<HTMLSpanElement>(null);\n\n const handleSave = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n setIsEditing(false);\n onSave();\n };\n\n const handleCancel = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n setIsEditing(false);\n onCancel();\n };\n\n const result = !value || value === '' ? '-' : value;\n\n const handleClickOutside = useCallback(\n (e: MouseEvent) => {\n // Check if there's any text selected\n const selection = window.getSelection();\n if (selection && selection.toString().trim() !== '') {\n // If there is a selection, do not trigger the save and exit early.\n return;\n }\n\n // Proceed if the click is truly outside the component.\n if (\n editableFieldRef.current &&\n !editableFieldRef.current.contains(e.target as Node)\n ) {\n setIsEditing(false);\n onSave();\n }\n },\n [onSave]\n );\n\n useEffect(() => {\n if (isEditing) {\n document.addEventListener('click', handleClickOutside);\n } else {\n document.removeEventListener('click', handleClickOutside);\n }\n\n return () => document.removeEventListener('click', handleClickOutside);\n }, [handleClickOutside, isEditing]);\n\n return (\n <span\n className=\"group/editable-field flex gap-2\"\n role=\"button\"\n tabIndex={0}\n onClick={(e) => {\n setIsEditing(true);\n onClick?.(e);\n }}\n ref={editableFieldRef}\n {...props}\n >\n <div\n className={cn('flex flex-1 gap-2', isEditing ? 'display' : 'hidden')}\n key={String(isEditing)}\n >\n {children}\n <Button\n label=\"Save\"\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n Icon={Check}\n onClick={handleSave}\n disabled={isDisabled}\n className=\"!text-current\"\n role=\"button\"\n tabIndex={0}\n aria-label=\"Save changes\"\n data-testid=\"editable-field-save-button\"\n />\n <Button\n label=\"Cancel\"\n color={ButtonColor.TEXT}\n variant={ButtonVariant.HOVERABLE}\n className=\"!text-current\"\n size={ButtonSize.ICON_SM}\n Icon={X}\n onClick={handleCancel}\n disabled={isDisabled}\n role=\"button\"\n tabIndex={0}\n aria-label=\"Cancel changes\"\n data-testid=\"editable-field-cancel-button\"\n />\n </div>\n\n <div\n className={cn('flex flex-1 gap-2', isEditing ? 'hidden' : 'display')}\n >\n <span className=\"ml-2 flex w-full whitespace-pre-wrap p-1 text-sm leading-6\">\n {result}\n </span>\n <Button\n label=\"Edit\"\n Icon={Pencil}\n color={ButtonColor.TEXT}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n className=\"!text-current invisible group-hover/editable-field:visible\"\n disabled={isDisabled}\n onClick={(e) => {\n e.stopPropagation();\n setIsEditing(true);\n }}\n />\n </div>\n </span>\n );\n};\n"],"mappings":";;;;;;;;;AAuBA,MAAa,uBAAqD,EAChE,QAAQ,IACR,UACA,QACA,SACA,UACA,YACA,GAAG,YACC;CACJ,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;CACjD,MAAM,mBAAmB,OAAwB,KAAK;CAEtD,MAAM,cAAc,MAA2C;AAC7D,IAAE,iBAAiB;AACnB,eAAa,MAAM;AACnB,UAAQ;;CAGV,MAAM,gBAAgB,MAA2C;AAC/D,IAAE,iBAAiB;AACnB,eAAa,MAAM;AACnB,YAAU;;CAGZ,MAAM,SAAS,CAAC,SAAS,UAAU,KAAK,MAAM;CAE9C,MAAM,qBAAqB,aACxB,MAAkB;EAEjB,MAAM,YAAY,OAAO,cAAc;AACvC,MAAI,aAAa,UAAU,UAAU,CAAC,MAAM,KAAK,GAE/C;AAIF,MACE,iBAAiB,WACjB,CAAC,iBAAiB,QAAQ,SAAS,EAAE,OAAe,EACpD;AACA,gBAAa,MAAM;AACnB,WAAQ;;IAGZ,CAAC,OAAO,CACT;AAED,iBAAgB;AACd,MAAI,UACF,UAAS,iBAAiB,SAAS,mBAAmB;MAEtD,UAAS,oBAAoB,SAAS,mBAAmB;AAG3D,eAAa,SAAS,oBAAoB,SAAS,mBAAmB;IACrE,CAAC,oBAAoB,UAAU,CAAC;AAEnC,QACE,qBAAC;EACC,WAAU;EACV,MAAK;EACL,UAAU;EACV,UAAU,MAAM;AACd,gBAAa,KAAK;AAClB,aAAU,EAAE;;EAEd,KAAK;EACL,GAAI;aAEJ,qBAAC;GACC,WAAW,GAAG,qBAAqB,YAAY,YAAY,SAAS;;IAGnE;IACD,oBAAC;KACC,OAAM;KACN,SAAS,cAAc;KACvB,MAAM,WAAW;KACjB,OAAO,YAAY;KACnB,MAAM;KACN,SAAS;KACT,UAAU;KACV,WAAU;KACV,MAAK;KACL,UAAU;KACV,cAAW;KACX,eAAY;MACZ;IACF,oBAAC;KACC,OAAM;KACN,OAAO,YAAY;KACnB,SAAS,cAAc;KACvB,WAAU;KACV,MAAM,WAAW;KACjB,MAAM;KACN,SAAS;KACT,UAAU;KACV,MAAK;KACL,UAAU;KACV,cAAW;KACX,eAAY;MACZ;;KA9BG,OAAO,UAAU,CA+BlB,EAEN,qBAAC;GACC,WAAW,GAAG,qBAAqB,YAAY,WAAW,UAAU;cAEpE,oBAAC;IAAK,WAAU;cACb;KACI,EACP,oBAAC;IACC,OAAM;IACN,MAAM;IACN,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,WAAU;IACV,UAAU;IACV,UAAU,MAAM;AACd,OAAE,iBAAiB;AACnB,kBAAa,KAAK;;KAEpB;IACE;GACD"}