@etus/ui 0.4.0-beta.17 → 0.4.0-beta.18
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/dist/{chunk-U6EOAIPK.js → chunk-2X35C55E.js} +3 -3
- package/dist/chunk-2X35C55E.js.map +1 -0
- package/dist/{chunk-UYC7M3FM.js → chunk-34WNJNPL.js} +5 -5
- package/dist/{chunk-UYC7M3FM.js.map → chunk-34WNJNPL.js.map} +1 -1
- package/dist/{chunk-N4UTBJRY.js → chunk-3NHH7VPI.js} +3 -3
- package/dist/{chunk-N4UTBJRY.js.map → chunk-3NHH7VPI.js.map} +1 -1
- package/dist/{chunk-OEXQ2MOY.js → chunk-45YJLE4R.js} +3 -3
- package/dist/{chunk-OEXQ2MOY.js.map → chunk-45YJLE4R.js.map} +1 -1
- package/dist/{chunk-66TBTTZO.js → chunk-46SUPGQV.js} +14 -14
- package/dist/chunk-46SUPGQV.js.map +1 -0
- package/dist/{chunk-3W7FXRO5.js → chunk-56TC4CPT.js} +4 -4
- package/dist/{chunk-3W7FXRO5.js.map → chunk-56TC4CPT.js.map} +1 -1
- package/dist/{chunk-NCT5WXKG.js → chunk-5ACHKT35.js} +3 -3
- package/dist/{chunk-NCT5WXKG.js.map → chunk-5ACHKT35.js.map} +1 -1
- package/dist/{chunk-GGUWEAYD.js → chunk-5E44I7PB.js} +3 -3
- package/dist/{chunk-GGUWEAYD.js.map → chunk-5E44I7PB.js.map} +1 -1
- package/dist/{chunk-T6XRYT6Q.js → chunk-5K2SOCOX.js} +3 -3
- package/dist/{chunk-T6XRYT6Q.js.map → chunk-5K2SOCOX.js.map} +1 -1
- package/dist/{chunk-VT4IMHGE.js → chunk-5TABQJDW.js} +4 -4
- package/dist/chunk-5TABQJDW.js.map +1 -0
- package/dist/{chunk-4GVOOXYD.js → chunk-6ABGMOE2.js} +5 -5
- package/dist/chunk-6ABGMOE2.js.map +1 -0
- package/dist/{chunk-Q43KJP5A.js → chunk-6F5NWXZF.js} +7 -7
- package/dist/{chunk-Q43KJP5A.js.map → chunk-6F5NWXZF.js.map} +1 -1
- package/dist/{chunk-4RSHPKHB.js → chunk-6KMRMXR6.js} +3 -3
- package/dist/{chunk-4RSHPKHB.js.map → chunk-6KMRMXR6.js.map} +1 -1
- package/dist/{chunk-7J5OM4ZD.js → chunk-7CMOCWFX.js} +4 -4
- package/dist/{chunk-7J5OM4ZD.js.map → chunk-7CMOCWFX.js.map} +1 -1
- package/dist/{chunk-G7PBPX3K.js → chunk-7VGF6ZVE.js} +4 -4
- package/dist/{chunk-G7PBPX3K.js.map → chunk-7VGF6ZVE.js.map} +1 -1
- package/dist/{chunk-E2TI5V67.js → chunk-A4O3USMA.js} +3 -3
- package/dist/{chunk-E2TI5V67.js.map → chunk-A4O3USMA.js.map} +1 -1
- package/dist/{chunk-UPK5B2FL.js → chunk-AKRVZ2YW.js} +6 -6
- package/dist/chunk-AKRVZ2YW.js.map +1 -0
- package/dist/{chunk-VBJ26PZJ.js → chunk-AP3T3KMY.js} +3 -3
- package/dist/{chunk-VBJ26PZJ.js.map → chunk-AP3T3KMY.js.map} +1 -1
- package/dist/{chunk-X3AXEE3S.js → chunk-AR7K7Y4L.js} +3 -3
- package/dist/{chunk-X3AXEE3S.js.map → chunk-AR7K7Y4L.js.map} +1 -1
- package/dist/{chunk-WKWLKGNI.js → chunk-ARYBNQNS.js} +4 -4
- package/dist/chunk-ARYBNQNS.js.map +1 -0
- package/dist/{chunk-P27ERD6W.js → chunk-B2OCNHUW.js} +8 -8
- package/dist/{chunk-P27ERD6W.js.map → chunk-B2OCNHUW.js.map} +1 -1
- package/dist/{chunk-3NLWCX2F.js → chunk-DI3AISAZ.js} +3 -3
- package/dist/{chunk-3NLWCX2F.js.map → chunk-DI3AISAZ.js.map} +1 -1
- package/dist/{chunk-W3JVNX35.js → chunk-DSCLJ3GK.js} +4 -4
- package/dist/{chunk-W3JVNX35.js.map → chunk-DSCLJ3GK.js.map} +1 -1
- package/dist/{chunk-3KOLK3OB.js → chunk-EC5YEK3C.js} +3 -3
- package/dist/{chunk-3KOLK3OB.js.map → chunk-EC5YEK3C.js.map} +1 -1
- package/dist/{chunk-YUHPTV2A.js → chunk-EDSDAX56.js} +3 -3
- package/dist/{chunk-YUHPTV2A.js.map → chunk-EDSDAX56.js.map} +1 -1
- package/dist/{chunk-IRIIK3BU.js → chunk-F4EX3622.js} +10 -10
- package/dist/chunk-F4EX3622.js.map +1 -0
- package/dist/{chunk-XYYOV5GW.js → chunk-F5X2BBGU.js} +4 -4
- package/dist/{chunk-XYYOV5GW.js.map → chunk-F5X2BBGU.js.map} +1 -1
- package/dist/{chunk-BS5XDYOE.js → chunk-FLERVSKG.js} +5 -5
- package/dist/{chunk-BS5XDYOE.js.map → chunk-FLERVSKG.js.map} +1 -1
- package/dist/{chunk-TAZPML2P.js → chunk-G2CMEHW6.js} +3 -3
- package/dist/{chunk-TAZPML2P.js.map → chunk-G2CMEHW6.js.map} +1 -1
- package/dist/{chunk-TQBUBD3E.js → chunk-H7JHFBFD.js} +3 -3
- package/dist/{chunk-TQBUBD3E.js.map → chunk-H7JHFBFD.js.map} +1 -1
- package/dist/{chunk-Y4RKKQMB.js → chunk-HA5YVDHW.js} +3 -3
- package/dist/chunk-HA5YVDHW.js.map +1 -0
- package/dist/{chunk-ZKK7L7H7.js → chunk-HP7LEQJR.js} +3 -3
- package/dist/{chunk-ZKK7L7H7.js.map → chunk-HP7LEQJR.js.map} +1 -1
- package/dist/{chunk-W7S7GPU5.js → chunk-HV2ZZXFN.js} +4 -4
- package/dist/{chunk-W7S7GPU5.js.map → chunk-HV2ZZXFN.js.map} +1 -1
- package/dist/{chunk-K45MMHLA.js → chunk-HVFACGNK.js} +4 -4
- package/dist/{chunk-K45MMHLA.js.map → chunk-HVFACGNK.js.map} +1 -1
- package/dist/{chunk-R3HUGCGR.js → chunk-HZ47LQFJ.js} +4 -4
- package/dist/{chunk-R3HUGCGR.js.map → chunk-HZ47LQFJ.js.map} +1 -1
- package/dist/{chunk-4KOJTZVU.js → chunk-IA24GUNV.js} +25 -25
- package/dist/chunk-IA24GUNV.js.map +1 -0
- package/dist/{chunk-D6TH3EGA.js → chunk-IQKKPOI7.js} +4 -4
- package/dist/{chunk-D6TH3EGA.js.map → chunk-IQKKPOI7.js.map} +1 -1
- package/dist/{chunk-WXBC3D2N.js → chunk-IRFAIJLV.js} +4 -4
- package/dist/{chunk-WXBC3D2N.js.map → chunk-IRFAIJLV.js.map} +1 -1
- package/dist/{chunk-SXPBKGLT.js → chunk-J62NPPDO.js} +3 -3
- package/dist/{chunk-SXPBKGLT.js.map → chunk-J62NPPDO.js.map} +1 -1
- package/dist/{chunk-TNDW52VZ.js → chunk-JDG5A44W.js} +20 -13
- package/dist/chunk-JDG5A44W.js.map +1 -0
- package/dist/{chunk-Z4KW5VW6.js → chunk-JRVUEOKT.js} +5 -5
- package/dist/{chunk-Z4KW5VW6.js.map → chunk-JRVUEOKT.js.map} +1 -1
- package/dist/{chunk-NXQ25PKF.js → chunk-K43MPWTO.js} +7 -7
- package/dist/chunk-K43MPWTO.js.map +1 -0
- package/dist/{chunk-2ROFZG3A.js → chunk-KA7747GR.js} +3 -3
- package/dist/{chunk-2ROFZG3A.js.map → chunk-KA7747GR.js.map} +1 -1
- package/dist/{chunk-OBRJXVWO.js → chunk-KYURFRCH.js} +4 -4
- package/dist/{chunk-OBRJXVWO.js.map → chunk-KYURFRCH.js.map} +1 -1
- package/dist/{chunk-EYSTEGV5.js → chunk-LR56MGWT.js} +7 -7
- package/dist/{chunk-EYSTEGV5.js.map → chunk-LR56MGWT.js.map} +1 -1
- package/dist/{chunk-6ZAMTPGN.js → chunk-M6VBDPNQ.js} +3 -3
- package/dist/{chunk-6ZAMTPGN.js.map → chunk-M6VBDPNQ.js.map} +1 -1
- package/dist/{chunk-JPA2VQRW.js → chunk-MAM5PTRV.js} +3 -3
- package/dist/{chunk-JPA2VQRW.js.map → chunk-MAM5PTRV.js.map} +1 -1
- package/dist/{chunk-3L5G7VI2.js → chunk-MAM6VUKD.js} +3 -3
- package/dist/chunk-MAM6VUKD.js.map +1 -0
- package/dist/{chunk-LLI3JFJL.js → chunk-MLSIZ6JU.js} +4 -4
- package/dist/{chunk-LLI3JFJL.js.map → chunk-MLSIZ6JU.js.map} +1 -1
- package/dist/{chunk-U2R47SPY.js → chunk-NULX3RRN.js} +4 -4
- package/dist/{chunk-U2R47SPY.js.map → chunk-NULX3RRN.js.map} +1 -1
- package/dist/{chunk-GL56KIFL.js → chunk-OG3M4CMJ.js} +3 -3
- package/dist/{chunk-GL56KIFL.js.map → chunk-OG3M4CMJ.js.map} +1 -1
- package/dist/{chunk-7EGN7IGY.js → chunk-OR3NPCY2.js} +3 -3
- package/dist/{chunk-7EGN7IGY.js.map → chunk-OR3NPCY2.js.map} +1 -1
- package/dist/{chunk-5I7AXWJU.js → chunk-PGRMKSVA.js} +4 -4
- package/dist/{chunk-5I7AXWJU.js.map → chunk-PGRMKSVA.js.map} +1 -1
- package/dist/{chunk-VZZ3HP7G.js → chunk-PM344VOQ.js} +3 -3
- package/dist/{chunk-VZZ3HP7G.js.map → chunk-PM344VOQ.js.map} +1 -1
- package/dist/{chunk-46ESMCEQ.js → chunk-QBLU7J34.js} +5 -5
- package/dist/chunk-QBLU7J34.js.map +1 -0
- package/dist/{chunk-U74PNG4S.js → chunk-SMVH56FQ.js} +3 -3
- package/dist/{chunk-U74PNG4S.js.map → chunk-SMVH56FQ.js.map} +1 -1
- package/dist/{chunk-DYDXGWH2.js → chunk-T3LWBCVR.js} +4 -4
- package/dist/chunk-T3LWBCVR.js.map +1 -0
- package/dist/{chunk-ZP4HYVDG.js → chunk-TA4HCLP3.js} +3 -3
- package/dist/{chunk-ZP4HYVDG.js.map → chunk-TA4HCLP3.js.map} +1 -1
- package/dist/{chunk-7HT32DZG.js → chunk-TGLALXPU.js} +3 -3
- package/dist/{chunk-7HT32DZG.js.map → chunk-TGLALXPU.js.map} +1 -1
- package/dist/{chunk-5GE3BQA7.js → chunk-USPITOG4.js} +5 -5
- package/dist/chunk-USPITOG4.js.map +1 -0
- package/dist/{chunk-XLTSCY22.js → chunk-UYPYAOET.js} +4 -4
- package/dist/chunk-UYPYAOET.js.map +1 -0
- package/dist/{chunk-P7D6S6GX.js → chunk-V7O4X3AE.js} +38 -4
- package/dist/chunk-V7O4X3AE.js.map +1 -0
- package/dist/{chunk-2YSZPUQZ.js → chunk-VTDSGJ4R.js} +3 -3
- package/dist/{chunk-2YSZPUQZ.js.map → chunk-VTDSGJ4R.js.map} +1 -1
- package/dist/{chunk-4Y72SPNL.js → chunk-VUHJTTPV.js} +4 -4
- package/dist/chunk-VUHJTTPV.js.map +1 -0
- package/dist/{chunk-VLDAHAG6.js → chunk-VV6QE3M2.js} +4 -4
- package/dist/{chunk-VLDAHAG6.js.map → chunk-VV6QE3M2.js.map} +1 -1
- package/dist/{chunk-H5N3VPBG.js → chunk-WBERMEN7.js} +3 -3
- package/dist/{chunk-H5N3VPBG.js.map → chunk-WBERMEN7.js.map} +1 -1
- package/dist/{chunk-OXDWUKGP.js → chunk-WCMRVCIM.js} +4 -4
- package/dist/chunk-WCMRVCIM.js.map +1 -0
- package/dist/{chunk-IFHF4UES.js → chunk-WQI2USN7.js} +11 -11
- package/dist/chunk-WQI2USN7.js.map +1 -0
- package/dist/{chunk-CKD4UBV6.js → chunk-WVFQKBDB.js} +3 -3
- package/dist/{chunk-CKD4UBV6.js.map → chunk-WVFQKBDB.js.map} +1 -1
- package/dist/{chunk-3NSIUZGP.js → chunk-WZ2J4ALB.js} +3 -3
- package/dist/{chunk-3NSIUZGP.js.map → chunk-WZ2J4ALB.js.map} +1 -1
- package/dist/{chunk-7TF5PVEU.js → chunk-X5XP5QVO.js} +5 -5
- package/dist/chunk-X5XP5QVO.js.map +1 -0
- package/dist/{chunk-7Y2UQMX6.js → chunk-XKO6G5H2.js} +36 -36
- package/dist/chunk-XKO6G5H2.js.map +1 -0
- package/dist/{chunk-SUU3HNOX.js → chunk-XORDGKZI.js} +4 -4
- package/dist/{chunk-SUU3HNOX.js.map → chunk-XORDGKZI.js.map} +1 -1
- package/dist/{chunk-VAVE4ZJF.js → chunk-YGLD22TU.js} +3 -3
- package/dist/chunk-YGLD22TU.js.map +1 -0
- package/dist/{chunk-XOGMDABS.js → chunk-ZHUW6UYD.js} +8 -8
- package/dist/chunk-ZHUW6UYD.js.map +1 -0
- package/dist/{chunk-PWCMCMDN.js → chunk-ZMUUEXVD.js} +3 -3
- package/dist/{chunk-PWCMCMDN.js.map → chunk-ZMUUEXVD.js.map} +1 -1
- package/dist/components/advanced/Calendar/index.js +5 -5
- package/dist/components/advanced/EventCalendar/index.js +5 -5
- package/dist/components/advanced/FilterBuilder/index.js +7 -7
- package/dist/components/advanced/MarkdownEditor/index.js +2 -2
- package/dist/components/advanced/ReportBuilder/index.js +4 -4
- package/dist/components/advanced/RichTextEditor/index.js +2 -2
- package/dist/components/advanced/index.js +16 -16
- package/dist/components/data-display/Callout/index.js +1 -1
- package/dist/components/data-display/Carousel/index.js +5 -5
- package/dist/components/data-display/ChartCard/index.js +2 -2
- package/dist/components/data-display/DataTable/FilterBuilder/index.js +7 -7
- package/dist/components/data-display/DataTable/index.js +10 -10
- package/dist/components/data-display/ImageGallery/index.js +6 -6
- package/dist/components/data-display/Item/index.js +2 -2
- package/dist/components/data-display/KPICard/index.js +3 -3
- package/dist/components/data-display/List/index.js +2 -2
- package/dist/components/data-display/SingleStat/index.js +1 -1
- package/dist/components/data-display/index.js +31 -31
- package/dist/components/feedback/AlertDialog/index.js +5 -5
- package/dist/components/feedback/ConfirmModal/index.js +6 -6
- package/dist/components/feedback/Modal/index.js +1 -1
- package/dist/components/feedback/UpdatesWidget/index.js +1 -1
- package/dist/components/feedback/index.js +10 -10
- package/dist/components/forms/ColorPicker/index.js +1 -1
- package/dist/components/forms/Combobox/index.js +1 -1
- package/dist/components/forms/DatePicker/index.js +6 -6
- package/dist/components/forms/DateRangePicker/index.js +6 -6
- package/dist/components/forms/EmailInput/index.js +3 -3
- package/dist/components/forms/Field/index.js +3 -3
- package/dist/components/forms/Form/index.js +2 -2
- package/dist/components/forms/InputGroup/index.js +8 -8
- package/dist/components/forms/InputOTPField/index.js +4 -4
- package/dist/components/forms/NativeSelect/index.js +1 -1
- package/dist/components/forms/NumberInput/index.js +2 -2
- package/dist/components/forms/PasswordInput/index.js +3 -3
- package/dist/components/forms/PaymentInput/index.js +1 -1
- package/dist/components/forms/PhoneInput/index.js +1 -1
- package/dist/components/forms/RadioButton/index.js +1 -1
- package/dist/components/forms/SearchInput/index.js +3 -3
- package/dist/components/forms/Slider/index.js +1 -1
- package/dist/components/forms/TagsInput/index.js +2 -2
- package/dist/components/forms/TextInput/index.js +2 -2
- package/dist/components/forms/Textarea/index.js +1 -1
- package/dist/components/forms/TextareaField/index.js +5 -5
- package/dist/components/forms/URLInput/index.js +3 -3
- package/dist/components/forms/index.js +33 -33
- package/dist/components/index.js +132 -132
- package/dist/components/layout/Card/index.js +1 -1
- package/dist/components/layout/Section/index.js +1 -1
- package/dist/components/layout/index.js +6 -6
- package/dist/components/navigation/AccountSwitch/index.js +3 -3
- package/dist/components/navigation/ContextMenu/index.js +1 -1
- package/dist/components/navigation/DropdownMenu/index.js +1 -1
- package/dist/components/navigation/FileTree/index.js +1 -1
- package/dist/components/navigation/Menu/index.js +1 -1
- package/dist/components/navigation/Menubar/index.js +1 -1
- package/dist/components/navigation/Navbar/index.js +1 -1
- package/dist/components/navigation/Pagination/index.js +5 -5
- package/dist/components/navigation/Sidebar/index.js +7 -7
- package/dist/components/navigation/Toolbar/index.js +1 -1
- package/dist/components/navigation/index.js +20 -20
- package/dist/components/primitives/Badge/index.js +1 -1
- package/dist/components/primitives/Button/index.js +4 -4
- package/dist/components/primitives/ButtonGroup/index.js +2 -2
- package/dist/components/primitives/ConfirmButton/index.js +6 -6
- package/dist/components/primitives/Divider/index.js +1 -1
- package/dist/components/primitives/FolderStack/index.js +1 -1
- package/dist/components/primitives/Image/index.js +1 -1
- package/dist/components/primitives/Label/index.js +1 -1
- package/dist/components/primitives/SplitButton/index.js +2 -2
- package/dist/components/primitives/StatusIndicator/index.js +1 -1
- package/dist/components/primitives/Tag/index.js +1 -1
- package/dist/components/primitives/Thumbnail/index.js +2 -2
- package/dist/components/primitives/index.js +19 -19
- package/dist/components/workflow/ApprovalFlow/index.js +5 -5
- package/dist/components/workflow/CommentSystem/index.js +6 -6
- package/dist/components/workflow/Dashboard/index.js +5 -5
- package/dist/components/workflow/DashboardBuilder/index.js +8 -8
- package/dist/components/workflow/KanbanBoard/index.js +5 -5
- package/dist/components/workflow/ReportGenerator/index.js +6 -6
- package/dist/components/workflow/Stepper/index.js +1 -1
- package/dist/components/workflow/TaskStatus/index.js +2 -2
- package/dist/components/workflow/Wizard/index.js +6 -6
- package/dist/components/workflow/index.js +19 -19
- package/dist/index.d.ts +8 -1
- package/dist/index.js +132 -132
- package/dist/styles.css +27 -703
- package/package.json +2 -2
- package/dist/chunk-3L5G7VI2.js.map +0 -1
- package/dist/chunk-46ESMCEQ.js.map +0 -1
- package/dist/chunk-4GVOOXYD.js.map +0 -1
- package/dist/chunk-4KOJTZVU.js.map +0 -1
- package/dist/chunk-4Y72SPNL.js.map +0 -1
- package/dist/chunk-5GE3BQA7.js.map +0 -1
- package/dist/chunk-66TBTTZO.js.map +0 -1
- package/dist/chunk-7TF5PVEU.js.map +0 -1
- package/dist/chunk-7Y2UQMX6.js.map +0 -1
- package/dist/chunk-DYDXGWH2.js.map +0 -1
- package/dist/chunk-IFHF4UES.js.map +0 -1
- package/dist/chunk-IRIIK3BU.js.map +0 -1
- package/dist/chunk-NXQ25PKF.js.map +0 -1
- package/dist/chunk-OXDWUKGP.js.map +0 -1
- package/dist/chunk-P7D6S6GX.js.map +0 -1
- package/dist/chunk-TNDW52VZ.js.map +0 -1
- package/dist/chunk-U6EOAIPK.js.map +0 -1
- package/dist/chunk-UPK5B2FL.js.map +0 -1
- package/dist/chunk-VAVE4ZJF.js.map +0 -1
- package/dist/chunk-VT4IMHGE.js.map +0 -1
- package/dist/chunk-WKWLKGNI.js.map +0 -1
- package/dist/chunk-XLTSCY22.js.map +0 -1
- package/dist/chunk-XOGMDABS.js.map +0 -1
- package/dist/chunk-Y4RKKQMB.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/workflow/ApprovalFlow/ApprovalFlow.variants.ts","../src/components/workflow/ApprovalFlow/ApprovalFlow.tsx"],"names":[],"mappings":";;;;;;;;AAKO,IAAM,oBAAA,GAAuB,GAAA;AAAA,EAClC,oEAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,MAAA,EAAQ,EAAA;AAAA,QACR,QAAA,EAAU,EAAA;AAAA,QACV,WAAA,EAAa,EAAA;AAAA,QACb,MAAA,EAAQ;AAAA,OACV;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,UAAA,EAAY,qCAAA;AAAA,QACZ,QAAA,EAAU,qBAAA;AAAA,QACV,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,QAAA;AAAA,MACT,MAAA,EAAQ;AAAA;AACV;AAEJ;AAKO,IAAM,wBAAA,GAA2B,GAAA;AAAA,EACtC,+IAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,UAAA,EAAY,sCAAA;AAAA,QACZ,QAAA,EAAU,gBAAA;AAAA,QACV,OAAA,EAAS;AAAA,OACX;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,WAAA,EAAa,EAAA;AAAA,QACb,QAAA,EAAU,EAAA;AAAA,QACV,QAAA,EAAU,EAAA;AAAA,QACV,QAAA,EAAU,EAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,QACX,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ,YAAA;AAAA,MACR,MAAA,EAAQ;AAAA;AACV;AAEJ;AAKO,IAAM,0BAAA,GAA6B,GAAA;AAAA,EACxC,6FAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,2DAAA;AAAA,QACT,WAAA,EACE,iEAAA;AAAA,QACF,QAAA,EAAU,mDAAA;AAAA,QACV,QAAA,EAAU,mDAAA;AAAA,QACV,QAAA,EAAU,+DAAA;AAAA,QACV,SAAA,EAAW,mDAAA;AAAA,QACX,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,iBAAA;AAAA,QACJ,OAAA,EAAS,mBAAA;AAAA,QACT,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAM;AAAA;AACR;AAEJ;AAKO,IAAM,6BAAA,GAAgC,GAAA;AAAA,EAC3C,gCAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,UAAA,EAAY,uBAAA;AAAA,QACZ,QAAA,EAAU,qBAAA;AAAA,QACV,OAAA,EAAS;AAAA,OACX;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,wBAAA;AAAA,QACT,WAAA,EAAa,eAAA;AAAA,QACb,QAAA,EAAU,eAAA;AAAA,QACV,QAAA,EAAU,YAAA;AAAA,QACV,QAAA,EAAU,mBAAA;AAAA,QACV,SAAA,EAAW,eAAA;AAAA,QACX,OAAA,EAAS;AAAA,OACX;AAAA,MACA,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,EAAA;AAAA,QACP,MAAA,EAAQ;AAAA;AACV,KACF;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB;AAAA,QACE,MAAA,EAAQ,YAAA;AAAA,QACR,KAAA,EAAO,QAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,MAAA,EAAQ,UAAA;AAAA,QACR,KAAA,EAAO,QAAA;AAAA,QACP,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,MAAA,EAAQ,SAAA;AAAA,QACR,KAAA,EAAO,QAAA;AAAA,QACP,SAAA,EAAW;AAAA;AACb,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ,YAAA;AAAA,MACR,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO;AAAA;AACT;AAEJ;AAKO,IAAM,4BAAA,GAA+B,GAAA;AAAA,EAC1C,iEAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,cAAA;AAAA,QACT,WAAA,EAAa,iDAAA;AAAA,QACb,QAAA,EAAU,0BAAA;AAAA,QACV,QAAA,EAAU,gCAAA;AAAA,QACV,QAAA,EAAU,wCAAA;AAAA,QACV,SAAA,EAAW,gCAAA;AAAA,QACX,OAAA,EAAS;AAAA,OACX;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,UAAA,EAAY,iBAAA;AAAA,QACZ,QAAA,EAAU,QAAA;AAAA,QACV,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ,SAAA;AAAA,MACR,MAAA,EAAQ;AAAA;AACV;AAEJ;AAKO,IAAM,2BAAA,GAA8B,GAAA;AAAA,EACzC,4CAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,UAAA,EAAY,+BAAA;AAAA,QACZ,QAAA,EAAU,WAAA;AAAA,QACV,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,aAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ,YAAA;AAAA,MACR,OAAA,EAAS;AAAA;AACX;AAEJ;AC1JA,SAAS,YAAY,IAAA,EAAsB;AACzC,EAAA,OAAO,KACJ,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,SAAS,IAAA,CAAK,CAAC,CAAC,CAAA,CACrB,KAAK,EAAE,CAAA,CACP,aAAY,CACZ,KAAA,CAAM,GAAG,CAAC,CAAA;AACf;AAKA,SAAS,cAAc,MAAA,EAAuC;AAC5D,EAAA,QAAQ,MAAA;AAAQ,IACd,KAAK,UAAA;AACH,MAAA,uBAAO,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,IACpC,KAAK,UAAA;AACH,MAAA,uBAAO,GAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,IAChC,KAAK,aAAA;AAAA,IACL,KAAK,UAAA;AACH,MAAA,uBAAO,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,IACpC,KAAK,WAAA;AACH,MAAA,uBAAO,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,IACzC,KAAK,SAAA;AACH,MAAA,uBAAO,GAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,IACtC;AACE,MAAA,OAAO,IAAA;AAAA;AAEb;AAKA,SAAS,eAAe,MAAA,EAAoC;AAC1D,EAAA,MAAM,MAAA,GAA6C;AAAA,IACjD,OAAA,EAAS,SAAA;AAAA,IACT,WAAA,EAAa,aAAA;AAAA,IACb,QAAA,EAAU,mBAAA;AAAA,IACV,QAAA,EAAU,UAAA;AAAA,IACV,QAAA,EAAU,UAAA;AAAA,IACV,SAAA,EAAW,WAAA;AAAA,IACX,OAAA,EAAS;AAAA,GACX;AACA,EAAA,OAAO,OAAO,MAAM,CAAA;AACtB;AAKA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,KAAA;AAAA,EACA,MAAA,GAAS;AACX,CAAA,EAGG;AACD,EAAA,MAAM,IAAA,GAAO,cAAc,MAAM,CAAA;AAEjC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAW,0BAAA,CAA2B,EAAE,MAAA,EAAQ,CAAA;AAAA,MAChD,WAAA,EAAU,sBAAA;AAAA,MACV,aAAA,EAAa,MAAA;AAAA,MAEZ,kCACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAe,kBAAQ,CAAA,EAAE;AAAA;AAAA,GAE7C;AAEJ;AAKA,SAAS,qBAAA,CAAsB;AAAA,EAC7B,MAAA,GAAS,YAAA;AAAA,EACT,MAAA,GAAS,SAAA;AAAA,EACT,aAAA,GAAgB;AAClB,CAAA,EAIG;AACD,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,6BAAA,CAA8B;AAAA,QACvC,MAAA;AAAA,QACA,MAAA;AAAA,QACA,KAAA,EAAO,gBAAgB,QAAA,GAAW;AAAA,OACnC,CAAA;AAAA,MACD,aAAA,EAAY,MAAA;AAAA,MACZ,WAAA,EAAU;AAAA;AAAA,GACZ;AAEJ;AAKA,SAAS,cAAA,CAAe,EAAE,QAAA,EAAS,EAA2B;AAC5D,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAA0B,OAAO,CAAA,EAAG,QAAA,CAAS,IAAI,CAAA,EAAA,EAAK,SAAS,IAAI,CAAA,CAAA,CAAA,EAChF,QAAA,kBAAA,IAAA,CAAC,MAAA,EAAA,EAAO,MAAK,IAAA,EACV,QAAA,EAAA;AAAA,IAAA,QAAA,CAAS,MAAA,uBACP,WAAA,EAAA,EAAY,GAAA,EAAK,SAAS,IAAA,EAAM,GAAA,EAAK,QAAA,CAAS,MAAA,EAAQ,CAAA,GACrD,IAAA;AAAA,oBACJ,GAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,WAAA,CAAY,QAAA,CAAS,IAAI,CAAA,EAAE;AAAA,GAAA,EAC9C,CAAA,EACF,CAAA;AAEJ;AAKA,SAAS,uBAAA,CAAwB;AAAA,EAC/B,IAAA;AAAA,EACA,MAAA,GAAS;AACX,CAAA,EAGG;AACD,EAAA,MAAM,kBAAA,GAAqB,IAAA,CAAK,SAAA,CAAU,MAAA,GAAS,CAAA;AACnD,EAAA,MAAM,gBAAA,GAAmB,qBACrB,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA,EAAG,CAAC,IACzB,IAAA,CAAK,SAAA;AAET,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,4BAAA,CAA6B,EAAE,QAAQ,IAAA,CAAK,MAAA,EAAQ,QAAQ,CAAA;AAAA,MACvE,WAAA,EAAU,yBAAA;AAAA,MAEV,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,aAAU,0BAAA,EACb,QAAA,kBAAA,GAAA,CAAC,UAAK,SAAA,EAAU,qCAAA,EACb,QAAA,EAAA,IAAA,CAAK,KAAA,EACR,CAAA,EACF,CAAA;AAAA,QAEC,IAAA,CAAK,WAAA,oBACJ,GAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,gCAAA,EACb,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EACb,QAAA,EAAA,IAAA,CAAK,WAAA,EACR,CAAA,EACF,CAAA;AAAA,QAGD,IAAA,CAAK,SAAA,CAAU,MAAA,GAAS,CAAA,oBACvB,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,yBAAA;AAAA,YACV,WAAA,EAAU,8BAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACZ,QAAA,EAAA,gBAAA,CAAiB,GAAA,CAAI,CAAC,QAAA,qBACrB,GAAA,CAAC,cAAA,EAAA,EAAiC,QAAA,EAAA,EAAb,QAAA,CAAS,EAAwB,CACvD,CAAA,EACH,CAAA;AAAA,cACC,kBAAA,oBACC,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oCAAA,EAAqC,QAAA,EAAA;AAAA,gBAAA,GAAA;AAAA,gBACjD,IAAA,CAAK,UAAU,MAAA,GAAS,CAAA;AAAA,gBAAE;AAAA,eAAA,EAC9B;AAAA;AAAA;AAAA,SAEJ;AAAA,QAGD,IAAA,CAAK,iBAAA,IAAqB,IAAA,CAAK,iBAAA,GAAoB,CAAA,oBAClD,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,+BAAA;AAAA,YACV,WAAA,EAAU,6BAAA;AAAA,YACX,QAAA,EAAA;AAAA,cAAA,WAAA;AAAA,cACW,IAAA,CAAK,iBAAA;AAAA,cAAkB,MAAA;AAAA,cAAK,KAAK,SAAA,CAAU,MAAA;AAAA,cAAO;AAAA;AAAA;AAAA,SAC9D;AAAA,QAGD,KAAK,QAAA,oBACJ,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,uDAAA;AAAA,YACV,WAAA,EAAU,6BAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,KAAA,EAAA,EAAM,WAAU,SAAA,EAAU,CAAA;AAAA,mCAC1B,MAAA,EAAA,EAAK,QAAA,EAAA;AAAA,gBAAA,OAAA;AAAA,gBAAM,IAAA,CAAK,SAAS,kBAAA;AAAmB,eAAA,EAAE;AAAA;AAAA;AAAA;AACjD,OAAA,EAEJ;AAAA;AAAA,GACF;AAEJ;AAKA,SAAS,gBAAA,CAAiB;AAAA,EACxB,IAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA,GAAgB,IAAA;AAAA,EAChB,MAAA,GAAS,YAAA;AAAA,EACT,QAAA,GAAW,KAAA;AAAA,EACX,eAAA,GAAkB,IAAA;AAAA,EAClB,eAAA,GAAkB,IAAA;AAAA,EAClB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0B;AACxB,EAAA,MAAM,SAAS,KAAA,EAAM;AACrB,EAAA,MAAM,WAAA,GAAc,cAAA,CAAe,IAAA,CAAK,MAAM,CAAA;AAE9C,EAAA,MAAM,mBAAmB,MAAA,IAAU,YAAA;AACnC,EAAA,MAAM,MAAA,GACJ,aACA,CAAC,QAAA,KACA,KAAK,MAAA,KAAW,aAAA,IAAiB,KAAK,MAAA,KAAW,UAAA,CAAA;AAEpD,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyC;AAC9D,IAAA,MAAM,SAAS,KAAA,CAAM,aAAA;AACrB,IAAA,MAAM,SAAS,MAAA,CAAO,aAAA;AACtB,IAAA,IAAI,CAAC,MAAA,EAAQ;AAEb,IAAA,MAAM,QAAA,GAAW;AAAA,MACf,GAAG,MAAA,CAAO,gBAAA,CAAiB,kCAAkC;AAAA,KAC/D;AACA,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,OAAA,CAAQ,MAAM,CAAA;AAE5C,IAAA,IAAI,SAAA,GAAY,EAAA;AAEhB,IAAA,QAAQ,MAAM,GAAA;AAAK,MACjB,KAAK,WAAA;AAAA,MACL,KAAK,YAAA;AACH,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,SAAA,GAAY,KAAK,GAAA,CAAI,YAAA,GAAe,CAAA,EAAG,QAAA,CAAS,SAAS,CAAC,CAAA;AAC1D,QAAA;AAAA,MACF,KAAK,SAAA;AAAA,MACL,KAAK,WAAA;AACH,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,SAAA,GAAY,IAAA,CAAK,GAAA,CAAI,YAAA,GAAe,CAAA,EAAG,CAAC,CAAA;AACxC,QAAA;AAAA,MACF;AACE,QAAA;AAAA;AAGJ,IAAA,MAAM,WAAA,GAAc,SAAS,SAAS,CAAA;AACtC,IAAA,IAAI,SAAA,KAAc,MAAM,WAAA,EAAa;AACnC,MAAA,WAAA,CAAY,KAAA,EAAM;AAAA,IACpB;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,yBAAyB,EAAE,MAAA,EAAQ,kBAAkB,MAAA,EAAQ,IAAA,CAAK,QAAQ,CAAA;AAAA,QAC1E;AAAA,OACF;AAAA,MACA,cAAA,EAAc,YAAY,MAAA,GAAS,MAAA;AAAA,MACnC,kBAAA,EAAkB,GAAG,MAAM,CAAA,YAAA,CAAA;AAAA,MAC3B,YAAA,EAAY,CAAA,EAAG,IAAA,CAAK,KAAK,MAAM,WAAW,CAAA,CAAA;AAAA,MAC1C,aAAA,EAAa,YAAY,EAAA,GAAK,MAAA;AAAA,MAC9B,WAAA,EAAU,oBAAA;AAAA,MACV,eAAa,IAAA,CAAK,MAAA;AAAA,MAClB,IAAA,EAAK,UAAA;AAAA,MACL,QAAA,EAAU,CAAA;AAAA,MACV,SAAA,EAAW,aAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAGF,QAAA,EAAA;AAAA,QAAA,CAAA,gBAAA,KAAqB,cAAc,gBAAA,KAAqB,SAAA,qBACxD,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qCAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,kBAAA,EAAA,EAAmB,KAAA,EAAc,MAAA,EAAQ,IAAA,CAAK,MAAA,EAAQ,CAAA;AAAA,UACtD,aAAA,IAAiB,CAAC,MAAA,oBACjB,GAAA,CAAC,yBAAsB,MAAA,EAAQ,gBAAA,EAAkB,MAAA,EAAQ,IAAA,CAAK,MAAA,EAAQ;AAAA,SAAA,EAE1E,CAAA;AAAA,wBAIF,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EAEZ,QAAA,EAAA;AAAA,UAAA,gBAAA,KAAqB,YAAA,oBACpB,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kCAAA,EACb,QAAA,kBAAA,GAAA,CAAC,kBAAA,EAAA,EAAmB,KAAA,EAAc,MAAA,EAAQ,IAAA,CAAK,MAAA,EAAQ,CAAA,EACzD,CAAA;AAAA,0BAIF,GAAA,CAAC,uBAAA,EAAA,EAAwB,MAAA,EAAQ,gBAAA,EAAkB,IAAA,EAAY,CAAA;AAAA,0BAG/D,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAW,2BAAA,CAA4B;AAAA,gBACrC,MAAA,EAAQ,gBAAA;AAAA,gBACR,OAAA,EAAS;AAAA,eACV,CAAA;AAAA,cACD,WAAA,EAAU,4BAAA;AAAA,cACV,EAAA,EAAI,GAAG,MAAM,CAAA,YAAA,CAAA;AAAA,cAEZ,oCACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,gCAAA,IAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,YAAA,EAAY,CAAA,QAAA,EAAW,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,oBACjC,IAAA,EAAK,IAAA;AAAA,oBACL,OAAA,EAAQ,SAAA;AAAA,oBACR,OAAA,EAAS,SAAA;AAAA,oBAET,QAAA,EAAA;AAAA,sCAAA,GAAA,CAAC,KAAA,EAAA,EAAM,WAAU,SAAA,EAAU,CAAA;AAAA,sBAAE;AAAA;AAAA;AAAA,iBAE/B;AAAA,gCACA,IAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,YAAA,EAAY,CAAA,OAAA,EAAU,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,oBAChC,IAAA,EAAK,IAAA;AAAA,oBACL,OAAA,EAAQ,aAAA;AAAA,oBACR,OAAA,EAAS,QAAA;AAAA,oBAET,QAAA,EAAA;AAAA,sCAAA,GAAA,CAAC,CAAA,EAAA,EAAE,WAAU,SAAA,EAAU,CAAA;AAAA,sBAAE;AAAA;AAAA;AAAA,iBAE3B;AAAA,gBACC,eAAA,oBACC,IAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,YAAA,EAAY,CAAA,SAAA,EAAY,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,oBAClC,IAAA,EAAK,IAAA;AAAA,oBACL,OAAA,EAAQ,SAAA;AAAA,oBACR,OAAA,EAAS,UAAA;AAAA,oBAET,QAAA,EAAA;AAAA,sCAAA,GAAA,CAAC,IAAA,EAAA,EAAK,WAAU,SAAA,EAAU,CAAA;AAAA,sBAAE;AAAA;AAAA;AAAA,iBAE9B;AAAA,gBAED,eAAA,oBACC,IAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,YAAA,EAAY,CAAA,SAAA,EAAY,IAAA,CAAK,KAAK,CAAA,CAAA;AAAA,oBAClC,IAAA,EAAK,IAAA;AAAA,oBACL,OAAA,EAAQ,SAAA;AAAA,oBACR,OAAA,EAAS,UAAA;AAAA,oBAET,QAAA,EAAA;AAAA,sCAAA,GAAA,CAAC,UAAA,EAAA,EAAW,WAAU,SAAA,EAAU,CAAA;AAAA,sBAAE;AAAA;AAAA;AAAA;AAEpC,eAAA,EAEJ;AAAA;AAAA;AAEJ,SAAA,EACF,CAAA;AAAA,QAGC,gBAAA,KAAqB,gBAAgB,aAAA,IAAiB,CAAC,0BACtD,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mCAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,qBAAA,EAAA,EAAsB,MAAA,EAAQ,gBAAA,EAAkB,MAAA,EAAQ,KAAK,MAAA,EAAQ,CAAA;AAAA,0BACtE,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,wCAAA,EAAyC;AAAA,SAAA,EACnE;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAqBA,SAAS,YAAA,CAAa;AAAA,EACpB,cAAc,SAAA,GAAY,mBAAA;AAAA,EAC1B,SAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA,GAAc,CAAA;AAAA,EACd,OAAA,GAAU,QAAA;AAAA,EACV,MAAA,GAAS,YAAA;AAAA,EACT,eAAA,GAAkB,IAAA;AAAA,EAClB,eAAA,GAAkB,IAAA;AAAA,EAClB,cAAc,aAAA,GAAgB,IAAA;AAAA,EAC9B,cAAc,aAAA,GAAgB,IAAA;AAAA,EAC9B,QAAA,GAAW,KAAA;AAAA,EACX,OAAA,EAAS,QAAA;AAAA,EACT,SAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA,EAAc,aAAA;AAAA,EACd,UAAA,EAAY,WAAA;AAAA,EACZ,GAAG;AACL,CAAA,EAAsB;AACpB,EAAA,MAAM,CAAC,gBAAA,EAAkB,kBAAkB,CAAA,GAAI,SAAS,WAAW,CAAA;AAInE,EAAA,MAAM,eAAA,GAAkB,MAAA;AAExB,EAAA,MAAM,aAAA,GAAgB,CAAC,MAAA,KAAmB;AACxC,IAAA,SAAA,GAAY,EAAE,QAAQ,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,MAAA,KAAmB;AAEvC,IAAA,QAAA,GAAW,EAAE,MAAA,EAAQ,MAAA,EAAQ,EAAA,EAAI,CAAA;AAAA,EACnC,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,MAAA,KAAmB;AAEzC,IAAA,UAAA,GAAa;AAAA,MACX,MAAA;AAAA,MACA,UAAA,EAAY,EAAE,EAAA,EAAI,EAAA,EAAI,MAAM,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,IAAA,EAAM,EAAA;AAAG,KACrD,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,MAAA,KAAmB;AAEzC,IAAA,UAAA,GAAa;AAAA,MACX,MAAA;AAAA,MACA,UAAA,EAAY,EAAE,EAAA,EAAI,EAAA,EAAI,MAAM,EAAA,EAAI,KAAA,EAAO,EAAA,EAAI,IAAA,EAAM,EAAA;AAAG,KACrD,CAAA;AAAA,EACH,CAAA;AAGA,EAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAkB;AACzC,IAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,MAAM,MAAA,GAAS,CAAA;AAEhC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EAAW,GAAG,oBAAA,CAAqB,EAAE,SAAS,MAAA,EAAQ,eAAA,EAAiB,CAAA,EAAG,SAAS,CAAA;AAAA,MACnF,WAAA,EAAU,eAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,IAAA,EAAK,MAAA;AAAA,MACJ,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,QAAA,GACG,KAAA,CAAM,GAAA,CAAI,CAAC,MAAM,KAAA,qBACf,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UAEC,eAAA;AAAA,UACA,eAAA;AAAA,UACA,KAAA;AAAA,UACA,WAAW,KAAA,KAAU,WAAA;AAAA,UACrB,MAAA,EAAQ,KAAA,KAAU,KAAA,CAAM,MAAA,GAAS,CAAA;AAAA,UACjC,MAAA,EAAQ,eAAA;AAAA,UACR,QAAA;AAAA,UACA,eAAe,OAAA,KAAY,aAAA;AAAA,UAC3B,IAAA;AAAA,UACA,WAAW,MAAM;AAAE,YAAA,aAAA,CAAc,KAAK,EAAE,CAAA;AAAA,UAAG,CAAA;AAAA,UAC3C,YAAY,MAAM;AAAE,YAAA,cAAA,CAAe,KAAK,EAAE,CAAA;AAAA,UAAG,CAAA;AAAA,UAC7C,YAAY,MAAM;AAAE,YAAA,cAAA,CAAe,KAAK,EAAE,CAAA;AAAA,UAAG,CAAA;AAAA,UAC7C,SAAS,MAAM;AAAE,YAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,UAAG,CAAA;AAAA,UACzC,UAAU,MAAM;AAAE,YAAA,YAAA,CAAa,KAAK,EAAE,CAAA;AAAA,UAAG;AAAA,SAAA;AAAA,QAdpC,IAAA,CAAK;AAAA,OAgBb,CAAA,GACD;AAAA;AAAA,GACN;AAEJ","file":"chunk-3NSIUZGP.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * ApprovalFlow container variants\n */\nexport const approvalFlowVariants = cva(\n \"relative rounded-lg border bg-card p-6 transition-all duration-300\",\n {\n variants: {\n variant: {\n linear: \"\",\n parallel: \"\",\n conditional: \"\",\n hybrid: \"\",\n },\n layout: {\n horizontal: \"flex flex-row gap-4 overflow-x-auto\",\n vertical: \"flex flex-col gap-4\",\n compact: \"flex flex-col gap-2 p-4\",\n },\n },\n defaultVariants: {\n variant: \"linear\",\n layout: \"horizontal\",\n },\n }\n)\n\n/**\n * ApprovalFlow step variants\n */\nexport const approvalFlowStepVariants = cva(\n \"relative flex transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n {\n variants: {\n layout: {\n horizontal: \"flex-col items-center gap-2 min-w-40\",\n vertical: \"flex-row gap-4\",\n compact: \"flex-row gap-3\",\n },\n status: {\n pending: \"\",\n in_progress: \"\",\n awaiting: \"\",\n approved: \"\",\n rejected: \"\",\n escalated: \"\",\n skipped: \"opacity-50\",\n },\n },\n defaultVariants: {\n layout: \"horizontal\",\n status: \"pending\",\n },\n }\n)\n\n/**\n * Step marker/indicator variants based on status\n */\nexport const approvalFlowMarkerVariants = cva(\n \"flex shrink-0 items-center justify-center rounded-full border-2 transition-all duration-300\",\n {\n variants: {\n status: {\n pending: \"border-muted-foreground/50 bg-muted text-muted-foreground\",\n in_progress:\n \"border-primary bg-primary text-primary-foreground animate-pulse\",\n awaiting: \"border-warning bg-warning text-warning-foreground\",\n approved: \"border-success bg-success text-success-foreground\",\n rejected: \"border-destructive bg-destructive text-destructive-foreground\",\n escalated: \"border-warning bg-warning text-warning-foreground\",\n skipped: \"border-muted-foreground/30 bg-muted/50 text-muted-foreground/50\",\n },\n size: {\n sm: \"h-8 w-8 text-xs\",\n default: \"h-10 w-10 text-sm\",\n lg: \"h-12 w-12 text-base\",\n },\n },\n defaultVariants: {\n status: \"pending\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Connector line variants between steps\n */\nexport const approvalFlowConnectorVariants = cva(\n \"transition-colors duration-300\",\n {\n variants: {\n layout: {\n horizontal: \"h-0.5 flex-1 min-w-10\",\n vertical: \"w-0.5 min-h-10 ml-5\",\n compact: \"w-0.5 min-h-6 ml-4\",\n },\n status: {\n pending: \"bg-muted-foreground/30\",\n in_progress: \"bg-primary/50\",\n awaiting: \"bg-warning/50\",\n approved: \"bg-success\",\n rejected: \"bg-destructive/50\",\n escalated: \"bg-warning/50\",\n skipped: \"bg-muted-foreground/20\",\n },\n style: {\n solid: \"\",\n dashed: \"border-dashed border-2 bg-transparent\",\n },\n },\n compoundVariants: [\n {\n layout: \"horizontal\",\n style: \"dashed\",\n className: \"border-l-0 border-r-0 border-t-2 border-b-0 h-0\",\n },\n {\n layout: \"vertical\",\n style: \"dashed\",\n className: \"border-t-0 border-b-0 border-l-2 border-r-0 w-0\",\n },\n {\n layout: \"compact\",\n style: \"dashed\",\n className: \"border-t-0 border-b-0 border-l-2 border-r-0 w-0\",\n },\n ],\n defaultVariants: {\n layout: \"horizontal\",\n status: \"pending\",\n style: \"solid\",\n },\n }\n)\n\n/**\n * Step card variants\n */\nexport const approvalFlowStepCardVariants = cva(\n \"rounded-md border bg-background p-4 transition-all duration-200\",\n {\n variants: {\n status: {\n pending: \"border-muted\",\n in_progress: \"border-primary shadow-sm ring-1 ring-primary/20\",\n awaiting: \"border-warning shadow-sm\",\n approved: \"border-success/50 bg-success/5\",\n rejected: \"border-destructive/50 bg-destructive/5\",\n escalated: \"border-warning/50 bg-warning/5\",\n skipped: \"border-muted/50 bg-muted/10\",\n },\n layout: {\n horizontal: \"w-full max-w-52\",\n vertical: \"flex-1\",\n compact: \"flex-1 py-2\",\n },\n },\n defaultVariants: {\n status: \"pending\",\n layout: \"horizontal\",\n },\n }\n)\n\n/**\n * Action button group variants\n */\nexport const approvalFlowActionsVariants = cva(\n \"flex gap-2 transition-opacity duration-200\",\n {\n variants: {\n layout: {\n horizontal: \"flex-wrap justify-center mt-2\",\n vertical: \"flex-wrap\",\n compact: \"flex-wrap\",\n },\n visible: {\n true: \"opacity-100\",\n false: \"opacity-0 pointer-events-none\",\n },\n },\n defaultVariants: {\n layout: \"horizontal\",\n visible: true,\n },\n }\n)\n\nexport type ApprovalFlowVariantProps = VariantProps<typeof approvalFlowVariants>\nexport type ApprovalFlowStepVariantProps = VariantProps<\n typeof approvalFlowStepVariants\n>\nexport type ApprovalFlowMarkerVariantProps = VariantProps<\n typeof approvalFlowMarkerVariants\n>\nexport type ApprovalFlowConnectorVariantProps = VariantProps<\n typeof approvalFlowConnectorVariants\n>\nexport type ApprovalFlowStepCardVariantProps = VariantProps<\n typeof approvalFlowStepCardVariants\n>\nexport type ApprovalFlowActionsVariantProps = VariantProps<\n typeof approvalFlowActionsVariants\n>\n","import type {\n ApprovalFlowProps,\n ApprovalFlowStepProps,\n ApprovalStep,\n ApprovalStepStatus,\n Approver,\n} from \"./ApprovalFlow.types\"\nimport type { KeyboardEvent, ReactNode } from \"react\"\n\nimport {\n Check,\n ChevronRight,\n Clock,\n Forward,\n TrendingUp,\n User,\n X,\n} from \"lucide-react\"\nimport { useId, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../primitives/Avatar\"\nimport { Button } from \"../../primitives/Button\"\nimport {\n approvalFlowActionsVariants,\n approvalFlowConnectorVariants,\n approvalFlowMarkerVariants,\n approvalFlowStepCardVariants,\n approvalFlowStepVariants,\n approvalFlowVariants,\n} from \"./ApprovalFlow.variants\"\n\n/**\n * Get initials from a name\n */\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .map((part) => part[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n}\n\n/**\n * Get icon for status\n */\nfunction getStatusIcon(status: ApprovalStepStatus): ReactNode {\n switch (status) {\n case \"approved\":\n return <Check className=\"h-4 w-4\" />\n case \"rejected\":\n return <X className=\"h-4 w-4\" />\n case \"in_progress\":\n case \"awaiting\":\n return <Clock className=\"h-4 w-4\" />\n case \"escalated\":\n return <TrendingUp className=\"h-4 w-4\" />\n case \"skipped\":\n return <Forward className=\"h-4 w-4\" />\n default:\n return null\n }\n}\n\n/**\n * Get accessible status label\n */\nfunction getStatusLabel(status: ApprovalStepStatus): string {\n const labels: Record<ApprovalStepStatus, string> = {\n pending: \"Pending\",\n in_progress: \"In progress\",\n awaiting: \"Awaiting approval\",\n approved: \"Approved\",\n rejected: \"Rejected\",\n escalated: \"Escalated\",\n skipped: \"Skipped\",\n }\n return labels[status]\n}\n\n/**\n * ApprovalFlowMarker component renders the status indicator\n */\nfunction ApprovalFlowMarker({\n index,\n status = \"pending\",\n}: {\n index: number\n status?: ApprovalStepStatus\n}) {\n const icon = getStatusIcon(status)\n\n return (\n <div\n aria-hidden=\"true\"\n className={approvalFlowMarkerVariants({ status })}\n data-slot=\"approval-flow-marker\"\n data-status={status}\n >\n {icon ?? (\n <span className=\"font-medium\">{index + 1}</span>\n )}\n </div>\n )\n}\n\n/**\n * ApprovalFlowConnector component renders the line between steps\n */\nfunction ApprovalFlowConnector({\n layout = \"horizontal\",\n status = \"pending\",\n isConditional = false,\n}: {\n isConditional?: boolean\n layout?: \"compact\" | \"horizontal\" | \"vertical\"\n status?: ApprovalStepStatus\n}) {\n return (\n <div\n className={approvalFlowConnectorVariants({\n layout,\n status,\n style: isConditional ? \"dashed\" : \"solid\",\n })}\n aria-hidden=\"true\"\n data-slot=\"approval-flow-connector\"\n />\n )\n}\n\n/**\n * ApproverAvatar component renders an approver's avatar\n */\nfunction ApproverAvatar({ approver }: { approver: Approver }) {\n return (\n <div className=\"flex items-center gap-2\" title={`${approver.name} (${approver.role})`}>\n <Avatar size=\"sm\">\n {approver.avatar ? (\n <AvatarImage alt={approver.name} src={approver.avatar} />\n ) : null}\n <AvatarFallback>{getInitials(approver.name)}</AvatarFallback>\n </Avatar>\n </div>\n )\n}\n\n/**\n * ApprovalFlowStepContent renders the content of a step\n */\nfunction ApprovalFlowStepContent({\n step,\n layout = \"horizontal\",\n}: {\n layout?: \"compact\" | \"horizontal\" | \"vertical\"\n step: ApprovalStep\n}) {\n const showApproversCount = step.approvers.length > 3\n const visibleApprovers = showApproversCount\n ? step.approvers.slice(0, 3)\n : step.approvers\n\n return (\n <div\n className={approvalFlowStepCardVariants({ status: step.status, layout })}\n data-slot=\"approval-flow-step-card\"\n >\n <div className=\"space-y-2\">\n <div data-slot=\"approval-flow-step-title\">\n <span className=\"text-sm font-medium text-foreground\">\n {step.title}\n </span>\n </div>\n\n {step.description && (\n <div data-slot=\"approval-flow-step-description\">\n <span className=\"text-xs text-muted-foreground\">\n {step.description}\n </span>\n </div>\n )}\n\n {step.approvers.length > 0 && (\n <div\n className=\"flex items-center gap-1\"\n data-slot=\"approval-flow-step-approvers\"\n >\n <div className=\"flex -space-x-2\">\n {visibleApprovers.map((approver) => (\n <ApproverAvatar key={approver.id} approver={approver} />\n ))}\n </div>\n {showApproversCount && (\n <span className=\"ml-2 text-xs text-muted-foreground\">\n +{step.approvers.length - 3} more\n </span>\n )}\n </div>\n )}\n\n {step.requiredApprovals && step.requiredApprovals > 1 && (\n <div\n className=\"text-xs text-muted-foreground\"\n data-slot=\"approval-flow-step-required\"\n >\n Requires {step.requiredApprovals} of {step.approvers.length} approvals\n </div>\n )}\n\n {step.deadline && (\n <div\n className=\"flex items-center gap-1 text-xs text-muted-foreground\"\n data-slot=\"approval-flow-step-deadline\"\n >\n <Clock className=\"h-3 w-3\" />\n <span>Due: {step.deadline.toLocaleDateString()}</span>\n </div>\n )}\n </div>\n </div>\n )\n}\n\n/**\n * ApprovalFlowStep component renders a single approval step\n */\nfunction ApprovalFlowStep({\n step,\n index,\n isCurrent,\n isLast,\n showConnector = true,\n layout = \"horizontal\",\n readOnly = false,\n allowDelegation = true,\n allowEscalation = true,\n onApprove,\n onReject,\n onDelegate,\n onEscalate,\n className,\n ...props\n}: ApprovalFlowStepProps) {\n const stepId = useId()\n const statusLabel = getStatusLabel(step.status)\n // Normalize null to undefined for layout\n const normalizedLayout = layout ?? \"horizontal\"\n const canAct =\n isCurrent &&\n !readOnly &&\n (step.status === \"in_progress\" || step.status === \"awaiting\")\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const target = event.currentTarget\n const parent = target.parentElement\n if (!parent) return\n\n const siblings = [\n ...parent.querySelectorAll('[data-slot=\"approval-flow-step\"]'),\n ] as HTMLDivElement[]\n const currentIndex = siblings.indexOf(target)\n\n let nextIndex = -1\n\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n event.preventDefault()\n nextIndex = Math.min(currentIndex + 1, siblings.length - 1)\n break\n case \"ArrowUp\":\n case \"ArrowLeft\":\n event.preventDefault()\n nextIndex = Math.max(currentIndex - 1, 0)\n break\n default:\n return\n }\n\n const nextElement = siblings[nextIndex]\n if (nextIndex !== -1 && nextElement) {\n nextElement.focus()\n }\n }\n\n return (\n <div\n className={cn(\n approvalFlowStepVariants({ layout: normalizedLayout, status: step.status }),\n className\n )}\n aria-current={isCurrent ? \"step\" : undefined}\n aria-describedby={`${stepId}-description`}\n aria-label={`${step.title} - ${statusLabel}`}\n data-active={isCurrent ? \"\" : undefined}\n data-slot=\"approval-flow-step\"\n data-status={step.status}\n role=\"listitem\"\n tabIndex={0}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* Marker and Connector for vertical/compact layouts */}\n {(normalizedLayout === \"vertical\" || normalizedLayout === \"compact\") && (\n <div className=\"relative flex flex-col items-center\">\n <ApprovalFlowMarker index={index} status={step.status} />\n {showConnector && !isLast && (\n <ApprovalFlowConnector layout={normalizedLayout} status={step.status} />\n )}\n </div>\n )}\n\n {/* Main content wrapper */}\n <div className=\"flex flex-1 flex-col gap-2\">\n {/* Marker for horizontal layout */}\n {normalizedLayout === \"horizontal\" && (\n <div className=\"flex items-center justify-center\">\n <ApprovalFlowMarker index={index} status={step.status} />\n </div>\n )}\n\n {/* Step content */}\n <ApprovalFlowStepContent layout={normalizedLayout} step={step} />\n\n {/* Actions */}\n <div\n className={approvalFlowActionsVariants({\n layout: normalizedLayout,\n visible: canAct,\n })}\n data-slot=\"approval-flow-step-actions\"\n id={`${stepId}-description`}\n >\n {canAct && (\n <>\n <Button\n aria-label={`Approve ${step.title}`}\n size=\"sm\"\n variant=\"default\"\n onClick={onApprove}\n >\n <Check className=\"h-4 w-4\" />\n Approve\n </Button>\n <Button\n aria-label={`Reject ${step.title}`}\n size=\"sm\"\n variant=\"destructive\"\n onClick={onReject}\n >\n <X className=\"h-4 w-4\" />\n Reject\n </Button>\n {allowDelegation && (\n <Button\n aria-label={`Delegate ${step.title}`}\n size=\"sm\"\n variant=\"outline\"\n onClick={onDelegate}\n >\n <User className=\"h-4 w-4\" />\n Delegate\n </Button>\n )}\n {allowEscalation && (\n <Button\n aria-label={`Escalate ${step.title}`}\n size=\"sm\"\n variant=\"outline\"\n onClick={onEscalate}\n >\n <TrendingUp className=\"h-4 w-4\" />\n Escalate\n </Button>\n )}\n </>\n )}\n </div>\n </div>\n\n {/* Connector for horizontal layout */}\n {normalizedLayout === \"horizontal\" && showConnector && !isLast && (\n <div className=\"flex items-center self-start mt-5\">\n <ApprovalFlowConnector layout={normalizedLayout} status={step.status} />\n <ChevronRight className=\"h-4 w-4 text-muted-foreground shrink-0\" />\n </div>\n )}\n </div>\n )\n}\n\n/**\n * ApprovalFlow component displays and manages an approval workflow.\n *\n * @example\n * ```tsx\n * const steps = [\n * { id: \"1\", title: \"Request\", status: \"approved\", approvers: [] },\n * { id: \"2\", title: \"Manager\", status: \"in_progress\", approvers: [{ id: \"1\", name: \"John\", email: \"john@example.com\", role: \"Manager\" }] },\n * { id: \"3\", title: \"Director\", status: \"pending\", approvers: [] },\n * ]\n *\n * <ApprovalFlow\n * steps={steps}\n * currentStep={1}\n * onApprove={({ stepId }) => console.log(\"Approved:\", stepId)}\n * onReject={({ stepId, reason }) => console.log(\"Rejected:\", stepId, reason)}\n * />\n * ```\n */\nfunction ApprovalFlow({\n \"aria-label\": ariaLabel = \"Approval workflow\",\n className,\n steps,\n currentStep = 0,\n variant = \"linear\",\n layout = \"horizontal\",\n allowDelegation = true,\n allowEscalation = true,\n showTimeline: _showTimeline = true,\n showComments: _showComments = true,\n readOnly = false,\n history: _history,\n onApprove,\n onReject,\n onDelegate,\n onEscalate,\n onStepChange: _onStepChange,\n onComplete: _onComplete,\n ...props\n}: ApprovalFlowProps) {\n const [_activeStepIndex, setActiveStepIndex] = useState(currentStep)\n\n // Determine effective layout based on screen size\n // On mobile, force vertical layout\n const effectiveLayout = layout\n\n const handleApprove = (stepId: string) => {\n onApprove?.({ stepId })\n }\n\n const handleReject = (stepId: string) => {\n // In a real implementation, this would open a dialog for the reason\n onReject?.({ stepId, reason: \"\" })\n }\n\n const handleDelegate = (stepId: string) => {\n // In a real implementation, this would open a dialog to select delegate\n onDelegate?.({\n stepId,\n delegateTo: { id: \"\", name: \"\", email: \"\", role: \"\" },\n })\n }\n\n const handleEscalate = (stepId: string) => {\n // In a real implementation, this would open a dialog to select escalation target\n onEscalate?.({\n stepId,\n escalateTo: { id: \"\", name: \"\", email: \"\", role: \"\" },\n })\n }\n\n // Handle keyboard navigation between steps\n const handleStepFocus = (index: number) => {\n setActiveStepIndex(index)\n }\n\n const hasSteps = steps.length > 0\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(approvalFlowVariants({ variant, layout: effectiveLayout }), className)}\n data-slot=\"approval-flow\"\n data-variant={variant}\n role=\"list\"\n {...props}\n >\n {hasSteps\n ? steps.map((step, index) => (\n <ApprovalFlowStep\n key={step.id}\n allowDelegation={allowDelegation}\n allowEscalation={allowEscalation}\n index={index}\n isCurrent={index === currentStep}\n isLast={index === steps.length - 1}\n layout={effectiveLayout}\n readOnly={readOnly}\n showConnector={variant !== \"conditional\"}\n step={step}\n onApprove={() => { handleApprove(step.id); }}\n onDelegate={() => { handleDelegate(step.id); }}\n onEscalate={() => { handleEscalate(step.id); }}\n onFocus={() => { handleStepFocus(index); }}\n onReject={() => { handleReject(step.id); }}\n />\n ))\n : null}\n </div>\n )\n}\n\nexport {\n ApprovalFlow,\n approvalFlowActionsVariants,\n ApprovalFlowConnector,\n approvalFlowConnectorVariants,\n ApprovalFlowMarker,\n approvalFlowMarkerVariants,\n ApprovalFlowStep,\n approvalFlowStepCardVariants,\n approvalFlowStepVariants,\n approvalFlowVariants,\n}\nexport type {\n ApprovalFlowProps,\n ApprovalFlowStepProps,\n ApprovalStep,\n ApprovalStepStatus,\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/workflow/ApprovalFlow/ApprovalFlow.variants.ts","../src/components/workflow/ApprovalFlow/ApprovalFlow.tsx"],"names":[],"mappings":"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","file":"chunk-WZ2J4ALB.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * ApprovalFlow container variants\n */\nexport const approvalFlowVariants = cva(\n \"relative rounded-lg border bg-card p-6 transition-all duration-300\",\n {\n variants: {\n variant: {\n linear: \"\",\n parallel: \"\",\n conditional: \"\",\n hybrid: \"\",\n },\n layout: {\n horizontal: \"flex flex-row gap-4 overflow-x-auto\",\n vertical: \"flex flex-col gap-4\",\n compact: \"flex flex-col gap-2 p-4\",\n },\n },\n defaultVariants: {\n variant: \"linear\",\n layout: \"horizontal\",\n },\n }\n)\n\n/**\n * ApprovalFlow step variants\n */\nexport const approvalFlowStepVariants = cva(\n \"relative flex transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n {\n variants: {\n layout: {\n horizontal: \"flex-col items-center gap-2 min-w-40\",\n vertical: \"flex-row gap-4\",\n compact: \"flex-row gap-3\",\n },\n status: {\n pending: \"\",\n in_progress: \"\",\n awaiting: \"\",\n approved: \"\",\n rejected: \"\",\n escalated: \"\",\n skipped: \"opacity-50\",\n },\n },\n defaultVariants: {\n layout: \"horizontal\",\n status: \"pending\",\n },\n }\n)\n\n/**\n * Step marker/indicator variants based on status\n */\nexport const approvalFlowMarkerVariants = cva(\n \"flex shrink-0 items-center justify-center rounded-full border-2 transition-all duration-300\",\n {\n variants: {\n status: {\n pending: \"border-muted-foreground/50 bg-muted text-muted-foreground\",\n in_progress:\n \"border-primary bg-primary text-primary-foreground animate-pulse\",\n awaiting: \"border-warning bg-warning text-warning-foreground\",\n approved: \"border-success bg-success text-success-foreground\",\n rejected: \"border-destructive bg-destructive text-destructive-foreground\",\n escalated: \"border-warning bg-warning text-warning-foreground\",\n skipped: \"border-muted-foreground/30 bg-muted/50 text-muted-foreground/50\",\n },\n size: {\n sm: \"h-8 w-8 text-xs\",\n default: \"h-10 w-10 text-sm\",\n lg: \"h-12 w-12 text-base\",\n },\n },\n defaultVariants: {\n status: \"pending\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Connector line variants between steps\n */\nexport const approvalFlowConnectorVariants = cva(\n \"transition-colors duration-300\",\n {\n variants: {\n layout: {\n horizontal: \"h-0.5 flex-1 min-w-10\",\n vertical: \"w-0.5 min-h-10 ml-5\",\n compact: \"w-0.5 min-h-6 ml-4\",\n },\n status: {\n pending: \"bg-muted-foreground/30\",\n in_progress: \"bg-primary/50\",\n awaiting: \"bg-warning/50\",\n approved: \"bg-success\",\n rejected: \"bg-destructive/50\",\n escalated: \"bg-warning/50\",\n skipped: \"bg-muted-foreground/20\",\n },\n style: {\n solid: \"\",\n dashed: \"border-dashed border-2 bg-transparent\",\n },\n },\n compoundVariants: [\n {\n layout: \"horizontal\",\n style: \"dashed\",\n className: \"border-l-0 border-r-0 border-t-2 border-b-0 h-0\",\n },\n {\n layout: \"vertical\",\n style: \"dashed\",\n className: \"border-t-0 border-b-0 border-l-2 border-r-0 w-0\",\n },\n {\n layout: \"compact\",\n style: \"dashed\",\n className: \"border-t-0 border-b-0 border-l-2 border-r-0 w-0\",\n },\n ],\n defaultVariants: {\n layout: \"horizontal\",\n status: \"pending\",\n style: \"solid\",\n },\n }\n)\n\n/**\n * Step card variants\n */\nexport const approvalFlowStepCardVariants = cva(\n \"rounded-md border bg-background p-4 transition-all duration-200\",\n {\n variants: {\n status: {\n pending: \"border-muted\",\n in_progress: \"border-primary shadow-sm ring-1 ring-primary/20\",\n awaiting: \"border-warning shadow-sm\",\n approved: \"border-success/50 bg-success/5\",\n rejected: \"border-destructive/50 bg-destructive/5\",\n escalated: \"border-warning/50 bg-warning/5\",\n skipped: \"border-muted/50 bg-muted/10\",\n },\n layout: {\n horizontal: \"w-full max-w-52\",\n vertical: \"flex-1\",\n compact: \"flex-1 py-2\",\n },\n },\n defaultVariants: {\n status: \"pending\",\n layout: \"horizontal\",\n },\n }\n)\n\n/**\n * Action button group variants\n */\nexport const approvalFlowActionsVariants = cva(\n \"flex gap-2 transition-opacity duration-200\",\n {\n variants: {\n layout: {\n horizontal: \"flex-wrap justify-center mt-2\",\n vertical: \"flex-wrap\",\n compact: \"flex-wrap\",\n },\n visible: {\n true: \"opacity-100\",\n false: \"opacity-0 pointer-events-none\",\n },\n },\n defaultVariants: {\n layout: \"horizontal\",\n visible: true,\n },\n }\n)\n\nexport type ApprovalFlowVariantProps = VariantProps<typeof approvalFlowVariants>\nexport type ApprovalFlowStepVariantProps = VariantProps<\n typeof approvalFlowStepVariants\n>\nexport type ApprovalFlowMarkerVariantProps = VariantProps<\n typeof approvalFlowMarkerVariants\n>\nexport type ApprovalFlowConnectorVariantProps = VariantProps<\n typeof approvalFlowConnectorVariants\n>\nexport type ApprovalFlowStepCardVariantProps = VariantProps<\n typeof approvalFlowStepCardVariants\n>\nexport type ApprovalFlowActionsVariantProps = VariantProps<\n typeof approvalFlowActionsVariants\n>\n","import type {\n ApprovalFlowProps,\n ApprovalFlowStepProps,\n ApprovalStep,\n ApprovalStepStatus,\n Approver,\n} from \"./ApprovalFlow.types\"\nimport type { KeyboardEvent, ReactNode } from \"react\"\n\nimport {\n Check,\n ChevronRight,\n Clock,\n Forward,\n TrendingUp,\n User,\n X,\n} from \"lucide-react\"\nimport { useId, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../primitives/Avatar\"\nimport { Button } from \"../../primitives/Button\"\nimport {\n approvalFlowActionsVariants,\n approvalFlowConnectorVariants,\n approvalFlowMarkerVariants,\n approvalFlowStepCardVariants,\n approvalFlowStepVariants,\n approvalFlowVariants,\n} from \"./ApprovalFlow.variants\"\n\n/**\n * Get initials from a name\n */\nfunction getInitials(name: string): string {\n return name\n .split(\" \")\n .map((part) => part[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n}\n\n/**\n * Get icon for status\n */\nfunction getStatusIcon(status: ApprovalStepStatus): ReactNode {\n switch (status) {\n case \"approved\":\n return <Check className=\"h-4 w-4\" />\n case \"rejected\":\n return <X className=\"h-4 w-4\" />\n case \"in_progress\":\n case \"awaiting\":\n return <Clock className=\"h-4 w-4\" />\n case \"escalated\":\n return <TrendingUp className=\"h-4 w-4\" />\n case \"skipped\":\n return <Forward className=\"h-4 w-4\" />\n default:\n return null\n }\n}\n\n/**\n * Get accessible status label\n */\nfunction getStatusLabel(status: ApprovalStepStatus): string {\n const labels: Record<ApprovalStepStatus, string> = {\n pending: \"Pending\",\n in_progress: \"In progress\",\n awaiting: \"Awaiting approval\",\n approved: \"Approved\",\n rejected: \"Rejected\",\n escalated: \"Escalated\",\n skipped: \"Skipped\",\n }\n return labels[status]\n}\n\n/**\n * ApprovalFlowMarker component renders the status indicator\n */\nfunction ApprovalFlowMarker({\n index,\n status = \"pending\",\n}: {\n index: number\n status?: ApprovalStepStatus\n}) {\n const icon = getStatusIcon(status)\n\n return (\n <div\n aria-hidden=\"true\"\n className={approvalFlowMarkerVariants({ status })}\n data-slot=\"approval-flow-marker\"\n data-status={status}\n >\n {icon ?? (\n <span className=\"font-medium\">{index + 1}</span>\n )}\n </div>\n )\n}\n\n/**\n * ApprovalFlowConnector component renders the line between steps\n */\nfunction ApprovalFlowConnector({\n layout = \"horizontal\",\n status = \"pending\",\n isConditional = false,\n}: {\n isConditional?: boolean\n layout?: \"compact\" | \"horizontal\" | \"vertical\"\n status?: ApprovalStepStatus\n}) {\n return (\n <div\n className={approvalFlowConnectorVariants({\n layout,\n status,\n style: isConditional ? \"dashed\" : \"solid\",\n })}\n aria-hidden=\"true\"\n data-slot=\"approval-flow-connector\"\n />\n )\n}\n\n/**\n * ApproverAvatar component renders an approver's avatar\n */\nfunction ApproverAvatar({ approver }: { approver: Approver }) {\n return (\n <div className=\"flex items-center gap-2\" title={`${approver.name} (${approver.role})`}>\n <Avatar size=\"sm\">\n {approver.avatar ? (\n <AvatarImage alt={approver.name} src={approver.avatar} />\n ) : null}\n <AvatarFallback>{getInitials(approver.name)}</AvatarFallback>\n </Avatar>\n </div>\n )\n}\n\n/**\n * ApprovalFlowStepContent renders the content of a step\n */\nfunction ApprovalFlowStepContent({\n step,\n layout = \"horizontal\",\n}: {\n layout?: \"compact\" | \"horizontal\" | \"vertical\"\n step: ApprovalStep\n}) {\n const showApproversCount = step.approvers.length > 3\n const visibleApprovers = showApproversCount\n ? step.approvers.slice(0, 3)\n : step.approvers\n\n return (\n <div\n className={approvalFlowStepCardVariants({ status: step.status, layout })}\n data-slot=\"approval-flow-step-card\"\n >\n <div className=\"space-y-2\">\n <div data-slot=\"approval-flow-step-title\">\n <span className=\"text-sm font-medium text-foreground\">\n {step.title}\n </span>\n </div>\n\n {step.description && (\n <div data-slot=\"approval-flow-step-description\">\n <span className=\"text-xs text-muted-foreground\">\n {step.description}\n </span>\n </div>\n )}\n\n {step.approvers.length > 0 && (\n <div\n className=\"flex items-center gap-1\"\n data-slot=\"approval-flow-step-approvers\"\n >\n <div className=\"flex -space-x-2\">\n {visibleApprovers.map((approver) => (\n <ApproverAvatar key={approver.id} approver={approver} />\n ))}\n </div>\n {showApproversCount && (\n <span className=\"ml-2 text-xs text-muted-foreground\">\n +{step.approvers.length - 3} more\n </span>\n )}\n </div>\n )}\n\n {step.requiredApprovals && step.requiredApprovals > 1 && (\n <div\n className=\"text-xs text-muted-foreground\"\n data-slot=\"approval-flow-step-required\"\n >\n Requires {step.requiredApprovals} of {step.approvers.length} approvals\n </div>\n )}\n\n {step.deadline && (\n <div\n className=\"flex items-center gap-1 text-xs text-muted-foreground\"\n data-slot=\"approval-flow-step-deadline\"\n >\n <Clock className=\"h-3 w-3\" />\n <span>Due: {step.deadline.toLocaleDateString()}</span>\n </div>\n )}\n </div>\n </div>\n )\n}\n\n/**\n * ApprovalFlowStep component renders a single approval step\n */\nfunction ApprovalFlowStep({\n step,\n index,\n isCurrent,\n isLast,\n showConnector = true,\n layout = \"horizontal\",\n readOnly = false,\n allowDelegation = true,\n allowEscalation = true,\n onApprove,\n onReject,\n onDelegate,\n onEscalate,\n className,\n ...props\n}: ApprovalFlowStepProps) {\n const stepId = useId()\n const statusLabel = getStatusLabel(step.status)\n // Normalize null to undefined for layout\n const normalizedLayout = layout ?? \"horizontal\"\n const canAct =\n isCurrent &&\n !readOnly &&\n (step.status === \"in_progress\" || step.status === \"awaiting\")\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const target = event.currentTarget\n const parent = target.parentElement\n if (!parent) return\n\n const siblings = [\n ...parent.querySelectorAll('[data-slot=\"approval-flow-step\"]'),\n ] as HTMLDivElement[]\n const currentIndex = siblings.indexOf(target)\n\n let nextIndex = -1\n\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n event.preventDefault()\n nextIndex = Math.min(currentIndex + 1, siblings.length - 1)\n break\n case \"ArrowUp\":\n case \"ArrowLeft\":\n event.preventDefault()\n nextIndex = Math.max(currentIndex - 1, 0)\n break\n default:\n return\n }\n\n const nextElement = siblings[nextIndex]\n if (nextIndex !== -1 && nextElement) {\n nextElement.focus()\n }\n }\n\n return (\n <div\n className={cn(\n approvalFlowStepVariants({ layout: normalizedLayout, status: step.status }),\n className\n )}\n aria-current={isCurrent ? \"step\" : undefined}\n aria-describedby={`${stepId}-description`}\n aria-label={`${step.title} - ${statusLabel}`}\n data-active={isCurrent ? \"\" : undefined}\n data-slot=\"approval-flow-step\"\n data-status={step.status}\n role=\"listitem\"\n tabIndex={0}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* Marker and Connector for vertical/compact layouts */}\n {(normalizedLayout === \"vertical\" || normalizedLayout === \"compact\") && (\n <div className=\"relative flex flex-col items-center\">\n <ApprovalFlowMarker index={index} status={step.status} />\n {showConnector && !isLast && (\n <ApprovalFlowConnector layout={normalizedLayout} status={step.status} />\n )}\n </div>\n )}\n\n {/* Main content wrapper */}\n <div className=\"flex flex-1 flex-col gap-2\">\n {/* Marker for horizontal layout */}\n {normalizedLayout === \"horizontal\" && (\n <div className=\"flex items-center justify-center\">\n <ApprovalFlowMarker index={index} status={step.status} />\n </div>\n )}\n\n {/* Step content */}\n <ApprovalFlowStepContent layout={normalizedLayout} step={step} />\n\n {/* Actions */}\n <div\n className={approvalFlowActionsVariants({\n layout: normalizedLayout,\n visible: canAct,\n })}\n data-slot=\"approval-flow-step-actions\"\n id={`${stepId}-description`}\n >\n {canAct && (\n <>\n <Button\n aria-label={`Approve ${step.title}`}\n size=\"sm\"\n variant=\"default\"\n onClick={onApprove}\n >\n <Check className=\"h-4 w-4\" />\n Approve\n </Button>\n <Button\n aria-label={`Reject ${step.title}`}\n size=\"sm\"\n variant=\"destructive\"\n onClick={onReject}\n >\n <X className=\"h-4 w-4\" />\n Reject\n </Button>\n {allowDelegation && (\n <Button\n aria-label={`Delegate ${step.title}`}\n size=\"sm\"\n variant=\"outline\"\n onClick={onDelegate}\n >\n <User className=\"h-4 w-4\" />\n Delegate\n </Button>\n )}\n {allowEscalation && (\n <Button\n aria-label={`Escalate ${step.title}`}\n size=\"sm\"\n variant=\"outline\"\n onClick={onEscalate}\n >\n <TrendingUp className=\"h-4 w-4\" />\n Escalate\n </Button>\n )}\n </>\n )}\n </div>\n </div>\n\n {/* Connector for horizontal layout */}\n {normalizedLayout === \"horizontal\" && showConnector && !isLast && (\n <div className=\"flex items-center self-start mt-5\">\n <ApprovalFlowConnector layout={normalizedLayout} status={step.status} />\n <ChevronRight className=\"h-4 w-4 text-muted-foreground shrink-0\" />\n </div>\n )}\n </div>\n )\n}\n\n/**\n * ApprovalFlow component displays and manages an approval workflow.\n *\n * @example\n * ```tsx\n * const steps = [\n * { id: \"1\", title: \"Request\", status: \"approved\", approvers: [] },\n * { id: \"2\", title: \"Manager\", status: \"in_progress\", approvers: [{ id: \"1\", name: \"John\", email: \"john@example.com\", role: \"Manager\" }] },\n * { id: \"3\", title: \"Director\", status: \"pending\", approvers: [] },\n * ]\n *\n * <ApprovalFlow\n * steps={steps}\n * currentStep={1}\n * onApprove={({ stepId }) => console.log(\"Approved:\", stepId)}\n * onReject={({ stepId, reason }) => console.log(\"Rejected:\", stepId, reason)}\n * />\n * ```\n */\nfunction ApprovalFlow({\n \"aria-label\": ariaLabel = \"Approval workflow\",\n className,\n steps,\n currentStep = 0,\n variant = \"linear\",\n layout = \"horizontal\",\n allowDelegation = true,\n allowEscalation = true,\n showTimeline: _showTimeline = true,\n showComments: _showComments = true,\n readOnly = false,\n history: _history,\n onApprove,\n onReject,\n onDelegate,\n onEscalate,\n onStepChange: _onStepChange,\n onComplete: _onComplete,\n ...props\n}: ApprovalFlowProps) {\n const [_activeStepIndex, setActiveStepIndex] = useState(currentStep)\n\n // Determine effective layout based on screen size\n // On mobile, force vertical layout\n const effectiveLayout = layout\n\n const handleApprove = (stepId: string) => {\n onApprove?.({ stepId })\n }\n\n const handleReject = (stepId: string) => {\n // In a real implementation, this would open a dialog for the reason\n onReject?.({ stepId, reason: \"\" })\n }\n\n const handleDelegate = (stepId: string) => {\n // In a real implementation, this would open a dialog to select delegate\n onDelegate?.({\n stepId,\n delegateTo: { id: \"\", name: \"\", email: \"\", role: \"\" },\n })\n }\n\n const handleEscalate = (stepId: string) => {\n // In a real implementation, this would open a dialog to select escalation target\n onEscalate?.({\n stepId,\n escalateTo: { id: \"\", name: \"\", email: \"\", role: \"\" },\n })\n }\n\n // Handle keyboard navigation between steps\n const handleStepFocus = (index: number) => {\n setActiveStepIndex(index)\n }\n\n const hasSteps = steps.length > 0\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(approvalFlowVariants({ variant, layout: effectiveLayout }), className)}\n data-slot=\"approval-flow\"\n data-variant={variant}\n role=\"list\"\n {...props}\n >\n {hasSteps\n ? steps.map((step, index) => (\n <ApprovalFlowStep\n key={step.id}\n allowDelegation={allowDelegation}\n allowEscalation={allowEscalation}\n index={index}\n isCurrent={index === currentStep}\n isLast={index === steps.length - 1}\n layout={effectiveLayout}\n readOnly={readOnly}\n showConnector={variant !== \"conditional\"}\n step={step}\n onApprove={() => { handleApprove(step.id); }}\n onDelegate={() => { handleDelegate(step.id); }}\n onEscalate={() => { handleEscalate(step.id); }}\n onFocus={() => { handleStepFocus(index); }}\n onReject={() => { handleReject(step.id); }}\n />\n ))\n : null}\n </div>\n )\n}\n\nexport {\n ApprovalFlow,\n approvalFlowActionsVariants,\n ApprovalFlowConnector,\n approvalFlowConnectorVariants,\n ApprovalFlowMarker,\n approvalFlowMarkerVariants,\n ApprovalFlowStep,\n approvalFlowStepCardVariants,\n approvalFlowStepVariants,\n approvalFlowVariants,\n}\nexport type {\n ApprovalFlowProps,\n ApprovalFlowStepProps,\n ApprovalStep,\n ApprovalStepStatus,\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useButtonGroup } from './chunk-
|
|
2
|
-
import { Badge } from './chunk-
|
|
1
|
+
import { useButtonGroup } from './chunk-G2CMEHW6.js';
|
|
2
|
+
import { Badge } from './chunk-6ABGMOE2.js';
|
|
3
3
|
import { Tooltip, TooltipTrigger, TooltipContent } from './chunk-7ZJ32KRQ.js';
|
|
4
4
|
import { cn } from './chunk-HRNDJU7D.js';
|
|
5
5
|
import { Slot } from '@radix-ui/react-slot';
|
|
@@ -9,7 +9,7 @@ import * as React from 'react';
|
|
|
9
9
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
10
10
|
|
|
11
11
|
var buttonVariants = cva(
|
|
12
|
-
"inline-flex items-center justify-center whitespace-nowrap rounded-[var(--button-radius-default)] font-medium transition-all duration-[var(--button-transition-duration)] ease-[var(--ease-default)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-4 focus-visible:ring-button-ring-brand focus-visible:z-10 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive relative",
|
|
12
|
+
"inline-flex items-center justify-center whitespace-nowrap rounded-[var(--button-radius-default)] font-medium transition-all duration-[var(--button-transition-duration)] ease-[var(--ease-default)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-brand)] focus-visible:z-10 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive relative",
|
|
13
13
|
{
|
|
14
14
|
variants: {
|
|
15
15
|
fullWidth: {
|
|
@@ -229,5 +229,5 @@ function Button({
|
|
|
229
229
|
}
|
|
230
230
|
|
|
231
231
|
export { Button, buttonVariants };
|
|
232
|
-
//# sourceMappingURL=chunk-
|
|
233
|
-
//# sourceMappingURL=chunk-
|
|
232
|
+
//# sourceMappingURL=chunk-X5XP5QVO.js.map
|
|
233
|
+
//# sourceMappingURL=chunk-X5XP5QVO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/primitives/Button/Button.tsx"],"names":[],"mappings":"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","file":"chunk-X5XP5QVO.js","sourcesContent":["import type { ButtonEventPayload, ButtonProps } from \"./Button.types\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva } from \"class-variance-authority\"\nimport { LoaderCircle } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../../feedback/Tooltip\"\nimport { Badge } from \"../Badge/Badge\"\nimport { useButtonGroup } from \"../ButtonGroup/ButtonGroup\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-[var(--button-radius-default)] font-medium transition-all duration-[var(--button-transition-duration)] ease-[var(--ease-default)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-brand)] focus-visible:z-10 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive relative\",\n {\n variants: {\n fullWidth: {\n true: \"flex w-full\",\n false: \"\",\n },\n variant: {\n default:\n \"bg-[color:var(--button-primary-bg-default)] text-[color:var(--button-primary-fg-default)] border border-[color:var(--button-primary-border-default)] shadow-[var(--button-shadow-default)] hover:bg-[color:var(--button-primary-bg-hover)] hover:border-[color:var(--button-primary-border-hover)] disabled:bg-[color:var(--button-disabled-bg)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n primary:\n \"bg-[color:var(--button-primary-bg-default)] text-[color:var(--button-primary-fg-default)] border border-[color:var(--button-primary-border-default)] shadow-[var(--button-shadow-default)] hover:bg-[color:var(--button-primary-bg-hover)] hover:border-[color:var(--button-primary-border-hover)] disabled:bg-[color:var(--button-disabled-bg)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n destructive:\n \"bg-[color:var(--button-destructive-bg-default)] text-[color:var(--button-destructive-fg-default)] hover:bg-[color:var(--button-destructive-bg-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-destructive)] dark:bg-destructive/60 hover:translate-y-px active:translate-y-0.5\",\n outline:\n \"border border-input bg-background shadow-[var(--button-shadow-xs)] hover:bg-accent hover:text-accent-foreground focus-visible:border-ring dark:bg-input/30 dark:border-input dark:hover:bg-input/50 hover:translate-y-px active:translate-y-0.5\",\n dashed:\n \"border border-dashed border-input bg-background shadow-[var(--button-shadow-xs)] hover:bg-accent hover:text-accent-foreground focus-visible:border-ring dark:bg-input/30 dark:border-input dark:hover:bg-input/50 hover:translate-y-px active:translate-y-0.5\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-secondary)] hover:translate-y-px active:translate-y-0.5\",\n \"secondary-gray\":\n \"bg-[color:var(--button-secondary-gray-bg-default)] text-[color:var(--button-secondary-gray-fg-default)] border border-[color:var(--button-secondary-gray-border-default)] shadow-[var(--button-shadow-xs)] hover:bg-[color:var(--button-secondary-gray-bg-hover)] hover:text-[color:var(--button-secondary-gray-fg-hover)] hover:border-[color:var(--button-secondary-gray-border-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-gray)] disabled:bg-[color:var(--button-secondary-gray-bg-default)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n \"secondary-color\":\n \"bg-[color:var(--button-secondary-color-bg-default)] text-[color:var(--button-secondary-color-fg-default)] border border-[color:var(--button-secondary-color-border-default)] shadow-[var(--button-shadow-xs)] hover:bg-[color:var(--button-secondary-color-bg-hover)] hover:text-[color:var(--button-secondary-color-fg-hover)] hover:border-[color:var(--button-secondary-color-border-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-brand)] disabled:bg-[color:var(--button-secondary-color-bg-default)] disabled:border-[color:var(--button-disabled-border)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 hover:translate-y-px active:translate-y-0.5\",\n ghost:\n \"text-[color:var(--button-ghost-fg-default)] hover:bg-[color:var(--button-ghost-bg-hover)] hover:text-[color:var(--button-ghost-fg-hover)] dark:hover:bg-accent/50 focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-ghost)] hover:translate-y-px active:translate-y-0.5\",\n link: \"text-shadow-button underline-offset-4 hover:underline focus-visible:underline\",\n \"link-gray\":\n \"text-[color:var(--button-link-gray-fg-default)] hover:text-[color:var(--button-link-gray-fg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0\",\n \"link-color\":\n \"text-[color:var(--button-link-color-fg-default)] hover:text-[color:var(--button-link-color-fg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0\",\n \"tertiary-gray\":\n \"text-[color:var(--button-tertiary-gray-fg-default)] hover:text-[color:var(--button-tertiary-gray-fg-hover)] hover:bg-[color:var(--button-tertiary-gray-bg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0 hover:translate-y-px active:translate-y-0.5\",\n \"tertiary-color\":\n \"text-[color:var(--button-tertiary-color-fg-default)] hover:text-[color:var(--button-tertiary-color-fg-hover)] hover:bg-[color:var(--button-tertiary-color-bg-hover)] disabled:text-[color:var(--button-disabled-fg)] disabled:opacity-100 focus-visible:ring-0 hover:translate-y-px active:translate-y-0.5\",\n success:\n \"bg-[color:var(--button-success-bg-default)] text-[color:var(--button-success-fg-default)] hover:bg-[color:var(--button-success-bg-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-success)] hover:translate-y-px active:translate-y-0.5\",\n warning:\n \"bg-[color:var(--button-warning-bg-default)] text-[color:var(--button-warning-fg-default)] hover:bg-[color:var(--button-warning-bg-hover)] focus-visible:ring-4 focus-visible:ring-[color:var(--button-ring-warning)] hover:translate-y-px active:translate-y-0.5\",\n unstyled: \"bg-transparent text-current border-0 p-0 h-auto rounded-none hover:bg-transparent shadow-none w-auto\",\n },\n size: {\n default: \"h-[var(--button-size-default-h)] px-[var(--button-size-default-px)] py-[var(--button-size-default-py)] text-[length:var(--button-size-default-text)] leading-[var(--button-size-default-leading)] gap-[var(--button-size-default-gap)]\",\n sm: \"h-[var(--button-size-sm-h)] px-[var(--button-size-sm-px)] py-[var(--button-size-sm-py)] text-[length:var(--button-size-sm-text)] leading-[var(--button-size-sm-leading)] gap-[var(--button-size-sm-gap)]\",\n lg: \"h-[var(--button-size-lg-h)] px-[var(--button-size-lg-px)] py-[var(--button-size-lg-py)] text-[length:var(--button-size-lg-text)] leading-[var(--button-size-lg-leading)] gap-[var(--button-size-lg-gap)]\",\n icon: \"size-[var(--button-size-icon-size)] p-0 gap-0\",\n \"icon-sm\": \"size-[var(--button-size-icon-sm-size)] p-0 gap-0\",\n },\n shape: {\n default: \"\",\n square: \"rounded-md\",\n circle: \"rounded-full\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n shape: \"default\",\n fullWidth: false,\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n tone,\n size,\n shape,\n fullWidth = false,\n asChild = false,\n badge,\n badgeColor = \"destructive\",\n badgeSize = \"sm\",\n loading = false,\n loadingText,\n icon,\n leftIcon,\n rightIcon,\n disabled,\n children,\n tooltip,\n onClick,\n onFocus,\n onBlur,\n onKeyDown,\n \"data-id\": dataId,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot : \"button\"\n\n // Get ButtonGroup context for prop inheritance\n const groupContext = useButtonGroup()\n\n // Merge props with group context (individual props take precedence)\n const effectiveSize = size ?? groupContext?.size\n const effectiveVariant = variant ?? groupContext?.buttonVariant\n const effectiveDisabled = disabled ?? groupContext?.disabled\n\n const isDisabled = effectiveDisabled ?? loading\n // Resolve virtual variants (tertiary, secondary with tone, link with tone) to actual CVA variants\n const resolvedVariant = (() => {\n // Handle virtual \"tertiary\" variant - always resolves to tertiary-gray or tertiary-color\n if (effectiveVariant === \"tertiary\") {\n return tone === \"color\" ? \"tertiary-color\" : \"tertiary-gray\"\n }\n // Handle secondary with tone\n if (effectiveVariant === \"secondary\" && tone) {\n return tone === \"gray\" ? \"secondary-gray\" : \"secondary-color\"\n }\n // Handle link with tone\n if (effectiveVariant === \"link\" && tone) {\n return tone === \"gray\" ? \"link-gray\" : \"link-color\"\n }\n // Return variant as-is for all other cases\n return effectiveVariant\n })()\n\n // Default to icon size if icon prop is provided and size is undefined\n const defaultSize = icon && !effectiveSize ? \"icon\" : effectiveSize\n\n // Create event payload for callbacks\n const createPayload = React.useCallback((): ButtonEventPayload => ({\n ...(dataId ? { id: dataId } : {}),\n timestamp: Date.now(),\n isLoading: loading,\n }), [dataId, loading])\n\n // Wrapped event handlers that emit ButtonEventPayload\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n event.preventDefault()\n return\n }\n onClick?.(event, createPayload())\n },\n [onClick, createPayload, isDisabled]\n )\n\n const handleFocus = React.useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n onFocus?.(event, createPayload())\n },\n [onFocus, createPayload]\n )\n\n const handleBlur = React.useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n onBlur?.(event, createPayload())\n },\n [onBlur, createPayload]\n )\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event, createPayload())\n },\n [onKeyDown, createPayload]\n )\n\n // Determine what to render as children\n const renderContent = () => {\n if (asChild) {\n return children\n }\n\n if (loading) {\n const spinner = (\n <LoaderCircle\n className={cn(\n \"animate-spin\",\n // Center absolutely if we are preserving width (no loadingText)\n !loadingText && !defaultSize?.toString().startsWith(\"icon\") && \"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\"\n )}\n aria-hidden=\"true\"\n data-slot=\"loading-icon\"\n data-testid=\"loading-icon\"\n />\n )\n\n if (defaultSize?.toString().startsWith(\"icon\")) {\n return spinner\n }\n\n if (loadingText) {\n return (\n <>\n {spinner}\n {loadingText}\n </>\n )\n }\n\n // Preserve width by rendering hidden children\n return (\n <>\n {spinner}\n <span aria-hidden=\"true\" className=\"opacity-0 flex items-center gap-2\">\n {leftIcon && (\n <span aria-hidden=\"true\" data-slot=\"left-icon\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span aria-hidden=\"true\" data-slot=\"right-icon\">\n {rightIcon}\n </span>\n )}\n </span>\n </>\n )\n }\n\n if (icon) {\n return (\n <span aria-hidden=\"true\" data-slot=\"icon\">\n {icon}\n </span>\n )\n }\n\n return (\n <>\n {leftIcon && (\n <span aria-hidden=\"true\" data-slot=\"left-icon\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span aria-hidden=\"true\" data-slot=\"right-icon\">\n {rightIcon}\n </span>\n )}\n </>\n )\n }\n\n const buttonElement = (\n <Comp\n className={cn(\n buttonVariants({\n variant: resolvedVariant,\n size: defaultSize,\n shape,\n fullWidth,\n className,\n })\n )}\n aria-busy={loading || undefined}\n aria-disabled={isDisabled || undefined}\n data-id={dataId}\n data-loading={loading || undefined}\n data-slot=\"button\"\n disabled={isDisabled}\n onBlur={handleBlur}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n {...props}\n aria-label={loading && !loadingText ? \"Loading\" : props[\"aria-label\"]}\n >\n {/* When asChild=true, Slot requires exactly ONE child element */}\n {asChild ? (\n children\n ) : (\n <>\n {renderContent()}\n {badge !== undefined && (\n <Badge\n className=\"absolute -top-1.5 -right-1.5 min-w-5 h-5 px-1.5 text-xs pointer-events-none\"\n color={badgeColor}\n data-slot=\"button-badge\"\n size={badgeSize}\n type=\"pill-color\"\n >\n {badge}\n </Badge>\n )}\n </>\n )}\n </Comp>\n )\n\n if (tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {buttonElement}\n </TooltipTrigger>\n <TooltipContent>\n {tooltip}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n return buttonElement\n}\n\nexport { Button, buttonVariants }\n"]}
|
|
@@ -41,9 +41,9 @@ var fileTreeRowVariants = cva(
|
|
|
41
41
|
{
|
|
42
42
|
variants: {
|
|
43
43
|
variant: {
|
|
44
|
-
ide: "h-[var(--filetree-row-h
|
|
45
|
-
notion: "h-[var(--filetree-row-h
|
|
46
|
-
outline: "h-[var(--filetree-row-h
|
|
44
|
+
ide: "h-[var(--filetree-variant-ide-row-h,24px)] rounded-[var(--filetree-row-radius,4px)] pr-[var(--filetree-row-padding-x,8px)] text-[length:var(--filetree-variant-ide-text,12.5px)]",
|
|
45
|
+
notion: "h-[var(--filetree-variant-notion-row-h,30px)] rounded-md pr-1.5 pl-1 text-[length:var(--filetree-variant-notion-text,13.5px)]",
|
|
46
|
+
outline: "h-[var(--filetree-variant-outline-row-h,28px)] rounded-[var(--filetree-row-radius,4px)] px-2.5 text-[length:var(--filetree-variant-outline-text,13px)]"
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
defaultVariants: {
|
|
@@ -91,7 +91,7 @@ function FileTreeHeader({ className, children, ...props }) {
|
|
|
91
91
|
"div",
|
|
92
92
|
{
|
|
93
93
|
className: cn(
|
|
94
|
-
"flex items-center gap-
|
|
94
|
+
"flex items-center gap-[var(--filetree-project-gap)] px-[var(--filetree-project-padding-x)] pt-[var(--filetree-project-padding-top)] pb-[var(--filetree-project-padding-bottom)] border-b border-[color:var(--filetree-shell-border,var(--sidebar-border))]",
|
|
95
95
|
className
|
|
96
96
|
),
|
|
97
97
|
"data-slot": "filetree-header",
|
|
@@ -105,9 +105,9 @@ function FileTreeProjectBadge({ className, ...props }) {
|
|
|
105
105
|
"div",
|
|
106
106
|
{
|
|
107
107
|
className: cn(
|
|
108
|
-
"grid place-items-center shrink-0 size-
|
|
109
|
-
"bg-[color:var(--
|
|
110
|
-
"text-[
|
|
108
|
+
"grid place-items-center shrink-0 size-[var(--filetree-project-badge-size)] rounded-[var(--filetree-project-badge-radius)]",
|
|
109
|
+
"bg-[color:var(--filetree-project-badge-bg)] text-[color:var(--filetree-project-badge-fg)]",
|
|
110
|
+
"text-[length:var(--filetree-project-badge-text)] font-[number:var(--filetree-project-badge-weight)] tracking-[-0.02em]",
|
|
111
111
|
className
|
|
112
112
|
),
|
|
113
113
|
"data-slot": "filetree-project-badge",
|
|
@@ -117,8 +117,8 @@ function FileTreeProjectBadge({ className, ...props }) {
|
|
|
117
117
|
}
|
|
118
118
|
function FileTreeProjectMeta({ name, sub }) {
|
|
119
119
|
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col min-w-0 flex-1 leading-tight", "data-slot": "filetree-project-meta", children: [
|
|
120
|
-
/* @__PURE__ */ jsx("span", { className: "text-[
|
|
121
|
-
sub && /* @__PURE__ */ jsx("span", { className: "text-[
|
|
120
|
+
/* @__PURE__ */ jsx("span", { className: "text-[length:var(--filetree-project-name-text)] font-[number:var(--filetree-project-name-weight)] truncate", "data-slot": "filetree-project-name", children: name }),
|
|
121
|
+
sub && /* @__PURE__ */ jsx("span", { className: "text-[length:var(--filetree-project-sub-text)] text-[color:var(--filetree-project-sub-fg)] truncate", "data-slot": "filetree-project-sub", children: sub })
|
|
122
122
|
] });
|
|
123
123
|
}
|
|
124
124
|
function FileTreeToolbar({ className, children, ...props }) {
|
|
@@ -126,7 +126,7 @@ function FileTreeToolbar({ className, children, ...props }) {
|
|
|
126
126
|
return /* @__PURE__ */ jsx(
|
|
127
127
|
"div",
|
|
128
128
|
{
|
|
129
|
-
className: cn("flex items-center gap-
|
|
129
|
+
className: cn("flex items-center gap-[var(--filetree-toolbar-gap)] px-[var(--filetree-toolbar-padding-x)] py-[var(--filetree-toolbar-padding-y)]", className),
|
|
130
130
|
"data-slot": "filetree-toolbar",
|
|
131
131
|
...props,
|
|
132
132
|
children
|
|
@@ -147,8 +147,8 @@ function FileTreeSearch({
|
|
|
147
147
|
"label",
|
|
148
148
|
{
|
|
149
149
|
className: cn(
|
|
150
|
-
"flex items-center gap-1.5 flex-1 min-w-0 h-
|
|
151
|
-
"bg-[color:var(--
|
|
150
|
+
"flex items-center gap-1.5 flex-1 min-w-0 h-[var(--filetree-toolbar-search-h)] px-[var(--filetree-toolbar-search-px)] rounded-[var(--filetree-toolbar-search-radius)]",
|
|
151
|
+
"bg-[color:var(--filetree-toolbar-search-bg)] border border-transparent text-[color:var(--muted-foreground)] text-[length:var(--filetree-toolbar-search-text)]",
|
|
152
152
|
"transition-[border-color,background-color] duration-100",
|
|
153
153
|
"focus-within:border-[color:var(--ring)] focus-within:bg-[color:var(--background)]"
|
|
154
154
|
),
|
|
@@ -165,7 +165,7 @@ function FileTreeSearch({
|
|
|
165
165
|
onChange: (e) => handle?.(e.target.value)
|
|
166
166
|
}
|
|
167
167
|
),
|
|
168
|
-
shortcut && /* @__PURE__ */ jsx("kbd", { className: "font-mono text-[
|
|
168
|
+
shortcut && /* @__PURE__ */ jsx("kbd", { className: "font-mono text-[length:var(--filetree-toolbar-search-kbd-text)] bg-[color:var(--neutral-200,var(--muted))] text-[color:var(--muted-foreground)] px-1.5 py-px rounded-xs", children: shortcut })
|
|
169
169
|
]
|
|
170
170
|
}
|
|
171
171
|
);
|
|
@@ -180,7 +180,7 @@ function FileTreeAction({
|
|
|
180
180
|
"button",
|
|
181
181
|
{
|
|
182
182
|
className: cn(
|
|
183
|
-
"grid place-items-center shrink-0 size-
|
|
183
|
+
"grid place-items-center shrink-0 size-[var(--filetree-toolbar-action-size)] rounded-[var(--filetree-toolbar-action-radius)]",
|
|
184
184
|
"bg-transparent text-[color:var(--muted-foreground)] cursor-pointer",
|
|
185
185
|
"transition-colors hover:bg-[color:var(--muted)] hover:text-[color:var(--foreground)]",
|
|
186
186
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]",
|
|
@@ -218,12 +218,12 @@ function FileTreeFooter({
|
|
|
218
218
|
"div",
|
|
219
219
|
{
|
|
220
220
|
className: cn(
|
|
221
|
-
"flex items-center gap-
|
|
222
|
-
"text-[
|
|
221
|
+
"flex items-center gap-[var(--filetree-footer-gap)] px-[var(--filetree-footer-padding-x)] py-[var(--filetree-footer-padding-y)] border-t border-[color:var(--filetree-shell-border,var(--sidebar-border))]",
|
|
222
|
+
"text-[length:var(--filetree-footer-text)] text-[color:var(--muted-foreground)]"
|
|
223
223
|
),
|
|
224
224
|
"data-slot": "filetree-footer",
|
|
225
225
|
children: [
|
|
226
|
-
branch && /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1.5 text-[color:var(--foreground)] font-
|
|
226
|
+
branch && /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1.5 text-[color:var(--foreground)] font-[number:var(--filetree-footer-branch-weight)] font-mono text-[length:var(--filetree-footer-branch-text)]", children: [
|
|
227
227
|
/* @__PURE__ */ jsx(GitBranchIcon, { size: 12 }),
|
|
228
228
|
branch
|
|
229
229
|
] }),
|
|
@@ -232,9 +232,9 @@ function FileTreeFooter({
|
|
|
232
232
|
"span",
|
|
233
233
|
{
|
|
234
234
|
className: cn(
|
|
235
|
-
"ml-auto size-
|
|
236
|
-
"bg-[color:var(--
|
|
237
|
-
"
|
|
235
|
+
"ml-auto size-[var(--filetree-footer-dot-size)] rounded-full",
|
|
236
|
+
"bg-[color:var(--filetree-footer-dot-color)]",
|
|
237
|
+
"shadow-[var(--filetree-footer-dot-ring)]"
|
|
238
238
|
),
|
|
239
239
|
"data-slot": "filetree-footer-indicator"
|
|
240
240
|
}
|
|
@@ -262,7 +262,7 @@ function FileTreeNodeRenderer({ node, depth }) {
|
|
|
262
262
|
ctx.select(node.path, node);
|
|
263
263
|
}
|
|
264
264
|
};
|
|
265
|
-
const
|
|
265
|
+
const indentVar = ctx.variant === "notion" ? "--filetree-variant-notion-indent" : ctx.variant === "outline" ? "--filetree-variant-outline-indent" : "--filetree-variant-ide-indent";
|
|
266
266
|
const handleClick = () => {
|
|
267
267
|
ctx.select(node.path, node);
|
|
268
268
|
if (isFolder) ctx.toggle(node.path);
|
|
@@ -312,18 +312,18 @@ function FileTreeNodeRenderer({ node, depth }) {
|
|
|
312
312
|
if (isFolder) ctx.toggle(node.path);
|
|
313
313
|
}
|
|
314
314
|
};
|
|
315
|
-
const leading = ctx.renderLeading ? ctx.renderLeading(node, rowContext) : isFolder ? /* @__PURE__ */ jsx("span", { className: "grid place-items-center shrink-0 w-[
|
|
315
|
+
const leading = ctx.renderLeading ? ctx.renderLeading(node, rowContext) : isFolder ? /* @__PURE__ */ jsx("span", { className: "grid place-items-center shrink-0 w-[var(--filetree-variant-ide-folder-icon-w)] text-[color:var(--filetree-variant-ide-folder-icon-color)]", children: isExpanded ? /* @__PURE__ */ jsx(FolderOpenIcon, { size: 14 }) : /* @__PURE__ */ jsx(FolderIcon, { size: 14 }) }) : /* @__PURE__ */ jsx("span", { className: "grid place-items-center shrink-0 w-[var(--filetree-variant-ide-folder-icon-w)] text-[color:var(--muted-foreground)]", children: /* @__PURE__ */ jsx(FileIcon, { size: 14 }) });
|
|
316
316
|
const trailing = ctx.renderTrailing?.(node, rowContext);
|
|
317
317
|
if (ctx.variant === "outline") {
|
|
318
318
|
const isL0 = isFolder && depth === 0;
|
|
319
319
|
const rowEl = ctx.renderRow ? ctx.renderRow(node, rowContext) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
320
|
-
isFolder && !isL0 && /* @__PURE__ */ jsx("span", { className: cn("inline-block w-[
|
|
320
|
+
isFolder && !isL0 && /* @__PURE__ */ jsx("span", { className: cn("inline-block w-[var(--filetree-variant-outline-marker-w)] shrink-0 text-[color:var(--muted-foreground)] font-mono text-[length:var(--filetree-variant-outline-marker-text)] transition-transform", isExpanded && "rotate-90"), children: "\u203A" }),
|
|
321
321
|
/* @__PURE__ */ jsx("span", { className: cn(
|
|
322
322
|
"flex-1 overflow-hidden text-ellipsis whitespace-nowrap",
|
|
323
|
-
isL0 && "text-[
|
|
323
|
+
isL0 && "text-[length:var(--filetree-variant-outline-l0-text)] font-[number:var(--filetree-variant-outline-l0-weight)] uppercase tracking-[var(--filetree-variant-outline-l0-tracking)] text-[color:var(--muted-foreground)]",
|
|
324
324
|
!isL0 && isFolder && "font-semibold tracking-[-0.005em] text-[color:var(--foreground)]"
|
|
325
325
|
), children: node.name }),
|
|
326
|
-
!isFolder && /* @__PURE__ */ jsx("span", { className: cn("size-[
|
|
326
|
+
!isFolder && /* @__PURE__ */ jsx("span", { className: cn("size-[var(--filetree-variant-outline-status-size)] rounded-full shrink-0", node.modified ? "bg-[color:var(--filetree-row-modified-color)]" : "bg-[color:var(--muted)]") }),
|
|
327
327
|
trailing
|
|
328
328
|
] });
|
|
329
329
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -332,7 +332,7 @@ function FileTreeNodeRenderer({ node, depth }) {
|
|
|
332
332
|
{
|
|
333
333
|
className: cn(
|
|
334
334
|
fileTreeRowVariants({ variant: "outline" }),
|
|
335
|
-
isL0 && "h-[
|
|
335
|
+
isL0 && "h-[var(--filetree-variant-outline-l0-h)] mt-[var(--filetree-variant-outline-l0-margin-top)] first:mt-0",
|
|
336
336
|
node.disabled && "opacity-50 pointer-events-none"
|
|
337
337
|
),
|
|
338
338
|
"aria-disabled": node.disabled ?? void 0,
|
|
@@ -345,7 +345,7 @@ function FileTreeNodeRenderer({ node, depth }) {
|
|
|
345
345
|
"data-l0": isL0 || void 0,
|
|
346
346
|
"data-slot": "filetree-row",
|
|
347
347
|
role: "treeitem",
|
|
348
|
-
style: { paddingLeft:
|
|
348
|
+
style: { paddingLeft: `calc(10px + ${String(depth)} * var(${indentVar}))` },
|
|
349
349
|
tabIndex: isFocused ? 0 : -1,
|
|
350
350
|
onClick: handleClick,
|
|
351
351
|
onKeyDown: handleKeyDown,
|
|
@@ -360,19 +360,19 @@ function FileTreeNodeRenderer({ node, depth }) {
|
|
|
360
360
|
"span",
|
|
361
361
|
{
|
|
362
362
|
className: cn(
|
|
363
|
-
"grid place-items-center shrink-0 w-
|
|
364
|
-
ctx.variant === "notion" && "w-
|
|
363
|
+
"grid place-items-center shrink-0 w-[var(--filetree-variant-ide-chev-w)] text-[color:var(--muted-foreground)] transition-transform",
|
|
364
|
+
ctx.variant === "notion" && "w-[var(--filetree-variant-notion-chev-w)] h-[var(--filetree-variant-notion-chev-h)] rounded-sm opacity-0 group-hover/ftrow:opacity-100",
|
|
365
365
|
isExpanded && "rotate-90"
|
|
366
366
|
),
|
|
367
367
|
children: /* @__PURE__ */ jsx(ChevronRight, { size: 12 })
|
|
368
368
|
}
|
|
369
|
-
) : /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: cn("inline-block shrink-0 w-
|
|
369
|
+
) : /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: cn("inline-block shrink-0 w-[var(--filetree-variant-ide-chev-w)] h-[var(--filetree-variant-ide-chev-h)]", ctx.variant === "notion" && "w-[var(--filetree-variant-notion-chev-w)] h-[var(--filetree-variant-notion-chev-h)]") });
|
|
370
370
|
const indentEls = ctx.variant === "ide" ? Array.from({ length: depth }, (_, i) => /* @__PURE__ */ jsx(
|
|
371
371
|
"span",
|
|
372
372
|
{
|
|
373
373
|
"aria-hidden": "true",
|
|
374
|
-
className: "relative shrink-0 w-[
|
|
375
|
-
children: /* @__PURE__ */ jsx("span", { className: "absolute left-2 top-0 bottom-0 w-px bg-[color:var(--
|
|
374
|
+
className: "relative shrink-0 w-[var(--filetree-variant-ide-indent)] self-stretch",
|
|
375
|
+
children: /* @__PURE__ */ jsx("span", { className: "absolute left-2 top-0 bottom-0 w-px bg-[color:var(--filetree-variant-ide-indent-guide-color)]" })
|
|
376
376
|
},
|
|
377
377
|
i
|
|
378
378
|
)) : null;
|
|
@@ -382,7 +382,7 @@ function FileTreeNodeRenderer({ node, depth }) {
|
|
|
382
382
|
leading,
|
|
383
383
|
/* @__PURE__ */ jsx("span", { className: "pl-1.5 overflow-hidden text-ellipsis whitespace-nowrap flex-1", children: node.name }),
|
|
384
384
|
trailing,
|
|
385
|
-
node.modified && !isFolder && /* @__PURE__ */ jsx("span", { className: "ml-1 text-[color:var(--
|
|
385
|
+
node.modified && !isFolder && /* @__PURE__ */ jsx("span", { className: "ml-1 text-[color:var(--filetree-row-modified-color)] font-bold", children: "\u25CF" })
|
|
386
386
|
] });
|
|
387
387
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
388
388
|
/* @__PURE__ */ jsx(
|
|
@@ -402,7 +402,7 @@ function FileTreeNodeRenderer({ node, depth }) {
|
|
|
402
402
|
"data-folder": isFolder || void 0,
|
|
403
403
|
"data-slot": "filetree-row",
|
|
404
404
|
role: "treeitem",
|
|
405
|
-
style: ctx.variant === "notion" ? { paddingLeft:
|
|
405
|
+
style: ctx.variant === "notion" ? { paddingLeft: `calc(4px + ${String(depth)} * var(${indentVar}))` } : void 0,
|
|
406
406
|
tabIndex: isFocused ? 0 : -1,
|
|
407
407
|
onClick: handleClick,
|
|
408
408
|
onKeyDown: handleKeyDown,
|
|
@@ -520,5 +520,5 @@ FileTree.Body = FileTreeBody;
|
|
|
520
520
|
FileTree.Footer = FileTreeFooter;
|
|
521
521
|
|
|
522
522
|
export { FileTree, FileTreeAction, FileTreeBody, FileTreeFooter, FileTreeHeader, FileTreeProjectBadge, FileTreeProjectMeta, FileTreeSearch, FileTreeToolbar, fileTreeRowVariants, fileTreeShellVariants };
|
|
523
|
-
//# sourceMappingURL=chunk-
|
|
524
|
-
//# sourceMappingURL=chunk-
|
|
523
|
+
//# sourceMappingURL=chunk-XKO6G5H2.js.map
|
|
524
|
+
//# sourceMappingURL=chunk-XKO6G5H2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/navigation/FileTree/FileTree.variants.ts","../src/components/navigation/FileTree/FileTree.tsx"],"names":[],"mappings":"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","file":"chunk-XKO6G5H2.js","sourcesContent":["import { cva } from \"class-variance-authority\"\n\nexport const fileTreeShellVariants = cva(\n [\n \"flex flex-col h-full select-none\",\n \"bg-[color:var(--filetree-shell-bg,var(--sidebar))]\",\n \"text-[color:var(--filetree-shell-fg,var(--sidebar-foreground))]\",\n \"border-r border-[color:var(--filetree-shell-border,var(--sidebar-border))]\",\n ],\n {\n variants: {\n variant: {\n ide: \"font-mono\",\n notion: \"font-sans\",\n outline: \"font-sans\",\n },\n size: {\n sm: \"w-[var(--filetree-shell-width-sm,240px)]\",\n default: \"w-[var(--filetree-shell-width-default,296px)]\",\n lg: \"w-[var(--filetree-shell-width-lg,320px)]\",\n },\n },\n defaultVariants: {\n variant: \"ide\",\n size: \"default\",\n },\n },\n)\n\nexport const fileTreeRowVariants = cva(\n [\n \"relative flex items-center cursor-pointer\",\n \"transition-colors duration-100\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]\",\n \"data-[active=true]:bg-[color:var(--filetree-row-active-bg,var(--brand-primary-100,var(--accent)))] data-[active=true]:text-[color:var(--filetree-row-active-fg,var(--brand-primary-900,var(--accent-foreground)))]\",\n \"hover:bg-[color:var(--filetree-row-hover-bg,var(--muted))]\",\n ],\n {\n variants: {\n variant: {\n ide: \"h-[var(--filetree-variant-ide-row-h,24px)] rounded-[var(--filetree-row-radius,4px)] pr-[var(--filetree-row-padding-x,8px)] text-[length:var(--filetree-variant-ide-text,12.5px)]\",\n notion: \"h-[var(--filetree-variant-notion-row-h,30px)] rounded-md pr-1.5 pl-1 text-[length:var(--filetree-variant-notion-text,13.5px)]\",\n outline: \"h-[var(--filetree-variant-outline-row-h,28px)] rounded-[var(--filetree-row-radius,4px)] px-2.5 text-[length:var(--filetree-variant-outline-text,13px)]\",\n },\n },\n defaultVariants: {\n variant: \"ide\",\n },\n },\n)\n","\"use client\"\n\nimport type {\n FileTreeNode,\n FileTreeProps,\n FileTreeRowContext,\n} from \"./FileTree.types\"\n\nimport { ChevronRight, FileIcon, FolderIcon, FolderOpenIcon, GitBranchIcon, SearchIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n fileTreeRowVariants,\n fileTreeShellVariants,\n} from \"./FileTree.variants\"\n\n/* ─────────────────────────────────────────────────────────────\n * Context — shares variant/state/handlers with sub-components.\n * ─────────────────────────────────────────────────────────────*/\n\ninterface FileTreeContextValue {\n data: FileTreeNode\n expanded: Record<string, boolean>\n focusedPath: string | undefined\n getNodeProps?: FileTreeProps[\"getNodeProps\"]\n keyboardNav: boolean\n renderLeading?: FileTreeProps[\"renderLeading\"]\n renderRow?: FileTreeProps[\"renderRow\"]\n renderTrailing?: FileTreeProps[\"renderTrailing\"]\n searchOnChange?: (value: string) => void\n searchPlaceholder?: string\n searchValue: string\n select: (path: string, node: FileTreeNode) => void\n selectedPath: string | undefined\n setFocused: (path: string | undefined) => void\n size: \"default\" | \"lg\" | \"sm\"\n toggle: (path: string) => void\n variant: \"ide\" | \"notion\" | \"outline\"\n}\n\nconst FileTreeContext = React.createContext<FileTreeContextValue | null>(null)\n\nfunction useFileTree(): FileTreeContextValue {\n const ctx = React.use(FileTreeContext)\n if (!ctx) throw new Error(\"FileTree sub-components must be used inside <FileTree>.\")\n return ctx\n}\n\n/* ─────────────────────────────────────────────────────────────\n * Utilities\n * ─────────────────────────────────────────────────────────────*/\n\nfunction collectInitialExpanded(node: FileTreeNode, acc: Record<string, boolean> = {}): Record<string, boolean> {\n if (node.kind === \"folder\" && node.open) acc[node.path] = true\n node.children?.forEach((c) => collectInitialExpanded(c, acc))\n return acc\n}\n\nfunction collectInitialActive(node: FileTreeNode): string | undefined {\n if (node.active) return node.path\n if (node.children) {\n for (const c of node.children) {\n const r = collectInitialActive(c)\n if (r) return r\n }\n }\n return undefined\n}\n\n/** Flat list of currently-visible nodes (respects expanded state). Used for keyboard nav. */\nfunction visibleNodes(root: FileTreeNode, expanded: Record<string, boolean>): { depth: number; node: FileTreeNode; }[] {\n const out: { depth: number; node: FileTreeNode; }[] = []\n function walk(n: FileTreeNode, depth: number) {\n if (n !== root) out.push({ node: n, depth })\n if (n.kind === \"folder\" && (n === root || expanded[n.path])) {\n n.children?.forEach((c) => { walk(c, n === root ? 0 : depth + 1); })\n }\n }\n walk(root, -1)\n return out\n}\n\n/* ─────────────────────────────────────────────────────────────\n * Sub-components (Header, Toolbar, Body, Footer)\n * ─────────────────────────────────────────────────────────────*/\n\nfunction FileTreeHeader({ className, children, ...props }: React.ComponentProps<\"div\">) {\n if (!children) return null\n return (\n <div\n className={cn(\n \"flex items-center gap-[var(--filetree-project-gap)] px-[var(--filetree-project-padding-x)] pt-[var(--filetree-project-padding-top)] pb-[var(--filetree-project-padding-bottom)] border-b border-[color:var(--filetree-shell-border,var(--sidebar-border))]\",\n className,\n )}\n data-slot=\"filetree-header\"\n {...props}\n >\n {children}\n </div>\n )\n}\n\nfunction FileTreeProjectBadge({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n className={cn(\n \"grid place-items-center shrink-0 size-[var(--filetree-project-badge-size)] rounded-[var(--filetree-project-badge-radius)]\",\n \"bg-[color:var(--filetree-project-badge-bg)] text-[color:var(--filetree-project-badge-fg)]\",\n \"text-[length:var(--filetree-project-badge-text)] font-[number:var(--filetree-project-badge-weight)] tracking-[-0.02em]\",\n className,\n )}\n data-slot=\"filetree-project-badge\"\n {...props}\n />\n )\n}\n\nfunction FileTreeProjectMeta({ name, sub }: { name: string; sub?: string }) {\n return (\n <div className=\"flex flex-col min-w-0 flex-1 leading-tight\" data-slot=\"filetree-project-meta\">\n <span className=\"text-[length:var(--filetree-project-name-text)] font-[number:var(--filetree-project-name-weight)] truncate\" data-slot=\"filetree-project-name\">\n {name}\n </span>\n {sub && (\n <span className=\"text-[length:var(--filetree-project-sub-text)] text-[color:var(--filetree-project-sub-fg)] truncate\" data-slot=\"filetree-project-sub\">\n {sub}\n </span>\n )}\n </div>\n )\n}\n\nfunction FileTreeToolbar({ className, children, ...props }: React.ComponentProps<\"div\">) {\n if (!children) return null\n return (\n <div\n className={cn(\"flex items-center gap-[var(--filetree-toolbar-gap)] px-[var(--filetree-toolbar-padding-x)] py-[var(--filetree-toolbar-padding-y)]\", className)}\n data-slot=\"filetree-toolbar\"\n {...props}\n >\n {children}\n </div>\n )\n}\n\nfunction FileTreeSearch({\n shortcut,\n placeholder,\n value,\n onChange,\n}: {\n onChange?: (value: string) => void\n placeholder?: string\n shortcut?: string\n value?: string\n}) {\n const ctx = React.use(FileTreeContext)\n // Use context's search props as fallback when this Search component doesn't get explicit ones.\n const ph = placeholder ?? ctx?.searchPlaceholder ?? \"Buscar arquivo…\"\n const val = value ?? ctx?.searchValue ?? \"\"\n const handle = onChange ?? ctx?.searchOnChange\n return (\n <label\n className={cn(\n \"flex items-center gap-1.5 flex-1 min-w-0 h-[var(--filetree-toolbar-search-h)] px-[var(--filetree-toolbar-search-px)] rounded-[var(--filetree-toolbar-search-radius)]\",\n \"bg-[color:var(--filetree-toolbar-search-bg)] border border-transparent text-[color:var(--muted-foreground)] text-[length:var(--filetree-toolbar-search-text)]\",\n \"transition-[border-color,background-color] duration-100\",\n \"focus-within:border-[color:var(--ring)] focus-within:bg-[color:var(--background)]\",\n )}\n data-slot=\"filetree-search\"\n >\n <SearchIcon size={14} />\n <input\n className=\"flex-1 min-w-0 bg-transparent border-0 outline-none text-[color:var(--foreground)] placeholder:text-[color:var(--muted-foreground)]\"\n placeholder={ph}\n type=\"text\"\n value={val}\n onChange={(e) => handle?.(e.target.value)}\n />\n {shortcut && (\n <kbd className=\"font-mono text-[length:var(--filetree-toolbar-search-kbd-text)] bg-[color:var(--neutral-200,var(--muted))] text-[color:var(--muted-foreground)] px-1.5 py-px rounded-xs\">\n {shortcut}\n </kbd>\n )}\n </label>\n )\n}\n\nfunction FileTreeAction({\n icon,\n className,\n children,\n ...props\n}: React.ComponentProps<\"button\"> & { icon?: React.ReactNode }) {\n return (\n <button\n className={cn(\n \"grid place-items-center shrink-0 size-[var(--filetree-toolbar-action-size)] rounded-[var(--filetree-toolbar-action-radius)]\",\n \"bg-transparent text-[color:var(--muted-foreground)] cursor-pointer\",\n \"transition-colors hover:bg-[color:var(--muted)] hover:text-[color:var(--foreground)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--ring)]\",\n className,\n )}\n data-slot=\"filetree-action\"\n type=\"button\"\n {...props}\n >\n {icon ?? children}\n </button>\n )\n}\n\nfunction FileTreeBody({ className, ...props }: React.ComponentProps<\"div\">) {\n const ctx = useFileTree()\n return (\n <div\n aria-label=\"File tree\"\n className={cn(\"flex-1 min-h-0 overflow-y-auto px-1.5 pt-1 pb-3\", className)}\n data-slot=\"filetree-body\"\n data-variant={ctx.variant}\n role=\"tree\"\n {...props}\n >\n {ctx.data.children?.map((child) => (\n <FileTreeNodeRenderer key={child.path} depth={0} node={child} />\n ))}\n </div>\n )\n}\n\nfunction FileTreeFooter({\n branch,\n indicator = \"dot\",\n children,\n}: {\n branch?: string\n children?: React.ReactNode\n indicator?: \"dot\" | \"none\"\n}) {\n if (!branch && !children) return null\n return (\n <div\n className={cn(\n \"flex items-center gap-[var(--filetree-footer-gap)] px-[var(--filetree-footer-padding-x)] py-[var(--filetree-footer-padding-y)] border-t border-[color:var(--filetree-shell-border,var(--sidebar-border))]\",\n \"text-[length:var(--filetree-footer-text)] text-[color:var(--muted-foreground)]\",\n )}\n data-slot=\"filetree-footer\"\n >\n {branch && (\n <span className=\"inline-flex items-center gap-1.5 text-[color:var(--foreground)] font-[number:var(--filetree-footer-branch-weight)] font-mono text-[length:var(--filetree-footer-branch-text)]\">\n <GitBranchIcon size={12} />\n {branch}\n </span>\n )}\n {children}\n {indicator === \"dot\" && (\n <span\n className={cn(\n \"ml-auto size-[var(--filetree-footer-dot-size)] rounded-full\",\n \"bg-[color:var(--filetree-footer-dot-color)]\",\n \"shadow-[var(--filetree-footer-dot-ring)]\",\n )}\n data-slot=\"filetree-footer-indicator\"\n />\n )}\n </div>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────\n * Row renderer — recursive\n * ─────────────────────────────────────────────────────────────*/\n\n// eslint-disable-next-line sonarjs/cognitive-complexity -- tree node renderer composes 3 variants (ide/notion/outline) + keyboard handler; splitting hurts readability more than it helps\nfunction FileTreeNodeRenderer({ node, depth }: { depth: number; node: FileTreeNode; }) {\n const ctx = useFileTree()\n const isFolder = node.kind === \"folder\"\n const isExpanded = !!ctx.expanded[node.path]\n const isActive = ctx.selectedPath === node.path\n const isFocused = ctx.focusedPath === node.path\n\n const rowContext: FileTreeRowContext = {\n depth,\n isExpanded,\n isActive,\n isFolder,\n isFocused,\n toggle: () => { ctx.toggle(node.path); },\n select: () => { ctx.select(node.path, node); },\n }\n\n // Indent rendering depends on variant. IDE/Notion use guide-lines; outline is pure indent.\n const indentVar = ctx.variant === \"notion\" ? \"--filetree-variant-notion-indent\" : ctx.variant === \"outline\" ? \"--filetree-variant-outline-indent\" : \"--filetree-variant-ide-indent\"\n\n const handleClick = () => {\n ctx.select(node.path, node)\n if (isFolder) ctx.toggle(node.path)\n }\n\n // eslint-disable-next-line sonarjs/cognitive-complexity -- WAI-ARIA tree keyboard pattern requires 9 distinct key branches; refactoring obscures the spec mapping\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (!ctx.keyboardNav) return\n const flat = visibleNodes(ctx.data, ctx.expanded)\n const idx = flat.findIndex((f) => f.node.path === node.path)\n if (e.key === \"ArrowDown\") {\n e.preventDefault()\n const next = flat[idx + 1]\n if (next) ctx.setFocused(next.node.path)\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault()\n const prev = flat[idx - 1]\n if (prev) ctx.setFocused(prev.node.path)\n } else if (e.key === \"ArrowRight\" && isFolder) {\n e.preventDefault()\n if (!isExpanded) ctx.toggle(node.path)\n else {\n const next = flat[idx + 1]\n if (next && next.depth > depth) ctx.setFocused(next.node.path)\n }\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault()\n if (isFolder && isExpanded) {\n ctx.toggle(node.path)\n } else {\n // move to parent (find previous shallower)\n for (let i = idx - 1; i >= 0; i--) {\n const f = flat[i]\n if (f && f.depth < depth) { ctx.setFocused(f.node.path); break }\n }\n }\n } else if (e.key === \"Home\") {\n e.preventDefault()\n if (flat[0]) ctx.setFocused(flat[0].node.path)\n } else if (e.key === \"End\") {\n e.preventDefault()\n const last = flat.at(-1)\n if (last) ctx.setFocused(last.node.path)\n } else if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n ctx.select(node.path, node)\n if (isFolder) ctx.toggle(node.path)\n }\n }\n\n // Compute leading + trailing via render-props OR defaults\n const leading = ctx.renderLeading\n ? ctx.renderLeading(node, rowContext)\n : isFolder\n ? <span className=\"grid place-items-center shrink-0 w-[var(--filetree-variant-ide-folder-icon-w)] text-[color:var(--filetree-variant-ide-folder-icon-color)]\">\n {isExpanded ? <FolderOpenIcon size={14} /> : <FolderIcon size={14} />}\n </span>\n : <span className=\"grid place-items-center shrink-0 w-[var(--filetree-variant-ide-folder-icon-w)] text-[color:var(--muted-foreground)]\">\n <FileIcon size={14} />\n </span>\n\n const trailing = ctx.renderTrailing?.(node, rowContext)\n\n // ── Variant: outline (no chevron, no folder icon, marker only)\n if (ctx.variant === \"outline\") {\n const isL0 = isFolder && depth === 0\n const rowEl = ctx.renderRow ? (\n ctx.renderRow(node, rowContext)\n ) : (\n <>\n {isFolder && !isL0 && (\n <span className={cn(\"inline-block w-[var(--filetree-variant-outline-marker-w)] shrink-0 text-[color:var(--muted-foreground)] font-mono text-[length:var(--filetree-variant-outline-marker-text)] transition-transform\", isExpanded && \"rotate-90\")}>\n ›\n </span>\n )}\n <span className={cn(\n \"flex-1 overflow-hidden text-ellipsis whitespace-nowrap\",\n isL0 && \"text-[length:var(--filetree-variant-outline-l0-text)] font-[number:var(--filetree-variant-outline-l0-weight)] uppercase tracking-[var(--filetree-variant-outline-l0-tracking)] text-[color:var(--muted-foreground)]\",\n !isL0 && isFolder && \"font-semibold tracking-[-0.005em] text-[color:var(--foreground)]\",\n )}>\n {node.name}\n </span>\n {!isFolder && (\n <span className={cn(\"size-[var(--filetree-variant-outline-status-size)] rounded-full shrink-0\", node.modified ? \"bg-[color:var(--filetree-row-modified-color)]\" : \"bg-[color:var(--muted)]\")} />\n )}\n {trailing}\n </>\n )\n return (\n <>\n <div\n className={cn(\n fileTreeRowVariants({ variant: \"outline\" }),\n isL0 && \"h-[var(--filetree-variant-outline-l0-h)] mt-[var(--filetree-variant-outline-l0-margin-top)] first:mt-0\",\n node.disabled && \"opacity-50 pointer-events-none\",\n )}\n aria-disabled={node.disabled ?? undefined}\n aria-expanded={isFolder ? isExpanded : undefined}\n aria-level={depth + 1}\n aria-selected={isActive || undefined}\n data-active={isActive || undefined}\n data-expanded={isFolder ? isExpanded : undefined}\n data-folder={isFolder || undefined}\n data-l0={isL0 || undefined}\n data-slot=\"filetree-row\"\n role=\"treeitem\"\n style={{ paddingLeft: `calc(10px + ${String(depth)} * var(${indentVar}))` }}\n tabIndex={isFocused ? 0 : -1}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...ctx.getNodeProps?.(node)}\n >\n {rowEl}\n </div>\n {isFolder && isExpanded && node.children?.map((c) => (\n <FileTreeNodeRenderer key={c.path} depth={depth + 1} node={c} />\n ))}\n </>\n )\n }\n\n // ── Variant: ide / notion (chevron + icon + name + trailing)\n const chevron = isFolder ? (\n <span\n className={cn(\n \"grid place-items-center shrink-0 w-[var(--filetree-variant-ide-chev-w)] text-[color:var(--muted-foreground)] transition-transform\",\n ctx.variant === \"notion\" && \"w-[var(--filetree-variant-notion-chev-w)] h-[var(--filetree-variant-notion-chev-h)] rounded-sm opacity-0 group-hover/ftrow:opacity-100\",\n isExpanded && \"rotate-90\",\n )}\n >\n <ChevronRight size={12} />\n </span>\n ) : (\n <span aria-hidden=\"true\" className={cn(\"inline-block shrink-0 w-[var(--filetree-variant-ide-chev-w)] h-[var(--filetree-variant-ide-chev-h)]\", ctx.variant === \"notion\" && \"w-[var(--filetree-variant-notion-chev-w)] h-[var(--filetree-variant-notion-chev-h)]\")} />\n )\n\n const indentEls = ctx.variant === \"ide\"\n ? Array.from({ length: depth }, (_, i) => (\n <span\n key={i}\n aria-hidden=\"true\"\n className=\"relative shrink-0 w-[var(--filetree-variant-ide-indent)] self-stretch\"\n >\n <span className=\"absolute left-2 top-0 bottom-0 w-px bg-[color:var(--filetree-variant-ide-indent-guide-color)]\" />\n </span>\n ))\n : null\n\n const row = ctx.renderRow ? (\n ctx.renderRow(node, rowContext)\n ) : (\n <>\n {indentEls}\n {chevron}\n {leading}\n <span className=\"pl-1.5 overflow-hidden text-ellipsis whitespace-nowrap flex-1\">\n {node.name}\n </span>\n {trailing}\n {node.modified && !isFolder && (\n <span className=\"ml-1 text-[color:var(--filetree-row-modified-color)] font-bold\">●</span>\n )}\n </>\n )\n\n return (\n <>\n <div\n className={cn(\n \"group/ftrow\",\n fileTreeRowVariants({ variant: ctx.variant }),\n node.disabled && \"opacity-50 pointer-events-none\",\n )}\n aria-disabled={node.disabled ?? undefined}\n aria-expanded={isFolder ? isExpanded : undefined}\n aria-level={depth + 1}\n aria-selected={isActive || undefined}\n data-active={isActive || undefined}\n data-expanded={isFolder ? isExpanded : undefined}\n data-folder={isFolder || undefined}\n data-slot=\"filetree-row\"\n role=\"treeitem\"\n style={ctx.variant === \"notion\" ? { paddingLeft: `calc(4px + ${String(depth)} * var(${indentVar}))` } : undefined}\n tabIndex={isFocused ? 0 : -1}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...ctx.getNodeProps?.(node)}\n >\n {row}\n </div>\n {isFolder && isExpanded && node.children?.map((c) => (\n <FileTreeNodeRenderer key={c.path} depth={depth + 1} node={c} />\n ))}\n </>\n )\n}\n\n/* ─────────────────────────────────────────────────────────────\n * Root — FileTree\n * ─────────────────────────────────────────────────────────────*/\n\nfunction FileTree({\n data,\n variant = \"ide\",\n size = \"default\",\n expanded: expandedProp,\n defaultExpanded,\n selectedPath: selectedPathProp,\n defaultSelectedPath,\n onToggle,\n onSelect,\n renderRow,\n renderLeading,\n renderTrailing,\n getNodeProps,\n searchValue: searchValueProp,\n onSearchChange,\n searchPlaceholder,\n keyboardNav = true,\n className,\n children,\n ...props\n}: FileTreeProps) {\n const isExpandedControlled = expandedProp !== undefined\n const isSelectedControlled = selectedPathProp !== undefined\n const isSearchControlled = searchValueProp !== undefined\n\n const [internalExpanded, setInternalExpanded] = React.useState<Record<string, boolean>>(\n () => defaultExpanded ?? collectInitialExpanded(data),\n )\n const [internalSelected, setInternalSelected] = React.useState<string | undefined>(\n () => defaultSelectedPath ?? collectInitialActive(data),\n )\n const [internalSearch, setInternalSearch] = React.useState<string>(\"\")\n // Initial focus: prefer selectedPath (controlled or default), else first visible node.\n // Computed at mount via useState initializer to avoid the \"initialize state in effect\" anti-pattern.\n const [focusedPath, setFocusedPath] = React.useState<string | undefined>(() => {\n const initial = defaultSelectedPath ?? selectedPathProp ?? collectInitialActive(data)\n if (initial) return initial\n const initialExpanded = defaultExpanded ?? collectInitialExpanded(data)\n return visibleNodes(data, initialExpanded)[0]?.node.path\n })\n\n const expanded = isExpandedControlled ? expandedProp : internalExpanded\n const selectedPath = isSelectedControlled ? selectedPathProp : internalSelected\n const searchValue = isSearchControlled ? searchValueProp : internalSearch\n\n const toggle = React.useCallback(\n (path: string) => {\n const next = !expanded[path]\n if (!isExpandedControlled) {\n setInternalExpanded((prev) => ({ ...prev, [path]: next }))\n }\n onToggle?.(path, next, { path, next, timestamp: Date.now() })\n },\n [expanded, isExpandedControlled, onToggle],\n )\n\n const select = React.useCallback(\n (path: string, node: FileTreeNode) => {\n if (!isSelectedControlled) setInternalSelected(path)\n setFocusedPath(path)\n onSelect?.(path, { path, node, timestamp: Date.now() })\n },\n [isSelectedControlled, onSelect],\n )\n\n const searchOnChange = React.useCallback(\n (v: string) => {\n if (!isSearchControlled) setInternalSearch(v)\n onSearchChange?.(v)\n },\n [isSearchControlled, onSearchChange],\n )\n\n const ctxValue: FileTreeContextValue = {\n variant,\n size,\n expanded,\n selectedPath,\n focusedPath,\n toggle,\n select,\n setFocused: setFocusedPath,\n data,\n renderRow,\n renderLeading,\n renderTrailing,\n getNodeProps,\n keyboardNav,\n searchValue,\n searchOnChange,\n searchPlaceholder,\n }\n\n return (\n <FileTreeContext value={ctxValue}>\n <div\n className={cn(fileTreeShellVariants({ variant, size }), className)}\n data-size={size}\n data-slot=\"filetree\"\n data-variant={variant}\n {...props}\n >\n {children ?? (\n <>\n <FileTreeBody />\n </>\n )}\n </div>\n </FileTreeContext>\n )\n}\n\n// Attach sub-components\nFileTree.Header = FileTreeHeader\nFileTree.ProjectBadge = FileTreeProjectBadge\nFileTree.ProjectMeta = FileTreeProjectMeta\nFileTree.Toolbar = FileTreeToolbar\nFileTree.Search = FileTreeSearch\nFileTree.Action = FileTreeAction\nFileTree.Body = FileTreeBody\nFileTree.Footer = FileTreeFooter\n\nexport {\n FileTree,\n FileTreeAction,\n FileTreeBody,\n FileTreeFooter,\n FileTreeHeader,\n FileTreeProjectBadge,\n FileTreeProjectMeta,\n fileTreeRowVariants,\n FileTreeSearch,\n fileTreeShellVariants,\n FileTreeToolbar,\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Label } from './chunk-
|
|
1
|
+
import { Label } from './chunk-KA7747GR.js';
|
|
2
2
|
import { Checkbox } from './chunk-XETKCF73.js';
|
|
3
|
-
import { Button } from './chunk-
|
|
3
|
+
import { Button } from './chunk-X5XP5QVO.js';
|
|
4
4
|
import { cn } from './chunk-HRNDJU7D.js';
|
|
5
5
|
import { cva } from 'class-variance-authority';
|
|
6
6
|
import { Loader2, AlertCircle, ArrowLeft, ArrowRight, Check, Settings2, Table2, Filter, Eye, Clock, Download, Printer, FileJson, FileSpreadsheet, FileText, Calendar } from 'lucide-react';
|
|
@@ -991,5 +991,5 @@ function ReportGenerator({
|
|
|
991
991
|
}
|
|
992
992
|
|
|
993
993
|
export { ReportGenerator, configSectionVariants, errorStateVariants, exportButtonGroupVariants, formActionsVariants, loadingStateVariants, previewContainerVariants, previewContentVariants, previewHeaderVariants, reportGeneratorVariants, stepBadgeVariants, stepIndicatorVariants, stepItemVariants, templateCardVariants, templateGridVariants };
|
|
994
|
-
//# sourceMappingURL=chunk-
|
|
995
|
-
//# sourceMappingURL=chunk-
|
|
994
|
+
//# sourceMappingURL=chunk-XORDGKZI.js.map
|
|
995
|
+
//# sourceMappingURL=chunk-XORDGKZI.js.map
|