@intlayer/design-system 9.4.3 → 9.4.4

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 (694) hide show
  1. package/dist/esm/api/index.mjs +2 -2
  2. package/dist/esm/api/useUser/index.mjs +1 -1
  3. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +1 -1
  4. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +2 -2
  5. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +1 -1
  6. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +6 -6
  7. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +1 -1
  8. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +1 -1
  9. package/dist/esm/components/DictionaryFieldEditor/NodeEditor.mjs +2 -2
  10. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +2 -2
  11. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs +1 -1
  12. package/dist/esm/components/IDE/MarkDownRender.mjs +1 -1
  13. package/dist/esm/components/Navbar/MobileNavbar.mjs +14 -3
  14. package/dist/esm/components/Navbar/MobileNavbar.mjs.map +1 -1
  15. package/dist/esm/components/Navbar/index.mjs +22 -15
  16. package/dist/esm/components/Navbar/index.mjs.map +1 -1
  17. package/dist/esm/components/Pattern/GridDistortionPattern.mjs +1 -1
  18. package/dist/esm/components/Status/index.mjs +1 -1
  19. package/dist/esm/hooks/useDevice.mjs +105 -37
  20. package/dist/esm/hooks/useDevice.mjs.map +1 -1
  21. package/dist/types/api/hooks/ai.d.ts +10 -11
  22. package/dist/types/api/hooks/ai.d.ts.map +1 -1
  23. package/dist/types/api/hooks/analytics.d.ts +3 -4
  24. package/dist/types/api/hooks/analytics.d.ts.map +1 -1
  25. package/dist/types/api/hooks/asset.d.ts +5 -6
  26. package/dist/types/api/hooks/asset.d.ts.map +1 -1
  27. package/dist/types/api/hooks/audit.d.ts +3 -4
  28. package/dist/types/api/hooks/audit.d.ts.map +1 -1
  29. package/dist/types/api/hooks/auth.d.ts +25 -26
  30. package/dist/types/api/hooks/auth.d.ts.map +1 -1
  31. package/dist/types/api/hooks/bitbucket.d.ts +4 -5
  32. package/dist/types/api/hooks/bitbucket.d.ts.map +1 -1
  33. package/dist/types/api/hooks/dictionary.d.ts +8 -9
  34. package/dist/types/api/hooks/dictionary.d.ts.map +1 -1
  35. package/dist/types/api/hooks/discussions.d.ts +2 -3
  36. package/dist/types/api/hooks/discussions.d.ts.map +1 -1
  37. package/dist/types/api/hooks/editor.d.ts +2 -3
  38. package/dist/types/api/hooks/editor.d.ts.map +1 -1
  39. package/dist/types/api/hooks/environment.d.ts +6 -7
  40. package/dist/types/api/hooks/environment.d.ts.map +1 -1
  41. package/dist/types/api/hooks/github.d.ts +6 -7
  42. package/dist/types/api/hooks/github.d.ts.map +1 -1
  43. package/dist/types/api/hooks/gitlab.d.ts +4 -5
  44. package/dist/types/api/hooks/gitlab.d.ts.map +1 -1
  45. package/dist/types/api/hooks/newsletter.d.ts +3 -4
  46. package/dist/types/api/hooks/newsletter.d.ts.map +1 -1
  47. package/dist/types/api/hooks/organization.d.ts +11 -12
  48. package/dist/types/api/hooks/organization.d.ts.map +1 -1
  49. package/dist/types/api/hooks/project.d.ts +18 -19
  50. package/dist/types/api/hooks/project.d.ts.map +1 -1
  51. package/dist/types/api/hooks/reviewer.d.ts +21 -22
  52. package/dist/types/api/hooks/reviewer.d.ts.map +1 -1
  53. package/dist/types/api/hooks/search.d.ts +1 -2
  54. package/dist/types/api/hooks/search.d.ts.map +1 -1
  55. package/dist/types/api/hooks/showcaseProject.d.ts +8 -9
  56. package/dist/types/api/hooks/showcaseProject.d.ts.map +1 -1
  57. package/dist/types/api/hooks/stripe.d.ts +24 -25
  58. package/dist/types/api/hooks/stripe.d.ts.map +1 -1
  59. package/dist/types/api/hooks/tag.d.ts +4 -5
  60. package/dist/types/api/hooks/tag.d.ts.map +1 -1
  61. package/dist/types/api/hooks/translate.d.ts +4 -5
  62. package/dist/types/api/hooks/translate.d.ts.map +1 -1
  63. package/dist/types/api/hooks/user.d.ts +6 -7
  64. package/dist/types/api/hooks/user.d.ts.map +1 -1
  65. package/dist/types/api/hooks/utils.d.ts +2 -3
  66. package/dist/types/api/hooks/utils.d.ts.map +1 -1
  67. package/dist/types/api/useAuth/useAuth.d.ts +1 -2
  68. package/dist/types/api/useAuth/useAuth.d.ts.map +1 -1
  69. package/dist/types/api/useAuth/useOAuth2.d.ts +2 -3
  70. package/dist/types/api/useAuth/useOAuth2.d.ts.map +1 -1
  71. package/dist/types/api/useAuth/useSession.d.ts +2 -3
  72. package/dist/types/api/useAuth/useSession.d.ts.map +1 -1
  73. package/dist/types/api/useIntlayerAPI.d.ts +25 -26
  74. package/dist/types/api/useIntlayerAPI.d.ts.map +1 -1
  75. package/dist/types/api/useUser/index.d.ts +1 -2
  76. package/dist/types/api/useUser/index.d.ts.map +1 -1
  77. package/dist/types/components/Accordion/Accordion.d.ts +2 -3
  78. package/dist/types/components/Accordion/Accordion.d.ts.map +1 -1
  79. package/dist/types/components/Avatar/image.d.ts +2 -3
  80. package/dist/types/components/Avatar/image.d.ts.map +1 -1
  81. package/dist/types/components/Avatar/index.d.ts +3 -4
  82. package/dist/types/components/Avatar/index.d.ts.map +1 -1
  83. package/dist/types/components/Badge/index.d.ts +7 -8
  84. package/dist/types/components/Badge/index.d.ts.map +1 -1
  85. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +2 -2
  86. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts.map +1 -1
  87. package/dist/types/components/Breadcrumb/index.d.ts +3 -4
  88. package/dist/types/components/Breadcrumb/index.d.ts.map +1 -1
  89. package/dist/types/components/Browser/Browser.content.d.ts +2 -2
  90. package/dist/types/components/Browser/Browser.content.d.ts.map +1 -1
  91. package/dist/types/components/Browser/Browser.d.ts +2 -3
  92. package/dist/types/components/Browser/Browser.d.ts.map +1 -1
  93. package/dist/types/components/Browser/extractUrlFromSitemap.d.ts +1 -2
  94. package/dist/types/components/Browser/extractUrlFromSitemap.d.ts.map +1 -1
  95. package/dist/types/components/Button/Button.d.ts +7 -8
  96. package/dist/types/components/Button/Button.d.ts.map +1 -1
  97. package/dist/types/components/Carousel/index.d.ts +1 -2
  98. package/dist/types/components/Carousel/index.d.ts.map +1 -1
  99. package/dist/types/components/ClickOutsideDiv/index.d.ts +2 -3
  100. package/dist/types/components/ClickOutsideDiv/index.d.ts.map +1 -1
  101. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +2 -3
  102. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts.map +1 -1
  103. package/dist/types/components/Command/index.d.ts +2 -3
  104. package/dist/types/components/Command/index.d.ts.map +1 -1
  105. package/dist/types/components/Container/index.d.ts +10 -11
  106. package/dist/types/components/Container/index.d.ts.map +1 -1
  107. package/dist/types/components/ContentEditor/ContentEditor.d.ts +2 -3
  108. package/dist/types/components/ContentEditor/ContentEditor.d.ts.map +1 -1
  109. package/dist/types/components/ContentEditor/ContentEditorInput.d.ts +2 -3
  110. package/dist/types/components/ContentEditor/ContentEditorInput.d.ts.map +1 -1
  111. package/dist/types/components/ContentEditor/ContentEditorTextArea.d.ts +2 -3
  112. package/dist/types/components/ContentEditor/ContentEditorTextArea.d.ts.map +1 -1
  113. package/dist/types/components/ContentSelector/ContentSelector.d.ts +1 -2
  114. package/dist/types/components/ContentSelector/ContentSelector.d.ts.map +1 -1
  115. package/dist/types/components/CopyButton/CopyButton.content.d.ts +2 -2
  116. package/dist/types/components/CopyButton/CopyButton.content.d.ts.map +1 -1
  117. package/dist/types/components/CopyButton/index.d.ts +1 -2
  118. package/dist/types/components/CopyButton/index.d.ts.map +1 -1
  119. package/dist/types/components/CopyToClipboard/index.d.ts +3 -4
  120. package/dist/types/components/CopyToClipboard/index.d.ts.map +1 -1
  121. package/dist/types/components/DictionaryEditor/DictionaryEditor.d.ts +1 -2
  122. package/dist/types/components/DictionaryEditor/DictionaryEditor.d.ts.map +1 -1
  123. package/dist/types/components/DictionaryEditor/ItemLayout.d.ts +1 -2
  124. package/dist/types/components/DictionaryEditor/ItemLayout.d.ts.map +1 -1
  125. package/dist/types/components/DictionaryEditor/NodeWrapper/ArrayWrapper.d.ts +1 -2
  126. package/dist/types/components/DictionaryEditor/NodeWrapper/ArrayWrapper.d.ts.map +1 -1
  127. package/dist/types/components/DictionaryEditor/NodeWrapper/BooleanWrapper.d.ts +2 -3
  128. package/dist/types/components/DictionaryEditor/NodeWrapper/BooleanWrapper.d.ts.map +1 -1
  129. package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts +1 -2
  130. package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts.map +1 -1
  131. package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts +1 -2
  132. package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts.map +1 -1
  133. package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts +1 -2
  134. package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts.map +1 -1
  135. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts +1 -2
  136. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts.map +1 -1
  137. package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts +1 -2
  138. package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts.map +1 -1
  139. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts +1 -2
  140. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts.map +1 -1
  141. package/dist/types/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts +1 -2
  142. package/dist/types/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts.map +1 -1
  143. package/dist/types/components/DictionaryEditor/NodeWrapper/NumberWrapper.d.ts +2 -3
  144. package/dist/types/components/DictionaryEditor/NodeWrapper/NumberWrapper.d.ts.map +1 -1
  145. package/dist/types/components/DictionaryEditor/NodeWrapper/PluralWrapper.d.ts +1 -2
  146. package/dist/types/components/DictionaryEditor/NodeWrapper/PluralWrapper.d.ts.map +1 -1
  147. package/dist/types/components/DictionaryEditor/NodeWrapper/SelectWrapper.d.ts +1 -2
  148. package/dist/types/components/DictionaryEditor/NodeWrapper/SelectWrapper.d.ts.map +1 -1
  149. package/dist/types/components/DictionaryEditor/NodeWrapper/StringWrapper.d.ts +2 -3
  150. package/dist/types/components/DictionaryEditor/NodeWrapper/StringWrapper.d.ts.map +1 -1
  151. package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts +1 -2
  152. package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts.map +1 -1
  153. package/dist/types/components/DictionaryEditor/NodeWrapper/index.d.ts +3 -4
  154. package/dist/types/components/DictionaryEditor/NodeWrapper/index.d.ts.map +1 -1
  155. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.d.ts +1 -2
  156. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.d.ts.map +1 -1
  157. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts +4 -5
  158. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
  159. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/object.d.ts +2 -3
  160. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/object.d.ts.map +1 -1
  161. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts +1 -2
  162. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts.map +1 -1
  163. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +2 -2
  164. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts.map +1 -1
  165. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +2 -2
  166. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts.map +1 -1
  167. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.d.ts +4 -5
  168. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.d.ts.map +1 -1
  169. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts +1 -2
  170. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts.map +1 -1
  171. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +2 -2
  172. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts.map +1 -1
  173. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.d.ts +2 -3
  174. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.d.ts.map +1 -1
  175. package/dist/types/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts +1 -2
  176. package/dist/types/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts.map +1 -1
  177. package/dist/types/components/DictionaryFieldEditor/EnumKeyInput.d.ts +1 -2
  178. package/dist/types/components/DictionaryFieldEditor/EnumKeyInput.d.ts.map +1 -1
  179. package/dist/types/components/DictionaryFieldEditor/JSONEditor.d.ts +1 -2
  180. package/dist/types/components/DictionaryFieldEditor/JSONEditor.d.ts.map +1 -1
  181. package/dist/types/components/DictionaryFieldEditor/KeyPathBreadcrumb.d.ts +1 -2
  182. package/dist/types/components/DictionaryFieldEditor/KeyPathBreadcrumb.d.ts.map +1 -1
  183. package/dist/types/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts +3 -4
  184. package/dist/types/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts.map +1 -1
  185. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +2 -2
  186. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts.map +1 -1
  187. package/dist/types/components/DictionaryFieldEditor/NodeEditor.d.ts +2 -3
  188. package/dist/types/components/DictionaryFieldEditor/NodeEditor.d.ts.map +1 -1
  189. package/dist/types/components/DictionaryFieldEditor/NodeTypeSelector.d.ts +1 -2
  190. package/dist/types/components/DictionaryFieldEditor/NodeTypeSelector.d.ts.map +1 -1
  191. package/dist/types/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts +1 -2
  192. package/dist/types/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts.map +1 -1
  193. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +2 -2
  194. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts.map +1 -1
  195. package/dist/types/components/DictionaryFieldEditor/StructureEditor.d.ts +1 -2
  196. package/dist/types/components/DictionaryFieldEditor/StructureEditor.d.ts.map +1 -1
  197. package/dist/types/components/DictionaryFieldEditor/StructureView/StructureView.d.ts +3 -4
  198. package/dist/types/components/DictionaryFieldEditor/StructureView/StructureView.d.ts.map +1 -1
  199. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +2 -2
  200. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts.map +1 -1
  201. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.d.ts +2 -3
  202. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.d.ts.map +1 -1
  203. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.d.ts +2 -3
  204. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.d.ts.map +1 -1
  205. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +2 -2
  206. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts.map +1 -1
  207. package/dist/types/components/DictionaryFieldEditor/getIsEditableSection.d.ts +1 -2
  208. package/dist/types/components/DictionaryFieldEditor/getIsEditableSection.d.ts.map +1 -1
  209. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +2 -2
  210. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts.map +1 -1
  211. package/dist/types/components/DropDown/index.d.ts +7 -8
  212. package/dist/types/components/DropDown/index.d.ts.map +1 -1
  213. package/dist/types/components/EditableField/EditableFieldInput.d.ts +1 -2
  214. package/dist/types/components/EditableField/EditableFieldInput.d.ts.map +1 -1
  215. package/dist/types/components/EditableField/EditableFieldLayout.d.ts +1 -2
  216. package/dist/types/components/EditableField/EditableFieldLayout.d.ts.map +1 -1
  217. package/dist/types/components/EditableField/EditableFieldTextArea.d.ts +1 -2
  218. package/dist/types/components/EditableField/EditableFieldTextArea.d.ts.map +1 -1
  219. package/dist/types/components/ExpandCollapse/ExpandCollapse.d.ts +2 -3
  220. package/dist/types/components/ExpandCollapse/ExpandCollapse.d.ts.map +1 -1
  221. package/dist/types/components/Flags/Flag.d.ts +1 -2
  222. package/dist/types/components/Flags/Flag.d.ts.map +1 -1
  223. package/dist/types/components/Flags/flags.d.ts +305 -305
  224. package/dist/types/components/Flags/flags.d.ts.map +1 -1
  225. package/dist/types/components/Footer/index.d.ts +3 -4
  226. package/dist/types/components/Footer/index.d.ts.map +1 -1
  227. package/dist/types/components/Form/Form.d.ts +1 -2
  228. package/dist/types/components/Form/Form.d.ts.map +1 -1
  229. package/dist/types/components/Form/FormBase.d.ts +2 -3
  230. package/dist/types/components/Form/FormBase.d.ts.map +1 -1
  231. package/dist/types/components/Form/FormControl.d.ts +1 -2
  232. package/dist/types/components/Form/FormControl.d.ts.map +1 -1
  233. package/dist/types/components/Form/FormDescription.d.ts +1 -2
  234. package/dist/types/components/Form/FormDescription.d.ts.map +1 -1
  235. package/dist/types/components/Form/FormField.d.ts +2 -3
  236. package/dist/types/components/Form/FormField.d.ts.map +1 -1
  237. package/dist/types/components/Form/FormItem.d.ts +2 -3
  238. package/dist/types/components/Form/FormItem.d.ts.map +1 -1
  239. package/dist/types/components/Form/FormLabel.d.ts +1 -2
  240. package/dist/types/components/Form/FormLabel.d.ts.map +1 -1
  241. package/dist/types/components/Form/FormMessage.d.ts +1 -2
  242. package/dist/types/components/Form/FormMessage.d.ts.map +1 -1
  243. package/dist/types/components/Form/elements/AutoSizeTextAreaElement.d.ts +1 -2
  244. package/dist/types/components/Form/elements/AutoSizeTextAreaElement.d.ts.map +1 -1
  245. package/dist/types/components/Form/elements/CheckboxElement.d.ts +1 -2
  246. package/dist/types/components/Form/elements/CheckboxElement.d.ts.map +1 -1
  247. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts +1 -2
  248. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts.map +1 -1
  249. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts +1 -2
  250. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts.map +1 -1
  251. package/dist/types/components/Form/elements/FormElement.d.ts +2 -3
  252. package/dist/types/components/Form/elements/FormElement.d.ts.map +1 -1
  253. package/dist/types/components/Form/elements/FormElementWrapper.d.ts +1 -2
  254. package/dist/types/components/Form/elements/FormElementWrapper.d.ts.map +1 -1
  255. package/dist/types/components/Form/elements/InputElement.d.ts +1 -2
  256. package/dist/types/components/Form/elements/InputElement.d.ts.map +1 -1
  257. package/dist/types/components/Form/elements/InputPasswordElement.d.ts +1 -2
  258. package/dist/types/components/Form/elements/InputPasswordElement.d.ts.map +1 -1
  259. package/dist/types/components/Form/elements/MultiselectElement.d.ts +1 -2
  260. package/dist/types/components/Form/elements/MultiselectElement.d.ts.map +1 -1
  261. package/dist/types/components/Form/elements/OTPElement.d.ts +1 -2
  262. package/dist/types/components/Form/elements/OTPElement.d.ts.map +1 -1
  263. package/dist/types/components/Form/elements/SearchInputElement.d.ts +1 -2
  264. package/dist/types/components/Form/elements/SearchInputElement.d.ts.map +1 -1
  265. package/dist/types/components/Form/elements/SelectElement.d.ts +1 -2
  266. package/dist/types/components/Form/elements/SelectElement.d.ts.map +1 -1
  267. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts +1 -2
  268. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts.map +1 -1
  269. package/dist/types/components/Form/elements/TextAreaElement.d.ts +1 -2
  270. package/dist/types/components/Form/elements/TextAreaElement.d.ts.map +1 -1
  271. package/dist/types/components/Form/layout/FormItemLayout.d.ts +2 -3
  272. package/dist/types/components/Form/layout/FormItemLayout.d.ts.map +1 -1
  273. package/dist/types/components/Form/layout/FormLabelLayout.d.ts +2 -3
  274. package/dist/types/components/Form/layout/FormLabelLayout.d.ts.map +1 -1
  275. package/dist/types/components/Form/layout/RequiredStar.d.ts +1 -2
  276. package/dist/types/components/Form/layout/RequiredStar.d.ts.map +1 -1
  277. package/dist/types/components/HTMLRender/HTMLRender.d.ts +2 -3
  278. package/dist/types/components/HTMLRender/HTMLRender.d.ts.map +1 -1
  279. package/dist/types/components/Headers/index.d.ts +7 -8
  280. package/dist/types/components/Headers/index.d.ts.map +1 -1
  281. package/dist/types/components/HeightResizer/index.d.ts +1 -2
  282. package/dist/types/components/HeightResizer/index.d.ts.map +1 -1
  283. package/dist/types/components/HideShow/index.d.ts +2 -3
  284. package/dist/types/components/HideShow/index.d.ts.map +1 -1
  285. package/dist/types/components/IDE/Code.d.ts +2 -3
  286. package/dist/types/components/IDE/Code.d.ts.map +1 -1
  287. package/dist/types/components/IDE/CodeBlockClient.d.ts +6 -6
  288. package/dist/types/components/IDE/CodeBlockClient.d.ts.map +1 -1
  289. package/dist/types/components/IDE/CodeBlockHighlight.d.ts +1 -2
  290. package/dist/types/components/IDE/CodeBlockHighlight.d.ts.map +1 -1
  291. package/dist/types/components/IDE/CodeBlockServer.d.ts +3 -4
  292. package/dist/types/components/IDE/CodeBlockServer.d.ts.map +1 -1
  293. package/dist/types/components/IDE/CodeBlockShiki.d.ts +2 -3
  294. package/dist/types/components/IDE/CodeBlockShiki.d.ts.map +1 -1
  295. package/dist/types/components/IDE/CodeConditionalRenderer.d.ts +1 -2
  296. package/dist/types/components/IDE/CodeConditionalRenderer.d.ts.map +1 -1
  297. package/dist/types/components/IDE/CodeContext.d.ts +6 -7
  298. package/dist/types/components/IDE/CodeContext.d.ts.map +1 -1
  299. package/dist/types/components/IDE/CodeFormatSelector.d.ts +1 -2
  300. package/dist/types/components/IDE/CodeFormatSelector.d.ts.map +1 -1
  301. package/dist/types/components/IDE/ContentDeclarationFormatSelector.d.ts +1 -2
  302. package/dist/types/components/IDE/ContentDeclarationFormatSelector.d.ts.map +1 -1
  303. package/dist/types/components/IDE/CopyCode.d.ts +1 -2
  304. package/dist/types/components/IDE/CopyCode.d.ts.map +1 -1
  305. package/dist/types/components/IDE/FileList.d.ts +2 -3
  306. package/dist/types/components/IDE/FileList.d.ts.map +1 -1
  307. package/dist/types/components/IDE/FileTree.d.ts +1 -2
  308. package/dist/types/components/IDE/FileTree.d.ts.map +1 -1
  309. package/dist/types/components/IDE/IDE.d.ts +2 -3
  310. package/dist/types/components/IDE/IDE.d.ts.map +1 -1
  311. package/dist/types/components/IDE/MarkDownRender.d.ts +1 -2
  312. package/dist/types/components/IDE/MarkDownRender.d.ts.map +1 -1
  313. package/dist/types/components/IDE/MonacoCode.d.ts +1 -2
  314. package/dist/types/components/IDE/MonacoCode.d.ts.map +1 -1
  315. package/dist/types/components/IDE/PackageManagerSelector.d.ts +1 -2
  316. package/dist/types/components/IDE/PackageManagerSelector.d.ts.map +1 -1
  317. package/dist/types/components/IDE/codeTransformer.d.ts +4 -5
  318. package/dist/types/components/IDE/codeTransformer.d.ts.map +1 -1
  319. package/dist/types/components/IDE/createFileTree.d.ts +2 -3
  320. package/dist/types/components/IDE/createFileTree.d.ts.map +1 -1
  321. package/dist/types/components/IDE/shikiBundle.d.ts +9 -10
  322. package/dist/types/components/IDE/shikiBundle.d.ts.map +1 -1
  323. package/dist/types/components/IDE/shikiLanguages.d.ts +11 -12
  324. package/dist/types/components/IDE/shikiLanguages.d.ts.map +1 -1
  325. package/dist/types/components/IDE/shikiThemes.d.ts +3 -4
  326. package/dist/types/components/IDE/shikiThemes.d.ts.map +1 -1
  327. package/dist/types/components/InformationTag/index.d.ts +1 -2
  328. package/dist/types/components/InformationTag/index.d.ts.map +1 -1
  329. package/dist/types/components/Input/Checkbox.d.ts +5 -6
  330. package/dist/types/components/Input/Checkbox.d.ts.map +1 -1
  331. package/dist/types/components/Input/Input.d.ts +5 -6
  332. package/dist/types/components/Input/Input.d.ts.map +1 -1
  333. package/dist/types/components/Input/InputPassword.d.ts +1 -2
  334. package/dist/types/components/Input/InputPassword.d.ts.map +1 -1
  335. package/dist/types/components/Input/OTPInput.d.ts +13 -14
  336. package/dist/types/components/Input/OTPInput.d.ts.map +1 -1
  337. package/dist/types/components/Input/Radio.d.ts +5 -6
  338. package/dist/types/components/Input/Radio.d.ts.map +1 -1
  339. package/dist/types/components/Input/SearchInput.d.ts +1 -2
  340. package/dist/types/components/Input/SearchInput.d.ts.map +1 -1
  341. package/dist/types/components/KeyboardScreenAdapter/index.d.ts +1 -2
  342. package/dist/types/components/KeyboardScreenAdapter/index.d.ts.map +1 -1
  343. package/dist/types/components/KeyboardShortcut/KeyboardShortcut.d.ts +4 -5
  344. package/dist/types/components/KeyboardShortcut/KeyboardShortcut.d.ts.map +1 -1
  345. package/dist/types/components/Label/index.d.ts +2 -3
  346. package/dist/types/components/Label/index.d.ts.map +1 -1
  347. package/dist/types/components/LanguageBackground/LanguageBackground.d.ts +1 -2
  348. package/dist/types/components/LanguageBackground/LanguageBackground.d.ts.map +1 -1
  349. package/dist/types/components/LanguageBackground/LanguageSection.d.ts +2 -3
  350. package/dist/types/components/LanguageBackground/LanguageSection.d.ts.map +1 -1
  351. package/dist/types/components/Link/Link.d.ts +10 -11
  352. package/dist/types/components/Link/Link.d.ts.map +1 -1
  353. package/dist/types/components/Loader/index.content.d.ts +2 -2
  354. package/dist/types/components/Loader/index.content.d.ts.map +1 -1
  355. package/dist/types/components/Loader/index.d.ts +2 -3
  356. package/dist/types/components/Loader/index.d.ts.map +1 -1
  357. package/dist/types/components/Loader/spinner.d.ts +1 -2
  358. package/dist/types/components/Loader/spinner.d.ts.map +1 -1
  359. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.d.ts +2 -3
  360. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.d.ts.map +1 -1
  361. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.d.ts +2 -3
  362. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.d.ts.map +1 -1
  363. package/dist/types/components/LocaleSwitcherDropDown/LocaleSwitcher.d.ts +2 -3
  364. package/dist/types/components/LocaleSwitcherDropDown/LocaleSwitcher.d.ts.map +1 -1
  365. package/dist/types/components/Logo/Logo.d.ts +2 -3
  366. package/dist/types/components/Logo/Logo.d.ts.map +1 -1
  367. package/dist/types/components/Logo/LogoTextOnly.d.ts +1 -2
  368. package/dist/types/components/Logo/LogoTextOnly.d.ts.map +1 -1
  369. package/dist/types/components/Logo/LogoWithText.d.ts +1 -2
  370. package/dist/types/components/Logo/LogoWithText.d.ts.map +1 -1
  371. package/dist/types/components/Logo/LogoWithTextBelow.d.ts +2 -3
  372. package/dist/types/components/Logo/LogoWithTextBelow.d.ts.map +1 -1
  373. package/dist/types/components/MarkDownRender/MarkDownIframe.d.ts +1 -2
  374. package/dist/types/components/MarkDownRender/MarkDownIframe.d.ts.map +1 -1
  375. package/dist/types/components/MarkDownRender/MarkDownRender.d.ts +4 -4
  376. package/dist/types/components/MarkDownRender/MarkDownRender.d.ts.map +1 -1
  377. package/dist/types/components/MarkdownEditor/MarkdownEditor.d.ts +2 -3
  378. package/dist/types/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  379. package/dist/types/components/MarkdownEditor/extensions.d.ts +1 -2
  380. package/dist/types/components/MarkdownEditor/extensions.d.ts.map +1 -1
  381. package/dist/types/components/MarkdownEditor/generative/AICompletionCommands.d.ts +2 -3
  382. package/dist/types/components/MarkdownEditor/generative/AICompletionCommands.d.ts.map +1 -1
  383. package/dist/types/components/MarkdownEditor/generative/AISelector.d.ts +2 -3
  384. package/dist/types/components/MarkdownEditor/generative/AISelector.d.ts.map +1 -1
  385. package/dist/types/components/MarkdownEditor/generative/AISelectorCommands.d.ts +2 -3
  386. package/dist/types/components/MarkdownEditor/generative/AISelectorCommands.d.ts.map +1 -1
  387. package/dist/types/components/MarkdownEditor/generative/GenerativeMenuSwitch.d.ts +2 -3
  388. package/dist/types/components/MarkdownEditor/generative/GenerativeMenuSwitch.d.ts.map +1 -1
  389. package/dist/types/components/MarkdownEditor/generative/useAICompletion.d.ts +3 -4
  390. package/dist/types/components/MarkdownEditor/generative/useAICompletion.d.ts.map +1 -1
  391. package/dist/types/components/MarkdownEditor/imageUpload.d.ts +3 -4
  392. package/dist/types/components/MarkdownEditor/imageUpload.d.ts.map +1 -1
  393. package/dist/types/components/MarkdownEditor/novel/components/editor-bubble-item.d.ts +2 -2
  394. package/dist/types/components/MarkdownEditor/novel/components/editor-bubble-item.d.ts.map +1 -1
  395. package/dist/types/components/MarkdownEditor/novel/components/editor-bubble.d.ts +3 -3
  396. package/dist/types/components/MarkdownEditor/novel/components/editor-bubble.d.ts.map +1 -1
  397. package/dist/types/components/MarkdownEditor/novel/components/editor-command-item.d.ts +3 -3
  398. package/dist/types/components/MarkdownEditor/novel/components/editor-command-item.d.ts.map +1 -1
  399. package/dist/types/components/MarkdownEditor/novel/components/editor-command.d.ts +4 -5
  400. package/dist/types/components/MarkdownEditor/novel/components/editor-command.d.ts.map +1 -1
  401. package/dist/types/components/MarkdownEditor/novel/components/editor.d.ts +4 -5
  402. package/dist/types/components/MarkdownEditor/novel/components/editor.d.ts.map +1 -1
  403. package/dist/types/components/MarkdownEditor/novel/extensions/ai-highlight.d.ts +6 -7
  404. package/dist/types/components/MarkdownEditor/novel/extensions/ai-highlight.d.ts.map +1 -1
  405. package/dist/types/components/MarkdownEditor/novel/extensions/code-block-shiki.d.ts +2 -3
  406. package/dist/types/components/MarkdownEditor/novel/extensions/code-block-shiki.d.ts.map +1 -1
  407. package/dist/types/components/MarkdownEditor/novel/extensions/image-resizer.d.ts +1 -2
  408. package/dist/types/components/MarkdownEditor/novel/extensions/image-resizer.d.ts.map +1 -1
  409. package/dist/types/components/MarkdownEditor/novel/extensions/slash-command.d.ts +4 -4
  410. package/dist/types/components/MarkdownEditor/novel/extensions/slash-command.d.ts.map +1 -1
  411. package/dist/types/components/MarkdownEditor/novel/plugins/upload-images.d.ts +6 -7
  412. package/dist/types/components/MarkdownEditor/novel/plugins/upload-images.d.ts.map +1 -1
  413. package/dist/types/components/MarkdownEditor/novel/utils/atoms.d.ts +4 -5
  414. package/dist/types/components/MarkdownEditor/novel/utils/atoms.d.ts.map +1 -1
  415. package/dist/types/components/MarkdownEditor/novel/utils/index.d.ts +4 -5
  416. package/dist/types/components/MarkdownEditor/novel/utils/index.d.ts.map +1 -1
  417. package/dist/types/components/MarkdownEditor/selectors/ColorSelector.d.ts +2 -3
  418. package/dist/types/components/MarkdownEditor/selectors/ColorSelector.d.ts.map +1 -1
  419. package/dist/types/components/MarkdownEditor/selectors/LinkSelector.d.ts +1 -2
  420. package/dist/types/components/MarkdownEditor/selectors/LinkSelector.d.ts.map +1 -1
  421. package/dist/types/components/MarkdownEditor/selectors/NodeSelector.d.ts +2 -3
  422. package/dist/types/components/MarkdownEditor/selectors/NodeSelector.d.ts.map +1 -1
  423. package/dist/types/components/MarkdownEditor/selectors/TextButtons.d.ts +1 -2
  424. package/dist/types/components/MarkdownEditor/selectors/TextButtons.d.ts.map +1 -1
  425. package/dist/types/components/MarkdownEditor/slashCommand.d.ts +2 -3
  426. package/dist/types/components/MarkdownEditor/slashCommand.d.ts.map +1 -1
  427. package/dist/types/components/MaxHeightSmoother/index.d.ts +1 -2
  428. package/dist/types/components/MaxHeightSmoother/index.d.ts.map +1 -1
  429. package/dist/types/components/MaxWidthSmoother/index.d.ts +1 -2
  430. package/dist/types/components/MaxWidthSmoother/index.d.ts.map +1 -1
  431. package/dist/types/components/Modal/Modal.d.ts +2 -3
  432. package/dist/types/components/Modal/Modal.d.ts.map +1 -1
  433. package/dist/types/components/Navbar/Burger.d.ts +1 -2
  434. package/dist/types/components/Navbar/Burger.d.ts.map +1 -1
  435. package/dist/types/components/Navbar/DesktopNavbar.d.ts +1 -2
  436. package/dist/types/components/Navbar/DesktopNavbar.d.ts.map +1 -1
  437. package/dist/types/components/Navbar/MobileNavbar.d.ts +8 -2
  438. package/dist/types/components/Navbar/MobileNavbar.d.ts.map +1 -1
  439. package/dist/types/components/Navbar/index.d.ts +2 -2
  440. package/dist/types/components/Navbar/index.d.ts.map +1 -1
  441. package/dist/types/components/Navbar/useNavigation.d.ts +1 -2
  442. package/dist/types/components/Navbar/useNavigation.d.ts.map +1 -1
  443. package/dist/types/components/Pagination/NumberItemsSelector.d.ts +2 -3
  444. package/dist/types/components/Pagination/NumberItemsSelector.d.ts.map +1 -1
  445. package/dist/types/components/Pagination/Pagination.d.ts +5 -6
  446. package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
  447. package/dist/types/components/Pagination/ShowingResultsNumberItems.d.ts +2 -3
  448. package/dist/types/components/Pagination/ShowingResultsNumberItems.d.ts.map +1 -1
  449. package/dist/types/components/Pattern/DotPattern.d.ts +1 -2
  450. package/dist/types/components/Pattern/DotPattern.d.ts.map +1 -1
  451. package/dist/types/components/Pattern/GridDistortionPattern.d.ts +1 -2
  452. package/dist/types/components/Pattern/GridDistortionPattern.d.ts.map +1 -1
  453. package/dist/types/components/Pattern/GridPattern.d.ts +1 -2
  454. package/dist/types/components/Pattern/GridPattern.d.ts.map +1 -1
  455. package/dist/types/components/Pattern/SpotLight.d.ts +1 -2
  456. package/dist/types/components/Pattern/SpotLight.d.ts.map +1 -1
  457. package/dist/types/components/Popover/dynamic.d.ts +1 -2
  458. package/dist/types/components/Popover/dynamic.d.ts.map +1 -1
  459. package/dist/types/components/Popover/static.d.ts +8 -8
  460. package/dist/types/components/Popover/static.d.ts.map +1 -1
  461. package/dist/types/components/PressableSpan/PressableSpan.d.ts +1 -2
  462. package/dist/types/components/PressableSpan/PressableSpan.d.ts.map +1 -1
  463. package/dist/types/components/RightDrawer/RightDrawer.d.ts +1 -2
  464. package/dist/types/components/RightDrawer/RightDrawer.d.ts.map +1 -1
  465. package/dist/types/components/RightDrawer/isElementAtTopAndNotCovered.d.ts +1 -2
  466. package/dist/types/components/RightDrawer/isElementAtTopAndNotCovered.d.ts.map +1 -1
  467. package/dist/types/components/RightDrawer/useRightDrawer.d.ts +4 -5
  468. package/dist/types/components/RightDrawer/useRightDrawer.d.ts.map +1 -1
  469. package/dist/types/components/Select/Multiselect.d.ts +1 -2
  470. package/dist/types/components/Select/Multiselect.d.ts.map +1 -1
  471. package/dist/types/components/Select/Select.d.ts +5 -6
  472. package/dist/types/components/Select/Select.d.ts.map +1 -1
  473. package/dist/types/components/SocialNetworks/DiscordLogo.d.ts +1 -2
  474. package/dist/types/components/SocialNetworks/DiscordLogo.d.ts.map +1 -1
  475. package/dist/types/components/SocialNetworks/FacebookLogo.d.ts +1 -2
  476. package/dist/types/components/SocialNetworks/FacebookLogo.d.ts.map +1 -1
  477. package/dist/types/components/SocialNetworks/InstagramLogo.d.ts +1 -2
  478. package/dist/types/components/SocialNetworks/InstagramLogo.d.ts.map +1 -1
  479. package/dist/types/components/SocialNetworks/ProductHuntLogo.d.ts +1 -2
  480. package/dist/types/components/SocialNetworks/ProductHuntLogo.d.ts.map +1 -1
  481. package/dist/types/components/SocialNetworks/TiktokLogo.d.ts +1 -2
  482. package/dist/types/components/SocialNetworks/TiktokLogo.d.ts.map +1 -1
  483. package/dist/types/components/SocialNetworks/XLogo.d.ts +1 -2
  484. package/dist/types/components/SocialNetworks/XLogo.d.ts.map +1 -1
  485. package/dist/types/components/SocialNetworks/YoutubeLogo.d.ts +1 -2
  486. package/dist/types/components/SocialNetworks/YoutubeLogo.d.ts.map +1 -1
  487. package/dist/types/components/SocialNetworks/index.d.ts +2 -2
  488. package/dist/types/components/SocialNetworks/index.d.ts.map +1 -1
  489. package/dist/types/components/Status/index.d.ts +1 -2
  490. package/dist/types/components/Status/index.d.ts.map +1 -1
  491. package/dist/types/components/Steps/index.d.ts +2 -3
  492. package/dist/types/components/Steps/index.d.ts.map +1 -1
  493. package/dist/types/components/Steps/steps.content.d.ts +2 -2
  494. package/dist/types/components/Steps/steps.content.d.ts.map +1 -1
  495. package/dist/types/components/SwitchSelector/SwitchSelector.d.ts +11 -12
  496. package/dist/types/components/SwitchSelector/SwitchSelector.d.ts.map +1 -1
  497. package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts +2 -3
  498. package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts.map +1 -1
  499. package/dist/types/components/SwitchSelector/useSwitchSelector.d.ts +1 -2
  500. package/dist/types/components/SwitchSelector/useSwitchSelector.d.ts.map +1 -1
  501. package/dist/types/components/Tab/Tab.d.ts +3 -4
  502. package/dist/types/components/Tab/Tab.d.ts.map +1 -1
  503. package/dist/types/components/Tab/TabContext.d.ts +3 -4
  504. package/dist/types/components/Tab/TabContext.d.ts.map +1 -1
  505. package/dist/types/components/TabSelector/TabSelector.d.ts +4 -5
  506. package/dist/types/components/TabSelector/TabSelector.d.ts.map +1 -1
  507. package/dist/types/components/Table/ExpandButton.d.ts +1 -2
  508. package/dist/types/components/Table/ExpandButton.d.ts.map +1 -1
  509. package/dist/types/components/Table/SmartTable.d.ts +1 -2
  510. package/dist/types/components/Table/SmartTable.d.ts.map +1 -1
  511. package/dist/types/components/Table/Table.d.ts +2 -3
  512. package/dist/types/components/Table/Table.d.ts.map +1 -1
  513. package/dist/types/components/Table/TableElements.d.ts +4 -5
  514. package/dist/types/components/Table/TableElements.d.ts.map +1 -1
  515. package/dist/types/components/Table/useTableWidths.d.ts +1 -2
  516. package/dist/types/components/Table/useTableWidths.d.ts.map +1 -1
  517. package/dist/types/components/Tag/index.d.ts +6 -7
  518. package/dist/types/components/Tag/index.d.ts.map +1 -1
  519. package/dist/types/components/TechLogo/TechLogo.d.ts +2 -3
  520. package/dist/types/components/TechLogo/TechLogo.d.ts.map +1 -1
  521. package/dist/types/components/TechLogo/logos/Adonis.d.ts +1 -2
  522. package/dist/types/components/TechLogo/logos/Adonis.d.ts.map +1 -1
  523. package/dist/types/components/TechLogo/logos/Angular.d.ts +1 -2
  524. package/dist/types/components/TechLogo/logos/Angular.d.ts.map +1 -1
  525. package/dist/types/components/TechLogo/logos/Anthropic.d.ts +1 -2
  526. package/dist/types/components/TechLogo/logos/Anthropic.d.ts.map +1 -1
  527. package/dist/types/components/TechLogo/logos/Astro.d.ts +1 -2
  528. package/dist/types/components/TechLogo/logos/Astro.d.ts.map +1 -1
  529. package/dist/types/components/TechLogo/logos/Atlassian.d.ts +1 -2
  530. package/dist/types/components/TechLogo/logos/Atlassian.d.ts.map +1 -1
  531. package/dist/types/components/TechLogo/logos/Bitbucket.d.ts +1 -2
  532. package/dist/types/components/TechLogo/logos/Bitbucket.d.ts.map +1 -1
  533. package/dist/types/components/TechLogo/logos/ChatGPT.d.ts +1 -2
  534. package/dist/types/components/TechLogo/logos/ChatGPT.d.ts.map +1 -1
  535. package/dist/types/components/TechLogo/logos/Claude.d.ts +1 -2
  536. package/dist/types/components/TechLogo/logos/Claude.d.ts.map +1 -1
  537. package/dist/types/components/TechLogo/logos/DeepSeek.d.ts +1 -2
  538. package/dist/types/components/TechLogo/logos/DeepSeek.d.ts.map +1 -1
  539. package/dist/types/components/TechLogo/logos/Elysia.d.ts +1 -2
  540. package/dist/types/components/TechLogo/logos/Elysia.d.ts.map +1 -1
  541. package/dist/types/components/TechLogo/logos/Express.d.ts +1 -2
  542. package/dist/types/components/TechLogo/logos/Express.d.ts.map +1 -1
  543. package/dist/types/components/TechLogo/logos/Fastify.d.ts +1 -2
  544. package/dist/types/components/TechLogo/logos/Fastify.d.ts.map +1 -1
  545. package/dist/types/components/TechLogo/logos/Gemini.d.ts +1 -2
  546. package/dist/types/components/TechLogo/logos/Gemini.d.ts.map +1 -1
  547. package/dist/types/components/TechLogo/logos/GitHub.d.ts +1 -2
  548. package/dist/types/components/TechLogo/logos/GitHub.d.ts.map +1 -1
  549. package/dist/types/components/TechLogo/logos/GitLab.d.ts +1 -2
  550. package/dist/types/components/TechLogo/logos/GitLab.d.ts.map +1 -1
  551. package/dist/types/components/TechLogo/logos/Google.d.ts +1 -2
  552. package/dist/types/components/TechLogo/logos/Google.d.ts.map +1 -1
  553. package/dist/types/components/TechLogo/logos/GoogleAI.d.ts +1 -2
  554. package/dist/types/components/TechLogo/logos/GoogleAI.d.ts.map +1 -1
  555. package/dist/types/components/TechLogo/logos/Grok.d.ts +1 -2
  556. package/dist/types/components/TechLogo/logos/Grok.d.ts.map +1 -1
  557. package/dist/types/components/TechLogo/logos/HTMX.d.ts +1 -2
  558. package/dist/types/components/TechLogo/logos/HTMX.d.ts.map +1 -1
  559. package/dist/types/components/TechLogo/logos/Hono.d.ts +1 -2
  560. package/dist/types/components/TechLogo/logos/Hono.d.ts.map +1 -1
  561. package/dist/types/components/TechLogo/logos/LinkedIn.d.ts +1 -2
  562. package/dist/types/components/TechLogo/logos/LinkedIn.d.ts.map +1 -1
  563. package/dist/types/components/TechLogo/logos/Lit.d.ts +1 -2
  564. package/dist/types/components/TechLogo/logos/Lit.d.ts.map +1 -1
  565. package/dist/types/components/TechLogo/logos/Lynx.d.ts +1 -2
  566. package/dist/types/components/TechLogo/logos/Lynx.d.ts.map +1 -1
  567. package/dist/types/components/TechLogo/logos/Microsoft.d.ts +1 -2
  568. package/dist/types/components/TechLogo/logos/Microsoft.d.ts.map +1 -1
  569. package/dist/types/components/TechLogo/logos/Mistral.d.ts +1 -2
  570. package/dist/types/components/TechLogo/logos/Mistral.d.ts.map +1 -1
  571. package/dist/types/components/TechLogo/logos/NestJS.d.ts +1 -2
  572. package/dist/types/components/TechLogo/logos/NestJS.d.ts.map +1 -1
  573. package/dist/types/components/TechLogo/logos/Nextjs.d.ts +1 -2
  574. package/dist/types/components/TechLogo/logos/Nextjs.d.ts.map +1 -1
  575. package/dist/types/components/TechLogo/logos/Node.d.ts +1 -2
  576. package/dist/types/components/TechLogo/logos/Node.d.ts.map +1 -1
  577. package/dist/types/components/TechLogo/logos/Nuxt.d.ts +1 -2
  578. package/dist/types/components/TechLogo/logos/Nuxt.d.ts.map +1 -1
  579. package/dist/types/components/TechLogo/logos/Ollama.d.ts +1 -2
  580. package/dist/types/components/TechLogo/logos/Ollama.d.ts.map +1 -1
  581. package/dist/types/components/TechLogo/logos/OpenAI.d.ts +1 -2
  582. package/dist/types/components/TechLogo/logos/OpenAI.d.ts.map +1 -1
  583. package/dist/types/components/TechLogo/logos/Perplexity.d.ts +1 -2
  584. package/dist/types/components/TechLogo/logos/Perplexity.d.ts.map +1 -1
  585. package/dist/types/components/TechLogo/logos/Preact.d.ts +1 -2
  586. package/dist/types/components/TechLogo/logos/Preact.d.ts.map +1 -1
  587. package/dist/types/components/TechLogo/logos/Reactjs.d.ts +1 -2
  588. package/dist/types/components/TechLogo/logos/Reactjs.d.ts.map +1 -1
  589. package/dist/types/components/TechLogo/logos/Remix.d.ts +1 -2
  590. package/dist/types/components/TechLogo/logos/Remix.d.ts.map +1 -1
  591. package/dist/types/components/TechLogo/logos/Solid.d.ts +1 -2
  592. package/dist/types/components/TechLogo/logos/Solid.d.ts.map +1 -1
  593. package/dist/types/components/TechLogo/logos/Svelte.d.ts +1 -2
  594. package/dist/types/components/TechLogo/logos/Svelte.d.ts.map +1 -1
  595. package/dist/types/components/TechLogo/logos/Tanstack.d.ts +1 -2
  596. package/dist/types/components/TechLogo/logos/Tanstack.d.ts.map +1 -1
  597. package/dist/types/components/TechLogo/logos/Vanilla.d.ts +1 -2
  598. package/dist/types/components/TechLogo/logos/Vanilla.d.ts.map +1 -1
  599. package/dist/types/components/TechLogo/logos/Vitejs.d.ts +1 -2
  600. package/dist/types/components/TechLogo/logos/Vitejs.d.ts.map +1 -1
  601. package/dist/types/components/TechLogo/logos/Vuejs.d.ts +1 -2
  602. package/dist/types/components/TechLogo/logos/Vuejs.d.ts.map +1 -1
  603. package/dist/types/components/TechLogo/types.d.ts +1 -2
  604. package/dist/types/components/TechLogo/types.d.ts.map +1 -1
  605. package/dist/types/components/Terminal/Terminal.d.ts +2 -3
  606. package/dist/types/components/Terminal/Terminal.d.ts.map +1 -1
  607. package/dist/types/components/TextArea/AutoSizeTextArea.d.ts +2 -3
  608. package/dist/types/components/TextArea/AutoSizeTextArea.d.ts.map +1 -1
  609. package/dist/types/components/TextArea/AutocompleteTextArea.d.ts +2 -3
  610. package/dist/types/components/TextArea/AutocompleteTextArea.d.ts.map +1 -1
  611. package/dist/types/components/TextArea/ContentEditableTextArea.d.ts +4 -5
  612. package/dist/types/components/TextArea/ContentEditableTextArea.d.ts.map +1 -1
  613. package/dist/types/components/TextArea/TextArea.d.ts +2 -3
  614. package/dist/types/components/TextArea/TextArea.d.ts.map +1 -1
  615. package/dist/types/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.d.ts +1 -2
  616. package/dist/types/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.d.ts.map +1 -1
  617. package/dist/types/components/ThemeSwitcherDropDown/MobileThemeSwitcher.d.ts +1 -2
  618. package/dist/types/components/ThemeSwitcherDropDown/MobileThemeSwitcher.d.ts.map +1 -1
  619. package/dist/types/components/ThemeSwitcherDropDown/types.d.ts +1 -2
  620. package/dist/types/components/ThemeSwitcherDropDown/types.d.ts.map +1 -1
  621. package/dist/types/components/Toaster/Toast.d.ts +10 -11
  622. package/dist/types/components/Toaster/Toast.d.ts.map +1 -1
  623. package/dist/types/components/Toaster/Toaster.d.ts +1 -2
  624. package/dist/types/components/Toaster/Toaster.d.ts.map +1 -1
  625. package/dist/types/components/Toaster/useToast.d.ts +2 -2
  626. package/dist/types/components/Toaster/useToast.d.ts.map +1 -1
  627. package/dist/types/components/WithResizer/index.d.ts +1 -2
  628. package/dist/types/components/WithResizer/index.d.ts.map +1 -1
  629. package/dist/types/hooks/index.d.ts +2 -2
  630. package/dist/types/hooks/useDevice.d.ts +27 -17
  631. package/dist/types/hooks/useDevice.d.ts.map +1 -1
  632. package/dist/types/hooks/useGetElementById.d.ts +1 -2
  633. package/dist/types/hooks/useGetElementById.d.ts.map +1 -1
  634. package/dist/types/hooks/useGetElementOrWindow.d.ts +1 -2
  635. package/dist/types/hooks/useGetElementOrWindow.d.ts.map +1 -1
  636. package/dist/types/hooks/useHorizontalSwipe.d.ts +3 -4
  637. package/dist/types/hooks/useHorizontalSwipe.d.ts.map +1 -1
  638. package/dist/types/hooks/useIsMounted.d.ts +1 -2
  639. package/dist/types/hooks/useIsMounted.d.ts.map +1 -1
  640. package/dist/types/hooks/useItemSelector.d.ts +2 -3
  641. package/dist/types/hooks/useItemSelector.d.ts.map +1 -1
  642. package/dist/types/hooks/useKeyboardDetector.d.ts +1 -2
  643. package/dist/types/hooks/useKeyboardDetector.d.ts.map +1 -1
  644. package/dist/types/hooks/usePersistedStore.d.ts +1 -2
  645. package/dist/types/hooks/usePersistedStore.d.ts.map +1 -1
  646. package/dist/types/hooks/useScreenWidth.d.ts +1 -2
  647. package/dist/types/hooks/useScreenWidth.d.ts.map +1 -1
  648. package/dist/types/hooks/useScrollBlockage/index.d.ts +1 -2
  649. package/dist/types/hooks/useScrollBlockage/index.d.ts.map +1 -1
  650. package/dist/types/hooks/useScrollBlockage/useScrollBlockageStore.d.ts +2 -3
  651. package/dist/types/hooks/useScrollBlockage/useScrollBlockageStore.d.ts.map +1 -1
  652. package/dist/types/hooks/useScrollDetection.d.ts +1 -2
  653. package/dist/types/hooks/useScrollDetection.d.ts.map +1 -1
  654. package/dist/types/hooks/useScrollY.d.ts +1 -2
  655. package/dist/types/hooks/useScrollY.d.ts.map +1 -1
  656. package/dist/types/hooks/useSearch.d.ts +1 -2
  657. package/dist/types/hooks/useSearch.d.ts.map +1 -1
  658. package/dist/types/hooks/useStickToBottom.d.ts +2 -3
  659. package/dist/types/hooks/useStickToBottom.d.ts.map +1 -1
  660. package/dist/types/libs/auth.d.ts +2 -3
  661. package/dist/types/libs/auth.d.ts.map +1 -1
  662. package/dist/types/providers/DeferredAuthProvider.d.ts +2 -3
  663. package/dist/types/providers/DeferredAuthProvider.d.ts.map +1 -1
  664. package/dist/types/providers/ReactQueryProvider.d.ts +2 -3
  665. package/dist/types/providers/ReactQueryProvider.d.ts.map +1 -1
  666. package/dist/types/providers/ThemeProvider.d.ts +5 -6
  667. package/dist/types/providers/ThemeProvider.d.ts.map +1 -1
  668. package/dist/types/routes.d.ts +319 -320
  669. package/dist/types/routes.d.ts.map +1 -1
  670. package/dist/types/structured-data/buildAuthorJsonLd.d.ts +2 -3
  671. package/dist/types/structured-data/buildAuthorJsonLd.d.ts.map +1 -1
  672. package/dist/types/structured-data/buildBreadcrumbsJsonLd.d.ts +3 -4
  673. package/dist/types/structured-data/buildBreadcrumbsJsonLd.d.ts.map +1 -1
  674. package/dist/types/structured-data/buildCreativeWorkJsonLd.d.ts +4 -5
  675. package/dist/types/structured-data/buildCreativeWorkJsonLd.d.ts.map +1 -1
  676. package/dist/types/structured-data/buildFAQPageJsonLd.d.ts +3 -4
  677. package/dist/types/structured-data/buildFAQPageJsonLd.d.ts.map +1 -1
  678. package/dist/types/structured-data/buildItemListJsonLd.d.ts +3 -4
  679. package/dist/types/structured-data/buildItemListJsonLd.d.ts.map +1 -1
  680. package/dist/types/structured-data/buildOrganizationJsonLd.d.ts +2 -3
  681. package/dist/types/structured-data/buildOrganizationJsonLd.d.ts.map +1 -1
  682. package/dist/types/structured-data/buildProductJsonLd.d.ts +3 -4
  683. package/dist/types/structured-data/buildProductJsonLd.d.ts.map +1 -1
  684. package/dist/types/structured-data/buildSoftwareApplicationJsonLd.d.ts +2 -3
  685. package/dist/types/structured-data/buildSoftwareApplicationJsonLd.d.ts.map +1 -1
  686. package/dist/types/structured-data/buildWebsiteJsonLd.d.ts +2 -3
  687. package/dist/types/structured-data/buildWebsiteJsonLd.d.ts.map +1 -1
  688. package/dist/types/structured-data/normalizeJsonLdUrl.d.ts +2 -3
  689. package/dist/types/structured-data/normalizeJsonLdUrl.d.ts.map +1 -1
  690. package/dist/types/utils/observeScrollExtent.d.ts +1 -2
  691. package/dist/types/utils/observeScrollExtent.d.ts.map +1 -1
  692. package/dist/types/utils/scheduleFrameTask.d.ts +1 -2
  693. package/dist/types/utils/scheduleFrameTask.d.ts.map +1 -1
  694. package/package.json +30 -35
@@ -1,13 +1,12 @@
1
1
  import { useAiAPI, useAnalyticsAPI, useAssetAPI, useAuditAPI, useBitbucketAPI, useDictionaryAPI, useEditorAPI, useEnvironmentAPI, useGithubAPI, useGitlabAPI, useIntlayerAuth, useIntlayerOAuth, useIntlayerOAuthOptions, useNewsletterAPI, useOAuthAPI, useOrganizationAPI, useProjectAPI, useReviewerAPI, useSearchAPI, useShowcaseProjectAPI, useStripeAPI, useTagAPI, useTranslateAPI, useUserAPI } from "./useIntlayerAPI.mjs";
2
- import { useAddPasskey, useAskResetPassword, useChangePassword, useDeletePasskey, useDeleteSSOProvider, useDisableTwoFactor, useEnableTwoFactor, useGetUserByAccount, useGetVerifyEmailStatus, useLinkSocial, useListAccounts, useListPasskeys, useListSSOProviders, useLogin, useLogout, useRegister, useRegisterSSO, useResetPassword, useSignInMagicLink, useSignInPasskey, useSignInSSO, useUnlinkAccount, useVerifyBackupCode, useVerifyEmail, useVerifyTotp } from "./hooks/auth.mjs";
3
2
  import { useOAuth2 } from "./useAuth/useOAuth2.mjs";
4
3
  import { useSession } from "./useAuth/useSession.mjs";
5
4
  import { useAuth } from "./useAuth/useAuth.mjs";
6
- import { useUser } from "./useUser/index.mjs";
7
5
  import { useAskDocQuestion, useAuditContentDeclaration, useAuditContentDeclarationField, useAuditContentDeclarationMetadata, useAuditTag, useAutocomplete, useChat, useCustomQuery, useGetAIStats, useTranslateJSONDeclaration } from "./hooks/ai.mjs";
8
6
  import { useGetAnalyticsAudience, useGetContentStats, useGetExperimentResults } from "./hooks/analytics.mjs";
9
7
  import { useDeleteAsset, useGetAssetById, useGetAssets, useUpdateAsset, useUploadAsset } from "./hooks/asset.mjs";
10
8
  import { useAuditScan, useGetRecursiveAuditStatus, useStartRecursiveAudit } from "./hooks/audit.mjs";
9
+ import { useAddPasskey, useAskResetPassword, useChangePassword, useDeletePasskey, useDeleteSSOProvider, useDisableTwoFactor, useEnableTwoFactor, useGetUserByAccount, useGetVerifyEmailStatus, useLinkSocial, useListAccounts, useListPasskeys, useListSSOProviders, useLogin, useLogout, useRegister, useRegisterSSO, useResetPassword, useSignInMagicLink, useSignInPasskey, useSignInSSO, useUnlinkAccount, useVerifyBackupCode, useVerifyEmail, useVerifyTotp } from "./hooks/auth.mjs";
11
10
  import { useBitbucketAuth, useBitbucketCheckConfig, useBitbucketGetConfigFile, useBitbucketRepos } from "./hooks/bitbucket.mjs";
12
11
  import { useAddDictionary, useDeleteDictionary, useGetDictionaries, useGetDictionariesKeys, useGetDictionary, useInfiniteGetDictionaries, usePushDictionaries, useUpdateDictionary } from "./hooks/dictionary.mjs";
13
12
  import { useGetDiscussions, useGetDiscussionsData } from "./hooks/discussions.mjs";
@@ -25,5 +24,6 @@ import { useAcceptAffiliateInvitation, useCancelSubscription, useCreatePortalSes
25
24
  import { useAddTag, useDeleteTag, useGetTags, useUpdateTag } from "./hooks/tag.mjs";
26
25
  import { useFillAllTranslations, usePauseTranslationJob, useResumeTranslationJob, useStopTranslationJob } from "./hooks/translate.mjs";
27
26
  import { useCreateUser, useDeleteUser, useGetUserById, useGetUsers, useUpdateUser, useUploadUserAvatar } from "./hooks/user.mjs";
27
+ import { useUser } from "./useUser/index.mjs";
28
28
 
29
29
  export { useAcceptAffiliateInvitation, useAddDictionary, useAddEnvironment, useAddNewAccessKey, useAddOrganization, useAddOrganizationMember, useAddPasskey, useAddProject, useAddTag, useAiAPI, useAnalyticsAPI, useAskDocQuestion, useAskResetPassword, useAssetAPI, useAuditAPI, useAuditContentDeclaration, useAuditContentDeclarationField, useAuditContentDeclarationMetadata, useAuditScan, useAuditTag, useAuth, useAutocomplete, useBitbucketAPI, useBitbucketAuth, useBitbucketCheckConfig, useBitbucketGetConfigFile, useBitbucketRepos, useCancelSubscription, useChangePassword, useChat, useContactReviewer, useCreateMission, useCreatePortalSession, useCreatePromoCode, useCreateUser, useCustomQuery, useDeleteAccessKey, useDeleteAsset, useDeleteDictionary, useDeleteEnvironment, useDeleteOrganization, useDeleteOrganizationById, useDeletePasskey, useDeleteProject, useDeleteProjectById, useDeletePromoCode, useDeleteReviewerProfile, useDeleteSSOProvider, useDeleteShowcaseProject, useDeleteTag, useDeleteUser, useDictionaryAPI, useDisableTwoFactor, useEditorAPI, useEnableTwoFactor, useEnvironmentAPI, useEstimateMission, useFillAllTranslations, useGetAIStats, useGetAdminReviewers, useGetAffiliate, useGetAffiliateAccountSession, useGetAffiliateById, useGetAffiliateInvitation, useGetAffiliateInvitations, useGetAffiliateOnboardingLink, useGetAffiliatePromoCode, useGetAffiliateStats, useGetAffiliates, useGetAnalyticsAudience, useGetAssetById, useGetAssets, useGetCIConfig, useGetChatHistory, useGetContentStats, useGetDictionaries, useGetDictionariesKeys, useGetDictionary, useGetDiscussions, useGetDiscussionsData, useGetEditorDictionaries, useGetExperimentResults, useGetInvoices, useGetMissionById, useGetMyMissions, useGetMyReviewerProfile, useGetNewsletterStatus, useGetOrganizations, useGetOtherShowcaseProjects, useGetPaymentMethod, useGetPricing, useGetProjectInsights, useGetProjects, useGetPromoCodeById, useGetPromoCodes, useGetRecursiveAuditStatus, useGetReviewerById, useGetReviewerMarketplace, useGetReviewerPriceDistribution, useGetReviewerReviews, useGetShowcaseProjectById, useGetShowcaseProjects, useGetSubscription, useGetTags, useGetUserByAccount, useGetUserById, useGetUsers, useGetVerifyEmailStatus, useGithubAPI, useGithubAuth, useGithubCheckConfig, useGithubGetAuthUrl, useGithubGetConfigFile, useGithubRepos, useGithubToken, useGitlabAPI, useGitlabAuth, useGitlabCheckConfig, useGitlabGetConfigFile, useGitlabProjects, useGrantAffiliateAccess, useInfiniteGetDictionaries, useIntlayerAuth, useIntlayerOAuth, useIntlayerOAuthOptions, useLinkSocial, useListAccounts, useListPasskeys, useListSSOProviders, useLogin, useLogout, useMigrateEnvironment, useNewsletterAPI, useOAuth2, useOAuthAPI, useOrganizationAPI, usePauseTranslationJob, useProjectAPI, usePushCIConfig, usePushDictionaries, usePushProjectConfiguration, useRefreshAccessKey, useRegister, useRegisterAsReviewer, useRegisterSSO, useResetPassword, useResetToProductionEnvironment, useResumeTranslationJob, useReviewerAPI, useSearchAPI, useSearchDoc, useSelectEnvironment, useSelectOrganization, useSelectProject, useSendAffiliateInvitation, useSendReviewerMessage, useSession, useShowcaseProjectAPI, useSignInMagicLink, useSignInPasskey, useSignInSSO, useStartRecursiveAudit, useStopTranslationJob, useStripeAPI, useSubmitReview, useSubmitShowcaseProject, useSubscribeToNewsletter, useTagAPI, useToggleShowcaseDownvote, useToggleShowcaseUpvote, useTranslateAPI, useTranslateJSONDeclaration, useTriggerBuild, useTriggerWebhook, useUnlinkAccount, useUnselectOrganization, useUnselectProject, useUnsubscribeFromNewsletter, useUpdateAffiliateStatus, useUpdateAsset, useUpdateDictionary, useUpdateEnvironment, useUpdateMemberAccess, useUpdateMissionStatus, useUpdateOrganization, useUpdateOrganizationMailerConfig, useUpdateOrganizationMembers, useUpdateOrganizationMembersById, useUpdateProject, useUpdateProjectMembers, useUpdatePromoCode, useUpdateReviewerProfile, useUpdateShowcaseProject, useUpdateTag, useUpdateUser, useUploadAsset, useUploadReviewerCoverPicture, useUploadReviewerMainPicture, useUploadUserAvatar, useUser, useUserAPI, useValidateReviewerProfile, useVerifyBackupCode, useVerifyEmail, useVerifyTotp, useWriteDictionary };
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { useLogout } from "../hooks/auth.mjs";
4
3
  import { useAuth } from "../useAuth/useAuth.mjs";
4
+ import { useLogout } from "../hooks/auth.mjs";
5
5
 
6
6
  //#region src/api/useUser/index.ts
7
7
  const useUser = () => {
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { Button } from "../Button/Button.mjs";
4
3
  import { useUser } from "../../api/useUser/index.mjs";
4
+ import { Button } from "../Button/Button.mjs";
5
5
  import { AutoCompleteTextarea } from "../TextArea/AutocompleteTextArea.mjs";
6
6
  import { useEffect, useState } from "react";
7
7
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1,5 +1,6 @@
1
1
  'use client';
2
2
 
3
+ import { useAuditContentDeclarationField } from "../../../api/hooks/ai.mjs";
3
4
  import { Loader } from "../../Loader/index.mjs";
4
5
  import { Button } from "../../Button/Button.mjs";
5
6
  import { Accordion } from "../../Accordion/Accordion.mjs";
@@ -7,7 +8,6 @@ import { Container } from "../../Container/index.mjs";
7
8
  import { ContentEditorInput as ContentEditorInput$1 } from "../../ContentEditor/ContentEditorInput.mjs";
8
9
  import { ContentEditorTextArea as ContentEditorTextArea$1 } from "../../ContentEditor/ContentEditorTextArea.mjs";
9
10
  import { SwitchSelector } from "../../SwitchSelector/SwitchSelector.mjs";
10
- import { useAuditContentDeclarationField } from "../../../api/hooks/ai.mjs";
11
11
  import { renameKey } from "./object.mjs";
12
12
  import { Label } from "../../Label/index.mjs";
13
13
  import { useLocaleSwitcherContent } from "../../LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs";
@@ -16,9 +16,9 @@ import { SafeHtmlRenderer } from "./SafeHtmlRenderer.mjs";
16
16
  import { Fragment, Suspense, lazy, memo, useState } from "react";
17
17
  import { jsx, jsxs } from "react/jsx-runtime";
18
18
  import { Plus, Trash, WandSparkles } from "lucide-react";
19
+ import { useConfiguration, useEditedContent } from "@intlayer/editor-react";
19
20
  import { useIntlayer, useLocale } from "react-intlayer";
20
21
  import { getLocaleName } from "@intlayer/core/localization";
21
- import { useConfiguration, useEditedContent } from "@intlayer/editor-react";
22
22
  import { getEmptyNode, getNodeType } from "@intlayer/core/dictionaryManipulator";
23
23
  import * as NodeTypes from "@intlayer/types/nodeType";
24
24
  import { camelCaseToSentence } from "@intlayer/config/client";
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
 
3
- import { Button } from "../../Button/Button.mjs";
4
3
  import { useSession } from "../../../api/useAuth/useSession.mjs";
5
4
  import { useAddDictionary } from "../../../api/hooks/dictionary.mjs";
6
5
  import { useGetProjects } from "../../../api/hooks/project.mjs";
6
+ import { Button } from "../../Button/Button.mjs";
7
7
  import { MultiSelect } from "../../Select/Multiselect.mjs";
8
8
  import { Select } from "../../Select/Select.mjs";
9
9
  import { InputElement } from "../../Form/elements/InputElement.mjs";
@@ -1,16 +1,16 @@
1
1
  'use client';
2
2
 
3
3
  import { cn } from "../../../utils/cn.mjs";
4
- import { Loader } from "../../Loader/index.mjs";
5
- import { Button } from "../../Button/Button.mjs";
6
- import { Container } from "../../Container/index.mjs";
7
- import { Checkbox } from "../../Input/Checkbox.mjs";
8
- import { Input } from "../../Input/Input.mjs";
9
4
  import { useSession } from "../../../api/useAuth/useSession.mjs";
10
5
  import { useAuditContentDeclarationMetadata } from "../../../api/hooks/ai.mjs";
11
6
  import { useGetDictionaries } from "../../../api/hooks/dictionary.mjs";
12
7
  import { useGetProjects } from "../../../api/hooks/project.mjs";
13
8
  import { useGetTags } from "../../../api/hooks/tag.mjs";
9
+ import { Loader } from "../../Loader/index.mjs";
10
+ import { Button } from "../../Button/Button.mjs";
11
+ import { Container } from "../../Container/index.mjs";
12
+ import { Checkbox } from "../../Input/Checkbox.mjs";
13
+ import { Input } from "../../Input/Input.mjs";
14
14
  import { MultiSelect } from "../../Select/Multiselect.mjs";
15
15
  import { Select } from "../../Select/Select.mjs";
16
16
  import { FormItem } from "../../Form/FormItem.mjs";
@@ -30,8 +30,8 @@ import { useDictionaryDetailsSchema } from "./useDictionaryDetailsSchema.mjs";
30
30
  import { useEffect, useMemo, useState } from "react";
31
31
  import { jsx, jsxs } from "react/jsx-runtime";
32
32
  import { WandSparkles } from "lucide-react";
33
- import { useIntlayer } from "react-intlayer";
34
33
  import { useEditedContent } from "@intlayer/editor-react";
34
+ import { useIntlayer } from "react-intlayer";
35
35
  import { useWatch } from "react-hook-form";
36
36
  import { AnimatePresence, motion } from "framer-motion";
37
37
 
@@ -13,8 +13,8 @@ import { StructureEditor } from "./StructureEditor.mjs";
13
13
  import { useEffect, useState } from "react";
14
14
  import { jsx, jsxs } from "react/jsx-runtime";
15
15
  import { ArrowLeft } from "lucide-react";
16
- import { useIntlayer } from "react-intlayer";
17
16
  import { useConfiguration, useDictionariesRecordActions, useFocusUnmergedDictionary } from "@intlayer/editor-react";
17
+ import { useIntlayer } from "react-intlayer";
18
18
 
19
19
  //#region src/components/DictionaryFieldEditor/DictionaryFieldEditor.tsx
20
20
  const DictionaryFieldEditor = ({ dictionary, onClickDictionaryList, isDarkMode, mode, onDelete, onSave, showReturnButton = true, rightContent }) => {
@@ -5,8 +5,8 @@ import { getIsEditableSection } from "../getIsEditableSection.mjs";
5
5
  import { useState } from "react";
6
6
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
7
  import { ChevronRight, Plus } from "lucide-react";
8
- import { useIntlayer } from "react-intlayer";
9
8
  import { useEditedContentActions, useEditorLocale, useFocusUnmergedDictionary } from "@intlayer/editor-react";
9
+ import { useIntlayer } from "react-intlayer";
10
10
  import { getContentNodeByKeyPath, getEmptyNode, getNodeType } from "@intlayer/core/dictionaryManipulator";
11
11
  import * as NodeTypes from "@intlayer/types/nodeType";
12
12
  import { isSameKeyPath } from "@intlayer/core/utils";
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { Container } from "../Container/index.mjs";
4
3
  import { useGetDictionaries } from "../../api/hooks/dictionary.mjs";
4
+ import { Container } from "../Container/index.mjs";
5
5
  import { LocaleSwitcherContent } from "../LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs";
6
6
  import { TextEditorContainer } from "./ContentEditorView/TextEditor.mjs";
7
7
  import { Pagination } from "../Pagination/Pagination.mjs";
@@ -10,8 +10,8 @@ import { KeyPathBreadcrumb } from "./KeyPathBreadcrumb.mjs";
10
10
  import { NavigationViewNode } from "./NavigationView/NavigationViewNode.mjs";
11
11
  import { useCallback, useDeferredValue, useEffect, useMemo, useState, useTransition } from "react";
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
13
- import { useIntlayer } from "react-intlayer";
14
13
  import { useEditedContent, useEditorLocale, useFocusUnmergedDictionary } from "@intlayer/editor-react";
14
+ import { useIntlayer } from "react-intlayer";
15
15
  import { getContentNodeByKeyPath } from "@intlayer/core/dictionaryManipulator";
16
16
 
17
17
  //#region src/components/DictionaryFieldEditor/NodeEditor.tsx
@@ -1,17 +1,17 @@
1
1
  'use client';
2
2
 
3
3
  import { cn } from "../../../utils/cn.mjs";
4
- import { Button } from "../../Button/Button.mjs";
5
4
  import { useSession } from "../../../api/useAuth/useSession.mjs";
6
5
  import { useAuth } from "../../../api/useAuth/useAuth.mjs";
7
6
  import { useDeleteDictionary, usePushDictionaries } from "../../../api/hooks/dictionary.mjs";
8
7
  import { useWriteDictionary } from "../../../api/hooks/editor.mjs";
8
+ import { Button } from "../../Button/Button.mjs";
9
9
  import { Modal } from "../../Modal/Modal.mjs";
10
10
  import { useState } from "react";
11
11
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
12
12
  import { ArrowUpFromLine, Download, RotateCcw, Save, Trash } from "lucide-react";
13
- import { useIntlayer } from "react-intlayer";
14
13
  import { useDictionariesRecordActions, useEditedContent } from "@intlayer/editor-react";
14
+ import { useIntlayer } from "react-intlayer";
15
15
 
16
16
  //#region src/components/DictionaryFieldEditor/SaveForm/SaveForm.tsx
17
17
  const SaveForm = ({ dictionary, mode, className, onDelete, onSave, ...props }) => {
@@ -6,8 +6,8 @@ import { EditableFieldInput } from "../../EditableField/EditableFieldInput.mjs";
6
6
  import { NodeTypeSelector } from "../NodeTypeSelector.mjs";
7
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
8
  import { Plus, Trash } from "lucide-react";
9
- import { useIntlayer } from "react-intlayer";
10
9
  import { useConfiguration, useEditedContentActions, useFocusUnmergedDictionary } from "@intlayer/editor-react";
10
+ import { useIntlayer } from "react-intlayer";
11
11
  import { getDefaultNode, getNodeChildren, getNodeType } from "@intlayer/core/dictionaryManipulator";
12
12
  import * as NodeTypes from "@intlayer/types/nodeType";
13
13
  import { isSameKeyPath } from "@intlayer/core/utils";
@@ -1,6 +1,6 @@
1
1
  import { Code } from "./Code.mjs";
2
- import { jsx } from "react/jsx-runtime";
3
2
  import cn from "cnfast";
3
+ import { jsx } from "react/jsx-runtime";
4
4
  import { MarkdownRenderer as MarkdownRenderer$1 } from "react-intlayer/markdown";
5
5
 
6
6
  //#region src/components/IDE/MarkDownRender.tsx
@@ -107,21 +107,32 @@ const bgStyle = "bg-card/95 shadow-[0_0_10px_-15px_rgba(0,0,0,0.3)] backdrop-blu
107
107
  * @param props - MobileNavbar component props
108
108
  * @returns Mobile navigation with rollable full-screen menu
109
109
  */
110
- const MobileNavbar = ({ logo, topChildren, topSections = [], bottomChildren, bottomSections = [], rightItems, rollable = true }) => {
110
+ const MobileNavbar = ({ logo, topChildren, topSections = [], bottomChildren, bottomSections = [], rightItems, rollable = true, isActive = true }) => {
111
111
  const [isHidden, setIsHidden] = useState(false);
112
112
  const [isUnrolled, setIsUnrolled] = useState(false);
113
113
  const [headerHeight, setHeaderHeight] = useState(0);
114
114
  const navRef = useRef(null);
115
115
  useScrollBlockage({
116
- disableScroll: rollable,
116
+ disableScroll: isActive && rollable,
117
117
  key: "mobile_nav"
118
118
  });
119
119
  useScrollDetection({
120
120
  onScrollUp: () => setIsHidden(false),
121
121
  onScrollDown: () => setIsHidden(true),
122
- isEnabled: !isUnrolled && rollable
122
+ isEnabled: isActive && !isUnrolled && rollable
123
123
  });
124
124
  /**
125
+ * Clears the transient state when the desktop layout takes over. Without it,
126
+ * a viewport that grows past the breakpoint while the header is scrolled away
127
+ * — or while the menu is open — restores that state on the way back, and the
128
+ * user returns to a navbar that is translated off screen.
129
+ */
130
+ useEffect(() => {
131
+ if (isActive) return;
132
+ setIsHidden(false);
133
+ setIsUnrolled(false);
134
+ }, [isActive]);
135
+ /**
125
136
  * Measures the collapsed header so the rolled-down panel can size itself to
126
137
  * the rest of the viewport.
127
138
  *
@@ -1 +1 @@
1
- {"version":3,"file":"MobileNavbar.mjs","names":[],"sources":["../../../../src/components/Navbar/MobileNavbar.tsx"],"sourcesContent":["'use client';\n\nimport { useScrollBlockage } from '@hooks/useScrollBlockage';\nimport { useScrollDetection } from '@hooks/useScrollDetection';\nimport { cn } from '@utils/cn';\nimport { m, type Variants } from 'framer-motion';\nimport {\n type ReactElement,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { MaxHeightSmoother } from '../MaxHeightSmoother';\nimport type { TabSelectorItemProps } from '../TabSelector';\nimport { Burger } from './Burger';\n\n/**\n * Props for the MobileNavbar component\n * @template T - The tab props type extending TabProps\n */\ntype MobileNavbarProps<T extends TabSelectorItemProps> = {\n /** Logo component or element displayed in the header */\n logo: ReactNode;\n /** Additional content displayed at the top of expanded mobile menu */\n topChildren?: ReactNode;\n /** Navigation sections displayed in the top area of expanded menu */\n topSections?: ReactElement<T>[];\n /** Additional content displayed at the bottom of expanded mobile menu */\n bottomChildren?: ReactNode;\n /** Navigation sections displayed in the bottom area of expanded menu */\n bottomSections?: ReactElement<T>[];\n /** Right-aligned items in the collapsed header (e.g., search, notifications) */\n rightItems?: ReactNode;\n /** Whether the navbar should be rollable (default: true) */\n rollable?: boolean;\n};\n\n/**\n * Framer Motion animation variants for staggered menu item reveals\n * Creates a smooth cascading effect when menu opens/closes\n */\nconst navVariants: Variants = {\n open: {\n transition: { staggerChildren: 0.07, delayChildren: 0.2 },\n },\n closed: {\n transition: { staggerChildren: 0.05, staggerDirection: -1 },\n },\n};\n\n/**\n * Shared background styling for mobile navbar components\n * Provides glass-morphism effect with blur and transparency\n */\nconst bgStyle =\n 'bg-card/95 shadow-[0_0_10px_-15px_rgba(0,0,0,0.3)] backdrop-blur';\n\n/**\n * Mobile Navigation Bar Component\n *\n * A sophisticated mobile-first navigation component with rollable full-screen menu,\n * scroll-aware behavior, and smooth animations. Optimized for touch interactions and\n * mobile user experience patterns.\n *\n * Features:\n * - rollable hamburger menu with full-screen overlay\n * - Auto-hide on scroll down, show on scroll up for screen space optimization\n * - Background scroll prevention when menu is open\n * - Staggered animations for smooth menu item reveals\n * - Flexible content areas (top/bottom children and sections)\n * - Responsive layout with viewport-aware sizing\n * - Backdrop blur effects for modern glass-morphism design\n *\n * Layout Structure:\n * ```\n * [Logo] ----------- [Right Items] [Burger]\n * (when expanded)\n * ┌─────────────────────────────────────────┐\n * │ [Top Children] │\n * │ [Top Sections - Navigation Items] │\n * │ [Bottom Sections - Navigation Items] │\n * │ [Bottom Children] │\n * └─────────────────────────────────────────┘\n * ```\n *\n * Behavioral Features:\n * - Sticky positioning with dynamic hide/show based on scroll direction\n * - Background scroll locking when menu is expanded\n * - Click outside to close expanded menu\n * - Smooth height animations with MaxHeightSmoother\n * - Intelligent burger button visibility (only shown if sections exist)\n *\n * Animation Details:\n * - Menu items animate in with staggered timing (70ms delay between items)\n * - Exit animations are reversed with 50ms stagger\n * - Initial delay of 200ms before items start animating in\n * - Full viewport height menu with dynamic height calculation\n *\n * @example\n * Basic mobile navbar:\n * ```tsx\n * <MobileNavbar\n * logo={<MobileLogo />}\n * topSections={primaryNavItems}\n * rightItems={<SearchIcon />}\n * />\n * ```\n *\n * @example\n * Full-featured mobile navbar:\n * ```tsx\n * <MobileNavbar\n * logo={<Logo />}\n * topChildren={<WelcomeMessage />}\n * topSections={mainNavItems}\n * bottomSections={utilityNavItems}\n * bottomChildren={<UserProfile />}\n * rightItems={\n * <>\n * <NotificationIcon />\n * <SearchIcon />\n * </>\n * }\n * />\n * ```\n *\n * Accessibility Features:\n * - Menu expanded state communicated via aria-expanded\n * - Focus management and keyboard navigation support\n * - Screen reader friendly with semantic nav structure\n *\n * @template T - Tab properties type extending TabProps for type safety\n * @param props - MobileNavbar component props\n * @returns Mobile navigation with rollable full-screen menu\n */\nexport const MobileNavbar = <T extends TabSelectorItemProps>({\n logo,\n topChildren,\n topSections = [],\n bottomChildren,\n bottomSections = [],\n rightItems,\n rollable = true,\n}: MobileNavbarProps<T>) => {\n const [isHidden, setIsHidden] = useState<boolean>(false);\n const [isUnrolled, setIsUnrolled] = useState<boolean>(false);\n const [headerHeight, setHeaderHeight] = useState<number>(0);\n\n const navRef = useRef<HTMLDivElement>(null);\n\n useScrollBlockage({\n disableScroll: rollable,\n key: 'mobile_nav',\n });\n\n useScrollDetection({\n onScrollUp: () => setIsHidden(false),\n onScrollDown: () => setIsHidden(true),\n isEnabled: !isUnrolled && rollable,\n });\n\n /**\n * Measures the collapsed header so the rolled-down panel can size itself to\n * the rest of the viewport.\n *\n * Reading `clientHeight` from the render body forced a layout on every\n * render, and `useScrollDetection` re-renders this component on each wheel\n * event — so the measurement ran once per scroll frame. A `ResizeObserver`\n * callback runs *after* layout, which makes the same read free, and the\n * height is published only when it actually changed.\n */\n useEffect(() => {\n const headerElement = navRef.current;\n\n if (!headerElement) return;\n\n const resizeObserver = new ResizeObserver(([entry]) => {\n if (!entry) return;\n\n // Border box, to stay equivalent to the `clientHeight` this replaces:\n // `contentRect` would drop the header's vertical padding.\n const measuredHeight =\n entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height;\n\n setHeaderHeight((previousHeight) =>\n previousHeight === measuredHeight ? previousHeight : measuredHeight\n );\n });\n\n resizeObserver.observe(headerElement);\n\n return () => resizeObserver.disconnect();\n }, []);\n\n const backDivHeight = isHidden ? 0 : headerHeight;\n\n const isBurgerShowed = topSections.length + bottomSections.length > 0;\n\n return (\n <nav\n className={cn(\n bgStyle,\n 'sticky top-0 z-50 flex w-screen flex-col transition',\n isHidden ? '-translate-y-full' : 'translate-y-0'\n )}\n id=\"mobile-menu\"\n >\n <div\n className=\"flex w-full items-center justify-between gap-1 px-4 py-3 md:gap-[10vw]\"\n ref={navRef}\n >\n {logo}\n\n <div className=\"flex w-full flex-1 items-center justify-end gap-6\">\n <div className=\"flex w-full items-center justify-end gap-1\">\n {rightItems}\n </div>\n\n {isBurgerShowed && (\n <Burger\n isActive={isUnrolled}\n onClick={() => setIsUnrolled((isUnrolled) => !isUnrolled)}\n />\n )}\n </div>\n </div>\n\n <div\n className={cn(\n bgStyle,\n 'absolute bottom-0 left-0 w-full translate-y-full'\n )}\n >\n <MaxHeightSmoother isHidden={!isUnrolled}>\n <m.div\n className=\"flex w-full flex-col pt-10 pb-[20%] text-foreground text-lg tracking-wide\"\n onClick={() => setIsUnrolled(false)}\n animate={isUnrolled ? 'open' : 'closed'}\n variants={navVariants}\n style={{\n height: `calc(100vh - ${backDivHeight}px)`,\n }}\n >\n {topChildren}\n <div className=\"flex h-full flex-col justify-center\">\n {topSections}\n {bottomSections}\n </div>\n\n <div className=\"m-auto flex w-full max-w-100 items-center justify-center gap-1 px-5 py-3\">\n {bottomChildren}\n </div>\n </m.div>\n </MaxHeightSmoother>\n </div>\n </nav>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;AA0CA,MAAM,cAAwB;CAC5B,MAAM,EACJ,YAAY;EAAE,iBAAiB;EAAM,eAAe;CAAI,EAC1D;CACA,QAAQ,EACN,YAAY;EAAE,iBAAiB;EAAM,kBAAkB;CAAG,EAC5D;AACF;;;;;AAMA,MAAM,UACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFF,MAAa,gBAAgD,EAC3D,MACA,aACA,cAAc,CAAC,GACf,gBACA,iBAAiB,CAAC,GAClB,YACA,WAAW,WACe;CAC1B,MAAM,CAAC,UAAU,eAAe,SAAkB,KAAK;CACvD,MAAM,CAAC,YAAY,iBAAiB,SAAkB,KAAK;CAC3D,MAAM,CAAC,cAAc,mBAAmB,SAAiB,CAAC;CAE1D,MAAM,SAAS,OAAuB,IAAI;CAE1C,kBAAkB;EAChB,eAAe;EACf,KAAK;CACP,CAAC;CAED,mBAAmB;EACjB,kBAAkB,YAAY,KAAK;EACnC,oBAAoB,YAAY,IAAI;EACpC,WAAW,CAAC,cAAc;CAC5B,CAAC;;;;;;;;;;;CAYD,gBAAgB;EACd,MAAM,gBAAgB,OAAO;EAE7B,IAAI,CAAC,eAAe;EAEpB,MAAM,iBAAiB,IAAI,gBAAgB,CAAC,WAAW;GACrD,IAAI,CAAC,OAAO;GAIZ,MAAM,iBACJ,MAAM,gBAAgB,EAAE,EAAE,aAAa,MAAM,YAAY;GAE3D,iBAAiB,mBACf,mBAAmB,iBAAiB,iBAAiB,cACvD;EACF,CAAC;EAED,eAAe,QAAQ,aAAa;EAEpC,aAAa,eAAe,WAAW;CACzC,GAAG,CAAC,CAAC;CAEL,MAAM,gBAAgB,WAAW,IAAI;CAErC,MAAM,iBAAiB,YAAY,SAAS,eAAe,SAAS;CAEpE,OACE,qBAAC,OAAD;EACE,WAAW,GACT,SACA,uDACA,WAAW,sBAAsB,eACnC;EACA,IAAG;YANL,CAQE,qBAAC,OAAD;GACE,WAAU;GACV,KAAK;aAFP,CAIG,MAED,qBAAC,OAAD;IAAK,WAAU;cAAf,CACE,oBAAC,OAAD;KAAK,WAAU;eACZ;IACE,IAEJ,kBACC,oBAAC,QAAD;KACE,UAAU;KACV,eAAe,eAAe,eAAe,CAAC,UAAU;IACzD,EAEA;KACF;MAEL,oBAAC,OAAD;GACE,WAAW,GACT,SACA,kDACF;aAEA,oBAAC,mBAAD;IAAmB,UAAU,CAAC;cAC5B,qBAAC,EAAE,KAAH;KACE,WAAU;KACV,eAAe,cAAc,KAAK;KAClC,SAAS,aAAa,SAAS;KAC/B,UAAU;KACV,OAAO,EACL,QAAQ,gBAAgB,cAAc,KACxC;eAPF;MASG;MACD,qBAAC,OAAD;OAAK,WAAU;iBAAf,CACG,aACA,cACE;;MAEL,oBAAC,OAAD;OAAK,WAAU;iBACZ;MACE;KACA;;GACU;EAChB,EACF;;AAET"}
1
+ {"version":3,"file":"MobileNavbar.mjs","names":[],"sources":["../../../../src/components/Navbar/MobileNavbar.tsx"],"sourcesContent":["'use client';\n\nimport { useScrollBlockage } from '@hooks/useScrollBlockage';\nimport { useScrollDetection } from '@hooks/useScrollDetection';\nimport { cn } from '@utils/cn';\nimport { m, type Variants } from 'framer-motion';\nimport {\n type ReactElement,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { MaxHeightSmoother } from '../MaxHeightSmoother';\nimport type { TabSelectorItemProps } from '../TabSelector';\nimport { Burger } from './Burger';\n\n/**\n * Props for the MobileNavbar component\n * @template T - The tab props type extending TabProps\n */\ntype MobileNavbarProps<T extends TabSelectorItemProps> = {\n /** Logo component or element displayed in the header */\n logo: ReactNode;\n /** Additional content displayed at the top of expanded mobile menu */\n topChildren?: ReactNode;\n /** Navigation sections displayed in the top area of expanded menu */\n topSections?: ReactElement<T>[];\n /** Additional content displayed at the bottom of expanded mobile menu */\n bottomChildren?: ReactNode;\n /** Navigation sections displayed in the bottom area of expanded menu */\n bottomSections?: ReactElement<T>[];\n /** Right-aligned items in the collapsed header (e.g., search, notifications) */\n rightItems?: ReactNode;\n /** Whether the navbar should be rollable (default: true) */\n rollable?: boolean;\n /**\n * Whether this navbar is the one on screen. The responsive switch is done in\n * CSS, so the desktop layout keeps this component mounted but hidden; a\n * hidden navbar must not lock the page scroll or answer scroll events.\n * Defaults to `true`, for the standalone use of this component.\n */\n isActive?: boolean;\n};\n\n/**\n * Framer Motion animation variants for staggered menu item reveals\n * Creates a smooth cascading effect when menu opens/closes\n */\nconst navVariants: Variants = {\n open: {\n transition: { staggerChildren: 0.07, delayChildren: 0.2 },\n },\n closed: {\n transition: { staggerChildren: 0.05, staggerDirection: -1 },\n },\n};\n\n/**\n * Shared background styling for mobile navbar components\n * Provides glass-morphism effect with blur and transparency\n */\nconst bgStyle =\n 'bg-card/95 shadow-[0_0_10px_-15px_rgba(0,0,0,0.3)] backdrop-blur';\n\n/**\n * Mobile Navigation Bar Component\n *\n * A sophisticated mobile-first navigation component with rollable full-screen menu,\n * scroll-aware behavior, and smooth animations. Optimized for touch interactions and\n * mobile user experience patterns.\n *\n * Features:\n * - rollable hamburger menu with full-screen overlay\n * - Auto-hide on scroll down, show on scroll up for screen space optimization\n * - Background scroll prevention when menu is open\n * - Staggered animations for smooth menu item reveals\n * - Flexible content areas (top/bottom children and sections)\n * - Responsive layout with viewport-aware sizing\n * - Backdrop blur effects for modern glass-morphism design\n *\n * Layout Structure:\n * ```\n * [Logo] ----------- [Right Items] [Burger]\n * (when expanded)\n * ┌─────────────────────────────────────────┐\n * │ [Top Children] │\n * │ [Top Sections - Navigation Items] │\n * │ [Bottom Sections - Navigation Items] │\n * │ [Bottom Children] │\n * └─────────────────────────────────────────┘\n * ```\n *\n * Behavioral Features:\n * - Sticky positioning with dynamic hide/show based on scroll direction\n * - Background scroll locking when menu is expanded\n * - Click outside to close expanded menu\n * - Smooth height animations with MaxHeightSmoother\n * - Intelligent burger button visibility (only shown if sections exist)\n *\n * Animation Details:\n * - Menu items animate in with staggered timing (70ms delay between items)\n * - Exit animations are reversed with 50ms stagger\n * - Initial delay of 200ms before items start animating in\n * - Full viewport height menu with dynamic height calculation\n *\n * @example\n * Basic mobile navbar:\n * ```tsx\n * <MobileNavbar\n * logo={<MobileLogo />}\n * topSections={primaryNavItems}\n * rightItems={<SearchIcon />}\n * />\n * ```\n *\n * @example\n * Full-featured mobile navbar:\n * ```tsx\n * <MobileNavbar\n * logo={<Logo />}\n * topChildren={<WelcomeMessage />}\n * topSections={mainNavItems}\n * bottomSections={utilityNavItems}\n * bottomChildren={<UserProfile />}\n * rightItems={\n * <>\n * <NotificationIcon />\n * <SearchIcon />\n * </>\n * }\n * />\n * ```\n *\n * Accessibility Features:\n * - Menu expanded state communicated via aria-expanded\n * - Focus management and keyboard navigation support\n * - Screen reader friendly with semantic nav structure\n *\n * @template T - Tab properties type extending TabProps for type safety\n * @param props - MobileNavbar component props\n * @returns Mobile navigation with rollable full-screen menu\n */\nexport const MobileNavbar = <T extends TabSelectorItemProps>({\n logo,\n topChildren,\n topSections = [],\n bottomChildren,\n bottomSections = [],\n rightItems,\n rollable = true,\n isActive = true,\n}: MobileNavbarProps<T>) => {\n const [isHidden, setIsHidden] = useState<boolean>(false);\n const [isUnrolled, setIsUnrolled] = useState<boolean>(false);\n const [headerHeight, setHeaderHeight] = useState<number>(0);\n\n const navRef = useRef<HTMLDivElement>(null);\n\n useScrollBlockage({\n disableScroll: isActive && rollable,\n key: 'mobile_nav',\n });\n\n useScrollDetection({\n onScrollUp: () => setIsHidden(false),\n onScrollDown: () => setIsHidden(true),\n isEnabled: isActive && !isUnrolled && rollable,\n });\n\n /**\n * Clears the transient state when the desktop layout takes over. Without it,\n * a viewport that grows past the breakpoint while the header is scrolled away\n * — or while the menu is open — restores that state on the way back, and the\n * user returns to a navbar that is translated off screen.\n */\n useEffect(() => {\n if (isActive) return;\n\n setIsHidden(false);\n setIsUnrolled(false);\n }, [isActive]);\n\n /**\n * Measures the collapsed header so the rolled-down panel can size itself to\n * the rest of the viewport.\n *\n * Reading `clientHeight` from the render body forced a layout on every\n * render, and `useScrollDetection` re-renders this component on each wheel\n * event — so the measurement ran once per scroll frame. A `ResizeObserver`\n * callback runs *after* layout, which makes the same read free, and the\n * height is published only when it actually changed.\n */\n useEffect(() => {\n const headerElement = navRef.current;\n\n if (!headerElement) return;\n\n const resizeObserver = new ResizeObserver(([entry]) => {\n if (!entry) return;\n\n // Border box, to stay equivalent to the `clientHeight` this replaces:\n // `contentRect` would drop the header's vertical padding.\n const measuredHeight =\n entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height;\n\n setHeaderHeight((previousHeight) =>\n previousHeight === measuredHeight ? previousHeight : measuredHeight\n );\n });\n\n resizeObserver.observe(headerElement);\n\n return () => resizeObserver.disconnect();\n }, []);\n\n const backDivHeight = isHidden ? 0 : headerHeight;\n\n const isBurgerShowed = topSections.length + bottomSections.length > 0;\n\n return (\n <nav\n className={cn(\n bgStyle,\n 'sticky top-0 z-50 flex w-screen flex-col transition',\n isHidden ? '-translate-y-full' : 'translate-y-0'\n )}\n id=\"mobile-menu\"\n >\n <div\n className=\"flex w-full items-center justify-between gap-1 px-4 py-3 md:gap-[10vw]\"\n ref={navRef}\n >\n {logo}\n\n <div className=\"flex w-full flex-1 items-center justify-end gap-6\">\n <div className=\"flex w-full items-center justify-end gap-1\">\n {rightItems}\n </div>\n\n {isBurgerShowed && (\n <Burger\n isActive={isUnrolled}\n onClick={() => setIsUnrolled((isUnrolled) => !isUnrolled)}\n />\n )}\n </div>\n </div>\n\n <div\n className={cn(\n bgStyle,\n 'absolute bottom-0 left-0 w-full translate-y-full'\n )}\n >\n <MaxHeightSmoother isHidden={!isUnrolled}>\n <m.div\n className=\"flex w-full flex-col pt-10 pb-[20%] text-foreground text-lg tracking-wide\"\n onClick={() => setIsUnrolled(false)}\n animate={isUnrolled ? 'open' : 'closed'}\n variants={navVariants}\n style={{\n height: `calc(100vh - ${backDivHeight}px)`,\n }}\n >\n {topChildren}\n <div className=\"flex h-full flex-col justify-center\">\n {topSections}\n {bottomSections}\n </div>\n\n <div className=\"m-auto flex w-full max-w-100 items-center justify-center gap-1 px-5 py-3\">\n {bottomChildren}\n </div>\n </m.div>\n </MaxHeightSmoother>\n </div>\n </nav>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAiDA,MAAM,cAAwB;CAC5B,MAAM,EACJ,YAAY;EAAE,iBAAiB;EAAM,eAAe;CAAI,EAC1D;CACA,QAAQ,EACN,YAAY;EAAE,iBAAiB;EAAM,kBAAkB;CAAG,EAC5D;AACF;;;;;AAMA,MAAM,UACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFF,MAAa,gBAAgD,EAC3D,MACA,aACA,cAAc,CAAC,GACf,gBACA,iBAAiB,CAAC,GAClB,YACA,WAAW,MACX,WAAW,WACe;CAC1B,MAAM,CAAC,UAAU,eAAe,SAAkB,KAAK;CACvD,MAAM,CAAC,YAAY,iBAAiB,SAAkB,KAAK;CAC3D,MAAM,CAAC,cAAc,mBAAmB,SAAiB,CAAC;CAE1D,MAAM,SAAS,OAAuB,IAAI;CAE1C,kBAAkB;EAChB,eAAe,YAAY;EAC3B,KAAK;CACP,CAAC;CAED,mBAAmB;EACjB,kBAAkB,YAAY,KAAK;EACnC,oBAAoB,YAAY,IAAI;EACpC,WAAW,YAAY,CAAC,cAAc;CACxC,CAAC;;;;;;;CAQD,gBAAgB;EACd,IAAI,UAAU;EAEd,YAAY,KAAK;EACjB,cAAc,KAAK;CACrB,GAAG,CAAC,QAAQ,CAAC;;;;;;;;;;;CAYb,gBAAgB;EACd,MAAM,gBAAgB,OAAO;EAE7B,IAAI,CAAC,eAAe;EAEpB,MAAM,iBAAiB,IAAI,gBAAgB,CAAC,WAAW;GACrD,IAAI,CAAC,OAAO;GAIZ,MAAM,iBACJ,MAAM,gBAAgB,EAAE,EAAE,aAAa,MAAM,YAAY;GAE3D,iBAAiB,mBACf,mBAAmB,iBAAiB,iBAAiB,cACvD;EACF,CAAC;EAED,eAAe,QAAQ,aAAa;EAEpC,aAAa,eAAe,WAAW;CACzC,GAAG,CAAC,CAAC;CAEL,MAAM,gBAAgB,WAAW,IAAI;CAErC,MAAM,iBAAiB,YAAY,SAAS,eAAe,SAAS;CAEpE,OACE,qBAAC,OAAD;EACE,WAAW,GACT,SACA,uDACA,WAAW,sBAAsB,eACnC;EACA,IAAG;YANL,CAQE,qBAAC,OAAD;GACE,WAAU;GACV,KAAK;aAFP,CAIG,MAED,qBAAC,OAAD;IAAK,WAAU;cAAf,CACE,oBAAC,OAAD;KAAK,WAAU;eACZ;IACE,IAEJ,kBACC,oBAAC,QAAD;KACE,UAAU;KACV,eAAe,eAAe,eAAe,CAAC,UAAU;IACzD,EAEA;KACF;MAEL,oBAAC,OAAD;GACE,WAAW,GACT,SACA,kDACF;aAEA,oBAAC,mBAAD;IAAmB,UAAU,CAAC;cAC5B,qBAAC,EAAE,KAAH;KACE,WAAU;KACV,eAAe,cAAc,KAAK;KAClC,SAAS,aAAa,SAAS;KAC/B,UAAU;KACV,OAAO,EACL,QAAQ,gBAAgB,cAAc,KACxC;eAPF;MASG;MACD,qBAAC,OAAD;OAAK,WAAU;iBAAf,CACG,aACA,cACE;;MAEL,oBAAC,OAAD;OAAK,WAAU;iBACZ;MACE;KACA;;GACU;EAChB,EACF;;AAET"}
@@ -4,25 +4,32 @@ import { useDevice } from "../../hooks/useDevice.mjs";
4
4
  import { DesktopNavbar } from "./DesktopNavbar.mjs";
5
5
  import { Burger } from "./Burger.mjs";
6
6
  import { MobileNavbar } from "./MobileNavbar.mjs";
7
- import { jsx } from "react/jsx-runtime";
7
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
8
 
9
9
  //#region src/components/Navbar/index.tsx
10
10
  const Navbar = ({ logo, mobileTopChildren, desktopSections = [], mobileTopSections = [], mobileBottomChildren, mobileBottomSections = [], rightItemsDesktop, rightItemsMobile, selectedChoice, mobileRollable = true }) => {
11
11
  const { isMobile } = useDevice("lg");
12
- return isMobile ? /* @__PURE__ */ jsx(MobileNavbar, {
13
- topChildren: mobileTopChildren,
14
- topSections: mobileTopSections,
15
- bottomChildren: mobileBottomChildren,
16
- bottomSections: mobileBottomSections,
17
- logo,
18
- rightItems: rightItemsMobile,
19
- rollable: mobileRollable
20
- }) : /* @__PURE__ */ jsx(DesktopNavbar, {
21
- sections: desktopSections,
22
- rightItems: rightItemsDesktop,
23
- logo,
24
- selectedChoice
25
- });
12
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
13
+ className: "contents lg:hidden",
14
+ children: /* @__PURE__ */ jsx(MobileNavbar, {
15
+ topChildren: mobileTopChildren,
16
+ topSections: mobileTopSections,
17
+ bottomChildren: mobileBottomChildren,
18
+ bottomSections: mobileBottomSections,
19
+ logo,
20
+ rightItems: rightItemsMobile,
21
+ rollable: mobileRollable,
22
+ isActive: isMobile === true
23
+ })
24
+ }), /* @__PURE__ */ jsx("div", {
25
+ className: "hidden lg:contents",
26
+ children: /* @__PURE__ */ jsx(DesktopNavbar, {
27
+ sections: desktopSections,
28
+ rightItems: rightItemsDesktop,
29
+ logo,
30
+ selectedChoice
31
+ })
32
+ })] });
26
33
  };
27
34
 
28
35
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/Navbar/index.tsx"],"sourcesContent":["'use client';\n\nimport { useDevice } from '@hooks/useDevice';\nimport type { ReactElement, ReactNode } from 'react';\nimport type { TabSelectorItemProps } from '../TabSelector';\nimport { DesktopNavbar } from './DesktopNavbar';\nimport { MobileNavbar } from './MobileNavbar';\n\n/**\n * Props for the responsive Navbar component\n * @template T - The tab props type extending TabProps\n */\ntype NavbarProps<T extends TabSelectorItemProps> = {\n /** Logo component or element to display in navbar */\n logo: ReactNode;\n /** Currently selected tab key for active state management */\n selectedChoice: T['key'];\n /** Navigation sections displayed on desktop layout */\n desktopSections?: ReactElement<T>[];\n /** Additional content displayed at top of mobile navbar */\n mobileTopChildren?: ReactNode;\n /** Navigation sections displayed at top of mobile navbar */\n mobileTopSections?: ReactElement<T>[];\n /** Additional content displayed at bottom of mobile navbar */\n mobileBottomChildren?: ReactNode;\n /** Navigation sections displayed at bottom of mobile navbar */\n mobileBottomSections?: ReactElement<T>[];\n /** Right-aligned items for desktop navbar (e.g., user menu, settings) */\n rightItemsDesktop?: ReactNode;\n /** Right-aligned items for mobile navbar */\n rightItemsMobile?: ReactNode;\n /** Whether the mobile navbar should be rollable (default: true) */\n mobileRollable?: boolean;\n};\n\n/**\n * Responsive Navbar Component\n *\n * A highly adaptable navigation component that automatically switches between desktop and mobile\n * layouts based on screen size. Provides comprehensive navigation structure with flexible content areas.\n *\n * Features:\n * - Automatic responsive switching at 'lg' breakpoint (1024px)\n * - Separate section configurations for desktop and mobile layouts\n * - Support for logo placement and right-aligned utility items\n * - Generic typing for tab properties and selected states\n * - Mobile-specific top/bottom content areas for enhanced mobile UX\n * - Hydration-safe rendering with useIsMounted hook\n *\n * @example\n * Basic usage:\n * ```tsx\n * const navSections = [\n * { key: 'home', label: 'Home', href: '/' },\n * { key: 'about', label: 'About', href: '/about' }\n * ];\n *\n * <Navbar\n * logo={<Logo />}\n * selectedChoice=\"home\"\n * desktopSections={navSections}\n * mobileTopSections={navSections}\n * rightItemsDesktop={<UserMenu />}\n * />\n * ```\n *\n * @example\n * Advanced mobile configuration:\n * ```tsx\n * <Navbar\n * logo={<Logo />}\n * selectedChoice={activeTab}\n * desktopSections={mainNavItems}\n * mobileTopSections={primaryMobileNavItems}\n * mobileTopChildren={<SearchBar />}\n * mobileBottomSections={secondaryMobileNavItems}\n * mobileBottomChildren={<UserProfile />}\n * rightItemsDesktop={<DesktopActions />}\n * rightItemsMobile={<MobileActions />}\n * />\n * ```\n *\n * Responsive Behavior:\n * - Desktop (≥1024px): Shows DesktopNavbar with horizontal layout\n * - Mobile (<1024px): Shows MobileNavbar with collapsible vertical layout\n * - Automatic detection with no flash of unstyled content\n *\n * @template T - Tab properties type extending TabProps for type safety\n * @param props - Navbar component props\n * @returns Responsive navbar JSX element\n */\nexport { Burger } from './Burger';\nexport { DesktopNavbar } from './DesktopNavbar';\nexport { MobileNavbar } from './MobileNavbar';\n\nexport const Navbar = <T extends TabSelectorItemProps>({\n logo,\n mobileTopChildren,\n desktopSections = [],\n mobileTopSections = [],\n mobileBottomChildren,\n mobileBottomSections = [],\n rightItemsDesktop,\n rightItemsMobile,\n selectedChoice,\n mobileRollable = true,\n}: NavbarProps<T>) => {\n const { isMobile } = useDevice('lg');\n\n return isMobile ? (\n <MobileNavbar\n topChildren={mobileTopChildren}\n topSections={mobileTopSections}\n bottomChildren={mobileBottomChildren}\n bottomSections={mobileBottomSections}\n logo={logo}\n rightItems={rightItemsMobile}\n rollable={mobileRollable}\n />\n ) : (\n <DesktopNavbar\n sections={desktopSections}\n rightItems={rightItemsDesktop}\n logo={logo}\n selectedChoice={selectedChoice}\n />\n );\n};\n"],"mappings":";;;;;;;;;AA+FA,MAAa,UAA0C,EACrD,MACA,mBACA,kBAAkB,CAAC,GACnB,oBAAoB,CAAC,GACrB,sBACA,uBAAuB,CAAC,GACxB,mBACA,kBACA,gBACA,iBAAiB,WACG;CACpB,MAAM,EAAE,aAAa,UAAU,IAAI;CAEnC,OAAO,WACL,oBAAC,cAAD;EACE,aAAa;EACb,aAAa;EACb,gBAAgB;EAChB,gBAAgB;EACV;EACN,YAAY;EACZ,UAAU;CACX,KAED,oBAAC,eAAD;EACE,UAAU;EACV,YAAY;EACN;EACU;CACjB;AAEL"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/Navbar/index.tsx"],"sourcesContent":["'use client';\n\nimport { useDevice } from '@hooks/useDevice';\nimport type { ReactElement, ReactNode } from 'react';\nimport type { TabSelectorItemProps } from '../TabSelector';\nimport { DesktopNavbar } from './DesktopNavbar';\nimport { MobileNavbar } from './MobileNavbar';\n\n/**\n * Props for the responsive Navbar component\n * @template T - The tab props type extending TabProps\n */\ntype NavbarProps<T extends TabSelectorItemProps> = {\n /** Logo component or element to display in navbar */\n logo: ReactNode;\n /** Currently selected tab key for active state management */\n selectedChoice: T['key'];\n /** Navigation sections displayed on desktop layout */\n desktopSections?: ReactElement<T>[];\n /** Additional content displayed at top of mobile navbar */\n mobileTopChildren?: ReactNode;\n /** Navigation sections displayed at top of mobile navbar */\n mobileTopSections?: ReactElement<T>[];\n /** Additional content displayed at bottom of mobile navbar */\n mobileBottomChildren?: ReactNode;\n /** Navigation sections displayed at bottom of mobile navbar */\n mobileBottomSections?: ReactElement<T>[];\n /** Right-aligned items for desktop navbar (e.g., user menu, settings) */\n rightItemsDesktop?: ReactNode;\n /** Right-aligned items for mobile navbar */\n rightItemsMobile?: ReactNode;\n /** Whether the mobile navbar should be rollable (default: true) */\n mobileRollable?: boolean;\n};\n\n/**\n * Responsive Navbar Component\n *\n * A highly adaptable navigation component that automatically switches between desktop and mobile\n * layouts based on screen size. Provides comprehensive navigation structure with flexible content areas.\n *\n * Features:\n * - Automatic responsive switching at 'lg' breakpoint (1024px)\n * - Separate section configurations for desktop and mobile layouts\n * - Support for logo placement and right-aligned utility items\n * - Generic typing for tab properties and selected states\n * - Mobile-specific top/bottom content areas for enhanced mobile UX\n * - Hydration-safe rendering with useIsMounted hook\n *\n * @example\n * Basic usage:\n * ```tsx\n * const navSections = [\n * { key: 'home', label: 'Home', href: '/' },\n * { key: 'about', label: 'About', href: '/about' }\n * ];\n *\n * <Navbar\n * logo={<Logo />}\n * selectedChoice=\"home\"\n * desktopSections={navSections}\n * mobileTopSections={navSections}\n * rightItemsDesktop={<UserMenu />}\n * />\n * ```\n *\n * @example\n * Advanced mobile configuration:\n * ```tsx\n * <Navbar\n * logo={<Logo />}\n * selectedChoice={activeTab}\n * desktopSections={mainNavItems}\n * mobileTopSections={primaryMobileNavItems}\n * mobileTopChildren={<SearchBar />}\n * mobileBottomSections={secondaryMobileNavItems}\n * mobileBottomChildren={<UserProfile />}\n * rightItemsDesktop={<DesktopActions />}\n * rightItemsMobile={<MobileActions />}\n * />\n * ```\n *\n * Responsive Behavior:\n * - Desktop (≥1024px): Shows DesktopNavbar with horizontal layout\n * - Mobile (<1024px): Shows MobileNavbar with collapsible vertical layout\n * - Both are mounted and CSS picks one, so server-rendered and prerendered\n * markup paints the right layout with no swap once the bundle hydrates\n *\n * @template T - Tab properties type extending TabProps for type safety\n * @param props - Navbar component props\n * @returns Responsive navbar JSX element\n */\nexport { Burger } from './Burger';\nexport { DesktopNavbar } from './DesktopNavbar';\nexport { MobileNavbar } from './MobileNavbar';\n\nexport const Navbar = <T extends TabSelectorItemProps>({\n logo,\n mobileTopChildren,\n desktopSections = [],\n mobileTopSections = [],\n mobileBottomChildren,\n mobileBottomSections = [],\n rightItemsDesktop,\n rightItemsMobile,\n selectedChoice,\n mobileRollable = true,\n}: NavbarProps<T>) => {\n // Only decides which navbar *behaves*, never which one is shown: the media\n // query cannot resolve before hydration, and picking the layout in JS baked\n // the desktop navbar into the prerendered HTML — mobile visitors watched it\n // swap once the bundle arrived. CSS makes the first paint already correct.\n const { isMobile } = useDevice('lg');\n\n return (\n <>\n {/* `contents` keeps the wrapper out of the layout, so each navbar still\n sticks and stretches exactly as it did when rendered on its own. */}\n <div className=\"contents lg:hidden\">\n <MobileNavbar\n topChildren={mobileTopChildren}\n topSections={mobileTopSections}\n bottomChildren={mobileBottomChildren}\n bottomSections={mobileBottomSections}\n logo={logo}\n rightItems={rightItemsMobile}\n rollable={mobileRollable}\n isActive={isMobile === true}\n />\n </div>\n <div className=\"hidden lg:contents\">\n <DesktopNavbar\n sections={desktopSections}\n rightItems={rightItemsDesktop}\n logo={logo}\n selectedChoice={selectedChoice}\n />\n </div>\n </>\n );\n};\n"],"mappings":";;;;;;;;;AAgGA,MAAa,UAA0C,EACrD,MACA,mBACA,kBAAkB,CAAC,GACnB,oBAAoB,CAAC,GACrB,sBACA,uBAAuB,CAAC,GACxB,mBACA,kBACA,gBACA,iBAAiB,WACG;CAKpB,MAAM,EAAE,aAAa,UAAU,IAAI;CAEnC,OACE,4CAGE,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,cAAD;GACE,aAAa;GACb,aAAa;GACb,gBAAgB;GAChB,gBAAgB;GACV;GACN,YAAY;GACZ,UAAU;GACV,UAAU,aAAa;EACxB;CACE,IACL,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,eAAD;GACE,UAAU;GACV,YAAY;GACN;GACU;EACjB;CACE,EACL;AAEN"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { useTheme } from "../../providers/ThemeProvider.mjs";
4
3
  import { cn } from "../../utils/cn.mjs";
4
+ import { useTheme } from "../../providers/ThemeProvider.mjs";
5
5
  import { useEffect, useRef } from "react";
6
6
  import { jsx } from "react/jsx-runtime";
7
7
 
@@ -1,6 +1,6 @@
1
1
  import { useTheme } from "../../providers/ThemeProvider.mjs";
2
- import { jsx } from "react/jsx-runtime";
3
2
  import cn from "cnfast";
3
+ import { jsx } from "react/jsx-runtime";
4
4
 
5
5
  //#region src/components/Status/index.tsx
6
6
  const Status = ({ className, ...props }) => {
@@ -1,19 +1,18 @@
1
1
  'use client';
2
2
 
3
- import { useEffect, useState } from "react";
3
+ import { useCallback, useSyncExternalStore } from "react";
4
4
 
5
5
  //#region src/hooks/useDevice.ts
6
- const getBreakpointFromSize = (breakpoint) => {
7
- switch (breakpoint) {
8
- case "xs": return 480;
9
- case "sm": return 640;
10
- case "md": return 768;
11
- case "lg": return 1024;
12
- case "xl": return 1280;
13
- case "2xl": return 1536;
14
- default: return breakpoint;
15
- }
6
+ /** Tailwind's breakpoints, in pixels. */
7
+ const BREAKPOINT_WIDTHS = {
8
+ xs: 480,
9
+ sm: 640,
10
+ md: 768,
11
+ lg: 1024,
12
+ xl: 1280,
13
+ "2xl": 1536
16
14
  };
15
+ const getBreakpointFromSize = (breakpoint) => typeof breakpoint === "number" ? breakpoint : BREAKPOINT_WIDTHS[breakpoint] ?? BREAKPOINT_WIDTHS.md;
17
16
  const checkIsMobileUserAgent = () => {
18
17
  if (typeof window === "undefined") return;
19
18
  const userAgent = window.navigator?.userAgent;
@@ -55,33 +54,102 @@ const calculateIsMobile = (breakpoint = "md") => {
55
54
  isMac: checkIsMac()
56
55
  };
57
56
  };
58
- const useDevice = (breakpoint = "md") => {
59
- const [result, setResult] = useState({
60
- isMobileScreen: void 0,
61
- isMobileUserAgent: void 0,
62
- isMobile: void 0,
63
- isIOS: void 0,
64
- isMac: void 0
57
+ /**
58
+ * Snapshot served while rendering on the server and while hydrating, where no
59
+ * viewport exists. Frozen and shared so every consumer reads the very same
60
+ * reference — `useSyncExternalStore` compares snapshots by identity.
61
+ */
62
+ const SERVER_SNAPSHOT = Object.freeze({
63
+ isMobileScreen: void 0,
64
+ isMobileUserAgent: void 0,
65
+ isMobile: void 0,
66
+ isIOS: void 0,
67
+ isMac: void 0
68
+ });
69
+ /** The user agent never changes within a document, so parse it once. */
70
+ let userAgentFlags;
71
+ const getUserAgentFlags = () => {
72
+ userAgentFlags ??= {
73
+ isMobileUserAgent: checkIsMobileUserAgent(),
74
+ isIOS: checkIsIOS(),
75
+ isMac: checkIsMac()
76
+ };
77
+ return userAgentFlags;
78
+ };
79
+ /**
80
+ * One store per breakpoint, shared by every component asking for it.
81
+ *
82
+ * A page mounts this hook from a dozen components; giving each its own
83
+ * `MediaQueryList`, state and effect made the browser evaluate the same query a
84
+ * dozen times and React commit a dozen separate post-hydration renders. Reading
85
+ * from a single store collapses those into one subscription and one commit.
86
+ */
87
+ const breakpointStores = /* @__PURE__ */ new Map();
88
+ const createBreakpointStore = (breakpointValue) => {
89
+ const mediaQuery = window.matchMedia(`(max-width: ${breakpointValue}px)`);
90
+ const listeners = /* @__PURE__ */ new Set();
91
+ const buildSnapshot = (isMobileScreen) => ({
92
+ ...getUserAgentFlags(),
93
+ isMobileScreen,
94
+ isMobile: isMobileScreen
65
95
  });
66
- useEffect(() => {
67
- const breakpointValue = getBreakpointFromSize(breakpoint);
68
- const mobileScreenQuery = window.matchMedia(`(max-width: ${breakpointValue}px)`);
69
- const isMobileUserAgent = checkIsMobileUserAgent();
70
- const isIOS = checkIsIOS();
71
- const isMac = checkIsMac();
72
- const applyMatches = (isMobileScreen) => setResult({
73
- isMobileScreen,
74
- isMobileUserAgent,
75
- isMobile: isMobileScreen,
76
- isIOS,
77
- isMac
78
- });
79
- applyMatches(mobileScreenQuery.matches);
80
- const handleChange = (event) => applyMatches(event.matches);
81
- mobileScreenQuery.addEventListener("change", handleChange);
82
- return () => mobileScreenQuery.removeEventListener("change", handleChange);
83
- }, [breakpoint]);
84
- return result;
96
+ let snapshot = buildSnapshot(mediaQuery.matches);
97
+ /**
98
+ * Replaces the snapshot only when the viewport actually crossed the
99
+ * breakpoint. `useSyncExternalStore` compares snapshots by identity, so
100
+ * rebuilding an equal object would schedule a render for nothing.
101
+ *
102
+ * @returns Whether the snapshot changed.
103
+ */
104
+ const refreshSnapshot = (isMobileScreen) => {
105
+ if (snapshot.isMobileScreen === isMobileScreen) return false;
106
+ snapshot = buildSnapshot(isMobileScreen);
107
+ return true;
108
+ };
109
+ const handleChange = (event) => {
110
+ if (!refreshSnapshot(event.matches)) return;
111
+ for (const listener of listeners) listener();
112
+ };
113
+ return {
114
+ subscribe: (onStoreChange) => {
115
+ if (listeners.size === 0) {
116
+ refreshSnapshot(mediaQuery.matches);
117
+ mediaQuery.addEventListener("change", handleChange);
118
+ }
119
+ listeners.add(onStoreChange);
120
+ return () => {
121
+ listeners.delete(onStoreChange);
122
+ if (listeners.size === 0) mediaQuery.removeEventListener("change", handleChange);
123
+ };
124
+ },
125
+ getSnapshot: () => snapshot
126
+ };
127
+ };
128
+ const getBreakpointStore = (breakpointValue) => {
129
+ const existingStore = breakpointStores.get(breakpointValue);
130
+ if (existingStore) return existingStore;
131
+ const store = createBreakpointStore(breakpointValue);
132
+ breakpointStores.set(breakpointValue, store);
133
+ return store;
134
+ };
135
+ const getServerSnapshot = () => SERVER_SNAPSHOT;
136
+ /**
137
+ * Reports whether the current device is mobile, and which platform it runs.
138
+ *
139
+ * Server renders — including the prerendered HTML both apps ship — resolve to
140
+ * `undefined`, then settle to the real values in a single commit once the
141
+ * browser takes over.
142
+ *
143
+ * @example
144
+ * ```tsx
145
+ * const { isMobile } = useDevice('lg');
146
+ * ```
147
+ */
148
+ const useDevice = (breakpoint = "md") => {
149
+ const breakpointValue = getBreakpointFromSize(breakpoint);
150
+ const subscribe = useCallback((onStoreChange) => getBreakpointStore(breakpointValue).subscribe(onStoreChange), [breakpointValue]);
151
+ const getSnapshot = useCallback(() => getBreakpointStore(breakpointValue).getSnapshot(), [breakpointValue]);
152
+ return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
85
153
  };
86
154
 
87
155
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"useDevice.mjs","names":[],"sources":["../../../src/hooks/useDevice.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport type SizeType = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\nexport const getBreakpointFromSize = (breakpoint: SizeType | number) => {\n switch (breakpoint) {\n case 'xs':\n return 480;\n case 'sm':\n return 640;\n case 'md':\n return 768;\n case 'lg':\n return 1024;\n case 'xl':\n return 1280;\n case '2xl':\n return 1536;\n default:\n return breakpoint;\n }\n};\n\nexport const checkIsMobileUserAgent = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n if (typeof userAgent === 'undefined') return;\n\n return /android|bb\\d+|meego|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(?:hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(?:ob|in)i|palm(?: os)?|phone|p(?:ixi|re)\\/|plucker|pocket|psp|series(?:4|6)0|symbian|treo|up\\.(?:browser|link)|vodafone|wap|windows ce|windows phone|xda|xiino|zte-/i.test(\n userAgent\n );\n};\n\nexport const checkIsIphoneOrSafariDevice = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n /* 1 . is it Safari? (Chrome & co. also contain “Safari/…”, so exclude them) */\n const isSafari =\n /Safari\\/\\d/i.test(userAgent) && // has “Safari/xxx”\n !/Chrome|CriOS|FxiOS|Edg|OPR/i.test(userAgent); // …but not the other browsers\n\n /* 2. is it an Apple device? (macOS or iOS/iPadOS) */\n const isAppleDevice = /Macintosh|iP(?:hone|ad|od)/.test(userAgent);\n\n return isSafari && isAppleDevice; // true for mac-Safari & iOS-Safari\n};\n\nexport const checkIsIOS = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n if (typeof userAgent === 'undefined') return;\n\n // Check for iOS devices: iPhone, iPad, iPod\n return /iP(?:hone|ad|od)/.test(userAgent);\n};\n\nexport const checkIsMac = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n if (typeof userAgent === 'undefined') return;\n\n // Check for macOS/Mac devices\n return /Macintosh|MacIntel|Mac OS X/.test(userAgent);\n};\n\nexport const checkIsMobileScreen = (\n breakpoint: number\n): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n return (window?.innerWidth ?? 0) <= breakpoint;\n};\n\ntype UseDeviceState = {\n isMobileScreen: boolean | undefined;\n isMobileUserAgent: boolean | undefined;\n isMobile: boolean | undefined;\n isIOS: boolean | undefined;\n isMac: boolean | undefined;\n};\n\nexport const calculateIsMobile = (breakpoint: SizeType | number = 'md') => {\n const breakpointValue = getBreakpointFromSize(breakpoint);\n\n const isMobileUserAgent = checkIsMobileUserAgent();\n const isMobileScreen = checkIsMobileScreen(breakpointValue);\n const isMobile = isMobileScreen ?? isMobileUserAgent;\n const isIOS = checkIsIOS();\n const isMac = checkIsMac();\n\n return {\n isMobileScreen, // Is the screen width within a mobile breakpoint.\n isMobileUserAgent, // Is the user agent indicative of a mobile device.\n isMobile, // Combines both checks to determine if the device is mobile.\n isIOS, // Is the device running iOS (iPhone, iPad, iPod).\n isMac, // Is the device a Mac computer (macOS).\n };\n};\n\nexport const useDevice = (breakpoint: SizeType | number = 'md') => {\n const [result, setResult] = useState<UseDeviceState>({\n isMobileScreen: undefined,\n isMobileUserAgent: undefined,\n isMobile: undefined,\n isIOS: undefined,\n isMac: undefined,\n });\n\n useEffect(() => {\n const breakpointValue = getBreakpointFromSize(breakpoint);\n const mobileScreenQuery = window.matchMedia(\n `(max-width: ${breakpointValue}px)`\n );\n\n const isMobileUserAgent = checkIsMobileUserAgent();\n const isIOS = checkIsIOS();\n const isMac = checkIsMac();\n\n const applyMatches = (isMobileScreen: boolean) =>\n setResult({\n isMobileScreen,\n isMobileUserAgent,\n isMobile: isMobileScreen,\n isIOS,\n isMac,\n });\n\n applyMatches(mobileScreenQuery.matches);\n\n const handleChange = (event: MediaQueryListEvent) =>\n applyMatches(event.matches);\n\n mobileScreenQuery.addEventListener('change', handleChange);\n\n return () => mobileScreenQuery.removeEventListener('change', handleChange);\n }, [breakpoint]);\n\n return result;\n};\n"],"mappings":";;;;;AAMA,MAAa,yBAAyB,eAAkC;CACtE,QAAQ,YAAR;EACE,KAAK,MACH,OAAO;EACT,KAAK,MACH,OAAO;EACT,KAAK,MACH,OAAO;EACT,KAAK,MACH,OAAO;EACT,KAAK,MACH,OAAO;EACT,KAAK,OACH,OAAO;EACT,SACE,OAAO;CACX;AACF;AAEA,MAAa,+BAAoD;CAC/D,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAEpC,IAAI,OAAO,cAAc,aAAa;CAEtC,OAAO,mVAAmV,KACxV,SACF;AACF;AAEA,MAAa,oCAAyD;CACpE,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAGpC,MAAM,WACJ,cAAc,KAAK,SAAS,KAC5B,CAAC,8BAA8B,KAAK,SAAS;CAG/C,MAAM,gBAAgB,6BAA6B,KAAK,SAAS;CAEjE,OAAO,YAAY;AACrB;AAEA,MAAa,mBAAwC;CACnD,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAEpC,IAAI,OAAO,cAAc,aAAa;CAGtC,OAAO,mBAAmB,KAAK,SAAS;AAC1C;AAEA,MAAa,mBAAwC;CACnD,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAEpC,IAAI,OAAO,cAAc,aAAa;CAGtC,OAAO,8BAA8B,KAAK,SAAS;AACrD;AAEA,MAAa,uBACX,eACwB;CACxB,IAAI,OAAO,WAAW,aAAa;CAEnC,QAAQ,QAAQ,cAAc,MAAM;AACtC;AAUA,MAAa,qBAAqB,aAAgC,SAAS;CACzE,MAAM,kBAAkB,sBAAsB,UAAU;CAExD,MAAM,oBAAoB,uBAAuB;CACjD,MAAM,iBAAiB,oBAAoB,eAAe;CAK1D,OAAO;EACL;EACA;EACA,UAPe,kBAAkB;EAQjC,OAPY,WAOR;EACJ,OAPY,WAOR;CACN;AACF;AAEA,MAAa,aAAa,aAAgC,SAAS;CACjE,MAAM,CAAC,QAAQ,aAAa,SAAyB;EACnD,gBAAgB;EAChB,mBAAmB;EACnB,UAAU;EACV,OAAO;EACP,OAAO;CACT,CAAC;CAED,gBAAgB;EACd,MAAM,kBAAkB,sBAAsB,UAAU;EACxD,MAAM,oBAAoB,OAAO,WAC/B,eAAe,gBAAgB,IACjC;EAEA,MAAM,oBAAoB,uBAAuB;EACjD,MAAM,QAAQ,WAAW;EACzB,MAAM,QAAQ,WAAW;EAEzB,MAAM,gBAAgB,mBACpB,UAAU;GACR;GACA;GACA,UAAU;GACV;GACA;EACF,CAAC;EAEH,aAAa,kBAAkB,OAAO;EAEtC,MAAM,gBAAgB,UACpB,aAAa,MAAM,OAAO;EAE5B,kBAAkB,iBAAiB,UAAU,YAAY;EAEzD,aAAa,kBAAkB,oBAAoB,UAAU,YAAY;CAC3E,GAAG,CAAC,UAAU,CAAC;CAEf,OAAO;AACT"}
1
+ {"version":3,"file":"useDevice.mjs","names":[],"sources":["../../../src/hooks/useDevice.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useSyncExternalStore } from 'react';\n\nexport type SizeType = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\n/** Tailwind's breakpoints, in pixels. */\nconst BREAKPOINT_WIDTHS: Readonly<Record<SizeType, number>> = {\n xs: 480,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n};\n\nexport const getBreakpointFromSize = (breakpoint: SizeType | number): number =>\n typeof breakpoint === 'number'\n ? breakpoint\n : (BREAKPOINT_WIDTHS[breakpoint] ?? BREAKPOINT_WIDTHS.md);\n\nexport const checkIsMobileUserAgent = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n if (typeof userAgent === 'undefined') return;\n\n return /android|bb\\d+|meego|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(?:hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(?:ob|in)i|palm(?: os)?|phone|p(?:ixi|re)\\/|plucker|pocket|psp|series(?:4|6)0|symbian|treo|up\\.(?:browser|link)|vodafone|wap|windows ce|windows phone|xda|xiino|zte-/i.test(\n userAgent\n );\n};\n\nexport const checkIsIphoneOrSafariDevice = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n /* 1 . is it Safari? (Chrome & co. also contain “Safari/…”, so exclude them) */\n const isSafari =\n /Safari\\/\\d/i.test(userAgent) && // has “Safari/xxx”\n !/Chrome|CriOS|FxiOS|Edg|OPR/i.test(userAgent); // …but not the other browsers\n\n /* 2. is it an Apple device? (macOS or iOS/iPadOS) */\n const isAppleDevice = /Macintosh|iP(?:hone|ad|od)/.test(userAgent);\n\n return isSafari && isAppleDevice; // true for mac-Safari & iOS-Safari\n};\n\nexport const checkIsIOS = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n if (typeof userAgent === 'undefined') return;\n\n // Check for iOS devices: iPhone, iPad, iPod\n return /iP(?:hone|ad|od)/.test(userAgent);\n};\n\nexport const checkIsMac = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n if (typeof userAgent === 'undefined') return;\n\n // Check for macOS/Mac devices\n return /Macintosh|MacIntel|Mac OS X/.test(userAgent);\n};\n\nexport const checkIsMobileScreen = (\n breakpoint: number\n): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n return (window?.innerWidth ?? 0) <= breakpoint;\n};\n\nexport type DeviceState = {\n /** Is the screen width within a mobile breakpoint. */\n isMobileScreen: boolean | undefined;\n /** Is the user agent indicative of a mobile device. */\n isMobileUserAgent: boolean | undefined;\n /** Combines both checks to determine if the device is mobile. */\n isMobile: boolean | undefined;\n /** Is the device running iOS (iPhone, iPad, iPod). */\n isIOS: boolean | undefined;\n /** Is the device a Mac computer (macOS). */\n isMac: boolean | undefined;\n};\n\nexport const calculateIsMobile = (\n breakpoint: SizeType | number = 'md'\n): DeviceState => {\n const breakpointValue = getBreakpointFromSize(breakpoint);\n\n const isMobileUserAgent = checkIsMobileUserAgent();\n const isMobileScreen = checkIsMobileScreen(breakpointValue);\n const isMobile = isMobileScreen ?? isMobileUserAgent;\n const isIOS = checkIsIOS();\n const isMac = checkIsMac();\n\n return { isMobileScreen, isMobileUserAgent, isMobile, isIOS, isMac };\n};\n\n/**\n * Snapshot served while rendering on the server and while hydrating, where no\n * viewport exists. Frozen and shared so every consumer reads the very same\n * reference — `useSyncExternalStore` compares snapshots by identity.\n */\nconst SERVER_SNAPSHOT: DeviceState = Object.freeze({\n isMobileScreen: undefined,\n isMobileUserAgent: undefined,\n isMobile: undefined,\n isIOS: undefined,\n isMac: undefined,\n});\n\ntype UserAgentFlags = Pick<\n DeviceState,\n 'isMobileUserAgent' | 'isIOS' | 'isMac'\n>;\n\n/** The user agent never changes within a document, so parse it once. */\nlet userAgentFlags: UserAgentFlags | undefined;\n\nconst getUserAgentFlags = (): UserAgentFlags => {\n userAgentFlags ??= {\n isMobileUserAgent: checkIsMobileUserAgent(),\n isIOS: checkIsIOS(),\n isMac: checkIsMac(),\n };\n\n return userAgentFlags;\n};\n\ntype BreakpointStore = {\n subscribe: (onStoreChange: () => void) => () => void;\n getSnapshot: () => DeviceState;\n};\n\n/**\n * One store per breakpoint, shared by every component asking for it.\n *\n * A page mounts this hook from a dozen components; giving each its own\n * `MediaQueryList`, state and effect made the browser evaluate the same query a\n * dozen times and React commit a dozen separate post-hydration renders. Reading\n * from a single store collapses those into one subscription and one commit.\n */\nconst breakpointStores = new Map<number, BreakpointStore>();\n\nconst createBreakpointStore = (breakpointValue: number): BreakpointStore => {\n const mediaQuery = window.matchMedia(`(max-width: ${breakpointValue}px)`);\n const listeners = new Set<() => void>();\n\n const buildSnapshot = (isMobileScreen: boolean): DeviceState => ({\n ...getUserAgentFlags(),\n isMobileScreen,\n isMobile: isMobileScreen,\n });\n\n let snapshot = buildSnapshot(mediaQuery.matches);\n\n /**\n * Replaces the snapshot only when the viewport actually crossed the\n * breakpoint. `useSyncExternalStore` compares snapshots by identity, so\n * rebuilding an equal object would schedule a render for nothing.\n *\n * @returns Whether the snapshot changed.\n */\n const refreshSnapshot = (isMobileScreen: boolean): boolean => {\n if (snapshot.isMobileScreen === isMobileScreen) return false;\n\n snapshot = buildSnapshot(isMobileScreen);\n\n return true;\n };\n\n const handleChange = (event: MediaQueryListEvent) => {\n if (!refreshSnapshot(event.matches)) return;\n\n for (const listener of listeners) listener();\n };\n\n return {\n subscribe: (onStoreChange) => {\n if (listeners.size === 0) {\n // The viewport may have moved while nothing was listening; React reads\n // the snapshot again right after subscribing, so refreshing it here is\n // what keeps a remounted consumer from rendering a stale width.\n refreshSnapshot(mediaQuery.matches);\n mediaQuery.addEventListener('change', handleChange);\n }\n\n listeners.add(onStoreChange);\n\n return () => {\n listeners.delete(onStoreChange);\n\n if (listeners.size === 0) {\n mediaQuery.removeEventListener('change', handleChange);\n }\n };\n },\n getSnapshot: () => snapshot,\n };\n};\n\nconst getBreakpointStore = (breakpointValue: number): BreakpointStore => {\n const existingStore = breakpointStores.get(breakpointValue);\n\n if (existingStore) return existingStore;\n\n const store = createBreakpointStore(breakpointValue);\n\n breakpointStores.set(breakpointValue, store);\n\n return store;\n};\n\nconst getServerSnapshot = (): DeviceState => SERVER_SNAPSHOT;\n\n/**\n * Reports whether the current device is mobile, and which platform it runs.\n *\n * Server renders — including the prerendered HTML both apps ship — resolve to\n * `undefined`, then settle to the real values in a single commit once the\n * browser takes over.\n *\n * @example\n * ```tsx\n * const { isMobile } = useDevice('lg');\n * ```\n */\nexport const useDevice = (\n breakpoint: SizeType | number = 'md'\n): DeviceState => {\n const breakpointValue = getBreakpointFromSize(breakpoint);\n\n const subscribe = useCallback(\n (onStoreChange: () => void) =>\n getBreakpointStore(breakpointValue).subscribe(onStoreChange),\n [breakpointValue]\n );\n\n const getSnapshot = useCallback(\n () => getBreakpointStore(breakpointValue).getSnapshot(),\n [breakpointValue]\n );\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n};\n"],"mappings":";;;;;;AAOA,MAAM,oBAAwD;CAC5D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;AACT;AAEA,MAAa,yBAAyB,eACpC,OAAO,eAAe,WAClB,aACC,kBAAkB,eAAe,kBAAkB;AAE1D,MAAa,+BAAoD;CAC/D,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAEpC,IAAI,OAAO,cAAc,aAAa;CAEtC,OAAO,mVAAmV,KACxV,SACF;AACF;AAEA,MAAa,oCAAyD;CACpE,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAGpC,MAAM,WACJ,cAAc,KAAK,SAAS,KAC5B,CAAC,8BAA8B,KAAK,SAAS;CAG/C,MAAM,gBAAgB,6BAA6B,KAAK,SAAS;CAEjE,OAAO,YAAY;AACrB;AAEA,MAAa,mBAAwC;CACnD,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAEpC,IAAI,OAAO,cAAc,aAAa;CAGtC,OAAO,mBAAmB,KAAK,SAAS;AAC1C;AAEA,MAAa,mBAAwC;CACnD,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAEpC,IAAI,OAAO,cAAc,aAAa;CAGtC,OAAO,8BAA8B,KAAK,SAAS;AACrD;AAEA,MAAa,uBACX,eACwB;CACxB,IAAI,OAAO,WAAW,aAAa;CAEnC,QAAQ,QAAQ,cAAc,MAAM;AACtC;AAeA,MAAa,qBACX,aAAgC,SAChB;CAChB,MAAM,kBAAkB,sBAAsB,UAAU;CAExD,MAAM,oBAAoB,uBAAuB;CACjD,MAAM,iBAAiB,oBAAoB,eAAe;CAK1D,OAAO;EAAE;EAAgB;EAAmB,UAJ3B,kBAAkB;EAImB,OAHxC,WAG4C;EAAG,OAF/C,WAEmD;CAAE;AACrE;;;;;;AAOA,MAAM,kBAA+B,OAAO,OAAO;CACjD,gBAAgB;CAChB,mBAAmB;CACnB,UAAU;CACV,OAAO;CACP,OAAO;AACT,CAAC;;AAQD,IAAI;AAEJ,MAAM,0BAA0C;CAC9C,mBAAmB;EACjB,mBAAmB,uBAAuB;EAC1C,OAAO,WAAW;EAClB,OAAO,WAAW;CACpB;CAEA,OAAO;AACT;;;;;;;;;AAeA,MAAM,mCAAmB,IAAI,IAA6B;AAE1D,MAAM,yBAAyB,oBAA6C;CAC1E,MAAM,aAAa,OAAO,WAAW,eAAe,gBAAgB,IAAI;CACxE,MAAM,4BAAY,IAAI,IAAgB;CAEtC,MAAM,iBAAiB,oBAA0C;EAC/D,GAAG,kBAAkB;EACrB;EACA,UAAU;CACZ;CAEA,IAAI,WAAW,cAAc,WAAW,OAAO;;;;;;;;CAS/C,MAAM,mBAAmB,mBAAqC;EAC5D,IAAI,SAAS,mBAAmB,gBAAgB,OAAO;EAEvD,WAAW,cAAc,cAAc;EAEvC,OAAO;CACT;CAEA,MAAM,gBAAgB,UAA+B;EACnD,IAAI,CAAC,gBAAgB,MAAM,OAAO,GAAG;EAErC,KAAK,MAAM,YAAY,WAAW,SAAS;CAC7C;CAEA,OAAO;EACL,YAAY,kBAAkB;GAC5B,IAAI,UAAU,SAAS,GAAG;IAIxB,gBAAgB,WAAW,OAAO;IAClC,WAAW,iBAAiB,UAAU,YAAY;GACpD;GAEA,UAAU,IAAI,aAAa;GAE3B,aAAa;IACX,UAAU,OAAO,aAAa;IAE9B,IAAI,UAAU,SAAS,GACrB,WAAW,oBAAoB,UAAU,YAAY;GAEzD;EACF;EACA,mBAAmB;CACrB;AACF;AAEA,MAAM,sBAAsB,oBAA6C;CACvE,MAAM,gBAAgB,iBAAiB,IAAI,eAAe;CAE1D,IAAI,eAAe,OAAO;CAE1B,MAAM,QAAQ,sBAAsB,eAAe;CAEnD,iBAAiB,IAAI,iBAAiB,KAAK;CAE3C,OAAO;AACT;AAEA,MAAM,0BAAuC;;;;;;;;;;;;;AAc7C,MAAa,aACX,aAAgC,SAChB;CAChB,MAAM,kBAAkB,sBAAsB,UAAU;CAExD,MAAM,YAAY,aACf,kBACC,mBAAmB,eAAe,CAAC,CAAC,UAAU,aAAa,GAC7D,CAAC,eAAe,CAClB;CAEA,MAAM,cAAc,kBACZ,mBAAmB,eAAe,CAAC,CAAC,YAAY,GACtD,CAAC,eAAe,CAClB;CAEA,OAAO,qBAAqB,WAAW,aAAa,iBAAiB;AACvE"}