@psnext/design-system 1.5.1 → 2.1.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 (646) hide show
  1. package/DESIGN.md +639 -0
  2. package/README.md +39 -2
  3. package/SKILL.md +101 -0
  4. package/bin/install-agent-skill.mjs +54 -0
  5. package/dist/Header.cjs +32 -29
  6. package/dist/Header.cjs.map +1 -1
  7. package/dist/Header.js +32 -29
  8. package/dist/Header.js.map +1 -1
  9. package/dist/Icon.cjs +19 -19
  10. package/dist/Icon.cjs.map +1 -1
  11. package/dist/Icon.js +19 -19
  12. package/dist/Icon.js.map +1 -1
  13. package/dist/Logo.cjs +4 -14
  14. package/dist/Logo.cjs.map +1 -1
  15. package/dist/Logo.js +4 -14
  16. package/dist/Logo.js.map +1 -1
  17. package/dist/Sidebar.cjs +26 -20
  18. package/dist/Sidebar.cjs.map +1 -1
  19. package/dist/Sidebar.js +21 -21
  20. package/dist/Sidebar.js.map +1 -1
  21. package/dist/cn.cjs +14 -1
  22. package/dist/cn.cjs.map +1 -1
  23. package/dist/cn.js +14 -1
  24. package/dist/cn.js.map +1 -1
  25. package/dist/index.cjs +13 -10
  26. package/dist/index.d.cts +5 -5
  27. package/dist/index.d.cts.map +1 -1
  28. package/dist/index.d.ts +5 -5
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +5 -4
  31. package/dist/index10.d.cts +4 -4
  32. package/dist/index10.d.cts.map +1 -1
  33. package/dist/index10.d.ts +7 -7
  34. package/dist/index11.d.cts +3 -3
  35. package/dist/index11.d.cts.map +1 -1
  36. package/dist/index11.d.ts +3 -3
  37. package/dist/index11.d.ts.map +1 -1
  38. package/dist/index12.d.cts +18 -17
  39. package/dist/index12.d.cts.map +1 -1
  40. package/dist/index12.d.ts +18 -17
  41. package/dist/index12.d.ts.map +1 -1
  42. package/dist/index13.d.cts +6 -6
  43. package/dist/index13.d.cts.map +1 -1
  44. package/dist/index13.d.ts +6 -6
  45. package/dist/index14.d.cts +5 -5
  46. package/dist/index14.d.cts.map +1 -1
  47. package/dist/index14.d.ts +5 -5
  48. package/dist/index14.d.ts.map +1 -1
  49. package/dist/index15.d.cts +3 -3
  50. package/dist/index15.d.cts.map +1 -1
  51. package/dist/index15.d.ts +3 -3
  52. package/dist/index15.d.ts.map +1 -1
  53. package/dist/index16.d.cts +2 -2
  54. package/dist/index16.d.cts.map +1 -1
  55. package/dist/index16.d.ts +2 -2
  56. package/dist/index17.d.cts +4 -4
  57. package/dist/index17.d.cts.map +1 -1
  58. package/dist/index17.d.ts +4 -4
  59. package/dist/index17.d.ts.map +1 -1
  60. package/dist/index18.d.cts +11 -11
  61. package/dist/index18.d.cts.map +1 -1
  62. package/dist/index18.d.ts +11 -11
  63. package/dist/index19.d.cts +10 -10
  64. package/dist/index19.d.cts.map +1 -1
  65. package/dist/index19.d.ts +10 -10
  66. package/dist/index19.d.ts.map +1 -1
  67. package/dist/index2.d.cts +8 -8
  68. package/dist/index2.d.cts.map +1 -1
  69. package/dist/index2.d.ts +8 -8
  70. package/dist/index2.d.ts.map +1 -1
  71. package/dist/index20.d.cts +16 -16
  72. package/dist/index20.d.cts.map +1 -1
  73. package/dist/index20.d.ts +16 -16
  74. package/dist/index20.d.ts.map +1 -1
  75. package/dist/index21.d.cts +4 -4
  76. package/dist/index21.d.cts.map +1 -1
  77. package/dist/index21.d.ts +4 -4
  78. package/dist/index22.d.cts +11 -11
  79. package/dist/index22.d.cts.map +1 -1
  80. package/dist/index22.d.ts +11 -11
  81. package/dist/index22.d.ts.map +1 -1
  82. package/dist/index23.d.cts +16 -16
  83. package/dist/index23.d.cts.map +1 -1
  84. package/dist/index23.d.ts +16 -16
  85. package/dist/index23.d.ts.map +1 -1
  86. package/dist/index24.d.cts +10 -10
  87. package/dist/index24.d.cts.map +1 -1
  88. package/dist/index24.d.ts +10 -10
  89. package/dist/index25.d.cts +2 -2
  90. package/dist/index25.d.ts +2 -2
  91. package/dist/index26.d.cts +13 -13
  92. package/dist/index26.d.ts +14 -14
  93. package/dist/index26.d.ts.map +1 -1
  94. package/dist/index27.d.cts +7 -7
  95. package/dist/index27.d.cts.map +1 -1
  96. package/dist/index27.d.ts +7 -7
  97. package/dist/index27.d.ts.map +1 -1
  98. package/dist/index28.d.cts +5 -5
  99. package/dist/index28.d.ts +5 -5
  100. package/dist/index28.d.ts.map +1 -1
  101. package/dist/index29.d.cts +4 -4
  102. package/dist/index29.d.ts +4 -4
  103. package/dist/index29.d.ts.map +1 -1
  104. package/dist/index3.d.cts +13 -13
  105. package/dist/index3.d.cts.map +1 -1
  106. package/dist/index3.d.ts +13 -13
  107. package/dist/index3.d.ts.map +1 -1
  108. package/dist/index30.d.cts +5 -5
  109. package/dist/index30.d.ts +5 -5
  110. package/dist/index31.d.cts +5 -5
  111. package/dist/index31.d.cts.map +1 -1
  112. package/dist/index31.d.ts +5 -5
  113. package/dist/index31.d.ts.map +1 -1
  114. package/dist/index32.d.cts +8 -5
  115. package/dist/index32.d.cts.map +1 -1
  116. package/dist/index32.d.ts +9 -6
  117. package/dist/index32.d.ts.map +1 -1
  118. package/dist/index33.d.cts +14 -10
  119. package/dist/index33.d.cts.map +1 -1
  120. package/dist/index33.d.ts +14 -10
  121. package/dist/index33.d.ts.map +1 -1
  122. package/dist/index34.d.cts +5 -5
  123. package/dist/index34.d.ts +5 -5
  124. package/dist/index35.d.cts +14 -14
  125. package/dist/index35.d.ts +16 -16
  126. package/dist/index35.d.ts.map +1 -1
  127. package/dist/index36.d.cts +3 -3
  128. package/dist/index36.d.cts.map +1 -1
  129. package/dist/index36.d.ts +3 -3
  130. package/dist/index36.d.ts.map +1 -1
  131. package/dist/index37.d.cts +5 -5
  132. package/dist/index37.d.cts.map +1 -1
  133. package/dist/index37.d.ts +4 -4
  134. package/dist/index37.d.ts.map +1 -1
  135. package/dist/index38.d.cts +2 -2
  136. package/dist/index38.d.ts +2 -2
  137. package/dist/index39.d.cts +17 -17
  138. package/dist/index39.d.cts.map +1 -1
  139. package/dist/index39.d.ts +17 -17
  140. package/dist/index39.d.ts.map +1 -1
  141. package/dist/index4.d.cts +2 -2
  142. package/dist/index4.d.cts.map +1 -1
  143. package/dist/index4.d.ts +2 -2
  144. package/dist/index4.d.ts.map +1 -1
  145. package/dist/index40.d.cts +4 -4
  146. package/dist/index40.d.ts +5 -5
  147. package/dist/index40.d.ts.map +1 -1
  148. package/dist/index41.d.cts +11 -11
  149. package/dist/index41.d.cts.map +1 -1
  150. package/dist/index41.d.ts +11 -11
  151. package/dist/index41.d.ts.map +1 -1
  152. package/dist/index42.d.cts +8 -8
  153. package/dist/index42.d.cts.map +1 -1
  154. package/dist/index42.d.ts +8 -8
  155. package/dist/index42.d.ts.map +1 -1
  156. package/dist/index43.d.cts +10 -10
  157. package/dist/index43.d.cts.map +1 -1
  158. package/dist/index43.d.ts +10 -10
  159. package/dist/index43.d.ts.map +1 -1
  160. package/dist/index44.d.cts +1 -48
  161. package/dist/index44.d.ts +1 -48
  162. package/dist/index45.d.cts +42 -22
  163. package/dist/index45.d.cts.map +1 -1
  164. package/dist/index45.d.ts +42 -22
  165. package/dist/index45.d.ts.map +1 -1
  166. package/dist/index46.d.cts +21 -34
  167. package/dist/index46.d.cts.map +1 -1
  168. package/dist/index46.d.ts +21 -34
  169. package/dist/index46.d.ts.map +1 -1
  170. package/dist/index47.d.cts +33 -17
  171. package/dist/index47.d.cts.map +1 -1
  172. package/dist/index47.d.ts +33 -17
  173. package/dist/index47.d.ts.map +1 -1
  174. package/dist/index48.d.cts +18 -14
  175. package/dist/index48.d.cts.map +1 -1
  176. package/dist/index48.d.ts +18 -14
  177. package/dist/index48.d.ts.map +1 -1
  178. package/dist/index49.d.cts +12 -60
  179. package/dist/index49.d.cts.map +1 -1
  180. package/dist/index49.d.ts +12 -60
  181. package/dist/index49.d.ts.map +1 -1
  182. package/dist/index5.d.cts +7 -7
  183. package/dist/index5.d.cts.map +1 -1
  184. package/dist/index5.d.ts +7 -7
  185. package/dist/index5.d.ts.map +1 -1
  186. package/dist/index50.d.cts +55 -49
  187. package/dist/index50.d.cts.map +1 -1
  188. package/dist/index50.d.ts +55 -49
  189. package/dist/index50.d.ts.map +1 -1
  190. package/dist/index51.d.cts +56 -24
  191. package/dist/index51.d.cts.map +1 -1
  192. package/dist/index51.d.ts +56 -24
  193. package/dist/index51.d.ts.map +1 -1
  194. package/dist/index52.d.cts +25 -203
  195. package/dist/index52.d.cts.map +1 -1
  196. package/dist/index52.d.ts +25 -203
  197. package/dist/index52.d.ts.map +1 -1
  198. package/dist/index53.d.cts +198 -15
  199. package/dist/index53.d.cts.map +1 -1
  200. package/dist/index53.d.ts +198 -15
  201. package/dist/index53.d.ts.map +1 -1
  202. package/dist/index54.d.cts +21 -23
  203. package/dist/index54.d.cts.map +1 -1
  204. package/dist/index54.d.ts +21 -23
  205. package/dist/index54.d.ts.map +1 -1
  206. package/dist/index55.d.cts +21 -18
  207. package/dist/index55.d.cts.map +1 -1
  208. package/dist/index55.d.ts +21 -18
  209. package/dist/index55.d.ts.map +1 -1
  210. package/dist/index56.d.cts +21 -8
  211. package/dist/index56.d.cts.map +1 -1
  212. package/dist/index56.d.ts +21 -8
  213. package/dist/index56.d.ts.map +1 -1
  214. package/dist/index57.d.cts +6 -44
  215. package/dist/index57.d.cts.map +1 -1
  216. package/dist/index57.d.ts +6 -44
  217. package/dist/index57.d.ts.map +1 -1
  218. package/dist/index58.d.cts +46 -47
  219. package/dist/index58.d.cts.map +1 -1
  220. package/dist/index58.d.ts +46 -47
  221. package/dist/index58.d.ts.map +1 -1
  222. package/dist/index59.d.cts +47 -59
  223. package/dist/index59.d.cts.map +1 -1
  224. package/dist/index59.d.ts +47 -59
  225. package/dist/index59.d.ts.map +1 -1
  226. package/dist/index6.d.cts +7 -7
  227. package/dist/index6.d.cts.map +1 -1
  228. package/dist/index6.d.ts +7 -7
  229. package/dist/index6.d.ts.map +1 -1
  230. package/dist/index60.d.cts +55 -37
  231. package/dist/index60.d.cts.map +1 -1
  232. package/dist/index60.d.ts +56 -38
  233. package/dist/index60.d.ts.map +1 -1
  234. package/dist/index61.d.cts +38 -14
  235. package/dist/index61.d.cts.map +1 -1
  236. package/dist/index61.d.ts +38 -14
  237. package/dist/index61.d.ts.map +1 -1
  238. package/dist/index62.d.cts +20 -41
  239. package/dist/index62.d.cts.map +1 -1
  240. package/dist/index62.d.ts +20 -41
  241. package/dist/index62.d.ts.map +1 -1
  242. package/dist/index63.d.cts +41 -19
  243. package/dist/index63.d.cts.map +1 -1
  244. package/dist/index63.d.ts +41 -19
  245. package/dist/index63.d.ts.map +1 -1
  246. package/dist/index64.d.cts +14 -39
  247. package/dist/index64.d.cts.map +1 -1
  248. package/dist/index64.d.ts +14 -39
  249. package/dist/index64.d.ts.map +1 -1
  250. package/dist/index65.d.cts +39 -16
  251. package/dist/index65.d.cts.map +1 -1
  252. package/dist/index65.d.ts +39 -16
  253. package/dist/index65.d.ts.map +1 -1
  254. package/dist/index66.d.cts +18 -12
  255. package/dist/index66.d.cts.map +1 -1
  256. package/dist/index66.d.ts +18 -12
  257. package/dist/index66.d.ts.map +1 -1
  258. package/dist/index67.d.cts +12 -30
  259. package/dist/index67.d.cts.map +1 -1
  260. package/dist/index67.d.ts +12 -30
  261. package/dist/index67.d.ts.map +1 -1
  262. package/dist/index68.d.cts +26 -25
  263. package/dist/index68.d.cts.map +1 -1
  264. package/dist/index68.d.ts +28 -27
  265. package/dist/index68.d.ts.map +1 -1
  266. package/dist/index69.d.cts +36 -69
  267. package/dist/index69.d.cts.map +1 -0
  268. package/dist/index69.d.ts +36 -69
  269. package/dist/index69.d.ts.map +1 -0
  270. package/dist/index7.d.cts +8 -8
  271. package/dist/index7.d.cts.map +1 -1
  272. package/dist/index7.d.ts +8 -8
  273. package/dist/index70.d.cts +76 -237
  274. package/dist/index70.d.cts.map +1 -1
  275. package/dist/index70.d.ts +76 -237
  276. package/dist/index70.d.ts.map +1 -1
  277. package/dist/index71.d.cts +249 -0
  278. package/dist/index71.d.cts.map +1 -0
  279. package/dist/index71.d.ts +249 -0
  280. package/dist/index71.d.ts.map +1 -0
  281. package/dist/index8.d.cts +4 -4
  282. package/dist/index8.d.cts.map +1 -1
  283. package/dist/index8.d.ts +4 -4
  284. package/dist/index8.d.ts.map +1 -1
  285. package/dist/index9.d.cts +2 -2
  286. package/dist/index9.d.cts.map +1 -1
  287. package/dist/index9.d.ts +2 -2
  288. package/dist/layouts/Container/index.cjs +4 -4
  289. package/dist/layouts/Container/index.cjs.map +1 -1
  290. package/dist/layouts/Container/index.d.cts +1 -1
  291. package/dist/layouts/Container/index.d.ts +1 -1
  292. package/dist/layouts/Container/index.js +4 -4
  293. package/dist/layouts/Container/index.js.map +1 -1
  294. package/dist/layouts/PageBackground/index.cjs +2 -2
  295. package/dist/layouts/PageBackground/index.cjs.map +1 -1
  296. package/dist/layouts/PageBackground/index.d.cts +1 -1
  297. package/dist/layouts/PageBackground/index.d.ts +1 -1
  298. package/dist/layouts/PageBackground/index.js +2 -2
  299. package/dist/layouts/PageBackground/index.js.map +1 -1
  300. package/dist/layouts/Stack/index.d.cts +1 -1
  301. package/dist/layouts/Stack/index.d.ts +1 -1
  302. package/dist/layouts/TwoColumn/index.d.cts +1 -1
  303. package/dist/layouts/TwoColumn/index.d.ts +1 -1
  304. package/dist/layouts/index.d.cts +4 -4
  305. package/dist/layouts/index.d.ts +4 -4
  306. package/dist/patterns/DataTable/index.cjs +12 -7
  307. package/dist/patterns/DataTable/index.cjs.map +1 -1
  308. package/dist/patterns/DataTable/index.d.cts +3 -3
  309. package/dist/patterns/DataTable/index.d.cts.map +1 -1
  310. package/dist/patterns/DataTable/index.d.ts +3 -3
  311. package/dist/patterns/DataTable/index.d.ts.map +1 -1
  312. package/dist/patterns/DataTable/index.js +12 -7
  313. package/dist/patterns/DataTable/index.js.map +1 -1
  314. package/dist/patterns/Footer/index.cjs +5 -5
  315. package/dist/patterns/Footer/index.cjs.map +1 -1
  316. package/dist/patterns/Footer/index.d.cts +9 -9
  317. package/dist/patterns/Footer/index.d.cts.map +1 -1
  318. package/dist/patterns/Footer/index.d.ts +9 -9
  319. package/dist/patterns/Footer/index.d.ts.map +1 -1
  320. package/dist/patterns/Footer/index.js +5 -5
  321. package/dist/patterns/Footer/index.js.map +1 -1
  322. package/dist/patterns/Header/index.d.cts +1 -1
  323. package/dist/patterns/Header/index.d.ts +1 -1
  324. package/dist/patterns/MediaObject/index.cjs +1 -1
  325. package/dist/patterns/MediaObject/index.cjs.map +1 -1
  326. package/dist/patterns/MediaObject/index.d.cts +13 -13
  327. package/dist/patterns/MediaObject/index.d.cts.map +1 -1
  328. package/dist/patterns/MediaObject/index.d.ts +10 -10
  329. package/dist/patterns/MediaObject/index.js +1 -1
  330. package/dist/patterns/MediaObject/index.js.map +1 -1
  331. package/dist/patterns/NavRail/index.cjs +195 -0
  332. package/dist/patterns/NavRail/index.cjs.map +1 -0
  333. package/dist/patterns/NavRail/index.d.cts +2 -0
  334. package/dist/patterns/NavRail/index.d.ts +2 -0
  335. package/dist/patterns/NavRail/index.js +185 -0
  336. package/dist/patterns/NavRail/index.js.map +1 -0
  337. package/dist/patterns/SectionCard/index.cjs +1 -1
  338. package/dist/patterns/SectionCard/index.cjs.map +1 -1
  339. package/dist/patterns/SectionCard/index.d.cts +2 -2
  340. package/dist/patterns/SectionCard/index.d.cts.map +1 -1
  341. package/dist/patterns/SectionCard/index.d.ts +2 -2
  342. package/dist/patterns/SectionCard/index.d.ts.map +1 -1
  343. package/dist/patterns/SectionCard/index.js +1 -1
  344. package/dist/patterns/SectionCard/index.js.map +1 -1
  345. package/dist/patterns/SectionHeading/index.d.cts +2 -2
  346. package/dist/patterns/SectionHeading/index.d.cts.map +1 -1
  347. package/dist/patterns/SectionHeading/index.d.ts +2 -2
  348. package/dist/patterns/SectionHeading/index.d.ts.map +1 -1
  349. package/dist/patterns/index.cjs +9 -0
  350. package/dist/patterns/index.d.cts +3 -2
  351. package/dist/patterns/index.d.ts +3 -2
  352. package/dist/patterns/index.js +2 -1
  353. package/dist/primitives/Accordion/index.cjs +6 -6
  354. package/dist/primitives/Accordion/index.cjs.map +1 -1
  355. package/dist/primitives/Accordion/index.js +6 -6
  356. package/dist/primitives/Accordion/index.js.map +1 -1
  357. package/dist/primitives/Alert/index.cjs +4 -4
  358. package/dist/primitives/Alert/index.cjs.map +1 -1
  359. package/dist/primitives/Alert/index.js +4 -4
  360. package/dist/primitives/Alert/index.js.map +1 -1
  361. package/dist/primitives/AlertDialog/index.cjs +4 -4
  362. package/dist/primitives/AlertDialog/index.cjs.map +1 -1
  363. package/dist/primitives/AlertDialog/index.js +4 -4
  364. package/dist/primitives/AlertDialog/index.js.map +1 -1
  365. package/dist/primitives/Avatar/index.cjs +5 -5
  366. package/dist/primitives/Avatar/index.cjs.map +1 -1
  367. package/dist/primitives/Avatar/index.js +5 -5
  368. package/dist/primitives/Avatar/index.js.map +1 -1
  369. package/dist/primitives/Badge/index.cjs +11 -10
  370. package/dist/primitives/Badge/index.cjs.map +1 -1
  371. package/dist/primitives/Badge/index.js +11 -10
  372. package/dist/primitives/Badge/index.js.map +1 -1
  373. package/dist/primitives/Breadcrumb/index.cjs +4 -4
  374. package/dist/primitives/Breadcrumb/index.cjs.map +1 -1
  375. package/dist/primitives/Breadcrumb/index.js +4 -4
  376. package/dist/primitives/Breadcrumb/index.js.map +1 -1
  377. package/dist/primitives/Button/index.cjs +20 -13
  378. package/dist/primitives/Button/index.cjs.map +1 -1
  379. package/dist/primitives/Button/index.js +20 -13
  380. package/dist/primitives/Button/index.js.map +1 -1
  381. package/dist/primitives/ButtonGroup/index.cjs +3 -3
  382. package/dist/primitives/ButtonGroup/index.cjs.map +1 -1
  383. package/dist/primitives/ButtonGroup/index.js +3 -3
  384. package/dist/primitives/ButtonGroup/index.js.map +1 -1
  385. package/dist/primitives/Calendar/index.cjs +22 -21
  386. package/dist/primitives/Calendar/index.cjs.map +1 -1
  387. package/dist/primitives/Calendar/index.js +22 -21
  388. package/dist/primitives/Calendar/index.js.map +1 -1
  389. package/dist/primitives/Card/index.cjs +18 -16
  390. package/dist/primitives/Card/index.cjs.map +1 -1
  391. package/dist/primitives/Card/index.js +18 -16
  392. package/dist/primitives/Card/index.js.map +1 -1
  393. package/dist/primitives/Carousel/index.cjs +2 -2
  394. package/dist/primitives/Carousel/index.cjs.map +1 -1
  395. package/dist/primitives/Carousel/index.js +2 -2
  396. package/dist/primitives/Carousel/index.js.map +1 -1
  397. package/dist/primitives/Chart/index.cjs +12 -12
  398. package/dist/primitives/Chart/index.cjs.map +1 -1
  399. package/dist/primitives/Chart/index.js +12 -12
  400. package/dist/primitives/Chart/index.js.map +1 -1
  401. package/dist/primitives/Checkbox/index.cjs +6 -6
  402. package/dist/primitives/Checkbox/index.cjs.map +1 -1
  403. package/dist/primitives/Checkbox/index.js +6 -6
  404. package/dist/primitives/Checkbox/index.js.map +1 -1
  405. package/dist/primitives/CheckboxTree/index.cjs +2 -2
  406. package/dist/primitives/CheckboxTree/index.cjs.map +1 -1
  407. package/dist/primitives/CheckboxTree/index.js +2 -2
  408. package/dist/primitives/CheckboxTree/index.js.map +1 -1
  409. package/dist/primitives/Command/index.cjs +9 -9
  410. package/dist/primitives/Command/index.cjs.map +1 -1
  411. package/dist/primitives/Command/index.js +9 -9
  412. package/dist/primitives/Command/index.js.map +1 -1
  413. package/dist/primitives/ContextMenu/index.cjs +10 -10
  414. package/dist/primitives/ContextMenu/index.cjs.map +1 -1
  415. package/dist/primitives/ContextMenu/index.js +10 -10
  416. package/dist/primitives/ContextMenu/index.js.map +1 -1
  417. package/dist/primitives/Credits/index.cjs +4 -4
  418. package/dist/primitives/Credits/index.cjs.map +1 -1
  419. package/dist/primitives/Credits/index.js +4 -4
  420. package/dist/primitives/Credits/index.js.map +1 -1
  421. package/dist/primitives/Dialog/index.cjs +5 -5
  422. package/dist/primitives/Dialog/index.cjs.map +1 -1
  423. package/dist/primitives/Dialog/index.js +5 -5
  424. package/dist/primitives/Dialog/index.js.map +1 -1
  425. package/dist/primitives/Drawer/index.cjs +5 -5
  426. package/dist/primitives/Drawer/index.cjs.map +1 -1
  427. package/dist/primitives/Drawer/index.js +5 -5
  428. package/dist/primitives/Drawer/index.js.map +1 -1
  429. package/dist/primitives/DropdownMenu/index.cjs +9 -9
  430. package/dist/primitives/DropdownMenu/index.cjs.map +1 -1
  431. package/dist/primitives/DropdownMenu/index.js +9 -9
  432. package/dist/primitives/DropdownMenu/index.js.map +1 -1
  433. package/dist/primitives/Empty/index.cjs +4 -4
  434. package/dist/primitives/Empty/index.cjs.map +1 -1
  435. package/dist/primitives/Empty/index.js +4 -4
  436. package/dist/primitives/Empty/index.js.map +1 -1
  437. package/dist/primitives/Field/index.cjs +5 -5
  438. package/dist/primitives/Field/index.cjs.map +1 -1
  439. package/dist/primitives/Field/index.js +5 -5
  440. package/dist/primitives/Field/index.js.map +1 -1
  441. package/dist/primitives/Form/index.cjs +1 -1
  442. package/dist/primitives/Form/index.cjs.map +1 -1
  443. package/dist/primitives/Form/index.js +1 -1
  444. package/dist/primitives/Form/index.js.map +1 -1
  445. package/dist/primitives/Heading/index.cjs +2 -2
  446. package/dist/primitives/Heading/index.cjs.map +1 -1
  447. package/dist/primitives/Heading/index.js +2 -2
  448. package/dist/primitives/Heading/index.js.map +1 -1
  449. package/dist/primitives/HoverCard/index.cjs +1 -1
  450. package/dist/primitives/HoverCard/index.cjs.map +1 -1
  451. package/dist/primitives/HoverCard/index.js +1 -1
  452. package/dist/primitives/HoverCard/index.js.map +1 -1
  453. package/dist/primitives/InfoBanner/index.cjs +12 -12
  454. package/dist/primitives/InfoBanner/index.cjs.map +1 -1
  455. package/dist/primitives/InfoBanner/index.js +12 -12
  456. package/dist/primitives/InfoBanner/index.js.map +1 -1
  457. package/dist/primitives/Input/index.cjs +13 -7
  458. package/dist/primitives/Input/index.cjs.map +1 -1
  459. package/dist/primitives/Input/index.js +13 -7
  460. package/dist/primitives/Input/index.js.map +1 -1
  461. package/dist/primitives/InputGroup/index.cjs +7 -7
  462. package/dist/primitives/InputGroup/index.cjs.map +1 -1
  463. package/dist/primitives/InputGroup/index.js +7 -7
  464. package/dist/primitives/InputGroup/index.js.map +1 -1
  465. package/dist/primitives/InputOtp/index.cjs +3 -3
  466. package/dist/primitives/InputOtp/index.cjs.map +1 -1
  467. package/dist/primitives/InputOtp/index.js +3 -3
  468. package/dist/primitives/InputOtp/index.js.map +1 -1
  469. package/dist/primitives/Item/index.cjs +6 -6
  470. package/dist/primitives/Item/index.cjs.map +1 -1
  471. package/dist/primitives/Item/index.js +6 -6
  472. package/dist/primitives/Item/index.js.map +1 -1
  473. package/dist/primitives/Kbd/index.cjs +1 -1
  474. package/dist/primitives/Kbd/index.cjs.map +1 -1
  475. package/dist/primitives/Kbd/index.js +1 -1
  476. package/dist/primitives/Kbd/index.js.map +1 -1
  477. package/dist/primitives/Link/index.cjs +4 -4
  478. package/dist/primitives/Link/index.cjs.map +1 -1
  479. package/dist/primitives/Link/index.js +4 -4
  480. package/dist/primitives/Link/index.js.map +1 -1
  481. package/dist/primitives/Menubar/index.cjs +12 -12
  482. package/dist/primitives/Menubar/index.cjs.map +1 -1
  483. package/dist/primitives/Menubar/index.js +12 -12
  484. package/dist/primitives/Menubar/index.js.map +1 -1
  485. package/dist/primitives/NativeSelect/index.cjs +5 -5
  486. package/dist/primitives/NativeSelect/index.cjs.map +1 -1
  487. package/dist/primitives/NativeSelect/index.js +5 -5
  488. package/dist/primitives/NativeSelect/index.js.map +1 -1
  489. package/dist/primitives/NavRail/index.cjs +9 -194
  490. package/dist/primitives/NavRail/index.d.cts +1 -0
  491. package/dist/primitives/NavRail/index.d.ts +1 -0
  492. package/dist/primitives/NavRail/index.js +1 -184
  493. package/dist/primitives/NavigationMenu/index.cjs +7 -7
  494. package/dist/primitives/NavigationMenu/index.cjs.map +1 -1
  495. package/dist/primitives/NavigationMenu/index.js +7 -7
  496. package/dist/primitives/NavigationMenu/index.js.map +1 -1
  497. package/dist/primitives/Pagination/index.cjs +7 -13
  498. package/dist/primitives/Pagination/index.cjs.map +1 -1
  499. package/dist/primitives/Pagination/index.d.cts +1 -1
  500. package/dist/primitives/Pagination/index.d.ts +1 -1
  501. package/dist/primitives/Pagination/index.js +8 -14
  502. package/dist/primitives/Pagination/index.js.map +1 -1
  503. package/dist/primitives/Popover/index.cjs +4 -4
  504. package/dist/primitives/Popover/index.cjs.map +1 -1
  505. package/dist/primitives/Popover/index.js +4 -4
  506. package/dist/primitives/Popover/index.js.map +1 -1
  507. package/dist/primitives/Progress/index.cjs +16 -16
  508. package/dist/primitives/Progress/index.cjs.map +1 -1
  509. package/dist/primitives/Progress/index.d.cts +1 -1
  510. package/dist/primitives/Progress/index.d.ts +1 -1
  511. package/dist/primitives/Progress/index.js +16 -16
  512. package/dist/primitives/Progress/index.js.map +1 -1
  513. package/dist/primitives/RadioGroup/index.cjs +7 -7
  514. package/dist/primitives/RadioGroup/index.cjs.map +1 -1
  515. package/dist/primitives/RadioGroup/index.d.cts +1 -1
  516. package/dist/primitives/RadioGroup/index.d.ts +1 -1
  517. package/dist/primitives/RadioGroup/index.js +7 -7
  518. package/dist/primitives/RadioGroup/index.js.map +1 -1
  519. package/dist/primitives/Resizable/index.cjs +2 -2
  520. package/dist/primitives/Resizable/index.cjs.map +1 -1
  521. package/dist/primitives/Resizable/index.d.cts +1 -1
  522. package/dist/primitives/Resizable/index.d.ts +1 -1
  523. package/dist/primitives/Resizable/index.js +2 -2
  524. package/dist/primitives/Resizable/index.js.map +1 -1
  525. package/dist/primitives/ScrollArea/index.cjs +2 -2
  526. package/dist/primitives/ScrollArea/index.cjs.map +1 -1
  527. package/dist/primitives/ScrollArea/index.d.cts +1 -1
  528. package/dist/primitives/ScrollArea/index.d.ts +1 -1
  529. package/dist/primitives/ScrollArea/index.js +2 -2
  530. package/dist/primitives/ScrollArea/index.js.map +1 -1
  531. package/dist/primitives/Select/index.cjs +8 -8
  532. package/dist/primitives/Select/index.cjs.map +1 -1
  533. package/dist/primitives/Select/index.d.cts +1 -1
  534. package/dist/primitives/Select/index.d.ts +1 -1
  535. package/dist/primitives/Select/index.js +8 -8
  536. package/dist/primitives/Select/index.js.map +1 -1
  537. package/dist/primitives/Separator/index.cjs +1 -1
  538. package/dist/primitives/Separator/index.cjs.map +1 -1
  539. package/dist/primitives/Separator/index.js +1 -1
  540. package/dist/primitives/Separator/index.js.map +1 -1
  541. package/dist/primitives/Sheet/index.cjs +8 -8
  542. package/dist/primitives/Sheet/index.cjs.map +1 -1
  543. package/dist/primitives/Sheet/index.d.cts +1 -1
  544. package/dist/primitives/Sheet/index.d.ts +1 -1
  545. package/dist/primitives/Sheet/index.js +8 -8
  546. package/dist/primitives/Sheet/index.js.map +1 -1
  547. package/dist/primitives/Sidebar/index.d.cts +1 -1
  548. package/dist/primitives/Sidebar/index.d.ts +1 -1
  549. package/dist/primitives/Skeleton/index.cjs +2 -2
  550. package/dist/primitives/Skeleton/index.cjs.map +1 -1
  551. package/dist/primitives/Skeleton/index.d.cts +1 -1
  552. package/dist/primitives/Skeleton/index.d.ts +1 -1
  553. package/dist/primitives/Skeleton/index.js +2 -2
  554. package/dist/primitives/Skeleton/index.js.map +1 -1
  555. package/dist/primitives/Slider/index.cjs +3 -3
  556. package/dist/primitives/Slider/index.cjs.map +1 -1
  557. package/dist/primitives/Slider/index.d.cts +1 -1
  558. package/dist/primitives/Slider/index.d.ts +1 -1
  559. package/dist/primitives/Slider/index.js +3 -3
  560. package/dist/primitives/Slider/index.js.map +1 -1
  561. package/dist/primitives/Sonner/index.cjs +13 -6
  562. package/dist/primitives/Sonner/index.cjs.map +1 -1
  563. package/dist/primitives/Sonner/index.d.cts +1 -1
  564. package/dist/primitives/Sonner/index.d.ts +1 -1
  565. package/dist/primitives/Sonner/index.js +13 -6
  566. package/dist/primitives/Sonner/index.js.map +1 -1
  567. package/dist/primitives/Spinner/index.d.cts +1 -1
  568. package/dist/primitives/Spinner/index.d.ts +1 -1
  569. package/dist/primitives/Switch/index.cjs +7 -7
  570. package/dist/primitives/Switch/index.cjs.map +1 -1
  571. package/dist/primitives/Switch/index.d.cts +1 -1
  572. package/dist/primitives/Switch/index.d.ts +1 -1
  573. package/dist/primitives/Switch/index.js +7 -7
  574. package/dist/primitives/Switch/index.js.map +1 -1
  575. package/dist/primitives/Table/index.cjs +7 -7
  576. package/dist/primitives/Table/index.cjs.map +1 -1
  577. package/dist/primitives/Table/index.d.cts +1 -1
  578. package/dist/primitives/Table/index.d.ts +1 -1
  579. package/dist/primitives/Table/index.js +7 -7
  580. package/dist/primitives/Table/index.js.map +1 -1
  581. package/dist/primitives/Tabs/index.cjs +21 -21
  582. package/dist/primitives/Tabs/index.cjs.map +1 -1
  583. package/dist/primitives/Tabs/index.d.cts +1 -1
  584. package/dist/primitives/Tabs/index.d.ts +1 -1
  585. package/dist/primitives/Tabs/index.js +21 -21
  586. package/dist/primitives/Tabs/index.js.map +1 -1
  587. package/dist/primitives/Text/index.cjs +5 -5
  588. package/dist/primitives/Text/index.cjs.map +1 -1
  589. package/dist/primitives/Text/index.d.cts +1 -1
  590. package/dist/primitives/Text/index.d.ts +1 -1
  591. package/dist/primitives/Text/index.js +5 -5
  592. package/dist/primitives/Text/index.js.map +1 -1
  593. package/dist/primitives/Textarea/index.cjs +20 -8
  594. package/dist/primitives/Textarea/index.cjs.map +1 -1
  595. package/dist/primitives/Textarea/index.d.cts +1 -1
  596. package/dist/primitives/Textarea/index.d.ts +1 -1
  597. package/dist/primitives/Textarea/index.js +20 -8
  598. package/dist/primitives/Textarea/index.js.map +1 -1
  599. package/dist/primitives/ThemeProvider/index.d.cts +1 -1
  600. package/dist/primitives/ThemeProvider/index.d.ts +1 -1
  601. package/dist/primitives/Toggle/index.cjs +11 -10
  602. package/dist/primitives/Toggle/index.cjs.map +1 -1
  603. package/dist/primitives/Toggle/index.d.cts +1 -1
  604. package/dist/primitives/Toggle/index.d.ts +1 -1
  605. package/dist/primitives/Toggle/index.js +11 -10
  606. package/dist/primitives/Toggle/index.js.map +1 -1
  607. package/dist/primitives/ToggleGroup/index.cjs +2 -2
  608. package/dist/primitives/ToggleGroup/index.cjs.map +1 -1
  609. package/dist/primitives/ToggleGroup/index.d.cts +1 -1
  610. package/dist/primitives/ToggleGroup/index.d.ts +1 -1
  611. package/dist/primitives/ToggleGroup/index.js +2 -2
  612. package/dist/primitives/ToggleGroup/index.js.map +1 -1
  613. package/dist/primitives/Tooltip/index.cjs +2 -2
  614. package/dist/primitives/Tooltip/index.cjs.map +1 -1
  615. package/dist/primitives/Tooltip/index.d.cts +1 -1
  616. package/dist/primitives/Tooltip/index.d.ts +1 -1
  617. package/dist/primitives/Tooltip/index.js +2 -2
  618. package/dist/primitives/Tooltip/index.js.map +1 -1
  619. package/dist/primitives/index.cjs +10 -10
  620. package/dist/primitives/index.d.cts +21 -21
  621. package/dist/primitives/index.d.ts +21 -21
  622. package/dist/primitives/index.js +2 -2
  623. package/dist/styles/base.css +23 -4
  624. package/dist/styles/brand-scopes.css +49 -0
  625. package/dist/styles/glass.css +13 -8
  626. package/dist/styles/index.css +8 -9
  627. package/dist/styles/theme.css +141 -90
  628. package/dist/styles/tokens/border-radius.css +8 -8
  629. package/dist/styles/tokens/mode-dark.css +71 -94
  630. package/dist/styles/tokens/mode-light.css +71 -94
  631. package/dist/styles/tokens/shadows.css +4 -7
  632. package/dist/styles/tokens/spacing.css +17 -37
  633. package/dist/styles/tokens/theme-bodhi.css +6 -28
  634. package/dist/styles/tokens/theme-slingshot.css +7 -28
  635. package/dist/styles/tokens/theme-sustain.css +6 -28
  636. package/dist/styles/typography.css +9 -9
  637. package/package.json +8 -2
  638. package/dist/index44.d.cts.map +0 -1
  639. package/dist/index44.d.ts.map +0 -1
  640. package/dist/primitives/NavRail/index.cjs.map +0 -1
  641. package/dist/primitives/NavRail/index.js.map +0 -1
  642. package/dist/styles/semantic.css +0 -178
  643. package/dist/styles/tokens/alpha.css +0 -39
  644. package/dist/styles/tokens/chart-colors-dark.css +0 -18
  645. package/dist/styles/tokens/chart-colors-light.css +0 -18
  646. package/dist/styles/tokens/colors.css +0 -251
@@ -5,26 +5,33 @@ import { Slot } from "radix-ui";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  import { cva } from "class-variance-authority";
7
7
  //#region src/primitives/Button/Button.tsx
8
- const buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium cursor-pointer transition-[background-color,color,border-color,box-shadow,opacity,transform] duration-150 ease-out active:scale-[0.97] disabled:pointer-events-none disabled:opacity-50 disabled:active:scale-100 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-ring-error aria-invalid:border-destructive", {
8
+ const buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap font-heading font-medium cursor-pointer transition-[background-color,color,border-color,box-shadow,opacity,transform] duration-150 ease-out active:scale-[0.97] disabled:pointer-events-none disabled:opacity-50 disabled:active:scale-100 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-focus focus-visible:ring-3 aria-invalid:ring-focus-error aria-invalid:border-danger-border", {
9
9
  variants: {
10
10
  variant: {
11
- default: "bg-primary text-primary-foreground hover:bg-primary/90",
12
- destructive: "bg-destructive-alpha text-error-bold-foreground hover:bg-destructive-alpha/80 focus-visible:ring-ring-error",
13
- outline: "border border-input bg-background text-foreground hover:bg-accent hover:text-accent-foreground",
14
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
15
- ghost: "hover:bg-accent hover:text-accent-foreground",
16
- link: "text-foreground underline-offset-4 hover:underline"
11
+ default: "bg-primary-invert-bg text-primary-invert-txt hover:bg-primary-invert-hover-bg",
12
+ destructive: "bg-danger-bg text-danger-txt hover:bg-danger-bg/80 focus-visible:ring-focus-error",
13
+ outline: "border border-secondary-border bg-outline-bg text-primary-txt hover:bg-outline-hover-bg focus-visible:border-primary-invert-border",
14
+ secondary: "bg-primary-bg text-primary-txt hover:bg-secondary-hover-bg",
15
+ ghost: "bg-ghost-bg text-primary-txt hover:bg-ghost-hover-bg",
16
+ link: "text-primary-txt underline-offset-4 hover:underline",
17
+ ai: "ai-border bg-primary-bg text-brand-700 hover:[--ai-surface:var(--secondary-hover-bg)]",
18
+ "destructive-ghost": "bg-ghost-bg text-danger-txt hover:bg-danger-bg focus-visible:ring-focus-error"
17
19
  },
18
20
  size: {
19
- xs: "h-7 gap-1 px-2.5 text-xs has-[>svg]:px-2",
20
- sm: "h-8 gap-1.5 px-3 has-[>svg]:px-2.5",
21
- default: "h-9 px-4 py-2 has-[>svg]:px-3",
22
- lg: "h-10 px-6 has-[>svg]:px-4",
23
- icon: "size-9"
21
+ xs: "h-7.5 py-0.75 px-4 text-xs leading-6",
22
+ sm: "h-9 py-1.5 px-4 text-sm leading-6",
23
+ default: "h-10 py-2 px-4 text-sm leading-6",
24
+ lg: "h-11 py-2.5 px-4 text-sm leading-6",
25
+ xl: "h-12 py-3 px-4 text-base leading-6",
26
+ icon: "size-9",
27
+ "icon-xs": "size-6",
28
+ "icon-sm": "size-8",
29
+ "icon-lg": "size-10",
30
+ "icon-xl": "size-12"
24
31
  },
25
32
  shape: {
26
33
  default: "rounded-full",
27
- square: "rounded-md"
34
+ square: "rounded-6"
28
35
  }
29
36
  },
30
37
  defaultVariants: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/primitives/Button/Button.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\nimport { type ComponentProps, forwardRef } from \"react\";\n\nimport { Spinner } from \"@/primitives/Spinner\";\nimport { cn } from \"@/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium cursor-pointer transition-[background-color,color,border-color,box-shadow,opacity,transform] duration-150 ease-out active:scale-[0.97] disabled:pointer-events-none disabled:opacity-50 disabled:active:scale-100 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-ring-error aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive-alpha text-error-bold-foreground hover:bg-destructive-alpha/80 focus-visible:ring-ring-error\",\n outline:\n \"border border-input bg-background text-foreground hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-foreground underline-offset-4 hover:underline\",\n },\n size: {\n xs: \"h-7 gap-1 px-2.5 text-xs has-[>svg]:px-2\",\n sm: \"h-8 gap-1.5 px-3 has-[>svg]:px-2.5\",\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n lg: \"h-10 px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n // Default is a pill (Figma); `square` gives the standard rounded-md corner.\n shape: {\n default: \"rounded-full\",\n square: \"rounded-md\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n shape: \"default\",\n },\n },\n);\n\ntype ButtonProps = ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n /** Render as the child element (Radix `Slot`) instead of a native `<button>`. */\n asChild?: boolean;\n /** Show a spinner and disable the button while an action is in flight. */\n loading?: boolean;\n };\n\n/**\n * Clickable button supporting visual variants, sizes, shapes, async loading, and\n * `asChild` composition. Forwards its ref so it can be used as a Radix trigger\n * (`asChild`) for floating overlays (Popover, Tooltip, DropdownMenu, …).\n */\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n className,\n variant,\n size,\n shape,\n asChild = false,\n loading = false,\n disabled,\n children,\n ...props\n },\n ref,\n) {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n <Comp\n ref={ref}\n data-slot=\"button\"\n data-loading={loading || undefined}\n className={cn(buttonVariants({ variant, size, shape, className }))}\n disabled={disabled || loading}\n {...props}\n >\n {/* asChild expects a single child, so only plain buttons get the spinner. */}\n {asChild ? (\n children\n ) : (\n <>\n {loading ? <Spinner /> : null}\n {children}\n </>\n )}\n </Comp>\n );\n});\n\nexport { Button, buttonVariants, type ButtonProps };\n"],"mappings":";;;;;;;AAOA,MAAM,iBAAiB,IACrB,4hBACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,aACE;GACF,SACE;GACF,WAAW;GACX,OAAO;GACP,MAAM;EACR;EACA,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,MAAM;EACR;EAEA,OAAO;GACL,SAAS;GACT,QAAQ;EACV;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;EACN,OAAO;CACT;AACF,CACF;;;;;;AAeA,MAAM,SAAS,WAA2C,SAAS,OACjE,EACE,WACA,SACA,MACA,OACA,UAAU,OACV,UAAU,OACV,UACA,UACA,GAAG,SAEL,KACA;CAGA,OACE,oBAHW,UAAU,KAAK,OAAO,UAGjC;EACO;EACL,aAAU;EACV,gBAAc,WAAW,KAAA;EACzB,WAAW,GAAG,eAAe;GAAE;GAAS;GAAM;GAAO;EAAU,CAAC,CAAC;EACjE,UAAU,YAAY;EACtB,GAAI;YAGH,UACC,WAEA,qBAAA,UAAA,EAAA,UAAA,CACG,UAAU,oBAAC,SAAD,CAAU,CAAA,IAAI,MACxB,QACD,EAAA,CAAA;CAEA,CAAA;AAEV,CAAC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/primitives/Button/Button.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\nimport { type ComponentProps, forwardRef } from \"react\";\n\nimport { Spinner } from \"@/primitives/Spinner\";\nimport { cn } from \"@/utils\";\n\n/* Figma: PS AI Helix – Core → Button (node 9:1071). Sizes are line-height (24px)\n plus vertical padding; the 3/6/10px paddings are Figma's \"hacks to fit scale\"\n values with no spacing token, hence the arbitrary values. */\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap font-heading font-medium cursor-pointer transition-[background-color,color,border-color,box-shadow,opacity,transform] duration-150 ease-out active:scale-[0.97] disabled:pointer-events-none disabled:opacity-50 disabled:active:scale-100 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-focus focus-visible:ring-3 aria-invalid:ring-focus-error aria-invalid:border-danger-border\",\n {\n variants: {\n variant: {\n default: \"bg-primary-invert-bg text-primary-invert-txt hover:bg-primary-invert-hover-bg\",\n destructive:\n \"bg-danger-bg text-danger-txt hover:bg-danger-bg/80 focus-visible:ring-focus-error\",\n outline:\n \"border border-secondary-border bg-outline-bg text-primary-txt hover:bg-outline-hover-bg focus-visible:border-primary-invert-border\",\n secondary: \"bg-primary-bg text-primary-txt hover:bg-secondary-hover-bg\",\n ghost: \"bg-ghost-bg text-primary-txt hover:bg-ghost-hover-bg\",\n link: \"text-primary-txt underline-offset-4 hover:underline\",\n ai: \"ai-border bg-primary-bg text-brand-700 hover:[--ai-surface:var(--secondary-hover-bg)]\",\n // Icon Button page (274:37817): destructive icon buttons are ghost-red —\n // transparent at rest, danger tint on hover, danger icon/label.\n \"destructive-ghost\":\n \"bg-ghost-bg text-danger-txt hover:bg-danger-bg focus-visible:ring-focus-error\",\n },\n size: {\n xs: \"h-7.5 py-0.75 px-4 text-xs leading-6\",\n sm: \"h-9 py-1.5 px-4 text-sm leading-6\",\n default: \"h-10 py-2 px-4 text-sm leading-6\",\n lg: \"h-11 py-2.5 px-4 text-sm leading-6\",\n xl: \"h-12 py-3 px-4 text-base leading-6\",\n // Icon Button sizes (Figma): Mini 24 / Small 32 / Default 36 / Large 40 / XL 48.\n icon: \"size-9\",\n \"icon-xs\": \"size-6\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n \"icon-xl\": \"size-12\",\n },\n // Default is a pill (Figma); `square` gives the standard 6px corner.\n shape: {\n default: \"rounded-full\",\n square: \"rounded-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n shape: \"default\",\n },\n },\n);\n\ntype ButtonProps = ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n /** Render as the child element (Radix `Slot`) instead of a native `<button>`. */\n asChild?: boolean;\n /** Show a spinner and disable the button while an action is in flight. */\n loading?: boolean;\n };\n\n/**\n * Clickable button supporting visual variants, sizes, shapes, async loading, and\n * `asChild` composition. Forwards its ref so it can be used as a Radix trigger\n * (`asChild`) for floating overlays (Popover, Tooltip, DropdownMenu, …).\n */\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n className,\n variant,\n size,\n shape,\n asChild = false,\n loading = false,\n disabled,\n children,\n ...props\n },\n ref,\n) {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n <Comp\n ref={ref}\n data-slot=\"button\"\n data-loading={loading || undefined}\n className={cn(buttonVariants({ variant, size, shape, className }))}\n disabled={disabled || loading}\n {...props}\n >\n {/* asChild expects a single child, so only plain buttons get the spinner. */}\n {asChild ? (\n children\n ) : (\n <>\n {loading ? <Spinner /> : null}\n {children}\n </>\n )}\n </Comp>\n );\n});\n\nexport { Button, buttonVariants, type ButtonProps };\n"],"mappings":";;;;;;;AAUA,MAAM,iBAAiB,IACrB,ogBACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,aACE;GACF,SACE;GACF,WAAW;GACX,OAAO;GACP,MAAM;GACN,IAAI;GAGJ,qBACE;EACJ;EACA,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GAEJ,MAAM;GACN,WAAW;GACX,WAAW;GACX,WAAW;GACX,WAAW;EACb;EAEA,OAAO;GACL,SAAS;GACT,QAAQ;EACV;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;EACN,OAAO;CACT;AACF,CACF;;;;;;AAeA,MAAM,SAAS,WAA2C,SAAS,OACjE,EACE,WACA,SACA,MACA,OACA,UAAU,OACV,UAAU,OACV,UACA,UACA,GAAG,SAEL,KACA;CAGA,OACE,oBAHW,UAAU,KAAK,OAAO,UAGjC;EACO;EACL,aAAU;EACV,gBAAc,WAAW,KAAA;EACzB,WAAW,GAAG,eAAe;GAAE;GAAS;GAAM;GAAO;EAAU,CAAC,CAAC;EACjE,UAAU,YAAY;EACtB,GAAI;YAGH,UACC,WAEA,qBAAA,UAAA,EAAA,UAAA,CACG,UAAU,oBAAC,SAAD,CAAU,CAAA,IAAI,MACxB,QACD,EAAA,CAAA;CAEA,CAAA;AAEV,CAAC"}
@@ -4,7 +4,7 @@ const require_primitives_Separator_index = require("../Separator/index.cjs");
4
4
  let radix_ui = require("radix-ui");
5
5
  let react_jsx_runtime = require("react/jsx-runtime");
6
6
  //#region src/primitives/ButtonGroup/ButtonGroup.tsx
7
- const buttonGroupVariants = (0, require("class-variance-authority").cva)("flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
7
+ const buttonGroupVariants = (0, require("class-variance-authority").cva)("flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-12 [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
8
8
  variants: { orientation: {
9
9
  horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
10
10
  vertical: "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none"
@@ -24,7 +24,7 @@ function ButtonGroup({ className, orientation, ...props }) {
24
24
  /** A non-interactive label/affix segment styled to sit inline with the grouped buttons. */
25
25
  function ButtonGroupText({ className, asChild = false, ...props }) {
26
26
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(asChild ? radix_ui.Slot.Root : "div", {
27
- className: require_cn.cn("flex items-center gap-2 rounded-lg border bg-muted px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
27
+ className: require_cn.cn("flex items-center gap-2 rounded-8 border bg-muted-bg px-4 text-sm font-medium shadow-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
28
28
  ...props
29
29
  });
30
30
  }
@@ -33,7 +33,7 @@ function ButtonGroupSeparator({ className, orientation = "vertical", ...props })
33
33
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_primitives_Separator_index.Separator, {
34
34
  "data-slot": "button-group-separator",
35
35
  orientation,
36
- className: require_cn.cn("relative m-0! self-stretch bg-border data-[orientation=vertical]:h-auto", className),
36
+ className: require_cn.cn("relative m-0! self-stretch bg-primary-border data-[orientation=vertical]:h-auto", className),
37
37
  ...props
38
38
  });
39
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["cn","Slot","Separator"],"sources":["../../../src/primitives/ButtonGroup/ButtonGroup.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { Separator } from \"@/primitives/Separator\";\nimport { cn } from \"@/utils\";\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\n/** Props for the {@link ButtonGroup} container. */\ntype ButtonGroupProps = React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>;\n\n/** Groups related buttons into a single attached unit with merged borders and shared corners. */\nfunction ButtonGroup({\n className,\n /** Lays the group out left-to-right (`horizontal`, default) or stacked (`vertical`). */\n orientation,\n ...props\n}: ButtonGroupProps) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\n/** A non-interactive label/affix segment styled to sit inline with the grouped buttons. */\nfunction ButtonGroupText({\n className,\n /** Renders into the child element via Radix `Slot` instead of a wrapping `div`. */\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Renders into the child element via Radix `Slot` instead of a wrapping `div`. */\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n <Comp\n className={cn(\n \"flex items-center gap-2 rounded-lg border bg-muted px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** A divider between segments inside a {@link ButtonGroup}, defaulting to a vertical rule. */\nfunction ButtonGroupSeparator({\n className,\n /** Divider direction; defaults to `vertical` to split horizontally-laid buttons. */\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"relative m-0! self-stretch bg-border data-[orientation=vertical]:h-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };\n"],"mappings":";;;;;;AAMA,MAAM,uBAAA,qCAAA,EAAA,KACJ,oSACA;CACE,UAAU,EACR,aAAa;EACX,YACE;EACF,UACE;CACJ,EACF;CACA,iBAAiB,EACf,aAAa,aACf;AACF,CACF;;AAMA,SAAS,YAAY,EACnB,WAEA,aACA,GAAG,SACgB;CACnB,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,MAAK;EACL,aAAU;EACV,oBAAkB;EAClB,WAAWA,WAAAA,GAAG,oBAAoB,EAAE,YAAY,CAAC,GAAG,SAAS;EAC7D,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,gBAAgB,EACvB,WAEA,UAAU,OACV,GAAG,SAIF;CAGD,OACE,iBAAA,GAAA,kBAAA,KAHW,UAAUC,SAAAA,KAAK,OAAO,OAGjC;EACE,WAAWD,WAAAA,GACT,0JACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,qBAAqB,EAC5B,WAEA,cAAc,YACd,GAAG,SACsC;CACzC,OACE,iBAAA,GAAA,kBAAA,KAACE,mCAAAA,WAAD;EACE,aAAU;EACG;EACb,WAAWF,WAAAA,GACT,2EACA,SACF;EACA,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"index.cjs","names":["cn","Slot","Separator"],"sources":["../../../src/primitives/ButtonGroup/ButtonGroup.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { Separator } from \"@/primitives/Separator\";\nimport { cn } from \"@/utils\";\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-12 [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\n/** Props for the {@link ButtonGroup} container. */\ntype ButtonGroupProps = React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>;\n\n/** Groups related buttons into a single attached unit with merged borders and shared corners. */\nfunction ButtonGroup({\n className,\n /** Lays the group out left-to-right (`horizontal`, default) or stacked (`vertical`). */\n orientation,\n ...props\n}: ButtonGroupProps) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\n/** A non-interactive label/affix segment styled to sit inline with the grouped buttons. */\nfunction ButtonGroupText({\n className,\n /** Renders into the child element via Radix `Slot` instead of a wrapping `div`. */\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Renders into the child element via Radix `Slot` instead of a wrapping `div`. */\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n <Comp\n className={cn(\n \"flex items-center gap-2 rounded-8 border bg-muted-bg px-4 text-sm font-medium shadow-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** A divider between segments inside a {@link ButtonGroup}, defaulting to a vertical rule. */\nfunction ButtonGroupSeparator({\n className,\n /** Divider direction; defaults to `vertical` to split horizontally-laid buttons. */\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"relative m-0! self-stretch bg-primary-border data-[orientation=vertical]:h-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };\n"],"mappings":";;;;;;AAMA,MAAM,uBAAA,qCAAA,EAAA,KACJ,oSACA;CACE,UAAU,EACR,aAAa;EACX,YACE;EACF,UACE;CACJ,EACF;CACA,iBAAiB,EACf,aAAa,aACf;AACF,CACF;;AAMA,SAAS,YAAY,EACnB,WAEA,aACA,GAAG,SACgB;CACnB,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,MAAK;EACL,aAAU;EACV,oBAAkB;EAClB,WAAWA,WAAAA,GAAG,oBAAoB,EAAE,YAAY,CAAC,GAAG,SAAS;EAC7D,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,gBAAgB,EACvB,WAEA,UAAU,OACV,GAAG,SAIF;CAGD,OACE,iBAAA,GAAA,kBAAA,KAHW,UAAUC,SAAAA,KAAK,OAAO,OAGjC;EACE,WAAWD,WAAAA,GACT,4JACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,qBAAqB,EAC5B,WAEA,cAAc,YACd,GAAG,SACsC;CACzC,OACE,iBAAA,GAAA,kBAAA,KAACE,mCAAAA,WAAD;EACE,aAAU;EACG;EACb,WAAWF,WAAAA,GACT,mFACA,SACF;EACA,GAAI;CACL,CAAA;AAEL"}
@@ -4,7 +4,7 @@ import { Slot } from "radix-ui";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { cva } from "class-variance-authority";
6
6
  //#region src/primitives/ButtonGroup/ButtonGroup.tsx
7
- const buttonGroupVariants = cva("flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
7
+ const buttonGroupVariants = cva("flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-12 [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
8
8
  variants: { orientation: {
9
9
  horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
10
10
  vertical: "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none"
@@ -24,7 +24,7 @@ function ButtonGroup({ className, orientation, ...props }) {
24
24
  /** A non-interactive label/affix segment styled to sit inline with the grouped buttons. */
25
25
  function ButtonGroupText({ className, asChild = false, ...props }) {
26
26
  return /* @__PURE__ */ jsx(asChild ? Slot.Root : "div", {
27
- className: cn("flex items-center gap-2 rounded-lg border bg-muted px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
27
+ className: cn("flex items-center gap-2 rounded-8 border bg-muted-bg px-4 text-sm font-medium shadow-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
28
28
  ...props
29
29
  });
30
30
  }
@@ -33,7 +33,7 @@ function ButtonGroupSeparator({ className, orientation = "vertical", ...props })
33
33
  return /* @__PURE__ */ jsx(Separator$1, {
34
34
  "data-slot": "button-group-separator",
35
35
  orientation,
36
- className: cn("relative m-0! self-stretch bg-border data-[orientation=vertical]:h-auto", className),
36
+ className: cn("relative m-0! self-stretch bg-primary-border data-[orientation=vertical]:h-auto", className),
37
37
  ...props
38
38
  });
39
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Separator"],"sources":["../../../src/primitives/ButtonGroup/ButtonGroup.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { Separator } from \"@/primitives/Separator\";\nimport { cn } from \"@/utils\";\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\n/** Props for the {@link ButtonGroup} container. */\ntype ButtonGroupProps = React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>;\n\n/** Groups related buttons into a single attached unit with merged borders and shared corners. */\nfunction ButtonGroup({\n className,\n /** Lays the group out left-to-right (`horizontal`, default) or stacked (`vertical`). */\n orientation,\n ...props\n}: ButtonGroupProps) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\n/** A non-interactive label/affix segment styled to sit inline with the grouped buttons. */\nfunction ButtonGroupText({\n className,\n /** Renders into the child element via Radix `Slot` instead of a wrapping `div`. */\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Renders into the child element via Radix `Slot` instead of a wrapping `div`. */\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n <Comp\n className={cn(\n \"flex items-center gap-2 rounded-lg border bg-muted px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** A divider between segments inside a {@link ButtonGroup}, defaulting to a vertical rule. */\nfunction ButtonGroupSeparator({\n className,\n /** Divider direction; defaults to `vertical` to split horizontally-laid buttons. */\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"relative m-0! self-stretch bg-border data-[orientation=vertical]:h-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };\n"],"mappings":";;;;;;AAMA,MAAM,sBAAsB,IAC1B,oSACA;CACE,UAAU,EACR,aAAa;EACX,YACE;EACF,UACE;CACJ,EACF;CACA,iBAAiB,EACf,aAAa,aACf;AACF,CACF;;AAMA,SAAS,YAAY,EACnB,WAEA,aACA,GAAG,SACgB;CACnB,OACE,oBAAC,OAAD;EACE,MAAK;EACL,aAAU;EACV,oBAAkB;EAClB,WAAW,GAAG,oBAAoB,EAAE,YAAY,CAAC,GAAG,SAAS;EAC7D,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,gBAAgB,EACvB,WAEA,UAAU,OACV,GAAG,SAIF;CAGD,OACE,oBAHW,UAAU,KAAK,OAAO,OAGjC;EACE,WAAW,GACT,0JACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,qBAAqB,EAC5B,WAEA,cAAc,YACd,GAAG,SACsC;CACzC,OACE,oBAACA,aAAD;EACE,aAAU;EACG;EACb,WAAW,GACT,2EACA,SACF;EACA,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"index.js","names":["Separator"],"sources":["../../../src/primitives/ButtonGroup/ButtonGroup.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { Separator } from \"@/primitives/Separator\";\nimport { cn } from \"@/utils\";\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-12 [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\n/** Props for the {@link ButtonGroup} container. */\ntype ButtonGroupProps = React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>;\n\n/** Groups related buttons into a single attached unit with merged borders and shared corners. */\nfunction ButtonGroup({\n className,\n /** Lays the group out left-to-right (`horizontal`, default) or stacked (`vertical`). */\n orientation,\n ...props\n}: ButtonGroupProps) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\n/** A non-interactive label/affix segment styled to sit inline with the grouped buttons. */\nfunction ButtonGroupText({\n className,\n /** Renders into the child element via Radix `Slot` instead of a wrapping `div`. */\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Renders into the child element via Radix `Slot` instead of a wrapping `div`. */\n asChild?: boolean;\n}) {\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n <Comp\n className={cn(\n \"flex items-center gap-2 rounded-8 border bg-muted-bg px-4 text-sm font-medium shadow-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** A divider between segments inside a {@link ButtonGroup}, defaulting to a vertical rule. */\nfunction ButtonGroupSeparator({\n className,\n /** Divider direction; defaults to `vertical` to split horizontally-laid buttons. */\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"relative m-0! self-stretch bg-primary-border data-[orientation=vertical]:h-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };\n"],"mappings":";;;;;;AAMA,MAAM,sBAAsB,IAC1B,oSACA;CACE,UAAU,EACR,aAAa;EACX,YACE;EACF,UACE;CACJ,EACF;CACA,iBAAiB,EACf,aAAa,aACf;AACF,CACF;;AAMA,SAAS,YAAY,EACnB,WAEA,aACA,GAAG,SACgB;CACnB,OACE,oBAAC,OAAD;EACE,MAAK;EACL,aAAU;EACV,oBAAkB;EAClB,WAAW,GAAG,oBAAoB,EAAE,YAAY,CAAC,GAAG,SAAS;EAC7D,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,gBAAgB,EACvB,WAEA,UAAU,OACV,GAAG,SAIF;CAGD,OACE,oBAHW,UAAU,KAAK,OAAO,OAGjC;EACE,WAAW,GACT,4JACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,qBAAqB,EAC5B,WAEA,cAAc,YACd,GAAG,SACsC;CACzC,OACE,oBAACA,aAAD;EACE,aAAU;EACG;EACb,WAAW,GACT,mFACA,SACF;EACA,GAAI;CACL,CAAA;AAEL"}
@@ -9,11 +9,11 @@ let react_jsx_runtime = require("react/jsx-runtime");
9
9
  let react_day_picker = require("react-day-picker");
10
10
  //#region src/primitives/Calendar/Calendar.tsx
11
11
  /** Date picker calendar built on react-day-picker, themed with the DS Button + tokens. */
12
- function Calendar({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", formatters, components, ...props }) {
12
+ function Calendar({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "outline", formatters, components, ...props }) {
13
13
  const defaultClassNames = (0, react_day_picker.getDefaultClassNames)();
14
14
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_day_picker.DayPicker, {
15
15
  showOutsideDays,
16
- className: require_cn.cn("group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent", String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className),
16
+ className: require_cn.cn("group/calendar bg-glass-60-bg backdrop-blur-glass p-4 [--cell-size:48px] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent rounded-16", String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className),
17
17
  captionLayout,
18
18
  formatters: {
19
19
  formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
@@ -24,26 +24,26 @@ function Calendar({ className, classNames, showOutsideDays = true, captionLayout
24
24
  months: require_cn.cn("relative flex flex-col gap-4 md:flex-row", defaultClassNames.months),
25
25
  month: require_cn.cn("flex w-full flex-col gap-4", defaultClassNames.month),
26
26
  nav: require_cn.cn("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1", defaultClassNames.nav),
27
- button_previous: require_cn.cn(require_primitives_Button_index.buttonVariants({ variant: buttonVariant }), "size-(--cell-size) p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_previous),
28
- button_next: require_cn.cn(require_primitives_Button_index.buttonVariants({ variant: buttonVariant }), "size-(--cell-size) p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_next),
29
- month_caption: require_cn.cn("flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)", defaultClassNames.month_caption),
30
- dropdowns: require_cn.cn("flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium", defaultClassNames.dropdowns),
31
- dropdown_root: require_cn.cn("relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50", defaultClassNames.dropdown_root),
32
- dropdown: require_cn.cn("absolute inset-0 bg-popover opacity-0", defaultClassNames.dropdown),
33
- caption_label: require_cn.cn("font-medium select-none", captionLayout === "label" ? "text-sm" : "flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground", defaultClassNames.caption_label),
27
+ button_previous: require_cn.cn(require_primitives_Button_index.buttonVariants({ variant: buttonVariant }), "size-8 rounded-full p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_previous),
28
+ button_next: require_cn.cn(require_primitives_Button_index.buttonVariants({ variant: buttonVariant }), "size-8 rounded-full p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_next),
29
+ month_caption: require_cn.cn("flex h-8 w-full items-center justify-center px-8 text-sm leading-5 font-medium", defaultClassNames.month_caption),
30
+ dropdowns: require_cn.cn("flex h-8 w-full items-center justify-center gap-1.5 text-sm font-medium", defaultClassNames.dropdowns),
31
+ dropdown_root: require_cn.cn("relative rounded-8 border border-primary-border shadow-sm has-focus:border-primary-invert-border has-focus:ring-3 has-focus:ring-focus", defaultClassNames.dropdown_root),
32
+ dropdown: require_cn.cn("absolute inset-0 opacity-0", defaultClassNames.dropdown),
33
+ caption_label: require_cn.cn("font-medium select-none", captionLayout === "label" ? "text-sm" : "flex h-8 items-center gap-1 rounded-8 pr-1 pl-0.5 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-txt", defaultClassNames.caption_label),
34
34
  month_grid: "w-full border-collapse",
35
35
  weekdays: require_cn.cn("flex", defaultClassNames.weekdays),
36
- weekday: require_cn.cn("flex-1 rounded-md text-[0.8rem] font-normal text-muted-foreground select-none", defaultClassNames.weekday),
37
- week: require_cn.cn("mt-2 flex w-full", defaultClassNames.week),
36
+ weekday: require_cn.cn("flex h-8 flex-1 items-center justify-center rounded-8 text-xs leading-4 font-normal text-muted-txt select-none", defaultClassNames.weekday),
37
+ week: require_cn.cn("mt-px flex w-full", defaultClassNames.week),
38
38
  week_number_header: require_cn.cn("w-(--cell-size) select-none", defaultClassNames.week_number_header),
39
- week_number: require_cn.cn("text-[0.8rem] text-muted-foreground select-none", defaultClassNames.week_number),
40
- day: require_cn.cn("group/day relative aspect-square h-full w-full p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-md", props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-md" : "[&:first-child[data-selected=true]_button]:rounded-l-md", defaultClassNames.day),
41
- range_start: require_cn.cn("rounded-l-md bg-accent", defaultClassNames.range_start),
42
- range_middle: require_cn.cn("rounded-none", defaultClassNames.range_middle),
43
- range_end: require_cn.cn("rounded-r-md bg-accent", defaultClassNames.range_end),
44
- today: require_cn.cn("font-semibold text-foreground data-[selected=true]:rounded-none", defaultClassNames.today),
45
- outside: require_cn.cn("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
46
- disabled: require_cn.cn("text-muted-foreground opacity-50", defaultClassNames.disabled),
39
+ week_number: require_cn.cn("text-xs leading-4 text-muted-txt select-none", defaultClassNames.week_number),
40
+ day: require_cn.cn("group/day relative flex h-12 w-(--cell-size) items-center justify-center p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-full", props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-full" : "[&:first-child[data-selected=true]_button]:rounded-l-full", defaultClassNames.day),
41
+ range_start: require_cn.cn("bg-[linear-gradient(to_right,transparent_50%,var(--muted-bg)_50%)]", defaultClassNames.range_start),
42
+ range_middle: require_cn.cn("rounded-none bg-muted-bg", defaultClassNames.range_middle),
43
+ range_end: require_cn.cn("bg-[linear-gradient(to_right,var(--muted-bg)_50%,transparent_50%)]", defaultClassNames.range_end),
44
+ today: require_cn.cn("data-[selected=true]:rounded-none", defaultClassNames.today),
45
+ outside: require_cn.cn("text-muted-txt aria-selected:text-muted-txt", defaultClassNames.outside),
46
+ disabled: require_cn.cn("text-muted-txt opacity-50", defaultClassNames.disabled),
47
47
  hidden: require_cn.cn("invisible", defaultClassNames.hidden),
48
48
  ...classNames
49
49
  },
@@ -95,13 +95,14 @@ function CalendarDayButton({ className, day, modifiers, ...props }) {
95
95
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_primitives_Button_index.Button, {
96
96
  ref,
97
97
  variant: "ghost",
98
- size: "icon",
98
+ size: "icon-sm",
99
99
  "data-day": day.date.toLocaleDateString(),
100
100
  "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
101
101
  "data-range-start": modifiers.range_start,
102
102
  "data-range-end": modifiers.range_end,
103
103
  "data-range-middle": modifiers.range_middle,
104
- className: require_cn.cn("flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-accent data-[range-end=true]:text-accent-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-accent data-[range-start=true]:text-accent-foreground data-[selected-single=true]:bg-accent data-[selected-single=true]:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
104
+ "data-today": modifiers.today,
105
+ className: require_cn.cn("flex size-8 flex-col gap-0 rounded-full p-0 text-sm leading-5 font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-3 group-data-[focused=true]/day:ring-focus data-[today=true]:bg-muted-bg data-[range-end=true]:bg-primary-invert-bg! data-[range-end=true]:text-primary-invert-txt data-[range-middle=true]:bg-transparent data-[range-middle=true]:text-primary-txt data-[range-start=true]:bg-primary-invert-bg! data-[range-start=true]:text-primary-invert-txt data-[selected-single=true]:bg-primary-invert-bg! data-[selected-single=true]:text-primary-invert-txt [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
105
106
  ...props
106
107
  });
107
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["DayPicker","cn","buttonVariants","ChevronLeftIcon","ChevronRightIcon","ChevronDownIcon","React","Button"],"sources":["../../../src/primitives/Calendar/Calendar.tsx"],"sourcesContent":["import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { type DayButton, DayPicker, getDefaultClassNames } from \"react-day-picker\";\n\nimport { Button, buttonVariants } from \"@/primitives/Button\";\nimport { cn } from \"@/utils\";\n\n/** Date picker calendar built on react-day-picker, themed with the DS Button + tokens. */\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n /** Button variant used for the previous/next navigation controls. */\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n}) {\n const defaultClassNames = getDefaultClassNames();\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className,\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) => date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\"relative flex flex-col gap-4 md:flex-row\", defaultClassNames.months),\n month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n nav: cn(\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n defaultClassNames.nav,\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_previous,\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_next,\n ),\n month_caption: cn(\n \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n defaultClassNames.month_caption,\n ),\n dropdowns: cn(\n \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n defaultClassNames.dropdowns,\n ),\n dropdown_root: cn(\n \"relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50\",\n defaultClassNames.dropdown_root,\n ),\n dropdown: cn(\"absolute inset-0 bg-popover opacity-0\", defaultClassNames.dropdown),\n caption_label: cn(\n \"font-medium select-none\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\",\n defaultClassNames.caption_label,\n ),\n month_grid: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"flex-1 rounded-md text-[0.8rem] font-normal text-muted-foreground select-none\",\n defaultClassNames.weekday,\n ),\n week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n week_number_header: cn(\"w-(--cell-size) select-none\", defaultClassNames.week_number_header),\n week_number: cn(\n \"text-[0.8rem] text-muted-foreground select-none\",\n defaultClassNames.week_number,\n ),\n day: cn(\n \"group/day relative aspect-square h-full w-full p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-md\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day,\n ),\n range_start: cn(\"rounded-l-md bg-accent\", defaultClassNames.range_start),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n today: cn(\n \"font-semibold text-foreground data-[selected=true]:rounded-none\",\n defaultClassNames.today,\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside,\n ),\n disabled: cn(\"text-muted-foreground opacity-50\", defaultClassNames.disabled),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return <div data-slot=\"calendar\" ref={rootRef} className={cn(className)} {...props} />;\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />;\n }\n\n if (orientation === \"right\") {\n return <ChevronRightIcon className={cn(\"size-4\", className)} {...props} />;\n }\n\n return <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />;\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n );\n },\n ...components,\n }}\n {...props}\n />\n );\n}\n\n/** Single day cell button, applying selected/range styling from the day's modifiers. */\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames();\n\n const ref = React.useRef<HTMLButtonElement>(null);\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-accent data-[range-end=true]:text-accent-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-accent data-[range-start=true]:text-accent-foreground data-[selected-single=true]:bg-accent data-[selected-single=true]:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Calendar, CalendarDayButton };\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["DayPicker","cn","buttonVariants","ChevronLeftIcon","ChevronRightIcon","ChevronDownIcon","React","Button"],"sources":["../../../src/primitives/Calendar/Calendar.tsx"],"sourcesContent":["import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { type DayButton, DayPicker, getDefaultClassNames } from \"react-day-picker\";\n\nimport { Button, buttonVariants } from \"@/primitives/Button\";\nimport { cn } from \"@/utils\";\n\n/** Date picker calendar built on react-day-picker, themed with the DS Button + tokens. */\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"outline\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n /** Button variant used for the previous/next navigation controls. */\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n}) {\n const defaultClassNames = getDefaultClassNames();\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"group/calendar bg-glass-60-bg backdrop-blur-glass p-4 [--cell-size:48px] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent rounded-16\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className,\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) => date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\"relative flex flex-col gap-4 md:flex-row\", defaultClassNames.months),\n month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n nav: cn(\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n defaultClassNames.nav,\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-8 rounded-full p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_previous,\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-8 rounded-full p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_next,\n ),\n month_caption: cn(\n \"flex h-8 w-full items-center justify-center px-8 text-sm leading-5 font-medium\",\n defaultClassNames.month_caption,\n ),\n dropdowns: cn(\n \"flex h-8 w-full items-center justify-center gap-1.5 text-sm font-medium\",\n defaultClassNames.dropdowns,\n ),\n dropdown_root: cn(\n \"relative rounded-8 border border-primary-border shadow-sm has-focus:border-primary-invert-border has-focus:ring-3 has-focus:ring-focus\",\n defaultClassNames.dropdown_root,\n ),\n dropdown: cn(\"absolute inset-0 opacity-0\", defaultClassNames.dropdown),\n caption_label: cn(\n \"font-medium select-none\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"flex h-8 items-center gap-1 rounded-8 pr-1 pl-0.5 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-txt\",\n defaultClassNames.caption_label,\n ),\n month_grid: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"flex h-8 flex-1 items-center justify-center rounded-8 text-xs leading-4 font-normal text-muted-txt select-none\",\n defaultClassNames.weekday,\n ),\n week: cn(\"mt-px flex w-full\", defaultClassNames.week),\n week_number_header: cn(\"w-(--cell-size) select-none\", defaultClassNames.week_number_header),\n week_number: cn(\n \"text-xs leading-4 text-muted-txt select-none\",\n defaultClassNames.week_number,\n ),\n day: cn(\n \"group/day relative flex h-12 w-(--cell-size) items-center justify-center p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-full\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-full\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-full\",\n defaultClassNames.day,\n ),\n range_start: cn(\n \"bg-[linear-gradient(to_right,transparent_50%,var(--muted-bg)_50%)]\",\n defaultClassNames.range_start,\n ),\n range_middle: cn(\"rounded-none bg-muted-bg\", defaultClassNames.range_middle),\n range_end: cn(\n \"bg-[linear-gradient(to_right,var(--muted-bg)_50%,transparent_50%)]\",\n defaultClassNames.range_end,\n ),\n today: cn(\"data-[selected=true]:rounded-none\", defaultClassNames.today),\n outside: cn(\"text-muted-txt aria-selected:text-muted-txt\", defaultClassNames.outside),\n disabled: cn(\"text-muted-txt opacity-50\", defaultClassNames.disabled),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return <div data-slot=\"calendar\" ref={rootRef} className={cn(className)} {...props} />;\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />;\n }\n\n if (orientation === \"right\") {\n return <ChevronRightIcon className={cn(\"size-4\", className)} {...props} />;\n }\n\n return <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />;\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n );\n },\n ...components,\n }}\n {...props}\n />\n );\n}\n\n/** Single day cell button, applying selected/range styling from the day's modifiers. */\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames();\n\n const ref = React.useRef<HTMLButtonElement>(null);\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon-sm\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n data-today={modifiers.today}\n className={cn(\n // Figma .Date Picker/Day: 48px cell, 32px circular button; selected and\n // range endpoints are primary-invert circles, today a muted circle.\n \"flex size-8 flex-col gap-0 rounded-full p-0 text-sm leading-5 font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-3 group-data-[focused=true]/day:ring-focus data-[today=true]:bg-muted-bg data-[range-end=true]:bg-primary-invert-bg! data-[range-end=true]:text-primary-invert-txt data-[range-middle=true]:bg-transparent data-[range-middle=true]:text-primary-txt data-[range-start=true]:bg-primary-invert-bg! data-[range-start=true]:text-primary-invert-txt data-[selected-single=true]:bg-primary-invert-bg! data-[selected-single=true]:text-primary-invert-txt [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Calendar, CalendarDayButton };\n"],"mappings":"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"}
@@ -6,11 +6,11 @@ import { jsx } from "react/jsx-runtime";
6
6
  import { DayPicker, getDefaultClassNames } from "react-day-picker";
7
7
  //#region src/primitives/Calendar/Calendar.tsx
8
8
  /** Date picker calendar built on react-day-picker, themed with the DS Button + tokens. */
9
- function Calendar({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", formatters, components, ...props }) {
9
+ function Calendar({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "outline", formatters, components, ...props }) {
10
10
  const defaultClassNames = getDefaultClassNames();
11
11
  return /* @__PURE__ */ jsx(DayPicker, {
12
12
  showOutsideDays,
13
- className: cn("group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent", String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className),
13
+ className: cn("group/calendar bg-glass-60-bg backdrop-blur-glass p-4 [--cell-size:48px] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent rounded-16", String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className),
14
14
  captionLayout,
15
15
  formatters: {
16
16
  formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
@@ -21,26 +21,26 @@ function Calendar({ className, classNames, showOutsideDays = true, captionLayout
21
21
  months: cn("relative flex flex-col gap-4 md:flex-row", defaultClassNames.months),
22
22
  month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
23
23
  nav: cn("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1", defaultClassNames.nav),
24
- button_previous: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_previous),
25
- button_next: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_next),
26
- month_caption: cn("flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)", defaultClassNames.month_caption),
27
- dropdowns: cn("flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium", defaultClassNames.dropdowns),
28
- dropdown_root: cn("relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50", defaultClassNames.dropdown_root),
29
- dropdown: cn("absolute inset-0 bg-popover opacity-0", defaultClassNames.dropdown),
30
- caption_label: cn("font-medium select-none", captionLayout === "label" ? "text-sm" : "flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground", defaultClassNames.caption_label),
24
+ button_previous: cn(buttonVariants({ variant: buttonVariant }), "size-8 rounded-full p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_previous),
25
+ button_next: cn(buttonVariants({ variant: buttonVariant }), "size-8 rounded-full p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_next),
26
+ month_caption: cn("flex h-8 w-full items-center justify-center px-8 text-sm leading-5 font-medium", defaultClassNames.month_caption),
27
+ dropdowns: cn("flex h-8 w-full items-center justify-center gap-1.5 text-sm font-medium", defaultClassNames.dropdowns),
28
+ dropdown_root: cn("relative rounded-8 border border-primary-border shadow-sm has-focus:border-primary-invert-border has-focus:ring-3 has-focus:ring-focus", defaultClassNames.dropdown_root),
29
+ dropdown: cn("absolute inset-0 opacity-0", defaultClassNames.dropdown),
30
+ caption_label: cn("font-medium select-none", captionLayout === "label" ? "text-sm" : "flex h-8 items-center gap-1 rounded-8 pr-1 pl-0.5 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-txt", defaultClassNames.caption_label),
31
31
  month_grid: "w-full border-collapse",
32
32
  weekdays: cn("flex", defaultClassNames.weekdays),
33
- weekday: cn("flex-1 rounded-md text-[0.8rem] font-normal text-muted-foreground select-none", defaultClassNames.weekday),
34
- week: cn("mt-2 flex w-full", defaultClassNames.week),
33
+ weekday: cn("flex h-8 flex-1 items-center justify-center rounded-8 text-xs leading-4 font-normal text-muted-txt select-none", defaultClassNames.weekday),
34
+ week: cn("mt-px flex w-full", defaultClassNames.week),
35
35
  week_number_header: cn("w-(--cell-size) select-none", defaultClassNames.week_number_header),
36
- week_number: cn("text-[0.8rem] text-muted-foreground select-none", defaultClassNames.week_number),
37
- day: cn("group/day relative aspect-square h-full w-full p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-md", props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-md" : "[&:first-child[data-selected=true]_button]:rounded-l-md", defaultClassNames.day),
38
- range_start: cn("rounded-l-md bg-accent", defaultClassNames.range_start),
39
- range_middle: cn("rounded-none", defaultClassNames.range_middle),
40
- range_end: cn("rounded-r-md bg-accent", defaultClassNames.range_end),
41
- today: cn("font-semibold text-foreground data-[selected=true]:rounded-none", defaultClassNames.today),
42
- outside: cn("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
43
- disabled: cn("text-muted-foreground opacity-50", defaultClassNames.disabled),
36
+ week_number: cn("text-xs leading-4 text-muted-txt select-none", defaultClassNames.week_number),
37
+ day: cn("group/day relative flex h-12 w-(--cell-size) items-center justify-center p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-full", props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-full" : "[&:first-child[data-selected=true]_button]:rounded-l-full", defaultClassNames.day),
38
+ range_start: cn("bg-[linear-gradient(to_right,transparent_50%,var(--muted-bg)_50%)]", defaultClassNames.range_start),
39
+ range_middle: cn("rounded-none bg-muted-bg", defaultClassNames.range_middle),
40
+ range_end: cn("bg-[linear-gradient(to_right,var(--muted-bg)_50%,transparent_50%)]", defaultClassNames.range_end),
41
+ today: cn("data-[selected=true]:rounded-none", defaultClassNames.today),
42
+ outside: cn("text-muted-txt aria-selected:text-muted-txt", defaultClassNames.outside),
43
+ disabled: cn("text-muted-txt opacity-50", defaultClassNames.disabled),
44
44
  hidden: cn("invisible", defaultClassNames.hidden),
45
45
  ...classNames
46
46
  },
@@ -92,13 +92,14 @@ function CalendarDayButton({ className, day, modifiers, ...props }) {
92
92
  return /* @__PURE__ */ jsx(Button, {
93
93
  ref,
94
94
  variant: "ghost",
95
- size: "icon",
95
+ size: "icon-sm",
96
96
  "data-day": day.date.toLocaleDateString(),
97
97
  "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
98
98
  "data-range-start": modifiers.range_start,
99
99
  "data-range-end": modifiers.range_end,
100
100
  "data-range-middle": modifiers.range_middle,
101
- className: cn("flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-accent data-[range-end=true]:text-accent-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-accent data-[range-start=true]:text-accent-foreground data-[selected-single=true]:bg-accent data-[selected-single=true]:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
101
+ "data-today": modifiers.today,
102
+ className: cn("flex size-8 flex-col gap-0 rounded-full p-0 text-sm leading-5 font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-3 group-data-[focused=true]/day:ring-focus data-[today=true]:bg-muted-bg data-[range-end=true]:bg-primary-invert-bg! data-[range-end=true]:text-primary-invert-txt data-[range-middle=true]:bg-transparent data-[range-middle=true]:text-primary-txt data-[range-start=true]:bg-primary-invert-bg! data-[range-start=true]:text-primary-invert-txt data-[selected-single=true]:bg-primary-invert-bg! data-[selected-single=true]:text-primary-invert-txt [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
102
103
  ...props
103
104
  });
104
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/primitives/Calendar/Calendar.tsx"],"sourcesContent":["import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { type DayButton, DayPicker, getDefaultClassNames } from \"react-day-picker\";\n\nimport { Button, buttonVariants } from \"@/primitives/Button\";\nimport { cn } from \"@/utils\";\n\n/** Date picker calendar built on react-day-picker, themed with the DS Button + tokens. */\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n /** Button variant used for the previous/next navigation controls. */\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n}) {\n const defaultClassNames = getDefaultClassNames();\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className,\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) => date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\"relative flex flex-col gap-4 md:flex-row\", defaultClassNames.months),\n month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n nav: cn(\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n defaultClassNames.nav,\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_previous,\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_next,\n ),\n month_caption: cn(\n \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n defaultClassNames.month_caption,\n ),\n dropdowns: cn(\n \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n defaultClassNames.dropdowns,\n ),\n dropdown_root: cn(\n \"relative rounded-md border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50\",\n defaultClassNames.dropdown_root,\n ),\n dropdown: cn(\"absolute inset-0 bg-popover opacity-0\", defaultClassNames.dropdown),\n caption_label: cn(\n \"font-medium select-none\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\",\n defaultClassNames.caption_label,\n ),\n month_grid: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"flex-1 rounded-md text-[0.8rem] font-normal text-muted-foreground select-none\",\n defaultClassNames.weekday,\n ),\n week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n week_number_header: cn(\"w-(--cell-size) select-none\", defaultClassNames.week_number_header),\n week_number: cn(\n \"text-[0.8rem] text-muted-foreground select-none\",\n defaultClassNames.week_number,\n ),\n day: cn(\n \"group/day relative aspect-square h-full w-full p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-md\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day,\n ),\n range_start: cn(\"rounded-l-md bg-accent\", defaultClassNames.range_start),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n today: cn(\n \"font-semibold text-foreground data-[selected=true]:rounded-none\",\n defaultClassNames.today,\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside,\n ),\n disabled: cn(\"text-muted-foreground opacity-50\", defaultClassNames.disabled),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return <div data-slot=\"calendar\" ref={rootRef} className={cn(className)} {...props} />;\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />;\n }\n\n if (orientation === \"right\") {\n return <ChevronRightIcon className={cn(\"size-4\", className)} {...props} />;\n }\n\n return <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />;\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n );\n },\n ...components,\n }}\n {...props}\n />\n );\n}\n\n/** Single day cell button, applying selected/range styling from the day's modifiers. */\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames();\n\n const ref = React.useRef<HTMLButtonElement>(null);\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-accent data-[range-end=true]:text-accent-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-accent data-[range-start=true]:text-accent-foreground data-[selected-single=true]:bg-accent data-[selected-single=true]:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Calendar, CalendarDayButton };\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/primitives/Calendar/Calendar.tsx"],"sourcesContent":["import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { type DayButton, DayPicker, getDefaultClassNames } from \"react-day-picker\";\n\nimport { Button, buttonVariants } from \"@/primitives/Button\";\nimport { cn } from \"@/utils\";\n\n/** Date picker calendar built on react-day-picker, themed with the DS Button + tokens. */\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"outline\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n /** Button variant used for the previous/next navigation controls. */\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n}) {\n const defaultClassNames = getDefaultClassNames();\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"group/calendar bg-glass-60-bg backdrop-blur-glass p-4 [--cell-size:48px] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent rounded-16\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className,\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) => date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\"relative flex flex-col gap-4 md:flex-row\", defaultClassNames.months),\n month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n nav: cn(\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n defaultClassNames.nav,\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-8 rounded-full p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_previous,\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-8 rounded-full p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_next,\n ),\n month_caption: cn(\n \"flex h-8 w-full items-center justify-center px-8 text-sm leading-5 font-medium\",\n defaultClassNames.month_caption,\n ),\n dropdowns: cn(\n \"flex h-8 w-full items-center justify-center gap-1.5 text-sm font-medium\",\n defaultClassNames.dropdowns,\n ),\n dropdown_root: cn(\n \"relative rounded-8 border border-primary-border shadow-sm has-focus:border-primary-invert-border has-focus:ring-3 has-focus:ring-focus\",\n defaultClassNames.dropdown_root,\n ),\n dropdown: cn(\"absolute inset-0 opacity-0\", defaultClassNames.dropdown),\n caption_label: cn(\n \"font-medium select-none\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"flex h-8 items-center gap-1 rounded-8 pr-1 pl-0.5 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-txt\",\n defaultClassNames.caption_label,\n ),\n month_grid: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"flex h-8 flex-1 items-center justify-center rounded-8 text-xs leading-4 font-normal text-muted-txt select-none\",\n defaultClassNames.weekday,\n ),\n week: cn(\"mt-px flex w-full\", defaultClassNames.week),\n week_number_header: cn(\"w-(--cell-size) select-none\", defaultClassNames.week_number_header),\n week_number: cn(\n \"text-xs leading-4 text-muted-txt select-none\",\n defaultClassNames.week_number,\n ),\n day: cn(\n \"group/day relative flex h-12 w-(--cell-size) items-center justify-center p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-full\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-full\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-full\",\n defaultClassNames.day,\n ),\n range_start: cn(\n \"bg-[linear-gradient(to_right,transparent_50%,var(--muted-bg)_50%)]\",\n defaultClassNames.range_start,\n ),\n range_middle: cn(\"rounded-none bg-muted-bg\", defaultClassNames.range_middle),\n range_end: cn(\n \"bg-[linear-gradient(to_right,var(--muted-bg)_50%,transparent_50%)]\",\n defaultClassNames.range_end,\n ),\n today: cn(\"data-[selected=true]:rounded-none\", defaultClassNames.today),\n outside: cn(\"text-muted-txt aria-selected:text-muted-txt\", defaultClassNames.outside),\n disabled: cn(\"text-muted-txt opacity-50\", defaultClassNames.disabled),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return <div data-slot=\"calendar\" ref={rootRef} className={cn(className)} {...props} />;\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />;\n }\n\n if (orientation === \"right\") {\n return <ChevronRightIcon className={cn(\"size-4\", className)} {...props} />;\n }\n\n return <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />;\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n );\n },\n ...components,\n }}\n {...props}\n />\n );\n}\n\n/** Single day cell button, applying selected/range styling from the day's modifiers. */\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames();\n\n const ref = React.useRef<HTMLButtonElement>(null);\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon-sm\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n data-today={modifiers.today}\n className={cn(\n // Figma .Date Picker/Day: 48px cell, 32px circular button; selected and\n // range endpoints are primary-invert circles, today a muted circle.\n \"flex size-8 flex-col gap-0 rounded-full p-0 text-sm leading-5 font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-3 group-data-[focused=true]/day:ring-focus data-[today=true]:bg-muted-bg data-[range-end=true]:bg-primary-invert-bg! data-[range-end=true]:text-primary-invert-txt data-[range-middle=true]:bg-transparent data-[range-middle=true]:text-primary-txt data-[range-start=true]:bg-primary-invert-bg! data-[range-start=true]:text-primary-invert-txt data-[selected-single=true]:bg-primary-invert-bg! data-[selected-single=true]:text-primary-invert-txt [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Calendar, CalendarDayButton };\n"],"mappings":"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"}
@@ -2,13 +2,14 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_cn = require("../../cn.cjs");
3
3
  let react_jsx_runtime = require("react/jsx-runtime");
4
4
  //#region src/primitives/Card/Card.tsx
5
- const cardVariants = (0, require("class-variance-authority").cva)("flex flex-col gap-6 rounded-xl border text-card-foreground", {
5
+ const cardVariants = (0, require("class-variance-authority").cva)("flex flex-col justify-between gap-6 rounded-8 border text-primary-txt", {
6
6
  variants: {
7
7
  variant: {
8
- default: "bg-card shadow-sm",
8
+ default: "bg-glass-none-bg shadow-sm",
9
9
  glass: "border-transparent backdrop-blur-glass",
10
- brand: "border-transparent bg-[image:var(--brand-surface-gradient)] text-brand-surface-foreground",
11
- inverted: "border-transparent bg-inverse text-inverse-foreground"
10
+ brand: "border-transparent bg-[image:linear-gradient(to_right,var(--theme-brand-700),var(--theme-brand-500-primary))] text-white",
11
+ ai: "ai-border [--ai-surface:var(--glass-none-bg)]",
12
+ inverted: "border-transparent bg-primary-invert-bg text-primary-invert-txt"
12
13
  },
13
14
  tint: {
14
15
  subtle: "",
@@ -21,22 +22,22 @@ const cardVariants = (0, require("class-variance-authority").cva)("flex flex-col
21
22
  {
22
23
  variant: "glass",
23
24
  tint: "subtle",
24
- class: "bg-[var(--glass-subtle)]"
25
+ class: "bg-glass-20-bg backdrop-blur-glass"
25
26
  },
26
27
  {
27
28
  variant: "glass",
28
29
  tint: "light",
29
- class: "bg-[var(--glass-light)]"
30
+ class: "bg-glass-40-bg backdrop-blur-glass"
30
31
  },
31
32
  {
32
33
  variant: "glass",
33
34
  tint: "medium",
34
- class: "bg-[var(--glass-medium)]"
35
+ class: "bg-glass-40-bg backdrop-blur-glass"
35
36
  },
36
37
  {
37
38
  variant: "glass",
38
39
  tint: "heavy",
39
- class: "bg-[var(--glass-heavy)]"
40
+ class: "bg-glass-60-bg backdrop-blur-glass"
40
41
  }
41
42
  ],
42
43
  defaultVariants: {
@@ -52,7 +53,7 @@ function Card({ className, variant, tint, ...props }) {
52
53
  className: require_cn.cn(cardVariants({
53
54
  variant,
54
55
  tint
55
- }), className, "justify-between"),
56
+ }), className),
56
57
  ...props
57
58
  });
58
59
  }
@@ -65,15 +66,16 @@ const cardHeaderAlign = {
65
66
  function CardHeader({ className, align = "center", ...props }) {
66
67
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
67
68
  "data-slot": "card-header",
68
- className: require_cn.cn("@container/card-header grid auto-rows-min grid-rows-[auto_auto] gap-1.5 px-6 pt-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6", cardHeaderAlign[align], className),
69
+ className: require_cn.cn("@container/card-header grid auto-rows-min grid-rows-[auto_auto] gap-1 px-6 pt-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6", cardHeaderAlign[align], className),
69
70
  ...props
70
71
  });
71
72
  }
72
- /** Card heading rendered as an `h4`. */
73
+ /** Card heading rendered as an `h4`. Figma binds the body font (Inter Semibold
74
+ 16/24), so we override the base heading styles explicitly. */
73
75
  function CardTitle({ className, ...props }) {
74
76
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h4", {
75
77
  "data-slot": "card-title",
76
- className: require_cn.cn("leading-none", className),
78
+ className: require_cn.cn("font-sans text-base leading-6 font-semibold", className),
77
79
  ...props
78
80
  });
79
81
  }
@@ -81,7 +83,7 @@ function CardTitle({ className, ...props }) {
81
83
  function CardDescription({ className, ...props }) {
82
84
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
83
85
  "data-slot": "card-description",
84
- className: require_cn.cn("text-muted-foreground", className),
86
+ className: require_cn.cn("text-sm leading-5 text-muted-txt", className),
85
87
  ...props
86
88
  });
87
89
  }
@@ -103,9 +105,9 @@ function CardContent({ className, ...props }) {
103
105
  }
104
106
  const cardFooterTone = {
105
107
  default: "px-6 pb-6 [.border-t]:pt-6",
106
- brand: "justify-center rounded-b-xl bg-brand-accent px-6 py-3 text-brand-accent-foreground",
107
- muted: "justify-center rounded-b-xl bg-muted px-6 py-3 text-muted-foreground",
108
- card: "justify-center rounded-b-xl bg-card px-6 py-3 text-card-foreground"
108
+ brand: "justify-center rounded-b-8 bg-brand-200 px-6 py-3 text-brand-800",
109
+ muted: "justify-center rounded-b-8 bg-muted-bg px-6 py-3 text-muted-txt",
110
+ card: "justify-center rounded-b-8 bg-glass-none-bg px-6 py-3 text-primary-txt"
109
111
  };
110
112
  /** Bottom region of the card — typically holds actions or summary text. */
111
113
  function CardFooter({ className, tone = "default", ...props }) {