eidos-ui 3.4.0 → 3.5.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/dist/{Menu.types-DNIpjSAK.d.ts → Menu.types-BN4g1-3A.d.ts} +9 -0
- package/dist/{Menu.types-DwcuCZM7.d.cts → Menu.types-CTnUijv5.d.cts} +9 -0
- package/dist/{Select.types-BqaD7bmB.d.ts → Select.types-C2tGy1vj.d.ts} +10 -0
- package/dist/{Select.types-2p-mpaBL.d.cts → Select.types-ok-03rLo.d.cts} +10 -0
- package/dist/{Table.types-CPj-udMc.d.cts → Table.types-D-9tC0kJ.d.cts} +2 -3
- package/dist/{Table.types-CZZ7QWAI.d.ts → Table.types-D8pmgxKA.d.ts} +2 -3
- package/dist/{Toolbar.types-RN0klQzu.d.ts → Toolbar.types-CKnQC_TW.d.ts} +1 -1
- package/dist/{Toolbar.types-DSk8z2iy.d.cts → Toolbar.types-DUz2mxct.d.cts} +1 -1
- 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-WGCGSM5P.js → chunk-24HKKSKX.js} +11 -18
- package/dist/chunk-24HKKSKX.js.map +1 -0
- package/dist/{chunk-BBU7QG7L.js → chunk-26SO4LZ5.js} +4 -4
- package/dist/{chunk-Y7VSWZWM.js → chunk-2JW3WSBF.js} +4 -4
- package/dist/{chunk-IXVM2XNS.js → chunk-2PCCGQOH.js} +89 -19
- package/dist/chunk-2PCCGQOH.js.map +1 -0
- package/dist/{chunk-4LET2PEX.cjs → chunk-2T7ZMMH5.cjs} +64 -11
- package/dist/chunk-2T7ZMMH5.cjs.map +1 -0
- package/dist/{chunk-VHSTB7GB.cjs → chunk-35LGEPLP.cjs} +13 -2
- package/dist/chunk-35LGEPLP.cjs.map +1 -0
- package/dist/{chunk-5E4DYTZ3.cjs → chunk-36JFXFM2.cjs} +36 -36
- package/dist/{chunk-5E4DYTZ3.cjs.map → chunk-36JFXFM2.cjs.map} +1 -1
- package/dist/{chunk-XMXL6NVJ.cjs → chunk-3KBBJZHK.cjs} +11 -11
- package/dist/{chunk-XMXL6NVJ.cjs.map → chunk-3KBBJZHK.cjs.map} +1 -1
- package/dist/{chunk-BIANFFJL.cjs → chunk-3RWZC6OW.cjs} +5 -5
- package/dist/{chunk-BIANFFJL.cjs.map → chunk-3RWZC6OW.cjs.map} +1 -1
- package/dist/{chunk-CBT3TTQR.cjs → chunk-3ZRFOKDM.cjs} +30 -30
- package/dist/{chunk-CBT3TTQR.cjs.map → chunk-3ZRFOKDM.cjs.map} +1 -1
- package/dist/{chunk-5V7DXZWT.cjs → chunk-4AO5RKV5.cjs} +25 -37
- package/dist/chunk-4AO5RKV5.cjs.map +1 -0
- package/dist/{chunk-UDRAM6JU.js → chunk-4J25XZDI.js} +13 -11
- package/dist/chunk-4J25XZDI.js.map +1 -0
- package/dist/{chunk-TWXZKUCG.cjs → chunk-4JSTBA4F.cjs} +9 -7
- package/dist/chunk-4JSTBA4F.cjs.map +1 -0
- package/dist/{chunk-TYGVKSL6.js → chunk-4LNTZPSQ.js} +2 -2
- package/dist/{chunk-UGTKZ7HP.js → chunk-5XH2PHT2.js} +13 -13
- package/dist/{chunk-UGTKZ7HP.js.map → chunk-5XH2PHT2.js.map} +1 -1
- package/dist/{chunk-H5D3ZFBM.cjs → chunk-66UQTF57.cjs} +46 -46
- package/dist/{chunk-H5D3ZFBM.cjs.map → chunk-66UQTF57.cjs.map} +1 -1
- package/dist/{chunk-JKBBHAIC.cjs → chunk-6JHVXWDV.cjs} +124 -54
- package/dist/chunk-6JHVXWDV.cjs.map +1 -0
- package/dist/{chunk-44T4HMFU.js → chunk-75GFIQRU.js} +3 -3
- package/dist/{chunk-AHVDTWVM.cjs → chunk-7BFODYNL.cjs} +7 -7
- package/dist/{chunk-AHVDTWVM.cjs.map → chunk-7BFODYNL.cjs.map} +1 -1
- package/dist/{chunk-NCZUQFKL.cjs → chunk-7VJCGKVP.cjs} +11 -11
- package/dist/{chunk-NCZUQFKL.cjs.map → chunk-7VJCGKVP.cjs.map} +1 -1
- package/dist/{chunk-PG2EII6U.js → chunk-A3LMUPG3.js} +2 -2
- package/dist/{chunk-BO4LTIJI.js → chunk-AR2ZOO6L.js} +3 -3
- package/dist/{chunk-MLUHM3VG.cjs → chunk-BEOECPVJ.cjs} +5 -7
- package/dist/chunk-BEOECPVJ.cjs.map +1 -0
- package/dist/{chunk-FPLX5FIK.js → chunk-BFKPJ627.js} +5 -4
- package/dist/chunk-BFKPJ627.js.map +1 -0
- package/dist/{chunk-MP7LN5CW.js → chunk-D7SQ7LHJ.js} +2 -2
- package/dist/{chunk-OWWPHXAF.cjs → chunk-DA375AI6.cjs} +8 -8
- package/dist/{chunk-OWWPHXAF.cjs.map → chunk-DA375AI6.cjs.map} +1 -1
- package/dist/{chunk-7KVXXHFX.cjs → chunk-DU5JKTHK.cjs} +8 -6
- package/dist/chunk-DU5JKTHK.cjs.map +1 -0
- package/dist/{chunk-LH5A2SIX.js → chunk-FIVMMCGM.js} +8 -20
- package/dist/chunk-FIVMMCGM.js.map +1 -0
- package/dist/{chunk-22EKNTWJ.js → chunk-GIEDIAPD.js} +8 -6
- package/dist/chunk-GIEDIAPD.js.map +1 -0
- package/dist/{chunk-X6UKU3C3.js → chunk-GPVGGBIR.js} +2 -2
- package/dist/{chunk-NACA72XI.js → chunk-GWHZFX2H.js} +3 -3
- package/dist/{chunk-YIBPOLNN.js → chunk-HEX4IMLO.js} +4 -4
- package/dist/{chunk-KWDOOMHR.cjs → chunk-HMEREPDB.cjs} +7 -7
- package/dist/{chunk-KWDOOMHR.cjs.map → chunk-HMEREPDB.cjs.map} +1 -1
- package/dist/{chunk-TYSNOPMQ.cjs → chunk-HNGFRRVZ.cjs} +3 -3
- package/dist/{chunk-TYSNOPMQ.cjs.map → chunk-HNGFRRVZ.cjs.map} +1 -1
- package/dist/{chunk-3QQKWXMV.cjs → chunk-I6M6CVI2.cjs} +3 -3
- package/dist/{chunk-3QQKWXMV.cjs.map → chunk-I6M6CVI2.cjs.map} +1 -1
- package/dist/chunk-J76JHN7J.cjs +225 -0
- package/dist/chunk-J76JHN7J.cjs.map +1 -0
- package/dist/{chunk-SKLMBE3Z.cjs → chunk-JCKGAAPZ.cjs} +7 -7
- package/dist/{chunk-SKLMBE3Z.cjs.map → chunk-JCKGAAPZ.cjs.map} +1 -1
- package/dist/{chunk-67EXHO4T.js → chunk-JHX6JK3M.js} +79 -75
- package/dist/chunk-JHX6JK3M.js.map +1 -0
- package/dist/{chunk-XO7WTE6O.js → chunk-JNY7TUDS.js} +4 -6
- package/dist/chunk-JNY7TUDS.js.map +1 -0
- package/dist/{chunk-GMDVW76A.cjs → chunk-JPYJQ4TF.cjs} +6 -6
- package/dist/{chunk-GMDVW76A.cjs.map → chunk-JPYJQ4TF.cjs.map} +1 -1
- package/dist/{chunk-SVCWSW2F.js → chunk-JT4KVXJK.js} +65 -12
- package/dist/chunk-JT4KVXJK.js.map +1 -0
- package/dist/{chunk-FODRHCRP.cjs → chunk-KBQD4JLK.cjs} +3 -3
- package/dist/{chunk-FODRHCRP.cjs.map → chunk-KBQD4JLK.cjs.map} +1 -1
- package/dist/{chunk-P7J6WZTO.cjs → chunk-KIZVY57H.cjs} +82 -78
- package/dist/chunk-KIZVY57H.cjs.map +1 -0
- package/dist/{chunk-N5ZWQJTM.cjs → chunk-KREHT4AQ.cjs} +8 -8
- package/dist/{chunk-N5ZWQJTM.cjs.map → chunk-KREHT4AQ.cjs.map} +1 -1
- package/dist/{chunk-SCLFJHN2.js → chunk-L65MHFMD.js} +3 -3
- package/dist/{chunk-N77VOYCK.cjs → chunk-LQXFXXMJ.cjs} +8 -7
- package/dist/chunk-LQXFXXMJ.cjs.map +1 -0
- package/dist/{chunk-OIXPYXR6.js → chunk-MPIVBAMY.js} +2 -2
- package/dist/{chunk-TLECMA3B.js → chunk-MQAOXZD4.js} +27 -14
- package/dist/chunk-MQAOXZD4.js.map +1 -0
- package/dist/{chunk-YUH56CJI.cjs → chunk-NOQF7UQ5.cjs} +6 -6
- package/dist/{chunk-YUH56CJI.cjs.map → chunk-NOQF7UQ5.cjs.map} +1 -1
- package/dist/{chunk-DMOZURHV.js → chunk-O3QM3BFE.js} +2 -2
- package/dist/{chunk-SFRILDXY.js → chunk-OOCCSMWM.js} +4 -4
- package/dist/chunk-P4XZH3OR.js +225 -0
- package/dist/chunk-P4XZH3OR.js.map +1 -0
- package/dist/{chunk-O46UJUZM.cjs → chunk-PMSENLOA.cjs} +35 -27
- package/dist/chunk-PMSENLOA.cjs.map +1 -0
- package/dist/{chunk-EWTMX4DK.js → chunk-RHFD2Z5V.js} +7 -7
- package/dist/{chunk-WT4WBHBR.js → chunk-RHHZRTWM.js} +13 -2
- package/dist/chunk-RHHZRTWM.js.map +1 -0
- package/dist/{chunk-NF55JG2V.cjs → chunk-RJVHR45I.cjs} +7 -7
- package/dist/{chunk-NF55JG2V.cjs.map → chunk-RJVHR45I.cjs.map} +1 -1
- package/dist/{chunk-FDMYDIGI.js → chunk-SDUGYJGW.js} +22 -14
- package/dist/chunk-SDUGYJGW.js.map +1 -0
- package/dist/{chunk-VRNCXYEP.js → chunk-SFFKQQ5Z.js} +4 -4
- package/dist/{chunk-AXPEJ5IG.cjs → chunk-TC5IC6OP.cjs} +3 -3
- package/dist/{chunk-AXPEJ5IG.cjs.map → chunk-TC5IC6OP.cjs.map} +1 -1
- package/dist/{chunk-BGBAZMFE.js → chunk-THCTUBX6.js} +8 -6
- package/dist/chunk-THCTUBX6.js.map +1 -0
- package/dist/{chunk-FXMRDNR6.cjs → chunk-TTLFY76J.cjs} +6 -6
- package/dist/{chunk-FXMRDNR6.cjs.map → chunk-TTLFY76J.cjs.map} +1 -1
- package/dist/{chunk-OZQKWDFH.cjs → chunk-V4BZWBZT.cjs} +7 -7
- package/dist/{chunk-OZQKWDFH.cjs.map → chunk-V4BZWBZT.cjs.map} +1 -1
- package/dist/{chunk-27UANGPW.cjs → chunk-VQGLVBPL.cjs} +13 -11
- package/dist/chunk-VQGLVBPL.cjs.map +1 -0
- package/dist/{chunk-LIKSLFX6.js → chunk-WE2SBWZ6.js} +7 -7
- package/dist/{chunk-GPK2THIG.js → chunk-WNDDS367.js} +3 -3
- package/dist/{chunk-3S33BIN2.cjs → chunk-X3BVQBXD.cjs} +16 -16
- package/dist/{chunk-3S33BIN2.cjs.map → chunk-X3BVQBXD.cjs.map} +1 -1
- package/dist/{chunk-SKBKTNEQ.cjs → chunk-XERBOFYZ.cjs} +3 -3
- package/dist/{chunk-SKBKTNEQ.cjs.map → chunk-XERBOFYZ.cjs.map} +1 -1
- package/dist/{chunk-6LCYO2HG.cjs → chunk-XZLSHEHE.cjs} +40 -27
- package/dist/chunk-XZLSHEHE.cjs.map +1 -0
- package/dist/{chunk-CEC3GO4R.js → chunk-YAKTVIVK.js} +3 -3
- package/dist/{chunk-3WV6RTXX.js → chunk-YP4HUBKN.js} +2 -2
- package/dist/{chunk-XK5USBHB.js → chunk-YXRKBKFB.js} +3 -3
- package/dist/{chunk-MW4YZVP5.cjs → chunk-ZMRINZIO.cjs} +17 -24
- package/dist/chunk-ZMRINZIO.cjs.map +1 -0
- 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.d.cts +1 -1
- package/dist/context-menu/index.d.ts +1 -1
- package/dist/context-menu/index.js +5 -5
- package/dist/conversation/index.cjs +8 -8
- package/dist/conversation/index.d.cts +1 -1
- package/dist/conversation/index.d.ts +1 -1
- package/dist/conversation/index.js +7 -7
- package/dist/data-grid/index.cjs +15 -15
- package/dist/data-grid/index.d.cts +13 -14
- package/dist/data-grid/index.d.ts +13 -14
- package/dist/data-grid/index.js +14 -14
- package/dist/date-picker/index.cjs +8 -8
- package/dist/date-picker/index.d.cts +11 -1
- package/dist/date-picker/index.d.ts +11 -1
- 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.d.cts +34 -0
- package/dist/dropdown/index.d.ts +34 -0
- 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 +37 -37
- package/dist/index.css +19 -2
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +36 -36
- 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.d.cts +23 -2
- package/dist/menu/index.d.ts +23 -2
- 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 +3 -3
- package/dist/number-input/index.js +2 -2
- package/dist/page-layout/index.cjs +12 -12
- package/dist/page-layout/index.d.cts +2 -2
- package/dist/page-layout/index.d.ts +2 -2
- 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 +3 -1
- package/dist/popover/index.d.ts +3 -1
- 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.d.cts +2 -2
- package/dist/select/index.d.ts +2 -2
- 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/table/index.cjs +13 -13
- package/dist/table/index.d.cts +2 -2
- package/dist/table/index.d.ts +2 -2
- 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.d.cts +3 -3
- package/dist/toolbar/index.d.ts +3 -3
- package/dist/toolbar/index.js +7 -7
- package/dist/tooltip/index.cjs +3 -3
- package/dist/tooltip/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-22EKNTWJ.js.map +0 -1
- package/dist/chunk-27UANGPW.cjs.map +0 -1
- package/dist/chunk-4LET2PEX.cjs.map +0 -1
- package/dist/chunk-5V7DXZWT.cjs.map +0 -1
- package/dist/chunk-67EXHO4T.js.map +0 -1
- package/dist/chunk-6LCYO2HG.cjs.map +0 -1
- package/dist/chunk-7KVXXHFX.cjs.map +0 -1
- package/dist/chunk-BGBAZMFE.js.map +0 -1
- package/dist/chunk-CP335H4Q.js +0 -125
- package/dist/chunk-CP335H4Q.js.map +0 -1
- package/dist/chunk-FDMYDIGI.js.map +0 -1
- package/dist/chunk-FPLX5FIK.js.map +0 -1
- package/dist/chunk-G74DHVHV.cjs +0 -125
- package/dist/chunk-G74DHVHV.cjs.map +0 -1
- package/dist/chunk-IXVM2XNS.js.map +0 -1
- package/dist/chunk-JKBBHAIC.cjs.map +0 -1
- package/dist/chunk-LH5A2SIX.js.map +0 -1
- package/dist/chunk-MLUHM3VG.cjs.map +0 -1
- package/dist/chunk-MW4YZVP5.cjs.map +0 -1
- package/dist/chunk-N77VOYCK.cjs.map +0 -1
- package/dist/chunk-O46UJUZM.cjs.map +0 -1
- package/dist/chunk-P7J6WZTO.cjs.map +0 -1
- package/dist/chunk-SVCWSW2F.js.map +0 -1
- package/dist/chunk-TLECMA3B.js.map +0 -1
- package/dist/chunk-TWXZKUCG.cjs.map +0 -1
- package/dist/chunk-UDRAM6JU.js.map +0 -1
- package/dist/chunk-VHSTB7GB.cjs.map +0 -1
- package/dist/chunk-WGCGSM5P.js.map +0 -1
- package/dist/chunk-WT4WBHBR.js.map +0 -1
- package/dist/chunk-XO7WTE6O.js.map +0 -1
- /package/dist/{chunk-BBU7QG7L.js.map → chunk-26SO4LZ5.js.map} +0 -0
- /package/dist/{chunk-Y7VSWZWM.js.map → chunk-2JW3WSBF.js.map} +0 -0
- /package/dist/{chunk-TYGVKSL6.js.map → chunk-4LNTZPSQ.js.map} +0 -0
- /package/dist/{chunk-44T4HMFU.js.map → chunk-75GFIQRU.js.map} +0 -0
- /package/dist/{chunk-PG2EII6U.js.map → chunk-A3LMUPG3.js.map} +0 -0
- /package/dist/{chunk-BO4LTIJI.js.map → chunk-AR2ZOO6L.js.map} +0 -0
- /package/dist/{chunk-MP7LN5CW.js.map → chunk-D7SQ7LHJ.js.map} +0 -0
- /package/dist/{chunk-X6UKU3C3.js.map → chunk-GPVGGBIR.js.map} +0 -0
- /package/dist/{chunk-NACA72XI.js.map → chunk-GWHZFX2H.js.map} +0 -0
- /package/dist/{chunk-YIBPOLNN.js.map → chunk-HEX4IMLO.js.map} +0 -0
- /package/dist/{chunk-SCLFJHN2.js.map → chunk-L65MHFMD.js.map} +0 -0
- /package/dist/{chunk-OIXPYXR6.js.map → chunk-MPIVBAMY.js.map} +0 -0
- /package/dist/{chunk-DMOZURHV.js.map → chunk-O3QM3BFE.js.map} +0 -0
- /package/dist/{chunk-SFRILDXY.js.map → chunk-OOCCSMWM.js.map} +0 -0
- /package/dist/{chunk-EWTMX4DK.js.map → chunk-RHFD2Z5V.js.map} +0 -0
- /package/dist/{chunk-VRNCXYEP.js.map → chunk-SFFKQQ5Z.js.map} +0 -0
- /package/dist/{chunk-LIKSLFX6.js.map → chunk-WE2SBWZ6.js.map} +0 -0
- /package/dist/{chunk-GPK2THIG.js.map → chunk-WNDDS367.js.map} +0 -0
- /package/dist/{chunk-CEC3GO4R.js.map → chunk-YAKTVIVK.js.map} +0 -0
- /package/dist/{chunk-3WV6RTXX.js.map → chunk-YP4HUBKN.js.map} +0 -0
- /package/dist/{chunk-XK5USBHB.js.map → chunk-YXRKBKFB.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-JKBBHAIC.cjs","../node_modules/dayjs/dayjs.min.js","../node_modules/dayjs/plugin/utc.js","../node_modules/dayjs/plugin/timezone.js","../node_modules/dayjs/plugin/weekOfYear.js","../src/components/DatePicker/DatePicker.component.tsx","../src/components/DatePicker/Calendar.component.tsx","../src/components/DatePicker/TimeInput.component.tsx"],"names":["t","e","n","r","i","s","u","a","M","m","f","l","$","y","v","g","D","o","d","c","h","import_dayjs","dayjs","weekOfYear","useCallback","jsx","useState"],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-JKBBHAIC.cjs","sourcesContent":[null,"!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),Y=_.prototype;return O.prototype=Y,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){Y[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var r=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),r.call(this,t)};var o=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else o.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s;if(0===u)return this.utc(f);var r=this.clone();if(f)return r.$offset=u,r.$u=!1,r;var o=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();return(r=this.local().add(u+o,t)).$offset=u,r.$x.$localOffset=o,r};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_timezone=e()}(this,(function(){\"use strict\";var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,r){var o,a=function(t,n,i){void 0===i&&(i={});var r=new Date(t),o=function(t,n){void 0===n&&(n={});var i=n.timeZoneName||\"short\",r=t+\"|\"+i,o=e[r];return o||(o=new Intl.DateTimeFormat(\"en-US\",{hour12:!1,timeZone:t,year:\"numeric\",month:\"2-digit\",day:\"2-digit\",hour:\"2-digit\",minute:\"2-digit\",second:\"2-digit\",timeZoneName:i}),e[r]=o),o}(n,i);return o.formatToParts(r)},u=function(e,n){for(var i=a(e,n),o=[],u=0;u<i.length;u+=1){var f=i[u],s=f.type,m=f.value,c=t[s];c>=0&&(o[c]=parseInt(m,10))}var l=o[3],d=24===l?0:l,h=o[0]+\"-\"+o[1]+\"-\"+o[2]+\" \"+d+\":\"+o[4]+\":\"+o[5]+\":000\",v=+e;return(r.utc(h).valueOf()-(v-=v%1e3))/6e4},f=i.prototype;f.tz=function(t,e){if(void 0===t&&(t=o),!this.isValid())return this;var n,i=this.utcOffset(),a=this.toDate(),f=a.toLocaleString(\"en-US\",{timeZone:t}),s=u(+a,t);if(!Number(s))n=this.utcOffset(0,e);else if(n=r(f,{locale:this.$L}).$set(\"millisecond\",this.$ms).utcOffset(s,!0),e){var m=n.utcOffset();n=n.add(i-m,\"minute\")}return n.$x.$timezone=t,n},f.offsetName=function(t){var e=this.$x.$timezone||r.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find((function(t){return\"timezonename\"===t.type.toLowerCase()}));return n&&n.value};var s=f.startOf;f.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return s.call(this,t,e);var n=r(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\"),{locale:this.$L});return s.call(n,t,e).tz(this.$x.$timezone,!0)},r.tz=function(t,e,n){var i=n&&e,a=n||e||o,f=u(+r(),a);if(\"string\"!=typeof t)return r(t).tz(a);var s=r.utc(t,i).valueOf();if(Number.isNaN(s)){var m=r(NaN);return m.$x.$timezone=a,m}var c=function(t,e,n){var i=t-60*e*1e3,r=u(i,n);if(e===r)return[i,e];var o=u(i-=60*(r-e)*1e3,n);return r===o?[i,r]:[t-60*Math.min(r,o)*1e3,Math.max(r,o)]}(s,f,a),l=c[0],d=c[1],h=r(l).utcOffset(d);return h.$x.$timezone=a,h},r.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},r.tz.setDefault=function(t){o=t}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekOfYear=t()}(this,(function(){\"use strict\";var e=\"week\",t=\"year\";return function(i,n,r){var f=n.prototype;f.week=function(i){if(void 0===i&&(i=null),null!==i)return this.add(7*(i-this.week()),\"day\");var n=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));","import React, { useState, useCallback, useRef, useMemo } from 'react';\nimport dayjs, { Dayjs } from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport { Calendar as CalendarIcon, X } from 'lucide-react';\nimport { Input } from '../Input/Input.component';\nimport { Dropdown } from '../Dropdown/Dropdown.component';\nimport { Calendar } from './Calendar.component';\nimport { TimeInput } from './TimeInput.component';\nimport { fullWidthModifier } from '../../utils';\nimport type {\n DatePickerProps,\n DateSelectionMode,\n DateTimeValue,\n TimeValue,\n RangeTimeValue,\n} from './DatePicker.types';\n\n// Initialize dayjs plugins\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nexport const DatePicker = <T extends DateSelectionMode = 'single'>({\n mode,\n value,\n onChange,\n granularity = 'day',\n time = { enabled: false },\n calendar = { numberOfCalendars: 2 },\n format = {\n displayFormat: 'MMM DD, YYYY',\n inputFormat: 'YYYY-MM-DD',\n timeFormat: 'HH:mm',\n timezone: 'UTC',\n },\n placeholder = 'Select date...',\n disabled = false,\n required = false,\n name,\n id,\n inputProps = {},\n minDate,\n maxDate,\n disabledDates = [],\n disabledDaysOfWeek = [],\n className = '',\n fullWidth = false,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight,\n autoWidth = false,\n}: DatePickerProps<T>) => {\n const [dropdownKey, setDropdownKey] = useState(0);\n // Two different, deliberately different, notions of \"timezone\" are in\n // play here, matching two genuinely different kinds of value:\n //\n // - Date-only (time.enabled === false): a pure calendar date has no\n // wall-clock moment attached to it, so there's nothing for a timezone\n // to sensibly represent. It's anchored to a fixed `pickerTimezone`\n // (default UTC) so the same calendar date always serializes to the\n // same ISO instant no matter which machine picks it - see\n // `composeDateOnly`.\n // - Date + time (time.enabled === true): this genuinely represents a\n // real-world instant, e.g. a meeting at a specific wall-clock time -\n // exactly the case a timezone exists to disambiguate. That instant\n // should be computed from *the picking user's own local offset*\n // (someone in UTC+3 typing \"15:00\" means 12:00 UTC), and later\n // displayed by converting that same UTC instant into *each viewer's\n // own* local offset (that same instant shows as \"12:00\" to a UTC+0\n // viewer). That's exactly plain, un-anchored dayjs/Date behavior with\n // no explicit timezone forcing at all, so this path intentionally\n // does not use `pickerTimezone` anywhere.\n const pickerTimezone = format.timezone || 'UTC';\n // Combines a calendar date (only its Y-M-D is read, so it's timezone-\n // agnostic going in) with a start/end-of-day boundary, anchored to\n // `pickerTimezone` - only ever used for date-only values.\n const composeDateOnly = useCallback(\n (date: Dayjs, boundary: 'start' | 'end' = 'start') => {\n const anchored = dayjs.tz(date.format('YYYY-MM-DD'), pickerTimezone);\n return boundary === 'end' ? anchored.endOf('day') : anchored.startOf('day');\n },\n [pickerTimezone],\n );\n // Combines a calendar date with a time-of-day using plain local\n // semantics (no timezone forcing) - only ever used for date+time values,\n // see the note above.\n const composeLocalDateTime = useCallback(\n (date: Dayjs, t: TimeValue): Dayjs =>\n date\n .hour(t.hours)\n .minute(t.minutes)\n .second(t.seconds || 0),\n [],\n );\n // Re-anchors an already-stored ISO instant's calendar day (read in the\n // browser's own local timezone, matching how it was written) onto a new\n // time-of-day - used when the user edits a TimeInput without re-picking\n // the date, so that edit actually changes the returned value instead of\n // only updating the separate `value.time` field alongside an unchanged\n // `value.date`. Deliberately local, not anchored to `pickerTimezone` -\n // see the note above.\n const recomposeIsoWithTime = useCallback(\n (isoString: string, t: TimeValue): string =>\n dayjs(isoString)\n .hour(t.hours)\n .minute(t.minutes)\n .second(t.seconds || 0)\n .toISOString(),\n [],\n );\n // Month granularity always shows a single year/month grid - side-by-side\n // \"next month\" calendars don't make sense once there are no day cells.\n const numberOfCalendars = granularity === 'month' ? 1 : calendar.numberOfCalendars || 2;\n const independentCalendars = calendar.independent ?? false;\n // One entry per visible calendar. In the default (non-independent) mode\n // these always stay consecutive months, kept in sync from a single shared\n // control (see `handleCalendarMonthChange`) - the array shape is the same\n // either way, only how a change to one entry propagates differs.\n const [calendarDates, setCalendarDates] = useState<Dayjs[]>(() =>\n Array.from({ length: numberOfCalendars }, (_, i) => dayjs().add(i, 'month')),\n );\n const handleCalendarMonthChange = useCallback(\n (index: number, newDate: Dayjs) => {\n if (!independentCalendars) {\n // Coupled: every calendar shifts together, re-anchored so `index`\n // lands on `newDate` - e.g. moving calendar 1 to November re-anchors\n // calendar 0 to October, same as before this was array-based.\n const anchor = newDate.subtract(index, 'month');\n setCalendarDates(\n Array.from({ length: numberOfCalendars }, (_, i) => anchor.add(i, 'month')),\n );\n return;\n }\n\n // Independent: only this calendar moves, clamped so it can never reach\n // or cross an immediate neighbor's month - two calendars both landing\n // on (or swapping past) the same month would be exactly the confusing\n // state independent mode exists to let users avoid, just self-inflicted\n // instead of automatic.\n setCalendarDates((prev) => {\n const next = [...prev];\n let clamped = newDate;\n const left = prev[index - 1];\n const right = prev[index + 1];\n if (left && !clamped.isAfter(left, 'month')) {\n clamped = left.add(1, 'month');\n }\n if (right && !clamped.isBefore(right, 'month')) {\n clamped = right.subtract(1, 'month');\n }\n next[index] = clamped;\n return next;\n });\n },\n [independentCalendars, numberOfCalendars],\n );\n const triggerRef = useRef<HTMLDivElement>(null);\n\n // Convert the string-based constraint props to the Dayjs objects Calendar\n // actually consumes for its `isBefore`/`isAfter`/`isSame` comparisons.\n const minDateObj = useMemo(() => (minDate ? dayjs(minDate) : undefined), [minDate]);\n const maxDateObj = useMemo(() => (maxDate ? dayjs(maxDate) : undefined), [maxDate]);\n const disabledDatesObj = useMemo(() => disabledDates.map((d) => dayjs(d)), [disabledDates]);\n\n // Default time values\n const defaultStartTime = useMemo<TimeValue>(() => ({ hours: 0, minutes: 0, seconds: 0 }), []);\n const defaultEndTime = useMemo<TimeValue>(() => ({ hours: 23, minutes: 59, seconds: 59 }), []);\n\n // Helper function to convert stored ISO strings back to the calendar date\n // they represent, for calendar-grid display (which day to highlight).\n const toLocalDateString = useCallback(\n (isoString: string | null): string | null => {\n if (!isoString) return null;\n const parsed = dayjs(isoString);\n // Date-only values were anchored to `pickerTimezone` when stored (see\n // `composeDateOnly`) - reading them back via the browser's ambient\n // timezone instead would recover the wrong calendar day for anyone\n // not in that same timezone. Date+time values were deliberately\n // never anchored (see the note above `pickerTimezone`), so they stay\n // on local interpretation, matching how they were written.\n return (time.enabled ? parsed : parsed.tz(pickerTimezone)).format('YYYY-MM-DD');\n },\n [time.enabled, pickerTimezone],\n );\n\n // Convert current value to calendar-compatible format\n const { selectedDates, rangeStart, rangeEnd } = useMemo(() => {\n if (!value?.date) {\n return { selectedDates: [], rangeStart: null, rangeEnd: null };\n }\n\n switch (mode) {\n case 'single': {\n const isoString = value.date as string | null;\n const localDateStr = toLocalDateString(isoString);\n return {\n selectedDates: localDateStr ? [dayjs(localDateStr)] : [],\n rangeStart: null,\n rangeEnd: null,\n };\n }\n case 'multiple': {\n const isoStrings = value.date as string[];\n const localDateStrings = isoStrings\n .map((d) => toLocalDateString(d))\n .filter(Boolean) as string[];\n return {\n selectedDates: localDateStrings.map((d) => dayjs(d)),\n rangeStart: null,\n rangeEnd: null,\n };\n }\n case 'range': {\n const range = value.date as { start: string | null; end: string | null };\n const startStr = toLocalDateString(range.start);\n const endStr = toLocalDateString(range.end);\n return {\n selectedDates: [],\n rangeStart: startStr ? dayjs(startStr) : null,\n rangeEnd: endStr ? dayjs(endStr) : null,\n };\n }\n default:\n return { selectedDates: [], rangeStart: null, rangeEnd: null };\n }\n }, [value, mode, toLocalDateString]);\n\n // Handle date selection from calendar - always return ISO strings. Uses\n // `composeDateOnly` (fixed `pickerTimezone` anchor) when time.enabled is\n // false, `composeLocalDateTime` (plain local semantics) when true - see\n // the note above `pickerTimezone` for why these need to differ.\n const handleDateSelect = useCallback(\n (selectedDate: Dayjs) => {\n // `granularity === 'month'` means the calendar only ever hands us a\n // day *within* the picked month (see Calendar's month grid) - the\n // stored/returned value is always that month's last day, while the\n // day-of-week boundary semantics below ('start' of day vs 'end' of\n // day) are unaffected.\n const effectiveDate = granularity === 'month' ? selectedDate.endOf('month') : selectedDate;\n const compareUnit = granularity === 'month' ? 'month' : 'day';\n\n switch (mode) {\n case 'single': {\n let dateWithTime: Dayjs;\n // Preserve whatever time the user already configured via\n // TimeInput rather than resetting to the default every time a\n // different date is picked.\n const activeTime = (value?.time as TimeValue) ?? defaultStartTime;\n if (time.enabled) {\n dateWithTime = composeLocalDateTime(effectiveDate, activeTime);\n } else {\n dateWithTime = composeDateOnly(effectiveDate, 'start');\n }\n\n const newValue: DateTimeValue<T> = {\n date: dateWithTime.toISOString() as DateTimeValue<T>['date'],\n time: time.enabled ? (activeTime as DateTimeValue<T>['time']) : undefined,\n };\n\n onChange?.(newValue);\n setDropdownKey((prev) => prev + 1); // Close dropdown\n break;\n }\n\n case 'multiple': {\n const currentDates = (value?.date as string[]) || [];\n const currentDayjs = currentDates.map((d) => dayjs(d));\n\n // Check if date is already selected\n const existingIndex = currentDayjs.findIndex((d) => d.isSame(effectiveDate, compareUnit));\n let newDates: Dayjs[];\n\n if (existingIndex >= 0) {\n // Remove if already selected\n newDates = currentDayjs.filter((_, index) => index !== existingIndex);\n } else {\n // Add new date, preserving the shared time already configured.\n const activeTime = (value?.time as TimeValue) ?? defaultStartTime;\n const dateWithTime = time.enabled\n ? composeLocalDateTime(effectiveDate, activeTime)\n : composeDateOnly(effectiveDate, 'start');\n newDates = [...currentDayjs, dateWithTime];\n }\n\n // Always return ISO strings\n const newValue: DateTimeValue<T> = {\n date: newDates.map((d) => d.toISOString()) as DateTimeValue<T>['date'],\n time: time.enabled\n ? (((value?.time as TimeValue) ?? defaultStartTime) as DateTimeValue<T>['time'])\n : undefined,\n };\n\n onChange?.(newValue);\n break;\n }\n\n case 'range': {\n const currentRange = (value?.date as { start: string | null; end: string | null }) || {\n start: null,\n end: null,\n };\n const currentRangeTime = (value?.time as RangeTimeValue) || {\n start: defaultStartTime,\n end: defaultEndTime,\n };\n\n if (!currentRange.start || (currentRange.start && currentRange.end)) {\n // Start new range, preserving the already-configured start time.\n const startWithTime = time.enabled\n ? composeLocalDateTime(effectiveDate, currentRangeTime.start)\n : composeDateOnly(effectiveDate, 'start');\n\n // Always return ISO string\n const newValue: DateTimeValue<T> = {\n date: { start: startWithTime.toISOString(), end: null } as DateTimeValue<T>['date'],\n time: time.enabled ? (currentRangeTime as DateTimeValue<T>['time']) : undefined,\n };\n\n onChange?.(newValue);\n } else {\n // Complete the range. Date-only starts were anchored to\n // `pickerTimezone` when stored (see `composeDateOnly`) -\n // re-read it the same way so the \"is end before start\"\n // comparison below lines up with the day it actually\n // represents. Date+time starts were never anchored, so\n // they stay on local interpretation, matching how they\n // were written.\n const start = time.enabled\n ? dayjs(currentRange.start)\n : dayjs(currentRange.start).tz(pickerTimezone);\n let end = effectiveDate;\n\n // Ensure end is after start\n if (end.isBefore(start, compareUnit)) {\n end = start;\n }\n\n end = time.enabled\n ? composeLocalDateTime(end, currentRangeTime.end)\n : composeDateOnly(end, 'end');\n\n // Always return ISO strings\n const newValue: DateTimeValue<T> = {\n date: {\n start: currentRange.start,\n end: end.toISOString(),\n } as DateTimeValue<T>['date'],\n time: time.enabled ? (currentRangeTime as DateTimeValue<T>['time']) : undefined,\n };\n\n onChange?.(newValue);\n setDropdownKey((prev) => prev + 1); // Close dropdown after completing range\n }\n break;\n }\n }\n },\n [\n mode,\n time,\n value,\n onChange,\n defaultStartTime,\n defaultEndTime,\n composeDateOnly,\n composeLocalDateTime,\n pickerTimezone,\n granularity,\n ],\n );\n\n // Format display value\n const displayValue = useMemo(() => {\n if (!value?.date) return '';\n\n const displayFmt =\n format.displayFormat || (granularity === 'month' ? 'MMM YYYY' : 'MMM DD, YYYY');\n // Date-only values were anchored to `pickerTimezone` when stored (see\n // `composeDateOnly`) - display them in that same timezone rather than\n // the viewer's ambient one, so the trigger shows the actual calendar\n // date that was picked. Date+time values were deliberately never\n // anchored (see the note above `pickerTimezone`) - the viewer's own\n // local timezone is exactly what should convert that instant for\n // display, e.g. a UTC+3-scheduled 15:00 meeting showing as 12:00 to a\n // UTC+0 viewer.\n const parseDateOnlyAware = (iso: string) =>\n time.enabled ? dayjs(iso) : dayjs(iso).tz(pickerTimezone);\n\n switch (mode) {\n case 'single': {\n const date = parseDateOnlyAware(value.date as string);\n let result = date.format(displayFmt);\n if (time.enabled) {\n const timeStr = time.includeSeconds ? date.format('HH:mm:ss') : date.format('HH:mm');\n result += ` ${timeStr}`;\n }\n return result;\n }\n\n case 'multiple': {\n const dates = value.date as string[];\n if (time.enabled) {\n const formattedDates = dates.map((d) => {\n const date = parseDateOnlyAware(d);\n const dateStr = date.format(displayFmt);\n const timeStr = time.includeSeconds ? date.format('HH:mm:ss') : date.format('HH:mm');\n return `${dateStr} ${timeStr}`;\n });\n return formattedDates.join(', ');\n } else {\n const formattedDates = dates.map((d) => parseDateOnlyAware(d).format(displayFmt));\n return formattedDates.join(', ');\n }\n }\n\n case 'range': {\n const rangeValue = value.date as { start: string | null; end: string | null };\n const parts: string[] = [];\n\n if (rangeValue.start) {\n const startDate = parseDateOnlyAware(rangeValue.start);\n let startStr = startDate.format(displayFmt);\n if (time.enabled) {\n const timeStr = time.includeSeconds\n ? startDate.format('HH:mm:ss')\n : startDate.format('HH:mm');\n startStr += ` ${timeStr}`;\n }\n parts.push(startStr);\n }\n\n if (rangeValue.end) {\n const endDate = parseDateOnlyAware(rangeValue.end);\n let endStr = endDate.format(displayFmt);\n if (time.enabled) {\n const timeStr = time.includeSeconds\n ? endDate.format('HH:mm:ss')\n : endDate.format('HH:mm');\n endStr += ` ${timeStr}`;\n }\n parts.push(endStr);\n }\n\n return parts.join(' - ');\n }\n\n default:\n return '';\n }\n }, [value, mode, time, format, pickerTimezone, granularity]);\n\n // Handle clear\n const handleClear = useCallback(\n (e?: React.MouseEvent) => {\n if (e) {\n e.stopPropagation();\n }\n\n const clearedValue = (() => {\n if (mode === 'multiple') {\n return {\n date: [] as unknown as DateTimeValue<T>['date'],\n time: time.enabled\n ? (defaultStartTime as unknown as DateTimeValue<T>['time'])\n : undefined,\n } as DateTimeValue<T>;\n } else if (mode === 'range') {\n return {\n date: { start: null, end: null } as unknown as DateTimeValue<T>['date'],\n time: time.enabled\n ? ({\n start: defaultStartTime,\n end: defaultEndTime,\n } as unknown as DateTimeValue<T>['time'])\n : undefined,\n } as DateTimeValue<T>;\n } else {\n return {\n date: null as unknown as DateTimeValue<T>['date'],\n time: time.enabled\n ? (defaultStartTime as unknown as DateTimeValue<T>['time'])\n : undefined,\n } as DateTimeValue<T>;\n }\n })();\n\n onChange?.(clearedValue);\n setDropdownKey((prev) => prev + 1); // Close dropdown\n },\n [mode, time, onChange, defaultStartTime, defaultEndTime],\n );\n\n // Create trigger element\n const triggerElement = (\n <div\n ref={triggerRef}\n className={`eidos-date-picker-trigger${fullWidth ? ` ${fullWidthModifier('eidos-date-picker-trigger')}` : ''}`}\n >\n <Input\n value={displayValue}\n placeholder={placeholder}\n disabled={disabled}\n required={required}\n name={name}\n id={id}\n // Forwarded, not just set on the wrapper above: the wrapper stretching\n // to 100% does nothing on its own while the Input inside it keeps its\n // own intrinsic width. Mirrors Select, which forwards it the same way.\n fullWidth={fullWidth}\n readOnly={true}\n preIcon={CalendarIcon}\n posIcon={displayValue ? X : undefined}\n posIconButton={!!displayValue}\n onPosIconClick={displayValue ? handleClear : undefined}\n // Latent until a date is picked, which is why no story caught it:\n // the button only renders once `displayValue` exists.\n posIconLabel=\"Clear date\"\n {...inputProps}\n clearable={false}\n />\n </div>\n );\n\n // Create dropdown content with calendar(s) and time inputs\n const dropdownContent = (\n <div className={'eidos-date-picker-content'}>\n {/* Multiple calendars with container-level navigation */}\n <div className={'eidos-date-picker-calendars-wrapper'}>\n {Array.from({ length: numberOfCalendars }, (_, index) => {\n const calendarDate = calendarDates[index] ?? dayjs().add(index, 'month');\n return (\n <Calendar\n key={index}\n currentDate={calendarDate}\n selectedDates={selectedDates}\n rangeStart={rangeStart}\n rangeEnd={rangeEnd}\n mode={mode}\n granularity={granularity}\n onDateSelect={handleDateSelect}\n onMonthChange={(newDate) => handleCalendarMonthChange(index, newDate)}\n minDate={minDateObj}\n maxDate={maxDateObj}\n disabledDates={disabledDatesObj}\n disabledDaysOfWeek={disabledDaysOfWeek}\n showWeekNumbers={calendar.showWeekNumbers}\n firstDayOfWeek={calendar.firstDayOfWeek}\n // Non-independent: only the first calendar's control is\n // interactive, since it's the one every other calendar\n // actually follows. Independent: every calendar gets one.\n showNavigation={independentCalendars || index === 0}\n />\n );\n })}\n </div>\n\n {/* Time inputs */}\n {time.enabled && (\n <div className={'eidos-date-picker-time-container'}>\n {mode === 'single' && (\n <TimeInput\n value={(value?.time as TimeValue) || defaultStartTime}\n onChange={(newTime) => {\n // Recompose the actual returned value with the new\n // time, not just the separate `time` field - see\n // `recomposeIsoWithTime`.\n const currentIso = value?.date as string | null;\n const newValue = {\n ...value,\n date: (currentIso\n ? recomposeIsoWithTime(currentIso, newTime)\n : currentIso) as DateTimeValue<T>['date'],\n time: newTime,\n } as DateTimeValue<T>;\n onChange?.(newValue);\n }}\n includeSeconds={time.includeSeconds}\n disabled={disabled}\n label=\"Time\"\n />\n )}\n\n {mode === 'multiple' && (\n <TimeInput\n value={(value?.time as TimeValue) || defaultStartTime}\n onChange={(newTime) => {\n // Recompose every selected date with the new shared\n // time - see `recomposeIsoWithTime`.\n const currentDates = (value?.date as string[]) || [];\n const newValue = {\n ...value,\n date: currentDates.map((d) =>\n recomposeIsoWithTime(d, newTime),\n ) as DateTimeValue<T>['date'],\n time: newTime,\n } as DateTimeValue<T>;\n onChange?.(newValue);\n }}\n includeSeconds={time.includeSeconds}\n disabled={disabled}\n label=\"Time for all dates\"\n />\n )}\n\n {mode === 'range' && (\n <div className={'eidos-date-picker-range-time-inputs'}>\n <TimeInput\n value={(value?.time as RangeTimeValue)?.start || defaultStartTime}\n onChange={(newTime) => {\n const currentRangeTime = (value?.time as RangeTimeValue) || {\n start: defaultStartTime,\n end: defaultEndTime,\n };\n // Recompose just the start of the range with the new\n // time - see `recomposeIsoWithTime`.\n const currentRange = (value?.date as {\n start: string | null;\n end: string | null;\n }) || {\n start: null,\n end: null,\n };\n const newValue = {\n ...value,\n date: {\n ...currentRange,\n start: currentRange.start\n ? recomposeIsoWithTime(currentRange.start, newTime)\n : currentRange.start,\n } as DateTimeValue<T>['date'],\n time: {\n ...currentRangeTime,\n start: newTime,\n },\n } as DateTimeValue<T>;\n onChange?.(newValue);\n }}\n includeSeconds={time.includeSeconds}\n disabled={disabled}\n label=\"Start time\"\n />\n <TimeInput\n value={(value?.time as RangeTimeValue)?.end || defaultEndTime}\n onChange={(newTime) => {\n const currentRangeTime = (value?.time as RangeTimeValue) || {\n start: defaultStartTime,\n end: defaultEndTime,\n };\n // Recompose just the end of the range with the new\n // time - see `recomposeIsoWithTime`.\n const currentRange = (value?.date as {\n start: string | null;\n end: string | null;\n }) || {\n start: null,\n end: null,\n };\n const newValue = {\n ...value,\n date: {\n ...currentRange,\n end: currentRange.end\n ? recomposeIsoWithTime(currentRange.end, newTime)\n : currentRange.end,\n } as DateTimeValue<T>['date'],\n time: {\n ...currentRangeTime,\n end: newTime,\n },\n } as DateTimeValue<T>;\n onChange?.(newValue);\n }}\n includeSeconds={time.includeSeconds}\n disabled={disabled}\n label=\"End time\"\n />\n </div>\n )}\n </div>\n )}\n </div>\n );\n\n return (\n <div\n className={`eidos-date-picker-container${fullWidth ? ` ${fullWidthModifier('eidos-date-picker-container')}` : ''} ${className}`.trim()}\n >\n <Dropdown\n key={dropdownKey}\n trigger={triggerElement}\n content={dropdownContent}\n placement=\"bottom\"\n minWidth={minWidth}\n maxWidth={maxWidth || 'none'}\n minHeight={minHeight}\n maxHeight={maxHeight || 'none'}\n autoWidth={autoWidth}\n // Dropdown wraps `trigger` in its own `.eidos-dropdown-trigger` div,\n // which stays shrink-to-fit unless told otherwise - so without this,\n // `fullWidth` stopped at that wrapper and the trigger input never\n // stretched. Select forwards it here for the same reason.\n fullWidth={fullWidth}\n triggerRef={triggerRef as React.RefObject<HTMLElement | null>}\n />\n </div>\n );\n};\n\nDatePicker.displayName = 'DatePicker';\n","import React, { useMemo, useCallback } from 'react';\nimport dayjs, { Dayjs } from 'dayjs';\nimport weekOfYear from 'dayjs/plugin/weekOfYear';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\n\n// Initialize dayjs plugins\ndayjs.extend(weekOfYear);\nimport { Select } from '../Select/Select.component';\nimport type { CalendarProps } from './DatePicker.types';\nimport { Button } from '../Button/Button.component';\n\nexport const Calendar: React.FC<CalendarProps> = ({\n currentDate,\n selectedDates,\n rangeStart,\n rangeEnd,\n // mode, // TODO: Use this for different selection behaviors\n granularity = 'day',\n onDateSelect,\n onMonthChange,\n minDate,\n maxDate,\n disabledDates = [],\n disabledDaysOfWeek = [],\n showWeekNumbers = false,\n firstDayOfWeek = 1, // Monday\n showNavigation = true,\n}) => {\n // Generate month options (12 months)\n const monthOptions = useMemo(() => {\n return Array.from({ length: 12 }, (_, i) => ({\n id: i.toString(),\n label: dayjs().month(i).format('MMMM'),\n value: i.toString(),\n }));\n }, []);\n\n // Generate year options (current year ± 50 years)\n const yearOptions = useMemo(() => {\n const currentYear = dayjs().year();\n const years = [];\n for (let year = currentYear - 50; year <= currentYear + 50; year++) {\n years.push({\n id: year.toString(),\n label: year.toString(),\n value: year.toString(),\n });\n }\n return years;\n }, []);\n\n // Handle month selection\n const handleMonthSelect = useCallback(\n (value: string | string[]) => {\n if (typeof value === 'string') {\n const newDate = currentDate.month(parseInt(value));\n onMonthChange(newDate);\n }\n },\n [currentDate, onMonthChange],\n );\n\n // Handle year selection\n const handleYearSelect = useCallback(\n (value: string | string[]) => {\n if (typeof value === 'string') {\n const newDate = currentDate.year(parseInt(value));\n onMonthChange(newDate);\n }\n },\n [currentDate, onMonthChange],\n );\n\n // Handle navigation arrows\n const handlePrevMonth = useCallback(() => {\n onMonthChange(currentDate.subtract(1, 'month'));\n }, [currentDate, onMonthChange]);\n\n const handleNextMonth = useCallback(() => {\n onMonthChange(currentDate.add(1, 'month'));\n }, [currentDate, onMonthChange]);\n\n const handlePrevYear = useCallback(() => {\n onMonthChange(currentDate.subtract(1, 'year'));\n }, [currentDate, onMonthChange]);\n\n const handleNextYear = useCallback(() => {\n onMonthChange(currentDate.add(1, 'year'));\n }, [currentDate, onMonthChange]);\n\n // Generate the 12 months of `currentDate`'s year - used instead of\n // `calendarDays` when `granularity === 'month'`.\n const monthCells = useMemo(() => {\n return Array.from({ length: 12 }, (_, i) => {\n const monthDate = currentDate.month(i).startOf('month');\n const isToday = monthDate.isSame(dayjs(), 'month');\n const isSelected = selectedDates.some((date) => date.isSame(monthDate, 'month'));\n const isDisabled =\n (minDate && monthDate.endOf('month').isBefore(minDate, 'month')) ||\n (maxDate && monthDate.isAfter(maxDate, 'month'));\n\n const isRangeStart = rangeStart?.isSame(monthDate, 'month') || false;\n const isRangeEnd = rangeEnd?.isSame(monthDate, 'month') || false;\n const isInRange =\n rangeStart &&\n rangeEnd &&\n monthDate.isAfter(rangeStart, 'month') &&\n monthDate.isBefore(rangeEnd, 'month');\n\n return {\n date: monthDate,\n isToday,\n isSelected,\n isDisabled,\n isRangeStart,\n isRangeEnd,\n isInRange,\n };\n });\n }, [currentDate, selectedDates, rangeStart, rangeEnd, minDate, maxDate]);\n\n // Generate calendar days\n const calendarDays = useMemo(() => {\n const startOfMonth = currentDate.startOf('month');\n\n // Get the first day of the week for the first day of the month\n let startOfCalendar = startOfMonth.startOf('week');\n if (firstDayOfWeek === 1) {\n // Monday\n startOfCalendar =\n startOfMonth.day() === 0\n ? startOfMonth.subtract(6, 'day')\n : startOfMonth.startOf('week').add(1, 'day');\n }\n\n // Generate 42 days (6 weeks * 7 days)\n const days = [];\n let current = startOfCalendar;\n\n for (let i = 0; i < 42; i++) {\n const isCurrentMonth = current.month() === currentDate.month();\n const isToday = current.isSame(dayjs(), 'day');\n const isSelected = selectedDates.some((date) => date.isSame(current, 'day'));\n const isDisabled =\n (minDate && current.isBefore(minDate, 'day')) ||\n (maxDate && current.isAfter(maxDate, 'day')) ||\n disabledDates.some((date) => date.isSame(current, 'day')) ||\n disabledDaysOfWeek.includes(current.day());\n\n // Range logic\n const isRangeStart = rangeStart?.isSame(current, 'day') || false;\n const isRangeEnd = rangeEnd?.isSame(current, 'day') || false;\n const isInRange =\n rangeStart &&\n rangeEnd &&\n current.isAfter(rangeStart, 'day') &&\n current.isBefore(rangeEnd, 'day');\n\n days.push({\n date: current,\n isCurrentMonth,\n isToday,\n isSelected,\n isDisabled,\n isRangeStart,\n isRangeEnd,\n isInRange,\n });\n\n current = current.add(1, 'day');\n }\n\n return days;\n }, [\n currentDate,\n selectedDates,\n rangeStart,\n rangeEnd,\n minDate,\n maxDate,\n disabledDates,\n disabledDaysOfWeek,\n firstDayOfWeek,\n ]);\n\n // Generate weekday headers\n const weekDays = useMemo(() => {\n const days = [];\n let start =\n firstDayOfWeek === 0 ? dayjs().startOf('week') : dayjs().startOf('week').add(1, 'day');\n\n for (let i = 0; i < 7; i++) {\n days.push(start.format('dd'));\n start = start.add(1, 'day');\n }\n return days;\n }, [firstDayOfWeek]);\n\n // Handle date click\n const handleDateClick = useCallback(\n (date: Dayjs) => {\n onDateSelect(date);\n },\n [onDateSelect],\n );\n\n return (\n <div className={'eidos-calendar'}>\n {/* Header with navigation - only interactive when this calendar actually\n\t\t\t navigates independently of its neighbors (see `showNavigation` doc).\n\t\t\t Showing editable, interactive controls that silently move a sibling\n\t\t\t calendar instead of themselves is exactly the confusing behavior this\n\t\t\t is meant to avoid; a plain label is honest about what will happen. */}\n <div className={'eidos-calendar-header'}>\n {showNavigation ? (\n granularity === 'month' ? (\n <>\n <Button variant=\"text\" icon={ChevronLeft} onClick={handlePrevYear} />\n\n <div className={'eidos-calendar-selectors'}>\n <Select\n options={yearOptions}\n value={currentDate.year().toString()}\n onChange={handleYearSelect}\n clearable={false}\n dropdownProps={{\n dropdownGroup: 'calendar-navigation',\n }}\n />\n </div>\n\n <Button variant=\"text\" icon={ChevronRight} onClick={handleNextYear} />\n </>\n ) : (\n <>\n <Button variant=\"text\" icon={ChevronLeft} onClick={handlePrevMonth} />\n\n <div className={'eidos-calendar-selectors'}>\n <Select\n options={monthOptions}\n value={currentDate.month().toString()}\n onChange={handleMonthSelect}\n clearable={false}\n dropdownProps={{\n dropdownGroup: 'calendar-navigation',\n }}\n />\n <Select\n options={yearOptions}\n value={currentDate.year().toString()}\n onChange={handleYearSelect}\n clearable={false}\n dropdownProps={{\n dropdownGroup: 'calendar-navigation',\n }}\n />\n </div>\n\n <Button variant=\"text\" icon={ChevronRight} onClick={handleNextMonth} />\n </>\n )\n ) : (\n <div className={'eidos-calendar-label'}>\n {currentDate.format(granularity === 'month' ? 'YYYY' : 'MMMM YYYY')}\n </div>\n )}\n </div>\n\n {/* Calendar grid */}\n {granularity === 'month' ? (\n <div className={'eidos-calendar-month-cells'}>\n {monthCells.map((month, index) => (\n <button\n key={index}\n type=\"button\"\n className={`eidos-calendar-date-cell eidos-calendar-month-cell ${month.isToday ? 'eidos-calendar-today' : ''} ${month.isSelected ? 'eidos-calendar-selected' : ''} ${month.isDisabled ? 'eidos-calendar-disabled' : ''} ${month.isRangeStart ? 'eidos-calendar-range-start' : ''} ${month.isRangeEnd ? 'eidos-calendar-range-end' : ''} ${month.isInRange ? 'eidos-calendar-in-range' : ''}`.trim()}\n onClick={() => !month.isDisabled && handleDateClick(month.date)}\n disabled={month.isDisabled}\n >\n {month.date.format('MMM')}\n </button>\n ))}\n </div>\n ) : (\n <div className={'eidos-calendar-grid'}>\n {/* Week numbers column (optional) */}\n {showWeekNumbers && (\n <div className={'eidos-calendar-week-numbers-column'}>\n <div className={'eidos-calendar-week-number-header'}></div>\n {Array.from({ length: 6 }, (_, weekIndex) => {\n const weekStart = calendarDays[weekIndex * 7].date;\n return (\n <div key={weekIndex} className={'eidos-calendar-week-number'}>\n {weekStart.format('W')}\n </div>\n );\n })}\n </div>\n )}\n\n {/* Main calendar content */}\n <div className={'eidos-calendar-content'}>\n {/* Weekday headers */}\n <div className={'eidos-calendar-week-days'}>\n {weekDays.map((day, index) => (\n <div key={index} className={'eidos-calendar-week-day'}>\n {day}\n </div>\n ))}\n </div>\n\n {/* Date cells */}\n <div className={'eidos-calendar-date-cells'}>\n {calendarDays.map((day, index) => (\n <button\n key={index}\n type=\"button\"\n className={`eidos-calendar-date-cell ${!day.isCurrentMonth ? 'eidos-calendar-other-month' : ''} ${day.isToday ? 'eidos-calendar-today' : ''} ${day.isSelected ? 'eidos-calendar-selected' : ''} ${day.isDisabled ? 'eidos-calendar-disabled' : ''} ${day.isRangeStart ? 'eidos-calendar-range-start' : ''} ${day.isRangeEnd ? 'eidos-calendar-range-end' : ''} ${day.isInRange ? 'eidos-calendar-in-range' : ''}`.trim()}\n onClick={() => !day.isDisabled && handleDateClick(day.date)}\n disabled={day.isDisabled}\n >\n {day.date.date()}\n </button>\n ))}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { Input } from '../Input/Input.component';\nimport type { TimeValue } from './DatePicker.types';\n\nexport interface TimeInputProps {\n value: TimeValue;\n onChange: (time: TimeValue) => void;\n includeSeconds?: boolean;\n disabled?: boolean;\n label?: string;\n}\n\nexport const TimeInput: React.FC<TimeInputProps> = ({\n value,\n onChange,\n includeSeconds = false,\n disabled = false,\n label = 'Time',\n}) => {\n const [hours, setHours] = useState(value.hours.toString().padStart(2, '0'));\n const [minutes, setMinutes] = useState(value.minutes.toString().padStart(2, '0'));\n const [seconds, setSeconds] = useState((value.seconds || 0).toString().padStart(2, '0'));\n\n // Update local state when value prop changes\n useEffect(() => {\n setHours(value.hours.toString().padStart(2, '0'));\n setMinutes(value.minutes.toString().padStart(2, '0'));\n setSeconds((value.seconds || 0).toString().padStart(2, '0'));\n }, [value]);\n\n const handleTimeChange = useCallback(\n (newHours: number, newMinutes: number, newSeconds: number) => {\n onChange({\n hours: newHours,\n minutes: newMinutes,\n seconds: newSeconds,\n });\n },\n [onChange],\n );\n\n const handleHoursChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newHours = Math.max(0, Math.min(23, parseInt(e.target.value) || 0));\n setHours(newHours.toString().padStart(2, '0'));\n handleTimeChange(newHours, value.minutes, value.seconds || 0);\n },\n [handleTimeChange, value.minutes, value.seconds],\n );\n\n const handleMinutesChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newMinutes = Math.max(0, Math.min(59, parseInt(e.target.value) || 0));\n setMinutes(newMinutes.toString().padStart(2, '0'));\n handleTimeChange(value.hours, newMinutes, value.seconds || 0);\n },\n [handleTimeChange, value.hours, value.seconds],\n );\n\n const handleSecondsChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newSeconds = Math.max(0, Math.min(59, parseInt(e.target.value) || 0));\n setSeconds(newSeconds.toString().padStart(2, '0'));\n handleTimeChange(value.hours, value.minutes, newSeconds);\n },\n [handleTimeChange, value.hours, value.minutes],\n );\n\n return (\n <div className={'eidos-time-input'}>\n {label && <label className={'eidos-time-input-label'}>{label}</label>}\n <div className={'eidos-time-input-inputs'}>\n <div className={'eidos-time-input-input-group'}>\n <Input\n type=\"number\"\n value={hours}\n onChange={handleHoursChange}\n disabled={disabled}\n min={0}\n max={23}\n placeholder=\"HH\"\n size=\"sm\"\n className={'eidos-time-input-time-field'}\n />\n <span className={'eidos-time-input-separator'}>:</span>\n </div>\n <div className={'eidos-time-input-input-group'}>\n <Input\n type=\"number\"\n value={minutes}\n onChange={handleMinutesChange}\n disabled={disabled}\n min={0}\n max={59}\n placeholder=\"MM\"\n size=\"sm\"\n className={'eidos-time-input-time-field'}\n />\n {includeSeconds && <span className={'eidos-time-input-separator'}>:</span>}\n </div>\n {includeSeconds && (\n <div className={'eidos-time-input-input-group'}>\n <Input\n type=\"number\"\n value={seconds}\n onChange={handleSecondsChange}\n disabled={disabled}\n min={0}\n max={59}\n placeholder=\"SS\"\n size=\"sm\"\n className={'eidos-time-input-time-field'}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Combobox/Combobox.component.tsx"],"sourcesContent":["import React, { useState, useCallback, useRef, useEffect, useMemo, useId } from 'react';\nimport { Check, ChevronDown, X, Loader2, CircleAlert } from 'lucide-react';\nimport { Input } from '../Input/Input.component';\nimport { Dropdown } from '../Dropdown/Dropdown.component';\nimport { fullWidthModifier } from '../../utils';\nimport type { ComboboxProps, ComboboxOption } from './Combobox.types';\nimport './Combobox.scss';\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\ntype OptionEntry =\n | { type: 'group'; group: string; key: string }\n | { type: 'option'; option: ComboboxOption; index: number; key: string };\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\nexport const Combobox: React.FC<ComboboxProps> = ({\n options = [],\n value,\n defaultValue,\n onChange,\n onSearch,\n placeholder = 'Search or select…',\n loading = false,\n loadingText = 'Searching…',\n emptyText = 'No results found',\n allowFreeText = false,\n clearable = true,\n disabled = false,\n size = 'md',\n label,\n error,\n hint,\n fullWidth = false,\n className = '',\n maxHeight = '300px',\n renderOption,\n}) => {\n const uid = useId();\n\n // ─── Refs ─────────────────────────────────────────────────────────────────\n\n /** Entire combobox wrapper - used for click-outside detection */\n const containerRef = useRef<HTMLDivElement>(null);\n\n /** The trigger wrapper div - passed to Dropdown as externalTriggerRef for width */\n const comboboxTriggerRef = useRef<HTMLDivElement>(null);\n\n /** The 0-height span that IS the Dropdown trigger element - programmatically clicked to open */\n const dropdownSpanRef = useRef<HTMLSpanElement>(null);\n\n /** Native input element */\n const inputRef = useRef<HTMLInputElement>(null);\n\n /** Focusable option divs for scroll-into-view */\n const optionRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n /**\n * Synchronous open-state flag.\n * React state updates are async; reading this ref inside event handlers\n * gives us the true current value without waiting for a re-render.\n */\n const isOpenRef = useRef(false);\n\n // ─── State ────────────────────────────────────────────────────────────────\n\n const isControlled = value !== undefined;\n\n const getInitialInputValue = (): string => {\n const seed = isControlled ? value : defaultValue;\n if (!seed) return '';\n const match = options.find((o) => o.value === seed);\n return match ? match.label : allowFreeText ? seed : '';\n };\n\n const getInitialCommittedValue = (): string => {\n return isControlled ? (value ?? '') : (defaultValue ?? '');\n };\n\n const [inputValue, _setInputValue] = useState<string>(getInitialInputValue);\n const inputValueRef = useRef<string>(inputValue);\n const setInputValue = useCallback((v: string) => {\n inputValueRef.current = v;\n _setInputValue(v);\n }, []);\n\n const [committedValue, _setCommittedValue] = useState<string>(getInitialCommittedValue);\n const committedValueRef = useRef<string>(committedValue);\n const setCommittedValue = useCallback((v: string) => {\n committedValueRef.current = v;\n _setCommittedValue(v);\n }, []);\n\n const [isOpen, setIsOpen] = useState(false);\n const [menuKey, setMenuKey] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState(-1);\n\n // ─── Sync controlled value ────────────────────────────────────────────────\n\n useEffect(() => {\n if (!isControlled) return;\n const v = value ?? '';\n const match = options.find((o) => o.value === v);\n const label = match ? match.label : allowFreeText ? v : '';\n setInputValue(label);\n setCommittedValue(v);\n }, [value, isControlled, options, allowFreeText, setInputValue, setCommittedValue]);\n\n // ─── Derived: filtered options ────────────────────────────────────────────\n\n const filteredOptions = useMemo<ComboboxOption[]>(() => {\n const q = inputValue.toLowerCase();\n if (!q) return options;\n return options.filter((o) => o.label.toLowerCase().includes(q));\n }, [options, inputValue]);\n\n // Reset focused index when the filtered set changes\n useEffect(() => {\n setFocusedIndex(-1);\n }, [filteredOptions]);\n\n // Keep optionRefs array in sync with filteredOptions length\n useEffect(() => {\n optionRefs.current = optionRefs.current.slice(0, filteredOptions.length);\n }, [filteredOptions.length]);\n\n // ─── Derived: option entries (with group headers) ─────────────────────────\n\n const optionEntries = useMemo<OptionEntry[]>(() => {\n const entries: OptionEntry[] = [];\n const hasGroups = filteredOptions.some((o) => o.group);\n\n if (!hasGroups) {\n filteredOptions.forEach((option, index) => {\n entries.push({ type: 'option', option, index, key: option.id });\n });\n return entries;\n }\n\n // Build ordered group map while preserving insertion order\n const groupMap = new Map<string | null, ComboboxOption[]>();\n for (const option of filteredOptions) {\n const g = option.group ?? null;\n if (!groupMap.has(g)) groupMap.set(g, []);\n groupMap.get(g)!.push(option);\n }\n\n let optionIndex = 0;\n for (const [group, opts] of groupMap.entries()) {\n if (group !== null) {\n entries.push({ type: 'group', group, key: `group-${group}` });\n }\n for (const option of opts) {\n entries.push({ type: 'option', option, index: optionIndex++, key: option.id });\n }\n }\n\n return entries;\n }, [filteredOptions]);\n\n // ─── Open / Close helpers ─────────────────────────────────────────────────\n\n /**\n * Open the dropdown by programmatically clicking the 0-height span trigger.\n * The click bubbles to div.eidos-dropdown-trigger → Dropdown.handleTriggerClick → opens.\n *\n * We set isOpenRef AFTER the synthetic click so that the Dropdown's toggle\n * handler fires while isOpenRef is still false (allowing it to open).\n */\n const openDropdown = useCallback(() => {\n if (isOpenRef.current || disabled) return;\n dropdownSpanRef.current?.click(); // opens the Dropdown (bubbles to trigger)\n isOpenRef.current = true;\n setIsOpen(true);\n }, [disabled]);\n\n /**\n * Close the dropdown by remounting it (menuKey increment resets internal state).\n * Optionally revert inputValue to the last committed value.\n */\n const closeDropdown = useCallback(\n (revertInput = false) => {\n isOpenRef.current = false;\n setIsOpen(false);\n setFocusedIndex(-1);\n setMenuKey((prev) => prev + 1);\n\n if (revertInput) {\n const match = options.find((o) => o.value === committedValueRef.current);\n setInputValue(match ? match.label : allowFreeText ? committedValueRef.current : '');\n }\n },\n [options, allowFreeText, setInputValue],\n );\n\n // ─── Click-outside detection ──────────────────────────────────────────────\n\n useEffect(() => {\n const handleMouseDown = (e: MouseEvent) => {\n if (!isOpenRef.current) return;\n // defaultPrevented is set by the listbox's onMouseDown - means the user\n // clicked an option in the portal, not truly outside the combobox.\n if (e.defaultPrevented) return;\n if (containerRef.current?.contains(e.target as Node)) return;\n\n // Focus leaving to a non-focusable target: validate and close\n isOpenRef.current = false;\n setIsOpen(false);\n setFocusedIndex(-1);\n setMenuKey((prev) => prev + 1);\n\n const current = inputValueRef.current;\n const committed = committedValueRef.current;\n\n if (!allowFreeText) {\n const match = options.find((o) => o.label.toLowerCase() === current.toLowerCase());\n if (match) {\n if (match.value !== committed) {\n setCommittedValue(match.value);\n onChange?.(match.value);\n setInputValue(match.label);\n }\n } else {\n const revertMatch = options.find((o) => o.value === committed);\n setInputValue(revertMatch ? revertMatch.label : '');\n }\n } else {\n if (current !== committed) {\n setCommittedValue(current);\n onChange?.(current);\n }\n }\n };\n\n document.addEventListener('mousedown', handleMouseDown);\n return () => document.removeEventListener('mousedown', handleMouseDown);\n }, [allowFreeText, options, onChange, setCommittedValue, setInputValue]);\n\n // ─── Input handlers ───────────────────────────────────────────────────────\n\n const handleFocus = useCallback(() => {\n openDropdown();\n }, [openDropdown]);\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const query = e.target.value;\n setInputValue(query);\n onSearch?.(query);\n if (!isOpenRef.current) openDropdown();\n },\n [setInputValue, onSearch, openDropdown],\n );\n\n /**\n * On blur, validate the typed value against options.\n * A 0ms defer ensures a click on a posIcon button (X / chevron) inside the\n * Input completes its onClick before we run close logic, so we can check\n * document.activeElement reliably.\n */\n const handleBlur = useCallback(() => {\n setTimeout(() => {\n // If focus came back inside the container (e.g., posIcon button clicked),\n // don't close or validate yet.\n if (containerRef.current?.contains(document.activeElement)) return;\n\n // Read both refs *inside* the deferred callback, never captured at blur\n // time - that's the whole reason they're kept in sync by the setters.\n // Anything can run in the gap this 0ms defer opens, including the click\n // that caused the blur: a controlled consumer clearing `value` from\n // another control (e.g. DataGrid's \"Clear filters\", which resets every\n // quick filter at once) updates the refs via the sync effect, and stale\n // captured values would then resurrect the label that was just cleared.\n const current = inputValueRef.current;\n const committed = committedValueRef.current;\n\n // Close\n isOpenRef.current = false;\n setIsOpen(false);\n setFocusedIndex(-1);\n setMenuKey((prev) => prev + 1);\n\n // Validate\n if (!allowFreeText) {\n const match = options.find((o) => o.label.toLowerCase() === current.toLowerCase());\n if (match) {\n if (match.value !== committed) {\n setCommittedValue(match.value);\n onChange?.(match.value);\n setInputValue(match.label);\n } else {\n // Normalize the display label (fix casing)\n setInputValue(match.label);\n }\n } else {\n // No match - revert to last committed value\n const revertMatch = options.find((o) => o.value === committed);\n setInputValue(revertMatch ? revertMatch.label : '');\n }\n } else {\n // allowFreeText: commit whatever the user typed\n if (current !== committed) {\n setCommittedValue(current);\n onChange?.(current);\n }\n }\n }, 0);\n }, [allowFreeText, options, onChange, setCommittedValue, setInputValue]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!isOpenRef.current) {\n openDropdown();\n setFocusedIndex(0);\n } else {\n setFocusedIndex((prev) => {\n const next = prev < filteredOptions.length - 1 ? prev + 1 : 0;\n setTimeout(\n () =>\n optionRefs.current[next]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n }),\n 0,\n );\n return next;\n });\n }\n break;\n\n case 'ArrowUp':\n e.preventDefault();\n if (!isOpenRef.current) {\n openDropdown();\n setFocusedIndex(filteredOptions.length - 1);\n } else {\n setFocusedIndex((prev) => {\n const next = prev > 0 ? prev - 1 : filteredOptions.length - 1;\n setTimeout(\n () =>\n optionRefs.current[next]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n }),\n 0,\n );\n return next;\n });\n }\n break;\n\n case 'Enter':\n e.preventDefault();\n if (isOpenRef.current && focusedIndex >= 0 && focusedIndex < filteredOptions.length) {\n handleOptionSelect(filteredOptions[focusedIndex]);\n } else if (allowFreeText && inputValue.trim()) {\n const trimmed = inputValue.trim();\n setCommittedValue(trimmed);\n onChange?.(trimmed);\n closeDropdown();\n }\n break;\n\n case 'Escape':\n e.preventDefault();\n if (isOpenRef.current) {\n closeDropdown(true /* revert */);\n }\n break;\n\n default:\n break;\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n disabled,\n filteredOptions,\n focusedIndex,\n allowFreeText,\n inputValue,\n onChange,\n openDropdown,\n closeDropdown,\n setCommittedValue,\n ],\n );\n\n // ─── Option selection ─────────────────────────────────────────────────────\n\n const handleOptionSelect = useCallback(\n (option: ComboboxOption) => {\n if (option.disabled) return;\n setInputValue(option.label);\n setCommittedValue(option.value);\n onChange?.(option.value);\n closeDropdown();\n // Return focus to the input so the user can continue interacting\n inputRef.current?.focus();\n },\n [onChange, closeDropdown, setInputValue, setCommittedValue],\n );\n\n // ─── Clear ────────────────────────────────────────────────────────────────\n\n const handleClearClick = useCallback(() => {\n setInputValue('');\n setCommittedValue('');\n onChange?.('');\n // Re-focus input so the user can immediately start typing again\n inputRef.current?.focus();\n }, [onChange, setInputValue, setCommittedValue]);\n\n // ─── Chevron toggle ───────────────────────────────────────────────────────\n\n const handleChevronClick = useCallback(() => {\n if (isOpenRef.current) {\n closeDropdown();\n } else {\n openDropdown();\n }\n }, [closeDropdown, openDropdown]);\n\n // ─── Render: individual option ────────────────────────────────────────────\n\n const renderOptionItem = useCallback(\n (option: ComboboxOption, index: number): React.ReactNode => {\n const isSelected = option.value === committedValue;\n const isFocused = index === focusedIndex;\n\n const classes = [\n 'eidos-combobox-option',\n isSelected && 'eidos-combobox-option--selected',\n isFocused && 'eidos-combobox-option--focused',\n option.disabled && 'eidos-combobox-option--disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n key={option.id}\n ref={(el) => {\n optionRefs.current[index] = el;\n }}\n className={classes}\n onClick={() => handleOptionSelect(option)}\n onMouseEnter={() => !option.disabled && setFocusedIndex(index)}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={option.disabled}\n id={`${uid}-option-${index}`}\n >\n {renderOption ? (\n renderOption(option)\n ) : (\n <>\n <Check\n className={`eidos-combobox-option-icon${\n !isSelected ? ' eidos-combobox-option-icon--hidden' : ''\n }`}\n />\n <span className=\"eidos-combobox-option-label\">{option.label}</span>\n {option.description && (\n <span className=\"eidos-combobox-option-description\">{option.description}</span>\n )}\n </>\n )}\n </div>\n );\n },\n [committedValue, focusedIndex, handleOptionSelect, renderOption, uid],\n );\n\n // ─── Render: dropdown content ─────────────────────────────────────────────\n\n const dropdownContent = useMemo(() => {\n if (loading) {\n return (\n <div className=\"eidos-combobox-loading\">\n <Loader2 className=\"eidos-combobox-loading-icon\" />\n <span>{loadingText}</span>\n </div>\n );\n }\n\n if (filteredOptions.length === 0) {\n return <div className=\"eidos-combobox-empty\">{emptyText}</div>;\n }\n\n return optionEntries.map((entry) => {\n if (entry.type === 'group') {\n return (\n <div key={entry.key} className=\"eidos-combobox-option-group-label\">\n {entry.group}\n </div>\n );\n }\n return renderOptionItem(entry.option, entry.index);\n });\n }, [loading, loadingText, filteredOptions.length, emptyText, optionEntries, renderOptionItem]);\n\n // ─── posIcon / posIconButton wiring ───────────────────────────────────────\n\n const hasClearableValue = clearable && !!inputValue;\n const posIcon = hasClearableValue ? X : ChevronDown;\n const posIconClick = hasClearableValue ? handleClearClick : handleChevronClick;\n\n // ─── CSS classes ──────────────────────────────────────────────────────────\n\n const containerClasses = [\n 'eidos-combobox',\n fullWidth && fullWidthModifier('eidos-combobox'),\n error && 'eidos-combobox--error',\n disabled && 'eidos-combobox--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const maxHeightValue = typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight;\n\n // ─── Render ───────────────────────────────────────────────────────────────\n\n return (\n // No ARIA on this wrapper.\n //\n // It carried `aria-expanded` and `aria-haspopup` while having no role at\n // all, which is invalid - both are only meaningful on an element whose\n // role supports them. They belong on the input, which is the combobox.\n <div ref={containerRef} className={containerClasses}>\n <div ref={comboboxTriggerRef} className=\"eidos-combobox-trigger\">\n {/*\n The Input is a direct child of eidos-combobox-trigger.\n It is NOT inside the Dropdown trigger div, so clicking it\n never bubbles to Dropdown.handleTriggerClick and never\n accidentally toggles the dropdown closed mid-edit.\n */}\n <Input\n ref={inputRef}\n value={inputValue}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n size={size}\n fullWidth\n label={label}\n clearable={false} // we render our own clear via posIcon\n isSelect={false}\n posIcon={posIcon}\n posIconButton\n onPosIconClick={posIconClick}\n // The same button does two jobs depending on state, so the name\n // has to follow the icon - \"Clear\" on a chevron would be a lie.\n posIconLabel={hasClearableValue ? 'Clear selection' : 'Show options'}\n // The ARIA 1.2 combobox pattern: the input *is* the combobox.\n role=\"combobox\"\n aria-expanded={isOpen}\n // `Combobox` renders its own error message rather than passing\n // `error` down, so it does not inherit `Input`'s wiring and has to\n // associate the message itself (SC 3.3.1).\n aria-invalid={error ? true : undefined}\n aria-describedby={error ? `${uid}-error` : undefined}\n aria-autocomplete=\"list\"\n // Only while the listbox exists. `aria-controls` pointing at an id\n // that is not in the document is invalid, and that is what shipped\n // - the listbox only renders once the dropdown opens.\n aria-controls={isOpen ? `${uid}-listbox` : undefined}\n aria-activedescendant={focusedIndex >= 0 ? `${uid}-option-${focusedIndex}` : undefined}\n />\n\n {/*\n The Dropdown trigger is a 0-height span placed AFTER the Input\n in the normal document flow. Its getBoundingClientRect sits at\n exactly the bottom edge of the Input, giving the Dropdown correct\n placement without any click-toggle collision with the Input above.\n closeOnClickOutside and closeOnEscape are disabled because we own\n those interactions in our mousedown listener and onKeyDown handler.\n */}\n <Dropdown\n key={menuKey}\n trigger={\n <span\n ref={dropdownSpanRef}\n className=\"eidos-combobox-dropdown-anchor\"\n aria-hidden=\"true\"\n />\n }\n content={\n <div\n id={`${uid}-listbox`}\n className=\"eidos-combobox-options\"\n role=\"listbox\"\n aria-label={label ?? 'Options'}\n // Prevent the input from blurring when the user clicks an option,\n // and mark this event so the click-outside handler ignores it.\n onMouseDown={(e) => e.preventDefault()}\n >\n {dropdownContent}\n </div>\n }\n triggerRef={comboboxTriggerRef as React.RefObject<HTMLElement | null>}\n maxHeight={maxHeightValue}\n autoWidth\n closeOnClickOutside={false}\n closeOnEscape={false}\n />\n </div>\n\n {hint && !error && <span className=\"eidos-combobox-hint\">{hint}</span>}\n {error && (\n <span id={`${uid}-error`} className=\"eidos-combobox-error-message\">\n <CircleAlert className=\"eidos-combobox-error-icon\" />\n {error}\n </span>\n )}\n </div>\n );\n};\n\nCombobox.displayName = 'Combobox';\n"],"mappings":"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","names":["label"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-MLUHM3VG.cjs","../src/components/Tooltip/Tooltip.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-MLUHM3VG.cjs","sourcesContent":[null,"import React, { useState, useRef, useCallback, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport type { TooltipProps, TooltipState } from './Tooltip.types';\nimport { FOCUSABLE_SELECTOR } from '../../utils';\n\n/**\n * How long the tooltip stays open after the pointer leaves, so it can be\n * moved onto the panel itself (SC 1.4.13, \"hoverable\"). Long enough to cross\n * the gap, short enough not to feel stuck.\n */\nconst HOVER_GRACE_MS = 150;\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n children,\n message,\n component: Component,\n componentProps,\n placement: preferredPlacement = 'top',\n delay = 100,\n disabled = false,\n className = '',\n triggerType = 'hover',\n closeOnClickOutside = true,\n closeOnEscape = true,\n}) => {\n const [tooltipState, setTooltipState] = useState<TooltipState>({\n isVisible: false,\n position: { top: 0, left: 0, placement: 'top' },\n isPositioned: false,\n });\n\n const triggerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = 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 const calculateOptimalPosition = useCallback(\n (triggerRect: DOMRect, tooltipRect: DOMRect) => {\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const gap = 8;\n\n let placement: 'top' | 'bottom' | 'left' | 'right' = preferredPlacement;\n let top = 0;\n let left = 0;\n\n switch (preferredPlacement) {\n case 'top':\n top = triggerRect.top - tooltipRect.height - gap;\n left = triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n break;\n case 'bottom':\n top = triggerRect.bottom + gap;\n left = triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n break;\n case 'left':\n top = triggerRect.top + triggerRect.height / 2 - tooltipRect.height / 2;\n left = triggerRect.left - tooltipRect.width - gap;\n break;\n case 'right':\n top = triggerRect.top + triggerRect.height / 2 - tooltipRect.height / 2;\n left = triggerRect.right + gap;\n break;\n }\n\n if (placement === 'top' && top < gap) {\n placement = 'bottom';\n top = triggerRect.bottom + gap;\n left = triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n } else if (placement === 'bottom' && top + tooltipRect.height > viewportHeight - gap) {\n placement = 'top';\n top = triggerRect.top - tooltipRect.height - gap;\n left = triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n } else if (placement === 'left' && left < gap) {\n placement = 'right';\n top = triggerRect.top + triggerRect.height / 2 - tooltipRect.height / 2;\n left = triggerRect.right + gap;\n } else if (placement === 'right' && left + tooltipRect.width > viewportWidth - gap) {\n placement = 'left';\n top = triggerRect.top + triggerRect.height / 2 - tooltipRect.height / 2;\n left = triggerRect.left - tooltipRect.width - gap;\n }\n\n top = Math.max(gap, Math.min(top, viewportHeight - tooltipRect.height - gap));\n left = Math.max(gap, Math.min(left, viewportWidth - tooltipRect.width - gap));\n\n return { top, left, placement };\n },\n [preferredPlacement],\n );\n\n const handleScroll = useCallback(() => {\n if (!tooltipState.isVisible || !tooltipState.isPositioned || isScrollingRef.current) return;\n\n isScrollingRef.current = true;\n\n animationFrameRef.current = requestAnimationFrame(() => {\n if (triggerRef.current && tooltipRef.current) {\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n\n const { top, left, placement } = calculateOptimalPosition(triggerRect, tooltipRect);\n\n setTooltipState((prev) => ({\n ...prev,\n position: { top, left, placement },\n }));\n }\n\n isScrollingRef.current = false;\n });\n }, [tooltipState.isVisible, tooltipState.isPositioned, calculateOptimalPosition]);\n\n const handleMouseEnter = useCallback(() => {\n if (disabled || triggerType !== 'hover') return;\n\n // Cancels a pending hide as well as scheduling the show. Both handlers\n // are bound to the trigger *and* to the panel, so this is what catches\n // the pointer as it crosses from one to the other.\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n // Left untouched when already open. Re-entering from the panel would\n // otherwise re-run the open transition and reposition a tooltip the\n // user is in the middle of reading.\n setTooltipState((prev) =>\n prev.isVisible ? prev : { ...prev, isVisible: true, isPositioned: false },\n );\n }, delay);\n }, [disabled, delay, triggerType]);\n\n const handleMouseLeave = useCallback(() => {\n if (triggerType !== 'hover') return;\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // Closing is delayed, not immediate.\n //\n // SC 1.4.13 requires the pointer to be able to reach the tooltip's own\n // content. The panel is portaled and sits a few pixels off the trigger,\n // so an immediate hide made that gap impossible to cross - the tooltip\n // disappeared the moment the pointer left the trigger, however fast the\n // user moved. The grace period is what makes \"hoverable\" reachable in\n // practice.\n timeoutRef.current = setTimeout(() => {\n setTooltipState((prev) => ({\n ...prev,\n isVisible: false,\n isPositioned: false,\n }));\n }, HOVER_GRACE_MS);\n }, [triggerType]);\n\n const handleClick = useCallback(() => {\n if (disabled || triggerType !== 'click') return;\n\n if (tooltipState.isVisible) {\n setTooltipState((prev) => ({\n ...prev,\n isVisible: false,\n isPositioned: false,\n }));\n } else {\n if (delay > 0) {\n timeoutRef.current = setTimeout(() => {\n setTooltipState((prev) => ({\n ...prev,\n isVisible: true,\n isPositioned: false,\n }));\n }, delay);\n } else {\n setTooltipState((prev) => ({\n ...prev,\n isVisible: true,\n isPositioned: false,\n }));\n }\n }\n }, [disabled, triggerType, tooltipState.isVisible, delay]);\n\n const handleFocus = useCallback(() => {\n if (disabled || triggerType !== 'focus') return;\n\n timeoutRef.current = setTimeout(() => {\n setTooltipState((prev) => ({\n ...prev,\n isVisible: true,\n isPositioned: false,\n }));\n }, delay);\n }, [disabled, triggerType, delay]);\n\n const handleBlur = useCallback(() => {\n if (triggerType !== 'focus') return;\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n setTooltipState((prev) => ({\n ...prev,\n isVisible: false,\n isPositioned: false,\n }));\n }, [triggerType]);\n\n const handleClickOutside = useCallback(\n (event: MouseEvent) => {\n if (!closeOnClickOutside || !tooltipState.isVisible || triggerType !== 'click') return;\n\n const target = event.target as Node;\n\n if (tooltipRef.current?.contains(target) || triggerRef.current?.contains(target)) {\n return;\n }\n\n setTooltipState((prev) => ({\n ...prev,\n isVisible: false,\n isPositioned: false,\n }));\n },\n [closeOnClickOutside, tooltipState.isVisible, triggerType],\n );\n\n const handleEscapeKey = useCallback(\n (event: KeyboardEvent) => {\n // Every trigger type, not just `click`.\n //\n // SC 1.4.13 requires content shown on hover *or focus* to be\n // dismissible without moving the pointer or focus - and `hover` is the\n // default, so the one configuration that could be dismissed was the\n // one least likely to be used. A tooltip covering the text you are\n // trying to read had to be escaped by physically moving the mouse.\n if (closeOnEscape && event.key === 'Escape' && tooltipState.isVisible) {\n setTooltipState((prev) => ({\n ...prev,\n isVisible: false,\n isPositioned: false,\n }));\n }\n },\n [closeOnEscape, tooltipState.isVisible],\n );\n\n useEffect(() => {\n if (\n tooltipState.isVisible &&\n !tooltipState.isPositioned &&\n tooltipRef.current &&\n triggerRef.current\n ) {\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n\n const { top, left, placement } = calculateOptimalPosition(triggerRect, tooltipRect);\n\n setTooltipState((prev) => ({\n ...prev,\n position: { top, left, placement },\n isPositioned: true,\n }));\n }\n }, [tooltipState.isVisible, tooltipState.isPositioned, calculateOptimalPosition]);\n\n useEffect(() => {\n const handleResize = () => {\n if (\n tooltipState.isVisible &&\n tooltipState.isPositioned &&\n tooltipRef.current &&\n triggerRef.current\n ) {\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n\n const { top, left, placement } = calculateOptimalPosition(triggerRect, tooltipRect);\n\n setTooltipState((prev) => ({\n ...prev,\n position: { top, left, placement },\n }));\n }\n };\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [tooltipState.isVisible, tooltipState.isPositioned, calculateOptimalPosition]);\n\n useEffect(() => {\n if (tooltipState.isVisible) {\n window.addEventListener('scroll', handleScroll, { passive: true });\n\n document.body.addEventListener('scroll', handleScroll, { passive: true });\n }\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n document.body.removeEventListener('scroll', handleScroll);\n };\n }, [tooltipState.isVisible, handleScroll]);\n\n // Click-outside is only meaningful for a click-triggered tooltip; Escape\n // is not. Registering them together meant a hover tooltip had no way to be\n // dismissed from the keyboard at all (SC 1.4.13, \"dismissible\") - and\n // `hover` is the default, so the failing case was the common one.\n useEffect(() => {\n if (tooltipState.isVisible && triggerType === 'click') {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [tooltipState.isVisible, triggerType, handleClickOutside]);\n\n useEffect(() => {\n if (tooltipState.isVisible) {\n document.addEventListener('keydown', handleEscapeKey);\n }\n\n return () => {\n document.removeEventListener('keydown', handleEscapeKey);\n };\n }, [tooltipState.isVisible, handleEscapeKey]);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n };\n }, []);\n\n const renderTooltipContent = () => {\n if (message) {\n return <span className=\"eidos-tooltip-message\">{message}</span>;\n }\n if (Component) {\n return <Component {...(componentProps || {})} />;\n }\n return null;\n };\n\n // Whether the trigger wrapper has to become focusable itself, i.e. whether\n // the consumer's child is not already a control. Measured from the DOM\n // rather than guessed from the node type, because `children` is an\n // arbitrary `ReactNode` and the control may be nested inside it.\n const [triggerNeedsFocus, setTriggerNeedsFocus] = useState(false);\n\n useEffect(() => {\n const el = triggerRef.current;\n setTriggerNeedsFocus(!!el && el.querySelector(FOCUSABLE_SELECTOR) === null);\n }, [children, triggerType]);\n\n const getTriggerProps = () => {\n const props: Record<string, unknown> = {\n ref: triggerRef,\n className: 'eidos-tooltip-trigger',\n };\n\n switch (triggerType) {\n case 'hover':\n props.onMouseEnter = handleMouseEnter;\n props.onMouseLeave = handleMouseLeave;\n break;\n case 'click':\n props.onClick = handleClick;\n // Only when the trigger has no control of its own. Making this\n // wrapper a button unconditionally put a button inside a button\n // whenever the child was one - which is the common case, since\n // `Button` wraps *itself* in a Tooltip when given `tooltip`. That is\n // invalid (`nested-interactive`) and gives one action two tab stops.\n if (triggerNeedsFocus) {\n props.role = 'button';\n props.tabIndex = 0;\n props.onKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleClick();\n }\n };\n }\n break;\n case 'focus':\n props.onFocus = handleFocus;\n props.onBlur = handleBlur;\n // Same reasoning: a focusable child already receives the focus that\n // opens the tooltip, and adding `tabIndex` here would just add a\n // second stop in front of it.\n if (triggerNeedsFocus) props.tabIndex = 0;\n break;\n }\n\n return props;\n };\n\n return (\n <>\n <div {...getTriggerProps()}>{children}</div>\n {tooltipState.isVisible &&\n createPortal(\n <div\n ref={tooltipRef}\n // SC 1.4.13 \"hoverable\": the pointer has to be able to reach the\n // tooltip's own content - to read a long message, or select text\n // from it - without it vanishing. The panel used to be\n // `pointer-events: none`, so moving towards it dismissed it.\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n className={`eidos-tooltip eidos-tooltip--${tooltipState.position.placement} ${className}`}\n style={{\n top: tooltipState.position.top,\n left: tooltipState.position.left,\n }}\n data-state={tooltipState.isPositioned ? 'entered' : 'entering'}\n role=\"tooltip\"\n >\n {renderTooltipContent()}\n </div>,\n document.body,\n )}\n </>\n );\n};\n\nTooltip.displayName = 'Tooltip';\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-MW4YZVP5.cjs","../src/components/TagInput/TagInput.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-MW4YZVP5.cjs","sourcesContent":[null,"import React, { useState, useId, useRef, useCallback, useMemo, useEffect } from 'react';\nimport { CircleAlert } from 'lucide-react';\nimport { Chip } from '../Chip/Chip.component';\nimport { Dropdown } from '../Dropdown/Dropdown.component';\nimport type { TagInputProps } from './TagInput.types';\nimport './TagInput.scss';\n\nexport const TagInput: React.FC<TagInputProps> = ({\n value,\n defaultValue = [],\n onChange,\n placeholder = 'Add tag…',\n size = 'md',\n disabled = false,\n label,\n error,\n hint,\n allowDuplicates = false,\n maxTags,\n separators = ['Enter', ',', 'Tab'],\n validate,\n className = '',\n fullWidth = false,\n suggestions,\n onSearch,\n suggestionsEmptyText = 'No matches',\n}) => {\n const generatedId = useId();\n const inputId = `tag-input-${generatedId}`;\n const inputRef = useRef<HTMLInputElement>(null);\n\n /** Entire component wrapper - used for click-outside detection on the suggestions dropdown */\n const containerRef = useRef<HTMLDivElement>(null);\n\n /** The field wrapper - passed to Dropdown as externalTriggerRef for width/anchoring */\n const fieldRef = useRef<HTMLDivElement>(null);\n\n /** The 0-height span that IS the Dropdown trigger element - programmatically clicked to open */\n const dropdownSpanRef = useRef<HTMLSpanElement>(null);\n\n const hasSuggestions = suggestions !== undefined;\n const isSuggestionsOpenRef = useRef(false);\n const [isSuggestionsOpen, setIsSuggestionsOpen] = useState(false);\n const [suggestionsMenuKey, setSuggestionsMenuKey] = useState(0);\n const [focusedSuggestionIndex, setFocusedSuggestionIndex] = useState(-1);\n\n const isControlled = value !== undefined;\n\n const [internalTags, setInternalTags] = useState<string[]>(defaultValue);\n const [inputValue, setInputValue] = useState('');\n const [isFocused, setIsFocused] = useState(false);\n const [validationError, setValidationError] = useState<string | null>(null);\n\n const tags = isControlled ? (value as string[]) : internalTags;\n\n const updateTags = useCallback(\n (newTags: string[]) => {\n if (!isControlled) {\n setInternalTags(newTags);\n }\n onChange?.(newTags);\n },\n [isControlled, onChange],\n );\n\n const addTag = useCallback(\n (rawTag: string) => {\n const tag = rawTag.trim();\n\n if (!tag) return;\n\n if (!allowDuplicates && tags.includes(tag)) return;\n\n if (maxTags !== undefined && tags.length >= maxTags) return;\n\n if (validate) {\n const result = validate(tag);\n if (result === false) return;\n if (typeof result === 'string') {\n setValidationError(result);\n return;\n }\n // result === true → valid, fall through\n }\n\n setValidationError(null);\n updateTags([...tags, tag]);\n setInputValue('');\n },\n [tags, allowDuplicates, maxTags, validate, updateTags],\n );\n\n const removeTag = useCallback(\n (index: number) => {\n updateTags(tags.filter((_, i) => i !== index));\n },\n [tags, updateTags],\n );\n\n // ─── Suggestions dropdown (autocomplete) ───────────────────────────────────\n\n const filteredSuggestions = useMemo<string[]>(() => {\n if (!suggestions) return [];\n const query = inputValue.trim().toLowerCase();\n return suggestions.filter((suggestion) => {\n if (!allowDuplicates && tags.includes(suggestion)) return false;\n if (!query) return true;\n return suggestion.toLowerCase().includes(query);\n });\n }, [suggestions, inputValue, tags, allowDuplicates]);\n\n useEffect(() => {\n setFocusedSuggestionIndex(-1);\n }, [filteredSuggestions]);\n\n const openSuggestions = useCallback(() => {\n if (isSuggestionsOpenRef.current || disabled || !hasSuggestions) return;\n dropdownSpanRef.current?.click(); // opens the Dropdown (bubbles to trigger)\n isSuggestionsOpenRef.current = true;\n setIsSuggestionsOpen(true);\n }, [disabled, hasSuggestions]);\n\n const closeSuggestions = useCallback(() => {\n isSuggestionsOpenRef.current = false;\n setIsSuggestionsOpen(false);\n setFocusedSuggestionIndex(-1);\n setSuggestionsMenuKey((prev) => prev + 1);\n }, []);\n\n const selectSuggestion = useCallback(\n (suggestion: string) => {\n addTag(suggestion);\n closeSuggestions();\n inputRef.current?.focus();\n },\n [addTag, closeSuggestions],\n );\n\n // Click-outside detection for the suggestions dropdown.\n useEffect(() => {\n if (!hasSuggestions) return;\n\n const handleMouseDown = (e: MouseEvent) => {\n if (!isSuggestionsOpenRef.current) return;\n if (e.defaultPrevented) return; // click inside the portal-rendered listbox\n if (containerRef.current?.contains(e.target as Node)) return;\n closeSuggestions();\n };\n\n document.addEventListener('mousedown', handleMouseDown);\n return () => document.removeEventListener('mousedown', handleMouseDown);\n }, [hasSuggestions, closeSuggestions]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (hasSuggestions && isSuggestionsOpenRef.current && filteredSuggestions.length > 0) {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setFocusedSuggestionIndex((prev) => (prev + 1 < filteredSuggestions.length ? prev + 1 : 0));\n return;\n }\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n setFocusedSuggestionIndex((prev) => (prev > 0 ? prev - 1 : filteredSuggestions.length - 1));\n return;\n }\n if (e.key === 'Enter' && focusedSuggestionIndex >= 0) {\n e.preventDefault();\n selectSuggestion(filteredSuggestions[focusedSuggestionIndex]);\n return;\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n closeSuggestions();\n return;\n }\n }\n\n if (separators.includes(e.key)) {\n e.preventDefault();\n addTag(inputValue);\n return;\n }\n\n if (e.key === 'Backspace' && inputValue === '' && tags.length > 0) {\n e.preventDefault();\n removeTag(tags.length - 1);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const query = e.target.value;\n setInputValue(query);\n if (validationError) {\n setValidationError(null);\n }\n onSearch?.(query);\n if (hasSuggestions && !isSuggestionsOpenRef.current) openSuggestions();\n };\n\n const handleInputFocus = () => {\n setIsFocused(true);\n if (hasSuggestions) openSuggestions();\n };\n\n const handleFieldClick = (e: React.MouseEvent<HTMLDivElement>) => {\n // Don't steal focus from interactive child elements\n if ((e.target as HTMLElement).closest('button, input')) return;\n if (!disabled) {\n inputRef.current?.focus();\n }\n };\n\n const displayError = validationError ?? error;\n const hasError = !!displayError;\n const errorId = `${inputId}-error`;\n const hintId = `${inputId}-hint`;\n\n const containerClasses = [\n 'eidos-tag-input',\n hasError && 'eidos-tag-input--error',\n disabled && 'eidos-tag-input--disabled',\n fullWidth && 'eidos-tag-input--full-width',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const fieldClasses = [\n 'eidos-tag-input-field',\n `eidos-tag-input-field--${size}`,\n isFocused && 'eidos-tag-input-field--focused',\n hasError && 'eidos-tag-input-field--error',\n disabled && 'eidos-tag-input-field--disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n const uid = generatedId;\n\n return (\n // No ARIA on this wrapper - it has no role, so `aria-expanded` and\n // `aria-haspopup` were invalid here. Same fix as `Combobox`: they belong\n // on the input, which is the combobox.\n <div className={containerClasses} ref={containerRef}>\n {label && (\n <label htmlFor={inputId} className=\"eidos-tag-input-label\">\n {label}\n </label>\n )}\n\n <div className={fieldClasses} onClick={handleFieldClick} ref={fieldRef}>\n {tags.map((tag, index) => (\n <Chip\n key={`${tag}-${index}`}\n variant=\"filled\"\n color=\"primary\"\n size={size}\n onRemove={disabled ? undefined : () => removeTag(index)}\n >\n {tag}\n </Chip>\n ))}\n\n <input\n ref={inputRef}\n id={inputId}\n className=\"eidos-tag-input-input\"\n type=\"text\"\n value={inputValue}\n placeholder={tags.length === 0 ? placeholder : undefined}\n disabled={disabled}\n onKeyDown={handleKeyDown}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n onBlur={() => setIsFocused(false)}\n aria-label={label ? undefined : 'Tag input'}\n aria-invalid={hasError ? true : undefined}\n // The ternary is deliberate, not a bug: the hint is unmounted when\n // an error shows (see the render below), so describing the field\n // with it would point at an element that is not there.\n aria-describedby={hasError ? errorId : hint ? hintId : undefined}\n role={hasSuggestions ? 'combobox' : undefined}\n aria-expanded={hasSuggestions ? isSuggestionsOpen : undefined}\n aria-autocomplete={hasSuggestions ? 'list' : undefined}\n // Only while the list is actually rendered - `aria-controls` must\n // name an element that exists.\n aria-controls={hasSuggestions && isSuggestionsOpen ? `${uid}-tag-suggestions` : undefined}\n aria-activedescendant={\n hasSuggestions && focusedSuggestionIndex >= 0\n ? `${uid}-tag-suggestion-${focusedSuggestionIndex}`\n : undefined\n }\n />\n\n {hasSuggestions && (\n <Dropdown\n key={suggestionsMenuKey}\n trigger={\n <span\n ref={dropdownSpanRef}\n className=\"eidos-tag-input-dropdown-anchor\"\n aria-hidden=\"true\"\n />\n }\n content={\n <div\n id={`${uid}-tag-suggestions`}\n className=\"eidos-tag-input-suggestions\"\n role=\"listbox\"\n aria-label={label ?? 'Suggestions'}\n onMouseDown={(e) => e.preventDefault()}\n >\n {filteredSuggestions.length === 0 ? (\n <div className=\"eidos-tag-input-suggestions-empty\">{suggestionsEmptyText}</div>\n ) : (\n filteredSuggestions.map((suggestion, index) => (\n <div\n key={suggestion}\n id={`${uid}-tag-suggestion-${index}`}\n className={[\n 'eidos-tag-input-suggestion',\n index === focusedSuggestionIndex && 'eidos-tag-input-suggestion--focused',\n ]\n .filter(Boolean)\n .join(' ')}\n role=\"option\"\n aria-selected={index === focusedSuggestionIndex}\n onClick={() => selectSuggestion(suggestion)}\n onMouseEnter={() => setFocusedSuggestionIndex(index)}\n >\n {suggestion}\n </div>\n ))\n )}\n </div>\n }\n triggerRef={fieldRef as React.RefObject<HTMLElement | null>}\n autoWidth\n closeOnClickOutside={false}\n closeOnEscape={false}\n />\n )}\n </div>\n\n {hint && !hasError && (\n <p className=\"eidos-tag-input-hint\" id={hintId}>\n {hint}\n </p>\n )}\n\n {hasError && (\n <p className=\"eidos-tag-input-error-message\" id={errorId} role=\"alert\">\n <CircleAlert />\n {displayError}\n </p>\n )}\n </div>\n );\n};\n\nTagInput.displayName = 'TagInput';\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-N77VOYCK.cjs","../src/components/SplitButton/SplitButton.component.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACVA,8BAAmC;AACnC,2CAA0C;AAmEpC,+CAAA;AAzCC,IAAM,YAAA,EAA0C,CAAC;AAAA,EACtD,KAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA,EAAU,QAAA;AAAA,EACV,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO,IAAA;AAAA,EACP,SAAA,EAAW,KAAA;AAAA,EACX,QAAA,EAAU,KAAA;AAAA,EACV,OAAA;AAAA,EACA,UAAA,EAAY;AACd,CAAA,EAAA,GAAM;AAEJ,EAAA,MAAM,UAAA,EAAwB,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,EAAA,GAAA,CAAS;AAAA,IAClD,IAAA,EAAM,MAAA;AAAA,IACN,EAAA,EAAI,GAAA,CAAI,EAAA;AAAA,IACR,KAAA,EAAO,GAAA,CAAI,KAAA;AAAA,IACX,IAAA,EAAM,GAAA,CAAI,IAAA;AAAA,IACV,QAAA,EAAU,GAAA,CAAI,QAAA;AAAA,IACd,OAAA,EAAS,GAAA,CAAI;AAAA,EACf,CAAA,CAAE,CAAA;AAEF,EAAA,MAAM,gBAAA,EAAkB,gCAAA,CAAY,EAAA,GAAM;AAExC,IAAA,UAAA,CAAW,CAAA,EAAA,GAAM;AACf,MAAA,QAAA,CAAS,aAAA;AAAA,QACP,IAAI,UAAA,CAAW,WAAA,EAAa,EAAE,OAAA,EAAS,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,IAAA,EAAM,OAAO,CAAC;AAAA,MAC/E,CAAA;AAAA,IACF,CAAA,EAAG,EAAE,CAAA;AAAA,EACP,CAAA,EAAG,CAAC,CAAC,CAAA;AAEL,EAAA,MAAM,UAAA,EAAY,CAAA,2BAAA,EAA8B,OAAO,CAAA,eAAA,EAAkB,KAAK,CAAA,eAAA,EAAkB,IAAI,CAAA,CAAA;AAC9D,EAAA;AAGpC,EAAA;AAAC,IAAA;AAAA,IAAA;AACM,MAAA;AACkB,MAAA;AACb,MAAA;AACC,MAAA;AAE+C,MAAA;AAAmB,IAAA;AAC/E,EAAA;AAIA,EAAA;AAAC,IAAA;AAAA,IAAA;AACY,MAAA;AACT,QAAA;AAC8B,QAAA;AACF,QAAA;AACD,QAAA;AACN,QAAA;AACrB,QAAA;AAGS,MAAA;AAGX,MAAA;AAAA,wBAAA;AAAC,UAAA;AAAA,UAAA;AACM,YAAA;AACkB,YAAA;AACb,YAAA;AACV,YAAA;AAEC,YAAA;AACuD,cAAA;AAIL,8BAAA;AAAA,YAAA;AAAA,UAAA;AACrD,QAAA;AAGA,wBAAA;AAAC,UAAA;AAAA,UAAA;AACU,YAAA;AAC2D,YAAA;AAC1D,YAAA;AACJ,YAAA;AACI,YAAA;AAAA,UAAA;AACZ,QAAA;AAAA,MAAA;AAAA,IAAA;AACF,EAAA;AAEJ;ADlBuG;AACA;AACA;AACA","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-N77VOYCK.cjs","sourcesContent":[null,"import React, { useCallback } from 'react';\nimport { ChevronDown, LoaderCircle } from 'lucide-react';\nimport { Dropdown } from '../Dropdown/Dropdown.component';\nimport { MenuPanel } from '../Menu';\nimport type { MenuItem } from '../Menu';\nimport { renderIcon } from '../../utils';\nimport type { SplitButtonProps } from './SplitButton.types';\n\n/**\n * SplitButton - a two-part control with a primary action button on the left\n * and a chevron that opens a dropdown of secondary actions on the right.\n *\n * The primary button fires `onClick` directly; clicking the chevron opens the\n * dropdown. Visually the two parts share a single bordered unit.\n *\n * @example\n * ```tsx\n * <SplitButton\n * label=\"Save\"\n * onClick={() => save()}\n * options={[\n * { id: 'draft', label: 'Save as draft', onClick: saveDraft },\n * { id: 'template', label: 'Save as template', onClick: saveTemplate },\n * ]}\n * />\n * ```\n */\nexport const SplitButton: React.FC<SplitButtonProps> = ({\n label,\n onClick,\n options,\n variant = 'filled',\n color = 'primary',\n size = 'md',\n disabled = false,\n loading = false,\n preIcon,\n className = '',\n}) => {\n // Convert SplitButtonOption → MenuItemType so MenuPanel can render them.\n const menuItems: MenuItem[] = options.map((opt) => ({\n type: 'item' as const,\n id: opt.id,\n label: opt.label,\n icon: opt.icon,\n disabled: opt.disabled,\n onClick: opt.onClick,\n }));\n\n const handleItemClick = useCallback(() => {\n // Close the dropdown by dispatching a mousedown outside it.\n setTimeout(() => {\n document.dispatchEvent(\n new MouseEvent('mousedown', { bubbles: true, cancelable: true, view: window }),\n );\n }, 10);\n }, []);\n\n const baseClass = `eidos-button eidos-button--${variant} eidos-button--${color} eidos-button--${size}`;\n const disabledOrLoading = disabled || loading;\n\n const chevronTrigger = (\n <button\n type=\"button\"\n className={`${baseClass} eidos-split-button__chevron`}\n disabled={disabledOrLoading}\n aria-label=\"More options\"\n >\n <ChevronDown className=\"eidos-split-button__chevron-icon\" aria-hidden=\"true\" />\n </button>\n );\n\n return (\n <div\n className={[\n 'eidos-split-button',\n `eidos-split-button--${variant}`,\n `eidos-split-button--${color}`,\n `eidos-split-button--${size}`,\n disabledOrLoading && 'eidos-split-button--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {/* Primary action */}\n <button\n type=\"button\"\n className={`${baseClass} eidos-split-button__primary`}\n disabled={disabledOrLoading}\n onClick={onClick}\n >\n {loading ? (\n <LoaderCircle className=\"eidos-split-button__spinner\" aria-hidden=\"true\" />\n ) : (\n preIcon && renderIcon(preIcon, 'eidos-split-button__pre-icon')\n )}\n <span className=\"eidos-split-button__label\">{label}</span>\n </button>\n\n {/* Secondary actions dropdown */}\n <Dropdown\n trigger={chevronTrigger}\n content={<MenuPanel items={menuItems} onItemClick={handleItemClick} />}\n placement=\"bottom\"\n align=\"end\"\n disabled={disabledOrLoading}\n />\n </div>\n );\n};\n"]}
|