eidos-ui 3.8.1 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/alert/index.cjs +5 -5
- package/dist/alert/index.js +4 -4
- package/dist/button/index.cjs +4 -4
- package/dist/button/index.js +3 -3
- package/dist/chip/index.cjs +4 -4
- package/dist/chip/index.js +3 -3
- package/dist/{chunk-V5CM5TH3.js → chunk-2OBOD3GO.js} +3 -3
- package/dist/{chunk-CFVUUMQA.cjs → chunk-2URFSWJT.cjs} +6 -8
- package/dist/chunk-2URFSWJT.cjs.map +1 -0
- package/dist/{chunk-4S57PE43.js → chunk-2WDL2ZVP.js} +6 -7
- package/dist/chunk-2WDL2ZVP.js.map +1 -0
- package/dist/{chunk-V64DICJK.js → chunk-363IKX3C.js} +3 -3
- package/dist/{chunk-LWCFT5SP.cjs → chunk-3QBMSZSE.cjs} +3 -3
- package/dist/{chunk-LWCFT5SP.cjs.map → chunk-3QBMSZSE.cjs.map} +1 -1
- package/dist/{chunk-IC2PIK3E.js → chunk-43DJ3GGR.js} +4 -4
- package/dist/{chunk-L6ERHCQ2.js → chunk-57BVERWD.js} +3 -3
- package/dist/{chunk-AUNDBUHM.cjs → chunk-5HRVHEHE.cjs} +3 -3
- package/dist/{chunk-AUNDBUHM.cjs.map → chunk-5HRVHEHE.cjs.map} +1 -1
- package/dist/{chunk-6IB27I5K.cjs → chunk-6JYXGRJ3.cjs} +8 -8
- package/dist/{chunk-6IB27I5K.cjs.map → chunk-6JYXGRJ3.cjs.map} +1 -1
- package/dist/{chunk-NERASTO2.cjs → chunk-6ZFXIYH7.cjs} +3 -3
- package/dist/{chunk-NERASTO2.cjs.map → chunk-6ZFXIYH7.cjs.map} +1 -1
- package/dist/{chunk-IKXXXVUO.js → chunk-7TQUJ6BJ.js} +3 -3
- package/dist/{chunk-544RAXWO.cjs → chunk-7VMF6LIC.cjs} +19 -19
- package/dist/{chunk-544RAXWO.cjs.map → chunk-7VMF6LIC.cjs.map} +1 -1
- package/dist/{chunk-WTFEMOV5.cjs → chunk-ADB7QRX5.cjs} +16 -16
- package/dist/{chunk-WTFEMOV5.cjs.map → chunk-ADB7QRX5.cjs.map} +1 -1
- package/dist/{chunk-6CW5QSYV.cjs → chunk-AFGC62AL.cjs} +7 -7
- package/dist/{chunk-6CW5QSYV.cjs.map → chunk-AFGC62AL.cjs.map} +1 -1
- package/dist/{chunk-U4SVBE2M.js → chunk-AWPJH3UB.js} +4 -4
- package/dist/{chunk-B2OHBIAL.cjs → chunk-BKUZF7CW.cjs} +10 -11
- package/dist/chunk-BKUZF7CW.cjs.map +1 -0
- package/dist/{chunk-WR77IZUU.cjs → chunk-BPVOQLCA.cjs} +7 -7
- package/dist/{chunk-WR77IZUU.cjs.map → chunk-BPVOQLCA.cjs.map} +1 -1
- package/dist/{chunk-MCPGI6EI.js → chunk-BUSMGQJ4.js} +2 -2
- package/dist/{chunk-H3C6YECZ.js → chunk-D2PXPX56.js} +6 -6
- package/dist/{chunk-L6YJ6QTZ.js → chunk-DCUIT7SI.js} +2 -2
- package/dist/{chunk-HYRLK462.js → chunk-EDPCI2JC.js} +2 -2
- package/dist/{chunk-DPTTDHZ5.js → chunk-FAGQGGT3.js} +3 -3
- package/dist/{chunk-CNTG7OOO.js → chunk-FAXDWZQH.js} +12 -12
- package/dist/{chunk-7NUVLVSL.cjs → chunk-FJSK2RT7.cjs} +5 -5
- package/dist/{chunk-7NUVLVSL.cjs.map → chunk-FJSK2RT7.cjs.map} +1 -1
- package/dist/{chunk-P6OJQ2RN.js → chunk-FSX7DDLO.js} +8 -9
- package/dist/chunk-FSX7DDLO.js.map +1 -0
- package/dist/{chunk-XIUZT4TO.js → chunk-GE3QCXT7.js} +6 -7
- package/dist/chunk-GE3QCXT7.js.map +1 -0
- package/dist/{chunk-JY77VJAZ.js → chunk-GHUEVNNU.js} +3 -3
- package/dist/{chunk-4V2XYUQL.js → chunk-GLEPKX2R.js} +2 -2
- package/dist/{chunk-GZDT2AHJ.cjs → chunk-GRKC4PIX.cjs} +7 -7
- package/dist/{chunk-GZDT2AHJ.cjs.map → chunk-GRKC4PIX.cjs.map} +1 -1
- package/dist/{chunk-SLHIVEFW.cjs → chunk-HKLLKNRQ.cjs} +6 -9
- package/dist/chunk-HKLLKNRQ.cjs.map +1 -0
- package/dist/{chunk-2TIMJD4K.js → chunk-IBT535UH.js} +3 -3
- package/dist/{chunk-HR5MWA3B.cjs → chunk-IJW6YCJB.cjs} +5 -5
- package/dist/{chunk-HR5MWA3B.cjs.map → chunk-IJW6YCJB.cjs.map} +1 -1
- package/dist/{chunk-NNAEQR3Y.cjs → chunk-K6VEUJLY.cjs} +30 -30
- package/dist/{chunk-NNAEQR3Y.cjs.map → chunk-K6VEUJLY.cjs.map} +1 -1
- package/dist/{chunk-F5IRMMZ2.cjs → chunk-K73JO4FK.cjs} +7 -7
- package/dist/{chunk-F5IRMMZ2.cjs.map → chunk-K73JO4FK.cjs.map} +1 -1
- package/dist/{chunk-4HZIXRAJ.cjs → chunk-KF2OGUAD.cjs} +11 -12
- package/dist/chunk-KF2OGUAD.cjs.map +1 -0
- package/dist/{chunk-TJQNGJHP.js → chunk-KLHC5BHS.js} +4 -4
- package/dist/{chunk-XWMXEJVZ.js → chunk-KZKBZ2AV.js} +5 -7
- package/dist/chunk-KZKBZ2AV.js.map +1 -0
- package/dist/{chunk-DG3O5NV4.cjs → chunk-LLHR6QW3.cjs} +3 -3
- package/dist/{chunk-DG3O5NV4.cjs.map → chunk-LLHR6QW3.cjs.map} +1 -1
- package/dist/{chunk-GDRLVX2A.js → chunk-LXRNFQEI.js} +4 -4
- package/dist/{chunk-VXC7Z7XB.cjs → chunk-MKQVDEHI.cjs} +5 -6
- package/dist/chunk-MKQVDEHI.cjs.map +1 -0
- package/dist/{chunk-TNQ2ZZ7W.cjs → chunk-MUMTPMWD.cjs} +7 -7
- package/dist/{chunk-TNQ2ZZ7W.cjs.map → chunk-MUMTPMWD.cjs.map} +1 -1
- package/dist/{chunk-RHWZX7PB.js → chunk-NONYIHXD.js} +4 -4
- package/dist/{chunk-XPG56DLQ.cjs → chunk-NSA7ASZ7.cjs} +8 -8
- package/dist/{chunk-XPG56DLQ.cjs.map → chunk-NSA7ASZ7.cjs.map} +1 -1
- package/dist/{chunk-6NAOAKII.js → chunk-NWFGXLQP.js} +2 -2
- package/dist/{chunk-HLI4SOH3.cjs → chunk-NYGRVB2J.cjs} +45 -45
- package/dist/{chunk-HLI4SOH3.cjs.map → chunk-NYGRVB2J.cjs.map} +1 -1
- package/dist/{chunk-UUT2VEN5.cjs → chunk-OC2OBBGM.cjs} +7 -8
- package/dist/chunk-OC2OBBGM.cjs.map +1 -0
- package/dist/{chunk-3X6QVHTD.js → chunk-OERK3T7E.js} +3 -4
- package/dist/chunk-OERK3T7E.js.map +1 -0
- package/dist/{chunk-ZJWQPZ7E.js → chunk-OQWG7NLI.js} +3 -11
- package/dist/chunk-OQWG7NLI.js.map +1 -0
- package/dist/{chunk-U34INRFO.js → chunk-PP6HS4GR.js} +5 -16
- package/dist/chunk-PP6HS4GR.js.map +1 -0
- package/dist/{chunk-OGGZIFTI.cjs → chunk-PVNBH7XN.cjs} +36 -36
- package/dist/{chunk-OGGZIFTI.cjs.map → chunk-PVNBH7XN.cjs.map} +1 -1
- package/dist/{chunk-H46ZLPNJ.cjs → chunk-QDZVZY53.cjs} +7 -7
- package/dist/{chunk-H46ZLPNJ.cjs.map → chunk-QDZVZY53.cjs.map} +1 -1
- package/dist/{chunk-ENMDOQQO.cjs → chunk-R5WI5IGR.cjs} +6 -17
- package/dist/{chunk-ENMDOQQO.cjs.map → chunk-R5WI5IGR.cjs.map} +1 -1
- package/dist/{chunk-UTYY35QX.cjs → chunk-RZMQCVAS.cjs} +3 -3
- package/dist/{chunk-UTYY35QX.cjs.map → chunk-RZMQCVAS.cjs.map} +1 -1
- package/dist/{chunk-7FV2X62W.cjs → chunk-SJKD3WCV.cjs} +7 -7
- package/dist/{chunk-7FV2X62W.cjs.map → chunk-SJKD3WCV.cjs.map} +1 -1
- package/dist/{chunk-LUDK44NZ.cjs → chunk-SJPCBRKR.cjs} +3 -3
- package/dist/{chunk-LUDK44NZ.cjs.map → chunk-SJPCBRKR.cjs.map} +1 -1
- package/dist/{chunk-3TF2GZSG.js → chunk-SONL2RCW.js} +7 -7
- package/dist/{chunk-2IXCEKLI.js → chunk-SOS4K7VC.js} +2 -2
- package/dist/{chunk-WHQGJHMD.js → chunk-TOLNPD7S.js} +4 -4
- package/dist/{chunk-FE7S4RSK.js → chunk-U5KD4BWL.js} +7 -7
- package/dist/{chunk-FHOD3FUN.js → chunk-UTOTOWPS.js} +4 -4
- package/dist/{chunk-YIOHKQ6Y.cjs → chunk-VCG647BY.cjs} +5 -13
- package/dist/chunk-VCG647BY.cjs.map +1 -0
- package/dist/{chunk-N5NXKVFJ.cjs → chunk-VPN7AR7T.cjs} +10 -10
- package/dist/{chunk-N5NXKVFJ.cjs.map → chunk-VPN7AR7T.cjs.map} +1 -1
- package/dist/{chunk-6FXFKMJ5.js → chunk-XBIMNWE6.js} +3 -3
- package/dist/{chunk-Z3IJWYUD.js → chunk-XOUNVK45.js} +2 -2
- package/dist/{chunk-3VXUOAIJ.cjs → chunk-XR72A66Q.cjs} +3 -7
- package/dist/chunk-XR72A66Q.cjs.map +1 -0
- package/dist/{chunk-ULKWUKD2.cjs → chunk-YHSCUPP6.cjs} +22 -23
- package/dist/chunk-YHSCUPP6.cjs.map +1 -0
- package/dist/{chunk-S5CMZFX6.js → chunk-YPEJH57Z.js} +6 -7
- package/dist/chunk-YPEJH57Z.js.map +1 -0
- package/dist/{chunk-BO3KK3ZQ.js → chunk-YPPG7NLW.js} +2 -6
- package/dist/chunk-YPPG7NLW.js.map +1 -0
- package/dist/{chunk-PE2SLXUS.cjs → chunk-YWXS4IPH.cjs} +5 -5
- package/dist/{chunk-PE2SLXUS.cjs.map → chunk-YWXS4IPH.cjs.map} +1 -1
- package/dist/{chunk-UC4NYF6T.js → chunk-YYA5SWXD.js} +2 -2
- package/dist/{chunk-JFV56ISS.cjs → chunk-YZEALKC4.cjs} +6 -6
- package/dist/{chunk-JFV56ISS.cjs.map → chunk-YZEALKC4.cjs.map} +1 -1
- package/dist/{chunk-IHPSRTVW.js → chunk-Z3OEYDNI.js} +4 -7
- package/dist/chunk-Z3OEYDNI.js.map +1 -0
- package/dist/{chunk-MKC6V3SY.cjs → chunk-Z6FZ7GI5.cjs} +6 -6
- package/dist/{chunk-MKC6V3SY.cjs.map → chunk-Z6FZ7GI5.cjs.map} +1 -1
- package/dist/{chunk-NFD7MPX4.cjs → chunk-ZVA5KJAJ.cjs} +11 -11
- package/dist/{chunk-NFD7MPX4.cjs.map → chunk-ZVA5KJAJ.cjs.map} +1 -1
- package/dist/color-picker/index.cjs +4 -4
- package/dist/color-picker/index.js +3 -3
- package/dist/combobox/index.cjs +6 -6
- package/dist/combobox/index.js +5 -5
- package/dist/command-palette/index.cjs +3 -3
- package/dist/command-palette/index.js +2 -2
- package/dist/context-menu/index.cjs +6 -6
- package/dist/context-menu/index.js +5 -5
- package/dist/conversation/index.cjs +8 -8
- package/dist/conversation/index.js +7 -7
- package/dist/data-grid/index.cjs +15 -15
- package/dist/data-grid/index.js +14 -14
- package/dist/date-picker/index.cjs +8 -8
- package/dist/date-picker/index.js +7 -7
- package/dist/drawer/index.cjs +5 -5
- package/dist/drawer/index.js +4 -4
- package/dist/dropdown/index.cjs +3 -3
- package/dist/dropdown/index.js +2 -2
- package/dist/header/index.cjs +6 -6
- package/dist/header/index.js +5 -5
- package/dist/index.cjs +38 -38
- package/dist/index.js +37 -37
- package/dist/inline-edit/index.cjs +5 -5
- package/dist/inline-edit/index.js +4 -4
- package/dist/input/index.cjs +4 -4
- package/dist/input/index.js +3 -3
- package/dist/menu/index.cjs +5 -5
- package/dist/menu/index.js +4 -4
- package/dist/modal/index.cjs +5 -5
- package/dist/modal/index.js +4 -4
- package/dist/navigation/index.cjs +5 -5
- package/dist/navigation/index.js +4 -4
- package/dist/number-input/index.cjs +2 -4
- package/dist/number-input/index.cjs.map +1 -1
- package/dist/number-input/index.js +1 -3
- package/dist/page-layout/index.cjs +12 -12
- package/dist/page-layout/index.js +11 -11
- package/dist/pagination/index.cjs +8 -8
- package/dist/pagination/index.js +7 -7
- package/dist/popover/index.cjs +3 -3
- package/dist/popover/index.d.cts +1 -3
- package/dist/popover/index.d.ts +1 -3
- package/dist/popover/index.js +2 -2
- package/dist/segmented-control/index.cjs +4 -4
- package/dist/segmented-control/index.js +3 -3
- package/dist/select/index.cjs +6 -6
- package/dist/select/index.js +5 -5
- package/dist/snackbar/index.cjs +5 -5
- package/dist/snackbar/index.js +4 -4
- package/dist/split-button/index.cjs +6 -6
- package/dist/split-button/index.js +5 -5
- package/dist/split-chip/index.cjs +5 -5
- package/dist/split-chip/index.js +4 -4
- package/dist/table/index.cjs +13 -13
- package/dist/table/index.js +12 -12
- package/dist/tabs/index.cjs +3 -3
- package/dist/tabs/index.js +2 -2
- package/dist/tag-input/index.cjs +6 -6
- package/dist/tag-input/index.js +5 -5
- package/dist/textarea/index.cjs +4 -4
- package/dist/textarea/index.js +3 -3
- package/dist/theme-editor/index.cjs +11 -11
- package/dist/theme-editor/index.js +10 -10
- package/dist/theme-provider/index.cjs +3 -3
- package/dist/theme-provider/index.js +2 -2
- package/dist/toolbar/index.cjs +8 -8
- package/dist/toolbar/index.js +7 -7
- package/dist/tooltip/index.cjs +3 -3
- package/dist/tooltip/index.js +2 -2
- package/package.json +4 -2
- package/dist/chunk-3VXUOAIJ.cjs.map +0 -1
- package/dist/chunk-3X6QVHTD.js.map +0 -1
- package/dist/chunk-4HZIXRAJ.cjs.map +0 -1
- package/dist/chunk-4S57PE43.js.map +0 -1
- package/dist/chunk-B2OHBIAL.cjs.map +0 -1
- package/dist/chunk-BO3KK3ZQ.js.map +0 -1
- package/dist/chunk-CFVUUMQA.cjs.map +0 -1
- package/dist/chunk-IHPSRTVW.js.map +0 -1
- package/dist/chunk-P6OJQ2RN.js.map +0 -1
- package/dist/chunk-S5CMZFX6.js.map +0 -1
- package/dist/chunk-SLHIVEFW.cjs.map +0 -1
- package/dist/chunk-U34INRFO.js.map +0 -1
- package/dist/chunk-ULKWUKD2.cjs.map +0 -1
- package/dist/chunk-UUT2VEN5.cjs.map +0 -1
- package/dist/chunk-VXC7Z7XB.cjs.map +0 -1
- package/dist/chunk-XIUZT4TO.js.map +0 -1
- package/dist/chunk-XWMXEJVZ.js.map +0 -1
- package/dist/chunk-YIOHKQ6Y.cjs.map +0 -1
- package/dist/chunk-ZJWQPZ7E.js.map +0 -1
- /package/dist/{chunk-V5CM5TH3.js.map → chunk-2OBOD3GO.js.map} +0 -0
- /package/dist/{chunk-V64DICJK.js.map → chunk-363IKX3C.js.map} +0 -0
- /package/dist/{chunk-IC2PIK3E.js.map → chunk-43DJ3GGR.js.map} +0 -0
- /package/dist/{chunk-L6ERHCQ2.js.map → chunk-57BVERWD.js.map} +0 -0
- /package/dist/{chunk-IKXXXVUO.js.map → chunk-7TQUJ6BJ.js.map} +0 -0
- /package/dist/{chunk-U4SVBE2M.js.map → chunk-AWPJH3UB.js.map} +0 -0
- /package/dist/{chunk-MCPGI6EI.js.map → chunk-BUSMGQJ4.js.map} +0 -0
- /package/dist/{chunk-H3C6YECZ.js.map → chunk-D2PXPX56.js.map} +0 -0
- /package/dist/{chunk-L6YJ6QTZ.js.map → chunk-DCUIT7SI.js.map} +0 -0
- /package/dist/{chunk-HYRLK462.js.map → chunk-EDPCI2JC.js.map} +0 -0
- /package/dist/{chunk-DPTTDHZ5.js.map → chunk-FAGQGGT3.js.map} +0 -0
- /package/dist/{chunk-CNTG7OOO.js.map → chunk-FAXDWZQH.js.map} +0 -0
- /package/dist/{chunk-JY77VJAZ.js.map → chunk-GHUEVNNU.js.map} +0 -0
- /package/dist/{chunk-4V2XYUQL.js.map → chunk-GLEPKX2R.js.map} +0 -0
- /package/dist/{chunk-2TIMJD4K.js.map → chunk-IBT535UH.js.map} +0 -0
- /package/dist/{chunk-TJQNGJHP.js.map → chunk-KLHC5BHS.js.map} +0 -0
- /package/dist/{chunk-GDRLVX2A.js.map → chunk-LXRNFQEI.js.map} +0 -0
- /package/dist/{chunk-RHWZX7PB.js.map → chunk-NONYIHXD.js.map} +0 -0
- /package/dist/{chunk-6NAOAKII.js.map → chunk-NWFGXLQP.js.map} +0 -0
- /package/dist/{chunk-3TF2GZSG.js.map → chunk-SONL2RCW.js.map} +0 -0
- /package/dist/{chunk-2IXCEKLI.js.map → chunk-SOS4K7VC.js.map} +0 -0
- /package/dist/{chunk-WHQGJHMD.js.map → chunk-TOLNPD7S.js.map} +0 -0
- /package/dist/{chunk-FE7S4RSK.js.map → chunk-U5KD4BWL.js.map} +0 -0
- /package/dist/{chunk-FHOD3FUN.js.map → chunk-UTOTOWPS.js.map} +0 -0
- /package/dist/{chunk-6FXFKMJ5.js.map → chunk-XBIMNWE6.js.map} +0 -0
- /package/dist/{chunk-Z3IJWYUD.js.map → chunk-XOUNVK45.js.map} +0 -0
- /package/dist/{chunk-UC4NYF6T.js.map → chunk-YYA5SWXD.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../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"],"sourcesContent":["!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, useId, useEffect } 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 { useDialogFocus, devWarn } 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 label,\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 // The picker owns whether it is open and hands it to `Dropdown` as a\n // controlled value. It used to force a close by incrementing a `key`, which\n // remounted the whole subtree - the only lever available while the overlay\n // kept that state private.\n const [isOpen, setIsOpen] = useState(false);\n const panelId = `${useId()}-date-panel`;\n const panelRef = useRef<HTMLDivElement>(null);\n\n // Focus moves into the calendar when it opens, and back to the field when it\n // closes. Not optional: the panel is portaled to `document.body`, so `Tab`\n // from the field would otherwise walk the rest of the page before reaching\n // it. `trapTab: false` because this is not a modal dialog - the page stays\n // available.\n useDialogFocus(isOpen, panelRef, { trapTab: false });\n\n // A field with no accessible name is announced as just \"combobox\". Measured\n // from the DOM rather than from props, so naming it from outside - a wrapping\n // `<label>`, or a `<label for>` - counts. Mirrors `Select`.\n const fieldRef = useRef<HTMLInputElement>(null);\n useEffect(() => {\n const element = fieldRef.current;\n if (!element) return;\n const named =\n (element.labels?.length ?? 0) > 0 ||\n element.hasAttribute('aria-label') ||\n element.hasAttribute('aria-labelledby');\n if (!named) {\n devWarn(\n 'date-picker-missing-label',\n 'DatePicker: no accessible name. Pass `label` for a visible one, or `inputProps={{ \"aria-label\": \"...\" }}` where it must stay visually unlabelled - otherwise the field is announced as just \"combobox\". A placeholder is not a label, and disappears as soon as a date is chosen.',\n );\n }\n }, []);\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 setIsOpen(false);\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 setIsOpen(false); // the range is complete\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 setIsOpen(false);\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 ? ` eidos-date-picker-trigger--full-width` : ''}`}\n // Handled here rather than on the `Input` so the keys work wherever inside\n // the field they are pressed. A click opens the calendar because it\n // bubbles to the overlay's trigger wrapper; a keypress has nothing\n // equivalent, so without this the field can be focused and cannot be\n // opened at all.\n onKeyDown={(event) => {\n if (disabled) return;\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown') {\n event.preventDefault();\n setIsOpen(true);\n } else if (event.key === 'Escape' && isOpen) {\n event.preventDefault();\n setIsOpen(false);\n }\n }}\n >\n <Input\n ref={fieldRef}\n value={displayValue}\n label={label}\n placeholder={placeholder}\n disabled={disabled}\n required={required}\n name={name}\n id={id}\n // A read-only field that opens a calendar is a combobox with a dialog\n // popup. `aria-controls` is gated on the panel existing - it is only\n // rendered while open, and naming an absent element is invalid.\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? panelId : undefined}\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 ref={panelRef} id={panelId} 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 ? ` eidos-date-picker-container--full-width` : ''} ${className}`.trim()}\n >\n <Dropdown\n open={isOpen}\n onOpenChange={setIsOpen}\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\n variant=\"text\"\n icon={ChevronLeft}\n onClick={handlePrevYear}\n aria-label=\"Previous year\"\n />\n\n <div className={'eidos-calendar-selectors'}>\n <Select\n options={yearOptions}\n value={currentDate.year().toString()}\n onChange={handleYearSelect}\n clearable={false}\n inputProps={{ 'aria-label': 'Year' }}\n dropdownProps={{\n dropdownGroup: 'calendar-navigation',\n }}\n />\n </div>\n\n <Button\n variant=\"text\"\n icon={ChevronRight}\n onClick={handleNextYear}\n aria-label=\"Next year\"\n />\n </>\n ) : (\n <>\n <Button\n variant=\"text\"\n icon={ChevronLeft}\n onClick={handlePrevMonth}\n aria-label=\"Previous month\"\n />\n\n <div className={'eidos-calendar-selectors'}>\n <Select\n options={monthOptions}\n value={currentDate.month().toString()}\n onChange={handleMonthSelect}\n clearable={false}\n inputProps={{ 'aria-label': 'Month' }}\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 inputProps={{ 'aria-label': 'Year' }}\n dropdownProps={{\n dropdownGroup: 'calendar-navigation',\n }}\n />\n </div>\n\n <Button\n variant=\"text\"\n icon={ChevronRight}\n onClick={handleNextMonth}\n aria-label=\"Next month\"\n />\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"],"mappings":"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","names":["t","e","n","r","i","s","u","a","M","m","f","l","$","y","v","g","D","o","d","c","h","t","i","e","s","f","n","u","r","o","t","n","i","r","o","e","u","f","s","a","i","n","f","e","import_dayjs","useState","useCallback","useMemo","useEffect","dayjs","weekOfYear","useCallback","jsx","jsxs","useCallback","jsx","jsxs","dayjs","utc","timezone","useState","useEffect","useCallback","useMemo"]}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Tooltip
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BUSMGQJ4.js";
|
|
4
4
|
import {
|
|
5
5
|
devWarn,
|
|
6
|
-
fullWidthModifier,
|
|
7
6
|
renderIcon
|
|
8
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-PP6HS4GR.js";
|
|
9
8
|
|
|
10
9
|
// src/components/Input/Input.component.tsx
|
|
11
10
|
import { forwardRef, useState, useId } from "react";
|
|
@@ -133,7 +132,7 @@ var Input = forwardRef(
|
|
|
133
132
|
`eidos-input--${variant}`,
|
|
134
133
|
`eidos-input--${color}`,
|
|
135
134
|
`eidos-input--${size}`,
|
|
136
|
-
fullWidth &&
|
|
135
|
+
fullWidth && "eidos-input--full-width",
|
|
137
136
|
loading && `eidos-input--loading`,
|
|
138
137
|
error && `eidos-input--error`
|
|
139
138
|
].filter(Boolean).join(" ");
|
|
@@ -142,7 +141,7 @@ var Input = forwardRef(
|
|
|
142
141
|
`eidos-input-wrapper--${variant}`,
|
|
143
142
|
`eidos-input-wrapper--${color}`,
|
|
144
143
|
`eidos-input-wrapper--${size}`,
|
|
145
|
-
fullWidth &&
|
|
144
|
+
fullWidth && "eidos-input-wrapper--full-width",
|
|
146
145
|
loading && `eidos-input-wrapper--loading`,
|
|
147
146
|
isFocused && `eidos-input-wrapper--focused`,
|
|
148
147
|
error && `eidos-input-wrapper--error`
|
|
@@ -156,7 +155,7 @@ var Input = forwardRef(
|
|
|
156
155
|
return /* @__PURE__ */ jsxs(
|
|
157
156
|
"div",
|
|
158
157
|
{
|
|
159
|
-
className: `eidos-input-container ${fullWidth ?
|
|
158
|
+
className: `eidos-input-container ${fullWidth ? "eidos-input-container--full-width" : ""} ${className}`,
|
|
160
159
|
style: width ? { width: typeof width === "number" ? `${width}px` : width, maxWidth: "100%" } : void 0,
|
|
161
160
|
children: [
|
|
162
161
|
label && /* @__PURE__ */ jsxs("label", { htmlFor: inputId, className: labelClasses, children: [
|
|
@@ -242,4 +241,4 @@ Input.displayName = "Input";
|
|
|
242
241
|
export {
|
|
243
242
|
Input
|
|
244
243
|
};
|
|
245
|
-
//# sourceMappingURL=chunk-
|
|
244
|
+
//# sourceMappingURL=chunk-GE3QCXT7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Input/Input.component.tsx"],"sourcesContent":["import React, { forwardRef, useState, useId } from 'react';\nimport { Eye, EyeOff, CircleAlert, X, ChevronDown } from 'lucide-react';\nimport { renderIcon, devWarn } from '../../utils';\nimport type { InputProps } from './Input.types';\nimport { Tooltip } from '../Tooltip/Tooltip.component';\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n variant = 'filled',\n color = 'primary',\n size = 'md',\n disabled = false,\n loading = false,\n className = '',\n width,\n label,\n error,\n disclaimerIcon,\n disclaimerContent,\n preIcon,\n posIcon,\n posIconButton = false,\n onPosIconClick,\n posIconLabel,\n type = 'text',\n id,\n name,\n required,\n isSelect = false,\n clearable = true,\n fullWidth = false,\n ...inputProps\n },\n ref,\n ) => {\n // Extract defaultValue so it never reaches the native <input> alongside `value`.\n // Passing both causes React's \"controlled/uncontrolled\" warning because we always\n // set value={currentValue} below - defaultValue is only needed to seed local state.\n const { defaultValue, ...restInputProps } = inputProps;\n\n const [showPassword, setShowPassword] = useState(false);\n const [localValue, setLocalValue] = useState(defaultValue || '');\n const [isFocused, setIsFocused] = useState(false);\n\n // Auto-generate id and name if not provided\n const generatedId = useId();\n const inputId = id || `input-${generatedId}`;\n const inputName = name || inputId;\n\n // Determine if using controlled or uncontrolled mode\n const isControlled = restInputProps.value !== undefined;\n const currentValue = isControlled ? restInputProps.value : localValue;\n\n // For select inputs, don't manage localValue - let the select component handle it\n // This prevents the Input's clear button from showing\n\n // Determine if label should float (only when there's content - static behavior)\n // For select inputs, keep label completely static (never float)\n const shouldFloatLabel = isSelect ? false : currentValue || defaultValue;\n\n // Check if field is required (from props or enhanced register function)\n const isRequired = required || Boolean('required' in restInputProps && restInputProps.required);\n\n // ── Error identification (SC 3.3.1) ───────────────────────────────\n //\n // The error was rendered as a red message next to the field and nothing\n // more: no `aria-invalid`, and no association between the two. Visually\n // obvious, entirely absent from the accessibility tree.\n //\n // `aria-describedby` is merged rather than assigned, because callers\n // pass their own - `TagInput` and `Combobox` both describe their fields\n // with hint text - and overwriting it would trade one missing\n // description for another.\n const errorId = `${inputId}-error`;\n const describedBy =\n [restInputProps['aria-describedby'], error ? errorId : null].filter(Boolean).join(' ') ||\n undefined;\n\n // An icon-only button with no name is announced as just \"button\", and\n // only the caller knows what the icon means. Warned rather than enforced\n // at the type level, which would be a breaking change - see the note on\n // `posIconLabel` in Input.types.ts.\n if (posIcon && posIconButton && onPosIconClick && !posIconLabel) {\n devWarn(\n 'input-pos-icon-label',\n 'Input: `posIconButton` renders an icon-only button, so it needs `posIconLabel` to have an accessible name. Falling back to \"Input action\".',\n );\n }\n\n // Handle number input to allow decimals and negative numbers\n const handleNumberInput = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (type === 'number') {\n const allowedKeys = [\n 'Backspace',\n 'Delete',\n 'Tab',\n 'Escape',\n 'Enter',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n ];\n const isNumber = /[0-9]/.test(e.key);\n const isDecimal = /[.,]/.test(e.key);\n const isMinus = e.key === '-';\n const isAllowedKey = allowedKeys.includes(e.key);\n const isControlKey = e.ctrlKey || e.metaKey;\n\n // Allow minus only at the beginning or when no text is selected\n if (isMinus) {\n const selectionStart = e.currentTarget.selectionStart || 0;\n const selectionEnd = e.currentTarget.selectionEnd || 0;\n const hasSelection = selectionStart !== selectionEnd;\n\n // Allow if at beginning or if replacing selected text\n if (selectionStart !== 0 && !hasSelection) {\n e.preventDefault();\n return;\n }\n }\n\n // Allow decimal only once\n if (isDecimal) {\n const currentValue = e.currentTarget.value;\n const hasDecimal = /[.,]/.test(currentValue);\n if (hasDecimal) {\n e.preventDefault();\n return;\n }\n }\n\n if (!isNumber && !isDecimal && !isMinus && !isAllowedKey && !isControlKey) {\n e.preventDefault();\n }\n }\n };\n\n // Handle input change for number inputs\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n // Only update localValue if uncontrolled and not a select input\n if (!isControlled && !isSelect) {\n setLocalValue(value);\n }\n restInputProps.onChange?.(e);\n };\n\n // Handle clear button\n const handleClear = () => {\n // Update localValue if uncontrolled\n if (!isControlled) {\n setLocalValue('');\n }\n\n // Create a proper synthetic event for React Hook Form\n const syntheticEvent = {\n target: {\n value: '',\n name: inputName,\n id: inputId,\n type: actualType,\n },\n } as React.ChangeEvent<HTMLInputElement>;\n\n // Call the form's onChange handler\n restInputProps.onChange?.(syntheticEvent);\n\n // Also try to update the input element directly\n if (ref && typeof ref === 'object' && ref.current) {\n ref.current.value = '';\n }\n };\n\n // Handle focus and blur\n const handleFocus = () => {\n setIsFocused(true);\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n // Determine actual input type (handle password visibility)\n const actualType = type === 'password' ? (showPassword ? 'text' : 'password') : type;\n\n // Generate CSS classes\n const inputClasses = [\n 'eidos-input',\n `eidos-input--${variant}`,\n `eidos-input--${color}`,\n `eidos-input--${size}`,\n fullWidth && 'eidos-input--full-width',\n loading && `eidos-input--loading`,\n error && `eidos-input--error`,\n ]\n .filter(Boolean)\n .join(' ');\n\n const wrapperClasses = [\n 'eidos-input-wrapper',\n `eidos-input-wrapper--${variant}`,\n `eidos-input-wrapper--${color}`,\n `eidos-input-wrapper--${size}`,\n fullWidth && 'eidos-input-wrapper--full-width',\n loading && `eidos-input-wrapper--loading`,\n isFocused && `eidos-input-wrapper--focused`,\n error && `eidos-input-wrapper--error`,\n ]\n .filter(Boolean)\n .join(' ');\n\n const labelClasses = [\n 'eidos-input-label',\n shouldFloatLabel && `eidos-input-label--floating`,\n disclaimerIcon && `eidos-input-label--with-icon`,\n error && `eidos-input-label--error`,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n className={`eidos-input-container ${fullWidth ? 'eidos-input-container--full-width' : ''} ${className}`}\n // `width` sizes the whole field, so it belongs on the container rather\n // than on the inner <input> (which is a `flex: 1 1 0` child of the\n // wrapper and only ever fills whatever the wrapper gives it). Applying\n // it here also keeps it a *preferred* width: `max-width: 100%` lets the\n // field shrink inside a narrower parent instead of overflowing it.\n style={\n width\n ? { width: typeof width === 'number' ? `${width}px` : width, maxWidth: '100%' }\n : undefined\n }\n >\n {label && (\n <label htmlFor={inputId} className={labelClasses}>\n <span className={`eidos-input-label-text`}>{label}</span>\n {isRequired && <span className={`eidos-input-required-asterisk`}>*</span>}\n {disclaimerIcon &&\n (disclaimerContent ? (\n <Tooltip message={disclaimerContent}>\n <span className={`eidos-input-disclaimer-icon`}>\n {renderIcon(disclaimerIcon, `eidos-input-disclaimer-icon-svg`)}\n </span>\n </Tooltip>\n ) : (\n <span className={`eidos-input-disclaimer-icon`}>\n {renderIcon(disclaimerIcon, `eidos-input-disclaimer-icon-svg`)}\n </span>\n ))}\n </label>\n )}\n\n <div className={wrapperClasses}>\n {preIcon && (\n <span className={`eidos-input-pre-icon`}>\n {renderIcon(preIcon, `eidos-input-pre-icon-svg`)}\n </span>\n )}\n\n <input\n ref={ref}\n id={inputId}\n name={inputName}\n type={actualType}\n className={inputClasses}\n disabled={disabled || loading}\n onKeyDown={handleNumberInput}\n {...restInputProps}\n aria-invalid={error ? true : restInputProps['aria-invalid']}\n aria-describedby={describedBy}\n value={currentValue}\n onFocus={(e) => {\n handleFocus();\n restInputProps.onFocus?.(e);\n }}\n onBlur={(e) => {\n handleBlur();\n restInputProps.onBlur?.(e);\n }}\n onChange={handleInputChange}\n />\n\n {type === 'password' && (\n <button\n type=\"button\"\n className={`eidos-input-password-toggle`}\n onClick={() => setShowPassword(!showPassword)}\n disabled={disabled || loading}\n // The name changes with state so a screen reader announces what\n // pressing it will do, not what it just did.\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n aria-pressed={showPassword}\n >\n {showPassword ? (\n <EyeOff className={`eidos-input-password-toggle-icon`} />\n ) : (\n <Eye className={`eidos-input-password-toggle-icon`} />\n )}\n </button>\n )}\n\n {/* Clear button - show when there's content and clearable is enabled (default: true) */}\n {currentValue &&\n String(currentValue).trim().length > 0 &&\n type !== 'password' &&\n !isSelect &&\n clearable !== false && (\n <button\n type=\"button\"\n className={`eidos-input-clear-button`}\n onClick={handleClear}\n disabled={disabled || loading}\n aria-label={label ? `Clear ${label}` : 'Clear'}\n >\n <X className={`eidos-input-clear-button-icon`} />\n </button>\n )}\n\n {posIcon && !posIconButton && (\n <span className={`eidos-input-pos-icon`}>\n {renderIcon(posIcon, `eidos-input-pos-icon-svg`)}\n </span>\n )}\n\n {posIcon && posIconButton && onPosIconClick && (\n <button\n type=\"button\"\n className={`eidos-input-pos-icon-button`}\n onClick={onPosIconClick}\n disabled={disabled || loading}\n aria-label={posIconLabel ?? 'Input action'}\n >\n {renderIcon(posIcon, `eidos-input-pos-icon-svg`)}\n </button>\n )}\n\n {/* Chevron for select inputs */}\n {isSelect && (\n <span className={`eidos-input-select-chevron`}>\n <ChevronDown className={`eidos-input-pos-icon-svg`} />\n </span>\n )}\n </div>\n\n {error && (\n <div id={errorId} className={`eidos-input-error-message`}>\n <CircleAlert className={`eidos-input-error-icon`} />\n <span>{error}</span>\n </div>\n )}\n </div>\n );\n },\n);\n\nInput.displayName = 'Input';\n"],"mappings":"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","names":["currentValue"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Tooltip
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BUSMGQJ4.js";
|
|
4
4
|
import {
|
|
5
5
|
devWarn,
|
|
6
6
|
renderIcon
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-PP6HS4GR.js";
|
|
8
8
|
import {
|
|
9
9
|
EidosLink
|
|
10
10
|
} from "./chunk-BDH2MXJW.js";
|
|
@@ -100,4 +100,4 @@ export {
|
|
|
100
100
|
Button,
|
|
101
101
|
IconButton
|
|
102
102
|
};
|
|
103
|
-
//# sourceMappingURL=chunk-
|
|
103
|
+
//# sourceMappingURL=chunk-GHUEVNNU.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
FOCUSABLE_SELECTOR,
|
|
6
6
|
useDialogFocus,
|
|
7
7
|
useIsClient
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-PP6HS4GR.js";
|
|
9
9
|
|
|
10
10
|
// src/components/CommandPalette/CommandPalette.component.tsx
|
|
11
11
|
import { useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
|
|
@@ -377,4 +377,4 @@ CommandPalette.displayName = "CommandPalette";
|
|
|
377
377
|
export {
|
|
378
378
|
CommandPalette
|
|
379
379
|
};
|
|
380
|
-
//# sourceMappingURL=chunk-
|
|
380
|
+
//# sourceMappingURL=chunk-GLEPKX2R.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkMUMTPMWDcjs = require('./chunk-MUMTPMWD.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkZVA5KJAJcjs = require('./chunk-ZVA5KJAJ.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkK73JO4FKcjs = require('./chunk-K73JO4FK.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
var _chunkPTBBY4ZXcjs = require('./chunk-PTBBY4ZX.cjs');
|
|
@@ -66,16 +66,16 @@ var PageLayout = ({
|
|
|
66
66
|
const setContentRef = useScrollRestoration(scrollRestorationKey, contentRef);
|
|
67
67
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: classes, ...rest, children: [
|
|
68
68
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
69
|
-
|
|
69
|
+
_chunkMUMTPMWDcjs.Toolbar,
|
|
70
70
|
{
|
|
71
71
|
...toolbar,
|
|
72
72
|
className: ["eidos-pagelayout__toolbar", _optionalChain([toolbar, 'optionalAccess', _6 => _6.className])].filter(Boolean).join(" ")
|
|
73
73
|
}
|
|
74
74
|
),
|
|
75
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-pagelayout__navigation", children: navigation && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
75
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-pagelayout__navigation", children: navigation && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkK73JO4FKcjs.Navigation, { ...navigation }) }),
|
|
76
76
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "main", { ref: setContentRef, tabIndex: 0, className: "eidos-pagelayout__content", children: [
|
|
77
77
|
header && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
78
|
-
|
|
78
|
+
_chunkZVA5KJAJcjs.Header,
|
|
79
79
|
{
|
|
80
80
|
...header,
|
|
81
81
|
className: ["eidos-pagelayout__header", header.className].filter(Boolean).join(" ")
|
|
@@ -96,4 +96,4 @@ var PageLayout = ({
|
|
|
96
96
|
|
|
97
97
|
|
|
98
98
|
exports.PageLayout = PageLayout;
|
|
99
|
-
//# sourceMappingURL=chunk-
|
|
99
|
+
//# sourceMappingURL=chunk-GRKC4PIX.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-GZDT2AHJ.cjs","../src/components/PageLayout/useScrollRestoration.ts","../src/components/PageLayout/PageLayout.component.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACbA,8BAAgE;AAgBzD,IAAM,qBAAA,EAAuB,CAClC,GAAA,EACA,SAAA,EAAA,GACyC;AACzC,EAAA,MAAM,KAAA,EAAO,2BAAA,IAA+B,CAAA;AAC5C,EAAA,MAAM,QAAA,EAAU,2BAAA,gBAAO,IAAI,GAAA,CAA6B,CAAC,CAAA;AACzD,EAAA,MAAM,WAAA,EAAa,2BAAA,GAAU,CAAA;AAM7B,EAAA,MAAM,UAAA,EAAY,2BAAA,SAAgB,CAAA;AAClC,EAAA,8BAAA,CAAU,EAAA,GAAM;AACd,IAAA,SAAA,CAAU,QAAA,EAAU,SAAA;AAAA,EACtB,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAqCd,EAAA,MAAM,OAAA,EAAS,gCAAA,CAAa,KAAA,EAAA,GAAiB;AAC3C,IAAA,MAAM,QAAA,EAAU,UAAA,CAAW,OAAA;AAC3B,IAAA,MAAM,QAAA,EAAU,KAAA,CAAM,aAAA;AACtB,IAAA,GAAA,CAAI,QAAA,IAAY,KAAA,CAAA,EAAW,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,OAAA,EAAS,OAAA,CAAQ,SAAS,CAAA;AAAA,EAC3E,CAAA,EAAG,CAAC,CAAC,CAAA;AAEL,EAAA,MAAM,QAAA,EAAU,gCAAA;AAAA,IACd,CAAC,OAAA,EAAA,GAAgC;AAC/B,sBAAA,IAAA,mBAAK,OAAA,6BAAS,mBAAA,mBAAoB,QAAA,EAAU,MAAM,GAAA;AAClD,MAAA,IAAA,CAAK,QAAA,EAAU,OAAA;AACf,sBAAA,OAAA,6BAAS,gBAAA,mBAAiB,QAAA,EAAU,MAAA,EAAQ,EAAE,OAAA,EAAS,KAAK,CAAC,GAAA;AAE7D,MAAA,MAAM,IAAA,EAAM,SAAA,CAAU,OAAA;AACtB,MAAA,GAAA,CAAI,OAAO,IAAA,IAAQ,UAAA,EAAY,GAAA,CAAI,OAAO,CAAA;AAAA,MAAA,KAAA,GAAA,CACjC,GAAA,EAAM,GAAA,CAA4C,QAAA,EAAU,OAAA;AAAA,IACvE,CAAA;AAAA,IACA,CAAC,MAAM;AAAA,EACT,CAAA;AAMA,EAAA,oCAAA,CAAgB,EAAA,GAAM;AACpB,IAAA,MAAM,QAAA,EAAU,IAAA,CAAK,OAAA;AACrB,IAAA,GAAA,CAAI,CAAC,QAAA,GAAW,IAAA,IAAQ,KAAA,EAAA,GAAa,UAAA,CAAW,QAAA,IAAY,GAAA,EAAK,MAAA;AAEjE,IAAA,UAAA,CAAW,QAAA,EAAU,GAAA;AACrB,IAAA,OAAA,CAAQ,UAAA,mBAAY,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA,UAAK,GAAA;AAAA,EAClD,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,OAAO,OAAA;AACT,CAAA;ADrDA;AACA;AEbM,+CAAA;AAzBN,IAAM,cAAA,EAA6B,EAAE,SAAA,EAAW,CAAA,KAAA,EAAA,iBAAK,IAAI,IAAA,CAAK,CAAA,CAAA,CAAE,WAAA,CAAY,CAAC,CAAA,SAAA,EAAY,CAAA;AAElF,IAAM,WAAA,EAAwC,CAAC;AAAA,EACpD,OAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA,EAAY,EAAA;AAAA;AAAA;AAAA,EAGZ,UAAA;AAAA,EACA,oBAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAA,GAAM;AACJ,EAAA,MAAM,QAAA,EAAU,CAAC,kBAAA,EAAoB,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AACxE,EAAA,MAAM,cAAA,EAAgB,oBAAA,CAAqB,oBAAA,EAAsB,UAAU,CAAA;AAE3E,EAAA,uBACE,8BAAA,KAAC,EAAA,EAAI,SAAA,EAAW,OAAA,EAAU,GAAG,IAAA,EAM3B,QAAA,EAAA;AAAA,oBAAA,6BAAA;AAAA,MAAC,yBAAA;AAAA,MAAA;AAAA,QACE,GAAG,OAAA;AAAA,QACJ,SAAA,EAAW,CAAC,2BAAA,kBAA6B,OAAA,6BAAS,WAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG;AAAA,MAAA;AAAA,IACvF,CAAA;AAAA,oBACA,6BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,8BAAA,EACZ,QAAA,EAAA,WAAA,mBAAc,6BAAA,4BAAC,EAAA,EAAY,GAAG,WAAA,CAAY,EAAA,CAC7C,CAAA;AAAA,oBAMA,8BAAA,MAAC,EAAA,EAAK,GAAA,EAAK,aAAA,EAAe,QAAA,EAAU,CAAA,EAAG,SAAA,EAAU,2BAAA,EAC9C,QAAA,EAAA;AAAA,MAAA,OAAA,mBACC,6BAAA;AAAA,QAAC,wBAAA;AAAA,QAAA;AAAA,UACE,GAAG,MAAA;AAAA,UACJ,SAAA,EAAW,CAAC,0BAAA,EAA4B,MAAA,CAAO,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG;AAAA,QAAA;AAAA,MACpF,CAAA;AAAA,sBAEF,6BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,wBAAA,EAA0B,SAAA,CAAS,CAAA;AAAA,sBAClD,6BAAA;AAAA,QAAC,wBAAA;AAAA,QAAA;AAAA,UACE,oBAAI,MAAA,UAAU,eAAA;AAAA,UACf,SAAA,EAAW,CAAC,0BAAA,kBAA4B,MAAA,6BAAQ,WAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG;AAAA,QAAA;AAAA,MACrF;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,EAAA,CACF,CAAA;AAEJ,CAAA;AFgCA;AACA;AACE;AACF,gCAAC","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-GZDT2AHJ.cjs","sourcesContent":[null,"import { useCallback, useEffect, useLayoutEffect, useRef } from 'react';\n\n/**\n * Remembers the content region's scroll offset per key, and applies the\n * stored offset whenever the key changes.\n *\n * The key is supplied by the consumer rather than derived here, because only\n * they know what counts as a navigation - this library has no router opinion.\n * That also decides the semantics, exactly as React Router's `getKey` does:\n * a per-path key gives \"this path always reopens where you left it\", while a\n * per-history-entry key gives the browser's own behaviour, where Back\n * restores but a fresh link to the same URL starts at the top.\n *\n * Returns a ref callback for the scroll container, which also forwards the\n * node to the caller's own `contentRef`.\n */\nexport const useScrollRestoration = (\n key: string | number | undefined,\n forwardTo: React.Ref<HTMLElement> | undefined,\n): ((node: HTMLElement | null) => void) => {\n const node = useRef<HTMLElement | null>(null);\n const offsets = useRef(new Map<string | number, number>());\n const appliedKey = useRef(key);\n\n // Held in a ref so the ref callback below can keep a stable identity. A\n // callback ref that changes identity is invoked with `null` and then the\n // node again on every render that changes it, which would detach and\n // reattach the caller's ref for no reason.\n const forwarded = useRef(forwardTo);\n useEffect(() => {\n forwarded.current = forwardTo;\n }, [forwardTo]);\n\n // Recorded as it happens rather than when the key changes: by the time a\n // navigation commits, the new page's content is already in the DOM and the\n // browser has clamped `scrollTop` to the new, possibly shorter, height. The\n // outgoing offset is no longer readable at that point.\n //\n // **The key is read from a ref, and the listener is registered once per\n // node.** Both halves matter. A listener re-subscribed per key closes over\n // the key it was created with, and restoring the incoming page's offset sets\n // `scrollTop`, which makes the browser dispatch a `scroll` event - so the\n // two race:\n //\n // 1. the layout effect below sets `scrollTop` for the incoming key\n // 2. passive effects swap the listener from the outgoing key to it\n // 3. the browser dispatches the scroll event from step 1\n //\n // React flushes passive effects through the scheduler and the browser\n // dispatches `scroll` at its own rendering opportunity, so nothing orders 2\n // before 3. When 3 won, the still-attached *outgoing* listener recorded the\n // incoming page's offset under the outgoing page's key - overwriting a real\n // offset with 0 and losing the position it exists to keep. It passed locally\n // and failed in CI, which is what a race of this shape looks like.\n //\n // Reading `appliedKey` instead means whichever order those steps take, the\n // offset is filed under the key that is actually on screen: the layout effect\n // updates the ref before it touches `scrollTop`.\n //\n // **Attached in the ref callback, not in an effect.** It used to be a\n // passive `useEffect`, which React runs some time *after* the commit - so a\n // scroll landing in between was never recorded, and returning to that page\n // restored 0. Storybook's production build starts a play function inside\n // that window (the dev server happens not to), which is how\n // `RestoresScrollPerKey` passed locally and failed on Chromatic, every time.\n // A ref callback runs during the commit itself, so the listener exists from\n // the moment the element does - and a swapped element is detached from and\n // re-attached to rather than silently left unobserved.\n const record = useCallback((event: Event) => {\n const current = appliedKey.current;\n const element = event.currentTarget as HTMLElement;\n if (current !== undefined) offsets.current.set(current, element.scrollTop);\n }, []);\n\n const setNode = useCallback(\n (element: HTMLElement | null) => {\n node.current?.removeEventListener('scroll', record);\n node.current = element;\n element?.addEventListener('scroll', record, { passive: true });\n\n const ref = forwarded.current;\n if (typeof ref === 'function') ref(element);\n else if (ref) (ref as React.RefObject<HTMLElement | null>).current = element;\n },\n [record],\n );\n\n // Layout effect so the offset is applied before paint - in a passive effect\n // the new page is visible at the previous page's offset for a frame first.\n // It does not run on the server, which is correct here: there is no scroll\n // position to restore in static markup, and the client applies it on mount.\n useLayoutEffect(() => {\n const element = node.current;\n if (!element || key === undefined || appliedKey.current === key) return;\n\n appliedKey.current = key;\n element.scrollTop = offsets.current.get(key) ?? 0;\n }, [key]);\n\n return setNode;\n};\n","import React from 'react';\nimport type { PageLayoutProps } from './PageLayout.types';\nimport './PageLayout.scss';\nimport { Toolbar } from '../Toolbar';\nimport { Header } from '../Header';\nimport { Footer } from '../Footer';\nimport type { FooterProps } from '../Footer';\nimport { Navigation } from '../Navigation';\nimport { useScrollRestoration } from './useScrollRestoration';\n\nconst defaultFooter: FooterProps = { copyright: `© ${new Date().getFullYear()} Eidos UI` };\n\nexport const PageLayout: React.FC<PageLayoutProps> = ({\n toolbar,\n navigation,\n header,\n footer,\n children,\n className = '',\n // Destructured so they cannot fall into `...rest` and land on the root\n // element, which is not the scroll container.\n contentRef,\n scrollRestorationKey,\n ...rest\n}) => {\n const classes = ['eidos-pagelayout', className].filter(Boolean).join(' ');\n const setContentRef = useScrollRestoration(scrollRestorationKey, contentRef);\n\n return (\n <div className={classes} {...rest}>\n {/* Spread rather than forwarded field by field, so a prop added to\n `Toolbar` reaches `PageLayout` consumers without a second edit\n here - the previous per-field list silently dropped anything it\n didn't know about. `className` is merged last so the layout's own\n grid-area class can't be overwritten by the caller's. */}\n <Toolbar\n {...toolbar}\n className={['eidos-pagelayout__toolbar', toolbar?.className].filter(Boolean).join(' ')}\n />\n <div className=\"eidos-pagelayout__navigation\">\n {navigation && <Navigation {...navigation} />}\n </div>\n {/* A scrollable region containing nothing focusable cannot be scrolled\n by keyboard at all, and a page body is often pure content - a\n report, an article. `tabIndex={0}` makes the region itself focusable\n so arrow keys and Page Up/Down reach it (SC 2.1.1), matching\n `VirtualList` and `Chat`. */}\n <main ref={setContentRef} tabIndex={0} className=\"eidos-pagelayout__content\">\n {header && (\n <Header\n {...header}\n className={['eidos-pagelayout__header', header.className].filter(Boolean).join(' ')}\n />\n )}\n <div className=\"eidos-pagelayout__body\">{children}</div>\n <Footer\n {...(footer ?? defaultFooter)}\n className={['eidos-pagelayout__footer', footer?.className].filter(Boolean).join(' ')}\n />\n </main>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-GRKC4PIX.cjs","../src/components/PageLayout/useScrollRestoration.ts","../src/components/PageLayout/PageLayout.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-GRKC4PIX.cjs","sourcesContent":[null,"import { useCallback, useEffect, useLayoutEffect, useRef } from 'react';\n\n/**\n * Remembers the content region's scroll offset per key, and applies the\n * stored offset whenever the key changes.\n *\n * The key is supplied by the consumer rather than derived here, because only\n * they know what counts as a navigation - this library has no router opinion.\n * That also decides the semantics, exactly as React Router's `getKey` does:\n * a per-path key gives \"this path always reopens where you left it\", while a\n * per-history-entry key gives the browser's own behaviour, where Back\n * restores but a fresh link to the same URL starts at the top.\n *\n * Returns a ref callback for the scroll container, which also forwards the\n * node to the caller's own `contentRef`.\n */\nexport const useScrollRestoration = (\n key: string | number | undefined,\n forwardTo: React.Ref<HTMLElement> | undefined,\n): ((node: HTMLElement | null) => void) => {\n const node = useRef<HTMLElement | null>(null);\n const offsets = useRef(new Map<string | number, number>());\n const appliedKey = useRef(key);\n\n // Held in a ref so the ref callback below can keep a stable identity. A\n // callback ref that changes identity is invoked with `null` and then the\n // node again on every render that changes it, which would detach and\n // reattach the caller's ref for no reason.\n const forwarded = useRef(forwardTo);\n useEffect(() => {\n forwarded.current = forwardTo;\n }, [forwardTo]);\n\n // Recorded as it happens rather than when the key changes: by the time a\n // navigation commits, the new page's content is already in the DOM and the\n // browser has clamped `scrollTop` to the new, possibly shorter, height. The\n // outgoing offset is no longer readable at that point.\n //\n // **The key is read from a ref, and the listener is registered once per\n // node.** Both halves matter. A listener re-subscribed per key closes over\n // the key it was created with, and restoring the incoming page's offset sets\n // `scrollTop`, which makes the browser dispatch a `scroll` event - so the\n // two race:\n //\n // 1. the layout effect below sets `scrollTop` for the incoming key\n // 2. passive effects swap the listener from the outgoing key to it\n // 3. the browser dispatches the scroll event from step 1\n //\n // React flushes passive effects through the scheduler and the browser\n // dispatches `scroll` at its own rendering opportunity, so nothing orders 2\n // before 3. When 3 won, the still-attached *outgoing* listener recorded the\n // incoming page's offset under the outgoing page's key - overwriting a real\n // offset with 0 and losing the position it exists to keep. It passed locally\n // and failed in CI, which is what a race of this shape looks like.\n //\n // Reading `appliedKey` instead means whichever order those steps take, the\n // offset is filed under the key that is actually on screen: the layout effect\n // updates the ref before it touches `scrollTop`.\n //\n // **Attached in the ref callback, not in an effect.** It used to be a\n // passive `useEffect`, which React runs some time *after* the commit - so a\n // scroll landing in between was never recorded, and returning to that page\n // restored 0. Storybook's production build starts a play function inside\n // that window (the dev server happens not to), which is how\n // `RestoresScrollPerKey` passed locally and failed on Chromatic, every time.\n // A ref callback runs during the commit itself, so the listener exists from\n // the moment the element does - and a swapped element is detached from and\n // re-attached to rather than silently left unobserved.\n const record = useCallback((event: Event) => {\n const current = appliedKey.current;\n const element = event.currentTarget as HTMLElement;\n if (current !== undefined) offsets.current.set(current, element.scrollTop);\n }, []);\n\n const setNode = useCallback(\n (element: HTMLElement | null) => {\n node.current?.removeEventListener('scroll', record);\n node.current = element;\n element?.addEventListener('scroll', record, { passive: true });\n\n const ref = forwarded.current;\n if (typeof ref === 'function') ref(element);\n else if (ref) (ref as React.RefObject<HTMLElement | null>).current = element;\n },\n [record],\n );\n\n // Layout effect so the offset is applied before paint - in a passive effect\n // the new page is visible at the previous page's offset for a frame first.\n // It does not run on the server, which is correct here: there is no scroll\n // position to restore in static markup, and the client applies it on mount.\n useLayoutEffect(() => {\n const element = node.current;\n if (!element || key === undefined || appliedKey.current === key) return;\n\n appliedKey.current = key;\n element.scrollTop = offsets.current.get(key) ?? 0;\n }, [key]);\n\n return setNode;\n};\n","import React from 'react';\nimport type { PageLayoutProps } from './PageLayout.types';\nimport './PageLayout.scss';\nimport { Toolbar } from '../Toolbar';\nimport { Header } from '../Header';\nimport { Footer } from '../Footer';\nimport type { FooterProps } from '../Footer';\nimport { Navigation } from '../Navigation';\nimport { useScrollRestoration } from './useScrollRestoration';\n\nconst defaultFooter: FooterProps = { copyright: `© ${new Date().getFullYear()} Eidos UI` };\n\nexport const PageLayout: React.FC<PageLayoutProps> = ({\n toolbar,\n navigation,\n header,\n footer,\n children,\n className = '',\n // Destructured so they cannot fall into `...rest` and land on the root\n // element, which is not the scroll container.\n contentRef,\n scrollRestorationKey,\n ...rest\n}) => {\n const classes = ['eidos-pagelayout', className].filter(Boolean).join(' ');\n const setContentRef = useScrollRestoration(scrollRestorationKey, contentRef);\n\n return (\n <div className={classes} {...rest}>\n {/* Spread rather than forwarded field by field, so a prop added to\n `Toolbar` reaches `PageLayout` consumers without a second edit\n here - the previous per-field list silently dropped anything it\n didn't know about. `className` is merged last so the layout's own\n grid-area class can't be overwritten by the caller's. */}\n <Toolbar\n {...toolbar}\n className={['eidos-pagelayout__toolbar', toolbar?.className].filter(Boolean).join(' ')}\n />\n <div className=\"eidos-pagelayout__navigation\">\n {navigation && <Navigation {...navigation} />}\n </div>\n {/* A scrollable region containing nothing focusable cannot be scrolled\n by keyboard at all, and a page body is often pure content - a\n report, an article. `tabIndex={0}` makes the region itself focusable\n so arrow keys and Page Up/Down reach it (SC 2.1.1), matching\n `VirtualList` and `Chat`. */}\n <main ref={setContentRef} tabIndex={0} className=\"eidos-pagelayout__content\">\n {header && (\n <Header\n {...header}\n className={['eidos-pagelayout__header', header.className].filter(Boolean).join(' ')}\n />\n )}\n <div className=\"eidos-pagelayout__body\">{children}</div>\n <Footer\n {...(footer ?? defaultFooter)}\n className={['eidos-pagelayout__footer', footer?.className].filter(Boolean).join(' ')}\n />\n </main>\n </div>\n );\n};\n"]}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkKF2OGUADcjs = require('./chunk-KF2OGUAD.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var _chunkENMDOQQOcjs = require('./chunk-ENMDOQQO.cjs');
|
|
6
|
+
var _chunkMKQVDEHIcjs = require('./chunk-MKQVDEHI.cjs');
|
|
10
7
|
|
|
11
8
|
// src/components/Combobox/Combobox.component.tsx
|
|
12
9
|
var _react = require('react');
|
|
@@ -364,7 +361,7 @@ var Combobox = ({
|
|
|
364
361
|
const posIconClick = hasClearableValue ? handleClearClick : handleChevronClick;
|
|
365
362
|
const containerClasses = [
|
|
366
363
|
"eidos-combobox",
|
|
367
|
-
fullWidth &&
|
|
364
|
+
fullWidth && "eidos-combobox--full-width",
|
|
368
365
|
error && "eidos-combobox--error",
|
|
369
366
|
disabled && "eidos-combobox--disabled",
|
|
370
367
|
className
|
|
@@ -379,7 +376,7 @@ var Combobox = ({
|
|
|
379
376
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref: containerRef, className: containerClasses, children: [
|
|
380
377
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref: comboboxTriggerRef, className: "eidos-combobox-trigger", children: [
|
|
381
378
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
382
|
-
|
|
379
|
+
_chunkKF2OGUADcjs.Input,
|
|
383
380
|
{
|
|
384
381
|
ref: inputRef,
|
|
385
382
|
value: inputValue,
|
|
@@ -408,7 +405,7 @@ var Combobox = ({
|
|
|
408
405
|
}
|
|
409
406
|
),
|
|
410
407
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
411
|
-
|
|
408
|
+
_chunkMKQVDEHIcjs.Dropdown,
|
|
412
409
|
{
|
|
413
410
|
open: isOpen,
|
|
414
411
|
onOpenChange: setIsOpen,
|
|
@@ -445,4 +442,4 @@ Combobox.displayName = "Combobox";
|
|
|
445
442
|
|
|
446
443
|
|
|
447
444
|
exports.Combobox = Combobox;
|
|
448
|
-
//# sourceMappingURL=chunk-
|
|
445
|
+
//# sourceMappingURL=chunk-HKLLKNRQ.cjs.map
|