@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,134 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkOR5DRJCW_cjs = require('./chunk-OR5DRJCW.cjs');
|
|
4
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
|
|
7
|
+
var skeletonVariants = classVarianceAuthority.cva(
|
|
8
|
+
["animate-pulse rounded-md bg-neutral-200 dark:bg-neutral-700"],
|
|
9
|
+
{
|
|
10
|
+
variants: {
|
|
11
|
+
variant: {
|
|
12
|
+
default: "",
|
|
13
|
+
text: "h-4",
|
|
14
|
+
title: "h-6",
|
|
15
|
+
avatar: "rounded-full",
|
|
16
|
+
button: "h-10 w-24",
|
|
17
|
+
card: "h-40",
|
|
18
|
+
image: "aspect-video"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
defaultVariants: {
|
|
22
|
+
variant: "default"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
function Skeleton({
|
|
27
|
+
className,
|
|
28
|
+
variant,
|
|
29
|
+
width,
|
|
30
|
+
height,
|
|
31
|
+
circle,
|
|
32
|
+
style,
|
|
33
|
+
...props
|
|
34
|
+
}) {
|
|
35
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
36
|
+
"div",
|
|
37
|
+
{
|
|
38
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
39
|
+
skeletonVariants({ variant }),
|
|
40
|
+
circle && "rounded-full",
|
|
41
|
+
className
|
|
42
|
+
),
|
|
43
|
+
style: {
|
|
44
|
+
width: typeof width === "number" ? `${width}px` : width,
|
|
45
|
+
height: typeof height === "number" ? `${height}px` : height,
|
|
46
|
+
...style
|
|
47
|
+
},
|
|
48
|
+
"aria-hidden": "true",
|
|
49
|
+
...props
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
Skeleton.displayName = "Skeleton";
|
|
54
|
+
function SkeletonText({
|
|
55
|
+
lines = 3,
|
|
56
|
+
lastLineWidth = "60%",
|
|
57
|
+
gap = "sm",
|
|
58
|
+
className
|
|
59
|
+
}) {
|
|
60
|
+
const gapClasses = {
|
|
61
|
+
sm: "space-y-2",
|
|
62
|
+
md: "space-y-3",
|
|
63
|
+
lg: "space-y-4"
|
|
64
|
+
};
|
|
65
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkOR5DRJCW_cjs.cn(gapClasses[gap], className), "aria-hidden": "true", children: Array.from({ length: lines }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
66
|
+
Skeleton,
|
|
67
|
+
{
|
|
68
|
+
variant: "text",
|
|
69
|
+
style: {
|
|
70
|
+
width: index === lines - 1 ? lastLineWidth : "100%"
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
index
|
|
74
|
+
)) });
|
|
75
|
+
}
|
|
76
|
+
SkeletonText.displayName = "SkeletonText";
|
|
77
|
+
function SkeletonCard({
|
|
78
|
+
showImage = true,
|
|
79
|
+
showAvatar = false,
|
|
80
|
+
textLines = 2,
|
|
81
|
+
className
|
|
82
|
+
}) {
|
|
83
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
84
|
+
"div",
|
|
85
|
+
{
|
|
86
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
87
|
+
"border-border bg-card space-y-4 rounded-xl border p-4",
|
|
88
|
+
className
|
|
89
|
+
),
|
|
90
|
+
"aria-hidden": "true",
|
|
91
|
+
children: [
|
|
92
|
+
showImage && /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { variant: "image", className: "rounded-lg" }),
|
|
93
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
94
|
+
showAvatar && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
95
|
+
/* @__PURE__ */ jsxRuntime.jsx(Skeleton, { circle: true, width: 40, height: 40 }),
|
|
96
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-2", children: [
|
|
97
|
+
/* @__PURE__ */ jsxRuntime.jsx(Skeleton, { variant: "text", width: "50%" }),
|
|
98
|
+
/* @__PURE__ */ jsxRuntime.jsx(Skeleton, { variant: "text", width: "30%" })
|
|
99
|
+
] })
|
|
100
|
+
] }),
|
|
101
|
+
/* @__PURE__ */ jsxRuntime.jsx(Skeleton, { variant: "title", width: "80%" }),
|
|
102
|
+
/* @__PURE__ */ jsxRuntime.jsx(SkeletonText, { lines: textLines })
|
|
103
|
+
] })
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
SkeletonCard.displayName = "SkeletonCard";
|
|
109
|
+
function SkeletonTable({
|
|
110
|
+
rows = 5,
|
|
111
|
+
columns = 4,
|
|
112
|
+
className
|
|
113
|
+
}) {
|
|
114
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkOR5DRJCW_cjs.cn("space-y-3", className), "aria-hidden": "true", children: [
|
|
115
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-4", children: Array.from({ length: columns }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { variant: "text", className: "h-5 flex-1" }, `header-${i}`)) }),
|
|
116
|
+
Array.from({ length: rows }).map((_, rowIndex) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-4", children: Array.from({ length: columns }).map((_2, colIndex) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
117
|
+
Skeleton,
|
|
118
|
+
{
|
|
119
|
+
variant: "text",
|
|
120
|
+
className: "flex-1"
|
|
121
|
+
},
|
|
122
|
+
`cell-${rowIndex}-${colIndex}`
|
|
123
|
+
)) }, `row-${rowIndex}`))
|
|
124
|
+
] });
|
|
125
|
+
}
|
|
126
|
+
SkeletonTable.displayName = "SkeletonTable";
|
|
127
|
+
|
|
128
|
+
exports.Skeleton = Skeleton;
|
|
129
|
+
exports.SkeletonCard = SkeletonCard;
|
|
130
|
+
exports.SkeletonTable = SkeletonTable;
|
|
131
|
+
exports.SkeletonText = SkeletonText;
|
|
132
|
+
exports.skeletonVariants = skeletonVariants;
|
|
133
|
+
//# sourceMappingURL=chunk-N3QTYHRZ.cjs.map
|
|
134
|
+
//# sourceMappingURL=chunk-N3QTYHRZ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Skeleton/Skeleton.tsx"],"names":["cva","jsx","cn","jsxs","_"],"mappings":"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","file":"chunk-N3QTYHRZ.cjs","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\nconst skeletonVariants = cva(\n ['animate-pulse rounded-md bg-neutral-200 dark:bg-neutral-700'],\n {\n variants: {\n variant: {\n default: '',\n text: 'h-4',\n title: 'h-6',\n avatar: 'rounded-full',\n button: 'h-10 w-24',\n card: 'h-40',\n image: 'aspect-video',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport interface SkeletonProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof skeletonVariants> {\n /** Width of the skeleton */\n width?: string | number;\n /** Height of the skeleton */\n height?: string | number;\n /** Whether to render as a circle */\n circle?: boolean;\n}\n\n/**\n * A skeleton loading placeholder component.\n *\n * @example\n * ```tsx\n * <Skeleton variant=\"text\" width=\"60%\" />\n * <Skeleton variant=\"avatar\" width={40} height={40} />\n * <Skeleton variant=\"card\" />\n * ```\n */\nfunction Skeleton({\n className,\n variant,\n width,\n height,\n circle,\n style,\n ...props\n}: SkeletonProps) {\n return (\n <div\n className={cn(\n skeletonVariants({ variant }),\n circle && 'rounded-full',\n className\n )}\n style={{\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n ...style,\n }}\n aria-hidden=\"true\"\n {...props}\n />\n );\n}\n\nSkeleton.displayName = 'Skeleton';\n\n// ============================================================================\n// Skeleton Text\n// ============================================================================\n\nexport interface SkeletonTextProps {\n /** Number of lines to display */\n lines?: number;\n /** Width of the last line (for varying line lengths) */\n lastLineWidth?: string;\n /** Gap between lines */\n gap?: 'sm' | 'md' | 'lg';\n /** Additional class name */\n className?: string;\n}\n\n/**\n * A skeleton for text content with multiple lines.\n *\n * @example\n * ```tsx\n * <SkeletonText lines={3} lastLineWidth=\"60%\" />\n * ```\n */\nfunction SkeletonText({\n lines = 3,\n lastLineWidth = '60%',\n gap = 'sm',\n className,\n}: SkeletonTextProps) {\n const gapClasses = {\n sm: 'space-y-2',\n md: 'space-y-3',\n lg: 'space-y-4',\n };\n\n return (\n <div className={cn(gapClasses[gap], className)} aria-hidden=\"true\">\n {Array.from({ length: lines }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"text\"\n style={{\n width: index === lines - 1 ? lastLineWidth : '100%',\n }}\n />\n ))}\n </div>\n );\n}\n\nSkeletonText.displayName = 'SkeletonText';\n\n// ============================================================================\n// Skeleton Card\n// ============================================================================\n\nexport interface SkeletonCardProps {\n /** Show image placeholder */\n showImage?: boolean;\n /** Show avatar placeholder */\n showAvatar?: boolean;\n /** Number of text lines */\n textLines?: number;\n /** Additional class name */\n className?: string;\n}\n\n/**\n * A skeleton for card-like content.\n *\n * @example\n * ```tsx\n * <SkeletonCard showImage showAvatar textLines={2} />\n * ```\n */\nfunction SkeletonCard({\n showImage = true,\n showAvatar = false,\n textLines = 2,\n className,\n}: SkeletonCardProps) {\n return (\n <div\n className={cn(\n 'border-border bg-card space-y-4 rounded-xl border p-4',\n className\n )}\n aria-hidden=\"true\"\n >\n {showImage && <Skeleton variant=\"image\" className=\"rounded-lg\" />}\n <div className=\"space-y-3\">\n {showAvatar && (\n <div className=\"flex items-center gap-3\">\n <Skeleton circle width={40} height={40} />\n <div className=\"flex-1 space-y-2\">\n <Skeleton variant=\"text\" width=\"50%\" />\n <Skeleton variant=\"text\" width=\"30%\" />\n </div>\n </div>\n )}\n <Skeleton variant=\"title\" width=\"80%\" />\n <SkeletonText lines={textLines} />\n </div>\n </div>\n );\n}\n\nSkeletonCard.displayName = 'SkeletonCard';\n\n// ============================================================================\n// Skeleton Table Row\n// ============================================================================\n\nexport interface SkeletonTableProps {\n /** Number of rows */\n rows?: number;\n /** Number of columns */\n columns?: number;\n /** Additional class name */\n className?: string;\n}\n\n/**\n * A skeleton for table content.\n *\n * @example\n * ```tsx\n * <SkeletonTable rows={5} columns={4} />\n * ```\n */\nfunction SkeletonTable({\n rows = 5,\n columns = 4,\n className,\n}: SkeletonTableProps) {\n return (\n <div className={cn('space-y-3', className)} aria-hidden=\"true\">\n {/* Header */}\n <div className=\"flex gap-4\">\n {Array.from({ length: columns }).map((_, i) => (\n <Skeleton key={`header-${i}`} variant=\"text\" className=\"h-5 flex-1\" />\n ))}\n </div>\n {/* Rows */}\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <div key={`row-${rowIndex}`} className=\"flex gap-4\">\n {Array.from({ length: columns }).map((_, colIndex) => (\n <Skeleton\n key={`cell-${rowIndex}-${colIndex}`}\n variant=\"text\"\n className=\"flex-1\"\n />\n ))}\n </div>\n ))}\n </div>\n );\n}\n\nSkeletonTable.displayName = 'SkeletonTable';\n\nexport {\n Skeleton,\n SkeletonText,\n SkeletonCard,\n SkeletonTable,\n skeletonVariants,\n};\n"]}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { cn } from './chunk-F3SOEIN2.js';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var buttonVariants = cva(
|
|
7
|
+
// Base styles
|
|
8
|
+
[
|
|
9
|
+
"inline-flex items-center justify-center gap-2",
|
|
10
|
+
"font-semibold transition-all duration-200",
|
|
11
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
12
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
13
|
+
"active:scale-[0.98]"
|
|
14
|
+
],
|
|
15
|
+
{
|
|
16
|
+
variants: {
|
|
17
|
+
variant: {
|
|
18
|
+
primary: [
|
|
19
|
+
"bg-primary-800 text-white",
|
|
20
|
+
"hover:bg-primary-700",
|
|
21
|
+
"active:bg-primary-900"
|
|
22
|
+
],
|
|
23
|
+
secondary: [
|
|
24
|
+
"bg-neutral-200 text-neutral-900",
|
|
25
|
+
"hover:bg-neutral-300",
|
|
26
|
+
"active:bg-neutral-400",
|
|
27
|
+
"dark:bg-neutral-700 dark:text-neutral-100",
|
|
28
|
+
"dark:hover:bg-neutral-600",
|
|
29
|
+
"dark:active:bg-neutral-500"
|
|
30
|
+
],
|
|
31
|
+
ghost: [
|
|
32
|
+
"bg-transparent text-neutral-600",
|
|
33
|
+
"hover:bg-neutral-100",
|
|
34
|
+
"active:bg-neutral-200",
|
|
35
|
+
"dark:text-neutral-400",
|
|
36
|
+
"dark:hover:bg-neutral-800",
|
|
37
|
+
"dark:active:bg-neutral-700"
|
|
38
|
+
],
|
|
39
|
+
outline: [
|
|
40
|
+
"border-2 border-primary-800 text-primary-800 bg-transparent",
|
|
41
|
+
"hover:bg-primary-50 hover:text-primary-900",
|
|
42
|
+
"active:bg-primary-100",
|
|
43
|
+
"dark:border-primary-400 dark:text-primary-400",
|
|
44
|
+
"dark:hover:bg-primary-950",
|
|
45
|
+
"dark:active:bg-primary-900"
|
|
46
|
+
],
|
|
47
|
+
danger: [
|
|
48
|
+
"bg-red-600 text-white",
|
|
49
|
+
"hover:bg-red-700",
|
|
50
|
+
"active:bg-red-800"
|
|
51
|
+
],
|
|
52
|
+
link: [
|
|
53
|
+
"text-primary-800 underline-offset-4",
|
|
54
|
+
"hover:underline hover:text-primary-900",
|
|
55
|
+
"active:text-primary-950",
|
|
56
|
+
"dark:text-primary-400"
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
size: {
|
|
60
|
+
sm: "h-8 px-3 text-sm rounded-md",
|
|
61
|
+
md: "h-10 px-4 text-base rounded-lg",
|
|
62
|
+
lg: "h-12 px-6 text-lg rounded-xl",
|
|
63
|
+
icon: "h-10 w-10 rounded-lg"
|
|
64
|
+
},
|
|
65
|
+
fullWidth: {
|
|
66
|
+
true: "w-full",
|
|
67
|
+
false: ""
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
defaultVariants: {
|
|
71
|
+
variant: "primary",
|
|
72
|
+
size: "md",
|
|
73
|
+
fullWidth: false
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
var Button = React.forwardRef(
|
|
78
|
+
({
|
|
79
|
+
className,
|
|
80
|
+
variant,
|
|
81
|
+
size,
|
|
82
|
+
fullWidth,
|
|
83
|
+
leftIcon,
|
|
84
|
+
rightIcon,
|
|
85
|
+
isLoading,
|
|
86
|
+
loadingText,
|
|
87
|
+
disabled,
|
|
88
|
+
children,
|
|
89
|
+
...props
|
|
90
|
+
}, ref) => {
|
|
91
|
+
return /* @__PURE__ */ jsx(
|
|
92
|
+
"button",
|
|
93
|
+
{
|
|
94
|
+
className: cn(buttonVariants({ variant, size, fullWidth }), className),
|
|
95
|
+
ref,
|
|
96
|
+
disabled: disabled || isLoading,
|
|
97
|
+
"aria-busy": isLoading,
|
|
98
|
+
...props,
|
|
99
|
+
children: isLoading ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
100
|
+
/* @__PURE__ */ jsx(LoadingSpinner, {}),
|
|
101
|
+
loadingText || children
|
|
102
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
103
|
+
React.isValidElement(leftIcon) && /* @__PURE__ */ jsx("span", { className: "shrink-0", children: leftIcon }),
|
|
104
|
+
children,
|
|
105
|
+
React.isValidElement(rightIcon) && /* @__PURE__ */ jsx("span", { className: "shrink-0", children: rightIcon })
|
|
106
|
+
] })
|
|
107
|
+
}
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
);
|
|
111
|
+
Button.displayName = "Button";
|
|
112
|
+
function LoadingSpinner() {
|
|
113
|
+
return /* @__PURE__ */ jsxs(
|
|
114
|
+
"svg",
|
|
115
|
+
{
|
|
116
|
+
className: "h-4 w-4 animate-spin",
|
|
117
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
118
|
+
fill: "none",
|
|
119
|
+
viewBox: "0 0 24 24",
|
|
120
|
+
"aria-hidden": "true",
|
|
121
|
+
children: [
|
|
122
|
+
/* @__PURE__ */ jsx(
|
|
123
|
+
"circle",
|
|
124
|
+
{
|
|
125
|
+
className: "opacity-25",
|
|
126
|
+
cx: "12",
|
|
127
|
+
cy: "12",
|
|
128
|
+
r: "10",
|
|
129
|
+
stroke: "currentColor",
|
|
130
|
+
strokeWidth: "4"
|
|
131
|
+
}
|
|
132
|
+
),
|
|
133
|
+
/* @__PURE__ */ jsx(
|
|
134
|
+
"path",
|
|
135
|
+
{
|
|
136
|
+
className: "opacity-75",
|
|
137
|
+
fill: "currentColor",
|
|
138
|
+
d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
139
|
+
}
|
|
140
|
+
)
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export { Button, buttonVariants };
|
|
147
|
+
//# sourceMappingURL=chunk-N5EKL4DH.js.map
|
|
148
|
+
//# sourceMappingURL=chunk-N5EKL4DH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Button/Button.tsx"],"names":[],"mappings":"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","file":"chunk-N5EKL4DH.js","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\nconst buttonVariants = cva(\n // Base styles\n [\n 'inline-flex items-center justify-center gap-2',\n 'font-semibold transition-all duration-200',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'active:scale-[0.98]',\n ],\n {\n variants: {\n variant: {\n primary: [\n 'bg-primary-800 text-white',\n 'hover:bg-primary-700',\n 'active:bg-primary-900',\n ],\n secondary: [\n 'bg-neutral-200 text-neutral-900',\n 'hover:bg-neutral-300',\n 'active:bg-neutral-400',\n 'dark:bg-neutral-700 dark:text-neutral-100',\n 'dark:hover:bg-neutral-600',\n 'dark:active:bg-neutral-500',\n ],\n ghost: [\n 'bg-transparent text-neutral-600',\n 'hover:bg-neutral-100',\n 'active:bg-neutral-200',\n 'dark:text-neutral-400',\n 'dark:hover:bg-neutral-800',\n 'dark:active:bg-neutral-700',\n ],\n outline: [\n 'border-2 border-primary-800 text-primary-800 bg-transparent',\n 'hover:bg-primary-50 hover:text-primary-900',\n 'active:bg-primary-100',\n 'dark:border-primary-400 dark:text-primary-400',\n 'dark:hover:bg-primary-950',\n 'dark:active:bg-primary-900',\n ],\n danger: [\n 'bg-red-600 text-white',\n 'hover:bg-red-700',\n 'active:bg-red-800',\n ],\n link: [\n 'text-primary-800 underline-offset-4',\n 'hover:underline hover:text-primary-900',\n 'active:text-primary-950',\n 'dark:text-primary-400',\n ],\n },\n size: {\n sm: 'h-8 px-3 text-sm rounded-md',\n md: 'h-10 px-4 text-base rounded-lg',\n lg: 'h-12 px-6 text-lg rounded-xl',\n icon: 'h-10 w-10 rounded-lg',\n },\n fullWidth: {\n true: 'w-full',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n fullWidth: false,\n },\n }\n);\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n /** Optional icon element to render before the button text */\n leftIcon?: React.ReactElement | null;\n /** Optional icon element to render after the button text */\n rightIcon?: React.ReactElement | null;\n /** Shows a loading spinner and disables the button */\n isLoading?: boolean;\n /** Accessible label for the loading state */\n loadingText?: string;\n}\n\n/**\n * A versatile button component with multiple variants and sizes.\n *\n * @example\n * ```tsx\n * <Button variant=\"primary\" size=\"md\">Click me</Button>\n * <Button variant=\"danger\" leftIcon={<TrashIcon />}>Delete</Button>\n * <Button variant=\"ghost\" isLoading loadingText=\"Saving...\">Save</Button>\n * ```\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n fullWidth,\n leftIcon,\n rightIcon,\n isLoading,\n loadingText,\n disabled,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <button\n className={cn(buttonVariants({ variant, size, fullWidth }), className)}\n ref={ref}\n disabled={disabled || isLoading}\n aria-busy={isLoading}\n {...props}\n >\n {isLoading ? (\n <>\n <LoadingSpinner />\n {loadingText || children}\n </>\n ) : (\n <>\n {React.isValidElement(leftIcon) && (\n <span className=\"shrink-0\">{leftIcon}</span>\n )}\n {children}\n {React.isValidElement(rightIcon) && (\n <span className=\"shrink-0\">{rightIcon}</span>\n )}\n </>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\n/**\n * Simple loading spinner for the button\n */\nfunction LoadingSpinner() {\n return (\n <svg\n className=\"h-4 w-4 animate-spin\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n );\n}\n\nexport { Button, buttonVariants };\n"]}
|
|
@@ -0,0 +1,231 @@
|
|
|
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 progressBarTrackVariants = classVarianceAuthority.cva(
|
|
29
|
+
["w-full overflow-hidden rounded-full bg-neutral-200 dark:bg-neutral-700"],
|
|
30
|
+
{
|
|
31
|
+
variants: {
|
|
32
|
+
size: {
|
|
33
|
+
sm: "h-1",
|
|
34
|
+
md: "h-2",
|
|
35
|
+
lg: "h-3",
|
|
36
|
+
xl: "h-4"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
defaultVariants: {
|
|
40
|
+
size: "md"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
var progressBarFillVariants = classVarianceAuthority.cva(
|
|
45
|
+
["h-full rounded-full transition-all duration-300 ease-out"],
|
|
46
|
+
{
|
|
47
|
+
variants: {
|
|
48
|
+
variant: {
|
|
49
|
+
default: "bg-primary-500",
|
|
50
|
+
success: "bg-green-500",
|
|
51
|
+
warning: "bg-yellow-500",
|
|
52
|
+
danger: "bg-red-500"
|
|
53
|
+
},
|
|
54
|
+
animated: {
|
|
55
|
+
true: "animate-pulse",
|
|
56
|
+
false: ""
|
|
57
|
+
},
|
|
58
|
+
striped: {
|
|
59
|
+
true: [
|
|
60
|
+
"bg-gradient-to-r",
|
|
61
|
+
"from-transparent via-white/20 to-transparent",
|
|
62
|
+
"bg-[length:1rem_100%]",
|
|
63
|
+
"animate-[progress-stripes_1s_linear_infinite]"
|
|
64
|
+
],
|
|
65
|
+
false: ""
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
defaultVariants: {
|
|
69
|
+
variant: "default",
|
|
70
|
+
animated: false,
|
|
71
|
+
striped: false
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
function Progress({
|
|
76
|
+
value,
|
|
77
|
+
max = 100,
|
|
78
|
+
label,
|
|
79
|
+
showValue = false,
|
|
80
|
+
formatValue,
|
|
81
|
+
size,
|
|
82
|
+
variant,
|
|
83
|
+
animated,
|
|
84
|
+
striped,
|
|
85
|
+
className,
|
|
86
|
+
indeterminate = false
|
|
87
|
+
}) {
|
|
88
|
+
const percentage = Math.min(Math.max(value / max * 100, 0), 100);
|
|
89
|
+
const progressId = React__namespace.useId();
|
|
90
|
+
const displayValue = formatValue ? formatValue(value, max) : `${Math.round(percentage)}%`;
|
|
91
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkOR5DRJCW_cjs.cn("w-full", className), children: [
|
|
92
|
+
(label || showValue) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1.5 flex items-center justify-between", children: [
|
|
93
|
+
label && /* @__PURE__ */ jsxRuntime.jsx(
|
|
94
|
+
"label",
|
|
95
|
+
{
|
|
96
|
+
id: `${progressId}-label`,
|
|
97
|
+
className: "text-foreground text-sm font-medium",
|
|
98
|
+
children: label
|
|
99
|
+
}
|
|
100
|
+
),
|
|
101
|
+
showValue && !indeterminate && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-sm", children: displayValue })
|
|
102
|
+
] }),
|
|
103
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
104
|
+
"div",
|
|
105
|
+
{
|
|
106
|
+
role: "progressbar",
|
|
107
|
+
"aria-valuenow": indeterminate ? void 0 : value,
|
|
108
|
+
"aria-valuemin": 0,
|
|
109
|
+
"aria-valuemax": max,
|
|
110
|
+
"aria-labelledby": label ? `${progressId}-label` : void 0,
|
|
111
|
+
"aria-label": !label ? "Progress" : void 0,
|
|
112
|
+
className: chunkOR5DRJCW_cjs.cn(progressBarTrackVariants({ size })),
|
|
113
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
114
|
+
"div",
|
|
115
|
+
{
|
|
116
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
117
|
+
progressBarFillVariants({ variant, animated, striped }),
|
|
118
|
+
indeterminate && "w-1/3 animate-[indeterminate_1.5s_ease-in-out_infinite]",
|
|
119
|
+
!striped && variant === "default" && "bg-primary-500",
|
|
120
|
+
!striped && variant === "success" && "bg-green-500",
|
|
121
|
+
!striped && variant === "warning" && "bg-yellow-500",
|
|
122
|
+
!striped && variant === "danger" && "bg-red-500"
|
|
123
|
+
),
|
|
124
|
+
style: indeterminate ? void 0 : { width: `${percentage}%` }
|
|
125
|
+
}
|
|
126
|
+
)
|
|
127
|
+
}
|
|
128
|
+
)
|
|
129
|
+
] });
|
|
130
|
+
}
|
|
131
|
+
Progress.displayName = "Progress";
|
|
132
|
+
var circularProgressVariants = classVarianceAuthority.cva(["relative inline-flex"], {
|
|
133
|
+
variants: {
|
|
134
|
+
size: {
|
|
135
|
+
sm: "h-8 w-8",
|
|
136
|
+
md: "h-12 w-12",
|
|
137
|
+
lg: "h-16 w-16",
|
|
138
|
+
xl: "h-24 w-24"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
defaultVariants: {
|
|
142
|
+
size: "md"
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
function CircularProgress({
|
|
146
|
+
value,
|
|
147
|
+
max = 100,
|
|
148
|
+
variant = "default",
|
|
149
|
+
size,
|
|
150
|
+
strokeWidth = 4,
|
|
151
|
+
showValue = false,
|
|
152
|
+
indeterminate = false,
|
|
153
|
+
className
|
|
154
|
+
}) {
|
|
155
|
+
const percentage = Math.min(Math.max(value / max * 100, 0), 100);
|
|
156
|
+
const sizeMap = { sm: 32, md: 48, lg: 64, xl: 96 };
|
|
157
|
+
const svgSize = sizeMap[size || "md"];
|
|
158
|
+
const radius = (svgSize - strokeWidth) / 2;
|
|
159
|
+
const circumference = 2 * Math.PI * radius;
|
|
160
|
+
const offset = circumference - percentage / 100 * circumference;
|
|
161
|
+
const variantColors = {
|
|
162
|
+
default: "stroke-primary-500",
|
|
163
|
+
success: "stroke-green-500",
|
|
164
|
+
warning: "stroke-yellow-500",
|
|
165
|
+
danger: "stroke-red-500"
|
|
166
|
+
};
|
|
167
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
168
|
+
"div",
|
|
169
|
+
{
|
|
170
|
+
role: "progressbar",
|
|
171
|
+
"aria-valuenow": indeterminate ? void 0 : value,
|
|
172
|
+
"aria-valuemin": 0,
|
|
173
|
+
"aria-valuemax": max,
|
|
174
|
+
"aria-label": "Progress",
|
|
175
|
+
className: chunkOR5DRJCW_cjs.cn(circularProgressVariants({ size }), className),
|
|
176
|
+
children: [
|
|
177
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
178
|
+
"svg",
|
|
179
|
+
{
|
|
180
|
+
className: chunkOR5DRJCW_cjs.cn("-rotate-90 transform", indeterminate && "animate-spin"),
|
|
181
|
+
width: svgSize,
|
|
182
|
+
height: svgSize,
|
|
183
|
+
children: [
|
|
184
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
185
|
+
"circle",
|
|
186
|
+
{
|
|
187
|
+
className: "stroke-neutral-200 dark:stroke-neutral-700",
|
|
188
|
+
fill: "none",
|
|
189
|
+
strokeWidth,
|
|
190
|
+
cx: svgSize / 2,
|
|
191
|
+
cy: svgSize / 2,
|
|
192
|
+
r: radius
|
|
193
|
+
}
|
|
194
|
+
),
|
|
195
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
196
|
+
"circle",
|
|
197
|
+
{
|
|
198
|
+
className: chunkOR5DRJCW_cjs.cn(
|
|
199
|
+
variantColors[variant],
|
|
200
|
+
"transition-all duration-300 ease-out"
|
|
201
|
+
),
|
|
202
|
+
fill: "none",
|
|
203
|
+
strokeWidth,
|
|
204
|
+
strokeLinecap: "round",
|
|
205
|
+
cx: svgSize / 2,
|
|
206
|
+
cy: svgSize / 2,
|
|
207
|
+
r: radius,
|
|
208
|
+
strokeDasharray: circumference,
|
|
209
|
+
strokeDashoffset: indeterminate ? circumference * 0.75 : offset
|
|
210
|
+
}
|
|
211
|
+
)
|
|
212
|
+
]
|
|
213
|
+
}
|
|
214
|
+
),
|
|
215
|
+
showValue && !indeterminate && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-foreground absolute inset-0 flex items-center justify-center text-xs font-medium", children: [
|
|
216
|
+
Math.round(percentage),
|
|
217
|
+
"%"
|
|
218
|
+
] })
|
|
219
|
+
]
|
|
220
|
+
}
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
CircularProgress.displayName = "CircularProgress";
|
|
224
|
+
|
|
225
|
+
exports.CircularProgress = CircularProgress;
|
|
226
|
+
exports.Progress = Progress;
|
|
227
|
+
exports.circularProgressVariants = circularProgressVariants;
|
|
228
|
+
exports.progressBarFillVariants = progressBarFillVariants;
|
|
229
|
+
exports.progressBarTrackVariants = progressBarTrackVariants;
|
|
230
|
+
//# sourceMappingURL=chunk-NAATBUHR.cjs.map
|
|
231
|
+
//# sourceMappingURL=chunk-NAATBUHR.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Progress/Progress.tsx"],"names":["cva","React","cn","jsxs","jsx"],"mappings":"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","file":"chunk-NAATBUHR.cjs","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\n// ============================================================================\n// Progress Bar Variants\n// ============================================================================\n\nconst progressBarTrackVariants = cva(\n ['w-full overflow-hidden rounded-full bg-neutral-200 dark:bg-neutral-700'],\n {\n variants: {\n size: {\n sm: 'h-1',\n md: 'h-2',\n lg: 'h-3',\n xl: 'h-4',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nconst progressBarFillVariants = cva(\n ['h-full rounded-full transition-all duration-300 ease-out'],\n {\n variants: {\n variant: {\n default: 'bg-primary-500',\n success: 'bg-green-500',\n warning: 'bg-yellow-500',\n danger: 'bg-red-500',\n },\n animated: {\n true: 'animate-pulse',\n false: '',\n },\n striped: {\n true: [\n 'bg-gradient-to-r',\n 'from-transparent via-white/20 to-transparent',\n 'bg-[length:1rem_100%]',\n 'animate-[progress-stripes_1s_linear_infinite]',\n ],\n false: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n animated: false,\n striped: false,\n },\n }\n);\n\n// ============================================================================\n// Progress Bar Component\n// ============================================================================\n\nexport interface ProgressProps\n extends\n VariantProps<typeof progressBarTrackVariants>,\n VariantProps<typeof progressBarFillVariants> {\n /** Current progress value (0-100) */\n value: number;\n /** Maximum value (default: 100) */\n max?: number;\n /** Label for the progress bar */\n label?: string;\n /** Show the percentage value */\n showValue?: boolean;\n /** Format the displayed value */\n formatValue?: (value: number, max: number) => string;\n /** Additional class name */\n className?: string;\n /** Whether the progress is indeterminate */\n indeterminate?: boolean;\n}\n\n/**\n * A progress bar component for showing completion status.\n *\n * @example\n * ```tsx\n * <Progress value={60} />\n * <Progress value={75} showValue label=\"Upload progress\" />\n * <Progress value={30} variant=\"success\" striped />\n * ```\n */\nfunction Progress({\n value,\n max = 100,\n label,\n showValue = false,\n formatValue,\n size,\n variant,\n animated,\n striped,\n className,\n indeterminate = false,\n}: ProgressProps) {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n const progressId = React.useId();\n\n const displayValue = formatValue\n ? formatValue(value, max)\n : `${Math.round(percentage)}%`;\n\n return (\n <div className={cn('w-full', className)}>\n {(label || showValue) && (\n <div className=\"mb-1.5 flex items-center justify-between\">\n {label && (\n <label\n id={`${progressId}-label`}\n className=\"text-foreground text-sm font-medium\"\n >\n {label}\n </label>\n )}\n {showValue && !indeterminate && (\n <span className=\"text-muted-foreground text-sm\">\n {displayValue}\n </span>\n )}\n </div>\n )}\n <div\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-labelledby={label ? `${progressId}-label` : undefined}\n aria-label={!label ? 'Progress' : undefined}\n className={cn(progressBarTrackVariants({ size }))}\n >\n <div\n className={cn(\n progressBarFillVariants({ variant, animated, striped }),\n indeterminate &&\n 'w-1/3 animate-[indeterminate_1.5s_ease-in-out_infinite]',\n !striped && variant === 'default' && 'bg-primary-500',\n !striped && variant === 'success' && 'bg-green-500',\n !striped && variant === 'warning' && 'bg-yellow-500',\n !striped && variant === 'danger' && 'bg-red-500'\n )}\n style={indeterminate ? undefined : { width: `${percentage}%` }}\n />\n </div>\n </div>\n );\n}\n\nProgress.displayName = 'Progress';\n\n// ============================================================================\n// Circular Progress Variants\n// ============================================================================\n\nconst circularProgressVariants = cva(['relative inline-flex'], {\n variants: {\n size: {\n sm: 'h-8 w-8',\n md: 'h-12 w-12',\n lg: 'h-16 w-16',\n xl: 'h-24 w-24',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\n// ============================================================================\n// Circular Progress Component\n// ============================================================================\n\nexport interface CircularProgressProps extends VariantProps<\n typeof circularProgressVariants\n> {\n /** Current progress value (0-100) */\n value: number;\n /** Maximum value (default: 100) */\n max?: number;\n /** Color variant */\n variant?: 'default' | 'success' | 'warning' | 'danger';\n /** Stroke width */\n strokeWidth?: number;\n /** Show the percentage value in the center */\n showValue?: boolean;\n /** Whether the progress is indeterminate */\n indeterminate?: boolean;\n /** Additional class name */\n className?: string;\n}\n\n/**\n * A circular progress indicator component.\n *\n * @example\n * ```tsx\n * <CircularProgress value={75} showValue />\n * <CircularProgress value={50} variant=\"success\" size=\"lg\" />\n * ```\n */\nfunction CircularProgress({\n value,\n max = 100,\n variant = 'default',\n size,\n strokeWidth = 4,\n showValue = false,\n indeterminate = false,\n className,\n}: CircularProgressProps) {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n\n // SVG calculations\n const sizeMap = { sm: 32, md: 48, lg: 64, xl: 96 };\n const svgSize = sizeMap[size || 'md'];\n const radius = (svgSize - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - (percentage / 100) * circumference;\n\n const variantColors = {\n default: 'stroke-primary-500',\n success: 'stroke-green-500',\n warning: 'stroke-yellow-500',\n danger: 'stroke-red-500',\n };\n\n return (\n <div\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-label=\"Progress\"\n className={cn(circularProgressVariants({ size }), className)}\n >\n <svg\n className={cn('-rotate-90 transform', indeterminate && 'animate-spin')}\n width={svgSize}\n height={svgSize}\n >\n {/* Background track */}\n <circle\n className=\"stroke-neutral-200 dark:stroke-neutral-700\"\n fill=\"none\"\n strokeWidth={strokeWidth}\n cx={svgSize / 2}\n cy={svgSize / 2}\n r={radius}\n />\n {/* Progress fill */}\n <circle\n className={cn(\n variantColors[variant],\n 'transition-all duration-300 ease-out'\n )}\n fill=\"none\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n cx={svgSize / 2}\n cy={svgSize / 2}\n r={radius}\n strokeDasharray={circumference}\n strokeDashoffset={indeterminate ? circumference * 0.75 : offset}\n />\n </svg>\n {showValue && !indeterminate && (\n <span className=\"text-foreground absolute inset-0 flex items-center justify-center text-xs font-medium\">\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n );\n}\n\nCircularProgress.displayName = 'CircularProgress';\n\nexport {\n Progress,\n CircularProgress,\n progressBarTrackVariants,\n progressBarFillVariants,\n circularProgressVariants,\n};\n"]}
|