@mdigital_ui/ui 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -5
- package/dist/accordion/index.d.ts.map +1 -1
- package/dist/accordion/index.js +3 -3
- package/dist/accordion/types.d.ts +2 -42
- package/dist/accordion/types.d.ts.map +1 -1
- package/dist/alert/index.d.ts +6 -0
- package/dist/alert/index.d.ts.map +1 -0
- package/dist/alert/index.js +5 -0
- package/dist/alert/types.d.ts +24 -0
- package/dist/alert/types.d.ts.map +1 -0
- package/dist/anchor/index.d.ts +6 -0
- package/dist/anchor/index.d.ts.map +1 -0
- package/dist/anchor/types.d.ts +26 -0
- package/dist/anchor/types.d.ts.map +1 -0
- package/dist/autocomplete/index.d.ts +6 -0
- package/dist/autocomplete/index.d.ts.map +1 -0
- package/dist/autocomplete/types.d.ts +39 -0
- package/dist/autocomplete/types.d.ts.map +1 -0
- package/dist/avatar/index.d.ts +0 -6
- package/dist/avatar/index.d.ts.map +1 -1
- package/dist/avatar/index.js +3 -2
- package/dist/avatar/types.d.ts +0 -48
- package/dist/avatar/types.d.ts.map +1 -1
- package/dist/badge/index.d.ts +1 -23
- package/dist/badge/index.d.ts.map +1 -1
- package/dist/badge/index.js +3 -3
- package/dist/badge/types.d.ts +1 -20
- package/dist/badge/types.d.ts.map +1 -1
- package/dist/breadcrumbs/index.d.ts.map +1 -1
- package/dist/breadcrumbs/index.js +7 -6
- package/dist/breadcrumbs/types.d.ts +3 -38
- package/dist/breadcrumbs/types.d.ts.map +1 -1
- package/dist/button/index.d.ts +1 -1
- package/dist/button/index.d.ts.map +1 -1
- package/dist/button/index.js +5 -5
- package/dist/button/types.d.ts +2 -8
- package/dist/button/types.d.ts.map +1 -1
- package/dist/button-group/index.d.ts +0 -28
- package/dist/button-group/index.d.ts.map +1 -1
- package/dist/button-group/index.js +2 -2
- package/dist/button-group/types.d.ts +0 -19
- package/dist/button-group/types.d.ts.map +1 -1
- package/dist/calendar/index.d.ts +6 -0
- package/dist/calendar/index.d.ts.map +1 -0
- package/dist/calendar/types.d.ts +29 -0
- package/dist/calendar/types.d.ts.map +1 -0
- package/dist/card/index.d.ts +1 -41
- package/dist/card/index.d.ts.map +1 -1
- package/dist/card/index.js +3 -3
- package/dist/card/types.d.ts +3 -29
- package/dist/card/types.d.ts.map +1 -1
- package/dist/carousel/carousel-navigation.d.ts.map +1 -1
- package/dist/carousel/index.d.ts +5 -2
- package/dist/carousel/index.d.ts.map +1 -1
- package/dist/carousel/index.js +2 -2
- package/dist/carousel/styles.d.ts +12 -0
- package/dist/carousel/styles.d.ts.map +1 -0
- package/dist/cascader/CascaderMenu.d.ts +41 -0
- package/dist/cascader/CascaderMenu.d.ts.map +1 -0
- package/dist/cascader/index.d.ts +0 -21
- package/dist/cascader/index.d.ts.map +1 -1
- package/dist/cascader/index.js +3 -3
- package/dist/cascader/types.d.ts +3 -89
- package/dist/cascader/types.d.ts.map +1 -1
- package/dist/checkbox/index.d.ts.map +1 -1
- package/dist/checkbox/index.js +3 -3
- package/dist/checkbox/types.d.ts +2 -2
- package/dist/checkbox/types.d.ts.map +1 -1
- package/dist/checkbox-group/index.d.ts.map +1 -1
- package/dist/checkbox-group/index.js +2 -2
- package/dist/checkbox-group/types.d.ts +0 -24
- package/dist/checkbox-group/types.d.ts.map +1 -1
- package/dist/{chunk-HCOTO5WX.js → chunk-253JZOYG.js} +8 -9
- package/dist/chunk-253JZOYG.js.map +1 -0
- package/dist/{chunk-FZSCLZF6.js → chunk-3D77IPKB.js} +68 -113
- package/dist/chunk-3D77IPKB.js.map +1 -0
- package/dist/{chunk-GJPZOMFE.js → chunk-3XOHSE3X.js} +71 -34
- package/dist/chunk-3XOHSE3X.js.map +1 -0
- package/dist/{chunk-ROA7BYGB.js → chunk-3YP7HY3Y.js} +7 -5
- package/dist/chunk-3YP7HY3Y.js.map +1 -0
- package/dist/chunk-4HKPDSA6.js +378 -0
- package/dist/chunk-4HKPDSA6.js.map +1 -0
- package/dist/{chunk-OFUPJH35.js → chunk-4TEZWGX7.js} +3 -3
- package/dist/{chunk-OFUPJH35.js.map → chunk-4TEZWGX7.js.map} +1 -1
- package/dist/{chunk-TLNHWOQQ.js → chunk-4ZXHLPRS.js} +53 -44
- package/dist/chunk-4ZXHLPRS.js.map +1 -0
- package/dist/{chunk-6LYRMQOI.js → chunk-5MBKTMDW.js} +21 -16
- package/dist/chunk-5MBKTMDW.js.map +1 -0
- package/dist/{chunk-CN74CNAN.js → chunk-5SEVPU6C.js} +8 -22
- package/dist/chunk-5SEVPU6C.js.map +1 -0
- package/dist/{chunk-6JGNJI5T.js → chunk-7RT65ZGV.js} +38 -26
- package/dist/chunk-7RT65ZGV.js.map +1 -0
- package/dist/{chunk-I32ZQUYY.js → chunk-A4MYCEGM.js} +15 -16
- package/dist/chunk-A4MYCEGM.js.map +1 -0
- package/dist/{chunk-KJTMZJ7V.js → chunk-ADZWWBAX.js} +76 -110
- package/dist/chunk-ADZWWBAX.js.map +1 -0
- package/dist/{chunk-YXLIGJTN.js → chunk-AFW2ORFT.js} +16 -8
- package/dist/chunk-AFW2ORFT.js.map +1 -0
- package/dist/{chunk-OLTQAMV2.js → chunk-BGMYX7L5.js} +9 -24
- package/dist/chunk-BGMYX7L5.js.map +1 -0
- package/dist/chunk-BKLJDEUX.js +857 -0
- package/dist/chunk-BKLJDEUX.js.map +1 -0
- package/dist/{chunk-4FFVNUTK.js → chunk-BNHRUHI4.js} +7 -6
- package/dist/chunk-BNHRUHI4.js.map +1 -0
- package/dist/{chunk-DUIL5BYS.js → chunk-BS4PZPY6.js} +82 -53
- package/dist/chunk-BS4PZPY6.js.map +1 -0
- package/dist/{chunk-POLVJ36Y.js → chunk-C32HL4XU.js} +13 -38
- package/dist/chunk-C32HL4XU.js.map +1 -0
- package/dist/chunk-C65SCJD6.js +138 -0
- package/dist/chunk-C65SCJD6.js.map +1 -0
- package/dist/{chunk-3BZE6BBJ.js → chunk-CUXQZRDI.js} +45 -34
- package/dist/chunk-CUXQZRDI.js.map +1 -0
- package/dist/{chunk-674JC24S.js → chunk-DDZCRCTQ.js} +28 -29
- package/dist/chunk-DDZCRCTQ.js.map +1 -0
- package/dist/{chunk-64NHVOZS.js → chunk-FU5Q4WVX.js} +26 -16
- package/dist/chunk-FU5Q4WVX.js.map +1 -0
- package/dist/chunk-G6QIIWKU.js +24 -0
- package/dist/chunk-G6QIIWKU.js.map +1 -0
- package/dist/{chunk-UTWQ2FZK.js → chunk-GOBUFGGJ.js} +45 -108
- package/dist/chunk-GOBUFGGJ.js.map +1 -0
- package/dist/{chunk-WRSG7WU5.js → chunk-HJITFPBT.js} +78 -94
- package/dist/chunk-HJITFPBT.js.map +1 -0
- package/dist/{chunk-ZJNGZCRB.js → chunk-HR5TGNOF.js} +54 -153
- package/dist/chunk-HR5TGNOF.js.map +1 -0
- package/dist/{chunk-HECAAILV.js → chunk-HRVOTFU4.js} +24 -16
- package/dist/chunk-HRVOTFU4.js.map +1 -0
- package/dist/{chunk-LX4FDH4J.js → chunk-HSMO2BR4.js} +13 -22
- package/dist/chunk-HSMO2BR4.js.map +1 -0
- package/dist/chunk-HVHQA34X.js +534 -0
- package/dist/chunk-HVHQA34X.js.map +1 -0
- package/dist/{chunk-6G3BMY4N.js → chunk-I5AD247M.js} +80 -85
- package/dist/chunk-I5AD247M.js.map +1 -0
- package/dist/chunk-I7HJBHQU.js +99 -0
- package/dist/chunk-I7HJBHQU.js.map +1 -0
- package/dist/{chunk-3PWILVOE.js → chunk-J2WIZULN.js} +50 -50
- package/dist/chunk-J2WIZULN.js.map +1 -0
- package/dist/{chunk-VOODO2ZE.js → chunk-JFTSWOGE.js} +12 -32
- package/dist/chunk-JFTSWOGE.js.map +1 -0
- package/dist/{chunk-LOYLJRCF.js → chunk-JIXINKUJ.js} +8 -17
- package/dist/chunk-JIXINKUJ.js.map +1 -0
- package/dist/{chunk-6HGUDHHE.js → chunk-L5BU2QTI.js} +3 -5
- package/dist/chunk-L5BU2QTI.js.map +1 -0
- package/dist/chunk-LJOQ2C5W.js +81 -0
- package/dist/chunk-LJOQ2C5W.js.map +1 -0
- package/dist/chunk-LWYZCSX4.js +531 -0
- package/dist/chunk-LWYZCSX4.js.map +1 -0
- package/dist/{chunk-3BIV3QE2.js → chunk-LXHFGQOI.js} +61 -29
- package/dist/chunk-LXHFGQOI.js.map +1 -0
- package/dist/{chunk-ZIYA7TGX.js → chunk-NMP4HY6M.js} +13 -23
- package/dist/chunk-NMP4HY6M.js.map +1 -0
- package/dist/{chunk-2TLOWZE4.js → chunk-NTCAZ2LF.js} +64 -183
- package/dist/chunk-NTCAZ2LF.js.map +1 -0
- package/dist/chunk-NZHKNUGE.js +96 -0
- package/dist/chunk-NZHKNUGE.js.map +1 -0
- package/dist/{chunk-764UKE6X.js → chunk-OGB5QPNZ.js} +11 -92
- package/dist/chunk-OGB5QPNZ.js.map +1 -0
- package/dist/chunk-OJAHIPPP.js +198 -0
- package/dist/chunk-OJAHIPPP.js.map +1 -0
- package/dist/{chunk-2PNLIQYM.js → chunk-ON76IMMI.js} +3 -3
- package/dist/chunk-ON76IMMI.js.map +1 -0
- package/dist/{chunk-HUXODBIO.js → chunk-PB5VGXS5.js} +42 -101
- package/dist/chunk-PB5VGXS5.js.map +1 -0
- package/dist/chunk-PQOIW5CM.js +27 -0
- package/dist/chunk-PQOIW5CM.js.map +1 -0
- package/dist/{chunk-BVO2BNFG.js → chunk-PRDJLQLB.js} +23 -103
- package/dist/chunk-PRDJLQLB.js.map +1 -0
- package/dist/{chunk-N2WHJ3FI.js → chunk-QEAALOJC.js} +14 -16
- package/dist/chunk-QEAALOJC.js.map +1 -0
- package/dist/{chunk-NGYLRX6F.js → chunk-RAS6HUEI.js} +2 -2
- package/dist/chunk-RAS6HUEI.js.map +1 -0
- package/dist/{chunk-C5IGZLIT.js → chunk-ROQGBDET.js} +9 -23
- package/dist/chunk-ROQGBDET.js.map +1 -0
- package/dist/{chunk-Y4XAXZHB.js → chunk-RRPMZYVN.js} +9 -8
- package/dist/chunk-RRPMZYVN.js.map +1 -0
- package/dist/{chunk-D4SUSZDN.js → chunk-S6HO7HUY.js} +19 -17
- package/dist/chunk-S6HO7HUY.js.map +1 -0
- package/dist/{chunk-YS5AIY4A.js → chunk-SFP77VS3.js} +6 -5
- package/dist/chunk-SFP77VS3.js.map +1 -0
- package/dist/{chunk-RFHTC6AH.js → chunk-SJLH5ZDW.js} +16 -38
- package/dist/chunk-SJLH5ZDW.js.map +1 -0
- package/dist/{chunk-SGRACNBP.js → chunk-STAYOHDI.js} +13 -5
- package/dist/chunk-STAYOHDI.js.map +1 -0
- package/dist/{chunk-ON2CMF6J.js → chunk-TBKPQOXF.js} +58 -35
- package/dist/chunk-TBKPQOXF.js.map +1 -0
- package/dist/{chunk-GOLARX5K.js → chunk-TDNPACQD.js} +14 -11
- package/dist/chunk-TDNPACQD.js.map +1 -0
- package/dist/{chunk-7UCNBMCV.js → chunk-TQEMGWZ2.js} +27 -34
- package/dist/chunk-TQEMGWZ2.js.map +1 -0
- package/dist/{chunk-X3YNHX77.js → chunk-U4JPTWK6.js} +33 -34
- package/dist/chunk-U4JPTWK6.js.map +1 -0
- package/dist/{chunk-R3TLU26W.js → chunk-UFC3RGIN.js} +9 -7
- package/dist/chunk-UFC3RGIN.js.map +1 -0
- package/dist/{chunk-KH577UDI.js → chunk-W5VLFE4U.js} +11 -8
- package/dist/chunk-W5VLFE4U.js.map +1 -0
- package/dist/{chunk-G6NVGBYZ.js → chunk-WG5AYAC6.js} +27 -35
- package/dist/chunk-WG5AYAC6.js.map +1 -0
- package/dist/{chunk-YJOLLSHH.js → chunk-WQT24BGG.js} +44 -49
- package/dist/chunk-WQT24BGG.js.map +1 -0
- package/dist/{chunk-JWTWPZ32.js → chunk-X7MF3TIF.js} +15 -19
- package/dist/chunk-X7MF3TIF.js.map +1 -0
- package/dist/chunk-XAM5EKOS.js +150 -0
- package/dist/chunk-XAM5EKOS.js.map +1 -0
- package/dist/{chunk-EHWXPH76.js → chunk-XBXPY7U3.js} +9 -7
- package/dist/chunk-XBXPY7U3.js.map +1 -0
- package/dist/{chunk-5PUATOLR.js → chunk-XCK62GVU.js} +4 -4
- package/dist/chunk-XCK62GVU.js.map +1 -0
- package/dist/{chunk-ONGJXAYQ.js → chunk-XMBZBXXS.js} +9 -16
- package/dist/chunk-XMBZBXXS.js.map +1 -0
- package/dist/{chunk-H6G4BUPA.js → chunk-XOEEAMMY.js} +210 -183
- package/dist/chunk-XOEEAMMY.js.map +1 -0
- package/dist/{chunk-O3V3BTIJ.js → chunk-Z3DIBMBQ.js} +60 -107
- package/dist/chunk-Z3DIBMBQ.js.map +1 -0
- package/dist/clipboard/index.d.ts.map +1 -1
- package/dist/clipboard/index.js +4 -4
- package/dist/clipboard/types.d.ts +2 -35
- package/dist/clipboard/types.d.ts.map +1 -1
- package/dist/collapse/index.d.ts.map +1 -1
- package/dist/collapse/index.js +4 -3
- package/dist/collapse/types.d.ts +2 -35
- package/dist/collapse/types.d.ts.map +1 -1
- package/dist/color-picker/index.d.ts +8 -0
- package/dist/color-picker/index.d.ts.map +1 -0
- package/dist/color-picker/types.d.ts +42 -0
- package/dist/color-picker/types.d.ts.map +1 -0
- package/dist/command/index.d.ts +39 -66
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +4 -3
- package/dist/command/types.d.ts +2 -2
- package/dist/command/types.d.ts.map +1 -1
- package/dist/context-menu/index.d.ts +2 -46
- package/dist/context-menu/index.d.ts.map +1 -1
- package/dist/context-menu/index.js +5 -3
- package/dist/context-menu/types.d.ts +21 -63
- package/dist/context-menu/types.d.ts.map +1 -1
- package/dist/date-picker/CalendarHeader.d.ts +18 -0
- package/dist/date-picker/CalendarHeader.d.ts.map +1 -0
- package/dist/date-picker/MonthSelector.d.ts +11 -0
- package/dist/date-picker/MonthSelector.d.ts.map +1 -0
- package/dist/date-picker/PickerWrapper.d.ts +18 -0
- package/dist/date-picker/PickerWrapper.d.ts.map +1 -0
- package/dist/date-picker/RangePicker.d.ts +4 -0
- package/dist/date-picker/RangePicker.d.ts.map +1 -0
- package/dist/date-picker/TimePicker.d.ts +4 -0
- package/dist/date-picker/TimePicker.d.ts.map +1 -0
- package/dist/date-picker/YearSelector.d.ts +10 -0
- package/dist/date-picker/YearSelector.d.ts.map +1 -0
- package/dist/date-picker/index.d.ts +6 -6
- package/dist/date-picker/index.d.ts.map +1 -1
- package/dist/date-picker/index.js +4 -4
- package/dist/date-picker/shared.d.ts +3 -0
- package/dist/date-picker/shared.d.ts.map +1 -0
- package/dist/date-picker/types.d.ts +2 -2
- package/dist/date-picker/types.d.ts.map +1 -1
- package/dist/date-picker/utils.d.ts +1 -1
- package/dist/date-picker/utils.d.ts.map +1 -1
- package/dist/descriptions/index.d.ts.map +1 -1
- package/dist/descriptions/index.js +3 -2
- package/dist/divider/index.d.ts.map +1 -1
- package/dist/divider/index.js +3 -2
- package/dist/divider/types.d.ts +0 -12
- package/dist/divider/types.d.ts.map +1 -1
- package/dist/drawer/index.d.ts +4 -1
- package/dist/drawer/index.d.ts.map +1 -1
- package/dist/drawer/index.js +2 -2
- package/dist/drawer/types.d.ts +2 -145
- package/dist/drawer/types.d.ts.map +1 -1
- package/dist/dropdown/index.d.ts.map +1 -1
- package/dist/dropdown/index.js +6 -5
- package/dist/dropdown/types.d.ts +2 -71
- package/dist/dropdown/types.d.ts.map +1 -1
- package/dist/fetching-overlay/index.d.ts.map +1 -1
- package/dist/fetching-overlay/index.js +4 -4
- package/dist/float-button/index.d.ts +9 -0
- package/dist/float-button/index.d.ts.map +1 -0
- package/dist/float-button/types.d.ts +45 -0
- package/dist/float-button/types.d.ts.map +1 -0
- package/dist/float-input/index.d.ts.map +1 -1
- package/dist/float-input/index.js +4 -4
- package/dist/float-input/types.d.ts +5 -10
- package/dist/float-input/types.d.ts.map +1 -1
- package/dist/grid/index.d.ts +1 -1
- package/dist/grid/index.d.ts.map +1 -1
- package/dist/grid/index.js +2 -2
- package/dist/grid/types.d.ts +1 -9
- package/dist/grid/types.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useMenuNavigation.d.ts +18 -0
- package/dist/hooks/useMenuNavigation.d.ts.map +1 -0
- package/dist/image/index.d.ts.map +1 -1
- package/dist/image/index.js +2 -2
- package/dist/image/types.d.ts +2 -34
- package/dist/image/types.d.ts.map +1 -1
- package/dist/index.d.ts +30 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3030 -90
- package/dist/index.js.map +1 -1
- package/dist/input/index.d.ts.map +1 -1
- package/dist/input/index.js +4 -4
- package/dist/input/types.d.ts +9 -4
- package/dist/input/types.d.ts.map +1 -1
- package/dist/input-group/index.d.ts.map +1 -1
- package/dist/input-group/index.js +2 -2
- package/dist/input-group/types.d.ts +7 -19
- package/dist/input-group/types.d.ts.map +1 -1
- package/dist/input-otp/index.d.ts.map +1 -1
- package/dist/input-otp/index.js +2 -2
- package/dist/input-otp/types.d.ts +3 -81
- package/dist/input-otp/types.d.ts.map +1 -1
- package/dist/input-password/index.d.ts.map +1 -1
- package/dist/input-password/index.js +5 -5
- package/dist/input-password/types.d.ts +0 -6
- package/dist/input-password/types.d.ts.map +1 -1
- package/dist/kbd/index.d.ts.map +1 -1
- package/dist/kbd/index.js +3 -3
- package/dist/kbd/types.d.ts +2 -17
- package/dist/kbd/types.d.ts.map +1 -1
- package/dist/link/index.d.ts +1 -1
- package/dist/link/index.d.ts.map +1 -1
- package/dist/link/index.js +3 -2
- package/dist/mentions/index.d.ts +6 -0
- package/dist/mentions/index.d.ts.map +1 -0
- package/dist/mentions/types.d.ts +36 -0
- package/dist/mentions/types.d.ts.map +1 -0
- package/dist/menubar/index.d.ts.map +1 -1
- package/dist/menubar/index.js +5 -4
- package/dist/modal/index.d.ts +1 -1
- package/dist/modal/index.d.ts.map +1 -1
- package/dist/modal/index.js +2 -2
- package/dist/modal/types.d.ts +7 -41
- package/dist/modal/types.d.ts.map +1 -1
- package/dist/multi-select/index.d.ts.map +1 -1
- package/dist/multi-select/index.js +8 -6
- package/dist/multi-select/types.d.ts +2 -34
- package/dist/multi-select/types.d.ts.map +1 -1
- package/dist/navigation-menu/index.d.ts.map +1 -1
- package/dist/navigation-menu/index.js +2 -2
- package/dist/navigation-menu/types.d.ts +2 -0
- package/dist/navigation-menu/types.d.ts.map +1 -1
- package/dist/notification/index.d.ts.map +1 -1
- package/dist/notification/index.js +3 -3
- package/dist/notification/types.d.ts +2 -62
- package/dist/notification/types.d.ts.map +1 -1
- package/dist/number-input/index.d.ts.map +1 -1
- package/dist/number-input/index.js +6 -5
- package/dist/number-input/types.d.ts +5 -2
- package/dist/number-input/types.d.ts.map +1 -1
- package/dist/pagination/index.d.ts.map +1 -1
- package/dist/pagination/index.js +4 -3
- package/dist/pagination/types.d.ts +3 -53
- package/dist/pagination/types.d.ts.map +1 -1
- package/dist/popover/index.d.ts +1 -1
- package/dist/popover/index.d.ts.map +1 -1
- package/dist/popover/index.js +3 -3
- package/dist/popover/types.d.ts +3 -17
- package/dist/popover/types.d.ts.map +1 -1
- package/dist/progress/index.d.ts.map +1 -1
- package/dist/progress/index.js +3 -2
- package/dist/progress/styles.d.ts +4 -5
- package/dist/progress/styles.d.ts.map +1 -1
- package/dist/progress/types.d.ts +2 -44
- package/dist/progress/types.d.ts.map +1 -1
- package/dist/qr-code/index.d.ts +6 -0
- package/dist/qr-code/index.d.ts.map +1 -0
- package/dist/qr-code/types.d.ts +49 -0
- package/dist/qr-code/types.d.ts.map +1 -0
- package/dist/radio/index.d.ts.map +1 -1
- package/dist/radio/index.js +3 -3
- package/dist/radio/types.d.ts +2 -2
- package/dist/radio/types.d.ts.map +1 -1
- package/dist/radio-group/index.d.ts.map +1 -1
- package/dist/radio-group/index.js +2 -2
- package/dist/radio-group/types.d.ts +0 -24
- package/dist/radio-group/types.d.ts.map +1 -1
- package/dist/rating/index.d.ts.map +1 -1
- package/dist/rating/index.js +3 -2
- package/dist/rating/types.d.ts +2 -2
- package/dist/rating/types.d.ts.map +1 -1
- package/dist/resizable/index.d.ts +7 -0
- package/dist/resizable/index.d.ts.map +1 -0
- package/dist/resizable/types.d.ts +8 -0
- package/dist/resizable/types.d.ts.map +1 -0
- package/dist/result/index.d.ts +6 -0
- package/dist/result/index.d.ts.map +1 -0
- package/dist/result/types.d.ts +22 -0
- package/dist/result/types.d.ts.map +1 -0
- package/dist/scroll-area/index.d.ts.map +1 -1
- package/dist/scroll-area/index.js +2 -2
- package/dist/select/index.d.ts.map +1 -1
- package/dist/select/index.js +8 -6
- package/dist/select/types.d.ts +8 -3
- package/dist/select/types.d.ts.map +1 -1
- package/dist/shared/useSelectBase.d.ts +4 -2
- package/dist/shared/useSelectBase.d.ts.map +1 -1
- package/dist/skeleton/index.d.ts.map +1 -1
- package/dist/skeleton/index.js +3 -3
- package/dist/skeleton/types.d.ts +1 -1
- package/dist/skeleton/types.d.ts.map +1 -1
- package/dist/slider/index.d.ts.map +1 -1
- package/dist/slider/index.js +3 -2
- package/dist/slider/types.d.ts +2 -36
- package/dist/slider/types.d.ts.map +1 -1
- package/dist/spinner/index.d.ts +2 -1
- package/dist/spinner/index.d.ts.map +1 -1
- package/dist/spinner/index.js +3 -3
- package/dist/spinner/types.d.ts +1 -1
- package/dist/spinner/types.d.ts.map +1 -1
- package/dist/stepper/index.d.ts +3 -3
- package/dist/stepper/index.d.ts.map +1 -1
- package/dist/stepper/index.js +3 -2
- package/dist/stepper/types.d.ts +3 -2
- package/dist/stepper/types.d.ts.map +1 -1
- package/dist/switch/index.d.ts.map +1 -1
- package/dist/switch/index.js +3 -3
- package/dist/switch/types.d.ts +2 -31
- package/dist/switch/types.d.ts.map +1 -1
- package/dist/table/TableHeaderCell.d.ts.map +1 -1
- package/dist/table/index.d.ts +1 -1
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +11 -11
- package/dist/table/types.d.ts +8 -2
- package/dist/table/types.d.ts.map +1 -1
- package/dist/tabs/index.d.ts.map +1 -1
- package/dist/tabs/index.js +3 -3
- package/dist/tabs/types.d.ts +3 -53
- package/dist/tabs/types.d.ts.map +1 -1
- package/dist/tag/index.d.ts +1 -1
- package/dist/tag/index.d.ts.map +1 -1
- package/dist/tag/index.js +3 -3
- package/dist/tag/types.d.ts +1 -1
- package/dist/tag/types.d.ts.map +1 -1
- package/dist/tags-input/index.d.ts +6 -0
- package/dist/tags-input/index.d.ts.map +1 -0
- package/dist/tags-input/types.d.ts +36 -0
- package/dist/tags-input/types.d.ts.map +1 -0
- package/dist/textarea/index.d.ts.map +1 -1
- package/dist/textarea/index.js +2 -2
- package/dist/textarea/types.d.ts +3 -54
- package/dist/textarea/types.d.ts.map +1 -1
- package/dist/theme/ThemeProvider.d.ts +11 -3
- package/dist/theme/ThemeProvider.d.ts.map +1 -1
- package/dist/theme/index.js +1 -1
- package/dist/theme/types.d.ts +0 -12
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/timeline/index.d.ts.map +1 -1
- package/dist/timeline/index.js +3 -2
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toast/index.js +3 -3
- package/dist/toast/types.d.ts +0 -6
- package/dist/toast/types.d.ts.map +1 -1
- package/dist/toggle/index.d.ts.map +1 -1
- package/dist/toggle/index.js +4 -3
- package/dist/toggle/types.d.ts +3 -26
- package/dist/toggle/types.d.ts.map +1 -1
- package/dist/toggle-group/index.d.ts.map +1 -1
- package/dist/toggle-group/index.js +4 -3
- package/dist/toggle-group/types.d.ts +3 -44
- package/dist/toggle-group/types.d.ts.map +1 -1
- package/dist/tooltip/index.d.ts.map +1 -1
- package/dist/tooltip/index.js +3 -3
- package/dist/tooltip/types.d.ts +2 -44
- package/dist/tooltip/types.d.ts.map +1 -1
- package/dist/tour/index.d.ts +6 -0
- package/dist/tour/index.d.ts.map +1 -0
- package/dist/tour/types.d.ts +45 -0
- package/dist/tour/types.d.ts.map +1 -0
- package/dist/transfer/index.d.ts.map +1 -1
- package/dist/transfer/index.js +4 -4
- package/dist/transfer/types.d.ts +0 -20
- package/dist/transfer/types.d.ts.map +1 -1
- package/dist/transfer/utils.d.ts.map +1 -1
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +2 -2
- package/dist/tree/types.d.ts +2 -73
- package/dist/tree/types.d.ts.map +1 -1
- package/dist/tree-select/index.d.ts.map +1 -1
- package/dist/tree-select/index.js +5 -5
- package/dist/tree-select/types.d.ts +3 -91
- package/dist/tree-select/types.d.ts.map +1 -1
- package/dist/types.d.ts +1 -35
- package/dist/types.d.ts.map +1 -1
- package/dist/typography/index.d.ts +8 -0
- package/dist/typography/index.d.ts.map +1 -0
- package/dist/typography/types.d.ts +33 -0
- package/dist/typography/types.d.ts.map +1 -0
- package/dist/upload/index.d.ts.map +1 -1
- package/dist/upload/index.js +4 -3
- package/dist/upload/types.d.ts +5 -32
- package/dist/upload/types.d.ts.map +1 -1
- package/dist/upload/utils.d.ts +2 -1
- package/dist/upload/utils.d.ts.map +1 -1
- package/dist/utils.d.ts +0 -39
- package/dist/utils.d.ts.map +1 -1
- package/dist/variants.d.ts +3 -314
- package/dist/variants.d.ts.map +1 -1
- package/dist/watermark/index.d.ts +6 -0
- package/dist/watermark/index.d.ts.map +1 -0
- package/dist/watermark/types.d.ts +24 -0
- package/dist/watermark/types.d.ts.map +1 -0
- package/package.json +5 -2
- package/styles/global.css +575 -2012
- package/styles/themes/dark.css +15 -5
- package/styles/themes/light.css +20 -2
- package/styles/themes/presets/corporate.css +2 -0
- package/styles/themes/presets/minimal.css +2 -0
- package/styles/themes/presets/vibrant.css +2 -0
- package/dist/chunk-2PNLIQYM.js.map +0 -1
- package/dist/chunk-2TLOWZE4.js.map +0 -1
- package/dist/chunk-2WZVD7P3.js +0 -145
- package/dist/chunk-2WZVD7P3.js.map +0 -1
- package/dist/chunk-3BIV3QE2.js.map +0 -1
- package/dist/chunk-3BZE6BBJ.js.map +0 -1
- package/dist/chunk-3PWILVOE.js.map +0 -1
- package/dist/chunk-4FFVNUTK.js.map +0 -1
- package/dist/chunk-5PUATOLR.js.map +0 -1
- package/dist/chunk-64NHVOZS.js.map +0 -1
- package/dist/chunk-674JC24S.js.map +0 -1
- package/dist/chunk-6BAP6QUT.js +0 -72
- package/dist/chunk-6BAP6QUT.js.map +0 -1
- package/dist/chunk-6G3BMY4N.js.map +0 -1
- package/dist/chunk-6HGUDHHE.js.map +0 -1
- package/dist/chunk-6JGNJI5T.js.map +0 -1
- package/dist/chunk-6LYRMQOI.js.map +0 -1
- package/dist/chunk-6YOOKE6C.js +0 -138
- package/dist/chunk-6YOOKE6C.js.map +0 -1
- package/dist/chunk-764UKE6X.js.map +0 -1
- package/dist/chunk-7UCNBMCV.js.map +0 -1
- package/dist/chunk-BPRCBPVJ.js +0 -253
- package/dist/chunk-BPRCBPVJ.js.map +0 -1
- package/dist/chunk-BVO2BNFG.js.map +0 -1
- package/dist/chunk-C5IGZLIT.js.map +0 -1
- package/dist/chunk-CN74CNAN.js.map +0 -1
- package/dist/chunk-D4SUSZDN.js.map +0 -1
- package/dist/chunk-DUIL5BYS.js.map +0 -1
- package/dist/chunk-EHWXPH76.js.map +0 -1
- package/dist/chunk-ERRZ2CSG.js +0 -192
- package/dist/chunk-ERRZ2CSG.js.map +0 -1
- package/dist/chunk-EZGK67T6.js +0 -383
- package/dist/chunk-EZGK67T6.js.map +0 -1
- package/dist/chunk-FZSCLZF6.js.map +0 -1
- package/dist/chunk-G6NVGBYZ.js.map +0 -1
- package/dist/chunk-GJPZOMFE.js.map +0 -1
- package/dist/chunk-GOLARX5K.js.map +0 -1
- package/dist/chunk-GVVP5TZM.js +0 -506
- package/dist/chunk-GVVP5TZM.js.map +0 -1
- package/dist/chunk-H6G4BUPA.js.map +0 -1
- package/dist/chunk-HCOTO5WX.js.map +0 -1
- package/dist/chunk-HECAAILV.js.map +0 -1
- package/dist/chunk-HUXODBIO.js.map +0 -1
- package/dist/chunk-I32ZQUYY.js.map +0 -1
- package/dist/chunk-JWTWPZ32.js.map +0 -1
- package/dist/chunk-KH577UDI.js.map +0 -1
- package/dist/chunk-KJTMZJ7V.js.map +0 -1
- package/dist/chunk-L5UYN5LX.js +0 -787
- package/dist/chunk-L5UYN5LX.js.map +0 -1
- package/dist/chunk-LOYLJRCF.js.map +0 -1
- package/dist/chunk-LX4FDH4J.js.map +0 -1
- package/dist/chunk-N2WHJ3FI.js.map +0 -1
- package/dist/chunk-NGYLRX6F.js.map +0 -1
- package/dist/chunk-O3V3BTIJ.js.map +0 -1
- package/dist/chunk-OLTQAMV2.js.map +0 -1
- package/dist/chunk-ON2CMF6J.js.map +0 -1
- package/dist/chunk-ONGJXAYQ.js.map +0 -1
- package/dist/chunk-OQFYIKWR.js +0 -1264
- package/dist/chunk-OQFYIKWR.js.map +0 -1
- package/dist/chunk-POLVJ36Y.js.map +0 -1
- package/dist/chunk-POXI7JJ4.js +0 -351
- package/dist/chunk-POXI7JJ4.js.map +0 -1
- package/dist/chunk-R3TLU26W.js.map +0 -1
- package/dist/chunk-RFHTC6AH.js.map +0 -1
- package/dist/chunk-ROA7BYGB.js.map +0 -1
- package/dist/chunk-SGRACNBP.js.map +0 -1
- package/dist/chunk-TLNHWOQQ.js.map +0 -1
- package/dist/chunk-UTWQ2FZK.js.map +0 -1
- package/dist/chunk-VOODO2ZE.js.map +0 -1
- package/dist/chunk-WRSG7WU5.js.map +0 -1
- package/dist/chunk-X3YNHX77.js.map +0 -1
- package/dist/chunk-Y4XAXZHB.js.map +0 -1
- package/dist/chunk-YJOLLSHH.js.map +0 -1
- package/dist/chunk-YS5AIY4A.js.map +0 -1
- package/dist/chunk-YXLIGJTN.js.map +0 -1
- package/dist/chunk-ZIYA7TGX.js.map +0 -1
- package/dist/chunk-ZJNGZCRB.js.map +0 -1
- package/dist/empty/index.d.ts +0 -6
- package/dist/empty/index.d.ts.map +0 -1
- package/dist/empty/index.js +0 -4
- package/dist/empty/types.d.ts +0 -62
- package/dist/empty/types.d.ts.map +0 -1
- package/dist/styles/tokens.d.ts +0 -428
- package/dist/styles/tokens.d.ts.map +0 -1
- /package/dist/{empty → alert}/index.js.map +0 -0
|
@@ -0,0 +1,531 @@
|
|
|
1
|
+
import { colorVars } from './chunk-G6QIIWKU.js';
|
|
2
|
+
import { cn, iconSizes } from './chunk-RAS6HUEI.js';
|
|
3
|
+
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { Loader2, X, ChevronDown, Check, ChevronRight } from 'lucide-react';
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
var cascaderMenuVariants = cva(
|
|
10
|
+
"overflow-auto rounded-md border bg-background w-[200px] max-h-[300px]",
|
|
11
|
+
{
|
|
12
|
+
variants: {
|
|
13
|
+
size: {
|
|
14
|
+
xs: "w-[160px]",
|
|
15
|
+
sm: "w-[180px]",
|
|
16
|
+
md: "w-[200px]",
|
|
17
|
+
lg: "w-[220px]"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
defaultVariants: { size: "md" }
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
var cascaderItemVariants = cva(
|
|
24
|
+
"relative cursor-pointer select-none text-text-primary transition-colors flex items-center gap-2 w-full",
|
|
25
|
+
{
|
|
26
|
+
variants: {
|
|
27
|
+
size: {
|
|
28
|
+
xs: "px-2 py-1 text-xs min-h-[28px]",
|
|
29
|
+
sm: "px-2.5 py-1.5 text-sm min-h-[32px]",
|
|
30
|
+
md: "px-3 py-2 text-base min-h-[36px]",
|
|
31
|
+
lg: "px-3.5 py-2.5 text-lg min-h-[44px]"
|
|
32
|
+
},
|
|
33
|
+
disabled: { true: "opacity-50 cursor-not-allowed", false: "hover:bg-surface" },
|
|
34
|
+
active: { true: "bg-surface", false: "" },
|
|
35
|
+
selected: { true: "font-medium", false: "" }
|
|
36
|
+
},
|
|
37
|
+
defaultVariants: { size: "md", disabled: false, active: false, selected: false }
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
var CascaderMenu = ({
|
|
41
|
+
activeMenus,
|
|
42
|
+
selectedPath,
|
|
43
|
+
hoveredPath,
|
|
44
|
+
focusedIndex,
|
|
45
|
+
selectedPathSet,
|
|
46
|
+
selectionStateMap,
|
|
47
|
+
size,
|
|
48
|
+
color,
|
|
49
|
+
multiple,
|
|
50
|
+
expandTrigger,
|
|
51
|
+
emptyContent,
|
|
52
|
+
onItemClick,
|
|
53
|
+
onItemHover,
|
|
54
|
+
classNames,
|
|
55
|
+
menuRefs
|
|
56
|
+
}) => {
|
|
57
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex [&>*:not(:first-child)]:rounded-l-none [&>*:not(:last-child)]:border-r-0 [&>*:not(:last-child)]:rounded-r-none cascader_dropdown", colorVars[color], classNames?.dropdown), "data-slot": "dropdown", children: activeMenus.map((menu, level) => /* @__PURE__ */ jsx(
|
|
58
|
+
"div",
|
|
59
|
+
{
|
|
60
|
+
ref: (el) => {
|
|
61
|
+
menuRefs.current[level] = el;
|
|
62
|
+
},
|
|
63
|
+
role: "listbox",
|
|
64
|
+
className: cn(cascaderMenuVariants({ size }), "border-border cascader_menu", classNames?.menu),
|
|
65
|
+
"data-slot": "menu",
|
|
66
|
+
children: menu.length === 0 ? /* @__PURE__ */ jsx("div", { className: "px-3 py-6 text-center text-text-secondary text-sm", children: emptyContent }) : menu.map((option, index) => {
|
|
67
|
+
const isActive = selectedPath[level] === option.value || expandTrigger === "hover" && hoveredPath[level] === index;
|
|
68
|
+
const isFocused = focusedIndex?.level === level && focusedIndex?.index === index;
|
|
69
|
+
const currentPath = selectedPath.slice(0, level);
|
|
70
|
+
const fullPath = [...currentPath, option.value];
|
|
71
|
+
const selectionState = multiple && selectionStateMap ? selectionStateMap.get(fullPath.join("\0")) ?? { checked: false, indeterminate: false } : null;
|
|
72
|
+
const isLeafSelected = !multiple && selectedPathSet.has(fullPath.join("\0")) && (!option.children || option.children.length === 0);
|
|
73
|
+
return /* @__PURE__ */ jsxs(
|
|
74
|
+
"div",
|
|
75
|
+
{
|
|
76
|
+
role: "option",
|
|
77
|
+
"aria-selected": isLeafSelected || (selectionState?.checked ?? false),
|
|
78
|
+
"aria-disabled": option.disabled,
|
|
79
|
+
className: cn(
|
|
80
|
+
cascaderItemVariants({ size, disabled: !!option.disabled, active: isActive || isFocused, selected: isLeafSelected }),
|
|
81
|
+
isLeafSelected && "bg-slot-10 text-slot",
|
|
82
|
+
"cascader_option",
|
|
83
|
+
classNames?.option
|
|
84
|
+
),
|
|
85
|
+
onClick: () => onItemClick(option, level),
|
|
86
|
+
onMouseEnter: () => onItemHover(option, level, index),
|
|
87
|
+
"data-slot": "option",
|
|
88
|
+
children: [
|
|
89
|
+
multiple && /* @__PURE__ */ jsxs("div", { className: cn("w-4 h-4 border rounded flex items-center justify-center shrink-0", selectionState?.checked ? "bg-slot border-slot" : "border-border"), children: [
|
|
90
|
+
selectionState?.checked && /* @__PURE__ */ jsx(Check, { className: "h-3 w-3 text-background" }),
|
|
91
|
+
selectionState?.indeterminate && !selectionState?.checked && /* @__PURE__ */ jsx("div", { className: cn("w-2 h-0.5 bg-slot") })
|
|
92
|
+
] }),
|
|
93
|
+
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children: option.label }),
|
|
94
|
+
/* @__PURE__ */ jsxs("span", { className: cn("shrink-0 flex items-center", iconSizes[size]), children: [
|
|
95
|
+
option.loading && /* @__PURE__ */ jsx(Loader2, { className: cn("animate-spin", iconSizes[size]) }),
|
|
96
|
+
!option.loading && option.children && option.children.length > 0 && /* @__PURE__ */ jsx(ChevronRight, { className: iconSizes[size] }),
|
|
97
|
+
!option.loading && isLeafSelected && /* @__PURE__ */ jsx(Check, { className: cn(iconSizes[size], colorVars[color], "text-slot") })
|
|
98
|
+
] })
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
option.value
|
|
102
|
+
);
|
|
103
|
+
})
|
|
104
|
+
},
|
|
105
|
+
level
|
|
106
|
+
)) });
|
|
107
|
+
};
|
|
108
|
+
var cascaderTriggerVariants = cva(
|
|
109
|
+
"flex items-center justify-between gap-2 rounded-md border transition-colors cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
110
|
+
{
|
|
111
|
+
variants: {
|
|
112
|
+
status: {
|
|
113
|
+
default: "bg-background border-border hover:border-primary/50",
|
|
114
|
+
error: "border-error",
|
|
115
|
+
warning: "border-warning",
|
|
116
|
+
info: "border-info",
|
|
117
|
+
success: "border-success"
|
|
118
|
+
},
|
|
119
|
+
size: {
|
|
120
|
+
xs: "h-(--select-height-xs) px-(--select-padding-x-xs) text-xs",
|
|
121
|
+
sm: "h-(--select-height-sm) px-(--select-padding-x-sm) text-sm",
|
|
122
|
+
md: "h-(--select-height-md) px-(--select-padding-x-md) text-base",
|
|
123
|
+
lg: "h-(--select-height-lg) px-(--select-padding-x-lg) text-lg"
|
|
124
|
+
},
|
|
125
|
+
fullWidth: { true: "w-full", false: "max-w-full" }
|
|
126
|
+
},
|
|
127
|
+
defaultVariants: { status: "default", size: "md", fullWidth: true }
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
var tagSizeClasses = {
|
|
131
|
+
xs: "text-[10px] px-1 py-0",
|
|
132
|
+
sm: "text-xs px-1.5 py-0.5",
|
|
133
|
+
md: "text-sm px-2 py-0.5",
|
|
134
|
+
lg: "text-sm px-2.5 py-1"
|
|
135
|
+
};
|
|
136
|
+
var Cascader = React.memo(
|
|
137
|
+
({
|
|
138
|
+
options,
|
|
139
|
+
value,
|
|
140
|
+
defaultValue,
|
|
141
|
+
onChange,
|
|
142
|
+
onSelect,
|
|
143
|
+
placeholder = "Please select",
|
|
144
|
+
label,
|
|
145
|
+
helperText,
|
|
146
|
+
messagePosition = "bottom",
|
|
147
|
+
color = "default",
|
|
148
|
+
size = "md",
|
|
149
|
+
placement = "bottomLeft",
|
|
150
|
+
disabled = false,
|
|
151
|
+
loading = false,
|
|
152
|
+
error,
|
|
153
|
+
warning,
|
|
154
|
+
info,
|
|
155
|
+
success,
|
|
156
|
+
fullWidth = true,
|
|
157
|
+
expandTrigger = "hover",
|
|
158
|
+
multiple = false,
|
|
159
|
+
maxTagCount = 3,
|
|
160
|
+
clearable = true,
|
|
161
|
+
showPath = true,
|
|
162
|
+
pathSeparator = " / ",
|
|
163
|
+
changeOnSelect = false,
|
|
164
|
+
loadData,
|
|
165
|
+
displayRender,
|
|
166
|
+
tagRender,
|
|
167
|
+
emptyContent = "No options",
|
|
168
|
+
className,
|
|
169
|
+
classNames,
|
|
170
|
+
required,
|
|
171
|
+
ref,
|
|
172
|
+
onOpenChange
|
|
173
|
+
}) => {
|
|
174
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
175
|
+
const [internalValue, setInternalValue] = React.useState(defaultValue || []);
|
|
176
|
+
const currentValue = value !== void 0 ? value : internalValue;
|
|
177
|
+
const [activeMenus, setActiveMenus] = React.useState([options]);
|
|
178
|
+
const [hoveredPath, setHoveredPath] = React.useState([]);
|
|
179
|
+
const [selectedPath, setSelectedPath] = React.useState([]);
|
|
180
|
+
const [focusedIndex, setFocusedIndex] = React.useState(null);
|
|
181
|
+
const containerRef = React.useRef(null);
|
|
182
|
+
const menuRefs = React.useRef([]);
|
|
183
|
+
const normalizedValue = React.useMemo(() => {
|
|
184
|
+
if (multiple) {
|
|
185
|
+
return Array.isArray(currentValue[0]) ? currentValue : [];
|
|
186
|
+
}
|
|
187
|
+
return Array.isArray(currentValue) && currentValue.length > 0 && !Array.isArray(currentValue[0]) ? [currentValue] : [];
|
|
188
|
+
}, [currentValue, multiple]);
|
|
189
|
+
const selectedPathSet = React.useMemo(() => {
|
|
190
|
+
const set = /* @__PURE__ */ new Set();
|
|
191
|
+
for (const path of normalizedValue) set.add(path.join("\0"));
|
|
192
|
+
return set;
|
|
193
|
+
}, [normalizedValue]);
|
|
194
|
+
const selectionStateMap = React.useMemo(() => {
|
|
195
|
+
if (!multiple) return null;
|
|
196
|
+
const map = /* @__PURE__ */ new Map();
|
|
197
|
+
const collectLeafPaths = (option, basePath) => {
|
|
198
|
+
const paths = [];
|
|
199
|
+
const fullPath = [...basePath, option.value];
|
|
200
|
+
if (!option.children || option.children.length === 0) {
|
|
201
|
+
paths.push(fullPath);
|
|
202
|
+
} else {
|
|
203
|
+
for (const child of option.children) paths.push(...collectLeafPaths(child, fullPath));
|
|
204
|
+
}
|
|
205
|
+
return paths;
|
|
206
|
+
};
|
|
207
|
+
const computeForOption = (option, basePath) => {
|
|
208
|
+
const key = [...basePath, option.value].join("\0");
|
|
209
|
+
if (!option.children || option.children.length === 0) {
|
|
210
|
+
map.set(key, { checked: selectedPathSet.has(key), indeterminate: false });
|
|
211
|
+
} else {
|
|
212
|
+
for (const child of option.children) computeForOption(child, [...basePath, option.value]);
|
|
213
|
+
const leafPaths = collectLeafPaths(option, basePath);
|
|
214
|
+
let selectedCount = 0;
|
|
215
|
+
for (const lp of leafPaths) {
|
|
216
|
+
if (selectedPathSet.has(lp.join("\0"))) selectedCount++;
|
|
217
|
+
}
|
|
218
|
+
map.set(key, { checked: selectedCount === leafPaths.length && leafPaths.length > 0, indeterminate: selectedCount > 0 && selectedCount < leafPaths.length });
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
for (const option of options) computeForOption(option, []);
|
|
222
|
+
return map;
|
|
223
|
+
}, [normalizedValue, multiple, options, selectedPathSet]);
|
|
224
|
+
let status = "default";
|
|
225
|
+
if (error) status = "error";
|
|
226
|
+
else if (warning) status = "warning";
|
|
227
|
+
else if (success) status = "success";
|
|
228
|
+
else if (info) status = "info";
|
|
229
|
+
const helperMessage = error || warning || info || success || helperText;
|
|
230
|
+
const expandToPath = React.useCallback((path) => {
|
|
231
|
+
const menus = [options];
|
|
232
|
+
let currentOptions = options;
|
|
233
|
+
for (const val of path) {
|
|
234
|
+
const option = currentOptions.find((opt) => opt.value === val);
|
|
235
|
+
if (option?.children && option.children.length > 0) {
|
|
236
|
+
menus.push(option.children);
|
|
237
|
+
currentOptions = option.children;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
setActiveMenus(menus);
|
|
241
|
+
}, [options]);
|
|
242
|
+
const handleOpenChange = React.useCallback((open) => {
|
|
243
|
+
if (disabled || loading) return;
|
|
244
|
+
setIsOpen(open);
|
|
245
|
+
onOpenChange?.(open);
|
|
246
|
+
if (open) {
|
|
247
|
+
setActiveMenus([options]);
|
|
248
|
+
setHoveredPath([]);
|
|
249
|
+
setFocusedIndex(null);
|
|
250
|
+
if (normalizedValue.length > 0 && !multiple) {
|
|
251
|
+
setSelectedPath(normalizedValue[0] || []);
|
|
252
|
+
expandToPath(normalizedValue[0] || []);
|
|
253
|
+
} else {
|
|
254
|
+
setSelectedPath([]);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}, [disabled, loading, options, normalizedValue, multiple, onOpenChange, expandToPath]);
|
|
258
|
+
const getSelectedOptions = React.useCallback((path) => {
|
|
259
|
+
const selected = [];
|
|
260
|
+
let currentOptions = options;
|
|
261
|
+
for (const val of path) {
|
|
262
|
+
const option = currentOptions.find((opt) => opt.value === val);
|
|
263
|
+
if (option) {
|
|
264
|
+
selected.push(option);
|
|
265
|
+
currentOptions = option.children || [];
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return selected;
|
|
269
|
+
}, [options]);
|
|
270
|
+
const isPathSelected = React.useCallback((path) => {
|
|
271
|
+
return normalizedValue.some((sp) => sp.length === path.length && sp.every((val, idx) => val === path[idx]));
|
|
272
|
+
}, [normalizedValue]);
|
|
273
|
+
const getAllLeafPaths = React.useCallback((option, currentPath) => {
|
|
274
|
+
const paths = [];
|
|
275
|
+
const fullPath = [...currentPath, option.value];
|
|
276
|
+
if (!option.children || option.children.length === 0) {
|
|
277
|
+
paths.push(fullPath);
|
|
278
|
+
} else {
|
|
279
|
+
option.children.forEach((child) => {
|
|
280
|
+
paths.push(...getAllLeafPaths(child, fullPath));
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
return paths;
|
|
284
|
+
}, []);
|
|
285
|
+
const handleItemClick = React.useCallback(async (option, level) => {
|
|
286
|
+
if (option.disabled) return;
|
|
287
|
+
const newPath = [...selectedPath.slice(0, level), option.value];
|
|
288
|
+
setSelectedPath(newPath);
|
|
289
|
+
if (loadData && !option.children && !option.isLeaf && !option.loading) {
|
|
290
|
+
const selectedOpts = getSelectedOptions(newPath);
|
|
291
|
+
try {
|
|
292
|
+
await loadData(selectedOpts);
|
|
293
|
+
} catch {
|
|
294
|
+
}
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
const hasChildren = option.children && option.children.length > 0;
|
|
298
|
+
const isLeaf = !hasChildren;
|
|
299
|
+
if (hasChildren && !multiple) {
|
|
300
|
+
setActiveMenus((prev) => [...prev.slice(0, level + 1), option.children]);
|
|
301
|
+
if (changeOnSelect) {
|
|
302
|
+
const selectedOpts = getSelectedOptions(newPath);
|
|
303
|
+
if (value === void 0) setInternalValue(newPath);
|
|
304
|
+
onChange?.(newPath, selectedOpts);
|
|
305
|
+
}
|
|
306
|
+
} else if (hasChildren && multiple) {
|
|
307
|
+
const leafPaths = getAllLeafPaths(option, selectedPath.slice(0, level));
|
|
308
|
+
const allSelected = leafPaths.every((path) => isPathSelected(path));
|
|
309
|
+
let newValue;
|
|
310
|
+
if (allSelected) {
|
|
311
|
+
newValue = normalizedValue.filter((sp) => !leafPaths.some((lp) => lp.length === sp.length && lp.every((v, i) => v === sp[i])));
|
|
312
|
+
} else {
|
|
313
|
+
newValue = [...normalizedValue, ...leafPaths.filter((path) => !isPathSelected(path))];
|
|
314
|
+
}
|
|
315
|
+
const newSelectedOptions = newValue.map((path) => getSelectedOptions(path));
|
|
316
|
+
if (value === void 0) setInternalValue(newValue);
|
|
317
|
+
onChange?.(newValue, newSelectedOptions);
|
|
318
|
+
setActiveMenus((prev) => [...prev.slice(0, level + 1), option.children]);
|
|
319
|
+
} else if (isLeaf) {
|
|
320
|
+
if (multiple) {
|
|
321
|
+
let newValue;
|
|
322
|
+
if (isPathSelected(newPath)) {
|
|
323
|
+
newValue = normalizedValue.filter((path) => !(path.length === newPath.length && path.every((val, idx) => val === newPath[idx])));
|
|
324
|
+
} else {
|
|
325
|
+
newValue = [...normalizedValue, newPath];
|
|
326
|
+
}
|
|
327
|
+
const newSelectedOptions = newValue.map((path) => getSelectedOptions(path));
|
|
328
|
+
if (value === void 0) setInternalValue(newValue);
|
|
329
|
+
onChange?.(newValue, newSelectedOptions);
|
|
330
|
+
} else {
|
|
331
|
+
const selectedOpts = getSelectedOptions(newPath);
|
|
332
|
+
if (value === void 0) setInternalValue(newPath);
|
|
333
|
+
onChange?.(newPath, selectedOpts);
|
|
334
|
+
onSelect?.(newPath, selectedOpts);
|
|
335
|
+
handleOpenChange(false);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}, [selectedPath, value, onChange, onSelect, getSelectedOptions, multiple, isPathSelected, normalizedValue, getAllLeafPaths, changeOnSelect, loadData, handleOpenChange]);
|
|
339
|
+
const handleItemHover = React.useCallback((option, level, index) => {
|
|
340
|
+
if (expandTrigger !== "hover" || option.disabled) return;
|
|
341
|
+
setHoveredPath((prev) => [...prev.slice(0, level), index]);
|
|
342
|
+
setSelectedPath((prev) => [...prev.slice(0, level), option.value]);
|
|
343
|
+
if (option.children && option.children.length > 0) {
|
|
344
|
+
setActiveMenus((prev) => [...prev.slice(0, level + 1), option.children]);
|
|
345
|
+
} else {
|
|
346
|
+
setActiveMenus((prev) => prev.slice(0, level + 1));
|
|
347
|
+
}
|
|
348
|
+
}, [expandTrigger]);
|
|
349
|
+
const handleClear = React.useCallback((e) => {
|
|
350
|
+
e.stopPropagation();
|
|
351
|
+
const emptyValue = multiple ? [] : [];
|
|
352
|
+
if (value === void 0) setInternalValue(emptyValue);
|
|
353
|
+
onChange?.(emptyValue, []);
|
|
354
|
+
}, [value, onChange, multiple]);
|
|
355
|
+
const removeSelection = React.useCallback((pathToRemove, e) => {
|
|
356
|
+
e.stopPropagation();
|
|
357
|
+
if (!multiple) return;
|
|
358
|
+
const newValue = normalizedValue.filter((path) => !(path.length === pathToRemove.length && path.every((val, idx) => val === pathToRemove[idx])));
|
|
359
|
+
const newSelectedOptions = newValue.map((path) => getSelectedOptions(path));
|
|
360
|
+
setInternalValue(newValue);
|
|
361
|
+
onChange?.(newValue, newSelectedOptions);
|
|
362
|
+
}, [multiple, normalizedValue, value, onChange, getSelectedOptions]);
|
|
363
|
+
const handleKeyDown = React.useCallback((e) => {
|
|
364
|
+
if (!isOpen) {
|
|
365
|
+
if (e.key === "Enter" || e.key === " " || e.key === "ArrowDown") {
|
|
366
|
+
e.preventDefault();
|
|
367
|
+
handleOpenChange(true);
|
|
368
|
+
}
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
switch (e.key) {
|
|
372
|
+
case "Escape":
|
|
373
|
+
e.preventDefault();
|
|
374
|
+
handleOpenChange(false);
|
|
375
|
+
break;
|
|
376
|
+
case "ArrowDown":
|
|
377
|
+
e.preventDefault();
|
|
378
|
+
if (focusedIndex === null) {
|
|
379
|
+
setFocusedIndex({ level: 0, index: 0 });
|
|
380
|
+
} else {
|
|
381
|
+
const m = activeMenus[focusedIndex.level];
|
|
382
|
+
if (m && focusedIndex.index < m.length - 1) setFocusedIndex({ ...focusedIndex, index: focusedIndex.index + 1 });
|
|
383
|
+
}
|
|
384
|
+
break;
|
|
385
|
+
case "ArrowUp":
|
|
386
|
+
e.preventDefault();
|
|
387
|
+
if (focusedIndex && focusedIndex.index > 0) setFocusedIndex({ ...focusedIndex, index: focusedIndex.index - 1 });
|
|
388
|
+
break;
|
|
389
|
+
case "ArrowRight":
|
|
390
|
+
e.preventDefault();
|
|
391
|
+
if (focusedIndex) {
|
|
392
|
+
const m = activeMenus[focusedIndex.level];
|
|
393
|
+
const o = m?.[focusedIndex.index];
|
|
394
|
+
if (o?.children?.length) {
|
|
395
|
+
setActiveMenus((prev) => [...prev.slice(0, focusedIndex.level + 1), o.children]);
|
|
396
|
+
setFocusedIndex({ level: focusedIndex.level + 1, index: 0 });
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
break;
|
|
400
|
+
case "ArrowLeft":
|
|
401
|
+
e.preventDefault();
|
|
402
|
+
if (focusedIndex && focusedIndex.level > 0) {
|
|
403
|
+
const pl = focusedIndex.level - 1;
|
|
404
|
+
setActiveMenus((prev) => prev.slice(0, focusedIndex.level));
|
|
405
|
+
setFocusedIndex({ level: pl, index: hoveredPath[pl] ?? 0 });
|
|
406
|
+
}
|
|
407
|
+
break;
|
|
408
|
+
case "Enter":
|
|
409
|
+
e.preventDefault();
|
|
410
|
+
if (focusedIndex) {
|
|
411
|
+
const m = activeMenus[focusedIndex.level];
|
|
412
|
+
const o = m?.[focusedIndex.index];
|
|
413
|
+
if (o) handleItemClick(o, focusedIndex.level);
|
|
414
|
+
}
|
|
415
|
+
break;
|
|
416
|
+
}
|
|
417
|
+
}, [isOpen, focusedIndex, activeMenus, handleOpenChange, handleItemClick, hoveredPath]);
|
|
418
|
+
const displayValue = React.useMemo(() => {
|
|
419
|
+
if (normalizedValue.length === 0) return null;
|
|
420
|
+
if (displayRender) {
|
|
421
|
+
if (multiple) {
|
|
422
|
+
return displayRender(normalizedValue.map((path) => getSelectedOptions(path).map((opt) => opt.label)), normalizedValue.map((path) => getSelectedOptions(path)));
|
|
423
|
+
}
|
|
424
|
+
const so = getSelectedOptions(normalizedValue[0] || []);
|
|
425
|
+
return displayRender(so.map((opt) => opt.label), so);
|
|
426
|
+
}
|
|
427
|
+
if (!multiple) {
|
|
428
|
+
const so = getSelectedOptions(normalizedValue[0] || []);
|
|
429
|
+
const labels = so.map((opt) => opt.label);
|
|
430
|
+
return showPath ? labels.join(pathSeparator) : labels[labels.length - 1] || null;
|
|
431
|
+
}
|
|
432
|
+
return null;
|
|
433
|
+
}, [normalizedValue, displayRender, getSelectedOptions, multiple, showPath, pathSeparator]);
|
|
434
|
+
const showClearButton = clearable && normalizedValue.length > 0 && normalizedValue[0]?.[0] && !disabled && !loading;
|
|
435
|
+
const renderTriggerContent = () => {
|
|
436
|
+
if (multiple && normalizedValue.length > 0) {
|
|
437
|
+
const visibleTags = normalizedValue.slice(0, maxTagCount);
|
|
438
|
+
const remainingCount = normalizedValue.length - maxTagCount;
|
|
439
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex-1 flex flex-wrap gap-1 items-center min-h-0 overflow-hidden", children: [
|
|
440
|
+
visibleTags.map((path, idx) => {
|
|
441
|
+
const selectedOpts = getSelectedOptions(path);
|
|
442
|
+
const tagLabel = showPath ? selectedOpts.map((o) => o.label).join(pathSeparator) : selectedOpts[selectedOpts.length - 1]?.label || "";
|
|
443
|
+
if (tagRender) return /* @__PURE__ */ jsx(React.Fragment, { children: tagRender({ label: tagLabel, value: path, closable: !disabled, onClose: () => removeSelection(path, { stopPropagation: () => {
|
|
444
|
+
} }) }) }, idx);
|
|
445
|
+
return /* @__PURE__ */ jsxs("span", { className: cn("inline-flex items-center gap-1 rounded whitespace-nowrap", colorVars[color], "bg-slot-10 text-slot", tagSizeClasses[size]), children: [
|
|
446
|
+
/* @__PURE__ */ jsx("span", { className: "truncate max-w-[150px]", children: tagLabel }),
|
|
447
|
+
!disabled && /* @__PURE__ */ jsx("button", { type: "button", onClick: (e) => removeSelection(path, e), className: "hover:text-error shrink-0", children: /* @__PURE__ */ jsx(X, { className: "h-3 w-3" }) })
|
|
448
|
+
] }, idx);
|
|
449
|
+
}),
|
|
450
|
+
remainingCount > 0 && /* @__PURE__ */ jsxs("span", { className: cn("inline-flex items-center bg-surface text-text-secondary rounded whitespace-nowrap", tagSizeClasses[size]), children: [
|
|
451
|
+
"+",
|
|
452
|
+
remainingCount
|
|
453
|
+
] })
|
|
454
|
+
] });
|
|
455
|
+
}
|
|
456
|
+
return /* @__PURE__ */ jsx("span", { className: cn("truncate flex-1", !displayValue && "text-text-secondary"), children: displayValue || placeholder });
|
|
457
|
+
};
|
|
458
|
+
const popoverSide = placement.startsWith("top") ? "top" : "bottom";
|
|
459
|
+
const popoverAlign = placement.endsWith("Right") ? "end" : "start";
|
|
460
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col", fullWidth ? "w-full" : "inline-block"), children: [
|
|
461
|
+
/* @__PURE__ */ jsxs("div", { className: "flex gap-2 items-center mb-0.5", children: [
|
|
462
|
+
label && /* @__PURE__ */ jsxs("label", { className: "text-sm font-medium text-text-secondary", children: [
|
|
463
|
+
label,
|
|
464
|
+
required && /* @__PURE__ */ jsx("span", { className: "text-error ml-1", children: "*" })
|
|
465
|
+
] }),
|
|
466
|
+
helperMessage && messagePosition === "top" && /* @__PURE__ */ jsx("span", { className: cn("text-xs", status === "error" && "text-error", status === "warning" && "text-warning", status === "info" && "text-info", status === "success" && "text-success", status === "default" && "text-text-secondary"), children: helperMessage })
|
|
467
|
+
] }),
|
|
468
|
+
/* @__PURE__ */ jsx("div", { ref: containerRef, className: cn("relative cascader_root", fullWidth ? "w-full" : "inline-block", classNames?.root), "data-slot": "root", children: /* @__PURE__ */ jsxs(PopoverPrimitive.Root, { open: isOpen, onOpenChange: handleOpenChange, children: [
|
|
469
|
+
/* @__PURE__ */ jsx(PopoverPrimitive.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
470
|
+
"div",
|
|
471
|
+
{
|
|
472
|
+
ref,
|
|
473
|
+
className: cn(cascaderTriggerVariants({ status, size, fullWidth }), colorVars[color], "focus-visible:ring-slot", disabled && "opacity-50 cursor-not-allowed", loading && "opacity-50 pointer-events-none", "cascader_trigger", classNames?.trigger, className),
|
|
474
|
+
onKeyDown: handleKeyDown,
|
|
475
|
+
tabIndex: disabled ? -1 : 0,
|
|
476
|
+
role: "combobox",
|
|
477
|
+
"aria-expanded": isOpen,
|
|
478
|
+
"aria-haspopup": "listbox",
|
|
479
|
+
"aria-disabled": disabled,
|
|
480
|
+
"aria-label": label || placeholder,
|
|
481
|
+
"data-slot": "trigger",
|
|
482
|
+
children: [
|
|
483
|
+
renderTriggerContent(),
|
|
484
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 text-text-secondary shrink-0", children: [
|
|
485
|
+
loading && /* @__PURE__ */ jsx(Loader2, { className: cn("animate-spin text-text-secondary", iconSizes[size]) }),
|
|
486
|
+
!loading && showClearButton && /* @__PURE__ */ jsx("button", { type: "button", onClick: handleClear, className: "hover:text-text-primary", "aria-label": "Clear selection", children: /* @__PURE__ */ jsx(X, { className: iconSizes[size] }) }),
|
|
487
|
+
!loading && /* @__PURE__ */ jsx(ChevronDown, { className: cn("transition-transform", iconSizes[size], isOpen && "rotate-180") })
|
|
488
|
+
] })
|
|
489
|
+
]
|
|
490
|
+
}
|
|
491
|
+
) }),
|
|
492
|
+
/* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
493
|
+
PopoverPrimitive.Content,
|
|
494
|
+
{
|
|
495
|
+
side: popoverSide,
|
|
496
|
+
align: popoverAlign,
|
|
497
|
+
sideOffset: 4,
|
|
498
|
+
className: "z-[var(--z-popover)] outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:data-[side=bottom]:slide-out-to-top-2 data-[state=closed]:data-[side=left]:slide-out-to-right-2 data-[state=closed]:data-[side=right]:slide-out-to-left-2 data-[state=closed]:data-[side=top]:slide-out-to-bottom-2 duration-200",
|
|
499
|
+
children: /* @__PURE__ */ jsx(
|
|
500
|
+
CascaderMenu,
|
|
501
|
+
{
|
|
502
|
+
activeMenus,
|
|
503
|
+
selectedPath,
|
|
504
|
+
hoveredPath,
|
|
505
|
+
focusedIndex,
|
|
506
|
+
selectedPathSet,
|
|
507
|
+
selectionStateMap,
|
|
508
|
+
size,
|
|
509
|
+
color,
|
|
510
|
+
multiple,
|
|
511
|
+
expandTrigger,
|
|
512
|
+
emptyContent,
|
|
513
|
+
onItemClick: handleItemClick,
|
|
514
|
+
onItemHover: handleItemHover,
|
|
515
|
+
classNames,
|
|
516
|
+
menuRefs
|
|
517
|
+
}
|
|
518
|
+
)
|
|
519
|
+
}
|
|
520
|
+
) })
|
|
521
|
+
] }) }),
|
|
522
|
+
helperMessage && messagePosition === "bottom" && /* @__PURE__ */ jsx("span", { className: cn("text-xs mt-0.5", status === "error" && "text-error", status === "warning" && "text-warning", status === "info" && "text-info", status === "success" && "text-success", status === "default" && "text-text-secondary"), children: helperMessage })
|
|
523
|
+
] });
|
|
524
|
+
}
|
|
525
|
+
);
|
|
526
|
+
Cascader.displayName = "Cascader";
|
|
527
|
+
var cascader_default = Cascader;
|
|
528
|
+
|
|
529
|
+
export { cascader_default };
|
|
530
|
+
//# sourceMappingURL=chunk-LWYZCSX4.js.map
|
|
531
|
+
//# sourceMappingURL=chunk-LWYZCSX4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cascader/CascaderMenu.tsx","../src/cascader/index.tsx"],"names":["cva","jsxs","jsx","Loader2"],"mappings":"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","file":"chunk-LWYZCSX4.js","sourcesContent":["'use client'\n\nimport { cva } from \"class-variance-authority\";\nimport { Check, ChevronRight, Loader2 } from \"lucide-react\";\nimport React from \"react\";\n\nimport type { ComponentColor } from \"../types\";\nimport { cn, iconSizes } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type { CascaderOption, CascaderSize } from \"./types\";\n\nexport const cascaderMenuVariants = cva(\n \"overflow-auto rounded-md border bg-background w-[200px] max-h-[300px]\",\n {\n variants: {\n size: {\n xs: \"w-[160px]\",\n sm: \"w-[180px]\",\n md: \"w-[200px]\",\n lg: \"w-[220px]\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n\nexport const cascaderItemVariants = cva(\n \"relative cursor-pointer select-none text-text-primary transition-colors flex items-center gap-2 w-full\",\n {\n variants: {\n size: {\n xs: \"px-2 py-1 text-xs min-h-[28px]\",\n sm: \"px-2.5 py-1.5 text-sm min-h-[32px]\",\n md: \"px-3 py-2 text-base min-h-[36px]\",\n lg: \"px-3.5 py-2.5 text-lg min-h-[44px]\",\n },\n disabled: { true: \"opacity-50 cursor-not-allowed\", false: \"hover:bg-surface\" },\n active: { true: \"bg-surface\", false: \"\" },\n selected: { true: \"font-medium\", false: \"\" },\n },\n defaultVariants: { size: \"md\", disabled: false, active: false, selected: false },\n },\n);\n\nexport interface CascaderMenuProps {\n activeMenus: CascaderOption[][]\n selectedPath: string[]\n hoveredPath: number[]\n focusedIndex: { level: number; index: number } | null\n selectedPathSet: Set<string>\n selectionStateMap: Map<string, { checked: boolean; indeterminate: boolean }> | null\n size: CascaderSize\n color: ComponentColor\n multiple: boolean\n expandTrigger: 'click' | 'hover'\n emptyContent: React.ReactNode\n onItemClick: (option: CascaderOption, level: number) => void\n onItemHover: (option: CascaderOption, level: number, index: number) => void\n classNames?: {\n dropdown?: string\n menu?: string\n option?: string\n }\n menuRefs: React.MutableRefObject<(HTMLDivElement | null)[]>\n}\n\nexport const CascaderMenu = ({\n activeMenus,\n selectedPath,\n hoveredPath,\n focusedIndex,\n selectedPathSet,\n selectionStateMap,\n size,\n color,\n multiple,\n expandTrigger,\n emptyContent,\n onItemClick,\n onItemHover,\n classNames,\n menuRefs,\n}: CascaderMenuProps) => {\n return (\n <div className={cn(\"flex [&>*:not(:first-child)]:rounded-l-none [&>*:not(:last-child)]:border-r-0 [&>*:not(:last-child)]:rounded-r-none cascader_dropdown\", colorVars[color], classNames?.dropdown)} data-slot=\"dropdown\">\n {activeMenus.map((menu, level) => (\n <div\n key={level}\n ref={(el) => { menuRefs.current[level] = el }}\n role=\"listbox\"\n className={cn(cascaderMenuVariants({ size }), \"border-border cascader_menu\", classNames?.menu)}\n data-slot=\"menu\"\n >\n {menu.length === 0 ? (\n <div className=\"px-3 py-6 text-center text-text-secondary text-sm\">{emptyContent}</div>\n ) : (\n menu.map((option, index) => {\n const isActive = selectedPath[level] === option.value || (expandTrigger === \"hover\" && hoveredPath[level] === index);\n const isFocused = focusedIndex?.level === level && focusedIndex?.index === index;\n const currentPath = selectedPath.slice(0, level);\n const fullPath = [...currentPath, option.value];\n const selectionState = multiple && selectionStateMap\n ? selectionStateMap.get(fullPath.join('\\0')) ?? { checked: false, indeterminate: false }\n : null;\n const isLeafSelected =\n !multiple &&\n selectedPathSet.has(fullPath.join('\\0')) &&\n (!option.children || option.children.length === 0);\n\n return (\n <div\n key={option.value}\n role=\"option\"\n aria-selected={isLeafSelected || (selectionState?.checked ?? false)}\n aria-disabled={option.disabled}\n className={cn(\n cascaderItemVariants({ size, disabled: !!option.disabled, active: isActive || isFocused, selected: isLeafSelected }),\n isLeafSelected && 'bg-slot-10 text-slot',\n \"cascader_option\",\n classNames?.option,\n )}\n onClick={() => onItemClick(option, level)}\n onMouseEnter={() => onItemHover(option, level, index)}\n data-slot=\"option\"\n >\n {multiple && (\n <div className={cn(\"w-4 h-4 border rounded flex items-center justify-center shrink-0\", selectionState?.checked ? 'bg-slot border-slot' : \"border-border\")}>\n {selectionState?.checked && <Check className=\"h-3 w-3 text-background\" />}\n {selectionState?.indeterminate && !selectionState?.checked && <div className={cn(\"w-2 h-0.5 bg-slot\")} />}\n </div>\n )}\n <span className=\"flex-1 truncate\">{option.label}</span>\n <span className={cn(\"shrink-0 flex items-center\", iconSizes[size])}>\n {option.loading && <Loader2 className={cn(\"animate-spin\", iconSizes[size])} />}\n {!option.loading && option.children && option.children.length > 0 && <ChevronRight className={iconSizes[size]} />}\n {!option.loading && isLeafSelected && <Check className={cn(iconSizes[size], colorVars[color], 'text-slot')} />}\n </span>\n </div>\n );\n })\n )}\n </div>\n ))}\n </div>\n );\n};\n","'use client'\n\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDown, Loader2, X } from \"lucide-react\";\nimport React from \"react\";\n\n\nimport { cn, iconSizes } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type { CascaderOption, CascaderProps, CascaderSize } from \"./types\";\nimport { CascaderMenu } from \"./CascaderMenu\";\n\nconst cascaderTriggerVariants = cva(\n \"flex items-center justify-between gap-2 rounded-md border transition-colors cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n {\n variants: {\n status: {\n default: \"bg-background border-border hover:border-primary/50\",\n error: \"border-error\",\n warning: \"border-warning\",\n info: \"border-info\",\n success: \"border-success\",\n },\n size: {\n xs: \"h-(--select-height-xs) px-(--select-padding-x-xs) text-xs\",\n sm: \"h-(--select-height-sm) px-(--select-padding-x-sm) text-sm\",\n md: \"h-(--select-height-md) px-(--select-padding-x-md) text-base\",\n lg: \"h-(--select-height-lg) px-(--select-padding-x-lg) text-lg\",\n },\n fullWidth: { true: \"w-full\", false: \"max-w-full\" },\n },\n defaultVariants: { status: \"default\", size: \"md\", fullWidth: true },\n },\n);\n\nconst tagSizeClasses: Record<CascaderSize, string> = {\n xs: \"text-[10px] px-1 py-0\",\n sm: \"text-xs px-1.5 py-0.5\",\n md: \"text-sm px-2 py-0.5\",\n lg: \"text-sm px-2.5 py-1\",\n};\n\nconst Cascader = React.memo<CascaderProps>(\n ({\n options,\n value,\n defaultValue,\n onChange,\n onSelect,\n placeholder = \"Please select\",\n label,\n helperText,\n messagePosition = \"bottom\",\n color = \"default\",\n size = \"md\",\n placement = \"bottomLeft\",\n disabled = false,\n loading = false,\n error,\n warning,\n info,\n success,\n fullWidth = true,\n expandTrigger = \"hover\",\n multiple = false,\n maxTagCount = 3,\n clearable = true,\n showPath = true,\n pathSeparator = \" / \",\n changeOnSelect = false,\n loadData,\n displayRender,\n tagRender,\n emptyContent = \"No options\",\n className,\n classNames,\n required,\n ref,\n onOpenChange,\n }) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [internalValue, setInternalValue] = React.useState<string[] | string[][]>(defaultValue || []);\n const currentValue = value !== undefined ? value : internalValue;\n const [activeMenus, setActiveMenus] = React.useState<CascaderOption[][]>([options]);\n const [hoveredPath, setHoveredPath] = React.useState<number[]>([]);\n const [selectedPath, setSelectedPath] = React.useState<string[]>([]);\n const [focusedIndex, setFocusedIndex] = React.useState<{ level: number; index: number } | null>(null);\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const menuRefs = React.useRef<(HTMLDivElement | null)[]>([]);\n\n const normalizedValue: string[][] = React.useMemo(() => {\n if (multiple) {\n return Array.isArray(currentValue[0]) ? (currentValue as string[][]) : [];\n }\n return Array.isArray(currentValue) && currentValue.length > 0 && !Array.isArray(currentValue[0])\n ? [currentValue as string[]]\n : [];\n }, [currentValue, multiple]);\n\n const selectedPathSet = React.useMemo(() => {\n const set = new Set<string>();\n for (const path of normalizedValue) set.add(path.join('\\0'));\n return set;\n }, [normalizedValue]);\n\n const selectionStateMap = React.useMemo(() => {\n if (!multiple) return null;\n const map = new Map<string, { checked: boolean; indeterminate: boolean }>();\n\n const collectLeafPaths = (option: CascaderOption, basePath: string[]): string[][] => {\n const paths: string[][] = [];\n const fullPath = [...basePath, option.value];\n if (!option.children || option.children.length === 0) {\n paths.push(fullPath);\n } else {\n for (const child of option.children) paths.push(...collectLeafPaths(child, fullPath));\n }\n return paths;\n };\n\n const computeForOption = (option: CascaderOption, basePath: string[]) => {\n const key = [...basePath, option.value].join('\\0');\n if (!option.children || option.children.length === 0) {\n map.set(key, { checked: selectedPathSet.has(key), indeterminate: false });\n } else {\n for (const child of option.children) computeForOption(child, [...basePath, option.value]);\n const leafPaths = collectLeafPaths(option, basePath);\n let selectedCount = 0;\n for (const lp of leafPaths) { if (selectedPathSet.has(lp.join('\\0'))) selectedCount++ }\n map.set(key, { checked: selectedCount === leafPaths.length && leafPaths.length > 0, indeterminate: selectedCount > 0 && selectedCount < leafPaths.length });\n }\n };\n\n for (const option of options) computeForOption(option, []);\n return map;\n }, [normalizedValue, multiple, options, selectedPathSet]);\n\n let status: \"default\" | \"error\" | \"warning\" | \"info\" | \"success\" = \"default\";\n if (error) status = \"error\";\n else if (warning) status = \"warning\";\n else if (success) status = \"success\";\n else if (info) status = \"info\";\n\n const helperMessage = error || warning || info || success || helperText;\n\n const expandToPath = React.useCallback((path: string[]) => {\n const menus: CascaderOption[][] = [options];\n let currentOptions = options;\n for (const val of path) {\n const option = currentOptions.find((opt) => opt.value === val);\n if (option?.children && option.children.length > 0) { menus.push(option.children); currentOptions = option.children }\n }\n setActiveMenus(menus);\n }, [options]);\n\n const handleOpenChange = React.useCallback((open: boolean) => {\n if (disabled || loading) return;\n setIsOpen(open);\n onOpenChange?.(open);\n if (open) {\n setActiveMenus([options]);\n setHoveredPath([]);\n setFocusedIndex(null);\n if (normalizedValue.length > 0 && !multiple) {\n setSelectedPath(normalizedValue[0] || []);\n expandToPath(normalizedValue[0] || []);\n } else {\n setSelectedPath([]);\n }\n }\n }, [disabled, loading, options, normalizedValue, multiple, onOpenChange, expandToPath]);\n\n const getSelectedOptions = React.useCallback((path: string[]): CascaderOption[] => {\n const selected: CascaderOption[] = [];\n let currentOptions = options;\n for (const val of path) {\n const option = currentOptions.find((opt) => opt.value === val);\n if (option) { selected.push(option); currentOptions = option.children || [] }\n }\n return selected;\n }, [options]);\n\n const isPathSelected = React.useCallback((path: string[]): boolean => {\n return normalizedValue.some((sp) => sp.length === path.length && sp.every((val, idx) => val === path[idx]));\n }, [normalizedValue]);\n\n const getAllLeafPaths = React.useCallback((option: CascaderOption, currentPath: string[]): string[][] => {\n const paths: string[][] = [];\n const fullPath = [...currentPath, option.value];\n if (!option.children || option.children.length === 0) { paths.push(fullPath) }\n else { option.children.forEach((child) => { paths.push(...getAllLeafPaths(child, fullPath)) }) }\n return paths;\n }, []);\n\n const handleItemClick = React.useCallback(async (option: CascaderOption, level: number) => {\n if (option.disabled) return;\n const newPath = [...selectedPath.slice(0, level), option.value];\n setSelectedPath(newPath);\n\n if (loadData && !option.children && !option.isLeaf && !option.loading) {\n const selectedOpts = getSelectedOptions(newPath);\n try { await loadData(selectedOpts) } catch { /* consumer handles */ }\n return;\n }\n\n const hasChildren = option.children && option.children.length > 0;\n const isLeaf = !hasChildren;\n\n if (hasChildren && !multiple) {\n setActiveMenus((prev) => [...prev.slice(0, level + 1), option.children!]);\n if (changeOnSelect) {\n const selectedOpts = getSelectedOptions(newPath);\n if (value === undefined) setInternalValue(newPath);\n onChange?.(newPath, selectedOpts);\n }\n } else if (hasChildren && multiple) {\n const leafPaths = getAllLeafPaths(option, selectedPath.slice(0, level));\n const allSelected = leafPaths.every((path) => isPathSelected(path));\n let newValue: string[][];\n if (allSelected) {\n newValue = normalizedValue.filter((sp) => !leafPaths.some((lp) => lp.length === sp.length && lp.every((v, i) => v === sp[i])));\n } else {\n newValue = [...normalizedValue, ...leafPaths.filter((path) => !isPathSelected(path))];\n }\n const newSelectedOptions = newValue.map((path) => getSelectedOptions(path));\n if (value === undefined) setInternalValue(newValue);\n onChange?.(newValue, newSelectedOptions);\n setActiveMenus((prev) => [...prev.slice(0, level + 1), option.children!]);\n } else if (isLeaf) {\n if (multiple) {\n let newValue: string[][];\n if (isPathSelected(newPath)) {\n newValue = normalizedValue.filter((path) => !(path.length === newPath.length && path.every((val, idx) => val === newPath[idx])));\n } else {\n newValue = [...normalizedValue, newPath];\n }\n const newSelectedOptions = newValue.map((path) => getSelectedOptions(path));\n if (value === undefined) setInternalValue(newValue);\n onChange?.(newValue, newSelectedOptions);\n } else {\n const selectedOpts = getSelectedOptions(newPath);\n if (value === undefined) setInternalValue(newPath);\n onChange?.(newPath, selectedOpts);\n onSelect?.(newPath, selectedOpts);\n handleOpenChange(false);\n }\n }\n }, [selectedPath, value, onChange, onSelect, getSelectedOptions, multiple, isPathSelected, normalizedValue, getAllLeafPaths, changeOnSelect, loadData, handleOpenChange]);\n\n const handleItemHover = React.useCallback((option: CascaderOption, level: number, index: number) => {\n if (expandTrigger !== \"hover\" || option.disabled) return;\n setHoveredPath((prev) => [...prev.slice(0, level), index]);\n setSelectedPath((prev) => [...prev.slice(0, level), option.value]);\n if (option.children && option.children.length > 0) {\n setActiveMenus((prev) => [...prev.slice(0, level + 1), option.children!]);\n } else {\n setActiveMenus((prev) => prev.slice(0, level + 1));\n }\n }, [expandTrigger]);\n\n const handleClear = React.useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n const emptyValue = multiple ? [] : [];\n if (value === undefined) setInternalValue(emptyValue);\n onChange?.(emptyValue, []);\n }, [value, onChange, multiple]);\n\n const removeSelection = React.useCallback((pathToRemove: string[], e: React.MouseEvent) => {\n e.stopPropagation();\n if (!multiple) return;\n const newValue = normalizedValue.filter((path) => !(path.length === pathToRemove.length && path.every((val, idx) => val === pathToRemove[idx])));\n const newSelectedOptions = newValue.map((path) => getSelectedOptions(path));\n setInternalValue(newValue);\n onChange?.(newValue, newSelectedOptions);\n }, [multiple, normalizedValue, value, onChange, getSelectedOptions]);\n\n const handleKeyDown = React.useCallback((e: React.KeyboardEvent) => {\n if (!isOpen) {\n if (e.key === \"Enter\" || e.key === \" \" || e.key === \"ArrowDown\") { e.preventDefault(); handleOpenChange(true) }\n return;\n }\n switch (e.key) {\n case \"Escape\": e.preventDefault(); handleOpenChange(false); break;\n case \"ArrowDown\":\n e.preventDefault();\n if (focusedIndex === null) { setFocusedIndex({ level: 0, index: 0 }) }\n else { const m = activeMenus[focusedIndex.level]; if (m && focusedIndex.index < m.length - 1) setFocusedIndex({ ...focusedIndex, index: focusedIndex.index + 1 }) }\n break;\n case \"ArrowUp\": e.preventDefault(); if (focusedIndex && focusedIndex.index > 0) setFocusedIndex({ ...focusedIndex, index: focusedIndex.index - 1 }); break;\n case \"ArrowRight\":\n e.preventDefault();\n if (focusedIndex) { const m = activeMenus[focusedIndex.level]; const o = m?.[focusedIndex.index]; if (o?.children?.length) { setActiveMenus((prev) => [...prev.slice(0, focusedIndex.level + 1), o.children!]); setFocusedIndex({ level: focusedIndex.level + 1, index: 0 }) } }\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n if (focusedIndex && focusedIndex.level > 0) { const pl = focusedIndex.level - 1; setActiveMenus((prev) => prev.slice(0, focusedIndex.level)); setFocusedIndex({ level: pl, index: hoveredPath[pl] ?? 0 }) }\n break;\n case \"Enter\":\n e.preventDefault();\n if (focusedIndex) { const m = activeMenus[focusedIndex.level]; const o = m?.[focusedIndex.index]; if (o) handleItemClick(o, focusedIndex.level) }\n break;\n }\n }, [isOpen, focusedIndex, activeMenus, handleOpenChange, handleItemClick, hoveredPath]);\n\n const displayValue = React.useMemo(() => {\n if (normalizedValue.length === 0) return null;\n if (displayRender) {\n if (multiple) {\n return displayRender(normalizedValue.map((path) => getSelectedOptions(path).map((opt) => opt.label)), normalizedValue.map((path) => getSelectedOptions(path)));\n }\n const so = getSelectedOptions(normalizedValue[0] || []);\n return displayRender(so.map((opt) => opt.label), so);\n }\n if (!multiple) {\n const so = getSelectedOptions(normalizedValue[0] || []);\n const labels = so.map((opt) => opt.label);\n return showPath ? labels.join(pathSeparator) : labels[labels.length - 1] || null;\n }\n return null;\n }, [normalizedValue, displayRender, getSelectedOptions, multiple, showPath, pathSeparator]);\n\n const showClearButton = clearable && normalizedValue.length > 0 && normalizedValue[0]?.[0] && !disabled && !loading;\n\n const renderTriggerContent = () => {\n if (multiple && normalizedValue.length > 0) {\n const visibleTags = normalizedValue.slice(0, maxTagCount);\n const remainingCount = normalizedValue.length - maxTagCount;\n return (\n <div className=\"flex-1 flex flex-wrap gap-1 items-center min-h-0 overflow-hidden\">\n {visibleTags.map((path, idx) => {\n const selectedOpts = getSelectedOptions(path);\n const tagLabel = showPath ? selectedOpts.map((o) => o.label).join(pathSeparator) : selectedOpts[selectedOpts.length - 1]?.label || \"\";\n if (tagRender) return <React.Fragment key={idx}>{tagRender({ label: tagLabel, value: path, closable: !disabled, onClose: () => removeSelection(path, { stopPropagation: () => {} } as React.MouseEvent) })}</React.Fragment>;\n return (\n <span key={idx} className={cn(\"inline-flex items-center gap-1 rounded whitespace-nowrap\", colorVars[color], 'bg-slot-10 text-slot', tagSizeClasses[size])}>\n <span className=\"truncate max-w-[150px]\">{tagLabel}</span>\n {!disabled && <button type=\"button\" onClick={(e) => removeSelection(path, e)} className=\"hover:text-error shrink-0\"><X className=\"h-3 w-3\" /></button>}\n </span>\n );\n })}\n {remainingCount > 0 && <span className={cn(\"inline-flex items-center bg-surface text-text-secondary rounded whitespace-nowrap\", tagSizeClasses[size])}>+{remainingCount}</span>}\n </div>\n );\n }\n return <span className={cn(\"truncate flex-1\", !displayValue && \"text-text-secondary\")}>{displayValue || placeholder}</span>;\n };\n\n const popoverSide = placement.startsWith(\"top\") ? \"top\" : \"bottom\";\n const popoverAlign = placement.endsWith(\"Right\") ? \"end\" : \"start\";\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth ? \"w-full\" : \"inline-block\")}>\n <div className=\"flex gap-2 items-center mb-0.5\">\n {label && <label className=\"text-sm font-medium text-text-secondary\">{label}{required && <span className=\"text-error ml-1\">*</span>}</label>}\n {helperMessage && messagePosition === \"top\" && (\n <span className={cn(\"text-xs\", status === \"error\" && \"text-error\", status === \"warning\" && \"text-warning\", status === \"info\" && \"text-info\", status === \"success\" && \"text-success\", status === \"default\" && \"text-text-secondary\")}>{helperMessage}</span>\n )}\n </div>\n <div ref={containerRef} className={cn(\"relative cascader_root\", fullWidth ? \"w-full\" : \"inline-block\", classNames?.root)} data-slot=\"root\">\n <PopoverPrimitive.Root open={isOpen} onOpenChange={handleOpenChange}>\n <PopoverPrimitive.Trigger asChild>\n <div\n ref={ref}\n className={cn(cascaderTriggerVariants({ status, size, fullWidth }), colorVars[color], 'focus-visible:ring-slot', disabled && \"opacity-50 cursor-not-allowed\", loading && \"opacity-50 pointer-events-none\", \"cascader_trigger\", classNames?.trigger, className)}\n onKeyDown={handleKeyDown}\n tabIndex={disabled ? -1 : 0}\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-disabled={disabled}\n aria-label={label || placeholder}\n data-slot=\"trigger\"\n >\n {renderTriggerContent()}\n <div className=\"flex items-center gap-1 text-text-secondary shrink-0\">\n {loading && <Loader2 className={cn(\"animate-spin text-text-secondary\", iconSizes[size])} />}\n {!loading && showClearButton && <button type=\"button\" onClick={handleClear} className=\"hover:text-text-primary\" aria-label=\"Clear selection\"><X className={iconSizes[size]} /></button>}\n {!loading && <ChevronDown className={cn(\"transition-transform\", iconSizes[size], isOpen && \"rotate-180\")} />}\n </div>\n </div>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n side={popoverSide}\n align={popoverAlign}\n sideOffset={4}\n className=\"z-[var(--z-popover)] outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:data-[side=bottom]:slide-out-to-top-2 data-[state=closed]:data-[side=left]:slide-out-to-right-2 data-[state=closed]:data-[side=right]:slide-out-to-left-2 data-[state=closed]:data-[side=top]:slide-out-to-bottom-2 duration-200\"\n >\n <CascaderMenu\n activeMenus={activeMenus}\n selectedPath={selectedPath}\n hoveredPath={hoveredPath}\n focusedIndex={focusedIndex}\n selectedPathSet={selectedPathSet}\n selectionStateMap={selectionStateMap}\n size={size}\n color={color}\n multiple={multiple}\n expandTrigger={expandTrigger}\n emptyContent={emptyContent}\n onItemClick={handleItemClick}\n onItemHover={handleItemHover}\n classNames={classNames}\n menuRefs={menuRefs}\n />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n </div>\n {helperMessage && messagePosition === \"bottom\" && (\n <span className={cn(\"text-xs mt-0.5\", status === \"error\" && \"text-error\", status === \"warning\" && \"text-warning\", status === \"info\" && \"text-info\", status === \"success\" && \"text-success\", status === \"default\" && \"text-text-secondary\")}>{helperMessage}</span>\n )}\n </div>\n );\n },\n);\n\nCascader.displayName = \"Cascader\";\n\nexport type * from \"./types\";\nexport default Cascader;\n"]}
|