@nikala-ui/folio 0.13.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 (454) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +221 -0
  3. package/dist/cli/commands/build.d.ts +5 -0
  4. package/dist/cli/commands/build.d.ts.map +1 -0
  5. package/dist/cli/commands/build.js +28 -0
  6. package/dist/cli/commands/build.js.map +1 -0
  7. package/dist/cli/commands/dev.d.ts +7 -0
  8. package/dist/cli/commands/dev.d.ts.map +1 -0
  9. package/dist/cli/commands/dev.js +33 -0
  10. package/dist/cli/commands/dev.js.map +1 -0
  11. package/dist/cli/commands/init.d.ts +2 -0
  12. package/dist/cli/commands/init.d.ts.map +1 -0
  13. package/dist/cli/commands/init.js +359 -0
  14. package/dist/cli/commands/init.js.map +1 -0
  15. package/dist/cli/commands/preview.d.ts +7 -0
  16. package/dist/cli/commands/preview.d.ts.map +1 -0
  17. package/dist/cli/commands/preview.js +25 -0
  18. package/dist/cli/commands/preview.js.map +1 -0
  19. package/dist/cli/commands/serve.d.ts +7 -0
  20. package/dist/cli/commands/serve.d.ts.map +1 -0
  21. package/dist/cli/commands/serve.js +34 -0
  22. package/dist/cli/commands/serve.js.map +1 -0
  23. package/dist/cli/index.d.ts +3 -0
  24. package/dist/cli/index.d.ts.map +1 -0
  25. package/dist/cli/index.js +55 -0
  26. package/dist/cli/index.js.map +1 -0
  27. package/dist/client/app-types.d.ts +18 -0
  28. package/dist/client/app-types.d.ts.map +1 -0
  29. package/dist/client/app-types.js +2 -0
  30. package/dist/client/app-types.js.map +1 -0
  31. package/dist/client/app.d.ts +5 -0
  32. package/dist/client/app.d.ts.map +1 -0
  33. package/dist/client/app.jsx +51 -0
  34. package/dist/client/app.jsx.map +1 -0
  35. package/dist/client/base.css +90 -0
  36. package/dist/client/components/docs-layout-shell.d.ts +23 -0
  37. package/dist/client/components/docs-layout-shell.d.ts.map +1 -0
  38. package/dist/client/components/docs-layout-shell.jsx +15 -0
  39. package/dist/client/components/docs-layout-shell.jsx.map +1 -0
  40. package/dist/client/components/docs-page-content.d.ts +9 -0
  41. package/dist/client/components/docs-page-content.d.ts.map +1 -0
  42. package/dist/client/components/docs-page-content.jsx +10 -0
  43. package/dist/client/components/docs-page-content.jsx.map +1 -0
  44. package/dist/client/entry.d.ts +2 -0
  45. package/dist/client/entry.d.ts.map +1 -0
  46. package/dist/client/entry.jsx +32 -0
  47. package/dist/client/entry.jsx.map +1 -0
  48. package/dist/client/index.html +23 -0
  49. package/dist/client/navigation/page-navigation.d.ts +9 -0
  50. package/dist/client/navigation/page-navigation.d.ts.map +1 -0
  51. package/dist/client/navigation/page-navigation.js +51 -0
  52. package/dist/client/navigation/page-navigation.js.map +1 -0
  53. package/dist/client/page-actions.d.ts +10 -0
  54. package/dist/client/page-actions.d.ts.map +1 -0
  55. package/dist/client/page-actions.js +63 -0
  56. package/dist/client/page-actions.js.map +1 -0
  57. package/dist/client/public/favicon.ico +0 -0
  58. package/dist/client/routing/use-docs-router.d.ts +17 -0
  59. package/dist/client/routing/use-docs-router.d.ts.map +1 -0
  60. package/dist/client/routing/use-docs-router.js +87 -0
  61. package/dist/client/routing/use-docs-router.js.map +1 -0
  62. package/dist/client/ssr-entry.d.ts +3 -0
  63. package/dist/client/ssr-entry.d.ts.map +1 -0
  64. package/dist/client/ssr-entry.jsx +13 -0
  65. package/dist/client/ssr-entry.jsx.map +1 -0
  66. package/dist/client/style.css +186 -0
  67. package/dist/client/utils/sidebar.d.ts +2 -0
  68. package/dist/client/utils/sidebar.d.ts.map +1 -0
  69. package/dist/client/utils/sidebar.js +2 -0
  70. package/dist/client/utils/sidebar.js.map +1 -0
  71. package/dist/components/mdx-components.d.ts +65 -0
  72. package/dist/components/mdx-components.d.ts.map +1 -0
  73. package/dist/components/mdx-components.jsx +133 -0
  74. package/dist/components/mdx-components.jsx.map +1 -0
  75. package/dist/components/ui/api-table.d.ts +29 -0
  76. package/dist/components/ui/api-table.d.ts.map +1 -0
  77. package/dist/components/ui/api-table.jsx +66 -0
  78. package/dist/components/ui/api-table.jsx.map +1 -0
  79. package/dist/components/ui/badge.d.ts +17 -0
  80. package/dist/components/ui/badge.d.ts.map +1 -0
  81. package/dist/components/ui/badge.jsx +33 -0
  82. package/dist/components/ui/badge.jsx.map +1 -0
  83. package/dist/components/ui/breadcrumb.d.ts +51 -0
  84. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  85. package/dist/components/ui/breadcrumb.jsx +62 -0
  86. package/dist/components/ui/breadcrumb.jsx.map +1 -0
  87. package/dist/components/ui/button.d.ts +19 -0
  88. package/dist/components/ui/button.d.ts.map +1 -0
  89. package/dist/components/ui/button.jsx +54 -0
  90. package/dist/components/ui/button.jsx.map +1 -0
  91. package/dist/components/ui/callout.d.ts +21 -0
  92. package/dist/components/ui/callout.d.ts.map +1 -0
  93. package/dist/components/ui/callout.jsx +76 -0
  94. package/dist/components/ui/callout.jsx.map +1 -0
  95. package/dist/components/ui/card.d.ts +44 -0
  96. package/dist/components/ui/card.d.ts.map +1 -0
  97. package/dist/components/ui/card.jsx +45 -0
  98. package/dist/components/ui/card.jsx.map +1 -0
  99. package/dist/components/ui/code-block.d.ts +23 -0
  100. package/dist/components/ui/code-block.d.ts.map +1 -0
  101. package/dist/components/ui/code-block.jsx +263 -0
  102. package/dist/components/ui/code-block.jsx.map +1 -0
  103. package/dist/components/ui/collapsible.d.ts +27 -0
  104. package/dist/components/ui/collapsible.d.ts.map +1 -0
  105. package/dist/components/ui/collapsible.jsx +29 -0
  106. package/dist/components/ui/collapsible.jsx.map +1 -0
  107. package/dist/components/ui/command.d.ts +57 -0
  108. package/dist/components/ui/command.d.ts.map +1 -0
  109. package/dist/components/ui/command.jsx +224 -0
  110. package/dist/components/ui/command.jsx.map +1 -0
  111. package/dist/components/ui/component-viewer.d.ts +33 -0
  112. package/dist/components/ui/component-viewer.d.ts.map +1 -0
  113. package/dist/components/ui/component-viewer.jsx +210 -0
  114. package/dist/components/ui/component-viewer.jsx.map +1 -0
  115. package/dist/components/ui/container.d.ts +13 -0
  116. package/dist/components/ui/container.d.ts.map +1 -0
  117. package/dist/components/ui/container.jsx +29 -0
  118. package/dist/components/ui/container.jsx.map +1 -0
  119. package/dist/components/ui/dropdown-menu.d.ts +58 -0
  120. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  121. package/dist/components/ui/dropdown-menu.jsx +112 -0
  122. package/dist/components/ui/dropdown-menu.jsx.map +1 -0
  123. package/dist/components/ui/input-group.d.ts +16 -0
  124. package/dist/components/ui/input-group.d.ts.map +1 -0
  125. package/dist/components/ui/input-group.jsx +33 -0
  126. package/dist/components/ui/input-group.jsx.map +1 -0
  127. package/dist/components/ui/kbd.d.ts +15 -0
  128. package/dist/components/ui/kbd.d.ts.map +1 -0
  129. package/dist/components/ui/kbd.jsx +42 -0
  130. package/dist/components/ui/kbd.jsx.map +1 -0
  131. package/dist/components/ui/list.d.ts +36 -0
  132. package/dist/components/ui/list.d.ts.map +1 -0
  133. package/dist/components/ui/list.jsx +131 -0
  134. package/dist/components/ui/list.jsx.map +1 -0
  135. package/dist/components/ui/logo.d.ts +9 -0
  136. package/dist/components/ui/logo.d.ts.map +1 -0
  137. package/dist/components/ui/logo.jsx +31 -0
  138. package/dist/components/ui/logo.jsx.map +1 -0
  139. package/dist/components/ui/navbar.d.ts +57 -0
  140. package/dist/components/ui/navbar.d.ts.map +1 -0
  141. package/dist/components/ui/navbar.jsx +174 -0
  142. package/dist/components/ui/navbar.jsx.map +1 -0
  143. package/dist/components/ui/package-manager-tabs.d.ts +21 -0
  144. package/dist/components/ui/package-manager-tabs.d.ts.map +1 -0
  145. package/dist/components/ui/package-manager-tabs.jsx +167 -0
  146. package/dist/components/ui/package-manager-tabs.jsx.map +1 -0
  147. package/dist/components/ui/pager.d.ts +27 -0
  148. package/dist/components/ui/pager.d.ts.map +1 -0
  149. package/dist/components/ui/pager.jsx +50 -0
  150. package/dist/components/ui/pager.jsx.map +1 -0
  151. package/dist/components/ui/scroll-area.d.ts +9 -0
  152. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  153. package/dist/components/ui/scroll-area.jsx +160 -0
  154. package/dist/components/ui/scroll-area.jsx.map +1 -0
  155. package/dist/components/ui/section-heading.d.ts +23 -0
  156. package/dist/components/ui/section-heading.d.ts.map +1 -0
  157. package/dist/components/ui/section-heading.jsx +82 -0
  158. package/dist/components/ui/section-heading.jsx.map +1 -0
  159. package/dist/components/ui/separator.d.ts +13 -0
  160. package/dist/components/ui/separator.d.ts.map +1 -0
  161. package/dist/components/ui/separator.jsx +16 -0
  162. package/dist/components/ui/separator.jsx.map +1 -0
  163. package/dist/components/ui/sidebar.d.ts +103 -0
  164. package/dist/components/ui/sidebar.d.ts.map +1 -0
  165. package/dist/components/ui/sidebar.jsx +315 -0
  166. package/dist/components/ui/sidebar.jsx.map +1 -0
  167. package/dist/components/ui/skeleton.d.ts +9 -0
  168. package/dist/components/ui/skeleton.d.ts.map +1 -0
  169. package/dist/components/ui/skeleton.jsx +11 -0
  170. package/dist/components/ui/skeleton.jsx.map +1 -0
  171. package/dist/components/ui/spinner.d.ts +11 -0
  172. package/dist/components/ui/spinner.d.ts.map +1 -0
  173. package/dist/components/ui/spinner.jsx +21 -0
  174. package/dist/components/ui/spinner.jsx.map +1 -0
  175. package/dist/components/ui/table-of-contents.d.ts +20 -0
  176. package/dist/components/ui/table-of-contents.d.ts.map +1 -0
  177. package/dist/components/ui/table-of-contents.jsx +77 -0
  178. package/dist/components/ui/table-of-contents.jsx.map +1 -0
  179. package/dist/components/ui/table.d.ts +58 -0
  180. package/dist/components/ui/table.d.ts.map +1 -0
  181. package/dist/components/ui/table.jsx +61 -0
  182. package/dist/components/ui/table.jsx.map +1 -0
  183. package/dist/components/ui/tabs.d.ts +42 -0
  184. package/dist/components/ui/tabs.d.ts.map +1 -0
  185. package/dist/components/ui/tabs.jsx +93 -0
  186. package/dist/components/ui/tabs.jsx.map +1 -0
  187. package/dist/components/ui/theme-toggle.d.ts +19 -0
  188. package/dist/components/ui/theme-toggle.d.ts.map +1 -0
  189. package/dist/components/ui/theme-toggle.jsx +142 -0
  190. package/dist/components/ui/theme-toggle.jsx.map +1 -0
  191. package/dist/components/ui/tooltip.d.ts +10 -0
  192. package/dist/components/ui/tooltip.d.ts.map +1 -0
  193. package/dist/components/ui/tooltip.jsx +18 -0
  194. package/dist/components/ui/tooltip.jsx.map +1 -0
  195. package/dist/config.d.ts +6 -0
  196. package/dist/config.d.ts.map +1 -0
  197. package/dist/config.js +105 -0
  198. package/dist/config.js.map +1 -0
  199. package/dist/core/content-scanner.d.ts +10 -0
  200. package/dist/core/content-scanner.d.ts.map +1 -0
  201. package/dist/core/content-scanner.js +218 -0
  202. package/dist/core/content-scanner.js.map +1 -0
  203. package/dist/core/route-tree.d.ts +24 -0
  204. package/dist/core/route-tree.d.ts.map +1 -0
  205. package/dist/core/route-tree.js +221 -0
  206. package/dist/core/route-tree.js.map +1 -0
  207. package/dist/hooks/create-click-outside.d.ts +18 -0
  208. package/dist/hooks/create-click-outside.d.ts.map +1 -0
  209. package/dist/hooks/create-click-outside.js +55 -0
  210. package/dist/hooks/create-click-outside.js.map +1 -0
  211. package/dist/hooks/create-clipboard.d.ts +20 -0
  212. package/dist/hooks/create-clipboard.d.ts.map +1 -0
  213. package/dist/hooks/create-clipboard.js +48 -0
  214. package/dist/hooks/create-clipboard.js.map +1 -0
  215. package/dist/hooks/create-color-mode.d.ts +27 -0
  216. package/dist/hooks/create-color-mode.d.ts.map +1 -0
  217. package/dist/hooks/create-color-mode.js +86 -0
  218. package/dist/hooks/create-color-mode.js.map +1 -0
  219. package/dist/hooks/create-controllable-signal.d.ts +17 -0
  220. package/dist/hooks/create-controllable-signal.d.ts.map +1 -0
  221. package/dist/hooks/create-controllable-signal.js +35 -0
  222. package/dist/hooks/create-controllable-signal.js.map +1 -0
  223. package/dist/hooks/create-focus-trap.d.ts +15 -0
  224. package/dist/hooks/create-focus-trap.d.ts.map +1 -0
  225. package/dist/hooks/create-focus-trap.js +72 -0
  226. package/dist/hooks/create-focus-trap.js.map +1 -0
  227. package/dist/hooks/create-keybindings.d.ts +34 -0
  228. package/dist/hooks/create-keybindings.d.ts.map +1 -0
  229. package/dist/hooks/create-keybindings.js +113 -0
  230. package/dist/hooks/create-keybindings.js.map +1 -0
  231. package/dist/hooks/create-lock-scroll.d.ts +20 -0
  232. package/dist/hooks/create-lock-scroll.d.ts.map +1 -0
  233. package/dist/hooks/create-lock-scroll.js +77 -0
  234. package/dist/hooks/create-lock-scroll.js.map +1 -0
  235. package/dist/hooks/create-resize-observer.d.ts +27 -0
  236. package/dist/hooks/create-resize-observer.d.ts.map +1 -0
  237. package/dist/hooks/create-resize-observer.js +59 -0
  238. package/dist/hooks/create-resize-observer.js.map +1 -0
  239. package/dist/hooks/create-scroll-position.d.ts +29 -0
  240. package/dist/hooks/create-scroll-position.d.ts.map +1 -0
  241. package/dist/hooks/create-scroll-position.js +101 -0
  242. package/dist/hooks/create-scroll-position.js.map +1 -0
  243. package/dist/index.d.ts +13 -0
  244. package/dist/index.d.ts.map +1 -0
  245. package/dist/index.js +14 -0
  246. package/dist/index.js.map +1 -0
  247. package/dist/lib/cn.d.ts +6 -0
  248. package/dist/lib/cn.d.ts.map +1 -0
  249. package/dist/lib/cn.js +9 -0
  250. package/dist/lib/cn.js.map +1 -0
  251. package/dist/mdx/compiler.d.ts +13 -0
  252. package/dist/mdx/compiler.d.ts.map +1 -0
  253. package/dist/mdx/compiler.js +38 -0
  254. package/dist/mdx/compiler.js.map +1 -0
  255. package/dist/mdx/highlighter.d.ts +22 -0
  256. package/dist/mdx/highlighter.d.ts.map +1 -0
  257. package/dist/mdx/highlighter.js +190 -0
  258. package/dist/mdx/highlighter.js.map +1 -0
  259. package/dist/mdx/rehype-shiki.d.ts +3 -0
  260. package/dist/mdx/rehype-shiki.d.ts.map +1 -0
  261. package/dist/mdx/rehype-shiki.js +83 -0
  262. package/dist/mdx/rehype-shiki.js.map +1 -0
  263. package/dist/navigation/index.d.ts +3 -0
  264. package/dist/navigation/index.d.ts.map +1 -0
  265. package/dist/navigation/index.js +3 -0
  266. package/dist/navigation/index.js.map +1 -0
  267. package/dist/navigation/repository-links.d.ts +3 -0
  268. package/dist/navigation/repository-links.d.ts.map +1 -0
  269. package/dist/navigation/repository-links.js +35 -0
  270. package/dist/navigation/repository-links.js.map +1 -0
  271. package/dist/navigation/sidebar-state.d.ts +6 -0
  272. package/dist/navigation/sidebar-state.d.ts.map +1 -0
  273. package/dist/navigation/sidebar-state.js +20 -0
  274. package/dist/navigation/sidebar-state.js.map +1 -0
  275. package/dist/navigation/sidebar-tree.d.ts +7 -0
  276. package/dist/navigation/sidebar-tree.d.ts.map +1 -0
  277. package/dist/navigation/sidebar-tree.js +11 -0
  278. package/dist/navigation/sidebar-tree.js.map +1 -0
  279. package/dist/providers/theme-provider.d.ts +33 -0
  280. package/dist/providers/theme-provider.d.ts.map +1 -0
  281. package/dist/providers/theme-provider.jsx +158 -0
  282. package/dist/providers/theme-provider.jsx.map +1 -0
  283. package/dist/providers/theme-script.d.ts +16 -0
  284. package/dist/providers/theme-script.d.ts.map +1 -0
  285. package/dist/providers/theme-script.jsx +41 -0
  286. package/dist/providers/theme-script.jsx.map +1 -0
  287. package/dist/providers/theme-transitions.d.ts +12 -0
  288. package/dist/providers/theme-transitions.d.ts.map +1 -0
  289. package/dist/providers/theme-transitions.js +115 -0
  290. package/dist/providers/theme-transitions.js.map +1 -0
  291. package/dist/registry/api-table.json +21 -0
  292. package/dist/registry/badge.json +18 -0
  293. package/dist/registry/breadcrumb.json +17 -0
  294. package/dist/registry/button.json +21 -0
  295. package/dist/registry/callout.json +19 -0
  296. package/dist/registry/card.json +17 -0
  297. package/dist/registry/code-block.json +28 -0
  298. package/dist/registry/collapsible.json +18 -0
  299. package/dist/registry/command.json +27 -0
  300. package/dist/registry/component-viewer.json +25 -0
  301. package/dist/registry/container.json +18 -0
  302. package/dist/registry/create-click-outside.json +13 -0
  303. package/dist/registry/create-clipboard.json +13 -0
  304. package/dist/registry/create-color-mode.json +13 -0
  305. package/dist/registry/create-controllable-signal.json +13 -0
  306. package/dist/registry/create-focus-trap.json +13 -0
  307. package/dist/registry/create-keybindings.json +13 -0
  308. package/dist/registry/create-lock-scroll.json +13 -0
  309. package/dist/registry/create-resize-observer.json +13 -0
  310. package/dist/registry/create-scroll-position.json +13 -0
  311. package/dist/registry/dropdown-menu.json +22 -0
  312. package/dist/registry/input-group.json +21 -0
  313. package/dist/registry/kbd.json +18 -0
  314. package/dist/registry/list.json +20 -0
  315. package/dist/registry/logo.json +17 -0
  316. package/dist/registry/navbar.json +19 -0
  317. package/dist/registry/package-manager-tabs.json +24 -0
  318. package/dist/registry/pager.json +21 -0
  319. package/dist/registry/scroll-area.json +21 -0
  320. package/dist/registry/section-heading.json +21 -0
  321. package/dist/registry/separator.json +17 -0
  322. package/dist/registry/sidebar.json +24 -0
  323. package/dist/registry/skeleton.json +17 -0
  324. package/dist/registry/spinner.json +18 -0
  325. package/dist/registry/table-of-contents.json +23 -0
  326. package/dist/registry/table.json +17 -0
  327. package/dist/registry/tabs.json +20 -0
  328. package/dist/registry/theme-manager.json +39 -0
  329. package/dist/registry/tooltip.json +18 -0
  330. package/dist/search/provider.d.ts +14 -0
  331. package/dist/search/provider.d.ts.map +1 -0
  332. package/dist/search/provider.js +14 -0
  333. package/dist/search/provider.js.map +1 -0
  334. package/dist/server/index.d.ts +18 -0
  335. package/dist/server/index.d.ts.map +1 -0
  336. package/dist/server/index.js +565 -0
  337. package/dist/server/index.js.map +1 -0
  338. package/dist/server/plugin.d.ts +10 -0
  339. package/dist/server/plugin.d.ts.map +1 -0
  340. package/dist/server/plugin.js +522 -0
  341. package/dist/server/plugin.js.map +1 -0
  342. package/dist/theme-accent.d.ts +8 -0
  343. package/dist/theme-accent.d.ts.map +1 -0
  344. package/dist/theme-accent.js +18 -0
  345. package/dist/theme-accent.js.map +1 -0
  346. package/dist/theme-mode.d.ts +4 -0
  347. package/dist/theme-mode.d.ts.map +1 -0
  348. package/dist/theme-mode.js +5 -0
  349. package/dist/theme-mode.js.map +1 -0
  350. package/dist/themes/default/content/breadcrumbs.d.ts +4 -0
  351. package/dist/themes/default/content/breadcrumbs.d.ts.map +1 -0
  352. package/dist/themes/default/content/breadcrumbs.jsx +31 -0
  353. package/dist/themes/default/content/breadcrumbs.jsx.map +1 -0
  354. package/dist/themes/default/content/pager.d.ts +5 -0
  355. package/dist/themes/default/content/pager.d.ts.map +1 -0
  356. package/dist/themes/default/content/pager.jsx +9 -0
  357. package/dist/themes/default/content/pager.jsx.map +1 -0
  358. package/dist/themes/default/content/table-of-contents.d.ts +4 -0
  359. package/dist/themes/default/content/table-of-contents.d.ts.map +1 -0
  360. package/dist/themes/default/content/table-of-contents.jsx +19 -0
  361. package/dist/themes/default/content/table-of-contents.jsx.map +1 -0
  362. package/dist/themes/default/icons.d.ts +3 -0
  363. package/dist/themes/default/icons.d.ts.map +1 -0
  364. package/dist/themes/default/icons.js +15 -0
  365. package/dist/themes/default/icons.js.map +1 -0
  366. package/dist/themes/default/index.d.ts +12 -0
  367. package/dist/themes/default/index.d.ts.map +1 -0
  368. package/dist/themes/default/index.js +30 -0
  369. package/dist/themes/default/index.js.map +1 -0
  370. package/dist/themes/default/layout.d.ts +4 -0
  371. package/dist/themes/default/layout.d.ts.map +1 -0
  372. package/dist/themes/default/layout.jsx +194 -0
  373. package/dist/themes/default/layout.jsx.map +1 -0
  374. package/dist/themes/default/navbar.d.ts +4 -0
  375. package/dist/themes/default/navbar.d.ts.map +1 -0
  376. package/dist/themes/default/navbar.jsx +83 -0
  377. package/dist/themes/default/navbar.jsx.map +1 -0
  378. package/dist/themes/default/navigation/mobile-table-of-contents.d.ts +4 -0
  379. package/dist/themes/default/navigation/mobile-table-of-contents.d.ts.map +1 -0
  380. package/dist/themes/default/navigation/mobile-table-of-contents.jsx +38 -0
  381. package/dist/themes/default/navigation/mobile-table-of-contents.jsx.map +1 -0
  382. package/dist/themes/default/navigation/sidebar-tree.d.ts +8 -0
  383. package/dist/themes/default/navigation/sidebar-tree.d.ts.map +1 -0
  384. package/dist/themes/default/navigation/sidebar-tree.jsx +124 -0
  385. package/dist/themes/default/navigation/sidebar-tree.jsx.map +1 -0
  386. package/dist/themes/default/overlays/search-dialog.d.ts +4 -0
  387. package/dist/themes/default/overlays/search-dialog.d.ts.map +1 -0
  388. package/dist/themes/default/overlays/search-dialog.jsx +52 -0
  389. package/dist/themes/default/overlays/search-dialog.jsx.map +1 -0
  390. package/dist/themes/default/sidebar.d.ts +4 -0
  391. package/dist/themes/default/sidebar.d.ts.map +1 -0
  392. package/dist/themes/default/sidebar.jsx +92 -0
  393. package/dist/themes/default/sidebar.jsx.map +1 -0
  394. package/dist/themes/index.d.ts +4 -0
  395. package/dist/themes/index.d.ts.map +1 -0
  396. package/dist/themes/index.js +5 -0
  397. package/dist/themes/index.js.map +1 -0
  398. package/dist/themes/types.d.ts +91 -0
  399. package/dist/themes/types.d.ts.map +1 -0
  400. package/dist/themes/types.js +2 -0
  401. package/dist/themes/types.js.map +1 -0
  402. package/dist/types.d.ts +132 -0
  403. package/dist/types.d.ts.map +1 -0
  404. package/dist/types.js +3 -0
  405. package/dist/types.js.map +1 -0
  406. package/dist/vendor/docs-src/components/mdx-components.tsx +144 -0
  407. package/dist/vendor/docs-src/components/ui/api-table.tsx +117 -0
  408. package/dist/vendor/docs-src/components/ui/badge.tsx +56 -0
  409. package/dist/vendor/docs-src/components/ui/breadcrumb.tsx +136 -0
  410. package/dist/vendor/docs-src/components/ui/button.tsx +82 -0
  411. package/dist/vendor/docs-src/components/ui/callout.tsx +137 -0
  412. package/dist/vendor/docs-src/components/ui/card.tsx +113 -0
  413. package/dist/vendor/docs-src/components/ui/code-block.tsx +347 -0
  414. package/dist/vendor/docs-src/components/ui/collapsible.tsx +73 -0
  415. package/dist/vendor/docs-src/components/ui/command.tsx +382 -0
  416. package/dist/vendor/docs-src/components/ui/component-viewer.tsx +363 -0
  417. package/dist/vendor/docs-src/components/ui/container.tsx +45 -0
  418. package/dist/vendor/docs-src/components/ui/dropdown-menu.tsx +298 -0
  419. package/dist/vendor/docs-src/components/ui/input-group.tsx +80 -0
  420. package/dist/vendor/docs-src/components/ui/kbd.tsx +73 -0
  421. package/dist/vendor/docs-src/components/ui/list.tsx +222 -0
  422. package/dist/vendor/docs-src/components/ui/logo.tsx +68 -0
  423. package/dist/vendor/docs-src/components/ui/navbar.tsx +375 -0
  424. package/dist/vendor/docs-src/components/ui/package-manager-tabs.tsx +226 -0
  425. package/dist/vendor/docs-src/components/ui/pager.tsx +102 -0
  426. package/dist/vendor/docs-src/components/ui/scroll-area.tsx +228 -0
  427. package/dist/vendor/docs-src/components/ui/section-heading.tsx +115 -0
  428. package/dist/vendor/docs-src/components/ui/separator.tsx +37 -0
  429. package/dist/vendor/docs-src/components/ui/sidebar.tsx +712 -0
  430. package/dist/vendor/docs-src/components/ui/skeleton.tsx +24 -0
  431. package/dist/vendor/docs-src/components/ui/spinner.tsx +41 -0
  432. package/dist/vendor/docs-src/components/ui/table-of-contents.tsx +131 -0
  433. package/dist/vendor/docs-src/components/ui/table.tsx +160 -0
  434. package/dist/vendor/docs-src/components/ui/tabs.tsx +204 -0
  435. package/dist/vendor/docs-src/components/ui/theme-toggle.tsx +238 -0
  436. package/dist/vendor/docs-src/components/ui/tooltip.tsx +41 -0
  437. package/dist/vendor/docs-src/hooks/create-click-outside.ts +82 -0
  438. package/dist/vendor/docs-src/hooks/create-clipboard.ts +69 -0
  439. package/dist/vendor/docs-src/hooks/create-color-mode.ts +115 -0
  440. package/dist/vendor/docs-src/hooks/create-controllable-signal.ts +56 -0
  441. package/dist/vendor/docs-src/hooks/create-focus-trap.ts +94 -0
  442. package/dist/vendor/docs-src/hooks/create-keybindings.ts +148 -0
  443. package/dist/vendor/docs-src/hooks/create-lock-scroll.ts +97 -0
  444. package/dist/vendor/docs-src/hooks/create-resize-observer.ts +89 -0
  445. package/dist/vendor/docs-src/hooks/create-scroll-position.ts +129 -0
  446. package/dist/vendor/docs-src/lib/cn.ts +9 -0
  447. package/dist/vendor/docs-src/providers/theme-provider.tsx +203 -0
  448. package/dist/vendor/docs-src/providers/theme-script.tsx +54 -0
  449. package/dist/vendor/docs-src/providers/theme-transitions.ts +139 -0
  450. package/dist/version.d.ts +2 -0
  451. package/dist/version.d.ts.map +1 -0
  452. package/dist/version.js +2 -0
  453. package/dist/version.js.map +1 -0
  454. package/package.json +95 -0
@@ -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,347 @@
1
+ import {
2
+ createSignal,
3
+ createEffect,
4
+ createMemo,
5
+ splitProps,
6
+ For,
7
+ Show,
8
+ type JSX,
9
+ type ParentComponent,
10
+ } from "solid-js";
11
+ import { Check, Copy } from "lucide-solid";
12
+ import { Button } from "@/components/ui/button";
13
+ import { Badge } from "@/components/ui/badge";
14
+ import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
15
+ import { Tooltip, TooltipTrigger, TooltipContent } from "@/components/ui/tooltip";
16
+ import { createClipboard } from "@/hooks/create-clipboard";
17
+ import { cn } from "@/lib/cn";
18
+
19
+ export type CodeBlockPackageManager = "bunx" | "npx" | "pnpm" | "yarn";
20
+
21
+ export interface CodeBlockProps extends JSX.HTMLAttributes<HTMLDivElement> {
22
+ /** The raw source code text to display and copy */
23
+ code?: string;
24
+ /** File name to display in the header bar (e.g. "App.tsx", "main.rs") */
25
+ filename?: string;
26
+ /** Programming language badge (e.g. "tsx", "rust", "bash") */
27
+ language?: string;
28
+ /** Alias for language */
29
+ lang?: string;
30
+ /** Whether the code snippet is an executable CLI command */
31
+ isCli?: boolean;
32
+ /** Shows the interactive package manager runner tabs (bunx, npx, pnpm, yarn) */
33
+ showPmSwitcher?: boolean;
34
+ /** List of package manager runners to show */
35
+ managers?: CodeBlockPackageManager[];
36
+ /** Whether the copy button is enabled. Defaults to true. */
37
+ copyable?: boolean;
38
+ class?: string;
39
+ }
40
+
41
+ let shikiHighlighterPromise: Promise<any> | null = null;
42
+
43
+ async function getShikiHighlighter() {
44
+ if (typeof window === "undefined") return null;
45
+ if (!shikiHighlighterPromise) {
46
+ try {
47
+ const [{ createBundledHighlighter }, { createJavaScriptRegexEngine }] = await Promise.all([
48
+ import("shiki/core"),
49
+ import("shiki/engine/javascript"),
50
+ ]);
51
+ const createHighlighter = createBundledHighlighter({
52
+ langs: {
53
+ typescript: () => import("@shikijs/langs/typescript"),
54
+ javascript: () => import("@shikijs/langs/javascript"),
55
+ tsx: () => import("@shikijs/langs/tsx"),
56
+ jsx: () => import("@shikijs/langs/jsx"),
57
+ bash: () => import("@shikijs/langs/shellscript"),
58
+ json: () => import("@shikijs/langs/json"),
59
+ css: () => import("@shikijs/langs/css"),
60
+ html: () => import("@shikijs/langs/html"),
61
+ rust: () => import("@shikijs/langs/rust"),
62
+ },
63
+ themes: {
64
+ "github-dark": () => import("@shikijs/themes/github-dark"),
65
+ "github-light": () => import("@shikijs/themes/github-light"),
66
+ },
67
+ engine: () => createJavaScriptRegexEngine(),
68
+ });
69
+ shikiHighlighterPromise = createHighlighter({
70
+ themes: ["github-dark", "github-light"],
71
+ langs: [
72
+ "typescript",
73
+ "javascript",
74
+ "tsx",
75
+ "jsx",
76
+ "bash",
77
+ "json",
78
+ "css",
79
+ "html",
80
+ "rust",
81
+ ],
82
+ });
83
+ } catch (e) {
84
+ console.warn("Failed to load Shiki highlighter", e);
85
+ return null;
86
+ }
87
+ }
88
+ return shikiHighlighterPromise;
89
+ }
90
+
91
+ function highlightCliCommand(code: string): string {
92
+ const trimmed = code.trim();
93
+ const parts = trimmed.split(/\s+/);
94
+ if (parts.length === 0) return code;
95
+
96
+ const isRunner = ["bunx", "npx", "pnpm", "yarn", "bun", "npm", "cargo", "deno"].includes(parts[0]);
97
+ if (!isRunner) return `<span class="text-foreground">${escapeHtml(trimmed)}</span>`;
98
+
99
+ return parts
100
+ .map((part, index) => {
101
+ if (index === 0) {
102
+ return `<span class="text-amber-500 dark:text-amber-400 font-bold">${escapeHtml(part)}</span>`;
103
+ }
104
+ if (part.startsWith("-")) {
105
+ return `<span class="text-purple-400 dark:text-purple-300">${escapeHtml(part)}</span>`;
106
+ }
107
+ if (part.startsWith("@")) {
108
+ return `<span class="text-emerald-400 dark:text-emerald-300 font-medium">${escapeHtml(part)}</span>`;
109
+ }
110
+ if (index === 1 && ["add", "install", "init", "create", "run"].includes(part)) {
111
+ return `<span class="text-sky-500 dark:text-sky-400 font-medium">${escapeHtml(part)}</span>`;
112
+ }
113
+ return `<span class="text-foreground/90">${escapeHtml(part)}</span>`;
114
+ })
115
+ .join(" ");
116
+ }
117
+
118
+ function transformCommandForPm(cmd: string, pm: CodeBlockPackageManager): string {
119
+ const trimmed = cmd.trim();
120
+ const runners = ["bunx", "npx", "pnpm dlx", "pnpm", "yarn dlx", "yarn", "bun", "npm"];
121
+
122
+ let base = trimmed;
123
+ for (const r of runners) {
124
+ if (trimmed.startsWith(r)) {
125
+ base = trimmed.slice(r.length).trim();
126
+ break;
127
+ }
128
+ }
129
+
130
+ switch (pm) {
131
+ case "bunx":
132
+ return `bunx ${base}`;
133
+ case "npx":
134
+ return `npx ${base}`;
135
+ case "pnpm":
136
+ return `pnpm dlx ${base}`;
137
+ case "yarn":
138
+ return `yarn dlx ${base}`;
139
+ default:
140
+ return `${pm} ${base}`;
141
+ }
142
+ }
143
+
144
+ function escapeHtml(str: string): string {
145
+ return str
146
+ .replace(/&/g, "&amp;")
147
+ .replace(/</g, "&lt;")
148
+ .replace(/>/g, "&gt;")
149
+ .replace(/"/g, "&quot;")
150
+ .replace(/'/g, "&#039;");
151
+ }
152
+
153
+ export const CodeBlock: ParentComponent<CodeBlockProps> = (props) => {
154
+ const [local, rest] = splitProps(props, [
155
+ "id",
156
+ "code",
157
+ "filename",
158
+ "language",
159
+ "lang",
160
+ "isCli",
161
+ "showPmSwitcher",
162
+ "managers",
163
+ "copyable",
164
+ "class",
165
+ "children",
166
+ ]);
167
+
168
+ const clipboard = createClipboard();
169
+ const [activePm, setActivePm] = createSignal<CodeBlockPackageManager>("bunx");
170
+ const [highlightedHtml, setHighlightedHtml] = createSignal("");
171
+
172
+ const effectiveLang = () => (local.lang || local.language || "tsx").toLowerCase();
173
+ const copyable = () => local.copyable ?? true;
174
+ const defaultManagers: CodeBlockPackageManager[] = ["bunx", "npx", "pnpm", "yarn"];
175
+ const managersList = () => local.managers || defaultManagers;
176
+
177
+ const isBashCli = () => {
178
+ const l = effectiveLang();
179
+ return l === "bash" || l === "sh" || l === "shell" || Boolean(local.isCli);
180
+ };
181
+
182
+ const cleanCode = createMemo(() => {
183
+ const raw = (local.code || "").trim();
184
+ if (local.isCli || local.showPmSwitcher) {
185
+ return transformCommandForPm(raw, activePm());
186
+ }
187
+ return raw;
188
+ });
189
+
190
+ createEffect(() => {
191
+ const codeStr = cleanCode();
192
+ const lang = effectiveLang();
193
+
194
+ if (isBashCli()) {
195
+ setHighlightedHtml(highlightCliCommand(codeStr));
196
+ return;
197
+ }
198
+
199
+ if (!codeStr) {
200
+ setHighlightedHtml("");
201
+ return;
202
+ }
203
+
204
+ // Attempt Shiki highlighting
205
+ getShikiHighlighter().then((highlighter) => {
206
+ if (highlighter) {
207
+ try {
208
+ const html = highlighter.codeToHtml(codeStr, {
209
+ lang: lang === "js" ? "javascript" : lang === "ts" ? "typescript" : lang,
210
+ themes: {
211
+ light: "github-light",
212
+ dark: "github-dark",
213
+ },
214
+ });
215
+ setHighlightedHtml(html);
216
+ return;
217
+ } catch (err) {
218
+ console.warn(`Shiki failed for language: ${lang}`, err);
219
+ }
220
+ }
221
+ // Fallback
222
+ setHighlightedHtml(`<pre class="text-foreground/90"><code>${escapeHtml(codeStr)}</code></pre>`);
223
+ });
224
+ });
225
+
226
+ const handleCopy = async () => {
227
+ let textToCopy = cleanCode();
228
+ if (!textToCopy && typeof window !== "undefined") {
229
+ const target = document.querySelector(`[data-code-block-id="${local.id}"]`);
230
+ if (target) textToCopy = target.textContent || "";
231
+ }
232
+
233
+ if (!textToCopy) return;
234
+ await clipboard.copy(textToCopy);
235
+ };
236
+
237
+ const shouldShowSwitcher = () => Boolean(local.showPmSwitcher || local.isCli);
238
+ const hasHeader = () => Boolean(shouldShowSwitcher() || local.filename || effectiveLang());
239
+
240
+ return (
241
+ <div
242
+ class={cn(
243
+ "group relative my-4 w-full overflow-hidden rounded-lg border border-border bg-muted/40 font-mono text-sm shadow-2xs",
244
+ local.class
245
+ )}
246
+ {...rest}
247
+ >
248
+ {/* Code Header Bar */}
249
+ <Show when={hasHeader()}>
250
+ <div class="flex h-9 items-center justify-between border-b border-border/70 bg-muted/70 px-3.5 text-xs text-muted-foreground select-none">
251
+ <div class="flex items-center gap-2">
252
+ <Show when={shouldShowSwitcher()}>
253
+ <Tabs
254
+ value={activePm()}
255
+ onChange={(val) => setActivePm(val as CodeBlockPackageManager)}
256
+ class="w-auto flex-none"
257
+ >
258
+ <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">
259
+ <For each={managersList()}>
260
+ {(pm) => (
261
+ <TabsTrigger
262
+ value={pm}
263
+ 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"
264
+ >
265
+ {pm}
266
+ </TabsTrigger>
267
+ )}
268
+ </For>
269
+ </TabsList>
270
+ </Tabs>
271
+ </Show>
272
+
273
+ <Show when={local.filename}>
274
+ <span class="font-medium text-foreground tracking-tight">{local.filename}</span>
275
+ </Show>
276
+
277
+ <Show when={effectiveLang() && !shouldShowSwitcher() && !local.filename}>
278
+ <Badge variant="outline" class="uppercase text-[10px] px-1.5 py-0 h-4 font-mono font-semibold">
279
+ {effectiveLang()}
280
+ </Badge>
281
+ </Show>
282
+ </div>
283
+
284
+ <Show when={copyable() && (local.code || cleanCode())}>
285
+ <Tooltip>
286
+ <TooltipTrigger
287
+ as={Button}
288
+ variant="ghost"
289
+ size="icon"
290
+ onClick={handleCopy}
291
+ aria-label={clipboard.copied() ? "Copied code" : "Copy code"}
292
+ class="size-6 p-0 rounded-xs text-muted-foreground hover:bg-background hover:text-foreground cursor-pointer"
293
+ >
294
+ <Show when={clipboard.copied()} fallback={<Copy class="size-3.5" />}>
295
+ <Check class="size-3.5 text-emerald-500 dark:text-emerald-400" />
296
+ </Show>
297
+ </TooltipTrigger>
298
+ <TooltipContent class="text-[10px] py-1 px-2">
299
+ {clipboard.copied() ? "Copied!" : "Copy code"}
300
+ </TooltipContent>
301
+ </Tooltip>
302
+ </Show>
303
+ </div>
304
+ </Show>
305
+
306
+ {/* Floating Copy Button (if no header bar is present) */}
307
+ <Show when={!hasHeader() && copyable() && (local.code || cleanCode())}>
308
+ <div class="absolute right-2.5 top-2.5 z-10 opacity-0 transition-opacity group-hover:opacity-100 focus-within:opacity-100">
309
+ <Tooltip>
310
+ <TooltipTrigger
311
+ as={Button}
312
+ variant="outline"
313
+ size="icon"
314
+ onClick={handleCopy}
315
+ aria-label={clipboard.copied() ? "Copied code" : "Copy code"}
316
+ class="size-7 rounded-md border-border/80 bg-background/90 text-muted-foreground backdrop-blur-xs hover:bg-muted hover:text-foreground cursor-pointer shadow-2xs"
317
+ >
318
+ <Show when={clipboard.copied()} fallback={<Copy class="size-3.5" />}>
319
+ <Check class="size-3.5 text-emerald-500 dark:text-emerald-400" />
320
+ </Show>
321
+ </TooltipTrigger>
322
+ <TooltipContent class="text-[10px] py-1 px-2">
323
+ {clipboard.copied() ? "Copied!" : "Copy code"}
324
+ </TooltipContent>
325
+ </Tooltip>
326
+ </div>
327
+ </Show>
328
+
329
+ {/* Code Container */}
330
+ <div class="overflow-x-auto p-4 text-[13px] leading-relaxed [scrollbar-width:thin]">
331
+ <Show
332
+ when={local.children}
333
+ fallback={
334
+ <div
335
+ class="font-mono text-sm leading-relaxed overflow-x-auto [&>pre]:!bg-transparent [&>pre]:!p-0 [&>pre]:!m-0 [&>pre]:!border-none"
336
+ innerHTML={highlightedHtml() || `<pre class="text-foreground/90"><code>${escapeHtml(cleanCode())}</code></pre>`}
337
+ />
338
+ }
339
+ >
340
+ <pre class="shiki nikala-code-block m-0 overflow-x-auto bg-transparent p-0 font-mono text-xs">
341
+ {local.children}
342
+ </pre>
343
+ </Show>
344
+ </div>
345
+ </div>
346
+ );
347
+ };
@@ -0,0 +1,73 @@
1
+ import { splitProps, type JSX, type ValidComponent } from "solid-js";
2
+ import * as CollapsiblePrimitive from "@kobalte/core/collapsible";
3
+ import type { PolymorphicProps } from "@kobalte/core/polymorphic";
4
+ import { cn } from "@/lib/cn";
5
+
6
+ export type CollapsibleRootProps<T extends ValidComponent = "div"> =
7
+ CollapsiblePrimitive.CollapsibleRootProps<T> & {
8
+ class?: string;
9
+ };
10
+
11
+ /**
12
+ * Root Collapsible component built on Kobalte primitives.
13
+ */
14
+ export const Collapsible = <T extends ValidComponent = "div">(
15
+ props: PolymorphicProps<T, CollapsibleRootProps<T>>
16
+ ) => {
17
+ const [local, rest] = splitProps(props as CollapsibleRootProps, ["class"]);
18
+ return (
19
+ <CollapsiblePrimitive.Root
20
+ class={cn("w-full", local.class)}
21
+ {...(rest as any)}
22
+ />
23
+ );
24
+ };
25
+
26
+ export type CollapsibleTriggerProps<T extends ValidComponent = "button"> =
27
+ CollapsiblePrimitive.CollapsibleTriggerProps<T> & {
28
+ class?: string;
29
+ children?: JSX.Element;
30
+ };
31
+
32
+ /**
33
+ * Trigger element that toggles the Collapsible open/closed state.
34
+ */
35
+ export const CollapsibleTrigger = <T extends ValidComponent = "button">(
36
+ props: PolymorphicProps<T, CollapsibleTriggerProps<T>>
37
+ ) => {
38
+ const [local, rest] = splitProps(props as CollapsibleTriggerProps, ["class", "children"]);
39
+ return (
40
+ <CollapsiblePrimitive.Trigger
41
+ class={cn("flex w-full items-center justify-between cursor-pointer", local.class)}
42
+ {...rest}
43
+ >
44
+ {local.children}
45
+ </CollapsiblePrimitive.Trigger>
46
+ );
47
+ };
48
+
49
+ export type CollapsibleContentProps<T extends ValidComponent = "div"> =
50
+ CollapsiblePrimitive.CollapsibleContentProps<T> & {
51
+ class?: string;
52
+ children?: JSX.Element;
53
+ };
54
+
55
+ /**
56
+ * Collapsible content panel revealed when opened.
57
+ */
58
+ export const CollapsibleContent = <T extends ValidComponent = "div">(
59
+ props: PolymorphicProps<T, CollapsibleContentProps<T>>
60
+ ) => {
61
+ const [local, rest] = splitProps(props as CollapsibleContentProps, ["class", "children"]);
62
+ return (
63
+ <CollapsiblePrimitive.Content
64
+ class={cn(
65
+ "overflow-hidden transition-all data-expanded:animate-collapsible-down data-closed:animate-collapsible-up",
66
+ local.class
67
+ )}
68
+ {...rest}
69
+ >
70
+ {local.children}
71
+ </CollapsiblePrimitive.Content>
72
+ );
73
+ };