@mdigital_ui/ui 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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/avatar/index.d.ts +0 -6
- package/dist/avatar/index.d.ts.map +1 -1
- package/dist/avatar/index.js +2 -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/card/index.d.ts +0 -40
- 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/index.d.ts +4 -0
- package/dist/carousel/index.d.ts.map +1 -1
- package/dist/carousel/index.js +2 -2
- 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-H6G4BUPA.js → chunk-2FYXBW4S.js} +201 -161
- package/dist/chunk-2FYXBW4S.js.map +1 -0
- package/dist/{chunk-KH577UDI.js → chunk-2OBMSB5S.js} +9 -6
- package/dist/chunk-2OBMSB5S.js.map +1 -0
- package/dist/{chunk-3BIV3QE2.js → chunk-3FXOQC6P.js} +60 -28
- package/dist/chunk-3FXOQC6P.js.map +1 -0
- package/dist/{chunk-YXLIGJTN.js → chunk-3KISIZGP.js} +6 -6
- package/dist/chunk-3KISIZGP.js.map +1 -0
- package/dist/{chunk-6G3BMY4N.js → chunk-3QD7AQX7.js} +76 -85
- package/dist/chunk-3QD7AQX7.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-OLTQAMV2.js → chunk-442OQLPK.js} +9 -24
- package/dist/chunk-442OQLPK.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-4WZDQI22.js +378 -0
- package/dist/chunk-4WZDQI22.js.map +1 -0
- package/dist/{chunk-TLNHWOQQ.js → chunk-54Z7XTJA.js} +30 -19
- package/dist/chunk-54Z7XTJA.js.map +1 -0
- package/dist/{chunk-64NHVOZS.js → chunk-5CIJ7UCP.js} +25 -15
- package/dist/chunk-5CIJ7UCP.js.map +1 -0
- package/dist/{chunk-ON2CMF6J.js → chunk-5XLCUGLQ.js} +14 -10
- package/dist/chunk-5XLCUGLQ.js.map +1 -0
- package/dist/{chunk-DUIL5BYS.js → chunk-62LTLXVG.js} +72 -48
- package/dist/chunk-62LTLXVG.js.map +1 -0
- package/dist/{chunk-G6NVGBYZ.js → chunk-6ZPCKFRS.js} +23 -22
- package/dist/chunk-6ZPCKFRS.js.map +1 -0
- package/dist/{chunk-N2WHJ3FI.js → chunk-7OYMEXY3.js} +7 -5
- package/dist/chunk-7OYMEXY3.js.map +1 -0
- package/dist/{chunk-ONGJXAYQ.js → chunk-AEPBQO7U.js} +6 -5
- package/dist/chunk-AEPBQO7U.js.map +1 -0
- package/dist/{chunk-UTWQ2FZK.js → chunk-AOXTD7QZ.js} +47 -93
- package/dist/chunk-AOXTD7QZ.js.map +1 -0
- package/dist/{chunk-ZJNGZCRB.js → chunk-BLFXVSZU.js} +54 -153
- package/dist/chunk-BLFXVSZU.js.map +1 -0
- package/dist/{chunk-VOODO2ZE.js → chunk-BMA4E3T6.js} +6 -14
- package/dist/chunk-BMA4E3T6.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-3BZE6BBJ.js → chunk-C46VTIW7.js} +41 -23
- package/dist/chunk-C46VTIW7.js.map +1 -0
- package/dist/{chunk-BVO2BNFG.js → chunk-CHGABWIV.js} +3 -3
- package/dist/chunk-CHGABWIV.js.map +1 -0
- package/dist/chunk-DF2ICSNI.js +99 -0
- package/dist/chunk-DF2ICSNI.js.map +1 -0
- package/dist/chunk-DOI7OTYV.js +81 -0
- package/dist/chunk-DOI7OTYV.js.map +1 -0
- package/dist/{chunk-2TLOWZE4.js → chunk-DPIXBBXK.js} +40 -179
- package/dist/chunk-DPIXBBXK.js.map +1 -0
- package/dist/{chunk-OQFYIKWR.js → chunk-EC5DXYME.js} +21 -12
- package/dist/chunk-EC5DXYME.js.map +1 -0
- package/dist/{chunk-KJTMZJ7V.js → chunk-EHNWVQBL.js} +65 -48
- package/dist/chunk-EHNWVQBL.js.map +1 -0
- package/dist/{chunk-I32ZQUYY.js → chunk-F4GLUQOF.js} +9 -8
- package/dist/chunk-F4GLUQOF.js.map +1 -0
- package/dist/{chunk-GJPZOMFE.js → chunk-FCU2ENQQ.js} +63 -31
- package/dist/chunk-FCU2ENQQ.js.map +1 -0
- package/dist/{chunk-JWTWPZ32.js → chunk-FZXMRXWE.js} +10 -9
- package/dist/chunk-FZXMRXWE.js.map +1 -0
- package/dist/{chunk-LOYLJRCF.js → chunk-G27HGKWO.js} +15 -5
- package/dist/chunk-G27HGKWO.js.map +1 -0
- package/dist/{chunk-Y4XAXZHB.js → chunk-GGQF5PQN.js} +9 -8
- package/dist/chunk-GGQF5PQN.js.map +1 -0
- package/dist/chunk-GLJDHW73.js +24 -0
- package/dist/chunk-GLJDHW73.js.map +1 -0
- package/dist/{chunk-LX4FDH4J.js → chunk-GPSZJWU3.js} +10 -11
- package/dist/chunk-GPSZJWU3.js.map +1 -0
- package/dist/{chunk-6LYRMQOI.js → chunk-H6PCGSIT.js} +21 -16
- package/dist/chunk-H6PCGSIT.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-HECAAILV.js → chunk-HRVOTFU4.js} +24 -16
- package/dist/chunk-HRVOTFU4.js.map +1 -0
- package/dist/{chunk-O3V3BTIJ.js → chunk-HSW64H23.js} +54 -87
- package/dist/chunk-HSW64H23.js.map +1 -0
- package/dist/{chunk-YS5AIY4A.js → chunk-K5RV3GF4.js} +6 -5
- package/dist/chunk-K5RV3GF4.js.map +1 -0
- package/dist/{chunk-2WZVD7P3.js → chunk-KZZJAZ5M.js} +6 -5
- package/dist/chunk-KZZJAZ5M.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-C5IGZLIT.js → chunk-LM6CJZX5.js} +8 -22
- package/dist/chunk-LM6CJZX5.js.map +1 -0
- package/dist/{chunk-RFHTC6AH.js → chunk-LXHOS74B.js} +16 -38
- package/dist/chunk-LXHOS74B.js.map +1 -0
- package/dist/{chunk-674JC24S.js → chunk-MZDAQSI4.js} +27 -28
- package/dist/chunk-MZDAQSI4.js.map +1 -0
- package/dist/{chunk-3PWILVOE.js → chunk-NHM6DZOF.js} +35 -50
- package/dist/chunk-NHM6DZOF.js.map +1 -0
- package/dist/chunk-NZHKNUGE.js +96 -0
- package/dist/chunk-NZHKNUGE.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-POLVJ36Y.js → chunk-QNLTSHMB.js} +13 -38
- package/dist/chunk-QNLTSHMB.js.map +1 -0
- package/dist/{chunk-7UCNBMCV.js → chunk-QZ67UOPR.js} +13 -19
- package/dist/chunk-QZ67UOPR.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-R3TLU26W.js → chunk-S7R4NTOI.js} +9 -7
- package/dist/chunk-S7R4NTOI.js.map +1 -0
- package/dist/{chunk-L5UYN5LX.js → chunk-SHUHAORE.js} +78 -44
- package/dist/chunk-SHUHAORE.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-ERRZ2CSG.js → chunk-SUNCSPDF.js} +45 -74
- package/dist/chunk-SUNCSPDF.js.map +1 -0
- package/dist/{chunk-YJOLLSHH.js → chunk-TS2PG6Z4.js} +42 -34
- package/dist/chunk-TS2PG6Z4.js.map +1 -0
- package/dist/{chunk-X3YNHX77.js → chunk-U3RHF7QF.js} +32 -33
- package/dist/chunk-U3RHF7QF.js.map +1 -0
- package/dist/{chunk-GVVP5TZM.js → chunk-UIVOI7HE.js} +231 -197
- package/dist/chunk-UIVOI7HE.js.map +1 -0
- package/dist/{chunk-D4SUSZDN.js → chunk-USHR3MWQ.js} +13 -13
- package/dist/chunk-USHR3MWQ.js.map +1 -0
- package/dist/{chunk-764UKE6X.js → chunk-VIK6UTVN.js} +7 -6
- package/dist/chunk-VIK6UTVN.js.map +1 -0
- package/dist/{chunk-HUXODBIO.js → chunk-VKY3JXAQ.js} +42 -101
- package/dist/chunk-VKY3JXAQ.js.map +1 -0
- package/dist/{chunk-FZSCLZF6.js → chunk-VV3VO5TS.js} +64 -101
- package/dist/chunk-VV3VO5TS.js.map +1 -0
- package/dist/{chunk-ZIYA7TGX.js → chunk-W5L7C7WS.js} +12 -22
- package/dist/chunk-W5L7C7WS.js.map +1 -0
- package/dist/{chunk-GOLARX5K.js → chunk-X3CNTOKQ.js} +13 -10
- package/dist/chunk-X3CNTOKQ.js.map +1 -0
- package/dist/{chunk-EHWXPH76.js → chunk-XKDN5PWJ.js} +8 -6
- package/dist/chunk-XKDN5PWJ.js.map +1 -0
- package/dist/{chunk-HCOTO5WX.js → chunk-XWCWTPEM.js} +7 -8
- package/dist/chunk-XWCWTPEM.js.map +1 -0
- package/dist/{chunk-BPRCBPVJ.js → chunk-YSV5GQS7.js} +55 -17
- package/dist/chunk-YSV5GQS7.js.map +1 -0
- package/dist/{chunk-6JGNJI5T.js → chunk-ZNNIXMJZ.js} +35 -21
- package/dist/chunk-ZNNIXMJZ.js.map +1 -0
- package/dist/{chunk-CN74CNAN.js → chunk-ZZZGD5EF.js} +8 -22
- package/dist/chunk-ZZZGD5EF.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 +3 -3
- package/dist/collapse/types.d.ts +2 -35
- package/dist/collapse/types.d.ts.map +1 -1
- package/dist/command/index.d.ts +39 -66
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +3 -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 +1 -45
- package/dist/context-menu/index.d.ts.map +1 -1
- package/dist/context-menu/index.js +4 -3
- package/dist/context-menu/types.d.ts +9 -63
- package/dist/context-menu/types.d.ts.map +1 -1
- package/dist/date-picker/index.d.ts.map +1 -1
- package/dist/date-picker/index.js +4 -4
- package/dist/date-picker/types.d.ts +2 -2
- package/dist/date-picker/types.d.ts.map +1 -1
- package/dist/descriptions/index.d.ts.map +1 -1
- package/dist/descriptions/index.js +2 -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/empty/index.d.ts.map +1 -1
- package/dist/empty/index.js +2 -2
- package/dist/empty/types.d.ts +3 -40
- package/dist/empty/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-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 +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +68 -67
- 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 +2 -2
- package/dist/menubar/index.d.ts.map +1 -1
- package/dist/menubar/index.js +5 -4
- package/dist/modal/index.d.ts.map +1 -1
- package/dist/modal/index.js +2 -2
- package/dist/modal/types.d.ts +2 -44
- 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 +7 -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.js +2 -2
- 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 +5 -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/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 +2 -2
- package/dist/rating/types.d.ts +2 -2
- package/dist/rating/types.d.ts.map +1 -1
- 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 +7 -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.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/index.d.ts.map +1 -1
- package/dist/table/index.js +11 -11
- package/dist/table/types.d.ts +2 -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/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/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 +2 -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/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/upload/index.d.ts.map +1 -1
- package/dist/upload/index.js +3 -3
- package/dist/upload/types.d.ts +5 -32
- package/dist/upload/types.d.ts.map +1 -1
- package/dist/upload/utils.d.ts +1 -0
- 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/package.json +1 -1
- package/styles/global.css +300 -977
- package/dist/chunk-2PNLIQYM.js.map +0 -1
- package/dist/chunk-2TLOWZE4.js.map +0 -1
- 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-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.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.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.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.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.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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn, iconSizes } from './chunk-
|
|
1
|
+
import { cn, iconSizes } from './chunk-RAS6HUEI.js';
|
|
2
2
|
import { cva } from 'class-variance-authority';
|
|
3
3
|
import { ChevronRight, Check, Minus } from 'lucide-react';
|
|
4
4
|
import React from 'react';
|
|
@@ -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-3FXOQC6P.js.map
|
|
385
|
+
//# sourceMappingURL=chunk-3FXOQC6P.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tree/index.tsx"],"names":[],"mappings":";;;;;;AASA,IAAM,gBAAA,GAAmB,GAAA;AAAA,EACvB,yGAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,WAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,+BAAA;AAAA,QACN,KAAA,EAAO;AAAA,OACT;AAAA,MACA,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,4BAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,IAAA;AAAA,MACN,QAAA,EAAU,KAAA;AAAA,MACV,QAAA,EAAU;AAAA;AACZ;AAEJ,CAAA;AAGA,SAAS,WAAW,KAAA,EAA6B;AAC/C,EAAA,MAAM,OAAiB,EAAC;AACxB,EAAA,MAAM,QAAA,GAAW,CAAC,KAAA,KAAsB;AACtC,IAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAA,KAAS;AACtB,MAAA,IAAA,CAAK,IAAA,CAAK,KAAK,GAAG,CAAA;AAClB,MAAA,IAAI,KAAK,QAAA,EAAU;AACjB,QAAA,QAAA,CAAS,KAAK,QAAQ,CAAA;AAAA,MACxB;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AACA,EAAA,QAAA,CAAS,KAAK,CAAA;AACd,EAAA,OAAO,IAAA;AACT;AAEA,IAAM,OAAO,KAAA,CAAM,IAAA;AAAA,EACjB,CAAC;AAAA,IACC,IAAA;AAAA,IACA,sBAAsB,EAAC;AAAA,IACvB,YAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA,GAAY,KAAA;AAAA,IACZ,WAAA;AAAA,IACA,qBAAqB,EAAC;AAAA,IACtB,OAAA;AAAA,IACA,UAAA,GAAa,IAAA;AAAA,IACb,YAAA;AAAA,IACA,sBAAsB,EAAC;AAAA,IACvB,QAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,IAAA,GAAO,IAAA;AAAA,IACP,QAAA,GAAW,KAAA;AAAA,IACX,QAAA,GAAW,IAAA;AAAA,IACX,gBAAA,GAAmB,KAAA;AAAA,IACnB,SAAA;AAAA,IACA;AAAA,GACF,KAAM;AACJ,IAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAAI,KAAA,CAAM,SAE5D,gBAAA,GAAmB,UAAA,CAAW,IAAI,CAAA,GAAI,mBAAmB,CAAA;AAC3D,IAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAChD,KAAA,CAAM,SAAmB,kBAAkB,CAAA;AAC7C,IAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAClD,KAAA,CAAM,SAAmB,mBAAmB,CAAA;AAE9C,IAAA,MAAM,mBAAA,GACJ,YAAA,KAAiB,MAAA,GAAY,YAAA,GAAe,oBAAA;AAC9C,IAAA,MAAM,kBAAA,GACJ,WAAA,KAAgB,MAAA,GAAY,WAAA,GAAc,mBAAA;AAC5C,IAAA,MAAM,mBAAA,GACJ,YAAA,KAAiB,MAAA,GAAY,YAAA,GAAe,oBAAA;AAE9C,IAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,WAAA,CAAY,CAAC,IAAA,KAA6B;AACrE,MAAA,MAAM,OAAiB,EAAC;AAExB,MAAA,MAAM,QAAA,GAAW,CAAC,CAAA,KAAgB;AAChC,QAAA,IAAI,CAAC,EAAE,QAAA,IAAY,CAAA,CAAE,SAAS,MAAA,KAAW,CAAA,IAAK,EAAE,MAAA,EAAQ;AACtD,UAAA,IAAA,CAAK,IAAA,CAAK,EAAE,GAAG,CAAA;AAAA,QACjB,CAAA,MAAO;AACL,UAAA,CAAA,CAAE,SAAS,OAAA,CAAQ,CAAC,KAAA,KAAU,QAAA,CAAS,KAAK,CAAC,CAAA;AAAA,QAC/C;AAAA,MACF,CAAA;AAEA,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,eAAe,KAAA,CAAM,WAAA;AAAA,MACzB,CAAC,GAAA,KAAiC;AAChC,QAAA,MAAM,QAAA,GAAW,CAAC,KAAA,KAAuC;AACvD,UAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,YAAA,IAAI,IAAA,CAAK,GAAA,KAAQ,GAAA,EAAK,OAAO,IAAA;AAC7B,YAAA,IAAI,KAAK,QAAA,EAAU;AACjB,cAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,IAAA,CAAK,QAAQ,CAAA;AACpC,cAAA,IAAI,OAAO,OAAO,KAAA;AAAA,YACpB;AAAA,UACF;AACA,UAAA,OAAO,IAAA;AAAA,QACT,CAAA;AACA,QAAA,OAAO,SAAS,IAAI,CAAA;AAAA,MACtB,CAAA;AAAA,MACA,CAAC,IAAI;AAAA,KACP;AAEA,IAAA,MAAM,kBAAkB,KAAA,CAAM,WAAA;AAAA,MAC5B,CAAC,IAAA,KAA+B;AAC9B,QAAA,OAAO,IAAA,CACJ,GAAA,CAAI,CAAC,GAAA,KAAQ,YAAA,CAAa,GAAG,CAAC,CAAA,CAC9B,MAAA,CAAO,CAAC,IAAA,KAA2B,IAAA,KAAS,IAAI,CAAA;AAAA,MACrD,CAAA;AAAA,MACA,CAAC,YAAY;AAAA,KACf;AAEA,IAAA,MAAM,iBAAiB,KAAA,CAAM,OAAA;AAAA,MAC3B,MAAM,IAAI,GAAA,CAAI,kBAAkB,CAAA;AAAA,MAChC,CAAC,kBAAkB;AAAA,KACrB;AAEA,IAAA,MAAM,gBAAgB,KAAA,CAAM,WAAA;AAAA,MAC1B,CAAC,IAAA,KAAiE;AAChE,QAAA,IAAI,CAAC,KAAK,QAAA,IAAY,IAAA,CAAK,SAAS,MAAA,KAAW,CAAA,IAAK,KAAK,MAAA,EAAQ;AAC/D,UAAA,OAAO;AAAA,YACL,OAAA,EAAS,cAAA,CAAe,GAAA,CAAI,IAAA,CAAK,GAAG,CAAA;AAAA,YACpC,aAAA,EAAe;AAAA,WACjB;AAAA,QACF;AAEA,QAAA,MAAM,QAAA,GAAW,eAAe,IAAI,CAAA;AACpC,QAAA,MAAM,eAAe,QAAA,CAAS,MAAA;AAAA,UAAO,CAAC,GAAA,KACpC,cAAA,CAAe,GAAA,CAAI,GAAG;AAAA,SACxB,CAAE,MAAA;AAEF,QAAA,OAAO;AAAA,UACL,OAAA,EAAS,YAAA,KAAiB,QAAA,CAAS,MAAA,IAAU,SAAS,MAAA,GAAS,CAAA;AAAA,UAC/D,aAAA,EAAe,YAAA,GAAe,CAAA,IAAK,YAAA,GAAe,QAAA,CAAS;AAAA,SAC7D;AAAA,MACF,CAAA;AAAA,MACA,CAAC,gBAAgB,cAAc;AAAA,KACjC;AAEA,IAAA,MAAM,kBAAkB,KAAA,CAAM,OAAA;AAAA,MAC5B,MAAM,IAAI,GAAA,CAAI,mBAAmB,CAAA;AAAA,MACjC,CAAC,mBAAmB;AAAA,KACtB;AAEA,IAAA,MAAM,eAAe,KAAA,CAAM,WAAA;AAAA,MACzB,CAAC,GAAA,KAAgB;AACf,QAAA,MAAM,eAAA,GAAkB,eAAA,CAAgB,GAAA,CAAI,GAAG,IAC3C,mBAAA,CAAoB,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,GAAG,CAAA,GAC3C,CAAC,GAAG,qBAAqB,GAAG,CAAA;AAEhC,QAAA,IAAI,iBAAiB,MAAA,EAAW;AAC9B,UAAA,uBAAA,CAAwB,eAAe,CAAA;AAAA,QACzC;AACA,QAAA,QAAA,GAAW,eAAe,CAAA;AAAA,MAC5B,CAAA;AAAA,MACA,CAAC,mBAAA,EAAqB,YAAA,EAAc,QAAA,EAAU,eAAe;AAAA,KAC/D;AAEA,IAAA,MAAM,cAAc,KAAA,CAAM,WAAA;AAAA,MACxB,CAAC,MAAgB,OAAA,KAAqB;AACpC,QAAA,IAAI,QAAA,IAAY,KAAK,QAAA,EAAU;AAE/B,QAAA,MAAM,QAAA,GAAW,eAAe,IAAI,CAAA;AACpC,QAAA,IAAI,cAAA;AAEJ,QAAA,IAAI,OAAA,EAAS;AAEX,UAAA,MAAM,YAAY,QAAA,CAAS,MAAA;AAAA,YACzB,CAAC,GAAA,KAAQ,CAAC,kBAAA,CAAmB,SAAS,GAAG;AAAA,WAC3C;AACA,UAAA,cAAA,GAAiB,CAAC,GAAG,kBAAA,EAAoB,GAAG,SAAS,CAAA;AAAA,QACvD,CAAA,MAAO;AAEL,UAAA,cAAA,GAAiB,kBAAA,CAAmB,MAAA;AAAA,YAClC,CAAC,GAAA,KAAQ,CAAC,QAAA,CAAS,SAAS,GAAG;AAAA,WACjC;AAAA,QACF;AAEA,QAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,UAAA,sBAAA,CAAuB,cAAc,CAAA;AAAA,QACvC;AAEA,QAAA,MAAM,YAAA,GAAe,gBAAgB,cAAc,CAAA;AACnD,QAAA,OAAA,GAAU,cAAA,EAAgB;AAAA,UACxB,OAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH,CAAA;AAAA,MACA;AAAA,QACE,QAAA;AAAA,QACA,cAAA;AAAA,QACA,kBAAA;AAAA,QACA,WAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA;AACF,KACF;AAEA,IAAA,MAAM,eAAe,KAAA,CAAM,WAAA;AAAA,MACzB,CAAC,IAAA,KAAmB;AAClB,QAAA,IAAI,QAAA,IAAY,IAAA,CAAK,QAAA,IAAY,CAAC,UAAA,EAAY;AAE9C,QAAA,MAAM,UAAA,GAAa,mBAAA,CAAoB,QAAA,CAAS,IAAA,CAAK,GAAG,CAAA;AACxD,QAAA,MAAM,eAAA,GAAkB,UAAA,GACpB,mBAAA,CAAoB,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,IAAA,CAAK,GAAG,CAAA,GAChD,CAAC,GAAG,mBAAA,EAAqB,KAAK,GAAG,CAAA;AAErC,QAAA,IAAI,iBAAiB,MAAA,EAAW;AAC9B,UAAA,uBAAA,CAAwB,eAAe,CAAA;AAAA,QACzC;AAEA,QAAA,QAAA,GAAW,eAAA,EAAiB;AAAA,UAC1B,UAAU,CAAC,UAAA;AAAA,UACX;AAAA,SACD,CAAA;AAAA,MACH,CAAA;AAAA,MACA,CAAC,QAAA,EAAU,UAAA,EAAY,mBAAA,EAAqB,cAAc,QAAQ;AAAA,KACpE;AAEA,IAAA,MAAM,cAAc,KAAA,CAAM,WAAA;AAAA,MACxB,CACE,KAAA,EACA,KAAA,GAAgB,CAAA,KAC6B;AAC7C,QAAA,MAAM,SAAmD,EAAC;AAE1D,QAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAA,KAAS;AACtB,UAAA,MAAA,CAAO,IAAA,CAAK,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA;AAE3B,UAAA,MAAM,WAAA,GACJ,KAAK,QAAA,IAAY,IAAA,CAAK,SAAS,MAAA,GAAS,CAAA,IAAK,CAAC,IAAA,CAAK,MAAA;AACrD,UAAA,MAAM,UAAA,GAAa,eAAA,CAAgB,GAAA,CAAI,IAAA,CAAK,GAAG,CAAA;AAE/C,UAAA,IAAI,eAAe,UAAA,EAAY;AAC7B,YAAA,MAAA,CAAO,KAAK,GAAG,WAAA,CAAY,KAAK,QAAA,EAAW,KAAA,GAAQ,CAAC,CAAC,CAAA;AAAA,UACvD;AAAA,QACF,CAAC,CAAA;AAED,QAAA,OAAO,MAAA;AAAA,MACT,CAAA;AAAA,MACA,CAAC,eAAe;AAAA,KAClB;AAEA,IAAA,MAAM,YAAY,KAAA,CAAM,OAAA;AAAA,MACtB,MAAM,YAAY,IAAI,CAAA;AAAA,MACtB,CAAC,MAAM,WAAW;AAAA,KACpB;AAGA,IAAA,MAAM,WAAA,GAAc,KAAA,CAAM,OAAA,CAAQ,MAAM;AACtC,MAAA,IAAI,CAAC,SAAA,EAAW,uBAAO,IAAI,GAAA,EAAuD;AAElF,MAAA,MAAM,MAAA,uBAAa,GAAA,EAAuD;AAE1E,MAAA,MAAM,OAAA,GAAU,CAAC,IAAA,KAA8D;AAC7E,QAAA,IAAI,MAAA,CAAO,IAAI,IAAA,CAAK,GAAG,GAAG,OAAO,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,GAAG,CAAA;AAEpD,QAAA,MAAM,UAAA,GAAa,cAAc,IAAI,CAAA;AACrC,QAAA,IAAI,KAAA;AAEJ,QAAA,IAAI,WAAW,aAAA,EAAe;AAC5B,UAAA,KAAA,GAAQ,eAAA;AAAA,QACV,CAAA,MAAA,IAAW,WAAW,OAAA,EAAS;AAC7B,UAAA,KAAA,GAAQ,SAAA;AAAA,QACV,CAAA,MAAO;AACL,UAAA,KAAA,GAAQ,WAAA;AAAA,QACV;AAEA,QAAA,MAAA,CAAO,GAAA,CAAI,IAAA,CAAK,GAAA,EAAK,KAAK,CAAA;AAC1B,QAAA,OAAO,KAAA;AAAA,MACT,CAAA;AAGA,MAAA,SAAA,CAAU,QAAQ,CAAC,EAAE,MAAK,KAAM,OAAA,CAAQ,IAAI,CAAC,CAAA;AAC7C,MAAA,OAAO,MAAA;AAAA,IACT,CAAA,EAAG,CAAC,SAAA,EAAW,SAAA,EAAW,aAAa,CAAC,CAAA;AAExC,IAAA,MAAM,aAAa,KAAA,CAAM,WAAA;AAAA,MACvB,CACE,MACA,KAAA,KACoB;AACpB,QAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,IAAA;AACxB,QAAA,MAAM,WAAA,GACJ,KAAK,QAAA,IAAY,IAAA,CAAK,SAAS,MAAA,GAAS,CAAA,IAAK,CAAC,IAAA,CAAK,MAAA;AACrD,QAAA,MAAM,UAAA,GAAa,eAAA,CAAgB,GAAA,CAAI,IAAA,CAAK,GAAG,CAAA;AAC/C,QAAA,MAAM,UAAA,GAAa,mBAAA,CAAoB,QAAA,CAAS,IAAA,CAAK,GAAG,CAAA;AAGxD,QAAA,MAAM,kBAAkB,SAAA,GAAY,WAAA,CAAY,GAAA,CAAI,IAAA,CAAK,GAAG,CAAA,GAAI,IAAA;AAChE,QAAA,MAAM,aAAa,eAAA,GACf;AAAA,UACE,SAAS,eAAA,KAAoB,SAAA;AAAA,UAC7B,eAAe,eAAA,KAAoB;AAAA,SACrC,GACA,IAAA;AAEJ,QAAA,uBACE,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,EAAA;AAAA,cACT,WAAA;AAAA,cACA,8DAAA;AAAA,cACA,UAAA,EAAY;AAAA,aACd;AAAA,YAEA,QAAA,kBAAA,IAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,kBAAA;AAAA,kBACA,gBAAA,CAAiB;AAAA,oBACf,IAAA;AAAA,oBACA,QAAA,EAAU,CAAC,CAAC,IAAA,CAAK,QAAA;AAAA,oBACjB,QAAA,EAAU,YAAY,KAAA,GAAQ;AAAA,mBAC/B,CAAA;AAAA,kBACD,SAAA;AAAA,kBACA,UAAA,EAAY;AAAA,iBACd;AAAA,gBAGC,QAAA,EAAA;AAAA,kBAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAA,EAAO,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AAE3C,oBAAA,MAAM,cAAA,GACJ,QAAA,IACA,SAAA,CAAU,KAAA,CAAM,KAAA,GAAQ,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAU,CAAC,CAAA;AAEtD,oBAAA,uBACE,GAAA;AAAA,sBAAC,MAAA;AAAA,sBAAA;AAAA,wBAEC,SAAA,EAAU,wCAAA;AAAA,wBAGT,QAAA,EAAA,cAAA,oBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gFAAA,EAAiF;AAAA,uBAAA;AAAA,sBAL9F;AAAA,qBAOP;AAAA,kBAEJ,CAAC,CAAA;AAAA,kBAGA,WAAA,mBACC,GAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,QAAA;AAAA,sBACL,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,wBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,wBAAA,YAAA,CAAa,KAAK,GAAG,CAAA;AAAA,sBACvB,CAAA;AAAA,sBACA,SAAA,EAAW,EAAA;AAAA,wBACT,iBAAA;AAAA,wBACA,4DAAA;AAAA,wBACA,UAAA,EAAY;AAAA,uBACd;AAAA,sBACA,QAAA,EAAU,YAAY,IAAA,CAAK,QAAA;AAAA,sBAE3B,QAAA,kBAAA,GAAA;AAAA,wBAAC,YAAA;AAAA,wBAAA;AAAA,0BACC,SAAA,EAAW,EAAA;AAAA,4BACT,UAAU,IAAI,CAAA;AAAA,4BACd,4CAAA;AAAA,4BACA,UAAA,IAAc;AAAA;AAChB;AAAA;AACF;AAAA,mBACF,uBAEC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,UAAA,EAAY,SAAA,CAAU,IAAI,CAAC,CAAA,EAAG,CAAA;AAAA,kBAInD,SAAA,oBACC,IAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,IAAA,EAAK,UAAA;AAAA,sBACL,QAAA,EAAU,QAAA,IAAY,IAAA,CAAK,QAAA,GAAW,EAAA,GAAK,CAAA;AAAA,sBAC3C,cAAA,EAAc,UAAA,EAAY,aAAA,GAAgB,OAAA,GAAU,UAAA,EAAY,OAAA;AAAA,sBAChE,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,wBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,wBAAA,WAAA,CAAY,IAAA,EAAM,CAAC,UAAA,EAAY,OAAO,CAAA;AAAA,sBACxC,CAAA;AAAA,sBACA,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,wBAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,0BAAA,CAAA,CAAE,cAAA,EAAe;AACjB,0BAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,0BAAA,WAAA,CAAY,IAAA,EAAM,CAAC,UAAA,EAAY,OAAO,CAAA;AAAA,wBACxC;AAAA,sBACF,CAAA;AAAA,sBACA,SAAA,EAAW,EAAA;AAAA,wBACT,4HAAA;AAAA,wBACA,gGAAA;AAAA,wBACA,UAAA,EAAY,UACR,2BAAA,GACA,eAAA;AAAA,wBAAA,CACH,QAAA,IAAY,KAAK,QAAA,KAChB;AAAA,uBACJ;AAAA,sBAEC,QAAA,EAAA;AAAA,wBAAA,UAAA,EAAY,OAAA,oBACX,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,4DAAA,EAA6D,CAAA;AAAA,wBAE/E,UAAA,EAAY,iBAAiB,CAAC,UAAA,EAAY,2BACzC,GAAA,CAAC,KAAA,EAAA,EAAM,WAAU,yDAAA,EAA0D;AAAA;AAAA;AAAA,mBAE/E;AAAA,kBAID,QAAA,IAAY,KAAK,IAAA,oBAChB,GAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA,CAAG,WAAA,EAAa,UAAA,EAAY,YAAY,IAAI,CAAA;AAAA,sBAEtD,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,mBACR;AAAA,kCAIF,GAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAS,MAAM;AACb,wBAAA,IAAI,SAAA,EAAW;AACb,0BAAA,WAAA,CAAY,IAAA,EAAM,CAAC,UAAA,EAAY,OAAO,CAAA;AAAA,wBACxC,CAAA,MAAO;AACL,0BAAA,YAAA,CAAa,IAAI,CAAA;AAAA,wBACnB;AAAA,sBACF,CAAA;AAAA,sBACA,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,iBAAA,EAAmB,YAAY,KAAK,CAAA;AAAA,sBAE/D,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR;AAAA;AAAA;AACF,WAAA;AAAA,UA5HK,IAAA,CAAK;AAAA,SA6HZ;AAAA,MAEJ,CAAA;AAAA,MACA;AAAA,QACE,eAAA;AAAA,QACA,mBAAA;AAAA,QACA,SAAA;AAAA,QACA,WAAA;AAAA,QACA,IAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,QAAA;AAAA,QACA,YAAA;AAAA,QACA,WAAA;AAAA,QACA,YAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA;AACF,KACF;AAEA,IAAA,uBACE,GAAA,CAAC,SAAI,WAAA,EAAU,MAAA,EAAO,WAAW,EAAA,CAAG,WAAA,EAAa,UAAU,SAAA,EAAW,UAAA,EAAY,IAAI,CAAA,EACnF,QAAA,EAAA,SAAA,CAAU,IAAI,CAAC,IAAA,EAAM,UAAU,UAAA,CAAW,IAAA,EAAM,KAAK,CAAC,CAAA,EACzD,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA;AAGnB,IAAO,YAAA,GAAQ","file":"chunk-3FXOQC6P.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport { Check, ChevronRight, Minus } from 'lucide-react'\nimport React from '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,4 +1,4 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-RAS6HUEI.js';
|
|
2
2
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
3
3
|
import { cva } from 'class-variance-authority';
|
|
4
4
|
import { XIcon } from 'lucide-react';
|
|
@@ -46,9 +46,9 @@ var modalOverlayVariants = cva(
|
|
|
46
46
|
{
|
|
47
47
|
variants: {
|
|
48
48
|
opacity: {
|
|
49
|
-
light: "bg-
|
|
50
|
-
medium: "bg-
|
|
51
|
-
heavy: "bg-
|
|
49
|
+
light: "bg-overlay/20",
|
|
50
|
+
medium: "bg-overlay/40",
|
|
51
|
+
heavy: "bg-overlay/80"
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
54
|
defaultVariants: {
|
|
@@ -332,5 +332,5 @@ function ComposedModal({
|
|
|
332
332
|
var modal_default = ComposedModal;
|
|
333
333
|
|
|
334
334
|
export { Modal, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalOverlay, ModalPortal, ModalTitle, ModalTrigger, modal_default };
|
|
335
|
-
//# sourceMappingURL=chunk-
|
|
336
|
-
//# sourceMappingURL=chunk-
|
|
335
|
+
//# sourceMappingURL=chunk-3KISIZGP.js.map
|
|
336
|
+
//# sourceMappingURL=chunk-3KISIZGP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/modal/index.tsx"],"names":["ModalHeader","ModalFooter","ModalTitle","ModalDescription"],"mappings":"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","file":"chunk-3KISIZGP.js","sourcesContent":["\"use client\";\n\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cva } from \"class-variance-authority\";\nimport { XIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../utils\";\nimport type {\n ComposedModalProps,\n ModalClassNames,\n ModalColor,\n ModalSize,\n} from \"./types\";\n\nfunction Modal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"modal\" {...props} />;\n}\n\nfunction ModalTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return (\n <DialogPrimitive.Trigger\n data-slot=\"modal-trigger\"\n className={cn(\"modal_trigger\", className)}\n {...props}\n />\n );\n}\n\nfunction ModalPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"modal-portal\" {...props} />;\n}\n\nfunction ModalClose({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return (\n <DialogPrimitive.Close\n data-slot=\"modal-close\"\n className={cn(\"modal_close\", className)}\n {...props}\n />\n );\n}\n\nconst modalOverlayVariants = cva(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 backdrop-blur-sm\",\n {\n variants: {\n opacity: {\n light: \"bg-overlay/20\",\n medium: \"bg-overlay/40\",\n heavy: \"bg-overlay/80\",\n },\n },\n defaultVariants: {\n opacity: \"medium\",\n },\n },\n);\n\nfunction ModalOverlay({\n className,\n opacity = \"medium\",\n classNames,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay> & {\n opacity?: \"light\" | \"medium\" | \"heavy\";\n classNames?: ModalClassNames;\n}) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"modal-overlay\"\n className={cn(\n \"modal_overlay\",\n modalOverlayVariants({ opacity }),\n classNames?.overlay,\n className,\n )}\n {...props}\n />\n );\n}\n\nconst modalContentVariants = cva(\n \"bg-background will-change-[transform,_opacity] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] rounded-md border duration-200\",\n {\n variants: {\n size: {\n xs: \"max-w-(--modal-max-width-xs) gap-(--modal-gap-xs) p-(--modal-padding-xs) sm:max-w-(--modal-max-width-xs)\",\n sm: \"max-w-(--modal-max-width-sm) gap-(--modal-gap-sm) p-(--modal-padding-sm) sm:max-w-(--modal-max-width-sm)\",\n md: \"max-w-(--modal-max-width-md) gap-(--modal-gap-md) p-(--modal-padding-md) sm:max-w-(--modal-max-width-md)\",\n lg: \"max-w-(--modal-max-width-lg) gap-(--modal-gap-lg) p-(--modal-padding-lg) sm:max-w-(--modal-max-width-lg)\",\n },\n color: {\n default: \"border-border\",\n primary: \"border-primary border-l-4\",\n secondary: \"border-secondary border-l-4\",\n accent: \"border-accent border-l-4\",\n success: \"border-success border-l-4\",\n error: \"border-error border-l-4\",\n warning: \"border-warning border-l-4\",\n info: \"border-info border-l-4\",\n },\n centered: {\n true: \"text-center\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n color: \"default\",\n centered: false,\n },\n },\n);\n\nconst modalCloseVariants = cva(\n \"absolute right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-hidden cursor-pointer disabled:pointer-events-none text-text-secondary hover:text-text-primary [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n size: {\n xs: \"top-3 [&_svg]:size-3.5\",\n sm: \"top-3 [&_svg]:size-3.5\",\n md: \"top-4 [&_svg]:size-4\",\n lg: \"top-6 [&_svg]:size-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nfunction ModalContent({\n className,\n children,\n showCloseButton = true,\n size = \"md\",\n color = \"default\",\n centered = false,\n classNames,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n size?: ModalSize;\n color?: ModalColor;\n centered?: boolean;\n classNames?: ModalClassNames;\n}) {\n return (\n <ModalPortal data-slot=\"modal-portal\">\n <ModalOverlay classNames={classNames} />\n <DialogPrimitive.Content\n data-slot=\"modal-content\"\n className={cn(\n \"modal_content\",\n modalContentVariants({ size, color, centered }),\n classNames?.content,\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"modal-close\"\n className={cn(\n \"modal_closeButton\",\n modalCloseVariants({ size }),\n classNames?.closeButton,\n )}\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </ModalPortal>\n );\n}\n\nconst modalHeaderVariants = cva(\"flex flex-col text-text-primary\", {\n variants: {\n size: {\n xs: \"gap-1.5\",\n sm: \"gap-1.5\",\n md: \"gap-2\",\n lg: \"gap-3\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nconst ModalHeader = React.memo<\n React.ComponentProps<\"div\"> & {\n size?: ModalSize;\n classNames?: ModalClassNames;\n }\n>(function ModalHeader({ className, size = \"md\", classNames, ...props }) {\n return (\n <div\n data-slot=\"modal-header\"\n className={cn(\n \"modal_header\",\n modalHeaderVariants({ size }),\n classNames?.header,\n className,\n )}\n {...props}\n />\n );\n});\n\nconst modalFooterVariants = cva(\n \"flex flex-col-reverse sm:flex-row sm:justify-end\",\n {\n variants: {\n size: {\n xs: \"gap-1.5\",\n sm: \"gap-1.5\",\n md: \"gap-2\",\n lg: \"gap-3\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nconst ModalFooter = React.memo<\n React.ComponentProps<\"div\"> & {\n size?: ModalSize;\n classNames?: ModalClassNames;\n }\n>(function ModalFooter({ className, size = \"md\", classNames, ...props }) {\n return (\n <div\n data-slot=\"modal-footer\"\n className={cn(\n \"modal_footer\",\n modalFooterVariants({ size }),\n classNames?.footer,\n className,\n )}\n {...props}\n />\n );\n});\n\nconst modalTitleVariants = cva(\"leading-none font-semibold text-text-primary\", {\n variants: {\n size: {\n xs: \"text-base\",\n sm: \"text-base\",\n md: \"text-lg\",\n lg: \"text-2xl\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nconst ModalTitle = React.memo<\n React.ComponentProps<typeof DialogPrimitive.Title> & {\n size?: ModalSize;\n classNames?: ModalClassNames;\n }\n>(function ModalTitle({ className, size = \"md\", classNames, ...props }) {\n return (\n <DialogPrimitive.Title\n data-slot=\"modal-title\"\n className={cn(\n \"modal_title\",\n modalTitleVariants({ size }),\n classNames?.title,\n className,\n )}\n {...props}\n />\n );\n});\n\nconst modalDescriptionVariants = cva(\"text-text-secondary\", {\n variants: {\n size: {\n xs: \"text-xs\",\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nconst ModalDescription = React.memo<\n React.ComponentProps<typeof DialogPrimitive.Description> & {\n size?: ModalSize;\n classNames?: ModalClassNames;\n }\n>(function ModalDescription({ className, size = \"md\", classNames, ...props }) {\n return (\n <DialogPrimitive.Description\n data-slot=\"modal-description\"\n className={cn(\n \"modal_description\",\n modalDescriptionVariants({ size }),\n classNames?.description,\n className,\n )}\n {...props}\n />\n );\n});\n\nfunction ComposedModal({\n open,\n onOpenChange,\n title,\n description,\n children,\n footer,\n size = \"md\",\n color = \"default\",\n centered = false,\n showCloseButton = true,\n hideHeader = false,\n hideFooter = false,\n className,\n contentClassName,\n classNames,\n}: ComposedModalProps) {\n return (\n <Modal open={open} onOpenChange={onOpenChange}>\n <ModalContent\n size={size}\n color={color}\n centered={centered}\n showCloseButton={showCloseButton}\n className={contentClassName}\n classNames={classNames}\n >\n {!hideHeader && (title || description) && (\n <ModalHeader\n size={size}\n className={className}\n classNames={classNames}\n >\n {title && (\n <ModalTitle size={size} classNames={classNames}>\n {title}\n </ModalTitle>\n )}\n {description && (\n <ModalDescription size={size} classNames={classNames}>\n {description}\n </ModalDescription>\n )}\n </ModalHeader>\n )}\n <div className={cn(\"modal_body\", classNames?.body)}>{children}</div>\n {!hideFooter && footer && (\n <ModalFooter size={size} classNames={classNames}>\n {footer}\n </ModalFooter>\n )}\n </ModalContent>\n </Modal>\n );\n}\n\nexport type * from \"./types\";\nexport {\n Modal,\n ModalClose,\n ModalContent,\n ModalDescription,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n ModalPortal,\n ModalTitle,\n ModalTrigger,\n};\nexport default ComposedModal;\n"]}
|
|
@@ -1,68 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { cn } from './chunk-
|
|
1
|
+
import { colorVars } from './chunk-GLJDHW73.js';
|
|
2
|
+
import { cn } from './chunk-RAS6HUEI.js';
|
|
3
3
|
import { cva } from 'class-variance-authority';
|
|
4
|
-
import React, { useState, useRef, useId, useLayoutEffect, useEffect
|
|
4
|
+
import React, { useState, useRef, useId, useCallback, useLayoutEffect, useEffect } from 'react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
7
7
|
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect;
|
|
8
|
-
var
|
|
9
|
-
default: "text-text-primary",
|
|
10
|
-
primary: "text-white",
|
|
11
|
-
secondary: "text-white",
|
|
12
|
-
accent: "text-white",
|
|
13
|
-
success: "text-white",
|
|
14
|
-
error: "text-white",
|
|
15
|
-
warning: "text-white",
|
|
16
|
-
info: "text-white"
|
|
17
|
-
};
|
|
18
|
-
var defaultActiveClasses = {
|
|
19
|
-
default: "text-text-primary",
|
|
20
|
-
primary: "text-primary",
|
|
21
|
-
secondary: "text-secondary",
|
|
22
|
-
accent: "text-accent",
|
|
23
|
-
success: "text-success",
|
|
24
|
-
error: "text-error",
|
|
25
|
-
warning: "text-warning",
|
|
26
|
-
info: "text-info"
|
|
27
|
-
};
|
|
28
|
-
var softActiveClasses = {
|
|
29
|
-
default: "text-text-primary",
|
|
30
|
-
primary: "text-primary",
|
|
31
|
-
secondary: "text-secondary",
|
|
32
|
-
accent: "text-accent",
|
|
33
|
-
success: "text-success",
|
|
34
|
-
error: "text-error",
|
|
35
|
-
warning: "text-warning",
|
|
36
|
-
info: "text-info"
|
|
37
|
-
};
|
|
38
|
-
var pillIndicatorClasses = {
|
|
39
|
-
default: "bg-background",
|
|
40
|
-
primary: "bg-primary",
|
|
41
|
-
secondary: "bg-secondary",
|
|
42
|
-
accent: "bg-accent",
|
|
43
|
-
success: "bg-success",
|
|
44
|
-
error: "bg-error",
|
|
45
|
-
warning: "bg-warning",
|
|
46
|
-
info: "bg-info"
|
|
47
|
-
};
|
|
48
|
-
var underlineIndicatorClasses = {
|
|
49
|
-
default: "bg-border",
|
|
50
|
-
primary: "bg-primary",
|
|
51
|
-
secondary: "bg-secondary",
|
|
52
|
-
accent: "bg-accent",
|
|
53
|
-
success: "bg-success",
|
|
54
|
-
error: "bg-error",
|
|
55
|
-
warning: "bg-warning",
|
|
56
|
-
info: "bg-info"
|
|
57
|
-
};
|
|
58
|
-
var createActiveTabVariants = (variant, classMap) => {
|
|
59
|
-
return componentColors.map((color) => ({
|
|
60
|
-
variant,
|
|
61
|
-
color,
|
|
62
|
-
active: true,
|
|
63
|
-
className: classMap[color] || classMap.default
|
|
64
|
-
}));
|
|
65
|
-
};
|
|
8
|
+
var componentColors = ["default", "primary", "secondary", "accent", "success", "error", "warning", "info"];
|
|
66
9
|
var tabListVariants = cva("flex relative", {
|
|
67
10
|
variants: {
|
|
68
11
|
size: {
|
|
@@ -121,14 +64,32 @@ var tabItemVariants = cva(
|
|
|
121
64
|
active: false,
|
|
122
65
|
className: "text-text-secondary hover:text-text-primary"
|
|
123
66
|
})),
|
|
124
|
-
// Active pill variant
|
|
125
|
-
...
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
67
|
+
// Active pill variant - uses foreground text
|
|
68
|
+
...componentColors.map((color) => ({
|
|
69
|
+
variant: "pill",
|
|
70
|
+
color,
|
|
71
|
+
active: true,
|
|
72
|
+
className: "text-slot-fg"
|
|
73
|
+
})),
|
|
74
|
+
// Active default/solid/soft variants - uses accent text
|
|
75
|
+
...componentColors.map((color) => ({
|
|
76
|
+
variant: "default",
|
|
77
|
+
color,
|
|
78
|
+
active: true,
|
|
79
|
+
className: "text-slot"
|
|
80
|
+
})),
|
|
81
|
+
...componentColors.map((color) => ({
|
|
82
|
+
variant: "solid",
|
|
83
|
+
color,
|
|
84
|
+
active: true,
|
|
85
|
+
className: "text-slot"
|
|
86
|
+
})),
|
|
87
|
+
...componentColors.map((color) => ({
|
|
88
|
+
variant: "soft",
|
|
89
|
+
color,
|
|
90
|
+
active: true,
|
|
91
|
+
className: "text-slot"
|
|
92
|
+
})),
|
|
132
93
|
// Inactive pill variant hover
|
|
133
94
|
...componentColors.map((color) => ({
|
|
134
95
|
variant: "pill",
|
|
@@ -168,31 +129,63 @@ var Tabs = React.memo(
|
|
|
168
129
|
const [hasInitialized, setHasInitialized] = useState(false);
|
|
169
130
|
const uniqueId = useId();
|
|
170
131
|
const activeKey = controlledActiveKey !== void 0 ? controlledActiveKey : internalActiveKey;
|
|
171
|
-
|
|
132
|
+
const updateIndicatorPosition = useCallback(() => {
|
|
172
133
|
const activeTab = tabRefs.current.get(activeKey);
|
|
173
134
|
const tabList = tabListRef.current;
|
|
174
135
|
if (!activeTab || !tabList) return;
|
|
175
|
-
const
|
|
176
|
-
const
|
|
136
|
+
const left = activeTab.offsetLeft;
|
|
137
|
+
const width = activeTab.offsetWidth;
|
|
138
|
+
const height = activeTab.offsetHeight;
|
|
177
139
|
const isPill2 = variant === "pill";
|
|
178
140
|
if (isPill2) {
|
|
141
|
+
const computedStyle = window.getComputedStyle(tabList);
|
|
142
|
+
const paddingLeft = parseFloat(computedStyle.paddingLeft) || 0;
|
|
179
143
|
setIndicatorStyle({
|
|
180
|
-
transform: `translateX(${
|
|
181
|
-
width: `${
|
|
182
|
-
height: `${
|
|
144
|
+
transform: `translateX(${left - paddingLeft}px)`,
|
|
145
|
+
width: `${width}px`,
|
|
146
|
+
height: `${height}px`,
|
|
183
147
|
opacity: 1
|
|
184
148
|
});
|
|
185
149
|
} else {
|
|
186
150
|
setIndicatorStyle({
|
|
187
|
-
transform: `translateX(${
|
|
188
|
-
width: `${
|
|
151
|
+
transform: `translateX(${left}px)`,
|
|
152
|
+
width: `${width}px`,
|
|
189
153
|
opacity: 1
|
|
190
154
|
});
|
|
191
155
|
}
|
|
192
156
|
if (!hasInitialized) {
|
|
193
157
|
requestAnimationFrame(() => setHasInitialized(true));
|
|
194
158
|
}
|
|
195
|
-
}, [activeKey,
|
|
159
|
+
}, [activeKey, variant, hasInitialized]);
|
|
160
|
+
useIsomorphicLayoutEffect(() => {
|
|
161
|
+
updateIndicatorPosition();
|
|
162
|
+
}, [updateIndicatorPosition, items, size]);
|
|
163
|
+
useEffect(() => {
|
|
164
|
+
const handleResize = () => {
|
|
165
|
+
requestAnimationFrame(() => {
|
|
166
|
+
updateIndicatorPosition();
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
window.addEventListener("resize", handleResize);
|
|
170
|
+
window.addEventListener("orientationchange", handleResize);
|
|
171
|
+
return () => {
|
|
172
|
+
window.removeEventListener("resize", handleResize);
|
|
173
|
+
window.removeEventListener("orientationchange", handleResize);
|
|
174
|
+
};
|
|
175
|
+
}, [updateIndicatorPosition]);
|
|
176
|
+
useEffect(() => {
|
|
177
|
+
const tabList = tabListRef.current;
|
|
178
|
+
if (!tabList || typeof ResizeObserver === "undefined") return;
|
|
179
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
180
|
+
requestAnimationFrame(() => {
|
|
181
|
+
updateIndicatorPosition();
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
resizeObserver.observe(tabList);
|
|
185
|
+
return () => {
|
|
186
|
+
resizeObserver.disconnect();
|
|
187
|
+
};
|
|
188
|
+
}, [updateIndicatorPosition]);
|
|
196
189
|
const handleTabClick = useCallback(
|
|
197
190
|
(key, disabled) => {
|
|
198
191
|
if (disabled) return;
|
|
@@ -241,12 +234,11 @@ var Tabs = React.memo(
|
|
|
241
234
|
);
|
|
242
235
|
const activeItem = items.find((item) => item.key === activeKey);
|
|
243
236
|
const isPill = variant === "pill";
|
|
244
|
-
const indicatorColorClass = isPill ? pillIndicatorClasses[color] || pillIndicatorClasses.default : underlineIndicatorClasses[color] || underlineIndicatorClasses.default;
|
|
245
237
|
return /* @__PURE__ */ jsxs(
|
|
246
238
|
"div",
|
|
247
239
|
{
|
|
248
240
|
"data-slot": "tabs_root",
|
|
249
|
-
className: cn("tabs_root w-full", classNames?.root, className),
|
|
241
|
+
className: cn("tabs_root w-full", colorVars[color], classNames?.root, className),
|
|
250
242
|
children: [
|
|
251
243
|
/* @__PURE__ */ jsxs(
|
|
252
244
|
"div",
|
|
@@ -256,7 +248,7 @@ var Tabs = React.memo(
|
|
|
256
248
|
"aria-orientation": "horizontal",
|
|
257
249
|
"data-slot": "tabs_list",
|
|
258
250
|
className: cn(
|
|
259
|
-
"tabs_list",
|
|
251
|
+
"tabs_list overflow-x-auto",
|
|
260
252
|
tabListVariants({ size, variant }),
|
|
261
253
|
variant !== "pill" && "border-border",
|
|
262
254
|
classNames?.list
|
|
@@ -268,7 +260,7 @@ var Tabs = React.memo(
|
|
|
268
260
|
"data-slot": "tabs_indicator",
|
|
269
261
|
className: cn(
|
|
270
262
|
"tabs_indicator absolute pointer-events-none",
|
|
271
|
-
isPill ? cn("rounded-md shadow-sm top-0.5",
|
|
263
|
+
isPill ? cn("rounded-md shadow-sm top-0.5", "bg-slot") : cn("bottom-0 h-0.5 rounded-full", "bg-slot"),
|
|
272
264
|
hasInitialized ? "transition-[transform,width] duration-300 ease-out" : "",
|
|
273
265
|
classNames?.indicator
|
|
274
266
|
),
|
|
@@ -326,7 +318,6 @@ var Tabs = React.memo(
|
|
|
326
318
|
id: `panel-${uniqueId}-${activeItem.key}`,
|
|
327
319
|
role: "tabpanel",
|
|
328
320
|
"aria-labelledby": `tab-${uniqueId}-${activeItem.key}`,
|
|
329
|
-
tabIndex: 0,
|
|
330
321
|
"data-slot": "tabs_panel",
|
|
331
322
|
className: cn(
|
|
332
323
|
"tabs_panel",
|
|
@@ -345,5 +336,5 @@ Tabs.displayName = "Tabs";
|
|
|
345
336
|
var tabs_default = Tabs;
|
|
346
337
|
|
|
347
338
|
export { tabs_default };
|
|
348
|
-
//# sourceMappingURL=chunk-
|
|
349
|
-
//# sourceMappingURL=chunk-
|
|
339
|
+
//# sourceMappingURL=chunk-3QD7AQX7.js.map
|
|
340
|
+
//# sourceMappingURL=chunk-3QD7AQX7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tabs/index.tsx"],"names":["isPill"],"mappings":"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","file":"chunk-3QD7AQX7.js","sourcesContent":["\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport React, {\n useState,\n useId,\n useCallback,\n useRef,\n useLayoutEffect,\n useEffect,\n} from \"react\";\n\nimport { cn } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type { TabsColor, TabsProps } from \"./types\";\n\n// Use useLayoutEffect on client, useEffect on server (SSR safe)\nconst useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\n// Component colors for compound variants\nconst componentColors = ['default', 'primary', 'secondary', 'accent', 'success', 'error', 'warning', 'info'] as const;\n\nconst tabListVariants = cva(\"flex relative\", {\n variants: {\n size: {\n xs: \"gap-(--tabs-gap-xs)\",\n sm: \"gap-(--tabs-gap-sm)\",\n md: \"gap-(--tabs-gap-md)\",\n lg: \"gap-(--tabs-gap-lg)\",\n },\n variant: {\n default: \"border-b\",\n solid: \"border-b\",\n soft: \"border-b\",\n pill: \"bg-surface p-0.5 rounded-lg border border-border gap-0 w-fit\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n});\n\nconst tabItemVariants = cva(\n \"relative z-[1] font-medium transition-colors duration-200 ease-out cursor-pointer flex items-center gap-2\",\n {\n variants: {\n size: {\n xs: \"text-xs px-(--tabs-padding-x-xs) py-(--tabs-padding-y-xs)\",\n sm: \"text-sm px-(--tabs-padding-x-sm) py-(--tabs-padding-y-sm)\",\n md: \"text-base px-(--tabs-padding-x-md) py-(--tabs-padding-y-md)\",\n lg: \"text-lg px-(--tabs-padding-x-lg) py-(--tabs-padding-y-lg)\",\n },\n variant: {\n default: \"pb-2 -mb-px\",\n solid: \"pb-2 -mb-px\",\n soft: \"pb-2 -mb-px\",\n pill: \"rounded-md\",\n },\n color: {\n default: \"\",\n primary: \"\",\n secondary: \"\",\n accent: \"\",\n success: \"\",\n error: \"\",\n warning: \"\",\n info: \"\",\n },\n active: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Inactive states (all variants)\n ...componentColors.map((color) => ({\n color: color as TabsColor,\n active: false as const,\n className: \"text-text-secondary hover:text-text-primary\",\n })),\n\n // Active pill variant - uses foreground text\n ...componentColors.map((color) => ({\n variant: \"pill\" as const,\n color: color as TabsColor,\n active: true as const,\n className: \"text-slot-fg\",\n })),\n\n // Active default/solid/soft variants - uses accent text\n ...componentColors.map((color) => ({\n variant: \"default\" as const,\n color: color as TabsColor,\n active: true as const,\n className: \"text-slot\",\n })),\n ...componentColors.map((color) => ({\n variant: \"solid\" as const,\n color: color as TabsColor,\n active: true as const,\n className: \"text-slot\",\n })),\n ...componentColors.map((color) => ({\n variant: \"soft\" as const,\n color: color as TabsColor,\n active: true as const,\n className: \"text-slot\",\n })),\n\n // Inactive pill variant hover\n ...componentColors.map((color) => ({\n variant: \"pill\" as const,\n color: color as TabsColor,\n active: false as const,\n className: \"bg-transparent hover:bg-background/50\",\n })),\n ],\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n color: \"primary\",\n active: false,\n },\n },\n);\n\nconst Tabs = React.memo<TabsProps>(\n ({\n items,\n defaultActiveKey,\n activeKey: controlledActiveKey,\n color = \"primary\",\n size = \"md\",\n variant = \"default\",\n onChange,\n className,\n classNames,\n }) => {\n const [internalActiveKey, setInternalActiveKey] = useState(\n defaultActiveKey || items[0]?.key || \"\",\n );\n const tabListRef = useRef<HTMLDivElement>(null);\n const tabRefs = useRef<Map<string, HTMLButtonElement>>(new Map());\n const [indicatorStyle, setIndicatorStyle] = useState<React.CSSProperties>(\n {},\n );\n const [hasInitialized, setHasInitialized] = useState(false);\n\n // Generate unique IDs for accessibility\n const uniqueId = useId();\n\n const activeKey =\n controlledActiveKey !== undefined\n ? controlledActiveKey\n : internalActiveKey;\n\n // Measure and position the sliding indicator\n const updateIndicatorPosition = useCallback(() => {\n const activeTab = tabRefs.current.get(activeKey);\n const tabList = tabListRef.current;\n if (!activeTab || !tabList) return;\n\n // Use offsetLeft for parent-relative positioning (more reliable than getBoundingClientRect)\n const left = activeTab.offsetLeft;\n const width = activeTab.offsetWidth;\n const height = activeTab.offsetHeight;\n\n const isPill = variant === \"pill\";\n\n if (isPill) {\n // For pill variant, account for padding\n const computedStyle = window.getComputedStyle(tabList);\n const paddingLeft = parseFloat(computedStyle.paddingLeft) || 0;\n \n setIndicatorStyle({\n transform: `translateX(${left - paddingLeft}px)`,\n width: `${width}px`,\n height: `${height}px`,\n opacity: 1,\n });\n } else {\n setIndicatorStyle({\n transform: `translateX(${left}px)`,\n width: `${width}px`,\n opacity: 1,\n });\n }\n\n // Enable transitions after initial positioning\n if (!hasInitialized) {\n requestAnimationFrame(() => setHasInitialized(true));\n }\n }, [activeKey, variant, hasInitialized]);\n\n useIsomorphicLayoutEffect(() => {\n updateIndicatorPosition();\n }, [updateIndicatorPosition, items, size]);\n\n // Handle window resize and orientation changes\n useEffect(() => {\n const handleResize = () => {\n // Debounce resize events\n requestAnimationFrame(() => {\n updateIndicatorPosition();\n });\n };\n\n window.addEventListener('resize', handleResize);\n window.addEventListener('orientationchange', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n window.removeEventListener('orientationchange', handleResize);\n };\n }, [updateIndicatorPosition]);\n\n // Observe tab list resize (handles mobile reflows, font size changes, etc.)\n useEffect(() => {\n const tabList = tabListRef.current;\n if (!tabList || typeof ResizeObserver === 'undefined') return;\n\n const resizeObserver = new ResizeObserver(() => {\n requestAnimationFrame(() => {\n updateIndicatorPosition();\n });\n });\n\n resizeObserver.observe(tabList);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [updateIndicatorPosition]);\n\n const handleTabClick = useCallback(\n (key: string, disabled?: boolean) => {\n if (disabled) return;\n\n if (controlledActiveKey === undefined) {\n setInternalActiveKey(key);\n }\n onChange?.(key);\n },\n [controlledActiveKey, onChange],\n );\n\n // Handle keyboard navigation (arrow keys, Home, End)\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>, currentIndex: number) => {\n const enabledIndices = items\n .map((item, i) => (!item.disabled ? i : -1))\n .filter((i): i is number => i !== -1);\n const currentEnabledIndex = enabledIndices.indexOf(currentIndex);\n\n let newIndex: number | undefined;\n\n switch (event.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n event.preventDefault();\n newIndex =\n enabledIndices[\n currentEnabledIndex > 0\n ? currentEnabledIndex - 1\n : enabledIndices.length - 1\n ];\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n event.preventDefault();\n newIndex =\n enabledIndices[\n currentEnabledIndex < enabledIndices.length - 1\n ? currentEnabledIndex + 1\n : 0\n ];\n break;\n case \"Home\":\n event.preventDefault();\n newIndex = enabledIndices[0];\n break;\n case \"End\":\n event.preventDefault();\n newIndex = enabledIndices[enabledIndices.length - 1];\n break;\n }\n\n if (newIndex !== undefined) {\n const newItem = items[newIndex];\n if (newItem) {\n handleTabClick(newItem.key);\n // Focus the new tab\n const btn = tabRefs.current.get(newItem.key);\n btn?.focus();\n }\n }\n },\n [items, handleTabClick],\n );\n\n const activeItem = items.find((item) => item.key === activeKey);\n const isPill = variant === \"pill\";\n\n return (\n <div\n data-slot=\"tabs_root\"\n className={cn(\"tabs_root w-full\", colorVars[color], classNames?.root, className)}\n >\n <div\n ref={tabListRef}\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n data-slot=\"tabs_list\"\n className={cn(\n \"tabs_list overflow-x-auto\",\n tabListVariants({ size, variant }),\n variant !== \"pill\" && \"border-border\",\n classNames?.list,\n )}\n >\n {/* Sliding indicator */}\n <span\n data-slot=\"tabs_indicator\"\n className={cn(\n \"tabs_indicator absolute pointer-events-none\",\n isPill\n ? cn(\"rounded-md shadow-sm top-0.5\", \"bg-slot\")\n : cn(\"bottom-0 h-0.5 rounded-full\", \"bg-slot\"),\n hasInitialized\n ? \"transition-[transform,width] duration-300 ease-out\"\n : \"\",\n classNames?.indicator,\n )}\n style={indicatorStyle}\n aria-hidden=\"true\"\n />\n\n {items.map((item, index) => {\n const isActive = item.key === activeKey;\n const tabId = `tab-${uniqueId}-${item.key}`;\n const panelId = `panel-${uniqueId}-${item.key}`;\n\n return (\n <button\n key={item.key}\n ref={(el) => {\n if (el) tabRefs.current.set(item.key, el);\n else tabRefs.current.delete(item.key);\n }}\n id={tabId}\n role=\"tab\"\n type=\"button\"\n aria-selected={isActive}\n aria-controls={panelId}\n tabIndex={isActive ? 0 : -1}\n data-slot=\"tabs_tab\"\n className={cn(\n \"tabs_tab\",\n tabItemVariants({\n size,\n variant,\n color,\n active: isActive,\n }),\n item.disabled && \"opacity-50 cursor-not-allowed\",\n classNames?.tab,\n isActive && classNames?.tabActive,\n )}\n onClick={() => handleTabClick(item.key, item.disabled)}\n onKeyDown={(e) => handleKeyDown(e, index)}\n disabled={item.disabled}\n >\n {item.icon && <span aria-hidden=\"true\">{item.icon}</span>}\n {item.label}\n </button>\n );\n })}\n </div>\n\n {activeItem?.content && (\n <div\n id={`panel-${uniqueId}-${activeItem.key}`}\n role=\"tabpanel\"\n aria-labelledby={`tab-${uniqueId}-${activeItem.key}`}\n data-slot=\"tabs_panel\"\n className={cn(\n \"tabs_panel\",\n \"py-4 animate-in fade-in slide-in-from-bottom-2 duration-300\",\n classNames?.panel,\n )}\n >\n {activeItem?.content}\n </div>\n )}\n </div>\n );\n },\n);\n\nTabs.displayName = \"Tabs\";\n\nexport type { TabsClassNames } from \"./types\";\nexport type * from \"./types\";\nexport default Tabs;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-RAS6HUEI.js';
|
|
2
2
|
import { cva } from 'class-variance-authority';
|
|
3
3
|
import React, { memo } from 'react';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -52,7 +52,7 @@ var inputGroupAddonVariants = cva(
|
|
|
52
52
|
}
|
|
53
53
|
);
|
|
54
54
|
var InputGroup = memo(
|
|
55
|
-
({ children, size = "md", className, classNames }) => {
|
|
55
|
+
({ children, size = "md", className, classNames, "aria-label": ariaLabel }) => {
|
|
56
56
|
return /* @__PURE__ */ jsx(
|
|
57
57
|
"div",
|
|
58
58
|
{
|
|
@@ -63,6 +63,7 @@ var InputGroup = memo(
|
|
|
63
63
|
classNames?.root,
|
|
64
64
|
className
|
|
65
65
|
),
|
|
66
|
+
"aria-label": ariaLabel,
|
|
66
67
|
children: React.Children.map(children, (child) => {
|
|
67
68
|
if (React.isValidElement(child)) {
|
|
68
69
|
const displayName = child.type?.displayName;
|
|
@@ -81,10 +82,11 @@ var InputGroup = memo(
|
|
|
81
82
|
);
|
|
82
83
|
InputGroup.displayName = "InputGroup";
|
|
83
84
|
var InputGroupInput = memo(
|
|
84
|
-
({ className, size = "md", classNames, ...props }) => {
|
|
85
|
+
({ className, size = "md", classNames, ref, ...props }) => {
|
|
85
86
|
return /* @__PURE__ */ jsx(
|
|
86
87
|
"input",
|
|
87
88
|
{
|
|
89
|
+
ref,
|
|
88
90
|
"data-slot": "inputGroup_input",
|
|
89
91
|
className: cn(
|
|
90
92
|
"inputGroup_input",
|
|
@@ -119,5 +121,5 @@ InputGroupAddon.displayName = "InputGroupAddon";
|
|
|
119
121
|
var input_group_default = InputGroup;
|
|
120
122
|
|
|
121
123
|
export { InputGroupAddon, InputGroupInput, input_group_default };
|
|
122
|
-
//# sourceMappingURL=chunk-
|
|
123
|
-
//# sourceMappingURL=chunk-
|
|
124
|
+
//# sourceMappingURL=chunk-3YP7HY3Y.js.map
|
|
125
|
+
//# sourceMappingURL=chunk-3YP7HY3Y.js.map
|