@psnext/design-system 1.0.0 → 1.2.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 (834) hide show
  1. package/README.md +103 -90
  2. package/dist/Header.cjs +890 -0
  3. package/dist/Header.cjs.map +1 -0
  4. package/dist/Header.js +798 -0
  5. package/dist/Header.js.map +1 -0
  6. package/dist/Icon.cjs +1969 -0
  7. package/dist/Icon.cjs.map +1 -0
  8. package/dist/Icon.js +1956 -0
  9. package/dist/Icon.js.map +1 -0
  10. package/dist/Logo.cjs +813 -0
  11. package/dist/Logo.cjs.map +1 -0
  12. package/dist/Logo.js +808 -0
  13. package/dist/Logo.js.map +1 -0
  14. package/dist/Sidebar.cjs +562 -0
  15. package/dist/Sidebar.cjs.map +1 -0
  16. package/dist/Sidebar.js +416 -0
  17. package/dist/Sidebar.js.map +1 -0
  18. package/dist/chunk.cjs +28 -0
  19. package/dist/cn.cjs +15 -0
  20. package/dist/cn.cjs.map +1 -0
  21. package/dist/cn.js +10 -0
  22. package/dist/cn.js.map +1 -0
  23. package/dist/contexts/index.cjs +0 -60
  24. package/dist/contexts/index.d.cts +1 -23
  25. package/dist/contexts/index.d.ts +1 -23
  26. package/dist/contexts/index.js +1 -58
  27. package/dist/index.cjs +414 -272
  28. package/dist/index.d.cts +17 -1424
  29. package/dist/index.d.cts.map +1 -1
  30. package/dist/index.d.ts +17 -1424
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +72 -7
  33. package/dist/index10.d.cts +38 -0
  34. package/dist/index10.d.cts.map +1 -0
  35. package/dist/index10.d.ts +38 -0
  36. package/dist/index10.d.ts.map +1 -0
  37. package/dist/index11.d.cts +30 -0
  38. package/dist/index11.d.cts.map +1 -0
  39. package/dist/index11.d.ts +30 -0
  40. package/dist/index11.d.ts.map +1 -0
  41. package/dist/index12.d.cts +75 -0
  42. package/dist/index12.d.cts.map +1 -0
  43. package/dist/index12.d.ts +75 -0
  44. package/dist/index12.d.ts.map +1 -0
  45. package/dist/index13.d.cts +57 -0
  46. package/dist/index13.d.cts.map +1 -0
  47. package/dist/index13.d.ts +57 -0
  48. package/dist/index13.d.ts.map +1 -0
  49. package/dist/index14.d.cts +98 -0
  50. package/dist/index14.d.cts.map +1 -0
  51. package/dist/index14.d.ts +98 -0
  52. package/dist/index14.d.ts.map +1 -0
  53. package/dist/index15.d.cts +29 -0
  54. package/dist/index15.d.cts.map +1 -0
  55. package/dist/index15.d.ts +29 -0
  56. package/dist/index15.d.ts.map +1 -0
  57. package/dist/index16.d.cts +38 -0
  58. package/dist/index16.d.cts.map +1 -0
  59. package/dist/index16.d.ts +38 -0
  60. package/dist/index16.d.ts.map +1 -0
  61. package/dist/index17.d.cts +19 -0
  62. package/dist/index17.d.cts.map +1 -0
  63. package/dist/index17.d.ts +19 -0
  64. package/dist/index17.d.ts.map +1 -0
  65. package/dist/index18.d.cts +73 -0
  66. package/dist/index18.d.cts.map +1 -0
  67. package/dist/index18.d.ts +73 -0
  68. package/dist/index18.d.ts.map +1 -0
  69. package/dist/index19.d.cts +66 -0
  70. package/dist/index19.d.cts.map +1 -0
  71. package/dist/index19.d.ts +66 -0
  72. package/dist/index19.d.ts.map +1 -0
  73. package/dist/index2.d.cts +41 -13
  74. package/dist/index2.d.cts.map +1 -1
  75. package/dist/index2.d.ts +41 -13
  76. package/dist/index2.d.ts.map +1 -1
  77. package/dist/index20.d.cts +96 -0
  78. package/dist/index20.d.cts.map +1 -0
  79. package/dist/index20.d.ts +96 -0
  80. package/dist/index20.d.ts.map +1 -0
  81. package/dist/index21.d.cts +34 -0
  82. package/dist/index21.d.cts.map +1 -0
  83. package/dist/index21.d.ts +34 -0
  84. package/dist/index21.d.ts.map +1 -0
  85. package/dist/index22.d.cts +62 -0
  86. package/dist/index22.d.cts.map +1 -0
  87. package/dist/index22.d.ts +62 -0
  88. package/dist/index22.d.ts.map +1 -0
  89. package/dist/index23.d.cts +99 -0
  90. package/dist/index23.d.cts.map +1 -0
  91. package/dist/index23.d.ts +99 -0
  92. package/dist/index23.d.ts.map +1 -0
  93. package/dist/index24.d.cts +49 -0
  94. package/dist/index24.d.cts.map +1 -0
  95. package/dist/index24.d.ts +49 -0
  96. package/dist/index24.d.ts.map +1 -0
  97. package/dist/index25.d.cts +17 -0
  98. package/dist/index25.d.cts.map +1 -0
  99. package/dist/index25.d.ts +17 -0
  100. package/dist/index25.d.ts.map +1 -0
  101. package/dist/index26.d.cts +80 -0
  102. package/dist/index26.d.cts.map +1 -0
  103. package/dist/index26.d.ts +80 -0
  104. package/dist/index26.d.ts.map +1 -0
  105. package/dist/index27.d.cts +71 -0
  106. package/dist/index27.d.cts.map +1 -0
  107. package/dist/index27.d.ts +71 -0
  108. package/dist/index27.d.ts.map +1 -0
  109. package/dist/index28.d.cts +37 -0
  110. package/dist/index28.d.cts.map +1 -0
  111. package/dist/index28.d.ts +37 -0
  112. package/dist/index28.d.ts.map +1 -0
  113. package/dist/index29.d.cts +25 -0
  114. package/dist/index29.d.cts.map +1 -0
  115. package/dist/index29.d.ts +25 -0
  116. package/dist/index29.d.ts.map +1 -0
  117. package/dist/index3.d.cts +62 -0
  118. package/dist/index3.d.cts.map +1 -0
  119. package/dist/index3.d.ts +62 -0
  120. package/dist/index3.d.ts.map +1 -0
  121. package/dist/index30.d.cts +59 -0
  122. package/dist/index30.d.cts.map +1 -0
  123. package/dist/index30.d.ts +59 -0
  124. package/dist/index30.d.ts.map +1 -0
  125. package/dist/index31.d.cts +40 -0
  126. package/dist/index31.d.cts.map +1 -0
  127. package/dist/index31.d.ts +40 -0
  128. package/dist/index31.d.ts.map +1 -0
  129. package/dist/index32.d.cts +23 -0
  130. package/dist/index32.d.cts.map +1 -0
  131. package/dist/index32.d.ts +23 -0
  132. package/dist/index32.d.ts.map +1 -0
  133. package/dist/index33.d.cts +55 -0
  134. package/dist/index33.d.cts.map +1 -0
  135. package/dist/index33.d.ts +55 -0
  136. package/dist/index33.d.ts.map +1 -0
  137. package/dist/index34.d.cts +43 -0
  138. package/dist/index34.d.cts.map +1 -0
  139. package/dist/index34.d.ts +43 -0
  140. package/dist/index34.d.ts.map +1 -0
  141. package/dist/index35.d.cts +77 -0
  142. package/dist/index35.d.cts.map +1 -0
  143. package/dist/index35.d.ts +77 -0
  144. package/dist/index35.d.ts.map +1 -0
  145. package/dist/index36.d.cts +19 -0
  146. package/dist/index36.d.cts.map +1 -0
  147. package/dist/index36.d.ts +19 -0
  148. package/dist/index36.d.ts.map +1 -0
  149. package/dist/index37.d.cts +29 -0
  150. package/dist/index37.d.cts.map +1 -0
  151. package/dist/index37.d.ts +29 -0
  152. package/dist/index37.d.ts.map +1 -0
  153. package/dist/index38.d.cts +20 -0
  154. package/dist/index38.d.cts.map +1 -0
  155. package/dist/index38.d.ts +20 -0
  156. package/dist/index38.d.ts.map +1 -0
  157. package/dist/index39.d.cts +105 -0
  158. package/dist/index39.d.cts.map +1 -0
  159. package/dist/index39.d.ts +105 -0
  160. package/dist/index39.d.ts.map +1 -0
  161. package/dist/index4.d.cts +11 -0
  162. package/dist/index4.d.cts.map +1 -0
  163. package/dist/index4.d.ts +11 -0
  164. package/dist/index4.d.ts.map +1 -0
  165. package/dist/index40.d.cts +22 -0
  166. package/dist/index40.d.cts.map +1 -0
  167. package/dist/index40.d.ts +22 -0
  168. package/dist/index40.d.ts.map +1 -0
  169. package/dist/index41.d.cts +56 -0
  170. package/dist/index41.d.cts.map +1 -0
  171. package/dist/index41.d.ts +56 -0
  172. package/dist/index41.d.ts.map +1 -0
  173. package/dist/index42.d.cts +45 -0
  174. package/dist/index42.d.cts.map +1 -0
  175. package/dist/index42.d.ts +45 -0
  176. package/dist/index42.d.ts.map +1 -0
  177. package/dist/index43.d.cts +96 -0
  178. package/dist/index43.d.cts.map +1 -0
  179. package/dist/index43.d.ts +96 -0
  180. package/dist/index43.d.ts.map +1 -0
  181. package/dist/index44.d.cts +48 -0
  182. package/dist/index44.d.cts.map +1 -0
  183. package/dist/index44.d.ts +48 -0
  184. package/dist/index44.d.ts.map +1 -0
  185. package/dist/index45.d.cts +28 -0
  186. package/dist/index45.d.cts.map +1 -0
  187. package/dist/index45.d.ts +28 -0
  188. package/dist/index45.d.ts.map +1 -0
  189. package/dist/index46.d.cts +41 -0
  190. package/dist/index46.d.cts.map +1 -0
  191. package/dist/index46.d.ts +41 -0
  192. package/dist/index46.d.ts.map +1 -0
  193. package/dist/index47.d.cts +25 -0
  194. package/dist/index47.d.cts.map +1 -0
  195. package/dist/index47.d.ts +25 -0
  196. package/dist/index47.d.ts.map +1 -0
  197. package/dist/index48.d.cts +21 -0
  198. package/dist/index48.d.cts.map +1 -0
  199. package/dist/index48.d.ts +21 -0
  200. package/dist/index48.d.ts.map +1 -0
  201. package/dist/index49.d.cts +69 -0
  202. package/dist/index49.d.cts.map +1 -0
  203. package/dist/index49.d.ts +69 -0
  204. package/dist/index49.d.ts.map +1 -0
  205. package/dist/index5.d.cts +45 -0
  206. package/dist/index5.d.cts.map +1 -0
  207. package/dist/index5.d.ts +45 -0
  208. package/dist/index5.d.ts.map +1 -0
  209. package/dist/index50.d.cts +63 -0
  210. package/dist/index50.d.cts.map +1 -0
  211. package/dist/index50.d.ts +63 -0
  212. package/dist/index50.d.ts.map +1 -0
  213. package/dist/index51.d.cts +31 -0
  214. package/dist/index51.d.cts.map +1 -0
  215. package/dist/index51.d.ts +31 -0
  216. package/dist/index51.d.ts.map +1 -0
  217. package/dist/index52.d.cts +209 -0
  218. package/dist/index52.d.cts.map +1 -0
  219. package/dist/index52.d.ts +209 -0
  220. package/dist/index52.d.ts.map +1 -0
  221. package/dist/index53.d.cts +26 -0
  222. package/dist/index53.d.cts.map +1 -0
  223. package/dist/index53.d.ts +26 -0
  224. package/dist/index53.d.ts.map +1 -0
  225. package/dist/index54.d.cts +28 -0
  226. package/dist/index54.d.cts.map +1 -0
  227. package/dist/index54.d.ts +28 -0
  228. package/dist/index54.d.ts.map +1 -0
  229. package/dist/index55.d.cts +25 -0
  230. package/dist/index55.d.cts.map +1 -0
  231. package/dist/index55.d.ts +25 -0
  232. package/dist/index55.d.ts.map +1 -0
  233. package/dist/index56.d.cts +12 -0
  234. package/dist/index56.d.cts.map +1 -0
  235. package/dist/index56.d.ts +12 -0
  236. package/dist/index56.d.ts.map +1 -0
  237. package/dist/index57.d.cts +50 -0
  238. package/dist/index57.d.cts.map +1 -0
  239. package/dist/index57.d.ts +50 -0
  240. package/dist/index57.d.ts.map +1 -0
  241. package/dist/index58.d.cts +51 -0
  242. package/dist/index58.d.cts.map +1 -0
  243. package/dist/index58.d.ts +51 -0
  244. package/dist/index58.d.ts.map +1 -0
  245. package/dist/index59.d.cts +58 -0
  246. package/dist/index59.d.cts.map +1 -0
  247. package/dist/index59.d.ts +58 -0
  248. package/dist/index59.d.ts.map +1 -0
  249. package/dist/index6.d.cts +26 -0
  250. package/dist/index6.d.cts.map +1 -0
  251. package/dist/index6.d.ts +26 -0
  252. package/dist/index6.d.ts.map +1 -0
  253. package/dist/index60.d.cts +45 -0
  254. package/dist/index60.d.cts.map +1 -0
  255. package/dist/index60.d.ts +45 -0
  256. package/dist/index60.d.ts.map +1 -0
  257. package/dist/index61.d.cts +21 -0
  258. package/dist/index61.d.cts.map +1 -0
  259. package/dist/index61.d.ts +21 -0
  260. package/dist/index61.d.ts.map +1 -0
  261. package/dist/index62.d.cts +45 -0
  262. package/dist/index62.d.cts.map +1 -0
  263. package/dist/index62.d.ts +45 -0
  264. package/dist/index62.d.ts.map +1 -0
  265. package/dist/index63.d.cts +23 -0
  266. package/dist/index63.d.cts.map +1 -0
  267. package/dist/index63.d.ts +23 -0
  268. package/dist/index63.d.ts.map +1 -0
  269. package/dist/index64.d.cts +48 -0
  270. package/dist/index64.d.cts.map +1 -0
  271. package/dist/index64.d.ts +48 -0
  272. package/dist/index64.d.ts.map +1 -0
  273. package/dist/index65.d.cts +25 -0
  274. package/dist/index65.d.cts.map +1 -0
  275. package/dist/index65.d.ts +25 -0
  276. package/dist/index65.d.ts.map +1 -0
  277. package/dist/index66.d.cts +19 -0
  278. package/dist/index66.d.cts.map +1 -0
  279. package/dist/index66.d.ts +19 -0
  280. package/dist/index66.d.ts.map +1 -0
  281. package/dist/index67.d.cts +37 -0
  282. package/dist/index67.d.cts.map +1 -0
  283. package/dist/index67.d.ts +37 -0
  284. package/dist/index67.d.ts.map +1 -0
  285. package/dist/index68.d.cts +36 -0
  286. package/dist/index68.d.cts.map +1 -0
  287. package/dist/index68.d.ts +36 -0
  288. package/dist/index68.d.ts.map +1 -0
  289. package/dist/index69.d.cts +69 -0
  290. package/dist/index69.d.ts +69 -0
  291. package/dist/index7.d.cts +46 -0
  292. package/dist/index7.d.cts.map +1 -0
  293. package/dist/index7.d.ts +46 -0
  294. package/dist/index7.d.ts.map +1 -0
  295. package/dist/index70.d.cts +242 -0
  296. package/dist/index70.d.cts.map +1 -0
  297. package/dist/index70.d.ts +242 -0
  298. package/dist/index70.d.ts.map +1 -0
  299. package/dist/index8.d.cts +26 -0
  300. package/dist/index8.d.cts.map +1 -0
  301. package/dist/index8.d.ts +26 -0
  302. package/dist/index8.d.ts.map +1 -0
  303. package/dist/index9.d.cts +20 -0
  304. package/dist/index9.d.cts.map +1 -0
  305. package/dist/index9.d.ts +20 -0
  306. package/dist/index9.d.ts.map +1 -0
  307. package/dist/layouts/Container/index.cjs +39 -0
  308. package/dist/layouts/Container/index.cjs.map +1 -0
  309. package/dist/layouts/Container/index.d.cts +2 -0
  310. package/dist/layouts/Container/index.d.ts +2 -0
  311. package/dist/layouts/Container/index.js +38 -0
  312. package/dist/layouts/Container/index.js.map +1 -0
  313. package/dist/layouts/PageBackground/index.cjs +22 -0
  314. package/dist/layouts/PageBackground/index.cjs.map +1 -0
  315. package/dist/layouts/PageBackground/index.d.cts +2 -0
  316. package/dist/layouts/PageBackground/index.d.ts +2 -0
  317. package/dist/layouts/PageBackground/index.js +21 -0
  318. package/dist/layouts/PageBackground/index.js.map +1 -0
  319. package/dist/layouts/Stack/index.cjs +56 -0
  320. package/dist/layouts/Stack/index.cjs.map +1 -0
  321. package/dist/layouts/Stack/index.d.cts +2 -0
  322. package/dist/layouts/Stack/index.d.ts +2 -0
  323. package/dist/layouts/Stack/index.js +55 -0
  324. package/dist/layouts/Stack/index.js.map +1 -0
  325. package/dist/layouts/TwoColumn/index.cjs +51 -0
  326. package/dist/layouts/TwoColumn/index.cjs.map +1 -0
  327. package/dist/layouts/TwoColumn/index.d.cts +2 -0
  328. package/dist/layouts/TwoColumn/index.d.ts +2 -0
  329. package/dist/layouts/TwoColumn/index.js +48 -0
  330. package/dist/layouts/TwoColumn/index.js.map +1 -0
  331. package/dist/layouts/index.cjs +13 -12
  332. package/dist/layouts/index.d.cts +5 -133
  333. package/dist/layouts/index.d.ts +5 -133
  334. package/dist/layouts/index.js +5 -2
  335. package/dist/patterns/DataTable/index.cjs +114 -0
  336. package/dist/patterns/DataTable/index.cjs.map +1 -0
  337. package/dist/patterns/DataTable/index.d.cts +43 -0
  338. package/dist/patterns/DataTable/index.d.cts.map +1 -0
  339. package/dist/patterns/DataTable/index.d.ts +43 -0
  340. package/dist/patterns/DataTable/index.d.ts.map +1 -0
  341. package/dist/patterns/DataTable/index.js +110 -0
  342. package/dist/patterns/DataTable/index.js.map +1 -0
  343. package/dist/patterns/Footer/index.cjs +76 -0
  344. package/dist/patterns/Footer/index.cjs.map +1 -0
  345. package/dist/patterns/Footer/index.d.cts +54 -0
  346. package/dist/patterns/Footer/index.d.cts.map +1 -0
  347. package/dist/patterns/Footer/index.d.ts +54 -0
  348. package/dist/patterns/Footer/index.d.ts.map +1 -0
  349. package/dist/patterns/Footer/index.js +70 -0
  350. package/dist/patterns/Footer/index.js.map +1 -0
  351. package/dist/patterns/Header/index.cjs +17 -0
  352. package/dist/patterns/Header/index.d.cts +2 -0
  353. package/dist/patterns/Header/index.d.ts +2 -0
  354. package/dist/patterns/Header/index.js +2 -0
  355. package/dist/patterns/MediaObject/index.cjs +108 -0
  356. package/dist/patterns/MediaObject/index.cjs.map +1 -0
  357. package/dist/patterns/MediaObject/index.d.cts +71 -0
  358. package/dist/patterns/MediaObject/index.d.cts.map +1 -0
  359. package/dist/patterns/MediaObject/index.d.ts +71 -0
  360. package/dist/patterns/MediaObject/index.d.ts.map +1 -0
  361. package/dist/patterns/MediaObject/index.js +99 -0
  362. package/dist/patterns/MediaObject/index.js.map +1 -0
  363. package/dist/patterns/SectionCard/index.cjs +35 -0
  364. package/dist/patterns/SectionCard/index.cjs.map +1 -0
  365. package/dist/patterns/SectionCard/index.d.cts +21 -0
  366. package/dist/patterns/SectionCard/index.d.cts.map +1 -0
  367. package/dist/patterns/SectionCard/index.d.ts +21 -0
  368. package/dist/patterns/SectionCard/index.d.ts.map +1 -0
  369. package/dist/patterns/SectionCard/index.js +34 -0
  370. package/dist/patterns/SectionCard/index.js.map +1 -0
  371. package/dist/patterns/SectionHeading/index.cjs +44 -0
  372. package/dist/patterns/SectionHeading/index.cjs.map +1 -0
  373. package/dist/patterns/SectionHeading/index.d.cts +37 -0
  374. package/dist/patterns/SectionHeading/index.d.cts.map +1 -0
  375. package/dist/patterns/SectionHeading/index.d.ts +37 -0
  376. package/dist/patterns/SectionHeading/index.d.ts.map +1 -0
  377. package/dist/patterns/SectionHeading/index.js +43 -0
  378. package/dist/patterns/SectionHeading/index.js.map +1 -0
  379. package/dist/patterns/index.cjs +40 -7374
  380. package/dist/patterns/index.d.cts +7 -418
  381. package/dist/patterns/index.d.ts +7 -418
  382. package/dist/patterns/index.js +7 -7344
  383. package/dist/primitives/Accordion/index.cjs +54 -0
  384. package/dist/primitives/Accordion/index.cjs.map +1 -0
  385. package/dist/primitives/Accordion/index.d.cts +2 -0
  386. package/dist/primitives/Accordion/index.d.ts +2 -0
  387. package/dist/primitives/Accordion/index.js +50 -0
  388. package/dist/primitives/Accordion/index.js.map +1 -0
  389. package/dist/primitives/Alert/index.cjs +61 -0
  390. package/dist/primitives/Alert/index.cjs.map +1 -0
  391. package/dist/primitives/Alert/index.d.cts +2 -0
  392. package/dist/primitives/Alert/index.d.ts +2 -0
  393. package/dist/primitives/Alert/index.js +57 -0
  394. package/dist/primitives/Alert/index.js.map +1 -0
  395. package/dist/primitives/AlertDialog/index.cjs +102 -0
  396. package/dist/primitives/AlertDialog/index.cjs.map +1 -0
  397. package/dist/primitives/AlertDialog/index.d.cts +2 -0
  398. package/dist/primitives/AlertDialog/index.d.ts +2 -0
  399. package/dist/primitives/AlertDialog/index.js +90 -0
  400. package/dist/primitives/AlertDialog/index.js.map +1 -0
  401. package/dist/primitives/AspectRatio/index.cjs +15 -0
  402. package/dist/primitives/AspectRatio/index.cjs.map +1 -0
  403. package/dist/primitives/AspectRatio/index.d.cts +2 -0
  404. package/dist/primitives/AspectRatio/index.d.ts +2 -0
  405. package/dist/primitives/AspectRatio/index.js +14 -0
  406. package/dist/primitives/AspectRatio/index.js.map +1 -0
  407. package/dist/primitives/Avatar/index.cjs +64 -0
  408. package/dist/primitives/Avatar/index.cjs.map +1 -0
  409. package/dist/primitives/Avatar/index.d.cts +2 -0
  410. package/dist/primitives/Avatar/index.d.ts +2 -0
  411. package/dist/primitives/Avatar/index.js +58 -0
  412. package/dist/primitives/Avatar/index.js.map +1 -0
  413. package/dist/primitives/Badge/index.cjs +44 -0
  414. package/dist/primitives/Badge/index.cjs.map +1 -0
  415. package/dist/primitives/Badge/index.d.cts +2 -0
  416. package/dist/primitives/Badge/index.d.ts +2 -0
  417. package/dist/primitives/Badge/index.js +43 -0
  418. package/dist/primitives/Badge/index.js.map +1 -0
  419. package/dist/primitives/Breadcrumb/index.cjs +82 -0
  420. package/dist/primitives/Breadcrumb/index.cjs.map +1 -0
  421. package/dist/primitives/Breadcrumb/index.d.cts +2 -0
  422. package/dist/primitives/Breadcrumb/index.d.ts +2 -0
  423. package/dist/primitives/Breadcrumb/index.js +75 -0
  424. package/dist/primitives/Breadcrumb/index.js.map +1 -0
  425. package/dist/primitives/Button/index.cjs +61 -0
  426. package/dist/primitives/Button/index.cjs.map +1 -0
  427. package/dist/primitives/Button/index.d.cts +2 -0
  428. package/dist/primitives/Button/index.d.ts +2 -0
  429. package/dist/primitives/Button/index.js +60 -0
  430. package/dist/primitives/Button/index.js.map +1 -0
  431. package/dist/primitives/ButtonGroup/index.cjs +46 -0
  432. package/dist/primitives/ButtonGroup/index.cjs.map +1 -0
  433. package/dist/primitives/ButtonGroup/index.d.cts +2 -0
  434. package/dist/primitives/ButtonGroup/index.d.ts +2 -0
  435. package/dist/primitives/ButtonGroup/index.js +43 -0
  436. package/dist/primitives/ButtonGroup/index.js.map +1 -0
  437. package/dist/primitives/Calendar/index.cjs +112 -0
  438. package/dist/primitives/Calendar/index.cjs.map +1 -0
  439. package/dist/primitives/Calendar/index.d.cts +2 -0
  440. package/dist/primitives/Calendar/index.d.ts +2 -0
  441. package/dist/primitives/Calendar/index.js +108 -0
  442. package/dist/primitives/Calendar/index.js.map +1 -0
  443. package/dist/primitives/Card/index.cjs +128 -0
  444. package/dist/primitives/Card/index.cjs.map +1 -0
  445. package/dist/primitives/Card/index.d.cts +2 -0
  446. package/dist/primitives/Card/index.d.ts +2 -0
  447. package/dist/primitives/Card/index.js +121 -0
  448. package/dist/primitives/Card/index.js.map +1 -0
  449. package/dist/primitives/Carousel/index.cjs +146 -0
  450. package/dist/primitives/Carousel/index.cjs.map +1 -0
  451. package/dist/primitives/Carousel/index.d.cts +2 -0
  452. package/dist/primitives/Carousel/index.d.ts +2 -0
  453. package/dist/primitives/Carousel/index.js +138 -0
  454. package/dist/primitives/Carousel/index.js.map +1 -0
  455. package/dist/primitives/Chart/index.cjs +162 -0
  456. package/dist/primitives/Chart/index.cjs.map +1 -0
  457. package/dist/primitives/Chart/index.d.cts +2 -0
  458. package/dist/primitives/Chart/index.d.ts +2 -0
  459. package/dist/primitives/Chart/index.js +153 -0
  460. package/dist/primitives/Chart/index.js.map +1 -0
  461. package/dist/primitives/Checkbox/index.cjs +53 -0
  462. package/dist/primitives/Checkbox/index.cjs.map +1 -0
  463. package/dist/primitives/Checkbox/index.d.cts +2 -0
  464. package/dist/primitives/Checkbox/index.d.ts +2 -0
  465. package/dist/primitives/Checkbox/index.js +51 -0
  466. package/dist/primitives/Checkbox/index.js.map +1 -0
  467. package/dist/primitives/CheckboxTree/index.cjs +106 -0
  468. package/dist/primitives/CheckboxTree/index.cjs.map +1 -0
  469. package/dist/primitives/CheckboxTree/index.d.cts +2 -0
  470. package/dist/primitives/CheckboxTree/index.d.ts +2 -0
  471. package/dist/primitives/CheckboxTree/index.js +103 -0
  472. package/dist/primitives/CheckboxTree/index.js.map +1 -0
  473. package/dist/primitives/Collapsible/index.cjs +31 -0
  474. package/dist/primitives/Collapsible/index.cjs.map +1 -0
  475. package/dist/primitives/Collapsible/index.d.cts +2 -0
  476. package/dist/primitives/Collapsible/index.d.ts +2 -0
  477. package/dist/primitives/Collapsible/index.js +28 -0
  478. package/dist/primitives/Collapsible/index.js.map +1 -0
  479. package/dist/primitives/Command/index.cjs +104 -0
  480. package/dist/primitives/Command/index.cjs.map +1 -0
  481. package/dist/primitives/Command/index.d.cts +2 -0
  482. package/dist/primitives/Command/index.d.ts +2 -0
  483. package/dist/primitives/Command/index.js +95 -0
  484. package/dist/primitives/Command/index.js.map +1 -0
  485. package/dist/primitives/ContextMenu/index.cjs +152 -0
  486. package/dist/primitives/ContextMenu/index.cjs.map +1 -0
  487. package/dist/primitives/ContextMenu/index.d.cts +2 -0
  488. package/dist/primitives/ContextMenu/index.d.ts +2 -0
  489. package/dist/primitives/ContextMenu/index.js +137 -0
  490. package/dist/primitives/ContextMenu/index.js.map +1 -0
  491. package/dist/primitives/Credits/index.cjs +39 -0
  492. package/dist/primitives/Credits/index.cjs.map +1 -0
  493. package/dist/primitives/Credits/index.d.cts +2 -0
  494. package/dist/primitives/Credits/index.d.ts +2 -0
  495. package/dist/primitives/Credits/index.js +38 -0
  496. package/dist/primitives/Credits/index.js.map +1 -0
  497. package/dist/primitives/Dialog/index.cjs +121 -0
  498. package/dist/primitives/Dialog/index.cjs.map +1 -0
  499. package/dist/primitives/Dialog/index.d.cts +2 -0
  500. package/dist/primitives/Dialog/index.d.ts +2 -0
  501. package/dist/primitives/Dialog/index.js +111 -0
  502. package/dist/primitives/Dialog/index.js.map +1 -0
  503. package/dist/primitives/Drawer/index.cjs +98 -0
  504. package/dist/primitives/Drawer/index.cjs.map +1 -0
  505. package/dist/primitives/Drawer/index.d.cts +2 -0
  506. package/dist/primitives/Drawer/index.d.ts +2 -0
  507. package/dist/primitives/Drawer/index.js +88 -0
  508. package/dist/primitives/Drawer/index.js.map +1 -0
  509. package/dist/primitives/DropdownMenu/index.cjs +153 -0
  510. package/dist/primitives/DropdownMenu/index.cjs.map +1 -0
  511. package/dist/primitives/DropdownMenu/index.d.cts +2 -0
  512. package/dist/primitives/DropdownMenu/index.d.ts +2 -0
  513. package/dist/primitives/DropdownMenu/index.js +138 -0
  514. package/dist/primitives/DropdownMenu/index.js.map +1 -0
  515. package/dist/primitives/Empty/index.cjs +84 -0
  516. package/dist/primitives/Empty/index.cjs.map +1 -0
  517. package/dist/primitives/Empty/index.d.cts +2 -0
  518. package/dist/primitives/Empty/index.d.ts +2 -0
  519. package/dist/primitives/Empty/index.js +77 -0
  520. package/dist/primitives/Empty/index.js.map +1 -0
  521. package/dist/primitives/Field/index.cjs +139 -0
  522. package/dist/primitives/Field/index.cjs.map +1 -0
  523. package/dist/primitives/Field/index.d.cts +2 -0
  524. package/dist/primitives/Field/index.d.ts +2 -0
  525. package/dist/primitives/Field/index.js +129 -0
  526. package/dist/primitives/Field/index.js.map +1 -0
  527. package/dist/primitives/Form/index.cjs +104 -0
  528. package/dist/primitives/Form/index.cjs.map +1 -0
  529. package/dist/primitives/Form/index.d.cts +2 -0
  530. package/dist/primitives/Form/index.d.ts +2 -0
  531. package/dist/primitives/Form/index.js +94 -0
  532. package/dist/primitives/Form/index.js.map +1 -0
  533. package/dist/primitives/Heading/index.cjs +53 -0
  534. package/dist/primitives/Heading/index.cjs.map +1 -0
  535. package/dist/primitives/Heading/index.d.cts +2 -0
  536. package/dist/primitives/Heading/index.d.ts +2 -0
  537. package/dist/primitives/Heading/index.js +52 -0
  538. package/dist/primitives/Heading/index.js.map +1 -0
  539. package/dist/primitives/HoverCard/index.cjs +38 -0
  540. package/dist/primitives/HoverCard/index.cjs.map +1 -0
  541. package/dist/primitives/HoverCard/index.d.cts +2 -0
  542. package/dist/primitives/HoverCard/index.d.ts +2 -0
  543. package/dist/primitives/HoverCard/index.js +35 -0
  544. package/dist/primitives/HoverCard/index.js.map +1 -0
  545. package/dist/primitives/Icon/index.cjs +4 -0
  546. package/dist/primitives/Icon/index.d.cts +2 -0
  547. package/dist/primitives/Icon/index.d.ts +2 -0
  548. package/dist/primitives/Icon/index.js +2 -0
  549. package/dist/primitives/InfoBanner/index.cjs +79 -0
  550. package/dist/primitives/InfoBanner/index.cjs.map +1 -0
  551. package/dist/primitives/InfoBanner/index.d.cts +2 -0
  552. package/dist/primitives/InfoBanner/index.d.ts +2 -0
  553. package/dist/primitives/InfoBanner/index.js +78 -0
  554. package/dist/primitives/InfoBanner/index.js.map +1 -0
  555. package/dist/primitives/Input/index.cjs +39 -0
  556. package/dist/primitives/Input/index.cjs.map +1 -0
  557. package/dist/primitives/Input/index.d.cts +2 -0
  558. package/dist/primitives/Input/index.d.ts +2 -0
  559. package/dist/primitives/Input/index.js +38 -0
  560. package/dist/primitives/Input/index.js.map +1 -0
  561. package/dist/primitives/InputGroup/index.cjs +91 -0
  562. package/dist/primitives/InputGroup/index.cjs.map +1 -0
  563. package/dist/primitives/InputGroup/index.d.cts +2 -0
  564. package/dist/primitives/InputGroup/index.d.ts +2 -0
  565. package/dist/primitives/InputGroup/index.js +85 -0
  566. package/dist/primitives/InputGroup/index.js.map +1 -0
  567. package/dist/primitives/InputOtp/index.cjs +80 -0
  568. package/dist/primitives/InputOtp/index.cjs.map +1 -0
  569. package/dist/primitives/InputOtp/index.d.cts +2 -0
  570. package/dist/primitives/InputOtp/index.d.ts +2 -0
  571. package/dist/primitives/InputOtp/index.js +74 -0
  572. package/dist/primitives/InputOtp/index.js.map +1 -0
  573. package/dist/primitives/Item/index.cjs +137 -0
  574. package/dist/primitives/Item/index.cjs.map +1 -0
  575. package/dist/primitives/Item/index.d.cts +2 -0
  576. package/dist/primitives/Item/index.d.ts +2 -0
  577. package/dist/primitives/Item/index.js +127 -0
  578. package/dist/primitives/Item/index.js.map +1 -0
  579. package/dist/primitives/Kbd/index.cjs +25 -0
  580. package/dist/primitives/Kbd/index.cjs.map +1 -0
  581. package/dist/primitives/Kbd/index.d.cts +2 -0
  582. package/dist/primitives/Kbd/index.d.ts +2 -0
  583. package/dist/primitives/Kbd/index.js +23 -0
  584. package/dist/primitives/Kbd/index.js.map +1 -0
  585. package/dist/primitives/Label/index.cjs +18 -0
  586. package/dist/primitives/Label/index.cjs.map +1 -0
  587. package/dist/primitives/Label/index.d.cts +2 -0
  588. package/dist/primitives/Label/index.d.ts +2 -0
  589. package/dist/primitives/Label/index.js +17 -0
  590. package/dist/primitives/Label/index.js.map +1 -0
  591. package/dist/primitives/Link/index.cjs +38 -0
  592. package/dist/primitives/Link/index.cjs.map +1 -0
  593. package/dist/primitives/Link/index.d.cts +2 -0
  594. package/dist/primitives/Link/index.d.ts +2 -0
  595. package/dist/primitives/Link/index.js +37 -0
  596. package/dist/primitives/Link/index.js.map +1 -0
  597. package/dist/primitives/Logo/index.cjs +3 -0
  598. package/dist/primitives/Logo/index.d.cts +2 -0
  599. package/dist/primitives/Logo/index.d.ts +2 -0
  600. package/dist/primitives/Logo/index.js +2 -0
  601. package/dist/primitives/Menubar/index.cjs +165 -0
  602. package/dist/primitives/Menubar/index.cjs.map +1 -0
  603. package/dist/primitives/Menubar/index.d.cts +2 -0
  604. package/dist/primitives/Menubar/index.d.ts +2 -0
  605. package/dist/primitives/Menubar/index.js +149 -0
  606. package/dist/primitives/Menubar/index.js.map +1 -0
  607. package/dist/primitives/NativeSelect/index.cjs +40 -0
  608. package/dist/primitives/NativeSelect/index.cjs.map +1 -0
  609. package/dist/primitives/NativeSelect/index.d.cts +2 -0
  610. package/dist/primitives/NativeSelect/index.d.ts +2 -0
  611. package/dist/primitives/NativeSelect/index.js +39 -0
  612. package/dist/primitives/NativeSelect/index.js.map +1 -0
  613. package/dist/primitives/NavRail/index.cjs +195 -0
  614. package/dist/primitives/NavRail/index.cjs.map +1 -0
  615. package/dist/primitives/NavRail/index.d.cts +2 -0
  616. package/dist/primitives/NavRail/index.d.ts +2 -0
  617. package/dist/primitives/NavRail/index.js +185 -0
  618. package/dist/primitives/NavRail/index.js.map +1 -0
  619. package/dist/primitives/NavigationMenu/index.cjs +98 -0
  620. package/dist/primitives/NavigationMenu/index.cjs.map +1 -0
  621. package/dist/primitives/NavigationMenu/index.d.cts +2 -0
  622. package/dist/primitives/NavigationMenu/index.d.ts +2 -0
  623. package/dist/primitives/NavigationMenu/index.js +89 -0
  624. package/dist/primitives/NavigationMenu/index.js.map +1 -0
  625. package/dist/primitives/Pagination/index.cjs +93 -0
  626. package/dist/primitives/Pagination/index.cjs.map +1 -0
  627. package/dist/primitives/Pagination/index.d.cts +2 -0
  628. package/dist/primitives/Pagination/index.d.ts +2 -0
  629. package/dist/primitives/Pagination/index.js +86 -0
  630. package/dist/primitives/Pagination/index.js.map +1 -0
  631. package/dist/primitives/Popover/index.cjs +70 -0
  632. package/dist/primitives/Popover/index.cjs.map +1 -0
  633. package/dist/primitives/Popover/index.d.cts +2 -0
  634. package/dist/primitives/Popover/index.d.ts +2 -0
  635. package/dist/primitives/Popover/index.js +63 -0
  636. package/dist/primitives/Popover/index.js.map +1 -0
  637. package/dist/primitives/Progress/index.cjs +44 -0
  638. package/dist/primitives/Progress/index.cjs.map +1 -0
  639. package/dist/primitives/Progress/index.d.cts +2 -0
  640. package/dist/primitives/Progress/index.d.ts +2 -0
  641. package/dist/primitives/Progress/index.js +43 -0
  642. package/dist/primitives/Progress/index.js.map +1 -0
  643. package/dist/primitives/RadioGroup/index.cjs +65 -0
  644. package/dist/primitives/RadioGroup/index.cjs.map +1 -0
  645. package/dist/primitives/RadioGroup/index.d.cts +2 -0
  646. package/dist/primitives/RadioGroup/index.d.ts +2 -0
  647. package/dist/primitives/RadioGroup/index.js +62 -0
  648. package/dist/primitives/RadioGroup/index.js.map +1 -0
  649. package/dist/primitives/Resizable/index.cjs +41 -0
  650. package/dist/primitives/Resizable/index.cjs.map +1 -0
  651. package/dist/primitives/Resizable/index.d.cts +2 -0
  652. package/dist/primitives/Resizable/index.d.ts +2 -0
  653. package/dist/primitives/Resizable/index.js +36 -0
  654. package/dist/primitives/Resizable/index.js.map +1 -0
  655. package/dist/primitives/ScrollArea/index.cjs +40 -0
  656. package/dist/primitives/ScrollArea/index.cjs.map +1 -0
  657. package/dist/primitives/ScrollArea/index.d.cts +2 -0
  658. package/dist/primitives/ScrollArea/index.d.ts +2 -0
  659. package/dist/primitives/ScrollArea/index.js +38 -0
  660. package/dist/primitives/ScrollArea/index.js.map +1 -0
  661. package/dist/primitives/Select/index.cjs +126 -0
  662. package/dist/primitives/Select/index.cjs.map +1 -0
  663. package/dist/primitives/Select/index.d.cts +2 -0
  664. package/dist/primitives/Select/index.d.ts +2 -0
  665. package/dist/primitives/Select/index.js +116 -0
  666. package/dist/primitives/Select/index.js.map +1 -0
  667. package/dist/primitives/Separator/index.cjs +25 -0
  668. package/dist/primitives/Separator/index.cjs.map +1 -0
  669. package/dist/primitives/Separator/index.d.cts +2 -0
  670. package/dist/primitives/Separator/index.d.ts +2 -0
  671. package/dist/primitives/Separator/index.js +24 -0
  672. package/dist/primitives/Separator/index.js.map +1 -0
  673. package/dist/primitives/Sheet/index.cjs +107 -0
  674. package/dist/primitives/Sheet/index.cjs.map +1 -0
  675. package/dist/primitives/Sheet/index.d.cts +2 -0
  676. package/dist/primitives/Sheet/index.d.ts +2 -0
  677. package/dist/primitives/Sheet/index.js +99 -0
  678. package/dist/primitives/Sheet/index.js.map +1 -0
  679. package/dist/primitives/Sidebar/index.cjs +26 -0
  680. package/dist/primitives/Sidebar/index.d.cts +2 -0
  681. package/dist/primitives/Sidebar/index.d.ts +2 -0
  682. package/dist/primitives/Sidebar/index.js +2 -0
  683. package/dist/primitives/Skeleton/index.cjs +43 -0
  684. package/dist/primitives/Skeleton/index.cjs.map +1 -0
  685. package/dist/primitives/Skeleton/index.d.cts +2 -0
  686. package/dist/primitives/Skeleton/index.d.ts +2 -0
  687. package/dist/primitives/Skeleton/index.js +39 -0
  688. package/dist/primitives/Skeleton/index.js.map +1 -0
  689. package/dist/primitives/Slider/index.cjs +46 -0
  690. package/dist/primitives/Slider/index.cjs.map +1 -0
  691. package/dist/primitives/Slider/index.d.cts +2 -0
  692. package/dist/primitives/Slider/index.d.ts +2 -0
  693. package/dist/primitives/Slider/index.js +43 -0
  694. package/dist/primitives/Slider/index.js.map +1 -0
  695. package/dist/primitives/Sonner/index.cjs +42 -0
  696. package/dist/primitives/Sonner/index.cjs.map +1 -0
  697. package/dist/primitives/Sonner/index.d.cts +2 -0
  698. package/dist/primitives/Sonner/index.d.ts +2 -0
  699. package/dist/primitives/Sonner/index.js +41 -0
  700. package/dist/primitives/Sonner/index.js.map +1 -0
  701. package/dist/primitives/Spinner/index.cjs +19 -0
  702. package/dist/primitives/Spinner/index.cjs.map +1 -0
  703. package/dist/primitives/Spinner/index.d.cts +2 -0
  704. package/dist/primitives/Spinner/index.d.ts +2 -0
  705. package/dist/primitives/Spinner/index.js +18 -0
  706. package/dist/primitives/Spinner/index.js.map +1 -0
  707. package/dist/primitives/Switch/index.cjs +71 -0
  708. package/dist/primitives/Switch/index.cjs.map +1 -0
  709. package/dist/primitives/Switch/index.d.cts +2 -0
  710. package/dist/primitives/Switch/index.d.ts +2 -0
  711. package/dist/primitives/Switch/index.js +68 -0
  712. package/dist/primitives/Switch/index.js.map +1 -0
  713. package/dist/primitives/Table/index.cjs +84 -0
  714. package/dist/primitives/Table/index.cjs.map +1 -0
  715. package/dist/primitives/Table/index.d.cts +2 -0
  716. package/dist/primitives/Table/index.d.ts +2 -0
  717. package/dist/primitives/Table/index.js +76 -0
  718. package/dist/primitives/Table/index.js.map +1 -0
  719. package/dist/primitives/Tabs/index.cjs +267 -0
  720. package/dist/primitives/Tabs/index.cjs.map +1 -0
  721. package/dist/primitives/Tabs/index.d.cts +2 -0
  722. package/dist/primitives/Tabs/index.d.ts +2 -0
  723. package/dist/primitives/Tabs/index.js +258 -0
  724. package/dist/primitives/Tabs/index.js.map +1 -0
  725. package/dist/primitives/Text/index.cjs +64 -0
  726. package/dist/primitives/Text/index.cjs.map +1 -0
  727. package/dist/primitives/Text/index.d.cts +2 -0
  728. package/dist/primitives/Text/index.d.ts +2 -0
  729. package/dist/primitives/Text/index.js +63 -0
  730. package/dist/primitives/Text/index.js.map +1 -0
  731. package/dist/primitives/Textarea/index.cjs +24 -0
  732. package/dist/primitives/Textarea/index.cjs.map +1 -0
  733. package/dist/primitives/Textarea/index.d.cts +2 -0
  734. package/dist/primitives/Textarea/index.d.ts +2 -0
  735. package/dist/primitives/Textarea/index.js +23 -0
  736. package/dist/primitives/Textarea/index.js.map +1 -0
  737. package/dist/primitives/ThemeProvider/index.cjs +93 -0
  738. package/dist/primitives/ThemeProvider/index.cjs.map +1 -0
  739. package/dist/primitives/ThemeProvider/index.d.cts +2 -0
  740. package/dist/primitives/ThemeProvider/index.d.ts +2 -0
  741. package/dist/primitives/ThemeProvider/index.js +88 -0
  742. package/dist/primitives/ThemeProvider/index.js.map +1 -0
  743. package/dist/primitives/Toggle/index.cjs +59 -0
  744. package/dist/primitives/Toggle/index.cjs.map +1 -0
  745. package/dist/primitives/Toggle/index.d.cts +2 -0
  746. package/dist/primitives/Toggle/index.d.ts +2 -0
  747. package/dist/primitives/Toggle/index.js +58 -0
  748. package/dist/primitives/Toggle/index.js.map +1 -0
  749. package/dist/primitives/ToggleGroup/index.cjs +65 -0
  750. package/dist/primitives/ToggleGroup/index.cjs.map +1 -0
  751. package/dist/primitives/ToggleGroup/index.d.cts +2 -0
  752. package/dist/primitives/ToggleGroup/index.d.ts +2 -0
  753. package/dist/primitives/ToggleGroup/index.js +61 -0
  754. package/dist/primitives/ToggleGroup/index.js.map +1 -0
  755. package/dist/primitives/Tooltip/index.cjs +47 -0
  756. package/dist/primitives/Tooltip/index.cjs.map +1 -0
  757. package/dist/primitives/Tooltip/index.d.cts +2 -0
  758. package/dist/primitives/Tooltip/index.d.ts +2 -0
  759. package/dist/primitives/Tooltip/index.js +43 -0
  760. package/dist/primitives/Tooltip/index.js.map +1 -0
  761. package/dist/primitives/index.cjs +398 -255
  762. package/dist/primitives/index.d.cts +65 -2
  763. package/dist/primitives/index.d.ts +65 -2
  764. package/dist/primitives/index.js +65 -5
  765. package/dist/styles/base.css +113 -0
  766. package/dist/styles/glass.css +75 -0
  767. package/dist/styles/index.css +43 -23
  768. package/dist/styles/semantic.css +167 -0
  769. package/dist/styles/theme.css +54 -24
  770. package/dist/styles/tokens/alpha.css +39 -0
  771. package/dist/styles/tokens/border-radius.css +17 -0
  772. package/dist/styles/tokens/chart-colors-dark.css +18 -0
  773. package/dist/styles/tokens/chart-colors-light.css +18 -0
  774. package/dist/styles/tokens/colors.css +251 -0
  775. package/dist/styles/tokens/mode-dark.css +101 -0
  776. package/dist/styles/tokens/mode-light.css +101 -0
  777. package/dist/styles/tokens/shadows.css +14 -0
  778. package/dist/styles/tokens/spacing.css +44 -0
  779. package/dist/styles/tokens/theme-bodhi.css +35 -0
  780. package/dist/styles/tokens/theme-slingshot.css +35 -0
  781. package/dist/styles/tokens/theme-sustain.css +35 -0
  782. package/dist/styles/tokens/typography.css +83 -0
  783. package/package.json +33 -40
  784. package/dist/AiChatPanel.cjs +0 -1603
  785. package/dist/AiChatPanel.cjs.map +0 -1
  786. package/dist/AiChatPanel.js +0 -1526
  787. package/dist/AiChatPanel.js.map +0 -1
  788. package/dist/BodhiLogo.cjs +0 -240
  789. package/dist/BodhiLogo.cjs.map +0 -1
  790. package/dist/BodhiLogo.js +0 -194
  791. package/dist/BodhiLogo.js.map +0 -1
  792. package/dist/Skeleton.cjs +0 -19
  793. package/dist/Skeleton.cjs.map +0 -1
  794. package/dist/Skeleton.js +0 -14
  795. package/dist/Skeleton.js.map +0 -1
  796. package/dist/SustainLogo.cjs +0 -415
  797. package/dist/SustainLogo.cjs.map +0 -1
  798. package/dist/SustainLogo.js +0 -378
  799. package/dist/SustainLogo.js.map +0 -1
  800. package/dist/contexts/index.cjs.map +0 -1
  801. package/dist/contexts/index.d.cts.map +0 -1
  802. package/dist/contexts/index.d.ts.map +0 -1
  803. package/dist/contexts/index.js.map +0 -1
  804. package/dist/layouts/index.d.cts.map +0 -1
  805. package/dist/layouts/index.d.ts.map +0 -1
  806. package/dist/layouts.cjs +0 -3245
  807. package/dist/layouts.cjs.map +0 -1
  808. package/dist/layouts.js +0 -3180
  809. package/dist/layouts.js.map +0 -1
  810. package/dist/patterns/index.cjs.map +0 -1
  811. package/dist/patterns/index.d.cts.map +0 -1
  812. package/dist/patterns/index.d.ts.map +0 -1
  813. package/dist/patterns/index.js.map +0 -1
  814. package/dist/primitives.cjs +0 -4292
  815. package/dist/primitives.cjs.map +0 -1
  816. package/dist/primitives.js +0 -2807
  817. package/dist/primitives.js.map +0 -1
  818. package/dist/styles/base/colors.css +0 -300
  819. package/dist/styles/base/component-tokens.css +0 -240
  820. package/dist/styles/base/elevation.css +0 -7
  821. package/dist/styles/base/fonts.css +0 -14
  822. package/dist/styles/base/global.css +0 -305
  823. package/dist/styles/base/radius.css +0 -22
  824. package/dist/styles/base/semantic-aliases.css +0 -53
  825. package/dist/styles/base/spacing.css +0 -33
  826. package/dist/styles/base/typography.css +0 -48
  827. package/dist/styles/generated/bodhi-vars.css +0 -34
  828. package/dist/styles/generated/dark.css +0 -87
  829. package/dist/styles/generated/light.css +0 -87
  830. package/dist/styles/generated/slingshot-vars.css +0 -34
  831. package/dist/styles/generated/sustain-vars.css +0 -34
  832. package/dist/styles/themes/bodhi.css +0 -166
  833. package/dist/styles/themes/slingshot.css +0 -144
  834. package/dist/styles/themes/sustain.css +0 -130
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["React","cn","RechartsPrimitive"],"sources":["../../../src/primitives/Chart/Chart.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\nimport type { TooltipValueType } from \"recharts\";\n\nimport { cn } from \"@/utils\";\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\n\nconst INITIAL_DIMENSION = { width: 320, height: 200 } as const;\ntype TooltipNameType = number | string;\n\n/** Maps each data key to its display label, optional icon, and color (flat or per-theme). */\nexport type ChartConfig = Record<\n string,\n {\n /** Human-readable label rendered in tooltips and the legend. */\n label?: React.ReactNode;\n /** Optional icon component shown alongside the label. */\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n>;\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\");\n }\n\n return context;\n}\n\n/** Root chart wrapper: provides the config context, theme CSS variables, and a responsive container. */\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n initialDimension = INITIAL_DIMENSION,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Maps data keys to labels, icons, and colors used across tooltip and legend. */\n config: ChartConfig;\n /** Recharts chart element rendered inside the responsive container. */\n children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>[\"children\"];\n /** Initial width/height used before the responsive container measures its parent. */\n initialDimension?: {\n width: number;\n height: number;\n };\n}) {\n const uniqueId = React.useId();\n const chartId = `chart-${id ?? uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer initialDimension={initialDimension}>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n}\n\n/** Injects per-chart CSS custom properties (`--color-*`) derived from the config, one block per theme. */\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(([, config]) => config.theme ?? config.color);\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ?? itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join(\"\\n\")}\n}\n`,\n )\n .join(\"\\n\"),\n }}\n />\n );\n};\n\n/** Recharts Tooltip element; pair with `ChartTooltipContent` for the styled body. */\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\n/** Styled tooltip body that resolves labels, colors, and indicators from the chart config. */\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n /** Hides the tooltip's leading label row. */\n hideLabel?: boolean;\n /** Hides the per-item color indicator swatch. */\n hideIndicator?: boolean;\n /** Visual style of the per-item color indicator. */\n indicator?: \"line\" | \"dot\" | \"dashed\";\n /** Config key used to resolve each item's label/color (defaults to its name). */\n nameKey?: string;\n /** Config key used to resolve the tooltip's label (defaults to the data key). */\n labelKey?: string;\n } & Omit<\n RechartsPrimitive.DefaultTooltipContentProps<TooltipValueType, TooltipNameType>,\n \"accessibilityLayer\"\n >) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey ?? item?.dataKey ?? item?.name ?? \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === \"string\" ? (config[label]?.label ?? label) : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>{labelFormatter(value, payload)}</div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey ?? item.name ?? item.dataKey ?? \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color ?? item.payload?.fill ?? item.color;\n\n return (\n <div\n key={index}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\",\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n },\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\",\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label ?? item.name}\n </span>\n </div>\n {item.value != null && (\n <span className=\"font-mono font-medium text-foreground tabular-nums\">\n {typeof item.value === \"number\"\n ? item.value.toLocaleString()\n : String(item.value)}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\n/** Recharts Legend element; pair with `ChartLegendContent` for the styled body. */\nconst ChartLegend = RechartsPrimitive.Legend;\n\n/** Styled legend body that resolves labels, icons, and colors from the chart config. */\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> & {\n /** Hides each item's icon, showing only the color swatch. */\n hideIcon?: boolean;\n /** Config key used to resolve each item's label/color (defaults to the data key). */\n nameKey?: string;\n} & RechartsPrimitive.DefaultLegendContentProps) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className,\n )}\n >\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey ?? item.dataKey ?? \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={index}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\",\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n \"payload\" in payload && typeof payload.payload === \"object\" && payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (key in payload && typeof payload[key as keyof typeof payload] === \"string\") {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string;\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key];\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n};\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { a as ChartStyle, i as ChartLegendContent, n as ChartContainer, o as ChartTooltip, r as ChartLegend, s as ChartTooltipContent, t as ChartConfig } from "../../index14.cjs";
2
+ export { ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent };
@@ -0,0 +1,2 @@
1
+ import { a as ChartStyle, i as ChartLegendContent, n as ChartContainer, o as ChartTooltip, r as ChartLegend, s as ChartTooltipContent, t as ChartConfig } from "../../index14.js";
2
+ export { ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent };
@@ -0,0 +1,153 @@
1
+ import { t as cn } from "../../cn.js";
2
+ import * as React from "react";
3
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
+ import * as RechartsPrimitive from "recharts";
5
+ //#region src/primitives/Chart/Chart.tsx
6
+ const THEMES = {
7
+ light: "",
8
+ dark: ".dark"
9
+ };
10
+ const INITIAL_DIMENSION = {
11
+ width: 320,
12
+ height: 200
13
+ };
14
+ const ChartContext = React.createContext(null);
15
+ function useChart() {
16
+ const context = React.useContext(ChartContext);
17
+ if (!context) throw new Error("useChart must be used within a <ChartContainer />");
18
+ return context;
19
+ }
20
+ /** Root chart wrapper: provides the config context, theme CSS variables, and a responsive container. */
21
+ function ChartContainer({ id, className, children, config, initialDimension = INITIAL_DIMENSION, ...props }) {
22
+ const uniqueId = React.useId();
23
+ const chartId = `chart-${id ?? uniqueId.replace(/:/g, "")}`;
24
+ return /* @__PURE__ */ jsx(ChartContext.Provider, {
25
+ value: { config },
26
+ children: /* @__PURE__ */ jsxs("div", {
27
+ "data-slot": "chart",
28
+ "data-chart": chartId,
29
+ className: cn("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden", className),
30
+ ...props,
31
+ children: [/* @__PURE__ */ jsx(ChartStyle, {
32
+ id: chartId,
33
+ config
34
+ }), /* @__PURE__ */ jsx(RechartsPrimitive.ResponsiveContainer, {
35
+ initialDimension,
36
+ children
37
+ })]
38
+ })
39
+ });
40
+ }
41
+ /** Injects per-chart CSS custom properties (`--color-*`) derived from the config, one block per theme. */
42
+ const ChartStyle = ({ id, config }) => {
43
+ const colorConfig = Object.entries(config).filter(([, config]) => config.theme ?? config.color);
44
+ if (!colorConfig.length) return null;
45
+ return /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: Object.entries(THEMES).map(([theme, prefix]) => `
46
+ ${prefix} [data-chart=${id}] {
47
+ ${colorConfig.map(([key, itemConfig]) => {
48
+ const color = itemConfig.theme?.[theme] ?? itemConfig.color;
49
+ return color ? ` --color-${key}: ${color};` : null;
50
+ }).join("\n")}
51
+ }
52
+ `).join("\n") } });
53
+ };
54
+ /** Recharts Tooltip element; pair with `ChartTooltipContent` for the styled body. */
55
+ const ChartTooltip = RechartsPrimitive.Tooltip;
56
+ /** Styled tooltip body that resolves labels, colors, and indicators from the chart config. */
57
+ function ChartTooltipContent({ active, payload, className, indicator = "dot", hideLabel = false, hideIndicator = false, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey }) {
58
+ const { config } = useChart();
59
+ const tooltipLabel = React.useMemo(() => {
60
+ if (hideLabel || !payload?.length) return null;
61
+ const [item] = payload;
62
+ const itemConfig = getPayloadConfigFromPayload(config, item, `${labelKey ?? item?.dataKey ?? item?.name ?? "value"}`);
63
+ const value = !labelKey && typeof label === "string" ? config[label]?.label ?? label : itemConfig?.label;
64
+ if (labelFormatter) return /* @__PURE__ */ jsx("div", {
65
+ className: cn("font-medium", labelClassName),
66
+ children: labelFormatter(value, payload)
67
+ });
68
+ if (!value) return null;
69
+ return /* @__PURE__ */ jsx("div", {
70
+ className: cn("font-medium", labelClassName),
71
+ children: value
72
+ });
73
+ }, [
74
+ label,
75
+ labelFormatter,
76
+ payload,
77
+ hideLabel,
78
+ labelClassName,
79
+ config,
80
+ labelKey
81
+ ]);
82
+ if (!active || !payload?.length) return null;
83
+ const nestLabel = payload.length === 1 && indicator !== "dot";
84
+ return /* @__PURE__ */ jsxs("div", {
85
+ className: cn("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl", className),
86
+ children: [!nestLabel ? tooltipLabel : null, /* @__PURE__ */ jsx("div", {
87
+ className: "grid gap-1.5",
88
+ children: payload.filter((item) => item.type !== "none").map((item, index) => {
89
+ const itemConfig = getPayloadConfigFromPayload(config, item, `${nameKey ?? item.name ?? item.dataKey ?? "value"}`);
90
+ const indicatorColor = color ?? item.payload?.fill ?? item.color;
91
+ return /* @__PURE__ */ jsx("div", {
92
+ className: cn("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground", indicator === "dot" && "items-center"),
93
+ children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs(Fragment, { children: [itemConfig?.icon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx("div", {
94
+ className: cn("shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)", {
95
+ "h-2.5 w-2.5": indicator === "dot",
96
+ "w-1": indicator === "line",
97
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
98
+ "my-0.5": nestLabel && indicator === "dashed"
99
+ }),
100
+ style: {
101
+ "--color-bg": indicatorColor,
102
+ "--color-border": indicatorColor
103
+ }
104
+ }), /* @__PURE__ */ jsxs("div", {
105
+ className: cn("flex flex-1 justify-between leading-none", nestLabel ? "items-end" : "items-center"),
106
+ children: [/* @__PURE__ */ jsxs("div", {
107
+ className: "grid gap-1.5",
108
+ children: [nestLabel ? tooltipLabel : null, /* @__PURE__ */ jsx("span", {
109
+ className: "text-muted-foreground",
110
+ children: itemConfig?.label ?? item.name
111
+ })]
112
+ }), item.value != null && /* @__PURE__ */ jsx("span", {
113
+ className: "font-mono font-medium text-foreground tabular-nums",
114
+ children: typeof item.value === "number" ? item.value.toLocaleString() : String(item.value)
115
+ })]
116
+ })] })
117
+ }, index);
118
+ })
119
+ })]
120
+ });
121
+ }
122
+ /** Recharts Legend element; pair with `ChartLegendContent` for the styled body. */
123
+ const ChartLegend = RechartsPrimitive.Legend;
124
+ /** Styled legend body that resolves labels, icons, and colors from the chart config. */
125
+ function ChartLegendContent({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }) {
126
+ const { config } = useChart();
127
+ if (!payload?.length) return null;
128
+ return /* @__PURE__ */ jsx("div", {
129
+ className: cn("flex items-center justify-center gap-4", verticalAlign === "top" ? "pb-3" : "pt-3", className),
130
+ children: payload.filter((item) => item.type !== "none").map((item, index) => {
131
+ const itemConfig = getPayloadConfigFromPayload(config, item, `${nameKey ?? item.dataKey ?? "value"}`);
132
+ return /* @__PURE__ */ jsxs("div", {
133
+ className: cn("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),
134
+ children: [itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsx("div", {
135
+ className: "h-2 w-2 shrink-0 rounded-[2px]",
136
+ style: { backgroundColor: item.color }
137
+ }), itemConfig?.label]
138
+ }, index);
139
+ })
140
+ });
141
+ }
142
+ function getPayloadConfigFromPayload(config, payload, key) {
143
+ if (typeof payload !== "object" || payload === null) return;
144
+ const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
145
+ let configLabelKey = key;
146
+ if (key in payload && typeof payload[key] === "string") configLabelKey = payload[key];
147
+ else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") configLabelKey = payloadPayload[key];
148
+ return configLabelKey in config ? config[configLabelKey] : config[key];
149
+ }
150
+ //#endregion
151
+ export { ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent };
152
+
153
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/primitives/Chart/Chart.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\nimport type { TooltipValueType } from \"recharts\";\n\nimport { cn } from \"@/utils\";\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\n\nconst INITIAL_DIMENSION = { width: 320, height: 200 } as const;\ntype TooltipNameType = number | string;\n\n/** Maps each data key to its display label, optional icon, and color (flat or per-theme). */\nexport type ChartConfig = Record<\n string,\n {\n /** Human-readable label rendered in tooltips and the legend. */\n label?: React.ReactNode;\n /** Optional icon component shown alongside the label. */\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n>;\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\");\n }\n\n return context;\n}\n\n/** Root chart wrapper: provides the config context, theme CSS variables, and a responsive container. */\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n initialDimension = INITIAL_DIMENSION,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Maps data keys to labels, icons, and colors used across tooltip and legend. */\n config: ChartConfig;\n /** Recharts chart element rendered inside the responsive container. */\n children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>[\"children\"];\n /** Initial width/height used before the responsive container measures its parent. */\n initialDimension?: {\n width: number;\n height: number;\n };\n}) {\n const uniqueId = React.useId();\n const chartId = `chart-${id ?? uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer initialDimension={initialDimension}>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n}\n\n/** Injects per-chart CSS custom properties (`--color-*`) derived from the config, one block per theme. */\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(([, config]) => config.theme ?? config.color);\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ?? itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join(\"\\n\")}\n}\n`,\n )\n .join(\"\\n\"),\n }}\n />\n );\n};\n\n/** Recharts Tooltip element; pair with `ChartTooltipContent` for the styled body. */\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\n/** Styled tooltip body that resolves labels, colors, and indicators from the chart config. */\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n /** Hides the tooltip's leading label row. */\n hideLabel?: boolean;\n /** Hides the per-item color indicator swatch. */\n hideIndicator?: boolean;\n /** Visual style of the per-item color indicator. */\n indicator?: \"line\" | \"dot\" | \"dashed\";\n /** Config key used to resolve each item's label/color (defaults to its name). */\n nameKey?: string;\n /** Config key used to resolve the tooltip's label (defaults to the data key). */\n labelKey?: string;\n } & Omit<\n RechartsPrimitive.DefaultTooltipContentProps<TooltipValueType, TooltipNameType>,\n \"accessibilityLayer\"\n >) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey ?? item?.dataKey ?? item?.name ?? \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === \"string\" ? (config[label]?.label ?? label) : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>{labelFormatter(value, payload)}</div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey ?? item.name ?? item.dataKey ?? \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color ?? item.payload?.fill ?? item.color;\n\n return (\n <div\n key={index}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\",\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n },\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\",\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label ?? item.name}\n </span>\n </div>\n {item.value != null && (\n <span className=\"font-mono font-medium text-foreground tabular-nums\">\n {typeof item.value === \"number\"\n ? item.value.toLocaleString()\n : String(item.value)}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\n/** Recharts Legend element; pair with `ChartLegendContent` for the styled body. */\nconst ChartLegend = RechartsPrimitive.Legend;\n\n/** Styled legend body that resolves labels, icons, and colors from the chart config. */\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> & {\n /** Hides each item's icon, showing only the color swatch. */\n hideIcon?: boolean;\n /** Config key used to resolve each item's label/color (defaults to the data key). */\n nameKey?: string;\n} & RechartsPrimitive.DefaultLegendContentProps) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className,\n )}\n >\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey ?? item.dataKey ?? \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={index}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\",\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n \"payload\" in payload && typeof payload.payload === \"object\" && payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (key in payload && typeof payload[key as keyof typeof payload] === \"string\") {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string;\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key];\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n};\n"],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_cn = require("../../cn.cjs");
3
+ let react = require("react");
4
+ let lucide_react = require("lucide-react");
5
+ let radix_ui = require("radix-ui");
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+ //#region src/primitives/Checkbox/Checkbox.tsx
8
+ /** A square toggle control built on Radix Checkbox, supporting checked, unchecked, indeterminate, error, and disabled states. */
9
+ function Checkbox({ className, ...props }) {
10
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.Checkbox.Root, {
11
+ "data-slot": "checkbox",
12
+ className: require_cn.cn("group/checkbox peer bg-input-background dark:bg-input/30 size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none disabled:cursor-not-allowed disabled:opacity-50", "data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary dark:data-[state=checked]:bg-primary", "data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40", "aria-invalid:data-[state=checked]:bg-destructive aria-invalid:data-[state=checked]:border-destructive aria-invalid:data-[state=checked]:text-white", className),
13
+ ...props,
14
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(radix_ui.Checkbox.Indicator, {
15
+ "data-slot": "checkbox-indicator",
16
+ className: "flex items-center justify-center text-current transition-none",
17
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.CheckIcon, { className: "size-3.5 group-data-[state=indeterminate]/checkbox:hidden" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.MinusIcon, { className: "hidden size-3.5 group-data-[state=indeterminate]/checkbox:block" })]
18
+ })
19
+ });
20
+ }
21
+ /** A bordered card variant of {@link Checkbox} that pairs the control with a title and optional description. */
22
+ function RichCheckbox({ className, title, description, flipped = false, id, ...props }) {
23
+ const generatedId = (0, react.useId)();
24
+ const checkboxId = id ?? generatedId;
25
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
26
+ "data-slot": "rich-checkbox",
27
+ htmlFor: checkboxId,
28
+ className: require_cn.cn("flex cursor-pointer items-start gap-3 rounded-lg border border-input bg-card p-4 text-card-foreground shadow-xs transition-colors has-[[data-state=checked]]:border-primary has-[[data-state=checked]]:bg-accent/40 has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50", flipped ? "flex-row-reverse" : "flex-row", className),
29
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Checkbox, {
30
+ "data-slot": "rich-checkbox-control",
31
+ id: checkboxId,
32
+ className: "mt-0.5",
33
+ ...props
34
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
35
+ "data-slot": "rich-checkbox-content",
36
+ className: "flex flex-1 flex-col gap-1",
37
+ children: [title != null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
38
+ "data-slot": "rich-checkbox-title",
39
+ className: "font-medium text-sm leading-none",
40
+ children: title
41
+ }), description != null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
42
+ "data-slot": "rich-checkbox-description",
43
+ className: "text-sm text-muted-foreground",
44
+ children: description
45
+ })]
46
+ })]
47
+ });
48
+ }
49
+ //#endregion
50
+ exports.Checkbox = Checkbox;
51
+ exports.RichCheckbox = RichCheckbox;
52
+
53
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["CheckboxPrimitive","cn","CheckIcon","MinusIcon"],"sources":["../../../src/primitives/Checkbox/Checkbox.tsx"],"sourcesContent":["import { CheckIcon, MinusIcon } from \"lucide-react\";\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\";\nimport { useId } from \"react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** A square toggle control built on Radix Checkbox, supporting checked, unchecked, indeterminate, error, and disabled states. */\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"group/checkbox peer bg-input-background dark:bg-input/30 size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n // Checked + indeterminate share the primary fill.\n \"data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary dark:data-[state=checked]:bg-primary\",\n \"data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n // Error: red border when unchecked, red fill when checked (Figma error states).\n \"aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\",\n \"aria-invalid:data-[state=checked]:bg-destructive aria-invalid:data-[state=checked]:border-destructive aria-invalid:data-[state=checked]:text-white\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5 group-data-[state=indeterminate]/checkbox:hidden\" />\n <MinusIcon className=\"hidden size-3.5 group-data-[state=indeterminate]/checkbox:block\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\n/** A bordered card variant of {@link Checkbox} that pairs the control with a title and optional description. */\nfunction RichCheckbox({\n className,\n title,\n description,\n flipped = false,\n id,\n ...props\n}: Omit<React.ComponentProps<typeof Checkbox>, \"children\"> & {\n /** Primary label rendered next to the checkbox. */\n title?: React.ReactNode;\n /** Secondary helper text rendered beneath the title. */\n description?: React.ReactNode;\n /** When true, places the checkbox on the right (row-reverse) instead of the left. */\n flipped?: boolean;\n}) {\n const generatedId = useId();\n const checkboxId = id ?? generatedId;\n return (\n <label\n data-slot=\"rich-checkbox\"\n htmlFor={checkboxId}\n className={cn(\n \"flex cursor-pointer items-start gap-3 rounded-lg border border-input bg-card p-4 text-card-foreground shadow-xs transition-colors has-[[data-state=checked]]:border-primary has-[[data-state=checked]]:bg-accent/40 has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50\",\n flipped ? \"flex-row-reverse\" : \"flex-row\",\n className,\n )}\n >\n <Checkbox data-slot=\"rich-checkbox-control\" id={checkboxId} className=\"mt-0.5\" {...props} />\n <span data-slot=\"rich-checkbox-content\" className=\"flex flex-1 flex-col gap-1\">\n {title != null && (\n <span data-slot=\"rich-checkbox-title\" className=\"font-medium text-sm leading-none\">\n {title}\n </span>\n )}\n {description != null && (\n <span data-slot=\"rich-checkbox-description\" className=\"text-sm text-muted-foreground\">\n {description}\n </span>\n )}\n </span>\n </label>\n );\n}\n\nexport { Checkbox, RichCheckbox };\n"],"mappings":";;;;;;;;AAQA,SAAS,SAAS,EAAE,WAAW,GAAG,SAA8D;CAC9F,OACE,iBAAA,GAAA,kBAAA,KAACA,SAAAA,SAAkB,MAAnB;EACE,aAAU;EACV,WAAWC,WAAAA,GACT,0LAEA,yJACA,sIACA,iFAEA,0GACA,sJACA,SACF;EACA,GAAI;YAEJ,iBAAA,GAAA,kBAAA,MAACD,SAAAA,SAAkB,WAAnB;GACE,aAAU;GACV,WAAU;aAFZ,CAIE,iBAAA,GAAA,kBAAA,KAACE,aAAAA,WAAD,EAAW,WAAU,4DAA6D,CAAA,GAClF,iBAAA,GAAA,kBAAA,KAACC,aAAAA,WAAD,EAAW,WAAU,kEAAmE,CAAA,CAC7D;;CACP,CAAA;AAE5B;;AAGA,SAAS,aAAa,EACpB,WACA,OACA,aACA,UAAU,OACV,IACA,GAAG,SAQF;CACD,MAAM,eAAA,GAAA,MAAA,OAAoB;CAC1B,MAAM,aAAa,MAAM;CACzB,OACE,iBAAA,GAAA,kBAAA,MAAC,SAAD;EACE,aAAU;EACV,SAAS;EACT,WAAWF,WAAAA,GACT,qRACA,UAAU,qBAAqB,YAC/B,SACF;YAPF,CASE,iBAAA,GAAA,kBAAA,KAAC,UAAD;GAAU,aAAU;GAAwB,IAAI;GAAY,WAAU;GAAS,GAAI;EAAQ,CAAA,GAC3F,iBAAA,GAAA,kBAAA,MAAC,QAAD;GAAM,aAAU;GAAwB,WAAU;aAAlD,CACG,SAAS,QACR,iBAAA,GAAA,kBAAA,KAAC,QAAD;IAAM,aAAU;IAAsB,WAAU;cAC7C;GACG,CAAA,GAEP,eAAe,QACd,iBAAA,GAAA,kBAAA,KAAC,QAAD;IAAM,aAAU;IAA4B,WAAU;cACnD;GACG,CAAA,CAEJ;IACD;;AAEX"}
@@ -0,0 +1,2 @@
1
+ import { n as RichCheckbox, t as Checkbox } from "../../index15.cjs";
2
+ export { Checkbox, RichCheckbox };
@@ -0,0 +1,2 @@
1
+ import { n as RichCheckbox, t as Checkbox } from "../../index15.js";
2
+ export { Checkbox, RichCheckbox };
@@ -0,0 +1,51 @@
1
+ import { t as cn } from "../../cn.js";
2
+ import { useId } from "react";
3
+ import { CheckIcon, MinusIcon } from "lucide-react";
4
+ import { Checkbox as Checkbox$1 } from "radix-ui";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/primitives/Checkbox/Checkbox.tsx
7
+ /** A square toggle control built on Radix Checkbox, supporting checked, unchecked, indeterminate, error, and disabled states. */
8
+ function Checkbox({ className, ...props }) {
9
+ return /* @__PURE__ */ jsx(Checkbox$1.Root, {
10
+ "data-slot": "checkbox",
11
+ className: cn("group/checkbox peer bg-input-background dark:bg-input/30 size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none disabled:cursor-not-allowed disabled:opacity-50", "data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary dark:data-[state=checked]:bg-primary", "data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40", "aria-invalid:data-[state=checked]:bg-destructive aria-invalid:data-[state=checked]:border-destructive aria-invalid:data-[state=checked]:text-white", className),
12
+ ...props,
13
+ children: /* @__PURE__ */ jsxs(Checkbox$1.Indicator, {
14
+ "data-slot": "checkbox-indicator",
15
+ className: "flex items-center justify-center text-current transition-none",
16
+ children: [/* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5 group-data-[state=indeterminate]/checkbox:hidden" }), /* @__PURE__ */ jsx(MinusIcon, { className: "hidden size-3.5 group-data-[state=indeterminate]/checkbox:block" })]
17
+ })
18
+ });
19
+ }
20
+ /** A bordered card variant of {@link Checkbox} that pairs the control with a title and optional description. */
21
+ function RichCheckbox({ className, title, description, flipped = false, id, ...props }) {
22
+ const generatedId = useId();
23
+ const checkboxId = id ?? generatedId;
24
+ return /* @__PURE__ */ jsxs("label", {
25
+ "data-slot": "rich-checkbox",
26
+ htmlFor: checkboxId,
27
+ className: cn("flex cursor-pointer items-start gap-3 rounded-lg border border-input bg-card p-4 text-card-foreground shadow-xs transition-colors has-[[data-state=checked]]:border-primary has-[[data-state=checked]]:bg-accent/40 has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50", flipped ? "flex-row-reverse" : "flex-row", className),
28
+ children: [/* @__PURE__ */ jsx(Checkbox, {
29
+ "data-slot": "rich-checkbox-control",
30
+ id: checkboxId,
31
+ className: "mt-0.5",
32
+ ...props
33
+ }), /* @__PURE__ */ jsxs("span", {
34
+ "data-slot": "rich-checkbox-content",
35
+ className: "flex flex-1 flex-col gap-1",
36
+ children: [title != null && /* @__PURE__ */ jsx("span", {
37
+ "data-slot": "rich-checkbox-title",
38
+ className: "font-medium text-sm leading-none",
39
+ children: title
40
+ }), description != null && /* @__PURE__ */ jsx("span", {
41
+ "data-slot": "rich-checkbox-description",
42
+ className: "text-sm text-muted-foreground",
43
+ children: description
44
+ })]
45
+ })]
46
+ });
47
+ }
48
+ //#endregion
49
+ export { Checkbox, RichCheckbox };
50
+
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["CheckboxPrimitive"],"sources":["../../../src/primitives/Checkbox/Checkbox.tsx"],"sourcesContent":["import { CheckIcon, MinusIcon } from \"lucide-react\";\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\";\nimport { useId } from \"react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** A square toggle control built on Radix Checkbox, supporting checked, unchecked, indeterminate, error, and disabled states. */\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"group/checkbox peer bg-input-background dark:bg-input/30 size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n // Checked + indeterminate share the primary fill.\n \"data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary dark:data-[state=checked]:bg-primary\",\n \"data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n // Error: red border when unchecked, red fill when checked (Figma error states).\n \"aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40\",\n \"aria-invalid:data-[state=checked]:bg-destructive aria-invalid:data-[state=checked]:border-destructive aria-invalid:data-[state=checked]:text-white\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5 group-data-[state=indeterminate]/checkbox:hidden\" />\n <MinusIcon className=\"hidden size-3.5 group-data-[state=indeterminate]/checkbox:block\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\n/** A bordered card variant of {@link Checkbox} that pairs the control with a title and optional description. */\nfunction RichCheckbox({\n className,\n title,\n description,\n flipped = false,\n id,\n ...props\n}: Omit<React.ComponentProps<typeof Checkbox>, \"children\"> & {\n /** Primary label rendered next to the checkbox. */\n title?: React.ReactNode;\n /** Secondary helper text rendered beneath the title. */\n description?: React.ReactNode;\n /** When true, places the checkbox on the right (row-reverse) instead of the left. */\n flipped?: boolean;\n}) {\n const generatedId = useId();\n const checkboxId = id ?? generatedId;\n return (\n <label\n data-slot=\"rich-checkbox\"\n htmlFor={checkboxId}\n className={cn(\n \"flex cursor-pointer items-start gap-3 rounded-lg border border-input bg-card p-4 text-card-foreground shadow-xs transition-colors has-[[data-state=checked]]:border-primary has-[[data-state=checked]]:bg-accent/40 has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50\",\n flipped ? \"flex-row-reverse\" : \"flex-row\",\n className,\n )}\n >\n <Checkbox data-slot=\"rich-checkbox-control\" id={checkboxId} className=\"mt-0.5\" {...props} />\n <span data-slot=\"rich-checkbox-content\" className=\"flex flex-1 flex-col gap-1\">\n {title != null && (\n <span data-slot=\"rich-checkbox-title\" className=\"font-medium text-sm leading-none\">\n {title}\n </span>\n )}\n {description != null && (\n <span data-slot=\"rich-checkbox-description\" className=\"text-sm text-muted-foreground\">\n {description}\n </span>\n )}\n </span>\n </label>\n );\n}\n\nexport { Checkbox, RichCheckbox };\n"],"mappings":";;;;;;;AAQA,SAAS,SAAS,EAAE,WAAW,GAAG,SAA8D;CAC9F,OACE,oBAACA,WAAkB,MAAnB;EACE,aAAU;EACV,WAAW,GACT,0LAEA,yJACA,sIACA,iFAEA,0GACA,sJACA,SACF;EACA,GAAI;YAEJ,qBAACA,WAAkB,WAAnB;GACE,aAAU;GACV,WAAU;aAFZ,CAIE,oBAAC,WAAD,EAAW,WAAU,4DAA6D,CAAA,GAClF,oBAAC,WAAD,EAAW,WAAU,kEAAmE,CAAA,CAC7D;;CACP,CAAA;AAE5B;;AAGA,SAAS,aAAa,EACpB,WACA,OACA,aACA,UAAU,OACV,IACA,GAAG,SAQF;CACD,MAAM,cAAc,MAAM;CAC1B,MAAM,aAAa,MAAM;CACzB,OACE,qBAAC,SAAD;EACE,aAAU;EACV,SAAS;EACT,WAAW,GACT,qRACA,UAAU,qBAAqB,YAC/B,SACF;YAPF,CASE,oBAAC,UAAD;GAAU,aAAU;GAAwB,IAAI;GAAY,WAAU;GAAS,GAAI;EAAQ,CAAA,GAC3F,qBAAC,QAAD;GAAM,aAAU;GAAwB,WAAU;aAAlD,CACG,SAAS,QACR,oBAAC,QAAD;IAAM,aAAU;IAAsB,WAAU;cAC7C;GACG,CAAA,GAEP,eAAe,QACd,oBAAC,QAAD;IAAM,aAAU;IAA4B,WAAU;cACnD;GACG,CAAA,CAEJ;IACD;;AAEX"}
@@ -0,0 +1,106 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_chunk = require("../../chunk.cjs");
3
+ const require_cn = require("../../cn.cjs");
4
+ const require_primitives_Checkbox_index = require("../Checkbox/index.cjs");
5
+ let react = require("react");
6
+ react = require_chunk.__toESM(react);
7
+ let lucide_react = require("lucide-react");
8
+ let react_jsx_runtime = require("react/jsx-runtime");
9
+ //#region src/primitives/CheckboxTree/CheckboxTree.tsx
10
+ /** All ids in a node's subtree (the node itself + every descendant). */
11
+ function collectIds(node) {
12
+ if (!node.children?.length) return [node.id];
13
+ return [node.id, ...node.children.flatMap(collectIds)];
14
+ }
15
+ /** A leaf is checked iff selected; a branch derives its state from its children. */
16
+ function getNodeState(node, selected) {
17
+ if (!node.children?.length) return selected.has(node.id) ? "checked" : "unchecked";
18
+ const states = node.children.map((child) => getNodeState(child, selected));
19
+ if (states.every((s) => s === "checked")) return "checked";
20
+ if (states.every((s) => s === "unchecked")) return "unchecked";
21
+ return "indeterminate";
22
+ }
23
+ /**
24
+ * A hierarchical checkbox list with expand/collapse and tri-state
25
+ * (checked / unchecked / indeterminate) propagation across each subtree.
26
+ */
27
+ function CheckboxTree({ nodes, value, onValueChange, defaultExpandedIds, className, ...props }) {
28
+ const [expanded, setExpanded] = react.useState(() => new Set(defaultExpandedIds ?? []));
29
+ const selected = react.useMemo(() => new Set(value), [value]);
30
+ const toggleExpand = (id) => setExpanded((prev) => {
31
+ const next = new Set(prev);
32
+ if (next.has(id)) next.delete(id);
33
+ else next.add(id);
34
+ return next;
35
+ });
36
+ const toggleSelect = (node) => {
37
+ const ids = collectIds(node);
38
+ const allSelected = ids.every((id) => selected.has(id));
39
+ const next = new Set(selected);
40
+ for (const id of ids) if (allSelected) next.delete(id);
41
+ else next.add(id);
42
+ onValueChange?.([...next]);
43
+ };
44
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
45
+ role: "tree",
46
+ "data-slot": "checkbox-tree",
47
+ className: require_cn.cn("flex flex-col gap-1", className),
48
+ ...props,
49
+ children: nodes.map((node) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TreeNode, {
50
+ node,
51
+ depth: 0,
52
+ selected,
53
+ expanded,
54
+ onToggleSelect: toggleSelect,
55
+ onToggleExpand: toggleExpand
56
+ }, node.id))
57
+ });
58
+ }
59
+ /** Renders a single tree row plus, when expanded, its child rows recursively. */
60
+ function TreeNode({ node, depth, selected, expanded, onToggleSelect, onToggleExpand }) {
61
+ const hasChildren = !!node.children?.length;
62
+ const isExpanded = expanded.has(node.id);
63
+ const state = getNodeState(node, selected);
64
+ const checkboxId = react.useId();
65
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
66
+ role: "treeitem",
67
+ "aria-expanded": hasChildren ? isExpanded : void 0,
68
+ "aria-checked": state === "indeterminate" ? "mixed" : state === "checked",
69
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
70
+ className: "flex items-center gap-1",
71
+ style: { paddingLeft: `${depth * 1.5}rem` },
72
+ children: [hasChildren ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
73
+ type: "button",
74
+ onClick: () => onToggleExpand(node.id),
75
+ "aria-label": isExpanded ? "Collapse" : "Expand",
76
+ className: "flex size-5 shrink-0 items-center justify-center text-muted-foreground hover:text-foreground",
77
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronRight, { className: require_cn.cn("size-4 transition-transform", isExpanded && "rotate-90") })
78
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: "w-5 shrink-0" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
79
+ htmlFor: checkboxId,
80
+ className: "flex flex-1 cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 transition-colors hover:bg-accent/40",
81
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_primitives_Checkbox_index.Checkbox, {
82
+ id: checkboxId,
83
+ checked: state === "indeterminate" ? "indeterminate" : state === "checked",
84
+ onCheckedChange: () => onToggleSelect(node)
85
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
86
+ className: require_cn.cn("text-sm", depth === 0 && "font-medium"),
87
+ children: node.label
88
+ })]
89
+ })]
90
+ }), hasChildren && isExpanded && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
91
+ role: "group",
92
+ children: node.children?.map((child) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TreeNode, {
93
+ node: child,
94
+ depth: depth + 1,
95
+ selected,
96
+ expanded,
97
+ onToggleSelect,
98
+ onToggleExpand
99
+ }, child.id))
100
+ })]
101
+ });
102
+ }
103
+ //#endregion
104
+ exports.CheckboxTree = CheckboxTree;
105
+
106
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["React","cn","ChevronRight","Checkbox"],"sources":["../../../src/primitives/CheckboxTree/CheckboxTree.tsx"],"sourcesContent":["\"use client\";\n\nimport { ChevronRight } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Checkbox } from \"@/primitives/Checkbox\";\nimport { cn } from \"@/utils\";\n\n// CheckboxTree — a hierarchical checkbox list with expand/collapse and\n// tri-state (checked / unchecked / indeterminate) propagation: toggling a branch\n// toggles all its descendants, and a branch reflects its children\n// (checked when all are, indeterminate when some are). Controlled via `value`\n// (the set of selected node ids, branches included when fully selected).\n\n/** A single node in the tree: a stable id, a label, and optional children. */\nexport interface CheckboxTreeNode {\n /** Stable unique identifier used for selection and expansion tracking. */\n id: string;\n /** Content rendered next to the checkbox. */\n label: React.ReactNode;\n /** Nested child nodes; presence makes this node a collapsible branch. */\n children?: CheckboxTreeNode[];\n}\n\ntype NodeState = \"checked\" | \"unchecked\" | \"indeterminate\";\n\n/** All ids in a node's subtree (the node itself + every descendant). */\nfunction collectIds(node: CheckboxTreeNode): string[] {\n if (!node.children?.length) return [node.id];\n return [node.id, ...node.children.flatMap(collectIds)];\n}\n\n/** A leaf is checked iff selected; a branch derives its state from its children. */\nfunction getNodeState(node: CheckboxTreeNode, selected: Set<string>): NodeState {\n if (!node.children?.length) return selected.has(node.id) ? \"checked\" : \"unchecked\";\n const states = node.children.map((child) => getNodeState(child, selected));\n if (states.every((s) => s === \"checked\")) return \"checked\";\n if (states.every((s) => s === \"unchecked\")) return \"unchecked\";\n return \"indeterminate\";\n}\n\ninterface CheckboxTreeProps extends Omit<React.ComponentProps<\"div\">, \"onChange\"> {\n /** The hierarchical node data to render. */\n nodes: CheckboxTreeNode[];\n /** Selected node ids (controlled). Includes branch ids when fully selected. */\n value: string[];\n /** Called with the next selected ids whenever a node (and its subtree) is toggled. */\n onValueChange?: (value: string[]) => void;\n /** Node ids expanded on first render. */\n defaultExpandedIds?: string[];\n}\n\n/**\n * A hierarchical checkbox list with expand/collapse and tri-state\n * (checked / unchecked / indeterminate) propagation across each subtree.\n */\nfunction CheckboxTree({\n nodes,\n value,\n onValueChange,\n defaultExpandedIds,\n className,\n ...props\n}: CheckboxTreeProps) {\n const [expanded, setExpanded] = React.useState<Set<string>>(\n () => new Set(defaultExpandedIds ?? []),\n );\n const selected = React.useMemo(() => new Set(value), [value]);\n\n const toggleExpand = (id: string) =>\n setExpanded((prev) => {\n const next = new Set(prev);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n\n const toggleSelect = (node: CheckboxTreeNode) => {\n const ids = collectIds(node);\n const allSelected = ids.every((id) => selected.has(id));\n const next = new Set(selected);\n for (const id of ids) {\n if (allSelected) next.delete(id);\n else next.add(id);\n }\n onValueChange?.([...next]);\n };\n\n return (\n <div\n role=\"tree\"\n data-slot=\"checkbox-tree\"\n className={cn(\"flex flex-col gap-1\", className)}\n {...props}\n >\n {nodes.map((node) => (\n <TreeNode\n key={node.id}\n node={node}\n depth={0}\n selected={selected}\n expanded={expanded}\n onToggleSelect={toggleSelect}\n onToggleExpand={toggleExpand}\n />\n ))}\n </div>\n );\n}\n\ninterface TreeNodeProps {\n /** The node rendered by this row. */\n node: CheckboxTreeNode;\n /** Nesting depth, used for indentation and heading emphasis. */\n depth: number;\n /** Set of currently selected node ids. */\n selected: Set<string>;\n /** Set of currently expanded node ids. */\n expanded: Set<string>;\n /** Toggles selection of the node and its subtree. */\n onToggleSelect: (node: CheckboxTreeNode) => void;\n /** Toggles the expanded/collapsed state of a branch. */\n onToggleExpand: (id: string) => void;\n}\n\n/** Renders a single tree row plus, when expanded, its child rows recursively. */\nfunction TreeNode({\n node,\n depth,\n selected,\n expanded,\n onToggleSelect,\n onToggleExpand,\n}: TreeNodeProps) {\n const hasChildren = !!node.children?.length;\n const isExpanded = expanded.has(node.id);\n const state = getNodeState(node, selected);\n const checkboxId = React.useId();\n\n return (\n <div\n role=\"treeitem\"\n aria-expanded={hasChildren ? isExpanded : undefined}\n aria-checked={state === \"indeterminate\" ? \"mixed\" : state === \"checked\"}\n >\n <div className=\"flex items-center gap-1\" style={{ paddingLeft: `${depth * 1.5}rem` }}>\n {hasChildren ? (\n <button\n type=\"button\"\n onClick={() => onToggleExpand(node.id)}\n aria-label={isExpanded ? \"Collapse\" : \"Expand\"}\n className=\"flex size-5 shrink-0 items-center justify-center text-muted-foreground hover:text-foreground\"\n >\n <ChevronRight\n className={cn(\"size-4 transition-transform\", isExpanded && \"rotate-90\")}\n />\n </button>\n ) : (\n <span className=\"w-5 shrink-0\" />\n )}\n <label\n htmlFor={checkboxId}\n className=\"flex flex-1 cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 transition-colors hover:bg-accent/40\"\n >\n <Checkbox\n id={checkboxId}\n checked={state === \"indeterminate\" ? \"indeterminate\" : state === \"checked\"}\n onCheckedChange={() => onToggleSelect(node)}\n />\n <span className={cn(\"text-sm\", depth === 0 && \"font-medium\")}>{node.label}</span>\n </label>\n </div>\n {hasChildren && isExpanded && (\n <div role=\"group\">\n {node.children?.map((child) => (\n <TreeNode\n key={child.id}\n node={child}\n depth={depth + 1}\n selected={selected}\n expanded={expanded}\n onToggleSelect={onToggleSelect}\n onToggleExpand={onToggleExpand}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport { CheckboxTree };\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { n as CheckboxTreeNode, t as CheckboxTree } from "../../index16.cjs";
2
+ export { CheckboxTree, CheckboxTreeNode };
@@ -0,0 +1,2 @@
1
+ import { n as CheckboxTreeNode, t as CheckboxTree } from "../../index16.js";
2
+ export { CheckboxTree, CheckboxTreeNode };