@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
@@ -4,98 +4,75 @@
4
4
  */
5
5
 
6
6
  :root {
7
- --bg-background: #ffffff; /** Use for general backgrounds. */
8
- --bg-primary: #111827;
9
- --bg-secondary: #f3f4f6;
10
- --bg-accent: #f3f4f6; /** Level 1, official */
11
- --bg-muted: #f3f4f6;
12
- --bg-destructive: #d2012b;
13
- --bg-destructive-alpha: rgb(220 38 38 / 0.2);
14
- --bg-destructive-subtle: #fef2f5;
15
- --bg-input: #ffffff;
16
- --bg-page-bg-brand: #fbccd6;
17
- --bg-page-bg-neutral: #e2e8f0;
18
- --bg-info: #bae6fd;
19
- --bg-info-subtle: #e0f2fe;
20
- --bg-success: #d9f99d;
21
- --bg-success-subtle: #ecfccb;
22
- --bg-warning: #fed7aa;
23
- --bg-warning-subtle: #ffedd5;
24
- --bg-error: #fbccd6;
25
- --bg-error-subtle: #fde6ea;
26
- --bg-backdrop: rgb(31 40 50 / 0.4);
27
- --content-foreground: #030712;
28
- --content-primary-foreground: #f9fafb;
29
- --content-secondary-foreground: #111827;
30
- --content-accent-foreground: #111827;
31
- --content-muted-foreground: #6b7280;
32
- --content-destructive-foreground: #ffffff;
33
- --content-info: #0284c7;
34
- --content-info-bold: #075985;
35
- --content-success: #65a30d;
36
- --content-success-bold: #3f6212;
37
- --content-warning: #ea580c;
38
- --content-warning-bold: #9a3412;
39
- --content-error: #d2012b;
40
- --content-error-bold: #8d011d;
41
- --content-destructive: #d2012b;
42
- --content-destructive-subtle: #f699ac;
43
- --card-card-100: #ffffff;
44
- --card-card-90: rgb(255 255 255 / 0.9);
45
- --card-card-80: rgb(255 255 255 / 0.8);
46
- --card-card-60: rgb(255 255 255 / 0.6);
47
- --card-card-40: rgb(255 255 255 / 0.4);
48
- --card-card-20: rgb(255 255 255 / 0.2);
49
- --card-card-10: rgb(255 255 255 / 0.1);
50
- --card-card-foreground: #030712;
51
- --brand-colors-brand-50: #fef2f5;
52
- --brand-colors-brand-100: #fde6ea;
53
- --brand-colors-brand-200: #fbccd6;
54
- --brand-colors-brand-300: #f699ac;
55
- --brand-colors-brand-400: #f26783;
56
- --brand-colors-brand-500: #e90130;
57
- --brand-colors-brand-600: #d2012b;
58
- --brand-colors-brand-700: #bc0126;
59
- --brand-colors-brand-800: #8d011d;
60
- --brand-colors-brand-900: #6c0016;
61
- --brand-colors-brand-950: #3d000d;
62
- --popover-popover: #1f2832;
63
- --popover-popover-foreground: #ffffff;
64
- --unofficial-foreground-alt: #374151; /** Please use this for body text. */
65
- --unofficial-body-background: #ffffff;
66
- --unofficial-mid-alt: #4b5563;
67
- --unofficial-ghost-foreground: #374151;
68
- --unofficial-ghost: rgb(255 255 255 / 0.0001);
69
- --unofficial-ghost-hover: rgb(31 40 50 / 0.05);
70
- --unofficial-primary-hover: #374151;
71
- --unofficial-secondary-hover: #f9fafb;
72
- --unofficial-outline: rgb(255 255 255 / 0.1);
73
- --unofficial-outline-hover: rgb(31 40 50 / 0.0333);
74
- --unofficial-outline-active: rgb(31 40 50 / 0.05);
75
- --unofficial-accent-0: #f9fafb;
76
- --unofficial-accent-2: #e5e7eb;
77
- --unofficial-accent-3: #d1d5db;
78
- --border-border-0: #f9fafb;
79
- --border-border-1: #f3f4f6;
80
- --border-border-2: #e5e7eb; /** level 2, official. See docs. */
81
- --border-border-3: #d1d5db;
82
- --border-border-4: #9ca3af;
83
- --border-border-5: #6b7280;
84
- --border-destructive-border: #d2012b;
85
- --border-success-border: #65a30d;
86
- --border-warning-border: #ea580c;
87
- --focus-ring: #d1d5db; /** Focus ring */
88
- --focus-ring-error: #f699ac; /** Focus ring error */
89
- --sidebar-sidebar: #f9fafb;
90
- --sidebar-sidebar-foreground: #374151;
91
- --sidebar-sidebar-accent: #f3f4f6;
92
- --sidebar-sidebar-accent-foreground: #111827;
93
- --sidebar-sidebar-primary: #111827;
94
- --sidebar-sidebar-primary-foreground: #f9fafb;
95
- --sidebar-sidebar-border: #e5e7eb;
96
- --sidebar-sidebar-ring: #d1d5db;
97
- --sidebar-unofficial-sidebar-muted: #6b7280;
98
- --obra-shadcn-docs-obra-shadcn-ui-docs-1: #bfdbfe;
99
- --obra-shadcn-docs-obra-shadcn-ui-docs-2: #fef9c3;
100
- --focus-ring-success: var(--content-success); /** Focus ring error */
7
+ --primary-bg: #ffffff; /** Use for general backgrounds. */
8
+ --primary-invert-bg: #111827;
9
+ --secondary-bg: #e5e7eb;
10
+ --muted-bg: #f3f4f6;
11
+ --info-bg: #e0f2fe;
12
+ --success-bg: #ecfccb;
13
+ --warning-bg: #ffedd5;
14
+ --danger-bg: #fde6ea;
15
+ --primary-invert-hover-bg: #374151;
16
+ --secondary-hover-bg: #f9fafb;
17
+ --outline-bg: rgb(255 255 255 / 0.1);
18
+ --outline-hover-bg: rgb(31 40 50 / 0.0333);
19
+ --ghost-bg: rgb(255 255 255 / 0.0001);
20
+ --ghost-hover-bg: rgb(31 40 50 / 0.05);
21
+ --toggle-active-bg: rgb(31 40 50 / 0.05);
22
+ --input-bg: #ffffff;
23
+ --switch-active-bg: #84cc16;
24
+ --navbar-active-bg: #e90130;
25
+ --brand-gradient-from: var(--theme-brand-200);
26
+ --brand-gradient-to: #e2e8f0;
27
+ --overlay-bg: rgb(31 40 50 / 0.4);
28
+ --primary-txt: #111827;
29
+ --primary-invert-txt: #f3f4f6;
30
+ --secondary-txt: #374151;
31
+ --muted-txt: #6b7280;
32
+ --info-txt: #0369a1;
33
+ --success-txt: #4d7c0f;
34
+ --warning-txt: #c2410c;
35
+ --danger-txt: #bc0126;
36
+ --primary-border: #e5e7eb; /** level 2, official. See docs. */
37
+ --primary-invert-border: #9ca3af;
38
+ --secondary-border: #d1d5db;
39
+ --muted-border: #f3f4f6;
40
+ --selected-border: #1f2937;
41
+ --info-border: #0369a1;
42
+ --success-border: #4d7c0f;
43
+ --warning-border: #c2410c;
44
+ --danger-border: #bc0126;
45
+ --brand-50: var(--theme-brand-50);
46
+ --brand-200: var(--theme-brand-200);
47
+ --brand-800: var(--theme-brand-800);
48
+ --brand-950: var(--theme-brand-950);
49
+ --brand-500-primary: var(--theme-brand-500-primary);
50
+ --focus: #d1d5db; /** Focus ring */
51
+ --focus-error: #f699ac; /** Focus ring error */
52
+ --glass-20-bg: rgb(255 255 255 / 0.2);
53
+ --glass-40-bg: rgb(255 255 255 / 0.4);
54
+ --glass-60-bg: rgb(255 255 255 / 0.6);
55
+ --glass-none-bg: var(--primary-bg);
56
+ --chart-blue: #60a5fa;
57
+ --chart-blue-subtle: #bfdbfe;
58
+ --chart-emerald: #34d399;
59
+ --chart-emerald-subtle: #a7f3d0;
60
+ --chart-amber: #fbbf24;
61
+ --chart-amber-subtle: #fde68a;
62
+ --chart-red: #f26783;
63
+ --chart-red-subtle: #fbccd6;
64
+ --chart-purple: #c084fc;
65
+ --chart-purple-subtle: #e9d5ff;
66
+ --chart-lime: #a3e635;
67
+ --chart-lime-subtle: #d9f99d;
68
+ --chart-indigo: #818cf8;
69
+ --chart-indigo-subtle: #c7d2fe;
70
+ --chart-orange: #fb923c;
71
+ --chart-orange-subtle: #fed7aa;
72
+ --chart-1: #f54a00;
73
+ --chart-2: #009689;
74
+ --chart-3: #104e64;
75
+ --chart-4: #ffb900;
76
+ --chart-5: #fe9a00;
77
+ --brand-700: var(--theme-brand-700);
101
78
  }
@@ -4,11 +4,8 @@
4
4
  */
5
5
 
6
6
  :root {
7
- --shadow-2xs: 0 1px 0 0 rgb(31 40 50 / 0);
8
- --shadow-xs: 0 1px 2px 0 rgb(31 40 50 / 0);
9
- --shadow-sm: 0 1px 3px 0 rgb(31 40 50 / 0.1), 0 1px 2px -1px rgb(31 40 50 / 0.1);
10
- --shadow-md: 0 4px 6px -1px rgb(31 40 50 / 0.1), 0 2px 4px -2px rgb(31 40 50 / 0.1);
11
- --shadow-lg: 0 10px 15px -3px rgb(31 40 50 / 0.1), 0 4px 6px -4px rgb(31 40 50 / 0.1);
12
- --shadow-xl: 0 20px 25px -5px rgb(31 40 50 / 0.1), 0 8px 10px -6px rgb(31 40 50 / 0.1);
13
- --shadow-2xl: 0 25px 50px -12px rgb(31 40 50 / 0.1);
7
+ --shadow-sm: 0 1px 3px 0 rgb(31 40 50 / 0.1);
8
+ --shadow-md: 0 4px 6px -1px rgb(31 40 50 / 0.1);
9
+ --shadow-lg: 0 10px 15px -3px rgb(31 40 50 / 0.1);
10
+ --shadow-xl: 0 20px 25px -5px rgb(31 40 50 / 0.1);
14
11
  }
@@ -4,41 +4,21 @@
4
4
  */
5
5
 
6
6
  :root {
7
- --spacing-0: 0;
8
- --spacing-1: 4px;
9
- --spacing-2: 8px;
10
- --spacing-3: 12px;
11
- --spacing-4: 16px;
12
- --spacing-5: 20px;
13
- --spacing-6: 24px;
14
- --spacing-7: 28px;
15
- --spacing-8: 32px;
16
- --spacing-9: 36px;
17
- --spacing-10: 40px;
18
- --spacing-11: 44px;
19
- --spacing-12: 48px;
20
- --spacing-14: 56px;
21
- --spacing-16: 64px;
22
- --spacing-20: 80px;
23
- --spacing-24: 96px;
24
- --spacing-28: 112px;
25
- --spacing-32: 128px;
26
- --spacing-36: 144px;
27
- --spacing-40: 160px;
28
- --spacing-44: 176px;
29
- --spacing-48: 192px;
30
- --spacing-52: 208px;
31
- --spacing-56: 224px;
32
- --spacing-60: 240px;
33
- --spacing-64: 256px;
34
- --spacing-72: 288px;
35
- --spacing-80: 320px;
36
- --spacing-96: 384px;
37
- --spacing-0-5: 2px;
38
- --spacing-0-75: 3px;
39
- --spacing-1-25: 5px;
40
- --spacing-1-5: 6px;
41
- --spacing-2-5: 10px;
42
- --spacing-3-5: 14px;
43
- --spacing-infinite: 9999px;
7
+ --space-0: 0;
8
+ --space-2: 2px;
9
+ --space-4: 4px;
10
+ --space-8: 8px;
11
+ --space-12: 12px;
12
+ --space-16: 16px;
13
+ --space-20: 20px;
14
+ --space-24: 24px;
15
+ --space-32: 32px;
16
+ --space-40: 40px;
17
+ --space-48: 48px;
18
+ --space-56: 56px;
19
+ --space-64: 64px;
20
+ --space-80: 80px;
21
+ --space-96: 96px;
22
+ --space-128: 128px;
23
+ --space-256: 256px;
44
24
  }
@@ -4,32 +4,10 @@
4
4
  */
5
5
 
6
6
  .theme-bodhi {
7
- --brand-neutrals-50: #f9fafb;
8
- --brand-neutrals-100: #f3f4f6;
9
- --brand-neutrals-200: #e5e7eb;
10
- --brand-neutrals-300: #d1d5db;
11
- --brand-neutrals-400: #9ca3af;
12
- --brand-neutrals-500: #6b7280;
13
- --brand-neutrals-600: #4b5563;
14
- --brand-neutrals-700: #374151;
15
- --brand-neutrals-800: #1f2937;
16
- --brand-neutrals-900: #111827;
17
- --brand-neutrals-950: #030712;
18
- --brand-shades-50: #eff6ff;
19
- --brand-shades-100: #dbeafe;
20
- --brand-shades-200: #bfdbfe;
21
- --brand-shades-300: #93c5fd;
22
- --brand-shades-400: #60a5fa;
23
- --brand-shades-500: #3b82f6;
24
- --brand-shades-600: #2563eb;
25
- --brand-shades-700: #1d4ed8;
26
- --brand-shades-800: #1e40af;
27
- --brand-shades-900: #1e3a8a;
28
- --brand-shades-950: #172554;
29
- --brand-combinations-1-brand-foreground: #ffffff;
30
- --brand-combinations-1-brand: var(--brand-shades-500);
31
- --brand-combinations-2-brand: var(--brand-shades-200);
32
- --brand-combinations-2-brand-foreground: var(--brand-shades-800);
33
- --brand-combinations-3-brand: var(--brand-shades-950);
34
- --brand-combinations-3-brand-foreground: var(--brand-shades-300);
7
+ --theme-brand-50: #eff6ff;
8
+ --theme-brand-200: #bfdbfe;
9
+ --theme-brand-800: #1e40af;
10
+ --theme-brand-950: #172554;
11
+ --theme-brand-500-primary: #3b82f6;
12
+ --theme-brand-700: #1d4ed8; /* code-only stop, not in Figma yet */
35
13
  }
@@ -3,33 +3,12 @@
3
3
  * Re-run `pnpm tokens:css` after re-exporting tokens from Figma.
4
4
  */
5
5
 
6
+ :root,
6
7
  .theme-slingshot {
7
- --brand-neutrals-50: #f9fafb;
8
- --brand-neutrals-100: #f3f4f6;
9
- --brand-neutrals-200: #e5e7eb;
10
- --brand-neutrals-300: #d1d5db;
11
- --brand-neutrals-400: #9ca3af;
12
- --brand-neutrals-500: #6b7280;
13
- --brand-neutrals-600: #4b5563;
14
- --brand-neutrals-700: #374151;
15
- --brand-neutrals-800: #1f2937;
16
- --brand-neutrals-900: #111827;
17
- --brand-neutrals-950: #030712;
18
- --brand-shades-50: #fef2f5;
19
- --brand-shades-100: #fde6ea;
20
- --brand-shades-200: #fbccd6;
21
- --brand-shades-300: #f699ac;
22
- --brand-shades-400: #f26783;
23
- --brand-shades-500: #e90130;
24
- --brand-shades-600: #d2012b;
25
- --brand-shades-700: #bc0126;
26
- --brand-shades-800: #8d011d;
27
- --brand-shades-900: #6c0016;
28
- --brand-shades-950: #3d000d;
29
- --brand-combinations-1-brand-foreground: #ffffff;
30
- --brand-combinations-1-brand: var(--brand-shades-500);
31
- --brand-combinations-2-brand: var(--brand-shades-200);
32
- --brand-combinations-2-brand-foreground: var(--brand-shades-800);
33
- --brand-combinations-3-brand: var(--brand-shades-950);
34
- --brand-combinations-3-brand-foreground: var(--brand-shades-300);
8
+ --theme-brand-50: #fef2f5;
9
+ --theme-brand-200: #fbccd6;
10
+ --theme-brand-800: #8d011d;
11
+ --theme-brand-950: #3d000d;
12
+ --theme-brand-500-primary: #e90130;
13
+ --theme-brand-700: #bc0126; /* code-only stop, not in Figma yet */
35
14
  }
@@ -4,32 +4,10 @@
4
4
  */
5
5
 
6
6
  .theme-sustain {
7
- --brand-neutrals-50: #f9fafb;
8
- --brand-neutrals-100: #f3f4f6;
9
- --brand-neutrals-200: #e5e7eb;
10
- --brand-neutrals-300: #d1d5db;
11
- --brand-neutrals-400: #9ca3af;
12
- --brand-neutrals-500: #6b7280;
13
- --brand-neutrals-600: #4b5563;
14
- --brand-neutrals-700: #374151;
15
- --brand-neutrals-800: #1f2937;
16
- --brand-neutrals-900: #111827;
17
- --brand-neutrals-950: #030712;
18
- --brand-shades-50: #eef2ff;
19
- --brand-shades-100: #e0e7ff;
20
- --brand-shades-200: #c7d2fe;
21
- --brand-shades-300: #a5b4fc;
22
- --brand-shades-400: #818cf8;
23
- --brand-shades-500: #6366f1;
24
- --brand-shades-600: #4f46e5;
25
- --brand-shades-700: #4338ca;
26
- --brand-shades-800: #3730a3;
27
- --brand-shades-900: #312e81;
28
- --brand-shades-950: #1e1b4b;
29
- --brand-combinations-1-brand-foreground: #ffffff;
30
- --brand-combinations-1-brand: var(--brand-shades-500);
31
- --brand-combinations-2-brand: var(--brand-shades-200);
32
- --brand-combinations-2-brand-foreground: var(--brand-shades-800);
33
- --brand-combinations-3-brand: var(--brand-shades-950);
34
- --brand-combinations-3-brand-foreground: var(--brand-shades-300);
7
+ --theme-brand-50: #eef2ff;
8
+ --theme-brand-200: #c7d2fe;
9
+ --theme-brand-800: #3730a3;
10
+ --theme-brand-950: #1e1b4b;
11
+ --theme-brand-500-primary: #6366f1;
12
+ --theme-brand-700: #4338ca; /* code-only stop, not in Figma yet */
35
13
  }
@@ -85,14 +85,14 @@
85
85
  }
86
86
  /* Inline code chip (a bare <code> not inside a <pre>). */
87
87
  :not(pre) > code:not([class]):not([data-slot]) {
88
- border-radius: var(--rounded-sm);
89
- background-color: var(--muted);
88
+ border-radius: var(--rounded-4);
89
+ background-color: var(--muted-bg);
90
90
  padding: 0.125rem 0.375rem;
91
91
  }
92
92
  pre:not([class]):not([data-slot]) {
93
93
  overflow-x: auto;
94
- border-radius: var(--rounded-lg);
95
- background-color: var(--muted);
94
+ border-radius: var(--rounded-8);
95
+ background-color: var(--muted-bg);
96
96
  padding: 1rem;
97
97
  font-size: var(--paragraph-small-font-size);
98
98
  line-height: var(--paragraph-small-line-height);
@@ -105,22 +105,22 @@
105
105
 
106
106
  /* ── Blockquote ───────────────────────────────────────────── */
107
107
  blockquote:not([class]):not([data-slot]) {
108
- border-inline-start: 3px solid var(--border);
108
+ border-inline-start: 3px solid var(--primary-border);
109
109
  padding-inline-start: 1rem;
110
- color: var(--muted-foreground);
110
+ color: var(--muted-txt);
111
111
  font-style: italic;
112
112
  }
113
113
 
114
114
  /* ── Rule / media ─────────────────────────────────────────── */
115
115
  hr:not([class]):not([data-slot]) {
116
116
  border: 0;
117
- border-top: 1px solid var(--border);
117
+ border-top: 1px solid var(--primary-border);
118
118
  }
119
119
  img:not([class]):not([data-slot]),
120
120
  video:not([class]):not([data-slot]) {
121
121
  max-width: 100%;
122
122
  height: auto;
123
- border-radius: var(--rounded-lg);
123
+ border-radius: var(--rounded-8);
124
124
  }
125
125
 
126
126
  /* ── Tables ───────────────────────────────────────────────── */
@@ -130,7 +130,7 @@
130
130
  font-size: var(--paragraph-small-font-size);
131
131
  }
132
132
  :where(th, td):not([class]):not([data-slot]) {
133
- border-bottom: 1px solid var(--border);
133
+ border-bottom: 1px solid var(--primary-border);
134
134
  padding: 0.5rem 0.75rem;
135
135
  text-align: start;
136
136
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@psnext/design-system",
3
- "version": "1.5.1",
3
+ "version": "2.1.0",
4
4
  "description": "Sapient AI Products design system — primitives, patterns, and layouts.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,
@@ -55,9 +55,15 @@
55
55
  "sideEffects": [
56
56
  "**/*.css"
57
57
  ],
58
+ "bin": {
59
+ "psnext-design-system": "./bin/install-agent-skill.mjs"
60
+ },
58
61
  "files": [
59
62
  "dist",
60
- "README.md"
63
+ "bin",
64
+ "README.md",
65
+ "DESIGN.md",
66
+ "SKILL.md"
61
67
  ],
62
68
  "publishConfig": {
63
69
  "access": "public",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index44.d.cts","names":[],"sources":["../src/primitives/Pagination/Pagination.tsx"],"mappings":";;;;;;iBAOS,UAAA;;;GAAoC,KAAA,CAAM,wBAAqB,oBAAA,CAAA,GAAA,CAAA;;AAJN,iBAiBzD,iBAAA,CAbU;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAaiC,KAAA,CAAM,cAbvC,CAAA,IAAA,CAAA,CAAA,EAa2D,oBAAA,CAAA,GAAA,CAAA,OAb3D;;iBAwBV,cAAA,CAxBa;EAAA,GAAA;AAAA,CAAA,EAwBgB,KAAA,CAAM,cAxBtB,CAAA,IAAA,CAAA,CAAA,EAwB0C,oBAAA,CAAA,GAAA,CAAA,OAxB1C;KA4BjB,mBAAA,GA5B8C;;EAAqB,QAAA,CAAA,EAAA,OAAA;AAAA,CAAA,GA+BpE,IAlBK,CAkBA,KAAA,CAAM,cAlBW,CAAA,OAkBW,MAlBX,CAAA,EAAA,MAAA,CAAA,GAmBxB,KAAA,CAAM,cAnBkB,CAAA,GAAA,CAAA;;iBAsBjB,cAAA,CAtBoB;EAAA,SAAA;EAAA,QAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAsB6C,mBAtB7C,CAAA,EAsBgE,oBAAA,CAAA,GAAA,CAAA,OAtBhE;;iBAyCpB,kBAAA,CAzCqE;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAyCzB,KAAA,CAAM,cAzCmB,CAAA,OAyCG,cAzCH,CAAA,CAAA,EAyCkB,oBAAA,CAAA,GAAA,CAAA,OAzClB;AAAA;AAAA,iBAwDrE,cAAA,CA7Cc;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA6C0B,KAAA,CAAM,cA7ChC,CAAA,OA6CsD,cA7CtD,CAAA,CAAA,EA6CqE,oBAAA,CAAA,GAAA,CAAA,OA7CrE;;iBA4Dd,kBAAA,CA5DmC;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA4DS,KAAA,CAAM,cA5Df,CAAA,MAAA,CAAA,CAAA,EA4DqC,oBAAA,CAAA,GAAA,CAAA,OA5DrC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index44.d.ts","names":[],"sources":["../src/primitives/Pagination/Pagination.tsx"],"mappings":";;;;;;iBAOS,UAAA;;;GAAoC,KAAA,CAAM,wBAAqB,oBAAA,CAAA,GAAA,CAAA;;AAJN,iBAiBzD,iBAAA,CAbU;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAaiC,KAAA,CAAM,cAbvC,CAAA,IAAA,CAAA,CAAA,EAa2D,oBAAA,CAAA,GAAA,CAAA,OAb3D;;iBAwBV,cAAA,CAxBa;EAAA,GAAA;AAAA,CAAA,EAwBgB,KAAA,CAAM,cAxBtB,CAAA,IAAA,CAAA,CAAA,EAwB0C,oBAAA,CAAA,GAAA,CAAA,OAxB1C;KA4BjB,mBAAA,GA5B8C;;EAAqB,QAAA,CAAA,EAAA,OAAA;AAAA,CAAA,GA+BpE,IAlBK,CAkBA,KAAA,CAAM,cAlBW,CAAA,OAkBW,MAlBX,CAAA,EAAA,MAAA,CAAA,GAmBxB,KAAA,CAAM,cAnBkB,CAAA,GAAA,CAAA;;iBAsBjB,cAAA,CAtBoB;EAAA,SAAA;EAAA,QAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAsB6C,mBAtB7C,CAAA,EAsBgE,oBAAA,CAAA,GAAA,CAAA,OAtBhE;;iBAyCpB,kBAAA,CAzCqE;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAyCzB,KAAA,CAAM,cAzCmB,CAAA,OAyCG,cAzCH,CAAA,CAAA,EAyCkB,oBAAA,CAAA,GAAA,CAAA,OAzClB;AAAA;AAAA,iBAwDrE,cAAA,CA7Cc;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA6C0B,KAAA,CAAM,cA7ChC,CAAA,OA6CsD,cA7CtD,CAAA,CAAA,EA6CqE,oBAAA,CAAA,GAAA,CAAA,OA7CrE;;iBA4Dd,kBAAA,CA5DmC;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA4DS,KAAA,CAAM,cA5Df,CAAA,MAAA,CAAA,CAAA,EA4DqC,oBAAA,CAAA,GAAA,CAAA,OA5DrC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","names":["React","cn","Slot","Tooltip","TooltipTrigger","TooltipContent","Popover","PopoverTrigger","ChevronRightIcon","PopoverContent"],"sources":["../../../src/primitives/NavRail/NavRail.tsx"],"sourcesContent":["import { ChevronRightIcon } from \"lucide-react\";\nimport { Slot } from \"radix-ui\";\nimport * as React from \"react\";\n\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/primitives/Popover\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/primitives/Tooltip\";\nimport { cn } from \"@/utils\";\n\n// NavRail — a vertical navigation rail (the app's side nav). Four display modes:\n// icon-only (tooltips), text-only, expanded (icon + text), and expand-on-hover\n// (icon-only that widens to reveal labels on hover). Items can open a flyout\n// submenu (NavRailMenu) and the rail can show a user footer (NavRailUser).\n//\n// All items share a constant height (h-10) with the icon pinned to the left, so\n// expanding the rail just REVEALS the labels to the right — the icon never moves\n// and the row height never changes.\n//\n// LAYOUT NOTE: `expand-on-hover` changes the rail's width. To make the content\n// give up space as the rail expands (rather than overlap it), put the rail in a\n// flex row as a `shrink-0` child (it keeps its own w-14/w-56 width) next to a\n// `flex-1 min-w-0` content column — the column shrinks as the rail widens.\n\ntype NavRailMode = \"icon\" | \"text\" | \"expanded\" | \"expand-on-hover\";\n\nconst NavRailContext = React.createContext<NavRailMode>(\"icon\");\n\nconst RAIL_BY_MODE: Record<NavRailMode, string> = {\n icon: \"w-14 items-center\",\n text: \"w-56 items-stretch\",\n expanded: \"w-56 items-stretch\",\n \"expand-on-hover\": \"w-14 items-stretch transition-[width] duration-200 ease-out hover:w-56\",\n};\n\nconst ITEM_BASE =\n \"relative flex h-10 cursor-pointer items-center text-foreground outline-none transition-colors hover:bg-foreground/10 focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 data-[active=true]:bg-[var(--white)] data-[active=true]:font-medium data-[active=true]:text-[var(--brand-colors-brand-500)] data-[active=true]:hover:bg-[var(--white)] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5\";\n\nconst ITEM_BY_MODE: Record<NavRailMode, string> = {\n icon: \"w-10 justify-center rounded-full\",\n text: \"w-full justify-start gap-3 rounded-lg px-2.5\",\n expanded: \"w-full justify-start gap-3 rounded-lg px-2.5\",\n \"expand-on-hover\": \"w-full justify-start gap-3 rounded-lg px-2.5\",\n};\n\nconst ICON_BY_MODE: Record<NavRailMode, string> = {\n icon: \"flex shrink-0 items-center justify-center\",\n text: \"hidden\", // text-only mode hides the icon\n expanded: \"flex shrink-0 items-center justify-center\",\n \"expand-on-hover\": \"flex shrink-0 items-center justify-center\",\n};\n\nconst LABEL_ROW = \"min-w-0 flex-1 truncate text-left text-sm font-medium\";\nconst LABEL_BY_MODE: Record<NavRailMode, string> = {\n icon: \"sr-only\",\n text: LABEL_ROW,\n expanded: LABEL_ROW,\n // Always laid out (so the icon never reflows); revealed via opacity on hover.\n \"expand-on-hover\": cn(\n LABEL_ROW,\n \"opacity-0 transition-opacity duration-200 group-hover/nav-rail:opacity-100\",\n ),\n};\n\nconst CHEVRON_BY_MODE: Record<NavRailMode, string> = {\n // Vertically centered, overhanging the right edge (clear of the centered icon).\n icon: \"absolute top-1/2 right-[-4px] size-3 -translate-y-1/2 text-muted-foreground\",\n text: \"ml-auto size-4 shrink-0 text-muted-foreground\",\n expanded: \"ml-auto size-4 shrink-0 text-muted-foreground\",\n \"expand-on-hover\":\n \"ml-auto size-4 shrink-0 text-muted-foreground opacity-0 transition-opacity duration-200 group-hover/nav-rail:opacity-100\",\n};\n\n/** The vertical navigation rail container; sets the display `mode` for all items via context. */\nfunction NavRail({\n mode = \"icon\",\n className,\n ...props\n}: React.ComponentProps<\"nav\"> & {\n /** Display mode for the rail and its items: icon-only (tooltips), text-only, expanded (icon + text), or expand-on-hover. */\n mode?: NavRailMode;\n}) {\n return (\n <NavRailContext.Provider value={mode}>\n <nav\n data-slot=\"nav-rail\"\n data-mode={mode}\n className={cn(\n \"group/nav-rail flex flex-col gap-1 overflow-hidden rounded-2xl bg-[var(--glass-strong)] p-2 backdrop-blur-glass\",\n RAIL_BY_MODE[mode],\n className,\n )}\n {...props}\n />\n </NavRailContext.Provider>\n );\n}\n\n/** A thin divider between groups of rail items. */\nfunction NavRailSeparator({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"nav-rail-separator\"\n role=\"separator\"\n className={cn(\"my-1 h-px w-6 shrink-0 self-center bg-border\", className)}\n {...props}\n />\n );\n}\n\ntype NavRailItemProps = Omit<React.ComponentProps<\"button\">, \"aria-label\"> & {\n /** Tooltip text (icon mode) + accessible name + inline label (text/expanded). */\n label: string;\n /** Marks the item as the current page (active styling + `aria-current=\"page\"`). */\n active?: boolean;\n /** Render the child element instead of a <button> (e.g. a router link). */\n asChild?: boolean;\n /** Which side the tooltip opens on in icon mode. */\n tooltipSide?: \"top\" | \"right\" | \"bottom\" | \"left\";\n};\n\n/** A single navigation entry; an icon (as children) plus a `label`, with a tooltip in icon mode. */\nfunction NavRailItem({\n label,\n active,\n asChild = false,\n tooltipSide = \"right\",\n className,\n children,\n ...props\n}: NavRailItemProps) {\n const mode = React.useContext(NavRailContext);\n const shared = {\n \"data-slot\": \"nav-rail-item\",\n \"data-active\": active || undefined,\n \"aria-label\": label,\n \"aria-current\": active ? (\"page\" as const) : undefined,\n className: cn(ITEM_BASE, ITEM_BY_MODE[mode], className),\n ...props,\n };\n const labelEl = (\n <span data-slot=\"nav-rail-item-label\" className={LABEL_BY_MODE[mode]}>\n {label}\n </span>\n );\n\n const el = asChild ? (\n <Slot.Root {...shared}>\n <Slot.Slottable>{children}</Slot.Slottable>\n {labelEl}\n </Slot.Root>\n ) : (\n <button type=\"button\" {...shared}>\n <span data-slot=\"nav-rail-item-icon\" className={ICON_BY_MODE[mode]}>\n {children}\n </span>\n {labelEl}\n </button>\n );\n\n if (mode !== \"icon\") return el;\n return (\n <Tooltip>\n <TooltipTrigger asChild>{el}</TooltipTrigger>\n <TooltipContent side={tooltipSide}>{label}</TooltipContent>\n </Tooltip>\n );\n}\n\n// ── User footer ─────────────────────────────────────────────────────────────\n\ntype NavRailUserProps = React.ComponentProps<\"div\"> & {\n /** The avatar element (e.g. an <Avatar />). */\n avatar: React.ReactNode;\n /** The user's display name (hidden in icon mode). */\n name: React.ReactNode;\n /** The user's secondary line, e.g. email (hidden in icon mode). */\n email: React.ReactNode;\n};\n\n/** The footer slot of the rail showing the signed-in user (avatar + name + email). */\nfunction NavRailUser({ avatar, name, email, className, ...props }: NavRailUserProps) {\n const mode = React.useContext(NavRailContext);\n const detailsHidden = mode === \"icon\";\n return (\n <div\n data-slot=\"nav-rail-user\"\n className={cn(\"mt-auto flex h-12 w-full items-center rounded-lg\", className)}\n {...props}\n >\n {/* Fixed w-10 slot centers any avatar on the same axis as the icon column,\n so it never shifts between modes regardless of avatar size. */}\n <span\n data-slot=\"nav-rail-user-avatar\"\n className=\"flex w-10 shrink-0 items-center justify-center\"\n >\n {avatar}\n </span>\n <div\n data-slot=\"nav-rail-user-details\"\n className={cn(\n \"flex min-w-0 flex-1 flex-col justify-center text-left leading-tight\",\n detailsHidden && \"sr-only\",\n mode === \"expand-on-hover\" &&\n \"opacity-0 transition-opacity duration-200 group-hover/nav-rail:opacity-100\",\n )}\n >\n <span className=\"truncate text-sm font-medium\">{name}</span>\n <span className=\"truncate text-xs text-muted-foreground\">{email}</span>\n </div>\n </div>\n );\n}\n\n// ── Flyout submenu ──────────────────────────────────────────────────────────\n\n/** Root for a rail item that opens a flyout submenu (wraps Popover). */\nfunction NavRailMenu(props: React.ComponentProps<typeof Popover>) {\n return <Popover {...props} />;\n}\n\ntype NavRailMenuTriggerProps = Omit<React.ComponentProps<\"button\">, \"aria-label\"> & {\n /** Tooltip/accessible name + inline label for the trigger item. */\n label: string;\n /** Marks the trigger as active (current section) styling. */\n active?: boolean;\n};\n\n/** The rail item that opens its flyout submenu; renders a chevron affordance. */\nfunction NavRailMenuTrigger({\n label,\n active,\n className,\n children,\n ...props\n}: NavRailMenuTriggerProps) {\n const mode = React.useContext(NavRailContext);\n return (\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n data-slot=\"nav-rail-menu-trigger\"\n data-active={active || undefined}\n aria-label={label}\n className={cn(ITEM_BASE, ITEM_BY_MODE[mode], className)}\n {...props}\n >\n <span data-slot=\"nav-rail-item-icon\" className={ICON_BY_MODE[mode]}>\n {children}\n </span>\n <span data-slot=\"nav-rail-item-label\" className={LABEL_BY_MODE[mode]}>\n {label}\n </span>\n <ChevronRightIcon aria-hidden className={CHEVRON_BY_MODE[mode]} />\n </button>\n </PopoverTrigger>\n );\n}\n\n/** The glass flyout panel that holds the submenu items (portalled Popover content). */\nfunction NavRailMenuContent({\n className,\n side = \"right\",\n align = \"start\",\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof PopoverContent>) {\n return (\n <PopoverContent\n data-slot=\"nav-rail-menu-content\"\n side={side}\n align={align}\n sideOffset={sideOffset}\n // Glass flyout (matches the prototype sub-nav): translucent + blurred,\n // 16px radius, hairline border, soft shadow. Tokens, not prototype code.\n className={cn(\n \"flex w-[180px] flex-col gap-0.5 rounded-2xl border border-border bg-[var(--glass-subtle)] p-1.5 text-foreground shadow-sm backdrop-blur-glass\",\n className,\n )}\n {...props}\n />\n );\n}\n\ntype NavRailMenuItemProps = React.ComponentProps<\"button\"> & {\n /** Marks the entry as the current page (active styling + `aria-current=\"page\"`). */\n active?: boolean;\n /** Render the child element instead of a <button> (e.g. a router link). */\n asChild?: boolean;\n};\n\n/** A single entry inside a NavRail flyout submenu. */\nfunction NavRailMenuItem({ className, active, asChild = false, ...props }: NavRailMenuItemProps) {\n const Comp = asChild ? Slot.Root : \"button\";\n return (\n <Comp\n data-slot=\"nav-rail-menu-item\"\n data-active={active || undefined}\n aria-current={active ? \"page\" : undefined}\n className={cn(\n \"flex w-full cursor-pointer items-center gap-2.5 rounded-lg px-3 py-2 text-left text-sm text-foreground outline-none transition-colors\",\n \"hover:bg-foreground/10 focus-visible:bg-foreground/10\",\n \"data-[active=true]:bg-[var(--white)] data-[active=true]:font-medium data-[active=true]:text-[var(--brand-colors-brand-500)] data-[active=true]:hover:bg-[var(--white)]\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...(asChild ? {} : { type: \"button\" as const })}\n {...props}\n />\n );\n}\n\nexport {\n NavRail,\n NavRailItem,\n NavRailUser,\n NavRailSeparator,\n NavRailMenu,\n NavRailMenuTrigger,\n NavRailMenuContent,\n NavRailMenuItem,\n type NavRailMode,\n type NavRailItemProps,\n type NavRailUserProps,\n type NavRailMenuTriggerProps,\n type NavRailMenuItemProps,\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["Tooltip","Popover"],"sources":["../../../src/primitives/NavRail/NavRail.tsx"],"sourcesContent":["import { ChevronRightIcon } from \"lucide-react\";\nimport { Slot } from \"radix-ui\";\nimport * as React from \"react\";\n\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/primitives/Popover\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/primitives/Tooltip\";\nimport { cn } from \"@/utils\";\n\n// NavRail — a vertical navigation rail (the app's side nav). Four display modes:\n// icon-only (tooltips), text-only, expanded (icon + text), and expand-on-hover\n// (icon-only that widens to reveal labels on hover). Items can open a flyout\n// submenu (NavRailMenu) and the rail can show a user footer (NavRailUser).\n//\n// All items share a constant height (h-10) with the icon pinned to the left, so\n// expanding the rail just REVEALS the labels to the right — the icon never moves\n// and the row height never changes.\n//\n// LAYOUT NOTE: `expand-on-hover` changes the rail's width. To make the content\n// give up space as the rail expands (rather than overlap it), put the rail in a\n// flex row as a `shrink-0` child (it keeps its own w-14/w-56 width) next to a\n// `flex-1 min-w-0` content column — the column shrinks as the rail widens.\n\ntype NavRailMode = \"icon\" | \"text\" | \"expanded\" | \"expand-on-hover\";\n\nconst NavRailContext = React.createContext<NavRailMode>(\"icon\");\n\nconst RAIL_BY_MODE: Record<NavRailMode, string> = {\n icon: \"w-14 items-center\",\n text: \"w-56 items-stretch\",\n expanded: \"w-56 items-stretch\",\n \"expand-on-hover\": \"w-14 items-stretch transition-[width] duration-200 ease-out hover:w-56\",\n};\n\nconst ITEM_BASE =\n \"relative flex h-10 cursor-pointer items-center text-foreground outline-none transition-colors hover:bg-foreground/10 focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 data-[active=true]:bg-[var(--white)] data-[active=true]:font-medium data-[active=true]:text-[var(--brand-colors-brand-500)] data-[active=true]:hover:bg-[var(--white)] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-5\";\n\nconst ITEM_BY_MODE: Record<NavRailMode, string> = {\n icon: \"w-10 justify-center rounded-full\",\n text: \"w-full justify-start gap-3 rounded-lg px-2.5\",\n expanded: \"w-full justify-start gap-3 rounded-lg px-2.5\",\n \"expand-on-hover\": \"w-full justify-start gap-3 rounded-lg px-2.5\",\n};\n\nconst ICON_BY_MODE: Record<NavRailMode, string> = {\n icon: \"flex shrink-0 items-center justify-center\",\n text: \"hidden\", // text-only mode hides the icon\n expanded: \"flex shrink-0 items-center justify-center\",\n \"expand-on-hover\": \"flex shrink-0 items-center justify-center\",\n};\n\nconst LABEL_ROW = \"min-w-0 flex-1 truncate text-left text-sm font-medium\";\nconst LABEL_BY_MODE: Record<NavRailMode, string> = {\n icon: \"sr-only\",\n text: LABEL_ROW,\n expanded: LABEL_ROW,\n // Always laid out (so the icon never reflows); revealed via opacity on hover.\n \"expand-on-hover\": cn(\n LABEL_ROW,\n \"opacity-0 transition-opacity duration-200 group-hover/nav-rail:opacity-100\",\n ),\n};\n\nconst CHEVRON_BY_MODE: Record<NavRailMode, string> = {\n // Vertically centered, overhanging the right edge (clear of the centered icon).\n icon: \"absolute top-1/2 right-[-4px] size-3 -translate-y-1/2 text-muted-foreground\",\n text: \"ml-auto size-4 shrink-0 text-muted-foreground\",\n expanded: \"ml-auto size-4 shrink-0 text-muted-foreground\",\n \"expand-on-hover\":\n \"ml-auto size-4 shrink-0 text-muted-foreground opacity-0 transition-opacity duration-200 group-hover/nav-rail:opacity-100\",\n};\n\n/** The vertical navigation rail container; sets the display `mode` for all items via context. */\nfunction NavRail({\n mode = \"icon\",\n className,\n ...props\n}: React.ComponentProps<\"nav\"> & {\n /** Display mode for the rail and its items: icon-only (tooltips), text-only, expanded (icon + text), or expand-on-hover. */\n mode?: NavRailMode;\n}) {\n return (\n <NavRailContext.Provider value={mode}>\n <nav\n data-slot=\"nav-rail\"\n data-mode={mode}\n className={cn(\n \"group/nav-rail flex flex-col gap-1 overflow-hidden rounded-2xl bg-[var(--glass-strong)] p-2 backdrop-blur-glass\",\n RAIL_BY_MODE[mode],\n className,\n )}\n {...props}\n />\n </NavRailContext.Provider>\n );\n}\n\n/** A thin divider between groups of rail items. */\nfunction NavRailSeparator({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"nav-rail-separator\"\n role=\"separator\"\n className={cn(\"my-1 h-px w-6 shrink-0 self-center bg-border\", className)}\n {...props}\n />\n );\n}\n\ntype NavRailItemProps = Omit<React.ComponentProps<\"button\">, \"aria-label\"> & {\n /** Tooltip text (icon mode) + accessible name + inline label (text/expanded). */\n label: string;\n /** Marks the item as the current page (active styling + `aria-current=\"page\"`). */\n active?: boolean;\n /** Render the child element instead of a <button> (e.g. a router link). */\n asChild?: boolean;\n /** Which side the tooltip opens on in icon mode. */\n tooltipSide?: \"top\" | \"right\" | \"bottom\" | \"left\";\n};\n\n/** A single navigation entry; an icon (as children) plus a `label`, with a tooltip in icon mode. */\nfunction NavRailItem({\n label,\n active,\n asChild = false,\n tooltipSide = \"right\",\n className,\n children,\n ...props\n}: NavRailItemProps) {\n const mode = React.useContext(NavRailContext);\n const shared = {\n \"data-slot\": \"nav-rail-item\",\n \"data-active\": active || undefined,\n \"aria-label\": label,\n \"aria-current\": active ? (\"page\" as const) : undefined,\n className: cn(ITEM_BASE, ITEM_BY_MODE[mode], className),\n ...props,\n };\n const labelEl = (\n <span data-slot=\"nav-rail-item-label\" className={LABEL_BY_MODE[mode]}>\n {label}\n </span>\n );\n\n const el = asChild ? (\n <Slot.Root {...shared}>\n <Slot.Slottable>{children}</Slot.Slottable>\n {labelEl}\n </Slot.Root>\n ) : (\n <button type=\"button\" {...shared}>\n <span data-slot=\"nav-rail-item-icon\" className={ICON_BY_MODE[mode]}>\n {children}\n </span>\n {labelEl}\n </button>\n );\n\n if (mode !== \"icon\") return el;\n return (\n <Tooltip>\n <TooltipTrigger asChild>{el}</TooltipTrigger>\n <TooltipContent side={tooltipSide}>{label}</TooltipContent>\n </Tooltip>\n );\n}\n\n// ── User footer ─────────────────────────────────────────────────────────────\n\ntype NavRailUserProps = React.ComponentProps<\"div\"> & {\n /** The avatar element (e.g. an <Avatar />). */\n avatar: React.ReactNode;\n /** The user's display name (hidden in icon mode). */\n name: React.ReactNode;\n /** The user's secondary line, e.g. email (hidden in icon mode). */\n email: React.ReactNode;\n};\n\n/** The footer slot of the rail showing the signed-in user (avatar + name + email). */\nfunction NavRailUser({ avatar, name, email, className, ...props }: NavRailUserProps) {\n const mode = React.useContext(NavRailContext);\n const detailsHidden = mode === \"icon\";\n return (\n <div\n data-slot=\"nav-rail-user\"\n className={cn(\"mt-auto flex h-12 w-full items-center rounded-lg\", className)}\n {...props}\n >\n {/* Fixed w-10 slot centers any avatar on the same axis as the icon column,\n so it never shifts between modes regardless of avatar size. */}\n <span\n data-slot=\"nav-rail-user-avatar\"\n className=\"flex w-10 shrink-0 items-center justify-center\"\n >\n {avatar}\n </span>\n <div\n data-slot=\"nav-rail-user-details\"\n className={cn(\n \"flex min-w-0 flex-1 flex-col justify-center text-left leading-tight\",\n detailsHidden && \"sr-only\",\n mode === \"expand-on-hover\" &&\n \"opacity-0 transition-opacity duration-200 group-hover/nav-rail:opacity-100\",\n )}\n >\n <span className=\"truncate text-sm font-medium\">{name}</span>\n <span className=\"truncate text-xs text-muted-foreground\">{email}</span>\n </div>\n </div>\n );\n}\n\n// ── Flyout submenu ──────────────────────────────────────────────────────────\n\n/** Root for a rail item that opens a flyout submenu (wraps Popover). */\nfunction NavRailMenu(props: React.ComponentProps<typeof Popover>) {\n return <Popover {...props} />;\n}\n\ntype NavRailMenuTriggerProps = Omit<React.ComponentProps<\"button\">, \"aria-label\"> & {\n /** Tooltip/accessible name + inline label for the trigger item. */\n label: string;\n /** Marks the trigger as active (current section) styling. */\n active?: boolean;\n};\n\n/** The rail item that opens its flyout submenu; renders a chevron affordance. */\nfunction NavRailMenuTrigger({\n label,\n active,\n className,\n children,\n ...props\n}: NavRailMenuTriggerProps) {\n const mode = React.useContext(NavRailContext);\n return (\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n data-slot=\"nav-rail-menu-trigger\"\n data-active={active || undefined}\n aria-label={label}\n className={cn(ITEM_BASE, ITEM_BY_MODE[mode], className)}\n {...props}\n >\n <span data-slot=\"nav-rail-item-icon\" className={ICON_BY_MODE[mode]}>\n {children}\n </span>\n <span data-slot=\"nav-rail-item-label\" className={LABEL_BY_MODE[mode]}>\n {label}\n </span>\n <ChevronRightIcon aria-hidden className={CHEVRON_BY_MODE[mode]} />\n </button>\n </PopoverTrigger>\n );\n}\n\n/** The glass flyout panel that holds the submenu items (portalled Popover content). */\nfunction NavRailMenuContent({\n className,\n side = \"right\",\n align = \"start\",\n sideOffset = 8,\n ...props\n}: React.ComponentProps<typeof PopoverContent>) {\n return (\n <PopoverContent\n data-slot=\"nav-rail-menu-content\"\n side={side}\n align={align}\n sideOffset={sideOffset}\n // Glass flyout (matches the prototype sub-nav): translucent + blurred,\n // 16px radius, hairline border, soft shadow. Tokens, not prototype code.\n className={cn(\n \"flex w-[180px] flex-col gap-0.5 rounded-2xl border border-border bg-[var(--glass-subtle)] p-1.5 text-foreground shadow-sm backdrop-blur-glass\",\n className,\n )}\n {...props}\n />\n );\n}\n\ntype NavRailMenuItemProps = React.ComponentProps<\"button\"> & {\n /** Marks the entry as the current page (active styling + `aria-current=\"page\"`). */\n active?: boolean;\n /** Render the child element instead of a <button> (e.g. a router link). */\n asChild?: boolean;\n};\n\n/** A single entry inside a NavRail flyout submenu. */\nfunction NavRailMenuItem({ className, active, asChild = false, ...props }: NavRailMenuItemProps) {\n const Comp = asChild ? Slot.Root : \"button\";\n return (\n <Comp\n data-slot=\"nav-rail-menu-item\"\n data-active={active || undefined}\n aria-current={active ? \"page\" : undefined}\n className={cn(\n \"flex w-full cursor-pointer items-center gap-2.5 rounded-lg px-3 py-2 text-left text-sm text-foreground outline-none transition-colors\",\n \"hover:bg-foreground/10 focus-visible:bg-foreground/10\",\n \"data-[active=true]:bg-[var(--white)] data-[active=true]:font-medium data-[active=true]:text-[var(--brand-colors-brand-500)] data-[active=true]:hover:bg-[var(--white)]\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...(asChild ? {} : { type: \"button\" as const })}\n {...props}\n />\n );\n}\n\nexport {\n NavRail,\n NavRailItem,\n NavRailUser,\n NavRailSeparator,\n NavRailMenu,\n NavRailMenuTrigger,\n NavRailMenuContent,\n NavRailMenuItem,\n type NavRailMode,\n type NavRailItemProps,\n type NavRailUserProps,\n type NavRailMenuTriggerProps,\n type NavRailMenuItemProps,\n};\n"],"mappings":"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"}