@intlayer/design-system 9.4.2 → 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 (718) hide show
  1. package/dist/esm/components/Form/elements/OTPElement.mjs +1 -1
  2. package/dist/esm/components/IDE/CodeBlockHighlight.mjs +1 -1
  3. package/dist/esm/components/IDE/CodeBlockHighlight.mjs.map +1 -1
  4. package/dist/esm/components/IDE/CodeBlockServer.mjs +1 -1
  5. package/dist/esm/components/IDE/CodeBlockServer.mjs.map +1 -1
  6. package/dist/esm/components/IDE/CodeBlockShiki.mjs +6 -48
  7. package/dist/esm/components/IDE/CodeBlockShiki.mjs.map +1 -1
  8. package/dist/esm/components/IDE/MarkDownRender.mjs +1 -1
  9. package/dist/esm/components/IDE/shikiBundle.mjs +61 -0
  10. package/dist/esm/components/IDE/shikiBundle.mjs.map +1 -0
  11. package/dist/esm/components/IDE/shikiLanguages.mjs +2 -39
  12. package/dist/esm/components/IDE/shikiLanguages.mjs.map +1 -1
  13. package/dist/esm/components/IDE/shikiThemes.mjs.map +1 -1
  14. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +1 -1
  15. package/dist/esm/components/MarkDownRender/MarkDownIframe.mjs +7 -2
  16. package/dist/esm/components/MarkDownRender/MarkDownIframe.mjs.map +1 -1
  17. package/dist/esm/components/MarkdownEditor/extensions.mjs +1 -1
  18. package/dist/esm/components/MarkdownEditor/extensions.mjs.map +1 -1
  19. package/dist/esm/components/MarkdownEditor/novel/extensions/code-block-shiki.mjs +197 -0
  20. package/dist/esm/components/MarkdownEditor/novel/extensions/code-block-shiki.mjs.map +1 -0
  21. package/dist/esm/components/MarkdownEditor/novel/extensions/index.mjs +2 -1
  22. package/dist/esm/components/MarkdownEditor/novel/extensions/index.mjs.map +1 -1
  23. package/dist/esm/components/MarkdownEditor/novel/index.mjs +2 -1
  24. package/dist/esm/components/Modal/Modal.mjs +2 -2
  25. package/dist/esm/components/Navbar/MobileNavbar.mjs +15 -4
  26. package/dist/esm/components/Navbar/MobileNavbar.mjs.map +1 -1
  27. package/dist/esm/components/Navbar/index.mjs +22 -15
  28. package/dist/esm/components/Navbar/index.mjs.map +1 -1
  29. package/dist/esm/components/Pagination/Pagination.mjs +1 -1
  30. package/dist/esm/components/Pattern/GridDistortionPattern.mjs +1 -1
  31. package/dist/esm/components/RightDrawer/RightDrawer.mjs +3 -3
  32. package/dist/esm/components/Status/index.mjs +1 -1
  33. package/dist/esm/components/Tab/Tab.mjs +1 -1
  34. package/dist/esm/components/TechLogo/logos/HTMX.mjs +2 -2
  35. package/dist/esm/components/TechLogo/logos/HTMX.mjs.map +1 -1
  36. package/dist/esm/hooks/index.mjs +7 -7
  37. package/dist/esm/hooks/useDevice.mjs +105 -37
  38. package/dist/esm/hooks/useDevice.mjs.map +1 -1
  39. package/dist/esm/routes.mjs +22 -6
  40. package/dist/esm/routes.mjs.map +1 -1
  41. package/dist/types/api/hooks/ai.d.ts +10 -11
  42. package/dist/types/api/hooks/ai.d.ts.map +1 -1
  43. package/dist/types/api/hooks/analytics.d.ts +3 -4
  44. package/dist/types/api/hooks/analytics.d.ts.map +1 -1
  45. package/dist/types/api/hooks/asset.d.ts +5 -6
  46. package/dist/types/api/hooks/asset.d.ts.map +1 -1
  47. package/dist/types/api/hooks/audit.d.ts +3 -4
  48. package/dist/types/api/hooks/audit.d.ts.map +1 -1
  49. package/dist/types/api/hooks/auth.d.ts +25 -26
  50. package/dist/types/api/hooks/auth.d.ts.map +1 -1
  51. package/dist/types/api/hooks/bitbucket.d.ts +4 -5
  52. package/dist/types/api/hooks/bitbucket.d.ts.map +1 -1
  53. package/dist/types/api/hooks/dictionary.d.ts +8 -9
  54. package/dist/types/api/hooks/dictionary.d.ts.map +1 -1
  55. package/dist/types/api/hooks/discussions.d.ts +2 -3
  56. package/dist/types/api/hooks/discussions.d.ts.map +1 -1
  57. package/dist/types/api/hooks/editor.d.ts +2 -3
  58. package/dist/types/api/hooks/editor.d.ts.map +1 -1
  59. package/dist/types/api/hooks/environment.d.ts +6 -7
  60. package/dist/types/api/hooks/environment.d.ts.map +1 -1
  61. package/dist/types/api/hooks/github.d.ts +6 -7
  62. package/dist/types/api/hooks/github.d.ts.map +1 -1
  63. package/dist/types/api/hooks/gitlab.d.ts +4 -5
  64. package/dist/types/api/hooks/gitlab.d.ts.map +1 -1
  65. package/dist/types/api/hooks/newsletter.d.ts +3 -4
  66. package/dist/types/api/hooks/newsletter.d.ts.map +1 -1
  67. package/dist/types/api/hooks/organization.d.ts +11 -12
  68. package/dist/types/api/hooks/organization.d.ts.map +1 -1
  69. package/dist/types/api/hooks/project.d.ts +18 -19
  70. package/dist/types/api/hooks/project.d.ts.map +1 -1
  71. package/dist/types/api/hooks/reviewer.d.ts +21 -22
  72. package/dist/types/api/hooks/reviewer.d.ts.map +1 -1
  73. package/dist/types/api/hooks/search.d.ts +1 -2
  74. package/dist/types/api/hooks/search.d.ts.map +1 -1
  75. package/dist/types/api/hooks/showcaseProject.d.ts +8 -9
  76. package/dist/types/api/hooks/showcaseProject.d.ts.map +1 -1
  77. package/dist/types/api/hooks/stripe.d.ts +24 -25
  78. package/dist/types/api/hooks/stripe.d.ts.map +1 -1
  79. package/dist/types/api/hooks/tag.d.ts +4 -5
  80. package/dist/types/api/hooks/tag.d.ts.map +1 -1
  81. package/dist/types/api/hooks/translate.d.ts +4 -5
  82. package/dist/types/api/hooks/translate.d.ts.map +1 -1
  83. package/dist/types/api/hooks/user.d.ts +6 -7
  84. package/dist/types/api/hooks/user.d.ts.map +1 -1
  85. package/dist/types/api/hooks/utils.d.ts +2 -3
  86. package/dist/types/api/hooks/utils.d.ts.map +1 -1
  87. package/dist/types/api/useAuth/useAuth.d.ts +1 -2
  88. package/dist/types/api/useAuth/useAuth.d.ts.map +1 -1
  89. package/dist/types/api/useAuth/useOAuth2.d.ts +2 -3
  90. package/dist/types/api/useAuth/useOAuth2.d.ts.map +1 -1
  91. package/dist/types/api/useAuth/useSession.d.ts +2 -3
  92. package/dist/types/api/useAuth/useSession.d.ts.map +1 -1
  93. package/dist/types/api/useIntlayerAPI.d.ts +25 -26
  94. package/dist/types/api/useIntlayerAPI.d.ts.map +1 -1
  95. package/dist/types/api/useUser/index.d.ts +1 -2
  96. package/dist/types/api/useUser/index.d.ts.map +1 -1
  97. package/dist/types/components/Accordion/Accordion.d.ts +2 -3
  98. package/dist/types/components/Accordion/Accordion.d.ts.map +1 -1
  99. package/dist/types/components/Avatar/image.d.ts +2 -3
  100. package/dist/types/components/Avatar/image.d.ts.map +1 -1
  101. package/dist/types/components/Avatar/index.d.ts +3 -4
  102. package/dist/types/components/Avatar/index.d.ts.map +1 -1
  103. package/dist/types/components/Badge/index.d.ts +7 -8
  104. package/dist/types/components/Badge/index.d.ts.map +1 -1
  105. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +2 -2
  106. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts.map +1 -1
  107. package/dist/types/components/Breadcrumb/index.d.ts +3 -4
  108. package/dist/types/components/Breadcrumb/index.d.ts.map +1 -1
  109. package/dist/types/components/Browser/Browser.content.d.ts +2 -2
  110. package/dist/types/components/Browser/Browser.content.d.ts.map +1 -1
  111. package/dist/types/components/Browser/Browser.d.ts +2 -3
  112. package/dist/types/components/Browser/Browser.d.ts.map +1 -1
  113. package/dist/types/components/Browser/extractUrlFromSitemap.d.ts +1 -2
  114. package/dist/types/components/Browser/extractUrlFromSitemap.d.ts.map +1 -1
  115. package/dist/types/components/Button/Button.d.ts +7 -8
  116. package/dist/types/components/Button/Button.d.ts.map +1 -1
  117. package/dist/types/components/Carousel/index.d.ts +1 -2
  118. package/dist/types/components/Carousel/index.d.ts.map +1 -1
  119. package/dist/types/components/ClickOutsideDiv/index.d.ts +2 -3
  120. package/dist/types/components/ClickOutsideDiv/index.d.ts.map +1 -1
  121. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +2 -3
  122. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts.map +1 -1
  123. package/dist/types/components/Command/index.d.ts +2 -3
  124. package/dist/types/components/Command/index.d.ts.map +1 -1
  125. package/dist/types/components/Container/index.d.ts +10 -11
  126. package/dist/types/components/Container/index.d.ts.map +1 -1
  127. package/dist/types/components/ContentEditor/ContentEditor.d.ts +2 -3
  128. package/dist/types/components/ContentEditor/ContentEditor.d.ts.map +1 -1
  129. package/dist/types/components/ContentEditor/ContentEditorInput.d.ts +2 -3
  130. package/dist/types/components/ContentEditor/ContentEditorInput.d.ts.map +1 -1
  131. package/dist/types/components/ContentEditor/ContentEditorTextArea.d.ts +2 -3
  132. package/dist/types/components/ContentEditor/ContentEditorTextArea.d.ts.map +1 -1
  133. package/dist/types/components/ContentSelector/ContentSelector.d.ts +1 -2
  134. package/dist/types/components/ContentSelector/ContentSelector.d.ts.map +1 -1
  135. package/dist/types/components/CopyButton/CopyButton.content.d.ts +2 -2
  136. package/dist/types/components/CopyButton/CopyButton.content.d.ts.map +1 -1
  137. package/dist/types/components/CopyButton/index.d.ts +1 -2
  138. package/dist/types/components/CopyButton/index.d.ts.map +1 -1
  139. package/dist/types/components/CopyToClipboard/index.d.ts +3 -4
  140. package/dist/types/components/CopyToClipboard/index.d.ts.map +1 -1
  141. package/dist/types/components/DictionaryEditor/DictionaryEditor.d.ts +1 -2
  142. package/dist/types/components/DictionaryEditor/DictionaryEditor.d.ts.map +1 -1
  143. package/dist/types/components/DictionaryEditor/ItemLayout.d.ts +1 -2
  144. package/dist/types/components/DictionaryEditor/ItemLayout.d.ts.map +1 -1
  145. package/dist/types/components/DictionaryEditor/NodeWrapper/ArrayWrapper.d.ts +1 -2
  146. package/dist/types/components/DictionaryEditor/NodeWrapper/ArrayWrapper.d.ts.map +1 -1
  147. package/dist/types/components/DictionaryEditor/NodeWrapper/BooleanWrapper.d.ts +2 -3
  148. package/dist/types/components/DictionaryEditor/NodeWrapper/BooleanWrapper.d.ts.map +1 -1
  149. package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts +1 -2
  150. package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts.map +1 -1
  151. package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts +1 -2
  152. package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts.map +1 -1
  153. package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts +1 -2
  154. package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts.map +1 -1
  155. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts +1 -2
  156. package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts.map +1 -1
  157. package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts +1 -2
  158. package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts.map +1 -1
  159. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts +1 -2
  160. package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts.map +1 -1
  161. package/dist/types/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts +1 -2
  162. package/dist/types/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts.map +1 -1
  163. package/dist/types/components/DictionaryEditor/NodeWrapper/NumberWrapper.d.ts +2 -3
  164. package/dist/types/components/DictionaryEditor/NodeWrapper/NumberWrapper.d.ts.map +1 -1
  165. package/dist/types/components/DictionaryEditor/NodeWrapper/PluralWrapper.d.ts +1 -2
  166. package/dist/types/components/DictionaryEditor/NodeWrapper/PluralWrapper.d.ts.map +1 -1
  167. package/dist/types/components/DictionaryEditor/NodeWrapper/SelectWrapper.d.ts +1 -2
  168. package/dist/types/components/DictionaryEditor/NodeWrapper/SelectWrapper.d.ts.map +1 -1
  169. package/dist/types/components/DictionaryEditor/NodeWrapper/StringWrapper.d.ts +2 -3
  170. package/dist/types/components/DictionaryEditor/NodeWrapper/StringWrapper.d.ts.map +1 -1
  171. package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts +1 -2
  172. package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts.map +1 -1
  173. package/dist/types/components/DictionaryEditor/NodeWrapper/index.d.ts +3 -4
  174. package/dist/types/components/DictionaryEditor/NodeWrapper/index.d.ts.map +1 -1
  175. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.d.ts +1 -2
  176. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.d.ts.map +1 -1
  177. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts +4 -5
  178. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
  179. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/object.d.ts +2 -3
  180. package/dist/types/components/DictionaryFieldEditor/ContentEditorView/object.d.ts.map +1 -1
  181. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts +1 -2
  182. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts.map +1 -1
  183. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +2 -2
  184. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts.map +1 -1
  185. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +2 -2
  186. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts.map +1 -1
  187. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.d.ts +4 -5
  188. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.d.ts.map +1 -1
  189. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts +1 -2
  190. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts.map +1 -1
  191. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +2 -2
  192. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts.map +1 -1
  193. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.d.ts +2 -3
  194. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.d.ts.map +1 -1
  195. package/dist/types/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts +1 -2
  196. package/dist/types/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts.map +1 -1
  197. package/dist/types/components/DictionaryFieldEditor/EnumKeyInput.d.ts +1 -2
  198. package/dist/types/components/DictionaryFieldEditor/EnumKeyInput.d.ts.map +1 -1
  199. package/dist/types/components/DictionaryFieldEditor/JSONEditor.d.ts +1 -2
  200. package/dist/types/components/DictionaryFieldEditor/JSONEditor.d.ts.map +1 -1
  201. package/dist/types/components/DictionaryFieldEditor/KeyPathBreadcrumb.d.ts +1 -2
  202. package/dist/types/components/DictionaryFieldEditor/KeyPathBreadcrumb.d.ts.map +1 -1
  203. package/dist/types/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts +3 -4
  204. package/dist/types/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts.map +1 -1
  205. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +2 -2
  206. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts.map +1 -1
  207. package/dist/types/components/DictionaryFieldEditor/NodeEditor.d.ts +2 -3
  208. package/dist/types/components/DictionaryFieldEditor/NodeEditor.d.ts.map +1 -1
  209. package/dist/types/components/DictionaryFieldEditor/NodeTypeSelector.d.ts +1 -2
  210. package/dist/types/components/DictionaryFieldEditor/NodeTypeSelector.d.ts.map +1 -1
  211. package/dist/types/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts +1 -2
  212. package/dist/types/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts.map +1 -1
  213. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +2 -2
  214. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts.map +1 -1
  215. package/dist/types/components/DictionaryFieldEditor/StructureEditor.d.ts +1 -2
  216. package/dist/types/components/DictionaryFieldEditor/StructureEditor.d.ts.map +1 -1
  217. package/dist/types/components/DictionaryFieldEditor/StructureView/StructureView.d.ts +3 -4
  218. package/dist/types/components/DictionaryFieldEditor/StructureView/StructureView.d.ts.map +1 -1
  219. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +2 -2
  220. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts.map +1 -1
  221. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.d.ts +2 -3
  222. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.d.ts.map +1 -1
  223. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.d.ts +2 -3
  224. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.d.ts.map +1 -1
  225. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +2 -2
  226. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts.map +1 -1
  227. package/dist/types/components/DictionaryFieldEditor/getIsEditableSection.d.ts +1 -2
  228. package/dist/types/components/DictionaryFieldEditor/getIsEditableSection.d.ts.map +1 -1
  229. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +2 -2
  230. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts.map +1 -1
  231. package/dist/types/components/DropDown/index.d.ts +7 -8
  232. package/dist/types/components/DropDown/index.d.ts.map +1 -1
  233. package/dist/types/components/EditableField/EditableFieldInput.d.ts +1 -2
  234. package/dist/types/components/EditableField/EditableFieldInput.d.ts.map +1 -1
  235. package/dist/types/components/EditableField/EditableFieldLayout.d.ts +1 -2
  236. package/dist/types/components/EditableField/EditableFieldLayout.d.ts.map +1 -1
  237. package/dist/types/components/EditableField/EditableFieldTextArea.d.ts +1 -2
  238. package/dist/types/components/EditableField/EditableFieldTextArea.d.ts.map +1 -1
  239. package/dist/types/components/ExpandCollapse/ExpandCollapse.d.ts +2 -3
  240. package/dist/types/components/ExpandCollapse/ExpandCollapse.d.ts.map +1 -1
  241. package/dist/types/components/Flags/Flag.d.ts +1 -2
  242. package/dist/types/components/Flags/Flag.d.ts.map +1 -1
  243. package/dist/types/components/Flags/flags.d.ts +305 -305
  244. package/dist/types/components/Flags/flags.d.ts.map +1 -1
  245. package/dist/types/components/Footer/index.d.ts +3 -4
  246. package/dist/types/components/Footer/index.d.ts.map +1 -1
  247. package/dist/types/components/Form/Form.d.ts +1 -2
  248. package/dist/types/components/Form/Form.d.ts.map +1 -1
  249. package/dist/types/components/Form/FormBase.d.ts +2 -3
  250. package/dist/types/components/Form/FormBase.d.ts.map +1 -1
  251. package/dist/types/components/Form/FormControl.d.ts +1 -2
  252. package/dist/types/components/Form/FormControl.d.ts.map +1 -1
  253. package/dist/types/components/Form/FormDescription.d.ts +1 -2
  254. package/dist/types/components/Form/FormDescription.d.ts.map +1 -1
  255. package/dist/types/components/Form/FormField.d.ts +2 -3
  256. package/dist/types/components/Form/FormField.d.ts.map +1 -1
  257. package/dist/types/components/Form/FormItem.d.ts +2 -3
  258. package/dist/types/components/Form/FormItem.d.ts.map +1 -1
  259. package/dist/types/components/Form/FormLabel.d.ts +1 -2
  260. package/dist/types/components/Form/FormLabel.d.ts.map +1 -1
  261. package/dist/types/components/Form/FormMessage.d.ts +1 -2
  262. package/dist/types/components/Form/FormMessage.d.ts.map +1 -1
  263. package/dist/types/components/Form/elements/AutoSizeTextAreaElement.d.ts +1 -2
  264. package/dist/types/components/Form/elements/AutoSizeTextAreaElement.d.ts.map +1 -1
  265. package/dist/types/components/Form/elements/CheckboxElement.d.ts +1 -2
  266. package/dist/types/components/Form/elements/CheckboxElement.d.ts.map +1 -1
  267. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts +1 -2
  268. package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts.map +1 -1
  269. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts +1 -2
  270. package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts.map +1 -1
  271. package/dist/types/components/Form/elements/FormElement.d.ts +2 -3
  272. package/dist/types/components/Form/elements/FormElement.d.ts.map +1 -1
  273. package/dist/types/components/Form/elements/FormElementWrapper.d.ts +1 -2
  274. package/dist/types/components/Form/elements/FormElementWrapper.d.ts.map +1 -1
  275. package/dist/types/components/Form/elements/InputElement.d.ts +1 -2
  276. package/dist/types/components/Form/elements/InputElement.d.ts.map +1 -1
  277. package/dist/types/components/Form/elements/InputPasswordElement.d.ts +1 -2
  278. package/dist/types/components/Form/elements/InputPasswordElement.d.ts.map +1 -1
  279. package/dist/types/components/Form/elements/MultiselectElement.d.ts +1 -2
  280. package/dist/types/components/Form/elements/MultiselectElement.d.ts.map +1 -1
  281. package/dist/types/components/Form/elements/OTPElement.d.ts +1 -2
  282. package/dist/types/components/Form/elements/OTPElement.d.ts.map +1 -1
  283. package/dist/types/components/Form/elements/SearchInputElement.d.ts +1 -2
  284. package/dist/types/components/Form/elements/SearchInputElement.d.ts.map +1 -1
  285. package/dist/types/components/Form/elements/SelectElement.d.ts +1 -2
  286. package/dist/types/components/Form/elements/SelectElement.d.ts.map +1 -1
  287. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts +1 -2
  288. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts.map +1 -1
  289. package/dist/types/components/Form/elements/TextAreaElement.d.ts +1 -2
  290. package/dist/types/components/Form/elements/TextAreaElement.d.ts.map +1 -1
  291. package/dist/types/components/Form/layout/FormItemLayout.d.ts +2 -3
  292. package/dist/types/components/Form/layout/FormItemLayout.d.ts.map +1 -1
  293. package/dist/types/components/Form/layout/FormLabelLayout.d.ts +2 -3
  294. package/dist/types/components/Form/layout/FormLabelLayout.d.ts.map +1 -1
  295. package/dist/types/components/Form/layout/RequiredStar.d.ts +1 -2
  296. package/dist/types/components/Form/layout/RequiredStar.d.ts.map +1 -1
  297. package/dist/types/components/HTMLRender/HTMLRender.d.ts +2 -3
  298. package/dist/types/components/HTMLRender/HTMLRender.d.ts.map +1 -1
  299. package/dist/types/components/Headers/index.d.ts +7 -8
  300. package/dist/types/components/Headers/index.d.ts.map +1 -1
  301. package/dist/types/components/HeightResizer/index.d.ts +1 -2
  302. package/dist/types/components/HeightResizer/index.d.ts.map +1 -1
  303. package/dist/types/components/HideShow/index.d.ts +2 -3
  304. package/dist/types/components/HideShow/index.d.ts.map +1 -1
  305. package/dist/types/components/IDE/Code.d.ts +2 -3
  306. package/dist/types/components/IDE/Code.d.ts.map +1 -1
  307. package/dist/types/components/IDE/CodeBlockClient.d.ts +6 -6
  308. package/dist/types/components/IDE/CodeBlockClient.d.ts.map +1 -1
  309. package/dist/types/components/IDE/CodeBlockHighlight.d.ts +1 -2
  310. package/dist/types/components/IDE/CodeBlockHighlight.d.ts.map +1 -1
  311. package/dist/types/components/IDE/CodeBlockServer.d.ts +4 -5
  312. package/dist/types/components/IDE/CodeBlockServer.d.ts.map +1 -1
  313. package/dist/types/components/IDE/CodeBlockShiki.d.ts +2 -3
  314. package/dist/types/components/IDE/CodeBlockShiki.d.ts.map +1 -1
  315. package/dist/types/components/IDE/CodeConditionalRenderer.d.ts +1 -2
  316. package/dist/types/components/IDE/CodeConditionalRenderer.d.ts.map +1 -1
  317. package/dist/types/components/IDE/CodeContext.d.ts +6 -7
  318. package/dist/types/components/IDE/CodeContext.d.ts.map +1 -1
  319. package/dist/types/components/IDE/CodeFormatSelector.d.ts +1 -2
  320. package/dist/types/components/IDE/CodeFormatSelector.d.ts.map +1 -1
  321. package/dist/types/components/IDE/ContentDeclarationFormatSelector.d.ts +1 -2
  322. package/dist/types/components/IDE/ContentDeclarationFormatSelector.d.ts.map +1 -1
  323. package/dist/types/components/IDE/CopyCode.d.ts +1 -2
  324. package/dist/types/components/IDE/CopyCode.d.ts.map +1 -1
  325. package/dist/types/components/IDE/FileList.d.ts +2 -3
  326. package/dist/types/components/IDE/FileList.d.ts.map +1 -1
  327. package/dist/types/components/IDE/FileTree.d.ts +1 -2
  328. package/dist/types/components/IDE/FileTree.d.ts.map +1 -1
  329. package/dist/types/components/IDE/IDE.d.ts +2 -3
  330. package/dist/types/components/IDE/IDE.d.ts.map +1 -1
  331. package/dist/types/components/IDE/MarkDownRender.d.ts +1 -2
  332. package/dist/types/components/IDE/MarkDownRender.d.ts.map +1 -1
  333. package/dist/types/components/IDE/MonacoCode.d.ts +1 -2
  334. package/dist/types/components/IDE/MonacoCode.d.ts.map +1 -1
  335. package/dist/types/components/IDE/PackageManagerSelector.d.ts +1 -2
  336. package/dist/types/components/IDE/PackageManagerSelector.d.ts.map +1 -1
  337. package/dist/types/components/IDE/codeTransformer.d.ts +4 -5
  338. package/dist/types/components/IDE/codeTransformer.d.ts.map +1 -1
  339. package/dist/types/components/IDE/createFileTree.d.ts +2 -3
  340. package/dist/types/components/IDE/createFileTree.d.ts.map +1 -1
  341. package/dist/types/components/IDE/shikiBundle.d.ts +73 -0
  342. package/dist/types/components/IDE/shikiBundle.d.ts.map +1 -0
  343. package/dist/types/components/IDE/shikiLanguages.d.ts +12 -50
  344. package/dist/types/components/IDE/shikiLanguages.d.ts.map +1 -1
  345. package/dist/types/components/IDE/shikiThemes.d.ts +4 -3
  346. package/dist/types/components/IDE/shikiThemes.d.ts.map +1 -1
  347. package/dist/types/components/InformationTag/index.d.ts +1 -2
  348. package/dist/types/components/InformationTag/index.d.ts.map +1 -1
  349. package/dist/types/components/Input/Checkbox.d.ts +5 -6
  350. package/dist/types/components/Input/Checkbox.d.ts.map +1 -1
  351. package/dist/types/components/Input/Input.d.ts +5 -6
  352. package/dist/types/components/Input/Input.d.ts.map +1 -1
  353. package/dist/types/components/Input/InputPassword.d.ts +1 -2
  354. package/dist/types/components/Input/InputPassword.d.ts.map +1 -1
  355. package/dist/types/components/Input/OTPInput.d.ts +13 -14
  356. package/dist/types/components/Input/OTPInput.d.ts.map +1 -1
  357. package/dist/types/components/Input/Radio.d.ts +5 -6
  358. package/dist/types/components/Input/Radio.d.ts.map +1 -1
  359. package/dist/types/components/Input/SearchInput.d.ts +1 -2
  360. package/dist/types/components/Input/SearchInput.d.ts.map +1 -1
  361. package/dist/types/components/KeyboardScreenAdapter/index.d.ts +1 -2
  362. package/dist/types/components/KeyboardScreenAdapter/index.d.ts.map +1 -1
  363. package/dist/types/components/KeyboardShortcut/KeyboardShortcut.d.ts +4 -5
  364. package/dist/types/components/KeyboardShortcut/KeyboardShortcut.d.ts.map +1 -1
  365. package/dist/types/components/Label/index.d.ts +2 -3
  366. package/dist/types/components/Label/index.d.ts.map +1 -1
  367. package/dist/types/components/LanguageBackground/LanguageBackground.d.ts +1 -2
  368. package/dist/types/components/LanguageBackground/LanguageBackground.d.ts.map +1 -1
  369. package/dist/types/components/LanguageBackground/LanguageSection.d.ts +2 -3
  370. package/dist/types/components/LanguageBackground/LanguageSection.d.ts.map +1 -1
  371. package/dist/types/components/Link/Link.d.ts +10 -11
  372. package/dist/types/components/Link/Link.d.ts.map +1 -1
  373. package/dist/types/components/Loader/index.content.d.ts +2 -2
  374. package/dist/types/components/Loader/index.content.d.ts.map +1 -1
  375. package/dist/types/components/Loader/index.d.ts +2 -3
  376. package/dist/types/components/Loader/index.d.ts.map +1 -1
  377. package/dist/types/components/Loader/spinner.d.ts +1 -2
  378. package/dist/types/components/Loader/spinner.d.ts.map +1 -1
  379. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.d.ts +2 -3
  380. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.d.ts.map +1 -1
  381. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.d.ts +2 -3
  382. package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.d.ts.map +1 -1
  383. package/dist/types/components/LocaleSwitcherDropDown/LocaleSwitcher.d.ts +2 -3
  384. package/dist/types/components/LocaleSwitcherDropDown/LocaleSwitcher.d.ts.map +1 -1
  385. package/dist/types/components/Logo/Logo.d.ts +2 -3
  386. package/dist/types/components/Logo/Logo.d.ts.map +1 -1
  387. package/dist/types/components/Logo/LogoTextOnly.d.ts +1 -2
  388. package/dist/types/components/Logo/LogoTextOnly.d.ts.map +1 -1
  389. package/dist/types/components/Logo/LogoWithText.d.ts +1 -2
  390. package/dist/types/components/Logo/LogoWithText.d.ts.map +1 -1
  391. package/dist/types/components/Logo/LogoWithTextBelow.d.ts +2 -3
  392. package/dist/types/components/Logo/LogoWithTextBelow.d.ts.map +1 -1
  393. package/dist/types/components/MarkDownRender/MarkDownIframe.d.ts +1 -2
  394. package/dist/types/components/MarkDownRender/MarkDownIframe.d.ts.map +1 -1
  395. package/dist/types/components/MarkDownRender/MarkDownRender.d.ts +4 -4
  396. package/dist/types/components/MarkDownRender/MarkDownRender.d.ts.map +1 -1
  397. package/dist/types/components/MarkdownEditor/MarkdownEditor.d.ts +2 -3
  398. package/dist/types/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  399. package/dist/types/components/MarkdownEditor/extensions.d.ts +1 -2
  400. package/dist/types/components/MarkdownEditor/extensions.d.ts.map +1 -1
  401. package/dist/types/components/MarkdownEditor/generative/AICompletionCommands.d.ts +2 -3
  402. package/dist/types/components/MarkdownEditor/generative/AICompletionCommands.d.ts.map +1 -1
  403. package/dist/types/components/MarkdownEditor/generative/AISelector.d.ts +2 -3
  404. package/dist/types/components/MarkdownEditor/generative/AISelector.d.ts.map +1 -1
  405. package/dist/types/components/MarkdownEditor/generative/AISelectorCommands.d.ts +2 -3
  406. package/dist/types/components/MarkdownEditor/generative/AISelectorCommands.d.ts.map +1 -1
  407. package/dist/types/components/MarkdownEditor/generative/GenerativeMenuSwitch.d.ts +2 -3
  408. package/dist/types/components/MarkdownEditor/generative/GenerativeMenuSwitch.d.ts.map +1 -1
  409. package/dist/types/components/MarkdownEditor/generative/useAICompletion.d.ts +3 -4
  410. package/dist/types/components/MarkdownEditor/generative/useAICompletion.d.ts.map +1 -1
  411. package/dist/types/components/MarkdownEditor/imageUpload.d.ts +3 -4
  412. package/dist/types/components/MarkdownEditor/imageUpload.d.ts.map +1 -1
  413. package/dist/types/components/MarkdownEditor/novel/components/editor-bubble-item.d.ts +2 -2
  414. package/dist/types/components/MarkdownEditor/novel/components/editor-bubble-item.d.ts.map +1 -1
  415. package/dist/types/components/MarkdownEditor/novel/components/editor-bubble.d.ts +3 -3
  416. package/dist/types/components/MarkdownEditor/novel/components/editor-bubble.d.ts.map +1 -1
  417. package/dist/types/components/MarkdownEditor/novel/components/editor-command-item.d.ts +3 -3
  418. package/dist/types/components/MarkdownEditor/novel/components/editor-command-item.d.ts.map +1 -1
  419. package/dist/types/components/MarkdownEditor/novel/components/editor-command.d.ts +4 -5
  420. package/dist/types/components/MarkdownEditor/novel/components/editor-command.d.ts.map +1 -1
  421. package/dist/types/components/MarkdownEditor/novel/components/editor.d.ts +4 -5
  422. package/dist/types/components/MarkdownEditor/novel/components/editor.d.ts.map +1 -1
  423. package/dist/types/components/MarkdownEditor/novel/extensions/ai-highlight.d.ts +6 -7
  424. package/dist/types/components/MarkdownEditor/novel/extensions/ai-highlight.d.ts.map +1 -1
  425. package/dist/types/components/MarkdownEditor/novel/extensions/code-block-shiki.d.ts +14 -0
  426. package/dist/types/components/MarkdownEditor/novel/extensions/code-block-shiki.d.ts.map +1 -0
  427. package/dist/types/components/MarkdownEditor/novel/extensions/image-resizer.d.ts +1 -2
  428. package/dist/types/components/MarkdownEditor/novel/extensions/image-resizer.d.ts.map +1 -1
  429. package/dist/types/components/MarkdownEditor/novel/extensions/index.d.ts +2 -1
  430. package/dist/types/components/MarkdownEditor/novel/extensions/index.d.ts.map +1 -1
  431. package/dist/types/components/MarkdownEditor/novel/extensions/slash-command.d.ts +4 -4
  432. package/dist/types/components/MarkdownEditor/novel/extensions/slash-command.d.ts.map +1 -1
  433. package/dist/types/components/MarkdownEditor/novel/index.d.ts +2 -1
  434. package/dist/types/components/MarkdownEditor/novel/plugins/upload-images.d.ts +6 -7
  435. package/dist/types/components/MarkdownEditor/novel/plugins/upload-images.d.ts.map +1 -1
  436. package/dist/types/components/MarkdownEditor/novel/utils/atoms.d.ts +4 -5
  437. package/dist/types/components/MarkdownEditor/novel/utils/atoms.d.ts.map +1 -1
  438. package/dist/types/components/MarkdownEditor/novel/utils/index.d.ts +4 -5
  439. package/dist/types/components/MarkdownEditor/novel/utils/index.d.ts.map +1 -1
  440. package/dist/types/components/MarkdownEditor/selectors/ColorSelector.d.ts +2 -3
  441. package/dist/types/components/MarkdownEditor/selectors/ColorSelector.d.ts.map +1 -1
  442. package/dist/types/components/MarkdownEditor/selectors/LinkSelector.d.ts +1 -2
  443. package/dist/types/components/MarkdownEditor/selectors/LinkSelector.d.ts.map +1 -1
  444. package/dist/types/components/MarkdownEditor/selectors/NodeSelector.d.ts +2 -3
  445. package/dist/types/components/MarkdownEditor/selectors/NodeSelector.d.ts.map +1 -1
  446. package/dist/types/components/MarkdownEditor/selectors/TextButtons.d.ts +1 -2
  447. package/dist/types/components/MarkdownEditor/selectors/TextButtons.d.ts.map +1 -1
  448. package/dist/types/components/MarkdownEditor/slashCommand.d.ts +2 -3
  449. package/dist/types/components/MarkdownEditor/slashCommand.d.ts.map +1 -1
  450. package/dist/types/components/MaxHeightSmoother/index.d.ts +1 -2
  451. package/dist/types/components/MaxHeightSmoother/index.d.ts.map +1 -1
  452. package/dist/types/components/MaxWidthSmoother/index.d.ts +1 -2
  453. package/dist/types/components/MaxWidthSmoother/index.d.ts.map +1 -1
  454. package/dist/types/components/Modal/Modal.d.ts +2 -3
  455. package/dist/types/components/Modal/Modal.d.ts.map +1 -1
  456. package/dist/types/components/Navbar/Burger.d.ts +1 -2
  457. package/dist/types/components/Navbar/Burger.d.ts.map +1 -1
  458. package/dist/types/components/Navbar/DesktopNavbar.d.ts +1 -2
  459. package/dist/types/components/Navbar/DesktopNavbar.d.ts.map +1 -1
  460. package/dist/types/components/Navbar/MobileNavbar.d.ts +8 -2
  461. package/dist/types/components/Navbar/MobileNavbar.d.ts.map +1 -1
  462. package/dist/types/components/Navbar/index.d.ts +2 -2
  463. package/dist/types/components/Navbar/index.d.ts.map +1 -1
  464. package/dist/types/components/Navbar/useNavigation.d.ts +1 -2
  465. package/dist/types/components/Navbar/useNavigation.d.ts.map +1 -1
  466. package/dist/types/components/Pagination/NumberItemsSelector.d.ts +2 -3
  467. package/dist/types/components/Pagination/NumberItemsSelector.d.ts.map +1 -1
  468. package/dist/types/components/Pagination/Pagination.d.ts +5 -6
  469. package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
  470. package/dist/types/components/Pagination/ShowingResultsNumberItems.d.ts +2 -3
  471. package/dist/types/components/Pagination/ShowingResultsNumberItems.d.ts.map +1 -1
  472. package/dist/types/components/Pattern/DotPattern.d.ts +1 -2
  473. package/dist/types/components/Pattern/DotPattern.d.ts.map +1 -1
  474. package/dist/types/components/Pattern/GridDistortionPattern.d.ts +1 -2
  475. package/dist/types/components/Pattern/GridDistortionPattern.d.ts.map +1 -1
  476. package/dist/types/components/Pattern/GridPattern.d.ts +1 -2
  477. package/dist/types/components/Pattern/GridPattern.d.ts.map +1 -1
  478. package/dist/types/components/Pattern/SpotLight.d.ts +1 -2
  479. package/dist/types/components/Pattern/SpotLight.d.ts.map +1 -1
  480. package/dist/types/components/Popover/dynamic.d.ts +1 -2
  481. package/dist/types/components/Popover/dynamic.d.ts.map +1 -1
  482. package/dist/types/components/Popover/static.d.ts +8 -8
  483. package/dist/types/components/Popover/static.d.ts.map +1 -1
  484. package/dist/types/components/PressableSpan/PressableSpan.d.ts +1 -2
  485. package/dist/types/components/PressableSpan/PressableSpan.d.ts.map +1 -1
  486. package/dist/types/components/RightDrawer/RightDrawer.d.ts +1 -2
  487. package/dist/types/components/RightDrawer/RightDrawer.d.ts.map +1 -1
  488. package/dist/types/components/RightDrawer/isElementAtTopAndNotCovered.d.ts +1 -2
  489. package/dist/types/components/RightDrawer/isElementAtTopAndNotCovered.d.ts.map +1 -1
  490. package/dist/types/components/RightDrawer/useRightDrawer.d.ts +4 -5
  491. package/dist/types/components/RightDrawer/useRightDrawer.d.ts.map +1 -1
  492. package/dist/types/components/Select/Multiselect.d.ts +1 -2
  493. package/dist/types/components/Select/Multiselect.d.ts.map +1 -1
  494. package/dist/types/components/Select/Select.d.ts +5 -6
  495. package/dist/types/components/Select/Select.d.ts.map +1 -1
  496. package/dist/types/components/SocialNetworks/DiscordLogo.d.ts +1 -2
  497. package/dist/types/components/SocialNetworks/DiscordLogo.d.ts.map +1 -1
  498. package/dist/types/components/SocialNetworks/FacebookLogo.d.ts +1 -2
  499. package/dist/types/components/SocialNetworks/FacebookLogo.d.ts.map +1 -1
  500. package/dist/types/components/SocialNetworks/InstagramLogo.d.ts +1 -2
  501. package/dist/types/components/SocialNetworks/InstagramLogo.d.ts.map +1 -1
  502. package/dist/types/components/SocialNetworks/ProductHuntLogo.d.ts +1 -2
  503. package/dist/types/components/SocialNetworks/ProductHuntLogo.d.ts.map +1 -1
  504. package/dist/types/components/SocialNetworks/TiktokLogo.d.ts +1 -2
  505. package/dist/types/components/SocialNetworks/TiktokLogo.d.ts.map +1 -1
  506. package/dist/types/components/SocialNetworks/XLogo.d.ts +1 -2
  507. package/dist/types/components/SocialNetworks/XLogo.d.ts.map +1 -1
  508. package/dist/types/components/SocialNetworks/YoutubeLogo.d.ts +1 -2
  509. package/dist/types/components/SocialNetworks/YoutubeLogo.d.ts.map +1 -1
  510. package/dist/types/components/SocialNetworks/index.d.ts +2 -2
  511. package/dist/types/components/SocialNetworks/index.d.ts.map +1 -1
  512. package/dist/types/components/Status/index.d.ts +1 -2
  513. package/dist/types/components/Status/index.d.ts.map +1 -1
  514. package/dist/types/components/Steps/index.d.ts +2 -3
  515. package/dist/types/components/Steps/index.d.ts.map +1 -1
  516. package/dist/types/components/Steps/steps.content.d.ts +2 -2
  517. package/dist/types/components/Steps/steps.content.d.ts.map +1 -1
  518. package/dist/types/components/SwitchSelector/SwitchSelector.d.ts +11 -12
  519. package/dist/types/components/SwitchSelector/SwitchSelector.d.ts.map +1 -1
  520. package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts +2 -3
  521. package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts.map +1 -1
  522. package/dist/types/components/SwitchSelector/useSwitchSelector.d.ts +1 -2
  523. package/dist/types/components/SwitchSelector/useSwitchSelector.d.ts.map +1 -1
  524. package/dist/types/components/Tab/Tab.d.ts +3 -4
  525. package/dist/types/components/Tab/Tab.d.ts.map +1 -1
  526. package/dist/types/components/Tab/TabContext.d.ts +3 -4
  527. package/dist/types/components/Tab/TabContext.d.ts.map +1 -1
  528. package/dist/types/components/TabSelector/TabSelector.d.ts +4 -5
  529. package/dist/types/components/TabSelector/TabSelector.d.ts.map +1 -1
  530. package/dist/types/components/Table/ExpandButton.d.ts +1 -2
  531. package/dist/types/components/Table/ExpandButton.d.ts.map +1 -1
  532. package/dist/types/components/Table/SmartTable.d.ts +1 -2
  533. package/dist/types/components/Table/SmartTable.d.ts.map +1 -1
  534. package/dist/types/components/Table/Table.d.ts +2 -3
  535. package/dist/types/components/Table/Table.d.ts.map +1 -1
  536. package/dist/types/components/Table/TableElements.d.ts +4 -5
  537. package/dist/types/components/Table/TableElements.d.ts.map +1 -1
  538. package/dist/types/components/Table/useTableWidths.d.ts +1 -2
  539. package/dist/types/components/Table/useTableWidths.d.ts.map +1 -1
  540. package/dist/types/components/Tag/index.d.ts +6 -7
  541. package/dist/types/components/Tag/index.d.ts.map +1 -1
  542. package/dist/types/components/TechLogo/TechLogo.d.ts +2 -3
  543. package/dist/types/components/TechLogo/TechLogo.d.ts.map +1 -1
  544. package/dist/types/components/TechLogo/logos/Adonis.d.ts +1 -2
  545. package/dist/types/components/TechLogo/logos/Adonis.d.ts.map +1 -1
  546. package/dist/types/components/TechLogo/logos/Angular.d.ts +1 -2
  547. package/dist/types/components/TechLogo/logos/Angular.d.ts.map +1 -1
  548. package/dist/types/components/TechLogo/logos/Anthropic.d.ts +1 -2
  549. package/dist/types/components/TechLogo/logos/Anthropic.d.ts.map +1 -1
  550. package/dist/types/components/TechLogo/logos/Astro.d.ts +1 -2
  551. package/dist/types/components/TechLogo/logos/Astro.d.ts.map +1 -1
  552. package/dist/types/components/TechLogo/logos/Atlassian.d.ts +1 -2
  553. package/dist/types/components/TechLogo/logos/Atlassian.d.ts.map +1 -1
  554. package/dist/types/components/TechLogo/logos/Bitbucket.d.ts +1 -2
  555. package/dist/types/components/TechLogo/logos/Bitbucket.d.ts.map +1 -1
  556. package/dist/types/components/TechLogo/logos/ChatGPT.d.ts +1 -2
  557. package/dist/types/components/TechLogo/logos/ChatGPT.d.ts.map +1 -1
  558. package/dist/types/components/TechLogo/logos/Claude.d.ts +1 -2
  559. package/dist/types/components/TechLogo/logos/Claude.d.ts.map +1 -1
  560. package/dist/types/components/TechLogo/logos/DeepSeek.d.ts +1 -2
  561. package/dist/types/components/TechLogo/logos/DeepSeek.d.ts.map +1 -1
  562. package/dist/types/components/TechLogo/logos/Elysia.d.ts +1 -2
  563. package/dist/types/components/TechLogo/logos/Elysia.d.ts.map +1 -1
  564. package/dist/types/components/TechLogo/logos/Express.d.ts +1 -2
  565. package/dist/types/components/TechLogo/logos/Express.d.ts.map +1 -1
  566. package/dist/types/components/TechLogo/logos/Fastify.d.ts +1 -2
  567. package/dist/types/components/TechLogo/logos/Fastify.d.ts.map +1 -1
  568. package/dist/types/components/TechLogo/logos/Gemini.d.ts +1 -2
  569. package/dist/types/components/TechLogo/logos/Gemini.d.ts.map +1 -1
  570. package/dist/types/components/TechLogo/logos/GitHub.d.ts +1 -2
  571. package/dist/types/components/TechLogo/logos/GitHub.d.ts.map +1 -1
  572. package/dist/types/components/TechLogo/logos/GitLab.d.ts +1 -2
  573. package/dist/types/components/TechLogo/logos/GitLab.d.ts.map +1 -1
  574. package/dist/types/components/TechLogo/logos/Google.d.ts +1 -2
  575. package/dist/types/components/TechLogo/logos/Google.d.ts.map +1 -1
  576. package/dist/types/components/TechLogo/logos/GoogleAI.d.ts +1 -2
  577. package/dist/types/components/TechLogo/logos/GoogleAI.d.ts.map +1 -1
  578. package/dist/types/components/TechLogo/logos/Grok.d.ts +1 -2
  579. package/dist/types/components/TechLogo/logos/Grok.d.ts.map +1 -1
  580. package/dist/types/components/TechLogo/logos/HTMX.d.ts +1 -2
  581. package/dist/types/components/TechLogo/logos/HTMX.d.ts.map +1 -1
  582. package/dist/types/components/TechLogo/logos/Hono.d.ts +1 -2
  583. package/dist/types/components/TechLogo/logos/Hono.d.ts.map +1 -1
  584. package/dist/types/components/TechLogo/logos/LinkedIn.d.ts +1 -2
  585. package/dist/types/components/TechLogo/logos/LinkedIn.d.ts.map +1 -1
  586. package/dist/types/components/TechLogo/logos/Lit.d.ts +1 -2
  587. package/dist/types/components/TechLogo/logos/Lit.d.ts.map +1 -1
  588. package/dist/types/components/TechLogo/logos/Lynx.d.ts +1 -2
  589. package/dist/types/components/TechLogo/logos/Lynx.d.ts.map +1 -1
  590. package/dist/types/components/TechLogo/logos/Microsoft.d.ts +1 -2
  591. package/dist/types/components/TechLogo/logos/Microsoft.d.ts.map +1 -1
  592. package/dist/types/components/TechLogo/logos/Mistral.d.ts +1 -2
  593. package/dist/types/components/TechLogo/logos/Mistral.d.ts.map +1 -1
  594. package/dist/types/components/TechLogo/logos/NestJS.d.ts +1 -2
  595. package/dist/types/components/TechLogo/logos/NestJS.d.ts.map +1 -1
  596. package/dist/types/components/TechLogo/logos/Nextjs.d.ts +1 -2
  597. package/dist/types/components/TechLogo/logos/Nextjs.d.ts.map +1 -1
  598. package/dist/types/components/TechLogo/logos/Node.d.ts +1 -2
  599. package/dist/types/components/TechLogo/logos/Node.d.ts.map +1 -1
  600. package/dist/types/components/TechLogo/logos/Nuxt.d.ts +1 -2
  601. package/dist/types/components/TechLogo/logos/Nuxt.d.ts.map +1 -1
  602. package/dist/types/components/TechLogo/logos/Ollama.d.ts +1 -2
  603. package/dist/types/components/TechLogo/logos/Ollama.d.ts.map +1 -1
  604. package/dist/types/components/TechLogo/logos/OpenAI.d.ts +1 -2
  605. package/dist/types/components/TechLogo/logos/OpenAI.d.ts.map +1 -1
  606. package/dist/types/components/TechLogo/logos/Perplexity.d.ts +1 -2
  607. package/dist/types/components/TechLogo/logos/Perplexity.d.ts.map +1 -1
  608. package/dist/types/components/TechLogo/logos/Preact.d.ts +1 -2
  609. package/dist/types/components/TechLogo/logos/Preact.d.ts.map +1 -1
  610. package/dist/types/components/TechLogo/logos/Reactjs.d.ts +1 -2
  611. package/dist/types/components/TechLogo/logos/Reactjs.d.ts.map +1 -1
  612. package/dist/types/components/TechLogo/logos/Remix.d.ts +1 -2
  613. package/dist/types/components/TechLogo/logos/Remix.d.ts.map +1 -1
  614. package/dist/types/components/TechLogo/logos/Solid.d.ts +1 -2
  615. package/dist/types/components/TechLogo/logos/Solid.d.ts.map +1 -1
  616. package/dist/types/components/TechLogo/logos/Svelte.d.ts +1 -2
  617. package/dist/types/components/TechLogo/logos/Svelte.d.ts.map +1 -1
  618. package/dist/types/components/TechLogo/logos/Tanstack.d.ts +1 -2
  619. package/dist/types/components/TechLogo/logos/Tanstack.d.ts.map +1 -1
  620. package/dist/types/components/TechLogo/logos/Vanilla.d.ts +1 -2
  621. package/dist/types/components/TechLogo/logos/Vanilla.d.ts.map +1 -1
  622. package/dist/types/components/TechLogo/logos/Vitejs.d.ts +1 -2
  623. package/dist/types/components/TechLogo/logos/Vitejs.d.ts.map +1 -1
  624. package/dist/types/components/TechLogo/logos/Vuejs.d.ts +1 -2
  625. package/dist/types/components/TechLogo/logos/Vuejs.d.ts.map +1 -1
  626. package/dist/types/components/TechLogo/types.d.ts +1 -2
  627. package/dist/types/components/TechLogo/types.d.ts.map +1 -1
  628. package/dist/types/components/Terminal/Terminal.d.ts +2 -3
  629. package/dist/types/components/Terminal/Terminal.d.ts.map +1 -1
  630. package/dist/types/components/TextArea/AutoSizeTextArea.d.ts +2 -3
  631. package/dist/types/components/TextArea/AutoSizeTextArea.d.ts.map +1 -1
  632. package/dist/types/components/TextArea/AutocompleteTextArea.d.ts +2 -3
  633. package/dist/types/components/TextArea/AutocompleteTextArea.d.ts.map +1 -1
  634. package/dist/types/components/TextArea/ContentEditableTextArea.d.ts +4 -5
  635. package/dist/types/components/TextArea/ContentEditableTextArea.d.ts.map +1 -1
  636. package/dist/types/components/TextArea/TextArea.d.ts +2 -3
  637. package/dist/types/components/TextArea/TextArea.d.ts.map +1 -1
  638. package/dist/types/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.d.ts +1 -2
  639. package/dist/types/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.d.ts.map +1 -1
  640. package/dist/types/components/ThemeSwitcherDropDown/MobileThemeSwitcher.d.ts +1 -2
  641. package/dist/types/components/ThemeSwitcherDropDown/MobileThemeSwitcher.d.ts.map +1 -1
  642. package/dist/types/components/ThemeSwitcherDropDown/types.d.ts +1 -2
  643. package/dist/types/components/ThemeSwitcherDropDown/types.d.ts.map +1 -1
  644. package/dist/types/components/Toaster/Toast.d.ts +10 -11
  645. package/dist/types/components/Toaster/Toast.d.ts.map +1 -1
  646. package/dist/types/components/Toaster/Toaster.d.ts +1 -2
  647. package/dist/types/components/Toaster/Toaster.d.ts.map +1 -1
  648. package/dist/types/components/Toaster/useToast.d.ts +2 -2
  649. package/dist/types/components/Toaster/useToast.d.ts.map +1 -1
  650. package/dist/types/components/WithResizer/index.d.ts +1 -2
  651. package/dist/types/components/WithResizer/index.d.ts.map +1 -1
  652. package/dist/types/hooks/index.d.ts +2 -2
  653. package/dist/types/hooks/useDevice.d.ts +27 -17
  654. package/dist/types/hooks/useDevice.d.ts.map +1 -1
  655. package/dist/types/hooks/useGetElementById.d.ts +1 -2
  656. package/dist/types/hooks/useGetElementById.d.ts.map +1 -1
  657. package/dist/types/hooks/useGetElementOrWindow.d.ts +1 -2
  658. package/dist/types/hooks/useGetElementOrWindow.d.ts.map +1 -1
  659. package/dist/types/hooks/useHorizontalSwipe.d.ts +3 -4
  660. package/dist/types/hooks/useHorizontalSwipe.d.ts.map +1 -1
  661. package/dist/types/hooks/useIsMounted.d.ts +1 -2
  662. package/dist/types/hooks/useIsMounted.d.ts.map +1 -1
  663. package/dist/types/hooks/useItemSelector.d.ts +2 -3
  664. package/dist/types/hooks/useItemSelector.d.ts.map +1 -1
  665. package/dist/types/hooks/useKeyboardDetector.d.ts +1 -2
  666. package/dist/types/hooks/useKeyboardDetector.d.ts.map +1 -1
  667. package/dist/types/hooks/usePersistedStore.d.ts +1 -2
  668. package/dist/types/hooks/usePersistedStore.d.ts.map +1 -1
  669. package/dist/types/hooks/useScreenWidth.d.ts +1 -2
  670. package/dist/types/hooks/useScreenWidth.d.ts.map +1 -1
  671. package/dist/types/hooks/useScrollBlockage/index.d.ts +1 -2
  672. package/dist/types/hooks/useScrollBlockage/index.d.ts.map +1 -1
  673. package/dist/types/hooks/useScrollBlockage/useScrollBlockageStore.d.ts +2 -3
  674. package/dist/types/hooks/useScrollBlockage/useScrollBlockageStore.d.ts.map +1 -1
  675. package/dist/types/hooks/useScrollDetection.d.ts +1 -2
  676. package/dist/types/hooks/useScrollDetection.d.ts.map +1 -1
  677. package/dist/types/hooks/useScrollY.d.ts +1 -2
  678. package/dist/types/hooks/useScrollY.d.ts.map +1 -1
  679. package/dist/types/hooks/useSearch.d.ts +1 -2
  680. package/dist/types/hooks/useSearch.d.ts.map +1 -1
  681. package/dist/types/hooks/useStickToBottom.d.ts +2 -3
  682. package/dist/types/hooks/useStickToBottom.d.ts.map +1 -1
  683. package/dist/types/libs/auth.d.ts +2 -3
  684. package/dist/types/libs/auth.d.ts.map +1 -1
  685. package/dist/types/providers/DeferredAuthProvider.d.ts +2 -3
  686. package/dist/types/providers/DeferredAuthProvider.d.ts.map +1 -1
  687. package/dist/types/providers/ReactQueryProvider.d.ts +2 -3
  688. package/dist/types/providers/ReactQueryProvider.d.ts.map +1 -1
  689. package/dist/types/providers/ThemeProvider.d.ts +5 -6
  690. package/dist/types/providers/ThemeProvider.d.ts.map +1 -1
  691. package/dist/types/routes.d.ts +319 -304
  692. package/dist/types/routes.d.ts.map +1 -1
  693. package/dist/types/structured-data/buildAuthorJsonLd.d.ts +2 -3
  694. package/dist/types/structured-data/buildAuthorJsonLd.d.ts.map +1 -1
  695. package/dist/types/structured-data/buildBreadcrumbsJsonLd.d.ts +3 -4
  696. package/dist/types/structured-data/buildBreadcrumbsJsonLd.d.ts.map +1 -1
  697. package/dist/types/structured-data/buildCreativeWorkJsonLd.d.ts +4 -5
  698. package/dist/types/structured-data/buildCreativeWorkJsonLd.d.ts.map +1 -1
  699. package/dist/types/structured-data/buildFAQPageJsonLd.d.ts +3 -4
  700. package/dist/types/structured-data/buildFAQPageJsonLd.d.ts.map +1 -1
  701. package/dist/types/structured-data/buildItemListJsonLd.d.ts +3 -4
  702. package/dist/types/structured-data/buildItemListJsonLd.d.ts.map +1 -1
  703. package/dist/types/structured-data/buildOrganizationJsonLd.d.ts +2 -3
  704. package/dist/types/structured-data/buildOrganizationJsonLd.d.ts.map +1 -1
  705. package/dist/types/structured-data/buildProductJsonLd.d.ts +3 -4
  706. package/dist/types/structured-data/buildProductJsonLd.d.ts.map +1 -1
  707. package/dist/types/structured-data/buildSoftwareApplicationJsonLd.d.ts +2 -3
  708. package/dist/types/structured-data/buildSoftwareApplicationJsonLd.d.ts.map +1 -1
  709. package/dist/types/structured-data/buildWebsiteJsonLd.d.ts +2 -3
  710. package/dist/types/structured-data/buildWebsiteJsonLd.d.ts.map +1 -1
  711. package/dist/types/structured-data/normalizeJsonLdUrl.d.ts +2 -3
  712. package/dist/types/structured-data/normalizeJsonLdUrl.d.ts.map +1 -1
  713. package/dist/types/utils/observeScrollExtent.d.ts +1 -2
  714. package/dist/types/utils/observeScrollExtent.d.ts.map +1 -1
  715. package/dist/types/utils/scheduleFrameTask.d.ts +1 -2
  716. package/dist/types/utils/scheduleFrameTask.d.ts.map +1 -1
  717. package/package.json +45 -36
  718. package/src/components/MarkdownEditor/markdown-editor.css +1 -1
@@ -0,0 +1,197 @@
1
+ import { bundledLanguages, bundledThemes, getSingletonHighlighter } from "../../../IDE/shikiBundle.mjs";
2
+ import { findChildren } from "@tiptap/core";
3
+ import { CodeBlock } from "@tiptap/extension-code-block";
4
+ import { Plugin, PluginKey } from "@tiptap/pm/state";
5
+ import { Decoration, DecorationSet } from "@tiptap/pm/view";
6
+
7
+ //#region src/components/MarkdownEditor/novel/extensions/code-block-shiki.ts
8
+ const formatStyles = (styles) => Object.entries(styles).filter(([_, value]) => Boolean(value)).map(([key, value]) => `${key}:${value}`).join(";");
9
+ let sharedHighlighter = null;
10
+ const loadingLangs = /* @__PURE__ */ new Set();
11
+ const loadingThemes = /* @__PURE__ */ new Set();
12
+ const renderDecorations = ({ doc, name, defaultLanguage, defaultTheme, themes, highlighter }) => {
13
+ if (!highlighter) return DecorationSet.empty;
14
+ const decorations = [];
15
+ const loadedLangs = highlighter.getLoadedLanguages();
16
+ const loadedThemes = highlighter.getLoadedThemes();
17
+ const resolveTheme = (themeName) => loadedThemes.includes(themeName) ? themeName : loadedThemes[0] ?? "github-light";
18
+ findChildren(doc, (node) => node.type.name === name).forEach((block) => {
19
+ let from = block.pos + 1;
20
+ let language = block.node.attrs.language || defaultLanguage;
21
+ const blockTheme = block.node.attrs.theme || defaultTheme;
22
+ const lightTheme = block.node.attrs.themes?.light || themes?.light || blockTheme;
23
+ const darkTheme = block.node.attrs.themes?.dark || themes?.dark || blockTheme;
24
+ if (!loadedLangs.includes(language)) language = "plaintext";
25
+ if (themes) {
26
+ const tokensResult = highlighter.codeToTokens(block.node.textContent, {
27
+ lang: language,
28
+ themes: {
29
+ light: resolveTheme(lightTheme),
30
+ dark: resolveTheme(darkTheme)
31
+ }
32
+ });
33
+ const preStyles = {};
34
+ if (tokensResult.bg) preStyles["background-color"] = tokensResult.bg;
35
+ if (tokensResult.fg) preStyles.color = tokensResult.fg;
36
+ decorations.push(Decoration.node(block.pos, block.pos + block.node.nodeSize, {
37
+ style: formatStyles(preStyles),
38
+ class: "shiki"
39
+ }));
40
+ for (const line of tokensResult.tokens) {
41
+ for (const token of line) {
42
+ const to = from + token.content.length;
43
+ const style = formatStyles(token.htmlStyle || {});
44
+ decorations.push(Decoration.inline(from, to, { style }));
45
+ from = to;
46
+ }
47
+ from += 1;
48
+ }
49
+ } else {
50
+ const activeTheme = resolveTheme(blockTheme);
51
+ const tokensResult = highlighter.codeToTokens(block.node.textContent, {
52
+ lang: language,
53
+ theme: activeTheme
54
+ });
55
+ const themeObj = highlighter.getTheme(activeTheme);
56
+ decorations.push(Decoration.node(block.pos, block.pos + block.node.nodeSize, {
57
+ style: formatStyles({ "background-color": themeObj.bg }),
58
+ class: "shiki"
59
+ }));
60
+ for (const line of tokensResult.tokens) {
61
+ for (const token of line) {
62
+ const to = from + token.content.length;
63
+ const style = formatStyles({ color: token.color || "inherit" });
64
+ decorations.push(Decoration.inline(from, to, { style }));
65
+ from = to;
66
+ }
67
+ from += 1;
68
+ }
69
+ }
70
+ });
71
+ return DecorationSet.create(doc, decorations);
72
+ };
73
+ const createShikiPlugin = ({ name, defaultLanguage, defaultTheme, themes }) => {
74
+ const loadMissing = async (doc) => {
75
+ if (!sharedHighlighter) return false;
76
+ const blocks = findChildren(doc, (node) => node.type.name === name);
77
+ const loadedLangs = sharedHighlighter.getLoadedLanguages();
78
+ const loadedThemes = sharedHighlighter.getLoadedThemes();
79
+ const langsToLoad = /* @__PURE__ */ new Set();
80
+ const themesToLoad = /* @__PURE__ */ new Set();
81
+ for (const block of blocks) {
82
+ const lang = block.node.attrs.language || defaultLanguage;
83
+ if (lang && !loadedLangs.includes(lang) && lang in bundledLanguages && !loadingLangs.has(lang)) langsToLoad.add(lang);
84
+ if (themes) {
85
+ const light = block.node.attrs.themes?.light || themes.light;
86
+ const dark = block.node.attrs.themes?.dark || themes.dark;
87
+ if (light && !loadedThemes.includes(light) && light in bundledThemes && !loadingThemes.has(light)) themesToLoad.add(light);
88
+ if (dark && !loadedThemes.includes(dark) && dark in bundledThemes && !loadingThemes.has(dark)) themesToLoad.add(dark);
89
+ } else {
90
+ const theme = block.node.attrs.theme || defaultTheme;
91
+ if (theme && !loadedThemes.includes(theme) && theme in bundledThemes && !loadingThemes.has(theme)) themesToLoad.add(theme);
92
+ }
93
+ }
94
+ if (langsToLoad.size === 0 && themesToLoad.size === 0) return false;
95
+ for (const l of langsToLoad) loadingLangs.add(l);
96
+ for (const t of themesToLoad) loadingThemes.add(t);
97
+ try {
98
+ await Promise.all([...Array.from(langsToLoad).map((l) => sharedHighlighter.loadLanguage(l)), ...Array.from(themesToLoad).map((t) => sharedHighlighter.loadTheme(t))]);
99
+ return true;
100
+ } finally {
101
+ for (const l of langsToLoad) loadingLangs.delete(l);
102
+ for (const t of themesToLoad) loadingThemes.delete(t);
103
+ }
104
+ };
105
+ const plugin = new Plugin({
106
+ key: new PluginKey("shiki"),
107
+ view(editorView) {
108
+ let isDestroyed = false;
109
+ const init = async () => {
110
+ if (!sharedHighlighter) sharedHighlighter = await getSingletonHighlighter();
111
+ if (isDestroyed) return;
112
+ await loadMissing(editorView.state.doc);
113
+ if (isDestroyed) return;
114
+ editorView.dispatch(editorView.state.tr.setMeta("shikiPluginForceDecoration", true));
115
+ };
116
+ init();
117
+ return {
118
+ update(view) {
119
+ loadMissing(view.state.doc).then((hasLoadedNew) => {
120
+ if (hasLoadedNew && !isDestroyed) view.dispatch(view.state.tr.setMeta("shikiPluginForceDecoration", true));
121
+ });
122
+ },
123
+ destroy() {
124
+ isDestroyed = true;
125
+ }
126
+ };
127
+ },
128
+ state: {
129
+ init: (_, { doc }) => renderDecorations({
130
+ doc,
131
+ name,
132
+ defaultLanguage,
133
+ defaultTheme,
134
+ themes,
135
+ highlighter: sharedHighlighter
136
+ }),
137
+ apply: (tr, decorationSet, oldState, newState) => {
138
+ const oldHead = oldState.selection.$head.parent.type.name;
139
+ const newHead = newState.selection.$head.parent.type.name;
140
+ const oldBlocks = findChildren(oldState.doc, (node) => node.type.name === name);
141
+ const newBlocks = findChildren(newState.doc, (node) => node.type.name === name);
142
+ const docChanged = tr.docChanged && ([oldHead, newHead].includes(name) || oldBlocks.length !== newBlocks.length || tr.steps.some((step) => {
143
+ const { from, to } = step;
144
+ return from !== void 0 && to !== void 0 && oldBlocks.some((block) => block.pos >= from && block.pos + block.node.nodeSize <= to);
145
+ }));
146
+ if (tr.getMeta("shikiPluginForceDecoration") || docChanged) return renderDecorations({
147
+ doc: tr.doc,
148
+ name,
149
+ defaultLanguage,
150
+ defaultTheme,
151
+ themes,
152
+ highlighter: sharedHighlighter
153
+ });
154
+ return decorationSet.map(tr.mapping, tr.doc);
155
+ }
156
+ },
157
+ props: { decorations(state) {
158
+ return plugin.getState(state);
159
+ } }
160
+ });
161
+ return plugin;
162
+ };
163
+ const CodeBlockShiki = CodeBlock.extend({
164
+ addOptions() {
165
+ return {
166
+ ...this.parent?.(),
167
+ defaultLanguage: null,
168
+ defaultTheme: "github-light",
169
+ themes: null
170
+ };
171
+ },
172
+ markdownTokenName: "code",
173
+ parseMarkdown(rawNode, builder) {
174
+ if (rawNode.raw?.startsWith("```") === false && rawNode.raw?.startsWith("~~~") === false && rawNode.codeBlockStyle !== "indented") return [];
175
+ return builder.createNode("codeBlock", { language: rawNode.lang || null }, rawNode.text ? [builder.createTextNode(rawNode.text)] : []);
176
+ },
177
+ renderMarkdown(node, builder) {
178
+ const lang = node.attrs?.language || "";
179
+ return node.content ? [
180
+ `\`\`\`${lang}`,
181
+ builder.renderChildren(node.content),
182
+ "```"
183
+ ].join("\n") : `\`\`\`${lang}\n\n\`\`\``;
184
+ },
185
+ addProseMirrorPlugins() {
186
+ return [...this.parent?.() || [], createShikiPlugin({
187
+ name: this.name,
188
+ defaultLanguage: this.options.defaultLanguage,
189
+ defaultTheme: this.options.defaultTheme,
190
+ themes: this.options.themes
191
+ })];
192
+ }
193
+ });
194
+
195
+ //#endregion
196
+ export { CodeBlockShiki };
197
+ //# sourceMappingURL=code-block-shiki.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-block-shiki.mjs","names":[],"sources":["../../../../../../src/components/MarkdownEditor/novel/extensions/code-block-shiki.ts"],"sourcesContent":["import { findChildren } from '@tiptap/core';\nimport { CodeBlock, type CodeBlockOptions } from '@tiptap/extension-code-block';\nimport type { Node as ProseMirrorNode } from '@tiptap/pm/model';\nimport { Plugin, PluginKey } from '@tiptap/pm/state';\nimport { Decoration, DecorationSet } from '@tiptap/pm/view';\nimport {\n type BundledLanguage,\n type BundledTheme,\n bundledLanguages,\n bundledThemes,\n getSingletonHighlighter,\n type Highlighter,\n} from '../../../IDE/shikiBundle';\n\nexport interface CodeBlockShikiOptions extends CodeBlockOptions {\n defaultLanguage: BundledLanguage | null;\n defaultTheme: BundledTheme | string;\n themes?: {\n light: BundledTheme;\n dark: BundledTheme;\n } | null;\n}\n\nconst formatStyles = (styles: Record<string, string>): string =>\n Object.entries(styles)\n .filter(([_, value]) => Boolean(value))\n .map(([key, value]) => `${key}:${value}`)\n .join(';');\n\nlet sharedHighlighter: Highlighter | null = null;\nconst loadingLangs = new Set<string>();\nconst loadingThemes = new Set<string>();\n\nconst renderDecorations = ({\n doc,\n name,\n defaultLanguage,\n defaultTheme,\n themes,\n highlighter,\n}: {\n doc: ProseMirrorNode;\n name: string;\n defaultLanguage?: BundledLanguage | null;\n defaultTheme: BundledTheme | string;\n themes?: { light: BundledTheme; dark: BundledTheme } | null;\n highlighter: Highlighter | null;\n}): DecorationSet => {\n if (!highlighter) {\n return DecorationSet.empty;\n }\n\n const decorations: Decoration[] = [];\n const loadedLangs = highlighter.getLoadedLanguages();\n const loadedThemes = highlighter.getLoadedThemes();\n\n const resolveTheme = (themeName: string) =>\n loadedThemes.includes(themeName)\n ? themeName\n : (loadedThemes[0] ?? 'github-light');\n\n findChildren(doc, (node) => node.type.name === name).forEach((block) => {\n let from = block.pos + 1;\n let language = (block.node.attrs.language || defaultLanguage) as string;\n const blockTheme = (block.node.attrs.theme || defaultTheme) as string;\n const lightTheme = (block.node.attrs.themes?.light ||\n themes?.light ||\n blockTheme) as string;\n const darkTheme = (block.node.attrs.themes?.dark ||\n themes?.dark ||\n blockTheme) as string;\n\n if (!loadedLangs.includes(language)) {\n language = 'plaintext';\n }\n\n if (themes) {\n const tokensResult = highlighter.codeToTokens(block.node.textContent, {\n lang: language as BundledLanguage,\n themes: {\n light: resolveTheme(lightTheme),\n dark: resolveTheme(darkTheme),\n },\n });\n\n const preStyles: Record<string, string> = {};\n if (tokensResult.bg) preStyles['background-color'] = tokensResult.bg;\n if (tokensResult.fg) preStyles.color = tokensResult.fg;\n\n decorations.push(\n Decoration.node(block.pos, block.pos + block.node.nodeSize, {\n style: formatStyles(preStyles),\n class: 'shiki',\n })\n );\n\n for (const line of tokensResult.tokens) {\n for (const token of line) {\n const to = from + token.content.length;\n const style = formatStyles(\n (token.htmlStyle as Record<string, string>) || {}\n );\n decorations.push(Decoration.inline(from, to, { style }));\n from = to;\n }\n from += 1;\n }\n } else {\n const activeTheme = resolveTheme(blockTheme);\n const tokensResult = highlighter.codeToTokens(block.node.textContent, {\n lang: language as BundledLanguage,\n theme: activeTheme,\n });\n\n const themeObj = highlighter.getTheme(activeTheme);\n decorations.push(\n Decoration.node(block.pos, block.pos + block.node.nodeSize, {\n style: formatStyles({ 'background-color': themeObj.bg }),\n class: 'shiki',\n })\n );\n\n for (const line of tokensResult.tokens) {\n for (const token of line) {\n const to = from + token.content.length;\n const style = formatStyles({ color: token.color || 'inherit' });\n decorations.push(Decoration.inline(from, to, { style }));\n from = to;\n }\n from += 1;\n }\n }\n });\n\n return DecorationSet.create(doc, decorations);\n};\n\nconst createShikiPlugin = ({\n name,\n defaultLanguage,\n defaultTheme,\n themes,\n}: {\n name: string;\n defaultLanguage?: BundledLanguage | null;\n defaultTheme: BundledTheme | string;\n themes?: { light: BundledTheme; dark: BundledTheme } | null;\n}) => {\n const loadMissing = async (doc: ProseMirrorNode): Promise<boolean> => {\n if (!sharedHighlighter) return false;\n const blocks = findChildren(doc, (node) => node.type.name === name);\n const loadedLangs = sharedHighlighter.getLoadedLanguages();\n const loadedThemes = sharedHighlighter.getLoadedThemes();\n\n const langsToLoad = new Set<string>();\n const themesToLoad = new Set<string>();\n\n for (const block of blocks) {\n const lang = block.node.attrs.language || defaultLanguage;\n if (\n lang &&\n !loadedLangs.includes(lang) &&\n lang in bundledLanguages &&\n !loadingLangs.has(lang)\n ) {\n langsToLoad.add(lang);\n }\n\n if (themes) {\n const light = block.node.attrs.themes?.light || themes.light;\n const dark = block.node.attrs.themes?.dark || themes.dark;\n if (\n light &&\n !loadedThemes.includes(light) &&\n light in bundledThemes &&\n !loadingThemes.has(light)\n ) {\n themesToLoad.add(light);\n }\n if (\n dark &&\n !loadedThemes.includes(dark) &&\n dark in bundledThemes &&\n !loadingThemes.has(dark)\n ) {\n themesToLoad.add(dark);\n }\n } else {\n const theme = block.node.attrs.theme || defaultTheme;\n if (\n theme &&\n !loadedThemes.includes(theme) &&\n theme in bundledThemes &&\n !loadingThemes.has(theme)\n ) {\n themesToLoad.add(theme);\n }\n }\n }\n\n if (langsToLoad.size === 0 && themesToLoad.size === 0) return false;\n\n for (const l of langsToLoad) {\n loadingLangs.add(l);\n }\n for (const t of themesToLoad) {\n loadingThemes.add(t);\n }\n\n try {\n await Promise.all([\n ...Array.from(langsToLoad).map((l) =>\n sharedHighlighter!.loadLanguage(l as BundledLanguage)\n ),\n ...Array.from(themesToLoad).map((t) =>\n sharedHighlighter!.loadTheme(t as BundledTheme)\n ),\n ]);\n return true;\n } finally {\n for (const l of langsToLoad) {\n loadingLangs.delete(l);\n }\n for (const t of themesToLoad) {\n loadingThemes.delete(t);\n }\n }\n };\n\n const plugin: Plugin = new Plugin({\n key: new PluginKey('shiki'),\n view(editorView) {\n let isDestroyed = false;\n\n const init = async () => {\n if (!sharedHighlighter) {\n sharedHighlighter = await getSingletonHighlighter();\n }\n if (isDestroyed) return;\n await loadMissing(editorView.state.doc);\n if (isDestroyed) return;\n editorView.dispatch(\n editorView.state.tr.setMeta('shikiPluginForceDecoration', true)\n );\n };\n\n init();\n\n return {\n update(view) {\n loadMissing(view.state.doc).then((hasLoadedNew) => {\n if (hasLoadedNew && !isDestroyed) {\n view.dispatch(\n view.state.tr.setMeta('shikiPluginForceDecoration', true)\n );\n }\n });\n },\n destroy() {\n isDestroyed = true;\n },\n };\n },\n state: {\n init: (_, { doc }) =>\n renderDecorations({\n doc,\n name,\n defaultLanguage,\n defaultTheme,\n themes,\n highlighter: sharedHighlighter,\n }),\n apply: (tr, decorationSet, oldState, newState) => {\n const oldHead = oldState.selection.$head.parent.type.name;\n const newHead = newState.selection.$head.parent.type.name;\n const oldBlocks = findChildren(\n oldState.doc,\n (node) => node.type.name === name\n );\n const newBlocks = findChildren(\n newState.doc,\n (node) => node.type.name === name\n );\n\n const docChanged =\n tr.docChanged &&\n ([oldHead, newHead].includes(name) ||\n oldBlocks.length !== newBlocks.length ||\n tr.steps.some((step) => {\n // @ts-expect-error step boundaries\n const { from, to } = step;\n return (\n from !== undefined &&\n to !== undefined &&\n oldBlocks.some(\n (block) =>\n block.pos >= from && block.pos + block.node.nodeSize <= to\n )\n );\n }));\n\n if (tr.getMeta('shikiPluginForceDecoration') || docChanged) {\n return renderDecorations({\n doc: tr.doc,\n name,\n defaultLanguage,\n defaultTheme,\n themes,\n highlighter: sharedHighlighter,\n });\n }\n\n return decorationSet.map(tr.mapping, tr.doc);\n },\n },\n props: {\n decorations(state) {\n return plugin.getState(state);\n },\n },\n });\n\n return plugin;\n};\n\nexport const CodeBlockShiki = CodeBlock.extend<CodeBlockShikiOptions>({\n addOptions() {\n return {\n ...this.parent?.(),\n defaultLanguage: null,\n defaultTheme: 'github-light',\n themes: null,\n };\n },\n\n // @ts-expect-error tiptap-markdown integration property\n markdownTokenName: 'code',\n\n parseMarkdown(rawNode: any, builder: any) {\n if (\n rawNode.raw?.startsWith('```') === false &&\n rawNode.raw?.startsWith('~~~') === false &&\n rawNode.codeBlockStyle !== 'indented'\n ) {\n return [];\n }\n return builder.createNode(\n 'codeBlock',\n { language: rawNode.lang || null },\n rawNode.text ? [builder.createTextNode(rawNode.text)] : []\n );\n },\n\n renderMarkdown(node: any, builder: any) {\n const lang = node.attrs?.language || '';\n return node.content\n ? [`\\`\\`\\`${lang}`, builder.renderChildren(node.content), '```'].join(\n '\\n'\n )\n : `\\`\\`\\`${lang}\\n\\n\\`\\`\\``;\n },\n\n addProseMirrorPlugins() {\n return [\n ...(this.parent?.() || []),\n createShikiPlugin({\n name: this.name,\n defaultLanguage: this.options.defaultLanguage,\n defaultTheme: this.options.defaultTheme,\n themes: this.options.themes,\n }),\n ];\n },\n});\n"],"mappings":";;;;;;;AAuBA,MAAM,gBAAgB,WACpB,OAAO,QAAQ,MAAM,CAAC,CACnB,QAAQ,CAAC,GAAG,WAAW,QAAQ,KAAK,CAAC,CAAC,CACtC,KAAK,CAAC,KAAK,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,CACxC,KAAK,GAAG;AAEb,IAAI,oBAAwC;AAC5C,MAAM,+BAAe,IAAI,IAAY;AACrC,MAAM,gCAAgB,IAAI,IAAY;AAEtC,MAAM,qBAAqB,EACzB,KACA,MACA,iBACA,cACA,QACA,kBAQmB;CACnB,IAAI,CAAC,aACH,OAAO,cAAc;CAGvB,MAAM,cAA4B,CAAC;CACnC,MAAM,cAAc,YAAY,mBAAmB;CACnD,MAAM,eAAe,YAAY,gBAAgB;CAEjD,MAAM,gBAAgB,cACpB,aAAa,SAAS,SAAS,IAC3B,YACC,aAAa,MAAM;CAE1B,aAAa,MAAM,SAAS,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,UAAU;EACtE,IAAI,OAAO,MAAM,MAAM;EACvB,IAAI,WAAY,MAAM,KAAK,MAAM,YAAY;EAC7C,MAAM,aAAc,MAAM,KAAK,MAAM,SAAS;EAC9C,MAAM,aAAc,MAAM,KAAK,MAAM,QAAQ,SAC3C,QAAQ,SACR;EACF,MAAM,YAAa,MAAM,KAAK,MAAM,QAAQ,QAC1C,QAAQ,QACR;EAEF,IAAI,CAAC,YAAY,SAAS,QAAQ,GAChC,WAAW;EAGb,IAAI,QAAQ;GACV,MAAM,eAAe,YAAY,aAAa,MAAM,KAAK,aAAa;IACpE,MAAM;IACN,QAAQ;KACN,OAAO,aAAa,UAAU;KAC9B,MAAM,aAAa,SAAS;IAC9B;GACF,CAAC;GAED,MAAM,YAAoC,CAAC;GAC3C,IAAI,aAAa,IAAI,UAAU,sBAAsB,aAAa;GAClE,IAAI,aAAa,IAAI,UAAU,QAAQ,aAAa;GAEpD,YAAY,KACV,WAAW,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,UAAU;IAC1D,OAAO,aAAa,SAAS;IAC7B,OAAO;GACT,CAAC,CACH;GAEA,KAAK,MAAM,QAAQ,aAAa,QAAQ;IACtC,KAAK,MAAM,SAAS,MAAM;KACxB,MAAM,KAAK,OAAO,MAAM,QAAQ;KAChC,MAAM,QAAQ,aACX,MAAM,aAAwC,CAAC,CAClD;KACA,YAAY,KAAK,WAAW,OAAO,MAAM,IAAI,EAAE,MAAM,CAAC,CAAC;KACvD,OAAO;IACT;IACA,QAAQ;GACV;EACF,OAAO;GACL,MAAM,cAAc,aAAa,UAAU;GAC3C,MAAM,eAAe,YAAY,aAAa,MAAM,KAAK,aAAa;IACpE,MAAM;IACN,OAAO;GACT,CAAC;GAED,MAAM,WAAW,YAAY,SAAS,WAAW;GACjD,YAAY,KACV,WAAW,KAAK,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,UAAU;IAC1D,OAAO,aAAa,EAAE,oBAAoB,SAAS,GAAG,CAAC;IACvD,OAAO;GACT,CAAC,CACH;GAEA,KAAK,MAAM,QAAQ,aAAa,QAAQ;IACtC,KAAK,MAAM,SAAS,MAAM;KACxB,MAAM,KAAK,OAAO,MAAM,QAAQ;KAChC,MAAM,QAAQ,aAAa,EAAE,OAAO,MAAM,SAAS,UAAU,CAAC;KAC9D,YAAY,KAAK,WAAW,OAAO,MAAM,IAAI,EAAE,MAAM,CAAC,CAAC;KACvD,OAAO;IACT;IACA,QAAQ;GACV;EACF;CACF,CAAC;CAED,OAAO,cAAc,OAAO,KAAK,WAAW;AAC9C;AAEA,MAAM,qBAAqB,EACzB,MACA,iBACA,cACA,aAMI;CACJ,MAAM,cAAc,OAAO,QAA2C;EACpE,IAAI,CAAC,mBAAmB,OAAO;EAC/B,MAAM,SAAS,aAAa,MAAM,SAAS,KAAK,KAAK,SAAS,IAAI;EAClE,MAAM,cAAc,kBAAkB,mBAAmB;EACzD,MAAM,eAAe,kBAAkB,gBAAgB;EAEvD,MAAM,8BAAc,IAAI,IAAY;EACpC,MAAM,+BAAe,IAAI,IAAY;EAErC,KAAK,MAAM,SAAS,QAAQ;GAC1B,MAAM,OAAO,MAAM,KAAK,MAAM,YAAY;GAC1C,IACE,QACA,CAAC,YAAY,SAAS,IAAI,KAC1B,QAAQ,oBACR,CAAC,aAAa,IAAI,IAAI,GAEtB,YAAY,IAAI,IAAI;GAGtB,IAAI,QAAQ;IACV,MAAM,QAAQ,MAAM,KAAK,MAAM,QAAQ,SAAS,OAAO;IACvD,MAAM,OAAO,MAAM,KAAK,MAAM,QAAQ,QAAQ,OAAO;IACrD,IACE,SACA,CAAC,aAAa,SAAS,KAAK,KAC5B,SAAS,iBACT,CAAC,cAAc,IAAI,KAAK,GAExB,aAAa,IAAI,KAAK;IAExB,IACE,QACA,CAAC,aAAa,SAAS,IAAI,KAC3B,QAAQ,iBACR,CAAC,cAAc,IAAI,IAAI,GAEvB,aAAa,IAAI,IAAI;GAEzB,OAAO;IACL,MAAM,QAAQ,MAAM,KAAK,MAAM,SAAS;IACxC,IACE,SACA,CAAC,aAAa,SAAS,KAAK,KAC5B,SAAS,iBACT,CAAC,cAAc,IAAI,KAAK,GAExB,aAAa,IAAI,KAAK;GAE1B;EACF;EAEA,IAAI,YAAY,SAAS,KAAK,aAAa,SAAS,GAAG,OAAO;EAE9D,KAAK,MAAM,KAAK,aACd,aAAa,IAAI,CAAC;EAEpB,KAAK,MAAM,KAAK,cACd,cAAc,IAAI,CAAC;EAGrB,IAAI;GACF,MAAM,QAAQ,IAAI,CAChB,GAAG,MAAM,KAAK,WAAW,CAAC,CAAC,KAAK,MAC9B,kBAAmB,aAAa,CAAoB,CACtD,GACA,GAAG,MAAM,KAAK,YAAY,CAAC,CAAC,KAAK,MAC/B,kBAAmB,UAAU,CAAiB,CAChD,CACF,CAAC;GACD,OAAO;EACT,UAAU;GACR,KAAK,MAAM,KAAK,aACd,aAAa,OAAO,CAAC;GAEvB,KAAK,MAAM,KAAK,cACd,cAAc,OAAO,CAAC;EAE1B;CACF;CAEA,MAAM,SAAiB,IAAI,OAAO;EAChC,KAAK,IAAI,UAAU,OAAO;EAC1B,KAAK,YAAY;GACf,IAAI,cAAc;GAElB,MAAM,OAAO,YAAY;IACvB,IAAI,CAAC,mBACH,oBAAoB,MAAM,wBAAwB;IAEpD,IAAI,aAAa;IACjB,MAAM,YAAY,WAAW,MAAM,GAAG;IACtC,IAAI,aAAa;IACjB,WAAW,SACT,WAAW,MAAM,GAAG,QAAQ,8BAA8B,IAAI,CAChE;GACF;GAEA,KAAK;GAEL,OAAO;IACL,OAAO,MAAM;KACX,YAAY,KAAK,MAAM,GAAG,CAAC,CAAC,MAAM,iBAAiB;MACjD,IAAI,gBAAgB,CAAC,aACnB,KAAK,SACH,KAAK,MAAM,GAAG,QAAQ,8BAA8B,IAAI,CAC1D;KAEJ,CAAC;IACH;IACA,UAAU;KACR,cAAc;IAChB;GACF;EACF;EACA,OAAO;GACL,OAAO,GAAG,EAAE,UACV,kBAAkB;IAChB;IACA;IACA;IACA;IACA;IACA,aAAa;GACf,CAAC;GACH,QAAQ,IAAI,eAAe,UAAU,aAAa;IAChD,MAAM,UAAU,SAAS,UAAU,MAAM,OAAO,KAAK;IACrD,MAAM,UAAU,SAAS,UAAU,MAAM,OAAO,KAAK;IACrD,MAAM,YAAY,aAChB,SAAS,MACR,SAAS,KAAK,KAAK,SAAS,IAC/B;IACA,MAAM,YAAY,aAChB,SAAS,MACR,SAAS,KAAK,KAAK,SAAS,IAC/B;IAEA,MAAM,aACJ,GAAG,eACF,CAAC,SAAS,OAAO,CAAC,CAAC,SAAS,IAAI,KAC/B,UAAU,WAAW,UAAU,UAC/B,GAAG,MAAM,MAAM,SAAS;KAEtB,MAAM,EAAE,MAAM,OAAO;KACrB,OACE,SAAS,UACT,OAAO,UACP,UAAU,MACP,UACC,MAAM,OAAO,QAAQ,MAAM,MAAM,MAAM,KAAK,YAAY,EAC5D;IAEJ,CAAC;IAEL,IAAI,GAAG,QAAQ,4BAA4B,KAAK,YAC9C,OAAO,kBAAkB;KACvB,KAAK,GAAG;KACR;KACA;KACA;KACA;KACA,aAAa;IACf,CAAC;IAGH,OAAO,cAAc,IAAI,GAAG,SAAS,GAAG,GAAG;GAC7C;EACF;EACA,OAAO,EACL,YAAY,OAAO;GACjB,OAAO,OAAO,SAAS,KAAK;EAC9B,EACF;CACF,CAAC;CAED,OAAO;AACT;AAEA,MAAa,iBAAiB,UAAU,OAA8B;CACpE,aAAa;EACX,OAAO;GACL,GAAG,KAAK,SAAS;GACjB,iBAAiB;GACjB,cAAc;GACd,QAAQ;EACV;CACF;CAGA,mBAAmB;CAEnB,cAAc,SAAc,SAAc;EACxC,IACE,QAAQ,KAAK,WAAW,KAAK,MAAM,SACnC,QAAQ,KAAK,WAAW,KAAK,MAAM,SACnC,QAAQ,mBAAmB,YAE3B,OAAO,CAAC;EAEV,OAAO,QAAQ,WACb,aACA,EAAE,UAAU,QAAQ,QAAQ,KAAK,GACjC,QAAQ,OAAO,CAAC,QAAQ,eAAe,QAAQ,IAAI,CAAC,IAAI,CAAC,CAC3D;CACF;CAEA,eAAe,MAAW,SAAc;EACtC,MAAM,OAAO,KAAK,OAAO,YAAY;EACrC,OAAO,KAAK,UACR;GAAC,SAAS;GAAQ,QAAQ,eAAe,KAAK,OAAO;GAAG;EAAK,CAAC,CAAC,KAC7D,IACF,IACA,SAAS,KAAK;CACpB;CAEA,wBAAwB;EACtB,OAAO,CACL,GAAI,KAAK,SAAS,KAAK,CAAC,GACxB,kBAAkB;GAChB,MAAM,KAAK;GACX,iBAAiB,KAAK,QAAQ;GAC9B,cAAc,KAAK,QAAQ;GAC3B,QAAQ,KAAK,QAAQ;EACvB,CAAC,CACH;CACF;AACF,CAAC"}
@@ -2,6 +2,7 @@ import CustomKeymap from "./custom-keymap.mjs";
2
2
  import { ImageResizer } from "./image-resizer.mjs";
3
3
  import UpdatedImage from "./updated-image.mjs";
4
4
  import { AIHighlight, addAIHighlight, inputRegex, pasteRegex, removeAIHighlight } from "./ai-highlight.mjs";
5
+ import { CodeBlockShiki } from "./code-block-shiki.mjs";
5
6
  import { Command, createSuggestionItems, handleCommandNavigation, renderItems } from "./slash-command.mjs";
6
7
  import { InputRule } from "@tiptap/core";
7
8
  import CharacterCount from "@tiptap/extension-character-count";
@@ -47,5 +48,5 @@ const Horizontal = HorizontalRule.extend({ addInputRules() {
47
48
  } });
48
49
 
49
50
  //#endregion
50
- export { AIHighlight, CharacterCount, Color, Command, CustomKeymap, GlobalDragHandle, HighlightExtension, Horizontal as HorizontalRule, ImageResizer, InputRule, MarkdownExtension, PlaceholderExtension as Placeholder, StarterKit, TaskItem, TaskList, TextStyle, TiptapImage, TiptapLink, TiptapUnderline, UpdatedImage, Youtube, addAIHighlight, createSuggestionItems, handleCommandNavigation, inputRegex, pasteRegex, removeAIHighlight, renderItems };
51
+ export { AIHighlight, CharacterCount, CodeBlockShiki, Color, Command, CustomKeymap, GlobalDragHandle, HighlightExtension, Horizontal as HorizontalRule, ImageResizer, InputRule, MarkdownExtension, PlaceholderExtension as Placeholder, StarterKit, TaskItem, TaskList, TextStyle, TiptapImage, TiptapLink, TiptapUnderline, UpdatedImage, Youtube, addAIHighlight, createSuggestionItems, handleCommandNavigation, inputRegex, pasteRegex, removeAIHighlight, renderItems };
51
52
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../src/components/MarkdownEditor/novel/extensions/index.ts"],"sourcesContent":["import { InputRule } from '@tiptap/core';\nimport CharacterCount from '@tiptap/extension-character-count';\nimport { Color } from '@tiptap/extension-color';\nimport Highlight from '@tiptap/extension-highlight';\nimport HorizontalRule from '@tiptap/extension-horizontal-rule';\nimport TiptapImage from '@tiptap/extension-image';\nimport TiptapLink from '@tiptap/extension-link';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport { TaskItem } from '@tiptap/extension-task-item';\nimport { TaskList } from '@tiptap/extension-task-list';\nimport { TextStyle } from '@tiptap/extension-text-style';\nimport TiptapUnderline from '@tiptap/extension-underline';\nimport Youtube from '@tiptap/extension-youtube';\nimport StarterKit from '@tiptap/starter-kit';\nimport GlobalDragHandle from 'tiptap-extension-global-drag-handle';\nimport { Markdown } from 'tiptap-markdown';\nimport CustomKeymap from './custom-keymap';\nimport { ImageResizer } from './image-resizer';\nimport UpdatedImage from './updated-image';\n\nconst PlaceholderExtension = Placeholder.configure({\n placeholder: ({ node }) => {\n if (node.type.name === 'heading') {\n return `Heading ${node.attrs.level}`;\n }\n return \"Press '/' for commands\";\n },\n includeChildren: true,\n});\n\nconst HighlightExtension = Highlight.configure({\n multicolor: true,\n});\n\nconst MarkdownExtension = Markdown.configure({\n html: false,\n transformCopiedText: true,\n});\n\nconst Horizontal = HorizontalRule.extend({\n addInputRules() {\n return [\n new InputRule({\n find: /^(?:---|—-|___\\s|\\*\\*\\*\\s)$/u,\n handler: ({ state, range }) => {\n const attributes = {};\n\n const { tr } = state;\n const start = range.from;\n const end = range.to;\n\n tr.insert(start - 1, this.type.create(attributes)).delete(\n tr.mapping.map(start),\n tr.mapping.map(end)\n );\n },\n }),\n ];\n },\n});\n\nexport * from './ai-highlight';\nexport * from './slash-command';\nexport {\n CharacterCount,\n Color,\n CustomKeymap,\n GlobalDragHandle,\n HighlightExtension,\n Horizontal as HorizontalRule,\n ImageResizer,\n InputRule,\n MarkdownExtension,\n PlaceholderExtension as Placeholder,\n StarterKit,\n TaskItem,\n TaskList,\n TextStyle,\n TiptapImage,\n TiptapLink,\n TiptapUnderline,\n UpdatedImage,\n Youtube,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAM,uBAAuB,YAAY,UAAU;CACjD,cAAc,EAAE,WAAW;EACzB,IAAI,KAAK,KAAK,SAAS,WACrB,OAAO,WAAW,KAAK,MAAM;EAE/B,OAAO;CACT;CACA,iBAAiB;AACnB,CAAC;AAED,MAAM,qBAAqB,UAAU,UAAU,EAC7C,YAAY,KACd,CAAC;AAED,MAAM,oBAAoB,SAAS,UAAU;CAC3C,MAAM;CACN,qBAAqB;AACvB,CAAC;AAED,MAAM,aAAa,eAAe,OAAO,EACvC,gBAAgB;CACd,OAAO,CACL,IAAI,UAAU;EACZ,MAAM;EACN,UAAU,EAAE,OAAO,YAAY;GAC7B,MAAM,aAAa,CAAC;GAEpB,MAAM,EAAE,OAAO;GACf,MAAM,QAAQ,MAAM;GACpB,MAAM,MAAM,MAAM;GAElB,GAAG,OAAO,QAAQ,GAAG,KAAK,KAAK,OAAO,UAAU,CAAC,CAAC,CAAC,OACjD,GAAG,QAAQ,IAAI,KAAK,GACpB,GAAG,QAAQ,IAAI,GAAG,CACpB;EACF;CACF,CAAC,CACH;AACF,EACF,CAAC"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../src/components/MarkdownEditor/novel/extensions/index.ts"],"sourcesContent":["import { InputRule } from '@tiptap/core';\nimport CharacterCount from '@tiptap/extension-character-count';\nimport { Color } from '@tiptap/extension-color';\nimport Highlight from '@tiptap/extension-highlight';\nimport HorizontalRule from '@tiptap/extension-horizontal-rule';\nimport TiptapImage from '@tiptap/extension-image';\nimport TiptapLink from '@tiptap/extension-link';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport { TaskItem } from '@tiptap/extension-task-item';\nimport { TaskList } from '@tiptap/extension-task-list';\nimport { TextStyle } from '@tiptap/extension-text-style';\nimport TiptapUnderline from '@tiptap/extension-underline';\nimport Youtube from '@tiptap/extension-youtube';\nimport StarterKit from '@tiptap/starter-kit';\nimport GlobalDragHandle from 'tiptap-extension-global-drag-handle';\nimport { Markdown } from 'tiptap-markdown';\nimport CustomKeymap from './custom-keymap';\nimport { ImageResizer } from './image-resizer';\nimport UpdatedImage from './updated-image';\n\nconst PlaceholderExtension = Placeholder.configure({\n placeholder: ({ node }) => {\n if (node.type.name === 'heading') {\n return `Heading ${node.attrs.level}`;\n }\n return \"Press '/' for commands\";\n },\n includeChildren: true,\n});\n\nconst HighlightExtension = Highlight.configure({\n multicolor: true,\n});\n\nconst MarkdownExtension = Markdown.configure({\n html: false,\n transformCopiedText: true,\n});\n\nconst Horizontal = HorizontalRule.extend({\n addInputRules() {\n return [\n new InputRule({\n find: /^(?:---|—-|___\\s|\\*\\*\\*\\s)$/u,\n handler: ({ state, range }) => {\n const attributes = {};\n\n const { tr } = state;\n const start = range.from;\n const end = range.to;\n\n tr.insert(start - 1, this.type.create(attributes)).delete(\n tr.mapping.map(start),\n tr.mapping.map(end)\n );\n },\n }),\n ];\n },\n});\n\nexport * from './ai-highlight';\nexport * from './code-block-shiki';\nexport * from './slash-command';\nexport {\n CharacterCount,\n Color,\n CustomKeymap,\n GlobalDragHandle,\n HighlightExtension,\n Horizontal as HorizontalRule,\n ImageResizer,\n InputRule,\n MarkdownExtension,\n PlaceholderExtension as Placeholder,\n StarterKit,\n TaskItem,\n TaskList,\n TextStyle,\n TiptapImage,\n TiptapLink,\n TiptapUnderline,\n UpdatedImage,\n Youtube,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAM,uBAAuB,YAAY,UAAU;CACjD,cAAc,EAAE,WAAW;EACzB,IAAI,KAAK,KAAK,SAAS,WACrB,OAAO,WAAW,KAAK,MAAM;EAE/B,OAAO;CACT;CACA,iBAAiB;AACnB,CAAC;AAED,MAAM,qBAAqB,UAAU,UAAU,EAC7C,YAAY,KACd,CAAC;AAED,MAAM,oBAAoB,SAAS,UAAU;CAC3C,MAAM;CACN,qBAAqB;AACvB,CAAC;AAED,MAAM,aAAa,eAAe,OAAO,EACvC,gBAAgB;CACd,OAAO,CACL,IAAI,UAAU;EACZ,MAAM;EACN,UAAU,EAAE,OAAO,YAAY;GAC7B,MAAM,aAAa,CAAC;GAEpB,MAAM,EAAE,OAAO;GACf,MAAM,QAAQ,MAAM;GACpB,MAAM,MAAM,MAAM;GAElB,GAAG,OAAO,QAAQ,GAAG,KAAK,KAAK,OAAO,UAAU,CAAC,CAAC,CAAC,OACjD,GAAG,QAAQ,IAAI,KAAK,GACpB,GAAG,QAAQ,IAAI,GAAG,CACpB;EACF;CACF,CAAC,CACH;AACF,EACF,CAAC"}
@@ -9,9 +9,10 @@ import CustomKeymap from "./extensions/custom-keymap.mjs";
9
9
  import { ImageResizer } from "./extensions/image-resizer.mjs";
10
10
  import UpdatedImage from "./extensions/updated-image.mjs";
11
11
  import { AIHighlight, addAIHighlight, removeAIHighlight } from "./extensions/ai-highlight.mjs";
12
+ import { CodeBlockShiki } from "./extensions/code-block-shiki.mjs";
12
13
  import { Command, createSuggestionItems, handleCommandNavigation, renderItems } from "./extensions/slash-command.mjs";
13
14
  import { CharacterCount, Color, GlobalDragHandle, HighlightExtension, HorizontalRule as Horizontal, InputRule, MarkdownExtension, Placeholder as PlaceholderExtension, StarterKit, TaskItem, TaskList, TextStyle, TiptapImage, TiptapLink, TiptapUnderline, Youtube } from "./extensions/index.mjs";
14
15
  import { UploadImagesPlugin, createImageUpload, handleImageDrop, handleImagePaste } from "./plugins/upload-images.mjs";
15
16
  import { getAllContent, getPrevText, getUrlFromString, isValidUrl } from "./utils/index.mjs";
16
17
 
17
- export { AIHighlight, CharacterCount, Color, Command, CustomKeymap, EditorBubble, EditorBubbleItem, EditorCommand, EditorCommandEmpty, EditorCommandItem, EditorCommandList, EditorContent, EditorRoot, GlobalDragHandle, HighlightExtension, Horizontal as HorizontalRule, ImageResizer, InputRule, MarkdownExtension, PlaceholderExtension as Placeholder, StarterKit, TaskItem, TaskList, TextStyle, TiptapImage, TiptapLink, TiptapUnderline, UpdatedImage, UploadImagesPlugin, Youtube, addAIHighlight, createImageUpload, createSuggestionItems, getAllContent, getPrevText, getUrlFromString, handleCommandNavigation, handleImageDrop, handleImagePaste, isValidUrl, queryStore, rangeStore, removeAIHighlight, renderItems, useEditor, useQuery, useRange };
18
+ export { AIHighlight, CharacterCount, CodeBlockShiki, Color, Command, CustomKeymap, EditorBubble, EditorBubbleItem, EditorCommand, EditorCommandEmpty, EditorCommandItem, EditorCommandList, EditorContent, EditorRoot, GlobalDragHandle, HighlightExtension, Horizontal as HorizontalRule, ImageResizer, InputRule, MarkdownExtension, PlaceholderExtension as Placeholder, StarterKit, TaskItem, TaskList, TextStyle, TiptapImage, TiptapLink, TiptapUnderline, UpdatedImage, UploadImagesPlugin, Youtube, addAIHighlight, createImageUpload, createSuggestionItems, getAllContent, getPrevText, getUrlFromString, handleCommandNavigation, handleImageDrop, handleImagePaste, isValidUrl, queryStore, rangeStore, removeAIHighlight, renderItems, useEditor, useQuery, useRange };
@@ -1,10 +1,10 @@
1
1
  'use client';
2
2
 
3
3
  import { cn } from "../../utils/cn.mjs";
4
- import { useGetElementOrWindow } from "../../hooks/useGetElementOrWindow.mjs";
5
- import { useScrollBlockage } from "../../hooks/useScrollBlockage/index.mjs";
6
4
  import { Button } from "../Button/Button.mjs";
7
5
  import { Container } from "../Container/index.mjs";
6
+ import { useGetElementOrWindow } from "../../hooks/useGetElementOrWindow.mjs";
7
+ import { useScrollBlockage } from "../../hooks/useScrollBlockage/index.mjs";
8
8
  import { H3 } from "../Headers/index.mjs";
9
9
  import { useEffect } from "react";
10
10
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
 
3
3
  import { cn } from "../../utils/cn.mjs";
4
+ import { MaxHeightSmoother } from "../MaxHeightSmoother/index.mjs";
4
5
  import { useScrollBlockage } from "../../hooks/useScrollBlockage/index.mjs";
5
6
  import { useScrollDetection } from "../../hooks/useScrollDetection.mjs";
6
- import { MaxHeightSmoother } from "../MaxHeightSmoother/index.mjs";
7
7
  import { Burger } from "./Burger.mjs";
8
8
  import { useEffect, useRef, useState } from "react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -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,8 +1,8 @@
1
1
  'use client';
2
2
 
3
3
  import { cn } from "../../utils/cn.mjs";
4
- import { useItemSelector } from "../../hooks/useItemSelector.mjs";
5
4
  import { Button } from "../Button/Button.mjs";
5
+ import { useItemSelector } from "../../hooks/useItemSelector.mjs";
6
6
  import { useEffect, useRef } from "react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  import { cva } from "class-variance-authority";
@@ -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,12 +1,12 @@
1
1
  'use client';
2
2
 
3
- import { useGetElementOrWindow } from "../../hooks/useGetElementOrWindow.mjs";
4
- import { useDevice } from "../../hooks/useDevice.mjs";
5
- import { useScrollBlockage } from "../../hooks/useScrollBlockage/index.mjs";
6
3
  import { Button } from "../Button/Button.mjs";
7
4
  import { Container } from "../Container/index.mjs";
5
+ import { useDevice } from "../../hooks/useDevice.mjs";
8
6
  import { KeyboardShortcut } from "../KeyboardShortcut/KeyboardShortcut.mjs";
9
7
  import { Popover } from "../Popover/dynamic.mjs";
8
+ import { useGetElementOrWindow } from "../../hooks/useGetElementOrWindow.mjs";
9
+ import { useScrollBlockage } from "../../hooks/useScrollBlockage/index.mjs";
10
10
  import { MaxWidthSmoother } from "../MaxWidthSmoother/index.mjs";
11
11
  import { isElementAtTopAndNotCovered } from "./isElementAtTopAndNotCovered.mjs";
12
12
  import { useIsRightDrawerOpen, useRightDrawerActions } from "./useRightDrawer.mjs";
@@ -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,8 +1,8 @@
1
1
  'use client';
2
2
 
3
3
  import { cn } from "../../utils/cn.mjs";
4
- import { useHorizontalSwipe } from "../../hooks/useHorizontalSwipe.mjs";
5
4
  import { TabSelector } from "../TabSelector/TabSelector.mjs";
5
+ import { useHorizontalSwipe } from "../../hooks/useHorizontalSwipe.mjs";
6
6
  import { useTabContext } from "./TabContext.mjs";
7
7
  import { Children, createContext, isValidElement, useState } from "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -12,11 +12,11 @@ const HTMXLogo = (props) => /* @__PURE__ */ jsx("svg", {
12
12
  ...props,
13
13
  children: /* @__PURE__ */ jsxs("g", { children: [
14
14
  /* @__PURE__ */ jsx("polygon", {
15
- fill: "#111111",
15
+ fill: "currentColor",
16
16
  points: "181.394935 42.749283 256 74.2039835 256 96.0617321 181.394935 127.078518 175.477838 105.581524 230.646979 84.8771384 175.477838 64.0931689"
17
17
  }),
18
18
  /* @__PURE__ */ jsx("polygon", {
19
- fill: "#111111",
19
+ fill: "currentColor",
20
20
  points: "74.6050654 42.7484751 6.6060424e-14 74.2039835 1.83634114e-13 96.0617321 74.6050654 127.078518 80.5221623 105.581524 25.3530206 84.8771384 80.5221623 64.0931689"
21
21
  }),
22
22
  /* @__PURE__ */ jsx("polygon", {
@@ -1 +1 @@
1
- {"version":3,"file":"HTMX.mjs","names":[],"sources":["../../../../../src/components/TechLogo/logos/HTMX.tsx"],"sourcesContent":["import type { FC, SVGProps } from 'react';\n\nexport const HTMXLogo: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"256px\"\n height=\"168px\"\n viewBox=\"0 0 256 168\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label=\"HTMX logo\"\n preserveAspectRatio=\"xMidYMid\"\n {...props}\n >\n <g>\n <polygon\n fill=\"#111111\"\n points=\"181.394935 42.749283 256 74.2039835 256 96.0617321 181.394935 127.078518 175.477838 105.581524 230.646979 84.8771384 175.477838 64.0931689\"\n ></polygon>\n <polygon\n fill=\"#111111\"\n points=\"74.6050654 42.7484751 6.6060424e-14 74.2039835 1.83634114e-13 96.0617321 74.6050654 127.078518 80.5221623 105.581524 25.3530206 84.8771384 80.5221623 64.0931689\"\n ></polygon>\n <polygon\n fill=\"#4065C5\"\n points=\"144.339858 -1.59458264e-15 170.003907 -1.59458264e-15 112.990192 167.110525 85.996093 167.110525\"\n ></polygon>\n </g>\n </svg>\n);\n"],"mappings":";;;AAEA,MAAa,YAAyC,UACpD,oBAAC,OAAD;CACE,OAAM;CACN,QAAO;CACP,SAAQ;CACR,SAAQ;CACR,OAAM;CACN,cAAW;CACX,qBAAoB;CACpB,GAAI;WAEJ,qBAAC,KAAD;EACE,oBAAC,WAAD;GACE,MAAK;GACL,QAAO;EACC;EACV,oBAAC,WAAD;GACE,MAAK;GACL,QAAO;EACC;EACV,oBAAC,WAAD;GACE,MAAK;GACL,QAAO;EACC;CACT;AACA"}
1
+ {"version":3,"file":"HTMX.mjs","names":[],"sources":["../../../../../src/components/TechLogo/logos/HTMX.tsx"],"sourcesContent":["import type { FC, SVGProps } from 'react';\n\nexport const HTMXLogo: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"256px\"\n height=\"168px\"\n viewBox=\"0 0 256 168\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label=\"HTMX logo\"\n preserveAspectRatio=\"xMidYMid\"\n {...props}\n >\n <g>\n <polygon\n fill=\"currentColor\"\n points=\"181.394935 42.749283 256 74.2039835 256 96.0617321 181.394935 127.078518 175.477838 105.581524 230.646979 84.8771384 175.477838 64.0931689\"\n ></polygon>\n <polygon\n fill=\"currentColor\"\n points=\"74.6050654 42.7484751 6.6060424e-14 74.2039835 1.83634114e-13 96.0617321 74.6050654 127.078518 80.5221623 105.581524 25.3530206 84.8771384 80.5221623 64.0931689\"\n ></polygon>\n <polygon\n fill=\"#4065C5\"\n points=\"144.339858 -1.59458264e-15 170.003907 -1.59458264e-15 112.990192 167.110525 85.996093 167.110525\"\n ></polygon>\n </g>\n </svg>\n);\n"],"mappings":";;;AAEA,MAAa,YAAyC,UACpD,oBAAC,OAAD;CACE,OAAM;CACN,QAAO;CACP,SAAQ;CACR,SAAQ;CACR,OAAM;CACN,cAAW;CACX,qBAAoB;CACpB,GAAI;WAEJ,qBAAC,KAAD;EACE,oBAAC,WAAD;GACE,MAAK;GACL,QAAO;EACC;EACV,oBAAC,WAAD;GACE,MAAK;GACL,QAAO;EACC;EACV,oBAAC,WAAD;GACE,MAAK;GACL,QAAO;EACC;CACT;AACA"}
@@ -1,16 +1,16 @@
1
- import { useKeyboardDetector } from "./useKeyboardDetector.mjs";
2
- import { useGetElementOrWindow } from "./useGetElementOrWindow.mjs";
3
- import { useScrollY } from "./useScrollY.mjs";
1
+ import { calculateIsMobile, checkIsIOS, checkIsIphoneOrSafariDevice, checkIsMac, checkIsMobileScreen, checkIsMobileUserAgent, getBreakpointFromSize, useDevice } from "./useDevice.mjs";
2
+ import { useItemSelector } from "./useItemSelector.mjs";
4
3
  import { usePersistedStore } from "./usePersistedStore.mjs";
4
+ import { useGetElementById } from "./useGetElementById.mjs";
5
+ import { useGetElementOrWindow } from "./useGetElementOrWindow.mjs";
5
6
  import { useHorizontalSwipe } from "./useHorizontalSwipe.mjs";
6
- import { useItemSelector } from "./useItemSelector.mjs";
7
- import { calculateIsMobile, checkIsIOS, checkIsIphoneOrSafariDevice, checkIsMac, checkIsMobileScreen, checkIsMobileUserAgent, getBreakpointFromSize, useDevice } from "./useDevice.mjs";
8
- import { useSearch } from "./useSearch.mjs";
9
7
  import { useIsMounted } from "./useIsMounted.mjs";
10
- import { useGetElementById } from "./useGetElementById.mjs";
8
+ import { useKeyboardDetector } from "./useKeyboardDetector.mjs";
11
9
  import { useScreenWidth } from "./useScreenWidth.mjs";
12
10
  import { useScrollBlockage } from "./useScrollBlockage/index.mjs";
13
11
  import { useScrollDetection } from "./useScrollDetection.mjs";
12
+ import { useScrollY } from "./useScrollY.mjs";
13
+ import { useSearch } from "./useSearch.mjs";
14
14
  import { useStickToBottom } from "./useStickToBottom.mjs";
15
15
 
16
16
  export { calculateIsMobile, checkIsIOS, checkIsIphoneOrSafariDevice, checkIsMac, checkIsMobileScreen, checkIsMobileUserAgent, getBreakpointFromSize, useDevice, useGetElementById, useGetElementOrWindow, useHorizontalSwipe, useIsMounted, useItemSelector, useKeyboardDetector, usePersistedStore, useScreenWidth, useScrollBlockage, useScrollDetection, useScrollY, useSearch, useStickToBottom };