@betterstore/react 0.5.19 → 0.5.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/cart/useCart.d.ts +5 -3
- package/dist/components/cart/useCart.d.ts.map +1 -1
- package/dist/components/checkout-embed/checkout-form.d.ts +2 -1
- package/dist/components/checkout-embed/checkout-form.d.ts.map +1 -1
- package/dist/components/checkout-embed/checkout-schema.d.ts +45 -17
- package/dist/components/checkout-embed/checkout-schema.d.ts.map +1 -1
- package/dist/components/checkout-embed/index.d.ts.map +1 -1
- package/dist/components/checkout-embed/steps/payment/form.d.ts +4 -4
- package/dist/components/checkout-embed/steps/payment/form.d.ts.map +1 -1
- package/dist/components/checkout-embed/steps/shipping/form.d.ts +7 -6
- package/dist/components/checkout-embed/steps/shipping/form.d.ts.map +1 -1
- package/dist/components/checkout-embed/steps/summary/index.d.ts.map +1 -1
- package/dist/components/checkout-embed/useFormStore.d.ts +5 -3
- package/dist/components/checkout-embed/useFormStore.d.ts.map +1 -1
- package/dist/index.cjs.js +332 -150
- package/dist/index.mjs +332 -150
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -25,14 +25,14 @@ const createStoreImpl = (createState) => {
|
|
|
25
25
|
const initialState = state = createState(setState, getState, api);
|
|
26
26
|
return api;
|
|
27
27
|
};
|
|
28
|
-
const createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;
|
|
28
|
+
const createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);
|
|
29
29
|
|
|
30
30
|
const identity$1 = (arg) => arg;
|
|
31
31
|
function useStore(api, selector = identity$1) {
|
|
32
32
|
const slice = React__default.useSyncExternalStore(
|
|
33
33
|
api.subscribe,
|
|
34
|
-
() => selector(api.getState()),
|
|
35
|
-
() => selector(api.getInitialState())
|
|
34
|
+
React__default.useCallback(() => selector(api.getState()), [api, selector]),
|
|
35
|
+
React__default.useCallback(() => selector(api.getInitialState()), [api, selector])
|
|
36
36
|
);
|
|
37
37
|
React__default.useDebugValue(slice);
|
|
38
38
|
return slice;
|
|
@@ -43,7 +43,7 @@ const createImpl = (createState) => {
|
|
|
43
43
|
Object.assign(useBoundStore, api);
|
|
44
44
|
return useBoundStore;
|
|
45
45
|
};
|
|
46
|
-
const create = (createState) => createState ? createImpl(createState) : createImpl;
|
|
46
|
+
const create = ((createState) => createState ? createImpl(createState) : createImpl);
|
|
47
47
|
|
|
48
48
|
function createJSONStorage(getStorage, options) {
|
|
49
49
|
let storage;
|
|
@@ -134,12 +134,12 @@ const persistImpl = (config, baseOptions) => (set, get, api) => {
|
|
|
134
134
|
const savedSetState = api.setState;
|
|
135
135
|
api.setState = (state, replace) => {
|
|
136
136
|
savedSetState(state, replace);
|
|
137
|
-
|
|
137
|
+
return setItem();
|
|
138
138
|
};
|
|
139
139
|
const configResult = config(
|
|
140
140
|
(...args) => {
|
|
141
141
|
set(...args);
|
|
142
|
-
|
|
142
|
+
return setItem();
|
|
143
143
|
},
|
|
144
144
|
get,
|
|
145
145
|
api
|
|
@@ -3071,7 +3071,7 @@ const hasLoadedNamespace = (ns, i18n, options = {}) => {
|
|
|
3071
3071
|
return i18n.hasLoadedNamespace(ns, {
|
|
3072
3072
|
lng: options.lng,
|
|
3073
3073
|
precheck: (i18nInstance, loadNotPending) => {
|
|
3074
|
-
if (options.bindI18n
|
|
3074
|
+
if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;
|
|
3075
3075
|
}
|
|
3076
3076
|
});
|
|
3077
3077
|
};
|
|
@@ -3232,7 +3232,7 @@ const useTranslation = (ns, props = {}) => {
|
|
|
3232
3232
|
if (bindI18nStore) i18n?.store.on(bindI18nStore, boundReset);
|
|
3233
3233
|
return () => {
|
|
3234
3234
|
isMounted.current = false;
|
|
3235
|
-
if (i18n) bindI18n?.split(' ').forEach(e => i18n.off(e, boundReset));
|
|
3235
|
+
if (i18n && bindI18n) bindI18n?.split(' ').forEach(e => i18n.off(e, boundReset));
|
|
3236
3236
|
if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));
|
|
3237
3237
|
};
|
|
3238
3238
|
}, [i18n, joinedNS]);
|
|
@@ -3575,6 +3575,27 @@ const isPlainObject$1 = (val) => {
|
|
|
3575
3575
|
return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);
|
|
3576
3576
|
};
|
|
3577
3577
|
|
|
3578
|
+
/**
|
|
3579
|
+
* Determine if a value is an empty object (safely handles Buffers)
|
|
3580
|
+
*
|
|
3581
|
+
* @param {*} val The value to test
|
|
3582
|
+
*
|
|
3583
|
+
* @returns {boolean} True if value is an empty object, otherwise false
|
|
3584
|
+
*/
|
|
3585
|
+
const isEmptyObject$1 = (val) => {
|
|
3586
|
+
// Early return for non-objects or Buffers to prevent RangeError
|
|
3587
|
+
if (!isObject$1(val) || isBuffer(val)) {
|
|
3588
|
+
return false;
|
|
3589
|
+
}
|
|
3590
|
+
|
|
3591
|
+
try {
|
|
3592
|
+
return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;
|
|
3593
|
+
} catch (e) {
|
|
3594
|
+
// Fallback for any other objects that might cause RangeError with Object.keys()
|
|
3595
|
+
return false;
|
|
3596
|
+
}
|
|
3597
|
+
};
|
|
3598
|
+
|
|
3578
3599
|
/**
|
|
3579
3600
|
* Determine if a value is a Date
|
|
3580
3601
|
*
|
|
@@ -3697,6 +3718,11 @@ function forEach(obj, fn, {allOwnKeys = false} = {}) {
|
|
|
3697
3718
|
fn.call(null, obj[i], i, obj);
|
|
3698
3719
|
}
|
|
3699
3720
|
} else {
|
|
3721
|
+
// Buffer check
|
|
3722
|
+
if (isBuffer(obj)) {
|
|
3723
|
+
return;
|
|
3724
|
+
}
|
|
3725
|
+
|
|
3700
3726
|
// Iterate over object keys
|
|
3701
3727
|
const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
|
|
3702
3728
|
const len = keys.length;
|
|
@@ -3710,6 +3736,10 @@ function forEach(obj, fn, {allOwnKeys = false} = {}) {
|
|
|
3710
3736
|
}
|
|
3711
3737
|
|
|
3712
3738
|
function findKey(obj, key) {
|
|
3739
|
+
if (isBuffer(obj)){
|
|
3740
|
+
return null;
|
|
3741
|
+
}
|
|
3742
|
+
|
|
3713
3743
|
key = key.toLowerCase();
|
|
3714
3744
|
const keys = Object.keys(obj);
|
|
3715
3745
|
let i = keys.length;
|
|
@@ -4063,6 +4093,11 @@ const toJSONObject = (obj) => {
|
|
|
4063
4093
|
return;
|
|
4064
4094
|
}
|
|
4065
4095
|
|
|
4096
|
+
//Buffer check
|
|
4097
|
+
if (isBuffer(source)) {
|
|
4098
|
+
return source;
|
|
4099
|
+
}
|
|
4100
|
+
|
|
4066
4101
|
if(!('toJSON' in source)) {
|
|
4067
4102
|
stack[i] = source;
|
|
4068
4103
|
const target = isArray(source) ? [] : {};
|
|
@@ -4134,6 +4169,7 @@ var utils$1 = {
|
|
|
4134
4169
|
isBoolean: isBoolean$1,
|
|
4135
4170
|
isObject: isObject$1,
|
|
4136
4171
|
isPlainObject: isPlainObject$1,
|
|
4172
|
+
isEmptyObject: isEmptyObject$1,
|
|
4137
4173
|
isReadableStream,
|
|
4138
4174
|
isRequest,
|
|
4139
4175
|
isResponse,
|
|
@@ -4763,7 +4799,7 @@ var platform$1 = {
|
|
|
4763
4799
|
};
|
|
4764
4800
|
|
|
4765
4801
|
function toURLEncodedForm(data, options) {
|
|
4766
|
-
return toFormData$1(data, new platform$1.classes.URLSearchParams(),
|
|
4802
|
+
return toFormData$1(data, new platform$1.classes.URLSearchParams(), {
|
|
4767
4803
|
visitor: function(value, key, path, helpers) {
|
|
4768
4804
|
if (platform$1.isNode && utils$1.isBuffer(value)) {
|
|
4769
4805
|
this.append(key, value.toString('base64'));
|
|
@@ -4771,8 +4807,9 @@ function toURLEncodedForm(data, options) {
|
|
|
4771
4807
|
}
|
|
4772
4808
|
|
|
4773
4809
|
return helpers.defaultVisitor.apply(this, arguments);
|
|
4774
|
-
}
|
|
4775
|
-
|
|
4810
|
+
},
|
|
4811
|
+
...options
|
|
4812
|
+
});
|
|
4776
4813
|
}
|
|
4777
4814
|
|
|
4778
4815
|
/**
|
|
@@ -5521,7 +5558,7 @@ function throttle(fn, freq) {
|
|
|
5521
5558
|
clearTimeout(timer);
|
|
5522
5559
|
timer = null;
|
|
5523
5560
|
}
|
|
5524
|
-
fn
|
|
5561
|
+
fn(...args);
|
|
5525
5562
|
};
|
|
5526
5563
|
|
|
5527
5564
|
const throttled = (...args) => {
|
|
@@ -5777,7 +5814,7 @@ function mergeConfig$1(config1, config2) {
|
|
|
5777
5814
|
headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)
|
|
5778
5815
|
};
|
|
5779
5816
|
|
|
5780
|
-
utils$1.forEach(Object.keys(
|
|
5817
|
+
utils$1.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {
|
|
5781
5818
|
const merge = mergeMap[prop] || mergeDeepProperties;
|
|
5782
5819
|
const configValue = merge(config1[prop], config2[prop], prop);
|
|
5783
5820
|
(utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
|
|
@@ -6516,7 +6553,7 @@ function dispatchRequest(config) {
|
|
|
6516
6553
|
});
|
|
6517
6554
|
}
|
|
6518
6555
|
|
|
6519
|
-
const VERSION$1 = "1.
|
|
6556
|
+
const VERSION$1 = "1.11.0";
|
|
6520
6557
|
|
|
6521
6558
|
const validators$1 = {};
|
|
6522
6559
|
|
|
@@ -6755,8 +6792,8 @@ let Axios$1 = class Axios {
|
|
|
6755
6792
|
|
|
6756
6793
|
if (!synchronousRequestInterceptors) {
|
|
6757
6794
|
const chain = [dispatchRequest.bind(this), undefined];
|
|
6758
|
-
chain.unshift
|
|
6759
|
-
chain.push
|
|
6795
|
+
chain.unshift(...requestInterceptorChain);
|
|
6796
|
+
chain.push(...responseInterceptorChain);
|
|
6760
6797
|
len = chain.length;
|
|
6761
6798
|
|
|
6762
6799
|
promise = Promise.resolve(config);
|
|
@@ -7497,7 +7534,7 @@ function createStoreHelpers(config) {
|
|
|
7497
7534
|
return new helpers_default(config?.proxy);
|
|
7498
7535
|
}
|
|
7499
7536
|
|
|
7500
|
-
var css_248z = "/*! tailwindcss v4.1.11 | 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 --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\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 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 ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\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 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 .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 .top-full {\n top: 100%;\n }\n .-right-2 {\n right: calc(var(--spacing) * -2);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\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-0 {\n z-index: 0;\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 .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 .m-0 {\n margin: calc(var(--spacing) * 0);\n }\n .-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\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-1 {\n margin-top: calc(var(--spacing) * -1);\n }\n .-mt-2 {\n margin-top: calc(var(--spacing) * -2);\n }\n .-mt-4 {\n margin-top: calc(var(--spacing) * -4);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\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-2 {\n margin-bottom: calc(var(--spacing) * -2);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\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-0 {\n height: calc(var(--spacing) * 0);\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-\\[2px\\] {\n height: 2px;\n }\n .h-\\[18px\\] {\n height: 18px;\n }\n .h-\\[20px\\] {\n height: 20px;\n }\n .h-\\[44px\\] {\n height: 44px;\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-max {\n height: max-content;\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-0 {\n max-height: calc(var(--spacing) * 0);\n }\n .max-h-60 {\n max-height: calc(var(--spacing) * 60);\n }\n .max-h-\\[300px\\] {\n max-height: 300px;\n }\n .min-h-full {\n min-height: 100%;\n }\n .w-0 {\n width: calc(var(--spacing) * 0);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\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-full {\n width: 100%;\n }\n .max-w-0 {\n max-width: calc(var(--spacing) * 0);\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-\\[8rem\\] {\n min-width: 8rem;\n }\n .flex-1 {\n flex: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\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-0 {\n --tw-translate-x: calc(var(--spacing) * -0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\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-3 {\n --tw-translate-x: calc(var(--spacing) * -3);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-2 {\n --tw-translate-x: calc(var(--spacing) * 2);\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 .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-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-5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 5) * 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 .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-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-border {\n border-color: var(--border);\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 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-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\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 .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pb-1 {\n padding-bottom: calc(var(--spacing) * 1);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pb-40 {\n padding-bottom: calc(var(--spacing) * 40);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\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 .text-\\[13px\\] {\n font-size: 13px;\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-input {\n color: var(--input);\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-ring {\n color: var(--ring);\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 {\n text-decoration-line: underline;\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 {\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-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-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-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\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 .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n .duration-200 {\n animation-duration: 200ms;\n }\n .ease-in-out {\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\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 .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 &::placeholder {\n color: var(--muted-foreground);\n }\n }\n .after\\:absolute {\n &::after {\n content: var(--tw-content);\n position: absolute;\n }\n }\n .after\\:top-1\\/2 {\n &::after {\n content: var(--tw-content);\n top: calc(1/2 * 100%);\n }\n }\n .after\\:right-0 {\n &::after {\n content: var(--tw-content);\n right: calc(var(--spacing) * 0);\n }\n }\n .after\\:left-0 {\n &::after {\n content: var(--tw-content);\n left: calc(var(--spacing) * 0);\n }\n }\n .after\\:z-0 {\n &::after {\n content: var(--tw-content);\n z-index: 0;\n }\n }\n .after\\:h-px {\n &::after {\n content: var(--tw-content);\n height: 1px;\n }\n }\n .after\\:-translate-y-1\\/2 {\n &::after {\n content: var(--tw-content);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .after\\:bg-background {\n &::after {\n content: var(--tw-content);\n background-color: var(--background);\n }\n }\n .after\\:content-\\[\\'\\'\\] {\n &::after {\n content: var(--tw-content);\n --tw-content: '';\n content: var(--tw-content);\n }\n }\n .last\\:border-b-0 {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\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\\:text-muted-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--muted-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-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-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-\\[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\\]\\:slide-in-from-top-2 {\n &[data-side=\"bottom\"] {\n --tw-enter-translate-y: -0.5rem;\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\\]\\:slide-in-from-left-2 {\n &[data-side=\"right\"] {\n --tw-enter-translate-x: -0.5rem;\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-\\[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 .max-sm\\:h-\\[52px\\] {\n @media (width < 40rem) {\n height: 52px;\n }\n }\n .sm\\:static {\n @media (width >= 40rem) {\n position: static;\n }\n }\n .sm\\:w-fit {\n @media (width >= 40rem) {\n width: fit-content;\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\\:bg-transparent {\n @media (width >= 40rem) {\n background-color: transparent;\n }\n }\n .sm\\:px-0 {\n @media (width >= 40rem) {\n padding-inline: calc(var(--spacing) * 0);\n }\n }\n .sm\\:pb-0 {\n @media (width >= 40rem) {\n padding-bottom: calc(var(--spacing) * 0);\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-3 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(3, 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 .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}\n@layer base {\n ::selection {\n background-color: var(--primary);\n color: var(--primary-foreground);\n }\n input:-webkit-autofill,\n input:-webkit-autofill:hover,\n input:-webkit-autofill:focus,\n input:-webkit-autofill:active {\n -webkit-box-shadow: 0 0 0 30px var(--muted) inset !important;\n -webkit-text-fill-color: var(--foreground) !important;\n }\n input:-moz-autofill,\n input:autofill {\n background-color: var(--muted);\n color: var(--foreground);\n }\n * {\n --tw-border-style: solid;\n border-style: solid;\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);\n letter-spacing: var(--tracking-tight);\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-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@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-content {\n syntax: \"*\";\n initial-value: \"\";\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-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 --tw-ease: initial;\n --tw-content: \"\";\n }\n }\n}\n";
|
|
7537
|
+
var css_248z = "/*! tailwindcss v4.1.12 | 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 --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\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 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 ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\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 ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-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 .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 .top-full {\n top: 100%;\n }\n .-right-2 {\n right: calc(var(--spacing) * -2);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\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-0 {\n z-index: 0;\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 .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 .m-0 {\n margin: calc(var(--spacing) * 0);\n }\n .-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\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-1 {\n margin-top: calc(var(--spacing) * -1);\n }\n .-mt-2 {\n margin-top: calc(var(--spacing) * -2);\n }\n .-mt-4 {\n margin-top: calc(var(--spacing) * -4);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\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-2 {\n margin-bottom: calc(var(--spacing) * -2);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\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-0 {\n height: calc(var(--spacing) * 0);\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-\\[2px\\] {\n height: 2px;\n }\n .h-\\[18px\\] {\n height: 18px;\n }\n .h-\\[20px\\] {\n height: 20px;\n }\n .h-\\[44px\\] {\n height: 44px;\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-max {\n height: max-content;\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-0 {\n max-height: calc(var(--spacing) * 0);\n }\n .max-h-60 {\n max-height: calc(var(--spacing) * 60);\n }\n .max-h-\\[300px\\] {\n max-height: 300px;\n }\n .min-h-full {\n min-height: 100%;\n }\n .w-0 {\n width: calc(var(--spacing) * 0);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\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-full {\n width: 100%;\n }\n .max-w-0 {\n max-width: calc(var(--spacing) * 0);\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-\\[8rem\\] {\n min-width: 8rem;\n }\n .flex-1 {\n flex: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\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-0 {\n --tw-translate-x: calc(var(--spacing) * -0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\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-3 {\n --tw-translate-x: calc(var(--spacing) * -3);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-2 {\n --tw-translate-x: calc(var(--spacing) * 2);\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 .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-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 {\n gap: calc(var(--spacing) * 1);\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-5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 5) * 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 .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-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-border {\n border-color: var(--border);\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 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-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .px-1 {\n padding-inline: calc(var(--spacing) * 1);\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 .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pb-1 {\n padding-bottom: calc(var(--spacing) * 1);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n .pb-40 {\n padding-bottom: calc(var(--spacing) * 40);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\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 .text-\\[13px\\] {\n font-size: 13px;\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-ring {\n color: var(--ring);\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 {\n text-decoration-line: underline;\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 {\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-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-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-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\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 .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n .duration-200 {\n animation-duration: 200ms;\n }\n .ease-in-out {\n animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\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 .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 &::placeholder {\n color: var(--muted-foreground);\n }\n }\n .after\\:absolute {\n &::after {\n content: var(--tw-content);\n position: absolute;\n }\n }\n .after\\:top-1\\/2 {\n &::after {\n content: var(--tw-content);\n top: calc(1/2 * 100%);\n }\n }\n .after\\:right-0 {\n &::after {\n content: var(--tw-content);\n right: calc(var(--spacing) * 0);\n }\n }\n .after\\:left-0 {\n &::after {\n content: var(--tw-content);\n left: calc(var(--spacing) * 0);\n }\n }\n .after\\:z-0 {\n &::after {\n content: var(--tw-content);\n z-index: 0;\n }\n }\n .after\\:h-px {\n &::after {\n content: var(--tw-content);\n height: 1px;\n }\n }\n .after\\:-translate-y-1\\/2 {\n &::after {\n content: var(--tw-content);\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .after\\:bg-background {\n &::after {\n content: var(--tw-content);\n background-color: var(--background);\n }\n }\n .after\\:content-\\[\\'\\'\\] {\n &::after {\n content: var(--tw-content);\n --tw-content: '';\n content: var(--tw-content);\n }\n }\n .last\\:border-b-0 {\n &:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0px;\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\\:text-muted-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--muted-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-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-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-\\[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\\]\\:slide-in-from-top-2 {\n &[data-side=\"bottom\"] {\n --tw-enter-translate-y: -0.5rem;\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\\]\\:slide-in-from-left-2 {\n &[data-side=\"right\"] {\n --tw-enter-translate-x: -0.5rem;\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-\\[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 .max-sm\\:h-\\[52px\\] {\n @media (width < 40rem) {\n height: 52px;\n }\n }\n .sm\\:static {\n @media (width >= 40rem) {\n position: static;\n }\n }\n .sm\\:w-fit {\n @media (width >= 40rem) {\n width: fit-content;\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\\:bg-transparent {\n @media (width >= 40rem) {\n background-color: transparent;\n }\n }\n .sm\\:px-0 {\n @media (width >= 40rem) {\n padding-inline: calc(var(--spacing) * 0);\n }\n }\n .sm\\:pb-0 {\n @media (width >= 40rem) {\n padding-bottom: calc(var(--spacing) * 0);\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-3 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(3, 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 .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}\n@layer base {\n ::selection {\n background-color: var(--primary);\n color: var(--primary-foreground);\n }\n input:-webkit-autofill,\n input:-webkit-autofill:hover,\n input:-webkit-autofill:focus,\n input:-webkit-autofill:active {\n -webkit-box-shadow: 0 0 0 30px var(--muted) inset !important;\n -webkit-text-fill-color: var(--foreground) !important;\n }\n input:-moz-autofill,\n input:autofill {\n background-color: var(--muted);\n color: var(--foreground);\n }\n * {\n --tw-border-style: solid;\n border-style: solid;\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);\n letter-spacing: var(--tracking-tight);\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-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@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-content {\n syntax: \"*\";\n initial-value: \"\";\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-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 --tw-ease: initial;\n --tw-content: \"\";\n }\n }\n}\n";
|
|
7501
7538
|
|
|
7502
7539
|
var M$1=(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$1={setTheme:e=>{},themes:[]},z=()=>{var e;return (e=React.useContext(x))!=null?e:U$1};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$1.toString()})(${p})`}})});
|
|
7503
7540
|
|
|
@@ -8163,6 +8200,7 @@ const Toast = (props)=>{
|
|
|
8163
8200
|
"data-swipe-out": swipeOut,
|
|
8164
8201
|
"data-swipe-direction": swipeOutDirection,
|
|
8165
8202
|
"data-expanded": Boolean(expanded || expandByDefault && mounted),
|
|
8203
|
+
"data-testid": toast.testId,
|
|
8166
8204
|
style: {
|
|
8167
8205
|
'--index': index,
|
|
8168
8206
|
'--toasts-before': index,
|
|
@@ -8371,17 +8409,26 @@ function assignOffset(defaultOffset, mobileOffset) {
|
|
|
8371
8409
|
return styles;
|
|
8372
8410
|
}
|
|
8373
8411
|
const Toaster$1 = /*#__PURE__*/ React__default.forwardRef(function Toaster(props, ref) {
|
|
8374
|
-
const { invert, position = 'bottom-right', hotkey = [
|
|
8412
|
+
const { id, invert, position = 'bottom-right', hotkey = [
|
|
8375
8413
|
'altKey',
|
|
8376
8414
|
'KeyT'
|
|
8377
8415
|
], expand, closeButton, className, offset, mobileOffset, theme = 'light', richColors, duration, style, visibleToasts = VISIBLE_TOASTS_AMOUNT, toastOptions, dir = getDocumentDirection(), gap = GAP, icons, containerAriaLabel = 'Notifications' } = props;
|
|
8378
8416
|
const [toasts, setToasts] = React__default.useState([]);
|
|
8417
|
+
const filteredToasts = React__default.useMemo(()=>{
|
|
8418
|
+
if (id) {
|
|
8419
|
+
return toasts.filter((toast)=>toast.toasterId === id);
|
|
8420
|
+
}
|
|
8421
|
+
return toasts.filter((toast)=>!toast.toasterId);
|
|
8422
|
+
}, [
|
|
8423
|
+
toasts,
|
|
8424
|
+
id
|
|
8425
|
+
]);
|
|
8379
8426
|
const possiblePositions = React__default.useMemo(()=>{
|
|
8380
8427
|
return Array.from(new Set([
|
|
8381
8428
|
position
|
|
8382
|
-
].concat(
|
|
8429
|
+
].concat(filteredToasts.filter((toast)=>toast.position).map((toast)=>toast.position))));
|
|
8383
8430
|
}, [
|
|
8384
|
-
|
|
8431
|
+
filteredToasts,
|
|
8385
8432
|
position
|
|
8386
8433
|
]);
|
|
8387
8434
|
const [heights, setHeights] = React__default.useState([]);
|
|
@@ -8536,7 +8583,7 @@ const Toaster$1 = /*#__PURE__*/ React__default.forwardRef(function Toaster(props
|
|
|
8536
8583
|
}, possiblePositions.map((position, index)=>{
|
|
8537
8584
|
var _heights_;
|
|
8538
8585
|
const [y, x] = position.split('-');
|
|
8539
|
-
if (!
|
|
8586
|
+
if (!filteredToasts.length) return null;
|
|
8540
8587
|
return /*#__PURE__*/ React__default.createElement("ol", {
|
|
8541
8588
|
key: position,
|
|
8542
8589
|
dir: dir === 'auto' ? getDocumentDirection() : dir,
|
|
@@ -8588,7 +8635,7 @@ const Toaster$1 = /*#__PURE__*/ React__default.forwardRef(function Toaster(props
|
|
|
8588
8635
|
setInteracting(true);
|
|
8589
8636
|
},
|
|
8590
8637
|
onPointerUp: ()=>setInteracting(false)
|
|
8591
|
-
},
|
|
8638
|
+
}, filteredToasts.filter((toast)=>!toast.position && index === 0 || toast.position === position).map((toast, index)=>{
|
|
8592
8639
|
var _toastOptions_duration, _toastOptions_closeButton;
|
|
8593
8640
|
return /*#__PURE__*/ React__default.createElement(Toast, {
|
|
8594
8641
|
key: toast.id,
|
|
@@ -8611,7 +8658,7 @@ const Toaster$1 = /*#__PURE__*/ React__default.forwardRef(function Toaster(props
|
|
|
8611
8658
|
actionButtonStyle: toastOptions == null ? void 0 : toastOptions.actionButtonStyle,
|
|
8612
8659
|
closeButtonAriaLabel: toastOptions == null ? void 0 : toastOptions.closeButtonAriaLabel,
|
|
8613
8660
|
removeToast: removeToast,
|
|
8614
|
-
toasts:
|
|
8661
|
+
toasts: filteredToasts.filter((t)=>t.position == toast.position),
|
|
8615
8662
|
heights: heights.filter((h)=>h.position == toast.position),
|
|
8616
8663
|
setHeights: setHeights,
|
|
8617
8664
|
expandByDefault: expand,
|
|
@@ -13357,8 +13404,6 @@ const convertCheckoutAppearanceToStripeAppearance = (appearance, fonts) => {
|
|
|
13357
13404
|
return newAppearance;
|
|
13358
13405
|
};
|
|
13359
13406
|
|
|
13360
|
-
const storeHelpers = createStoreHelpers();
|
|
13361
|
-
|
|
13362
13407
|
var util;
|
|
13363
13408
|
(function (util) {
|
|
13364
13409
|
util.assertEqual = (_) => { };
|
|
@@ -16371,6 +16416,60 @@ ZodTuple.create = (schemas, params) => {
|
|
|
16371
16416
|
...processCreateParams(params),
|
|
16372
16417
|
});
|
|
16373
16418
|
};
|
|
16419
|
+
class ZodRecord extends ZodType {
|
|
16420
|
+
get keySchema() {
|
|
16421
|
+
return this._def.keyType;
|
|
16422
|
+
}
|
|
16423
|
+
get valueSchema() {
|
|
16424
|
+
return this._def.valueType;
|
|
16425
|
+
}
|
|
16426
|
+
_parse(input) {
|
|
16427
|
+
const { status, ctx } = this._processInputParams(input);
|
|
16428
|
+
if (ctx.parsedType !== ZodParsedType.object) {
|
|
16429
|
+
addIssueToContext(ctx, {
|
|
16430
|
+
code: ZodIssueCode.invalid_type,
|
|
16431
|
+
expected: ZodParsedType.object,
|
|
16432
|
+
received: ctx.parsedType,
|
|
16433
|
+
});
|
|
16434
|
+
return INVALID;
|
|
16435
|
+
}
|
|
16436
|
+
const pairs = [];
|
|
16437
|
+
const keyType = this._def.keyType;
|
|
16438
|
+
const valueType = this._def.valueType;
|
|
16439
|
+
for (const key in ctx.data) {
|
|
16440
|
+
pairs.push({
|
|
16441
|
+
key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),
|
|
16442
|
+
value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),
|
|
16443
|
+
alwaysSet: key in ctx.data,
|
|
16444
|
+
});
|
|
16445
|
+
}
|
|
16446
|
+
if (ctx.common.async) {
|
|
16447
|
+
return ParseStatus.mergeObjectAsync(status, pairs);
|
|
16448
|
+
}
|
|
16449
|
+
else {
|
|
16450
|
+
return ParseStatus.mergeObjectSync(status, pairs);
|
|
16451
|
+
}
|
|
16452
|
+
}
|
|
16453
|
+
get element() {
|
|
16454
|
+
return this._def.valueType;
|
|
16455
|
+
}
|
|
16456
|
+
static create(first, second, third) {
|
|
16457
|
+
if (second instanceof ZodType) {
|
|
16458
|
+
return new ZodRecord({
|
|
16459
|
+
keyType: first,
|
|
16460
|
+
valueType: second,
|
|
16461
|
+
typeName: ZodFirstPartyTypeKind.ZodRecord,
|
|
16462
|
+
...processCreateParams(third),
|
|
16463
|
+
});
|
|
16464
|
+
}
|
|
16465
|
+
return new ZodRecord({
|
|
16466
|
+
keyType: ZodString.create(),
|
|
16467
|
+
valueType: first,
|
|
16468
|
+
typeName: ZodFirstPartyTypeKind.ZodRecord,
|
|
16469
|
+
...processCreateParams(second),
|
|
16470
|
+
});
|
|
16471
|
+
}
|
|
16472
|
+
}
|
|
16374
16473
|
class ZodMap extends ZodType {
|
|
16375
16474
|
get keySchema() {
|
|
16376
16475
|
return this._def.keyType;
|
|
@@ -17136,6 +17235,7 @@ const objectType = ZodObject.create;
|
|
|
17136
17235
|
ZodUnion.create;
|
|
17137
17236
|
ZodIntersection.create;
|
|
17138
17237
|
ZodTuple.create;
|
|
17238
|
+
const recordType = ZodRecord.create;
|
|
17139
17239
|
ZodEnum.create;
|
|
17140
17240
|
ZodPromise.create;
|
|
17141
17241
|
ZodOptional.create;
|
|
@@ -17164,15 +17264,20 @@ const customerSchema = objectType({
|
|
|
17164
17264
|
const shippingMethodSchema = objectType({
|
|
17165
17265
|
rateId: stringType().min(1, "required_error"),
|
|
17166
17266
|
provider: stringType().min(1, "required_error"),
|
|
17167
|
-
|
|
17267
|
+
priceInCents: numberType().min(1, "required_error"),
|
|
17168
17268
|
name: stringType().min(1, "required_error"),
|
|
17169
17269
|
pickupPointId: stringType().optional(),
|
|
17170
17270
|
pickupPointDisplayName: stringType().optional(),
|
|
17171
17271
|
});
|
|
17272
|
+
const shipmentsFormSchema = recordType(stringType(), shippingMethodSchema)
|
|
17273
|
+
.refine((data) => Object.keys(data).length > 0, {
|
|
17274
|
+
message: "at_least_one_shipping_method_required",
|
|
17275
|
+
path: [],
|
|
17276
|
+
});
|
|
17172
17277
|
// Combined checkout schema
|
|
17173
17278
|
objectType({
|
|
17174
17279
|
customer: customerSchema,
|
|
17175
|
-
shipping:
|
|
17280
|
+
shipping: shipmentsFormSchema,
|
|
17176
17281
|
customerId: stringType().optional(),
|
|
17177
17282
|
});
|
|
17178
17283
|
|
|
@@ -17351,7 +17456,7 @@ function cloneObject(data) {
|
|
|
17351
17456
|
}
|
|
17352
17457
|
else if (!(isWeb && (data instanceof Blob || isFileListInstance)) &&
|
|
17353
17458
|
(isArray || isObject(data))) {
|
|
17354
|
-
copy = isArray ? [] :
|
|
17459
|
+
copy = isArray ? [] : Object.create(Object.getPrototypeOf(data));
|
|
17355
17460
|
if (!isArray && !isPlainObject(data)) {
|
|
17356
17461
|
copy = data;
|
|
17357
17462
|
}
|
|
@@ -17525,7 +17630,7 @@ var getProxyFormState = (formState, control, localProxyFormState, isRoot = true)
|
|
|
17525
17630
|
return result;
|
|
17526
17631
|
};
|
|
17527
17632
|
|
|
17528
|
-
const useIsomorphicLayoutEffect$1 = typeof window !== 'undefined' ?
|
|
17633
|
+
const useIsomorphicLayoutEffect$1 = typeof window !== 'undefined' ? React__default.useLayoutEffect : React__default.useEffect;
|
|
17529
17634
|
|
|
17530
17635
|
/**
|
|
17531
17636
|
* This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.
|
|
@@ -17604,6 +17709,44 @@ var generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) =>
|
|
|
17604
17709
|
return formValues;
|
|
17605
17710
|
};
|
|
17606
17711
|
|
|
17712
|
+
var isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);
|
|
17713
|
+
|
|
17714
|
+
function deepEqual$1(object1, object2, _internal_visited = new WeakSet()) {
|
|
17715
|
+
if (isPrimitive(object1) || isPrimitive(object2)) {
|
|
17716
|
+
return object1 === object2;
|
|
17717
|
+
}
|
|
17718
|
+
if (isDateObject(object1) && isDateObject(object2)) {
|
|
17719
|
+
return object1.getTime() === object2.getTime();
|
|
17720
|
+
}
|
|
17721
|
+
const keys1 = Object.keys(object1);
|
|
17722
|
+
const keys2 = Object.keys(object2);
|
|
17723
|
+
if (keys1.length !== keys2.length) {
|
|
17724
|
+
return false;
|
|
17725
|
+
}
|
|
17726
|
+
if (_internal_visited.has(object1) || _internal_visited.has(object2)) {
|
|
17727
|
+
return true;
|
|
17728
|
+
}
|
|
17729
|
+
_internal_visited.add(object1);
|
|
17730
|
+
_internal_visited.add(object2);
|
|
17731
|
+
for (const key of keys1) {
|
|
17732
|
+
const val1 = object1[key];
|
|
17733
|
+
if (!keys2.includes(key)) {
|
|
17734
|
+
return false;
|
|
17735
|
+
}
|
|
17736
|
+
if (key !== 'ref') {
|
|
17737
|
+
const val2 = object2[key];
|
|
17738
|
+
if ((isDateObject(val1) && isDateObject(val2)) ||
|
|
17739
|
+
(isObject(val1) && isObject(val2)) ||
|
|
17740
|
+
(Array.isArray(val1) && Array.isArray(val2))
|
|
17741
|
+
? !deepEqual$1(val1, val2, _internal_visited)
|
|
17742
|
+
: val1 !== val2) {
|
|
17743
|
+
return false;
|
|
17744
|
+
}
|
|
17745
|
+
}
|
|
17746
|
+
}
|
|
17747
|
+
return true;
|
|
17748
|
+
}
|
|
17749
|
+
|
|
17607
17750
|
/**
|
|
17608
17751
|
* Custom hook to subscribe to field change and isolate re-rendering at the component level.
|
|
17609
17752
|
*
|
|
@@ -17622,18 +17765,35 @@ var generateWatchOutput = (names, _names, formValues, isGlobal, defaultValue) =>
|
|
|
17622
17765
|
*/
|
|
17623
17766
|
function useWatch(props) {
|
|
17624
17767
|
const methods = useFormContext();
|
|
17625
|
-
const { control = methods.control, name, defaultValue, disabled, exact, } = props || {};
|
|
17768
|
+
const { control = methods.control, name, defaultValue, disabled, exact, compute, } = props || {};
|
|
17626
17769
|
const _defaultValue = React__default.useRef(defaultValue);
|
|
17627
|
-
const
|
|
17770
|
+
const _compute = React__default.useRef(compute);
|
|
17771
|
+
const _computeFormValues = React__default.useRef(undefined);
|
|
17772
|
+
_compute.current = compute;
|
|
17773
|
+
const defaultValueMemo = React__default.useMemo(() => control._getWatch(name, _defaultValue.current), [control, name]);
|
|
17774
|
+
const [value, updateValue] = React__default.useState(_compute.current ? _compute.current(defaultValueMemo) : defaultValueMemo);
|
|
17628
17775
|
useIsomorphicLayoutEffect$1(() => control._subscribe({
|
|
17629
17776
|
name,
|
|
17630
17777
|
formState: {
|
|
17631
17778
|
values: true,
|
|
17632
17779
|
},
|
|
17633
17780
|
exact,
|
|
17634
|
-
callback: (formState) =>
|
|
17635
|
-
|
|
17636
|
-
|
|
17781
|
+
callback: (formState) => {
|
|
17782
|
+
if (!disabled) {
|
|
17783
|
+
const formValues = generateWatchOutput(name, control._names, formState.values || control._formValues, false, _defaultValue.current);
|
|
17784
|
+
if (_compute.current) {
|
|
17785
|
+
const computedFormValues = _compute.current(formValues);
|
|
17786
|
+
if (!deepEqual$1(computedFormValues, _computeFormValues.current)) {
|
|
17787
|
+
updateValue(computedFormValues);
|
|
17788
|
+
_computeFormValues.current = computedFormValues;
|
|
17789
|
+
}
|
|
17790
|
+
}
|
|
17791
|
+
else {
|
|
17792
|
+
updateValue(formValues);
|
|
17793
|
+
}
|
|
17794
|
+
}
|
|
17795
|
+
},
|
|
17796
|
+
}), [control, disabled, name, exact]);
|
|
17637
17797
|
React__default.useEffect(() => control._removeUnmounted());
|
|
17638
17798
|
return value;
|
|
17639
17799
|
}
|
|
@@ -17664,12 +17824,13 @@ function useWatch(props) {
|
|
|
17664
17824
|
*/
|
|
17665
17825
|
function useController(props) {
|
|
17666
17826
|
const methods = useFormContext();
|
|
17667
|
-
const { name, disabled, control = methods.control, shouldUnregister } = props;
|
|
17827
|
+
const { name, disabled, control = methods.control, shouldUnregister, defaultValue, } = props;
|
|
17668
17828
|
const isArrayField = isNameInFieldArray(control._names.array, name);
|
|
17829
|
+
const defaultValueMemo = React__default.useMemo(() => get(control._formValues, name, get(control._defaultValues, name, defaultValue)), [control, name, defaultValue]);
|
|
17669
17830
|
const value = useWatch({
|
|
17670
17831
|
control,
|
|
17671
17832
|
name,
|
|
17672
|
-
defaultValue:
|
|
17833
|
+
defaultValue: defaultValueMemo,
|
|
17673
17834
|
exact: true,
|
|
17674
17835
|
});
|
|
17675
17836
|
const formState = useFormState({
|
|
@@ -17683,6 +17844,7 @@ function useController(props) {
|
|
|
17683
17844
|
value,
|
|
17684
17845
|
...(isBoolean(props.disabled) ? { disabled: props.disabled } : {}),
|
|
17685
17846
|
}));
|
|
17847
|
+
_props.current = props;
|
|
17686
17848
|
const fieldState = React__default.useMemo(() => Object.defineProperties({}, {
|
|
17687
17849
|
invalid: {
|
|
17688
17850
|
enumerable: true,
|
|
@@ -17868,44 +18030,6 @@ var createSubject = () => {
|
|
|
17868
18030
|
};
|
|
17869
18031
|
};
|
|
17870
18032
|
|
|
17871
|
-
var isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);
|
|
17872
|
-
|
|
17873
|
-
function deepEqual$1(object1, object2, _internal_visited = new WeakSet()) {
|
|
17874
|
-
if (isPrimitive(object1) || isPrimitive(object2)) {
|
|
17875
|
-
return object1 === object2;
|
|
17876
|
-
}
|
|
17877
|
-
if (isDateObject(object1) && isDateObject(object2)) {
|
|
17878
|
-
return object1.getTime() === object2.getTime();
|
|
17879
|
-
}
|
|
17880
|
-
const keys1 = Object.keys(object1);
|
|
17881
|
-
const keys2 = Object.keys(object2);
|
|
17882
|
-
if (keys1.length !== keys2.length) {
|
|
17883
|
-
return false;
|
|
17884
|
-
}
|
|
17885
|
-
if (_internal_visited.has(object1) || _internal_visited.has(object2)) {
|
|
17886
|
-
return true;
|
|
17887
|
-
}
|
|
17888
|
-
_internal_visited.add(object1);
|
|
17889
|
-
_internal_visited.add(object2);
|
|
17890
|
-
for (const key of keys1) {
|
|
17891
|
-
const val1 = object1[key];
|
|
17892
|
-
if (!keys2.includes(key)) {
|
|
17893
|
-
return false;
|
|
17894
|
-
}
|
|
17895
|
-
if (key !== 'ref') {
|
|
17896
|
-
const val2 = object2[key];
|
|
17897
|
-
if ((isDateObject(val1) && isDateObject(val2)) ||
|
|
17898
|
-
(isObject(val1) && isObject(val2)) ||
|
|
17899
|
-
(Array.isArray(val1) && Array.isArray(val2))
|
|
17900
|
-
? !deepEqual$1(val1, val2, _internal_visited)
|
|
17901
|
-
: val1 !== val2) {
|
|
17902
|
-
return false;
|
|
17903
|
-
}
|
|
17904
|
-
}
|
|
17905
|
-
}
|
|
17906
|
-
return true;
|
|
17907
|
-
}
|
|
17908
|
-
|
|
17909
18033
|
var isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;
|
|
17910
18034
|
|
|
17911
18035
|
var isFileInput = (element) => element.type === 'file';
|
|
@@ -18857,7 +18981,7 @@ function createFormControl(props = {}) {
|
|
|
18857
18981
|
? setValues(name, cloneValue, options)
|
|
18858
18982
|
: setFieldValue(name, cloneValue, options);
|
|
18859
18983
|
}
|
|
18860
|
-
isWatched(name, _names) && _subjects.state.next({ ..._formState });
|
|
18984
|
+
isWatched(name, _names) && _subjects.state.next({ ..._formState, name });
|
|
18861
18985
|
_subjects.state.next({
|
|
18862
18986
|
name: _state.mount ? name : undefined,
|
|
18863
18987
|
values: cloneObject(_formValues),
|
|
@@ -18892,8 +19016,10 @@ function createFormControl(props = {}) {
|
|
|
18892
19016
|
const watched = isWatched(name, _names, isBlurEvent);
|
|
18893
19017
|
set(_formValues, name, fieldValue);
|
|
18894
19018
|
if (isBlurEvent) {
|
|
18895
|
-
|
|
18896
|
-
|
|
19019
|
+
if (!target || !target.readOnly) {
|
|
19020
|
+
field._f.onBlur && field._f.onBlur(event);
|
|
19021
|
+
delayErrorCallback && delayErrorCallback(0);
|
|
19022
|
+
}
|
|
18897
19023
|
}
|
|
18898
19024
|
else if (field._f.onChange) {
|
|
18899
19025
|
field._f.onChange(event);
|
|
@@ -19039,7 +19165,8 @@ function createFormControl(props = {}) {
|
|
|
19039
19165
|
};
|
|
19040
19166
|
const watch = (name, defaultValue) => isFunction$1(name)
|
|
19041
19167
|
? _subjects.state.subscribe({
|
|
19042
|
-
next: (payload) =>
|
|
19168
|
+
next: (payload) => 'values' in payload &&
|
|
19169
|
+
name(_getWatch(undefined, defaultValue), payload),
|
|
19043
19170
|
})
|
|
19044
19171
|
: _getWatch(name, defaultValue, true);
|
|
19045
19172
|
const _subscribe = (props) => _subjects.state.subscribe({
|
|
@@ -19050,6 +19177,7 @@ function createFormControl(props = {}) {
|
|
|
19050
19177
|
values: { ..._formValues },
|
|
19051
19178
|
..._formState,
|
|
19052
19179
|
...formState,
|
|
19180
|
+
defaultValues: _defaultValues,
|
|
19053
19181
|
});
|
|
19054
19182
|
}
|
|
19055
19183
|
},
|
|
@@ -19386,6 +19514,7 @@ function createFormControl(props = {}) {
|
|
|
19386
19514
|
? _formState.isSubmitSuccessful
|
|
19387
19515
|
: false,
|
|
19388
19516
|
isSubmitting: false,
|
|
19517
|
+
defaultValues: _defaultValues,
|
|
19389
19518
|
});
|
|
19390
19519
|
};
|
|
19391
19520
|
const reset = (formValues, keepStateOptions) => _reset(isFunction$1(formValues)
|
|
@@ -22732,7 +22861,7 @@ const FloatingLabel = React.forwardRef((_a, ref) => {
|
|
|
22732
22861
|
? "text-xs font-medium"
|
|
22733
22862
|
: "text-muted-foreground text-sm", {
|
|
22734
22863
|
"text-xs font-medium": isFloating,
|
|
22735
|
-
"text-
|
|
22864
|
+
"text-muted-foreground": isFloating && !isFocused,
|
|
22736
22865
|
"text-ring": isFloating && isFocused,
|
|
22737
22866
|
"text-muted-foreground text-sm": !isFloating,
|
|
22738
22867
|
}, className) }, props, { children: [children, required && "*"] }))] }));
|
|
@@ -22811,7 +22940,7 @@ function Button(_a) {
|
|
|
22811
22940
|
|
|
22812
22941
|
var U=1,Y$1=.9,H=.8,J=.17,p=.1,u=.999,$=.9999;var k$1=.99,m=/[\\\/_+.#"@\[\(\{&]/,B$1=/[\\\/_+.#"@\[\(\{&]/g,K$1=/[\s-]/,X$1=/[\s-]/g;function G(_,C,h,P,A,f,O){if(f===C.length)return A===_.length?U:k$1;var T=`${A},${f}`;if(O[T]!==void 0)return O[T];for(var L=P.charAt(f),c=h.indexOf(L,A),S=0,E,N,R,M;c>=0;)E=G(_,C,h,P,c+1,f+1,O),E>S&&(c===A?E*=U:m.test(_.charAt(c-1))?(E*=H,R=_.slice(A,c-1).match(B$1),R&&A>0&&(E*=Math.pow(u,R.length))):K$1.test(_.charAt(c-1))?(E*=Y$1,M=_.slice(A,c-1).match(X$1),M&&A>0&&(E*=Math.pow(u,M.length))):(E*=J,A>0&&(E*=Math.pow(u,c-A))),_.charAt(c)!==C.charAt(f)&&(E*=$)),(E<p&&h.charAt(c-1)===P.charAt(f+1)||P.charAt(f+1)===P.charAt(f)&&h.charAt(c-1)!==P.charAt(f))&&(N=G(_,C,h,P,c+1,f+2,O),N*p>E&&(E=N*p)),E>S&&(S=E),c=h.indexOf(L,c+1);return O[T]=S,S}function D(_){return _.toLowerCase().replace(X$1," ")}function W(_,C,h){return _=h&&h.length>0?`${_+" "+h.join(" ")}`:_,G(_,C,D(_),D(C),0,0,{})}
|
|
22813
22942
|
|
|
22814
|
-
//
|
|
22943
|
+
// src/primitive.tsx
|
|
22815
22944
|
function composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {
|
|
22816
22945
|
return function handleEvent(event) {
|
|
22817
22946
|
originalEventHandler?.(event);
|
|
@@ -23480,7 +23609,7 @@ function usePresence(present) {
|
|
|
23480
23609
|
const ownerWindow = node.ownerDocument.defaultView ?? window;
|
|
23481
23610
|
const handleAnimationEnd = (event) => {
|
|
23482
23611
|
const currentAnimationName = getAnimationName(stylesRef.current);
|
|
23483
|
-
const isCurrentAnimation = currentAnimationName.includes(event.animationName);
|
|
23612
|
+
const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));
|
|
23484
23613
|
if (event.target === node && isCurrentAnimation) {
|
|
23485
23614
|
send("ANIMATION_END");
|
|
23486
23615
|
if (!prevPresentRef.current) {
|
|
@@ -25426,7 +25555,7 @@ const flip$2 = function (options) {
|
|
|
25426
25555
|
if (!ignoreCrossAxisOverflow ||
|
|
25427
25556
|
// We leave the current main axis only if every placement on that axis
|
|
25428
25557
|
// overflows the main axis.
|
|
25429
|
-
overflowsData.every(d => d.overflows[0] > 0
|
|
25558
|
+
overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {
|
|
25430
25559
|
// Try next placement and re-run the lifecycle.
|
|
25431
25560
|
return {
|
|
25432
25561
|
data: {
|
|
@@ -27172,8 +27301,13 @@ var PopperAnchor = React.forwardRef(
|
|
|
27172
27301
|
const context = usePopperContext(ANCHOR_NAME$1, __scopePopper);
|
|
27173
27302
|
const ref = React.useRef(null);
|
|
27174
27303
|
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
27304
|
+
const anchorRef = React.useRef(null);
|
|
27175
27305
|
React.useEffect(() => {
|
|
27176
|
-
|
|
27306
|
+
const previousAnchor = anchorRef.current;
|
|
27307
|
+
anchorRef.current = virtualRef?.current || ref.current;
|
|
27308
|
+
if (previousAnchor !== anchorRef.current) {
|
|
27309
|
+
context.onAnchorChange(anchorRef.current);
|
|
27310
|
+
}
|
|
27177
27311
|
});
|
|
27178
27312
|
return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });
|
|
27179
27313
|
}
|
|
@@ -40059,12 +40193,12 @@ function requireReactStripe_umd () {
|
|
|
40059
40193
|
|
|
40060
40194
|
stripe._registerWrapper({
|
|
40061
40195
|
name: 'react-stripe-js',
|
|
40062
|
-
version: "3.
|
|
40196
|
+
version: "3.9.1"
|
|
40063
40197
|
});
|
|
40064
40198
|
|
|
40065
40199
|
stripe.registerAppInfo({
|
|
40066
40200
|
name: 'react-stripe-js',
|
|
40067
|
-
version: "3.
|
|
40201
|
+
version: "3.9.1",
|
|
40068
40202
|
url: 'https://stripe.com/docs/stripe-js/react'
|
|
40069
40203
|
});
|
|
40070
40204
|
};
|
|
@@ -40086,7 +40220,7 @@ function requireReactStripe_umd () {
|
|
|
40086
40220
|
* The `loadStripe` function will asynchronously load the Stripe.js script and initialize a `Stripe` object.
|
|
40087
40221
|
* Pass the returned `Promise` to `Elements`.
|
|
40088
40222
|
*
|
|
40089
|
-
* @docs https://stripe.com/
|
|
40223
|
+
* @docs https://docs.stripe.com/sdks/stripejs-react?ui=elements#elements-provider
|
|
40090
40224
|
*/
|
|
40091
40225
|
|
|
40092
40226
|
var Elements = function Elements(_ref) {
|
|
@@ -40309,20 +40443,30 @@ function requireReactStripe_umd () {
|
|
|
40309
40443
|
var prevOptions = usePrevious(options);
|
|
40310
40444
|
var prevCheckoutSdk = usePrevious(ctx.checkoutSdk);
|
|
40311
40445
|
React.useEffect(function () {
|
|
40312
|
-
var _prevOptions$elements, _options$elementsOpti;
|
|
40446
|
+
var _prevOptions$elements, _options$elementsOpti, _prevOptions$elements2, _options$elementsOpti2;
|
|
40313
40447
|
|
|
40314
40448
|
// Ignore changes while checkout sdk is not initialized.
|
|
40315
40449
|
if (!ctx.checkoutSdk) {
|
|
40316
40450
|
return;
|
|
40317
40451
|
}
|
|
40318
40452
|
|
|
40453
|
+
var hasSdkLoaded = Boolean(!prevCheckoutSdk && ctx.checkoutSdk); // Handle appearance changes
|
|
40454
|
+
|
|
40319
40455
|
var previousAppearance = prevOptions === null || prevOptions === void 0 ? void 0 : (_prevOptions$elements = prevOptions.elementsOptions) === null || _prevOptions$elements === void 0 ? void 0 : _prevOptions$elements.appearance;
|
|
40320
40456
|
var currentAppearance = options === null || options === void 0 ? void 0 : (_options$elementsOpti = options.elementsOptions) === null || _options$elementsOpti === void 0 ? void 0 : _options$elementsOpti.appearance;
|
|
40321
40457
|
var hasAppearanceChanged = !isEqual(currentAppearance, previousAppearance);
|
|
40322
|
-
var hasSdkLoaded = !prevCheckoutSdk && ctx.checkoutSdk;
|
|
40323
40458
|
|
|
40324
40459
|
if (currentAppearance && (hasAppearanceChanged || hasSdkLoaded)) {
|
|
40325
40460
|
ctx.checkoutSdk.changeAppearance(currentAppearance);
|
|
40461
|
+
} // Handle fonts changes
|
|
40462
|
+
|
|
40463
|
+
|
|
40464
|
+
var previousFonts = prevOptions === null || prevOptions === void 0 ? void 0 : (_prevOptions$elements2 = prevOptions.elementsOptions) === null || _prevOptions$elements2 === void 0 ? void 0 : _prevOptions$elements2.fonts;
|
|
40465
|
+
var currentFonts = options === null || options === void 0 ? void 0 : (_options$elementsOpti2 = options.elementsOptions) === null || _options$elementsOpti2 === void 0 ? void 0 : _options$elementsOpti2.fonts;
|
|
40466
|
+
var hasFontsChanged = !isEqual(previousFonts, currentFonts);
|
|
40467
|
+
|
|
40468
|
+
if (currentFonts && (hasFontsChanged || hasSdkLoaded)) {
|
|
40469
|
+
ctx.checkoutSdk.loadFonts(currentFonts);
|
|
40326
40470
|
}
|
|
40327
40471
|
}, [options, prevOptions, ctx.checkoutSdk, prevCheckoutSdk]); // Attach react-stripe-js version to stripe.js instance
|
|
40328
40472
|
|
|
@@ -40484,6 +40628,10 @@ function requireReactStripe_umd () {
|
|
|
40484
40628
|
newElement = checkoutSdk.createCurrencySelectorElement();
|
|
40485
40629
|
break;
|
|
40486
40630
|
|
|
40631
|
+
case 'taxId':
|
|
40632
|
+
newElement = checkoutSdk.createTaxIdElement(options);
|
|
40633
|
+
break;
|
|
40634
|
+
|
|
40487
40635
|
default:
|
|
40488
40636
|
throw new Error("Invalid Element type ".concat(displayName, ". You must use either the <PaymentElement />, <AddressElement options={{mode: 'shipping'}} />, <AddressElement options={{mode: 'billing'}} />, or <ExpressCheckoutElement />."));
|
|
40489
40637
|
}
|
|
@@ -40866,6 +41014,12 @@ function requireReactStripe_umd () {
|
|
|
40866
41014
|
*/
|
|
40867
41015
|
|
|
40868
41016
|
var AfterpayClearpayMessageElement = createElementComponent('afterpayClearpayMessage', isServer);
|
|
41017
|
+
/**
|
|
41018
|
+
* Requires beta access:
|
|
41019
|
+
* Contact [Stripe support](https://support.stripe.com/) for more information.
|
|
41020
|
+
*/
|
|
41021
|
+
|
|
41022
|
+
var TaxIdElement = createElementComponent('taxId', isServer);
|
|
40869
41023
|
|
|
40870
41024
|
exports.AddressElement = AddressElement;
|
|
40871
41025
|
exports.AffirmMessageElement = AffirmMessageElement;
|
|
@@ -40892,6 +41046,7 @@ function requireReactStripe_umd () {
|
|
|
40892
41046
|
exports.PaymentMethodMessagingElement = PaymentMethodMessagingElement;
|
|
40893
41047
|
exports.PaymentRequestButtonElement = PaymentRequestButtonElement;
|
|
40894
41048
|
exports.ShippingAddressElement = ShippingAddressElement;
|
|
41049
|
+
exports.TaxIdElement = TaxIdElement;
|
|
40895
41050
|
exports.useCheckout = useCheckout;
|
|
40896
41051
|
exports.useElements = useElements;
|
|
40897
41052
|
exports.useStripe = useStripe;
|
|
@@ -41207,10 +41362,10 @@ function PaymentElement({ paymentSecret, publicKey, checkoutAppearance, locale,
|
|
|
41207
41362
|
}
|
|
41208
41363
|
var PaymentElement$1 = memo(PaymentElement);
|
|
41209
41364
|
|
|
41210
|
-
function PaymentForm({ paymentSecret, onSuccess, onError, onBack, onDoubleBack, contactEmail,
|
|
41365
|
+
function PaymentForm({ paymentSecret, onSuccess, onError, onBack, onDoubleBack, contactEmail, shippingFormData, address, checkoutAppearance, fonts, locale, publicKey, paymentComponentKey, }) {
|
|
41211
41366
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
41212
41367
|
const { t } = useTranslation();
|
|
41213
|
-
return (jsxs("div", { className: "space-y-6", children: [jsxs("div", { children: [jsx("h2", { className: "mb-2", children: t("CheckoutEmbed.Payment.title") }), jsx("p", { className: "text-muted-foreground text-sm", children: t("CheckoutEmbed.Payment.description") })] }), jsxs("div", { className: "space-y-2", children: [jsxs("div", { className: "flex items-center justify-between text-sm", children: [jsxs("p", { children: [jsx("span", { className: "font-medium", children: t("CheckoutEmbed.Shipping.contact") }), " ", jsx("span", { className: "text-muted-foreground", children: contactEmail })] }), jsx(Button, { variant: "link", size: "link", onClick: onDoubleBack, children: t("CheckoutEmbed.Shipping.change") })] }), jsxs("div", { className: "flex items-center justify-between text-sm", children: [jsxs("p", { children: [jsx("span", { className: "font-medium", children: t("CheckoutEmbed.Shipping.address") }), " ", jsx("span", { className: "text-muted-foreground", children:
|
|
41368
|
+
return (jsxs("div", { className: "space-y-6", children: [jsxs("div", { children: [jsx("h2", { className: "mb-2", children: t("CheckoutEmbed.Payment.title") }), jsx("p", { className: "text-muted-foreground text-sm", children: t("CheckoutEmbed.Payment.description") })] }), jsxs("div", { className: "space-y-2", children: [jsxs("div", { className: "flex items-center justify-between text-sm", children: [jsxs("p", { children: [jsx("span", { className: "font-medium", children: t("CheckoutEmbed.Shipping.contact") }), " ", jsx("span", { className: "text-muted-foreground", children: contactEmail })] }), jsx(Button, { variant: "link", size: "link", onClick: onDoubleBack, children: t("CheckoutEmbed.Shipping.change") })] }), jsxs("div", { className: "flex items-center justify-between text-sm", children: [jsxs("p", { children: [jsx("span", { className: "font-medium", children: t("CheckoutEmbed.Shipping.address") }), " ", jsx("span", { className: "text-muted-foreground", children: address })] }), jsx(Button, { variant: "link", size: "link", onClick: onDoubleBack, children: t("CheckoutEmbed.Shipping.change") })] }), jsxs("div", { className: "flex items-center justify-between text-sm", children: [jsxs("div", { className: "flex gap-1", children: [jsx("p", { className: "font-medium", children: t("CheckoutEmbed.Shipping.shipping") }), " ", jsx("div", { className: "text-muted-foreground flex flex-col gap-1", children: Object.entries(shippingFormData).map(([id, shipmentFormData]) => (jsxs("p", { children: [shipmentFormData.name, " \u00B7 ", shipmentFormData.priceInCents] }, id))) })] }), jsx(Button, { variant: "link", size: "link", onClick: onBack, children: t("CheckoutEmbed.Shipping.change") })] })] }), jsx("div", { className: "mt-8", children: paymentSecret && (jsx(PaymentElement$1, { fonts: fonts, checkoutAppearance: convertCheckoutAppearanceToStripeAppearance(checkoutAppearance, fonts), locale: locale, paymentSecret: paymentSecret, onSuccess: onSuccess, onError: onError, setSubmitting: setIsSubmitting, publicKey: publicKey, children: jsx("div", { className: "fixed bottom-0 left-0 right-0 z-50 mt-8 px-4 sm:static sm:px-0", children: jsxs("div", { className: "bg-background flex flex-col-reverse items-center justify-between gap-2 pb-4 sm:flex-row sm:bg-transparent sm:pb-0", children: [jsxs(Button, { className: "w-full sm:w-fit", type: "button", variant: "ghost", onClick: onBack, children: [jsx(ChevronLeft, {}), t("CheckoutEmbed.Payment.back")] }), jsx(SubmitButton, { className: "w-full max-sm:h-[52px] sm:w-fit", isValid: true, isSubmitting: isSubmitting, children: t("CheckoutEmbed.Payment.button") })] }) }) }, paymentComponentKey)) })] }));
|
|
41214
41369
|
}
|
|
41215
41370
|
|
|
41216
41371
|
function Skeleton(_a) {
|
|
@@ -41218,6 +41373,8 @@ function Skeleton(_a) {
|
|
|
41218
41373
|
return (jsx("div", Object.assign({ "data-slot": "skeleton", className: cn("bg-accent animate-pulse rounded-md", className) }, props)));
|
|
41219
41374
|
}
|
|
41220
41375
|
|
|
41376
|
+
const storeHelpers = createStoreHelpers();
|
|
41377
|
+
|
|
41221
41378
|
function ZasilkovnaShippingOption({ children, onPickupPointSelected, locale, countryCode, apiKey, }) {
|
|
41222
41379
|
const [widgetLoaded, setWidgetLoaded] = useState(false);
|
|
41223
41380
|
useEffect(() => {
|
|
@@ -41264,50 +41421,62 @@ function ShippingOptionWrapper({ rate, children, onPickupPointSelected, locale,
|
|
|
41264
41421
|
return jsx(Fragment, { children: children });
|
|
41265
41422
|
}
|
|
41266
41423
|
|
|
41267
|
-
function
|
|
41424
|
+
function ShipmentsForm({ shippingRates, initialData, onSubmit, onBack, contactEmail, shippingAddress, currency, exchangeRate, locale, countryCode, setFormData, formData, shipments, }) {
|
|
41268
41425
|
var _a;
|
|
41269
41426
|
const { t } = useTranslation();
|
|
41270
41427
|
const form = useForm({
|
|
41271
|
-
resolver: s(
|
|
41272
|
-
defaultValues: initialData ||
|
|
41273
|
-
|
|
41274
|
-
|
|
41275
|
-
|
|
41276
|
-
|
|
41277
|
-
|
|
41278
|
-
|
|
41428
|
+
resolver: s(shipmentsFormSchema),
|
|
41429
|
+
defaultValues: initialData ||
|
|
41430
|
+
Object.fromEntries(shipments.map((shipment) => [
|
|
41431
|
+
shipment.id,
|
|
41432
|
+
{
|
|
41433
|
+
rateId: "",
|
|
41434
|
+
provider: "",
|
|
41435
|
+
priceInCents: 0,
|
|
41436
|
+
pickupPointId: "",
|
|
41437
|
+
pickupPointDisplayName: "",
|
|
41438
|
+
},
|
|
41439
|
+
])),
|
|
41279
41440
|
});
|
|
41280
|
-
const
|
|
41281
|
-
return (jsxs("div", { className: "space-y-6", children: [jsx("h2", { children: t("CheckoutEmbed.Shipping.title") }), jsxs("div", { className: "space-y-2 pb-2", children: [jsxs("div", { className: "flex items-center justify-between text-sm", children: [jsxs("p", { children: [jsx("span", { className: "font-medium", children: t("CheckoutEmbed.Shipping.contact") }), " ", jsx("span", { className: "text-muted-foreground", children: contactEmail })] }), jsx(Button, { variant: "link", size: "link", onClick: onBack, children: t("CheckoutEmbed.Shipping.change") })] }), jsxs("div", { className: "flex items-center justify-between text-sm", children: [jsxs("p", { children: [jsx("span", { className: "font-medium", children: t("CheckoutEmbed.Shipping.address") }), " ", jsx("span", { className: "text-muted-foreground", children: shippingAddress })] }), jsx(Button, { variant: "link", size: "link", onClick: onBack, children: t("CheckoutEmbed.Shipping.change") })] })] }), jsx(Form, Object.assign({}, form, { children: jsxs("form", { onSubmit: form.handleSubmit(onSubmit), className: "space-y-4", children: [shippingRates.length === 0
|
|
41282
|
-
Array.from({ length: 3 }).map((_, index) => (jsx(ShippingRateLoading, {}, index))), shippingRates.map((rate) => {
|
|
41283
|
-
const pickupPointDisplayName = form.watch("pickupPointDisplayName");
|
|
41284
|
-
const rateId = rate.provider + rate.name;
|
|
41285
|
-
const intPrice = Math.ceil(Number(rate.price));
|
|
41286
|
-
const displayPrice = storeHelpers.formatPrice(intPrice, currency, exchangeRate);
|
|
41287
|
-
const description = rate.provider === "zasilkovna"
|
|
41288
|
-
? t("CheckoutEmbed.Shipping.description.zasilkovna")
|
|
41289
|
-
: t("CheckoutEmbed.Shipping.description.other");
|
|
41290
|
-
return (jsx(ShippingOptionWrapper, { rate: rate, onPickupPointSelected: (pickupPointId, pickupPointName) => {
|
|
41291
|
-
const newFormData = {
|
|
41292
|
-
rateId,
|
|
41293
|
-
provider: rate.provider,
|
|
41294
|
-
price: intPrice,
|
|
41295
|
-
name: rate.name,
|
|
41296
|
-
pickupPointId: rate.provider === "zasilkovna" ? pickupPointId : "",
|
|
41297
|
-
pickupPointDisplayName: rate.provider === "zasilkovna" ? pickupPointName : "",
|
|
41298
|
-
};
|
|
41299
|
-
form.setValue("rateId", newFormData.rateId);
|
|
41300
|
-
form.setValue("provider", newFormData.provider);
|
|
41301
|
-
form.setValue("name", newFormData.name);
|
|
41302
|
-
form.setValue("price", newFormData.price);
|
|
41303
|
-
form.setValue("pickupPointId", newFormData.pickupPointId);
|
|
41304
|
-
form.setValue("pickupPointDisplayName", newFormData.pickupPointDisplayName);
|
|
41305
|
-
setFormData(Object.assign(Object.assign({}, formData), { shipping: Object.assign({}, newFormData) }));
|
|
41306
|
-
}, locale: locale, countryCode: countryCode, children: jsxs("div", { className: clsx("bg-background cursor-pointer rounded-md border p-4", {
|
|
41307
|
-
"bg-muted border-primary": currentRateId === rateId,
|
|
41308
|
-
}), children: [jsxs("div", { className: "flex w-full items-center justify-between", children: [jsx("p", { children: rate.name }), jsx("p", { children: displayPrice })] }), jsx("p", { className: "text-muted-foreground text-sm", children: description }), pickupPointDisplayName && (jsxs(Fragment, { children: [jsx("hr", { className: "my-2" }), jsxs("p", { className: "text-muted-foreground text-sm", children: [t("CheckoutEmbed.Shipping.description.shippedTo"), " ", jsx("span", { className: "text-foreground", children: pickupPointDisplayName })] })] }))] }) }, rateId));
|
|
41309
|
-
}), jsx(FormMessage, { children: (_a = form.formState.errors.rateId) === null || _a === void 0 ? void 0 : _a.message }), jsxs("div", { className: "flex items-center justify-between pt-4", children: [jsxs(Button, { type: "button", variant: "ghost", onClick: onBack, children: [jsx(ChevronLeft, {}), t("CheckoutEmbed.Shipping.back")] }), jsx(SubmitButton, { isSubmitting: form.formState.isSubmitting, isValid: !!currentRateId, children: t("CheckoutEmbed.Shipping.button") })] })] }) }))] }));
|
|
41441
|
+
const isButtonEnabled = Object.values(form.getValues()).every((value) => { var _a; return ((_a = value.rateId) === null || _a === void 0 ? void 0 : _a.length) > 0; });
|
|
41442
|
+
return (jsxs("div", { className: "space-y-6", children: [jsx("h2", { children: t("CheckoutEmbed.Shipping.title") }), jsxs("div", { className: "space-y-2 pb-2", children: [jsxs("div", { className: "flex items-center justify-between text-sm", children: [jsxs("p", { children: [jsx("span", { className: "font-medium", children: t("CheckoutEmbed.Shipping.contact") }), " ", jsx("span", { className: "text-muted-foreground", children: contactEmail })] }), jsx(Button, { variant: "link", size: "link", onClick: onBack, children: t("CheckoutEmbed.Shipping.change") })] }), jsxs("div", { className: "flex items-center justify-between text-sm", children: [jsxs("p", { children: [jsx("span", { className: "font-medium", children: t("CheckoutEmbed.Shipping.address") }), " ", jsx("span", { className: "text-muted-foreground", children: shippingAddress })] }), jsx(Button, { variant: "link", size: "link", onClick: onBack, children: t("CheckoutEmbed.Shipping.change") })] })] }), jsx(Form, Object.assign({}, form, { children: jsxs("form", { onSubmit: form.handleSubmit(onSubmit), className: "space-y-4", children: [shipments.map((shipment) => (jsx(SingleShipmentSection, { shipment: shipment, shippingRates: shippingRates, form: form, setFormData: setFormData, formData: formData, currency: currency, exchangeRate: exchangeRate, locale: locale, countryCode: countryCode, multipleShipments: shipments.length > 1 }, shipment.id))), jsx(FormMessage, { children: (_a = form.formState.errors.root) === null || _a === void 0 ? void 0 : _a.message }), jsxs("div", { className: "flex items-center justify-between pt-4", children: [jsxs(Button, { type: "button", variant: "ghost", onClick: onBack, children: [jsx(ChevronLeft, {}), t("CheckoutEmbed.Shipping.back")] }), jsx(SubmitButton, { isSubmitting: form.formState.isSubmitting, isValid: isButtonEnabled, children: t("CheckoutEmbed.Shipping.button") })] })] }) }))] }));
|
|
41310
41443
|
}
|
|
41444
|
+
const SingleShipmentSection = ({ shippingRates, form, currency, exchangeRate, locale, countryCode, setFormData, formData, multipleShipments, shipment, }) => {
|
|
41445
|
+
var _a;
|
|
41446
|
+
const { t } = useTranslation();
|
|
41447
|
+
const shipmentId = shipment.id;
|
|
41448
|
+
const currentRateId = form.watch(`${shipmentId}.rateId`);
|
|
41449
|
+
// TODO: construct the headline
|
|
41450
|
+
return (jsxs("div", { children: [multipleShipments && (jsx("h3", { className: "text-lg font-medium", children: (_a = shipment.shipmentData) === null || _a === void 0 ? void 0 : _a.name })), shippingRates.length === 0 &&
|
|
41451
|
+
Array.from({ length: 3 }).map((_, index) => (jsx(ShippingRateLoading, {}, index))), shippingRates.map((rate) => {
|
|
41452
|
+
const pickupPointDisplayName = form.watch(`${shipmentId}.pickupPointDisplayName`);
|
|
41453
|
+
const rateId = rate.provider + rate.name;
|
|
41454
|
+
const intPrice = Math.ceil(Number(rate.priceInCents));
|
|
41455
|
+
const displayPrice = storeHelpers.formatPrice(intPrice, currency, exchangeRate);
|
|
41456
|
+
const description = rate.provider === "zasilkovna"
|
|
41457
|
+
? t("CheckoutEmbed.Shipping.description.zasilkovna")
|
|
41458
|
+
: t("CheckoutEmbed.Shipping.description.other");
|
|
41459
|
+
return (jsx(ShippingOptionWrapper, { rate: rate, onPickupPointSelected: (pickupPointId, pickupPointName) => {
|
|
41460
|
+
const newData = {
|
|
41461
|
+
rateId,
|
|
41462
|
+
provider: rate.provider,
|
|
41463
|
+
priceInCents: intPrice,
|
|
41464
|
+
name: rate.name,
|
|
41465
|
+
pickupPointId: rate.provider === "zasilkovna" ? pickupPointId : "",
|
|
41466
|
+
pickupPointDisplayName: rate.provider === "zasilkovna" ? pickupPointName : "",
|
|
41467
|
+
};
|
|
41468
|
+
form.setValue(`${shipmentId}.rateId`, newData.rateId);
|
|
41469
|
+
form.setValue(`${shipmentId}.provider`, newData.provider);
|
|
41470
|
+
form.setValue(`${shipmentId}.name`, newData.name);
|
|
41471
|
+
form.setValue(`${shipmentId}.priceInCents`, newData.priceInCents);
|
|
41472
|
+
form.setValue(`${shipmentId}.pickupPointId`, newData.pickupPointId);
|
|
41473
|
+
form.setValue(`${shipmentId}.pickupPointDisplayName`, newData.pickupPointDisplayName);
|
|
41474
|
+
setFormData(Object.assign(Object.assign({}, formData), { shipping: Object.assign(Object.assign({}, formData.shipping), { [shipmentId]: newData }) }));
|
|
41475
|
+
}, locale: locale, countryCode: countryCode, children: jsxs("div", { className: clsx("bg-background cursor-pointer rounded-md border p-4", {
|
|
41476
|
+
"bg-muted border-primary": currentRateId === rateId,
|
|
41477
|
+
}), children: [jsxs("div", { className: "flex w-full items-center justify-between", children: [jsx("p", { children: rate.name }), jsx("p", { children: displayPrice })] }), jsx("p", { className: "text-muted-foreground text-sm", children: description }), pickupPointDisplayName && (jsxs(Fragment, { children: [jsx("hr", { className: "my-2" }), jsxs("p", { className: "text-muted-foreground text-sm", children: [t("CheckoutEmbed.Shipping.description.shippedTo"), " ", jsx("span", { className: "text-foreground", children: pickupPointDisplayName })] })] }))] }) }, rateId));
|
|
41478
|
+
})] }));
|
|
41479
|
+
};
|
|
41311
41480
|
function ShippingRateLoading() {
|
|
41312
41481
|
return (jsxs("div", { className: clsx("bg-background grid cursor-pointer gap-[10px] rounded-md border p-4"), children: [jsxs("div", { className: "flex w-full items-center justify-between", children: [jsx(Skeleton, { className: "h-5 w-12" }), jsx(Skeleton, { className: "h-5 w-16" })] }), jsx(Skeleton, { className: "h-3.5 w-40" })] }));
|
|
41313
41482
|
}
|
|
@@ -41325,14 +41494,14 @@ const resetFormStore = (formData) => {
|
|
|
41325
41494
|
localStorage.setItem("checkout", JSON.stringify(Object.assign(Object.assign({}, currentState), { state: Object.assign(Object.assign({}, currentState.state), { step: "customer", formData: { customer: formData.customer } }) })));
|
|
41326
41495
|
};
|
|
41327
41496
|
|
|
41328
|
-
function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl, clientSecret, customer, currency, checkoutAppearance, fonts, locale, setShippingCost, exchangeRate, paymentSecret, publicKey, paymentComponentKey, clientProxy, latitude, longitude, currentAlpha3CountryCode, }) {
|
|
41497
|
+
function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl, clientSecret, customer, currency, checkoutAppearance, fonts, locale, setShippingCost, exchangeRate, paymentSecret, publicKey, paymentComponentKey, clientProxy, latitude, longitude, currentAlpha3CountryCode, shipments, }) {
|
|
41329
41498
|
const { formData, setFormData, step, setStep, checkoutId: storedCheckoutId, setCheckoutId, } = useFormStore();
|
|
41330
41499
|
const [shippingRates, setShippingRates] = useState([]);
|
|
41331
41500
|
const validateStep = useCallback(() => {
|
|
41332
41501
|
if (step === "customer")
|
|
41333
41502
|
return;
|
|
41334
41503
|
const isShippingValid = formData.shipping &&
|
|
41335
|
-
|
|
41504
|
+
shipmentsFormSchema.safeParse(formData.shipping).success;
|
|
41336
41505
|
const isCustomerValid = formData.customer && customerSchema.safeParse(formData.customer).success;
|
|
41337
41506
|
if (step === "shipping" && !isCustomerValid) {
|
|
41338
41507
|
setStep("customer");
|
|
@@ -41462,14 +41631,19 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
|
|
|
41462
41631
|
const handleShippingSubmit = (data) => __awaiter(this, void 0, void 0, function* () {
|
|
41463
41632
|
const newFormData = Object.assign(Object.assign({}, formData), { shipping: data });
|
|
41464
41633
|
setFormData(newFormData);
|
|
41465
|
-
|
|
41634
|
+
const shipments = Object.entries(data).map(([id, shipmentFormData]) => ({
|
|
41635
|
+
id: id,
|
|
41466
41636
|
shipmentData: {
|
|
41467
|
-
provider:
|
|
41468
|
-
pickupPointId:
|
|
41469
|
-
name:
|
|
41637
|
+
provider: shipmentFormData.provider,
|
|
41638
|
+
pickupPointId: shipmentFormData.pickupPointId,
|
|
41639
|
+
name: shipmentFormData.name,
|
|
41640
|
+
priceInCents: shipmentFormData.priceInCents,
|
|
41470
41641
|
},
|
|
41642
|
+
}));
|
|
41643
|
+
yield storeClient.updateCheckout(clientSecret, checkoutId, {
|
|
41644
|
+
shipments,
|
|
41471
41645
|
});
|
|
41472
|
-
setShippingCost(
|
|
41646
|
+
setShippingCost(shipments.reduce((acc, shipment) => acc + shipment.shipmentData.priceInCents, 0));
|
|
41473
41647
|
setStep("payment");
|
|
41474
41648
|
});
|
|
41475
41649
|
// Navigate back to previous step
|
|
@@ -41487,10 +41661,10 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
|
|
|
41487
41661
|
};
|
|
41488
41662
|
const renderStep = () => {
|
|
41489
41663
|
if (step === "payment" && formData.customer && formData.shipping) {
|
|
41490
|
-
return (jsx(PaymentForm, { paymentComponentKey: paymentComponentKey, locale: locale, fonts: fonts, checkoutAppearance: checkoutAppearance, paymentSecret: paymentSecret, onSuccess: onSuccess, onError: onError, onBack: handleBack, onDoubleBack: handleDoubleBack, contactEmail: formData.customer.email,
|
|
41664
|
+
return (jsx(PaymentForm, { paymentComponentKey: paymentComponentKey, locale: locale, fonts: fonts, checkoutAppearance: checkoutAppearance, paymentSecret: paymentSecret, onSuccess: onSuccess, onError: onError, onBack: handleBack, onDoubleBack: handleDoubleBack, contactEmail: formData.customer.email, address: formatAddress(formData.customer.address), shippingFormData: formData.shipping, publicKey: publicKey }));
|
|
41491
41665
|
}
|
|
41492
41666
|
if (step === "shipping" && formData.customer) {
|
|
41493
|
-
return (jsx(
|
|
41667
|
+
return (jsx(ShipmentsForm, { setFormData: setFormData, formData: formData, shippingRates: shippingRates, initialData: formData.shipping, onSubmit: handleShippingSubmit, onBack: handleBack, contactEmail: formData.customer.email, shippingAddress: formatAddress(formData.customer.address), currency: currency, exchangeRate: exchangeRate, locale: locale, countryCode: formData.customer.address.countryCode, shipments: shipments }));
|
|
41494
41668
|
}
|
|
41495
41669
|
return (jsx(CustomerForm, { initialData: formData.customer, onSubmit: handleCustomerSubmit, clientProxy: clientProxy, clientSecret: clientSecret, latitude: latitude, longitude: longitude, currentAlpha3CountryCode: currentAlpha3CountryCode, locale: locale }));
|
|
41496
41670
|
};
|
|
@@ -41535,8 +41709,6 @@ function DiscountCode({ applyDiscountCode, }) {
|
|
|
41535
41709
|
}
|
|
41536
41710
|
|
|
41537
41711
|
function CheckoutSummary({ appliedDiscounts, lineItems, shipping, tax, currency, onCancel, exchangeRate, applyDiscountCode, removeDiscount, }) {
|
|
41538
|
-
var _a, _b;
|
|
41539
|
-
const { formData } = useFormStore();
|
|
41540
41712
|
const [isOpen, setIsOpen] = useState(false);
|
|
41541
41713
|
const { t } = useTranslation();
|
|
41542
41714
|
const subtotal = lineItems.reduce((acc, item) => {
|
|
@@ -41544,7 +41716,7 @@ function CheckoutSummary({ appliedDiscounts, lineItems, shipping, tax, currency,
|
|
|
41544
41716
|
const productItem = ((_a = item.productData) === null || _a === void 0 ? void 0 : _a.selectedVariant) || item.productData;
|
|
41545
41717
|
return acc + ((_b = productItem === null || productItem === void 0 ? void 0 : productItem.priceInCents) !== null && _b !== void 0 ? _b : 0) * item.quantity;
|
|
41546
41718
|
}, 0);
|
|
41547
|
-
const shippingPrice =
|
|
41719
|
+
const shippingPrice = shipping !== null && shipping !== void 0 ? shipping : 0;
|
|
41548
41720
|
const total = subtotal + (tax !== null && tax !== void 0 ? tax : 0) + shippingPrice;
|
|
41549
41721
|
const isShippingFree = subtotal > shippingPrice &&
|
|
41550
41722
|
appliedDiscounts.some((discount) => discount.discount.type === "FREE_SHIPPING");
|
|
@@ -41670,6 +41842,21 @@ function CheckoutEmbedComponent({ checkoutId, config }) {
|
|
|
41670
41842
|
const [latitude, setLatitude] = useState(undefined);
|
|
41671
41843
|
const [longitude, setLongitude] = useState(undefined);
|
|
41672
41844
|
const [currentAlpha3CountryCode, setCurrentAlpha3CountryCode] = useState(undefined);
|
|
41845
|
+
const [totalShipping, setTotalShipping] = useState(null);
|
|
41846
|
+
useEffect(() => {
|
|
41847
|
+
if (checkout) {
|
|
41848
|
+
const areAllShipmentsFilled = checkout.shipments.every((shipment) => { var _a; return (_a = shipment.shipmentData) === null || _a === void 0 ? void 0 : _a.provider; });
|
|
41849
|
+
if (areAllShipmentsFilled) {
|
|
41850
|
+
setTotalShipping(checkout.shipments.reduce((acc, shipment) => {
|
|
41851
|
+
var _a, _b;
|
|
41852
|
+
return acc + ((_b = (_a = shipment.shipmentData) === null || _a === void 0 ? void 0 : _a.priceInCents) !== null && _b !== void 0 ? _b : 0);
|
|
41853
|
+
}, 0));
|
|
41854
|
+
}
|
|
41855
|
+
else {
|
|
41856
|
+
setTotalShipping(null);
|
|
41857
|
+
}
|
|
41858
|
+
}
|
|
41859
|
+
}, [checkout]);
|
|
41673
41860
|
useEffect(() => {
|
|
41674
41861
|
getIpInfo().then(({ latitude, longitude, countryCodeIso3 }) => {
|
|
41675
41862
|
setLatitude(latitude);
|
|
@@ -41719,11 +41906,6 @@ function CheckoutEmbedComponent({ checkoutId, config }) {
|
|
|
41719
41906
|
if (!checkout && !loading) {
|
|
41720
41907
|
throw new Error("Checkout not found");
|
|
41721
41908
|
}
|
|
41722
|
-
const setShippingCost = (cost) => {
|
|
41723
|
-
if (!checkout)
|
|
41724
|
-
return;
|
|
41725
|
-
setCheckout(Object.assign(Object.assign({}, checkout), { shipping: cost }));
|
|
41726
|
-
};
|
|
41727
41909
|
function generatePaymentSecret() {
|
|
41728
41910
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41729
41911
|
console.log("[Payment Debug] Generating new payment secret");
|
|
@@ -41804,7 +41986,7 @@ function CheckoutEmbedComponent({ checkoutId, config }) {
|
|
|
41804
41986
|
}
|
|
41805
41987
|
});
|
|
41806
41988
|
const calculateTotalWithDiscounts = (checkout) => {
|
|
41807
|
-
var _a
|
|
41989
|
+
var _a;
|
|
41808
41990
|
if (!checkout)
|
|
41809
41991
|
return 0;
|
|
41810
41992
|
const subtotal = checkout.lineItems.reduce((acc, item) => {
|
|
@@ -41812,8 +41994,8 @@ function CheckoutEmbedComponent({ checkoutId, config }) {
|
|
|
41812
41994
|
const productItem = ((_a = item.productData) === null || _a === void 0 ? void 0 : _a.selectedVariant) || item.productData;
|
|
41813
41995
|
return acc + ((_b = productItem === null || productItem === void 0 ? void 0 : productItem.priceInCents) !== null && _b !== void 0 ? _b : 0) * item.quantity;
|
|
41814
41996
|
}, 0);
|
|
41815
|
-
const shippingPrice =
|
|
41816
|
-
const total = subtotal + ((
|
|
41997
|
+
const shippingPrice = totalShipping !== null && totalShipping !== void 0 ? totalShipping : 0;
|
|
41998
|
+
const total = subtotal + ((_a = checkout.tax) !== null && _a !== void 0 ? _a : 0) + shippingPrice;
|
|
41817
41999
|
const isShippingFree = subtotal > shippingPrice &&
|
|
41818
42000
|
checkout.appliedDiscounts.some((discount) => discount.discount.type === "FREE_SHIPPING");
|
|
41819
42001
|
const filteredDiscounts = checkout.appliedDiscounts.filter((discount) => discount.discount.type !== "FREE_SHIPPING");
|
|
@@ -41844,7 +42026,7 @@ function CheckoutEmbedComponent({ checkoutId, config }) {
|
|
|
41844
42026
|
};
|
|
41845
42027
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
41846
42028
|
}, []);
|
|
41847
|
-
return (jsx(ShadowWrapper, { shadowRef: shadowRef, children: jsxs("div", { className: "checkout-embed flex h-max flex-col gap-6 py-4 md:grid md:grid-cols-7 md:gap-0 md:py-12", children: [jsx(Appearance, { appearance: appearance, fonts: config.fonts, shadowRef: shadowRef }), jsx("div", { className: "h-max px-4 md:col-span-4 md:px-8", children: loading ? (jsx(CheckoutFormLoading, {})) : (jsx(CheckoutForm, { locale: locale, setShippingCost:
|
|
42029
|
+
return (jsx(ShadowWrapper, { shadowRef: shadowRef, children: jsxs("div", { className: "checkout-embed flex h-max flex-col gap-6 py-4 md:grid md:grid-cols-7 md:gap-0 md:py-12", children: [jsx(Appearance, { appearance: appearance, fonts: config.fonts, shadowRef: shadowRef }), jsx("div", { className: "h-max px-4 md:col-span-4 md:px-8", children: loading ? (jsx(CheckoutFormLoading, {})) : (jsx(CheckoutForm, { locale: locale, setShippingCost: setTotalShipping, storeClient: storeClient, fonts: config.fonts, checkoutAppearance: appearance, currency: (_a = checkout === null || checkout === void 0 ? void 0 : checkout.currency) !== null && _a !== void 0 ? _a : "", customer: checkout === null || checkout === void 0 ? void 0 : checkout.customer, cancelUrl: cancelUrl, checkoutId: checkoutId, clientSecret: clientSecret, onSuccess: onSuccess, onError: onError, exchangeRate: (_b = checkout === null || checkout === void 0 ? void 0 : checkout.exchangeRate) !== null && _b !== void 0 ? _b : 1, publicKey: publicKey, paymentSecret: paymentSecret, paymentComponentKey: paymentComponentKey, clientProxy: clientProxy, latitude: latitude, longitude: longitude, currentAlpha3CountryCode: currentAlpha3CountryCode, shipments: (checkout === null || checkout === void 0 ? void 0 : checkout.shipments) || [] })) }), jsxs("div", { className: "order-first h-max px-4 md:order-last md:col-span-3 md:px-8", children: [jsx(Toaster, {}), loading ? (jsx(CheckoutSummaryLoading, {})) : (jsx(CheckoutSummary, { currency: (_c = checkout === null || checkout === void 0 ? void 0 : checkout.currency) !== null && _c !== void 0 ? _c : "", lineItems: (_d = checkout === null || checkout === void 0 ? void 0 : checkout.lineItems) !== null && _d !== void 0 ? _d : [], shipping: totalShipping, tax: checkout === null || checkout === void 0 ? void 0 : checkout.tax, onCancel: onCancel, exchangeRate: (_e = checkout === null || checkout === void 0 ? void 0 : checkout.exchangeRate) !== null && _e !== void 0 ? _e : 1, applyDiscountCode: applyDiscountCode, appliedDiscounts: (_f = checkout === null || checkout === void 0 ? void 0 : checkout.appliedDiscounts) !== null && _f !== void 0 ? _f : [], removeDiscount: removeDiscount }))] })] }) }));
|
|
41848
42030
|
}
|
|
41849
42031
|
const CheckoutEmbed = memo(CheckoutEmbedComponent);
|
|
41850
42032
|
|