@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,226 @@
1
+ import {
2
+ createSignal,
3
+ createMemo,
4
+ splitProps,
5
+ For,
6
+ Show,
7
+ type JSX,
8
+ type ParentComponent,
9
+ } from "solid-js";
10
+ import { Check, Copy } from "lucide-solid";
11
+ import { Button } from "@/components/ui/button";
12
+ import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
13
+ import { Tooltip, TooltipTrigger, TooltipContent } from "@/components/ui/tooltip";
14
+ import { createClipboard } from "@/hooks/create-clipboard";
15
+ import { cn } from "@/lib/cn";
16
+
17
+ export type DefaultPackageManager = "bun" | "pnpm" | "npm" | "yarn" | "bunx" | "npx" | "deno";
18
+
19
+ export interface PackageManagerTabsProps
20
+ extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "onChange"> {
21
+ /** List of package managers to show in the switcher tabs */
22
+ managers?: string[];
23
+ /** Single CLI command template (e.g. "add @nikala-ui/core", "create @nikala-ui/docs my-app") */
24
+ command?: string;
25
+ /** Explicit map of custom commands per manager (e.g. { bun: "bun add foo", npm: "npm i foo" }) */
26
+ commands?: Record<string, string>;
27
+ /** Selected manager (controlled) */
28
+ value?: string;
29
+ /** Initial selected manager (uncontrolled) */
30
+ defaultValue?: string;
31
+ /** Callback fired when the active package manager changes */
32
+ onChange?: (manager: string) => void;
33
+ /** Whether to show the copy button in the header */
34
+ copyable?: boolean;
35
+ class?: string;
36
+ }
37
+
38
+ /**
39
+ * Automatically formats a command string for a specific package manager.
40
+ */
41
+ function resolvePmCommand(manager: string, command: string): string {
42
+ const trimmed = command.trim();
43
+ const pm = manager.toLowerCase();
44
+
45
+ // 1. "create" command
46
+ const createMatch = trimmed.match(/^(?:bun|npm|npx|pnpm|yarn|deno)?\s*create\s+(.*)$/);
47
+ if (createMatch) {
48
+ const args = createMatch[1];
49
+ if (pm === "bun" || pm === "bunx") return `bun create ${args}`;
50
+ if (pm === "pnpm") return `pnpm create ${args}`;
51
+ if (pm === "yarn") return `yarn create ${args}`;
52
+ if (pm === "deno") return `deno run -A npm:create-${args}`;
53
+ return `npm create ${args}`;
54
+ }
55
+
56
+ // 2. "add" / "install" command
57
+ const addMatch = trimmed.match(/^(?:bun\s+add|npm\s+i|npm\s+install|pnpm\s+add|yarn\s+add|deno\s+add|add|install|i)\s+(.*)$/);
58
+ if (addMatch) {
59
+ const args = addMatch[1];
60
+ if (pm === "npm") return `npm i ${args}`;
61
+ if (pm === "pnpm") return `pnpm add ${args}`;
62
+ if (pm === "yarn") return `yarn add ${args}`;
63
+ if (pm === "deno") return `deno add ${args}`;
64
+ return `bun add ${args}`;
65
+ }
66
+
67
+ // 3. CLI runner (e.g. "nikala add button" or "@nikala-ui/cli add button")
68
+ const runnerMatch = trimmed.match(/^(?:bunx|npx|pnpm\s+dlx|yarn\s+dlx)?\s*(.*)$/);
69
+ if (runnerMatch) {
70
+ const rest = runnerMatch[1];
71
+ if (pm === "npx") return `npx ${rest}`;
72
+ if (pm === "pnpm") return `pnpm dlx ${rest}`;
73
+ if (pm === "yarn") return `yarn dlx ${rest}`;
74
+ if (pm === "bun" || pm === "bunx") return `bunx ${rest}`;
75
+ return `${pm} ${rest}`;
76
+ }
77
+
78
+ return trimmed;
79
+ }
80
+
81
+ function highlightCliCommandText(code: string): string {
82
+ const trimmed = code.trim();
83
+ if (!trimmed) return "";
84
+ const parts = trimmed.split(/\s+/);
85
+
86
+ let pkgIndex = 1;
87
+ if ((parts[0] === "pnpm" || parts[0] === "yarn") && parts[1] === "dlx") {
88
+ pkgIndex = 2;
89
+ } else if (parts[0] === "bun" && (parts[1] === "create" || parts[1] === "add" || parts[1] === "run")) {
90
+ pkgIndex = 2;
91
+ } else if (parts[0] === "npm" && (parts[1] === "create" || parts[1] === "run")) {
92
+ pkgIndex = 2;
93
+ }
94
+
95
+ const mainPart = parts.slice(0, pkgIndex).join(" ");
96
+ const restTokens = parts.slice(pkgIndex);
97
+
98
+ const highlightedRest = restTokens
99
+ .map((token) => {
100
+ if (token.startsWith("-")) {
101
+ return `<span class="text-amber-500 dark:text-amber-400 font-medium">${token}</span>`;
102
+ }
103
+ if (["add", "create", "init", "run", "dev", "build", "set", "theme", "diff", "list"].includes(token)) {
104
+ return `<span class="text-sky-500 dark:text-sky-400 font-semibold">${token}</span>`;
105
+ }
106
+ return `<span class="text-violet-500 dark:text-violet-400 font-medium">${token}</span>`;
107
+ })
108
+ .join(" ");
109
+
110
+ return `<span class="text-emerald-500 dark:text-emerald-400 font-semibold">${mainPart}</span>${
111
+ highlightedRest ? " " + highlightedRest : ""
112
+ }`;
113
+ }
114
+
115
+ export const PackageManagerTabs: ParentComponent<PackageManagerTabsProps> = (props) => {
116
+ const [local, rest] = splitProps(props, [
117
+ "managers",
118
+ "command",
119
+ "commands",
120
+ "value",
121
+ "defaultValue",
122
+ "onChange",
123
+ "copyable",
124
+ "class",
125
+ ]);
126
+
127
+ const defaultManagers = ["bun", "pnpm", "npm", "yarn"];
128
+ const managersList = () => local.managers || defaultManagers;
129
+
130
+ const [internalActive, setInternalActive] = createSignal(
131
+ local.defaultValue || managersList()[0] || "bun"
132
+ );
133
+
134
+ const activeManager = () => local.value ?? internalActive();
135
+
136
+ const handleSelect = (pm: string) => {
137
+ if (local.value === undefined) {
138
+ setInternalActive(pm);
139
+ }
140
+ local.onChange?.(pm);
141
+ };
142
+
143
+ const currentCommand = createMemo(() => {
144
+ const pm = activeManager();
145
+ if (local.commands && local.commands[pm]) {
146
+ return local.commands[pm];
147
+ }
148
+ if (local.command) {
149
+ return resolvePmCommand(pm, local.command);
150
+ }
151
+ return "";
152
+ });
153
+
154
+ const clipboard = createClipboard();
155
+ const copyable = () => local.copyable ?? true;
156
+
157
+ const handleCopy = async () => {
158
+ const text = currentCommand();
159
+ if (!text) return;
160
+ await clipboard.copy(text);
161
+ };
162
+
163
+ return (
164
+ <div
165
+ class={cn(
166
+ "group relative my-4 w-full overflow-hidden rounded-lg border border-border bg-muted/40 font-mono text-sm shadow-2xs",
167
+ local.class
168
+ )}
169
+ {...rest}
170
+ >
171
+ {/* Header with Manager Switcher Tabs and Copy Button */}
172
+ <div class="flex h-9 items-center justify-between border-b border-border/70 bg-muted/70 px-3.5 select-none">
173
+ {/* Switcher Tabs */}
174
+ <Tabs
175
+ value={activeManager()}
176
+ onChange={handleSelect}
177
+ class="w-auto flex-none"
178
+ >
179
+ <TabsList class="w-auto inline-flex h-auto bg-background/60 p-0.5 border border-border/50 gap-0.5 rounded-md font-mono">
180
+ <For each={managersList()}>
181
+ {(pm) => (
182
+ <TabsTrigger
183
+ value={pm}
184
+ class="rounded-xs px-2 py-0.5 text-[11px] font-mono transition-colors cursor-pointer data-[state=active]:bg-primary data-[state=active]:text-primary-foreground data-[state=active]:font-semibold data-[state=active]:shadow-2xs"
185
+ >
186
+ {pm}
187
+ </TabsTrigger>
188
+ )}
189
+ </For>
190
+ </TabsList>
191
+ </Tabs>
192
+
193
+ {/* Copy Button */}
194
+ <Show when={copyable() && currentCommand()}>
195
+ <Tooltip>
196
+ <TooltipTrigger
197
+ as={Button}
198
+ variant="ghost"
199
+ size="icon"
200
+ onClick={handleCopy}
201
+ aria-label={clipboard.copied() ? "Copied command" : "Copy command"}
202
+ class="size-6 p-0 rounded-xs text-muted-foreground hover:bg-background hover:text-foreground cursor-pointer"
203
+ >
204
+ <Show when={clipboard.copied()} fallback={<Copy class="size-3.5" />}>
205
+ <Check class="size-3.5 text-emerald-500 dark:text-emerald-400" />
206
+ </Show>
207
+ </TooltipTrigger>
208
+ <TooltipContent class="text-[10px] py-1 px-2">
209
+ {clipboard.copied() ? "Copied!" : "Copy command"}
210
+ </TooltipContent>
211
+ </Tooltip>
212
+ </Show>
213
+ </div>
214
+
215
+ {/* Command Box Content */}
216
+ <div class="overflow-x-auto p-4 text-[13px] leading-relaxed [scrollbar-width:thin]">
217
+ <pre class="font-mono">
218
+ <code>
219
+ <span class="text-sky-500 dark:text-sky-400 font-semibold select-none">$ </span>
220
+ <span innerHTML={highlightCliCommandText(currentCommand())} />
221
+ </code>
222
+ </pre>
223
+ </div>
224
+ </div>
225
+ );
226
+ };
@@ -0,0 +1,102 @@
1
+ import { splitProps, Show, children, type Component, type JSX } from "solid-js";
2
+ import { ChevronLeft, ChevronRight } from "lucide-solid";
3
+ import {
4
+ Card,
5
+ CardHeader,
6
+ CardTitle,
7
+ CardDescription,
8
+ } from "@/components/ui/card";
9
+ import { cn } from "@/lib/cn";
10
+
11
+ export interface PagerItem {
12
+ title: string;
13
+ href: string;
14
+ }
15
+
16
+ export interface PagerLinkProps extends JSX.AnchorHTMLAttributes<HTMLAnchorElement> {
17
+ title: string;
18
+ href: string;
19
+ type: "prev" | "next";
20
+ class?: string;
21
+ }
22
+
23
+ /**
24
+ * Individual Next or Previous page navigation card.
25
+ */
26
+ export const PagerLink: Component<PagerLinkProps> = (props) => {
27
+ const [local, rest] = splitProps(props, ["title", "href", "type", "class"]);
28
+
29
+ const isNext = () => local.type === "next";
30
+
31
+ return (
32
+ <a
33
+ href={local.href}
34
+ class={cn(
35
+ "group block rounded-lg transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
36
+ isNext() && "sm:col-start-2",
37
+ local.class
38
+ )}
39
+ {...rest}
40
+ >
41
+ <Card class="h-full transition-all group-hover:bg-accent/40 group-hover:shadow-2xs">
42
+ <CardHeader class={cn("p-4 flex flex-col space-y-1.5", isNext() && "items-end text-right")}>
43
+ <CardDescription class="flex items-center gap-1 text-xs font-medium text-muted-foreground">
44
+ <Show when={!isNext()}>
45
+ <ChevronLeft class="size-3.5 transition-transform group-hover:-translate-x-0.5" />
46
+ <span>Previous</span>
47
+ </Show>
48
+ <Show when={isNext()}>
49
+ <span>Next</span>
50
+ <ChevronRight class="size-3.5 transition-transform group-hover:translate-x-0.5" />
51
+ </Show>
52
+ </CardDescription>
53
+ <CardTitle class="text-sm font-semibold tracking-tight group-hover:text-primary transition-colors line-clamp-1">
54
+ {local.title}
55
+ </CardTitle>
56
+ </CardHeader>
57
+ </Card>
58
+ </a>
59
+ );
60
+ };
61
+
62
+ export interface PagerProps extends JSX.HTMLAttributes<HTMLDivElement> {
63
+ /** Previous documentation page item */
64
+ prev?: PagerItem | null;
65
+ /** Next documentation page item */
66
+ next?: PagerItem | null;
67
+ class?: string;
68
+ }
69
+
70
+ /**
71
+ * Documentation Next / Previous article navigation block composed of Nikala UI Card primitives.
72
+ */
73
+ export const Pager: Component<PagerProps> = (props) => {
74
+ const [local, rest] = splitProps(props, ["prev", "next", "class", "children"]);
75
+ const resolved = children(() => local.children);
76
+
77
+ return (
78
+ <div
79
+ class={cn("grid grid-cols-1 gap-4 sm:grid-cols-2 mt-10 pt-6 border-t border-border", local.class)}
80
+ {...rest}
81
+ >
82
+ <Show
83
+ when={resolved()}
84
+ fallback={
85
+ <>
86
+ <Show
87
+ when={local.prev}
88
+ fallback={<span class="hidden sm:block" />}
89
+ >
90
+ <PagerLink type="prev" title={local.prev!.title} href={local.prev!.href} />
91
+ </Show>
92
+ <Show when={local.next}>
93
+ <PagerLink type="next" title={local.next!.title} href={local.next!.href} />
94
+ </Show>
95
+ </>
96
+ }
97
+ >
98
+ {resolved()}
99
+ </Show>
100
+ </div>
101
+ );
102
+ };
@@ -0,0 +1,258 @@
1
+ import { splitProps, type Component, type JSX, type ParentComponent, Show } from "solid-js";
2
+ import { cva, type VariantProps } from "class-variance-authority";
3
+ import { cn } from "@/lib/cn";
4
+ import { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight, MoreHorizontal } from "lucide-solid";
5
+
6
+ /* --- 1. Button Variants for Pagination Links --- */
7
+ export const paginationButtonVariants = cva(
8
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 cursor-pointer select-none",
9
+ {
10
+ variants: {
11
+ variant: {
12
+ default: "hover:bg-accent hover:text-accent-foreground data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:font-bold data-[active=true]:shadow-2xs",
13
+ outline: "border border-border bg-background hover:bg-accent hover:text-accent-foreground data-[active=true]:border-primary data-[active=true]:bg-primary/10 data-[active=true]:text-primary data-[active=true]:font-bold",
14
+ ghost: "hover:bg-accent/80 hover:text-accent-foreground data-[active=true]:bg-accent data-[active=true]:text-foreground data-[active=true]:font-bold",
15
+ flat: "hover:bg-muted/80 data-[active=true]:bg-muted data-[active=true]:text-foreground data-[active=true]:font-bold",
16
+ },
17
+ size: {
18
+ default: "h-9 min-w-9 px-3 text-sm",
19
+ sm: "h-8 min-w-8 px-2 text-xs",
20
+ lg: "h-10 min-w-10 px-4 text-base",
21
+ icon: "h-9 w-9 p-0 text-sm",
22
+ },
23
+ },
24
+ defaultVariants: {
25
+ variant: "default",
26
+ size: "default",
27
+ },
28
+ }
29
+ );
30
+
31
+ /* --- 2. Pagination Root --- */
32
+ export interface PaginationProps extends JSX.HTMLAttributes<HTMLElement> {
33
+ class?: string;
34
+ }
35
+
36
+ export const Pagination: ParentComponent<PaginationProps> = (props) => {
37
+ const [local, rest] = splitProps(props, ["class", "children"]);
38
+
39
+ return (
40
+ <nav
41
+ role="navigation"
42
+ aria-label="pagination"
43
+ class={cn("mx-auto flex w-full justify-center", local.class)}
44
+ {...rest}
45
+ >
46
+ {local.children}
47
+ </nav>
48
+ );
49
+ };
50
+
51
+ /* --- 3. PaginationContent --- */
52
+ export interface PaginationContentProps extends JSX.HTMLAttributes<HTMLUListElement> {
53
+ class?: string;
54
+ }
55
+
56
+ export const PaginationContent: ParentComponent<PaginationContentProps> = (props) => {
57
+ const [local, rest] = splitProps(props, ["class", "children"]);
58
+
59
+ return (
60
+ <ul
61
+ class={cn("flex flex-row items-center gap-1 flex-wrap", local.class)}
62
+ {...rest}
63
+ >
64
+ {local.children}
65
+ </ul>
66
+ );
67
+ };
68
+
69
+ /* --- 4. PaginationItem --- */
70
+ export interface PaginationItemProps extends JSX.HTMLAttributes<HTMLLIElement> {
71
+ class?: string;
72
+ }
73
+
74
+ export const PaginationItem: ParentComponent<PaginationItemProps> = (props) => {
75
+ const [local, rest] = splitProps(props, ["class", "children"]);
76
+
77
+ return (
78
+ <li class={cn("", local.class)} {...rest}>
79
+ {local.children}
80
+ </li>
81
+ );
82
+ };
83
+
84
+ /* --- 5. PaginationLink --- */
85
+ export interface PaginationLinkProps
86
+ extends JSX.ButtonHTMLAttributes<HTMLButtonElement>,
87
+ VariantProps<typeof paginationButtonVariants> {
88
+ isActive?: boolean;
89
+ class?: string;
90
+ }
91
+
92
+ export const PaginationLink: ParentComponent<PaginationLinkProps> = (props) => {
93
+ const [local, rest] = splitProps(props, ["class", "variant", "size", "isActive", "children"]);
94
+
95
+ return (
96
+ <button
97
+ type="button"
98
+ aria-current={local.isActive ? "page" : undefined}
99
+ data-active={local.isActive ? "true" : "false"}
100
+ class={cn(
101
+ paginationButtonVariants({
102
+ variant: local.variant,
103
+ size: local.size,
104
+ }),
105
+ local.class
106
+ )}
107
+ {...rest}
108
+ >
109
+ {local.children}
110
+ </button>
111
+ );
112
+ };
113
+
114
+ /* --- 6. PaginationPrevious --- */
115
+ export interface PaginationPreviousProps
116
+ extends JSX.ButtonHTMLAttributes<HTMLButtonElement>,
117
+ VariantProps<typeof paginationButtonVariants> {
118
+ class?: string;
119
+ hideText?: boolean;
120
+ }
121
+
122
+ export const PaginationPrevious: Component<PaginationPreviousProps> = (props) => {
123
+ const [local, rest] = splitProps(props, ["class", "variant", "size", "hideText"]);
124
+
125
+ return (
126
+ <PaginationLink
127
+ aria-label="Go to previous page"
128
+ variant={local.variant}
129
+ size={local.size}
130
+ class={cn("gap-1 pl-2.5", local.hideText && "p-0 min-w-8", local.class)}
131
+ {...rest}
132
+ >
133
+ <ChevronLeft class="size-4" />
134
+ <Show when={!local.hideText}>
135
+ <span>Previous</span>
136
+ </Show>
137
+ </PaginationLink>
138
+ );
139
+ };
140
+
141
+ /* --- 7. PaginationNext --- */
142
+ export interface PaginationNextProps
143
+ extends JSX.ButtonHTMLAttributes<HTMLButtonElement>,
144
+ VariantProps<typeof paginationButtonVariants> {
145
+ class?: string;
146
+ hideText?: boolean;
147
+ }
148
+
149
+ export const PaginationNext: Component<PaginationNextProps> = (props) => {
150
+ const [local, rest] = splitProps(props, ["class", "variant", "size", "hideText"]);
151
+
152
+ return (
153
+ <PaginationLink
154
+ aria-label="Go to next page"
155
+ variant={local.variant}
156
+ size={local.size}
157
+ class={cn("gap-1 pr-2.5", local.hideText && "p-0 min-w-8", local.class)}
158
+ {...rest}
159
+ >
160
+ <Show when={!local.hideText}>
161
+ <span>Next</span>
162
+ </Show>
163
+ <ChevronRight class="size-4" />
164
+ </PaginationLink>
165
+ );
166
+ };
167
+
168
+ /* --- 8. PaginationFirst --- */
169
+ export interface PaginationFirstProps
170
+ extends JSX.ButtonHTMLAttributes<HTMLButtonElement>,
171
+ VariantProps<typeof paginationButtonVariants> {
172
+ class?: string;
173
+ hideText?: boolean;
174
+ }
175
+
176
+ export const PaginationFirst: Component<PaginationFirstProps> = (props) => {
177
+ const [local, rest] = splitProps(props, ["class", "variant", "size", "hideText"]);
178
+
179
+ return (
180
+ <PaginationLink
181
+ aria-label="Go to first page"
182
+ variant={local.variant}
183
+ size={local.size}
184
+ class={cn("gap-1 p-0 min-w-8", local.class)}
185
+ {...rest}
186
+ >
187
+ <ChevronsLeft class="size-4" />
188
+ <Show when={!local.hideText}>
189
+ <span class="sr-only">First page</span>
190
+ </Show>
191
+ </PaginationLink>
192
+ );
193
+ };
194
+
195
+ /* --- 9. PaginationLast --- */
196
+ export interface PaginationLastProps
197
+ extends JSX.ButtonHTMLAttributes<HTMLButtonElement>,
198
+ VariantProps<typeof paginationButtonVariants> {
199
+ class?: string;
200
+ hideText?: boolean;
201
+ }
202
+
203
+ export const PaginationLast: Component<PaginationLastProps> = (props) => {
204
+ const [local, rest] = splitProps(props, ["class", "variant", "size", "hideText"]);
205
+
206
+ return (
207
+ <PaginationLink
208
+ aria-label="Go to last page"
209
+ variant={local.variant}
210
+ size={local.size}
211
+ class={cn("gap-1 p-0 min-w-8", local.class)}
212
+ {...rest}
213
+ >
214
+ <ChevronsRight class="size-4" />
215
+ <Show when={!local.hideText}>
216
+ <span class="sr-only">Last page</span>
217
+ </Show>
218
+ </PaginationLink>
219
+ );
220
+ };
221
+
222
+ /* --- 10. PaginationEllipsis --- */
223
+ export interface PaginationEllipsisProps extends JSX.HTMLAttributes<HTMLSpanElement> {
224
+ class?: string;
225
+ }
226
+
227
+ export const PaginationEllipsis: Component<PaginationEllipsisProps> = (props) => {
228
+ const [local, rest] = splitProps(props, ["class"]);
229
+
230
+ return (
231
+ <span
232
+ aria-hidden="true"
233
+ class={cn("flex h-9 w-9 items-center justify-center text-muted-foreground", local.class)}
234
+ {...rest}
235
+ >
236
+ <MoreHorizontal class="size-4" />
237
+ <span class="sr-only">More pages</span>
238
+ </span>
239
+ );
240
+ };
241
+
242
+ /* --- 11. PaginationSummary --- */
243
+ export interface PaginationSummaryProps extends JSX.HTMLAttributes<HTMLDivElement> {
244
+ class?: string;
245
+ }
246
+
247
+ export const PaginationSummary: ParentComponent<PaginationSummaryProps> = (props) => {
248
+ const [local, rest] = splitProps(props, ["class", "children"]);
249
+
250
+ return (
251
+ <div
252
+ class={cn("text-xs text-muted-foreground font-mono select-none", local.class)}
253
+ {...rest}
254
+ >
255
+ {local.children}
256
+ </div>
257
+ );
258
+ };