@psnext/design-system 1.5.1 → 2.0.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 (647) 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 +25 -25
  6. package/dist/Header.cjs.map +1 -1
  7. package/dist/Header.js +25 -25
  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 +7 -7
  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/index25.d.ts.map +1 -1
  92. package/dist/index26.d.cts +14 -14
  93. package/dist/index26.d.cts.map +1 -1
  94. package/dist/index26.d.ts +14 -14
  95. package/dist/index26.d.ts.map +1 -1
  96. package/dist/index27.d.cts +7 -7
  97. package/dist/index27.d.ts +7 -7
  98. package/dist/index27.d.ts.map +1 -1
  99. package/dist/index28.d.cts +6 -6
  100. package/dist/index28.d.ts +5 -5
  101. package/dist/index28.d.ts.map +1 -1
  102. package/dist/index29.d.cts +4 -4
  103. package/dist/index29.d.ts +4 -4
  104. package/dist/index29.d.ts.map +1 -1
  105. package/dist/index3.d.cts +13 -13
  106. package/dist/index3.d.cts.map +1 -1
  107. package/dist/index3.d.ts +13 -13
  108. package/dist/index3.d.ts.map +1 -1
  109. package/dist/index30.d.cts +6 -6
  110. package/dist/index30.d.ts +4 -4
  111. package/dist/index31.d.cts +4 -4
  112. package/dist/index31.d.cts.map +1 -1
  113. package/dist/index31.d.ts +4 -4
  114. package/dist/index31.d.ts.map +1 -1
  115. package/dist/index32.d.cts +8 -5
  116. package/dist/index32.d.cts.map +1 -1
  117. package/dist/index32.d.ts +9 -6
  118. package/dist/index32.d.ts.map +1 -1
  119. package/dist/index33.d.cts +14 -10
  120. package/dist/index33.d.cts.map +1 -1
  121. package/dist/index33.d.ts +15 -11
  122. package/dist/index33.d.ts.map +1 -1
  123. package/dist/index34.d.cts +5 -5
  124. package/dist/index34.d.ts +5 -5
  125. package/dist/index34.d.ts.map +1 -1
  126. package/dist/index35.d.cts +14 -14
  127. package/dist/index35.d.ts +14 -14
  128. package/dist/index35.d.ts.map +1 -1
  129. package/dist/index36.d.cts +3 -3
  130. package/dist/index36.d.cts.map +1 -1
  131. package/dist/index36.d.ts +3 -3
  132. package/dist/index36.d.ts.map +1 -1
  133. package/dist/index37.d.cts +5 -5
  134. package/dist/index37.d.ts +4 -4
  135. package/dist/index37.d.ts.map +1 -1
  136. package/dist/index38.d.cts +2 -2
  137. package/dist/index38.d.ts +2 -2
  138. package/dist/index39.d.cts +17 -17
  139. package/dist/index39.d.cts.map +1 -1
  140. package/dist/index39.d.ts +17 -17
  141. package/dist/index39.d.ts.map +1 -1
  142. package/dist/index4.d.cts +2 -2
  143. package/dist/index4.d.cts.map +1 -1
  144. package/dist/index4.d.ts +2 -2
  145. package/dist/index4.d.ts.map +1 -1
  146. package/dist/index40.d.cts +4 -4
  147. package/dist/index40.d.cts.map +1 -1
  148. package/dist/index40.d.ts +5 -5
  149. package/dist/index40.d.ts.map +1 -1
  150. package/dist/index41.d.cts +11 -11
  151. package/dist/index41.d.cts.map +1 -1
  152. package/dist/index41.d.ts +11 -11
  153. package/dist/index41.d.ts.map +1 -1
  154. package/dist/index42.d.cts +8 -8
  155. package/dist/index42.d.cts.map +1 -1
  156. package/dist/index42.d.ts +8 -8
  157. package/dist/index42.d.ts.map +1 -1
  158. package/dist/index43.d.cts +10 -10
  159. package/dist/index43.d.cts.map +1 -1
  160. package/dist/index43.d.ts +10 -10
  161. package/dist/index43.d.ts.map +1 -1
  162. package/dist/index44.d.cts +1 -48
  163. package/dist/index44.d.ts +1 -48
  164. package/dist/index45.d.cts +42 -22
  165. package/dist/index45.d.cts.map +1 -1
  166. package/dist/index45.d.ts +42 -22
  167. package/dist/index45.d.ts.map +1 -1
  168. package/dist/index46.d.cts +21 -34
  169. package/dist/index46.d.cts.map +1 -1
  170. package/dist/index46.d.ts +21 -34
  171. package/dist/index46.d.ts.map +1 -1
  172. package/dist/index47.d.cts +33 -17
  173. package/dist/index47.d.cts.map +1 -1
  174. package/dist/index47.d.ts +33 -17
  175. package/dist/index47.d.ts.map +1 -1
  176. package/dist/index48.d.cts +18 -14
  177. package/dist/index48.d.cts.map +1 -1
  178. package/dist/index48.d.ts +18 -14
  179. package/dist/index48.d.ts.map +1 -1
  180. package/dist/index49.d.cts +12 -60
  181. package/dist/index49.d.cts.map +1 -1
  182. package/dist/index49.d.ts +12 -60
  183. package/dist/index49.d.ts.map +1 -1
  184. package/dist/index5.d.cts +7 -7
  185. package/dist/index5.d.cts.map +1 -1
  186. package/dist/index5.d.ts +7 -7
  187. package/dist/index5.d.ts.map +1 -1
  188. package/dist/index50.d.cts +55 -49
  189. package/dist/index50.d.cts.map +1 -1
  190. package/dist/index50.d.ts +55 -49
  191. package/dist/index50.d.ts.map +1 -1
  192. package/dist/index51.d.cts +56 -24
  193. package/dist/index51.d.cts.map +1 -1
  194. package/dist/index51.d.ts +56 -24
  195. package/dist/index51.d.ts.map +1 -1
  196. package/dist/index52.d.cts +25 -203
  197. package/dist/index52.d.cts.map +1 -1
  198. package/dist/index52.d.ts +25 -203
  199. package/dist/index52.d.ts.map +1 -1
  200. package/dist/index53.d.cts +198 -15
  201. package/dist/index53.d.cts.map +1 -1
  202. package/dist/index53.d.ts +198 -15
  203. package/dist/index53.d.ts.map +1 -1
  204. package/dist/index54.d.cts +21 -23
  205. package/dist/index54.d.cts.map +1 -1
  206. package/dist/index54.d.ts +21 -23
  207. package/dist/index54.d.ts.map +1 -1
  208. package/dist/index55.d.cts +21 -18
  209. package/dist/index55.d.cts.map +1 -1
  210. package/dist/index55.d.ts +21 -18
  211. package/dist/index55.d.ts.map +1 -1
  212. package/dist/index56.d.cts +21 -8
  213. package/dist/index56.d.cts.map +1 -1
  214. package/dist/index56.d.ts +21 -8
  215. package/dist/index56.d.ts.map +1 -1
  216. package/dist/index57.d.cts +6 -44
  217. package/dist/index57.d.cts.map +1 -1
  218. package/dist/index57.d.ts +6 -44
  219. package/dist/index57.d.ts.map +1 -1
  220. package/dist/index58.d.cts +46 -47
  221. package/dist/index58.d.cts.map +1 -1
  222. package/dist/index58.d.ts +46 -47
  223. package/dist/index58.d.ts.map +1 -1
  224. package/dist/index59.d.cts +47 -59
  225. package/dist/index59.d.cts.map +1 -1
  226. package/dist/index59.d.ts +47 -59
  227. package/dist/index59.d.ts.map +1 -1
  228. package/dist/index6.d.cts +7 -7
  229. package/dist/index6.d.cts.map +1 -1
  230. package/dist/index6.d.ts +7 -7
  231. package/dist/index6.d.ts.map +1 -1
  232. package/dist/index60.d.cts +56 -38
  233. package/dist/index60.d.cts.map +1 -1
  234. package/dist/index60.d.ts +56 -38
  235. package/dist/index60.d.ts.map +1 -1
  236. package/dist/index61.d.cts +38 -14
  237. package/dist/index61.d.cts.map +1 -1
  238. package/dist/index61.d.ts +38 -14
  239. package/dist/index61.d.ts.map +1 -1
  240. package/dist/index62.d.cts +20 -41
  241. package/dist/index62.d.cts.map +1 -1
  242. package/dist/index62.d.ts +20 -41
  243. package/dist/index62.d.ts.map +1 -1
  244. package/dist/index63.d.cts +41 -19
  245. package/dist/index63.d.cts.map +1 -1
  246. package/dist/index63.d.ts +41 -19
  247. package/dist/index63.d.ts.map +1 -1
  248. package/dist/index64.d.cts +14 -39
  249. package/dist/index64.d.cts.map +1 -1
  250. package/dist/index64.d.ts +14 -39
  251. package/dist/index64.d.ts.map +1 -1
  252. package/dist/index65.d.cts +39 -16
  253. package/dist/index65.d.cts.map +1 -1
  254. package/dist/index65.d.ts +39 -16
  255. package/dist/index65.d.ts.map +1 -1
  256. package/dist/index66.d.cts +18 -12
  257. package/dist/index66.d.cts.map +1 -1
  258. package/dist/index66.d.ts +18 -12
  259. package/dist/index66.d.ts.map +1 -1
  260. package/dist/index67.d.cts +12 -30
  261. package/dist/index67.d.cts.map +1 -1
  262. package/dist/index67.d.ts +12 -30
  263. package/dist/index67.d.ts.map +1 -1
  264. package/dist/index68.d.cts +28 -27
  265. package/dist/index68.d.cts.map +1 -1
  266. package/dist/index68.d.ts +28 -27
  267. package/dist/index68.d.ts.map +1 -1
  268. package/dist/index69.d.cts +36 -69
  269. package/dist/index69.d.cts.map +1 -0
  270. package/dist/index69.d.ts +36 -69
  271. package/dist/index69.d.ts.map +1 -0
  272. package/dist/index7.d.cts +8 -8
  273. package/dist/index7.d.cts.map +1 -1
  274. package/dist/index7.d.ts +8 -8
  275. package/dist/index70.d.cts +76 -237
  276. package/dist/index70.d.cts.map +1 -1
  277. package/dist/index70.d.ts +76 -237
  278. package/dist/index70.d.ts.map +1 -1
  279. package/dist/index71.d.cts +242 -0
  280. package/dist/index71.d.cts.map +1 -0
  281. package/dist/index71.d.ts +242 -0
  282. package/dist/index71.d.ts.map +1 -0
  283. package/dist/index8.d.cts +4 -4
  284. package/dist/index8.d.cts.map +1 -1
  285. package/dist/index8.d.ts +4 -4
  286. package/dist/index8.d.ts.map +1 -1
  287. package/dist/index9.d.cts +2 -2
  288. package/dist/index9.d.ts +2 -2
  289. package/dist/layouts/Container/index.cjs +4 -4
  290. package/dist/layouts/Container/index.cjs.map +1 -1
  291. package/dist/layouts/Container/index.d.cts +1 -1
  292. package/dist/layouts/Container/index.d.ts +1 -1
  293. package/dist/layouts/Container/index.js +4 -4
  294. package/dist/layouts/Container/index.js.map +1 -1
  295. package/dist/layouts/PageBackground/index.cjs +2 -2
  296. package/dist/layouts/PageBackground/index.cjs.map +1 -1
  297. package/dist/layouts/PageBackground/index.d.cts +1 -1
  298. package/dist/layouts/PageBackground/index.d.ts +1 -1
  299. package/dist/layouts/PageBackground/index.js +2 -2
  300. package/dist/layouts/PageBackground/index.js.map +1 -1
  301. package/dist/layouts/Stack/index.d.cts +1 -1
  302. package/dist/layouts/Stack/index.d.ts +1 -1
  303. package/dist/layouts/TwoColumn/index.d.cts +1 -1
  304. package/dist/layouts/TwoColumn/index.d.ts +1 -1
  305. package/dist/layouts/index.d.cts +4 -4
  306. package/dist/layouts/index.d.ts +4 -4
  307. package/dist/patterns/DataTable/index.cjs +12 -7
  308. package/dist/patterns/DataTable/index.cjs.map +1 -1
  309. package/dist/patterns/DataTable/index.d.cts +3 -3
  310. package/dist/patterns/DataTable/index.d.cts.map +1 -1
  311. package/dist/patterns/DataTable/index.d.ts +3 -3
  312. package/dist/patterns/DataTable/index.d.ts.map +1 -1
  313. package/dist/patterns/DataTable/index.js +12 -7
  314. package/dist/patterns/DataTable/index.js.map +1 -1
  315. package/dist/patterns/Footer/index.cjs +5 -5
  316. package/dist/patterns/Footer/index.cjs.map +1 -1
  317. package/dist/patterns/Footer/index.d.cts +9 -9
  318. package/dist/patterns/Footer/index.d.cts.map +1 -1
  319. package/dist/patterns/Footer/index.d.ts +9 -9
  320. package/dist/patterns/Footer/index.d.ts.map +1 -1
  321. package/dist/patterns/Footer/index.js +5 -5
  322. package/dist/patterns/Footer/index.js.map +1 -1
  323. package/dist/patterns/Header/index.d.cts +1 -1
  324. package/dist/patterns/Header/index.d.ts +1 -1
  325. package/dist/patterns/MediaObject/index.cjs +1 -1
  326. package/dist/patterns/MediaObject/index.cjs.map +1 -1
  327. package/dist/patterns/MediaObject/index.d.cts +12 -12
  328. package/dist/patterns/MediaObject/index.d.cts.map +1 -1
  329. package/dist/patterns/MediaObject/index.d.ts +13 -13
  330. package/dist/patterns/MediaObject/index.d.ts.map +1 -1
  331. package/dist/patterns/MediaObject/index.js +1 -1
  332. package/dist/patterns/MediaObject/index.js.map +1 -1
  333. package/dist/patterns/NavRail/index.cjs +195 -0
  334. package/dist/patterns/NavRail/index.cjs.map +1 -0
  335. package/dist/patterns/NavRail/index.d.cts +2 -0
  336. package/dist/patterns/NavRail/index.d.ts +2 -0
  337. package/dist/patterns/NavRail/index.js +185 -0
  338. package/dist/patterns/NavRail/index.js.map +1 -0
  339. package/dist/patterns/SectionCard/index.cjs +1 -1
  340. package/dist/patterns/SectionCard/index.cjs.map +1 -1
  341. package/dist/patterns/SectionCard/index.d.cts +2 -2
  342. package/dist/patterns/SectionCard/index.d.ts +2 -2
  343. package/dist/patterns/SectionCard/index.d.ts.map +1 -1
  344. package/dist/patterns/SectionCard/index.js +1 -1
  345. package/dist/patterns/SectionCard/index.js.map +1 -1
  346. package/dist/patterns/SectionHeading/index.d.cts +2 -2
  347. package/dist/patterns/SectionHeading/index.d.cts.map +1 -1
  348. package/dist/patterns/SectionHeading/index.d.ts +2 -2
  349. package/dist/patterns/SectionHeading/index.d.ts.map +1 -1
  350. package/dist/patterns/index.cjs +9 -0
  351. package/dist/patterns/index.d.cts +3 -2
  352. package/dist/patterns/index.d.ts +3 -2
  353. package/dist/patterns/index.js +2 -1
  354. package/dist/primitives/Accordion/index.cjs +6 -6
  355. package/dist/primitives/Accordion/index.cjs.map +1 -1
  356. package/dist/primitives/Accordion/index.js +6 -6
  357. package/dist/primitives/Accordion/index.js.map +1 -1
  358. package/dist/primitives/Alert/index.cjs +4 -4
  359. package/dist/primitives/Alert/index.cjs.map +1 -1
  360. package/dist/primitives/Alert/index.js +4 -4
  361. package/dist/primitives/Alert/index.js.map +1 -1
  362. package/dist/primitives/AlertDialog/index.cjs +4 -4
  363. package/dist/primitives/AlertDialog/index.cjs.map +1 -1
  364. package/dist/primitives/AlertDialog/index.js +4 -4
  365. package/dist/primitives/AlertDialog/index.js.map +1 -1
  366. package/dist/primitives/Avatar/index.cjs +5 -5
  367. package/dist/primitives/Avatar/index.cjs.map +1 -1
  368. package/dist/primitives/Avatar/index.js +5 -5
  369. package/dist/primitives/Avatar/index.js.map +1 -1
  370. package/dist/primitives/Badge/index.cjs +11 -10
  371. package/dist/primitives/Badge/index.cjs.map +1 -1
  372. package/dist/primitives/Badge/index.js +11 -10
  373. package/dist/primitives/Badge/index.js.map +1 -1
  374. package/dist/primitives/Breadcrumb/index.cjs +4 -4
  375. package/dist/primitives/Breadcrumb/index.cjs.map +1 -1
  376. package/dist/primitives/Breadcrumb/index.js +4 -4
  377. package/dist/primitives/Breadcrumb/index.js.map +1 -1
  378. package/dist/primitives/Button/index.cjs +20 -13
  379. package/dist/primitives/Button/index.cjs.map +1 -1
  380. package/dist/primitives/Button/index.js +20 -13
  381. package/dist/primitives/Button/index.js.map +1 -1
  382. package/dist/primitives/ButtonGroup/index.cjs +3 -3
  383. package/dist/primitives/ButtonGroup/index.cjs.map +1 -1
  384. package/dist/primitives/ButtonGroup/index.js +3 -3
  385. package/dist/primitives/ButtonGroup/index.js.map +1 -1
  386. package/dist/primitives/Calendar/index.cjs +22 -21
  387. package/dist/primitives/Calendar/index.cjs.map +1 -1
  388. package/dist/primitives/Calendar/index.js +22 -21
  389. package/dist/primitives/Calendar/index.js.map +1 -1
  390. package/dist/primitives/Card/index.cjs +18 -16
  391. package/dist/primitives/Card/index.cjs.map +1 -1
  392. package/dist/primitives/Card/index.js +18 -16
  393. package/dist/primitives/Card/index.js.map +1 -1
  394. package/dist/primitives/Carousel/index.cjs +2 -2
  395. package/dist/primitives/Carousel/index.cjs.map +1 -1
  396. package/dist/primitives/Carousel/index.js +2 -2
  397. package/dist/primitives/Carousel/index.js.map +1 -1
  398. package/dist/primitives/Chart/index.cjs +12 -12
  399. package/dist/primitives/Chart/index.cjs.map +1 -1
  400. package/dist/primitives/Chart/index.js +12 -12
  401. package/dist/primitives/Chart/index.js.map +1 -1
  402. package/dist/primitives/Checkbox/index.cjs +6 -6
  403. package/dist/primitives/Checkbox/index.cjs.map +1 -1
  404. package/dist/primitives/Checkbox/index.js +6 -6
  405. package/dist/primitives/Checkbox/index.js.map +1 -1
  406. package/dist/primitives/CheckboxTree/index.cjs +2 -2
  407. package/dist/primitives/CheckboxTree/index.cjs.map +1 -1
  408. package/dist/primitives/CheckboxTree/index.js +2 -2
  409. package/dist/primitives/CheckboxTree/index.js.map +1 -1
  410. package/dist/primitives/Command/index.cjs +9 -9
  411. package/dist/primitives/Command/index.cjs.map +1 -1
  412. package/dist/primitives/Command/index.js +9 -9
  413. package/dist/primitives/Command/index.js.map +1 -1
  414. package/dist/primitives/ContextMenu/index.cjs +10 -10
  415. package/dist/primitives/ContextMenu/index.cjs.map +1 -1
  416. package/dist/primitives/ContextMenu/index.js +10 -10
  417. package/dist/primitives/ContextMenu/index.js.map +1 -1
  418. package/dist/primitives/Credits/index.cjs +4 -4
  419. package/dist/primitives/Credits/index.cjs.map +1 -1
  420. package/dist/primitives/Credits/index.js +4 -4
  421. package/dist/primitives/Credits/index.js.map +1 -1
  422. package/dist/primitives/Dialog/index.cjs +5 -5
  423. package/dist/primitives/Dialog/index.cjs.map +1 -1
  424. package/dist/primitives/Dialog/index.js +5 -5
  425. package/dist/primitives/Dialog/index.js.map +1 -1
  426. package/dist/primitives/Drawer/index.cjs +5 -5
  427. package/dist/primitives/Drawer/index.cjs.map +1 -1
  428. package/dist/primitives/Drawer/index.js +5 -5
  429. package/dist/primitives/Drawer/index.js.map +1 -1
  430. package/dist/primitives/DropdownMenu/index.cjs +9 -9
  431. package/dist/primitives/DropdownMenu/index.cjs.map +1 -1
  432. package/dist/primitives/DropdownMenu/index.js +9 -9
  433. package/dist/primitives/DropdownMenu/index.js.map +1 -1
  434. package/dist/primitives/Empty/index.cjs +4 -4
  435. package/dist/primitives/Empty/index.cjs.map +1 -1
  436. package/dist/primitives/Empty/index.js +4 -4
  437. package/dist/primitives/Empty/index.js.map +1 -1
  438. package/dist/primitives/Field/index.cjs +5 -5
  439. package/dist/primitives/Field/index.cjs.map +1 -1
  440. package/dist/primitives/Field/index.js +5 -5
  441. package/dist/primitives/Field/index.js.map +1 -1
  442. package/dist/primitives/Form/index.cjs +1 -1
  443. package/dist/primitives/Form/index.cjs.map +1 -1
  444. package/dist/primitives/Form/index.js +1 -1
  445. package/dist/primitives/Form/index.js.map +1 -1
  446. package/dist/primitives/Heading/index.cjs +2 -2
  447. package/dist/primitives/Heading/index.cjs.map +1 -1
  448. package/dist/primitives/Heading/index.js +2 -2
  449. package/dist/primitives/Heading/index.js.map +1 -1
  450. package/dist/primitives/HoverCard/index.cjs +1 -1
  451. package/dist/primitives/HoverCard/index.cjs.map +1 -1
  452. package/dist/primitives/HoverCard/index.js +1 -1
  453. package/dist/primitives/HoverCard/index.js.map +1 -1
  454. package/dist/primitives/InfoBanner/index.cjs +12 -12
  455. package/dist/primitives/InfoBanner/index.cjs.map +1 -1
  456. package/dist/primitives/InfoBanner/index.js +12 -12
  457. package/dist/primitives/InfoBanner/index.js.map +1 -1
  458. package/dist/primitives/Input/index.cjs +13 -7
  459. package/dist/primitives/Input/index.cjs.map +1 -1
  460. package/dist/primitives/Input/index.js +13 -7
  461. package/dist/primitives/Input/index.js.map +1 -1
  462. package/dist/primitives/InputGroup/index.cjs +7 -7
  463. package/dist/primitives/InputGroup/index.cjs.map +1 -1
  464. package/dist/primitives/InputGroup/index.js +7 -7
  465. package/dist/primitives/InputGroup/index.js.map +1 -1
  466. package/dist/primitives/InputOtp/index.cjs +3 -3
  467. package/dist/primitives/InputOtp/index.cjs.map +1 -1
  468. package/dist/primitives/InputOtp/index.js +3 -3
  469. package/dist/primitives/InputOtp/index.js.map +1 -1
  470. package/dist/primitives/Item/index.cjs +6 -6
  471. package/dist/primitives/Item/index.cjs.map +1 -1
  472. package/dist/primitives/Item/index.js +6 -6
  473. package/dist/primitives/Item/index.js.map +1 -1
  474. package/dist/primitives/Kbd/index.cjs +1 -1
  475. package/dist/primitives/Kbd/index.cjs.map +1 -1
  476. package/dist/primitives/Kbd/index.js +1 -1
  477. package/dist/primitives/Kbd/index.js.map +1 -1
  478. package/dist/primitives/Link/index.cjs +4 -4
  479. package/dist/primitives/Link/index.cjs.map +1 -1
  480. package/dist/primitives/Link/index.js +4 -4
  481. package/dist/primitives/Link/index.js.map +1 -1
  482. package/dist/primitives/Menubar/index.cjs +12 -12
  483. package/dist/primitives/Menubar/index.cjs.map +1 -1
  484. package/dist/primitives/Menubar/index.js +12 -12
  485. package/dist/primitives/Menubar/index.js.map +1 -1
  486. package/dist/primitives/NativeSelect/index.cjs +5 -5
  487. package/dist/primitives/NativeSelect/index.cjs.map +1 -1
  488. package/dist/primitives/NativeSelect/index.js +5 -5
  489. package/dist/primitives/NativeSelect/index.js.map +1 -1
  490. package/dist/primitives/NavRail/index.cjs +9 -194
  491. package/dist/primitives/NavRail/index.d.cts +1 -0
  492. package/dist/primitives/NavRail/index.d.ts +1 -0
  493. package/dist/primitives/NavRail/index.js +1 -184
  494. package/dist/primitives/NavigationMenu/index.cjs +7 -7
  495. package/dist/primitives/NavigationMenu/index.cjs.map +1 -1
  496. package/dist/primitives/NavigationMenu/index.js +7 -7
  497. package/dist/primitives/NavigationMenu/index.js.map +1 -1
  498. package/dist/primitives/Pagination/index.cjs +7 -13
  499. package/dist/primitives/Pagination/index.cjs.map +1 -1
  500. package/dist/primitives/Pagination/index.d.cts +1 -1
  501. package/dist/primitives/Pagination/index.d.ts +1 -1
  502. package/dist/primitives/Pagination/index.js +8 -14
  503. package/dist/primitives/Pagination/index.js.map +1 -1
  504. package/dist/primitives/Popover/index.cjs +4 -4
  505. package/dist/primitives/Popover/index.cjs.map +1 -1
  506. package/dist/primitives/Popover/index.js +4 -4
  507. package/dist/primitives/Popover/index.js.map +1 -1
  508. package/dist/primitives/Progress/index.cjs +16 -16
  509. package/dist/primitives/Progress/index.cjs.map +1 -1
  510. package/dist/primitives/Progress/index.d.cts +1 -1
  511. package/dist/primitives/Progress/index.d.ts +1 -1
  512. package/dist/primitives/Progress/index.js +16 -16
  513. package/dist/primitives/Progress/index.js.map +1 -1
  514. package/dist/primitives/RadioGroup/index.cjs +7 -7
  515. package/dist/primitives/RadioGroup/index.cjs.map +1 -1
  516. package/dist/primitives/RadioGroup/index.d.cts +1 -1
  517. package/dist/primitives/RadioGroup/index.d.ts +1 -1
  518. package/dist/primitives/RadioGroup/index.js +7 -7
  519. package/dist/primitives/RadioGroup/index.js.map +1 -1
  520. package/dist/primitives/Resizable/index.cjs +2 -2
  521. package/dist/primitives/Resizable/index.cjs.map +1 -1
  522. package/dist/primitives/Resizable/index.d.cts +1 -1
  523. package/dist/primitives/Resizable/index.d.ts +1 -1
  524. package/dist/primitives/Resizable/index.js +2 -2
  525. package/dist/primitives/Resizable/index.js.map +1 -1
  526. package/dist/primitives/ScrollArea/index.cjs +2 -2
  527. package/dist/primitives/ScrollArea/index.cjs.map +1 -1
  528. package/dist/primitives/ScrollArea/index.d.cts +1 -1
  529. package/dist/primitives/ScrollArea/index.d.ts +1 -1
  530. package/dist/primitives/ScrollArea/index.js +2 -2
  531. package/dist/primitives/ScrollArea/index.js.map +1 -1
  532. package/dist/primitives/Select/index.cjs +8 -8
  533. package/dist/primitives/Select/index.cjs.map +1 -1
  534. package/dist/primitives/Select/index.d.cts +1 -1
  535. package/dist/primitives/Select/index.d.ts +1 -1
  536. package/dist/primitives/Select/index.js +8 -8
  537. package/dist/primitives/Select/index.js.map +1 -1
  538. package/dist/primitives/Separator/index.cjs +1 -1
  539. package/dist/primitives/Separator/index.cjs.map +1 -1
  540. package/dist/primitives/Separator/index.js +1 -1
  541. package/dist/primitives/Separator/index.js.map +1 -1
  542. package/dist/primitives/Sheet/index.cjs +8 -8
  543. package/dist/primitives/Sheet/index.cjs.map +1 -1
  544. package/dist/primitives/Sheet/index.d.cts +1 -1
  545. package/dist/primitives/Sheet/index.d.ts +1 -1
  546. package/dist/primitives/Sheet/index.js +8 -8
  547. package/dist/primitives/Sheet/index.js.map +1 -1
  548. package/dist/primitives/Sidebar/index.d.cts +1 -1
  549. package/dist/primitives/Sidebar/index.d.ts +1 -1
  550. package/dist/primitives/Skeleton/index.cjs +2 -2
  551. package/dist/primitives/Skeleton/index.cjs.map +1 -1
  552. package/dist/primitives/Skeleton/index.d.cts +1 -1
  553. package/dist/primitives/Skeleton/index.d.ts +1 -1
  554. package/dist/primitives/Skeleton/index.js +2 -2
  555. package/dist/primitives/Skeleton/index.js.map +1 -1
  556. package/dist/primitives/Slider/index.cjs +3 -3
  557. package/dist/primitives/Slider/index.cjs.map +1 -1
  558. package/dist/primitives/Slider/index.d.cts +1 -1
  559. package/dist/primitives/Slider/index.d.ts +1 -1
  560. package/dist/primitives/Slider/index.js +3 -3
  561. package/dist/primitives/Slider/index.js.map +1 -1
  562. package/dist/primitives/Sonner/index.cjs +13 -6
  563. package/dist/primitives/Sonner/index.cjs.map +1 -1
  564. package/dist/primitives/Sonner/index.d.cts +1 -1
  565. package/dist/primitives/Sonner/index.d.ts +1 -1
  566. package/dist/primitives/Sonner/index.js +13 -6
  567. package/dist/primitives/Sonner/index.js.map +1 -1
  568. package/dist/primitives/Spinner/index.d.cts +1 -1
  569. package/dist/primitives/Spinner/index.d.ts +1 -1
  570. package/dist/primitives/Switch/index.cjs +7 -7
  571. package/dist/primitives/Switch/index.cjs.map +1 -1
  572. package/dist/primitives/Switch/index.d.cts +1 -1
  573. package/dist/primitives/Switch/index.d.ts +1 -1
  574. package/dist/primitives/Switch/index.js +7 -7
  575. package/dist/primitives/Switch/index.js.map +1 -1
  576. package/dist/primitives/Table/index.cjs +7 -7
  577. package/dist/primitives/Table/index.cjs.map +1 -1
  578. package/dist/primitives/Table/index.d.cts +1 -1
  579. package/dist/primitives/Table/index.d.ts +1 -1
  580. package/dist/primitives/Table/index.js +7 -7
  581. package/dist/primitives/Table/index.js.map +1 -1
  582. package/dist/primitives/Tabs/index.cjs +21 -21
  583. package/dist/primitives/Tabs/index.cjs.map +1 -1
  584. package/dist/primitives/Tabs/index.d.cts +1 -1
  585. package/dist/primitives/Tabs/index.d.ts +1 -1
  586. package/dist/primitives/Tabs/index.js +21 -21
  587. package/dist/primitives/Tabs/index.js.map +1 -1
  588. package/dist/primitives/Text/index.cjs +5 -5
  589. package/dist/primitives/Text/index.cjs.map +1 -1
  590. package/dist/primitives/Text/index.d.cts +1 -1
  591. package/dist/primitives/Text/index.d.ts +1 -1
  592. package/dist/primitives/Text/index.js +5 -5
  593. package/dist/primitives/Text/index.js.map +1 -1
  594. package/dist/primitives/Textarea/index.cjs +20 -8
  595. package/dist/primitives/Textarea/index.cjs.map +1 -1
  596. package/dist/primitives/Textarea/index.d.cts +1 -1
  597. package/dist/primitives/Textarea/index.d.ts +1 -1
  598. package/dist/primitives/Textarea/index.js +20 -8
  599. package/dist/primitives/Textarea/index.js.map +1 -1
  600. package/dist/primitives/ThemeProvider/index.d.cts +1 -1
  601. package/dist/primitives/ThemeProvider/index.d.ts +1 -1
  602. package/dist/primitives/Toggle/index.cjs +11 -10
  603. package/dist/primitives/Toggle/index.cjs.map +1 -1
  604. package/dist/primitives/Toggle/index.d.cts +1 -1
  605. package/dist/primitives/Toggle/index.d.ts +1 -1
  606. package/dist/primitives/Toggle/index.js +11 -10
  607. package/dist/primitives/Toggle/index.js.map +1 -1
  608. package/dist/primitives/ToggleGroup/index.cjs +2 -2
  609. package/dist/primitives/ToggleGroup/index.cjs.map +1 -1
  610. package/dist/primitives/ToggleGroup/index.d.cts +1 -1
  611. package/dist/primitives/ToggleGroup/index.d.ts +1 -1
  612. package/dist/primitives/ToggleGroup/index.js +2 -2
  613. package/dist/primitives/ToggleGroup/index.js.map +1 -1
  614. package/dist/primitives/Tooltip/index.cjs +2 -2
  615. package/dist/primitives/Tooltip/index.cjs.map +1 -1
  616. package/dist/primitives/Tooltip/index.d.cts +1 -1
  617. package/dist/primitives/Tooltip/index.d.ts +1 -1
  618. package/dist/primitives/Tooltip/index.js +2 -2
  619. package/dist/primitives/Tooltip/index.js.map +1 -1
  620. package/dist/primitives/index.cjs +10 -10
  621. package/dist/primitives/index.d.cts +21 -21
  622. package/dist/primitives/index.d.ts +21 -21
  623. package/dist/primitives/index.js +2 -2
  624. package/dist/styles/base.css +23 -4
  625. package/dist/styles/brand-scopes.css +49 -0
  626. package/dist/styles/glass.css +13 -8
  627. package/dist/styles/index.css +8 -9
  628. package/dist/styles/theme.css +141 -90
  629. package/dist/styles/tokens/border-radius.css +8 -8
  630. package/dist/styles/tokens/mode-dark.css +71 -94
  631. package/dist/styles/tokens/mode-light.css +71 -94
  632. package/dist/styles/tokens/shadows.css +4 -7
  633. package/dist/styles/tokens/spacing.css +17 -37
  634. package/dist/styles/tokens/theme-bodhi.css +6 -28
  635. package/dist/styles/tokens/theme-slingshot.css +7 -28
  636. package/dist/styles/tokens/theme-sustain.css +6 -28
  637. package/dist/styles/typography.css +9 -9
  638. package/package.json +8 -2
  639. package/dist/index44.d.cts.map +0 -1
  640. package/dist/index44.d.ts.map +0 -1
  641. package/dist/primitives/NavRail/index.cjs.map +0 -1
  642. package/dist/primitives/NavRail/index.js.map +0 -1
  643. package/dist/styles/semantic.css +0 -178
  644. package/dist/styles/tokens/alpha.css +0 -39
  645. package/dist/styles/tokens/chart-colors-dark.css +0 -18
  646. package/dist/styles/tokens/chart-colors-light.css +0 -18
  647. package/dist/styles/tokens/colors.css +0 -251
package/README.md CHANGED
@@ -28,6 +28,43 @@ pnpm add react react-dom # peer deps (^18.3 or ^19)
28
28
  Requires **Tailwind CSS v4** in the consuming app. Everything else (Radix,
29
29
  `@tanstack/react-query`, etc.) is bundled.
30
30
 
31
+ ## AI agents (Slingshot, Cursor, Copilot, …)
32
+
33
+ The package ships two agent-facing docs — point your AI tooling at them and it
34
+ will write DS-native code instead of guessing:
35
+
36
+ - **[`DESIGN.md`](./DESIGN.md)** — the exhaustive machine-readable reference:
37
+ setup, theming model, the token language (context-suffixed colors, stock
38
+ spacing, px-named radii), hard rules, an 88-entry component catalog with every
39
+ variant enumerated, and the full token/CSS-var inventory.
40
+ - **[`SKILL.md`](./SKILL.md)** — the operational playbook (decision order,
41
+ do/don't class table, Figma→code conversion, recipes, known pitfalls,
42
+ verification steps). Formatted as an Agent Skill.
43
+
44
+ ### Install them as an Agent Skill (recommended)
45
+
46
+ Run this in your app to copy both docs into `.agents/skills/design-system/`,
47
+ where coding agents pick them up automatically:
48
+
49
+ ```bash
50
+ npx @psnext/design-system
51
+ ```
52
+
53
+ Or pass an explicit destination folder:
54
+
55
+ ```bash
56
+ npx @psnext/design-system <dir> # install to an explicit folder
57
+ ```
58
+
59
+ Re-run it after upgrading the package to refresh the docs. (Prefer to keep the
60
+ skill folder in version control so your whole team's agents share it.)
61
+
62
+ ### Or point your agent at node_modules
63
+
64
+ Both files also live at `node_modules/@psnext/design-system/DESIGN.md` /
65
+ `SKILL.md` — e.g. tell your agent: *"Read
66
+ node_modules/@psnext/design-system/SKILL.md before writing UI."*
67
+
31
68
  ## Quick start
32
69
 
33
70
  **1. Wire the CSS** (order matters):
@@ -89,8 +126,8 @@ shown on its **Storybook Docs** page (generated from the source types + JSDoc).
89
126
 
90
127
  | Entry | Contents |
91
128
  |---|---|
92
- | `@psnext/design-system/primitives/*` · `…/primitives` | Button, Dialog, Input, Select, Table, Tabs, Card, Chart, Badge, Text, Heading, Icon, `Logo`, Credits, NavRail, `ThemeProvider`/`useTheme`, … (65) |
93
- | `@psnext/design-system/patterns/*` · `…/patterns` | `Header`, `Footer`, `DataTable`, `MediaObject`, `SectionCard`, `SectionHeading` |
129
+ | `@psnext/design-system/primitives/*` · `…/primitives` | Button, Dialog, Input, Select, Table, Tabs, Card, Chart, Badge, Text, Heading, Icon, `Logo`, Credits, `ThemeProvider`/`useTheme`, … (65) |
130
+ | `@psnext/design-system/patterns/*` · `…/patterns` | `Header`, `Footer`, `DataTable`, `MediaObject`, `NavRail`, `SectionCard`, `SectionHeading` |
94
131
  | `@psnext/design-system/layouts/*` · `…/layouts` | `Container`, `Stack`, `TwoColumn`, `PageBackground` |
95
132
  | `@psnext/design-system/styles` | the single raw-CSS entry (tokens + themes + bridge) |
96
133
 
package/SKILL.md ADDED
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: psnext-design-system
3
+ description: Build product UI with @psnext/design-system (Tailwind v4 token bridge, context-suffixed color utilities, px-named radii, class-driven theming). Use whenever writing or reviewing frontend code in an app that consumes this design system, or when translating Figma designs into code for the PS AI product suite.
4
+ ---
5
+
6
+ # Using @psnext/design-system
7
+
8
+ You are building UI with `@psnext/design-system`. The exhaustive reference —
9
+ component catalog, full token inventory, theming model — is in
10
+ [`DESIGN.md`](./DESIGN.md) next to this file (in consumers:
11
+ `node_modules/@psnext/design-system/DESIGN.md`). This skill is the workflow.
12
+
13
+ ## Decision order
14
+
15
+ 1. **Pattern first**: does a pattern (`patterns/Header`, `DataTable`, `Footer`,
16
+ `SectionCard`, `SectionHeading`, `MediaObject`) or layout (`Container`, `Stack`,
17
+ `TwoColumn`, `PageBackground`) already solve it? Use it.
18
+ 2. **Primitive second**: compose from `primitives/*` (64 of them — check the catalog
19
+ in DESIGN.md §6 before writing anything custom).
20
+ 3. **Custom last**: build with token utilities only; never raw colors, never a
21
+ parallel component that shadows an existing one.
22
+
23
+ Import per subpath: `@psnext/design-system/primitives/Button`. The DS bundles Radix,
24
+ cva, lucide-react, recharts, sonner, react-hook-form, zod — import primitives from the
25
+ DS, not from those libraries directly (exception: `toast()` from `"sonner"`, and
26
+ `lucide-react` icons which are the standard icon set).
27
+
28
+ ## Class-writing rules (do / don't)
29
+
30
+ | Do | Don't | Why |
31
+ |---|---|---|
32
+ | `bg-primary-bg`, `text-muted-txt`, `border-primary-border` | `bg-background`, `text-muted-foreground`, `border-border` | shadcn-era names were deleted — they compile to **nothing**, silently |
33
+ | let tokens flip under `.dark` | `dark:bg-…` | `dark:` is banned; a CI guard rejects it in DS code |
34
+ | `p-4` for 16px, `gap-2` for 8px | `p-16` for 16px | spacing numbers are 4px steps, not pixels |
35
+ | `rounded-8` for 8px radius | `rounded-lg` | radius is px-named; t-shirt radii don't exist |
36
+ | `shadow-sm/md/lg/xl` | other shadow steps | only these four are tokenized |
37
+ | `ring-focus`, `ring-focus-error` | `ring-ring`, custom focus colors | focus is tokenized |
38
+ | `text-danger-txt` for errors | `text-destructive`, `text-red-500` | severity family is info/success/warning/danger |
39
+ | `cn(...)` from the DS for merged classes | template-string concat | cn's tailwind-merge knows the numeric radius scale |
40
+ | suffix matches property: `bg-*-bg`, `text-*-txt` | `text-primary-bg` | token suffix encodes the valid context |
41
+
42
+ Figma → code: px ÷ 4 = spacing step (16px → `p-4`); radius px maps 1:1 (`rounded-12`);
43
+ heading levels map to `<Heading size={n}>`.
44
+
45
+ ## Recipes
46
+
47
+ **Page scaffold**
48
+ ```tsx
49
+ <div className="relative min-h-screen overflow-hidden">
50
+ <PageBackground fixed={false} />
51
+ <Header ...auth/product wiring... />
52
+ <Container className="relative py-8">…page content…</Container>
53
+ </div>
54
+ ```
55
+
56
+ **Section on the page** — `SectionCard` (glass surface) + `SectionHeading`; glass
57
+ surfaces need `PageBackground` behind them to read.
58
+
59
+ **Form** — `Form` (react-hook-form + zod resolver) + `Field`/`Label`/`Input`/…;
60
+ validation errors style themselves via `data-[error=true]` and `text-danger-txt`.
61
+
62
+ **Toasts** — render `<Toaster theme={resolvedTheme}/>` once near the root; fire with
63
+ `toast.success/error/warning/info(...)` from `"sonner"`. Severity colors are tokenized
64
+ (error → danger).
65
+
66
+ **Brand section** — wrap any subtree in `theme-bodhi` / `theme-sustain` /
67
+ `theme-slingshot` to re-scope the brand ramp (works nested, light and dark).
68
+
69
+ **Charts** — `ChartContainer` + a `ChartConfig`; series colors from `var(--chart-*)`
70
+ or the brand ramp (`var(--brand-500-primary)`, `color-mix` tints for lighter steps).
71
+
72
+ **Dark-only surface** (e.g. marketing hero): put `.dark` on the subtree root — all
73
+ tokens inside flip; do not hand-pick dark colors.
74
+
75
+ ## Pitfalls (each of these has actually happened)
76
+
77
+ - **Silent dead classes**: a token name that doesn't exist produces *no CSS and no
78
+ error* — the element just loses that style. If something renders unstyled/black/
79
+ transparent, first suspect a wrong token name; grep DESIGN.md §6–7 for the right one.
80
+ - **JS-driven theming**: never branch on `useTheme().theme` to pick colors — use
81
+ tokens/CSS. JS-driven color breaks class-driven captures (VR) and flashes on load.
82
+ - **Card vertical distribution**: `Card` defaults to `justify-between`; in stretched
83
+ grids, center a lone `CardContent` with `my-auto` or override `justify-*`.
84
+ - **Overriding component classes**: pass overrides via `className` (components merge
85
+ with `cn`); don't wrap in extra divs to fight specificity.
86
+ - **`!important` on library-styled elements** (e.g. toast classNames) will override
87
+ richColors/severity styling — scope with `data-[type=…]` variants instead.
88
+ - **Logo**: never recolor; wordmark ink follows mode automatically; no ThemeProvider
89
+ needed.
90
+
91
+ ## Verify your work
92
+
93
+ 1. `pnpm typecheck` (and `pnpm lint:dark-variant` inside the DS repo).
94
+ 2. Render it: check both modes by toggling `.dark` on `<html>` (not by mocking JS
95
+ state), and each brand class if brand-relevant.
96
+ 3. In the DS repo: every component change needs its stories updated, including the
97
+ `Screenshot` VR story (all *static* states belong in that one frame; interactive/
98
+ portalled states get their own stories) — then `pnpm vr` (`pnpm vr:update` to
99
+ re-baseline intentional changes).
100
+ 4. Storybook stories are the canonical usage — if your usage diverges from the story,
101
+ the story is right.
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env node
2
+ // Install the design-system agent docs (SKILL.md + DESIGN.md) into a consumer
3
+ // project as an Agent Skill, so coding agents load them for UI work.
4
+ //
5
+ // npx @psnext/design-system → .agents/skills/design-system/
6
+ // npx @psnext/design-system <dir> → <dir>/ (explicit destination)
7
+ //
8
+ // The two docs are copied verbatim from the installed package; SKILL.md links to
9
+ // DESIGN.md as a sibling, so they must land in the same folder (this does that).
10
+
11
+ import { copyFileSync, existsSync, mkdirSync } from "node:fs";
12
+ import { dirname, join, resolve } from "node:path";
13
+ import { fileURLToPath } from "node:url";
14
+
15
+ const PKG_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..");
16
+ const DOCS = ["SKILL.md", "DESIGN.md"];
17
+
18
+ const args = process.argv.slice(2);
19
+ if (args.includes("--help") || args.includes("-h")) {
20
+ console.log(`Install @psnext/design-system agent docs as an Agent Skill.
21
+
22
+ Usage:
23
+ npx @psnext/design-system Copy SKILL.md + DESIGN.md into .agents/skills/design-system/
24
+ npx @psnext/design-system <dir> Copy into an explicit destination folder
25
+ npx @psnext/design-system --help Show this help
26
+
27
+ The agent then loads the skill when writing or reviewing UI in this project.`);
28
+ process.exit(0);
29
+ }
30
+
31
+ // Destination: explicit positional wins; else the default skills folder.
32
+ const positional = args.find((a) => !a.startsWith("-"));
33
+ const dest = positional
34
+ ? resolve(process.cwd(), positional)
35
+ : resolve(process.cwd(), ".agents/skills/design-system");
36
+
37
+ for (const doc of DOCS) {
38
+ const src = join(PKG_ROOT, doc);
39
+ if (!existsSync(src)) {
40
+ console.error(`✗ Could not find ${doc} in the installed package (${PKG_ROOT}).`);
41
+ process.exit(1);
42
+ }
43
+ }
44
+
45
+ mkdirSync(dest, { recursive: true });
46
+ for (const doc of DOCS) {
47
+ copyFileSync(join(PKG_ROOT, doc), join(dest, doc));
48
+ }
49
+
50
+ const rel = dest.startsWith(process.cwd()) ? `.${dest.slice(process.cwd().length)}` : dest;
51
+ console.log(`✓ Installed @psnext/design-system agent skill → ${rel}/`);
52
+ console.log(" • SKILL.md — workflow playbook (the Agent Skill entry point)");
53
+ console.log(" • DESIGN.md — full token + component reference");
54
+ console.log("\nRe-run this after upgrading the package to refresh the docs.");
package/dist/Header.cjs CHANGED
@@ -6,9 +6,9 @@ const require_primitives_Credits_index = require("./primitives/Credits/index.cjs
6
6
  const require_primitives_DropdownMenu_index = require("./primitives/DropdownMenu/index.cjs");
7
7
  const require_primitives_Input_index = require("./primitives/Input/index.cjs");
8
8
  const require_Logo = require("./Logo.cjs");
9
- const require_primitives_ThemeProvider_index = require("./primitives/ThemeProvider/index.cjs");
10
9
  const require_primitives_Popover_index = require("./primitives/Popover/index.cjs");
11
10
  const require_primitives_Skeleton_index = require("./primitives/Skeleton/index.cjs");
11
+ const require_primitives_ThemeProvider_index = require("./primitives/ThemeProvider/index.cjs");
12
12
  let react = require("react");
13
13
  let react$1 = require_chunk.__toESM(react, 1);
14
14
  react = require_chunk.__toESM(react);
@@ -43,7 +43,7 @@ function filterTree(nodes, term) {
43
43
  }
44
44
  //#endregion
45
45
  //#region src/patterns/Header/ProjectPicker.tsx
46
- const PILL$1 = "flex h-9 items-center gap-1.5 rounded-full border bg-card px-4 text-sm";
46
+ const PILL$1 = "flex min-h-8 items-center gap-1 rounded-12 border border-primary-border bg-input-bg px-3 py-1 text-xs leading-4";
47
47
  function ProjectPicker({ projectsTree, selectedProjectId, selectedProjectName, onSelect, projectLabel, projectPlaceholder, searchPlaceholder, emptyStateText, isLoading = false }) {
48
48
  const [open, setOpen] = react.useState(false);
49
49
  const [searchTerm, setSearchTerm] = react.useState("");
@@ -65,11 +65,11 @@ function ProjectPicker({ projectsTree, selectedProjectId, selectedProjectName, o
65
65
  className: require_cn.cn(PILL$1, "min-w-44"),
66
66
  children: [
67
67
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
68
- className: "shrink-0 text-muted-foreground",
68
+ className: "shrink-0 text-muted-txt",
69
69
  children: [projectLabel, ":"]
70
70
  }),
71
71
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_primitives_Skeleton_index.Skeleton, { className: "h-3 flex-1" }),
72
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronDown, { className: "size-4 shrink-0 text-muted-foreground opacity-40" })
72
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronDown, { className: "size-4 shrink-0 text-muted-txt opacity-40" })
73
73
  ]
74
74
  });
75
75
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_primitives_Popover_index.Popover, {
@@ -80,17 +80,17 @@ function ProjectPicker({ projectsTree, selectedProjectId, selectedProjectName, o
80
80
  },
81
81
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_primitives_Popover_index.PopoverTrigger, {
82
82
  "data-slot": "header-project-picker",
83
- className: require_cn.cn(PILL$1, "text-left transition-colors hover:border-ring/60"),
83
+ className: require_cn.cn(PILL$1, "text-left transition-colors hover:border-focus/60"),
84
84
  children: [
85
85
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
86
- className: "shrink-0 text-muted-foreground",
86
+ className: "shrink-0 text-muted-txt",
87
87
  children: [projectLabel, ":"]
88
88
  }),
89
89
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
90
- className: require_cn.cn("max-w-36 truncate", selectedName ? "font-medium" : "text-muted-foreground"),
90
+ className: require_cn.cn("max-w-36 truncate", selectedName ? "font-medium" : "text-muted-txt"),
91
91
  children: selectedName ?? projectPlaceholder
92
92
  }),
93
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronDown, { className: "ml-1 size-4 shrink-0 text-muted-foreground" })
93
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronDown, { className: "ml-1 size-4 shrink-0 text-muted-txt" })
94
94
  ]
95
95
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_primitives_Popover_index.PopoverContent, {
96
96
  align: "start",
@@ -101,7 +101,7 @@ function ProjectPicker({ projectsTree, selectedProjectId, selectedProjectName, o
101
101
  className: "border-b p-2",
102
102
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
103
103
  className: "relative",
104
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Search, { className: "absolute top-1/2 left-2.5 size-3.5 -translate-y-1/2 text-muted-foreground" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_primitives_Input_index.Input, {
104
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Search, { className: "absolute top-1/2 left-2.5 size-3.5 -translate-y-1/2 text-muted-txt" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_primitives_Input_index.Input, {
105
105
  size: "sm",
106
106
  className: "pl-8",
107
107
  placeholder: searchPlaceholder,
@@ -112,7 +112,7 @@ function ProjectPicker({ projectsTree, selectedProjectId, selectedProjectName, o
112
112
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
113
113
  className: "max-h-64 overflow-y-auto py-1",
114
114
  children: filteredTree.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
115
- className: "px-4 py-2 text-sm text-muted-foreground",
115
+ className: "px-1 py-0.5 text-sm text-muted-txt",
116
116
  children: emptyStateText
117
117
  }) : filteredTree.map((node) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TreeNode, {
118
118
  node,
@@ -136,13 +136,13 @@ function TreeNode({ node, depth, selectedId, onSelect, collapsedIds, onToggleCol
136
136
  "aria-expanded": hasChildren ? !isCollapsed : void 0,
137
137
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
138
138
  style: { paddingLeft: `${.75 + depth}rem` },
139
- className: require_cn.cn("flex items-center gap-1 py-2 pr-3 text-sm transition-colors", node.isContextOnly ? "cursor-default text-muted-foreground" : "cursor-pointer hover:bg-accent", isSelected && "bg-accent font-medium"),
139
+ className: require_cn.cn("flex items-center gap-1 py-2 pr-3 text-sm transition-colors", node.isContextOnly ? "cursor-default text-muted-txt" : "cursor-pointer hover:bg-ghost-hover-bg", isSelected && "bg-secondary-bg font-medium"),
140
140
  children: [
141
141
  hasChildren ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
142
142
  type: "button",
143
143
  "aria-label": isCollapsed ? `Expand ${node.name}` : `Collapse ${node.name}`,
144
144
  onClick: () => onToggleCollapse(node.id),
145
- className: "shrink-0 text-muted-foreground hover:text-foreground",
145
+ className: "shrink-0 text-muted-txt hover:text-primary-txt",
146
146
  children: isCollapsed ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronRight, { className: "size-3.5" }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronDown, { className: "size-3.5" })
147
147
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: "inline-block w-3.5 shrink-0" }),
148
148
  node.isContextOnly ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
@@ -554,12 +554,12 @@ const LOGO_HREF = {
554
554
  sustain: "https://www.publicissapient.com/",
555
555
  bodhi: "https://sapientaiproducts.com/bodhi"
556
556
  };
557
- const PILL = "flex h-9 items-center gap-1.5 rounded-full border bg-card px-4 text-sm";
557
+ const PILL = "flex min-h-8 items-center gap-1 rounded-12 border border-primary-border bg-input-bg px-3 py-1 text-xs leading-4";
558
558
  /** The header bar shell — a sticky glass strip. */
559
559
  function HeaderBar({ className, ...props }) {
560
560
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("header", {
561
561
  "data-slot": "header",
562
- className: require_cn.cn("sticky top-4 z-10 mt-4 flex h-16 items-center gap-1 rounded-2xl border border-border/50 px-6 shadow-sm", "bg-[var(--glass-light)] backdrop-blur-glass", className),
562
+ className: require_cn.cn("sticky top-1 z-10 mt-1 flex h-15 items-center gap-5 rounded-16 px-3 py-2", "bg-glass-60-bg backdrop-blur-glass", className),
563
563
  ...props
564
564
  });
565
565
  }
@@ -581,7 +581,7 @@ function OrgPill({ name, loading }) {
581
581
  className: require_cn.cn(PILL, "ml-3"),
582
582
  "data-slot": "header-org",
583
583
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
584
- className: "shrink-0 text-muted-foreground",
584
+ className: "shrink-0 text-muted-txt",
585
585
  children: [DEFAULT_LABELS.orgLabel, ":"]
586
586
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_primitives_Skeleton_index.Skeleton, { className: "h-4 w-24" })]
587
587
  });
@@ -591,10 +591,10 @@ function OrgPill({ name, loading }) {
591
591
  title: name,
592
592
  "data-slot": "header-org",
593
593
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
594
- className: "shrink-0 text-muted-foreground",
594
+ className: "shrink-0 text-muted-txt",
595
595
  children: [DEFAULT_LABELS.orgLabel, ":"]
596
596
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
597
- className: "max-w-36 truncate font-medium",
597
+ className: "max-w-36 truncate text-primary-txt",
598
598
  children: name
599
599
  })]
600
600
  });
@@ -629,7 +629,7 @@ function ProfileMenu({ email, onLogout }) {
629
629
  sideOffset: 8,
630
630
  className: "min-w-44",
631
631
  children: [email && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_primitives_DropdownMenu_index.DropdownMenuLabel, {
632
- className: "truncate font-normal text-muted-foreground",
632
+ className: "truncate font-normal text-muted-txt",
633
633
  children: email
634
634
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_primitives_DropdownMenu_index.DropdownMenuSeparator, {})] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_primitives_DropdownMenu_index.DropdownMenuItem, {
635
635
  onSelect: onLogout,
@@ -674,7 +674,7 @@ function HeaderInner({ logoType, showOrg = false, showProjectDropdown = false, s
674
674
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(HeaderLogo, { brand }),
675
675
  pageTitle && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
676
676
  "data-slot": "header-title",
677
- className: "ml-5 font-semibold text-foreground text-sm",
677
+ className: "ml-5 font-semibold text-primary-txt text-sm",
678
678
  children: pageTitle
679
679
  }),
680
680
  logoAddon,
@@ -715,7 +715,7 @@ function HeaderInner({ logoType, showOrg = false, showProjectDropdown = false, s
715
715
  showCreditsUi && state.credits !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
716
716
  href: state.creditsHref,
717
717
  "aria-label": "View credit activity",
718
- className: "rounded-full outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50",
718
+ className: "rounded-full outline-none focus-visible:ring-3 focus-visible:ring-focus",
719
719
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_primitives_Credits_index.Credits, { value: state.credits })
720
720
  }),
721
721
  showProfileUi && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProfileMenu, {
@@ -739,9 +739,9 @@ function ProjectOverlay({ organizationName, projectsTree, selectedProjectId, onS
739
739
  role: "dialog",
740
740
  "aria-modal": "true",
741
741
  "aria-label": DEFAULT_LABELS.overlayTitle,
742
- className: "fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",
742
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-primary-bg/80 backdrop-blur-sm",
743
743
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
744
- className: "relative mx-4 flex w-full max-w-md flex-col items-center gap-6 rounded-2xl border bg-card p-8 text-card-foreground shadow-2xl",
744
+ className: "relative mx-1 flex w-full max-w-md flex-col items-center gap-6 rounded-16 border bg-glass-none-bg p-2 text-primary-txt shadow-xl",
745
745
  children: [
746
746
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_primitives_Button_index.Button, {
747
747
  variant: "ghost",
@@ -759,11 +759,11 @@ function ProjectOverlay({ organizationName, projectsTree, selectedProjectId, onS
759
759
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.FolderOpen, { className: "size-8 text-primary" })
760
760
  }),
761
761
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
762
- className: "font-semibold text-foreground text-xl",
762
+ className: "font-semibold text-primary-txt text-xl",
763
763
  children: DEFAULT_LABELS.overlayTitle
764
764
  }),
765
765
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
766
- className: "text-muted-foreground text-sm",
766
+ className: "text-muted-txt text-sm",
767
767
  children: DEFAULT_LABELS.overlayDescription
768
768
  })
769
769
  ]
@@ -774,7 +774,7 @@ function ProjectOverlay({ organizationName, projectsTree, selectedProjectId, onS
774
774
  className: require_cn.cn(PILL, "select-none"),
775
775
  title: organizationName,
776
776
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
777
- className: "shrink-0 text-muted-foreground",
777
+ className: "shrink-0 text-muted-txt",
778
778
  children: [DEFAULT_LABELS.orgLabel, ":"]
779
779
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
780
780
  className: "max-w-52 truncate font-medium",