@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,142 @@
1
+ import {
2
+ splitProps,
3
+ type Component,
4
+ type JSX,
5
+ type ParentComponent,
6
+ useContext,
7
+ } from "solid-js";
8
+ import { cva, type VariantProps } from "class-variance-authority";
9
+ import { cn } from "@/lib/cn";
10
+
11
+ /* --- 1. Bubble Variants --- */
12
+ export const bubbleVariants = cva(
13
+ "relative max-w-full rounded-lg transition-colors break-words text-left select-text",
14
+ {
15
+ variants: {
16
+ variant: {
17
+ default: "bg-primary text-primary-foreground shadow-2xs",
18
+ muted: "bg-muted text-foreground border border-border/50 shadow-2xs",
19
+ outline: "border border-border bg-background text-foreground shadow-2xs",
20
+ ghost: "bg-transparent text-foreground",
21
+ },
22
+ size: {
23
+ sm: "px-3 py-1.5 text-xs",
24
+ default: "px-4 py-2.5 text-sm",
25
+ lg: "px-5 py-3 text-base",
26
+ },
27
+ },
28
+ defaultVariants: {
29
+ variant: "default",
30
+ size: "default",
31
+ },
32
+ }
33
+ );
34
+
35
+ /* --- 2. BubbleGroup --- */
36
+ export interface BubbleGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {
37
+ class?: string;
38
+ }
39
+
40
+ export const BubbleGroup: ParentComponent<BubbleGroupProps> = (props) => {
41
+ const [local, rest] = splitProps(props, ["class", "children"]);
42
+
43
+ return (
44
+ <div
45
+ class={cn("flex flex-col gap-1 w-full", local.class)}
46
+ {...rest}
47
+ >
48
+ {local.children}
49
+ </div>
50
+ );
51
+ };
52
+
53
+ /* --- 3. Bubble --- */
54
+ export interface BubbleProps
55
+ extends JSX.HTMLAttributes<HTMLDivElement>,
56
+ VariantProps<typeof bubbleVariants> {
57
+ class?: string;
58
+ }
59
+
60
+ export const Bubble: ParentComponent<BubbleProps> = (props) => {
61
+ const [local, rest] = splitProps(props, ["variant", "size", "class", "children"]);
62
+
63
+ return (
64
+ <div
65
+ class={cn(
66
+ bubbleVariants({
67
+ variant: local.variant,
68
+ size: local.size,
69
+ }),
70
+ local.class
71
+ )}
72
+ {...rest}
73
+ >
74
+ {local.children}
75
+ </div>
76
+ );
77
+ };
78
+
79
+ /* --- 4. BubbleContent --- */
80
+ export interface BubbleContentProps extends JSX.HTMLAttributes<HTMLDivElement> {
81
+ class?: string;
82
+ }
83
+
84
+ export const BubbleContent: ParentComponent<BubbleContentProps> = (props) => {
85
+ const [local, rest] = splitProps(props, ["class", "children"]);
86
+
87
+ return (
88
+ <div
89
+ class={cn("leading-relaxed", local.class)}
90
+ {...rest}
91
+ >
92
+ {local.children}
93
+ </div>
94
+ );
95
+ };
96
+
97
+ /* --- 5. BubbleReactions --- */
98
+ export interface BubbleReactionsProps extends JSX.HTMLAttributes<HTMLDivElement> {
99
+ class?: string;
100
+ }
101
+
102
+ export const BubbleReactions: ParentComponent<BubbleReactionsProps> = (props) => {
103
+ const [local, rest] = splitProps(props, ["class", "children"]);
104
+
105
+ return (
106
+ <div
107
+ class={cn("flex items-center gap-1.5 pt-2 mt-2 border-t border-border/30 z-10 flex-wrap", local.class)}
108
+ {...rest}
109
+ >
110
+ {local.children}
111
+ </div>
112
+ );
113
+ };
114
+
115
+ /* --- 6. BubbleReaction --- */
116
+ export interface BubbleReactionProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {
117
+ active?: boolean;
118
+ count?: number;
119
+ class?: string;
120
+ }
121
+
122
+ export const BubbleReaction: ParentComponent<BubbleReactionProps> = (props) => {
123
+ const [local, rest] = splitProps(props, ["active", "count", "class", "children"]);
124
+
125
+ return (
126
+ <button
127
+ type="button"
128
+ data-active={local.active ? "true" : "false"}
129
+ class={cn(
130
+ "inline-flex items-center gap-1.5 rounded-md border border-border/70 bg-background/80 px-2 py-1 text-xs text-foreground shadow-2xs transition-all hover:bg-accent hover:border-primary/40 cursor-pointer select-none",
131
+ local.active && "border-primary/40 bg-primary/10 text-primary font-medium",
132
+ local.class
133
+ )}
134
+ {...rest}
135
+ >
136
+ <span class="text-xs leading-none">{local.children}</span>
137
+ {local.count !== undefined && (
138
+ <span class="text-[11px] font-mono leading-none text-muted-foreground">{local.count}</span>
139
+ )}
140
+ </button>
141
+ );
142
+ };
@@ -0,0 +1,42 @@
1
+ import { splitProps, type Component, type JSX } from "solid-js";
2
+ import { cn } from "@/lib/cn";
3
+
4
+ export interface ButtonGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {
5
+ /** Controls whether grouped buttons are arranged in a row or column. */
6
+ orientation?: "horizontal" | "vertical";
7
+ class?: string;
8
+ }
9
+
10
+ /**
11
+ * Groups adjacent buttons into a connected control with shared borders and radii.
12
+ *
13
+ * ButtonGroup is intentionally presentational. Use Button for individual actions
14
+ * and compose the group with the same reactive state as the surrounding feature.
15
+ */
16
+ export const ButtonGroup: Component<ButtonGroupProps> = (props) => {
17
+ const [local, rest] = splitProps(props, [
18
+ "orientation",
19
+ "class",
20
+ "children",
21
+ ]);
22
+
23
+ const orientation = () => local.orientation ?? "horizontal";
24
+
25
+ return (
26
+ <div
27
+ role="group"
28
+ data-orientation={orientation()}
29
+ class={cn(
30
+ "isolate inline-flex",
31
+ orientation() === "horizontal"
32
+ ? "flex-row [&>button:not(:first-child)]:-ml-px [&>button:not(:first-child)]:rounded-l-none [&>button:not(:last-child)]:rounded-r-none"
33
+ : "flex-col [&>button:not(:first-child)]:-mt-px [&>button:not(:first-child)]:rounded-t-none [&>button:not(:last-child)]:rounded-b-none",
34
+ "[&>button:focus-visible]:z-10",
35
+ local.class
36
+ )}
37
+ {...rest}
38
+ >
39
+ {local.children}
40
+ </div>
41
+ );
42
+ };
@@ -0,0 +1,82 @@
1
+ import { Show, splitProps, type Component, type JSX } from "solid-js";
2
+ import { cva, type VariantProps } from "class-variance-authority";
3
+ import { cn } from "@/lib/cn";
4
+ import { Spinner } from "@/components/ui/spinner";
5
+
6
+ /**
7
+ * Class variance authority configuration for button styling variants and sizes.
8
+ */
9
+ export const buttonVariants = cva(
10
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer",
11
+ {
12
+ variants: {
13
+ variant: {
14
+ default:
15
+ "bg-primary text-primary-foreground shadow hover:bg-primary/90 border border-primary/50",
16
+ destructive:
17
+ "bg-red-600 text-zinc-50 shadow-sm hover:bg-red-600/90 dark:bg-red-900 dark:text-zinc-50 dark:hover:bg-red-900/90",
18
+ outline:
19
+ "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
20
+ secondary:
21
+ "bg-secondary text-secondary-foreground hover:bg-secondary/80 border border-border",
22
+ ghost:
23
+ "hover:bg-accent hover:text-accent-foreground",
24
+ link: "text-primary underline-offset-4 hover:underline",
25
+ success: "*:bg-green-600 text-zinc-50 shadow-sm hover:bg-green-600/90 dark:bg-green-900 dark:text-zinc-50 dark:hover:bg-green-900/90",
26
+ warning: "*:bg-yellow-600 text-zinc-50 shadow-sm hover:bg-yellow-600/90 dark:bg-yellow-900 dark:text-zinc-50 dark:hover:bg-yellow-900/90",
27
+ info: "*:bg-blue-600 text-zinc-50 shadow-sm hover:bg-blue-600/90 dark:bg-blue-900 dark:text-zinc-50 dark:hover:bg-blue-900/90",
28
+ },
29
+ size: {
30
+ xs: "h-6 rounded-md px-2 text-xs",
31
+ default: "h-9 px-4 py-2",
32
+ sm: "h-8 rounded-md px-3 text-xs",
33
+ lg: "h-10 rounded-md px-8",
34
+ icon: "h-9 w-9",
35
+ },
36
+ },
37
+ defaultVariants: {
38
+ variant: "default",
39
+ size: "default",
40
+ },
41
+ }
42
+ );
43
+
44
+ /**
45
+ * Props interface for the Button component extending standard HTML button attributes.
46
+ */
47
+ export interface ButtonProps
48
+ extends JSX.ButtonHTMLAttributes<HTMLButtonElement>,
49
+ VariantProps<typeof buttonVariants> {
50
+ /** Shows a loading spinner and prevents repeated clicks while active. */
51
+ loading?: boolean;
52
+ class?: string;
53
+ }
54
+
55
+ /**
56
+ * Nikala UI Button component built for SolidJS with Tailwind CSS v4 styling.
57
+ */
58
+ export const Button: Component<ButtonProps> = (props) => {
59
+ // Use splitProps to preserve SolidJS reactivity for destructured props
60
+ const [local, rest] = splitProps(props, [
61
+ "variant",
62
+ "size",
63
+ "class",
64
+ "children",
65
+ "loading",
66
+ "disabled",
67
+ ]);
68
+
69
+ return (
70
+ <button
71
+ class={cn(buttonVariants({ variant: local.variant, size: local.size }), local.class)}
72
+ disabled={local.disabled || local.loading}
73
+ aria-busy={local.loading ? "true" : undefined}
74
+ {...rest}
75
+ >
76
+ <Show when={local.loading}>
77
+ <Spinner size="sm" class="text-current" />
78
+ </Show>
79
+ {local.children}
80
+ </button>
81
+ );
82
+ };
@@ -0,0 +1,137 @@
1
+ import {
2
+ splitProps,
3
+ Show,
4
+ type Component,
5
+ type JSX,
6
+ type ParentComponent,
7
+ } from "solid-js";
8
+ import { Dynamic } from "solid-js/web";
9
+ import { cva, type VariantProps } from "class-variance-authority";
10
+ import {
11
+ Info,
12
+ Lightbulb,
13
+ AlertTriangle,
14
+ AlertCircle,
15
+ CheckCircle2,
16
+ Bookmark,
17
+ } from "lucide-solid";
18
+ import { cn } from "@/lib/cn";
19
+
20
+ export const calloutVariants = cva(
21
+ "relative w-full rounded-lg border p-4 text-sm leading-relaxed transition-colors",
22
+ {
23
+ variants: {
24
+ variant: {
25
+ note: "border-border/80 bg-muted/50 text-foreground [&>svg]:text-foreground",
26
+ info: "border-sky-500/30 bg-sky-500/10 text-sky-950 dark:text-sky-100 [&>svg]:text-sky-600 dark:[&>svg]:text-sky-400",
27
+ tip: "border-emerald-500/30 bg-emerald-500/10 text-emerald-950 dark:text-emerald-100 [&>svg]:text-emerald-600 dark:[&>svg]:text-emerald-400",
28
+ warning: "border-amber-500/30 bg-amber-500/10 text-amber-950 dark:text-amber-100 [&>svg]:text-amber-600 dark:[&>svg]:text-amber-400",
29
+ danger: "border-destructive/30 bg-destructive/10 text-destructive dark:text-red-200 [&>svg]:text-destructive",
30
+ success: "border-emerald-500/30 bg-emerald-500/10 text-emerald-950 dark:text-emerald-100 [&>svg]:text-emerald-600 dark:[&>svg]:text-emerald-400",
31
+ },
32
+ },
33
+ defaultVariants: {
34
+ variant: "note",
35
+ },
36
+ }
37
+ );
38
+
39
+ const defaultIcons = {
40
+ note: Bookmark,
41
+ info: Info,
42
+ tip: Lightbulb,
43
+ warning: AlertTriangle,
44
+ danger: AlertCircle,
45
+ success: CheckCircle2,
46
+ };
47
+
48
+ export interface CalloutProps
49
+ extends JSX.HTMLAttributes<HTMLDivElement>,
50
+ VariantProps<typeof calloutVariants> {
51
+ title?: string;
52
+ type?: VariantProps<typeof calloutVariants>["variant"];
53
+ icon?: Component<{ class?: string }> | false;
54
+ class?: string;
55
+ }
56
+
57
+ export const Callout: ParentComponent<CalloutProps> = (props) => {
58
+ const [local, rest] = splitProps(props, [
59
+ "variant",
60
+ "type",
61
+ "title",
62
+ "icon",
63
+ "class",
64
+ "children",
65
+ ]);
66
+
67
+ const variant = () => local.variant || local.type || "note";
68
+
69
+ const IconComponent = () => {
70
+ if (local.icon === false) return null;
71
+ if (local.icon) return local.icon;
72
+ return defaultIcons[variant()] || Info;
73
+ };
74
+
75
+ return (
76
+ <div
77
+ role="region"
78
+ aria-label={local.title || `${variant()} callout`}
79
+ class={cn(
80
+ calloutVariants({ variant: variant() }),
81
+ "flex gap-3.5 items-start",
82
+ local.class
83
+ )}
84
+ {...rest}
85
+ >
86
+ <Show when={IconComponent()}>
87
+ {(Icon) => (
88
+ <span class="inline-flex shrink-0 items-center justify-center mt-0.5 select-none">
89
+ <Dynamic component={Icon()} class="size-4.5 shrink-0" />
90
+ </span>
91
+ )}
92
+ </Show>
93
+ <div class="flex-1 space-y-1 min-w-0">
94
+ <Show when={local.title}>
95
+ <h5 class="font-semibold text-sm leading-none tracking-tight">
96
+ {local.title}
97
+ </h5>
98
+ </Show>
99
+ <div class="text-sm opacity-90 leading-relaxed break-words">
100
+ {local.children}
101
+ </div>
102
+ </div>
103
+ </div>
104
+ );
105
+ };
106
+
107
+ export interface CalloutTitleProps extends JSX.HTMLAttributes<HTMLHeadingElement> {
108
+ class?: string;
109
+ }
110
+
111
+ export const CalloutTitle: ParentComponent<CalloutTitleProps> = (props) => {
112
+ const [local, rest] = splitProps(props, ["class", "children"]);
113
+ return (
114
+ <h5
115
+ class={cn("font-semibold text-sm leading-none tracking-tight mb-1", local.class)}
116
+ {...rest}
117
+ >
118
+ {local.children}
119
+ </h5>
120
+ );
121
+ };
122
+
123
+ export interface CalloutDescriptionProps extends JSX.HTMLAttributes<HTMLParagraphElement> {
124
+ class?: string;
125
+ }
126
+
127
+ export const CalloutDescription: ParentComponent<CalloutDescriptionProps> = (props) => {
128
+ const [local, rest] = splitProps(props, ["class", "children"]);
129
+ return (
130
+ <div
131
+ class={cn("text-sm opacity-90 leading-relaxed", local.class)}
132
+ {...rest}
133
+ >
134
+ {local.children}
135
+ </div>
136
+ );
137
+ };
@@ -0,0 +1,113 @@
1
+ import { splitProps, type Component, type JSX } from "solid-js";
2
+ import { cn } from "@/lib/cn";
3
+
4
+ export interface CardProps extends JSX.HTMLAttributes<HTMLDivElement> {
5
+ class?: string;
6
+ }
7
+
8
+ /**
9
+ * Root Card container component.
10
+ */
11
+ export const Card: Component<CardProps> = (props) => {
12
+ const [local, rest] = splitProps(props, ["class"]);
13
+
14
+ return (
15
+ <div
16
+ class={cn(
17
+ "rounded-lg border border-border bg-card text-card-foreground shadow-sm",
18
+ local.class
19
+ )}
20
+ {...rest}
21
+ />
22
+ );
23
+ };
24
+
25
+ export interface CardHeaderProps extends JSX.HTMLAttributes<HTMLDivElement> {
26
+ class?: string;
27
+ }
28
+
29
+ /**
30
+ * Header wrapper for the Card component.
31
+ */
32
+ export const CardHeader: Component<CardHeaderProps> = (props) => {
33
+ const [local, rest] = splitProps(props, ["class"]);
34
+
35
+ return (
36
+ <div
37
+ class={cn("flex flex-col space-y-1.5 p-6", local.class)}
38
+ {...rest}
39
+ />
40
+ );
41
+ };
42
+
43
+ export interface CardTitleProps extends JSX.HTMLAttributes<HTMLHeadingElement> {
44
+ class?: string;
45
+ }
46
+
47
+ /**
48
+ * Main title heading for the Card header.
49
+ */
50
+ export const CardTitle: Component<CardTitleProps> = (props) => {
51
+ const [local, rest] = splitProps(props, ["class"]);
52
+
53
+ return (
54
+ <h3
55
+ class={cn("font-semibold leading-none tracking-tight text-lg", local.class)}
56
+ {...rest}
57
+ />
58
+ );
59
+ };
60
+
61
+ export interface CardDescriptionProps extends JSX.HTMLAttributes<HTMLParagraphElement> {
62
+ class?: string;
63
+ }
64
+
65
+ /**
66
+ * Subtitle description text for the Card header.
67
+ */
68
+ export const CardDescription: Component<CardDescriptionProps> = (props) => {
69
+ const [local, rest] = splitProps(props, ["class"]);
70
+
71
+ return (
72
+ <p
73
+ class={cn("text-sm text-muted-foreground", local.class)}
74
+ {...rest}
75
+ />
76
+ );
77
+ };
78
+
79
+ export interface CardContentProps extends JSX.HTMLAttributes<HTMLDivElement> {
80
+ class?: string;
81
+ }
82
+
83
+ /**
84
+ * Main body content area for the Card.
85
+ */
86
+ export const CardContent: Component<CardContentProps> = (props) => {
87
+ const [local, rest] = splitProps(props, ["class"]);
88
+
89
+ return (
90
+ <div
91
+ class={cn("p-6 pt-0", local.class)}
92
+ {...rest}
93
+ />
94
+ );
95
+ };
96
+
97
+ export interface CardFooterProps extends JSX.HTMLAttributes<HTMLDivElement> {
98
+ class?: string;
99
+ }
100
+
101
+ /**
102
+ * Footer action area for the Card.
103
+ */
104
+ export const CardFooter: Component<CardFooterProps> = (props) => {
105
+ const [local, rest] = splitProps(props, ["class"]);
106
+
107
+ return (
108
+ <div
109
+ class={cn("flex items-center p-6 pt-0", local.class)}
110
+ {...rest}
111
+ />
112
+ );
113
+ };
@@ -0,0 +1,74 @@
1
+ import { splitProps, Show, type Component, type JSX } from "solid-js";
2
+ import { createControllableSignal } from "@/hooks/create-controllable-signal";
3
+ import { cn } from "@/lib/cn";
4
+
5
+ export interface CheckboxProps
6
+ extends Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, "onChange"> {
7
+ /** Controlled checked state */
8
+ checked?: boolean;
9
+ /** Uncontrolled default checked state */
10
+ defaultChecked?: boolean;
11
+ /** Event handler triggered when checked state changes */
12
+ onChange?: (checked: boolean) => void;
13
+ class?: string;
14
+ }
15
+
16
+ /**
17
+ * Nikala UI Checkbox component built for SolidJS with Tailwind CSS v4 styling.
18
+ */
19
+ export const Checkbox: Component<CheckboxProps> = (props) => {
20
+ const [local, rest] = splitProps(props, [
21
+ "checked",
22
+ "defaultChecked",
23
+ "onChange",
24
+ "disabled",
25
+ "class",
26
+ "onClick",
27
+ ]);
28
+
29
+ const [isChecked, setIsChecked] = createControllableSignal({
30
+ value: () => local.checked,
31
+ defaultValue: local.defaultChecked ?? false,
32
+ onChange: (val) => local.onChange?.(val),
33
+ });
34
+
35
+ const toggle = (
36
+ e: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }
37
+ ) => {
38
+ if (local.disabled) return;
39
+ setIsChecked(!isChecked());
40
+
41
+ if (typeof local.onClick === "function") {
42
+ local.onClick(e);
43
+ }
44
+ };
45
+
46
+ return (
47
+ <button
48
+ type="button"
49
+ role="checkbox"
50
+ aria-checked={isChecked()}
51
+ data-state={isChecked() ? "checked" : "unchecked"}
52
+ disabled={local.disabled}
53
+ onClick={toggle}
54
+ class={cn(
55
+ "peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground flex items-center justify-center transition-colors",
56
+ local.class
57
+ )}
58
+ {...rest}
59
+ >
60
+ <Show when={isChecked()}>
61
+ <svg
62
+ class="h-3.5 w-3.5 fill-none stroke-current stroke-[3]"
63
+ viewBox="0 0 24 24"
64
+ >
65
+ <path
66
+ stroke-linecap="round"
67
+ stroke-linejoin="round"
68
+ d="M5 13l4 4L19 7"
69
+ />
70
+ </svg>
71
+ </Show>
72
+ </button>
73
+ );
74
+ };