@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["React","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","Button","cn","ArrowUpIcon","ArrowDownIcon","ChevronsUpDownIcon"],"sources":["../../../src/patterns/DataTable/DataTable.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type Column,\n type ColumnDef,\n type RowSelectionState,\n type SortingState,\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { ArrowDownIcon, ArrowUpIcon, ChevronsUpDownIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Button } from \"@/primitives/Button\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/primitives/Table\";\nimport { cn } from \"@/utils\";\n\ntype DataTableProps<TData, TValue> = {\n /** TanStack Table column definitions describing each column's header and cell. */\n columns: ColumnDef<TData, TValue>[];\n /** The row objects to render in the table body. */\n data: TData[];\n /** Zebra-stripe the rows (default true). */\n striped?: boolean;\n /** Client-side pagination + page size (default true, 10). */\n enablePagination?: boolean;\n /** Rows per page when pagination is enabled (default 10). */\n pageSize?: number;\n};\n\n/**\n * TanStack-Table-backed data table with sorting, row selection, and optional\n * client-side pagination, rendered through the Table primitives.\n */\nfunction DataTable<TData, TValue>({\n columns,\n data,\n striped = true,\n enablePagination = true,\n pageSize = 10,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({});\n\n const table = useReactTable({\n data,\n columns,\n state: { sorting, rowSelection },\n onSortingChange: setSorting,\n onRowSelectionChange: setRowSelection,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n initialState: { pagination: { pageSize } },\n });\n\n return (\n <div data-slot=\"data-table\" className=\"space-y-4\">\n <div className=\"overflow-
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["React","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","Button","cn","ArrowUpIcon","ArrowDownIcon","ChevronsUpDownIcon"],"sources":["../../../src/patterns/DataTable/DataTable.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type Column,\n type ColumnDef,\n type RowSelectionState,\n type SortingState,\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { ArrowDownIcon, ArrowUpIcon, ChevronsUpDownIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Button } from \"@/primitives/Button\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/primitives/Table\";\nimport { cn } from \"@/utils\";\n\ntype DataTableProps<TData, TValue> = {\n /** TanStack Table column definitions describing each column's header and cell. */\n columns: ColumnDef<TData, TValue>[];\n /** The row objects to render in the table body. */\n data: TData[];\n /** Zebra-stripe the rows (default true). */\n striped?: boolean;\n /** Client-side pagination + page size (default true, 10). */\n enablePagination?: boolean;\n /** Rows per page when pagination is enabled (default 10). */\n pageSize?: number;\n};\n\n/**\n * TanStack-Table-backed data table with sorting, row selection, and optional\n * client-side pagination, rendered through the Table primitives.\n */\nfunction DataTable<TData, TValue>({\n columns,\n data,\n striped = true,\n enablePagination = true,\n pageSize = 10,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({});\n\n const table = useReactTable({\n data,\n columns,\n state: { sorting, rowSelection },\n onSortingChange: setSorting,\n onRowSelectionChange: setRowSelection,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n initialState: { pagination: { pageSize } },\n });\n\n return (\n <div data-slot=\"data-table\" className=\"space-y-4\">\n <div className=\"overflow-x-auto\">\n <Table striped={striped}>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n colSpan={header.colSpan}\n // Data Table header spec: glass-60 band, mini/medium 12/16.\n className=\"h-auto bg-glass-60-bg backdrop-blur-glass px-2 py-2 text-xs leading-4 font-medium\"\n >\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() ? \"selected\" : undefined}\n className=\"hover:bg-muted-bg data-[state=selected]:bg-secondary-bg\"\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id} className=\"px-2 py-2 text-xs leading-4\">\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center text-muted-txt\">\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n {enablePagination ? (\n <div className=\"flex items-center justify-between gap-4\">\n <p className=\"text-sm text-muted-txt\" data-slot=\"data-table-selection\">\n {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n {table.getFilteredRowModel().rows.length} row(s) selected.\n </p>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-txt\">\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount() || 1}\n </span>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Previous\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n </Button>\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n\n/** Sortable column header — drop into a column's `header` to get click-to-sort. */\nfunction DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: {\n /** The TanStack Table column instance this header controls. */\n column: Column<TData, TValue>;\n /** Visible label for the column. */\n title: string;\n /** Optional class applied to the header button (or span when unsortable). */\n className?: string;\n}) {\n if (!column.getCanSort()) {\n return <span className={className}>{title}</span>;\n }\n\n const sorted = column.getIsSorted();\n\n return (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\"-ml-2 h-8 text-xs leading-4 font-medium\", className)}\n onClick={() => column.toggleSorting(sorted === \"asc\")}\n >\n {title}\n {sorted === \"asc\" ? (\n <ArrowUpIcon />\n ) : sorted === \"desc\" ? (\n <ArrowDownIcon />\n ) : (\n <ChevronsUpDownIcon className=\"opacity-50\" />\n )}\n </Button>\n );\n}\n\nexport { DataTable, DataTableColumnHeader };\nexport type { ColumnDef };\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime47 from "react/jsx-runtime";
|
|
2
2
|
import { Column, ColumnDef } from "@tanstack/react-table";
|
|
3
3
|
|
|
4
4
|
//#region src/patterns/DataTable/DataTable.d.ts
|
|
@@ -24,7 +24,7 @@ declare function DataTable<TData, TValue>({
|
|
|
24
24
|
striped,
|
|
25
25
|
enablePagination,
|
|
26
26
|
pageSize
|
|
27
|
-
}: DataTableProps<TData, TValue>):
|
|
27
|
+
}: DataTableProps<TData, TValue>): react_jsx_runtime47.JSX.Element;
|
|
28
28
|
/** Sortable column header — drop into a column's `header` to get click-to-sort. */
|
|
29
29
|
declare function DataTableColumnHeader<TData, TValue>({
|
|
30
30
|
column,
|
|
@@ -37,7 +37,7 @@ declare function DataTableColumnHeader<TData, TValue>({
|
|
|
37
37
|
title: string;
|
|
38
38
|
/** Optional class applied to the header button (or span when unsortable). */
|
|
39
39
|
className?: string;
|
|
40
|
-
}):
|
|
40
|
+
}): react_jsx_runtime47.JSX.Element;
|
|
41
41
|
//#endregion
|
|
42
42
|
export { type ColumnDef, DataTable, DataTableColumnHeader };
|
|
43
43
|
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/patterns/DataTable/DataTable.tsx"],"mappings":";;;;KAoBK;;WAEM,UAAU,OAAO;EAFvB;EAAc,IAAA,EAIX,KAJW,EAAA;;SAES,CAAA,EAAA,OAAA;;kBAEpB,CAAA,EAAA,OAAA;EAAK;EAaJ,QAAA,CAAA,EAAA,MAAS;CAAA;;;;;iBAAT,SAKP,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA;EAAA,OAAA;EAAA,IAAA;EAAA,OAAA;EAAA,gBAAA;EAAA;AAAA,CAAA,EACC,cADD,CACgB,KADhB,EACuB,MADvB,CAAA,CAAA,EAC8B,
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/patterns/DataTable/DataTable.tsx"],"mappings":";;;;KAoBK;;WAEM,UAAU,OAAO;EAFvB;EAAc,IAAA,EAIX,KAJW,EAAA;;SAES,CAAA,EAAA,OAAA;;kBAEpB,CAAA,EAAA,OAAA;EAAK;EAaJ,QAAA,CAAA,EAAA,MAAS;CAAA;;;;;iBAAT,SAKP,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA;EAAA,OAAA;EAAA,IAAA;EAAA,OAAA;EAAA,gBAAA;EAAA;AAAA,CAAA,EACC,cADD,CACgB,KADhB,EACuB,MADvB,CAAA,CAAA,EAC8B,mBAAA,CAAA,GAAA,CAAA,OAD9B;;iBAmGO,qBAlGgB,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA;EAAA,MAAA;EAAA,KAAA;EAAA;CAAA,EAAA;;QAAO,EAwGtB,MAxGsB,CAwGf,KAxGe,EAwGR,MAxGQ,CAAA;EAAA;EAkGvB,KAAA,EAAA,MAAA;EAAqB;WAC5B,CAAA,EAAA,MAAA;IAUD,mBAAA,CAAA,GAAA,CAAA,OATC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime231 from "react/jsx-runtime";
|
|
2
2
|
import { Column, ColumnDef } from "@tanstack/react-table";
|
|
3
3
|
|
|
4
4
|
//#region src/patterns/DataTable/DataTable.d.ts
|
|
@@ -24,7 +24,7 @@ declare function DataTable<TData, TValue>({
|
|
|
24
24
|
striped,
|
|
25
25
|
enablePagination,
|
|
26
26
|
pageSize
|
|
27
|
-
}: DataTableProps<TData, TValue>):
|
|
27
|
+
}: DataTableProps<TData, TValue>): react_jsx_runtime231.JSX.Element;
|
|
28
28
|
/** Sortable column header — drop into a column's `header` to get click-to-sort. */
|
|
29
29
|
declare function DataTableColumnHeader<TData, TValue>({
|
|
30
30
|
column,
|
|
@@ -37,7 +37,7 @@ declare function DataTableColumnHeader<TData, TValue>({
|
|
|
37
37
|
title: string;
|
|
38
38
|
/** Optional class applied to the header button (or span when unsortable). */
|
|
39
39
|
className?: string;
|
|
40
|
-
}):
|
|
40
|
+
}): react_jsx_runtime231.JSX.Element;
|
|
41
41
|
//#endregion
|
|
42
42
|
export { type ColumnDef, DataTable, DataTableColumnHeader };
|
|
43
43
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/patterns/DataTable/DataTable.tsx"],"mappings":";;;;KAoBK;;WAEM,UAAU,OAAO;EAFvB;EAAc,IAAA,EAIX,KAJW,EAAA;;SAES,CAAA,EAAA,OAAA;;kBAEpB,CAAA,EAAA,OAAA;EAAK;EAaJ,QAAA,CAAA,EAAA,MAAS;CAAA;;;;;iBAAT,SAKP,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA;EAAA,OAAA;EAAA,IAAA;EAAA,OAAA;EAAA,gBAAA;EAAA;AAAA,CAAA,EACC,cADD,CACgB,KADhB,EACuB,MADvB,CAAA,CAAA,EAC8B,oBAAA,CAAA,GAAA,CAAA,OAD9B;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/patterns/DataTable/DataTable.tsx"],"mappings":";;;;KAoBK;;WAEM,UAAU,OAAO;EAFvB;EAAc,IAAA,EAIX,KAJW,EAAA;;SAES,CAAA,EAAA,OAAA;;kBAEpB,CAAA,EAAA,OAAA;EAAK;EAaJ,QAAA,CAAA,EAAA,MAAS;CAAA;;;;;iBAAT,SAKP,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA;EAAA,OAAA;EAAA,IAAA;EAAA,OAAA;EAAA,gBAAA;EAAA;AAAA,CAAA,EACC,cADD,CACgB,KADhB,EACuB,MADvB,CAAA,CAAA,EAC8B,oBAAA,CAAA,GAAA,CAAA,OAD9B;;iBAmGO,qBAlGgB,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA;EAAA,MAAA;EAAA,KAAA;EAAA;CAAA,EAAA;;QAAO,EAwGtB,MAxGsB,CAwGf,KAxGe,EAwGR,MAxGQ,CAAA;EAAA;EAkGvB,KAAA,EAAA,MAAA;EAAqB;WAC5B,CAAA,EAAA,MAAA;IAUD,oBAAA,CAAA,GAAA,CAAA,OATC"}
|
|
@@ -31,25 +31,30 @@ function DataTable({ columns, data, striped = true, enablePagination = true, pag
|
|
|
31
31
|
"data-slot": "data-table",
|
|
32
32
|
className: "space-y-4",
|
|
33
33
|
children: [/* @__PURE__ */ jsx("div", {
|
|
34
|
-
className: "overflow-
|
|
34
|
+
className: "overflow-x-auto",
|
|
35
35
|
children: /* @__PURE__ */ jsxs(Table, {
|
|
36
36
|
striped,
|
|
37
37
|
children: [/* @__PURE__ */ jsx(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx(TableHead, {
|
|
38
38
|
colSpan: header.colSpan,
|
|
39
|
+
className: "h-auto bg-glass-60-bg backdrop-blur-glass px-2 py-2 text-xs leading-4 font-medium",
|
|
39
40
|
children: header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())
|
|
40
41
|
}, header.id)) }, headerGroup.id)) }), /* @__PURE__ */ jsx(TableBody, { children: table.getRowModel().rows.length ? table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx(TableRow, {
|
|
41
42
|
"data-state": row.getIsSelected() ? "selected" : void 0,
|
|
42
|
-
|
|
43
|
+
className: "hover:bg-muted-bg data-[state=selected]:bg-secondary-bg",
|
|
44
|
+
children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx(TableCell, {
|
|
45
|
+
className: "px-2 py-2 text-xs leading-4",
|
|
46
|
+
children: flexRender(cell.column.columnDef.cell, cell.getContext())
|
|
47
|
+
}, cell.id))
|
|
43
48
|
}, row.id)) : /* @__PURE__ */ jsx(TableRow, { children: /* @__PURE__ */ jsx(TableCell, {
|
|
44
49
|
colSpan: columns.length,
|
|
45
|
-
className: "h-24 text-center text-muted-
|
|
50
|
+
className: "h-24 text-center text-muted-txt",
|
|
46
51
|
children: "No results."
|
|
47
52
|
}) }) })]
|
|
48
53
|
})
|
|
49
54
|
}), enablePagination ? /* @__PURE__ */ jsxs("div", {
|
|
50
55
|
className: "flex items-center justify-between gap-4",
|
|
51
56
|
children: [/* @__PURE__ */ jsxs("p", {
|
|
52
|
-
className: "text-sm text-muted-
|
|
57
|
+
className: "text-sm text-muted-txt",
|
|
53
58
|
"data-slot": "data-table-selection",
|
|
54
59
|
children: [
|
|
55
60
|
table.getFilteredSelectedRowModel().rows.length,
|
|
@@ -62,7 +67,7 @@ function DataTable({ columns, data, striped = true, enablePagination = true, pag
|
|
|
62
67
|
className: "flex items-center gap-2",
|
|
63
68
|
children: [
|
|
64
69
|
/* @__PURE__ */ jsxs("span", {
|
|
65
|
-
className: "text-sm text-muted-
|
|
70
|
+
className: "text-sm text-muted-txt",
|
|
66
71
|
children: [
|
|
67
72
|
"Page ",
|
|
68
73
|
table.getState().pagination.pageIndex + 1,
|
|
@@ -99,9 +104,9 @@ function DataTableColumnHeader({ column, title, className }) {
|
|
|
99
104
|
return /* @__PURE__ */ jsxs(Button, {
|
|
100
105
|
variant: "ghost",
|
|
101
106
|
size: "sm",
|
|
102
|
-
className: cn("-ml-2 h-8", className),
|
|
107
|
+
className: cn("-ml-2 h-8 text-xs leading-4 font-medium", className),
|
|
103
108
|
onClick: () => column.toggleSorting(sorted === "asc"),
|
|
104
|
-
children: [title, sorted === "asc" ? /* @__PURE__ */ jsx(ArrowUpIcon, {}) : sorted === "desc" ? /* @__PURE__ */ jsx(ArrowDownIcon, {}) : /* @__PURE__ */ jsx(ChevronsUpDownIcon, {})]
|
|
109
|
+
children: [title, sorted === "asc" ? /* @__PURE__ */ jsx(ArrowUpIcon, {}) : sorted === "desc" ? /* @__PURE__ */ jsx(ArrowDownIcon, {}) : /* @__PURE__ */ jsx(ChevronsUpDownIcon, { className: "opacity-50" })]
|
|
105
110
|
});
|
|
106
111
|
}
|
|
107
112
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/patterns/DataTable/DataTable.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type Column,\n type ColumnDef,\n type RowSelectionState,\n type SortingState,\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { ArrowDownIcon, ArrowUpIcon, ChevronsUpDownIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Button } from \"@/primitives/Button\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/primitives/Table\";\nimport { cn } from \"@/utils\";\n\ntype DataTableProps<TData, TValue> = {\n /** TanStack Table column definitions describing each column's header and cell. */\n columns: ColumnDef<TData, TValue>[];\n /** The row objects to render in the table body. */\n data: TData[];\n /** Zebra-stripe the rows (default true). */\n striped?: boolean;\n /** Client-side pagination + page size (default true, 10). */\n enablePagination?: boolean;\n /** Rows per page when pagination is enabled (default 10). */\n pageSize?: number;\n};\n\n/**\n * TanStack-Table-backed data table with sorting, row selection, and optional\n * client-side pagination, rendered through the Table primitives.\n */\nfunction DataTable<TData, TValue>({\n columns,\n data,\n striped = true,\n enablePagination = true,\n pageSize = 10,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({});\n\n const table = useReactTable({\n data,\n columns,\n state: { sorting, rowSelection },\n onSortingChange: setSorting,\n onRowSelectionChange: setRowSelection,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n initialState: { pagination: { pageSize } },\n });\n\n return (\n <div data-slot=\"data-table\" className=\"space-y-4\">\n <div className=\"overflow-
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/patterns/DataTable/DataTable.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n type Column,\n type ColumnDef,\n type RowSelectionState,\n type SortingState,\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { ArrowDownIcon, ArrowUpIcon, ChevronsUpDownIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Button } from \"@/primitives/Button\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/primitives/Table\";\nimport { cn } from \"@/utils\";\n\ntype DataTableProps<TData, TValue> = {\n /** TanStack Table column definitions describing each column's header and cell. */\n columns: ColumnDef<TData, TValue>[];\n /** The row objects to render in the table body. */\n data: TData[];\n /** Zebra-stripe the rows (default true). */\n striped?: boolean;\n /** Client-side pagination + page size (default true, 10). */\n enablePagination?: boolean;\n /** Rows per page when pagination is enabled (default 10). */\n pageSize?: number;\n};\n\n/**\n * TanStack-Table-backed data table with sorting, row selection, and optional\n * client-side pagination, rendered through the Table primitives.\n */\nfunction DataTable<TData, TValue>({\n columns,\n data,\n striped = true,\n enablePagination = true,\n pageSize = 10,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({});\n\n const table = useReactTable({\n data,\n columns,\n state: { sorting, rowSelection },\n onSortingChange: setSorting,\n onRowSelectionChange: setRowSelection,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n initialState: { pagination: { pageSize } },\n });\n\n return (\n <div data-slot=\"data-table\" className=\"space-y-4\">\n <div className=\"overflow-x-auto\">\n <Table striped={striped}>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n colSpan={header.colSpan}\n // Data Table header spec: glass-60 band, mini/medium 12/16.\n className=\"h-auto bg-glass-60-bg backdrop-blur-glass px-2 py-2 text-xs leading-4 font-medium\"\n >\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() ? \"selected\" : undefined}\n className=\"hover:bg-muted-bg data-[state=selected]:bg-secondary-bg\"\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id} className=\"px-2 py-2 text-xs leading-4\">\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center text-muted-txt\">\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n {enablePagination ? (\n <div className=\"flex items-center justify-between gap-4\">\n <p className=\"text-sm text-muted-txt\" data-slot=\"data-table-selection\">\n {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n {table.getFilteredRowModel().rows.length} row(s) selected.\n </p>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-txt\">\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount() || 1}\n </span>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Previous\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n </Button>\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n\n/** Sortable column header — drop into a column's `header` to get click-to-sort. */\nfunction DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: {\n /** The TanStack Table column instance this header controls. */\n column: Column<TData, TValue>;\n /** Visible label for the column. */\n title: string;\n /** Optional class applied to the header button (or span when unsortable). */\n className?: string;\n}) {\n if (!column.getCanSort()) {\n return <span className={className}>{title}</span>;\n }\n\n const sorted = column.getIsSorted();\n\n return (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\"-ml-2 h-8 text-xs leading-4 font-medium\", className)}\n onClick={() => column.toggleSorting(sorted === \"asc\")}\n >\n {title}\n {sorted === \"asc\" ? (\n <ArrowUpIcon />\n ) : sorted === \"desc\" ? (\n <ArrowDownIcon />\n ) : (\n <ChevronsUpDownIcon className=\"opacity-50\" />\n )}\n </Button>\n );\n}\n\nexport { DataTable, DataTableColumnHeader };\nexport type { ColumnDef };\n"],"mappings":"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"}
|
|
@@ -5,15 +5,15 @@ let react_jsx_runtime = require("react/jsx-runtime");
|
|
|
5
5
|
//#region src/patterns/Footer/Footer.tsx
|
|
6
6
|
const footerBackgrounds = {
|
|
7
7
|
none: "",
|
|
8
|
-
muted: "bg-muted",
|
|
9
|
-
glass: "bg-
|
|
8
|
+
muted: "bg-muted-bg",
|
|
9
|
+
glass: "bg-glass-20-bg backdrop-blur-glass"
|
|
10
10
|
};
|
|
11
11
|
/** App chrome shown at the bottom of a page: a responsive three-region row (start / center / end). */
|
|
12
12
|
function Footer({ className, bordered = false, background = "none", ...props }) {
|
|
13
13
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("footer", {
|
|
14
14
|
"data-slot": "footer",
|
|
15
15
|
"data-background": background,
|
|
16
|
-
className: require_cn.cn("grid w-full grid-cols-1 gap-3 px-
|
|
16
|
+
className: require_cn.cn("grid w-full grid-cols-1 gap-3 px-3 py-1 text-center md:grid-cols-3 md:items-center", "text-[length:var(--paragraph-mini-font-size)] leading-[var(--paragraph-mini-line-height)]", footerBackgrounds[background], bordered && "border-t border-primary-border", className),
|
|
17
17
|
...props
|
|
18
18
|
});
|
|
19
19
|
}
|
|
@@ -37,7 +37,7 @@ function FooterCenter({ className, ...props }) {
|
|
|
37
37
|
function FooterEnd({ className, ...props }) {
|
|
38
38
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
39
39
|
"data-slot": "footer-end",
|
|
40
|
-
className: require_cn.cn("flex flex-wrap items-center justify-center gap-
|
|
40
|
+
className: require_cn.cn("flex flex-wrap items-center justify-center gap-4 md:justify-end md:justify-self-end md:text-right", className),
|
|
41
41
|
...props
|
|
42
42
|
});
|
|
43
43
|
}
|
|
@@ -60,7 +60,7 @@ function FooterSeparator({ className, ...props }) {
|
|
|
60
60
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
61
61
|
"data-slot": "footer-separator",
|
|
62
62
|
"aria-hidden": "true",
|
|
63
|
-
className: require_cn.cn("select-none text-border", className),
|
|
63
|
+
className: require_cn.cn("select-none text-primary-border", className),
|
|
64
64
|
...props,
|
|
65
65
|
children: "|"
|
|
66
66
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["cn","Text"],"sources":["../../../src/patterns/Footer/Footer.tsx"],"sourcesContent":["import type * as React from \"react\";\n\nimport { Text } from \"@/primitives/Text\";\nimport { cn } from \"@/utils\";\n\n// Footer — app chrome shown at the bottom of a page. A responsive three-region\n// row: the regions stack centered on mobile and spread to start / center / end\n// on md+ (a grid, so the centre region stays centred regardless of the side\n// widths). Compose content from Text / Link / Logo; the helpers below cover the\n// common pieces (a \"Powered by\" lockup and a link separator).\n//\n// <Footer>\n// <FooterStart><Text size=\"mini\" variant=\"muted\">v2.6.0</Text></FooterStart>\n// <FooterCenter>\n// <FooterPoweredBy><Logo brand=\"slingshot\" variant=\"icon\" className=\"size-5\" /></FooterPoweredBy>\n// </FooterCenter>\n// <FooterEnd>\n// <Link href=\"/tnc\" underline=\"hover\">T&C</Link>\n// <FooterSeparator />\n// <Link href=\"/privacy\" underline=\"hover\">Privacy</Link>\n// </FooterEnd>\n// </Footer>\n\n// Surface fills. `glass` is a translucent, backdrop-blurred panel (same --glass-*\n// tokens as Card/Container) — reads over a textured page background.\nconst footerBackgrounds = {\n none: \"\",\n muted: \"bg-muted\",\n glass: \"bg-
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["cn","Text"],"sources":["../../../src/patterns/Footer/Footer.tsx"],"sourcesContent":["import type * as React from \"react\";\n\nimport { Text } from \"@/primitives/Text\";\nimport { cn } from \"@/utils\";\n\n// Footer — app chrome shown at the bottom of a page. A responsive three-region\n// row: the regions stack centered on mobile and spread to start / center / end\n// on md+ (a grid, so the centre region stays centred regardless of the side\n// widths). Compose content from Text / Link / Logo; the helpers below cover the\n// common pieces (a \"Powered by\" lockup and a link separator).\n//\n// <Footer>\n// <FooterStart><Text size=\"mini\" variant=\"muted\">v2.6.0</Text></FooterStart>\n// <FooterCenter>\n// <FooterPoweredBy><Logo brand=\"slingshot\" variant=\"icon\" className=\"size-5\" /></FooterPoweredBy>\n// </FooterCenter>\n// <FooterEnd>\n// <Link href=\"/tnc\" underline=\"hover\">T&C</Link>\n// <FooterSeparator />\n// <Link href=\"/privacy\" underline=\"hover\">Privacy</Link>\n// </FooterEnd>\n// </Footer>\n\n// Surface fills. `glass` is a translucent, backdrop-blurred panel (same --glass-*\n// tokens as Card/Container) — reads over a textured page background.\nconst footerBackgrounds = {\n none: \"\",\n muted: \"bg-muted-bg\",\n glass: \"bg-glass-20-bg backdrop-blur-glass\",\n} as const;\n\n/** App chrome shown at the bottom of a page: a responsive three-region row (start / center / end). */\nfunction Footer({\n className,\n bordered = false,\n background = \"none\",\n ...props\n}: React.ComponentProps<\"footer\"> & {\n /** Add a subtle top border separating the footer from page content. */\n bordered?: boolean;\n /** Surface fill. `glass` is a translucent, blurred panel over the page background. */\n background?: keyof typeof footerBackgrounds;\n}) {\n return (\n <footer\n data-slot=\"footer\"\n data-background={background}\n className={cn(\n // Footer content is small by default (matches the version text); links and\n // other unstyled children inherit this. Explicitly-sized <Text> is unaffected.\n \"grid w-full grid-cols-1 gap-3 px-3 py-1 text-center md:grid-cols-3 md:items-center\",\n \"text-[length:var(--paragraph-mini-font-size)] leading-[var(--paragraph-mini-line-height)]\",\n footerBackgrounds[background],\n bordered && \"border-t border-primary-border\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Leading region — left-aligned on md+ (e.g. an app version). */\nfunction FooterStart({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"footer-start\"\n className={cn(\n \"flex items-center justify-center gap-2 md:justify-self-start md:text-left\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Centre region — always centred (e.g. a \"Powered by\" lockup). */\nfunction FooterCenter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"footer-center\"\n className={cn(\"flex items-center justify-center gap-2 md:justify-self-center\", className)}\n {...props}\n />\n );\n}\n\n/** Trailing region — right-aligned on md+ (e.g. legal links). Wraps on small screens. */\nfunction FooterEnd({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"footer-end\"\n className={cn(\n \"flex flex-wrap items-center justify-center gap-4 md:justify-end md:justify-self-end md:text-right\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** \"Powered by\" lockup — the label plus a slot for the brand mark (a <Logo />). */\nfunction FooterPoweredBy({\n className,\n label = \"Powered by\",\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Override the default \"Powered by\" label. */\n label?: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"footer-powered-by\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n >\n <Text as=\"span\" size=\"small\" variant=\"muted\">\n {label}\n </Text>\n {children}\n </div>\n );\n}\n\n/** Visual divider between trailing links. */\nfunction FooterSeparator({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"footer-separator\"\n aria-hidden=\"true\"\n className={cn(\"select-none text-primary-border\", className)}\n {...props}\n >\n |\n </span>\n );\n}\n\nexport { Footer, FooterStart, FooterCenter, FooterEnd, FooterPoweredBy, FooterSeparator };\n"],"mappings":";;;;;AAyBA,MAAM,oBAAoB;CACxB,MAAM;CACN,OAAO;CACP,OAAO;AACT;;AAGA,SAAS,OAAO,EACd,WACA,WAAW,OACX,aAAa,QACb,GAAG,SAMF;CACD,OACE,iBAAA,GAAA,kBAAA,KAAC,UAAD;EACE,aAAU;EACV,mBAAiB;EACjB,WAAWA,WAAAA,GAGT,sFACA,6FACA,kBAAkB,aAClB,YAAY,kCACZ,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GACT,6EACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,aAAa,EAAE,WAAW,GAAG,SAAsC;CAC1E,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,iEAAiE,SAAS;EACxF,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;CACvE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GACT,qGACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,gBAAgB,EACvB,WACA,QAAQ,cACR,UACA,GAAG,SAIF;CACD,OACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,2BAA2B,SAAS;EAClD,GAAI;YAHN,CAKE,iBAAA,GAAA,kBAAA,KAACC,8BAAAA,MAAD;GAAM,IAAG;GAAO,MAAK;GAAQ,SAAQ;aAClC;EACG,CAAA,GACL,QACE;;AAET;;AAGA,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAuC;CAC9E,OACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;EACE,aAAU;EACV,eAAY;EACZ,WAAWD,WAAAA,GAAG,mCAAmC,SAAS;EAC1D,GAAI;YACL;CAEK,CAAA;AAEV"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime69 from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/patterns/Footer/Footer.d.ts
|
|
5
5
|
declare const footerBackgrounds: {
|
|
6
6
|
readonly none: "";
|
|
7
|
-
readonly muted: "bg-muted";
|
|
8
|
-
readonly glass: "bg-
|
|
7
|
+
readonly muted: "bg-muted-bg";
|
|
8
|
+
readonly glass: "bg-glass-20-bg backdrop-blur-glass";
|
|
9
9
|
};
|
|
10
10
|
/** App chrome shown at the bottom of a page: a responsive three-region row (start / center / end). */
|
|
11
11
|
declare function Footer({
|
|
@@ -18,22 +18,22 @@ declare function Footer({
|
|
|
18
18
|
bordered?: boolean;
|
|
19
19
|
/** Surface fill. `glass` is a translucent, blurred panel over the page background. */
|
|
20
20
|
background?: keyof typeof footerBackgrounds;
|
|
21
|
-
}):
|
|
21
|
+
}): react_jsx_runtime69.JSX.Element;
|
|
22
22
|
/** Leading region — left-aligned on md+ (e.g. an app version). */
|
|
23
23
|
declare function FooterStart({
|
|
24
24
|
className,
|
|
25
25
|
...props
|
|
26
|
-
}: React.ComponentProps<"div">):
|
|
26
|
+
}: React.ComponentProps<"div">): react_jsx_runtime69.JSX.Element;
|
|
27
27
|
/** Centre region — always centred (e.g. a "Powered by" lockup). */
|
|
28
28
|
declare function FooterCenter({
|
|
29
29
|
className,
|
|
30
30
|
...props
|
|
31
|
-
}: React.ComponentProps<"div">):
|
|
31
|
+
}: React.ComponentProps<"div">): react_jsx_runtime69.JSX.Element;
|
|
32
32
|
/** Trailing region — right-aligned on md+ (e.g. legal links). Wraps on small screens. */
|
|
33
33
|
declare function FooterEnd({
|
|
34
34
|
className,
|
|
35
35
|
...props
|
|
36
|
-
}: React.ComponentProps<"div">):
|
|
36
|
+
}: React.ComponentProps<"div">): react_jsx_runtime69.JSX.Element;
|
|
37
37
|
/** "Powered by" lockup — the label plus a slot for the brand mark (a <Logo />). */
|
|
38
38
|
declare function FooterPoweredBy({
|
|
39
39
|
className,
|
|
@@ -43,12 +43,12 @@ declare function FooterPoweredBy({
|
|
|
43
43
|
}: React.ComponentProps<"div"> & {
|
|
44
44
|
/** Override the default "Powered by" label. */
|
|
45
45
|
label?: React.ReactNode;
|
|
46
|
-
}):
|
|
46
|
+
}): react_jsx_runtime69.JSX.Element;
|
|
47
47
|
/** Visual divider between trailing links. */
|
|
48
48
|
declare function FooterSeparator({
|
|
49
49
|
className,
|
|
50
50
|
...props
|
|
51
|
-
}: React.ComponentProps<"span">):
|
|
51
|
+
}: React.ComponentProps<"span">): react_jsx_runtime69.JSX.Element;
|
|
52
52
|
//#endregion
|
|
53
53
|
export { Footer, FooterCenter, FooterEnd, FooterPoweredBy, FooterSeparator, FooterStart };
|
|
54
54
|
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/patterns/Footer/Footer.tsx"],"mappings":";;;;cAyBM;;;EAAA,SAAA,KAAA,EAAA,
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/patterns/Footer/Footer.tsx"],"mappings":";;;;cAyBM;;;EAAA,SAAA,KAAA,EAAA,oCAII;AAAA,CAAA;;iBAGD,MAAA,CACP;EAAA,SAAA;EAAA,QAAA;EAAA,UAAA;EAAA,GAAA;CAAA,EAIC,KAAA,CAAM,cAJP,CAAA,QAAA,CAAA,GAAA;;UAEA,CAAA,EAAA,OAAA;;YAM0B,CAAA,EAAA,MAAA,OAAA,iBAAA;IAC3B,mBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;AAAA,iBAoBQ,WAAA,CAAW;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAA0B,KAAA,CAAM,cAAhC,CAAA,KAAA,CAAA,CAAA,EAAqD,mBAAA,CAAA,GAAA,CAAA,OAArD;;iBAcX,YAAA,CAdc;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAcwB,KAAA,CAAM,cAd9B,CAAA,KAAA,CAAA,CAAA,EAcmD,mBAAA,CAAA,GAAA,CAAA,OAdnD;;iBAyBd,SAAA,CAzBgE;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAyB7B,KAAA,CAAM,cAzBuB,CAAA,KAAA,CAAA,CAAA,EAyBF,mBAAA,CAAA,GAAA,CAAA,OAzBE;AAAA;AAAA,iBAuChE,eAAA,CAzBY;EAAA,SAAA;EAAA,KAAA;EAAA,QAAA;EAAA,GAAA;CAAA,EA8BlB,KAAA,CAAM,cA9BY,CAAA,KAAA,CAAA,GAAA;EAAA;OAAG,CAAA,EAgCd,KAAA,CAAM,SAhCQ;IAiCvB,mBAAA,CAAA,GAAA,CAAA,OAjCoD;;AAAqB,iBAiDjE,eAAA,CAjDiE;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAiDxB,KAAA,CAAM,cAjDkB,CAAA,MAAA,CAAA,CAAA,EAiDI,mBAAA,CAAA,GAAA,CAAA,OAjDJ"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime225 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/patterns/Footer/Footer.d.ts
|
|
5
5
|
declare const footerBackgrounds: {
|
|
6
6
|
readonly none: "";
|
|
7
|
-
readonly muted: "bg-muted";
|
|
8
|
-
readonly glass: "bg-
|
|
7
|
+
readonly muted: "bg-muted-bg";
|
|
8
|
+
readonly glass: "bg-glass-20-bg backdrop-blur-glass";
|
|
9
9
|
};
|
|
10
10
|
/** App chrome shown at the bottom of a page: a responsive three-region row (start / center / end). */
|
|
11
11
|
declare function Footer({
|
|
@@ -18,22 +18,22 @@ declare function Footer({
|
|
|
18
18
|
bordered?: boolean;
|
|
19
19
|
/** Surface fill. `glass` is a translucent, blurred panel over the page background. */
|
|
20
20
|
background?: keyof typeof footerBackgrounds;
|
|
21
|
-
}):
|
|
21
|
+
}): react_jsx_runtime225.JSX.Element;
|
|
22
22
|
/** Leading region — left-aligned on md+ (e.g. an app version). */
|
|
23
23
|
declare function FooterStart({
|
|
24
24
|
className,
|
|
25
25
|
...props
|
|
26
|
-
}: React.ComponentProps<"div">):
|
|
26
|
+
}: React.ComponentProps<"div">): react_jsx_runtime225.JSX.Element;
|
|
27
27
|
/** Centre region — always centred (e.g. a "Powered by" lockup). */
|
|
28
28
|
declare function FooterCenter({
|
|
29
29
|
className,
|
|
30
30
|
...props
|
|
31
|
-
}: React.ComponentProps<"div">):
|
|
31
|
+
}: React.ComponentProps<"div">): react_jsx_runtime225.JSX.Element;
|
|
32
32
|
/** Trailing region — right-aligned on md+ (e.g. legal links). Wraps on small screens. */
|
|
33
33
|
declare function FooterEnd({
|
|
34
34
|
className,
|
|
35
35
|
...props
|
|
36
|
-
}: React.ComponentProps<"div">):
|
|
36
|
+
}: React.ComponentProps<"div">): react_jsx_runtime225.JSX.Element;
|
|
37
37
|
/** "Powered by" lockup — the label plus a slot for the brand mark (a <Logo />). */
|
|
38
38
|
declare function FooterPoweredBy({
|
|
39
39
|
className,
|
|
@@ -43,12 +43,12 @@ declare function FooterPoweredBy({
|
|
|
43
43
|
}: React.ComponentProps<"div"> & {
|
|
44
44
|
/** Override the default "Powered by" label. */
|
|
45
45
|
label?: React.ReactNode;
|
|
46
|
-
}):
|
|
46
|
+
}): react_jsx_runtime225.JSX.Element;
|
|
47
47
|
/** Visual divider between trailing links. */
|
|
48
48
|
declare function FooterSeparator({
|
|
49
49
|
className,
|
|
50
50
|
...props
|
|
51
|
-
}: React.ComponentProps<"span">):
|
|
51
|
+
}: React.ComponentProps<"span">): react_jsx_runtime225.JSX.Element;
|
|
52
52
|
//#endregion
|
|
53
53
|
export { Footer, FooterCenter, FooterEnd, FooterPoweredBy, FooterSeparator, FooterStart };
|
|
54
54
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/patterns/Footer/Footer.tsx"],"mappings":";;;;cAyBM;;;EAAA,SAAA,KAAA,EAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/patterns/Footer/Footer.tsx"],"mappings":";;;;cAyBM;;;EAAA,SAAA,KAAA,EAAA,oCAII;AAAA,CAAA;;iBAGD,MAAA,CACP;EAAA,SAAA;EAAA,QAAA;EAAA,UAAA;EAAA,GAAA;CAAA,EAIC,KAAA,CAAM,cAJP,CAAA,QAAA,CAAA,GAAA;;UAEA,CAAA,EAAA,OAAA;;YAM0B,CAAA,EAAA,MAAA,OAAA,iBAAA;IAC3B,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;AAAA,iBAoBQ,WAAA,CAAW;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAA0B,KAAA,CAAM,cAAhC,CAAA,KAAA,CAAA,CAAA,EAAqD,oBAAA,CAAA,GAAA,CAAA,OAArD;;iBAcX,YAAA,CAdc;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAcwB,KAAA,CAAM,cAd9B,CAAA,KAAA,CAAA,CAAA,EAcmD,oBAAA,CAAA,GAAA,CAAA,OAdnD;;iBAyBd,SAAA,CAzBgE;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAyB7B,KAAA,CAAM,cAzBuB,CAAA,KAAA,CAAA,CAAA,EAyBF,oBAAA,CAAA,GAAA,CAAA,OAzBE;AAAA;AAAA,iBAuChE,eAAA,CAzBY;EAAA,SAAA;EAAA,KAAA;EAAA,QAAA;EAAA,GAAA;CAAA,EA8BlB,KAAA,CAAM,cA9BY,CAAA,KAAA,CAAA,GAAA;EAAA;OAAG,CAAA,EAgCd,KAAA,CAAM,SAhCQ;IAiCvB,oBAAA,CAAA,GAAA,CAAA,OAjCoD;;AAAqB,iBAiDjE,eAAA,CAjDiE;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAiDxB,KAAA,CAAM,cAjDkB,CAAA,MAAA,CAAA,CAAA,EAiDI,oBAAA,CAAA,GAAA,CAAA,OAjDJ"}
|
|
@@ -4,15 +4,15 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
4
4
|
//#region src/patterns/Footer/Footer.tsx
|
|
5
5
|
const footerBackgrounds = {
|
|
6
6
|
none: "",
|
|
7
|
-
muted: "bg-muted",
|
|
8
|
-
glass: "bg-
|
|
7
|
+
muted: "bg-muted-bg",
|
|
8
|
+
glass: "bg-glass-20-bg backdrop-blur-glass"
|
|
9
9
|
};
|
|
10
10
|
/** App chrome shown at the bottom of a page: a responsive three-region row (start / center / end). */
|
|
11
11
|
function Footer({ className, bordered = false, background = "none", ...props }) {
|
|
12
12
|
return /* @__PURE__ */ jsx("footer", {
|
|
13
13
|
"data-slot": "footer",
|
|
14
14
|
"data-background": background,
|
|
15
|
-
className: cn("grid w-full grid-cols-1 gap-3 px-
|
|
15
|
+
className: cn("grid w-full grid-cols-1 gap-3 px-3 py-1 text-center md:grid-cols-3 md:items-center", "text-[length:var(--paragraph-mini-font-size)] leading-[var(--paragraph-mini-line-height)]", footerBackgrounds[background], bordered && "border-t border-primary-border", className),
|
|
16
16
|
...props
|
|
17
17
|
});
|
|
18
18
|
}
|
|
@@ -36,7 +36,7 @@ function FooterCenter({ className, ...props }) {
|
|
|
36
36
|
function FooterEnd({ className, ...props }) {
|
|
37
37
|
return /* @__PURE__ */ jsx("div", {
|
|
38
38
|
"data-slot": "footer-end",
|
|
39
|
-
className: cn("flex flex-wrap items-center justify-center gap-
|
|
39
|
+
className: cn("flex flex-wrap items-center justify-center gap-4 md:justify-end md:justify-self-end md:text-right", className),
|
|
40
40
|
...props
|
|
41
41
|
});
|
|
42
42
|
}
|
|
@@ -59,7 +59,7 @@ function FooterSeparator({ className, ...props }) {
|
|
|
59
59
|
return /* @__PURE__ */ jsx("span", {
|
|
60
60
|
"data-slot": "footer-separator",
|
|
61
61
|
"aria-hidden": "true",
|
|
62
|
-
className: cn("select-none text-border", className),
|
|
62
|
+
className: cn("select-none text-primary-border", className),
|
|
63
63
|
...props,
|
|
64
64
|
children: "|"
|
|
65
65
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/patterns/Footer/Footer.tsx"],"sourcesContent":["import type * as React from \"react\";\n\nimport { Text } from \"@/primitives/Text\";\nimport { cn } from \"@/utils\";\n\n// Footer — app chrome shown at the bottom of a page. A responsive three-region\n// row: the regions stack centered on mobile and spread to start / center / end\n// on md+ (a grid, so the centre region stays centred regardless of the side\n// widths). Compose content from Text / Link / Logo; the helpers below cover the\n// common pieces (a \"Powered by\" lockup and a link separator).\n//\n// <Footer>\n// <FooterStart><Text size=\"mini\" variant=\"muted\">v2.6.0</Text></FooterStart>\n// <FooterCenter>\n// <FooterPoweredBy><Logo brand=\"slingshot\" variant=\"icon\" className=\"size-5\" /></FooterPoweredBy>\n// </FooterCenter>\n// <FooterEnd>\n// <Link href=\"/tnc\" underline=\"hover\">T&C</Link>\n// <FooterSeparator />\n// <Link href=\"/privacy\" underline=\"hover\">Privacy</Link>\n// </FooterEnd>\n// </Footer>\n\n// Surface fills. `glass` is a translucent, backdrop-blurred panel (same --glass-*\n// tokens as Card/Container) — reads over a textured page background.\nconst footerBackgrounds = {\n none: \"\",\n muted: \"bg-muted\",\n glass: \"bg-
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/patterns/Footer/Footer.tsx"],"sourcesContent":["import type * as React from \"react\";\n\nimport { Text } from \"@/primitives/Text\";\nimport { cn } from \"@/utils\";\n\n// Footer — app chrome shown at the bottom of a page. A responsive three-region\n// row: the regions stack centered on mobile and spread to start / center / end\n// on md+ (a grid, so the centre region stays centred regardless of the side\n// widths). Compose content from Text / Link / Logo; the helpers below cover the\n// common pieces (a \"Powered by\" lockup and a link separator).\n//\n// <Footer>\n// <FooterStart><Text size=\"mini\" variant=\"muted\">v2.6.0</Text></FooterStart>\n// <FooterCenter>\n// <FooterPoweredBy><Logo brand=\"slingshot\" variant=\"icon\" className=\"size-5\" /></FooterPoweredBy>\n// </FooterCenter>\n// <FooterEnd>\n// <Link href=\"/tnc\" underline=\"hover\">T&C</Link>\n// <FooterSeparator />\n// <Link href=\"/privacy\" underline=\"hover\">Privacy</Link>\n// </FooterEnd>\n// </Footer>\n\n// Surface fills. `glass` is a translucent, backdrop-blurred panel (same --glass-*\n// tokens as Card/Container) — reads over a textured page background.\nconst footerBackgrounds = {\n none: \"\",\n muted: \"bg-muted-bg\",\n glass: \"bg-glass-20-bg backdrop-blur-glass\",\n} as const;\n\n/** App chrome shown at the bottom of a page: a responsive three-region row (start / center / end). */\nfunction Footer({\n className,\n bordered = false,\n background = \"none\",\n ...props\n}: React.ComponentProps<\"footer\"> & {\n /** Add a subtle top border separating the footer from page content. */\n bordered?: boolean;\n /** Surface fill. `glass` is a translucent, blurred panel over the page background. */\n background?: keyof typeof footerBackgrounds;\n}) {\n return (\n <footer\n data-slot=\"footer\"\n data-background={background}\n className={cn(\n // Footer content is small by default (matches the version text); links and\n // other unstyled children inherit this. Explicitly-sized <Text> is unaffected.\n \"grid w-full grid-cols-1 gap-3 px-3 py-1 text-center md:grid-cols-3 md:items-center\",\n \"text-[length:var(--paragraph-mini-font-size)] leading-[var(--paragraph-mini-line-height)]\",\n footerBackgrounds[background],\n bordered && \"border-t border-primary-border\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Leading region — left-aligned on md+ (e.g. an app version). */\nfunction FooterStart({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"footer-start\"\n className={cn(\n \"flex items-center justify-center gap-2 md:justify-self-start md:text-left\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Centre region — always centred (e.g. a \"Powered by\" lockup). */\nfunction FooterCenter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"footer-center\"\n className={cn(\"flex items-center justify-center gap-2 md:justify-self-center\", className)}\n {...props}\n />\n );\n}\n\n/** Trailing region — right-aligned on md+ (e.g. legal links). Wraps on small screens. */\nfunction FooterEnd({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"footer-end\"\n className={cn(\n \"flex flex-wrap items-center justify-center gap-4 md:justify-end md:justify-self-end md:text-right\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** \"Powered by\" lockup — the label plus a slot for the brand mark (a <Logo />). */\nfunction FooterPoweredBy({\n className,\n label = \"Powered by\",\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n /** Override the default \"Powered by\" label. */\n label?: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"footer-powered-by\"\n className={cn(\"flex items-center gap-2\", className)}\n {...props}\n >\n <Text as=\"span\" size=\"small\" variant=\"muted\">\n {label}\n </Text>\n {children}\n </div>\n );\n}\n\n/** Visual divider between trailing links. */\nfunction FooterSeparator({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"footer-separator\"\n aria-hidden=\"true\"\n className={cn(\"select-none text-primary-border\", className)}\n {...props}\n >\n |\n </span>\n );\n}\n\nexport { Footer, FooterStart, FooterCenter, FooterEnd, FooterPoweredBy, FooterSeparator };\n"],"mappings":";;;;AAyBA,MAAM,oBAAoB;CACxB,MAAM;CACN,OAAO;CACP,OAAO;AACT;;AAGA,SAAS,OAAO,EACd,WACA,WAAW,OACX,aAAa,QACb,GAAG,SAMF;CACD,OACE,oBAAC,UAAD;EACE,aAAU;EACV,mBAAiB;EACjB,WAAW,GAGT,sFACA,6FACA,kBAAkB,aAClB,YAAY,kCACZ,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,6EACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,aAAa,EAAE,WAAW,GAAG,SAAsC;CAC1E,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,iEAAiE,SAAS;EACxF,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;CACvE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,qGACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAGA,SAAS,gBAAgB,EACvB,WACA,QAAQ,cACR,UACA,GAAG,SAIF;CACD,OACE,qBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,2BAA2B,SAAS;EAClD,GAAI;YAHN,CAKE,oBAAC,MAAD;GAAM,IAAG;GAAO,MAAK;GAAQ,SAAQ;aAClC;EACG,CAAA,GACL,QACE;;AAET;;AAGA,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAuC;CAC9E,OACE,oBAAC,QAAD;EACE,aAAU;EACV,eAAY;EACZ,WAAW,GAAG,mCAAmC,SAAS;EAC1D,GAAI;YACL;CAEK,CAAA;AAEV"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as HeaderProps, S as HeaderEndpoints, _ as HeaderLogo, a as isSessionValid, b as ThemeToggle, c as useHeaderCredits, d as TOGGLE_PROJECT_DROPDOWN_EVENT, f as ToggleProjectDropdownDetail, g as HeaderBar, h as Header, i as getSessionToken, l as useHeaderProject, m as ProjectPicker, n as Labels, o as HeaderSelection, p as useGlobalHeader, r as buildEndpoints, s as UseHeaderProjectResult, t as DEFAULT_LABELS, u as GlobalHeaderState, v as OrgPill, w as ProjectNode, x as Fetcher, y as ProfileMenu } from "../../
|
|
1
|
+
import { C as HeaderProps, S as HeaderEndpoints, _ as HeaderLogo, a as isSessionValid, b as ThemeToggle, c as useHeaderCredits, d as TOGGLE_PROJECT_DROPDOWN_EVENT, f as ToggleProjectDropdownDetail, g as HeaderBar, h as Header, i as getSessionToken, l as useHeaderProject, m as ProjectPicker, n as Labels, o as HeaderSelection, p as useGlobalHeader, r as buildEndpoints, s as UseHeaderProjectResult, t as DEFAULT_LABELS, u as GlobalHeaderState, v as OrgPill, w as ProjectNode, x as Fetcher, y as ProfileMenu } from "../../index71.cjs";
|
|
2
2
|
export { DEFAULT_LABELS, Fetcher, GlobalHeaderState, Header, HeaderBar, HeaderEndpoints, HeaderLogo, HeaderProps, HeaderSelection, Labels, OrgPill, ProfileMenu, ProjectNode, ProjectPicker, TOGGLE_PROJECT_DROPDOWN_EVENT, ThemeToggle, ToggleProjectDropdownDetail, UseHeaderProjectResult, buildEndpoints, getSessionToken, isSessionValid, useGlobalHeader, useHeaderCredits, useHeaderProject };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as HeaderProps, S as HeaderEndpoints, _ as HeaderLogo, a as isSessionValid, b as ThemeToggle, c as useHeaderCredits, d as TOGGLE_PROJECT_DROPDOWN_EVENT, f as ToggleProjectDropdownDetail, g as HeaderBar, h as Header, i as getSessionToken, l as useHeaderProject, m as ProjectPicker, n as Labels, o as HeaderSelection, p as useGlobalHeader, r as buildEndpoints, s as UseHeaderProjectResult, t as DEFAULT_LABELS, u as GlobalHeaderState, v as OrgPill, w as ProjectNode, x as Fetcher, y as ProfileMenu } from "../../
|
|
1
|
+
import { C as HeaderProps, S as HeaderEndpoints, _ as HeaderLogo, a as isSessionValid, b as ThemeToggle, c as useHeaderCredits, d as TOGGLE_PROJECT_DROPDOWN_EVENT, f as ToggleProjectDropdownDetail, g as HeaderBar, h as Header, i as getSessionToken, l as useHeaderProject, m as ProjectPicker, n as Labels, o as HeaderSelection, p as useGlobalHeader, r as buildEndpoints, s as UseHeaderProjectResult, t as DEFAULT_LABELS, u as GlobalHeaderState, v as OrgPill, w as ProjectNode, x as Fetcher, y as ProfileMenu } from "../../index71.js";
|
|
2
2
|
export { DEFAULT_LABELS, Fetcher, GlobalHeaderState, Header, HeaderBar, HeaderEndpoints, HeaderLogo, HeaderProps, HeaderSelection, Labels, OrgPill, ProfileMenu, ProjectNode, ProjectPicker, TOGGLE_PROJECT_DROPDOWN_EVENT, ThemeToggle, ToggleProjectDropdownDetail, UseHeaderProjectResult, buildEndpoints, getSessionToken, isSessionValid, useGlobalHeader, useHeaderCredits, useHeaderProject };
|
|
@@ -9,7 +9,7 @@ let class_variance_authority = require("class-variance-authority");
|
|
|
9
9
|
function MediaObject({ className, interactive, ...props }) {
|
|
10
10
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("article", {
|
|
11
11
|
"data-slot": "media-object",
|
|
12
|
-
className: require_cn.cn("group/media flex flex-col overflow-hidden rounded-
|
|
12
|
+
className: require_cn.cn("group/media flex flex-col overflow-hidden rounded-16 border bg-glass-none-bg", interactive && "transition-all hover:-translate-y-0.5 hover:shadow-md", className),
|
|
13
13
|
...props
|
|
14
14
|
});
|
|
15
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["cn","Heading","Text"],"sources":["../../../src/patterns/MediaObject/MediaObject.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { Heading, type HeadingProps } from \"@/primitives/Heading\";\nimport { Text } from \"@/primitives/Text\";\nimport { cn } from \"@/utils\";\n\n// MediaObject — a COMPOSITIONAL media card (Radix-style parts the consumer\n// assembles). Replaces the legacy landing \"media cards\" (image + title + text +\n// action) and slingshot \"feature cards\" (icon + title + description + action).\n// Each part is a thin styled wrapper carrying a data-slot; spacing and hover are\n// driven entirely by Tailwind tokens + CSS group-hover (no JS state).\n\n// MediaObject — root <article>. `interactive` opts into the CSS hover lift.\ntype MediaObjectProps = React.ComponentProps<\"article\"> & {\n /** Add a CSS hover lift + shadow on hover (pure CSS, no JS state). */\n interactive?: boolean;\n};\n\n/** Root <article> surface of a media card; consumers compose the parts inside it. */\nfunction MediaObject({ className, interactive, ...props }: MediaObjectProps) {\n return (\n <article\n data-slot=\"media-object\"\n className={cn(\n \"group/media flex flex-col overflow-hidden rounded-
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["cn","Heading","Text"],"sources":["../../../src/patterns/MediaObject/MediaObject.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { Heading, type HeadingProps } from \"@/primitives/Heading\";\nimport { Text } from \"@/primitives/Text\";\nimport { cn } from \"@/utils\";\n\n// MediaObject — a COMPOSITIONAL media card (Radix-style parts the consumer\n// assembles). Replaces the legacy landing \"media cards\" (image + title + text +\n// action) and slingshot \"feature cards\" (icon + title + description + action).\n// Each part is a thin styled wrapper carrying a data-slot; spacing and hover are\n// driven entirely by Tailwind tokens + CSS group-hover (no JS state).\n\n// MediaObject — root <article>. `interactive` opts into the CSS hover lift.\ntype MediaObjectProps = React.ComponentProps<\"article\"> & {\n /** Add a CSS hover lift + shadow on hover (pure CSS, no JS state). */\n interactive?: boolean;\n};\n\n/** Root <article> surface of a media card; consumers compose the parts inside it. */\nfunction MediaObject({ className, interactive, ...props }: MediaObjectProps) {\n return (\n <article\n data-slot=\"media-object\"\n className={cn(\n \"group/media flex flex-col overflow-hidden rounded-16 border bg-glass-none-bg\",\n interactive && \"transition-all hover:-translate-y-0.5 hover:shadow-md\",\n className,\n )}\n {...props}\n />\n );\n}\n\n// MediaObjectImage — the top media. `alt` is required for accessibility.\ntype MediaObjectImageProps = React.ComponentProps<\"img\"> & {\n /** Required alt text describing the media (enforced for accessibility). */\n alt: string;\n};\n\n/** Top media image of a card; renders a 16/9 cover image that scales on hover. */\nfunction MediaObjectImage({ className, alt, ...props }: MediaObjectImageProps) {\n return (\n // biome-ignore lint/a11y/useAltText: alt is required via props typing.\n <img\n data-slot=\"media-object-image\"\n alt={alt}\n className={cn(\n \"aspect-[16/9] w-full object-cover transition-transform group-hover/media:scale-[1.02]\",\n className,\n )}\n {...props}\n />\n );\n}\n\n// MediaObjectIcon — the icon-top variant container; consumer renders an Icon inside.\n/** Square container for the icon-top card variant; place an Icon inside it. */\nfunction MediaObjectIcon({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"media-object-icon\"\n className={cn(\"flex size-10 shrink-0 items-center justify-center\", className)}\n {...props}\n />\n );\n}\n\n// MediaObjectContent — the body region holding title/text/actions.\n/** Padded body region of a card that holds the title, text, and actions. */\nfunction MediaObjectContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"media-object-content\"\n className={cn(\"flex flex-1 flex-col gap-3 p-5\", className)}\n {...props}\n />\n );\n}\n\n// MediaObjectTitle — reuses the Heading primitive (rendered as <h3>).\ntype MediaObjectTitleProps = Omit<HeadingProps, \"as\"> & {\n /** Heading size step passthrough (defaults to \"4\"). */\n size?: HeadingProps[\"size\"];\n};\n\n/** Card title; wraps the Heading primitive rendered as an <h3>. */\nfunction MediaObjectTitle({ size, ...props }: MediaObjectTitleProps) {\n return <Heading data-slot=\"media-object-title\" as=\"h3\" size={size ?? \"4\"} {...props} />;\n}\n\n// MediaObjectText — reuses the Text primitive (muted, small body).\n/** Supporting body copy; wraps the Text primitive (muted, small). */\nfunction MediaObjectText({ ...props }: React.ComponentProps<typeof Text>) {\n return <Text data-slot=\"media-object-text\" variant=\"muted\" size=\"small\" {...props} />;\n}\n\n// MediaObjectActions — pinned to the bottom of the content; holds a Button/Link.\n/** Action row pinned to the bottom of the content; holds a Button or Link. */\nfunction MediaObjectActions({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"media-object-actions\"\n className={cn(\"mt-auto flex items-center gap-2 pt-2\", className)}\n {...props}\n />\n );\n}\n\n// MediaObjectGroup — responsive grid container. `columns` gives equal-width,\n// aligned items; `gap` lets the enclosing section own its spacing rhythm.\nconst mediaObjectGroupVariants = cva(\"grid\", {\n variants: {\n columns: {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 sm:grid-cols-2\",\n 3: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\n },\n gap: {\n sm: \"gap-4\",\n md: \"gap-6\",\n lg: \"gap-8\",\n },\n },\n defaultVariants: {\n columns: 3,\n gap: \"lg\",\n },\n});\n\ntype MediaObjectGroupProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof mediaObjectGroupVariants>;\n\n/** Responsive grid wrapper that lays out a set of MediaObject cards. */\nfunction MediaObjectGroup({ className, columns, gap, ...props }: MediaObjectGroupProps) {\n return (\n <div\n data-slot=\"media-object-group\"\n className={cn(mediaObjectGroupVariants({ columns, gap }), className)}\n {...props}\n />\n );\n}\n\nexport {\n MediaObject,\n MediaObjectImage,\n MediaObjectIcon,\n MediaObjectContent,\n MediaObjectTitle,\n MediaObjectText,\n MediaObjectActions,\n MediaObjectGroup,\n mediaObjectGroupVariants,\n type MediaObjectProps,\n type MediaObjectImageProps,\n type MediaObjectTitleProps,\n type MediaObjectGroupProps,\n};\n"],"mappings":";;;;;;;;AAoBA,SAAS,YAAY,EAAE,WAAW,aAAa,GAAG,SAA2B;CAC3E,OACE,iBAAA,GAAA,kBAAA,KAAC,WAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GACT,gFACA,eAAe,yDACf,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AASA,SAAS,iBAAiB,EAAE,WAAW,KAAK,GAAG,SAAgC;CAC7E,OAEE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACL;EACL,WAAWA,WAAAA,GACT,yFACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;AAIA,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAsC;CAC7E,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,qDAAqD,SAAS;EAC5E,GAAI;CACL,CAAA;AAEL;;AAIA,SAAS,mBAAmB,EAAE,WAAW,GAAG,SAAsC;CAChF,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,kCAAkC,SAAS;EACzD,GAAI;CACL,CAAA;AAEL;;AASA,SAAS,iBAAiB,EAAE,MAAM,GAAG,SAAgC;CACnE,OAAO,iBAAA,GAAA,kBAAA,KAACC,iCAAAA,SAAD;EAAS,aAAU;EAAqB,IAAG;EAAK,MAAM,QAAQ;EAAK,GAAI;CAAQ,CAAA;AACxF;;AAIA,SAAS,gBAAgB,EAAE,GAAG,SAA4C;CACxE,OAAO,iBAAA,GAAA,kBAAA,KAACC,8BAAAA,MAAD;EAAM,aAAU;EAAoB,SAAQ;EAAQ,MAAK;EAAQ,GAAI;CAAQ,CAAA;AACtF;;AAIA,SAAS,mBAAmB,EAAE,WAAW,GAAG,SAAsC;CAChF,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWF,WAAAA,GAAG,wCAAwC,SAAS;EAC/D,GAAI;CACL,CAAA;AAEL;AAIA,MAAM,4BAAA,GAAA,yBAAA,KAA+B,QAAQ;CAC3C,UAAU;EACR,SAAS;GACP,GAAG;GACH,GAAG;GACH,GAAG;GACH,GAAG;EACL;EACA,KAAK;GACH,IAAI;GACJ,IAAI;GACJ,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,KAAK;CACP;AACF,CAAC;;AAMD,SAAS,iBAAiB,EAAE,WAAW,SAAS,KAAK,GAAG,SAAgC;CACtF,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWA,WAAAA,GAAG,yBAAyB;GAAE;GAAS;EAAI,CAAC,GAAG,SAAS;EACnE,GAAI;CACL,CAAA;AAEL"}
|