eidos-ui 3.8.0 → 4.0.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 +2 -2
- package/dist/alert/index.cjs +5 -5
- package/dist/alert/index.js +4 -4
- package/dist/button/index.cjs +4 -4
- package/dist/button/index.js +3 -3
- package/dist/chip/index.cjs +4 -4
- package/dist/chip/index.js +3 -3
- package/dist/{chunk-V5CM5TH3.js → chunk-2OBOD3GO.js} +3 -3
- package/dist/{chunk-CFVUUMQA.cjs → chunk-2URFSWJT.cjs} +6 -8
- package/dist/chunk-2URFSWJT.cjs.map +1 -0
- package/dist/{chunk-4S57PE43.js → chunk-2WDL2ZVP.js} +6 -7
- package/dist/chunk-2WDL2ZVP.js.map +1 -0
- package/dist/{chunk-V64DICJK.js → chunk-363IKX3C.js} +3 -3
- package/dist/{chunk-LWCFT5SP.cjs → chunk-3QBMSZSE.cjs} +3 -3
- package/dist/{chunk-LWCFT5SP.cjs.map → chunk-3QBMSZSE.cjs.map} +1 -1
- package/dist/{chunk-6LTZV6HN.js → chunk-43DJ3GGR.js} +19 -19
- package/dist/chunk-43DJ3GGR.js.map +1 -0
- package/dist/{chunk-L6ERHCQ2.js → chunk-57BVERWD.js} +3 -3
- package/dist/{chunk-AUNDBUHM.cjs → chunk-5HRVHEHE.cjs} +3 -3
- package/dist/{chunk-AUNDBUHM.cjs.map → chunk-5HRVHEHE.cjs.map} +1 -1
- package/dist/{chunk-6IB27I5K.cjs → chunk-6JYXGRJ3.cjs} +8 -8
- package/dist/{chunk-6IB27I5K.cjs.map → chunk-6JYXGRJ3.cjs.map} +1 -1
- package/dist/{chunk-NERASTO2.cjs → chunk-6ZFXIYH7.cjs} +3 -3
- package/dist/{chunk-NERASTO2.cjs.map → chunk-6ZFXIYH7.cjs.map} +1 -1
- package/dist/{chunk-IKXXXVUO.js → chunk-7TQUJ6BJ.js} +3 -3
- package/dist/{chunk-544RAXWO.cjs → chunk-7VMF6LIC.cjs} +19 -19
- package/dist/{chunk-544RAXWO.cjs.map → chunk-7VMF6LIC.cjs.map} +1 -1
- package/dist/{chunk-WTFEMOV5.cjs → chunk-ADB7QRX5.cjs} +16 -16
- package/dist/{chunk-WTFEMOV5.cjs.map → chunk-ADB7QRX5.cjs.map} +1 -1
- package/dist/{chunk-6CW5QSYV.cjs → chunk-AFGC62AL.cjs} +7 -7
- package/dist/{chunk-6CW5QSYV.cjs.map → chunk-AFGC62AL.cjs.map} +1 -1
- package/dist/{chunk-U4SVBE2M.js → chunk-AWPJH3UB.js} +4 -4
- package/dist/{chunk-B2OHBIAL.cjs → chunk-BKUZF7CW.cjs} +10 -11
- package/dist/chunk-BKUZF7CW.cjs.map +1 -0
- package/dist/{chunk-WR77IZUU.cjs → chunk-BPVOQLCA.cjs} +7 -7
- package/dist/{chunk-WR77IZUU.cjs.map → chunk-BPVOQLCA.cjs.map} +1 -1
- package/dist/{chunk-MCPGI6EI.js → chunk-BUSMGQJ4.js} +2 -2
- package/dist/{chunk-H3C6YECZ.js → chunk-D2PXPX56.js} +6 -6
- package/dist/{chunk-L6YJ6QTZ.js → chunk-DCUIT7SI.js} +2 -2
- package/dist/{chunk-HYRLK462.js → chunk-EDPCI2JC.js} +2 -2
- package/dist/{chunk-DPTTDHZ5.js → chunk-FAGQGGT3.js} +3 -3
- package/dist/{chunk-CNTG7OOO.js → chunk-FAXDWZQH.js} +12 -12
- package/dist/{chunk-7NUVLVSL.cjs → chunk-FJSK2RT7.cjs} +5 -5
- package/dist/{chunk-7NUVLVSL.cjs.map → chunk-FJSK2RT7.cjs.map} +1 -1
- package/dist/{chunk-P6OJQ2RN.js → chunk-FSX7DDLO.js} +8 -9
- package/dist/chunk-FSX7DDLO.js.map +1 -0
- package/dist/{chunk-XIUZT4TO.js → chunk-GE3QCXT7.js} +6 -7
- package/dist/chunk-GE3QCXT7.js.map +1 -0
- package/dist/{chunk-JY77VJAZ.js → chunk-GHUEVNNU.js} +3 -3
- package/dist/{chunk-4V2XYUQL.js → chunk-GLEPKX2R.js} +2 -2
- package/dist/{chunk-QUSO4GFA.cjs → chunk-GRKC4PIX.cjs} +24 -24
- package/dist/chunk-GRKC4PIX.cjs.map +1 -0
- package/dist/{chunk-SLHIVEFW.cjs → chunk-HKLLKNRQ.cjs} +6 -9
- package/dist/chunk-HKLLKNRQ.cjs.map +1 -0
- package/dist/{chunk-2TIMJD4K.js → chunk-IBT535UH.js} +3 -3
- package/dist/{chunk-HR5MWA3B.cjs → chunk-IJW6YCJB.cjs} +5 -5
- package/dist/{chunk-HR5MWA3B.cjs.map → chunk-IJW6YCJB.cjs.map} +1 -1
- package/dist/{chunk-NNAEQR3Y.cjs → chunk-K6VEUJLY.cjs} +30 -30
- package/dist/{chunk-NNAEQR3Y.cjs.map → chunk-K6VEUJLY.cjs.map} +1 -1
- package/dist/{chunk-F5IRMMZ2.cjs → chunk-K73JO4FK.cjs} +7 -7
- package/dist/{chunk-F5IRMMZ2.cjs.map → chunk-K73JO4FK.cjs.map} +1 -1
- package/dist/{chunk-4HZIXRAJ.cjs → chunk-KF2OGUAD.cjs} +11 -12
- package/dist/chunk-KF2OGUAD.cjs.map +1 -0
- package/dist/{chunk-TJQNGJHP.js → chunk-KLHC5BHS.js} +4 -4
- package/dist/{chunk-XWMXEJVZ.js → chunk-KZKBZ2AV.js} +5 -7
- package/dist/chunk-KZKBZ2AV.js.map +1 -0
- package/dist/{chunk-DG3O5NV4.cjs → chunk-LLHR6QW3.cjs} +3 -3
- package/dist/{chunk-DG3O5NV4.cjs.map → chunk-LLHR6QW3.cjs.map} +1 -1
- package/dist/{chunk-GDRLVX2A.js → chunk-LXRNFQEI.js} +4 -4
- package/dist/{chunk-VXC7Z7XB.cjs → chunk-MKQVDEHI.cjs} +5 -6
- package/dist/chunk-MKQVDEHI.cjs.map +1 -0
- package/dist/{chunk-TNQ2ZZ7W.cjs → chunk-MUMTPMWD.cjs} +7 -7
- package/dist/{chunk-TNQ2ZZ7W.cjs.map → chunk-MUMTPMWD.cjs.map} +1 -1
- package/dist/{chunk-RHWZX7PB.js → chunk-NONYIHXD.js} +4 -4
- package/dist/{chunk-XPG56DLQ.cjs → chunk-NSA7ASZ7.cjs} +8 -8
- package/dist/{chunk-XPG56DLQ.cjs.map → chunk-NSA7ASZ7.cjs.map} +1 -1
- package/dist/{chunk-6NAOAKII.js → chunk-NWFGXLQP.js} +2 -2
- package/dist/{chunk-HLI4SOH3.cjs → chunk-NYGRVB2J.cjs} +45 -45
- package/dist/{chunk-HLI4SOH3.cjs.map → chunk-NYGRVB2J.cjs.map} +1 -1
- package/dist/{chunk-UUT2VEN5.cjs → chunk-OC2OBBGM.cjs} +7 -8
- package/dist/chunk-OC2OBBGM.cjs.map +1 -0
- package/dist/{chunk-3X6QVHTD.js → chunk-OERK3T7E.js} +3 -4
- package/dist/chunk-OERK3T7E.js.map +1 -0
- package/dist/{chunk-ZJWQPZ7E.js → chunk-OQWG7NLI.js} +3 -11
- package/dist/chunk-OQWG7NLI.js.map +1 -0
- package/dist/{chunk-U34INRFO.js → chunk-PP6HS4GR.js} +5 -16
- package/dist/chunk-PP6HS4GR.js.map +1 -0
- package/dist/{chunk-OGGZIFTI.cjs → chunk-PVNBH7XN.cjs} +36 -36
- package/dist/{chunk-OGGZIFTI.cjs.map → chunk-PVNBH7XN.cjs.map} +1 -1
- package/dist/{chunk-H46ZLPNJ.cjs → chunk-QDZVZY53.cjs} +7 -7
- package/dist/{chunk-H46ZLPNJ.cjs.map → chunk-QDZVZY53.cjs.map} +1 -1
- package/dist/{chunk-ENMDOQQO.cjs → chunk-R5WI5IGR.cjs} +6 -17
- package/dist/{chunk-ENMDOQQO.cjs.map → chunk-R5WI5IGR.cjs.map} +1 -1
- package/dist/{chunk-UTYY35QX.cjs → chunk-RZMQCVAS.cjs} +3 -3
- package/dist/{chunk-UTYY35QX.cjs.map → chunk-RZMQCVAS.cjs.map} +1 -1
- package/dist/{chunk-7FV2X62W.cjs → chunk-SJKD3WCV.cjs} +7 -7
- package/dist/{chunk-7FV2X62W.cjs.map → chunk-SJKD3WCV.cjs.map} +1 -1
- package/dist/{chunk-LUDK44NZ.cjs → chunk-SJPCBRKR.cjs} +3 -3
- package/dist/{chunk-LUDK44NZ.cjs.map → chunk-SJPCBRKR.cjs.map} +1 -1
- package/dist/{chunk-3TF2GZSG.js → chunk-SONL2RCW.js} +7 -7
- package/dist/{chunk-2IXCEKLI.js → chunk-SOS4K7VC.js} +2 -2
- package/dist/{chunk-WHQGJHMD.js → chunk-TOLNPD7S.js} +4 -4
- package/dist/{chunk-FE7S4RSK.js → chunk-U5KD4BWL.js} +7 -7
- package/dist/{chunk-FHOD3FUN.js → chunk-UTOTOWPS.js} +4 -4
- package/dist/{chunk-YIOHKQ6Y.cjs → chunk-VCG647BY.cjs} +5 -13
- package/dist/chunk-VCG647BY.cjs.map +1 -0
- package/dist/{chunk-N5NXKVFJ.cjs → chunk-VPN7AR7T.cjs} +10 -10
- package/dist/{chunk-N5NXKVFJ.cjs.map → chunk-VPN7AR7T.cjs.map} +1 -1
- package/dist/{chunk-6FXFKMJ5.js → chunk-XBIMNWE6.js} +3 -3
- package/dist/{chunk-Z3IJWYUD.js → chunk-XOUNVK45.js} +2 -2
- package/dist/{chunk-3VXUOAIJ.cjs → chunk-XR72A66Q.cjs} +3 -7
- package/dist/chunk-XR72A66Q.cjs.map +1 -0
- package/dist/{chunk-ULKWUKD2.cjs → chunk-YHSCUPP6.cjs} +22 -23
- package/dist/chunk-YHSCUPP6.cjs.map +1 -0
- package/dist/{chunk-S5CMZFX6.js → chunk-YPEJH57Z.js} +6 -7
- package/dist/chunk-YPEJH57Z.js.map +1 -0
- package/dist/{chunk-BO3KK3ZQ.js → chunk-YPPG7NLW.js} +2 -6
- package/dist/chunk-YPPG7NLW.js.map +1 -0
- package/dist/{chunk-PE2SLXUS.cjs → chunk-YWXS4IPH.cjs} +5 -5
- package/dist/{chunk-PE2SLXUS.cjs.map → chunk-YWXS4IPH.cjs.map} +1 -1
- package/dist/{chunk-UC4NYF6T.js → chunk-YYA5SWXD.js} +2 -2
- package/dist/{chunk-JFV56ISS.cjs → chunk-YZEALKC4.cjs} +6 -6
- package/dist/{chunk-JFV56ISS.cjs.map → chunk-YZEALKC4.cjs.map} +1 -1
- package/dist/{chunk-IHPSRTVW.js → chunk-Z3OEYDNI.js} +4 -7
- package/dist/chunk-Z3OEYDNI.js.map +1 -0
- package/dist/{chunk-MKC6V3SY.cjs → chunk-Z6FZ7GI5.cjs} +6 -6
- package/dist/{chunk-MKC6V3SY.cjs.map → chunk-Z6FZ7GI5.cjs.map} +1 -1
- package/dist/{chunk-NFD7MPX4.cjs → chunk-ZVA5KJAJ.cjs} +11 -11
- package/dist/{chunk-NFD7MPX4.cjs.map → chunk-ZVA5KJAJ.cjs.map} +1 -1
- package/dist/color-picker/index.cjs +4 -4
- package/dist/color-picker/index.js +3 -3
- package/dist/combobox/index.cjs +6 -6
- package/dist/combobox/index.js +5 -5
- package/dist/command-palette/index.cjs +3 -3
- package/dist/command-palette/index.js +2 -2
- package/dist/context-menu/index.cjs +6 -6
- package/dist/context-menu/index.js +5 -5
- package/dist/conversation/index.cjs +8 -8
- package/dist/conversation/index.js +7 -7
- package/dist/data-grid/index.cjs +15 -15
- package/dist/data-grid/index.js +14 -14
- package/dist/date-picker/index.cjs +8 -8
- package/dist/date-picker/index.js +7 -7
- package/dist/drawer/index.cjs +5 -5
- package/dist/drawer/index.js +4 -4
- package/dist/dropdown/index.cjs +3 -3
- package/dist/dropdown/index.js +2 -2
- package/dist/header/index.cjs +6 -6
- package/dist/header/index.js +5 -5
- package/dist/index.cjs +38 -38
- package/dist/index.js +37 -37
- package/dist/inline-edit/index.cjs +5 -5
- package/dist/inline-edit/index.js +4 -4
- package/dist/input/index.cjs +4 -4
- package/dist/input/index.js +3 -3
- package/dist/menu/index.cjs +5 -5
- package/dist/menu/index.js +4 -4
- package/dist/modal/index.cjs +5 -5
- package/dist/modal/index.js +4 -4
- package/dist/navigation/index.cjs +5 -5
- package/dist/navigation/index.js +4 -4
- package/dist/number-input/index.cjs +2 -4
- package/dist/number-input/index.cjs.map +1 -1
- package/dist/number-input/index.js +1 -3
- package/dist/page-layout/index.cjs +12 -12
- package/dist/page-layout/index.js +11 -11
- package/dist/pagination/index.cjs +8 -8
- package/dist/pagination/index.js +7 -7
- package/dist/popover/index.cjs +3 -3
- package/dist/popover/index.d.cts +1 -3
- package/dist/popover/index.d.ts +1 -3
- package/dist/popover/index.js +2 -2
- package/dist/segmented-control/index.cjs +4 -4
- package/dist/segmented-control/index.js +3 -3
- package/dist/select/index.cjs +6 -6
- package/dist/select/index.js +5 -5
- package/dist/snackbar/index.cjs +5 -5
- package/dist/snackbar/index.js +4 -4
- package/dist/split-button/index.cjs +6 -6
- package/dist/split-button/index.js +5 -5
- package/dist/split-chip/index.cjs +5 -5
- package/dist/split-chip/index.js +4 -4
- package/dist/table/index.cjs +13 -13
- package/dist/table/index.js +12 -12
- package/dist/tabs/index.cjs +3 -3
- package/dist/tabs/index.js +2 -2
- package/dist/tag-input/index.cjs +6 -6
- package/dist/tag-input/index.js +5 -5
- package/dist/textarea/index.cjs +4 -4
- package/dist/textarea/index.js +3 -3
- package/dist/theme-editor/index.cjs +11 -11
- package/dist/theme-editor/index.js +10 -10
- package/dist/theme-provider/index.cjs +3 -3
- package/dist/theme-provider/index.js +2 -2
- package/dist/toolbar/index.cjs +8 -8
- package/dist/toolbar/index.js +7 -7
- package/dist/tooltip/index.cjs +3 -3
- package/dist/tooltip/index.js +2 -2
- package/package.json +4 -2
- package/dist/chunk-3VXUOAIJ.cjs.map +0 -1
- package/dist/chunk-3X6QVHTD.js.map +0 -1
- package/dist/chunk-4HZIXRAJ.cjs.map +0 -1
- package/dist/chunk-4S57PE43.js.map +0 -1
- package/dist/chunk-6LTZV6HN.js.map +0 -1
- package/dist/chunk-B2OHBIAL.cjs.map +0 -1
- package/dist/chunk-BO3KK3ZQ.js.map +0 -1
- package/dist/chunk-CFVUUMQA.cjs.map +0 -1
- package/dist/chunk-IHPSRTVW.js.map +0 -1
- package/dist/chunk-P6OJQ2RN.js.map +0 -1
- package/dist/chunk-QUSO4GFA.cjs.map +0 -1
- package/dist/chunk-S5CMZFX6.js.map +0 -1
- package/dist/chunk-SLHIVEFW.cjs.map +0 -1
- package/dist/chunk-U34INRFO.js.map +0 -1
- package/dist/chunk-ULKWUKD2.cjs.map +0 -1
- package/dist/chunk-UUT2VEN5.cjs.map +0 -1
- package/dist/chunk-VXC7Z7XB.cjs.map +0 -1
- package/dist/chunk-XIUZT4TO.js.map +0 -1
- package/dist/chunk-XWMXEJVZ.js.map +0 -1
- package/dist/chunk-YIOHKQ6Y.cjs.map +0 -1
- package/dist/chunk-ZJWQPZ7E.js.map +0 -1
- /package/dist/{chunk-V5CM5TH3.js.map → chunk-2OBOD3GO.js.map} +0 -0
- /package/dist/{chunk-V64DICJK.js.map → chunk-363IKX3C.js.map} +0 -0
- /package/dist/{chunk-L6ERHCQ2.js.map → chunk-57BVERWD.js.map} +0 -0
- /package/dist/{chunk-IKXXXVUO.js.map → chunk-7TQUJ6BJ.js.map} +0 -0
- /package/dist/{chunk-U4SVBE2M.js.map → chunk-AWPJH3UB.js.map} +0 -0
- /package/dist/{chunk-MCPGI6EI.js.map → chunk-BUSMGQJ4.js.map} +0 -0
- /package/dist/{chunk-H3C6YECZ.js.map → chunk-D2PXPX56.js.map} +0 -0
- /package/dist/{chunk-L6YJ6QTZ.js.map → chunk-DCUIT7SI.js.map} +0 -0
- /package/dist/{chunk-HYRLK462.js.map → chunk-EDPCI2JC.js.map} +0 -0
- /package/dist/{chunk-DPTTDHZ5.js.map → chunk-FAGQGGT3.js.map} +0 -0
- /package/dist/{chunk-CNTG7OOO.js.map → chunk-FAXDWZQH.js.map} +0 -0
- /package/dist/{chunk-JY77VJAZ.js.map → chunk-GHUEVNNU.js.map} +0 -0
- /package/dist/{chunk-4V2XYUQL.js.map → chunk-GLEPKX2R.js.map} +0 -0
- /package/dist/{chunk-2TIMJD4K.js.map → chunk-IBT535UH.js.map} +0 -0
- /package/dist/{chunk-TJQNGJHP.js.map → chunk-KLHC5BHS.js.map} +0 -0
- /package/dist/{chunk-GDRLVX2A.js.map → chunk-LXRNFQEI.js.map} +0 -0
- /package/dist/{chunk-RHWZX7PB.js.map → chunk-NONYIHXD.js.map} +0 -0
- /package/dist/{chunk-6NAOAKII.js.map → chunk-NWFGXLQP.js.map} +0 -0
- /package/dist/{chunk-3TF2GZSG.js.map → chunk-SONL2RCW.js.map} +0 -0
- /package/dist/{chunk-2IXCEKLI.js.map → chunk-SOS4K7VC.js.map} +0 -0
- /package/dist/{chunk-WHQGJHMD.js.map → chunk-TOLNPD7S.js.map} +0 -0
- /package/dist/{chunk-FE7S4RSK.js.map → chunk-U5KD4BWL.js.map} +0 -0
- /package/dist/{chunk-FHOD3FUN.js.map → chunk-UTOTOWPS.js.map} +0 -0
- /package/dist/{chunk-6FXFKMJ5.js.map → chunk-XBIMNWE6.js.map} +0 -0
- /package/dist/{chunk-Z3IJWYUD.js.map → chunk-XOUNVK45.js.map} +0 -0
- /package/dist/{chunk-UC4NYF6T.js.map → chunk-YYA5SWXD.js.map} +0 -0
|
@@ -13,29 +13,29 @@ import {
|
|
|
13
13
|
subscribeToFontLoads,
|
|
14
14
|
toFontStack,
|
|
15
15
|
useTheme
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-XOUNVK45.js";
|
|
17
17
|
import {
|
|
18
18
|
Slider
|
|
19
19
|
} from "./chunk-2BC4M4QZ.js";
|
|
20
20
|
import {
|
|
21
21
|
Select
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-2WDL2ZVP.js";
|
|
23
23
|
import {
|
|
24
24
|
Card
|
|
25
25
|
} from "./chunk-EF4Y6Q35.js";
|
|
26
26
|
import {
|
|
27
27
|
ColorPicker
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-DCUIT7SI.js";
|
|
29
29
|
import {
|
|
30
30
|
Alert
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-XBIMNWE6.js";
|
|
32
32
|
import {
|
|
33
33
|
Button,
|
|
34
34
|
IconButton
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-GHUEVNNU.js";
|
|
36
36
|
import {
|
|
37
37
|
Tooltip
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-BUSMGQJ4.js";
|
|
39
39
|
|
|
40
40
|
// src/components/ThemeEditor/ThemeEditor.component.tsx
|
|
41
41
|
import { useCallback, useEffect, useMemo, useReducer, useRef, useState } from "react";
|
|
@@ -398,4 +398,4 @@ ThemeEditor.displayName = "ThemeEditor";
|
|
|
398
398
|
export {
|
|
399
399
|
ThemeEditor
|
|
400
400
|
};
|
|
401
|
-
//# sourceMappingURL=chunk-
|
|
401
|
+
//# sourceMappingURL=chunk-U5KD4BWL.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MenuPanel
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TOLNPD7S.js";
|
|
4
4
|
import {
|
|
5
5
|
Dropdown
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-OERK3T7E.js";
|
|
7
7
|
import {
|
|
8
8
|
renderIcon
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-PP6HS4GR.js";
|
|
10
10
|
|
|
11
11
|
// src/components/SplitButton/SplitButton.component.tsx
|
|
12
12
|
import { useCallback } from "react";
|
|
@@ -95,4 +95,4 @@ var SplitButton = ({
|
|
|
95
95
|
export {
|
|
96
96
|
SplitButton
|
|
97
97
|
};
|
|
98
|
-
//# sourceMappingURL=chunk-
|
|
98
|
+
//# sourceMappingURL=chunk-UTOTOWPS.js.map
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
var _chunkENMDOQQOcjs = require('./chunk-ENMDOQQO.cjs');
|
|
4
|
+
var _chunkR5WI5IGRcjs = require('./chunk-R5WI5IGR.cjs');
|
|
6
5
|
|
|
7
6
|
// src/components/Popover/Popover.component.tsx
|
|
8
7
|
var _react = require('react'); var _react2 = _interopRequireDefault(_react);
|
|
@@ -18,7 +17,6 @@ var Popover = ({
|
|
|
18
17
|
closeOnClickOutside = true,
|
|
19
18
|
closeOnEscape = true,
|
|
20
19
|
disabled = false,
|
|
21
|
-
isOpen,
|
|
22
20
|
open: openProp,
|
|
23
21
|
defaultOpen,
|
|
24
22
|
onOpenChange,
|
|
@@ -26,14 +24,8 @@ var Popover = ({
|
|
|
26
24
|
className,
|
|
27
25
|
contentClassName
|
|
28
26
|
}) => {
|
|
29
|
-
const isClient =
|
|
30
|
-
|
|
31
|
-
_chunkENMDOQQOcjs.devWarn.call(void 0,
|
|
32
|
-
"popover-is-open",
|
|
33
|
-
"Popover: `isOpen` is deprecated - pass `open` instead, the name `Dropdown` and `CommandPalette` use."
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
const controlledOpen = _nullishCoalesce(openProp, () => ( isOpen));
|
|
27
|
+
const isClient = _chunkR5WI5IGRcjs.useIsClient.call(void 0, );
|
|
28
|
+
const controlledOpen = openProp;
|
|
37
29
|
const isControlled = controlledOpen !== void 0;
|
|
38
30
|
const [localOpen, setLocalOpen] = _react.useState.call(void 0, _nullishCoalesce(defaultOpen, () => ( false)));
|
|
39
31
|
const isVisible = isControlled ? controlledOpen : localOpen;
|
|
@@ -212,7 +204,7 @@ var Popover = ({
|
|
|
212
204
|
}
|
|
213
205
|
};
|
|
214
206
|
}, []);
|
|
215
|
-
|
|
207
|
+
_chunkR5WI5IGRcjs.useDialogFocus.call(void 0, popoverState.isVisible && popoverState.isPositioned, contentRef, {
|
|
216
208
|
trapTab: false
|
|
217
209
|
});
|
|
218
210
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
@@ -275,4 +267,4 @@ Popover.displayName = "Popover";
|
|
|
275
267
|
|
|
276
268
|
|
|
277
269
|
exports.Popover = Popover;
|
|
278
|
-
//# sourceMappingURL=chunk-
|
|
270
|
+
//# sourceMappingURL=chunk-VCG647BY.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-VCG647BY.cjs","../src/components/Popover/Popover.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-VCG647BY.cjs","sourcesContent":[null,"import React, { useState, useRef, useCallback, useEffect, useId } from 'react';\nimport { createPortal } from 'react-dom';\nimport { X } from 'lucide-react';\nimport type { PopoverProps, PopoverState, PopoverPlacement } from './Popover.types';\nimport { useDialogFocus, useIsClient } from '../../utils';\n\nexport const Popover: React.FC<PopoverProps> = ({\n trigger,\n children,\n title,\n placement: preferredPlacement = 'bottom',\n showCloseButton = false,\n closeOnClickOutside = true,\n closeOnEscape = true,\n disabled = false,\n open: openProp,\n defaultOpen,\n onOpenChange,\n maxWidth = 320,\n className,\n contentClassName,\n}) => {\n // `open`/`defaultOpen` make the portal reachable on the first render,\n // which cannot happen on a server - see `useIsClient`.\n const isClient = useIsClient();\n\n // ── Controlled / uncontrolled bridge ──────────────────────────────────────\n //\n // `open` matches `Dropdown` and `CommandPalette`. The original spelling,\n // `isOpen`, was deprecated in 3.8 and removed in 4.0.\n const controlledOpen = openProp;\n const isControlled = controlledOpen !== undefined;\n const [localOpen, setLocalOpen] = useState(defaultOpen ?? false);\n const isVisible = isControlled ? controlledOpen! : localOpen;\n\n // ── Positioning state ─────────────────────────────────────────────────────\n const [popoverState, setPopoverState] = useState<PopoverState>({\n isVisible: false,\n isPositioned: false,\n position: { top: 0, left: 0, placement: preferredPlacement },\n });\n\n // Names the dialog by pointing at the rendered title, the same way `Modal`\n // and `Drawer` do. This was an `aria-label={title ?? 'Popover'}`, which\n // both duplicated the visible text into a second, invisible copy and hard\n // limited `title` to a string - `aria-label` takes only a string, so a\n // `ReactNode` title would have been stringified to \"[object Object]\" and\n // silently destroyed the accessible name.\n const titleId = useId();\n\n // ── Refs ──────────────────────────────────────────────────────────────────\n const triggerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const animationFrameRef = useRef<number | undefined>(undefined);\n const isScrollingRef = useRef(false);\n\n // ── Open / close helpers ──────────────────────────────────────────────────\n const open = useCallback(() => {\n if (disabled) return;\n if (!isControlled) setLocalOpen(true);\n onOpenChange?.(true);\n }, [disabled, isControlled, onOpenChange]);\n\n const close = useCallback(() => {\n if (!isControlled) setLocalOpen(false);\n onOpenChange?.(false);\n }, [isControlled, onOpenChange]);\n\n const toggle = useCallback(() => {\n if (isVisible) {\n close();\n } else {\n open();\n }\n }, [isVisible, open, close]);\n\n // ── Positioning calculation ───────────────────────────────────────────────\n const calculateOptimalPosition = useCallback(\n (triggerRect: DOMRect, contentRect: DOMRect) => {\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const gap = 8;\n\n let placement: PopoverPlacement = preferredPlacement;\n let top = 0;\n let left = 0;\n\n switch (preferredPlacement) {\n case 'top':\n top = triggerRect.top - contentRect.height - gap;\n left = triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n break;\n case 'bottom':\n top = triggerRect.bottom + gap;\n left = triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n break;\n case 'left':\n top = triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.left - contentRect.width - gap;\n break;\n case 'right':\n top = triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.right + gap;\n break;\n }\n\n // Flip if it doesn't fit in the preferred direction\n if (placement === 'top' && top < gap) {\n placement = 'bottom';\n top = triggerRect.bottom + gap;\n left = triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n } else if (placement === 'bottom' && top + contentRect.height > viewportHeight - gap) {\n placement = 'top';\n top = triggerRect.top - contentRect.height - gap;\n left = triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n } else if (placement === 'left' && left < gap) {\n placement = 'right';\n top = triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.right + gap;\n } else if (placement === 'right' && left + contentRect.width > viewportWidth - gap) {\n placement = 'left';\n top = triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.left - contentRect.width - gap;\n }\n\n // Clamp to viewport\n top = Math.max(gap, Math.min(top, viewportHeight - contentRect.height - gap));\n left = Math.max(gap, Math.min(left, viewportWidth - contentRect.width - gap));\n\n return { top, left, placement };\n },\n [preferredPlacement],\n );\n\n // ── Sync isVisible → popoverState ─────────────────────────────────────────\n useEffect(() => {\n if (isVisible) {\n setPopoverState((prev) => ({ ...prev, isVisible: true, isPositioned: false }));\n } else {\n setPopoverState((prev) => ({ ...prev, isVisible: false, isPositioned: false }));\n }\n }, [isVisible]);\n\n // ── Two-pass positioning (Pass 2: measure then commit) ────────────────────\n useEffect(() => {\n if (\n popoverState.isVisible &&\n !popoverState.isPositioned &&\n contentRef.current &&\n triggerRef.current\n ) {\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n\n const { top, left, placement } = calculateOptimalPosition(triggerRect, contentRect);\n\n setPopoverState((prev) => ({\n ...prev,\n position: { top, left, placement },\n isPositioned: true,\n }));\n }\n // `isClient` for the same reason as `Dropdown`: with `defaultOpen` the\n // portal arrives one render after this effect first runs, and without it in\n // the deps the panel is never measured and never becomes visible.\n }, [popoverState.isVisible, popoverState.isPositioned, calculateOptimalPosition, isClient]);\n\n // ── Scroll repositioning ─────────────────────────────────────────────────\n const handleScroll = useCallback(() => {\n if (!popoverState.isVisible || !popoverState.isPositioned || isScrollingRef.current) return;\n\n isScrollingRef.current = true;\n\n animationFrameRef.current = requestAnimationFrame(() => {\n if (triggerRef.current && contentRef.current) {\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n\n const { top, left, placement } = calculateOptimalPosition(triggerRect, contentRect);\n\n setPopoverState((prev) => ({\n ...prev,\n position: { top, left, placement },\n }));\n }\n\n isScrollingRef.current = false;\n });\n }, [popoverState.isVisible, popoverState.isPositioned, calculateOptimalPosition]);\n\n // ── Resize repositioning ──────────────────────────────────────────────────\n useEffect(() => {\n const handleResize = () => {\n if (\n popoverState.isVisible &&\n popoverState.isPositioned &&\n contentRef.current &&\n triggerRef.current\n ) {\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n\n const { top, left, placement } = calculateOptimalPosition(triggerRect, contentRect);\n\n setPopoverState((prev) => ({\n ...prev,\n position: { top, left, placement },\n }));\n }\n };\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [popoverState.isVisible, popoverState.isPositioned, calculateOptimalPosition]);\n\n // ── Scroll listener registration ─────────────────────────────────────────\n useEffect(() => {\n if (popoverState.isVisible) {\n // Capture phase on `document` - see the note in `Dropdown`. `scroll` does\n // not bubble, so listeners on `window`/`document.body` miss every\n // ancestor scroll container and the portaled panel detaches from its\n // trigger.\n document.addEventListener('scroll', handleScroll, { capture: true, passive: true });\n }\n\n return () => {\n document.removeEventListener('scroll', handleScroll, { capture: true });\n };\n }, [popoverState.isVisible, handleScroll]);\n\n // ── Click-outside handler ─────────────────────────────────────────────────\n const handleClickOutside = useCallback(\n (event: MouseEvent) => {\n if (!closeOnClickOutside || !popoverState.isVisible) return;\n\n const target = event.target as Node;\n\n if (contentRef.current?.contains(target) || triggerRef.current?.contains(target)) {\n return;\n }\n\n close();\n },\n [closeOnClickOutside, popoverState.isVisible, close],\n );\n\n // ── Escape key handler ────────────────────────────────────────────────────\n const handleEscapeKey = useCallback(\n (event: KeyboardEvent) => {\n if (closeOnEscape && event.key === 'Escape' && popoverState.isVisible) {\n close();\n }\n },\n [closeOnEscape, popoverState.isVisible, close],\n );\n\n // ── Register global event listeners ──────────────────────────────────────\n useEffect(() => {\n if (popoverState.isVisible) {\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleEscapeKey);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleEscapeKey);\n };\n }, [popoverState.isVisible, handleClickOutside, handleEscapeKey]);\n\n // ── Cleanup on unmount ────────────────────────────────────────────────────\n useEffect(() => {\n const timeoutId = timeoutRef.current;\n const animationFrameId = animationFrameRef.current;\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (animationFrameId) {\n cancelAnimationFrame(animationFrameId);\n }\n };\n }, []);\n\n // Non-modal focus handling: move focus into the panel and return it to the\n // trigger on close, but leave Tab free.\n //\n // `trapTab: false` because this dialog is honestly `aria-modal=\"false\"` -\n // the rest of the page stays available, so confining Tab would strand the\n // user. Moving focus in is still required: the panel is portaled to\n // `document.body`, so Tab from the trigger continues into whatever follows\n // it in the page and the panel's own controls cannot be reached at all.\n //\n // Keyed to `isPositioned`, not `isVisible`: the panel renders off-screen\n // for one frame while its placement is measured, and focusing it in that\n // state scrolls the page to wherever it was parked.\n useDialogFocus(popoverState.isVisible && popoverState.isPositioned, contentRef, {\n trapTab: false,\n });\n\n // ── Render ────────────────────────────────────────────────────────────────\n return (\n <>\n {/* Trigger wrapper.\n\n The wrapper carries no ARIA. It had `aria-expanded` and\n `aria-haspopup` while having no role, which is invalid - both need\n a role that supports them, and adding `role=\"button\"` here would be\n worse still, since the trigger inside is usually a real button\n (that is the `nested-interactive` shape already fixed on\n `Dropdown`).\n\n Instead the state is cloned onto the trigger element, which is the\n thing a user actually activates. Guarded by `isValidElement`\n because `trigger` is typed as `ReactNode` and may be a bare string,\n in which case there is nothing to annotate and the wrapper stays\n exactly as it was. */}\n <div\n ref={triggerRef}\n className={['eidos-popover-trigger', className].filter(Boolean).join(' ')}\n onClick={toggle}\n >\n {React.isValidElement(trigger)\n ? React.cloneElement(trigger as React.ReactElement<Record<string, unknown>>, {\n 'aria-expanded': popoverState.isVisible,\n 'aria-haspopup': 'dialog',\n })\n : trigger}\n </div>\n\n {/* Portal: floating panel */}\n {isClient &&\n popoverState.isVisible &&\n createPortal(\n <div\n ref={contentRef}\n role=\"dialog\"\n aria-modal=\"false\"\n aria-labelledby={title ? titleId : undefined}\n // Only the untitled case still needs a literal label - there is\n // no visible text to point at.\n aria-label={title ? undefined : 'Popover'}\n className={[\n 'eidos-popover-content',\n `eidos-popover-content--${popoverState.position.placement}`,\n popoverState.isPositioned ? 'eidos-popover-content--visible' : '',\n contentClassName,\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n top: popoverState.position.top,\n left: popoverState.position.left,\n maxWidth: maxWidth,\n }}\n >\n {(title || showCloseButton) && (\n <div className=\"eidos-popover-header\">\n {title && (\n <span id={titleId} className=\"eidos-popover-title\">\n {title}\n </span>\n )}\n {showCloseButton && (\n <button\n type=\"button\"\n className=\"eidos-popover-close\"\n onClick={close}\n aria-label=\"Close popover\"\n >\n <X aria-hidden=\"true\" />\n </button>\n )}\n </div>\n )}\n <div className=\"eidos-popover-body\">{children}</div>\n </div>,\n document.body,\n )}\n </>\n );\n};\n\nPopover.displayName = 'Popover';\n"]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkMKQVDEHIcjs = require('./chunk-MKQVDEHI.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
var _chunkKVIL4EP4cjs = require('./chunk-KVIL4EP4.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkRZMQCVAScjs = require('./chunk-RZMQCVAS.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _chunkR5WI5IGRcjs = require('./chunk-R5WI5IGR.cjs');
|
|
14
14
|
|
|
15
15
|
// src/components/Menu/Menu.component.tsx
|
|
16
16
|
var _react = require('react'); var _react2 = _interopRequireDefault(_react);
|
|
@@ -28,7 +28,7 @@ var MenuPanel = ({
|
|
|
28
28
|
if (element) itemRefs.current.set(id, element);
|
|
29
29
|
else itemRefs.current.delete(id);
|
|
30
30
|
}, []);
|
|
31
|
-
|
|
31
|
+
_chunkR5WI5IGRcjs.useDialogFocus.call(void 0, true, listRef, { trapTab: false });
|
|
32
32
|
const handleItemClick = _react.useCallback.call(void 0,
|
|
33
33
|
(item) => {
|
|
34
34
|
if (item.disabled) return;
|
|
@@ -111,7 +111,7 @@ var MenuPanel = ({
|
|
|
111
111
|
}
|
|
112
112
|
},
|
|
113
113
|
children: [
|
|
114
|
-
item.icon &&
|
|
114
|
+
item.icon && _chunkR5WI5IGRcjs.renderIcon.call(void 0, item.icon, "eidos-menu-icon"),
|
|
115
115
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `eidos-menu-label`, children: item.label }),
|
|
116
116
|
item.shortcut && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKVIL4EP4cjs.Kbd, { size: "sm", className: "eidos-menu-shortcut", children: item.shortcut })
|
|
117
117
|
]
|
|
@@ -144,14 +144,14 @@ var MenuPanel = ({
|
|
|
144
144
|
}
|
|
145
145
|
},
|
|
146
146
|
children: [
|
|
147
|
-
item.icon &&
|
|
147
|
+
item.icon && _chunkR5WI5IGRcjs.renderIcon.call(void 0, item.icon, "eidos-menu-icon"),
|
|
148
148
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `eidos-menu-label`, children: item.label }),
|
|
149
149
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight, { className: `eidos-menu-nested-arrow` })
|
|
150
150
|
]
|
|
151
151
|
}
|
|
152
152
|
);
|
|
153
153
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { role: "none", className: `eidos-menu-nested-item`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
154
|
-
|
|
154
|
+
_chunkMKQVDEHIcjs.Dropdown,
|
|
155
155
|
{
|
|
156
156
|
open: openSubmenuId === item.id,
|
|
157
157
|
onOpenChange: (next) => setOpenSubmenuId(next ? item.id : null),
|
|
@@ -201,7 +201,7 @@ var Menu = ({
|
|
|
201
201
|
{ "aria-haspopup": "menu", "aria-expanded": isOpen }
|
|
202
202
|
) : trigger;
|
|
203
203
|
const dropdown = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
204
|
-
|
|
204
|
+
_chunkMKQVDEHIcjs.Dropdown,
|
|
205
205
|
{
|
|
206
206
|
open: isOpen,
|
|
207
207
|
onOpenChange: setIsOpen,
|
|
@@ -215,11 +215,11 @@ var Menu = ({
|
|
|
215
215
|
triggerRef
|
|
216
216
|
}
|
|
217
217
|
);
|
|
218
|
-
return tooltip ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
218
|
+
return tooltip ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRZMQCVAScjs.Tooltip, { message: tooltip, children: dropdown }) : dropdown;
|
|
219
219
|
};
|
|
220
220
|
|
|
221
221
|
|
|
222
222
|
|
|
223
223
|
|
|
224
224
|
exports.MenuPanel = MenuPanel; exports.Menu = Menu;
|
|
225
|
-
//# sourceMappingURL=chunk-
|
|
225
|
+
//# sourceMappingURL=chunk-VPN7AR7T.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-N5NXKVFJ.cjs","../src/components/Menu/Menu.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-N5NXKVFJ.cjs","sourcesContent":[null,"import React, { useCallback, useMemo, useRef, useState } from 'react';\nimport { ChevronRight } from 'lucide-react';\nimport type { MenuProps, MenuItemType, MenuItem, MenuWrapperProps } from './Menu.types';\nimport { Dropdown } from '../Dropdown/Dropdown.component';\nimport { Tooltip } from '../Tooltip/Tooltip.component';\nimport { Kbd } from '../Kbd/Kbd.component';\nimport { renderIcon, useDialogFocus } from '../../utils';\n\n/**\n * MenuPanel - the bare menu list, without any trigger or dropdown wrapper.\n * Exported for use in SplitButton, ContextMenu, and other consumers that need\n * to render the menu content inside their own Dropdown / portal.\n *\n * ## This element owns the menu semantics, not the overlay around it\n *\n * `role=\"menu\"` belongs on the element that directly contains the items, which\n * is this `<ul>`. It used to sit on `Dropdown`'s content `<div>` instead, one\n * level further out, so the menu's only child was a list and the items were\n * `listitem`s - `aria-required-children`, and a structure no screen reader\n * could present as a menu.\n *\n * ## The keyboard model is not optional\n *\n * The items were plain `<li onClick>`: no role, no `tabIndex`, no key handler.\n * Every menu in the library - `Menu`, `ContextMenu`, `SplitButton`, `Table` and\n * `DataGrid` row actions - was therefore **operable by mouse only**, which is\n * WCAG 2.1.1 (Level A). Axe reported none of it, because every menu story\n * renders closed and axe only sees what is on screen.\n *\n * A `menuitem` role is a promise that arrow keys work, so the two land\n * together: roving `tabIndex` (one tab stop for the whole menu), Up/Down to\n * move, Home/End to jump, Enter/Space to activate, ArrowRight to open a\n * submenu. Focus enters on open and returns to the trigger on close.\n */\nexport const MenuPanel: React.FC<MenuProps> = ({\n items,\n className = '',\n onItemClick,\n onRequestClose,\n}) => {\n const listRef = useRef<HTMLUListElement>(null);\n const itemRefs = useRef(new Map<string, HTMLElement>());\n\n const registerItem = useCallback((id: string, element: HTMLElement | null) => {\n if (element) itemRefs.current.set(id, element);\n else itemRefs.current.delete(id);\n }, []);\n\n // Moves focus into the menu when it opens and back to the trigger when it\n // closes. `trapTab: false` - a menu is not a dialog, and confining Tab to it\n // would strand the user; the hook's frame-retry loop is what matters here,\n // because `Dropdown`'s content is `visibility: hidden` until it has been\n // positioned and `.focus()` on a hidden element is a silent no-op.\n //\n // `active` is unconditionally true: this panel is only ever mounted by an\n // open overlay (`Dropdown` and `ContextMenu` both render content\n // conditionally), so mounting *is* opening.\n useDialogFocus(true, listRef, { trapTab: false });\n\n // Handle menu item click\n const handleItemClick = useCallback(\n (item: MenuItem) => {\n if (item.disabled) return;\n\n // Execute the item's onClick handler first\n if (item.onClick) {\n item.onClick();\n }\n\n // Then call the onItemClick callback (which will close the dropdown)\n if (onItemClick) {\n onItemClick(item);\n }\n },\n [onItemClick],\n );\n\n // The items arrow keys move between, in visual order. Separators are not\n // stops, `component` items own their own focusable content, and a disabled\n // item is skipped rather than being a dead stop.\n const navigableIds = useMemo(\n () =>\n items\n .filter((item) => (item.type === 'item' || item.type === 'nested') && !item.disabled)\n .map((item) => item.id),\n [items],\n );\n\n const [focusedId, setFocusedId] = useState<string | null>(null);\n // Which submenu is open, owned here rather than inside each nested overlay:\n // the trigger has to advertise `aria-expanded`, and `ArrowLeft` in the child\n // has to be able to close it. Both were impossible while the overlay kept\n // that state to itself.\n const [openSubmenuId, setOpenSubmenuId] = useState<string | null>(null);\n // Validated rather than trusted: `items` can change while the menu is open\n // (a filtered list, an action that disables its neighbour), which would\n // otherwise leave the roving tabIndex on an id that no longer renders - and\n // therefore no tab stop in the menu at all.\n const activeId =\n focusedId && navigableIds.includes(focusedId) ? focusedId : (navigableIds[0] ?? null);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLUListElement>) => {\n // A `component` item may hold a real control - a text field, a switch -\n // whose own arrow keys must not be hijacked for menu navigation. Only\n // keys pressed on a menuitem drive the menu.\n if (!(event.target as HTMLElement).closest('[role=\"menuitem\"]')) return;\n if (navigableIds.length === 0) return;\n\n const focusAt = (index: number) => {\n const id = navigableIds[(index + navigableIds.length) % navigableIds.length];\n setFocusedId(id);\n itemRefs.current.get(id)?.focus();\n };\n const current = Math.max(0, navigableIds.indexOf(activeId ?? ''));\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n focusAt(current + 1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n focusAt(current - 1);\n break;\n case 'Home':\n event.preventDefault();\n focusAt(0);\n break;\n case 'End':\n event.preventDefault();\n focusAt(navigableIds.length - 1);\n break;\n case 'ArrowLeft':\n // Only meaningful in a submenu. `stopPropagation` keeps the parent\n // panel - which is a React ancestor, portal notwithstanding - from\n // treating the same keypress as its own.\n if (onRequestClose) {\n event.preventDefault();\n event.stopPropagation();\n onRequestClose();\n }\n break;\n default:\n break;\n }\n },\n [navigableIds, activeId, onRequestClose],\n );\n\n // Render individual menu item\n const renderMenuItem = (item: MenuItemType): React.ReactNode => {\n switch (item.type) {\n case 'item':\n return (\n <li\n key={item.id}\n ref={(element) => registerItem(item.id, element)}\n role=\"menuitem\"\n // Roving tabIndex: the menu is one tab stop and arrows move within\n // it. Making every item a tab stop would bury whatever follows a\n // ten-item menu ten presses deep.\n tabIndex={!item.disabled && item.id === activeId ? 0 : -1}\n // `aria-disabled`, not the `disabled` attribute, which an `li` does\n // not have. The click handler already returns early.\n aria-disabled={item.disabled || undefined}\n className={[\n 'eidos-menu-item',\n item.disabled ? 'eidos-menu-item--disabled' : '',\n item.color ? `eidos-menu-item--${item.color}` : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => handleItemClick(item)}\n onKeyDown={(event) => {\n // An `li` is not a button, so Enter and Space produce no click of\n // their own - activation has to be wired by hand. Space is\n // prevented to stop the page scrolling underneath.\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleItemClick(item);\n }\n }}\n >\n {item.icon && renderIcon(item.icon, 'eidos-menu-icon')}\n <span className={`eidos-menu-label`}>{item.label}</span>\n {item.shortcut && (\n <Kbd size=\"sm\" className=\"eidos-menu-shortcut\">\n {item.shortcut}\n </Kbd>\n )}\n </li>\n );\n\n case 'component':\n // `role=\"none\"` because the `li` is a wrapper: whatever the consumer\n // renders owns its own semantics, and calling it a `menuitem` would nest\n // that control inside an interactive role.\n return (\n <li key={item.id} role=\"none\" className={`eidos-menu-component-item`}>\n {item.component}\n </li>\n );\n\n case 'separator':\n return <li key={item.id} role=\"separator\" className={`eidos-menu-separator`} />;\n\n case 'nested': {\n const triggerElement = (\n <div\n ref={(element) => registerItem(item.id, element)}\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n aria-expanded={openSubmenuId === item.id}\n aria-disabled={item.disabled || undefined}\n tabIndex={!item.disabled && item.id === activeId ? 0 : -1}\n className={[\n 'eidos-menu-nested-trigger',\n item.disabled ? 'eidos-menu-nested-trigger--disabled' : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onKeyDown={(event) => {\n if (item.disabled) return;\n // ArrowRight is the menu idiom for \"open this submenu\"; Enter and\n // Space do the same. This used to synthesise a click on itself so\n // the event would reach the overlay's trigger wrapper; the state\n // is now right here.\n if (event.key === 'ArrowRight' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n setOpenSubmenuId(item.id);\n }\n }}\n >\n {item.icon && renderIcon(item.icon, 'eidos-menu-icon')}\n <span className={`eidos-menu-label`}>{item.label}</span>\n <ChevronRight className={`eidos-menu-nested-arrow`} />\n </div>\n );\n\n return (\n <li key={item.id} role=\"none\" className={`eidos-menu-nested-item`}>\n <Dropdown\n open={openSubmenuId === item.id}\n onOpenChange={(next) => setOpenSubmenuId(next ? item.id : null)}\n trigger={triggerElement}\n content={\n <MenuPanel\n items={item.items}\n onItemClick={onItemClick}\n // Lets `ArrowLeft` in the child close this level. Focus\n // returns to the trigger on its own - `useDialogFocus`\n // restores it when the panel unmounts.\n onRequestClose={() => setOpenSubmenuId(null)}\n />\n }\n placement=\"right\"\n isNested={true}\n fullWidth\n // `disabled` was accepted on a nested item and then ignored, so a\n // disabled submenu opened like any other.\n disabled={item.disabled}\n />\n </li>\n );\n }\n\n default:\n return null;\n }\n };\n\n return (\n <ul ref={listRef} role=\"menu\" className={`eidos-menu ${className}`} onKeyDown={handleKeyDown}>\n {items.map(renderMenuItem)}\n </ul>\n );\n};\n\nexport const Menu: React.FC<MenuWrapperProps> = ({\n trigger,\n items,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n autoWidth = true,\n triggerRef,\n closeOnItemClick = true,\n tooltip,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleItemClick = useCallback(\n (_item: MenuItem) => {\n // `item.onClick` has already run, in `MenuPanel`. All that is left is\n // closing.\n //\n // This used to dispatch a synthetic `mousedown` at `document` on a 10ms\n // timer - a counterfeit \"click outside\" - because the overlay owned its\n // open state privately and that was the only lever available. It worked by\n // being indistinguishable from the click a mouse user had just made, and\n // it broke the moment nobody had clicked: activating an item with the\n // keyboard closed every other dropdown on the page that dismisses on\n // outside clicks.\n if (closeOnItemClick) setIsOpen(false);\n },\n [closeOnItemClick],\n );\n\n // The trigger opens a menu, and nothing said so: `Dropdown` adds no ARIA to\n // its trigger (deliberately - it does not know what its content is), so a\n // screen reader announced a plain button. `Menu` does know, and now that it\n // owns the open state it can describe that too (SC 4.1.2), which was the\n // missing half while the state was private.\n const describedTrigger = React.isValidElement(trigger)\n ? React.cloneElement(\n trigger as React.ReactElement<{ 'aria-haspopup'?: string; 'aria-expanded'?: boolean }>,\n { 'aria-haspopup': 'menu', 'aria-expanded': isOpen },\n )\n : trigger;\n\n const dropdown = (\n <Dropdown\n open={isOpen}\n onOpenChange={setIsOpen}\n trigger={describedTrigger}\n content={<MenuPanel items={items} onItemClick={handleItemClick} />}\n minWidth={minWidth}\n maxWidth={maxWidth}\n minHeight={minHeight}\n maxHeight={maxHeight}\n autoWidth={autoWidth}\n triggerRef={triggerRef}\n />\n );\n\n return tooltip ? <Tooltip message={tooltip}>{dropdown}</Tooltip> : dropdown;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-VPN7AR7T.cjs","../src/components/Menu/Menu.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-VPN7AR7T.cjs","sourcesContent":[null,"import React, { useCallback, useMemo, useRef, useState } from 'react';\nimport { ChevronRight } from 'lucide-react';\nimport type { MenuProps, MenuItemType, MenuItem, MenuWrapperProps } from './Menu.types';\nimport { Dropdown } from '../Dropdown/Dropdown.component';\nimport { Tooltip } from '../Tooltip/Tooltip.component';\nimport { Kbd } from '../Kbd/Kbd.component';\nimport { renderIcon, useDialogFocus } from '../../utils';\n\n/**\n * MenuPanel - the bare menu list, without any trigger or dropdown wrapper.\n * Exported for use in SplitButton, ContextMenu, and other consumers that need\n * to render the menu content inside their own Dropdown / portal.\n *\n * ## This element owns the menu semantics, not the overlay around it\n *\n * `role=\"menu\"` belongs on the element that directly contains the items, which\n * is this `<ul>`. It used to sit on `Dropdown`'s content `<div>` instead, one\n * level further out, so the menu's only child was a list and the items were\n * `listitem`s - `aria-required-children`, and a structure no screen reader\n * could present as a menu.\n *\n * ## The keyboard model is not optional\n *\n * The items were plain `<li onClick>`: no role, no `tabIndex`, no key handler.\n * Every menu in the library - `Menu`, `ContextMenu`, `SplitButton`, `Table` and\n * `DataGrid` row actions - was therefore **operable by mouse only**, which is\n * WCAG 2.1.1 (Level A). Axe reported none of it, because every menu story\n * renders closed and axe only sees what is on screen.\n *\n * A `menuitem` role is a promise that arrow keys work, so the two land\n * together: roving `tabIndex` (one tab stop for the whole menu), Up/Down to\n * move, Home/End to jump, Enter/Space to activate, ArrowRight to open a\n * submenu. Focus enters on open and returns to the trigger on close.\n */\nexport const MenuPanel: React.FC<MenuProps> = ({\n items,\n className = '',\n onItemClick,\n onRequestClose,\n}) => {\n const listRef = useRef<HTMLUListElement>(null);\n const itemRefs = useRef(new Map<string, HTMLElement>());\n\n const registerItem = useCallback((id: string, element: HTMLElement | null) => {\n if (element) itemRefs.current.set(id, element);\n else itemRefs.current.delete(id);\n }, []);\n\n // Moves focus into the menu when it opens and back to the trigger when it\n // closes. `trapTab: false` - a menu is not a dialog, and confining Tab to it\n // would strand the user; the hook's frame-retry loop is what matters here,\n // because `Dropdown`'s content is `visibility: hidden` until it has been\n // positioned and `.focus()` on a hidden element is a silent no-op.\n //\n // `active` is unconditionally true: this panel is only ever mounted by an\n // open overlay (`Dropdown` and `ContextMenu` both render content\n // conditionally), so mounting *is* opening.\n useDialogFocus(true, listRef, { trapTab: false });\n\n // Handle menu item click\n const handleItemClick = useCallback(\n (item: MenuItem) => {\n if (item.disabled) return;\n\n // Execute the item's onClick handler first\n if (item.onClick) {\n item.onClick();\n }\n\n // Then call the onItemClick callback (which will close the dropdown)\n if (onItemClick) {\n onItemClick(item);\n }\n },\n [onItemClick],\n );\n\n // The items arrow keys move between, in visual order. Separators are not\n // stops, `component` items own their own focusable content, and a disabled\n // item is skipped rather than being a dead stop.\n const navigableIds = useMemo(\n () =>\n items\n .filter((item) => (item.type === 'item' || item.type === 'nested') && !item.disabled)\n .map((item) => item.id),\n [items],\n );\n\n const [focusedId, setFocusedId] = useState<string | null>(null);\n // Which submenu is open, owned here rather than inside each nested overlay:\n // the trigger has to advertise `aria-expanded`, and `ArrowLeft` in the child\n // has to be able to close it. Both were impossible while the overlay kept\n // that state to itself.\n const [openSubmenuId, setOpenSubmenuId] = useState<string | null>(null);\n // Validated rather than trusted: `items` can change while the menu is open\n // (a filtered list, an action that disables its neighbour), which would\n // otherwise leave the roving tabIndex on an id that no longer renders - and\n // therefore no tab stop in the menu at all.\n const activeId =\n focusedId && navigableIds.includes(focusedId) ? focusedId : (navigableIds[0] ?? null);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLUListElement>) => {\n // A `component` item may hold a real control - a text field, a switch -\n // whose own arrow keys must not be hijacked for menu navigation. Only\n // keys pressed on a menuitem drive the menu.\n if (!(event.target as HTMLElement).closest('[role=\"menuitem\"]')) return;\n if (navigableIds.length === 0) return;\n\n const focusAt = (index: number) => {\n const id = navigableIds[(index + navigableIds.length) % navigableIds.length];\n setFocusedId(id);\n itemRefs.current.get(id)?.focus();\n };\n const current = Math.max(0, navigableIds.indexOf(activeId ?? ''));\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n focusAt(current + 1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n focusAt(current - 1);\n break;\n case 'Home':\n event.preventDefault();\n focusAt(0);\n break;\n case 'End':\n event.preventDefault();\n focusAt(navigableIds.length - 1);\n break;\n case 'ArrowLeft':\n // Only meaningful in a submenu. `stopPropagation` keeps the parent\n // panel - which is a React ancestor, portal notwithstanding - from\n // treating the same keypress as its own.\n if (onRequestClose) {\n event.preventDefault();\n event.stopPropagation();\n onRequestClose();\n }\n break;\n default:\n break;\n }\n },\n [navigableIds, activeId, onRequestClose],\n );\n\n // Render individual menu item\n const renderMenuItem = (item: MenuItemType): React.ReactNode => {\n switch (item.type) {\n case 'item':\n return (\n <li\n key={item.id}\n ref={(element) => registerItem(item.id, element)}\n role=\"menuitem\"\n // Roving tabIndex: the menu is one tab stop and arrows move within\n // it. Making every item a tab stop would bury whatever follows a\n // ten-item menu ten presses deep.\n tabIndex={!item.disabled && item.id === activeId ? 0 : -1}\n // `aria-disabled`, not the `disabled` attribute, which an `li` does\n // not have. The click handler already returns early.\n aria-disabled={item.disabled || undefined}\n className={[\n 'eidos-menu-item',\n item.disabled ? 'eidos-menu-item--disabled' : '',\n item.color ? `eidos-menu-item--${item.color}` : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => handleItemClick(item)}\n onKeyDown={(event) => {\n // An `li` is not a button, so Enter and Space produce no click of\n // their own - activation has to be wired by hand. Space is\n // prevented to stop the page scrolling underneath.\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleItemClick(item);\n }\n }}\n >\n {item.icon && renderIcon(item.icon, 'eidos-menu-icon')}\n <span className={`eidos-menu-label`}>{item.label}</span>\n {item.shortcut && (\n <Kbd size=\"sm\" className=\"eidos-menu-shortcut\">\n {item.shortcut}\n </Kbd>\n )}\n </li>\n );\n\n case 'component':\n // `role=\"none\"` because the `li` is a wrapper: whatever the consumer\n // renders owns its own semantics, and calling it a `menuitem` would nest\n // that control inside an interactive role.\n return (\n <li key={item.id} role=\"none\" className={`eidos-menu-component-item`}>\n {item.component}\n </li>\n );\n\n case 'separator':\n return <li key={item.id} role=\"separator\" className={`eidos-menu-separator`} />;\n\n case 'nested': {\n const triggerElement = (\n <div\n ref={(element) => registerItem(item.id, element)}\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n aria-expanded={openSubmenuId === item.id}\n aria-disabled={item.disabled || undefined}\n tabIndex={!item.disabled && item.id === activeId ? 0 : -1}\n className={[\n 'eidos-menu-nested-trigger',\n item.disabled ? 'eidos-menu-nested-trigger--disabled' : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onKeyDown={(event) => {\n if (item.disabled) return;\n // ArrowRight is the menu idiom for \"open this submenu\"; Enter and\n // Space do the same. This used to synthesise a click on itself so\n // the event would reach the overlay's trigger wrapper; the state\n // is now right here.\n if (event.key === 'ArrowRight' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n setOpenSubmenuId(item.id);\n }\n }}\n >\n {item.icon && renderIcon(item.icon, 'eidos-menu-icon')}\n <span className={`eidos-menu-label`}>{item.label}</span>\n <ChevronRight className={`eidos-menu-nested-arrow`} />\n </div>\n );\n\n return (\n <li key={item.id} role=\"none\" className={`eidos-menu-nested-item`}>\n <Dropdown\n open={openSubmenuId === item.id}\n onOpenChange={(next) => setOpenSubmenuId(next ? item.id : null)}\n trigger={triggerElement}\n content={\n <MenuPanel\n items={item.items}\n onItemClick={onItemClick}\n // Lets `ArrowLeft` in the child close this level. Focus\n // returns to the trigger on its own - `useDialogFocus`\n // restores it when the panel unmounts.\n onRequestClose={() => setOpenSubmenuId(null)}\n />\n }\n placement=\"right\"\n isNested={true}\n fullWidth\n // `disabled` was accepted on a nested item and then ignored, so a\n // disabled submenu opened like any other.\n disabled={item.disabled}\n />\n </li>\n );\n }\n\n default:\n return null;\n }\n };\n\n return (\n <ul ref={listRef} role=\"menu\" className={`eidos-menu ${className}`} onKeyDown={handleKeyDown}>\n {items.map(renderMenuItem)}\n </ul>\n );\n};\n\nexport const Menu: React.FC<MenuWrapperProps> = ({\n trigger,\n items,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n autoWidth = true,\n triggerRef,\n closeOnItemClick = true,\n tooltip,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleItemClick = useCallback(\n (_item: MenuItem) => {\n // `item.onClick` has already run, in `MenuPanel`. All that is left is\n // closing.\n //\n // This used to dispatch a synthetic `mousedown` at `document` on a 10ms\n // timer - a counterfeit \"click outside\" - because the overlay owned its\n // open state privately and that was the only lever available. It worked by\n // being indistinguishable from the click a mouse user had just made, and\n // it broke the moment nobody had clicked: activating an item with the\n // keyboard closed every other dropdown on the page that dismisses on\n // outside clicks.\n if (closeOnItemClick) setIsOpen(false);\n },\n [closeOnItemClick],\n );\n\n // The trigger opens a menu, and nothing said so: `Dropdown` adds no ARIA to\n // its trigger (deliberately - it does not know what its content is), so a\n // screen reader announced a plain button. `Menu` does know, and now that it\n // owns the open state it can describe that too (SC 4.1.2), which was the\n // missing half while the state was private.\n const describedTrigger = React.isValidElement(trigger)\n ? React.cloneElement(\n trigger as React.ReactElement<{ 'aria-haspopup'?: string; 'aria-expanded'?: boolean }>,\n { 'aria-haspopup': 'menu', 'aria-expanded': isOpen },\n )\n : trigger;\n\n const dropdown = (\n <Dropdown\n open={isOpen}\n onOpenChange={setIsOpen}\n trigger={describedTrigger}\n content={<MenuPanel items={items} onItemClick={handleItemClick} />}\n minWidth={minWidth}\n maxWidth={maxWidth}\n minHeight={minHeight}\n maxHeight={maxHeight}\n autoWidth={autoWidth}\n triggerRef={triggerRef}\n />\n );\n\n return tooltip ? <Tooltip message={tooltip}>{dropdown}</Tooltip> : dropdown;\n};\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Button
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GHUEVNNU.js";
|
|
4
4
|
import {
|
|
5
5
|
renderIcon
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PP6HS4GR.js";
|
|
7
7
|
|
|
8
8
|
// src/components/Alert/Alert.component.tsx
|
|
9
9
|
import { Info, CircleCheck, TriangleAlert, CircleX, X } from "lucide-react";
|
|
@@ -76,4 +76,4 @@ var Alert = ({
|
|
|
76
76
|
export {
|
|
77
77
|
Alert
|
|
78
78
|
};
|
|
79
|
-
//# sourceMappingURL=chunk-
|
|
79
|
+
//# sourceMappingURL=chunk-XBIMNWE6.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
devWarn
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PP6HS4GR.js";
|
|
4
4
|
|
|
5
5
|
// src/components/ThemeProvider/ThemeProvider.component.tsx
|
|
6
6
|
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
@@ -521,4 +521,4 @@ export {
|
|
|
521
521
|
isFontAvailable,
|
|
522
522
|
isFontStackAvailable
|
|
523
523
|
};
|
|
524
|
-
//# sourceMappingURL=chunk-
|
|
524
|
+
//# sourceMappingURL=chunk-XOUNVK45.js.map
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
-
|
|
3
|
-
var _chunkENMDOQQOcjs = require('./chunk-ENMDOQQO.cjs');
|
|
4
|
-
|
|
5
|
-
// src/components/NumberInput/NumberInput.component.tsx
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/components/NumberInput/NumberInput.component.tsx
|
|
6
2
|
var _react = require('react');
|
|
7
3
|
var _lucidereact = require('lucide-react');
|
|
8
4
|
var _jsxruntime = require('react/jsx-runtime');
|
|
@@ -100,7 +96,7 @@ var NumberInput = _react.forwardRef.call(void 0,
|
|
|
100
96
|
const rootClasses = [
|
|
101
97
|
"eidos-number-input",
|
|
102
98
|
`eidos-number-input--${size}`,
|
|
103
|
-
fullWidth &&
|
|
99
|
+
fullWidth && "eidos-number-input--full-width",
|
|
104
100
|
error && "eidos-number-input--error",
|
|
105
101
|
className
|
|
106
102
|
].filter(Boolean).join(" ");
|
|
@@ -203,4 +199,4 @@ NumberInput.displayName = "NumberInput";
|
|
|
203
199
|
|
|
204
200
|
|
|
205
201
|
exports.NumberInput = NumberInput;
|
|
206
|
-
//# sourceMappingURL=chunk-
|
|
202
|
+
//# sourceMappingURL=chunk-XR72A66Q.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-XR72A66Q.cjs","../src/components/NumberInput/NumberInput.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-XR72A66Q.cjs","sourcesContent":[null,"import React, { forwardRef, useState, useEffect, useId } from 'react';\nimport { Minus, Plus } from 'lucide-react';\n\nimport type { NumberInputProps } from './NumberInput.types';\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n value,\n defaultValue = 0,\n onChange,\n min,\n max,\n step = 1,\n precision = 0,\n placeholder,\n disabled = false,\n readOnly = false,\n label,\n helperText,\n error = false,\n errorMessage,\n size = 'md',\n fullWidth = false,\n allowTyping = true,\n className = '',\n id,\n name,\n },\n ref,\n ) => {\n const generatedId = useId();\n const inputId = id || `number-input-${generatedId}`;\n // Associates the visible error with the control. Without it the message\n // is just a red line of text sitting near the field - obvious to look\n // at, absent from the accessibility tree (SC 3.3.1). See the fuller\n // note in `Input`.\n const errorId = `${inputId}-error`;\n\n // Controlled / uncontrolled bridge\n const isControlled = value !== undefined;\n const [localValue, setLocalValue] = useState<number>(defaultValue);\n\n // Intermediate text while the user is actively typing\n const [inputText, setInputText] = useState<string>(defaultValue.toFixed(precision));\n const [isFocused, setIsFocused] = useState(false);\n\n const currentValue = isControlled ? value! : localValue;\n\n // When min/max props change (e.g. via Storybook controls), clamp the\n // uncontrolled localValue so the display never shows an out-of-range value.\n useEffect(() => {\n if (isControlled) return;\n setLocalValue((prev) => {\n let result = prev;\n if (min !== undefined) result = Math.max(min, result);\n if (max !== undefined) result = Math.min(max, result);\n return parseFloat(result.toFixed(precision));\n });\n }, [min, max, precision, isControlled]);\n\n // Clamp to [min, max] and apply precision rounding\n const clampValue = (raw: number): number => {\n let result = raw;\n if (min !== undefined) result = Math.max(min, result);\n if (max !== undefined) result = Math.min(max, result);\n return parseFloat(result.toFixed(precision));\n };\n\n const commitValue = (newVal: number) => {\n const clamped = clampValue(newVal);\n if (!isControlled) setLocalValue(clamped);\n onChange?.(clamped);\n };\n\n // ── Stepper buttons ────────────────────────────────────────────────────\n const handleDecrement = () => {\n if (disabled || readOnly) return;\n commitValue(currentValue - step);\n };\n\n const handleIncrement = () => {\n if (disabled || readOnly) return;\n commitValue(currentValue + step);\n };\n\n // ── Typing mode handlers ───────────────────────────────────────────────\n const handleTextFocus = () => {\n setInputText(currentValue.toFixed(precision));\n setIsFocused(true);\n };\n\n const handleTextChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputText(e.target.value);\n };\n\n const handleTextBlur = () => {\n setIsFocused(false);\n const parsed = parseFloat(inputText);\n if (!isNaN(parsed)) {\n const clamped = clampValue(parsed);\n if (!isControlled) setLocalValue(clamped);\n onChange?.(clamped);\n setInputText(clamped.toFixed(precision));\n } else {\n // Revert to the last known-good value\n setInputText(currentValue.toFixed(precision));\n }\n };\n\n // ArrowUp / ArrowDown keyboard support for both display modes\n const handleDisplayKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n handleIncrement();\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n handleDecrement();\n }\n };\n\n // ── Display value ──────────────────────────────────────────────────────\n // Show intermediate inputText while focused in typing mode;\n // otherwise always derive from the real (controlled/uncontrolled) value.\n const formattedValue = currentValue.toFixed(precision);\n const displayedText = allowTyping && isFocused ? inputText : formattedValue;\n\n // ── Disabled states for buttons ────────────────────────────────────────\n const isDecrementDisabled = disabled || readOnly || (min !== undefined && currentValue <= min);\n const isIncrementDisabled = disabled || readOnly || (max !== undefined && currentValue >= max);\n\n // ── CSS classes ────────────────────────────────────────────────────────\n const rootClasses = [\n 'eidos-number-input',\n `eidos-number-input--${size}`,\n fullWidth && 'eidos-number-input--full-width',\n error && 'eidos-number-input--error',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const controlClasses = [\n 'eidos-number-input-control',\n disabled && 'eidos-number-input-control--disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={rootClasses}>\n {label && (\n <label htmlFor={allowTyping ? inputId : undefined} className=\"eidos-number-input-label\">\n {label}\n </label>\n )}\n\n <div\n className={controlClasses}\n role={allowTyping ? undefined : 'spinbutton'}\n aria-valuemin={allowTyping ? undefined : min}\n aria-valuemax={allowTyping ? undefined : max}\n aria-valuenow={allowTyping ? undefined : currentValue}\n aria-label={allowTyping ? undefined : (label ?? 'Number input')}\n aria-disabled={disabled || undefined}\n tabIndex={!allowTyping && !disabled ? 0 : undefined}\n onKeyDown={!allowTyping ? handleDisplayKeyDown : undefined}\n >\n <button\n type=\"button\"\n className=\"eidos-number-input-btn\"\n onClick={handleDecrement}\n disabled={isDecrementDisabled}\n aria-label=\"Decrease\"\n >\n <Minus />\n </button>\n\n <div className=\"eidos-number-input-divider\" aria-hidden=\"true\" />\n\n {allowTyping ? (\n <input\n id={inputId}\n type=\"text\"\n className=\"eidos-number-input-display\"\n value={displayedText}\n onChange={handleTextChange}\n onFocus={handleTextFocus}\n onBlur={handleTextBlur}\n onKeyDown={handleDisplayKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n inputMode=\"decimal\"\n role=\"spinbutton\"\n aria-invalid={error ? true : undefined}\n aria-describedby={error && errorMessage ? errorId : undefined}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={currentValue}\n aria-label={label ?? 'Number input'}\n />\n ) : (\n <span className=\"eidos-number-input-display\" aria-hidden=\"true\">\n {placeholder && formattedValue === (0).toFixed(precision) && !isFocused\n ? placeholder\n : formattedValue}\n </span>\n )}\n\n <div className=\"eidos-number-input-divider\" aria-hidden=\"true\" />\n\n <button\n type=\"button\"\n className=\"eidos-number-input-btn\"\n onClick={handleIncrement}\n disabled={isIncrementDisabled}\n aria-label=\"Increase\"\n >\n <Plus />\n </button>\n </div>\n\n {/* Hidden native <input type=\"number\"> for form integration */}\n <input\n ref={ref}\n type=\"number\"\n name={name}\n value={currentValue}\n onChange={() => {}}\n className=\"eidos-number-input-hidden\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled}\n readOnly={readOnly}\n min={min}\n max={max}\n step={step}\n />\n\n {helperText && !error && <span className=\"eidos-number-input-helper\">{helperText}</span>}\n\n {error && errorMessage && (\n <span id={errorId} className=\"eidos-number-input-error\" role=\"alert\">\n {errorMessage}\n </span>\n )}\n </div>\n );\n },\n);\n\nNumberInput.displayName = 'NumberInput';\n"]}
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkBKUZF7CWcjs = require('./chunk-BKUZF7CW.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkKF2OGUADcjs = require('./chunk-KF2OGUAD.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkMKQVDEHIcjs = require('./chunk-MKQVDEHI.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _chunkNSA7ASZ7cjs = require('./chunk-NSA7ASZ7.cjs');
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
var _chunkENMDOQQOcjs = require('./chunk-ENMDOQQO.cjs');
|
|
16
|
+
var _chunkR5WI5IGRcjs = require('./chunk-R5WI5IGR.cjs');
|
|
18
17
|
|
|
19
18
|
|
|
20
19
|
|
|
@@ -637,7 +636,7 @@ var Calendar = ({
|
|
|
637
636
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-calendar", children: [
|
|
638
637
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-calendar-header", children: showNavigation ? granularity === "month" ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
639
638
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
640
|
-
|
|
639
|
+
_chunkNSA7ASZ7cjs.Button,
|
|
641
640
|
{
|
|
642
641
|
variant: "text",
|
|
643
642
|
icon: _lucidereact.ChevronLeft,
|
|
@@ -646,7 +645,7 @@ var Calendar = ({
|
|
|
646
645
|
}
|
|
647
646
|
),
|
|
648
647
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-calendar-selectors", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
649
|
-
|
|
648
|
+
_chunkBKUZF7CWcjs.Select,
|
|
650
649
|
{
|
|
651
650
|
options: yearOptions,
|
|
652
651
|
value: currentDate.year().toString(),
|
|
@@ -659,7 +658,7 @@ var Calendar = ({
|
|
|
659
658
|
}
|
|
660
659
|
) }),
|
|
661
660
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
662
|
-
|
|
661
|
+
_chunkNSA7ASZ7cjs.Button,
|
|
663
662
|
{
|
|
664
663
|
variant: "text",
|
|
665
664
|
icon: _lucidereact.ChevronRight,
|
|
@@ -669,7 +668,7 @@ var Calendar = ({
|
|
|
669
668
|
)
|
|
670
669
|
] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
671
670
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
672
|
-
|
|
671
|
+
_chunkNSA7ASZ7cjs.Button,
|
|
673
672
|
{
|
|
674
673
|
variant: "text",
|
|
675
674
|
icon: _lucidereact.ChevronLeft,
|
|
@@ -679,7 +678,7 @@ var Calendar = ({
|
|
|
679
678
|
),
|
|
680
679
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-calendar-selectors", children: [
|
|
681
680
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
682
|
-
|
|
681
|
+
_chunkBKUZF7CWcjs.Select,
|
|
683
682
|
{
|
|
684
683
|
options: monthOptions,
|
|
685
684
|
value: currentDate.month().toString(),
|
|
@@ -692,7 +691,7 @@ var Calendar = ({
|
|
|
692
691
|
}
|
|
693
692
|
),
|
|
694
693
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
695
|
-
|
|
694
|
+
_chunkBKUZF7CWcjs.Select,
|
|
696
695
|
{
|
|
697
696
|
options: yearOptions,
|
|
698
697
|
value: currentDate.year().toString(),
|
|
@@ -706,7 +705,7 @@ var Calendar = ({
|
|
|
706
705
|
)
|
|
707
706
|
] }),
|
|
708
707
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
709
|
-
|
|
708
|
+
_chunkNSA7ASZ7cjs.Button,
|
|
710
709
|
{
|
|
711
710
|
variant: "text",
|
|
712
711
|
icon: _lucidereact.ChevronRight,
|
|
@@ -808,7 +807,7 @@ var TimeInput = ({
|
|
|
808
807
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-time-input-inputs", children: [
|
|
809
808
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-time-input-input-group", children: [
|
|
810
809
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
811
|
-
|
|
810
|
+
_chunkKF2OGUADcjs.Input,
|
|
812
811
|
{
|
|
813
812
|
type: "number",
|
|
814
813
|
value: hours,
|
|
@@ -825,7 +824,7 @@ var TimeInput = ({
|
|
|
825
824
|
] }),
|
|
826
825
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-time-input-input-group", children: [
|
|
827
826
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
828
|
-
|
|
827
|
+
_chunkKF2OGUADcjs.Input,
|
|
829
828
|
{
|
|
830
829
|
type: "number",
|
|
831
830
|
value: minutes,
|
|
@@ -841,7 +840,7 @@ var TimeInput = ({
|
|
|
841
840
|
includeSeconds && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-time-input-separator", children: ":" })
|
|
842
841
|
] }),
|
|
843
842
|
includeSeconds && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-time-input-input-group", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
844
|
-
|
|
843
|
+
_chunkKF2OGUADcjs.Input,
|
|
845
844
|
{
|
|
846
845
|
type: "number",
|
|
847
846
|
value: seconds,
|
|
@@ -897,14 +896,14 @@ var DatePicker = ({
|
|
|
897
896
|
const [isOpen, setIsOpen] = _react.useState.call(void 0, false);
|
|
898
897
|
const panelId = `${_react.useId.call(void 0, )}-date-panel`;
|
|
899
898
|
const panelRef = _react.useRef.call(void 0, null);
|
|
900
|
-
|
|
899
|
+
_chunkR5WI5IGRcjs.useDialogFocus.call(void 0, isOpen, panelRef, { trapTab: false });
|
|
901
900
|
const fieldRef = _react.useRef.call(void 0, null);
|
|
902
901
|
_react.useEffect.call(void 0, () => {
|
|
903
902
|
const element = fieldRef.current;
|
|
904
903
|
if (!element) return;
|
|
905
904
|
const named = (_nullishCoalesce(_optionalChain([element, 'access', _10 => _10.labels, 'optionalAccess', _11 => _11.length]), () => ( 0))) > 0 || element.hasAttribute("aria-label") || element.hasAttribute("aria-labelledby");
|
|
906
905
|
if (!named) {
|
|
907
|
-
|
|
906
|
+
_chunkR5WI5IGRcjs.devWarn.call(void 0,
|
|
908
907
|
"date-picker-missing-label",
|
|
909
908
|
'DatePicker: no accessible name. Pass `label` for a visible one, or `inputProps={{ "aria-label": "..." }}` where it must stay visually unlabelled - otherwise the field is announced as just "combobox". A placeholder is not a label, and disappears as soon as a date is chosen.'
|
|
910
909
|
);
|
|
@@ -1189,7 +1188,7 @@ var DatePicker = ({
|
|
|
1189
1188
|
"div",
|
|
1190
1189
|
{
|
|
1191
1190
|
ref: triggerRef,
|
|
1192
|
-
className: `eidos-date-picker-trigger${fullWidth ? `
|
|
1191
|
+
className: `eidos-date-picker-trigger${fullWidth ? ` eidos-date-picker-trigger--full-width` : ""}`,
|
|
1193
1192
|
onKeyDown: (event) => {
|
|
1194
1193
|
if (disabled) return;
|
|
1195
1194
|
if (event.key === "Enter" || event.key === " " || event.key === "ArrowDown") {
|
|
@@ -1201,7 +1200,7 @@ var DatePicker = ({
|
|
|
1201
1200
|
}
|
|
1202
1201
|
},
|
|
1203
1202
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1204
|
-
|
|
1203
|
+
_chunkKF2OGUADcjs.Input,
|
|
1205
1204
|
{
|
|
1206
1205
|
ref: fieldRef,
|
|
1207
1206
|
value: displayValue,
|
|
@@ -1361,9 +1360,9 @@ var DatePicker = ({
|
|
|
1361
1360
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1362
1361
|
"div",
|
|
1363
1362
|
{
|
|
1364
|
-
className: `eidos-date-picker-container${fullWidth ? `
|
|
1363
|
+
className: `eidos-date-picker-container${fullWidth ? ` eidos-date-picker-container--full-width` : ""} ${className}`.trim(),
|
|
1365
1364
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1366
|
-
|
|
1365
|
+
_chunkMKQVDEHIcjs.Dropdown,
|
|
1367
1366
|
{
|
|
1368
1367
|
open: isOpen,
|
|
1369
1368
|
onOpenChange: setIsOpen,
|
|
@@ -1389,4 +1388,4 @@ DatePicker.displayName = "DatePicker";
|
|
|
1389
1388
|
|
|
1390
1389
|
|
|
1391
1390
|
exports.Calendar = Calendar; exports.TimeInput = TimeInput; exports.DatePicker = DatePicker;
|
|
1392
|
-
//# sourceMappingURL=chunk-
|
|
1391
|
+
//# sourceMappingURL=chunk-YHSCUPP6.cjs.map
|