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,57 @@
|
|
|
1
|
+
import { LazyMotion, domAnimation, m } from './chunk-Y3CWICHE.js';
|
|
2
|
+
import { cn } from './chunk-MVGUWG27.js';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var cardVariants = cva(
|
|
8
|
+
"rounded-2xl bg-[var(--color-background)] overflow-hidden",
|
|
9
|
+
{
|
|
10
|
+
variants: {
|
|
11
|
+
variant: {
|
|
12
|
+
elevated: "shadow-[var(--shadow-md)]",
|
|
13
|
+
outlined: "border border-[var(--color-border)]",
|
|
14
|
+
filled: "bg-[var(--color-muted)]"
|
|
15
|
+
},
|
|
16
|
+
padding: {
|
|
17
|
+
none: "",
|
|
18
|
+
sm: "p-4",
|
|
19
|
+
md: "p-5",
|
|
20
|
+
lg: "p-6"
|
|
21
|
+
},
|
|
22
|
+
interactive: {
|
|
23
|
+
true: "cursor-pointer"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
defaultVariants: {
|
|
27
|
+
variant: "elevated",
|
|
28
|
+
padding: "md"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
var Card = React.forwardRef(
|
|
33
|
+
({ className, variant, padding, interactive, onClick, children, style, id, "aria-label": ariaLabel }, ref) => {
|
|
34
|
+
const isInteractive = interactive || !!onClick;
|
|
35
|
+
return /* @__PURE__ */ jsx(LazyMotion, { features: domAnimation, children: /* @__PURE__ */ jsx(
|
|
36
|
+
m.div,
|
|
37
|
+
{
|
|
38
|
+
ref,
|
|
39
|
+
id,
|
|
40
|
+
"aria-label": ariaLabel,
|
|
41
|
+
style,
|
|
42
|
+
className: cn(cardVariants({ variant, padding, interactive: isInteractive || void 0 }), className),
|
|
43
|
+
whileTap: isInteractive ? { scale: 0.98 } : void 0,
|
|
44
|
+
transition: isInteractive ? { type: "spring", stiffness: 400, damping: 20 } : void 0,
|
|
45
|
+
onClick,
|
|
46
|
+
role: onClick ? "button" : void 0,
|
|
47
|
+
tabIndex: onClick ? 0 : void 0,
|
|
48
|
+
children
|
|
49
|
+
}
|
|
50
|
+
) });
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
Card.displayName = "Card";
|
|
54
|
+
|
|
55
|
+
export { Card, cardVariants };
|
|
56
|
+
//# sourceMappingURL=chunk-DDV6JQEW.js.map
|
|
57
|
+
//# sourceMappingURL=chunk-DDV6JQEW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Card/Card.tsx"],"names":[],"mappings":";;;;;;AAKA,IAAM,YAAA,GAAe,GAAA;AAAA,EACnB,0DAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,QAAA,EAAU,2BAAA;AAAA,QACV,QAAA,EAAU,qCAAA;AAAA,QACV,MAAA,EAAQ;AAAA,OACV;AAAA,MACA,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,EAAA;AAAA,QACN,EAAA,EAAI,KAAA;AAAA,QACJ,EAAA,EAAI,KAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,WAAA,EAAa;AAAA,QACX,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,UAAA;AAAA,MACT,OAAA,EAAS;AAAA;AACX;AAEJ;AAMA,IAAM,IAAA,GAAa,KAAA,CAAA,UAAA;AAAA,EACjB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,OAAA,EAAS,WAAA,EAAa,OAAA,EAAS,QAAA,EAAU,KAAA,EAAO,EAAA,EAAI,YAAA,EAAc,SAAA,IAAa,GAAA,KAAQ;AAC5G,IAAA,MAAM,aAAA,GAAgB,WAAA,IAAe,CAAC,CAAC,OAAA;AAEvC,IAAA,uBACE,GAAA,CAAC,UAAA,EAAA,EAAW,QAAA,EAAU,YAAA,EACpB,QAAA,kBAAA,GAAA;AAAA,MAAC,CAAA,CAAE,GAAA;AAAA,MAAF;AAAA,QACC,GAAA;AAAA,QACA,EAAA;AAAA,QACA,YAAA,EAAY,SAAA;AAAA,QACZ,KAAA;AAAA,QACA,SAAA,EAAW,EAAA,CAAG,YAAA,CAAa,EAAE,OAAA,EAAS,OAAA,EAAS,WAAA,EAAa,aAAA,IAAiB,MAAA,EAAW,CAAA,EAAG,SAAS,CAAA;AAAA,QACpG,QAAA,EAAU,aAAA,GAAgB,EAAE,KAAA,EAAO,MAAK,GAAI,MAAA;AAAA,QAC5C,UAAA,EAAY,gBAAgB,EAAE,IAAA,EAAM,UAAU,SAAA,EAAW,GAAA,EAAK,OAAA,EAAS,EAAA,EAAG,GAAI,MAAA;AAAA,QAC9E,OAAA;AAAA,QACA,IAAA,EAAM,UAAU,QAAA,GAAW,MAAA;AAAA,QAC3B,QAAA,EAAU,UAAU,CAAA,GAAI,MAAA;AAAA,QAEvB;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AACF;AACA,IAAA,CAAK,WAAA,GAAc,MAAA","file":"chunk-DDV6JQEW.js","sourcesContent":["import * as React from \"react\";\nimport { m, LazyMotion, domAnimation } from \"../../utils/motion\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst cardVariants = cva(\n \"rounded-2xl bg-[var(--color-background)] overflow-hidden\",\n {\n variants: {\n variant: {\n elevated: \"shadow-[var(--shadow-md)]\",\n outlined: \"border border-[var(--color-border)]\",\n filled: \"bg-[var(--color-muted)]\",\n },\n padding: {\n none: \"\",\n sm: \"p-4\",\n md: \"p-5\",\n lg: \"p-6\",\n },\n interactive: {\n true: \"cursor-pointer\",\n },\n },\n defaultVariants: {\n variant: \"elevated\",\n padding: \"md\",\n },\n }\n);\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, padding, interactive, onClick, children, style, id, \"aria-label\": ariaLabel }, ref) => {\n const isInteractive = interactive || !!onClick;\n\n return (\n <LazyMotion features={domAnimation}>\n <m.div\n ref={ref}\n id={id}\n aria-label={ariaLabel}\n style={style}\n className={cn(cardVariants({ variant, padding, interactive: isInteractive || undefined }), className)}\n whileTap={isInteractive ? { scale: 0.98 } : undefined}\n transition={isInteractive ? { type: \"spring\", stiffness: 400, damping: 20 } : undefined}\n onClick={onClick as React.MouseEventHandler<HTMLDivElement>}\n role={onClick ? \"button\" : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n {children}\n </m.div>\n </LazyMotion>\n );\n }\n);\nCard.displayName = \"Card\";\n\nexport { Card, cardVariants };\n"]}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { __objRest, __spreadValues, cn, __spreadProps } from './chunk-MVGUWG27.js';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import * as ToastPrimitive from '@radix-ui/react-toast';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var toastVariants = cva(
|
|
8
|
+
[
|
|
9
|
+
"flex items-center gap-3 w-full max-w-sm px-4 py-3.5 rounded-2xl shadow-lg",
|
|
10
|
+
"text-[14px] font-medium",
|
|
11
|
+
"data-[state=open]:animate-toast-in",
|
|
12
|
+
"data-[state=closed]:animate-toast-out"
|
|
13
|
+
],
|
|
14
|
+
{
|
|
15
|
+
variants: {
|
|
16
|
+
variant: {
|
|
17
|
+
default: "bg-[var(--color-gray-800)] text-white",
|
|
18
|
+
positive: "bg-[var(--color-positive)] text-white",
|
|
19
|
+
negative: "bg-[var(--color-negative)] text-white",
|
|
20
|
+
warning: "bg-[var(--color-warning)] text-white"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
defaultVariants: {
|
|
24
|
+
variant: "default"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
var ToastProvider = ToastPrimitive.Provider;
|
|
29
|
+
var ToastViewport = React.forwardRef((_a, ref) => {
|
|
30
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
31
|
+
return /* @__PURE__ */ jsx(
|
|
32
|
+
ToastPrimitive.Viewport,
|
|
33
|
+
__spreadValues({
|
|
34
|
+
ref,
|
|
35
|
+
className: cn(
|
|
36
|
+
"fixed bottom-0 left-1/2 -translate-x-1/2 z-[100]",
|
|
37
|
+
"flex flex-col gap-2 p-5 w-full max-w-sm",
|
|
38
|
+
className
|
|
39
|
+
)
|
|
40
|
+
}, props)
|
|
41
|
+
);
|
|
42
|
+
});
|
|
43
|
+
ToastViewport.displayName = "ToastViewport";
|
|
44
|
+
var Toast = React.forwardRef((_a, ref) => {
|
|
45
|
+
var _b = _a, { className, variant, description, action, children } = _b, props = __objRest(_b, ["className", "variant", "description", "action", "children"]);
|
|
46
|
+
return /* @__PURE__ */ jsxs(
|
|
47
|
+
ToastPrimitive.Root,
|
|
48
|
+
__spreadProps(__spreadValues({
|
|
49
|
+
ref,
|
|
50
|
+
className: cn(toastVariants({ variant }), className)
|
|
51
|
+
}, props), {
|
|
52
|
+
children: [
|
|
53
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
54
|
+
/* @__PURE__ */ jsx(ToastPrimitive.Title, { className: "leading-snug", children }),
|
|
55
|
+
description && /* @__PURE__ */ jsx(ToastPrimitive.Description, { className: "text-[12px] opacity-80 mt-0.5", children: description })
|
|
56
|
+
] }),
|
|
57
|
+
action,
|
|
58
|
+
/* @__PURE__ */ jsx(ToastPrimitive.Close, { className: "shrink-0 opacity-70 hover:opacity-100 transition-opacity", children: /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx("path", { d: "M4 4L12 12M12 4L4 12", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round" }) }) })
|
|
59
|
+
]
|
|
60
|
+
})
|
|
61
|
+
);
|
|
62
|
+
});
|
|
63
|
+
Toast.displayName = "Toast";
|
|
64
|
+
var toasts = [];
|
|
65
|
+
var subscribers = /* @__PURE__ */ new Set();
|
|
66
|
+
function getSnapshot() {
|
|
67
|
+
return toasts;
|
|
68
|
+
}
|
|
69
|
+
function subscribe(callback) {
|
|
70
|
+
subscribers.add(callback);
|
|
71
|
+
return () => subscribers.delete(callback);
|
|
72
|
+
}
|
|
73
|
+
function notify() {
|
|
74
|
+
subscribers.forEach((cb) => cb());
|
|
75
|
+
}
|
|
76
|
+
function dispatch(toast2) {
|
|
77
|
+
toasts = [...toasts, toast2];
|
|
78
|
+
notify();
|
|
79
|
+
}
|
|
80
|
+
function dismiss(id) {
|
|
81
|
+
toasts = toasts.map((t) => t.id === id ? __spreadProps(__spreadValues({}, t), { open: false }) : t);
|
|
82
|
+
notify();
|
|
83
|
+
}
|
|
84
|
+
function remove(id) {
|
|
85
|
+
toasts = toasts.filter((t) => t.id !== id);
|
|
86
|
+
notify();
|
|
87
|
+
}
|
|
88
|
+
function toast(input) {
|
|
89
|
+
var _a;
|
|
90
|
+
const normalized = typeof input === "string" ? { children: input } : input;
|
|
91
|
+
const id = (_a = normalized.id) != null ? _a : Math.random().toString(36).slice(2);
|
|
92
|
+
dispatch(__spreadProps(__spreadValues({}, normalized), { id, open: true }));
|
|
93
|
+
return { id, dismiss: () => dismiss(id) };
|
|
94
|
+
}
|
|
95
|
+
toast.positive = (children, opts) => toast(__spreadProps(__spreadValues({}, opts), { children, variant: "positive" }));
|
|
96
|
+
toast.negative = (children, opts) => toast(__spreadProps(__spreadValues({}, opts), { children, variant: "negative" }));
|
|
97
|
+
toast.warning = (children, opts) => toast(__spreadProps(__spreadValues({}, opts), { children, variant: "warning" }));
|
|
98
|
+
function useToast() {
|
|
99
|
+
const state = React.useSyncExternalStore(subscribe, getSnapshot);
|
|
100
|
+
return { toasts: state, dismiss, remove };
|
|
101
|
+
}
|
|
102
|
+
function Toaster() {
|
|
103
|
+
const { toasts: toasts2, remove: remove2 } = useToast();
|
|
104
|
+
return /* @__PURE__ */ jsxs(ToastProvider, { swipeDirection: "down", children: [
|
|
105
|
+
toasts2.map((_a) => {
|
|
106
|
+
var _b = _a, { id, open, children } = _b, props = __objRest(_b, ["id", "open", "children"]);
|
|
107
|
+
return /* @__PURE__ */ jsx(
|
|
108
|
+
Toast,
|
|
109
|
+
__spreadProps(__spreadValues({
|
|
110
|
+
open,
|
|
111
|
+
onOpenChange: (o) => {
|
|
112
|
+
if (!o) remove2(id);
|
|
113
|
+
}
|
|
114
|
+
}, props), {
|
|
115
|
+
children
|
|
116
|
+
}),
|
|
117
|
+
id
|
|
118
|
+
);
|
|
119
|
+
}),
|
|
120
|
+
/* @__PURE__ */ jsx(ToastViewport, {})
|
|
121
|
+
] });
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export { Toast, ToastProvider, ToastViewport, Toaster, toast, toastVariants, useToast };
|
|
125
|
+
//# sourceMappingURL=chunk-DR6JPBH7.js.map
|
|
126
|
+
//# sourceMappingURL=chunk-DR6JPBH7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Toast/Toast.tsx","../src/components/Toast/useToast.ts","../src/components/Toast/Toaster.tsx"],"names":["toast","React2","toasts","remove","jsxs","jsx"],"mappings":"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","file":"chunk-DR6JPBH7.js","sourcesContent":["import * as React from \"react\";\nimport * as ToastPrimitive from \"@radix-ui/react-toast\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst toastVariants = cva(\n [\n \"flex items-center gap-3 w-full max-w-sm px-4 py-3.5 rounded-2xl shadow-lg\",\n \"text-[14px] font-medium\",\n \"data-[state=open]:animate-toast-in\",\n \"data-[state=closed]:animate-toast-out\",\n ],\n {\n variants: {\n variant: {\n default: \"bg-[var(--color-gray-800)] text-white\",\n positive: \"bg-[var(--color-positive)] text-white\",\n negative: \"bg-[var(--color-negative)] text-white\",\n warning: \"bg-[var(--color-warning)] text-white\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport interface ToastProps\n extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Root>,\n VariantProps<typeof toastVariants> {\n description?: string;\n action?: React.ReactNode;\n}\n\nconst ToastProvider = ToastPrimitive.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Viewport\n ref={ref}\n className={cn(\n \"fixed bottom-0 left-1/2 -translate-x-1/2 z-[100]\",\n \"flex flex-col gap-2 p-5 w-full max-w-sm\",\n className\n )}\n {...props}\n />\n));\nToastViewport.displayName = \"ToastViewport\";\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Root>,\n ToastProps\n>(({ className, variant, description, action, children, ...props }, ref) => (\n <ToastPrimitive.Root\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n {...props}\n >\n <div className=\"flex-1 min-w-0\">\n <ToastPrimitive.Title className=\"leading-snug\">{children}</ToastPrimitive.Title>\n {description && (\n <ToastPrimitive.Description className=\"text-[12px] opacity-80 mt-0.5\">\n {description}\n </ToastPrimitive.Description>\n )}\n </div>\n {action}\n <ToastPrimitive.Close className=\"shrink-0 opacity-70 hover:opacity-100 transition-opacity\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path d=\"M4 4L12 12M12 4L4 12\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" />\n </svg>\n </ToastPrimitive.Close>\n </ToastPrimitive.Root>\n));\nToast.displayName = \"Toast\";\n\nexport { ToastProvider, ToastViewport, Toast, toastVariants };\n","import * as React from \"react\";\nimport type { ToastProps } from \"./Toast\";\n\ntype ToastInput = Omit<ToastProps, \"open\" | \"onOpenChange\"> & { id?: string };\n\ninterface ToastState extends ToastInput {\n id: string;\n open: boolean;\n}\n\nlet toasts: ToastState[] = [];\nconst subscribers = new Set<() => void>();\n\nfunction getSnapshot() {\n return toasts;\n}\n\nfunction subscribe(callback: () => void) {\n subscribers.add(callback);\n return () => subscribers.delete(callback);\n}\n\nfunction notify() {\n subscribers.forEach((cb) => cb());\n}\n\nfunction dispatch(toast: ToastState) {\n toasts = [...toasts, toast];\n notify();\n}\n\nfunction dismiss(id: string) {\n toasts = toasts.map((t) => (t.id === id ? { ...t, open: false } : t));\n notify();\n}\n\nfunction remove(id: string) {\n toasts = toasts.filter((t) => t.id !== id);\n notify();\n}\n\nexport function toast(input: ToastInput | string) {\n const normalized: ToastInput = typeof input === \"string\" ? { children: input } : input;\n const id = normalized.id ?? Math.random().toString(36).slice(2);\n dispatch({ ...normalized, id, open: true });\n return { id, dismiss: () => dismiss(id) };\n}\n\ntoast.positive = (children: React.ReactNode, opts?: Partial<ToastInput>) =>\n toast({ ...opts, children, variant: \"positive\" });\n\ntoast.negative = (children: React.ReactNode, opts?: Partial<ToastInput>) =>\n toast({ ...opts, children, variant: \"negative\" });\n\ntoast.warning = (children: React.ReactNode, opts?: Partial<ToastInput>) =>\n toast({ ...opts, children, variant: \"warning\" });\n\nexport function useToast() {\n const state = React.useSyncExternalStore(subscribe, getSnapshot);\n return { toasts: state, dismiss, remove };\n}\n","import { ToastProvider, ToastViewport, Toast } from \"./Toast\";\nimport { useToast } from \"./useToast\";\n\nexport function Toaster() {\n const { toasts, remove } = useToast();\n\n return (\n <ToastProvider swipeDirection=\"down\">\n {toasts.map(({ id, open, children, ...props }) => (\n <Toast\n key={id}\n open={open}\n onOpenChange={(o) => { if (!o) remove(id); }}\n {...props}\n >\n {children}\n </Toast>\n ))}\n <ToastViewport />\n </ToastProvider>\n );\n}\n"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk4V3IOZPC_cjs = require('./chunk-4V3IOZPC.cjs');
|
|
4
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
|
|
7
|
+
var textVariants = classVarianceAuthority.cva("", {
|
|
8
|
+
variants: {
|
|
9
|
+
variant: {
|
|
10
|
+
display1: "text-[28px] leading-[1.3] font-bold",
|
|
11
|
+
title1: "text-[22px] leading-[1.4] font-bold",
|
|
12
|
+
title2: "text-[20px] leading-[1.4] font-bold",
|
|
13
|
+
title3: "text-[18px] leading-[1.4] font-semibold",
|
|
14
|
+
body1: "text-[16px] leading-[1.5] font-normal",
|
|
15
|
+
body2: "text-[14px] leading-[1.5] font-normal",
|
|
16
|
+
caption1: "text-[12px] leading-[1.4] font-normal"
|
|
17
|
+
},
|
|
18
|
+
color: {
|
|
19
|
+
default: "text-[var(--color-foreground)]",
|
|
20
|
+
muted: "text-[var(--color-muted-foreground)]",
|
|
21
|
+
primary: "text-[var(--color-primary)]",
|
|
22
|
+
positive: "text-[var(--color-positive)]",
|
|
23
|
+
negative: "text-[var(--color-negative)]",
|
|
24
|
+
warning: "text-[var(--color-warning)]"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
defaultVariants: {
|
|
28
|
+
variant: "body1",
|
|
29
|
+
color: "default"
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
function Text(_a) {
|
|
33
|
+
var _b = _a, { className, variant, color, as } = _b, props = chunk4V3IOZPC_cjs.__objRest(_b, ["className", "variant", "color", "as"]);
|
|
34
|
+
const defaultTag = variant === "display1" ? "h1" : variant === "title1" ? "h2" : variant === "title2" ? "h3" : variant === "title3" ? "h4" : variant === "caption1" ? "span" : "p";
|
|
35
|
+
const Tag = as != null ? as : defaultTag;
|
|
36
|
+
return (
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
38
|
+
/* @__PURE__ */ jsxRuntime.jsx(Tag, chunk4V3IOZPC_cjs.__spreadValues({ className: chunk4V3IOZPC_cjs.cn(textVariants({ variant, color, className })) }, props))
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
Text.displayName = "Text";
|
|
42
|
+
|
|
43
|
+
exports.Text = Text;
|
|
44
|
+
exports.textVariants = textVariants;
|
|
45
|
+
//# sourceMappingURL=chunk-EVF7QZMA.cjs.map
|
|
46
|
+
//# sourceMappingURL=chunk-EVF7QZMA.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Text/Text.tsx"],"names":["cva","__objRest","jsx","__spreadValues","cn"],"mappings":";;;;;;AAIA,IAAM,YAAA,GAAeA,2BAAI,EAAA,EAAI;AAAA,EAC3B,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,MACP,QAAA,EAAU,qCAAA;AAAA,MACV,MAAA,EAAQ,qCAAA;AAAA,MACR,MAAA,EAAQ,qCAAA;AAAA,MACR,MAAA,EAAQ,yCAAA;AAAA,MACR,KAAA,EAAO,uCAAA;AAAA,MACP,KAAA,EAAO,uCAAA;AAAA,MACP,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,KAAA,EAAO;AAAA,MACL,OAAA,EAAS,gCAAA;AAAA,MACT,KAAA,EAAO,sCAAA;AAAA,MACP,OAAA,EAAS,6BAAA;AAAA,MACT,QAAA,EAAU,8BAAA;AAAA,MACV,QAAA,EAAU,8BAAA;AAAA,MACV,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO;AAAA;AAEX,CAAC;AAOD,SAAS,KAAK,EAAA,EAAwD;AAAxD,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EAAW,OAAA,EAAS,KAAA,EAAO,EAAA,EAnC3C,GAmCc,EAAA,EAAoC,KAAA,GAAAC,2BAAA,CAApC,EAAA,EAAoC,CAAlC,WAAA,EAAW,SAAA,EAAS,OAAA,EAAO,IAAA,CAAA,CAAA;AACzC,EAAA,MAAM,UAAA,GACJ,OAAA,KAAY,UAAA,GAAa,IAAA,GACvB,YAAY,QAAA,GAAW,IAAA,GACvB,OAAA,KAAY,QAAA,GAAW,OACvB,OAAA,KAAY,QAAA,GAAW,IAAA,GACvB,OAAA,KAAY,aAAa,MAAA,GACzB,GAAA;AAEJ,EAAA,MAAM,MAAM,EAAA,IAAA,IAAA,GAAA,EAAA,GAAM,UAAA;AAElB,EAAA;AAAA;AAAA,oBAEEC,cAAA,CAAC,GAAA,EAAAC,gCAAA,CAAA,EAAI,SAAA,EAAWC,oBAAA,CAAG,YAAA,CAAa,EAAE,OAAA,EAAS,KAAA,EAAO,SAAA,EAAW,CAAC,CAAA,EAAA,EAAQ,KAAA,CAAe;AAAA;AAEzF;AACA,IAAA,CAAK,WAAA,GAAc,MAAA","file":"chunk-EVF7QZMA.cjs","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst textVariants = cva(\"\", {\n variants: {\n variant: {\n display1: \"text-[28px] leading-[1.3] font-bold\",\n title1: \"text-[22px] leading-[1.4] font-bold\",\n title2: \"text-[20px] leading-[1.4] font-bold\",\n title3: \"text-[18px] leading-[1.4] font-semibold\",\n body1: \"text-[16px] leading-[1.5] font-normal\",\n body2: \"text-[14px] leading-[1.5] font-normal\",\n caption1: \"text-[12px] leading-[1.4] font-normal\",\n },\n color: {\n default: \"text-[var(--color-foreground)]\",\n muted: \"text-[var(--color-muted-foreground)]\",\n primary: \"text-[var(--color-primary)]\",\n positive: \"text-[var(--color-positive)]\",\n negative: \"text-[var(--color-negative)]\",\n warning: \"text-[var(--color-warning)]\",\n },\n },\n defaultVariants: {\n variant: \"body1\",\n color: \"default\",\n },\n});\n\nexport type TextProps = React.HTMLAttributes<HTMLElement> &\n VariantProps<typeof textVariants> & {\n as?: React.ElementType;\n };\n\nfunction Text({ className, variant, color, as, ...props }: TextProps) {\n const defaultTag: React.ElementType =\n variant === \"display1\" ? \"h1\"\n : variant === \"title1\" ? \"h2\"\n : variant === \"title2\" ? \"h3\"\n : variant === \"title3\" ? \"h4\"\n : variant === \"caption1\" ? \"span\"\n : \"p\";\n\n const Tag = as ?? defaultTag;\n\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <Tag className={cn(textVariants({ variant, color, className }))} {...(props as any)} />\n );\n}\nText.displayName = \"Text\";\n\nexport { Text, textVariants };\n"]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { __objRest, __spreadProps, __spreadValues, cn } from './chunk-MVGUWG27.js';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import * as SwitchPrimitive from '@radix-ui/react-switch';
|
|
4
|
+
import * as Label from '@radix-ui/react-label';
|
|
5
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var Toggle = React.forwardRef((_a, ref) => {
|
|
8
|
+
var _b = _a, { className, label, description, id } = _b, props = __objRest(_b, ["className", "label", "description", "id"]);
|
|
9
|
+
const toggleId = id != null ? id : React.useId();
|
|
10
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4 w-full", children: [
|
|
11
|
+
(label || description) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
|
|
12
|
+
label && /* @__PURE__ */ jsx(
|
|
13
|
+
Label.Root,
|
|
14
|
+
{
|
|
15
|
+
htmlFor: toggleId,
|
|
16
|
+
className: "text-[16px] font-medium text-[var(--color-foreground)] cursor-pointer select-none",
|
|
17
|
+
children: label
|
|
18
|
+
}
|
|
19
|
+
),
|
|
20
|
+
description && /* @__PURE__ */ jsx("p", { className: "text-[13px] text-[var(--color-muted-foreground)]", children: description })
|
|
21
|
+
] }),
|
|
22
|
+
/* @__PURE__ */ jsx(
|
|
23
|
+
SwitchPrimitive.Root,
|
|
24
|
+
__spreadProps(__spreadValues({
|
|
25
|
+
ref,
|
|
26
|
+
id: toggleId,
|
|
27
|
+
className: cn(
|
|
28
|
+
"relative inline-flex h-7 w-12 shrink-0 cursor-pointer rounded-full",
|
|
29
|
+
"bg-[var(--color-gray-300)]",
|
|
30
|
+
"transition-colors duration-200 ease-in-out",
|
|
31
|
+
"data-[state=checked]:bg-[var(--color-primary)]",
|
|
32
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2",
|
|
33
|
+
"disabled:opacity-40 disabled:cursor-not-allowed",
|
|
34
|
+
className
|
|
35
|
+
)
|
|
36
|
+
}, props), {
|
|
37
|
+
children: /* @__PURE__ */ jsx(
|
|
38
|
+
SwitchPrimitive.Thumb,
|
|
39
|
+
{
|
|
40
|
+
className: cn(
|
|
41
|
+
"pointer-events-none block h-5 w-5 rounded-full bg-white shadow-md",
|
|
42
|
+
"transition-transform duration-200 ease-in-out",
|
|
43
|
+
"translate-x-1",
|
|
44
|
+
"data-[state=checked]:translate-x-6"
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
)
|
|
48
|
+
})
|
|
49
|
+
)
|
|
50
|
+
] });
|
|
51
|
+
});
|
|
52
|
+
Toggle.displayName = "Toggle";
|
|
53
|
+
|
|
54
|
+
export { Toggle };
|
|
55
|
+
//# sourceMappingURL=chunk-EXARWE5B.js.map
|
|
56
|
+
//# sourceMappingURL=chunk-EXARWE5B.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Toggle/Toggle.tsx"],"names":[],"mappings":";;;;;;AAWA,IAAM,MAAA,GAAe,KAAA,CAAA,UAAA,CAGnB,CAAC,EAAA,EAAiD,GAAA,KAAQ;AAAzD,EAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EAAW,KAAA,EAAO,WAAA,EAAa,EAAA,EAdpC,GAcG,EAAA,EAAwC,KAAA,GAAA,SAAA,CAAxC,EAAA,EAAwC,CAAtC,WAAA,EAAW,OAAA,EAAO,aAAA,EAAa,IAAA,CAAA,CAAA;AAClC,EAAA,MAAM,QAAA,GAAW,kBAAY,KAAA,CAAA,KAAA,EAAM;AAEnC,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gDAAA,EACX,QAAA,EAAA;AAAA,IAAA,CAAA,KAAA,IAAS,WAAA,qBACT,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBACC,GAAA;AAAA,QAAO,KAAA,CAAA,IAAA;AAAA,QAAN;AAAA,UACC,OAAA,EAAS,QAAA;AAAA,UACT,SAAA,EAAU,mFAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,MAED,WAAA,oBACC,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oDAAoD,QAAA,EAAA,WAAA,EAAY;AAAA,KAAA,EAEjF,CAAA;AAAA,oBAEF,GAAA;AAAA,MAAiB,eAAA,CAAA,IAAA;AAAA,MAAhB,aAAA,CAAA,cAAA,CAAA;AAAA,QACC,GAAA;AAAA,QACA,EAAA,EAAI,QAAA;AAAA,QACJ,SAAA,EAAW,EAAA;AAAA,UACT,oEAAA;AAAA,UACA,4BAAA;AAAA,UACA,4CAAA;AAAA,UACA,gDAAA;AAAA,UACA,uHAAA;AAAA,UACA,iDAAA;AAAA,UACA;AAAA;AACF,OAAA,EACI,KAAA,CAAA,EAZL;AAAA,QAcC,QAAA,kBAAA,GAAA;AAAA,UAAiB,eAAA,CAAA,KAAA;AAAA,UAAhB;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,mEAAA;AAAA,cACA,+CAAA;AAAA,cACA,eAAA;AAAA,cACA;AAAA;AACF;AAAA;AACF,OAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ,CAAC;AACD,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-EXARWE5B.js","sourcesContent":["import * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport * as Label from \"@radix-ui/react-label\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface ToggleProps\n extends React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> {\n label?: string;\n description?: string;\n}\n\nconst Toggle = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitive.Root>,\n ToggleProps\n>(({ className, label, description, id, ...props }, ref) => {\n const toggleId = id ?? React.useId();\n\n return (\n <div className=\"flex items-center justify-between gap-4 w-full\">\n {(label || description) && (\n <div className=\"flex flex-col gap-0.5\">\n {label && (\n <Label.Root\n htmlFor={toggleId}\n className=\"text-[16px] font-medium text-[var(--color-foreground)] cursor-pointer select-none\"\n >\n {label}\n </Label.Root>\n )}\n {description && (\n <p className=\"text-[13px] text-[var(--color-muted-foreground)]\">{description}</p>\n )}\n </div>\n )}\n <SwitchPrimitive.Root\n ref={ref}\n id={toggleId}\n className={cn(\n \"relative inline-flex h-7 w-12 shrink-0 cursor-pointer rounded-full\",\n \"bg-[var(--color-gray-300)]\",\n \"transition-colors duration-200 ease-in-out\",\n \"data-[state=checked]:bg-[var(--color-primary)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2\",\n \"disabled:opacity-40 disabled:cursor-not-allowed\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-white shadow-md\",\n \"transition-transform duration-200 ease-in-out\",\n \"translate-x-1\",\n \"data-[state=checked]:translate-x-6\"\n )}\n />\n </SwitchPrimitive.Root>\n </div>\n );\n});\nToggle.displayName = \"Toggle\";\n\nexport { Toggle };\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { __objRest, __spreadValues, cn } from './chunk-MVGUWG27.js';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
var sizeMap = {
|
|
6
|
+
xs: 12,
|
|
7
|
+
sm: 16,
|
|
8
|
+
md: 20,
|
|
9
|
+
lg: 24,
|
|
10
|
+
xl: 32
|
|
11
|
+
};
|
|
12
|
+
var Icon = React.forwardRef(
|
|
13
|
+
(_a, ref) => {
|
|
14
|
+
var _b = _a, { icon: LucideIconComponent, size = "md", label, className } = _b, props = __objRest(_b, ["icon", "size", "label", "className"]);
|
|
15
|
+
const px = typeof size === "number" ? size : sizeMap[size];
|
|
16
|
+
return /* @__PURE__ */ jsx(
|
|
17
|
+
LucideIconComponent,
|
|
18
|
+
__spreadValues({
|
|
19
|
+
ref,
|
|
20
|
+
size: px,
|
|
21
|
+
"aria-label": label,
|
|
22
|
+
"aria-hidden": !label,
|
|
23
|
+
className: cn("shrink-0", className)
|
|
24
|
+
}, props)
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
Icon.displayName = "Icon";
|
|
29
|
+
|
|
30
|
+
export { Icon };
|
|
31
|
+
//# sourceMappingURL=chunk-FUIIR7CU.js.map
|
|
32
|
+
//# sourceMappingURL=chunk-FUIIR7CU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Icon/Icon.tsx"],"names":[],"mappings":";;;;AAYA,IAAM,OAAA,GAAoC;AAAA,EACxC,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,IAAA,GAAa,KAAA,CAAA,UAAA;AAAA,EACjB,CAAC,IAAwE,GAAA,KAAQ;AAAhF,IAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,IAAA,EAAM,mBAAA,EAAqB,IAAA,GAAO,IAAA,EAAM,KAAA,EAAO,SAAA,EArBpD,GAqBG,EAAA,EAA+D,KAAA,GAAA,SAAA,CAA/D,EAAA,EAA+D,CAA7D,MAAA,EAA2B,QAAa,OAAA,EAAO,WAAA,CAAA,CAAA;AAChD,IAAA,MAAM,KAAK,OAAO,IAAA,KAAS,QAAA,GAAW,IAAA,GAAO,QAAQ,IAAI,CAAA;AAEzD,IAAA,uBACE,GAAA;AAAA,MAAC,mBAAA;AAAA,MAAA,cAAA,CAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAM,EAAA;AAAA,QACN,YAAA,EAAY,KAAA;AAAA,QACZ,eAAa,CAAC,KAAA;AAAA,QACd,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS;AAAA,OAAA,EAC/B,KAAA;AAAA,KACN;AAAA,EAEJ;AACF;AACA,IAAA,CAAK,WAAA,GAAc,MAAA","file":"chunk-FUIIR7CU.js","sourcesContent":["import * as React from \"react\";\nimport { type LucideIcon, type LucideProps } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\n\nexport type IconSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface IconProps extends Omit<LucideProps, \"size\"> {\n icon: LucideIcon;\n size?: IconSize | number;\n label?: string;\n}\n\nconst sizeMap: Record<IconSize, number> = {\n xs: 12,\n sm: 16,\n md: 20,\n lg: 24,\n xl: 32,\n};\n\nconst Icon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ icon: LucideIconComponent, size = \"md\", label, className, ...props }, ref) => {\n const px = typeof size === \"number\" ? size : sizeMap[size];\n\n return (\n <LucideIconComponent\n ref={ref}\n size={px}\n aria-label={label}\n aria-hidden={!label}\n className={cn(\"shrink-0\", className)}\n {...props}\n />\n );\n }\n);\nIcon.displayName = \"Icon\";\n\nexport { Icon };\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { __objRest, cn, __spreadProps, __spreadValues } from './chunk-MVGUWG27.js';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
var baseClass = "animate-pulse bg-[var(--color-muted)] overflow-hidden relative will-change-transform before:absolute before:inset-0 before:bg-gradient-to-r before:from-transparent before:via-white/20 before:to-transparent before:animate-[shimmer_1.5s_infinite]";
|
|
6
|
+
var Skeleton = React.forwardRef(
|
|
7
|
+
(_a, ref) => {
|
|
8
|
+
var _b = _a, { className, variant = "rectangular", width, height, lines = 1, style } = _b, props = __objRest(_b, ["className", "variant", "width", "height", "lines", "style"]);
|
|
9
|
+
const variantClass = variant === "circular" ? "rounded-full" : variant === "text" ? "rounded-md" : "rounded-xl";
|
|
10
|
+
const computedClass = cn(baseClass, variantClass, className);
|
|
11
|
+
if (variant === "text" && lines > 1) {
|
|
12
|
+
return /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({ ref, className: "flex flex-col gap-2" }, props), { children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ jsx(
|
|
13
|
+
"div",
|
|
14
|
+
{
|
|
15
|
+
className: computedClass,
|
|
16
|
+
style: {
|
|
17
|
+
width: i === lines - 1 ? "70%" : "100%",
|
|
18
|
+
height: height != null ? height : 16
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
i
|
|
22
|
+
)) }));
|
|
23
|
+
}
|
|
24
|
+
return /* @__PURE__ */ jsx(
|
|
25
|
+
"div",
|
|
26
|
+
__spreadValues({
|
|
27
|
+
ref,
|
|
28
|
+
className: computedClass,
|
|
29
|
+
style: __spreadValues({ width, height: height != null ? height : variant === "text" ? 16 : void 0 }, style),
|
|
30
|
+
"aria-hidden": "true"
|
|
31
|
+
}, props)
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
Skeleton.displayName = "Skeleton";
|
|
36
|
+
|
|
37
|
+
export { Skeleton };
|
|
38
|
+
//# sourceMappingURL=chunk-FXOOVZWB.js.map
|
|
39
|
+
//# sourceMappingURL=chunk-FXOOVZWB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Skeleton/Skeleton.tsx"],"names":[],"mappings":";;;;AAUA,IAAM,SAAA,GACJ,sPAAA;AAKF,IAAM,QAAA,GAAiB,KAAA,CAAA,UAAA;AAAA,EACrB,CAAC,IAAmF,GAAA,KAAQ;AAA3F,IAAA,IAAA,EAAA,GAAA,EAAA,EAAE,aAAW,OAAA,GAAU,aAAA,EAAe,KAAA,EAAO,MAAA,EAAQ,QAAQ,CAAA,EAAG,KAAA,EAjBnE,GAiBG,EAAA,EAA0E,kBAA1E,EAAA,EAA0E,CAAxE,aAAW,SAAA,EAAyB,OAAA,EAAO,UAAQ,OAAA,EAAW,OAAA,CAAA,CAAA;AAC/D,IAAA,MAAM,eACJ,OAAA,KAAY,UAAA,GAAa,cAAA,GACvB,OAAA,KAAY,SAAS,YAAA,GACrB,YAAA;AAEJ,IAAA,MAAM,aAAA,GAAgB,EAAA,CAAG,SAAA,EAAW,YAAA,EAAc,SAAS,CAAA;AAE3D,IAAA,IAAI,OAAA,KAAY,MAAA,IAAU,KAAA,GAAQ,CAAA,EAAG;AACnC,MAAA,2BACG,KAAA,EAAA,aAAA,CAAA,cAAA,CAAA,EAAI,GAAA,EAAU,SAAA,EAAU,qBAAA,EAAA,EAA0B,QAAlD,EACE,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,QAAQ,KAAA,EAAO,EAAE,GAAA,CAAI,CAAC,GAAG,CAAA,qBACrC,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAW,aAAA;AAAA,UACX,KAAA,EAAO;AAAA,YACL,KAAA,EAAO,CAAA,KAAM,KAAA,GAAQ,CAAA,GAAI,KAAA,GAAQ,MAAA;AAAA,YACjC,QAAQ,MAAA,IAAA,IAAA,GAAA,MAAA,GAAU;AAAA;AACpB,SAAA;AAAA,QALK;AAAA,OAOR,CAAA,EAAA,CACH,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA,cAAA,CAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,aAAA;AAAA,QACX,KAAA,EAAO,iBAAE,KAAA,EAAO,MAAA,EAAQ,0BAAW,OAAA,KAAY,MAAA,GAAS,KAAK,MAAA,EAAA,EAAe,KAAA,CAAA;AAAA,QAC5E,aAAA,EAAY;AAAA,OAAA,EACR,KAAA;AAAA,KACN;AAAA,EAEJ;AACF;AACA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-FXOOVZWB.js","sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"text\" | \"circular\" | \"rectangular\";\n width?: string | number;\n height?: string | number;\n lines?: number;\n}\n\nconst baseClass =\n \"animate-pulse bg-[var(--color-muted)] overflow-hidden relative will-change-transform\" +\n \" before:absolute before:inset-0\" +\n \" before:bg-gradient-to-r before:from-transparent before:via-white/20 before:to-transparent\" +\n \" before:animate-[shimmer_1.5s_infinite]\";\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, variant = \"rectangular\", width, height, lines = 1, style, ...props }, ref) => {\n const variantClass =\n variant === \"circular\" ? \"rounded-full\"\n : variant === \"text\" ? \"rounded-md\"\n : \"rounded-xl\";\n\n const computedClass = cn(baseClass, variantClass, className);\n\n if (variant === \"text\" && lines > 1) {\n return (\n <div ref={ref} className=\"flex flex-col gap-2\" {...props}>\n {Array.from({ length: lines }).map((_, i) => (\n <div\n key={i}\n className={computedClass}\n style={{\n width: i === lines - 1 ? \"70%\" : \"100%\",\n height: height ?? 16,\n }}\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={computedClass}\n style={{ width, height: height ?? (variant === \"text\" ? 16 : undefined), ...style }}\n aria-hidden=\"true\"\n {...props}\n />\n );\n }\n);\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton };\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { cn } from './chunk-MVGUWG27.js';
|
|
2
|
+
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
3
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
var Popover = ({
|
|
6
|
+
trigger,
|
|
7
|
+
children,
|
|
8
|
+
open,
|
|
9
|
+
onOpenChange,
|
|
10
|
+
side = "bottom",
|
|
11
|
+
align = "start",
|
|
12
|
+
sideOffset = 8,
|
|
13
|
+
className
|
|
14
|
+
}) => /* @__PURE__ */ jsxs(PopoverPrimitive.Root, { open, onOpenChange, children: [
|
|
15
|
+
/* @__PURE__ */ jsx(PopoverPrimitive.Trigger, { asChild: true, children: trigger }),
|
|
16
|
+
/* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
17
|
+
PopoverPrimitive.Content,
|
|
18
|
+
{
|
|
19
|
+
side,
|
|
20
|
+
align,
|
|
21
|
+
sideOffset,
|
|
22
|
+
className: cn(
|
|
23
|
+
"z-50 rounded-2xl border border-[var(--color-border)] bg-[var(--color-background)] shadow-lg",
|
|
24
|
+
"outline-none",
|
|
25
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
26
|
+
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
27
|
+
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
28
|
+
"data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2",
|
|
29
|
+
"data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2",
|
|
30
|
+
className
|
|
31
|
+
),
|
|
32
|
+
children
|
|
33
|
+
}
|
|
34
|
+
) })
|
|
35
|
+
] });
|
|
36
|
+
|
|
37
|
+
export { Popover };
|
|
38
|
+
//# sourceMappingURL=chunk-FYFPGECC.js.map
|
|
39
|
+
//# sourceMappingURL=chunk-FYFPGECC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Popover/Popover.tsx"],"names":[],"mappings":";;;;AAeA,IAAM,UAAU,CAAC;AAAA,EACf,OAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,KAAA,GAAQ,OAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb;AACF,CAAA,qBACE,IAAA,CAAkB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,IAAA,EAAY,YAAA,EACjC,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAkB,gBAAA,CAAA,OAAA,EAAjB,EAAyB,OAAA,EAAO,IAAA,EAAE,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,kBAC3C,GAAA,CAAkB,yBAAjB,EACC,QAAA,kBAAA,GAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,IAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,6FAAA;AAAA,QACA,cAAA;AAAA,QACA,8DAAA;AAAA,QACA,4DAAA;AAAA,QACA,8DAAA;AAAA,QACA,+EAAA;AAAA,QACA,+EAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH,EACF;AAAA,CAAA,EACF","file":"chunk-FYFPGECC.js","sourcesContent":["import * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface PopoverProps {\n trigger: React.ReactNode;\n children: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n className?: string;\n}\n\nconst Popover = ({\n trigger,\n children,\n open,\n onOpenChange,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 8,\n className,\n}: PopoverProps) => (\n <PopoverPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <PopoverPrimitive.Trigger asChild>{trigger}</PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n side={side}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 rounded-2xl border border-[var(--color-border)] bg-[var(--color-background)] shadow-lg\",\n \"outline-none\",\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-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2\",\n \"data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2\",\n className\n )}\n >\n {children}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n);\n\nexport { Popover };\n"]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkUXYAKGI2_cjs = require('./chunk-UXYAKGI2.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 Chip = React__namespace.forwardRef(
|
|
29
|
+
(_a, ref) => {
|
|
30
|
+
var _b = _a, { className, children, selected = false, onRemove, onClick } = _b, props = chunk4V3IOZPC_cjs.__objRest(_b, ["className", "children", "selected", "onRemove", "onClick"]);
|
|
31
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkUXYAKGI2_cjs.LazyMotion, { features: chunkUXYAKGI2_cjs.domAnimation, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32
|
+
chunkUXYAKGI2_cjs.m.button,
|
|
33
|
+
chunk4V3IOZPC_cjs.__spreadProps(chunk4V3IOZPC_cjs.__spreadValues({
|
|
34
|
+
ref,
|
|
35
|
+
whileTap: { scale: 0.95 },
|
|
36
|
+
transition: { type: "spring", stiffness: 400, damping: 17 },
|
|
37
|
+
onClick,
|
|
38
|
+
className: chunk4V3IOZPC_cjs.cn(
|
|
39
|
+
"inline-flex items-center gap-1.5 h-8 px-3.5 rounded-full",
|
|
40
|
+
"text-[14px] font-medium select-none",
|
|
41
|
+
"border transition-colors duration-150",
|
|
42
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2",
|
|
43
|
+
"disabled:opacity-40 disabled:cursor-not-allowed",
|
|
44
|
+
selected ? "bg-[var(--color-primary)] border-[var(--color-primary)] text-white" : "bg-[var(--color-background)] border-[var(--color-border)] text-[var(--color-foreground)] hover:bg-[var(--color-muted)]",
|
|
45
|
+
className
|
|
46
|
+
),
|
|
47
|
+
"aria-pressed": selected
|
|
48
|
+
}, props), {
|
|
49
|
+
children: [
|
|
50
|
+
children,
|
|
51
|
+
onRemove && /* @__PURE__ */ jsxRuntime.jsx(
|
|
52
|
+
"button",
|
|
53
|
+
{
|
|
54
|
+
type: "button",
|
|
55
|
+
onClick: (e) => {
|
|
56
|
+
e.stopPropagation();
|
|
57
|
+
onRemove();
|
|
58
|
+
},
|
|
59
|
+
className: "flex items-center justify-center w-4 h-4 rounded-full opacity-70 hover:opacity-100 transition-opacity",
|
|
60
|
+
"aria-label": "\uC81C\uAC70",
|
|
61
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M2 2L8 8M8 2L2 8", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) })
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
]
|
|
65
|
+
})
|
|
66
|
+
) });
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
Chip.displayName = "Chip";
|
|
70
|
+
|
|
71
|
+
exports.Chip = Chip;
|
|
72
|
+
//# sourceMappingURL=chunk-GFZKSV7F.cjs.map
|
|
73
|
+
//# sourceMappingURL=chunk-GFZKSV7F.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Chip/Chip.tsx"],"names":["React","__objRest","jsx","LazyMotion","domAnimation","jsxs","m","__spreadProps","__spreadValues","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAM,IAAA,GAAaA,gBAAA,CAAA,UAAA;AAAA,EACjB,CAAC,IAAwE,GAAA,KAAK;AAA7E,IAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,SAAA,EAAW,QAAA,EAAU,QAAA,GAAW,KAAA,EAAO,UAAU,OAAA,EAVtD,GAUG,EAAA,EAA+D,KAAA,GAAAC,2BAAA,CAA/D,EAAA,EAA+D,CAA7D,WAAA,EAAW,UAAA,EAAU,YAAkB,UAAA,EAAU,SAAA,CAAA,CAAA;AAClD,IAAA,uBAAAC,cAAA,CAACC,4BAAA,EAAA,EAAW,UAAUC,8BAAA,EACpB,QAAA,kBAAAC,eAAA;AAAA,MAACC,mBAAA,CAAE,MAAA;AAAA,MAAFC,+BAAA,CAAAC,gCAAA,CAAA;AAAA,QACC,GAAA;AAAA,QACA,QAAA,EAAU,EAAE,KAAA,EAAO,IAAA,EAAK;AAAA,QACxB,YAAY,EAAE,IAAA,EAAM,UAAU,SAAA,EAAW,GAAA,EAAK,SAAS,EAAA,EAAG;AAAA,QAC1D,OAAA;AAAA,QACA,SAAA,EAAWC,oBAAA;AAAA,UACT,0DAAA;AAAA,UACA,qCAAA;AAAA,UACA,uCAAA;AAAA,UACA,uHAAA;AAAA,UACA,iDAAA;AAAA,UACA,WACI,oEAAA,GACA,wHAAA;AAAA,UACJ;AAAA,SACF;AAAA,QACA,cAAA,EAAc;AAAA,OAAA,EACT,KAAA,CAAA,EAjBN;AAAA,QAmBE,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,QAAA,oBACCP,cAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,gBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,gBAAA,QAAA,EAAS;AAAA,cACX,CAAA;AAAA,cACA,SAAA,EAAU,uGAAA;AAAA,cACV,YAAA,EAAW,cAAA;AAAA,cAEX,QAAA,kBAAAA,cAAA,CAAC,SAAI,KAAA,EAAM,IAAA,EAAK,QAAO,IAAA,EAAK,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAAO,aAAA,EAAW,MACrE,QAAA,kBAAAA,cAAA,CAAC,MAAA,EAAA,EAAK,GAAE,kBAAA,EAAmB,MAAA,EAAO,gBAAe,WAAA,EAAY,KAAA,EAAM,aAAA,EAAc,OAAA,EAAQ,CAAA,EAC3F;AAAA;AAAA;AACF;AAAA,OAAA;AAAA,KAEJ,EACF,CAAA;AAAA,EAAA;AAEJ;AACA,IAAA,CAAK,WAAA,GAAc,MAAA","file":"chunk-GFZKSV7F.cjs","sourcesContent":["import * as React from \"react\";\nimport { m, LazyMotion, domAnimation } from \"../../utils/motion\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface ChipProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n selected?: boolean;\n onRemove?: () => void;\n}\n\nconst Chip = React.forwardRef<HTMLButtonElement, ChipProps>(\n ({ className, children, selected = false, onRemove, onClick, ...props }, ref) => (\n <LazyMotion features={domAnimation}>\n <m.button\n ref={ref}\n whileTap={{ scale: 0.95 }}\n transition={{ type: \"spring\", stiffness: 400, damping: 17 }}\n onClick={onClick}\n className={cn(\n \"inline-flex items-center gap-1.5 h-8 px-3.5 rounded-full\",\n \"text-[14px] font-medium select-none\",\n \"border transition-colors duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-primary)] focus-visible:ring-offset-2\",\n \"disabled:opacity-40 disabled:cursor-not-allowed\",\n selected\n ? \"bg-[var(--color-primary)] border-[var(--color-primary)] text-white\"\n : \"bg-[var(--color-background)] border-[var(--color-border)] text-[var(--color-foreground)] hover:bg-[var(--color-muted)]\",\n className\n )}\n aria-pressed={selected}\n {...(props as React.ComponentPropsWithoutRef<typeof m.button>)}\n >\n {children}\n {onRemove && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n className=\"flex items-center justify-center w-4 h-4 rounded-full opacity-70 hover:opacity-100 transition-opacity\"\n aria-label=\"제거\"\n >\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" aria-hidden>\n <path d=\"M2 2L8 8M8 2L2 8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n )}\n </m.button>\n </LazyMotion>\n )\n);\nChip.displayName = \"Chip\";\n\nexport { Chip };\n"]}
|