@nikala-ui/docs 0.12.0

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 (463) hide show
  1. package/README.md +22 -0
  2. package/dist/cli/commands/build.d.ts +5 -0
  3. package/dist/cli/commands/build.d.ts.map +1 -0
  4. package/dist/cli/commands/build.js +27 -0
  5. package/dist/cli/commands/build.js.map +1 -0
  6. package/dist/cli/commands/dev.d.ts +7 -0
  7. package/dist/cli/commands/dev.d.ts.map +1 -0
  8. package/dist/cli/commands/dev.js +32 -0
  9. package/dist/cli/commands/dev.js.map +1 -0
  10. package/dist/cli/commands/init.d.ts +2 -0
  11. package/dist/cli/commands/init.d.ts.map +1 -0
  12. package/dist/cli/commands/init.js +308 -0
  13. package/dist/cli/commands/init.js.map +1 -0
  14. package/dist/cli/commands/preview.d.ts +7 -0
  15. package/dist/cli/commands/preview.d.ts.map +1 -0
  16. package/dist/cli/commands/preview.js +24 -0
  17. package/dist/cli/commands/preview.js.map +1 -0
  18. package/dist/cli/commands/serve.d.ts +7 -0
  19. package/dist/cli/commands/serve.d.ts.map +1 -0
  20. package/dist/cli/commands/serve.js +33 -0
  21. package/dist/cli/commands/serve.js.map +1 -0
  22. package/dist/cli/index.d.ts +3 -0
  23. package/dist/cli/index.d.ts.map +1 -0
  24. package/dist/cli/index.js +53 -0
  25. package/dist/cli/index.js.map +1 -0
  26. package/dist/client/App.d.ts +5 -0
  27. package/dist/client/App.d.ts.map +1 -0
  28. package/dist/client/App.jsx +31 -0
  29. package/dist/client/App.jsx.map +1 -0
  30. package/dist/client/app-types.d.ts +14 -0
  31. package/dist/client/app-types.d.ts.map +1 -0
  32. package/dist/client/app-types.js +2 -0
  33. package/dist/client/app-types.js.map +1 -0
  34. package/dist/client/components/DocsLayoutShell.d.ts +21 -0
  35. package/dist/client/components/DocsLayoutShell.d.ts.map +1 -0
  36. package/dist/client/components/DocsLayoutShell.jsx +14 -0
  37. package/dist/client/components/DocsLayoutShell.jsx.map +1 -0
  38. package/dist/client/components/DocsPageContent.d.ts +9 -0
  39. package/dist/client/components/DocsPageContent.d.ts.map +1 -0
  40. package/dist/client/components/DocsPageContent.jsx +10 -0
  41. package/dist/client/components/DocsPageContent.jsx.map +1 -0
  42. package/dist/client/entry.d.ts +2 -0
  43. package/dist/client/entry.d.ts.map +1 -0
  44. package/dist/client/entry.jsx +28 -0
  45. package/dist/client/entry.jsx.map +1 -0
  46. package/dist/client/index.html +21 -0
  47. package/dist/client/navigation/page-navigation.d.ts +9 -0
  48. package/dist/client/navigation/page-navigation.d.ts.map +1 -0
  49. package/dist/client/navigation/page-navigation.js +51 -0
  50. package/dist/client/navigation/page-navigation.js.map +1 -0
  51. package/dist/client/routing/use-docs-router.d.ts +17 -0
  52. package/dist/client/routing/use-docs-router.d.ts.map +1 -0
  53. package/dist/client/routing/use-docs-router.js +71 -0
  54. package/dist/client/routing/use-docs-router.js.map +1 -0
  55. package/dist/client/ssr-entry.d.ts +3 -0
  56. package/dist/client/ssr-entry.d.ts.map +1 -0
  57. package/dist/client/ssr-entry.jsx +13 -0
  58. package/dist/client/ssr-entry.jsx.map +1 -0
  59. package/dist/client/style.css +183 -0
  60. package/dist/client/utils/sidebar.d.ts +2 -0
  61. package/dist/client/utils/sidebar.d.ts.map +1 -0
  62. package/dist/client/utils/sidebar.js +2 -0
  63. package/dist/client/utils/sidebar.js.map +1 -0
  64. package/dist/components/mdx-components.d.ts +34 -0
  65. package/dist/components/mdx-components.d.ts.map +1 -0
  66. package/dist/components/mdx-components.jsx +131 -0
  67. package/dist/components/mdx-components.jsx.map +1 -0
  68. package/dist/config.d.ts +6 -0
  69. package/dist/config.d.ts.map +1 -0
  70. package/dist/config.js +105 -0
  71. package/dist/config.js.map +1 -0
  72. package/dist/core/content-scanner.d.ts +10 -0
  73. package/dist/core/content-scanner.d.ts.map +1 -0
  74. package/dist/core/content-scanner.js +153 -0
  75. package/dist/core/content-scanner.js.map +1 -0
  76. package/dist/core/route-tree.d.ts +19 -0
  77. package/dist/core/route-tree.d.ts.map +1 -0
  78. package/dist/core/route-tree.js +176 -0
  79. package/dist/core/route-tree.js.map +1 -0
  80. package/dist/index.d.ts +13 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +14 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/lib/cn.d.ts +6 -0
  85. package/dist/lib/cn.d.ts.map +1 -0
  86. package/dist/lib/cn.js +9 -0
  87. package/dist/lib/cn.js.map +1 -0
  88. package/dist/mdx/compiler.d.ts +13 -0
  89. package/dist/mdx/compiler.d.ts.map +1 -0
  90. package/dist/mdx/compiler.js +38 -0
  91. package/dist/mdx/compiler.js.map +1 -0
  92. package/dist/mdx/highlighter.d.ts +22 -0
  93. package/dist/mdx/highlighter.d.ts.map +1 -0
  94. package/dist/mdx/highlighter.js +139 -0
  95. package/dist/mdx/highlighter.js.map +1 -0
  96. package/dist/mdx/rehype-shiki.d.ts +3 -0
  97. package/dist/mdx/rehype-shiki.d.ts.map +1 -0
  98. package/dist/mdx/rehype-shiki.js +83 -0
  99. package/dist/mdx/rehype-shiki.js.map +1 -0
  100. package/dist/navigation/index.d.ts +2 -0
  101. package/dist/navigation/index.d.ts.map +1 -0
  102. package/dist/navigation/index.js +2 -0
  103. package/dist/navigation/index.js.map +1 -0
  104. package/dist/navigation/sidebar-state.d.ts +6 -0
  105. package/dist/navigation/sidebar-state.d.ts.map +1 -0
  106. package/dist/navigation/sidebar-state.js +20 -0
  107. package/dist/navigation/sidebar-state.js.map +1 -0
  108. package/dist/navigation/sidebar-tree.d.ts +7 -0
  109. package/dist/navigation/sidebar-tree.d.ts.map +1 -0
  110. package/dist/navigation/sidebar-tree.js +11 -0
  111. package/dist/navigation/sidebar-tree.js.map +1 -0
  112. package/dist/registry/accordion.json +18 -0
  113. package/dist/registry/alert.json +18 -0
  114. package/dist/registry/api-table.json +21 -0
  115. package/dist/registry/aspect-ratio.json +17 -0
  116. package/dist/registry/avatar.json +17 -0
  117. package/dist/registry/badge.json +18 -0
  118. package/dist/registry/banner.json +19 -0
  119. package/dist/registry/breadcrumb.json +17 -0
  120. package/dist/registry/bubble.json +18 -0
  121. package/dist/registry/button-group.json +20 -0
  122. package/dist/registry/button.json +21 -0
  123. package/dist/registry/callout.json +19 -0
  124. package/dist/registry/card.json +17 -0
  125. package/dist/registry/checkbox.json +20 -0
  126. package/dist/registry/code-block.json +26 -0
  127. package/dist/registry/code-group.json +20 -0
  128. package/dist/registry/collapsible.json +18 -0
  129. package/dist/registry/combobox.json +21 -0
  130. package/dist/registry/command.json +27 -0
  131. package/dist/registry/component-viewer.json +25 -0
  132. package/dist/registry/container.json +18 -0
  133. package/dist/registry/context-menu.json +24 -0
  134. package/dist/registry/create-active-element.json +13 -0
  135. package/dist/registry/create-app-updater.json +13 -0
  136. package/dist/registry/create-audio.json +7 -0
  137. package/dist/registry/create-battery.json +13 -0
  138. package/dist/registry/create-chat-scroll.json +13 -0
  139. package/dist/registry/create-click-outside.json +13 -0
  140. package/dist/registry/create-clipboard.json +13 -0
  141. package/dist/registry/create-color-mode.json +13 -0
  142. package/dist/registry/create-controllable-signal.json +13 -0
  143. package/dist/registry/create-debounce.json +13 -0
  144. package/dist/registry/create-disclosure.json +13 -0
  145. package/dist/registry/create-document-tabs.json +13 -0
  146. package/dist/registry/create-document-title.json +13 -0
  147. package/dist/registry/create-drop-zone.json +13 -0
  148. package/dist/registry/create-event-source.json +13 -0
  149. package/dist/registry/create-favicon.json +13 -0
  150. package/dist/registry/create-fetch.json +13 -0
  151. package/dist/registry/create-focus-trap.json +13 -0
  152. package/dist/registry/create-form.json +13 -0
  153. package/dist/registry/create-fullscreen.json +13 -0
  154. package/dist/registry/create-geolocation.json +13 -0
  155. package/dist/registry/create-global-shortcut.json +13 -0
  156. package/dist/registry/create-hover.json +13 -0
  157. package/dist/registry/create-idle.json +13 -0
  158. package/dist/registry/create-infinite-scroll.json +13 -0
  159. package/dist/registry/create-input-mask.json +13 -0
  160. package/dist/registry/create-intersection-observer.json +13 -0
  161. package/dist/registry/create-keybindings.json +13 -0
  162. package/dist/registry/create-lock-scroll.json +13 -0
  163. package/dist/registry/create-long-press.json +13 -0
  164. package/dist/registry/create-media-query.json +13 -0
  165. package/dist/registry/create-mouse-position.json +13 -0
  166. package/dist/registry/create-network-status.json +13 -0
  167. package/dist/registry/create-orientation.json +13 -0
  168. package/dist/registry/create-pagination.json +13 -0
  169. package/dist/registry/create-permission.json +13 -0
  170. package/dist/registry/create-previous.json +13 -0
  171. package/dist/registry/create-resize-observer.json +13 -0
  172. package/dist/registry/create-scroll-into-view.json +13 -0
  173. package/dist/registry/create-scroll-position.json +13 -0
  174. package/dist/registry/create-storage.json +13 -0
  175. package/dist/registry/create-tauri-window.json +13 -0
  176. package/dist/registry/create-timer.json +13 -0
  177. package/dist/registry/create-tiptap-editor.json +34 -0
  178. package/dist/registry/create-undo-redo.json +13 -0
  179. package/dist/registry/create-web-notification.json +13 -0
  180. package/dist/registry/create-websocket.json +13 -0
  181. package/dist/registry/create-window-size.json +13 -0
  182. package/dist/registry/dialog.json +21 -0
  183. package/dist/registry/dropdown-menu.json +22 -0
  184. package/dist/registry/dropzone.json +21 -0
  185. package/dist/registry/empty.json +17 -0
  186. package/dist/registry/field.json +20 -0
  187. package/dist/registry/file-tree.json +21 -0
  188. package/dist/registry/footer.json +18 -0
  189. package/dist/registry/forgot-password-01.json +28 -0
  190. package/dist/registry/form-message.json +17 -0
  191. package/dist/registry/form.json +17 -0
  192. package/dist/registry/hero-01.json +22 -0
  193. package/dist/registry/hover-card.json +18 -0
  194. package/dist/registry/icon-button.json +20 -0
  195. package/dist/registry/index.json +1489 -0
  196. package/dist/registry/input-group.json +21 -0
  197. package/dist/registry/input.json +17 -0
  198. package/dist/registry/kbd.json +18 -0
  199. package/dist/registry/label.json +18 -0
  200. package/dist/registry/list.json +20 -0
  201. package/dist/registry/login-01.json +28 -0
  202. package/dist/registry/logo.json +17 -0
  203. package/dist/registry/marker.json +17 -0
  204. package/dist/registry/marquee.json +17 -0
  205. package/dist/registry/message.json +17 -0
  206. package/dist/registry/navbar.json +19 -0
  207. package/dist/registry/navigation-menu.json +22 -0
  208. package/dist/registry/number-input.json +24 -0
  209. package/dist/registry/otp-verification-01.json +26 -0
  210. package/dist/registry/package-manager-tabs.json +24 -0
  211. package/dist/registry/pager.json +21 -0
  212. package/dist/registry/pagination.json +22 -0
  213. package/dist/registry/pin-input.json +17 -0
  214. package/dist/registry/popover.json +22 -0
  215. package/dist/registry/progress.json +18 -0
  216. package/dist/registry/radio-group.json +18 -0
  217. package/dist/registry/rating.json +19 -0
  218. package/dist/registry/register-01.json +31 -0
  219. package/dist/registry/resizable.json +21 -0
  220. package/dist/registry/review-card.json +23 -0
  221. package/dist/registry/rich-text-editor.json +95 -0
  222. package/dist/registry/scroll-area.json +21 -0
  223. package/dist/registry/section-heading.json +21 -0
  224. package/dist/registry/select.json +22 -0
  225. package/dist/registry/separator.json +17 -0
  226. package/dist/registry/sheet.json +22 -0
  227. package/dist/registry/sidebar.json +24 -0
  228. package/dist/registry/skeleton.json +17 -0
  229. package/dist/registry/slider.json +18 -0
  230. package/dist/registry/spinner.json +18 -0
  231. package/dist/registry/stat.json +19 -0
  232. package/dist/registry/status.json +18 -0
  233. package/dist/registry/steps.json +20 -0
  234. package/dist/registry/switch.json +20 -0
  235. package/dist/registry/table-of-contents.json +23 -0
  236. package/dist/registry/table.json +17 -0
  237. package/dist/registry/tabs.json +20 -0
  238. package/dist/registry/textarea.json +17 -0
  239. package/dist/registry/theme-manager.json +39 -0
  240. package/dist/registry/timeline.json +18 -0
  241. package/dist/registry/titlebar-tabs.json +24 -0
  242. package/dist/registry/titlebar.json +26 -0
  243. package/dist/registry/toast.json +20 -0
  244. package/dist/registry/toggle-group.json +21 -0
  245. package/dist/registry/toggle.json +18 -0
  246. package/dist/registry/tooltip.json +18 -0
  247. package/dist/registry/updater-modal.json +26 -0
  248. package/dist/server/index.d.ts +18 -0
  249. package/dist/server/index.d.ts.map +1 -0
  250. package/dist/server/index.js +526 -0
  251. package/dist/server/index.js.map +1 -0
  252. package/dist/server/plugin.d.ts +10 -0
  253. package/dist/server/plugin.d.ts.map +1 -0
  254. package/dist/server/plugin.js +271 -0
  255. package/dist/server/plugin.js.map +1 -0
  256. package/dist/themes/default/content/breadcrumbs.d.ts +4 -0
  257. package/dist/themes/default/content/breadcrumbs.d.ts.map +1 -0
  258. package/dist/themes/default/content/breadcrumbs.jsx +31 -0
  259. package/dist/themes/default/content/breadcrumbs.jsx.map +1 -0
  260. package/dist/themes/default/content/pager.d.ts +5 -0
  261. package/dist/themes/default/content/pager.d.ts.map +1 -0
  262. package/dist/themes/default/content/pager.jsx +9 -0
  263. package/dist/themes/default/content/pager.jsx.map +1 -0
  264. package/dist/themes/default/content/table-of-contents.d.ts +4 -0
  265. package/dist/themes/default/content/table-of-contents.d.ts.map +1 -0
  266. package/dist/themes/default/content/table-of-contents.jsx +19 -0
  267. package/dist/themes/default/content/table-of-contents.jsx.map +1 -0
  268. package/dist/themes/default/index.d.ts +11 -0
  269. package/dist/themes/default/index.d.ts.map +1 -0
  270. package/dist/themes/default/index.js +30 -0
  271. package/dist/themes/default/index.js.map +1 -0
  272. package/dist/themes/default/layout.d.ts +4 -0
  273. package/dist/themes/default/layout.d.ts.map +1 -0
  274. package/dist/themes/default/layout.jsx +75 -0
  275. package/dist/themes/default/layout.jsx.map +1 -0
  276. package/dist/themes/default/navbar.d.ts +4 -0
  277. package/dist/themes/default/navbar.d.ts.map +1 -0
  278. package/dist/themes/default/navbar.jsx +74 -0
  279. package/dist/themes/default/navbar.jsx.map +1 -0
  280. package/dist/themes/default/navigation/mobile-table-of-contents.d.ts +4 -0
  281. package/dist/themes/default/navigation/mobile-table-of-contents.d.ts.map +1 -0
  282. package/dist/themes/default/navigation/mobile-table-of-contents.jsx +22 -0
  283. package/dist/themes/default/navigation/mobile-table-of-contents.jsx.map +1 -0
  284. package/dist/themes/default/navigation/sidebar-tree.d.ts +8 -0
  285. package/dist/themes/default/navigation/sidebar-tree.d.ts.map +1 -0
  286. package/dist/themes/default/navigation/sidebar-tree.jsx +100 -0
  287. package/dist/themes/default/navigation/sidebar-tree.jsx.map +1 -0
  288. package/dist/themes/default/overlays/search-dialog.d.ts +4 -0
  289. package/dist/themes/default/overlays/search-dialog.d.ts.map +1 -0
  290. package/dist/themes/default/overlays/search-dialog.jsx +34 -0
  291. package/dist/themes/default/overlays/search-dialog.jsx.map +1 -0
  292. package/dist/themes/default/sidebar.d.ts +4 -0
  293. package/dist/themes/default/sidebar.d.ts.map +1 -0
  294. package/dist/themes/default/sidebar.jsx +60 -0
  295. package/dist/themes/default/sidebar.jsx.map +1 -0
  296. package/dist/themes/index.d.ts +4 -0
  297. package/dist/themes/index.d.ts.map +1 -0
  298. package/dist/themes/index.js +5 -0
  299. package/dist/themes/index.js.map +1 -0
  300. package/dist/themes/types.d.ts +83 -0
  301. package/dist/themes/types.d.ts.map +1 -0
  302. package/dist/themes/types.js +2 -0
  303. package/dist/themes/types.js.map +1 -0
  304. package/dist/types.d.ts +97 -0
  305. package/dist/types.d.ts.map +1 -0
  306. package/dist/types.js +3 -0
  307. package/dist/types.js.map +1 -0
  308. package/dist/vendor/core-src/index.css +11 -0
  309. package/dist/vendor/core-src/index.ts +48 -0
  310. package/dist/vendor/core-src/lib/cn.ts +9 -0
  311. package/dist/vendor/core-src/registry/blocks/forgot-password-01.tsx +141 -0
  312. package/dist/vendor/core-src/registry/blocks/hero-01.tsx +28 -0
  313. package/dist/vendor/core-src/registry/blocks/login-01.tsx +231 -0
  314. package/dist/vendor/core-src/registry/blocks/otp-verification-01.tsx +170 -0
  315. package/dist/vendor/core-src/registry/blocks/register-01.tsx +318 -0
  316. package/dist/vendor/core-src/registry/components/ui/accordion.tsx +128 -0
  317. package/dist/vendor/core-src/registry/components/ui/alert.tsx +155 -0
  318. package/dist/vendor/core-src/registry/components/ui/api-table.tsx +117 -0
  319. package/dist/vendor/core-src/registry/components/ui/aspect-ratio.tsx +31 -0
  320. package/dist/vendor/core-src/registry/components/ui/avatar.tsx +114 -0
  321. package/dist/vendor/core-src/registry/components/ui/badge.tsx +56 -0
  322. package/dist/vendor/core-src/registry/components/ui/banner.tsx +187 -0
  323. package/dist/vendor/core-src/registry/components/ui/breadcrumb.tsx +136 -0
  324. package/dist/vendor/core-src/registry/components/ui/bubble.tsx +142 -0
  325. package/dist/vendor/core-src/registry/components/ui/button-group.tsx +42 -0
  326. package/dist/vendor/core-src/registry/components/ui/button.tsx +82 -0
  327. package/dist/vendor/core-src/registry/components/ui/callout.tsx +137 -0
  328. package/dist/vendor/core-src/registry/components/ui/card.tsx +113 -0
  329. package/dist/vendor/core-src/registry/components/ui/checkbox.tsx +74 -0
  330. package/dist/vendor/core-src/registry/components/ui/code-block.tsx +326 -0
  331. package/dist/vendor/core-src/registry/components/ui/code-group.tsx +105 -0
  332. package/dist/vendor/core-src/registry/components/ui/collapsible.tsx +73 -0
  333. package/dist/vendor/core-src/registry/components/ui/combobox.tsx +299 -0
  334. package/dist/vendor/core-src/registry/components/ui/command.tsx +378 -0
  335. package/dist/vendor/core-src/registry/components/ui/component-viewer.tsx +363 -0
  336. package/dist/vendor/core-src/registry/components/ui/container.tsx +45 -0
  337. package/dist/vendor/core-src/registry/components/ui/context-menu.tsx +237 -0
  338. package/dist/vendor/core-src/registry/components/ui/dialog.tsx +200 -0
  339. package/dist/vendor/core-src/registry/components/ui/dropdown-menu.tsx +298 -0
  340. package/dist/vendor/core-src/registry/components/ui/dropzone.tsx +189 -0
  341. package/dist/vendor/core-src/registry/components/ui/empty.tsx +83 -0
  342. package/dist/vendor/core-src/registry/components/ui/field.tsx +71 -0
  343. package/dist/vendor/core-src/registry/components/ui/file-tree.tsx +181 -0
  344. package/dist/vendor/core-src/registry/components/ui/footer.tsx +247 -0
  345. package/dist/vendor/core-src/registry/components/ui/form-message.tsx +36 -0
  346. package/dist/vendor/core-src/registry/components/ui/form.tsx +21 -0
  347. package/dist/vendor/core-src/registry/components/ui/hover-card.tsx +105 -0
  348. package/dist/vendor/core-src/registry/components/ui/icon-button.tsx +34 -0
  349. package/dist/vendor/core-src/registry/components/ui/input-group.tsx +80 -0
  350. package/dist/vendor/core-src/registry/components/ui/input.tsx +28 -0
  351. package/dist/vendor/core-src/registry/components/ui/kbd.tsx +73 -0
  352. package/dist/vendor/core-src/registry/components/ui/label.tsx +30 -0
  353. package/dist/vendor/core-src/registry/components/ui/list.tsx +222 -0
  354. package/dist/vendor/core-src/registry/components/ui/logo.tsx +68 -0
  355. package/dist/vendor/core-src/registry/components/ui/marker.tsx +102 -0
  356. package/dist/vendor/core-src/registry/components/ui/marquee.tsx +118 -0
  357. package/dist/vendor/core-src/registry/components/ui/message.tsx +168 -0
  358. package/dist/vendor/core-src/registry/components/ui/navbar.tsx +375 -0
  359. package/dist/vendor/core-src/registry/components/ui/navigation-menu.tsx +358 -0
  360. package/dist/vendor/core-src/registry/components/ui/number-input.tsx +150 -0
  361. package/dist/vendor/core-src/registry/components/ui/package-manager-tabs.tsx +226 -0
  362. package/dist/vendor/core-src/registry/components/ui/pager.tsx +102 -0
  363. package/dist/vendor/core-src/registry/components/ui/pagination.tsx +258 -0
  364. package/dist/vendor/core-src/registry/components/ui/pin-input.tsx +198 -0
  365. package/dist/vendor/core-src/registry/components/ui/popover.tsx +90 -0
  366. package/dist/vendor/core-src/registry/components/ui/progress.tsx +66 -0
  367. package/dist/vendor/core-src/registry/components/ui/radio-group.tsx +95 -0
  368. package/dist/vendor/core-src/registry/components/ui/rating.tsx +185 -0
  369. package/dist/vendor/core-src/registry/components/ui/resizable.tsx +195 -0
  370. package/dist/vendor/core-src/registry/components/ui/review-card.tsx +195 -0
  371. package/dist/vendor/core-src/registry/components/ui/rich-text-editor/bubble-menu.tsx +236 -0
  372. package/dist/vendor/core-src/registry/components/ui/rich-text-editor/editor.tsx +308 -0
  373. package/dist/vendor/core-src/registry/components/ui/rich-text-editor/extensions.ts +116 -0
  374. package/dist/vendor/core-src/registry/components/ui/rich-text-editor/footer.tsx +36 -0
  375. package/dist/vendor/core-src/registry/components/ui/rich-text-editor/image-dialog.tsx +75 -0
  376. package/dist/vendor/core-src/registry/components/ui/rich-text-editor/index.ts +11 -0
  377. package/dist/vendor/core-src/registry/components/ui/rich-text-editor/link-dialog.tsx +48 -0
  378. package/dist/vendor/core-src/registry/components/ui/rich-text-editor/markdown.ts +170 -0
  379. package/dist/vendor/core-src/registry/components/ui/rich-text-editor/slash-command.tsx +301 -0
  380. package/dist/vendor/core-src/registry/components/ui/rich-text-editor/table-controls.tsx +68 -0
  381. package/dist/vendor/core-src/registry/components/ui/rich-text-editor/toolbar.tsx +465 -0
  382. package/dist/vendor/core-src/registry/components/ui/rich-text-editor/use-editor.ts +231 -0
  383. package/dist/vendor/core-src/registry/components/ui/scroll-area.tsx +228 -0
  384. package/dist/vendor/core-src/registry/components/ui/section-heading.tsx +108 -0
  385. package/dist/vendor/core-src/registry/components/ui/select.tsx +156 -0
  386. package/dist/vendor/core-src/registry/components/ui/separator.tsx +37 -0
  387. package/dist/vendor/core-src/registry/components/ui/sheet.tsx +220 -0
  388. package/dist/vendor/core-src/registry/components/ui/sidebar.tsx +692 -0
  389. package/dist/vendor/core-src/registry/components/ui/skeleton.tsx +24 -0
  390. package/dist/vendor/core-src/registry/components/ui/slider.tsx +153 -0
  391. package/dist/vendor/core-src/registry/components/ui/spinner.tsx +41 -0
  392. package/dist/vendor/core-src/registry/components/ui/stat.tsx +245 -0
  393. package/dist/vendor/core-src/registry/components/ui/status.tsx +121 -0
  394. package/dist/vendor/core-src/registry/components/ui/steps.tsx +198 -0
  395. package/dist/vendor/core-src/registry/components/ui/switch.tsx +68 -0
  396. package/dist/vendor/core-src/registry/components/ui/table-of-contents.tsx +131 -0
  397. package/dist/vendor/core-src/registry/components/ui/table.tsx +160 -0
  398. package/dist/vendor/core-src/registry/components/ui/tabs.tsx +204 -0
  399. package/dist/vendor/core-src/registry/components/ui/textarea.tsx +82 -0
  400. package/dist/vendor/core-src/registry/components/ui/theme-toggle.tsx +238 -0
  401. package/dist/vendor/core-src/registry/components/ui/timeline.tsx +350 -0
  402. package/dist/vendor/core-src/registry/components/ui/titlebar-tabs.tsx +773 -0
  403. package/dist/vendor/core-src/registry/components/ui/titlebar.tsx +468 -0
  404. package/dist/vendor/core-src/registry/components/ui/toast.tsx +124 -0
  405. package/dist/vendor/core-src/registry/components/ui/toggle-group.tsx +203 -0
  406. package/dist/vendor/core-src/registry/components/ui/toggle.tsx +101 -0
  407. package/dist/vendor/core-src/registry/components/ui/tooltip.tsx +41 -0
  408. package/dist/vendor/core-src/registry/components/ui/updater-modal.tsx +254 -0
  409. package/dist/vendor/core-src/registry/index.ts +50 -0
  410. package/dist/vendor/core-src/registry/metadata.ts +742 -0
  411. package/dist/vendor/core-src/registry/providers/theme-provider.tsx +216 -0
  412. package/dist/vendor/core-src/registry/providers/theme-script.tsx +78 -0
  413. package/dist/vendor/core-src/registry/providers/theme-transitions.ts +139 -0
  414. package/dist/vendor/hooks-src/create-active-element.ts +51 -0
  415. package/dist/vendor/hooks-src/create-app-updater.ts +272 -0
  416. package/dist/vendor/hooks-src/create-audio-video.ts +444 -0
  417. package/dist/vendor/hooks-src/create-battery.ts +78 -0
  418. package/dist/vendor/hooks-src/create-chat-scroll.ts +113 -0
  419. package/dist/vendor/hooks-src/create-click-outside.ts +82 -0
  420. package/dist/vendor/hooks-src/create-clipboard.ts +69 -0
  421. package/dist/vendor/hooks-src/create-color-mode.ts +115 -0
  422. package/dist/vendor/hooks-src/create-controllable-signal.ts +56 -0
  423. package/dist/vendor/hooks-src/create-debounce.ts +90 -0
  424. package/dist/vendor/hooks-src/create-disclosure.ts +82 -0
  425. package/dist/vendor/hooks-src/create-document-tabs.ts +267 -0
  426. package/dist/vendor/hooks-src/create-document-title.ts +33 -0
  427. package/dist/vendor/hooks-src/create-drop-zone.ts +317 -0
  428. package/dist/vendor/hooks-src/create-event-source.ts +126 -0
  429. package/dist/vendor/hooks-src/create-favicon.ts +52 -0
  430. package/dist/vendor/hooks-src/create-fetch.ts +93 -0
  431. package/dist/vendor/hooks-src/create-focus-trap.ts +94 -0
  432. package/dist/vendor/hooks-src/create-form.ts +200 -0
  433. package/dist/vendor/hooks-src/create-fullscreen.ts +105 -0
  434. package/dist/vendor/hooks-src/create-geolocation.ts +140 -0
  435. package/dist/vendor/hooks-src/create-global-shortcut.ts +140 -0
  436. package/dist/vendor/hooks-src/create-hover.ts +88 -0
  437. package/dist/vendor/hooks-src/create-idle.ts +109 -0
  438. package/dist/vendor/hooks-src/create-infinite-scroll.ts +90 -0
  439. package/dist/vendor/hooks-src/create-input-mask.ts +109 -0
  440. package/dist/vendor/hooks-src/create-intersection-observer.ts +82 -0
  441. package/dist/vendor/hooks-src/create-keybindings.ts +148 -0
  442. package/dist/vendor/hooks-src/create-lock-scroll.ts +97 -0
  443. package/dist/vendor/hooks-src/create-long-press.ts +85 -0
  444. package/dist/vendor/hooks-src/create-media-query.ts +94 -0
  445. package/dist/vendor/hooks-src/create-mouse-position.ts +87 -0
  446. package/dist/vendor/hooks-src/create-network-status.ts +100 -0
  447. package/dist/vendor/hooks-src/create-orientation.ts +129 -0
  448. package/dist/vendor/hooks-src/create-pagination.ts +208 -0
  449. package/dist/vendor/hooks-src/create-permission.ts +91 -0
  450. package/dist/vendor/hooks-src/create-previous.ts +21 -0
  451. package/dist/vendor/hooks-src/create-resize-observer.ts +89 -0
  452. package/dist/vendor/hooks-src/create-scroll-into-view.ts +57 -0
  453. package/dist/vendor/hooks-src/create-scroll-position.ts +129 -0
  454. package/dist/vendor/hooks-src/create-storage.ts +106 -0
  455. package/dist/vendor/hooks-src/create-tauri-window.ts +628 -0
  456. package/dist/vendor/hooks-src/create-timer.ts +150 -0
  457. package/dist/vendor/hooks-src/create-tiptap-editor.ts +326 -0
  458. package/dist/vendor/hooks-src/create-undo-redo.ts +100 -0
  459. package/dist/vendor/hooks-src/create-web-notification.ts +111 -0
  460. package/dist/vendor/hooks-src/create-websocket.ts +179 -0
  461. package/dist/vendor/hooks-src/create-window-size.ts +41 -0
  462. package/dist/vendor/hooks-src/index.ts +48 -0
  463. package/package.json +87 -0
@@ -0,0 +1,176 @@
1
+ import { formatTitleFromFilename } from "./content-scanner.js";
2
+ import { flattenSidebarItems } from "../navigation/sidebar-tree.js";
3
+ export { flattenSidebarItems } from "../navigation/sidebar-tree.js";
4
+ export function formatGroupName(segment) {
5
+ return segment
6
+ .split(/[-_]/)
7
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
8
+ .join(" ");
9
+ }
10
+ export function buildSidebarTree(pages, directories = []) {
11
+ const rootPages = [];
12
+ const categoryMap = new Map();
13
+ for (const directory of directories) {
14
+ const category = directory.split("/")[0];
15
+ if (category && !categoryMap.has(category))
16
+ categoryMap.set(category, []);
17
+ }
18
+ for (const page of pages) {
19
+ if (page.url === "/") {
20
+ rootPages.push(page);
21
+ continue;
22
+ }
23
+ const segments = page.url.slice(1).split("/");
24
+ if (segments.length === 1) {
25
+ rootPages.push(page);
26
+ }
27
+ else {
28
+ const cat = segments[0];
29
+ if (!categoryMap.has(cat)) {
30
+ categoryMap.set(cat, []);
31
+ }
32
+ categoryMap.get(cat).push(page);
33
+ }
34
+ }
35
+ // Sort root pages: "/" always first, then by order, then title
36
+ rootPages.sort((a, b) => {
37
+ if (a.url === "/")
38
+ return -1;
39
+ if (b.url === "/")
40
+ return 1;
41
+ const orderA = a.frontmatter.order ?? 9999;
42
+ const orderB = b.frontmatter.order ?? 9999;
43
+ if (orderA !== orderB)
44
+ return orderA - orderB;
45
+ return a.title.localeCompare(b.title);
46
+ });
47
+ const rootItems = rootPages.map((page) => ({
48
+ title: page.title || "Overview",
49
+ href: page.url,
50
+ badge: page.frontmatter.badge,
51
+ addedAt: page.frontmatter.addedAt,
52
+ icon: page.frontmatter.icon,
53
+ }));
54
+ // Determine order of categories
55
+ const categories = Array.from(categoryMap.entries()).map(([cat, catPages]) => {
56
+ const minCategoryOrder = Math.min(...catPages.map((p) => {
57
+ const catOrder = typeof p.frontmatter.categoryOrder === "number" ? p.frontmatter.categoryOrder : undefined;
58
+ return catOrder ?? 9999;
59
+ }));
60
+ const minPageOrder = Math.min(...catPages.map((p) => p.frontmatter.order ?? 9999));
61
+ return { cat, catPages, minCategoryOrder, minPageOrder };
62
+ });
63
+ categories.sort((a, b) => {
64
+ if (a.minCategoryOrder !== b.minCategoryOrder) {
65
+ return a.minCategoryOrder - b.minCategoryOrder;
66
+ }
67
+ if (a.minPageOrder !== b.minPageOrder) {
68
+ return a.minPageOrder - b.minPageOrder;
69
+ }
70
+ return a.cat.localeCompare(b.cat);
71
+ });
72
+ for (const { cat, catPages } of categories) {
73
+ const group = {
74
+ title: formatGroupName(cat),
75
+ items: [],
76
+ };
77
+ // Sort pages in this category by order, then title
78
+ catPages.sort((a, b) => {
79
+ const orderA = a.frontmatter.order ?? 9999;
80
+ const orderB = b.frontmatter.order ?? 9999;
81
+ if (orderA !== orderB)
82
+ return orderA - orderB;
83
+ return a.title.localeCompare(b.title);
84
+ });
85
+ for (const page of catPages) {
86
+ const segments = page.url.slice(1).split("/");
87
+ if (segments.length === 2) {
88
+ group.items?.push({
89
+ title: page.title,
90
+ href: page.url,
91
+ badge: page.frontmatter.badge,
92
+ addedAt: page.frontmatter.addedAt,
93
+ icon: page.frontmatter.icon,
94
+ });
95
+ }
96
+ else {
97
+ const subCategory = segments[1];
98
+ let subGroup = group.items?.find((item) => item.title === formatGroupName(subCategory) && item.items);
99
+ if (!subGroup) {
100
+ subGroup = {
101
+ title: formatGroupName(subCategory),
102
+ items: [],
103
+ };
104
+ group.items?.push(subGroup);
105
+ }
106
+ subGroup.items?.push({
107
+ title: page.title,
108
+ href: page.url,
109
+ badge: page.frontmatter.badge,
110
+ addedAt: page.frontmatter.addedAt,
111
+ icon: page.frontmatter.icon,
112
+ });
113
+ }
114
+ }
115
+ rootItems.push(group);
116
+ }
117
+ return rootItems;
118
+ }
119
+ export function buildPagination(pages, currentUrl) {
120
+ const currentPage = pages.find((p) => p.url === currentUrl);
121
+ const sidebar = buildSidebarTree(pages);
122
+ const flattened = flattenSidebarItems(sidebar);
123
+ const currentIndex = flattened.findIndex((item) => item.href === currentUrl);
124
+ if (currentIndex === -1) {
125
+ return {};
126
+ }
127
+ let prev = currentIndex > 0 ? flattened[currentIndex - 1] : undefined;
128
+ let next = currentIndex < flattened.length - 1 ? flattened[currentIndex + 1] : undefined;
129
+ // Custom frontmatter overrides
130
+ if (currentPage?.frontmatter.prev === false || currentPage?.frontmatter.prev === null) {
131
+ prev = undefined;
132
+ }
133
+ else if (typeof currentPage?.frontmatter.prev === "string") {
134
+ const target = pages.find((p) => p.url === currentPage.frontmatter.prev);
135
+ if (target)
136
+ prev = { title: target.title, href: target.url };
137
+ }
138
+ else if (typeof currentPage?.frontmatter.prev === "object" && currentPage.frontmatter.prev !== null) {
139
+ prev = currentPage.frontmatter.prev;
140
+ }
141
+ if (currentPage?.frontmatter.next === false || currentPage?.frontmatter.next === null) {
142
+ next = undefined;
143
+ }
144
+ else if (typeof currentPage?.frontmatter.next === "string") {
145
+ const target = pages.find((p) => p.url === currentPage.frontmatter.next);
146
+ if (target)
147
+ next = { title: target.title, href: target.url };
148
+ }
149
+ else if (typeof currentPage?.frontmatter.next === "object" && currentPage.frontmatter.next !== null) {
150
+ next = currentPage.frontmatter.next;
151
+ }
152
+ return { prev, next };
153
+ }
154
+ export function buildBreadcrumbs(url, pages) {
155
+ const breadcrumbs = [
156
+ { title: "Docs", href: "/" },
157
+ ];
158
+ if (url === "/") {
159
+ return breadcrumbs;
160
+ }
161
+ const segments = url.slice(1).split("/");
162
+ let accumulatedPath = "";
163
+ for (let i = 0; i < segments.length; i++) {
164
+ const seg = segments[i];
165
+ accumulatedPath += `/${seg}`;
166
+ const isLast = i === segments.length - 1;
167
+ const matchingPage = pages.find((p) => p.url === accumulatedPath);
168
+ const title = matchingPage?.title || formatTitleFromFilename(seg);
169
+ breadcrumbs.push({
170
+ title,
171
+ href: isLast ? undefined : accumulatedPath,
172
+ });
173
+ }
174
+ return breadcrumbs;
175
+ }
176
+ //# sourceMappingURL=route-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-tree.js","sourceRoot":"","sources":["../../src/core/route-tree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export * from "./types.js";
2
+ export * from "./navigation/index.js";
3
+ export * from "./config.js";
4
+ export * from "./core/content-scanner.js";
5
+ export * from "./core/route-tree.js";
6
+ export * from "./mdx/compiler.js";
7
+ export * from "./mdx/highlighter.js";
8
+ export * from "./components/mdx-components.js";
9
+ export * from "./themes/index.js";
10
+ export * from "./server/index.js";
11
+ import { nikalaDocsPlugin } from "./server/plugin.js";
12
+ export declare const nikalaDocs: typeof nikalaDocsPlugin;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,eAAO,MAAM,UAAU,yBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,14 @@
1
+ // packages/docs/src/index.ts
2
+ export * from "./types.js";
3
+ export * from "./navigation/index.js";
4
+ export * from "./config.js";
5
+ export * from "./core/content-scanner.js";
6
+ export * from "./core/route-tree.js";
7
+ export * from "./mdx/compiler.js";
8
+ export * from "./mdx/highlighter.js";
9
+ export * from "./components/mdx-components.js";
10
+ export * from "./themes/index.js";
11
+ export * from "./server/index.js";
12
+ import { nikalaDocsPlugin } from "./server/plugin.js";
13
+ export const nikalaDocs = nikalaDocsPlugin;
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type ClassValue } from "clsx";
2
+ /**
3
+ * Combines multiple class names and resolves Tailwind CSS conflicts.
4
+ */
5
+ export declare function cn(...inputs: ClassValue[]): any;
6
+ //# sourceMappingURL=cn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../src/lib/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAG7C;;GAEG;AACH,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,OAEzC"}
package/dist/lib/cn.js ADDED
@@ -0,0 +1,9 @@
1
+ import { clsx } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+ /**
4
+ * Combines multiple class names and resolves Tailwind CSS conflicts.
5
+ */
6
+ export function cn(...inputs) {
7
+ return twMerge(clsx(inputs));
8
+ }
9
+ //# sourceMappingURL=cn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cn.js","sourceRoot":"","sources":["../../src/lib/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { Frontmatter, TocItem } from "../types.js";
2
+ export interface CompileMdxResult {
3
+ code: string;
4
+ frontmatter: Frontmatter;
5
+ toc: TocItem[];
6
+ }
7
+ export interface CompileMdxOptions {
8
+ filePath?: string;
9
+ development?: boolean;
10
+ shiki?: import("../types.js").ShikiConfig;
11
+ }
12
+ export declare function compileMdx(rawContent: string, options?: CompileMdxOptions): Promise<CompileMdxResult>;
13
+ //# sourceMappingURL=compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/mdx/compiler.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGxD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,GAAG,EAAE,OAAO,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,aAAa,EAAE,WAAW,CAAC;CAC3C;AAED,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CA8B3B"}
@@ -0,0 +1,38 @@
1
+ // packages/docs/src/mdx/compiler.ts
2
+ import { compile } from "@mdx-js/mdx";
3
+ import matter from "gray-matter";
4
+ import rehypeAutolinkHeadings from "rehype-autolink-headings";
5
+ import rehypeSlug from "rehype-slug";
6
+ import remarkGfm from "remark-gfm";
7
+ import { extractToc } from "../core/content-scanner.js";
8
+ import { rehypeShiki } from "./rehype-shiki.js";
9
+ export async function compileMdx(rawContent, options = {}) {
10
+ const parsed = matter(rawContent);
11
+ const frontmatter = (parsed.data || {});
12
+ const toc = extractToc(parsed.content);
13
+ const compiled = await compile(parsed.content, {
14
+ jsx: true,
15
+ jsxImportSource: "solid-js",
16
+ development: options.development ?? false,
17
+ remarkPlugins: [remarkGfm],
18
+ rehypePlugins: [
19
+ rehypeSlug,
20
+ [
21
+ rehypeAutolinkHeadings,
22
+ {
23
+ behavior: "wrap",
24
+ properties: {
25
+ className: ["heading-anchor"],
26
+ },
27
+ },
28
+ ],
29
+ [rehypeShiki, options.shiki],
30
+ ],
31
+ });
32
+ return {
33
+ code: String(compiled),
34
+ frontmatter,
35
+ toc,
36
+ };
37
+ }
38
+ //# sourceMappingURL=compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/mdx/compiler.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAchD,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,UAAkB,EAClB,UAA6B,EAAE;IAE/B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAgB,CAAC;IACvD,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;QAC7C,GAAG,EAAE,IAAI;QACT,eAAe,EAAE,UAAU;QAC3B,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;QACzC,aAAa,EAAE,CAAC,SAAS,CAAC;QAC1B,aAAa,EAAE;YACb,UAAU;YACV;gBACE,sBAAsB;gBACtB;oBACE,QAAQ,EAAE,MAAM;oBAChB,UAAU,EAAE;wBACV,SAAS,EAAE,CAAC,gBAAgB,CAAC;qBAC9B;iBACF;aACF;YACD,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC;SAC7B;KACF,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC;QACtB,WAAW;QACX,GAAG;KACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { type Highlighter } from "shiki";
2
+ import type { ShikiConfig } from "../types.js";
3
+ export declare function configureDocsHighlighter(config: ShikiConfig): void;
4
+ export declare function getDocsHighlighter(config?: ShikiConfig): Promise<Highlighter>;
5
+ /**
6
+ * Ensures a language is loaded in Shiki on-demand.
7
+ * If the language is bundled in Shiki, loads it dynamically.
8
+ * Returns the resolved language identifier or "text" as fallback.
9
+ */
10
+ export declare function ensureLanguage(highlighter: Highlighter, rawLang: string): Promise<string>;
11
+ /**
12
+ * Ensures a theme is loaded in Shiki on-demand.
13
+ */
14
+ export declare function ensureTheme(highlighter: Highlighter, themeName: string): Promise<string>;
15
+ export interface HighlightOptions {
16
+ lang?: string;
17
+ filename?: string;
18
+ themeLight?: string;
19
+ themeDark?: string;
20
+ }
21
+ export declare function highlightCode(code: string, options?: HighlightOptions): Promise<string>;
22
+ //# sourceMappingURL=highlighter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlighter.d.ts","sourceRoot":"","sources":["../../src/mdx/highlighter.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAiC/C,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAGlE;AAED,wBAAsB,kBAAkB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAenF;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB/F;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgB9F;AA8BD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBjG"}
@@ -0,0 +1,139 @@
1
+ // packages/docs/src/mdx/highlighter.ts
2
+ import { createHighlighter, bundledLanguages, bundledThemes, } from "shiki";
3
+ let highlighterPromise = null;
4
+ let activeShikiConfig = null;
5
+ const DEFAULT_BASE_LANGS = [
6
+ "typescript",
7
+ "javascript",
8
+ "tsx",
9
+ "jsx",
10
+ "bash",
11
+ "json",
12
+ "css",
13
+ "html",
14
+ "markdown",
15
+ "mdx",
16
+ "rust",
17
+ "c",
18
+ "cpp",
19
+ "python",
20
+ "go",
21
+ "yaml",
22
+ "toml",
23
+ "sql",
24
+ "mermaid",
25
+ "diff",
26
+ "dockerfile",
27
+ "zig",
28
+ ];
29
+ const DEFAULT_LIGHT_THEME = "github-light";
30
+ const DEFAULT_DARK_THEME = "github-dark";
31
+ export function configureDocsHighlighter(config) {
32
+ activeShikiConfig = config;
33
+ highlighterPromise = null; // Re-initialize with new configuration
34
+ }
35
+ export async function getDocsHighlighter(config) {
36
+ const currentConfig = config || activeShikiConfig;
37
+ if (!highlighterPromise) {
38
+ const lightTheme = currentConfig?.themes?.light || DEFAULT_LIGHT_THEME;
39
+ const darkTheme = currentConfig?.themes?.dark || DEFAULT_DARK_THEME;
40
+ const initialLangs = currentConfig?.langs || DEFAULT_BASE_LANGS;
41
+ highlighterPromise = createHighlighter({
42
+ themes: [lightTheme, darkTheme],
43
+ langs: initialLangs,
44
+ });
45
+ }
46
+ return highlighterPromise;
47
+ }
48
+ /**
49
+ * Ensures a language is loaded in Shiki on-demand.
50
+ * If the language is bundled in Shiki, loads it dynamically.
51
+ * Returns the resolved language identifier or "text" as fallback.
52
+ */
53
+ export async function ensureLanguage(highlighter, rawLang) {
54
+ const normalized = normalizeLangAlias(rawLang);
55
+ if (!normalized || normalized === "text" || normalized === "txt" || normalized === "plain") {
56
+ return "text";
57
+ }
58
+ const loaded = highlighter.getLoadedLanguages();
59
+ if (loaded.includes(normalized)) {
60
+ return normalized;
61
+ }
62
+ // Check if it's available in Shiki's bundled languages
63
+ if (normalized in bundledLanguages) {
64
+ try {
65
+ await highlighter.loadLanguage(normalized);
66
+ return normalized;
67
+ }
68
+ catch (err) {
69
+ console.warn(`[nikala-docs] Failed to dynamically load Shiki language "${normalized}":`, err);
70
+ }
71
+ }
72
+ return "text";
73
+ }
74
+ /**
75
+ * Ensures a theme is loaded in Shiki on-demand.
76
+ */
77
+ export async function ensureTheme(highlighter, themeName) {
78
+ const loaded = highlighter.getLoadedThemes();
79
+ if (loaded.includes(themeName)) {
80
+ return themeName;
81
+ }
82
+ if (themeName in bundledThemes) {
83
+ try {
84
+ await highlighter.loadTheme(themeName);
85
+ return themeName;
86
+ }
87
+ catch (err) {
88
+ console.warn(`[nikala-docs] Failed to dynamically load Shiki theme "${themeName}":`, err);
89
+ }
90
+ }
91
+ return DEFAULT_DARK_THEME;
92
+ }
93
+ function normalizeLangAlias(lang) {
94
+ const l = lang.toLowerCase().trim();
95
+ switch (l) {
96
+ case "shell":
97
+ case "sh":
98
+ case "zsh":
99
+ return "bash";
100
+ case "js":
101
+ return "javascript";
102
+ case "ts":
103
+ return "typescript";
104
+ case "py":
105
+ return "python";
106
+ case "rs":
107
+ return "rust";
108
+ case "yml":
109
+ return "yaml";
110
+ case "md":
111
+ return "markdown";
112
+ case "rb":
113
+ return "ruby";
114
+ case "cs":
115
+ return "csharp";
116
+ default:
117
+ return l;
118
+ }
119
+ }
120
+ export async function highlightCode(code, options = {}) {
121
+ const highlighter = await getDocsHighlighter();
122
+ const rawLang = options.lang || "text";
123
+ const targetLang = await ensureLanguage(highlighter, rawLang);
124
+ const themeLight = options.themeLight
125
+ ? await ensureTheme(highlighter, options.themeLight)
126
+ : activeShikiConfig?.themes?.light || DEFAULT_LIGHT_THEME;
127
+ const themeDark = options.themeDark
128
+ ? await ensureTheme(highlighter, options.themeDark)
129
+ : activeShikiConfig?.themes?.dark || DEFAULT_DARK_THEME;
130
+ return highlighter.codeToHtml(code.trimEnd(), {
131
+ lang: targetLang,
132
+ themes: {
133
+ light: themeLight,
134
+ dark: themeDark,
135
+ },
136
+ defaultColor: false,
137
+ });
138
+ }
139
+ //# sourceMappingURL=highlighter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlighter.js","sourceRoot":"","sources":["../../src/mdx/highlighter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ShikiConfig } from "../types.js";
2
+ export declare function rehypeShiki(config?: ShikiConfig): (tree: any) => Promise<void>;
3
+ //# sourceMappingURL=rehype-shiki.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehype-shiki.d.ts","sourceRoot":"","sources":["../../src/mdx/rehype-shiki.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,IAChC,MAAM,GAAG,mBAkGxB"}
@@ -0,0 +1,83 @@
1
+ import { ensureLanguage, ensureTheme, getDocsHighlighter } from "./highlighter.js";
2
+ export function rehypeShiki(config) {
3
+ return async (tree) => {
4
+ const highlighter = await getDocsHighlighter(config);
5
+ const lightTheme = config?.themes?.light
6
+ ? await ensureTheme(highlighter, config.themes.light)
7
+ : "github-light";
8
+ const darkTheme = config?.themes?.dark
9
+ ? await ensureTheme(highlighter, config.themes.dark)
10
+ : "github-dark";
11
+ const tasks = [];
12
+ function visit(node, parent, index) {
13
+ if (node && node.type === "element" && node.tagName === "pre") {
14
+ const codeNode = node.children?.find((child) => child.type === "element" && child.tagName === "code");
15
+ if (codeNode) {
16
+ const className = codeNode.properties?.className || [];
17
+ const langClass = className.find((c) => c.startsWith("language-"));
18
+ const rawLang = langClass ? langClass.replace("language-", "") : "text";
19
+ // Extract text content from code children
20
+ let codeText = "";
21
+ for (const child of codeNode.children || []) {
22
+ if (child.type === "text") {
23
+ codeText += child.value;
24
+ }
25
+ }
26
+ tasks.push((async () => {
27
+ try {
28
+ // Dynamically ensure language is loaded on-demand
29
+ const targetLang = await ensureLanguage(highlighter, rawLang);
30
+ const hast = highlighter.codeToHast(codeText.trimEnd(), {
31
+ lang: targetLang,
32
+ themes: {
33
+ light: lightTheme,
34
+ dark: darkTheme,
35
+ },
36
+ defaultColor: false,
37
+ });
38
+ if (hast.children?.[0] && parent && typeof index === "number") {
39
+ const highlightedPre = hast.children[0];
40
+ // Preserve or merge existing classes
41
+ const existingClass = highlightedPre.properties?.className || [];
42
+ highlightedPre.properties = highlightedPre.properties || {};
43
+ highlightedPre.properties.className = [
44
+ ...existingClass,
45
+ "nikala-code-block",
46
+ "font-mono",
47
+ "text-xs",
48
+ ];
49
+ // Store raw code in data attribute for copy actions
50
+ highlightedPre.properties["data-code"] = codeText.trimEnd();
51
+ highlightedPre.properties["data-lang"] = targetLang;
52
+ // Add class to code element so MdxCode knows it is inside pre
53
+ const codeEl = highlightedPre.children?.find((child) => child.type === "element" && child.tagName === "code");
54
+ if (codeEl) {
55
+ const codeClass = codeEl.properties?.className || [];
56
+ codeEl.properties = codeEl.properties || {};
57
+ codeEl.properties.className = [
58
+ ...codeClass,
59
+ "shiki-code",
60
+ `language-${targetLang}`,
61
+ ];
62
+ }
63
+ parent.children[index] = highlightedPre;
64
+ }
65
+ }
66
+ catch (err) {
67
+ // Fallback to unhighlighted code on error
68
+ console.warn(`[nikala-docs] Shiki highlighting failed for lang: ${rawLang}`, err);
69
+ }
70
+ })());
71
+ }
72
+ }
73
+ if (node.children && Array.isArray(node.children)) {
74
+ for (let i = 0; i < node.children.length; i++) {
75
+ visit(node.children[i], node, i);
76
+ }
77
+ }
78
+ }
79
+ visit(tree, null, -1);
80
+ await Promise.all(tasks);
81
+ };
82
+ }
83
+ //# sourceMappingURL=rehype-shiki.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehype-shiki.js","sourceRoot":"","sources":["../../src/mdx/rehype-shiki.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./sidebar-state.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./sidebar-state.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { SidebarItem } from "../types.js";
2
+ export declare function isSidebarItemActive(item: SidebarItem, currentUrl?: string): boolean;
3
+ export declare function containsActiveSidebarItem(item: SidebarItem, currentUrl?: string): boolean;
4
+ export declare function isSidebarItemNew(item: SidebarItem): boolean;
5
+ export declare function containsNewSidebarItem(item: SidebarItem): boolean;
6
+ //# sourceMappingURL=sidebar-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-state.d.ts","sourceRoot":"","sources":["../../src/navigation/sidebar-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAEnF;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAGzF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAM3D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAEjE"}
@@ -0,0 +1,20 @@
1
+ export function isSidebarItemActive(item, currentUrl) {
2
+ return Boolean(item.href && currentUrl && item.href === currentUrl);
3
+ }
4
+ export function containsActiveSidebarItem(item, currentUrl) {
5
+ return isSidebarItemActive(item, currentUrl)
6
+ || Boolean(item.items?.some((child) => containsActiveSidebarItem(child, currentUrl)));
7
+ }
8
+ export function isSidebarItemNew(item) {
9
+ if (!item.addedAt)
10
+ return false;
11
+ const timestamp = new Date(item.addedAt).getTime();
12
+ if (!Number.isFinite(timestamp))
13
+ return false;
14
+ const ageInDays = (Date.now() - timestamp) / (1000 * 60 * 60 * 24);
15
+ return ageInDays >= 0 && ageInDays <= 14;
16
+ }
17
+ export function containsNewSidebarItem(item) {
18
+ return isSidebarItemNew(item) || Boolean(item.items?.some(containsNewSidebarItem));
19
+ }
20
+ //# sourceMappingURL=sidebar-state.js.map