@repraze/kernelkit 0.0.0-stage → 0.1.0-alpha.1

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 (584) hide show
  1. package/README.md +41 -2
  2. package/dist/components/accordion.d.ts +13 -0
  3. package/dist/components/accordion.d.ts.map +1 -0
  4. package/dist/components/accordion.js +33 -0
  5. package/dist/components/accordion.js.map +1 -0
  6. package/dist/components/alert-dialog.d.ts +24 -0
  7. package/dist/components/alert-dialog.d.ts.map +1 -0
  8. package/dist/components/alert-dialog.js +49 -0
  9. package/dist/components/alert-dialog.js.map +1 -0
  10. package/dist/components/alert.d.ts +22 -0
  11. package/dist/components/alert.d.ts.map +1 -0
  12. package/dist/components/alert.js +61 -0
  13. package/dist/components/alert.js.map +1 -0
  14. package/dist/components/aspect-ratio.d.ts +10 -0
  15. package/dist/components/aspect-ratio.d.ts.map +1 -0
  16. package/dist/components/aspect-ratio.js +18 -0
  17. package/dist/components/aspect-ratio.js.map +1 -0
  18. package/dist/components/attachment.d.ts +27 -0
  19. package/dist/components/attachment.d.ts.map +1 -0
  20. package/dist/components/attachment.js +76 -0
  21. package/dist/components/attachment.js.map +1 -0
  22. package/dist/components/avatar.d.ts +18 -0
  23. package/dist/components/avatar.d.ts.map +1 -0
  24. package/dist/components/avatar.js +38 -0
  25. package/dist/components/avatar.js.map +1 -0
  26. package/dist/components/badge.d.ts +18 -0
  27. package/dist/components/badge.d.ts.map +1 -0
  28. package/dist/components/badge.js +49 -0
  29. package/dist/components/badge.js.map +1 -0
  30. package/dist/components/breadcrumb.d.ts +11 -0
  31. package/dist/components/breadcrumb.d.ts.map +1 -0
  32. package/dist/components/breadcrumb.js +40 -0
  33. package/dist/components/breadcrumb.js.map +1 -0
  34. package/dist/components/bubble.d.ts +22 -0
  35. package/dist/components/bubble.d.ts.map +1 -0
  36. package/dist/components/bubble.js +72 -0
  37. package/dist/components/bubble.js.map +1 -0
  38. package/dist/components/button-group.d.ts +11 -0
  39. package/dist/components/button-group.d.ts.map +1 -0
  40. package/dist/components/button-group.js +38 -0
  41. package/dist/components/button-group.js.map +1 -0
  42. package/dist/components/button.d.ts +26 -0
  43. package/dist/components/button.d.ts.map +1 -0
  44. package/dist/components/button.js +78 -0
  45. package/dist/components/button.js.map +1 -0
  46. package/dist/components/calendar.d.ts +11 -0
  47. package/dist/components/calendar.d.ts.map +1 -0
  48. package/dist/components/calendar.js +89 -0
  49. package/dist/components/calendar.js.map +1 -0
  50. package/dist/components/callout.d.ts +25 -0
  51. package/dist/components/callout.d.ts.map +1 -0
  52. package/dist/components/callout.js +40 -0
  53. package/dist/components/callout.js.map +1 -0
  54. package/dist/components/card.d.ts +43 -0
  55. package/dist/components/card.d.ts.map +1 -0
  56. package/dist/components/card.js +80 -0
  57. package/dist/components/card.js.map +1 -0
  58. package/dist/components/carousel.d.ts +36 -0
  59. package/dist/components/carousel.d.ts.map +1 -0
  60. package/dist/components/carousel.js +148 -0
  61. package/dist/components/carousel.js.map +1 -0
  62. package/dist/components/chart.d.ts +45 -0
  63. package/dist/components/chart.d.ts.map +1 -0
  64. package/dist/components/chart.js +137 -0
  65. package/dist/components/chart.js.map +1 -0
  66. package/dist/components/checkbox-group.d.ts +9 -0
  67. package/dist/components/checkbox-group.d.ts.map +1 -0
  68. package/dist/components/checkbox-group.js +14 -0
  69. package/dist/components/checkbox-group.js.map +1 -0
  70. package/dist/components/checkbox.d.ts +6 -0
  71. package/dist/components/checkbox.d.ts.map +1 -0
  72. package/dist/components/checkbox.js +27 -0
  73. package/dist/components/checkbox.js.map +1 -0
  74. package/dist/components/code-block.d.ts +29 -0
  75. package/dist/components/code-block.d.ts.map +1 -0
  76. package/dist/components/code-block.js +87 -0
  77. package/dist/components/code-block.js.map +1 -0
  78. package/dist/components/collapsible.d.ts +11 -0
  79. package/dist/components/collapsible.d.ts.map +1 -0
  80. package/dist/components/collapsible.js +21 -0
  81. package/dist/components/collapsible.js.map +1 -0
  82. package/dist/components/combobox.d.ts +26 -0
  83. package/dist/components/combobox.d.ts.map +1 -0
  84. package/dist/components/combobox.js +66 -0
  85. package/dist/components/combobox.js.map +1 -0
  86. package/dist/components/command.d.ts +25 -0
  87. package/dist/components/command.d.ts.map +1 -0
  88. package/dist/components/command.js +48 -0
  89. package/dist/components/command.js.map +1 -0
  90. package/dist/components/context-menu.d.ts +32 -0
  91. package/dist/components/context-menu.d.ts.map +1 -0
  92. package/dist/components/context-menu.js +58 -0
  93. package/dist/components/context-menu.js.map +1 -0
  94. package/dist/components/copy-button.d.ts +21 -0
  95. package/dist/components/copy-button.d.ts.map +1 -0
  96. package/dist/components/copy-button.js +34 -0
  97. package/dist/components/copy-button.js.map +1 -0
  98. package/dist/components/data-table/data-table-utils.d.ts +18 -0
  99. package/dist/components/data-table/data-table-utils.d.ts.map +1 -0
  100. package/dist/components/data-table/data-table-utils.js +92 -0
  101. package/dist/components/data-table/data-table-utils.js.map +1 -0
  102. package/dist/components/data-table/elements/data-table-base.d.ts +24 -0
  103. package/dist/components/data-table/elements/data-table-base.d.ts.map +1 -0
  104. package/dist/components/data-table/elements/data-table-base.js +28 -0
  105. package/dist/components/data-table/elements/data-table-base.js.map +1 -0
  106. package/dist/components/data-table/elements/data-table-body.d.ts +8 -0
  107. package/dist/components/data-table/elements/data-table-body.d.ts.map +1 -0
  108. package/dist/components/data-table/elements/data-table-body.js +16 -0
  109. package/dist/components/data-table/elements/data-table-body.js.map +1 -0
  110. package/dist/components/data-table/elements/data-table-cell.d.ts +12 -0
  111. package/dist/components/data-table/elements/data-table-cell.d.ts.map +1 -0
  112. package/dist/components/data-table/elements/data-table-cell.js +23 -0
  113. package/dist/components/data-table/elements/data-table-cell.js.map +1 -0
  114. package/dist/components/data-table/elements/data-table-filter-row.d.ts +40 -0
  115. package/dist/components/data-table/elements/data-table-filter-row.d.ts.map +1 -0
  116. package/dist/components/data-table/elements/data-table-filter-row.js +117 -0
  117. package/dist/components/data-table/elements/data-table-filter-row.js.map +1 -0
  118. package/dist/components/data-table/elements/data-table-foot.d.ts +9 -0
  119. package/dist/components/data-table/elements/data-table-foot.d.ts.map +1 -0
  120. package/dist/components/data-table/elements/data-table-foot.js +11 -0
  121. package/dist/components/data-table/elements/data-table-foot.js.map +1 -0
  122. package/dist/components/data-table/elements/data-table-head.d.ts +9 -0
  123. package/dist/components/data-table/elements/data-table-head.d.ts.map +1 -0
  124. package/dist/components/data-table/elements/data-table-head.js +11 -0
  125. package/dist/components/data-table/elements/data-table-head.js.map +1 -0
  126. package/dist/components/data-table/elements/data-table-info-row.d.ts +7 -0
  127. package/dist/components/data-table/elements/data-table-info-row.d.ts.map +1 -0
  128. package/dist/components/data-table/elements/data-table-info-row.js +19 -0
  129. package/dist/components/data-table/elements/data-table-info-row.js.map +1 -0
  130. package/dist/components/data-table/elements/data-table-row.d.ts +13 -0
  131. package/dist/components/data-table/elements/data-table-row.d.ts.map +1 -0
  132. package/dist/components/data-table/elements/data-table-row.js +19 -0
  133. package/dist/components/data-table/elements/data-table-row.js.map +1 -0
  134. package/dist/components/data-table/elements/data-table-scroll.d.ts +11 -0
  135. package/dist/components/data-table/elements/data-table-scroll.d.ts.map +1 -0
  136. package/dist/components/data-table/elements/data-table-scroll.js +10 -0
  137. package/dist/components/data-table/elements/data-table-scroll.js.map +1 -0
  138. package/dist/components/data-table/elements/data-table-sort-row.d.ts +28 -0
  139. package/dist/components/data-table/elements/data-table-sort-row.d.ts.map +1 -0
  140. package/dist/components/data-table/elements/data-table-sort-row.js +114 -0
  141. package/dist/components/data-table/elements/data-table-sort-row.js.map +1 -0
  142. package/dist/components/data-table/elements/data-table-title-row.d.ts +11 -0
  143. package/dist/components/data-table/elements/data-table-title-row.d.ts.map +1 -0
  144. package/dist/components/data-table/elements/data-table-title-row.js +16 -0
  145. package/dist/components/data-table/elements/data-table-title-row.js.map +1 -0
  146. package/dist/components/data-table/elements/data-table-virtualized-body.d.ts +10 -0
  147. package/dist/components/data-table/elements/data-table-virtualized-body.d.ts.map +1 -0
  148. package/dist/components/data-table/elements/data-table-virtualized-body.js +38 -0
  149. package/dist/components/data-table/elements/data-table-virtualized-body.js.map +1 -0
  150. package/dist/components/data-table/set-utils.d.ts +41 -0
  151. package/dist/components/data-table/set-utils.d.ts.map +1 -0
  152. package/dist/components/data-table/set-utils.js +97 -0
  153. package/dist/components/data-table/set-utils.js.map +1 -0
  154. package/dist/components/data-table/views/data-table-filter-view.d.ts +18 -0
  155. package/dist/components/data-table/views/data-table-filter-view.d.ts.map +1 -0
  156. package/dist/components/data-table/views/data-table-filter-view.js +63 -0
  157. package/dist/components/data-table/views/data-table-filter-view.js.map +1 -0
  158. package/dist/components/data-table/views/data-table-prop-view.d.ts +297 -0
  159. package/dist/components/data-table/views/data-table-prop-view.d.ts.map +1 -0
  160. package/dist/components/data-table/views/data-table-prop-view.js +44 -0
  161. package/dist/components/data-table/views/data-table-prop-view.js.map +1 -0
  162. package/dist/components/data-table/views/data-table-root-view.d.ts +8 -0
  163. package/dist/components/data-table/views/data-table-root-view.d.ts.map +1 -0
  164. package/dist/components/data-table/views/data-table-root-view.js +18 -0
  165. package/dist/components/data-table/views/data-table-root-view.js.map +1 -0
  166. package/dist/components/data-table/views/data-table-sort-view.d.ts +18 -0
  167. package/dist/components/data-table/views/data-table-sort-view.d.ts.map +1 -0
  168. package/dist/components/data-table/views/data-table-sort-view.js +70 -0
  169. package/dist/components/data-table/views/data-table-sort-view.js.map +1 -0
  170. package/dist/components/data-table/views/data-table-view.d.ts +44 -0
  171. package/dist/components/data-table/views/data-table-view.d.ts.map +1 -0
  172. package/dist/components/data-table/views/data-table-view.js +86 -0
  173. package/dist/components/data-table/views/data-table-view.js.map +1 -0
  174. package/dist/components/data-table.d.ts +20 -0
  175. package/dist/components/data-table.d.ts.map +1 -0
  176. package/dist/components/data-table.js +26 -0
  177. package/dist/components/data-table.js.map +1 -0
  178. package/dist/components/date-picker.d.ts +43 -0
  179. package/dist/components/date-picker.d.ts.map +1 -0
  180. package/dist/components/date-picker.js +45 -0
  181. package/dist/components/date-picker.js.map +1 -0
  182. package/dist/components/dialog.d.ts +24 -0
  183. package/dist/components/dialog.d.ts.map +1 -0
  184. package/dist/components/dialog.js +57 -0
  185. package/dist/components/dialog.js.map +1 -0
  186. package/dist/components/direction.d.ts +2 -0
  187. package/dist/components/direction.d.ts.map +1 -0
  188. package/dist/components/direction.js +3 -0
  189. package/dist/components/direction.js.map +1 -0
  190. package/dist/components/drawer.d.ts +18 -0
  191. package/dist/components/drawer.d.ts.map +1 -0
  192. package/dist/components/drawer.js +84 -0
  193. package/dist/components/drawer.js.map +1 -0
  194. package/dist/components/dropdown-menu.d.ts +45 -0
  195. package/dist/components/dropdown-menu.d.ts.map +1 -0
  196. package/dist/components/dropdown-menu.js +77 -0
  197. package/dist/components/dropdown-menu.js.map +1 -0
  198. package/dist/components/empty.d.ts +15 -0
  199. package/dist/components/empty.d.ts.map +1 -0
  200. package/dist/components/empty.js +44 -0
  201. package/dist/components/empty.js.map +1 -0
  202. package/dist/components/field.d.ts +25 -0
  203. package/dist/components/field.d.ts.map +1 -0
  204. package/dist/components/field.js +72 -0
  205. package/dist/components/field.js.map +1 -0
  206. package/dist/components/file-upload.d.ts +24 -0
  207. package/dist/components/file-upload.d.ts.map +1 -0
  208. package/dist/components/file-upload.js +78 -0
  209. package/dist/components/file-upload.js.map +1 -0
  210. package/dist/components/hero.d.ts +51 -0
  211. package/dist/components/hero.d.ts.map +1 -0
  212. package/dist/components/hero.js +104 -0
  213. package/dist/components/hero.js.map +1 -0
  214. package/dist/components/hover-card.d.ts +6 -0
  215. package/dist/components/hover-card.d.ts.map +1 -0
  216. package/dist/components/hover-card.js +17 -0
  217. package/dist/components/hover-card.js.map +1 -0
  218. package/dist/components/input-group.d.ts +23 -0
  219. package/dist/components/input-group.d.ts.map +1 -0
  220. package/dist/components/input-group.js +86 -0
  221. package/dist/components/input-group.js.map +1 -0
  222. package/dist/components/input-otp.d.ts +13 -0
  223. package/dist/components/input-otp.d.ts.map +1 -0
  224. package/dist/components/input-otp.js +25 -0
  225. package/dist/components/input-otp.js.map +1 -0
  226. package/dist/components/input.d.ts +13 -0
  227. package/dist/components/input.d.ts.map +1 -0
  228. package/dist/components/input.js +29 -0
  229. package/dist/components/input.js.map +1 -0
  230. package/dist/components/item.d.ts +23 -0
  231. package/dist/components/item.d.ts.map +1 -0
  232. package/dist/components/item.js +89 -0
  233. package/dist/components/item.js.map +1 -0
  234. package/dist/components/kbd.d.ts +11 -0
  235. package/dist/components/kbd.d.ts.map +1 -0
  236. package/dist/components/kbd.js +26 -0
  237. package/dist/components/kbd.js.map +1 -0
  238. package/dist/components/label.d.ts +4 -0
  239. package/dist/components/label.d.ts.map +1 -0
  240. package/dist/components/label.js +9 -0
  241. package/dist/components/label.js.map +1 -0
  242. package/dist/components/marker.d.ts +11 -0
  243. package/dist/components/marker.d.ts.map +1 -0
  244. package/dist/components/marker.js +37 -0
  245. package/dist/components/marker.js.map +1 -0
  246. package/dist/components/menubar.d.ts +23 -0
  247. package/dist/components/menubar.d.ts.map +1 -0
  248. package/dist/components/menubar.js +60 -0
  249. package/dist/components/menubar.js.map +1 -0
  250. package/dist/components/message-scroller.d.ts +11 -0
  251. package/dist/components/message-scroller.d.ts.map +1 -0
  252. package/dist/components/message-scroller.js +27 -0
  253. package/dist/components/message-scroller.js.map +1 -0
  254. package/dist/components/message.d.ts +17 -0
  255. package/dist/components/message.d.ts.map +1 -0
  256. package/dist/components/message.js +24 -0
  257. package/dist/components/message.js.map +1 -0
  258. package/dist/components/meter.d.ts +18 -0
  259. package/dist/components/meter.d.ts.map +1 -0
  260. package/dist/components/meter.js +25 -0
  261. package/dist/components/meter.js.map +1 -0
  262. package/dist/components/native-select.d.ts +14 -0
  263. package/dist/components/native-select.d.ts.map +1 -0
  264. package/dist/components/native-select.js +34 -0
  265. package/dist/components/native-select.js.map +1 -0
  266. package/dist/components/navbar.d.ts +11 -0
  267. package/dist/components/navbar.d.ts.map +1 -0
  268. package/dist/components/navbar.js +44 -0
  269. package/dist/components/navbar.js.map +1 -0
  270. package/dist/components/navigation-menu.d.ts +23 -0
  271. package/dist/components/navigation-menu.d.ts.map +1 -0
  272. package/dist/components/navigation-menu.js +51 -0
  273. package/dist/components/navigation-menu.js.map +1 -0
  274. package/dist/components/number-field.d.ts +16 -0
  275. package/dist/components/number-field.d.ts.map +1 -0
  276. package/dist/components/number-field.js +49 -0
  277. package/dist/components/number-field.js.map +1 -0
  278. package/dist/components/page-header.d.ts +13 -0
  279. package/dist/components/page-header.d.ts.map +1 -0
  280. package/dist/components/page-header.js +51 -0
  281. package/dist/components/page-header.js.map +1 -0
  282. package/dist/components/pager.d.ts +14 -0
  283. package/dist/components/pager.d.ts.map +1 -0
  284. package/dist/components/pager.js +36 -0
  285. package/dist/components/pager.js.map +1 -0
  286. package/dist/components/pagination.d.ts +21 -0
  287. package/dist/components/pagination.d.ts.map +1 -0
  288. package/dist/components/pagination.js +29 -0
  289. package/dist/components/pagination.js.map +1 -0
  290. package/dist/components/password-input.d.ts +18 -0
  291. package/dist/components/password-input.d.ts.map +1 -0
  292. package/dist/components/password-input.js +17 -0
  293. package/dist/components/password-input.js.map +1 -0
  294. package/dist/components/password-strength.d.ts +21 -0
  295. package/dist/components/password-strength.d.ts.map +1 -0
  296. package/dist/components/password-strength.js +52 -0
  297. package/dist/components/password-strength.js.map +1 -0
  298. package/dist/components/popover.d.ts +10 -0
  299. package/dist/components/popover.d.ts.map +1 -0
  300. package/dist/components/popover.js +27 -0
  301. package/dist/components/popover.js.map +1 -0
  302. package/dist/components/progress.d.ts +26 -0
  303. package/dist/components/progress.d.ts.map +1 -0
  304. package/dist/components/progress.js +39 -0
  305. package/dist/components/progress.js.map +1 -0
  306. package/dist/components/questionnaire.d.ts +20 -0
  307. package/dist/components/questionnaire.d.ts.map +1 -0
  308. package/dist/components/questionnaire.js +57 -0
  309. package/dist/components/questionnaire.js.map +1 -0
  310. package/dist/components/radio-group.d.ts +8 -0
  311. package/dist/components/radio-group.d.ts.map +1 -0
  312. package/dist/components/radio-group.js +27 -0
  313. package/dist/components/radio-group.js.map +1 -0
  314. package/dist/components/resizable.d.ts +13 -0
  315. package/dist/components/resizable.d.ts.map +1 -0
  316. package/dist/components/resizable.js +24 -0
  317. package/dist/components/resizable.js.map +1 -0
  318. package/dist/components/scroll-area.d.ts +17 -0
  319. package/dist/components/scroll-area.d.ts.map +1 -0
  320. package/dist/components/scroll-area.js +12 -0
  321. package/dist/components/scroll-area.js.map +1 -0
  322. package/dist/components/search-dialog.d.ts +38 -0
  323. package/dist/components/search-dialog.d.ts.map +1 -0
  324. package/dist/components/search-dialog.js +39 -0
  325. package/dist/components/search-dialog.js.map +1 -0
  326. package/dist/components/search-trigger.d.ts +20 -0
  327. package/dist/components/search-trigger.d.ts.map +1 -0
  328. package/dist/components/search-trigger.js +52 -0
  329. package/dist/components/search-trigger.js.map +1 -0
  330. package/dist/components/section.d.ts +30 -0
  331. package/dist/components/section.d.ts.map +1 -0
  332. package/dist/components/section.js +79 -0
  333. package/dist/components/section.js.map +1 -0
  334. package/dist/components/select.d.ts +16 -0
  335. package/dist/components/select.d.ts.map +1 -0
  336. package/dist/components/select.js +38 -0
  337. package/dist/components/select.js.map +1 -0
  338. package/dist/components/separator.d.ts +4 -0
  339. package/dist/components/separator.d.ts.map +1 -0
  340. package/dist/components/separator.js +9 -0
  341. package/dist/components/separator.js.map +1 -0
  342. package/dist/components/sheet.d.ts +16 -0
  343. package/dist/components/sheet.d.ts.map +1 -0
  344. package/dist/components/sheet.js +44 -0
  345. package/dist/components/sheet.js.map +1 -0
  346. package/dist/components/sidebar.d.ts +76 -0
  347. package/dist/components/sidebar.d.ts.map +1 -0
  348. package/dist/components/sidebar.js +289 -0
  349. package/dist/components/sidebar.js.map +1 -0
  350. package/dist/components/site-footer.d.ts +22 -0
  351. package/dist/components/site-footer.d.ts.map +1 -0
  352. package/dist/components/site-footer.js +42 -0
  353. package/dist/components/site-footer.js.map +1 -0
  354. package/dist/components/site-header.d.ts +48 -0
  355. package/dist/components/site-header.d.ts.map +1 -0
  356. package/dist/components/site-header.js +104 -0
  357. package/dist/components/site-header.js.map +1 -0
  358. package/dist/components/site-layout.d.ts +35 -0
  359. package/dist/components/site-layout.d.ts.map +1 -0
  360. package/dist/components/site-layout.js +99 -0
  361. package/dist/components/site-layout.js.map +1 -0
  362. package/dist/components/skeleton.d.ts +6 -0
  363. package/dist/components/skeleton.d.ts.map +1 -0
  364. package/dist/components/skeleton.js +16 -0
  365. package/dist/components/skeleton.js.map +1 -0
  366. package/dist/components/slider.d.ts +4 -0
  367. package/dist/components/slider.d.ts.map +1 -0
  368. package/dist/components/slider.js +11 -0
  369. package/dist/components/slider.js.map +1 -0
  370. package/dist/components/spinner.d.ts +12 -0
  371. package/dist/components/spinner.d.ts.map +1 -0
  372. package/dist/components/spinner.js +26 -0
  373. package/dist/components/spinner.js.map +1 -0
  374. package/dist/components/stat.d.ts +31 -0
  375. package/dist/components/stat.d.ts.map +1 -0
  376. package/dist/components/stat.js +66 -0
  377. package/dist/components/stat.js.map +1 -0
  378. package/dist/components/status-dot.d.ts +25 -0
  379. package/dist/components/status-dot.d.ts.map +1 -0
  380. package/dist/components/status-dot.js +45 -0
  381. package/dist/components/status-dot.js.map +1 -0
  382. package/dist/components/switch.d.ts +17 -0
  383. package/dist/components/switch.d.ts.map +1 -0
  384. package/dist/components/switch.js +49 -0
  385. package/dist/components/switch.js.map +1 -0
  386. package/dist/components/table.d.ts +25 -0
  387. package/dist/components/table.d.ts.map +1 -0
  388. package/dist/components/table.js +45 -0
  389. package/dist/components/table.js.map +1 -0
  390. package/dist/components/tabs.d.ts +18 -0
  391. package/dist/components/tabs.d.ts.map +1 -0
  392. package/dist/components/tabs.js +51 -0
  393. package/dist/components/tabs.js.map +1 -0
  394. package/dist/components/textarea.d.ts +4 -0
  395. package/dist/components/textarea.d.ts.map +1 -0
  396. package/dist/components/textarea.js +10 -0
  397. package/dist/components/textarea.js.map +1 -0
  398. package/dist/components/toast.d.ts +27 -0
  399. package/dist/components/toast.d.ts.map +1 -0
  400. package/dist/components/toast.js +68 -0
  401. package/dist/components/toast.js.map +1 -0
  402. package/dist/components/toc.d.ts +35 -0
  403. package/dist/components/toc.d.ts.map +1 -0
  404. package/dist/components/toc.js +94 -0
  405. package/dist/components/toc.js.map +1 -0
  406. package/dist/components/toggle-group.d.ts +19 -0
  407. package/dist/components/toggle-group.d.ts.map +1 -0
  408. package/dist/components/toggle-group.js +33 -0
  409. package/dist/components/toggle-group.js.map +1 -0
  410. package/dist/components/toggle.d.ts +15 -0
  411. package/dist/components/toggle.d.ts.map +1 -0
  412. package/dist/components/toggle.js +42 -0
  413. package/dist/components/toggle.js.map +1 -0
  414. package/dist/components/toolbar.d.ts +14 -0
  415. package/dist/components/toolbar.d.ts.map +1 -0
  416. package/dist/components/toolbar.js +37 -0
  417. package/dist/components/toolbar.js.map +1 -0
  418. package/dist/components/tooltip.d.ts +7 -0
  419. package/dist/components/tooltip.d.ts.map +1 -0
  420. package/dist/components/tooltip.js +22 -0
  421. package/dist/components/tooltip.js.map +1 -0
  422. package/dist/components/trace.d.ts +20 -0
  423. package/dist/components/trace.d.ts.map +1 -0
  424. package/dist/components/trace.js +32 -0
  425. package/dist/components/trace.js.map +1 -0
  426. package/dist/components/typography.d.ts +37 -0
  427. package/dist/components/typography.d.ts.map +1 -0
  428. package/dist/components/typography.js +140 -0
  429. package/dist/components/typography.js.map +1 -0
  430. package/dist/hooks/use-highlighted-code.d.ts +3 -0
  431. package/dist/hooks/use-highlighted-code.d.ts.map +1 -0
  432. package/dist/hooks/use-highlighted-code.js +50 -0
  433. package/dist/hooks/use-highlighted-code.js.map +1 -0
  434. package/dist/hooks/use-mobile.d.ts +2 -0
  435. package/dist/hooks/use-mobile.d.ts.map +1 -0
  436. package/dist/hooks/use-mobile.js +16 -0
  437. package/dist/hooks/use-mobile.js.map +1 -0
  438. package/dist/lib/color.d.ts +30 -0
  439. package/dist/lib/color.d.ts.map +1 -0
  440. package/dist/lib/color.js +56 -0
  441. package/dist/lib/color.js.map +1 -0
  442. package/dist/lib/highlighter.d.ts +10 -0
  443. package/dist/lib/highlighter.d.ts.map +1 -0
  444. package/dist/lib/highlighter.js +94 -0
  445. package/dist/lib/highlighter.js.map +1 -0
  446. package/dist/lib/recipes.d.ts +30 -0
  447. package/dist/lib/recipes.d.ts.map +1 -0
  448. package/dist/lib/recipes.js +30 -0
  449. package/dist/lib/recipes.js.map +1 -0
  450. package/dist/lib/utils.d.ts +2 -0
  451. package/dist/lib/utils.d.ts.map +1 -0
  452. package/dist/lib/utils.js +2 -0
  453. package/dist/lib/utils.js.map +1 -0
  454. package/dist/provider/index.d.ts +3 -0
  455. package/dist/provider/index.d.ts.map +1 -0
  456. package/dist/provider/index.js +3 -0
  457. package/dist/provider/index.js.map +1 -0
  458. package/dist/provider/theme-provider.d.ts +47 -0
  459. package/dist/provider/theme-provider.d.ts.map +1 -0
  460. package/dist/provider/theme-provider.js +118 -0
  461. package/dist/provider/theme-provider.js.map +1 -0
  462. package/dist/provider/theme.d.ts +42 -0
  463. package/dist/provider/theme.d.ts.map +1 -0
  464. package/dist/provider/theme.js +58 -0
  465. package/dist/provider/theme.js.map +1 -0
  466. package/package.json +145 -5
  467. package/src/components/accordion.tsx +92 -0
  468. package/src/components/alert-dialog.tsx +167 -0
  469. package/src/components/alert.tsx +110 -0
  470. package/src/components/aspect-ratio.tsx +29 -0
  471. package/src/components/attachment.tsx +198 -0
  472. package/src/components/avatar.tsx +115 -0
  473. package/src/components/badge.tsx +75 -0
  474. package/src/components/breadcrumb.tsx +104 -0
  475. package/src/components/bubble.tsx +125 -0
  476. package/src/components/button-group.tsx +75 -0
  477. package/src/components/button.tsx +124 -0
  478. package/src/components/calendar.tsx +204 -0
  479. package/src/components/callout.tsx +131 -0
  480. package/src/components/card.tsx +178 -0
  481. package/src/components/carousel.tsx +329 -0
  482. package/src/components/chart.tsx +332 -0
  483. package/src/components/checkbox-group.tsx +21 -0
  484. package/src/components/checkbox.tsx +39 -0
  485. package/src/components/code-block.tsx +246 -0
  486. package/src/components/collapsible.tsx +47 -0
  487. package/src/components/combobox.tsx +295 -0
  488. package/src/components/command.tsx +174 -0
  489. package/src/components/context-menu.tsx +238 -0
  490. package/src/components/copy-button.tsx +80 -0
  491. package/src/components/data-table/data-table-utils.tsx +125 -0
  492. package/src/components/data-table/elements/data-table-base.tsx +78 -0
  493. package/src/components/data-table/elements/data-table-body.tsx +50 -0
  494. package/src/components/data-table/elements/data-table-cell.tsx +42 -0
  495. package/src/components/data-table/elements/data-table-filter-row.tsx +222 -0
  496. package/src/components/data-table/elements/data-table-foot.tsx +36 -0
  497. package/src/components/data-table/elements/data-table-head.tsx +36 -0
  498. package/src/components/data-table/elements/data-table-info-row.tsx +38 -0
  499. package/src/components/data-table/elements/data-table-row.tsx +58 -0
  500. package/src/components/data-table/elements/data-table-scroll.tsx +33 -0
  501. package/src/components/data-table/elements/data-table-sort-row.tsx +180 -0
  502. package/src/components/data-table/elements/data-table-title-row.tsx +33 -0
  503. package/src/components/data-table/elements/data-table-virtualized-body.tsx +87 -0
  504. package/src/components/data-table/set-utils.ts +103 -0
  505. package/src/components/data-table/views/data-table-filter-view.tsx +75 -0
  506. package/src/components/data-table/views/data-table-prop-view.tsx +55 -0
  507. package/src/components/data-table/views/data-table-root-view.tsx +20 -0
  508. package/src/components/data-table/views/data-table-sort-view.tsx +81 -0
  509. package/src/components/data-table/views/data-table-view.tsx +147 -0
  510. package/src/components/data-table.tsx +30 -0
  511. package/src/components/date-picker.tsx +166 -0
  512. package/src/components/dialog.tsx +158 -0
  513. package/src/components/direction.tsx +3 -0
  514. package/src/components/drawer.tsx +222 -0
  515. package/src/components/dropdown-menu.tsx +267 -0
  516. package/src/components/empty.tsx +97 -0
  517. package/src/components/field.tsx +229 -0
  518. package/src/components/file-upload.tsx +180 -0
  519. package/src/components/hero.tsx +207 -0
  520. package/src/components/hover-card.tsx +44 -0
  521. package/src/components/input-group.tsx +186 -0
  522. package/src/components/input-otp.tsx +82 -0
  523. package/src/components/input.tsx +50 -0
  524. package/src/components/item.tsx +191 -0
  525. package/src/components/kbd.tsx +39 -0
  526. package/src/components/label.tsx +19 -0
  527. package/src/components/marker.tsx +69 -0
  528. package/src/components/menubar.tsx +146 -0
  529. package/src/components/message-scroller.tsx +113 -0
  530. package/src/components/message.tsx +90 -0
  531. package/src/components/meter.tsx +69 -0
  532. package/src/components/native-select.tsx +76 -0
  533. package/src/components/navbar.tsx +55 -0
  534. package/src/components/navigation-menu.tsx +193 -0
  535. package/src/components/number-field.tsx +133 -0
  536. package/src/components/page-header.tsx +63 -0
  537. package/src/components/pager.tsx +70 -0
  538. package/src/components/pagination.tsx +106 -0
  539. package/src/components/password-input.tsx +71 -0
  540. package/src/components/password-strength.tsx +99 -0
  541. package/src/components/popover.tsx +68 -0
  542. package/src/components/progress.tsx +105 -0
  543. package/src/components/questionnaire.tsx +299 -0
  544. package/src/components/radio-group.tsx +43 -0
  545. package/src/components/resizable.tsx +62 -0
  546. package/src/components/scroll-area.tsx +68 -0
  547. package/src/components/search-dialog.tsx +87 -0
  548. package/src/components/search-trigger.tsx +74 -0
  549. package/src/components/section.tsx +110 -0
  550. package/src/components/select.tsx +184 -0
  551. package/src/components/separator.tsx +20 -0
  552. package/src/components/sheet.tsx +116 -0
  553. package/src/components/sidebar.tsx +722 -0
  554. package/src/components/site-footer.tsx +55 -0
  555. package/src/components/site-header.tsx +169 -0
  556. package/src/components/site-layout.tsx +147 -0
  557. package/src/components/skeleton.tsx +19 -0
  558. package/src/components/slider.tsx +46 -0
  559. package/src/components/spinner.tsx +42 -0
  560. package/src/components/stat.tsx +155 -0
  561. package/src/components/status-dot.tsx +94 -0
  562. package/src/components/switch.tsx +70 -0
  563. package/src/components/table.tsx +133 -0
  564. package/src/components/tabs.tsx +99 -0
  565. package/src/components/textarea.tsx +23 -0
  566. package/src/components/toast.tsx +221 -0
  567. package/src/components/toc.tsx +122 -0
  568. package/src/components/toggle-group.tsx +95 -0
  569. package/src/components/toggle.tsx +59 -0
  570. package/src/components/toolbar.tsx +97 -0
  571. package/src/components/tooltip.tsx +57 -0
  572. package/src/components/trace.tsx +143 -0
  573. package/src/components/typography.tsx +205 -0
  574. package/src/hooks/use-highlighted-code.ts +71 -0
  575. package/src/hooks/use-mobile.ts +19 -0
  576. package/src/lib/color.ts +76 -0
  577. package/src/lib/highlighter.tsx +121 -0
  578. package/src/lib/recipes.ts +47 -0
  579. package/src/lib/utils.ts +1 -0
  580. package/src/provider/index.ts +2 -0
  581. package/src/provider/theme-provider.tsx +210 -0
  582. package/src/provider/theme.ts +83 -0
  583. package/src/styles/kernelkit.css +301 -0
  584. package/src/styles/shadcn.css +555 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/lib/recipes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wDAAwD;AACxD,eAAO,MAAM,SAAS,2FAA2F,CAAC;AAElH,2CAA2C;AAC3C,eAAO,MAAM,WAAW,gHACyF,CAAC;AAElH,iGAAiG;AACjG,eAAO,MAAM,YAAY,qNAC6L,CAAC;AAEvN,iFAAiF;AACjF,eAAO,MAAM,YAAY,+GACuF,CAAC;AAEjH,oCAAoC;AACpC,eAAO,MAAM,WAAW,yWACkV,CAAC;AAE3W,iFAAiF;AACjF,eAAO,MAAM,QAAQ,gcAC4a,CAAC;AAElc,0CAA0C;AAC1C,eAAO,MAAM,SAAS,0DAA0D,CAAC;AAEjF,wCAAwC;AACxC,eAAO,MAAM,aAAa,8BAA8B,CAAC;AAEzD,8DAA8D;AAC9D,eAAO,MAAM,QAAQ,0LACsK,CAAC;AAE5L,4EAA4E;AAC5E,eAAO,MAAM,OAAO,4CAA4C,CAAC;AAEjE,iHAAiH;AACjH,eAAO,MAAM,eAAe,kCAAkC,CAAC;AAE/D,yGAAyG;AACzG,eAAO,MAAM,WAAW,gFAAgF,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Shared class recipes (GUIDELINES.md §3-§6). Components compose these so every control family
3
+ * shares one focus ring, one field surface, one popup surface and one list-item look. Plain strings:
4
+ * `cn()` can still override any part from `className`.
5
+ */
6
+ /** Keyboard focus ring for standalone controls (§6). */
7
+ export const focusRing = "outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50";
8
+ /** aria-invalid look for controls (§6). */
9
+ export const invalidRing = "aria-invalid:border-danger aria-invalid:ring-3 aria-invalid:ring-danger/20 dark:aria-invalid:ring-danger/40";
10
+ /** Text-entry surface: input, textarea, select trigger, input-group, combobox chips (§4, §6). */
11
+ export const fieldSurface = "rounded-lg border border-input bg-field transition-[color,background-color,border-color,box-shadow] placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:bg-field-disabled disabled:opacity-50";
12
+ /** Floating panel: popover, menus, select/combobox list, hover card (§1, §3). */
13
+ export const popupSurface = "rounded-lg border border-border bg-popover text-popover-foreground shadow-lg shadow-(color:--shadow-color)";
14
+ /** Popup open/close motion (§6). */
15
+ export const popupMotion = "origin-(--transform-origin) duration-100 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 motion-reduce:animate-none";
16
+ /** Row inside a popup or list: menu item, select item, command item (§4, §6). */
17
+ export const listItem = "relative flex min-h-8 cursor-default items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-highlighted:[&_svg:not([class*='text-'])]:text-accent-foreground";
18
+ /** Group label inside a popup or list. */
19
+ export const listLabel = "px-2 py-1.5 text-xs font-medium text-muted-foreground";
20
+ /** Separator inside a popup or list. */
21
+ export const listSeparator = "-mx-1 my-1 h-px bg-border";
22
+ /** Modal backdrop for dialog, alert dialog, sheet, drawer. */
23
+ export const backdrop = "fixed inset-0 isolate z-50 bg-black/40 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0"; // lint-design-ignore: scrim is not a role
24
+ /** Title in cards, dialogs, sheets, popovers, empty states, alerts (§5). */
25
+ export const heading = "font-heading font-medium tracking-tight";
26
+ /** Empty track / placeholder: progress & meter tracks, skeletons, unlit segments. bg-muted vanishes on cards. */
27
+ export const placeholderFill = "bg-foreground/10 hc:bg-border";
28
+ /** Selected row (table, data table, code line, list): accent tint + 2px inset primary indicator (§6). */
29
+ export const selectedRow = "bg-accent text-accent-foreground shadow-[inset_2px_0_0_var(--primary-text)]";
30
+ //# sourceMappingURL=recipes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../src/lib/recipes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wDAAwD;AACxD,MAAM,CAAC,MAAM,SAAS,GAAG,wFAAwF,CAAC;AAElH,2CAA2C;AAC3C,MAAM,CAAC,MAAM,WAAW,GACpB,6GAA6G,CAAC;AAElH,iGAAiG;AACjG,MAAM,CAAC,MAAM,YAAY,GACrB,kNAAkN,CAAC;AAEvN,iFAAiF;AACjF,MAAM,CAAC,MAAM,YAAY,GACrB,4GAA4G,CAAC;AAEjH,oCAAoC;AACpC,MAAM,CAAC,MAAM,WAAW,GACpB,sWAAsW,CAAC;AAE3W,iFAAiF;AACjF,MAAM,CAAC,MAAM,QAAQ,GACjB,6bAA6b,CAAC;AAElc,0CAA0C;AAC1C,MAAM,CAAC,MAAM,SAAS,GAAG,uDAAuD,CAAC;AAEjF,wCAAwC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,2BAA2B,CAAC;AAEzD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,QAAQ,GACjB,uLAAuL,CAAC,CAAC,0CAA0C;AAEvO,4EAA4E;AAC5E,MAAM,CAAC,MAAM,OAAO,GAAG,yCAAyC,CAAC;AAEjE,iHAAiH;AACjH,MAAM,CAAC,MAAM,eAAe,GAAG,+BAA+B,CAAC;AAE/D,yGAAyG;AACzG,MAAM,CAAC,MAAM,WAAW,GAAG,6EAA6E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { cn } from "cn";
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,IAAI,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { cn } from "cn";
2
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./theme";
2
+ export * from "./theme-provider";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./theme";
2
+ export * from "./theme-provider";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { type ReactNode } from "react";
2
+ import { type ResolvedMode, type ThemeScriptOptions, type ThemeState } from "./theme";
3
+ export interface ThemeContextValue extends ThemeState {
4
+ /** `mode` with "system" resolved against the OS preference. */
5
+ resolvedMode: ResolvedMode;
6
+ setTheme: (patch: Partial<ThemeState>) => void;
7
+ setMode: (mode: ThemeState["mode"]) => void;
8
+ setContrast: (contrast: ThemeState["contrast"]) => void;
9
+ setAccent: (accent: ThemeState["accent"]) => void;
10
+ setRadius: (radius: ThemeState["radius"]) => void;
11
+ }
12
+ export interface ThemeProviderProps {
13
+ children?: ReactNode;
14
+ /** Initial values when nothing is stored. Default: system mode, normal contrast, pink, md radius. */
15
+ defaultTheme?: Partial<ThemeState>;
16
+ /** localStorage key; `null` disables persistence. */
17
+ storageKey?: string | null;
18
+ /** Force values regardless of storage/user choice (e.g. a site that is always red). */
19
+ forcedTheme?: Partial<ThemeState>;
20
+ }
21
+ /**
22
+ * Owns the app theme: applies `.light/.dark`, `.hc`, `.accent-*`, `.radius-*` to <html>, persists the
23
+ * choice and syncs it across tabs. Pair with <ThemeScript /> in <head> to avoid a flash on load.
24
+ */
25
+ export declare function ThemeProvider({ children, defaultTheme, storageKey, forcedTheme, }: ThemeProviderProps): import("react").JSX.Element;
26
+ /** Current theme and setters. Must be used under <ThemeProvider>. */
27
+ export declare function useTheme(): ThemeContextValue;
28
+ /** Renders the pre-paint script. Place in <head> (Next.js: in the root layout). */
29
+ export declare function ThemeScript({ nonce, ...options }: ThemeScriptOptions & {
30
+ nonce?: string;
31
+ }): import("react").JSX.Element;
32
+ export interface ThemeScopeProps extends Omit<React.ComponentProps<"div">, "children"> {
33
+ children?: ReactNode;
34
+ /** Values not given inherit from the surrounding <ThemeProvider> (or the defaults). */
35
+ mode?: ResolvedMode;
36
+ contrast?: ThemeState["contrast"];
37
+ accent?: ThemeState["accent"];
38
+ radius?: ThemeState["radius"];
39
+ }
40
+ /**
41
+ * A subtree with its own theme (previews, side-by-side comparisons). Overlays opened inside portal into
42
+ * the scope, so they keep its colors and radius.
43
+ */
44
+ export declare function ThemeScope({ mode, contrast, accent, radius, className, children, ...props }: ThemeScopeProps): import("react").JSX.Element;
45
+ /** Container for `*.Portal` parts: the nearest ThemeScope's portal root, else document.body. */
46
+ export declare function usePortalContainer(): HTMLElement | undefined;
47
+ //# sourceMappingURL=theme-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-provider.d.ts","sourceRoot":"","sources":["../../src/provider/theme-provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEH,KAAK,SAAS,EAQjB,MAAM,OAAO,CAAC;AAEf,OAAO,EAIH,KAAK,YAAY,EAIjB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAClB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACjD,+DAA+D;IAC/D,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAC5C,WAAW,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IACxD,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IAClD,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;CACrD;AAoCD,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qGAAqG;IACrG,YAAY,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACnC,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,uFAAuF;IACvF,WAAW,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;CACrC;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC1B,QAAQ,EACR,YAAY,EACZ,UAAgC,EAChC,WAAW,GACd,EAAE,kBAAkB,+BAkEpB;AAED,qEAAqE;AACrE,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,EAAC,KAAK,EAAE,GAAG,OAAO,EAAC,EAAE,kBAAkB,GAAG;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAC,+BAErF;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAClF,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,uFAAuF;IACvF,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAC,EAAE,eAAe,+BAoB1G;AAED,gGAAgG;AAChG,wBAAgB,kBAAkB,IAAI,WAAW,GAAG,SAAS,CAE5D"}
@@ -0,0 +1,118 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { createContext, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useState, useSyncExternalStore, } from "react";
4
+ import { applyTheme, DEFAULT_STORAGE_KEY, DEFAULT_THEME, sanitizeTheme, themeClassName, themeScript, } from "./theme";
5
+ const ThemeContext = createContext(null);
6
+ /** Element overlays portal into, so popups inside a ThemeScope keep its theme. */
7
+ const PortalContainerContext = createContext(null);
8
+ const useIsoLayoutEffect = typeof window === "undefined" ? useEffect : useLayoutEffect;
9
+ const DARK_QUERY = "(prefers-color-scheme: dark)";
10
+ function subscribeSystem(onChange) {
11
+ const mq = window.matchMedia(DARK_QUERY);
12
+ mq.addEventListener("change", onChange);
13
+ return () => mq.removeEventListener("change", onChange);
14
+ }
15
+ function useSystemMode() {
16
+ return useSyncExternalStore(subscribeSystem, () => (window.matchMedia(DARK_QUERY).matches ? "dark" : "light"), () => "light");
17
+ }
18
+ function readStored(key, fallback) {
19
+ if (typeof window === "undefined") {
20
+ return fallback;
21
+ }
22
+ try {
23
+ return sanitizeTheme(JSON.parse(window.localStorage.getItem(key) ?? "null"), fallback);
24
+ }
25
+ catch {
26
+ return fallback;
27
+ }
28
+ }
29
+ /**
30
+ * Owns the app theme: applies `.light/.dark`, `.hc`, `.accent-*`, `.radius-*` to <html>, persists the
31
+ * choice and syncs it across tabs. Pair with <ThemeScript /> in <head> to avoid a flash on load.
32
+ */
33
+ export function ThemeProvider({ children, defaultTheme, storageKey = DEFAULT_STORAGE_KEY, forcedTheme, }) {
34
+ const fallback = useMemo(() => ({ ...DEFAULT_THEME, ...defaultTheme }), [defaultTheme?.mode, defaultTheme?.contrast, defaultTheme?.accent, defaultTheme?.radius]);
35
+ // Server and first client render use the defaults; the stored value lands in a layout effect
36
+ // (the pre-paint script has already put the right classes on <html>, so nothing flashes).
37
+ const [stored, setStored] = useState(fallback);
38
+ useIsoLayoutEffect(() => {
39
+ if (storageKey) {
40
+ setStored(readStored(storageKey, fallback));
41
+ }
42
+ }, [storageKey, fallback]);
43
+ useEffect(() => {
44
+ if (!storageKey) {
45
+ return;
46
+ }
47
+ const onStorage = (e) => {
48
+ if (e.key === storageKey) {
49
+ setStored(readStored(storageKey, fallback));
50
+ }
51
+ };
52
+ window.addEventListener("storage", onStorage);
53
+ return () => window.removeEventListener("storage", onStorage);
54
+ }, [storageKey, fallback]);
55
+ const theme = useMemo(() => ({ ...stored, ...forcedTheme }), [stored, forcedTheme]);
56
+ const system = useSystemMode();
57
+ const resolvedMode = theme.mode === "system" ? system : theme.mode;
58
+ useIsoLayoutEffect(() => {
59
+ applyTheme(document.documentElement, { ...theme, mode: resolvedMode });
60
+ }, [theme.contrast, theme.accent, theme.radius, resolvedMode]);
61
+ const setTheme = useCallback((patch) => {
62
+ setStored((prev) => {
63
+ const next = sanitizeTheme({ ...prev, ...patch }, fallback);
64
+ if (storageKey) {
65
+ try {
66
+ window.localStorage.setItem(storageKey, JSON.stringify(next));
67
+ }
68
+ catch {
69
+ // storage blocked (private mode, quota): keep the in-memory choice
70
+ }
71
+ }
72
+ return next;
73
+ });
74
+ }, [storageKey, fallback]);
75
+ const value = useMemo(() => ({
76
+ ...theme,
77
+ resolvedMode,
78
+ setTheme,
79
+ setMode: (mode) => setTheme({ mode }),
80
+ setContrast: (contrast) => setTheme({ contrast }),
81
+ setAccent: (accent) => setTheme({ accent }),
82
+ setRadius: (radius) => setTheme({ radius }),
83
+ }), [theme, resolvedMode, setTheme]);
84
+ return _jsx(ThemeContext.Provider, { value: value, children: children });
85
+ }
86
+ /** Current theme and setters. Must be used under <ThemeProvider>. */
87
+ export function useTheme() {
88
+ const ctx = useContext(ThemeContext);
89
+ if (!ctx) {
90
+ throw new Error("useTheme must be used within <ThemeProvider>");
91
+ }
92
+ return ctx;
93
+ }
94
+ /** Renders the pre-paint script. Place in <head> (Next.js: in the root layout). */
95
+ export function ThemeScript({ nonce, ...options }) {
96
+ return _jsx("script", { nonce: nonce, suppressHydrationWarning: true, dangerouslySetInnerHTML: { __html: themeScript(options) } });
97
+ }
98
+ /**
99
+ * A subtree with its own theme (previews, side-by-side comparisons). Overlays opened inside portal into
100
+ * the scope, so they keep its colors and radius.
101
+ */
102
+ export function ThemeScope({ mode, contrast, accent, radius, className, children, ...props }) {
103
+ const parent = useContext(ThemeContext);
104
+ const [container, setContainer] = useState(null);
105
+ const theme = {
106
+ mode: mode ?? parent?.resolvedMode ?? "light",
107
+ contrast: contrast ?? parent?.contrast ?? DEFAULT_THEME.contrast,
108
+ accent: accent ?? parent?.accent ?? DEFAULT_THEME.accent,
109
+ radius: radius ?? parent?.radius ?? DEFAULT_THEME.radius,
110
+ };
111
+ const classes = themeClassName(theme);
112
+ return (_jsxs("div", { "data-slot": "theme-scope", className: [classes, "bg-background text-foreground", className].filter(Boolean).join(" "), ...props, children: [_jsx(PortalContainerContext.Provider, { value: container, children: children }), _jsx("div", { ref: setContainer, "data-slot": "theme-scope-portal", className: classes })] }));
113
+ }
114
+ /** Container for `*.Portal` parts: the nearest ThemeScope's portal root, else document.body. */
115
+ export function usePortalContainer() {
116
+ return useContext(PortalContainerContext) ?? undefined;
117
+ }
118
+ //# sourceMappingURL=theme-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-provider.js","sourceRoot":"","sources":["../../src/provider/theme-provider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /** Theme model shared by the provider, the pre-paint script and ThemeScope. No React here. */
2
+ export declare const MODES: readonly ["system", "light", "dark"];
3
+ export declare const CONTRASTS: readonly ["normal", "high"];
4
+ /** TermiColor accents (same names and order as @repraze/termicolor's ACCENTS). */
5
+ export declare const ACCENTS: readonly ["red", "orange", "yellow", "green", "cyan", "blue", "purple", "pink"];
6
+ export declare const RADII: readonly ["none", "sm", "md", "lg", "xl"];
7
+ export type Mode = (typeof MODES)[number];
8
+ export type ResolvedMode = Exclude<Mode, "system">;
9
+ export type Contrast = (typeof CONTRASTS)[number];
10
+ export type Accent = (typeof ACCENTS)[number];
11
+ export type Radius = (typeof RADII)[number];
12
+ export interface ThemeState {
13
+ mode: Mode;
14
+ contrast: Contrast;
15
+ accent: Accent;
16
+ radius: Radius;
17
+ }
18
+ export declare const DEFAULT_THEME: ThemeState;
19
+ export declare const DEFAULT_STORAGE_KEY = "kernelkit-theme";
20
+ /** Keep only known values, falling back per field (storage may hold stale or hand-edited JSON). */
21
+ export declare function sanitizeTheme(value: unknown, fallback: ThemeState): ThemeState;
22
+ /** Class toggles for a theme scope: .light/.dark, .hc, .accent-<name>, .radius-<size>. */
23
+ export declare function themeClasses(theme: Omit<ThemeState, "mode"> & {
24
+ mode: ResolvedMode;
25
+ }): Record<string, boolean>;
26
+ /** Space-separated class string for a resolved theme (for SSR markup and ThemeScope). */
27
+ export declare function themeClassName(theme: Omit<ThemeState, "mode"> & {
28
+ mode: ResolvedMode;
29
+ }): string;
30
+ export declare function applyTheme(el: Element, theme: Omit<ThemeState, "mode"> & {
31
+ mode: ResolvedMode;
32
+ }): void;
33
+ export interface ThemeScriptOptions {
34
+ storageKey?: string;
35
+ defaults?: Partial<ThemeState>;
36
+ }
37
+ /**
38
+ * Inline script source that applies the stored theme to <html> before first paint. Put it in <head>
39
+ * (or use <ThemeScript />). Self-contained: it can't import anything, so it repeats the class logic.
40
+ */
41
+ export declare function themeScript({ storageKey, defaults }?: ThemeScriptOptions): string;
42
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/provider/theme.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAE9F,eAAO,MAAM,KAAK,sCAAuC,CAAC;AAC1D,eAAO,MAAM,SAAS,6BAA8B,CAAC;AACrD,kFAAkF;AAClF,eAAO,MAAM,OAAO,iFAAkF,CAAC;AACvG,eAAO,MAAM,KAAK,2CAA4C,CAAC;AAE/D,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1C,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACnD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9C,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5C,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,aAAa,EAAE,UAA+E,CAAC;AAC5G,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAErD,mGAAmG;AACnG,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,GAAG,UAAU,CAU9E;AAED,0FAA0F;AAC1F,wBAAgB,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG;IAAC,IAAI,EAAE,YAAY,CAAA;CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ5G;AAED,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG;IAAC,IAAI,EAAE,YAAY,CAAA;CAAC,GAAG,MAAM,CAK7F;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG;IAAC,IAAI,EAAE,YAAY,CAAA;CAAC,QAK7F;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAC,UAAgC,EAAE,QAAQ,EAAC,GAAE,kBAAuB,GAAG,MAAM,CAUzG"}
@@ -0,0 +1,58 @@
1
+ /** Theme model shared by the provider, the pre-paint script and ThemeScope. No React here. */
2
+ export const MODES = ["system", "light", "dark"];
3
+ export const CONTRASTS = ["normal", "high"];
4
+ /** TermiColor accents (same names and order as @repraze/termicolor's ACCENTS). */
5
+ export const ACCENTS = ["red", "orange", "yellow", "green", "cyan", "blue", "purple", "pink"];
6
+ export const RADII = ["none", "sm", "md", "lg", "xl"];
7
+ export const DEFAULT_THEME = { mode: "system", contrast: "normal", accent: "pink", radius: "md" };
8
+ export const DEFAULT_STORAGE_KEY = "kernelkit-theme";
9
+ /** Keep only known values, falling back per field (storage may hold stale or hand-edited JSON). */
10
+ export function sanitizeTheme(value, fallback) {
11
+ const v = (value && typeof value === "object" ? value : {});
12
+ const pick = (list, key) => list.includes(v[key]) ? v[key] : fallback[key];
13
+ return {
14
+ mode: pick(MODES, "mode"),
15
+ contrast: pick(CONTRASTS, "contrast"),
16
+ accent: pick(ACCENTS, "accent"),
17
+ radius: pick(RADII, "radius"),
18
+ };
19
+ }
20
+ /** Class toggles for a theme scope: .light/.dark, .hc, .accent-<name>, .radius-<size>. */
21
+ export function themeClasses(theme) {
22
+ return {
23
+ light: theme.mode === "light",
24
+ dark: theme.mode === "dark",
25
+ hc: theme.contrast === "high",
26
+ ...Object.fromEntries(ACCENTS.map((a) => [`accent-${a}`, a === theme.accent])),
27
+ ...Object.fromEntries(RADII.map((r) => [`radius-${r}`, r === theme.radius])),
28
+ };
29
+ }
30
+ /** Space-separated class string for a resolved theme (for SSR markup and ThemeScope). */
31
+ export function themeClassName(theme) {
32
+ return Object.entries(themeClasses(theme))
33
+ .filter(([, on]) => on)
34
+ .map(([name]) => name)
35
+ .join(" ");
36
+ }
37
+ export function applyTheme(el, theme) {
38
+ for (const [name, on] of Object.entries(themeClasses(theme))) {
39
+ el.classList.toggle(name, on);
40
+ }
41
+ el.style.colorScheme = theme.mode;
42
+ }
43
+ /**
44
+ * Inline script source that applies the stored theme to <html> before first paint. Put it in <head>
45
+ * (or use <ThemeScript />). Self-contained: it can't import anything, so it repeats the class logic.
46
+ */
47
+ export function themeScript({ storageKey = DEFAULT_STORAGE_KEY, defaults } = {}) {
48
+ const d = { ...DEFAULT_THEME, ...defaults };
49
+ const lists = { mode: MODES, contrast: CONTRASTS, accent: ACCENTS, radius: RADII };
50
+ return `(function(){try{var k=${JSON.stringify(storageKey)},d=${JSON.stringify(d)},l=${JSON.stringify(lists)},s={};
51
+ try{s=JSON.parse(localStorage.getItem(k))||{}}catch(e){}
52
+ var t={};for(var f in l){t[f]=l[f].indexOf(s[f])>=0?s[f]:d[f]}
53
+ var m=t.mode==="system"?(matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"):t.mode;
54
+ var c=document.documentElement.classList;c.toggle("light",m==="light");c.toggle("dark",m==="dark");c.toggle("hc",t.contrast==="high");
55
+ l.accent.forEach(function(a){c.toggle("accent-"+a,a===t.accent)});l.radius.forEach(function(r){c.toggle("radius-"+r,r===t.radius)});
56
+ document.documentElement.style.colorScheme=m}catch(e){}})();`;
57
+ }
58
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/provider/theme.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,146 @@
1
1
  {
2
- "name": "@repraze/kernelkit",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
2
+ "name": "@repraze/kernelkit",
3
+ "version": "0.1.0-alpha.1",
4
+ "description": "Modern, techy React components: every shadcn component on Base UI, Tailwind v4 and cva, themed by TermiColor.",
5
+ "keywords": [
6
+ "react",
7
+ "components",
8
+ "ui",
9
+ "shadcn",
10
+ "base-ui",
11
+ "tailwindcss",
12
+ "design-system",
13
+ "termicolor"
14
+ ],
15
+ "homepage": "https://repraze.github.io/kernelkit/",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/repraze/kernelkit.git",
19
+ "directory": "packages/kernelkit"
20
+ },
21
+ "bugs": "https://github.com/repraze/kernelkit/issues",
22
+ "author": "Thomas Dubosc (https://repraze.com)",
23
+ "license": "MIT",
24
+ "type": "module",
25
+ "sideEffects": [
26
+ "*.css"
27
+ ],
28
+ "exports": {
29
+ "./components/*": {
30
+ "@repraze/source": "./src/components/*.tsx",
31
+ "types": "./dist/components/*.d.ts",
32
+ "default": "./dist/components/*.js"
33
+ },
34
+ "./hooks/*": {
35
+ "@repraze/source": "./src/hooks/*.ts",
36
+ "types": "./dist/hooks/*.d.ts",
37
+ "default": "./dist/hooks/*.js"
38
+ },
39
+ "./lib/highlighter": {
40
+ "@repraze/source": "./src/lib/highlighter.tsx",
41
+ "types": "./dist/lib/highlighter.d.ts",
42
+ "default": "./dist/lib/highlighter.js"
43
+ },
44
+ "./lib/*": {
45
+ "@repraze/source": "./src/lib/*.ts",
46
+ "types": "./dist/lib/*.d.ts",
47
+ "default": "./dist/lib/*.js"
48
+ },
49
+ "./provider": {
50
+ "@repraze/source": "./src/provider/index.ts",
51
+ "types": "./dist/provider/index.d.ts",
52
+ "default": "./dist/provider/index.js"
53
+ },
54
+ "./theme": {
55
+ "@repraze/source": "./src/provider/theme.ts",
56
+ "types": "./dist/provider/theme.d.ts",
57
+ "default": "./dist/provider/theme.js"
58
+ },
59
+ "./styles.css": "./src/styles/kernelkit.css",
60
+ "./package.json": "./package.json"
61
+ },
62
+ "files": [
63
+ "dist",
64
+ "src",
65
+ "README.md"
66
+ ],
67
+ "scripts": {
68
+ "build": "rm -rf dist && tsc -p tsconfig.build.json",
69
+ "typecheck": "tsc --noEmit -p ."
70
+ },
71
+ "publishConfig": {
72
+ "access": "public"
73
+ },
74
+ "peerDependencies": {
75
+ "react": ">=19",
76
+ "react-dom": ">=19",
77
+ "recharts": "^3.8.0",
78
+ "shiki": "^4.6.0",
79
+ "embla-carousel-react": "^8.6.0",
80
+ "cmdk": "^1.1.1",
81
+ "react-day-picker": "^10.0.2",
82
+ "date-fns": "^4.4.0",
83
+ "input-otp": "^1.5.0",
84
+ "react-resizable-panels": "^4.19.1",
85
+ "@tanstack/react-virtual": "^3.14.26",
86
+ "@shadcn/react": "^0.3.1"
87
+ },
88
+ "peerDependenciesMeta": {
89
+ "recharts": {
90
+ "optional": true
91
+ },
92
+ "shiki": {
93
+ "optional": true
94
+ },
95
+ "embla-carousel-react": {
96
+ "optional": true
97
+ },
98
+ "cmdk": {
99
+ "optional": true
100
+ },
101
+ "react-day-picker": {
102
+ "optional": true
103
+ },
104
+ "date-fns": {
105
+ "optional": true
106
+ },
107
+ "input-otp": {
108
+ "optional": true
109
+ },
110
+ "react-resizable-panels": {
111
+ "optional": true
112
+ },
113
+ "@tanstack/react-virtual": {
114
+ "optional": true
115
+ },
116
+ "@shadcn/react": {
117
+ "optional": true
118
+ }
119
+ },
120
+ "dependencies": {
121
+ "@base-ui/react": "^1.9.0",
122
+ "@repraze/termicolor": "^0.1.0-alpha.0",
123
+ "class-variance-authority": "^0.7.1",
124
+ "cn": "^0.2.6",
125
+ "lucide-react": "^1.69.0",
126
+ "tw-animate-css": "^1.4.0"
127
+ },
128
+ "devDependencies": {
129
+ "@types/react": "^19.3.0",
130
+ "@types/react-dom": "^19.3.0",
131
+ "react": "^19.3.1",
132
+ "react-dom": "^19.3.1",
133
+ "shadcn": "^4.23.0",
134
+ "tailwindcss": "^4.3.4",
135
+ "recharts": "^3.8.0",
136
+ "shiki": "^4.6.0",
137
+ "embla-carousel-react": "^8.6.0",
138
+ "cmdk": "^1.1.1",
139
+ "react-day-picker": "^10.0.2",
140
+ "date-fns": "^4.4.0",
141
+ "input-otp": "^1.5.0",
142
+ "react-resizable-panels": "^4.19.1",
143
+ "@tanstack/react-virtual": "^3.14.26",
144
+ "@shadcn/react": "^0.3.1"
145
+ }
146
+ }
@@ -0,0 +1,92 @@
1
+ "use client";
2
+
3
+ import {Accordion as AccordionPrimitive} from "@base-ui/react/accordion";
4
+ import {focusRing} from "@repraze/kernelkit/lib/recipes";
5
+ import {cva} from "class-variance-authority";
6
+ import {cn} from "cn";
7
+ import {ChevronDownIcon} from "lucide-react";
8
+
9
+ /** `default`: rows split by lines. `outline`: the same rows inside a bordered `rounded-xl` panel. */
10
+ const accordionVariants = cva("group/accordion flex w-full flex-col", {
11
+ variants: {
12
+ variant: {
13
+ default: "",
14
+ outline: "overflow-hidden rounded-xl border border-border bg-card",
15
+ },
16
+ },
17
+ defaultVariants: {variant: "default"},
18
+ });
19
+
20
+ function Accordion({
21
+ className,
22
+ variant = "default",
23
+ ...props
24
+ }: AccordionPrimitive.Root.Props & {variant?: "default" | "outline"}) {
25
+ return (
26
+ <AccordionPrimitive.Root
27
+ data-slot="accordion"
28
+ data-variant={variant}
29
+ className={cn(accordionVariants({variant}), className)}
30
+ {...props}
31
+ />
32
+ );
33
+ }
34
+
35
+ function AccordionItem({className, ...props}: AccordionPrimitive.Item.Props) {
36
+ return (
37
+ <AccordionPrimitive.Item
38
+ data-slot="accordion-item"
39
+ className={cn("not-last:border-b not-last:border-border", className)}
40
+ {...props}
41
+ />
42
+ );
43
+ }
44
+
45
+ function AccordionTrigger({className, children, ...props}: AccordionPrimitive.Trigger.Props) {
46
+ return (
47
+ <AccordionPrimitive.Header data-slot="accordion-header" className="flex">
48
+ <AccordionPrimitive.Trigger
49
+ data-slot="accordion-trigger"
50
+ className={cn(
51
+ focusRing,
52
+ "group/accordion-trigger relative flex flex-1 items-center justify-between gap-2 rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-[color,background-color,border-color,box-shadow] duration-100",
53
+ "hover:underline hover:underline-offset-4 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50",
54
+ // outline variant: full-width rows with a hover wash instead of an underline
55
+ "group-data-[variant=outline]/accordion:rounded-none group-data-[variant=outline]/accordion:px-4 group-data-[variant=outline]/accordion:hover:bg-hover group-data-[variant=outline]/accordion:hover:no-underline group-data-[variant=outline]/accordion:focus-visible:ring-inset",
56
+ "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
57
+ className,
58
+ )}
59
+ {...props}
60
+ >
61
+ {children}
62
+ <ChevronDownIcon
63
+ data-slot="accordion-trigger-icon"
64
+ className="ml-auto text-muted-foreground transition-transform duration-150 group-aria-expanded/accordion-trigger:rotate-180 motion-reduce:transition-none"
65
+ />
66
+ </AccordionPrimitive.Trigger>
67
+ </AccordionPrimitive.Header>
68
+ );
69
+ }
70
+
71
+ function AccordionContent({className, children, ...props}: AccordionPrimitive.Panel.Props) {
72
+ return (
73
+ <AccordionPrimitive.Panel
74
+ data-slot="accordion-content"
75
+ className="h-(--accordion-panel-height) overflow-hidden text-sm text-muted-foreground transition-[height] duration-150 ease-out data-ending-style:h-0 data-starting-style:h-0 motion-reduce:transition-none"
76
+ {...props}
77
+ >
78
+ <div
79
+ data-slot="accordion-content-inner"
80
+ className={cn(
81
+ "pt-0 pb-2.5 group-data-[variant=outline]/accordion:px-4 group-data-[variant=outline]/accordion:pb-4",
82
+ "[&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",
83
+ className,
84
+ )}
85
+ >
86
+ {children}
87
+ </div>
88
+ </AccordionPrimitive.Panel>
89
+ );
90
+ }
91
+
92
+ export {Accordion, AccordionContent, AccordionItem, AccordionTrigger, accordionVariants};