@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.
- package/DESIGN.md +639 -0
- package/README.md +39 -2
- package/SKILL.md +101 -0
- package/bin/install-agent-skill.mjs +54 -0
- package/dist/Header.cjs +25 -25
- package/dist/Header.cjs.map +1 -1
- package/dist/Header.js +25 -25
- package/dist/Header.js.map +1 -1
- package/dist/Icon.cjs +19 -19
- package/dist/Icon.cjs.map +1 -1
- package/dist/Icon.js +19 -19
- package/dist/Icon.js.map +1 -1
- package/dist/Logo.cjs +4 -14
- package/dist/Logo.cjs.map +1 -1
- package/dist/Logo.js +4 -14
- package/dist/Logo.js.map +1 -1
- package/dist/Sidebar.cjs +26 -20
- package/dist/Sidebar.cjs.map +1 -1
- package/dist/Sidebar.js +21 -21
- package/dist/Sidebar.js.map +1 -1
- package/dist/cn.cjs +14 -1
- package/dist/cn.cjs.map +1 -1
- package/dist/cn.js +14 -1
- package/dist/cn.js.map +1 -1
- package/dist/index.cjs +13 -10
- package/dist/index.d.cts +5 -5
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index10.d.cts +7 -7
- package/dist/index10.d.cts.map +1 -1
- package/dist/index10.d.ts +7 -7
- package/dist/index11.d.cts +3 -3
- package/dist/index11.d.cts.map +1 -1
- package/dist/index11.d.ts +3 -3
- package/dist/index11.d.ts.map +1 -1
- package/dist/index12.d.cts +18 -17
- package/dist/index12.d.cts.map +1 -1
- package/dist/index12.d.ts +18 -17
- package/dist/index12.d.ts.map +1 -1
- package/dist/index13.d.cts +6 -6
- package/dist/index13.d.cts.map +1 -1
- package/dist/index13.d.ts +6 -6
- package/dist/index14.d.cts +5 -5
- package/dist/index14.d.cts.map +1 -1
- package/dist/index14.d.ts +5 -5
- package/dist/index14.d.ts.map +1 -1
- package/dist/index15.d.cts +3 -3
- package/dist/index15.d.cts.map +1 -1
- package/dist/index15.d.ts +3 -3
- package/dist/index15.d.ts.map +1 -1
- package/dist/index16.d.cts +2 -2
- package/dist/index16.d.cts.map +1 -1
- package/dist/index16.d.ts +2 -2
- package/dist/index17.d.cts +4 -4
- package/dist/index17.d.cts.map +1 -1
- package/dist/index17.d.ts +4 -4
- package/dist/index17.d.ts.map +1 -1
- package/dist/index18.d.cts +11 -11
- package/dist/index18.d.cts.map +1 -1
- package/dist/index18.d.ts +11 -11
- package/dist/index19.d.cts +10 -10
- package/dist/index19.d.cts.map +1 -1
- package/dist/index19.d.ts +10 -10
- package/dist/index19.d.ts.map +1 -1
- package/dist/index2.d.cts +8 -8
- package/dist/index2.d.cts.map +1 -1
- package/dist/index2.d.ts +8 -8
- package/dist/index2.d.ts.map +1 -1
- package/dist/index20.d.cts +16 -16
- package/dist/index20.d.cts.map +1 -1
- package/dist/index20.d.ts +16 -16
- package/dist/index20.d.ts.map +1 -1
- package/dist/index21.d.cts +4 -4
- package/dist/index21.d.cts.map +1 -1
- package/dist/index21.d.ts +4 -4
- package/dist/index22.d.cts +11 -11
- package/dist/index22.d.cts.map +1 -1
- package/dist/index22.d.ts +11 -11
- package/dist/index22.d.ts.map +1 -1
- package/dist/index23.d.cts +16 -16
- package/dist/index23.d.cts.map +1 -1
- package/dist/index23.d.ts +16 -16
- package/dist/index23.d.ts.map +1 -1
- package/dist/index24.d.cts +10 -10
- package/dist/index24.d.cts.map +1 -1
- package/dist/index24.d.ts +10 -10
- package/dist/index25.d.cts +2 -2
- package/dist/index25.d.ts +2 -2
- package/dist/index25.d.ts.map +1 -1
- package/dist/index26.d.cts +14 -14
- package/dist/index26.d.cts.map +1 -1
- package/dist/index26.d.ts +14 -14
- package/dist/index26.d.ts.map +1 -1
- package/dist/index27.d.cts +7 -7
- package/dist/index27.d.ts +7 -7
- package/dist/index27.d.ts.map +1 -1
- package/dist/index28.d.cts +6 -6
- package/dist/index28.d.ts +5 -5
- package/dist/index28.d.ts.map +1 -1
- package/dist/index29.d.cts +4 -4
- package/dist/index29.d.ts +4 -4
- package/dist/index29.d.ts.map +1 -1
- package/dist/index3.d.cts +13 -13
- package/dist/index3.d.cts.map +1 -1
- package/dist/index3.d.ts +13 -13
- package/dist/index3.d.ts.map +1 -1
- package/dist/index30.d.cts +6 -6
- package/dist/index30.d.ts +4 -4
- package/dist/index31.d.cts +4 -4
- package/dist/index31.d.cts.map +1 -1
- package/dist/index31.d.ts +4 -4
- package/dist/index31.d.ts.map +1 -1
- package/dist/index32.d.cts +8 -5
- package/dist/index32.d.cts.map +1 -1
- package/dist/index32.d.ts +9 -6
- package/dist/index32.d.ts.map +1 -1
- package/dist/index33.d.cts +14 -10
- package/dist/index33.d.cts.map +1 -1
- package/dist/index33.d.ts +15 -11
- package/dist/index33.d.ts.map +1 -1
- package/dist/index34.d.cts +5 -5
- package/dist/index34.d.ts +5 -5
- package/dist/index34.d.ts.map +1 -1
- package/dist/index35.d.cts +14 -14
- package/dist/index35.d.ts +14 -14
- package/dist/index35.d.ts.map +1 -1
- package/dist/index36.d.cts +3 -3
- package/dist/index36.d.cts.map +1 -1
- package/dist/index36.d.ts +3 -3
- package/dist/index36.d.ts.map +1 -1
- package/dist/index37.d.cts +5 -5
- package/dist/index37.d.ts +4 -4
- package/dist/index37.d.ts.map +1 -1
- package/dist/index38.d.cts +2 -2
- package/dist/index38.d.ts +2 -2
- package/dist/index39.d.cts +17 -17
- package/dist/index39.d.cts.map +1 -1
- package/dist/index39.d.ts +17 -17
- package/dist/index39.d.ts.map +1 -1
- package/dist/index4.d.cts +2 -2
- package/dist/index4.d.cts.map +1 -1
- package/dist/index4.d.ts +2 -2
- package/dist/index4.d.ts.map +1 -1
- package/dist/index40.d.cts +4 -4
- package/dist/index40.d.cts.map +1 -1
- package/dist/index40.d.ts +5 -5
- package/dist/index40.d.ts.map +1 -1
- package/dist/index41.d.cts +11 -11
- package/dist/index41.d.cts.map +1 -1
- package/dist/index41.d.ts +11 -11
- package/dist/index41.d.ts.map +1 -1
- package/dist/index42.d.cts +8 -8
- package/dist/index42.d.cts.map +1 -1
- package/dist/index42.d.ts +8 -8
- package/dist/index42.d.ts.map +1 -1
- package/dist/index43.d.cts +10 -10
- package/dist/index43.d.cts.map +1 -1
- package/dist/index43.d.ts +10 -10
- package/dist/index43.d.ts.map +1 -1
- package/dist/index44.d.cts +1 -48
- package/dist/index44.d.ts +1 -48
- package/dist/index45.d.cts +42 -22
- package/dist/index45.d.cts.map +1 -1
- package/dist/index45.d.ts +42 -22
- package/dist/index45.d.ts.map +1 -1
- package/dist/index46.d.cts +21 -34
- package/dist/index46.d.cts.map +1 -1
- package/dist/index46.d.ts +21 -34
- package/dist/index46.d.ts.map +1 -1
- package/dist/index47.d.cts +33 -17
- package/dist/index47.d.cts.map +1 -1
- package/dist/index47.d.ts +33 -17
- package/dist/index47.d.ts.map +1 -1
- package/dist/index48.d.cts +18 -14
- package/dist/index48.d.cts.map +1 -1
- package/dist/index48.d.ts +18 -14
- package/dist/index48.d.ts.map +1 -1
- package/dist/index49.d.cts +12 -60
- package/dist/index49.d.cts.map +1 -1
- package/dist/index49.d.ts +12 -60
- package/dist/index49.d.ts.map +1 -1
- package/dist/index5.d.cts +7 -7
- package/dist/index5.d.cts.map +1 -1
- package/dist/index5.d.ts +7 -7
- package/dist/index5.d.ts.map +1 -1
- package/dist/index50.d.cts +55 -49
- package/dist/index50.d.cts.map +1 -1
- package/dist/index50.d.ts +55 -49
- package/dist/index50.d.ts.map +1 -1
- package/dist/index51.d.cts +56 -24
- package/dist/index51.d.cts.map +1 -1
- package/dist/index51.d.ts +56 -24
- package/dist/index51.d.ts.map +1 -1
- package/dist/index52.d.cts +25 -203
- package/dist/index52.d.cts.map +1 -1
- package/dist/index52.d.ts +25 -203
- package/dist/index52.d.ts.map +1 -1
- package/dist/index53.d.cts +198 -15
- package/dist/index53.d.cts.map +1 -1
- package/dist/index53.d.ts +198 -15
- package/dist/index53.d.ts.map +1 -1
- package/dist/index54.d.cts +21 -23
- package/dist/index54.d.cts.map +1 -1
- package/dist/index54.d.ts +21 -23
- package/dist/index54.d.ts.map +1 -1
- package/dist/index55.d.cts +21 -18
- package/dist/index55.d.cts.map +1 -1
- package/dist/index55.d.ts +21 -18
- package/dist/index55.d.ts.map +1 -1
- package/dist/index56.d.cts +21 -8
- package/dist/index56.d.cts.map +1 -1
- package/dist/index56.d.ts +21 -8
- package/dist/index56.d.ts.map +1 -1
- package/dist/index57.d.cts +6 -44
- package/dist/index57.d.cts.map +1 -1
- package/dist/index57.d.ts +6 -44
- package/dist/index57.d.ts.map +1 -1
- package/dist/index58.d.cts +46 -47
- package/dist/index58.d.cts.map +1 -1
- package/dist/index58.d.ts +46 -47
- package/dist/index58.d.ts.map +1 -1
- package/dist/index59.d.cts +47 -59
- package/dist/index59.d.cts.map +1 -1
- package/dist/index59.d.ts +47 -59
- package/dist/index59.d.ts.map +1 -1
- package/dist/index6.d.cts +7 -7
- package/dist/index6.d.cts.map +1 -1
- package/dist/index6.d.ts +7 -7
- package/dist/index6.d.ts.map +1 -1
- package/dist/index60.d.cts +56 -38
- package/dist/index60.d.cts.map +1 -1
- package/dist/index60.d.ts +56 -38
- package/dist/index60.d.ts.map +1 -1
- package/dist/index61.d.cts +38 -14
- package/dist/index61.d.cts.map +1 -1
- package/dist/index61.d.ts +38 -14
- package/dist/index61.d.ts.map +1 -1
- package/dist/index62.d.cts +20 -41
- package/dist/index62.d.cts.map +1 -1
- package/dist/index62.d.ts +20 -41
- package/dist/index62.d.ts.map +1 -1
- package/dist/index63.d.cts +41 -19
- package/dist/index63.d.cts.map +1 -1
- package/dist/index63.d.ts +41 -19
- package/dist/index63.d.ts.map +1 -1
- package/dist/index64.d.cts +14 -39
- package/dist/index64.d.cts.map +1 -1
- package/dist/index64.d.ts +14 -39
- package/dist/index64.d.ts.map +1 -1
- package/dist/index65.d.cts +39 -16
- package/dist/index65.d.cts.map +1 -1
- package/dist/index65.d.ts +39 -16
- package/dist/index65.d.ts.map +1 -1
- package/dist/index66.d.cts +18 -12
- package/dist/index66.d.cts.map +1 -1
- package/dist/index66.d.ts +18 -12
- package/dist/index66.d.ts.map +1 -1
- package/dist/index67.d.cts +12 -30
- package/dist/index67.d.cts.map +1 -1
- package/dist/index67.d.ts +12 -30
- package/dist/index67.d.ts.map +1 -1
- package/dist/index68.d.cts +28 -27
- package/dist/index68.d.cts.map +1 -1
- package/dist/index68.d.ts +28 -27
- package/dist/index68.d.ts.map +1 -1
- package/dist/index69.d.cts +36 -69
- package/dist/index69.d.cts.map +1 -0
- package/dist/index69.d.ts +36 -69
- package/dist/index69.d.ts.map +1 -0
- package/dist/index7.d.cts +8 -8
- package/dist/index7.d.cts.map +1 -1
- package/dist/index7.d.ts +8 -8
- package/dist/index70.d.cts +76 -237
- package/dist/index70.d.cts.map +1 -1
- package/dist/index70.d.ts +76 -237
- package/dist/index70.d.ts.map +1 -1
- package/dist/index71.d.cts +242 -0
- package/dist/index71.d.cts.map +1 -0
- package/dist/index71.d.ts +242 -0
- package/dist/index71.d.ts.map +1 -0
- package/dist/index8.d.cts +4 -4
- package/dist/index8.d.cts.map +1 -1
- package/dist/index8.d.ts +4 -4
- package/dist/index8.d.ts.map +1 -1
- package/dist/index9.d.cts +2 -2
- package/dist/index9.d.ts +2 -2
- package/dist/layouts/Container/index.cjs +4 -4
- package/dist/layouts/Container/index.cjs.map +1 -1
- package/dist/layouts/Container/index.d.cts +1 -1
- package/dist/layouts/Container/index.d.ts +1 -1
- package/dist/layouts/Container/index.js +4 -4
- package/dist/layouts/Container/index.js.map +1 -1
- package/dist/layouts/PageBackground/index.cjs +2 -2
- package/dist/layouts/PageBackground/index.cjs.map +1 -1
- package/dist/layouts/PageBackground/index.d.cts +1 -1
- package/dist/layouts/PageBackground/index.d.ts +1 -1
- package/dist/layouts/PageBackground/index.js +2 -2
- package/dist/layouts/PageBackground/index.js.map +1 -1
- package/dist/layouts/Stack/index.d.cts +1 -1
- package/dist/layouts/Stack/index.d.ts +1 -1
- package/dist/layouts/TwoColumn/index.d.cts +1 -1
- package/dist/layouts/TwoColumn/index.d.ts +1 -1
- package/dist/layouts/index.d.cts +4 -4
- package/dist/layouts/index.d.ts +4 -4
- package/dist/patterns/DataTable/index.cjs +12 -7
- package/dist/patterns/DataTable/index.cjs.map +1 -1
- package/dist/patterns/DataTable/index.d.cts +3 -3
- package/dist/patterns/DataTable/index.d.cts.map +1 -1
- package/dist/patterns/DataTable/index.d.ts +3 -3
- package/dist/patterns/DataTable/index.d.ts.map +1 -1
- package/dist/patterns/DataTable/index.js +12 -7
- package/dist/patterns/DataTable/index.js.map +1 -1
- package/dist/patterns/Footer/index.cjs +5 -5
- package/dist/patterns/Footer/index.cjs.map +1 -1
- package/dist/patterns/Footer/index.d.cts +9 -9
- package/dist/patterns/Footer/index.d.cts.map +1 -1
- package/dist/patterns/Footer/index.d.ts +9 -9
- package/dist/patterns/Footer/index.d.ts.map +1 -1
- package/dist/patterns/Footer/index.js +5 -5
- package/dist/patterns/Footer/index.js.map +1 -1
- package/dist/patterns/Header/index.d.cts +1 -1
- package/dist/patterns/Header/index.d.ts +1 -1
- package/dist/patterns/MediaObject/index.cjs +1 -1
- package/dist/patterns/MediaObject/index.cjs.map +1 -1
- package/dist/patterns/MediaObject/index.d.cts +12 -12
- package/dist/patterns/MediaObject/index.d.cts.map +1 -1
- package/dist/patterns/MediaObject/index.d.ts +13 -13
- package/dist/patterns/MediaObject/index.d.ts.map +1 -1
- package/dist/patterns/MediaObject/index.js +1 -1
- package/dist/patterns/MediaObject/index.js.map +1 -1
- package/dist/patterns/NavRail/index.cjs +195 -0
- package/dist/patterns/NavRail/index.cjs.map +1 -0
- package/dist/patterns/NavRail/index.d.cts +2 -0
- package/dist/patterns/NavRail/index.d.ts +2 -0
- package/dist/patterns/NavRail/index.js +185 -0
- package/dist/patterns/NavRail/index.js.map +1 -0
- package/dist/patterns/SectionCard/index.cjs +1 -1
- package/dist/patterns/SectionCard/index.cjs.map +1 -1
- package/dist/patterns/SectionCard/index.d.cts +2 -2
- package/dist/patterns/SectionCard/index.d.ts +2 -2
- package/dist/patterns/SectionCard/index.d.ts.map +1 -1
- package/dist/patterns/SectionCard/index.js +1 -1
- package/dist/patterns/SectionCard/index.js.map +1 -1
- package/dist/patterns/SectionHeading/index.d.cts +2 -2
- package/dist/patterns/SectionHeading/index.d.cts.map +1 -1
- package/dist/patterns/SectionHeading/index.d.ts +2 -2
- package/dist/patterns/SectionHeading/index.d.ts.map +1 -1
- package/dist/patterns/index.cjs +9 -0
- package/dist/patterns/index.d.cts +3 -2
- package/dist/patterns/index.d.ts +3 -2
- package/dist/patterns/index.js +2 -1
- package/dist/primitives/Accordion/index.cjs +6 -6
- package/dist/primitives/Accordion/index.cjs.map +1 -1
- package/dist/primitives/Accordion/index.js +6 -6
- package/dist/primitives/Accordion/index.js.map +1 -1
- package/dist/primitives/Alert/index.cjs +4 -4
- package/dist/primitives/Alert/index.cjs.map +1 -1
- package/dist/primitives/Alert/index.js +4 -4
- package/dist/primitives/Alert/index.js.map +1 -1
- package/dist/primitives/AlertDialog/index.cjs +4 -4
- package/dist/primitives/AlertDialog/index.cjs.map +1 -1
- package/dist/primitives/AlertDialog/index.js +4 -4
- package/dist/primitives/AlertDialog/index.js.map +1 -1
- package/dist/primitives/Avatar/index.cjs +5 -5
- package/dist/primitives/Avatar/index.cjs.map +1 -1
- package/dist/primitives/Avatar/index.js +5 -5
- package/dist/primitives/Avatar/index.js.map +1 -1
- package/dist/primitives/Badge/index.cjs +11 -10
- package/dist/primitives/Badge/index.cjs.map +1 -1
- package/dist/primitives/Badge/index.js +11 -10
- package/dist/primitives/Badge/index.js.map +1 -1
- package/dist/primitives/Breadcrumb/index.cjs +4 -4
- package/dist/primitives/Breadcrumb/index.cjs.map +1 -1
- package/dist/primitives/Breadcrumb/index.js +4 -4
- package/dist/primitives/Breadcrumb/index.js.map +1 -1
- package/dist/primitives/Button/index.cjs +20 -13
- package/dist/primitives/Button/index.cjs.map +1 -1
- package/dist/primitives/Button/index.js +20 -13
- package/dist/primitives/Button/index.js.map +1 -1
- package/dist/primitives/ButtonGroup/index.cjs +3 -3
- package/dist/primitives/ButtonGroup/index.cjs.map +1 -1
- package/dist/primitives/ButtonGroup/index.js +3 -3
- package/dist/primitives/ButtonGroup/index.js.map +1 -1
- package/dist/primitives/Calendar/index.cjs +22 -21
- package/dist/primitives/Calendar/index.cjs.map +1 -1
- package/dist/primitives/Calendar/index.js +22 -21
- package/dist/primitives/Calendar/index.js.map +1 -1
- package/dist/primitives/Card/index.cjs +18 -16
- package/dist/primitives/Card/index.cjs.map +1 -1
- package/dist/primitives/Card/index.js +18 -16
- package/dist/primitives/Card/index.js.map +1 -1
- package/dist/primitives/Carousel/index.cjs +2 -2
- package/dist/primitives/Carousel/index.cjs.map +1 -1
- package/dist/primitives/Carousel/index.js +2 -2
- package/dist/primitives/Carousel/index.js.map +1 -1
- package/dist/primitives/Chart/index.cjs +12 -12
- package/dist/primitives/Chart/index.cjs.map +1 -1
- package/dist/primitives/Chart/index.js +12 -12
- package/dist/primitives/Chart/index.js.map +1 -1
- package/dist/primitives/Checkbox/index.cjs +6 -6
- package/dist/primitives/Checkbox/index.cjs.map +1 -1
- package/dist/primitives/Checkbox/index.js +6 -6
- package/dist/primitives/Checkbox/index.js.map +1 -1
- package/dist/primitives/CheckboxTree/index.cjs +2 -2
- package/dist/primitives/CheckboxTree/index.cjs.map +1 -1
- package/dist/primitives/CheckboxTree/index.js +2 -2
- package/dist/primitives/CheckboxTree/index.js.map +1 -1
- package/dist/primitives/Command/index.cjs +9 -9
- package/dist/primitives/Command/index.cjs.map +1 -1
- package/dist/primitives/Command/index.js +9 -9
- package/dist/primitives/Command/index.js.map +1 -1
- package/dist/primitives/ContextMenu/index.cjs +10 -10
- package/dist/primitives/ContextMenu/index.cjs.map +1 -1
- package/dist/primitives/ContextMenu/index.js +10 -10
- package/dist/primitives/ContextMenu/index.js.map +1 -1
- package/dist/primitives/Credits/index.cjs +4 -4
- package/dist/primitives/Credits/index.cjs.map +1 -1
- package/dist/primitives/Credits/index.js +4 -4
- package/dist/primitives/Credits/index.js.map +1 -1
- package/dist/primitives/Dialog/index.cjs +5 -5
- package/dist/primitives/Dialog/index.cjs.map +1 -1
- package/dist/primitives/Dialog/index.js +5 -5
- package/dist/primitives/Dialog/index.js.map +1 -1
- package/dist/primitives/Drawer/index.cjs +5 -5
- package/dist/primitives/Drawer/index.cjs.map +1 -1
- package/dist/primitives/Drawer/index.js +5 -5
- package/dist/primitives/Drawer/index.js.map +1 -1
- package/dist/primitives/DropdownMenu/index.cjs +9 -9
- package/dist/primitives/DropdownMenu/index.cjs.map +1 -1
- package/dist/primitives/DropdownMenu/index.js +9 -9
- package/dist/primitives/DropdownMenu/index.js.map +1 -1
- package/dist/primitives/Empty/index.cjs +4 -4
- package/dist/primitives/Empty/index.cjs.map +1 -1
- package/dist/primitives/Empty/index.js +4 -4
- package/dist/primitives/Empty/index.js.map +1 -1
- package/dist/primitives/Field/index.cjs +5 -5
- package/dist/primitives/Field/index.cjs.map +1 -1
- package/dist/primitives/Field/index.js +5 -5
- package/dist/primitives/Field/index.js.map +1 -1
- package/dist/primitives/Form/index.cjs +1 -1
- package/dist/primitives/Form/index.cjs.map +1 -1
- package/dist/primitives/Form/index.js +1 -1
- package/dist/primitives/Form/index.js.map +1 -1
- package/dist/primitives/Heading/index.cjs +2 -2
- package/dist/primitives/Heading/index.cjs.map +1 -1
- package/dist/primitives/Heading/index.js +2 -2
- package/dist/primitives/Heading/index.js.map +1 -1
- package/dist/primitives/HoverCard/index.cjs +1 -1
- package/dist/primitives/HoverCard/index.cjs.map +1 -1
- package/dist/primitives/HoverCard/index.js +1 -1
- package/dist/primitives/HoverCard/index.js.map +1 -1
- package/dist/primitives/InfoBanner/index.cjs +12 -12
- package/dist/primitives/InfoBanner/index.cjs.map +1 -1
- package/dist/primitives/InfoBanner/index.js +12 -12
- package/dist/primitives/InfoBanner/index.js.map +1 -1
- package/dist/primitives/Input/index.cjs +13 -7
- package/dist/primitives/Input/index.cjs.map +1 -1
- package/dist/primitives/Input/index.js +13 -7
- package/dist/primitives/Input/index.js.map +1 -1
- package/dist/primitives/InputGroup/index.cjs +7 -7
- package/dist/primitives/InputGroup/index.cjs.map +1 -1
- package/dist/primitives/InputGroup/index.js +7 -7
- package/dist/primitives/InputGroup/index.js.map +1 -1
- package/dist/primitives/InputOtp/index.cjs +3 -3
- package/dist/primitives/InputOtp/index.cjs.map +1 -1
- package/dist/primitives/InputOtp/index.js +3 -3
- package/dist/primitives/InputOtp/index.js.map +1 -1
- package/dist/primitives/Item/index.cjs +6 -6
- package/dist/primitives/Item/index.cjs.map +1 -1
- package/dist/primitives/Item/index.js +6 -6
- package/dist/primitives/Item/index.js.map +1 -1
- package/dist/primitives/Kbd/index.cjs +1 -1
- package/dist/primitives/Kbd/index.cjs.map +1 -1
- package/dist/primitives/Kbd/index.js +1 -1
- package/dist/primitives/Kbd/index.js.map +1 -1
- package/dist/primitives/Link/index.cjs +4 -4
- package/dist/primitives/Link/index.cjs.map +1 -1
- package/dist/primitives/Link/index.js +4 -4
- package/dist/primitives/Link/index.js.map +1 -1
- package/dist/primitives/Menubar/index.cjs +12 -12
- package/dist/primitives/Menubar/index.cjs.map +1 -1
- package/dist/primitives/Menubar/index.js +12 -12
- package/dist/primitives/Menubar/index.js.map +1 -1
- package/dist/primitives/NativeSelect/index.cjs +5 -5
- package/dist/primitives/NativeSelect/index.cjs.map +1 -1
- package/dist/primitives/NativeSelect/index.js +5 -5
- package/dist/primitives/NativeSelect/index.js.map +1 -1
- package/dist/primitives/NavRail/index.cjs +9 -194
- package/dist/primitives/NavRail/index.d.cts +1 -0
- package/dist/primitives/NavRail/index.d.ts +1 -0
- package/dist/primitives/NavRail/index.js +1 -184
- package/dist/primitives/NavigationMenu/index.cjs +7 -7
- package/dist/primitives/NavigationMenu/index.cjs.map +1 -1
- package/dist/primitives/NavigationMenu/index.js +7 -7
- package/dist/primitives/NavigationMenu/index.js.map +1 -1
- package/dist/primitives/Pagination/index.cjs +7 -13
- package/dist/primitives/Pagination/index.cjs.map +1 -1
- package/dist/primitives/Pagination/index.d.cts +1 -1
- package/dist/primitives/Pagination/index.d.ts +1 -1
- package/dist/primitives/Pagination/index.js +8 -14
- package/dist/primitives/Pagination/index.js.map +1 -1
- package/dist/primitives/Popover/index.cjs +4 -4
- package/dist/primitives/Popover/index.cjs.map +1 -1
- package/dist/primitives/Popover/index.js +4 -4
- package/dist/primitives/Popover/index.js.map +1 -1
- package/dist/primitives/Progress/index.cjs +16 -16
- package/dist/primitives/Progress/index.cjs.map +1 -1
- package/dist/primitives/Progress/index.d.cts +1 -1
- package/dist/primitives/Progress/index.d.ts +1 -1
- package/dist/primitives/Progress/index.js +16 -16
- package/dist/primitives/Progress/index.js.map +1 -1
- package/dist/primitives/RadioGroup/index.cjs +7 -7
- package/dist/primitives/RadioGroup/index.cjs.map +1 -1
- package/dist/primitives/RadioGroup/index.d.cts +1 -1
- package/dist/primitives/RadioGroup/index.d.ts +1 -1
- package/dist/primitives/RadioGroup/index.js +7 -7
- package/dist/primitives/RadioGroup/index.js.map +1 -1
- package/dist/primitives/Resizable/index.cjs +2 -2
- package/dist/primitives/Resizable/index.cjs.map +1 -1
- package/dist/primitives/Resizable/index.d.cts +1 -1
- package/dist/primitives/Resizable/index.d.ts +1 -1
- package/dist/primitives/Resizable/index.js +2 -2
- package/dist/primitives/Resizable/index.js.map +1 -1
- package/dist/primitives/ScrollArea/index.cjs +2 -2
- package/dist/primitives/ScrollArea/index.cjs.map +1 -1
- package/dist/primitives/ScrollArea/index.d.cts +1 -1
- package/dist/primitives/ScrollArea/index.d.ts +1 -1
- package/dist/primitives/ScrollArea/index.js +2 -2
- package/dist/primitives/ScrollArea/index.js.map +1 -1
- package/dist/primitives/Select/index.cjs +8 -8
- package/dist/primitives/Select/index.cjs.map +1 -1
- package/dist/primitives/Select/index.d.cts +1 -1
- package/dist/primitives/Select/index.d.ts +1 -1
- package/dist/primitives/Select/index.js +8 -8
- package/dist/primitives/Select/index.js.map +1 -1
- package/dist/primitives/Separator/index.cjs +1 -1
- package/dist/primitives/Separator/index.cjs.map +1 -1
- package/dist/primitives/Separator/index.js +1 -1
- package/dist/primitives/Separator/index.js.map +1 -1
- package/dist/primitives/Sheet/index.cjs +8 -8
- package/dist/primitives/Sheet/index.cjs.map +1 -1
- package/dist/primitives/Sheet/index.d.cts +1 -1
- package/dist/primitives/Sheet/index.d.ts +1 -1
- package/dist/primitives/Sheet/index.js +8 -8
- package/dist/primitives/Sheet/index.js.map +1 -1
- package/dist/primitives/Sidebar/index.d.cts +1 -1
- package/dist/primitives/Sidebar/index.d.ts +1 -1
- package/dist/primitives/Skeleton/index.cjs +2 -2
- package/dist/primitives/Skeleton/index.cjs.map +1 -1
- package/dist/primitives/Skeleton/index.d.cts +1 -1
- package/dist/primitives/Skeleton/index.d.ts +1 -1
- package/dist/primitives/Skeleton/index.js +2 -2
- package/dist/primitives/Skeleton/index.js.map +1 -1
- package/dist/primitives/Slider/index.cjs +3 -3
- package/dist/primitives/Slider/index.cjs.map +1 -1
- package/dist/primitives/Slider/index.d.cts +1 -1
- package/dist/primitives/Slider/index.d.ts +1 -1
- package/dist/primitives/Slider/index.js +3 -3
- package/dist/primitives/Slider/index.js.map +1 -1
- package/dist/primitives/Sonner/index.cjs +13 -6
- package/dist/primitives/Sonner/index.cjs.map +1 -1
- package/dist/primitives/Sonner/index.d.cts +1 -1
- package/dist/primitives/Sonner/index.d.ts +1 -1
- package/dist/primitives/Sonner/index.js +13 -6
- package/dist/primitives/Sonner/index.js.map +1 -1
- package/dist/primitives/Spinner/index.d.cts +1 -1
- package/dist/primitives/Spinner/index.d.ts +1 -1
- package/dist/primitives/Switch/index.cjs +7 -7
- package/dist/primitives/Switch/index.cjs.map +1 -1
- package/dist/primitives/Switch/index.d.cts +1 -1
- package/dist/primitives/Switch/index.d.ts +1 -1
- package/dist/primitives/Switch/index.js +7 -7
- package/dist/primitives/Switch/index.js.map +1 -1
- package/dist/primitives/Table/index.cjs +7 -7
- package/dist/primitives/Table/index.cjs.map +1 -1
- package/dist/primitives/Table/index.d.cts +1 -1
- package/dist/primitives/Table/index.d.ts +1 -1
- package/dist/primitives/Table/index.js +7 -7
- package/dist/primitives/Table/index.js.map +1 -1
- package/dist/primitives/Tabs/index.cjs +21 -21
- package/dist/primitives/Tabs/index.cjs.map +1 -1
- package/dist/primitives/Tabs/index.d.cts +1 -1
- package/dist/primitives/Tabs/index.d.ts +1 -1
- package/dist/primitives/Tabs/index.js +21 -21
- package/dist/primitives/Tabs/index.js.map +1 -1
- package/dist/primitives/Text/index.cjs +5 -5
- package/dist/primitives/Text/index.cjs.map +1 -1
- package/dist/primitives/Text/index.d.cts +1 -1
- package/dist/primitives/Text/index.d.ts +1 -1
- package/dist/primitives/Text/index.js +5 -5
- package/dist/primitives/Text/index.js.map +1 -1
- package/dist/primitives/Textarea/index.cjs +20 -8
- package/dist/primitives/Textarea/index.cjs.map +1 -1
- package/dist/primitives/Textarea/index.d.cts +1 -1
- package/dist/primitives/Textarea/index.d.ts +1 -1
- package/dist/primitives/Textarea/index.js +20 -8
- package/dist/primitives/Textarea/index.js.map +1 -1
- package/dist/primitives/ThemeProvider/index.d.cts +1 -1
- package/dist/primitives/ThemeProvider/index.d.ts +1 -1
- package/dist/primitives/Toggle/index.cjs +11 -10
- package/dist/primitives/Toggle/index.cjs.map +1 -1
- package/dist/primitives/Toggle/index.d.cts +1 -1
- package/dist/primitives/Toggle/index.d.ts +1 -1
- package/dist/primitives/Toggle/index.js +11 -10
- package/dist/primitives/Toggle/index.js.map +1 -1
- package/dist/primitives/ToggleGroup/index.cjs +2 -2
- package/dist/primitives/ToggleGroup/index.cjs.map +1 -1
- package/dist/primitives/ToggleGroup/index.d.cts +1 -1
- package/dist/primitives/ToggleGroup/index.d.ts +1 -1
- package/dist/primitives/ToggleGroup/index.js +2 -2
- package/dist/primitives/ToggleGroup/index.js.map +1 -1
- package/dist/primitives/Tooltip/index.cjs +2 -2
- package/dist/primitives/Tooltip/index.cjs.map +1 -1
- package/dist/primitives/Tooltip/index.d.cts +1 -1
- package/dist/primitives/Tooltip/index.d.ts +1 -1
- package/dist/primitives/Tooltip/index.js +2 -2
- package/dist/primitives/Tooltip/index.js.map +1 -1
- package/dist/primitives/index.cjs +10 -10
- package/dist/primitives/index.d.cts +21 -21
- package/dist/primitives/index.d.ts +21 -21
- package/dist/primitives/index.js +2 -2
- package/dist/styles/base.css +23 -4
- package/dist/styles/brand-scopes.css +49 -0
- package/dist/styles/glass.css +13 -8
- package/dist/styles/index.css +8 -9
- package/dist/styles/theme.css +141 -90
- package/dist/styles/tokens/border-radius.css +8 -8
- package/dist/styles/tokens/mode-dark.css +71 -94
- package/dist/styles/tokens/mode-light.css +71 -94
- package/dist/styles/tokens/shadows.css +4 -7
- package/dist/styles/tokens/spacing.css +17 -37
- package/dist/styles/tokens/theme-bodhi.css +6 -28
- package/dist/styles/tokens/theme-slingshot.css +7 -28
- package/dist/styles/tokens/theme-sustain.css +6 -28
- package/dist/styles/typography.css +9 -9
- package/package.json +8 -2
- package/dist/index44.d.cts.map +0 -1
- package/dist/index44.d.ts.map +0 -1
- package/dist/primitives/NavRail/index.cjs.map +0 -1
- package/dist/primitives/NavRail/index.js.map +0 -1
- package/dist/styles/semantic.css +0 -178
- package/dist/styles/tokens/alpha.css +0 -39
- package/dist/styles/tokens/chart-colors-dark.css +0 -18
- package/dist/styles/tokens/chart-colors-light.css +0 -18
- 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,
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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",
|