@mdigital_ui/ui 0.4.3 → 0.4.5
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.js +2 -2
- 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.map +1 -1
- package/dist/avatar/index.js +2 -1
- package/dist/badge/index.js +2 -2
- package/dist/breadcrumbs/index.d.ts.map +1 -1
- package/dist/breadcrumbs/index.js +4 -4
- package/dist/button/index.js +3 -3
- 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 -1
- package/dist/card/index.d.ts.map +1 -1
- package/dist/card/index.js +2 -2
- package/dist/carousel/carousel-navigation.d.ts.map +1 -1
- package/dist/carousel/index.d.ts +1 -2
- package/dist/carousel/index.d.ts.map +1 -1
- package/dist/carousel/index.js +1 -1
- 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.map +1 -1
- package/dist/cascader/index.js +2 -2
- package/dist/checkbox/index.d.ts.map +1 -1
- package/dist/checkbox/index.js +2 -2
- package/dist/{chunk-XWCWTPEM.js → chunk-253JZOYG.js} +4 -4
- package/dist/chunk-253JZOYG.js.map +1 -0
- package/dist/{chunk-VV3VO5TS.js → chunk-3D77IPKB.js} +7 -15
- package/dist/chunk-3D77IPKB.js.map +1 -0
- package/dist/{chunk-FCU2ENQQ.js → chunk-3XOHSE3X.js} +12 -7
- package/dist/chunk-3XOHSE3X.js.map +1 -0
- package/dist/{chunk-4WZDQI22.js → chunk-4HKPDSA6.js} +4 -4
- package/dist/chunk-4HKPDSA6.js.map +1 -0
- package/dist/{chunk-54Z7XTJA.js → chunk-4ZXHLPRS.js} +32 -34
- package/dist/chunk-4ZXHLPRS.js.map +1 -0
- package/dist/{chunk-H6PCGSIT.js → chunk-5MBKTMDW.js} +3 -3
- package/dist/{chunk-H6PCGSIT.js.map → chunk-5MBKTMDW.js.map} +1 -1
- package/dist/{chunk-ZZZGD5EF.js → chunk-5SEVPU6C.js} +3 -3
- package/dist/{chunk-ZZZGD5EF.js.map → chunk-5SEVPU6C.js.map} +1 -1
- package/dist/{chunk-ZNNIXMJZ.js → chunk-7RT65ZGV.js} +5 -7
- package/dist/chunk-7RT65ZGV.js.map +1 -0
- package/dist/{chunk-F4GLUQOF.js → chunk-A4MYCEGM.js} +9 -11
- package/dist/chunk-A4MYCEGM.js.map +1 -0
- package/dist/{chunk-EHNWVQBL.js → chunk-ADZWWBAX.js} +28 -79
- package/dist/chunk-ADZWWBAX.js.map +1 -0
- package/dist/{chunk-3KISIZGP.js → chunk-AFW2ORFT.js} +12 -4
- package/dist/chunk-AFW2ORFT.js.map +1 -0
- package/dist/{chunk-5CIJ7UCP.js → chunk-AL2EEKUY.js} +5 -5
- package/dist/chunk-AL2EEKUY.js.map +1 -0
- package/dist/{chunk-442OQLPK.js → chunk-BGMYX7L5.js} +4 -4
- 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-QNLTSHMB.js → chunk-C32HL4XU.js} +3 -3
- package/dist/{chunk-QNLTSHMB.js.map → chunk-C32HL4XU.js.map} +1 -1
- package/dist/chunk-C65SCJD6.js +138 -0
- package/dist/chunk-C65SCJD6.js.map +1 -0
- package/dist/{chunk-C46VTIW7.js → chunk-CUXQZRDI.js} +6 -13
- package/dist/chunk-CUXQZRDI.js.map +1 -0
- package/dist/{chunk-MZDAQSI4.js → chunk-DDZCRCTQ.js} +4 -4
- package/dist/chunk-DDZCRCTQ.js.map +1 -0
- package/dist/{chunk-GLJDHW73.js → chunk-G6QIIWKU.js} +2 -2
- package/dist/chunk-G6QIIWKU.js.map +1 -0
- package/dist/{chunk-BLFXVSZU.js → chunk-HR5TGNOF.js} +3 -3
- package/dist/{chunk-BLFXVSZU.js.map → chunk-HR5TGNOF.js.map} +1 -1
- package/dist/{chunk-GPSZJWU3.js → chunk-HSMO2BR4.js} +5 -13
- package/dist/chunk-HSMO2BR4.js.map +1 -0
- package/dist/{chunk-UIVOI7HE.js → chunk-HVHQA34X.js} +15 -21
- package/dist/chunk-HVHQA34X.js.map +1 -0
- package/dist/{chunk-3QD7AQX7.js → chunk-I5AD247M.js} +9 -5
- package/dist/chunk-I5AD247M.js.map +1 -0
- package/dist/{chunk-DF2ICSNI.js → chunk-I7HJBHQU.js} +3 -3
- package/dist/{chunk-DF2ICSNI.js.map → chunk-I7HJBHQU.js.map} +1 -1
- package/dist/{chunk-NHM6DZOF.js → chunk-J2WIZULN.js} +23 -8
- package/dist/chunk-J2WIZULN.js.map +1 -0
- package/dist/{chunk-62LTLXVG.js → chunk-JBNFVXH5.js} +14 -9
- package/dist/chunk-JBNFVXH5.js.map +1 -0
- package/dist/{chunk-BMA4E3T6.js → chunk-JFTSWOGE.js} +9 -21
- package/dist/chunk-JFTSWOGE.js.map +1 -0
- package/dist/{chunk-G27HGKWO.js → chunk-JIXINKUJ.js} +7 -26
- package/dist/chunk-JIXINKUJ.js.map +1 -0
- package/dist/{chunk-DOI7OTYV.js → chunk-LJOQ2C5W.js} +4 -4
- 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-3FXOQC6P.js → chunk-LXHFGQOI.js} +3 -3
- package/dist/chunk-LXHFGQOI.js.map +1 -0
- package/dist/{chunk-W5L7C7WS.js → chunk-NMP4HY6M.js} +4 -4
- package/dist/chunk-NMP4HY6M.js.map +1 -0
- package/dist/{chunk-DPIXBBXK.js → chunk-NTCAZ2LF.js} +30 -10
- package/dist/chunk-NTCAZ2LF.js.map +1 -0
- package/dist/{chunk-VIK6UTVN.js → chunk-OGB5QPNZ.js} +10 -92
- package/dist/chunk-OGB5QPNZ.js.map +1 -0
- package/dist/{chunk-YSV5GQS7.js → chunk-OJAHIPPP.js} +21 -114
- package/dist/chunk-OJAHIPPP.js.map +1 -0
- package/dist/{chunk-AOXTD7QZ.js → chunk-OTNKP5CD.js} +9 -26
- package/dist/chunk-OTNKP5CD.js.map +1 -0
- package/dist/{chunk-VKY3JXAQ.js → chunk-PB5VGXS5.js} +4 -4
- 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-CHGABWIV.js → chunk-PRDJLQLB.js} +22 -102
- package/dist/chunk-PRDJLQLB.js.map +1 -0
- package/dist/{chunk-7OYMEXY3.js → chunk-QEAALOJC.js} +9 -13
- package/dist/chunk-QEAALOJC.js.map +1 -0
- package/dist/{chunk-LM6CJZX5.js → chunk-ROQGBDET.js} +4 -4
- package/dist/{chunk-LM6CJZX5.js.map → chunk-ROQGBDET.js.map} +1 -1
- package/dist/{chunk-GGQF5PQN.js → chunk-RRPMZYVN.js} +3 -3
- package/dist/{chunk-GGQF5PQN.js.map → chunk-RRPMZYVN.js.map} +1 -1
- package/dist/{chunk-USHR3MWQ.js → chunk-S6HO7HUY.js} +8 -6
- package/dist/chunk-S6HO7HUY.js.map +1 -0
- package/dist/{chunk-K5RV3GF4.js → chunk-SFP77VS3.js} +3 -3
- package/dist/{chunk-K5RV3GF4.js.map → chunk-SFP77VS3.js.map} +1 -1
- package/dist/{chunk-LXHOS74B.js → chunk-SJLH5ZDW.js} +4 -4
- package/dist/{chunk-LXHOS74B.js.map → chunk-SJLH5ZDW.js.map} +1 -1
- package/dist/{chunk-5XLCUGLQ.js → chunk-TBKPQOXF.js} +48 -29
- package/dist/chunk-TBKPQOXF.js.map +1 -0
- package/dist/{chunk-X3CNTOKQ.js → chunk-TDNPACQD.js} +4 -4
- package/dist/chunk-TDNPACQD.js.map +1 -0
- package/dist/{chunk-QZ67UOPR.js → chunk-TQEMGWZ2.js} +16 -17
- package/dist/chunk-TQEMGWZ2.js.map +1 -0
- package/dist/{chunk-U3RHF7QF.js → chunk-U4JPTWK6.js} +4 -4
- package/dist/chunk-U4JPTWK6.js.map +1 -0
- package/dist/{chunk-S7R4NTOI.js → chunk-UFC3RGIN.js} +3 -3
- package/dist/{chunk-S7R4NTOI.js.map → chunk-UFC3RGIN.js.map} +1 -1
- package/dist/{chunk-2OBMSB5S.js → chunk-W5VLFE4U.js} +5 -5
- package/dist/chunk-W5VLFE4U.js.map +1 -0
- package/dist/{chunk-6ZPCKFRS.js → chunk-WG5AYAC6.js} +7 -16
- package/dist/chunk-WG5AYAC6.js.map +1 -0
- package/dist/{chunk-TS2PG6Z4.js → chunk-WQT24BGG.js} +4 -17
- package/dist/chunk-WQT24BGG.js.map +1 -0
- package/dist/{chunk-FZXMRXWE.js → chunk-X7MF3TIF.js} +8 -13
- package/dist/chunk-X7MF3TIF.js.map +1 -0
- package/dist/{chunk-SUNCSPDF.js → chunk-XAM5EKOS.js} +6 -19
- package/dist/chunk-XAM5EKOS.js.map +1 -0
- package/dist/{chunk-XKDN5PWJ.js → chunk-XBXPY7U3.js} +4 -4
- package/dist/{chunk-XKDN5PWJ.js.map → chunk-XBXPY7U3.js.map} +1 -1
- package/dist/{chunk-5PUATOLR.js → chunk-XCK62GVU.js} +4 -4
- package/dist/chunk-XCK62GVU.js.map +1 -0
- package/dist/{chunk-AEPBQO7U.js → chunk-XMBZBXXS.js} +5 -13
- package/dist/chunk-XMBZBXXS.js.map +1 -0
- package/dist/{chunk-2FYXBW4S.js → chunk-XOEEAMMY.js} +23 -36
- package/dist/chunk-XOEEAMMY.js.map +1 -0
- package/dist/{chunk-HSW64H23.js → chunk-Z3DIBMBQ.js} +20 -34
- package/dist/chunk-Z3DIBMBQ.js.map +1 -0
- package/dist/clipboard/index.d.ts.map +1 -1
- package/dist/clipboard/index.js +2 -2
- package/dist/collapse/index.d.ts.map +1 -1
- package/dist/collapse/index.js +3 -2
- 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.map +1 -1
- package/dist/command/index.js +3 -2
- package/dist/context-menu/index.d.ts +2 -2
- package/dist/context-menu/index.d.ts.map +1 -1
- package/dist/context-menu/index.js +2 -1
- package/dist/context-menu/types.d.ts +12 -0
- 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 +3 -3
- package/dist/date-picker/shared.d.ts +3 -0
- package/dist/date-picker/shared.d.ts.map +1 -0
- 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 +2 -1
- package/dist/divider/index.d.ts.map +1 -1
- package/dist/divider/index.js +2 -2
- package/dist/drawer/index.js +1 -1
- package/dist/dropdown/index.d.ts.map +1 -1
- package/dist/dropdown/index.js +3 -3
- package/dist/fetching-overlay/index.js +3 -3
- 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 +3 -3
- package/dist/index.d.ts +28 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3020 -81
- package/dist/index.js.map +1 -1
- package/dist/input/index.d.ts.map +1 -1
- package/dist/input/index.js +3 -3
- package/dist/input-otp/index.d.ts.map +1 -1
- package/dist/input-otp/index.js +1 -1
- package/dist/input-password/index.d.ts.map +1 -1
- package/dist/input-password/index.js +4 -4
- package/dist/kbd/index.js +2 -2
- package/dist/link/index.d.ts.map +1 -1
- package/dist/link/index.js +2 -1
- 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 +3 -3
- package/dist/modal/index.d.ts +1 -1
- package/dist/modal/index.d.ts.map +1 -1
- package/dist/modal/index.js +1 -1
- package/dist/modal/types.d.ts +8 -0
- 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 +5 -4
- package/dist/navigation-menu/index.d.ts.map +1 -1
- package/dist/navigation-menu/index.js +1 -1
- 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 +2 -2
- package/dist/number-input/index.d.ts.map +1 -1
- package/dist/number-input/index.js +4 -3
- package/dist/pagination/index.d.ts.map +1 -1
- package/dist/pagination/index.js +2 -2
- package/dist/popover/index.js +2 -2
- package/dist/progress/index.d.ts.map +1 -1
- package/dist/progress/index.js +2 -2
- 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.js +2 -2
- package/dist/rating/index.d.ts.map +1 -1
- package/dist/rating/index.js +2 -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 +1 -1
- package/dist/select/index.d.ts.map +1 -1
- package/dist/select/index.js +5 -4
- package/dist/skeleton/index.js +2 -2
- package/dist/slider/index.js +2 -2
- package/dist/spinner/index.js +2 -2
- package/dist/stepper/index.d.ts +3 -3
- package/dist/stepper/index.d.ts.map +1 -1
- package/dist/stepper/index.js +2 -2
- package/dist/switch/index.js +2 -2
- 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 +9 -9
- package/dist/table/types.d.ts +6 -0
- package/dist/table/types.d.ts.map +1 -1
- package/dist/tabs/index.d.ts.map +1 -1
- package/dist/tabs/index.js +2 -2
- package/dist/tag/index.d.ts.map +1 -1
- package/dist/tag/index.js +2 -2
- 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 +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/timeline/index.d.ts.map +1 -1
- package/dist/timeline/index.js +2 -1
- package/dist/toast/index.js +2 -2
- package/dist/toggle/index.js +2 -2
- package/dist/toggle-group/index.d.ts.map +1 -1
- package/dist/toggle-group/index.js +2 -2
- package/dist/tooltip/index.js +2 -2
- 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 +3 -3
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +1 -1
- package/dist/tree-select/index.d.ts.map +1 -1
- package/dist/tree-select/index.js +4 -4
- 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 +2 -1
- package/dist/upload/utils.d.ts +1 -1
- package/dist/upload/utils.d.ts.map +1 -1
- package/dist/variants.d.ts +1 -1
- 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 +6 -3
- package/styles/global.css +506 -6787
- 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-2FYXBW4S.js.map +0 -1
- package/dist/chunk-2OBMSB5S.js.map +0 -1
- package/dist/chunk-3FXOQC6P.js.map +0 -1
- package/dist/chunk-3KISIZGP.js.map +0 -1
- package/dist/chunk-3QD7AQX7.js.map +0 -1
- package/dist/chunk-442OQLPK.js.map +0 -1
- package/dist/chunk-4WZDQI22.js.map +0 -1
- package/dist/chunk-54Z7XTJA.js.map +0 -1
- package/dist/chunk-5CIJ7UCP.js.map +0 -1
- package/dist/chunk-5PUATOLR.js.map +0 -1
- package/dist/chunk-5XLCUGLQ.js.map +0 -1
- package/dist/chunk-62LTLXVG.js.map +0 -1
- package/dist/chunk-6ZPCKFRS.js.map +0 -1
- package/dist/chunk-7OYMEXY3.js.map +0 -1
- package/dist/chunk-AEPBQO7U.js.map +0 -1
- package/dist/chunk-AOXTD7QZ.js.map +0 -1
- package/dist/chunk-BMA4E3T6.js.map +0 -1
- package/dist/chunk-C46VTIW7.js.map +0 -1
- package/dist/chunk-CHGABWIV.js.map +0 -1
- package/dist/chunk-DOI7OTYV.js.map +0 -1
- package/dist/chunk-DPIXBBXK.js.map +0 -1
- package/dist/chunk-EC5DXYME.js +0 -1273
- package/dist/chunk-EC5DXYME.js.map +0 -1
- package/dist/chunk-EHNWVQBL.js.map +0 -1
- package/dist/chunk-F4GLUQOF.js.map +0 -1
- package/dist/chunk-FCU2ENQQ.js.map +0 -1
- package/dist/chunk-FZXMRXWE.js.map +0 -1
- package/dist/chunk-G27HGKWO.js.map +0 -1
- package/dist/chunk-GLJDHW73.js.map +0 -1
- package/dist/chunk-GPSZJWU3.js.map +0 -1
- package/dist/chunk-HSW64H23.js.map +0 -1
- package/dist/chunk-KZZJAZ5M.js +0 -146
- package/dist/chunk-KZZJAZ5M.js.map +0 -1
- package/dist/chunk-MZDAQSI4.js.map +0 -1
- package/dist/chunk-NHM6DZOF.js.map +0 -1
- package/dist/chunk-QZ67UOPR.js.map +0 -1
- package/dist/chunk-SHUHAORE.js +0 -821
- package/dist/chunk-SHUHAORE.js.map +0 -1
- package/dist/chunk-SUNCSPDF.js.map +0 -1
- package/dist/chunk-TS2PG6Z4.js.map +0 -1
- package/dist/chunk-U3RHF7QF.js.map +0 -1
- package/dist/chunk-UIVOI7HE.js.map +0 -1
- package/dist/chunk-USHR3MWQ.js.map +0 -1
- package/dist/chunk-VIK6UTVN.js.map +0 -1
- package/dist/chunk-VKY3JXAQ.js.map +0 -1
- package/dist/chunk-VV3VO5TS.js.map +0 -1
- package/dist/chunk-W5L7C7WS.js.map +0 -1
- package/dist/chunk-X3CNTOKQ.js.map +0 -1
- package/dist/chunk-XWCWTPEM.js.map +0 -1
- package/dist/chunk-YSV5GQS7.js.map +0 -1
- package/dist/chunk-ZNNIXMJZ.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 -25
- 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,25 +1,12 @@
|
|
|
1
1
|
import { useRipple, RippleContainer } from './chunk-4TEZWGX7.js';
|
|
2
|
-
import { colorVars } from './chunk-
|
|
2
|
+
import { colorVars } from './chunk-G6QIIWKU.js';
|
|
3
3
|
import { cn } from './chunk-RAS6HUEI.js';
|
|
4
4
|
import { cva } from 'class-variance-authority';
|
|
5
5
|
import React, { useState, useCallback } from 'react';
|
|
6
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
7
|
|
|
8
8
|
var toggleGroupVariants = cva(
|
|
9
|
-
"inline-flex border rounded-md overflow-hidden"
|
|
10
|
-
{
|
|
11
|
-
variants: {
|
|
12
|
-
size: {
|
|
13
|
-
xs: "gap-0",
|
|
14
|
-
sm: "gap-0",
|
|
15
|
-
md: "gap-0",
|
|
16
|
-
lg: "gap-0"
|
|
17
|
-
}
|
|
18
|
-
},
|
|
19
|
-
defaultVariants: {
|
|
20
|
-
size: "md"
|
|
21
|
-
}
|
|
22
|
-
}
|
|
9
|
+
"inline-flex border rounded-md overflow-hidden"
|
|
23
10
|
);
|
|
24
11
|
var toggleItemVariants = cva(
|
|
25
12
|
"font-medium transition-colors cursor-pointer border-r last:border-r-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
@@ -75,7 +62,7 @@ var ToggleGroup = React.memo(
|
|
|
75
62
|
ref
|
|
76
63
|
}) => {
|
|
77
64
|
const [internalValue, setInternalValue] = useState(
|
|
78
|
-
defaultValue || (multiple ? [] : options[0]?.value || "")
|
|
65
|
+
defaultValue || (multiple ? [] : options?.[0]?.value || "")
|
|
79
66
|
);
|
|
80
67
|
const value = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
81
68
|
const handleToggleClick = useCallback(
|
|
@@ -115,7 +102,7 @@ var ToggleGroup = React.memo(
|
|
|
115
102
|
role: "group",
|
|
116
103
|
className: cn(
|
|
117
104
|
"toggleGroup_root",
|
|
118
|
-
toggleGroupVariants(
|
|
105
|
+
toggleGroupVariants(),
|
|
119
106
|
"border-border bg-background",
|
|
120
107
|
classNames?.root,
|
|
121
108
|
className,
|
|
@@ -159,5 +146,5 @@ ToggleGroup.displayName = "ToggleGroup";
|
|
|
159
146
|
var toggle_group_default = ToggleGroup;
|
|
160
147
|
|
|
161
148
|
export { ToggleGroup, toggle_group_default };
|
|
162
|
-
//# sourceMappingURL=chunk-
|
|
163
|
-
//# sourceMappingURL=chunk-
|
|
149
|
+
//# sourceMappingURL=chunk-XAM5EKOS.js.map
|
|
150
|
+
//# sourceMappingURL=chunk-XAM5EKOS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/toggle-group/index.tsx"],"names":[],"mappings":"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","file":"chunk-XAM5EKOS.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport React, { useState, useCallback } from 'react'\n\nimport { useRipple, RippleContainer } from '../hooks/useRipple'\nimport { cn } from '../utils'\nimport { colorVars } from '../variants'\nimport type { ToggleGroupProps } from './types'\n\nconst toggleGroupVariants = cva(\n 'inline-flex border rounded-md overflow-hidden',\n)\n\nconst toggleItemVariants = cva(\n 'font-medium transition-colors cursor-pointer border-r last:border-r-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n {\n variants: {\n size: {\n xs: 'h-(--toggle-height-xs) px-(--toggle-padding-x-xs) text-xs',\n sm: 'h-(--toggle-height-sm) px-(--toggle-padding-x-sm) text-sm',\n md: 'h-(--toggle-height-md) px-(--toggle-padding-x-md) text-base',\n lg: 'h-(--toggle-height-lg) px-(--toggle-padding-x-lg) text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n)\n\nconst getToggleClasses = (\n color: string,\n variant: string,\n isActive: boolean,\n) => {\n const baseColor = colorVars[color as keyof typeof colorVars] || colorVars.default\n\n if (!isActive) {\n // Inactive: text-secondary with hover to accent color\n return cn(baseColor, 'text-text-secondary hover:text-slot hover:bg-slot-10')\n }\n\n // Active state\n if (variant === 'solid') {\n return cn(baseColor, 'bg-slot text-slot-fg')\n }\n if (variant === 'soft') {\n return cn(baseColor, 'bg-slot-20 text-slot')\n }\n // default variant\n return cn(baseColor, 'border-slot bg-slot-10 text-slot')\n}\n\nconst ToggleItemButton = React.memo<React.ButtonHTMLAttributes<HTMLButtonElement> & { children: React.ReactNode }>(({ children, disabled, className, ...props }) => {\n const { ripples, onPointerDown, onKeyDown, onAnimationEnd } = useRipple(!disabled)\n return (\n <button className={cn(className, 'relative overflow-hidden')} onPointerDown={onPointerDown} onKeyDown={onKeyDown} disabled={disabled} {...props}>\n {children}\n <RippleContainer ripples={ripples} onAnimationEnd={onAnimationEnd} />\n </button>\n )\n})\n\nexport const ToggleGroup = React.memo<ToggleGroupProps>(\n ({\n options,\n value: controlledValue,\n defaultValue,\n multiple = false,\n color = 'primary',\n size = 'md',\n variant = 'default',\n onChange,\n fullWidth = false,\n disabled = false,\n className,\n centered = false,\n classNames,\n ref,\n }) => {\n const [internalValue, setInternalValue] = useState<string | string[]>(\n defaultValue || (multiple ? [] : options?.[0]?.value || ''),\n )\n\n const value =\n controlledValue !== undefined ? controlledValue : internalValue\n\n const handleToggleClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n const optionValue = e.currentTarget.dataset.value\n const optionDisabled = e.currentTarget.dataset.disabled === 'true'\n\n if (!optionValue || disabled || optionDisabled) return\n\n setInternalValue((prevValue) => {\n const currentValues = Array.isArray(prevValue) ? prevValue : []\n let newValue: string | string[]\n\n if (multiple) {\n if (currentValues.includes(optionValue)) {\n newValue = currentValues.filter((v) => v !== optionValue)\n } else {\n newValue = [...currentValues, optionValue]\n }\n } else {\n newValue = optionValue\n }\n\n onChange?.(newValue)\n return controlledValue !== undefined ? prevValue : newValue\n })\n },\n [disabled, multiple, onChange, controlledValue],\n )\n\n const isActive = (optionValue: string) => {\n if (multiple && Array.isArray(value)) {\n return value.includes(optionValue)\n }\n return optionValue === value\n }\n\n return (\n <div\n data-slot=\"root\"\n ref={ref}\n role=\"group\"\n className={cn(\n 'toggleGroup_root',\n toggleGroupVariants(),\n 'border-border bg-background',\n classNames?.root,\n className,\n fullWidth && 'grid w-full',\n )}\n style={fullWidth ? { gridTemplateColumns: `repeat(${options.length}, 1fr)` } : undefined}\n >\n {options.map((option) => {\n const active = isActive(option.value)\n const isDisabled = disabled || option.disabled\n\n return (\n <ToggleItemButton\n type=\"button\"\n key={option.value}\n className={cn(\n 'toggleGroup_item',\n toggleItemVariants({ size }),\n getToggleClasses(color, variant, active),\n\n 'border-border flex items-center justify-center',\n isDisabled && 'opacity-50 cursor-not-allowed',\n centered && 'text-center',\n classNames?.item,\n )}\n data-value={option.value}\n data-disabled={option.disabled}\n onClick={handleToggleClick}\n disabled={isDisabled}\n aria-pressed={active}\n >\n <div className=\"flex items-center gap-2\">\n {option.icon}\n {option.label}\n </div>\n </ToggleItemButton>\n )\n })}\n </div>\n )\n },\n)\n\nToggleGroup.displayName = 'ToggleGroup'\n\nexport type * from './types'\nexport default ToggleGroup\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Spinner } from './chunk-
|
|
1
|
+
import { Spinner } from './chunk-RRPMZYVN.js';
|
|
2
2
|
import { cn } from './chunk-RAS6HUEI.js';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -18,7 +18,7 @@ var FetchingOverlay = React.memo(({
|
|
|
18
18
|
className: cn(
|
|
19
19
|
"fetchingOverlay_root",
|
|
20
20
|
"absolute inset-0 flex items-center justify-center transition-opacity duration-300",
|
|
21
|
-
fullscreen && "fixed w-full h-screen z-
|
|
21
|
+
fullscreen && "fixed w-full h-screen z-[var(--z-overlay)]",
|
|
22
22
|
isFetching ? "opacity-100" : "opacity-0 pointer-events-none",
|
|
23
23
|
className
|
|
24
24
|
),
|
|
@@ -40,5 +40,5 @@ FetchingOverlay.displayName = "FetchingOverlay";
|
|
|
40
40
|
var fetching_overlay_default = FetchingOverlay;
|
|
41
41
|
|
|
42
42
|
export { fetching_overlay_default };
|
|
43
|
-
//# sourceMappingURL=chunk-
|
|
44
|
-
//# sourceMappingURL=chunk-
|
|
43
|
+
//# sourceMappingURL=chunk-XBXPY7U3.js.map
|
|
44
|
+
//# sourceMappingURL=chunk-XBXPY7U3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/fetching-overlay/index.tsx"],"names":[],"mappings":";;;;;AAcA,IAAM,eAAA,GAAkB,KAAA,CAAM,IAAA,CAA2B,CAAC;AAAA,EACxD,UAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,UAAA,GAAa,IAAA;AAAA,EACb,eAAA,GAAkB,EAAA;AAAA,EAClB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,MAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,sBAAA;AAAA,QACA,mFAAA;AAAA,QACA,UAAA,IAAc,
|
|
1
|
+
{"version":3,"sources":["../src/fetching-overlay/index.tsx"],"names":[],"mappings":";;;;;AAcA,IAAM,eAAA,GAAkB,KAAA,CAAM,IAAA,CAA2B,CAAC;AAAA,EACxD,UAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,UAAA,GAAa,IAAA;AAAA,EACb,eAAA,GAAkB,EAAA;AAAA,EAClB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,MAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,sBAAA;AAAA,QACA,mFAAA;AAAA,QACA,UAAA,IAAc,4CAAA;AAAA,QACd,aAAa,aAAA,GAAgB,+BAAA;AAAA,QAC7B;AAAA,OACF;AAAA,MACA,KAAA,EAAO,aAAa,EAAE,eAAA,EAAiB,iBAAiB,eAAA,GAAkB,GAAG,KAAI,GAAI,MAAA;AAAA,MACrF,IAAA,EAAK,QAAA;AAAA,MACL,WAAA,EAAW,UAAA;AAAA,MACX,YAAA,EAAY,aAAa,iBAAA,GAAoB,MAAA;AAAA,MAE5C,QAAA,EAAA,UAAA,oBACC,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA;AAAA,UACC,GAAG;AAAA;AAAA;AACN;AAAA,GAEJ;AAEJ,CAAC,CAAA;AAED,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAE9B,IAAO,wBAAA,GAAQ","file":"chunk-XBXPY7U3.js","sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { Spinner } from '../spinner'\nimport { SpinnerProps } from '../spinner/types'\nimport { cn } from '../utils'\n\nexport interface FetchingOverlayProps extends SpinnerProps {\n isFetching: boolean\n fullscreen?: boolean\n backdropOpacity?: number\n}\n\nconst FetchingOverlay = React.memo<FetchingOverlayProps>(({\n isFetching,\n size = 'lg',\n fullscreen = true,\n backdropOpacity = 30,\n className,\n ...rest\n}) => {\n return (\n <div\n data-slot=\"root\"\n className={cn(\n 'fetchingOverlay_root',\n 'absolute inset-0 flex items-center justify-center transition-opacity duration-300',\n fullscreen && 'fixed w-full h-screen z-[var(--z-overlay)]',\n isFetching ? 'opacity-100' : 'opacity-0 pointer-events-none',\n className,\n )}\n style={isFetching ? { backgroundColor: `rgba(0, 0, 0, ${backdropOpacity / 100})` } : undefined}\n role=\"status\"\n aria-busy={isFetching}\n aria-label={isFetching ? \"Loading content\" : undefined}\n >\n {isFetching && (\n <Spinner\n size={size}\n {...rest}\n />\n )}\n </div>\n )\n})\n\nFetchingOverlay.displayName = 'FetchingOverlay'\n\nexport default FetchingOverlay\n"]}
|
|
@@ -37,9 +37,9 @@ var applyTheme = (theme, disableTransitionOnChange) => {
|
|
|
37
37
|
document.head.removeChild(css);
|
|
38
38
|
}, 1);
|
|
39
39
|
}
|
|
40
|
-
root.setAttribute("data-theme", theme);
|
|
41
40
|
root.classList.remove("light", "dark");
|
|
42
41
|
root.classList.add(theme);
|
|
42
|
+
root.setAttribute("data-mode", theme);
|
|
43
43
|
};
|
|
44
44
|
var ThemeProvider = ({
|
|
45
45
|
children,
|
|
@@ -116,12 +116,12 @@ var themeScript = `
|
|
|
116
116
|
resolved = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
document.documentElement.setAttribute('data-theme', resolved);
|
|
120
119
|
document.documentElement.classList.add(resolved);
|
|
120
|
+
document.documentElement.setAttribute('data-mode', resolved);
|
|
121
121
|
} catch (e) {}
|
|
122
122
|
})();
|
|
123
123
|
`;
|
|
124
124
|
|
|
125
125
|
export { ThemeProvider, themeScript, useTheme };
|
|
126
|
-
//# sourceMappingURL=chunk-
|
|
127
|
-
//# sourceMappingURL=chunk-
|
|
126
|
+
//# sourceMappingURL=chunk-XCK62GVU.js.map
|
|
127
|
+
//# sourceMappingURL=chunk-XCK62GVU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/theme/ThemeProvider.tsx"],"names":[],"mappings":"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","file":"chunk-XCK62GVU.js","sourcesContent":["'use client'\n\n/**\n * ThemeProvider\n * Production-ready theme management with React context\n *\n * Dark/light mode: controlled via `.dark` / `.light` class on <html>\n * Theme presets: controlled via `data-theme` attribute on <html> (e.g. data-theme=\"corporate\")\n *\n * These are independent — you can combine any preset with any mode:\n * <html class=\"dark\" data-theme=\"corporate\">\n */\n\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport type { Theme, ThemeProviderProps, ThemeProviderState } from './types';\n\nconst ThemeProviderContext = createContext<ThemeProviderState | undefined>(\n undefined\n);\n\nconst MEDIA_QUERY = '(prefers-color-scheme: dark)';\n\n/**\n * Get stored theme from localStorage (SSR-safe)\n */\nconst getStoredTheme = (storageKey: string): Theme | null => {\n if (typeof window === 'undefined') return null;\n try {\n return (localStorage.getItem(storageKey) as Theme) || null;\n } catch {\n return null;\n }\n};\n\n/**\n * Store theme to localStorage (SSR-safe)\n */\nconst setStoredTheme = (storageKey: string, theme: Theme): void => {\n if (typeof window === 'undefined') return;\n try {\n localStorage.setItem(storageKey, theme);\n } catch {\n // Silently fail if localStorage is not available\n }\n};\n\n/**\n * Get system theme preference (SSR-safe)\n */\nconst getSystemTheme = (): 'light' | 'dark' => {\n if (typeof window === 'undefined') return 'light';\n return window.matchMedia(MEDIA_QUERY).matches ? 'dark' : 'light';\n};\n\n/**\n * Apply theme mode to document (SSR-safe)\n * Only touches the class (.dark / .light) and data-mode attribute.\n * Does NOT touch data-theme — that's reserved for preset names.\n */\nconst applyTheme = (\n theme: 'light' | 'dark',\n disableTransitionOnChange: boolean\n): void => {\n if (typeof window === 'undefined') return;\n\n const root = document.documentElement;\n\n // Disable transitions temporarily if requested\n if (disableTransitionOnChange) {\n const css = document.createElement('style');\n css.textContent = '* { transition: none !important; }';\n document.head.appendChild(css);\n\n // Force reflow\n void root.offsetHeight;\n\n setTimeout(() => {\n document.head.removeChild(css);\n }, 1);\n }\n\n // Apply mode via class only — data-theme is reserved for presets\n root.classList.remove('light', 'dark');\n root.classList.add(theme);\n // Also set data-mode for CSS selectors that prefer attribute-based targeting\n root.setAttribute('data-mode', theme);\n};\n\n/**\n * ThemeProvider Component\n * Provides theme context and manages theme state with persistence\n */\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n defaultTheme = 'system',\n storageKey = 'ui-theme',\n disableTransitionOnChange = false,\n // enableStrictMode is defined in props but reserved for future use\n}) => {\n // Initialize theme state (SSR-safe)\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window === 'undefined') return defaultTheme;\n const stored = getStoredTheme(storageKey);\n return stored ?? defaultTheme;\n });\n\n const [resolvedTheme, setResolvedTheme] = useState<'light' | 'dark'>(() => {\n if (typeof window === 'undefined') return 'light';\n const stored = getStoredTheme(storageKey) ?? defaultTheme;\n if (stored === 'system') return getSystemTheme();\n return stored;\n });\n\n // Handle theme changes\n const setTheme = useCallback(\n (newTheme: Theme) => {\n setThemeState(newTheme);\n setStoredTheme(storageKey, newTheme);\n\n const resolved = newTheme === 'system' ? getSystemTheme() : newTheme;\n setResolvedTheme(resolved);\n applyTheme(resolved, disableTransitionOnChange);\n },\n [storageKey, disableTransitionOnChange]\n );\n\n // Listen for system theme changes\n useEffect(() => {\n if (theme !== 'system') return;\n\n const mediaQuery = window.matchMedia(MEDIA_QUERY);\n\n const handleChange = (e: MediaQueryListEvent | MediaQueryList) => {\n const systemTheme = e.matches ? 'dark' : 'light';\n setResolvedTheme(systemTheme);\n applyTheme(systemTheme, disableTransitionOnChange);\n };\n\n // Initial check\n handleChange(mediaQuery);\n\n // Modern browsers\n if (mediaQuery.addEventListener) {\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }\n\n // Legacy browsers\n mediaQuery.addListener(handleChange);\n return () => mediaQuery.removeListener(handleChange);\n }, [theme, disableTransitionOnChange]);\n\n // Apply initial theme on mount (client-side only)\n useEffect(() => {\n applyTheme(resolvedTheme, false);\n }, [resolvedTheme]);\n\n // Memoize context value\n const value = useMemo<ThemeProviderState>(\n () => ({\n theme,\n resolvedTheme,\n setTheme,\n }),\n [theme, resolvedTheme, setTheme]\n );\n\n return (\n <ThemeProviderContext.Provider value={value}>\n {children}\n </ThemeProviderContext.Provider>\n );\n};\n\n/**\n * useTheme Hook\n * Access theme context from any component\n *\n * @throws {Error} When used outside ThemeProvider (in strict mode)\n * @returns {ThemeProviderState} Theme state and setTheme function\n *\n * @example\n * ```tsx\n * const { theme, setTheme, resolvedTheme } = useTheme();\n *\n * // Current theme setting\n * console.log(theme); // 'light' | 'dark' | 'system'\n *\n * // Resolved theme (actual theme being displayed)\n * console.log(resolvedTheme); // 'light' | 'dark'\n *\n * // Change theme\n * setTheme('dark');\n * ```\n */\nexport const useTheme = (): ThemeProviderState => {\n const context = useContext(ThemeProviderContext);\n\n if (context === undefined) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n\n return context;\n};\n\n/**\n * Script to inject in <head> for SSR apps to prevent flash of unstyled content.\n * Place this in your HTML template before any styles.\n *\n * Only sets class and data-mode — does NOT touch data-theme (preset).\n *\n * @example\n * ```html\n * <script dangerouslySetInnerHTML={{ __html: themeScript }} />\n * ```\n */\nexport const themeScript = `\n(function() {\n try {\n var storageKey = 'ui-theme';\n var theme = localStorage.getItem(storageKey) || 'system';\n var resolved = theme;\n\n if (theme === 'system') {\n resolved = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n\n document.documentElement.classList.add(resolved);\n document.documentElement.setAttribute('data-mode', resolved);\n } catch (e) {}\n})();\n`;\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { colorVars } from './chunk-G6QIIWKU.js';
|
|
1
2
|
import { cn, iconSizes } from './chunk-RAS6HUEI.js';
|
|
2
3
|
import { cva } from 'class-variance-authority';
|
|
3
4
|
import { ExternalLink } from 'lucide-react';
|
|
@@ -5,19 +6,10 @@ import React from 'react';
|
|
|
5
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
7
|
|
|
7
8
|
var linkVariants = cva(
|
|
8
|
-
"inline-flex items-center gap-1 font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-
|
|
9
|
+
"inline-flex items-center gap-1 font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slot focus-visible:ring-offset-2 focus-visible:ring-offset-background text-slot hover:text-slot-80",
|
|
9
10
|
{
|
|
10
11
|
variants: {
|
|
11
|
-
color:
|
|
12
|
-
default: "text-text-primary hover:text-text-primary/80",
|
|
13
|
-
primary: "text-primary hover:text-primary/80",
|
|
14
|
-
secondary: "text-secondary hover:text-secondary/80",
|
|
15
|
-
accent: "text-accent hover:text-accent/80",
|
|
16
|
-
success: "text-success hover:text-success/80",
|
|
17
|
-
error: "text-error hover:text-error/80",
|
|
18
|
-
warning: "text-warning hover:text-warning/80",
|
|
19
|
-
info: "text-info hover:text-info/80"
|
|
20
|
-
},
|
|
12
|
+
color: colorVars,
|
|
21
13
|
size: {
|
|
22
14
|
xs: "text-xs",
|
|
23
15
|
sm: "text-sm",
|
|
@@ -141,5 +133,5 @@ Link.displayName = "Link";
|
|
|
141
133
|
var link_default = Link;
|
|
142
134
|
|
|
143
135
|
export { link_default };
|
|
144
|
-
//# sourceMappingURL=chunk-
|
|
145
|
-
//# sourceMappingURL=chunk-
|
|
136
|
+
//# sourceMappingURL=chunk-XMBZBXXS.js.map
|
|
137
|
+
//# sourceMappingURL=chunk-XMBZBXXS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/link/index.tsx"],"names":[],"mappings":"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","file":"chunk-XMBZBXXS.js","sourcesContent":["\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport { ExternalLink } from \"lucide-react\";\nimport React from \"react\";\n\nimport { cn, iconSizes } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type { LinkProps, LinkSize } from \"./types\";\n\n/**\n * Link variants\n */\nconst linkVariants = cva(\n \"inline-flex items-center gap-1 font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slot focus-visible:ring-offset-2 focus-visible:ring-offset-background text-slot hover:text-slot-80\",\n {\n variants: {\n color: colorVars,\n size: {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n },\n underline: {\n always: \"underline\",\n hover: \"no-underline hover:underline\",\n none: \"no-underline\",\n },\n disabled: {\n true: \"opacity-50 pointer-events-none cursor-not-allowed\",\n false: \"cursor-pointer\",\n },\n },\n defaultVariants: {\n color: \"default\",\n size: \"md\",\n underline: \"hover\",\n disabled: false,\n },\n },\n);\n\n/**\n * Link Component\n */\nconst Link = React.memo<LinkProps>(({\n children,\n color = \"default\",\n size = \"md\",\n underline = \"hover\",\n external = false,\n showExternalIcon = true,\n disabled = false,\n leftIcon,\n rightIcon,\n className,\n classNames,\n href,\n ref,\n onClick,\n ...props\n}) => {\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n };\n\n const externalProps = external\n ? {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n }\n : {};\n\n const showExternalIconRendered = external && showExternalIcon;\n\n return (\n <a\n ref={ref}\n href={disabled ? undefined : href}\n className={cn(\n \"link_root\",\n (leftIcon || rightIcon) && \"align-top\",\n linkVariants({\n color,\n size,\n underline,\n disabled,\n }),\n classNames?.root,\n className,\n )}\n onClick={handleClick}\n aria-disabled={disabled || undefined}\n data-slot=\"root\"\n {...externalProps}\n {...props}\n >\n {leftIcon && (\n <span\n className={cn(\n \"link_icon\",\n \"inline-flex items-center justify-center shrink-0\",\n iconSizes[size as LinkSize],\n classNames?.icon,\n )}\n data-slot=\"icon\"\n >\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span\n className={cn(\n \"link_icon\",\n \"inline-flex items-center justify-center shrink-0\",\n iconSizes[size as LinkSize],\n classNames?.icon,\n )}\n data-slot=\"icon\"\n >\n {rightIcon}\n </span>\n )}\n {showExternalIconRendered && (\n <ExternalLink\n className={cn(\n \"link_externalIcon\",\n iconSizes[size as LinkSize],\n classNames?.externalIcon,\n )}\n aria-label=\"Opens in new tab\"\n data-slot=\"externalIcon\"\n />\n )}\n </a>\n );\n});\n\nLink.displayName = \"Link\";\n\nexport type * from \"./types\";\nexport default Link;\n"]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { useSelectBase } from './chunk-HJITFPBT.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { useControllable } from './chunk-PQOIW5CM.js';
|
|
3
|
+
import { Popover, PopoverTrigger, PopoverContent } from './chunk-ROQGBDET.js';
|
|
4
|
+
import { spinner_default } from './chunk-RRPMZYVN.js';
|
|
5
|
+
import { colorVars } from './chunk-G6QIIWKU.js';
|
|
4
6
|
import { cn, iconSizes } from './chunk-RAS6HUEI.js';
|
|
5
7
|
import { ChevronUp, Check, ChevronDown, X, Search } from 'lucide-react';
|
|
6
8
|
import React from 'react';
|
|
@@ -37,14 +39,14 @@ var multiSelectTriggerVariants = cva(
|
|
|
37
39
|
}
|
|
38
40
|
);
|
|
39
41
|
cva(
|
|
40
|
-
"absolute z-
|
|
42
|
+
"absolute z-[var(--z-dropdown)] mt-1 overflow-auto rounded-md border border-border bg-background"
|
|
41
43
|
);
|
|
42
44
|
var multiSelectOptionVariants = cva(
|
|
43
45
|
"relative cursor-pointer select-none px-3 py-2 text-text-primary",
|
|
44
46
|
{
|
|
45
47
|
variants: {
|
|
46
48
|
selected: {
|
|
47
|
-
true: "bg-
|
|
49
|
+
true: "bg-slot-10 text-slot font-medium",
|
|
48
50
|
false: "hover:bg-surface"
|
|
49
51
|
},
|
|
50
52
|
disabled: {
|
|
@@ -88,26 +90,16 @@ var MultiSelect = React.memo(
|
|
|
88
90
|
ref,
|
|
89
91
|
...props
|
|
90
92
|
}) => {
|
|
91
|
-
const [
|
|
92
|
-
|
|
93
|
-
);
|
|
93
|
+
const [controlledVal, setCurrentValue] = useControllable({ value, defaultValue: defaultValue ?? [], onChange });
|
|
94
|
+
const currentValue = controlledVal ?? [];
|
|
94
95
|
const [visibleChipsCount, setVisibleChipsCount] = React.useState(maxChipsVisible);
|
|
95
|
-
const currentValue = value !== void 0 ? value : internalValue;
|
|
96
96
|
const handleSelect = React.useCallback(
|
|
97
97
|
(optionValue) => {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
const newValue = prev.includes(optionValue) ? prev.filter((v) => v !== optionValue) : [...prev, optionValue];
|
|
101
|
-
onChange?.(newValue);
|
|
102
|
-
return newValue;
|
|
103
|
-
});
|
|
104
|
-
} else {
|
|
105
|
-
const newValue = currentValue.includes(optionValue) ? currentValue.filter((v) => v !== optionValue) : [...currentValue, optionValue];
|
|
106
|
-
onChange?.(newValue);
|
|
107
|
-
}
|
|
98
|
+
const newValue = (currentValue || []).includes(optionValue) ? (currentValue || []).filter((v) => v !== optionValue) : [...currentValue || [], optionValue];
|
|
99
|
+
setCurrentValue(newValue);
|
|
108
100
|
setHighlightedIndex(-1);
|
|
109
101
|
},
|
|
110
|
-
[
|
|
102
|
+
[currentValue, setCurrentValue]
|
|
111
103
|
);
|
|
112
104
|
const {
|
|
113
105
|
// State
|
|
@@ -164,23 +156,17 @@ var MultiSelect = React.memo(
|
|
|
164
156
|
const handleRemoveChip = React.useCallback(
|
|
165
157
|
(optionValue, e) => {
|
|
166
158
|
e.stopPropagation();
|
|
167
|
-
const newValue = currentValue.filter((v) => v !== optionValue);
|
|
168
|
-
|
|
169
|
-
setInternalValue(newValue);
|
|
170
|
-
}
|
|
171
|
-
onChange?.(newValue);
|
|
159
|
+
const newValue = (currentValue || []).filter((v) => v !== optionValue);
|
|
160
|
+
setCurrentValue(newValue);
|
|
172
161
|
},
|
|
173
|
-
[
|
|
162
|
+
[currentValue, setCurrentValue]
|
|
174
163
|
);
|
|
175
164
|
const handleClear = React.useCallback(
|
|
176
165
|
(e) => {
|
|
177
166
|
e.stopPropagation();
|
|
178
|
-
|
|
179
|
-
setInternalValue([]);
|
|
180
|
-
}
|
|
181
|
-
onChange?.([]);
|
|
167
|
+
setCurrentValue([]);
|
|
182
168
|
},
|
|
183
|
-
[
|
|
169
|
+
[setCurrentValue]
|
|
184
170
|
);
|
|
185
171
|
const handleInputKeyDown = React.useCallback(
|
|
186
172
|
(e) => {
|
|
@@ -345,7 +331,7 @@ var MultiSelect = React.memo(
|
|
|
345
331
|
isSelected && /* @__PURE__ */ jsx("span", { className: "absolute right-3 top-1/2 -translate-y-1/2", children: /* @__PURE__ */ jsx(
|
|
346
332
|
Check,
|
|
347
333
|
{
|
|
348
|
-
className: cn("text-
|
|
334
|
+
className: cn("text-slot", iconSizes[size])
|
|
349
335
|
}
|
|
350
336
|
) })
|
|
351
337
|
]
|
|
@@ -397,7 +383,7 @@ var MultiSelect = React.memo(
|
|
|
397
383
|
isSelected && /* @__PURE__ */ jsx("span", { className: "absolute right-3 top-1/2 -translate-y-1/2", children: /* @__PURE__ */ jsx(
|
|
398
384
|
Check,
|
|
399
385
|
{
|
|
400
|
-
className: cn("text-
|
|
386
|
+
className: cn("text-slot", iconSizes[size])
|
|
401
387
|
}
|
|
402
388
|
) })
|
|
403
389
|
]
|
|
@@ -454,7 +440,7 @@ var MultiSelect = React.memo(
|
|
|
454
440
|
"span",
|
|
455
441
|
{
|
|
456
442
|
className: cn(
|
|
457
|
-
"multiSelect_tag inline-flex items-center gap-1 px-2 bg-
|
|
443
|
+
"multiSelect_tag inline-flex items-center gap-1 px-2 bg-slot-10 text-slot rounded text-sm whitespace-nowrap",
|
|
458
444
|
classNames?.tag
|
|
459
445
|
),
|
|
460
446
|
"data-slot": "multiSelect_tag",
|
|
@@ -500,7 +486,7 @@ var MultiSelect = React.memo(
|
|
|
500
486
|
"span",
|
|
501
487
|
{
|
|
502
488
|
"data-hidden-chip": true,
|
|
503
|
-
className: "inline-flex items-center gap-1 px-2 py-0.5 bg-
|
|
489
|
+
className: "inline-flex items-center gap-1 px-2 py-0.5 bg-slot-10 text-slot rounded text-sm whitespace-nowrap",
|
|
504
490
|
children: [
|
|
505
491
|
option.label,
|
|
506
492
|
/* @__PURE__ */ jsx(X, { className: "h-3 w-3" })
|
|
@@ -555,6 +541,7 @@ var MultiSelect = React.memo(
|
|
|
555
541
|
{
|
|
556
542
|
className: cn(
|
|
557
543
|
"multiSelect_root relative group",
|
|
544
|
+
colorVars.primary,
|
|
558
545
|
fullWidth ? "w-full" : "inline-block",
|
|
559
546
|
classNames?.root
|
|
560
547
|
),
|
|
@@ -622,5 +609,5 @@ MultiSelect.displayName = "MultiSelect";
|
|
|
622
609
|
var multi_select_default = MultiSelect;
|
|
623
610
|
|
|
624
611
|
export { multi_select_default };
|
|
625
|
-
//# sourceMappingURL=chunk-
|
|
626
|
-
//# sourceMappingURL=chunk-
|
|
612
|
+
//# sourceMappingURL=chunk-XOEEAMMY.js.map
|
|
613
|
+
//# sourceMappingURL=chunk-XOEEAMMY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/multi-select/utils.ts","../src/multi-select/index.tsx"],"names":[],"mappings":"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","file":"chunk-XOEEAMMY.js","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const multiSelectTriggerVariants = cva(\n \"w-full flex items-center justify-between rounded-md bg-background text-text-primary border focus:border-primary outline-none disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer gap-1\",\n {\n variants: {\n status: {\n default: \"border-border\",\n error: \"border-error\",\n warning: \"border-warning\",\n info: \"border-info\",\n success: \"border-success\",\n },\n size: {\n xs: \"h-(--select-height-xs) px-(--select-padding-x-xs) text-xs\",\n sm: \"h-(--select-height-sm) px-(--select-padding-x-sm) text-sm\",\n md: \"h-(--select-height-md) px-(--select-padding-x-md) text-base\",\n lg: \"h-(--select-height-lg) px-(--select-padding-x-lg) text-lg\",\n },\n fullWidth: {\n true: \"w-full\",\n false: \"max-w-full\",\n },\n },\n defaultVariants: {\n status: \"default\",\n size: \"md\",\n fullWidth: true,\n },\n },\n);\n\nexport const multiSelectDropdownVariants = cva(\n \"absolute z-[var(--z-dropdown)] mt-1 overflow-auto rounded-md border border-border bg-background\",\n);\n\nexport const multiSelectOptionVariants = cva(\n \"relative cursor-pointer select-none px-3 py-2 text-text-primary\",\n {\n variants: {\n selected: {\n true: \"bg-slot-10 text-slot font-medium\",\n false: \"hover:bg-surface\",\n },\n disabled: {\n true: \"opacity-50 cursor-not-allowed\",\n false: \"\",\n },\n },\n defaultVariants: {\n selected: false,\n disabled: false,\n },\n },\n);\n\nexport const multiSelectGroupVariants = cva(\n \"px-3 py-2 text-xs font-semibold text-text-secondary uppercase tracking-wider bg-surface\",\n);\n","\"use client\";\n\nimport { Check, ChevronDown, ChevronUp, Search, X } from \"lucide-react\";\nimport React from \"react\";\nimport { useControllable } from '../hooks/useControllable'\n\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\nimport Spinner from \"../spinner\";\nimport { useSelectBase } from \"../shared/useSelectBase\";\nimport type { FlattenedItem } from \"../shared/useSelectBase\";\nimport { cn, iconSizes } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type { MultiSelectOption, MultiSelectProps } from \"./types\";\nimport {\n multiSelectGroupVariants,\n multiSelectOptionVariants,\n multiSelectTriggerVariants,\n} from \"./utils\";\n\nconst MultiSelect = React.memo<MultiSelectProps>(\n ({\n size = \"md\",\n label,\n helperText,\n error,\n warning,\n info,\n success,\n options = [],\n placeholder = \"Select options\",\n loading = false,\n fullWidth = true,\n maxChipsVisible = 3,\n value,\n defaultValue,\n onChange,\n disabled,\n required,\n clearable = false,\n virtualizeThreshold = 50,\n maxDropdownHeight = 300,\n className,\n classNames,\n ref,\n ...props\n }) => {\n const [controlledVal, setCurrentValue] = useControllable<string[]>({ value, defaultValue: defaultValue ?? [], onChange });\n const currentValue = controlledVal ?? [];\n const [visibleChipsCount, setVisibleChipsCount] =\n React.useState(maxChipsVisible);\n\n const handleSelect = React.useCallback(\n (optionValue: string) => {\n const newValue = (currentValue || []).includes(optionValue)\n ? (currentValue || []).filter((v) => v !== optionValue)\n : [...(currentValue || []), optionValue];\n setCurrentValue(newValue);\n setHighlightedIndex(-1);\n },\n [currentValue, setCurrentValue],\n );\n\n const {\n // State\n isOpen,\n setIsOpen,\n searchQuery,\n setSearchQuery: _setSearchQuery,\n setHighlightedIndex,\n highlightedIndex,\n showTopArrow,\n showBottomArrow,\n // Refs\n triggerRef,\n inputRef,\n scrollContainerRef,\n // Computed\n filteredOptions,\n selectableOptions,\n shouldVirtualize,\n virtualizer,\n // IDs & validation\n labelId,\n listboxId,\n helperId,\n status,\n helperMessage,\n // Handlers\n handleInputChange,\n handleInputClick,\n handleScroll,\n handleKeyDown,\n handleKeyUp,\n refCallback,\n } = useSelectBase<MultiSelectOption>({\n options,\n onSelectOption: (option) => handleSelect(option.value),\n virtualizeThreshold,\n maxDropdownHeight,\n label,\n idPrefix: \"multiselect\",\n error,\n warning,\n info,\n success,\n helperText,\n });\n\n const selectedOptions = React.useMemo(\n () => {\n const valueSet = new Set(currentValue)\n return options.filter(opt => valueSet.has(opt.value))\n },\n [options, currentValue]\n );\n\n const handleRemoveChip = React.useCallback(\n (optionValue: string, e: React.MouseEvent | React.KeyboardEvent) => {\n e.stopPropagation();\n const newValue = (currentValue || []).filter((v) => v !== optionValue);\n setCurrentValue(newValue);\n },\n [currentValue, setCurrentValue],\n );\n\n const handleClear = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n setCurrentValue([]);\n },\n [setCurrentValue],\n );\n\n const handleInputKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Backspace\" && !searchQuery && currentValue.length > 0) {\n e.preventDefault();\n const lastValue = currentValue[currentValue.length - 1];\n handleRemoveChip(lastValue!, e);\n } else {\n handleKeyDown(e);\n }\n },\n [searchQuery, currentValue, handleRemoveChip, handleKeyDown],\n );\n\n React.useEffect(() => {\n if (selectedOptions.length === 0 || !triggerRef.current) {\n setVisibleChipsCount(maxChipsVisible);\n return;\n }\n\n const calculateVisibleChips = () => {\n const container = triggerRef.current;\n if (!container) return;\n\n const hiddenChips = container.querySelectorAll(\"[data-hidden-chip]\");\n if (hiddenChips.length === 0) return;\n\n const containerWidth = container.offsetWidth;\n const padding =\n size === \"sm\" ? 12 : size === \"md\" ? 16 : size === \"lg\" ? 20 : 24;\n const chevronWidth = 32;\n const gap = 4;\n const plusIndicatorWidth = 50;\n\n const availableWidth = containerWidth - padding * 2 - chevronWidth;\n let totalWidth = 0;\n let visibleCount = 0;\n\n for (let i = 0; i < hiddenChips.length; i++) {\n const chip = hiddenChips[i];\n if (!chip) continue;\n const chipWidth = chip.getBoundingClientRect().width;\n const requiredSpace =\n totalWidth + chipWidth + (visibleCount > 0 ? gap : 0);\n\n const needsPlusIndicator = i < hiddenChips.length - 1;\n const spaceWithIndicator =\n requiredSpace + (needsPlusIndicator ? gap + plusIndicatorWidth : 0);\n\n if (spaceWithIndicator <= availableWidth) {\n totalWidth = requiredSpace;\n visibleCount++;\n } else {\n break;\n }\n }\n\n setVisibleChipsCount(Math.max(1, visibleCount));\n };\n\n const timeoutId = setTimeout(calculateVisibleChips, 0);\n\n const resizeObserver = new ResizeObserver(() => {\n requestAnimationFrame(calculateVisibleChips);\n });\n\n if (triggerRef.current) {\n resizeObserver.observe(triggerRef.current);\n }\n\n return () => {\n clearTimeout(timeoutId);\n resizeObserver.disconnect();\n };\n }, [currentValue.length, size, maxChipsVisible, triggerRef]);\n\n const handleOptionClick = React.useCallback(\n (optionValue: string) => {\n handleSelect(optionValue);\n },\n [handleSelect],\n );\n\n const renderOptionsList = React.useMemo(\n () => (\n <div className=\"relative\" data-slot=\"multiSelect_dropdown\">\n {/* Top scroll indicator */}\n {showTopArrow && (\n <div className=\"flex items-center justify-center\">\n <ChevronUp className=\"h-4 w-4 text-text-primary\" />\n </div>\n )}\n\n <div\n ref={scrollContainerRef}\n className={cn(\"overflow-auto relative\", classNames?.dropdown)}\n style={{ maxHeight: maxDropdownHeight }}\n role=\"listbox\"\n id={listboxId}\n aria-multiselectable=\"true\"\n aria-labelledby={label ? labelId : undefined}\n onScroll={handleScroll}\n >\n {filteredOptions.length === 0 ? (\n <div\n className={cn(\n \"multiSelect_empty px-3 py-4 text-center text-sm text-text-secondary\",\n classNames?.empty,\n )}\n data-slot=\"multiSelect_empty\"\n >\n No options found\n </div>\n ) : shouldVirtualize ? (\n <div\n ref={refCallback}\n style={{\n height: `${Math.min(virtualizer.getTotalSize(), maxDropdownHeight)}px`,\n overflow: \"auto\",\n }}\n onScroll={handleScroll}\n >\n <div\n style={{\n height: `${virtualizer.getTotalSize()}px`,\n width: \"100%\",\n position: \"relative\",\n }}\n >\n {virtualizer.getVirtualItems().map((virtualItem) => {\n const item = filteredOptions[virtualItem.index];\n\n if (item?.type === \"group\") {\n return (\n <div\n key={`group-${virtualItem.index}`}\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: `${virtualItem.size}px`,\n transform: `translateY(${virtualItem.start}px)`,\n }}\n className={multiSelectGroupVariants()}\n >\n {item?.data as string}\n </div>\n );\n }\n\n const option = item?.data as MultiSelectOption;\n const isSelected = currentValue.includes(option.value);\n const selectableIndex = selectableOptions.indexOf(\n item as FlattenedItem<MultiSelectOption>,\n );\n const isHighlighted = selectableIndex === highlightedIndex;\n\n return (\n <div\n key={option.value}\n data-value={option.value}\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: `${virtualItem.size}px`,\n transform: `translateY(${virtualItem.start}px)`,\n }}\n className={cn(\n \"multiSelect_option\",\n multiSelectOptionVariants({\n selected: isSelected,\n disabled: !!option.disabled,\n }),\n isHighlighted && \"bg-surface\",\n classNames?.option,\n isSelected && classNames?.optionSelected,\n )}\n onClick={() =>\n !option.disabled && handleOptionClick(option.value)\n }\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={option.disabled}\n data-slot=\"multiSelect_option\"\n >\n {option.label}\n {isSelected && (\n <span className=\"absolute right-3 top-1/2 -translate-y-1/2\">\n <Check\n className={cn(\"text-slot\", iconSizes[size])}\n />\n </span>\n )}\n </div>\n );\n })}\n </div>\n </div>\n ) : (\n <div>\n {filteredOptions.map((item, index) => {\n if (item.type === \"group\") {\n return (\n <div\n key={`group-${index}`}\n className={multiSelectGroupVariants()}\n >\n {item.data as string}\n </div>\n );\n }\n\n const option = item.data as MultiSelectOption;\n const isSelected = currentValue.includes(option.value);\n const selectableIndex = selectableOptions.indexOf(\n item as FlattenedItem<MultiSelectOption>,\n );\n const isHighlighted = selectableIndex === highlightedIndex;\n\n return (\n <div\n key={option.value}\n data-value={option.value}\n className={cn(\n \"multiSelect_option\",\n multiSelectOptionVariants({\n selected: isSelected,\n disabled: !!option.disabled,\n }),\n isHighlighted && \"bg-surface\",\n classNames?.option,\n isSelected && classNames?.optionSelected,\n )}\n onClick={() =>\n !option.disabled && handleOptionClick(option.value)\n }\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={option.disabled}\n data-slot=\"multiSelect_option\"\n >\n {option.label}\n {isSelected && (\n <span className=\"absolute right-3 top-1/2 -translate-y-1/2\">\n <Check\n className={cn(\"text-slot\", iconSizes[size])}\n />\n </span>\n )}\n </div>\n );\n })}\n </div>\n )}\n </div>\n\n {/* Bottom scroll indicator */}\n {showBottomArrow && (\n <div className=\"flex items-center justify-center\">\n <ChevronDown className=\"h-4 w-4 text-text-primary\" />\n </div>\n )}\n </div>\n ),\n [\n showTopArrow,\n showBottomArrow,\n filteredOptions,\n shouldVirtualize,\n virtualizer,\n currentValue,\n selectableOptions,\n highlightedIndex,\n handleOptionClick,\n maxDropdownHeight,\n listboxId,\n label,\n labelId,\n handleScroll,\n refCallback,\n classNames,\n size,\n ],\n );\n\n // Trigger button (used in both desktop and mobile)\n const triggerButton = (\n <button\n ref={triggerRef}\n type=\"button\"\n className={cn(\n \"multiSelect_trigger\",\n multiSelectTriggerVariants({ status, size, fullWidth }),\n loading && \"opacity-50\",\n classNames?.trigger,\n className,\n )}\n disabled={disabled || loading}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-controls={listboxId}\n aria-labelledby={label ? labelId : undefined}\n aria-describedby={helperMessage ? helperId : undefined}\n data-slot=\"multiSelect_trigger\"\n >\n {selectedOptions.length > 0 && (\n <div className=\"flex gap-1 shrink-0\">\n {selectedOptions.slice(0, visibleChipsCount).map((option) => (\n <span\n key={option.value}\n className={cn(\n \"multiSelect_tag inline-flex items-center gap-1 px-2 bg-slot-10 text-slot rounded text-sm whitespace-nowrap\",\n classNames?.tag,\n )}\n data-slot=\"multiSelect_tag\"\n >\n {option.label}\n <span\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onClick={(e) => handleRemoveChip(option.value, e)}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); handleRemoveChip(option.value, e as unknown as React.MouseEvent); } }}\n className={cn(\n \"multiSelect_tagRemove hover:text-error cursor-pointer\",\n disabled && \"pointer-events-none\",\n classNames?.tagRemove,\n )}\n aria-disabled={disabled}\n data-slot=\"multiSelect_tagRemove\"\n >\n <X className=\"h-3 w-3\" />\n </span>\n </span>\n ))}\n {selectedOptions.length > visibleChipsCount && (\n <span className=\"inline-flex items-center px-2 py-0.5 bg-surface text-text-secondary rounded text-sm whitespace-nowrap\">\n +{selectedOptions.length - visibleChipsCount}\n </span>\n )}\n </div>\n )}\n <div\n className=\"absolute opacity-0 pointer-events-none whitespace-nowrap\"\n aria-hidden=\"true\"\n >\n {selectedOptions.map((option) => (\n <span\n key={option.value}\n data-hidden-chip\n className=\"inline-flex items-center gap-1 px-2 py-0.5 bg-slot-10 text-slot rounded text-sm whitespace-nowrap\"\n >\n {option.label}\n <X className=\"h-3 w-3\" />\n </span>\n ))}\n </div>\n <input\n ref={inputRef}\n type=\"text\"\n className=\"bg-transparent outline-none cursor-pointer placeholder:text-text-secondary/50 flex-1 min-w-0 pointer-events-none\"\n placeholder={selectedOptions.length > 0 ? \"\" : placeholder}\n value={searchQuery}\n onChange={handleInputChange}\n onClick={handleInputClick}\n onKeyDown={handleInputKeyDown}\n onKeyUp={handleKeyUp}\n disabled={disabled || loading}\n readOnly={!isOpen}\n tabIndex={0}\n />\n <div className=\"flex items-center gap-1 text-text-secondary\">\n {loading ? (\n <Spinner />\n ) : (\n <>\n {clearable && selectedOptions.length > 0 && !disabled && (\n <span\n role=\"button\"\n tabIndex={-1}\n onClick={handleClear}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); handleClear(e as unknown as React.MouseEvent); } }}\n className=\"hover:text-text-primary transition-colors cursor-pointer\"\n aria-label=\"Clear selection\"\n >\n <X className={iconSizes[size]} />\n </span>\n )}\n {isOpen ? (\n <Search className={iconSizes[size]} />\n ) : (\n <ChevronDown className={iconSizes[size]} />\n )}\n </>\n )}\n </div>\n </button>\n );\n\n const selectElement = (\n <div\n className={cn(\n \"multiSelect_root relative group\",\n colorVars.primary,\n fullWidth ? \"w-full\" : \"inline-block\",\n classNames?.root,\n )}\n ref={ref}\n data-slot=\"multiSelect_root\"\n {...props}\n >\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <PopoverTrigger asChild>{triggerButton}</PopoverTrigger>\n\n <PopoverContent\n className=\"p-0 w-(--radix-popover-trigger-width)\"\n align=\"start\"\n sideOffset={4}\n onOpenAutoFocus={(e: Event) => {\n e.preventDefault();\n inputRef.current?.focus();\n }}\n >\n {renderOptionsList}\n </PopoverContent>\n </Popover>\n </div>\n );\n\n return (\n <div className={cn(\"w-full flex flex-col\", !fullWidth && \"inline-block\")}>\n <div className=\"flex gap-2 items-center\">\n {label && (\n <label\n id={labelId}\n className={cn(\n \"multiSelect_label block mb-0.5\",\n classNames?.label,\n )}\n data-slot=\"multiSelect_label\"\n >\n <span className=\"text-sm font-medium text-text-secondary\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </span>\n </label>\n )}\n {helperMessage && (\n <p\n id={helperId}\n className={cn(\n \"multiSelect_helper text-xs\",\n status === \"error\" && \"text-error\",\n status === \"warning\" && \"text-warning\",\n status === \"info\" && \"text-info\",\n status === \"success\" && \"text-success\",\n status === \"default\" && \"text-text-secondary\",\n classNames?.helper,\n )}\n data-slot=\"multiSelect_helper\"\n >\n {helperMessage}\n </p>\n )}\n </div>\n {selectElement}\n </div>\n );\n },\n);\n\nMultiSelect.displayName = \"MultiSelect\";\n\nexport type * from \"./types\";\nexport default MultiSelect;\n"]}
|
|
@@ -1,31 +1,12 @@
|
|
|
1
1
|
import { useMenuNavigation } from './chunk-NZHKNUGE.js';
|
|
2
2
|
import { useRipple, RippleContainer } from './chunk-4TEZWGX7.js';
|
|
3
|
+
import { colorVars } from './chunk-G6QIIWKU.js';
|
|
3
4
|
import { cn } from './chunk-RAS6HUEI.js';
|
|
4
5
|
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
5
|
-
import { ChevronRight } from 'lucide-react';
|
|
6
6
|
import { useRef, useMemo, useCallback, useEffect, useState } from 'react';
|
|
7
|
+
import { ChevronRight } from 'lucide-react';
|
|
7
8
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
8
9
|
|
|
9
|
-
var contextMenuHoverColorClasses = {
|
|
10
|
-
default: "hover:bg-surface focus-visible:bg-surface",
|
|
11
|
-
primary: "hover:bg-primary/10 hover:text-primary focus-visible:bg-primary/10 focus-visible:text-primary",
|
|
12
|
-
secondary: "hover:bg-secondary/10 hover:text-secondary focus-visible:bg-secondary/10 focus-visible:text-secondary",
|
|
13
|
-
accent: "hover:bg-accent/10 hover:text-accent focus-visible:bg-accent/10 focus-visible:text-accent",
|
|
14
|
-
success: "hover:bg-success/10 hover:text-success focus-visible:bg-success/10 focus-visible:text-success",
|
|
15
|
-
error: "hover:bg-error/10 hover:text-error focus-visible:bg-error/10 focus-visible:text-error",
|
|
16
|
-
warning: "hover:bg-warning/10 hover:text-warning focus-visible:bg-warning/10 focus-visible:text-warning",
|
|
17
|
-
info: "hover:bg-info/10 hover:text-info focus-visible:bg-info/10 focus-visible:text-info"
|
|
18
|
-
};
|
|
19
|
-
var contextMenuFocusedColorClasses = {
|
|
20
|
-
default: "bg-surface",
|
|
21
|
-
primary: "bg-primary/10 text-primary",
|
|
22
|
-
secondary: "bg-secondary/10 text-secondary",
|
|
23
|
-
accent: "bg-accent/10 text-accent",
|
|
24
|
-
success: "bg-success/10 text-success",
|
|
25
|
-
error: "bg-error/10 text-error",
|
|
26
|
-
warning: "bg-warning/10 text-warning",
|
|
27
|
-
info: "bg-info/10 text-info"
|
|
28
|
-
};
|
|
29
10
|
var ContextMenuItemDiv = ({ children, disabled, className, ...props }) => {
|
|
30
11
|
const { ripples, onPointerDown, onAnimationEnd } = useRipple(!disabled);
|
|
31
12
|
return /* @__PURE__ */ jsxs("div", { className: cn(className, "relative overflow-hidden"), onPointerDown, ...props, children: [
|
|
@@ -33,7 +14,7 @@ var ContextMenuItemDiv = ({ children, disabled, className, ...props }) => {
|
|
|
33
14
|
/* @__PURE__ */ jsx(RippleContainer, { ripples, onAnimationEnd })
|
|
34
15
|
] });
|
|
35
16
|
};
|
|
36
|
-
var ContextMenuSubMenu = ({ item, onClose, level, classNames, color = "default" }) => {
|
|
17
|
+
var ContextMenuSubMenu = ({ item, onClose, level, classNames, color = "default", openDelay = 200, closeDelay = 300 }) => {
|
|
37
18
|
const [isOpen, setIsOpen] = useState(false);
|
|
38
19
|
const hoverTimeoutRef = useRef(void 0);
|
|
39
20
|
const leaveTimeoutRef = useRef(void 0);
|
|
@@ -44,16 +25,16 @@ var ContextMenuSubMenu = ({ item, onClose, level, classNames, color = "default"
|
|
|
44
25
|
}
|
|
45
26
|
hoverTimeoutRef.current = setTimeout(() => {
|
|
46
27
|
setIsOpen(true);
|
|
47
|
-
},
|
|
48
|
-
}, [item.disabled]);
|
|
28
|
+
}, openDelay);
|
|
29
|
+
}, [item.disabled, openDelay]);
|
|
49
30
|
const handleMouseLeave = useCallback(() => {
|
|
50
31
|
if (hoverTimeoutRef.current) {
|
|
51
32
|
clearTimeout(hoverTimeoutRef.current);
|
|
52
33
|
}
|
|
53
34
|
leaveTimeoutRef.current = setTimeout(() => {
|
|
54
35
|
setIsOpen(false);
|
|
55
|
-
},
|
|
56
|
-
}, []);
|
|
36
|
+
}, closeDelay);
|
|
37
|
+
}, [closeDelay]);
|
|
57
38
|
const handleClick = useCallback(
|
|
58
39
|
(e) => {
|
|
59
40
|
if (!item.disabled && !item.children) {
|
|
@@ -93,7 +74,7 @@ var ContextMenuSubMenu = ({ item, onClose, level, classNames, color = "default"
|
|
|
93
74
|
disabled: !!item.disabled,
|
|
94
75
|
className: cn(
|
|
95
76
|
"contextMenu_item flex items-center justify-between gap-3 px-3 py-2 text-sm cursor-pointer rounded-sm transition-colors mx-1",
|
|
96
|
-
item.disabled ? "opacity-50 cursor-not-allowed" :
|
|
77
|
+
item.disabled ? "opacity-50 cursor-not-allowed" : "hover:bg-slot-10 hover:text-slot focus-visible:bg-slot-10 focus-visible:text-slot focus-visible:outline-none",
|
|
97
78
|
classNames?.item
|
|
98
79
|
),
|
|
99
80
|
onClick: handleClick,
|
|
@@ -161,6 +142,8 @@ var ContextMenuContent = ({
|
|
|
161
142
|
classNames,
|
|
162
143
|
style,
|
|
163
144
|
color = "default",
|
|
145
|
+
submenuOpenDelay,
|
|
146
|
+
submenuCloseDelay,
|
|
164
147
|
...props
|
|
165
148
|
}) => {
|
|
166
149
|
const menuRef = useRef(null);
|
|
@@ -207,6 +190,7 @@ var ContextMenuContent = ({
|
|
|
207
190
|
ref: menuRef,
|
|
208
191
|
className: cn(
|
|
209
192
|
"contextMenu_content min-w-[180px] rounded-md border border-border bg-background shadow-lg py-1",
|
|
193
|
+
colorVars[color],
|
|
210
194
|
level === 0 && "animate-in fade-in-0 zoom-in-95",
|
|
211
195
|
className,
|
|
212
196
|
classNames?.content
|
|
@@ -233,7 +217,7 @@ var ContextMenuContent = ({
|
|
|
233
217
|
);
|
|
234
218
|
}
|
|
235
219
|
if (item.children) {
|
|
236
|
-
return /* @__PURE__ */ jsx(ContextMenuSubMenu, { item, onClose, level, classNames, color }, item.key);
|
|
220
|
+
return /* @__PURE__ */ jsx(ContextMenuSubMenu, { item, onClose, level, classNames, color, openDelay: submenuOpenDelay, closeDelay: submenuCloseDelay }, item.key);
|
|
237
221
|
}
|
|
238
222
|
const isFocused = highlightedIndex === index;
|
|
239
223
|
return /* @__PURE__ */ jsxs(
|
|
@@ -242,8 +226,8 @@ var ContextMenuContent = ({
|
|
|
242
226
|
disabled: !!item.disabled,
|
|
243
227
|
className: cn(
|
|
244
228
|
"contextMenu_item flex items-center justify-between gap-3 px-3 py-2 text-sm cursor-pointer rounded-sm transition-colors mx-1",
|
|
245
|
-
item.disabled ? "opacity-50 cursor-not-allowed" :
|
|
246
|
-
isFocused && !item.disabled &&
|
|
229
|
+
item.disabled ? "opacity-50 cursor-not-allowed" : "hover:bg-slot-10 hover:text-slot focus-visible:bg-slot-10 focus-visible:text-slot focus-visible:outline-none",
|
|
230
|
+
isFocused && !item.disabled && "bg-slot-10 text-slot",
|
|
247
231
|
classNames?.item
|
|
248
232
|
),
|
|
249
233
|
onClick: () => {
|
|
@@ -299,7 +283,9 @@ var ContextMenu = ({
|
|
|
299
283
|
disabled = false,
|
|
300
284
|
onOpenChange,
|
|
301
285
|
open: controlledOpen,
|
|
302
|
-
color = "default"
|
|
286
|
+
color = "default",
|
|
287
|
+
submenuOpenDelay,
|
|
288
|
+
submenuCloseDelay
|
|
303
289
|
}) => {
|
|
304
290
|
const [internalOpen, setInternalOpen] = useState(false);
|
|
305
291
|
const [position, setPosition] = useState(null);
|
|
@@ -373,7 +359,7 @@ var ContextMenu = ({
|
|
|
373
359
|
onPointerDownOutside: handleClose,
|
|
374
360
|
onInteractOutside: handleClose,
|
|
375
361
|
className: "z-[var(--z-popover)]",
|
|
376
|
-
children: /* @__PURE__ */ jsx(ContextMenuContent, { items, onClose: handleClose, classNames, color })
|
|
362
|
+
children: /* @__PURE__ */ jsx(ContextMenuContent, { items, onClose: handleClose, classNames, color, submenuOpenDelay, submenuCloseDelay })
|
|
377
363
|
}
|
|
378
364
|
) })
|
|
379
365
|
] });
|
|
@@ -382,5 +368,5 @@ ContextMenu.displayName = "ContextMenu";
|
|
|
382
368
|
var context_menu_default = ContextMenu;
|
|
383
369
|
|
|
384
370
|
export { ContextMenu, ContextMenuContent, context_menu_default };
|
|
385
|
-
//# sourceMappingURL=chunk-
|
|
386
|
-
//# sourceMappingURL=chunk-
|
|
371
|
+
//# sourceMappingURL=chunk-Z3DIBMBQ.js.map
|
|
372
|
+
//# sourceMappingURL=chunk-Z3DIBMBQ.js.map
|