@betterstore/react 0.3.69 → 0.3.70
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/CHANGELOG.md +6 -0
- package/dist/components/checkout-embed/checkout-schema.d.ts +6 -6
- package/dist/index.cjs.js +551 -547
- package/dist/index.mjs +552 -548
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -4,8 +4,9 @@ import LanguageDetector from 'i18next-browser-languagedetector';
|
|
|
4
4
|
import { initReactI18next, useTranslation } from 'react-i18next';
|
|
5
5
|
import { createStoreHelpers, createStoreClient } from '@betterstore/sdk';
|
|
6
6
|
import * as React from 'react';
|
|
7
|
-
import React__default, {
|
|
8
|
-
import ReactDOM from 'react-dom';
|
|
7
|
+
import React__default, { createContext, useRef, useLayoutEffect, useEffect, useId, useContext, useInsertionEffect, useMemo, useCallback, Children, isValidElement, useState, forwardRef, Fragment as Fragment$1, createElement, Component, memo as memo$1 } from 'react';
|
|
8
|
+
import ReactDOM from 'react-dom/client';
|
|
9
|
+
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
9
10
|
import { Toaster as Toaster$1, toast } from 'sonner';
|
|
10
11
|
import { z as z$1 } from 'zod';
|
|
11
12
|
import { Slot } from '@radix-ui/react-slot';
|
|
@@ -22,7 +23,7 @@ import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
|
22
23
|
import { countries } from 'country-data-list';
|
|
23
24
|
import { useStripe, useElements, PaymentElement as PaymentElement$2, Elements } from '@stripe/react-stripe-js';
|
|
24
25
|
import { loadStripe } from '@stripe/stripe-js';
|
|
25
|
-
import
|
|
26
|
+
import ReactDOM$1 from 'react-dom';
|
|
26
27
|
|
|
27
28
|
function createJSONStorage(getStorage, options) {
|
|
28
29
|
let storage;
|
|
@@ -493,565 +494,238 @@ const createI18nInstance = (locale) => __awaiter(void 0, void 0, void 0, functio
|
|
|
493
494
|
return i18n;
|
|
494
495
|
});
|
|
495
496
|
|
|
496
|
-
var css_248z = "/*! tailwindcss v4.1.8 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: var(--font-sans), Helvetica, Arial, apple-system, sans-serif;\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-lg: 32rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --tracking-tight: -0.025em;\n --tracking-widest: 0.1em;\n --radius-xs: 0.125rem;\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans), Helvetica, Arial, apple-system, sans-serif;\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n 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\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::-moz-placeholder {\n opacity: 1;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::-moz-placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n -webkit-appearance: button;\n -moz-appearance: button;\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-none {\n pointer-events: none;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .sticky {\n position: sticky;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .-top-2 {\n top: calc(var(--spacing) * -2);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-0\\.5 {\n top: calc(var(--spacing) * 0.5);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .top-\\[50\\%\\] {\n top: 50%;\n }\n .-right-2 {\n right: calc(var(--spacing) * -2);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .left-2 {\n left: calc(var(--spacing) * 2);\n }\n .left-\\[50\\%\\] {\n left: 50%;\n }\n .z-10 {\n z-index: 10;\n }\n .z-50 {\n z-index: 50;\n }\n .order-3 {\n order: 3;\n }\n .order-4 {\n order: 4;\n }\n .order-5 {\n order: 5;\n }\n .order-6 {\n order: 6;\n }\n .order-7 {\n order: 7;\n }\n .order-first {\n order: -9999;\n }\n .col-span-2 {\n grid-column: span 2 / span 2;\n }\n .-m-0\\.5 {\n margin: calc(var(--spacing) * -0.5);\n }\n .-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n .my-2 {\n margin-block: calc(var(--spacing) * 2);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-8 {\n margin-top: calc(var(--spacing) * 8);\n }\n .-mb-0\\.5 {\n margin-bottom: calc(var(--spacing) * -0.5);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n .ml-auto {\n margin-left: auto;\n }\n .line-clamp-1 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline-flex {\n display: inline-flex;\n }\n .aspect-square {\n aspect-ratio: 1 / 1;\n }\n .size-2 {\n width: calc(var(--spacing) * 2);\n height: calc(var(--spacing) * 2);\n }\n .size-3 {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n .size-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n .size-4 {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n .size-5 {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n }\n .size-9 {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n .size-16 {\n width: calc(var(--spacing) * 16);\n height: calc(var(--spacing) * 16);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-3\\.5 {\n height: calc(var(--spacing) * 3.5);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-\\[18px\\] {\n height: 18px;\n }\n .h-\\[20px\\] {\n height: 20px;\n }\n .h-\\[306\\.08px\\] {\n height: 306.08px;\n }\n .h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n }\n .h-auto {\n height: auto;\n }\n .h-auto\\! {\n height: auto !important;\n }\n .h-full {\n height: 100%;\n }\n .h-px {\n height: 1px;\n }\n .max-h-\\(--radix-dropdown-menu-content-available-height\\) {\n max-height: var(--radix-dropdown-menu-content-available-height);\n }\n .max-h-96 {\n max-height: calc(var(--spacing) * 96);\n }\n .max-h-\\[200px\\] {\n max-height: 200px;\n }\n .max-h-\\[300px\\] {\n max-height: 300px;\n }\n .min-h-full {\n min-height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .w-0 {\n width: calc(var(--spacing) * 0);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-28 {\n width: calc(var(--spacing) * 28);\n }\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n .w-40 {\n width: calc(var(--spacing) * 40);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-fit {\n width: -moz-fit-content;\n width: fit-content;\n }\n .w-full {\n width: 100%;\n }\n .max-w-\\[1200px\\] {\n max-width: 1200px;\n }\n .max-w-\\[calc\\(100\\%-2rem\\)\\] {\n max-width: calc(100% - 2rem);\n }\n .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n .min-w-\\[--radix-popper-anchor-width\\] {\n min-width: --radix-popper-anchor-width;\n }\n .min-w-\\[8rem\\] {\n min-width: 8rem;\n }\n .min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n }\n .flex-1 {\n flex: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .flex-grow {\n flex-grow: 1;\n }\n .origin-\\(--radix-dropdown-menu-content-transform-origin\\) {\n transform-origin: var(--radix-dropdown-menu-content-transform-origin);\n }\n .origin-\\(--radix-popover-content-transform-origin\\) {\n transform-origin: var(--radix-popover-content-transform-origin);\n }\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .rotate-180 {\n rotate: 180deg;\n }\n .transform-none\\! {\n transform: none !important;\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-default {\n cursor: default;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .resize {\n resize: both;\n }\n .scroll-my-1 {\n scroll-margin-block: calc(var(--spacing) * 1);\n }\n .scroll-py-1 {\n scroll-padding-block: calc(var(--spacing) * 1);\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-col-reverse {\n flex-direction: column-reverse;\n }\n .items-center {\n align-items: center;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .gap-0 {\n gap: calc(var(--spacing) * 0);\n }\n .gap-0\\.5 {\n gap: calc(var(--spacing) * 0.5);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .gap-5 {\n gap: calc(var(--spacing) * 5);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .gap-\\[10px\\] {\n gap: 10px;\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded-\\[4px\\] {\n border-radius: 4px;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius);\n }\n .rounded-md {\n border-radius: calc(var(--radius) - 2px);\n }\n .rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n }\n .rounded-xs {\n border-radius: var(--radius-xs);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-input {\n border-color: var(--input);\n }\n .border-primary {\n border-color: var(--primary);\n }\n .bg-accent {\n background-color: var(--accent);\n }\n .bg-background {\n background-color: var(--background);\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-border {\n background-color: var(--border);\n }\n .bg-destructive {\n background-color: var(--destructive);\n }\n .bg-muted {\n background-color: var(--muted);\n }\n .bg-popover {\n background-color: var(--popover);\n }\n .bg-primary {\n background-color: var(--primary);\n }\n .bg-secondary {\n background-color: var(--secondary);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .fill-current {\n fill: currentcolor;\n }\n .fill-primary {\n fill: var(--primary);\n }\n .object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n }\n .p-0 {\n padding: calc(var(--spacing) * 0);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-6 {\n padding-block: calc(var(--spacing) * 6);\n }\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-8 {\n padding-top: calc(var(--spacing) * 8);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-8 {\n padding-right: calc(var(--spacing) * 8);\n }\n .pb-1 {\n padding-bottom: calc(var(--spacing) * 1);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .text-center {\n text-align: center;\n }\n .text-right {\n text-align: right;\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .text-ellipsis {\n text-overflow: ellipsis;\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .text-background {\n color: var(--background);\n }\n .text-current {\n color: currentcolor;\n }\n .text-destructive {\n color: var(--destructive);\n }\n .text-destructive-foreground {\n color: var(--destructive-foreground);\n }\n .text-foreground {\n color: var(--foreground);\n }\n .text-muted-foreground {\n color: var(--muted-foreground);\n }\n .text-popover-foreground {\n color: var(--popover-foreground);\n }\n .text-primary {\n color: var(--primary);\n }\n .text-primary-foreground {\n color: var(--primary-foreground);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-secondary-foreground {\n color: var(--secondary-foreground);\n }\n .text-white {\n color: var(--color-white);\n }\n .line-through {\n text-decoration-line: line-through;\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-70 {\n opacity: 70%;\n }\n .opacity-100 {\n opacity: 100%;\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-offset-background {\n --tw-ring-offset-color: var(--background);\n }\n .outline-hidden {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[color\\,box-shadow\\] {\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-none {\n transition-property: none;\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n .duration-200 {\n animation-duration: 200ms;\n }\n .group-data-\\[disabled\\=true\\]\\:pointer-events-none {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n pointer-events: none;\n }\n }\n .group-data-\\[disabled\\=true\\]\\:opacity-50 {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .peer-disabled\\:cursor-not-allowed {\n &:is(:where(.peer):disabled ~ *) {\n cursor: not-allowed;\n }\n }\n .peer-disabled\\:opacity-50 {\n &:is(:where(.peer):disabled ~ *) {\n opacity: 50%;\n }\n }\n .selection\\:bg-primary {\n & *::-moz-selection {\n background-color: var(--primary);\n }\n & *::selection {\n background-color: var(--primary);\n }\n &::-moz-selection {\n background-color: var(--primary);\n }\n &::selection {\n background-color: var(--primary);\n }\n }\n .selection\\:text-primary-foreground {\n & *::-moz-selection {\n color: var(--primary-foreground);\n }\n & *::selection {\n color: var(--primary-foreground);\n }\n &::-moz-selection {\n color: var(--primary-foreground);\n }\n &::selection {\n color: var(--primary-foreground);\n }\n }\n .file\\:inline-flex {\n &::file-selector-button {\n display: inline-flex;\n }\n }\n .file\\:h-7 {\n &::file-selector-button {\n height: calc(var(--spacing) * 7);\n }\n }\n .file\\:border-0 {\n &::file-selector-button {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .file\\:bg-transparent {\n &::file-selector-button {\n background-color: transparent;\n }\n }\n .file\\:text-sm {\n &::file-selector-button {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .file\\:font-medium {\n &::file-selector-button {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .file\\:text-foreground {\n &::file-selector-button {\n color: var(--foreground);\n }\n }\n .placeholder\\:text-muted-foreground {\n &::-moz-placeholder {\n color: var(--muted-foreground);\n }\n &::placeholder {\n color: var(--muted-foreground);\n }\n }\n .hover\\:bg-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n .hover\\:bg-destructive\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n }\n }\n }\n .hover\\:bg-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--secondary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:text-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n .hover\\:text-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--foreground);\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:opacity-100 {\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .focus\\:bg-accent {\n &:focus {\n background-color: var(--accent);\n }\n }\n .focus\\:text-accent-foreground {\n &:focus {\n color: var(--accent-foreground);\n }\n }\n .focus\\:ring-1 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-ring {\n &:focus {\n --tw-ring-color: var(--ring);\n }\n }\n .focus\\:ring-offset-2 {\n &:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:outline-hidden {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .focus-visible\\:border-ring {\n &:focus-visible {\n border-color: var(--ring);\n }\n }\n .focus-visible\\:ring-\\[3px\\] {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-destructive\\/20 {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .focus-visible\\:ring-ring\\/50 {\n &:focus-visible {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .disabled\\:pointer-events-none {\n &:disabled {\n pointer-events: none;\n }\n }\n .disabled\\:cursor-not-allowed {\n &:disabled {\n cursor: not-allowed;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .has-\\[\\>svg\\]\\:px-2\\.5 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n }\n .has-\\[\\>svg\\]\\:px-3 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>svg\\]\\:px-4 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n }\n .aria-invalid\\:border-destructive {\n &[aria-invalid=\"true\"] {\n border-color: var(--destructive);\n }\n }\n .aria-invalid\\:ring-destructive\\/20 {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .data-\\[disabled\\]\\:pointer-events-none {\n &[data-disabled] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\]\\:opacity-50 {\n &[data-disabled] {\n opacity: 50%;\n }\n }\n .data-\\[disabled\\=true\\]\\:pointer-events-none {\n &[data-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\=true\\]\\:opacity-50 {\n &[data-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .data-\\[error\\=true\\]\\:text-destructive-foreground {\n &[data-error=\"true\"] {\n color: var(--destructive-foreground);\n }\n }\n .data-\\[inset\\]\\:pl-8 {\n &[data-inset] {\n padding-left: calc(var(--spacing) * 8);\n }\n }\n .data-\\[placeholder\\]\\:text-muted-foreground {\n &[data-placeholder] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[selected\\=true\\]\\:bg-accent {\n &[data-selected=\"true\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[selected\\=true\\]\\:text-accent-foreground {\n &[data-selected=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[side\\=bottom\\]\\:translate-y-1 {\n &[data-side=\"bottom\"] {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=bottom\\]\\:slide-in-from-top-2 {\n &[data-side=\"bottom\"] {\n --tw-enter-translate-y: -0.5rem;\n }\n }\n .data-\\[side\\=left\\]\\:-translate-x-1 {\n &[data-side=\"left\"] {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=left\\]\\:slide-in-from-right-2 {\n &[data-side=\"left\"] {\n --tw-enter-translate-x: 0.5rem;\n }\n }\n .data-\\[side\\=right\\]\\:translate-x-1 {\n &[data-side=\"right\"] {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=right\\]\\:slide-in-from-left-2 {\n &[data-side=\"right\"] {\n --tw-enter-translate-x: -0.5rem;\n }\n }\n .data-\\[side\\=top\\]\\:-translate-y-1 {\n &[data-side=\"top\"] {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=top\\]\\:slide-in-from-bottom-2 {\n &[data-side=\"top\"] {\n --tw-enter-translate-y: 0.5rem;\n }\n }\n .\\*\\*\\:data-\\[slot\\=command-input-wrapper\\]\\:h-12 {\n :is(& *) {\n &[data-slot=\"command-input-wrapper\"] {\n height: calc(var(--spacing) * 12);\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:flex {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n display: flex;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:items-center {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n align-items: center;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:gap-2 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n .data-\\[state\\=checked\\]\\:border-primary {\n &[data-state=\"checked\"] {\n border-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:bg-primary {\n &[data-state=\"checked\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:text-primary-foreground {\n &[data-state=\"checked\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[state\\=closed\\]\\:animate-out {\n &[data-state=\"closed\"] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n }\n }\n .data-\\[state\\=closed\\]\\:fade-out-0 {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[state\\=closed\\]\\:zoom-out-95 {\n &[data-state=\"closed\"] {\n --tw-exit-scale: .95;\n }\n }\n .data-\\[state\\=open\\]\\:bg-accent {\n &[data-state=\"open\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[state\\=open\\]\\:text-accent-foreground {\n &[data-state=\"open\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:text-muted-foreground {\n &[data-state=\"open\"] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:animate-in {\n &[data-state=\"open\"] {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n }\n }\n .data-\\[state\\=open\\]\\:fade-in-0 {\n &[data-state=\"open\"] {\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[state\\=open\\]\\:zoom-in-95 {\n &[data-state=\"open\"] {\n --tw-enter-scale: .95;\n }\n }\n .data-\\[variant\\=destructive\\]\\:text-destructive {\n &[data-variant=\"destructive\"] {\n color: var(--destructive);\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/10 {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 10%, transparent);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:text-destructive {\n &[data-variant=\"destructive\"] {\n &:focus {\n color: var(--destructive);\n }\n }\n }\n .max-md\\:cursor-pointer {\n @media (width < 48rem) {\n cursor: pointer;\n }\n }\n .max-sm\\:hidden {\n @media (width < 40rem) {\n display: none;\n }\n }\n .min-\\[480px\\]\\:h-\\[228\\.56px\\] {\n @media (width >= 480px) {\n height: 228.56px;\n }\n }\n .sm\\:max-h-\\[270px\\] {\n @media (width >= 40rem) {\n max-height: 270px;\n }\n }\n .sm\\:max-w-\\[500px\\] {\n @media (width >= 40rem) {\n max-width: 500px;\n }\n }\n .sm\\:max-w-lg {\n @media (width >= 40rem) {\n max-width: var(--container-lg);\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .sm\\:justify-end {\n @media (width >= 40rem) {\n justify-content: flex-end;\n }\n }\n .sm\\:text-left {\n @media (width >= 40rem) {\n text-align: left;\n }\n }\n .md\\:order-last {\n @media (width >= 48rem) {\n order: 9999;\n }\n }\n .md\\:order-none {\n @media (width >= 48rem) {\n order: 0;\n }\n }\n .md\\:col-span-2 {\n @media (width >= 48rem) {\n grid-column: span 2 / span 2;\n }\n }\n .md\\:col-span-3 {\n @media (width >= 48rem) {\n grid-column: span 3 / span 3;\n }\n }\n .md\\:col-span-4 {\n @media (width >= 48rem) {\n grid-column: span 4 / span 4;\n }\n }\n .md\\:block {\n @media (width >= 48rem) {\n display: block;\n }\n }\n .md\\:flex {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n .md\\:grid {\n @media (width >= 48rem) {\n display: grid;\n }\n }\n .md\\:hidden {\n @media (width >= 48rem) {\n display: none;\n }\n }\n .md\\:max-w-\\[75\\%\\] {\n @media (width >= 48rem) {\n max-width: 75%;\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-7 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n }\n .md\\:gap-0 {\n @media (width >= 48rem) {\n gap: calc(var(--spacing) * 0);\n }\n }\n .md\\:px-8 {\n @media (width >= 48rem) {\n padding-inline: calc(var(--spacing) * 8);\n }\n }\n .md\\:py-12 {\n @media (width >= 48rem) {\n padding-block: calc(var(--spacing) * 12);\n }\n }\n .md\\:text-sm {\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .dark\\:focus-visible\\:ring-destructive\\/40 {\n @media (prefers-color-scheme: dark) {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:aria-invalid\\:ring-destructive\\/40 {\n @media (prefers-color-scheme: dark) {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20 {\n @media (prefers-color-scheme: dark) {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 {\n & [cmdk-group-heading] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 {\n & [cmdk-group-heading] {\n padding-block: calc(var(--spacing) * 1.5);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs {\n & [cmdk-group-heading] {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium {\n & [cmdk-group-heading] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground {\n & [cmdk-group-heading] {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\]\\:px-2 {\n & [cmdk-group] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 {\n & [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 {\n & [cmdk-input-wrapper] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 {\n & [cmdk-input-wrapper] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input\\]\\]\\:h-12 {\n & [cmdk-input] {\n height: calc(var(--spacing) * 12);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:px-2 {\n & [cmdk-item] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:py-3 {\n & [cmdk-item] {\n padding-block: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 {\n & [cmdk-item] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 {\n & [cmdk-item] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_svg\\]\\:pointer-events-none {\n & svg {\n pointer-events: none;\n }\n }\n .\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'text-\\'\\]\\)\\]\\:text-muted-foreground {\n & svg:not([class*='text-']) {\n color: var(--muted-foreground);\n }\n }\n .\\*\\:\\[span\\]\\:last\\:flex {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n display: flex;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:items-center {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n align-items: center;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:gap-2 {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:\\*\\:\\[svg\\]\\:\\!text-destructive {\n &[data-variant=\"destructive\"] {\n :is(& > *) {\n &:is(svg) {\n color: var(--destructive) !important;\n }\n }\n }\n }\n .\\[\\&\\>span\\]\\:line-clamp-1 {\n &>span {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n }\n}\n:root {\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0 0);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0 0);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0 0);\n --primary: oklch(0.205 0 0);\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(0.577 0.245 27.325);\n --border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.708 0 0);\n --chart-1: oklch(0.646 0.222 41.116);\n --chart-2: oklch(0.6 0.118 184.704);\n --chart-3: oklch(0.398 0.07 227.392);\n --chart-4: oklch(0.828 0.189 84.429);\n --chart-5: oklch(0.769 0.188 70.08);\n --radius: 0.625rem;\n --sidebar: oklch(0.985 0 0);\n --sidebar-foreground: oklch(0.145 0 0);\n --sidebar-primary: oklch(0.205 0 0);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.97 0 0);\n --sidebar-accent-foreground: oklch(0.205 0 0);\n --sidebar-border: oklch(0.922 0 0);\n --sidebar-ring: oklch(0.708 0 0);\n}\n@layer base {\n * {\n border-color: var(--border);\n outline-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n outline-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n .checkout-embed {\n background-color: var(--background);\n font-family: var(--font-sans), Helvetica, Arial, apple-system, sans-serif;\n color: var(--foreground);\n }\n h2 {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n p {\n --tw-tracking: var(--tracking-tight) !important;\n letter-spacing: var(--tracking-tight) !important;\n }\n}\n@layer utilities {\n .scrollbar-hidden {\n scrollbar-width: none;\n }\n .scrollbar-hidden::-webkit-scrollbar {\n display: none;\n }\n}\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n 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));\n }\n}\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n 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));\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-duration: initial;\n }\n }\n}\n";
|
|
497
|
+
const LayoutGroupContext = createContext({});
|
|
497
498
|
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
499
|
+
/**
|
|
500
|
+
* Creates a constant value over the lifecycle of a component.
|
|
501
|
+
*
|
|
502
|
+
* Even if `useMemo` is provided an empty array as its final argument, it doesn't offer
|
|
503
|
+
* a guarantee that it won't re-run for performance reasons later on. By using `useConstant`
|
|
504
|
+
* you can ensure that initialisers don't execute twice or more.
|
|
505
|
+
*/
|
|
506
|
+
function useConstant(init) {
|
|
507
|
+
const ref = useRef(null);
|
|
508
|
+
if (ref.current === null) {
|
|
509
|
+
ref.current = init();
|
|
510
|
+
}
|
|
511
|
+
return ref.current;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
const isBrowser = typeof window !== "undefined";
|
|
515
|
+
|
|
516
|
+
const useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* @public
|
|
520
|
+
*/
|
|
521
|
+
const PresenceContext =
|
|
522
|
+
/* @__PURE__ */ createContext(null);
|
|
523
|
+
|
|
524
|
+
/**
|
|
525
|
+
* @public
|
|
526
|
+
*/
|
|
527
|
+
const MotionConfigContext = createContext({
|
|
528
|
+
transformPagePoint: (p) => p,
|
|
529
|
+
isStatic: false,
|
|
530
|
+
reducedMotion: "never",
|
|
531
|
+
});
|
|
532
|
+
|
|
533
|
+
function isObject(value) {
|
|
534
|
+
return typeof value === "object" && value !== null;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
/**
|
|
538
|
+
* Checks if an element is an HTML element in a way
|
|
539
|
+
* that works across iframes
|
|
540
|
+
*/
|
|
541
|
+
function isHTMLElement(element) {
|
|
542
|
+
return isObject(element) && "offsetHeight" in element;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
/**
|
|
546
|
+
* Measurement functionality has to be within a separate component
|
|
547
|
+
* to leverage snapshot lifecycle.
|
|
548
|
+
*/
|
|
549
|
+
class PopChildMeasure extends React.Component {
|
|
550
|
+
getSnapshotBeforeUpdate(prevProps) {
|
|
551
|
+
const element = this.props.childRef.current;
|
|
552
|
+
if (element && prevProps.isPresent && !this.props.isPresent) {
|
|
553
|
+
const parent = element.offsetParent;
|
|
554
|
+
const parentWidth = isHTMLElement(parent)
|
|
555
|
+
? parent.offsetWidth || 0
|
|
556
|
+
: 0;
|
|
557
|
+
const size = this.props.sizeRef.current;
|
|
558
|
+
size.height = element.offsetHeight || 0;
|
|
559
|
+
size.width = element.offsetWidth || 0;
|
|
560
|
+
size.top = element.offsetTop;
|
|
561
|
+
size.left = element.offsetLeft;
|
|
562
|
+
size.right = parentWidth - size.width - size.left;
|
|
539
563
|
}
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
564
|
+
return null;
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* Required with getSnapshotBeforeUpdate to stop React complaining.
|
|
568
|
+
*/
|
|
569
|
+
componentDidUpdate() { }
|
|
570
|
+
render() {
|
|
571
|
+
return this.props.children;
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
function PopChild({ children, isPresent, anchorX }) {
|
|
575
|
+
const id = useId();
|
|
576
|
+
const ref = useRef(null);
|
|
577
|
+
const size = useRef({
|
|
578
|
+
width: 0,
|
|
579
|
+
height: 0,
|
|
580
|
+
top: 0,
|
|
581
|
+
left: 0,
|
|
582
|
+
right: 0,
|
|
583
|
+
});
|
|
584
|
+
const { nonce } = useContext(MotionConfigContext);
|
|
585
|
+
/**
|
|
586
|
+
* We create and inject a style block so we can apply this explicit
|
|
587
|
+
* sizing in a non-destructive manner by just deleting the style block.
|
|
588
|
+
*
|
|
589
|
+
* We can't apply size via render as the measurement happens
|
|
590
|
+
* in getSnapshotBeforeUpdate (post-render), likewise if we apply the
|
|
591
|
+
* styles directly on the DOM node, we might be overwriting
|
|
592
|
+
* styles set via the style prop.
|
|
593
|
+
*/
|
|
594
|
+
useInsertionEffect(() => {
|
|
595
|
+
const { width, height, top, left, right } = size.current;
|
|
596
|
+
if (isPresent || !ref.current || !width || !height)
|
|
560
597
|
return;
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
if (
|
|
565
|
-
|
|
598
|
+
const x = anchorX === "left" ? `left: ${left}` : `right: ${right}`;
|
|
599
|
+
ref.current.dataset.motionPopId = id;
|
|
600
|
+
const style = document.createElement("style");
|
|
601
|
+
if (nonce)
|
|
602
|
+
style.nonce = nonce;
|
|
603
|
+
document.head.appendChild(style);
|
|
604
|
+
if (style.sheet) {
|
|
605
|
+
style.sheet.insertRule(`
|
|
606
|
+
[data-motion-pop-id="${id}"] {
|
|
607
|
+
position: absolute !important;
|
|
608
|
+
width: ${width}px !important;
|
|
609
|
+
height: ${height}px !important;
|
|
610
|
+
${x}px !important;
|
|
611
|
+
top: ${top}px !important;
|
|
612
|
+
}
|
|
613
|
+
`);
|
|
566
614
|
}
|
|
567
615
|
return () => {
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
(_a = resizeObserver.current) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
571
|
-
if ((_b = styleRef.current) === null || _b === void 0 ? void 0 : _b.parentNode) {
|
|
572
|
-
styleRef.current.parentNode.removeChild(styleRef.current);
|
|
616
|
+
if (document.head.contains(style)) {
|
|
617
|
+
document.head.removeChild(style);
|
|
573
618
|
}
|
|
574
619
|
};
|
|
575
|
-
}, [
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
window.addEventListener("resize", updateHeight);
|
|
579
|
-
return () => {
|
|
580
|
-
window.removeEventListener("resize", updateHeight);
|
|
581
|
-
};
|
|
582
|
-
}, [updateHeight]);
|
|
583
|
-
return (React__default.createElement("div", { ref: wrapperRef, className: "w-full max-w-[1200px] min-h-screen mx-auto overflow-y-auto overflow-x-hidden relative" },
|
|
584
|
-
React__default.createElement("iframe", { ref: iframeRef, className: "w-full min-h-screen border-0", sandbox: "allow-same-origin allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-top-navigation" }),
|
|
585
|
-
iframeBody && ReactDOM.createPortal(children, iframeBody)));
|
|
586
|
-
});
|
|
587
|
-
IframeWrapper.displayName = "IframeWrapper";
|
|
588
|
-
|
|
589
|
-
var M=(e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n);}),R(n);}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n);}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y);}catch(n){}};var x=React.createContext(void 0),U={setTheme:e=>{},themes:[]},z=()=>{var e;return (e=React.useContext(x))!=null?e:U};React.memo(({forcedTheme:e,storageKey:i,attribute:s,enableSystem:u,enableColorScheme:m,defaultTheme:a,value:l,themes:h,nonce:d,scriptProps:w})=>{let p=JSON.stringify([s,i,a,e,h,l,u,m]).slice(1,-1);return React.createElement("script",{...w,suppressHydrationWarning:true,nonce:typeof window=="undefined"?d:"",dangerouslySetInnerHTML:{__html:`(${M.toString()})(${p})`}})});
|
|
620
|
+
}, [isPresent]);
|
|
621
|
+
return (jsx(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) }));
|
|
622
|
+
}
|
|
590
623
|
|
|
591
|
-
const
|
|
592
|
-
|
|
593
|
-
const
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
624
|
+
const PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, anchorX, }) => {
|
|
625
|
+
const presenceChildren = useConstant(newChildrenMap);
|
|
626
|
+
const id = useId();
|
|
627
|
+
let isReusedContext = true;
|
|
628
|
+
let context = useMemo(() => {
|
|
629
|
+
isReusedContext = false;
|
|
630
|
+
return {
|
|
631
|
+
id,
|
|
632
|
+
initial,
|
|
633
|
+
isPresent,
|
|
634
|
+
custom,
|
|
635
|
+
onExitComplete: (childId) => {
|
|
636
|
+
presenceChildren.set(childId, true);
|
|
637
|
+
for (const isComplete of presenceChildren.values()) {
|
|
638
|
+
if (!isComplete)
|
|
639
|
+
return; // can stop searching when any is incomplete
|
|
640
|
+
}
|
|
641
|
+
onExitComplete && onExitComplete();
|
|
642
|
+
},
|
|
643
|
+
register: (childId) => {
|
|
644
|
+
presenceChildren.set(childId, false);
|
|
645
|
+
return () => presenceChildren.delete(childId);
|
|
646
|
+
},
|
|
647
|
+
};
|
|
648
|
+
}, [isPresent, presenceChildren, onExitComplete]);
|
|
649
|
+
/**
|
|
650
|
+
* If the presence of a child affects the layout of the components around it,
|
|
651
|
+
* we want to make a new context value to ensure they get re-rendered
|
|
652
|
+
* so they can detect that layout change.
|
|
653
|
+
*/
|
|
654
|
+
if (presenceAffectsLayout && isReusedContext) {
|
|
655
|
+
context = { ...context };
|
|
656
|
+
}
|
|
657
|
+
useMemo(() => {
|
|
658
|
+
presenceChildren.forEach((_, key) => presenceChildren.set(key, false));
|
|
659
|
+
}, [isPresent]);
|
|
660
|
+
/**
|
|
661
|
+
* If there's no `motion` components to fire exit animations, we want to remove this
|
|
662
|
+
* component immediately.
|
|
663
|
+
*/
|
|
664
|
+
React.useEffect(() => {
|
|
665
|
+
!isPresent &&
|
|
666
|
+
!presenceChildren.size &&
|
|
667
|
+
onExitComplete &&
|
|
668
|
+
onExitComplete();
|
|
669
|
+
}, [isPresent]);
|
|
670
|
+
if (mode === "popLayout") {
|
|
671
|
+
children = (jsx(PopChild, { isPresent: isPresent, anchorX: anchorX, children: children }));
|
|
672
|
+
}
|
|
673
|
+
return (jsx(PresenceContext.Provider, { value: context, children: children }));
|
|
599
674
|
};
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
fontFamily: '-apple-system, BlinkMacSystemFont, "Geist", "Gill Sans", sans-serif'}};
|
|
604
|
-
|
|
605
|
-
function Appearance({ appearance, fonts, iframeRef, }) {
|
|
606
|
-
useEffect(() => {
|
|
607
|
-
var _a;
|
|
608
|
-
if (!(iframeRef === null || iframeRef === void 0 ? void 0 : iframeRef.current))
|
|
609
|
-
return;
|
|
610
|
-
try {
|
|
611
|
-
const variables = getVariablesFromAppearanceConfig(appearance);
|
|
612
|
-
const iframeDoc = iframeRef.current.contentDocument ||
|
|
613
|
-
((_a = iframeRef.current.contentWindow) === null || _a === void 0 ? void 0 : _a.document);
|
|
614
|
-
if (!iframeDoc) {
|
|
615
|
-
console.warn("Unable to access iframe document");
|
|
616
|
-
return;
|
|
617
|
-
}
|
|
618
|
-
if (variables) {
|
|
619
|
-
Object.entries(variables).forEach(([key, value]) => {
|
|
620
|
-
iframeDoc.documentElement.style.setProperty(key, value);
|
|
621
|
-
});
|
|
622
|
-
}
|
|
623
|
-
// Load fonts if provided
|
|
624
|
-
if (fonts) {
|
|
625
|
-
fonts.forEach((font) => {
|
|
626
|
-
try {
|
|
627
|
-
if ("cssSrc" in font) {
|
|
628
|
-
// Handle CSS font source
|
|
629
|
-
const link = iframeDoc.createElement("link");
|
|
630
|
-
link.rel = "stylesheet";
|
|
631
|
-
link.href = font.cssSrc;
|
|
632
|
-
iframeDoc.head.appendChild(link);
|
|
633
|
-
}
|
|
634
|
-
else if ("family" in font) {
|
|
635
|
-
// Handle custom font source
|
|
636
|
-
const style = iframeDoc.createElement("style");
|
|
637
|
-
style.textContent = `
|
|
638
|
-
@font-face {
|
|
639
|
-
font-family: '${font.family}';
|
|
640
|
-
src: ${font.src};
|
|
641
|
-
font-weight: ${font.weight || "normal"};
|
|
642
|
-
font-style: ${font.style || "normal"};
|
|
643
|
-
}
|
|
644
|
-
`;
|
|
645
|
-
iframeDoc.head.appendChild(style);
|
|
646
|
-
}
|
|
647
|
-
}
|
|
648
|
-
catch (error) {
|
|
649
|
-
console.error("Error loading font:", error);
|
|
650
|
-
}
|
|
651
|
-
});
|
|
652
|
-
}
|
|
653
|
-
}
|
|
654
|
-
catch (error) {
|
|
655
|
-
console.error("Error applying appearance styles:", error);
|
|
656
|
-
}
|
|
657
|
-
}, [appearance, fonts, iframeRef]);
|
|
658
|
-
return null;
|
|
659
|
-
}
|
|
660
|
-
const getVariablesFromAppearanceConfig = (appearance) => {
|
|
661
|
-
var _a;
|
|
662
|
-
const colors = getColorVariablesFromAppearanceConfig(appearance);
|
|
663
|
-
const definedAppearance = Object.assign(Object.assign({}, colors), { "--font-sans": (_a = appearance === null || appearance === void 0 ? void 0 : appearance.font) !== null && _a !== void 0 ? _a : '-apple-system, BlinkMacSystemFont, "Helvetica", "Gill Sans", "Inter", sans-serif', "--radius": (appearance === null || appearance === void 0 ? void 0 : appearance.borderRadius)
|
|
664
|
-
? `${appearance.borderRadius}rem`
|
|
665
|
-
: "0.625rem" });
|
|
666
|
-
return definedAppearance;
|
|
667
|
-
};
|
|
668
|
-
const getColorVariablesFromAppearanceConfig = (appearance) => {
|
|
669
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27;
|
|
670
|
-
// Determine if we're using dark theme
|
|
671
|
-
const isDark = (appearance === null || appearance === void 0 ? void 0 : appearance.theme) === "dark";
|
|
672
|
-
// Define fallback colors based on theme
|
|
673
|
-
const fallbackColors = {
|
|
674
|
-
background: isDark ? "oklch(0.145 0 0)" : "oklch(1 0 0)",
|
|
675
|
-
foreground: isDark ? "oklch(0.985 0 0)" : "oklch(0.145 0 0)",
|
|
676
|
-
card: isDark ? "oklch(0.145 0 0)" : "oklch(1 0 0)",
|
|
677
|
-
cardForeground: isDark ? "oklch(0.985 0 0)" : "oklch(0.145 0 0)",
|
|
678
|
-
primary: isDark ? "oklch(0.985 0 0)" : "oklch(0.205 0 0)",
|
|
679
|
-
primaryForeground: isDark ? "oklch(0.205 0 0)" : "oklch(0.985 0 0)",
|
|
680
|
-
secondary: isDark ? "oklch(0.269 0 0)" : "oklch(0.97 0 0)",
|
|
681
|
-
secondaryForeground: isDark ? "oklch(0.985 0 0)" : "oklch(0.205 0 0)",
|
|
682
|
-
muted: isDark ? "oklch(0.269 0 0)" : "oklch(0.97 0 0)",
|
|
683
|
-
mutedForeground: isDark ? "oklch(0.708 0 0)" : "oklch(0.556 0 0)",
|
|
684
|
-
accent: isDark ? "oklch(0.269 0 0)" : "oklch(0.97 0 0)",
|
|
685
|
-
accentForeground: isDark ? "oklch(0.985 0 0)" : "oklch(0.205 0 0)",
|
|
686
|
-
destructive: isDark
|
|
687
|
-
? "oklch(0.396 0.141 25.723)"
|
|
688
|
-
: "oklch(0.577 0.245 27.325)",
|
|
689
|
-
destructiveForeground: isDark
|
|
690
|
-
? "oklch(0.637 0.237 25.331)"
|
|
691
|
-
: "oklch(0.577 0.245 27.325)",
|
|
692
|
-
border: isDark ? "oklch(0.269 0 0)" : "oklch(0.922 0 0)",
|
|
693
|
-
ring: isDark ? "oklch(0.439 0 0)" : "oklch(0.708 0 0)",
|
|
694
|
-
sidebar: isDark ? "oklch(0.205 0 0)" : "oklch(0.985 0 0)",
|
|
695
|
-
sidebarForeground: isDark ? "oklch(0.985 0 0)" : "oklch(0.145 0 0)",
|
|
696
|
-
sidebarPrimary: isDark ? "oklch(0.488 0.243 264.376)" : "oklch(0.205 0 0)",
|
|
697
|
-
sidebarPrimaryForeground: isDark ? "oklch(0.985 0 0)" : "oklch(0.985 0 0)",
|
|
698
|
-
};
|
|
699
|
-
const colors = {
|
|
700
|
-
"--background": (_b = (_a = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _a === void 0 ? void 0 : _a.background) !== null && _b !== void 0 ? _b : fallbackColors.background,
|
|
701
|
-
"--foreground": (_d = (_c = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _c === void 0 ? void 0 : _c.foreground) !== null && _d !== void 0 ? _d : fallbackColors.foreground,
|
|
702
|
-
// Card (reusing background/foreground)
|
|
703
|
-
"--card": (_f = (_e = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _e === void 0 ? void 0 : _e.background) !== null && _f !== void 0 ? _f : fallbackColors.card,
|
|
704
|
-
"--card-foreground": (_h = (_g = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _g === void 0 ? void 0 : _g.foreground) !== null && _h !== void 0 ? _h : fallbackColors.cardForeground,
|
|
705
|
-
// Popover (reusing background/foreground)
|
|
706
|
-
"--popover": (_k = (_j = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _j === void 0 ? void 0 : _j.background) !== null && _k !== void 0 ? _k : fallbackColors.background,
|
|
707
|
-
"--popover-foreground": (_m = (_l = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _l === void 0 ? void 0 : _l.foreground) !== null && _m !== void 0 ? _m : fallbackColors.foreground,
|
|
708
|
-
// Primary
|
|
709
|
-
"--primary": (_p = (_o = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _o === void 0 ? void 0 : _o.primary) !== null && _p !== void 0 ? _p : fallbackColors.primary,
|
|
710
|
-
"--primary-foreground": (_r = (_q = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _q === void 0 ? void 0 : _q.primaryForeground) !== null && _r !== void 0 ? _r : fallbackColors.primaryForeground,
|
|
711
|
-
// Secondary
|
|
712
|
-
"--secondary": (_t = (_s = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _s === void 0 ? void 0 : _s.secondary) !== null && _t !== void 0 ? _t : fallbackColors.secondary,
|
|
713
|
-
"--secondary-foreground": (_v = (_u = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _u === void 0 ? void 0 : _u.secondaryForeground) !== null && _v !== void 0 ? _v : fallbackColors.secondaryForeground,
|
|
714
|
-
// Muted
|
|
715
|
-
"--muted": (_x = (_w = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _w === void 0 ? void 0 : _w.muted) !== null && _x !== void 0 ? _x : fallbackColors.muted,
|
|
716
|
-
"--muted-foreground": (_z = (_y = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _y === void 0 ? void 0 : _y.mutedForeground) !== null && _z !== void 0 ? _z : fallbackColors.mutedForeground,
|
|
717
|
-
// Accent
|
|
718
|
-
"--accent": (_1 = (_0 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _0 === void 0 ? void 0 : _0.accent) !== null && _1 !== void 0 ? _1 : fallbackColors.accent,
|
|
719
|
-
"--accent-foreground": (_3 = (_2 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _2 === void 0 ? void 0 : _2.accentForeground) !== null && _3 !== void 0 ? _3 : fallbackColors.accentForeground,
|
|
720
|
-
// Destructive
|
|
721
|
-
"--destructive": (_5 = (_4 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _4 === void 0 ? void 0 : _4.destructive) !== null && _5 !== void 0 ? _5 : fallbackColors.destructive,
|
|
722
|
-
"--destructive-foreground": fallbackColors.destructiveForeground,
|
|
723
|
-
// Border and Input
|
|
724
|
-
"--border": (_7 = (_6 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _6 === void 0 ? void 0 : _6.border) !== null && _7 !== void 0 ? _7 : fallbackColors.border,
|
|
725
|
-
"--input": (_9 = (_8 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _8 === void 0 ? void 0 : _8.border) !== null && _9 !== void 0 ? _9 : fallbackColors.border,
|
|
726
|
-
"--ring": (_11 = (_10 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _10 === void 0 ? void 0 : _10.ring) !== null && _11 !== void 0 ? _11 : fallbackColors.ring,
|
|
727
|
-
// Chart colors (keeping original values)
|
|
728
|
-
"--chart-1": isDark
|
|
729
|
-
? "oklch(0.488 0.243 264.376)"
|
|
730
|
-
: "oklch(0.646 0.222 41.116)",
|
|
731
|
-
"--chart-2": isDark
|
|
732
|
-
? "oklch(0.696 0.17 162.48)"
|
|
733
|
-
: "oklch(0.6 0.118 184.704)",
|
|
734
|
-
"--chart-3": isDark
|
|
735
|
-
? "oklch(0.769 0.188 70.08)"
|
|
736
|
-
: "oklch(0.398 0.07 227.392)",
|
|
737
|
-
"--chart-4": isDark
|
|
738
|
-
? "oklch(0.627 0.265 303.9)"
|
|
739
|
-
: "oklch(0.828 0.189 84.429)",
|
|
740
|
-
"--chart-5": isDark
|
|
741
|
-
? "oklch(0.645 0.246 16.439)"
|
|
742
|
-
: "oklch(0.769 0.188 70.08)",
|
|
743
|
-
// Sidebar
|
|
744
|
-
"--sidebar": (_13 = (_12 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _12 === void 0 ? void 0 : _12.background) !== null && _13 !== void 0 ? _13 : fallbackColors.sidebar,
|
|
745
|
-
"--sidebar-foreground": (_15 = (_14 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _14 === void 0 ? void 0 : _14.foreground) !== null && _15 !== void 0 ? _15 : fallbackColors.sidebarForeground,
|
|
746
|
-
"--sidebar-primary": (_17 = (_16 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _16 === void 0 ? void 0 : _16.primary) !== null && _17 !== void 0 ? _17 : fallbackColors.sidebarPrimary,
|
|
747
|
-
"--sidebar-primary-foreground": (_19 = (_18 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _18 === void 0 ? void 0 : _18.primaryForeground) !== null && _19 !== void 0 ? _19 : fallbackColors.sidebarPrimaryForeground,
|
|
748
|
-
"--sidebar-accent": (_21 = (_20 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _20 === void 0 ? void 0 : _20.accent) !== null && _21 !== void 0 ? _21 : fallbackColors.accent,
|
|
749
|
-
"--sidebar-accent-foreground": (_23 = (_22 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _22 === void 0 ? void 0 : _22.accentForeground) !== null && _23 !== void 0 ? _23 : fallbackColors.accentForeground,
|
|
750
|
-
"--sidebar-border": (_25 = (_24 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _24 === void 0 ? void 0 : _24.border) !== null && _25 !== void 0 ? _25 : fallbackColors.border,
|
|
751
|
-
"--sidebar-ring": (_27 = (_26 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _26 === void 0 ? void 0 : _26.ring) !== null && _27 !== void 0 ? _27 : fallbackColors.ring,
|
|
752
|
-
};
|
|
753
|
-
return colors;
|
|
754
|
-
};
|
|
755
|
-
const convertCheckoutAppearanceToStripeAppearance = (appearance$1, fonts) => {
|
|
756
|
-
const currentVariables = getVariablesFromAppearanceConfig(appearance$1);
|
|
757
|
-
const newAppearance = {
|
|
758
|
-
theme: "flat",
|
|
759
|
-
rules: {
|
|
760
|
-
".Input": {
|
|
761
|
-
padding: "12px",
|
|
762
|
-
border: `1px solid ${currentVariables["--border"]}`,
|
|
763
|
-
backgroundColor: currentVariables["--background"],
|
|
764
|
-
fontSize: "14px",
|
|
765
|
-
outline: "none",
|
|
766
|
-
},
|
|
767
|
-
".Input:focus": {
|
|
768
|
-
backgroundColor: currentVariables["--secondary"],
|
|
769
|
-
},
|
|
770
|
-
".Input::placeholder": {
|
|
771
|
-
fontSize: "14px",
|
|
772
|
-
color: currentVariables["--muted-foreground"],
|
|
773
|
-
},
|
|
774
|
-
".Label": {
|
|
775
|
-
marginBottom: "8px",
|
|
776
|
-
fontSize: "14px",
|
|
777
|
-
fontWeight: "500",
|
|
778
|
-
},
|
|
779
|
-
".Input:disabled, .Input--invalid:disabled": {
|
|
780
|
-
cursor: "not-allowed",
|
|
781
|
-
},
|
|
782
|
-
// ".Block": {
|
|
783
|
-
// backgroundColor: "#000000",
|
|
784
|
-
// boxShadow: "none",
|
|
785
|
-
// padding: "12px",
|
|
786
|
-
// },
|
|
787
|
-
".Tab": {
|
|
788
|
-
padding: "10px 12px 8px 12px",
|
|
789
|
-
border: `1px solid ${currentVariables["--border"]}`,
|
|
790
|
-
backgroundColor: currentVariables["--background"],
|
|
791
|
-
},
|
|
792
|
-
".Tab:hover": {
|
|
793
|
-
backgroundColor: currentVariables["--secondary"],
|
|
794
|
-
},
|
|
795
|
-
".Tab--selected, .Tab--selected:focus, .Tab--selected:hover": {
|
|
796
|
-
border: `1px solid ${currentVariables["--border"]}`,
|
|
797
|
-
backgroundColor: currentVariables["--secondary"],
|
|
798
|
-
color: currentVariables["--foreground"],
|
|
799
|
-
},
|
|
800
|
-
},
|
|
801
|
-
variables: {
|
|
802
|
-
focusOutline: "none",
|
|
803
|
-
focusBoxShadow: "none",
|
|
804
|
-
fontFamily: fonts
|
|
805
|
-
? currentVariables["--font-sans"]
|
|
806
|
-
: appearance.variables.fontFamily,
|
|
807
|
-
borderRadius: currentVariables["--radius"],
|
|
808
|
-
// colorSuccess: currentVariables["--success"],
|
|
809
|
-
// colorWarning: currentVariables["--warning"],
|
|
810
|
-
colorDanger: currentVariables["--destructive"],
|
|
811
|
-
colorBackground: currentVariables["--background"],
|
|
812
|
-
colorPrimary: currentVariables["--primary"],
|
|
813
|
-
colorText: currentVariables["--foreground"],
|
|
814
|
-
colorTextSecondary: currentVariables["--secondary-foreground"],
|
|
815
|
-
colorTextPlaceholder: currentVariables["--muted-foreground"],
|
|
816
|
-
},
|
|
817
|
-
};
|
|
818
|
-
return newAppearance;
|
|
819
|
-
};
|
|
820
|
-
|
|
821
|
-
const storeHelpers = createStoreHelpers();
|
|
822
|
-
|
|
823
|
-
const LayoutGroupContext = createContext({});
|
|
675
|
+
function newChildrenMap() {
|
|
676
|
+
return new Map();
|
|
677
|
+
}
|
|
824
678
|
|
|
825
679
|
/**
|
|
826
|
-
*
|
|
680
|
+
* When a component is the child of `AnimatePresence`, it can use `usePresence`
|
|
681
|
+
* to access information about whether it's still present in the React tree.
|
|
827
682
|
*
|
|
828
|
-
*
|
|
829
|
-
*
|
|
830
|
-
*
|
|
683
|
+
* ```jsx
|
|
684
|
+
* import { usePresence } from "framer-motion"
|
|
685
|
+
*
|
|
686
|
+
* export const Component = () => {
|
|
687
|
+
* const [isPresent, safeToRemove] = usePresence()
|
|
688
|
+
*
|
|
689
|
+
* useEffect(() => {
|
|
690
|
+
* !isPresent && setTimeout(safeToRemove, 1000)
|
|
691
|
+
* }, [isPresent])
|
|
692
|
+
*
|
|
693
|
+
* return <div />
|
|
694
|
+
* }
|
|
695
|
+
* ```
|
|
696
|
+
*
|
|
697
|
+
* If `isPresent` is `false`, it means that a component has been removed the tree, but
|
|
698
|
+
* `AnimatePresence` won't really remove it until `safeToRemove` has been called.
|
|
699
|
+
*
|
|
700
|
+
* @public
|
|
831
701
|
*/
|
|
832
|
-
function
|
|
833
|
-
const
|
|
834
|
-
if (
|
|
835
|
-
|
|
836
|
-
}
|
|
837
|
-
return
|
|
702
|
+
function usePresence(subscribe = true) {
|
|
703
|
+
const context = useContext(PresenceContext);
|
|
704
|
+
if (context === null)
|
|
705
|
+
return [true, null];
|
|
706
|
+
const { isPresent, onExitComplete, register } = context;
|
|
707
|
+
// It's safe to call the following hooks conditionally (after an early return) because the context will always
|
|
708
|
+
// either be null or non-null for the lifespan of the component.
|
|
709
|
+
const id = useId();
|
|
710
|
+
useEffect(() => {
|
|
711
|
+
if (subscribe) {
|
|
712
|
+
return register(id);
|
|
713
|
+
}
|
|
714
|
+
}, [subscribe]);
|
|
715
|
+
const safeToRemove = useCallback(() => subscribe && onExitComplete && onExitComplete(id), [id, onExitComplete, subscribe]);
|
|
716
|
+
return !isPresent && onExitComplete ? [false, safeToRemove] : [true];
|
|
838
717
|
}
|
|
839
718
|
|
|
840
|
-
const
|
|
841
|
-
|
|
842
|
-
const
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
/**
|
|
851
|
-
* @public
|
|
852
|
-
*/
|
|
853
|
-
const MotionConfigContext = createContext({
|
|
854
|
-
transformPagePoint: (p) => p,
|
|
855
|
-
isStatic: false,
|
|
856
|
-
reducedMotion: "never",
|
|
857
|
-
});
|
|
858
|
-
|
|
859
|
-
function isObject(value) {
|
|
860
|
-
return typeof value === "object" && value !== null;
|
|
861
|
-
}
|
|
862
|
-
|
|
863
|
-
/**
|
|
864
|
-
* Checks if an element is an HTML element in a way
|
|
865
|
-
* that works across iframes
|
|
866
|
-
*/
|
|
867
|
-
function isHTMLElement(element) {
|
|
868
|
-
return isObject(element) && "offsetHeight" in element;
|
|
869
|
-
}
|
|
870
|
-
|
|
871
|
-
/**
|
|
872
|
-
* Measurement functionality has to be within a separate component
|
|
873
|
-
* to leverage snapshot lifecycle.
|
|
874
|
-
*/
|
|
875
|
-
class PopChildMeasure extends React.Component {
|
|
876
|
-
getSnapshotBeforeUpdate(prevProps) {
|
|
877
|
-
const element = this.props.childRef.current;
|
|
878
|
-
if (element && prevProps.isPresent && !this.props.isPresent) {
|
|
879
|
-
const parent = element.offsetParent;
|
|
880
|
-
const parentWidth = isHTMLElement(parent)
|
|
881
|
-
? parent.offsetWidth || 0
|
|
882
|
-
: 0;
|
|
883
|
-
const size = this.props.sizeRef.current;
|
|
884
|
-
size.height = element.offsetHeight || 0;
|
|
885
|
-
size.width = element.offsetWidth || 0;
|
|
886
|
-
size.top = element.offsetTop;
|
|
887
|
-
size.left = element.offsetLeft;
|
|
888
|
-
size.right = parentWidth - size.width - size.left;
|
|
889
|
-
}
|
|
890
|
-
return null;
|
|
891
|
-
}
|
|
892
|
-
/**
|
|
893
|
-
* Required with getSnapshotBeforeUpdate to stop React complaining.
|
|
894
|
-
*/
|
|
895
|
-
componentDidUpdate() { }
|
|
896
|
-
render() {
|
|
897
|
-
return this.props.children;
|
|
898
|
-
}
|
|
899
|
-
}
|
|
900
|
-
function PopChild({ children, isPresent, anchorX }) {
|
|
901
|
-
const id = useId();
|
|
902
|
-
const ref = useRef(null);
|
|
903
|
-
const size = useRef({
|
|
904
|
-
width: 0,
|
|
905
|
-
height: 0,
|
|
906
|
-
top: 0,
|
|
907
|
-
left: 0,
|
|
908
|
-
right: 0,
|
|
909
|
-
});
|
|
910
|
-
const { nonce } = useContext(MotionConfigContext);
|
|
911
|
-
/**
|
|
912
|
-
* We create and inject a style block so we can apply this explicit
|
|
913
|
-
* sizing in a non-destructive manner by just deleting the style block.
|
|
914
|
-
*
|
|
915
|
-
* We can't apply size via render as the measurement happens
|
|
916
|
-
* in getSnapshotBeforeUpdate (post-render), likewise if we apply the
|
|
917
|
-
* styles directly on the DOM node, we might be overwriting
|
|
918
|
-
* styles set via the style prop.
|
|
919
|
-
*/
|
|
920
|
-
useInsertionEffect(() => {
|
|
921
|
-
const { width, height, top, left, right } = size.current;
|
|
922
|
-
if (isPresent || !ref.current || !width || !height)
|
|
923
|
-
return;
|
|
924
|
-
const x = anchorX === "left" ? `left: ${left}` : `right: ${right}`;
|
|
925
|
-
ref.current.dataset.motionPopId = id;
|
|
926
|
-
const style = document.createElement("style");
|
|
927
|
-
if (nonce)
|
|
928
|
-
style.nonce = nonce;
|
|
929
|
-
document.head.appendChild(style);
|
|
930
|
-
if (style.sheet) {
|
|
931
|
-
style.sheet.insertRule(`
|
|
932
|
-
[data-motion-pop-id="${id}"] {
|
|
933
|
-
position: absolute !important;
|
|
934
|
-
width: ${width}px !important;
|
|
935
|
-
height: ${height}px !important;
|
|
936
|
-
${x}px !important;
|
|
937
|
-
top: ${top}px !important;
|
|
938
|
-
}
|
|
939
|
-
`);
|
|
940
|
-
}
|
|
941
|
-
return () => {
|
|
942
|
-
if (document.head.contains(style)) {
|
|
943
|
-
document.head.removeChild(style);
|
|
944
|
-
}
|
|
945
|
-
};
|
|
946
|
-
}, [isPresent]);
|
|
947
|
-
return (jsx(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) }));
|
|
948
|
-
}
|
|
949
|
-
|
|
950
|
-
const PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, anchorX, }) => {
|
|
951
|
-
const presenceChildren = useConstant(newChildrenMap);
|
|
952
|
-
const id = useId();
|
|
953
|
-
let isReusedContext = true;
|
|
954
|
-
let context = useMemo(() => {
|
|
955
|
-
isReusedContext = false;
|
|
956
|
-
return {
|
|
957
|
-
id,
|
|
958
|
-
initial,
|
|
959
|
-
isPresent,
|
|
960
|
-
custom,
|
|
961
|
-
onExitComplete: (childId) => {
|
|
962
|
-
presenceChildren.set(childId, true);
|
|
963
|
-
for (const isComplete of presenceChildren.values()) {
|
|
964
|
-
if (!isComplete)
|
|
965
|
-
return; // can stop searching when any is incomplete
|
|
966
|
-
}
|
|
967
|
-
onExitComplete && onExitComplete();
|
|
968
|
-
},
|
|
969
|
-
register: (childId) => {
|
|
970
|
-
presenceChildren.set(childId, false);
|
|
971
|
-
return () => presenceChildren.delete(childId);
|
|
972
|
-
},
|
|
973
|
-
};
|
|
974
|
-
}, [isPresent, presenceChildren, onExitComplete]);
|
|
975
|
-
/**
|
|
976
|
-
* If the presence of a child affects the layout of the components around it,
|
|
977
|
-
* we want to make a new context value to ensure they get re-rendered
|
|
978
|
-
* so they can detect that layout change.
|
|
979
|
-
*/
|
|
980
|
-
if (presenceAffectsLayout && isReusedContext) {
|
|
981
|
-
context = { ...context };
|
|
982
|
-
}
|
|
983
|
-
useMemo(() => {
|
|
984
|
-
presenceChildren.forEach((_, key) => presenceChildren.set(key, false));
|
|
985
|
-
}, [isPresent]);
|
|
986
|
-
/**
|
|
987
|
-
* If there's no `motion` components to fire exit animations, we want to remove this
|
|
988
|
-
* component immediately.
|
|
989
|
-
*/
|
|
990
|
-
React.useEffect(() => {
|
|
991
|
-
!isPresent &&
|
|
992
|
-
!presenceChildren.size &&
|
|
993
|
-
onExitComplete &&
|
|
994
|
-
onExitComplete();
|
|
995
|
-
}, [isPresent]);
|
|
996
|
-
if (mode === "popLayout") {
|
|
997
|
-
children = (jsx(PopChild, { isPresent: isPresent, anchorX: anchorX, children: children }));
|
|
998
|
-
}
|
|
999
|
-
return (jsx(PresenceContext.Provider, { value: context, children: children }));
|
|
1000
|
-
};
|
|
1001
|
-
function newChildrenMap() {
|
|
1002
|
-
return new Map();
|
|
1003
|
-
}
|
|
1004
|
-
|
|
1005
|
-
/**
|
|
1006
|
-
* When a component is the child of `AnimatePresence`, it can use `usePresence`
|
|
1007
|
-
* to access information about whether it's still present in the React tree.
|
|
1008
|
-
*
|
|
1009
|
-
* ```jsx
|
|
1010
|
-
* import { usePresence } from "framer-motion"
|
|
1011
|
-
*
|
|
1012
|
-
* export const Component = () => {
|
|
1013
|
-
* const [isPresent, safeToRemove] = usePresence()
|
|
1014
|
-
*
|
|
1015
|
-
* useEffect(() => {
|
|
1016
|
-
* !isPresent && setTimeout(safeToRemove, 1000)
|
|
1017
|
-
* }, [isPresent])
|
|
1018
|
-
*
|
|
1019
|
-
* return <div />
|
|
1020
|
-
* }
|
|
1021
|
-
* ```
|
|
1022
|
-
*
|
|
1023
|
-
* If `isPresent` is `false`, it means that a component has been removed the tree, but
|
|
1024
|
-
* `AnimatePresence` won't really remove it until `safeToRemove` has been called.
|
|
1025
|
-
*
|
|
1026
|
-
* @public
|
|
1027
|
-
*/
|
|
1028
|
-
function usePresence(subscribe = true) {
|
|
1029
|
-
const context = useContext(PresenceContext);
|
|
1030
|
-
if (context === null)
|
|
1031
|
-
return [true, null];
|
|
1032
|
-
const { isPresent, onExitComplete, register } = context;
|
|
1033
|
-
// It's safe to call the following hooks conditionally (after an early return) because the context will always
|
|
1034
|
-
// either be null or non-null for the lifespan of the component.
|
|
1035
|
-
const id = useId();
|
|
1036
|
-
useEffect(() => {
|
|
1037
|
-
if (subscribe) {
|
|
1038
|
-
return register(id);
|
|
1039
|
-
}
|
|
1040
|
-
}, [subscribe]);
|
|
1041
|
-
const safeToRemove = useCallback(() => subscribe && onExitComplete && onExitComplete(id), [id, onExitComplete, subscribe]);
|
|
1042
|
-
return !isPresent && onExitComplete ? [false, safeToRemove] : [true];
|
|
1043
|
-
}
|
|
1044
|
-
|
|
1045
|
-
const getChildKey = (child) => child.key || "";
|
|
1046
|
-
function onlyElements(children) {
|
|
1047
|
-
const filtered = [];
|
|
1048
|
-
// We use forEach here instead of map as map mutates the component key by preprending `.$`
|
|
1049
|
-
Children.forEach(children, (child) => {
|
|
1050
|
-
if (isValidElement(child))
|
|
1051
|
-
filtered.push(child);
|
|
1052
|
-
});
|
|
1053
|
-
return filtered;
|
|
1054
|
-
}
|
|
719
|
+
const getChildKey = (child) => child.key || "";
|
|
720
|
+
function onlyElements(children) {
|
|
721
|
+
const filtered = [];
|
|
722
|
+
// We use forEach here instead of map as map mutates the component key by preprending `.$`
|
|
723
|
+
Children.forEach(children, (child) => {
|
|
724
|
+
if (isValidElement(child))
|
|
725
|
+
filtered.push(child);
|
|
726
|
+
});
|
|
727
|
+
return filtered;
|
|
728
|
+
}
|
|
1055
729
|
|
|
1056
730
|
/**
|
|
1057
731
|
* `AnimatePresence` enables the animation of components that have been removed from the tree.
|
|
@@ -1534,6 +1208,46 @@ function filterProps(props, isDom, forwardMotionProps) {
|
|
|
1534
1208
|
return filteredProps;
|
|
1535
1209
|
}
|
|
1536
1210
|
|
|
1211
|
+
/**
|
|
1212
|
+
* `MotionConfig` is used to set configuration options for all children `motion` components.
|
|
1213
|
+
*
|
|
1214
|
+
* ```jsx
|
|
1215
|
+
* import { motion, MotionConfig } from "framer-motion"
|
|
1216
|
+
*
|
|
1217
|
+
* export function App() {
|
|
1218
|
+
* return (
|
|
1219
|
+
* <MotionConfig transition={{ type: "spring" }}>
|
|
1220
|
+
* <motion.div animate={{ x: 100 }} />
|
|
1221
|
+
* </MotionConfig>
|
|
1222
|
+
* )
|
|
1223
|
+
* }
|
|
1224
|
+
* ```
|
|
1225
|
+
*
|
|
1226
|
+
* @public
|
|
1227
|
+
*/
|
|
1228
|
+
function MotionConfig({ children, isValidProp, ...config }) {
|
|
1229
|
+
isValidProp && loadExternalIsValidProp(isValidProp);
|
|
1230
|
+
/**
|
|
1231
|
+
* Inherit props from any parent MotionConfig components
|
|
1232
|
+
*/
|
|
1233
|
+
config = { ...useContext(MotionConfigContext), ...config };
|
|
1234
|
+
/**
|
|
1235
|
+
* Don't allow isStatic to change between renders as it affects how many hooks
|
|
1236
|
+
* motion components fire.
|
|
1237
|
+
*/
|
|
1238
|
+
config.isStatic = useConstant(() => config.isStatic);
|
|
1239
|
+
/**
|
|
1240
|
+
* Creating a new config context object will re-render every `motion` component
|
|
1241
|
+
* every time it renders. So we only want to create a new one sparingly.
|
|
1242
|
+
*/
|
|
1243
|
+
const context = useMemo(() => config, [
|
|
1244
|
+
JSON.stringify(config.transition),
|
|
1245
|
+
config.transformPagePoint,
|
|
1246
|
+
config.reducedMotion,
|
|
1247
|
+
]);
|
|
1248
|
+
return (jsx(MotionConfigContext.Provider, { value: context, children: children }));
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1537
1251
|
const warned = new Set();
|
|
1538
1252
|
function warnOnce(condition, message, element) {
|
|
1539
1253
|
if (condition || warned.has(message))
|
|
@@ -10951,6 +10665,296 @@ const createMotionComponent = /*@__PURE__*/ createMotionComponentFactory({
|
|
|
10951
10665
|
|
|
10952
10666
|
const motion = /*@__PURE__*/ createDOMMotionComponentProxy(createMotionComponent);
|
|
10953
10667
|
|
|
10668
|
+
var css_248z = "/*! tailwindcss v4.1.8 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: var(--font-sans), Helvetica, Arial, apple-system, sans-serif;\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-lg: 32rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --tracking-tight: -0.025em;\n --tracking-widest: 0.1em;\n --radius-xs: 0.125rem;\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans), Helvetica, Arial, apple-system, sans-serif;\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n 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\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::-moz-placeholder {\n opacity: 1;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::-moz-placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n -webkit-appearance: button;\n -moz-appearance: button;\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-none {\n pointer-events: none;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .sticky {\n position: sticky;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .-top-2 {\n top: calc(var(--spacing) * -2);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-0\\.5 {\n top: calc(var(--spacing) * 0.5);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .top-\\[50\\%\\] {\n top: 50%;\n }\n .-right-2 {\n right: calc(var(--spacing) * -2);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .left-2 {\n left: calc(var(--spacing) * 2);\n }\n .left-\\[50\\%\\] {\n left: 50%;\n }\n .z-10 {\n z-index: 10;\n }\n .z-50 {\n z-index: 50;\n }\n .order-3 {\n order: 3;\n }\n .order-4 {\n order: 4;\n }\n .order-5 {\n order: 5;\n }\n .order-6 {\n order: 6;\n }\n .order-7 {\n order: 7;\n }\n .order-first {\n order: -9999;\n }\n .col-span-2 {\n grid-column: span 2 / span 2;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .-m-0\\.5 {\n margin: calc(var(--spacing) * -0.5);\n }\n .-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n .my-2 {\n margin-block: calc(var(--spacing) * 2);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-8 {\n margin-top: calc(var(--spacing) * 8);\n }\n .-mb-0\\.5 {\n margin-bottom: calc(var(--spacing) * -0.5);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n .ml-auto {\n margin-left: auto;\n }\n .line-clamp-1 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline-flex {\n display: inline-flex;\n }\n .aspect-square {\n aspect-ratio: 1 / 1;\n }\n .size-2 {\n width: calc(var(--spacing) * 2);\n height: calc(var(--spacing) * 2);\n }\n .size-3 {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n .size-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n .size-4 {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n .size-5 {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n }\n .size-9 {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n .size-16 {\n width: calc(var(--spacing) * 16);\n height: calc(var(--spacing) * 16);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-3\\.5 {\n height: calc(var(--spacing) * 3.5);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-\\[18px\\] {\n height: 18px;\n }\n .h-\\[20px\\] {\n height: 20px;\n }\n .h-\\[306\\.08px\\] {\n height: 306.08px;\n }\n .h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n }\n .h-auto {\n height: auto;\n }\n .h-auto\\! {\n height: auto !important;\n }\n .h-full {\n height: 100%;\n }\n .h-px {\n height: 1px;\n }\n .max-h-\\(--radix-dropdown-menu-content-available-height\\) {\n max-height: var(--radix-dropdown-menu-content-available-height);\n }\n .max-h-96 {\n max-height: calc(var(--spacing) * 96);\n }\n .max-h-\\[200px\\] {\n max-height: 200px;\n }\n .max-h-\\[300px\\] {\n max-height: 300px;\n }\n .min-h-full {\n min-height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .w-0 {\n width: calc(var(--spacing) * 0);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-28 {\n width: calc(var(--spacing) * 28);\n }\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n .w-40 {\n width: calc(var(--spacing) * 40);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-fit {\n width: -moz-fit-content;\n width: fit-content;\n }\n .w-full {\n width: 100%;\n }\n .max-w-\\[1200px\\] {\n max-width: 1200px;\n }\n .max-w-\\[calc\\(100\\%-2rem\\)\\] {\n max-width: calc(100% - 2rem);\n }\n .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n .min-w-\\[--radix-popper-anchor-width\\] {\n min-width: --radix-popper-anchor-width;\n }\n .min-w-\\[8rem\\] {\n min-width: 8rem;\n }\n .min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n }\n .flex-1 {\n flex: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .flex-grow {\n flex-grow: 1;\n }\n .origin-\\(--radix-dropdown-menu-content-transform-origin\\) {\n transform-origin: var(--radix-dropdown-menu-content-transform-origin);\n }\n .origin-\\(--radix-popover-content-transform-origin\\) {\n transform-origin: var(--radix-popover-content-transform-origin);\n }\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .rotate-180 {\n rotate: 180deg;\n }\n .transform-none\\! {\n transform: none !important;\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-default {\n cursor: default;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .resize {\n resize: both;\n }\n .scroll-my-1 {\n scroll-margin-block: calc(var(--spacing) * 1);\n }\n .scroll-py-1 {\n scroll-padding-block: calc(var(--spacing) * 1);\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-col-reverse {\n flex-direction: column-reverse;\n }\n .items-center {\n align-items: center;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .gap-0 {\n gap: calc(var(--spacing) * 0);\n }\n .gap-0\\.5 {\n gap: calc(var(--spacing) * 0.5);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .gap-5 {\n gap: calc(var(--spacing) * 5);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .gap-\\[10px\\] {\n gap: 10px;\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded-\\[4px\\] {\n border-radius: 4px;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius);\n }\n .rounded-md {\n border-radius: calc(var(--radius) - 2px);\n }\n .rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n }\n .rounded-xs {\n border-radius: var(--radius-xs);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-input {\n border-color: var(--input);\n }\n .border-primary {\n border-color: var(--primary);\n }\n .bg-accent {\n background-color: var(--accent);\n }\n .bg-background {\n background-color: var(--background);\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-border {\n background-color: var(--border);\n }\n .bg-destructive {\n background-color: var(--destructive);\n }\n .bg-muted {\n background-color: var(--muted);\n }\n .bg-popover {\n background-color: var(--popover);\n }\n .bg-primary {\n background-color: var(--primary);\n }\n .bg-secondary {\n background-color: var(--secondary);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .fill-current {\n fill: currentcolor;\n }\n .fill-primary {\n fill: var(--primary);\n }\n .object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n }\n .p-0 {\n padding: calc(var(--spacing) * 0);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-6 {\n padding-block: calc(var(--spacing) * 6);\n }\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pt-8 {\n padding-top: calc(var(--spacing) * 8);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-8 {\n padding-right: calc(var(--spacing) * 8);\n }\n .pb-1 {\n padding-bottom: calc(var(--spacing) * 1);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .text-center {\n text-align: center;\n }\n .text-right {\n text-align: right;\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .text-ellipsis {\n text-overflow: ellipsis;\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .text-background {\n color: var(--background);\n }\n .text-current {\n color: currentcolor;\n }\n .text-destructive {\n color: var(--destructive);\n }\n .text-destructive-foreground {\n color: var(--destructive-foreground);\n }\n .text-foreground {\n color: var(--foreground);\n }\n .text-muted-foreground {\n color: var(--muted-foreground);\n }\n .text-popover-foreground {\n color: var(--popover-foreground);\n }\n .text-primary {\n color: var(--primary);\n }\n .text-primary-foreground {\n color: var(--primary-foreground);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-secondary-foreground {\n color: var(--secondary-foreground);\n }\n .text-white {\n color: var(--color-white);\n }\n .line-through {\n text-decoration-line: line-through;\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-70 {\n opacity: 70%;\n }\n .opacity-100 {\n opacity: 100%;\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-offset-background {\n --tw-ring-offset-color: var(--background);\n }\n .outline-hidden {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[color\\,box-shadow\\] {\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-none {\n transition-property: none;\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n .duration-200 {\n animation-duration: 200ms;\n }\n .group-data-\\[disabled\\=true\\]\\:pointer-events-none {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n pointer-events: none;\n }\n }\n .group-data-\\[disabled\\=true\\]\\:opacity-50 {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .peer-disabled\\:cursor-not-allowed {\n &:is(:where(.peer):disabled ~ *) {\n cursor: not-allowed;\n }\n }\n .peer-disabled\\:opacity-50 {\n &:is(:where(.peer):disabled ~ *) {\n opacity: 50%;\n }\n }\n .selection\\:bg-primary {\n & *::-moz-selection {\n background-color: var(--primary);\n }\n & *::selection {\n background-color: var(--primary);\n }\n &::-moz-selection {\n background-color: var(--primary);\n }\n &::selection {\n background-color: var(--primary);\n }\n }\n .selection\\:text-primary-foreground {\n & *::-moz-selection {\n color: var(--primary-foreground);\n }\n & *::selection {\n color: var(--primary-foreground);\n }\n &::-moz-selection {\n color: var(--primary-foreground);\n }\n &::selection {\n color: var(--primary-foreground);\n }\n }\n .file\\:inline-flex {\n &::file-selector-button {\n display: inline-flex;\n }\n }\n .file\\:h-7 {\n &::file-selector-button {\n height: calc(var(--spacing) * 7);\n }\n }\n .file\\:border-0 {\n &::file-selector-button {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .file\\:bg-transparent {\n &::file-selector-button {\n background-color: transparent;\n }\n }\n .file\\:text-sm {\n &::file-selector-button {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .file\\:font-medium {\n &::file-selector-button {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .file\\:text-foreground {\n &::file-selector-button {\n color: var(--foreground);\n }\n }\n .placeholder\\:text-muted-foreground {\n &::-moz-placeholder {\n color: var(--muted-foreground);\n }\n &::placeholder {\n color: var(--muted-foreground);\n }\n }\n .hover\\:bg-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n .hover\\:bg-destructive\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n }\n }\n }\n .hover\\:bg-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--secondary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:text-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n .hover\\:text-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--foreground);\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:opacity-100 {\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .focus\\:bg-accent {\n &:focus {\n background-color: var(--accent);\n }\n }\n .focus\\:text-accent-foreground {\n &:focus {\n color: var(--accent-foreground);\n }\n }\n .focus\\:ring-1 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-ring {\n &:focus {\n --tw-ring-color: var(--ring);\n }\n }\n .focus\\:ring-offset-2 {\n &:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:outline-hidden {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .focus-visible\\:border-ring {\n &:focus-visible {\n border-color: var(--ring);\n }\n }\n .focus-visible\\:ring-\\[3px\\] {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-destructive\\/20 {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .focus-visible\\:ring-ring\\/50 {\n &:focus-visible {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .disabled\\:pointer-events-none {\n &:disabled {\n pointer-events: none;\n }\n }\n .disabled\\:cursor-not-allowed {\n &:disabled {\n cursor: not-allowed;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .has-\\[\\>svg\\]\\:px-2\\.5 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n }\n .has-\\[\\>svg\\]\\:px-3 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>svg\\]\\:px-4 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n }\n .aria-invalid\\:border-destructive {\n &[aria-invalid=\"true\"] {\n border-color: var(--destructive);\n }\n }\n .aria-invalid\\:ring-destructive\\/20 {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .data-\\[disabled\\]\\:pointer-events-none {\n &[data-disabled] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\]\\:opacity-50 {\n &[data-disabled] {\n opacity: 50%;\n }\n }\n .data-\\[disabled\\=true\\]\\:pointer-events-none {\n &[data-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\=true\\]\\:opacity-50 {\n &[data-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .data-\\[error\\=true\\]\\:text-destructive-foreground {\n &[data-error=\"true\"] {\n color: var(--destructive-foreground);\n }\n }\n .data-\\[inset\\]\\:pl-8 {\n &[data-inset] {\n padding-left: calc(var(--spacing) * 8);\n }\n }\n .data-\\[placeholder\\]\\:text-muted-foreground {\n &[data-placeholder] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[selected\\=true\\]\\:bg-accent {\n &[data-selected=\"true\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[selected\\=true\\]\\:text-accent-foreground {\n &[data-selected=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[side\\=bottom\\]\\:translate-y-1 {\n &[data-side=\"bottom\"] {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=bottom\\]\\:slide-in-from-top-2 {\n &[data-side=\"bottom\"] {\n --tw-enter-translate-y: -0.5rem;\n }\n }\n .data-\\[side\\=left\\]\\:-translate-x-1 {\n &[data-side=\"left\"] {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=left\\]\\:slide-in-from-right-2 {\n &[data-side=\"left\"] {\n --tw-enter-translate-x: 0.5rem;\n }\n }\n .data-\\[side\\=right\\]\\:translate-x-1 {\n &[data-side=\"right\"] {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=right\\]\\:slide-in-from-left-2 {\n &[data-side=\"right\"] {\n --tw-enter-translate-x: -0.5rem;\n }\n }\n .data-\\[side\\=top\\]\\:-translate-y-1 {\n &[data-side=\"top\"] {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=top\\]\\:slide-in-from-bottom-2 {\n &[data-side=\"top\"] {\n --tw-enter-translate-y: 0.5rem;\n }\n }\n .\\*\\*\\:data-\\[slot\\=command-input-wrapper\\]\\:h-12 {\n :is(& *) {\n &[data-slot=\"command-input-wrapper\"] {\n height: calc(var(--spacing) * 12);\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:flex {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n display: flex;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:items-center {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n align-items: center;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:gap-2 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n .data-\\[state\\=checked\\]\\:border-primary {\n &[data-state=\"checked\"] {\n border-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:bg-primary {\n &[data-state=\"checked\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:text-primary-foreground {\n &[data-state=\"checked\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[state\\=closed\\]\\:animate-out {\n &[data-state=\"closed\"] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n }\n }\n .data-\\[state\\=closed\\]\\:fade-out-0 {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[state\\=closed\\]\\:zoom-out-95 {\n &[data-state=\"closed\"] {\n --tw-exit-scale: .95;\n }\n }\n .data-\\[state\\=open\\]\\:bg-accent {\n &[data-state=\"open\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[state\\=open\\]\\:text-accent-foreground {\n &[data-state=\"open\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:text-muted-foreground {\n &[data-state=\"open\"] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:animate-in {\n &[data-state=\"open\"] {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n }\n }\n .data-\\[state\\=open\\]\\:fade-in-0 {\n &[data-state=\"open\"] {\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[state\\=open\\]\\:zoom-in-95 {\n &[data-state=\"open\"] {\n --tw-enter-scale: .95;\n }\n }\n .data-\\[variant\\=destructive\\]\\:text-destructive {\n &[data-variant=\"destructive\"] {\n color: var(--destructive);\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/10 {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 10%, transparent);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:text-destructive {\n &[data-variant=\"destructive\"] {\n &:focus {\n color: var(--destructive);\n }\n }\n }\n .max-md\\:cursor-pointer {\n @media (width < 48rem) {\n cursor: pointer;\n }\n }\n .max-sm\\:hidden {\n @media (width < 40rem) {\n display: none;\n }\n }\n .min-\\[480px\\]\\:h-\\[228\\.56px\\] {\n @media (width >= 480px) {\n height: 228.56px;\n }\n }\n .sm\\:max-h-\\[270px\\] {\n @media (width >= 40rem) {\n max-height: 270px;\n }\n }\n .sm\\:max-w-\\[500px\\] {\n @media (width >= 40rem) {\n max-width: 500px;\n }\n }\n .sm\\:max-w-lg {\n @media (width >= 40rem) {\n max-width: var(--container-lg);\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .sm\\:justify-end {\n @media (width >= 40rem) {\n justify-content: flex-end;\n }\n }\n .sm\\:text-left {\n @media (width >= 40rem) {\n text-align: left;\n }\n }\n .md\\:order-last {\n @media (width >= 48rem) {\n order: 9999;\n }\n }\n .md\\:order-none {\n @media (width >= 48rem) {\n order: 0;\n }\n }\n .md\\:col-span-2 {\n @media (width >= 48rem) {\n grid-column: span 2 / span 2;\n }\n }\n .md\\:col-span-3 {\n @media (width >= 48rem) {\n grid-column: span 3 / span 3;\n }\n }\n .md\\:col-span-4 {\n @media (width >= 48rem) {\n grid-column: span 4 / span 4;\n }\n }\n .md\\:block {\n @media (width >= 48rem) {\n display: block;\n }\n }\n .md\\:flex {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n .md\\:grid {\n @media (width >= 48rem) {\n display: grid;\n }\n }\n .md\\:hidden {\n @media (width >= 48rem) {\n display: none;\n }\n }\n .md\\:max-w-\\[75\\%\\] {\n @media (width >= 48rem) {\n max-width: 75%;\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-7 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n }\n .md\\:gap-0 {\n @media (width >= 48rem) {\n gap: calc(var(--spacing) * 0);\n }\n }\n .md\\:px-8 {\n @media (width >= 48rem) {\n padding-inline: calc(var(--spacing) * 8);\n }\n }\n .md\\:py-12 {\n @media (width >= 48rem) {\n padding-block: calc(var(--spacing) * 12);\n }\n }\n .md\\:text-sm {\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .dark\\:focus-visible\\:ring-destructive\\/40 {\n @media (prefers-color-scheme: dark) {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:aria-invalid\\:ring-destructive\\/40 {\n @media (prefers-color-scheme: dark) {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20 {\n @media (prefers-color-scheme: dark) {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 {\n & [cmdk-group-heading] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 {\n & [cmdk-group-heading] {\n padding-block: calc(var(--spacing) * 1.5);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs {\n & [cmdk-group-heading] {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium {\n & [cmdk-group-heading] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground {\n & [cmdk-group-heading] {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\]\\:px-2 {\n & [cmdk-group] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 {\n & [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 {\n & [cmdk-input-wrapper] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 {\n & [cmdk-input-wrapper] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input\\]\\]\\:h-12 {\n & [cmdk-input] {\n height: calc(var(--spacing) * 12);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:px-2 {\n & [cmdk-item] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:py-3 {\n & [cmdk-item] {\n padding-block: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 {\n & [cmdk-item] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 {\n & [cmdk-item] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_svg\\]\\:pointer-events-none {\n & svg {\n pointer-events: none;\n }\n }\n .\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'text-\\'\\]\\)\\]\\:text-muted-foreground {\n & svg:not([class*='text-']) {\n color: var(--muted-foreground);\n }\n }\n .\\*\\:\\[span\\]\\:last\\:flex {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n display: flex;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:items-center {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n align-items: center;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:gap-2 {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:\\*\\:\\[svg\\]\\:\\!text-destructive {\n &[data-variant=\"destructive\"] {\n :is(& > *) {\n &:is(svg) {\n color: var(--destructive) !important;\n }\n }\n }\n }\n .\\[\\&\\>span\\]\\:line-clamp-1 {\n &>span {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n }\n}\n:root {\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0 0);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0 0);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0 0);\n --primary: oklch(0.205 0 0);\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(0.577 0.245 27.325);\n --border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.708 0 0);\n --chart-1: oklch(0.646 0.222 41.116);\n --chart-2: oklch(0.6 0.118 184.704);\n --chart-3: oklch(0.398 0.07 227.392);\n --chart-4: oklch(0.828 0.189 84.429);\n --chart-5: oklch(0.769 0.188 70.08);\n --radius: 0.625rem;\n --sidebar: oklch(0.985 0 0);\n --sidebar-foreground: oklch(0.145 0 0);\n --sidebar-primary: oklch(0.205 0 0);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.97 0 0);\n --sidebar-accent-foreground: oklch(0.205 0 0);\n --sidebar-border: oklch(0.922 0 0);\n --sidebar-ring: oklch(0.708 0 0);\n}\n@layer base {\n * {\n border-color: var(--border);\n outline-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n outline-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n .checkout-embed {\n background-color: var(--background);\n font-family: var(--font-sans), Helvetica, Arial, apple-system, sans-serif;\n color: var(--foreground);\n }\n h2 {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n p {\n --tw-tracking: var(--tracking-tight) !important;\n letter-spacing: var(--tracking-tight) !important;\n }\n}\n@layer utilities {\n .scrollbar-hidden {\n scrollbar-width: none;\n }\n .scrollbar-hidden::-webkit-scrollbar {\n display: none;\n }\n}\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n 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));\n }\n}\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n 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));\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-duration: initial;\n }\n }\n}\n";
|
|
10669
|
+
|
|
10670
|
+
const IframeWrapper = React__default.memo(({ children, iframeRef, wrapperRef }) => {
|
|
10671
|
+
const styleRef = useRef(null);
|
|
10672
|
+
const rootRef = useRef(null);
|
|
10673
|
+
// inject your global CSS into the iframe’s <head>
|
|
10674
|
+
const injectStyles = useCallback((doc) => {
|
|
10675
|
+
if (styleRef.current)
|
|
10676
|
+
styleRef.current.remove();
|
|
10677
|
+
const styleEl = doc.createElement("style");
|
|
10678
|
+
styleEl.textContent = css_248z;
|
|
10679
|
+
doc.head.appendChild(styleEl);
|
|
10680
|
+
styleRef.current = styleEl;
|
|
10681
|
+
}, []);
|
|
10682
|
+
const handleLoad = useCallback(() => {
|
|
10683
|
+
const iframe = iframeRef.current;
|
|
10684
|
+
const doc = iframe.contentDocument;
|
|
10685
|
+
injectStyles(doc);
|
|
10686
|
+
// create a container for React inside the iframe
|
|
10687
|
+
let mountPoint = doc.getElementById("__react_mount__");
|
|
10688
|
+
if (!mountPoint) {
|
|
10689
|
+
mountPoint = doc.createElement("div");
|
|
10690
|
+
mountPoint.id = "__react_mount__";
|
|
10691
|
+
doc.body.appendChild(mountPoint);
|
|
10692
|
+
}
|
|
10693
|
+
// createRoot *once*
|
|
10694
|
+
if (!rootRef.current) {
|
|
10695
|
+
rootRef.current = ReactDOM.createRoot(mountPoint);
|
|
10696
|
+
}
|
|
10697
|
+
// render your tree inside the iframe’s React root,
|
|
10698
|
+
// wrapped in a MotionConfig so MotionOne binds to the iframe’s window/document
|
|
10699
|
+
rootRef.current.render(React__default.createElement(MotionConfig, null, children));
|
|
10700
|
+
}, [children, iframeRef, injectStyles]);
|
|
10701
|
+
useLayoutEffect(() => {
|
|
10702
|
+
var _a;
|
|
10703
|
+
const iframe = iframeRef.current;
|
|
10704
|
+
if (!iframe)
|
|
10705
|
+
return;
|
|
10706
|
+
iframe.addEventListener("load", handleLoad);
|
|
10707
|
+
// If the iframe is already loaded (cache, SSR, etc.)
|
|
10708
|
+
if (((_a = iframe.contentDocument) === null || _a === void 0 ? void 0 : _a.readyState) === "complete") {
|
|
10709
|
+
handleLoad();
|
|
10710
|
+
}
|
|
10711
|
+
return () => {
|
|
10712
|
+
var _a, _b;
|
|
10713
|
+
iframe.removeEventListener("load", handleLoad);
|
|
10714
|
+
// unmount React on teardown
|
|
10715
|
+
(_a = rootRef.current) === null || _a === void 0 ? void 0 : _a.unmount();
|
|
10716
|
+
(_b = styleRef.current) === null || _b === void 0 ? void 0 : _b.remove();
|
|
10717
|
+
};
|
|
10718
|
+
}, [iframeRef, handleLoad]);
|
|
10719
|
+
return (React__default.createElement("div", { ref: wrapperRef, className: "w-full max-w-[1200px] min-h-screen mx-auto overflow-y-auto overflow-x-hidden relative" },
|
|
10720
|
+
React__default.createElement("iframe", { ref: iframeRef, className: "w-full min-h-screen border-0", sandbox: "allow-same-origin allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-top-navigation" })));
|
|
10721
|
+
});
|
|
10722
|
+
IframeWrapper.displayName = "IframeWrapper";
|
|
10723
|
+
|
|
10724
|
+
var M=(e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n);}),R(n);}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n);}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y);}catch(n){}};var x=React.createContext(void 0),U={setTheme:e=>{},themes:[]},z=()=>{var e;return (e=React.useContext(x))!=null?e:U};React.memo(({forcedTheme:e,storageKey:i,attribute:s,enableSystem:u,enableColorScheme:m,defaultTheme:a,value:l,themes:h,nonce:d,scriptProps:w})=>{let p=JSON.stringify([s,i,a,e,h,l,u,m]).slice(1,-1);return React.createElement("script",{...w,suppressHydrationWarning:true,nonce:typeof window=="undefined"?d:"",dangerouslySetInnerHTML:{__html:`(${M.toString()})(${p})`}})});
|
|
10725
|
+
|
|
10726
|
+
const Toaster = (_a) => {
|
|
10727
|
+
var props = __rest(_a, []);
|
|
10728
|
+
const { theme = "system" } = z();
|
|
10729
|
+
return (React__default.createElement(Toaster$1, Object.assign({ theme: theme, className: "toaster group", style: {
|
|
10730
|
+
"--normal-bg": "var(--popover)",
|
|
10731
|
+
"--normal-text": "var(--popover-foreground)",
|
|
10732
|
+
"--normal-border": "var(--border)",
|
|
10733
|
+
} }, props)));
|
|
10734
|
+
};
|
|
10735
|
+
|
|
10736
|
+
const appearance = {
|
|
10737
|
+
variables: {
|
|
10738
|
+
fontFamily: '-apple-system, BlinkMacSystemFont, "Geist", "Gill Sans", sans-serif'}};
|
|
10739
|
+
|
|
10740
|
+
function Appearance({ appearance, fonts, iframeRef, }) {
|
|
10741
|
+
useEffect(() => {
|
|
10742
|
+
var _a;
|
|
10743
|
+
if (!(iframeRef === null || iframeRef === void 0 ? void 0 : iframeRef.current))
|
|
10744
|
+
return;
|
|
10745
|
+
try {
|
|
10746
|
+
const variables = getVariablesFromAppearanceConfig(appearance);
|
|
10747
|
+
const iframeDoc = iframeRef.current.contentDocument ||
|
|
10748
|
+
((_a = iframeRef.current.contentWindow) === null || _a === void 0 ? void 0 : _a.document);
|
|
10749
|
+
if (!iframeDoc) {
|
|
10750
|
+
console.warn("Unable to access iframe document");
|
|
10751
|
+
return;
|
|
10752
|
+
}
|
|
10753
|
+
if (variables) {
|
|
10754
|
+
Object.entries(variables).forEach(([key, value]) => {
|
|
10755
|
+
iframeDoc.documentElement.style.setProperty(key, value);
|
|
10756
|
+
});
|
|
10757
|
+
}
|
|
10758
|
+
// Load fonts if provided
|
|
10759
|
+
if (fonts) {
|
|
10760
|
+
fonts.forEach((font) => {
|
|
10761
|
+
try {
|
|
10762
|
+
if ("cssSrc" in font) {
|
|
10763
|
+
// Handle CSS font source
|
|
10764
|
+
const link = iframeDoc.createElement("link");
|
|
10765
|
+
link.rel = "stylesheet";
|
|
10766
|
+
link.href = font.cssSrc;
|
|
10767
|
+
iframeDoc.head.appendChild(link);
|
|
10768
|
+
}
|
|
10769
|
+
else if ("family" in font) {
|
|
10770
|
+
// Handle custom font source
|
|
10771
|
+
const style = iframeDoc.createElement("style");
|
|
10772
|
+
style.textContent = `
|
|
10773
|
+
@font-face {
|
|
10774
|
+
font-family: '${font.family}';
|
|
10775
|
+
src: ${font.src};
|
|
10776
|
+
font-weight: ${font.weight || "normal"};
|
|
10777
|
+
font-style: ${font.style || "normal"};
|
|
10778
|
+
}
|
|
10779
|
+
`;
|
|
10780
|
+
iframeDoc.head.appendChild(style);
|
|
10781
|
+
}
|
|
10782
|
+
}
|
|
10783
|
+
catch (error) {
|
|
10784
|
+
console.error("Error loading font:", error);
|
|
10785
|
+
}
|
|
10786
|
+
});
|
|
10787
|
+
}
|
|
10788
|
+
}
|
|
10789
|
+
catch (error) {
|
|
10790
|
+
console.error("Error applying appearance styles:", error);
|
|
10791
|
+
}
|
|
10792
|
+
}, [appearance, fonts, iframeRef]);
|
|
10793
|
+
return null;
|
|
10794
|
+
}
|
|
10795
|
+
const getVariablesFromAppearanceConfig = (appearance) => {
|
|
10796
|
+
var _a;
|
|
10797
|
+
const colors = getColorVariablesFromAppearanceConfig(appearance);
|
|
10798
|
+
const definedAppearance = Object.assign(Object.assign({}, colors), { "--font-sans": (_a = appearance === null || appearance === void 0 ? void 0 : appearance.font) !== null && _a !== void 0 ? _a : '-apple-system, BlinkMacSystemFont, "Helvetica", "Gill Sans", "Inter", sans-serif', "--radius": (appearance === null || appearance === void 0 ? void 0 : appearance.borderRadius)
|
|
10799
|
+
? `${appearance.borderRadius}rem`
|
|
10800
|
+
: "0.625rem" });
|
|
10801
|
+
return definedAppearance;
|
|
10802
|
+
};
|
|
10803
|
+
const getColorVariablesFromAppearanceConfig = (appearance) => {
|
|
10804
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27;
|
|
10805
|
+
// Determine if we're using dark theme
|
|
10806
|
+
const isDark = (appearance === null || appearance === void 0 ? void 0 : appearance.theme) === "dark";
|
|
10807
|
+
// Define fallback colors based on theme
|
|
10808
|
+
const fallbackColors = {
|
|
10809
|
+
background: isDark ? "oklch(0.145 0 0)" : "oklch(1 0 0)",
|
|
10810
|
+
foreground: isDark ? "oklch(0.985 0 0)" : "oklch(0.145 0 0)",
|
|
10811
|
+
card: isDark ? "oklch(0.145 0 0)" : "oklch(1 0 0)",
|
|
10812
|
+
cardForeground: isDark ? "oklch(0.985 0 0)" : "oklch(0.145 0 0)",
|
|
10813
|
+
primary: isDark ? "oklch(0.985 0 0)" : "oklch(0.205 0 0)",
|
|
10814
|
+
primaryForeground: isDark ? "oklch(0.205 0 0)" : "oklch(0.985 0 0)",
|
|
10815
|
+
secondary: isDark ? "oklch(0.269 0 0)" : "oklch(0.97 0 0)",
|
|
10816
|
+
secondaryForeground: isDark ? "oklch(0.985 0 0)" : "oklch(0.205 0 0)",
|
|
10817
|
+
muted: isDark ? "oklch(0.269 0 0)" : "oklch(0.97 0 0)",
|
|
10818
|
+
mutedForeground: isDark ? "oklch(0.708 0 0)" : "oklch(0.556 0 0)",
|
|
10819
|
+
accent: isDark ? "oklch(0.269 0 0)" : "oklch(0.97 0 0)",
|
|
10820
|
+
accentForeground: isDark ? "oklch(0.985 0 0)" : "oklch(0.205 0 0)",
|
|
10821
|
+
destructive: isDark
|
|
10822
|
+
? "oklch(0.396 0.141 25.723)"
|
|
10823
|
+
: "oklch(0.577 0.245 27.325)",
|
|
10824
|
+
destructiveForeground: isDark
|
|
10825
|
+
? "oklch(0.637 0.237 25.331)"
|
|
10826
|
+
: "oklch(0.577 0.245 27.325)",
|
|
10827
|
+
border: isDark ? "oklch(0.269 0 0)" : "oklch(0.922 0 0)",
|
|
10828
|
+
ring: isDark ? "oklch(0.439 0 0)" : "oklch(0.708 0 0)",
|
|
10829
|
+
sidebar: isDark ? "oklch(0.205 0 0)" : "oklch(0.985 0 0)",
|
|
10830
|
+
sidebarForeground: isDark ? "oklch(0.985 0 0)" : "oklch(0.145 0 0)",
|
|
10831
|
+
sidebarPrimary: isDark ? "oklch(0.488 0.243 264.376)" : "oklch(0.205 0 0)",
|
|
10832
|
+
sidebarPrimaryForeground: isDark ? "oklch(0.985 0 0)" : "oklch(0.985 0 0)",
|
|
10833
|
+
};
|
|
10834
|
+
const colors = {
|
|
10835
|
+
"--background": (_b = (_a = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _a === void 0 ? void 0 : _a.background) !== null && _b !== void 0 ? _b : fallbackColors.background,
|
|
10836
|
+
"--foreground": (_d = (_c = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _c === void 0 ? void 0 : _c.foreground) !== null && _d !== void 0 ? _d : fallbackColors.foreground,
|
|
10837
|
+
// Card (reusing background/foreground)
|
|
10838
|
+
"--card": (_f = (_e = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _e === void 0 ? void 0 : _e.background) !== null && _f !== void 0 ? _f : fallbackColors.card,
|
|
10839
|
+
"--card-foreground": (_h = (_g = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _g === void 0 ? void 0 : _g.foreground) !== null && _h !== void 0 ? _h : fallbackColors.cardForeground,
|
|
10840
|
+
// Popover (reusing background/foreground)
|
|
10841
|
+
"--popover": (_k = (_j = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _j === void 0 ? void 0 : _j.background) !== null && _k !== void 0 ? _k : fallbackColors.background,
|
|
10842
|
+
"--popover-foreground": (_m = (_l = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _l === void 0 ? void 0 : _l.foreground) !== null && _m !== void 0 ? _m : fallbackColors.foreground,
|
|
10843
|
+
// Primary
|
|
10844
|
+
"--primary": (_p = (_o = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _o === void 0 ? void 0 : _o.primary) !== null && _p !== void 0 ? _p : fallbackColors.primary,
|
|
10845
|
+
"--primary-foreground": (_r = (_q = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _q === void 0 ? void 0 : _q.primaryForeground) !== null && _r !== void 0 ? _r : fallbackColors.primaryForeground,
|
|
10846
|
+
// Secondary
|
|
10847
|
+
"--secondary": (_t = (_s = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _s === void 0 ? void 0 : _s.secondary) !== null && _t !== void 0 ? _t : fallbackColors.secondary,
|
|
10848
|
+
"--secondary-foreground": (_v = (_u = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _u === void 0 ? void 0 : _u.secondaryForeground) !== null && _v !== void 0 ? _v : fallbackColors.secondaryForeground,
|
|
10849
|
+
// Muted
|
|
10850
|
+
"--muted": (_x = (_w = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _w === void 0 ? void 0 : _w.muted) !== null && _x !== void 0 ? _x : fallbackColors.muted,
|
|
10851
|
+
"--muted-foreground": (_z = (_y = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _y === void 0 ? void 0 : _y.mutedForeground) !== null && _z !== void 0 ? _z : fallbackColors.mutedForeground,
|
|
10852
|
+
// Accent
|
|
10853
|
+
"--accent": (_1 = (_0 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _0 === void 0 ? void 0 : _0.accent) !== null && _1 !== void 0 ? _1 : fallbackColors.accent,
|
|
10854
|
+
"--accent-foreground": (_3 = (_2 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _2 === void 0 ? void 0 : _2.accentForeground) !== null && _3 !== void 0 ? _3 : fallbackColors.accentForeground,
|
|
10855
|
+
// Destructive
|
|
10856
|
+
"--destructive": (_5 = (_4 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _4 === void 0 ? void 0 : _4.destructive) !== null && _5 !== void 0 ? _5 : fallbackColors.destructive,
|
|
10857
|
+
"--destructive-foreground": fallbackColors.destructiveForeground,
|
|
10858
|
+
// Border and Input
|
|
10859
|
+
"--border": (_7 = (_6 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _6 === void 0 ? void 0 : _6.border) !== null && _7 !== void 0 ? _7 : fallbackColors.border,
|
|
10860
|
+
"--input": (_9 = (_8 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _8 === void 0 ? void 0 : _8.border) !== null && _9 !== void 0 ? _9 : fallbackColors.border,
|
|
10861
|
+
"--ring": (_11 = (_10 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _10 === void 0 ? void 0 : _10.ring) !== null && _11 !== void 0 ? _11 : fallbackColors.ring,
|
|
10862
|
+
// Chart colors (keeping original values)
|
|
10863
|
+
"--chart-1": isDark
|
|
10864
|
+
? "oklch(0.488 0.243 264.376)"
|
|
10865
|
+
: "oklch(0.646 0.222 41.116)",
|
|
10866
|
+
"--chart-2": isDark
|
|
10867
|
+
? "oklch(0.696 0.17 162.48)"
|
|
10868
|
+
: "oklch(0.6 0.118 184.704)",
|
|
10869
|
+
"--chart-3": isDark
|
|
10870
|
+
? "oklch(0.769 0.188 70.08)"
|
|
10871
|
+
: "oklch(0.398 0.07 227.392)",
|
|
10872
|
+
"--chart-4": isDark
|
|
10873
|
+
? "oklch(0.627 0.265 303.9)"
|
|
10874
|
+
: "oklch(0.828 0.189 84.429)",
|
|
10875
|
+
"--chart-5": isDark
|
|
10876
|
+
? "oklch(0.645 0.246 16.439)"
|
|
10877
|
+
: "oklch(0.769 0.188 70.08)",
|
|
10878
|
+
// Sidebar
|
|
10879
|
+
"--sidebar": (_13 = (_12 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _12 === void 0 ? void 0 : _12.background) !== null && _13 !== void 0 ? _13 : fallbackColors.sidebar,
|
|
10880
|
+
"--sidebar-foreground": (_15 = (_14 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _14 === void 0 ? void 0 : _14.foreground) !== null && _15 !== void 0 ? _15 : fallbackColors.sidebarForeground,
|
|
10881
|
+
"--sidebar-primary": (_17 = (_16 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _16 === void 0 ? void 0 : _16.primary) !== null && _17 !== void 0 ? _17 : fallbackColors.sidebarPrimary,
|
|
10882
|
+
"--sidebar-primary-foreground": (_19 = (_18 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _18 === void 0 ? void 0 : _18.primaryForeground) !== null && _19 !== void 0 ? _19 : fallbackColors.sidebarPrimaryForeground,
|
|
10883
|
+
"--sidebar-accent": (_21 = (_20 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _20 === void 0 ? void 0 : _20.accent) !== null && _21 !== void 0 ? _21 : fallbackColors.accent,
|
|
10884
|
+
"--sidebar-accent-foreground": (_23 = (_22 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _22 === void 0 ? void 0 : _22.accentForeground) !== null && _23 !== void 0 ? _23 : fallbackColors.accentForeground,
|
|
10885
|
+
"--sidebar-border": (_25 = (_24 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _24 === void 0 ? void 0 : _24.border) !== null && _25 !== void 0 ? _25 : fallbackColors.border,
|
|
10886
|
+
"--sidebar-ring": (_27 = (_26 = appearance === null || appearance === void 0 ? void 0 : appearance.colors) === null || _26 === void 0 ? void 0 : _26.ring) !== null && _27 !== void 0 ? _27 : fallbackColors.ring,
|
|
10887
|
+
};
|
|
10888
|
+
return colors;
|
|
10889
|
+
};
|
|
10890
|
+
const convertCheckoutAppearanceToStripeAppearance = (appearance$1, fonts) => {
|
|
10891
|
+
const currentVariables = getVariablesFromAppearanceConfig(appearance$1);
|
|
10892
|
+
const newAppearance = {
|
|
10893
|
+
theme: "flat",
|
|
10894
|
+
rules: {
|
|
10895
|
+
".Input": {
|
|
10896
|
+
padding: "12px",
|
|
10897
|
+
border: `1px solid ${currentVariables["--border"]}`,
|
|
10898
|
+
backgroundColor: currentVariables["--background"],
|
|
10899
|
+
fontSize: "14px",
|
|
10900
|
+
outline: "none",
|
|
10901
|
+
},
|
|
10902
|
+
".Input:focus": {
|
|
10903
|
+
backgroundColor: currentVariables["--secondary"],
|
|
10904
|
+
},
|
|
10905
|
+
".Input::placeholder": {
|
|
10906
|
+
fontSize: "14px",
|
|
10907
|
+
color: currentVariables["--muted-foreground"],
|
|
10908
|
+
},
|
|
10909
|
+
".Label": {
|
|
10910
|
+
marginBottom: "8px",
|
|
10911
|
+
fontSize: "14px",
|
|
10912
|
+
fontWeight: "500",
|
|
10913
|
+
},
|
|
10914
|
+
".Input:disabled, .Input--invalid:disabled": {
|
|
10915
|
+
cursor: "not-allowed",
|
|
10916
|
+
},
|
|
10917
|
+
// ".Block": {
|
|
10918
|
+
// backgroundColor: "#000000",
|
|
10919
|
+
// boxShadow: "none",
|
|
10920
|
+
// padding: "12px",
|
|
10921
|
+
// },
|
|
10922
|
+
".Tab": {
|
|
10923
|
+
padding: "10px 12px 8px 12px",
|
|
10924
|
+
border: `1px solid ${currentVariables["--border"]}`,
|
|
10925
|
+
backgroundColor: currentVariables["--background"],
|
|
10926
|
+
},
|
|
10927
|
+
".Tab:hover": {
|
|
10928
|
+
backgroundColor: currentVariables["--secondary"],
|
|
10929
|
+
},
|
|
10930
|
+
".Tab--selected, .Tab--selected:focus, .Tab--selected:hover": {
|
|
10931
|
+
border: `1px solid ${currentVariables["--border"]}`,
|
|
10932
|
+
backgroundColor: currentVariables["--secondary"],
|
|
10933
|
+
color: currentVariables["--foreground"],
|
|
10934
|
+
},
|
|
10935
|
+
},
|
|
10936
|
+
variables: {
|
|
10937
|
+
focusOutline: "none",
|
|
10938
|
+
focusBoxShadow: "none",
|
|
10939
|
+
fontFamily: fonts
|
|
10940
|
+
? currentVariables["--font-sans"]
|
|
10941
|
+
: appearance.variables.fontFamily,
|
|
10942
|
+
borderRadius: currentVariables["--radius"],
|
|
10943
|
+
// colorSuccess: currentVariables["--success"],
|
|
10944
|
+
// colorWarning: currentVariables["--warning"],
|
|
10945
|
+
colorDanger: currentVariables["--destructive"],
|
|
10946
|
+
colorBackground: currentVariables["--background"],
|
|
10947
|
+
colorPrimary: currentVariables["--primary"],
|
|
10948
|
+
colorText: currentVariables["--foreground"],
|
|
10949
|
+
colorTextSecondary: currentVariables["--secondary-foreground"],
|
|
10950
|
+
colorTextPlaceholder: currentVariables["--muted-foreground"],
|
|
10951
|
+
},
|
|
10952
|
+
};
|
|
10953
|
+
return newAppearance;
|
|
10954
|
+
};
|
|
10955
|
+
|
|
10956
|
+
const storeHelpers = createStoreHelpers();
|
|
10957
|
+
|
|
10954
10958
|
const phoneRegex = new RegExp(/^([+]?[\s0-9]+)?(\d{3}|[(]?[0-9]+[)])?([-]?[\s]?[0-9])+$/);
|
|
10955
10959
|
// Shipping address schema
|
|
10956
10960
|
const customerSchema = z$1.object({
|
|
@@ -11413,7 +11417,7 @@ const CheckoutForm$1 = ({ onSuccess, onError, children, setSubmitting, wrapperRe
|
|
|
11413
11417
|
return null;
|
|
11414
11418
|
return (React__default.createElement(React__default.Fragment, null,
|
|
11415
11419
|
React__default.createElement("div", { ref: containerRef, className: "w-full h-[306.08px] min-[480px]:h-[228.56px]" }),
|
|
11416
|
-
ReactDOM.createPortal(React__default.createElement("div", { style: {
|
|
11420
|
+
ReactDOM$1.createPortal(React__default.createElement("div", { style: {
|
|
11417
11421
|
display: "block",
|
|
11418
11422
|
zIndex: 20,
|
|
11419
11423
|
position: "absolute",
|