@vuer-ai/vuer-uikit 0.0.120 → 0.1.0
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 +28 -0
- package/dist/SyncScroll/SyncScroll.cjs +13 -13
- package/dist/SyncScroll/SyncScroll.mjs +6 -6
- package/dist/SyncScroll/index.cjs +13 -13
- package/dist/SyncScroll/index.mjs +6 -6
- package/dist/SyncScroll/useSyncScroll.d.cts +5 -5
- package/dist/SyncScroll/useSyncScroll.d.ts +5 -5
- package/dist/{chunk-42WQWP6X.cjs → chunk-22T2AL3G.cjs} +8 -8
- package/dist/{chunk-NMRFBO43.mjs → chunk-2IMCDH5J.mjs} +3 -3
- package/dist/{chunk-EOLUDKZ3.mjs → chunk-2J466BYZ.mjs} +26 -47
- package/dist/{chunk-LVIZRMYN.cjs → chunk-2KBNQ5PY.cjs} +2 -2
- package/dist/{chunk-S7CCCMMU.cjs → chunk-34NDAZS6.cjs} +18 -9
- package/dist/{chunk-DM43KZU7.cjs → chunk-3F3LBOQJ.cjs} +2 -2
- package/dist/chunk-3JMUI4R2.cjs +136 -0
- package/dist/{chunk-CWS5PF67.cjs → chunk-3UQ323EB.cjs} +8 -42
- package/dist/{chunk-QXFFRQ7E.mjs → chunk-44U6VC46.mjs} +543 -95
- package/dist/{chunk-JW456O5K.mjs → chunk-4FB6B2ES.mjs} +1 -1
- package/dist/{chunk-66NKH2SV.cjs → chunk-4FIP3EXW.cjs} +6 -6
- package/dist/chunk-4SI4QV5R.cjs +14 -0
- package/dist/{chunk-IAFCABPY.mjs → chunk-4W7JKZVN.mjs} +3 -2
- package/dist/{chunk-EEGQLTSQ.cjs → chunk-4WWGBRQV.cjs} +77 -0
- package/dist/chunk-4Y5IF7R5.mjs +322 -0
- package/dist/chunk-52GNIM6H.mjs +12 -0
- package/dist/{chunk-X6WOCNBX.cjs → chunk-57NITJN5.cjs} +2 -2
- package/dist/{chunk-LMYA5IOK.mjs → chunk-5GBMVMLS.mjs} +4 -4
- package/dist/{chunk-QWBMDS3S.cjs → chunk-5HT74RHB.cjs} +5 -5
- package/dist/{chunk-4ODJAEOM.mjs → chunk-5JYH7TXY.mjs} +1 -1
- package/dist/{chunk-2CD4D2BR.cjs → chunk-6CJWNYHL.cjs} +3 -3
- package/dist/{chunk-CRX2ZCM2.cjs → chunk-6LTCLQH3.cjs} +6 -1
- package/dist/{chunk-WKK5UX2W.mjs → chunk-6U6LRS37.mjs} +2 -2
- package/dist/{chunk-4OUQ6NSX.cjs → chunk-6VIKDPCD.cjs} +2 -2
- package/dist/{chunk-6D7FGGSX.cjs → chunk-753HUOAI.cjs} +26 -26
- package/dist/{chunk-LYGYXV7S.cjs → chunk-7ICRKPIO.cjs} +16 -16
- package/dist/chunk-7MKCWXNV.cjs +32 -0
- package/dist/{chunk-FMKD5JBL.mjs → chunk-7TD77VF4.mjs} +10 -6
- package/dist/{chunk-5ARBIWXX.cjs → chunk-7TXGEIV3.cjs} +10 -10
- package/dist/chunk-7WJ73FEI.mjs +43 -0
- package/dist/{chunk-SLXM4F24.cjs → chunk-7YFUNCKT.cjs} +9 -9
- package/dist/{chunk-LGFWHV23.cjs → chunk-ACGXE2IO.cjs} +2 -2
- package/dist/{chunk-IU65XB2K.cjs → chunk-AFALU3AK.cjs} +2 -2
- package/dist/{chunk-EGIIZWP3.mjs → chunk-AFR23IX6.mjs} +1 -1
- package/dist/{chunk-CXPF274N.mjs → chunk-BK77KKIM.mjs} +1 -1
- package/dist/{chunk-4PMXRQXC.cjs → chunk-BNXJ5VBE.cjs} +6 -6
- package/dist/{chunk-3DIFS7CO.mjs → chunk-BPCD4L7T.mjs} +1 -1
- package/dist/{chunk-JQYMF2FW.cjs → chunk-BSDIS4KS.cjs} +4 -4
- package/dist/{chunk-REZAPK6Z.mjs → chunk-BTGAKK3B.mjs} +1 -1
- package/dist/{chunk-TB5L3GBP.cjs → chunk-BXJTOIRR.cjs} +584 -133
- package/dist/{chunk-35ZN6IW7.mjs → chunk-BYZ7HIIK.mjs} +1 -1
- package/dist/{chunk-XS5IUI62.cjs → chunk-BZI74LKX.cjs} +3 -2
- package/dist/{chunk-2IS7TXTN.mjs → chunk-CENP2PIB.mjs} +1 -1
- package/dist/{chunk-SAXISARG.cjs → chunk-CMO3SLOU.cjs} +2 -2
- package/dist/{chunk-CIOLL5LX.mjs → chunk-CN6SZKJZ.mjs} +1 -1
- package/dist/chunk-CRY23RMB.mjs +30 -0
- package/dist/{chunk-7AAMQGY2.cjs → chunk-CYWVJ3HF.cjs} +7 -7
- package/dist/{chunk-EVBYVJTW.mjs → chunk-D2LUQKPM.mjs} +130 -91
- package/dist/chunk-DF7WIFZK.cjs +316 -0
- package/dist/chunk-DKLVWYTC.cjs +71 -0
- package/dist/chunk-DKWLF3KW.mjs +149 -0
- package/dist/{chunk-F2LEYFWW.cjs → chunk-DPJPOBUT.cjs} +5 -5
- package/dist/{chunk-SR3M2R3S.mjs → chunk-DSQPFXYL.mjs} +22 -24
- package/dist/chunk-DVUN6GQI.cjs +21 -0
- package/dist/{chunk-7ACZU3BT.mjs → chunk-EG6JETUN.mjs} +1 -1
- package/dist/{chunk-T4U3BG2V.mjs → chunk-EGJLY5VZ.mjs} +1 -1
- package/dist/{chunk-AE5YDMFT.mjs → chunk-EXM6QMNR.mjs} +3 -3
- package/dist/{chunk-H6JGIEAU.mjs → chunk-EYMZP5PL.mjs} +1 -1
- package/dist/{chunk-K2ZYSKRU.mjs → chunk-EZ536NLQ.mjs} +1 -1
- package/dist/chunk-FRM27RLN.cjs +264 -0
- package/dist/chunk-FTB337IJ.cjs +143 -0
- package/dist/{chunk-7A5EMDZH.mjs → chunk-G35PQKU5.mjs} +5 -5
- package/dist/{chunk-ZJSL6HSL.mjs → chunk-GAAP5JO4.mjs} +1 -1
- package/dist/chunk-GHQA7PER.mjs +107 -0
- package/dist/{chunk-ND3WJ63Z.cjs → chunk-GVRVRBDU.cjs} +2 -2
- package/dist/chunk-GZ2BG42R.mjs +34 -0
- package/dist/chunk-H3JRYX2U.mjs +19 -0
- package/dist/{chunk-T66ETI7E.mjs → chunk-HBEU2PU2.mjs} +6 -1
- package/dist/{chunk-SMXN2KOV.mjs → chunk-HGTL7DFT.mjs} +1 -1
- package/dist/{chunk-JFPIUDGT.mjs → chunk-HI4LO6IJ.mjs} +1 -1
- package/dist/{chunk-QO2AM6MF.mjs → chunk-HIDTQ4Z2.mjs} +1 -1
- package/dist/{chunk-DDU3SPCC.mjs → chunk-HNW2DRPV.mjs} +58 -9
- package/dist/{chunk-5AKVDZMA.cjs → chunk-HSUL5OUG.cjs} +14 -13
- package/dist/{chunk-EY6PKK4X.cjs → chunk-I2COLDHC.cjs} +2 -2
- package/dist/chunk-IAWMCOHS.cjs +45 -0
- package/dist/chunk-IM5QVMGO.cjs +2 -0
- package/dist/{chunk-UQQBUPGF.mjs → chunk-IPMWGCAI.mjs} +5 -21
- package/dist/{chunk-SCUMWMIN.mjs → chunk-ITOTSGSL.mjs} +1 -1
- package/dist/{chunk-NJWKR5WR.mjs → chunk-IYTGWOZY.mjs} +1 -1
- package/dist/chunk-J74A5LNZ.cjs +179 -0
- package/dist/{chunk-CKGEV2JL.cjs → chunk-JDEZ6NNG.cjs} +2 -2
- package/dist/chunk-JEWTYDLX.cjs +119 -0
- package/dist/{chunk-Q7WCKEXG.cjs → chunk-JF43YF6J.cjs} +3 -3
- package/dist/chunk-JTFQFULL.cjs +166 -0
- package/dist/{chunk-XQ3MWA3D.mjs → chunk-KXKUQSNY.mjs} +3 -3
- package/dist/chunk-L2AKG4VJ.mjs +258 -0
- package/dist/{chunk-ZCSJGDX7.mjs → chunk-L2DME42Q.mjs} +1 -1
- package/dist/{chunk-K2BQNNEX.cjs → chunk-L6W77P4B.cjs} +8 -8
- package/dist/{chunk-N4Y5CBOI.cjs → chunk-LGUQR5AR.cjs} +4 -4
- package/dist/{chunk-ZA7WOIIB.mjs → chunk-LHP7FLGK.mjs} +1 -1
- package/dist/{chunk-MYZHDWBF.mjs → chunk-LLFE3UHZ.mjs} +10 -10
- package/dist/{chunk-332A4MHC.mjs → chunk-LNYUFL3Q.mjs} +1 -1
- package/dist/{chunk-BUAWPPXA.cjs → chunk-MQ5DGLVE.cjs} +11 -11
- package/dist/{chunk-EXY6WRH4.mjs → chunk-N6KP2HIC.mjs} +2 -2
- package/dist/{chunk-V75PKBIV.cjs → chunk-NEJKCSS5.cjs} +9 -9
- package/dist/{chunk-KPGZOX2A.cjs → chunk-NHFIDL5X.cjs} +5 -5
- package/dist/{chunk-JNV3UBBP.cjs → chunk-NIACIZWY.cjs} +6 -22
- package/dist/{chunk-PC5DHSC4.mjs → chunk-NKUK73WB.mjs} +71 -1
- package/dist/{chunk-5OZS5UJX.cjs → chunk-NSPAT6XV.cjs} +7 -7
- package/dist/chunk-NUBFD3YP.mjs +117 -0
- package/dist/{chunk-4BQPIY5Z.mjs → chunk-O2NGB7YP.mjs} +1 -1
- package/dist/{chunk-7H7U2X45.cjs → chunk-O3DFVRON.cjs} +17 -13
- package/dist/chunk-O57DAVOQ.mjs +1 -0
- package/dist/{chunk-S37MJNNP.cjs → chunk-OCADGDGL.cjs} +2 -2
- package/dist/{chunk-ZSAPBZ36.mjs → chunk-OW653F7T.mjs} +1 -1
- package/dist/{chunk-GRXUYMZJ.cjs → chunk-OX5FXH6W.cjs} +4 -4
- package/dist/{chunk-GQYUSBSO.mjs → chunk-P3FBRYWH.mjs} +3 -10
- package/dist/{chunk-P3YSHGT5.mjs → chunk-P55DAW6H.mjs} +1 -1
- package/dist/{chunk-JOOURIX7.cjs → chunk-P6E4WLMD.cjs} +4 -4
- package/dist/{chunk-WDSOII5A.cjs → chunk-P7J7XHDE.cjs} +2 -2
- package/dist/chunk-PHRZ5JE6.mjs +1 -0
- package/dist/{chunk-F3HOBNGR.cjs → chunk-PMG3NZF5.cjs} +4 -4
- package/dist/chunk-PMYOKSO3.mjs +30 -0
- package/dist/chunk-PTUZYCOY.mjs +314 -0
- package/dist/{chunk-PV6CEMTT.cjs → chunk-PWZ4F3WY.cjs} +4 -4
- package/dist/{chunk-QBAZ6TKZ.cjs → chunk-PZZW3E5D.cjs} +2 -2
- package/dist/chunk-Q3UN25WC.mjs +141 -0
- package/dist/{chunk-MXGPFCLN.cjs → chunk-QS6WNNLM.cjs} +2 -2
- package/dist/{chunk-PR3BCKLJ.mjs → chunk-QSDYNIZB.mjs} +2 -1
- package/dist/{chunk-GTBXRWCK.cjs → chunk-QTLUPDLH.cjs} +8 -7
- package/dist/{chunk-BXZSWY4N.mjs → chunk-QYJZ5KA6.mjs} +1 -1
- package/dist/{chunk-JYYAGDLZ.cjs → chunk-R22VW3EK.cjs} +2 -2
- package/dist/{chunk-NKGUQZTD.cjs → chunk-RHVKIZMQ.cjs} +2 -2
- package/dist/{chunk-U22YVR7M.mjs → chunk-RLY4A3IY.mjs} +15 -6
- package/dist/{chunk-OJOWMXXY.mjs → chunk-RR76Z6OK.mjs} +3 -3
- package/dist/{chunk-D562KO2I.mjs → chunk-RWHVZM2B.mjs} +2 -2
- package/dist/chunk-S4C7HO32.cjs +36 -0
- package/dist/chunk-SBAVMK7J.cjs +181 -0
- package/dist/{chunk-DAVMLI3P.cjs → chunk-SNUQOJLK.cjs} +4 -4
- package/dist/{chunk-KY2PYKDZ.mjs → chunk-SO5KFX2C.mjs} +1 -1
- package/dist/{chunk-HB65PF7F.cjs → chunk-SOHGIAGF.cjs} +2 -2
- package/dist/{chunk-RW4T7UBU.cjs → chunk-STJMH4NX.cjs} +3 -3
- package/dist/{chunk-VYINXXYX.cjs → chunk-SUWJDU3Y.cjs} +59 -61
- package/dist/chunk-T2BDPMCF.cjs +358 -0
- package/dist/{chunk-U5W4ZALG.cjs → chunk-T2OAWYOU.cjs} +6 -6
- package/dist/{chunk-Q7VP2WSX.mjs → chunk-TCCFFSXM.mjs} +29 -12
- package/dist/{chunk-PRNBDGOF.cjs → chunk-THE6FZKP.cjs} +29 -49
- package/dist/{chunk-RGOZPSTI.mjs → chunk-TMBHKVKH.mjs} +1 -1
- package/dist/chunk-TQOGGHSJ.mjs +23 -0
- package/dist/{chunk-VTW2DF63.mjs → chunk-TWDDNHRP.mjs} +1 -1
- package/dist/{chunk-DDIB73SZ.mjs → chunk-UB3ELCFR.mjs} +4 -4
- package/dist/{chunk-XTLGNJIO.mjs → chunk-UBGNADCN.mjs} +1 -1
- package/dist/chunk-UCAIVC2B.cjs +32 -0
- package/dist/chunk-UEHPZIQB.cjs +2 -0
- package/dist/{chunk-ASZIBFA6.cjs → chunk-UZTOUPJ7.cjs} +131 -92
- package/dist/{chunk-3NIMV5PH.mjs → chunk-V4THHKSO.mjs} +1 -1
- package/dist/{chunk-G5VBLDAM.mjs → chunk-VBEVJE7Q.mjs} +1 -1
- package/dist/chunk-VDYJAOMN.mjs +177 -0
- package/dist/{chunk-64VVW5YR.mjs → chunk-VLNU7Y2K.mjs} +8 -43
- package/dist/{chunk-ZS7ESTKH.cjs → chunk-VT6E2N6C.cjs} +8 -12
- package/dist/{chunk-OLYHHP67.mjs → chunk-VWLZKPDB.mjs} +6 -5
- package/dist/{chunk-UMGNAR3W.cjs → chunk-W22SQYEO.cjs} +8 -8
- package/dist/{chunk-VWVYCQWF.mjs → chunk-WBM7ATPT.mjs} +1 -1
- package/dist/{chunk-CH3BSVL4.cjs → chunk-WGY33IHV.cjs} +2 -2
- package/dist/{chunk-DAA2GQAS.cjs → chunk-WRJAYU2L.cjs} +27 -27
- package/dist/{chunk-7AEOJFD4.cjs → chunk-WX3VWVWD.cjs} +2 -2
- package/dist/{chunk-EBFPZBUQ.cjs → chunk-WYUJM72T.cjs} +7 -7
- package/dist/{chunk-EK3BTKZP.cjs → chunk-WZQ2BT3P.cjs} +142 -26
- package/dist/{chunk-KR7VBV3B.cjs → chunk-XIDCYS6G.cjs} +2 -1
- package/dist/{chunk-WHV6Z7YX.mjs → chunk-XIESS6HW.mjs} +1 -1
- package/dist/{chunk-UIJEAY6H.mjs → chunk-XTZURZIR.mjs} +1 -1
- package/dist/{chunk-7AZ3PLUC.mjs → chunk-XZLQHASB.mjs} +1 -1
- package/dist/{chunk-SRZ56OJH.mjs → chunk-XZTEU7ME.mjs} +3 -3
- package/dist/{chunk-RLTLA7VS.mjs → chunk-Y2IIKDRY.mjs} +1 -1
- package/dist/chunk-YDF6VWBW.cjs +151 -0
- package/dist/{chunk-CR6JOOO3.cjs → chunk-YGZHBIZP.cjs} +3 -10
- package/dist/{chunk-TWQONYWC.mjs → chunk-YMMSHGYC.mjs} +1 -1
- package/dist/chunk-YQL6JDVP.cjs +21 -0
- package/dist/{chunk-Q37KC3CL.mjs → chunk-YRNI7ZJ7.mjs} +134 -18
- package/dist/{chunk-3ZEQVODC.cjs → chunk-ZAK7AFVY.cjs} +2 -2
- package/dist/{chunk-W3IHFG4B.cjs → chunk-ZG33TW5I.cjs} +8 -8
- package/dist/{chunk-FK6ZROZE.mjs → chunk-ZJYPKTF4.mjs} +2 -1
- package/dist/chunk-ZMRODJ3I.mjs +149 -0
- package/dist/{chunk-AHD46BFN.mjs → chunk-ZQOQB6GF.mjs} +1 -1
- package/dist/dial/DialPanel.cjs +104 -92
- package/dist/dial/DialPanel.d.cts +5 -5
- package/dist/dial/DialPanel.d.ts +5 -5
- package/dist/dial/DialPanel.mjs +103 -91
- package/dist/dial/DialProvider.d.cts +16 -51
- package/dist/dial/DialProvider.d.ts +16 -51
- package/dist/dial/IconRenderer.d.cts +2 -2
- package/dist/dial/IconRenderer.d.ts +2 -2
- package/dist/dial/components/DialButton.cjs +22 -0
- package/dist/dial/components/DialButton.d.cts +28 -0
- package/dist/dial/components/DialButton.d.ts +28 -0
- package/dist/dial/components/DialButton.mjs +13 -0
- package/dist/dial/components/DialCustom.cjs +11 -0
- package/dist/dial/components/DialCustom.d.cts +34 -0
- package/dist/dial/components/DialCustom.d.ts +34 -0
- package/dist/dial/components/DialCustom.mjs +2 -0
- package/dist/dial/components/index.cjs +29 -0
- package/dist/dial/components/index.d.cts +4 -0
- package/dist/dial/components/index.d.ts +4 -0
- package/dist/dial/components/index.mjs +16 -0
- package/dist/dial/index.cjs +128 -108
- package/dist/dial/index.d.cts +5 -1
- package/dist/dial/index.d.ts +5 -1
- package/dist/dial/index.mjs +103 -91
- package/dist/dial/types.cjs +4 -0
- package/dist/dial/types.d.cts +21 -0
- package/dist/dial/types.d.ts +21 -0
- package/dist/dial/types.mjs +1 -0
- package/dist/dial/wrapped-inputs/ControlledInputs.cjs +108 -96
- package/dist/dial/wrapped-inputs/ControlledInputs.d.cts +8 -8
- package/dist/dial/wrapped-inputs/ControlledInputs.d.ts +8 -8
- package/dist/dial/wrapped-inputs/ControlledInputs.mjs +103 -91
- package/dist/dial/wrapped-inputs/DialArrayInput.cjs +139 -0
- package/dist/dial/wrapped-inputs/DialArrayInput.d.cts +20 -0
- package/dist/dial/wrapped-inputs/DialArrayInput.d.ts +20 -0
- package/dist/dial/wrapped-inputs/DialArrayInput.mjs +130 -0
- package/dist/dial/wrapped-inputs/DialInputs.cjs +117 -105
- package/dist/dial/wrapped-inputs/DialInputs.d.cts +19 -17
- package/dist/dial/wrapped-inputs/DialInputs.d.ts +19 -17
- package/dist/dial/wrapped-inputs/DialInputs.mjs +103 -91
- package/dist/dial/wrapped-inputs/DialInterfaceInput.cjs +139 -0
- package/dist/dial/wrapped-inputs/DialInterfaceInput.d.cts +13 -0
- package/dist/dial/wrapped-inputs/DialInterfaceInput.d.ts +13 -0
- package/dist/dial/wrapped-inputs/DialInterfaceInput.mjs +130 -0
- package/dist/dial/wrapped-inputs/DialPresetsInput.cjs +94 -86
- package/dist/dial/wrapped-inputs/DialPresetsInput.d.cts +4 -4
- package/dist/dial/wrapped-inputs/DialPresetsInput.d.ts +4 -4
- package/dist/dial/wrapped-inputs/DialPresetsInput.mjs +93 -85
- package/dist/dial/wrapped-inputs/DialTupleInput.cjs +139 -0
- package/dist/dial/wrapped-inputs/DialTupleInput.d.cts +18 -0
- package/dist/dial/wrapped-inputs/DialTupleInput.d.ts +18 -0
- package/dist/dial/wrapped-inputs/DialTupleInput.mjs +130 -0
- package/dist/dial/wrapped-inputs/DialVectorInput.cjs +104 -92
- package/dist/dial/wrapped-inputs/DialVectorInput.d.cts +2 -2
- package/dist/dial/wrapped-inputs/DialVectorInput.d.ts +2 -2
- package/dist/dial/wrapped-inputs/DialVectorInput.mjs +103 -91
- package/dist/dial/wrapped-inputs/index.cjs +132 -112
- package/dist/dial/wrapped-inputs/index.d.cts +4 -2
- package/dist/dial/wrapped-inputs/index.d.ts +4 -2
- package/dist/dial/wrapped-inputs/index.mjs +103 -91
- package/dist/highlight-cursor/cursor-context.d.cts +2 -2
- package/dist/highlight-cursor/cursor-context.d.ts +2 -2
- package/dist/highlight-cursor/cursor-provider.cjs +3 -3
- package/dist/highlight-cursor/cursor-provider.d.cts +1 -1
- package/dist/highlight-cursor/cursor-provider.d.ts +1 -1
- package/dist/highlight-cursor/cursor-provider.mjs +2 -2
- package/dist/highlight-cursor/enhanced-components.cjs +16 -16
- package/dist/highlight-cursor/enhanced-components.d.cts +4 -4
- package/dist/highlight-cursor/enhanced-components.d.ts +4 -4
- package/dist/highlight-cursor/enhanced-components.mjs +11 -11
- package/dist/highlight-cursor/index.cjs +21 -21
- package/dist/highlight-cursor/index.mjs +12 -12
- package/dist/highlight-cursor/types.d.cts +2 -1
- package/dist/highlight-cursor/types.d.ts +2 -1
- package/dist/highlight-cursor/with-cursor.d.cts +2 -2
- package/dist/highlight-cursor/with-cursor.d.ts +2 -2
- package/dist/hooks/clientOnly.d.cts +4 -4
- package/dist/hooks/clientOnly.d.ts +4 -4
- package/dist/hooks/cn.cjs +2 -2
- package/dist/hooks/cn.mjs +1 -1
- package/dist/hooks/index.cjs +22 -22
- package/dist/hooks/index.mjs +5 -5
- package/dist/hooks/useIsMobile.cjs +2 -2
- package/dist/hooks/useIsMobile.mjs +1 -1
- package/dist/index.cjs +587 -407
- package/dist/index.css +13 -76
- package/dist/index.d.cts +20 -6
- package/dist/index.d.ts +20 -6
- package/dist/index.mjs +103 -91
- package/dist/schema-types-D9b7Dc1G.d.cts +163 -0
- package/dist/schema-types-D9b7Dc1G.d.ts +163 -0
- package/dist/styles/theme.css +1 -1
- package/dist/ui/DialBadge.cjs +10 -10
- package/dist/ui/DialBadge.mjs +6 -6
- package/dist/ui/UIKitBadge.cjs +10 -10
- package/dist/ui/UIKitBadge.mjs +6 -6
- package/dist/ui/alert-dialog.cjs +60 -0
- package/dist/ui/alert-dialog.d.cts +17 -0
- package/dist/ui/alert-dialog.d.ts +17 -0
- package/dist/ui/alert-dialog.mjs +11 -0
- package/dist/ui/avatar.cjs +10 -10
- package/dist/ui/avatar.d.cts +2 -2
- package/dist/ui/avatar.d.ts +2 -2
- package/dist/ui/avatar.mjs +6 -6
- package/dist/ui/badge.cjs +8 -8
- package/dist/ui/badge.d.cts +2 -2
- package/dist/ui/badge.d.ts +2 -2
- package/dist/ui/badge.mjs +6 -6
- package/dist/ui/button.cjs +8 -8
- package/dist/ui/button.d.cts +3 -3
- package/dist/ui/button.d.ts +3 -3
- package/dist/ui/button.mjs +6 -6
- package/dist/ui/card.cjs +14 -13
- package/dist/ui/card.d.cts +14 -2
- package/dist/ui/card.d.ts +14 -2
- package/dist/ui/card.mjs +7 -6
- package/dist/ui/checkbox.cjs +7 -7
- package/dist/ui/checkbox.mjs +6 -6
- package/dist/ui/collapsible.cjs +9 -9
- package/dist/ui/collapsible.mjs +6 -6
- package/dist/ui/context-menu.cjs +76 -0
- package/dist/ui/context-menu.d.cts +28 -0
- package/dist/ui/context-menu.d.ts +28 -0
- package/dist/ui/context-menu.mjs +11 -0
- package/dist/ui/drag-selectable/createSelectable.d.cts +2 -2
- package/dist/ui/drag-selectable/createSelectable.d.ts +2 -2
- package/dist/ui/drawer.cjs +16 -16
- package/dist/ui/drawer.d.cts +11 -11
- package/dist/ui/drawer.d.ts +11 -11
- package/dist/ui/drawer.mjs +6 -6
- package/dist/ui/dropdown.cjs +21 -21
- package/dist/ui/dropdown.mjs +6 -6
- package/dist/ui/index.cjs +485 -317
- package/dist/ui/index.d.cts +15 -5
- package/dist/ui/index.d.ts +15 -5
- package/dist/ui/index.mjs +90 -82
- package/dist/ui/inputs/color-input.cjs +8 -8
- package/dist/ui/inputs/color-input.d.cts +7 -3
- package/dist/ui/inputs/color-input.d.ts +7 -3
- package/dist/ui/inputs/color-input.mjs +7 -7
- package/dist/ui/inputs/index.cjs +56 -56
- package/dist/ui/inputs/index.mjs +25 -25
- package/dist/ui/inputs/input-numbers.cjs +8 -8
- package/dist/ui/inputs/input-numbers.d.cts +7 -3
- package/dist/ui/inputs/input-numbers.d.ts +7 -3
- package/dist/ui/inputs/input-numbers.mjs +7 -7
- package/dist/ui/inputs/input.cjs +9 -9
- package/dist/ui/inputs/input.d.cts +4 -4
- package/dist/ui/inputs/input.d.ts +4 -4
- package/dist/ui/inputs/input.mjs +6 -6
- package/dist/ui/inputs/number-inputs/CmInput.cjs +9 -9
- package/dist/ui/inputs/number-inputs/CmInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/CmInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/CmInput.mjs +8 -8
- package/dist/ui/inputs/number-inputs/DegInput.cjs +9 -9
- package/dist/ui/inputs/number-inputs/DegInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/DegInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/DegInput.mjs +8 -8
- package/dist/ui/inputs/number-inputs/EulerDegInput.cjs +11 -11
- package/dist/ui/inputs/number-inputs/EulerDegInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/EulerDegInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/EulerDegInput.mjs +10 -10
- package/dist/ui/inputs/number-inputs/EulerInput.cjs +10 -10
- package/dist/ui/inputs/number-inputs/EulerInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/EulerInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/EulerInput.mjs +9 -9
- package/dist/ui/inputs/number-inputs/EulerRadInput.cjs +10 -10
- package/dist/ui/inputs/number-inputs/EulerRadInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/EulerRadInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/EulerRadInput.mjs +9 -9
- package/dist/ui/inputs/number-inputs/InchInput.cjs +9 -9
- package/dist/ui/inputs/number-inputs/InchInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/InchInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/InchInput.mjs +8 -8
- package/dist/ui/inputs/number-inputs/IntInput.cjs +9 -9
- package/dist/ui/inputs/number-inputs/IntInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/IntInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/IntInput.mjs +8 -8
- package/dist/ui/inputs/number-inputs/KVectorInput.cjs +10 -10
- package/dist/ui/inputs/number-inputs/KVectorInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/KVectorInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/KVectorInput.mjs +9 -9
- package/dist/ui/inputs/number-inputs/QuaternionInput.cjs +10 -10
- package/dist/ui/inputs/number-inputs/QuaternionInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/QuaternionInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/QuaternionInput.mjs +9 -9
- package/dist/ui/inputs/number-inputs/RadInput.cjs +9 -9
- package/dist/ui/inputs/number-inputs/RadInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/RadInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/RadInput.mjs +8 -8
- package/dist/ui/inputs/number-inputs/TimeInput.cjs +9 -9
- package/dist/ui/inputs/number-inputs/TimeInput.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/TimeInput.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/TimeInput.mjs +8 -8
- package/dist/ui/inputs/number-inputs/Vec3Input.cjs +10 -10
- package/dist/ui/inputs/number-inputs/Vec3Input.d.cts +2 -2
- package/dist/ui/inputs/number-inputs/Vec3Input.d.ts +2 -2
- package/dist/ui/inputs/number-inputs/Vec3Input.mjs +9 -9
- package/dist/ui/inputs/number-inputs/VectorInput.cjs +9 -9
- package/dist/ui/inputs/number-inputs/VectorInput.d.cts +4 -2
- package/dist/ui/inputs/number-inputs/VectorInput.d.ts +4 -2
- package/dist/ui/inputs/number-inputs/VectorInput.mjs +8 -8
- package/dist/ui/inputs/number-inputs/index.cjs +42 -42
- package/dist/ui/inputs/number-inputs/index.mjs +20 -20
- package/dist/ui/inputs/presets-input.cjs +10 -10
- package/dist/ui/inputs/presets-input.d.cts +2 -2
- package/dist/ui/inputs/presets-input.d.ts +2 -2
- package/dist/ui/inputs/presets-input.mjs +9 -9
- package/dist/ui/inputs/presets-rad-input.cjs +11 -11
- package/dist/ui/inputs/presets-rad-input.d.cts +2 -2
- package/dist/ui/inputs/presets-rad-input.d.ts +2 -2
- package/dist/ui/inputs/presets-rad-input.mjs +10 -10
- package/dist/ui/inputs/text-input.cjs +8 -8
- package/dist/ui/inputs/text-input.d.cts +2 -2
- package/dist/ui/inputs/text-input.d.ts +2 -2
- package/dist/ui/inputs/text-input.mjs +7 -7
- package/dist/ui/label.cjs +7 -7
- package/dist/ui/label.d.cts +4 -4
- package/dist/ui/label.d.ts +4 -4
- package/dist/ui/label.mjs +6 -6
- package/dist/ui/layout.cjs +7 -7
- package/dist/ui/layout.mjs +6 -6
- package/dist/ui/layouts/dock-layout/DockLayoutView.cjs +8 -8
- package/dist/ui/layouts/dock-layout/DockLayoutView.d.cts +2 -1
- package/dist/ui/layouts/dock-layout/DockLayoutView.d.ts +2 -1
- package/dist/ui/layouts/dock-layout/DockLayoutView.mjs +7 -7
- package/dist/ui/layouts/dock-layout/LayoutSlots.cjs +12 -12
- package/dist/ui/layouts/dock-layout/LayoutSlots.d.cts +3 -3
- package/dist/ui/layouts/dock-layout/LayoutSlots.d.ts +3 -3
- package/dist/ui/layouts/dock-layout/LayoutSlots.mjs +6 -6
- package/dist/ui/layouts/dock-layout/index.cjs +14 -14
- package/dist/ui/layouts/dock-layout/index.mjs +7 -7
- package/dist/ui/layouts/index.cjs +20 -20
- package/dist/ui/layouts/index.mjs +9 -9
- package/dist/ui/layouts/liquid-layout/LayoutSlots.cjs +12 -12
- package/dist/ui/layouts/liquid-layout/LayoutSlots.mjs +6 -6
- package/dist/ui/layouts/liquid-layout/LiquidLayoutView.cjs +8 -8
- package/dist/ui/layouts/liquid-layout/LiquidLayoutView.d.cts +13 -1
- package/dist/ui/layouts/liquid-layout/LiquidLayoutView.d.ts +13 -1
- package/dist/ui/layouts/liquid-layout/LiquidLayoutView.mjs +7 -7
- package/dist/ui/layouts/liquid-layout/index.cjs +8 -8
- package/dist/ui/layouts/liquid-layout/index.mjs +7 -7
- package/dist/ui/modal.cjs +16 -16
- package/dist/ui/modal.mjs +6 -6
- package/dist/ui/navigation.cjs +8 -8
- package/dist/ui/navigation.d.cts +2 -2
- package/dist/ui/navigation.d.ts +2 -2
- package/dist/ui/navigation.mjs +7 -7
- package/dist/ui/pagination.cjs +14 -14
- package/dist/ui/pagination.mjs +7 -7
- package/dist/ui/popover.cjs +14 -10
- package/dist/ui/popover.d.cts +18 -8
- package/dist/ui/popover.d.ts +18 -8
- package/dist/ui/popover.mjs +6 -6
- package/dist/ui/progress.cjs +7 -7
- package/dist/ui/progress.d.cts +1 -1
- package/dist/ui/progress.d.ts +1 -1
- package/dist/ui/progress.mjs +6 -6
- package/dist/ui/radio-group.cjs +8 -8
- package/dist/ui/radio-group.mjs +6 -6
- package/dist/ui/resizable.cjs +9 -9
- package/dist/ui/resizable.d.cts +2 -2
- package/dist/ui/resizable.d.ts +2 -2
- package/dist/ui/resizable.mjs +6 -6
- package/dist/ui/select.cjs +17 -17
- package/dist/ui/select.d.cts +3 -2
- package/dist/ui/select.d.ts +3 -2
- package/dist/ui/select.mjs +6 -6
- package/dist/ui/separator.cjs +7 -7
- package/dist/ui/separator.mjs +6 -6
- package/dist/ui/sheet.cjs +14 -14
- package/dist/ui/sheet.d.cts +26 -13
- package/dist/ui/sheet.d.ts +26 -13
- package/dist/ui/sheet.mjs +6 -6
- package/dist/ui/sidebar.cjs +36 -36
- package/dist/ui/sidebar.mjs +12 -12
- package/dist/ui/simple-tree-view.cjs +7 -7
- package/dist/ui/simple-tree-view.d.cts +2 -2
- package/dist/ui/simple-tree-view.d.ts +2 -2
- package/dist/ui/simple-tree-view.mjs +6 -6
- package/dist/ui/skeleton.cjs +7 -7
- package/dist/ui/skeleton.mjs +6 -6
- package/dist/ui/slider.cjs +7 -7
- package/dist/ui/slider.d.cts +2 -2
- package/dist/ui/slider.d.ts +2 -2
- package/dist/ui/slider.mjs +6 -6
- package/dist/ui/switch.cjs +7 -7
- package/dist/ui/switch.d.cts +4 -1
- package/dist/ui/switch.d.ts +4 -1
- package/dist/ui/switch.mjs +6 -6
- package/dist/ui/table.cjs +14 -14
- package/dist/ui/table.d.cts +9 -9
- package/dist/ui/table.d.ts +9 -9
- package/dist/ui/table.mjs +6 -6
- package/dist/ui/tabs.cjs +14 -10
- package/dist/ui/tabs.d.cts +25 -7
- package/dist/ui/tabs.d.ts +25 -7
- package/dist/ui/tabs.mjs +6 -6
- package/dist/ui/textarea.cjs +7 -7
- package/dist/ui/textarea.d.cts +1 -1
- package/dist/ui/textarea.d.ts +1 -1
- package/dist/ui/textarea.mjs +6 -6
- package/dist/ui/theme/ThemeProvider.cjs +15 -15
- package/dist/ui/theme/ThemeProvider.d.cts +3 -3
- package/dist/ui/theme/ThemeProvider.d.ts +3 -3
- package/dist/ui/theme/ThemeProvider.mjs +1 -1
- package/dist/ui/theme/ThemeToggles.cjs +11 -11
- package/dist/ui/theme/ThemeToggles.d.cts +18 -3
- package/dist/ui/theme/ThemeToggles.d.ts +18 -3
- package/dist/ui/theme/ThemeToggles.mjs +9 -9
- package/dist/ui/theme/index.cjs +15 -15
- package/dist/ui/theme/index.mjs +9 -9
- package/dist/ui/theme/themeScript.d.cts +2 -2
- package/dist/ui/theme/themeScript.d.ts +2 -2
- package/dist/ui/toast.cjs +19 -3
- package/dist/ui/toast.d.cts +1 -1
- package/dist/ui/toast.d.ts +1 -1
- package/dist/ui/toast.mjs +17 -1
- package/dist/ui/toggle-buttons.cjs +11 -11
- package/dist/ui/toggle-buttons.d.cts +7 -7
- package/dist/ui/toggle-buttons.d.ts +7 -7
- package/dist/ui/toggle-buttons.mjs +6 -6
- package/dist/ui/toggle-group.cjs +9 -9
- package/dist/ui/toggle-group.d.cts +3 -3
- package/dist/ui/toggle-group.d.ts +3 -3
- package/dist/ui/toggle-group.mjs +6 -6
- package/dist/ui/toggle.cjs +8 -8
- package/dist/ui/toggle.mjs +6 -6
- package/dist/ui/toolbar.cjs +9 -9
- package/dist/ui/toolbar.mjs +6 -6
- package/dist/ui/tooltip.cjs +10 -10
- package/dist/ui/tooltip.d.cts +2 -2
- package/dist/ui/tooltip.d.ts +2 -2
- package/dist/ui/tooltip.mjs +6 -6
- package/dist/ui/tree-view/TreeSearchBar.cjs +9 -9
- package/dist/ui/tree-view/TreeSearchBar.mjs +8 -8
- package/dist/ui/tree-view/TreeView.cjs +10 -8
- package/dist/ui/tree-view/TreeView.d.cts +12 -6
- package/dist/ui/tree-view/TreeView.d.ts +12 -6
- package/dist/ui/tree-view/TreeView.mjs +8 -6
- package/dist/ui/tree-view/hooks.cjs +31 -3
- package/dist/ui/tree-view/hooks.d.cts +33 -1
- package/dist/ui/tree-view/hooks.d.ts +33 -1
- package/dist/ui/tree-view/hooks.mjs +1 -1
- package/dist/ui/tree-view/index.cjs +49 -20
- package/dist/ui/tree-view/index.d.cts +1 -1
- package/dist/ui/tree-view/index.d.ts +1 -1
- package/dist/ui/tree-view/index.mjs +11 -10
- package/dist/ui/tree-view/types.d.cts +1 -0
- package/dist/ui/tree-view/types.d.ts +1 -0
- package/dist/ui/tree-view-legacy.cjs +13 -13
- package/dist/ui/tree-view-legacy.mjs +9 -9
- package/dist/ui/virtual-grid/VirtualGrid.cjs +21 -0
- package/dist/ui/virtual-grid/VirtualGrid.d.cts +10 -0
- package/dist/ui/virtual-grid/VirtualGrid.d.ts +10 -0
- package/dist/ui/virtual-grid/VirtualGrid.mjs +12 -0
- package/dist/ui/virtual-grid/index.cjs +26 -0
- package/dist/ui/virtual-grid/index.d.cts +4 -0
- package/dist/ui/virtual-grid/index.d.ts +4 -0
- package/dist/ui/virtual-grid/index.mjs +13 -0
- package/dist/ui/virtual-grid/types.cjs +2 -0
- package/dist/ui/virtual-grid/types.d.cts +70 -0
- package/dist/ui/virtual-grid/types.d.ts +70 -0
- package/dist/ui/virtual-grid/types.mjs +1 -0
- package/dist/ui/virtual-grid/useVirtualGrid.cjs +10 -0
- package/dist/ui/virtual-grid/useVirtualGrid.d.cts +9 -0
- package/dist/ui/virtual-grid/useVirtualGrid.d.ts +9 -0
- package/dist/ui/virtual-grid/useVirtualGrid.mjs +1 -0
- package/dist/ui/virtual-list/VirtualList.cjs +21 -0
- package/dist/ui/virtual-list/VirtualList.d.cts +10 -0
- package/dist/ui/virtual-list/VirtualList.d.ts +10 -0
- package/dist/ui/virtual-list/VirtualList.mjs +12 -0
- package/dist/ui/virtual-list/index.cjs +26 -0
- package/dist/ui/virtual-list/index.d.cts +4 -0
- package/dist/ui/virtual-list/index.d.ts +4 -0
- package/dist/ui/virtual-list/index.mjs +13 -0
- package/dist/ui/virtual-list/types.cjs +2 -0
- package/dist/ui/virtual-list/types.d.cts +54 -0
- package/dist/ui/virtual-list/types.d.ts +54 -0
- package/dist/ui/virtual-list/types.mjs +1 -0
- package/dist/ui/virtual-list/useVirtualList.cjs +10 -0
- package/dist/ui/virtual-list/useVirtualList.d.cts +9 -0
- package/dist/ui/virtual-list/useVirtualList.d.ts +9 -0
- package/dist/ui/virtual-list/useVirtualList.mjs +1 -0
- package/dist/ui/waterfall/CursorOverlay.cjs +7 -7
- package/dist/ui/waterfall/CursorOverlay.mjs +6 -6
- package/dist/ui/waterfall/NavigationControls.d.cts +2 -2
- package/dist/ui/waterfall/NavigationControls.d.ts +2 -2
- package/dist/ui/waterfall/TimelineEvent.cjs +7 -7
- package/dist/ui/waterfall/TimelineEvent.mjs +6 -6
- package/dist/ui/waterfall/TimelineProcessBar.cjs +7 -7
- package/dist/ui/waterfall/TimelineProcessBar.mjs +6 -6
- package/dist/ui/waterfall/Wedges.cjs +8 -8
- package/dist/ui/waterfall/Wedges.mjs +6 -6
- package/dist/ui/waterfall/WheelZoomContext.d.cts +2 -2
- package/dist/ui/waterfall/WheelZoomContext.d.ts +2 -2
- package/dist/ui/waterfall/hooks/useTimelineState.d.cts +4 -3
- package/dist/ui/waterfall/hooks/useTimelineState.d.ts +4 -3
- package/dist/ui/waterfall/hooks/useViewport.d.cts +4 -4
- package/dist/ui/waterfall/hooks/useViewport.d.ts +4 -4
- package/dist/ui/waterfall/index.cjs +20 -19
- package/dist/ui/waterfall/index.d.cts +2 -2
- package/dist/ui/waterfall/index.d.ts +2 -2
- package/dist/ui/waterfall/index.mjs +19 -18
- package/package.json +6 -9
- package/src/dial/DialPanel.tsx +167 -30
- package/src/dial/DialProvider.tsx +20 -68
- package/src/dial/components/DialButton.tsx +52 -0
- package/src/dial/components/DialCustom.tsx +45 -0
- package/src/dial/components/index.ts +3 -0
- package/src/dial/index.ts +11 -6
- package/src/dial/types.ts +32 -0
- package/src/dial/wrapped-inputs/ControlledInputs.tsx +22 -16
- package/src/dial/wrapped-inputs/DialArrayInput.tsx +175 -0
- package/src/dial/wrapped-inputs/DialInputs.tsx +119 -23
- package/src/dial/wrapped-inputs/DialInterfaceInput.tsx +80 -0
- package/src/dial/wrapped-inputs/DialPresetsInput.tsx +4 -3
- package/src/dial/wrapped-inputs/DialTupleInput.tsx +102 -0
- package/src/dial/wrapped-inputs/DialVectorInput.tsx +11 -21
- package/src/dial/wrapped-inputs/index.ts +6 -0
- package/src/highlight-cursor/cursor-provider.tsx +279 -131
- package/src/highlight-cursor/types.ts +2 -1
- package/src/hooks/cn.ts +5 -0
- package/src/hooks/useIsMobile.ts +14 -30
- package/src/index.css +0 -1
- package/src/styles/theme.css +2 -2
- package/src/ui/DialBadge.tsx +7 -5
- package/src/ui/alert-dialog.tsx +168 -0
- package/src/ui/badge.tsx +1 -0
- package/src/ui/card.tsx +76 -8
- package/src/ui/context-menu.tsx +358 -0
- package/src/ui/index.ts +6 -0
- package/src/ui/inputs/color-input.tsx +92 -8
- package/src/ui/inputs/input-numbers.tsx +148 -92
- package/src/ui/inputs/number-inputs/EulerRadInput.tsx +43 -42
- package/src/ui/inputs/number-inputs/VectorInput.tsx +2 -1
- package/src/ui/inputs/presets-rad-input.tsx +5 -2
- package/src/ui/inputs/text-input.tsx +1 -1
- package/src/ui/layouts/dock-layout/DockLayoutView.tsx +15 -4
- package/src/ui/layouts/dock-layout/LayoutSlots.tsx +14 -5
- package/src/ui/layouts/liquid-layout/LiquidLayoutView.tsx +44 -5
- package/src/ui/popover.tsx +10 -49
- package/src/ui/progress.tsx +7 -14
- package/src/ui/select.tsx +5 -2
- package/src/ui/separator.tsx +1 -1
- package/src/ui/sheet.tsx +14 -116
- package/src/ui/sidebar.tsx +18 -19
- package/src/ui/switch.tsx +7 -2
- package/src/ui/tabs.tsx +29 -58
- package/src/ui/theme/ThemeProvider.tsx +4 -3
- package/src/ui/theme/ThemeToggles.tsx +48 -12
- package/src/ui/toast.tsx +13 -16
- package/src/ui/tooltip.tsx +3 -30
- package/src/ui/tree-view/TreeView.tsx +179 -21
- package/src/ui/tree-view/hooks.tsx +148 -0
- package/src/ui/tree-view/types.ts +2 -1
- package/src/ui/virtual-grid/VirtualGrid.tsx +345 -0
- package/src/ui/virtual-grid/index.ts +10 -0
- package/src/ui/virtual-grid/types.ts +72 -0
- package/src/ui/virtual-grid/useVirtualGrid.ts +243 -0
- package/src/ui/virtual-list/VirtualList.tsx +207 -0
- package/src/ui/virtual-list/index.ts +8 -0
- package/src/ui/virtual-list/types.ts +54 -0
- package/src/ui/virtual-list/useVirtualList.ts +203 -0
- package/src/ui/waterfall/TimelineProcessBar.tsx +10 -4
- package/dist/auth/components/index.cjs +0 -128
- package/dist/auth/components/index.d.cts +0 -2
- package/dist/auth/components/index.d.ts +0 -2
- package/dist/auth/components/index.mjs +0 -119
- package/dist/auth/components/user-avatar/index.cjs +0 -127
- package/dist/auth/components/user-avatar/index.d.cts +0 -8
- package/dist/auth/components/user-avatar/index.d.ts +0 -8
- package/dist/auth/components/user-avatar/index.mjs +0 -118
- package/dist/auth/context/user-context.cjs +0 -10
- package/dist/auth/context/user-context.d.cts +0 -13
- package/dist/auth/context/user-context.d.ts +0 -13
- package/dist/auth/context/user-context.mjs +0 -1
- package/dist/auth/handler/fetch-auth.cjs +0 -11
- package/dist/auth/handler/fetch-auth.d.cts +0 -3
- package/dist/auth/handler/fetch-auth.d.ts +0 -3
- package/dist/auth/handler/fetch-auth.mjs +0 -2
- package/dist/auth/handler/fetch-server.cjs +0 -11
- package/dist/auth/handler/fetch-server.d.cts +0 -3
- package/dist/auth/handler/fetch-server.d.ts +0 -3
- package/dist/auth/handler/fetch-server.mjs +0 -2
- package/dist/auth/handler/get-session.cjs +0 -12
- package/dist/auth/handler/get-session.d.cts +0 -21
- package/dist/auth/handler/get-session.d.ts +0 -21
- package/dist/auth/handler/get-session.mjs +0 -3
- package/dist/auth/handler/get-sessions.cjs +0 -12
- package/dist/auth/handler/get-sessions.d.cts +0 -21
- package/dist/auth/handler/get-sessions.d.ts +0 -21
- package/dist/auth/handler/get-sessions.mjs +0 -3
- package/dist/auth/handler/sign-in-handler.cjs +0 -11
- package/dist/auth/handler/sign-in-handler.d.cts +0 -6
- package/dist/auth/handler/sign-in-handler.d.ts +0 -6
- package/dist/auth/handler/sign-in-handler.mjs +0 -2
- package/dist/auth/handler/sign-out-handler.cjs +0 -12
- package/dist/auth/handler/sign-out-handler.d.cts +0 -5
- package/dist/auth/handler/sign-out-handler.d.ts +0 -5
- package/dist/auth/handler/sign-out-handler.mjs +0 -3
- package/dist/auth/hooks/use-sign-in.cjs +0 -14
- package/dist/auth/hooks/use-sign-in.d.cts +0 -9
- package/dist/auth/hooks/use-sign-in.d.ts +0 -9
- package/dist/auth/hooks/use-sign-in.mjs +0 -5
- package/dist/auth/hooks/use-sign-out.cjs +0 -15
- package/dist/auth/hooks/use-sign-out.d.cts +0 -6
- package/dist/auth/hooks/use-sign-out.d.ts +0 -6
- package/dist/auth/hooks/use-sign-out.mjs +0 -6
- package/dist/auth/hooks/use-user.cjs +0 -11
- package/dist/auth/hooks/use-user.d.cts +0 -8
- package/dist/auth/hooks/use-user.d.ts +0 -8
- package/dist/auth/hooks/use-user.mjs +0 -2
- package/dist/auth/hooks/use-vuer-sessions.cjs +0 -15
- package/dist/auth/hooks/use-vuer-sessions.d.cts +0 -9
- package/dist/auth/hooks/use-vuer-sessions.d.ts +0 -9
- package/dist/auth/hooks/use-vuer-sessions.mjs +0 -6
- package/dist/auth/index.cjs +0 -165
- package/dist/auth/index.d.cts +0 -13
- package/dist/auth/index.d.ts +0 -13
- package/dist/auth/index.mjs +0 -124
- package/dist/auth/localstorage-key.cjs +0 -14
- package/dist/auth/localstorage-key.d.cts +0 -4
- package/dist/auth/localstorage-key.d.ts +0 -4
- package/dist/auth/localstorage-key.mjs +0 -1
- package/dist/auth/types.d.cts +0 -27
- package/dist/auth/types.d.ts +0 -27
- package/dist/auth/vuer-user-provider.cjs +0 -14
- package/dist/auth/vuer-user-provider.d.cts +0 -9
- package/dist/auth/vuer-user-provider.d.ts +0 -9
- package/dist/auth/vuer-user-provider.mjs +0 -5
- package/dist/chunk-2DXJJLJL.mjs +0 -51
- package/dist/chunk-2GXIGEKC.mjs +0 -66
- package/dist/chunk-3WMO5QJJ.cjs +0 -8
- package/dist/chunk-5OHAV55L.mjs +0 -24
- package/dist/chunk-6C53NKMF.mjs +0 -206
- package/dist/chunk-6GJM7TPE.cjs +0 -28
- package/dist/chunk-7E5Y224I.cjs +0 -14
- package/dist/chunk-7R5HY3IM.cjs +0 -12
- package/dist/chunk-EMVKGL5D.mjs +0 -28
- package/dist/chunk-EMXEFZEB.cjs +0 -30
- package/dist/chunk-EOSYXHEH.mjs +0 -27
- package/dist/chunk-EXXV3BXT.cjs +0 -23
- package/dist/chunk-F4Z5KATZ.cjs +0 -8
- package/dist/chunk-FROQ45MN.mjs +0 -6
- package/dist/chunk-FZAGJSW2.cjs +0 -47
- package/dist/chunk-H7RH4CZ7.cjs +0 -54
- package/dist/chunk-HOMAESTR.mjs +0 -12
- package/dist/chunk-IPQU5CJD.mjs +0 -21
- package/dist/chunk-JR4TVE43.cjs +0 -31
- package/dist/chunk-KIZEJMW4.cjs +0 -15
- package/dist/chunk-KQW3YARN.cjs +0 -117
- package/dist/chunk-L2XJ5Q7T.cjs +0 -58
- package/dist/chunk-LAPOK2L4.mjs +0 -193
- package/dist/chunk-MFYDZKQF.mjs +0 -28
- package/dist/chunk-MNCBTS63.cjs +0 -68
- package/dist/chunk-MO5V43Z3.mjs +0 -13
- package/dist/chunk-MRMSCW3P.cjs +0 -19
- package/dist/chunk-OOHCJIRV.cjs +0 -26
- package/dist/chunk-PX2H7Z4D.mjs +0 -26
- package/dist/chunk-PXDT5GFJ.mjs +0 -13
- package/dist/chunk-Q3CJUGX3.cjs +0 -21
- package/dist/chunk-Q76WU4DL.cjs +0 -17
- package/dist/chunk-R4HT3SYR.cjs +0 -208
- package/dist/chunk-RSBVQ7SJ.cjs +0 -54
- package/dist/chunk-RTYZO2AC.cjs +0 -30
- package/dist/chunk-SO2UTKSV.mjs +0 -17
- package/dist/chunk-UT7B4TLZ.mjs +0 -5
- package/dist/chunk-V4KDK3BN.mjs +0 -52
- package/dist/chunk-V5T6XOSB.cjs +0 -222
- package/dist/chunk-VSFPXAGN.mjs +0 -10
- package/dist/chunk-VSIOXWSI.cjs +0 -53
- package/dist/chunk-WDS3VL7E.mjs +0 -56
- package/dist/chunk-X3H6FYAM.cjs +0 -15
- package/dist/chunk-XHJDRQD7.mjs +0 -29
- package/dist/chunk-Y2XVZEXM.mjs +0 -45
- package/dist/chunk-Z7BZFZEV.mjs +0 -15
- package/dist/dial/DialProvider.example.cjs +0 -72
- package/dist/dial/DialProvider.example.d.cts +0 -7
- package/dist/dial/DialProvider.example.d.ts +0 -7
- package/dist/dial/DialProvider.example.mjs +0 -68
- package/dist/styles/toast.css +0 -64
- package/dist/styles/toast.d.cts +0 -2
- package/dist/styles/toast.d.ts +0 -2
- package/src/auth/components/index.ts +0 -1
- package/src/auth/components/user-avatar/index.tsx +0 -94
- package/src/auth/context/user-context.ts +0 -15
- package/src/auth/handler/fetch-auth.ts +0 -10
- package/src/auth/handler/fetch-server.ts +0 -10
- package/src/auth/handler/get-session.ts +0 -19
- package/src/auth/handler/get-sessions.ts +0 -16
- package/src/auth/handler/sign-in-handler.ts +0 -64
- package/src/auth/handler/sign-out-handler.ts +0 -9
- package/src/auth/hooks/use-sign-in.ts +0 -33
- package/src/auth/hooks/use-sign-out.ts +0 -30
- package/src/auth/hooks/use-user.ts +0 -10
- package/src/auth/hooks/use-vuer-sessions.ts +0 -29
- package/src/auth/index.ts +0 -12
- package/src/auth/localstorage-key.ts +0 -3
- package/src/auth/types.ts +0 -38
- package/src/auth/vuer-user-provider.tsx +0 -58
- package/src/dial/DialProvider.example.tsx +0 -80
- package/src/styles/toast.css +0 -67
- /package/dist/{auth/types.mjs → chunk-6NZ5VXK7.mjs} +0 -0
- /package/dist/{chunk-UXWS62ZO.mjs → chunk-6THKQIF7.mjs} +0 -0
- /package/dist/{auth/types.cjs → chunk-AS3GNGJN.cjs} +0 -0
- /package/dist/{chunk-NK7L5H2Y.cjs → chunk-DPILGC4Y.cjs} +0 -0
- /package/dist/{chunk-YWECB5GR.cjs → chunk-F4NQLN5E.cjs} +0 -0
- /package/dist/{chunk-YYLBP356.mjs → chunk-NU5W73NH.mjs} +0 -0
|
@@ -26,6 +26,7 @@ export const saveToLS = (key: string, value: string) => {
|
|
|
26
26
|
// Save to storage
|
|
27
27
|
try {
|
|
28
28
|
localStorage.setItem(key, value);
|
|
29
|
+
document.cookie = `vuer:theme=${value}; path=/; max-age=3153600000;`;
|
|
29
30
|
} catch {
|
|
30
31
|
// Unsupported
|
|
31
32
|
}
|
|
@@ -73,11 +74,11 @@ export function useTheme<T = UseThemeProps>(
|
|
|
73
74
|
return useMemo(
|
|
74
75
|
() => {
|
|
75
76
|
if (!selector) {
|
|
76
|
-
return context
|
|
77
|
+
return context;
|
|
77
78
|
} else if (typeof selector === "function") {
|
|
78
79
|
return selector(context);
|
|
79
80
|
} else {
|
|
80
|
-
return context[selector]
|
|
81
|
+
return context[selector];
|
|
81
82
|
}
|
|
82
83
|
},
|
|
83
84
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -160,7 +161,7 @@ export const Theme = ({
|
|
|
160
161
|
return forcedTheme as ComputedTheme;
|
|
161
162
|
}
|
|
162
163
|
return computedTheme;
|
|
163
|
-
}, [forcedTheme, computedTheme
|
|
164
|
+
}, [forcedTheme, computedTheme]);
|
|
164
165
|
|
|
165
166
|
const applyTheme = useCallback(
|
|
166
167
|
(theme: string) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Liquid toggle component
|
|
2
2
|
import { LayoutTemplate, Moon, PanelsTopLeft, Sun, SunMoon } from "lucide-react";
|
|
3
|
-
import React, { type ComponentProps } from "react";
|
|
3
|
+
import React, { type ComponentProps, useRef } from "react";
|
|
4
4
|
|
|
5
5
|
import { Button } from "../button";
|
|
6
6
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../tooltip";
|
|
@@ -31,25 +31,61 @@ export const LiquidToggle: React.FC<LiquidToggleProps> = ({ className, ...props
|
|
|
31
31
|
);
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Theme color toggle component for light/dark/system.
|
|
36
|
+
*
|
|
37
|
+
* Toggle behavior:
|
|
38
|
+
* - After a timeout (1.5s): prioritizes light ↔ dark toggle
|
|
39
|
+
* - system (resolves dark) → light → dark → light ...
|
|
40
|
+
* - system (resolves light) → dark → light → dark ...
|
|
41
|
+
* - light → dark → light ...
|
|
42
|
+
* - dark → light → dark ...
|
|
43
|
+
* - Quick clicks (within 1.5s): cycles through all three options
|
|
44
|
+
* - light → dark → system → light ...
|
|
45
|
+
*
|
|
46
|
+
* This gives casual users a simple light/dark toggle, while quick
|
|
47
|
+
* clicks still allow access to the system option.
|
|
48
|
+
*/
|
|
35
49
|
type ThemeColorToggleProps = Omit<ComponentProps<typeof Button>, "onClick" | "children">;
|
|
36
50
|
|
|
51
|
+
const QUICK_TOGGLE_TIMEOUT = 1500; // ms
|
|
52
|
+
|
|
37
53
|
export const ThemeColorToggle: React.FC<ThemeColorToggleProps> = (props) => {
|
|
38
54
|
const { baseTheme, setBaseTheme, resolvedTheme } = useTheme();
|
|
55
|
+
const lastClickRef = useRef<number>(0);
|
|
56
|
+
|
|
57
|
+
const isDark = resolvedTheme?.includes("dark");
|
|
58
|
+
const isSystem = baseTheme === "system";
|
|
39
59
|
|
|
40
60
|
const handleThemeChange = () => {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
61
|
+
const now = Date.now();
|
|
62
|
+
const timeSinceLastClick = now - lastClickRef.current;
|
|
63
|
+
lastClickRef.current = now;
|
|
64
|
+
|
|
65
|
+
const isQuickToggle = timeSinceLastClick < QUICK_TOGGLE_TIMEOUT;
|
|
66
|
+
|
|
67
|
+
if (isQuickToggle) {
|
|
68
|
+
// Quick toggle: cycle through all options, system always last
|
|
69
|
+
if (baseTheme === "light") {
|
|
70
|
+
setBaseTheme("dark");
|
|
71
|
+
} else if (baseTheme === "dark") {
|
|
72
|
+
setBaseTheme("system");
|
|
73
|
+
} else {
|
|
74
|
+
setBaseTheme("light");
|
|
75
|
+
}
|
|
76
|
+
} else {
|
|
77
|
+
// After timeout: prioritize light ↔ dark toggle, system goes to opposite
|
|
78
|
+
if (baseTheme === "system") {
|
|
79
|
+
// If system resolves to dark, go to light; if light, go to dark
|
|
80
|
+
setBaseTheme(isDark ? "light" : "dark");
|
|
81
|
+
} else if (baseTheme === "light") {
|
|
82
|
+
setBaseTheme("dark");
|
|
83
|
+
} else {
|
|
84
|
+
setBaseTheme("light");
|
|
85
|
+
}
|
|
47
86
|
}
|
|
48
87
|
};
|
|
49
88
|
|
|
50
|
-
const isDark = resolvedTheme?.includes("dark");
|
|
51
|
-
const isSystem = baseTheme === "system";
|
|
52
|
-
|
|
53
89
|
return (
|
|
54
90
|
<Button
|
|
55
91
|
icon
|
|
@@ -58,7 +94,7 @@ export const ThemeColorToggle: React.FC<ThemeColorToggleProps> = (props) => {
|
|
|
58
94
|
{...props}
|
|
59
95
|
onClick={handleThemeChange}
|
|
60
96
|
>
|
|
61
|
-
{isSystem ? <SunMoon size={
|
|
97
|
+
{isSystem ? <SunMoon size={24} /> : isDark ? <Moon size={24} /> : <Sun size={24} />}
|
|
62
98
|
</Button>
|
|
63
99
|
);
|
|
64
100
|
};
|
package/src/ui/toast.tsx
CHANGED
|
@@ -1,27 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { toast, Toaster as Sonner, type ToasterProps } from "sonner";
|
|
2
|
+
|
|
3
|
+
import { useTheme } from "./theme";
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Client-only Toaster wrapper applying default classes.
|
|
6
7
|
*/
|
|
7
8
|
const Toaster = ({ ...props }: ToasterProps) => {
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
useEffect(() => {
|
|
11
|
-
setIsClient(true);
|
|
12
|
-
}, []);
|
|
13
|
-
|
|
14
|
-
// Don't render anything during SSR
|
|
15
|
-
if (!isClient) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
9
|
+
const { baseTheme = "system" } = useTheme();
|
|
18
10
|
|
|
19
11
|
return (
|
|
20
12
|
<Sonner
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
13
|
+
theme={baseTheme}
|
|
14
|
+
className="toaster group"
|
|
15
|
+
style={
|
|
16
|
+
{
|
|
17
|
+
"--normal-bg": "var(--bg-primary)",
|
|
18
|
+
"--normal-text": "var(--text-primary)",
|
|
19
|
+
"--normal-border": "var(--bg-secondary)",
|
|
20
|
+
} as Record<string, string>
|
|
21
|
+
}
|
|
25
22
|
{...props}
|
|
26
23
|
/>
|
|
27
24
|
);
|
package/src/ui/tooltip.tsx
CHANGED
|
@@ -8,7 +8,6 @@ import { cn } from "../hooks";
|
|
|
8
8
|
*/
|
|
9
9
|
function TooltipProvider({
|
|
10
10
|
delayDuration = 0,
|
|
11
|
-
children,
|
|
12
11
|
...props
|
|
13
12
|
}: ComponentProps<typeof TooltipPrimitive.Provider>) {
|
|
14
13
|
return (
|
|
@@ -16,32 +15,17 @@ function TooltipProvider({
|
|
|
16
15
|
data-slot="tooltip-provider"
|
|
17
16
|
delayDuration={delayDuration}
|
|
18
17
|
{...props}
|
|
19
|
-
|
|
20
|
-
{children}
|
|
21
|
-
</TooltipPrimitive.Provider>
|
|
18
|
+
/>
|
|
22
19
|
);
|
|
23
20
|
}
|
|
24
21
|
|
|
25
22
|
/**
|
|
26
23
|
* Wrapper root for a tooltip. Skips tooltip logic during SSR.
|
|
27
24
|
*/
|
|
28
|
-
function Tooltip({
|
|
29
|
-
const [isClient, setIsClient] = useState(false);
|
|
30
|
-
|
|
31
|
-
useEffect(() => {
|
|
32
|
-
setIsClient(true);
|
|
33
|
-
}, []);
|
|
34
|
-
|
|
35
|
-
// During SSR, just render children without tooltip functionality
|
|
36
|
-
if (!isClient) {
|
|
37
|
-
return <>{children}</>;
|
|
38
|
-
}
|
|
39
|
-
|
|
25
|
+
function Tooltip({ ...props }: ComponentProps<typeof TooltipPrimitive.Root>) {
|
|
40
26
|
return (
|
|
41
27
|
<TooltipProvider>
|
|
42
|
-
<TooltipPrimitive.Root data-slot="tooltip" {...props}
|
|
43
|
-
{children}
|
|
44
|
-
</TooltipPrimitive.Root>
|
|
28
|
+
<TooltipPrimitive.Root data-slot="tooltip" {...props} />
|
|
45
29
|
</TooltipProvider>
|
|
46
30
|
);
|
|
47
31
|
}
|
|
@@ -50,17 +34,6 @@ function Tooltip({ children, ...props }: ComponentProps<typeof TooltipPrimitive.
|
|
|
50
34
|
* Element that triggers the tooltip.
|
|
51
35
|
*/
|
|
52
36
|
function TooltipTrigger({ ...props }: ComponentProps<typeof TooltipPrimitive.Trigger>) {
|
|
53
|
-
const [isClient, setIsClient] = useState(false);
|
|
54
|
-
|
|
55
|
-
useEffect(() => {
|
|
56
|
-
setIsClient(true);
|
|
57
|
-
}, []);
|
|
58
|
-
|
|
59
|
-
// During SSR, just render children without tooltip functionality
|
|
60
|
-
if (!isClient) {
|
|
61
|
-
return <>{props.children}</>;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
37
|
return <TooltipPrimitive.Trigger data-slot="tooltip-trigger" {...props} />;
|
|
65
38
|
}
|
|
66
39
|
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { ChevronDown } from "lucide-react";
|
|
2
|
-
import { type ReactNode } from "react";
|
|
2
|
+
import React, { type ReactNode, useState } from "react";
|
|
3
3
|
|
|
4
|
+
import {
|
|
5
|
+
getMultiSelectState,
|
|
6
|
+
getRangeIds,
|
|
7
|
+
cleanIndirectSelectedNodes,
|
|
8
|
+
getAdjacentSelectionState,
|
|
9
|
+
} from "./hooks";
|
|
4
10
|
import { TreeDataItem, TreeDataItemWithMeta } from "./types";
|
|
5
11
|
import { cn } from "../../hooks";
|
|
12
|
+
import { ContextMenu, ContextMenuTrigger } from "../context-menu";
|
|
6
13
|
|
|
7
14
|
/**
|
|
8
15
|
* Props for the view-only tree component
|
|
@@ -15,12 +22,14 @@ export type TreeViewProps<T extends TreeDataItem> = {
|
|
|
15
22
|
onItemHover?: (id: string | null) => void;
|
|
16
23
|
hoveredId?: string | null;
|
|
17
24
|
isSelectable?: boolean;
|
|
18
|
-
|
|
19
|
-
|
|
25
|
+
selectedItemIds?: Set<string>;
|
|
26
|
+
onSelectionChange?: (ids: Set<string>) => void;
|
|
20
27
|
hideExpand?: boolean;
|
|
21
28
|
hasDescendants?: (id: string) => boolean;
|
|
22
29
|
renderLabel?: (label: string, itemId: string) => ReactNode;
|
|
23
30
|
className?: string;
|
|
31
|
+
renderContextMenu?: (item: T) => ReactNode;
|
|
32
|
+
selectionMode?: "single" | "multi";
|
|
24
33
|
};
|
|
25
34
|
|
|
26
35
|
/**
|
|
@@ -36,13 +45,17 @@ export function TreeView<T extends TreeDataItem>({
|
|
|
36
45
|
onItemHover,
|
|
37
46
|
hoveredId,
|
|
38
47
|
isSelectable = false,
|
|
39
|
-
|
|
40
|
-
|
|
48
|
+
selectedItemIds,
|
|
49
|
+
onSelectionChange,
|
|
41
50
|
hideExpand = false,
|
|
42
51
|
hasDescendants = () => false,
|
|
43
52
|
renderLabel = (label) => label,
|
|
44
53
|
className,
|
|
54
|
+
renderContextMenu,
|
|
55
|
+
selectionMode = "multi",
|
|
45
56
|
}: TreeViewProps<T>) {
|
|
57
|
+
const [lastSelectedId, setLastSelectedId] = useState<string | null>(null);
|
|
58
|
+
|
|
46
59
|
return (
|
|
47
60
|
<div className={cn("flex-1 overflow-y-auto", className)}>
|
|
48
61
|
{data.map((item) => (
|
|
@@ -52,8 +65,10 @@ export function TreeView<T extends TreeDataItem>({
|
|
|
52
65
|
hoveredId={hoveredId}
|
|
53
66
|
onItemHover={onItemHover}
|
|
54
67
|
isSelectable={isSelectable}
|
|
55
|
-
|
|
56
|
-
|
|
68
|
+
selectedItemIds={selectedItemIds}
|
|
69
|
+
onSelectionChange={onSelectionChange}
|
|
70
|
+
lastSelectedId={lastSelectedId}
|
|
71
|
+
setLastSelectedId={setLastSelectedId}
|
|
57
72
|
expandedItems={expandedItems}
|
|
58
73
|
toggleItem={onToggleItem}
|
|
59
74
|
hideExpand={hideExpand}
|
|
@@ -61,6 +76,8 @@ export function TreeView<T extends TreeDataItem>({
|
|
|
61
76
|
getIcon={getIcon}
|
|
62
77
|
renderLabel={renderLabel}
|
|
63
78
|
dataWithMeta={data}
|
|
79
|
+
renderContextMenu={renderContextMenu}
|
|
80
|
+
selectionMode={selectionMode}
|
|
64
81
|
/>
|
|
65
82
|
))}
|
|
66
83
|
</div>
|
|
@@ -75,8 +92,10 @@ export function TreeEntryItem<T extends TreeDataItem>({
|
|
|
75
92
|
hoveredId,
|
|
76
93
|
onItemHover,
|
|
77
94
|
isSelectable,
|
|
78
|
-
|
|
79
|
-
|
|
95
|
+
selectedItemIds,
|
|
96
|
+
onSelectionChange,
|
|
97
|
+
lastSelectedId,
|
|
98
|
+
setLastSelectedId,
|
|
80
99
|
expandedItems,
|
|
81
100
|
toggleItem = () => {},
|
|
82
101
|
hideExpand = false,
|
|
@@ -84,13 +103,17 @@ export function TreeEntryItem<T extends TreeDataItem>({
|
|
|
84
103
|
getIcon = () => null,
|
|
85
104
|
renderLabel = (label) => label,
|
|
86
105
|
dataWithMeta = [],
|
|
106
|
+
renderContextMenu,
|
|
107
|
+
selectionMode = "multi",
|
|
87
108
|
}: {
|
|
88
109
|
item: TreeDataItemWithMeta<T>;
|
|
89
110
|
hoveredId?: string | null;
|
|
90
111
|
onItemHover?: (id: string | null) => void;
|
|
91
112
|
isSelectable?: boolean;
|
|
92
|
-
|
|
93
|
-
|
|
113
|
+
selectedItemIds?: Set<string>;
|
|
114
|
+
onSelectionChange?: (ids: Set<string>) => void;
|
|
115
|
+
lastSelectedId?: string | null;
|
|
116
|
+
setLastSelectedId?: (id: string | null) => void;
|
|
94
117
|
expandedItems?: Set<string>;
|
|
95
118
|
toggleItem?: (id: string) => void;
|
|
96
119
|
hideExpand?: boolean;
|
|
@@ -98,10 +121,58 @@ export function TreeEntryItem<T extends TreeDataItem>({
|
|
|
98
121
|
getIcon?: (item: T, expanded?: boolean) => ReactNode;
|
|
99
122
|
renderLabel?: (label: string, itemId: string) => ReactNode;
|
|
100
123
|
dataWithMeta?: TreeDataItemWithMeta<T>[];
|
|
124
|
+
renderContextMenu?: (item: T) => ReactNode;
|
|
125
|
+
selectionMode?: "single" | "multi";
|
|
101
126
|
}) {
|
|
102
|
-
const handleItemSelect = () => {
|
|
103
|
-
if (!item.disable && isSelectable &&
|
|
104
|
-
|
|
127
|
+
const handleItemSelect = (event: React.MouseEvent) => {
|
|
128
|
+
if (!item.disable && isSelectable && item.selectable !== false) {
|
|
129
|
+
const isMultiSelectMode = selectionMode === "multi" && (event.ctrlKey || event.metaKey);
|
|
130
|
+
const isRangeSelectMode = selectionMode === "multi" && event.shiftKey;
|
|
131
|
+
|
|
132
|
+
if (isMultiSelectMode) {
|
|
133
|
+
const selectState = getMultiSelectState(
|
|
134
|
+
item.id,
|
|
135
|
+
selectedItemIds || new Set(),
|
|
136
|
+
dataWithMeta,
|
|
137
|
+
);
|
|
138
|
+
// prevent selection of indirectly selected nodes in multi-select mode
|
|
139
|
+
if (selectState === "indirect") {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
let newSelectedIds: Set<string>;
|
|
145
|
+
|
|
146
|
+
if (isRangeSelectMode && lastSelectedId) {
|
|
147
|
+
if (selectedItemIds) {
|
|
148
|
+
newSelectedIds = new Set(selectedItemIds);
|
|
149
|
+
const rangeIds = getRangeIds(lastSelectedId, item.id, dataWithMeta);
|
|
150
|
+
rangeIds.forEach((id) => newSelectedIds.add(id));
|
|
151
|
+
} else {
|
|
152
|
+
newSelectedIds = new Set([item.id]);
|
|
153
|
+
}
|
|
154
|
+
} else if (isMultiSelectMode) {
|
|
155
|
+
if (selectedItemIds) {
|
|
156
|
+
newSelectedIds = new Set(selectedItemIds);
|
|
157
|
+
if (newSelectedIds.has(item.id)) {
|
|
158
|
+
newSelectedIds.delete(item.id);
|
|
159
|
+
} else {
|
|
160
|
+
newSelectedIds.add(item.id);
|
|
161
|
+
}
|
|
162
|
+
} else {
|
|
163
|
+
newSelectedIds = new Set([item.id]);
|
|
164
|
+
}
|
|
165
|
+
} else {
|
|
166
|
+
// Single select mode: clear other selections and select only current item
|
|
167
|
+
newSelectedIds = new Set([item.id]);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const cleanedSelectedIds = cleanIndirectSelectedNodes(newSelectedIds, dataWithMeta);
|
|
171
|
+
|
|
172
|
+
if (onSelectionChange) {
|
|
173
|
+
onSelectionChange(cleanedSelectedIds);
|
|
174
|
+
setLastSelectedId?.(item.id);
|
|
175
|
+
}
|
|
105
176
|
}
|
|
106
177
|
};
|
|
107
178
|
|
|
@@ -110,18 +181,72 @@ export function TreeEntryItem<T extends TreeDataItem>({
|
|
|
110
181
|
const indent = item.indent || 0;
|
|
111
182
|
const isLast = item.isLast !== undefined ? item.isLast : false;
|
|
112
183
|
|
|
113
|
-
|
|
184
|
+
const getSelectState = () => {
|
|
185
|
+
if (selectedItemIds) {
|
|
186
|
+
return getMultiSelectState(item.id, selectedItemIds, dataWithMeta);
|
|
187
|
+
}
|
|
188
|
+
return "unselected";
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
const selectState = getSelectState();
|
|
192
|
+
const isSelected = selectState === "selected";
|
|
193
|
+
const isIndirectlySelected = selectState === "indirect";
|
|
194
|
+
|
|
195
|
+
const { hasPrevSelected, hasNextSelected } = getAdjacentSelectionState(
|
|
196
|
+
item.id,
|
|
197
|
+
selectedItemIds || new Set(),
|
|
198
|
+
dataWithMeta,
|
|
199
|
+
);
|
|
200
|
+
|
|
201
|
+
// Calculate border radius classes based on adjacent selection
|
|
202
|
+
const getBorderRadiusClass = () => {
|
|
203
|
+
if (!isSelectable || (!isSelected && !isIndirectlySelected)) {
|
|
204
|
+
return "";
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// Remove top radius if previous item is selected, remove bottom radius if next item is selected
|
|
208
|
+
if (hasPrevSelected && hasNextSelected) {
|
|
209
|
+
return "";
|
|
210
|
+
} else if (hasPrevSelected) {
|
|
211
|
+
return "rounded-b-uk-md";
|
|
212
|
+
} else if (hasNextSelected) {
|
|
213
|
+
return "rounded-t-uk-md";
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
return "rounded-uk-md";
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
const handleContextMenuOpenChange = (open: boolean) => {
|
|
220
|
+
// If item is not selected when opening context menu, select it first
|
|
221
|
+
if (
|
|
222
|
+
open &&
|
|
223
|
+
isSelectable &&
|
|
224
|
+
item.selectable !== false &&
|
|
225
|
+
!isSelected &&
|
|
226
|
+
!isIndirectlySelected &&
|
|
227
|
+
onSelectionChange
|
|
228
|
+
) {
|
|
229
|
+
onSelectionChange(new Set([item.id]));
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
const treeItemContent = (
|
|
114
234
|
<div
|
|
115
235
|
className={cn(
|
|
116
236
|
"group relative flex h-[32px] items-center",
|
|
117
|
-
|
|
118
|
-
!item.disable && "cursor-pointer",
|
|
237
|
+
getBorderRadiusClass(),
|
|
119
238
|
hoveredId === item.id && !item.disable && "bg-bg-secondary",
|
|
120
|
-
isSelectable &&
|
|
239
|
+
isSelectable && isSelected && "bg-bg-tertiary",
|
|
240
|
+
isSelectable && isIndirectlySelected && "bg-shadow-secondary text-text-primary",
|
|
121
241
|
)}
|
|
122
242
|
onMouseEnter={() => onItemHover?.(item.id)}
|
|
123
243
|
onMouseLeave={() => onItemHover?.(null)}
|
|
124
244
|
onClick={handleItemSelect}
|
|
245
|
+
onMouseDown={(e) => {
|
|
246
|
+
if (e.shiftKey || e.ctrlKey || e.metaKey) {
|
|
247
|
+
e.preventDefault();
|
|
248
|
+
}
|
|
249
|
+
}}
|
|
125
250
|
>
|
|
126
251
|
{/* Guidelines */}
|
|
127
252
|
<div className="absolute top-0 left-[-0.28rem] z-0 flex h-full items-center">
|
|
@@ -217,9 +342,31 @@ export function TreeEntryItem<T extends TreeDataItem>({
|
|
|
217
342
|
</div>
|
|
218
343
|
</div>
|
|
219
344
|
)}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
345
|
+
{(() => {
|
|
346
|
+
const label = item.label;
|
|
347
|
+
const keepEnd = 9;
|
|
348
|
+
|
|
349
|
+
if (label.length <= keepEnd) {
|
|
350
|
+
return (
|
|
351
|
+
<span className={cn("truncate", item.disable && "text-text-tertiary")}>
|
|
352
|
+
{renderLabel(label, item.id)}
|
|
353
|
+
</span>
|
|
354
|
+
);
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
const firstPart = label.substring(0, label.length - keepEnd);
|
|
358
|
+
const lastPart = label.substring(label.length - keepEnd);
|
|
359
|
+
|
|
360
|
+
return (
|
|
361
|
+
<span
|
|
362
|
+
className={cn("flex min-w-0 flex-1", item.disable && "text-text-tertiary")}
|
|
363
|
+
style={{ maxWidth: "100%" }}
|
|
364
|
+
>
|
|
365
|
+
<span className="min-w-0 truncate">{firstPart}</span>
|
|
366
|
+
<span className="shrink-0">{lastPart}</span>
|
|
367
|
+
</span>
|
|
368
|
+
);
|
|
369
|
+
})()}
|
|
223
370
|
</div>
|
|
224
371
|
{item.actions && (
|
|
225
372
|
<div className="flex items-center gap-1" onClick={(e) => e.stopPropagation()}>
|
|
@@ -229,4 +376,15 @@ export function TreeEntryItem<T extends TreeDataItem>({
|
|
|
229
376
|
</div>
|
|
230
377
|
</div>
|
|
231
378
|
);
|
|
379
|
+
|
|
380
|
+
if (renderContextMenu && item.selectable !== false) {
|
|
381
|
+
return (
|
|
382
|
+
<ContextMenu onOpenChange={handleContextMenuOpenChange}>
|
|
383
|
+
<ContextMenuTrigger asChild>{treeItemContent}</ContextMenuTrigger>
|
|
384
|
+
{renderContextMenu(item)}
|
|
385
|
+
</ContextMenu>
|
|
386
|
+
);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
return treeItemContent;
|
|
232
390
|
}
|
|
@@ -2,6 +2,154 @@ import { useCallback, useMemo, useState } from "react";
|
|
|
2
2
|
|
|
3
3
|
import { TreeDataItem, TreeDataItemWithMeta } from "./types";
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Get all descendant node IDs of a node
|
|
7
|
+
*/
|
|
8
|
+
export function getDescendantIds<T extends TreeDataItem>(
|
|
9
|
+
itemId: string,
|
|
10
|
+
data: TreeDataItemWithMeta<T>[],
|
|
11
|
+
childrenMap: Map<string | null, T[]>,
|
|
12
|
+
): string[] {
|
|
13
|
+
const descendants: string[] = [];
|
|
14
|
+
const children = childrenMap.get(itemId) || [];
|
|
15
|
+
|
|
16
|
+
children.forEach((child) => {
|
|
17
|
+
descendants.push(child.id);
|
|
18
|
+
descendants.push(...getDescendantIds(child.id, data, childrenMap));
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
return descendants;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Get all ancestor node IDs of a node
|
|
26
|
+
*/
|
|
27
|
+
export function getAncestorIds<T extends TreeDataItem>(
|
|
28
|
+
itemId: string,
|
|
29
|
+
data: TreeDataItemWithMeta<T>[],
|
|
30
|
+
): string[] {
|
|
31
|
+
const ancestors: string[] = [];
|
|
32
|
+
const dataMap = new Map(data.map((item) => [item.id, item]));
|
|
33
|
+
let current = dataMap.get(itemId)?.parentId;
|
|
34
|
+
|
|
35
|
+
while (current) {
|
|
36
|
+
ancestors.push(current);
|
|
37
|
+
current = dataMap.get(current)?.parentId;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return ancestors;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Check if a node is indirectly selected (parent node is selected)
|
|
45
|
+
*/
|
|
46
|
+
export function isIndirectlySelected<T extends TreeDataItem>(
|
|
47
|
+
itemId: string,
|
|
48
|
+
selectedIds: Set<string>,
|
|
49
|
+
data: TreeDataItemWithMeta<T>[],
|
|
50
|
+
): boolean {
|
|
51
|
+
const ancestors = getAncestorIds(itemId, data);
|
|
52
|
+
return ancestors.some((ancestorId) => selectedIds.has(ancestorId));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Get multi-select state: selected, indirect, or unselected
|
|
57
|
+
*/
|
|
58
|
+
export function getMultiSelectState<T extends TreeDataItem>(
|
|
59
|
+
itemId: string,
|
|
60
|
+
selectedIds: Set<string>,
|
|
61
|
+
data: TreeDataItemWithMeta<T>[],
|
|
62
|
+
): "selected" | "indirect" | "unselected" {
|
|
63
|
+
if (isIndirectlySelected(itemId, selectedIds, data)) {
|
|
64
|
+
return "indirect";
|
|
65
|
+
}
|
|
66
|
+
if (selectedIds.has(itemId)) {
|
|
67
|
+
return "selected";
|
|
68
|
+
}
|
|
69
|
+
return "unselected";
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Get all node IDs for range selection (from lastSelectedId to currentId)
|
|
74
|
+
*/
|
|
75
|
+
export function getRangeIds<T extends TreeDataItem>(
|
|
76
|
+
lastSelectedId: string | null,
|
|
77
|
+
currentId: string,
|
|
78
|
+
data: TreeDataItemWithMeta<T>[],
|
|
79
|
+
): string[] {
|
|
80
|
+
if (!lastSelectedId) {
|
|
81
|
+
return [currentId];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Find the indices of both nodes in the data
|
|
85
|
+
const lastIndex = data.findIndex((item) => item.id === lastSelectedId);
|
|
86
|
+
const currentIndex = data.findIndex((item) => item.id === currentId);
|
|
87
|
+
|
|
88
|
+
if (lastIndex === -1 || currentIndex === -1) {
|
|
89
|
+
return [currentId];
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Get all node IDs within the range
|
|
93
|
+
const startIndex = Math.min(lastIndex, currentIndex);
|
|
94
|
+
const endIndex = Math.max(lastIndex, currentIndex);
|
|
95
|
+
const rangeIds: string[] = [];
|
|
96
|
+
|
|
97
|
+
for (let i = startIndex; i <= endIndex; i++) {
|
|
98
|
+
rangeIds.push(data[i].id);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return rangeIds;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Clean up indirectly selected child nodes, keep only directly selected nodes
|
|
106
|
+
*/
|
|
107
|
+
export function cleanIndirectSelectedNodes<T extends TreeDataItem>(
|
|
108
|
+
selectedIds: Set<string>,
|
|
109
|
+
data: TreeDataItemWithMeta<T>[],
|
|
110
|
+
): Set<string> {
|
|
111
|
+
const cleanedIds = new Set<string>();
|
|
112
|
+
|
|
113
|
+
for (const id of selectedIds) {
|
|
114
|
+
// Check if this node is indirectly selected (i.e., its ancestor node is selected)
|
|
115
|
+
const isNodeIndirectlySelected = isIndirectlySelected(id, selectedIds, data);
|
|
116
|
+
|
|
117
|
+
// If this node is not indirectly selected, keep it
|
|
118
|
+
if (!isNodeIndirectlySelected) {
|
|
119
|
+
cleanedIds.add(id);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return cleanedIds;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Check if adjacent items are selected (directly or indirectly)
|
|
128
|
+
* Returns whether previous and next items are selected
|
|
129
|
+
*/
|
|
130
|
+
export function getAdjacentSelectionState<T extends TreeDataItem>(
|
|
131
|
+
itemId: string,
|
|
132
|
+
selectedIds: Set<string>,
|
|
133
|
+
data: TreeDataItemWithMeta<T>[],
|
|
134
|
+
): { hasPrevSelected: boolean; hasNextSelected: boolean } {
|
|
135
|
+
const currentIndex = data.findIndex((item) => item.id === itemId);
|
|
136
|
+
|
|
137
|
+
if (currentIndex === -1) {
|
|
138
|
+
return { hasPrevSelected: false, hasNextSelected: false };
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const prevIndex = currentIndex - 1;
|
|
142
|
+
const hasPrevSelected =
|
|
143
|
+
prevIndex >= 0 && getMultiSelectState(data[prevIndex].id, selectedIds, data) !== "unselected";
|
|
144
|
+
|
|
145
|
+
const nextIndex = currentIndex + 1;
|
|
146
|
+
const hasNextSelected =
|
|
147
|
+
nextIndex < data.length &&
|
|
148
|
+
getMultiSelectState(data[nextIndex].id, selectedIds, data) !== "unselected";
|
|
149
|
+
|
|
150
|
+
return { hasPrevSelected, hasNextSelected };
|
|
151
|
+
}
|
|
152
|
+
|
|
5
153
|
/**
|
|
6
154
|
* Hook for managing tree search functionality
|
|
7
155
|
*/
|
|
@@ -10,6 +10,7 @@ export type TreeDataItem = {
|
|
|
10
10
|
isCollapsible?: boolean;
|
|
11
11
|
actions?: ReactNode;
|
|
12
12
|
disable?: boolean;
|
|
13
|
+
selectable?: boolean;
|
|
13
14
|
[key: string]: unknown;
|
|
14
15
|
};
|
|
15
16
|
|
|
@@ -20,4 +21,4 @@ export type TreeDataItemWithMeta<T extends TreeDataItem> = T & {
|
|
|
20
21
|
indent: number;
|
|
21
22
|
isLast: boolean;
|
|
22
23
|
ancestors: T[];
|
|
23
|
-
};
|
|
24
|
+
};
|