@betterstore/react 0.2.4 → 0.2.5

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.js CHANGED
@@ -2,9 +2,44 @@
2
2
 
3
3
  var zustand = require('zustand');
4
4
  var React = require('react');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var classVarianceAuthority = require('class-variance-authority');
7
+ var clsx = require('clsx');
8
+ var tailwindMerge = require('tailwind-merge');
9
+ var CheckboxPrimitive = require('@radix-ui/react-checkbox');
10
+ var lucideReact = require('lucide-react');
11
+ var reactHookForm = require('react-hook-form');
12
+ var LabelPrimitive = require('@radix-ui/react-label');
13
+ var SelectPrimitive = require('@radix-ui/react-select');
14
+ var resolvers = require('@hookform/resolvers');
15
+ var zod = require('zod');
16
+ var RadioGroupPrimitive = require('@radix-ui/react-radio-group');
5
17
  var reactStripeJs = require('@stripe/react-stripe-js');
6
18
  var stripeJs = require('@stripe/stripe-js');
7
19
 
20
+ function _interopNamespaceDefault(e) {
21
+ var n = Object.create(null);
22
+ if (e) {
23
+ Object.keys(e).forEach(function (k) {
24
+ if (k !== 'default') {
25
+ var d = Object.getOwnPropertyDescriptor(e, k);
26
+ Object.defineProperty(n, k, d.get ? d : {
27
+ enumerable: true,
28
+ get: function () { return e[k]; }
29
+ });
30
+ }
31
+ });
32
+ }
33
+ n.default = e;
34
+ return Object.freeze(n);
35
+ }
36
+
37
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
38
+ var CheckboxPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(CheckboxPrimitive);
39
+ var LabelPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(LabelPrimitive);
40
+ var SelectPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(SelectPrimitive);
41
+ var RadioGroupPrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(RadioGroupPrimitive);
42
+
8
43
  function createJSONStorage(getStorage, options) {
9
44
  let storage;
10
45
  try {
@@ -258,6 +293,18 @@ PERFORMANCE OF THIS SOFTWARE.
258
293
  /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
259
294
 
260
295
 
296
+ function __rest(s, e) {
297
+ var t = {};
298
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
299
+ t[p] = s[p];
300
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
301
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
302
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
303
+ t[p[i]] = s[p[i]];
304
+ }
305
+ return t;
306
+ }
307
+
261
308
  function __awaiter(thisArg, _arguments, P, generator) {
262
309
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
263
310
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -273,6 +320,608 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
273
320
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
274
321
  };
275
322
 
323
+ // packages/react/compose-refs/src/composeRefs.tsx
324
+ function setRef(ref, value) {
325
+ if (typeof ref === "function") {
326
+ return ref(value);
327
+ } else if (ref !== null && ref !== void 0) {
328
+ ref.current = value;
329
+ }
330
+ }
331
+ function composeRefs(...refs) {
332
+ return (node) => {
333
+ let hasCleanup = false;
334
+ const cleanups = refs.map((ref) => {
335
+ const cleanup = setRef(ref, node);
336
+ if (!hasCleanup && typeof cleanup == "function") {
337
+ hasCleanup = true;
338
+ }
339
+ return cleanup;
340
+ });
341
+ if (hasCleanup) {
342
+ return () => {
343
+ for (let i = 0; i < cleanups.length; i++) {
344
+ const cleanup = cleanups[i];
345
+ if (typeof cleanup == "function") {
346
+ cleanup();
347
+ } else {
348
+ setRef(refs[i], null);
349
+ }
350
+ }
351
+ };
352
+ }
353
+ };
354
+ }
355
+
356
+ // packages/react/slot/src/slot.tsx
357
+ var Slot = React__namespace.forwardRef((props, forwardedRef) => {
358
+ const { children, ...slotProps } = props;
359
+ const childrenArray = React__namespace.Children.toArray(children);
360
+ const slottable = childrenArray.find(isSlottable);
361
+ if (slottable) {
362
+ const newElement = slottable.props.children;
363
+ const newChildren = childrenArray.map((child) => {
364
+ if (child === slottable) {
365
+ if (React__namespace.Children.count(newElement) > 1) return React__namespace.Children.only(null);
366
+ return React__namespace.isValidElement(newElement) ? newElement.props.children : null;
367
+ } else {
368
+ return child;
369
+ }
370
+ });
371
+ return /* @__PURE__ */ jsxRuntime.jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React__namespace.isValidElement(newElement) ? React__namespace.cloneElement(newElement, void 0, newChildren) : null });
372
+ }
373
+ return /* @__PURE__ */ jsxRuntime.jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });
374
+ });
375
+ Slot.displayName = "Slot";
376
+ var SlotClone = React__namespace.forwardRef((props, forwardedRef) => {
377
+ const { children, ...slotProps } = props;
378
+ if (React__namespace.isValidElement(children)) {
379
+ const childrenRef = getElementRef(children);
380
+ const props2 = mergeProps(slotProps, children.props);
381
+ if (children.type !== React__namespace.Fragment) {
382
+ props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;
383
+ }
384
+ return React__namespace.cloneElement(children, props2);
385
+ }
386
+ return React__namespace.Children.count(children) > 1 ? React__namespace.Children.only(null) : null;
387
+ });
388
+ SlotClone.displayName = "SlotClone";
389
+ var Slottable = ({ children }) => {
390
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
391
+ };
392
+ function isSlottable(child) {
393
+ return React__namespace.isValidElement(child) && child.type === Slottable;
394
+ }
395
+ function mergeProps(slotProps, childProps) {
396
+ const overrideProps = { ...childProps };
397
+ for (const propName in childProps) {
398
+ const slotPropValue = slotProps[propName];
399
+ const childPropValue = childProps[propName];
400
+ const isHandler = /^on[A-Z]/.test(propName);
401
+ if (isHandler) {
402
+ if (slotPropValue && childPropValue) {
403
+ overrideProps[propName] = (...args) => {
404
+ childPropValue(...args);
405
+ slotPropValue(...args);
406
+ };
407
+ } else if (slotPropValue) {
408
+ overrideProps[propName] = slotPropValue;
409
+ }
410
+ } else if (propName === "style") {
411
+ overrideProps[propName] = { ...slotPropValue, ...childPropValue };
412
+ } else if (propName === "className") {
413
+ overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" ");
414
+ }
415
+ }
416
+ return { ...slotProps, ...overrideProps };
417
+ }
418
+ function getElementRef(element) {
419
+ let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
420
+ let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
421
+ if (mayWarn) {
422
+ return element.ref;
423
+ }
424
+ getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
425
+ mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
426
+ if (mayWarn) {
427
+ return element.props.ref;
428
+ }
429
+ return element.props.ref || element.ref;
430
+ }
431
+
432
+ function cn(...inputs) {
433
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
434
+ }
435
+
436
+ const buttonVariants = classVarianceAuthority.cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", {
437
+ variants: {
438
+ variant: {
439
+ default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
440
+ destructive: "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
441
+ outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground",
442
+ secondary: "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
443
+ ghost: "hover:bg-accent hover:text-accent-foreground",
444
+ link: "text-primary underline-offset-4 hover:underline",
445
+ },
446
+ size: {
447
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
448
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
449
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
450
+ icon: "size-9",
451
+ },
452
+ },
453
+ defaultVariants: {
454
+ variant: "default",
455
+ size: "default",
456
+ },
457
+ });
458
+ function Button(_a) {
459
+ var { className, variant, size, asChild = false } = _a, props = __rest(_a, ["className", "variant", "size", "asChild"]);
460
+ const Comp = asChild ? Slot : "button";
461
+ return (React__namespace.createElement(Comp, Object.assign({ "data-slot": "button", className: cn(buttonVariants({ variant, size, className })) }, props)));
462
+ }
463
+
464
+ function Checkbox(_a) {
465
+ var { className } = _a, props = __rest(_a, ["className"]);
466
+ return (React__namespace.createElement(CheckboxPrimitive__namespace.Root, Object.assign({ "data-slot": "checkbox", className: cn("peer border-input data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", className) }, props),
467
+ React__namespace.createElement(CheckboxPrimitive__namespace.Indicator, { "data-slot": "checkbox-indicator", className: "flex items-center justify-center text-current transition-none" },
468
+ React__namespace.createElement(lucideReact.CheckIcon, { className: "size-3.5" }))));
469
+ }
470
+
471
+ function Label(_a) {
472
+ var { className } = _a, props = __rest(_a, ["className"]);
473
+ return (React__namespace.createElement(LabelPrimitive__namespace.Root, Object.assign({ "data-slot": "label", className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className) }, props)));
474
+ }
475
+
476
+ const Form = reactHookForm.FormProvider;
477
+ const FormFieldContext = React__namespace.createContext({});
478
+ const FormField = (_a) => {
479
+ var props = __rest(_a, []);
480
+ return (React__namespace.createElement(FormFieldContext.Provider, { value: { name: props.name } },
481
+ React__namespace.createElement(reactHookForm.Controller, Object.assign({}, props))));
482
+ };
483
+ const useFormField = () => {
484
+ const fieldContext = React__namespace.useContext(FormFieldContext);
485
+ const itemContext = React__namespace.useContext(FormItemContext);
486
+ const { getFieldState } = reactHookForm.useFormContext();
487
+ const formState = reactHookForm.useFormState({ name: fieldContext.name });
488
+ const fieldState = getFieldState(fieldContext.name, formState);
489
+ if (!fieldContext) {
490
+ throw new Error("useFormField should be used within <FormField>");
491
+ }
492
+ const { id } = itemContext;
493
+ return Object.assign({ id, name: fieldContext.name, formItemId: `${id}-form-item`, formDescriptionId: `${id}-form-item-description`, formMessageId: `${id}-form-item-message` }, fieldState);
494
+ };
495
+ const FormItemContext = React__namespace.createContext({});
496
+ function FormItem(_a) {
497
+ var { className } = _a, props = __rest(_a, ["className"]);
498
+ const id = React__namespace.useId();
499
+ return (React__namespace.createElement(FormItemContext.Provider, { value: { id } },
500
+ React__namespace.createElement("div", Object.assign({ "data-slot": "form-item", className: cn("grid gap-2", className) }, props))));
501
+ }
502
+ function FormLabel(_a) {
503
+ var { className } = _a, props = __rest(_a, ["className"]);
504
+ const { error, formItemId } = useFormField();
505
+ return (React__namespace.createElement(Label, Object.assign({ "data-slot": "form-label", "data-error": !!error, className: cn("data-[error=true]:text-destructive-foreground", className), htmlFor: formItemId }, props)));
506
+ }
507
+ function FormControl(_a) {
508
+ var props = __rest(_a, []);
509
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
510
+ return (React__namespace.createElement(Slot, Object.assign({ "data-slot": "form-control", id: formItemId, "aria-describedby": !error
511
+ ? `${formDescriptionId}`
512
+ : `${formDescriptionId} ${formMessageId}`, "aria-invalid": !!error }, props)));
513
+ }
514
+ function FormMessage(_a) {
515
+ var _b;
516
+ var { className } = _a, props = __rest(_a, ["className"]);
517
+ const { error, formMessageId } = useFormField();
518
+ const body = error ? String((_b = error === null || error === void 0 ? void 0 : error.message) !== null && _b !== void 0 ? _b : "") : props.children;
519
+ if (!body) {
520
+ return null;
521
+ }
522
+ return (React__namespace.createElement("p", Object.assign({ "data-slot": "form-message", id: formMessageId, className: cn("text-destructive-foreground text-sm", className) }, props), body));
523
+ }
524
+
525
+ function Input(_a) {
526
+ var { className, type } = _a, props = __rest(_a, ["className", "type"]);
527
+ return (React__namespace.createElement("input", Object.assign({ type: type, "data-slot": "input", className: cn("border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", className) }, props)));
528
+ }
529
+
530
+ function Select(_a) {
531
+ var props = __rest(_a, []);
532
+ return React__namespace.createElement(SelectPrimitive__namespace.Root, Object.assign({ "data-slot": "select" }, props));
533
+ }
534
+ function SelectValue(_a) {
535
+ var props = __rest(_a, []);
536
+ return React__namespace.createElement(SelectPrimitive__namespace.Value, Object.assign({ "data-slot": "select-value" }, props));
537
+ }
538
+ function SelectTrigger(_a) {
539
+ var { className, children } = _a, props = __rest(_a, ["className", "children"]);
540
+ return (React__namespace.createElement(SelectPrimitive__namespace.Trigger, Object.assign({ "data-slot": "select-trigger", className: cn("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex h-9 w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className) }, props),
541
+ children,
542
+ React__namespace.createElement(SelectPrimitive__namespace.Icon, { asChild: true },
543
+ React__namespace.createElement(lucideReact.ChevronDownIcon, { className: "size-4 opacity-50" }))));
544
+ }
545
+ function SelectContent(_a) {
546
+ var { className, children, position = "popper" } = _a, props = __rest(_a, ["className", "children", "position"]);
547
+ return (React__namespace.createElement(SelectPrimitive__namespace.Portal, null,
548
+ React__namespace.createElement(SelectPrimitive__namespace.Content, Object.assign({ "data-slot": "select-content", className: cn("bg-popover text-popover-foreground 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 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border shadow-md", position === "popper" &&
549
+ "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className), position: position }, props),
550
+ React__namespace.createElement(SelectScrollUpButton, null),
551
+ React__namespace.createElement(SelectPrimitive__namespace.Viewport, { className: cn("p-1", position === "popper" &&
552
+ "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1") }, children),
553
+ React__namespace.createElement(SelectScrollDownButton, null))));
554
+ }
555
+ function SelectItem(_a) {
556
+ var { className, children } = _a, props = __rest(_a, ["className", "children"]);
557
+ return (React__namespace.createElement(SelectPrimitive__namespace.Item, Object.assign({ "data-slot": "select-item", className: cn("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className) }, props),
558
+ React__namespace.createElement("span", { className: "absolute right-2 flex size-3.5 items-center justify-center" },
559
+ React__namespace.createElement(SelectPrimitive__namespace.ItemIndicator, null,
560
+ React__namespace.createElement(lucideReact.CheckIcon, { className: "size-4" }))),
561
+ React__namespace.createElement(SelectPrimitive__namespace.ItemText, null, children)));
562
+ }
563
+ function SelectScrollUpButton(_a) {
564
+ var { className } = _a, props = __rest(_a, ["className"]);
565
+ return (React__namespace.createElement(SelectPrimitive__namespace.ScrollUpButton, Object.assign({ "data-slot": "select-scroll-up-button", className: cn("flex cursor-default items-center justify-center py-1", className) }, props),
566
+ React__namespace.createElement(lucideReact.ChevronUpIcon, { className: "size-4" })));
567
+ }
568
+ function SelectScrollDownButton(_a) {
569
+ var { className } = _a, props = __rest(_a, ["className"]);
570
+ return (React__namespace.createElement(SelectPrimitive__namespace.ScrollDownButton, Object.assign({ "data-slot": "select-scroll-down-button", className: cn("flex cursor-default items-center justify-center py-1", className) }, props),
571
+ React__namespace.createElement(lucideReact.ChevronDownIcon, { className: "size-4" })));
572
+ }
573
+
574
+ function n(r,e){for(var n={};r.length;){var s=r[0],t=s.code,i=s.message,a=s.path.join(".");if(!n[a])if("unionErrors"in s){var u=s.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code};}else n[a]={message:i,type:t};if("unionErrors"in s&&s.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[s.code];n[a]=reactHookForm.appendErrors(a,e,n,t,f?[].concat(f,s.message):s.message);}r.shift();}return n}function s(o,s,t){return void 0===t&&(t={}),function(i,a,u){try{return Promise.resolve(function(e,n){try{var a=Promise.resolve(o["sync"===t.mode?"parse":"parseAsync"](i,s)).then(function(e){return u.shouldUseNativeValidation&&resolvers.validateFieldsNatively({},u),{errors:{},values:t.raw?Object.assign({},i):e}});}catch(r){return n(r)}return a&&a.then?a.then(void 0,n):a}(0,function(r){if(function(r){return Array.isArray(null==r?void 0:r.errors)}(r))return {values:{},errors:resolvers.toNestErrors(n(r.errors,!u.shouldUseNativeValidation&&"all"===u.criteriaMode),u)};throw r}))}catch(r){return Promise.reject(r)}}}
575
+
576
+ // Shipping address schema
577
+ const customerSchema = zod.z.object({
578
+ email: zod.z.string().email("Please enter a valid email address"),
579
+ marketingConsent: zod.z.boolean().optional(),
580
+ firstName: zod.z.string().optional(),
581
+ lastName: zod.z.string().min(1, "Last name is required"),
582
+ address: zod.z.string().min(1, "Address is required"),
583
+ apartment: zod.z.string().optional(),
584
+ city: zod.z.string().min(1, "City is required"),
585
+ state: zod.z.string().min(1, "State is required"),
586
+ zipCode: zod.z.string().min(5, "ZIP code is required"),
587
+ country: zod.z.string().min(1, "Country is required"),
588
+ saveInfo: zod.z.boolean().optional(),
589
+ });
590
+ // Shipping method schema
591
+ const shippingMethodSchema = zod.z.object({
592
+ method: zod.z.enum(["economy", "standard"]),
593
+ });
594
+ // Payment method schema
595
+ const paymentMethodSchema = zod.z.object({
596
+ cardNumber: zod.z.string().min(1, "Card number is required"),
597
+ expiryDate: zod.z.string().min(1, "Expiry date is required"),
598
+ cvv: zod.z.string().min(1, "CVV is required"),
599
+ nameOnCard: zod.z.string().min(1, "Name is required"),
600
+ });
601
+ // Combined checkout schema
602
+ zod.z.object({
603
+ customer: customerSchema,
604
+ shipping: shippingMethodSchema,
605
+ payment: paymentMethodSchema,
606
+ });
607
+
608
+ function CustomerForm({ initialData, onSubmit, onBack, }) {
609
+ const form = reactHookForm.useForm({
610
+ resolver: s(customerSchema),
611
+ defaultValues: initialData || {
612
+ email: "",
613
+ marketingConsent: false,
614
+ firstName: "",
615
+ lastName: "",
616
+ apartment: "",
617
+ city: "",
618
+ state: "",
619
+ zipCode: "",
620
+ country: "United States",
621
+ saveInfo: false,
622
+ },
623
+ });
624
+ return (React.createElement("div", { className: "space-y-6" },
625
+ React.createElement("div", { className: "space-y-2" },
626
+ React.createElement("div", { className: "flex items-center justify-between" },
627
+ React.createElement("h2", { className: "text-2xl font-bold text-white" }, "Contact")),
628
+ React.createElement(FormField, { control: form.control, name: "email", render: ({ field }) => (React.createElement(FormItem, null,
629
+ React.createElement(FormLabel, { className: "text-white" }, "Email or mobile phone number"),
630
+ React.createElement(FormControl, null,
631
+ React.createElement(Input, Object.assign({ placeholder: "email@example.com", className: "bg-black border-gray-700 text-white" }, field))),
632
+ React.createElement(FormMessage, null))) }),
633
+ React.createElement(FormField, { control: form.control, name: "marketingConsent", render: ({ field }) => (React.createElement(FormItem, { className: "flex flex-row items-start space-x-2 space-y-0" },
634
+ React.createElement(FormControl, null,
635
+ React.createElement(Checkbox, { checked: field.value, onCheckedChange: field.onChange, className: "data-[state=checked]:bg-blue-600" })),
636
+ React.createElement(FormLabel, { className: "text-sm font-normal text-gray-400" }, "Email me with news and offers"))) }),
637
+ React.createElement("div", { className: "flex items-center justify-between" },
638
+ React.createElement("h2", { className: "text-2xl font-bold text-white" }, "Shipping customer")),
639
+ React.createElement("div", { className: "flex items-center justify-between text-sm" },
640
+ React.createElement("div", { className: "text-white" },
641
+ React.createElement("span", null, "Contact"),
642
+ React.createElement("span", { className: "ml-2 text-gray-400" }, "contactemail")),
643
+ React.createElement(Button, { variant: "link", className: "text-blue-500 p-0 h-auto", onClick: onBack }, "Change"))),
644
+ React.createElement(Form, Object.assign({}, form),
645
+ React.createElement("form", { onSubmit: form.handleSubmit(onSubmit), className: "space-y-4" },
646
+ React.createElement(FormField, { control: form.control, name: "country", render: ({ field }) => (React.createElement(FormItem, null,
647
+ React.createElement(FormLabel, { className: "text-white" }, "Country/Region"),
648
+ React.createElement(Select, { onValueChange: field.onChange, defaultValue: field.value },
649
+ React.createElement(FormControl, null,
650
+ React.createElement(SelectTrigger, { className: "bg-black border-gray-700 text-white" },
651
+ React.createElement(SelectValue, { placeholder: "Select a country" }))),
652
+ React.createElement(SelectContent, { className: "bg-gray-900 text-white border-gray-700" },
653
+ React.createElement(SelectItem, { value: "United States" }, "United States"),
654
+ React.createElement(SelectItem, { value: "Canada" }, "Canada"),
655
+ React.createElement(SelectItem, { value: "United Kingdom" }, "United Kingdom"))),
656
+ React.createElement(FormMessage, null))) }),
657
+ React.createElement("div", { className: "grid grid-cols-2 gap-4" },
658
+ React.createElement(FormField, { control: form.control, name: "firstName", render: ({ field }) => (React.createElement(FormItem, null,
659
+ React.createElement(FormLabel, { className: "text-white" }, "First name (optional)"),
660
+ React.createElement(FormControl, null,
661
+ React.createElement(Input, Object.assign({ className: "bg-black border-gray-700 text-white" }, field))),
662
+ React.createElement(FormMessage, null))) }),
663
+ React.createElement(FormField, { control: form.control, name: "lastName", render: ({ field }) => (React.createElement(FormItem, null,
664
+ React.createElement(FormLabel, { className: "text-white" }, "Last name"),
665
+ React.createElement(FormControl, null,
666
+ React.createElement(Input, Object.assign({ className: "bg-black border-gray-700 text-white" }, field))),
667
+ React.createElement(FormMessage, null))) })),
668
+ React.createElement(FormField, { control: form.control, name: "apartment", render: ({ field }) => (React.createElement(FormItem, null,
669
+ React.createElement(FormLabel, { className: "text-white" }, "Apartment, suite, etc. (optional)"),
670
+ React.createElement(FormControl, null,
671
+ React.createElement(Input, Object.assign({ className: "bg-black border-gray-700 text-white" }, field))),
672
+ React.createElement(FormMessage, null))) }),
673
+ React.createElement("div", { className: "grid grid-cols-3 gap-4" },
674
+ React.createElement(FormField, { control: form.control, name: "city", render: ({ field }) => (React.createElement(FormItem, null,
675
+ React.createElement(FormLabel, { className: "text-white" }, "City"),
676
+ React.createElement(FormControl, null,
677
+ React.createElement(Input, Object.assign({ className: "bg-black border-gray-700 text-white" }, field))),
678
+ React.createElement(FormMessage, null))) }),
679
+ React.createElement(FormField, { control: form.control, name: "state", render: ({ field }) => (React.createElement(FormItem, null,
680
+ React.createElement(FormLabel, { className: "text-white" }, "State"),
681
+ React.createElement(Select, { onValueChange: field.onChange, defaultValue: field.value },
682
+ React.createElement(FormControl, null,
683
+ React.createElement(SelectTrigger, { className: "bg-black border-gray-700 text-white" },
684
+ React.createElement(SelectValue, { placeholder: "State" }))),
685
+ React.createElement(SelectContent, { className: "bg-gray-900 text-white border-gray-700" },
686
+ React.createElement(SelectItem, { value: "Illinois" }, "Illinois"),
687
+ React.createElement(SelectItem, { value: "California" }, "California"),
688
+ React.createElement(SelectItem, { value: "New York" }, "New York"),
689
+ React.createElement(SelectItem, { value: "Texas" }, "Texas"))),
690
+ React.createElement(FormMessage, null))) }),
691
+ React.createElement(FormField, { control: form.control, name: "zipCode", render: ({ field }) => (React.createElement(FormItem, null,
692
+ React.createElement(FormLabel, { className: "text-white" }, "ZIP code"),
693
+ React.createElement(FormControl, null,
694
+ React.createElement(Input, Object.assign({ className: "bg-black border-gray-700 text-white" }, field))),
695
+ React.createElement(FormMessage, null))) })),
696
+ React.createElement(FormField, { control: form.control, name: "saveInfo", render: ({ field }) => (React.createElement(FormItem, { className: "flex flex-row items-start space-x-2 space-y-0" },
697
+ React.createElement(FormControl, null,
698
+ React.createElement(Checkbox, { checked: field.value, onCheckedChange: field.onChange, className: "data-[state=checked]:bg-blue-600" })),
699
+ React.createElement(FormLabel, { className: "text-sm font-normal text-gray-400" }, "Save this information for next time"))) }),
700
+ React.createElement("div", { className: "flex justify-between items-center pt-4" },
701
+ React.createElement(Button, { type: "button", variant: "link", className: "text-blue-500 p-0 h-auto flex items-center gap-1", onClick: onBack },
702
+ React.createElement(lucideReact.ChevronLeft, { className: "h-4 w-4" }),
703
+ "Return to information"),
704
+ React.createElement(Button, { type: "submit", className: "bg-blue-600 hover:bg-blue-700 text-white" }, "Continue to shipping"))))));
705
+ }
706
+
707
+ function PaymentForm({ initialData, onSubmit, onBack, contactEmail, shippingAddress, shippingMethod, shippingPrice, }) {
708
+ const form = reactHookForm.useForm({
709
+ resolver: s(paymentMethodSchema),
710
+ defaultValues: initialData || {
711
+ cardNumber: "",
712
+ expiryDate: "",
713
+ cvv: "",
714
+ nameOnCard: "",
715
+ },
716
+ });
717
+ return (React.createElement("div", { className: "space-y-6" },
718
+ React.createElement("div", { className: "space-y-2" },
719
+ React.createElement("div", { className: "flex items-center justify-between" },
720
+ React.createElement("h2", { className: "text-2xl font-bold text-white" }, "Payment"),
721
+ React.createElement("p", { className: "text-sm text-gray-400" }, "All transactions are secure and encrypted.")),
722
+ React.createElement("div", { className: "flex items-center justify-between text-sm" },
723
+ React.createElement("div", { className: "text-white" },
724
+ React.createElement("span", null, "Contact"),
725
+ React.createElement("span", { className: "ml-2 text-gray-400" }, contactEmail)),
726
+ React.createElement(Button, { variant: "link", className: "text-blue-500 p-0 h-auto", onClick: onBack }, "Change")),
727
+ React.createElement("div", { className: "flex items-center justify-between text-sm" },
728
+ React.createElement("div", { className: "text-white" },
729
+ React.createElement("span", null, "Ship to"),
730
+ React.createElement("span", { className: "ml-2 text-gray-400" }, shippingAddress)),
731
+ React.createElement(Button, { variant: "link", className: "text-blue-500 p-0 h-auto", onClick: onBack }, "Change")),
732
+ React.createElement("div", { className: "flex items-center justify-between text-sm" },
733
+ React.createElement("div", { className: "text-white" },
734
+ React.createElement("span", null, "Shipping method"),
735
+ React.createElement("span", { className: "ml-2 text-gray-400" },
736
+ shippingMethod,
737
+ " \u00B7 ",
738
+ shippingPrice)),
739
+ React.createElement(Button, { variant: "link", className: "text-blue-500 p-0 h-auto", onClick: onBack }, "Change"))),
740
+ React.createElement("div", { className: "space-y-4 bg-gray-900 p-4 rounded-md" },
741
+ React.createElement("div", { className: "text-white font-medium" }, "Payment method"),
742
+ React.createElement(Form, Object.assign({}, form),
743
+ React.createElement("form", { onSubmit: form.handleSubmit(onSubmit), className: "space-y-4" },
744
+ React.createElement(FormField, { control: form.control, name: "cardNumber", render: ({ field }) => (React.createElement(FormItem, null,
745
+ React.createElement(FormLabel, { className: "text-white" }, "Card number"),
746
+ React.createElement(FormControl, null,
747
+ React.createElement(Input, Object.assign({ placeholder: "1234 5678 9012 3456", className: "bg-black border-gray-700 text-white" }, field))),
748
+ React.createElement(FormMessage, null))) }),
749
+ React.createElement("div", { className: "grid grid-cols-2 gap-4" },
750
+ React.createElement(FormField, { control: form.control, name: "expiryDate", render: ({ field }) => (React.createElement(FormItem, null,
751
+ React.createElement(FormLabel, { className: "text-white" }, "Expiration date (MM/YY)"),
752
+ React.createElement(FormControl, null,
753
+ React.createElement(Input, Object.assign({ placeholder: "MM/YY", className: "bg-black border-gray-700 text-white" }, field))),
754
+ React.createElement(FormMessage, null))) }),
755
+ React.createElement(FormField, { control: form.control, name: "cvv", render: ({ field }) => (React.createElement(FormItem, null,
756
+ React.createElement(FormLabel, { className: "text-white" }, "Security code"),
757
+ React.createElement(FormControl, null,
758
+ React.createElement(Input, Object.assign({ placeholder: "CVV", className: "bg-black border-gray-700 text-white" }, field))),
759
+ React.createElement(FormMessage, null))) })),
760
+ React.createElement(FormField, { control: form.control, name: "nameOnCard", render: ({ field }) => (React.createElement(FormItem, null,
761
+ React.createElement(FormLabel, { className: "text-white" }, "Name on card"),
762
+ React.createElement(FormControl, null,
763
+ React.createElement(Input, Object.assign({ placeholder: "Name as it appears on card", className: "bg-black border-gray-700 text-white" }, field))),
764
+ React.createElement(FormMessage, null))) }),
765
+ React.createElement("div", { className: "flex justify-between items-center pt-4" },
766
+ React.createElement(Button, { type: "button", variant: "link", className: "text-blue-500 p-0 h-auto flex items-center gap-1", onClick: onBack },
767
+ React.createElement(lucideReact.ChevronLeft, { className: "h-4 w-4" }),
768
+ "Return to shipping"),
769
+ React.createElement(Button, { type: "submit", className: "bg-blue-600 hover:bg-blue-700 text-white" }, "Pay now")))))));
770
+ }
771
+
772
+ function RadioGroup(_a) {
773
+ var { className } = _a, props = __rest(_a, ["className"]);
774
+ return (React__namespace.createElement(RadioGroupPrimitive__namespace.Root, Object.assign({ "data-slot": "radio-group", className: cn("grid gap-3", className) }, props)));
775
+ }
776
+ function RadioGroupItem(_a) {
777
+ var { className } = _a, props = __rest(_a, ["className"]);
778
+ return (React__namespace.createElement(RadioGroupPrimitive__namespace.Item, Object.assign({ "data-slot": "radio-group-item", className: cn("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", className) }, props),
779
+ React__namespace.createElement(RadioGroupPrimitive__namespace.Indicator, { "data-slot": "radio-group-indicator", className: "relative flex items-center justify-center" },
780
+ React__namespace.createElement(lucideReact.CircleIcon, { className: "fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2" }))));
781
+ }
782
+
783
+ function ShippingMethodForm({ initialData, onSubmit, onBack, contactEmail, shippingAddress, }) {
784
+ const form = reactHookForm.useForm({
785
+ resolver: s(shippingMethodSchema),
786
+ defaultValues: initialData || {
787
+ method: "economy",
788
+ },
789
+ });
790
+ return (React.createElement("div", { className: "space-y-6" },
791
+ React.createElement("div", { className: "space-y-2" },
792
+ React.createElement("div", { className: "flex items-center justify-between" },
793
+ React.createElement("h2", { className: "text-2xl font-bold text-white" }, "Shipping method")),
794
+ React.createElement("div", { className: "flex items-center justify-between text-sm" },
795
+ React.createElement("div", { className: "text-white" },
796
+ React.createElement("span", null, "Contact"),
797
+ React.createElement("span", { className: "ml-2 text-gray-400" }, contactEmail)),
798
+ React.createElement(Button, { variant: "link", className: "text-blue-500 p-0 h-auto", onClick: onBack }, "Change")),
799
+ React.createElement("div", { className: "flex items-center justify-between text-sm" },
800
+ React.createElement("div", { className: "text-white" },
801
+ React.createElement("span", null, "Ship to"),
802
+ React.createElement("span", { className: "ml-2 text-gray-400" }, shippingAddress)),
803
+ React.createElement(Button, { variant: "link", className: "text-blue-500 p-0 h-auto", onClick: onBack }, "Change"))),
804
+ React.createElement(Form, Object.assign({}, form),
805
+ React.createElement("form", { onSubmit: form.handleSubmit(onSubmit), className: "space-y-4" },
806
+ React.createElement(FormField, { control: form.control, name: "method", render: ({ field }) => (React.createElement(FormItem, null,
807
+ React.createElement(FormControl, null,
808
+ React.createElement(RadioGroup, { onValueChange: field.onChange, defaultValue: field.value, className: "space-y-3" },
809
+ React.createElement(FormItem, { className: "flex items-center justify-between space-x-3 space-y-0 rounded-md border border-gray-700 p-4 cursor-pointer data-[state=checked]:border-blue-600" },
810
+ React.createElement("div", { className: "flex items-center space-x-3" },
811
+ React.createElement(FormControl, null,
812
+ React.createElement(RadioGroupItem, { value: "economy", className: "data-[state=checked]:border-blue-600 data-[state=checked]:text-blue-600" })),
813
+ React.createElement("div", { className: "space-y-1" },
814
+ React.createElement(FormLabel, { className: "text-white" }, "Economy"),
815
+ React.createElement("div", { className: "text-sm text-gray-400" }, "5 to 8 business days"))),
816
+ React.createElement("div", { className: "text-white font-medium" }, "$4.90")),
817
+ React.createElement(FormItem, { className: "flex items-center justify-between space-x-3 space-y-0 rounded-md border border-gray-700 p-4 cursor-pointer data-[state=checked]:border-blue-600" },
818
+ React.createElement("div", { className: "flex items-center space-x-3" },
819
+ React.createElement(FormControl, null,
820
+ React.createElement(RadioGroupItem, { value: "standard", className: "data-[state=checked]:border-blue-600 data-[state=checked]:text-blue-600" })),
821
+ React.createElement("div", { className: "space-y-1" },
822
+ React.createElement(FormLabel, { className: "text-white" }, "Standard"),
823
+ React.createElement("div", { className: "text-sm text-gray-400" }, "3 to 4 business days"))),
824
+ React.createElement("div", { className: "text-white font-medium" }, "$6.90")))),
825
+ React.createElement(FormMessage, null))) }),
826
+ React.createElement("div", { className: "flex justify-between items-center pt-4" },
827
+ React.createElement(Button, { type: "button", variant: "link", className: "text-blue-500 p-0 h-auto flex items-center gap-1", onClick: onBack },
828
+ React.createElement(lucideReact.ChevronLeft, { className: "h-4 w-4" }),
829
+ "Return to information"),
830
+ React.createElement(Button, { type: "submit", className: "bg-blue-600 hover:bg-blue-700 text-white" }, "Continue to payment"))))));
831
+ }
832
+
833
+ function useLocalStorage(key, initialValue) {
834
+ // Create state to store our value
835
+ const [storedValue, setStoredValue] = React.useState(initialValue);
836
+ // Initialize state on client-side only
837
+ React.useEffect(() => {
838
+ try {
839
+ // Get from local storage by key
840
+ const item = window.localStorage.getItem(key);
841
+ // Parse stored json or if none return initialValue
842
+ setStoredValue(item ? JSON.parse(item) : initialValue);
843
+ }
844
+ catch (error) {
845
+ // If error, just use the initialValue
846
+ console.error(error);
847
+ setStoredValue(initialValue);
848
+ }
849
+ }, [initialValue, key]);
850
+ // Return a wrapped version of useState's setter function that
851
+ // persists the new value to localStorage.
852
+ const setValue = (value) => {
853
+ try {
854
+ // Allow value to be a function so we have the same API as useState
855
+ const valueToStore = value instanceof Function ? value(storedValue) : value;
856
+ // Save state
857
+ setStoredValue(valueToStore);
858
+ // Save to local storage
859
+ if (typeof window !== "undefined") {
860
+ window.localStorage.setItem(key, JSON.stringify(valueToStore));
861
+ }
862
+ }
863
+ catch (error) {
864
+ // A more advanced implementation would handle the error case
865
+ console.error(error);
866
+ }
867
+ };
868
+ return [storedValue, setValue];
869
+ }
870
+
871
+ function CheckoutForm$2({ checkoutId, onComplete, }) {
872
+ const [step, setStep] = React.useState("contact");
873
+ const [formData, setFormData] = useLocalStorage(`checkout-${checkoutId}`, {});
874
+ // Helper function to format address for display
875
+ const formatAddress = (address) => {
876
+ return `${address.address}, ${address.city} ${address.state} ${address.zipCode}, ${address.country}`;
877
+ };
878
+ // Format shipping method for display
879
+ const formatShippingMethod = (method) => {
880
+ switch (method) {
881
+ case "economy":
882
+ return { name: "Economy", price: "$4.90" };
883
+ case "standard":
884
+ return { name: "Standard", price: "$6.90" };
885
+ default:
886
+ return { name: "Economy", price: "$4.90" };
887
+ }
888
+ };
889
+ // Handle address form submission
890
+ const handleCustomerSubmit = (data) => {
891
+ setFormData(Object.assign(Object.assign({}, formData), { customer: data }));
892
+ setStep("shipping");
893
+ };
894
+ // Handle shipping method form submission
895
+ const handleShippingSubmit = (data) => {
896
+ setFormData(Object.assign(Object.assign({}, formData), { shipping: data }));
897
+ setStep("payment");
898
+ };
899
+ // Handle payment form submission
900
+ const handlePaymentSubmit = (data) => {
901
+ const completeFormData = Object.assign(Object.assign({}, formData), { payment: data });
902
+ setFormData(completeFormData);
903
+ if (onComplete) {
904
+ onComplete(completeFormData);
905
+ }
906
+ };
907
+ // Navigate back to previous step
908
+ const handleBack = () => {
909
+ if (step === "customer")
910
+ setStep("customer");
911
+ if (step === "shipping")
912
+ setStep("customer");
913
+ if (step === "payment")
914
+ setStep("shipping");
915
+ };
916
+ return (React.createElement("div", { className: "space-y-6" },
917
+ step === "customer" && (React.createElement(CustomerForm, { initialData: formData.customer, onSubmit: handleCustomerSubmit, onBack: handleBack })),
918
+ step === "shipping" && formData.customer && (React.createElement(ShippingMethodForm, { initialData: formData.shipping, onSubmit: handleShippingSubmit, onBack: handleBack, contactEmail: formData.customer.email, shippingAddress: formatAddress(formData.customer) })),
919
+ step === "payment" &&
920
+ formData.customer &&
921
+ formData.customer &&
922
+ formData.shipping && (React.createElement(PaymentForm, { initialData: formData.payment, onSubmit: handlePaymentSubmit, onBack: handleBack, contactEmail: formData.customer.email, shippingAddress: formatAddress(formData.customer), shippingMethod: formatShippingMethod(formData.shipping.method).name, shippingPrice: formatShippingMethod(formData.shipping.method).price }))));
923
+ }
924
+
276
925
  function CheckoutSummary({ lineItems, shipping, tax, currency, }) {
277
926
  const subtotal = lineItems.reduce((acc, item) => {
278
927
  var _a, _b;
@@ -287,8 +936,7 @@ function CheckoutSummary({ lineItems, shipping, tax, currency, }) {
287
936
  var _a, _b, _c, _d, _e;
288
937
  return (React.createElement("div", { key: index, className: "flex items-center mb-6" },
289
938
  React.createElement("div", { className: "relative" },
290
- React.createElement("div", { className: "w-16 h-16 bg-zinc-900 rounded-lg overflow-hidden relative" }, ((_a = item.product) === null || _a === void 0 ? void 0 : _a.images[0]) ? (React.createElement("img", { src: item.product.images[0] || "/placeholder.svg", alt: ((_b = item.product) === null || _b === void 0 ? void 0 : _b.title) || "Product image", className: "object-cover" })) : (React.createElement("div", { className: "w-full h-full flex items-center justify-center bg-zinc-800" },
291
- React.createElement("span", { className: "text-zinc-500" }, "No image")))),
939
+ React.createElement("div", { className: "w-16 h-16 bg-zinc-900 rounded-lg overflow-hidden relative" }, ((_a = item.product) === null || _a === void 0 ? void 0 : _a.images[0]) && (React.createElement("img", { src: item.product.images[0] || "/placeholder.svg", alt: ((_b = item.product) === null || _b === void 0 ? void 0 : _b.title) || "Product image", className: "object-cover" }))),
292
940
  React.createElement("div", { className: "absolute -top-2 -right-2 w-6 h-6 bg-zinc-700 rounded-full flex items-center justify-center text-sm" }, item.quantity)),
293
941
  React.createElement("div", { className: "ml-4 flex-1" },
294
942
  React.createElement("h3", { className: "text-lg font-medium" }, ((_c = item.product) === null || _c === void 0 ? void 0 : _c.title) || "Product"),
@@ -336,16 +984,16 @@ function CheckoutEmbed({ checkoutId }) {
336
984
  }
337
985
  fetchCheckout();
338
986
  }, [checkoutId]);
339
- if (loading) {
340
- return React.createElement("div", null, "Loading...");
341
- }
342
- if (!checkout) {
987
+ const handleComplete = (formData) => {
988
+ console.log("Checkout complete:", formData);
989
+ // Here you would typically send the completed form data to your API
990
+ };
991
+ if (!checkout && !loading) {
343
992
  return React.createElement("div", null, "Checkout not found");
344
993
  }
345
994
  return (React.createElement("div", { className: "grid md:grid-cols-2 gap-4" },
346
- React.createElement("div", null, "forms here"),
347
- React.createElement("div", null,
348
- React.createElement(CheckoutSummary, { currency: checkout.currency, lineItems: checkout.lineItems, shipping: checkout === null || checkout === void 0 ? void 0 : checkout.shipping, tax: checkout === null || checkout === void 0 ? void 0 : checkout.tax }))));
995
+ React.createElement("div", null, loading ? (React.createElement("div", { className: "text-white" }, "Loading...")) : (React.createElement(CheckoutForm$2, { checkoutId: checkoutId, onComplete: handleComplete }))),
996
+ React.createElement("div", null, loading ? (React.createElement("div", null, "Loading...")) : (React.createElement(CheckoutSummary, { currency: checkout.currency, lineItems: checkout.lineItems, shipping: checkout === null || checkout === void 0 ? void 0 : checkout.shipping, tax: checkout === null || checkout === void 0 ? void 0 : checkout.tax })))));
349
997
  }
350
998
  var index$1 = React.memo(CheckoutEmbed);
351
999
 
@@ -426,7 +1074,7 @@ function styleInject(css, ref) {
426
1074
  }
427
1075
  }
428
1076
 
429
- var css_248z = "*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.absolute{position:absolute}.relative{position:relative}.-right-2{right:-.5rem}.-top-2{top:-.5rem}.mb-6{margin-bottom:1.5rem}.ml-4{margin-left:1rem}.mr-2{margin-right:.5rem}.mt-2{margin-top:.5rem}.flex{display:flex}.grid{display:grid}.h-16{height:4rem}.h-6{height:1.5rem}.h-full{height:100%}.w-16{width:4rem}.w-6{width:1.5rem}.w-full{width:100%}.flex-1{flex:1 1 0%}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-4{gap:1rem}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-t{border-top-width:1px}.border-zinc-800{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity,1))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-zinc-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity,1))}.bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.object-cover{-o-object-fit:cover;object-fit:cover}.p-6{padding:1.5rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-4{padding-bottom:1rem}.pt-4,.py-4{padding-top:1rem}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media (min-width:768px){.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}";
1077
+ var css_248z = "/*! tailwindcss v4.0.12 | MIT License | https://tailwindcss.com */@layer theme, base, components, utilities;@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-red-500:oklch(0.637 0.237 25.331);--color-blue-500:oklch(0.623 0.214 259.815);--color-blue-600:oklch(0.546 0.245 262.881);--color-blue-700:oklch(0.488 0.243 264.376);--color-gray-400:oklch(0.707 0.022 261.325);--color-gray-700:oklch(0.373 0.034 259.733);--color-gray-900:oklch(0.21 0.034 264.665);--color-zinc-400:oklch(0.705 0.015 286.067);--color-zinc-700:oklch(0.37 0.013 285.805);--color-zinc-800:oklch(0.274 0.006 286.033);--color-zinc-900:oklch(0.21 0.006 285.885);--color-black:#000;--color-white:#fff;--spacing:0.25rem;--text-sm:0.875rem;--text-sm--line-height:1.42857;--text-base:1rem;--text-base--line-height:1.5;--text-lg:1.125rem;--text-lg--line-height:1.55556;--text-2xl:1.5rem;--text-2xl--line-height:1.33333;--font-weight-normal:400;--font-weight-medium:500;--font-weight-bold:700;--default-transition-duration:150ms;--default-transition-timing-function:cubic-bezier(0.4,0,0.2,1);--default-font-family:var(--font-sans);--default-font-feature-settings:var(--font-sans--font-feature-settings);--default-font-variation-settings:var(\n --font-sans--font-variation-settings\n );--default-mono-font-family:var(--font-mono);--default-mono-font-feature-settings:var(\n --font-mono--font-feature-settings\n );--default-mono-font-variation-settings:var(\n --font-mono--font-variation-settings\n )}}@layer base{*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:var(--default-font-feature-settings,normal);-webkit-tap-highlight-color:transparent;font-family:var( --default-font-family,ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\" );font-variation-settings:var( --default-font-variation-settings,normal );line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:var( --default-mono-font-feature-settings,normal );font-family:var( --default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace );font-size:1em;font-variation-settings:var( --default-mono-font-variation-settings,normal )}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}::file-selector-button,button,input,optgroup,select,textarea{font-feature-settings:inherit;background-color:transparent;border-radius:0;color:inherit;font:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{color:color-mix(in oklab,currentColor 50%,transparent);opacity:1}::placeholder{color:color-mix(in oklab,currentColor 50%,transparent);opacity:1}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}::file-selector-button,button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-none{pointer-events:none}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.-top-2{top:calc(var(--spacing)*-2)}.top-1\\/2{top:50%}.-right-2{right:calc(var(--spacing)*-2)}.right-2{right:calc(var(--spacing)*2)}.left-1\\/2{left:50%}.z-50{z-index:50}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.my-1{margin-block:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-4{margin-left:calc(var(--spacing)*4)}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1/1}.size-2{height:calc(var(--spacing)*2);width:calc(var(--spacing)*2)}.size-3\\.5{height:calc(var(--spacing)*3.5);width:calc(var(--spacing)*3.5)}.size-4{height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.size-9{height:calc(var(--spacing)*9);width:calc(var(--spacing)*9)}.h-4{height:calc(var(--spacing)*4)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-16{height:calc(var(--spacing)*16)}.h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-px{height:1px}.max-h-96{max-height:calc(var(--spacing)*96)}.w-4{width:calc(var(--spacing)*4)}.w-6{width:calc(var(--spacing)*6)}.w-16{width:calc(var(--spacing)*16)}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\\[8rem\\]{min-width:8rem}.min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\\/2{--tw-translate-x:-50%}.-translate-x-1\\/2,.-translate-y-1\\/2{translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:-50%}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.scroll-my-1{scroll-margin-block:calc(var(--spacing)*1)}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.space-y-0{:where(&>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*0*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*0*var(--tw-space-y-reverse))}}.space-y-1{:where(&>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*1*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*1*var(--tw-space-y-reverse))}}.space-y-2{:where(&>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*2*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*2*var(--tw-space-y-reverse))}}.space-y-3{:where(&>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*3*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*3*var(--tw-space-y-reverse))}}.space-y-4{:where(&>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*4*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*4*var(--tw-space-y-reverse))}}.space-y-6{:where(&>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*6*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*6*var(--tw-space-y-reverse))}}.space-x-2{:where(&>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*2*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*2*var(--tw-space-x-reverse))}}.space-x-3{:where(&>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*3*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*3*var(--tw-space-x-reverse))}}.overflow-hidden{overflow:hidden}.rounded-\\[4px\\]{border-radius:4px}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-gray-700{border-color:var(--color-gray-700)}.border-input{border-color:var(--input)}.border-zinc-800{border-color:var(--color-zinc-800)}.bg-background{background-color:var(--background)}.bg-black{background-color:var(--color-black)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-border{background-color:var(--border)}.bg-destructive{background-color:var(--destructive)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:transparent}.bg-zinc-700{background-color:var(--color-zinc-700)}.bg-zinc-900{background-color:var(--color-zinc-900)}.fill-primary{fill:var(--primary)}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-4{padding-top:calc(var(--spacing)*4)}.pr-8{padding-right:calc(var(--spacing)*8)}.pl-2{padding-left:calc(var(--spacing)*2)}.text-right{text-align:right}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.whitespace-nowrap{white-space:nowrap}.text-blue-500{color:var(--color-blue-500)}.text-current{color:currentColor}.text-destructive-foreground{color:var(--destructive-foreground)}.text-gray-400{color:var(--color-gray-400)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-500{color:var(--color-red-500)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.text-zinc-400{color:var(--color-zinc-400)}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:50%}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,rgba(0,0,0,.1)),0 2px 4px -2px var(--tw-shadow-color,rgba(0,0,0,.1))}.shadow-md,.shadow-xs{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,rgba(0,0,0,.05))}.outline-hidden{--tw-outline-style:none;outline-style:none;@media (forced-colors:active){outline:2px solid transparent;outline-offset:2px}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-\\[color\\,box-shadow\\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-shadow{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-none{transition-property:none}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.group-data-\\[disabled\\=true\\]\\:pointer-events-none{&:is(:where(.group)[data-disabled=true] *){pointer-events:none}}.group-data-\\[disabled\\=true\\]\\:opacity-50{&:is(:where(.group)[data-disabled=true] *){opacity:50%}}.peer-disabled\\:cursor-not-allowed{&:is(:where(.peer):disabled~*){cursor:not-allowed}}.peer-disabled\\:opacity-50{&:is(:where(.peer):disabled~*){opacity:50%}}.selection\\:bg-primary{& ::-moz-selection{background-color:var(--primary)}& ::selection{background-color:var(--primary)}&::-moz-selection{background-color:var(--primary)}&::selection{background-color:var(--primary)}}.selection\\:text-primary-foreground{& ::-moz-selection{color:var(--primary-foreground)}& ::selection{color:var(--primary-foreground)}&::-moz-selection{color:var(--primary-foreground)}&::selection{color:var(--primary-foreground)}}.file\\:inline-flex{&::file-selector-button{display:inline-flex}}.file\\:h-7{&::file-selector-button{height:calc(var(--spacing)*7)}}.file\\:border-0{&::file-selector-button{border-style:var(--tw-border-style);border-width:0}}.file\\:bg-transparent{&::file-selector-button{background-color:transparent}}.file\\:text-sm{&::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.file\\:font-medium{&::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}}.file\\:text-foreground{&::file-selector-button{color:var(--foreground)}}.placeholder\\:text-muted-foreground{&::-moz-placeholder{color:var(--muted-foreground)}&::placeholder{color:var(--muted-foreground)}}.hover\\:bg-accent{&:hover{@media (hover:hover){background-color:var(--accent)}}}.hover\\:bg-blue-700{&:hover{@media (hover:hover){background-color:var(--color-blue-700)}}}.hover\\:bg-destructive\\/90{&:hover{@media (hover:hover){background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}}.hover\\:bg-primary\\/90{&:hover{@media (hover:hover){background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}}.hover\\:bg-secondary\\/80{&:hover{@media (hover:hover){background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}}.hover\\:text-accent-foreground{&:hover{@media (hover:hover){color:var(--accent-foreground)}}}.hover\\:underline{&:hover{@media (hover:hover){text-decoration-line:underline}}}.focus\\:bg-accent{&:focus{background-color:var(--accent)}}.focus\\:text-accent-foreground{&:focus{color:var(--accent-foreground)}}.focus-visible\\:border-ring{&:focus-visible{border-color:var(--ring)}}.focus-visible\\:ring-\\[3px\\]{&:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentColor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus-visible\\:ring-destructive\\/20{&:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.focus-visible\\:ring-ring\\/50{&:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring) 50%,transparent)}}.disabled\\:pointer-events-none{&:disabled{pointer-events:none}}.disabled\\:cursor-not-allowed{&:disabled{cursor:not-allowed}}.disabled\\:opacity-50{&:disabled{opacity:50%}}.has-\\[\\>svg\\]\\:px-2\\.5{&:has(>svg){padding-inline:calc(var(--spacing)*2.5)}}.has-\\[\\>svg\\]\\:px-3{&:has(>svg){padding-inline:calc(var(--spacing)*3)}}.has-\\[\\>svg\\]\\:px-4{&:has(>svg){padding-inline:calc(var(--spacing)*4)}}.aria-invalid\\:border-destructive{&[aria-invalid=true]{border-color:var(--destructive)}}.aria-invalid\\:ring-destructive\\/20{&[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.data-\\[disabled\\]\\:pointer-events-none{&[data-disabled]{pointer-events:none}}.data-\\[disabled\\]\\:opacity-50{&[data-disabled]{opacity:50%}}.data-\\[error\\=true\\]\\:text-destructive-foreground{&[data-error=true]{color:var(--destructive-foreground)}}.data-\\[placeholder\\]\\:text-muted-foreground{&[data-placeholder]{color:var(--muted-foreground)}}.data-\\[side\\=bottom\\]\\:translate-y-1{&[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x) var(--tw-translate-y)}}.data-\\[side\\=bottom\\]\\:slide-in-from-top-2{&[data-side=bottom]{--tw-enter-translate-y:-0.5rem}}.data-\\[side\\=left\\]\\:-translate-x-1{&[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x) var(--tw-translate-y)}}.data-\\[side\\=left\\]\\:slide-in-from-right-2{&[data-side=left]{--tw-enter-translate-x:0.5rem}}.data-\\[side\\=right\\]\\:translate-x-1{&[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x) var(--tw-translate-y)}}.data-\\[side\\=right\\]\\:slide-in-from-left-2{&[data-side=right]{--tw-enter-translate-x:-0.5rem}}.data-\\[side\\=top\\]\\:-translate-y-1{&[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x) var(--tw-translate-y)}}.data-\\[side\\=top\\]\\:slide-in-from-bottom-2{&[data-side=top]{--tw-enter-translate-y:0.5rem}}.\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1{:is(&>*){&[data-slot=select-value]{-webkit-box-orient:vertical;-webkit-line-clamp:1;display:-webkit-box;overflow:hidden}}}.\\*\\:data-\\[slot\\=select-value\\]\\:flex{:is(&>*){&[data-slot=select-value]{display:flex}}}.\\*\\:data-\\[slot\\=select-value\\]\\:items-center{:is(&>*){&[data-slot=select-value]{align-items:center}}}.\\*\\:data-\\[slot\\=select-value\\]\\:gap-2{:is(&>*){&[data-slot=select-value]{gap:calc(var(--spacing)*2)}}}.data-\\[state\\=checked\\]\\:border-blue-600{&[data-state=checked]{border-color:var(--color-blue-600)}}.data-\\[state\\=checked\\]\\:border-primary{&[data-state=checked]{border-color:var(--primary)}}.data-\\[state\\=checked\\]\\:bg-blue-600{&[data-state=checked]{background-color:var(--color-blue-600)}}.data-\\[state\\=checked\\]\\:bg-primary{&[data-state=checked]{background-color:var(--primary)}}.data-\\[state\\=checked\\]\\:text-blue-600{&[data-state=checked]{color:var(--color-blue-600)}}.data-\\[state\\=checked\\]\\:text-primary-foreground{&[data-state=checked]{color:var(--primary-foreground)}}.data-\\[state\\=closed\\]\\:animate-out{&[data-state=closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-duration:.15s;animation-name:exit}}.data-\\[state\\=closed\\]\\:fade-out-0{&[data-state=closed]{--tw-exit-opacity:0}}.data-\\[state\\=closed\\]\\:zoom-out-95{&[data-state=closed]{--tw-exit-scale:.95}}.data-\\[state\\=open\\]\\:animate-in{&[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-duration:.15s;animation-name:enter}}.data-\\[state\\=open\\]\\:fade-in-0{&[data-state=open]{--tw-enter-opacity:0}}.data-\\[state\\=open\\]\\:zoom-in-95{&[data-state=open]{--tw-enter-scale:.95}}.dark\\:focus-visible\\:ring-destructive\\/40,.md\\:grid-cols-2,.md\\:text-sm{&:is(.dark *){&:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}}.dark\\:aria-invalid\\:ring-destructive\\/40{&:is(.dark *){&[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}}.\\[\\&_svg\\]\\:pointer-events-none{& svg{pointer-events:none}}.\\[\\&_svg\\]\\:shrink-0{& svg{flex-shrink:0}}.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4{& svg:not([class*=size-]){height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}}.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'text-\\'\\]\\)\\]\\:text-muted-foreground{& svg:not([class*=text-]){color:var(--muted-foreground)}}.\\*\\:\\[span\\]\\:last\\:flex{:is(&>*){&:is(span){&:last-child{display:flex}}}}.\\*\\:\\[span\\]\\:last\\:items-center{:is(&>*){&:is(span){&:last-child{align-items:center}}}}.\\*\\:\\[span\\]\\:last\\:gap-2{:is(&>*){&:is(span){&:last-child{gap:calc(var(--spacing)*2)}}}}}:root{--background:oklch(1 0 0);--foreground:oklch(0.145 0 0);--card:oklch(1 0 0);--card-foreground:oklch(0.145 0 0);--popover:oklch(1 0 0);--popover-foreground:oklch(0.145 0 0);--primary:oklch(0.205 0 0);--primary-foreground:oklch(0.985 0 0);--secondary:oklch(0.97 0 0);--secondary-foreground:oklch(0.205 0 0);--muted:oklch(0.97 0 0);--muted-foreground:oklch(0.556 0 0);--accent:oklch(0.97 0 0);--accent-foreground:oklch(0.205 0 0);--destructive:oklch(0.577 0.245 27.325);--destructive-foreground:oklch(0.577 0.245 27.325);--border:oklch(0.922 0 0);--input:oklch(0.922 0 0);--ring:oklch(0.708 0 0);--chart-1:oklch(0.646 0.222 41.116);--chart-2:oklch(0.6 0.118 184.704);--chart-3:oklch(0.398 0.07 227.392);--chart-4:oklch(0.828 0.189 84.429);--chart-5:oklch(0.769 0.188 70.08);--radius:0.625rem;--sidebar:oklch(0.985 0 0);--sidebar-foreground:oklch(0.145 0 0);--sidebar-primary:oklch(0.205 0 0);--sidebar-primary-foreground:oklch(0.985 0 0);--sidebar-accent:oklch(0.97 0 0);--sidebar-accent-foreground:oklch(0.205 0 0);--sidebar-border:oklch(0.922 0 0);--sidebar-ring:oklch(0.708 0 0)}.dark{--background:oklch(0.145 0 0);--foreground:oklch(0.985 0 0);--card:oklch(0.145 0 0);--card-foreground:oklch(0.985 0 0);--popover:oklch(0.145 0 0);--popover-foreground:oklch(0.985 0 0);--primary:oklch(0.985 0 0);--primary-foreground:oklch(0.205 0 0);--secondary:oklch(0.269 0 0);--secondary-foreground:oklch(0.985 0 0);--muted:oklch(0.269 0 0);--muted-foreground:oklch(0.708 0 0);--accent:oklch(0.269 0 0);--accent-foreground:oklch(0.985 0 0);--destructive:oklch(0.396 0.141 25.723);--destructive-foreground:oklch(0.637 0.237 25.331);--border:oklch(0.269 0 0);--input:oklch(0.269 0 0);--ring:oklch(0.439 0 0);--chart-1:oklch(0.488 0.243 264.376);--chart-2:oklch(0.696 0.17 162.48);--chart-3:oklch(0.769 0.188 70.08);--chart-4:oklch(0.627 0.265 303.9);--chart-5:oklch(0.645 0.246 16.439);--sidebar:oklch(0.205 0 0);--sidebar-foreground:oklch(0.985 0 0);--sidebar-primary:oklch(0.488 0.243 264.376);--sidebar-primary-foreground:oklch(0.985 0 0);--sidebar-accent:oklch(0.269 0 0);--sidebar-accent-foreground:oklch(0.985 0 0);--sidebar-border:oklch(0.269 0 0);--sidebar-ring:oklch(0.439 0 0)}@layer base{*{border-color:var(--border);outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}body{background-color:var(--background);color:var(--foreground)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}@property --tw-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-z{syntax:\"*\";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:\"*\";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:\"*\";inherits:false;initial-value:0}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}";
430
1078
  styleInject(css_248z);
431
1079
 
432
1080
  exports.CheckoutEmbed = index$1;