@psnext/design-system 1.0.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 +103 -90
- 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/Logo.cjs +813 -0
- package/dist/Logo.cjs.map +1 -0
- package/dist/Logo.js +808 -0
- 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/chunk.cjs +28 -0
- 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/contexts/index.cjs +0 -60
- package/dist/contexts/index.d.cts +1 -23
- package/dist/contexts/index.d.ts +1 -23
- package/dist/contexts/index.js +1 -58
- package/dist/index.cjs +414 -272
- package/dist/index.d.cts +17 -1424
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +17 -1424
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +72 -7
- 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 +41 -13
- package/dist/index2.d.cts.map +1 -1
- package/dist/index2.d.ts +41 -13
- package/dist/index2.d.ts.map +1 -1
- 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/layouts/Stack/index.cjs +56 -0
- 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/layouts/Stack/index.js +55 -0
- 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 -12
- package/dist/layouts/index.d.cts +5 -133
- package/dist/layouts/index.d.ts +5 -133
- package/dist/layouts/index.js +5 -2
- 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 -7374
- package/dist/patterns/index.d.cts +7 -418
- package/dist/patterns/index.d.ts +7 -418
- package/dist/patterns/index.js +7 -7344
- 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 -255
- package/dist/primitives/index.d.cts +65 -2
- package/dist/primitives/index.d.ts +65 -2
- package/dist/primitives/index.js +65 -5
- package/dist/styles/base.css +113 -0
- package/dist/styles/glass.css +75 -0
- package/dist/styles/index.css +43 -23
- package/dist/styles/semantic.css +167 -0
- package/dist/styles/theme.css +54 -24
- package/dist/styles/tokens/alpha.css +39 -0
- package/dist/styles/tokens/border-radius.css +17 -0
- package/dist/styles/tokens/chart-colors-dark.css +18 -0
- package/dist/styles/tokens/chart-colors-light.css +18 -0
- package/dist/styles/tokens/colors.css +251 -0
- package/dist/styles/tokens/mode-dark.css +101 -0
- package/dist/styles/tokens/mode-light.css +101 -0
- package/dist/styles/tokens/shadows.css +14 -0
- package/dist/styles/tokens/spacing.css +44 -0
- package/dist/styles/tokens/theme-bodhi.css +35 -0
- package/dist/styles/tokens/theme-slingshot.css +35 -0
- package/dist/styles/tokens/theme-sustain.css +35 -0
- package/dist/styles/tokens/typography.css +83 -0
- package/package.json +33 -40
- package/dist/AiChatPanel.cjs +0 -1603
- package/dist/AiChatPanel.cjs.map +0 -1
- package/dist/AiChatPanel.js +0 -1526
- package/dist/AiChatPanel.js.map +0 -1
- package/dist/BodhiLogo.cjs +0 -240
- package/dist/BodhiLogo.cjs.map +0 -1
- package/dist/BodhiLogo.js +0 -194
- package/dist/BodhiLogo.js.map +0 -1
- package/dist/Skeleton.cjs +0 -19
- package/dist/Skeleton.cjs.map +0 -1
- package/dist/Skeleton.js +0 -14
- package/dist/Skeleton.js.map +0 -1
- package/dist/SustainLogo.cjs +0 -415
- package/dist/SustainLogo.cjs.map +0 -1
- package/dist/SustainLogo.js +0 -378
- package/dist/SustainLogo.js.map +0 -1
- package/dist/contexts/index.cjs.map +0 -1
- package/dist/contexts/index.d.cts.map +0 -1
- package/dist/contexts/index.d.ts.map +0 -1
- package/dist/contexts/index.js.map +0 -1
- package/dist/layouts/index.d.cts.map +0 -1
- package/dist/layouts/index.d.ts.map +0 -1
- package/dist/layouts.cjs +0 -3245
- package/dist/layouts.cjs.map +0 -1
- package/dist/layouts.js +0 -3180
- package/dist/layouts.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 -4292
- package/dist/primitives.cjs.map +0 -1
- package/dist/primitives.js +0 -2807
- package/dist/primitives.js.map +0 -1
- package/dist/styles/base/colors.css +0 -300
- package/dist/styles/base/component-tokens.css +0 -240
- package/dist/styles/base/elevation.css +0 -7
- package/dist/styles/base/fonts.css +0 -14
- package/dist/styles/base/global.css +0 -305
- package/dist/styles/base/radius.css +0 -22
- package/dist/styles/base/semantic-aliases.css +0 -53
- package/dist/styles/base/spacing.css +0 -33
- package/dist/styles/base/typography.css +0 -48
- package/dist/styles/generated/bodhi-vars.css +0 -34
- package/dist/styles/generated/dark.css +0 -87
- package/dist/styles/generated/light.css +0 -87
- package/dist/styles/generated/slingshot-vars.css +0 -34
- package/dist/styles/generated/sustain-vars.css +0 -34
- package/dist/styles/themes/bodhi.css +0 -166
- package/dist/styles/themes/slingshot.css +0 -144
- package/dist/styles/themes/sustain.css +0 -130
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["drawerSvgPaths","step2SvgPaths","labelStyle","bodyStyle","CheckboxIcon","labelStyle","bodyStyle","FigmaIcon","MOCK_PROJECTS","labelStyle","bodyStyle","svgPaths","AVAILABLE_PLATFORMS","MOCK_PROJECTS","PLATFORM_ROLES","ALWAYS_PRESENT_PLATFORMS","labelStyle","bodyStyle","CheckboxIcon","PortaledDropdown","SearchableDropdown","SimpleDropdown","createEmptyRow"],"sources":["../../src/patterns/AddContextDrawer/svg-594k4917k1.ts","../../src/patterns/AddContextDrawer/svg-nb368vndrm.ts","../../src/patterns/AddContextDrawer/AddContextDrawer.tsx","../../src/patterns/InfoBanner/InfoBanner.tsx","../../src/patterns/RichCheckboxGroup/RichCheckboxGroup.tsx","../../src/patterns/TabGroup/TabGroup.tsx","../../src/patterns/AddNewRoleDrawer/AddNewRoleDrawer.tsx","../../src/patterns/AddPortfolioDrawer/AddPortfolioDrawer.tsx","../../src/patterns/AlertDialog/AlertDialog.tsx","../../src/patterns/ResourceTile/svg-99xdbdnkzc.ts","../../src/patterns/ResourceTile/ResourceTile.tsx","../../src/patterns/CategorySection/CategorySection.tsx","../../src/patterns/IconButton/IconButton.tsx","../../src/patterns/InviteUsersDrawer/InviteUsersDrawer.tsx","../../src/patterns/PageTransition/PageTransition.tsx","../../src/patterns/ProjectBulkUploadDrawer/ProjectBulkUploadDrawer.tsx","../../src/patterns/SkeletonLayouts/SkeletonLayouts.tsx","../../src/patterns/ViewEditUserDrawer/ViewEditUserDrawer.tsx"],"sourcesContent":["export default {\n p11b77800:\n \"M10.625 6.66667C10.9702 6.66667 11.25 6.94649 11.25 7.29167C11.25 7.63684 10.9702 7.91667 10.625 7.91667H3.95833C3.61316 7.91667 3.33333 7.63684 3.33333 7.29167C3.33333 6.94649 3.61316 6.66667 3.95833 6.66667H10.625Z\",\n p12b7c400:\n \"M25.0353 11.3671C25.7847 12.1326 25.7847 13.3723 25.0353 14.1359C24.2859 14.8994 23.0722 14.9014 22.3247 14.1359C21.5771 13.3704 21.5753 12.1307 22.3247 11.3671C23.0741 10.6017 24.2878 10.6017 25.0353 11.3671Z\",\n p13a81400:\n \"M5.83333 12.9167H3.54167C2.93388 12.9167 2.35116 13.1583 1.92139 13.5881C1.49162 14.0178 1.25 14.6005 1.25 15.2083C1.25 15.8161 1.49162 16.3988 1.92139 16.8286C2.35116 17.2584 2.93388 17.5 3.54167 17.5C4.14946 17.5 4.73218 17.2584 5.16195 16.8286C5.59172 16.3988 5.83333 15.8161 5.83333 15.2083V12.9167ZM7.08333 15.2083C7.08333 16.1476 6.70993 17.0482 6.04574 17.7124C5.38154 18.3766 4.48097 18.75 3.54167 18.75C2.60236 18.75 1.70179 18.3766 1.0376 17.7124C0.373407 17.0482 0 16.1476 0 15.2083C0 14.269 0.373407 13.3685 1.0376 12.7043C1.70179 12.0401 2.60236 11.6667 3.54167 11.6667H6.45833C6.80351 11.6667 7.08333 11.9465 7.08333 12.2917V15.2083Z\",\n p15071f00:\n \"M8.00803 7.66341C8.04469 7.27086 8.20705 6.89881 8.47352 6.60417L13.2893 1.27799C13.3106 1.25416 13.3246 1.22432 13.3296 1.19271C13.3347 1.16099 13.3303 1.12832 13.3173 1.09896C13.3042 1.06964 13.2829 1.04489 13.2561 1.02734C13.2425 1.0185 13.2278 1.01172 13.2125 1.00716L13.1656 1H1.16688C1.13465 1.00001 1.10276 1.00912 1.07574 1.02669C1.04876 1.04426 1.02761 1.06954 1.01454 1.09896C1.00148 1.12835 0.997146 1.16094 1.00217 1.19271C1.00721 1.22432 1.02119 1.25415 1.04253 1.27799L5.85959 6.60417C6.16426 6.94101 6.33334 7.37914 6.33355 7.83333V11.8333C6.33353 11.8643 6.34201 11.8949 6.35829 11.9212C6.37452 11.9475 6.39775 11.9686 6.42534 11.9824L7.75803 12.6491C7.7834 12.6618 7.81237 12.6679 7.84071 12.6667C7.86906 12.6654 7.89664 12.6568 7.92079 12.6419C7.94494 12.627 7.96491 12.6062 7.97873 12.5814C7.99256 12.5566 8.00023 12.5284 8.00021 12.5V7.83333L8.00803 7.66341ZM9.00021 12.5L8.99045 12.6478C8.9717 12.7949 8.92499 12.9374 8.85243 13.0677C8.75565 13.2415 8.61598 13.3882 8.44683 13.4928C8.2778 13.5973 8.0848 13.657 7.88628 13.666C7.68763 13.675 7.48996 13.6325 7.31206 13.5436L5.97808 12.877C5.78433 12.78 5.62125 12.6309 5.50738 12.4466C5.40774 12.2853 5.34917 12.1024 5.33615 11.9141L5.33355 11.8333V7.83333C5.33342 7.6528 5.27426 7.47806 5.16688 7.33464L5.11805 7.27474L0.300996 1.94857C0.149827 1.78107 0.0500488 1.57307 0.0145376 1.35026C-0.0209584 1.12747 0.00887152 0.898878 0.100475 0.692708C0.192063 0.486635 0.341778 0.311764 0.530814 0.188802C0.719905 0.065853 0.940685 0.000125922 1.16623 0H13.1675L13.2522 0.00325521C13.4479 0.0179044 13.6372 0.0817699 13.8023 0.189453C13.9911 0.312619 14.1407 0.48791 14.232 0.69401C14.3233 0.900086 14.3529 1.12835 14.3173 1.35091C14.2817 1.57349 14.1825 1.78123 14.0315 1.94857L9.21571 7.27474C9.0772 7.42781 9.00036 7.62691 9.00021 7.83333V12.5Z\",\n p176ffd80:\n \"M34.6619 2.22648C33.9384 2.22648 33.2538 2.5281 32.7581 3.05942V2.22648H32.0224V8.84232H32.7581V4.92419C32.7832 3.85861 33.6367 2.99117 34.6619 2.99117C35.687 2.99117 36.552 3.85714 36.552 4.92198V8.84232H37.3006V4.92198C37.3006 3.43516 36.1166 2.22574 34.6619 2.22574\",\n p198d14a0:\n \"M4.58649 12.7439C4.85661 12.0799 5.60227 11.7657 6.25413 12.0397C6.90412 12.3156 7.21176 13.0773 6.94164 13.7412C6.67151 14.4051 5.92586 14.7193 5.27587 14.4434C4.62588 14.1675 4.31824 13.4059 4.58649 12.7419\",\n p19a9df00:\n \"M4.75708 3.5C4.75708 2.65314 4.98412 1.82984 5.40357 1.11068C4.70712 1.25236 4.04133 1.52838 3.44458 1.92708C2.54012 2.53142 1.83483 3.3902 1.41854 4.39518C1.00228 5.40014 0.893205 6.50606 1.10539 7.57292C1.31761 8.63981 1.84141 9.62013 2.6106 10.3893C3.37979 11.1585 4.36011 11.6823 5.42701 11.8945C6.49387 12.1067 7.59978 11.9976 8.60474 11.5814C9.60972 11.1651 10.4685 10.4598 11.0728 9.55534C11.4716 8.95846 11.7469 8.29233 11.8886 7.5957C11.1695 8.01507 10.3467 8.24284 9.49992 8.24284C8.2421 8.24284 7.03582 7.74293 6.14641 6.85352C5.25699 5.9641 4.75708 4.75783 4.75708 3.5ZM5.75708 3.5C5.75708 4.49261 6.15156 5.4446 6.85344 6.14648C7.55532 6.84836 8.50731 7.24284 9.49992 7.24284C10.4925 7.24284 11.4445 6.84836 12.1464 6.14648C12.2894 6.0035 12.5045 5.9604 12.6913 6.03776C12.8782 6.11515 12.9999 6.29777 12.9999 6.5C12.9999 7.78558 12.6185 9.04241 11.9042 10.1113C11.19 11.1801 10.1751 12.0133 8.98755 12.5052C7.79983 12.9972 6.49257 13.1258 5.23169 12.875C3.97088 12.6242 2.81257 12.0054 1.90357 11.0964C0.994566 10.1874 0.375747 9.02905 0.124923 7.76823C-0.125881 6.50735 0.00274539 5.20009 0.494715 4.01237C0.986662 2.8248 1.81982 1.80989 2.8886 1.0957C3.95751 0.381474 5.21435 5.02751e-07 6.49992 0C6.70215 0 6.88477 0.121757 6.96216 0.308594C7.03952 0.495419 6.99643 0.710529 6.85344 0.853516C6.15156 1.5554 5.75708 2.50739 5.75708 3.5Z\",\n p19b24080:\n \"M72.0375 22.6361C72.0375 24.4252 73.4068 25.824 75.136 25.824C76.8652 25.824 78.2568 24.4018 78.2568 22.6823C78.2568 20.9628 76.8422 19.5406 75.136 19.5406C73.4298 19.5406 72.0375 20.9856 72.0375 22.6368V22.6361ZM69.1897 22.5898C69.1897 19.5751 71.521 16.6961 75.1583 16.6961C78.4091 16.6961 81.0823 19.1729 81.0823 22.6588C81.0823 25.9084 78.7733 28.6443 75.0915 28.6443C71.4096 28.6443 69.1904 25.6046 69.1904 22.5898H69.1897Z\",\n p19e54a80:\n \"M7.23372 0.00260417C7.36902 0.0136346 7.49948 0.0578751 7.61393 0.130859L7.66992 0.169271L7.72201 0.212891C7.82297 0.303374 7.90022 0.417111 7.94727 0.544271L7.96875 0.608724L7.97135 0.61849L9.02539 4.70833L9.0599 4.81445C9.10166 4.91716 9.16391 5.01092 9.24284 5.08984C9.34808 5.19505 9.47962 5.27009 9.6237 5.30729L13.7135 6.36133L13.722 6.36328C13.8758 6.40571 14.0137 6.49147 14.1198 6.60938L14.1634 6.66211L14.2025 6.7181C14.2878 6.85166 14.334 7.00722 14.334 7.16667C14.334 7.34907 14.2739 7.52676 14.1634 7.67188C14.0529 7.81692 13.8978 7.92155 13.722 7.97005L13.7135 7.97266L9.6237 9.02604C9.47954 9.06325 9.34811 9.13887 9.24284 9.24414C9.1376 9.3494 9.06259 9.48088 9.02539 9.625L7.9707 13.7148C7.96988 13.718 7.96898 13.7214 7.9681 13.7246C7.91912 13.8996 7.81401 14.0542 7.66927 14.1641C7.52439 14.274 7.34722 14.334 7.16536 14.334C6.9835 14.334 6.80635 14.274 6.66146 14.1641C6.51669 14.0542 6.41162 13.8997 6.36263 13.7246C6.36174 13.7214 6.36086 13.7181 6.36003 13.7148L5.30599 9.625C5.26879 9.48089 5.19376 9.3494 5.08854 9.24414C4.98329 9.13889 4.85181 9.06326 4.70768 9.02604L0.617188 7.97135C0.613396 7.97037 0.609236 7.96982 0.605469 7.96875C0.431153 7.91922 0.277895 7.81384 0.16862 7.66927C0.0592919 7.52459 0 7.34801 0 7.16667C3.60642e-05 6.98543 0.0593814 6.80933 0.16862 6.66471L0.211589 6.61198C0.31652 6.49439 0.452992 6.40858 0.605469 6.36523L0.617188 6.36198L4.70768 5.30664C4.85175 5.26946 4.98329 5.19437 5.08854 5.08919C5.19381 4.98399 5.26872 4.85242 5.30599 4.70833L6.36068 0.61849C6.36152 0.615229 6.36237 0.611967 6.36328 0.608724C6.41228 0.433624 6.51726 0.279179 6.66211 0.169271L6.7181 0.130859C6.85154 0.0457758 7.00682 0 7.16602 0L7.23372 0.00260417ZM6.27474 4.95833L6.27409 4.95898C6.1921 5.27578 6.02699 5.56487 5.79557 5.79622C5.56392 6.02771 5.27415 6.19298 4.95703 6.27474L1.50065 7.16602L4.95703 8.05794C5.27426 8.13978 5.56391 8.30545 5.79557 8.53711C6.02714 8.76871 6.1929 9.05789 6.27474 9.375L7.16536 12.8314L8.05664 9.375C8.13849 9.05787 8.30423 8.76871 8.53581 8.53711C8.76747 8.30545 9.05712 8.13978 9.37435 8.05794L12.832 7.16667L9.37435 6.27539C9.05716 6.19356 8.76745 6.02848 8.53581 5.79688C8.33312 5.59419 8.18079 5.34724 8.09115 5.07617L8.05664 4.95833L7.16536 1.50195L6.27474 4.95833Z\",\n p19f95700:\n \"M6.66685 1.87518C6.66685 1.75157 6.63054 1.63047 6.56187 1.52769C6.49319 1.42492 6.3953 1.34468 6.28111 1.29738C6.16692 1.2501 6.04099 1.23828 5.91978 1.26239C5.79861 1.28653 5.68732 1.34592 5.59995 1.43329C5.51259 1.52065 5.45319 1.63194 5.42906 1.75311C5.40494 1.87433 5.41677 2.00025 5.46405 2.11444C5.51135 2.22864 5.59158 2.32653 5.69435 2.3952C5.79714 2.46388 5.91824 2.50018 6.04185 2.50018H6.66685V1.87518ZM7.91685 3.12518C7.91685 3.47036 7.63703 3.75018 7.29185 3.75018H6.04185C5.67106 3.75018 5.3085 3.6404 5.00018 3.43443C4.69187 3.22842 4.45118 2.93553 4.30926 2.59296C4.1674 2.25048 4.13042 1.87337 4.20266 1.50978C4.275 1.14607 4.45394 0.811722 4.71616 0.549498C4.97839 0.287275 5.31274 0.108337 5.67645 0.0359892C6.04003 -0.0362449 6.41714 0.000738128 6.75962 0.142597C7.10219 0.284517 7.39508 0.525202 7.60109 0.833515C7.80707 1.14183 7.91685 1.50439 7.91685 1.87518V3.12518Z\",\n p19fac170:\n \"M13.8323 2.00017C14.1085 2.00017 14.3323 2.22402 14.3323 2.50017C14.3323 2.77631 14.1085 3.00017 13.8323 3.00017H11.1657C10.8895 3.00017 10.6657 2.77631 10.6657 2.50017C10.6657 2.22402 10.8895 2.00017 11.1657 2.00017H13.8323Z\",\n p1b548e00:\n \"M7.50018 11.8752C7.50018 11.53 7.22036 11.2502 6.87518 11.2502C6.53 11.2502 6.25018 11.53 6.25018 11.8752V16.0418C6.25018 16.387 6.53 16.6668 6.87518 16.6668C7.22036 16.6668 7.50018 16.387 7.50018 16.0418V11.8752ZM8.75018 16.0418C8.75018 17.0774 7.91072 17.9168 6.87518 17.9168C5.83965 17.9168 5.00018 17.0774 5.00018 16.0418V11.8752C5.00018 10.8396 5.83965 10.0002 6.87518 10.0002C7.91072 10.0002 8.75018 10.8396 8.75018 11.8752V16.0418Z\",\n p1c4b9e80:\n \"M13.558 7.41602C13.7884 7.26395 14.0986 7.32752 14.2507 7.55794C14.4027 7.78838 14.3392 8.09853 14.1087 8.25065C12.0489 9.61057 9.63497 10.3353 7.16669 10.3353C4.69841 10.3353 2.28449 9.61057 0.224633 8.25065C-0.00578628 8.09853 -0.0693641 7.78838 0.082706 7.55794C0.234831 7.32752 0.544975 7.26395 0.775414 7.41602C2.67181 8.66804 4.89427 9.33529 7.16669 9.33529C9.43911 9.33529 11.6616 8.66804 13.558 7.41602Z\",\n p1c738580:\n \"M25.0372 25.5739C24.2878 26.3394 23.0741 26.3394 22.3247 25.5739C21.5753 24.8085 21.5753 23.5688 22.3247 22.8052C23.0741 22.0397 24.2859 22.0397 25.0353 22.8052C25.7847 23.5707 25.7847 24.8104 25.0353 25.5739\",\n p1cc79400:\n \"M54.8878 17.8422L53.3612 19.6769C52.7326 19.1955 52.1262 18.943 51.5429 18.943C50.869 18.943 50.3532 19.3562 50.3532 19.8831C50.3532 20.41 50.6449 20.617 52.104 21.1446C54.6637 22.062 55.4496 22.8421 55.4496 24.6305C55.4496 26.9929 53.5408 28.6668 50.8467 28.6668C49.1628 28.6668 47.7712 28.0474 46.6706 26.8094L48.2648 24.883C49.1175 25.7548 49.9933 26.2128 50.869 26.2128C51.655 26.2128 52.2613 25.6851 52.2613 24.9747C52.2613 24.3553 52.0142 24.0801 50.5773 23.5525C47.9056 22.5889 47.3667 21.855 47.3667 20.2273C47.3667 18.0484 49.0952 16.6497 51.2957 16.6497C52.6428 16.6497 53.8325 17.0394 54.8878 17.8422Z\",\n p1ce87000:\n \"M7.73031 0.140071C7.97579 -0.060186 8.33806 -0.0456335 8.56689 0.183203L12.7336 4.34987C12.9776 4.59395 12.9776 4.98958 12.7336 5.23366C12.4895 5.47774 12.0938 5.47774 11.8498 5.23366L8.125 1.50889L4.40023 5.23366C4.15615 5.47774 3.76052 5.47774 3.51644 5.23366C3.27236 4.98958 3.27236 4.59395 3.51644 4.34987L7.68311 0.183203L7.73031 0.140071Z\",\n p1e780800:\n \"M11.6667 3.54167C11.6667 3.24072 11.6077 2.94243 11.4925 2.66439C11.3773 2.38641 11.208 2.13415 10.9953 1.92139C10.7825 1.70862 10.5303 1.53932 10.2523 1.42415C9.97424 1.30899 9.67595 1.25 9.375 1.25H7.08333V5.83333H9.375C9.67595 5.83333 9.97424 5.77435 10.2523 5.65918C10.5303 5.54401 10.7825 5.37471 10.9953 5.16195C11.208 4.94918 11.3773 4.69692 11.4925 4.41895C11.6077 4.14091 11.6667 3.84261 11.6667 3.54167ZM12.9167 3.54167C12.9167 4.00663 12.8252 4.46706 12.6473 4.89665C12.4693 5.32634 12.2079 5.71686 11.8791 6.04574C11.5502 6.37461 11.1597 6.63598 10.73 6.81396C10.3004 6.99185 9.83996 7.08333 9.375 7.08333H6.45833C6.11316 7.08333 5.83333 6.80351 5.83333 6.45833V0.625C5.83333 0.279822 6.11316 0 6.45833 0H9.375C9.83996 0 10.3004 0.0914875 10.73 0.269368C11.1597 0.447354 11.5502 0.708723 11.8791 1.0376C12.2079 1.36647 12.4693 1.75699 12.6473 2.18669C12.8252 2.61627 12.9167 3.07671 12.9167 3.54167Z\",\n p1e95f780:\n \"M11.6667 9.375C11.6667 9.07405 11.6077 8.77576 11.4925 8.49772C11.3773 8.21974 11.208 7.96748 10.9953 7.75472C10.7825 7.54196 10.5303 7.37265 10.2523 7.25749C9.97424 7.14232 9.67595 7.08333 9.375 7.08333C9.07405 7.08333 8.77576 7.14232 8.49772 7.25749C8.21974 7.37265 7.96748 7.54196 7.75472 7.75472C7.54196 7.96748 7.37265 8.21974 7.25749 8.49772C7.14232 8.77576 7.08333 9.07405 7.08333 9.375C7.08333 9.67595 7.14232 9.97424 7.25749 10.2523C7.37265 10.5303 7.54196 10.7825 7.75472 10.9953C7.96748 11.208 8.21974 11.3773 8.49772 11.4925C8.77576 11.6077 9.07405 11.6667 9.375 11.6667C9.67595 11.6667 9.97424 11.6077 10.2523 11.4925C10.5303 11.3773 10.7825 11.208 10.9953 10.9953C11.208 10.7825 11.3773 10.5303 11.4925 10.2523C11.6077 9.97424 11.6667 9.67595 11.6667 9.375ZM12.9167 9.375C12.9167 9.83996 12.8252 10.3004 12.6473 10.73C12.4693 11.1597 12.2079 11.5502 11.8791 11.8791C11.5502 12.2079 11.1597 12.4693 10.73 12.6473C10.3004 12.8252 9.83996 12.9167 9.375 12.9167C8.91004 12.9167 8.44961 12.8252 8.02002 12.6473C7.59032 12.4693 7.19981 12.2079 6.87093 11.8791C6.54206 11.5502 6.28069 11.1597 6.1027 10.73C5.92482 10.3004 5.83333 9.83996 5.83333 9.375C5.83333 8.91004 5.92482 8.4496 6.1027 8.02002C6.28069 7.59032 6.54206 7.1998 6.87093 6.87093C7.19981 6.54206 7.59032 6.28069 8.02002 6.1027C8.44961 5.92482 8.91004 5.83333 9.375 5.83333C9.83996 5.83333 10.3004 5.92482 10.73 6.1027C11.1597 6.28069 11.5502 6.54206 11.8791 6.87093C12.2079 7.19981 12.4693 7.59033 12.6473 8.02002C12.8252 8.4496 12.9167 8.91004 12.9167 9.375Z\",\n p1ff1c880:\n \"M21.4593 28.3008V17.063H24.5571V18.4618C25.4551 17.292 26.6003 16.6961 27.9918 16.6961C30.2146 16.6961 32.0782 18.0031 32.0782 21.0303V28.3008H28.9797V22.1312C28.9797 20.2502 28.4631 19.3791 26.892 19.3791C25.3208 19.3791 24.5571 20.3655 24.5571 22.4753V28.3008H21.4593Z\",\n p2008000:\n \"M13.174 22.7703C13.174 24.5132 13.4656 25.5223 14.6108 25.5223C14.7451 25.5223 14.8809 25.4995 15.0375 25.4768V28.2288C14.7006 28.275 14.2968 28.2971 14.0044 28.2971C11.2651 28.2971 10.0754 26.3479 10.0754 23.7566V11.8613H13.174V22.771V22.7703Z\",\n p200e1200:\n \"M4.66667 9.83333V0.5C4.66667 0.223858 4.89052 0 5.16667 0C5.44281 0 5.66667 0.223858 5.66667 0.5V9.83333C5.66667 10.1095 5.44281 10.3333 5.16667 10.3333C4.89052 10.3333 4.66667 10.1095 4.66667 9.83333Z\",\n p2060d500:\n \"M14.0413 13.3333C14.3865 13.3333 14.6663 13.6132 14.6663 13.9583C14.6663 14.3035 14.3865 14.5833 14.0413 14.5833C13.8859 14.5834 13.7951 14.6142 13.7305 14.6468C13.6534 14.6857 13.5834 14.7413 13.4619 14.847C13.2177 15.0594 12.8332 15.4167 12.1248 15.4167C11.7805 15.4166 11.496 15.3433 11.2508 15.2197C11.0182 15.1024 10.843 14.9495 10.7251 14.847C10.4901 14.6427 10.4163 14.5833 10.2083 14.5833C10.0528 14.5833 9.96217 14.6142 9.89746 14.6468C9.82029 14.6857 9.75053 14.7412 9.62891 14.847C9.38473 15.0593 9.00022 15.4166 8.29183 15.4167C7.94749 15.4167 7.66297 15.3433 7.41781 15.2197C7.18525 15.1025 7.01005 14.9496 6.89209 14.847C6.65724 14.6428 6.58309 14.5834 6.37533 14.5833C6.21969 14.5833 6.12836 14.6142 6.06364 14.6468C5.9866 14.6857 5.91734 14.7414 5.7959 14.847C5.55171 15.0593 5.16666 15.4167 4.45801 15.4167C4.11349 15.4166 3.83031 15.3432 3.58643 15.2148C3.35726 15.0942 3.18732 14.9353 3.07943 14.8372C2.95832 14.7272 2.89887 14.6775 2.83122 14.6419C2.77831 14.6141 2.69681 14.5833 2.5415 14.5833C2.38597 14.5834 2.29533 14.6142 2.23063 14.6468C2.15348 14.6857 2.08367 14.7413 1.96208 14.847C1.71787 15.0594 1.33341 15.4167 0.625 15.4167C0.279822 15.4167 0 15.1368 0 14.7917C0 14.4465 0.279822 14.1667 0.625 14.1667C0.833013 14.1667 0.906788 14.1073 1.14176 13.903C1.25969 13.8005 1.4349 13.6476 1.66748 13.5303C1.91262 13.4067 2.19721 13.3334 2.5415 13.3333C2.88599 13.3333 3.16921 13.4069 3.41309 13.5352C3.6422 13.6557 3.81219 13.8147 3.92008 13.9128C4.04109 14.0228 4.10077 14.0725 4.16829 14.1081C4.22116 14.1359 4.30291 14.1666 4.45801 14.1667C4.66602 14.1667 4.74061 14.1073 4.97559 13.903C5.09354 13.8004 5.26881 13.6475 5.5013 13.5303C5.74644 13.4067 6.03104 13.3333 6.37533 13.3333C7.0837 13.3334 7.46825 13.6907 7.7124 13.903C7.83403 14.0088 7.90379 14.0643 7.98096 14.1032C8.04566 14.1358 8.13636 14.1667 8.29183 14.1667C8.49972 14.1666 8.57368 14.1073 8.80859 13.903C8.92654 13.8004 9.10173 13.6476 9.33431 13.5303C9.57949 13.4067 9.86396 13.3333 10.2083 13.3333C10.9167 13.3333 11.3012 13.6906 11.5454 13.903C11.667 14.0087 11.7368 14.0643 11.814 14.1032C11.8787 14.1358 11.9693 14.1666 12.1248 14.1667C12.3328 14.1667 12.4066 14.1073 12.6416 13.903C12.7596 13.8004 12.9354 13.6476 13.1681 13.5303C13.4132 13.4068 13.6973 13.3334 14.0413 13.3333Z\",\n p20889a80:\n \"M0.146447 0.146447C0.341709 -0.0488155 0.658216 -0.0488155 0.853478 0.146447L8.85348 8.14645C9.04874 8.34171 9.04874 8.65822 8.85348 8.85348C8.65822 9.04874 8.34171 9.04874 8.14645 8.85348L0.146447 0.853478C-0.0488155 0.658216 -0.0488155 0.341709 0.146447 0.146447Z\",\n p21215b00:\n \"M12.5026 4.67236C13.1545 4.39836 13.8983 4.71452 14.1684 5.37844C14.4367 6.04236 14.1271 6.804 13.4762 7.078C12.8262 7.352 12.0806 7.03585 11.8123 6.37193C11.5441 5.70609 11.8536 4.94636 12.5036 4.67045\",\n p21e32300:\n \"M10.6667 5.83333C10.6667 3.16396 8.50271 1 5.83333 1C3.16396 1 1 3.16396 1 5.83333C1 8.50271 3.16396 10.6667 5.83333 10.6667C8.50271 10.6667 10.6667 8.50271 10.6667 5.83333ZM11.6667 5.83333C11.6667 9.05499 9.05499 11.6667 5.83333 11.6667C2.61167 11.6667 0 9.05499 0 5.83333C0 2.61167 2.61167 0 5.83333 0C9.05499 0 11.6667 2.61167 11.6667 5.83333Z\",\n p22d2dc00:\n \"M4.66667 1.16667C4.66667 1.07462 4.59205 1 4.5 1H1.16667C1.07462 1 1 1.07462 1 1.16667V4.5C1 4.59205 1.07462 4.66667 1.16667 4.66667H4.5C4.59205 4.66667 4.66667 4.59205 4.66667 4.5V1.16667ZM5.66667 4.5C5.66667 5.14433 5.14433 5.66667 4.5 5.66667H1.16667C0.522334 5.66667 0 5.14433 0 4.5V1.16667C0 0.522334 0.522334 0 1.16667 0H4.5C5.14433 0 5.66667 0.522334 5.66667 1.16667V4.5Z\",\n p236d3680:\n \"M9.25315 9.25315C9.44841 9.05789 9.76492 9.05789 9.96018 9.25315L12.8534 12.1464C13.0487 12.3416 13.0487 12.6581 12.8534 12.8534C12.6581 13.0487 12.3416 13.0487 12.1464 12.8534L9.25315 9.96018C9.05789 9.76492 9.05789 9.44841 9.25315 9.25315Z\",\n p23ebb500:\n \"M12 5.83268C12 5.71152 11.9735 5.59168 11.9225 5.48177C11.8715 5.37187 11.797 5.27418 11.7044 5.19596L11.7018 5.19401L7.03516 1.19466C6.88522 1.06915 6.69562 1 6.5 1C6.30422 1 6.11419 1.0683 5.96419 1.19401L1.29818 5.19401L1.29557 5.19596C1.20303 5.27418 1.12849 5.37187 1.07747 5.48177C1.02648 5.59168 0.999998 5.71152 1 5.83268V11.8327C1 12.0537 1.08786 12.2662 1.24414 12.4225C1.4004 12.5787 1.6124 12.666 1.83333 12.666H11.1667C11.3876 12.666 11.5996 12.5787 11.7559 12.4225C11.9121 12.2662 12 12.0537 12 11.8327V5.83268ZM13 11.8327C13 12.3189 12.8067 12.7857 12.4629 13.1296C12.1191 13.4733 11.6528 13.666 11.1667 13.666H1.83333C1.34718 13.666 0.880909 13.4733 0.537109 13.1296C0.193293 12.7857 0 12.3189 0 11.8327V5.83268C-2.26206e-06 5.56616 0.0583982 5.30297 0.170573 5.0612C0.282817 4.8193 0.446068 4.60443 0.64974 4.43229L5.3138 0.435547L5.31641 0.432943C5.64731 0.153276 6.06674 0 6.5 0C6.87906 0 7.24751 0.117304 7.55534 0.333984L7.68359 0.432943L7.6862 0.435547L12.3496 4.43229C12.5533 4.60444 12.7172 4.81928 12.8294 5.0612C12.9416 5.30297 13 5.56616 13 5.83268V11.8327Z\",\n p23f5ac40:\n \"M12.4764 32.2553C11.8264 31.9794 11.5187 31.2177 11.787 30.5538C12.0571 29.8899 12.8028 29.5757 13.4546 29.8497C14.1046 30.1256 14.4123 30.8872 14.1421 31.5511C13.872 32.2151 13.1264 32.5312 12.4764 32.2534\",\n p244a7b00:\n \"M9.33336 3.16667V1.83333C9.33336 1.61232 9.2455 1.40042 9.08922 1.24414C8.93294 1.08786 8.72104 1 8.50002 1H5.83336C5.61234 1 5.40044 1.08786 5.24416 1.24414C5.08788 1.40042 5.00002 1.61232 5.00002 1.83333V3.16667C5.00002 3.44281 4.77617 3.66667 4.50002 3.66667C4.22388 3.66667 4.00002 3.44281 4.00002 3.16667V1.83333C4.00002 1.3471 4.19332 0.880926 4.53713 0.537109C4.88095 0.193293 5.34713 0 5.83336 0H8.50002C8.98625 0 9.45243 0.193293 9.79625 0.537109C10.1401 0.880926 10.3334 1.3471 10.3334 1.83333V3.16667C10.3334 3.44281 10.1095 3.66667 9.83336 3.66667C9.55722 3.66667 9.33336 3.44281 9.33336 3.16667Z\",\n p24988480:\n \"M18.0824 0C8.11124 0 0 8.28513 0 18.4701C0 28.655 8.11124 36.9401 18.0824 36.9401C28.0536 36.9401 36.1648 28.655 36.1648 18.4701C36.1648 8.28513 28.0517 0 18.0824 0Z\",\n p2655d7c0:\n \"M7.5 10.6251V0.625098C7.5 0.27992 7.77982 9.75514e-05 8.125 9.75514e-05C8.47018 9.75514e-05 8.75 0.27992 8.75 0.625098V10.6251C8.75 10.9703 8.47018 11.2501 8.125 11.2501C7.77982 11.2501 7.5 10.9703 7.5 10.6251Z\",\n p2721b380: \"M21.8142 8.84331H22.5757V2.22673H21.8142V8.84257V8.84331Z\",\n p274a6800:\n \"M17.2812 8.05586C16.0039 8.05586 14.9637 6.98662 14.9119 5.62015V5.51667C14.9119 4.13186 15.9745 3.0039 17.2812 3.0039C18.588 3.0039 19.6499 4.13113 19.6499 5.51667C19.6499 6.90222 18.5873 8.05586 17.2812 8.05586ZM20.4114 5.51741C20.4114 3.70255 19.0069 2.22673 17.2805 2.22673C16.3552 2.22673 15.5017 2.63697 14.9112 3.35983V2.22673H14.149V11.2277H14.9112V7.68893C15.5061 8.41986 16.3602 8.8345 17.2805 8.8345C19.0069 8.8345 20.4114 7.34695 20.4114 5.51741Z\",\n p279d1fa0:\n \"M12 8.5C12 8.40795 11.9254 8.33333 11.8333 8.33333H8.5C8.40795 8.33333 8.33333 8.40795 8.33333 8.5V11.8333C8.33333 11.9254 8.40795 12 8.5 12H11.8333C11.9254 12 12 11.9254 12 11.8333V8.5ZM13 11.8333C13 12.4777 12.4777 13 11.8333 13H8.5C7.85567 13 7.33333 12.4777 7.33333 11.8333V8.5C7.33333 7.85567 7.85567 7.33333 8.5 7.33333H11.8333C12.4777 7.33333 13 7.85567 13 8.5V11.8333Z\",\n p28366208:\n \"M23.6875 4.68482C24.3375 4.96073 24.6451 5.72238 24.375 6.3863C24.1049 7.05022 23.3592 7.36446 22.7092 7.08854C22.0592 6.81263 21.7516 6.05098 22.0198 5.38706C22.29 4.72314 23.0356 4.40699 23.6856 4.6829\",\n p289a6d00:\n \"M9.83333 4.66667C10.1095 4.66667 10.3333 4.89052 10.3333 5.16667C10.3333 5.44281 10.1095 5.66667 9.83333 5.66667H0.5C0.223858 5.66667 0 5.44281 0 5.16667C0 4.89052 0.223858 4.66667 0.5 4.66667H9.83333Z\",\n p28bbcf00:\n \"M2.50018 11.2502H1.87518C1.75157 11.2502 1.63047 11.2865 1.52769 11.3552C1.42492 11.4238 1.34468 11.5217 1.29738 11.6359C1.2501 11.7501 1.23828 11.876 1.26239 11.9973C1.28653 12.1184 1.34592 12.2297 1.43329 12.3171C1.52065 12.4044 1.63194 12.4638 1.75311 12.488C1.87433 12.5121 2.00025 12.5003 2.11444 12.453C2.22864 12.4057 2.32653 12.3254 2.3952 12.2227C2.46388 12.1199 2.50018 11.9988 2.50018 11.8752V11.2502ZM3.75018 11.8752C3.75018 12.246 3.6404 12.6085 3.43443 12.9168C3.22842 13.2252 2.93552 13.4658 2.59296 13.6078C2.25048 13.7496 1.87337 13.7866 1.50978 13.7144C1.14607 13.642 0.811721 13.4631 0.549498 13.2009C0.287275 12.9386 0.108337 12.6043 0.0359891 12.2406C-0.0362448 11.877 0.000738117 11.4999 0.142597 11.1574C0.284516 10.8148 0.525202 10.5219 0.833515 10.3159C1.14183 10.11 1.50439 10.0002 1.87518 10.0002H3.12518C3.47036 10.0002 3.75018 10.28 3.75018 10.6252V11.8752Z\",\n p28d34b00:\n \"M12.5 0.666667C12.7761 0.666667 13 0.890524 13 1.16667C13 1.44281 12.7761 1.66667 12.5 1.66667H7.83333C7.55719 1.66667 7.33333 1.44281 7.33333 1.16667C7.33333 0.890524 7.55719 0.666667 7.83333 0.666667H12.5Z\",\n p2906ff00:\n \"M12.5 11.3333C12.7761 11.3333 13 11.5572 13 11.8333C13 12.1095 12.7761 12.3333 12.5 12.3333H7.83333C7.55719 12.3333 7.33333 12.1095 7.33333 11.8333C7.33333 11.5572 7.55719 11.3333 7.83333 11.3333H12.5Z\",\n p29ae5900:\n \"M13.3334 4.5C13.3334 4.03976 12.9603 3.66667 12.5 3.66667H1.83336C1.37312 3.66667 1.00002 4.03976 1.00002 4.5V11.1667C1.00002 11.6269 1.37312 12 1.83336 12H12.5C12.9603 12 13.3334 11.6269 13.3334 11.1667V4.5ZM14.3334 11.1667C14.3334 12.1792 13.5125 13 12.5 13H1.83336C0.820835 13 2.37629e-05 12.1792 2.37629e-05 11.1667V4.5C2.37629e-05 3.48748 0.820835 2.66667 1.83336 2.66667H12.5C13.5125 2.66667 14.3334 3.48748 14.3334 4.5V11.1667Z\",\n p29ef2700:\n \"M3.78229 0.000964942C3.96704 -0.00121546 4.14819 0.0493413 4.30313 0.149077L4.37393 0.199533L4.44392 0.263823C4.54561 0.371991 4.61902 0.502378 4.66283 0.643869H4.66527L6.37263 5.76675H11.6078L13.3469 0.632475L13.3599 0.598296C13.4277 0.431706 13.5398 0.286652 13.6846 0.180001L13.6977 0.17105C13.8618 0.0566323 14.0583 -0.00342752 14.2584 0.00015114L14.3308 0.00584776C14.5305 0.032846 14.7154 0.123734 14.8598 0.263823C14.9417 0.334844 15.0132 0.416769 15.0673 0.510405L15.1259 0.631662L15.1397 0.669097L17.9148 9.00243L17.9156 9.00569C18.0014 9.26786 17.9958 9.5513 17.8993 9.80972C17.8085 10.053 17.6414 10.2588 17.4249 10.4005L9.35033 16.1346C9.13401 16.2881 8.84427 16.2886 8.62767 16.1354L0.519762 10.4022L0.514065 10.3981C0.300834 10.244 0.142169 10.0257 0.0607774 9.77554C-0.0205503 9.52531 -0.0202373 9.25577 0.0615912 9.00569L0.062405 9.0008L2.87084 0.634917L2.88467 0.598296C2.95238 0.431745 3.06464 0.286641 3.20938 0.180001L3.22321 0.17105C3.37258 0.0669371 3.54821 0.0104431 3.7294 0.00340635V0.00177874C3.74582 0.000667554 3.76265 0.00121504 3.77904 0.000964942L3.78311 0.00015114L3.78229 0.000964942ZM1.25056 9.38899L8.98737 14.8586L16.7022 9.38248L16.7201 9.37027L14.2348 1.90689L12.647 6.59195C12.5611 6.84564 12.3233 7.01672 12.0554 7.01675H5.92178C5.65292 7.01667 5.41444 6.84454 5.32933 6.58951L3.7652 1.89875L1.25056 9.38899Z\",\n p2a326440:\n \"M8.14645 0.146447C8.34171 -0.0488155 8.65822 -0.0488155 8.85348 0.146447C9.04874 0.341709 9.04874 0.658216 8.85348 0.853478L4.85348 4.85348C4.65822 5.04874 4.34171 5.04874 4.14645 4.85348L0.146447 0.853478C-0.0488155 0.658216 -0.0488155 0.341709 0.146447 0.146447C0.341709 -0.0488155 0.658216 -0.0488155 0.853478 0.146447L4.49996 3.79293L8.14645 0.146447Z\",\n p2a86000:\n \"M0 14.7917V3.125C0 2.77982 0.279822 2.5 0.625 2.5C0.970178 2.5 1.25 2.77982 1.25 3.125V14.7917C1.25 14.856 1.28805 15.02 1.58773 15.2612C1.88174 15.4978 2.35455 15.7452 3.01921 15.9668C4.34443 16.4085 6.18161 16.6667 8.125 16.6667C10.0684 16.6667 11.9056 16.4085 13.2308 15.9668C13.8954 15.7452 14.3683 15.4978 14.6623 15.2612C14.9619 15.02 15 14.856 15 14.7917V3.125C15 2.77982 15.2798 2.5 15.625 2.5C15.9702 2.5 16.25 2.77982 16.25 3.125V14.7917C16.25 15.3903 15.8929 15.8757 15.446 16.2354C14.9933 16.5996 14.368 16.9052 13.6263 17.1525C12.1385 17.6484 10.1599 17.9167 8.125 17.9167C6.09014 17.9167 4.11152 17.6484 2.6237 17.1525C1.88197 16.9052 1.25668 16.5996 0.804036 16.2354C0.357103 15.8757 4.96705e-08 15.3903 0 14.7917Z\",\n p2addef80:\n \"M15.3241 4.30926C15.6666 4.1674 16.0437 4.13042 16.4072 4.20266C16.771 4.275 17.1053 4.45394 17.3675 4.71616C17.6298 4.97839 17.8087 5.31274 17.881 5.67645C17.9533 6.04004 17.9163 6.41714 17.7744 6.75962C17.6325 7.10219 17.3918 7.39508 17.0835 7.60109C16.7752 7.80707 16.4126 7.91685 16.0418 7.91685H14.7918C14.4467 7.91685 14.1668 7.63703 14.1668 7.29185V6.04185C14.1668 5.67106 14.2766 5.30849 14.4826 5.00018C14.6886 4.69187 14.9815 4.45118 15.3241 4.30926ZM15.4168 6.66685H16.0418C16.1655 6.66685 16.2866 6.63054 16.3893 6.56187C16.4921 6.49319 16.5723 6.3953 16.6196 6.28111C16.6669 6.16692 16.6788 6.04099 16.6546 5.91978C16.6305 5.79861 16.5711 5.68732 16.4837 5.59995C16.3964 5.51259 16.2851 5.45319 16.1639 5.42906C16.0427 5.40494 15.9168 5.41677 15.8026 5.46405C15.6884 5.51135 15.5905 5.59158 15.5218 5.69435C15.4532 5.79714 15.4168 5.91824 15.4168 6.04185V6.66685Z\",\n p2aeb780:\n \"M10.4451 0.438758C10.5481 0.109307 10.8985 -0.074325 11.228 0.0286013C11.5574 0.131554 11.7411 0.482027 11.6381 0.811479L7.47147 14.1448C7.36852 14.4743 7.01804 14.6579 6.68859 14.555C6.35914 14.452 6.17551 14.1015 6.27844 13.7721L10.4451 0.438758Z\",\n p2b300900:\n \"M1.33232 11.8335V10.5002C1.33232 10.224 1.55617 10.0002 1.83232 10.0002C2.10846 10.0002 2.33232 10.224 2.33232 10.5002V11.8335C2.33232 12.1096 2.10846 12.3335 1.83232 12.3335C1.55617 12.3335 1.33232 12.1096 1.33232 11.8335Z\",\n p2c2a4f00:\n \"M13.5164 3.51656C13.7605 3.27248 14.1561 3.27248 14.4002 3.51656L17.7335 6.84989C17.9776 7.09397 17.9776 7.4896 17.7335 7.73368L14.4002 11.067C14.1561 11.3111 13.7605 11.3111 13.5164 11.067C13.2723 10.8229 13.2723 10.4273 13.5164 10.1832L16.4078 7.29178L13.5164 4.40035C13.2723 4.15627 13.2723 3.76064 13.5164 3.51656Z\",\n p2d22e480:\n \"M6.45833 0C6.80351 0 7.08333 0.279822 7.08333 0.625V6.45833C7.08333 6.80351 6.80351 7.08333 6.45833 7.08333H3.54167C2.60236 7.08333 1.70179 6.70993 1.0376 6.04574C0.373406 5.38154 0 4.48097 0 3.54167C0 2.60236 0.373406 1.70179 1.0376 1.0376C1.70179 0.373406 2.60236 0 3.54167 0H6.45833ZM1.25 3.54167C1.25 4.14945 1.49162 4.73218 1.92139 5.16195C2.35116 5.59172 2.93388 5.83333 3.54167 5.83333H5.83333V1.25H3.54167C2.93388 1.25 2.35116 1.49162 1.92139 1.92139C1.49162 2.35116 1.25 2.93388 1.25 3.54167Z\",\n p2da44af0:\n \"M16.172 17.0596H19.2705V28.2973H16.172V17.0596ZM15.8804 13.6148C15.8804 12.583 16.7108 11.7339 17.7209 11.7339C18.731 11.7339 19.5615 12.5823 19.5615 13.6148C19.5615 14.6474 18.731 15.4957 17.7209 15.4957C16.7108 15.4957 15.8804 14.6474 15.8804 13.6148Z\",\n p2e85db80:\n \"M41.2401 8.08449L41.1647 8.10578C41.0921 8.12632 40.9693 8.15054 40.7947 8.15054C40.4886 8.15054 40.3572 7.9524 40.3572 7.48712V2.98263H41.2559V2.22307H40.3572V0.000180664H39.577V2.22234H38.6732V2.9819H39.577V7.50914C39.577 8.0067 39.6646 8.33107 39.8514 8.52849C40.0245 8.73103 40.2904 8.83818 40.6194 8.83818C40.8665 8.83818 41.0856 8.80369 41.2358 8.73984L41.2782 8.72223L41.2401 8.08449Z\",\n p2ea32000:\n \"M6.66685 6.87518C6.66685 6.53 6.38703 6.25018 6.04185 6.25018H1.87518C1.53 6.25018 1.25018 6.53 1.25018 6.87518C1.25018 7.22036 1.53 7.50018 1.87518 7.50018H6.04185C6.38703 7.50018 6.66685 7.22036 6.66685 6.87518ZM7.91685 6.87518C7.91685 7.91072 7.07738 8.75018 6.04185 8.75018H1.87518C0.839648 8.75018 0.00018239 7.91072 0.00018239 6.87518C0.00018239 5.83965 0.839648 5.00018 1.87518 5.00018H6.04185C7.07738 5.00018 7.91685 5.83965 7.91685 6.87518Z\",\n p2ed383f0:\n \"M0 1.83333C0 1.55719 0.223858 1.33333 0.5 1.33333C0.776142 1.33333 1 1.55719 1 1.83333C1 2.05435 1.08786 2.26625 1.24414 2.42253C1.40042 2.57881 1.61232 2.66667 1.83333 2.66667H3.83333C4.10948 2.66667 4.33333 2.89052 4.33333 3.16667C4.33333 3.44281 4.10948 3.66667 3.83333 3.66667H1.83333C1.3471 3.66667 0.880926 3.47337 0.537109 3.12956C0.193293 2.78574 0 2.31956 0 1.83333Z\",\n p2f623f20:\n \"M45.4121 27.1709L45.379 28.9476C45.328 29.7505 45.2188 30.3721 45.0751 30.797C44.379 32.8841 42.2015 34.3291 39.5297 34.3291C36.3414 34.3291 33.9168 32.2882 33.6703 29.6279H36.993C37.3077 30.9812 38.1827 31.6461 39.5972 31.6461C41.2158 31.6461 42.1605 30.7867 42.3136 29.0151V27.245C38.0203 30.182 33.6509 26.5662 33.6509 22.6591C33.6509 19.4946 35.9017 17.307 38.6317 17.0171C40.0908 17.0171 41.371 17.2695 42.3136 18.4848V17.0171H45.4121V27.1716V27.1709ZM39.3717 19.4932C37.6654 19.4932 36.2961 20.9609 36.2961 22.6121C36.2961 24.3551 37.6209 25.7773 39.3717 25.7773C41.1232 25.7773 42.4695 24.3323 42.4695 22.6356C42.4695 20.9389 41.0779 19.4939 39.3717 19.4939V19.4932Z\",\n p2fe7e180:\n \"M8 13.1663V7.83299C8 7.78878 7.98243 7.7464 7.95117 7.71515C7.91992 7.68389 7.87754 7.66632 7.83333 7.66632H5.16667C5.12246 7.66632 5.08008 7.68389 5.04883 7.71515C5.01757 7.7464 5 7.78878 5 7.83299V13.1663C5 13.4425 4.77614 13.6663 4.5 13.6663C4.22386 13.6663 4 13.4425 4 13.1663V7.83299C4 7.52357 4.123 7.22691 4.3418 7.00812C4.56059 6.78932 4.85725 6.66632 5.16667 6.66632H7.83333C8.14275 6.66632 8.43941 6.78932 8.6582 7.00812C8.877 7.22691 9 7.52357 9 7.83299V13.1663C9 13.4425 8.77614 13.6663 8.5 13.6663C8.22386 13.6663 8 13.4425 8 13.1663Z\",\n p316bb480:\n \"M11.6668 1.87518C11.6668 1.53 11.387 1.25018 11.0418 1.25018C10.6967 1.25018 10.4168 1.53 10.4168 1.87518V6.04185C10.4168 6.38703 10.6967 6.66685 11.0418 6.66685C11.387 6.66685 11.6668 6.38703 11.6668 6.04185V1.87518ZM12.9168 6.04185C12.9168 7.07738 12.0774 7.91685 11.0418 7.91685C10.0063 7.91685 9.16685 7.07738 9.16685 6.04185V1.87518C9.16685 0.839648 10.0063 0.000182488 11.0418 0.000182488C12.0774 0.000182488 12.9168 0.839648 12.9168 1.87518V6.04185Z\",\n p32e12500:\n \"M16.6668 11.0418C16.6668 10.6967 16.387 10.4168 16.0418 10.4168H11.8752C11.53 10.4168 11.2502 10.6967 11.2502 11.0418C11.2502 11.387 11.53 11.6668 11.8752 11.6668H16.0418C16.387 11.6668 16.6668 11.387 16.6668 11.0418ZM17.9168 11.0418C17.9168 12.0774 17.0774 12.9168 16.0418 12.9168H11.8752C10.8396 12.9168 10.0002 12.0774 10.0002 11.0418C10.0002 10.0063 10.8396 9.16685 11.8752 9.16685H16.0418C17.0774 9.16685 17.9168 10.0063 17.9168 11.0418Z\",\n p32fb3800:\n \"M10.6667 12.5C10.6667 11.2181 10.1577 9.98846 9.2513 9.08203C8.34488 8.17561 7.11521 7.66667 5.83333 7.66667C4.55145 7.66667 3.32179 8.17561 2.41536 9.08203C1.50894 9.98846 1 11.2181 1 12.5C1 12.7761 0.776142 13 0.5 13C0.223858 13 0 12.7761 0 12.5C0 10.9529 0.614371 9.46896 1.70833 8.375C2.8023 7.28104 4.28624 6.66667 5.83333 6.66667C7.38043 6.66667 8.86437 7.28104 9.95833 8.375C11.0523 9.46896 11.6667 10.9529 11.6667 12.5C11.6667 12.7761 11.4428 13 11.1667 13C10.8905 13 10.6667 12.7761 10.6667 12.5Z\",\n p34540040:\n \"M4.66665 10.6667C4.66665 11.0203 4.80722 11.3593 5.05727 11.6094C5.30732 11.8594 5.64636 12 5.99998 12C6.3536 12 6.69264 11.8594 6.94269 11.6094C7.19274 11.3593 7.33331 11.0203 7.33331 10.6667H4.66665ZM9.32355 5.74219C9.27726 5.14395 9.07012 4.56747 8.72199 4.07487C8.32399 3.5118 7.7607 3.08611 7.11066 2.85612C6.84446 2.76186 6.66665 2.50962 6.66665 2.22721V2C6.66665 1.82319 6.59636 1.65367 6.47134 1.52865C6.34631 1.40362 6.17679 1.33333 5.99998 1.33333C5.82317 1.33333 5.65365 1.40362 5.52863 1.52865C5.4036 1.65367 5.33331 1.82319 5.33331 2V2.22721C5.33331 2.50971 5.15499 2.76193 4.88865 2.85612C3.5934 3.31434 2.66665 4.55012 2.66665 6V8.10612C2.66662 8.55232 2.51727 8.9826 2.24868 9.33333H9.75128C9.64447 9.19385 9.55446 9.04192 9.48696 8.87891C9.38544 8.63371 9.3333 8.37085 9.33331 8.10547V6L9.32355 5.74219ZM10.6666 8.10547C10.6666 8.1957 10.6843 8.2851 10.7187 8.36849C10.7533 8.45187 10.804 8.52795 10.8678 8.5918L11.8047 9.52865C11.9953 9.71931 12.0524 10.0061 11.9492 10.2552C11.846 10.5043 11.6029 10.6667 11.3333 10.6667H8.66665C8.66665 11.3739 8.38549 12.052 7.8854 12.5521C7.3853 13.0522 6.70722 13.3333 5.99998 13.3333C5.29274 13.3333 4.61466 13.0522 4.11456 12.5521C3.61447 12.052 3.33331 11.3739 3.33331 10.6667H0.666648C0.397037 10.6667 0.15397 10.5043 0.0507623 10.2552C-0.0524249 10.0061 0.00462818 9.71931 0.195294 9.52865L1.13214 8.5918C1.26099 8.46285 1.33328 8.28783 1.33331 8.10612V6C1.33331 4.13272 2.43038 2.52292 4.013 1.77669C4.06337 1.32845 4.26388 0.907981 4.58592 0.585937C4.96099 0.210865 5.46955 0 5.99998 0C6.53041 0 7.03897 0.210865 7.41404 0.585937C7.73607 0.907963 7.93593 1.32848 7.98631 1.77669C8.7138 2.11911 9.34339 2.64446 9.81053 3.30534C10.3676 4.09349 10.6667 5.03486 10.6666 6V8.10547Z\",\n p36594200:\n \"M0 13.9584V10.6251C0 10.2799 0.279822 10.0001 0.625 10.0001C0.970178 10.0001 1.25 10.2799 1.25 10.6251V13.9584C1.25 14.2347 1.35983 14.4996 1.55518 14.6949C1.75053 14.8903 2.0154 15.0001 2.29167 15.0001H13.9583C14.2346 15.0001 14.4995 14.8903 14.6948 14.6949C14.8902 14.4996 15 14.2347 15 13.9584V10.6251C15 10.2799 15.2798 10.0001 15.625 10.0001C15.9702 10.0001 16.25 10.2799 16.25 10.6251V13.9584C16.25 14.5662 16.0084 15.1489 15.5786 15.5787C15.1488 16.0085 14.5661 16.2501 13.9583 16.2501H2.29167C1.68388 16.2501 1.10116 16.0085 0.671387 15.5787C0.241616 15.1489 0 14.5662 0 13.9584Z\",\n p36643e00:\n \"M8.66667 3.83333C8.66667 2.26853 7.39814 1 5.83333 1C4.26853 1 3 2.26853 3 3.83333C3 5.39814 4.26853 6.66667 5.83333 6.66667C7.39814 6.66667 8.66667 5.39814 8.66667 3.83333ZM9.66667 3.83333C9.66667 5.95043 7.95042 7.66667 5.83333 7.66667C3.71624 7.66667 2 5.95043 2 3.83333C2 1.71624 3.71624 0 5.83333 0C7.95042 0 9.66667 1.71624 9.66667 3.83333Z\",\n p36ca8400:\n \"M6 4.5V1.16667C6 0.857247 6.123 0.560589 6.3418 0.341797C6.56059 0.123004 6.85725 0 7.16667 0H8.5C8.68102 0 8.85956 0.0421328 9.02148 0.123047C9.18348 0.204046 9.32492 0.321901 9.43359 0.466797L10.0332 1.26693C10.0487 1.28758 10.0693 1.3042 10.0924 1.31576C10.1155 1.32724 10.1409 1.33333 10.1667 1.33333H11.8333C12.1428 1.33333 12.4394 1.45634 12.6582 1.67513C12.877 1.89392 13 2.19058 13 2.5V4.5C13 4.80942 12.877 5.10608 12.6582 5.32487C12.4394 5.54366 12.1428 5.66667 11.8333 5.66667H7.16667C6.85725 5.66667 6.56059 5.54366 6.3418 5.32487C6.123 5.10608 6 4.80942 6 4.5ZM7 4.5C7 4.5442 7.01757 4.58658 7.04883 4.61784C7.08008 4.6491 7.12246 4.66667 7.16667 4.66667H11.8333C11.8775 4.66667 11.9199 4.64909 11.9512 4.61784C11.9824 4.58658 12 4.5442 12 4.5V2.5C12 2.4558 11.9824 2.41342 11.9512 2.38216C11.9199 2.35091 11.8775 2.33333 11.8333 2.33333H10.1667C9.98565 2.33333 9.80711 2.2912 9.64518 2.21029C9.48318 2.12929 9.34174 2.01143 9.23307 1.86654L8.63346 1.06641C8.61795 1.04576 8.59732 1.02913 8.57422 1.01758C8.55115 1.00609 8.52578 1 8.5 1H7.16667C7.12246 1 7.08008 1.01757 7.04883 1.04883C7.01757 1.08008 7 1.12246 7 1.16667V4.5Z\",\n p36e63380:\n \"M0 9.16667V0.5C0 0.223858 0.223858 0 0.5 0C0.776142 0 1 0.223858 1 0.5V9.16667C1 9.38768 1.08786 9.59958 1.24414 9.75586C1.40042 9.91214 1.61232 10 1.83333 10H3.83333C4.10948 10 4.33333 10.2239 4.33333 10.5C4.33333 10.7761 4.10948 11 3.83333 11H1.83333C1.3471 11 0.880926 10.8067 0.537109 10.4629C0.193293 10.1191 0 9.6529 0 9.16667Z\",\n p37273200:\n \"M15 3.125C15 3.0534 14.9567 2.88537 14.6484 2.64242C14.3472 2.40511 13.8727 2.16385 13.2308 1.94987C11.9529 1.5239 10.1476 1.25 8.125 1.25C6.10241 1.25 4.29711 1.5239 3.01921 1.94987C2.37726 2.16385 1.90282 2.40511 1.60156 2.64242C1.29327 2.88537 1.25 3.0534 1.25 3.125C1.25 3.1966 1.29327 3.36463 1.60156 3.60758C1.90282 3.84489 2.37726 4.08615 3.01921 4.30013C4.29711 4.7261 6.10241 5 8.125 5C10.1476 5 11.9529 4.7261 13.2308 4.30013C13.8727 4.08615 14.3472 3.84489 14.6484 3.60758C14.9567 3.36463 15 3.1966 15 3.125ZM16.25 3.125C16.25 3.74376 15.8731 4.2338 15.4224 4.58903C14.9646 4.94974 14.3412 5.24753 13.6263 5.48584C12.1897 5.96469 10.2445 6.25 8.125 6.25C6.00545 6.25 4.06026 5.96469 2.6237 5.48584C1.90885 5.24753 1.28537 4.94974 0.827637 4.58903C0.376883 4.2338 0 3.74376 0 3.125C0 2.50624 0.376883 2.0162 0.827637 1.66097C1.28537 1.30026 1.90885 1.00247 2.6237 0.76416C4.06026 0.285307 6.00545 0 8.125 0C10.2445 0 12.1897 0.285307 13.6263 0.76416C14.3412 1.00247 14.9646 1.30026 15.4224 1.66097C15.8731 2.0162 16.25 2.50624 16.25 3.125Z\",\n p37401480:\n \"M11.1276 11.3671C11.877 10.6017 13.0907 10.6017 13.8383 11.3671C14.5877 12.1326 14.5877 13.3723 13.8383 14.1378C13.0888 14.9033 11.8752 14.9033 11.1276 14.1378C10.3782 13.3723 10.3782 12.1345 11.1276 11.3691\",\n p38866000:\n \"M4.66667 8.5C4.66667 8.40795 4.59205 8.33333 4.5 8.33333H1.16667C1.07462 8.33333 1 8.40795 1 8.5V11.8333C1 11.9254 1.07462 12 1.16667 12H4.5C4.59205 12 4.66667 11.9254 4.66667 11.8333V8.5ZM5.66667 11.8333C5.66667 12.4777 5.14433 13 4.5 13H1.16667C0.522334 13 0 12.4777 0 11.8333V8.5C0 7.85567 0.522334 7.33333 1.16667 7.33333H4.5C5.14433 7.33333 5.66667 7.85567 5.66667 8.5V11.8333Z\",\n p3890a7e0:\n \"M0.5 9.33333C1.01602 9.33333 1.40248 9.59721 1.69596 9.85091C1.84229 9.97741 1.98766 10.1213 2.11784 10.2474C2.25357 10.3789 2.38184 10.5008 2.51823 10.61C2.78553 10.8242 3.06669 10.9786 3.42188 11.0254C3.7809 11.0727 4.27127 11.0169 4.96419 10.7096C5.21659 10.5978 5.51178 10.7118 5.6237 10.9642C5.73552 11.2166 5.62152 11.5118 5.36914 11.6237C4.55881 11.983 3.88049 12.094 3.29102 12.0163C2.69779 11.938 2.25004 11.6758 1.89323 11.39C1.71765 11.2493 1.56026 11.1002 1.42188 10.9661C1.27789 10.8267 1.16041 10.7101 1.04167 10.6074C0.805012 10.4029 0.650617 10.3333 0.5 10.3333C0.223858 10.3333 0 10.1095 0 9.83333C0 9.55719 0.223858 9.33333 0.5 9.33333Z\",\n p3895de80:\n \"M11.1276 25.5739C10.3782 24.8085 10.3782 23.5688 11.1276 22.8052C11.877 22.0397 13.0907 22.0397 13.8383 22.8052C14.5877 23.5707 14.5877 24.8104 13.8383 25.5739C13.0888 26.3394 11.8752 26.3394 11.1276 25.5739Z\",\n p38ba5d00:\n \"M12.5 4C12.7761 4 13 4.22386 13 4.5C13 4.77614 12.7761 5 12.5 5H7.83333C7.55719 5 7.33333 4.77614 7.33333 4.5C7.33333 4.22386 7.55719 4 7.83333 4H12.5Z\",\n p38feb400:\n \"M8.21697 17.8422L6.69035 19.6769C6.06173 19.1955 5.45539 18.943 4.87204 18.943C4.19889 18.943 3.68235 19.3562 3.68235 19.8831C3.68235 20.41 3.97403 20.617 5.43384 21.1446C7.99283 22.062 8.77877 22.8421 8.77877 24.6305C8.77877 26.9929 6.87067 28.6668 4.17662 28.6668C2.49266 28.6668 1.10109 28.0474 0.000482818 26.8094L1.59464 24.883C2.44812 25.7548 3.32314 26.2128 4.19889 26.2128C4.98483 26.2128 5.59046 25.6851 5.59046 24.9747C5.59046 24.3553 5.34404 24.0801 3.9065 23.5525C1.23472 22.5889 0.695908 21.855 0.695908 20.2273C0.695908 18.0484 2.42441 16.6497 4.62491 16.6497C5.97193 16.6497 7.16162 17.0394 8.21697 17.8422Z\",\n p3b3b2980:\n \"M27.3486 2.99413C28.465 2.99413 29.4227 3.819 29.6526 4.96531H25.0066C25.2616 3.80066 26.2143 2.99413 27.3479 2.99413H27.3486ZM29.3336 6.93355C28.9184 7.63586 28.1583 8.07252 27.3479 8.07252C26.0885 8.07252 25.0504 7.04363 24.957 5.71679H30.0915C30.3013 5.71679 30.4658 5.56121 30.4658 5.36087V5.30289C30.3315 3.55041 28.9909 2.22871 27.3479 2.22871C25.6151 2.22871 24.2041 3.717 24.2041 5.5458C24.2041 7.37461 25.6144 8.83647 27.3479 8.83647C28.4068 8.83647 29.381 8.2802 29.9579 7.34892L29.3336 6.93355Z\",\n p3c14d400:\n \"M3.51639 3.51656C3.76047 3.27248 4.1561 3.27248 4.40018 3.51656C4.64426 3.76064 4.64426 4.15627 4.40018 4.40035L1.50874 7.29178L4.40018 10.1832C4.64426 10.4273 4.64426 10.8229 4.40018 11.067C4.1561 11.3111 3.76047 11.3111 3.51639 11.067L0.183058 7.73368C-0.0610194 7.4896 -0.0610194 7.09397 0.183058 6.84989L3.51639 3.51656Z\",\n p3cb31b00:\n \"M12.5 8C12.7761 8 13 8.22386 13 8.5C13 8.77614 12.7761 9 12.5 9H7.83333C7.55719 9 7.33333 8.77614 7.33333 8.5C7.33333 8.22386 7.55719 8 7.83333 8H12.5Z\",\n p3cfd3540:\n \"M7.29167 0C7.5284 0 7.74488 0.134126 7.85075 0.345866L12.8507 10.3459C13.0049 10.6545 12.8794 11.0298 12.5708 11.1841C12.2621 11.3382 11.8869 11.2128 11.7326 10.9041L7.29167 2.0223L2.85075 10.9041C2.69643 11.2128 2.32121 11.3382 2.01253 11.1841C1.7039 11.0298 1.57847 10.6545 1.73258 10.3459L6.73259 0.345866C6.83846 0.134126 7.05493 0 7.29167 0Z\",\n p3d3e9500:\n \"M4.5743 24.1675C4.30605 23.5036 4.61556 22.742 5.26555 22.468C5.91741 22.194 6.66119 22.5101 6.92944 23.174C7.19769 23.8399 6.88817 24.5996 6.23819 24.8755C5.5882 25.1495 4.84254 24.8334 4.5743 24.1694\",\n p3d444a80:\n \"M19.4161 20.9658C18.4247 22.3597 17.7194 24.6149 19.0297 25.9524C19.9189 26.8606 19.2482 28.3666 18.0496 28.3666C16.8509 28.3666 16.1803 26.8606 17.0694 25.9524C18.3797 24.614 17.6763 22.3607 16.683 20.9658C16.5104 20.7234 15.8557 19.9962 15.6363 19.8343C14.2697 18.8217 12.0637 18.1012 10.7543 19.4396C9.86517 20.3478 8.39074 19.6628 8.39074 18.4384C8.39074 17.2141 9.86611 16.5291 10.7543 17.4373C12.0646 18.7757 14.2706 18.0552 15.6363 17.0426C15.8736 16.8663 16.5855 16.1976 16.744 15.9734C17.7354 14.5775 18.4407 12.3261 17.1304 10.9868C16.2412 10.0786 16.9119 8.57255 18.1105 8.57255C19.3092 8.57255 19.9798 10.0795 19.0907 10.9868C17.7804 12.3252 18.4857 14.5785 19.4771 15.9734C19.6497 16.2158 20.3044 16.9429 20.5238 17.1049C21.8904 18.1175 24.0945 18.8379 25.4058 17.4996C26.2949 16.5913 27.7694 17.2763 27.7694 18.5007C27.7694 19.7251 26.2949 20.4101 25.4058 19.5019C24.0955 18.1635 21.8895 18.8839 20.5238 19.8966C20.2865 20.0729 19.5746 20.7416 19.4161 20.9658Z\",\n p3e4f7a70:\n \"M6.45833 5.83333C6.80351 5.83333 7.08333 6.11316 7.08333 6.45833V12.2917C7.08333 12.6368 6.80351 12.9167 6.45833 12.9167H3.54167C2.60236 12.9167 1.70179 12.5433 1.0376 11.8791C0.373406 11.2149 0 10.3143 0 9.375C0 8.43569 0.373406 7.53512 1.0376 6.87093C1.70179 6.20674 2.60236 5.83333 3.54167 5.83333H6.45833ZM1.25 9.375C1.25 9.98279 1.49162 10.5655 1.92139 10.9953C2.35116 11.4251 2.93388 11.6667 3.54167 11.6667H5.83333V7.08333H3.54167C2.93388 7.08333 2.35116 7.32495 1.92139 7.75472C1.49162 8.18449 1.25 8.76721 1.25 9.375Z\",\n p3e73ad00:\n \"M7.1732 6.66667C7.44934 6.66667 7.6732 6.89052 7.6732 7.16667C7.6732 7.44281 7.44934 7.66667 7.1732 7.66667H7.16669C6.89055 7.66667 6.66669 7.44281 6.66669 7.16667C6.66669 6.89052 6.89055 6.66667 7.16669 6.66667H7.1732Z\",\n p3f7e4500:\n \"M11.8752 14.1668C12.246 14.1668 12.6085 14.2766 12.9168 14.4826C13.2252 14.6886 13.4658 14.9815 13.6078 15.3241C13.7496 15.6666 13.7866 16.0437 13.7144 16.4072C13.642 16.771 13.4631 17.1053 13.2009 17.3675C12.9386 17.6298 12.6043 17.8087 12.2406 17.881C11.877 17.9533 11.4999 17.9163 11.1574 17.7744C10.8148 17.6325 10.5219 17.3918 10.3159 17.0835C10.11 16.7752 10.0002 16.4126 10.0002 16.0418V14.7918C10.0002 14.4467 10.28 14.1668 10.6252 14.1668H11.8752ZM11.2502 16.0418C11.2502 16.1655 11.2865 16.2866 11.3552 16.3893C11.4238 16.4921 11.5217 16.5723 11.6359 16.6196C11.7501 16.6669 11.876 16.6788 11.9973 16.6546C12.1184 16.6305 12.2297 16.5711 12.3171 16.4837C12.4044 16.3964 12.4638 16.2851 12.488 16.1639C12.5121 16.0427 12.5003 15.9168 12.453 15.8026C12.4057 15.6884 12.3254 15.5905 12.2227 15.5218C12.1199 15.4532 11.9988 15.4168 11.8752 15.4168H11.2502V16.0418Z\",\n p4082ae0:\n \"M83.1162 19.7652H81.9042V17.0587H83.1162V13.2286H86.2147V17.0587H88.3699V19.7652H86.2147V23.1139C86.2147 24.8568 86.4166 25.8659 87.5617 25.8659C87.7636 25.8659 87.9655 25.8431 88.1228 25.8204V28.5724C87.7859 28.6186 87.1573 28.6414 86.8203 28.6414C84.418 28.6414 83.1162 26.8295 83.1162 24.2382V19.766V19.7652Z\",\n p4987580:\n \"M12 1.16667C12 1.07462 11.9254 1 11.8333 1H8.5C8.40795 1 8.33333 1.07462 8.33333 1.16667V4.5C8.33333 4.59205 8.40795 4.66667 8.5 4.66667H11.8333C11.9254 4.66667 12 4.59205 12 4.5V1.16667ZM13 4.5C13 5.14433 12.4777 5.66667 11.8333 5.66667H8.5C7.85567 5.66667 7.33333 5.14433 7.33333 4.5V1.16667C7.33333 0.522334 7.85567 0 8.5 0H11.8333C12.4777 0 13 0.522334 13 1.16667V4.5Z\",\n p6bb7c80:\n \"M22.2011 1.28269C22.4698 1.28269 22.6882 1.05959 22.6882 0.78439C22.6882 0.509188 22.469 0.286092 22.2011 0.286092C21.9331 0.286092 21.7133 0.509188 21.7133 0.78439C21.7133 1.05959 21.9324 1.28269 22.2011 1.28269Z\",\n p6dcdf00:\n \"M23.6622 32.2649C23.0103 32.5389 22.2665 32.2227 21.9964 31.5588C21.7281 30.8949 22.0377 30.1313 22.6876 29.8573C23.3395 29.5833 24.0852 29.8995 24.3534 30.5634C24.6217 31.2292 24.3121 31.989 23.6622 32.2649Z\",\n p73f4c00:\n \"M8.14645 0.146447C8.34171 -0.0488155 8.65822 -0.0488155 8.85348 0.146447C9.04874 0.341709 9.04874 0.658216 8.85348 0.853478L0.853478 8.85348C0.658216 9.04874 0.341709 9.04874 0.146447 8.85348C-0.0488155 8.65822 -0.0488155 8.34171 0.146447 8.14645L8.14645 0.146447Z\",\n p77261c0:\n \"M4.13303 5.64491C4.13303 5.64491 3.93546 5.48713 3.72138 5.39613C3.50801 5.30439 3.20196 5.19798 2.56689 5.03947C2.48068 5.01818 2.39662 4.99984 2.3176 4.97929C1.89302 4.87068 1.55752 4.72464 1.32116 4.5441C1.08624 4.33715 0.998592 4.16543 1.00865 3.93279C1.01943 3.68694 1.16311 3.44844 1.41527 3.26057C1.70192 3.04407 2.12004 2.93619 2.59347 2.95748C3.13012 2.98169 3.53818 3.25543 3.97857 3.58347L4.02095 3.61502L4.57485 3.08811C4.50804 3.02353 4.49511 3.01325 4.30976 2.88336C3.8744 2.58247 3.3399 2.26397 2.62436 2.23241C2.0015 2.20453 1.44545 2.33442 1.01512 2.60962C0.548868 2.93253 0.254318 3.40147 0.24857 3.8983C0.243541 4.2689 0.318255 4.61602 0.681054 4.97268C1.11426 5.39906 1.78813 5.62363 2.40453 5.74545C2.93328 5.84966 3.4218 6.05001 3.6675 6.25843C3.96133 6.53363 4.0655 6.73324 4.0655 7.01945C4.054 7.29392 3.87871 7.55591 3.57913 7.74158C3.27884 7.97128 2.84922 8.09163 2.40093 8.07109C1.8104 8.04467 1.20047 7.78194 0.585506 7.29025L0.54312 7.25576L0 7.76433L0.053881 7.81203C0.76942 8.44316 1.54818 8.78734 2.36789 8.83431C2.98213 8.8622 3.51735 8.71249 4.00659 8.37858C4.51235 8.02118 4.79181 7.56251 4.81408 7.05247C4.83707 6.51014 4.57629 5.97075 4.13303 5.64418\",\n p8934a00:\n \"M11.999 3.8335V1.16683C11.999 0.89069 12.2228 0.666833 12.499 0.666833C12.7751 0.666833 12.999 0.89069 12.999 1.16683V3.8335C12.999 4.10964 12.7751 4.3335 12.499 4.3335C12.2228 4.3335 11.999 4.10964 11.999 3.8335Z\",\n p9e248c0:\n \"M31.5896 12.7707C31.8578 13.4365 31.5483 14.1982 30.8983 14.4722C30.2483 14.7462 29.5027 14.43 29.2325 13.7661C28.9643 13.1022 29.2738 12.3405 29.9238 12.0665C30.5757 11.7925 31.3194 12.1087 31.5896 12.7726\",\n pc279880:\n \"M6 11.8333V8.5C6 8.19058 6.12301 7.89392 6.3418 7.67513C6.56059 7.45634 6.85725 7.33333 7.16667 7.33333H8.41992C8.64704 7.33286 8.86964 7.3987 9.0599 7.52278C9.24382 7.64278 9.38929 7.81258 9.48112 8.01172L9.75977 8.57487C9.77347 8.60206 9.7945 8.62511 9.82031 8.64127C9.84609 8.65738 9.87586 8.66621 9.90625 8.66666H11.8333C12.1428 8.66666 12.4394 8.78967 12.6582 9.00846C12.877 9.22725 13 9.52391 13 9.83333V11.8333C13 12.1427 12.877 12.4394 12.6582 12.6582C12.4394 12.877 12.1428 13 11.8333 13H7.16667C6.85725 13 6.56059 12.877 6.3418 12.6582C6.12301 12.4394 6 12.1427 6 11.8333ZM7 11.8333C7 11.8775 7.01757 11.9199 7.04883 11.9512C7.08008 11.9824 7.12246 12 7.16667 12H11.8333C11.8775 12 11.9199 11.9824 11.9512 11.9512C11.9824 11.9199 12 11.8775 12 11.8333V9.83333C12 9.78913 11.9824 9.74675 11.9512 9.71549C11.9199 9.68424 11.8775 9.66666 11.8333 9.66666H9.89323C9.67988 9.66383 9.47131 9.60265 9.29036 9.48958C9.10934 9.37644 8.96258 9.21539 8.86654 9.02474L8.86523 9.02148L8.58529 8.45507C8.58181 8.44804 8.57801 8.44079 8.57487 8.43359C8.56191 8.4039 8.54076 8.37843 8.51367 8.36067C8.48646 8.34293 8.45436 8.33324 8.42188 8.33333H7.16667C7.12247 8.33333 7.08008 8.3509 7.04883 8.38216C7.01757 8.41341 7 8.4558 7 8.5V11.8333Z\",\n pcc5de00:\n \"M13.3335 11.8332C13.3334 9.76626 12.0929 7.82004 10.8667 6.90026C10.7408 6.80584 10.6668 6.65723 10.6668 6.49987C10.6668 6.34257 10.7408 6.19454 10.8667 6.10013C11.2391 5.82069 11.537 5.45372 11.7339 5.03177C11.9307 4.60971 12.0208 4.14525 11.9956 3.68021C11.9704 3.21518 11.8307 2.76339 11.5893 2.3651C11.348 1.96687 11.012 1.63456 10.6115 1.39701C10.374 1.25614 10.2955 0.948965 10.4363 0.711458C10.5772 0.473956 10.8844 0.395477 11.1219 0.536328C11.6638 0.857761 12.1182 1.308 12.4448 1.84688C12.7713 2.38575 12.9602 2.99699 12.9943 3.62617C13.0284 4.25533 12.9065 4.88329 12.6401 5.4543C12.4614 5.8374 12.2195 6.18536 11.9285 6.48815C13.1966 7.66254 14.3334 9.66802 14.3335 11.8332C14.3335 12.1093 14.1095 12.3331 13.8335 12.3332C13.5573 12.3332 13.3335 12.1093 13.3335 11.8332Z\",\n pd015300:\n \"M8.6668 13.8333V11.1667C8.6668 11.1482 8.66737 11.1297 8.66941 11.1113C8.74763 10.4067 8.5456 9.69949 8.10691 9.14258C7.98859 8.99218 7.96676 8.78742 8.05027 8.61523C8.13388 8.44293 8.30862 8.33333 8.50014 8.33333C10.3132 8.33327 12.0001 7.14232 12.0001 5.16667C12.0001 5.15603 12.0001 5.14538 12.0008 5.13477C12.0468 4.41608 11.8459 3.71023 11.4266 3.12435C11.3419 3.00597 11.3134 2.85627 11.3478 2.71484C11.4751 2.19188 11.5049 1.6517 11.4389 1.12044C11.1536 1.23589 10.7184 1.4612 10.1336 1.89974C10.0213 1.984 9.87835 2.01763 9.74037 1.99154C8.0419 1.66986 6.29171 1.66987 4.59324 1.99154C4.45522 2.01768 4.31239 1.98402 4.20001 1.89974C3.61048 1.45761 3.17278 1.23246 2.88751 1.11784C2.81611 1.64732 2.84785 2.1856 2.98386 2.70703C3.02135 2.85072 2.99284 3.00362 2.90639 3.12435C2.48835 3.70759 2.28536 4.41806 2.33217 5.13411C2.33288 5.14495 2.33347 5.1558 2.33347 5.16667C2.33347 7.14237 4.02038 8.33333 5.83347 8.33333C6.02535 8.33339 6.20061 8.44307 6.28399 8.61588C6.36733 8.78873 6.34416 8.99434 6.22475 9.14453C6.00512 9.42047 5.84243 9.73474 5.74753 10.0697C5.65218 10.4063 5.62407 10.761 5.66355 11.1107C5.66564 11.1293 5.6668 11.148 5.6668 11.1667V13.8333C5.6668 14.1094 5.44288 14.3333 5.1668 14.3333C4.89066 14.3333 4.6668 14.1095 4.6668 13.8333V11.1868C4.6188 10.7214 4.65729 10.2487 4.78529 9.79687C4.83764 9.61215 4.9053 9.43282 4.98582 9.25977C3.09689 8.93338 1.35029 7.52358 1.33412 5.19922L1.32696 5.02214C1.30911 4.21346 1.53101 3.41813 1.96368 2.73568C1.79686 1.95511 1.81421 1.14881 2.01641 0.373698L2.04441 0.294271C2.12412 0.117543 2.30116 8.15082e-10 2.50014 8.15082e-10V0.5C2.50014 0 2.49977 -4.36286e-07 2.50014 8.15082e-10H2.51381C2.51898 0.000122248 2.52495 0.000349132 2.53139 0.000651042C2.54428 0.00125763 2.55969 0.0022315 2.57761 0.00390625C2.61384 0.00730283 2.66051 0.0135159 2.71693 0.0240885C2.83002 0.0452917 2.98297 0.0848036 3.17527 0.156901C3.52665 0.288668 4.00873 0.53008 4.62188 0.970052C6.30399 0.677162 8.02896 0.677205 9.71108 0.970052C10.3243 0.530006 10.8063 0.288693 11.1577 0.156901C11.35 0.0847774 11.5029 0.0453066 11.616 0.0240885C11.6725 0.0134947 11.7191 0.00730804 11.7553 0.00390625C11.7735 0.00220653 11.7892 0.00126036 11.8022 0.000651042C11.8087 0.000349611 11.8146 0.000121247 11.8198 8.15082e-10H11.8328C11.8331 0.000906971 11.8334 0.0167558 11.8335 0.291667L11.8328 8.15082e-10C12.0633 6.28658e-05 12.2645 0.157622 12.3191 0.38151C12.5069 1.15258 12.5212 1.95408 12.366 2.73047C12.8278 3.45663 13.0487 4.30504 13.0001 5.16667L12.993 5.41536C12.8735 7.61273 11.1745 8.94561 9.34324 9.26042C9.61917 9.85691 9.73368 10.5205 9.6668 11.1842V13.8333C9.6668 14.1094 9.44288 14.3333 9.1668 14.3333C8.89066 14.3333 8.6668 14.1095 8.6668 13.8333Z\",\n pdd0a600:\n \"M31.5783 24.1953C31.3082 24.8592 30.5625 25.1735 29.9125 24.8976C29.2626 24.6216 28.9549 23.86 29.2232 23.1961C29.4933 22.5322 30.2389 22.2179 30.8889 22.4919C31.5389 22.7678 31.8466 23.5295 31.5764 24.1934\",\n pdf6da80:\n \"M6.65164 5.51741C6.65164 4.13259 7.71418 3.00464 9.02097 3.00464C10.3278 3.00464 11.3903 4.13186 11.3903 5.51741V5.62088C11.34 6.98735 10.299 8.0566 9.02097 8.0566C7.74292 8.0566 6.65164 6.91763 6.65164 5.51741ZM9.02025 8.8345C9.94054 8.8345 10.794 8.41913 11.3889 7.68893V8.84257H12.1511V2.22673H11.3889V3.35983C10.799 2.6377 9.94557 2.22673 9.02025 2.22673C7.29391 2.22673 5.88941 3.70255 5.88941 5.51741C5.88941 7.33227 7.29391 8.8345 9.02025 8.8345Z\",\n pe6db200:\n \"M2.49898 10.6668C2.77513 10.6668 2.99898 10.8907 2.99898 11.1668C2.99898 11.443 2.77513 11.6668 2.49898 11.6668H1.16565C0.889508 11.6668 0.66565 11.443 0.66565 11.1668C0.66565 10.8907 0.889508 10.6668 1.16565 10.6668H2.49898Z\",\n pf3a7200:\n \"M60.0288 18.5273C60.9045 17.312 62.0489 16.6927 63.4635 16.6927C65.0354 16.6927 66.0455 17.2893 66.7862 18.2294C67.3702 18.986 67.5498 19.9958 67.5498 21.2338V28.2973H64.452V22.1284C64.452 20.133 63.8909 19.3757 62.3636 19.3757C60.7924 19.3757 60.0295 20.431 60.0295 22.5409V28.2973H56.931V11.7339H60.0295V18.5273H60.0288Z\",\n};\n","export default {\n p11b77800:\n \"M10.625 6.66667C10.9702 6.66667 11.25 6.94649 11.25 7.29167C11.25 7.63684 10.9702 7.91667 10.625 7.91667H3.95833C3.61316 7.91667 3.33333 7.63684 3.33333 7.29167C3.33333 6.94649 3.61316 6.66667 3.95833 6.66667H10.625Z\",\n p12b7c400:\n \"M25.0353 11.3671C25.7847 12.1326 25.7847 13.3723 25.0353 14.1359C24.2859 14.8994 23.0722 14.9014 22.3247 14.1359C21.5771 13.3704 21.5753 12.1307 22.3247 11.3671C23.0741 10.6017 24.2878 10.6017 25.0353 11.3671Z\",\n p13a81400:\n \"M5.83333 12.9167H3.54167C2.93388 12.9167 2.35116 13.1583 1.92139 13.5881C1.49162 14.0178 1.25 14.6005 1.25 15.2083C1.25 15.8161 1.49162 16.3988 1.92139 16.8286C2.35116 17.2584 2.93388 17.5 3.54167 17.5C4.14946 17.5 4.73218 17.2584 5.16195 16.8286C5.59172 16.3988 5.83333 15.8161 5.83333 15.2083V12.9167ZM7.08333 15.2083C7.08333 16.1476 6.70993 17.0482 6.04574 17.7124C5.38154 18.3766 4.48097 18.75 3.54167 18.75C2.60236 18.75 1.70179 18.3766 1.0376 17.7124C0.373407 17.0482 0 16.1476 0 15.2083C0 14.269 0.373407 13.3685 1.0376 12.7043C1.70179 12.0401 2.60236 11.6667 3.54167 11.6667H6.45833C6.80351 11.6667 7.08333 11.9465 7.08333 12.2917V15.2083Z\",\n p1477c870:\n \"M11.0256 6.84578C11.2696 6.60171 11.6653 6.60171 11.9093 6.84578C12.1534 7.08986 12.1534 7.4855 11.9093 7.72957L8.57601 11.0629C8.33193 11.307 7.9363 11.307 7.69222 11.0629L6.02555 9.39624C5.78147 9.15216 5.78147 8.75653 6.02555 8.51245C6.25439 8.28361 6.61666 8.26906 6.86214 8.46932L6.90934 8.51245L8.13411 9.73722L11.0256 6.84578Z\",\n p15071f00:\n \"M8.00803 7.66341C8.04469 7.27086 8.20705 6.89881 8.47352 6.60417L13.2893 1.27799C13.3106 1.25416 13.3246 1.22432 13.3296 1.19271C13.3347 1.16099 13.3303 1.12832 13.3173 1.09896C13.3042 1.06964 13.2829 1.04489 13.2561 1.02734C13.2425 1.0185 13.2278 1.01172 13.2125 1.00716L13.1656 1H1.16688C1.13465 1.00001 1.10276 1.00912 1.07574 1.02669C1.04876 1.04426 1.02761 1.06954 1.01454 1.09896C1.00148 1.12835 0.997146 1.16094 1.00217 1.19271C1.00721 1.22432 1.02119 1.25415 1.04253 1.27799L5.85959 6.60417C6.16426 6.94101 6.33334 7.37914 6.33355 7.83333V11.8333C6.33353 11.8643 6.34201 11.8949 6.35829 11.9212C6.37452 11.9475 6.39775 11.9686 6.42534 11.9824L7.75803 12.6491C7.7834 12.6618 7.81237 12.6679 7.84071 12.6667C7.86906 12.6654 7.89664 12.6568 7.92079 12.6419C7.94494 12.627 7.96491 12.6062 7.97873 12.5814C7.99256 12.5566 8.00023 12.5284 8.00021 12.5V7.83333L8.00803 7.66341ZM9.00021 12.5L8.99045 12.6478C8.9717 12.7949 8.92499 12.9374 8.85243 13.0677C8.75565 13.2415 8.61598 13.3882 8.44683 13.4928C8.2778 13.5973 8.0848 13.657 7.88628 13.666C7.68763 13.675 7.48996 13.6325 7.31206 13.5436L5.97808 12.877C5.78433 12.78 5.62125 12.6309 5.50738 12.4466C5.40774 12.2853 5.34917 12.1024 5.33615 11.9141L5.33355 11.8333V7.83333C5.33342 7.6528 5.27426 7.47806 5.16688 7.33464L5.11805 7.27474L0.300996 1.94857C0.149827 1.78107 0.0500488 1.57307 0.0145376 1.35026C-0.0209584 1.12747 0.00887152 0.898878 0.100475 0.692708C0.192063 0.486635 0.341778 0.311764 0.530814 0.188802C0.719905 0.065853 0.940685 0.000125922 1.16623 0H13.1675L13.2522 0.00325521C13.4479 0.0179044 13.6372 0.0817699 13.8023 0.189453C13.9911 0.312619 14.1407 0.48791 14.232 0.69401C14.3233 0.900086 14.3529 1.12835 14.3173 1.35091C14.2817 1.57349 14.1825 1.78123 14.0315 1.94857L9.21571 7.27474C9.0772 7.42781 9.00036 7.62691 9.00021 7.83333V12.5Z\",\n p176ffd80:\n \"M34.6619 2.22648C33.9384 2.22648 33.2538 2.5281 32.7581 3.05942V2.22648H32.0224V8.84232H32.7581V4.92419C32.7832 3.85861 33.6367 2.99117 34.6619 2.99117C35.687 2.99117 36.552 3.85714 36.552 4.92198V8.84232H37.3006V4.92198C37.3006 3.43516 36.1166 2.22574 34.6619 2.22574\",\n p198d14a0:\n \"M4.58649 12.7439C4.85661 12.0799 5.60227 11.7657 6.25413 12.0397C6.90412 12.3156 7.21176 13.0773 6.94164 13.7412C6.67151 14.4051 5.92586 14.7193 5.27587 14.4434C4.62588 14.1675 4.31824 13.4059 4.58649 12.7419\",\n p19a9df00:\n \"M4.75708 3.5C4.75708 2.65314 4.98412 1.82984 5.40357 1.11068C4.70712 1.25236 4.04133 1.52838 3.44458 1.92708C2.54012 2.53142 1.83483 3.3902 1.41854 4.39518C1.00228 5.40014 0.893205 6.50606 1.10539 7.57292C1.31761 8.63981 1.84141 9.62013 2.6106 10.3893C3.37979 11.1585 4.36011 11.6823 5.42701 11.8945C6.49387 12.1067 7.59978 11.9976 8.60474 11.5814C9.60972 11.1651 10.4685 10.4598 11.0728 9.55534C11.4716 8.95846 11.7469 8.29233 11.8886 7.5957C11.1695 8.01507 10.3467 8.24284 9.49992 8.24284C8.2421 8.24284 7.03582 7.74293 6.14641 6.85352C5.25699 5.9641 4.75708 4.75783 4.75708 3.5ZM5.75708 3.5C5.75708 4.49261 6.15156 5.4446 6.85344 6.14648C7.55532 6.84836 8.50731 7.24284 9.49992 7.24284C10.4925 7.24284 11.4445 6.84836 12.1464 6.14648C12.2894 6.0035 12.5045 5.9604 12.6913 6.03776C12.8782 6.11515 12.9999 6.29777 12.9999 6.5C12.9999 7.78558 12.6185 9.04241 11.9042 10.1113C11.19 11.1801 10.1751 12.0133 8.98755 12.5052C7.79983 12.9972 6.49257 13.1258 5.23169 12.875C3.97088 12.6242 2.81257 12.0054 1.90357 11.0964C0.994566 10.1874 0.375747 9.02905 0.124923 7.76823C-0.125881 6.50735 0.00274539 5.20009 0.494715 4.01237C0.986662 2.8248 1.81982 1.80989 2.8886 1.0957C3.95751 0.381474 5.21435 5.02751e-07 6.49992 0C6.70215 0 6.88477 0.121757 6.96216 0.308594C7.03952 0.495419 6.99643 0.710529 6.85344 0.853516C6.15156 1.5554 5.75708 2.50739 5.75708 3.5Z\",\n p19b24080:\n \"M72.0375 22.6361C72.0375 24.4252 73.4068 25.824 75.136 25.824C76.8652 25.824 78.2568 24.4018 78.2568 22.6823C78.2568 20.9628 76.8422 19.5406 75.136 19.5406C73.4298 19.5406 72.0375 20.9856 72.0375 22.6368V22.6361ZM69.1897 22.5898C69.1897 19.5751 71.521 16.6961 75.1583 16.6961C78.4091 16.6961 81.0823 19.1729 81.0823 22.6588C81.0823 25.9084 78.7733 28.6443 75.0915 28.6443C71.4096 28.6443 69.1904 25.6046 69.1904 22.5898H69.1897Z\",\n p19e54a80:\n \"M7.23372 0.00260417C7.36902 0.0136346 7.49948 0.0578751 7.61393 0.130859L7.66992 0.169271L7.72201 0.212891C7.82297 0.303374 7.90022 0.417111 7.94727 0.544271L7.96875 0.608724L7.97135 0.61849L9.02539 4.70833L9.0599 4.81445C9.10166 4.91716 9.16391 5.01092 9.24284 5.08984C9.34808 5.19505 9.47962 5.27009 9.6237 5.30729L13.7135 6.36133L13.722 6.36328C13.8758 6.40571 14.0137 6.49147 14.1198 6.60938L14.1634 6.66211L14.2025 6.7181C14.2878 6.85166 14.334 7.00722 14.334 7.16667C14.334 7.34907 14.2739 7.52676 14.1634 7.67188C14.0529 7.81692 13.8978 7.92155 13.722 7.97005L13.7135 7.97266L9.6237 9.02604C9.47954 9.06325 9.34811 9.13887 9.24284 9.24414C9.1376 9.3494 9.06259 9.48088 9.02539 9.625L7.9707 13.7148C7.96988 13.718 7.96898 13.7214 7.9681 13.7246C7.91912 13.8996 7.81401 14.0542 7.66927 14.1641C7.52439 14.274 7.34722 14.334 7.16536 14.334C6.9835 14.334 6.80635 14.274 6.66146 14.1641C6.51669 14.0542 6.41162 13.8997 6.36263 13.7246C6.36174 13.7214 6.36086 13.7181 6.36003 13.7148L5.30599 9.625C5.26879 9.48089 5.19376 9.3494 5.08854 9.24414C4.98329 9.13889 4.85181 9.06326 4.70768 9.02604L0.617188 7.97135C0.613396 7.97037 0.609236 7.96982 0.605469 7.96875C0.431153 7.91922 0.277895 7.81384 0.16862 7.66927C0.0592919 7.52459 0 7.34801 0 7.16667C3.60642e-05 6.98543 0.0593814 6.80933 0.16862 6.66471L0.211589 6.61198C0.31652 6.49439 0.452992 6.40858 0.605469 6.36523L0.617188 6.36198L4.70768 5.30664C4.85175 5.26946 4.98329 5.19437 5.08854 5.08919C5.19381 4.98399 5.26872 4.85242 5.30599 4.70833L6.36068 0.61849C6.36152 0.615229 6.36237 0.611967 6.36328 0.608724C6.41228 0.433624 6.51726 0.279179 6.66211 0.169271L6.7181 0.130859C6.85154 0.0457758 7.00682 0 7.16602 0L7.23372 0.00260417ZM6.27474 4.95833L6.27409 4.95898C6.1921 5.27578 6.02699 5.56487 5.79557 5.79622C5.56392 6.02771 5.27415 6.19298 4.95703 6.27474L1.50065 7.16602L4.95703 8.05794C5.27426 8.13978 5.56391 8.30545 5.79557 8.53711C6.02714 8.76871 6.1929 9.05789 6.27474 9.375L7.16536 12.8314L8.05664 9.375C8.13849 9.05787 8.30423 8.76871 8.53581 8.53711C8.76747 8.30545 9.05712 8.13978 9.37435 8.05794L12.832 7.16667L9.37435 6.27539C9.05716 6.19356 8.76745 6.02848 8.53581 5.79688C8.33312 5.59419 8.18079 5.34724 8.09115 5.07617L8.05664 4.95833L7.16536 1.50195L6.27474 4.95833Z\",\n p19f95700:\n \"M6.66685 1.87518C6.66685 1.75157 6.63054 1.63047 6.56187 1.52769C6.49319 1.42492 6.3953 1.34468 6.28111 1.29738C6.16692 1.2501 6.04099 1.23828 5.91978 1.26239C5.79861 1.28653 5.68732 1.34592 5.59995 1.43329C5.51259 1.52065 5.45319 1.63194 5.42906 1.75311C5.40494 1.87433 5.41677 2.00025 5.46405 2.11444C5.51135 2.22864 5.59158 2.32653 5.69435 2.3952C5.79714 2.46388 5.91824 2.50018 6.04185 2.50018H6.66685V1.87518ZM7.91685 3.12518C7.91685 3.47036 7.63703 3.75018 7.29185 3.75018H6.04185C5.67106 3.75018 5.3085 3.6404 5.00018 3.43443C4.69187 3.22842 4.45118 2.93553 4.30926 2.59296C4.1674 2.25048 4.13042 1.87337 4.20266 1.50978C4.275 1.14607 4.45394 0.811722 4.71616 0.549498C4.97839 0.287275 5.31274 0.108337 5.67645 0.0359892C6.04003 -0.0362449 6.41714 0.000738128 6.75962 0.142597C7.10219 0.284517 7.39508 0.525202 7.60109 0.833515C7.80707 1.14183 7.91685 1.50439 7.91685 1.87518V3.12518Z\",\n p19fac170:\n \"M13.8323 2.00017C14.1085 2.00017 14.3323 2.22402 14.3323 2.50017C14.3323 2.77631 14.1085 3.00017 13.8323 3.00017H11.1657C10.8895 3.00017 10.6657 2.77631 10.6657 2.50017C10.6657 2.22402 10.8895 2.00017 11.1657 2.00017H13.8323Z\",\n p1b548e00:\n \"M7.50018 11.8752C7.50018 11.53 7.22036 11.2502 6.87518 11.2502C6.53 11.2502 6.25018 11.53 6.25018 11.8752V16.0418C6.25018 16.387 6.53 16.6668 6.87518 16.6668C7.22036 16.6668 7.50018 16.387 7.50018 16.0418V11.8752ZM8.75018 16.0418C8.75018 17.0774 7.91072 17.9168 6.87518 17.9168C5.83965 17.9168 5.00018 17.0774 5.00018 16.0418V11.8752C5.00018 10.8396 5.83965 10.0002 6.87518 10.0002C7.91072 10.0002 8.75018 10.8396 8.75018 11.8752V16.0418Z\",\n p1c4b9e80:\n \"M13.558 7.41602C13.7884 7.26395 14.0986 7.32752 14.2507 7.55794C14.4027 7.78838 14.3392 8.09853 14.1087 8.25065C12.0489 9.61057 9.63497 10.3353 7.16669 10.3353C4.69841 10.3353 2.28449 9.61057 0.224633 8.25065C-0.00578628 8.09853 -0.0693641 7.78838 0.082706 7.55794C0.234831 7.32752 0.544975 7.26395 0.775414 7.41602C2.67181 8.66804 4.89427 9.33529 7.16669 9.33529C9.43911 9.33529 11.6616 8.66804 13.558 7.41602Z\",\n p1c738580:\n \"M25.0372 25.5739C24.2878 26.3394 23.0741 26.3394 22.3247 25.5739C21.5753 24.8085 21.5753 23.5688 22.3247 22.8052C23.0741 22.0397 24.2859 22.0397 25.0353 22.8052C25.7847 23.5707 25.7847 24.8104 25.0353 25.5739\",\n p1cc79400:\n \"M54.8878 17.8422L53.3612 19.6769C52.7326 19.1955 52.1262 18.943 51.5429 18.943C50.869 18.943 50.3532 19.3562 50.3532 19.8831C50.3532 20.41 50.6449 20.617 52.104 21.1446C54.6637 22.062 55.4496 22.8421 55.4496 24.6305C55.4496 26.9929 53.5408 28.6668 50.8467 28.6668C49.1628 28.6668 47.7712 28.0474 46.6706 26.8094L48.2648 24.883C49.1175 25.7548 49.9933 26.2128 50.869 26.2128C51.655 26.2128 52.2613 25.6851 52.2613 24.9747C52.2613 24.3553 52.0142 24.0801 50.5773 23.5525C47.9056 22.5889 47.3667 21.855 47.3667 20.2273C47.3667 18.0484 49.0952 16.6497 51.2957 16.6497C52.6428 16.6497 53.8325 17.0394 54.8878 17.8422Z\",\n p1ce87000:\n \"M7.73031 0.140071C7.97579 -0.060186 8.33806 -0.0456335 8.56689 0.183203L12.7336 4.34987C12.9776 4.59395 12.9776 4.98958 12.7336 5.23366C12.4895 5.47774 12.0938 5.47774 11.8498 5.23366L8.125 1.50889L4.40023 5.23366C4.15615 5.47774 3.76052 5.47774 3.51644 5.23366C3.27236 4.98958 3.27236 4.59395 3.51644 4.34987L7.68311 0.183203L7.73031 0.140071Z\",\n p1e780800:\n \"M11.6667 3.54167C11.6667 3.24072 11.6077 2.94243 11.4925 2.66439C11.3773 2.38641 11.208 2.13415 10.9953 1.92139C10.7825 1.70862 10.5303 1.53932 10.2523 1.42415C9.97424 1.30899 9.67595 1.25 9.375 1.25H7.08333V5.83333H9.375C9.67595 5.83333 9.97424 5.77435 10.2523 5.65918C10.5303 5.54401 10.7825 5.37471 10.9953 5.16195C11.208 4.94918 11.3773 4.69692 11.4925 4.41895C11.6077 4.14091 11.6667 3.84261 11.6667 3.54167ZM12.9167 3.54167C12.9167 4.00663 12.8252 4.46706 12.6473 4.89665C12.4693 5.32634 12.2079 5.71686 11.8791 6.04574C11.5502 6.37461 11.1597 6.63598 10.73 6.81396C10.3004 6.99185 9.83996 7.08333 9.375 7.08333H6.45833C6.11316 7.08333 5.83333 6.80351 5.83333 6.45833V0.625C5.83333 0.279822 6.11316 0 6.45833 0H9.375C9.83996 0 10.3004 0.0914875 10.73 0.269368C11.1597 0.447354 11.5502 0.708723 11.8791 1.0376C12.2079 1.36647 12.4693 1.75699 12.6473 2.18669C12.8252 2.61627 12.9167 3.07671 12.9167 3.54167Z\",\n p1e95f780:\n \"M11.6667 9.375C11.6667 9.07405 11.6077 8.77576 11.4925 8.49772C11.3773 8.21974 11.208 7.96748 10.9953 7.75472C10.7825 7.54196 10.5303 7.37265 10.2523 7.25749C9.97424 7.14232 9.67595 7.08333 9.375 7.08333C9.07405 7.08333 8.77576 7.14232 8.49772 7.25749C8.21974 7.37265 7.96748 7.54196 7.75472 7.75472C7.54196 7.96748 7.37265 8.21974 7.25749 8.49772C7.14232 8.77576 7.08333 9.07405 7.08333 9.375C7.08333 9.67595 7.14232 9.97424 7.25749 10.2523C7.37265 10.5303 7.54196 10.7825 7.75472 10.9953C7.96748 11.208 8.21974 11.3773 8.49772 11.4925C8.77576 11.6077 9.07405 11.6667 9.375 11.6667C9.67595 11.6667 9.97424 11.6077 10.2523 11.4925C10.5303 11.3773 10.7825 11.208 10.9953 10.9953C11.208 10.7825 11.3773 10.5303 11.4925 10.2523C11.6077 9.97424 11.6667 9.67595 11.6667 9.375ZM12.9167 9.375C12.9167 9.83996 12.8252 10.3004 12.6473 10.73C12.4693 11.1597 12.2079 11.5502 11.8791 11.8791C11.5502 12.2079 11.1597 12.4693 10.73 12.6473C10.3004 12.8252 9.83996 12.9167 9.375 12.9167C8.91004 12.9167 8.44961 12.8252 8.02002 12.6473C7.59032 12.4693 7.19981 12.2079 6.87093 11.8791C6.54206 11.5502 6.28069 11.1597 6.1027 10.73C5.92482 10.3004 5.83333 9.83996 5.83333 9.375C5.83333 8.91004 5.92482 8.4496 6.1027 8.02002C6.28069 7.59032 6.54206 7.1998 6.87093 6.87093C7.19981 6.54206 7.59032 6.28069 8.02002 6.1027C8.44961 5.92482 8.91004 5.83333 9.375 5.83333C9.83996 5.83333 10.3004 5.92482 10.73 6.1027C11.1597 6.28069 11.5502 6.54206 11.8791 6.87093C12.2079 7.19981 12.4693 7.59033 12.6473 8.02002C12.8252 8.4496 12.9167 8.91004 12.9167 9.375Z\",\n p1ff1c880:\n \"M21.4593 28.3008V17.063H24.5571V18.4618C25.4551 17.292 26.6003 16.6961 27.9918 16.6961C30.2146 16.6961 32.0782 18.0031 32.0782 21.0303V28.3008H28.9797V22.1312C28.9797 20.2502 28.4631 19.3791 26.892 19.3791C25.3208 19.3791 24.5571 20.3655 24.5571 22.4753V28.3008H21.4593Z\",\n p2008000:\n \"M13.174 22.7703C13.174 24.5132 13.4656 25.5223 14.6108 25.5223C14.7451 25.5223 14.8809 25.4995 15.0375 25.4768V28.2288C14.7006 28.275 14.2968 28.2971 14.0044 28.2971C11.2651 28.2971 10.0754 26.3479 10.0754 23.7566V11.8613H13.174V22.771V22.7703Z\",\n p200e1200:\n \"M4.66667 9.83333V0.5C4.66667 0.223858 4.89052 0 5.16667 0C5.44281 0 5.66667 0.223858 5.66667 0.5V9.83333C5.66667 10.1095 5.44281 10.3333 5.16667 10.3333C4.89052 10.3333 4.66667 10.1095 4.66667 9.83333Z\",\n p2060d500:\n \"M14.0413 13.3333C14.3865 13.3333 14.6663 13.6132 14.6663 13.9583C14.6663 14.3035 14.3865 14.5833 14.0413 14.5833C13.8859 14.5834 13.7951 14.6142 13.7305 14.6468C13.6534 14.6857 13.5834 14.7413 13.4619 14.847C13.2177 15.0594 12.8332 15.4167 12.1248 15.4167C11.7805 15.4166 11.496 15.3433 11.2508 15.2197C11.0182 15.1024 10.843 14.9495 10.7251 14.847C10.4901 14.6427 10.4163 14.5833 10.2083 14.5833C10.0528 14.5833 9.96217 14.6142 9.89746 14.6468C9.82029 14.6857 9.75053 14.7412 9.62891 14.847C9.38473 15.0593 9.00022 15.4166 8.29183 15.4167C7.94749 15.4167 7.66297 15.3433 7.41781 15.2197C7.18525 15.1025 7.01005 14.9496 6.89209 14.847C6.65724 14.6428 6.58309 14.5834 6.37533 14.5833C6.21969 14.5833 6.12836 14.6142 6.06364 14.6468C5.9866 14.6857 5.91734 14.7414 5.7959 14.847C5.55171 15.0593 5.16666 15.4167 4.45801 15.4167C4.11349 15.4166 3.83031 15.3432 3.58643 15.2148C3.35726 15.0942 3.18732 14.9353 3.07943 14.8372C2.95832 14.7272 2.89887 14.6775 2.83122 14.6419C2.77831 14.6141 2.69681 14.5833 2.5415 14.5833C2.38597 14.5834 2.29533 14.6142 2.23063 14.6468C2.15348 14.6857 2.08367 14.7413 1.96208 14.847C1.71787 15.0594 1.33341 15.4167 0.625 15.4167C0.279822 15.4167 0 15.1368 0 14.7917C0 14.4465 0.279822 14.1667 0.625 14.1667C0.833013 14.1667 0.906788 14.1073 1.14176 13.903C1.25969 13.8005 1.4349 13.6476 1.66748 13.5303C1.91262 13.4067 2.19721 13.3334 2.5415 13.3333C2.88599 13.3333 3.16921 13.4069 3.41309 13.5352C3.6422 13.6557 3.81219 13.8147 3.92008 13.9128C4.04109 14.0228 4.10077 14.0725 4.16829 14.1081C4.22116 14.1359 4.30291 14.1666 4.45801 14.1667C4.66602 14.1667 4.74061 14.1073 4.97559 13.903C5.09354 13.8004 5.26881 13.6475 5.5013 13.5303C5.74644 13.4067 6.03104 13.3333 6.37533 13.3333C7.0837 13.3334 7.46825 13.6907 7.7124 13.903C7.83403 14.0088 7.90379 14.0643 7.98096 14.1032C8.04566 14.1358 8.13636 14.1667 8.29183 14.1667C8.49972 14.1666 8.57368 14.1073 8.80859 13.903C8.92654 13.8004 9.10173 13.6476 9.33431 13.5303C9.57949 13.4067 9.86396 13.3333 10.2083 13.3333C10.9167 13.3333 11.3012 13.6906 11.5454 13.903C11.667 14.0087 11.7368 14.0643 11.814 14.1032C11.8787 14.1358 11.9693 14.1666 12.1248 14.1667C12.3328 14.1667 12.4066 14.1073 12.6416 13.903C12.7596 13.8004 12.9354 13.6476 13.1681 13.5303C13.4132 13.4068 13.6973 13.3334 14.0413 13.3333Z\",\n p20889a80:\n \"M0.146447 0.146447C0.341709 -0.0488155 0.658216 -0.0488155 0.853478 0.146447L8.85348 8.14645C9.04874 8.34171 9.04874 8.65822 8.85348 8.85348C8.65822 9.04874 8.34171 9.04874 8.14645 8.85348L0.146447 0.853478C-0.0488155 0.658216 -0.0488155 0.341709 0.146447 0.146447Z\",\n p21215b00:\n \"M12.5026 4.67236C13.1545 4.39836 13.8983 4.71452 14.1684 5.37844C14.4367 6.04236 14.1271 6.804 13.4762 7.078C12.8262 7.352 12.0806 7.03585 11.8123 6.37193C11.5441 5.70609 11.8536 4.94636 12.5036 4.67045\",\n p21e32300:\n \"M10.6667 5.83333C10.6667 3.16396 8.50271 1 5.83333 1C3.16396 1 1 3.16396 1 5.83333C1 8.50271 3.16396 10.6667 5.83333 10.6667C8.50271 10.6667 10.6667 8.50271 10.6667 5.83333ZM11.6667 5.83333C11.6667 9.05499 9.05499 11.6667 5.83333 11.6667C2.61167 11.6667 0 9.05499 0 5.83333C0 2.61167 2.61167 0 5.83333 0C9.05499 0 11.6667 2.61167 11.6667 5.83333Z\",\n p22d2dc00:\n \"M4.66667 1.16667C4.66667 1.07462 4.59205 1 4.5 1H1.16667C1.07462 1 1 1.07462 1 1.16667V4.5C1 4.59205 1.07462 4.66667 1.16667 4.66667H4.5C4.59205 4.66667 4.66667 4.59205 4.66667 4.5V1.16667ZM5.66667 4.5C5.66667 5.14433 5.14433 5.66667 4.5 5.66667H1.16667C0.522334 5.66667 0 5.14433 0 4.5V1.16667C0 0.522334 0.522334 0 1.16667 0H4.5C5.14433 0 5.66667 0.522334 5.66667 1.16667V4.5Z\",\n p236d3680:\n \"M9.25315 9.25315C9.44841 9.05789 9.76492 9.05789 9.96018 9.25315L12.8534 12.1464C13.0487 12.3416 13.0487 12.6581 12.8534 12.8534C12.6581 13.0487 12.3416 13.0487 12.1464 12.8534L9.25315 9.96018C9.05789 9.76492 9.05789 9.44841 9.25315 9.25315Z\",\n p23ebb500:\n \"M12 5.83268C12 5.71152 11.9735 5.59168 11.9225 5.48177C11.8715 5.37187 11.797 5.27418 11.7044 5.19596L11.7018 5.19401L7.03516 1.19466C6.88522 1.06915 6.69562 1 6.5 1C6.30422 1 6.11419 1.0683 5.96419 1.19401L1.29818 5.19401L1.29557 5.19596C1.20303 5.27418 1.12849 5.37187 1.07747 5.48177C1.02648 5.59168 0.999998 5.71152 1 5.83268V11.8327C1 12.0537 1.08786 12.2662 1.24414 12.4225C1.4004 12.5787 1.6124 12.666 1.83333 12.666H11.1667C11.3876 12.666 11.5996 12.5787 11.7559 12.4225C11.9121 12.2662 12 12.0537 12 11.8327V5.83268ZM13 11.8327C13 12.3189 12.8067 12.7857 12.4629 13.1296C12.1191 13.4733 11.6528 13.666 11.1667 13.666H1.83333C1.34718 13.666 0.880909 13.4733 0.537109 13.1296C0.193293 12.7857 0 12.3189 0 11.8327V5.83268C-2.26206e-06 5.56616 0.0583982 5.30297 0.170573 5.0612C0.282817 4.8193 0.446068 4.60443 0.64974 4.43229L5.3138 0.435547L5.31641 0.432943C5.64731 0.153276 6.06674 0 6.5 0C6.87906 0 7.24751 0.117304 7.55534 0.333984L7.68359 0.432943L7.6862 0.435547L12.3496 4.43229C12.5533 4.60444 12.7172 4.81928 12.8294 5.0612C12.9416 5.30297 13 5.56616 13 5.83268V11.8327Z\",\n p23f5ac40:\n \"M12.4764 32.2553C11.8264 31.9794 11.5187 31.2177 11.787 30.5538C12.0571 29.8899 12.8028 29.5757 13.4546 29.8497C14.1046 30.1256 14.4123 30.8872 14.1421 31.5511C13.872 32.2151 13.1264 32.5312 12.4764 32.2534\",\n p244a7b00:\n \"M9.33336 3.16667V1.83333C9.33336 1.61232 9.2455 1.40042 9.08922 1.24414C8.93294 1.08786 8.72104 1 8.50002 1H5.83336C5.61234 1 5.40044 1.08786 5.24416 1.24414C5.08788 1.40042 5.00002 1.61232 5.00002 1.83333V3.16667C5.00002 3.44281 4.77617 3.66667 4.50002 3.66667C4.22388 3.66667 4.00002 3.44281 4.00002 3.16667V1.83333C4.00002 1.3471 4.19332 0.880926 4.53713 0.537109C4.88095 0.193293 5.34713 0 5.83336 0H8.50002C8.98625 0 9.45243 0.193293 9.79625 0.537109C10.1401 0.880926 10.3334 1.3471 10.3334 1.83333V3.16667C10.3334 3.44281 10.1095 3.66667 9.83336 3.66667C9.55722 3.66667 9.33336 3.44281 9.33336 3.16667Z\",\n p24988480:\n \"M18.0824 0C8.11124 0 0 8.28513 0 18.4701C0 28.655 8.11124 36.9401 18.0824 36.9401C28.0536 36.9401 36.1648 28.655 36.1648 18.4701C36.1648 8.28513 28.0517 0 18.0824 0Z\",\n p2655d7c0:\n \"M7.5 10.6251V0.625098C7.5 0.27992 7.77982 9.75514e-05 8.125 9.75514e-05C8.47018 9.75514e-05 8.75 0.27992 8.75 0.625098V10.6251C8.75 10.9703 8.47018 11.2501 8.125 11.2501C7.77982 11.2501 7.5 10.9703 7.5 10.6251Z\",\n p2721b380: \"M21.8142 8.84331H22.5757V2.22673H21.8142V8.84257V8.84331Z\",\n p274a6800:\n \"M17.2812 8.05586C16.0039 8.05586 14.9637 6.98662 14.9119 5.62015V5.51667C14.9119 4.13186 15.9745 3.0039 17.2812 3.0039C18.588 3.0039 19.6499 4.13113 19.6499 5.51667C19.6499 6.90222 18.5873 8.05586 17.2812 8.05586ZM20.4114 5.51741C20.4114 3.70255 19.0069 2.22673 17.2805 2.22673C16.3552 2.22673 15.5017 2.63697 14.9112 3.35983V2.22673H14.149V11.2277H14.9112V7.68893C15.5061 8.41986 16.3602 8.8345 17.2805 8.8345C19.0069 8.8345 20.4114 7.34695 20.4114 5.51741Z\",\n p279d1fa0:\n \"M12 8.5C12 8.40795 11.9254 8.33333 11.8333 8.33333H8.5C8.40795 8.33333 8.33333 8.40795 8.33333 8.5V11.8333C8.33333 11.9254 8.40795 12 8.5 12H11.8333C11.9254 12 12 11.9254 12 11.8333V8.5ZM13 11.8333C13 12.4777 12.4777 13 11.8333 13H8.5C7.85567 13 7.33333 12.4777 7.33333 11.8333V8.5C7.33333 7.85567 7.85567 7.33333 8.5 7.33333H11.8333C12.4777 7.33333 13 7.85567 13 8.5V11.8333Z\",\n p28366208:\n \"M23.6875 4.68482C24.3375 4.96073 24.6451 5.72238 24.375 6.3863C24.1049 7.05022 23.3592 7.36446 22.7092 7.08854C22.0592 6.81263 21.7516 6.05098 22.0198 5.38706C22.29 4.72314 23.0356 4.40699 23.6856 4.6829\",\n p289a6d00:\n \"M9.83333 4.66667C10.1095 4.66667 10.3333 4.89052 10.3333 5.16667C10.3333 5.44281 10.1095 5.66667 9.83333 5.66667H0.5C0.223858 5.66667 0 5.44281 0 5.16667C0 4.89052 0.223858 4.66667 0.5 4.66667H9.83333Z\",\n p28bbcf00:\n \"M2.50018 11.2502H1.87518C1.75157 11.2502 1.63047 11.2865 1.52769 11.3552C1.42492 11.4238 1.34468 11.5217 1.29738 11.6359C1.2501 11.7501 1.23828 11.876 1.26239 11.9973C1.28653 12.1184 1.34592 12.2297 1.43329 12.3171C1.52065 12.4044 1.63194 12.4638 1.75311 12.488C1.87433 12.5121 2.00025 12.5003 2.11444 12.453C2.22864 12.4057 2.32653 12.3254 2.3952 12.2227C2.46388 12.1199 2.50018 11.9988 2.50018 11.8752V11.2502ZM3.75018 11.8752C3.75018 12.246 3.6404 12.6085 3.43443 12.9168C3.22842 13.2252 2.93552 13.4658 2.59296 13.6078C2.25048 13.7496 1.87337 13.7866 1.50978 13.7144C1.14607 13.642 0.811721 13.4631 0.549498 13.2009C0.287275 12.9386 0.108337 12.6043 0.0359891 12.2406C-0.0362448 11.877 0.000738117 11.4999 0.142597 11.1574C0.284516 10.8148 0.525202 10.5219 0.833515 10.3159C1.14183 10.11 1.50439 10.0002 1.87518 10.0002H3.12518C3.47036 10.0002 3.75018 10.28 3.75018 10.6252V11.8752Z\",\n p28d34b00:\n \"M12.5 0.666667C12.7761 0.666667 13 0.890524 13 1.16667C13 1.44281 12.7761 1.66667 12.5 1.66667H7.83333C7.55719 1.66667 7.33333 1.44281 7.33333 1.16667C7.33333 0.890524 7.55719 0.666667 7.83333 0.666667H12.5Z\",\n p2906ff00:\n \"M12.5 11.3333C12.7761 11.3333 13 11.5572 13 11.8333C13 12.1095 12.7761 12.3333 12.5 12.3333H7.83333C7.55719 12.3333 7.33333 12.1095 7.33333 11.8333C7.33333 11.5572 7.55719 11.3333 7.83333 11.3333H12.5Z\",\n p29ae5900:\n \"M13.3334 4.5C13.3334 4.03976 12.9603 3.66667 12.5 3.66667H1.83336C1.37312 3.66667 1.00002 4.03976 1.00002 4.5V11.1667C1.00002 11.6269 1.37312 12 1.83336 12H12.5C12.9603 12 13.3334 11.6269 13.3334 11.1667V4.5ZM14.3334 11.1667C14.3334 12.1792 13.5125 13 12.5 13H1.83336C0.820835 13 2.37629e-05 12.1792 2.37629e-05 11.1667V4.5C2.37629e-05 3.48748 0.820835 2.66667 1.83336 2.66667H12.5C13.5125 2.66667 14.3334 3.48748 14.3334 4.5V11.1667Z\",\n p29ef2700:\n \"M3.78229 0.000964942C3.96704 -0.00121546 4.14819 0.0493413 4.30313 0.149077L4.37393 0.199533L4.44392 0.263823C4.54561 0.371991 4.61902 0.502378 4.66283 0.643869H4.66527L6.37263 5.76675H11.6078L13.3469 0.632475L13.3599 0.598296C13.4277 0.431706 13.5398 0.286652 13.6846 0.180001L13.6977 0.17105C13.8618 0.0566323 14.0583 -0.00342752 14.2584 0.00015114L14.3308 0.00584776C14.5305 0.032846 14.7154 0.123734 14.8598 0.263823C14.9417 0.334844 15.0132 0.416769 15.0673 0.510405L15.1259 0.631662L15.1397 0.669097L17.9148 9.00243L17.9156 9.00569C18.0014 9.26786 17.9958 9.5513 17.8993 9.80972C17.8085 10.053 17.6414 10.2588 17.4249 10.4005L9.35033 16.1346C9.13401 16.2881 8.84427 16.2886 8.62767 16.1354L0.519762 10.4022L0.514065 10.3981C0.300834 10.244 0.142169 10.0257 0.0607774 9.77554C-0.0205503 9.52531 -0.0202373 9.25577 0.0615912 9.00569L0.062405 9.0008L2.87084 0.634917L2.88467 0.598296C2.95238 0.431745 3.06464 0.286641 3.20938 0.180001L3.22321 0.17105C3.37258 0.0669371 3.54821 0.0104431 3.7294 0.00340635V0.00177874C3.74582 0.000667554 3.76265 0.00121504 3.77904 0.000964942L3.78311 0.00015114L3.78229 0.000964942ZM1.25056 9.38899L8.98737 14.8586L16.7022 9.38248L16.7201 9.37027L14.2348 1.90689L12.647 6.59195C12.5611 6.84564 12.3233 7.01672 12.0554 7.01675H5.92178C5.65292 7.01667 5.41444 6.84454 5.32933 6.58951L3.7652 1.89875L1.25056 9.38899Z\",\n p2a326440:\n \"M8.14645 0.146447C8.34171 -0.0488155 8.65822 -0.0488155 8.85348 0.146447C9.04874 0.341709 9.04874 0.658216 8.85348 0.853478L4.85348 4.85348C4.65822 5.04874 4.34171 5.04874 4.14645 4.85348L0.146447 0.853478C-0.0488155 0.658216 -0.0488155 0.341709 0.146447 0.146447C0.341709 -0.0488155 0.658216 -0.0488155 0.853478 0.146447L4.49996 3.79293L8.14645 0.146447Z\",\n p2a86000:\n \"M0 14.7917V3.125C0 2.77982 0.279822 2.5 0.625 2.5C0.970178 2.5 1.25 2.77982 1.25 3.125V14.7917C1.25 14.856 1.28805 15.02 1.58773 15.2612C1.88174 15.4978 2.35455 15.7452 3.01921 15.9668C4.34443 16.4085 6.18161 16.6667 8.125 16.6667C10.0684 16.6667 11.9056 16.4085 13.2308 15.9668C13.8954 15.7452 14.3683 15.4978 14.6623 15.2612C14.9619 15.02 15 14.856 15 14.7917V3.125C15 2.77982 15.2798 2.5 15.625 2.5C15.9702 2.5 16.25 2.77982 16.25 3.125V14.7917C16.25 15.3903 15.8929 15.8757 15.446 16.2354C14.9933 16.5996 14.368 16.9052 13.6263 17.1525C12.1385 17.6484 10.1599 17.9167 8.125 17.9167C6.09014 17.9167 4.11152 17.6484 2.6237 17.1525C1.88197 16.9052 1.25668 16.5996 0.804036 16.2354C0.357103 15.8757 4.96705e-08 15.3903 0 14.7917Z\",\n p2addef80:\n \"M15.3241 4.30926C15.6666 4.1674 16.0437 4.13042 16.4072 4.20266C16.771 4.275 17.1053 4.45394 17.3675 4.71616C17.6298 4.97839 17.8087 5.31274 17.881 5.67645C17.9533 6.04004 17.9163 6.41714 17.7744 6.75962C17.6325 7.10219 17.3918 7.39508 17.0835 7.60109C16.7752 7.80707 16.4126 7.91685 16.0418 7.91685H14.7918C14.4467 7.91685 14.1668 7.63703 14.1668 7.29185V6.04185C14.1668 5.67106 14.2766 5.30849 14.4826 5.00018C14.6886 4.69187 14.9815 4.45118 15.3241 4.30926ZM15.4168 6.66685H16.0418C16.1655 6.66685 16.2866 6.63054 16.3893 6.56187C16.4921 6.49319 16.5723 6.3953 16.6196 6.28111C16.6669 6.16692 16.6788 6.04099 16.6546 5.91978C16.6305 5.79861 16.5711 5.68732 16.4837 5.59995C16.3964 5.51259 16.2851 5.45319 16.1639 5.42906C16.0427 5.40494 15.9168 5.41677 15.8026 5.46405C15.6884 5.51135 15.5905 5.59158 15.5218 5.69435C15.4532 5.79714 15.4168 5.91824 15.4168 6.04185V6.66685Z\",\n p2aeb780:\n \"M10.4451 0.438758C10.5481 0.109307 10.8985 -0.074325 11.228 0.0286013C11.5574 0.131554 11.7411 0.482027 11.6381 0.811479L7.47147 14.1448C7.36852 14.4743 7.01804 14.6579 6.68859 14.555C6.35914 14.452 6.17551 14.1015 6.27844 13.7721L10.4451 0.438758Z\",\n p2b300900:\n \"M1.33232 11.8335V10.5002C1.33232 10.224 1.55617 10.0002 1.83232 10.0002C2.10846 10.0002 2.33232 10.224 2.33232 10.5002V11.8335C2.33232 12.1096 2.10846 12.3335 1.83232 12.3335C1.55617 12.3335 1.33232 12.1096 1.33232 11.8335Z\",\n p2c2a4f00:\n \"M13.5164 3.51656C13.7605 3.27248 14.1561 3.27248 14.4002 3.51656L17.7335 6.84989C17.9776 7.09397 17.9776 7.4896 17.7335 7.73368L14.4002 11.067C14.1561 11.3111 13.7605 11.3111 13.5164 11.067C13.2723 10.8229 13.2723 10.4273 13.5164 10.1832L16.4078 7.29178L13.5164 4.40035C13.2723 4.15627 13.2723 3.76064 13.5164 3.51656Z\",\n p2d22e480:\n \"M6.45833 0C6.80351 0 7.08333 0.279822 7.08333 0.625V6.45833C7.08333 6.80351 6.80351 7.08333 6.45833 7.08333H3.54167C2.60236 7.08333 1.70179 6.70993 1.0376 6.04574C0.373406 5.38154 0 4.48097 0 3.54167C0 2.60236 0.373406 1.70179 1.0376 1.0376C1.70179 0.373406 2.60236 0 3.54167 0H6.45833ZM1.25 3.54167C1.25 4.14945 1.49162 4.73218 1.92139 5.16195C2.35116 5.59172 2.93388 5.83333 3.54167 5.83333H5.83333V1.25H3.54167C2.93388 1.25 2.35116 1.49162 1.92139 1.92139C1.49162 2.35116 1.25 2.93388 1.25 3.54167Z\",\n p2da44af0:\n \"M16.172 17.0596H19.2705V28.2973H16.172V17.0596ZM15.8804 13.6148C15.8804 12.583 16.7108 11.7339 17.7209 11.7339C18.731 11.7339 19.5615 12.5823 19.5615 13.6148C19.5615 14.6474 18.731 15.4957 17.7209 15.4957C16.7108 15.4957 15.8804 14.6474 15.8804 13.6148Z\",\n p2e85db80:\n \"M41.2401 8.08449L41.1647 8.10578C41.0921 8.12632 40.9693 8.15054 40.7947 8.15054C40.4886 8.15054 40.3572 7.9524 40.3572 7.48712V2.98263H41.2559V2.22307H40.3572V0.000180664H39.577V2.22234H38.6732V2.9819H39.577V7.50914C39.577 8.0067 39.6646 8.33107 39.8514 8.52849C40.0245 8.73103 40.2904 8.83818 40.6194 8.83818C40.8665 8.83818 41.0856 8.80369 41.2358 8.73984L41.2782 8.72223L41.2401 8.08449Z\",\n p2ea32000:\n \"M6.66685 6.87518C6.66685 6.53 6.38703 6.25018 6.04185 6.25018H1.87518C1.53 6.25018 1.25018 6.53 1.25018 6.87518C1.25018 7.22036 1.53 7.50018 1.87518 7.50018H6.04185C6.38703 7.50018 6.66685 7.22036 6.66685 6.87518ZM7.91685 6.87518C7.91685 7.91072 7.07738 8.75018 6.04185 8.75018H1.87518C0.839648 8.75018 0.00018239 7.91072 0.00018239 6.87518C0.00018239 5.83965 0.839648 5.00018 1.87518 5.00018H6.04185C7.07738 5.00018 7.91685 5.83965 7.91685 6.87518Z\",\n p2ed383f0:\n \"M0 1.83333C0 1.55719 0.223858 1.33333 0.5 1.33333C0.776142 1.33333 1 1.55719 1 1.83333C1 2.05435 1.08786 2.26625 1.24414 2.42253C1.40042 2.57881 1.61232 2.66667 1.83333 2.66667H3.83333C4.10948 2.66667 4.33333 2.89052 4.33333 3.16667C4.33333 3.44281 4.10948 3.66667 3.83333 3.66667H1.83333C1.3471 3.66667 0.880926 3.47337 0.537109 3.12956C0.193293 2.78574 0 2.31956 0 1.83333Z\",\n p2f623f20:\n \"M45.4121 27.1709L45.379 28.9476C45.328 29.7505 45.2188 30.3721 45.0751 30.797C44.379 32.8841 42.2015 34.3291 39.5297 34.3291C36.3414 34.3291 33.9168 32.2882 33.6703 29.6279H36.993C37.3077 30.9812 38.1827 31.6461 39.5972 31.6461C41.2158 31.6461 42.1605 30.7867 42.3136 29.0151V27.245C38.0203 30.182 33.6509 26.5662 33.6509 22.6591C33.6509 19.4946 35.9017 17.307 38.6317 17.0171C40.0908 17.0171 41.371 17.2695 42.3136 18.4848V17.0171H45.4121V27.1716V27.1709ZM39.3717 19.4932C37.6654 19.4932 36.2961 20.9609 36.2961 22.6121C36.2961 24.3551 37.6209 25.7773 39.3717 25.7773C41.1232 25.7773 42.4695 24.3323 42.4695 22.6356C42.4695 20.9389 41.0779 19.4939 39.3717 19.4939V19.4932Z\",\n p2fe7e180:\n \"M8 13.1663V7.83299C8 7.78878 7.98243 7.7464 7.95117 7.71515C7.91992 7.68389 7.87754 7.66632 7.83333 7.66632H5.16667C5.12246 7.66632 5.08008 7.68389 5.04883 7.71515C5.01757 7.7464 5 7.78878 5 7.83299V13.1663C5 13.4425 4.77614 13.6663 4.5 13.6663C4.22386 13.6663 4 13.4425 4 13.1663V7.83299C4 7.52357 4.123 7.22691 4.3418 7.00812C4.56059 6.78932 4.85725 6.66632 5.16667 6.66632H7.83333C8.14275 6.66632 8.43941 6.78932 8.6582 7.00812C8.877 7.22691 9 7.52357 9 7.83299V13.1663C9 13.4425 8.77614 13.6663 8.5 13.6663C8.22386 13.6663 8 13.4425 8 13.1663Z\",\n p316bb480:\n \"M11.6668 1.87518C11.6668 1.53 11.387 1.25018 11.0418 1.25018C10.6967 1.25018 10.4168 1.53 10.4168 1.87518V6.04185C10.4168 6.38703 10.6967 6.66685 11.0418 6.66685C11.387 6.66685 11.6668 6.38703 11.6668 6.04185V1.87518ZM12.9168 6.04185C12.9168 7.07738 12.0774 7.91685 11.0418 7.91685C10.0063 7.91685 9.16685 7.07738 9.16685 6.04185V1.87518C9.16685 0.839648 10.0063 0.000182488 11.0418 0.000182488C12.0774 0.000182488 12.9168 0.839648 12.9168 1.87518V6.04185Z\",\n p32e12500:\n \"M16.6668 11.0418C16.6668 10.6967 16.387 10.4168 16.0418 10.4168H11.8752C11.53 10.4168 11.2502 10.6967 11.2502 11.0418C11.2502 11.387 11.53 11.6668 11.8752 11.6668H16.0418C16.387 11.6668 16.6668 11.387 16.6668 11.0418ZM17.9168 11.0418C17.9168 12.0774 17.0774 12.9168 16.0418 12.9168H11.8752C10.8396 12.9168 10.0002 12.0774 10.0002 11.0418C10.0002 10.0063 10.8396 9.16685 11.8752 9.16685H16.0418C17.0774 9.16685 17.9168 10.0063 17.9168 11.0418Z\",\n p32fb3800:\n \"M10.6667 12.5C10.6667 11.2181 10.1577 9.98846 9.2513 9.08203C8.34488 8.17561 7.11521 7.66667 5.83333 7.66667C4.55145 7.66667 3.32179 8.17561 2.41536 9.08203C1.50894 9.98846 1 11.2181 1 12.5C1 12.7761 0.776142 13 0.5 13C0.223858 13 0 12.7761 0 12.5C0 10.9529 0.614371 9.46896 1.70833 8.375C2.8023 7.28104 4.28624 6.66667 5.83333 6.66667C7.38043 6.66667 8.86437 7.28104 9.95833 8.375C11.0523 9.46896 11.6667 10.9529 11.6667 12.5C11.6667 12.7761 11.4428 13 11.1667 13C10.8905 13 10.6667 12.7761 10.6667 12.5Z\",\n p34540040:\n \"M4.66665 10.6667C4.66665 11.0203 4.80722 11.3593 5.05727 11.6094C5.30732 11.8594 5.64636 12 5.99998 12C6.3536 12 6.69264 11.8594 6.94269 11.6094C7.19274 11.3593 7.33331 11.0203 7.33331 10.6667H4.66665ZM9.32355 5.74219C9.27726 5.14395 9.07012 4.56747 8.72199 4.07487C8.32399 3.5118 7.7607 3.08611 7.11066 2.85612C6.84446 2.76186 6.66665 2.50962 6.66665 2.22721V2C6.66665 1.82319 6.59636 1.65367 6.47134 1.52865C6.34631 1.40362 6.17679 1.33333 5.99998 1.33333C5.82317 1.33333 5.65365 1.40362 5.52863 1.52865C5.4036 1.65367 5.33331 1.82319 5.33331 2V2.22721C5.33331 2.50971 5.15499 2.76193 4.88865 2.85612C3.5934 3.31434 2.66665 4.55012 2.66665 6V8.10612C2.66662 8.55232 2.51727 8.9826 2.24868 9.33333H9.75128C9.64447 9.19385 9.55446 9.04192 9.48696 8.87891C9.38544 8.63371 9.3333 8.37085 9.33331 8.10547V6L9.32355 5.74219ZM10.6666 8.10547C10.6666 8.1957 10.6843 8.2851 10.7187 8.36849C10.7533 8.45187 10.804 8.52795 10.8678 8.5918L11.8047 9.52865C11.9953 9.71931 12.0524 10.0061 11.9492 10.2552C11.846 10.5043 11.6029 10.6667 11.3333 10.6667H8.66665C8.66665 11.3739 8.38549 12.052 7.8854 12.5521C7.3853 13.0522 6.70722 13.3333 5.99998 13.3333C5.29274 13.3333 4.61466 13.0522 4.11456 12.5521C3.61447 12.052 3.33331 11.3739 3.33331 10.6667H0.666648C0.397037 10.6667 0.15397 10.5043 0.0507623 10.2552C-0.0524249 10.0061 0.00462818 9.71931 0.195294 9.52865L1.13214 8.5918C1.26099 8.46285 1.33328 8.28783 1.33331 8.10612V6C1.33331 4.13272 2.43038 2.52292 4.013 1.77669C4.06337 1.32845 4.26388 0.907981 4.58592 0.585937C4.96099 0.210865 5.46955 0 5.99998 0C6.53041 0 7.03897 0.210865 7.41404 0.585937C7.73607 0.907963 7.93593 1.32848 7.98631 1.77669C8.7138 2.11911 9.34339 2.64446 9.81053 3.30534C10.3676 4.09349 10.6667 5.03486 10.6666 6V8.10547Z\",\n p36594200:\n \"M0 13.9584V10.6251C0 10.2799 0.279822 10.0001 0.625 10.0001C0.970178 10.0001 1.25 10.2799 1.25 10.6251V13.9584C1.25 14.2347 1.35983 14.4996 1.55518 14.6949C1.75053 14.8903 2.0154 15.0001 2.29167 15.0001H13.9583C14.2346 15.0001 14.4995 14.8903 14.6948 14.6949C14.8902 14.4996 15 14.2347 15 13.9584V10.6251C15 10.2799 15.2798 10.0001 15.625 10.0001C15.9702 10.0001 16.25 10.2799 16.25 10.6251V13.9584C16.25 14.5662 16.0084 15.1489 15.5786 15.5787C15.1488 16.0085 14.5661 16.2501 13.9583 16.2501H2.29167C1.68388 16.2501 1.10116 16.0085 0.671387 15.5787C0.241616 15.1489 0 14.5662 0 13.9584Z\",\n p36643e00:\n \"M8.66667 3.83333C8.66667 2.26853 7.39814 1 5.83333 1C4.26853 1 3 2.26853 3 3.83333C3 5.39814 4.26853 6.66667 5.83333 6.66667C7.39814 6.66667 8.66667 5.39814 8.66667 3.83333ZM9.66667 3.83333C9.66667 5.95043 7.95042 7.66667 5.83333 7.66667C3.71624 7.66667 2 5.95043 2 3.83333C2 1.71624 3.71624 0 5.83333 0C7.95042 0 9.66667 1.71624 9.66667 3.83333Z\",\n p36ca8400:\n \"M6 4.5V1.16667C6 0.857247 6.123 0.560589 6.3418 0.341797C6.56059 0.123004 6.85725 0 7.16667 0H8.5C8.68102 0 8.85956 0.0421328 9.02148 0.123047C9.18348 0.204046 9.32492 0.321901 9.43359 0.466797L10.0332 1.26693C10.0487 1.28758 10.0693 1.3042 10.0924 1.31576C10.1155 1.32724 10.1409 1.33333 10.1667 1.33333H11.8333C12.1428 1.33333 12.4394 1.45634 12.6582 1.67513C12.877 1.89392 13 2.19058 13 2.5V4.5C13 4.80942 12.877 5.10608 12.6582 5.32487C12.4394 5.54366 12.1428 5.66667 11.8333 5.66667H7.16667C6.85725 5.66667 6.56059 5.54366 6.3418 5.32487C6.123 5.10608 6 4.80942 6 4.5ZM7 4.5C7 4.5442 7.01757 4.58658 7.04883 4.61784C7.08008 4.6491 7.12246 4.66667 7.16667 4.66667H11.8333C11.8775 4.66667 11.9199 4.64909 11.9512 4.61784C11.9824 4.58658 12 4.5442 12 4.5V2.5C12 2.4558 11.9824 2.41342 11.9512 2.38216C11.9199 2.35091 11.8775 2.33333 11.8333 2.33333H10.1667C9.98565 2.33333 9.80711 2.2912 9.64518 2.21029C9.48318 2.12929 9.34174 2.01143 9.23307 1.86654L8.63346 1.06641C8.61795 1.04576 8.59732 1.02913 8.57422 1.01758C8.55115 1.00609 8.52578 1 8.5 1H7.16667C7.12246 1 7.08008 1.01757 7.04883 1.04883C7.01757 1.08008 7 1.12246 7 1.16667V4.5Z\",\n p36e63380:\n \"M0 9.16667V0.5C0 0.223858 0.223858 0 0.5 0C0.776142 0 1 0.223858 1 0.5V9.16667C1 9.38768 1.08786 9.59958 1.24414 9.75586C1.40042 9.91214 1.61232 10 1.83333 10H3.83333C4.10948 10 4.33333 10.2239 4.33333 10.5C4.33333 10.7761 4.10948 11 3.83333 11H1.83333C1.3471 11 0.880926 10.8067 0.537109 10.4629C0.193293 10.1191 0 9.6529 0 9.16667Z\",\n p37273200:\n \"M15 3.125C15 3.0534 14.9567 2.88537 14.6484 2.64242C14.3472 2.40511 13.8727 2.16385 13.2308 1.94987C11.9529 1.5239 10.1476 1.25 8.125 1.25C6.10241 1.25 4.29711 1.5239 3.01921 1.94987C2.37726 2.16385 1.90282 2.40511 1.60156 2.64242C1.29327 2.88537 1.25 3.0534 1.25 3.125C1.25 3.1966 1.29327 3.36463 1.60156 3.60758C1.90282 3.84489 2.37726 4.08615 3.01921 4.30013C4.29711 4.7261 6.10241 5 8.125 5C10.1476 5 11.9529 4.7261 13.2308 4.30013C13.8727 4.08615 14.3472 3.84489 14.6484 3.60758C14.9567 3.36463 15 3.1966 15 3.125ZM16.25 3.125C16.25 3.74376 15.8731 4.2338 15.4224 4.58903C14.9646 4.94974 14.3412 5.24753 13.6263 5.48584C12.1897 5.96469 10.2445 6.25 8.125 6.25C6.00545 6.25 4.06026 5.96469 2.6237 5.48584C1.90885 5.24753 1.28537 4.94974 0.827637 4.58903C0.376883 4.2338 0 3.74376 0 3.125C0 2.50624 0.376883 2.0162 0.827637 1.66097C1.28537 1.30026 1.90885 1.00247 2.6237 0.76416C4.06026 0.285307 6.00545 0 8.125 0C10.2445 0 12.1897 0.285307 13.6263 0.76416C14.3412 1.00247 14.9646 1.30026 15.4224 1.66097C15.8731 2.0162 16.25 2.50624 16.25 3.125Z\",\n p37401480:\n \"M11.1276 11.3671C11.877 10.6017 13.0907 10.6017 13.8383 11.3671C14.5877 12.1326 14.5877 13.3723 13.8383 14.1378C13.0888 14.9033 11.8752 14.9033 11.1276 14.1378C10.3782 13.3723 10.3782 12.1345 11.1276 11.3691\",\n p38866000:\n \"M4.66667 8.5C4.66667 8.40795 4.59205 8.33333 4.5 8.33333H1.16667C1.07462 8.33333 1 8.40795 1 8.5V11.8333C1 11.9254 1.07462 12 1.16667 12H4.5C4.59205 12 4.66667 11.9254 4.66667 11.8333V8.5ZM5.66667 11.8333C5.66667 12.4777 5.14433 13 4.5 13H1.16667C0.522334 13 0 12.4777 0 11.8333V8.5C0 7.85567 0.522334 7.33333 1.16667 7.33333H4.5C5.14433 7.33333 5.66667 7.85567 5.66667 8.5V11.8333Z\",\n p3895de80:\n \"M11.1276 25.5739C10.3782 24.8085 10.3782 23.5688 11.1276 22.8052C11.877 22.0397 13.0907 22.0397 13.8383 22.8052C14.5877 23.5707 14.5877 24.8104 13.8383 25.5739C13.0888 26.3394 11.8752 26.3394 11.1276 25.5739Z\",\n p38ba5d00:\n \"M12.5 4C12.7761 4 13 4.22386 13 4.5C13 4.77614 12.7761 5 12.5 5H7.83333C7.55719 5 7.33333 4.77614 7.33333 4.5C7.33333 4.22386 7.55719 4 7.83333 4H12.5Z\",\n p38feb400:\n \"M8.21697 17.8422L6.69035 19.6769C6.06173 19.1955 5.45539 18.943 4.87204 18.943C4.19889 18.943 3.68235 19.3562 3.68235 19.8831C3.68235 20.41 3.97403 20.617 5.43384 21.1446C7.99283 22.062 8.77877 22.8421 8.77877 24.6305C8.77877 26.9929 6.87067 28.6668 4.17662 28.6668C2.49266 28.6668 1.10109 28.0474 0.000482818 26.8094L1.59464 24.883C2.44812 25.7548 3.32314 26.2128 4.19889 26.2128C4.98483 26.2128 5.59046 25.6851 5.59046 24.9747C5.59046 24.3553 5.34404 24.0801 3.9065 23.5525C1.23472 22.5889 0.695908 21.855 0.695908 20.2273C0.695908 18.0484 2.42441 16.6497 4.62491 16.6497C5.97193 16.6497 7.16162 17.0394 8.21697 17.8422Z\",\n p39ab4a00: \"M0.353553 7.35355L7.35355 0.353553M4.35355 7.35355L7.35355 4.35355\",\n p3b3b2980:\n \"M27.3486 2.99413C28.465 2.99413 29.4227 3.819 29.6526 4.96531H25.0066C25.2616 3.80066 26.2143 2.99413 27.3479 2.99413H27.3486ZM29.3336 6.93355C28.9184 7.63586 28.1583 8.07252 27.3479 8.07252C26.0885 8.07252 25.0504 7.04363 24.957 5.71679H30.0915C30.3013 5.71679 30.4658 5.56121 30.4658 5.36087V5.30289C30.3315 3.55041 28.9909 2.22871 27.3479 2.22871C25.6151 2.22871 24.2041 3.717 24.2041 5.5458C24.2041 7.37461 25.6144 8.83647 27.3479 8.83647C28.4068 8.83647 29.381 8.2802 29.9579 7.34892L29.3336 6.93355Z\",\n p3c14d400:\n \"M3.51639 3.51656C3.76047 3.27248 4.1561 3.27248 4.40018 3.51656C4.64426 3.76064 4.64426 4.15627 4.40018 4.40035L1.50874 7.29178L4.40018 10.1832C4.64426 10.4273 4.64426 10.8229 4.40018 11.067C4.1561 11.3111 3.76047 11.3111 3.51639 11.067L0.183058 7.73368C-0.0610194 7.4896 -0.0610194 7.09397 0.183058 6.84989L3.51639 3.51656Z\",\n p3cb31b00:\n \"M12.5 8C12.7761 8 13 8.22386 13 8.5C13 8.77614 12.7761 9 12.5 9H7.83333C7.55719 9 7.33333 8.77614 7.33333 8.5C7.33333 8.22386 7.55719 8 7.83333 8H12.5Z\",\n p3cfd3540:\n \"M7.29167 0C7.5284 0 7.74488 0.134126 7.85075 0.345866L12.8507 10.3459C13.0049 10.6545 12.8794 11.0298 12.5708 11.1841C12.2621 11.3382 11.8869 11.2128 11.7326 10.9041L7.29167 2.0223L2.85075 10.9041C2.69643 11.2128 2.32121 11.3382 2.01253 11.1841C1.7039 11.0298 1.57847 10.6545 1.73258 10.3459L6.73259 0.345866C6.83846 0.134126 7.05493 0 7.29167 0Z\",\n p3d3e9500:\n \"M4.5743 24.1675C4.30605 23.5036 4.61556 22.742 5.26555 22.468C5.91741 22.194 6.66119 22.5101 6.92944 23.174C7.19769 23.8399 6.88817 24.5996 6.23819 24.8755C5.5882 25.1495 4.84254 24.8334 4.5743 24.1694\",\n p3d444a80:\n \"M19.4161 20.9658C18.4247 22.3597 17.7194 24.6149 19.0297 25.9524C19.9189 26.8606 19.2482 28.3666 18.0496 28.3666C16.8509 28.3666 16.1803 26.8606 17.0694 25.9524C18.3797 24.614 17.6763 22.3607 16.683 20.9658C16.5104 20.7234 15.8557 19.9962 15.6363 19.8343C14.2697 18.8217 12.0637 18.1012 10.7543 19.4396C9.86517 20.3478 8.39074 19.6628 8.39074 18.4384C8.39074 17.2141 9.86611 16.5291 10.7543 17.4373C12.0646 18.7757 14.2706 18.0552 15.6363 17.0426C15.8736 16.8663 16.5855 16.1976 16.744 15.9734C17.7354 14.5775 18.4407 12.3261 17.1304 10.9868C16.2412 10.0786 16.9119 8.57255 18.1105 8.57255C19.3092 8.57255 19.9798 10.0795 19.0907 10.9868C17.7804 12.3252 18.4857 14.5785 19.4771 15.9734C19.6497 16.2158 20.3044 16.9429 20.5238 17.1049C21.8904 18.1175 24.0945 18.8379 25.4058 17.4996C26.2949 16.5913 27.7694 17.2763 27.7694 18.5007C27.7694 19.7251 26.2949 20.4101 25.4058 19.5019C24.0955 18.1635 21.8895 18.8839 20.5238 19.8966C20.2865 20.0729 19.5746 20.7416 19.4161 20.9658Z\",\n p3e4f7a70:\n \"M6.45833 5.83333C6.80351 5.83333 7.08333 6.11316 7.08333 6.45833V12.2917C7.08333 12.6368 6.80351 12.9167 6.45833 12.9167H3.54167C2.60236 12.9167 1.70179 12.5433 1.0376 11.8791C0.373406 11.2149 0 10.3143 0 9.375C0 8.43569 0.373406 7.53512 1.0376 6.87093C1.70179 6.20674 2.60236 5.83333 3.54167 5.83333H6.45833ZM1.25 9.375C1.25 9.98279 1.49162 10.5655 1.92139 10.9953C2.35116 11.4251 2.93388 11.6667 3.54167 11.6667H5.83333V7.08333H3.54167C2.93388 7.08333 2.35116 7.32495 1.92139 7.75472C1.49162 8.18449 1.25 8.76721 1.25 9.375Z\",\n p3e73ad00:\n \"M7.1732 6.66667C7.44934 6.66667 7.6732 6.89052 7.6732 7.16667C7.6732 7.44281 7.44934 7.66667 7.1732 7.66667H7.16669C6.89055 7.66667 6.66669 7.44281 6.66669 7.16667C6.66669 6.89052 6.89055 6.66667 7.16669 6.66667H7.1732Z\",\n p3f7e4500:\n \"M11.8752 14.1668C12.246 14.1668 12.6085 14.2766 12.9168 14.4826C13.2252 14.6886 13.4658 14.9815 13.6078 15.3241C13.7496 15.6666 13.7866 16.0437 13.7144 16.4072C13.642 16.771 13.4631 17.1053 13.2009 17.3675C12.9386 17.6298 12.6043 17.8087 12.2406 17.881C11.877 17.9533 11.4999 17.9163 11.1574 17.7744C10.8148 17.6325 10.5219 17.3918 10.3159 17.0835C10.11 16.7752 10.0002 16.4126 10.0002 16.0418V14.7918C10.0002 14.4467 10.28 14.1668 10.6252 14.1668H11.8752ZM11.2502 16.0418C11.2502 16.1655 11.2865 16.2866 11.3552 16.3893C11.4238 16.4921 11.5217 16.5723 11.6359 16.6196C11.7501 16.6669 11.876 16.6788 11.9973 16.6546C12.1184 16.6305 12.2297 16.5711 12.3171 16.4837C12.4044 16.3964 12.4638 16.2851 12.488 16.1639C12.5121 16.0427 12.5003 15.9168 12.453 15.8026C12.4057 15.6884 12.3254 15.5905 12.2227 15.5218C12.1199 15.4532 11.9988 15.4168 11.8752 15.4168H11.2502V16.0418Z\",\n p4082ae0:\n \"M83.1162 19.7652H81.9042V17.0587H83.1162V13.2286H86.2147V17.0587H88.3699V19.7652H86.2147V23.1139C86.2147 24.8568 86.4166 25.8659 87.5617 25.8659C87.7636 25.8659 87.9655 25.8431 88.1228 25.8204V28.5724C87.7859 28.6186 87.1573 28.6414 86.8203 28.6414C84.418 28.6414 83.1162 26.8295 83.1162 24.2382V19.766V19.7652Z\",\n p4987580:\n \"M12 1.16667C12 1.07462 11.9254 1 11.8333 1H8.5C8.40795 1 8.33333 1.07462 8.33333 1.16667V4.5C8.33333 4.59205 8.40795 4.66667 8.5 4.66667H11.8333C11.9254 4.66667 12 4.59205 12 4.5V1.16667ZM13 4.5C13 5.14433 12.4777 5.66667 11.8333 5.66667H8.5C7.85567 5.66667 7.33333 5.14433 7.33333 4.5V1.16667C7.33333 0.522334 7.85567 0 8.5 0H11.8333C12.4777 0 13 0.522334 13 1.16667V4.5Z\",\n p6bb7c80:\n \"M22.2011 1.28269C22.4698 1.28269 22.6882 1.05959 22.6882 0.78439C22.6882 0.509188 22.469 0.286092 22.2011 0.286092C21.9331 0.286092 21.7133 0.509188 21.7133 0.78439C21.7133 1.05959 21.9324 1.28269 22.2011 1.28269Z\",\n p6dcdf00:\n \"M23.6622 32.2649C23.0103 32.5389 22.2665 32.2227 21.9964 31.5588C21.7281 30.8949 22.0377 30.1313 22.6876 29.8573C23.3395 29.5833 24.0852 29.8995 24.3534 30.5634C24.6217 31.2292 24.3121 31.989 23.6622 32.2649Z\",\n p73f4c00:\n \"M8.14645 0.146447C8.34171 -0.0488155 8.65822 -0.0488155 8.85348 0.146447C9.04874 0.341709 9.04874 0.658216 8.85348 0.853478L0.853478 8.85348C0.658216 9.04874 0.341709 9.04874 0.146447 8.85348C-0.0488155 8.65822 -0.0488155 8.34171 0.146447 8.14645L8.14645 0.146447Z\",\n p77261c0:\n \"M4.13303 5.64491C4.13303 5.64491 3.93546 5.48713 3.72138 5.39613C3.50801 5.30439 3.20196 5.19798 2.56689 5.03947C2.48068 5.01818 2.39662 4.99984 2.3176 4.97929C1.89302 4.87068 1.55752 4.72464 1.32116 4.5441C1.08624 4.33715 0.998592 4.16543 1.00865 3.93279C1.01943 3.68694 1.16311 3.44844 1.41527 3.26057C1.70192 3.04407 2.12004 2.93619 2.59347 2.95748C3.13012 2.98169 3.53818 3.25543 3.97857 3.58347L4.02095 3.61502L4.57485 3.08811C4.50804 3.02353 4.49511 3.01325 4.30976 2.88336C3.8744 2.58247 3.3399 2.26397 2.62436 2.23241C2.0015 2.20453 1.44545 2.33442 1.01512 2.60962C0.548868 2.93253 0.254318 3.40147 0.24857 3.8983C0.243541 4.2689 0.318255 4.61602 0.681054 4.97268C1.11426 5.39906 1.78813 5.62363 2.40453 5.74545C2.93328 5.84966 3.4218 6.05001 3.6675 6.25843C3.96133 6.53363 4.0655 6.73324 4.0655 7.01945C4.054 7.29392 3.87871 7.55591 3.57913 7.74158C3.27884 7.97128 2.84922 8.09163 2.40093 8.07109C1.8104 8.04467 1.20047 7.78194 0.585506 7.29025L0.54312 7.25576L0 7.76433L0.053881 7.81203C0.76942 8.44316 1.54818 8.78734 2.36789 8.83431C2.98213 8.8622 3.51735 8.71249 4.00659 8.37858C4.51235 8.02118 4.79181 7.56251 4.81408 7.05247C4.83707 6.51014 4.57629 5.97075 4.13303 5.64418\",\n p8934a00:\n \"M11.999 3.8335V1.16683C11.999 0.89069 12.2228 0.666833 12.499 0.666833C12.7751 0.666833 12.999 0.89069 12.999 1.16683V3.8335C12.999 4.10964 12.7751 4.3335 12.499 4.3335C12.2228 4.3335 11.999 4.10964 11.999 3.8335Z\",\n p9e248c0:\n \"M31.5896 12.7707C31.8578 13.4365 31.5483 14.1982 30.8983 14.4722C30.2483 14.7462 29.5027 14.43 29.2325 13.7661C28.9643 13.1022 29.2738 12.3405 29.9238 12.0665C30.5757 11.7925 31.3194 12.1087 31.5896 12.7726\",\n pbf29200:\n \"M16.6715 8.95426C16.6715 8.49967 16.557 8.05255 16.3387 7.65381C16.1204 7.25504 15.8054 6.91727 15.4224 6.67236C15.2009 6.53065 15.0921 6.26568 15.1497 6.00911C15.2499 5.56348 15.2354 5.09935 15.1082 4.66064C14.9811 4.22201 14.7451 3.82228 14.4222 3.49935C14.0992 3.17643 13.6996 2.94046 13.2609 2.81331C12.8223 2.68621 12.3587 2.67252 11.9132 2.77262C11.6566 2.83033 11.3909 2.72081 11.2492 2.49919C11.0044 2.11633 10.6671 1.80115 10.2686 1.58285C9.86979 1.3645 9.42191 1.25 8.96728 1.25C8.51273 1.25003 8.06554 1.36455 7.66683 1.58285C7.26806 1.80119 6.93029 2.11616 6.68538 2.49919C6.54375 2.72069 6.27868 2.83014 6.02214 2.77262C5.57725 2.67292 5.11404 2.6873 4.67611 2.81413C4.23827 2.94101 3.83911 3.17653 3.51644 3.49854C3.19385 3.82058 2.95812 4.219 2.8304 4.65658C2.70265 5.0943 2.68682 5.55746 2.78564 6.0026C2.8426 6.25975 2.73234 6.525 2.50977 6.66585C2.12392 6.91008 1.80636 7.2481 1.5861 7.64811C1.36581 8.04822 1.25001 8.49753 1.25 8.95426C1.25 9.41103 1.3658 9.86029 1.5861 10.2604C1.80635 10.6605 2.12392 10.9984 2.50977 11.2427C2.73243 11.3836 2.84275 11.6495 2.78564 11.9067C2.68691 12.3517 2.70272 12.8144 2.8304 13.252C2.95817 13.6897 3.19368 14.0887 3.51644 14.4108C3.83916 14.7329 4.2382 14.9683 4.67611 15.0952C5.11405 15.222 5.57723 15.2356 6.02214 15.1359C6.27905 15.0783 6.54473 15.1881 6.6862 15.4102C6.93079 15.7946 7.26901 16.1112 7.66846 16.3306C8.0678 16.5498 8.51578 16.665 8.97135 16.665C9.42705 16.665 9.87562 16.5499 10.2751 16.3306C10.6745 16.1113 11.0119 15.7946 11.2565 15.4102C11.3977 15.1884 11.6631 15.0789 11.9198 15.1359C12.3647 15.2347 12.8274 15.2196 13.265 15.092C13.7027 14.9642 14.1017 14.7279 14.4238 14.4051C14.7459 14.0823 14.9814 13.6834 15.1082 13.2454C15.2351 12.8074 15.2487 12.3444 15.1489 11.8994C15.0914 11.6429 15.2009 11.3778 15.4224 11.2362C15.8054 10.9913 16.1204 10.6535 16.3387 10.2547C16.557 9.85599 16.6715 9.40884 16.6715 8.95426ZM17.9215 8.95426C17.9215 9.61865 17.7548 10.2725 17.4357 10.8553C17.1843 11.3144 16.8435 11.7163 16.4372 12.0418C16.4966 12.5611 16.4548 13.0882 16.3086 13.5929C16.1232 14.2331 15.7792 14.8163 15.3084 15.2881C14.8377 15.7598 14.2554 16.1048 13.6157 16.2915C13.1113 16.4387 12.5841 16.4817 12.0646 16.4233C11.7391 16.8316 11.3366 17.1741 10.8765 17.4268C10.2927 17.7472 9.63728 17.915 8.97135 17.915C8.30543 17.915 7.64998 17.7473 7.06624 17.4268C6.60626 17.1742 6.20357 16.8322 5.87809 16.4242C5.35939 16.4833 4.83275 16.4416 4.32861 16.2956C3.6885 16.1102 3.10519 15.7661 2.63346 15.2954C2.16182 14.8247 1.81677 14.2423 1.63005 13.6027C1.4829 13.0986 1.43918 12.5715 1.4974 12.0524C1.08778 11.727 0.744374 11.3241 0.490723 10.8634C0.168766 10.2787 0 9.62182 0 8.95426C1.36674e-05 8.28671 0.168759 7.62986 0.490723 7.04508C0.744468 6.58423 1.08759 6.18073 1.4974 5.85531C1.43934 5.33649 1.48299 4.80965 1.63005 4.30583C1.8168 3.66621 2.16182 3.0838 2.63346 2.61312C3.1052 2.14237 3.68848 1.79836 4.32861 1.61296C4.83297 1.46689 5.35998 1.4243 5.87891 1.48356C6.20438 1.07737 6.60729 0.73799 7.06624 0.486654C7.64901 0.167565 8.30288 2.69392e-05 8.96728 0C9.63174 0 10.2855 0.167542 10.8683 0.486654C11.3272 0.737889 11.7294 1.07754 12.0548 1.48356C12.5751 1.42373 13.1036 1.4664 13.6092 1.61296C14.2502 1.7988 14.834 2.14364 15.306 2.61556C15.778 3.0876 16.1227 3.67197 16.3086 4.31315C16.455 4.81838 16.4976 5.34607 16.438 5.86589C16.8443 6.19143 17.1843 6.59413 17.4357 7.05322C17.7548 7.636 17.9215 8.28986 17.9215 8.95426Z\",\n pc279880:\n \"M6 11.8333V8.5C6 8.19058 6.12301 7.89392 6.3418 7.67513C6.56059 7.45634 6.85725 7.33333 7.16667 7.33333H8.41992C8.64704 7.33286 8.86964 7.3987 9.0599 7.52278C9.24382 7.64278 9.38929 7.81258 9.48112 8.01172L9.75977 8.57487C9.77347 8.60206 9.7945 8.62511 9.82031 8.64127C9.84609 8.65738 9.87586 8.66621 9.90625 8.66666H11.8333C12.1428 8.66666 12.4394 8.78967 12.6582 9.00846C12.877 9.22725 13 9.52391 13 9.83333V11.8333C13 12.1427 12.877 12.4394 12.6582 12.6582C12.4394 12.877 12.1428 13 11.8333 13H7.16667C6.85725 13 6.56059 12.877 6.3418 12.6582C6.12301 12.4394 6 12.1427 6 11.8333ZM7 11.8333C7 11.8775 7.01757 11.9199 7.04883 11.9512C7.08008 11.9824 7.12246 12 7.16667 12H11.8333C11.8775 12 11.9199 11.9824 11.9512 11.9512C11.9824 11.9199 12 11.8775 12 11.8333V9.83333C12 9.78913 11.9824 9.74675 11.9512 9.71549C11.9199 9.68424 11.8775 9.66666 11.8333 9.66666H9.89323C9.67988 9.66383 9.47131 9.60265 9.29036 9.48958C9.10934 9.37644 8.96258 9.21539 8.86654 9.02474L8.86523 9.02148L8.58529 8.45507C8.58181 8.44804 8.57801 8.44079 8.57487 8.43359C8.56191 8.4039 8.54076 8.37843 8.51367 8.36067C8.48646 8.34293 8.45436 8.33324 8.42188 8.33333H7.16667C7.12247 8.33333 7.08008 8.3509 7.04883 8.38216C7.01757 8.41341 7 8.4558 7 8.5V11.8333Z\",\n pcc5de00:\n \"M13.3335 11.8332C13.3334 9.76626 12.0929 7.82004 10.8667 6.90026C10.7408 6.80584 10.6668 6.65723 10.6668 6.49987C10.6668 6.34257 10.7408 6.19454 10.8667 6.10013C11.2391 5.82069 11.537 5.45372 11.7339 5.03177C11.9307 4.60971 12.0208 4.14525 11.9956 3.68021C11.9704 3.21518 11.8307 2.76339 11.5893 2.3651C11.348 1.96687 11.012 1.63456 10.6115 1.39701C10.374 1.25614 10.2955 0.948965 10.4363 0.711458C10.5772 0.473956 10.8844 0.395477 11.1219 0.536328C11.6638 0.857761 12.1182 1.308 12.4448 1.84688C12.7713 2.38575 12.9602 2.99699 12.9943 3.62617C13.0284 4.25533 12.9065 4.88329 12.6401 5.4543C12.4614 5.8374 12.2195 6.18536 11.9285 6.48815C13.1966 7.66254 14.3334 9.66802 14.3335 11.8332C14.3335 12.1093 14.1095 12.3331 13.8335 12.3332C13.5573 12.3332 13.3335 12.1093 13.3335 11.8332Z\",\n pdd0a600:\n \"M31.5783 24.1953C31.3082 24.8592 30.5625 25.1735 29.9125 24.8976C29.2626 24.6216 28.9549 23.86 29.2232 23.1961C29.4933 22.5322 30.2389 22.2179 30.8889 22.4919C31.5389 22.7678 31.8466 23.5295 31.5764 24.1934\",\n pdf6da80:\n \"M6.65164 5.51741C6.65164 4.13259 7.71418 3.00464 9.02097 3.00464C10.3278 3.00464 11.3903 4.13186 11.3903 5.51741V5.62088C11.34 6.98735 10.299 8.0566 9.02097 8.0566C7.74292 8.0566 6.65164 6.91763 6.65164 5.51741ZM9.02025 8.8345C9.94054 8.8345 10.794 8.41913 11.3889 7.68893V8.84257H12.1511V2.22673H11.3889V3.35983C10.799 2.6377 9.94557 2.22673 9.02025 2.22673C7.29391 2.22673 5.88941 3.70255 5.88941 5.51741C5.88941 7.33227 7.29391 8.8345 9.02025 8.8345Z\",\n pe6db200:\n \"M2.49898 10.6668C2.77513 10.6668 2.99898 10.8907 2.99898 11.1668C2.99898 11.443 2.77513 11.6668 2.49898 11.6668H1.16565C0.889508 11.6668 0.66565 11.443 0.66565 11.1668C0.66565 10.8907 0.889508 10.6668 1.16565 10.6668H2.49898Z\",\n pf3a7200:\n \"M60.0288 18.5273C60.9045 17.312 62.0489 16.6927 63.4635 16.6927C65.0354 16.6927 66.0455 17.2893 66.7862 18.2294C67.3702 18.986 67.5498 19.9958 67.5498 21.2338V28.2973H64.452V22.1284C64.452 20.133 63.8909 19.3757 62.3636 19.3757C60.7924 19.3757 60.0295 20.431 60.0295 22.5409V28.2973H56.931V11.7339H60.0295V18.5273H60.0288Z\",\n};\n","import { Check, ChevronDown, ChevronRight, Plus, Trash2, X } from \"lucide-react\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport drawerSvgPaths from \"./svg-594k4917k1\";\nimport step2SvgPaths from \"./svg-nb368vndrm\";\n\ninterface AddContextDrawerProps {\n isOpen: boolean;\n onClose: () => void;\n resourceTitle: string;\n /** Optional callback fired when the user confirms \"Add Resource\" on step 3 */\n onAdd?: (resourceTitle: string) => void;\n}\n\n/* ─── SSO Shield Icon ──────────────────────────────────────── */\nfunction SSOIcon() {\n return (\n <div className=\"overflow-clip relative shrink-0 size-[16px]\">\n <div className=\"absolute inset-[5.21%_13.5%_5.21%_5.21%]\">\n <svg\n className=\"absolute block size-full\"\n fill=\"none\"\n preserveAspectRatio=\"none\"\n viewBox=\"0 0 13.0067 14.3333\"\n >\n <g>\n <path d={drawerSvgPaths.pd015300} fill=\"var(--primary-foreground)\" />\n <path d={drawerSvgPaths.p3890a7e0} fill=\"var(--primary-foreground)\" />\n </g>\n </svg>\n </div>\n </div>\n );\n}\n\n/* ─── Auth Success Checkmark Icon (from Figma Step2) ────── */\nfunction AuthCheckIcon() {\n return (\n <div className=\"overflow-clip relative shrink-0 size-[20px]\">\n <div className=\"absolute inset-[5.23%_5.23%_5.2%_5.16%]\">\n <svg\n className=\"absolute block size-full\"\n fill=\"none\"\n preserveAspectRatio=\"none\"\n viewBox=\"0 0 17.9215 17.915\"\n >\n <g>\n <path d={step2SvgPaths.pbf29200} fill=\"var(--success-banner-icon)\" />\n <path d={step2SvgPaths.p1477c870} fill=\"var(--success-banner-icon)\" />\n </g>\n </svg>\n </div>\n </div>\n );\n}\n\n/* ─── Shared label style ─────────────────────────────────── */\nconst labelStyle: React.CSSProperties = {\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n};\n\nconst bodyStyle: React.CSSProperties = {\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n};\n\n/* ─── Mock repo data ─────────────────────────────────────── */\nconst MOCK_REPOS = [\n \"stellar-solutions/frontend-app\",\n \"stellar-solutions/backend-api\",\n \"stellar-solutions/design-system\",\n \"stellar-solutions/docs\",\n \"stellar-solutions/infrastructure\",\n \"stellar-solutions/mobile-app\",\n];\n\nconst MOCK_BRANCHES: Record<string, string[]> = {\n \"stellar-solutions/frontend-app\": [\n \"main\",\n \"develop\",\n \"feature/auth\",\n \"feature/dashboard\",\n \"hotfix/login\",\n ],\n \"stellar-solutions/backend-api\": [\"main\", \"develop\", \"feature/api-v2\", \"staging\", \"release/1.2\"],\n \"stellar-solutions/design-system\": [\"main\", \"develop\", \"feature/tokens\", \"feature/components\"],\n \"stellar-solutions/docs\": [\"main\", \"develop\", \"feature/onboarding\"],\n \"stellar-solutions/infrastructure\": [\"main\", \"develop\", \"feature/k8s\", \"feature/ci-cd\"],\n \"stellar-solutions/mobile-app\": [\n \"main\",\n \"develop\",\n \"feature/ios\",\n \"feature/android\",\n \"release/2.0\",\n ],\n};\n\n/* ─── Project tree types & data (Account → Projects) ─────── */\ninterface ProjectNode {\n id: string;\n name: string;\n children?: ProjectNode[];\n}\n\n/** First level is always the account; nested items are projects */\nconst MOCK_ACCOUNT_TREE: ProjectNode = {\n id: \"account-stellar\",\n name: \"Stellar Solutions\",\n children: [\n {\n id: \"engineering\",\n name: \"Engineering\",\n children: [\n { id: \"eng-frontend\", name: \"Frontend\" },\n { id: \"eng-backend\", name: \"Backend\" },\n { id: \"eng-devops\", name: \"DevOps\" },\n ],\n },\n { id: \"design\", name: \"Design\" },\n {\n id: \"product\",\n name: \"Product\",\n children: [\n { id: \"prod-roadmap\", name: \"Roadmap\" },\n { id: \"prod-analytics\", name: \"Analytics\" },\n ],\n },\n { id: \"marketing\", name: \"Marketing\" },\n ],\n};\n\n/* ─── Tree helpers ───────────────────────────────────────── */\n/** Collect all descendant IDs (not including self) */\nfunction getAllDescendantIds(node: ProjectNode): string[] {\n const ids: string[] = [];\n if (node.children) {\n for (const child of node.children) {\n ids.push(child.id);\n ids.push(...getAllDescendantIds(child));\n }\n }\n return ids;\n}\n\n/** Collect all leaf IDs in subtree */\nfunction getAllLeafIds(node: ProjectNode): string[] {\n if (!node.children || node.children.length === 0) return [node.id];\n return node.children.flatMap(getAllLeafIds);\n}\n\ntype CheckState = \"checked\" | \"unchecked\" | \"indeterminate\";\n\n/** Determine the check state for a node given selected set */\nfunction getCheckState(node: ProjectNode, selected: Set<string>): CheckState {\n if (!node.children || node.children.length === 0) {\n return selected.has(node.id) ? \"checked\" : \"unchecked\";\n }\n const childStates = node.children.map((c) => getCheckState(c, selected));\n if (childStates.every((s) => s === \"checked\")) return \"checked\";\n if (childStates.every((s) => s === \"unchecked\")) return \"unchecked\";\n return \"indeterminate\";\n}\n\n/* ─── Checkbox SVG (checked / indeterminate / unchecked) ─── */\nfunction CheckboxIcon({ state }: { state: CheckState }) {\n return (\n <div className=\"flex items-center pt-[2.5px] shrink-0\">\n <div className=\"relative shrink-0 size-[16px]\">\n <svg className=\"block size-full\" fill=\"none\" viewBox=\"0 0 16 16\">\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width=\"15\"\n height=\"15\"\n rx=\"3.5\"\n fill={state !== \"unchecked\" ? \"var(--primary)\" : \"var(--input-background)\"}\n stroke={state !== \"unchecked\" ? \"var(--primary)\" : \"var(--border)\"}\n />\n {state === \"checked\" && (\n <path\n d=\"M12 5L6.5 10.5L4 8\"\n stroke=\"var(--primary-foreground)\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n {state === \"indeterminate\" && (\n <rect\n x=\"4\"\n y=\"7.25\"\n width=\"8\"\n height=\"1.5\"\n rx=\"0.75\"\n fill=\"var(--primary-foreground)\"\n />\n )}\n </svg>\n </div>\n </div>\n );\n}\n\n/* ─── Multi-select Project Tree Item ─────────────────────── */\nfunction ProjectTreeItem({\n node,\n selectedProjects,\n onToggleNode,\n expandedNodes,\n onToggleExpand,\n depth = 0,\n}: {\n node: ProjectNode;\n selectedProjects: Set<string>;\n onToggleNode: (node: ProjectNode) => void;\n expandedNodes: Set<string>;\n onToggleExpand: (id: string) => void;\n depth?: number;\n}) {\n const hasChildren = node.children && node.children.length > 0;\n const isExpanded = expandedNodes.has(node.id);\n const checkState = getCheckState(node, selectedProjects);\n\n return (\n <div className=\"flex flex-col gap-[8px] w-full\">\n <div className=\"flex gap-[2px] items-center w-full\">\n {/* Chevron for expandable items */}\n {hasChildren ? (\n <button\n onClick={() => onToggleExpand(node.id)}\n className=\"shrink-0 size-[20px] flex items-center justify-center cursor-pointer\"\n >\n <ChevronRight\n className=\"size-[14px] transition-transform\"\n style={{\n color: \"var(--muted-foreground)\",\n transform: isExpanded ? \"rotate(90deg)\" : \"rotate(0deg)\",\n }}\n />\n </button>\n ) : (\n <div className=\"shrink-0 w-[20px]\" />\n )}\n\n {/* Checkbox item */}\n <button\n onClick={() => onToggleNode(node)}\n className=\"flex-1 relative rounded-[10px] cursor-pointer transition-colors\"\n style={{\n backgroundColor: \"var(--muted)\",\n border: `1px solid ${checkState !== \"unchecked\" ? \"var(--primary)\" : \"var(--border)\"}`,\n }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium, var(--muted))\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n >\n <div className=\"flex gap-[12px] items-start px-[12px] py-[8px] w-full\">\n <CheckboxIcon state={checkState} />\n <span\n className=\"flex-1 text-left\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: depth === 0 ? \"var(--font-weight-medium)\" : \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n {node.name}\n </span>\n </div>\n </button>\n </div>\n\n {/* Children */}\n {hasChildren && isExpanded && (\n <div className=\"flex flex-col gap-[8px] pl-[22px] w-full\">\n {node.children?.map((child) => (\n <ProjectTreeItem\n key={child.id}\n node={child}\n selectedProjects={selectedProjects}\n onToggleNode={onToggleNode}\n expandedNodes={expandedNodes}\n onToggleExpand={onToggleExpand}\n depth={depth + 1}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n STEP 1: Authentication\n ════════════════════════════════════════════════════════════ */\ninterface Step1Props {\n resourceTitle: string;\n onAuthenticated: () => void;\n}\n\nfunction Step1Content({ resourceTitle, onAuthenticated }: Step1Props) {\n const [repoUrl, setRepoUrl] = useState(\"\");\n const [username, setUsername] = useState(\"\");\n const [tokenName, setTokenName] = useState(\"\");\n const [isAuthenticating, setIsAuthenticating] = useState(false);\n\n const handleSSO = () => {\n setIsAuthenticating(true);\n setTimeout(() => {\n setIsAuthenticating(false);\n onAuthenticated();\n }, 1200);\n };\n\n const handleManualAuth = () => {\n if (!(repoUrl.trim() && username.trim() && tokenName.trim())) return;\n setIsAuthenticating(true);\n setTimeout(() => {\n setIsAuthenticating(false);\n onAuthenticated();\n }, 1000);\n };\n\n return (\n <div className=\"flex flex-col gap-[12px] items-center w-full\">\n {/* SSO Button */}\n <button\n onClick={handleSSO}\n disabled={isAuthenticating}\n className=\"flex gap-[8px] items-center justify-center min-h-[40px] px-[20px] py-[10px] rounded-[9999px] w-full cursor-pointer transition-opacity\"\n style={{ backgroundColor: \"var(--primary)\", opacity: isAuthenticating ? 0.7 : 1 }}\n onMouseEnter={(e) => {\n if (!isAuthenticating) e.currentTarget.style.opacity = \"0.9\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity = isAuthenticating ? \"0.7\" : \"1\";\n }}\n >\n <SSOIcon />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--primary-foreground)\",\n whiteSpace: \"nowrap\",\n }}\n >\n {isAuthenticating ? \"Authenticating...\" : `Authenticate with ${resourceTitle} using SSO`}\n </span>\n </button>\n\n {/* \"or\" text */}\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n or\n </span>\n\n {/* Manual auth form */}\n <div className=\"flex flex-col gap-[24px] w-full\">\n <div className=\"flex flex-col gap-[12px] w-full\">\n {/* URL */}\n <div className=\"flex flex-col gap-[4px] w-full\">\n <label style={labelStyle}>{resourceTitle} URL</label>\n <div\n className=\"relative min-h-[40px] rounded-[12px] w-full\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: \"1px solid var(--border)\",\n }}\n >\n <input\n type=\"text\"\n value={repoUrl}\n onChange={(e) => setRepoUrl(e.target.value)}\n placeholder=\"https://\"\n className=\"flex-1 w-full bg-transparent border-none outline-none min-h-[40px] px-[16px] py-[9.5px] rounded-[12px]\"\n style={bodyStyle}\n />\n </div>\n </div>\n\n {/* Username */}\n <div className=\"flex flex-col gap-[4px] w-full\">\n <label style={labelStyle}>Username</label>\n <div\n className=\"relative min-h-[40px] rounded-[12px] w-full\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: \"1px solid var(--border)\",\n }}\n >\n <input\n type=\"text\"\n value={username}\n onChange={(e) => setUsername(e.target.value)}\n placeholder=\"Enter username\"\n className=\"flex-1 w-full bg-transparent border-none outline-none min-h-[40px] px-[16px] py-[9.5px] rounded-[12px]\"\n style={bodyStyle}\n />\n </div>\n </div>\n\n {/* Token */}\n <div className=\"flex flex-col gap-[4px] w-full\">\n <label style={labelStyle}>Token Name</label>\n <div\n className=\"relative min-h-[40px] rounded-[12px] w-full\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: \"1px solid var(--border)\",\n }}\n >\n <input\n type=\"password\"\n value={tokenName}\n onChange={(e) => setTokenName(e.target.value)}\n placeholder=\"Enter token\"\n className=\"flex-1 w-full bg-transparent border-none outline-none min-h-[40px] px-[16px] py-[9.5px] rounded-[12px]\"\n style={bodyStyle}\n />\n </div>\n </div>\n </div>\n\n {/* Authenticate Manually button */}\n <div\n className=\"relative min-h-[40px] rounded-[9999px] w-full\"\n style={{ border: \"1px solid var(--ring)\" }}\n >\n <button\n onClick={handleManualAuth}\n disabled={isAuthenticating || !(repoUrl.trim() && username.trim() && tokenName.trim())}\n className=\"flex items-center justify-center min-h-[40px] px-[20px] py-[10px] w-full rounded-[9999px] cursor-pointer transition-colors\"\n style={{\n backgroundColor: \"transparent\",\n opacity: repoUrl.trim() && username.trim() && tokenName.trim() ? 1 : 0.5,\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n whiteSpace: \"nowrap\",\n }}\n >\n {isAuthenticating ? \"Authenticating...\" : \"Authenticate Manually\"}\n </span>\n </button>\n </div>\n </div>\n </div>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n STEP 2: Authenticated — Multi-repo sections\n ════════════════════════════════════════════════════════════ */\n\n/* ─── Data model for each repo section ───────────────────── */\ninterface RepoSectionData {\n id: string;\n selectedRepo: string;\n selectedBranch: string;\n selectedProjects: Set<string>;\n resourceName: string;\n shareDownstream: boolean;\n}\n\nlet _repoSectionIdCounter = 0;\nfunction createRepoSection(): RepoSectionData {\n return {\n id: `repo-section-${++_repoSectionIdCounter}`,\n selectedRepo: \"\",\n selectedBranch: \"\",\n selectedProjects: new Set(),\n resourceName: \"\",\n shareDownstream: false,\n };\n}\n\n/* ─── Reusable dropdown ──────────────────────────────────── */\nfunction SelectDropdown({\n label,\n value,\n placeholder,\n options,\n isOpen,\n onToggle,\n onSelect,\n disabled,\n}: {\n label: string;\n value: string;\n placeholder: string;\n options: string[];\n isOpen: boolean;\n onToggle: () => void;\n onSelect: (v: string) => void;\n disabled?: boolean;\n}) {\n return (\n <div className=\"flex flex-col gap-[4px] w-full\">\n <label style={labelStyle}>{label}</label>\n <div\n className=\"relative min-h-[40px] rounded-[12px] w-full\"\n style={{ backgroundColor: \"var(--input-background)\", border: \"1px solid var(--border)\" }}\n >\n <button\n onClick={onToggle}\n className=\"flex items-center justify-between gap-[12px] min-h-[40px] pl-[16px] pr-[8px] py-[10px] rounded-[12px] w-full cursor-pointer\"\n style={{ backgroundColor: \"transparent\", opacity: disabled ? 0.5 : 1 }}\n disabled={disabled}\n >\n <span\n style={{\n ...bodyStyle,\n color: value ? \"var(--foreground)\" : \"var(--muted-foreground)\",\n flex: 1,\n textAlign: \"left\",\n }}\n >\n {value || placeholder}\n </span>\n <ChevronDown\n className=\"size-[16px] shrink-0 transition-transform\"\n style={{\n color: \"var(--muted-foreground)\",\n transform: isOpen ? \"rotate(180deg)\" : \"rotate(0deg)\",\n }}\n />\n </button>\n\n {isOpen && options.length > 0 && (\n <div\n className=\"absolute top-[calc(100%+4px)] left-0 right-0 z-10 rounded-[12px] overflow-hidden max-h-[200px] overflow-y-auto\"\n style={{\n backgroundColor: \"var(--card)\",\n border: \"1px solid var(--border)\",\n boxShadow: \"0px 4px 16px rgba(0,0,0,0.08)\",\n }}\n >\n {options.map((option) => (\n <button\n key={option}\n onClick={() => onSelect(option)}\n className=\"flex items-center w-full px-[16px] py-[10px] cursor-pointer transition-colors\"\n style={{\n backgroundColor: value === option ? \"var(--muted)\" : \"transparent\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor =\n value === option ? \"var(--muted)\" : \"transparent\")\n }\n >\n <span style={{ ...bodyStyle, color: \"var(--foreground)\" }}>{option}</span>\n </button>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n\n/* ─── Toggle Switch ──────────────────────────────────────── */\nfunction ToggleSwitch({\n label,\n checked,\n onChange,\n}: {\n label: string;\n checked: boolean;\n onChange: (v: boolean) => void;\n}) {\n return (\n <div className=\"flex flex-col gap-[12px] pt-[8px] w-full\">\n <span style={labelStyle}>{label}</span>\n <div className=\"flex gap-[8px] items-center h-[24px]\">\n <button\n onClick={() => onChange(!checked)}\n className=\"relative shrink-0 cursor-pointer\"\n style={{ width: 33, height: 18 }}\n >\n <div\n className=\"absolute inset-0 rounded-[12px] transition-colors\"\n style={{\n backgroundColor: checked ? \"var(--switch-active-bg)\" : \"var(--switch-inactive-bg)\",\n }}\n />\n <div\n className=\"absolute top-[1px] transition-all\"\n style={{ width: 16, height: 16, left: checked ? 16 : 1 }}\n >\n <svg className=\"block size-full\" fill=\"none\" viewBox=\"0 0 16 16\">\n <circle cx=\"8\" cy=\"8\" r=\"8\" fill=\"var(--switch-thumb)\" />\n </svg>\n </div>\n </button>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {checked ? \"Yes\" : \"No\"}\n </span>\n </div>\n </div>\n );\n}\n\n/* ─── Single Repo Section Card ───────────────────────────── */\nfunction RepoSectionCard({\n section,\n index,\n totalSections,\n onUpdate,\n onRemove,\n}: {\n section: RepoSectionData;\n index: number;\n totalSections: number;\n onUpdate: (id: string, partial: Partial<Omit<RepoSectionData, \"id\">>) => void;\n onRemove: (id: string) => void;\n}) {\n const [repoDropdownOpen, setRepoDropdownOpen] = useState(false);\n const [branchDropdownOpen, setBranchDropdownOpen] = useState(false);\n const [expandedNodes, setExpandedNodes] = useState<Set<string>>(new Set([\"account-stellar\"]));\n\n const availableBranches = section.selectedRepo\n ? MOCK_BRANCHES[section.selectedRepo] || [\"main\", \"develop\"]\n : [];\n\n const handleToggleExpand = useCallback((id: string) => {\n setExpandedNodes((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\n const handleToggleNode = useCallback(\n (node: ProjectNode) => {\n const currentState = getCheckState(node, section.selectedProjects);\n const allIds = [node.id, ...getAllDescendantIds(node)];\n const next = new Set(section.selectedProjects);\n if (currentState === \"checked\") {\n for (const id of allIds) next.delete(id);\n } else {\n for (const id of allIds) next.add(id);\n }\n onUpdate(section.id, { selectedProjects: next });\n },\n [section.selectedProjects, section.id, onUpdate],\n );\n\n return (\n <div className=\"flex flex-col gap-[20px] w-full\">\n {/* Section header with number label and remove button */}\n {totalSections > 1 && (\n <div className=\"flex items-center justify-between w-full\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n Repository {index + 1}\n </span>\n <button\n onClick={() => onRemove(section.id)}\n className=\"flex items-center justify-center size-[28px] rounded-[8px] transition-colors cursor-pointer\"\n style={{ color: \"var(--destructive)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <Trash2 className=\"size-[14px]\" />\n </button>\n </div>\n )}\n\n {/* Select Repository */}\n <SelectDropdown\n label=\"Select Repository*\"\n value={section.selectedRepo}\n placeholder=\"Select\"\n options={MOCK_REPOS}\n isOpen={repoDropdownOpen}\n onToggle={() => {\n setRepoDropdownOpen(!repoDropdownOpen);\n setBranchDropdownOpen(false);\n }}\n onSelect={(repo) => {\n onUpdate(section.id, { selectedRepo: repo, selectedBranch: \"\" });\n setRepoDropdownOpen(false);\n }}\n />\n\n {/* Select Branch */}\n <SelectDropdown\n label=\"Select Branch*\"\n value={section.selectedBranch}\n placeholder=\"Select\"\n options={availableBranches}\n isOpen={branchDropdownOpen}\n onToggle={() => {\n if (section.selectedRepo) {\n setBranchDropdownOpen(!branchDropdownOpen);\n setRepoDropdownOpen(false);\n }\n }}\n onSelect={(branch) => {\n onUpdate(section.id, { selectedBranch: branch });\n setBranchDropdownOpen(false);\n }}\n disabled={!section.selectedRepo}\n />\n\n {/* Project(s)* — Multi-select tree */}\n <div className=\"flex flex-col gap-[4px] w-full\">\n <label style={labelStyle}>Project(s)*</label>\n <div\n className=\"relative rounded-[12px] w-full\"\n style={{ backgroundColor: \"var(--input-background)\", border: \"1px solid var(--border)\" }}\n >\n <div className=\"flex flex-col gap-[8px] p-[12px] w-full\">\n <ProjectTreeItem\n node={MOCK_ACCOUNT_TREE}\n selectedProjects={section.selectedProjects}\n onToggleNode={handleToggleNode}\n expandedNodes={expandedNodes}\n onToggleExpand={handleToggleExpand}\n depth={0}\n />\n </div>\n </div>\n </div>\n\n {/* Resource Name */}\n <div className=\"flex flex-col gap-[4px] w-full\">\n <span style={labelStyle}>Resource Name</span>\n <div\n className=\"relative min-h-[40px] rounded-[12px] w-full\"\n style={{ backgroundColor: \"var(--input-background)\", border: \"1px solid var(--border)\" }}\n >\n <input\n type=\"text\"\n value={section.resourceName}\n onChange={(e) => onUpdate(section.id, { resourceName: e.target.value })}\n placeholder=\"Enter resource name\"\n className=\"flex-1 w-full bg-transparent border-none outline-none min-h-[40px] px-[16px] py-[9.5px] rounded-[12px]\"\n style={bodyStyle}\n />\n </div>\n </div>\n\n {/* Share resource in the downstream nodes */}\n <ToggleSwitch\n label=\"Share resource in the downstream nodes\"\n checked={section.shareDownstream}\n onChange={(v) => onUpdate(section.id, { shareDownstream: v })}\n />\n\n {/* Trailing divider */}\n <div className=\"flex items-center w-full h-[1px]\">\n <div className=\"flex-1 h-px\" style={{ backgroundColor: \"var(--border)\" }} />\n </div>\n </div>\n );\n}\n\n/* ─── Step2 Props (array-based) ──────────────────────────── */\ninterface Step2Props {\n resourceTitle: string;\n showBanner: boolean;\n onDismissBanner: () => void;\n destination: string;\n onDestinationChange: (v: string) => void;\n repoSections: RepoSectionData[];\n onUpdateSection: (id: string, partial: Partial<Omit<RepoSectionData, \"id\">>) => void;\n onRemoveSection: (id: string) => void;\n onAddAnotherRepo: () => void;\n}\n\nfunction Step2Content({\n showBanner,\n onDismissBanner,\n destination,\n onDestinationChange,\n repoSections,\n onUpdateSection,\n onRemoveSection,\n onAddAnotherRepo,\n}: Step2Props) {\n return (\n <div className=\"flex flex-col gap-[20px] w-full\">\n {/* Auth Success Banner */}\n {showBanner && (\n <div\n className=\"flex items-center gap-[16px] px-[16px] py-[12px] rounded-[12px] w-full\"\n style={{ backgroundColor: \"var(--success-banner-bg)\" }}\n >\n <AuthCheckIcon />\n <div className=\"flex-1 flex flex-col gap-[4px] min-w-0\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--success-banner-foreground)\",\n }}\n >\n You are authenticated\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n Connection secured\n </span>\n </div>\n <button\n onClick={onDismissBanner}\n className=\"flex items-center justify-center size-[32px] rounded-[8px] shrink-0 cursor-pointer transition-colors\"\n style={{ color: \"var(--foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"rgba(0,0,0,0.05)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <X className=\"size-[16px]\" />\n </button>\n </div>\n )}\n\n {/* Destination textarea */}\n <div className=\"flex flex-col gap-[4px] w-full\">\n <label style={labelStyle}>Destination</label>\n <div\n className=\"relative rounded-[12px] w-full\"\n style={{ backgroundColor: \"var(--input-background)\", border: \"1px solid var(--border)\" }}\n >\n <textarea\n value={destination}\n onChange={(e) => onDestinationChange(e.target.value)}\n placeholder=\"Briefly describe about the source\"\n rows={3}\n className=\"w-full bg-transparent border-none outline-none px-[16px] py-[8px] rounded-[12px] resize-y min-h-[76px]\"\n style={{\n ...bodyStyle,\n color: destination ? \"var(--foreground)\" : \"var(--muted-foreground)\",\n }}\n />\n </div>\n </div>\n\n {/* Divider before first repo section */}\n <div className=\"flex items-center w-full h-[1px]\">\n <div className=\"flex-1 h-px\" style={{ backgroundColor: \"var(--border)\" }} />\n </div>\n\n {/* Repo sections */}\n {repoSections.map((section, idx) => (\n <RepoSectionCard\n key={section.id}\n section={section}\n index={idx}\n totalSections={repoSections.length}\n onUpdate={onUpdateSection}\n onRemove={onRemoveSection}\n />\n ))}\n\n {/* + Add Another Repository */}\n <div\n className=\"relative min-h-[36px] rounded-[9999px] w-full\"\n style={{ border: \"1px solid var(--ring)\" }}\n >\n <button\n onClick={onAddAnotherRepo}\n className=\"flex items-center justify-center gap-[8px] min-h-[36px] px-[20px] py-[8px] w-full rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <Plus className=\"size-[16px] shrink-0\" style={{ color: \"var(--foreground)\" }} />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n Add Another Repository\n </span>\n </button>\n </div>\n </div>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n STEP 3: Preview / Review\n ════════════════════════════════════════════════════════════ */\n\n/** Build a display path for selected projects, e.g. \"Stellar Solutions / Engineering\" */\nfunction getSelectedProjectPaths(selected: Set<string>, tree: ProjectNode): string[] {\n const paths: string[] = [];\n\n function walk(node: ProjectNode, parentPath: string) {\n const currentPath = parentPath ? `${parentPath} / ${node.name}` : node.name;\n // If this node is selected (checked), add it as a summary path\n const state = getCheckState(node, selected);\n if (state === \"checked\") {\n paths.push(currentPath);\n return; // don't drill deeper — parent covers children\n }\n if (state === \"indeterminate\" && node.children) {\n for (const child of node.children) {\n walk(child, currentPath);\n }\n }\n }\n\n walk(tree, \"\");\n return paths.length > 0 ? paths : [\"No projects selected\"];\n}\n\n/** Extract short repo name from full path */\nfunction getRepoShortName(repo: string): string {\n const parts = repo.split(\"/\");\n return parts[parts.length - 1] || repo;\n}\n\nfunction Step3ReviewCard({\n section,\n onDelete,\n canDelete,\n}: {\n section: RepoSectionData;\n onDelete: (id: string) => void;\n canDelete: boolean;\n}) {\n const projectPaths = getSelectedProjectPaths(section.selectedProjects, MOCK_ACCOUNT_TREE);\n\n return (\n <div\n className=\"flex flex-col gap-[16px] rounded-[12px] w-full p-[16px]\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: \"1px solid var(--border)\",\n }}\n >\n {/* Resource Name */}\n <div className=\"flex flex-col gap-[4px] w-full\">\n <span style={labelStyle}>Resource Name</span>\n <div\n className=\"relative min-h-[40px] rounded-[12px] w-full\"\n style={{ backgroundColor: \"var(--card)\", border: \"1px solid var(--border)\" }}\n >\n <div className=\"flex items-center min-h-[40px] px-[16px] py-[9.5px]\">\n <span style={{ ...bodyStyle, color: \"var(--foreground)\" }}>\n {section.resourceName || \"Unnamed\"}\n </span>\n </div>\n </div>\n </div>\n\n {/* Project paths + repo/branch tags */}\n <div className=\"flex flex-col gap-[8px] w-full\">\n {projectPaths.map((path, i) => (\n <span\n key={i}\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n {path}\n </span>\n ))}\n <div className=\"flex gap-[8px] items-center flex-wrap\">\n <span\n className=\"inline-flex items-center px-[10px] py-[4px] rounded-[8px]\"\n style={{\n backgroundColor: \"var(--primary)\",\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-xs)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--primary-foreground)\",\n }}\n >\n Repository: {getRepoShortName(section.selectedRepo)}\n </span>\n <span\n className=\"inline-flex items-center px-[10px] py-[4px] rounded-[8px]\"\n style={{\n backgroundColor: \"var(--foreground)\",\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-xs)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--background)\",\n }}\n >\n Branch: {section.selectedBranch}\n </span>\n </div>\n </div>\n\n {/* Share resource with project team */}\n <div className=\"flex flex-col gap-[8px] w-full\">\n <span style={labelStyle}>Share resource with project team</span>\n <div className=\"flex gap-[8px] items-center h-[24px]\">\n <div className=\"relative shrink-0\" style={{ width: 33, height: 18 }}>\n <div\n className=\"absolute inset-0 rounded-[12px]\"\n style={{\n backgroundColor: section.shareDownstream\n ? \"var(--switch-active-bg)\"\n : \"var(--switch-inactive-bg)\",\n }}\n />\n <div\n className=\"absolute top-[1px]\"\n style={{ width: 16, height: 16, left: section.shareDownstream ? 16 : 1 }}\n >\n <svg className=\"block size-full\" fill=\"none\" viewBox=\"0 0 16 16\">\n <circle cx=\"8\" cy=\"8\" r=\"8\" fill=\"var(--switch-thumb)\" />\n </svg>\n </div>\n </div>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {section.shareDownstream ? \"Yes\" : \"No\"}\n </span>\n </div>\n </div>\n\n {/* Delete Repository button */}\n {canDelete && (\n <button\n onClick={() => onDelete(section.id)}\n className=\"flex items-center justify-center gap-[8px] w-full min-h-[40px] px-[16px] py-[10px] rounded-[12px] cursor-pointer transition-opacity\"\n style={{\n backgroundColor: \"rgba(239, 68, 68, 0.1)\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"rgba(239, 68, 68, 0.18)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"rgba(239, 68, 68, 0.1)\")}\n >\n <Trash2 className=\"size-[14px]\" style={{ color: \"var(--destructive)\" }} />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--destructive)\",\n }}\n >\n Delete Repository\n </span>\n </button>\n )}\n </div>\n );\n}\n\ninterface Step3Props {\n resourceTitle: string;\n repoSections: RepoSectionData[];\n onDeleteSection: (id: string) => void;\n}\n\nfunction Step3Content({ resourceTitle, repoSections, onDeleteSection }: Step3Props) {\n return (\n <div className=\"flex flex-col gap-[20px] w-full\">\n {repoSections.map((section) => (\n <Step3ReviewCard\n key={section.id}\n section={section}\n onDelete={onDeleteSection}\n canDelete={repoSections.length > 1}\n />\n ))}\n </div>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n MAIN DRAWER\n ════════════════════════════════════════════════════════════ */\nexport function AddContextDrawer({ isOpen, onClose, resourceTitle, onAdd }: AddContextDrawerProps) {\n const [isAnimating, setIsAnimating] = useState(false);\n const [shouldRender, setShouldRender] = useState(false);\n\n // Multi-step state\n const [step, setStep] = useState<1 | 2 | 3>(1);\n const [showBanner, setShowBanner] = useState(true);\n\n // Step 2 form state\n const [destination, setDestination] = useState(\"\");\n const [repoSections, setRepoSections] = useState<RepoSectionData[]>(() => [createRepoSection()]);\n\n // Section helpers\n const handleUpdateSection = useCallback(\n (id: string, partial: Partial<Omit<RepoSectionData, \"id\">>) => {\n setRepoSections((prev) => prev.map((s) => (s.id === id ? { ...s, ...partial } : s)));\n },\n [],\n );\n\n const handleRemoveSection = useCallback((id: string) => {\n setRepoSections((prev) => {\n if (prev.length <= 1) return prev; // keep at least one\n return prev.filter((s) => s.id !== id);\n });\n }, []);\n\n const handleAddSection = useCallback(() => {\n setRepoSections((prev) => [...prev, createRepoSection()]);\n }, []);\n\n // Reset when drawer opens/closes\n useEffect(() => {\n if (isOpen) {\n setStep(1);\n setShowBanner(true);\n setDestination(\"\");\n _repoSectionIdCounter = 0;\n setRepoSections([createRepoSection()]);\n setShouldRender(true);\n requestAnimationFrame(() => {\n requestAnimationFrame(() => setIsAnimating(true));\n });\n } else {\n setIsAnimating(false);\n const timer = setTimeout(() => setShouldRender(false), 300);\n return () => clearTimeout(timer);\n }\n }, [isOpen]);\n\n // Keyboard support: Escape to close\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && isOpen) onClose();\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, onClose]);\n\n const handleAuthenticated = useCallback(() => {\n setStep(2);\n setShowBanner(true);\n }, []);\n\n if (!shouldRender) return null;\n\n // Validate: at least one section must have repo + branch + projects selected\n const isStep2Valid = repoSections.some(\n (s) =>\n s.selectedRepo.trim().length > 0 &&\n s.selectedBranch.trim().length > 0 &&\n s.selectedProjects.size > 0,\n );\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-end overflow-clip transition-all duration-300\"\n style={{\n backdropFilter: isAnimating ? \"blur(5px)\" : \"blur(0px)\",\n backgroundColor: isAnimating ? \"rgba(31, 40, 50, 0.4)\" : \"rgba(31, 40, 50, 0)\",\n }}\n onClick={(e) => {\n if (e.target === e.currentTarget) onClose();\n }}\n >\n {/* Drawer Panel */}\n <div\n className=\"h-full shrink-0 w-[480px] sm:w-[560px] md:w-[640px] flex flex-col drawer-panel rounded-tl-[16px] rounded-bl-[16px]\"\n style={{\n backgroundColor: \"var(--card)\",\n transform: isAnimating ? \"translateX(0)\" : \"translateX(100%)\",\n }}\n >\n {/* ── Header ── */}\n <div className=\"shrink-0 px-[24px] py-[16px]\">\n <div className=\"flex items-center justify-between w-full\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-xl)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Add Context\n </span>\n <button\n onClick={onClose}\n className=\"flex items-center justify-center size-[28px] rounded-[8px] transition-colors cursor-pointer\"\n style={{ color: \"var(--muted-foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <X className=\"size-[16px]\" />\n </button>\n </div>\n </div>\n\n {/* ── Content (scrollable) ── */}\n <div className=\"flex-1 min-h-0 overflow-y-auto px-[24px] py-[8px]\">\n <div className=\"flex flex-col gap-[32px]\">\n {/* Sub-header: Configure Resource */}\n <div className=\"flex flex-col gap-[4px]\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n {step === 3\n ? `${resourceTitle} Resource Review`\n : `Configure ${resourceTitle} Resource`}\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {step === 3\n ? \"Please review and add resource based on the information you have provided\"\n : \"Provide connection details and authentication\"}\n </span>\n </div>\n\n {/* Step content */}\n {step === 1 ? (\n <Step1Content resourceTitle={resourceTitle} onAuthenticated={handleAuthenticated} />\n ) : step === 2 ? (\n <Step2Content\n resourceTitle={resourceTitle}\n showBanner={showBanner}\n onDismissBanner={() => setShowBanner(false)}\n destination={destination}\n onDestinationChange={setDestination}\n repoSections={repoSections}\n onUpdateSection={handleUpdateSection}\n onRemoveSection={handleRemoveSection}\n onAddAnotherRepo={handleAddSection}\n />\n ) : (\n <Step3Content\n resourceTitle={resourceTitle}\n repoSections={repoSections}\n onDeleteSection={handleRemoveSection}\n />\n )}\n </div>\n </div>\n\n {/* ── Footer ── */}\n <div className=\"shrink-0 px-[24px] py-[16px]\">\n <div className=\"flex gap-[8px] items-start justify-end w-full\">\n {/* Cancel / Back Button */}\n <div\n className=\"relative flex-1 rounded-[9999px]\"\n style={{ border: \"1px solid var(--ring)\" }}\n >\n <button\n onClick={step === 3 ? () => setStep(2) : onClose}\n className=\"flex items-center justify-center w-full px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n {step === 3 ? \"Back\" : \"Cancel\"}\n </span>\n </button>\n </div>\n\n {/* Preview Button */}\n <button\n className=\"flex-1 flex items-center justify-center gap-[8px] px-[32px] py-[12px] rounded-[9999px] transition-opacity cursor-pointer\"\n style={{\n backgroundColor: \"var(--primary)\",\n opacity: (step === 2 && isStep2Valid) || step === 3 ? 1 : 0.5,\n }}\n disabled={step === 1 || (step === 2 && !isStep2Valid)}\n onClick={() => {\n if (step === 2 && isStep2Valid) {\n setStep(3);\n } else if (step === 3) {\n // Add Resource action — close drawer\n onClose();\n if (onAdd) onAdd(resourceTitle);\n }\n }}\n onMouseEnter={(e) => {\n if ((step === 2 && isStep2Valid) || step === 3)\n e.currentTarget.style.opacity = \"0.9\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity =\n (step === 2 && isStep2Valid) || step === 3 ? \"1\" : \"0.5\";\n }}\n >\n {step === 3 && (\n <Check className=\"size-[16px]\" style={{ color: \"var(--primary-foreground)\" }} />\n )}\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--primary-foreground)\",\n }}\n >\n {step === 3 ? \"Add Resource\" : \"Preview\"}\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import { Info, X } from \"lucide-react\";\nimport { useState } from \"react\";\n\n/* ════════════════════════════════════════════════════════════\n InfoBanner — dismissible info/tip banner\n Uses CSS variables: --info-banner-bg, --info-banner-title,\n --info-banner-text, --info-banner-icon\n ════════════════════════════════════════════════════════════ */\n\ninterface InfoBannerProps {\n title: string;\n description?: string;\n /** If false, hides the dismiss (X) button. Default true. */\n dismissible?: boolean;\n /** External control: if provided, overrides internal state */\n visible?: boolean;\n onDismiss?: () => void;\n className?: string;\n}\n\nexport function InfoBanner({\n title,\n description,\n dismissible = true,\n visible,\n onDismiss,\n className = \"\",\n}: InfoBannerProps) {\n const [internalVisible, setInternalVisible] = useState(true);\n const isVisible = visible !== undefined ? visible : internalVisible;\n\n if (!isVisible) return null;\n\n const handleDismiss = () => {\n setInternalVisible(false);\n onDismiss?.();\n };\n\n return (\n <div\n role=\"status\"\n className={`flex items-center gap-[16px] px-[16px] py-[12px] rounded-[12px] w-full ${className}`}\n style={{ backgroundColor: \"var(--info-banner-bg)\" }}\n >\n {/* Info icon */}\n <div className=\"shrink-0\">\n <Info className=\"size-[20px]\" style={{ color: \"var(--info-banner-icon)\" }} />\n </div>\n\n {/* Content */}\n <div className=\"flex-1 flex flex-col gap-[4px] min-w-0\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--info-banner-title)\",\n }}\n >\n {title}\n </span>\n {description && (\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--info-banner-text)\",\n }}\n >\n {description}\n </span>\n )}\n </div>\n\n {/* Dismiss button */}\n {dismissible && (\n <button\n type=\"button\"\n aria-label=\"Dismiss\"\n onClick={handleDismiss}\n className=\"shrink-0 flex items-center justify-center size-[32px] rounded-[8px] cursor-pointer transition-colors\"\n style={{ color: \"var(--foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <X className=\"size-[16px]\" />\n </button>\n )}\n </div>\n );\n}\n","/* ─── Types ─────────────────────────────────────────────── */\nexport interface RichCheckboxItem {\n id: string;\n label: string;\n checked: boolean;\n}\n\nexport interface RichCheckboxGroupData {\n id: string;\n label: string;\n items: RichCheckboxItem[];\n}\n\ninterface RichCheckboxGroupProps {\n group: RichCheckboxGroupData;\n onToggle: (groupId: string, itemId: string) => void;\n}\n\n/* ════════════════════════════════════════════════════════════\n RichCheckbox — single checkbox row item\n Matches the Jira connection drawer style: muted bg button,\n primary border when selected, SVG rect+path checkbox.\n ════════════════════════════════════════════════════════════ */\nfunction RichCheckbox({\n item,\n onToggle,\n}: {\n item: RichCheckboxItem;\n onToggle: () => void;\n}) {\n return (\n <button\n role=\"checkbox\"\n aria-checked={item.checked}\n tabIndex={0}\n onClick={onToggle}\n onKeyDown={(e) => {\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n onToggle();\n }\n }}\n className=\"flex-1 relative rounded-[10px] cursor-pointer transition-colors w-full text-left\"\n style={{\n backgroundColor: \"var(--muted)\",\n border: `1px solid ${item.checked ? \"var(--primary)\" : \"var(--border)\"}`,\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--accent)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n >\n <div className=\"flex gap-[12px] items-start px-[12px] py-[8px] w-full\">\n {/* SVG checkbox — matches Jira drawer */}\n <div className=\"flex items-center pt-[2.5px] shrink-0\">\n <div className=\"relative shrink-0 size-[16px]\">\n <svg className=\"block size-full\" fill=\"none\" viewBox=\"0 0 16 16\">\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width=\"15\"\n height=\"15\"\n rx=\"3.5\"\n fill={item.checked ? \"var(--primary)\" : \"var(--input-background)\"}\n stroke={item.checked ? \"var(--primary)\" : \"var(--border)\"}\n />\n {item.checked && (\n <path\n d=\"M12 5L6.5 10.5L4 8\"\n stroke=\"var(--primary-foreground)\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n </svg>\n </div>\n </div>\n\n {/* Label */}\n <span\n className=\"flex-1 text-left\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n {item.label}\n </span>\n </div>\n </button>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n RichCheckboxGroup — labeled group with a bordered container\n and single-column list of checkbox rows. Matches the Jira\n connection drawer org-project selector style.\n ════════════════════════════════════════════════════════════ */\nexport function RichCheckboxGroup({ group, onToggle }: RichCheckboxGroupProps) {\n return (\n <div className=\"flex flex-col gap-[4px] items-start w-full\">\n {/* Category label */}\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n {group.label}\n </span>\n\n {/* Container — matches Jira input-background + border */}\n <div\n className=\"rounded-[12px] p-[12px] w-full\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: \"1px solid var(--border)\",\n }}\n >\n <div className=\"flex flex-col gap-[8px]\">\n {group.items.map((item) => (\n <RichCheckbox key={item.id} item={item} onToggle={() => onToggle(group.id, item.id)} />\n ))}\n </div>\n </div>\n </div>\n );\n}\n","import { type KeyboardEvent, useEffect, useRef, useState } from \"react\";\n\n/* ─── Types ─────────────────────────────────────────────── */\nexport interface Tab {\n id: string;\n label: string;\n}\n\ninterface TabGroupProps {\n tabs: Tab[];\n activeTab: string;\n onTabChange: (tabId: string) => void;\n /** Optional className on the outer container */\n className?: string;\n}\n\n/* ════════════════════════════════════════════════════════════\n TabGroup — reusable pill-style tab switcher\n Follows the Figma pattern: muted container, elevated active\n tab with sliding indicator animation.\n ════════════════════════════════════════════════════════════ */\nexport function TabGroup({ tabs, activeTab, onTabChange, className = \"\" }: TabGroupProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const tabRefs = useRef<Map<string, HTMLButtonElement>>(new Map());\n\n /* Sliding indicator position */\n const [indicator, setIndicator] = useState<{ left: number; width: number } | null>(null);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const updateIndicator = () => {\n const activeEl = tabRefs.current.get(activeTab);\n if (!activeEl) return;\n const containerRect = container.getBoundingClientRect();\n const tabRect = activeEl.getBoundingClientRect();\n setIndicator({\n left: tabRect.left - containerRect.left,\n width: tabRect.width,\n });\n };\n\n updateIndicator();\n\n const observer = new ResizeObserver(updateIndicator);\n observer.observe(container);\n return () => observer.disconnect();\n }, [activeTab, tabs]);\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>, index: number) => {\n if (e.key !== \"ArrowLeft\" && e.key !== \"ArrowRight\") return;\n e.preventDefault();\n const delta = e.key === \"ArrowRight\" ? 1 : -1;\n const nextIndex = (index + delta + tabs.length) % tabs.length;\n const nextTab = tabs[nextIndex];\n if (!nextTab) return;\n onTabChange(nextTab.id);\n tabRefs.current.get(nextTab.id)?.focus();\n };\n\n return (\n <div\n ref={containerRef}\n role=\"tablist\"\n className={`relative flex items-center p-[4px] rounded-[12px] ${className}`}\n style={{ backgroundColor: \"var(--tab-container-bg)\" }}\n >\n {/* Sliding active indicator */}\n {indicator && (\n <div\n className=\"absolute top-[4px] bottom-[4px] rounded-[10px] transition-all duration-200 ease-out\"\n style={{\n left: indicator.left,\n width: indicator.width,\n backgroundColor: \"var(--tab-active-bg)\",\n boxShadow: \"var(--elevation-sm)\",\n }}\n />\n )}\n\n {/* Tab buttons */}\n {tabs.map((tab, index) => {\n const isActive = activeTab === tab.id;\n return (\n <button\n key={tab.id}\n ref={(el) => {\n if (el) tabRefs.current.set(tab.id, el);\n }}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n tabIndex={isActive ? 0 : -1}\n onClick={() => onTabChange(tab.id)}\n onKeyDown={(e) => handleKeyDown(e, index)}\n className=\"relative z-[1] flex items-center justify-center min-h-[32px] min-w-[32px] px-[10px] py-[5.5px] rounded-[10px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = \"var(--glass-medium)\";\n }}\n onMouseLeave={(e) => {\n if (!isActive) e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n whiteSpace: \"nowrap\",\n }}\n >\n {tab.label}\n </span>\n </button>\n );\n })}\n </div>\n );\n}\n","import { CheckCircle, ChevronDown, Copy, Pencil, Save, Trash2, X } from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { InfoBanner } from \"../InfoBanner\";\nimport { RichCheckboxGroup } from \"../RichCheckboxGroup\";\nimport type { RichCheckboxGroupData } from \"../RichCheckboxGroup\";\nimport { TabGroup } from \"../TabGroup\";\n\n/* ─── Types ─────────────────────────────────────────────── */\nexport interface RoleData {\n id?: string;\n name: string;\n description: string;\n permissions: number;\n /** Which tab from the roles page: 'templates' | 'saved' */\n source?: \"templates\" | \"saved\";\n}\n\n/* ─── Platform definitions ──────────────────────────────── */\nexport interface PlatformInfo {\n id: string;\n label: string;\n color: string; // CSS variable for the badge dot/accent\n bgColor: string; // CSS variable for badge background\n textColor: string; // CSS variable for badge text\n}\n\nexport const PLATFORMS: PlatformInfo[] = [\n {\n id: \"common\",\n label: \"Common Roles\",\n color: \"var(--muted-foreground)\",\n bgColor: \"var(--muted)\",\n textColor: \"var(--foreground)\",\n },\n {\n id: \"bodhi\",\n label: \"Bodhi\",\n color: \"var(--chart-1)\",\n bgColor: \"var(--badge-warning-bg)\",\n textColor: \"var(--badge-warning-text)\",\n },\n {\n id: \"slingshot\",\n label: \"Slingshot\",\n color: \"var(--chart-2)\",\n bgColor: \"var(--badge-success-bg)\",\n textColor: \"var(--badge-success-text)\",\n },\n {\n id: \"sustain\",\n label: \"Sustain\",\n color: \"var(--chart-3)\",\n bgColor: \"var(--badge-info-bg)\",\n textColor: \"var(--badge-info-text)\",\n },\n {\n id: \"ecs\",\n label: \"Enterprise Context Store\",\n color: \"var(--chart-4)\",\n bgColor: \"var(--badge-danger-bg)\",\n textColor: \"var(--badge-danger-text)\",\n },\n];\n\ninterface AddNewRoleDrawerProps {\n isOpen: boolean;\n onClose: () => void;\n onSave?: (role: {\n name: string;\n description: string;\n permissions: string[];\n platforms: string[];\n }) => void;\n /** Called when user duplicates a template into saved roles */\n onDuplicate?: (role: {\n name: string;\n description: string;\n permissions: string[];\n platforms: string[];\n }) => void;\n /** Called when user deletes a role */\n onDelete?: (roleId: string) => void;\n /** When provided, opens in edit/view mode pre-populated with this role */\n initialRole?: RoleData | null;\n /** The currently-active platform tab on the roles page */\n activePlatform?: string;\n}\n\n/* ─── Shared styles ─────────────────────────────────────── */\nconst labelStyle: React.CSSProperties = {\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n};\n\nconst bodyStyle: React.CSSProperties = {\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n};\n\n/* ─── Default permission groups (matching Figma design) ── */\nconst DEFAULT_PERMISSION_GROUPS: RichCheckboxGroupData[] = [\n {\n id: \"backlogai\",\n label: \"BacklogAI\",\n items: [{ id: \"backlog-generate\", label: \"Generate Backlog\", checked: true }],\n },\n {\n id: \"prompt-library\",\n label: \"Prompt Library\",\n items: [\n { id: \"prompt-read\", label: \"Read\", checked: true },\n { id: \"prompt-write\", label: \"Write\", checked: true },\n { id: \"prompt-approve\", label: \"Approve Prompts\", checked: false },\n ],\n },\n {\n id: \"agent\",\n label: \"Agent\",\n items: [{ id: \"agent-execute\", label: \"Execute Atlassian/Dev Agents\", checked: false }],\n },\n {\n id: \"connections\",\n label: \"Connections\",\n items: [{ id: \"conn-view\", label: \"View Atlassian Connections\", checked: true }],\n },\n {\n id: \"ecg\",\n label: \"Enterprise Context Graph\",\n items: [\n { id: \"ecg-view\", label: \"View Context\", checked: true },\n { id: \"ecg-ingest\", label: \"Ingest List\", checked: false },\n ],\n },\n];\n\n/* ─── Generate permission presets based on role name ───── */\nfunction generatePermissionsForRole(roleName: string, permCount: number): RichCheckboxGroupData[] {\n // Deterministic seed from role name to create varied but consistent presets\n const hash = roleName.split(\"\").reduce((acc, ch) => acc + ch.charCodeAt(0), 0);\n const allItems = DEFAULT_PERMISSION_GROUPS.flatMap((g) => g.items);\n const totalItems = allItems.length;\n\n // Pick which items should be checked based on hash + permCount\n const checkedIds = new Set<string>();\n for (let i = 0; i < Math.min(permCount, totalItems); i++) {\n const idx = (hash + i * 7) % totalItems;\n checkedIds.add(allItems[idx].id);\n }\n\n return DEFAULT_PERMISSION_GROUPS.map((group) => ({\n ...group,\n items: group.items.map((item) => ({\n ...item,\n checked: checkedIds.has(item.id),\n })),\n }));\n}\n\n/* ─── Checkbox SVG for platform selector ────────────────── */\nfunction PlatformCheckbox({ checked }: { checked: boolean }) {\n return (\n <div className=\"flex items-center pt-[2.5px] shrink-0\">\n <div className=\"relative shrink-0 size-[16px]\">\n <svg className=\"block size-full\" fill=\"none\" viewBox=\"0 0 16 16\">\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width=\"15\"\n height=\"15\"\n rx=\"3.5\"\n fill={checked ? \"var(--primary)\" : \"var(--input-background)\"}\n stroke={checked ? \"var(--primary)\" : \"var(--border)\"}\n />\n {checked && (\n <path\n d=\"M12 5L6.5 10.5L4 8\"\n stroke=\"var(--primary-foreground)\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n </svg>\n </div>\n </div>\n );\n}\n\n/* ─── Overview Tab Content ──────────────────────────────── */\nfunction OverviewContent({\n roleName,\n setRoleName,\n description,\n setDescription,\n onSwitchToPermissions,\n activePlatformId,\n onPlatformChange,\n isEditing,\n readOnly,\n}: {\n roleName: string;\n setRoleName: (v: string) => void;\n description: string;\n setDescription: (v: string) => void;\n onSwitchToPermissions: () => void;\n activePlatformId: string;\n onPlatformChange?: (platformId: string) => void;\n isEditing: boolean;\n readOnly?: boolean;\n}) {\n const activePlatform = PLATFORMS.find((p) => p.id === activePlatformId);\n const [isPlatformDropdownOpen, setIsPlatformDropdownOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!isPlatformDropdownOpen) return;\n const handleClickOutside = (e: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(e.target as Node)) {\n setIsPlatformDropdownOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isPlatformDropdownOpen]);\n\n return (\n <div className=\"flex flex-col gap-[20px] items-start w-full\">\n {/* Platform Dropdown (single-select) */}\n <div className=\"flex flex-col gap-[4px] items-start w-full\">\n <label style={labelStyle}>Platform*</label>\n {readOnly ? (\n /* Read-only badge for view mode */\n activePlatform && (\n <div\n className=\"flex items-center gap-[8px] px-[12px] py-[6px] rounded-[8px]\"\n style={{ backgroundColor: activePlatform.bgColor }}\n >\n <div\n className=\"size-[8px] rounded-full shrink-0\"\n style={{ backgroundColor: activePlatform.color }}\n />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: activePlatform.textColor,\n }}\n >\n {activePlatform.label}\n </span>\n </div>\n )\n ) : (\n /* Editable dropdown */\n <div className=\"relative w-full\" ref={dropdownRef}>\n <button\n type=\"button\"\n onClick={() => setIsPlatformDropdownOpen((prev) => !prev)}\n className=\"relative flex items-center justify-between min-h-[40px] rounded-[12px] w-full px-[16px] py-[9.5px] cursor-pointer\"\n style={{ backgroundColor: \"var(--input-background)\" }}\n >\n <div className=\"flex items-center gap-[8px]\">\n {activePlatform ? (\n <>\n <div\n className=\"size-[8px] rounded-full shrink-0\"\n style={{ backgroundColor: activePlatform.color }}\n />\n <span style={bodyStyle}>{activePlatform.label}</span>\n </>\n ) : (\n <span style={{ ...bodyStyle, color: \"var(--muted-foreground)\" }}>\n Select a platform\n </span>\n )}\n </div>\n <ChevronDown\n className=\"size-[16px] shrink-0 transition-transform\"\n style={{\n color: \"var(--muted-foreground)\",\n transform: isPlatformDropdownOpen ? \"rotate(180deg)\" : \"rotate(0deg)\",\n }}\n />\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[12px]\"\n style={{\n borderColor: isPlatformDropdownOpen ? \"var(--primary)\" : \"var(--border)\",\n boxShadow: \"0px 1px 2px 0px rgba(31,40,50,0)\",\n }}\n />\n </button>\n\n {/* Dropdown options */}\n {isPlatformDropdownOpen && (\n <div\n className=\"absolute top-full left-0 right-0 mt-[4px] z-[20] rounded-[12px] overflow-hidden\"\n style={{\n backgroundColor: \"var(--card)\",\n border: \"1px solid var(--border)\",\n boxShadow: \"0px 8px 24px 0px rgba(31, 40, 50, 0.12)\",\n }}\n >\n <div className=\"flex flex-col py-[4px]\">\n {PLATFORMS.map((platform) => (\n <button\n key={platform.id}\n type=\"button\"\n onClick={() => {\n onPlatformChange?.(platform.id);\n setIsPlatformDropdownOpen(false);\n }}\n className=\"flex items-center gap-[12px] px-[16px] py-[10px] cursor-pointer transition-colors w-full text-left\"\n style={{\n backgroundColor:\n platform.id === activePlatformId ? \"var(--muted)\" : \"transparent\",\n }}\n onMouseEnter={(e) => {\n if (platform.id !== activePlatformId)\n e.currentTarget.style.backgroundColor = \"var(--muted)\";\n }}\n onMouseLeave={(e) => {\n if (platform.id !== activePlatformId)\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n >\n <div\n className={`shrink-0 ${platform.id === \"common\" ? \"size-[8px] rounded-[2px]\" : \"size-[8px] rounded-full\"}`}\n style={{ backgroundColor: platform.color }}\n />\n <span\n style={{\n ...bodyStyle,\n fontWeight:\n platform.id === activePlatformId\n ? \"var(--font-weight-medium)\"\n : \"var(--font-weight-normal)\",\n }}\n >\n {platform.label}\n </span>\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* Role Name */}\n <div className=\"flex flex-col gap-[4px] items-start w-full\">\n <label style={labelStyle}>Role Name*</label>\n <div\n className=\"relative min-h-[40px] rounded-[12px] w-full\"\n style={{ backgroundColor: \"var(--input-background)\" }}\n >\n <div className=\"flex items-center min-h-[inherit] overflow-clip rounded-[inherit] w-full\">\n <input\n type=\"text\"\n value={roleName}\n onChange={(e) => setRoleName(e.target.value)}\n placeholder=\"Enter role name\"\n className=\"flex-1 bg-transparent border-none outline-none px-[16px] py-[9.5px] w-full relative z-[1]\"\n style={bodyStyle}\n readOnly={readOnly}\n />\n </div>\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[12px]\"\n style={{\n borderColor: \"var(--border)\",\n boxShadow: \"0px 1px 2px 0px rgba(31,40,50,0)\",\n }}\n />\n </div>\n </div>\n\n {/* Description */}\n <div className=\"flex flex-col gap-[4px] items-start w-full\">\n <label style={labelStyle}>Description</label>\n <div\n className=\"relative rounded-[12px] w-full\"\n style={{ backgroundColor: \"var(--input-background)\" }}\n >\n <textarea\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n placeholder=\"Type your message here.\"\n rows={3}\n className=\"w-full bg-transparent border-none outline-none px-[16px] py-[8px] resize-vertical relative z-[1] placeholder:text-[color:var(--muted-foreground)]\"\n style={{\n ...bodyStyle,\n color: \"var(--foreground)\",\n minHeight: \"76px\",\n }}\n readOnly={readOnly}\n />\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[12px]\"\n style={{\n borderColor: \"var(--border)\",\n boxShadow: \"0px 1px 2px 0px rgba(31,40,50,0)\",\n }}\n />\n </div>\n </div>\n\n {/* Set Permissions Button */}\n <button\n onClick={onSwitchToPermissions}\n className=\"relative flex gap-[8px] items-center justify-center min-h-[40px] px-[20px] py-[10px] rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[9999px]\"\n style={{\n borderColor: \"var(--border)\",\n boxShadow: \"0px 1px 2px 0px rgba(31,40,50,0)\",\n }}\n />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n Set Permissions\n </span>\n </button>\n </div>\n );\n}\n\n/* ─── Permissions Tab Content ───────────────────────────── */\nfunction PermissionsContent({\n groups,\n onToggle,\n showBanner,\n onDismissBanner,\n}: {\n groups: RichCheckboxGroupData[];\n onToggle: (groupId: string, itemId: string) => void;\n showBanner: boolean;\n onDismissBanner: () => void;\n}) {\n return (\n <div className=\"flex flex-col gap-[20px] items-start w-full\">\n {/* Info banner */}\n <InfoBanner\n title=\"Configure permissions for this role\"\n description=\"Some permissions have dependencies and will automatically enable required permissions.\"\n visible={showBanner}\n onDismiss={onDismissBanner}\n />\n\n {/* Permission groups */}\n {groups.map((group) => (\n <RichCheckboxGroup key={group.id} group={group} onToggle={onToggle} />\n ))}\n </div>\n );\n}\n\n/* ════════════════════════════════════════════════════════════\n Add New Role Drawer\n ════════════════════════════════════════════════════════════ */\nexport function AddNewRoleDrawer({\n isOpen,\n onClose,\n onSave,\n onDuplicate,\n onDelete,\n initialRole,\n activePlatform,\n}: AddNewRoleDrawerProps) {\n const [shouldRender, setShouldRender] = useState(false);\n const [isAnimating, setIsAnimating] = useState(false);\n\n const [activeTab, setActiveTab] = useState<\"overview\" | \"permissions\">(\"overview\");\n const [roleName, setRoleName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [permissionGroups, setPermissionGroups] =\n useState<RichCheckboxGroupData[]>(DEFAULT_PERMISSION_GROUPS);\n const [showInfoBanner, setShowInfoBanner] = useState(true);\n const [selectedPlatforms, setSelectedPlatforms] = useState<string[]>([activePlatform || \"bodhi\"]);\n\n /** 'view' = read-only template preview, 'edit' = update existing, 'duplicate' = save as new */\n const [drawerMode, setDrawerMode] = useState<\"view\" | \"edit\" | \"duplicate\">(\"view\");\n\n /** Delete confirmation state */\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n\n // Toast state\n const [shouldRenderToast, setShouldRenderToast] = useState(false);\n const [isToastAnimating, setIsToastAnimating] = useState(false);\n const [toastRoleName, setToastRoleName] = useState(\"\");\n const [toastIsUpdate, setToastIsUpdate] = useState(false);\n const [toastVariant, setToastVariant] = useState<\"success\" | \"delete\">(\"success\");\n const toastTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const isEditing = !!initialRole;\n\n // Toast animation lifecycle\n const showSuccessToast = useCallback((name: string, isUpdate: boolean) => {\n setToastRoleName(name);\n setToastIsUpdate(isUpdate);\n setToastVariant(\"success\");\n setShouldRenderToast(true);\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n setIsToastAnimating(true);\n });\n });\n if (toastTimerRef.current) clearTimeout(toastTimerRef.current);\n toastTimerRef.current = setTimeout(() => dismissToast(), 6000);\n }, []);\n\n const showDeleteToast = useCallback((name: string) => {\n setToastRoleName(name);\n setToastVariant(\"delete\");\n setShouldRenderToast(true);\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n setIsToastAnimating(true);\n });\n });\n if (toastTimerRef.current) clearTimeout(toastTimerRef.current);\n toastTimerRef.current = setTimeout(() => dismissToast(), 6000);\n }, []);\n\n const dismissToast = useCallback(() => {\n setIsToastAnimating(false);\n if (toastTimerRef.current) clearTimeout(toastTimerRef.current);\n }, []);\n\n // Cleanup timer on unmount\n useEffect(() => {\n return () => {\n if (toastTimerRef.current) clearTimeout(toastTimerRef.current);\n };\n }, []);\n\n // Seed form from initialRole when drawer opens\n useEffect(() => {\n if (isOpen && initialRole) {\n setRoleName(initialRole.name);\n setDescription(initialRole.description);\n setActiveTab(\"permissions\");\n setPermissionGroups(generatePermissionsForRole(initialRole.name, initialRole.permissions));\n setShowInfoBanner(true);\n setSelectedPlatforms([activePlatform || \"bodhi\"]);\n setDrawerMode(initialRole.source === \"templates\" ? \"view\" : \"edit\");\n setShowDeleteConfirm(false);\n } else if (isOpen && !initialRole) {\n setRoleName(\"\");\n setDescription(\"\");\n setActiveTab(\"overview\");\n setPermissionGroups(DEFAULT_PERMISSION_GROUPS);\n setShowInfoBanner(true);\n setSelectedPlatforms(activePlatform ? [activePlatform] : []);\n setDrawerMode(\"edit\");\n setShowDeleteConfirm(false);\n }\n }, [isOpen, initialRole, activePlatform]);\n\n // Open/close animation\n useEffect(() => {\n if (isOpen) {\n setShouldRender(true);\n requestAnimationFrame(() => {\n requestAnimationFrame(() => setIsAnimating(true));\n });\n } else {\n setIsAnimating(false);\n const timer = setTimeout(() => {\n setShouldRender(false);\n }, 300);\n return () => clearTimeout(timer);\n }\n }, [isOpen]);\n\n // Escape key\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && isOpen) onClose();\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, onClose]);\n\n const handleTogglePermission = useCallback((groupId: string, itemId: string) => {\n setPermissionGroups((prev) =>\n prev.map((g) =>\n g.id === groupId\n ? {\n ...g,\n items: g.items.map((item) =>\n item.id === itemId ? { ...item, checked: !item.checked } : item,\n ),\n }\n : g,\n ),\n );\n }, []);\n\n const handleTogglePlatform = useCallback((platformId: string) => {\n setSelectedPlatforms((prev) => {\n // Don't allow deselecting the last platform\n if (prev.includes(platformId) && prev.length === 1) return prev;\n if (prev.includes(platformId)) return prev.filter((p) => p !== platformId);\n return [...prev, platformId];\n });\n }, []);\n\n const handleSave = useCallback(() => {\n if (!roleName.trim()) return;\n const selectedPermissions = permissionGroups\n .flatMap((g) => g.items)\n .filter((item) => item.checked)\n .map((item) => item.id);\n onSave?.({\n name: roleName.trim(),\n description: description.trim(),\n permissions: selectedPermissions,\n platforms: selectedPlatforms,\n });\n const isUpdate = drawerMode === \"edit\" || (isEditing && initialRole?.source === \"saved\");\n showSuccessToast(roleName.trim(), isUpdate);\n onClose();\n }, [\n roleName,\n description,\n permissionGroups,\n onSave,\n onClose,\n isEditing,\n initialRole,\n selectedPlatforms,\n drawerMode,\n ]);\n\n const handleDuplicate = useCallback(() => {\n if (!roleName.trim()) return;\n const selectedPermissions = permissionGroups\n .flatMap((g) => g.items)\n .filter((item) => item.checked)\n .map((item) => item.id);\n onDuplicate?.({\n name: roleName.trim(),\n description: description.trim(),\n permissions: selectedPermissions,\n platforms: selectedPlatforms,\n });\n showSuccessToast(roleName.trim(), false);\n onClose();\n }, [roleName, description, permissionGroups, onDuplicate, onClose, selectedPlatforms]);\n\n const isValid =\n roleName.trim().length > 0 && selectedPlatforms.length > 0 && selectedPlatforms[0] !== \"\";\n\n return (\n <>\n {/* ── Success Toast (rendered outside drawer lifecycle) ── */}\n {shouldRenderToast && (\n <div\n className=\"fixed top-0 left-1/2 z-[60] px-[16px] pt-[88px]\"\n style={{\n width: \"400px\",\n maxWidth: \"calc(100vw - 32px)\",\n opacity: isToastAnimating ? 1 : 0,\n transform: isToastAnimating\n ? \"translateX(-50%) translateY(0)\"\n : \"translateX(-50%) translateY(-16px)\",\n transition:\n \"opacity 350ms cubic-bezier(0.16, 1, 0.3, 1), transform 350ms cubic-bezier(0.16, 1, 0.3, 1)\",\n }}\n onTransitionEnd={() => {\n if (!isToastAnimating) {\n setShouldRenderToast(false);\n }\n }}\n >\n <div\n className=\"flex items-center gap-[16px] px-[16px] py-[12px] rounded-[12px]\"\n style={{\n backgroundColor:\n toastVariant === \"success\" ? \"var(--toast-success-bg)\" : \"var(--toast-delete-bg)\",\n boxShadow: \"0px 6px 32px 0px rgba(23, 26, 28, 0.1)\",\n }}\n >\n <CheckCircle\n className=\"size-[20px] shrink-0\"\n style={{\n color:\n toastVariant === \"delete\" ? \"var(--destructive)\" : \"var(--toast-success-title)\",\n }}\n />\n <div className=\"flex-1 flex flex-col gap-[4px] min-w-0\">\n <p\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color:\n toastVariant === \"delete\" ? \"var(--destructive)\" : \"var(--toast-success-title)\",\n }}\n >\n {toastVariant === \"delete\"\n ? \"Role deleted\"\n : toastIsUpdate\n ? \"Role updated successfully\"\n : \"Role saved successfully\"}\n </p>\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--toast-success-text)\",\n }}\n >\n {toastVariant === \"delete\" ? (\n <>“{toastRoleName}” has been permanently removed</>\n ) : (\n <>\n “{toastRoleName}” has been {toastIsUpdate ? \"updated\" : \"added\"}{\" \"}\n with the configured permissions\n </>\n )}\n </p>\n </div>\n <button\n onClick={() => dismissToast()}\n className=\"shrink-0 flex items-center justify-center w-[32px] h-[32px] rounded-[8px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--toast-success-close-hover)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <X className=\"size-[16px]\" style={{ color: \"var(--toast-close-icon)\" }} />\n </button>\n </div>\n </div>\n )}\n\n {/* ── Drawer ── */}\n {shouldRender && (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-end overflow-clip transition-all duration-300\"\n style={{\n backdropFilter: isAnimating ? \"blur(5px)\" : \"blur(0px)\",\n backgroundColor: isAnimating ? \"rgba(31, 40, 50, 0.4)\" : \"rgba(31, 40, 50, 0)\",\n }}\n onClick={(e) => {\n if (e.target === e.currentTarget) onClose();\n }}\n >\n {/* Drawer Panel */}\n <div\n className=\"relative h-full shrink-0 w-[480px] sm:w-[560px] md:w-[640px] flex flex-col drawer-panel rounded-tl-[16px] rounded-bl-[16px] border border-solid\"\n style={{\n backgroundColor: \"var(--card)\",\n borderColor: \"var(--border)\",\n transform: isAnimating ? \"translateX(0)\" : \"translateX(100%)\",\n }}\n >\n {/* ── Header ── */}\n <div className=\"shrink-0 px-[24px] py-[16px]\">\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"flex items-center gap-[12px] min-w-0\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-xl)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n {isEditing ? initialRole.name : \"Add New Role\"}\n </span>\n {/* Mode badge for template roles */}\n {isEditing && initialRole.source === \"templates\" && drawerMode !== \"view\" && (\n <span\n className=\"px-[8px] py-[2px] rounded-[6px] shrink-0\"\n style={{\n backgroundColor:\n drawerMode === \"edit\"\n ? \"var(--badge-warning-bg)\"\n : \"var(--badge-info-bg)\",\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color:\n drawerMode === \"edit\"\n ? \"var(--badge-warning-text)\"\n : \"var(--badge-info-text)\",\n }}\n >\n {drawerMode === \"edit\" ? \"Editing\" : \"Duplicating\"}\n </span>\n )}\n </div>\n <button\n onClick={onClose}\n className=\"flex items-center justify-center size-[28px] rounded-[8px] transition-colors cursor-pointer\"\n style={{ color: \"var(--muted-foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <X className=\"size-[16px]\" />\n </button>\n </div>\n </div>\n\n {/* ── Content (scrollable) ── */}\n <div className=\"flex-1 min-h-0 overflow-y-auto px-[24px] py-[8px]\">\n <div className=\"flex flex-col gap-[24px]\">\n {/* Tab Switcher */}\n <TabGroup\n tabs={[\n { id: \"overview\", label: \"Overview\" },\n { id: \"permissions\", label: \"Permissions\" },\n ]}\n activeTab={activeTab}\n onTabChange={(id) => setActiveTab(id as \"overview\" | \"permissions\")}\n className=\"self-start\"\n />\n\n {/* Tab Content */}\n {activeTab === \"overview\" ? (\n <OverviewContent\n roleName={roleName}\n setRoleName={setRoleName}\n description={description}\n setDescription={setDescription}\n onSwitchToPermissions={() => setActiveTab(\"permissions\")}\n activePlatformId={selectedPlatforms[0] || \"\"}\n onPlatformChange={(platformId) => setSelectedPlatforms([platformId])}\n isEditing={isEditing}\n readOnly={drawerMode === \"view\"}\n />\n ) : (\n <PermissionsContent\n groups={permissionGroups}\n onToggle={drawerMode === \"view\" ? () => {} : handleTogglePermission}\n showBanner={showInfoBanner && drawerMode !== \"view\"}\n onDismissBanner={() => setShowInfoBanner(false)}\n />\n )}\n </div>\n </div>\n\n {/* ── Delete Confirmation Overlay ── */}\n {showDeleteConfirm && (\n <div\n className=\"absolute inset-0 z-[10] flex items-center justify-center rounded-tl-[16px] rounded-bl-[16px]\"\n style={{ backgroundColor: \"rgba(31, 40, 50, 0.5)\", backdropFilter: \"blur(2px)\" }}\n onClick={() => setShowDeleteConfirm(false)}\n >\n <div\n className=\"flex flex-col gap-[20px] p-[24px] rounded-[16px] w-[360px] max-w-[calc(100%-48px)]\"\n style={{\n backgroundColor: \"var(--card)\",\n border: \"1px solid var(--border)\",\n boxShadow: \"0px 16px 48px 0px rgba(31, 40, 50, 0.16)\",\n }}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Icon */}\n <div\n className=\"flex items-center justify-center size-[48px] rounded-[12px]\"\n style={{ backgroundColor: \"var(--badge-danger-bg)\" }}\n >\n <Trash2 className=\"size-[20px]\" style={{ color: \"var(--destructive)\" }} />\n </div>\n\n {/* Text */}\n <div className=\"flex flex-col gap-[8px]\">\n <p\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Delete “{initialRole?.name}”?\n </p>\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n This action cannot be undone. The role and all its associated permissions will\n be permanently removed.\n </p>\n </div>\n\n {/* Actions */}\n <div className=\"flex gap-[8px] justify-end\">\n <button\n onClick={() => setShowDeleteConfirm(false)}\n className=\"relative flex items-center justify-center px-[20px] py-[10px] rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[9999px]\"\n style={{\n borderColor: \"var(--border)\",\n boxShadow: \"0px 1px 2px 0px rgba(31,40,50,0)\",\n }}\n />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n Cancel\n </span>\n </button>\n <button\n onClick={() => {\n if (initialRole?.id) {\n onDelete?.(initialRole.id);\n showDeleteToast(initialRole.name);\n }\n setShowDeleteConfirm(false);\n onClose();\n }}\n className=\"flex gap-[8px] items-center justify-center px-[20px] py-[10px] rounded-[9999px] cursor-pointer transition-opacity\"\n style={{ backgroundColor: \"var(--destructive)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.opacity = \"0.9\")}\n onMouseLeave={(e) => (e.currentTarget.style.opacity = \"1\")}\n >\n <Trash2\n className=\"size-[14px]\"\n style={{ color: \"var(--destructive-foreground)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--destructive-foreground)\",\n whiteSpace: \"nowrap\",\n }}\n >\n Yes, Delete\n </span>\n </button>\n </div>\n </div>\n </div>\n )}\n\n {/* ── Footer ── */}\n <div className=\"shrink-0 px-[24px] py-[16px]\">\n <div className=\"flex gap-[8px] items-start justify-end w-full\">\n {/* ── Template role in VIEW mode → Close + Edit + Duplicate ── */}\n {isEditing && initialRole.source === \"templates\" && drawerMode === \"view\" ? (\n <>\n <button\n onClick={onClose}\n className=\"relative flex-1 flex items-center justify-center px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[9999px]\"\n style={{\n borderColor: \"var(--border)\",\n boxShadow: \"0px 1px 2px 0px rgba(31,40,50,0)\",\n }}\n />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Close\n </span>\n </button>\n {/* Edit button */}\n <button\n onClick={() => {\n setDrawerMode(\"edit\");\n setActiveTab(\"overview\");\n }}\n className=\"relative flex-1 flex gap-[8px] items-center justify-center px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[9999px]\"\n style={{\n borderColor: \"var(--border)\",\n boxShadow: \"0px 1px 2px 0px rgba(31,40,50,0)\",\n }}\n />\n <Pencil className=\"size-[16px]\" style={{ color: \"var(--foreground)\" }} />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n whiteSpace: \"nowrap\",\n }}\n >\n Edit\n </span>\n </button>\n {/* Duplicate button */}\n <button\n onClick={() => {\n setDrawerMode(\"duplicate\");\n setRoleName(initialRole.name + \" (Copy)\");\n setActiveTab(\"overview\");\n }}\n className=\"flex-1 flex gap-[8px] items-center justify-center px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-opacity\"\n style={{ backgroundColor: \"var(--primary)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.opacity = \"0.9\")}\n onMouseLeave={(e) => (e.currentTarget.style.opacity = \"1\")}\n >\n <Copy\n className=\"size-[16px]\"\n style={{ color: \"var(--primary-foreground)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--primary-foreground)\",\n whiteSpace: \"nowrap\",\n }}\n >\n Duplicate\n </span>\n </button>\n </>\n ) : isEditing && initialRole.source === \"templates\" && drawerMode === \"edit\" ? (\n /* ── Template role in EDIT mode → Delete + Cancel + Update Role ── */\n <>\n {/* Delete button */}\n <button\n onClick={() => setShowDeleteConfirm(true)}\n className=\"flex items-center justify-center size-[48px] shrink-0 rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--badge-danger-bg)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n title=\"Delete role\"\n >\n <Trash2 className=\"size-[16px]\" style={{ color: \"var(--destructive)\" }} />\n </button>\n <button\n onClick={() => {\n setDrawerMode(\"view\");\n // Reset to original values\n setRoleName(initialRole.name);\n setDescription(initialRole.description);\n setPermissionGroups(\n generatePermissionsForRole(initialRole.name, initialRole.permissions),\n );\n setActiveTab(\"permissions\");\n }}\n className=\"relative flex-1 flex items-center justify-center px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[9999px]\"\n style={{\n borderColor: \"var(--border)\",\n boxShadow: \"0px 1px 2px 0px rgba(31,40,50,0)\",\n }}\n />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Cancel\n </span>\n </button>\n <button\n onClick={() => {\n handleSave();\n }}\n disabled={!isValid}\n className=\"flex-1 flex gap-[8px] items-center justify-center px-[32px] py-[12px] rounded-[9999px] transition-opacity cursor-pointer\"\n style={{\n backgroundColor: \"var(--primary)\",\n opacity: isValid ? 1 : 0.5,\n cursor: isValid ? \"pointer\" : \"not-allowed\",\n }}\n >\n <Save\n className=\"size-[16px]\"\n style={{ color: \"var(--primary-foreground)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--primary-foreground)\",\n whiteSpace: \"nowrap\",\n }}\n >\n Update Role\n </span>\n </button>\n </>\n ) : isEditing &&\n initialRole.source === \"templates\" &&\n drawerMode === \"duplicate\" ? (\n /* ── Template role in DUPLICATE mode → Cancel + Save as New ── */\n <>\n <button\n onClick={() => {\n setDrawerMode(\"view\");\n // Reset to original values\n setRoleName(initialRole.name);\n setDescription(initialRole.description);\n setPermissionGroups(\n generatePermissionsForRole(initialRole.name, initialRole.permissions),\n );\n setActiveTab(\"permissions\");\n }}\n className=\"relative flex-1 flex items-center justify-center px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[9999px]\"\n style={{\n borderColor: \"var(--border)\",\n boxShadow: \"0px 1px 2px 0px rgba(31,40,50,0)\",\n }}\n />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Cancel\n </span>\n </button>\n <button\n onClick={handleDuplicate}\n disabled={!isValid}\n className=\"flex-1 flex gap-[8px] items-center justify-center px-[32px] py-[12px] rounded-[9999px] transition-opacity cursor-pointer\"\n style={{\n backgroundColor: \"var(--primary)\",\n opacity: isValid ? 1 : 0.5,\n cursor: isValid ? \"pointer\" : \"not-allowed\",\n }}\n >\n <Save\n className=\"size-[16px]\"\n style={{ color: \"var(--primary-foreground)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--primary-foreground)\",\n whiteSpace: \"nowrap\",\n }}\n >\n Save as New\n </span>\n </button>\n </>\n ) : (\n /* ── New role or saved role → Back + Delete? + Save/Update ── */\n <>\n {/* Delete button (only for saved roles being edited) */}\n {isEditing && initialRole?.source === \"saved\" && (\n <button\n onClick={() => setShowDeleteConfirm(true)}\n className=\"flex items-center justify-center size-[48px] shrink-0 rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--badge-danger-bg)\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor = \"transparent\")\n }\n title=\"Delete role\"\n >\n <Trash2 className=\"size-[16px]\" style={{ color: \"var(--destructive)\" }} />\n </button>\n )}\n <button\n onClick={onClose}\n className=\"relative flex-1 flex items-center justify-center px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--glass-medium)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[9999px]\"\n style={{\n borderColor: \"var(--border)\",\n boxShadow: \"0px 1px 2px 0px rgba(31,40,50,0)\",\n }}\n />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Back\n </span>\n </button>\n <button\n onClick={handleSave}\n disabled={!isValid}\n className=\"flex-1 flex items-center justify-center px-[32px] py-[12px] rounded-[9999px] transition-opacity cursor-pointer\"\n style={{\n backgroundColor: \"var(--primary)\",\n opacity: isValid ? 1 : 0.5,\n cursor: isValid ? \"pointer\" : \"not-allowed\",\n }}\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--primary-foreground)\",\n }}\n >\n {isEditing && initialRole?.source === \"saved\" ? \"Update Role\" : \"Save Role\"}\n </span>\n </button>\n </>\n )}\n </div>\n </div>\n </div>\n </div>\n )}\n </>\n );\n}\n","import {\n BookOpen,\n Check,\n ChevronDown,\n ClipboardList,\n Cloud,\n Code,\n Database,\n Figma as FigmaIcon,\n FolderGit2,\n GitFork,\n Github,\n Headset,\n MessageSquare,\n Plug,\n Plus,\n Search,\n Share2,\n X,\n} from \"lucide-react\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\n/* ══════════════════════════════════════════════════════════\n Types\n ══════════════════════════════════════════════════════════ */\nexport interface PortfolioFormData {\n name: string;\n description: string;\n selectedProjects: string[];\n resourceMode: \"import\" | \"new\";\n importedResources: string[];\n contextSourceId?: string;\n}\n\ninterface AddPortfolioDrawerProps {\n isOpen: boolean;\n onClose: () => void;\n onSubmit: (data: PortfolioFormData) => void;\n}\n\n/* ══════════════════════════════════════════════════════════\n Static data\n ══════════════════════════════════════════════════════════ */\nconst CONTEXT_SOURCES = [\n { id: \"github\", Icon: Github, title: \"GitHub\", category: \"Code Repositories\" },\n { id: \"gitlab\", Icon: GitFork, title: \"GitLab\", category: \"Code Repositories\" },\n { id: \"bitbucket\", Icon: FolderGit2, title: \"BitBucket\", category: \"Code Repositories\" },\n { id: \"azure-repos\", Icon: Cloud, title: \"Azure Repos\", category: \"Code Repositories\" },\n { id: \"confluence\", Icon: BookOpen, title: \"Confluence\", category: \"Documentation\" },\n { id: \"sharepoint\", Icon: Share2, title: \"SharePoint\", category: \"Documentation\" },\n { id: \"jira\", Icon: ClipboardList, title: \"Jira\", category: \"Work Management\" },\n { id: \"figma\", Icon: FigmaIcon, title: \"Figma\", category: \"Design\" },\n { id: \"slack\", Icon: MessageSquare, title: \"Slack\", category: \"Communication\" },\n { id: \"servicenow\", Icon: Headset, title: \"ServiceNow\", category: \"Service Management\" },\n { id: \"api-custom\", Icon: Plug, title: \"API/Custom\", category: \"Developer Source\" },\n { id: \"code-files\", Icon: Code, title: \"Code Files\", category: \"Developer Source\" },\n] as const;\n\nconst CATEGORIES = [\n \"Code Repositories\",\n \"Documentation\",\n \"Work Management\",\n \"Design\",\n \"Communication\",\n \"Service Management\",\n \"Developer Source\",\n] as const;\n\ninterface ExistingResource {\n id: string;\n name: string;\n typeId: string;\n project: string;\n uploadedBy: string;\n date: string;\n status: \"success\" | \"pending\" | \"failed\";\n}\n\nconst MOCK_PROJECTS = [\n \"Frontend App\",\n \"Backend API\",\n \"Infrastructure\",\n \"DevOps Pipeline\",\n \"Mobile App\",\n \"Data Platform\",\n \"Analytics\",\n \"Security Services\",\n];\n\nconst SOURCE_ICON_MAP: Record<string, React.ElementType> = Object.fromEntries(\n CONTEXT_SOURCES.map(({ id, Icon }) => [id, Icon]),\n);\n\nconst SOURCE_LABEL_MAP: Record<string, string> = Object.fromEntries(\n CONTEXT_SOURCES.map(({ id, title }) => [id, title]),\n);\n\nconst EXISTING_RESOURCES: ExistingResource[] = [\n {\n id: \"r1\",\n name: \"github-repov2.1\",\n typeId: \"github\",\n project: \"Engineering\",\n uploadedBy: \"Michael Smith\",\n date: \"10 Apr 2025\",\n status: \"success\",\n },\n {\n id: \"r2\",\n name: \"gitlab-repo-main\",\n typeId: \"gitlab\",\n project: \"DevOps\",\n uploadedBy: \"Sarah Johnson\",\n date: \"08 Apr 2025\",\n status: \"success\",\n },\n {\n id: \"r3\",\n name: \"confluence-docs\",\n typeId: \"confluence\",\n project: \"Documentation\",\n uploadedBy: \"Michael Smith\",\n date: \"01 Apr 2025\",\n status: \"pending\",\n },\n {\n id: \"r4\",\n name: \"jira-tasks\",\n typeId: \"jira\",\n project: \"Product\",\n uploadedBy: \"Sarah Johnson\",\n date: \"28 Mar 2025\",\n status: \"success\",\n },\n {\n id: \"r5\",\n name: \"figma-designs\",\n typeId: \"figma\",\n project: \"Design\",\n uploadedBy: \"Emily Davis\",\n date: \"25 Mar 2025\",\n status: \"success\",\n },\n {\n id: \"r6\",\n name: \"bitbucket-core\",\n typeId: \"bitbucket\",\n project: \"Backend\",\n uploadedBy: \"John Doe\",\n date: \"05 Apr 2025\",\n status: \"pending\",\n },\n {\n id: \"r7\",\n name: \"azure-frontend\",\n typeId: \"azure-repos\",\n project: \"Frontend\",\n uploadedBy: \"Emily Davis\",\n date: \"03 Apr 2025\",\n status: \"failed\",\n },\n {\n id: \"r8\",\n name: \"slack-channels\",\n typeId: \"slack\",\n project: \"Communication\",\n uploadedBy: \"John Doe\",\n date: \"22 Mar 2025\",\n status: \"pending\",\n },\n {\n id: \"r9\",\n name: \"sharepoint-wiki\",\n typeId: \"sharepoint\",\n project: \"Documentation\",\n uploadedBy: \"Emily Davis\",\n date: \"15 Mar 2025\",\n status: \"success\",\n },\n {\n id: \"r10\",\n name: \"servicenow-tickets\",\n typeId: \"servicenow\",\n project: \"IT Support\",\n uploadedBy: \"John Doe\",\n date: \"12 Mar 2025\",\n status: \"success\",\n },\n];\n\n/* ══════════════════════════════════════════════════════════\n Shared style helpers\n ══════════════════════════════════════════════════════════ */\nconst labelStyle: React.CSSProperties = {\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n};\n\nconst bodyStyle: React.CSSProperties = {\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n};\n\n/* ══════════════════════════════════════════════════════════\n Project multi-select\n ══════════════════════════════════════════════════════════ */\nfunction ProjectMultiSelect({\n selected,\n onToggle,\n}: {\n selected: string[];\n onToggle: (project: string) => void;\n}) {\n const [isOpen, setIsOpen] = useState(false);\n\n return (\n <div className=\"relative\">\n {/* Trigger */}\n <button\n type=\"button\"\n onClick={() => setIsOpen((v) => !v)}\n className=\"flex items-center justify-between w-full min-h-[40px] px-[14px] py-[9px] rounded-[12px] cursor-pointer transition-colors\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: \"1px solid var(--border)\",\n }}\n >\n <span\n style={{\n ...bodyStyle,\n color: selected.length > 0 ? \"var(--foreground)\" : \"var(--muted-foreground)\",\n }}\n >\n {selected.length === 0\n ? \"Select projects…\"\n : selected.length === 1\n ? selected[0]\n : `${selected.length} projects selected`}\n </span>\n <ChevronDown\n className=\"size-[16px] shrink-0 transition-transform\"\n style={{\n color: \"var(--muted-foreground)\",\n transform: isOpen ? \"rotate(180deg)\" : \"rotate(0deg)\",\n }}\n />\n </button>\n\n {/* Dropdown */}\n {isOpen && (\n <div\n className=\"absolute left-0 right-0 top-[calc(100%+4px)] z-10 rounded-[12px] overflow-hidden\"\n style={{\n backgroundColor: \"var(--card)\",\n border: \"1px solid var(--border)\",\n boxShadow: \"var(--elevation-sm)\",\n }}\n >\n {MOCK_PROJECTS.map((project, idx) => {\n const isActive = selected.includes(project);\n const isLast = idx === MOCK_PROJECTS.length - 1;\n return (\n <button\n key={project}\n type=\"button\"\n onClick={() => onToggle(project)}\n className=\"flex items-center gap-[10px] w-full px-[14px] py-[10px] cursor-pointer transition-colors text-left\"\n style={{\n backgroundColor: isActive ? \"var(--muted)\" : \"transparent\",\n borderBottom: isLast ? \"none\" : \"1px solid var(--border)\",\n }}\n onMouseEnter={(e) => {\n if (!isActive)\n (e.currentTarget as HTMLButtonElement).style.backgroundColor = \"var(--accent)\";\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLButtonElement).style.backgroundColor = isActive\n ? \"var(--muted)\"\n : \"transparent\";\n }}\n >\n <div\n className=\"shrink-0 flex items-center justify-center size-[16px] rounded-[4px] transition-all\"\n style={{\n backgroundColor: isActive ? \"var(--primary)\" : \"transparent\",\n border: `1.5px solid ${isActive ? \"var(--primary)\" : \"var(--border)\"}`,\n }}\n >\n {isActive && (\n <Check className=\"size-[10px]\" style={{ color: \"var(--primary-foreground)\" }} />\n )}\n </div>\n <span style={{ ...bodyStyle, color: \"var(--foreground)\" }}>{project}</span>\n </button>\n );\n })}\n </div>\n )}\n\n {/* Selected tags */}\n {selected.length > 0 && (\n <div className=\"flex flex-wrap gap-[6px] mt-[8px]\">\n {selected.map((project) => (\n <span\n key={project}\n className=\"flex items-center gap-[4px] px-[10px] py-[3px] rounded-full\"\n style={{\n backgroundColor: \"var(--muted)\",\n border: \"1px solid var(--border)\",\n }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-xs)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--foreground)\",\n }}\n >\n {project}\n </span>\n <button\n type=\"button\"\n onClick={() => onToggle(project)}\n className=\"flex items-center cursor-pointer\"\n aria-label={`Remove ${project}`}\n >\n <X className=\"size-[10px]\" style={{ color: \"var(--muted-foreground)\" }} />\n </button>\n </span>\n ))}\n </div>\n )}\n </div>\n );\n}\n\n/* ══════════════════════════════════════════════════════════\n Import resources list\n ══════════════════════════════════════════════════════════ */\nfunction ImportResourcesList({\n selected,\n onToggle,\n}: {\n selected: string[];\n onToggle: (name: string) => void;\n}) {\n const [query, setQuery] = useState(\"\");\n\n const filtered = EXISTING_RESOURCES.filter((r) => {\n if (!query.trim()) return true;\n const q = query.toLowerCase();\n return (\n r.name.toLowerCase().includes(q) ||\n (SOURCE_LABEL_MAP[r.typeId] ?? r.typeId).toLowerCase().includes(q) ||\n r.project.toLowerCase().includes(q)\n );\n });\n\n const statusColor: Record<string, string> = {\n success: \"var(--badge-success-bg)\",\n pending: \"var(--badge-warning-bg)\",\n failed: \"var(--badge-danger-bg)\",\n };\n\n return (\n <div className=\"flex flex-col gap-[10px]\">\n {/* Search */}\n <div\n className=\"relative flex items-center gap-[10px] px-[12px] py-[8px] rounded-[10px]\"\n style={{ backgroundColor: \"var(--input-background)\", border: \"1px solid var(--border)\" }}\n >\n <Search className=\"size-[14px] shrink-0\" style={{ color: \"var(--muted-foreground)\" }} />\n <input\n type=\"text\"\n placeholder=\"Search resources…\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n className=\"flex-1 bg-transparent border-none outline-none min-w-0\"\n style={{ ...bodyStyle, color: \"var(--foreground)\" }}\n />\n </div>\n\n {/* Resource list */}\n <div\n className=\"flex flex-col overflow-y-auto rounded-[12px]\"\n style={{\n maxHeight: 260,\n border: \"1px solid var(--border)\",\n backgroundColor: \"var(--input-background)\",\n }}\n >\n {filtered.length === 0 ? (\n <div className=\"flex items-center justify-center py-[24px]\">\n <span style={{ ...bodyStyle, color: \"var(--muted-foreground)\" }}>\n No resources found\n </span>\n </div>\n ) : (\n filtered.map((resource, idx) => {\n const Icon = SOURCE_ICON_MAP[resource.typeId] ?? Code;\n const isSelected = selected.includes(resource.name);\n const isLast = idx === filtered.length - 1;\n return (\n <button\n key={resource.id}\n onClick={() => onToggle(resource.name)}\n className=\"flex items-center gap-[12px] px-[14px] py-[10px] w-full cursor-pointer transition-colors text-left\"\n style={{\n backgroundColor: isSelected ? \"var(--muted)\" : \"transparent\",\n borderBottom: isLast ? \"none\" : \"1px solid var(--border)\",\n }}\n onMouseEnter={(e) => {\n if (!isSelected)\n (e.currentTarget as HTMLButtonElement).style.backgroundColor = \"var(--muted)\";\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLButtonElement).style.backgroundColor = isSelected\n ? \"var(--muted)\"\n : \"transparent\";\n }}\n >\n {/* Checkbox */}\n <div\n className=\"shrink-0 flex items-center justify-center size-[16px] rounded-[4px] transition-all\"\n style={{\n backgroundColor: isSelected ? \"var(--primary)\" : \"transparent\",\n border: `1.5px solid ${isSelected ? \"var(--primary)\" : \"var(--border)\"}`,\n }}\n >\n {isSelected && (\n <Check className=\"size-[10px]\" style={{ color: \"var(--primary-foreground)\" }} />\n )}\n </div>\n\n {/* Type icon */}\n <div\n className=\"shrink-0 flex items-center justify-center size-[28px] rounded-[6px]\"\n style={{ backgroundColor: \"var(--card)\" }}\n >\n <Icon className=\"size-[14px]\" style={{ color: \"var(--foreground)\" }} />\n </div>\n\n {/* Name + meta */}\n <div className=\"flex-1 min-w-0 flex flex-col gap-[1px]\">\n <span\n style={{\n ...bodyStyle,\n fontWeight: isSelected\n ? \"var(--font-weight-medium)\"\n : \"var(--font-weight-normal)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {resource.name}\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"11px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {SOURCE_LABEL_MAP[resource.typeId] ?? resource.typeId} · {resource.project}\n </span>\n </div>\n\n {/* Status dot */}\n <div\n className=\"shrink-0 size-[7px] rounded-full\"\n style={{ backgroundColor: statusColor[resource.status] }}\n />\n </button>\n );\n })\n )}\n </div>\n\n {/* Selected count */}\n {selected.length > 0 && (\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {selected.length} resource{selected.length !== 1 ? \"s\" : \"\"} selected\n </span>\n )}\n </div>\n );\n}\n\n/* ══════════════════════════════════════════════════════════\n Context source icon grid (replicates resources-page pattern)\n ══════════════════════════════════════════════════════════ */\nfunction ContextSourceGrid({\n selectedId,\n onSelect,\n}: {\n selectedId: string | null;\n onSelect: (id: string | null) => void;\n}) {\n return (\n <div className=\"flex flex-col gap-[16px]\">\n {CATEGORIES.map((category) => {\n const sources = CONTEXT_SOURCES.filter((s) => s.category === category);\n if (sources.length === 0) return null;\n return (\n <div key={category} className=\"flex flex-col gap-[8px]\">\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"11px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n letterSpacing: \"var(--tracking-caption)\",\n color: \"var(--muted-foreground)\",\n textTransform: \"uppercase\",\n }}\n >\n {category}\n </span>\n <div className=\"grid grid-cols-3 gap-[8px]\">\n {sources.map(({ id, Icon, title }) => {\n const isSelected = selectedId === id;\n return (\n <button\n key={id}\n onClick={() => onSelect(isSelected ? null : id)}\n className=\"relative flex flex-col items-center gap-[8px] p-[12px] rounded-[12px] cursor-pointer transition-all\"\n style={{\n backgroundColor: isSelected ? \"var(--muted)\" : \"var(--input-background)\",\n border: `1px solid ${isSelected ? \"var(--primary)\" : \"var(--border)\"}`,\n }}\n onMouseEnter={(e) => {\n if (!isSelected)\n (e.currentTarget as HTMLButtonElement).style.backgroundColor =\n \"var(--muted)\";\n }}\n onMouseLeave={(e) => {\n if (!isSelected)\n (e.currentTarget as HTMLButtonElement).style.backgroundColor =\n \"var(--input-background)\";\n }}\n >\n {isSelected && (\n <div\n className=\"absolute top-[6px] right-[6px] flex items-center justify-center size-[14px] rounded-full\"\n style={{ backgroundColor: \"var(--primary)\" }}\n >\n <Check\n className=\"size-[9px]\"\n style={{ color: \"var(--primary-foreground)\" }}\n />\n </div>\n )}\n <Icon className=\"size-[20px]\" style={{ color: \"var(--foreground)\" }} />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: isSelected\n ? \"var(--font-weight-medium)\"\n : \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--foreground)\",\n textAlign: \"center\",\n }}\n >\n {title}\n </span>\n </button>\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n\n/* ══════════════════════════════════════════════════════════\n Mode tab toggle\n ══════════════════════════════════════════════════════════ */\nfunction ModeTab({\n mode,\n current,\n onClick,\n icon,\n label,\n}: {\n mode: string;\n current: string;\n onClick: () => void;\n icon: React.ReactNode;\n label: string;\n}) {\n const isActive = mode === current;\n return (\n <button\n onClick={onClick}\n className=\"flex-1 flex items-center justify-center gap-[8px] px-[12px] py-[8px] rounded-[8px] transition-all cursor-pointer\"\n style={{\n backgroundColor: isActive ? \"var(--card)\" : \"transparent\",\n boxShadow: isActive ? \"0 1px 4px rgba(0,0,0,0.1)\" : \"none\",\n }}\n >\n <span style={{ color: isActive ? \"var(--foreground)\" : \"var(--muted-foreground)\" }}>\n {icon}\n </span>\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: isActive ? \"var(--font-weight-medium)\" : \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: isActive ? \"var(--foreground)\" : \"var(--muted-foreground)\",\n whiteSpace: \"nowrap\",\n }}\n >\n {label}\n </span>\n </button>\n );\n}\n\n/* ══════════════════════════════════════════════════════════\n Main Drawer\n ══════════════════════════════════════════════════════════ */\nexport function AddPortfolioDrawer({ isOpen, onClose, onSubmit }: AddPortfolioDrawerProps) {\n const [isAnimating, setIsAnimating] = useState(false);\n const [shouldRender, setShouldRender] = useState(false);\n\n // Form state\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [selectedProjects, setSelectedProjects] = useState<string[]>([]);\n const [resourceMode, setResourceMode] = useState<\"import\" | \"new\">(\"import\");\n const [importedResources, setImportedResources] = useState<string[]>([]);\n const [selectedSourceId, setSelectedSourceId] = useState<string | null>(null);\n\n // Animation\n useEffect(() => {\n if (isOpen) {\n setName(\"\");\n setDescription(\"\");\n setSelectedProjects([]);\n setResourceMode(\"import\");\n setImportedResources([]);\n setSelectedSourceId(null);\n setShouldRender(true);\n requestAnimationFrame(() => requestAnimationFrame(() => setIsAnimating(true)));\n } else {\n setIsAnimating(false);\n const t = setTimeout(() => setShouldRender(false), 300);\n return () => clearTimeout(t);\n }\n }, [isOpen]);\n\n // Escape to close\n useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && isOpen) onClose();\n };\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [isOpen, onClose]);\n\n const handleToggleProject = useCallback((project: string) => {\n setSelectedProjects((prev) =>\n prev.includes(project) ? prev.filter((p) => p !== project) : [...prev, project],\n );\n }, []);\n\n const handleToggleResource = useCallback((resourceName: string) => {\n setImportedResources((prev) =>\n prev.includes(resourceName)\n ? prev.filter((n) => n !== resourceName)\n : [...prev, resourceName],\n );\n }, []);\n\n const isValid = name.trim().length > 0;\n\n const handleSubmit = () => {\n if (!isValid) return;\n onSubmit({\n name: name.trim(),\n description: description.trim(),\n selectedProjects,\n resourceMode,\n importedResources,\n contextSourceId: resourceMode === \"new\" ? (selectedSourceId ?? undefined) : undefined,\n });\n onClose();\n };\n\n if (!shouldRender) return null;\n\n return createPortal(\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-end overflow-clip transition-all duration-300\"\n style={{\n backdropFilter: isAnimating ? \"blur(5px)\" : \"blur(0px)\",\n backgroundColor: isAnimating ? \"rgba(31, 40, 50, 0.4)\" : \"rgba(31, 40, 50, 0)\",\n }}\n onClick={(e) => {\n if (e.target === e.currentTarget) onClose();\n }}\n >\n <div\n className=\"h-full shrink-0 w-[480px] sm:w-[560px] md:w-[640px] flex flex-col drawer-panel rounded-tl-[16px] rounded-bl-[16px]\"\n style={{\n backgroundColor: \"var(--card)\",\n transform: isAnimating ? \"translateX(0)\" : \"translateX(100%)\",\n }}\n >\n {/* ── Header ── */}\n <div\n className=\"shrink-0 px-[24px] py-[16px]\"\n style={{ borderBottom: \"1px solid var(--border)\" }}\n >\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"flex flex-col gap-[2px]\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-xl)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Add Workspace\n </span>\n <span\n style={{\n ...bodyStyle,\n fontSize: \"12px\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n Configure your workspace and context ingestion source\n </span>\n </div>\n <button\n onClick={onClose}\n className=\"flex items-center justify-center size-[28px] rounded-[8px] transition-colors cursor-pointer\"\n style={{ color: \"var(--muted-foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n aria-label=\"Close drawer\"\n >\n <X className=\"size-[16px]\" />\n </button>\n </div>\n </div>\n\n {/* ── Content ── */}\n <div className=\"flex-1 min-h-0 overflow-y-auto px-[24px] py-[24px]\">\n <div className=\"flex flex-col gap-[24px]\">\n {/* Workspace Name */}\n <div className=\"flex flex-col gap-[6px]\">\n <label style={labelStyle}>Workspace Name *</label>\n <div\n className=\"relative min-h-[40px] rounded-[12px] w-full\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: \"1px solid var(--border)\",\n }}\n >\n <input\n type=\"text\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder=\"e.g. Stellar Solutions Platform\"\n className=\"flex-1 w-full bg-transparent border-none outline-none min-h-[40px] px-[16px] py-[9.5px] rounded-[12px]\"\n style={bodyStyle}\n />\n </div>\n </div>\n\n {/* Description */}\n <div className=\"flex flex-col gap-[6px]\">\n <label style={labelStyle}>Description</label>\n <div\n className=\"relative rounded-[12px] w-full\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: \"1px solid var(--border)\",\n }}\n >\n <textarea\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n placeholder=\"Brief description of this workspace…\"\n rows={3}\n className=\"w-full bg-transparent border-none outline-none px-[16px] py-[10px] rounded-[12px] resize-none\"\n style={{\n ...bodyStyle,\n color: description ? \"var(--foreground)\" : \"var(--muted-foreground)\",\n minHeight: 76,\n }}\n />\n </div>\n </div>\n\n {/* Projects */}\n <div className=\"flex flex-col gap-[10px]\">\n <div className=\"flex flex-col gap-[2px]\">\n <span style={labelStyle}>Projects</span>\n <span\n style={{\n ...bodyStyle,\n fontSize: \"12px\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n Select the projects to associate with this workspace\n </span>\n </div>\n <ProjectMultiSelect selected={selectedProjects} onToggle={handleToggleProject} />\n </div>\n\n {/* Divider */}\n <div className=\"h-px w-full\" style={{ backgroundColor: \"var(--border)\" }} />\n\n {/* Resources */}\n <div className=\"flex flex-col gap-[14px]\">\n <div className=\"flex flex-col gap-[2px]\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Resources\n </span>\n <span\n style={{\n ...bodyStyle,\n fontSize: \"12px\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n Import existing resources or add new ones to this workspace\n </span>\n </div>\n\n {/* Resource mode tabs */}\n <div\n className=\"flex gap-[2px] p-[3px] rounded-[10px]\"\n style={{ backgroundColor: \"var(--muted)\" }}\n >\n <ModeTab\n mode=\"import\"\n current={resourceMode}\n onClick={() => setResourceMode(\"import\")}\n icon={<Database className=\"size-[14px]\" />}\n label=\"Import Resources\"\n />\n <ModeTab\n mode=\"new\"\n current={resourceMode}\n onClick={() => setResourceMode(\"new\")}\n icon={<Plus className=\"size-[14px]\" />}\n label=\"Add New Resources\"\n />\n </div>\n\n {/* Import existing resources */}\n {resourceMode === \"import\" && (\n <ImportResourcesList selected={importedResources} onToggle={handleToggleResource} />\n )}\n\n {/* Add new resources */}\n {resourceMode === \"new\" && (\n <ContextSourceGrid selectedId={selectedSourceId} onSelect={setSelectedSourceId} />\n )}\n </div>\n </div>\n </div>\n\n {/* ── Footer ── */}\n <div\n className=\"shrink-0 px-[24px] py-[16px]\"\n style={{ borderTop: \"1px solid var(--border)\" }}\n >\n <div className=\"flex gap-[8px] items-center justify-end w-full\">\n {/* Cancel */}\n <div\n className=\"relative flex-1 rounded-[9999px]\"\n style={{ border: \"1px solid var(--ring)\" }}\n >\n <button\n onClick={onClose}\n className=\"flex items-center justify-center w-full px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Cancel\n </span>\n </button>\n </div>\n\n {/* Submit */}\n <button\n onClick={handleSubmit}\n disabled={!isValid}\n className=\"flex-1 flex items-center justify-center gap-[8px] px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-opacity\"\n style={{ backgroundColor: \"var(--primary)\", opacity: isValid ? 1 : 0.5 }}\n onMouseEnter={(e) => {\n if (isValid) e.currentTarget.style.opacity = \"0.9\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity = isValid ? \"1\" : \"0.5\";\n }}\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--primary-foreground)\",\n }}\n >\n Submit\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>,\n document.body,\n );\n}\n","import { AlertTriangle } from \"lucide-react\";\nimport { createPortal } from \"react-dom\";\n\ninterface AlertDialogProps {\n isOpen: boolean;\n onCancel: () => void;\n onConfirm: () => void;\n title?: string;\n description?: string;\n}\n\nexport function AlertDialog({\n isOpen,\n onCancel,\n onConfirm,\n title = \"Delete this?\",\n description = \"Are you sure you want to delete this? This action cannot be undone.\",\n}: AlertDialogProps) {\n if (!isOpen) return null;\n\n const modalContent = (\n <div\n className=\"fixed inset-0 z-[9999] flex items-center justify-center p-4 sm:p-6 backdrop-blur-sm\"\n style={{ backgroundColor: \"rgba(31, 40, 50, 0.6)\" }}\n onClick={onCancel}\n >\n {/* Alert Dialog */}\n <div\n className=\"flex flex-col gap-[16px] items-center p-[20px] sm:p-[24px] rounded-[16px] w-full max-w-[320px] sm:max-w-[360px] relative shadow-2xl\"\n style={{ backgroundColor: \"var(--card)\" }}\n onClick={(e) => e.stopPropagation()}\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[16px]\"\n style={{\n borderColor: \"var(--border)\",\n boxShadow:\n \"0px 10px 15px 0px rgba(31, 40, 50, 0.1), 0px 4px 6px 0px rgba(31, 40, 50, 0.1)\",\n }}\n />\n\n {/* Icon */}\n <div className=\"relative shrink-0\" style={{ color: \"var(--destructive)\" }}>\n <AlertTriangle size={24} />\n </div>\n\n {/* Title */}\n <p\n className=\"min-w-full relative shrink-0 w-[min-content] whitespace-pre-wrap text-center\"\n style={{\n fontFamily: \"var(--font-heading)\",\n fontWeight: \"var(--font-weight-normal)\",\n fontSize: \"20px\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n {title}\n </p>\n\n {/* Description */}\n <p\n className=\"min-w-full not-italic relative shrink-0 w-[min-content] whitespace-pre-wrap text-center\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontWeight: \"var(--font-weight-normal)\",\n fontSize: \"14px\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {description}\n </p>\n\n {/* Dialog Footer */}\n <div className=\"content-stretch flex flex-col items-start relative shrink-0 w-full\">\n <div className=\"content-stretch flex gap-[8px] items-start justify-end relative rounded-[10px] shrink-0 w-full\">\n {/* Cancel Button */}\n <button\n onClick={onCancel}\n className=\"flex-[1_0_0] min-h-[36px] min-w-px relative rounded-[9999px]\"\n style={{ backgroundColor: \"var(--secondary)\" }}\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute border border-solid inset-0 pointer-events-none rounded-[9999px]\"\n style={{\n borderColor: \"var(--border)\",\n boxShadow: \"0px 1px 2px 0px rgba(31, 40, 50, 0)\",\n }}\n />\n <div className=\"flex flex-row items-center justify-center min-h-[inherit] size-full\">\n <div className=\"content-stretch flex gap-[8px] items-center justify-center min-h-[inherit] px-[16px] py-[8px] relative w-full\">\n <div\n className=\"flex flex-col justify-center leading-[0] not-italic relative shrink-0 text-center whitespace-nowrap\"\n style={{\n fontFamily: \"var(--font-heading)\",\n fontWeight: \"500\",\n fontSize: \"14px\",\n color: \"var(--secondary-foreground)\",\n }}\n >\n <p className=\"leading-[20px]\">Cancel</p>\n </div>\n </div>\n </div>\n </button>\n\n {/* Delete Button */}\n <button\n onClick={onConfirm}\n className=\"flex-[1_0_0] min-h-[36px] min-w-px relative rounded-[9999px]\"\n style={{ backgroundColor: \"rgba(220, 38, 38, 0.2)\" }}\n >\n <div className=\"flex flex-row items-center justify-center min-h-[inherit] size-full\">\n <div className=\"content-stretch flex gap-[8px] items-center justify-center min-h-[inherit] px-[16px] py-[8px] relative w-full\">\n <div\n className=\"flex flex-col justify-center leading-[0] not-italic relative shrink-0 text-center whitespace-nowrap\"\n style={{\n fontFamily: \"var(--font-heading)\",\n fontWeight: \"500\",\n fontSize: \"14px\",\n color: \"var(--destructive)\",\n }}\n >\n <p className=\"leading-[20px]\">Delete</p>\n </div>\n </div>\n </div>\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n\n return createPortal(modalContent, document.body);\n}\n","export default {\n p200e1200:\n \"M4.66667 9.83333V0.5C4.66667 0.223858 4.89052 0 5.16667 0C5.44281 0 5.66667 0.223858 5.66667 0.5V9.83333C5.66667 10.1095 5.44281 10.3333 5.16667 10.3333C4.89052 10.3333 4.66667 10.1095 4.66667 9.83333Z\",\n p289a6d00:\n \"M9.83333 4.66667C10.1095 4.66667 10.3333 4.89052 10.3333 5.16667C10.3333 5.44281 10.1095 5.66667 9.83333 5.66667H0.5C0.223858 5.66667 0 5.44281 0 5.16667C0 4.89052 0.223858 4.66667 0.5 4.66667H9.83333Z\",\n p32d8e00:\n \"M17.3336 27.6667V22.3333C17.3336 22.2965 17.3347 22.2593 17.3388 22.2227C17.4953 20.8134 17.0912 19.399 16.2138 18.2852C15.9772 17.9844 15.9335 17.5748 16.1005 17.2305C16.2678 16.8859 16.6172 16.6667 17.0003 16.6667C20.6263 16.6665 24.0003 14.2846 24.0003 10.3333C24.0003 10.3121 24.0002 10.2908 24.0016 10.2695C24.0936 8.83215 23.6918 7.42045 22.8531 6.2487C22.6838 6.01194 22.6267 5.71254 22.6956 5.42969C22.9502 4.38376 23.0099 3.30341 22.8779 2.24089C22.3071 2.47179 21.4367 2.92241 20.2672 3.79948C20.0425 3.96799 19.7567 4.03526 19.4807 3.98307C16.0838 3.33971 12.5834 3.33975 9.18647 3.98307C8.91044 4.03535 8.62477 3.96804 8.40002 3.79948C7.22096 2.91521 6.34556 2.46491 5.77502 2.23568C5.63222 3.29464 5.6957 4.37121 5.96772 5.41406C6.04269 5.70143 5.98568 6.00725 5.81278 6.2487C4.9767 7.41519 4.57072 8.83611 4.66434 10.2682C4.66575 10.2899 4.66694 10.3116 4.66694 10.3333C4.66694 14.2847 8.04077 16.6667 11.6669 16.6667C12.0507 16.6668 12.4012 16.8861 12.568 17.2318C12.7347 17.5775 12.6883 17.9887 12.4495 18.2891C12.0102 18.8409 11.6849 19.4695 11.4951 20.1393C11.3044 20.8125 11.2481 21.522 11.3271 22.2214C11.3313 22.2585 11.3336 22.2959 11.3336 22.3333V27.6667C11.3336 28.2189 10.8858 28.6665 10.3336 28.6667C9.78132 28.6667 9.33361 28.2189 9.33361 27.6667V22.3737C9.2376 21.4429 9.31457 20.4973 9.57059 19.5937C9.67527 19.2243 9.81059 18.8656 9.97163 18.5195C6.19379 17.8668 2.70058 15.0472 2.66824 10.3984L2.65392 10.0443C2.61823 8.42692 3.06202 6.83626 3.92736 5.47135C3.59371 3.91021 3.62842 2.29762 4.03283 0.747396L4.08882 0.588542C4.24824 0.235086 4.60232 1.63016e-09 5.00028 1.63016e-09V1C5.00028 0 4.99953 -8.72571e-07 5.00028 1.63016e-09H5.02762C5.03796 0.000244497 5.04989 0.000698265 5.06278 0.00130208C5.08855 0.00251526 5.11939 0.00446299 5.15522 0.0078125C5.22768 0.0146057 5.32102 0.0270318 5.43387 0.0481771C5.66004 0.0905833 5.96594 0.169607 6.35054 0.313802C7.05329 0.577336 8.01747 1.06016 9.24377 1.9401C12.608 1.35432 16.0579 1.35441 19.4222 1.9401C20.6486 1.06001 21.6125 0.577386 22.3154 0.313802C22.7 0.169555 23.0058 0.0906131 23.232 0.0481771C23.345 0.0269894 23.4382 0.0146161 23.5107 0.0078125C23.547 0.00441305 23.5784 0.00252072 23.6044 0.00130208C23.6173 0.000699222 23.6293 0.000242495 23.6396 1.63016e-09H23.6656C23.6662 0.00181394 23.6668 0.0335115 23.6669 0.583333L23.6656 1.63016e-09C24.1266 0.000125732 24.5291 0.315244 24.6383 0.763021C25.0138 2.30515 25.0423 3.90816 24.732 5.46094C25.6557 6.91327 26.0973 8.61007 26.0003 10.3333L25.986 10.8307C25.747 15.2255 22.349 17.8912 18.6865 18.5208C19.2383 19.7138 19.4674 21.0409 19.3336 22.3685V27.6667C19.3336 28.2189 18.8858 28.6665 18.3336 28.6667C17.7813 28.6667 17.3336 28.2189 17.3336 27.6667Z\",\n p3bdeeb80:\n \"M1 18.6667C2.03205 18.6667 2.80495 19.1944 3.39193 19.7018C3.68458 19.9548 3.97532 20.2426 4.23568 20.4948C4.50715 20.7578 4.76368 21.0015 5.03646 21.2201C5.57107 21.6483 6.13338 21.9572 6.84375 22.0508C7.5618 22.1454 8.54255 22.0338 9.92839 21.4193C10.4332 21.1956 11.0236 21.4236 11.2474 21.9284C11.471 22.4332 11.243 23.0236 10.7383 23.2474C9.11763 23.966 7.76098 24.1879 6.58203 24.0326C5.39557 23.8761 4.50008 23.3516 3.78646 22.7799C3.4353 22.4986 3.12052 22.2004 2.84375 21.9323C2.55577 21.6533 2.32082 21.4201 2.08333 21.2148C1.61002 20.8057 1.30123 20.6667 1 20.6667C0.447715 20.6667 0 20.219 0 19.6667C0 19.1144 0.447715 18.6667 1 18.6667Z\",\n};\n","import svgPaths from \"./svg-99xdbdnkzc\";\n\ninterface ResourceTileProps {\n title: string;\n subtitle: string;\n onClick?: () => void;\n}\n\nexport function ResourceTile({ title, subtitle, onClick }: ResourceTileProps) {\n const isInteractive = onClick !== undefined;\n\n return (\n <div\n className={`group rounded-xl lg:rounded-[16px] p-4 sm:p-5 lg:p-[20px] flex flex-col gap-3 lg:gap-[14px] transition-all touch-manipulation${\n isInteractive ? \" cursor-pointer\" : \"\"\n }`}\n style={{ backgroundColor: \"var(--tile-bg)\" }}\n onClick={onClick}\n onKeyDown={\n isInteractive\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n if (e.key === \" \") e.preventDefault();\n onClick?.();\n }\n }\n : undefined\n }\n role={isInteractive ? \"button\" : undefined}\n tabIndex={isInteractive ? 0 : undefined}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = \"var(--tile-hover-bg)\";\n e.currentTarget.style.transform = \"translateY(-3px)\";\n e.currentTarget.style.boxShadow = \"var(--elevation-sm)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = \"var(--tile-bg)\";\n e.currentTarget.style.transform = \"translateY(0)\";\n e.currentTarget.style.boxShadow = \"none\";\n }}\n >\n <div className=\"flex items-start justify-between w-full\">\n <div className=\"w-8 h-8 lg:w-[32px] lg:h-[32px] rounded-2xl lg:rounded-[24px] overflow-hidden flex items-center justify-center shrink-0\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" className=\"w-full h-full\">\n <g transform=\"translate(2.67, 1.67)\">\n <path d={svgPaths.p32d8e00} fill=\"var(--foreground)\" />\n <path d={svgPaths.p3bdeeb80} fill=\"var(--foreground)\" />\n </g>\n </svg>\n </div>\n\n <button\n className=\"rounded-full w-9 h-9 lg:w-[36px] lg:h-[36px] flex items-center justify-center shadow-sm transition-colors shrink-0\"\n style={{ backgroundColor: \"var(--tile-button-bg)\" }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = \"var(--tile-button-hover-bg)\";\n e.currentTarget.querySelectorAll(\"path\").forEach((path) => {\n path.style.fill = \"var(--tile-button-hover-text)\";\n });\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = \"var(--tile-button-bg)\";\n e.currentTarget.querySelectorAll(\"path\").forEach((path) => {\n path.style.fill = \"var(--foreground)\";\n });\n }}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 10.3333 10.3333\"\n fill=\"none\"\n className=\"w-4 h-4 lg:w-[16px] lg:h-[16px]\"\n >\n <path\n d={svgPaths.p289a6d00}\n style={{ fill: \"var(--foreground)\" }}\n className=\"transition-colors\"\n />\n <path\n d={svgPaths.p200e1200}\n style={{ fill: \"var(--foreground)\" }}\n className=\"transition-colors\"\n />\n </svg>\n </button>\n </div>\n\n <div className=\"flex flex-col gap-1 lg:gap-[8px]\">\n <h3\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"clamp(20px, 4vw, var(--text-2xl))\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"1.2\",\n color: \"var(--foreground)\",\n }}\n >\n {title}\n </h3>\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"1.5\",\n color: \"var(--card-foreground)\",\n opacity: \"0.7\",\n }}\n >\n {subtitle}\n </p>\n </div>\n </div>\n );\n}\n","import { ChevronUp } from \"lucide-react\";\nimport { ResourceTile } from \"../ResourceTile\";\n\ninterface CategorySectionProps {\n id: string;\n title: string;\n isOpen: boolean;\n onToggle: () => void;\n items: Array<{\n title: string;\n subtitle: string;\n }>;\n}\n\nexport function CategorySection({ id, title, isOpen, onToggle, items }: CategorySectionProps) {\n const contentId = `${id}-content`;\n\n return (\n <div\n className=\"backdrop-blur-[45px] rounded-xl lg:rounded-[16px] p-4 sm:p-5 lg:p-[20px]\"\n style={{ backgroundColor: \"var(--glass-light)\" }}\n >\n <div className=\"flex flex-col gap-4 sm:gap-5 lg:gap-[20px]\">\n <button\n type=\"button\"\n onClick={onToggle}\n aria-expanded={isOpen}\n aria-controls={contentId}\n className=\"flex items-center justify-between w-full group touch-manipulation\"\n >\n <div className=\"flex items-center gap-2 lg:gap-[8px]\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" className=\"shrink-0\">\n <path\n d=\"M7.23372 0.00260417C7.36902 0.0136346 7.49948 0.0578751 7.61393 0.130859L7.66992 0.169271L7.72201 0.212891C7.82297 0.303374 7.90022 0.417111 7.94727 0.544271L7.96875 0.608724L7.97135 0.61849L9.02539 4.70833L9.0599 4.81445C9.10166 4.91716 9.16391 5.01092 9.24284 5.08984C9.34808 5.19505 9.47962 5.27009 9.6237 5.30729L13.7135 6.36133L13.722 6.36328C13.8758 6.40571 14.0137 6.49147 14.1198 6.60938L14.1634 6.66211L14.2025 6.7181C14.2878 6.85166 14.334 7.00722 14.334 7.16667C14.334 7.34907 14.2739 7.52676 14.1634 7.67188C14.0529 7.81692 13.8978 7.92155 13.722 7.97005L13.7135 7.97266L9.6237 9.02604C9.47954 9.06325 9.34811 9.13887 9.24284 9.24414C9.1376 9.3494 9.06259 9.48088 9.02539 9.625L7.9707 13.7148C7.96988 13.718 7.96898 13.7214 7.9681 13.7246C7.91912 13.8996 7.81401 14.0542 7.66927 14.1641C7.52439 14.274 7.34722 14.334 7.16536 14.334C6.9835 14.334 6.80635 14.274 6.66146 14.1641C6.51669 14.0542 6.41162 13.8997 6.36263 13.7246C6.36174 13.7214 6.36086 13.7181 6.36003 13.7148L5.30599 9.625C5.26879 9.48089 5.19376 9.3494 5.08854 9.24414C4.98329 9.13889 4.85181 9.06326 4.70768 9.02604L0.617188 7.97135C0.613396 7.97037 0.609236 7.96982 0.605469 7.96875C0.431153 7.91922 0.277895 7.81384 0.16862 7.66927C0.0592919 7.52459 0 7.34801 0 7.16667C3.60642e-05 6.98543 0.0593814 6.80933 0.16862 6.66471L0.211589 6.61198C0.31652 6.49439 0.452992 6.40858 0.605469 6.36523L0.617188 6.36198L4.70768 5.30664C4.85175 5.26946 4.98329 5.19437 5.08854 5.08919C5.19381 4.98399 5.26872 4.85242 5.30599 4.70833L6.36068 0.61849C6.36152 0.615229 6.36237 0.611967 6.36328 0.608724C6.41228 0.433624 6.51726 0.279179 6.66211 0.169271L6.7181 0.130859C6.85154 0.0457758 7.00682 0 7.16602 0L7.23372 0.00260417ZM6.27474 4.95833L6.27409 4.95898C6.1921 5.27578 6.02699 5.56487 5.79557 5.79622C5.56392 6.02771 5.27415 6.19298 4.95703 6.27474L1.50065 7.16602L4.95703 8.05794C5.27426 8.13978 5.56391 8.30545 5.79557 8.53711C6.02714 8.76871 6.1929 9.05789 6.27474 9.375L7.16536 12.8314L8.05664 9.375C8.13849 9.05787 8.30423 8.76871 8.53581 8.53711C8.76747 8.30545 9.05712 8.13978 9.37435 8.05794L12.832 7.16667L9.37435 6.27539C9.05716 6.19356 8.76745 6.02848 8.53581 5.79688C8.33312 5.59419 8.18079 5.34724 8.09115 5.07617L8.05664 4.95833L7.16536 1.50195L6.27474 4.95833Z\"\n fill=\"currentColor\"\n />\n </svg>\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"clamp(14px, 3.5vw, var(--text-base))\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"1.5\",\n color: \"var(--foreground)\",\n }}\n >\n {title}\n </span>\n </div>\n <ChevronUp\n className={`w-4 h-4 text-foreground transition-transform duration-200 shrink-0 ${\n isOpen ? \"\" : \"rotate-180\"\n }`}\n />\n </button>\n\n {isOpen && (\n <div\n id={contentId}\n className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3 sm:gap-4 lg:gap-[20px]\"\n >\n {items.map((item, index) => (\n <ResourceTile key={index} title={item.title} subtitle={item.subtitle} />\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n","import {\n type CSSProperties,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n useState,\n} from \"react\";\n\ntype IconButtonVariant = \"default\" | \"ghost\" | \"danger\";\n\ntype IconButtonMouseHandler = (e: MouseEvent<HTMLButtonElement | HTMLDivElement>) => void;\n\ninterface IconButtonProps {\n children: ReactNode;\n onClick?: IconButtonMouseHandler;\n variant?: IconButtonVariant;\n className?: string;\n as?: \"button\" | \"div\";\n style?: CSSProperties;\n onMouseEnter?: IconButtonMouseHandler;\n onMouseLeave?: IconButtonMouseHandler;\n}\n\nexport function IconButton({\n children,\n onClick,\n variant = \"default\",\n className = \"\",\n as = \"button\",\n style,\n onMouseEnter,\n onMouseLeave,\n}: IconButtonProps) {\n const [isHovered, setIsHovered] = useState(false);\n\n const getStyles = (): React.CSSProperties => {\n switch (variant) {\n case \"ghost\":\n return {\n backgroundColor: isHovered ? \"var(--glass-medium)\" : \"transparent\",\n };\n case \"danger\":\n return {\n backgroundColor: isHovered ? \"rgba(220, 38, 38, 0.2)\" : \"transparent\",\n };\n case \"default\":\n default:\n return {\n backgroundColor: isHovered ? \"var(--tile-button-bg)\" : \"transparent\",\n };\n }\n };\n\n const getIconColor = (): string => {\n switch (variant) {\n case \"ghost\":\n return \"var(--foreground)\";\n case \"danger\":\n return \"var(--destructive)\";\n case \"default\":\n default:\n return \"var(--foreground)\";\n }\n };\n\n const Tag = as;\n\n const handleClick: IconButtonMouseHandler = (e) => {\n onClick?.(e);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement | HTMLDivElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n if (e.key === \" \") e.preventDefault();\n onClick?.(e as unknown as MouseEvent<HTMLButtonElement | HTMLDivElement>);\n }\n };\n\n return (\n <Tag\n onClick={handleClick}\n onKeyDown={as === \"div\" ? handleKeyDown : undefined}\n onMouseEnter={(e: MouseEvent<HTMLButtonElement | HTMLDivElement>) => {\n setIsHovered(true);\n onMouseEnter?.(e);\n }}\n onMouseLeave={(e: MouseEvent<HTMLButtonElement | HTMLDivElement>) => {\n setIsHovered(false);\n onMouseLeave?.(e);\n }}\n className={`flex items-center justify-center min-h-[32px] min-w-[32px] p-[8px] shrink-0 cursor-pointer transition-colors duration-200 ${\n variant === \"ghost\" ? \"rounded-[24px]\" : \"rounded-[9999px]\"\n } ${className}`}\n style={{ ...getStyles(), ...style }}\n role={as === \"div\" ? \"button\" : undefined}\n tabIndex={as === \"div\" ? 0 : undefined}\n >\n <div\n className=\"overflow-clip relative shrink-0 size-[16px] transition-colors duration-200\"\n style={{ color: getIconColor() }}\n >\n {children}\n </div>\n </Tag>\n );\n}\n","import { AlertCircle, CheckCircle, ChevronDown, Plus, Search, Trash2, X } from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { IconButton } from \"../IconButton\";\n\n/* ─── Types ──────────────────────────────────────────────── */\ninterface InviteUsersDrawerProps {\n isOpen: boolean;\n onClose: () => void;\n onInvite?: (newUsers: { name: string; email: string; platforms: string[] }[]) => void;\n}\n\ninterface EmailEntry {\n id: string;\n email: string;\n displayName: string;\n status: \"valid\" | \"existing\";\n existingPlatforms?: string[];\n}\n\ninterface AssignmentRow {\n id: string;\n projectId: string;\n rolesByPlatform: Record<string, string>;\n}\n\n/* ─── Mock Data ──────────────────────────────────────────── */\nconst AVAILABLE_PLATFORMS = [\"Bodhi\", \"Slingshot\", \"Sustain\"];\n\nconst EXISTING_PLATFORM_USERS: Record<string, { name: string; platforms: string[] }> = {\n \"amit.sharma@company.com\": { name: \"Amit Sharma\", platforms: [\"Bodhi\"] },\n \"john.mitchell@company.com\": { name: \"John Mitchell\", platforms: [\"Slingshot\", \"Sustain\"] },\n \"sarah.chen@company.com\": { name: \"Sarah Chen\", platforms: [\"Bodhi\", \"Slingshot\"] },\n \"david.kim@company.com\": { name: \"David Kim\", platforms: [\"Sustain\"] },\n \"james.wilson@company.com\": {\n name: \"James Wilson\",\n platforms: [\"Bodhi\", \"Slingshot\", \"Sustain\"],\n },\n};\n\nconst MOCK_PROJECTS = [\n { id: \"proj-1\", name: \"Stellar Solutions\" },\n { id: \"proj-2\", name: \"Quantum Analytics\" },\n { id: \"proj-3\", name: \"Nova Platform\" },\n { id: \"proj-4\", name: \"Apex Dashboard\" },\n { id: \"proj-5\", name: \"Meridian Core\" },\n { id: \"proj-6\", name: \"Phoenix Rebuild\" },\n { id: \"proj-7\", name: \"Atlas Infrastructure\" },\n { id: \"proj-8\", name: \"Horizon Mobile\" },\n];\n\nconst PLATFORM_ROLES: Record<string, string[]> = {\n Bodhi: [\"Admin\", \"Editor\", \"Viewer\", \"Contributor\"],\n Slingshot: [\"Project Manager\", \"Developer\", \"Analyst\", \"Reviewer\"],\n Sustain: [\"Operator\", \"Auditor\", \"Reporter\", \"Coordinator\"],\n ECS: [\"Admin\", \"Manager\", \"Operator\", \"Viewer\"],\n};\n\n/* Always-present platform in assignments (not in dropdown) */\nconst ALWAYS_PRESENT_PLATFORMS = [\"ECS\"];\n\n/* ─── Shared styles ──────────────────────────────────────── */\nconst labelStyle: React.CSSProperties = {\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n};\n\nconst bodyStyle: React.CSSProperties = {\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n};\n\n/* ─── Helpers ────────────────────────────────────────────── */\nfunction emailToDisplayName(email: string): string {\n const local = email.split(\"@\")[0];\n return local\n .split(/[._-]/)\n .map((w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase())\n .join(\" \");\n}\n\nfunction isValidEmail(email: string): boolean {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n}\n\n/* ─── Checkbox SVG ───────────────────────────────────────── */\nfunction CheckboxIcon({ checked }: { checked: boolean }) {\n return (\n <div className=\"flex items-center shrink-0\">\n <div className=\"relative shrink-0 size-[16px]\">\n <svg className=\"block size-full\" fill=\"none\" viewBox=\"0 0 16 16\">\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width=\"15\"\n height=\"15\"\n rx=\"3.5\"\n fill={checked ? \"var(--primary)\" : \"var(--input-background)\"}\n stroke={checked ? \"var(--primary)\" : \"var(--border)\"}\n />\n {checked && (\n <path\n d=\"M12 5L6.5 10.5L4 8\"\n stroke=\"var(--primary-foreground)\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n </svg>\n </div>\n </div>\n );\n}\n\n/* ─── Portaled Dropdown Menu ─────────────────────────────── */\nfunction PortaledDropdown({\n anchorRef,\n open,\n children,\n minWidth,\n}: {\n anchorRef: React.RefObject<HTMLElement | null>;\n open: boolean;\n children: React.ReactNode;\n minWidth?: number;\n}) {\n const [pos, setPos] = useState({ top: 0, left: 0, width: 0 });\n\n useEffect(() => {\n if (open && anchorRef.current) {\n const rect = anchorRef.current.getBoundingClientRect();\n setPos({\n top: rect.bottom + 4,\n left: rect.left,\n width: Math.max(rect.width, minWidth || 0),\n });\n }\n }, [open, anchorRef, minWidth]);\n\n if (!open) return null;\n\n return createPortal(\n <div\n style={{\n position: \"fixed\",\n top: pos.top,\n left: pos.left,\n width: pos.width,\n zIndex: 99999,\n }}\n >\n {children}\n </div>,\n document.body,\n );\n}\n\n/* ─── Searchable Single-Select Dropdown (portaled) ───────── */\nfunction SearchableDropdown({\n value,\n options,\n placeholder,\n onChange,\n}: {\n value: string;\n options: { id: string; name: string }[];\n placeholder: string;\n onChange: (id: string) => void;\n}) {\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState(\"\");\n const btnRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n const target = e.target as Node;\n if (\n btnRef.current &&\n !btnRef.current.contains(target) &&\n menuRef.current &&\n !menuRef.current.contains(target)\n ) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open]);\n\n const filtered = options.filter((o) => o.name.toLowerCase().includes(search.toLowerCase()));\n const selectedLabel = options.find((o) => o.id === value)?.name || \"\";\n\n return (\n <>\n <button\n ref={btnRef}\n onClick={() => {\n setOpen((p) => !p);\n setSearch(\"\");\n setTimeout(() => inputRef.current?.focus(), 50);\n }}\n className=\"flex items-center justify-between w-full min-h-[36px] px-[10px] py-[6px] rounded-[var(--radius)] cursor-pointer transition-colors\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: `1px solid ${open ? \"var(--primary)\" : \"var(--border)\"}`,\n }}\n >\n <span\n className=\"truncate\"\n style={{\n ...bodyStyle,\n fontSize: \"13px\",\n color: value ? \"var(--foreground)\" : \"var(--muted-foreground)\",\n }}\n >\n {selectedLabel || placeholder}\n </span>\n <ChevronDown\n className=\"size-[14px] shrink-0 transition-transform\"\n style={{\n color: \"var(--muted-foreground)\",\n transform: open ? \"rotate(180deg)\" : \"rotate(0deg)\",\n }}\n />\n </button>\n\n <PortaledDropdown anchorRef={btnRef} open={open} minWidth={200}>\n <div\n ref={menuRef}\n className=\"rounded-[var(--radius)] overflow-hidden flex flex-col\"\n style={{\n backgroundColor: \"var(--card)\",\n border: \"1px solid var(--border)\",\n boxShadow: \"0px 4px 16px rgba(0,0,0,0.12)\",\n maxHeight: \"220px\",\n }}\n >\n <div\n className=\"flex items-center gap-[8px] px-[10px] py-[8px] shrink-0\"\n style={{\n borderBottomWidth: \"1px\",\n borderBottomStyle: \"solid\",\n borderBottomColor: \"var(--border)\",\n }}\n >\n <Search className=\"size-[14px] shrink-0\" style={{ color: \"var(--muted-foreground)\" }} />\n <input\n ref={inputRef}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search...\"\n className=\"flex-1 outline-none bg-transparent min-w-0\"\n style={{ ...bodyStyle, fontSize: \"13px\" }}\n />\n </div>\n <div className=\"overflow-y-auto flex-1\">\n {filtered.length === 0 ? (\n <div className=\"px-[10px] py-[8px]\">\n <span style={{ ...bodyStyle, fontSize: \"13px\", color: \"var(--muted-foreground)\" }}>\n No results found\n </span>\n </div>\n ) : (\n filtered.map((opt) => (\n <button\n key={opt.id}\n onClick={() => {\n onChange(opt.id);\n setOpen(false);\n }}\n className=\"flex items-center w-full px-[10px] py-[8px] cursor-pointer transition-colors text-left\"\n style={{\n backgroundColor: opt.id === value ? \"var(--muted)\" : \"transparent\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor =\n opt.id === value ? \"var(--muted)\" : \"transparent\")\n }\n >\n <span style={{ ...bodyStyle, fontSize: \"13px\" }}>{opt.name}</span>\n </button>\n ))\n )}\n </div>\n </div>\n </PortaledDropdown>\n </>\n );\n}\n\n/* ─── Simple Single-Select Dropdown (portaled) ───────────── */\nfunction SimpleDropdown({\n value,\n options,\n placeholder,\n onChange,\n}: {\n value: string;\n options: string[];\n placeholder: string;\n onChange: (val: string) => void;\n}) {\n const [open, setOpen] = useState(false);\n const btnRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n const target = e.target as Node;\n if (\n btnRef.current &&\n !btnRef.current.contains(target) &&\n menuRef.current &&\n !menuRef.current.contains(target)\n ) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open]);\n\n return (\n <>\n <button\n ref={btnRef}\n onClick={() => setOpen((p) => !p)}\n className=\"flex items-center justify-between w-full min-h-[36px] px-[10px] py-[6px] rounded-[var(--radius)] cursor-pointer transition-colors\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: `1px solid ${open ? \"var(--primary)\" : \"var(--border)\"}`,\n }}\n >\n <span\n className=\"truncate\"\n style={{\n ...bodyStyle,\n fontSize: \"13px\",\n color: value ? \"var(--foreground)\" : \"var(--muted-foreground)\",\n }}\n >\n {value || placeholder}\n </span>\n <ChevronDown\n className=\"size-[14px] shrink-0 transition-transform\"\n style={{\n color: \"var(--muted-foreground)\",\n transform: open ? \"rotate(180deg)\" : \"rotate(0deg)\",\n }}\n />\n </button>\n\n <PortaledDropdown anchorRef={btnRef} open={open}>\n <div\n ref={menuRef}\n className=\"rounded-[var(--radius)] overflow-hidden py-[4px]\"\n style={{\n backgroundColor: \"var(--card)\",\n border: \"1px solid var(--border)\",\n boxShadow: \"0px 4px 16px rgba(0,0,0,0.12)\",\n maxHeight: \"180px\",\n overflowY: \"auto\",\n }}\n >\n {options.map((opt) => (\n <button\n key={opt}\n onClick={() => {\n onChange(opt);\n setOpen(false);\n }}\n className=\"flex items-center w-full px-[12px] py-[8px] cursor-pointer transition-colors text-left\"\n style={{\n backgroundColor: opt === value ? \"var(--muted)\" : \"transparent\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor =\n opt === value ? \"var(--muted)\" : \"transparent\")\n }\n >\n <span style={{ ...bodyStyle, fontSize: \"13px\" }}>{opt}</span>\n </button>\n ))}\n </div>\n </PortaledDropdown>\n </>\n );\n}\n\n/* ═══════════════════════════════════════════════════════════\n Invite Users Drawer\n ═══════════════════════════════════════════════════════════ */\nfunction createEmptyRow(platforms: string[]): AssignmentRow {\n const allPlatforms = [...new Set([...platforms, ...ALWAYS_PRESENT_PLATFORMS])];\n const rolesByPlatform: Record<string, string> = {};\n allPlatforms.forEach((p) => (rolesByPlatform[p] = \"\"));\n return {\n id: `row-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`,\n projectId: \"\",\n rolesByPlatform,\n };\n}\n\nexport function InviteUsersDrawer({ isOpen, onClose, onInvite }: InviteUsersDrawerProps) {\n const [isAnimating, setIsAnimating] = useState(false);\n const [shouldRender, setShouldRender] = useState(false);\n\n // Step management\n const [step, setStep] = useState<\"details\" | \"assignments\">(\"details\");\n\n // Platforms (multi-select)\n const [selectedPlatforms, setSelectedPlatforms] = useState<Set<string>>(new Set());\n const [platformDropdownOpen, setPlatformDropdownOpen] = useState(false);\n const platformRef = useRef<HTMLDivElement>(null);\n\n // Email entries\n const [emails, setEmails] = useState<EmailEntry[]>([]);\n const [emailInput, setEmailInput] = useState(\"\");\n const [emailError, setEmailError] = useState(\"\");\n const emailInputRef = useRef<HTMLInputElement>(null);\n\n // Assignment rows\n const [assignmentRows, setAssignmentRows] = useState<AssignmentRow[]>([]);\n\n // Toast\n const [shouldRenderToast, setShouldRenderToast] = useState(false);\n const [isToastAnimating, setIsToastAnimating] = useState(false);\n const [toastUserCount, setToastUserCount] = useState(0);\n const toastTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const showSuccessToast = useCallback((count: number) => {\n setToastUserCount(count);\n setShouldRenderToast(true);\n requestAnimationFrame(() => {\n requestAnimationFrame(() => setIsToastAnimating(true));\n });\n if (toastTimerRef.current) clearTimeout(toastTimerRef.current);\n toastTimerRef.current = setTimeout(() => dismissToast(), 6000);\n }, []);\n\n const dismissToast = useCallback(() => {\n setIsToastAnimating(false);\n if (toastTimerRef.current) clearTimeout(toastTimerRef.current);\n }, []);\n\n useEffect(() => {\n return () => {\n if (toastTimerRef.current) clearTimeout(toastTimerRef.current);\n };\n }, []);\n\n // Open/close animation\n useEffect(() => {\n if (isOpen) {\n setStep(\"details\");\n setSelectedPlatforms(new Set());\n setEmails([]);\n setEmailInput(\"\");\n setEmailError(\"\");\n setAssignmentRows([]);\n setShouldRender(true);\n requestAnimationFrame(() => {\n requestAnimationFrame(() => setIsAnimating(true));\n });\n } else {\n setIsAnimating(false);\n const timer = setTimeout(() => setShouldRender(false), 300);\n return () => clearTimeout(timer);\n }\n }, [isOpen]);\n\n // Escape key\n useEffect(() => {\n const handler = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && isOpen) onClose();\n };\n document.addEventListener(\"keydown\", handler);\n return () => document.removeEventListener(\"keydown\", handler);\n }, [isOpen, onClose]);\n\n // Close platform dropdown on outside click\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (platformRef.current && !platformRef.current.contains(e.target as Node))\n setPlatformDropdownOpen(false);\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, []);\n\n /* ── Platform toggle ── */\n const handleTogglePlatform = useCallback((platform: string) => {\n setSelectedPlatforms((prev) => {\n const next = new Set(prev);\n if (next.has(platform)) next.delete(platform);\n else next.add(platform);\n return next;\n });\n }, []);\n\n /* ── Email handling with instant validation ── */\n const addEmail = useCallback(\n (raw: string) => {\n const email = raw.trim().toLowerCase();\n if (!email) return;\n if (!isValidEmail(email)) {\n setEmailError(\"Please enter a valid email address\");\n return;\n }\n if (emails.some((e) => e.email === email)) {\n setEmailError(\"This email has already been added\");\n return;\n }\n setEmailError(\"\");\n\n const existing = EXISTING_PLATFORM_USERS[email];\n const displayName = existing ? existing.name : emailToDisplayName(email);\n const status: EmailEntry[\"status\"] = existing ? \"existing\" : \"valid\";\n\n setEmails((prev) => [\n ...prev,\n {\n id: `email-${Date.now()}-${Math.random().toString(36).slice(2, 4)}`,\n email,\n displayName,\n status,\n existingPlatforms: existing?.platforms,\n },\n ]);\n setEmailInput(\"\");\n },\n [emails],\n );\n\n const removeEmail = useCallback((id: string) => {\n setEmails((prev) => prev.filter((e) => e.id !== id));\n }, []);\n\n /* ── Derived state ── */\n const existingEmails = emails.filter((e) => e.status === \"existing\");\n const validEmails = emails.filter((e) => e.status === \"valid\");\n const hasExistingUsers = existingEmails.length > 0;\n const canProceed =\n selectedPlatforms.size > 0 && emails.length > 0 && !hasExistingUsers && validEmails.length > 0;\n\n /* ── Proceed to assignments ── */\n const handleProceed = useCallback(() => {\n if (!canProceed) return;\n const platforms = Array.from(selectedPlatforms);\n setAssignmentRows([createEmptyRow(platforms)]);\n setStep(\"assignments\");\n }, [canProceed, selectedPlatforms]);\n\n /* ── Assignment row handlers ── */\n const activePlatforms = [\n ...new Set([...Array.from(selectedPlatforms), ...ALWAYS_PRESENT_PLATFORMS]),\n ];\n\n const handleUpdateRow = useCallback((id: string, updates: Partial<AssignmentRow>) => {\n setAssignmentRows((prev) => prev.map((r) => (r.id === id ? { ...r, ...updates } : r)));\n }, []);\n\n const handleRemoveRow = useCallback(\n (id: string) => {\n setAssignmentRows((prev) => {\n const next = prev.filter((r) => r.id !== id);\n return next.length === 0 ? [createEmptyRow(activePlatforms)] : next;\n });\n },\n [activePlatforms],\n );\n\n const handleAddRow = useCallback(() => {\n setAssignmentRows((prev) => [...prev, createEmptyRow(activePlatforms)]);\n }, [activePlatforms]);\n\n /* ── Submit check ── */\n const allRowsComplete = assignmentRows.every(\n (r) =>\n r.projectId !== \"\" &&\n activePlatforms.every((p) => r.rolesByPlatform[p] && r.rolesByPlatform[p] !== \"\"),\n );\n const canSubmit = validEmails.length > 0 && assignmentRows.length > 0 && allRowsComplete;\n\n return (\n <>\n {/* ── Success Toast ── */}\n {shouldRenderToast && (\n <div\n className=\"fixed top-0 left-1/2 z-[60] px-[16px] pt-[88px]\"\n style={{\n width: \"400px\",\n maxWidth: \"calc(100vw - 32px)\",\n opacity: isToastAnimating ? 1 : 0,\n transform: isToastAnimating\n ? \"translateX(-50%) translateY(0)\"\n : \"translateX(-50%) translateY(-16px)\",\n transition:\n \"opacity 350ms cubic-bezier(0.16, 1, 0.3, 1), transform 350ms cubic-bezier(0.16, 1, 0.3, 1)\",\n }}\n onTransitionEnd={() => {\n if (!isToastAnimating) setShouldRenderToast(false);\n }}\n >\n <div\n className=\"flex items-center gap-[16px] px-[16px] py-[12px] rounded-[12px]\"\n style={{\n backgroundColor: \"var(--toast-success-bg, var(--badge-success-bg))\",\n boxShadow: \"0px 6px 32px 0px rgba(23, 26, 28, 0.1)\",\n }}\n >\n <CheckCircle\n className=\"size-[20px] shrink-0\"\n style={{ color: \"var(--toast-success-title, var(--badge-success-text))\" }}\n />\n <div className=\"flex-1 flex flex-col gap-[4px] min-w-0\">\n <p\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--toast-success-title, var(--badge-success-text))\",\n }}\n >\n Users added successfully\n </p>\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--toast-success-text, var(--badge-success-text))\",\n }}\n >\n {toastUserCount} user{toastUserCount !== 1 ? \"s\" : \"\"} will receive an invitation\n email shortly\n </p>\n </div>\n <button\n onClick={() => dismissToast()}\n className=\"shrink-0 flex items-center justify-center w-[32px] h-[32px] rounded-[var(--radius)] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor =\n \"var(--toast-success-close-hover, var(--muted))\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <X\n className=\"size-[16px]\"\n style={{ color: \"var(--toast-close-icon, var(--foreground))\" }}\n />\n </button>\n </div>\n </div>\n )}\n\n {/* ── Drawer ── */}\n {shouldRender && (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-end overflow-clip transition-all duration-300\"\n style={{\n backdropFilter: isAnimating ? \"blur(5px)\" : \"blur(0px)\",\n backgroundColor: isAnimating ? \"rgba(31, 40, 50, 0.4)\" : \"rgba(31, 40, 50, 0)\",\n }}\n onClick={(e) => {\n if (e.target === e.currentTarget) onClose();\n }}\n >\n <div\n className=\"h-full shrink-0 flex flex-col drawer-panel rounded-tl-[16px] rounded-bl-[16px]\"\n style={{\n width:\n step === \"assignments\"\n ? `${Math.min(560 + activePlatforms.length * 160, 960)}px`\n : \"560px\",\n maxWidth: \"92vw\",\n backgroundColor: \"var(--card)\",\n transform: isAnimating ? \"translateX(0)\" : \"translateX(100%)\",\n }}\n >\n {/* ── Header ── */}\n <div className=\"shrink-0 px-[24px] py-[16px]\">\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"flex items-center gap-[12px]\">\n {step === \"assignments\" && (\n <button\n onClick={() => setStep(\"details\")}\n className=\"flex items-center justify-center size-[28px] rounded-[var(--radius)] cursor-pointer transition-colors\"\n style={{ color: \"var(--muted-foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <ChevronDown className=\"size-[16px]\" style={{ transform: \"rotate(90deg)\" }} />\n </button>\n )}\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-xl)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n {step === \"details\" ? \"Add New User\" : \"Assign Projects & Roles\"}\n </span>\n </div>\n <IconButton\n onClick={onClose}\n className=\"size-[28px] rounded-[var(--radius)] transition-colors cursor-pointer\"\n style={{ color: \"var(--muted-foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <X className=\"size-[16px]\" />\n </IconButton>\n </div>\n </div>\n\n {/* ── Content ── */}\n <div className=\"flex-1 min-h-0 overflow-y-auto px-[24px] py-[8px]\">\n {step === \"details\" ? (\n <DetailsStep\n selectedPlatforms={selectedPlatforms}\n onTogglePlatform={handleTogglePlatform}\n platformDropdownOpen={platformDropdownOpen}\n onTogglePlatformDropdown={() => setPlatformDropdownOpen((p) => !p)}\n platformRef={platformRef}\n emails={emails}\n emailInput={emailInput}\n emailError={emailError}\n onEmailInputChange={setEmailInput}\n onAddEmail={addEmail}\n onRemoveEmail={removeEmail}\n emailInputRef={emailInputRef}\n />\n ) : (\n <AssignmentsStep\n platforms={activePlatforms}\n rows={assignmentRows}\n onUpdateRow={handleUpdateRow}\n onRemoveRow={handleRemoveRow}\n onAddRow={handleAddRow}\n emails={validEmails}\n />\n )}\n </div>\n\n {/* ── Footer ── */}\n <div className=\"shrink-0 px-[24px] py-[16px]\">\n <div className=\"flex gap-[8px] items-start justify-end w-full\">\n <div\n className=\"relative flex-1 rounded-[9999px]\"\n style={{ border: \"1px solid var(--ring)\" }}\n >\n <button\n onClick={() => {\n if (step === \"assignments\") setStep(\"details\");\n else onClose();\n }}\n className=\"flex items-center justify-center w-full px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n {step === \"assignments\" ? \"Back\" : \"Cancel\"}\n </span>\n </button>\n </div>\n\n <div className=\"flex-1\">\n <button\n onClick={() => {\n if (step === \"details\") {\n handleProceed();\n } else {\n const count = validEmails.length;\n onClose();\n showSuccessToast(count);\n if (onInvite) {\n const newUsers = validEmails.map((emailEntry) => ({\n name: emailEntry.displayName,\n email: emailEntry.email,\n platforms: activePlatforms,\n }));\n onInvite(newUsers);\n }\n }\n }}\n disabled={step === \"details\" ? !canProceed : !canSubmit}\n className=\"flex items-center justify-center w-full px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-opacity disabled:opacity-50 disabled:cursor-not-allowed\"\n style={{\n backgroundColor: \"var(--primary)\",\n color: \"var(--primary-foreground)\",\n }}\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n }}\n >\n {step === \"details\" ? \"Proceed\" : \"Add Users\"}\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n )}\n </>\n );\n}\n\n/* ═══════════════════════════════════════════════════════════\n Step 1: Details (Platforms + Emails with inline validation)\n ═══════════════════════════════════════════════════════════ */\nfunction DetailsStep({\n selectedPlatforms,\n onTogglePlatform,\n platformDropdownOpen,\n onTogglePlatformDropdown,\n platformRef,\n emails,\n emailInput,\n emailError,\n onEmailInputChange,\n onAddEmail,\n onRemoveEmail,\n emailInputRef,\n}: {\n selectedPlatforms: Set<string>;\n onTogglePlatform: (p: string) => void;\n platformDropdownOpen: boolean;\n onTogglePlatformDropdown: () => void;\n platformRef: React.RefObject<HTMLDivElement>;\n emails: EmailEntry[];\n emailInput: string;\n emailError: string;\n onEmailInputChange: (v: string) => void;\n onAddEmail: (email: string) => void;\n onRemoveEmail: (id: string) => void;\n emailInputRef: React.RefObject<HTMLInputElement>;\n}) {\n const existingEmails = emails.filter((e) => e.status === \"existing\");\n const validEmails = emails.filter((e) => e.status === \"valid\");\n\n return (\n <div className=\"flex flex-col gap-[20px]\">\n {/* Platform (multi-select checkbox dropdown) */}\n <div className=\"flex flex-col gap-[4px] w-full\" ref={platformRef}>\n <label style={labelStyle}>Platform*</label>\n <div className=\"relative\">\n <div\n onClick={onTogglePlatformDropdown}\n className=\"flex items-center justify-between w-full min-h-[40px] px-[12px] py-[8px] rounded-[12px] cursor-pointer transition-colors\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: `1px solid ${platformDropdownOpen ? \"var(--primary)\" : \"var(--border)\"}`,\n }}\n >\n <div className=\"flex-1 flex flex-wrap gap-[4px] items-center min-w-0\">\n {selectedPlatforms.size > 0 ? (\n Array.from(selectedPlatforms).map((p) => (\n <span\n key={p}\n className=\"inline-flex items-center gap-[4px] px-[8px] py-[1px] rounded-[6px] shrink-0\"\n style={{\n backgroundColor: \"var(--muted)\",\n border: \"1px solid var(--border)\",\n }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"18px\",\n color: \"var(--foreground)\",\n }}\n >\n {p}\n </span>\n <span\n role=\"button\"\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation();\n onTogglePlatform(p);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.stopPropagation();\n onTogglePlatform(p);\n }\n }}\n className=\"flex items-center justify-center size-[12px] rounded-full cursor-pointer\"\n style={{ color: \"var(--muted-foreground)\" }}\n >\n <X className=\"size-[10px]\" />\n </span>\n </span>\n ))\n ) : (\n <span style={{ ...bodyStyle, color: \"var(--muted-foreground)\" }}>\n Select platforms...\n </span>\n )}\n </div>\n <ChevronDown\n className=\"size-[16px] shrink-0 transition-transform ml-[8px]\"\n style={{\n color: \"var(--muted-foreground)\",\n transform: platformDropdownOpen ? \"rotate(180deg)\" : \"rotate(0deg)\",\n }}\n />\n </div>\n\n {platformDropdownOpen && (\n <div\n className=\"absolute top-[calc(100%+4px)] left-0 right-0 z-10 rounded-[12px] overflow-hidden py-[4px]\"\n style={{\n backgroundColor: \"var(--card)\",\n border: \"1px solid var(--border)\",\n boxShadow: \"0px 4px 16px rgba(0,0,0,0.08)\",\n }}\n >\n {AVAILABLE_PLATFORMS.map((platform) => {\n const isSelected = selectedPlatforms.has(platform);\n return (\n <button\n key={platform}\n onClick={() => onTogglePlatform(platform)}\n className=\"flex items-center gap-[12px] w-full px-[16px] py-[10px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <CheckboxIcon checked={isSelected} />\n <span className=\"flex-1 text-left\" style={bodyStyle}>\n {platform}\n </span>\n </button>\n );\n })}\n </div>\n )}\n </div>\n </div>\n\n {/* Email input */}\n <div className=\"flex flex-col gap-[4px] w-full\">\n <label style={labelStyle}>Email Address*</label>\n <div\n className=\"flex flex-wrap gap-[6px] items-center w-full min-h-[40px] px-[12px] py-[6px] rounded-[12px] cursor-text\"\n style={{\n backgroundColor: \"var(--input-background)\",\n border: `1px solid ${emailError ? \"var(--destructive)\" : \"var(--border)\"}`,\n }}\n onClick={() => emailInputRef.current?.focus()}\n >\n {emails.map((entry) => {\n const isExisting = entry.status === \"existing\";\n return (\n <span\n key={entry.id}\n className=\"flex items-center gap-[6px] px-[8px] py-[2px] rounded-[var(--radius)] shrink-0\"\n style={{\n backgroundColor: isExisting\n ? \"var(--badge-danger-bg)\"\n : \"var(--badge-success-bg)\",\n border: `1px solid ${isExisting ? \"var(--destructive)\" : \"var(--badge-success-text)\"}`,\n }}\n >\n {isExisting && (\n <AlertCircle\n className=\"size-[12px] shrink-0\"\n style={{ color: \"var(--destructive)\" }}\n />\n )}\n {!isExisting && (\n <CheckCircle\n className=\"size-[12px] shrink-0\"\n style={{ color: \"var(--badge-success-text)\" }}\n />\n )}\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: isExisting ? \"var(--badge-danger-text)\" : \"var(--badge-success-text)\",\n whiteSpace: \"nowrap\",\n }}\n >\n {entry.displayName}\n </span>\n <button\n onClick={(e) => {\n e.stopPropagation();\n onRemoveEmail(entry.id);\n }}\n className=\"flex items-center justify-center shrink-0 size-[14px] rounded-full cursor-pointer transition-colors\"\n style={{ color: isExisting ? \"var(--destructive)\" : \"var(--muted-foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.color = \"var(--foreground)\")}\n onMouseLeave={(e) =>\n (e.currentTarget.style.color = isExisting\n ? \"var(--destructive)\"\n : \"var(--muted-foreground)\")\n }\n >\n <X className=\"size-[10px]\" />\n </button>\n </span>\n );\n })}\n\n <input\n ref={emailInputRef}\n type=\"text\"\n value={emailInput}\n onChange={(e) => onEmailInputChange(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \",\" || e.key === \"Tab\") {\n e.preventDefault();\n if (emailInput.trim()) onAddEmail(emailInput);\n } else if (e.key === \"Backspace\" && emailInput === \"\" && emails.length > 0) {\n onRemoveEmail(emails[emails.length - 1].id);\n }\n }}\n onBlur={() => {\n if (emailInput.trim()) onAddEmail(emailInput);\n }}\n placeholder={emails.length === 0 ? \"Enter email and press Enter...\" : \"Add more...\"}\n className=\"flex-1 min-w-[140px] min-h-[28px] outline-none bg-transparent\"\n style={{ ...bodyStyle, color: \"var(--foreground)\" }}\n />\n </div>\n\n {/* Error */}\n {emailError && (\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--destructive)\",\n }}\n >\n {emailError}\n </span>\n )}\n\n {/* Count */}\n {emails.length > 0 && !emailError && (\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {validEmails.length} valid, {existingEmails.length} existing — {emails.length} total\n </span>\n )}\n </div>\n\n {/* Inline validation error panel for existing users */}\n {existingEmails.length > 0 && (\n <div\n className=\"flex flex-col gap-[8px] p-[16px] rounded-[12px]\"\n style={{\n backgroundColor: \"var(--badge-danger-bg)\",\n border: \"1px solid var(--destructive)\",\n }}\n >\n <div className=\"flex items-center gap-[8px]\">\n <AlertCircle className=\"size-[16px] shrink-0\" style={{ color: \"var(--destructive)\" }} />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--badge-danger-text)\",\n }}\n >\n {existingEmails.length} user{existingEmails.length !== 1 ? \"s\" : \"\"} already assigned\n to a platform\n </span>\n </div>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"18px\",\n color: \"var(--badge-danger-text)\",\n }}\n >\n To proceed, please remove this user. You can manage user roles in the All Users list.\n </span>\n <div className=\"flex flex-col gap-[6px] mt-[4px]\">\n {existingEmails.map((entry) => (\n <div\n key={entry.id}\n className=\"flex items-center gap-[8px] px-[12px] py-[8px] rounded-[var(--radius)]\"\n style={{ backgroundColor: \"var(--card)\", border: \"1px solid var(--border)\" }}\n >\n <span\n className=\"flex-1 min-w-0\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n {entry.displayName}{\" \"}\n <span\n style={{\n color: \"var(--muted-foreground)\",\n fontWeight: \"var(--font-weight-normal)\",\n }}\n >\n ({entry.email})\n </span>\n </span>\n <div className=\"flex items-center gap-[4px] shrink-0\">\n {entry.existingPlatforms?.map((p) => (\n <span\n key={p}\n className=\"inline-flex items-center px-[6px] py-[1px] rounded-[6px]\"\n style={{ backgroundColor: \"var(--badge-info-bg)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"10px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--badge-info-text)\",\n whiteSpace: \"nowrap\",\n }}\n >\n {p}\n </span>\n </span>\n ))}\n </div>\n <button\n onClick={() => onRemoveEmail(entry.id)}\n className=\"flex items-center justify-center shrink-0 size-[20px] rounded-full cursor-pointer transition-colors\"\n style={{ color: \"var(--muted-foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.color = \"var(--destructive)\")}\n onMouseLeave={(e) => (e.currentTarget.style.color = \"var(--muted-foreground)\")}\n >\n <X className=\"size-[14px]\" />\n </button>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Helper text */}\n <div\n className=\"flex flex-col gap-[8px] p-[12px] rounded-[12px]\"\n style={{ backgroundColor: \"var(--muted)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--foreground)\",\n }}\n >\n Test Email Addresses\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"18px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n <strong\n style={{ fontWeight: \"var(--font-weight-medium)\", color: \"var(--badge-danger-text)\" }}\n >\n Existing (will fail):\n </strong>{\" \"}\n amit.sharma@company.com, john.mitchell@company.com, sarah.chen@company.com\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"18px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n <strong\n style={{ fontWeight: \"var(--font-weight-medium)\", color: \"var(--badge-success-text)\" }}\n >\n New (will pass):\n </strong>{\" \"}\n jane.doe@newco.com, alex.turner@startup.com, maria.garcia@fresh.com\n </span>\n </div>\n </div>\n );\n}\n\n/* ═══════════════════════════════════════════════════════════\n Step 2: Assignments Table (with portaled dropdowns)\n ═══════════════════════════════════════════════════════════ */\nfunction AssignmentsStep({\n platforms,\n rows,\n onUpdateRow,\n onRemoveRow,\n onAddRow,\n emails,\n}: {\n platforms: string[];\n rows: AssignmentRow[];\n onUpdateRow: (id: string, updates: Partial<AssignmentRow>) => void;\n onRemoveRow: (id: string) => void;\n onAddRow: () => void;\n emails: EmailEntry[];\n}) {\n const projectOptions = MOCK_PROJECTS.map((p) => ({ id: p.id, name: p.name }));\n\n // Compute column template: project gets slightly more space\n const colTemplate = `1.4fr ${platforms.map(() => \"1fr\").join(\" \")} 40px`;\n\n return (\n <div className=\"flex flex-col gap-[16px]\">\n {/* Summary */}\n <div\n className=\"flex flex-wrap items-center gap-[8px] px-[12px] py-[10px] rounded-[12px]\"\n style={{ backgroundColor: \"var(--muted)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n Assigning roles for{\" \"}\n <strong style={{ fontWeight: \"var(--font-weight-medium)\", color: \"var(--foreground)\" }}>\n {emails.length} user{emails.length !== 1 ? \"s\" : \"\"}\n </strong>{\" \"}\n on{\" \"}\n <strong style={{ fontWeight: \"var(--font-weight-medium)\", color: \"var(--foreground)\" }}>\n {platforms.join(\", \")}\n </strong>\n </span>\n <div className=\"flex items-center gap-[4px]\">\n {emails.slice(0, 3).map((e) => (\n <span\n key={e.id}\n className=\"inline-flex items-center px-[6px] py-[1px] rounded-[6px]\"\n style={{\n backgroundColor: \"var(--badge-default-bg)\",\n border: \"1px solid var(--border)\",\n }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"11px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--foreground)\",\n }}\n >\n {e.displayName}\n </span>\n </span>\n ))}\n {emails.length > 3 && (\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"11px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n +{emails.length - 3} more\n </span>\n )}\n </div>\n </div>\n\n {/* Assignment Table */}\n <div\n className=\"w-full rounded-[12px] overflow-visible\"\n style={{ border: \"1px solid var(--border)\" }}\n >\n {/* Header */}\n <div\n className=\"grid items-center px-[12px] py-[10px]\"\n style={{\n gridTemplateColumns: colTemplate,\n backgroundColor: \"var(--muted)\",\n borderBottomWidth: \"1px\",\n borderBottomStyle: \"solid\",\n borderBottomColor: \"var(--border)\",\n borderRadius: \"12px 12px 0 0\",\n }}\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n paddingRight: \"8px\",\n }}\n >\n Project\n </span>\n {platforms.map((p) => (\n <span\n key={p}\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n paddingLeft: \"8px\",\n paddingRight: \"8px\",\n }}\n >\n {p} Role\n </span>\n ))}\n <span />\n </div>\n\n {/* Rows */}\n {rows.map((row, idx) => (\n <div\n key={row.id}\n className=\"grid items-start px-[12px] py-[10px]\"\n style={{\n gridTemplateColumns: colTemplate,\n borderBottomWidth: idx < rows.length - 1 ? \"1px\" : \"0\",\n borderBottomStyle: \"solid\",\n borderBottomColor: \"var(--border)\",\n backgroundColor: \"var(--input-background)\",\n overflow: \"visible\",\n borderRadius: idx === rows.length - 1 ? \"0 0 12px 12px\" : undefined,\n }}\n >\n <div style={{ paddingRight: \"8px\", position: \"relative\" }}>\n <SearchableDropdown\n value={row.projectId}\n options={projectOptions}\n placeholder=\"Select project...\"\n onChange={(id) => onUpdateRow(row.id, { projectId: id })}\n />\n </div>\n\n {platforms.map((platform) => (\n <div\n key={platform}\n style={{ paddingLeft: \"8px\", paddingRight: \"8px\", position: \"relative\" }}\n >\n <SimpleDropdown\n value={row.rolesByPlatform[platform] || \"\"}\n options={PLATFORM_ROLES[platform] || []}\n placeholder=\"Select role...\"\n onChange={(role) =>\n onUpdateRow(row.id, {\n rolesByPlatform: { ...row.rolesByPlatform, [platform]: role },\n })\n }\n />\n </div>\n ))}\n\n <div className=\"flex items-center justify-center pt-[6px]\">\n {rows.length > 1 && (\n <IconButton variant=\"danger\" onClick={() => onRemoveRow(row.id)}>\n <Trash2 className=\"size-full\" />\n </IconButton>\n )}\n </div>\n </div>\n ))}\n </div>\n\n {/* Add row */}\n <button\n onClick={onAddRow}\n className=\"flex gap-[8px] items-center justify-center min-h-[40px] px-[24px] py-[10px] rounded-[9999px] cursor-pointer transition-colors self-start\"\n style={{ backgroundColor: \"transparent\", border: \"1px solid var(--ring)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <Plus className=\"size-[16px]\" style={{ color: \"var(--foreground)\" }} />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n whiteSpace: \"nowrap\",\n }}\n >\n Add Another Assignment\n </span>\n </button>\n </div>\n );\n}\n","import { type ReactNode, useState } from \"react\";\n\ninterface PageTransitionProps {\n children: ReactNode;\n className?: string;\n}\n\n/**\n * Wraps a page with a fade-up entrance animation.\n *\n * IMPORTANT: The `animate-page-enter` class uses `transform: translateY(...)` which\n * creates a CSS stacking context — breaking `position: fixed` drawers inside the\n * subtree. To fix this, the class is removed via `onAnimationEnd` as soon as the\n * 200ms animation completes, destroying the stacking context and restoring normal\n * fixed-positioning behaviour for all drawers / overlays.\n */\nexport function PageTransition({ children, className }: PageTransitionProps) {\n const [animating, setAnimating] = useState(true);\n\n return (\n <div\n className={`${animating ? \"animate-page-enter\" : \"\"} w-full${className ? ` ${className}` : \"\"}`}\n onAnimationEnd={() => setAnimating(false)}\n >\n {children}\n </div>\n );\n}\n","import {\n AlertTriangle,\n CheckCircle2,\n Download,\n FileSpreadsheet,\n RefreshCw,\n UploadCloud,\n X,\n} from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\n/* ─── Template CSV with hierarchical project structure ───── */\nconst TEMPLATE_CSV_CONTENT = `Level,Type,Name,Description,Admin,Parent Name\n1,Account,Stellar Solutions,Primary enterprise account,admin@stellarsolutions.com,\n2,Department,Engineering,Core engineering division,james.anderson@stellarsolutions.com,Stellar Solutions\n3,Business Unit,Frontend,Web application development,priya.sharma@stellarsolutions.com,Engineering\n4,Team,Design System,Component library & tokens team,marcus.johnson@stellarsolutions.com,Frontend\n4,Team,Web Platform,Main web app development,elena.rodriguez@stellarsolutions.com,Frontend\n3,Business Unit,Backend,Server-side services & APIs,david.kim@stellarsolutions.com,Engineering\n4,Team,API Services,REST & GraphQL API team,wei.zhang@stellarsolutions.com,Backend\n4,Team,Data Pipeline,ETL and data processing,tomas.garcia@stellarsolutions.com,Backend\n3,Business Unit,DevOps,Infrastructure & deployment,amara.okafor@stellarsolutions.com,Engineering\n4,Team,Cloud Infra,AWS/GCP infrastructure management,nikolai.petrov@stellarsolutions.com,DevOps\n4,Team,CI/CD,Build and deployment automation,raj.patel@stellarsolutions.com,DevOps\n2,Department,Design,Product design & research,sarah.obrien@stellarsolutions.com,Stellar Solutions\n3,Business Unit,UX Research,User research & testing,yuki.tanaka@stellarsolutions.com,Design\n3,Business Unit,Visual Design,UI design & branding,isabella.costa@stellarsolutions.com,Design\n2,Department,Product,Product management & strategy,lucas.muller@stellarsolutions.com,Stellar Solutions\n3,Business Unit,Roadmap,Product planning & prioritisation,fatima.hassan@stellarsolutions.com,Product\n3,Business Unit,Analytics,Product analytics & insights,tomas.garcia@stellarsolutions.com,Product`;\n\nfunction downloadProjectTemplate() {\n const blob = new Blob([TEMPLATE_CSV_CONTENT], { type: \"text/csv;charset=utf-8;\" });\n const url = URL.createObjectURL(blob);\n const link = document.createElement(\"a\");\n link.href = url;\n link.download = \"project_structure_template.csv\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n}\n\n/* ─── Types ──────────────────────────────────────────────── */\ntype BulkUploadStep = \"upload\" | \"analyzing\" | \"errors\" | \"success\" | \"confirmed\";\n\ninterface StructureValidationError {\n row: number;\n column: string;\n type: \"Missing Required Field\" | \"Invalid Format\" | \"Invalid Hierarchy\" | \"Duplicate Entry\";\n value: string;\n}\n\ninterface FlatRow {\n level: number;\n type: string;\n name: string;\n description: string;\n admin: string;\n parentName: string;\n row: number;\n}\n\n/* ─── Parsed node from CSV ───────────────────────────────── */\nexport interface ParsedTreeNode {\n id: string;\n type: string;\n name: string;\n description: string;\n admin: string;\n parentName: string;\n level: number;\n isExpanded: boolean;\n children: ParsedTreeNode[];\n}\n\n/* ─── CSV Parser ─────────────────────────────────────────── */\nfunction parseCSV(text: string): string[][] {\n const lines = text.split(/\\r?\\n/).filter((l) => l.trim() !== \"\");\n return lines.map((line) => {\n const cells: string[] = [];\n let cur = \"\";\n let inQuotes = false;\n for (let i = 0; i < line.length; i++) {\n const ch = line[i];\n if (inQuotes) {\n if (ch === '\"' && line[i + 1] === '\"') {\n cur += '\"';\n i++;\n } else if (ch === '\"') {\n inQuotes = false;\n } else {\n cur += ch;\n }\n } else {\n if (ch === '\"') {\n inQuotes = true;\n } else if (ch === \",\") {\n cells.push(cur.trim());\n cur = \"\";\n } else {\n cur += ch;\n }\n }\n }\n cells.push(cur.trim());\n return cells;\n });\n}\n\nfunction buildTreeFromCSV(text: string): {\n nodes: ParsedTreeNode[];\n errors: StructureValidationError[];\n} {\n const rows = parseCSV(text);\n if (rows.length < 2)\n return {\n nodes: [],\n errors: [\n { row: 1, column: \"File\", type: \"Missing Required Field\", value: \"No data rows found\" },\n ],\n };\n\n const headers = rows[0].map((h) => h.toLowerCase().trim());\n const levelIdx = headers.indexOf(\"level\");\n const typeIdx = headers.indexOf(\"type\");\n const nameIdx = headers.indexOf(\"name\");\n const descIdx = headers.indexOf(\"description\");\n const adminIdx = headers.indexOf(\"admin\");\n const parentIdx = headers.indexOf(\"parent name\");\n\n const errors: StructureValidationError[] = [];\n const validTypes = [\"account\", \"department\", \"business unit\", \"team\"];\n const typeCapMap: Record<string, string> = {\n account: \"Account\",\n department: \"Department\",\n \"business unit\": \"Business Unit\",\n team: \"Team\",\n };\n\n const flatNodes: FlatRow[] = [];\n\n for (let i = 1; i < rows.length; i++) {\n const r = rows[i];\n const rowNum = i + 1;\n const level = levelIdx >= 0 ? Number.parseInt(r[levelIdx] || \"\", 10) : Number.NaN;\n const rawType = typeIdx >= 0 ? (r[typeIdx] || \"\").trim() : \"\";\n const name = nameIdx >= 0 ? (r[nameIdx] || \"\").trim() : \"\";\n const desc = descIdx >= 0 ? (r[descIdx] || \"\").trim() : \"\";\n const admin = adminIdx >= 0 ? (r[adminIdx] || \"\").trim() : \"\";\n const parentName = parentIdx >= 0 ? (r[parentIdx] || \"\").trim() : \"\";\n\n if (!name) {\n errors.push({ row: rowNum, column: \"Name\", type: \"Missing Required Field\", value: \"—\" });\n continue;\n }\n if (!rawType) {\n errors.push({ row: rowNum, column: \"Type\", type: \"Missing Required Field\", value: \"—\" });\n continue;\n }\n const typeLower = rawType.toLowerCase();\n if (!validTypes.includes(typeLower)) {\n errors.push({ row: rowNum, column: \"Type\", type: \"Invalid Format\", value: rawType });\n continue;\n }\n if (isNaN(level) || level < 1 || level > 4) {\n errors.push({\n row: rowNum,\n column: \"Level\",\n type: \"Invalid Format\",\n value: r[levelIdx] || \"—\",\n });\n continue;\n }\n if (admin && !admin.includes(\"@\")) {\n errors.push({ row: rowNum, column: \"Admin\", type: \"Invalid Format\", value: admin });\n continue;\n }\n if (level > 1 && !parentName) {\n errors.push({\n row: rowNum,\n column: \"Parent Name\",\n type: \"Missing Required Field\",\n value: \"—\",\n });\n continue;\n }\n\n flatNodes.push({\n level,\n type: typeCapMap[typeLower] || rawType,\n name,\n description: desc,\n admin,\n parentName,\n row: rowNum,\n });\n }\n\n if (errors.length > 0) return { nodes: [], errors };\n\n // Build tree\n const nodeMap = new Map<string, ParsedTreeNode>();\n const roots: ParsedTreeNode[] = [];\n let counter = Date.now();\n\n for (const fn of flatNodes) {\n const node: ParsedTreeNode = {\n id: (counter++).toString(),\n type: fn.type,\n name: fn.name,\n description: fn.description,\n admin: fn.admin,\n parentName: fn.parentName,\n level: fn.level,\n isExpanded: true,\n children: [],\n };\n\n nodeMap.set(fn.name, node);\n\n if (fn.level === 1 || !fn.parentName) {\n roots.push(node);\n } else {\n const parent = nodeMap.get(fn.parentName);\n if (parent) {\n parent.children.push(node);\n } else {\n errors.push({\n row: fn.row,\n column: \"Parent Name\",\n type: \"Invalid Hierarchy\",\n value: fn.parentName,\n });\n roots.push(node);\n }\n }\n }\n\n if (errors.length > 0) return { nodes: [], errors };\n\n return { nodes: roots, errors: [] };\n}\n\n/* ─── Summary helpers ────────────────────────────────────── */\ninterface ParseSummary {\n total: number;\n accounts: number;\n departments: number;\n bus: number;\n teams: number;\n maxDepth: number;\n}\n\nfunction countNodes(nodes: ParsedTreeNode[]): ParseSummary {\n let total = 0,\n accounts = 0,\n departments = 0,\n bus = 0,\n teams = 0,\n maxDepth = 0;\n const walk = (list: ParsedTreeNode[], depth: number) => {\n for (const n of list) {\n total++;\n if (depth > maxDepth) maxDepth = depth;\n if (n.type === \"Account\") accounts++;\n else if (n.type === \"Department\") departments++;\n else if (n.type === \"Business Unit\") bus++;\n else if (n.type === \"Team\") teams++;\n if (n.children.length) walk(n.children, depth + 1);\n }\n };\n walk(nodes, 1);\n return { total, accounts, departments, bus, teams, maxDepth };\n}\n\n/* ─── Props ──────────────────────────────────────────────── */\ninterface ProjectBulkUploadDrawerProps {\n isOpen: boolean;\n onClose: () => void;\n onImport?: (nodes: ParsedTreeNode[]) => void;\n}\n\n/* ════════════════════════════════════════════════════════════\n PROJECT BULK UPLOAD DRAWER\n ════════════════════════════════════════════════════════════ */\nexport function ProjectBulkUploadDrawer({\n isOpen,\n onClose,\n onImport,\n}: ProjectBulkUploadDrawerProps) {\n const [isAnimating, setIsAnimating] = useState(false);\n const [shouldRender, setShouldRender] = useState(false);\n const [step, setStep] = useState<BulkUploadStep>(\"upload\");\n const [uploadedFile, setUploadedFile] = useState<File | null>(null);\n const [isDragOver, setIsDragOver] = useState(false);\n const [progress, setProgress] = useState(0);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // Parse results\n const [parsedNodes, setParsedNodes] = useState<ParsedTreeNode[]>([]);\n const [parseErrors, setParseErrors] = useState<StructureValidationError[]>([]);\n const [summary, setSummary] = useState<ParseSummary>({\n total: 0,\n accounts: 0,\n departments: 0,\n bus: 0,\n teams: 0,\n maxDepth: 0,\n });\n const [totalDataRows, setTotalDataRows] = useState(0);\n\n // Animate open / close\n useEffect(() => {\n if (isOpen) {\n setStep(\"upload\");\n setUploadedFile(null);\n setIsDragOver(false);\n setProgress(0);\n setParsedNodes([]);\n setParseErrors([]);\n setShouldRender(true);\n requestAnimationFrame(() => {\n requestAnimationFrame(() => setIsAnimating(true));\n });\n } else {\n setIsAnimating(false);\n const timer = setTimeout(() => setShouldRender(false), 300);\n return () => clearTimeout(timer);\n }\n }, [isOpen]);\n\n // Escape key\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && isOpen) onClose();\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, onClose]);\n\n // Analyzing step: read file → parse → show results\n useEffect(() => {\n if (step !== \"analyzing\" || !uploadedFile) return;\n setProgress(0);\n\n // Read file content\n const reader = new FileReader();\n reader.onload = (evt) => {\n const text = evt.target?.result as string;\n\n // Count total data rows for error summary\n const dataRowCount = text.split(/\\r?\\n/).filter((l) => l.trim() !== \"\").length - 1; // minus header\n setTotalDataRows(Math.max(dataRowCount, 0));\n\n // Simulate progress while parsing\n let prog = 0;\n const interval = setInterval(() => {\n prog += Math.random() * 15 + 5;\n if (prog >= 100) {\n prog = 100;\n clearInterval(interval);\n setProgress(100);\n\n // Parse\n const result = buildTreeFromCSV(text);\n\n setTimeout(() => {\n if (result.errors.length > 0) {\n setParseErrors(result.errors);\n setParsedNodes([]);\n setStep(\"errors\");\n } else {\n setParsedNodes(result.nodes);\n setParseErrors([]);\n setSummary(countNodes(result.nodes));\n setStep(\"success\");\n }\n }, 400);\n } else {\n setProgress(prog);\n }\n }, 200);\n\n return () => clearInterval(interval);\n };\n\n reader.readAsText(uploadedFile);\n }, [step, uploadedFile]);\n\n const handleFileSelect = useCallback((file: File) => {\n const isValidExt =\n file.name.endsWith(\".xlsx\") || file.name.endsWith(\".xls\") || file.name.endsWith(\".csv\");\n if (isValidExt) setUploadedFile(file);\n }, []);\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragOver(false);\n const file = e.dataTransfer.files[0];\n if (file) handleFileSelect(file);\n },\n [handleFileSelect],\n );\n\n const handleDragOver = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n setIsDragOver(true);\n }, []);\n\n const handleDragLeave = useCallback((e: React.DragEvent) => {\n e.preventDefault();\n setIsDragOver(false);\n }, []);\n\n const handleBrowseClick = () => fileInputRef.current?.click();\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (file) handleFileSelect(file);\n };\n\n const formatFileSize = (bytes: number) => {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1048576) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / 1048576).toFixed(1)} MB`;\n };\n\n const handleConfirmImport = () => {\n if (onImport && parsedNodes.length > 0) {\n onImport(parsedNodes);\n }\n setStep(\"confirmed\");\n };\n\n if (!shouldRender) return null;\n\n /* ── Sub-header text helpers ── */\n const subTitle = (() => {\n switch (step) {\n case \"confirmed\":\n return \"Import Complete\";\n case \"success\":\n return \"Validation Complete\";\n case \"errors\":\n return \"Validation Results\";\n case \"analyzing\":\n return \"Validating File\";\n default:\n return \"Upload Spreadsheet\";\n }\n })();\n\n const subDescription = (() => {\n switch (step) {\n case \"confirmed\":\n return \"Your project structure has been imported successfully\";\n case \"success\":\n return \"Review the summary below and confirm the import\";\n case \"errors\":\n return \"Some rows contain errors that need to be fixed\";\n case \"analyzing\":\n return \"Checking hierarchy levels, parent references, and required fields\";\n default:\n return \"Upload a CSV or Excel file with your project structure\";\n }\n })();\n\n const validRowCount = totalDataRows - parseErrors.length;\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-end overflow-clip transition-all duration-300\"\n style={{\n backdropFilter: isAnimating ? \"blur(5px)\" : \"blur(0px)\",\n backgroundColor: isAnimating ? \"rgba(31, 40, 50, 0.4)\" : \"rgba(31, 40, 50, 0)\",\n }}\n onClick={(e) => {\n if (e.target === e.currentTarget) onClose();\n }}\n >\n {/* Drawer Panel */}\n <div\n className=\"h-full shrink-0 w-[480px] sm:w-[560px] md:w-[640px] flex flex-col drawer-panel rounded-tl-[16px] rounded-bl-[16px]\"\n style={{\n backgroundColor: \"var(--card)\",\n transform: isAnimating ? \"translateX(0)\" : \"translateX(100%)\",\n }}\n >\n {/* ── Header ── */}\n <div className=\"shrink-0 px-[24px] py-[16px]\">\n <div className=\"flex items-center justify-between w-full\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-xl)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Bulk Upload Structure\n </span>\n <button\n onClick={onClose}\n className=\"flex items-center justify-center size-[28px] rounded-[8px] transition-colors cursor-pointer\"\n style={{ color: \"var(--muted-foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <X className=\"size-[16px]\" />\n </button>\n </div>\n </div>\n\n {/* ── Content (scrollable) ── */}\n <div className=\"flex-1 min-h-0 overflow-y-auto px-[24px] py-[8px]\">\n <div className=\"flex flex-col gap-[32px]\">\n {/* Sub-header */}\n <div className=\"flex flex-col gap-[4px]\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n {subTitle}\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {subDescription}\n </span>\n </div>\n\n {/* ──────── Step 1: Upload ──────── */}\n {step === \"upload\" && (\n <div className=\"flex flex-col gap-[24px]\">\n {/* Info banner */}\n <div\n className=\"flex items-start gap-[12px] px-[16px] py-[12px] rounded-[12px]\"\n style={{ backgroundColor: \"var(--alert-warning-bg)\" }}\n >\n <AlertTriangle\n className=\"size-[16px] shrink-0 mt-[2px]\"\n style={{ color: \"var(--alert-warning-foreground)\" }}\n />\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--alert-warning-foreground)\",\n }}\n >\n Upload a CSV or Excel file. Required columns:{\" \"}\n <strong>Level, Type, Name, Description, Admin, Parent Name</strong>. Levels\n define the hierarchy depth (1 = Account, 2 = Department, etc.).\n </p>\n </div>\n\n {/* Download template */}\n <button\n onClick={downloadProjectTemplate}\n className=\"flex items-center gap-[8px] cursor-pointer self-start\"\n style={{ backgroundColor: \"transparent\" }}\n >\n <Download className=\"size-[14px]\" style={{ color: \"var(--primary)\" }} />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--primary)\",\n textDecoration: \"underline\",\n textUnderlineOffset: \"2px\",\n }}\n >\n Download template (.csv)\n </span>\n </button>\n\n {/* Column guide */}\n <div className=\"flex flex-col gap-[8px]\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Column Guide\n </span>\n <div\n className=\"rounded-[12px] overflow-hidden border border-solid\"\n style={{ borderColor: \"var(--border)\" }}\n >\n {[\n {\n col: \"Level\",\n desc: \"Hierarchy depth (1\\u20134). 1 = Account, 2 = Department, 3 = Business Unit, 4 = Team\",\n },\n {\n col: \"Type\",\n desc: \"Node type: Account, Department, Business Unit, or Team\",\n },\n {\n col: \"Name\",\n desc: \"Display name for the node (must be unique within parent)\",\n },\n { col: \"Description\", desc: \"Brief description of the node\\u2019s purpose\" },\n { col: \"Admin\", desc: \"Email address of the designated admin\" },\n {\n col: \"Parent Name\",\n desc: \"Name of the parent node (leave empty for Level 1)\",\n },\n ].map((item, idx, arr) => (\n <div\n key={item.col}\n className=\"flex gap-[12px] items-start px-[12px] py-[8px] relative\"\n style={{ backgroundColor: \"var(--card)\" }}\n >\n <span\n className=\"shrink-0 w-[90px]\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--foreground)\",\n }}\n >\n {item.col}\n </span>\n <span\n className=\"flex-1\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {item.desc}\n </span>\n {idx < arr.length - 1 && (\n <div\n className=\"absolute bottom-0 left-0 right-0 h-px\"\n style={{ backgroundColor: \"var(--border)\" }}\n />\n )}\n </div>\n ))}\n </div>\n </div>\n\n {/* Drop zone */}\n <div\n onDrop={handleDrop}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n className=\"flex flex-col items-center justify-center gap-[16px] p-[40px] rounded-[16px] border-2 border-dashed transition-colors cursor-pointer\"\n style={{\n borderColor: isDragOver ? \"var(--primary)\" : \"var(--border)\",\n backgroundColor: isDragOver ? \"var(--muted)\" : \"transparent\",\n }}\n onClick={handleBrowseClick}\n >\n <div\n className=\"flex items-center justify-center size-[56px] rounded-full\"\n style={{ backgroundColor: \"var(--muted)\" }}\n >\n <UploadCloud\n className=\"size-[24px]\"\n style={{ color: \"var(--muted-foreground)\" }}\n />\n </div>\n <div className=\"flex flex-col items-center gap-[4px]\">\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n Drag & drop your file here\n </p>\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n or\n </p>\n </div>\n <button\n onClick={(e) => {\n e.stopPropagation();\n handleBrowseClick();\n }}\n className=\"flex items-center justify-center px-[24px] py-[8px] rounded-[9999px] cursor-pointer transition-colors border border-solid\"\n style={{\n backgroundColor: \"var(--card)\",\n borderColor: \"var(--border)\",\n color: \"var(--foreground)\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"var(--card)\")}\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n }}\n >\n Browse Files\n </span>\n </button>\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n Supports .xlsx, .xls, .csv (max 5MB)\n </p>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\".xlsx,.xls,.csv\"\n className=\"hidden\"\n onChange={handleInputChange}\n />\n </div>\n\n {/* Uploaded file preview */}\n {uploadedFile && (\n <div\n className=\"flex items-center gap-[12px] px-[16px] py-[12px] rounded-[12px] border border-solid\"\n style={{ backgroundColor: \"var(--muted)\", borderColor: \"var(--border)\" }}\n >\n <div\n className=\"flex items-center justify-center size-[40px] rounded-[10px] shrink-0\"\n style={{ backgroundColor: \"var(--badge-success-bg)\" }}\n >\n <FileSpreadsheet\n className=\"size-[20px]\"\n style={{ color: \"var(--badge-success-text)\" }}\n />\n </div>\n <div className=\"flex-1 flex flex-col min-w-0\">\n <span\n className=\"truncate\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n {uploadedFile.name}\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {formatFileSize(uploadedFile.size)}\n </span>\n </div>\n <button\n onClick={() => setUploadedFile(null)}\n className=\"flex items-center justify-center size-[28px] rounded-[6px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--badge-danger-bg)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n aria-label=\"Remove file\"\n >\n <X className=\"size-[14px]\" style={{ color: \"var(--destructive)\" }} />\n </button>\n </div>\n )}\n </div>\n )}\n\n {/* ──────── Step 2: Analyzing ──────── */}\n {step === \"analyzing\" && (\n <div className=\"flex flex-col items-center justify-center gap-[32px] py-[60px]\">\n <div\n className=\"flex items-center justify-center size-[64px] rounded-full\"\n style={{ backgroundColor: \"var(--muted)\" }}\n >\n <RefreshCw\n className=\"size-[28px] animate-spin\"\n style={{ color: \"var(--primary)\", animationDuration: \"1.5s\" }}\n />\n </div>\n <div className=\"flex flex-col items-center gap-[8px] w-full\">\n <p\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-xl)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Analyzing Structure...\n </p>\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n textAlign: \"center\",\n }}\n >\n Validating hierarchy levels, parent references, naming conflicts, and required\n fields.\n </p>\n </div>\n <div className=\"w-full max-w-[320px] flex flex-col gap-[8px]\">\n <div\n className=\"w-full h-[6px] rounded-[9999px] overflow-hidden\"\n style={{ backgroundColor: \"var(--muted)\" }}\n >\n <div\n className=\"h-full rounded-[9999px] transition-all duration-300\"\n style={{\n backgroundColor: \"var(--primary)\",\n width: `${Math.min(progress, 100)}%`,\n }}\n />\n </div>\n <p\n className=\"text-center\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {Math.min(Math.round(progress), 100)}% complete\n </p>\n </div>\n </div>\n )}\n\n {/* ──────── Step 3a: Errors Found ──────── */}\n {step === \"errors\" && (\n <div className=\"flex flex-col gap-[20px]\">\n <div\n className=\"flex items-center gap-[12px] px-[16px] py-[12px] rounded-[12px]\"\n style={{ backgroundColor: \"var(--badge-danger-bg)\" }}\n >\n <AlertTriangle\n className=\"size-[18px] shrink-0\"\n style={{ color: \"var(--badge-danger-text)\" }}\n />\n <div className=\"flex flex-col\">\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--badge-danger-text)\",\n }}\n >\n {parseErrors.length} error{parseErrors.length !== 1 ? \"s\" : \"\"} found in{\" \"}\n {totalDataRows} rows\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--badge-danger-text)\",\n opacity: 0.8,\n }}\n >\n Please fix the errors below and re-upload the file.\n </span>\n </div>\n </div>\n {validRowCount > 0 && (\n <div\n className=\"flex items-center gap-[12px] px-[16px] py-[12px] rounded-[12px]\"\n style={{ backgroundColor: \"var(--badge-success-bg)\" }}\n >\n <CheckCircle2\n className=\"size-[18px] shrink-0\"\n style={{ color: \"var(--badge-success-text)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--badge-success-text)\",\n }}\n >\n {validRowCount} valid row{validRowCount !== 1 ? \"s\" : \"\"} ready to import\n </span>\n </div>\n )}\n\n {/* Error Table */}\n <div\n className=\"rounded-[16px] overflow-hidden border border-solid\"\n style={{ borderColor: \"var(--border)\" }}\n >\n <table className=\"w-full border-collapse\">\n <thead>\n <tr>\n {[\"Row\", \"Column\", \"Error Type\", \"Value\"].map((header) => (\n <th\n key={header}\n className=\"relative px-[12px] py-[10px] text-left\"\n style={{ backgroundColor: \"var(--glass-heavy)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--foreground)\",\n }}\n >\n {header}\n </span>\n <div\n className=\"absolute bottom-0 left-0 right-0 h-px\"\n style={{ backgroundColor: \"var(--border)\" }}\n />\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {parseErrors.map((err, idx) => (\n <tr key={idx}>\n <td\n className=\"relative px-[12px] py-[10px]\"\n style={{ backgroundColor: \"var(--card)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--foreground)\",\n }}\n >\n {err.row}\n </span>\n {idx < parseErrors.length - 1 && (\n <div\n className=\"absolute bottom-0 left-0 right-0 h-px\"\n style={{ backgroundColor: \"var(--border)\" }}\n />\n )}\n </td>\n <td\n className=\"relative px-[12px] py-[10px]\"\n style={{ backgroundColor: \"var(--card)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--foreground)\",\n }}\n >\n {err.column}\n </span>\n {idx < parseErrors.length - 1 && (\n <div\n className=\"absolute bottom-0 left-0 right-0 h-px\"\n style={{ backgroundColor: \"var(--border)\" }}\n />\n )}\n </td>\n <td\n className=\"relative px-[12px] py-[10px]\"\n style={{ backgroundColor: \"var(--card)\" }}\n >\n <div\n className=\"inline-flex items-center px-[6px] py-[1px] rounded-[6px]\"\n style={{\n backgroundColor:\n err.type === \"Missing Required Field\"\n ? \"var(--badge-warning-bg)\"\n : err.type === \"Invalid Hierarchy\"\n ? \"var(--badge-info-bg)\"\n : err.type === \"Duplicate Entry\"\n ? \"var(--badge-info-bg)\"\n : \"var(--badge-danger-bg)\",\n }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"11px\",\n fontWeight: \"600\",\n lineHeight: \"16px\",\n color:\n err.type === \"Missing Required Field\"\n ? \"var(--badge-warning-text)\"\n : err.type === \"Invalid Hierarchy\"\n ? \"var(--badge-info-text)\"\n : err.type === \"Duplicate Entry\"\n ? \"var(--badge-info-text)\"\n : \"var(--badge-danger-text)\",\n }}\n >\n {err.type}\n </span>\n </div>\n {idx < parseErrors.length - 1 && (\n <div\n className=\"absolute bottom-0 left-0 right-0 h-px\"\n style={{ backgroundColor: \"var(--border)\" }}\n />\n )}\n </td>\n <td\n className=\"relative px-[12px] py-[10px]\"\n style={{ backgroundColor: \"var(--card)\" }}\n >\n <code\n className=\"px-[6px] py-[2px] rounded-[4px]\"\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"11px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"16px\",\n color: \"var(--destructive)\",\n backgroundColor: \"var(--muted)\",\n }}\n >\n {err.value}\n </code>\n {idx < parseErrors.length - 1 && (\n <div\n className=\"absolute bottom-0 left-0 right-0 h-px\"\n style={{ backgroundColor: \"var(--border)\" }}\n />\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n )}\n\n {/* ──────── Step 3b: Success ──────── */}\n {step === \"success\" && (\n <div className=\"flex flex-col items-center justify-center gap-[24px] py-[60px]\">\n <div\n className=\"flex items-center justify-center size-[64px] rounded-full\"\n style={{ backgroundColor: \"var(--badge-success-bg)\" }}\n >\n <CheckCircle2\n className=\"size-[32px]\"\n style={{ color: \"var(--badge-success-text)\" }}\n />\n </div>\n <div className=\"flex flex-col items-center gap-[8px]\">\n <p\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-xl)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Structure Validated Successfully\n </p>\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n textAlign: \"center\",\n }}\n >\n All {summary.total} nodes are valid and ready to be imported into the project\n hierarchy.\n </p>\n </div>\n <div\n className=\"w-full rounded-[12px] border border-solid overflow-hidden\"\n style={{ borderColor: \"var(--border)\" }}\n >\n {[\n { label: \"Total Nodes\", value: String(summary.total) },\n { label: \"Accounts\", value: String(summary.accounts) },\n { label: \"Departments\", value: String(summary.departments) },\n { label: \"Business Units\", value: String(summary.bus) },\n { label: \"Teams\", value: String(summary.teams) },\n {\n label: \"Max Depth\",\n value: `${summary.maxDepth} level${summary.maxDepth !== 1 ? \"s\" : \"\"}`,\n },\n { label: \"Errors\", value: \"0\" },\n ].map((item, idx, arr) => (\n <div\n key={item.label}\n className=\"flex items-center justify-between px-[16px] py-[10px] relative\"\n style={{ backgroundColor: \"var(--card)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {item.label}\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color:\n item.label === \"Errors\"\n ? \"var(--badge-success-text)\"\n : \"var(--foreground)\",\n }}\n >\n {item.value}\n </span>\n {idx < arr.length - 1 && (\n <div\n className=\"absolute bottom-0 left-0 right-0 h-px\"\n style={{ backgroundColor: \"var(--border)\" }}\n />\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* ──────── Step 4: Confirmed ──────── */}\n {step === \"confirmed\" && (\n <div className=\"flex flex-col items-center justify-center gap-[24px] py-[60px]\">\n <div\n className=\"flex items-center justify-center size-[64px] rounded-full\"\n style={{ backgroundColor: \"var(--badge-success-bg)\" }}\n >\n <CheckCircle2\n className=\"size-[32px]\"\n style={{ color: \"var(--badge-success-text)\" }}\n />\n </div>\n <div className=\"flex flex-col items-center gap-[8px]\">\n <p\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-xl)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Structure Successfully Imported\n </p>\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n textAlign: \"center\",\n }}\n >\n {summary.total} nodes have been added to the project hierarchy. You can now view\n and manage them in the tree view.\n </p>\n </div>\n </div>\n )}\n </div>\n </div>\n\n {/* ── Footer ── */}\n <div className=\"shrink-0 px-[24px] py-[16px]\">\n <div\n className={`grid gap-[8px] w-full ${step !== \"confirmed\" ? \"grid-cols-2\" : \"grid-cols-1\"}`}\n >\n {/* Cancel / Re-upload (left button) — hidden on confirmed */}\n {step !== \"confirmed\" && (\n <div\n className=\"relative rounded-[9999px]\"\n style={{ border: \"1px solid var(--ring)\" }}\n >\n <button\n onClick={\n step === \"errors\"\n ? () => {\n setUploadedFile(null);\n setParseErrors([]);\n setStep(\"upload\");\n }\n : onClose\n }\n className=\"flex items-center justify-center w-full px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n {step === \"errors\" ? \"Re-upload\" : \"Back\"}\n </span>\n </button>\n </div>\n )}\n\n {/* Primary action (right button) */}\n <button\n className=\"flex items-center justify-center gap-[8px] w-full px-[32px] py-[12px] rounded-[9999px] transition-opacity cursor-pointer\"\n style={{\n backgroundColor: \"var(--primary)\",\n opacity: (step === \"upload\" && !uploadedFile) || step === \"analyzing\" ? 0.5 : 1,\n }}\n disabled={(step === \"upload\" && !uploadedFile) || step === \"analyzing\"}\n onClick={() => {\n if (step === \"upload\" && uploadedFile) setStep(\"analyzing\");\n else if (step === \"errors\") {\n /* download error report — placeholder */\n } else if (step === \"success\") handleConfirmImport();\n else if (step === \"confirmed\") onClose();\n }}\n onMouseEnter={(e) => {\n if (!((step === \"upload\" && !uploadedFile) || step === \"analyzing\"))\n e.currentTarget.style.opacity = \"0.9\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity =\n (step === \"upload\" && !uploadedFile) || step === \"analyzing\" ? \"0.5\" : \"1\";\n }}\n >\n {(step === \"success\" || step === \"confirmed\") && (\n <CheckCircle2\n className=\"size-[16px]\"\n style={{ color: \"var(--primary-foreground)\" }}\n />\n )}\n {step === \"errors\" && (\n <Download className=\"size-[16px]\" style={{ color: \"var(--primary-foreground)\" }} />\n )}\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--primary-foreground)\",\n }}\n >\n {step === \"upload\"\n ? \"Upload & Validate\"\n : step === \"analyzing\"\n ? \"Validating...\"\n : step === \"errors\"\n ? \"Download Error Report\"\n : step === \"success\"\n ? \"Confirm Import\"\n : \"Done\"}\n </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import { Skeleton } from \"../../primitives/Skeleton\";\n\n// ─── Table Row Skeleton ────────────────────────────────────────────────────────\n// Mimics a data table row with avatar + 3 text columns + action cell.\n// Usage: render 4–6 of these while data is loading in UsersPage / RolesPage.\nexport function TableRowSkeleton() {\n return (\n <div\n className=\"flex items-center gap-[16px] px-[16px] py-[12px] w-full\"\n style={{ borderBottom: \"1px solid var(--border)\" }}\n >\n {/* Avatar */}\n <Skeleton className=\"size-[32px] rounded-full shrink-0\" />\n {/* Name col */}\n <Skeleton className=\"h-[14px] w-[140px] rounded-sm\" />\n {/* Email col */}\n <Skeleton className=\"h-[14px] flex-1 max-w-[220px] rounded-sm\" />\n {/* Badge col */}\n <Skeleton className=\"h-[22px] w-[72px] rounded-full\" />\n {/* Action col */}\n <Skeleton className=\"h-[14px] w-[60px] rounded-sm ml-auto\" />\n </div>\n );\n}\n\n// ─── Card Skeleton ─────────────────────────────────────────────────────────────\n// Mimics a SoftwareCard / ResourceTile while loading.\n// Usage: render inside the same grid that normally holds real cards.\nexport function CardSkeleton() {\n return (\n <div\n className=\"flex flex-col gap-[14px] p-[24px] rounded-[24px] w-full\"\n style={{ backgroundColor: \"var(--tile-bg)\" }}\n >\n {/* Icon */}\n <Skeleton className=\"size-[32px] rounded-[8px] shrink-0\" />\n {/* Title */}\n <Skeleton className=\"h-[22px] w-3/4 rounded-sm\" />\n {/* Description — 3 lines */}\n <div className=\"flex flex-col gap-[8px]\">\n <Skeleton className=\"h-[14px] w-full rounded-sm\" />\n <Skeleton className=\"h-[14px] w-5/6 rounded-sm\" />\n <Skeleton className=\"h-[14px] w-2/3 rounded-sm\" />\n </div>\n {/* CTA button */}\n <Skeleton className=\"h-[36px] w-[100px] rounded-full mt-2\" />\n </div>\n );\n}\n\n// ─── User List Item Skeleton ───────────────────────────────────────────────────\n// Mimics a user list item in invite drawers or user panels.\n// Usage: render 3–5 of these while a user search result is loading.\nexport function UserListItemSkeleton() {\n return (\n <div className=\"flex items-center gap-[12px] px-[12px] py-[10px] w-full\">\n {/* Avatar */}\n <Skeleton className=\"size-[36px] rounded-full shrink-0\" />\n <div className=\"flex flex-col gap-[6px] flex-1 min-w-0\">\n {/* Name */}\n <Skeleton className=\"h-[13px] w-[120px] rounded-sm\" />\n {/* Email */}\n <Skeleton className=\"h-[12px] w-[180px] rounded-sm\" />\n </div>\n {/* Role badge */}\n <Skeleton className=\"h-[22px] w-[64px] rounded-full shrink-0\" />\n </div>\n );\n}\n\n// ─── Page Header Skeleton ──────────────────────────────────────────────────────\n// Mimics a page title + subtitle while the page data loads.\nexport function PageHeaderSkeleton() {\n return (\n <div className=\"flex flex-col gap-[10px]\">\n <Skeleton className=\"h-[30px] w-[260px] rounded-sm\" />\n <Skeleton className=\"h-[16px] w-[400px] rounded-sm\" />\n </div>\n );\n}\n","import { CheckCircle, ChevronDown, Pencil, Plus, Save, Search, Trash2, X } from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { IconButton } from \"../IconButton\";\n\n/* ─── Types ──────────────────────────────────────────────── */\ninterface UserData {\n id: string;\n name: string;\n email: string;\n platform: string;\n status: string;\n statusVariant: \"pending\" | \"active\" | \"inactive\" | \"invited\";\n requestedBy: string;\n requestDate: string;\n}\n\ninterface ViewEditUserDrawerProps {\n isOpen: boolean;\n onClose: () => void;\n user: UserData | null;\n onSave?: (user: UserData) => void;\n}\n\ninterface AssignmentRow {\n id: string;\n projectId: string;\n rolesByPlatform: Record<string, string>;\n}\n\n/* ─── Mock Data ──────────────────────────────────────────── */\nconst AVAILABLE_PLATFORMS = [\"Bodhi\", \"Slingshot\", \"Sustain\"];\n\nconst MOCK_PROJECTS = [\n { id: \"proj-1\", name: \"Stellar Solutions\" },\n { id: \"proj-2\", name: \"Quantum Analytics\" },\n { id: \"proj-3\", name: \"Nova Platform\" },\n { id: \"proj-4\", name: \"Apex Dashboard\" },\n { id: \"proj-5\", name: \"Meridian Core\" },\n { id: \"proj-6\", name: \"Phoenix Rebuild\" },\n { id: \"proj-7\", name: \"Atlas Infrastructure\" },\n { id: \"proj-8\", name: \"Horizon Mobile\" },\n];\n\nconst PLATFORM_ROLES: Record<string, string[]> = {\n Bodhi: [\"Admin\", \"Editor\", \"Viewer\", \"Contributor\"],\n Slingshot: [\"Project Manager\", \"Developer\", \"Analyst\", \"Reviewer\"],\n Sustain: [\"Operator\", \"Auditor\", \"Reporter\", \"Coordinator\"],\n ECS: [\"Admin\", \"Manager\", \"Operator\", \"Viewer\"],\n};\n\nconst ALWAYS_PRESENT_PLATFORMS = [\"ECS\"];\n\nconst STATUS_OPTIONS = [\"Active\", \"Inactive\", \"Invited\", \"Pending\"];\n\n/* ─── Mock user assignments (pre-filled data for existing users) ── */\nconst MOCK_USER_ASSIGNMENTS: Record<string, AssignmentRow[]> = {\n \"1\": [{ id: \"row-1\", projectId: \"proj-1\", rolesByPlatform: { Bodhi: \"Viewer\", ECS: \"Viewer\" } }],\n \"2\": [\n {\n id: \"row-1\",\n projectId: \"proj-2\",\n rolesByPlatform: { Slingshot: \"Developer\", ECS: \"Manager\" },\n },\n {\n id: \"row-2\",\n projectId: \"proj-3\",\n rolesByPlatform: { Slingshot: \"Analyst\", ECS: \"Operator\" },\n },\n ],\n \"3\": [\n { id: \"row-1\", projectId: \"proj-1\", rolesByPlatform: { Sustain: \"Operator\", ECS: \"Admin\" } },\n ],\n \"4\": [{ id: \"row-1\", projectId: \"proj-4\", rolesByPlatform: { Bodhi: \"Editor\", ECS: \"Viewer\" } }],\n \"5\": [\n {\n id: \"row-1\",\n projectId: \"proj-5\",\n rolesByPlatform: { Slingshot: \"Project Manager\", ECS: \"Manager\" },\n },\n ],\n};\n\n/* ─── Shared styles ──────────────────────────────────────── */\nconst labelStyle: React.CSSProperties = {\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n};\n\nconst bodyStyle: React.CSSProperties = {\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n};\n\n/* ─── Checkbox SVG ───────────────────────────────────────── */\nfunction CheckboxIcon({ checked }: { checked: boolean }) {\n return (\n <div className=\"flex items-center shrink-0\">\n <div className=\"relative shrink-0 size-[16px]\">\n <svg className=\"block size-full\" fill=\"none\" viewBox=\"0 0 16 16\">\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width=\"15\"\n height=\"15\"\n rx=\"3.5\"\n fill={checked ? \"var(--primary)\" : \"var(--input-background)\"}\n stroke={checked ? \"var(--primary)\" : \"var(--border)\"}\n />\n {checked && (\n <path\n d=\"M12 5L6.5 10.5L4 8\"\n stroke=\"var(--primary-foreground)\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n )}\n </svg>\n </div>\n </div>\n );\n}\n\n/* ─── Portaled Dropdown Menu ─────────────────────────────── */\nfunction PortaledDropdown({\n anchorRef,\n open,\n children,\n minWidth,\n}: {\n anchorRef: React.RefObject<HTMLElement | null>;\n open: boolean;\n children: React.ReactNode;\n minWidth?: number;\n}) {\n const [pos, setPos] = useState({ top: 0, left: 0, width: 0 });\n\n useEffect(() => {\n if (open && anchorRef.current) {\n const rect = anchorRef.current.getBoundingClientRect();\n setPos({\n top: rect.bottom + 4,\n left: rect.left,\n width: Math.max(rect.width, minWidth || 0),\n });\n }\n }, [open, anchorRef, minWidth]);\n\n if (!open) return null;\n\n return createPortal(\n <div\n style={{\n position: \"fixed\",\n top: pos.top,\n left: pos.left,\n width: pos.width,\n zIndex: 99999,\n }}\n >\n {children}\n </div>,\n document.body,\n );\n}\n\n/* ─── Searchable Single-Select Dropdown ───────────────────── */\nfunction SearchableDropdown({\n value,\n options,\n placeholder,\n onChange,\n disabled,\n}: {\n value: string;\n options: { id: string; name: string }[];\n placeholder: string;\n onChange: (id: string) => void;\n disabled?: boolean;\n}) {\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState(\"\");\n const btnRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n const target = e.target as Node;\n if (\n btnRef.current &&\n !btnRef.current.contains(target) &&\n menuRef.current &&\n !menuRef.current.contains(target)\n ) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open]);\n\n const filtered = options.filter((o) => o.name.toLowerCase().includes(search.toLowerCase()));\n const selectedLabel = options.find((o) => o.id === value)?.name || \"\";\n\n return (\n <>\n <button\n ref={btnRef}\n onClick={() => {\n if (disabled) return;\n setOpen((p) => !p);\n setSearch(\"\");\n setTimeout(() => inputRef.current?.focus(), 50);\n }}\n className=\"flex items-center justify-between w-full min-h-[36px] px-[10px] py-[6px] rounded-[var(--radius)] cursor-pointer transition-colors\"\n style={{\n backgroundColor: \"var(--input-background)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: open ? \"var(--primary)\" : \"var(--border)\",\n opacity: disabled ? 0.6 : 1,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n }}\n >\n <span\n className=\"truncate\"\n style={{\n ...bodyStyle,\n fontSize: \"13px\",\n color: value ? \"var(--foreground)\" : \"var(--muted-foreground)\",\n }}\n >\n {selectedLabel || placeholder}\n </span>\n <ChevronDown\n className=\"size-[14px] shrink-0 transition-transform\"\n style={{\n color: \"var(--muted-foreground)\",\n transform: open ? \"rotate(180deg)\" : \"rotate(0deg)\",\n }}\n />\n </button>\n\n <PortaledDropdown anchorRef={btnRef} open={open} minWidth={200}>\n <div\n ref={menuRef}\n className=\"rounded-[var(--radius)] overflow-hidden flex flex-col\"\n style={{\n backgroundColor: \"var(--card)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"var(--border)\",\n boxShadow: \"0px 4px 16px rgba(0,0,0,0.12)\",\n maxHeight: \"220px\",\n }}\n >\n <div className=\"flex items-center gap-[8px] px-[10px] py-[8px] shrink-0 border-b border-[var(--border)]\">\n <Search className=\"size-[14px] shrink-0\" style={{ color: \"var(--muted-foreground)\" }} />\n <input\n ref={inputRef}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search...\"\n className=\"flex-1 outline-none bg-transparent min-w-0\"\n style={{ ...bodyStyle, fontSize: \"13px\" }}\n />\n </div>\n <div className=\"overflow-y-auto flex-1\">\n {filtered.length === 0 ? (\n <div className=\"px-[10px] py-[8px]\">\n <span style={{ ...bodyStyle, fontSize: \"13px\", color: \"var(--muted-foreground)\" }}>\n No results found\n </span>\n </div>\n ) : (\n filtered.map((opt) => (\n <button\n key={opt.id}\n onClick={() => {\n onChange(opt.id);\n setOpen(false);\n }}\n className=\"flex items-center w-full px-[10px] py-[8px] cursor-pointer transition-colors text-left\"\n style={{\n backgroundColor: opt.id === value ? \"var(--muted)\" : \"transparent\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor =\n opt.id === value ? \"var(--muted)\" : \"transparent\")\n }\n >\n <span style={{ ...bodyStyle, fontSize: \"13px\" }}>{opt.name}</span>\n </button>\n ))\n )}\n </div>\n </div>\n </PortaledDropdown>\n </>\n );\n}\n\n/* ─── Simple Single-Select Dropdown ──────────────────────── */\nfunction SimpleDropdown({\n value,\n options,\n placeholder,\n onChange,\n disabled,\n}: {\n value: string;\n options: string[];\n placeholder: string;\n onChange: (val: string) => void;\n disabled?: boolean;\n}) {\n const [open, setOpen] = useState(false);\n const btnRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n const target = e.target as Node;\n if (\n btnRef.current &&\n !btnRef.current.contains(target) &&\n menuRef.current &&\n !menuRef.current.contains(target)\n ) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open]);\n\n return (\n <>\n <button\n ref={btnRef}\n onClick={() => {\n if (disabled) return;\n setOpen((p) => !p);\n }}\n className=\"flex items-center justify-between w-full min-h-[36px] px-[10px] py-[6px] rounded-[var(--radius)] cursor-pointer transition-colors\"\n style={{\n backgroundColor: \"var(--input-background)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: open ? \"var(--primary)\" : \"var(--border)\",\n opacity: disabled ? 0.6 : 1,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n }}\n >\n <span\n className=\"truncate\"\n style={{\n ...bodyStyle,\n fontSize: \"13px\",\n color: value ? \"var(--foreground)\" : \"var(--muted-foreground)\",\n }}\n >\n {value || placeholder}\n </span>\n <ChevronDown\n className=\"size-[14px] shrink-0 transition-transform\"\n style={{\n color: \"var(--muted-foreground)\",\n transform: open ? \"rotate(180deg)\" : \"rotate(0deg)\",\n }}\n />\n </button>\n\n <PortaledDropdown anchorRef={btnRef} open={open}>\n <div\n ref={menuRef}\n className=\"rounded-[var(--radius)] overflow-hidden py-[4px]\"\n style={{\n backgroundColor: \"var(--card)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"var(--border)\",\n boxShadow: \"0px 4px 16px rgba(0,0,0,0.12)\",\n maxHeight: \"180px\",\n overflowY: \"auto\",\n }}\n >\n {options.map((opt) => (\n <button\n key={opt}\n onClick={() => {\n onChange(opt);\n setOpen(false);\n }}\n className=\"flex items-center w-full px-[12px] py-[8px] cursor-pointer transition-colors text-left\"\n style={{\n backgroundColor: opt === value ? \"var(--muted)\" : \"transparent\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor =\n opt === value ? \"var(--muted)\" : \"transparent\")\n }\n >\n <span style={{ ...bodyStyle, fontSize: \"13px\" }}>{opt}</span>\n </button>\n ))}\n </div>\n </PortaledDropdown>\n </>\n );\n}\n\n/* ─── Status Badge ───────────────────────────────────────── */\nfunction StatusBadge({ status, variant }: { status: string; variant: string }) {\n const variantMap: Record<string, string> = {\n pending: \"warning\",\n active: \"success\",\n inactive: \"danger\",\n invited: \"muted\",\n };\n const mapped = variantMap[variant] || \"muted\";\n return (\n <div\n className=\"relative inline-flex items-center justify-center px-[10px] py-[3px] rounded-[8px] shrink-0 w-fit\"\n style={{ backgroundColor: `var(--badge-${mapped}-bg)` }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"600\",\n lineHeight: \"16px\",\n color: `var(--badge-${mapped}-text)`,\n }}\n >\n {status}\n </span>\n </div>\n );\n}\n\n/* ═══════════════════════════════════════════════════════════\n View/Edit User Drawer\n ═══════════════════════════════════════════════════════════ */\nfunction createEmptyRow(platforms: string[]): AssignmentRow {\n const allPlatforms = [...new Set([...platforms, ...ALWAYS_PRESENT_PLATFORMS])];\n const rolesByPlatform: Record<string, string> = {};\n allPlatforms.forEach((p) => (rolesByPlatform[p] = \"\"));\n return {\n id: `row-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`,\n projectId: \"\",\n rolesByPlatform,\n };\n}\n\nexport function ViewEditUserDrawer({ isOpen, onClose, user, onSave }: ViewEditUserDrawerProps) {\n const [isAnimating, setIsAnimating] = useState(false);\n const [shouldRender, setShouldRender] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n\n // Editable fields\n const [editName, setEditName] = useState(\"\");\n const [editEmail, setEditEmail] = useState(\"\");\n const [editStatus, setEditStatus] = useState(\"\");\n const [editStatusVariant, setEditStatusVariant] = useState<string>(\"\");\n const [selectedPlatforms, setSelectedPlatforms] = useState<Set<string>>(new Set());\n const [platformDropdownOpen, setPlatformDropdownOpen] = useState(false);\n const platformRef = useRef<HTMLDivElement>(null);\n const [assignmentRows, setAssignmentRows] = useState<AssignmentRow[]>([]);\n\n // Toast\n const [shouldRenderToast, setShouldRenderToast] = useState(false);\n const [isToastAnimating, setIsToastAnimating] = useState(false);\n const toastTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const showSuccessToast = useCallback(() => {\n setShouldRenderToast(true);\n requestAnimationFrame(() => {\n requestAnimationFrame(() => setIsToastAnimating(true));\n });\n if (toastTimerRef.current) clearTimeout(toastTimerRef.current);\n toastTimerRef.current = setTimeout(() => dismissToast(), 6000);\n }, []);\n\n const dismissToast = useCallback(() => {\n setIsToastAnimating(false);\n if (toastTimerRef.current) clearTimeout(toastTimerRef.current);\n }, []);\n\n useEffect(() => {\n return () => {\n if (toastTimerRef.current) clearTimeout(toastTimerRef.current);\n };\n }, []);\n\n // Initialize data when user changes or drawer opens\n useEffect(() => {\n if (isOpen && user) {\n setEditName(user.name);\n setEditEmail(user.email);\n setEditStatus(user.status);\n setEditStatusVariant(user.statusVariant);\n setIsEditing(false);\n\n // Set platform from user data\n const platformList = user.platform\n .split(\",\")\n .map((p) => p.trim())\n .filter(Boolean);\n const platforms = new Set(platformList);\n setSelectedPlatforms(platforms);\n\n // Load mock assignments\n const mockRows = MOCK_USER_ASSIGNMENTS[user.id];\n if (mockRows) {\n setAssignmentRows(\n mockRows.map((r) => ({ ...r, rolesByPlatform: { ...r.rolesByPlatform } })),\n );\n } else {\n setAssignmentRows([createEmptyRow(platformList)]);\n }\n\n setShouldRender(true);\n requestAnimationFrame(() => {\n requestAnimationFrame(() => setIsAnimating(true));\n });\n } else if (!isOpen) {\n setIsAnimating(false);\n const timer = setTimeout(() => setShouldRender(false), 300);\n return () => clearTimeout(timer);\n }\n }, [isOpen, user]);\n\n // Escape key\n useEffect(() => {\n const handler = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && isOpen) onClose();\n };\n document.addEventListener(\"keydown\", handler);\n return () => document.removeEventListener(\"keydown\", handler);\n }, [isOpen, onClose]);\n\n // Close platform dropdown on outside click\n useEffect(() => {\n const handler = (e: MouseEvent) => {\n if (platformRef.current && !platformRef.current.contains(e.target as Node))\n setPlatformDropdownOpen(false);\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, []);\n\n const handleTogglePlatform = useCallback((platform: string) => {\n setSelectedPlatforms((prev) => {\n const next = new Set(prev);\n if (next.has(platform)) next.delete(platform);\n else next.add(platform);\n return next;\n });\n }, []);\n\n const activePlatforms = [\n ...new Set([...Array.from(selectedPlatforms), ...ALWAYS_PRESENT_PLATFORMS]),\n ];\n\n const handleUpdateRow = useCallback((id: string, updates: Partial<AssignmentRow>) => {\n setAssignmentRows((prev) => prev.map((r) => (r.id === id ? { ...r, ...updates } : r)));\n }, []);\n\n const handleRemoveRow = useCallback(\n (id: string) => {\n setAssignmentRows((prev) => {\n const next = prev.filter((r) => r.id !== id);\n return next.length === 0 ? [createEmptyRow(activePlatforms)] : next;\n });\n },\n [activePlatforms],\n );\n\n const handleAddRow = useCallback(() => {\n setAssignmentRows((prev) => [...prev, createEmptyRow(activePlatforms)]);\n }, [activePlatforms]);\n\n const handleSave = useCallback(() => {\n if (!user) return;\n const statusVariantMap: Record<string, string> = {\n Active: \"active\",\n Inactive: \"inactive\",\n Invited: \"invited\",\n Pending: \"pending\",\n };\n onSave?.({\n ...user,\n name: editName,\n email: editEmail,\n status: editStatus,\n statusVariant: (statusVariantMap[editStatus] || \"active\") as UserData[\"statusVariant\"],\n platform: Array.from(selectedPlatforms).join(\", \"),\n });\n setIsEditing(false);\n onClose();\n showSuccessToast();\n }, [user, editName, editEmail, editStatus, selectedPlatforms, onSave, onClose, showSuccessToast]);\n\n const handleCancel = useCallback(() => {\n if (user) {\n setEditName(user.name);\n setEditEmail(user.email);\n setEditStatus(user.status);\n setEditStatusVariant(user.statusVariant);\n const platformList = user.platform\n .split(\",\")\n .map((p) => p.trim())\n .filter(Boolean);\n setSelectedPlatforms(new Set(platformList));\n const mockRows = MOCK_USER_ASSIGNMENTS[user.id];\n if (mockRows) {\n setAssignmentRows(\n mockRows.map((r) => ({ ...r, rolesByPlatform: { ...r.rolesByPlatform } })),\n );\n }\n }\n setIsEditing(false);\n }, [user]);\n\n const projectOptions = MOCK_PROJECTS.map((p) => ({ id: p.id, name: p.name }));\n const viewColTemplate = `1.4fr ${activePlatforms.map(() => \"1fr\").join(\" \")}`;\n const editColTemplate = `1.4fr ${activePlatforms.map(() => \"1fr\").join(\" \")} 40px`;\n\n return (\n <>\n {/* ── Success Toast ── */}\n {shouldRenderToast && (\n <div\n className=\"fixed top-0 left-1/2 z-[60] px-[16px] pt-[88px]\"\n style={{\n width: \"400px\",\n maxWidth: \"calc(100vw - 32px)\",\n opacity: isToastAnimating ? 1 : 0,\n transform: isToastAnimating\n ? \"translateX(-50%) translateY(0)\"\n : \"translateX(-50%) translateY(-16px)\",\n transition:\n \"opacity 350ms cubic-bezier(0.16, 1, 0.3, 1), transform 350ms cubic-bezier(0.16, 1, 0.3, 1)\",\n }}\n onTransitionEnd={() => {\n if (!isToastAnimating) setShouldRenderToast(false);\n }}\n >\n <div\n className=\"flex items-center gap-[16px] px-[16px] py-[12px] rounded-[12px]\"\n style={{\n backgroundColor: \"var(--toast-success-bg)\",\n boxShadow: \"0px 6px 32px 0px rgba(23, 26, 28, 0.1)\",\n }}\n >\n <CheckCircle\n className=\"size-[20px] shrink-0\"\n style={{ color: \"var(--toast-success-title)\" }}\n />\n <div className=\"flex-1 flex flex-col gap-[4px] min-w-0\">\n <p\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--toast-success-title)\",\n }}\n >\n User updated successfully\n </p>\n <p\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"20px\",\n color: \"var(--toast-success-text)\",\n }}\n >\n Changes to {editName} have been saved\n </p>\n </div>\n <button\n onClick={() => dismissToast()}\n className=\"shrink-0 flex items-center justify-center w-[32px] h-[32px] rounded-[var(--radius)] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--toast-success-close-hover)\")\n }\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <X className=\"size-[16px]\" style={{ color: \"var(--toast-close-icon)\" }} />\n </button>\n </div>\n </div>\n )}\n\n {/* ── Drawer ── */}\n {shouldRender && user && (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-end overflow-clip transition-all duration-300\"\n style={{\n backdropFilter: isAnimating ? \"blur(5px)\" : \"blur(0px)\",\n backgroundColor: isAnimating ? \"rgba(31, 40, 50, 0.4)\" : \"rgba(31, 40, 50, 0)\",\n }}\n onClick={(e) => {\n if (e.target === e.currentTarget) onClose();\n }}\n >\n <div\n className=\"h-full shrink-0 flex flex-col drawer-panel rounded-tl-[16px] rounded-bl-[16px]\"\n style={{\n width: isEditing ? `${Math.min(560 + activePlatforms.length * 160, 960)}px` : \"560px\",\n maxWidth: \"92vw\",\n backgroundColor: \"var(--card)\",\n transform: isAnimating ? \"translateX(0)\" : \"translateX(100%)\",\n }}\n >\n {/* ── Header ── */}\n <div className=\"shrink-0 px-[24px] py-[16px]\">\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"flex items-center gap-[12px]\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-xl)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n {isEditing ? \"Edit User\" : \"User Details\"}\n </span>\n </div>\n <div className=\"flex items-center gap-[8px]\">\n <IconButton\n onClick={onClose}\n className=\"size-[28px] rounded-[var(--radius)] transition-colors cursor-pointer\"\n style={{ color: \"var(--muted-foreground)\" }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <X className=\"size-[16px]\" />\n </IconButton>\n </div>\n </div>\n </div>\n\n {/* ── Content ── */}\n <div className=\"flex-1 min-h-0 overflow-y-auto px-[24px] py-[8px]\">\n <div className=\"flex flex-col gap-[24px]\">\n {/* User Avatar & Status Header */}\n <div\n className=\"flex items-center gap-[16px] px-[16px] py-[16px] rounded-[12px]\"\n style={{ backgroundColor: \"var(--muted)\" }}\n >\n <div\n className=\"flex items-center justify-center size-[48px] rounded-full shrink-0\"\n style={{ backgroundColor: \"var(--primary)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-xl)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--primary-foreground)\",\n }}\n >\n {editName\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)}\n </span>\n </div>\n <div className=\"flex-1 flex flex-col gap-[2px] min-w-0\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n {editName}\n </span>\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--muted-foreground)\",\n }}\n >\n {editEmail}\n </span>\n </div>\n <StatusBadge status={editStatus} variant={editStatusVariant} />\n </div>\n\n {/* User Info Fields */}\n <div className=\"flex flex-col gap-[16px]\">\n {/* Status - only in edit mode */}\n {isEditing && (\n <div className=\"flex flex-col gap-[4px] w-full\">\n <label style={labelStyle}>\n <span className=\"flex items-center gap-[6px]\">Status</span>\n </label>\n <SimpleDropdown\n value={editStatus}\n options={STATUS_OPTIONS}\n placeholder=\"Select status...\"\n onChange={(val) => {\n setEditStatus(val);\n setEditStatusVariant(val.toLowerCase());\n }}\n />\n </div>\n )}\n\n {/* Platform */}\n <div className=\"flex flex-col gap-[4px] w-full\" ref={platformRef}>\n <label style={labelStyle}>Platform</label>\n {isEditing ? (\n <div className=\"relative\">\n <div\n onClick={() => setPlatformDropdownOpen((p) => !p)}\n className=\"flex items-center justify-between w-full min-h-[40px] px-[12px] py-[8px] rounded-[12px] cursor-pointer transition-colors\"\n style={{\n backgroundColor: \"var(--input-background)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: platformDropdownOpen ? \"var(--primary)\" : \"var(--border)\",\n }}\n >\n <div className=\"flex-1 flex flex-wrap gap-[4px] items-center min-w-0\">\n {selectedPlatforms.size > 0 ? (\n Array.from(selectedPlatforms).map((p) => (\n <span\n key={p}\n className=\"inline-flex items-center gap-[4px] px-[8px] py-[1px] rounded-[6px] shrink-0\"\n style={{\n backgroundColor: \"var(--muted)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"var(--border)\",\n }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"18px\",\n color: \"var(--foreground)\",\n }}\n >\n {p}\n </span>\n <span\n role=\"button\"\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation();\n handleTogglePlatform(p);\n }}\n className=\"flex items-center justify-center size-[12px] rounded-full cursor-pointer\"\n style={{ color: \"var(--muted-foreground)\" }}\n >\n <X className=\"size-[10px]\" />\n </span>\n </span>\n ))\n ) : (\n <span style={{ ...bodyStyle, color: \"var(--muted-foreground)\" }}>\n Select platforms...\n </span>\n )}\n </div>\n <ChevronDown\n className=\"size-[16px] shrink-0 transition-transform ml-[8px]\"\n style={{\n color: \"var(--muted-foreground)\",\n transform: platformDropdownOpen ? \"rotate(180deg)\" : \"rotate(0deg)\",\n }}\n />\n </div>\n\n {platformDropdownOpen && (\n <div\n className=\"absolute top-[calc(100%+4px)] left-0 right-0 z-10 rounded-[12px] overflow-hidden py-[4px]\"\n style={{\n backgroundColor: \"var(--card)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"var(--border)\",\n boxShadow: \"0px 4px 16px rgba(0,0,0,0.08)\",\n }}\n >\n {AVAILABLE_PLATFORMS.map((platform) => {\n const isSelected = selectedPlatforms.has(platform);\n return (\n <button\n key={platform}\n onClick={() => handleTogglePlatform(platform)}\n className=\"flex items-center gap-[12px] w-full px-[16px] py-[10px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--muted)\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor = \"transparent\")\n }\n >\n <CheckboxIcon checked={isSelected} />\n <span className=\"flex-1 text-left\" style={bodyStyle}>\n {platform}\n </span>\n </button>\n );\n })}\n </div>\n )}\n </div>\n ) : (\n <div\n className=\"w-full min-h-[40px] px-[12px] py-[8px] rounded-[12px] flex flex-wrap items-center gap-[4px]\"\n style={{ backgroundColor: \"var(--muted)\" }}\n >\n {Array.from(selectedPlatforms).map((p) => (\n <span\n key={p}\n className=\"inline-flex items-center px-[8px] py-[2px] rounded-[6px]\"\n style={{ backgroundColor: \"var(--badge-info-bg)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"18px\",\n color: \"var(--badge-info-text)\",\n }}\n >\n {p}\n </span>\n </span>\n ))}\n </div>\n )}\n </div>\n </div>\n\n {/* ── Divider ── */}\n <div style={{ height: \"1px\", backgroundColor: \"var(--border)\" }} />\n\n {/* ── Assignments Section ── */}\n <div className=\"flex flex-col gap-[12px]\">\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Project & Role Assignments\n </span>\n\n {/* Assignment Table */}\n <div\n className=\"w-full rounded-[12px] overflow-visible\"\n style={{\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"var(--border)\",\n }}\n >\n {/* Header */}\n <div\n className=\"grid items-center px-[12px] py-[10px] border-b border-[var(--border)] rounded-t-[12px]\"\n style={{\n gridTemplateColumns: isEditing ? editColTemplate : viewColTemplate,\n backgroundColor: \"var(--muted)\",\n }}\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n paddingRight: \"8px\",\n }}\n >\n Project\n </span>\n {activePlatforms.map((p) => (\n <span\n key={p}\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"12px\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"16px\",\n color: \"var(--muted-foreground)\",\n paddingLeft: \"8px\",\n paddingRight: \"8px\",\n }}\n >\n {p} Role\n </span>\n ))}\n {isEditing && <span />}\n </div>\n\n {/* Rows */}\n {assignmentRows.map((row, idx) => (\n <div\n key={row.id}\n className={`grid items-start px-[12px] py-[10px] ${idx < assignmentRows.length - 1 ? \"border-b border-[var(--border)]\" : \"\"}`}\n style={{\n gridTemplateColumns: isEditing ? editColTemplate : viewColTemplate,\n backgroundColor: \"var(--input-background)\",\n borderBottomLeftRadius:\n idx === assignmentRows.length - 1 ? \"12px\" : undefined,\n borderBottomRightRadius:\n idx === assignmentRows.length - 1 ? \"12px\" : undefined,\n }}\n >\n <div style={{ paddingRight: \"8px\", position: \"relative\" }}>\n {isEditing ? (\n <SearchableDropdown\n value={row.projectId}\n options={projectOptions}\n placeholder=\"Select project...\"\n onChange={(id) => handleUpdateRow(row.id, { projectId: id })}\n />\n ) : (\n <div className=\"flex items-center min-h-[36px] px-[10px] py-[6px]\">\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"13px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n {MOCK_PROJECTS.find((p) => p.id === row.projectId)?.name || \"—\"}\n </span>\n </div>\n )}\n </div>\n\n {activePlatforms.map((platform) => (\n <div\n key={platform}\n style={{\n paddingLeft: \"8px\",\n paddingRight: \"8px\",\n position: \"relative\",\n }}\n >\n {isEditing ? (\n <SimpleDropdown\n value={row.rolesByPlatform[platform] || \"\"}\n options={PLATFORM_ROLES[platform] || []}\n placeholder=\"Select role...\"\n onChange={(role) =>\n handleUpdateRow(row.id, {\n rolesByPlatform: { ...row.rolesByPlatform, [platform]: role },\n })\n }\n />\n ) : (\n <div className=\"flex items-center min-h-[36px] px-[10px] py-[6px]\">\n <span\n style={{\n fontFamily: \"var(--font-body)\",\n fontSize: \"13px\",\n fontWeight: \"var(--font-weight-normal)\",\n lineHeight: \"20px\",\n color: \"var(--foreground)\",\n }}\n >\n {row.rolesByPlatform[platform] || \"—\"}\n </span>\n </div>\n )}\n </div>\n ))}\n\n {isEditing && (\n <div className=\"flex items-center justify-center pt-[6px]\">\n {assignmentRows.length > 1 && (\n <IconButton variant=\"danger\" onClick={() => handleRemoveRow(row.id)}>\n <Trash2 className=\"size-full\" />\n </IconButton>\n )}\n </div>\n )}\n </div>\n ))}\n </div>\n\n {/* Add row (edit mode only) */}\n {isEditing && (\n <button\n onClick={handleAddRow}\n className=\"flex gap-[8px] items-center justify-center min-h-[40px] px-[24px] py-[10px] rounded-[9999px] cursor-pointer transition-colors self-start\"\n style={{\n backgroundColor: \"transparent\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"var(--ring)\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = \"var(--muted)\")}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = \"transparent\")}\n >\n <Plus className=\"size-[16px]\" style={{ color: \"var(--foreground)\" }} />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n whiteSpace: \"nowrap\",\n }}\n >\n Add Another Assignment\n </span>\n </button>\n )}\n </div>\n </div>\n </div>\n\n {/* ── Footer ── */}\n <div className=\"shrink-0 px-[24px] py-[16px]\">\n <div className=\"flex gap-[8px] items-start justify-end w-full\">\n {isEditing ? (\n <>\n <div\n className=\"relative flex-1 rounded-[9999px]\"\n style={{\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"var(--ring)\",\n }}\n >\n <button\n onClick={handleCancel}\n className=\"flex items-center justify-center w-full px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--muted)\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor = \"transparent\")\n }\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Cancel\n </span>\n </button>\n </div>\n <div className=\"flex-1\">\n <button\n onClick={handleSave}\n className=\"flex items-center justify-center gap-[8px] w-full px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-opacity\"\n style={{\n backgroundColor: \"var(--primary)\",\n color: \"var(--primary-foreground)\",\n }}\n >\n <Save className=\"size-[16px]\" />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n }}\n >\n Save Changes\n </span>\n </button>\n </div>\n </>\n ) : (\n <>\n <div\n className=\"relative flex-1 rounded-[9999px]\"\n style={{\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"var(--ring)\",\n }}\n >\n <button\n onClick={onClose}\n className=\"flex items-center justify-center w-full px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-colors\"\n style={{ backgroundColor: \"transparent\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.backgroundColor = \"var(--muted)\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.backgroundColor = \"transparent\")\n }\n >\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n color: \"var(--foreground)\",\n }}\n >\n Close\n </span>\n </button>\n </div>\n <div className=\"flex-1\">\n <button\n onClick={() => setIsEditing(true)}\n className=\"flex items-center justify-center gap-[8px] w-full px-[32px] py-[12px] rounded-[9999px] cursor-pointer transition-opacity\"\n style={{\n backgroundColor: \"var(--primary)\",\n color: \"var(--primary-foreground)\",\n }}\n >\n <Pencil className=\"size-[16px]\" />\n <span\n style={{\n fontFamily: \"var(--font-heading)\",\n fontSize: \"var(--text-base)\",\n fontWeight: \"var(--font-weight-medium)\",\n lineHeight: \"24px\",\n }}\n >\n Edit\n </span>\n </button>\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n </div>\n )}\n </>\n );\n}\n"],"mappings":";;;;;;;AAAA,IAAA,yBAAe;CACb,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,UACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WAAW;CACX,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,UACE;CACF,WACE;CACF,UACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;AACJ;;;AC5LA,IAAA,yBAAe;CACb,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,UACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WAAW;CACX,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,UACE;CACF,WACE;CACF,UACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WAAW;CACX,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,WACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;CACF,UACE;AACJ;;;AC/KA,SAAS,UAAU;CACjB,OACE,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,OAAD;GAAK,WAAU;aACb,oBAAC,OAAD;IACE,WAAU;IACV,MAAK;IACL,qBAAoB;IACpB,SAAQ;cAER,qBAAC,KAAD,EAAA,UAAA,CACE,oBAAC,QAAD;KAAM,GAAGA,uBAAe;KAAU,MAAK;IAA6B,CAAA,GACpE,oBAAC,QAAD;KAAM,GAAGA,uBAAe;KAAW,MAAK;IAA6B,CAAA,CACpE,EAAA,CAAA;GACA,CAAA;EACF,CAAA;CACF,CAAA;AAET;AAGA,SAAS,gBAAgB;CACvB,OACE,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,OAAD;GAAK,WAAU;aACb,oBAAC,OAAD;IACE,WAAU;IACV,MAAK;IACL,qBAAoB;IACpB,SAAQ;cAE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"}
|