@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
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 MIE Web Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,696 @@
|
|
|
1
|
+
# @mieweb/ui
|
|
2
|
+
|
|
3
|
+
A themeable, accessible React component library built with Tailwind CSS 4.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🎨 **Fully Themeable** - Customize colors, fonts, border radius, and more using CSS variables
|
|
8
|
+
- 🏢 **Multi-Brand Support** - Pre-configured themes for BlueHive, Enterprise Health, WebChart, Waggleline, and MIE
|
|
9
|
+
- ♿ **Accessible** - Built with WCAG guidelines in mind, including proper ARIA attributes and keyboard navigation
|
|
10
|
+
- 🌳 **Tree-Shakeable** - Import only the components you need
|
|
11
|
+
- 🌙 **Dark Mode** - Built-in dark mode support with system preference detection
|
|
12
|
+
- 📦 **Dual Format** - ESM and CommonJS support
|
|
13
|
+
- 🎯 **TypeScript** - Full TypeScript support with comprehensive type definitions
|
|
14
|
+
- 📚 **Storybook** - Interactive documentation and component playground
|
|
15
|
+
|
|
16
|
+
## Table of Contents
|
|
17
|
+
|
|
18
|
+
- [Installation](#installation)
|
|
19
|
+
- [Quick Start](#quick-start)
|
|
20
|
+
- [Development](#development)
|
|
21
|
+
- [Storybook](#storybook)
|
|
22
|
+
- [Using in Other Projects](#using-in-other-projects)
|
|
23
|
+
- [Brand System](#brand-system)
|
|
24
|
+
- [Theming](#theming)
|
|
25
|
+
- [Components](#components)
|
|
26
|
+
- [Hooks](#hooks)
|
|
27
|
+
- [Utilities](#utilities)
|
|
28
|
+
- [Releases](#releases)
|
|
29
|
+
- [Contributing](#contributing)
|
|
30
|
+
|
|
31
|
+
## Installation
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm install @mieweb/ui
|
|
35
|
+
# or
|
|
36
|
+
yarn add @mieweb/ui
|
|
37
|
+
# or
|
|
38
|
+
pnpm add @mieweb/ui
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Peer Dependencies
|
|
42
|
+
|
|
43
|
+
This library requires React 18+ and React DOM 18+:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npm install react react-dom
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Quick Start
|
|
50
|
+
|
|
51
|
+
### Option 1: With Tailwind CSS (Recommended)
|
|
52
|
+
|
|
53
|
+
If your project uses Tailwind CSS 4, you can use the library's Tailwind preset for the best experience:
|
|
54
|
+
|
|
55
|
+
1. Add the preset to your `tailwind.config.js`:
|
|
56
|
+
|
|
57
|
+
```js
|
|
58
|
+
// tailwind.config.js
|
|
59
|
+
module.exports = {
|
|
60
|
+
presets: [require('@mieweb/ui/tailwind-preset')],
|
|
61
|
+
content: [
|
|
62
|
+
// ... your content
|
|
63
|
+
'./node_modules/@mieweb/ui/dist/**/*.js',
|
|
64
|
+
],
|
|
65
|
+
// Override theme values to match your brand
|
|
66
|
+
theme: {
|
|
67
|
+
extend: {
|
|
68
|
+
colors: {
|
|
69
|
+
primary: {
|
|
70
|
+
500: '#your-brand-color',
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
2. Import and use components:
|
|
79
|
+
|
|
80
|
+
```tsx
|
|
81
|
+
import { Button, Card, Input } from '@mieweb/ui';
|
|
82
|
+
|
|
83
|
+
function App() {
|
|
84
|
+
return (
|
|
85
|
+
<Card>
|
|
86
|
+
<Input label="Email" type="email" />
|
|
87
|
+
<Button>Submit</Button>
|
|
88
|
+
</Card>
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Option 2: Pre-compiled CSS
|
|
94
|
+
|
|
95
|
+
If you're not using Tailwind CSS, you can import the pre-compiled stylesheet:
|
|
96
|
+
|
|
97
|
+
```tsx
|
|
98
|
+
import '@mieweb/ui/styles.css';
|
|
99
|
+
import { Button } from '@mieweb/ui';
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Development
|
|
103
|
+
|
|
104
|
+
### Getting Started
|
|
105
|
+
|
|
106
|
+
1. **Clone the repository:**
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
git clone https://github.com/mieweb/ui.git
|
|
110
|
+
cd ui
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
2. **Install dependencies:**
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
npm install
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
3. **Start development mode:**
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
npm run dev
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
This will watch for changes and rebuild the library automatically.
|
|
126
|
+
|
|
127
|
+
### Available Scripts
|
|
128
|
+
|
|
129
|
+
| Script | Description |
|
|
130
|
+
| ------------------------- | ----------------------------------- |
|
|
131
|
+
| `npm run dev` | Start development mode with watch |
|
|
132
|
+
| `npm run build` | Build the library for production |
|
|
133
|
+
| `npm run storybook` | Start Storybook development server |
|
|
134
|
+
| `npm run build-storybook` | Build Storybook for static hosting |
|
|
135
|
+
| `npm run typecheck` | Run TypeScript type checking |
|
|
136
|
+
| `npm run lint` | Run ESLint |
|
|
137
|
+
| `npm run lint:fix` | Run ESLint with auto-fix |
|
|
138
|
+
| `npm run format` | Check code formatting with Prettier |
|
|
139
|
+
| `npm run format:fix` | Fix code formatting with Prettier |
|
|
140
|
+
| `npm run test` | Run tests |
|
|
141
|
+
| `npm run test:watch` | Run tests in watch mode |
|
|
142
|
+
|
|
143
|
+
## Storybook
|
|
144
|
+
|
|
145
|
+
Storybook provides interactive documentation and a component playground where you can explore all components with different props and themes.
|
|
146
|
+
|
|
147
|
+
### Running Storybook
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
npm run storybook
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
This starts the Storybook development server at [http://localhost:6006](http://localhost:6006).
|
|
154
|
+
|
|
155
|
+
### Features in Storybook
|
|
156
|
+
|
|
157
|
+
- **Component Explorer**: Browse all components with live examples
|
|
158
|
+
- **Props Documentation**: See all available props for each component
|
|
159
|
+
- **Theme Switcher**: Toggle between light and dark modes
|
|
160
|
+
- **Brand Switcher**: Preview components with different brand themes (BlueHive, Enterprise Health, WebChart, Waggleline, MIE)
|
|
161
|
+
- **Accessibility Panel**: Check accessibility compliance for each component
|
|
162
|
+
- **Controls**: Interactively modify component props
|
|
163
|
+
|
|
164
|
+
### Building Storybook
|
|
165
|
+
|
|
166
|
+
To build a static version of Storybook for deployment:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
npm run build-storybook
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
The output will be in the `storybook-static` directory.
|
|
173
|
+
|
|
174
|
+
## Using in Other Projects
|
|
175
|
+
|
|
176
|
+
### Method 1: NPM Package (Recommended)
|
|
177
|
+
|
|
178
|
+
Once published, install the package in your project:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
npm install @mieweb/ui
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Then import components:
|
|
185
|
+
|
|
186
|
+
```tsx
|
|
187
|
+
import { Button, Card, Input, ThemeProvider } from '@mieweb/ui';
|
|
188
|
+
import '@mieweb/ui/styles.css'; // or use a brand CSS file
|
|
189
|
+
|
|
190
|
+
function App() {
|
|
191
|
+
return (
|
|
192
|
+
<ThemeProvider>
|
|
193
|
+
<Card>
|
|
194
|
+
<Card.Header>
|
|
195
|
+
<Card.Title>Welcome</Card.Title>
|
|
196
|
+
</Card.Header>
|
|
197
|
+
<Card.Content>
|
|
198
|
+
<Input label="Email" type="email" placeholder="you@example.com" />
|
|
199
|
+
<Button className="mt-4">Submit</Button>
|
|
200
|
+
</Card.Content>
|
|
201
|
+
</Card>
|
|
202
|
+
</ThemeProvider>
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Method 2: Local Development (npm link)
|
|
208
|
+
|
|
209
|
+
For local development across projects:
|
|
210
|
+
|
|
211
|
+
1. **In the @mieweb/ui directory:**
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
cd /path/to/mieweb-ui
|
|
215
|
+
npm run build
|
|
216
|
+
npm link
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
2. **In your consuming project:**
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
cd /path/to/your-project
|
|
223
|
+
npm link @mieweb/ui
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
3. **Import and use components:**
|
|
227
|
+
|
|
228
|
+
```tsx
|
|
229
|
+
import { Button } from '@mieweb/ui';
|
|
230
|
+
import '@mieweb/ui/dist/styles.css';
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Method 3: Direct Path Import
|
|
234
|
+
|
|
235
|
+
For monorepo setups or when you want to reference the source directly:
|
|
236
|
+
|
|
237
|
+
```tsx
|
|
238
|
+
// In your consuming project's package.json
|
|
239
|
+
{
|
|
240
|
+
"dependencies": {
|
|
241
|
+
"@mieweb/ui": "file:../mieweb-ui"
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Then run `npm install` and import as usual.
|
|
247
|
+
|
|
248
|
+
### Using with Different Frameworks
|
|
249
|
+
|
|
250
|
+
#### Next.js
|
|
251
|
+
|
|
252
|
+
```tsx
|
|
253
|
+
// app/layout.tsx or pages/_app.tsx
|
|
254
|
+
import '@mieweb/ui/brands/bluehive.css';
|
|
255
|
+
import { ThemeProvider } from '@mieweb/ui';
|
|
256
|
+
|
|
257
|
+
export default function RootLayout({ children }) {
|
|
258
|
+
return (
|
|
259
|
+
<html lang="en">
|
|
260
|
+
<body>
|
|
261
|
+
<ThemeProvider>{children}</ThemeProvider>
|
|
262
|
+
</body>
|
|
263
|
+
</html>
|
|
264
|
+
);
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
#### Vite
|
|
269
|
+
|
|
270
|
+
```tsx
|
|
271
|
+
// main.tsx
|
|
272
|
+
import React from 'react';
|
|
273
|
+
import ReactDOM from 'react-dom/client';
|
|
274
|
+
import '@mieweb/ui/brands/enterprise-health.css';
|
|
275
|
+
import { ThemeProvider } from '@mieweb/ui';
|
|
276
|
+
import App from './App';
|
|
277
|
+
|
|
278
|
+
ReactDOM.createRoot(document.getElementById('root')!).render(
|
|
279
|
+
<React.StrictMode>
|
|
280
|
+
<ThemeProvider>
|
|
281
|
+
<App />
|
|
282
|
+
</ThemeProvider>
|
|
283
|
+
</React.StrictMode>
|
|
284
|
+
);
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
#### Meteor
|
|
288
|
+
|
|
289
|
+
```tsx
|
|
290
|
+
// client/main.tsx
|
|
291
|
+
import { Meteor } from 'meteor/meteor';
|
|
292
|
+
import React from 'react';
|
|
293
|
+
import { createRoot } from 'react-dom/client';
|
|
294
|
+
import '@mieweb/ui/brands/bluehive.css';
|
|
295
|
+
import { ThemeProvider } from '@mieweb/ui';
|
|
296
|
+
import App from '/imports/ui/App';
|
|
297
|
+
|
|
298
|
+
Meteor.startup(() => {
|
|
299
|
+
const container = document.getElementById('react-target');
|
|
300
|
+
const root = createRoot(container!);
|
|
301
|
+
root.render(
|
|
302
|
+
<ThemeProvider>
|
|
303
|
+
<App />
|
|
304
|
+
</ThemeProvider>
|
|
305
|
+
);
|
|
306
|
+
});
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
## Brand System
|
|
310
|
+
|
|
311
|
+
The library includes pre-configured themes for multiple brands. Each brand has its own design system with unique colors, typography, border radius, and shadows.
|
|
312
|
+
|
|
313
|
+
### Available Brands
|
|
314
|
+
|
|
315
|
+
| Brand | Primary Color | Font | Description |
|
|
316
|
+
| --------------------- | -------------------- | ------ | ------------------------------------------------- |
|
|
317
|
+
| **BlueHive** | `#27AAE1` (Blue) | Nunito | DOT Physical scheduling and healthcare compliance |
|
|
318
|
+
| **Enterprise Health** | `#6E2B68` (Burgundy) | Jost | Employee health and occupational medicine |
|
|
319
|
+
| **WebChart** | `#F5841F` (Orange) | Inter | Future-ready electronic health record system |
|
|
320
|
+
| **Waggleline** | `#17AEED` (Blue) | Inter | Experience visualization and orchestration |
|
|
321
|
+
| **MIE** | `#27AE60` (Green) | Inter | Healthcare software and services |
|
|
322
|
+
|
|
323
|
+
### Using a Brand Theme
|
|
324
|
+
|
|
325
|
+
#### Method 1: Import the brand CSS file
|
|
326
|
+
|
|
327
|
+
```tsx
|
|
328
|
+
// Import the brand's CSS file
|
|
329
|
+
import '@mieweb/ui/brands/enterprise-health.css';
|
|
330
|
+
|
|
331
|
+
import { Button, Card } from '@mieweb/ui';
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
#### Method 2: Use the ThemeProvider with brand
|
|
335
|
+
|
|
336
|
+
```tsx
|
|
337
|
+
import { ThemeProvider } from '@mieweb/ui';
|
|
338
|
+
import { enterpriseHealthBrand } from '@mieweb/ui/brands';
|
|
339
|
+
|
|
340
|
+
function App() {
|
|
341
|
+
return (
|
|
342
|
+
<ThemeProvider brand={enterpriseHealthBrand}>
|
|
343
|
+
<YourApp />
|
|
344
|
+
</ThemeProvider>
|
|
345
|
+
);
|
|
346
|
+
}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
#### Method 3: Tailwind CSS preset
|
|
350
|
+
|
|
351
|
+
```js
|
|
352
|
+
// tailwind.config.js
|
|
353
|
+
const { enterpriseHealthBrand } = require('@mieweb/ui/brands');
|
|
354
|
+
const { createBrandPreset } = require('@mieweb/ui/brands/types');
|
|
355
|
+
|
|
356
|
+
module.exports = {
|
|
357
|
+
presets: [createBrandPreset(enterpriseHealthBrand)],
|
|
358
|
+
// ...
|
|
359
|
+
};
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
### Brand Design Tokens
|
|
363
|
+
|
|
364
|
+
Each brand defines the following design tokens:
|
|
365
|
+
|
|
366
|
+
#### Enterprise Health
|
|
367
|
+
|
|
368
|
+
Extracted from [enterprisehealth.com](https://enterprisehealth.com):
|
|
369
|
+
|
|
370
|
+
```css
|
|
371
|
+
/* Primary: Burgundy/Purple */
|
|
372
|
+
--mieweb-primary-600: #6e2b68;
|
|
373
|
+
|
|
374
|
+
/* Secondary: Deep Teal Blue (for gradients) */
|
|
375
|
+
--mieweb-secondary: #00497a;
|
|
376
|
+
|
|
377
|
+
/* Accent: Gold/Yellow (logo) */
|
|
378
|
+
--mieweb-accent: #f8b700;
|
|
379
|
+
|
|
380
|
+
/* Brand Gradient */
|
|
381
|
+
--mieweb-gradient: linear-gradient(111.02deg, #00497a, #6e2b68);
|
|
382
|
+
|
|
383
|
+
/* Typography */
|
|
384
|
+
--mieweb-font-sans: 'Jost', ui-sans-serif, system-ui, sans-serif;
|
|
385
|
+
|
|
386
|
+
/* Border Radius (larger, more rounded) */
|
|
387
|
+
--mieweb-radius-sm: 0.375rem; /* 6px - badges */
|
|
388
|
+
--mieweb-radius-md: 0.625rem; /* 10px - buttons */
|
|
389
|
+
--mieweb-radius-lg: 0.75rem; /* 12px - inputs */
|
|
390
|
+
--mieweb-radius-2xl: 1.5rem; /* 24px - cards */
|
|
391
|
+
|
|
392
|
+
/* Shadows (subtle, layered) */
|
|
393
|
+
--mieweb-shadow-card:
|
|
394
|
+
0 16px 32px 0 rgba(34, 35, 38, 0.05), 0 8px 16px 0 rgba(34, 35, 38, 0.05);
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
#### BlueHive
|
|
398
|
+
|
|
399
|
+
```css
|
|
400
|
+
/* Primary: Blue */
|
|
401
|
+
--mieweb-primary-500: #27aae1;
|
|
402
|
+
|
|
403
|
+
/* Typography */
|
|
404
|
+
--mieweb-font-sans: 'Nunito', ui-sans-serif, system-ui, sans-serif;
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
### Creating a Custom Brand
|
|
408
|
+
|
|
409
|
+
You can create your own brand configuration:
|
|
410
|
+
|
|
411
|
+
```ts
|
|
412
|
+
import type { BrandConfig } from '@mieweb/ui/brands/types';
|
|
413
|
+
|
|
414
|
+
export const myBrand: BrandConfig = {
|
|
415
|
+
name: 'my-brand',
|
|
416
|
+
displayName: 'My Brand',
|
|
417
|
+
description: 'Custom brand for my application',
|
|
418
|
+
|
|
419
|
+
colors: {
|
|
420
|
+
primary: {
|
|
421
|
+
50: '#f0f9ff',
|
|
422
|
+
// ... full color scale 50-950
|
|
423
|
+
600: '#0284c7', // Main brand color
|
|
424
|
+
// ...
|
|
425
|
+
},
|
|
426
|
+
light: {
|
|
427
|
+
background: '#ffffff',
|
|
428
|
+
foreground: '#171717',
|
|
429
|
+
// ... semantic colors
|
|
430
|
+
},
|
|
431
|
+
dark: {
|
|
432
|
+
background: '#171717',
|
|
433
|
+
foreground: '#fafafa',
|
|
434
|
+
// ... semantic colors
|
|
435
|
+
},
|
|
436
|
+
},
|
|
437
|
+
|
|
438
|
+
typography: {
|
|
439
|
+
fontFamily: {
|
|
440
|
+
sans: ['Your Font', 'ui-sans-serif', 'system-ui', 'sans-serif'],
|
|
441
|
+
mono: ['ui-monospace', 'SFMono-Regular', 'Menlo', 'monospace'],
|
|
442
|
+
},
|
|
443
|
+
},
|
|
444
|
+
|
|
445
|
+
borderRadius: {
|
|
446
|
+
none: '0',
|
|
447
|
+
sm: '0.25rem',
|
|
448
|
+
md: '0.5rem',
|
|
449
|
+
lg: '0.75rem',
|
|
450
|
+
xl: '1rem',
|
|
451
|
+
'2xl': '1.5rem',
|
|
452
|
+
full: '9999px',
|
|
453
|
+
},
|
|
454
|
+
|
|
455
|
+
boxShadow: {
|
|
456
|
+
card: '0 1px 3px 0 rgb(0 0 0 / 0.1)',
|
|
457
|
+
dropdown: '0 4px 6px -1px rgb(0 0 0 / 0.1)',
|
|
458
|
+
modal: '0 10px 15px -3px rgb(0 0 0 / 0.1)',
|
|
459
|
+
},
|
|
460
|
+
};
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
## Theming
|
|
464
|
+
|
|
465
|
+
The library uses CSS custom properties for theming. Override these variables to customize the appearance:
|
|
466
|
+
|
|
467
|
+
```css
|
|
468
|
+
:root {
|
|
469
|
+
/* Primary color scale */
|
|
470
|
+
--mieweb-primary-500: #27aae1;
|
|
471
|
+
|
|
472
|
+
/* Semantic colors */
|
|
473
|
+
--mieweb-background: hsl(0 0% 100%);
|
|
474
|
+
--mieweb-foreground: hsl(222.2 84% 4.9%);
|
|
475
|
+
|
|
476
|
+
/* Border radius */
|
|
477
|
+
--mieweb-radius-md: 0.5rem;
|
|
478
|
+
|
|
479
|
+
/* Font */
|
|
480
|
+
--mieweb-font-sans: 'Your Font', sans-serif;
|
|
481
|
+
}
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
### Dark Mode
|
|
485
|
+
|
|
486
|
+
The library supports dark mode via the `.dark` class or `data-theme="dark"` attribute on a parent element:
|
|
487
|
+
|
|
488
|
+
```tsx
|
|
489
|
+
import { ThemeProvider, useThemeContext, Button } from '@mieweb/ui';
|
|
490
|
+
|
|
491
|
+
function ThemeToggle() {
|
|
492
|
+
const { resolvedTheme, setTheme } = useThemeContext();
|
|
493
|
+
return (
|
|
494
|
+
<Button
|
|
495
|
+
onClick={() => setTheme(resolvedTheme === 'dark' ? 'light' : 'dark')}
|
|
496
|
+
>
|
|
497
|
+
Toggle Theme
|
|
498
|
+
</Button>
|
|
499
|
+
);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
function App() {
|
|
503
|
+
return (
|
|
504
|
+
<ThemeProvider>
|
|
505
|
+
<ThemeToggle />
|
|
506
|
+
</ThemeProvider>
|
|
507
|
+
);
|
|
508
|
+
}
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
## Components
|
|
512
|
+
|
|
513
|
+
### Primitives
|
|
514
|
+
|
|
515
|
+
- `Button` - Multi-variant button with loading state
|
|
516
|
+
- `Input` - Text input with label, error, and helper text
|
|
517
|
+
- `Card` - Container component with header, content, and footer
|
|
518
|
+
- `Text` - Typography component with variants
|
|
519
|
+
- `Badge` - Status indicators and labels
|
|
520
|
+
- `Alert` - Feedback messages
|
|
521
|
+
|
|
522
|
+
### Specialized Inputs
|
|
523
|
+
|
|
524
|
+
- `PhoneInput` - US phone number formatting
|
|
525
|
+
- `DateInput` - Date input with validation modes (DOB, expiration, etc.)
|
|
526
|
+
|
|
527
|
+
### Overlays
|
|
528
|
+
|
|
529
|
+
- `Tooltip` - Accessible tooltip with multiple placements
|
|
530
|
+
- `Dropdown` - Dropdown menu with items, separators, and labels
|
|
531
|
+
|
|
532
|
+
### Utilities
|
|
533
|
+
|
|
534
|
+
- `VisuallyHidden` - Screen reader only content
|
|
535
|
+
- `ThemeProvider` - Theme context provider
|
|
536
|
+
|
|
537
|
+
## Hooks
|
|
538
|
+
|
|
539
|
+
- `useTheme()` - Theme state management
|
|
540
|
+
- `useClickOutside()` - Detect clicks outside an element
|
|
541
|
+
- `useEscapeKey()` - Handle escape key press
|
|
542
|
+
- `useFocusTrap()` - Trap focus within a container
|
|
543
|
+
- `usePrefersReducedMotion()` - Detect reduced motion preference
|
|
544
|
+
|
|
545
|
+
## Utilities
|
|
546
|
+
|
|
547
|
+
### Class Names
|
|
548
|
+
|
|
549
|
+
```tsx
|
|
550
|
+
import { cn } from '@mieweb/ui/utils';
|
|
551
|
+
|
|
552
|
+
// Merge classes with Tailwind conflict resolution
|
|
553
|
+
cn('px-4 py-2', isActive && 'bg-primary-500', className);
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
### Phone Utilities
|
|
557
|
+
|
|
558
|
+
```tsx
|
|
559
|
+
import { formatPhoneNumber, isValidPhoneNumber } from '@mieweb/ui/utils';
|
|
560
|
+
|
|
561
|
+
formatPhoneNumber('5551234567'); // "(555) 123-4567"
|
|
562
|
+
isValidPhoneNumber('5551234567'); // true
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
### Date Utilities
|
|
566
|
+
|
|
567
|
+
```tsx
|
|
568
|
+
import { formatDateValue, calculateAge, isValidDate } from '@mieweb/ui/utils';
|
|
569
|
+
|
|
570
|
+
formatDateValue('01152024'); // "01/15/2024"
|
|
571
|
+
calculateAge('01/15/1990'); // 34
|
|
572
|
+
isValidDate('01/15/2024'); // true
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
## Tree-Shaking
|
|
576
|
+
|
|
577
|
+
Import components directly for optimal bundle size:
|
|
578
|
+
|
|
579
|
+
```tsx
|
|
580
|
+
// Import only what you need
|
|
581
|
+
import { Button } from '@mieweb/ui/components/Button';
|
|
582
|
+
import { useTheme } from '@mieweb/ui/hooks';
|
|
583
|
+
import { cn } from '@mieweb/ui/utils';
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
## TypeScript
|
|
587
|
+
|
|
588
|
+
All components are fully typed. Import types as needed:
|
|
589
|
+
|
|
590
|
+
```tsx
|
|
591
|
+
import type { ButtonProps, InputProps, Theme } from '@mieweb/ui';
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
## Releases
|
|
595
|
+
|
|
596
|
+
This package uses automated releases via GitHub Actions. There are two release channels:
|
|
597
|
+
|
|
598
|
+
### Release Channels
|
|
599
|
+
|
|
600
|
+
| Channel | npm Tag | Install Command | Description |
|
|
601
|
+
| ------- | ------- | --------------- | ----------- |
|
|
602
|
+
| **Stable** | `latest` | `npm install @mieweb/ui` | Production-ready releases |
|
|
603
|
+
| **Prerelease** | `next` | `npm install @mieweb/ui@next` | Latest from `main` branch |
|
|
604
|
+
|
|
605
|
+
### Prerelease (Automatic)
|
|
606
|
+
|
|
607
|
+
Every push to the `main` branch automatically publishes a prerelease version to npm:
|
|
608
|
+
|
|
609
|
+
- **Version format:** `x.y.z-dev.{run_number}` (e.g., `0.1.0-dev.45`)
|
|
610
|
+
- **npm tag:** `next`
|
|
611
|
+
- **Install:** `npm install @mieweb/ui@next`
|
|
612
|
+
|
|
613
|
+
This allows consumers to test the latest changes before a stable release.
|
|
614
|
+
|
|
615
|
+
### Stable Release (Manual)
|
|
616
|
+
|
|
617
|
+
To create a stable release:
|
|
618
|
+
|
|
619
|
+
1. Go to the repository on GitHub
|
|
620
|
+
2. Navigate to **Actions** → **Create Stable Release**
|
|
621
|
+
3. Click **Run workflow**
|
|
622
|
+
4. Select the version bump type:
|
|
623
|
+
- `patch` - Bug fixes (0.1.0 → 0.1.1)
|
|
624
|
+
- `minor` - New features (0.1.0 → 0.2.0)
|
|
625
|
+
- `major` - Breaking changes (0.1.0 → 1.0.0)
|
|
626
|
+
5. Click **Run workflow**
|
|
627
|
+
|
|
628
|
+
The workflow will:
|
|
629
|
+
1. Bump the version in `package.json`
|
|
630
|
+
2. Commit and push the change
|
|
631
|
+
3. Create a git tag (e.g., `v0.2.0`)
|
|
632
|
+
4. Trigger the release workflow which publishes to npm and creates a GitHub Release
|
|
633
|
+
|
|
634
|
+
### Manual Tag Release
|
|
635
|
+
|
|
636
|
+
You can also create a release by pushing a version tag directly:
|
|
637
|
+
|
|
638
|
+
```bash
|
|
639
|
+
# Create and push a tag
|
|
640
|
+
git tag v1.0.0
|
|
641
|
+
git push origin v1.0.0
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
The release workflow will automatically:
|
|
645
|
+
- Run tests and build
|
|
646
|
+
- Publish to npm with the appropriate tag (`latest` for stable, `next` for prereleases like `v1.0.0-beta.1`)
|
|
647
|
+
- Create a GitHub Release with auto-generated release notes
|
|
648
|
+
|
|
649
|
+
### Version Guidelines
|
|
650
|
+
|
|
651
|
+
We follow [Semantic Versioning](https://semver.org/):
|
|
652
|
+
|
|
653
|
+
- **MAJOR** version for incompatible API changes
|
|
654
|
+
- **MINOR** version for backwards-compatible functionality additions
|
|
655
|
+
- **PATCH** version for backwards-compatible bug fixes
|
|
656
|
+
|
|
657
|
+
## Contributing
|
|
658
|
+
|
|
659
|
+
We welcome contributions! Here's how to get started:
|
|
660
|
+
|
|
661
|
+
### Development Workflow
|
|
662
|
+
|
|
663
|
+
1. **Fork and clone the repository**
|
|
664
|
+
2. **Install dependencies:** `npm install`
|
|
665
|
+
3. **Create a branch:** `git checkout -b feature/your-feature`
|
|
666
|
+
4. **Start Storybook:** `npm run storybook`
|
|
667
|
+
5. **Make your changes**
|
|
668
|
+
6. **Run checks:**
|
|
669
|
+
```bash
|
|
670
|
+
npm run typecheck # TypeScript
|
|
671
|
+
npm run lint # ESLint
|
|
672
|
+
npm run format # Prettier
|
|
673
|
+
npm run test # Tests
|
|
674
|
+
```
|
|
675
|
+
7. **Commit your changes** following [Conventional Commits](https://www.conventionalcommits.org/)
|
|
676
|
+
8. **Push and create a Pull Request**
|
|
677
|
+
|
|
678
|
+
### Adding a New Component
|
|
679
|
+
|
|
680
|
+
1. Create a new directory in `src/components/YourComponent/`
|
|
681
|
+
2. Add the component file: `YourComponent.tsx`
|
|
682
|
+
3. Add the index export: `index.ts`
|
|
683
|
+
4. Add Storybook stories: `YourComponent.stories.tsx`
|
|
684
|
+
5. Export from `src/components/index.ts`
|
|
685
|
+
6. Add to the README components list
|
|
686
|
+
|
|
687
|
+
### Adding a New Brand
|
|
688
|
+
|
|
689
|
+
1. Create `src/brands/your-brand.ts` with the `BrandConfig`
|
|
690
|
+
2. Create `src/brands/your-brand.css` with CSS variables
|
|
691
|
+
3. Export from `src/brands/index.ts`
|
|
692
|
+
4. Add to the README brands table
|
|
693
|
+
|
|
694
|
+
## License
|
|
695
|
+
|
|
696
|
+
MIT © MIE Web Team
|