@mieweb/ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +696 -0
- package/dist/brands/bluehive.cjs +18 -0
- package/dist/brands/bluehive.cjs.map +1 -0
- package/dist/brands/bluehive.css +136 -0
- package/dist/brands/bluehive.d.cts +16 -0
- package/dist/brands/bluehive.d.ts +16 -0
- package/dist/brands/bluehive.js +3 -0
- package/dist/brands/bluehive.js.map +1 -0
- package/dist/brands/enterprise-health.css +260 -0
- package/dist/brands/index.cjs +55 -0
- package/dist/brands/index.cjs.map +1 -0
- package/dist/brands/index.d.cts +100 -0
- package/dist/brands/index.d.ts +100 -0
- package/dist/brands/index.js +10 -0
- package/dist/brands/index.js.map +1 -0
- package/dist/brands/mieweb.css +138 -0
- package/dist/brands/types.cjs +20 -0
- package/dist/brands/types.cjs.map +1 -0
- package/dist/brands/types.d.cts +188 -0
- package/dist/brands/types.d.ts +188 -0
- package/dist/brands/types.js +3 -0
- package/dist/brands/types.js.map +1 -0
- package/dist/brands/waggleline.css +164 -0
- package/dist/brands/webchart.css +138 -0
- package/dist/chunk-265CFCCX.js +173 -0
- package/dist/chunk-265CFCCX.js.map +1 -0
- package/dist/chunk-2J2V4TMJ.cjs +139 -0
- package/dist/chunk-2J2V4TMJ.cjs.map +1 -0
- package/dist/chunk-2O7D6F67.cjs +63 -0
- package/dist/chunk-2O7D6F67.cjs.map +1 -0
- package/dist/chunk-3NJ72QU6.js +55 -0
- package/dist/chunk-3NJ72QU6.js.map +1 -0
- package/dist/chunk-4AWW5WPF.js +161 -0
- package/dist/chunk-4AWW5WPF.js.map +1 -0
- package/dist/chunk-4LNS5QDP.cjs +84 -0
- package/dist/chunk-4LNS5QDP.cjs.map +1 -0
- package/dist/chunk-4LTN2LEN.js +79 -0
- package/dist/chunk-4LTN2LEN.js.map +1 -0
- package/dist/chunk-4MHTSFPX.js +205 -0
- package/dist/chunk-4MHTSFPX.js.map +1 -0
- package/dist/chunk-4YRAEFYW.js +233 -0
- package/dist/chunk-4YRAEFYW.js.map +1 -0
- package/dist/chunk-53K3KWXQ.cjs +753 -0
- package/dist/chunk-53K3KWXQ.cjs.map +1 -0
- package/dist/chunk-6DP6RKUA.cjs +15 -0
- package/dist/chunk-6DP6RKUA.cjs.map +1 -0
- package/dist/chunk-6HFFWEM3.cjs +22 -0
- package/dist/chunk-6HFFWEM3.cjs.map +1 -0
- package/dist/chunk-6OCIIIAI.js +128 -0
- package/dist/chunk-6OCIIIAI.js.map +1 -0
- package/dist/chunk-6Q4SU72T.js +300 -0
- package/dist/chunk-6Q4SU72T.js.map +1 -0
- package/dist/chunk-AU5ADTYD.cjs +326 -0
- package/dist/chunk-AU5ADTYD.cjs.map +1 -0
- package/dist/chunk-AWIULTJW.js +190 -0
- package/dist/chunk-AWIULTJW.js.map +1 -0
- package/dist/chunk-B26RIQ5R.js +97 -0
- package/dist/chunk-B26RIQ5R.js.map +1 -0
- package/dist/chunk-B3L43JGH.js +98 -0
- package/dist/chunk-B3L43JGH.js.map +1 -0
- package/dist/chunk-B7DA35BY.cjs +496 -0
- package/dist/chunk-B7DA35BY.cjs.map +1 -0
- package/dist/chunk-B7YGVKTE.cjs +184 -0
- package/dist/chunk-B7YGVKTE.cjs.map +1 -0
- package/dist/chunk-BR2XGATJ.cjs +40 -0
- package/dist/chunk-BR2XGATJ.cjs.map +1 -0
- package/dist/chunk-BTJHYGPI.cjs +27 -0
- package/dist/chunk-BTJHYGPI.cjs.map +1 -0
- package/dist/chunk-BXK5TNJE.cjs +329 -0
- package/dist/chunk-BXK5TNJE.cjs.map +1 -0
- package/dist/chunk-C6MDPPPL.js +82 -0
- package/dist/chunk-C6MDPPPL.js.map +1 -0
- package/dist/chunk-CEHWXAAI.js +22 -0
- package/dist/chunk-CEHWXAAI.js.map +1 -0
- package/dist/chunk-CLNOI5J7.js +38 -0
- package/dist/chunk-CLNOI5J7.js.map +1 -0
- package/dist/chunk-CP7NPDQW.js +99 -0
- package/dist/chunk-CP7NPDQW.js.map +1 -0
- package/dist/chunk-CQCYXHCU.cjs +256 -0
- package/dist/chunk-CQCYXHCU.cjs.map +1 -0
- package/dist/chunk-D5IBXXF2.js +243 -0
- package/dist/chunk-D5IBXXF2.js.map +1 -0
- package/dist/chunk-DMA74PZ7.js +240 -0
- package/dist/chunk-DMA74PZ7.js.map +1 -0
- package/dist/chunk-EF46XW4Z.cjs +270 -0
- package/dist/chunk-EF46XW4Z.cjs.map +1 -0
- package/dist/chunk-EKIQE524.cjs +78 -0
- package/dist/chunk-EKIQE524.cjs.map +1 -0
- package/dist/chunk-F3SOEIN2.js +11 -0
- package/dist/chunk-F3SOEIN2.js.map +1 -0
- package/dist/chunk-FFJVCQ5R.cjs +128 -0
- package/dist/chunk-FFJVCQ5R.cjs.map +1 -0
- package/dist/chunk-FHY3K6PL.cjs +24 -0
- package/dist/chunk-FHY3K6PL.cjs.map +1 -0
- package/dist/chunk-FIUNOH6W.js +13 -0
- package/dist/chunk-FIUNOH6W.js.map +1 -0
- package/dist/chunk-FIXAVBUA.cjs +200 -0
- package/dist/chunk-FIXAVBUA.cjs.map +1 -0
- package/dist/chunk-FQ5G7J24.js +297 -0
- package/dist/chunk-FQ5G7J24.js.map +1 -0
- package/dist/chunk-G2DOD34H.js +215 -0
- package/dist/chunk-G2DOD34H.js.map +1 -0
- package/dist/chunk-GV5JQBPX.js +110 -0
- package/dist/chunk-GV5JQBPX.js.map +1 -0
- package/dist/chunk-H2CIKJQI.js +32 -0
- package/dist/chunk-H2CIKJQI.js.map +1 -0
- package/dist/chunk-HB7C7NB5.js +20 -0
- package/dist/chunk-HB7C7NB5.js.map +1 -0
- package/dist/chunk-HLW3XD5R.cjs +322 -0
- package/dist/chunk-HLW3XD5R.cjs.map +1 -0
- package/dist/chunk-HRA4FUO6.cjs +425 -0
- package/dist/chunk-HRA4FUO6.cjs.map +1 -0
- package/dist/chunk-IY7UQPDO.cjs +122 -0
- package/dist/chunk-IY7UQPDO.cjs.map +1 -0
- package/dist/chunk-JFAXLE2J.js +217 -0
- package/dist/chunk-JFAXLE2J.js.map +1 -0
- package/dist/chunk-JYMQJ32S.cjs +115 -0
- package/dist/chunk-JYMQJ32S.cjs.map +1 -0
- package/dist/chunk-KJOFWJHV.js +406 -0
- package/dist/chunk-KJOFWJHV.js.map +1 -0
- package/dist/chunk-KJZNEVYM.js +61 -0
- package/dist/chunk-KJZNEVYM.js.map +1 -0
- package/dist/chunk-KMN7JX2X.cjs +67 -0
- package/dist/chunk-KMN7JX2X.cjs.map +1 -0
- package/dist/chunk-LEE3NMNP.cjs +429 -0
- package/dist/chunk-LEE3NMNP.cjs.map +1 -0
- package/dist/chunk-LZEY55QZ.cjs +219 -0
- package/dist/chunk-LZEY55QZ.cjs.map +1 -0
- package/dist/chunk-MKJDBXX4.cjs +171 -0
- package/dist/chunk-MKJDBXX4.cjs.map +1 -0
- package/dist/chunk-MTZPVOP6.js +99 -0
- package/dist/chunk-MTZPVOP6.js.map +1 -0
- package/dist/chunk-N3QTYHRZ.cjs +134 -0
- package/dist/chunk-N3QTYHRZ.cjs.map +1 -0
- package/dist/chunk-N5EKL4DH.js +148 -0
- package/dist/chunk-N5EKL4DH.js.map +1 -0
- package/dist/chunk-NAATBUHR.cjs +231 -0
- package/dist/chunk-NAATBUHR.cjs.map +1 -0
- package/dist/chunk-NH2JVQ6V.cjs +272 -0
- package/dist/chunk-NH2JVQ6V.cjs.map +1 -0
- package/dist/chunk-NIHESA7O.js +114 -0
- package/dist/chunk-NIHESA7O.js.map +1 -0
- package/dist/chunk-NXRLGHEC.js +98 -0
- package/dist/chunk-NXRLGHEC.js.map +1 -0
- package/dist/chunk-O5HS7ZND.cjs +81 -0
- package/dist/chunk-O5HS7ZND.cjs.map +1 -0
- package/dist/chunk-O7WRE2WX.js +195 -0
- package/dist/chunk-O7WRE2WX.js.map +1 -0
- package/dist/chunk-ONWOB76P.js +319 -0
- package/dist/chunk-ONWOB76P.js.map +1 -0
- package/dist/chunk-OR5DRJCW.cjs +13 -0
- package/dist/chunk-OR5DRJCW.cjs.map +1 -0
- package/dist/chunk-ORUPC5TV.cjs +244 -0
- package/dist/chunk-ORUPC5TV.cjs.map +1 -0
- package/dist/chunk-OT36EMM5.js +22 -0
- package/dist/chunk-OT36EMM5.js.map +1 -0
- package/dist/chunk-OW2BWGST.js +238 -0
- package/dist/chunk-OW2BWGST.js.map +1 -0
- package/dist/chunk-OWPWP46L.js +92 -0
- package/dist/chunk-OWPWP46L.js.map +1 -0
- package/dist/chunk-P52GA3GJ.cjs +101 -0
- package/dist/chunk-P52GA3GJ.cjs.map +1 -0
- package/dist/chunk-PEFJAWNR.cjs +121 -0
- package/dist/chunk-PEFJAWNR.cjs.map +1 -0
- package/dist/chunk-PF3XWKE5.cjs +343 -0
- package/dist/chunk-PF3XWKE5.cjs.map +1 -0
- package/dist/chunk-QBWVTJKF.js +548 -0
- package/dist/chunk-QBWVTJKF.js.map +1 -0
- package/dist/chunk-QDGZBDBI.cjs +99 -0
- package/dist/chunk-QDGZBDBI.cjs.map +1 -0
- package/dist/chunk-QL2YTVTR.js +163 -0
- package/dist/chunk-QL2YTVTR.js.map +1 -0
- package/dist/chunk-QYJ7RQJ2.cjs +239 -0
- package/dist/chunk-QYJ7RQJ2.cjs.map +1 -0
- package/dist/chunk-QZLRB3UG.js +727 -0
- package/dist/chunk-QZLRB3UG.js.map +1 -0
- package/dist/chunk-R4DM4635.cjs +109 -0
- package/dist/chunk-R4DM4635.cjs.map +1 -0
- package/dist/chunk-RCMF6KZA.js +75 -0
- package/dist/chunk-RCMF6KZA.js.map +1 -0
- package/dist/chunk-RRQGH7C5.cjs +187 -0
- package/dist/chunk-RRQGH7C5.cjs.map +1 -0
- package/dist/chunk-S6UNPMAS.cjs +84 -0
- package/dist/chunk-S6UNPMAS.cjs.map +1 -0
- package/dist/chunk-SJ3BF4BO.cjs +199 -0
- package/dist/chunk-SJ3BF4BO.cjs.map +1 -0
- package/dist/chunk-SN52QMRT.js +58 -0
- package/dist/chunk-SN52QMRT.js.map +1 -0
- package/dist/chunk-SOFX4T7M.js +124 -0
- package/dist/chunk-SOFX4T7M.js.map +1 -0
- package/dist/chunk-SWMRCGL4.cjs +24 -0
- package/dist/chunk-SWMRCGL4.cjs.map +1 -0
- package/dist/chunk-SWV5E75F.cjs +94 -0
- package/dist/chunk-SWV5E75F.cjs.map +1 -0
- package/dist/chunk-T4ME7QCT.js +22 -0
- package/dist/chunk-T4ME7QCT.js.map +1 -0
- package/dist/chunk-TA6FVVCM.js +207 -0
- package/dist/chunk-TA6FVVCM.js.map +1 -0
- package/dist/chunk-UHSPAFY6.js +82 -0
- package/dist/chunk-UHSPAFY6.js.map +1 -0
- package/dist/chunk-ULOA7WBW.js +82 -0
- package/dist/chunk-ULOA7WBW.js.map +1 -0
- package/dist/chunk-UZUBLXVC.js +307 -0
- package/dist/chunk-UZUBLXVC.js.map +1 -0
- package/dist/chunk-VDMQCSXT.cjs +234 -0
- package/dist/chunk-VDMQCSXT.cjs.map +1 -0
- package/dist/chunk-VV4N4WY6.cjs +121 -0
- package/dist/chunk-VV4N4WY6.cjs.map +1 -0
- package/dist/chunk-VWXGUNBR.cjs +574 -0
- package/dist/chunk-VWXGUNBR.cjs.map +1 -0
- package/dist/chunk-WN2FJE23.js +474 -0
- package/dist/chunk-WN2FJE23.js.map +1 -0
- package/dist/chunk-XHJGYBYG.cjs +262 -0
- package/dist/chunk-XHJGYBYG.cjs.map +1 -0
- package/dist/chunk-XXOBTAKA.js +390 -0
- package/dist/chunk-XXOBTAKA.js.map +1 -0
- package/dist/chunk-Z3TFPXVN.cjs +84 -0
- package/dist/chunk-Z3TFPXVN.cjs.map +1 -0
- package/dist/chunk-ZJCPW6MS.cjs +54 -0
- package/dist/chunk-ZJCPW6MS.cjs.map +1 -0
- package/dist/chunk-ZO46CFVN.cjs +4 -0
- package/dist/chunk-ZO46CFVN.cjs.map +1 -0
- package/dist/chunk-ZQ4XMJH7.js +3 -0
- package/dist/chunk-ZQ4XMJH7.js.map +1 -0
- package/dist/components/Alert/index.cjs +25 -0
- package/dist/components/Alert/index.cjs.map +1 -0
- package/dist/components/Alert/index.d.cts +39 -0
- package/dist/components/Alert/index.d.ts +39 -0
- package/dist/components/Alert/index.js +4 -0
- package/dist/components/Alert/index.js.map +1 -0
- package/dist/components/AudioPlayer/index.cjs +29 -0
- package/dist/components/AudioPlayer/index.cjs.map +1 -0
- package/dist/components/AudioPlayer/index.d.cts +83 -0
- package/dist/components/AudioPlayer/index.d.ts +83 -0
- package/dist/components/AudioPlayer/index.js +4 -0
- package/dist/components/AudioPlayer/index.js.map +1 -0
- package/dist/components/AudioRecorder/index.cjs +29 -0
- package/dist/components/AudioRecorder/index.cjs.map +1 -0
- package/dist/components/AudioRecorder/index.d.cts +106 -0
- package/dist/components/AudioRecorder/index.d.ts +106 -0
- package/dist/components/AudioRecorder/index.js +4 -0
- package/dist/components/AudioRecorder/index.js.map +1 -0
- package/dist/components/Avatar/index.cjs +25 -0
- package/dist/components/Avatar/index.cjs.map +1 -0
- package/dist/components/Avatar/index.d.cts +62 -0
- package/dist/components/Avatar/index.d.ts +62 -0
- package/dist/components/Avatar/index.js +4 -0
- package/dist/components/Avatar/index.js.map +1 -0
- package/dist/components/Badge/index.cjs +17 -0
- package/dist/components/Badge/index.cjs.map +1 -0
- package/dist/components/Badge/index.d.cts +25 -0
- package/dist/components/Badge/index.d.ts +25 -0
- package/dist/components/Badge/index.js +4 -0
- package/dist/components/Badge/index.js.map +1 -0
- package/dist/components/Breadcrumb/index.cjs +17 -0
- package/dist/components/Breadcrumb/index.cjs.map +1 -0
- package/dist/components/Breadcrumb/index.d.cts +47 -0
- package/dist/components/Breadcrumb/index.d.ts +47 -0
- package/dist/components/Breadcrumb/index.js +4 -0
- package/dist/components/Breadcrumb/index.js.map +1 -0
- package/dist/components/Button/index.cjs +17 -0
- package/dist/components/Button/index.cjs.map +1 -0
- package/dist/components/Button/index.d.cts +32 -0
- package/dist/components/Button/index.d.ts +32 -0
- package/dist/components/Button/index.js +4 -0
- package/dist/components/Button/index.js.map +1 -0
- package/dist/components/Card/index.cjs +65 -0
- package/dist/components/Card/index.cjs.map +1 -0
- package/dist/components/Card/index.d.cts +119 -0
- package/dist/components/Card/index.d.ts +119 -0
- package/dist/components/Card/index.js +4 -0
- package/dist/components/Card/index.js.map +1 -0
- package/dist/components/Checkbox/index.cjs +21 -0
- package/dist/components/Checkbox/index.cjs.map +1 -0
- package/dist/components/Checkbox/index.d.cts +63 -0
- package/dist/components/Checkbox/index.d.ts +63 -0
- package/dist/components/Checkbox/index.js +4 -0
- package/dist/components/Checkbox/index.js.map +1 -0
- package/dist/components/DateInput/index.cjs +15 -0
- package/dist/components/DateInput/index.cjs.map +1 -0
- package/dist/components/DateInput/index.d.cts +55 -0
- package/dist/components/DateInput/index.d.ts +55 -0
- package/dist/components/DateInput/index.js +6 -0
- package/dist/components/DateInput/index.js.map +1 -0
- package/dist/components/Dropdown/index.cjs +35 -0
- package/dist/components/Dropdown/index.cjs.map +1 -0
- package/dist/components/Dropdown/index.d.cts +102 -0
- package/dist/components/Dropdown/index.d.ts +102 -0
- package/dist/components/Dropdown/index.js +6 -0
- package/dist/components/Dropdown/index.js.map +1 -0
- package/dist/components/Input/index.cjs +17 -0
- package/dist/components/Input/index.cjs.map +1 -0
- package/dist/components/Input/index.d.cts +32 -0
- package/dist/components/Input/index.d.ts +32 -0
- package/dist/components/Input/index.js +4 -0
- package/dist/components/Input/index.js.map +1 -0
- package/dist/components/Modal/index.cjs +43 -0
- package/dist/components/Modal/index.cjs.map +1 -0
- package/dist/components/Modal/index.d.cts +82 -0
- package/dist/components/Modal/index.d.ts +82 -0
- package/dist/components/Modal/index.js +6 -0
- package/dist/components/Modal/index.js.map +1 -0
- package/dist/components/Pagination/index.cjs +21 -0
- package/dist/components/Pagination/index.cjs.map +1 -0
- package/dist/components/Pagination/index.d.cts +78 -0
- package/dist/components/Pagination/index.d.ts +78 -0
- package/dist/components/Pagination/index.js +4 -0
- package/dist/components/Pagination/index.js.map +1 -0
- package/dist/components/PhoneInput/index.cjs +19 -0
- package/dist/components/PhoneInput/index.cjs.map +1 -0
- package/dist/components/PhoneInput/index.d.cts +80 -0
- package/dist/components/PhoneInput/index.d.ts +80 -0
- package/dist/components/PhoneInput/index.js +6 -0
- package/dist/components/PhoneInput/index.js.map +1 -0
- package/dist/components/Progress/index.cjs +29 -0
- package/dist/components/Progress/index.cjs.map +1 -0
- package/dist/components/Progress/index.d.cts +76 -0
- package/dist/components/Progress/index.d.ts +76 -0
- package/dist/components/Progress/index.js +4 -0
- package/dist/components/Progress/index.js.map +1 -0
- package/dist/components/QuickAction/index.cjs +29 -0
- package/dist/components/QuickAction/index.cjs.map +1 -0
- package/dist/components/QuickAction/index.d.cts +78 -0
- package/dist/components/QuickAction/index.d.ts +78 -0
- package/dist/components/QuickAction/index.js +4 -0
- package/dist/components/QuickAction/index.js.map +1 -0
- package/dist/components/Radio/index.cjs +21 -0
- package/dist/components/Radio/index.cjs.map +1 -0
- package/dist/components/Radio/index.d.cts +72 -0
- package/dist/components/Radio/index.d.ts +72 -0
- package/dist/components/Radio/index.js +4 -0
- package/dist/components/Radio/index.js.map +1 -0
- package/dist/components/RecordButton/index.cjs +25 -0
- package/dist/components/RecordButton/index.cjs.map +1 -0
- package/dist/components/RecordButton/index.d.cts +83 -0
- package/dist/components/RecordButton/index.d.ts +83 -0
- package/dist/components/RecordButton/index.js +4 -0
- package/dist/components/RecordButton/index.js.map +1 -0
- package/dist/components/SchedulePicker/index.cjs +45 -0
- package/dist/components/SchedulePicker/index.cjs.map +1 -0
- package/dist/components/SchedulePicker/index.d.cts +111 -0
- package/dist/components/SchedulePicker/index.d.ts +111 -0
- package/dist/components/SchedulePicker/index.js +4 -0
- package/dist/components/SchedulePicker/index.js.map +1 -0
- package/dist/components/Select/index.cjs +19 -0
- package/dist/components/Select/index.cjs.map +1 -0
- package/dist/components/Select/index.d.cts +79 -0
- package/dist/components/Select/index.d.ts +79 -0
- package/dist/components/Select/index.js +6 -0
- package/dist/components/Select/index.js.map +1 -0
- package/dist/components/Skeleton/index.cjs +29 -0
- package/dist/components/Skeleton/index.cjs.map +1 -0
- package/dist/components/Skeleton/index.d.cts +96 -0
- package/dist/components/Skeleton/index.d.ts +96 -0
- package/dist/components/Skeleton/index.js +4 -0
- package/dist/components/Skeleton/index.js.map +1 -0
- package/dist/components/Spinner/index.cjs +25 -0
- package/dist/components/Spinner/index.cjs.map +1 -0
- package/dist/components/Spinner/index.d.cts +67 -0
- package/dist/components/Spinner/index.d.ts +67 -0
- package/dist/components/Spinner/index.js +4 -0
- package/dist/components/Spinner/index.js.map +1 -0
- package/dist/components/Switch/index.cjs +21 -0
- package/dist/components/Switch/index.cjs.map +1 -0
- package/dist/components/Switch/index.d.cts +41 -0
- package/dist/components/Switch/index.d.ts +41 -0
- package/dist/components/Switch/index.js +4 -0
- package/dist/components/Switch/index.js.map +1 -0
- package/dist/components/Table/index.cjs +41 -0
- package/dist/components/Table/index.cjs.map +1 -0
- package/dist/components/Table/index.d.cts +54 -0
- package/dist/components/Table/index.d.ts +54 -0
- package/dist/components/Table/index.js +4 -0
- package/dist/components/Table/index.js.map +1 -0
- package/dist/components/Tabs/index.cjs +33 -0
- package/dist/components/Tabs/index.cjs.map +1 -0
- package/dist/components/Tabs/index.d.cts +70 -0
- package/dist/components/Tabs/index.d.ts +70 -0
- package/dist/components/Tabs/index.js +4 -0
- package/dist/components/Tabs/index.js.map +1 -0
- package/dist/components/Text/index.cjs +21 -0
- package/dist/components/Text/index.cjs.map +1 -0
- package/dist/components/Text/index.d.cts +35 -0
- package/dist/components/Text/index.d.ts +35 -0
- package/dist/components/Text/index.js +4 -0
- package/dist/components/Text/index.js.map +1 -0
- package/dist/components/Textarea/index.cjs +17 -0
- package/dist/components/Textarea/index.cjs.map +1 -0
- package/dist/components/Textarea/index.d.cts +42 -0
- package/dist/components/Textarea/index.d.ts +42 -0
- package/dist/components/Textarea/index.js +4 -0
- package/dist/components/Textarea/index.js.map +1 -0
- package/dist/components/ThemeProvider/index.cjs +36 -0
- package/dist/components/ThemeProvider/index.cjs.map +1 -0
- package/dist/components/ThemeProvider/index.d.cts +121 -0
- package/dist/components/ThemeProvider/index.d.ts +121 -0
- package/dist/components/ThemeProvider/index.js +7 -0
- package/dist/components/ThemeProvider/index.js.map +1 -0
- package/dist/components/Tooltip/index.cjs +14 -0
- package/dist/components/Tooltip/index.cjs.map +1 -0
- package/dist/components/Tooltip/index.d.cts +55 -0
- package/dist/components/Tooltip/index.d.ts +55 -0
- package/dist/components/Tooltip/index.js +5 -0
- package/dist/components/Tooltip/index.js.map +1 -0
- package/dist/components/VisuallyHidden/index.cjs +12 -0
- package/dist/components/VisuallyHidden/index.cjs.map +1 -0
- package/dist/components/VisuallyHidden/index.d.cts +20 -0
- package/dist/components/VisuallyHidden/index.d.ts +20 -0
- package/dist/components/VisuallyHidden/index.js +3 -0
- package/dist/components/VisuallyHidden/index.js.map +1 -0
- package/dist/default-LIRPABBK.js +3 -0
- package/dist/default-LIRPABBK.js.map +1 -0
- package/dist/default-ZGHKI5WF.cjs +18 -0
- package/dist/default-ZGHKI5WF.cjs.map +1 -0
- package/dist/enterprise-health-ORQQOLM3.js +3 -0
- package/dist/enterprise-health-ORQQOLM3.js.map +1 -0
- package/dist/enterprise-health-UDI25OCV.cjs +18 -0
- package/dist/enterprise-health-UDI25OCV.cjs.map +1 -0
- package/dist/hooks/index.cjs +69 -0
- package/dist/hooks/index.cjs.map +1 -0
- package/dist/hooks/index.d.cts +179 -0
- package/dist/hooks/index.d.ts +179 -0
- package/dist/hooks/index.js +8 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.cjs +33153 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +8188 -0
- package/dist/index.d.ts +8188 -0
- package/dist/index.js +32162 -0
- package/dist/index.js.map +1 -0
- package/dist/mieweb-PV2YKYO7.js +3 -0
- package/dist/mieweb-PV2YKYO7.js.map +1 -0
- package/dist/mieweb-UJABK5XX.cjs +18 -0
- package/dist/mieweb-UJABK5XX.cjs.map +1 -0
- package/dist/styles.css +2 -0
- package/dist/tailwind-preset.cjs +22 -0
- package/dist/tailwind-preset.cjs.map +1 -0
- package/dist/tailwind-preset.d.cts +39 -0
- package/dist/tailwind-preset.d.ts +39 -0
- package/dist/tailwind-preset.js +3 -0
- package/dist/tailwind-preset.js.map +1 -0
- package/dist/useTheme-B9SWu6ui.d.cts +24 -0
- package/dist/useTheme-B9SWu6ui.d.ts +24 -0
- package/dist/utils/index.cjs +63 -0
- package/dist/utils/index.cjs.map +1 -0
- package/dist/utils/index.d.cts +73 -0
- package/dist/utils/index.d.ts +73 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/waggleline-6IGA66HR.cjs +18 -0
- package/dist/waggleline-6IGA66HR.cjs.map +1 -0
- package/dist/waggleline-BMUYAFJF.js +3 -0
- package/dist/waggleline-BMUYAFJF.js.map +1 -0
- package/dist/webchart-2SLO5ICI.js +3 -0
- package/dist/webchart-2SLO5ICI.js.map +1 -0
- package/dist/webchart-EHVGP46N.cjs +18 -0
- package/dist/webchart-EHVGP46N.cjs.map +1 -0
- package/package.json +212 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkOR5DRJCW_cjs = require('./chunk-OR5DRJCW.cjs');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
|
|
8
|
+
function _interopNamespace(e) {
|
|
9
|
+
if (e && e.__esModule) return e;
|
|
10
|
+
var n = Object.create(null);
|
|
11
|
+
if (e) {
|
|
12
|
+
Object.keys(e).forEach(function (k) {
|
|
13
|
+
if (k !== 'default') {
|
|
14
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
15
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return e[k]; }
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
n.default = e;
|
|
23
|
+
return Object.freeze(n);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
27
|
+
|
|
28
|
+
var textareaVariants = classVarianceAuthority.cva(
|
|
29
|
+
[
|
|
30
|
+
"w-full px-3 py-2",
|
|
31
|
+
"border border-input rounded-lg",
|
|
32
|
+
"bg-background text-foreground",
|
|
33
|
+
"placeholder:text-muted-foreground",
|
|
34
|
+
"transition-colors duration-200",
|
|
35
|
+
"focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent",
|
|
36
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
37
|
+
"resize-y"
|
|
38
|
+
],
|
|
39
|
+
{
|
|
40
|
+
variants: {
|
|
41
|
+
size: {
|
|
42
|
+
sm: "text-sm min-h-[60px]",
|
|
43
|
+
md: "text-base min-h-[80px]",
|
|
44
|
+
lg: "text-lg min-h-[100px]"
|
|
45
|
+
},
|
|
46
|
+
hasError: {
|
|
47
|
+
true: "border-destructive focus:ring-destructive",
|
|
48
|
+
false: ""
|
|
49
|
+
},
|
|
50
|
+
resize: {
|
|
51
|
+
none: "resize-none",
|
|
52
|
+
vertical: "resize-y",
|
|
53
|
+
horizontal: "resize-x",
|
|
54
|
+
both: "resize"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
defaultVariants: {
|
|
58
|
+
size: "md",
|
|
59
|
+
hasError: false,
|
|
60
|
+
resize: "vertical"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
var Textarea = React__namespace.forwardRef(
|
|
65
|
+
({
|
|
66
|
+
className,
|
|
67
|
+
size,
|
|
68
|
+
hasError,
|
|
69
|
+
resize,
|
|
70
|
+
label,
|
|
71
|
+
hideLabel,
|
|
72
|
+
error,
|
|
73
|
+
helperText,
|
|
74
|
+
maxLength,
|
|
75
|
+
showCount = false,
|
|
76
|
+
autoResize = false,
|
|
77
|
+
id,
|
|
78
|
+
value,
|
|
79
|
+
defaultValue,
|
|
80
|
+
onChange,
|
|
81
|
+
"aria-describedby": ariaDescribedBy,
|
|
82
|
+
...props
|
|
83
|
+
}, ref) => {
|
|
84
|
+
const internalRef = React__namespace.useRef(null);
|
|
85
|
+
const [internalValue, setInternalValue] = React__namespace.useState(
|
|
86
|
+
defaultValue || ""
|
|
87
|
+
);
|
|
88
|
+
const generatedId = React__namespace.useId();
|
|
89
|
+
const textareaId = id || generatedId;
|
|
90
|
+
const errorId = `${textareaId}-error`;
|
|
91
|
+
const helperId = `${textareaId}-helper`;
|
|
92
|
+
const countId = `${textareaId}-count`;
|
|
93
|
+
React__namespace.useImperativeHandle(ref, () => internalRef.current);
|
|
94
|
+
const currentValue = value !== void 0 ? String(value) : internalValue;
|
|
95
|
+
const characterCount = currentValue.length;
|
|
96
|
+
const adjustHeight = React__namespace.useCallback(() => {
|
|
97
|
+
const textarea = internalRef.current;
|
|
98
|
+
if (textarea && autoResize) {
|
|
99
|
+
textarea.style.height = "auto";
|
|
100
|
+
textarea.style.height = `${textarea.scrollHeight}px`;
|
|
101
|
+
}
|
|
102
|
+
}, [autoResize]);
|
|
103
|
+
React__namespace.useEffect(() => {
|
|
104
|
+
adjustHeight();
|
|
105
|
+
}, [currentValue, adjustHeight]);
|
|
106
|
+
const handleChange = React__namespace.useCallback(
|
|
107
|
+
(e) => {
|
|
108
|
+
if (value === void 0) {
|
|
109
|
+
setInternalValue(e.target.value);
|
|
110
|
+
}
|
|
111
|
+
onChange?.(e);
|
|
112
|
+
adjustHeight();
|
|
113
|
+
},
|
|
114
|
+
[value, onChange, adjustHeight]
|
|
115
|
+
);
|
|
116
|
+
const describedByIds = [
|
|
117
|
+
error ? errorId : null,
|
|
118
|
+
helperText ? helperId : null,
|
|
119
|
+
showCount ? countId : null,
|
|
120
|
+
ariaDescribedBy
|
|
121
|
+
].filter(Boolean).join(" ");
|
|
122
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
123
|
+
label && /* @__PURE__ */ jsxRuntime.jsx(
|
|
124
|
+
"label",
|
|
125
|
+
{
|
|
126
|
+
htmlFor: textareaId,
|
|
127
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
128
|
+
"text-foreground text-sm font-medium",
|
|
129
|
+
hideLabel && "sr-only"
|
|
130
|
+
),
|
|
131
|
+
children: label
|
|
132
|
+
}
|
|
133
|
+
),
|
|
134
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
135
|
+
"textarea",
|
|
136
|
+
{
|
|
137
|
+
ref: internalRef,
|
|
138
|
+
id: textareaId,
|
|
139
|
+
value,
|
|
140
|
+
defaultValue: value === void 0 ? defaultValue : void 0,
|
|
141
|
+
onChange: handleChange,
|
|
142
|
+
maxLength,
|
|
143
|
+
"aria-invalid": hasError || !!error,
|
|
144
|
+
"aria-describedby": describedByIds || void 0,
|
|
145
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
146
|
+
textareaVariants({
|
|
147
|
+
size,
|
|
148
|
+
hasError: hasError || !!error,
|
|
149
|
+
resize: autoResize ? "none" : resize
|
|
150
|
+
}),
|
|
151
|
+
className
|
|
152
|
+
),
|
|
153
|
+
...props
|
|
154
|
+
}
|
|
155
|
+
),
|
|
156
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
157
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
158
|
+
error && /* @__PURE__ */ jsxRuntime.jsx("p", { id: errorId, className: "text-destructive text-sm", role: "alert", children: error }),
|
|
159
|
+
helperText && !error && /* @__PURE__ */ jsxRuntime.jsx("p", { id: helperId, className: "text-muted-foreground text-sm", children: helperText })
|
|
160
|
+
] }),
|
|
161
|
+
showCount && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
162
|
+
"p",
|
|
163
|
+
{
|
|
164
|
+
id: countId,
|
|
165
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
166
|
+
"text-muted-foreground shrink-0 text-xs",
|
|
167
|
+
maxLength && characterCount >= maxLength && "text-destructive"
|
|
168
|
+
),
|
|
169
|
+
children: [
|
|
170
|
+
characterCount,
|
|
171
|
+
maxLength && `/${maxLength}`
|
|
172
|
+
]
|
|
173
|
+
}
|
|
174
|
+
)
|
|
175
|
+
] })
|
|
176
|
+
] });
|
|
177
|
+
}
|
|
178
|
+
);
|
|
179
|
+
Textarea.displayName = "Textarea";
|
|
180
|
+
|
|
181
|
+
exports.Textarea = Textarea;
|
|
182
|
+
exports.textareaVariants = textareaVariants;
|
|
183
|
+
//# sourceMappingURL=chunk-B7YGVKTE.cjs.map
|
|
184
|
+
//# sourceMappingURL=chunk-B7YGVKTE.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Textarea/Textarea.tsx"],"names":["cva","React","jsxs","jsx","cn"],"mappings":"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","file":"chunk-B7YGVKTE.cjs","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\nconst textareaVariants = cva(\n [\n 'w-full px-3 py-2',\n 'border border-input rounded-lg',\n 'bg-background text-foreground',\n 'placeholder:text-muted-foreground',\n 'transition-colors duration-200',\n 'focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'resize-y',\n ],\n {\n variants: {\n size: {\n sm: 'text-sm min-h-[60px]',\n md: 'text-base min-h-[80px]',\n lg: 'text-lg min-h-[100px]',\n },\n hasError: {\n true: 'border-destructive focus:ring-destructive',\n false: '',\n },\n resize: {\n none: 'resize-none',\n vertical: 'resize-y',\n horizontal: 'resize-x',\n both: 'resize',\n },\n },\n defaultVariants: {\n size: 'md',\n hasError: false,\n resize: 'vertical',\n },\n }\n);\n\nexport interface TextareaProps\n extends\n Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>,\n VariantProps<typeof textareaVariants> {\n /** Label for the textarea */\n label?: string;\n /** Whether the label should be visually hidden */\n hideLabel?: boolean;\n /** Error message to display */\n error?: string;\n /** Helper text to display */\n helperText?: string;\n /** Maximum character count */\n maxLength?: number;\n /** Show character count */\n showCount?: boolean;\n /** Auto-resize based on content */\n autoResize?: boolean;\n}\n\n/**\n * A multi-line text input component with character count and auto-resize.\n *\n * @example\n * ```tsx\n * <Textarea label=\"Description\" placeholder=\"Enter a description...\" />\n * <Textarea\n * label=\"Bio\"\n * maxLength={280}\n * showCount\n * helperText=\"Tell us about yourself\"\n * />\n * ```\n */\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n className,\n size,\n hasError,\n resize,\n label,\n hideLabel,\n error,\n helperText,\n maxLength,\n showCount = false,\n autoResize = false,\n id,\n value,\n defaultValue,\n onChange,\n 'aria-describedby': ariaDescribedBy,\n ...props\n },\n ref\n ) => {\n const internalRef = React.useRef<HTMLTextAreaElement>(null);\n const [internalValue, setInternalValue] = React.useState(\n (defaultValue as string) || ''\n );\n\n const generatedId = React.useId();\n const textareaId = id || generatedId;\n const errorId = `${textareaId}-error`;\n const helperId = `${textareaId}-helper`;\n const countId = `${textareaId}-count`;\n\n // Combine refs\n React.useImperativeHandle(ref, () => internalRef.current!);\n\n // Get current value\n const currentValue = value !== undefined ? String(value) : internalValue;\n const characterCount = currentValue.length;\n\n // Auto-resize logic\n const adjustHeight = React.useCallback(() => {\n const textarea = internalRef.current;\n if (textarea && autoResize) {\n textarea.style.height = 'auto';\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n }, [autoResize]);\n\n React.useEffect(() => {\n adjustHeight();\n }, [currentValue, adjustHeight]);\n\n // Handle change\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (value === undefined) {\n setInternalValue(e.target.value);\n }\n onChange?.(e);\n adjustHeight();\n },\n [value, onChange, adjustHeight]\n );\n\n // Build aria-describedby\n const describedByIds = [\n error ? errorId : null,\n helperText ? helperId : null,\n showCount ? countId : null,\n ariaDescribedBy,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className=\"flex flex-col gap-1.5\">\n {label && (\n <label\n htmlFor={textareaId}\n className={cn(\n 'text-foreground text-sm font-medium',\n hideLabel && 'sr-only'\n )}\n >\n {label}\n </label>\n )}\n <textarea\n ref={internalRef}\n id={textareaId}\n value={value}\n defaultValue={value === undefined ? defaultValue : undefined}\n onChange={handleChange}\n maxLength={maxLength}\n aria-invalid={hasError || !!error}\n aria-describedby={describedByIds || undefined}\n className={cn(\n textareaVariants({\n size,\n hasError: hasError || !!error,\n resize: autoResize ? 'none' : resize,\n }),\n className\n )}\n {...props}\n />\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"flex-1\">\n {error && (\n <p id={errorId} className=\"text-destructive text-sm\" role=\"alert\">\n {error}\n </p>\n )}\n {helperText && !error && (\n <p id={helperId} className=\"text-muted-foreground text-sm\">\n {helperText}\n </p>\n )}\n </div>\n {showCount && (\n <p\n id={countId}\n className={cn(\n 'text-muted-foreground shrink-0 text-xs',\n maxLength && characterCount >= maxLength && 'text-destructive'\n )}\n >\n {characterCount}\n {maxLength && `/${maxLength}`}\n </p>\n )}\n </div>\n </div>\n );\n }\n);\n\nTextarea.displayName = 'Textarea';\n\nexport { Textarea, textareaVariants };\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
|
|
5
|
+
// src/hooks/useFocusTrap.ts
|
|
6
|
+
function useFocusTrap(enabled = true) {
|
|
7
|
+
const containerRef = react.useRef(null);
|
|
8
|
+
react.useEffect(() => {
|
|
9
|
+
if (!enabled || !containerRef.current) return;
|
|
10
|
+
const container = containerRef.current;
|
|
11
|
+
const focusableElements = container.querySelectorAll(
|
|
12
|
+
'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'
|
|
13
|
+
);
|
|
14
|
+
if (focusableElements.length === 0) return;
|
|
15
|
+
const firstElement = focusableElements[0];
|
|
16
|
+
const lastElement = focusableElements[focusableElements.length - 1];
|
|
17
|
+
firstElement.focus();
|
|
18
|
+
const handleKeyDown = (event) => {
|
|
19
|
+
if (event.key !== "Tab") return;
|
|
20
|
+
if (event.shiftKey) {
|
|
21
|
+
if (document.activeElement === firstElement) {
|
|
22
|
+
event.preventDefault();
|
|
23
|
+
lastElement.focus();
|
|
24
|
+
}
|
|
25
|
+
} else {
|
|
26
|
+
if (document.activeElement === lastElement) {
|
|
27
|
+
event.preventDefault();
|
|
28
|
+
firstElement.focus();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
container.addEventListener("keydown", handleKeyDown);
|
|
33
|
+
return () => container.removeEventListener("keydown", handleKeyDown);
|
|
34
|
+
}, [enabled]);
|
|
35
|
+
return containerRef;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
exports.useFocusTrap = useFocusTrap;
|
|
39
|
+
//# sourceMappingURL=chunk-BR2XGATJ.cjs.map
|
|
40
|
+
//# sourceMappingURL=chunk-BR2XGATJ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/useFocusTrap.ts"],"names":["useRef","useEffect"],"mappings":";;;;;AAsBO,SAAS,YAAA,CACd,UAAU,IAAA,EACW;AACrB,EAAA,MAAM,YAAA,GAAeA,aAAU,IAAI,CAAA;AAEnC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,IAAW,CAAC,YAAA,CAAa,OAAA,EAAS;AAEvC,IAAA,MAAM,YAAY,YAAA,CAAa,OAAA;AAC/B,IAAA,MAAM,oBAAoB,SAAA,CAAU,gBAAA;AAAA,MAClC;AAAA,KACF;AAEA,IAAA,IAAI,iBAAA,CAAkB,WAAW,CAAA,EAAG;AAEpC,IAAA,MAAM,YAAA,GAAe,kBAAkB,CAAC,CAAA;AACxC,IAAA,MAAM,WAAA,GAAc,iBAAA,CAAkB,iBAAA,CAAkB,MAAA,GAAS,CAAC,CAAA;AAGlE,IAAA,YAAA,CAAa,KAAA,EAAM;AAEnB,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAoC;AACzD,MAAA,IAAI,KAAA,CAAM,QAAQ,KAAA,EAAO;AAEzB,MAAA,IAAI,MAAM,QAAA,EAAU;AAElB,QAAA,IAAI,QAAA,CAAS,kBAAkB,YAAA,EAAc;AAC3C,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,WAAA,CAAY,KAAA,EAAM;AAAA,QACpB;AAAA,MACF,CAAA,MAAO;AAEL,QAAA,IAAI,QAAA,CAAS,kBAAkB,WAAA,EAAa;AAC1C,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,YAAA,CAAa,KAAA,EAAM;AAAA,QACrB;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,SAAA,CAAU,gBAAA,CAAiB,WAAW,aAAa,CAAA;AACnD,IAAA,OAAO,MAAM,SAAA,CAAU,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;AAAA,EACrE,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,OAAO,YAAA;AACT","file":"chunk-BR2XGATJ.cjs","sourcesContent":["import { useEffect, useRef, type RefObject } from 'react';\n\n/**\n * Hook that traps focus within a container element.\n * Essential for accessibility in modals and dialogs.\n *\n * @param enabled - Whether focus trapping is active\n * @returns ref to attach to the container element\n *\n * @example\n * ```tsx\n * function Modal({ isOpen }: { isOpen: boolean }) {\n * const containerRef = useFocusTrap<HTMLDivElement>(isOpen);\n * return (\n * <div ref={containerRef} role=\"dialog\" aria-modal=\"true\">\n * <button>First focusable</button>\n * <button>Last focusable</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useFocusTrap<T extends HTMLElement>(\n enabled = true\n): RefObject<T | null> {\n const containerRef = useRef<T>(null);\n\n useEffect(() => {\n if (!enabled || !containerRef.current) return;\n\n const container = containerRef.current;\n const focusableElements = container.querySelectorAll<HTMLElement>(\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n );\n\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n // Focus the first element when trap is enabled\n firstElement.focus();\n\n const handleKeyDown = (event: globalThis.KeyboardEvent) => {\n if (event.key !== 'Tab') return;\n\n if (event.shiftKey) {\n // Shift + Tab\n if (document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else {\n // Tab\n if (document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n };\n\n container.addEventListener('keydown', handleKeyDown);\n return () => container.removeEventListener('keydown', handleKeyDown);\n }, [enabled]);\n\n return containerRef;\n}\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/utils/phone.ts
|
|
4
|
+
function formatPhoneNumber(value) {
|
|
5
|
+
const digits = value.replace(/\D/g, "").slice(0, 10);
|
|
6
|
+
if (digits.length === 0) return "";
|
|
7
|
+
if (digits.length <= 3) return `(${digits}`;
|
|
8
|
+
if (digits.length <= 6) return `(${digits.slice(0, 3)}) ${digits.slice(3)}`;
|
|
9
|
+
return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;
|
|
10
|
+
}
|
|
11
|
+
function unformatPhoneNumber(value) {
|
|
12
|
+
return value.replace(/\D/g, "");
|
|
13
|
+
}
|
|
14
|
+
function isValidPhoneNumber(value) {
|
|
15
|
+
const digits = unformatPhoneNumber(value);
|
|
16
|
+
return digits.length === 10;
|
|
17
|
+
}
|
|
18
|
+
function isPhoneNumberEmpty(value) {
|
|
19
|
+
return unformatPhoneNumber(value).length === 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
exports.formatPhoneNumber = formatPhoneNumber;
|
|
23
|
+
exports.isPhoneNumberEmpty = isPhoneNumberEmpty;
|
|
24
|
+
exports.isValidPhoneNumber = isValidPhoneNumber;
|
|
25
|
+
exports.unformatPhoneNumber = unformatPhoneNumber;
|
|
26
|
+
//# sourceMappingURL=chunk-BTJHYGPI.cjs.map
|
|
27
|
+
//# sourceMappingURL=chunk-BTJHYGPI.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/phone.ts"],"names":[],"mappings":";;;AAOO,SAAS,kBAAkB,KAAA,EAAuB;AACvD,EAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,CAAE,KAAA,CAAM,GAAG,EAAE,CAAA;AACnD,EAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,EAAA;AAChC,EAAA,IAAI,MAAA,CAAO,MAAA,IAAU,CAAA,EAAG,OAAO,IAAI,MAAM,CAAA,CAAA;AACzC,EAAA,IAAI,MAAA,CAAO,MAAA,IAAU,CAAA,EAAG,OAAO,IAAI,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,EAAA,EAAK,MAAA,CAAO,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AACzE,EAAA,OAAO,IAAI,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,EAAA,EAAK,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,MAAA,CAAO,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AACzE;AAKO,SAAS,oBAAoB,KAAA,EAAuB;AACzD,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAChC;AAKO,SAAS,mBAAmB,KAAA,EAAwB;AACzD,EAAA,MAAM,MAAA,GAAS,oBAAoB,KAAK,CAAA;AACxC,EAAA,OAAO,OAAO,MAAA,KAAW,EAAA;AAC3B;AAKO,SAAS,mBAAmB,KAAA,EAAwB;AACzD,EAAA,OAAO,mBAAA,CAAoB,KAAK,CAAA,CAAE,MAAA,KAAW,CAAA;AAC/C","file":"chunk-BTJHYGPI.cjs","sourcesContent":["/**\n * Phone number formatting utilities\n */\n\n/**\n * Formats a phone number string to US format: (XXX) XXX-XXXX\n */\nexport function formatPhoneNumber(value: string): string {\n const digits = value.replace(/\\D/g, '').slice(0, 10);\n if (digits.length === 0) return '';\n if (digits.length <= 3) return `(${digits}`;\n if (digits.length <= 6) return `(${digits.slice(0, 3)}) ${digits.slice(3)}`;\n return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;\n}\n\n/**\n * Removes formatting from a phone number, returning only digits\n */\nexport function unformatPhoneNumber(value: string): string {\n return value.replace(/\\D/g, '');\n}\n\n/**\n * Validates if a phone number has exactly 10 digits\n */\nexport function isValidPhoneNumber(value: string): boolean {\n const digits = unformatPhoneNumber(value);\n return digits.length === 10;\n}\n\n/**\n * Checks if a phone number string is empty (no digits)\n */\nexport function isPhoneNumberEmpty(value: string): boolean {\n return unformatPhoneNumber(value).length === 0;\n}\n"]}
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk6HFFWEM3_cjs = require('./chunk-6HFFWEM3.cjs');
|
|
4
|
+
var chunkOR5DRJCW_cjs = require('./chunk-OR5DRJCW.cjs');
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var reactDom = require('react-dom');
|
|
7
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
|
|
9
|
+
function _interopNamespace(e) {
|
|
10
|
+
if (e && e.__esModule) return e;
|
|
11
|
+
var n = Object.create(null);
|
|
12
|
+
if (e) {
|
|
13
|
+
Object.keys(e).forEach(function (k) {
|
|
14
|
+
if (k !== 'default') {
|
|
15
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
16
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return e[k]; }
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
n.default = e;
|
|
24
|
+
return Object.freeze(n);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
28
|
+
|
|
29
|
+
var DEFAULT_OFFSET = 8;
|
|
30
|
+
var VIEWPORT_PADDING = 8;
|
|
31
|
+
function Tooltip({
|
|
32
|
+
content,
|
|
33
|
+
children,
|
|
34
|
+
placement: preferredPlacement = "top",
|
|
35
|
+
delay = 200,
|
|
36
|
+
disabled = false,
|
|
37
|
+
open: controlledOpen,
|
|
38
|
+
onOpenChange,
|
|
39
|
+
className,
|
|
40
|
+
maxWidth = 250,
|
|
41
|
+
offset = DEFAULT_OFFSET
|
|
42
|
+
}) {
|
|
43
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React__namespace.useState(false);
|
|
44
|
+
const [position, setPosition] = React__namespace.useState(null);
|
|
45
|
+
const [isDarkMode, setIsDarkMode] = React__namespace.useState(false);
|
|
46
|
+
const showTimeoutRef = React__namespace.useRef(
|
|
47
|
+
null
|
|
48
|
+
);
|
|
49
|
+
const hideTimeoutRef = React__namespace.useRef(
|
|
50
|
+
null
|
|
51
|
+
);
|
|
52
|
+
const isHoveringRef = React__namespace.useRef(false);
|
|
53
|
+
const wrapperRef = React__namespace.useRef(null);
|
|
54
|
+
const tooltipRef = React__namespace.useRef(null);
|
|
55
|
+
const tooltipId = React__namespace.useId();
|
|
56
|
+
const prefersReducedMotion = chunk6HFFWEM3_cjs.usePrefersReducedMotion();
|
|
57
|
+
const isControlled = controlledOpen !== void 0;
|
|
58
|
+
const isOpen = isControlled ? controlledOpen : uncontrolledOpen;
|
|
59
|
+
const setOpen = React__namespace.useCallback(
|
|
60
|
+
(value) => {
|
|
61
|
+
if (!isControlled) {
|
|
62
|
+
setUncontrolledOpen(value);
|
|
63
|
+
}
|
|
64
|
+
onOpenChange?.(value);
|
|
65
|
+
},
|
|
66
|
+
[isControlled, onOpenChange]
|
|
67
|
+
);
|
|
68
|
+
const clearTimeouts = React__namespace.useCallback(() => {
|
|
69
|
+
if (showTimeoutRef.current) {
|
|
70
|
+
clearTimeout(showTimeoutRef.current);
|
|
71
|
+
showTimeoutRef.current = null;
|
|
72
|
+
}
|
|
73
|
+
if (hideTimeoutRef.current) {
|
|
74
|
+
clearTimeout(hideTimeoutRef.current);
|
|
75
|
+
hideTimeoutRef.current = null;
|
|
76
|
+
}
|
|
77
|
+
}, []);
|
|
78
|
+
const calculatePosition = React__namespace.useCallback(() => {
|
|
79
|
+
if (!wrapperRef.current || !tooltipRef.current) return;
|
|
80
|
+
const triggerRect = wrapperRef.current.getBoundingClientRect();
|
|
81
|
+
const tooltipRect = tooltipRef.current.getBoundingClientRect();
|
|
82
|
+
const viewportWidth = window.innerWidth;
|
|
83
|
+
const viewportHeight = window.innerHeight;
|
|
84
|
+
const fitsPlacement = (p) => {
|
|
85
|
+
switch (p) {
|
|
86
|
+
case "top":
|
|
87
|
+
return triggerRect.top - tooltipRect.height - offset >= VIEWPORT_PADDING;
|
|
88
|
+
case "bottom":
|
|
89
|
+
return triggerRect.bottom + tooltipRect.height + offset <= viewportHeight - VIEWPORT_PADDING;
|
|
90
|
+
case "left":
|
|
91
|
+
return triggerRect.left - tooltipRect.width - offset >= VIEWPORT_PADDING;
|
|
92
|
+
case "right":
|
|
93
|
+
return triggerRect.right + tooltipRect.width + offset <= viewportWidth - VIEWPORT_PADDING;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
let actualPlacement = preferredPlacement;
|
|
97
|
+
if (!fitsPlacement(preferredPlacement)) {
|
|
98
|
+
const opposites = {
|
|
99
|
+
top: "bottom",
|
|
100
|
+
bottom: "top",
|
|
101
|
+
left: "right",
|
|
102
|
+
right: "left"
|
|
103
|
+
};
|
|
104
|
+
const opposite = opposites[preferredPlacement];
|
|
105
|
+
if (fitsPlacement(opposite)) {
|
|
106
|
+
actualPlacement = opposite;
|
|
107
|
+
} else {
|
|
108
|
+
const perpendicular = preferredPlacement === "top" || preferredPlacement === "bottom" ? ["right", "left"] : ["bottom", "top"];
|
|
109
|
+
for (const p of perpendicular) {
|
|
110
|
+
if (fitsPlacement(p)) {
|
|
111
|
+
actualPlacement = p;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
let top = 0;
|
|
118
|
+
let left = 0;
|
|
119
|
+
const triggerCenterX = triggerRect.left + triggerRect.width / 2;
|
|
120
|
+
const triggerCenterY = triggerRect.top + triggerRect.height / 2;
|
|
121
|
+
switch (actualPlacement) {
|
|
122
|
+
case "top":
|
|
123
|
+
top = triggerRect.top - tooltipRect.height - offset;
|
|
124
|
+
left = triggerCenterX - tooltipRect.width / 2;
|
|
125
|
+
break;
|
|
126
|
+
case "bottom":
|
|
127
|
+
top = triggerRect.bottom + offset;
|
|
128
|
+
left = triggerCenterX - tooltipRect.width / 2;
|
|
129
|
+
break;
|
|
130
|
+
case "left":
|
|
131
|
+
top = triggerCenterY - tooltipRect.height / 2;
|
|
132
|
+
left = triggerRect.left - tooltipRect.width - offset;
|
|
133
|
+
break;
|
|
134
|
+
case "right":
|
|
135
|
+
top = triggerCenterY - tooltipRect.height / 2;
|
|
136
|
+
left = triggerRect.right + offset;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
let arrowOffset = 0;
|
|
140
|
+
const idealLeft = left;
|
|
141
|
+
if (left < VIEWPORT_PADDING) {
|
|
142
|
+
left = VIEWPORT_PADDING;
|
|
143
|
+
} else if (left + tooltipRect.width > viewportWidth - VIEWPORT_PADDING) {
|
|
144
|
+
left = viewportWidth - tooltipRect.width - VIEWPORT_PADDING;
|
|
145
|
+
}
|
|
146
|
+
if (actualPlacement === "top" || actualPlacement === "bottom") {
|
|
147
|
+
arrowOffset = idealLeft - left;
|
|
148
|
+
}
|
|
149
|
+
if (top < VIEWPORT_PADDING) {
|
|
150
|
+
top = VIEWPORT_PADDING;
|
|
151
|
+
} else if (top + tooltipRect.height > viewportHeight - VIEWPORT_PADDING) {
|
|
152
|
+
top = viewportHeight - tooltipRect.height - VIEWPORT_PADDING;
|
|
153
|
+
}
|
|
154
|
+
setPosition({ top, left, actualPlacement, arrowOffset });
|
|
155
|
+
}, [preferredPlacement, offset]);
|
|
156
|
+
React__namespace.useEffect(() => {
|
|
157
|
+
if (typeof document === "undefined") return;
|
|
158
|
+
const checkDarkMode = () => {
|
|
159
|
+
setIsDarkMode(document.documentElement.classList.contains("dark"));
|
|
160
|
+
};
|
|
161
|
+
checkDarkMode();
|
|
162
|
+
const observer = new window.MutationObserver(checkDarkMode);
|
|
163
|
+
observer.observe(document.documentElement, {
|
|
164
|
+
attributes: true,
|
|
165
|
+
attributeFilter: ["class"]
|
|
166
|
+
});
|
|
167
|
+
return () => observer.disconnect();
|
|
168
|
+
}, []);
|
|
169
|
+
React__namespace.useEffect(() => {
|
|
170
|
+
if (!isOpen) {
|
|
171
|
+
setPosition(null);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
const rafId = window.requestAnimationFrame(() => {
|
|
175
|
+
calculatePosition();
|
|
176
|
+
});
|
|
177
|
+
const handleUpdate = () => calculatePosition();
|
|
178
|
+
window.addEventListener("scroll", handleUpdate, true);
|
|
179
|
+
window.addEventListener("resize", handleUpdate);
|
|
180
|
+
return () => {
|
|
181
|
+
window.cancelAnimationFrame(rafId);
|
|
182
|
+
window.removeEventListener("scroll", handleUpdate, true);
|
|
183
|
+
window.removeEventListener("resize", handleUpdate);
|
|
184
|
+
};
|
|
185
|
+
}, [isOpen, calculatePosition]);
|
|
186
|
+
const handleMouseEnter = React__namespace.useCallback(() => {
|
|
187
|
+
if (disabled) return;
|
|
188
|
+
isHoveringRef.current = true;
|
|
189
|
+
clearTimeouts();
|
|
190
|
+
showTimeoutRef.current = setTimeout(() => {
|
|
191
|
+
if (isHoveringRef.current) {
|
|
192
|
+
setOpen(true);
|
|
193
|
+
}
|
|
194
|
+
}, delay);
|
|
195
|
+
}, [disabled, delay, setOpen, clearTimeouts]);
|
|
196
|
+
const handleMouseLeave = React__namespace.useCallback(() => {
|
|
197
|
+
isHoveringRef.current = false;
|
|
198
|
+
clearTimeouts();
|
|
199
|
+
hideTimeoutRef.current = setTimeout(() => {
|
|
200
|
+
if (!isHoveringRef.current) {
|
|
201
|
+
setOpen(false);
|
|
202
|
+
}
|
|
203
|
+
}, 100);
|
|
204
|
+
}, [setOpen, clearTimeouts]);
|
|
205
|
+
const handleFocus = React__namespace.useCallback(() => {
|
|
206
|
+
if (disabled) return;
|
|
207
|
+
clearTimeouts();
|
|
208
|
+
setOpen(true);
|
|
209
|
+
}, [disabled, setOpen, clearTimeouts]);
|
|
210
|
+
const handleBlur = React__namespace.useCallback(() => {
|
|
211
|
+
clearTimeouts();
|
|
212
|
+
setOpen(false);
|
|
213
|
+
}, [setOpen, clearTimeouts]);
|
|
214
|
+
React__namespace.useEffect(() => {
|
|
215
|
+
return () => {
|
|
216
|
+
clearTimeouts();
|
|
217
|
+
};
|
|
218
|
+
}, [clearTimeouts]);
|
|
219
|
+
const trigger = React__namespace.cloneElement(children, {
|
|
220
|
+
onFocus: handleFocus,
|
|
221
|
+
onBlur: handleBlur,
|
|
222
|
+
"aria-describedby": isOpen ? tooltipId : void 0
|
|
223
|
+
});
|
|
224
|
+
const getArrowStyle = (isDark) => {
|
|
225
|
+
if (!position) return {};
|
|
226
|
+
const { actualPlacement, arrowOffset } = position;
|
|
227
|
+
const baseStyle = {
|
|
228
|
+
position: "absolute",
|
|
229
|
+
width: 0,
|
|
230
|
+
height: 0,
|
|
231
|
+
borderStyle: "solid",
|
|
232
|
+
// Must use content-box for CSS border triangle to work (Tailwind sets border-box globally)
|
|
233
|
+
boxSizing: "content-box"
|
|
234
|
+
};
|
|
235
|
+
const arrowSize = 5;
|
|
236
|
+
const arrowColor = isDark ? "#f5f5f5" : "#171717";
|
|
237
|
+
switch (actualPlacement) {
|
|
238
|
+
case "top":
|
|
239
|
+
return {
|
|
240
|
+
...baseStyle,
|
|
241
|
+
bottom: -5,
|
|
242
|
+
left: `calc(50% + ${arrowOffset}px)`,
|
|
243
|
+
transform: "translateX(-50%)",
|
|
244
|
+
borderWidth: `${arrowSize}px ${arrowSize}px 0 ${arrowSize}px`,
|
|
245
|
+
borderColor: `${arrowColor} transparent transparent transparent`
|
|
246
|
+
};
|
|
247
|
+
case "bottom":
|
|
248
|
+
return {
|
|
249
|
+
...baseStyle,
|
|
250
|
+
top: -5,
|
|
251
|
+
left: `calc(50% + ${arrowOffset}px)`,
|
|
252
|
+
transform: "translateX(-50%)",
|
|
253
|
+
borderWidth: `0 ${arrowSize}px ${arrowSize}px ${arrowSize}px`,
|
|
254
|
+
borderColor: `transparent transparent ${arrowColor} transparent`
|
|
255
|
+
};
|
|
256
|
+
case "left":
|
|
257
|
+
return {
|
|
258
|
+
...baseStyle,
|
|
259
|
+
right: -5,
|
|
260
|
+
top: "50%",
|
|
261
|
+
transform: "translateY(-50%)",
|
|
262
|
+
borderWidth: `${arrowSize}px 0 ${arrowSize}px ${arrowSize}px`,
|
|
263
|
+
borderColor: `transparent transparent transparent ${arrowColor}`
|
|
264
|
+
};
|
|
265
|
+
case "right":
|
|
266
|
+
return {
|
|
267
|
+
...baseStyle,
|
|
268
|
+
left: -5,
|
|
269
|
+
top: "50%",
|
|
270
|
+
transform: "translateY(-50%)",
|
|
271
|
+
borderWidth: `${arrowSize}px ${arrowSize}px ${arrowSize}px 0`,
|
|
272
|
+
borderColor: `transparent ${arrowColor} transparent transparent`
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
277
|
+
"div",
|
|
278
|
+
{
|
|
279
|
+
ref: wrapperRef,
|
|
280
|
+
className: "relative inline-flex",
|
|
281
|
+
onMouseEnter: handleMouseEnter,
|
|
282
|
+
onMouseLeave: handleMouseLeave,
|
|
283
|
+
children: [
|
|
284
|
+
trigger,
|
|
285
|
+
isOpen && !disabled && typeof document !== "undefined" && reactDom.createPortal(
|
|
286
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
287
|
+
"div",
|
|
288
|
+
{
|
|
289
|
+
ref: tooltipRef,
|
|
290
|
+
id: tooltipId,
|
|
291
|
+
role: "tooltip",
|
|
292
|
+
"aria-hidden": !isOpen,
|
|
293
|
+
style: {
|
|
294
|
+
position: "fixed",
|
|
295
|
+
top: position?.top ?? -9999,
|
|
296
|
+
left: position?.left ?? -9999,
|
|
297
|
+
maxWidth: maxWidth === "none" ? void 0 : maxWidth,
|
|
298
|
+
visibility: position ? "visible" : "hidden",
|
|
299
|
+
// Use inline styles to ensure they work in portals (rendered outside React tree)
|
|
300
|
+
backgroundColor: isDarkMode ? "#f5f5f5" : "#171717",
|
|
301
|
+
// neutral-100 / neutral-900
|
|
302
|
+
color: isDarkMode ? "#171717" : "#ffffff",
|
|
303
|
+
// neutral-900 / white
|
|
304
|
+
fontFamily: "var(--mieweb-font-sans, ui-sans-serif, system-ui, sans-serif)"
|
|
305
|
+
},
|
|
306
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
307
|
+
"pointer-events-none z-[9999] px-3 py-1.5 text-xs",
|
|
308
|
+
"rounded-md shadow-md",
|
|
309
|
+
"leading-normal font-semibold",
|
|
310
|
+
!prefersReducedMotion && position && "animate-fade-in",
|
|
311
|
+
className
|
|
312
|
+
),
|
|
313
|
+
children: [
|
|
314
|
+
content,
|
|
315
|
+
position && /* @__PURE__ */ jsxRuntime.jsx("span", { style: getArrowStyle(isDarkMode), "aria-hidden": "true" })
|
|
316
|
+
]
|
|
317
|
+
}
|
|
318
|
+
),
|
|
319
|
+
document.body
|
|
320
|
+
)
|
|
321
|
+
]
|
|
322
|
+
}
|
|
323
|
+
);
|
|
324
|
+
}
|
|
325
|
+
Tooltip.displayName = "Tooltip";
|
|
326
|
+
|
|
327
|
+
exports.Tooltip = Tooltip;
|
|
328
|
+
//# sourceMappingURL=chunk-BXK5TNJE.cjs.map
|
|
329
|
+
//# sourceMappingURL=chunk-BXK5TNJE.cjs.map
|