mokona-ui 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +273 -0
- package/dist/accordion.cjs +13 -0
- package/dist/accordion.cjs.map +1 -0
- package/dist/accordion.d.cts +21 -0
- package/dist/accordion.d.ts +21 -0
- package/dist/accordion.js +4 -0
- package/dist/accordion.js.map +1 -0
- package/dist/alert.cjs +13 -0
- package/dist/alert.cjs.map +1 -0
- package/dist/alert.d.cts +14 -0
- package/dist/alert.d.ts +14 -0
- package/dist/alert.js +4 -0
- package/dist/alert.js.map +1 -0
- package/dist/amount.cjs +18 -0
- package/dist/amount.cjs.map +1 -0
- package/dist/amount.d.cts +39 -0
- package/dist/amount.d.ts +39 -0
- package/dist/amount.js +5 -0
- package/dist/amount.js.map +1 -0
- package/dist/avatar.cjs +13 -0
- package/dist/avatar.cjs.map +1 -0
- package/dist/avatar.d.cts +16 -0
- package/dist/avatar.d.ts +16 -0
- package/dist/avatar.js +4 -0
- package/dist/avatar.js.map +1 -0
- package/dist/badge.cjs +17 -0
- package/dist/badge.cjs.map +1 -0
- package/dist/badge.d.cts +13 -0
- package/dist/badge.d.ts +13 -0
- package/dist/badge.js +4 -0
- package/dist/badge.js.map +1 -0
- package/dist/bottom-sheet.cjs +14 -0
- package/dist/bottom-sheet.cjs.map +1 -0
- package/dist/bottom-sheet.d.cts +14 -0
- package/dist/bottom-sheet.d.ts +14 -0
- package/dist/bottom-sheet.js +5 -0
- package/dist/bottom-sheet.js.map +1 -0
- package/dist/button.cjs +18 -0
- package/dist/button.cjs.map +1 -0
- package/dist/button.d.cts +16 -0
- package/dist/button.d.ts +16 -0
- package/dist/button.js +5 -0
- package/dist/button.js.map +1 -0
- package/dist/calendar.cjs +14 -0
- package/dist/calendar.cjs.map +1 -0
- package/dist/calendar.d.cts +13 -0
- package/dist/calendar.d.ts +13 -0
- package/dist/calendar.js +5 -0
- package/dist/calendar.js.map +1 -0
- package/dist/card.cjs +18 -0
- package/dist/card.cjs.map +1 -0
- package/dist/card.d.cts +14 -0
- package/dist/card.d.ts +14 -0
- package/dist/card.js +5 -0
- package/dist/card.js.map +1 -0
- package/dist/checkbox.cjs +14 -0
- package/dist/checkbox.cjs.map +1 -0
- package/dist/checkbox.d.cts +9 -0
- package/dist/checkbox.d.ts +9 -0
- package/dist/checkbox.js +5 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/chip.cjs +14 -0
- package/dist/chip.cjs.map +1 -0
- package/dist/chip.d.cts +9 -0
- package/dist/chip.d.ts +9 -0
- package/dist/chip.js +5 -0
- package/dist/chip.js.map +1 -0
- package/dist/chunk-27EKI7CM.cjs +74 -0
- package/dist/chunk-27EKI7CM.cjs.map +1 -0
- package/dist/chunk-2AOEUASU.cjs +123 -0
- package/dist/chunk-2AOEUASU.cjs.map +1 -0
- package/dist/chunk-355VBEHS.js +51 -0
- package/dist/chunk-355VBEHS.js.map +1 -0
- package/dist/chunk-4C6E37KK.js +134 -0
- package/dist/chunk-4C6E37KK.js.map +1 -0
- package/dist/chunk-4S23TNFZ.cjs +115 -0
- package/dist/chunk-4S23TNFZ.cjs.map +1 -0
- package/dist/chunk-4V3IOZPC.cjs +61 -0
- package/dist/chunk-4V3IOZPC.cjs.map +1 -0
- package/dist/chunk-4YQPDHZP.cjs +69 -0
- package/dist/chunk-4YQPDHZP.cjs.map +1 -0
- package/dist/chunk-6CMR4MT4.js +101 -0
- package/dist/chunk-6CMR4MT4.js.map +1 -0
- package/dist/chunk-7B6U7GED.js +67 -0
- package/dist/chunk-7B6U7GED.js.map +1 -0
- package/dist/chunk-7GQ4YVJR.js +68 -0
- package/dist/chunk-7GQ4YVJR.js.map +1 -0
- package/dist/chunk-AFX7CBRR.cjs +97 -0
- package/dist/chunk-AFX7CBRR.cjs.map +1 -0
- package/dist/chunk-ARXXD2ZI.cjs +75 -0
- package/dist/chunk-ARXXD2ZI.cjs.map +1 -0
- package/dist/chunk-BCX5S6PO.js +41 -0
- package/dist/chunk-BCX5S6PO.js.map +1 -0
- package/dist/chunk-BJWRAJEH.cjs +61 -0
- package/dist/chunk-BJWRAJEH.cjs.map +1 -0
- package/dist/chunk-CX55SVMP.js +68 -0
- package/dist/chunk-CX55SVMP.js.map +1 -0
- package/dist/chunk-CZ4RHRM2.cjs +130 -0
- package/dist/chunk-CZ4RHRM2.cjs.map +1 -0
- package/dist/chunk-DDV6JQEW.js +57 -0
- package/dist/chunk-DDV6JQEW.js.map +1 -0
- package/dist/chunk-DR6JPBH7.js +126 -0
- package/dist/chunk-DR6JPBH7.js.map +1 -0
- package/dist/chunk-EVF7QZMA.cjs +46 -0
- package/dist/chunk-EVF7QZMA.cjs.map +1 -0
- package/dist/chunk-EXARWE5B.js +56 -0
- package/dist/chunk-EXARWE5B.js.map +1 -0
- package/dist/chunk-FUIIR7CU.js +32 -0
- package/dist/chunk-FUIIR7CU.js.map +1 -0
- package/dist/chunk-FXOOVZWB.js +39 -0
- package/dist/chunk-FXOOVZWB.js.map +1 -0
- package/dist/chunk-FYFPGECC.js +39 -0
- package/dist/chunk-FYFPGECC.js.map +1 -0
- package/dist/chunk-GFZKSV7F.cjs +73 -0
- package/dist/chunk-GFZKSV7F.cjs.map +1 -0
- package/dist/chunk-GGXFXP6U.js +130 -0
- package/dist/chunk-GGXFXP6U.js.map +1 -0
- package/dist/chunk-HLRY4SDE.js +43 -0
- package/dist/chunk-HLRY4SDE.js.map +1 -0
- package/dist/chunk-HYWJ73QZ.cjs +155 -0
- package/dist/chunk-HYWJ73QZ.cjs.map +1 -0
- package/dist/chunk-I2ANUQHL.js +81 -0
- package/dist/chunk-I2ANUQHL.js.map +1 -0
- package/dist/chunk-IDASIFTM.js +56 -0
- package/dist/chunk-IDASIFTM.js.map +1 -0
- package/dist/chunk-IH7OSDQI.js +70 -0
- package/dist/chunk-IH7OSDQI.js.map +1 -0
- package/dist/chunk-IOBAQ35P.js +42 -0
- package/dist/chunk-IOBAQ35P.js.map +1 -0
- package/dist/chunk-IVANXF6O.js +107 -0
- package/dist/chunk-IVANXF6O.js.map +1 -0
- package/dist/chunk-JGO5TBYB.cjs +58 -0
- package/dist/chunk-JGO5TBYB.cjs.map +1 -0
- package/dist/chunk-JQ55FV4C.js +75 -0
- package/dist/chunk-JQ55FV4C.js.map +1 -0
- package/dist/chunk-JQDD6AYM.js +52 -0
- package/dist/chunk-JQDD6AYM.js.map +1 -0
- package/dist/chunk-JWE5X3SW.cjs +80 -0
- package/dist/chunk-JWE5X3SW.cjs.map +1 -0
- package/dist/chunk-KFFQVTKW.cjs +91 -0
- package/dist/chunk-KFFQVTKW.cjs.map +1 -0
- package/dist/chunk-LC5SUZE5.cjs +80 -0
- package/dist/chunk-LC5SUZE5.cjs.map +1 -0
- package/dist/chunk-LCABZUFW.js +3 -0
- package/dist/chunk-LCABZUFW.js.map +1 -0
- package/dist/chunk-MFRGAZ4M.cjs +157 -0
- package/dist/chunk-MFRGAZ4M.cjs.map +1 -0
- package/dist/chunk-MIR34HKE.cjs +91 -0
- package/dist/chunk-MIR34HKE.cjs.map +1 -0
- package/dist/chunk-MP442EWS.cjs +152 -0
- package/dist/chunk-MP442EWS.cjs.map +1 -0
- package/dist/chunk-MTIJTTKO.cjs +75 -0
- package/dist/chunk-MTIJTTKO.cjs.map +1 -0
- package/dist/chunk-MVGUWG27.js +56 -0
- package/dist/chunk-MVGUWG27.js.map +1 -0
- package/dist/chunk-MWP6IFVJ.cjs +93 -0
- package/dist/chunk-MWP6IFVJ.cjs.map +1 -0
- package/dist/chunk-NF7D4E7V.js +52 -0
- package/dist/chunk-NF7D4E7V.js.map +1 -0
- package/dist/chunk-NRBDDNYV.cjs +107 -0
- package/dist/chunk-NRBDDNYV.cjs.map +1 -0
- package/dist/chunk-OBDN7ROH.cjs +490 -0
- package/dist/chunk-OBDN7ROH.cjs.map +1 -0
- package/dist/chunk-OE7M66OR.cjs +56 -0
- package/dist/chunk-OE7M66OR.cjs.map +1 -0
- package/dist/chunk-PGUGP5EL.cjs +135 -0
- package/dist/chunk-PGUGP5EL.cjs.map +1 -0
- package/dist/chunk-Q7764J2G.cjs +61 -0
- package/dist/chunk-Q7764J2G.cjs.map +1 -0
- package/dist/chunk-QYQDCGOD.js +82 -0
- package/dist/chunk-QYQDCGOD.js.map +1 -0
- package/dist/chunk-RDYETV4X.cjs +64 -0
- package/dist/chunk-RDYETV4X.cjs.map +1 -0
- package/dist/chunk-RIXU7XN6.cjs +90 -0
- package/dist/chunk-RIXU7XN6.cjs.map +1 -0
- package/dist/chunk-RKGIGQ5C.cjs +4 -0
- package/dist/chunk-RKGIGQ5C.cjs.map +1 -0
- package/dist/chunk-RS457SPB.js +464 -0
- package/dist/chunk-RS457SPB.js.map +1 -0
- package/dist/chunk-SG5Z3YFN.cjs +83 -0
- package/dist/chunk-SG5Z3YFN.cjs.map +1 -0
- package/dist/chunk-SHEMISNH.cjs +81 -0
- package/dist/chunk-SHEMISNH.cjs.map +1 -0
- package/dist/chunk-SPHRMXOV.js +85 -0
- package/dist/chunk-SPHRMXOV.js.map +1 -0
- package/dist/chunk-TIWBLISD.js +87 -0
- package/dist/chunk-TIWBLISD.js.map +1 -0
- package/dist/chunk-TMR56BBE.js +3 -0
- package/dist/chunk-TMR56BBE.js.map +1 -0
- package/dist/chunk-U5KHRCO4.cjs +105 -0
- package/dist/chunk-U5KHRCO4.cjs.map +1 -0
- package/dist/chunk-UPW5X46R.js +58 -0
- package/dist/chunk-UPW5X46R.js.map +1 -0
- package/dist/chunk-UXYAKGI2.cjs +24 -0
- package/dist/chunk-UXYAKGI2.cjs.map +1 -0
- package/dist/chunk-VBT7USXE.cjs +63 -0
- package/dist/chunk-VBT7USXE.cjs.map +1 -0
- package/dist/chunk-VIA2FAQY.js +46 -0
- package/dist/chunk-VIA2FAQY.js.map +1 -0
- package/dist/chunk-WEVRQAGZ.js +57 -0
- package/dist/chunk-WEVRQAGZ.js.map +1 -0
- package/dist/chunk-WWQNTWRL.js +107 -0
- package/dist/chunk-WWQNTWRL.js.map +1 -0
- package/dist/chunk-X4QHDEEJ.cjs +4 -0
- package/dist/chunk-X4QHDEEJ.cjs.map +1 -0
- package/dist/chunk-XJZNX76V.js +66 -0
- package/dist/chunk-XJZNX76V.js.map +1 -0
- package/dist/chunk-XRUGFKB3.js +34 -0
- package/dist/chunk-XRUGFKB3.js.map +1 -0
- package/dist/chunk-XURQVDCN.cjs +4 -0
- package/dist/chunk-XURQVDCN.cjs.map +1 -0
- package/dist/chunk-XVIQ4OUN.cjs +89 -0
- package/dist/chunk-XVIQ4OUN.cjs.map +1 -0
- package/dist/chunk-XWKZ72LI.cjs +80 -0
- package/dist/chunk-XWKZ72LI.cjs.map +1 -0
- package/dist/chunk-Y3CWICHE.js +3 -0
- package/dist/chunk-Y3CWICHE.js.map +1 -0
- package/dist/chunk-Z3U3EZRC.js +93 -0
- package/dist/chunk-Z3U3EZRC.js.map +1 -0
- package/dist/chunk-Z4JZDLTZ.cjs +109 -0
- package/dist/chunk-Z4JZDLTZ.cjs.map +1 -0
- package/dist/chunk-ZDARKNSQ.cjs +54 -0
- package/dist/chunk-ZDARKNSQ.cjs.map +1 -0
- package/dist/chunk-ZH3KC4ES.js +51 -0
- package/dist/chunk-ZH3KC4ES.js.map +1 -0
- package/dist/chunk-ZPUYNM37.js +3 -0
- package/dist/chunk-ZPUYNM37.js.map +1 -0
- package/dist/chunk-ZUODIL43.js +113 -0
- package/dist/chunk-ZUODIL43.js.map +1 -0
- package/dist/chunk-ZXL4IUJ4.cjs +129 -0
- package/dist/chunk-ZXL4IUJ4.cjs.map +1 -0
- package/dist/date-picker.cjs +15 -0
- package/dist/date-picker.cjs.map +1 -0
- package/dist/date-picker.d.cts +19 -0
- package/dist/date-picker.d.ts +19 -0
- package/dist/date-picker.js +6 -0
- package/dist/date-picker.js.map +1 -0
- package/dist/divider.cjs +13 -0
- package/dist/divider.cjs.map +1 -0
- package/dist/divider.d.cts +9 -0
- package/dist/divider.d.ts +9 -0
- package/dist/divider.js +4 -0
- package/dist/divider.js.map +1 -0
- package/dist/dropdown-menu.cjs +13 -0
- package/dist/dropdown-menu.cjs.map +1 -0
- package/dist/dropdown-menu.d.cts +23 -0
- package/dist/dropdown-menu.d.ts +23 -0
- package/dist/dropdown-menu.js +4 -0
- package/dist/dropdown-menu.js.map +1 -0
- package/dist/empty.cjs +13 -0
- package/dist/empty.cjs.map +1 -0
- package/dist/empty.d.cts +11 -0
- package/dist/empty.d.ts +11 -0
- package/dist/empty.js +4 -0
- package/dist/empty.js.map +1 -0
- package/dist/form.cjs +33 -0
- package/dist/form.cjs.map +1 -0
- package/dist/form.d.cts +18 -0
- package/dist/form.d.ts +18 -0
- package/dist/form.js +4 -0
- package/dist/form.js.map +1 -0
- package/dist/icon.cjs +13 -0
- package/dist/icon.cjs.map +1 -0
- package/dist/icon.d.cts +12 -0
- package/dist/icon.d.ts +12 -0
- package/dist/icon.js +4 -0
- package/dist/icon.js.map +1 -0
- package/dist/index.cjs +350 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +167 -0
- package/dist/index.d.ts +167 -0
- package/dist/index.js +130 -0
- package/dist/index.js.map +1 -0
- package/dist/modal.cjs +13 -0
- package/dist/modal.cjs.map +1 -0
- package/dist/modal.d.cts +17 -0
- package/dist/modal.d.ts +17 -0
- package/dist/modal.js +4 -0
- package/dist/modal.js.map +1 -0
- package/dist/otp-input.cjs +13 -0
- package/dist/otp-input.cjs.map +1 -0
- package/dist/otp-input.d.cts +17 -0
- package/dist/otp-input.d.ts +17 -0
- package/dist/otp-input.js +4 -0
- package/dist/otp-input.js.map +1 -0
- package/dist/pagination.cjs +13 -0
- package/dist/pagination.cjs.map +1 -0
- package/dist/pagination.d.cts +12 -0
- package/dist/pagination.d.ts +12 -0
- package/dist/pagination.js +4 -0
- package/dist/pagination.js.map +1 -0
- package/dist/popover.cjs +14 -0
- package/dist/popover.cjs.map +1 -0
- package/dist/popover.d.cts +16 -0
- package/dist/popover.d.ts +16 -0
- package/dist/popover.js +5 -0
- package/dist/popover.js.map +1 -0
- package/dist/progress.cjs +13 -0
- package/dist/progress.cjs.map +1 -0
- package/dist/progress.d.cts +12 -0
- package/dist/progress.d.ts +12 -0
- package/dist/progress.js +4 -0
- package/dist/progress.js.map +1 -0
- package/dist/radio.cjs +13 -0
- package/dist/radio.cjs.map +1 -0
- package/dist/radio.d.cts +16 -0
- package/dist/radio.d.ts +16 -0
- package/dist/radio.js +4 -0
- package/dist/radio.js.map +1 -0
- package/dist/select.cjs +13 -0
- package/dist/select.cjs.map +1 -0
- package/dist/select.d.cts +23 -0
- package/dist/select.d.ts +23 -0
- package/dist/select.js +4 -0
- package/dist/select.js.map +1 -0
- package/dist/skeleton.cjs +13 -0
- package/dist/skeleton.cjs.map +1 -0
- package/dist/skeleton.d.cts +11 -0
- package/dist/skeleton.d.ts +11 -0
- package/dist/skeleton.js +4 -0
- package/dist/skeleton.js.map +1 -0
- package/dist/slider.cjs +13 -0
- package/dist/slider.cjs.map +1 -0
- package/dist/slider.d.cts +11 -0
- package/dist/slider.d.ts +11 -0
- package/dist/slider.js +4 -0
- package/dist/slider.js.map +1 -0
- package/dist/spinner.cjs +14 -0
- package/dist/spinner.cjs.map +1 -0
- package/dist/spinner.d.cts +18 -0
- package/dist/spinner.d.ts +18 -0
- package/dist/spinner.js +5 -0
- package/dist/spinner.js.map +1 -0
- package/dist/stepper.cjs +13 -0
- package/dist/stepper.cjs.map +1 -0
- package/dist/stepper.d.cts +15 -0
- package/dist/stepper.d.ts +15 -0
- package/dist/stepper.js +4 -0
- package/dist/stepper.js.map +1 -0
- package/dist/table.cjs +13 -0
- package/dist/table.cjs.map +1 -0
- package/dist/table.d.cts +23 -0
- package/dist/table.d.ts +23 -0
- package/dist/table.js +4 -0
- package/dist/table.js.map +1 -0
- package/dist/tabs.cjs +13 -0
- package/dist/tabs.cjs.map +1 -0
- package/dist/tabs.d.cts +16 -0
- package/dist/tabs.d.ts +16 -0
- package/dist/tabs.js +4 -0
- package/dist/tabs.js.map +1 -0
- package/dist/text.cjs +18 -0
- package/dist/text.cjs.map +1 -0
- package/dist/text.d.cts +18 -0
- package/dist/text.d.ts +18 -0
- package/dist/text.js +5 -0
- package/dist/text.js.map +1 -0
- package/dist/textarea.cjs +13 -0
- package/dist/textarea.cjs.map +1 -0
- package/dist/textarea.d.cts +13 -0
- package/dist/textarea.d.ts +13 -0
- package/dist/textarea.js +4 -0
- package/dist/textarea.js.map +1 -0
- package/dist/textfield.cjs +13 -0
- package/dist/textfield.cjs.map +1 -0
- package/dist/textfield.d.cts +11 -0
- package/dist/textfield.d.ts +11 -0
- package/dist/textfield.js +4 -0
- package/dist/textfield.js.map +1 -0
- package/dist/toast.cjs +37 -0
- package/dist/toast.cjs.map +1 -0
- package/dist/toast.d.cts +53 -0
- package/dist/toast.d.ts +53 -0
- package/dist/toast.js +4 -0
- package/dist/toast.js.map +1 -0
- package/dist/toggle.cjs +13 -0
- package/dist/toggle.cjs.map +1 -0
- package/dist/toggle.d.cts +10 -0
- package/dist/toggle.d.ts +10 -0
- package/dist/toggle.js +4 -0
- package/dist/toggle.js.map +1 -0
- package/dist/tooltip.cjs +13 -0
- package/dist/tooltip.cjs.map +1 -0
- package/dist/tooltip.d.cts +15 -0
- package/dist/tooltip.d.ts +15 -0
- package/dist/tooltip.js +4 -0
- package/dist/tooltip.js.map +1 -0
- package/package.json +276 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk4V3IOZPC_cjs = require('./chunk-4V3IOZPC.cjs');
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
|
|
6
|
+
function Table({
|
|
7
|
+
columns,
|
|
8
|
+
data,
|
|
9
|
+
keyExtractor,
|
|
10
|
+
emptyMessage = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",
|
|
11
|
+
loading,
|
|
12
|
+
striped,
|
|
13
|
+
className,
|
|
14
|
+
caption
|
|
15
|
+
}) {
|
|
16
|
+
const alignClass = {
|
|
17
|
+
left: "text-left",
|
|
18
|
+
center: "text-center",
|
|
19
|
+
right: "text-right"
|
|
20
|
+
};
|
|
21
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk4V3IOZPC_cjs.cn("w-full overflow-x-auto rounded-xl border border-[var(--color-border)]", className), children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "w-full border-collapse text-[14px]", children: [
|
|
22
|
+
caption && /* @__PURE__ */ jsxRuntime.jsx("caption", { className: "mb-2 text-[13px] text-[var(--color-muted-foreground)] caption-bottom", children: caption }),
|
|
23
|
+
/* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { className: "border-b border-[var(--color-border)] bg-[var(--color-muted)]", children: columns.map((col, i) => {
|
|
24
|
+
var _a;
|
|
25
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26
|
+
"th",
|
|
27
|
+
{
|
|
28
|
+
style: col.width ? { width: col.width } : void 0,
|
|
29
|
+
className: chunk4V3IOZPC_cjs.cn(
|
|
30
|
+
"px-4 py-3 font-semibold text-[var(--color-muted-foreground)] whitespace-nowrap",
|
|
31
|
+
alignClass[(_a = col.align) != null ? _a : "left"]
|
|
32
|
+
),
|
|
33
|
+
children: col.header
|
|
34
|
+
},
|
|
35
|
+
String(col.key) + i
|
|
36
|
+
);
|
|
37
|
+
}) }) }),
|
|
38
|
+
/* @__PURE__ */ jsxRuntime.jsx("tbody", { children: loading ? /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan: columns.length, className: "px-4 py-8 text-center text-[var(--color-muted-foreground)]", children: /* @__PURE__ */ jsxRuntime.jsx(LoadingSpinner, {}) }) }) : data.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan: columns.length, className: "px-4 py-8 text-center text-[var(--color-muted-foreground)]", children: emptyMessage }) }) : data.map((row, rowIndex) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
39
|
+
"tr",
|
|
40
|
+
{
|
|
41
|
+
className: chunk4V3IOZPC_cjs.cn(
|
|
42
|
+
"border-b border-[var(--color-border)] last:border-b-0",
|
|
43
|
+
"transition-colors duration-100 hover:bg-[var(--color-muted)]/50",
|
|
44
|
+
striped && rowIndex % 2 === 1 && "bg-[var(--color-muted)]/30"
|
|
45
|
+
),
|
|
46
|
+
children: columns.map((col, colIndex) => {
|
|
47
|
+
var _a;
|
|
48
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
49
|
+
"td",
|
|
50
|
+
{
|
|
51
|
+
className: chunk4V3IOZPC_cjs.cn(
|
|
52
|
+
"px-4 py-3 text-[var(--color-foreground)]",
|
|
53
|
+
alignClass[(_a = col.align) != null ? _a : "left"]
|
|
54
|
+
),
|
|
55
|
+
children: col.render ? col.render(row, rowIndex) : row[col.key]
|
|
56
|
+
},
|
|
57
|
+
String(col.key) + colIndex
|
|
58
|
+
);
|
|
59
|
+
})
|
|
60
|
+
},
|
|
61
|
+
keyExtractor ? keyExtractor(row, rowIndex) : rowIndex
|
|
62
|
+
)) })
|
|
63
|
+
] }) });
|
|
64
|
+
}
|
|
65
|
+
function LoadingSpinner() {
|
|
66
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
67
|
+
"svg",
|
|
68
|
+
{
|
|
69
|
+
className: "h-6 w-6 animate-spin text-[var(--color-primary)]",
|
|
70
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
71
|
+
fill: "none",
|
|
72
|
+
viewBox: "0 0 24 24",
|
|
73
|
+
children: [
|
|
74
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
|
|
75
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z" })
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
) });
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
exports.Table = Table;
|
|
82
|
+
//# sourceMappingURL=chunk-SG5Z3YFN.cjs.map
|
|
83
|
+
//# sourceMappingURL=chunk-SG5Z3YFN.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Table/Table.tsx"],"names":["jsx","cn","jsxs"],"mappings":"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","file":"chunk-SG5Z3YFN.cjs","sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface TableColumn<T> {\n key: keyof T | string;\n header: React.ReactNode;\n render?: (row: T, index: number) => React.ReactNode;\n align?: \"left\" | \"center\" | \"right\";\n width?: string;\n}\n\nexport interface TableProps<T> {\n columns: TableColumn<T>[];\n data: T[];\n keyExtractor?: (row: T, index: number) => string | number;\n emptyMessage?: string;\n loading?: boolean;\n striped?: boolean;\n className?: string;\n caption?: string;\n}\n\nfunction Table<T extends object>({\n columns,\n data,\n keyExtractor,\n emptyMessage = \"데이터가 없습니다.\",\n loading,\n striped,\n className,\n caption,\n}: TableProps<T>) {\n const alignClass = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n };\n\n return (\n <div className={cn(\"w-full overflow-x-auto rounded-xl border border-[var(--color-border)]\", className)}>\n <table className=\"w-full border-collapse text-[14px]\">\n {caption && (\n <caption className=\"mb-2 text-[13px] text-[var(--color-muted-foreground)] caption-bottom\">\n {caption}\n </caption>\n )}\n <thead>\n <tr className=\"border-b border-[var(--color-border)] bg-[var(--color-muted)]\">\n {columns.map((col, i) => (\n <th\n key={String(col.key) + i}\n style={col.width ? { width: col.width } : undefined}\n className={cn(\n \"px-4 py-3 font-semibold text-[var(--color-muted-foreground)] whitespace-nowrap\",\n alignClass[col.align ?? \"left\"]\n )}\n >\n {col.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {loading ? (\n <tr>\n <td colSpan={columns.length} className=\"px-4 py-8 text-center text-[var(--color-muted-foreground)]\">\n <LoadingSpinner />\n </td>\n </tr>\n ) : data.length === 0 ? (\n <tr>\n <td colSpan={columns.length} className=\"px-4 py-8 text-center text-[var(--color-muted-foreground)]\">\n {emptyMessage}\n </td>\n </tr>\n ) : (\n data.map((row, rowIndex) => (\n <tr\n key={keyExtractor ? keyExtractor(row, rowIndex) : rowIndex}\n className={cn(\n \"border-b border-[var(--color-border)] last:border-b-0\",\n \"transition-colors duration-100 hover:bg-[var(--color-muted)]/50\",\n striped && rowIndex % 2 === 1 && \"bg-[var(--color-muted)]/30\"\n )}\n >\n {columns.map((col, colIndex) => (\n <td\n key={String(col.key) + colIndex}\n className={cn(\n \"px-4 py-3 text-[var(--color-foreground)]\",\n alignClass[col.align ?? \"left\"]\n )}\n >\n {col.render\n ? col.render(row, rowIndex)\n : (row[col.key as keyof T] as React.ReactNode)}\n </td>\n ))}\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n );\n}\n\nfunction LoadingSpinner() {\n return (\n <div className=\"flex justify-center\">\n <svg\n className=\"h-6 w-6 animate-spin text-[var(--color-primary)]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\" />\n </svg>\n </div>\n );\n}\n\nexport { Table };\n"]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk4V3IOZPC_cjs = require('./chunk-4V3IOZPC.cjs');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var TabsPrimitive = require('@radix-ui/react-tabs');
|
|
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
|
+
var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
|
|
28
|
+
|
|
29
|
+
var Tabs = React__namespace.forwardRef((_a, ref) => {
|
|
30
|
+
var _b = _a, { className, items, variant = "line" } = _b, props = chunk4V3IOZPC_cjs.__objRest(_b, ["className", "items", "variant"]);
|
|
31
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(TabsPrimitive__namespace.Root, chunk4V3IOZPC_cjs.__spreadProps(chunk4V3IOZPC_cjs.__spreadValues({ ref, className: chunk4V3IOZPC_cjs.cn("w-full", className) }, props), { children: [
|
|
32
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
33
|
+
TabsPrimitive__namespace.List,
|
|
34
|
+
{
|
|
35
|
+
className: chunk4V3IOZPC_cjs.cn(
|
|
36
|
+
"flex",
|
|
37
|
+
variant === "line" ? "border-b border-[var(--color-border)] gap-0" : "gap-2 bg-[var(--color-muted)] rounded-xl p-1"
|
|
38
|
+
),
|
|
39
|
+
children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
40
|
+
TabsPrimitive__namespace.Trigger,
|
|
41
|
+
{
|
|
42
|
+
value: item.value,
|
|
43
|
+
disabled: item.disabled,
|
|
44
|
+
className: chunk4V3IOZPC_cjs.cn(
|
|
45
|
+
"transition-colors duration-150 select-none outline-none",
|
|
46
|
+
"disabled:opacity-40 disabled:cursor-not-allowed",
|
|
47
|
+
variant === "line" ? chunk4V3IOZPC_cjs.cn(
|
|
48
|
+
"px-4 py-3 text-[15px] font-medium text-[var(--color-muted-foreground)]",
|
|
49
|
+
"border-b-2 border-transparent -mb-px",
|
|
50
|
+
"hover:text-[var(--color-foreground)]",
|
|
51
|
+
"data-[state=active]:text-[var(--color-primary)] data-[state=active]:border-[var(--color-primary)]",
|
|
52
|
+
"focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-t-md"
|
|
53
|
+
) : chunk4V3IOZPC_cjs.cn(
|
|
54
|
+
"flex-1 rounded-lg px-4 py-2 text-[14px] font-medium text-[var(--color-muted-foreground)]",
|
|
55
|
+
"hover:text-[var(--color-foreground)]",
|
|
56
|
+
"data-[state=active]:bg-[var(--color-surface)] data-[state=active]:text-[var(--color-foreground)] data-[state=active]:shadow-sm",
|
|
57
|
+
"focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2"
|
|
58
|
+
)
|
|
59
|
+
),
|
|
60
|
+
children: item.label
|
|
61
|
+
},
|
|
62
|
+
item.value
|
|
63
|
+
))
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
67
|
+
TabsPrimitive__namespace.Content,
|
|
68
|
+
{
|
|
69
|
+
value: item.value,
|
|
70
|
+
className: "mt-4 outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-md",
|
|
71
|
+
children: item.content
|
|
72
|
+
},
|
|
73
|
+
item.value
|
|
74
|
+
))
|
|
75
|
+
] }));
|
|
76
|
+
});
|
|
77
|
+
Tabs.displayName = "Tabs";
|
|
78
|
+
|
|
79
|
+
exports.Tabs = Tabs;
|
|
80
|
+
//# sourceMappingURL=chunk-SHEMISNH.cjs.map
|
|
81
|
+
//# sourceMappingURL=chunk-SHEMISNH.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Tabs/Tabs.tsx"],"names":["React","__objRest","jsxs","TabsPrimitive","__spreadProps","cn","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,IAAM,IAAA,GAAaA,gBAAA,CAAA,UAAA,CAGjB,CAAC,EAAA,EAAkD,GAAA,KAAK;AAAvD,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EAAW,KAAA,EAAO,OAAA,GAAU,MAAA,EAnBjC,GAmBG,IAAyC,KAAA,GAAAC,2BAAA,CAAzC,EAAA,EAAyC,CAAvC,WAAA,EAAW,OAAA,EAAO,SAAA,CAAA,CAAA;AACrB,EAAA,uBAAAC,eAAA,CAAeC,wBAAA,CAAA,IAAA,EAAdC,mEAAmB,GAAA,EAAU,SAAA,EAAWC,qBAAG,QAAA,EAAU,SAAS,CAAA,EAAA,EAAO,KAAA,CAAA,EAArE,EACC,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAAeH,wBAAA,CAAA,IAAA;AAAA,MAAd;AAAA,QACC,SAAA,EAAWE,oBAAA;AAAA,UACT,MAAA;AAAA,UACA,OAAA,KAAY,SACR,6CAAA,GACA;AAAA,SACN;AAAA,QAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVC,cAAA;AAAA,UAAeH,wBAAA,CAAA,OAAA;AAAA,UAAd;AAAA,YAEC,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,SAAA,EAAWE,oBAAA;AAAA,cACT,yDAAA;AAAA,cACA,iDAAA;AAAA,cACA,YAAY,MAAA,GACRA,oBAAA;AAAA,gBACE,wEAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,mGAAA;AAAA,gBACA;AAAA,eACF,GACAA,oBAAA;AAAA,gBACE,0FAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,gIAAA;AAAA,gBACA;AAAA;AACF,aACN;AAAA,YAEC,QAAA,EAAA,IAAA,CAAK;AAAA,WAAA;AAAA,UAtBD,IAAA,CAAK;AAAA,SAwBb;AAAA;AAAA,KACH;AAAA,IAEC,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVC,cAAA;AAAA,MAAeH,wBAAA,CAAA,OAAA;AAAA,MAAd;AAAA,QAEC,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,SAAA,EAAU,yHAAA;AAAA,QAET,QAAA,EAAA,IAAA,CAAK;AAAA,OAAA;AAAA,MAJD,IAAA,CAAK;AAAA,KAMb;AAAA,GAAA,EAAA,CACH,CAAA;AAAA,CACD;AACD,IAAA,CAAK,WAAA,GAAc,MAAA","file":"chunk-SHEMISNH.cjs","sourcesContent":["import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface TabItem {\n value: string;\n label: string;\n content: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface TabsProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {\n items: TabItem[];\n variant?: \"line\" | \"pill\";\n}\n\nconst Tabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n TabsProps\n>(({ className, items, variant = \"line\", ...props }, ref) => (\n <TabsPrimitive.Root ref={ref} className={cn(\"w-full\", className)} {...props}>\n <TabsPrimitive.List\n className={cn(\n \"flex\",\n variant === \"line\"\n ? \"border-b border-[var(--color-border)] gap-0\"\n : \"gap-2 bg-[var(--color-muted)] rounded-xl p-1\"\n )}\n >\n {items.map((item) => (\n <TabsPrimitive.Trigger\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n className={cn(\n \"transition-colors duration-150 select-none outline-none\",\n \"disabled:opacity-40 disabled:cursor-not-allowed\",\n variant === \"line\"\n ? cn(\n \"px-4 py-3 text-[15px] font-medium text-[var(--color-muted-foreground)]\",\n \"border-b-2 border-transparent -mb-px\",\n \"hover:text-[var(--color-foreground)]\",\n \"data-[state=active]:text-[var(--color-primary)] data-[state=active]:border-[var(--color-primary)]\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-t-md\"\n )\n : cn(\n \"flex-1 rounded-lg px-4 py-2 text-[14px] font-medium text-[var(--color-muted-foreground)]\",\n \"hover:text-[var(--color-foreground)]\",\n \"data-[state=active]:bg-[var(--color-surface)] data-[state=active]:text-[var(--color-foreground)] data-[state=active]:shadow-sm\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2\"\n )\n )}\n >\n {item.label}\n </TabsPrimitive.Trigger>\n ))}\n </TabsPrimitive.List>\n\n {items.map((item) => (\n <TabsPrimitive.Content\n key={item.value}\n value={item.value}\n className=\"mt-4 outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-md\"\n >\n {item.content}\n </TabsPrimitive.Content>\n ))}\n </TabsPrimitive.Root>\n));\nTabs.displayName = \"Tabs\";\n\nexport { Tabs };\n"]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { cn } from './chunk-MVGUWG27.js';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
function getStatus(index, currentStep) {
|
|
6
|
+
if (index < currentStep) return "completed";
|
|
7
|
+
if (index === currentStep) return "active";
|
|
8
|
+
return "upcoming";
|
|
9
|
+
}
|
|
10
|
+
var Stepper = ({ steps, currentStep, orientation = "horizontal", className }) => {
|
|
11
|
+
if (orientation === "vertical") {
|
|
12
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col", className), children: steps.map((step, index) => {
|
|
13
|
+
const status = getStatus(index, currentStep);
|
|
14
|
+
const isLast = index === steps.length - 1;
|
|
15
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex gap-4", children: [
|
|
16
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
|
|
17
|
+
/* @__PURE__ */ jsx(StepIndicator, { index, status }),
|
|
18
|
+
!isLast && /* @__PURE__ */ jsx(
|
|
19
|
+
"div",
|
|
20
|
+
{
|
|
21
|
+
className: cn(
|
|
22
|
+
"w-0.5 flex-1 mt-1 mb-1 min-h-[24px]",
|
|
23
|
+
status === "completed" ? "bg-[var(--color-primary)]" : "bg-[var(--color-border)]"
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
)
|
|
27
|
+
] }),
|
|
28
|
+
/* @__PURE__ */ jsx("div", { className: cn("flex flex-col pb-6", isLast && "pb-0"), children: /* @__PURE__ */ jsx(StepLabel, { step, status }) })
|
|
29
|
+
] }, index);
|
|
30
|
+
}) });
|
|
31
|
+
}
|
|
32
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex items-start", className), children: steps.map((step, index) => {
|
|
33
|
+
const status = getStatus(index, currentStep);
|
|
34
|
+
const isLast = index === steps.length - 1;
|
|
35
|
+
return /* @__PURE__ */ jsxs(React.Fragment, { children: [
|
|
36
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2 min-w-0 flex-1", children: [
|
|
37
|
+
/* @__PURE__ */ jsx(StepIndicator, { index, status }),
|
|
38
|
+
/* @__PURE__ */ jsx(StepLabel, { step, status, centered: true })
|
|
39
|
+
] }),
|
|
40
|
+
!isLast && /* @__PURE__ */ jsx(
|
|
41
|
+
"div",
|
|
42
|
+
{
|
|
43
|
+
className: cn(
|
|
44
|
+
"h-0.5 flex-1 mt-[18px] mx-2 shrink",
|
|
45
|
+
status === "completed" ? "bg-[var(--color-primary)]" : "bg-[var(--color-border)]"
|
|
46
|
+
)
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
] }, index);
|
|
50
|
+
}) });
|
|
51
|
+
};
|
|
52
|
+
function StepIndicator({ index, status }) {
|
|
53
|
+
return /* @__PURE__ */ jsx(
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
className: cn(
|
|
57
|
+
"flex h-9 w-9 shrink-0 items-center justify-center rounded-full text-[14px] font-semibold transition-colors duration-200",
|
|
58
|
+
status === "completed" ? "bg-[var(--color-primary)] text-white" : status === "active" ? "border-2 border-[var(--color-primary)] text-[var(--color-primary)] bg-[var(--color-surface)]" : "border-2 border-[var(--color-border)] text-[var(--color-muted-foreground)] bg-[var(--color-surface)]"
|
|
59
|
+
),
|
|
60
|
+
children: status === "completed" ? /* @__PURE__ */ jsx(CheckIcon, {}) : /* @__PURE__ */ jsx("span", { children: index + 1 })
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
function StepLabel({ step, status, centered }) {
|
|
65
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-0.5", centered && "items-center text-center"), children: [
|
|
66
|
+
/* @__PURE__ */ jsx(
|
|
67
|
+
"span",
|
|
68
|
+
{
|
|
69
|
+
className: cn(
|
|
70
|
+
"text-[13px] font-medium",
|
|
71
|
+
status === "active" ? "text-[var(--color-primary)]" : status === "completed" ? "text-[var(--color-foreground)]" : "text-[var(--color-muted-foreground)]"
|
|
72
|
+
),
|
|
73
|
+
children: step.title
|
|
74
|
+
}
|
|
75
|
+
),
|
|
76
|
+
step.description && /* @__PURE__ */ jsx("span", { className: "text-[12px] text-[var(--color-muted-foreground)]", children: step.description })
|
|
77
|
+
] });
|
|
78
|
+
}
|
|
79
|
+
function CheckIcon() {
|
|
80
|
+
return /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("path", { d: "M20 6 9 17l-5-5" }) });
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export { Stepper };
|
|
84
|
+
//# sourceMappingURL=chunk-SPHRMXOV.js.map
|
|
85
|
+
//# sourceMappingURL=chunk-SPHRMXOV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Stepper/Stepper.tsx"],"names":[],"mappings":"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","file":"chunk-SPHRMXOV.js","sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface StepItem {\n title: string;\n description?: string;\n}\n\nexport type StepStatus = \"completed\" | \"active\" | \"upcoming\";\n\nexport interface StepperProps {\n steps: StepItem[];\n currentStep: number;\n orientation?: \"horizontal\" | \"vertical\";\n className?: string;\n}\n\nfunction getStatus(index: number, currentStep: number): StepStatus {\n if (index < currentStep) return \"completed\";\n if (index === currentStep) return \"active\";\n return \"upcoming\";\n}\n\nconst Stepper = ({ steps, currentStep, orientation = \"horizontal\", className }: StepperProps) => {\n if (orientation === \"vertical\") {\n return (\n <div className={cn(\"flex flex-col\", className)}>\n {steps.map((step, index) => {\n const status = getStatus(index, currentStep);\n const isLast = index === steps.length - 1;\n\n return (\n <div key={index} className=\"flex gap-4\">\n <div className=\"flex flex-col items-center\">\n <StepIndicator index={index} status={status} />\n {!isLast && (\n <div\n className={cn(\n \"w-0.5 flex-1 mt-1 mb-1 min-h-[24px]\",\n status === \"completed\" ? \"bg-[var(--color-primary)]\" : \"bg-[var(--color-border)]\"\n )}\n />\n )}\n </div>\n <div className={cn(\"flex flex-col pb-6\", isLast && \"pb-0\")}>\n <StepLabel step={step} status={status} />\n </div>\n </div>\n );\n })}\n </div>\n );\n }\n\n return (\n <div className={cn(\"flex items-start\", className)}>\n {steps.map((step, index) => {\n const status = getStatus(index, currentStep);\n const isLast = index === steps.length - 1;\n\n return (\n <React.Fragment key={index}>\n <div className=\"flex flex-col items-center gap-2 min-w-0 flex-1\">\n <StepIndicator index={index} status={status} />\n <StepLabel step={step} status={status} centered />\n </div>\n {!isLast && (\n <div\n className={cn(\n \"h-0.5 flex-1 mt-[18px] mx-2 shrink\",\n status === \"completed\" ? \"bg-[var(--color-primary)]\" : \"bg-[var(--color-border)]\"\n )}\n />\n )}\n </React.Fragment>\n );\n })}\n </div>\n );\n};\n\nfunction StepIndicator({ index, status }: { index: number; status: StepStatus }) {\n return (\n <div\n className={cn(\n \"flex h-9 w-9 shrink-0 items-center justify-center rounded-full text-[14px] font-semibold transition-colors duration-200\",\n status === \"completed\"\n ? \"bg-[var(--color-primary)] text-white\"\n : status === \"active\"\n ? \"border-2 border-[var(--color-primary)] text-[var(--color-primary)] bg-[var(--color-surface)]\"\n : \"border-2 border-[var(--color-border)] text-[var(--color-muted-foreground)] bg-[var(--color-surface)]\"\n )}\n >\n {status === \"completed\" ? <CheckIcon /> : <span>{index + 1}</span>}\n </div>\n );\n}\n\nfunction StepLabel({ step, status, centered }: { step: StepItem; status: StepStatus; centered?: boolean }) {\n return (\n <div className={cn(\"flex flex-col gap-0.5\", centered && \"items-center text-center\")}>\n <span\n className={cn(\n \"text-[13px] font-medium\",\n status === \"active\"\n ? \"text-[var(--color-primary)]\"\n : status === \"completed\"\n ? \"text-[var(--color-foreground)]\"\n : \"text-[var(--color-muted-foreground)]\"\n )}\n >\n {step.title}\n </span>\n {step.description && (\n <span className=\"text-[12px] text-[var(--color-muted-foreground)]\">{step.description}</span>\n )}\n </div>\n );\n}\n\nfunction CheckIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n\nexport { Stepper };\n"]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { cn } from './chunk-MVGUWG27.js';
|
|
2
|
+
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
3
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
var sizeClasses = {
|
|
6
|
+
sm: "max-w-sm",
|
|
7
|
+
md: "max-w-md",
|
|
8
|
+
lg: "max-w-lg",
|
|
9
|
+
full: "max-w-full h-full rounded-none m-0"
|
|
10
|
+
};
|
|
11
|
+
var Modal = ({
|
|
12
|
+
open,
|
|
13
|
+
onOpenChange,
|
|
14
|
+
title,
|
|
15
|
+
description,
|
|
16
|
+
children,
|
|
17
|
+
footer,
|
|
18
|
+
size = "md",
|
|
19
|
+
showCloseButton = true,
|
|
20
|
+
trigger
|
|
21
|
+
}) => /* @__PURE__ */ jsxs(DialogPrimitive.Root, { open, onOpenChange, children: [
|
|
22
|
+
trigger && /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { asChild: true, children: trigger }),
|
|
23
|
+
/* @__PURE__ */ jsxs(DialogPrimitive.Portal, { children: [
|
|
24
|
+
/* @__PURE__ */ jsx(
|
|
25
|
+
DialogPrimitive.Overlay,
|
|
26
|
+
{
|
|
27
|
+
className: cn(
|
|
28
|
+
"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm",
|
|
29
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
30
|
+
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"
|
|
31
|
+
)
|
|
32
|
+
}
|
|
33
|
+
),
|
|
34
|
+
/* @__PURE__ */ jsxs(
|
|
35
|
+
DialogPrimitive.Content,
|
|
36
|
+
{
|
|
37
|
+
className: cn(
|
|
38
|
+
"fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2",
|
|
39
|
+
"w-full bg-[var(--color-background)] shadow-xl",
|
|
40
|
+
"rounded-2xl p-6",
|
|
41
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
42
|
+
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
43
|
+
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
44
|
+
"data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]",
|
|
45
|
+
"data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",
|
|
46
|
+
"outline-none",
|
|
47
|
+
sizeClasses[size]
|
|
48
|
+
),
|
|
49
|
+
children: [
|
|
50
|
+
(title || showCloseButton) && /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between mb-4", children: [
|
|
51
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 pr-8", children: [
|
|
52
|
+
title && /* @__PURE__ */ jsx(DialogPrimitive.Title, { className: "text-[18px] font-semibold text-[var(--color-foreground)]", children: title }),
|
|
53
|
+
description && /* @__PURE__ */ jsx(DialogPrimitive.Description, { className: "text-[14px] text-[var(--color-muted-foreground)]", children: description })
|
|
54
|
+
] }),
|
|
55
|
+
showCloseButton && /* @__PURE__ */ jsxs(
|
|
56
|
+
DialogPrimitive.Close,
|
|
57
|
+
{
|
|
58
|
+
className: cn(
|
|
59
|
+
"absolute right-4 top-4 rounded-full p-1.5",
|
|
60
|
+
"text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)]",
|
|
61
|
+
"hover:bg-[var(--color-muted)] transition-colors duration-150",
|
|
62
|
+
"focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-offset-2"
|
|
63
|
+
),
|
|
64
|
+
children: [
|
|
65
|
+
/* @__PURE__ */ jsx(XIcon, {}),
|
|
66
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "\uB2EB\uAE30" })
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
)
|
|
70
|
+
] }),
|
|
71
|
+
children && /* @__PURE__ */ jsx("div", { className: "text-[15px] text-[var(--color-foreground)]", children }),
|
|
72
|
+
footer && /* @__PURE__ */ jsx("div", { className: "mt-6 flex gap-3 justify-end", children: footer })
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
)
|
|
76
|
+
] })
|
|
77
|
+
] });
|
|
78
|
+
function XIcon() {
|
|
79
|
+
return /* @__PURE__ */ jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
80
|
+
/* @__PURE__ */ jsx("path", { d: "M18 6 6 18" }),
|
|
81
|
+
/* @__PURE__ */ jsx("path", { d: "m6 6 12 12" })
|
|
82
|
+
] });
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export { Modal };
|
|
86
|
+
//# sourceMappingURL=chunk-TIWBLISD.js.map
|
|
87
|
+
//# sourceMappingURL=chunk-TIWBLISD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Modal/Modal.tsx"],"names":[],"mappings":"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","file":"chunk-TIWBLISD.js","sourcesContent":["import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface ModalProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n title?: string;\n description?: string;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n size?: \"sm\" | \"md\" | \"lg\" | \"full\";\n showCloseButton?: boolean;\n trigger?: React.ReactNode;\n}\n\nconst sizeClasses = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n full: \"max-w-full h-full rounded-none m-0\",\n};\n\nconst Modal = ({\n open,\n onOpenChange,\n title,\n description,\n children,\n footer,\n size = \"md\",\n showCloseButton = true,\n trigger,\n}: ModalProps) => (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n {trigger && <DialogPrimitive.Trigger asChild>{trigger}</DialogPrimitive.Trigger>}\n\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\"\n )}\n />\n <DialogPrimitive.Content\n className={cn(\n \"fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2\",\n \"w-full bg-[var(--color-background)] shadow-xl\",\n \"rounded-2xl p-6\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]\",\n \"data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\",\n \"outline-none\",\n sizeClasses[size]\n )}\n >\n {(title || showCloseButton) && (\n <div className=\"flex items-start justify-between mb-4\">\n <div className=\"flex flex-col gap-1 pr-8\">\n {title && (\n <DialogPrimitive.Title className=\"text-[18px] font-semibold text-[var(--color-foreground)]\">\n {title}\n </DialogPrimitive.Title>\n )}\n {description && (\n <DialogPrimitive.Description className=\"text-[14px] text-[var(--color-muted-foreground)]\">\n {description}\n </DialogPrimitive.Description>\n )}\n </div>\n {showCloseButton && (\n <DialogPrimitive.Close\n className={cn(\n \"absolute right-4 top-4 rounded-full p-1.5\",\n \"text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)]\",\n \"hover:bg-[var(--color-muted)] transition-colors duration-150\",\n \"focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-offset-2\"\n )}\n >\n <XIcon />\n <span className=\"sr-only\">닫기</span>\n </DialogPrimitive.Close>\n )}\n </div>\n )}\n\n {children && (\n <div className=\"text-[15px] text-[var(--color-foreground)]\">{children}</div>\n )}\n\n {footer && <div className=\"mt-6 flex gap-3 justify-end\">{footer}</div>}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n);\n\nfunction XIcon() {\n return (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 6 6 18\" /><path d=\"m6 6 12 12\" />\n </svg>\n );\n}\n\nexport { Modal };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-TMR56BBE.js"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkEVF7QZMA_cjs = require('./chunk-EVF7QZMA.cjs');
|
|
4
|
+
var chunk4V3IOZPC_cjs = require('./chunk-4V3IOZPC.cjs');
|
|
5
|
+
var React = require('react');
|
|
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 localeMap = {
|
|
29
|
+
KRW: "ko-KR",
|
|
30
|
+
USD: "en-US",
|
|
31
|
+
JPY: "ja-JP",
|
|
32
|
+
EUR: "de-DE",
|
|
33
|
+
GBP: "en-GB",
|
|
34
|
+
CNY: "zh-CN"
|
|
35
|
+
};
|
|
36
|
+
function formatAmount({
|
|
37
|
+
value,
|
|
38
|
+
currency,
|
|
39
|
+
locale,
|
|
40
|
+
showSign,
|
|
41
|
+
minimumFractionDigits,
|
|
42
|
+
maximumFractionDigits
|
|
43
|
+
}) {
|
|
44
|
+
var _a;
|
|
45
|
+
const resolvedLocale = locale != null ? locale : currency ? (_a = localeMap[currency]) != null ? _a : "ko-KR" : "ko-KR";
|
|
46
|
+
const options = chunk4V3IOZPC_cjs.__spreadProps(chunk4V3IOZPC_cjs.__spreadValues({}, currency ? { style: "currency", currency } : { style: "decimal" }), {
|
|
47
|
+
minimumFractionDigits: minimumFractionDigits != null ? minimumFractionDigits : currency === "KRW" || currency === "JPY" ? 0 : void 0,
|
|
48
|
+
maximumFractionDigits: maximumFractionDigits != null ? maximumFractionDigits : currency === "KRW" || currency === "JPY" ? 0 : void 0,
|
|
49
|
+
signDisplay: showSign ? "exceptZero" : "auto"
|
|
50
|
+
});
|
|
51
|
+
return new Intl.NumberFormat(resolvedLocale, options).format(value);
|
|
52
|
+
}
|
|
53
|
+
var Amount = React__namespace.forwardRef(
|
|
54
|
+
(_a, ref) => {
|
|
55
|
+
var _b = _a, {
|
|
56
|
+
className,
|
|
57
|
+
value,
|
|
58
|
+
currency,
|
|
59
|
+
locale,
|
|
60
|
+
showSign = false,
|
|
61
|
+
minimumFractionDigits,
|
|
62
|
+
maximumFractionDigits,
|
|
63
|
+
variant,
|
|
64
|
+
color: colorProp,
|
|
65
|
+
colorBySign = false
|
|
66
|
+
} = _b, props = chunk4V3IOZPC_cjs.__objRest(_b, [
|
|
67
|
+
"className",
|
|
68
|
+
"value",
|
|
69
|
+
"currency",
|
|
70
|
+
"locale",
|
|
71
|
+
"showSign",
|
|
72
|
+
"minimumFractionDigits",
|
|
73
|
+
"maximumFractionDigits",
|
|
74
|
+
"variant",
|
|
75
|
+
"color",
|
|
76
|
+
"colorBySign"
|
|
77
|
+
]);
|
|
78
|
+
const autoColor = colorBySign ? value > 0 ? "positive" : value < 0 ? "negative" : "default" : void 0;
|
|
79
|
+
const color = colorProp != null ? colorProp : autoColor;
|
|
80
|
+
const formatted = formatAmount({
|
|
81
|
+
value,
|
|
82
|
+
currency,
|
|
83
|
+
locale,
|
|
84
|
+
showSign,
|
|
85
|
+
minimumFractionDigits,
|
|
86
|
+
maximumFractionDigits
|
|
87
|
+
});
|
|
88
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
89
|
+
"span",
|
|
90
|
+
chunk4V3IOZPC_cjs.__spreadProps(chunk4V3IOZPC_cjs.__spreadValues({
|
|
91
|
+
ref,
|
|
92
|
+
className: chunk4V3IOZPC_cjs.cn(variant && chunkEVF7QZMA_cjs.textVariants({ variant, color }), !variant && color && chunkEVF7QZMA_cjs.textVariants({ color }), className),
|
|
93
|
+
"aria-label": `${formatted}`
|
|
94
|
+
}, props), {
|
|
95
|
+
children: formatted
|
|
96
|
+
})
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
Amount.displayName = "Amount";
|
|
101
|
+
|
|
102
|
+
exports.Amount = Amount;
|
|
103
|
+
exports.formatAmount = formatAmount;
|
|
104
|
+
//# sourceMappingURL=chunk-U5KHRCO4.cjs.map
|
|
105
|
+
//# sourceMappingURL=chunk-U5KHRCO4.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Amount/Amount.tsx"],"names":["__spreadProps","__spreadValues","React","__objRest","jsx","cn","textVariants"],"mappings":"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","file":"chunk-U5KHRCO4.cjs","sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { textVariants, type TextProps } from \"../Text/Text\";\n\nexport interface AmountProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n /** 표시할 숫자 */\n value: number;\n /**\n * ISO 4217 통화 코드. 지정하면 통화 기호가 앞/뒤에 붙습니다.\n * @example \"KRW\" | \"USD\" | \"JPY\" | \"EUR\"\n */\n currency?: string;\n /**\n * BCP 47 언어 태그. 기본값은 브라우저 환경 기준.\n * @example \"ko-KR\" | \"en-US\" | \"ja-JP\"\n */\n locale?: string;\n /** +/- 부호 표시 여부 */\n showSign?: boolean;\n /** 소수점 최소 자릿수 */\n minimumFractionDigits?: number;\n /** 소수점 최대 자릿수 */\n maximumFractionDigits?: number;\n /** 타이포그래피 variant */\n variant?: TextProps[\"variant\"];\n /** 색상 */\n color?: TextProps[\"color\"];\n /**\n * 양수/음수에 따라 color를 자동 적용.\n * showSign과 함께 쓸 때 유용합니다.\n */\n colorBySign?: boolean;\n}\n\nconst localeMap: Record<string, string> = {\n KRW: \"ko-KR\",\n USD: \"en-US\",\n JPY: \"ja-JP\",\n EUR: \"de-DE\",\n GBP: \"en-GB\",\n CNY: \"zh-CN\",\n};\n\nfunction formatAmount({\n value,\n currency,\n locale,\n showSign,\n minimumFractionDigits,\n maximumFractionDigits,\n}: Pick<\n AmountProps,\n | \"value\"\n | \"currency\"\n | \"locale\"\n | \"showSign\"\n | \"minimumFractionDigits\"\n | \"maximumFractionDigits\"\n>): string {\n const resolvedLocale = locale ?? (currency ? (localeMap[currency] ?? \"ko-KR\") : \"ko-KR\");\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const options: any = {\n ...(currency ? { style: \"currency\", currency } : { style: \"decimal\" }),\n minimumFractionDigits:\n minimumFractionDigits ?? (currency === \"KRW\" || currency === \"JPY\" ? 0 : undefined),\n maximumFractionDigits:\n maximumFractionDigits ?? (currency === \"KRW\" || currency === \"JPY\" ? 0 : undefined),\n signDisplay: showSign ? \"exceptZero\" : \"auto\",\n };\n\n return new Intl.NumberFormat(resolvedLocale, options).format(value);\n}\n\nconst Amount = React.forwardRef<HTMLSpanElement, AmountProps>(\n (\n {\n className,\n value,\n currency,\n locale,\n showSign = false,\n minimumFractionDigits,\n maximumFractionDigits,\n variant,\n color: colorProp,\n colorBySign = false,\n ...props\n },\n ref\n ) => {\n const autoColor: TextProps[\"color\"] =\n colorBySign\n ? value > 0\n ? \"positive\"\n : value < 0\n ? \"negative\"\n : \"default\"\n : undefined;\n\n const color = colorProp ?? autoColor;\n\n const formatted = formatAmount({\n value,\n currency,\n locale,\n showSign,\n minimumFractionDigits,\n maximumFractionDigits,\n });\n\n return (\n <span\n ref={ref}\n className={cn(variant && textVariants({ variant, color }), !variant && color && textVariants({ color }), className)}\n aria-label={`${formatted}`}\n {...props}\n >\n {formatted}\n </span>\n );\n }\n);\nAmount.displayName = \"Amount\";\n\nexport { Amount, formatAmount };\n"]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { __objRest, __spreadProps, __spreadValues, cn } from './chunk-MVGUWG27.js';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
4
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var Tabs = React.forwardRef((_a, ref) => {
|
|
7
|
+
var _b = _a, { className, items, variant = "line" } = _b, props = __objRest(_b, ["className", "items", "variant"]);
|
|
8
|
+
return /* @__PURE__ */ jsxs(TabsPrimitive.Root, __spreadProps(__spreadValues({ ref, className: cn("w-full", className) }, props), { children: [
|
|
9
|
+
/* @__PURE__ */ jsx(
|
|
10
|
+
TabsPrimitive.List,
|
|
11
|
+
{
|
|
12
|
+
className: cn(
|
|
13
|
+
"flex",
|
|
14
|
+
variant === "line" ? "border-b border-[var(--color-border)] gap-0" : "gap-2 bg-[var(--color-muted)] rounded-xl p-1"
|
|
15
|
+
),
|
|
16
|
+
children: items.map((item) => /* @__PURE__ */ jsx(
|
|
17
|
+
TabsPrimitive.Trigger,
|
|
18
|
+
{
|
|
19
|
+
value: item.value,
|
|
20
|
+
disabled: item.disabled,
|
|
21
|
+
className: cn(
|
|
22
|
+
"transition-colors duration-150 select-none outline-none",
|
|
23
|
+
"disabled:opacity-40 disabled:cursor-not-allowed",
|
|
24
|
+
variant === "line" ? cn(
|
|
25
|
+
"px-4 py-3 text-[15px] font-medium text-[var(--color-muted-foreground)]",
|
|
26
|
+
"border-b-2 border-transparent -mb-px",
|
|
27
|
+
"hover:text-[var(--color-foreground)]",
|
|
28
|
+
"data-[state=active]:text-[var(--color-primary)] data-[state=active]:border-[var(--color-primary)]",
|
|
29
|
+
"focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-t-md"
|
|
30
|
+
) : cn(
|
|
31
|
+
"flex-1 rounded-lg px-4 py-2 text-[14px] font-medium text-[var(--color-muted-foreground)]",
|
|
32
|
+
"hover:text-[var(--color-foreground)]",
|
|
33
|
+
"data-[state=active]:bg-[var(--color-surface)] data-[state=active]:text-[var(--color-foreground)] data-[state=active]:shadow-sm",
|
|
34
|
+
"focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2"
|
|
35
|
+
)
|
|
36
|
+
),
|
|
37
|
+
children: item.label
|
|
38
|
+
},
|
|
39
|
+
item.value
|
|
40
|
+
))
|
|
41
|
+
}
|
|
42
|
+
),
|
|
43
|
+
items.map((item) => /* @__PURE__ */ jsx(
|
|
44
|
+
TabsPrimitive.Content,
|
|
45
|
+
{
|
|
46
|
+
value: item.value,
|
|
47
|
+
className: "mt-4 outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-md",
|
|
48
|
+
children: item.content
|
|
49
|
+
},
|
|
50
|
+
item.value
|
|
51
|
+
))
|
|
52
|
+
] }));
|
|
53
|
+
});
|
|
54
|
+
Tabs.displayName = "Tabs";
|
|
55
|
+
|
|
56
|
+
export { Tabs };
|
|
57
|
+
//# sourceMappingURL=chunk-UPW5X46R.js.map
|
|
58
|
+
//# sourceMappingURL=chunk-UPW5X46R.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":";;;;;AAgBA,IAAM,IAAA,GAAa,KAAA,CAAA,UAAA,CAGjB,CAAC,EAAA,EAAkD,GAAA,KAAK;AAAvD,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EAAW,KAAA,EAAO,OAAA,GAAU,MAAA,EAnBjC,GAmBG,IAAyC,KAAA,GAAA,SAAA,CAAzC,EAAA,EAAyC,CAAvC,WAAA,EAAW,OAAA,EAAO,SAAA,CAAA,CAAA;AACrB,EAAA,uBAAA,IAAA,CAAe,aAAA,CAAA,IAAA,EAAd,+BAAmB,GAAA,EAAU,SAAA,EAAW,GAAG,QAAA,EAAU,SAAS,CAAA,EAAA,EAAO,KAAA,CAAA,EAArE,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAe,aAAA,CAAA,IAAA;AAAA,MAAd;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,MAAA;AAAA,UACA,OAAA,KAAY,SACR,6CAAA,GACA;AAAA,SACN;AAAA,QAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACV,GAAA;AAAA,UAAe,aAAA,CAAA,OAAA;AAAA,UAAd;AAAA,YAEC,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,SAAA,EAAW,EAAA;AAAA,cACT,yDAAA;AAAA,cACA,iDAAA;AAAA,cACA,YAAY,MAAA,GACR,EAAA;AAAA,gBACE,wEAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,mGAAA;AAAA,gBACA;AAAA,eACF,GACA,EAAA;AAAA,gBACE,0FAAA;AAAA,gBACA,sCAAA;AAAA,gBACA,gIAAA;AAAA,gBACA;AAAA;AACF,aACN;AAAA,YAEC,QAAA,EAAA,IAAA,CAAK;AAAA,WAAA;AAAA,UAtBD,IAAA,CAAK;AAAA,SAwBb;AAAA;AAAA,KACH;AAAA,IAEC,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACV,GAAA;AAAA,MAAe,aAAA,CAAA,OAAA;AAAA,MAAd;AAAA,QAEC,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,SAAA,EAAU,yHAAA;AAAA,QAET,QAAA,EAAA,IAAA,CAAK;AAAA,OAAA;AAAA,MAJD,IAAA,CAAK;AAAA,KAMb;AAAA,GAAA,EAAA,CACH,CAAA;AAAA,CACD;AACD,IAAA,CAAK,WAAA,GAAc,MAAA","file":"chunk-UPW5X46R.js","sourcesContent":["import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface TabItem {\n value: string;\n label: string;\n content: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface TabsProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {\n items: TabItem[];\n variant?: \"line\" | \"pill\";\n}\n\nconst Tabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n TabsProps\n>(({ className, items, variant = \"line\", ...props }, ref) => (\n <TabsPrimitive.Root ref={ref} className={cn(\"w-full\", className)} {...props}>\n <TabsPrimitive.List\n className={cn(\n \"flex\",\n variant === \"line\"\n ? \"border-b border-[var(--color-border)] gap-0\"\n : \"gap-2 bg-[var(--color-muted)] rounded-xl p-1\"\n )}\n >\n {items.map((item) => (\n <TabsPrimitive.Trigger\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n className={cn(\n \"transition-colors duration-150 select-none outline-none\",\n \"disabled:opacity-40 disabled:cursor-not-allowed\",\n variant === \"line\"\n ? cn(\n \"px-4 py-3 text-[15px] font-medium text-[var(--color-muted-foreground)]\",\n \"border-b-2 border-transparent -mb-px\",\n \"hover:text-[var(--color-foreground)]\",\n \"data-[state=active]:text-[var(--color-primary)] data-[state=active]:border-[var(--color-primary)]\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-t-md\"\n )\n : cn(\n \"flex-1 rounded-lg px-4 py-2 text-[14px] font-medium text-[var(--color-muted-foreground)]\",\n \"hover:text-[var(--color-foreground)]\",\n \"data-[state=active]:bg-[var(--color-surface)] data-[state=active]:text-[var(--color-foreground)] data-[state=active]:shadow-sm\",\n \"focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2\"\n )\n )}\n >\n {item.label}\n </TabsPrimitive.Trigger>\n ))}\n </TabsPrimitive.List>\n\n {items.map((item) => (\n <TabsPrimitive.Content\n key={item.value}\n value={item.value}\n className=\"mt-4 outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2 rounded-md\"\n >\n {item.content}\n </TabsPrimitive.Content>\n ))}\n </TabsPrimitive.Root>\n));\nTabs.displayName = \"Tabs\";\n\nexport { Tabs };\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var framerMotion = require('framer-motion');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "AnimatePresence", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () { return framerMotion.AnimatePresence; }
|
|
10
|
+
});
|
|
11
|
+
Object.defineProperty(exports, "LazyMotion", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () { return framerMotion.LazyMotion; }
|
|
14
|
+
});
|
|
15
|
+
Object.defineProperty(exports, "domAnimation", {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return framerMotion.domAnimation; }
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "m", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return framerMotion.m; }
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=chunk-UXYAKGI2.cjs.map
|
|
24
|
+
//# sourceMappingURL=chunk-UXYAKGI2.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-UXYAKGI2.cjs","sourcesContent":[]}
|