@psnext/design-system 1.1.0 → 1.2.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/README.md +137 -30
- package/dist/Header.cjs +890 -0
- package/dist/Header.cjs.map +1 -0
- package/dist/Header.js +798 -0
- package/dist/Header.js.map +1 -0
- package/dist/Icon.cjs +1969 -0
- package/dist/Icon.cjs.map +1 -0
- package/dist/Icon.js +1956 -0
- package/dist/Icon.js.map +1 -0
- package/dist/{ThemeProvider.cjs → Logo.cjs} +2 -1075
- package/dist/Logo.cjs.map +1 -0
- package/dist/{ThemeProvider.js → Logo.js} +4 -704
- package/dist/Logo.js.map +1 -0
- package/dist/Sidebar.cjs +562 -0
- package/dist/Sidebar.cjs.map +1 -0
- package/dist/Sidebar.js +416 -0
- package/dist/Sidebar.js.map +1 -0
- package/dist/{utils.cjs → chunk.cjs} +0 -39
- package/dist/cn.cjs +15 -0
- package/dist/cn.cjs.map +1 -0
- package/dist/cn.js +10 -0
- package/dist/cn.js.map +1 -0
- package/dist/index.cjs +413 -346
- package/dist/index.d.cts +12 -1996
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +12 -1996
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +71 -5
- package/dist/index10.d.cts +38 -0
- package/dist/index10.d.cts.map +1 -0
- package/dist/index10.d.ts +38 -0
- package/dist/index10.d.ts.map +1 -0
- package/dist/index11.d.cts +30 -0
- package/dist/index11.d.cts.map +1 -0
- package/dist/index11.d.ts +30 -0
- package/dist/index11.d.ts.map +1 -0
- package/dist/index12.d.cts +75 -0
- package/dist/index12.d.cts.map +1 -0
- package/dist/index12.d.ts +75 -0
- package/dist/index12.d.ts.map +1 -0
- package/dist/index13.d.cts +57 -0
- package/dist/index13.d.cts.map +1 -0
- package/dist/index13.d.ts +57 -0
- package/dist/index13.d.ts.map +1 -0
- package/dist/index14.d.cts +98 -0
- package/dist/index14.d.cts.map +1 -0
- package/dist/index14.d.ts +98 -0
- package/dist/index14.d.ts.map +1 -0
- package/dist/index15.d.cts +29 -0
- package/dist/index15.d.cts.map +1 -0
- package/dist/index15.d.ts +29 -0
- package/dist/index15.d.ts.map +1 -0
- package/dist/index16.d.cts +38 -0
- package/dist/index16.d.cts.map +1 -0
- package/dist/index16.d.ts +38 -0
- package/dist/index16.d.ts.map +1 -0
- package/dist/index17.d.cts +19 -0
- package/dist/index17.d.cts.map +1 -0
- package/dist/index17.d.ts +19 -0
- package/dist/index17.d.ts.map +1 -0
- package/dist/index18.d.cts +73 -0
- package/dist/index18.d.cts.map +1 -0
- package/dist/index18.d.ts +73 -0
- package/dist/index18.d.ts.map +1 -0
- package/dist/index19.d.cts +66 -0
- package/dist/index19.d.cts.map +1 -0
- package/dist/index19.d.ts +66 -0
- package/dist/index19.d.ts.map +1 -0
- package/dist/index2.d.cts +44 -4
- package/dist/index2.d.cts.map +1 -0
- package/dist/index2.d.ts +44 -4
- package/dist/index2.d.ts.map +1 -0
- package/dist/index20.d.cts +96 -0
- package/dist/index20.d.cts.map +1 -0
- package/dist/index20.d.ts +96 -0
- package/dist/index20.d.ts.map +1 -0
- package/dist/index21.d.cts +34 -0
- package/dist/index21.d.cts.map +1 -0
- package/dist/index21.d.ts +34 -0
- package/dist/index21.d.ts.map +1 -0
- package/dist/index22.d.cts +62 -0
- package/dist/index22.d.cts.map +1 -0
- package/dist/index22.d.ts +62 -0
- package/dist/index22.d.ts.map +1 -0
- package/dist/index23.d.cts +99 -0
- package/dist/index23.d.cts.map +1 -0
- package/dist/index23.d.ts +99 -0
- package/dist/index23.d.ts.map +1 -0
- package/dist/index24.d.cts +49 -0
- package/dist/index24.d.cts.map +1 -0
- package/dist/index24.d.ts +49 -0
- package/dist/index24.d.ts.map +1 -0
- package/dist/index25.d.cts +17 -0
- package/dist/index25.d.cts.map +1 -0
- package/dist/index25.d.ts +17 -0
- package/dist/index25.d.ts.map +1 -0
- package/dist/index26.d.cts +80 -0
- package/dist/index26.d.cts.map +1 -0
- package/dist/index26.d.ts +80 -0
- package/dist/index26.d.ts.map +1 -0
- package/dist/index27.d.cts +71 -0
- package/dist/index27.d.cts.map +1 -0
- package/dist/index27.d.ts +71 -0
- package/dist/index27.d.ts.map +1 -0
- package/dist/index28.d.cts +37 -0
- package/dist/index28.d.cts.map +1 -0
- package/dist/index28.d.ts +37 -0
- package/dist/index28.d.ts.map +1 -0
- package/dist/index29.d.cts +25 -0
- package/dist/index29.d.cts.map +1 -0
- package/dist/index29.d.ts +25 -0
- package/dist/index29.d.ts.map +1 -0
- package/dist/index3.d.cts +62 -0
- package/dist/index3.d.cts.map +1 -0
- package/dist/index3.d.ts +62 -0
- package/dist/index3.d.ts.map +1 -0
- package/dist/index30.d.cts +59 -0
- package/dist/index30.d.cts.map +1 -0
- package/dist/index30.d.ts +59 -0
- package/dist/index30.d.ts.map +1 -0
- package/dist/index31.d.cts +40 -0
- package/dist/index31.d.cts.map +1 -0
- package/dist/index31.d.ts +40 -0
- package/dist/index31.d.ts.map +1 -0
- package/dist/index32.d.cts +23 -0
- package/dist/index32.d.cts.map +1 -0
- package/dist/index32.d.ts +23 -0
- package/dist/index32.d.ts.map +1 -0
- package/dist/index33.d.cts +55 -0
- package/dist/index33.d.cts.map +1 -0
- package/dist/index33.d.ts +55 -0
- package/dist/index33.d.ts.map +1 -0
- package/dist/index34.d.cts +43 -0
- package/dist/index34.d.cts.map +1 -0
- package/dist/index34.d.ts +43 -0
- package/dist/index34.d.ts.map +1 -0
- package/dist/index35.d.cts +77 -0
- package/dist/index35.d.cts.map +1 -0
- package/dist/index35.d.ts +77 -0
- package/dist/index35.d.ts.map +1 -0
- package/dist/index36.d.cts +19 -0
- package/dist/index36.d.cts.map +1 -0
- package/dist/index36.d.ts +19 -0
- package/dist/index36.d.ts.map +1 -0
- package/dist/index37.d.cts +29 -0
- package/dist/index37.d.cts.map +1 -0
- package/dist/index37.d.ts +29 -0
- package/dist/index37.d.ts.map +1 -0
- package/dist/index38.d.cts +20 -0
- package/dist/index38.d.cts.map +1 -0
- package/dist/index38.d.ts +20 -0
- package/dist/index38.d.ts.map +1 -0
- package/dist/index39.d.cts +105 -0
- package/dist/index39.d.cts.map +1 -0
- package/dist/index39.d.ts +105 -0
- package/dist/index39.d.ts.map +1 -0
- package/dist/index4.d.cts +11 -0
- package/dist/index4.d.cts.map +1 -0
- package/dist/index4.d.ts +11 -0
- package/dist/index4.d.ts.map +1 -0
- package/dist/index40.d.cts +22 -0
- package/dist/index40.d.cts.map +1 -0
- package/dist/index40.d.ts +22 -0
- package/dist/index40.d.ts.map +1 -0
- package/dist/index41.d.cts +56 -0
- package/dist/index41.d.cts.map +1 -0
- package/dist/index41.d.ts +56 -0
- package/dist/index41.d.ts.map +1 -0
- package/dist/index42.d.cts +45 -0
- package/dist/index42.d.cts.map +1 -0
- package/dist/index42.d.ts +45 -0
- package/dist/index42.d.ts.map +1 -0
- package/dist/index43.d.cts +96 -0
- package/dist/index43.d.cts.map +1 -0
- package/dist/index43.d.ts +96 -0
- package/dist/index43.d.ts.map +1 -0
- package/dist/index44.d.cts +48 -0
- package/dist/index44.d.cts.map +1 -0
- package/dist/index44.d.ts +48 -0
- package/dist/index44.d.ts.map +1 -0
- package/dist/index45.d.cts +28 -0
- package/dist/index45.d.cts.map +1 -0
- package/dist/index45.d.ts +28 -0
- package/dist/index45.d.ts.map +1 -0
- package/dist/index46.d.cts +41 -0
- package/dist/index46.d.cts.map +1 -0
- package/dist/index46.d.ts +41 -0
- package/dist/index46.d.ts.map +1 -0
- package/dist/index47.d.cts +25 -0
- package/dist/index47.d.cts.map +1 -0
- package/dist/index47.d.ts +25 -0
- package/dist/index47.d.ts.map +1 -0
- package/dist/index48.d.cts +21 -0
- package/dist/index48.d.cts.map +1 -0
- package/dist/index48.d.ts +21 -0
- package/dist/index48.d.ts.map +1 -0
- package/dist/index49.d.cts +69 -0
- package/dist/index49.d.cts.map +1 -0
- package/dist/index49.d.ts +69 -0
- package/dist/index49.d.ts.map +1 -0
- package/dist/index5.d.cts +45 -0
- package/dist/index5.d.cts.map +1 -0
- package/dist/index5.d.ts +45 -0
- package/dist/index5.d.ts.map +1 -0
- package/dist/index50.d.cts +63 -0
- package/dist/index50.d.cts.map +1 -0
- package/dist/index50.d.ts +63 -0
- package/dist/index50.d.ts.map +1 -0
- package/dist/index51.d.cts +31 -0
- package/dist/index51.d.cts.map +1 -0
- package/dist/index51.d.ts +31 -0
- package/dist/index51.d.ts.map +1 -0
- package/dist/index52.d.cts +209 -0
- package/dist/index52.d.cts.map +1 -0
- package/dist/index52.d.ts +209 -0
- package/dist/index52.d.ts.map +1 -0
- package/dist/index53.d.cts +26 -0
- package/dist/index53.d.cts.map +1 -0
- package/dist/index53.d.ts +26 -0
- package/dist/index53.d.ts.map +1 -0
- package/dist/index54.d.cts +28 -0
- package/dist/index54.d.cts.map +1 -0
- package/dist/index54.d.ts +28 -0
- package/dist/index54.d.ts.map +1 -0
- package/dist/index55.d.cts +25 -0
- package/dist/index55.d.cts.map +1 -0
- package/dist/index55.d.ts +25 -0
- package/dist/index55.d.ts.map +1 -0
- package/dist/index56.d.cts +12 -0
- package/dist/index56.d.cts.map +1 -0
- package/dist/index56.d.ts +12 -0
- package/dist/index56.d.ts.map +1 -0
- package/dist/index57.d.cts +50 -0
- package/dist/index57.d.cts.map +1 -0
- package/dist/index57.d.ts +50 -0
- package/dist/index57.d.ts.map +1 -0
- package/dist/index58.d.cts +51 -0
- package/dist/index58.d.cts.map +1 -0
- package/dist/index58.d.ts +51 -0
- package/dist/index58.d.ts.map +1 -0
- package/dist/index59.d.cts +58 -0
- package/dist/index59.d.cts.map +1 -0
- package/dist/index59.d.ts +58 -0
- package/dist/index59.d.ts.map +1 -0
- package/dist/index6.d.cts +26 -0
- package/dist/index6.d.cts.map +1 -0
- package/dist/index6.d.ts +26 -0
- package/dist/index6.d.ts.map +1 -0
- package/dist/index60.d.cts +45 -0
- package/dist/index60.d.cts.map +1 -0
- package/dist/index60.d.ts +45 -0
- package/dist/index60.d.ts.map +1 -0
- package/dist/index61.d.cts +21 -0
- package/dist/index61.d.cts.map +1 -0
- package/dist/index61.d.ts +21 -0
- package/dist/index61.d.ts.map +1 -0
- package/dist/index62.d.cts +45 -0
- package/dist/index62.d.cts.map +1 -0
- package/dist/index62.d.ts +45 -0
- package/dist/index62.d.ts.map +1 -0
- package/dist/index63.d.cts +23 -0
- package/dist/index63.d.cts.map +1 -0
- package/dist/index63.d.ts +23 -0
- package/dist/index63.d.ts.map +1 -0
- package/dist/index64.d.cts +48 -0
- package/dist/index64.d.cts.map +1 -0
- package/dist/index64.d.ts +48 -0
- package/dist/index64.d.ts.map +1 -0
- package/dist/index65.d.cts +25 -0
- package/dist/index65.d.cts.map +1 -0
- package/dist/index65.d.ts +25 -0
- package/dist/index65.d.ts.map +1 -0
- package/dist/index66.d.cts +19 -0
- package/dist/index66.d.cts.map +1 -0
- package/dist/index66.d.ts +19 -0
- package/dist/index66.d.ts.map +1 -0
- package/dist/index67.d.cts +37 -0
- package/dist/index67.d.cts.map +1 -0
- package/dist/index67.d.ts +37 -0
- package/dist/index67.d.ts.map +1 -0
- package/dist/index68.d.cts +36 -0
- package/dist/index68.d.cts.map +1 -0
- package/dist/index68.d.ts +36 -0
- package/dist/index68.d.ts.map +1 -0
- package/dist/index69.d.cts +69 -0
- package/dist/index69.d.ts +69 -0
- package/dist/index7.d.cts +46 -0
- package/dist/index7.d.cts.map +1 -0
- package/dist/index7.d.ts +46 -0
- package/dist/index7.d.ts.map +1 -0
- package/dist/index70.d.cts +242 -0
- package/dist/index70.d.cts.map +1 -0
- package/dist/index70.d.ts +242 -0
- package/dist/index70.d.ts.map +1 -0
- package/dist/index8.d.cts +26 -0
- package/dist/index8.d.cts.map +1 -0
- package/dist/index8.d.ts +26 -0
- package/dist/index8.d.ts.map +1 -0
- package/dist/index9.d.cts +20 -0
- package/dist/index9.d.cts.map +1 -0
- package/dist/index9.d.ts +20 -0
- package/dist/index9.d.ts.map +1 -0
- package/dist/layouts/Container/index.cjs +39 -0
- package/dist/layouts/Container/index.cjs.map +1 -0
- package/dist/layouts/Container/index.d.cts +2 -0
- package/dist/layouts/Container/index.d.ts +2 -0
- package/dist/layouts/Container/index.js +38 -0
- package/dist/layouts/Container/index.js.map +1 -0
- package/dist/layouts/PageBackground/index.cjs +22 -0
- package/dist/layouts/PageBackground/index.cjs.map +1 -0
- package/dist/layouts/PageBackground/index.d.cts +2 -0
- package/dist/layouts/PageBackground/index.d.ts +2 -0
- package/dist/layouts/PageBackground/index.js +21 -0
- package/dist/layouts/PageBackground/index.js.map +1 -0
- package/dist/{Stack.cjs → layouts/Stack/index.cjs} +7 -15
- package/dist/layouts/Stack/index.cjs.map +1 -0
- package/dist/layouts/Stack/index.d.cts +2 -0
- package/dist/layouts/Stack/index.d.ts +2 -0
- package/dist/{Stack.js → layouts/Stack/index.js} +4 -3
- package/dist/layouts/Stack/index.js.map +1 -0
- package/dist/layouts/TwoColumn/index.cjs +51 -0
- package/dist/layouts/TwoColumn/index.cjs.map +1 -0
- package/dist/layouts/TwoColumn/index.d.cts +2 -0
- package/dist/layouts/TwoColumn/index.d.ts +2 -0
- package/dist/layouts/TwoColumn/index.js +48 -0
- package/dist/layouts/TwoColumn/index.js.map +1 -0
- package/dist/layouts/index.cjs +13 -100
- package/dist/layouts/index.d.cts +5 -76
- package/dist/layouts/index.d.ts +5 -76
- package/dist/layouts/index.js +4 -91
- package/dist/patterns/DataTable/index.cjs +114 -0
- package/dist/patterns/DataTable/index.cjs.map +1 -0
- package/dist/patterns/DataTable/index.d.cts +43 -0
- package/dist/patterns/DataTable/index.d.cts.map +1 -0
- package/dist/patterns/DataTable/index.d.ts +43 -0
- package/dist/patterns/DataTable/index.d.ts.map +1 -0
- package/dist/patterns/DataTable/index.js +110 -0
- package/dist/patterns/DataTable/index.js.map +1 -0
- package/dist/patterns/Footer/index.cjs +76 -0
- package/dist/patterns/Footer/index.cjs.map +1 -0
- package/dist/patterns/Footer/index.d.cts +54 -0
- package/dist/patterns/Footer/index.d.cts.map +1 -0
- package/dist/patterns/Footer/index.d.ts +54 -0
- package/dist/patterns/Footer/index.d.ts.map +1 -0
- package/dist/patterns/Footer/index.js +70 -0
- package/dist/patterns/Footer/index.js.map +1 -0
- package/dist/patterns/Header/index.cjs +17 -0
- package/dist/patterns/Header/index.d.cts +2 -0
- package/dist/patterns/Header/index.d.ts +2 -0
- package/dist/patterns/Header/index.js +2 -0
- package/dist/patterns/MediaObject/index.cjs +108 -0
- package/dist/patterns/MediaObject/index.cjs.map +1 -0
- package/dist/patterns/MediaObject/index.d.cts +71 -0
- package/dist/patterns/MediaObject/index.d.cts.map +1 -0
- package/dist/patterns/MediaObject/index.d.ts +71 -0
- package/dist/patterns/MediaObject/index.d.ts.map +1 -0
- package/dist/patterns/MediaObject/index.js +99 -0
- package/dist/patterns/MediaObject/index.js.map +1 -0
- package/dist/patterns/SectionCard/index.cjs +35 -0
- package/dist/patterns/SectionCard/index.cjs.map +1 -0
- package/dist/patterns/SectionCard/index.d.cts +21 -0
- package/dist/patterns/SectionCard/index.d.cts.map +1 -0
- package/dist/patterns/SectionCard/index.d.ts +21 -0
- package/dist/patterns/SectionCard/index.d.ts.map +1 -0
- package/dist/patterns/SectionCard/index.js +34 -0
- package/dist/patterns/SectionCard/index.js.map +1 -0
- package/dist/patterns/SectionHeading/index.cjs +44 -0
- package/dist/patterns/SectionHeading/index.cjs.map +1 -0
- package/dist/patterns/SectionHeading/index.d.cts +37 -0
- package/dist/patterns/SectionHeading/index.d.cts.map +1 -0
- package/dist/patterns/SectionHeading/index.d.ts +37 -0
- package/dist/patterns/SectionHeading/index.d.ts.map +1 -0
- package/dist/patterns/SectionHeading/index.js +43 -0
- package/dist/patterns/SectionHeading/index.js.map +1 -0
- package/dist/patterns/index.cjs +40 -1124
- package/dist/patterns/index.d.cts +7 -410
- package/dist/patterns/index.d.ts +7 -410
- package/dist/patterns/index.js +6 -1088
- package/dist/primitives/Accordion/index.cjs +54 -0
- package/dist/primitives/Accordion/index.cjs.map +1 -0
- package/dist/primitives/Accordion/index.d.cts +2 -0
- package/dist/primitives/Accordion/index.d.ts +2 -0
- package/dist/primitives/Accordion/index.js +50 -0
- package/dist/primitives/Accordion/index.js.map +1 -0
- package/dist/primitives/Alert/index.cjs +61 -0
- package/dist/primitives/Alert/index.cjs.map +1 -0
- package/dist/primitives/Alert/index.d.cts +2 -0
- package/dist/primitives/Alert/index.d.ts +2 -0
- package/dist/primitives/Alert/index.js +57 -0
- package/dist/primitives/Alert/index.js.map +1 -0
- package/dist/primitives/AlertDialog/index.cjs +102 -0
- package/dist/primitives/AlertDialog/index.cjs.map +1 -0
- package/dist/primitives/AlertDialog/index.d.cts +2 -0
- package/dist/primitives/AlertDialog/index.d.ts +2 -0
- package/dist/primitives/AlertDialog/index.js +90 -0
- package/dist/primitives/AlertDialog/index.js.map +1 -0
- package/dist/primitives/AspectRatio/index.cjs +15 -0
- package/dist/primitives/AspectRatio/index.cjs.map +1 -0
- package/dist/primitives/AspectRatio/index.d.cts +2 -0
- package/dist/primitives/AspectRatio/index.d.ts +2 -0
- package/dist/primitives/AspectRatio/index.js +14 -0
- package/dist/primitives/AspectRatio/index.js.map +1 -0
- package/dist/primitives/Avatar/index.cjs +64 -0
- package/dist/primitives/Avatar/index.cjs.map +1 -0
- package/dist/primitives/Avatar/index.d.cts +2 -0
- package/dist/primitives/Avatar/index.d.ts +2 -0
- package/dist/primitives/Avatar/index.js +58 -0
- package/dist/primitives/Avatar/index.js.map +1 -0
- package/dist/primitives/Badge/index.cjs +44 -0
- package/dist/primitives/Badge/index.cjs.map +1 -0
- package/dist/primitives/Badge/index.d.cts +2 -0
- package/dist/primitives/Badge/index.d.ts +2 -0
- package/dist/primitives/Badge/index.js +43 -0
- package/dist/primitives/Badge/index.js.map +1 -0
- package/dist/primitives/Breadcrumb/index.cjs +82 -0
- package/dist/primitives/Breadcrumb/index.cjs.map +1 -0
- package/dist/primitives/Breadcrumb/index.d.cts +2 -0
- package/dist/primitives/Breadcrumb/index.d.ts +2 -0
- package/dist/primitives/Breadcrumb/index.js +75 -0
- package/dist/primitives/Breadcrumb/index.js.map +1 -0
- package/dist/primitives/Button/index.cjs +61 -0
- package/dist/primitives/Button/index.cjs.map +1 -0
- package/dist/primitives/Button/index.d.cts +2 -0
- package/dist/primitives/Button/index.d.ts +2 -0
- package/dist/primitives/Button/index.js +60 -0
- package/dist/primitives/Button/index.js.map +1 -0
- package/dist/primitives/ButtonGroup/index.cjs +46 -0
- package/dist/primitives/ButtonGroup/index.cjs.map +1 -0
- package/dist/primitives/ButtonGroup/index.d.cts +2 -0
- package/dist/primitives/ButtonGroup/index.d.ts +2 -0
- package/dist/primitives/ButtonGroup/index.js +43 -0
- package/dist/primitives/ButtonGroup/index.js.map +1 -0
- package/dist/primitives/Calendar/index.cjs +112 -0
- package/dist/primitives/Calendar/index.cjs.map +1 -0
- package/dist/primitives/Calendar/index.d.cts +2 -0
- package/dist/primitives/Calendar/index.d.ts +2 -0
- package/dist/primitives/Calendar/index.js +108 -0
- package/dist/primitives/Calendar/index.js.map +1 -0
- package/dist/primitives/Card/index.cjs +128 -0
- package/dist/primitives/Card/index.cjs.map +1 -0
- package/dist/primitives/Card/index.d.cts +2 -0
- package/dist/primitives/Card/index.d.ts +2 -0
- package/dist/primitives/Card/index.js +121 -0
- package/dist/primitives/Card/index.js.map +1 -0
- package/dist/primitives/Carousel/index.cjs +146 -0
- package/dist/primitives/Carousel/index.cjs.map +1 -0
- package/dist/primitives/Carousel/index.d.cts +2 -0
- package/dist/primitives/Carousel/index.d.ts +2 -0
- package/dist/primitives/Carousel/index.js +138 -0
- package/dist/primitives/Carousel/index.js.map +1 -0
- package/dist/primitives/Chart/index.cjs +162 -0
- package/dist/primitives/Chart/index.cjs.map +1 -0
- package/dist/primitives/Chart/index.d.cts +2 -0
- package/dist/primitives/Chart/index.d.ts +2 -0
- package/dist/primitives/Chart/index.js +153 -0
- package/dist/primitives/Chart/index.js.map +1 -0
- package/dist/primitives/Checkbox/index.cjs +53 -0
- package/dist/primitives/Checkbox/index.cjs.map +1 -0
- package/dist/primitives/Checkbox/index.d.cts +2 -0
- package/dist/primitives/Checkbox/index.d.ts +2 -0
- package/dist/primitives/Checkbox/index.js +51 -0
- package/dist/primitives/Checkbox/index.js.map +1 -0
- package/dist/primitives/CheckboxTree/index.cjs +106 -0
- package/dist/primitives/CheckboxTree/index.cjs.map +1 -0
- package/dist/primitives/CheckboxTree/index.d.cts +2 -0
- package/dist/primitives/CheckboxTree/index.d.ts +2 -0
- package/dist/primitives/CheckboxTree/index.js +103 -0
- package/dist/primitives/CheckboxTree/index.js.map +1 -0
- package/dist/primitives/Collapsible/index.cjs +31 -0
- package/dist/primitives/Collapsible/index.cjs.map +1 -0
- package/dist/primitives/Collapsible/index.d.cts +2 -0
- package/dist/primitives/Collapsible/index.d.ts +2 -0
- package/dist/primitives/Collapsible/index.js +28 -0
- package/dist/primitives/Collapsible/index.js.map +1 -0
- package/dist/primitives/Command/index.cjs +104 -0
- package/dist/primitives/Command/index.cjs.map +1 -0
- package/dist/primitives/Command/index.d.cts +2 -0
- package/dist/primitives/Command/index.d.ts +2 -0
- package/dist/primitives/Command/index.js +95 -0
- package/dist/primitives/Command/index.js.map +1 -0
- package/dist/primitives/ContextMenu/index.cjs +152 -0
- package/dist/primitives/ContextMenu/index.cjs.map +1 -0
- package/dist/primitives/ContextMenu/index.d.cts +2 -0
- package/dist/primitives/ContextMenu/index.d.ts +2 -0
- package/dist/primitives/ContextMenu/index.js +137 -0
- package/dist/primitives/ContextMenu/index.js.map +1 -0
- package/dist/primitives/Credits/index.cjs +39 -0
- package/dist/primitives/Credits/index.cjs.map +1 -0
- package/dist/primitives/Credits/index.d.cts +2 -0
- package/dist/primitives/Credits/index.d.ts +2 -0
- package/dist/primitives/Credits/index.js +38 -0
- package/dist/primitives/Credits/index.js.map +1 -0
- package/dist/primitives/Dialog/index.cjs +121 -0
- package/dist/primitives/Dialog/index.cjs.map +1 -0
- package/dist/primitives/Dialog/index.d.cts +2 -0
- package/dist/primitives/Dialog/index.d.ts +2 -0
- package/dist/primitives/Dialog/index.js +111 -0
- package/dist/primitives/Dialog/index.js.map +1 -0
- package/dist/primitives/Drawer/index.cjs +98 -0
- package/dist/primitives/Drawer/index.cjs.map +1 -0
- package/dist/primitives/Drawer/index.d.cts +2 -0
- package/dist/primitives/Drawer/index.d.ts +2 -0
- package/dist/primitives/Drawer/index.js +88 -0
- package/dist/primitives/Drawer/index.js.map +1 -0
- package/dist/primitives/DropdownMenu/index.cjs +153 -0
- package/dist/primitives/DropdownMenu/index.cjs.map +1 -0
- package/dist/primitives/DropdownMenu/index.d.cts +2 -0
- package/dist/primitives/DropdownMenu/index.d.ts +2 -0
- package/dist/primitives/DropdownMenu/index.js +138 -0
- package/dist/primitives/DropdownMenu/index.js.map +1 -0
- package/dist/primitives/Empty/index.cjs +84 -0
- package/dist/primitives/Empty/index.cjs.map +1 -0
- package/dist/primitives/Empty/index.d.cts +2 -0
- package/dist/primitives/Empty/index.d.ts +2 -0
- package/dist/primitives/Empty/index.js +77 -0
- package/dist/primitives/Empty/index.js.map +1 -0
- package/dist/primitives/Field/index.cjs +139 -0
- package/dist/primitives/Field/index.cjs.map +1 -0
- package/dist/primitives/Field/index.d.cts +2 -0
- package/dist/primitives/Field/index.d.ts +2 -0
- package/dist/primitives/Field/index.js +129 -0
- package/dist/primitives/Field/index.js.map +1 -0
- package/dist/primitives/Form/index.cjs +104 -0
- package/dist/primitives/Form/index.cjs.map +1 -0
- package/dist/primitives/Form/index.d.cts +2 -0
- package/dist/primitives/Form/index.d.ts +2 -0
- package/dist/primitives/Form/index.js +94 -0
- package/dist/primitives/Form/index.js.map +1 -0
- package/dist/primitives/Heading/index.cjs +53 -0
- package/dist/primitives/Heading/index.cjs.map +1 -0
- package/dist/primitives/Heading/index.d.cts +2 -0
- package/dist/primitives/Heading/index.d.ts +2 -0
- package/dist/primitives/Heading/index.js +52 -0
- package/dist/primitives/Heading/index.js.map +1 -0
- package/dist/primitives/HoverCard/index.cjs +38 -0
- package/dist/primitives/HoverCard/index.cjs.map +1 -0
- package/dist/primitives/HoverCard/index.d.cts +2 -0
- package/dist/primitives/HoverCard/index.d.ts +2 -0
- package/dist/primitives/HoverCard/index.js +35 -0
- package/dist/primitives/HoverCard/index.js.map +1 -0
- package/dist/primitives/Icon/index.cjs +4 -0
- package/dist/primitives/Icon/index.d.cts +2 -0
- package/dist/primitives/Icon/index.d.ts +2 -0
- package/dist/primitives/Icon/index.js +2 -0
- package/dist/primitives/InfoBanner/index.cjs +79 -0
- package/dist/primitives/InfoBanner/index.cjs.map +1 -0
- package/dist/primitives/InfoBanner/index.d.cts +2 -0
- package/dist/primitives/InfoBanner/index.d.ts +2 -0
- package/dist/primitives/InfoBanner/index.js +78 -0
- package/dist/primitives/InfoBanner/index.js.map +1 -0
- package/dist/primitives/Input/index.cjs +39 -0
- package/dist/primitives/Input/index.cjs.map +1 -0
- package/dist/primitives/Input/index.d.cts +2 -0
- package/dist/primitives/Input/index.d.ts +2 -0
- package/dist/primitives/Input/index.js +38 -0
- package/dist/primitives/Input/index.js.map +1 -0
- package/dist/primitives/InputGroup/index.cjs +91 -0
- package/dist/primitives/InputGroup/index.cjs.map +1 -0
- package/dist/primitives/InputGroup/index.d.cts +2 -0
- package/dist/primitives/InputGroup/index.d.ts +2 -0
- package/dist/primitives/InputGroup/index.js +85 -0
- package/dist/primitives/InputGroup/index.js.map +1 -0
- package/dist/primitives/InputOtp/index.cjs +80 -0
- package/dist/primitives/InputOtp/index.cjs.map +1 -0
- package/dist/primitives/InputOtp/index.d.cts +2 -0
- package/dist/primitives/InputOtp/index.d.ts +2 -0
- package/dist/primitives/InputOtp/index.js +74 -0
- package/dist/primitives/InputOtp/index.js.map +1 -0
- package/dist/primitives/Item/index.cjs +137 -0
- package/dist/primitives/Item/index.cjs.map +1 -0
- package/dist/primitives/Item/index.d.cts +2 -0
- package/dist/primitives/Item/index.d.ts +2 -0
- package/dist/primitives/Item/index.js +127 -0
- package/dist/primitives/Item/index.js.map +1 -0
- package/dist/primitives/Kbd/index.cjs +25 -0
- package/dist/primitives/Kbd/index.cjs.map +1 -0
- package/dist/primitives/Kbd/index.d.cts +2 -0
- package/dist/primitives/Kbd/index.d.ts +2 -0
- package/dist/primitives/Kbd/index.js +23 -0
- package/dist/primitives/Kbd/index.js.map +1 -0
- package/dist/primitives/Label/index.cjs +18 -0
- package/dist/primitives/Label/index.cjs.map +1 -0
- package/dist/primitives/Label/index.d.cts +2 -0
- package/dist/primitives/Label/index.d.ts +2 -0
- package/dist/primitives/Label/index.js +17 -0
- package/dist/primitives/Label/index.js.map +1 -0
- package/dist/primitives/Link/index.cjs +38 -0
- package/dist/primitives/Link/index.cjs.map +1 -0
- package/dist/primitives/Link/index.d.cts +2 -0
- package/dist/primitives/Link/index.d.ts +2 -0
- package/dist/primitives/Link/index.js +37 -0
- package/dist/primitives/Link/index.js.map +1 -0
- package/dist/primitives/Logo/index.cjs +3 -0
- package/dist/primitives/Logo/index.d.cts +2 -0
- package/dist/primitives/Logo/index.d.ts +2 -0
- package/dist/primitives/Logo/index.js +2 -0
- package/dist/primitives/Menubar/index.cjs +165 -0
- package/dist/primitives/Menubar/index.cjs.map +1 -0
- package/dist/primitives/Menubar/index.d.cts +2 -0
- package/dist/primitives/Menubar/index.d.ts +2 -0
- package/dist/primitives/Menubar/index.js +149 -0
- package/dist/primitives/Menubar/index.js.map +1 -0
- package/dist/primitives/NativeSelect/index.cjs +40 -0
- package/dist/primitives/NativeSelect/index.cjs.map +1 -0
- package/dist/primitives/NativeSelect/index.d.cts +2 -0
- package/dist/primitives/NativeSelect/index.d.ts +2 -0
- package/dist/primitives/NativeSelect/index.js +39 -0
- package/dist/primitives/NativeSelect/index.js.map +1 -0
- package/dist/primitives/NavRail/index.cjs +195 -0
- package/dist/primitives/NavRail/index.cjs.map +1 -0
- package/dist/primitives/NavRail/index.d.cts +2 -0
- package/dist/primitives/NavRail/index.d.ts +2 -0
- package/dist/primitives/NavRail/index.js +185 -0
- package/dist/primitives/NavRail/index.js.map +1 -0
- package/dist/primitives/NavigationMenu/index.cjs +98 -0
- package/dist/primitives/NavigationMenu/index.cjs.map +1 -0
- package/dist/primitives/NavigationMenu/index.d.cts +2 -0
- package/dist/primitives/NavigationMenu/index.d.ts +2 -0
- package/dist/primitives/NavigationMenu/index.js +89 -0
- package/dist/primitives/NavigationMenu/index.js.map +1 -0
- package/dist/primitives/Pagination/index.cjs +93 -0
- package/dist/primitives/Pagination/index.cjs.map +1 -0
- package/dist/primitives/Pagination/index.d.cts +2 -0
- package/dist/primitives/Pagination/index.d.ts +2 -0
- package/dist/primitives/Pagination/index.js +86 -0
- package/dist/primitives/Pagination/index.js.map +1 -0
- package/dist/primitives/Popover/index.cjs +70 -0
- package/dist/primitives/Popover/index.cjs.map +1 -0
- package/dist/primitives/Popover/index.d.cts +2 -0
- package/dist/primitives/Popover/index.d.ts +2 -0
- package/dist/primitives/Popover/index.js +63 -0
- package/dist/primitives/Popover/index.js.map +1 -0
- package/dist/primitives/Progress/index.cjs +44 -0
- package/dist/primitives/Progress/index.cjs.map +1 -0
- package/dist/primitives/Progress/index.d.cts +2 -0
- package/dist/primitives/Progress/index.d.ts +2 -0
- package/dist/primitives/Progress/index.js +43 -0
- package/dist/primitives/Progress/index.js.map +1 -0
- package/dist/primitives/RadioGroup/index.cjs +65 -0
- package/dist/primitives/RadioGroup/index.cjs.map +1 -0
- package/dist/primitives/RadioGroup/index.d.cts +2 -0
- package/dist/primitives/RadioGroup/index.d.ts +2 -0
- package/dist/primitives/RadioGroup/index.js +62 -0
- package/dist/primitives/RadioGroup/index.js.map +1 -0
- package/dist/primitives/Resizable/index.cjs +41 -0
- package/dist/primitives/Resizable/index.cjs.map +1 -0
- package/dist/primitives/Resizable/index.d.cts +2 -0
- package/dist/primitives/Resizable/index.d.ts +2 -0
- package/dist/primitives/Resizable/index.js +36 -0
- package/dist/primitives/Resizable/index.js.map +1 -0
- package/dist/primitives/ScrollArea/index.cjs +40 -0
- package/dist/primitives/ScrollArea/index.cjs.map +1 -0
- package/dist/primitives/ScrollArea/index.d.cts +2 -0
- package/dist/primitives/ScrollArea/index.d.ts +2 -0
- package/dist/primitives/ScrollArea/index.js +38 -0
- package/dist/primitives/ScrollArea/index.js.map +1 -0
- package/dist/primitives/Select/index.cjs +126 -0
- package/dist/primitives/Select/index.cjs.map +1 -0
- package/dist/primitives/Select/index.d.cts +2 -0
- package/dist/primitives/Select/index.d.ts +2 -0
- package/dist/primitives/Select/index.js +116 -0
- package/dist/primitives/Select/index.js.map +1 -0
- package/dist/primitives/Separator/index.cjs +25 -0
- package/dist/primitives/Separator/index.cjs.map +1 -0
- package/dist/primitives/Separator/index.d.cts +2 -0
- package/dist/primitives/Separator/index.d.ts +2 -0
- package/dist/primitives/Separator/index.js +24 -0
- package/dist/primitives/Separator/index.js.map +1 -0
- package/dist/primitives/Sheet/index.cjs +107 -0
- package/dist/primitives/Sheet/index.cjs.map +1 -0
- package/dist/primitives/Sheet/index.d.cts +2 -0
- package/dist/primitives/Sheet/index.d.ts +2 -0
- package/dist/primitives/Sheet/index.js +99 -0
- package/dist/primitives/Sheet/index.js.map +1 -0
- package/dist/primitives/Sidebar/index.cjs +26 -0
- package/dist/primitives/Sidebar/index.d.cts +2 -0
- package/dist/primitives/Sidebar/index.d.ts +2 -0
- package/dist/primitives/Sidebar/index.js +2 -0
- package/dist/primitives/Skeleton/index.cjs +43 -0
- package/dist/primitives/Skeleton/index.cjs.map +1 -0
- package/dist/primitives/Skeleton/index.d.cts +2 -0
- package/dist/primitives/Skeleton/index.d.ts +2 -0
- package/dist/primitives/Skeleton/index.js +39 -0
- package/dist/primitives/Skeleton/index.js.map +1 -0
- package/dist/primitives/Slider/index.cjs +46 -0
- package/dist/primitives/Slider/index.cjs.map +1 -0
- package/dist/primitives/Slider/index.d.cts +2 -0
- package/dist/primitives/Slider/index.d.ts +2 -0
- package/dist/primitives/Slider/index.js +43 -0
- package/dist/primitives/Slider/index.js.map +1 -0
- package/dist/primitives/Sonner/index.cjs +42 -0
- package/dist/primitives/Sonner/index.cjs.map +1 -0
- package/dist/primitives/Sonner/index.d.cts +2 -0
- package/dist/primitives/Sonner/index.d.ts +2 -0
- package/dist/primitives/Sonner/index.js +41 -0
- package/dist/primitives/Sonner/index.js.map +1 -0
- package/dist/primitives/Spinner/index.cjs +19 -0
- package/dist/primitives/Spinner/index.cjs.map +1 -0
- package/dist/primitives/Spinner/index.d.cts +2 -0
- package/dist/primitives/Spinner/index.d.ts +2 -0
- package/dist/primitives/Spinner/index.js +18 -0
- package/dist/primitives/Spinner/index.js.map +1 -0
- package/dist/primitives/Switch/index.cjs +71 -0
- package/dist/primitives/Switch/index.cjs.map +1 -0
- package/dist/primitives/Switch/index.d.cts +2 -0
- package/dist/primitives/Switch/index.d.ts +2 -0
- package/dist/primitives/Switch/index.js +68 -0
- package/dist/primitives/Switch/index.js.map +1 -0
- package/dist/primitives/Table/index.cjs +84 -0
- package/dist/primitives/Table/index.cjs.map +1 -0
- package/dist/primitives/Table/index.d.cts +2 -0
- package/dist/primitives/Table/index.d.ts +2 -0
- package/dist/primitives/Table/index.js +76 -0
- package/dist/primitives/Table/index.js.map +1 -0
- package/dist/primitives/Tabs/index.cjs +267 -0
- package/dist/primitives/Tabs/index.cjs.map +1 -0
- package/dist/primitives/Tabs/index.d.cts +2 -0
- package/dist/primitives/Tabs/index.d.ts +2 -0
- package/dist/primitives/Tabs/index.js +258 -0
- package/dist/primitives/Tabs/index.js.map +1 -0
- package/dist/primitives/Text/index.cjs +64 -0
- package/dist/primitives/Text/index.cjs.map +1 -0
- package/dist/primitives/Text/index.d.cts +2 -0
- package/dist/primitives/Text/index.d.ts +2 -0
- package/dist/primitives/Text/index.js +63 -0
- package/dist/primitives/Text/index.js.map +1 -0
- package/dist/primitives/Textarea/index.cjs +24 -0
- package/dist/primitives/Textarea/index.cjs.map +1 -0
- package/dist/primitives/Textarea/index.d.cts +2 -0
- package/dist/primitives/Textarea/index.d.ts +2 -0
- package/dist/primitives/Textarea/index.js +23 -0
- package/dist/primitives/Textarea/index.js.map +1 -0
- package/dist/primitives/ThemeProvider/index.cjs +93 -0
- package/dist/primitives/ThemeProvider/index.cjs.map +1 -0
- package/dist/primitives/ThemeProvider/index.d.cts +2 -0
- package/dist/primitives/ThemeProvider/index.d.ts +2 -0
- package/dist/primitives/ThemeProvider/index.js +88 -0
- package/dist/primitives/ThemeProvider/index.js.map +1 -0
- package/dist/primitives/Toggle/index.cjs +59 -0
- package/dist/primitives/Toggle/index.cjs.map +1 -0
- package/dist/primitives/Toggle/index.d.cts +2 -0
- package/dist/primitives/Toggle/index.d.ts +2 -0
- package/dist/primitives/Toggle/index.js +58 -0
- package/dist/primitives/Toggle/index.js.map +1 -0
- package/dist/primitives/ToggleGroup/index.cjs +65 -0
- package/dist/primitives/ToggleGroup/index.cjs.map +1 -0
- package/dist/primitives/ToggleGroup/index.d.cts +2 -0
- package/dist/primitives/ToggleGroup/index.d.ts +2 -0
- package/dist/primitives/ToggleGroup/index.js +61 -0
- package/dist/primitives/ToggleGroup/index.js.map +1 -0
- package/dist/primitives/Tooltip/index.cjs +47 -0
- package/dist/primitives/Tooltip/index.cjs.map +1 -0
- package/dist/primitives/Tooltip/index.d.cts +2 -0
- package/dist/primitives/Tooltip/index.d.ts +2 -0
- package/dist/primitives/Tooltip/index.js +43 -0
- package/dist/primitives/Tooltip/index.js.map +1 -0
- package/dist/primitives/index.cjs +398 -335
- package/dist/primitives/index.d.cts +65 -3
- package/dist/primitives/index.d.ts +65 -3
- package/dist/primitives/index.js +65 -3
- package/dist/styles/base.css +70 -0
- package/dist/styles/semantic.css +62 -2
- package/dist/styles/theme.css +12 -0
- package/package.json +21 -2
- package/dist/Stack.cjs.map +0 -1
- package/dist/Stack.js.map +0 -1
- package/dist/ThemeProvider.cjs.map +0 -1
- package/dist/ThemeProvider.d.cts +0 -85
- package/dist/ThemeProvider.d.cts.map +0 -1
- package/dist/ThemeProvider.d.ts +0 -85
- package/dist/ThemeProvider.d.ts.map +0 -1
- package/dist/ThemeProvider.js.map +0 -1
- package/dist/layouts/index.cjs.map +0 -1
- package/dist/layouts/index.d.cts.map +0 -1
- package/dist/layouts/index.d.ts.map +0 -1
- package/dist/layouts/index.js.map +0 -1
- package/dist/patterns/index.cjs.map +0 -1
- package/dist/patterns/index.d.cts.map +0 -1
- package/dist/patterns/index.d.ts.map +0 -1
- package/dist/patterns/index.js.map +0 -1
- package/dist/primitives.cjs +0 -6979
- package/dist/primitives.cjs.map +0 -1
- package/dist/primitives.js +0 -5357
- package/dist/primitives.js.map +0 -1
- package/dist/utils.cjs.map +0 -1
- package/dist/utils.js +0 -27
- package/dist/utils.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.js","names":["Avatar","AvatarPrimitive","DropdownMenu","DropdownMenuPrimitive","Popover","PopoverPrimitive"],"sources":["../src/primitives/Spinner/Spinner.tsx","../src/primitives/Button/Button.tsx","../src/primitives/Avatar/Avatar.tsx","../src/primitives/Card/Card.tsx","../src/primitives/Credits/Credits.tsx","../src/primitives/DropdownMenu/DropdownMenu.tsx","../src/primitives/Heading/Heading.tsx","../src/primitives/Input/Input.tsx","../src/primitives/Logo/marks/bodhi-icon.tsx","../src/primitives/Logo/marks/bodhi-logo.tsx","../src/primitives/Logo/marks/psai-logo.tsx","../src/primitives/Logo/marks/slingshot-icon.tsx","../src/primitives/Logo/marks/slingshot-logo.tsx","../src/primitives/Logo/marks/sustain-icon.tsx","../src/primitives/Logo/marks/sustain-logo.tsx","../src/primitives/Logo/Logo.tsx","../src/primitives/Popover/Popover.tsx","../src/primitives/Skeleton/Skeleton.tsx","../src/primitives/Table/Table.tsx","../src/primitives/Text/Text.tsx","../src/primitives/ThemeProvider/ThemeProvider.tsx"],"sourcesContent":["import { Loader2Icon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon\n role=\"status\"\n aria-label=\"Loading\"\n data-slot=\"spinner\"\n className={cn(\"size-4 animate-spin\", className)}\n {...props}\n />\n );\n}\n\nexport { Spinner };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { Spinner } from \"@/primitives/Spinner\";\nimport { cn } from \"@/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium cursor-pointer transition-[background-color,color,border-color,box-shadow,opacity,transform] duration-150 ease-out active:scale-[0.97] disabled:pointer-events-none disabled:opacity-50 disabled:active:scale-100 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background text-foreground hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n xs: \"h-7 gap-1 px-2.5 text-xs has-[>svg]:px-2\",\n sm: \"h-8 gap-1.5 px-3 has-[>svg]:px-2.5\",\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n lg: \"h-10 px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n // Default is a pill (Figma); `square` gives the standard rounded-md corner.\n shape: {\n default: \"rounded-full\",\n square: \"rounded-md\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n shape: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant,\n size,\n shape,\n asChild = false,\n loading = false,\n disabled,\n children,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n loading?: boolean;\n }) {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n data-loading={loading || undefined}\n className={cn(buttonVariants({ variant, size, shape, className }))}\n disabled={disabled || loading}\n {...props}\n >\n {/* asChild expects a single child, so only plain buttons get the spinner. */}\n {asChild ? (\n children\n ) : (\n <>\n {loading ? <Spinner /> : null}\n {children}\n </>\n )}\n </Comp>\n );\n}\n\nexport { Button, buttonVariants };\n","import { Avatar as AvatarPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Avatar({\n className,\n size = \"default\",\n shape = \"round\",\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: \"default\" | \"sm\" | \"xs\" | \"xxs\";\n shape?: \"round\" | \"roundrect\";\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n data-shape={shape}\n className={cn(\n \"group/avatar relative flex size-10 shrink-0 overflow-hidden rounded-full select-none\",\n \"data-[size=sm]:size-8 data-[size=xs]:size-6 data-[size=xxs]:size-5\",\n \"data-[shape=roundrect]:rounded-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n \"group-data-[shape=roundrect]/avatar:rounded-lg\",\n \"group-data-[size=sm]/avatar:text-sm group-data-[size=xs]/avatar:text-xs group-data-[size=xxs]/avatar:text-[10px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n \"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground ring-2 ring-background select-none\",\n \"group-data-[size=default]/avatar:size-3 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=sm]/avatar:size-2.5 group-data-[size=sm]/avatar:[&>svg]:size-2\",\n \"group-data-[size=xs]/avatar:size-2 group-data-[size=xs]/avatar:[&>svg]:size-1.5\",\n \"group-data-[size=xxs]/avatar:size-1.5 group-data-[size=xxs]/avatar:[&>svg]:size-1\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n \"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarGroupCount({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n \"relative flex size-10 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=sm]/avatar-group:size-8 [&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback, AvatarBadge, AvatarGroup, AvatarGroupCount };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nconst cardVariants = cva(\"flex flex-col gap-6 rounded-xl border text-card-foreground\", {\n variants: {\n variant: {\n // Solid surface (default).\n default: \"bg-card\",\n // Translucent, backdrop-blurred glass surface — reads over a textured\n // background (e.g. PageBackground). `tint` picks the --glass-* token.\n glass: \"border-transparent backdrop-blur-[var(--glass-blur)]\",\n },\n tint: {\n subtle: \"\",\n light: \"\",\n medium: \"\",\n heavy: \"\",\n },\n },\n compoundVariants: [\n { variant: \"glass\", tint: \"subtle\", class: \"bg-[var(--glass-subtle)]\" },\n { variant: \"glass\", tint: \"light\", class: \"bg-[var(--glass-light)]\" },\n { variant: \"glass\", tint: \"medium\", class: \"bg-[var(--glass-medium)]\" },\n { variant: \"glass\", tint: \"heavy\", class: \"bg-[var(--glass-heavy)]\" },\n ],\n defaultVariants: {\n variant: \"default\",\n tint: \"light\",\n },\n});\n\ntype CardProps = React.ComponentProps<\"div\"> & VariantProps<typeof cardVariants>;\n\nfunction Card({ className, variant, tint, ...props }: CardProps) {\n return (\n <div\n data-slot=\"card\"\n data-variant={variant ?? \"default\"}\n className={cn(cardVariants({ variant, tint }), className)}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 pt-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return <h4 data-slot=\"card-title\" className={cn(\"leading-none\", className)} {...props} />;\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <p data-slot=\"card-description\" className={cn(\"text-muted-foreground\", className)} {...props} />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\", className)}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6 [&:last-child]:pb-6\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 pb-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n cardVariants,\n type CardProps,\n};\n","import { cva } from \"class-variance-authority\";\nimport { CirclePlus } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n// Credits — a pill showing a remaining-credits balance. Badge-like, but its own\n// primitive: the colour escalates with how low the balance is (Figma): neutral\n// when healthy, soft amber when low, soft red at zero. The variant is derived\n// from `value` (override with `variant`), and the value is formatted for display.\n\nexport type CreditsVariant = \"default\" | \"warning\" | \"critical\";\n\nconst creditsVariants = cva(\n \"inline-flex w-fit items-center gap-1 rounded-full px-2.5 py-0.5 text-sm font-medium tabular-nums whitespace-nowrap [&>svg]:size-3.5 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-muted text-foreground [&>svg]:text-muted-foreground\",\n warning: \"bg-[var(--bg-warning-subtle)] text-[var(--content-warning-bold)]\",\n critical: \"bg-[var(--bg-error-subtle)] text-[var(--content-error-bold)]\",\n },\n },\n defaultVariants: { variant: \"default\" },\n },\n);\n\n/** Escalate the variant as the balance drops. */\nfunction resolveVariant(value: number, lowThreshold: number): CreditsVariant {\n if (value <= 0) return \"critical\";\n if (value <= lowThreshold) return \"warning\";\n return \"default\";\n}\n\n/** Whole-number, thousands-separated (e.g. 9995.79 → \"9,995\"). */\nfunction formatCredits(value: number): string {\n return Math.floor(value).toLocaleString();\n}\n\ntype CreditsProps = Omit<React.ComponentProps<\"span\">, \"children\"> & {\n /** The numeric balance. */\n value: number;\n /** Force a variant; by default it is derived from `value`. */\n variant?: CreditsVariant;\n /** Balance at/below which the warning variant kicks in. Default 200. */\n lowThreshold?: number;\n /** Override the leading icon. */\n icon?: React.ReactNode;\n /** Override how the value is rendered. */\n format?: (value: number) => string;\n};\n\nfunction Credits({\n className,\n value,\n variant,\n lowThreshold = 200,\n icon,\n format = formatCredits,\n ...props\n}: CreditsProps) {\n const resolved = variant ?? resolveVariant(value, lowThreshold);\n return (\n <span\n data-slot=\"credits\"\n data-variant={resolved}\n className={cn(creditsVariants({ variant: resolved }), className)}\n {...props}\n >\n {icon ?? <CirclePlus aria-hidden=\"true\" />}\n {format(value)}\n </span>\n );\n}\n\nexport { Credits, creditsVariants, type CreditsProps };\n","import { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return <DropdownMenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />;\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return <DropdownMenuPrimitive.RadioGroup data-slot=\"dropdown-menu-radio-group\" {...props} />;\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n// Heading — display/section titles using the design-system HEADING scale\n// (Outfit): the Figma \"heading 1–7\" steps (tokens in styles/tokens/typography.css).\n// `size` drives the visual step (font-size + line-height + the spec's per-step\n// weight: 1–4 Regular, 5–7 Medium); `as` controls the semantic level\n// independently; `gradient` enables the brand gradient text fill.\nconst headingVariants = cva(\"font-heading text-balance\", {\n variants: {\n size: {\n \"1\": \"text-[length:var(--heading-1-font-size)] leading-[var(--heading-1-line-height)] font-normal\",\n \"2\": \"text-[length:var(--heading-2-font-size)] leading-[var(--heading-2-line-height)] font-normal\",\n \"3\": \"text-[length:var(--heading-3-font-size)] leading-[var(--heading-3-line-height)] font-normal\",\n \"4\": \"text-[length:var(--heading-4-font-size)] leading-[var(--heading-4-line-height)] font-normal\",\n \"5\": \"text-[length:var(--heading-5-font-size)] leading-[var(--heading-5-line-height)] font-medium\",\n \"6\": \"text-[length:var(--heading-6-font-size)] leading-[var(--heading-6-line-height)] font-medium\",\n \"7\": \"text-[length:var(--heading-7-font-size)] leading-[var(--heading-7-line-height)] font-medium\",\n },\n // Optional override of the per-step default weight.\n weight: {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n },\n align: {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n },\n gradient: {\n true: \"bg-gradient-to-r from-[var(--gradient-heading-from)] to-[var(--gradient-heading-to)] bg-clip-text text-transparent\",\n false: \"text-foreground\",\n },\n },\n defaultVariants: {\n size: \"2\",\n gradient: false,\n },\n});\n\ntype HeadingProps = React.ComponentProps<\"h2\"> &\n VariantProps<typeof headingVariants> & {\n /** Semantic heading level/element. Defaults to `h2`. */\n as?: React.ElementType;\n };\n\nfunction Heading({ as, className, size, weight, align, gradient, ...props }: HeadingProps) {\n const Comp = as ?? \"h2\";\n return (\n <Comp\n data-slot=\"heading\"\n className={cn(headingVariants({ size, weight, align, gradient }), className)}\n {...props}\n />\n );\n}\n\nexport { Heading, headingVariants, type HeadingProps };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nconst inputVariants = cva(\n cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input bg-input-background flex w-full min-w-0 border transition-[color,box-shadow] outline-none file:inline-flex file:border-0 file:bg-transparent file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n ),\n {\n variants: {\n // Sizes map to the Figma \"Input\" spec: Mini 24px / Small 32px / Regular 36px / Large 40px.\n size: {\n xs: \"h-6 px-2 py-0.5 text-xs file:h-5 file:text-xs\",\n sm: \"h-8 px-2.5 py-1 text-sm file:h-6 file:text-xs\",\n default: \"h-9 px-3 py-1 text-base md:text-sm file:h-7 file:text-sm\",\n lg: \"h-10 px-4 py-2 text-base file:h-8 file:text-sm\",\n },\n // Roundness: Default (rounded-md) and Round (pill).\n shape: {\n default: \"rounded-md\",\n round: \"rounded-full\",\n },\n },\n defaultVariants: {\n size: \"default\",\n shape: \"default\",\n },\n },\n);\n\nfunction Input({\n className,\n type,\n size,\n shape,\n ...props\n}: Omit<React.ComponentProps<\"input\">, \"size\"> & VariantProps<typeof inputVariants>) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(inputVariants({ size, shape }), className)}\n {...props}\n />\n );\n}\n\nexport { Input, inputVariants };\n","import type * as React from \"react\";\n\nexport function BodhiIcon(props: React.ComponentProps<\"svg\">) {\n return (\n <svg\n width=\"64\"\n height=\"64\"\n viewBox=\"0 0 64 64\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n style={{ fill: \"var(--red-500)\" }}\n >\n <path\n d=\"M63.3 32.5c0 17.32-14.06 32.05-31.4 32.05C14.55 64.55.5 49.82.5 32.5A31.4 31.4 0 0 1 31.9 1.13 31.4 31.4 0 0 1 63.3 32.5\"\n fill=\"white\"\n />\n <path d=\"M32 .55a32 32 0 0 1 2.64 63.9l-.79-11.57.4-1.01 8.6-8.79a2.38 2.38 0 0 0 4.42-.85l8.54-.87a2.39 2.39 0 1 0 2.74-2.9l.17-9.7c.9-.04 1.6-.75 1.6-1.68a1.69 1.69 0 0 0-2.59-1.42L52.1 18a2.28 2.28 0 0 0-3.36-3.09l-4.88-4.22q.1-.28.1-.59a1.69 1.69 0 0 0-3.17-.8l-6.55-1.27a1.69 1.69 0 0 0-3.32-.01l-6.6 1.29a1.7 1.7 0 0 0-3.08 1.38l-4.88 4.22q-.23-.24-.55-.42a2.29 2.29 0 0 0-2.8 3.51l-5.64 7.66a1.7 1.7 0 0 0-.91-.27 1.69 1.69 0 0 0-.08 3.37l.17 9.85a2.39 2.39 0 1 0 3.26 2.8l8.02.82a2.38 2.38 0 0 0 4.06 1.34l8.4 9.04-.78 11.86C13 63.2 0 50.24 0 32.56a32 32 0 0 1 32-32\" />\n <path d=\"M40.52 35.07a2.4 2.4 0 0 0 1.97.3l1.43 4.35c-.82.37-1.4 1.2-1.4 2.17v.07l-8.9 6.9-.2-7.96z\" />\n <path d=\"m30.84 40.87-.42 7.95-7.96-6.2a2.37 2.37 0 0 0-1.28-2.9l1.5-4.54c.62 0 1.2-.25 1.62-.65z\" />\n <path d=\"M12.55 33.23a2.6 2.6 0 0 0 2.65.18l3.71 6.47a2.4 2.4 0 0 0-1.1 2.13l-7.95-.81q.04-.2.04-.4c0-.95-.55-1.76-1.35-2.15z\" />\n <path d=\"M56.68 38.9a2.4 2.4 0 0 0-.91 2.25l-8.48.86v-.12c0-.85-.44-1.59-1.1-2.01l3.7-6.47a2.6 2.6 0 0 0 2.63-.16z\" />\n <path d=\"M39.82 31.79a2.4 2.4 0 0 0 .52 3.15l-6.93 5.69-.28-11.4q.49-.24.81-.64z\" />\n <path d=\"M30.6 28.93q.38.3.84.43l-.59 11.22-6.4-6.2a2.4 2.4 0 0 0 .47-2.36z\" />\n <path d=\"M20.28 32.92c.07 1.19 1 2.14 2.17 2.25l-1.47 4.47a2.4 2.4 0 0 0-1.88.13l-3.7-6.47q.57-.35.91-.94z\" />\n <path d=\"M48.78 32.36q.35.59.92.94L46 39.77a2 2 0 0 0-.8-.25l-.3-.02q-.4 0-.78.14L42.7 35.3c.89-.35 1.52-1.21 1.52-2.23v-.06z\" />\n <path d=\"M57.25 28.04c.28.4.73.68 1.25.72l-.17 9.66h-.2q-.68 0-1.21.32l-4.17-5.66a2.6 2.6 0 0 0 .84-2.84z\" />\n <path d=\"M11.5 30.24a2.6 2.6 0 0 0 .87 2.86l-4.02 5.47a2.4 2.4 0 0 0-1.59-.04l-.17-9.77c.52-.04.97-.32 1.25-.72z\" />\n <path d=\"M49.21 29.17a2.6 2.6 0 0 0-.53 2.99l-4.49.64a2.4 2.4 0 0 0-1.33-1.87l.85-8.06h.02q.5-.01.88-.25z\" />\n <path d=\"M20.49 22.62q.4.24.88.25h.02l.8 7.58a2.4 2.4 0 0 0-1.9 2.25l-3.87-.54a2.6 2.6 0 0 0-.53-3z\" />\n <path d=\"M29.83 26.32a2.4 2.4 0 0 0 .55 2.4l-5.57 3.04a2.4 2.4 0 0 0-2.41-1.34l-.8-7.57q.55-.08.93-.44z\" />\n <path d=\"M42.57 22.41q.38.37.93.45l-.84 7.98a2.4 2.4 0 0 0-2.54.57l-.18.2-5.87-3.2a2.4 2.4 0 0 0 .4-1.66z\" />\n <path d=\"M48.4 17.6a2.3 2.3 0 0 0 2.9.99l.2-.1q.25-.14.44-.33l5.62 7.63a1.7 1.7 0 0 0-.42 2.06l-3.62 2.18a2.64 2.64 0 0 0-4.15-1L44.8 22.5a1.7 1.7 0 0 0 .32-2.28z\" />\n <path d=\"M19.98 20.22a1.7 1.7 0 0 0 .33 2.28l-4.58 6.52a2.63 2.63 0 0 0-4.15 1.01l-3.62-2.18a1.7 1.7 0 0 0-.42-2.06l5.61-7.63q.2.18.45.32c1.1.61 2.48.22 3.1-.88z\" />\n <path d=\"m42.06 20.92-.02.27q.01.61.38 1.06l-8 4.28a2.4 2.4 0 0 0-1.91-1.81l.08-4.14c.83 0 1.51-.6 1.65-1.4z\" />\n <path d=\"M30.94 19.3c.16.67.73 1.19 1.44 1.27l-.08 4.12-.2-.01c-.98 0-1.82.6-2.19 1.44l-7.23-3.87a1.7 1.7 0 0 0 .36-1.3z\" />\n <path d=\"M21.33 10.9c.25.46.71.8 1.26.87l.23.02c.48 0 .9-.2 1.21-.51l7.42 6.37a1.7 1.7 0 0 0-.55 1.43L23 20.74a1.69 1.69 0 0 0-2.88-.69L16.8 17.4c.34-.78.21-1.68-.3-2.33z\" />\n <path d=\"M48.6 15.07c-.51.65-.64 1.54-.3 2.33l-3.32 2.65a1.68 1.68 0 0 0-2.87.66l-7.85-1.75v-.06q0-.54-.29-.96l7.15-6.61a1.68 1.68 0 0 0 2.65-.44z\" />\n <path d=\"M40.7 9.5a1.7 1.7 0 0 0 .27 1.67l-7.13 6.6c-.3-.32-.72-.54-1.19-.56L32.8 10c.83-.11 1.48-.82 1.48-1.68v-.06z\" />\n <path d=\"M30.89 8.32c0 .93.75 1.68 1.69 1.68l-.14 7.22q-.46.04-.82.29l-7.45-6.4a1.7 1.7 0 0 0 .23-1.6l6.5-1.27z\" />\n </svg>\n );\n}\n","import type * as React from \"react\";\n\nexport function BodhiLogo(props: React.ComponentProps<\"svg\">) {\n return (\n <svg\n width=\"101\"\n height=\"37\"\n viewBox=\"0 0 101 37\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n style={\n {\n \"--logo-circle-bg\": \"var(--background)\",\n \"--logo-icon-red\": \"var(--red-500)\",\n \"--logo-text-dark\": \"var(--foreground)\",\n } as React.CSSProperties\n }\n >\n <path\n d=\"M35.6 18.28c0 9.74-7.9 18.03-17.66 18.03S.28 28.02.28 18.28 8.18.64 17.94.64s17.67 7.9 17.67 17.64\"\n fill=\"var(--logo-circle-bg)\"\n />\n <path\n d=\"M18 .31a18 18 0 0 1 1.48 35.95l-.44-6.52.23-.56 4.83-4.95a1.34 1.34 0 0 0 2.49-.47l4.8-.5a1.34 1.34 0 1 0 1.55-1.63l.09-5.45c.5-.02.9-.42.9-.95a.95.95 0 0 0-1.46-.8l-3.17-4.3a1.28 1.28 0 0 0-1.89-1.74L24.67 6q.06-.15.06-.33a.95.95 0 0 0-1.79-.45l-3.68-.71a.95.95 0 0 0-1.87 0l-3.71.71a.95.95 0 0 0-1.73.78L9.2 8.4a1.29 1.29 0 0 0-1.89 1.74l-3.16 4.3a1 1 0 0 0-.52-.15.95.95 0 0 0-.04 1.9l.1 5.54a1.34 1.34 0 1 0 1.83 1.57l4.5.47a1.34 1.34 0 0 0 2.3.75l4.72 5.08-.44 6.68C7.3 35.55 0 28.26 0 18.3a18 18 0 0 1 18-18\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M22.8 19.73a1.3 1.3 0 0 0 1.1.16l.8 2.45c-.46.21-.78.68-.78 1.22v.04l-5.01 3.89L18.8 23z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"m17.35 22.99-.24 4.47-4.47-3.49a1.34 1.34 0 0 0-.73-1.63l.85-2.55q.54-.01.9-.37z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M7.06 18.7a1.5 1.5 0 0 0 1.5.1l2.08 3.63a1.3 1.3 0 0 0-.62 1.2l-4.47-.45.02-.23c0-.53-.31-.99-.76-1.2z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M31.88 21.88a1.3 1.3 0 0 0-.51 1.26l-4.77.5v-.08c0-.47-.25-.9-.62-1.13l2.09-3.64a1.5 1.5 0 0 0 1.47-.09z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M22.4 17.88a1.34 1.34 0 0 0 .3 1.78l-3.9 3.2-.16-6.42q.26-.13.45-.36z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M17.22 16.27q.2.17.46.25l-.33 6.3-3.6-3.48a1.3 1.3 0 0 0 .27-1.33z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M11.41 18.52c.04.67.56 1.2 1.22 1.26l-.83 2.52a1.3 1.3 0 0 0-1.06.07l-2.08-3.64q.32-.2.52-.53z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M27.44 18.2q.2.33.52.53l-2.09 3.64a1 1 0 0 0-.45-.14l-.16-.01q-.23 0-.44.08l-.8-2.45c.5-.19.85-.68.85-1.25v-.03z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M32.2 15.77q.26.36.7.4l-.09 5.44h-.12q-.37 0-.67.18l-2.35-3.18a1.5 1.5 0 0 0 .47-1.6z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M6.47 17.01a1.5 1.5 0 0 0 .49 1.61L4.7 21.7a1.3 1.3 0 0 0-.9-.02l-.1-5.5q.47-.04.71-.4z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M27.68 16.4a1.5 1.5 0 0 0-.3 1.69l-2.52.36a1.3 1.3 0 0 0-.75-1.05l.48-4.53q.29-.01.5-.14z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M11.53 12.73q.2.13.49.14h.01l.45 4.26c-.6.12-1.05.64-1.07 1.27l-2.17-.31a1.5 1.5 0 0 0-.3-1.68z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M16.78 14.8a1.3 1.3 0 0 0 .31 1.36l-3.13 1.7a1.3 1.3 0 0 0-1.36-.75l-.45-4.25q.3-.05.52-.26z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M23.94 12.6q.23.21.53.26l-.48 4.49a1.3 1.3 0 0 0-1.43.32l-.1.11-3.3-1.8a1.3 1.3 0 0 0 .23-.93z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M27.23 9.9c.32.58 1.02.81 1.62.55l.12-.05q.14-.08.25-.18l3.16 4.29a.95.95 0 0 0-.24 1.16l-2.04 1.22a1.5 1.5 0 0 0-2.33-.57l-2.58-3.66a.95.95 0 0 0 .19-1.29z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M11.24 11.37a.95.95 0 0 0 .19 1.29l-2.58 3.66a1.48 1.48 0 0 0-2.33.57l-2.04-1.22a.94.94 0 0 0-.24-1.17l3.16-4.28q.11.1.25.18c.62.34 1.4.12 1.74-.5z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"m23.66 11.77-.01.15q0 .34.21.6l-4.5 2.4a1.3 1.3 0 0 0-1.07-1.01l.04-2.33c.47 0 .85-.35.93-.8z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M17.4 10.85c.1.38.41.67.81.72l-.04 2.32h-.11c-.55 0-1.03.33-1.23.8l-4.07-2.18a1 1 0 0 0 .2-.73z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M12 6.13c.14.26.4.45.7.5h.14q.4 0 .68-.29l4.17 3.59a1 1 0 0 0-.3.8l-4.46.93a.95.95 0 0 0-1.61-.38L9.45 9.79c.2-.44.12-.95-.17-1.31z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M27.34 8.48c-.3.36-.36.87-.17 1.3l-1.87 1.5a.95.95 0 0 0-1.61.37l-4.42-.99v-.03q0-.3-.16-.54l4.02-3.72a.95.95 0 0 0 1.49-.24z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M22.9 5.35a1 1 0 0 0 .15.94L19.03 10a1 1 0 0 0-.66-.32l.08-4.06a.95.95 0 0 0 .82-.94v-.04z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n d=\"M17.38 4.68c0 .52.42.95.94.95l-.07 4.05a1 1 0 0 0-.47.17l-4.18-3.6a1 1 0 0 0 .13-.9l3.65-.71z\"\n fill=\"var(--logo-icon-red)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M66.27 5.17a.5.5 0 0 0 .49-.5.5.5 0 0 0-.5-.5.5.5 0 0 0-.48.5c0 .28.22.5.49.5\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M65.88 12.73h.76V6.1h-.76z\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M50.72 9.4c0-1.38 1.06-2.5 2.37-2.5 1.3 0 2.37 1.12 2.37 2.5v.1c-.05 1.37-1.1 2.44-2.37 2.44-1.28 0-2.37-1.14-2.37-2.54m2.37 3.32c.92 0 1.77-.41 2.37-1.15v1.16h.76V6.1h-.76v1.14a3 3 0 0 0-2.37-1.14 3.2 3.2 0 0 0-3.13 3.3c0 1.8 1.4 3.31 3.13 3.31\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M61.35 11.94c-1.28 0-2.32-1.07-2.37-2.43v-.1c0-1.4 1.06-2.52 2.37-2.52 1.3 0 2.37 1.13 2.37 2.51 0 1.39-1.07 2.54-2.37 2.54m3.13-2.54c0-1.81-1.4-3.29-3.13-3.29-.93 0-1.78.41-2.37 1.14V6.1h-.76v9h.76v-3.53c.6.73 1.45 1.14 2.37 1.14 1.72 0 3.13-1.49 3.13-3.32\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M78.73 6.11c-.72 0-1.4.3-1.9.84V6.1h-.74v6.62h.73V8.8a1.95 1.95 0 0 1 1.9-1.93c1.03 0 1.9.86 1.9 1.93v3.92h.75V8.8c0-1.49-1.19-2.7-2.64-2.7\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"m85.3 11.97-.07.02q-.11.04-.37.05-.44.02-.44-.67v-4.5h.9V6.1h-.9V3.89h-.78V6.1h-.9v.76h.9v4.53q0 .74.28 1.01.27.3.77.31.37 0 .61-.1l.05-.01z\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M71.42 6.88c1.11 0 2.07.83 2.3 1.97h-4.65a2.4 2.4 0 0 1 2.34-1.97m1.98 3.94a2.3 2.3 0 0 1-1.99 1.14 2.46 2.46 0 0 1-2.39-2.36h5.14c.2 0 .37-.15.37-.35v-.06c-.13-1.75-1.47-3.08-3.12-3.08a3.24 3.24 0 0 0-3.14 3.32c0 1.83 1.41 3.3 3.14 3.3 1.06 0 2.04-.56 2.61-1.5z\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M48.2 9.53s-.2-.16-.41-.25c-.22-.09-.52-.2-1.16-.35q-.12-.04-.25-.06-.63-.17-1-.44-.33-.28-.3-.61.01-.39.4-.67.45-.34 1.18-.3c.54.02.95.3 1.39.62l.04.03.55-.53-.26-.2c-.44-.3-.97-.62-1.69-.65q-.95-.04-1.6.38c-.47.32-.77.79-.77 1.28-.01.37.07.72.43 1.08.43.43 1.1.65 1.72.77.53.1 1.02.3 1.26.51.3.28.4.48.4.77q-.02.42-.48.72c-.3.23-.73.35-1.18.33a3.2 3.2 0 0 1-1.82-.78l-.04-.04-.54.51.05.05q1.09.95 2.31 1.02a2.6 2.6 0 0 0 1.64-.46q.77-.54.81-1.32a1.7 1.7 0 0 0-.68-1.41\"\n fill=\"var(--logo-text-dark)\"\n />\n <path\n d=\"M53.33 27.23a2.75 2.75 0 1 0-5.5-.02 2.77 2.77 0 0 0 2.76 2.74 2.77 2.77 0 0 0 2.74-2.72m-7.96-12.08h2.76v8.42Q49.5 22 51.39 22c2.7 0 4.76 2.24 4.76 5.2 0 3.04-2.04 5.22-4.82 5.22a3.9 3.9 0 0 1-3.2-1.58v1.28h-2.76zm15.19 12.02a2.74 2.74 0 0 0 2.76 2.78 2.8 2.8 0 0 0 2.78-2.74 2.8 2.8 0 0 0-2.78-2.74 2.8 2.8 0 0 0-2.76 2.7m-2.84-.04c0-2.98 2.38-5.14 5.62-5.14s5.58 2.16 5.58 5.2c0 3.16-2.36 5.22-5.64 5.22-3.34 0-5.56-2.18-5.56-5.28m21.1.1a2.76 2.76 0 0 0-2.75-2.76 2.76 2.76 0 0 0-2.74 2.74c0 1.5 1.24 2.74 2.74 2.74a2.8 2.8 0 0 0 2.74-2.72m-.3-3.66v-8.42h2.75v16.96h-2.76v-1.28a3.9 3.9 0 0 1-3.2 1.58c-2.76 0-4.82-2.22-4.82-5.22 0-2.92 2.06-5.2 4.76-5.2q1.92.01 3.26 1.58m5.34 8.54V15.15h2.76v8.44a3.6 3.6 0 0 1 3.06-1.6c1.4 0 2.3.52 2.96 1.34.52.66.68 1.54.68 2.62v6.16h-2.76v-5.38c0-1.74-.5-2.4-1.86-2.4q-2.09 0-2.08 2.76v5.02zm12.01-9.8h2.76v9.8h-2.76zm-.26-4.14c0-.9.74-1.64 1.64-1.64s1.64.74 1.64 1.64-.74 1.64-1.64 1.64-1.64-.74-1.64-1.64\"\n fill=\"var(--logo-text-dark)\"\n />\n </svg>\n );\n}\n\nexport default BodhiLogo;\n","import type * as React from \"react\";\n\nexport function PSAILogo(props: React.ComponentProps<\"svg\">) {\n return (\n <svg\n width=\"151\"\n height=\"38\"\n viewBox=\"0 0 151 38\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n style={\n {\n \"--psai-primary-red\": \"var(--red-500)\",\n \"--psai-accent-white\": \"var(--logo-accent)\",\n \"--psai-text-dark\": \"var(--foreground)\",\n } as React.CSSProperties\n }\n >\n <path\n d=\"M18.08 0C8.11 0 0 8.29 0 18.47s8.11 18.47 18.08 18.47 18.08-8.28 18.08-18.47S28.06 0 18.08 0\"\n fill=\"var(--psai-primary-red)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M31.58 24.2c-.27.66-1.02.97-1.67.7a1.3 1.3 0 0 1-.69-1.7 1.27 1.27 0 0 1 1.67-.7c.65.27.96 1.03.69 1.7\"\n fill=\"var(--psai-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M23.66 32.26c-.65.28-1.4-.04-1.66-.7-.27-.67.04-1.43.69-1.7.65-.28 1.4.04 1.66.7.27.67-.04 1.43-.69 1.7\"\n fill=\"var(--psai-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12.48 32.26a1.3 1.3 0 0 1-.7-1.7 1.27 1.27 0 0 1 1.67-.71c.65.28.96 1.04.7 1.7-.28.67-1.02.98-1.67.7\"\n fill=\"var(--psai-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.57 24.17c-.26-.67.05-1.43.7-1.7.65-.28 1.4.04 1.66.7.27.67-.04 1.43-.7 1.7-.64.28-1.39-.04-1.66-.7\"\n fill=\"var(--psai-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.59 12.74a1.27 1.27 0 0 1 1.66-.7c.65.28.96 1.04.7 1.7-.28.67-1.02.98-1.67.7a1.3 1.3 0 0 1-.7-1.7\"\n fill=\"var(--psai-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12.5 4.67c.65-.27 1.4.04 1.67.7.27.67-.04 1.43-.7 1.7-.64.28-1.39-.03-1.66-.7s.04-1.42.7-1.7\"\n fill=\"var(--psai-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M23.69 4.68c.65.28.95 1.04.68 1.7-.27.67-1.01.98-1.66.7a1.3 1.3 0 0 1-.69-1.7 1.27 1.27 0 0 1 1.67-.7\"\n fill=\"var(--psai-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M31.59 12.77c.27.67-.04 1.43-.7 1.7-.64.28-1.39-.04-1.66-.7-.27-.67.04-1.43.7-1.7.65-.28 1.39.04 1.66.7\"\n fill=\"var(--psai-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M19.42 20.97c-1 1.39-1.7 3.64-.39 4.98.89.91.22 2.42-.98 2.42s-1.87-1.5-.98-2.42c1.31-1.34.6-3.59-.39-4.98a9 9 0 0 0-1.04-1.14c-1.37-1-3.58-1.73-4.89-.39-.88.9-2.36.22-2.36-1 0-1.23 1.48-1.91 2.36-1 1.31 1.34 3.52.62 4.89-.4.23-.17.95-.84 1.1-1.07 1-1.4 1.7-3.64.39-4.98-.89-.91-.22-2.42.98-2.42s1.87 1.5.98 2.42c-1.31 1.34-.6 3.59.39 4.98.17.25.82.97 1.04 1.13 1.37 1.02 3.57 1.74 4.89.4.88-.9 2.36-.22 2.36 1 0 1.23-1.48 1.91-2.36 1-1.31-1.34-3.52-.62-4.89.4-.23.17-.95.84-1.1 1.07\"\n fill=\"var(--psai-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M25.04 11.37c.74.76.74 2 0 2.77-.75.76-1.97.76-2.72 0-.74-.77-.74-2 0-2.77a1.9 1.9 0 0 1 2.72 0\"\n fill=\"var(--psai-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M25.04 25.57c-.75.77-1.97.77-2.72 0-.74-.76-.74-2 0-2.76a1.9 1.9 0 0 1 2.72 0c.74.76.74 2 0 2.76\"\n fill=\"var(--psai-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.13 25.57c-.75-.76-.75-2 0-2.76a1.9 1.9 0 0 1 2.7 0c.76.76.76 2 0 2.76-.74.77-1.95.77-2.7 0\"\n fill=\"var(--psai-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.13 11.37a1.9 1.9 0 0 1 2.7 0c.76.76.76 2 0 2.77-.74.76-1.95.76-2.7 0-.75-.77-.75-2 0-2.77\"\n fill=\"var(--psai-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M66.37 5.64a.5.5 0 0 0 .48-.5.5.5 0 0 0-.48-.5.5.5 0 0 0-.5.5c0 .28.23.5.5.5\"\n fill=\"var(--psai-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M65.98 13.2h.76V6.58h-.76z\"\n fill=\"var(--psai-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M50.82 9.87c0-1.38 1.06-2.5 2.37-2.5 1.3 0 2.37 1.12 2.37 2.5v.1c-.06 1.37-1.1 2.44-2.37 2.44-1.28 0-2.37-1.14-2.37-2.54m2.37 3.32c.92 0 1.77-.41 2.36-1.14v1.15h.77V6.58h-.77v1.14a3 3 0 0 0-2.36-1.14 3.2 3.2 0 0 0-3.14 3.3c0 1.8 1.4 3.31 3.14 3.31\"\n fill=\"var(--psai-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M61.45 12.41c-1.28 0-2.32-1.07-2.37-2.43v-.1c0-1.4 1.06-2.52 2.37-2.52 1.3 0 2.36 1.13 2.36 2.51 0 1.39-1.06 2.54-2.36 2.54m3.13-2.54c0-1.81-1.4-3.29-3.13-3.29-.93 0-1.78.41-2.37 1.14V6.58h-.77v9h.77v-3.53c.6.73 1.44 1.14 2.37 1.14 1.72 0 3.13-1.49 3.13-3.32\"\n fill=\"var(--psai-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M78.83 6.58c-.73 0-1.41.3-1.9.84v-.84h-.74v6.62h.73V9.28a1.95 1.95 0 0 1 1.9-1.93c1.03 0 1.9.86 1.9 1.93v3.92h.75V9.28c0-1.49-1.19-2.7-2.64-2.7\"\n fill=\"var(--psai-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"m85.4 12.44-.07.02q-.11.04-.37.05-.45.02-.44-.67v-4.5h.9v-.76h-.9V4.36h-.78v2.22h-.9v.76h.9v4.53q0 .74.28 1.01.27.3.76.31.38 0 .62-.1l.04-.01z\"\n fill=\"var(--psai-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M71.51 7.35c1.12 0 2.08.83 2.3 1.97h-4.64a2.4 2.4 0 0 1 2.34-1.97m1.99 3.94a2.3 2.3 0 0 1-1.99 1.14 2.46 2.46 0 0 1-2.39-2.36h5.14c.2 0 .37-.15.37-.35v-.06c-.13-1.75-1.47-3.08-3.12-3.08a3.24 3.24 0 0 0-3.14 3.32c0 1.83 1.4 3.3 3.14 3.3 1.06 0 2.04-.56 2.61-1.5z\"\n fill=\"var(--psai-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M48.3 10s-.2-.16-.41-.25c-.22-.09-.52-.2-1.16-.35q-.12-.04-.25-.06a3 3 0 0 1-1-.44q-.34-.28-.3-.61.01-.39.4-.67.45-.34 1.18-.3c.53.02.94.3 1.38.62l.05.03.55-.53-.27-.2c-.43-.3-.97-.62-1.68-.65q-.95-.04-1.61.38c-.47.32-.76.79-.77 1.28 0 .38.07.72.44 1.08.43.43 1.1.65 1.72.77.53.1 1.02.3 1.26.51.3.28.4.48.4.77q-.03.42-.49.72c-.3.23-.73.35-1.17.33q-.9-.05-1.82-.78l-.04-.04-.55.51.06.05q1.08.95 2.31 1.02a2.6 2.6 0 0 0 1.64-.46q.77-.54.8-1.32A1.7 1.7 0 0 0 48.3 10\"\n fill=\"var(--psai-text-dark)\"\n />\n <path\n d=\"M53.26 27.7a2.76 2.76 0 0 0-2.74-2.76 2.7 2.7 0 0 0-2.74 2.74c0 1.52 1.2 2.74 2.74 2.74a2.8 2.8 0 0 0 2.74-2.72m-.3-3.66v-1.26h2.76v9.8h-2.76V31.3a3.9 3.9 0 0 1-3.2 1.58c-2.76 0-4.82-2.26-4.82-5.22 0-2.92 2.04-5.2 4.76-5.2q1.92.01 3.26 1.58m5.32-1.26h2.76v9.8h-2.76zm-.26-4.14c0-.9.74-1.64 1.64-1.64s1.64.74 1.64 1.64-.74 1.64-1.64 1.64-1.64-.74-1.64-1.64m17.5 9.06a2.75 2.75 0 1 0-5.5-.02 2.77 2.77 0 0 0 2.76 2.74c1.5 0 2.74-1.26 2.74-2.72m-5.2 3.6v6.5h-2.76V22.78h2.76v1.26a4 4 0 0 1 3.2-1.58c2.76 0 4.82 2.28 4.82 5.22 0 2.96-2.08 5.2-4.76 5.2a4.1 4.1 0 0 1-3.26-1.58m10.11 1.28v-9.8h2.76v1.48q1.02-1.8 2.84-1.8.57 0 1.2.24l-.38 2.58a3 3 0 0 0-1.32-.34q-2.34 0-2.34 2.94v4.7zm10.43-4.94a2.74 2.74 0 0 0 2.76 2.78 2.8 2.8 0 0 0 2.78-2.74 2.8 2.8 0 0 0-2.78-2.74 2.8 2.8 0 0 0-2.76 2.7m-2.84-.04c0-2.98 2.38-5.14 5.62-5.14s5.58 2.16 5.58 5.2c0 3.16-2.36 5.22-5.64 5.22-3.34 0-5.56-2.18-5.56-5.28m21.1.1a2.76 2.76 0 0 0-2.75-2.76 2.76 2.76 0 0 0-2.74 2.74c0 1.5 1.24 2.74 2.74 2.74a2.8 2.8 0 0 0 2.74-2.72m-.3-3.66v-8.42h2.75v16.96h-2.76V31.3a3.9 3.9 0 0 1-3.2 1.58c-2.76 0-4.82-2.22-4.82-5.22 0-2.92 2.06-5.2 4.76-5.2q1.92.01 3.26 1.58m5.34-1.26h2.76v5.56q0 2.22 1.98 2.22 2 0 2-2.22v-5.56h2.74v6.02c0 2.62-1.7 4.08-4.74 4.08s-4.74-1.46-4.74-4.08zm19.43.28v2.7a3.6 3.6 0 0 0-2.24-.82 2.7 2.7 0 0 0-2.8 2.74c0 1.6 1.2 2.74 2.8 2.74q1.2 0 2.24-.82v2.7q-1.26.57-2.52.58a5.22 5.22 0 1 1 .04-10.42q1.35 0 2.48.6m2.1 2.08h-1.08v-2.36h1.08v-3.34h2.76v3.34h1.92v2.36h-1.92v2.92c0 1.52.18 2.4 1.2 2.4q.28 0 .5-.04v2.4c-.3.04-.86.06-1.16.06-2.14 0-3.3-1.58-3.3-3.84zm13.16-1.68-1.36 1.6a2.7 2.7 0 0 0-1.62-.64c-.6 0-1.06.36-1.06.82 0 .48.26.64 1.56 1.1 2.28.8 2.98 1.48 2.98 3.04 0 2.06-1.7 3.52-4.1 3.52a4.8 4.8 0 0 1-3.72-1.62l1.42-1.68q1.14 1.15 2.32 1.16c.7 0 1.24-.46 1.24-1.08 0-.54-.22-.78-1.5-1.24-2.38-.84-2.86-1.48-2.86-2.9 0-1.9 1.54-3.12 3.5-3.12q1.8 0 3.2 1.04\"\n fill=\"var(--psai-text-dark)\"\n />\n </svg>\n );\n}\n\nexport default PSAILogo;\n","import type * as React from \"react\";\n\nexport function SlingshotIcon(props: React.ComponentProps<\"svg\">) {\n return (\n <svg\n width=\"64\"\n height=\"64\"\n viewBox=\"0 0 64 64\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n style={{ fill: \"var(--red-500)\" }}\n >\n <path d=\"M32 0C14.35 0 0 14.35 0 32s14.35 32 32 32 32-14.35 32-32S49.64 0 32 0\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M55.88 41.92a2.25 2.25 0 1 1-4.15-1.72 2.25 2.25 0 0 1 4.15 1.72\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M41.87 55.9a2.26 2.26 0 1 1-1.72-4.18 2.26 2.26 0 0 1 1.72 4.18\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M22.08 55.88a2.26 2.26 0 1 1 1.74-4.16 2.26 2.26 0 0 1-1.74 4.16\"\n fill=\"white\"\n />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.1 41.87\" fill=\"white\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.12 22.08a2.25 2.25 0 1 1 1.22 2.94 2.26 2.26 0 0 1-1.22-2.94\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M22.13 8.1a2.26 2.26 0 1 1-1.22 2.94 2.26 2.26 0 0 1 1.22-2.95\"\n fill=\"white\"\n />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M41.92 8.12\" fill=\"white\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M55.9 22.13a2.26 2.26 0 1 1-2.95-1.22 2.26 2.26 0 0 1 2.95 1.22\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M34.36 36.32c-1.75 2.42-3 6.33-.68 8.64 1.57 1.58.38 4.19-1.74 4.19s-3.3-2.61-1.73-4.19c2.32-2.32 1.07-6.22-.69-8.64-.3-.42-1.46-1.68-1.85-1.96-2.42-1.75-6.32-3-8.64-.68-1.57 1.57-4.18.39-4.18-1.73s2.61-3.31 4.18-1.74c2.32 2.32 6.23 1.07 8.64-.68.42-.3 1.68-1.47 1.96-1.86 1.76-2.41 3-6.31.69-8.64-1.58-1.57-.4-4.18 1.73-4.18s3.3 2.61 1.73 4.18c-2.31 2.32-1.07 6.23.69 8.64.3.42 1.46 1.68 1.85 1.96 2.42 1.76 6.32 3 8.64.69 1.57-1.58 4.18-.39 4.18 1.73s-2.6 3.31-4.18 1.74c-2.32-2.32-6.22-1.07-8.64.68-.42.3-1.68 1.47-1.96 1.85\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M44.3 19.7a3.39 3.39 0 1 1-4.78 4.8 3.39 3.39 0 0 1 4.78-4.8\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M44.3 44.3a3.4 3.4 0 1 1-4.79-4.79 3.4 3.4 0 0 1 4.8 4.8\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M19.7 44.3a3.39 3.39 0 1 1 4.78-4.79 3.39 3.39 0 0 1-4.79 4.8\"\n fill=\"white\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M19.7 19.7a3.39 3.39 0 1 1 4.79 4.78 3.39 3.39 0 0 1-4.8-4.78\"\n fill=\"white\"\n />\n </svg>\n );\n}\n","import type * as React from \"react\";\n\nexport function SlingshotLogo(props: React.ComponentProps<\"svg\">) {\n return (\n <svg\n width=\"133\"\n height=\"36\"\n viewBox=\"0 0 133 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n style={\n {\n \"--slingshot-primary-red\": \"var(--red-500)\",\n \"--slingshot-accent-white\": \"var(--logo-accent)\",\n \"--slingshot-text-dark\": \"var(--foreground)\",\n } as React.CSSProperties\n }\n >\n <path\n d=\"M18 0C8.07 0 0 8.07 0 18s8.07 18 18 18 18-8.07 18-18S27.92 0 18 0\"\n fill=\"var(--slingshot-primary-red)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M31.43 23.58a1.27 1.27 0 1 1-2.33-.97 1.27 1.27 0 0 1 2.33.97\"\n fill=\"var(--slingshot-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M23.55 31.44a1.27 1.27 0 1 1-.96-2.35 1.27 1.27 0 0 1 .96 2.35\"\n fill=\"var(--slingshot-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12.42 31.43a1.27 1.27 0 1 1 .98-2.34 1.27 1.27 0 0 1-.98 2.34\"\n fill=\"var(--slingshot-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.55 23.55\"\n fill=\"var(--slingshot-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.57 12.42a1.27 1.27 0 1 1 .69 1.66 1.27 1.27 0 0 1-.7-1.66\"\n fill=\"var(--slingshot-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12.45 4.55a1.27 1.27 0 1 1-.7 1.66c-.26-.65.05-1.39.7-1.66\"\n fill=\"var(--slingshot-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M23.58 4.57\"\n fill=\"var(--slingshot-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M31.45 12.45a1.27 1.27 0 1 1-1.66-.7c.65-.26 1.39.05 1.66.7\"\n fill=\"var(--slingshot-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M19.33 20.43c-.99 1.36-1.7 3.56-.39 4.86.89.89.22 2.35-.97 2.35-1.2 0-1.86-1.46-.98-2.35 1.3-1.3.6-3.5-.38-4.86a9 9 0 0 0-1.04-1.1c-1.37-.99-3.56-1.69-4.86-.39-.89.89-2.36.22-2.36-.97 0-1.2 1.47-1.86 2.36-.98 1.3 1.3 3.5.6 4.86-.38.23-.17.94-.82 1.1-1.04.98-1.36 1.69-3.56.38-4.86-.88-.89-.22-2.36.98-2.36s1.86 1.47.97 2.36c-1.3 1.3-.6 3.5.39 4.86.17.23.82.94 1.04 1.1 1.36.99 3.55 1.69 4.86.38.89-.88 2.35-.21 2.35.98 0 1.2-1.46 1.86-2.35.98-1.3-1.3-3.5-.6-4.86.38-.24.17-.94.82-1.1 1.04\"\n fill=\"var(--slingshot-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M24.92 11.08a1.9 1.9 0 1 1-2.7 2.7 1.9 1.9 0 0 1 2.7-2.7\"\n fill=\"var(--slingshot-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M24.92 24.92a1.9 1.9 0 1 1-2.7-2.7 1.9 1.9 0 0 1 2.7 2.7\"\n fill=\"var(--slingshot-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.08 24.92a1.9 1.9 0 1 1 2.69-2.7 1.9 1.9 0 0 1-2.7 2.7\"\n fill=\"var(--slingshot-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.08 11.08a1.9 1.9 0 1 1 2.7 2.69 1.9 1.9 0 0 1-2.7-2.69\"\n fill=\"var(--slingshot-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M66.2 2.12a.5.5 0 0 0 .49-.5.5.5 0 0 0-.49-.5.5.5 0 0 0-.49.5c0 .28.22.5.5.5\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M65.81 9.68h.77V3.06h-.77z\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M50.65 6.35c0-1.38 1.06-2.51 2.37-2.51 1.3 0 2.37 1.13 2.37 2.51v.1c-.05 1.37-1.1 2.44-2.37 2.44-1.28 0-2.37-1.14-2.37-2.54m2.37 3.32c.92 0 1.77-.42 2.37-1.15v1.16h.76V3.06h-.76V4.2a3 3 0 0 0-2.37-1.14 3.2 3.2 0 0 0-3.13 3.3c0 1.8 1.4 3.31 3.13 3.31\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M61.28 8.9c-1.28 0-2.32-1.08-2.37-2.44v-.1c0-1.4 1.06-2.52 2.37-2.52 1.3 0 2.37 1.13 2.37 2.51 0 1.39-1.06 2.54-2.37 2.54m3.13-2.55c0-1.81-1.4-3.29-3.13-3.29-.92 0-1.78.41-2.37 1.14V3.06h-.76v9h.76V8.52c.6.74 1.45 1.15 2.37 1.15 1.73 0 3.13-1.49 3.13-3.32\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M78.66 3.06c-.72 0-1.4.3-1.9.83v-.83h-.74v6.62h.74V5.76a1.95 1.95 0 0 1 1.9-1.93c1.03 0 1.9.86 1.9 1.93v3.92h.74V5.76c0-1.49-1.18-2.7-2.64-2.7\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"m85.24 8.92-.08.02q-.11.04-.37.05-.44.02-.43-.67v-4.5h.9v-.76h-.9V.84h-.78v2.22h-.9v.76h.9v4.52q0 .74.27 1.02.27.3.77.31.38 0 .62-.1l.04-.01z\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M71.35 3.83c1.12 0 2.07.82 2.3 1.97h-4.64a2.4 2.4 0 0 1 2.34-1.97m1.98 3.94a2.3 2.3 0 0 1-1.98 1.14 2.46 2.46 0 0 1-2.4-2.36h5.14c.21 0 .38-.15.38-.35v-.06c-.14-1.75-1.48-3.08-3.12-3.08a3.24 3.24 0 0 0-3.15 3.32c0 1.83 1.41 3.3 3.15 3.3 1.06 0 2.03-.56 2.6-1.5z\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M48.13 6.48s-.2-.16-.4-.25c-.22-.09-.53-.2-1.16-.36q-.13-.02-.25-.06-.64-.16-1-.43-.34-.28-.31-.61.01-.39.4-.67.46-.34 1.18-.3c.54.02.95.3 1.39.62l.04.03.55-.53-.26-.2c-.44-.3-.97-.62-1.69-.65q-.94-.04-1.6.38c-.47.32-.77.79-.77 1.28 0 .37.07.72.43 1.08.43.42 1.1.65 1.72.77.53.1 1.02.3 1.27.51.3.28.4.48.4.76q-.04.43-.5.73c-.3.23-.72.35-1.17.33a3 3 0 0 1-1.81-.78l-.05-.04-.54.51.05.05q1.09.95 2.32 1.02A2.6 2.6 0 0 0 48 9.21q.76-.54.8-1.32a1.7 1.7 0 0 0-.68-1.41\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n d=\"M127.12 20.6h-1.22v-2.7h1.22v-3.84h3.1v3.83h2.15v2.71h-2.16v3.35c0 1.74.2 2.75 1.35 2.75l.56-.04v2.75c-.33.04-.96.07-1.3.07-2.4 0-3.7-1.82-3.7-4.4z\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n d=\"M116.04 23.47a3.1 3.1 0 0 0 3.1 3.19 3.14 3.14 0 0 0 0-6.28c-1.71 0-3.1 1.44-3.1 3.1m-2.85-.04c0-3.02 2.33-5.9 5.97-5.9a5.84 5.84 0 0 1 5.92 5.96 5.8 5.8 0 0 1-5.99 5.99c-3.68 0-5.9-3.04-5.9-6.05\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n d=\"m98.89 18.68-1.53 1.83a3 3 0 0 0-1.82-.73c-.67 0-1.19.41-1.19.94s.3.73 1.75 1.26c2.56.92 3.35 1.7 3.35 3.49 0 2.36-1.9 4.03-4.6 4.03a5.4 5.4 0 0 1-4.18-1.86l1.6-1.92q1.28 1.32 2.6 1.33c.78 0 1.4-.53 1.4-1.24 0-.62-.26-.9-1.7-1.42-2.66-.97-3.2-1.7-3.2-3.33 0-2.18 1.73-3.57 3.93-3.57q2-.01 3.59 1.19\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n d=\"M65.46 29.14V17.9h3.1v1.4a4.2 4.2 0 0 1 3.43-1.77c2.22 0 4.09 1.3 4.09 4.34v7.27h-3.1v-6.17c0-1.88-.52-2.76-2.09-2.76s-2.33 1-2.33 3.1v5.83z\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n d=\"M60.17 17.9h3.1v11.23h-3.1zm-.29-3.45c0-1.03.83-1.88 1.84-1.88s1.84.85 1.84 1.88-.83 1.88-1.84 1.88a1.87 1.87 0 0 1-1.84-1.88\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n d=\"m52.22 18.68-1.53 1.83a3 3 0 0 0-1.82-.73c-.67 0-1.19.41-1.19.94s.3.73 1.75 1.26c2.56.92 3.35 1.7 3.35 3.49 0 2.36-1.9 4.03-4.6 4.03A5.4 5.4 0 0 1 44 27.64l1.6-1.92q1.28 1.32 2.6 1.33c.78 0 1.39-.53 1.39-1.24 0-.62-.25-.9-1.68-1.42-2.68-.97-3.21-1.7-3.21-3.33 0-2.18 1.72-3.57 3.92-3.57q2.02-.01 3.6 1.19\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n d=\"M57.17 23.6c0 1.75.3 2.76 1.44 2.76q.2 0 .43-.05v2.75c-.34.05-.74.07-1.04.07-2.74 0-3.92-1.95-3.92-4.54V12.7h3.1z\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n d=\"M104.03 19.36a4 4 0 0 1 3.43-1.83c1.58 0 2.59.6 3.33 1.53.58.76.76 1.77.76 3v7.07h-3.1v-6.17c0-2-.56-2.75-2.09-2.75q-2.34 0-2.33 3.17v5.75h-3.1V12.57h3.1z\"\n fill=\"var(--slingshot-text-dark)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"m89.41 28-.03 1.78q-.08 1.21-.3 1.85c-.7 2.09-2.88 3.53-5.55 3.53-3.19 0-5.61-2.04-5.86-4.7h3.32q.49 2.03 2.6 2.02c1.63 0 2.57-.86 2.72-2.63v-1.77c-4.29 2.94-8.66-.68-8.66-4.59a5.5 5.5 0 0 1 4.98-5.64c1.46 0 2.74.25 3.68 1.47v-1.47h3.1zm-6.04-7.67a3.14 3.14 0 0 0-3.07 3.12 3.1 3.1 0 0 0 3.07 3.16 3.15 3.15 0 0 0 0-6.28\"\n fill=\"var(--slingshot-text-dark)\"\n />\n </svg>\n );\n}\n\nexport default SlingshotLogo;\n","import type * as React from \"react\";\n\nexport function SustainIcon(props: React.ComponentProps<\"svg\">) {\n return (\n <svg\n width=\"65\"\n height=\"65\"\n viewBox=\"0 0 65 65\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n style={{ fill: \"var(--red-500)\" }}\n >\n <path\n d=\"M63.3 32.5c0 17.32-14.06 32.05-31.4 32.05C14.55 64.55.5 49.82.5 32.5A31.4 31.4 0 0 1 31.9 1.13 31.4 31.4 0 0 1 63.3 32.5\"\n fill=\"white\"\n />\n <path d=\"M58.8 33.3q2.7 0 5.2.53-.15 3.15-.86 6.1-2.09-.46-4.36-.48v.18a2.05 2.05 0 0 0-3.85.95 2.05 2.05 0 0 0 3.98.66q1.93 0 3.75.43a33 33 0 0 1-2.01 5.09q-.91-.15-1.87-.15a12.65 12.65 0 0 0-12.63 12.62v1.94a32 32 0 0 1-4.94 1.94q-.3-1.32-.37-2.72c.6-.36 1-1.01 1-1.77 0-1.13-.9-2.04-2.04-2.04-1.13 0-2.04.91-2.04 2.04 0 1.14.55 1.62 1.31 1.92q.12 1.54.43 3.05-2.95.71-6.1.85a25.96 25.96 0 0 1 25.4-31.12zm-53.66 0a25.96 25.96 0 0 1 25.41 31.12q-3.15-.14-6.1-.86.33-1.45.43-2.97a2.04 2.04 0 0 0 1.44-1.97c0-1.13-.91-2.04-2.05-2.04s-2.04.91-2.04 2.04c0 .7.36 1.31.89 1.7q-.09 1.42-.38 2.76a31 31 0 0 1-5.1-2.04q.12-.9.13-1.81c0-6.96-5.67-12.62-12.63-12.62H3.3a32 32 0 0 1-1.95-4.97q1.78-.39 3.63-.4a2.05 2.05 0 1 0 1.94-2.7c-1.14 0-1.41.4-1.77 1.01v-.1q-2.2.02-4.28.48-.71-2.96-.86-6.07a27 27 0 0 1 5.12-.5zm41.13 27.8c-.07.48-.1 3.35-.11.07zM5.14 48.38c5.98 0 10.87 4.86 10.87 10.86s0 .6-.05.9a32 32 0 0 1-11.7-11.71c.3 0 .58-.05.88-.05m53.67 0q.48-.01.96.05a32 32 0 0 1-11.78 11.77q-.04-.48-.05-.96c0-5.97 4.87-10.86 10.87-10.86M31.99 11.98a27.8 27.8 0 0 0 21 20.16 27.8 27.8 0 0 0-21 20.16 27.8 27.8 0 0 0-21-20.16 27.8 27.8 0 0 0 21-20.16M3.34 46.71c-.44-.06-3.5-.1-.05-.1zm28.67-23.06a8.8 8.8 0 0 1-8.77 8.77 8.8 8.8 0 0 1 8.77 8.8 8.8 8.8 0 0 1 8.78-8.8A8.8 8.8 0 0 1 32 23.65M30.68.45q.41 2.23.4 4.6A26.07 26.07 0 0 1 5.04 31.01c-4.87 0-4.52-.18-4.99-.53q.2-3.11.96-6.05 1.96.42 4.03.43c.3.73 1.04 1.23 1.9 1.23 1.13 0 2.03-.9 2.03-2.04 0-1.13-.9-2.04-2.04-2.04-1.13 0-1.43.43-1.79 1.06a17 17 0 0 1-3.63-.38 30 30 0 0 1 2.15-5.09q.75.09 1.5.1c6.96 0 12.64-5.67 12.64-12.62V3.76q2.42-1.2 5.06-2 .25 1.32.3 2.71c-.55.38-.9.99-.9 1.7 0 1.13.9 2.03 2.04 2.03a2.04 2.04 0 0 0 .63-3.98q-.06-1.49-.35-2.92c1.96-.45 4-.76 6.07-.83zm2.62 0q3.13.12 6.07.82-.29 1.47-.35 3a2 2 0 0 0-1.29 1.9c0 .85.91 2.03 2.05 2.03a2.03 2.03 0 0 0 1-3.8q.05-1.35.3-2.67 2.7.8 5.15 2.01-.08.64-.08 1.31c0 6.96 5.68 12.63 12.63 12.63h1.64a33 33 0 0 1 2.1 4.99q-1.82.37-3.71.37A2.1 2.1 0 0 0 56.99 22c-1.13 0-2.04.9-2.04 2.04a2.06 2.06 0 0 0 3.93.8q2.13 0 4.14-.45.76 2.95.96 6.07-2.51.51-5.17.53A25.96 25.96 0 0 1 33.27.44zm27.08 17.14c.41.04 3.87.08.04.08zm-44.4-12.5.03-.03c0 5.97-4.87 10.86-10.87 10.86H4.6a32.5 32.5 0 0 1 11.4-11.2zm31.99-.44a32 32 0 0 1 11.47 11.22h-.63A10.9 10.9 0 0 1 47.94 5v-.37z\" />\n </svg>\n );\n}\n","import type * as React from \"react\";\n\nexport function SustainLogo(props: React.ComponentProps<\"svg\">) {\n return (\n <svg\n width=\"113\"\n height=\"37\"\n viewBox=\"0 0 113 37\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n style={\n {\n \"--sustain-circle-bg\": \"var(--background)\",\n \"--sustain-primary-red\": \"var(--red-500)\",\n \"--sustain-accent-white\": \"var(--foreground)\",\n \"--sustain-text-dark\": \"var(--foreground)\",\n } as React.CSSProperties\n }\n >\n <path\n d=\"M35.6 18.28c0 9.74-7.9 18.03-17.66 18.03S.28 28.02.28 18.28 8.18.64 17.94.64s17.67 7.9 17.67 17.64\"\n fill=\"var(--sustain-circle-bg)\"\n />\n <path\n d=\"M33.08 18.73q1.5 0 2.92.3a18 18 0 0 1-.48 3.43q-1.19-.26-2.45-.27v.1a1.15 1.15 0 0 0-2.17.54c0 .64.5 1.15 1.14 1.15.51 0 .94-.33 1.1-.78q1.09 0 2.1.24-.44 1.48-1.13 2.86-.52-.09-1.04-.08a7.1 7.1 0 0 0-7.1 7.1c0 3.9.02.7.08 1.04a18 18 0 0 1-2.87 1.14q-.16-.74-.21-1.53c.34-.2.57-.57.57-1 0-.63-.51-1.14-1.15-1.14s-1.15.5-1.15 1.15c0 .63.31.9.74 1.07q.06.87.24 1.72-1.66.4-3.43.48-.3-1.43-.3-2.92a14.6 14.6 0 0 1 14.59-14.58z\"\n fill=\"var(--sustain-primary-red)\"\n />\n <path\n d=\"M2.9 18.73a14.6 14.6 0 0 1 14.28 17.5 18 18 0 0 1-3.43-.48q.19-.8.24-1.67c.47-.14.81-.58.81-1.1 0-.64-.5-1.15-1.15-1.15-.63 0-1.14.5-1.14 1.15 0 .4.2.73.5.95q-.05.79-.22 1.55-1.49-.45-2.86-1.14.07-.51.07-1.02c0-3.92-3.2-7.1-7.1-7.1-3.92 0-.69.02-1.01.07Q1.2 24.92.75 23.42a10 10 0 0 1 2.04-.22 1.15 1.15 0 1 0 1.1-1.52c-.64 0-.8.23-1 .57v-.06q-1.24 0-2.4.27A18 18 0 0 1 0 19.04q1.41-.27 2.88-.28z\"\n fill=\"var(--sustain-primary-red)\"\n />\n <path\n d=\"M33.08 27.2q.26-.01.54.04A18 18 0 0 1 27 33.85q-.03-.27-.03-.53c0-3.36 2.73-6.11 6.1-6.11\"\n fill=\"var(--sustain-primary-red)\"\n />\n <path\n d=\"M2.9 27.2A6.1 6.1 0 0 1 9 33.33c0 3.37 0 .34-.02.5a18 18 0 0 1-6.58-6.58q.24-.02.5-.03\"\n fill=\"var(--sustain-primary-red)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M18 6.74a15.7 15.7 0 0 0 11.8 11.34A15.6 15.6 0 0 0 18 29.42 15.6 15.6 0 0 0 6.17 18.08 15.6 15.6 0 0 0 18 6.74m0 6.56a4.94 4.94 0 0 1-4.93 4.94 4.94 4.94 0 0 1 4.94 4.94 4.96 4.96 0 0 1 4.93-4.94 4.94 4.94 0 0 1-4.93-4.94\"\n fill=\"var(--sustain-primary-red)\"\n />\n <path\n d=\"M18.73.25q1.76.07 3.42.47a11 11 0 0 0-.2 1.68c-.43.17-.72.59-.72 1.07s.5 1.15 1.14 1.15a1.14 1.14 0 0 0 .57-2.14q.02-.77.17-1.5 1.5.44 2.9 1.13-.05.36-.05.73c0 3.92 3.2 7.1 7.1 7.1 3.92 0 .6-.02.9-.05q.72 1.36 1.2 2.86-1.02.21-2.08.21c-.2-.35-.58-.6-1.02-.6-.64 0-1.15.52-1.15 1.16s.51 1.14 1.15 1.14c.48 0 .88-.28 1.06-.69q1.2 0 2.33-.26.42 1.66.54 3.42-1.42.28-2.91.3A14.6 14.6 0 0 1 18.72.25z\"\n fill=\"var(--sustain-primary-red)\"\n />\n <path\n d=\"M17.26.25q.22 1.25.22 2.6c0 8.03-6.6 14.6-14.64 14.6-2.74 0-2.55-.11-2.81-.3q.1-1.77.54-3.4 1.1.23 2.27.23c.17.41.58.7 1.06.7.64 0 1.15-.51 1.15-1.15s-.51-1.15-1.15-1.15-.8.24-1 .6q-1.05 0-2.05-.21.47-1.5 1.2-2.87.43.05.86.06c3.91 0 7.1-3.19 7.1-7.1s0-.48-.04-.72q1.38-.69 2.89-1.15.14.74.17 1.53a1.14 1.14 0 0 0 .64 2.1 1.15 1.15 0 0 0 .35-2.24q-.03-.85-.2-1.65a18 18 0 0 1 3.42-.47z\"\n fill=\"var(--sustain-primary-red)\"\n />\n <path\n d=\"M9 2.84C9 6.2 6.27 8.95 2.9 8.95h-.32A18 18 0 0 1 9 2.65v.2z\"\n fill=\"var(--sustain-primary-red)\"\n />\n <path\n d=\"M26.98 2.62a18 18 0 0 1 6.45 6.3h-.35a6.1 6.1 0 0 1-6.11-6.1V2.6z\"\n fill=\"var(--sustain-primary-red)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M66.27 5.17a.5.5 0 0 0 .49-.5.5.5 0 0 0-.5-.5.5.5 0 0 0-.48.5c0 .28.22.5.49.5\"\n fill=\"var(--sustain-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M65.88 12.73h.76V6.1h-.76z\"\n fill=\"var(--sustain-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M50.72 9.4c0-1.38 1.06-2.5 2.37-2.5 1.3 0 2.37 1.12 2.37 2.5v.1c-.05 1.37-1.1 2.44-2.37 2.44-1.28 0-2.37-1.14-2.37-2.54m2.37 3.32c.92 0 1.77-.41 2.37-1.15v1.16h.76V6.1h-.76v1.14a3 3 0 0 0-2.37-1.14 3.2 3.2 0 0 0-3.13 3.3c0 1.8 1.4 3.31 3.13 3.31\"\n fill=\"var(--sustain-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M61.35 11.94c-1.28 0-2.32-1.07-2.37-2.43v-.1c0-1.4 1.06-2.52 2.37-2.52 1.3 0 2.37 1.13 2.37 2.51 0 1.39-1.07 2.54-2.37 2.54m3.13-2.54c0-1.81-1.4-3.29-3.13-3.29-.93 0-1.78.41-2.37 1.14V6.1h-.76v9h.76v-3.53c.6.73 1.45 1.14 2.37 1.14 1.72 0 3.13-1.49 3.13-3.32\"\n fill=\"var(--sustain-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M78.73 6.11c-.72 0-1.4.3-1.9.84V6.1h-.74v6.62h.73V8.8a1.95 1.95 0 0 1 1.9-1.93c1.03 0 1.9.86 1.9 1.93v3.92h.75V8.8c0-1.49-1.19-2.7-2.64-2.7\"\n fill=\"var(--sustain-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"m85.3 11.97-.07.02q-.11.04-.37.05-.44.02-.44-.67v-4.5h.9V6.1h-.9V3.89h-.78V6.1h-.9v.76h.9v4.53q0 .74.28 1.01.27.3.77.31.37 0 .61-.1l.05-.01z\"\n fill=\"var(--sustain-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M71.42 6.88c1.11 0 2.07.83 2.3 1.97h-4.65a2.4 2.4 0 0 1 2.34-1.97m1.98 3.94a2.3 2.3 0 0 1-1.99 1.14 2.46 2.46 0 0 1-2.39-2.36h5.14c.2 0 .37-.15.37-.35v-.06c-.13-1.75-1.47-3.08-3.12-3.08a3.24 3.24 0 0 0-3.14 3.32c0 1.83 1.41 3.3 3.14 3.3 1.06 0 2.04-.56 2.61-1.5z\"\n fill=\"var(--sustain-accent-white)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M48.2 9.53s-.2-.16-.41-.25c-.22-.09-.52-.2-1.16-.35q-.12-.04-.25-.06-.63-.17-1-.44-.33-.28-.3-.61.01-.39.4-.67.45-.34 1.18-.3c.54.02.95.3 1.39.62l.04.03.55-.53-.26-.2c-.44-.3-.97-.62-1.69-.65q-.95-.04-1.6.38c-.47.32-.77.79-.77 1.28-.01.37.07.72.43 1.08.43.43 1.1.65 1.72.77.53.1 1.02.3 1.26.51.3.28.4.48.4.77q-.02.42-.48.72c-.3.23-.73.35-1.18.33a3.2 3.2 0 0 1-1.82-.78l-.04-.04-.54.51.05.05q1.09.95 2.31 1.02a2.6 2.6 0 0 0 1.64-.46q.77-.54.81-1.32a1.7 1.7 0 0 0-.68-1.41\"\n fill=\"var(--sustain-accent-white)\"\n />\n <path\n d=\"m52.1 23-1.35 1.6a2.7 2.7 0 0 0-1.62-.65c-.6 0-1.06.36-1.06.82 0 .48.26.64 1.56 1.1 2.28.8 2.98 1.48 2.98 3.04 0 2.06-1.7 3.52-4.1 3.52a4.8 4.8 0 0 1-3.72-1.62l1.42-1.68q1.15 1.15 2.32 1.16c.7 0 1.24-.46 1.24-1.08 0-.54-.22-.78-1.5-1.24-2.38-.84-2.86-1.48-2.86-2.9 0-1.9 1.54-3.12 3.5-3.12q1.8 0 3.2 1.04m2.43-.69h2.76v5.56q0 2.22 1.98 2.22 2 0 2-2.22v-5.56H64v6.02c0 2.62-1.7 4.08-4.74 4.08s-4.74-1.46-4.74-4.08zm18.8.68-1.35 1.6a2.7 2.7 0 0 0-1.62-.64c-.6 0-1.06.36-1.06.82 0 .48.26.64 1.56 1.1 2.28.8 2.98 1.48 2.98 3.04 0 2.06-1.7 3.52-4.1 3.52a4.8 4.8 0 0 1-3.72-1.62l1.42-1.68q1.15 1.15 2.32 1.16c.7 0 1.24-.46 1.24-1.08 0-.54-.22-.78-1.5-1.24-2.38-.84-2.86-1.48-2.86-2.9 0-1.9 1.54-3.12 3.5-3.12q1.8 0 3.2 1.04m2.45 1.68H74.7v-2.36h1.08v-3.34h2.76v3.34h1.92v2.36h-1.92v2.92c0 1.52.18 2.4 1.2 2.4q.28 0 .5-.04v2.4c-.3.04-.86.06-1.16.06-2.14 0-3.3-1.58-3.3-3.84zM90 27.23a2.76 2.76 0 0 0-2.74-2.76 2.7 2.7 0 0 0-2.74 2.74c0 1.52 1.2 2.74 2.74 2.74A2.8 2.8 0 0 0 90 27.23m-.3-3.66v-1.26h2.76v9.8H89.7v-1.28a3.9 3.9 0 0 1-3.2 1.58c-2.76 0-4.82-2.26-4.82-5.22 0-2.92 2.04-5.2 4.76-5.2q1.91.01 3.26 1.58m5.31-1.26h2.76v9.8h-2.76zm-.26-4.14c0-.9.74-1.64 1.64-1.64s1.64.74 1.64 1.64-.74 1.64-1.64 1.64-1.64-.74-1.64-1.64m5.58 13.94v-9.8h2.76v1.22a3.7 3.7 0 0 1 3.06-1.54c1.98 0 3.64 1.14 3.64 3.78v6.34h-2.76v-5.38c0-1.64-.46-2.4-1.86-2.4-1.38 0-2.08.86-2.08 2.7v5.08z\"\n fill=\"var(--sustain-accent-white)\"\n />\n </svg>\n );\n}\n\nexport default SustainLogo;\n","import type * as React from \"react\";\n\nimport { BodhiIcon } from \"./marks/bodhi-icon\";\nimport { BodhiLogo } from \"./marks/bodhi-logo\";\nimport { PSAILogo } from \"./marks/psai-logo\";\nimport { SlingshotIcon } from \"./marks/slingshot-icon\";\nimport { SlingshotLogo } from \"./marks/slingshot-logo\";\nimport { SustainIcon } from \"./marks/sustain-icon\";\nimport { SustainLogo } from \"./marks/sustain-logo\";\n\ntype LogoBrand = \"bodhi\" | \"slingshot\" | \"sustain\" | \"psai\";\ntype LogoVariant = \"logo\" | \"icon\";\n\ntype Mark = (props: React.ComponentProps<\"svg\">) => React.JSX.Element;\n\n// PS AI has no dedicated icon mark yet → its `icon` falls back to the full logo.\nconst MARKS: Record<LogoBrand, Record<LogoVariant, Mark>> = {\n bodhi: { logo: BodhiLogo, icon: BodhiIcon },\n slingshot: { logo: SlingshotLogo, icon: SlingshotIcon },\n sustain: { logo: SustainLogo, icon: SustainIcon },\n psai: { logo: PSAILogo, icon: PSAILogo },\n};\n\nfunction Logo({\n brand,\n variant = \"logo\",\n ...props\n}: React.ComponentProps<\"svg\"> & {\n /** Which product the mark belongs to. */\n brand: LogoBrand;\n /** `logo` is the full wordmark; `icon` is the compact symbol. */\n variant?: LogoVariant;\n}) {\n const Mark = MARKS[brand][variant];\n return <Mark data-slot=\"logo\" data-brand={brand} data-variant={variant} {...props} />;\n}\n\nexport { Logo, type LogoBrand, type LogoVariant };\n","import { Popover as PopoverPrimitive } from \"radix-ui\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-card p-4 text-card-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn(\"flex flex-col gap-1 text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\"h2\">) {\n return <div data-slot=\"popover-title\" className={cn(\"font-medium\", className)} {...props} />;\n}\n\nfunction PopoverDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"popover-description\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverHeader,\n PopoverTitle,\n PopoverDescription,\n};\n","import { cn } from \"@/utils\";\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"skeleton\" className={cn(\"skeleton-shimmer rounded-md\", className)} {...props} />\n );\n}\n\nfunction SkeletonAvatar({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <Skeleton\n data-slot=\"skeleton-avatar\"\n className={cn(\"size-10 rounded-full\", className)}\n {...props}\n />\n );\n}\n\nfunction SkeletonLine({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <Skeleton\n data-slot=\"skeleton-line\"\n className={cn(\"h-4 w-full rounded-full\", className)}\n {...props}\n />\n );\n}\n\nfunction SkeletonObject({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <Skeleton\n data-slot=\"skeleton-object\"\n className={cn(\"h-24 w-full rounded-md\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton, SkeletonAvatar, SkeletonLine, SkeletonObject };\n","import type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\nfunction Table({\n className,\n striped = false,\n ...props\n}: React.ComponentProps<\"table\"> & { striped?: boolean }) {\n return (\n <div data-slot=\"table-container\" className=\"relative w-full overflow-x-auto\">\n <table\n data-slot=\"table\"\n data-striped={striped || undefined}\n className={cn(\n \"w-full caption-bottom text-sm\",\n // Zebra striping (Figma odd/even rows).\n striped && \"[&_tbody_tr:nth-child(even)]:bg-muted/50\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return <thead data-slot=\"table-header\" className={cn(\"[&_tr]:border-b\", className)} {...props} />;\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({ className, ...props }: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n// Text — the typography primitive. Renders any element via `as` and drives\n// size/line-height from the design-system BODY type scale (Inter): the Figma\n// \"paragraph large/regular/small/mini\" + caption steps (tokens in\n// styles/tokens/typography.css). Inline links compose as children.\nconst textVariants = cva(\"\", {\n variants: {\n // Body scale — font-size + line-height come straight from the type tokens.\n size: {\n large:\n \"text-[length:var(--paragraph-large-font-size)] leading-[var(--paragraph-large-line-height)]\",\n regular:\n \"text-[length:var(--paragraph-regular-font-size)] leading-[var(--paragraph-regular-line-height)]\",\n small:\n \"text-[length:var(--paragraph-small-font-size)] leading-[var(--paragraph-small-line-height)]\",\n mini: \"text-[length:var(--paragraph-mini-font-size)] leading-[var(--paragraph-mini-line-height)]\",\n caption:\n \"text-[length:var(--caption-font-size)] leading-[var(--caption-line-height)] tracking-[var(--caption-letter-spacing)] uppercase\",\n },\n weight: {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n },\n variant: {\n default: \"text-foreground\",\n muted: \"text-muted-foreground\",\n primary: \"text-primary\",\n destructive: \"text-destructive\",\n success: \"text-[var(--content-success)]\",\n },\n font: {\n body: \"font-sans\",\n heading: \"font-heading\",\n mono: \"font-mono\",\n },\n align: {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n },\n truncate: {\n true: \"truncate\",\n },\n },\n defaultVariants: {\n size: \"regular\",\n weight: \"normal\",\n variant: \"default\",\n font: \"body\",\n },\n});\n\ntype TextProps = Omit<React.ComponentProps<\"p\">, \"color\"> &\n VariantProps<typeof textVariants> & {\n /** Element/component to render. Defaults to `p`. */\n as?: React.ElementType;\n };\n\nfunction Text({\n as,\n className,\n size,\n weight,\n variant,\n font,\n align,\n truncate,\n ...props\n}: TextProps) {\n const Comp = as ?? \"p\";\n return (\n <Comp\n data-slot=\"text\"\n className={cn(textVariants({ size, weight, variant, font, align, truncate }), className)}\n {...props}\n />\n );\n}\n\nexport { Text, textVariants, type TextProps };\n","\"use client\";\n\nimport * as React from \"react\";\n\n// ThemeProvider — owns the two global appearance choices for an app and persists\n// them together (one localStorage entry, no extra variables):\n// - `theme` : light | dark → toggles the `.dark` class on <html>\n// - `product` : which brand → toggles `.theme-{product}` on <html> (drives\n// the Logo + PageBackground) and is the default\n// logo shown by the Header.\n// Apps wrap their tree in <ThemeProvider>; components read state via useTheme().\n\nexport type ThemeMode = \"light\" | \"dark\";\nexport type ThemeProduct = \"slingshot\" | \"sustain\" | \"bodhi\" | \"psai\";\n\nconst PRODUCTS: ThemeProduct[] = [\"slingshot\", \"sustain\", \"bodhi\", \"psai\"];\n\ntype ThemePreferences = { theme: ThemeMode; product: ThemeProduct };\n\ntype ThemeContextValue = ThemePreferences & {\n /** Set the colour mode explicitly. */\n setTheme: (theme: ThemeMode) => void;\n /** Flip between light and dark. */\n toggleTheme: () => void;\n /** Switch the active product (logo + background + future customisations). */\n setProduct: (product: ThemeProduct) => void;\n};\n\nconst ThemeContext = React.createContext<ThemeContextValue | null>(null);\n\nconst DEFAULT_STORAGE_KEY = \"ds-theme-preferences\";\n\nfunction readStored(storageKey: string): Partial<ThemePreferences> {\n try {\n const raw = localStorage.getItem(storageKey);\n if (!raw) return {};\n const parsed = JSON.parse(raw) as Partial<ThemePreferences>;\n return {\n theme: parsed.theme === \"dark\" || parsed.theme === \"light\" ? parsed.theme : undefined,\n product: PRODUCTS.includes(parsed.product as ThemeProduct) ? parsed.product : undefined,\n };\n } catch {\n return {};\n }\n}\n\nfunction prefersDark(): boolean {\n try {\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n } catch {\n return false;\n }\n}\n\nfunction applyToDocument({ theme, product }: ThemePreferences): void {\n const root = document.documentElement;\n root.classList.toggle(\"dark\", theme === \"dark\");\n for (const p of PRODUCTS) root.classList.toggle(`theme-${p}`, p === product);\n}\n\nfunction ThemeProvider({\n children,\n defaultTheme = \"light\",\n defaultProduct = \"slingshot\",\n storageKey = DEFAULT_STORAGE_KEY,\n}: {\n children: React.ReactNode;\n /** Colour mode used when nothing is stored (system preference still wins on first load). */\n defaultTheme?: ThemeMode;\n /** Product used when nothing is stored. */\n defaultProduct?: ThemeProduct;\n /** localStorage key for the persisted `{ theme, product }`. */\n storageKey?: string;\n}) {\n // Lazy init from storage → system preference → defaults (runs once, client-side).\n const [prefs, setPrefs] = React.useState<ThemePreferences>(() => {\n if (typeof window === \"undefined\") return { theme: defaultTheme, product: defaultProduct };\n const stored = readStored(storageKey);\n return {\n theme: stored.theme ?? (prefersDark() ? \"dark\" : defaultTheme),\n product: stored.product ?? defaultProduct,\n };\n });\n\n // Reflect to <html> and persist on every change.\n React.useEffect(() => {\n applyToDocument(prefs);\n try {\n localStorage.setItem(storageKey, JSON.stringify(prefs));\n } catch {\n // storage unavailable (private mode) — degrade silently\n }\n }, [prefs, storageKey]);\n\n const value = React.useMemo<ThemeContextValue>(\n () => ({\n ...prefs,\n setTheme: (theme) => setPrefs((p) => ({ ...p, theme })),\n toggleTheme: () => setPrefs((p) => ({ ...p, theme: p.theme === \"dark\" ? \"light\" : \"dark\" })),\n setProduct: (product) => setPrefs((p) => ({ ...p, product })),\n }),\n [prefs],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\nfunction useTheme(): ThemeContextValue {\n const ctx = React.useContext(ThemeContext);\n if (!ctx) {\n throw new Error(\"useTheme must be used within a <ThemeProvider>.\");\n }\n return ctx;\n}\n\nexport { ThemeProvider, useTheme, ThemeContext };\n"],"mappings":";;;;;;;AAKA,SAAS,QAAQ,EAAE,WAAW,GAAG,SAAsC;CACrE,OACE,oBAAC,aAAD;EACE,MAAK;EACL,cAAW;EACX,aAAU;EACV,WAAW,GAAG,uBAAuB,SAAS;EAC9C,GAAI;CACL,CAAA;AAEL;;;ACRA,MAAM,iBAAiB,IACrB,skBACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,aACE;GACF,SACE;GACF,WAAW;GACX,OAAO;GACP,MAAM;EACR;EACA,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,SAAS;GACT,IAAI;GACJ,MAAM;EACR;EAEA,OAAO;GACL,SAAS;GACT,QAAQ;EACV;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;EACN,OAAO;CACT;AACF,CACF;AAEA,SAAS,OAAO,EACd,WACA,SACA,MACA,OACA,UAAU,OACV,UAAU,OACV,UACA,UACA,GAAG,SAKA;CAGH,OACE,oBAHW,UAAU,KAAK,OAAO,UAGjC;EACE,aAAU;EACV,gBAAc,WAAW,KAAA;EACzB,WAAW,GAAG,eAAe;GAAE;GAAS;GAAM;GAAO;EAAU,CAAC,CAAC;EACjE,UAAU,YAAY;EACtB,GAAI;YAGH,UACC,WAEA,qBAAA,UAAA,EAAA,UAAA,CACG,UAAU,oBAAC,SAAD,CAAU,CAAA,IAAI,MACxB,QACD,EAAA,CAAA;CAEA,CAAA;AAEV;;;ACzEA,SAASA,SAAO,EACd,WACA,OAAO,WACP,QAAQ,SACR,GAAG,SAIF;CACD,OACE,oBAACC,OAAgB,MAAjB;EACE,aAAU;EACV,aAAW;EACX,cAAY;EACZ,WAAW,GACT,wFACA,sEACA,qCACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,SAA6D;CAChG,OACE,oBAACA,OAAgB,OAAjB;EACE,aAAU;EACV,WAAW,GAAG,2BAA2B,SAAS;EAClD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,eAAe,EACtB,WACA,GAAG,SACqD;CACxD,OACE,oBAACA,OAAgB,UAAjB;EACE,aAAU;EACV,WAAW,GACT,oEACA,kDACA,oHACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAuC;CAC1E,OACE,oBAAC,QAAD;EACE,aAAU;EACV,WAAW,GACT,6JACA,2FACA,mFACA,mFACA,qFACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,uGACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAsC;CAC9E,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,0PACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;;AC9FA,MAAM,eAAe,IAAI,8DAA8D;CACrF,UAAU;EACR,SAAS;GAEP,SAAS;GAGT,OAAO;EACT;EACA,MAAM;GACJ,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,OAAO;EACT;CACF;CACA,kBAAkB;EAChB;GAAE,SAAS;GAAS,MAAM;GAAU,OAAO;EAA2B;EACtE;GAAE,SAAS;GAAS,MAAM;GAAS,OAAO;EAA0B;EACpE;GAAE,SAAS;GAAS,MAAM;GAAU,OAAO;EAA2B;EACtE;GAAE,SAAS;GAAS,MAAM;GAAS,OAAO;EAA0B;CACtE;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CAAC;AAID,SAAS,KAAK,EAAE,WAAW,SAAS,MAAM,GAAG,SAAoB;CAC/D,OACE,oBAAC,OAAD;EACE,aAAU;EACV,gBAAc,WAAW;EACzB,WAAW,GAAG,aAAa;GAAE;GAAS;EAAK,CAAC,GAAG,SAAS;EACxD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,mKACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;CACvE,OAAO,oBAAC,MAAD;EAAI,aAAU;EAAa,WAAW,GAAG,gBAAgB,SAAS;EAAG,GAAI;CAAQ,CAAA;AAC1F;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAsC;CAC7E,OACE,oBAAC,KAAD;EAAG,aAAU;EAAmB,WAAW,GAAG,yBAAyB,SAAS;EAAG,GAAI;CAAQ,CAAA;AAEnG;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,kEAAkE,SAAS;EACzF,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,4BAA4B,SAAS;EACnD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,gDAAgD,SAAS;EACvE,GAAI;CACL,CAAA;AAEL;;;ACpFA,MAAM,kBAAkB,IACtB,wJACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,SAAS;EACT,UAAU;CACZ,EACF;CACA,iBAAiB,EAAE,SAAS,UAAU;AACxC,CACF;;AAGA,SAAS,eAAe,OAAe,cAAsC;CAC3E,IAAI,SAAS,GAAG,OAAO;CACvB,IAAI,SAAS,cAAc,OAAO;CAClC,OAAO;AACT;;AAGA,SAAS,cAAc,OAAuB;CAC5C,OAAO,KAAK,MAAM,KAAK,EAAE,eAAe;AAC1C;AAeA,SAAS,QAAQ,EACf,WACA,OACA,SACA,eAAe,KACf,MACA,SAAS,eACT,GAAG,SACY;CACf,MAAM,WAAW,WAAW,eAAe,OAAO,YAAY;CAC9D,OACE,qBAAC,QAAD;EACE,aAAU;EACV,gBAAc;EACd,WAAW,GAAG,gBAAgB,EAAE,SAAS,SAAS,CAAC,GAAG,SAAS;EAC/D,GAAI;YAJN,CAMG,QAAQ,oBAAC,YAAD,EAAY,eAAY,OAAQ,CAAA,GACxC,OAAO,KAAK,CACT;;AAEV;;;ACnEA,SAASC,eAAa,EAAE,GAAG,SAAkE;CAC3F,OAAO,oBAACC,aAAsB,MAAvB;EAA4B,aAAU;EAAgB,GAAI;CAAQ,CAAA;AAC3E;AAEA,SAAS,mBAAmB,EAC1B,GAAG,SACyD;CAC5D,OAAO,oBAACA,aAAsB,QAAvB;EAA8B,aAAU;EAAuB,GAAI;CAAQ,CAAA;AACpF;AAEA,SAAS,oBAAoB,EAC3B,GAAG,SAC0D;CAC7D,OAAO,oBAACA,aAAsB,SAAvB;EAA+B,aAAU;EAAwB,GAAI;CAAQ,CAAA;AACtF;AAEA,SAAS,oBAAoB,EAC3B,WACA,aAAa,GACb,GAAG,SAC0D;CAC7D,OACE,oBAACA,aAAsB,QAAvB,EAAA,UACE,oBAACA,aAAsB,SAAvB;EACE,aAAU;EACE;EACZ,WAAW,GACT,0jBACA,SACF;EACA,GAAI;CACL,CAAA,EAC2B,CAAA;AAElC;AAEA,SAAS,kBAAkB,EAAE,GAAG,SAAmE;CACjG,OAAO,oBAACA,aAAsB,OAAvB;EAA6B,aAAU;EAAsB,GAAI;CAAQ,CAAA;AAClF;AAEA,SAAS,iBAAiB,EACxB,WACA,OACA,UAAU,WACV,GAAG,SAIF;CACD,OACE,oBAACA,aAAsB,MAAvB;EACE,aAAU;EACV,cAAY;EACZ,gBAAc;EACd,WAAW,GACT,+mBACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,yBAAyB,EAChC,WACA,UACA,SACA,GAAG,SAC+D;CAClE,OACE,qBAACA,aAAsB,cAAvB;EACE,aAAU;EACV,WAAW,GACT,gTACA,SACF;EACS;EACT,GAAI;YAPN,CASE,oBAAC,QAAD;GAAM,WAAU;aACd,oBAACA,aAAsB,eAAvB,EAAA,UACE,oBAAC,WAAD,EAAW,WAAU,SAAU,CAAA,EACI,CAAA;EACjC,CAAA,GACL,QACiC;;AAExC;AAEA,SAAS,uBAAuB,EAC9B,GAAG,SAC6D;CAChE,OAAO,oBAACA,aAAsB,YAAvB;EAAkC,aAAU;EAA4B,GAAI;CAAQ,CAAA;AAC7F;AAEA,SAAS,sBAAsB,EAC7B,WACA,UACA,GAAG,SAC4D;CAC/D,OACE,qBAACA,aAAsB,WAAvB;EACE,aAAU;EACV,WAAW,GACT,gTACA,SACF;EACA,GAAI;YANN,CAQE,oBAAC,QAAD;GAAM,WAAU;aACd,oBAACA,aAAsB,eAAvB,EAAA,UACE,oBAAC,YAAD,EAAY,WAAU,sBAAuB,CAAA,EACV,CAAA;EACjC,CAAA,GACL,QAC8B;;AAErC;AAEA,SAAS,kBAAkB,EACzB,WACA,OACA,GAAG,SAGF;CACD,OACE,oBAACA,aAAsB,OAAvB;EACE,aAAU;EACV,cAAY;EACZ,WAAW,GAAG,qDAAqD,SAAS;EAC5E,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,sBAAsB,EAC7B,WACA,GAAG,SAC4D;CAC/D,OACE,oBAACA,aAAsB,WAAvB;EACE,aAAU;EACV,WAAW,GAAG,6BAA6B,SAAS;EACpD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,qBAAqB,EAAE,WAAW,GAAG,SAAuC;CACnF,OACE,oBAAC,QAAD;EACE,aAAU;EACV,WAAW,GAAG,yDAAyD,SAAS;EAChF,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,gBAAgB,EAAE,GAAG,SAAiE;CAC7F,OAAO,oBAACA,aAAsB,KAAvB;EAA2B,aAAU;EAAoB,GAAI;CAAQ,CAAA;AAC9E;AAEA,SAAS,uBAAuB,EAC9B,WACA,OACA,UACA,GAAG,SAGF;CACD,OACE,qBAACA,aAAsB,YAAvB;EACE,aAAU;EACV,cAAY;EACZ,WAAW,GACT,8WACA,SACF;EACA,GAAI;YAPN,CASG,UACD,oBAAC,kBAAD,EAAkB,WAAU,iBAAkB,CAAA,CACd;;AAEtC;AAEA,SAAS,uBAAuB,EAC9B,WACA,GAAG,SAC6D;CAChE,OACE,oBAACA,aAAsB,YAAvB;EACE,aAAU;EACV,WAAW,GACT,ifACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;;;ACrMA,MAAM,kBAAkB,IAAI,6BAA6B;CACvD,UAAU;EACR,MAAM;GACJ,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK;EACP;EAEA,QAAQ;GACN,QAAQ;GACR,QAAQ;GACR,UAAU;EACZ;EACA,OAAO;GACL,MAAM;GACN,QAAQ;GACR,OAAO;EACT;EACA,UAAU;GACR,MAAM;GACN,OAAO;EACT;CACF;CACA,iBAAiB;EACf,MAAM;EACN,UAAU;CACZ;AACF,CAAC;AAQD,SAAS,QAAQ,EAAE,IAAI,WAAW,MAAM,QAAQ,OAAO,UAAU,GAAG,SAAuB;CAEzF,OACE,oBAFW,MAAM,MAEjB;EACE,aAAU;EACV,WAAW,GAAG,gBAAgB;GAAE;GAAM;GAAQ;GAAO;EAAS,CAAC,GAAG,SAAS;EAC3E,GAAI;CACL,CAAA;AAEL;;;ACrDA,MAAM,gBAAgB,IACpB,GACE,0XACA,iFACA,wGACF,GACA;CACE,UAAU;EAER,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,SAAS;GACT,IAAI;EACN;EAEA,OAAO;GACL,SAAS;GACT,OAAO;EACT;CACF;CACA,iBAAiB;EACf,MAAM;EACN,OAAO;CACT;AACF,CACF;AAEA,SAAS,MAAM,EACb,WACA,MACA,MACA,OACA,GAAG,SACgF;CACnF,OACE,oBAAC,SAAD;EACQ;EACN,aAAU;EACV,WAAW,GAAG,cAAc;GAAE;GAAM;EAAM,CAAC,GAAG,SAAS;EACvD,GAAI;CACL,CAAA;AAEL;;;AC9CA,SAAgB,UAAU,OAAoC;CAC5D,OACE,qBAAC,OAAD;EACE,OAAM;EACN,QAAO;EACP,SAAQ;EACR,MAAK;EACL,OAAM;EACN,GAAI;EACJ,OAAO,EAAE,MAAM,iBAAiB;YAPlC;GASE,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD,EAAM,GAAE,wjBAAyjB,CAAA;GACjkB,oBAAC,QAAD,EAAM,GAAE,6FAA8F,CAAA;GACtG,oBAAC,QAAD,EAAM,GAAE,2FAA4F,CAAA;GACpG,oBAAC,QAAD,EAAM,GAAE,uHAAwH,CAAA;GAChI,oBAAC,QAAD,EAAM,GAAE,4GAA6G,CAAA;GACrH,oBAAC,QAAD,EAAM,GAAE,0EAA2E,CAAA;GACnF,oBAAC,QAAD,EAAM,GAAE,qEAAsE,CAAA;GAC9E,oBAAC,QAAD,EAAM,GAAE,oGAAqG,CAAA;GAC7G,oBAAC,QAAD,EAAM,GAAE,uHAAwH,CAAA;GAChI,oBAAC,QAAD,EAAM,GAAE,mGAAoG,CAAA;GAC5G,oBAAC,QAAD,EAAM,GAAE,0GAA2G,CAAA;GACnH,oBAAC,QAAD,EAAM,GAAE,mGAAoG,CAAA;GAC5G,oBAAC,QAAD,EAAM,GAAE,6FAA8F,CAAA;GACtG,oBAAC,QAAD,EAAM,GAAE,iGAAkG,CAAA;GAC1G,oBAAC,QAAD,EAAM,GAAE,mGAAoG,CAAA;GAC5G,oBAAC,QAAD,EAAM,GAAE,4JAA6J,CAAA;GACrK,oBAAC,QAAD,EAAM,GAAE,2JAA4J,CAAA;GACpK,oBAAC,QAAD,EAAM,GAAE,sGAAuG,CAAA;GAC/G,oBAAC,QAAD,EAAM,GAAE,kHAAmH,CAAA;GAC3H,oBAAC,QAAD,EAAM,GAAE,oKAAqK,CAAA;GAC7K,oBAAC,QAAD,EAAM,GAAE,4IAA6I,CAAA;GACrJ,oBAAC,QAAD,EAAM,GAAE,+GAAgH,CAAA;GACxH,oBAAC,QAAD,EAAM,GAAE,yGAA0G,CAAA;EAC/G;;AAET;;;ACxCA,SAAgB,UAAU,OAAoC;CAC5D,OACE,qBAAC,OAAD;EACE,OAAM;EACN,QAAO;EACP,SAAQ;EACR,MAAK;EACL,OAAM;EACN,GAAI;EACJ,OACE;GACE,oBAAoB;GACpB,mBAAmB;GACnB,oBAAoB;EACtB;YAZJ;GAeE,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;EACE;;AAET;;;ACvKA,SAAgB,SAAS,OAAoC;CAC3D,OACE,qBAAC,OAAD;EACE,OAAM;EACN,QAAO;EACP,SAAQ;EACR,MAAK;EACL,OAAM;EACN,GAAI;EACJ,OACE;GACE,sBAAsB;GACtB,uBAAuB;GACvB,oBAAoB;EACtB;YAZJ;GAeE,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;EACE;;AAET;;;ACzJA,SAAgB,cAAc,OAAoC;CAChE,OACE,qBAAC,OAAD;EACE,OAAM;EACN,QAAO;EACP,SAAQ;EACR,MAAK;EACL,OAAM;EACN,GAAI;EACJ,OAAO,EAAE,MAAM,iBAAiB;YAPlC;GASE,oBAAC,QAAD,EAAM,GAAE,wEAAyE,CAAA;GACjF,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IAAM,aAAU;IAAU,aAAU;IAAU,GAAE;IAAa,MAAK;GAAS,CAAA;GAC3E,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IAAM,aAAU;IAAU,aAAU;IAAU,GAAE;IAAc,MAAK;GAAS,CAAA;GAC5E,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;EACE;;AAET;;;AClFA,SAAgB,cAAc,OAAoC;CAChE,OACE,qBAAC,OAAD;EACE,OAAM;EACN,QAAO;EACP,SAAQ;EACR,MAAK;EACL,OAAM;EACN,GAAI;EACJ,OACE;GACE,2BAA2B;GAC3B,4BAA4B;GAC5B,yBAAyB;EAC3B;YAZJ;GAeE,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;EACE;;AAET;;;AC3LA,SAAgB,YAAY,OAAoC;CAC9D,OACE,qBAAC,OAAD;EACE,OAAM;EACN,QAAO;EACP,SAAQ;EACR,MAAK;EACL,OAAM;EACN,GAAI;EACJ,OAAO,EAAE,MAAM,iBAAiB;YAPlC,CASE,oBAAC,QAAD;GACE,GAAE;GACF,MAAK;EACN,CAAA,GACD,oBAAC,QAAD,EAAM,GAAE,suEAAuuE,CAAA,CAC5uE;;AAET;;;AClBA,SAAgB,YAAY,OAAoC;CAC9D,OACE,qBAAC,OAAD;EACE,OAAM;EACN,QAAO;EACP,SAAQ;EACR,MAAK;EACL,OAAM;EACN,GAAI;EACJ,OACE;GACE,uBAAuB;GACvB,yBAAyB;GACzB,0BAA0B;GAC1B,uBAAuB;EACzB;YAbJ;GAgBE,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,aAAU;IACV,aAAU;IACV,GAAE;IACF,MAAK;GACN,CAAA;GACD,oBAAC,QAAD;IACE,GAAE;IACF,MAAK;GACN,CAAA;EACE;;AAET;;;ACpGA,MAAM,QAAsD;CAC1D,OAAO;EAAE,MAAM;EAAW,MAAM;CAAU;CAC1C,WAAW;EAAE,MAAM;EAAe,MAAM;CAAc;CACtD,SAAS;EAAE,MAAM;EAAa,MAAM;CAAY;CAChD,MAAM;EAAE,MAAM;EAAU,MAAM;CAAS;AACzC;AAEA,SAAS,KAAK,EACZ,OACA,UAAU,QACV,GAAG,SAMF;CACD,MAAM,OAAO,MAAM,OAAO;CAC1B,OAAO,oBAAC,MAAD;EAAM,aAAU;EAAO,cAAY;EAAO,gBAAc;EAAS,GAAI;CAAQ,CAAA;AACtF;;;AC9BA,SAASC,UAAQ,EAAE,GAAG,SAA6D;CACjF,OAAO,oBAACC,QAAiB,MAAlB;EAAuB,aAAU;EAAU,GAAI;CAAQ,CAAA;AAChE;AAEA,SAAS,eAAe,EAAE,GAAG,SAAgE;CAC3F,OAAO,oBAACA,QAAiB,SAAlB;EAA0B,aAAU;EAAkB,GAAI;CAAQ,CAAA;AAC3E;AAEA,SAAS,eAAe,EACtB,WACA,QAAQ,UACR,aAAa,GACb,GAAG,SACqD;CACxD,OACE,oBAACA,QAAiB,QAAlB,EAAA,UACE,oBAACA,QAAiB,SAAlB;EACE,aAAU;EACH;EACK;EACZ,WAAW,GACT,4dACA,SACF;EACA,GAAI;CACL,CAAA,EACsB,CAAA;AAE7B;AAEA,SAAS,cAAc,EAAE,GAAG,SAA+D;CACzF,OAAO,oBAACA,QAAiB,QAAlB;EAAyB,aAAU;EAAiB,GAAI;CAAQ,CAAA;AACzE;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,SAAsC;CAC3E,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,+BAA+B,SAAS;EACtD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,SAAqC;CACzE,OAAO,oBAAC,OAAD;EAAK,aAAU;EAAgB,WAAW,GAAG,eAAe,SAAS;EAAG,GAAI;CAAQ,CAAA;AAC7F;AAEA,SAAS,mBAAmB,EAAE,WAAW,GAAG,SAAoC;CAC9E,OACE,oBAAC,KAAD;EACE,aAAU;EACV,WAAW,GAAG,yBAAyB,SAAS;EAChD,GAAI;CACL,CAAA;AAEL;;;AC3DA,SAAS,SAAS,EAAE,WAAW,GAAG,SAAsC;CACtE,OACE,oBAAC,OAAD;EAAK,aAAU;EAAW,WAAW,GAAG,+BAA+B,SAAS;EAAG,GAAI;CAAQ,CAAA;AAEnG;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,SAAsC;CAC5E,OACE,oBAAC,UAAD;EACE,aAAU;EACV,WAAW,GAAG,wBAAwB,SAAS;EAC/C,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,SAAsC;CAC1E,OACE,oBAAC,UAAD;EACE,aAAU;EACV,WAAW,GAAG,2BAA2B,SAAS;EAClD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,SAAsC;CAC5E,OACE,oBAAC,UAAD;EACE,aAAU;EACV,WAAW,GAAG,0BAA0B,SAAS;EACjD,GAAI;CACL,CAAA;AAEL;;;AChCA,SAAS,MAAM,EACb,WACA,UAAU,OACV,GAAG,SACqD;CACxD,OACE,oBAAC,OAAD;EAAK,aAAU;EAAkB,WAAU;YACzC,oBAAC,SAAD;GACE,aAAU;GACV,gBAAc,WAAW,KAAA;GACzB,WAAW,GACT,iCAEA,WAAW,4CACX,SACF;GACA,GAAI;EACL,CAAA;CACE,CAAA;AAET;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAwC;CAC3E,OAAO,oBAAC,SAAD;EAAO,aAAU;EAAe,WAAW,GAAG,mBAAmB,SAAS;EAAG,GAAI;CAAQ,CAAA;AAClG;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAwC;CACzE,OACE,oBAAC,SAAD;EACE,aAAU;EACV,WAAW,GAAG,8BAA8B,SAAS;EACrD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAwC;CAC3E,OACE,oBAAC,SAAD;EACE,aAAU;EACV,WAAW,GAAG,2DAA2D,SAAS;EAClF,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,SAAS,EAAE,WAAW,GAAG,SAAqC;CACrE,OACE,oBAAC,MAAD;EACE,aAAU;EACV,WAAW,GACT,6GACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAqC;CACtE,OACE,oBAAC,MAAD;EACE,aAAU;EACV,WAAW,GACT,sJACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAqC;CACtE,OACE,oBAAC,MAAD;EACE,aAAU;EACV,WAAW,GACT,0GACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,SAA0C;CAC9E,OACE,oBAAC,WAAD;EACE,aAAU;EACV,WAAW,GAAG,sCAAsC,SAAS;EAC7D,GAAI;CACL,CAAA;AAEL;;;ACxFA,MAAM,eAAe,IAAI,IAAI;CAC3B,UAAU;EAER,MAAM;GACJ,OACE;GACF,SACE;GACF,OACE;GACF,MAAM;GACN,SACE;EACJ;EACA,QAAQ;GACN,QAAQ;GACR,QAAQ;GACR,UAAU;EACZ;EACA,SAAS;GACP,SAAS;GACT,OAAO;GACP,SAAS;GACT,aAAa;GACb,SAAS;EACX;EACA,MAAM;GACJ,MAAM;GACN,SAAS;GACT,MAAM;EACR;EACA,OAAO;GACL,MAAM;GACN,QAAQ;GACR,OAAO;EACT;EACA,UAAU,EACR,MAAM,WACR;CACF;CACA,iBAAiB;EACf,MAAM;EACN,QAAQ;EACR,SAAS;EACT,MAAM;CACR;AACF,CAAC;AAQD,SAAS,KAAK,EACZ,IACA,WACA,MACA,QACA,SACA,MACA,OACA,UACA,GAAG,SACS;CAEZ,OACE,oBAFW,MAAM,KAEjB;EACE,aAAU;EACV,WAAW,GAAG,aAAa;GAAE;GAAM;GAAQ;GAAS;GAAM;GAAO;EAAS,CAAC,GAAG,SAAS;EACvF,GAAI;CACL,CAAA;AAEL;;;ACnEA,MAAM,WAA2B;CAAC;CAAa;CAAW;CAAS;AAAM;AAazE,MAAM,eAAe,MAAM,cAAwC,IAAI;AAEvE,MAAM,sBAAsB;AAE5B,SAAS,WAAW,YAA+C;CACjE,IAAI;EACF,MAAM,MAAM,aAAa,QAAQ,UAAU;EAC3C,IAAI,CAAC,KAAK,OAAO,CAAC;EAClB,MAAM,SAAS,KAAK,MAAM,GAAG;EAC7B,OAAO;GACL,OAAO,OAAO,UAAU,UAAU,OAAO,UAAU,UAAU,OAAO,QAAQ,KAAA;GAC5E,SAAS,SAAS,SAAS,OAAO,OAAuB,IAAI,OAAO,UAAU,KAAA;EAChF;CACF,QAAQ;EACN,OAAO,CAAC;CACV;AACF;AAEA,SAAS,cAAuB;CAC9B,IAAI;EACF,OAAO,OAAO,WAAW,8BAA8B,EAAE;CAC3D,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAS,gBAAgB,EAAE,OAAO,WAAmC;CACnE,MAAM,OAAO,SAAS;CACtB,KAAK,UAAU,OAAO,QAAQ,UAAU,MAAM;CAC9C,KAAK,MAAM,KAAK,UAAU,KAAK,UAAU,OAAO,SAAS,KAAK,MAAM,OAAO;AAC7E;AAEA,SAAS,cAAc,EACrB,UACA,eAAe,SACf,iBAAiB,aACjB,aAAa,uBASZ;CAED,MAAM,CAAC,OAAO,YAAY,MAAM,eAAiC;EAC/D,IAAI,OAAO,WAAW,aAAa,OAAO;GAAE,OAAO;GAAc,SAAS;EAAe;EACzF,MAAM,SAAS,WAAW,UAAU;EACpC,OAAO;GACL,OAAO,OAAO,UAAU,YAAY,IAAI,SAAS;GACjD,SAAS,OAAO,WAAW;EAC7B;CACF,CAAC;CAGD,MAAM,gBAAgB;EACpB,gBAAgB,KAAK;EACrB,IAAI;GACF,aAAa,QAAQ,YAAY,KAAK,UAAU,KAAK,CAAC;EACxD,QAAQ,CAER;CACF,GAAG,CAAC,OAAO,UAAU,CAAC;CAEtB,MAAM,QAAQ,MAAM,eACX;EACL,GAAG;EACH,WAAW,UAAU,UAAU,OAAO;GAAE,GAAG;GAAG;EAAM,EAAE;EACtD,mBAAmB,UAAU,OAAO;GAAE,GAAG;GAAG,OAAO,EAAE,UAAU,SAAS,UAAU;EAAO,EAAE;EAC3F,aAAa,YAAY,UAAU,OAAO;GAAE,GAAG;GAAG;EAAQ,EAAE;CAC9D,IACA,CAAC,KAAK,CACR;CAEA,OAAO,oBAAC,aAAa,UAAd;EAA8B;EAAQ;CAAgC,CAAA;AAC/E;AAEA,SAAS,WAA8B;CACrC,MAAM,MAAM,MAAM,WAAW,YAAY;CACzC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iDAAiD;CAEnE,OAAO;AACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["cn","cn","cn"],"sources":["../../src/layouts/Container/Container.tsx","../../src/layouts/PageBackground/PageBackground.tsx","../../src/layouts/TwoColumn/TwoColumn.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n// Container — centered, max-width page column with consistent gutters.\n// `narrow` ~ a reading/hero column; `wide` ~ a full content area.\nconst containerVariants = cva(\"mx-auto w-full\", {\n variants: {\n size: {\n narrow: \"max-w-[900px]\",\n content: \"max-w-[1200px]\",\n wide: \"max-w-[1440px]\",\n full: \"max-w-none\",\n },\n // `glass` makes the centered column a translucent, blurred panel.\n variant: {\n default: \"px-4\",\n glass:\n \"rounded-2xl bg-[var(--glass-light)] px-4 py-4 backdrop-blur-[var(--glass-blur)] sm:px-6\",\n },\n },\n defaultVariants: {\n size: \"content\",\n variant: \"default\",\n },\n});\n\ntype ContainerProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof containerVariants> & {\n as?: React.ElementType;\n };\n\nfunction Container({ as, className, size, variant, ...props }: ContainerProps) {\n const Comp = as ?? \"div\";\n return (\n <Comp\n data-slot=\"container\"\n data-variant={variant ?? \"default\"}\n className={cn(containerVariants({ size, variant }), className)}\n {...props}\n />\n );\n}\n\nexport { Container, containerVariants, type ContainerProps };\n","import type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n// PageBackground — ambient gradient backdrop that sits behind the app and makes\n// glass surfaces read. Composes a radial gradient from the theme-aware\n// `--page-gradient-mid` / `--page-gradient-edge` tokens (the middle stop is the\n// active brand tint; see styles/semantic.css), so it changes with\n// `.theme-slingshot` / `.theme-bodhi` / `.theme-sustain` and light/dark.\n// The gradient is built here (a real property) rather than as a composite token\n// so the vars resolve in this element's theme scope. Decorative (aria-hidden).\n//\n// By default it's `fixed` behind the page (the app body must be transparent);\n// set `fixed={false}` to fill a positioned parent instead.\nconst PAGE_GRADIENT =\n \"radial-gradient(circle at 90% 10%, var(--page-gradient-edge) 0%, var(--page-gradient-mid) 25%, var(--page-gradient-edge) 60%)\";\n\ntype PageBackgroundProps = React.ComponentProps<\"div\"> & {\n /** Fixed to the viewport (default) vs absolute-fill of a positioned parent. */\n fixed?: boolean;\n};\n\nfunction PageBackground({ fixed = true, className, style, ...props }: PageBackgroundProps) {\n return (\n <div\n data-slot=\"page-background\"\n aria-hidden\n // Neutral fallback color under the gradient so it's never fully empty.\n className={cn(\n \"pointer-events-none inset-0 bg-slate-200 dark:bg-slate-950\",\n fixed ? \"fixed -z-10\" : \"absolute\",\n className,\n )}\n style={{ backgroundImage: PAGE_GRADIENT, ...style }}\n {...props}\n />\n );\n}\n\nexport { PageBackground, type PageBackgroundProps };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n// TwoColumn — composable two-column layout (aside + main). Stacks vertically\n// below `lg`. Compose: <TwoColumn><TwoColumnAside/><TwoColumnMain/></TwoColumn>.\n// The aside width is set on TwoColumnAside (default lg:w-64; override via className,\n// e.g. a 56px nav rail with `lg:w-14`).\nconst twoColumnVariants = cva(\"flex flex-col lg:flex-row\", {\n variants: {\n gap: {\n none: \"gap-0\",\n sm: \"gap-3\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n },\n reverse: {\n true: \"lg:flex-row-reverse\",\n },\n },\n defaultVariants: {\n gap: \"lg\",\n },\n});\n\ntype TwoColumnProps = React.ComponentProps<\"div\"> & VariantProps<typeof twoColumnVariants>;\n\nfunction TwoColumn({ className, gap, reverse, ...props }: TwoColumnProps) {\n return (\n <div\n data-slot=\"two-column\"\n className={cn(twoColumnVariants({ gap, reverse }), className)}\n {...props}\n />\n );\n}\n\nfunction TwoColumnAside({ className, ...props }: React.ComponentProps<\"aside\">) {\n return (\n <aside\n data-slot=\"two-column-aside\"\n className={cn(\"w-full shrink-0 lg:w-64\", className)}\n {...props}\n />\n );\n}\n\nfunction TwoColumnMain({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"two-column-main\" className={cn(\"min-w-0 flex-1\", className)} {...props} />;\n}\n\nexport { TwoColumn, TwoColumnAside, TwoColumnMain, twoColumnVariants, type TwoColumnProps };\n"],"mappings":";;;;;;AAOA,MAAM,qBAAA,GAAA,yBAAA,KAAwB,kBAAkB;CAC9C,UAAU;EACR,MAAM;GACJ,QAAQ;GACR,SAAS;GACT,MAAM;GACN,MAAM;EACR;EAEA,SAAS;GACP,SAAS;GACT,OACE;EACJ;CACF;CACA,iBAAiB;EACf,MAAM;EACN,SAAS;CACX;AACF,CAAC;AAOD,SAAS,UAAU,EAAE,IAAI,WAAW,MAAM,SAAS,GAAG,SAAyB;CAE7E,OACE,iBAAA,GAAA,kBAAA,KAFW,MAAM,OAEjB;EACE,aAAU;EACV,gBAAc,WAAW;EACzB,WAAWA,cAAAA,GAAG,kBAAkB;GAAE;GAAM;EAAQ,CAAC,GAAG,SAAS;EAC7D,GAAI;CACL,CAAA;AAEL;;;AC7BA,MAAM,gBACJ;AAOF,SAAS,eAAe,EAAE,QAAQ,MAAM,WAAW,OAAO,GAAG,SAA8B;CACzF,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,eAAA;EAEA,WAAWC,cAAAA,GACT,8DACA,QAAQ,gBAAgB,YACxB,SACF;EACA,OAAO;GAAE,iBAAiB;GAAe,GAAG;EAAM;EAClD,GAAI;CACL,CAAA;AAEL;;;AC5BA,MAAM,qBAAA,GAAA,yBAAA,KAAwB,6BAA6B;CACzD,UAAU;EACR,KAAK;GACH,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;EACN;EACA,SAAS,EACP,MAAM,sBACR;CACF;CACA,iBAAiB,EACf,KAAK,KACP;AACF,CAAC;AAID,SAAS,UAAU,EAAE,WAAW,KAAK,SAAS,GAAG,SAAyB;CACxE,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,WAAWC,cAAAA,GAAG,kBAAkB;GAAE;GAAK;EAAQ,CAAC,GAAG,SAAS;EAC5D,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,SAAwC;CAC9E,OACE,iBAAA,GAAA,kBAAA,KAAC,SAAD;EACE,aAAU;EACV,WAAWA,cAAAA,GAAG,2BAA2B,SAAS;EAClD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,SAAsC;CAC3E,OAAO,iBAAA,GAAA,kBAAA,KAAC,OAAD;EAAK,aAAU;EAAkB,WAAWA,cAAAA,GAAG,kBAAkB,SAAS;EAAG,GAAI;CAAQ,CAAA;AAClG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/layouts/Container/Container.tsx","../../src/layouts/PageBackground/PageBackground.tsx","../../src/layouts/Stack/Stack.tsx","../../src/layouts/TwoColumn/TwoColumn.tsx"],"mappings":";;;;;;cAOM;;;IAmBJ,gCAAA,CAAA;AAzBkC,KA2B/B,cAAA,GAAiB,KAAA,CAAM,cAF1B,CAAA,KAAA,CAAA,GAGA,YAHA,CAAA,OAGoB,iBAHpB,CAAA,GAAA;EAEG,EAAA,CAAA,EAEI,KAAA,CAAM,WAFI;CAAA;iBAKV,SAAA,CALmB;EAAA,EAAA;EAAA,SAAA;EAAA,IAAA;EAAA,OAAA;EAAA,GAAA;AAAA,CAAA,EAKmC,cALnC,CAAA,EAKiD,oBAAA,CAAA,GAAA,CAAA,OALjD;;;KCXvB,mBAAA,GAAsB,KAAA,CAAM;;;;iBAKxB,cAAA;;;;;GAA6D,sBAAmB,oBAAA,CAAA,GAAA,CAAA;;;cCfnF,qBFqBa;;;;EArBb,OAAA,CAAA,EAAA,KAAA,GAAA,QAmBJ,GAAA,OAAA,GAAA,SAAA,GAAA,IAAA,GAAA,SAAA;IEcA,gCAAA,CAAA,SFZiB,CAAA,GAAA,SAAA,EAAA,GAAA,MAAA;KEcd,UAAA,GAAa,KAAA,CAAM,cFdL,CAAA,KAAA,CAAA,GEejB,YFfiB,CAAA,OEeG,aFfH,CAAA,GAAA;KAAG,EEgBb,KAAA,CAAM,WFhBa;;iBEmBnB,KAAA,CFlBP;EAAA,EAAA;EAAA,SAAA;EAAA,SAAA;EAAA,GAAA;EAAA,KAAA;EAAA,OAAA;EAAA,GAAA;AAAA,CAAA,EEkB0E,UFlB1E,CAAA,EEkBoF,oBAAA,CAAA,GAAA,CAAA,OFlBpF;;;cGpBI;;;IAgBJ,gCAAA,CAAA;AHxBkC,KG0B/B,cAAA,GAAiB,KAAA,CAAM,cHD1B,CAAA,KAAA,CAAA,GGCkD,YHDlD,CAAA,OGCsE,iBHDtE,CAAA;iBGGO,SAAA,CHDU;EAAA,SAAA;EAAA,GAAA;EAAA,OAAA;EAAA,GAAA;AAAA,CAAA,EGCuC,cHDvC,CAAA,EGCqD,oBAAA,CAAA,GAAA,CAAA,OHDrD;iBGWV,cAAA,CHXU;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EGW8B,KAAA,CAAM,cHXpC,CAAA,OAAA,CAAA,CAAA,EGW2D,oBAAA,CAAA,GAAA,CAAA,OHX3D;iBGqBV,aAAA,CHrBmB;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EGqBoB,KAAA,CAAM,cHrB1B,CAAA,KAAA,CAAA,CAAA,EGqB+C,oBAAA,CAAA,GAAA,CAAA,OHrB/C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/layouts/Container/Container.tsx","../../src/layouts/PageBackground/PageBackground.tsx","../../src/layouts/Stack/Stack.tsx","../../src/layouts/TwoColumn/TwoColumn.tsx"],"mappings":";;;;;;cAOM;;;IAmBJ,+BAAA,CAAA;AAzBkC,KA2B/B,cAAA,GAAiB,KAAA,CAAM,cAF1B,CAAA,KAAA,CAAA,GAGA,YAHA,CAAA,OAGoB,iBAHpB,CAAA,GAAA;EAEG,EAAA,CAAA,EAEI,KAAA,CAAM,WAFI;CAAA;iBAKV,SAAA,CALmB;EAAA,EAAA;EAAA,SAAA;EAAA,IAAA;EAAA,OAAA;EAAA,GAAA;AAAA,CAAA,EAKmC,cALnC,CAAA,EAKiD,mBAAA,CAAA,GAAA,CAAA,OALjD;;;KCXvB,mBAAA,GAAsB,KAAA,CAAM;;;;iBAKxB,cAAA;;;;;GAA6D,sBAAmB,mBAAA,CAAA,GAAA,CAAA;;;cCfnF,qBFqBa;;;;EArBb,OAAA,CAAA,EAAA,OAAA,GAmBJ,QAAA,GAAA,KAAA,GAAA,SAAA,GAAA,IAAA,GAAA,SAAA;IEcA,+BAAA,CAAA,SFZiB,CAAA,GAAA,SAAA,EAAA,GAAA,MAAA;KEcd,UAAA,GAAa,KAAA,CAAM,cFdL,CAAA,KAAA,CAAA,GEejB,YFfiB,CAAA,OEeG,aFfH,CAAA,GAAA;KAAG,EEgBb,KAAA,CAAM,WFhBa;;iBEmBnB,KAAA,CFlBP;EAAA,EAAA;EAAA,SAAA;EAAA,SAAA;EAAA,GAAA;EAAA,KAAA;EAAA,OAAA;EAAA,GAAA;AAAA,CAAA,EEkB0E,UFlB1E,CAAA,EEkBoF,mBAAA,CAAA,GAAA,CAAA,OFlBpF;;;cGpBI;;;IAgBJ,+BAAA,CAAA;AHxBkC,KG0B/B,cAAA,GAAiB,KAAA,CAAM,cHD1B,CAAA,KAAA,CAAA,GGCkD,YHDlD,CAAA,OGCsE,iBHDtE,CAAA;iBGGO,SAAA,CHDU;EAAA,SAAA;EAAA,GAAA;EAAA,OAAA;EAAA,GAAA;AAAA,CAAA,EGCuC,cHDvC,CAAA,EGCqD,mBAAA,CAAA,GAAA,CAAA,OHDrD;iBGWV,cAAA,CHXU;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EGW8B,KAAA,CAAM,cHXpC,CAAA,OAAA,CAAA,CAAA,EGW2D,mBAAA,CAAA,GAAA,CAAA,OHX3D;iBGqBV,aAAA,CHrBmB;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EGqBoB,KAAA,CAAM,cHrB1B,CAAA,KAAA,CAAA,CAAA,EGqB+C,mBAAA,CAAA,GAAA,CAAA,OHrB/C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/layouts/Container/Container.tsx","../../src/layouts/PageBackground/PageBackground.tsx","../../src/layouts/TwoColumn/TwoColumn.tsx"],"sourcesContent":["import { type VariantProps, cva } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n// Container — centered, max-width page column with consistent gutters.\n// `narrow` ~ a reading/hero column; `wide` ~ a full content area.\nconst containerVariants = cva(\"mx-auto w-full\", {\n variants: {\n size: {\n narrow: \"max-w-[900px]\",\n content: \"max-w-[1200px]\",\n wide: \"max-w-[1440px]\",\n full: \"max-w-none\",\n },\n // `glass` makes the centered column a translucent, blurred panel.\n variant: {\n default: \"px-4\",\n glass:\n \"rounded-2xl bg-[var(--glass-light)] px-4 py-4 backdrop-blur-[var(--glass-blur)] sm:px-6\",\n },\n },\n defaultVariants: {\n size: \"content\",\n variant: \"default\",\n },\n});\n\ntype ContainerProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof containerVariants> & {\n as?: React.ElementType;\n };\n\nfunction Container({ as, className, size, variant, ...props }: ContainerProps) {\n const Comp = as ?? \"div\";\n return (\n <Comp\n data-slot=\"container\"\n data-variant={variant ?? \"default\"}\n className={cn(containerVariants({ size, variant }), className)}\n {...props}\n />\n );\n}\n\nexport { Container, containerVariants, type ContainerProps };\n","import type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n// PageBackground — ambient gradient backdrop that sits behind the app and makes\n// glass surfaces read. Composes a radial gradient from the theme-aware\n// `--page-gradient-mid` / `--page-gradient-edge` tokens (the middle stop is the\n// active brand tint; see styles/semantic.css), so it changes with\n// `.theme-slingshot` / `.theme-bodhi` / `.theme-sustain` and light/dark.\n// The gradient is built here (a real property) rather than as a composite token\n// so the vars resolve in this element's theme scope. Decorative (aria-hidden).\n//\n// By default it's `fixed` behind the page (the app body must be transparent);\n// set `fixed={false}` to fill a positioned parent instead.\nconst PAGE_GRADIENT =\n \"radial-gradient(circle at 90% 10%, var(--page-gradient-edge) 0%, var(--page-gradient-mid) 25%, var(--page-gradient-edge) 60%)\";\n\ntype PageBackgroundProps = React.ComponentProps<\"div\"> & {\n /** Fixed to the viewport (default) vs absolute-fill of a positioned parent. */\n fixed?: boolean;\n};\n\nfunction PageBackground({ fixed = true, className, style, ...props }: PageBackgroundProps) {\n return (\n <div\n data-slot=\"page-background\"\n aria-hidden\n // Neutral fallback color under the gradient so it's never fully empty.\n className={cn(\n \"pointer-events-none inset-0 bg-slate-200 dark:bg-slate-950\",\n fixed ? \"fixed -z-10\" : \"absolute\",\n className,\n )}\n style={{ backgroundImage: PAGE_GRADIENT, ...style }}\n {...props}\n />\n );\n}\n\nexport { PageBackground, type PageBackgroundProps };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n// TwoColumn — composable two-column layout (aside + main). Stacks vertically\n// below `lg`. Compose: <TwoColumn><TwoColumnAside/><TwoColumnMain/></TwoColumn>.\n// The aside width is set on TwoColumnAside (default lg:w-64; override via className,\n// e.g. a 56px nav rail with `lg:w-14`).\nconst twoColumnVariants = cva(\"flex flex-col lg:flex-row\", {\n variants: {\n gap: {\n none: \"gap-0\",\n sm: \"gap-3\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n },\n reverse: {\n true: \"lg:flex-row-reverse\",\n },\n },\n defaultVariants: {\n gap: \"lg\",\n },\n});\n\ntype TwoColumnProps = React.ComponentProps<\"div\"> & VariantProps<typeof twoColumnVariants>;\n\nfunction TwoColumn({ className, gap, reverse, ...props }: TwoColumnProps) {\n return (\n <div\n data-slot=\"two-column\"\n className={cn(twoColumnVariants({ gap, reverse }), className)}\n {...props}\n />\n );\n}\n\nfunction TwoColumnAside({ className, ...props }: React.ComponentProps<\"aside\">) {\n return (\n <aside\n data-slot=\"two-column-aside\"\n className={cn(\"w-full shrink-0 lg:w-64\", className)}\n {...props}\n />\n );\n}\n\nfunction TwoColumnMain({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"two-column-main\" className={cn(\"min-w-0 flex-1\", className)} {...props} />;\n}\n\nexport { TwoColumn, TwoColumnAside, TwoColumnMain, twoColumnVariants, type TwoColumnProps };\n"],"mappings":";;;;;AAOA,MAAM,oBAAoB,IAAI,kBAAkB;CAC9C,UAAU;EACR,MAAM;GACJ,QAAQ;GACR,SAAS;GACT,MAAM;GACN,MAAM;EACR;EAEA,SAAS;GACP,SAAS;GACT,OACE;EACJ;CACF;CACA,iBAAiB;EACf,MAAM;EACN,SAAS;CACX;AACF,CAAC;AAOD,SAAS,UAAU,EAAE,IAAI,WAAW,MAAM,SAAS,GAAG,SAAyB;CAE7E,OACE,oBAFW,MAAM,OAEjB;EACE,aAAU;EACV,gBAAc,WAAW;EACzB,WAAW,GAAG,kBAAkB;GAAE;GAAM;EAAQ,CAAC,GAAG,SAAS;EAC7D,GAAI;CACL,CAAA;AAEL;;;AC7BA,MAAM,gBACJ;AAOF,SAAS,eAAe,EAAE,QAAQ,MAAM,WAAW,OAAO,GAAG,SAA8B;CACzF,OACE,oBAAC,OAAD;EACE,aAAU;EACV,eAAA;EAEA,WAAW,GACT,8DACA,QAAQ,gBAAgB,YACxB,SACF;EACA,OAAO;GAAE,iBAAiB;GAAe,GAAG;EAAM;EAClD,GAAI;CACL,CAAA;AAEL;;;AC5BA,MAAM,oBAAoB,IAAI,6BAA6B;CACzD,UAAU;EACR,KAAK;GACH,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;EACN;EACA,SAAS,EACP,MAAM,sBACR;CACF;CACA,iBAAiB,EACf,KAAK,KACP;AACF,CAAC;AAID,SAAS,UAAU,EAAE,WAAW,KAAK,SAAS,GAAG,SAAyB;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,kBAAkB;GAAE;GAAK;EAAQ,CAAC,GAAG,SAAS;EAC5D,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,eAAe,EAAE,WAAW,GAAG,SAAwC;CAC9E,OACE,oBAAC,SAAD;EACE,aAAU;EACV,WAAW,GAAG,2BAA2B,SAAS;EAClD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,SAAsC;CAC3E,OAAO,oBAAC,OAAD;EAAK,aAAU;EAAkB,WAAW,GAAG,kBAAkB,SAAS;EAAG,GAAI;CAAQ,CAAA;AAClG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["React","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","Button","cn","ArrowUpIcon","ArrowDownIcon","ChevronsUpDownIcon","cn","Text","PILL","React","cn","Skeleton","ChevronDown","Popover","PopoverTrigger","PopoverContent","Search","Input","ChevronRight","Check","React","React","cn","Logo","Skeleton","useTheme","Button","Moon","Sun","DropdownMenu","DropdownMenuTrigger","Avatar","AvatarFallback","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuItem","LogOut","QueryClient","QueryClientProvider","MessageSquareShare","Credits","X","FolderOpen","cn","Heading","Text","Card","cn","Heading","Stack","cn","Text","Heading"],"sources":["../../src/patterns/DataTable/DataTable.tsx","../../src/patterns/Footer/Footer.tsx","../../src/patterns/Header/project-tree.ts","../../src/patterns/Header/ProjectPicker.tsx","../../src/patterns/Header/labels.ts","../../src/patterns/Header/api.ts","../../src/patterns/Header/storage.ts","../../src/patterns/Header/header-store.ts","../../src/patterns/Header/session.ts","../../src/patterns/Header/use-global-header.ts","../../src/patterns/Header/Header.tsx","../../src/patterns/MediaObject/MediaObject.tsx","../../src/patterns/SectionCard/SectionCard.tsx","../../src/patterns/SectionHeading/SectionHeading.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 columns: ColumnDef<TData, TValue>[];\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 pageSize?: number;\n};\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-hidden rounded-md border\">\n <Table striped={striped}>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead key={header.id} colSpan={header.colSpan}>\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 key={row.id} data-state={row.getIsSelected() ? \"selected\" : undefined}>\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-24 text-center text-muted-foreground\"\n >\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-foreground\" 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-foreground\">\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 column: Column<TData, TValue>;\n title: string;\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\", className)}\n onClick={() => column.toggleSorting(sorted === \"asc\")}\n >\n {title}\n {sorted === \"asc\" ? (\n <ArrowUpIcon />\n ) : sorted === \"desc\" ? (\n <ArrowDownIcon />\n ) : (\n <ChevronsUpDownIcon />\n )}\n </Button>\n );\n}\n\nexport { DataTable, DataTableColumnHeader };\nexport type { ColumnDef };\n","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-[var(--glass-light)] backdrop-blur-[var(--glass-blur)]\",\n} as const;\n\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-4 py-3 text-center md:grid-cols-3 md:items-center md:px-6\",\n \"text-[length:var(--paragraph-mini-font-size)] leading-[var(--paragraph-mini-line-height)]\",\n footerBackgrounds[background],\n bordered && \"border-t border-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-2 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-border\", className)}\n {...props}\n >\n |\n </span>\n );\n}\n\nexport { Footer, FooterStart, FooterCenter, FooterEnd, FooterPoweredBy, FooterSeparator };\n","import type { ProjectNode } from \"./types\";\n\n/** True when a node with the given id exists anywhere in the tree. */\nexport function nodeExistsInTree(tree: ProjectNode[], id: string): boolean {\n return tree.some((node) => node.id === id || nodeExistsInTree(node.children, id));\n}\n\n/** Name of the node with the given id, or undefined. */\nexport function findProjectName(tree: ProjectNode[], id: string): string | undefined {\n for (const node of tree) {\n if (node.id === id) return node.name;\n const found = findProjectName(node.children, id);\n if (found) return found;\n }\n return undefined;\n}\n\n/** Filter the tree to nodes matching `term`, preserving ancestors of matches. */\nexport function filterTree(nodes: ProjectNode[], term: string): ProjectNode[] {\n if (!term) return nodes;\n const lower = term.toLowerCase();\n return nodes.flatMap((node) => {\n if (node.name.toLowerCase().includes(lower)) return [node];\n const children = filterTree(node.children, term);\n return children.length > 0 ? [{ ...node, children }] : [];\n });\n}\n","\"use client\";\n\nimport { Check, ChevronDown, ChevronRight, Search } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { Input } from \"@/primitives/Input\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/primitives/Popover\";\nimport { Skeleton } from \"@/primitives/Skeleton\";\nimport { cn } from \"@/utils\";\nimport { filterTree, findProjectName } from \"./project-tree\";\nimport type { ProjectNode } from \"./types\";\n\ninterface ProjectPickerProps {\n projectsTree: ProjectNode[];\n selectedProjectId: string;\n selectedProjectName?: string;\n onSelect: (id: string) => void;\n projectLabel: string;\n projectPlaceholder: string;\n searchPlaceholder: string;\n emptyStateText: string;\n isLoading?: boolean;\n}\n\n// Pill shared by the trigger and the org pill — keeps the header lockup consistent.\nconst PILL = \"flex h-9 items-center gap-1.5 rounded-full border bg-card px-4 text-sm\";\n\nexport function ProjectPicker({\n projectsTree,\n selectedProjectId,\n selectedProjectName,\n onSelect,\n projectLabel,\n projectPlaceholder,\n searchPlaceholder,\n emptyStateText,\n isLoading = false,\n}: Readonly<ProjectPickerProps>) {\n const [open, setOpen] = React.useState(false);\n const [searchTerm, setSearchTerm] = React.useState(\"\");\n const [collapsedIds, setCollapsedIds] = React.useState<Set<string>>(new Set());\n\n const toggleCollapse = (id: string) =>\n setCollapsedIds((prev) => {\n const next = new Set(prev);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n\n const handleSelect = (id: string) => {\n onSelect(id);\n setOpen(false);\n };\n\n const selectedName = selectedProjectId\n ? (findProjectName(projectsTree, selectedProjectId) ?? selectedProjectName)\n : undefined;\n\n const filteredTree = filterTree(projectsTree, searchTerm);\n\n if (isLoading) {\n return (\n <div data-slot=\"header-project-picker\" className={cn(PILL, \"min-w-44\")}>\n <span className=\"shrink-0 text-muted-foreground\">{projectLabel}:</span>\n <Skeleton className=\"h-3 flex-1\" />\n <ChevronDown className=\"size-4 shrink-0 text-muted-foreground opacity-40\" />\n </div>\n );\n }\n\n return (\n <Popover\n open={open}\n onOpenChange={(next) => {\n setOpen(next);\n if (!next) setSearchTerm(\"\");\n }}\n >\n <PopoverTrigger\n data-slot=\"header-project-picker\"\n className={cn(PILL, \"text-left transition-colors hover:border-ring/60\")}\n >\n <span className=\"shrink-0 text-muted-foreground\">{projectLabel}:</span>\n <span\n className={cn(\n \"max-w-36 truncate\",\n selectedName ? \"font-medium\" : \"text-muted-foreground\",\n )}\n >\n {selectedName ?? projectPlaceholder}\n </span>\n <ChevronDown className=\"ml-1 size-4 shrink-0 text-muted-foreground\" />\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"w-64 p-0\" role=\"tree\" aria-label={projectLabel}>\n <div className=\"border-b p-2\">\n <div className=\"relative\">\n <Search className=\"absolute top-1/2 left-2.5 size-3.5 -translate-y-1/2 text-muted-foreground\" />\n <Input\n size=\"sm\"\n className=\"pl-8\"\n placeholder={searchPlaceholder}\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n />\n </div>\n </div>\n <div className=\"max-h-64 overflow-y-auto py-1\">\n {filteredTree.length === 0 ? (\n <p className=\"px-4 py-2 text-sm text-muted-foreground\">{emptyStateText}</p>\n ) : (\n filteredTree.map((node) => (\n <TreeNode\n key={node.id}\n node={node}\n depth={0}\n selectedId={selectedProjectId}\n onSelect={handleSelect}\n collapsedIds={collapsedIds}\n onToggleCollapse={toggleCollapse}\n />\n ))\n )}\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n\ninterface TreeNodeProps {\n node: ProjectNode;\n depth: number;\n selectedId: string;\n onSelect: (id: string) => void;\n collapsedIds: Set<string>;\n onToggleCollapse: (id: string) => void;\n}\n\nfunction TreeNode({\n node,\n depth,\n selectedId,\n onSelect,\n collapsedIds,\n onToggleCollapse,\n}: Readonly<TreeNodeProps>) {\n const isSelected = !node.isContextOnly && selectedId === node.id;\n const isCollapsed = collapsedIds.has(node.id);\n const hasChildren = node.children.length > 0;\n\n return (\n <div\n role=\"treeitem\"\n aria-selected={node.isContextOnly ? undefined : isSelected}\n aria-expanded={hasChildren ? !isCollapsed : undefined}\n >\n <div\n style={{ paddingLeft: `${0.75 + depth}rem` }}\n className={cn(\n \"flex items-center gap-1 py-2 pr-3 text-sm transition-colors\",\n node.isContextOnly\n ? \"cursor-default text-muted-foreground\"\n : \"cursor-pointer hover:bg-accent\",\n isSelected && \"bg-accent font-medium\",\n )}\n >\n {hasChildren ? (\n <button\n type=\"button\"\n aria-label={isCollapsed ? `Expand ${node.name}` : `Collapse ${node.name}`}\n onClick={() => onToggleCollapse(node.id)}\n className=\"shrink-0 text-muted-foreground hover:text-foreground\"\n >\n {isCollapsed ? (\n <ChevronRight className=\"size-3.5\" />\n ) : (\n <ChevronDown className=\"size-3.5\" />\n )}\n </button>\n ) : (\n <span className=\"inline-block w-3.5 shrink-0\" />\n )}\n\n {node.isContextOnly ? (\n <span className=\"flex-1 text-left\">{node.name}</span>\n ) : (\n <button type=\"button\" onClick={() => onSelect(node.id)} className=\"flex-1 text-left\">\n {node.name}\n </button>\n )}\n\n {isSelected && <Check className=\"ml-auto size-3.5 shrink-0 text-primary\" />}\n </div>\n {!isCollapsed && hasChildren && (\n <div role=\"group\">\n {node.children.map((child) => (\n <TreeNode\n key={child.id}\n node={child}\n depth={depth + 1}\n selectedId={selectedId}\n onSelect={onSelect}\n collapsedIds={collapsedIds}\n onToggleCollapse={onToggleCollapse}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n","/** Default UI strings. Spread-override via the Header `labels` prop if needed. */\nexport const DEFAULT_LABELS = {\n orgLabel: \"Org\",\n projectLabel: \"Project\",\n projectPlaceholder: \"Select project...\",\n searchPlaceholder: \"Search project\",\n emptyStateText: \"No projects found\",\n profileMenuLabel: \"Profile menu\",\n logoutLabel: \"Logout\",\n overlayTitle: \"Select a Project\",\n overlayDescription: \"Choose a project to get started. You can change it anytime from the header.\",\n} as const;\n\nexport type Labels = typeof DEFAULT_LABELS;\n","import type { Fetcher, HeaderEndpoints, HeaderProps, ProjectNode } from \"./types\";\n\n// Studio-auth API. Endpoints are built from the host-provided `apiBaseUrl` (full\n// domain) so the same header works across environments/subdomains. All requests\n// send cookies (`credentials: 'include'`); the parent-domain session cookie is\n// readable cross-subdomain.\n\nconst PATHS = {\n token: \"/api/v1/studio-auth/sessions/token\",\n me: \"/api/v1/onboarding/users/me\",\n logout: \"/api/v1/studio-auth/sessions/logout\",\n projects: (clientId: string) => `/api/v1/onboarding/organization/${clientId}/projects`,\n credits: \"/save/api/v1/users\",\n};\n\n/** Join a base URL and path without doubling slashes. */\nfunction join(baseUrl: string, path: string): string {\n return `${baseUrl.replace(/\\/$/, \"\")}${path}`;\n}\n\nexport function buildEndpoints(\n apiBaseUrl: string,\n overrides?: HeaderProps[\"endpoints\"],\n): HeaderEndpoints {\n return {\n token: overrides?.token ?? join(apiBaseUrl, PATHS.token),\n me: overrides?.me ?? join(apiBaseUrl, PATHS.me),\n logout: overrides?.logout ?? join(apiBaseUrl, PATHS.logout),\n projects:\n overrides?.projects ?? ((clientId: string) => join(apiBaseUrl, PATHS.projects(clientId))),\n credits: overrides?.credits ?? join(apiBaseUrl, PATHS.credits),\n };\n}\n\ntype MeResponse = { email: string; clientId: string };\ntype ApiEnvelope<T> = { response?: { data?: T } };\n\nexport async function fetchToken(endpoints: HeaderEndpoints, fetcher: Fetcher): Promise<string> {\n const res = await fetcher(endpoints.token, { credentials: \"include\" });\n if (!res.ok) throw new Error(`token request failed: ${res.status}`);\n const { accessToken } = (await res.json()) as { accessToken: string };\n return accessToken;\n}\n\nexport async function fetchMe(\n endpoints: HeaderEndpoints,\n accessToken: string,\n fetcher: Fetcher,\n): Promise<MeResponse> {\n const res = await fetcher(endpoints.me, {\n credentials: \"include\",\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n if (!res.ok) throw new Error(`me request failed: ${res.status}`);\n const body = (await res.json()) as ApiEnvelope<MeResponse>;\n const data = body.response?.data;\n if (!data) throw new Error(\"me response missing data\");\n return data;\n}\n\nexport async function fetchProjects(\n endpoints: HeaderEndpoints,\n clientId: string,\n accessToken: string,\n fetcher: Fetcher,\n): Promise<{ projectsTree: ProjectNode[]; organizationName: string | undefined }> {\n const res = await fetcher(endpoints.projects(clientId), {\n credentials: \"include\",\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n if (!res.ok) throw new Error(`projects request failed: ${res.status}`);\n const data = (await res.json()) as ApiEnvelope<{\n projectsTree?: ProjectNode[];\n organization?: { name?: string };\n }>;\n return {\n projectsTree: data.response?.data?.projectsTree ?? [],\n organizationName: data.response?.data?.organization?.name,\n };\n}\n\nexport async function fetchCredits(\n endpoints: HeaderEndpoints,\n accessToken: string,\n fetcher: Fetcher,\n): Promise<number | undefined> {\n const res = await fetcher(endpoints.credits, {\n credentials: \"include\",\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n if (!res.ok) throw new Error(`credits request failed: ${res.status}`);\n const data = (await res.json()) as { remainingCredits?: number };\n return data.remainingCredits;\n}\n\nexport async function callLogout(endpoints: HeaderEndpoints, fetcher: Fetcher): Promise<void> {\n try {\n await fetcher(endpoints.logout, { method: \"POST\", credentials: \"include\" });\n } finally {\n if (typeof window !== \"undefined\") window.location.href = \"/\";\n }\n}\n","// Persists the user's project selection across reloads (sessionStorage), tagged\n// with the client it belongs to so a stale selection from a different org is\n// discarded on re-login.\n\nconst PROJECT_KEY = \"ds-header-project\";\n\nexport interface StoredProject {\n id: string;\n name: string;\n clientId?: string;\n}\n\nexport function getStoredProject(): StoredProject | null {\n try {\n const raw = sessionStorage.getItem(PROJECT_KEY);\n return raw ? (JSON.parse(raw) as StoredProject) : null;\n } catch {\n return null;\n }\n}\n\nexport function setStoredProject(project: StoredProject): void {\n try {\n sessionStorage.setItem(PROJECT_KEY, JSON.stringify(project));\n } catch {\n // sessionStorage unavailable — degrade silently\n }\n}\n\nexport function clearStoredProject(): void {\n try {\n sessionStorage.removeItem(PROJECT_KEY);\n } catch {\n // noop\n }\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { clearStoredProject, getStoredProject, setStoredProject } from \"./storage\";\n\n// Module-level store for the current project/org selection. Module scope (not\n// React context) so a host app can read and change the selection from anywhere —\n// including components rendered outside the <Header> subtree. The Header is one\n// writer/reader; `useHeaderProject()` gives apps the same access.\n\nexport interface HeaderSelection {\n selectedProjectId: string;\n selectedProjectName: string;\n organizationName: string | undefined;\n /** Remaining credits for the logged-in user (read-only here; set by the Header). */\n credits: number | undefined;\n /** Client/org the current selection + org belong to (for cross-org invalidation). */\n clientId: string | undefined;\n}\n\nfunction initialState(): HeaderSelection {\n const stored = typeof window !== \"undefined\" ? getStoredProject() : null;\n return {\n selectedProjectId: stored?.id ?? \"\",\n selectedProjectName: stored?.name ?? \"\",\n organizationName: undefined,\n credits: undefined,\n clientId: stored?.clientId,\n };\n}\n\nlet state: HeaderSelection = initialState();\n// Stable reference for SSR / first server render.\nconst SERVER_SNAPSHOT: HeaderSelection = Object.freeze({\n selectedProjectId: \"\",\n selectedProjectName: \"\",\n organizationName: undefined,\n credits: undefined,\n clientId: undefined,\n});\n\nconst listeners = new Set<() => void>();\nfunction emit() {\n for (const listener of listeners) listener();\n}\n\nexport const headerStore = {\n subscribe(listener: () => void) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n getSnapshot(): HeaderSelection {\n return state;\n },\n getServerSnapshot(): HeaderSelection {\n return SERVER_SNAPSHOT;\n },\n\n /** Set the selected project. `name` is best-effort; the Header backfills it from the tree. */\n setProject(id: string, name = \"\", clientId?: string) {\n if (id) setStoredProject({ id, name, clientId: clientId ?? state.clientId });\n else clearStoredProject();\n state = {\n ...state,\n selectedProjectId: id,\n selectedProjectName: name,\n clientId: clientId ?? state.clientId,\n };\n emit();\n },\n\n clearProject() {\n clearStoredProject();\n state = { ...state, selectedProjectId: \"\", selectedProjectName: \"\" };\n emit();\n },\n\n setOrganization(name: string | undefined, clientId?: string) {\n state = { ...state, organizationName: name, clientId: clientId ?? state.clientId };\n emit();\n },\n\n setCredits(credits: number | undefined) {\n if (state.credits === credits) return;\n state = { ...state, credits };\n emit();\n },\n\n /** When the active client changes, drop a selection/org from the previous one. */\n reconcileClient(clientId: string) {\n if (state.clientId === clientId) return;\n if (state.clientId && state.clientId !== clientId) {\n clearStoredProject();\n state = {\n selectedProjectId: \"\",\n selectedProjectName: \"\",\n organizationName: undefined,\n credits: state.credits, // user-level — survives org switches\n clientId,\n };\n } else {\n state = { ...state, clientId };\n }\n emit();\n },\n};\n\n/** Internal: subscribe a component to the selection store. */\nexport function useHeaderStore(): HeaderSelection {\n return React.useSyncExternalStore(\n headerStore.subscribe,\n headerStore.getSnapshot,\n headerStore.getServerSnapshot,\n );\n}\n\nexport interface UseHeaderProjectResult {\n selectedProjectId: string;\n selectedProjectName: string | undefined;\n organizationName: string | undefined;\n /** Set the active project from outside the Header (by id). */\n setProject: (id: string) => void;\n /** Clear the active project (e.g. to re-prompt selection). */\n clearProject: () => void;\n}\n\n/**\n * Read the current project/org and change the project from anywhere in the app —\n * no need to be inside the <Header>. Reflects user selections made in the header\n * and updates the header when changed here.\n */\nexport function useHeaderProject(): UseHeaderProjectResult {\n const snapshot = useHeaderStore();\n return {\n selectedProjectId: snapshot.selectedProjectId,\n selectedProjectName: snapshot.selectedProjectName || undefined,\n organizationName: snapshot.organizationName,\n setProject: React.useCallback((id: string) => headerStore.setProject(id), []),\n clearProject: React.useCallback(() => headerStore.clearProject(), []),\n };\n}\n\n/** Read the logged-in user's remaining credits (read-only; the Header owns it). */\nexport function useHeaderCredits(): number | undefined {\n return useHeaderStore().credits;\n}\n","// Client-side session detection. The auth system writes a JS-readable cookie\n// `{environmentId}-sessionId` (a JWT) on the shared parent domain. We decode it\n// and check its expiry to know whether the user is logged in — no network call.\n\ninterface JwtPayload {\n exp?: number;\n [key: string]: unknown;\n}\n\n/** Read the raw session JWT from the `{environmentId}-sessionId` cookie. */\nexport function getSessionToken(environmentId: string): string | null {\n if (typeof document === \"undefined\") return null;\n const name = `${environmentId}-sessionId`;\n for (const part of document.cookie.split(\";\")) {\n const [key, ...rest] = part.trim().split(\"=\");\n if (key === name) return decodeURIComponent(rest.join(\"=\"));\n }\n return null;\n}\n\n/** Decode a JWT payload without verifying the signature (display/expiry only). */\nexport function decodeJwt(token: string): JwtPayload | null {\n try {\n const payload = token.split(\".\")[1];\n if (!payload) return null;\n const base64 = payload.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const json = atob(base64);\n return JSON.parse(json) as JwtPayload;\n } catch {\n return null;\n }\n}\n\n/** True when a valid, unexpired session cookie exists for the environment. */\nexport function isSessionValid(environmentId: string): boolean {\n const token = getSessionToken(environmentId);\n if (!token) return false;\n const payload = decodeJwt(token);\n if (!payload) return false;\n // No exp claim → treat as a non-expiring session.\n if (typeof payload.exp !== \"number\") return true;\n return payload.exp * 1000 > Date.now();\n}\n","\"use client\";\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport * as React from \"react\";\n\nimport {\n buildEndpoints,\n callLogout,\n fetchCredits,\n fetchMe,\n fetchProjects,\n fetchToken,\n} from \"./api\";\nimport { headerStore, useHeaderStore } from \"./header-store\";\nimport { findProjectName, nodeExistsInTree } from \"./project-tree\";\nimport { isSessionValid } from \"./session\";\nimport type { HeaderProps, ProjectNode } from \"./types\";\n\n/** Window event other modules can dispatch to show/hide the project dropdown. */\nexport const TOGGLE_PROJECT_DROPDOWN_EVENT = \"toggle-project-dropdown\";\nexport interface ToggleProjectDropdownDetail {\n show: boolean;\n}\n\nconst DEFAULT_STALE_TIME = 5 * 60_000;\nconst DEFAULT_GC_TIME = 10 * 60_000;\n\nexport interface GlobalHeaderState {\n /** Whether a valid session cookie exists — when false, hide all user content. */\n isAuthenticated: boolean;\n userEmail: string | undefined;\n organizationName: string | undefined;\n projectsTree: ProjectNode[];\n selectedProjectId: string;\n selectedProjectName: string | undefined;\n isProjectsLoading: boolean;\n isOrgLoading: boolean;\n /** Remaining credits for the user (undefined until loaded / when disabled). */\n credits: number | undefined;\n /** Where the credits pill links to (studio-auth `/user/activity`). */\n creditsHref: string;\n projectDropdownVisible: boolean;\n /** True when the dropdown is on, the user is in, but no project is chosen yet. */\n showOverlay: boolean;\n selectProject: (id: string) => void;\n logout: () => void;\n}\n\ntype UseGlobalHeaderArgs = Pick<\n HeaderProps,\n | \"apiBaseUrl\"\n | \"environmentId\"\n | \"clientId\"\n | \"_dangerouslyInjectAccessToken\"\n | \"showProjectDropdown\"\n | \"showProfile\"\n | \"showOrg\"\n | \"showCredits\"\n | \"endpoints\"\n | \"fetcher\"\n | \"staleTime\"\n | \"gcTime\"\n | \"onProjectChange\"\n>;\n\nexport function useGlobalHeader({\n apiBaseUrl,\n environmentId,\n clientId,\n _dangerouslyInjectAccessToken: injectedToken,\n showProjectDropdown = false,\n showProfile = false,\n showOrg = false,\n showCredits = false,\n endpoints: endpointOverrides,\n fetcher: fetcherProp,\n staleTime = DEFAULT_STALE_TIME,\n gcTime = DEFAULT_GC_TIME,\n onProjectChange,\n}: UseGlobalHeaderArgs): GlobalHeaderState {\n const fetcher = React.useMemo(\n () => fetcherProp ?? ((input: RequestInfo | URL, init?: RequestInit) => fetch(input, init)),\n [fetcherProp],\n );\n const endpoints = React.useMemo(\n () => buildEndpoints(apiBaseUrl, endpointOverrides),\n [apiBaseUrl, endpointOverrides],\n );\n\n // Read the session cookie each render (cheap); gates every network call.\n const isAuthenticated = isSessionValid(environmentId);\n\n // token → me → projects, each enabled only when the previous resolved.\n const tokenQuery = useQuery({\n queryKey: [\"ds-header\", \"token\", endpoints.token],\n queryFn: () => fetchToken(endpoints, fetcher),\n enabled: isAuthenticated && !injectedToken,\n staleTime,\n gcTime,\n });\n const token = injectedToken ?? tokenQuery.data;\n\n const wantsUser = showProfile || showProjectDropdown || showOrg;\n const meQuery = useQuery({\n queryKey: [\"ds-header\", \"me\", endpoints.me, token],\n queryFn: () => fetchMe(endpoints, token as string, fetcher),\n enabled: isAuthenticated && !!token && wantsUser,\n staleTime,\n gcTime,\n });\n\n const effectiveClientId = clientId ?? meQuery.data?.clientId;\n const wantsProjects = showProjectDropdown || showOrg;\n const projectsQuery = useQuery({\n queryKey: [\"ds-header\", \"projects\", effectiveClientId, token],\n queryFn: () => fetchProjects(endpoints, effectiveClientId as string, token as string, fetcher),\n enabled: isAuthenticated && !!token && !!effectiveClientId && wantsProjects,\n staleTime,\n gcTime,\n });\n\n // Credits — only needs the token. Always refetched on mount (staleTime 0) so a\n // page refresh shows the current balance.\n const creditsQuery = useQuery({\n queryKey: [\"ds-header\", \"credits\", endpoints.credits, token],\n queryFn: () => fetchCredits(endpoints, token as string, fetcher),\n enabled: isAuthenticated && !!token && showCredits,\n staleTime: 0,\n gcTime,\n });\n\n const projectsTree = projectsQuery.data?.projectsTree ?? [];\n const userEmail = showProfile ? meQuery.data?.email : undefined;\n const creditsHref = React.useMemo(() => {\n try {\n return new URL(\"/user/activity\", apiBaseUrl).toString();\n } catch {\n return \"/user/activity\";\n }\n }, [apiBaseUrl]);\n\n // Selection + org live in a module store so host apps can read/change them\n // from outside the header (see useHeaderProject).\n const selection = useHeaderStore();\n\n // Once the client id resolves, drop a selection/org from a different client.\n React.useEffect(() => {\n if (effectiveClientId) headerStore.reconcileClient(effectiveClientId);\n }, [effectiveClientId]);\n\n // Once projects load: publish the org name and validate/backfill the selection\n // (drop one that no longer exists; fill in its name from the tree).\n React.useEffect(() => {\n if (!projectsQuery.data) return;\n const tree = projectsQuery.data.projectsTree;\n const id = headerStore.getSnapshot().selectedProjectId;\n if (id && !nodeExistsInTree(tree, id)) {\n headerStore.clearProject();\n } else if (id) {\n const name = findProjectName(tree, id);\n if (name && name !== headerStore.getSnapshot().selectedProjectName) {\n headerStore.setProject(id, name, effectiveClientId);\n }\n }\n headerStore.setOrganization(projectsQuery.data.organizationName, effectiveClientId);\n }, [projectsQuery.data, effectiveClientId]);\n\n // Publish credits to the store so host apps can read them via useHeaderCredits.\n React.useEffect(() => {\n if (creditsQuery.data !== undefined) headerStore.setCredits(creditsQuery.data);\n }, [creditsQuery.data]);\n\n const selectProject = (id: string) => {\n const name = findProjectName(projectsTree, id) ?? \"\";\n headerStore.setProject(id, name, effectiveClientId);\n onProjectChange?.(id);\n };\n\n const logout = () => {\n headerStore.clearProject();\n void callLogout(endpoints, fetcher);\n };\n\n // Visibility: declarative from the prop, overridable at runtime via the event.\n const [projectDropdownVisible, setProjectDropdownVisible] = React.useState(showProjectDropdown);\n React.useEffect(() => setProjectDropdownVisible(showProjectDropdown), [showProjectDropdown]);\n React.useEffect(() => {\n const handler = (e: Event) => {\n setProjectDropdownVisible((e as CustomEvent<ToggleProjectDropdownDetail>).detail.show);\n };\n window.addEventListener(TOGGLE_PROJECT_DROPDOWN_EVENT, handler);\n return () => window.removeEventListener(TOGGLE_PROJECT_DROPDOWN_EVENT, handler);\n }, []);\n\n const isProjectsLoading = projectsQuery.isFetching && !projectsQuery.data;\n\n return {\n isAuthenticated,\n userEmail,\n organizationName: selection.organizationName,\n projectsTree,\n selectedProjectId: selection.selectedProjectId,\n selectedProjectName: selection.selectedProjectName || undefined,\n isProjectsLoading,\n isOrgLoading: showOrg && isProjectsLoading,\n credits: selection.credits,\n creditsHref,\n projectDropdownVisible,\n showOverlay: isAuthenticated && projectDropdownVisible && !selection.selectedProjectId,\n selectProject,\n logout,\n };\n}\n","\"use client\";\n\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { FolderOpen, LogOut, MessageSquareShare, Moon, Sun, X } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { Avatar, AvatarFallback } from \"@/primitives/Avatar\";\nimport { Button } from \"@/primitives/Button\";\nimport { Credits } from \"@/primitives/Credits\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"@/primitives/DropdownMenu\";\nimport { Logo } from \"@/primitives/Logo\";\nimport { Skeleton } from \"@/primitives/Skeleton\";\nimport { type ThemeProduct, useTheme } from \"@/primitives/ThemeProvider\";\nimport { cn } from \"@/utils\";\nimport { ProjectPicker } from \"./ProjectPicker\";\nimport { DEFAULT_LABELS } from \"./labels\";\nimport type { HeaderProps, ProjectNode } from \"./types\";\nimport { useGlobalHeader } from \"./use-global-header\";\n\n// Where each product logo links to.\nconst LOGO_HREF: Record<ThemeProduct, string> = {\n psai: \"https://sapientaiproducts.com/\",\n slingshot: \"https://sapientaiproducts.com/slingshot\",\n sustain: \"https://www.publicissapient.com/\",\n bodhi: \"https://sapientaiproducts.com/bodhi\",\n};\n\nconst PILL = \"flex h-9 items-center gap-1.5 rounded-full border bg-card px-4 text-sm\";\n\n// ── Presentational parts (props-driven; Storybook/VR-able) ──────────────────\n\n/** The header bar shell — a sticky glass strip. */\nfunction HeaderBar({ className, ...props }: React.ComponentProps<\"header\">) {\n return (\n <header\n data-slot=\"header\"\n className={cn(\n \"sticky top-4 z-10 mt-4 flex h-16 items-center gap-1 rounded-2xl border border-border/50 px-6 shadow-sm\",\n \"bg-[var(--glass-light)] backdrop-blur-[var(--glass-blur)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Product logo linking to its home, with a Suspense-safe fallback. */\nfunction HeaderLogo({ brand }: { brand: ThemeProduct }) {\n return (\n <a href={LOGO_HREF[brand]} aria-label=\"Go to product home\" data-slot=\"header-logo\">\n <Logo brand={brand} className=\"h-8 w-auto\" />\n </a>\n );\n}\n\n/** Read-only organisation pill. */\nfunction OrgPill({ name, loading }: { name?: string; loading?: boolean }) {\n if (loading && !name) {\n return (\n <div className={cn(PILL, \"ml-3\")} data-slot=\"header-org\">\n <span className=\"shrink-0 text-muted-foreground\">{DEFAULT_LABELS.orgLabel}:</span>\n <Skeleton className=\"h-4 w-24\" />\n </div>\n );\n }\n if (!name) return null;\n return (\n <div className={cn(PILL, \"ml-3 select-none\")} title={name} data-slot=\"header-org\">\n <span className=\"shrink-0 text-muted-foreground\">{DEFAULT_LABELS.orgLabel}:</span>\n <span className=\"max-w-36 truncate font-medium\">{name}</span>\n </div>\n );\n}\n\n/** Light/dark toggle — defers to ThemeProvider. */\nfunction ThemeToggle() {\n const { theme, toggleTheme } = useTheme();\n return (\n <Button variant=\"ghost\" size=\"icon\" onClick={toggleTheme} aria-label=\"Toggle theme\">\n {theme === \"light\" ? <Moon className=\"size-4\" /> : <Sun className=\"size-4\" />}\n </Button>\n );\n}\n\n/** Profile menu — avatar trigger with email + logout. */\nfunction ProfileMenu({ email, onLogout }: { email?: string; onLogout: () => void }) {\n const initial = email?.trim().charAt(0).toUpperCase() || \"?\";\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" aria-label={DEFAULT_LABELS.profileMenuLabel}>\n <Avatar className=\"size-7\">\n <AvatarFallback>{initial}</AvatarFallback>\n </Avatar>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" sideOffset={8} className=\"min-w-44\">\n {email && (\n <>\n <DropdownMenuLabel className=\"truncate font-normal text-muted-foreground\">\n {email}\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n </>\n )}\n <DropdownMenuItem onSelect={onLogout} variant=\"destructive\">\n <LogOut />\n {DEFAULT_LABELS.logoutLabel}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nexport { HeaderBar, HeaderLogo, OrgPill, ThemeToggle, ProfileMenu };\n\n// ── Wired Header ─────────────────────────────────────────────────────────────\n\n// Internal singleton client so the header is drop-in (no app setup) while still\n// sharing its cache across mounts/navigation.\nlet sharedClient: QueryClient | undefined;\nfunction getQueryClient(): QueryClient {\n sharedClient ??= new QueryClient({\n defaultOptions: { queries: { retry: 1, refetchOnWindowFocus: false } },\n });\n return sharedClient;\n}\n\n/** Drop-in global header. Must be rendered inside a <ThemeProvider>. */\nexport function Header(props: HeaderProps) {\n return (\n <QueryClientProvider client={getQueryClient()}>\n <HeaderInner {...props} />\n </QueryClientProvider>\n );\n}\n\nfunction HeaderInner({\n logoType,\n showOrg = false,\n showProjectDropdown = false,\n showProfile = false,\n showThemeSwitcher = false,\n showCredits = false,\n pageTitle,\n feedbackUrl,\n logoAddon,\n className,\n onCloseProjectOverlay,\n ...rest\n}: HeaderProps) {\n const { product } = useTheme();\n const brand = logoType ?? product;\n const state = useGlobalHeader({\n showOrg,\n showProjectDropdown,\n showProfile,\n showCredits,\n ...rest,\n });\n\n // Logged-out users see no user content (project/org/profile/credits).\n const showProjectUi = showProjectDropdown && state.isAuthenticated;\n const showOrgUi = showOrg && state.isAuthenticated;\n const showProfileUi = showProfile && state.isAuthenticated;\n const showCreditsUi = showCredits && state.isAuthenticated && state.credits !== undefined;\n const showActions = showThemeSwitcher || showProfileUi || showCreditsUi || !!feedbackUrl;\n\n return (\n <>\n <HeaderBar className={className}>\n <HeaderLogo brand={brand} />\n {/* Page title — 20px (gap-5) from the logo. */}\n {pageTitle && (\n <span data-slot=\"header-title\" className=\"ml-5 font-semibold text-foreground text-sm\">\n {pageTitle}\n </span>\n )}\n {logoAddon}\n\n {showOrgUi && <OrgPill name={state.organizationName} loading={state.isOrgLoading} />}\n\n {showProjectUi && state.projectDropdownVisible && (\n <div className=\"ml-2\">\n <ProjectPicker\n projectsTree={state.projectsTree}\n selectedProjectId={state.selectedProjectId}\n selectedProjectName={state.selectedProjectName}\n onSelect={state.selectProject}\n projectLabel={DEFAULT_LABELS.projectLabel}\n projectPlaceholder={DEFAULT_LABELS.projectPlaceholder}\n searchPlaceholder={DEFAULT_LABELS.searchPlaceholder}\n emptyStateText={DEFAULT_LABELS.emptyStateText}\n isLoading={state.isProjectsLoading}\n />\n </div>\n )}\n\n {showActions && (\n <div className=\"ml-auto flex items-center gap-2\">\n {feedbackUrl && (\n <Button variant=\"ghost\" size=\"icon\" asChild>\n <a\n href={feedbackUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label=\"Share feedback\"\n >\n <MessageSquareShare className=\"size-4\" />\n </a>\n </Button>\n )}\n {showThemeSwitcher && <ThemeToggle />}\n {showCreditsUi && state.credits !== undefined && (\n <a\n href={state.creditsHref}\n aria-label=\"View credit activity\"\n className=\"rounded-full outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n >\n <Credits value={state.credits} />\n </a>\n )}\n {showProfileUi && <ProfileMenu email={state.userEmail} onLogout={state.logout} />}\n </div>\n )}\n </HeaderBar>\n\n {showProjectUi && state.showOverlay && (\n <ProjectOverlay\n organizationName={state.organizationName}\n projectsTree={state.projectsTree}\n selectedProjectId={state.selectedProjectId}\n onSelect={state.selectProject}\n isLoading={state.isProjectsLoading}\n onClose={onCloseProjectOverlay}\n />\n )}\n </>\n );\n}\n\n// First-run blocking overlay prompting a project selection.\nfunction ProjectOverlay({\n organizationName,\n projectsTree,\n selectedProjectId,\n onSelect,\n isLoading,\n onClose,\n}: {\n organizationName?: string;\n projectsTree: ProjectNode[];\n selectedProjectId: string;\n onSelect: (id: string) => void;\n isLoading: boolean;\n onClose?: () => void;\n}) {\n return (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={DEFAULT_LABELS.overlayTitle}\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm\"\n >\n <div className=\"relative mx-4 flex w-full max-w-md flex-col items-center gap-6 rounded-2xl border bg-card p-8 text-card-foreground shadow-2xl\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={onClose ?? (() => window.history.back())}\n className=\"absolute top-4 right-4\"\n aria-label=\"Close\"\n >\n <X className=\"size-5\" />\n </Button>\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <div className=\"rounded-full bg-primary/10 p-4\">\n <FolderOpen className=\"size-8 text-primary\" />\n </div>\n <h2 className=\"font-semibold text-foreground text-xl\">{DEFAULT_LABELS.overlayTitle}</h2>\n <p className=\"text-muted-foreground text-sm\">{DEFAULT_LABELS.overlayDescription}</p>\n </div>\n <div className=\"flex w-full justify-center gap-2\">\n {organizationName && (\n <div className={cn(PILL, \"select-none\")} title={organizationName}>\n <span className=\"shrink-0 text-muted-foreground\">{DEFAULT_LABELS.orgLabel}:</span>\n <span className=\"max-w-52 truncate font-medium\">{organizationName}</span>\n </div>\n )}\n <ProjectPicker\n projectsTree={projectsTree}\n selectedProjectId={selectedProjectId}\n onSelect={onSelect}\n projectLabel={DEFAULT_LABELS.projectLabel}\n projectPlaceholder={DEFAULT_LABELS.projectPlaceholder}\n searchPlaceholder={DEFAULT_LABELS.searchPlaceholder}\n emptyStateText={DEFAULT_LABELS.emptyStateText}\n isLoading={isLoading}\n />\n </div>\n </div>\n </div>\n );\n}\n","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 (no JS state). */\n interactive?: boolean;\n};\n\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-2xl border bg-card\",\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\"> & { alt: string };\n\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.\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.\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\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).\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.\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\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","import type * as React from \"react\";\n\nimport { Card } from \"@/primitives/Card\";\nimport { Heading } from \"@/primitives/Heading\";\nimport { cn } from \"@/utils\";\n\n// SectionCard — a large glass \"section that contains cards\": a glass Card panel\n// with a header row (title + optional right-aligned action) and a body slot for\n// arbitrary children (e.g. a grid of cards or a MediaObjectGroup).\ntype SectionCardProps = Omit<React.ComponentProps<\"div\">, \"title\"> & {\n /** Section title rendered in the header. */\n title: React.ReactNode;\n /** Optional right-aligned action slot (e.g. a Button). */\n action?: React.ReactNode;\n};\n\nfunction SectionCard({ title, action, className, children, ...props }: SectionCardProps) {\n return (\n <Card\n data-slot=\"section-card\"\n variant=\"glass\"\n tint=\"light\"\n className={cn(\"gap-5 rounded-2xl p-5 sm:p-6\", className)}\n {...props}\n >\n <div data-slot=\"section-card-header\" className=\"flex items-center justify-between gap-3\">\n <Heading data-slot=\"section-card-title\" size=\"3\">\n {title}\n </Heading>\n {action ? <div data-slot=\"section-card-action\">{action}</div> : null}\n </div>\n <div data-slot=\"section-card-body\">{children}</div>\n </Card>\n );\n}\n\nexport { SectionCard, type SectionCardProps };\n","import type * as React from \"react\";\n\nimport { Stack } from \"@/layouts/Stack\";\nimport { Heading, type HeadingProps } from \"@/primitives/Heading\";\nimport { Text } from \"@/primitives/Text\";\nimport { cn } from \"@/utils\";\n\n// SectionHeading — a hero/section title block composed from the foundation\n// primitives: an optional eyebrow (caption Text), a Heading, and an optional\n// subtitle (large muted Text). Centered by default. Covers the landing hero,\n// the gradient login heading, and (via composition) stacked-heading layouts.\ntype SectionHeadingProps = Omit<React.ComponentProps<\"div\">, \"title\"> & {\n /** The main heading content. */\n title: React.ReactNode;\n /** Optional supporting copy rendered below the heading. */\n subtitle?: React.ReactNode;\n /** Optional small label rendered above the heading. */\n eyebrow?: React.ReactNode;\n /** Horizontal alignment of the block. Defaults to `center`. */\n align?: \"center\" | \"left\";\n /** Render the title with the brand gradient fill. */\n gradient?: boolean;\n /** Visual size of the title (Heading scale). Defaults to `1`. */\n titleSize?: HeadingProps[\"size\"];\n /** Semantic element for the title. Defaults to `h2`. */\n titleAs?: React.ElementType;\n};\n\nfunction SectionHeading({\n title,\n subtitle,\n eyebrow,\n align = \"center\",\n gradient = false,\n titleSize = \"1\",\n titleAs = \"h2\",\n className,\n ...props\n}: SectionHeadingProps) {\n return (\n <Stack\n data-slot=\"section-heading\"\n gap=\"sm\"\n align={align === \"center\" ? \"center\" : \"start\"}\n className={cn(align === \"center\" && \"text-center\", className)}\n {...props}\n >\n {eyebrow ? (\n <Text data-slot=\"section-heading-eyebrow\" size=\"caption\" variant=\"muted\">\n {eyebrow}\n </Text>\n ) : null}\n <Heading\n data-slot=\"section-heading-title\"\n as={titleAs}\n size={titleSize}\n gradient={gradient}\n align={align}\n >\n {title}\n </Heading>\n {subtitle ? (\n <Text data-slot=\"section-heading-subtitle\" size=\"large\" variant=\"muted\" align={align}>\n {subtitle}\n </Text>\n ) : null}\n </Stack>\n );\n}\n\nexport { SectionHeading, type SectionHeadingProps };\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/patterns/DataTable/DataTable.tsx","../../src/patterns/Footer/Footer.tsx","../../src/patterns/Header/types.ts","../../src/patterns/Header/Header.tsx","../../src/patterns/Header/ProjectPicker.tsx","../../src/patterns/Header/use-global-header.ts","../../src/patterns/Header/header-store.ts","../../src/patterns/Header/session.ts","../../src/patterns/Header/api.ts","../../src/patterns/Header/labels.ts","../../src/patterns/MediaObject/MediaObject.tsx","../../src/patterns/SectionCard/SectionCard.tsx","../../src/patterns/SectionHeading/SectionHeading.tsx"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/patterns/DataTable/DataTable.tsx","../../src/patterns/Footer/Footer.tsx","../../src/patterns/Header/types.ts","../../src/patterns/Header/Header.tsx","../../src/patterns/Header/ProjectPicker.tsx","../../src/patterns/Header/use-global-header.ts","../../src/patterns/Header/header-store.ts","../../src/patterns/Header/session.ts","../../src/patterns/Header/api.ts","../../src/patterns/Header/labels.ts","../../src/patterns/MediaObject/MediaObject.tsx","../../src/patterns/SectionCard/SectionCard.tsx","../../src/patterns/SectionHeading/SectionHeading.tsx"],"mappings":"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"}
|