@doujins/payments-ui 0.1.10 → 0.1.12
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/dist/index.cjs +48 -43
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +48 -43
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -509,7 +509,7 @@ var Input = React15.forwardRef(
|
|
|
509
509
|
{
|
|
510
510
|
type,
|
|
511
511
|
className: cn(
|
|
512
|
-
"flex h-
|
|
512
|
+
"placeholder:text-white/30 flex h-9 w-full rounded-md border border-white/30 bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium font-light file:text-foreground text-foreground focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
|
513
513
|
className
|
|
514
514
|
),
|
|
515
515
|
ref,
|
|
@@ -520,7 +520,7 @@ var Input = React15.forwardRef(
|
|
|
520
520
|
);
|
|
521
521
|
Input.displayName = "Input";
|
|
522
522
|
var labelVariants = cva(
|
|
523
|
-
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
523
|
+
"text-sm font-medium leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
524
524
|
);
|
|
525
525
|
var Label = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
526
526
|
LabelPrimitive.Root,
|
|
@@ -538,7 +538,7 @@ var SelectTrigger = React15.forwardRef(({ className, children, ...props }, ref)
|
|
|
538
538
|
{
|
|
539
539
|
ref,
|
|
540
540
|
className: cn(
|
|
541
|
-
"flex h-
|
|
541
|
+
"flex h-9 w-full cursor-pointer items-center justify-between rounded-md border border-white/30 bg-transparent px-3 py-1 text-sm placeholder:text-white/30 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 [&>span]:text-current",
|
|
542
542
|
className
|
|
543
543
|
),
|
|
544
544
|
...props,
|
|
@@ -580,7 +580,7 @@ var SelectContent = React15.forwardRef(({ className, children, position = "poppe
|
|
|
580
580
|
{
|
|
581
581
|
ref,
|
|
582
582
|
className: cn(
|
|
583
|
-
"relative z-
|
|
583
|
+
"relative z-[200] max-h-64 min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border border-white/20 bg-background-regular text-foreground shadow-lg backdrop-blur-xl data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",
|
|
584
584
|
position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
585
585
|
className
|
|
586
586
|
),
|
|
@@ -617,13 +617,13 @@ var SelectItem = React15.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
617
617
|
{
|
|
618
618
|
ref,
|
|
619
619
|
className: cn(
|
|
620
|
-
"relative flex w-full cursor-
|
|
620
|
+
"relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none hover:bg-foreground/10 focus:bg-foreground/10 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
621
621
|
className
|
|
622
622
|
),
|
|
623
623
|
...props,
|
|
624
624
|
children: [
|
|
625
|
-
/* @__PURE__ */ jsx(
|
|
626
|
-
/* @__PURE__ */ jsx(SelectPrimitive.
|
|
625
|
+
/* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children }),
|
|
626
|
+
/* @__PURE__ */ jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "h-4 w-4" }) }) })
|
|
627
627
|
]
|
|
628
628
|
}
|
|
629
629
|
));
|
|
@@ -814,7 +814,8 @@ var CardDetailsForm = ({
|
|
|
814
814
|
visible
|
|
815
815
|
]);
|
|
816
816
|
const validate = () => {
|
|
817
|
-
|
|
817
|
+
const emailRequired = !defaultValues?.email && !config.defaultUser?.email;
|
|
818
|
+
if (!firstName.trim() || !lastName.trim() || !address1.trim() || !city.trim() || !postalCode.trim() || !country.trim() || emailRequired && !email.trim()) {
|
|
818
819
|
setLocalError("Please complete all required billing fields.");
|
|
819
820
|
return false;
|
|
820
821
|
}
|
|
@@ -832,7 +833,8 @@ var CardDetailsForm = ({
|
|
|
832
833
|
window.CollectJS.startPaymentRequest();
|
|
833
834
|
};
|
|
834
835
|
const errorMessage = localError ?? externalError;
|
|
835
|
-
const collectFieldClass = "relative flex h-
|
|
836
|
+
const collectFieldClass = "relative flex h-9 w-full items-center overflow-hidden rounded-md border border-white/30 bg-transparent px-3 text-sm text-foreground";
|
|
837
|
+
const showEmailField = !defaultValues?.email && !config.defaultUser?.email;
|
|
836
838
|
return /* @__PURE__ */ jsxs(
|
|
837
839
|
"form",
|
|
838
840
|
{
|
|
@@ -867,7 +869,7 @@ var CardDetailsForm = ({
|
|
|
867
869
|
)
|
|
868
870
|
] })
|
|
869
871
|
] }),
|
|
870
|
-
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
872
|
+
showEmailField && /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
871
873
|
/* @__PURE__ */ jsx(Label, { htmlFor: "email", children: "Email" }),
|
|
872
874
|
/* @__PURE__ */ jsx(
|
|
873
875
|
Input,
|
|
@@ -956,7 +958,7 @@ var CardDetailsForm = ({
|
|
|
956
958
|
Button,
|
|
957
959
|
{
|
|
958
960
|
type: "submit",
|
|
959
|
-
className: "w-full",
|
|
961
|
+
className: "w-full border-0 bg-emerald-600 text-white hover:bg-emerald-500 disabled:opacity-50",
|
|
960
962
|
disabled: submitting || submitDisabled || isTokenizing,
|
|
961
963
|
children: submitting || isTokenizing ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
962
964
|
/* @__PURE__ */ jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }),
|
|
@@ -2066,8 +2068,8 @@ var SubscriptionSuccessDialog = ({
|
|
|
2066
2068
|
}) => {
|
|
2067
2069
|
return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: (value) => {
|
|
2068
2070
|
if (!value) onClose();
|
|
2069
|
-
}, children: /* @__PURE__ */ jsxs(DialogContent, { className: "w-full max-w-md overflow-hidden border
|
|
2070
|
-
/* @__PURE__ */ jsxs("div", { className: "bg-gradient-to-b from-primary/25 via-primary/10 to-
|
|
2071
|
+
}, children: /* @__PURE__ */ jsxs(DialogContent, { className: "z-[100] w-full max-w-md overflow-hidden border border-white/20 p-0 backdrop-blur-xl bg-background-regular shadow-2xl", children: [
|
|
2072
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-gradient-to-b from-primary/25 via-primary/10 to-transparent px-6 py-8 text-center", children: [
|
|
2071
2073
|
/* @__PURE__ */ jsx("div", { className: "mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-background/60", children: /* @__PURE__ */ jsx(CheckCircle, { className: "h-10 w-10 text-primary" }) }),
|
|
2072
2074
|
/* @__PURE__ */ jsxs(DialogHeader, { children: [
|
|
2073
2075
|
/* @__PURE__ */ jsx(DialogTitle, { className: "text-2xl font-semibold text-foreground", children: "Subscription activated" }),
|
|
@@ -2082,7 +2084,7 @@ var SubscriptionSuccessDialog = ({
|
|
|
2082
2084
|
] })
|
|
2083
2085
|
] })
|
|
2084
2086
|
] }),
|
|
2085
|
-
/* @__PURE__ */ jsx("div", { className: "px-6 py-6", children: /* @__PURE__ */ jsx(Button, { className: "w-full", onClick: onClose, children: "Continue exploring" }) })
|
|
2087
|
+
/* @__PURE__ */ jsx("div", { className: "px-6 py-6", children: /* @__PURE__ */ jsx(Button, { className: "w-full border-0 bg-emerald-600 text-white hover:bg-emerald-500", onClick: onClose, children: "Continue exploring" }) })
|
|
2086
2088
|
] }) });
|
|
2087
2089
|
};
|
|
2088
2090
|
var useSubscriptionActions = () => {
|
|
@@ -2254,9 +2256,9 @@ var SubscriptionCheckoutModal = ({
|
|
|
2254
2256
|
/* @__PURE__ */ jsx(Dialog, { open, onOpenChange: handleClose, children: /* @__PURE__ */ jsxs(
|
|
2255
2257
|
DialogContent,
|
|
2256
2258
|
{
|
|
2257
|
-
className: "max-w-
|
|
2259
|
+
className: "z-[100] max-w-xl max-h-[90vh] overflow-y-auto border border-white/20 p-6 backdrop-blur-xl bg-background-regular rounded-md [&::-webkit-scrollbar]:hidden",
|
|
2258
2260
|
children: [
|
|
2259
|
-
/* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: "Checkout" }) }),
|
|
2261
|
+
/* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { className: "flex items-center gap-2 text-foreground", children: "Checkout" }) }),
|
|
2260
2262
|
/* @__PURE__ */ jsx("div", { className: "space-y-4", children: !priceId ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-center px-3 py-2 text-sm text-destructive", children: [
|
|
2261
2263
|
/* @__PURE__ */ jsx(AlertCircle, { className: "h-4 w-4" }),
|
|
2262
2264
|
" ",
|
|
@@ -2305,8 +2307,8 @@ var wallets = [
|
|
|
2305
2307
|
];
|
|
2306
2308
|
var WalletModal = ({ open, onOpenChange }) => {
|
|
2307
2309
|
const [expandedWallet, setExpandedWallet] = useState(null);
|
|
2308
|
-
return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(DialogContent, { className: "w-full max-w-lg max-h-[90vh] overflow-y-auto rounded-md border
|
|
2309
|
-
/* @__PURE__ */ jsxs(DialogHeader, { className: "border-b bg-gradient-to-r from-primary/10 via-
|
|
2310
|
+
return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(DialogContent, { className: "z-[100] w-full max-w-lg max-h-[90vh] overflow-y-auto rounded-md border border-white/20 p-0 backdrop-blur-xl bg-background-regular shadow-2xl [&::-webkit-scrollbar]:hidden", children: [
|
|
2311
|
+
/* @__PURE__ */ jsxs(DialogHeader, { className: "border-b border-white/10 bg-gradient-to-r from-primary/10 via-transparent to-transparent px-6 py-5 text-left", children: [
|
|
2310
2312
|
/* @__PURE__ */ jsxs(DialogTitle, { className: "flex items-center gap-2 text-foreground", children: [
|
|
2311
2313
|
/* @__PURE__ */ jsx(Wallet, { className: "h-5 w-5 text-primary" }),
|
|
2312
2314
|
" Connect a Solana wallet"
|
|
@@ -2317,7 +2319,7 @@ var WalletModal = ({ open, onOpenChange }) => {
|
|
|
2317
2319
|
wallets.map((wallet) => /* @__PURE__ */ jsxs(
|
|
2318
2320
|
"div",
|
|
2319
2321
|
{
|
|
2320
|
-
className: "rounded-2xl border bg-
|
|
2322
|
+
className: "rounded-2xl border border-white/20 bg-foreground/5 p-4 shadow-sm",
|
|
2321
2323
|
children: [
|
|
2322
2324
|
/* @__PURE__ */ jsxs(
|
|
2323
2325
|
"button",
|
|
@@ -2342,7 +2344,7 @@ var WalletModal = ({ open, onOpenChange }) => {
|
|
|
2342
2344
|
wallet.name,
|
|
2343
2345
|
" wallet, approve the connection request, and confirm the signature prompt to finish linking."
|
|
2344
2346
|
] }),
|
|
2345
|
-
/* @__PURE__ */ jsxs(Button, { className: "w-full", variant: "outline", disabled: true, children: [
|
|
2347
|
+
/* @__PURE__ */ jsxs(Button, { className: "w-full border-white/20 bg-transparent text-foreground hover:bg-foreground/10 hover:text-foreground", variant: "outline", disabled: true, children: [
|
|
2346
2348
|
"Connect with ",
|
|
2347
2349
|
wallet.name,
|
|
2348
2350
|
" (coming soon)"
|
|
@@ -2352,7 +2354,7 @@ var WalletModal = ({ open, onOpenChange }) => {
|
|
|
2352
2354
|
},
|
|
2353
2355
|
wallet.id
|
|
2354
2356
|
)),
|
|
2355
|
-
/* @__PURE__ */ jsx("div", { className: "rounded-2xl border bg-
|
|
2357
|
+
/* @__PURE__ */ jsx("div", { className: "rounded-2xl border border-white/20 bg-foreground/5 p-4 text-xs text-muted-foreground", children: "Don't see your wallet? Additional providers will be added soon. Contact support if you need manual verification." })
|
|
2356
2358
|
] })
|
|
2357
2359
|
] }) });
|
|
2358
2360
|
};
|
|
@@ -2788,9 +2790,9 @@ var CancelMembershipDialog = ({
|
|
|
2788
2790
|
" ",
|
|
2789
2791
|
t.buttonLabel
|
|
2790
2792
|
] }) }),
|
|
2791
|
-
/* @__PURE__ */ jsxs(AlertDialogContent, { className: "max-h-[90vh] overflow-y-auto rounded-md border border-
|
|
2793
|
+
/* @__PURE__ */ jsxs(AlertDialogContent, { className: "z-[100] max-h-[90vh] overflow-y-auto rounded-md border border-white/20 p-6 backdrop-blur-xl bg-background-regular", children: [
|
|
2792
2794
|
/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [
|
|
2793
|
-
/* @__PURE__ */ jsxs(AlertDialogTitle, { className: "flex items-center gap-2 text-lg font-semibold", children: [
|
|
2795
|
+
/* @__PURE__ */ jsxs(AlertDialogTitle, { className: "flex items-center gap-2 text-lg font-semibold text-foreground", children: [
|
|
2794
2796
|
/* @__PURE__ */ jsx(TriangleAlert, { className: "h-5 w-5 text-destructive" }),
|
|
2795
2797
|
" ",
|
|
2796
2798
|
t.title
|
|
@@ -2805,7 +2807,7 @@ var CancelMembershipDialog = ({
|
|
|
2805
2807
|
] })
|
|
2806
2808
|
] }),
|
|
2807
2809
|
/* @__PURE__ */ jsxs("div", { className: "my-4 space-y-2 py-2", children: [
|
|
2808
|
-
/* @__PURE__ */ jsx(Label, { htmlFor: "cancelReason", className: "text-sm font-medium", children: t.reasonLabel }),
|
|
2810
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "cancelReason", className: "text-sm font-medium text-foreground", children: t.reasonLabel }),
|
|
2809
2811
|
/* @__PURE__ */ jsx(
|
|
2810
2812
|
Textarea,
|
|
2811
2813
|
{
|
|
@@ -2814,7 +2816,7 @@ var CancelMembershipDialog = ({
|
|
|
2814
2816
|
onChange: handleReasonChange,
|
|
2815
2817
|
placeholder: t.reasonPlaceholder,
|
|
2816
2818
|
className: cn(
|
|
2817
|
-
"w-full resize-none border-
|
|
2819
|
+
"w-full resize-none border-white/20 bg-foreground/5 text-foreground placeholder:text-muted-foreground",
|
|
2818
2820
|
showError && "border-destructive"
|
|
2819
2821
|
),
|
|
2820
2822
|
rows: 4,
|
|
@@ -2832,11 +2834,11 @@ var CancelMembershipDialog = ({
|
|
|
2832
2834
|
)
|
|
2833
2835
|
] }),
|
|
2834
2836
|
/* @__PURE__ */ jsxs(AlertDialogFooter, { className: "mt-6 gap-2", children: [
|
|
2835
|
-
/* @__PURE__ */ jsx(AlertDialogCancel, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "outline", className: "border-
|
|
2837
|
+
/* @__PURE__ */ jsx(AlertDialogCancel, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "outline", className: "border-white/20 bg-transparent text-foreground hover:bg-foreground/10 hover:text-foreground", children: t.keepMembership }) }),
|
|
2836
2838
|
/* @__PURE__ */ jsx(AlertDialogAction, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
2837
2839
|
Button,
|
|
2838
2840
|
{
|
|
2839
|
-
className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
2841
|
+
className: "bg-destructive text-destructive-foreground hover:bg-destructive/90 disabled:opacity-50",
|
|
2840
2842
|
onClick: handleConfirm,
|
|
2841
2843
|
disabled: !isReasonValid || isSubmitting,
|
|
2842
2844
|
children: isSubmitting ? t.cancelling : t.confirmCancellation
|
|
@@ -3171,9 +3173,12 @@ var PaymentMethodsSection = ({
|
|
|
3171
3173
|
/* @__PURE__ */ jsx(Dialog, { open: isModalOpen, onOpenChange: setIsModalOpen, children: /* @__PURE__ */ jsxs(
|
|
3172
3174
|
DialogContent,
|
|
3173
3175
|
{
|
|
3174
|
-
className: "max-w-
|
|
3176
|
+
className: "z-[100] max-w-xl max-h-[90vh] overflow-y-auto border border-white/20 p-6 backdrop-blur-xl bg-background-regular rounded-md [&::-webkit-scrollbar]:hidden",
|
|
3175
3177
|
children: [
|
|
3176
|
-
/* @__PURE__ */
|
|
3178
|
+
/* @__PURE__ */ jsxs(DialogHeader, { children: [
|
|
3179
|
+
/* @__PURE__ */ jsx(DialogTitle, { className: "flex items-center gap-2 text-foreground", children: t.addNewCard }),
|
|
3180
|
+
/* @__PURE__ */ jsx(DialogDescription, { className: "text-muted-foreground", children: t.addNewCardDescription })
|
|
3181
|
+
] }),
|
|
3177
3182
|
/* @__PURE__ */ jsx(
|
|
3178
3183
|
CardDetailsForm,
|
|
3179
3184
|
{
|
|
@@ -3257,59 +3262,59 @@ var WalletDialog = ({ open, onOpenChange }) => {
|
|
|
3257
3262
|
onOpenChange(false);
|
|
3258
3263
|
setForm(initialState);
|
|
3259
3264
|
};
|
|
3260
|
-
return /* @__PURE__ */ jsx(AlertDialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(AlertDialogContent, { className: "max-h-[95vh] max-w-lg overflow-y-auto rounded-2xl border border-
|
|
3261
|
-
/* @__PURE__ */ jsxs(AlertDialogHeader, { className: "border-b pb-4", children: [
|
|
3265
|
+
return /* @__PURE__ */ jsx(AlertDialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(AlertDialogContent, { className: "z-[100] max-h-[95vh] max-w-lg overflow-y-auto rounded-2xl border border-white/20 p-6 backdrop-blur-xl bg-background-regular", children: [
|
|
3266
|
+
/* @__PURE__ */ jsxs(AlertDialogHeader, { className: "border-b border-white/10 pb-4", children: [
|
|
3262
3267
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-2", children: [
|
|
3263
3268
|
/* @__PURE__ */ jsx(Shield, { className: "h-5 w-5 text-primary" }),
|
|
3264
|
-
/* @__PURE__ */ jsx(AlertDialogTitle, { className: "text-center text-base font-semibold uppercase tracking-wide", children: "Secure Payment via Mobius Pay" })
|
|
3269
|
+
/* @__PURE__ */ jsx(AlertDialogTitle, { className: "text-center text-base font-semibold uppercase tracking-wide text-foreground", children: "Secure Payment via Mobius Pay" })
|
|
3265
3270
|
] }),
|
|
3266
3271
|
/* @__PURE__ */ jsx("p", { className: "mt-2 text-center text-sm text-muted-foreground", children: "$23 USD per month, cancel at any time." })
|
|
3267
3272
|
] }),
|
|
3268
3273
|
/* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "space-y-5 px-2 py-4 sm:px-4", children: [
|
|
3269
3274
|
/* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
3270
3275
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
3271
|
-
/* @__PURE__ */ jsx(Label, { className: "mb-1 block text-sm text-
|
|
3276
|
+
/* @__PURE__ */ jsx(Label, { className: "mb-1 block text-sm text-foreground", children: "Name on Card" }),
|
|
3272
3277
|
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
3273
3278
|
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground", children: /* @__PURE__ */ jsx(UserRound, { className: "h-4 w-4" }) }),
|
|
3274
|
-
/* @__PURE__ */ jsx(Input, { value: form.nameOnCard, onChange: (e) => updateField("nameOnCard", e.target.value), className: "pl-10" })
|
|
3279
|
+
/* @__PURE__ */ jsx(Input, { value: form.nameOnCard, onChange: (e) => updateField("nameOnCard", e.target.value), className: "pl-10 border-white/20 bg-foreground/5 text-foreground placeholder:text-muted-foreground" })
|
|
3275
3280
|
] }),
|
|
3276
3281
|
errors.nameOnCard && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-destructive", children: errors.nameOnCard })
|
|
3277
3282
|
] }),
|
|
3278
3283
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
3279
|
-
/* @__PURE__ */ jsx(Label, { className: "mb-1 block text-sm text-
|
|
3284
|
+
/* @__PURE__ */ jsx(Label, { className: "mb-1 block text-sm text-foreground", children: "Credit Card Number" }),
|
|
3280
3285
|
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
3281
3286
|
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground", children: /* @__PURE__ */ jsx(CreditCard, { className: "h-4 w-4" }) }),
|
|
3282
|
-
/* @__PURE__ */ jsx(Input, { value: form.cardNumber, onChange: (e) => updateField("cardNumber", e.target.value), className: "pl-10" })
|
|
3287
|
+
/* @__PURE__ */ jsx(Input, { value: form.cardNumber, onChange: (e) => updateField("cardNumber", e.target.value), className: "pl-10 border-white/20 bg-foreground/5 text-foreground placeholder:text-muted-foreground" })
|
|
3283
3288
|
] }),
|
|
3284
3289
|
errors.cardNumber && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-destructive", children: errors.cardNumber })
|
|
3285
3290
|
] }),
|
|
3286
3291
|
/* @__PURE__ */ jsxs("div", { className: "flex gap-4", children: [
|
|
3287
3292
|
/* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
|
|
3288
|
-
/* @__PURE__ */ jsx(Label, { className: "mb-1 block text-sm text-
|
|
3293
|
+
/* @__PURE__ */ jsx(Label, { className: "mb-1 block text-sm text-foreground", children: "Expiration" }),
|
|
3289
3294
|
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
3290
3295
|
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground", children: /* @__PURE__ */ jsx(Calendar, { className: "h-4 w-4" }) }),
|
|
3291
|
-
/* @__PURE__ */ jsx(Input, { value: form.expiration, onChange: (e) => updateField("expiration", e.target.value), className: "pl-10", placeholder: "MM/YY" })
|
|
3296
|
+
/* @__PURE__ */ jsx(Input, { value: form.expiration, onChange: (e) => updateField("expiration", e.target.value), className: "pl-10 border-white/20 bg-foreground/5 text-foreground placeholder:text-muted-foreground", placeholder: "MM/YY" })
|
|
3292
3297
|
] }),
|
|
3293
3298
|
errors.expiration && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-destructive", children: errors.expiration })
|
|
3294
3299
|
] }),
|
|
3295
3300
|
/* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
|
|
3296
|
-
/* @__PURE__ */ jsx(Label, { className: "mb-1 block text-sm text-
|
|
3301
|
+
/* @__PURE__ */ jsx(Label, { className: "mb-1 block text-sm text-foreground", children: "CVV" }),
|
|
3297
3302
|
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
3298
3303
|
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground", children: /* @__PURE__ */ jsx(KeyRound, { className: "h-4 w-4" }) }),
|
|
3299
|
-
/* @__PURE__ */ jsx(Input, { value: form.cvv, onChange: (e) => updateField("cvv", e.target.value), className: "pl-10" })
|
|
3304
|
+
/* @__PURE__ */ jsx(Input, { value: form.cvv, onChange: (e) => updateField("cvv", e.target.value), className: "pl-10 border-white/20 bg-foreground/5 text-foreground placeholder:text-muted-foreground" })
|
|
3300
3305
|
] }),
|
|
3301
3306
|
errors.cvv && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-destructive", children: errors.cvv })
|
|
3302
3307
|
] })
|
|
3303
3308
|
] })
|
|
3304
3309
|
] }),
|
|
3305
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3 rounded-md border bg-
|
|
3310
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3 rounded-md border border-white/20 bg-foreground/5 p-4", children: [
|
|
3306
3311
|
/* @__PURE__ */ jsx(Checkbox, { id: "terms-agree", checked: form.termsAccepted, onCheckedChange: (checked) => updateField("termsAccepted", Boolean(checked)) }),
|
|
3307
3312
|
/* @__PURE__ */ jsx(Label, { htmlFor: "terms-agree", className: "text-sm text-muted-foreground", children: "By completing this order, I confirm that I am 18 years or older and agree to your privacy policy and terms." })
|
|
3308
3313
|
] }),
|
|
3309
3314
|
errors.termsAccepted && /* @__PURE__ */ jsx("p", { className: "text-xs text-destructive", children: errors.termsAccepted }),
|
|
3310
3315
|
/* @__PURE__ */ jsxs(AlertDialogFooter, { className: "flex gap-2", children: [
|
|
3311
|
-
/* @__PURE__ */ jsx(Button, { type: "submit", className: "flex-1", children: "Subscribe" }),
|
|
3312
|
-
/* @__PURE__ */ jsx(AlertDialogCancel, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "outline", className: "flex-1", children: "Close" }) })
|
|
3316
|
+
/* @__PURE__ */ jsx(Button, { type: "submit", className: "flex-1 border-0 bg-emerald-600 text-white hover:bg-emerald-500 disabled:opacity-50", children: "Subscribe" }),
|
|
3317
|
+
/* @__PURE__ */ jsx(AlertDialogCancel, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "outline", className: "flex-1 border-white/20 bg-transparent text-foreground hover:bg-foreground/10 hover:text-foreground", children: "Close" }) })
|
|
3313
3318
|
] })
|
|
3314
3319
|
] })
|
|
3315
3320
|
] }) });
|