@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,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waggleline Brand Theme
|
|
3
|
+
* Generated by @mieweb/ui
|
|
4
|
+
* Experience visualization and orchestration platform for customer journeys
|
|
5
|
+
*
|
|
6
|
+
* Usage (standalone CSS):
|
|
7
|
+
* @import '@mieweb/ui/brands/waggleline.css';
|
|
8
|
+
*
|
|
9
|
+
* Usage (Tailwind CSS 4):
|
|
10
|
+
* @import '@mieweb/ui/brands/waggleline.css' layer(theme);
|
|
11
|
+
*
|
|
12
|
+
* Brand colors:
|
|
13
|
+
* - Blue (#17AEED): Primary actions, momentum
|
|
14
|
+
* - Green (#009C4E): Success, completions
|
|
15
|
+
* - Orange (#E04501): Workflow, urgency
|
|
16
|
+
* - Yellow (#FFD200): Readiness, highlights
|
|
17
|
+
* - Purple (#8B5CF6): AI, intelligence
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/* ============================================
|
|
21
|
+
Waggleline Design Tokens
|
|
22
|
+
============================================ */
|
|
23
|
+
|
|
24
|
+
:root {
|
|
25
|
+
/* Primary Color Scale - Waggleline Blue */
|
|
26
|
+
--mieweb-primary-50: #e6f7ff;
|
|
27
|
+
--mieweb-primary-100: #bae7ff;
|
|
28
|
+
--mieweb-primary-200: #91d5ff;
|
|
29
|
+
--mieweb-primary-300: #69c0ff;
|
|
30
|
+
--mieweb-primary-400: #40a9ff;
|
|
31
|
+
--mieweb-primary-500: #17aeed;
|
|
32
|
+
--mieweb-primary-600: #00a4eb;
|
|
33
|
+
--mieweb-primary-700: #0084c8;
|
|
34
|
+
--mieweb-primary-800: #006aa5;
|
|
35
|
+
--mieweb-primary-900: #004d7a;
|
|
36
|
+
--mieweb-primary-950: #003355;
|
|
37
|
+
|
|
38
|
+
/* Light Mode Semantic Colors */
|
|
39
|
+
--mieweb-background: #fafafa;
|
|
40
|
+
--mieweb-foreground: #1a1a1a;
|
|
41
|
+
--mieweb-card: #ffffff;
|
|
42
|
+
--mieweb-card-foreground: #1a1a1a;
|
|
43
|
+
--mieweb-muted: #f5f5f5;
|
|
44
|
+
--mieweb-muted-foreground: #6b7280;
|
|
45
|
+
--mieweb-border: #e5e7eb;
|
|
46
|
+
--mieweb-input: #e5e7eb;
|
|
47
|
+
--mieweb-ring: #17aeed;
|
|
48
|
+
--mieweb-destructive: #ef4444;
|
|
49
|
+
--mieweb-destructive-foreground: #ffffff;
|
|
50
|
+
--mieweb-success: #009c4e;
|
|
51
|
+
--mieweb-success-foreground: #ffffff;
|
|
52
|
+
--mieweb-warning: #ffd200;
|
|
53
|
+
--mieweb-warning-foreground: #1a1a1a;
|
|
54
|
+
|
|
55
|
+
/* Typography */
|
|
56
|
+
--mieweb-font-sans: 'Inter', ui-sans-serif, system-ui, sans-serif;
|
|
57
|
+
--mieweb-font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
58
|
+
|
|
59
|
+
/* Border Radius */
|
|
60
|
+
--mieweb-radius-none: 0;
|
|
61
|
+
--mieweb-radius-sm: 0.25rem;
|
|
62
|
+
--mieweb-radius-md: 0.5rem;
|
|
63
|
+
--mieweb-radius-lg: 0.75rem;
|
|
64
|
+
--mieweb-radius-xl: 1rem;
|
|
65
|
+
--mieweb-radius-2xl: 1.5rem;
|
|
66
|
+
--mieweb-radius-full: 9999px;
|
|
67
|
+
|
|
68
|
+
/* Shadows (Waggleline uses soft shadows) */
|
|
69
|
+
--mieweb-shadow-card:
|
|
70
|
+
0 2px 8px -2px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.06);
|
|
71
|
+
--mieweb-shadow-dropdown:
|
|
72
|
+
0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
|
73
|
+
--mieweb-shadow-modal:
|
|
74
|
+
0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.08);
|
|
75
|
+
|
|
76
|
+
/* Waggleline Brand Colors (for reference) */
|
|
77
|
+
--waggleline-blue: #17aeed;
|
|
78
|
+
--waggleline-green: #009c4e;
|
|
79
|
+
--waggleline-orange: #e04501;
|
|
80
|
+
--waggleline-yellow: #ffd200;
|
|
81
|
+
--waggleline-purple: #8b5cf6;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* Dark Mode - Charcoal based (not pure black) */
|
|
85
|
+
[data-theme='dark'],
|
|
86
|
+
.dark {
|
|
87
|
+
--mieweb-background: #1f2937;
|
|
88
|
+
--mieweb-foreground: #f9fafb;
|
|
89
|
+
--mieweb-card: #2d3748;
|
|
90
|
+
--mieweb-card-foreground: #f9fafb;
|
|
91
|
+
--mieweb-muted: #374151;
|
|
92
|
+
--mieweb-muted-foreground: #9ca3af;
|
|
93
|
+
--mieweb-border: #374151;
|
|
94
|
+
--mieweb-input: #374151;
|
|
95
|
+
--mieweb-ring: #17aeed;
|
|
96
|
+
--mieweb-destructive: #dc2626;
|
|
97
|
+
--mieweb-destructive-foreground: #f9fafb;
|
|
98
|
+
--mieweb-success: #009c4e;
|
|
99
|
+
--mieweb-success-foreground: #f9fafb;
|
|
100
|
+
--mieweb-warning: #ffd200;
|
|
101
|
+
--mieweb-warning-foreground: #1a1a1a;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* ============================================
|
|
105
|
+
Typography Base
|
|
106
|
+
============================================ */
|
|
107
|
+
|
|
108
|
+
body {
|
|
109
|
+
font-family: var(--mieweb-font-sans);
|
|
110
|
+
background-color: var(--mieweb-background);
|
|
111
|
+
color: var(--mieweb-foreground);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
code,
|
|
115
|
+
pre,
|
|
116
|
+
kbd {
|
|
117
|
+
font-family: var(--mieweb-font-mono);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* ============================================
|
|
121
|
+
Smooth Theme Transitions
|
|
122
|
+
============================================ */
|
|
123
|
+
|
|
124
|
+
*,
|
|
125
|
+
*::before,
|
|
126
|
+
*::after {
|
|
127
|
+
transition:
|
|
128
|
+
background-color 0.3s ease,
|
|
129
|
+
border-color 0.3s ease,
|
|
130
|
+
color 0.3s ease;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* Disable transitions on page load */
|
|
134
|
+
.no-transitions *,
|
|
135
|
+
.no-transitions *::before,
|
|
136
|
+
.no-transitions *::after {
|
|
137
|
+
transition: none !important;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/* ============================================
|
|
141
|
+
Focus Ring Utilities
|
|
142
|
+
============================================ */
|
|
143
|
+
|
|
144
|
+
.focus-ring {
|
|
145
|
+
outline: 2px solid transparent;
|
|
146
|
+
outline-offset: 2px;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.focus-ring:focus-visible {
|
|
150
|
+
outline: 2px solid var(--mieweb-ring);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/* ============================================
|
|
154
|
+
Waggleline Specific Utilities
|
|
155
|
+
============================================ */
|
|
156
|
+
|
|
157
|
+
/* Card hover effect */
|
|
158
|
+
.card-hover {
|
|
159
|
+
transition: all 0.2s ease-out;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.card-hover:hover {
|
|
163
|
+
box-shadow: var(--mieweb-shadow-modal);
|
|
164
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebChart Brand Theme
|
|
3
|
+
* Generated by @mieweb/ui
|
|
4
|
+
* Future-ready electronic health record system
|
|
5
|
+
*
|
|
6
|
+
* Usage (standalone CSS):
|
|
7
|
+
* @import '@mieweb/ui/brands/webchart.css';
|
|
8
|
+
*
|
|
9
|
+
* Usage (Tailwind CSS 4):
|
|
10
|
+
* @import '@mieweb/ui/brands/webchart.css' layer(theme);
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/* ============================================
|
|
14
|
+
WebChart Design Tokens
|
|
15
|
+
============================================ */
|
|
16
|
+
|
|
17
|
+
:root {
|
|
18
|
+
/* Primary Color Scale - WebChart Orange */
|
|
19
|
+
--mieweb-primary-50: #fff7ed;
|
|
20
|
+
--mieweb-primary-100: #ffedd5;
|
|
21
|
+
--mieweb-primary-200: #fed7aa;
|
|
22
|
+
--mieweb-primary-300: #fdba74;
|
|
23
|
+
--mieweb-primary-400: #fb923c;
|
|
24
|
+
--mieweb-primary-500: #f5841f;
|
|
25
|
+
--mieweb-primary-600: #ea580c;
|
|
26
|
+
--mieweb-primary-700: #c2410c;
|
|
27
|
+
--mieweb-primary-800: #9a3412;
|
|
28
|
+
--mieweb-primary-900: #7c2d12;
|
|
29
|
+
--mieweb-primary-950: #431407;
|
|
30
|
+
|
|
31
|
+
/* Light Mode Semantic Colors */
|
|
32
|
+
--mieweb-background: #ffffff;
|
|
33
|
+
--mieweb-foreground: #171717;
|
|
34
|
+
--mieweb-card: #ffffff;
|
|
35
|
+
--mieweb-card-foreground: #171717;
|
|
36
|
+
--mieweb-muted: #f5f5f5;
|
|
37
|
+
--mieweb-muted-foreground: #737373;
|
|
38
|
+
--mieweb-border: #e5e7eb;
|
|
39
|
+
--mieweb-input: #e5e7eb;
|
|
40
|
+
--mieweb-ring: #f5841f;
|
|
41
|
+
--mieweb-destructive: #ef4444;
|
|
42
|
+
--mieweb-destructive-foreground: #ffffff;
|
|
43
|
+
--mieweb-success: #22c55e;
|
|
44
|
+
--mieweb-success-foreground: #ffffff;
|
|
45
|
+
--mieweb-warning: #f59e0b;
|
|
46
|
+
--mieweb-warning-foreground: #ffffff;
|
|
47
|
+
|
|
48
|
+
/* Typography */
|
|
49
|
+
--mieweb-font-sans: 'Inter', ui-sans-serif, system-ui, sans-serif;
|
|
50
|
+
--mieweb-font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
51
|
+
|
|
52
|
+
/* Border Radius */
|
|
53
|
+
--mieweb-radius-none: 0;
|
|
54
|
+
--mieweb-radius-sm: 0.25rem;
|
|
55
|
+
--mieweb-radius-md: 0.5rem;
|
|
56
|
+
--mieweb-radius-lg: 0.75rem;
|
|
57
|
+
--mieweb-radius-xl: 1rem;
|
|
58
|
+
--mieweb-radius-2xl: 1.5rem;
|
|
59
|
+
--mieweb-radius-full: 9999px;
|
|
60
|
+
|
|
61
|
+
/* Shadows */
|
|
62
|
+
--mieweb-shadow-card:
|
|
63
|
+
0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
|
64
|
+
--mieweb-shadow-dropdown:
|
|
65
|
+
0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
|
66
|
+
--mieweb-shadow-modal:
|
|
67
|
+
0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* Dark Mode */
|
|
71
|
+
[data-theme='dark'],
|
|
72
|
+
.dark {
|
|
73
|
+
--mieweb-background: #171717;
|
|
74
|
+
--mieweb-foreground: #fafafa;
|
|
75
|
+
--mieweb-card: #262626;
|
|
76
|
+
--mieweb-card-foreground: #fafafa;
|
|
77
|
+
--mieweb-muted: #404040;
|
|
78
|
+
--mieweb-muted-foreground: #a1a1aa;
|
|
79
|
+
--mieweb-border: #404040;
|
|
80
|
+
--mieweb-input: #404040;
|
|
81
|
+
--mieweb-ring: #f5841f;
|
|
82
|
+
--mieweb-destructive: #dc2626;
|
|
83
|
+
--mieweb-destructive-foreground: #fafafa;
|
|
84
|
+
--mieweb-success: #16a34a;
|
|
85
|
+
--mieweb-success-foreground: #fafafa;
|
|
86
|
+
--mieweb-warning: #d97706;
|
|
87
|
+
--mieweb-warning-foreground: #fafafa;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* ============================================
|
|
91
|
+
Typography Base
|
|
92
|
+
============================================ */
|
|
93
|
+
|
|
94
|
+
body {
|
|
95
|
+
font-family: var(--mieweb-font-sans);
|
|
96
|
+
background-color: var(--mieweb-background);
|
|
97
|
+
color: var(--mieweb-foreground);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
code,
|
|
101
|
+
pre,
|
|
102
|
+
kbd,
|
|
103
|
+
samp {
|
|
104
|
+
font-family: var(--mieweb-font-mono);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/* ============================================
|
|
108
|
+
Utility Classes
|
|
109
|
+
============================================ */
|
|
110
|
+
|
|
111
|
+
.mieweb-card {
|
|
112
|
+
background-color: var(--mieweb-card);
|
|
113
|
+
color: var(--mieweb-card-foreground);
|
|
114
|
+
border-radius: var(--mieweb-radius-lg);
|
|
115
|
+
box-shadow: var(--mieweb-shadow-card);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.mieweb-button-primary {
|
|
119
|
+
background-color: var(--mieweb-primary-500);
|
|
120
|
+
color: white;
|
|
121
|
+
border-radius: var(--mieweb-radius-md);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.mieweb-button-primary:hover {
|
|
125
|
+
background-color: var(--mieweb-primary-600);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.mieweb-input {
|
|
129
|
+
border: 1px solid var(--mieweb-input);
|
|
130
|
+
border-radius: var(--mieweb-radius-md);
|
|
131
|
+
background-color: var(--mieweb-background);
|
|
132
|
+
color: var(--mieweb-foreground);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.mieweb-input:focus {
|
|
136
|
+
outline: none;
|
|
137
|
+
box-shadow: 0 0 0 2px var(--mieweb-ring);
|
|
138
|
+
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { useClickOutside } from './chunk-OT36EMM5.js';
|
|
2
|
+
import { useEscapeKey } from './chunk-T4ME7QCT.js';
|
|
3
|
+
import { cn } from './chunk-F3SOEIN2.js';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var placementStyles = {
|
|
8
|
+
"bottom-start": "top-full left-0 mt-2",
|
|
9
|
+
"bottom-end": "top-full right-0 mt-2",
|
|
10
|
+
bottom: "top-full left-1/2 -translate-x-1/2 mt-2"
|
|
11
|
+
};
|
|
12
|
+
function Dropdown({
|
|
13
|
+
trigger,
|
|
14
|
+
children,
|
|
15
|
+
open: controlledOpen,
|
|
16
|
+
onOpenChange,
|
|
17
|
+
placement = "bottom-start",
|
|
18
|
+
className,
|
|
19
|
+
width = "auto",
|
|
20
|
+
disabled = false
|
|
21
|
+
}) {
|
|
22
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false);
|
|
23
|
+
const containerRef = React.useRef(null);
|
|
24
|
+
const menuId = React.useId();
|
|
25
|
+
const isControlled = controlledOpen !== void 0;
|
|
26
|
+
const isOpen = isControlled ? controlledOpen : uncontrolledOpen;
|
|
27
|
+
const setOpen = React.useCallback(
|
|
28
|
+
(value) => {
|
|
29
|
+
if (!isControlled) {
|
|
30
|
+
setUncontrolledOpen(value);
|
|
31
|
+
}
|
|
32
|
+
onOpenChange?.(value);
|
|
33
|
+
},
|
|
34
|
+
[isControlled, onOpenChange]
|
|
35
|
+
);
|
|
36
|
+
const handleToggle = React.useCallback(() => {
|
|
37
|
+
if (!disabled) {
|
|
38
|
+
setOpen(!isOpen);
|
|
39
|
+
}
|
|
40
|
+
}, [disabled, isOpen, setOpen]);
|
|
41
|
+
const handleClose = React.useCallback(() => {
|
|
42
|
+
setOpen(false);
|
|
43
|
+
}, [setOpen]);
|
|
44
|
+
useClickOutside(containerRef, handleClose);
|
|
45
|
+
useEscapeKey(handleClose, isOpen);
|
|
46
|
+
const triggerElement = React.cloneElement(trigger, {
|
|
47
|
+
onClick: handleToggle,
|
|
48
|
+
"aria-haspopup": "menu",
|
|
49
|
+
"aria-expanded": isOpen,
|
|
50
|
+
"aria-controls": isOpen ? menuId : void 0,
|
|
51
|
+
disabled: disabled || trigger.props.disabled
|
|
52
|
+
});
|
|
53
|
+
const widthStyle = typeof width === "number" ? { width: `${width}px` } : width === "trigger" ? { minWidth: "100%" } : {};
|
|
54
|
+
return /* @__PURE__ */ jsxs("div", { ref: containerRef, className: "relative inline-flex", children: [
|
|
55
|
+
triggerElement,
|
|
56
|
+
isOpen && /* @__PURE__ */ jsx(
|
|
57
|
+
"div",
|
|
58
|
+
{
|
|
59
|
+
id: menuId,
|
|
60
|
+
role: "menu",
|
|
61
|
+
style: widthStyle,
|
|
62
|
+
className: cn(
|
|
63
|
+
"absolute z-50 min-w-[12rem]",
|
|
64
|
+
"rounded-xl border border-neutral-200 bg-white shadow-lg",
|
|
65
|
+
"dark:border-neutral-700 dark:bg-neutral-800",
|
|
66
|
+
"animate-in fade-in zoom-in-95 duration-100",
|
|
67
|
+
placementStyles[placement],
|
|
68
|
+
className
|
|
69
|
+
),
|
|
70
|
+
children
|
|
71
|
+
}
|
|
72
|
+
)
|
|
73
|
+
] });
|
|
74
|
+
}
|
|
75
|
+
Dropdown.displayName = "Dropdown";
|
|
76
|
+
var DropdownHeader = React.forwardRef(
|
|
77
|
+
({ className, avatar, title, subtitle, children, ...props }, ref) => {
|
|
78
|
+
return /* @__PURE__ */ jsxs(
|
|
79
|
+
"div",
|
|
80
|
+
{
|
|
81
|
+
ref,
|
|
82
|
+
className: cn(
|
|
83
|
+
"border-b border-neutral-200 p-4 dark:border-neutral-700",
|
|
84
|
+
className
|
|
85
|
+
),
|
|
86
|
+
...props,
|
|
87
|
+
children: [
|
|
88
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
89
|
+
avatar,
|
|
90
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
91
|
+
/* @__PURE__ */ jsx("p", { className: "truncate text-sm font-semibold text-neutral-900 dark:text-white", children: title }),
|
|
92
|
+
subtitle && /* @__PURE__ */ jsx("p", { className: "truncate text-xs text-neutral-500 dark:text-neutral-400", children: subtitle })
|
|
93
|
+
] })
|
|
94
|
+
] }),
|
|
95
|
+
children
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
DropdownHeader.displayName = "DropdownHeader";
|
|
102
|
+
var DropdownContent = React.forwardRef(
|
|
103
|
+
({ className, ...props }, ref) => {
|
|
104
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn("p-2", className), ...props });
|
|
105
|
+
}
|
|
106
|
+
);
|
|
107
|
+
DropdownContent.displayName = "DropdownContent";
|
|
108
|
+
var DropdownItem = React.forwardRef(
|
|
109
|
+
({ className, icon, variant = "default", children, ...props }, ref) => {
|
|
110
|
+
return /* @__PURE__ */ jsxs(
|
|
111
|
+
"button",
|
|
112
|
+
{
|
|
113
|
+
ref,
|
|
114
|
+
role: "menuitem",
|
|
115
|
+
className: cn(
|
|
116
|
+
"flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left text-sm",
|
|
117
|
+
"transition-colors duration-150",
|
|
118
|
+
"focus:outline-none",
|
|
119
|
+
variant === "default" && [
|
|
120
|
+
"text-neutral-700 dark:text-neutral-300",
|
|
121
|
+
"hover:bg-neutral-100 dark:hover:bg-neutral-700",
|
|
122
|
+
"focus:bg-neutral-100 dark:focus:bg-neutral-700"
|
|
123
|
+
],
|
|
124
|
+
variant === "danger" && [
|
|
125
|
+
"text-red-600 dark:text-red-400",
|
|
126
|
+
"hover:bg-red-50 dark:hover:bg-red-900/20",
|
|
127
|
+
"focus:bg-red-50 dark:focus:bg-red-900/20"
|
|
128
|
+
],
|
|
129
|
+
className
|
|
130
|
+
),
|
|
131
|
+
...props,
|
|
132
|
+
children: [
|
|
133
|
+
icon && /* @__PURE__ */ jsx("span", { className: "h-4 w-4 shrink-0", children: icon }),
|
|
134
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium", children })
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
);
|
|
140
|
+
DropdownItem.displayName = "DropdownItem";
|
|
141
|
+
function DropdownSeparator({ className }) {
|
|
142
|
+
return /* @__PURE__ */ jsx(
|
|
143
|
+
"hr",
|
|
144
|
+
{
|
|
145
|
+
className: cn(
|
|
146
|
+
"border-t border-neutral-200 dark:border-neutral-700",
|
|
147
|
+
className
|
|
148
|
+
)
|
|
149
|
+
}
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
DropdownSeparator.displayName = "DropdownSeparator";
|
|
153
|
+
function DropdownLabel({
|
|
154
|
+
className,
|
|
155
|
+
children
|
|
156
|
+
}) {
|
|
157
|
+
return /* @__PURE__ */ jsx(
|
|
158
|
+
"div",
|
|
159
|
+
{
|
|
160
|
+
className: cn(
|
|
161
|
+
"px-3 py-1.5 text-xs font-semibold tracking-wider uppercase",
|
|
162
|
+
"text-neutral-500 dark:text-neutral-400",
|
|
163
|
+
className
|
|
164
|
+
),
|
|
165
|
+
children
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
DropdownLabel.displayName = "DropdownLabel";
|
|
170
|
+
|
|
171
|
+
export { Dropdown, DropdownContent, DropdownHeader, DropdownItem, DropdownLabel, DropdownSeparator };
|
|
172
|
+
//# sourceMappingURL=chunk-265CFCCX.js.map
|
|
173
|
+
//# sourceMappingURL=chunk-265CFCCX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Dropdown/Dropdown.tsx"],"names":[],"mappings":"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","file":"chunk-265CFCCX.js","sourcesContent":["import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport { useClickOutside } from '../../hooks/useClickOutside';\nimport { useEscapeKey } from '../../hooks/useEscapeKey';\n\nexport type DropdownPlacement = 'bottom-start' | 'bottom-end' | 'bottom';\n\nexport interface DropdownProps {\n /** The trigger element (usually a button) */\n trigger: React.ReactElement<{\n onClick?: () => void;\n disabled?: boolean;\n 'aria-haspopup'?: string;\n 'aria-expanded'?: boolean;\n 'aria-controls'?: string;\n }>;\n /** Dropdown content */\n children: React.ReactNode;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Placement of the dropdown */\n placement?: DropdownPlacement;\n /** Additional class name for the dropdown menu */\n className?: string;\n /** Width of the dropdown menu */\n width?: 'auto' | 'trigger' | number;\n /** Whether the dropdown is disabled */\n disabled?: boolean;\n}\n\nconst placementStyles: Record<DropdownPlacement, string> = {\n 'bottom-start': 'top-full left-0 mt-2',\n 'bottom-end': 'top-full right-0 mt-2',\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\n};\n\n/**\n * An accessible dropdown menu component.\n *\n * @example\n * ```tsx\n * <Dropdown\n * trigger={<Button>Options</Button>}\n * >\n * <DropdownItem onClick={() => console.log('Edit')}>Edit</DropdownItem>\n * <DropdownItem onClick={() => console.log('Delete')} variant=\"danger\">Delete</DropdownItem>\n * </Dropdown>\n * ```\n */\nfunction Dropdown({\n trigger,\n children,\n open: controlledOpen,\n onOpenChange,\n placement = 'bottom-start',\n className,\n width = 'auto',\n disabled = false,\n}: DropdownProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const menuId = React.useId();\n\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : uncontrolledOpen;\n\n const setOpen = React.useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(value);\n }\n onOpenChange?.(value);\n },\n [isControlled, onOpenChange]\n );\n\n const handleToggle = React.useCallback(() => {\n if (!disabled) {\n setOpen(!isOpen);\n }\n }, [disabled, isOpen, setOpen]);\n\n const handleClose = React.useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n useClickOutside(containerRef, handleClose);\n useEscapeKey(handleClose, isOpen);\n\n // Clone trigger to add event handlers\n const triggerElement = React.cloneElement(trigger, {\n onClick: handleToggle,\n 'aria-haspopup': 'menu',\n 'aria-expanded': isOpen,\n 'aria-controls': isOpen ? menuId : undefined,\n disabled: disabled || trigger.props.disabled,\n });\n\n const widthStyle =\n typeof width === 'number'\n ? { width: `${width}px` }\n : width === 'trigger'\n ? { minWidth: '100%' }\n : {};\n\n return (\n <div ref={containerRef} className=\"relative inline-flex\">\n {triggerElement}\n {isOpen && (\n <div\n id={menuId}\n role=\"menu\"\n style={widthStyle}\n className={cn(\n 'absolute z-50 min-w-[12rem]',\n 'rounded-xl border border-neutral-200 bg-white shadow-lg',\n 'dark:border-neutral-700 dark:bg-neutral-800',\n 'animate-in fade-in zoom-in-95 duration-100',\n placementStyles[placement],\n className\n )}\n >\n {children}\n </div>\n )}\n </div>\n );\n}\n\nDropdown.displayName = 'Dropdown';\n\n// ============================================================================\n// Dropdown Header Component\n// ============================================================================\n\nexport interface DropdownHeaderProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'title'\n> {\n /** Avatar element or image */\n avatar?: React.ReactNode;\n /** Primary text (e.g., user name) */\n title: React.ReactNode;\n /** Secondary text (e.g., email) */\n subtitle?: React.ReactNode;\n}\n\n/**\n * A header section for dropdown menus, typically used for user info.\n *\n * @example\n * ```tsx\n * <DropdownHeader\n * avatar={<Avatar name=\"John Doe\" />}\n * title=\"John Doe\"\n * subtitle=\"john@example.com\"\n * />\n * ```\n */\nconst DropdownHeader = React.forwardRef<HTMLDivElement, DropdownHeaderProps>(\n ({ className, avatar, title, subtitle, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'border-b border-neutral-200 p-4 dark:border-neutral-700',\n className\n )}\n {...props}\n >\n <div className=\"flex items-center gap-3\">\n {avatar}\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate text-sm font-semibold text-neutral-900 dark:text-white\">\n {title}\n </p>\n {subtitle && (\n <p className=\"truncate text-xs text-neutral-500 dark:text-neutral-400\">\n {subtitle}\n </p>\n )}\n </div>\n </div>\n {children}\n </div>\n );\n }\n);\n\nDropdownHeader.displayName = 'DropdownHeader';\n\n// ============================================================================\n// Dropdown Content Component\n// ============================================================================\n\nexport type DropdownContentProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * A container for dropdown menu items with proper padding.\n */\nconst DropdownContent = React.forwardRef<HTMLDivElement, DropdownContentProps>(\n ({ className, ...props }, ref) => {\n return <div ref={ref} className={cn('p-2', className)} {...props} />;\n }\n);\n\nDropdownContent.displayName = 'DropdownContent';\n\n// ============================================================================\n// Dropdown Item Component\n// ============================================================================\n\nexport interface DropdownItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Icon to display before the label */\n icon?: React.ReactNode;\n /** Danger variant for destructive actions */\n variant?: 'default' | 'danger';\n}\n\n/**\n * An item within a Dropdown menu.\n */\nconst DropdownItem = React.forwardRef<HTMLButtonElement, DropdownItemProps>(\n ({ className, icon, variant = 'default', children, ...props }, ref) => {\n return (\n <button\n ref={ref}\n role=\"menuitem\"\n className={cn(\n 'flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left text-sm',\n 'transition-colors duration-150',\n 'focus:outline-none',\n variant === 'default' && [\n 'text-neutral-700 dark:text-neutral-300',\n 'hover:bg-neutral-100 dark:hover:bg-neutral-700',\n 'focus:bg-neutral-100 dark:focus:bg-neutral-700',\n ],\n variant === 'danger' && [\n 'text-red-600 dark:text-red-400',\n 'hover:bg-red-50 dark:hover:bg-red-900/20',\n 'focus:bg-red-50 dark:focus:bg-red-900/20',\n ],\n className\n )}\n {...props}\n >\n {icon && <span className=\"h-4 w-4 shrink-0\">{icon}</span>}\n <span className=\"font-medium\">{children}</span>\n </button>\n );\n }\n);\n\nDropdownItem.displayName = 'DropdownItem';\n\n// ============================================================================\n// Dropdown Separator Component\n// ============================================================================\n\n/**\n * A separator between dropdown items.\n */\nfunction DropdownSeparator({ className }: { className?: string }) {\n return (\n <hr\n className={cn(\n 'border-t border-neutral-200 dark:border-neutral-700',\n className\n )}\n />\n );\n}\n\nDropdownSeparator.displayName = 'DropdownSeparator';\n\n// ============================================================================\n// Dropdown Label Component\n// ============================================================================\n\n/**\n * A label/header for a group of dropdown items.\n */\nfunction DropdownLabel({\n className,\n children,\n}: {\n className?: string;\n children: React.ReactNode;\n}) {\n return (\n <div\n className={cn(\n 'px-3 py-1.5 text-xs font-semibold tracking-wider uppercase',\n 'text-neutral-500 dark:text-neutral-400',\n className\n )}\n >\n {children}\n </div>\n );\n}\n\nDropdownLabel.displayName = 'DropdownLabel';\n\nexport {\n Dropdown,\n DropdownHeader,\n DropdownContent,\n DropdownItem,\n DropdownSeparator,\n DropdownLabel,\n};\n"]}
|
|
@@ -0,0 +1,139 @@
|
|
|
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 avatarVariants = classVarianceAuthority.cva(
|
|
29
|
+
[
|
|
30
|
+
"relative inline-flex items-center justify-center",
|
|
31
|
+
"rounded-full overflow-hidden",
|
|
32
|
+
"bg-primary-800 text-white font-semibold"
|
|
33
|
+
],
|
|
34
|
+
{
|
|
35
|
+
variants: {
|
|
36
|
+
size: {
|
|
37
|
+
xs: "h-6 w-6 text-xs",
|
|
38
|
+
sm: "h-8 w-8 text-sm",
|
|
39
|
+
md: "h-10 w-10 text-sm",
|
|
40
|
+
lg: "h-12 w-12 text-base",
|
|
41
|
+
xl: "h-16 w-16 text-lg"
|
|
42
|
+
},
|
|
43
|
+
ring: {
|
|
44
|
+
true: "ring-2 ring-primary-400/30",
|
|
45
|
+
false: ""
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
defaultVariants: {
|
|
49
|
+
size: "md",
|
|
50
|
+
ring: false
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
function getInitials(name) {
|
|
55
|
+
return name.split(" ").map((part) => part[0]).join("").toUpperCase().slice(0, 2);
|
|
56
|
+
}
|
|
57
|
+
var Avatar = React__namespace.forwardRef(
|
|
58
|
+
({ className, src, alt, name, fallback, size, ring, ...props }, ref) => {
|
|
59
|
+
const [imageError, setImageError] = React__namespace.useState(false);
|
|
60
|
+
React__namespace.useEffect(() => {
|
|
61
|
+
setImageError(false);
|
|
62
|
+
}, [src]);
|
|
63
|
+
const showImage = src && !imageError;
|
|
64
|
+
const initials = name ? getInitials(name) : null;
|
|
65
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
66
|
+
"div",
|
|
67
|
+
{
|
|
68
|
+
ref,
|
|
69
|
+
className: chunkOR5DRJCW_cjs.cn(avatarVariants({ size, ring }), className),
|
|
70
|
+
...props,
|
|
71
|
+
children: showImage ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
72
|
+
"img",
|
|
73
|
+
{
|
|
74
|
+
src,
|
|
75
|
+
alt: alt || name || "Avatar",
|
|
76
|
+
className: "h-full w-full object-cover",
|
|
77
|
+
onError: () => setImageError(true)
|
|
78
|
+
}
|
|
79
|
+
) : React__namespace.isValidElement(fallback) ? fallback : initials ? initials : /* @__PURE__ */ jsxRuntime.jsx(
|
|
80
|
+
"svg",
|
|
81
|
+
{
|
|
82
|
+
className: "h-[60%] w-[60%] text-white/80",
|
|
83
|
+
fill: "currentColor",
|
|
84
|
+
viewBox: "0 0 24 24",
|
|
85
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" })
|
|
86
|
+
}
|
|
87
|
+
)
|
|
88
|
+
}
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
);
|
|
92
|
+
Avatar.displayName = "Avatar";
|
|
93
|
+
var AvatarGroup = React__namespace.forwardRef(
|
|
94
|
+
({ className, max, size = "md", children, ...props }, ref) => {
|
|
95
|
+
const childrenArray = React__namespace.Children.toArray(children);
|
|
96
|
+
const visibleChildren = max ? childrenArray.slice(0, max) : childrenArray;
|
|
97
|
+
const remainingCount = max ? Math.max(0, childrenArray.length - max) : 0;
|
|
98
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: chunkOR5DRJCW_cjs.cn("flex -space-x-2", className), ...props, children: [
|
|
99
|
+
visibleChildren.map((child, index) => {
|
|
100
|
+
if (React__namespace.isValidElement(child)) {
|
|
101
|
+
return React__namespace.cloneElement(
|
|
102
|
+
child,
|
|
103
|
+
{
|
|
104
|
+
key: index,
|
|
105
|
+
size,
|
|
106
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
107
|
+
"ring-2 ring-white dark:ring-neutral-900",
|
|
108
|
+
child.props.className
|
|
109
|
+
)
|
|
110
|
+
}
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
return child;
|
|
114
|
+
}),
|
|
115
|
+
remainingCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
116
|
+
"div",
|
|
117
|
+
{
|
|
118
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
119
|
+
avatarVariants({ size }),
|
|
120
|
+
"bg-neutral-200 text-neutral-600 dark:bg-neutral-700 dark:text-neutral-300",
|
|
121
|
+
"ring-2 ring-white dark:ring-neutral-900"
|
|
122
|
+
),
|
|
123
|
+
children: [
|
|
124
|
+
"+",
|
|
125
|
+
remainingCount
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
)
|
|
129
|
+
] });
|
|
130
|
+
}
|
|
131
|
+
);
|
|
132
|
+
AvatarGroup.displayName = "AvatarGroup";
|
|
133
|
+
|
|
134
|
+
exports.Avatar = Avatar;
|
|
135
|
+
exports.AvatarGroup = AvatarGroup;
|
|
136
|
+
exports.avatarVariants = avatarVariants;
|
|
137
|
+
exports.getInitials = getInitials;
|
|
138
|
+
//# sourceMappingURL=chunk-2J2V4TMJ.cjs.map
|
|
139
|
+
//# sourceMappingURL=chunk-2J2V4TMJ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Avatar/Avatar.tsx"],"names":["cva","React","jsx","cn","jsxs"],"mappings":"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","file":"chunk-2J2V4TMJ.cjs","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\n// ============================================================================\n// Avatar Component\n// ============================================================================\n\nconst avatarVariants = cva(\n [\n 'relative inline-flex items-center justify-center',\n 'rounded-full overflow-hidden',\n 'bg-primary-800 text-white font-semibold',\n ],\n {\n variants: {\n size: {\n xs: 'h-6 w-6 text-xs',\n sm: 'h-8 w-8 text-sm',\n md: 'h-10 w-10 text-sm',\n lg: 'h-12 w-12 text-base',\n xl: 'h-16 w-16 text-lg',\n },\n ring: {\n true: 'ring-2 ring-primary-400/30',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n ring: false,\n },\n }\n);\n\nexport interface AvatarProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof avatarVariants> {\n /** Image URL for the avatar */\n src?: string | null;\n /** Alt text for the avatar image */\n alt?: string;\n /** Name to generate initials from (used as fallback when no src) */\n name?: string;\n /** Custom fallback content (overrides name initials) */\n fallback?: React.ReactElement | null;\n}\n\n/**\n * Get initials from a name string.\n */\nfunction getInitials(name: string): string {\n return name\n .split(' ')\n .map((part) => part[0])\n .join('')\n .toUpperCase()\n .slice(0, 2);\n}\n\n/**\n * An avatar component for displaying user profile images with fallback to initials.\n *\n * @example\n * ```tsx\n * // With image\n * <Avatar src=\"/user.jpg\" alt=\"John Doe\" />\n *\n * // With initials fallback\n * <Avatar name=\"John Doe\" />\n *\n * // With custom fallback\n * <Avatar fallback={<UserIcon />} />\n * ```\n */\nconst Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n ({ className, src, alt, name, fallback, size, ring, ...props }, ref) => {\n const [imageError, setImageError] = React.useState(false);\n\n // Reset error state when src changes\n React.useEffect(() => {\n setImageError(false);\n }, [src]);\n\n const showImage = src && !imageError;\n const initials = name ? getInitials(name) : null;\n\n return (\n <div\n ref={ref}\n className={cn(avatarVariants({ size, ring }), className)}\n {...props}\n >\n {showImage ? (\n <img\n src={src}\n alt={alt || name || 'Avatar'}\n className=\"h-full w-full object-cover\"\n onError={() => setImageError(true)}\n />\n ) : React.isValidElement(fallback) ? (\n fallback\n ) : initials ? (\n initials\n ) : (\n <svg\n className=\"h-[60%] w-[60%] text-white/80\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\" />\n </svg>\n )}\n </div>\n );\n }\n);\n\nAvatar.displayName = 'Avatar';\n\n// ============================================================================\n// Avatar Group Component\n// ============================================================================\n\nexport interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Maximum number of avatars to show before +N indicator */\n max?: number;\n /** Size of avatars in the group */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Children should be Avatar components */\n children: React.ReactNode;\n}\n\n/**\n * A component for displaying a group of overlapping avatars.\n *\n * @example\n * ```tsx\n * <AvatarGroup max={3}>\n * <Avatar name=\"John Doe\" />\n * <Avatar name=\"Jane Smith\" />\n * <Avatar name=\"Bob Wilson\" />\n * <Avatar name=\"Alice Brown\" />\n * </AvatarGroup>\n * ```\n */\nconst AvatarGroup = React.forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ className, max, size = 'md', children, ...props }, ref) => {\n const childrenArray = React.Children.toArray(children);\n const visibleChildren = max ? childrenArray.slice(0, max) : childrenArray;\n const remainingCount = max ? Math.max(0, childrenArray.length - max) : 0;\n\n return (\n <div ref={ref} className={cn('flex -space-x-2', className)} {...props}>\n {visibleChildren.map((child, index) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(\n child as React.ReactElement<AvatarProps>,\n {\n key: index,\n size,\n className: cn(\n 'ring-2 ring-white dark:ring-neutral-900',\n (child as React.ReactElement<AvatarProps>).props.className\n ),\n }\n );\n }\n return child;\n })}\n {remainingCount > 0 && (\n <div\n className={cn(\n avatarVariants({ size }),\n 'bg-neutral-200 text-neutral-600 dark:bg-neutral-700 dark:text-neutral-300',\n 'ring-2 ring-white dark:ring-neutral-900'\n )}\n >\n +{remainingCount}\n </div>\n )}\n </div>\n );\n }\n);\n\nAvatarGroup.displayName = 'AvatarGroup';\n\nexport { Avatar, AvatarGroup, avatarVariants, getInitials };\n"]}
|