@mieweb/ui 0.7.3 → 0.8.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -24
- package/agent/README.md +20 -0
- package/agent/init-agent.mjs +61 -0
- package/agent/mieweb-ui.instructions.md +169 -0
- package/dist/ag-grid.cjs +11 -0
- package/dist/ag-grid.cjs.map +1 -1
- package/dist/ag-grid.d.cts +4 -0
- package/dist/ag-grid.d.ts +4 -0
- package/dist/ag-grid.js +11 -0
- package/dist/ag-grid.js.map +1 -1
- package/dist/brands/index.cjs +12 -12
- package/dist/brands/index.js +3 -3
- package/dist/{chunk-EGWWTIWS.js → chunk-2AB4PQYL.js} +126 -96
- package/dist/chunk-2AB4PQYL.js.map +1 -0
- package/dist/{chunk-NQ2D2V6O.cjs → chunk-2PEVRI26.cjs} +37 -37
- package/dist/{chunk-NQ2D2V6O.cjs.map → chunk-2PEVRI26.cjs.map} +1 -1
- package/dist/{chunk-6J7UGYT5.cjs → chunk-2SSAAE3I.cjs} +49 -9
- package/dist/chunk-2SSAAE3I.cjs.map +1 -0
- package/dist/chunk-3IMM2PM4.js +259 -0
- package/dist/chunk-3IMM2PM4.js.map +1 -0
- package/dist/{chunk-SYIFEJSF.cjs → chunk-3RADKLLD.cjs} +13 -13
- package/dist/{chunk-SYIFEJSF.cjs.map → chunk-3RADKLLD.cjs.map} +1 -1
- package/dist/chunk-3SHLOF4V.cjs +128 -0
- package/dist/chunk-3SHLOF4V.cjs.map +1 -0
- package/dist/chunk-3TXOFAXP.cjs +139 -0
- package/dist/chunk-3TXOFAXP.cjs.map +1 -0
- package/dist/{chunk-LJDBD2DD.cjs → chunk-5BPUZK2B.cjs} +386 -4
- package/dist/chunk-5BPUZK2B.cjs.map +1 -0
- package/dist/chunk-5JZIDILK.cjs +164 -0
- package/dist/chunk-5JZIDILK.cjs.map +1 -0
- package/dist/chunk-5MXO6PEV.cjs +78 -0
- package/dist/chunk-5MXO6PEV.cjs.map +1 -0
- package/dist/chunk-5QZ73PZC.js +62 -0
- package/dist/chunk-5QZ73PZC.js.map +1 -0
- package/dist/chunk-6GKX36JX.js +269 -0
- package/dist/chunk-6GKX36JX.js.map +1 -0
- package/dist/chunk-6NZXWKUE.js +3 -0
- package/dist/chunk-6NZXWKUE.js.map +1 -0
- package/dist/chunk-6SCQ7FKT.js +115 -0
- package/dist/chunk-6SCQ7FKT.js.map +1 -0
- package/dist/{chunk-KFLDXJEE.js → chunk-753Z3NXL.js} +46 -15
- package/dist/chunk-753Z3NXL.js.map +1 -0
- package/dist/{chunk-S3MKIDYG.cjs → chunk-7AECNMYV.cjs} +46 -15
- package/dist/chunk-7AECNMYV.cjs.map +1 -0
- package/dist/chunk-7IKLGH3Z.cjs +92 -0
- package/dist/chunk-7IKLGH3Z.cjs.map +1 -0
- package/dist/chunk-7RV6CAP6.cjs +106 -0
- package/dist/chunk-7RV6CAP6.cjs.map +1 -0
- package/dist/chunk-AHHFFXJR.cjs +230 -0
- package/dist/chunk-AHHFFXJR.cjs.map +1 -0
- package/dist/{chunk-HIDV32ZX.js → chunk-AHUYW673.js} +168 -9
- package/dist/chunk-AHUYW673.js.map +1 -0
- package/dist/{chunk-MYFZYUPR.cjs → chunk-AOHJILLU.cjs} +38 -3
- package/dist/chunk-AOHJILLU.cjs.map +1 -0
- package/dist/{chunk-DLBV42JD.js → chunk-ATOWMVZH.js} +157 -40
- package/dist/chunk-ATOWMVZH.js.map +1 -0
- package/dist/{chunk-WUNWHOLA.cjs → chunk-BSDBI6H7.cjs} +116 -26
- package/dist/chunk-BSDBI6H7.cjs.map +1 -0
- package/dist/chunk-CG4ZKJLE.js +84 -0
- package/dist/chunk-CG4ZKJLE.js.map +1 -0
- package/dist/{chunk-4PIW3Y5M.js → chunk-DJ4JPFWI.js} +3 -3
- package/dist/{chunk-4PIW3Y5M.js.map → chunk-DJ4JPFWI.js.map} +1 -1
- package/dist/{chunk-Z4PECE5S.js → chunk-DX64KLSN.js} +2 -2
- package/dist/{chunk-Z4PECE5S.js.map → chunk-DX64KLSN.js.map} +1 -1
- package/dist/{chunk-FDV7EQWH.js → chunk-EK6DYGFG.js} +3 -3
- package/dist/{chunk-FDV7EQWH.js.map → chunk-EK6DYGFG.js.map} +1 -1
- package/dist/{chunk-QUUBTNMH.js → chunk-EPSB4WTL.js} +45 -15
- package/dist/chunk-EPSB4WTL.js.map +1 -0
- package/dist/{chunk-KRGKPUJH.js → chunk-F2S6NV5N.js} +8 -8
- package/dist/{chunk-KRGKPUJH.js.map → chunk-F2S6NV5N.js.map} +1 -1
- package/dist/chunk-F57VRLKP.js +708 -0
- package/dist/chunk-F57VRLKP.js.map +1 -0
- package/dist/{chunk-26DPQUSB.cjs → chunk-G52YRAJC.cjs} +4 -4
- package/dist/{chunk-26DPQUSB.cjs.map → chunk-G52YRAJC.cjs.map} +1 -1
- package/dist/{chunk-5IDYOJHO.cjs → chunk-G7EQ3JPX.cjs} +45 -15
- package/dist/chunk-G7EQ3JPX.cjs.map +1 -0
- package/dist/{chunk-FKLUSYFP.cjs → chunk-GQVL2JKQ.cjs} +4 -4
- package/dist/{chunk-FKLUSYFP.cjs.map → chunk-GQVL2JKQ.cjs.map} +1 -1
- package/dist/{chunk-3D4ITDLO.js → chunk-GXODR6V4.js} +3 -3
- package/dist/{chunk-3D4ITDLO.js.map → chunk-GXODR6V4.js.map} +1 -1
- package/dist/{chunk-AFGADE3B.js → chunk-H3YO5GBM.js} +117 -27
- package/dist/chunk-H3YO5GBM.js.map +1 -0
- package/dist/chunk-HK3AMH3Q.cjs +151 -0
- package/dist/chunk-HK3AMH3Q.cjs.map +1 -0
- package/dist/chunk-HQ3XPCHG.js +114 -0
- package/dist/chunk-HQ3XPCHG.js.map +1 -0
- package/dist/chunk-I44YNYI6.cjs +4 -0
- package/dist/chunk-I44YNYI6.cjs.map +1 -0
- package/dist/chunk-JHZW3Y62.js +142 -0
- package/dist/chunk-JHZW3Y62.js.map +1 -0
- package/dist/{chunk-FTRGZOVJ.js → chunk-JQQABHDN.js} +3 -3
- package/dist/{chunk-FTRGZOVJ.js.map → chunk-JQQABHDN.js.map} +1 -1
- package/dist/chunk-JR4QIU54.cjs +291 -0
- package/dist/chunk-JR4QIU54.cjs.map +1 -0
- package/dist/{chunk-JDHIBJ5K.cjs → chunk-JWTCEWQ4.cjs} +2 -2
- package/dist/{chunk-JDHIBJ5K.cjs.map → chunk-JWTCEWQ4.cjs.map} +1 -1
- package/dist/{chunk-ZBI52NP2.cjs → chunk-K5GQPTTA.cjs} +158 -41
- package/dist/chunk-K5GQPTTA.cjs.map +1 -0
- package/dist/chunk-KFEN2SRZ.js +208 -0
- package/dist/chunk-KFEN2SRZ.js.map +1 -0
- package/dist/chunk-L6MDULYB.js +87 -0
- package/dist/chunk-L6MDULYB.js.map +1 -0
- package/dist/{chunk-RYQ3S3KO.cjs → chunk-LDCFNWJC.cjs} +5 -5
- package/dist/{chunk-RYQ3S3KO.cjs.map → chunk-LDCFNWJC.cjs.map} +1 -1
- package/dist/{chunk-LC7YHZXM.js → chunk-LDQ2T27A.js} +5 -5
- package/dist/{chunk-LC7YHZXM.js.map → chunk-LDQ2T27A.js.map} +1 -1
- package/dist/chunk-N5O47VGS.cjs +109 -0
- package/dist/chunk-N5O47VGS.cjs.map +1 -0
- package/dist/chunk-NGSDBWKA.cjs +84 -0
- package/dist/chunk-NGSDBWKA.cjs.map +1 -0
- package/dist/chunk-NMBYU7D7.cjs +31 -0
- package/dist/chunk-NMBYU7D7.cjs.map +1 -0
- package/dist/{chunk-SPWVKDGC.cjs → chunk-QMKYJ4AT.cjs} +4 -4
- package/dist/{chunk-SPWVKDGC.cjs.map → chunk-QMKYJ4AT.cjs.map} +1 -1
- package/dist/{chunk-RBS3GHDZ.cjs → chunk-QOJ4V7YX.cjs} +170 -10
- package/dist/chunk-QOJ4V7YX.cjs.map +1 -0
- package/dist/chunk-RUGHNFQG.js +28 -0
- package/dist/chunk-RUGHNFQG.js.map +1 -0
- package/dist/{chunk-P6L74SKG.js → chunk-SVZ4MQVQ.js} +48 -8
- package/dist/chunk-SVZ4MQVQ.js.map +1 -0
- package/dist/{chunk-URHXR5SC.cjs → chunk-TQZPYDUL.cjs} +7 -7
- package/dist/{chunk-URHXR5SC.cjs.map → chunk-TQZPYDUL.cjs.map} +1 -1
- package/dist/{chunk-MO65V64I.js → chunk-TXRQQMG5.js} +2 -2
- package/dist/{chunk-MO65V64I.js.map → chunk-TXRQQMG5.js.map} +1 -1
- package/dist/{chunk-EKRT7K2K.js → chunk-UJS3JTVT.js} +3 -3
- package/dist/{chunk-EKRT7K2K.js.map → chunk-UJS3JTVT.js.map} +1 -1
- package/dist/{chunk-6MMIWE7H.js → chunk-VQ5HJCTP.js} +386 -4
- package/dist/chunk-VQ5HJCTP.js.map +1 -0
- package/dist/chunk-WBGUYSWY.js +90 -0
- package/dist/chunk-WBGUYSWY.js.map +1 -0
- package/dist/{chunk-LJBWCUKP.cjs → chunk-WIYQI35R.cjs} +2 -2
- package/dist/{chunk-LJBWCUKP.cjs.map → chunk-WIYQI35R.cjs.map} +1 -1
- package/dist/chunk-WKSUL2ZN.js +56 -0
- package/dist/chunk-WKSUL2ZN.js.map +1 -0
- package/dist/{chunk-BOOJDRJO.js → chunk-WSNMQQ4P.js} +38 -3
- package/dist/chunk-WSNMQQ4P.js.map +1 -0
- package/dist/chunk-X5ZPYYMS.js +105 -0
- package/dist/chunk-X5ZPYYMS.js.map +1 -0
- package/dist/{chunk-XB54G7WS.cjs → chunk-XJTFZLWH.cjs} +2 -86
- package/dist/chunk-XJTFZLWH.cjs.map +1 -0
- package/dist/{chunk-GTHNWP4P.js → chunk-XUVEF2RQ.js} +4 -87
- package/dist/chunk-XUVEF2RQ.js.map +1 -0
- package/dist/chunk-Y6YSJPVC.js +129 -0
- package/dist/chunk-Y6YSJPVC.js.map +1 -0
- package/dist/{chunk-OAHORW4N.cjs → chunk-YRLCR76L.cjs} +129 -99
- package/dist/chunk-YRLCR76L.cjs.map +1 -0
- package/dist/chunk-YVIH26FG.cjs +736 -0
- package/dist/chunk-YVIH26FG.cjs.map +1 -0
- package/dist/chunk-Z5S5JEJD.cjs +286 -0
- package/dist/chunk-Z5S5JEJD.cjs.map +1 -0
- package/dist/chunk-ZO4L6C2Y.cjs +137 -0
- package/dist/chunk-ZO4L6C2Y.cjs.map +1 -0
- package/dist/{collabKit-QZL4P5T5.js → collabKit-A643VH2I.js} +7 -3
- package/dist/collabKit-A643VH2I.js.map +1 -0
- package/dist/{collabKit-UF7E6V3N.cjs → collabKit-Q4A36LDA.cjs} +7 -3
- package/dist/collabKit-Q4A36LDA.cjs.map +1 -0
- package/dist/components/Accordion/index.cjs +13 -0
- package/dist/components/Accordion/index.cjs.map +1 -0
- package/dist/components/Accordion/index.d.cts +50 -0
- package/dist/components/Accordion/index.d.ts +50 -0
- package/dist/components/Accordion/index.js +4 -0
- package/dist/components/Accordion/index.js.map +1 -0
- package/dist/components/Alert/index.d.cts +1 -1
- package/dist/components/Alert/index.d.ts +1 -1
- package/dist/components/Autocomplete/index.cjs +5 -4
- package/dist/components/Autocomplete/index.d.cts +20 -3
- package/dist/components/Autocomplete/index.d.ts +20 -3
- package/dist/components/Autocomplete/index.js +4 -3
- package/dist/components/Badge/index.d.cts +1 -1
- package/dist/components/Badge/index.d.ts +1 -1
- package/dist/components/Card/index.d.cts +1 -1
- package/dist/components/Card/index.d.ts +1 -1
- package/dist/components/Checkbox/index.cjs +5 -4
- package/dist/components/Checkbox/index.d.cts +9 -1
- package/dist/components/Checkbox/index.d.ts +9 -1
- package/dist/components/Checkbox/index.js +2 -1
- package/dist/components/ClampedText/index.cjs +13 -0
- package/dist/components/ClampedText/index.cjs.map +1 -0
- package/dist/components/ClampedText/index.d.cts +33 -0
- package/dist/components/ClampedText/index.d.ts +33 -0
- package/dist/components/ClampedText/index.js +4 -0
- package/dist/components/ClampedText/index.js.map +1 -0
- package/dist/components/CopyButton/index.cjs +13 -0
- package/dist/components/CopyButton/index.cjs.map +1 -0
- package/dist/components/CopyButton/index.d.cts +29 -0
- package/dist/components/CopyButton/index.d.ts +29 -0
- package/dist/components/CopyButton/index.js +4 -0
- package/dist/components/CopyButton/index.js.map +1 -0
- package/dist/components/CountryCodeDropdown/index.cjs +5 -5
- package/dist/components/CountryCodeDropdown/index.js +2 -2
- package/dist/components/CustomizableDashboard/index.cjs +43 -0
- package/dist/components/CustomizableDashboard/index.cjs.map +1 -0
- package/dist/components/CustomizableDashboard/index.d.cts +195 -0
- package/dist/components/CustomizableDashboard/index.d.ts +195 -0
- package/dist/components/CustomizableDashboard/index.js +10 -0
- package/dist/components/CustomizableDashboard/index.js.map +1 -0
- package/dist/components/DateInput/index.cjs +5 -4
- package/dist/components/DateInput/index.d.cts +1 -0
- package/dist/components/DateInput/index.d.ts +1 -0
- package/dist/components/DateInput/index.js +4 -3
- package/dist/components/Dropdown/index.cjs +14 -9
- package/dist/components/Dropdown/index.d.cts +38 -2
- package/dist/components/Dropdown/index.d.ts +38 -2
- package/dist/components/Dropdown/index.js +4 -3
- package/dist/components/FilterSummaryBar/index.cjs +13 -0
- package/dist/components/FilterSummaryBar/index.cjs.map +1 -0
- package/dist/components/FilterSummaryBar/index.d.cts +53 -0
- package/dist/components/FilterSummaryBar/index.d.ts +53 -0
- package/dist/components/FilterSummaryBar/index.js +4 -0
- package/dist/components/FilterSummaryBar/index.js.map +1 -0
- package/dist/components/FreshnessBadge/index.cjs +25 -0
- package/dist/components/FreshnessBadge/index.cjs.map +1 -0
- package/dist/components/FreshnessBadge/index.d.cts +49 -0
- package/dist/components/FreshnessBadge/index.d.ts +49 -0
- package/dist/components/FreshnessBadge/index.js +4 -0
- package/dist/components/FreshnessBadge/index.js.map +1 -0
- package/dist/components/GlossaryTooltip/index.cjs +15 -0
- package/dist/components/GlossaryTooltip/index.cjs.map +1 -0
- package/dist/components/GlossaryTooltip/index.d.cts +64 -0
- package/dist/components/GlossaryTooltip/index.d.ts +64 -0
- package/dist/components/GlossaryTooltip/index.js +6 -0
- package/dist/components/GlossaryTooltip/index.js.map +1 -0
- package/dist/components/Input/index.cjs +20 -3
- package/dist/components/Input/index.d.cts +37 -2
- package/dist/components/Input/index.d.ts +37 -2
- package/dist/components/Input/index.js +2 -1
- package/dist/components/KeyboardShortcutsOverlay/index.cjs +21 -0
- package/dist/components/KeyboardShortcutsOverlay/index.cjs.map +1 -0
- package/dist/components/KeyboardShortcutsOverlay/index.d.cts +54 -0
- package/dist/components/KeyboardShortcutsOverlay/index.d.ts +54 -0
- package/dist/components/KeyboardShortcutsOverlay/index.js +8 -0
- package/dist/components/KeyboardShortcutsOverlay/index.js.map +1 -0
- package/dist/components/Markdown/index.cjs +10 -10
- package/dist/components/Markdown/index.js +2 -2
- package/dist/components/MediaEditor/index.cjs +11 -10
- package/dist/components/MediaEditor/index.js +6 -5
- package/dist/components/PhoneInput/index.cjs +5 -4
- package/dist/components/PhoneInput/index.js +3 -2
- package/dist/components/Progress/index.d.cts +1 -1
- package/dist/components/Progress/index.d.ts +1 -1
- package/dist/components/Radio/index.cjs +5 -4
- package/dist/components/Radio/index.d.cts +9 -1
- package/dist/components/Radio/index.d.ts +9 -1
- package/dist/components/Radio/index.js +2 -1
- package/dist/components/ReadingProgressBar/index.cjs +13 -0
- package/dist/components/ReadingProgressBar/index.cjs.map +1 -0
- package/dist/components/ReadingProgressBar/index.d.cts +20 -0
- package/dist/components/ReadingProgressBar/index.d.ts +20 -0
- package/dist/components/ReadingProgressBar/index.js +4 -0
- package/dist/components/ReadingProgressBar/index.js.map +1 -0
- package/dist/components/RichTextEditor/index.cjs +8 -7
- package/dist/components/RichTextEditor/index.js +5 -4
- package/dist/components/SectionSpyNav/index.cjs +15 -0
- package/dist/components/SectionSpyNav/index.cjs.map +1 -0
- package/dist/components/SectionSpyNav/index.d.cts +63 -0
- package/dist/components/SectionSpyNav/index.d.ts +63 -0
- package/dist/components/SectionSpyNav/index.js +6 -0
- package/dist/components/SectionSpyNav/index.js.map +1 -0
- package/dist/components/Select/index.cjs +6 -4
- package/dist/components/Select/index.d.cts +56 -9
- package/dist/components/Select/index.d.ts +56 -9
- package/dist/components/Select/index.js +4 -2
- package/dist/components/Slider/index.d.cts +2 -2
- package/dist/components/Slider/index.d.ts +2 -2
- package/dist/components/SourceTip/index.cjs +15 -0
- package/dist/components/SourceTip/index.cjs.map +1 -0
- package/dist/components/SourceTip/index.d.cts +58 -0
- package/dist/components/SourceTip/index.d.ts +58 -0
- package/dist/components/SourceTip/index.js +6 -0
- package/dist/components/SourceTip/index.js.map +1 -0
- package/dist/components/Sparkline/index.cjs +13 -0
- package/dist/components/Sparkline/index.cjs.map +1 -0
- package/dist/components/Sparkline/index.d.cts +53 -0
- package/dist/components/Sparkline/index.d.ts +53 -0
- package/dist/components/Sparkline/index.js +4 -0
- package/dist/components/Sparkline/index.js.map +1 -0
- package/dist/components/Spinner/index.d.cts +1 -1
- package/dist/components/Spinner/index.d.ts +1 -1
- package/dist/components/SuperChat/index.cjs +252 -93
- package/dist/components/SuperChat/index.cjs.map +1 -1
- package/dist/components/SuperChat/index.d.cts +13 -5
- package/dist/components/SuperChat/index.d.ts +13 -5
- package/dist/components/SuperChat/index.js +249 -90
- package/dist/components/SuperChat/index.js.map +1 -1
- package/dist/components/SuperChat/plugins/index.cjs +6 -26
- package/dist/components/SuperChat/plugins/index.cjs.map +1 -1
- package/dist/components/SuperChat/plugins/index.d.cts +2 -2
- package/dist/components/SuperChat/plugins/index.d.ts +2 -2
- package/dist/components/SuperChat/plugins/index.js +4 -24
- package/dist/components/SuperChat/plugins/index.js.map +1 -1
- package/dist/components/Text/index.d.cts +1 -1
- package/dist/components/Text/index.d.ts +1 -1
- package/dist/components/Textarea/index.cjs +5 -3
- package/dist/components/Textarea/index.d.cts +19 -1
- package/dist/components/Textarea/index.d.ts +19 -1
- package/dist/components/Textarea/index.js +3 -1
- package/dist/datavis.cjs +1 -1
- package/dist/datavis.js +1 -1
- package/dist/esheet.cjs +12 -11
- package/dist/esheet.cjs.map +1 -1
- package/dist/esheet.js +9 -8
- package/dist/esheet.js.map +1 -1
- package/dist/hooks/index.cjs +29 -19
- package/dist/hooks/index.d.cts +17 -2
- package/dist/hooks/index.d.ts +17 -2
- package/dist/hooks/index.js +4 -2
- package/dist/index.cjs +2965 -2043
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +193 -48
- package/dist/index.d.ts +193 -48
- package/dist/index.js +2135 -1330
- package/dist/index.js.map +1 -1
- package/dist/kerebron.cjs +200 -68
- package/dist/kerebron.cjs.map +1 -1
- package/dist/kerebron.css +129 -0
- package/dist/kerebron.d.cts +52 -3
- package/dist/kerebron.d.ts +52 -3
- package/dist/kerebron.js +201 -69
- package/dist/kerebron.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/dist/{types-BoTeTPdH.d.ts → types-9vK_YdEb.d.ts} +12 -1
- package/dist/{types-DyIB9HYT.d.cts → types-DZDroUW8.d.cts} +12 -1
- package/dist/{useAnchoredPosition-C7PNglzD.d.cts → useAnchoredPosition-CKwLSQW8.d.cts} +10 -3
- package/dist/{useAnchoredPosition-C7PNglzD.d.ts → useAnchoredPosition-CKwLSQW8.d.ts} +10 -3
- package/dist/utils/index.cjs +9 -9
- package/dist/utils/index.js +1 -1
- package/package.json +13 -4
- package/dist/chunk-5IDYOJHO.cjs.map +0 -1
- package/dist/chunk-6ECKH4DJ.cjs +0 -147
- package/dist/chunk-6ECKH4DJ.cjs.map +0 -1
- package/dist/chunk-6J7UGYT5.cjs.map +0 -1
- package/dist/chunk-6MMIWE7H.js.map +0 -1
- package/dist/chunk-AFGADE3B.js.map +0 -1
- package/dist/chunk-BOOJDRJO.js.map +0 -1
- package/dist/chunk-DLBV42JD.js.map +0 -1
- package/dist/chunk-EGWWTIWS.js.map +0 -1
- package/dist/chunk-GTHNWP4P.js.map +0 -1
- package/dist/chunk-HIDV32ZX.js.map +0 -1
- package/dist/chunk-KFLDXJEE.js.map +0 -1
- package/dist/chunk-LJDBD2DD.cjs.map +0 -1
- package/dist/chunk-MYFZYUPR.cjs.map +0 -1
- package/dist/chunk-OAHORW4N.cjs.map +0 -1
- package/dist/chunk-P6L74SKG.js.map +0 -1
- package/dist/chunk-QUUBTNMH.js.map +0 -1
- package/dist/chunk-RBS3GHDZ.cjs.map +0 -1
- package/dist/chunk-S3MKIDYG.cjs.map +0 -1
- package/dist/chunk-WUNWHOLA.cjs.map +0 -1
- package/dist/chunk-XB54G7WS.cjs.map +0 -1
- package/dist/chunk-YXCE2HSK.js +0 -124
- package/dist/chunk-YXCE2HSK.js.map +0 -1
- package/dist/chunk-ZBI52NP2.cjs.map +0 -1
- package/dist/collabKit-QZL4P5T5.js.map +0 -1
- package/dist/collabKit-UF7E6V3N.cjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useState, useEffect, useCallback
|
|
1
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
2
2
|
|
|
3
3
|
// src/hooks/useDirection.ts
|
|
4
4
|
var RTL_LOCALES = ["ar", "he", "fa", "ur"];
|
|
@@ -124,90 +124,7 @@ function useIsLargeDesktop() {
|
|
|
124
124
|
function useIsMobileOrTablet() {
|
|
125
125
|
return useMediaQuery("(max-width: 1023px)");
|
|
126
126
|
}
|
|
127
|
-
function useScrollSpy({
|
|
128
|
-
selectors,
|
|
129
|
-
ids,
|
|
130
|
-
rootMargin = "0px 0px -60% 0px",
|
|
131
|
-
threshold = 0,
|
|
132
|
-
root,
|
|
133
|
-
enabled = true
|
|
134
|
-
} = {}) {
|
|
135
|
-
const [activeId, setActiveId] = useState(null);
|
|
136
|
-
const visibleEntries = useRef(
|
|
137
|
-
/* @__PURE__ */ new Map()
|
|
138
|
-
);
|
|
139
|
-
const rootEl = root?.current ?? null;
|
|
140
|
-
useEffect(() => {
|
|
141
|
-
if (!enabled) return;
|
|
142
|
-
const container = rootEl ?? document;
|
|
143
|
-
function resolveElements() {
|
|
144
|
-
let els = [];
|
|
145
|
-
if (ids && ids.length > 0) {
|
|
146
|
-
els = ids.map((id) => document.getElementById(id)).filter((el) => el !== null);
|
|
147
|
-
} else if (selectors) {
|
|
148
|
-
els = Array.from(container.querySelectorAll(selectors));
|
|
149
|
-
}
|
|
150
|
-
return els.filter((el) => el.id);
|
|
151
|
-
}
|
|
152
|
-
let intersectionObserver = null;
|
|
153
|
-
let mutationObserver = null;
|
|
154
|
-
function startObserving() {
|
|
155
|
-
const elements = resolveElements();
|
|
156
|
-
if (elements.length === 0) return false;
|
|
157
|
-
intersectionObserver = new IntersectionObserver(
|
|
158
|
-
(entries2) => {
|
|
159
|
-
for (const entry of entries2) {
|
|
160
|
-
if (entry.isIntersecting) {
|
|
161
|
-
visibleEntries.current.set(entry.target.id, entry);
|
|
162
|
-
} else {
|
|
163
|
-
visibleEntries.current.delete(entry.target.id);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
if (visibleEntries.current.size > 0) {
|
|
167
|
-
let topmost = null;
|
|
168
|
-
let topmostTop = Infinity;
|
|
169
|
-
for (const [id, entry] of visibleEntries.current) {
|
|
170
|
-
const top = entry.boundingClientRect.top;
|
|
171
|
-
if (top < topmostTop) {
|
|
172
|
-
topmostTop = top;
|
|
173
|
-
topmost = id;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
if (topmost) {
|
|
177
|
-
setActiveId(topmost);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
root: rootEl,
|
|
183
|
-
rootMargin,
|
|
184
|
-
threshold
|
|
185
|
-
}
|
|
186
|
-
);
|
|
187
|
-
for (const el of elements) {
|
|
188
|
-
intersectionObserver.observe(el);
|
|
189
|
-
}
|
|
190
|
-
mutationObserver?.disconnect();
|
|
191
|
-
mutationObserver = null;
|
|
192
|
-
return true;
|
|
193
|
-
}
|
|
194
|
-
if (!startObserving()) {
|
|
195
|
-
const watchRoot = rootEl ?? document.body;
|
|
196
|
-
mutationObserver = new MutationObserver(() => {
|
|
197
|
-
startObserving();
|
|
198
|
-
});
|
|
199
|
-
mutationObserver.observe(watchRoot, { childList: true, subtree: true });
|
|
200
|
-
}
|
|
201
|
-
const entries = visibleEntries.current;
|
|
202
|
-
return () => {
|
|
203
|
-
mutationObserver?.disconnect();
|
|
204
|
-
intersectionObserver?.disconnect();
|
|
205
|
-
entries.clear();
|
|
206
|
-
};
|
|
207
|
-
}, [selectors, ids, rootMargin, threshold, rootEl, enabled]);
|
|
208
|
-
return { activeId };
|
|
209
|
-
}
|
|
210
127
|
|
|
211
|
-
export { RTL_LOCALES, isRtlLocale, useCommandK, useDirection, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardShortcut, useMediaQuery
|
|
212
|
-
//# sourceMappingURL=chunk-
|
|
213
|
-
//# sourceMappingURL=chunk-
|
|
128
|
+
export { RTL_LOCALES, isRtlLocale, useCommandK, useDirection, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardShortcut, useMediaQuery };
|
|
129
|
+
//# sourceMappingURL=chunk-XUVEF2RQ.js.map
|
|
130
|
+
//# sourceMappingURL=chunk-XUVEF2RQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useDirection.ts","../src/hooks/useKeyboardShortcut.ts","../src/hooks/useMediaQuery.ts"],"names":["useEffect","useState"],"mappings":"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","file":"chunk-XUVEF2RQ.js","sourcesContent":["import { useState, useEffect } from 'react';\nimport type { RefObject } from 'react';\n\nexport type Direction = 'ltr' | 'rtl';\n\n/** Locales whose primary script reads right-to-left. */\nexport const RTL_LOCALES = ['ar', 'he', 'fa', 'ur'] as const;\n\n/**\n * Returns true when the given locale (e.g. `ar`, `ar-SA`, `he_IL`) uses a\n * right-to-left script.\n */\nexport function isRtlLocale(locale: string): boolean {\n const lang = locale.toLowerCase().split(/[-_]/)[0];\n return (RTL_LOCALES as readonly string[]).includes(lang);\n}\n\nfunction resolveDirection(element?: HTMLElement | null): Direction {\n if (typeof document === 'undefined') return 'ltr';\n const target = element ?? document.documentElement;\n return getComputedStyle(target).direction === 'rtl' ? 'rtl' : 'ltr';\n}\n\n/**\n * Hook returning the effective text direction (`ltr` | `rtl`) inherited from\n * the nearest `dir` attribute — zero setup for consumers who set\n * `<html dir=\"rtl\">`.\n *\n * Use for JS-level direction logic that CSS logical properties can't cover:\n * inverting ArrowLeft/ArrowRight keyboard handling, popover/toast placement,\n * drag math, etc.\n *\n * @param elementRef - Optional ref; when provided, direction is resolved from\n * that element (respecting any local `dir` override) instead of `<html>`.\n *\n * @example\n * ```tsx\n * const direction = useDirection();\n * const nextKey = direction === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n * ```\n */\nexport function useDirection(\n elementRef?: RefObject<HTMLElement | null>\n): Direction {\n const [direction, setDirection] = useState<Direction>(() =>\n resolveDirection(elementRef?.current)\n );\n\n useEffect(() => {\n const update = () => setDirection(resolveDirection(elementRef?.current));\n update();\n // dir changes are rare; observing the whole tree for just this attribute is cheap.\n const observer = new MutationObserver(update);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['dir'],\n subtree: true,\n });\n return () => observer.disconnect();\n }, [elementRef]);\n\n // Re-sync when a re-render points elementRef.current at a different node:\n // the MutationObserver only fires on `dir` attribute mutations, so a swapped\n // ref target with a different inherited direction would otherwise go stale.\n const currentElement = elementRef?.current ?? null;\n useEffect(() => {\n setDirection(resolveDirection(currentElement));\n }, [currentElement]);\n\n return direction;\n}\n","import { useEffect, useCallback } from 'react';\n\n/**\n * Options for keyboard shortcut hook\n */\nexport interface KeyboardShortcutOptions {\n /** Whether the shortcut is currently enabled (default: true) */\n enabled?: boolean;\n /** Modifier keys required (default: none) */\n modifiers?: {\n ctrl?: boolean;\n shift?: boolean;\n alt?: boolean;\n meta?: boolean;\n };\n /** Whether to prevent default browser behavior (default: true) */\n preventDefault?: boolean;\n /** Whether to stop event propagation (default: false) */\n stopPropagation?: boolean;\n /** Element types to ignore when the shortcut is pressed (default: ['INPUT', 'TEXTAREA', 'SELECT']) */\n ignoreInputs?: boolean;\n}\n\n/**\n * Hook that triggers a callback when a specific keyboard shortcut is pressed.\n * Supports modifier keys (Ctrl, Shift, Alt, Meta) and ignores input fields by default.\n *\n * @param key - The key to listen for (e.g., 'k', 'Enter', 'Escape', '/')\n * @param callback - Function to call when the shortcut is pressed\n * @param options - Configuration options\n *\n * @example\n * ```tsx\n * // Cmd/Ctrl+K to open search\n * useKeyboardShortcut('k', openSearch, { modifiers: { meta: true, ctrl: true } });\n *\n * // Forward slash to focus search (ignoring when typing)\n * useKeyboardShortcut('/', focusSearch);\n *\n * // Escape to close modal\n * useKeyboardShortcut('Escape', closeModal);\n * ```\n */\nexport function useKeyboardShortcut(\n key: string,\n callback: (event: KeyboardEvent) => void,\n options: KeyboardShortcutOptions = {}\n): void {\n const {\n enabled = true,\n modifiers = {},\n preventDefault = true,\n stopPropagation = false,\n ignoreInputs = true,\n } = options;\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n // Check if we should ignore input fields\n if (ignoreInputs) {\n const target = event.target as HTMLElement;\n const tagName = target.tagName.toUpperCase();\n if (\n tagName === 'INPUT' ||\n tagName === 'TEXTAREA' ||\n tagName === 'SELECT' ||\n target.isContentEditable\n ) {\n return;\n }\n }\n\n // Check modifiers\n const { ctrl, shift, alt, meta } = modifiers;\n\n // For Cmd+K style shortcuts, allow either meta (Mac) or ctrl (Windows/Linux)\n const metaOrCtrl = meta || ctrl;\n if (metaOrCtrl) {\n if (!(event.metaKey || event.ctrlKey)) return;\n } else {\n // If no meta/ctrl modifier specified, ensure neither is pressed\n if (event.metaKey || event.ctrlKey) return;\n }\n\n if (shift && !event.shiftKey) return;\n if (alt && !event.altKey) return;\n\n // Check key match (case-insensitive for letters)\n const eventKey =\n event.key.length === 1 ? event.key.toLowerCase() : event.key;\n const targetKey = key.length === 1 ? key.toLowerCase() : key;\n if (eventKey !== targetKey) return;\n\n if (preventDefault) {\n event.preventDefault();\n }\n if (stopPropagation) {\n event.stopPropagation();\n }\n\n callback(event);\n },\n [key, callback, modifiers, preventDefault, stopPropagation, ignoreInputs]\n );\n\n useEffect(() => {\n if (!enabled) return;\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [handleKeyDown, enabled]);\n}\n\n/**\n * Hook for the common Cmd/Ctrl+K shortcut pattern (command palette, search, etc.)\n *\n * @param callback - Function to call when Cmd/Ctrl+K is pressed\n * @param enabled - Whether the shortcut is active (default: true)\n *\n * @example\n * ```tsx\n * useCommandK(() => setIsOpen(true));\n * ```\n */\nexport function useCommandK(callback: () => void, enabled = true): void {\n useKeyboardShortcut('k', callback, {\n enabled,\n modifiers: { meta: true, ctrl: true },\n ignoreInputs: false, // Cmd+K should work even in inputs\n });\n}\n","import { useState, useEffect } from 'react';\n\n/**\n * Hook that tracks whether a media query matches.\n * Uses the native `matchMedia` API for efficient media query tracking.\n *\n * @param query - CSS media query string (e.g., '(min-width: 768px)')\n * @returns Boolean indicating whether the media query matches\n *\n * @example\n * ```tsx\n * function ResponsiveComponent() {\n * const isMobile = useMediaQuery('(max-width: 767px)');\n * const isTablet = useMediaQuery('(min-width: 768px) and (max-width: 1023px)');\n * const isDesktop = useMediaQuery('(min-width: 1024px)');\n *\n * return (\n * <div>\n * {isMobile && <MobileLayout />}\n * {isTablet && <TabletLayout />}\n * {isDesktop && <DesktopLayout />}\n * </div>\n * );\n * }\n * ```\n */\nexport function useMediaQuery(query: string): boolean {\n // Initialize with null to indicate SSR/initial state\n const [matches, setMatches] = useState<boolean>(() => {\n // Check if we're in a browser environment\n if (typeof window === 'undefined') return false;\n return window.matchMedia(query).matches;\n });\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const mediaQuery = window.matchMedia(query);\n\n // Set initial value\n setMatches(mediaQuery.matches);\n\n // Handler for media query changes\n const handler = (event: MediaQueryListEvent) => {\n setMatches(event.matches);\n };\n\n // Modern browsers use addEventListener\n if (mediaQuery.addEventListener) {\n mediaQuery.addEventListener('change', handler);\n return () => mediaQuery.removeEventListener('change', handler);\n }\n\n // Fallback for older browsers\n mediaQuery.addListener(handler);\n return () => mediaQuery.removeListener(handler);\n }, [query]);\n\n return matches;\n}\n\n/**\n * Preset breakpoint hooks following common responsive design patterns\n */\n\n/** Returns true when viewport is smaller than 640px (mobile) */\nexport function useIsMobile(): boolean {\n return useMediaQuery('(max-width: 639px)');\n}\n\n/** Returns true when viewport is 640px-767px (large mobile / small tablet) */\nexport function useIsSmallTablet(): boolean {\n return useMediaQuery('(min-width: 640px) and (max-width: 767px)');\n}\n\n/** Returns true when viewport is 768px-1023px (tablet) */\nexport function useIsTablet(): boolean {\n return useMediaQuery('(min-width: 768px) and (max-width: 1023px)');\n}\n\n/** Returns true when viewport is 1024px or larger (desktop) */\nexport function useIsDesktop(): boolean {\n return useMediaQuery('(min-width: 1024px)');\n}\n\n/** Returns true when viewport is 1280px or larger (large desktop) */\nexport function useIsLargeDesktop(): boolean {\n return useMediaQuery('(min-width: 1280px)');\n}\n\n/** Returns true when viewport is smaller than 1024px (mobile/tablet) */\nexport function useIsMobileOrTablet(): boolean {\n return useMediaQuery('(max-width: 1023px)');\n}\n"]}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { cn } from './chunk-TQONQSJO.js';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { ChevronDown } from 'lucide-react';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var accordionVariants = cva("", {
|
|
8
|
+
variants: {
|
|
9
|
+
variant: {
|
|
10
|
+
// Each item is its own card with spacing between
|
|
11
|
+
separated: "flex flex-col gap-3",
|
|
12
|
+
// One bordered list with dividers
|
|
13
|
+
joined: "border-border divide-border divide-y rounded-lg border"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
defaultVariants: {
|
|
17
|
+
variant: "separated"
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
var itemVariants = cva("overflow-hidden", {
|
|
21
|
+
variants: {
|
|
22
|
+
variant: {
|
|
23
|
+
separated: "border-border bg-card rounded-lg border",
|
|
24
|
+
joined: "bg-card first:rounded-t-lg last:rounded-b-lg"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
defaultVariants: {
|
|
28
|
+
variant: "separated"
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
var Accordion = React.forwardRef(
|
|
32
|
+
function Accordion2({
|
|
33
|
+
items,
|
|
34
|
+
type = "single",
|
|
35
|
+
defaultOpenIds,
|
|
36
|
+
openIds: controlledOpen,
|
|
37
|
+
onOpenChange,
|
|
38
|
+
collapsible = true,
|
|
39
|
+
headingLevel: Heading = "h3",
|
|
40
|
+
variant,
|
|
41
|
+
className,
|
|
42
|
+
...props
|
|
43
|
+
}, ref) {
|
|
44
|
+
const baseId = React.useId();
|
|
45
|
+
const [internalOpen, setInternalOpen] = React.useState(
|
|
46
|
+
() => defaultOpenIds ?? []
|
|
47
|
+
);
|
|
48
|
+
const rawOpen = controlledOpen ?? internalOpen;
|
|
49
|
+
const open = React.useMemo(
|
|
50
|
+
() => type === "single" ? rawOpen.slice(0, 1) : rawOpen,
|
|
51
|
+
[type, rawOpen]
|
|
52
|
+
);
|
|
53
|
+
const openSet = React.useMemo(() => new Set(open), [open]);
|
|
54
|
+
const toggle = (id) => {
|
|
55
|
+
let next;
|
|
56
|
+
if (openSet.has(id)) {
|
|
57
|
+
if (type === "single" && !collapsible) return;
|
|
58
|
+
next = open.filter((o) => o !== id);
|
|
59
|
+
} else {
|
|
60
|
+
next = type === "single" ? [id] : [...open, id];
|
|
61
|
+
}
|
|
62
|
+
if (controlledOpen === void 0) setInternalOpen(next);
|
|
63
|
+
onOpenChange?.(next);
|
|
64
|
+
};
|
|
65
|
+
return /* @__PURE__ */ jsx(
|
|
66
|
+
"div",
|
|
67
|
+
{
|
|
68
|
+
ref,
|
|
69
|
+
className: cn(accordionVariants({ variant }), className),
|
|
70
|
+
...props,
|
|
71
|
+
children: items.map((item) => {
|
|
72
|
+
const isOpen = openSet.has(item.id);
|
|
73
|
+
const triggerId = `${baseId}-${item.id}-trigger`;
|
|
74
|
+
const panelId = `${baseId}-${item.id}-panel`;
|
|
75
|
+
return /* @__PURE__ */ jsxs("div", { className: cn(itemVariants({ variant })), children: [
|
|
76
|
+
/* @__PURE__ */ jsx(Heading, { className: "m-0", children: /* @__PURE__ */ jsxs(
|
|
77
|
+
"button",
|
|
78
|
+
{
|
|
79
|
+
type: "button",
|
|
80
|
+
id: triggerId,
|
|
81
|
+
"aria-expanded": isOpen,
|
|
82
|
+
"aria-controls": panelId,
|
|
83
|
+
disabled: item.disabled,
|
|
84
|
+
onClick: () => toggle(item.id),
|
|
85
|
+
className: cn(
|
|
86
|
+
"hover:bg-muted/60 flex w-full items-center justify-between gap-4 px-5 py-4 text-start transition-colors",
|
|
87
|
+
"focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none focus-visible:ring-inset",
|
|
88
|
+
"disabled:pointer-events-none disabled:opacity-50"
|
|
89
|
+
),
|
|
90
|
+
children: [
|
|
91
|
+
/* @__PURE__ */ jsx("span", { className: "text-foreground min-w-0 text-sm font-semibold", children: item.title }),
|
|
92
|
+
/* @__PURE__ */ jsx(
|
|
93
|
+
ChevronDown,
|
|
94
|
+
{
|
|
95
|
+
"aria-hidden": "true",
|
|
96
|
+
className: cn(
|
|
97
|
+
"text-muted-foreground h-5 w-5 shrink-0 transition-transform duration-200",
|
|
98
|
+
isOpen && "rotate-180"
|
|
99
|
+
)
|
|
100
|
+
}
|
|
101
|
+
)
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
) }),
|
|
105
|
+
/* @__PURE__ */ jsx(
|
|
106
|
+
"div",
|
|
107
|
+
{
|
|
108
|
+
id: panelId,
|
|
109
|
+
role: "region",
|
|
110
|
+
"aria-labelledby": triggerId,
|
|
111
|
+
"aria-hidden": !isOpen,
|
|
112
|
+
inert: !isOpen || void 0,
|
|
113
|
+
className: cn(
|
|
114
|
+
"grid transition-[grid-template-rows] duration-200 ease-out",
|
|
115
|
+
isOpen ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
|
|
116
|
+
),
|
|
117
|
+
children: /* @__PURE__ */ jsx("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx("div", { className: "text-muted-foreground px-5 pb-4 text-sm leading-relaxed", children: item.content }) })
|
|
118
|
+
}
|
|
119
|
+
)
|
|
120
|
+
] }, item.id);
|
|
121
|
+
})
|
|
122
|
+
}
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
export { Accordion };
|
|
128
|
+
//# sourceMappingURL=chunk-Y6YSJPVC.js.map
|
|
129
|
+
//# sourceMappingURL=chunk-Y6YSJPVC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Accordion/Accordion.tsx"],"names":["Accordion"],"mappings":"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","file":"chunk-Y6YSJPVC.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { ChevronDown } from 'lucide-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\n// =============================================================================\n// Variants\n// =============================================================================\n\nconst accordionVariants = cva('', {\n variants: {\n variant: {\n // Each item is its own card with spacing between\n separated: 'flex flex-col gap-3',\n // One bordered list with dividers\n joined: 'border-border divide-border divide-y rounded-lg border',\n },\n },\n defaultVariants: {\n variant: 'separated',\n },\n});\n\nconst itemVariants = cva('overflow-hidden', {\n variants: {\n variant: {\n separated: 'border-border bg-card rounded-lg border',\n joined: 'bg-card first:rounded-t-lg last:rounded-b-lg',\n },\n },\n defaultVariants: {\n variant: 'separated',\n },\n});\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface AccordionItem {\n /** Stable id used for open state and aria wiring. */\n id: string;\n /** Header label (e.g. an FAQ question). */\n title: React.ReactNode;\n /** Panel content (e.g. the answer). */\n content: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface AccordionProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>,\n VariantProps<typeof accordionVariants> {\n items: AccordionItem[];\n /** `single` keeps at most one panel open; `multiple` allows any number. */\n type?: 'single' | 'multiple';\n /** Ids open initially (uncontrolled). */\n defaultOpenIds?: string[];\n /** Controlled open ids. Changes reported via `onOpenChange`. */\n openIds?: string[];\n onOpenChange?: (openIds: string[]) => void;\n /** In `single` mode, allow closing the open panel (default true). */\n collapsible?: boolean;\n /** Heading level wrapping each trigger for document outline (default h3). */\n headingLevel?: 'h2' | 'h3' | 'h4';\n}\n\n// =============================================================================\n// Accordion\n// =============================================================================\n\n/**\n * A vertically stacked set of expandable panels — FAQ lists, settings\n * groups, progressive disclosure. Panels animate open to their natural\n * height (CSS grid rows, no max-height clipping), and headers are real\n * buttons inside headings with full `aria-expanded`/`aria-controls` wiring.\n *\n * @example\n * ```tsx\n * <Accordion\n * type=\"single\"\n * items={[\n * { id: 'pricing', title: 'How is pricing calculated?', content: <p>…</p> },\n * { id: 'billing', title: 'When am I billed?', content: <p>…</p> },\n * ]}\n * />\n * ```\n */\nexport const Accordion = React.forwardRef<HTMLDivElement, AccordionProps>(\n function Accordion(\n {\n items,\n type = 'single',\n defaultOpenIds,\n openIds: controlledOpen,\n onOpenChange,\n collapsible = true,\n headingLevel: Heading = 'h3',\n variant,\n className,\n ...props\n },\n ref\n ) {\n const baseId = React.useId();\n const [internalOpen, setInternalOpen] = React.useState<string[]>(\n () => defaultOpenIds ?? []\n );\n const rawOpen = controlledOpen ?? internalOpen;\n // Single mode keeps at most one panel open, even if defaultOpenIds or a\n // controlled openIds array hands us several.\n const open = React.useMemo(\n () => (type === 'single' ? rawOpen.slice(0, 1) : rawOpen),\n [type, rawOpen]\n );\n const openSet = React.useMemo(() => new Set(open), [open]);\n\n const toggle = (id: string) => {\n let next: string[];\n if (openSet.has(id)) {\n if (type === 'single' && !collapsible) return;\n next = open.filter((o) => o !== id);\n } else {\n next = type === 'single' ? [id] : [...open, id];\n }\n if (controlledOpen === undefined) setInternalOpen(next);\n onOpenChange?.(next);\n };\n\n return (\n <div\n ref={ref}\n className={cn(accordionVariants({ variant }), className)}\n {...props}\n >\n {items.map((item) => {\n const isOpen = openSet.has(item.id);\n const triggerId = `${baseId}-${item.id}-trigger`;\n const panelId = `${baseId}-${item.id}-panel`;\n return (\n <div key={item.id} className={cn(itemVariants({ variant }))}>\n <Heading className=\"m-0\">\n <button\n type=\"button\"\n id={triggerId}\n aria-expanded={isOpen}\n aria-controls={panelId}\n disabled={item.disabled}\n onClick={() => toggle(item.id)}\n className={cn(\n 'hover:bg-muted/60 flex w-full items-center justify-between gap-4 px-5 py-4 text-start transition-colors',\n 'focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none focus-visible:ring-inset',\n 'disabled:pointer-events-none disabled:opacity-50'\n )}\n >\n <span className=\"text-foreground min-w-0 text-sm font-semibold\">\n {item.title}\n </span>\n <ChevronDown\n aria-hidden=\"true\"\n className={cn(\n 'text-muted-foreground h-5 w-5 shrink-0 transition-transform duration-200',\n isOpen && 'rotate-180'\n )}\n />\n </button>\n </Heading>\n {/* grid-rows 0fr→1fr animates to natural height without a max-height clip;\n collapsed panels are hidden from AT and unfocusable via aria-hidden + inert */}\n <div\n id={panelId}\n role=\"region\"\n aria-labelledby={triggerId}\n aria-hidden={!isOpen}\n inert={!isOpen || undefined}\n className={cn(\n 'grid transition-[grid-template-rows] duration-200 ease-out',\n isOpen ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'\n )}\n >\n <div className=\"overflow-hidden\">\n <div className=\"text-muted-foreground px-5 pb-4 text-sm leading-relaxed\">\n {item.content}\n </div>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n);\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkZ5S5JEJD_cjs = require('./chunk-Z5S5JEJD.cjs');
|
|
4
|
+
var chunkAOHJILLU_cjs = require('./chunk-AOHJILLU.cjs');
|
|
5
5
|
var chunkCW75IKA6_cjs = require('./chunk-CW75IKA6.cjs');
|
|
6
6
|
var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
|
|
7
7
|
var React = require('react');
|
|
@@ -35,11 +35,6 @@ var widthClasses = {
|
|
|
35
35
|
fixed: "w-44"
|
|
36
36
|
// ~176px - enough for MM/DD/YYYY + calendar icon
|
|
37
37
|
};
|
|
38
|
-
var sizeClasses = {
|
|
39
|
-
sm: "h-8 text-sm",
|
|
40
|
-
md: "h-10 text-base",
|
|
41
|
-
lg: "h-12 text-lg"
|
|
42
|
-
};
|
|
43
38
|
var MONTH_NAMES = [
|
|
44
39
|
"January",
|
|
45
40
|
"February",
|
|
@@ -222,7 +217,7 @@ var DateInput = React__namespace.forwardRef(
|
|
|
222
217
|
anchorRef: buttonRef,
|
|
223
218
|
floatingRef: calendarRef,
|
|
224
219
|
style: calendarStyle
|
|
225
|
-
} =
|
|
220
|
+
} = chunkAOHJILLU_cjs.useAnchoredPosition({
|
|
226
221
|
open: isCalendarOpen,
|
|
227
222
|
placement: "bottom-end"
|
|
228
223
|
});
|
|
@@ -655,7 +650,7 @@ var DateInput = React__namespace.forwardRef(
|
|
|
655
650
|
};
|
|
656
651
|
if (inputType === "year") {
|
|
657
652
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
658
|
-
|
|
653
|
+
chunkZ5S5JEJD_cjs.Input,
|
|
659
654
|
{
|
|
660
655
|
ref,
|
|
661
656
|
type: inputType === "year" ? "text" : inputType,
|
|
@@ -675,107 +670,142 @@ var DateInput = React__namespace.forwardRef(
|
|
|
675
670
|
);
|
|
676
671
|
}
|
|
677
672
|
if (showCalendar || inputType !== "date") {
|
|
678
|
-
const {
|
|
673
|
+
const {
|
|
674
|
+
label,
|
|
675
|
+
labelVariant,
|
|
676
|
+
helperText,
|
|
677
|
+
hideLabel,
|
|
678
|
+
required,
|
|
679
|
+
requiredVariant,
|
|
680
|
+
size,
|
|
681
|
+
placeholder: placeholderProp,
|
|
682
|
+
...inputProps
|
|
683
|
+
} = props;
|
|
679
684
|
const resolvedSize = size ?? "md";
|
|
680
685
|
const inputId = inputProps.id || generatedId;
|
|
681
686
|
const errorId = `${inputId}-error`;
|
|
682
687
|
const helperId = `${inputId}-helper`;
|
|
683
688
|
const showError = hasError || !!localError;
|
|
684
689
|
const errorMessage = error || localError;
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
690
|
+
const isFloating = labelVariant === "floating" && !!label && !hideLabel;
|
|
691
|
+
const requiredMark = required && /* @__PURE__ */ jsxRuntime.jsx(chunkZ5S5JEJD_cjs.RequiredMark, { variant: requiredVariant });
|
|
692
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
693
|
+
"div",
|
|
694
|
+
{
|
|
695
|
+
"data-slot": "input-wrapper",
|
|
696
|
+
className: chunkS5RVSXDV_cjs.cn("flex flex-col gap-1.5", widthClasses[width]),
|
|
697
|
+
children: [
|
|
698
|
+
label && !isFloating && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
699
|
+
"label",
|
|
700
|
+
{
|
|
701
|
+
"data-slot": "input-label",
|
|
702
|
+
htmlFor: inputId,
|
|
703
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
704
|
+
"text-foreground text-sm font-medium",
|
|
705
|
+
hideLabel && "sr-only"
|
|
706
|
+
),
|
|
707
|
+
children: [
|
|
708
|
+
label,
|
|
709
|
+
requiredMark
|
|
710
|
+
]
|
|
711
|
+
}
|
|
693
712
|
),
|
|
694
|
-
children: [
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
"span",
|
|
713
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
714
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
715
|
+
"input",
|
|
698
716
|
{
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
717
|
+
"data-slot": "input",
|
|
718
|
+
ref,
|
|
719
|
+
id: inputId,
|
|
720
|
+
type: "text",
|
|
721
|
+
inputMode: inputType === "date" ? "numeric" : void 0,
|
|
722
|
+
autoComplete,
|
|
723
|
+
placeholder: isFloating ? " " : placeholderProp ?? (inputType === "month" ? "Select month" : inputType === "time" ? "Select time" : inputType === "datetime-local" ? "Select date and time" : placeholder),
|
|
724
|
+
value: formatPickerValue(displayValue, inputType, timeFormat),
|
|
725
|
+
onChange: handleChange,
|
|
726
|
+
onBlur: inputType === "date" ? handleBlur : onBlur,
|
|
727
|
+
onClick: (event) => {
|
|
728
|
+
onClick?.(event);
|
|
729
|
+
setIsCalendarOpen(true);
|
|
730
|
+
},
|
|
731
|
+
readOnly: !isFormattedDate,
|
|
732
|
+
required,
|
|
733
|
+
"aria-invalid": showError,
|
|
734
|
+
"aria-describedby": [errorMessage ? errorId : null, helperText ? helperId : null].filter(Boolean).join(" ") || void 0,
|
|
735
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
736
|
+
chunkZ5S5JEJD_cjs.inputVariants({
|
|
737
|
+
size: resolvedSize,
|
|
738
|
+
hasError: showError,
|
|
739
|
+
labelVariant: isFloating ? "floating" : "stacked"
|
|
740
|
+
}),
|
|
741
|
+
"pr-10",
|
|
742
|
+
className
|
|
743
|
+
),
|
|
744
|
+
...inputProps
|
|
703
745
|
}
|
|
704
|
-
)
|
|
705
|
-
]
|
|
706
|
-
}
|
|
707
|
-
),
|
|
708
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
709
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
710
|
-
"input",
|
|
711
|
-
{
|
|
712
|
-
ref,
|
|
713
|
-
id: inputId,
|
|
714
|
-
type: "text",
|
|
715
|
-
inputMode: inputType === "date" ? "numeric" : void 0,
|
|
716
|
-
autoComplete,
|
|
717
|
-
placeholder: inputType === "month" ? "Select month" : inputType === "time" ? "Select time" : inputType === "datetime-local" ? "Select date and time" : placeholder,
|
|
718
|
-
value: formatPickerValue(displayValue, inputType, timeFormat),
|
|
719
|
-
onChange: handleChange,
|
|
720
|
-
onBlur: inputType === "date" ? handleBlur : onBlur,
|
|
721
|
-
onClick: (event) => {
|
|
722
|
-
onClick?.(event);
|
|
723
|
-
setIsCalendarOpen(true);
|
|
724
|
-
},
|
|
725
|
-
readOnly: !isFormattedDate,
|
|
726
|
-
"aria-invalid": showError,
|
|
727
|
-
"aria-describedby": [errorMessage ? errorId : null, helperText ? helperId : null].filter(Boolean).join(" ") || void 0,
|
|
728
|
-
className: chunkS5RVSXDV_cjs.cn(
|
|
729
|
-
"w-full px-3 py-2",
|
|
730
|
-
"rounded-lg border",
|
|
731
|
-
"bg-background text-foreground",
|
|
732
|
-
"placeholder:text-muted-foreground",
|
|
733
|
-
"transition-colors duration-200",
|
|
734
|
-
"focus:ring-ring focus:border-transparent focus:ring-2 focus:outline-none",
|
|
735
|
-
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
736
|
-
sizeClasses[resolvedSize],
|
|
737
|
-
showError ? "border-destructive focus:ring-destructive" : "border-input",
|
|
738
|
-
"pr-10",
|
|
739
|
-
className
|
|
740
746
|
),
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
747
|
+
isFloating && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
748
|
+
"label",
|
|
749
|
+
{
|
|
750
|
+
"data-slot": "input-label",
|
|
751
|
+
htmlFor: inputId,
|
|
752
|
+
className: chunkZ5S5JEJD_cjs.floatingLabelVariants({
|
|
753
|
+
size: resolvedSize,
|
|
754
|
+
hasError: showError
|
|
755
|
+
}),
|
|
756
|
+
children: [
|
|
757
|
+
label,
|
|
758
|
+
requiredMark
|
|
759
|
+
]
|
|
760
|
+
}
|
|
755
761
|
),
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
762
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
763
|
+
"button",
|
|
764
|
+
{
|
|
765
|
+
"data-slot": "date-input-trigger",
|
|
766
|
+
ref: buttonRef,
|
|
767
|
+
type: "button",
|
|
768
|
+
onClick: () => setIsCalendarOpen(!isCalendarOpen),
|
|
769
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
770
|
+
"absolute top-1/2 right-3 -translate-y-1/2",
|
|
771
|
+
"text-muted-foreground hover:text-foreground",
|
|
772
|
+
"focus:text-foreground focus:outline-none",
|
|
773
|
+
"transition-colors"
|
|
774
|
+
),
|
|
775
|
+
"aria-label": inputType === "time" ? "Open time picker" : "Open calendar",
|
|
776
|
+
"aria-expanded": isCalendarOpen,
|
|
777
|
+
"aria-haspopup": "dialog",
|
|
778
|
+
children: inputType === "time" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Clock, { size: 18 }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Calendar, { size: 18 })
|
|
779
|
+
}
|
|
780
|
+
)
|
|
781
|
+
] }),
|
|
782
|
+
isCalendarOpen && reactDom.createPortal(renderCalendar(), document.body),
|
|
783
|
+
errorMessage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
784
|
+
"p",
|
|
785
|
+
{
|
|
786
|
+
id: errorId,
|
|
787
|
+
"data-slot": "input-error",
|
|
788
|
+
className: "text-sm",
|
|
789
|
+
style: { color: "#ef4444" },
|
|
790
|
+
role: "alert",
|
|
791
|
+
children: errorMessage
|
|
792
|
+
}
|
|
793
|
+
),
|
|
794
|
+
helperText && !errorMessage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
795
|
+
"p",
|
|
796
|
+
{
|
|
797
|
+
id: helperId,
|
|
798
|
+
"data-slot": "input-helper",
|
|
799
|
+
className: "text-muted-foreground text-sm",
|
|
800
|
+
children: helperText
|
|
801
|
+
}
|
|
802
|
+
)
|
|
803
|
+
]
|
|
804
|
+
}
|
|
805
|
+
);
|
|
776
806
|
}
|
|
777
807
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
778
|
-
|
|
808
|
+
chunkZ5S5JEJD_cjs.Input,
|
|
779
809
|
{
|
|
780
810
|
ref,
|
|
781
811
|
type: "text",
|
|
@@ -830,5 +860,5 @@ function ChevronRightIcon() {
|
|
|
830
860
|
}
|
|
831
861
|
|
|
832
862
|
exports.DateInput = DateInput;
|
|
833
|
-
//# sourceMappingURL=chunk-
|
|
834
|
-
//# sourceMappingURL=chunk-
|
|
863
|
+
//# sourceMappingURL=chunk-YRLCR76L.cjs.map
|
|
864
|
+
//# sourceMappingURL=chunk-YRLCR76L.cjs.map
|