@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
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { cn, iconSizes } from './chunk-
|
|
1
|
+
import { cn, iconSizes } from './chunk-RAS6HUEI.js';
|
|
2
2
|
import { cva } from 'class-variance-authority';
|
|
3
|
-
import { ChevronRight, Check, Minus } from 'lucide-react';
|
|
4
3
|
import React from 'react';
|
|
4
|
+
import { ChevronRight, Check, Minus } from 'lucide-react';
|
|
5
5
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
6
|
|
|
7
7
|
var treeItemVariants = cva(
|
|
@@ -30,6 +30,19 @@ var treeItemVariants = cva(
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
);
|
|
33
|
+
function getAllKeys(nodes) {
|
|
34
|
+
const keys = [];
|
|
35
|
+
const traverse = (items) => {
|
|
36
|
+
items.forEach((item) => {
|
|
37
|
+
keys.push(item.key);
|
|
38
|
+
if (item.children) {
|
|
39
|
+
traverse(item.children);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
traverse(nodes);
|
|
44
|
+
return keys;
|
|
45
|
+
}
|
|
33
46
|
var Tree = React.memo(
|
|
34
47
|
({
|
|
35
48
|
data,
|
|
@@ -58,19 +71,6 @@ var Tree = React.memo(
|
|
|
58
71
|
const currentExpandedKeys = expandedKeys !== void 0 ? expandedKeys : internalExpandedKeys;
|
|
59
72
|
const currentCheckedKeys = checkedKeys !== void 0 ? checkedKeys : internalCheckedKeys;
|
|
60
73
|
const currentSelectedKeys = selectedKeys !== void 0 ? selectedKeys : internalSelectedKeys;
|
|
61
|
-
function getAllKeys(nodes) {
|
|
62
|
-
const keys = [];
|
|
63
|
-
const traverse = (items) => {
|
|
64
|
-
items.forEach((item) => {
|
|
65
|
-
keys.push(item.key);
|
|
66
|
-
if (item.children) {
|
|
67
|
-
traverse(item.children);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
};
|
|
71
|
-
traverse(nodes);
|
|
72
|
-
return keys;
|
|
73
|
-
}
|
|
74
74
|
const getAllLeafKeys = React.useCallback((node) => {
|
|
75
75
|
const keys = [];
|
|
76
76
|
const traverse = (n) => {
|
|
@@ -105,34 +105,42 @@ var Tree = React.memo(
|
|
|
105
105
|
},
|
|
106
106
|
[getNodeByKey]
|
|
107
107
|
);
|
|
108
|
+
const checkedKeysSet = React.useMemo(
|
|
109
|
+
() => new Set(currentCheckedKeys),
|
|
110
|
+
[currentCheckedKeys]
|
|
111
|
+
);
|
|
108
112
|
const getCheckState = React.useCallback(
|
|
109
113
|
(node) => {
|
|
110
114
|
if (!node.children || node.children.length === 0 || node.isLeaf) {
|
|
111
115
|
return {
|
|
112
|
-
checked:
|
|
116
|
+
checked: checkedKeysSet.has(node.key),
|
|
113
117
|
indeterminate: false
|
|
114
118
|
};
|
|
115
119
|
}
|
|
116
120
|
const leafKeys = getAllLeafKeys(node);
|
|
117
121
|
const checkedCount = leafKeys.filter(
|
|
118
|
-
(key) =>
|
|
122
|
+
(key) => checkedKeysSet.has(key)
|
|
119
123
|
).length;
|
|
120
124
|
return {
|
|
121
125
|
checked: checkedCount === leafKeys.length && leafKeys.length > 0,
|
|
122
126
|
indeterminate: checkedCount > 0 && checkedCount < leafKeys.length
|
|
123
127
|
};
|
|
124
128
|
},
|
|
125
|
-
[
|
|
129
|
+
[checkedKeysSet, getAllLeafKeys]
|
|
130
|
+
);
|
|
131
|
+
const expandedKeysSet = React.useMemo(
|
|
132
|
+
() => new Set(currentExpandedKeys),
|
|
133
|
+
[currentExpandedKeys]
|
|
126
134
|
);
|
|
127
135
|
const handleExpand = React.useCallback(
|
|
128
136
|
(key) => {
|
|
129
|
-
const newExpandedKeys =
|
|
137
|
+
const newExpandedKeys = expandedKeysSet.has(key) ? currentExpandedKeys.filter((k) => k !== key) : [...currentExpandedKeys, key];
|
|
130
138
|
if (expandedKeys === void 0) {
|
|
131
139
|
setInternalExpandedKeys(newExpandedKeys);
|
|
132
140
|
}
|
|
133
141
|
onExpand?.(newExpandedKeys);
|
|
134
142
|
},
|
|
135
|
-
[currentExpandedKeys, expandedKeys, onExpand]
|
|
143
|
+
[currentExpandedKeys, expandedKeys, onExpand, expandedKeysSet]
|
|
136
144
|
);
|
|
137
145
|
const handleCheck = React.useCallback(
|
|
138
146
|
(node, checked) => {
|
|
@@ -189,26 +197,50 @@ var Tree = React.memo(
|
|
|
189
197
|
nodes.forEach((node) => {
|
|
190
198
|
result.push({ node, level });
|
|
191
199
|
const hasChildren = node.children && node.children.length > 0 && !node.isLeaf;
|
|
192
|
-
const isExpanded =
|
|
200
|
+
const isExpanded = expandedKeysSet.has(node.key);
|
|
193
201
|
if (hasChildren && isExpanded) {
|
|
194
202
|
result.push(...flattenTree(node.children, level + 1));
|
|
195
203
|
}
|
|
196
204
|
});
|
|
197
205
|
return result;
|
|
198
206
|
},
|
|
199
|
-
[
|
|
207
|
+
[expandedKeysSet]
|
|
200
208
|
);
|
|
201
209
|
const flatNodes = React.useMemo(
|
|
202
210
|
() => flattenTree(data),
|
|
203
211
|
[data, flattenTree]
|
|
204
212
|
);
|
|
213
|
+
const checkStates = React.useMemo(() => {
|
|
214
|
+
if (!checkable) return /* @__PURE__ */ new Map();
|
|
215
|
+
const states = /* @__PURE__ */ new Map();
|
|
216
|
+
const compute = (node) => {
|
|
217
|
+
if (states.has(node.key)) return states.get(node.key);
|
|
218
|
+
const checkState = getCheckState(node);
|
|
219
|
+
let state;
|
|
220
|
+
if (checkState.indeterminate) {
|
|
221
|
+
state = "indeterminate";
|
|
222
|
+
} else if (checkState.checked) {
|
|
223
|
+
state = "checked";
|
|
224
|
+
} else {
|
|
225
|
+
state = "unchecked";
|
|
226
|
+
}
|
|
227
|
+
states.set(node.key, state);
|
|
228
|
+
return state;
|
|
229
|
+
};
|
|
230
|
+
flatNodes.forEach(({ node }) => compute(node));
|
|
231
|
+
return states;
|
|
232
|
+
}, [checkable, flatNodes, getCheckState]);
|
|
205
233
|
const renderNode = React.useCallback(
|
|
206
234
|
(item, index) => {
|
|
207
235
|
const { node, level } = item;
|
|
208
236
|
const hasChildren = node.children && node.children.length > 0 && !node.isLeaf;
|
|
209
|
-
const isExpanded =
|
|
237
|
+
const isExpanded = expandedKeysSet.has(node.key);
|
|
210
238
|
const isSelected = currentSelectedKeys.includes(node.key);
|
|
211
|
-
const
|
|
239
|
+
const checkStateValue = checkable ? checkStates.get(node.key) : null;
|
|
240
|
+
const checkState = checkStateValue ? {
|
|
241
|
+
checked: checkStateValue === "checked",
|
|
242
|
+
indeterminate: checkStateValue === "indeterminate"
|
|
243
|
+
} : null;
|
|
212
244
|
return /* @__PURE__ */ jsx(
|
|
213
245
|
"div",
|
|
214
246
|
{
|
|
@@ -326,10 +358,10 @@ var Tree = React.memo(
|
|
|
326
358
|
);
|
|
327
359
|
},
|
|
328
360
|
[
|
|
329
|
-
|
|
361
|
+
expandedKeysSet,
|
|
330
362
|
currentSelectedKeys,
|
|
331
363
|
checkable,
|
|
332
|
-
|
|
364
|
+
checkStates,
|
|
333
365
|
size,
|
|
334
366
|
className,
|
|
335
367
|
classNames,
|
|
@@ -342,12 +374,12 @@ var Tree = React.memo(
|
|
|
342
374
|
flatNodes
|
|
343
375
|
]
|
|
344
376
|
);
|
|
345
|
-
return /* @__PURE__ */ jsx("div", { className: cn("tree_root", "w-full", className, classNames?.root), children: flatNodes.map((item, index) => renderNode(item, index)) });
|
|
377
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "root", className: cn("tree_root", "w-full", className, classNames?.root), children: flatNodes.map((item, index) => renderNode(item, index)) });
|
|
346
378
|
}
|
|
347
379
|
);
|
|
348
380
|
Tree.displayName = "Tree";
|
|
349
381
|
var tree_default = Tree;
|
|
350
382
|
|
|
351
383
|
export { tree_default };
|
|
352
|
-
//# sourceMappingURL=chunk-
|
|
353
|
-
//# sourceMappingURL=chunk-
|
|
384
|
+
//# sourceMappingURL=chunk-LXHFGQOI.js.map
|
|
385
|
+
//# sourceMappingURL=chunk-LXHFGQOI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tree/index.tsx"],"names":[],"mappings":"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","file":"chunk-LXHFGQOI.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport { Check, ChevronRight, Minus } from 'lucide-react'\n\nimport { cn, iconSizes } from '../utils'\nimport type { TreeNode, TreeProps } from './types'\n\nconst treeItemVariants = cva(\n 'flex items-center gap-2 px-2 rounded cursor-pointer select-none transition-colors duration-200 ease-out',\n {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed',\n false: 'hover:bg-surface',\n },\n selected: {\n true: 'bg-primary/10 text-primary',\n false: 'text-text-primary',\n },\n },\n defaultVariants: {\n size: 'md',\n disabled: false,\n selected: false,\n },\n },\n)\n\n// Pure function moved outside component to avoid recreation on every render\nfunction getAllKeys(nodes: TreeNode[]): string[] {\n const keys: string[] = []\n const traverse = (items: TreeNode[]) => {\n items.forEach((item) => {\n keys.push(item.key)\n if (item.children) {\n traverse(item.children)\n }\n })\n }\n traverse(nodes)\n return keys\n}\n\nconst Tree = React.memo<TreeProps>(\n ({\n data,\n defaultExpandedKeys = [],\n expandedKeys,\n onExpand,\n checkable = false,\n checkedKeys,\n defaultCheckedKeys = [],\n onCheck,\n selectable = true,\n selectedKeys,\n defaultSelectedKeys = [],\n onSelect,\n disabled = false,\n size = 'md',\n showLine = false,\n showIcon = true,\n defaultExpandAll = false,\n className,\n classNames,\n }) => {\n const [internalExpandedKeys, setInternalExpandedKeys] = React.useState<\n string[]\n >(defaultExpandAll ? getAllKeys(data) : defaultExpandedKeys)\n const [internalCheckedKeys, setInternalCheckedKeys] =\n React.useState<string[]>(defaultCheckedKeys)\n const [internalSelectedKeys, setInternalSelectedKeys] =\n React.useState<string[]>(defaultSelectedKeys)\n\n const currentExpandedKeys =\n expandedKeys !== undefined ? expandedKeys : internalExpandedKeys\n const currentCheckedKeys =\n checkedKeys !== undefined ? checkedKeys : internalCheckedKeys\n const currentSelectedKeys =\n selectedKeys !== undefined ? selectedKeys : internalSelectedKeys\n\n const getAllLeafKeys = React.useCallback((node: TreeNode): string[] => {\n const keys: string[] = []\n\n const traverse = (n: TreeNode) => {\n if (!n.children || n.children.length === 0 || n.isLeaf) {\n keys.push(n.key)\n } else {\n n.children.forEach((child) => traverse(child))\n }\n }\n\n traverse(node)\n return keys\n }, [])\n\n const getNodeByKey = React.useCallback(\n (key: string): TreeNode | null => {\n const traverse = (nodes: TreeNode[]): TreeNode | null => {\n for (const node of nodes) {\n if (node.key === key) return node\n if (node.children) {\n const found = traverse(node.children)\n if (found) return found\n }\n }\n return null\n }\n return traverse(data)\n },\n [data],\n )\n\n const getCheckedNodes = React.useCallback(\n (keys: string[]): TreeNode[] => {\n return keys\n .map((key) => getNodeByKey(key))\n .filter((node): node is TreeNode => node !== null)\n },\n [getNodeByKey],\n )\n\n const checkedKeysSet = React.useMemo(\n () => new Set(currentCheckedKeys),\n [currentCheckedKeys],\n )\n\n const getCheckState = React.useCallback(\n (node: TreeNode): { checked: boolean; indeterminate: boolean } => {\n if (!node.children || node.children.length === 0 || node.isLeaf) {\n return {\n checked: checkedKeysSet.has(node.key),\n indeterminate: false,\n }\n }\n\n const leafKeys = getAllLeafKeys(node)\n const checkedCount = leafKeys.filter((key) =>\n checkedKeysSet.has(key),\n ).length\n\n return {\n checked: checkedCount === leafKeys.length && leafKeys.length > 0,\n indeterminate: checkedCount > 0 && checkedCount < leafKeys.length,\n }\n },\n [checkedKeysSet, getAllLeafKeys],\n )\n\n const expandedKeysSet = React.useMemo(\n () => new Set(currentExpandedKeys),\n [currentExpandedKeys],\n )\n\n const handleExpand = React.useCallback(\n (key: string) => {\n const newExpandedKeys = expandedKeysSet.has(key)\n ? currentExpandedKeys.filter((k) => k !== key)\n : [...currentExpandedKeys, key]\n\n if (expandedKeys === undefined) {\n setInternalExpandedKeys(newExpandedKeys)\n }\n onExpand?.(newExpandedKeys)\n },\n [currentExpandedKeys, expandedKeys, onExpand, expandedKeysSet],\n )\n\n const handleCheck = React.useCallback(\n (node: TreeNode, checked: boolean) => {\n if (disabled || node.disabled) return\n\n const leafKeys = getAllLeafKeys(node)\n let newCheckedKeys: string[]\n\n if (checked) {\n // Add all leaf keys that aren't already checked\n const keysToAdd = leafKeys.filter(\n (key) => !currentCheckedKeys.includes(key),\n )\n newCheckedKeys = [...currentCheckedKeys, ...keysToAdd]\n } else {\n // Remove all leaf keys\n newCheckedKeys = currentCheckedKeys.filter(\n (key) => !leafKeys.includes(key),\n )\n }\n\n if (checkedKeys === undefined) {\n setInternalCheckedKeys(newCheckedKeys)\n }\n\n const checkedNodes = getCheckedNodes(newCheckedKeys)\n onCheck?.(newCheckedKeys, {\n checked,\n node,\n checkedNodes,\n })\n },\n [\n disabled,\n getAllLeafKeys,\n currentCheckedKeys,\n checkedKeys,\n onCheck,\n getCheckedNodes,\n ],\n )\n\n const handleSelect = React.useCallback(\n (node: TreeNode) => {\n if (disabled || node.disabled || !selectable) return\n\n const isSelected = currentSelectedKeys.includes(node.key)\n const newSelectedKeys = isSelected\n ? currentSelectedKeys.filter((k) => k !== node.key)\n : [...currentSelectedKeys, node.key]\n\n if (selectedKeys === undefined) {\n setInternalSelectedKeys(newSelectedKeys)\n }\n\n onSelect?.(newSelectedKeys, {\n selected: !isSelected,\n node,\n })\n },\n [disabled, selectable, currentSelectedKeys, selectedKeys, onSelect],\n )\n\n const flattenTree = React.useCallback(\n (\n nodes: TreeNode[],\n level: number = 0,\n ): Array<{ node: TreeNode; level: number }> => {\n const result: Array<{ node: TreeNode; level: number }> = []\n\n nodes.forEach((node) => {\n result.push({ node, level })\n\n const hasChildren =\n node.children && node.children.length > 0 && !node.isLeaf\n const isExpanded = expandedKeysSet.has(node.key)\n\n if (hasChildren && isExpanded) {\n result.push(...flattenTree(node.children!, level + 1))\n }\n })\n\n return result\n },\n [expandedKeysSet],\n )\n\n const flatNodes = React.useMemo(\n () => flattenTree(data),\n [data, flattenTree],\n )\n\n // Memoize check states for all visible nodes\n const checkStates = React.useMemo(() => {\n if (!checkable) return new Map<string, 'checked' | 'unchecked' | 'indeterminate'>()\n\n const states = new Map<string, 'checked' | 'unchecked' | 'indeterminate'>()\n\n const compute = (node: TreeNode): 'checked' | 'unchecked' | 'indeterminate' => {\n if (states.has(node.key)) return states.get(node.key)!\n\n const checkState = getCheckState(node)\n let state: 'checked' | 'unchecked' | 'indeterminate'\n\n if (checkState.indeterminate) {\n state = 'indeterminate'\n } else if (checkState.checked) {\n state = 'checked'\n } else {\n state = 'unchecked'\n }\n\n states.set(node.key, state)\n return state\n }\n\n // Pre-compute for all visible nodes\n flatNodes.forEach(({ node }) => compute(node))\n return states\n }, [checkable, flatNodes, getCheckState])\n\n const renderNode = React.useCallback(\n (\n item: { node: TreeNode; level: number },\n index: number,\n ): React.ReactNode => {\n const { node, level } = item\n const hasChildren =\n node.children && node.children.length > 0 && !node.isLeaf\n const isExpanded = expandedKeysSet.has(node.key)\n const isSelected = currentSelectedKeys.includes(node.key)\n\n // Use memoized check state\n const checkStateValue = checkable ? checkStates.get(node.key) : null\n const checkState = checkStateValue\n ? {\n checked: checkStateValue === 'checked',\n indeterminate: checkStateValue === 'indeterminate',\n }\n : null\n\n return (\n <div\n key={node.key}\n className={cn(\n 'tree_node',\n 'relative animate-in fade-in slide-in-from-top-1 duration-200',\n classNames?.node,\n )}\n >\n <div\n className={cn(\n 'tree_nodeContent',\n treeItemVariants({\n size,\n disabled: !!node.disabled,\n selected: checkable ? false : isSelected,\n }),\n className,\n classNames?.nodeContent,\n )}\n >\n {/* Indentation units with vertical lines */}\n {Array.from({ length: level }).map((_, i) => {\n // Check if this indent level should have a vertical line\n const shouldDrawLine =\n showLine &&\n flatNodes.slice(index + 1).some((n) => n.level === i)\n\n return (\n <span\n key={i}\n className=\"relative inline-block w-4 h-6 shrink-0\"\n >\n {/* Vertical line connecting siblings */}\n {shouldDrawLine && (\n <span className=\"absolute top-0 left-1/2 bottom-0 h-full border-l border-border -translate-x-px\" />\n )}\n </span>\n )\n })}\n\n {/* Expand/Collapse Icon */}\n {hasChildren ? (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation()\n handleExpand(node.key)\n }}\n className={cn(\n 'tree_expandIcon',\n 'shrink-0 hover:text-primary transition-colors duration-200',\n classNames?.expandIcon,\n )}\n disabled={disabled || node.disabled}\n >\n <ChevronRight\n className={cn(\n iconSizes[size],\n 'transition-transform duration-300 ease-out',\n isExpanded && 'rotate-90',\n )}\n />\n </button>\n ) : (\n <span className={cn('shrink-0', iconSizes[size])} />\n )}\n\n {/* Checkbox */}\n {checkable && (\n <div\n role=\"checkbox\"\n tabIndex={disabled || node.disabled ? -1 : 0}\n aria-checked={checkState?.indeterminate ? 'mixed' : checkState?.checked}\n onClick={(e) => {\n e.stopPropagation()\n handleCheck(node, !checkState?.checked)\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n e.stopPropagation()\n handleCheck(node, !checkState?.checked)\n }\n }}\n className={cn(\n 'w-4 h-4 border rounded flex items-center justify-center shrink-0 cursor-pointer transition-[colors,transform] duration-200',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-1',\n checkState?.checked\n ? 'bg-primary border-primary'\n : 'border-border',\n (disabled || node.disabled) &&\n 'opacity-50 cursor-not-allowed',\n )}\n >\n {checkState?.checked && (\n <Check className=\"h-3 w-3 text-background animate-in zoom-in-50 duration-200\" />\n )}\n {checkState?.indeterminate && !checkState?.checked && (\n <Minus className=\"h-3 w-3 text-primary animate-in zoom-in-50 duration-200\" />\n )}\n </div>\n )}\n\n {/* Icon */}\n {showIcon && node.icon && (\n <span\n className={cn('tree_icon', 'shrink-0', classNames?.icon)}\n >\n {node.icon}\n </span>\n )}\n\n {/* Label */}\n <span\n onClick={() => {\n if (checkable) {\n handleCheck(node, !checkState?.checked)\n } else {\n handleSelect(node)\n }\n }}\n className={cn('tree_label', 'flex-1 truncate', classNames?.label)}\n >\n {node.label}\n </span>\n </div>\n </div>\n )\n },\n [\n expandedKeysSet,\n currentSelectedKeys,\n checkable,\n checkStates,\n size,\n className,\n classNames,\n disabled,\n handleExpand,\n handleCheck,\n handleSelect,\n showIcon,\n showLine,\n flatNodes,\n ],\n )\n\n return (\n <div data-slot=\"root\" className={cn('tree_root', 'w-full', className, classNames?.root)}>\n {flatNodes.map((item, index) => renderNode(item, index))}\n </div>\n )\n },\n)\n\nTree.displayName = 'Tree'\n\nexport type * from './types'\nexport default Tree\n"]}
|
|
@@ -1,28 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { cn } from './chunk-
|
|
1
|
+
import { colorVars } from './chunk-G6QIIWKU.js';
|
|
2
|
+
import { cn } from './chunk-RAS6HUEI.js';
|
|
3
3
|
import { cva } from 'class-variance-authority';
|
|
4
|
-
import { X } from 'lucide-react';
|
|
5
4
|
import React from 'react';
|
|
5
|
+
import { X } from 'lucide-react';
|
|
6
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
7
|
|
|
8
8
|
var tagVariants = cva("inline-flex items-center gap-1.5 whitespace-nowrap rounded font-medium transition-colors", {
|
|
9
9
|
variants: {
|
|
10
10
|
variant: {
|
|
11
|
-
default: "border",
|
|
12
|
-
solid: "",
|
|
13
|
-
outline: "border",
|
|
14
|
-
soft: ""
|
|
15
|
-
},
|
|
16
|
-
color: {
|
|
17
|
-
default: "",
|
|
18
|
-
primary: "",
|
|
19
|
-
secondary: "",
|
|
20
|
-
accent: "",
|
|
21
|
-
success: "",
|
|
22
|
-
error: "",
|
|
23
|
-
warning: "",
|
|
24
|
-
info: ""
|
|
11
|
+
default: "bg-slot border border-slot text-slot-fg",
|
|
12
|
+
solid: "bg-slot border border-slot text-slot-fg hover:bg-slot-90",
|
|
13
|
+
outline: "border border-slot text-slot hover:bg-slot-10",
|
|
14
|
+
soft: "bg-slot-10 text-slot"
|
|
25
15
|
},
|
|
16
|
+
color: colorVars,
|
|
26
17
|
size: {
|
|
27
18
|
xs: "text-[10px] px-1.5 py-0.5",
|
|
28
19
|
sm: "text-xs px-2 py-1",
|
|
@@ -30,7 +21,6 @@ var tagVariants = cva("inline-flex items-center gap-1.5 whitespace-nowrap rounde
|
|
|
30
21
|
lg: "text-base px-3 py-1.5"
|
|
31
22
|
}
|
|
32
23
|
},
|
|
33
|
-
compoundVariants: createAllColorVariants(componentColors, ["default", "solid", "outline", "soft"]),
|
|
34
24
|
defaultVariants: {
|
|
35
25
|
variant: "solid",
|
|
36
26
|
color: "primary",
|
|
@@ -43,7 +33,7 @@ var iconSizeClasses = {
|
|
|
43
33
|
md: "size-3.5",
|
|
44
34
|
lg: "size-4"
|
|
45
35
|
};
|
|
46
|
-
var Tag = ({
|
|
36
|
+
var Tag = React.memo(({
|
|
47
37
|
children,
|
|
48
38
|
color = "primary",
|
|
49
39
|
variant = "solid",
|
|
@@ -88,7 +78,7 @@ var Tag = ({
|
|
|
88
78
|
"tag_root",
|
|
89
79
|
tagVariants({ variant, color, size }),
|
|
90
80
|
(onClick || closable) && "cursor-pointer",
|
|
91
|
-
(onClick || !disableKeyboardRemoval && closable) && "focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary",
|
|
81
|
+
(onClick || !disableKeyboardRemoval && closable) && "focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-primary ring-offset-background",
|
|
92
82
|
classNames?.root,
|
|
93
83
|
className
|
|
94
84
|
),
|
|
@@ -132,10 +122,10 @@ var Tag = ({
|
|
|
132
122
|
]
|
|
133
123
|
}
|
|
134
124
|
);
|
|
135
|
-
};
|
|
125
|
+
});
|
|
136
126
|
Tag.displayName = "Tag";
|
|
137
127
|
var tag_default = Tag;
|
|
138
128
|
|
|
139
129
|
export { tag_default };
|
|
140
|
-
//# sourceMappingURL=chunk-
|
|
141
|
-
//# sourceMappingURL=chunk-
|
|
130
|
+
//# sourceMappingURL=chunk-NMP4HY6M.js.map
|
|
131
|
+
//# sourceMappingURL=chunk-NMP4HY6M.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tag/index.tsx"],"names":[],"mappings":"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","file":"chunk-NMP4HY6M.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority';\nimport React from 'react';\n\nimport { X } from 'lucide-react';\n\nimport { cn } from '../utils';\nimport { colorVars } from '../variants';\nimport type { TagProps } from './types';\n\n/**\n * Class variance authority configuration for the Tag component\n * Defines style variants for color, variant, and size\n */\nconst tagVariants = cva('inline-flex items-center gap-1.5 whitespace-nowrap rounded font-medium transition-colors', {\n variants: {\n variant: {\n default: 'bg-slot border border-slot text-slot-fg',\n solid: 'bg-slot border border-slot text-slot-fg hover:bg-slot-90',\n outline: 'border border-slot text-slot hover:bg-slot-10',\n soft: 'bg-slot-10 text-slot',\n },\n color: colorVars,\n size: {\n xs: 'text-[10px] px-1.5 py-0.5',\n sm: 'text-xs px-2 py-1',\n md: 'text-sm px-2.5 py-1',\n lg: 'text-base px-3 py-1.5',\n },\n },\n defaultVariants: {\n variant: 'solid',\n color: 'primary',\n size: 'sm',\n },\n});\n\n/**\n * Icon and close button size variants for different tag sizes\n */\nconst iconSizeClasses = {\n xs: 'size-2.5',\n sm: 'size-3',\n md: 'size-3.5',\n lg: 'size-4',\n};\n\n/**\n * Tag Component\n *\n * An interactive badge variant that can be used for labels, categories, or removable items.\n * Supports multiple variants, colors, sizes, icons, and close functionality.\n *\n * @component\n * @example\n * // Basic tag\n * <Tag>Label</Tag>\n *\n * @example\n * // Tag with close button\n * <Tag closable onClose={(e) => console.log('Tag removed')}>\n * Removable Tag\n * </Tag>\n *\n * @example\n * // Tag with icon\n * <Tag icon={<Star />} color=\"warning\">\n * Featured\n * </Tag>\n *\n * @example\n * // Different variants\n * <Tag variant=\"outline\" color=\"success\">Outline Tag</Tag>\n * <Tag variant=\"soft\" color=\"info\">Soft Tag</Tag>\n *\n * @example\n * // Disable keyboard removal (Backspace/Delete on tag)\n * <Tag closable disableKeyboardRemoval onClose={(e) => console.log('Tag removed')}>\n * No keyboard removal\n * </Tag>\n *\n * @example\n * // Tag with keyboard removal enabled (focus on tag and press Delete/Backspace)\n * <Tag closable onClose={(e) => console.log('Tag removed')}>\n * Press Delete or Backspace to remove\n * </Tag>\n *\n * @param {TagProps} props - Component props\n * @returns {JSX.Element} Rendered tag component\n */\nconst Tag = React.memo<TagProps>(({\n children,\n color = 'primary',\n variant = 'solid',\n size = 'sm',\n closable = false,\n onClose,\n icon,\n className,\n classNames,\n onClick,\n disableKeyboardRemoval = false,\n ...props\n}) => {\n /**\n * Handles the close button click event\n * Stops event propagation to prevent triggering parent onClick handlers\n *\n * @param {React.MouseEvent<HTMLButtonElement>} e - Mouse event\n */\n const handleClose = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onClose?.(e);\n };\n\n /**\n * Handles keyboard events for the close button\n * Always responds to Enter/Space for activation (accessibility requirement)\n *\n * @param {React.KeyboardEvent<HTMLButtonElement>} e - Keyboard event\n */\n const handleCloseKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n // Always allow Enter/Space for activation (accessibility requirement)\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n onClose?.(e as unknown as React.MouseEvent<HTMLButtonElement>);\n }\n };\n\n /**\n * Handles keyboard events for the tag\n * Removes tag when Delete or Backspace is pressed (takes priority)\n * Activates onClick when Enter or Space is pressed\n *\n * @param {React.KeyboardEvent<HTMLSpanElement>} e - Keyboard event\n */\n const handleTagKeyDown = (e: React.KeyboardEvent<HTMLSpanElement>) => {\n // Handle deletion for closable tags (takes priority over onClick)\n if (!disableKeyboardRemoval && closable && (e.key === 'Delete' || e.key === 'Backspace')) {\n e.preventDefault();\n e.stopPropagation();\n onClose?.(e as unknown as React.MouseEvent<HTMLButtonElement>);\n return;\n }\n\n // Handle activation for clickable tags\n if (onClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n e.stopPropagation();\n onClick(e as unknown as React.MouseEvent<HTMLSpanElement>);\n }\n };\n\n return (\n <span\n className={cn(\n 'tag_root',\n tagVariants({ variant, color, size }),\n (onClick || closable) && 'cursor-pointer',\n (onClick || (!disableKeyboardRemoval && closable)) &&\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-primary ring-offset-background',\n classNames?.root,\n className\n )}\n onClick={onClick}\n onKeyDown={onClick || (!disableKeyboardRemoval && closable) ? handleTagKeyDown : undefined}\n role={onClick || (!disableKeyboardRemoval && closable) ? 'button' : undefined}\n tabIndex={onClick || (!disableKeyboardRemoval && closable) ? 0 : undefined}\n aria-label={\n (onClick || (!disableKeyboardRemoval && closable)) && typeof children === 'string' ? children : undefined\n }\n data-slot='root'\n {...props}\n >\n {icon && (\n <span className={cn('inline-flex items-center justify-center flex-shrink-0', iconSizeClasses[size])}>\n {React.isValidElement(icon)\n ? React.cloneElement(icon, {\n className: cn('w-full h-full', (icon.props as { className?: string }).className),\n } as React.HTMLAttributes<HTMLElement>)\n : icon}\n </span>\n )}\n <span\n className={cn('tag_content', classNames?.content)}\n data-slot='content'\n >\n {children}\n </span>\n {closable && (\n <button\n type='button'\n onClick={handleClose}\n onKeyDown={handleCloseKeyDown}\n className={cn(\n 'tag_closeButton',\n 'inline-flex items-center justify-center flex-shrink-0 cursor-pointer rounded-sm opacity-70 hover:opacity-100 transition-opacity focus:outline-none focus:ring-2 focus:ring-current focus:ring-offset-1',\n iconSizeClasses[size],\n classNames?.closeButton\n )}\n aria-label={typeof children === 'string' ? `Remove ${children}` : 'Remove tag'}\n tabIndex={disableKeyboardRemoval ? 0 : -1}\n data-slot='closeButton'\n >\n <X className='w-full h-full' />\n </button>\n )}\n </span>\n );\n});\n\nTag.displayName = 'Tag';\n\nexport type * from './types';\nexport default Tag;\n"]}
|