@betterstore/react 0.3.88 → 0.5.2
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 +1 -0
- package/dist/components/cart/useCart.d.ts.map +1 -0
- package/dist/components/checkout-embed/appearance.d.ts +2 -1
- package/dist/components/checkout-embed/appearance.d.ts.map +1 -0
- package/dist/components/checkout-embed/checkout-form-loading.d.ts +2 -2
- package/dist/components/checkout-embed/checkout-form-loading.d.ts.map +1 -0
- package/dist/components/checkout-embed/checkout-form.d.ts +2 -2
- package/dist/components/checkout-embed/checkout-form.d.ts.map +1 -0
- package/dist/components/checkout-embed/checkout-schema.d.ts +1 -0
- package/dist/components/checkout-embed/checkout-schema.d.ts.map +1 -0
- package/dist/components/checkout-embed/index.d.ts +3 -2
- package/dist/components/checkout-embed/index.d.ts.map +1 -0
- package/dist/components/checkout-embed/steps/customer/address-input.d.ts +2 -2
- package/dist/components/checkout-embed/steps/customer/address-input.d.ts.map +1 -0
- package/dist/components/checkout-embed/steps/customer/address-utils.d.ts +1 -0
- package/dist/components/checkout-embed/steps/customer/address-utils.d.ts.map +1 -0
- package/dist/components/checkout-embed/steps/customer/form.d.ts +2 -2
- package/dist/components/checkout-embed/steps/customer/form.d.ts.map +1 -0
- package/dist/components/checkout-embed/steps/payment/form.d.ts +2 -2
- package/dist/components/checkout-embed/steps/payment/form.d.ts.map +1 -0
- package/dist/components/checkout-embed/steps/shipping/form.d.ts +2 -2
- package/dist/components/checkout-embed/steps/shipping/form.d.ts.map +1 -0
- package/dist/components/checkout-embed/steps/shipping/providers/zasilkovna.d.ts +2 -1
- package/dist/components/checkout-embed/steps/shipping/providers/zasilkovna.d.ts.map +1 -0
- package/dist/components/checkout-embed/steps/shipping/shipping-option-wrapper.d.ts +2 -1
- package/dist/components/checkout-embed/steps/shipping/shipping-option-wrapper.d.ts.map +1 -0
- package/dist/components/checkout-embed/steps/summary/discount-code.d.ts +2 -2
- package/dist/components/checkout-embed/steps/summary/discount-code.d.ts.map +1 -0
- package/dist/components/checkout-embed/steps/summary/index.d.ts +2 -2
- package/dist/components/checkout-embed/steps/summary/index.d.ts.map +1 -0
- package/dist/components/checkout-embed/steps/summary/loading.d.ts +2 -2
- package/dist/components/checkout-embed/steps/summary/loading.d.ts.map +1 -0
- package/dist/components/checkout-embed/useFormStore.d.ts +1 -0
- package/dist/components/checkout-embed/useFormStore.d.ts.map +1 -0
- package/dist/components/compounds/form/country-dropdown.d.ts +1 -0
- package/dist/components/compounds/form/country-dropdown.d.ts.map +1 -0
- package/dist/components/compounds/form/form-messages.d.ts +2 -1
- package/dist/components/compounds/form/form-messages.d.ts.map +1 -0
- package/dist/components/compounds/form/input-group.d.ts +3 -2
- package/dist/components/compounds/form/input-group.d.ts.map +1 -0
- package/dist/components/compounds/form/submit-button.d.ts +3 -3
- package/dist/components/compounds/form/submit-button.d.ts.map +1 -0
- package/dist/components/iframe-wrapper.d.ts +2 -1
- package/dist/components/iframe-wrapper.d.ts.map +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/payment-element/appearance.d.ts +1 -0
- package/dist/components/payment-element/appearance.d.ts.map +1 -0
- package/dist/components/payment-element/checkout-form.d.ts +2 -1
- package/dist/components/payment-element/checkout-form.d.ts.map +1 -0
- package/dist/components/payment-element/index.d.ts +2 -1
- package/dist/components/payment-element/index.d.ts.map +1 -0
- package/dist/components/payment-element/useCheckout.d.ts +1 -0
- package/dist/components/payment-element/useCheckout.d.ts.map +1 -0
- package/dist/components/ui/button.d.ts +2 -1
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/checkbox.d.ts +2 -1
- package/dist/components/ui/checkbox.d.ts.map +1 -0
- package/dist/components/ui/command.d.ts +13 -12
- package/dist/components/ui/command.d.ts.map +1 -0
- package/dist/components/ui/dialog.d.ts +11 -10
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu.d.ts +18 -17
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/form.d.ts +7 -6
- package/dist/components/ui/form.d.ts.map +1 -0
- package/dist/components/ui/input.d.ts +2 -1
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/label.d.ts +2 -1
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/popover.d.ts +7 -6
- package/dist/components/ui/popover.d.ts.map +1 -0
- package/dist/components/ui/radio-group.d.ts +4 -3
- package/dist/components/ui/radio-group.d.ts.map +1 -0
- package/dist/components/ui/select.d.ts +11 -10
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/skeleton.d.ts +2 -1
- package/dist/components/ui/skeleton.d.ts.map +1 -0
- package/dist/components/ui/sonner.d.ts +2 -2
- package/dist/components/ui/sonner.d.ts.map +1 -0
- package/dist/dev/dev.d.ts +2 -0
- package/dist/dev/dev.d.ts.map +1 -0
- package/dist/i18n/index.d.ts +1 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/index.cjs.js +406 -613
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +406 -613
- package/dist/lib/betterstore.d.ts +1 -0
- package/dist/lib/betterstore.d.ts.map +1 -0
- package/dist/lib/error-message-utils.d.ts +1 -0
- package/dist/lib/error-message-utils.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +1 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -0
- package/package.json +33 -35
- package/.prettierignore +0 -3
- package/.prettierrc +0 -8
- package/CHANGELOG.md +0 -908
- package/CONTRIBUTING.md +0 -52
- package/LICENSE +0 -21
- package/README.md +0 -34
- package/components.json +0 -21
- package/postcss.config.cjs +0 -6
- package/rollup.config.mjs +0 -103
- package/tailwind.config.js +0 -12
package/dist/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import React__default, { createContext, useContext, useCallback, useState, useRef, useEffect, useLayoutEffect, forwardRef, createElement, useMemo, Children, isValidElement, cloneElement, Fragment, useReducer, memo } from 'react';
|
|
3
|
+
import { jsxs, jsx, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
3
4
|
import * as ReactDOM from 'react-dom';
|
|
4
5
|
import ReactDOM__default, { flushSync } from 'react-dom';
|
|
5
|
-
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
6
6
|
|
|
7
7
|
const createStoreImpl = (createState) => {
|
|
8
8
|
let state;
|
|
@@ -2664,7 +2664,7 @@ const cookie = {
|
|
|
2664
2664
|
cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);
|
|
2665
2665
|
}
|
|
2666
2666
|
if (domain) cookieOptions.domain = domain;
|
|
2667
|
-
document.cookie = serializeCookie(name,
|
|
2667
|
+
document.cookie = serializeCookie(name, value, cookieOptions);
|
|
2668
2668
|
},
|
|
2669
2669
|
read(name) {
|
|
2670
2670
|
const nameEQ = `${name}=`;
|
|
@@ -2676,8 +2676,8 @@ const cookie = {
|
|
|
2676
2676
|
}
|
|
2677
2677
|
return null;
|
|
2678
2678
|
},
|
|
2679
|
-
remove(name) {
|
|
2680
|
-
this.create(name, '', -1);
|
|
2679
|
+
remove(name, domain) {
|
|
2680
|
+
this.create(name, '', -1, domain);
|
|
2681
2681
|
}
|
|
2682
2682
|
};
|
|
2683
2683
|
var cookie$1 = {
|
|
@@ -2737,6 +2737,46 @@ var querystring = {
|
|
|
2737
2737
|
}
|
|
2738
2738
|
};
|
|
2739
2739
|
|
|
2740
|
+
var hash = {
|
|
2741
|
+
name: 'hash',
|
|
2742
|
+
// Deconstruct the options object and extract the lookupHash property and the lookupFromHashIndex property
|
|
2743
|
+
lookup(_ref) {
|
|
2744
|
+
let {
|
|
2745
|
+
lookupHash,
|
|
2746
|
+
lookupFromHashIndex
|
|
2747
|
+
} = _ref;
|
|
2748
|
+
let found;
|
|
2749
|
+
if (typeof window !== 'undefined') {
|
|
2750
|
+
const {
|
|
2751
|
+
hash
|
|
2752
|
+
} = window.location;
|
|
2753
|
+
if (hash && hash.length > 2) {
|
|
2754
|
+
const query = hash.substring(1);
|
|
2755
|
+
if (lookupHash) {
|
|
2756
|
+
const params = query.split('&');
|
|
2757
|
+
for (let i = 0; i < params.length; i++) {
|
|
2758
|
+
const pos = params[i].indexOf('=');
|
|
2759
|
+
if (pos > 0) {
|
|
2760
|
+
const key = params[i].substring(0, pos);
|
|
2761
|
+
if (key === lookupHash) {
|
|
2762
|
+
found = params[i].substring(pos + 1);
|
|
2763
|
+
}
|
|
2764
|
+
}
|
|
2765
|
+
}
|
|
2766
|
+
}
|
|
2767
|
+
if (found) return found;
|
|
2768
|
+
if (!found && lookupFromHashIndex > -1) {
|
|
2769
|
+
const language = hash.match(/\/([a-zA-Z-]*)/g);
|
|
2770
|
+
if (!Array.isArray(language)) return undefined;
|
|
2771
|
+
const index = typeof lookupFromHashIndex === 'number' ? lookupFromHashIndex : 0;
|
|
2772
|
+
return language[index]?.replace('/', '');
|
|
2773
|
+
}
|
|
2774
|
+
}
|
|
2775
|
+
}
|
|
2776
|
+
return found;
|
|
2777
|
+
}
|
|
2778
|
+
};
|
|
2779
|
+
|
|
2740
2780
|
let hasLocalStorageSupport = null;
|
|
2741
2781
|
const localStorageAvailable = () => {
|
|
2742
2782
|
if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;
|
|
@@ -2945,6 +2985,7 @@ class Browser {
|
|
|
2945
2985
|
this.addDetector(htmlTag);
|
|
2946
2986
|
this.addDetector(path);
|
|
2947
2987
|
this.addDetector(subdomain);
|
|
2988
|
+
this.addDetector(hash);
|
|
2948
2989
|
}
|
|
2949
2990
|
addDetector(detector) {
|
|
2950
2991
|
this.detectors[detector.name] = detector;
|
|
@@ -4365,6 +4406,10 @@ function toFormData$1(obj, formData, options) {
|
|
|
4365
4406
|
return value.toISOString();
|
|
4366
4407
|
}
|
|
4367
4408
|
|
|
4409
|
+
if (utils$1.isBoolean(value)) {
|
|
4410
|
+
return value.toString();
|
|
4411
|
+
}
|
|
4412
|
+
|
|
4368
4413
|
if (!useBlob && utils$1.isBlob(value)) {
|
|
4369
4414
|
throw new AxiosError$1('Blob is not supported. Use a Buffer instead.');
|
|
4370
4415
|
}
|
|
@@ -6273,7 +6318,7 @@ var fetchAdapter = isFetchSupported && (async (config) => {
|
|
|
6273
6318
|
credentials: isCredentialsSupported ? withCredentials : undefined
|
|
6274
6319
|
});
|
|
6275
6320
|
|
|
6276
|
-
let response = await fetch(request);
|
|
6321
|
+
let response = await fetch(request, fetchOptions);
|
|
6277
6322
|
|
|
6278
6323
|
const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
|
|
6279
6324
|
|
|
@@ -6479,7 +6524,7 @@ function dispatchRequest(config) {
|
|
|
6479
6524
|
});
|
|
6480
6525
|
}
|
|
6481
6526
|
|
|
6482
|
-
const VERSION$1 = "1.
|
|
6527
|
+
const VERSION$1 = "1.10.0";
|
|
6483
6528
|
|
|
6484
6529
|
const validators$1 = {};
|
|
6485
6530
|
|
|
@@ -7131,30 +7176,11 @@ const {
|
|
|
7131
7176
|
mergeConfig
|
|
7132
7177
|
} = axios;
|
|
7133
7178
|
|
|
7134
|
-
|
|
7135
|
-
return new Promise((resolve, reject) => {
|
|
7136
|
-
var fulfilled = (value) => {
|
|
7137
|
-
try {
|
|
7138
|
-
step(generator.next(value));
|
|
7139
|
-
} catch (e) {
|
|
7140
|
-
reject(e);
|
|
7141
|
-
}
|
|
7142
|
-
};
|
|
7143
|
-
var rejected = (value) => {
|
|
7144
|
-
try {
|
|
7145
|
-
step(generator.throw(value));
|
|
7146
|
-
} catch (e) {
|
|
7147
|
-
reject(e);
|
|
7148
|
-
}
|
|
7149
|
-
};
|
|
7150
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
7151
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
7152
|
-
});
|
|
7153
|
-
};
|
|
7179
|
+
// src/utils/axios.ts
|
|
7154
7180
|
var API_BASE_URL = "https://api.betterstore.io/v1";
|
|
7155
7181
|
var createApiClient = (apiKey, proxy) => {
|
|
7156
7182
|
const client = axios.create({
|
|
7157
|
-
baseURL: proxy
|
|
7183
|
+
baseURL: proxy ?? API_BASE_URL,
|
|
7158
7184
|
headers: {
|
|
7159
7185
|
"Content-Type": "application/json",
|
|
7160
7186
|
Authorization: `Bearer ${apiKey}`,
|
|
@@ -7166,7 +7192,6 @@ var createApiClient = (apiKey, proxy) => {
|
|
|
7166
7192
|
client.interceptors.response.use(
|
|
7167
7193
|
(response) => response.data,
|
|
7168
7194
|
(error) => {
|
|
7169
|
-
var _a, _b;
|
|
7170
7195
|
const apiError = {
|
|
7171
7196
|
isError: true,
|
|
7172
7197
|
status: 500,
|
|
@@ -7174,8 +7199,8 @@ var createApiClient = (apiKey, proxy) => {
|
|
|
7174
7199
|
};
|
|
7175
7200
|
if (error.response) {
|
|
7176
7201
|
apiError.status = error.response.status;
|
|
7177
|
-
apiError.message =
|
|
7178
|
-
apiError.code =
|
|
7202
|
+
apiError.message = error.response.data?.error || "Server error occurred";
|
|
7203
|
+
apiError.code = error.response.data?.code;
|
|
7179
7204
|
apiError.details = error.response.data;
|
|
7180
7205
|
} else if (error.request) {
|
|
7181
7206
|
apiError.status = 503;
|
|
@@ -7200,169 +7225,150 @@ var createApiClient = (apiKey, proxy) => {
|
|
|
7200
7225
|
|
|
7201
7226
|
// src/client/index.ts
|
|
7202
7227
|
var Client = class {
|
|
7228
|
+
proxy;
|
|
7203
7229
|
constructor(proxy) {
|
|
7204
7230
|
this.proxy = proxy;
|
|
7205
7231
|
}
|
|
7206
7232
|
/**
|
|
7207
7233
|
* Retrieve a checkout session by ID
|
|
7208
7234
|
*/
|
|
7209
|
-
retrieveCheckout(clientSecret, checkoutId) {
|
|
7210
|
-
|
|
7211
|
-
|
|
7212
|
-
|
|
7213
|
-
|
|
7214
|
-
|
|
7215
|
-
|
|
7216
|
-
|
|
7217
|
-
|
|
7218
|
-
|
|
7219
|
-
return data;
|
|
7220
|
-
});
|
|
7235
|
+
async retrieveCheckout(clientSecret, checkoutId) {
|
|
7236
|
+
const apiClient = createApiClient(clientSecret, this.proxy);
|
|
7237
|
+
const data = await apiClient.get(
|
|
7238
|
+
`/checkout/${checkoutId}`
|
|
7239
|
+
);
|
|
7240
|
+
if ("isError" in data && data.isError || !data || !("id" in data)) {
|
|
7241
|
+
console.error(`Checkout session with id ${checkoutId} not found`);
|
|
7242
|
+
return null;
|
|
7243
|
+
}
|
|
7244
|
+
return data;
|
|
7221
7245
|
}
|
|
7222
7246
|
/**
|
|
7223
7247
|
* Update a checkout session
|
|
7224
7248
|
*/
|
|
7225
|
-
updateCheckout(clientSecret, checkoutId, params) {
|
|
7226
|
-
|
|
7227
|
-
|
|
7228
|
-
|
|
7229
|
-
|
|
7230
|
-
|
|
7231
|
-
|
|
7232
|
-
|
|
7233
|
-
|
|
7234
|
-
|
|
7235
|
-
|
|
7236
|
-
return data;
|
|
7237
|
-
});
|
|
7249
|
+
async updateCheckout(clientSecret, checkoutId, params) {
|
|
7250
|
+
const apiClient = createApiClient(clientSecret, this.proxy);
|
|
7251
|
+
const data = await apiClient.put(
|
|
7252
|
+
`/checkout/${checkoutId}`,
|
|
7253
|
+
params
|
|
7254
|
+
);
|
|
7255
|
+
if ("isError" in data && data.isError || !data || !("id" in data)) {
|
|
7256
|
+
console.error(`Checkout session with id ${checkoutId} not found`);
|
|
7257
|
+
return null;
|
|
7258
|
+
}
|
|
7259
|
+
return data;
|
|
7238
7260
|
}
|
|
7239
7261
|
/**
|
|
7240
7262
|
* Apply a discount code to a checkout session
|
|
7241
7263
|
*/
|
|
7242
|
-
applyDiscountCode(clientSecret, checkoutId, discountCode) {
|
|
7243
|
-
|
|
7244
|
-
|
|
7245
|
-
|
|
7246
|
-
|
|
7247
|
-
|
|
7248
|
-
|
|
7249
|
-
|
|
7250
|
-
|
|
7251
|
-
|
|
7252
|
-
return data;
|
|
7253
|
-
});
|
|
7264
|
+
async applyDiscountCode(clientSecret, checkoutId, discountCode) {
|
|
7265
|
+
const apiClient = createApiClient(clientSecret, this.proxy);
|
|
7266
|
+
const data = await apiClient.post(
|
|
7267
|
+
`/checkout/${checkoutId}/discounts/apply`,
|
|
7268
|
+
{ code: discountCode }
|
|
7269
|
+
);
|
|
7270
|
+
if ("isError" in data && data.isError || !data || !("id" in data)) {
|
|
7271
|
+
throw new Error("Failed to apply discount code");
|
|
7272
|
+
}
|
|
7273
|
+
return data;
|
|
7254
7274
|
}
|
|
7255
7275
|
/**
|
|
7256
7276
|
* Remove a discount code from a checkout session
|
|
7257
7277
|
*/
|
|
7258
|
-
removeDiscount(clientSecret, checkoutId, discountId) {
|
|
7259
|
-
|
|
7260
|
-
|
|
7261
|
-
|
|
7262
|
-
|
|
7263
|
-
|
|
7264
|
-
|
|
7265
|
-
|
|
7266
|
-
|
|
7267
|
-
return data;
|
|
7268
|
-
});
|
|
7278
|
+
async removeDiscount(clientSecret, checkoutId, discountId) {
|
|
7279
|
+
const apiClient = createApiClient(clientSecret, this.proxy);
|
|
7280
|
+
const data = await apiClient.delete(
|
|
7281
|
+
`/checkout/${checkoutId}/discounts/${discountId}`
|
|
7282
|
+
);
|
|
7283
|
+
if ("isError" in data && data.isError || !data || !("id" in data)) {
|
|
7284
|
+
throw new Error("Failed to remove discount code");
|
|
7285
|
+
}
|
|
7286
|
+
return data;
|
|
7269
7287
|
}
|
|
7270
7288
|
/**
|
|
7271
7289
|
* Revalidate a checkout session
|
|
7272
7290
|
*/
|
|
7273
|
-
revalidateDiscounts(clientSecret, checkoutId) {
|
|
7274
|
-
|
|
7275
|
-
|
|
7276
|
-
|
|
7277
|
-
|
|
7278
|
-
|
|
7279
|
-
|
|
7280
|
-
|
|
7281
|
-
|
|
7282
|
-
|
|
7283
|
-
return data;
|
|
7284
|
-
});
|
|
7291
|
+
async revalidateDiscounts(clientSecret, checkoutId) {
|
|
7292
|
+
const apiClient = createApiClient(clientSecret, this.proxy);
|
|
7293
|
+
const data = await apiClient.get(
|
|
7294
|
+
`/checkout/${checkoutId}/discounts/revalidate`
|
|
7295
|
+
);
|
|
7296
|
+
if ("isError" in data && data.isError || !data || !("id" in data)) {
|
|
7297
|
+
console.error(`Checkout session with id ${checkoutId} not found`);
|
|
7298
|
+
return null;
|
|
7299
|
+
}
|
|
7300
|
+
return data;
|
|
7285
7301
|
}
|
|
7286
7302
|
/**
|
|
7287
7303
|
* Get shipping rates for a checkout session
|
|
7288
7304
|
*/
|
|
7289
|
-
getCheckoutShippingRates(clientSecret, checkoutId) {
|
|
7290
|
-
|
|
7291
|
-
|
|
7292
|
-
|
|
7293
|
-
|
|
7294
|
-
|
|
7295
|
-
|
|
7296
|
-
|
|
7297
|
-
|
|
7298
|
-
return data;
|
|
7299
|
-
});
|
|
7305
|
+
async getCheckoutShippingRates(clientSecret, checkoutId) {
|
|
7306
|
+
const apiClient = createApiClient(clientSecret, this.proxy);
|
|
7307
|
+
const data = await apiClient.get(
|
|
7308
|
+
`/checkout/shipping/${checkoutId}`
|
|
7309
|
+
);
|
|
7310
|
+
if ("isError" in data && data.isError || !data || !Array.isArray(data)) {
|
|
7311
|
+
return [];
|
|
7312
|
+
}
|
|
7313
|
+
return data;
|
|
7300
7314
|
}
|
|
7301
7315
|
/**
|
|
7302
7316
|
* Generate payment secret for a checkout session
|
|
7303
7317
|
*/
|
|
7304
|
-
generateCheckoutPaymentSecret(clientSecret, checkoutId) {
|
|
7305
|
-
|
|
7306
|
-
|
|
7307
|
-
|
|
7308
|
-
|
|
7309
|
-
|
|
7310
|
-
|
|
7311
|
-
|
|
7312
|
-
|
|
7313
|
-
|
|
7314
|
-
|
|
7315
|
-
};
|
|
7316
|
-
});
|
|
7318
|
+
async generateCheckoutPaymentSecret(clientSecret, checkoutId) {
|
|
7319
|
+
const apiClient = createApiClient(clientSecret, this.proxy);
|
|
7320
|
+
const data = await apiClient.post(`/checkout/payment/${checkoutId}`);
|
|
7321
|
+
if ("isError" in data && data.isError || !data || !("paymentSecret" in data)) {
|
|
7322
|
+
throw new Error("Failed to generate payment secret");
|
|
7323
|
+
}
|
|
7324
|
+
return {
|
|
7325
|
+
paymentSecret: data.paymentSecret,
|
|
7326
|
+
publicKey: data.publicKey,
|
|
7327
|
+
checkoutSession: data.checkoutSession
|
|
7328
|
+
};
|
|
7317
7329
|
}
|
|
7318
7330
|
/**
|
|
7319
7331
|
* Create a new customer
|
|
7320
7332
|
*/
|
|
7321
|
-
createCustomer(clientSecret, params) {
|
|
7322
|
-
|
|
7323
|
-
|
|
7324
|
-
|
|
7325
|
-
|
|
7326
|
-
|
|
7327
|
-
|
|
7328
|
-
|
|
7329
|
-
|
|
7330
|
-
|
|
7331
|
-
return data;
|
|
7332
|
-
});
|
|
7333
|
+
async createCustomer(clientSecret, params) {
|
|
7334
|
+
const apiClient = createApiClient(clientSecret, this.proxy);
|
|
7335
|
+
const data = await apiClient.post(
|
|
7336
|
+
"/customer",
|
|
7337
|
+
params
|
|
7338
|
+
);
|
|
7339
|
+
if ("isError" in data && data.isError || !data || !("id" in data)) {
|
|
7340
|
+
throw new Error("Failed to create customer");
|
|
7341
|
+
}
|
|
7342
|
+
return data;
|
|
7333
7343
|
}
|
|
7334
7344
|
/**
|
|
7335
7345
|
* Retrieve a customer by ID or email
|
|
7336
7346
|
*/
|
|
7337
|
-
retrieveCustomer(clientSecret, idOrEmail) {
|
|
7338
|
-
|
|
7339
|
-
|
|
7340
|
-
|
|
7341
|
-
|
|
7342
|
-
|
|
7343
|
-
|
|
7344
|
-
|
|
7345
|
-
|
|
7346
|
-
|
|
7347
|
-
return data;
|
|
7348
|
-
});
|
|
7347
|
+
async retrieveCustomer(clientSecret, idOrEmail) {
|
|
7348
|
+
const apiClient = createApiClient(clientSecret, this.proxy);
|
|
7349
|
+
const data = await apiClient.get(
|
|
7350
|
+
`/customer/${idOrEmail}`
|
|
7351
|
+
);
|
|
7352
|
+
if ("isError" in data && data.isError || !data || !("id" in data)) {
|
|
7353
|
+
console.error(`Customer with id or email ${idOrEmail} not found`);
|
|
7354
|
+
return null;
|
|
7355
|
+
}
|
|
7356
|
+
return data;
|
|
7349
7357
|
}
|
|
7350
7358
|
/**
|
|
7351
7359
|
* Update a customer
|
|
7352
7360
|
*/
|
|
7353
|
-
updateCustomer(clientSecret, customerId, params) {
|
|
7354
|
-
|
|
7355
|
-
|
|
7356
|
-
|
|
7357
|
-
|
|
7358
|
-
|
|
7359
|
-
|
|
7360
|
-
|
|
7361
|
-
|
|
7362
|
-
|
|
7363
|
-
|
|
7364
|
-
return data;
|
|
7365
|
-
});
|
|
7361
|
+
async updateCustomer(clientSecret, customerId, params) {
|
|
7362
|
+
const apiClient = createApiClient(clientSecret, this.proxy);
|
|
7363
|
+
const data = await apiClient.put(
|
|
7364
|
+
`/customer/${customerId}`,
|
|
7365
|
+
params
|
|
7366
|
+
);
|
|
7367
|
+
if ("isError" in data && data.isError || !data || !("id" in data)) {
|
|
7368
|
+
console.error(`Customer with id ${customerId} not found`);
|
|
7369
|
+
return null;
|
|
7370
|
+
}
|
|
7371
|
+
return data;
|
|
7366
7372
|
}
|
|
7367
7373
|
};
|
|
7368
7374
|
var client_default = Client;
|
|
@@ -7433,12 +7439,12 @@ var currencyLocales = {
|
|
|
7433
7439
|
// Turkish Lira
|
|
7434
7440
|
};
|
|
7435
7441
|
var Helpers = class {
|
|
7442
|
+
proxy;
|
|
7436
7443
|
constructor(proxy) {
|
|
7437
7444
|
this.proxy = proxy;
|
|
7438
7445
|
}
|
|
7439
7446
|
formatCurrency(currency) {
|
|
7440
|
-
|
|
7441
|
-
const locale = (_a = currencyLocales[currency.toUpperCase()]) != null ? _a : void 0;
|
|
7447
|
+
const locale = currencyLocales[currency.toUpperCase()] ?? void 0;
|
|
7442
7448
|
const formattedCurrency = new Intl.NumberFormat(locale, {
|
|
7443
7449
|
style: "currency",
|
|
7444
7450
|
currency,
|
|
@@ -7447,10 +7453,9 @@ var Helpers = class {
|
|
|
7447
7453
|
return formattedCurrency.format(0).replace(/[\d.,\s]/g, "").trim();
|
|
7448
7454
|
}
|
|
7449
7455
|
formatPrice(priceInCents, currency, exchangeRate) {
|
|
7450
|
-
|
|
7451
|
-
const amount = priceInCents / 100 * (exchangeRate != null ? exchangeRate : 1);
|
|
7456
|
+
const amount = priceInCents / 100 * (exchangeRate ?? 1);
|
|
7452
7457
|
const isWhole = amount % 1 === 0;
|
|
7453
|
-
const locale =
|
|
7458
|
+
const locale = currencyLocales[currency.toUpperCase()] ?? void 0;
|
|
7454
7459
|
const formattedPrice = new Intl.NumberFormat(locale, {
|
|
7455
7460
|
style: "currency",
|
|
7456
7461
|
currency,
|
|
@@ -7460,32 +7465,30 @@ var Helpers = class {
|
|
|
7460
7465
|
}).format(amount);
|
|
7461
7466
|
return formattedPrice;
|
|
7462
7467
|
}
|
|
7463
|
-
getExchangeRate(baseCurrency, targetCurrency) {
|
|
7464
|
-
|
|
7465
|
-
|
|
7466
|
-
|
|
7467
|
-
|
|
7468
|
-
|
|
7469
|
-
|
|
7470
|
-
|
|
7471
|
-
return rate;
|
|
7472
|
-
});
|
|
7468
|
+
async getExchangeRate(baseCurrency, targetCurrency) {
|
|
7469
|
+
const apiClient = createApiClient("", this.proxy);
|
|
7470
|
+
const { data } = await apiClient.get(`/helpers/rates/${baseCurrency}`);
|
|
7471
|
+
const rate = data.rates[targetCurrency];
|
|
7472
|
+
if (!rate) {
|
|
7473
|
+
throw new Error("Could not get exchange rate for target currency");
|
|
7474
|
+
}
|
|
7475
|
+
return rate;
|
|
7473
7476
|
}
|
|
7474
7477
|
};
|
|
7475
7478
|
var helpers_default = Helpers;
|
|
7476
7479
|
function createStoreClient(config) {
|
|
7477
|
-
return new client_default(config
|
|
7480
|
+
return new client_default(config?.proxy);
|
|
7478
7481
|
}
|
|
7479
7482
|
function createStoreHelpers(config) {
|
|
7480
|
-
return new helpers_default(
|
|
7483
|
+
return new helpers_default(config?.proxy);
|
|
7481
7484
|
}
|
|
7482
7485
|
|
|
7483
|
-
var css_248z = "/*! tailwindcss v4.1.8 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: var(--font-sans), Helvetica, Arial, apple-system, sans-serif;\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-red-500: oklch(63.7% 0.237 25.331);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --container-lg: 32rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --tracking-tight: -0.025em;\n --tracking-widest: 0.1em;\n --radius-xs: 0.125rem;\n --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans), Helvetica, Arial, apple-system, sans-serif;\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::-moz-placeholder {\n opacity: 1;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::-moz-placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n -webkit-appearance: button;\n -moz-appearance: button;\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-none {\n pointer-events: none;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .sticky {\n position: sticky;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .-top-2 {\n top: calc(var(--spacing) * -2);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-0\\.5 {\n top: calc(var(--spacing) * 0.5);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .top-\\[50\\%\\] {\n top: 50%;\n }\n .-right-2 {\n right: calc(var(--spacing) * -2);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .left-2 {\n left: calc(var(--spacing) * 2);\n }\n .left-\\[50\\%\\] {\n left: 50%;\n }\n .z-10 {\n z-index: 10;\n }\n .z-50 {\n z-index: 50;\n }\n .order-3 {\n order: 3;\n }\n .order-4 {\n order: 4;\n }\n .order-5 {\n order: 5;\n }\n .order-6 {\n order: 6;\n }\n .order-7 {\n order: 7;\n }\n .order-first {\n order: -9999;\n }\n .col-span-2 {\n grid-column: span 2 / span 2;\n }\n .-m-0\\.5 {\n margin: calc(var(--spacing) * -0.5);\n }\n .-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n .my-2 {\n margin-block: calc(var(--spacing) * 2);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-8 {\n margin-top: calc(var(--spacing) * 8);\n }\n .-mb-0\\.5 {\n margin-bottom: calc(var(--spacing) * -0.5);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n .ml-auto {\n margin-left: auto;\n }\n .line-clamp-1 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline-flex {\n display: inline-flex;\n }\n .aspect-square {\n aspect-ratio: 1 / 1;\n }\n .size-2 {\n width: calc(var(--spacing) * 2);\n height: calc(var(--spacing) * 2);\n }\n .size-3 {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n .size-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n .size-4 {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n .size-5 {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n }\n .size-9 {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n .size-16 {\n width: calc(var(--spacing) * 16);\n height: calc(var(--spacing) * 16);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-3\\.5 {\n height: calc(var(--spacing) * 3.5);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-\\[18px\\] {\n height: 18px;\n }\n .h-\\[20px\\] {\n height: 20px;\n }\n .h-\\[450px\\] {\n height: 450px;\n }\n .h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n }\n .h-auto {\n height: auto;\n }\n .h-auto\\! {\n height: auto !important;\n }\n .h-full {\n height: 100%;\n }\n .h-max {\n height: -moz-max-content;\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-96 {\n max-height: calc(var(--spacing) * 96);\n }\n .max-h-\\[200px\\] {\n max-height: 200px;\n }\n .max-h-\\[300px\\] {\n max-height: 300px;\n }\n .min-h-full {\n min-height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .w-0 {\n width: calc(var(--spacing) * 0);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-28 {\n width: calc(var(--spacing) * 28);\n }\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n .w-40 {\n width: calc(var(--spacing) * 40);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-fit {\n width: -moz-fit-content;\n width: fit-content;\n }\n .w-full {\n width: 100%;\n }\n .max-w-\\[1200px\\] {\n max-width: 1200px;\n }\n .max-w-\\[calc\\(100\\%-2rem\\)\\] {\n max-width: calc(100% - 2rem);\n }\n .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n .min-w-\\[--radix-popper-anchor-width\\] {\n min-width: --radix-popper-anchor-width;\n }\n .min-w-\\[8rem\\] {\n min-width: 8rem;\n }\n .min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n }\n .flex-1 {\n flex: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .flex-grow {\n flex-grow: 1;\n }\n .origin-\\(--radix-dropdown-menu-content-transform-origin\\) {\n transform-origin: var(--radix-dropdown-menu-content-transform-origin);\n }\n .origin-\\(--radix-popover-content-transform-origin\\) {\n transform-origin: var(--radix-popover-content-transform-origin);\n }\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .rotate-180 {\n rotate: 180deg;\n }\n .transform-none\\! {\n transform: none !important;\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-default {\n cursor: default;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .resize {\n resize: both;\n }\n .scroll-my-1 {\n scroll-margin-block: calc(var(--spacing) * 1);\n }\n .scroll-py-1 {\n scroll-padding-block: calc(var(--spacing) * 1);\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-col-reverse {\n flex-direction: column-reverse;\n }\n .items-center {\n align-items: center;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .gap-0 {\n gap: calc(var(--spacing) * 0);\n }\n .gap-0\\.5 {\n gap: calc(var(--spacing) * 0.5);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .gap-5 {\n gap: calc(var(--spacing) * 5);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .gap-\\[10px\\] {\n gap: 10px;\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded-\\[4px\\] {\n border-radius: 4px;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius);\n }\n .rounded-md {\n border-radius: calc(var(--radius) - 2px);\n }\n .rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n }\n .rounded-xs {\n border-radius: var(--radius-xs);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-input {\n border-color: var(--input);\n }\n .border-primary {\n border-color: var(--primary);\n }\n .bg-accent {\n background-color: var(--accent);\n }\n .bg-background {\n background-color: var(--background);\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-border {\n background-color: var(--border);\n }\n .bg-destructive {\n background-color: var(--destructive);\n }\n .bg-muted {\n background-color: var(--muted);\n }\n .bg-popover {\n background-color: var(--popover);\n }\n .bg-primary {\n background-color: var(--primary);\n }\n .bg-secondary {\n background-color: var(--secondary);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .fill-current {\n fill: currentcolor;\n }\n .fill-primary {\n fill: var(--primary);\n }\n .object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n }\n .p-0 {\n padding: calc(var(--spacing) * 0);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-6 {\n padding-block: calc(var(--spacing) * 6);\n }\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-8 {\n padding-right: calc(var(--spacing) * 8);\n }\n .pb-1 {\n padding-bottom: calc(var(--spacing) * 1);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .text-center {\n text-align: center;\n }\n .text-right {\n text-align: right;\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .text-ellipsis {\n text-overflow: ellipsis;\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .text-background {\n color: var(--background);\n }\n .text-current {\n color: currentcolor;\n }\n .text-destructive {\n color: var(--destructive);\n }\n .text-destructive-foreground {\n color: var(--destructive-foreground);\n }\n .text-foreground {\n color: var(--foreground);\n }\n .text-muted-foreground {\n color: var(--muted-foreground);\n }\n .text-popover-foreground {\n color: var(--popover-foreground);\n }\n .text-primary {\n color: var(--primary);\n }\n .text-primary-foreground {\n color: var(--primary-foreground);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-secondary-foreground {\n color: var(--secondary-foreground);\n }\n .text-white {\n color: var(--color-white);\n }\n .line-through {\n text-decoration-line: line-through;\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-70 {\n opacity: 70%;\n }\n .opacity-100 {\n opacity: 100%;\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-offset-background {\n --tw-ring-offset-color: var(--background);\n }\n .outline-hidden {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .transition-\\[color\\,box-shadow\\] {\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-none {\n transition-property: none;\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n .duration-200 {\n animation-duration: 200ms;\n }\n .group-data-\\[disabled\\=true\\]\\:pointer-events-none {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n pointer-events: none;\n }\n }\n .group-data-\\[disabled\\=true\\]\\:opacity-50 {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .peer-disabled\\:cursor-not-allowed {\n &:is(:where(.peer):disabled ~ *) {\n cursor: not-allowed;\n }\n }\n .peer-disabled\\:opacity-50 {\n &:is(:where(.peer):disabled ~ *) {\n opacity: 50%;\n }\n }\n .selection\\:bg-primary {\n & *::-moz-selection {\n background-color: var(--primary);\n }\n & *::selection {\n background-color: var(--primary);\n }\n &::-moz-selection {\n background-color: var(--primary);\n }\n &::selection {\n background-color: var(--primary);\n }\n }\n .selection\\:text-primary-foreground {\n & *::-moz-selection {\n color: var(--primary-foreground);\n }\n & *::selection {\n color: var(--primary-foreground);\n }\n &::-moz-selection {\n color: var(--primary-foreground);\n }\n &::selection {\n color: var(--primary-foreground);\n }\n }\n .file\\:inline-flex {\n &::file-selector-button {\n display: inline-flex;\n }\n }\n .file\\:h-7 {\n &::file-selector-button {\n height: calc(var(--spacing) * 7);\n }\n }\n .file\\:border-0 {\n &::file-selector-button {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .file\\:bg-transparent {\n &::file-selector-button {\n background-color: transparent;\n }\n }\n .file\\:text-sm {\n &::file-selector-button {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .file\\:font-medium {\n &::file-selector-button {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .file\\:text-foreground {\n &::file-selector-button {\n color: var(--foreground);\n }\n }\n .placeholder\\:text-muted-foreground {\n &::-moz-placeholder {\n color: var(--muted-foreground);\n }\n &::placeholder {\n color: var(--muted-foreground);\n }\n }\n .hover\\:bg-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n .hover\\:bg-destructive\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n }\n }\n }\n .hover\\:bg-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--secondary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:text-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n .hover\\:text-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--foreground);\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:opacity-100 {\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .focus\\:bg-accent {\n &:focus {\n background-color: var(--accent);\n }\n }\n .focus\\:text-accent-foreground {\n &:focus {\n color: var(--accent-foreground);\n }\n }\n .focus\\:ring-1 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-ring {\n &:focus {\n --tw-ring-color: var(--ring);\n }\n }\n .focus\\:ring-offset-2 {\n &:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:outline-hidden {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .focus-visible\\:border-ring {\n &:focus-visible {\n border-color: var(--ring);\n }\n }\n .focus-visible\\:ring-\\[3px\\] {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-destructive\\/20 {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .focus-visible\\:ring-ring\\/50 {\n &:focus-visible {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .disabled\\:pointer-events-none {\n &:disabled {\n pointer-events: none;\n }\n }\n .disabled\\:cursor-not-allowed {\n &:disabled {\n cursor: not-allowed;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .has-\\[\\>svg\\]\\:px-2\\.5 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n }\n .has-\\[\\>svg\\]\\:px-3 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>svg\\]\\:px-4 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n }\n .aria-invalid\\:border-destructive {\n &[aria-invalid=\"true\"] {\n border-color: var(--destructive);\n }\n }\n .aria-invalid\\:ring-destructive\\/20 {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .data-\\[disabled\\]\\:pointer-events-none {\n &[data-disabled] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\]\\:opacity-50 {\n &[data-disabled] {\n opacity: 50%;\n }\n }\n .data-\\[disabled\\=true\\]\\:pointer-events-none {\n &[data-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\=true\\]\\:opacity-50 {\n &[data-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .data-\\[error\\=true\\]\\:text-destructive-foreground {\n &[data-error=\"true\"] {\n color: var(--destructive-foreground);\n }\n }\n .data-\\[inset\\]\\:pl-8 {\n &[data-inset] {\n padding-left: calc(var(--spacing) * 8);\n }\n }\n .data-\\[placeholder\\]\\:text-muted-foreground {\n &[data-placeholder] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[selected\\=true\\]\\:bg-accent {\n &[data-selected=\"true\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[selected\\=true\\]\\:text-accent-foreground {\n &[data-selected=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[side\\=bottom\\]\\:translate-y-1 {\n &[data-side=\"bottom\"] {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=bottom\\]\\:slide-in-from-top-2 {\n &[data-side=\"bottom\"] {\n --tw-enter-translate-y: -0.5rem;\n }\n }\n .data-\\[side\\=left\\]\\:-translate-x-1 {\n &[data-side=\"left\"] {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=left\\]\\:slide-in-from-right-2 {\n &[data-side=\"left\"] {\n --tw-enter-translate-x: 0.5rem;\n }\n }\n .data-\\[side\\=right\\]\\:translate-x-1 {\n &[data-side=\"right\"] {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=right\\]\\:slide-in-from-left-2 {\n &[data-side=\"right\"] {\n --tw-enter-translate-x: -0.5rem;\n }\n }\n .data-\\[side\\=top\\]\\:-translate-y-1 {\n &[data-side=\"top\"] {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=top\\]\\:slide-in-from-bottom-2 {\n &[data-side=\"top\"] {\n --tw-enter-translate-y: 0.5rem;\n }\n }\n .\\*\\*\\:data-\\[slot\\=command-input-wrapper\\]\\:h-12 {\n :is(& *) {\n &[data-slot=\"command-input-wrapper\"] {\n height: calc(var(--spacing) * 12);\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:flex {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n display: flex;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:items-center {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n align-items: center;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:gap-2 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n .data-\\[state\\=checked\\]\\:border-primary {\n &[data-state=\"checked\"] {\n border-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:bg-primary {\n &[data-state=\"checked\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:text-primary-foreground {\n &[data-state=\"checked\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[state\\=closed\\]\\:animate-out {\n &[data-state=\"closed\"] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n }\n }\n .data-\\[state\\=closed\\]\\:fade-out-0 {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[state\\=closed\\]\\:zoom-out-95 {\n &[data-state=\"closed\"] {\n --tw-exit-scale: .95;\n }\n }\n .data-\\[state\\=open\\]\\:bg-accent {\n &[data-state=\"open\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[state\\=open\\]\\:text-accent-foreground {\n &[data-state=\"open\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:text-muted-foreground {\n &[data-state=\"open\"] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:animate-in {\n &[data-state=\"open\"] {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n }\n }\n .data-\\[state\\=open\\]\\:fade-in-0 {\n &[data-state=\"open\"] {\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[state\\=open\\]\\:zoom-in-95 {\n &[data-state=\"open\"] {\n --tw-enter-scale: .95;\n }\n }\n .data-\\[variant\\=destructive\\]\\:text-destructive {\n &[data-variant=\"destructive\"] {\n color: var(--destructive);\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/10 {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 10%, transparent);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:text-destructive {\n &[data-variant=\"destructive\"] {\n &:focus {\n color: var(--destructive);\n }\n }\n }\n .max-md\\:cursor-pointer {\n @media (width < 48rem) {\n cursor: pointer;\n }\n }\n .max-sm\\:hidden {\n @media (width < 40rem) {\n display: none;\n }\n }\n .sm\\:max-h-\\[270px\\] {\n @media (width >= 40rem) {\n max-height: 270px;\n }\n }\n .sm\\:max-w-\\[500px\\] {\n @media (width >= 40rem) {\n max-width: 500px;\n }\n }\n .sm\\:max-w-lg {\n @media (width >= 40rem) {\n max-width: var(--container-lg);\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .sm\\:justify-end {\n @media (width >= 40rem) {\n justify-content: flex-end;\n }\n }\n .sm\\:text-left {\n @media (width >= 40rem) {\n text-align: left;\n }\n }\n .md\\:order-last {\n @media (width >= 48rem) {\n order: 9999;\n }\n }\n .md\\:order-none {\n @media (width >= 48rem) {\n order: 0;\n }\n }\n .md\\:col-span-2 {\n @media (width >= 48rem) {\n grid-column: span 2 / span 2;\n }\n }\n .md\\:col-span-3 {\n @media (width >= 48rem) {\n grid-column: span 3 / span 3;\n }\n }\n .md\\:col-span-4 {\n @media (width >= 48rem) {\n grid-column: span 4 / span 4;\n }\n }\n .md\\:block {\n @media (width >= 48rem) {\n display: block;\n }\n }\n .md\\:flex {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n .md\\:grid {\n @media (width >= 48rem) {\n display: grid;\n }\n }\n .md\\:hidden {\n @media (width >= 48rem) {\n display: none;\n }\n }\n .md\\:max-w-\\[75\\%\\] {\n @media (width >= 48rem) {\n max-width: 75%;\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-7 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n }\n .md\\:gap-0 {\n @media (width >= 48rem) {\n gap: calc(var(--spacing) * 0);\n }\n }\n .md\\:px-8 {\n @media (width >= 48rem) {\n padding-inline: calc(var(--spacing) * 8);\n }\n }\n .md\\:py-12 {\n @media (width >= 48rem) {\n padding-block: calc(var(--spacing) * 12);\n }\n }\n .md\\:text-sm {\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .dark\\:focus-visible\\:ring-destructive\\/40 {\n @media (prefers-color-scheme: dark) {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:aria-invalid\\:ring-destructive\\/40 {\n @media (prefers-color-scheme: dark) {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20 {\n @media (prefers-color-scheme: dark) {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 {\n & [cmdk-group-heading] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 {\n & [cmdk-group-heading] {\n padding-block: calc(var(--spacing) * 1.5);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs {\n & [cmdk-group-heading] {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium {\n & [cmdk-group-heading] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground {\n & [cmdk-group-heading] {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\]\\:px-2 {\n & [cmdk-group] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 {\n & [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 {\n & [cmdk-input-wrapper] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 {\n & [cmdk-input-wrapper] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input\\]\\]\\:h-12 {\n & [cmdk-input] {\n height: calc(var(--spacing) * 12);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:px-2 {\n & [cmdk-item] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:py-3 {\n & [cmdk-item] {\n padding-block: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 {\n & [cmdk-item] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 {\n & [cmdk-item] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_svg\\]\\:pointer-events-none {\n & svg {\n pointer-events: none;\n }\n }\n .\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'text-\\'\\]\\)\\]\\:text-muted-foreground {\n & svg:not([class*='text-']) {\n color: var(--muted-foreground);\n }\n }\n .\\*\\:\\[span\\]\\:last\\:flex {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n display: flex;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:items-center {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n align-items: center;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:gap-2 {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:\\*\\:\\[svg\\]\\:\\!text-destructive {\n &[data-variant=\"destructive\"] {\n :is(& > *) {\n &:is(svg) {\n color: var(--destructive) !important;\n }\n }\n }\n }\n .\\[\\&\\>span\\]\\:line-clamp-1 {\n &>span {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n }\n}\n:root {\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0 0);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0 0);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0 0);\n --primary: oklch(0.205 0 0);\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(0.577 0.245 27.325);\n --border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.708 0 0);\n --chart-1: oklch(0.646 0.222 41.116);\n --chart-2: oklch(0.6 0.118 184.704);\n --chart-3: oklch(0.398 0.07 227.392);\n --chart-4: oklch(0.828 0.189 84.429);\n --chart-5: oklch(0.769 0.188 70.08);\n --radius: 0.625rem;\n --sidebar: oklch(0.985 0 0);\n --sidebar-foreground: oklch(0.145 0 0);\n --sidebar-primary: oklch(0.205 0 0);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.97 0 0);\n --sidebar-accent-foreground: oklch(0.205 0 0);\n --sidebar-border: oklch(0.922 0 0);\n --sidebar-ring: oklch(0.708 0 0);\n}\n@layer base {\n * {\n border-color: var(--border);\n outline-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n outline-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n .checkout-embed {\n background-color: var(--background);\n font-family: var(--font-sans), Helvetica, Arial, apple-system, sans-serif;\n color: var(--foreground);\n }\n h2 {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n p {\n --tw-tracking: var(--tracking-tight) !important;\n letter-spacing: var(--tracking-tight) !important;\n }\n}\n@layer utilities {\n .scrollbar-hidden {\n scrollbar-width: none;\n }\n .scrollbar-hidden::-webkit-scrollbar {\n display: none;\n }\n}\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-duration: initial;\n }\n }\n}\n";
|
|
7486
|
+
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 --animate-spin: spin 1s linear infinite;\n --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans), Helvetica, Arial, apple-system, sans-serif;\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::-moz-placeholder {\n opacity: 1;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::-moz-placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n -webkit-appearance: button;\n -moz-appearance: button;\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-none {\n pointer-events: none;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .sticky {\n position: sticky;\n }\n .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n .-top-2 {\n top: calc(var(--spacing) * -2);\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .top-0\\.5 {\n top: calc(var(--spacing) * 0.5);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .top-4 {\n top: calc(var(--spacing) * 4);\n }\n .top-\\[50\\%\\] {\n top: 50%;\n }\n .-right-2 {\n right: calc(var(--spacing) * -2);\n }\n .right-2 {\n right: calc(var(--spacing) * 2);\n }\n .right-4 {\n right: calc(var(--spacing) * 4);\n }\n .left-1\\/2 {\n left: calc(1/2 * 100%);\n }\n .left-2 {\n left: calc(var(--spacing) * 2);\n }\n .left-\\[50\\%\\] {\n left: 50%;\n }\n .z-10 {\n z-index: 10;\n }\n .z-50 {\n z-index: 50;\n }\n .order-3 {\n order: 3;\n }\n .order-4 {\n order: 4;\n }\n .order-5 {\n order: 5;\n }\n .order-6 {\n order: 6;\n }\n .order-7 {\n order: 7;\n }\n .order-first {\n order: -9999;\n }\n .col-span-2 {\n grid-column: span 2 / span 2;\n }\n .-m-0\\.5 {\n margin: calc(var(--spacing) * -0.5);\n }\n .-mx-1 {\n margin-inline: calc(var(--spacing) * -1);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .my-1 {\n margin-block: calc(var(--spacing) * 1);\n }\n .my-2 {\n margin-block: calc(var(--spacing) * 2);\n }\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n .mt-8 {\n margin-top: calc(var(--spacing) * 8);\n }\n .-mb-0\\.5 {\n margin-bottom: calc(var(--spacing) * -0.5);\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n .ml-auto {\n margin-left: auto;\n }\n .line-clamp-1 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline-flex {\n display: inline-flex;\n }\n .aspect-square {\n aspect-ratio: 1 / 1;\n }\n .size-2 {\n width: calc(var(--spacing) * 2);\n height: calc(var(--spacing) * 2);\n }\n .size-3 {\n width: calc(var(--spacing) * 3);\n height: calc(var(--spacing) * 3);\n }\n .size-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n height: calc(var(--spacing) * 3.5);\n }\n .size-4 {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n .size-5 {\n width: calc(var(--spacing) * 5);\n height: calc(var(--spacing) * 5);\n }\n .size-9 {\n width: calc(var(--spacing) * 9);\n height: calc(var(--spacing) * 9);\n }\n .size-16 {\n width: calc(var(--spacing) * 16);\n height: calc(var(--spacing) * 16);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-3\\.5 {\n height: calc(var(--spacing) * 3.5);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n .h-\\[18px\\] {\n height: 18px;\n }\n .h-\\[20px\\] {\n height: 20px;\n }\n .h-\\[450px\\] {\n height: 450px;\n }\n .h-\\[var\\(--radix-select-trigger-height\\)\\] {\n height: var(--radix-select-trigger-height);\n }\n .h-auto {\n height: auto;\n }\n .h-auto\\! {\n height: auto !important;\n }\n .h-full {\n height: 100%;\n }\n .h-max {\n height: -moz-max-content;\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-96 {\n max-height: calc(var(--spacing) * 96);\n }\n .max-h-\\[200px\\] {\n max-height: 200px;\n }\n .max-h-\\[300px\\] {\n max-height: 300px;\n }\n .min-h-full {\n min-height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .w-0 {\n width: calc(var(--spacing) * 0);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-28 {\n width: calc(var(--spacing) * 28);\n }\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n .w-40 {\n width: calc(var(--spacing) * 40);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-fit {\n width: -moz-fit-content;\n width: fit-content;\n }\n .w-full {\n width: 100%;\n }\n .max-w-\\[1200px\\] {\n max-width: 1200px;\n }\n .max-w-\\[calc\\(100\\%-2rem\\)\\] {\n max-width: calc(100% - 2rem);\n }\n .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n .min-w-\\[--radix-popper-anchor-width\\] {\n min-width: --radix-popper-anchor-width;\n }\n .min-w-\\[8rem\\] {\n min-width: 8rem;\n }\n .min-w-\\[var\\(--radix-select-trigger-width\\)\\] {\n min-width: var(--radix-select-trigger-width);\n }\n .flex-1 {\n flex: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .flex-grow {\n flex-grow: 1;\n }\n .origin-\\(--radix-dropdown-menu-content-transform-origin\\) {\n transform-origin: var(--radix-dropdown-menu-content-transform-origin);\n }\n .origin-\\(--radix-popover-content-transform-origin\\) {\n transform-origin: var(--radix-popover-content-transform-origin);\n }\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-\\[-50\\%\\] {\n --tw-translate-x: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-y-\\[-50\\%\\] {\n --tw-translate-y: -50%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .rotate-180 {\n rotate: 180deg;\n }\n .transform-none\\! {\n transform: none !important;\n }\n .animate-pulse {\n animation: var(--animate-pulse);\n }\n .animate-spin {\n animation: var(--animate-spin);\n }\n .cursor-default {\n cursor: default;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .resize {\n resize: both;\n }\n .scroll-my-1 {\n scroll-margin-block: calc(var(--spacing) * 1);\n }\n .scroll-py-1 {\n scroll-padding-block: calc(var(--spacing) * 1);\n }\n .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-col-reverse {\n flex-direction: column-reverse;\n }\n .items-center {\n align-items: center;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .gap-0 {\n gap: calc(var(--spacing) * 0);\n }\n .gap-0\\.5 {\n gap: calc(var(--spacing) * 0.5);\n }\n .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n .gap-5 {\n gap: calc(var(--spacing) * 5);\n }\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n .gap-\\[10px\\] {\n gap: 10px;\n }\n .space-y-2 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-4 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-y-6 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded-\\[4px\\] {\n border-radius: 4px;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius);\n }\n .rounded-md {\n border-radius: calc(var(--radius) - 2px);\n }\n .rounded-sm {\n border-radius: calc(var(--radius) - 4px);\n }\n .rounded-xs {\n border-radius: var(--radius-xs);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-input {\n border-color: var(--input);\n }\n .border-primary {\n border-color: var(--primary);\n }\n .bg-accent {\n background-color: var(--accent);\n }\n .bg-background {\n background-color: var(--background);\n }\n .bg-black\\/50 {\n background-color: color-mix(in srgb, #000 50%, transparent);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--color-black) 50%, transparent);\n }\n }\n .bg-border {\n background-color: var(--border);\n }\n .bg-destructive {\n background-color: var(--destructive);\n }\n .bg-muted {\n background-color: var(--muted);\n }\n .bg-popover {\n background-color: var(--popover);\n }\n .bg-primary {\n background-color: var(--primary);\n }\n .bg-secondary {\n background-color: var(--secondary);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .fill-current {\n fill: currentcolor;\n }\n .fill-primary {\n fill: var(--primary);\n }\n .object-cover {\n -o-object-fit: cover;\n object-fit: cover;\n }\n .p-0 {\n padding: calc(var(--spacing) * 0);\n }\n .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .py-6 {\n padding-block: calc(var(--spacing) * 6);\n }\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-8 {\n padding-right: calc(var(--spacing) * 8);\n }\n .pb-1 {\n padding-bottom: calc(var(--spacing) * 1);\n }\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .text-center {\n text-align: center;\n }\n .text-right {\n text-align: right;\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-tight {\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n .tracking-widest {\n --tw-tracking: var(--tracking-widest);\n letter-spacing: var(--tracking-widest);\n }\n .text-ellipsis {\n text-overflow: ellipsis;\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .text-background {\n color: var(--background);\n }\n .text-current {\n color: currentcolor;\n }\n .text-destructive {\n color: var(--destructive);\n }\n .text-destructive-foreground {\n color: var(--destructive-foreground);\n }\n .text-foreground {\n color: var(--foreground);\n }\n .text-muted-foreground {\n color: var(--muted-foreground);\n }\n .text-popover-foreground {\n color: var(--popover-foreground);\n }\n .text-primary {\n color: var(--primary);\n }\n .text-primary-foreground {\n color: var(--primary-foreground);\n }\n .text-red-500 {\n color: var(--color-red-500);\n }\n .text-secondary-foreground {\n color: var(--secondary-foreground);\n }\n .text-white {\n color: var(--color-white);\n }\n .line-through {\n text-decoration-line: line-through;\n }\n .underline-offset-4 {\n text-underline-offset: 4px;\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-70 {\n opacity: 70%;\n }\n .opacity-100 {\n opacity: 100%;\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-offset-background {\n --tw-ring-offset-color: var(--background);\n }\n .outline-hidden {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-\\[color\\,box-shadow\\] {\n transition-property: color,box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-none {\n transition-property: none;\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n }\n .duration-200 {\n animation-duration: 200ms;\n }\n .group-data-\\[disabled\\=true\\]\\:pointer-events-none {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n pointer-events: none;\n }\n }\n .group-data-\\[disabled\\=true\\]\\:opacity-50 {\n &:is(:where(.group)[data-disabled=\"true\"] *) {\n opacity: 50%;\n }\n }\n .peer-disabled\\:cursor-not-allowed {\n &:is(:where(.peer):disabled ~ *) {\n cursor: not-allowed;\n }\n }\n .peer-disabled\\:opacity-50 {\n &:is(:where(.peer):disabled ~ *) {\n opacity: 50%;\n }\n }\n .selection\\:bg-primary {\n & *::-moz-selection {\n background-color: var(--primary);\n }\n & *::selection {\n background-color: var(--primary);\n }\n &::-moz-selection {\n background-color: var(--primary);\n }\n &::selection {\n background-color: var(--primary);\n }\n }\n .selection\\:text-primary-foreground {\n & *::-moz-selection {\n color: var(--primary-foreground);\n }\n & *::selection {\n color: var(--primary-foreground);\n }\n &::-moz-selection {\n color: var(--primary-foreground);\n }\n &::selection {\n color: var(--primary-foreground);\n }\n }\n .file\\:inline-flex {\n &::file-selector-button {\n display: inline-flex;\n }\n }\n .file\\:h-7 {\n &::file-selector-button {\n height: calc(var(--spacing) * 7);\n }\n }\n .file\\:border-0 {\n &::file-selector-button {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .file\\:bg-transparent {\n &::file-selector-button {\n background-color: transparent;\n }\n }\n .file\\:text-sm {\n &::file-selector-button {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .file\\:font-medium {\n &::file-selector-button {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .file\\:text-foreground {\n &::file-selector-button {\n color: var(--foreground);\n }\n }\n .placeholder\\:text-muted-foreground {\n &::-moz-placeholder {\n color: var(--muted-foreground);\n }\n &::placeholder {\n color: var(--muted-foreground);\n }\n }\n .hover\\:bg-accent {\n &:hover {\n @media (hover: hover) {\n background-color: var(--accent);\n }\n }\n }\n .hover\\:bg-destructive\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-muted {\n &:hover {\n @media (hover: hover) {\n background-color: var(--muted);\n }\n }\n }\n .hover\\:bg-primary\\/90 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--primary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--primary) 90%, transparent);\n }\n }\n }\n }\n .hover\\:bg-secondary\\/80 {\n &:hover {\n @media (hover: hover) {\n background-color: var(--secondary);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--secondary) 80%, transparent);\n }\n }\n }\n }\n .hover\\:text-accent-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--accent-foreground);\n }\n }\n }\n .hover\\:text-foreground {\n &:hover {\n @media (hover: hover) {\n color: var(--foreground);\n }\n }\n }\n .hover\\:underline {\n &:hover {\n @media (hover: hover) {\n text-decoration-line: underline;\n }\n }\n }\n .hover\\:opacity-100 {\n &:hover {\n @media (hover: hover) {\n opacity: 100%;\n }\n }\n }\n .focus\\:bg-accent {\n &:focus {\n background-color: var(--accent);\n }\n }\n .focus\\:text-accent-foreground {\n &:focus {\n color: var(--accent-foreground);\n }\n }\n .focus\\:ring-1 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-2 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-ring {\n &:focus {\n --tw-ring-color: var(--ring);\n }\n }\n .focus\\:ring-offset-2 {\n &:focus {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n }\n .focus\\:outline-hidden {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n }\n .focus-visible\\:border-ring {\n &:focus-visible {\n border-color: var(--ring);\n }\n }\n .focus-visible\\:ring-\\[3px\\] {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus-visible\\:ring-destructive\\/20 {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .focus-visible\\:ring-ring\\/50 {\n &:focus-visible {\n --tw-ring-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n }\n .disabled\\:pointer-events-none {\n &:disabled {\n pointer-events: none;\n }\n }\n .disabled\\:cursor-not-allowed {\n &:disabled {\n cursor: not-allowed;\n }\n }\n .disabled\\:opacity-50 {\n &:disabled {\n opacity: 50%;\n }\n }\n .has-\\[\\>svg\\]\\:px-2\\.5 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n }\n .has-\\[\\>svg\\]\\:px-3 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 3);\n }\n }\n .has-\\[\\>svg\\]\\:px-4 {\n &:has(>svg) {\n padding-inline: calc(var(--spacing) * 4);\n }\n }\n .aria-invalid\\:border-destructive {\n &[aria-invalid=\"true\"] {\n border-color: var(--destructive);\n }\n }\n .aria-invalid\\:ring-destructive\\/20 {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n .data-\\[disabled\\]\\:pointer-events-none {\n &[data-disabled] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\]\\:opacity-50 {\n &[data-disabled] {\n opacity: 50%;\n }\n }\n .data-\\[disabled\\=true\\]\\:pointer-events-none {\n &[data-disabled=\"true\"] {\n pointer-events: none;\n }\n }\n .data-\\[disabled\\=true\\]\\:opacity-50 {\n &[data-disabled=\"true\"] {\n opacity: 50%;\n }\n }\n .data-\\[error\\=true\\]\\:text-destructive-foreground {\n &[data-error=\"true\"] {\n color: var(--destructive-foreground);\n }\n }\n .data-\\[inset\\]\\:pl-8 {\n &[data-inset] {\n padding-left: calc(var(--spacing) * 8);\n }\n }\n .data-\\[placeholder\\]\\:text-muted-foreground {\n &[data-placeholder] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[selected\\=true\\]\\:bg-accent {\n &[data-selected=\"true\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[selected\\=true\\]\\:text-accent-foreground {\n &[data-selected=\"true\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[side\\=bottom\\]\\:translate-y-1 {\n &[data-side=\"bottom\"] {\n --tw-translate-y: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=bottom\\]\\:slide-in-from-top-2 {\n &[data-side=\"bottom\"] {\n --tw-enter-translate-y: -0.5rem;\n }\n }\n .data-\\[side\\=left\\]\\:-translate-x-1 {\n &[data-side=\"left\"] {\n --tw-translate-x: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=left\\]\\:slide-in-from-right-2 {\n &[data-side=\"left\"] {\n --tw-enter-translate-x: 0.5rem;\n }\n }\n .data-\\[side\\=right\\]\\:translate-x-1 {\n &[data-side=\"right\"] {\n --tw-translate-x: calc(var(--spacing) * 1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=right\\]\\:slide-in-from-left-2 {\n &[data-side=\"right\"] {\n --tw-enter-translate-x: -0.5rem;\n }\n }\n .data-\\[side\\=top\\]\\:-translate-y-1 {\n &[data-side=\"top\"] {\n --tw-translate-y: calc(var(--spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n }\n .data-\\[side\\=top\\]\\:slide-in-from-bottom-2 {\n &[data-side=\"top\"] {\n --tw-enter-translate-y: 0.5rem;\n }\n }\n .\\*\\*\\:data-\\[slot\\=command-input-wrapper\\]\\:h-12 {\n :is(& *) {\n &[data-slot=\"command-input-wrapper\"] {\n height: calc(var(--spacing) * 12);\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:flex {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n display: flex;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:items-center {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n align-items: center;\n }\n }\n }\n .\\*\\:data-\\[slot\\=select-value\\]\\:gap-2 {\n :is(& > *) {\n &[data-slot=\"select-value\"] {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n .data-\\[state\\=checked\\]\\:border-primary {\n &[data-state=\"checked\"] {\n border-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:bg-primary {\n &[data-state=\"checked\"] {\n background-color: var(--primary);\n }\n }\n .data-\\[state\\=checked\\]\\:text-primary-foreground {\n &[data-state=\"checked\"] {\n color: var(--primary-foreground);\n }\n }\n .data-\\[state\\=closed\\]\\:animate-out {\n &[data-state=\"closed\"] {\n animation-name: exit;\n animation-duration: 150ms;\n --tw-exit-opacity: initial;\n --tw-exit-scale: initial;\n --tw-exit-rotate: initial;\n --tw-exit-translate-x: initial;\n --tw-exit-translate-y: initial;\n }\n }\n .data-\\[state\\=closed\\]\\:fade-out-0 {\n &[data-state=\"closed\"] {\n --tw-exit-opacity: 0;\n }\n }\n .data-\\[state\\=closed\\]\\:zoom-out-95 {\n &[data-state=\"closed\"] {\n --tw-exit-scale: .95;\n }\n }\n .data-\\[state\\=open\\]\\:bg-accent {\n &[data-state=\"open\"] {\n background-color: var(--accent);\n }\n }\n .data-\\[state\\=open\\]\\:text-accent-foreground {\n &[data-state=\"open\"] {\n color: var(--accent-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:text-muted-foreground {\n &[data-state=\"open\"] {\n color: var(--muted-foreground);\n }\n }\n .data-\\[state\\=open\\]\\:animate-in {\n &[data-state=\"open\"] {\n animation-name: enter;\n animation-duration: 150ms;\n --tw-enter-opacity: initial;\n --tw-enter-scale: initial;\n --tw-enter-rotate: initial;\n --tw-enter-translate-x: initial;\n --tw-enter-translate-y: initial;\n }\n }\n .data-\\[state\\=open\\]\\:fade-in-0 {\n &[data-state=\"open\"] {\n --tw-enter-opacity: 0;\n }\n }\n .data-\\[state\\=open\\]\\:zoom-in-95 {\n &[data-state=\"open\"] {\n --tw-enter-scale: .95;\n }\n }\n .data-\\[variant\\=destructive\\]\\:text-destructive {\n &[data-variant=\"destructive\"] {\n color: var(--destructive);\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/10 {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 10%, transparent);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:focus\\:text-destructive {\n &[data-variant=\"destructive\"] {\n &:focus {\n color: var(--destructive);\n }\n }\n }\n .max-md\\:cursor-pointer {\n @media (width < 48rem) {\n cursor: pointer;\n }\n }\n .max-sm\\:hidden {\n @media (width < 40rem) {\n display: none;\n }\n }\n .sm\\:max-h-\\[270px\\] {\n @media (width >= 40rem) {\n max-height: 270px;\n }\n }\n .sm\\:max-w-\\[500px\\] {\n @media (width >= 40rem) {\n max-width: 500px;\n }\n }\n .sm\\:max-w-lg {\n @media (width >= 40rem) {\n max-width: var(--container-lg);\n }\n }\n .sm\\:flex-row {\n @media (width >= 40rem) {\n flex-direction: row;\n }\n }\n .sm\\:justify-end {\n @media (width >= 40rem) {\n justify-content: flex-end;\n }\n }\n .sm\\:text-left {\n @media (width >= 40rem) {\n text-align: left;\n }\n }\n .md\\:order-last {\n @media (width >= 48rem) {\n order: 9999;\n }\n }\n .md\\:order-none {\n @media (width >= 48rem) {\n order: 0;\n }\n }\n .md\\:col-span-2 {\n @media (width >= 48rem) {\n grid-column: span 2 / span 2;\n }\n }\n .md\\:col-span-3 {\n @media (width >= 48rem) {\n grid-column: span 3 / span 3;\n }\n }\n .md\\:col-span-4 {\n @media (width >= 48rem) {\n grid-column: span 4 / span 4;\n }\n }\n .md\\:block {\n @media (width >= 48rem) {\n display: block;\n }\n }\n .md\\:flex {\n @media (width >= 48rem) {\n display: flex;\n }\n }\n .md\\:grid {\n @media (width >= 48rem) {\n display: grid;\n }\n }\n .md\\:hidden {\n @media (width >= 48rem) {\n display: none;\n }\n }\n .md\\:max-w-\\[75\\%\\] {\n @media (width >= 48rem) {\n max-width: 75%;\n }\n }\n .md\\:grid-cols-2 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n }\n .md\\:grid-cols-7 {\n @media (width >= 48rem) {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n }\n }\n .md\\:gap-0 {\n @media (width >= 48rem) {\n gap: calc(var(--spacing) * 0);\n }\n }\n .md\\:px-8 {\n @media (width >= 48rem) {\n padding-inline: calc(var(--spacing) * 8);\n }\n }\n .md\\:py-12 {\n @media (width >= 48rem) {\n padding-block: calc(var(--spacing) * 12);\n }\n }\n .md\\:text-sm {\n @media (width >= 48rem) {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n }\n .dark\\:focus-visible\\:ring-destructive\\/40 {\n @media (prefers-color-scheme: dark) {\n &:focus-visible {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:aria-invalid\\:ring-destructive\\/40 {\n @media (prefers-color-scheme: dark) {\n &[aria-invalid=\"true\"] {\n --tw-ring-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent);\n }\n }\n }\n }\n .dark\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20 {\n @media (prefers-color-scheme: dark) {\n &[data-variant=\"destructive\"] {\n &:focus {\n background-color: var(--destructive);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--destructive) 20%, transparent);\n }\n }\n }\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 {\n & [cmdk-group-heading] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 {\n & [cmdk-group-heading] {\n padding-block: calc(var(--spacing) * 1.5);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs {\n & [cmdk-group-heading] {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium {\n & [cmdk-group-heading] {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n }\n .\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground {\n & [cmdk-group-heading] {\n color: var(--muted-foreground);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\]\\:px-2 {\n & [cmdk-group] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 {\n & [cmdk-group]:not([hidden]) ~[cmdk-group] {\n padding-top: calc(var(--spacing) * 0);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 {\n & [cmdk-input-wrapper] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 {\n & [cmdk-input-wrapper] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-input\\]\\]\\:h-12 {\n & [cmdk-input] {\n height: calc(var(--spacing) * 12);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:px-2 {\n & [cmdk-item] {\n padding-inline: calc(var(--spacing) * 2);\n }\n }\n .\\[\\&_\\[cmdk-item\\]\\]\\:py-3 {\n & [cmdk-item] {\n padding-block: calc(var(--spacing) * 3);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 {\n & [cmdk-item] svg {\n height: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 {\n & [cmdk-item] svg {\n width: calc(var(--spacing) * 5);\n }\n }\n .\\[\\&_svg\\]\\:pointer-events-none {\n & svg {\n pointer-events: none;\n }\n }\n .\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {\n & svg:not([class*='size-']) {\n width: calc(var(--spacing) * 4);\n height: calc(var(--spacing) * 4);\n }\n }\n .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'text-\\'\\]\\)\\]\\:text-muted-foreground {\n & svg:not([class*='text-']) {\n color: var(--muted-foreground);\n }\n }\n .\\*\\:\\[span\\]\\:last\\:flex {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n display: flex;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:items-center {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n align-items: center;\n }\n }\n }\n }\n .\\*\\:\\[span\\]\\:last\\:gap-2 {\n :is(& > *) {\n &:is(span) {\n &:last-child {\n gap: calc(var(--spacing) * 2);\n }\n }\n }\n }\n .data-\\[variant\\=destructive\\]\\:\\*\\:\\[svg\\]\\:\\!text-destructive {\n &[data-variant=\"destructive\"] {\n :is(& > *) {\n &:is(svg) {\n color: var(--destructive) !important;\n }\n }\n }\n }\n .\\[\\&\\>span\\]\\:line-clamp-1 {\n &>span {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n }\n}\n:root {\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0 0);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0 0);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0 0);\n --primary: oklch(0.205 0 0);\n --primary-foreground: oklch(0.985 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(0.577 0.245 27.325);\n --border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.708 0 0);\n --chart-1: oklch(0.646 0.222 41.116);\n --chart-2: oklch(0.6 0.118 184.704);\n --chart-3: oklch(0.398 0.07 227.392);\n --chart-4: oklch(0.828 0.189 84.429);\n --chart-5: oklch(0.769 0.188 70.08);\n --radius: 0.625rem;\n --sidebar: oklch(0.985 0 0);\n --sidebar-foreground: oklch(0.145 0 0);\n --sidebar-primary: oklch(0.205 0 0);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.97 0 0);\n --sidebar-accent-foreground: oklch(0.205 0 0);\n --sidebar-border: oklch(0.922 0 0);\n --sidebar-ring: oklch(0.708 0 0);\n}\n@layer base {\n * {\n border-color: var(--border);\n outline-color: var(--ring);\n @supports (color: color-mix(in lab, red, red)) {\n outline-color: color-mix(in oklab, var(--ring) 50%, transparent);\n }\n }\n .checkout-embed {\n background-color: var(--background);\n font-family: var(--font-sans), Helvetica, Arial, apple-system, sans-serif;\n color: var(--foreground);\n }\n h2 {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n --tw-tracking: var(--tracking-tight);\n letter-spacing: var(--tracking-tight);\n }\n p {\n --tw-tracking: var(--tracking-tight) !important;\n letter-spacing: var(--tracking-tight) !important;\n }\n}\n@layer utilities {\n .scrollbar-hidden {\n scrollbar-width: none;\n }\n .scrollbar-hidden::-webkit-scrollbar {\n display: none;\n }\n}\n@keyframes enter {\n from {\n opacity: var(--tw-enter-opacity, 1);\n transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));\n }\n}\n@keyframes exit {\n to {\n opacity: var(--tw-exit-opacity, 1);\n transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));\n }\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-duration: initial;\n }\n }\n}\n";
|
|
7484
7487
|
|
|
7485
7488
|
const IframeWrapper = React__default.memo(({ children, iframeRef }) => {
|
|
7486
7489
|
const [iframeBody, setIframeBody] = useState(null);
|
|
7487
7490
|
const styleRef = useRef(null);
|
|
7488
|
-
const resizeObserver = useRef();
|
|
7491
|
+
const resizeObserver = useRef(null);
|
|
7489
7492
|
const injectStyles = useCallback((doc) => {
|
|
7490
7493
|
var _a;
|
|
7491
7494
|
// Clean up previous style
|
|
@@ -7546,9 +7549,7 @@ const IframeWrapper = React__default.memo(({ children, iframeRef }) => {
|
|
|
7546
7549
|
window.removeEventListener("resize", updateHeight);
|
|
7547
7550
|
};
|
|
7548
7551
|
}, [updateHeight]);
|
|
7549
|
-
return (
|
|
7550
|
-
React__default.createElement("iframe", { ref: iframeRef, className: "w-full min-h-screen border-0", sandbox: "allow-same-origin allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-top-navigation" }),
|
|
7551
|
-
iframeBody && ReactDOM__default.createPortal(children, iframeBody)));
|
|
7552
|
+
return (jsxs("div", { id: "bs-wrapper", className: "relative mx-auto min-h-screen w-full max-w-[1200px] overflow-y-auto overflow-x-hidden", children: [jsx("iframe", { ref: iframeRef, className: "min-h-screen w-full border-0", sandbox: "allow-same-origin allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-top-navigation" }), iframeBody && ReactDOM__default.createPortal(children, iframeBody)] }));
|
|
7552
7553
|
});
|
|
7553
7554
|
IframeWrapper.displayName = "IframeWrapper";
|
|
7554
7555
|
|
|
@@ -8678,7 +8679,7 @@ const Toaster$1 = /*#__PURE__*/ React__default.forwardRef(function Toaster(props
|
|
|
8678
8679
|
const Toaster = (_a) => {
|
|
8679
8680
|
var props = __rest(_a, []);
|
|
8680
8681
|
const { theme = "system" } = z();
|
|
8681
|
-
return (
|
|
8682
|
+
return (jsx(Toaster$1, Object.assign({ theme: theme, className: "toaster group", style: {
|
|
8682
8683
|
"--normal-bg": "var(--popover)",
|
|
8683
8684
|
"--normal-text": "var(--popover-foreground)",
|
|
8684
8685
|
"--normal-border": "var(--border)",
|
|
@@ -12914,15 +12915,19 @@ function cloneObject(data) {
|
|
|
12914
12915
|
return copy;
|
|
12915
12916
|
}
|
|
12916
12917
|
|
|
12917
|
-
var
|
|
12918
|
+
var isKey = (value) => /^\w*$/.test(value);
|
|
12918
12919
|
|
|
12919
12920
|
var isUndefined = (val) => val === undefined;
|
|
12920
12921
|
|
|
12922
|
+
var compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];
|
|
12923
|
+
|
|
12924
|
+
var stringToPath = (input) => compact(input.replace(/["|']|\]/g, '').split(/\.|\[/));
|
|
12925
|
+
|
|
12921
12926
|
var get = (object, path, defaultValue) => {
|
|
12922
12927
|
if (!path || !isObject(object)) {
|
|
12923
12928
|
return defaultValue;
|
|
12924
12929
|
}
|
|
12925
|
-
const result =
|
|
12930
|
+
const result = (isKey(path) ? [path] : stringToPath(path)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);
|
|
12926
12931
|
return isUndefined(result) || result === object
|
|
12927
12932
|
? isUndefined(object[path])
|
|
12928
12933
|
? defaultValue
|
|
@@ -12932,10 +12937,6 @@ var get = (object, path, defaultValue) => {
|
|
|
12932
12937
|
|
|
12933
12938
|
var isBoolean = (value) => typeof value === 'boolean';
|
|
12934
12939
|
|
|
12935
|
-
var isKey = (value) => /^\w*$/.test(value);
|
|
12936
|
-
|
|
12937
|
-
var stringToPath = (input) => compact(input.replace(/["|']|\]/g, '').split(/\.|\[/));
|
|
12938
|
-
|
|
12939
12940
|
var set = (object, path, value) => {
|
|
12940
12941
|
let index = -1;
|
|
12941
12942
|
const tempPath = isKey(path) ? [path] : stringToPath(path);
|
|
@@ -12984,6 +12985,7 @@ const INPUT_VALIDATION_RULES = {
|
|
|
12984
12985
|
};
|
|
12985
12986
|
|
|
12986
12987
|
const HookFormContext = React__default.createContext(null);
|
|
12988
|
+
HookFormContext.displayName = 'HookFormContext';
|
|
12987
12989
|
/**
|
|
12988
12990
|
* This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.
|
|
12989
12991
|
*
|
|
@@ -13413,7 +13415,7 @@ var createSubject = () => {
|
|
|
13413
13415
|
|
|
13414
13416
|
var isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);
|
|
13415
13417
|
|
|
13416
|
-
function deepEqual$1(object1, object2) {
|
|
13418
|
+
function deepEqual$1(object1, object2, _internal_visited = new WeakSet()) {
|
|
13417
13419
|
if (isPrimitive(object1) || isPrimitive(object2)) {
|
|
13418
13420
|
return object1 === object2;
|
|
13419
13421
|
}
|
|
@@ -13425,6 +13427,11 @@ function deepEqual$1(object1, object2) {
|
|
|
13425
13427
|
if (keys1.length !== keys2.length) {
|
|
13426
13428
|
return false;
|
|
13427
13429
|
}
|
|
13430
|
+
if (_internal_visited.has(object1) || _internal_visited.has(object2)) {
|
|
13431
|
+
return true;
|
|
13432
|
+
}
|
|
13433
|
+
_internal_visited.add(object1);
|
|
13434
|
+
_internal_visited.add(object2);
|
|
13428
13435
|
for (const key of keys1) {
|
|
13429
13436
|
const val1 = object1[key];
|
|
13430
13437
|
if (!keys2.includes(key)) {
|
|
@@ -13435,7 +13442,7 @@ function deepEqual$1(object1, object2) {
|
|
|
13435
13442
|
if ((isDateObject(val1) && isDateObject(val2)) ||
|
|
13436
13443
|
(isObject(val1) && isObject(val2)) ||
|
|
13437
13444
|
(Array.isArray(val1) && Array.isArray(val2))
|
|
13438
|
-
? !deepEqual$1(val1, val2)
|
|
13445
|
+
? !deepEqual$1(val1, val2, _internal_visited)
|
|
13439
13446
|
: val1 !== val2) {
|
|
13440
13447
|
return false;
|
|
13441
13448
|
}
|
|
@@ -14754,14 +14761,14 @@ function createFormControl(props = {}) {
|
|
|
14754
14761
|
if (_options.resolver) {
|
|
14755
14762
|
const { errors, values } = await _runSchema();
|
|
14756
14763
|
_formState.errors = errors;
|
|
14757
|
-
fieldValues = values;
|
|
14764
|
+
fieldValues = cloneObject(values);
|
|
14758
14765
|
}
|
|
14759
14766
|
else {
|
|
14760
14767
|
await executeBuiltInValidation(_fields);
|
|
14761
14768
|
}
|
|
14762
14769
|
if (_names.disabled.size) {
|
|
14763
14770
|
for (const name of _names.disabled) {
|
|
14764
|
-
|
|
14771
|
+
unset(fieldValues, name);
|
|
14765
14772
|
}
|
|
14766
14773
|
}
|
|
14767
14774
|
unset(_formState.errors, 'root');
|
|
@@ -14858,7 +14865,11 @@ function createFormControl(props = {}) {
|
|
|
14858
14865
|
}
|
|
14859
14866
|
}
|
|
14860
14867
|
for (const fieldName of _names.mount) {
|
|
14861
|
-
|
|
14868
|
+
const value = get(values, fieldName, get(_defaultValues, fieldName));
|
|
14869
|
+
if (!isUndefined(value)) {
|
|
14870
|
+
set(values, fieldName, value);
|
|
14871
|
+
setValue(fieldName, get(values, fieldName));
|
|
14872
|
+
}
|
|
14862
14873
|
}
|
|
14863
14874
|
}
|
|
14864
14875
|
_formValues = cloneObject(values);
|
|
@@ -15078,14 +15089,21 @@ function useForm(props = {}) {
|
|
|
15078
15089
|
: props.defaultValues,
|
|
15079
15090
|
});
|
|
15080
15091
|
if (!_formControl.current) {
|
|
15081
|
-
|
|
15082
|
-
|
|
15083
|
-
|
|
15084
|
-
|
|
15085
|
-
|
|
15086
|
-
props.defaultValues &&
|
|
15087
|
-
|
|
15088
|
-
|
|
15092
|
+
if (props.formControl) {
|
|
15093
|
+
_formControl.current = {
|
|
15094
|
+
...props.formControl,
|
|
15095
|
+
formState,
|
|
15096
|
+
};
|
|
15097
|
+
if (props.defaultValues && !isFunction$1(props.defaultValues)) {
|
|
15098
|
+
props.formControl.reset(props.defaultValues, props.resetOptions);
|
|
15099
|
+
}
|
|
15100
|
+
}
|
|
15101
|
+
else {
|
|
15102
|
+
const { formControl, ...rest } = createFormControl(props);
|
|
15103
|
+
_formControl.current = {
|
|
15104
|
+
...rest,
|
|
15105
|
+
formState,
|
|
15106
|
+
};
|
|
15089
15107
|
}
|
|
15090
15108
|
}
|
|
15091
15109
|
const control = _formControl.current.control;
|
|
@@ -15631,7 +15649,7 @@ const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
|
|
|
15631
15649
|
const fractionRegex = /^\d+\/\d+$/;
|
|
15632
15650
|
const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
|
|
15633
15651
|
const lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/;
|
|
15634
|
-
const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/;
|
|
15652
|
+
const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/;
|
|
15635
15653
|
// Shadow always begins with x and y offset separated by underscore optionally prepended by inset
|
|
15636
15654
|
const shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
|
|
15637
15655
|
const imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
|
|
@@ -18178,7 +18196,7 @@ function cn(...inputs) {
|
|
|
18178
18196
|
|
|
18179
18197
|
function Label(_a) {
|
|
18180
18198
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
18181
|
-
return (
|
|
18199
|
+
return (jsx(Root$2, Object.assign({ "data-slot": "label", className: cn("flex select-none items-center gap-2 text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50 group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50", className) }, props)));
|
|
18182
18200
|
}
|
|
18183
18201
|
|
|
18184
18202
|
const validErrorMessageKeys = Object.keys(en.Errors);
|
|
@@ -18194,8 +18212,7 @@ const Form = FormProvider;
|
|
|
18194
18212
|
const FormFieldContext = React.createContext({});
|
|
18195
18213
|
const FormField = (_a) => {
|
|
18196
18214
|
var props = __rest(_a, []);
|
|
18197
|
-
return (
|
|
18198
|
-
React.createElement(Controller, Object.assign({}, props))));
|
|
18215
|
+
return (jsx(FormFieldContext.Provider, { value: { name: props.name }, children: jsx(Controller, Object.assign({}, props)) }));
|
|
18199
18216
|
};
|
|
18200
18217
|
const useFormField = () => {
|
|
18201
18218
|
const fieldContext = React.useContext(FormFieldContext);
|
|
@@ -18213,18 +18230,17 @@ const FormItemContext = React.createContext({});
|
|
|
18213
18230
|
function FormItem(_a) {
|
|
18214
18231
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
18215
18232
|
const id = React.useId();
|
|
18216
|
-
return (
|
|
18217
|
-
React.createElement("div", Object.assign({ "data-slot": "form-item", className: cn("grid gap-2", className) }, props))));
|
|
18233
|
+
return (jsx(FormItemContext.Provider, { value: { id }, children: jsx("div", Object.assign({ "data-slot": "form-item", className: cn("grid gap-2", className) }, props)) }));
|
|
18218
18234
|
}
|
|
18219
18235
|
function FormLabel(_a) {
|
|
18220
18236
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
18221
18237
|
const { error, formItemId } = useFormField();
|
|
18222
|
-
return (
|
|
18238
|
+
return (jsx(Label, Object.assign({ "data-slot": "form-label", "data-error": !!error, className: cn("data-[error=true]:text-destructive-foreground", className), htmlFor: formItemId }, props)));
|
|
18223
18239
|
}
|
|
18224
18240
|
function FormControl(_a) {
|
|
18225
18241
|
var props = __rest(_a, []);
|
|
18226
18242
|
const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
|
|
18227
|
-
return (
|
|
18243
|
+
return (jsx(Slot$2, Object.assign({ "data-slot": "form-control", id: formItemId, "aria-describedby": !error
|
|
18228
18244
|
? `${formDescriptionId}`
|
|
18229
18245
|
: `${formDescriptionId} ${formMessageId}`, "aria-invalid": !!error }, props)));
|
|
18230
18246
|
}
|
|
@@ -18239,22 +18255,18 @@ function FormMessage(_a) {
|
|
|
18239
18255
|
}
|
|
18240
18256
|
const key = validateErrorMessageKey(String(body));
|
|
18241
18257
|
const message = t(`Errors.${key}`);
|
|
18242
|
-
return (
|
|
18258
|
+
return (jsx("p", Object.assign({ "data-slot": "form-message", id: formMessageId, className: cn("text-destructive-foreground text-sm", className) }, props, { children: message })));
|
|
18243
18259
|
}
|
|
18244
18260
|
|
|
18245
18261
|
function Input(_a) {
|
|
18246
18262
|
var { className, type } = _a, props = __rest(_a, ["className", "type"]);
|
|
18247
|
-
return (
|
|
18263
|
+
return (jsx("input", Object.assign({ type: type, "data-slot": "input", className: cn("border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground shadow-xs flex h-10 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base outline-none transition-[color,box-shadow] file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", className) }, props)));
|
|
18248
18264
|
}
|
|
18249
18265
|
|
|
18250
18266
|
function InputGroup(_a) {
|
|
18251
18267
|
var { name, label, className } = _a, props = __rest(_a, ["name", "label", "className"]);
|
|
18252
18268
|
const { control } = useFormContext();
|
|
18253
|
-
return (
|
|
18254
|
-
React__default.createElement(FormLabel, null, label),
|
|
18255
|
-
React__default.createElement(FormControl, null,
|
|
18256
|
-
React__default.createElement(Input, Object.assign({}, field, props))),
|
|
18257
|
-
React__default.createElement(FormMessage, null))) }));
|
|
18269
|
+
return (jsx(FormField, { control: control, name: name, render: ({ field }) => (jsxs(FormItem, { className: className, children: [jsx(FormLabel, { children: label }), jsx(FormControl, { children: jsx(Input, Object.assign({}, field, props)) }), jsx(FormMessage, {})] })) }));
|
|
18258
18270
|
}
|
|
18259
18271
|
|
|
18260
18272
|
const falsyToString = (value)=>typeof value === "boolean" ? `${value}` : value === 0 ? "0" : value;
|
|
@@ -18324,7 +18336,7 @@ const buttonVariants = cva("inline-flex cursor-pointer items-center justify-cent
|
|
|
18324
18336
|
function Button(_a) {
|
|
18325
18337
|
var { className, variant, size, asChild = false } = _a, props = __rest(_a, ["className", "variant", "size", "asChild"]);
|
|
18326
18338
|
const Comp = asChild ? Slot$2 : "button";
|
|
18327
|
-
return (
|
|
18339
|
+
return (jsx(Comp, Object.assign({ "data-slot": "button", className: cn(buttonVariants({ variant, size, className })) }, props)));
|
|
18328
18340
|
}
|
|
18329
18341
|
|
|
18330
18342
|
/**
|
|
@@ -18517,9 +18529,7 @@ const X$2 = createLucideIcon("X", __iconNode);
|
|
|
18517
18529
|
function SubmitButton(_a) {
|
|
18518
18530
|
var { isSubmitting, isValid = true, className, variant, children, size } = _a, props = __rest(_a, ["isSubmitting", "isValid", "className", "variant", "children", "size"]);
|
|
18519
18531
|
const { t } = useTranslation();
|
|
18520
|
-
return (
|
|
18521
|
-
isSubmitting && React__default.createElement(Loader, { className: "animate-spin" }),
|
|
18522
|
-
isSubmitting ? t("CheckoutEmbed.loading") : children));
|
|
18532
|
+
return (jsxs(Button, Object.assign({ type: "submit", size: size, className: className, variant: variant, disabled: isSubmitting || !isValid }, props, { children: [isSubmitting && jsx(Loader, { className: "animate-spin" }), isSubmitting ? t("CheckoutEmbed.loading") : children] })));
|
|
18523
18533
|
}
|
|
18524
18534
|
|
|
18525
18535
|
const r=(t,r,o)=>{if(t&&"reportValidity"in t){const s=get(o,r);t.setCustomValidity(s&&s.message||""),t.reportValidity();}},o=(e,t)=>{for(const o in t.fields){const s=t.fields[o];s&&s.ref&&"reportValidity"in s.ref?r(s.ref,o,e):s&&s.refs&&s.refs.forEach(t=>r(t,o,e));}},s$2=(r,s)=>{s.shouldUseNativeValidation&&o(r,s);const n={};for(const o in r){const f=get(s.fields,o),c=Object.assign(r[o]||{},{ref:f&&f.ref});if(i(s.names||Object.keys(r),o)){const r=Object.assign({},get(n,o));set(r,"root",c),set(n,o,r);}else set(n,o,c);}return n},i=(e,t)=>{const r=n$2(t);return e.some(e=>n$2(e).match(`^${r}\\.\\d+`))};function n$2(e){return e.replace(/\]|\[/g,"")}
|
|
@@ -22044,72 +22054,64 @@ var Close = DialogClose;
|
|
|
22044
22054
|
|
|
22045
22055
|
function Dialog(_a) {
|
|
22046
22056
|
var props = __rest(_a, []);
|
|
22047
|
-
return
|
|
22057
|
+
return jsx(Root$1, Object.assign({ "data-slot": "dialog" }, props));
|
|
22048
22058
|
}
|
|
22049
22059
|
function DialogTrigger(_a) {
|
|
22050
22060
|
var props = __rest(_a, []);
|
|
22051
|
-
return
|
|
22061
|
+
return jsx(Trigger$1, Object.assign({ "data-slot": "dialog-trigger" }, props));
|
|
22052
22062
|
}
|
|
22053
22063
|
function DialogPortal(_a) {
|
|
22054
22064
|
var props = __rest(_a, []);
|
|
22055
|
-
return
|
|
22065
|
+
return jsx(Portal$1, Object.assign({ "data-slot": "dialog-portal" }, props));
|
|
22056
22066
|
}
|
|
22057
22067
|
function DialogOverlay(_a) {
|
|
22058
22068
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
22059
|
-
return (
|
|
22069
|
+
return (jsx(Overlay, Object.assign({ "data-slot": "dialog-overlay", className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", className) }, props)));
|
|
22060
22070
|
}
|
|
22061
22071
|
function DialogContent(_a) {
|
|
22062
22072
|
var { className, children } = _a, props = __rest(_a, ["className", "children"]);
|
|
22063
|
-
return (
|
|
22064
|
-
React.createElement(DialogOverlay, null),
|
|
22065
|
-
React.createElement(Content$1, Object.assign({ "data-slot": "dialog-content", className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className) }, props),
|
|
22066
|
-
children,
|
|
22067
|
-
React.createElement(Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4" },
|
|
22068
|
-
React.createElement(X$2, null),
|
|
22069
|
-
React.createElement("span", { className: "sr-only" }, "Close")))));
|
|
22073
|
+
return (jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [jsx(DialogOverlay, {}), jsxs(Content$1, Object.assign({ "data-slot": "dialog-content", className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className) }, props, { children: [children, jsxs(Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground rounded-xs focus:outline-hidden absolute right-4 top-4 opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 disabled:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", children: [jsx(X$2, {}), jsx("span", { className: "sr-only", children: "Close" })] })] }))] }));
|
|
22070
22074
|
}
|
|
22071
22075
|
function DialogHeader(_a) {
|
|
22072
22076
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
22073
|
-
return (
|
|
22077
|
+
return (jsx("div", Object.assign({ "data-slot": "dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className) }, props)));
|
|
22074
22078
|
}
|
|
22075
22079
|
function DialogFooter(_a) {
|
|
22076
22080
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
22077
|
-
return (
|
|
22081
|
+
return (jsx("div", Object.assign({ "data-slot": "dialog-footer", className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className) }, props)));
|
|
22078
22082
|
}
|
|
22079
22083
|
function DialogTitle(_a) {
|
|
22080
22084
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
22081
|
-
return (
|
|
22085
|
+
return (jsx(Title, Object.assign({ "data-slot": "dialog-title", className: cn("text-lg font-semibold leading-none", className) }, props)));
|
|
22082
22086
|
}
|
|
22083
22087
|
function DialogDescription(_a) {
|
|
22084
22088
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
22085
|
-
return (
|
|
22089
|
+
return (jsx(Description, Object.assign({ "data-slot": "dialog-description", className: cn("text-muted-foreground text-sm", className) }, props)));
|
|
22086
22090
|
}
|
|
22087
22091
|
|
|
22088
22092
|
function Command(_a) {
|
|
22089
22093
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
22090
|
-
return (
|
|
22094
|
+
return (jsx(He, Object.assign({ "data-slot": "command", className: cn("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md", className) }, props)));
|
|
22091
22095
|
}
|
|
22092
22096
|
function CommandInput(_a) {
|
|
22093
22097
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
22094
|
-
return (
|
|
22095
|
-
React.createElement(Search, { className: "size-4 shrink-0 opacity-50" }),
|
|
22096
|
-
React.createElement(He.Input, Object.assign({ "data-slot": "command-input", className: cn("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className) }, props))));
|
|
22098
|
+
return (jsxs("div", { "data-slot": "command-input-wrapper", className: "flex h-9 items-center gap-2 border-b px-3", children: [jsx(Search, { className: "size-4 shrink-0 opacity-50" }), jsx(He.Input, Object.assign({ "data-slot": "command-input", className: cn("placeholder:text-muted-foreground outline-hidden flex h-10 w-full rounded-md bg-transparent py-3 text-sm disabled:cursor-not-allowed disabled:opacity-50", className) }, props))] }));
|
|
22097
22099
|
}
|
|
22098
22100
|
function CommandList(_a) {
|
|
22099
22101
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
22100
|
-
return (
|
|
22102
|
+
return (jsx(He.List, Object.assign({ "data-slot": "command-list", className: cn("max-h-[300px] scroll-py-1 overflow-y-auto overflow-x-hidden", className) }, props)));
|
|
22101
22103
|
}
|
|
22102
22104
|
function CommandEmpty(_a) {
|
|
22103
22105
|
var props = __rest(_a, []);
|
|
22104
|
-
return (
|
|
22106
|
+
return (jsx(He.Empty, Object.assign({ "data-slot": "command-empty", className: "py-6 text-center text-sm" }, props)));
|
|
22105
22107
|
}
|
|
22106
22108
|
function CommandGroup(_a) {
|
|
22107
22109
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
22108
|
-
return (
|
|
22110
|
+
return (jsx(He.Group, Object.assign({ "data-slot": "command-group", className: cn("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", className) }, props)));
|
|
22109
22111
|
}
|
|
22110
22112
|
function CommandItem(_a) {
|
|
22111
22113
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
22112
|
-
return (
|
|
22114
|
+
return (jsx(He.Item, Object.assign({ "data-slot": "command-item", className: cn("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", className) }, props)));
|
|
22113
22115
|
}
|
|
22114
22116
|
|
|
22115
22117
|
/**
|
|
@@ -22154,8 +22156,9 @@ function getOppositeAxis(axis) {
|
|
|
22154
22156
|
function getAxisLength(axis) {
|
|
22155
22157
|
return axis === 'y' ? 'height' : 'width';
|
|
22156
22158
|
}
|
|
22159
|
+
const yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);
|
|
22157
22160
|
function getSideAxis(placement) {
|
|
22158
|
-
return
|
|
22161
|
+
return yAxisSides.has(getSide(placement)) ? 'y' : 'x';
|
|
22159
22162
|
}
|
|
22160
22163
|
function getAlignmentAxis(placement) {
|
|
22161
22164
|
return getOppositeAxis(getSideAxis(placement));
|
|
@@ -22180,19 +22183,19 @@ function getExpandedPlacements(placement) {
|
|
|
22180
22183
|
function getOppositeAlignmentPlacement(placement) {
|
|
22181
22184
|
return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);
|
|
22182
22185
|
}
|
|
22186
|
+
const lrPlacement = ['left', 'right'];
|
|
22187
|
+
const rlPlacement = ['right', 'left'];
|
|
22188
|
+
const tbPlacement = ['top', 'bottom'];
|
|
22189
|
+
const btPlacement = ['bottom', 'top'];
|
|
22183
22190
|
function getSideList(side, isStart, rtl) {
|
|
22184
|
-
const lr = ['left', 'right'];
|
|
22185
|
-
const rl = ['right', 'left'];
|
|
22186
|
-
const tb = ['top', 'bottom'];
|
|
22187
|
-
const bt = ['bottom', 'top'];
|
|
22188
22191
|
switch (side) {
|
|
22189
22192
|
case 'top':
|
|
22190
22193
|
case 'bottom':
|
|
22191
|
-
if (rtl) return isStart ?
|
|
22192
|
-
return isStart ?
|
|
22194
|
+
if (rtl) return isStart ? rlPlacement : lrPlacement;
|
|
22195
|
+
return isStart ? lrPlacement : rlPlacement;
|
|
22193
22196
|
case 'left':
|
|
22194
22197
|
case 'right':
|
|
22195
|
-
return isStart ?
|
|
22198
|
+
return isStart ? tbPlacement : btPlacement;
|
|
22196
22199
|
default:
|
|
22197
22200
|
return [];
|
|
22198
22201
|
}
|
|
@@ -22742,6 +22745,8 @@ const hide$2 = function (options) {
|
|
|
22742
22745
|
};
|
|
22743
22746
|
};
|
|
22744
22747
|
|
|
22748
|
+
const originSides = /*#__PURE__*/new Set(['left', 'top']);
|
|
22749
|
+
|
|
22745
22750
|
// For type backwards-compatibility, the `OffsetOptions` type was also
|
|
22746
22751
|
// Derivable.
|
|
22747
22752
|
|
|
@@ -22755,7 +22760,7 @@ async function convertValueToCoords(state, options) {
|
|
|
22755
22760
|
const side = getSide(placement);
|
|
22756
22761
|
const alignment = getAlignment(placement);
|
|
22757
22762
|
const isVertical = getSideAxis(placement) === 'y';
|
|
22758
|
-
const mainAxisMulti =
|
|
22763
|
+
const mainAxisMulti = originSides.has(side) ? -1 : 1;
|
|
22759
22764
|
const crossAxisMulti = rtl && isVertical ? -1 : 1;
|
|
22760
22765
|
const rawValue = evaluate(options, state);
|
|
22761
22766
|
|
|
@@ -22955,7 +22960,7 @@ const limitShift$2 = function (options) {
|
|
|
22955
22960
|
if (checkCrossAxis) {
|
|
22956
22961
|
var _middlewareData$offse, _middlewareData$offse2;
|
|
22957
22962
|
const len = mainAxis === 'y' ? 'width' : 'height';
|
|
22958
|
-
const isOriginSide =
|
|
22963
|
+
const isOriginSide = originSides.has(getSide(placement));
|
|
22959
22964
|
const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);
|
|
22960
22965
|
const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);
|
|
22961
22966
|
if (crossAxisCoord < limitMin) {
|
|
@@ -23100,6 +23105,7 @@ function isShadowRoot(value) {
|
|
|
23100
23105
|
}
|
|
23101
23106
|
return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
|
|
23102
23107
|
}
|
|
23108
|
+
const invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);
|
|
23103
23109
|
function isOverflowElement(element) {
|
|
23104
23110
|
const {
|
|
23105
23111
|
overflow,
|
|
@@ -23107,27 +23113,32 @@ function isOverflowElement(element) {
|
|
|
23107
23113
|
overflowY,
|
|
23108
23114
|
display
|
|
23109
23115
|
} = getComputedStyle$1(element);
|
|
23110
|
-
return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !
|
|
23116
|
+
return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
|
|
23111
23117
|
}
|
|
23118
|
+
const tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);
|
|
23112
23119
|
function isTableElement(element) {
|
|
23113
|
-
return
|
|
23120
|
+
return tableElements.has(getNodeName(element));
|
|
23114
23121
|
}
|
|
23122
|
+
const topLayerSelectors = [':popover-open', ':modal'];
|
|
23115
23123
|
function isTopLayer(element) {
|
|
23116
|
-
return
|
|
23124
|
+
return topLayerSelectors.some(selector => {
|
|
23117
23125
|
try {
|
|
23118
23126
|
return element.matches(selector);
|
|
23119
|
-
} catch (
|
|
23127
|
+
} catch (_e) {
|
|
23120
23128
|
return false;
|
|
23121
23129
|
}
|
|
23122
23130
|
});
|
|
23123
23131
|
}
|
|
23132
|
+
const transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];
|
|
23133
|
+
const willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];
|
|
23134
|
+
const containValues = ['paint', 'layout', 'strict', 'content'];
|
|
23124
23135
|
function isContainingBlock(elementOrCss) {
|
|
23125
23136
|
const webkit = isWebKit();
|
|
23126
23137
|
const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;
|
|
23127
23138
|
|
|
23128
23139
|
// https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
|
|
23129
23140
|
// https://drafts.csswg.org/css-transforms-2/#individual-transforms
|
|
23130
|
-
return
|
|
23141
|
+
return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));
|
|
23131
23142
|
}
|
|
23132
23143
|
function getContainingBlock(element) {
|
|
23133
23144
|
let currentNode = getParentNode(element);
|
|
@@ -23145,8 +23156,9 @@ function isWebKit() {
|
|
|
23145
23156
|
if (typeof CSS === 'undefined' || !CSS.supports) return false;
|
|
23146
23157
|
return CSS.supports('-webkit-backdrop-filter', 'none');
|
|
23147
23158
|
}
|
|
23159
|
+
const lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);
|
|
23148
23160
|
function isLastTraversableNode(node) {
|
|
23149
|
-
return
|
|
23161
|
+
return lastTraversableNodeNames.has(getNodeName(node));
|
|
23150
23162
|
}
|
|
23151
23163
|
function getComputedStyle$1(element) {
|
|
23152
23164
|
return getWindow(element).getComputedStyle(element);
|
|
@@ -23451,6 +23463,7 @@ function getViewportRect(element, strategy) {
|
|
|
23451
23463
|
};
|
|
23452
23464
|
}
|
|
23453
23465
|
|
|
23466
|
+
const absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);
|
|
23454
23467
|
// Returns the inner client rect, subtracting scrollbars if present.
|
|
23455
23468
|
function getInnerBoundingClientRect(element, strategy) {
|
|
23456
23469
|
const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');
|
|
@@ -23515,7 +23528,7 @@ function getClippingElementAncestors(element, cache) {
|
|
|
23515
23528
|
if (!currentNodeIsContaining && computedStyle.position === 'fixed') {
|
|
23516
23529
|
currentContainingBlockComputedStyle = null;
|
|
23517
23530
|
}
|
|
23518
|
-
const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle &&
|
|
23531
|
+
const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
|
|
23519
23532
|
if (shouldDropCurrentNode) {
|
|
23520
23533
|
// Drop non-containing blocks.
|
|
23521
23534
|
result = result.filter(ancestor => ancestor !== currentNode);
|
|
@@ -24882,16 +24895,15 @@ var Content2 = PopoverContent$1;
|
|
|
24882
24895
|
|
|
24883
24896
|
function Popover(_a) {
|
|
24884
24897
|
var props = __rest(_a, []);
|
|
24885
|
-
return
|
|
24898
|
+
return jsx(Root2, Object.assign({ "data-slot": "popover" }, props));
|
|
24886
24899
|
}
|
|
24887
24900
|
function PopoverTrigger(_a) {
|
|
24888
24901
|
var props = __rest(_a, []);
|
|
24889
|
-
return
|
|
24902
|
+
return jsx(Trigger, Object.assign({ "data-slot": "popover-trigger" }, props));
|
|
24890
24903
|
}
|
|
24891
24904
|
function PopoverContent(_a) {
|
|
24892
24905
|
var { className, align = "center", sideOffset = 4 } = _a, props = __rest(_a, ["className", "align", "sideOffset"]);
|
|
24893
|
-
return (
|
|
24894
|
-
React.createElement(Content2, Object.assign({ "data-slot": "popover-content", align: align, sideOffset: sideOffset, className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden", className) }, props))));
|
|
24906
|
+
return (jsx(Portal, { children: jsx(Content2, Object.assign({ "data-slot": "popover-content", align: align, sideOffset: sideOffset, className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-popover-content-transform-origin) outline-hidden z-50 w-72 rounded-md border p-4 shadow-md", className) }, props)) }));
|
|
24895
24907
|
}
|
|
24896
24908
|
|
|
24897
24909
|
function n(){return (n=Object.assign?Object.assign.bind():function(a){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(a[t]=e[t]);}return a}).apply(this,arguments)}function e(a,n){if(null==a)return {};var e,t,r={},s=Object.keys(a);for(t=0;t<s.length;t++)n.indexOf(e=s[t])>=0||(r[e]=a[e]);return r}var t={ac:true,ad:true,ae:true,af:true,afar:true,ag:true,ai:true,al:true,am:true,ao:true,aq:true,ar:true,as:true,at:true,au:true,"au-aboriginal":true,"au-act":true,"au-nsw":true,"au-nt":true,"au-qld":true,"au-tas":true,"au-vic":true,"au-wa":true,aw:true,ax:true,az:true,ba:true,bb:true,bd:true,be:true,bf:true,bg:true,bh:true,bi:true,bj:true,bl:true,bm:true,bn:true,bo:true,"bq-bo":true,"bq-sa":true,"bq-se":true,bq:true,br:true,bs:true,bt:true,bv:true,bw:true,by:true,bz:true,"ca-bc":true,ca:true,cc:true,cd:true,cf:true,cg:true,"ch-gr":true,ch:true,ci:true,ck:true,cl:true,cm:true,"cn-xj":true,cn:true,co:true,cp:true,cq:true,cr:true,cu:true,cv:true,cw:true,cx:true,cy:true,cz:true,de:true,dg:true,dj:true,dk:true,dm:true,do:true,dz:true,ea:true,earth:true,east_african_federation:true,easter_island:true,"ec-w":true,ec:true,ee:true,eg:true,eh:true,er:true,"es-ar":true,"es-ce":true,"es-cn":true,"es-ct":true,"es-ga":true,"es-ib":true,"es-ml":true,"es-pv":true,"es-variant":true,es:true,"et-or":true,"et-ti":true,et:true,eu:true,european_union:true,ewe:true,fi:true,fj:true,fk:true,fm:true,fo:true,"fr-20r":true,"fr-bre":true,"fr-cp":true,fr:true,fx:true,ga:true,"gb-con":true,"gb-eng":true,"gb-nir":true,"gb-ork":true,"gb-sct":true,"gb-wls":true,gb:true,gd:true,"ge-ab":true,ge:true,gf:true,gg:true,gh:true,gi:true,gl:true,gm:true,gn:true,gp:true,gq:true,gr:true,gs:true,gt:true,gu:true,guarani:true,gw:true,gy:true,hausa:true,hk:true,hm:true,hmong:true,hn:true,hr:true,ht:true,hu:true,ic:true,id:true,"id-jb":true,"id-jt":true,ie:true,il:true,im:true,"in-as":true,"in-gj":true,"in-ka":true,"in-or":true,"in-tn":true,in:true,io:true,iq:true,ir:true,is:true,"it-23":true,"it-82":true,"it-88":true,it:true,je:true,jm:true,jo:true,jp:true,kanuri:true,ke:true,kg:true,kh:true,ki:true,kikuyu:true,km:true,kn:true,kongo:true,kp:true,kr:true,kurdistan:true,kw:true,ky:true,kz:true,la:true,lb:true,lc:true,li:true,lk:true,lr:true,ls:true,lt:true,lu:true,lv:true,ly:true,ma:true,malayali:true,manipur:true,maori:true,mc:true,md:true,me:true,mf:true,mg:true,mh:true,mizoram:true,mk:true,ml:true,mm:true,mn:true,mo:true,mp:true,mq:true,mr:true,ms:true,mt:true,mu:true,mv:true,mw:true,mx:true,my:true,mz:true,na:true,nato:true,nc:true,ne:true,nf:true,ng:true,ni:true,"nl-fr":true,nl:true,no:true,northern_cyprus:true,np:true,nr:true,nu:true,nz:true,occitania:true,olympics:true,om:true,otomi:true,pa:true,pe:true,pf:true,pg:true,ph:true,"pk-jk":true,"pk-sd":true,pk:true,pl:true,pm:true,pn:true,pr:true,ps:true,"pt-20":true,"pt-30":true,pt:true,pw:true,py:true,qa:true,quechua:true,re:true,ro:true,rs:true,ru:true,"ru-ba":true,"ru-ce":true,"ru-cu":true,"ru-da":true,"ru-ko":true,"ru-ta":true,"ru-ud":true,rw:true,sa:true,sami:true,sb:true,sc:true,sd:true,se:true,sg:true,"sh-ac":true,"sh-hl":true,"sh-ta":true,sh:true,si:true,sj:true,sk:true,sl:true,sm:true,sn:true,so:true,somaliland:true,south_ossetia:true,soviet_union:true,sr:true,ss:true,st:true,su:true,sv:true,sx:true,sy:true,sz:true,ta:true,tc:true,td:true,tf:true,tg:true,th:true,tibet:true,tj:true,tk:true,tl:true,tm:true,tn:true,to:true,torres_strait_islands:true,tr:true,transnistria:true,tt:true,tv:true,tw:true,tz:true,ua:true,ug:true,uk:true,um:true,un:true,united_nations:true,"us-hi":true,us:true,uy:true,uz:true,va:true,vc:true,ve:true,vg:true,vi:true,vn:true,vu:true,wf:true,wiphala:true,ws:true,xk:true,xx:true,ye:true,yorubaland:true,yt:true,za:true,zm:true,zw:true},s=["countryCode","cdnUrl"],c=function(a,e,t,r){return void 0===r&&(r=""),n({},t,{title:t.title||a,height:t.height||100,src:""+(e||"https://react-circle-flags.pages.dev/")+r+a+".svg"})},u=function(r){var i=r.countryCode,u=r.cdnUrl,o=e(r,s);return React__default.createElement("img",n({"data-testid":"circle-country-flag"},c(function(a){return t[a]?a:"xx"}(i).toLowerCase(),u,o)))};
|
|
@@ -33427,30 +33439,12 @@ const CountryDropdownComponent = (_a, ref) => {
|
|
|
33427
33439
|
onChange === null || onChange === void 0 ? void 0 : onChange(country);
|
|
33428
33440
|
setOpen(false);
|
|
33429
33441
|
}, [onChange]);
|
|
33430
|
-
const triggerClasses = cn("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border
|
|
33431
|
-
return (
|
|
33432
|
-
|
|
33433
|
-
|
|
33434
|
-
|
|
33435
|
-
|
|
33436
|
-
slim === false && (React__default.createElement("span", { className: "overflow-hidden text-ellipsis whitespace-nowrap" }, selectedCountry.name)))) : (React__default.createElement("span", null, slim === false ? (placeholder || setSelectedCountry.name) : (React__default.createElement(Globe, { size: 20 })))),
|
|
33437
|
-
React__default.createElement(ChevronDown, { size: 16 })),
|
|
33438
|
-
React__default.createElement(PopoverContent, { collisionPadding: 10, side: "bottom", className: "min-w-[--radix-popper-anchor-width] p-0" },
|
|
33439
|
-
React__default.createElement(Command, { className: "w-full max-h-[200px] sm:max-h-[270px]" },
|
|
33440
|
-
React__default.createElement(CommandList, null,
|
|
33441
|
-
React__default.createElement("div", { className: "sticky top-0 z-10 bg-popover" },
|
|
33442
|
-
React__default.createElement(CommandInput, { placeholder: "Search country..." })),
|
|
33443
|
-
React__default.createElement(CommandEmpty, null, "No country found."),
|
|
33444
|
-
React__default.createElement(CommandGroup, null, options
|
|
33445
|
-
.filter((x) => x.name)
|
|
33446
|
-
.map((option, key) => (React__default.createElement(CommandItem, { className: "flex items-center w-full gap-2", key: key, onSelect: () => handleSelect(option) },
|
|
33447
|
-
React__default.createElement("div", { className: "flex flex-grow w-0 space-x-2 overflow-hidden" },
|
|
33448
|
-
React__default.createElement("div", { className: "inline-flex items-center justify-center w-5 h-5 shrink-0 overflow-hidden rounded-full" },
|
|
33449
|
-
React__default.createElement(u, { countryCode: option.alpha2.toLowerCase(), height: 20 })),
|
|
33450
|
-
React__default.createElement("span", { className: "overflow-hidden text-ellipsis whitespace-nowrap" }, option.name)),
|
|
33451
|
-
React__default.createElement(Check, { className: cn("ml-auto h-4 w-4 shrink-0", option.name === (selectedCountry === null || selectedCountry === void 0 ? void 0 : selectedCountry.name)
|
|
33452
|
-
? "opacity-100"
|
|
33453
|
-
: "opacity-0") }))))))))));
|
|
33442
|
+
const triggerClasses = cn("border-input ring-offset-background placeholder:text-muted-foreground focus:ring-ring flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border bg-transparent px-3 py-2 text-sm shadow-sm focus:outline-none focus:ring-1 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1", slim === true && "w-20");
|
|
33443
|
+
return (jsxs(Popover, { open: open, onOpenChange: setOpen, children: [jsxs(PopoverTrigger, Object.assign({ ref: ref, className: triggerClasses, disabled: disabled }, props, { children: [selectedCountry ? (jsxs("div", { className: "flex w-0 flex-grow items-center gap-2 overflow-hidden", children: [jsx("div", { className: "inline-flex h-5 w-5 shrink-0 items-center justify-center overflow-hidden rounded-full", children: jsx(u, { countryCode: selectedCountry.alpha2.toLowerCase(), height: 20 }) }), slim === false && (jsx("span", { className: "overflow-hidden text-ellipsis whitespace-nowrap", children: selectedCountry.name }))] })) : (jsx("span", { children: slim === false ? (placeholder || setSelectedCountry.name) : (jsx(Globe, { size: 20 })) })), jsx(ChevronDown, { size: 16 })] })), jsx(PopoverContent, { collisionPadding: 10, side: "bottom", className: "min-w-[--radix-popper-anchor-width] p-0", children: jsx(Command, { className: "max-h-[200px] w-full sm:max-h-[270px]", children: jsxs(CommandList, { children: [jsx("div", { className: "bg-popover sticky top-0 z-10", children: jsx(CommandInput, { placeholder: "Search country..." }) }), jsx(CommandEmpty, { children: "No country found." }), jsx(CommandGroup, { children: options
|
|
33444
|
+
.filter((x) => x.name)
|
|
33445
|
+
.map((option, key) => (jsxs(CommandItem, { className: "flex w-full items-center gap-2", onSelect: () => handleSelect(option), children: [jsxs("div", { className: "flex w-0 flex-grow space-x-2 overflow-hidden", children: [jsx("div", { className: "inline-flex h-5 w-5 shrink-0 items-center justify-center overflow-hidden rounded-full", children: jsx(u, { countryCode: option.alpha2.toLowerCase(), height: 20 }) }), jsx("span", { className: "overflow-hidden text-ellipsis whitespace-nowrap", children: option.name })] }), jsx(Check, { className: cn("ml-auto h-4 w-4 shrink-0", option.name === (selectedCountry === null || selectedCountry === void 0 ? void 0 : selectedCountry.name)
|
|
33446
|
+
? "opacity-100"
|
|
33447
|
+
: "opacity-0") })] }, key))) })] }) }) })] }));
|
|
33454
33448
|
};
|
|
33455
33449
|
CountryDropdownComponent.displayName = "CountryDropdownComponent";
|
|
33456
33450
|
const CountryDropdown = forwardRef(CountryDropdownComponent);
|
|
@@ -33495,35 +33489,12 @@ function AddressInput() {
|
|
|
33495
33489
|
else {
|
|
33496
33490
|
form.clearErrors("address");
|
|
33497
33491
|
}
|
|
33492
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33498
33493
|
}, [open]);
|
|
33499
|
-
return (
|
|
33500
|
-
|
|
33501
|
-
|
|
33502
|
-
|
|
33503
|
-
React__default.createElement(FormField, { control: form.control, name: "address", render: () => (React__default.createElement(FormItem, null,
|
|
33504
|
-
React__default.createElement(FormLabel, null, t("CheckoutEmbed.CustomerForm.address.address")),
|
|
33505
|
-
React__default.createElement(FormControl, null,
|
|
33506
|
-
React__default.createElement(Input, { placeholder: t("CheckoutEmbed.CustomerForm.address.addressPlaceholder"), value: (currentValue === null || currentValue === void 0 ? void 0 : currentValue.line1) ? formatAddress(currentValue) : "", readOnly: true, className: "cursor-pointer" })),
|
|
33507
|
-
React__default.createElement(FormMessage, null))) }))),
|
|
33508
|
-
React__default.createElement(DialogContent, { className: "sm:max-w-[500px] transform-none!" },
|
|
33509
|
-
React__default.createElement(DialogHeader, null,
|
|
33510
|
-
React__default.createElement(DialogTitle, null, t("CheckoutEmbed.CustomerForm.address.title")),
|
|
33511
|
-
React__default.createElement(DialogDescription, null, t("CheckoutEmbed.CustomerForm.address.description"))),
|
|
33512
|
-
React__default.createElement("div", { className: "grid grid-cols-2 gap-4" },
|
|
33513
|
-
React__default.createElement(InputGroup, { className: "col-span-2", name: "address.line1", label: t("CheckoutEmbed.CustomerForm.address.line1"), placeholder: t("CheckoutEmbed.CustomerForm.address.line1Placeholder"), autoComplete: "address-line1" }),
|
|
33514
|
-
React__default.createElement(InputGroup, { className: "col-span-2", name: "address.line2", label: t("CheckoutEmbed.CustomerForm.address.line2"), placeholder: t("CheckoutEmbed.CustomerForm.address.line2Placeholder"), autoComplete: "address-line2" }),
|
|
33515
|
-
React__default.createElement(InputGroup, { name: "address.city", label: t("CheckoutEmbed.CustomerForm.address.city"), placeholder: t("CheckoutEmbed.CustomerForm.address.cityPlaceholder"), autoComplete: "address-level2" }),
|
|
33516
|
-
React__default.createElement(InputGroup, { name: "address.state", label: t("CheckoutEmbed.CustomerForm.address.state"), placeholder: t("CheckoutEmbed.CustomerForm.address.statePlaceholder"), autoComplete: "address-level1" }),
|
|
33517
|
-
React__default.createElement(InputGroup, { name: "address.zipCode", label: t("CheckoutEmbed.CustomerForm.address.zipCode"), placeholder: t("CheckoutEmbed.CustomerForm.address.zipCodePlaceholder"), autoComplete: "postal-code" }),
|
|
33518
|
-
React__default.createElement(FormField, { control: form.control, name: "address.country", render: ({ field }) => (React__default.createElement(FormItem, null,
|
|
33519
|
-
React__default.createElement(FormLabel, null, t("CheckoutEmbed.CustomerForm.address.country")),
|
|
33520
|
-
React__default.createElement(CountryDropdown, { placeholder: t("CheckoutEmbed.CustomerForm.address.countryPlaceholder"), defaultValue: field.value, onChange: (country) => {
|
|
33521
|
-
field.onChange(country.name);
|
|
33522
|
-
form.setValue("address.countryCode", country.alpha2);
|
|
33523
|
-
} }),
|
|
33524
|
-
React__default.createElement(FormMessage, null))) })),
|
|
33525
|
-
React__default.createElement(DialogFooter, null,
|
|
33526
|
-
React__default.createElement(Button, { onClick: handleSave, type: "button", disabled: isValidating }, t("CheckoutEmbed.CustomerForm.address.button")))))));
|
|
33494
|
+
return (jsx("div", { className: "w-full md:col-span-2", children: jsxs(Dialog, { open: open, onOpenChange: setOpen, children: [jsx(DialogTrigger, { asChild: true, children: jsx("div", { className: "relative grid gap-2", children: jsx(FormField, { control: form.control, name: "address", render: () => (jsxs(FormItem, { children: [jsx(FormLabel, { children: t("CheckoutEmbed.CustomerForm.address.address") }), jsx(FormControl, { children: jsx(Input, { placeholder: t("CheckoutEmbed.CustomerForm.address.addressPlaceholder"), value: (currentValue === null || currentValue === void 0 ? void 0 : currentValue.line1) ? formatAddress(currentValue) : "", readOnly: true, className: "cursor-pointer" }) }), jsx(FormMessage, {})] })) }) }) }), jsxs(DialogContent, { className: "transform-none! sm:max-w-[500px]", children: [jsxs(DialogHeader, { children: [jsx(DialogTitle, { children: t("CheckoutEmbed.CustomerForm.address.title") }), jsx(DialogDescription, { children: t("CheckoutEmbed.CustomerForm.address.description") })] }), jsxs("div", { className: "grid grid-cols-2 gap-4", children: [jsx(InputGroup, { className: "col-span-2", name: "address.line1", label: t("CheckoutEmbed.CustomerForm.address.line1"), placeholder: t("CheckoutEmbed.CustomerForm.address.line1Placeholder"), autoComplete: "address-line1" }), jsx(InputGroup, { className: "col-span-2", name: "address.line2", label: t("CheckoutEmbed.CustomerForm.address.line2"), placeholder: t("CheckoutEmbed.CustomerForm.address.line2Placeholder"), autoComplete: "address-line2" }), jsx(InputGroup, { name: "address.city", label: t("CheckoutEmbed.CustomerForm.address.city"), placeholder: t("CheckoutEmbed.CustomerForm.address.cityPlaceholder"), autoComplete: "address-level2" }), jsx(InputGroup, { name: "address.state", label: t("CheckoutEmbed.CustomerForm.address.state"), placeholder: t("CheckoutEmbed.CustomerForm.address.statePlaceholder"), autoComplete: "address-level1" }), jsx(InputGroup, { name: "address.zipCode", label: t("CheckoutEmbed.CustomerForm.address.zipCode"), placeholder: t("CheckoutEmbed.CustomerForm.address.zipCodePlaceholder"), autoComplete: "postal-code" }), jsx(FormField, { control: form.control, name: "address.country", render: ({ field }) => (jsxs(FormItem, { children: [jsx(FormLabel, { children: t("CheckoutEmbed.CustomerForm.address.country") }), jsx(CountryDropdown, { placeholder: t("CheckoutEmbed.CustomerForm.address.countryPlaceholder"), defaultValue: field.value, onChange: (country) => {
|
|
33495
|
+
field.onChange(country.name);
|
|
33496
|
+
form.setValue("address.countryCode", country.alpha2);
|
|
33497
|
+
} }), jsx(FormMessage, {})] })) })] }), jsx(DialogFooter, { children: jsx(Button, { onClick: handleSave, type: "button", disabled: isValidating, children: t("CheckoutEmbed.CustomerForm.address.button") }) })] })] }) }));
|
|
33527
33498
|
}
|
|
33528
33499
|
|
|
33529
33500
|
function CustomerForm({ initialData, onSubmit, }) {
|
|
@@ -33546,17 +33517,7 @@ function CustomerForm({ initialData, onSubmit, }) {
|
|
|
33546
33517
|
},
|
|
33547
33518
|
mode: "onBlur",
|
|
33548
33519
|
});
|
|
33549
|
-
return (
|
|
33550
|
-
React__default.createElement("form", { onSubmit: form.handleSubmit(onSubmit), className: "md:grid-cols-2 gap-6 grid" },
|
|
33551
|
-
React__default.createElement("div", { className: "md:col-span-2" },
|
|
33552
|
-
React__default.createElement("h2", null, t("CheckoutEmbed.CustomerForm.title"))),
|
|
33553
|
-
React__default.createElement(InputGroup, { className: "md:col-span-2", name: "email", label: t("CheckoutEmbed.CustomerForm.email"), placeholder: t("CheckoutEmbed.CustomerForm.emailPlaceholder"), type: "email", autoComplete: "email" }),
|
|
33554
|
-
React__default.createElement(InputGroup, { name: "firstName", label: t("CheckoutEmbed.CustomerForm.firstName"), placeholder: t("CheckoutEmbed.CustomerForm.firstNamePlaceholder"), autoComplete: "given-name" }),
|
|
33555
|
-
React__default.createElement(InputGroup, { name: "lastName", label: t("CheckoutEmbed.CustomerForm.lastName"), placeholder: t("CheckoutEmbed.CustomerForm.lastNamePlaceholder"), autoComplete: "family-name" }),
|
|
33556
|
-
React__default.createElement(AddressInput, null),
|
|
33557
|
-
React__default.createElement(InputGroup, { name: "phone", label: t("CheckoutEmbed.CustomerForm.phone"), placeholder: t("CheckoutEmbed.CustomerForm.phonePlaceholder"), type: "tel", autoComplete: "tel" }),
|
|
33558
|
-
React__default.createElement("div", { className: "flex md:col-span-2 justify-end pt-2" },
|
|
33559
|
-
React__default.createElement(SubmitButton, { isValid: form.formState.isValid, isSubmitting: form.formState.isSubmitting }, t("CheckoutEmbed.CustomerForm.button"))))));
|
|
33520
|
+
return (jsx(Form, Object.assign({}, form, { children: jsxs("form", { onSubmit: form.handleSubmit(onSubmit), className: "grid gap-6 md:grid-cols-2", children: [jsx("div", { className: "md:col-span-2", children: jsx("h2", { children: t("CheckoutEmbed.CustomerForm.title") }) }), jsx(InputGroup, { className: "md:col-span-2", name: "email", label: t("CheckoutEmbed.CustomerForm.email"), placeholder: t("CheckoutEmbed.CustomerForm.emailPlaceholder"), type: "email", autoComplete: "email" }), jsx(InputGroup, { name: "firstName", label: t("CheckoutEmbed.CustomerForm.firstName"), placeholder: t("CheckoutEmbed.CustomerForm.firstNamePlaceholder"), autoComplete: "given-name" }), jsx(InputGroup, { name: "lastName", label: t("CheckoutEmbed.CustomerForm.lastName"), placeholder: t("CheckoutEmbed.CustomerForm.lastNamePlaceholder"), autoComplete: "family-name" }), jsx(AddressInput, {}), jsx(InputGroup, { name: "phone", label: t("CheckoutEmbed.CustomerForm.phone"), placeholder: t("CheckoutEmbed.CustomerForm.phonePlaceholder"), type: "tel", autoComplete: "tel" }), jsx("div", { className: "flex justify-end pt-2 md:col-span-2", children: jsx(SubmitButton, { isValid: form.formState.isValid, isSubmitting: form.formState.isSubmitting, children: t("CheckoutEmbed.CustomerForm.button") }) })] }) })));
|
|
33560
33521
|
}
|
|
33561
33522
|
|
|
33562
33523
|
var reactStripe_umd$1 = {exports: {}};
|
|
@@ -35090,22 +35051,15 @@ const CheckoutForm$1 = ({ onSuccess, onError, children, setSubmitting, }) => {
|
|
|
35090
35051
|
const wrapper = document.getElementById("bs-wrapper");
|
|
35091
35052
|
if (!wrapper)
|
|
35092
35053
|
return null;
|
|
35093
|
-
return (
|
|
35094
|
-
|
|
35095
|
-
|
|
35096
|
-
|
|
35097
|
-
|
|
35098
|
-
|
|
35099
|
-
|
|
35100
|
-
|
|
35101
|
-
|
|
35102
|
-
height: rect === null || rect === void 0 ? void 0 : rect.height,
|
|
35103
|
-
} },
|
|
35104
|
-
React__default.createElement("form", { onSubmit: handleSubmit },
|
|
35105
|
-
React__default.createElement("div", null,
|
|
35106
|
-
React__default.createElement(reactStripe_umdExports.PaymentElement, null),
|
|
35107
|
-
React__default.createElement("p", { style: { color: "#fb2c36" } }, errorMessage)),
|
|
35108
|
-
children)), wrapper)));
|
|
35054
|
+
return (jsxs(Fragment$1, { children: [jsx("div", { ref: containerRef, className: "h-[450px] w-full" }), ReactDOM__default.createPortal(jsx("div", { style: {
|
|
35055
|
+
display: "block",
|
|
35056
|
+
zIndex: 20,
|
|
35057
|
+
position: "absolute",
|
|
35058
|
+
top: rect === null || rect === void 0 ? void 0 : rect.top,
|
|
35059
|
+
left: rect === null || rect === void 0 ? void 0 : rect.left,
|
|
35060
|
+
width: rect === null || rect === void 0 ? void 0 : rect.width,
|
|
35061
|
+
height: rect === null || rect === void 0 ? void 0 : rect.height,
|
|
35062
|
+
}, children: jsxs("form", { onSubmit: handleSubmit, children: [jsxs("div", { children: [jsx(reactStripe_umdExports.PaymentElement, {}), jsx("p", { style: { color: "#fb2c36" }, children: errorMessage })] }), children] }) }), wrapper)] }));
|
|
35109
35063
|
};
|
|
35110
35064
|
var CheckoutForm$2 = memo(CheckoutForm$1);
|
|
35111
35065
|
|
|
@@ -35117,56 +35071,24 @@ function PaymentElement({ paymentSecret, publicKey, checkoutAppearance, locale,
|
|
|
35117
35071
|
clientSecret: paymentSecret,
|
|
35118
35072
|
fonts: fonts,
|
|
35119
35073
|
};
|
|
35120
|
-
return (
|
|
35121
|
-
React__default.createElement(CheckoutForm$2, { onSuccess: onSuccess, onError: onError, children: children, setSubmitting: setSubmitting })));
|
|
35074
|
+
return (jsx(reactStripe_umdExports.Elements, { stripe: stripePromise, options: options, children: jsx(CheckoutForm$2, { onSuccess: onSuccess, onError: onError, setSubmitting: setSubmitting, children: children }) }));
|
|
35122
35075
|
}
|
|
35123
35076
|
var PaymentElement$1 = memo(PaymentElement);
|
|
35124
35077
|
|
|
35125
35078
|
function PaymentForm({ paymentSecret, onSuccess, onError, onBack, onDoubleBack, contactEmail, shippingAddress, shippingName, shippingPrice, checkoutAppearance, fonts, locale, publicKey, paymentComponentKey, }) {
|
|
35126
35079
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
35127
35080
|
const { t } = useTranslation();
|
|
35128
|
-
return (
|
|
35129
|
-
|
|
35130
|
-
|
|
35131
|
-
|
|
35132
|
-
|
|
35133
|
-
|
|
35134
|
-
React__default.createElement("p", null,
|
|
35135
|
-
React__default.createElement("span", { className: "font-medium" }, t("CheckoutEmbed.Shipping.contact")),
|
|
35136
|
-
" ",
|
|
35137
|
-
React__default.createElement("span", { className: "text-muted-foreground" }, contactEmail)),
|
|
35138
|
-
React__default.createElement(Button, { variant: "link", size: "link", onClick: onDoubleBack }, t("CheckoutEmbed.Shipping.change"))),
|
|
35139
|
-
React__default.createElement("div", { className: "flex items-center justify-between text-sm" },
|
|
35140
|
-
React__default.createElement("p", null,
|
|
35141
|
-
React__default.createElement("span", { className: "font-medium" }, t("CheckoutEmbed.Shipping.address")),
|
|
35142
|
-
" ",
|
|
35143
|
-
React__default.createElement("span", { className: "text-muted-foreground" }, shippingAddress)),
|
|
35144
|
-
React__default.createElement(Button, { variant: "link", size: "link", onClick: onDoubleBack }, t("CheckoutEmbed.Shipping.change"))),
|
|
35145
|
-
React__default.createElement("div", { className: "flex items-center justify-between text-sm" },
|
|
35146
|
-
React__default.createElement("p", null,
|
|
35147
|
-
React__default.createElement("span", { className: "font-medium" }, t("CheckoutEmbed.Shipping.shipping")),
|
|
35148
|
-
" ",
|
|
35149
|
-
React__default.createElement("span", { className: "text-muted-foreground" },
|
|
35150
|
-
shippingName,
|
|
35151
|
-
" \u00B7 ",
|
|
35152
|
-
shippingPrice)),
|
|
35153
|
-
React__default.createElement(Button, { variant: "link", size: "link", onClick: onBack }, t("CheckoutEmbed.Shipping.change")))),
|
|
35154
|
-
React__default.createElement("div", { className: "mt-8" }, paymentSecret && (React__default.createElement(PaymentElement$1, { key: paymentComponentKey, fonts: fonts, checkoutAppearance: convertCheckoutAppearanceToStripeAppearance(checkoutAppearance, fonts), locale: locale, paymentSecret: paymentSecret, onSuccess: onSuccess, onError: onError, setSubmitting: setIsSubmitting, publicKey: publicKey },
|
|
35155
|
-
React__default.createElement("div", { style: {
|
|
35156
|
-
display: "flex",
|
|
35157
|
-
justifyContent: "space-between",
|
|
35158
|
-
alignItems: "center",
|
|
35159
|
-
paddingTop: "2rem",
|
|
35160
|
-
} },
|
|
35161
|
-
React__default.createElement(Button, { type: "button", variant: "ghost", onClick: onBack },
|
|
35162
|
-
React__default.createElement(ChevronLeft, null),
|
|
35163
|
-
t("CheckoutEmbed.Payment.back")),
|
|
35164
|
-
React__default.createElement(SubmitButton, { isValid: true, isSubmitting: isSubmitting }, t("CheckoutEmbed.Payment.button"))))))));
|
|
35081
|
+
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: shippingAddress })] }), 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.shipping") }), " ", jsxs("span", { className: "text-muted-foreground", children: [shippingName, " \u00B7 ", shippingPrice] })] }), 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: jsxs("div", { style: {
|
|
35082
|
+
display: "flex",
|
|
35083
|
+
justifyContent: "space-between",
|
|
35084
|
+
alignItems: "center",
|
|
35085
|
+
paddingTop: "2rem",
|
|
35086
|
+
}, children: [jsxs(Button, { type: "button", variant: "ghost", onClick: onBack, children: [jsx(ChevronLeft, {}), t("CheckoutEmbed.Payment.back")] }), jsx(SubmitButton, { isValid: true, isSubmitting: isSubmitting, children: t("CheckoutEmbed.Payment.button") })] }) }, paymentComponentKey)) })] }));
|
|
35165
35087
|
}
|
|
35166
35088
|
|
|
35167
35089
|
function Skeleton(_a) {
|
|
35168
35090
|
var { className } = _a, props = __rest(_a, ["className"]);
|
|
35169
|
-
return (
|
|
35091
|
+
return (jsx("div", Object.assign({ "data-slot": "skeleton", className: cn("bg-accent animate-pulse rounded-md", className) }, props)));
|
|
35170
35092
|
}
|
|
35171
35093
|
|
|
35172
35094
|
function ZasilkovnaShippingOption({ children, onPickupPointSelected, locale, countryCode, apiKey, }) {
|
|
@@ -35205,15 +35127,14 @@ function ZasilkovnaShippingOption({ children, onPickupPointSelected, locale, cou
|
|
|
35205
35127
|
console.error("Packeta widget not found", window);
|
|
35206
35128
|
}
|
|
35207
35129
|
};
|
|
35208
|
-
return (
|
|
35209
|
-
React__default.createElement("div", { onClick: () => handleClick() }, children)));
|
|
35130
|
+
return (jsx(Fragment$1, { children: jsx("div", { onClick: () => handleClick(), children: children }) }));
|
|
35210
35131
|
}
|
|
35211
35132
|
|
|
35212
35133
|
function ShippingOptionWrapper({ rate, children, onPickupPointSelected, locale, countryCode, }) {
|
|
35213
35134
|
if (rate.provider === "zasilkovna") {
|
|
35214
|
-
return (
|
|
35135
|
+
return (jsx(ZasilkovnaShippingOption, { onPickupPointSelected: onPickupPointSelected, locale: locale, countryCode: countryCode, apiKey: rate.clientSecret, children: children }));
|
|
35215
35136
|
}
|
|
35216
|
-
return
|
|
35137
|
+
return jsx(Fragment$1, { children: children });
|
|
35217
35138
|
}
|
|
35218
35139
|
|
|
35219
35140
|
function ShippingMethodForm({ shippingRates, initialData, onSubmit, onBack, contactEmail, shippingAddress, currency, exchangeRate, locale, countryCode, setFormData, formData, }) {
|
|
@@ -35230,77 +35151,38 @@ function ShippingMethodForm({ shippingRates, initialData, onSubmit, onBack, cont
|
|
|
35230
35151
|
},
|
|
35231
35152
|
});
|
|
35232
35153
|
const currentRateId = form.watch("rateId");
|
|
35233
|
-
return (
|
|
35234
|
-
|
|
35235
|
-
|
|
35236
|
-
|
|
35237
|
-
|
|
35238
|
-
|
|
35239
|
-
|
|
35240
|
-
|
|
35241
|
-
|
|
35242
|
-
|
|
35243
|
-
|
|
35244
|
-
|
|
35245
|
-
|
|
35246
|
-
|
|
35247
|
-
|
|
35248
|
-
|
|
35249
|
-
|
|
35250
|
-
|
|
35251
|
-
|
|
35252
|
-
|
|
35253
|
-
|
|
35254
|
-
|
|
35255
|
-
|
|
35256
|
-
|
|
35257
|
-
|
|
35258
|
-
|
|
35259
|
-
|
|
35260
|
-
|
|
35261
|
-
|
|
35262
|
-
rateId,
|
|
35263
|
-
provider: rate.provider,
|
|
35264
|
-
price: intPrice,
|
|
35265
|
-
name: rate.name,
|
|
35266
|
-
pickupPointId: rate.provider === "zasilkovna" ? pickupPointId : "",
|
|
35267
|
-
pickupPointDisplayName: rate.provider === "zasilkovna" ? pickupPointName : "",
|
|
35268
|
-
};
|
|
35269
|
-
form.setValue("rateId", newFormData.rateId);
|
|
35270
|
-
form.setValue("provider", newFormData.provider);
|
|
35271
|
-
form.setValue("name", newFormData.name);
|
|
35272
|
-
form.setValue("price", newFormData.price);
|
|
35273
|
-
form.setValue("pickupPointId", newFormData.pickupPointId);
|
|
35274
|
-
form.setValue("pickupPointDisplayName", newFormData.pickupPointDisplayName);
|
|
35275
|
-
setFormData(Object.assign(Object.assign({}, formData), { shipping: Object.assign({}, newFormData) }));
|
|
35276
|
-
}, locale: locale, countryCode: countryCode },
|
|
35277
|
-
React__default.createElement("div", { className: clsx("p-4 cursor-pointer rounded-md border bg-background", {
|
|
35278
|
-
"bg-muted border-primary": currentRateId === rateId,
|
|
35279
|
-
}) },
|
|
35280
|
-
React__default.createElement("div", { className: "flex items-center justify-between w-full" },
|
|
35281
|
-
React__default.createElement("p", null, rate.name),
|
|
35282
|
-
React__default.createElement("p", null, displayPrice)),
|
|
35283
|
-
React__default.createElement("p", { className: "text-sm text-muted-foreground" }, description),
|
|
35284
|
-
pickupPointDisplayName && (React__default.createElement(React__default.Fragment, null,
|
|
35285
|
-
React__default.createElement("hr", { className: "my-2" }),
|
|
35286
|
-
React__default.createElement("p", { className: "text-sm text-muted-foreground" },
|
|
35287
|
-
t("CheckoutEmbed.Shipping.description.shippedTo"),
|
|
35288
|
-
" ",
|
|
35289
|
-
React__default.createElement("span", { className: "text-foreground" }, pickupPointDisplayName)))))));
|
|
35290
|
-
}),
|
|
35291
|
-
React__default.createElement(FormMessage, null, (_a = form.formState.errors.rateId) === null || _a === void 0 ? void 0 : _a.message),
|
|
35292
|
-
React__default.createElement("div", { className: "flex justify-between items-center pt-4" },
|
|
35293
|
-
React__default.createElement(Button, { type: "button", variant: "ghost", onClick: onBack },
|
|
35294
|
-
React__default.createElement(ChevronLeft, null),
|
|
35295
|
-
t("CheckoutEmbed.Shipping.back")),
|
|
35296
|
-
React__default.createElement(SubmitButton, { isSubmitting: form.formState.isSubmitting, isValid: !!currentRateId }, t("CheckoutEmbed.Shipping.button")))))));
|
|
35154
|
+
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 &&
|
|
35155
|
+
Array.from({ length: 3 }).map((_, index) => (jsx(ShippingRateLoading, {}, index))), shippingRates.map((rate) => {
|
|
35156
|
+
const pickupPointDisplayName = form.watch("pickupPointDisplayName");
|
|
35157
|
+
const rateId = rate.provider + rate.name;
|
|
35158
|
+
const intPrice = Math.ceil(Number(rate.price));
|
|
35159
|
+
const displayPrice = storeHelpers.formatPrice(intPrice, currency, exchangeRate);
|
|
35160
|
+
const description = rate.provider === "zasilkovna"
|
|
35161
|
+
? t("CheckoutEmbed.Shipping.description.zasilkovna")
|
|
35162
|
+
: t("CheckoutEmbed.Shipping.description.other");
|
|
35163
|
+
return (jsx(ShippingOptionWrapper, { rate: rate, onPickupPointSelected: (pickupPointId, pickupPointName) => {
|
|
35164
|
+
const newFormData = {
|
|
35165
|
+
rateId,
|
|
35166
|
+
provider: rate.provider,
|
|
35167
|
+
price: intPrice,
|
|
35168
|
+
name: rate.name,
|
|
35169
|
+
pickupPointId: rate.provider === "zasilkovna" ? pickupPointId : "",
|
|
35170
|
+
pickupPointDisplayName: rate.provider === "zasilkovna" ? pickupPointName : "",
|
|
35171
|
+
};
|
|
35172
|
+
form.setValue("rateId", newFormData.rateId);
|
|
35173
|
+
form.setValue("provider", newFormData.provider);
|
|
35174
|
+
form.setValue("name", newFormData.name);
|
|
35175
|
+
form.setValue("price", newFormData.price);
|
|
35176
|
+
form.setValue("pickupPointId", newFormData.pickupPointId);
|
|
35177
|
+
form.setValue("pickupPointDisplayName", newFormData.pickupPointDisplayName);
|
|
35178
|
+
setFormData(Object.assign(Object.assign({}, formData), { shipping: Object.assign({}, newFormData) }));
|
|
35179
|
+
}, locale: locale, countryCode: countryCode, children: jsxs("div", { className: clsx("bg-background cursor-pointer rounded-md border p-4", {
|
|
35180
|
+
"bg-muted border-primary": currentRateId === rateId,
|
|
35181
|
+
}), 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$1, { 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));
|
|
35182
|
+
}), 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") })] })] }) }))] }));
|
|
35297
35183
|
}
|
|
35298
35184
|
function ShippingRateLoading() {
|
|
35299
|
-
return (
|
|
35300
|
-
React__default.createElement("div", { className: "flex items-center justify-between w-full" },
|
|
35301
|
-
React__default.createElement(Skeleton, { className: "w-12 h-5" }),
|
|
35302
|
-
React__default.createElement(Skeleton, { className: "w-16 h-5" })),
|
|
35303
|
-
React__default.createElement(Skeleton, { className: "w-40 h-3.5" })));
|
|
35185
|
+
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" })] }));
|
|
35304
35186
|
}
|
|
35305
35187
|
|
|
35306
35188
|
const useFormStore = create()(persist((set) => ({
|
|
@@ -35334,9 +35216,11 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
|
|
|
35334
35216
|
if (!isCustomerValid)
|
|
35335
35217
|
setStep("customer");
|
|
35336
35218
|
}
|
|
35219
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35337
35220
|
}, [step, formData]);
|
|
35338
35221
|
useEffect(() => {
|
|
35339
35222
|
validateStep();
|
|
35223
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35340
35224
|
}, [step]);
|
|
35341
35225
|
useEffect(() => {
|
|
35342
35226
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21;
|
|
@@ -35396,6 +35280,7 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
|
|
|
35396
35280
|
},
|
|
35397
35281
|
} }));
|
|
35398
35282
|
}
|
|
35283
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35399
35284
|
}, [customer]);
|
|
35400
35285
|
useEffect(() => {
|
|
35401
35286
|
if (step !== "shipping")
|
|
@@ -35413,6 +35298,7 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
|
|
|
35413
35298
|
}
|
|
35414
35299
|
});
|
|
35415
35300
|
getShippingRates();
|
|
35301
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35416
35302
|
}, [step, clientSecret, checkoutId]);
|
|
35417
35303
|
// Handle address form submission
|
|
35418
35304
|
const handleCustomerSubmit = (data) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -35474,33 +35360,22 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
|
|
|
35474
35360
|
};
|
|
35475
35361
|
const renderStep = () => {
|
|
35476
35362
|
if (step === "payment" && formData.customer && formData.shipping) {
|
|
35477
|
-
return (
|
|
35363
|
+
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, shippingAddress: formatAddress(formData.customer.address), shippingName: formData.shipping.name, shippingPrice: storeHelpers.formatPrice(formData.shipping.price, currency, exchangeRate), publicKey: publicKey }));
|
|
35478
35364
|
}
|
|
35479
35365
|
if (step === "shipping" && formData.customer) {
|
|
35480
|
-
return (
|
|
35366
|
+
return (jsx(ShippingMethodForm, { 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 }));
|
|
35481
35367
|
}
|
|
35482
|
-
return (
|
|
35368
|
+
return (jsx(CustomerForm, { initialData: formData.customer, onSubmit: handleCustomerSubmit }));
|
|
35483
35369
|
};
|
|
35484
|
-
return
|
|
35370
|
+
return jsx("div", { className: "relative h-max min-h-full w-full", children: renderStep() });
|
|
35485
35371
|
}
|
|
35486
35372
|
|
|
35487
35373
|
function CheckoutFormLoading() {
|
|
35488
35374
|
const { t } = useTranslation();
|
|
35489
|
-
return (
|
|
35490
|
-
React__default.createElement("div", { className: "md:col-span-2" },
|
|
35491
|
-
React__default.createElement("h2", null, t("CheckoutEmbed.CustomerForm.title"))),
|
|
35492
|
-
React__default.createElement(InputGroupLoading, { className: "md:col-span-2" }),
|
|
35493
|
-
React__default.createElement(InputGroupLoading, null),
|
|
35494
|
-
React__default.createElement(InputGroupLoading, null),
|
|
35495
|
-
React__default.createElement(InputGroupLoading, { className: "md:col-span-2" }),
|
|
35496
|
-
React__default.createElement(InputGroupLoading, null),
|
|
35497
|
-
React__default.createElement("div", { className: "flex md:col-span-2 justify-end pt-2" },
|
|
35498
|
-
React__default.createElement(Skeleton, { className: "w-32 h-10" }))));
|
|
35375
|
+
return (jsxs("div", { className: "grid gap-6 md:grid-cols-2", children: [jsx("div", { className: "md:col-span-2", children: jsx("h2", { children: t("CheckoutEmbed.CustomerForm.title") }) }), jsx(InputGroupLoading, { className: "md:col-span-2" }), jsx(InputGroupLoading, {}), jsx(InputGroupLoading, {}), jsx(InputGroupLoading, { className: "md:col-span-2" }), jsx(InputGroupLoading, {}), jsx("div", { className: "flex justify-end pt-2 md:col-span-2", children: jsx(Skeleton, { className: "h-10 w-32" }) })] }));
|
|
35499
35376
|
}
|
|
35500
35377
|
function InputGroupLoading({ className }) {
|
|
35501
|
-
return (
|
|
35502
|
-
React__default.createElement(Skeleton, { className: "w-10 h-3" }),
|
|
35503
|
-
React__default.createElement(Skeleton, { className: "w-full h-10" })));
|
|
35378
|
+
return (jsxs("div", { className: clsx("flex flex-col gap-2", className), children: [jsx(Skeleton, { className: "h-3 w-10" }), jsx(Skeleton, { className: "h-10 w-full" })] }));
|
|
35504
35379
|
}
|
|
35505
35380
|
|
|
35506
35381
|
function DiscountCode({ applyDiscountCode, }) {
|
|
@@ -35525,15 +35400,10 @@ function DiscountCode({ applyDiscountCode, }) {
|
|
|
35525
35400
|
setIsLoading(false);
|
|
35526
35401
|
}
|
|
35527
35402
|
});
|
|
35528
|
-
return (
|
|
35529
|
-
|
|
35530
|
-
|
|
35531
|
-
|
|
35532
|
-
setError("");
|
|
35533
|
-
setDiscountCode(e.target.value);
|
|
35534
|
-
}, name: "discountCode", placeholder: t("CheckoutEmbed.Summary.discountCodePlaceholder") }),
|
|
35535
|
-
React__default.createElement(SubmitButton, { isSubmitting: isLoading, isValid: isValid, type: "submit" }, t("CheckoutEmbed.Summary.discountCodeApply"))),
|
|
35536
|
-
error && React__default.createElement("p", { className: "text-red-500 mt-2 text-sm" }, error)));
|
|
35403
|
+
return (jsxs("form", { className: "pb-1", onSubmit: handleSubmit, children: [jsx(Label, { className: "mb-2 text-sm font-medium", children: t("CheckoutEmbed.Summary.discountCodeLabel") }), jsxs("div", { className: "flex items-center gap-2", children: [jsx(Input, { "aria-invalid": !!error, value: discountCode, onChange: (e) => {
|
|
35404
|
+
setError("");
|
|
35405
|
+
setDiscountCode(e.target.value);
|
|
35406
|
+
}, name: "discountCode", placeholder: t("CheckoutEmbed.Summary.discountCodePlaceholder") }), jsx(SubmitButton, { isSubmitting: isLoading, isValid: isValid, type: "submit", children: t("CheckoutEmbed.Summary.discountCodeApply") })] }), error && jsx("p", { className: "mt-2 text-sm text-red-500", children: error })] }));
|
|
35537
35407
|
}
|
|
35538
35408
|
|
|
35539
35409
|
function CheckoutSummary({ appliedDiscounts, lineItems, shipping, tax, currency, onCancel, exchangeRate, applyDiscountCode, removeDiscount, }) {
|
|
@@ -35562,105 +35432,65 @@ function CheckoutSummary({ appliedDiscounts, lineItems, shipping, tax, currency,
|
|
|
35562
35432
|
return intersection.filter((combination) => currentCombinations.some((currentCombination) => JSON.stringify(currentCombination) === JSON.stringify(combination)));
|
|
35563
35433
|
}, []);
|
|
35564
35434
|
const canCombine = appliedDiscounts.length === 0 || sharedCombinations.length > 0;
|
|
35565
|
-
return (
|
|
35566
|
-
|
|
35567
|
-
|
|
35568
|
-
|
|
35569
|
-
|
|
35570
|
-
|
|
35571
|
-
|
|
35572
|
-
|
|
35573
|
-
|
|
35574
|
-
|
|
35575
|
-
|
|
35576
|
-
|
|
35577
|
-
|
|
35578
|
-
|
|
35579
|
-
|
|
35580
|
-
|
|
35581
|
-
|
|
35582
|
-
|
|
35583
|
-
|
|
35584
|
-
React__default.createElement("p", null, isShippingFree
|
|
35585
|
-
? t("CheckoutEmbed.Summary.free")
|
|
35586
|
-
: !!shippingPrice
|
|
35587
|
-
? storeHelpers.formatPrice(shippingPrice, currency, exchangeRate)
|
|
35588
|
-
: t("CheckoutEmbed.Summary.calculatedAtNextStep"))),
|
|
35589
|
-
!!tax && (React__default.createElement("div", { className: "flex justify-between" },
|
|
35590
|
-
React__default.createElement("p", null, t("CheckoutEmbed.Summary.tax")),
|
|
35591
|
-
React__default.createElement("p", null, storeHelpers.formatPrice(tax, currency, exchangeRate)))),
|
|
35592
|
-
filteredDiscounts.map(({ discount, amount, id }) => {
|
|
35593
|
-
var _a;
|
|
35594
|
-
return (React__default.createElement("div", { key: discount.id, className: "flex justify-between text-muted-foreground" },
|
|
35595
|
-
React__default.createElement(DiscountItem, { id: id, removeDiscount: removeDiscount, label: (_a = ((discount === null || discount === void 0 ? void 0 : discount.code) || (discount === null || discount === void 0 ? void 0 : discount.title))) !== null && _a !== void 0 ? _a : "", canRemove: discount.method === "CODE" }),
|
|
35596
|
-
React__default.createElement("p", null,
|
|
35597
|
-
"- ",
|
|
35598
|
-
storeHelpers.formatPrice(amount, currency, exchangeRate))));
|
|
35599
|
-
}),
|
|
35600
|
-
React__default.createElement("div", { className: "flex font-bold justify-between items-center" },
|
|
35601
|
-
React__default.createElement("p", null, t("CheckoutEmbed.Summary.total")),
|
|
35602
|
-
React__default.createElement("p", null, storeHelpers.formatPrice(totalWithDiscounts, currency, exchangeRate)))),
|
|
35603
|
-
canCombine && (React__default.createElement(React__default.Fragment, null,
|
|
35604
|
-
React__default.createElement("hr", { className: clsx("order-7 md:order-none", {
|
|
35435
|
+
return (jsxs("div", { className: "grid gap-5", children: [jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { onClick: () => setIsOpen(!isOpen), className: "flex items-center gap-2 max-md:cursor-pointer", children: [jsx("h2", { children: t("CheckoutEmbed.Summary.title") }), jsx(ChevronDown, { className: clsx("size-5 transition-transform md:hidden", {
|
|
35436
|
+
"rotate-180": isOpen,
|
|
35437
|
+
}) })] }), jsx("p", { className: "text-lg font-bold tracking-tight md:hidden", children: storeHelpers.formatPrice(total, currency, exchangeRate) }), jsx(Button, { className: "max-sm:hidden", variant: "link", size: "link", onClick: onCancel, children: t("CheckoutEmbed.Summary.edit") })] }), jsx("hr", {}), jsxs("div", { className: clsx("order-4 gap-2 md:order-none", {
|
|
35438
|
+
"hidden md:grid": !isOpen,
|
|
35439
|
+
grid: isOpen,
|
|
35440
|
+
}), children: [jsxs("div", { className: "flex justify-between", children: [jsx("p", { children: t("CheckoutEmbed.Summary.subtotal") }), jsx("p", { children: storeHelpers.formatPrice(subtotal, currency, exchangeRate) })] }), jsxs("div", { className: "flex justify-between", children: [jsx("p", { children: t("CheckoutEmbed.Summary.shipping") }), jsx("p", { children: isShippingFree
|
|
35441
|
+
? t("CheckoutEmbed.Summary.free")
|
|
35442
|
+
: shippingPrice
|
|
35443
|
+
? storeHelpers.formatPrice(shippingPrice, currency, exchangeRate)
|
|
35444
|
+
: t("CheckoutEmbed.Summary.calculatedAtNextStep") })] }), !!tax && (jsxs("div", { className: "flex justify-between", children: [jsx("p", { children: t("CheckoutEmbed.Summary.tax") }), jsx("p", { children: storeHelpers.formatPrice(tax, currency, exchangeRate) })] })), filteredDiscounts.map(({ discount, amount, id }) => {
|
|
35445
|
+
var _a;
|
|
35446
|
+
return (jsxs("div", { className: "text-muted-foreground flex justify-between", children: [jsx(DiscountItem, { id: id, removeDiscount: removeDiscount, label: (_a = ((discount === null || discount === void 0 ? void 0 : discount.code) || (discount === null || discount === void 0 ? void 0 : discount.title))) !== null && _a !== void 0 ? _a : "", canRemove: discount.method === "CODE" }), jsxs("p", { children: ["- ", storeHelpers.formatPrice(amount, currency, exchangeRate)] })] }, discount.id));
|
|
35447
|
+
}), jsxs("div", { className: "flex items-center justify-between font-bold", children: [jsx("p", { children: t("CheckoutEmbed.Summary.total") }), jsx("p", { children: storeHelpers.formatPrice(totalWithDiscounts, currency, exchangeRate) })] })] }), canCombine && (jsxs(Fragment$1, { children: [jsx("hr", { className: clsx("order-7 md:order-none", {
|
|
35448
|
+
"hidden md:block": !isOpen,
|
|
35449
|
+
block: isOpen,
|
|
35450
|
+
}) }), jsx("div", { className: clsx("order-6 gap-0 md:order-none", {
|
|
35451
|
+
"hidden md:grid": !isOpen,
|
|
35452
|
+
grid: isOpen,
|
|
35453
|
+
}), children: jsx(DiscountCode, { applyDiscountCode: applyDiscountCode }) })] })), jsx("hr", { className: clsx("order-5 md:order-none", {
|
|
35605
35454
|
"hidden md:block": !isOpen,
|
|
35606
35455
|
block: isOpen,
|
|
35607
|
-
}) }),
|
|
35608
|
-
React__default.createElement("div", { className: clsx("gap-0 order-6 md:order-none", {
|
|
35456
|
+
}) }), jsx("div", { className: clsx("order-3 gap-5 md:order-none", {
|
|
35609
35457
|
"hidden md:grid": !isOpen,
|
|
35610
35458
|
grid: isOpen,
|
|
35611
|
-
})
|
|
35612
|
-
|
|
35613
|
-
|
|
35614
|
-
|
|
35615
|
-
|
|
35616
|
-
|
|
35617
|
-
|
|
35618
|
-
|
|
35619
|
-
|
|
35620
|
-
|
|
35621
|
-
|
|
35622
|
-
|
|
35623
|
-
|
|
35624
|
-
|
|
35625
|
-
|
|
35626
|
-
|
|
35627
|
-
|
|
35628
|
-
|
|
35629
|
-
|
|
35630
|
-
|
|
35631
|
-
|
|
35632
|
-
|
|
35633
|
-
|
|
35634
|
-
|
|
35635
|
-
|
|
35636
|
-
|
|
35637
|
-
|
|
35638
|
-
|
|
35639
|
-
|
|
35640
|
-
|
|
35641
|
-
|
|
35642
|
-
|
|
35643
|
-
|
|
35644
|
-
|
|
35645
|
-
|
|
35646
|
-
const discountedPrice = finalItem.priceInCents - (totalDiscountAmount !== null && totalDiscountAmount !== void 0 ? totalDiscountAmount : 0);
|
|
35647
|
-
return (React__default.createElement("div", { key: index, className: "flex items-center" },
|
|
35648
|
-
React__default.createElement("div", { className: "relative" },
|
|
35649
|
-
React__default.createElement("div", { className: "w-16 h-16 bg-secondary rounded-lg overflow-hidden relative" }, (finalItem === null || finalItem === void 0 ? void 0 : finalItem.images[0]) && (React__default.createElement("img", { src: finalItem.images[0] ||
|
|
35650
|
-
((_b = item === null || item === void 0 ? void 0 : item.productData) === null || _b === void 0 ? void 0 : _b.images[0]) ||
|
|
35651
|
-
"/placeholder.svg", alt: ((_c = item.productData) === null || _c === void 0 ? void 0 : _c.title) || "", className: "object-cover w-full h-full", sizes: "64px" }))),
|
|
35652
|
-
React__default.createElement("div", { className: "absolute -top-2 -right-2 w-6 h-6 bg-primary rounded-full flex items-center text-background justify-center text-sm" }, item.quantity)),
|
|
35653
|
-
React__default.createElement("div", { className: "ml-4 flex-1" },
|
|
35654
|
-
React__default.createElement("h3", { className: "text-base font-medium" }, (_d = item.productData) === null || _d === void 0 ? void 0 : _d.title),
|
|
35655
|
-
React__default.createElement("p", { className: "text-muted-foreground text-ellipsis line-clamp-1 md:max-w-[75%] text-sm" }, item.variantOptions
|
|
35656
|
-
.map((option) => `${option.name}: ${option.value}`)
|
|
35657
|
-
.join(", "))),
|
|
35658
|
-
React__default.createElement("div", { className: "text-right" }, isDiscounted ? (React__default.createElement("div", { className: "flex flex-col" },
|
|
35659
|
-
React__default.createElement("p", { className: "text-sm font-medium -mb-0.5 line-through text-muted-foreground" }, storeHelpers.formatPrice((_e = finalItem === null || finalItem === void 0 ? void 0 : finalItem.priceInCents) !== null && _e !== void 0 ? _e : 0, currency, exchangeRate)),
|
|
35660
|
-
React__default.createElement("p", { className: "text-base font-medium" }, discountedPrice <= 0
|
|
35661
|
-
? t("CheckoutEmbed.Summary.free")
|
|
35662
|
-
: storeHelpers.formatPrice(discountedPrice, currency, exchangeRate)))) : (React__default.createElement("p", { className: "text-base font-medium" }, storeHelpers.formatPrice((_f = finalItem === null || finalItem === void 0 ? void 0 : finalItem.priceInCents) !== null && _f !== void 0 ? _f : 0, currency, exchangeRate))))));
|
|
35663
|
-
}))));
|
|
35459
|
+
}), children: lineItems.map((item, index) => {
|
|
35460
|
+
var _a, _b, _c, _d, _e, _f;
|
|
35461
|
+
const finalItem = ((_a = item.productData) === null || _a === void 0 ? void 0 : _a.selectedVariant) || item.productData;
|
|
35462
|
+
const productAppliedDiscounts = appliedDiscounts.filter((discount) => discount.allowedLineItems.some((allowedLineItem) => allowedLineItem.productId === item.productData.productId));
|
|
35463
|
+
const formattedProductAppliedDiscounts = productAppliedDiscounts.map((discount) => {
|
|
35464
|
+
var _a;
|
|
35465
|
+
const elegibleLineItems = discount.allowedLineItems.find((allowedLineItem) => allowedLineItem.productId === item.productData.productId);
|
|
35466
|
+
if (!elegibleLineItems)
|
|
35467
|
+
return 0;
|
|
35468
|
+
const elegibleQuantity = elegibleLineItems.quantity;
|
|
35469
|
+
const elegibleTotalAmount = ((_a = finalItem === null || finalItem === void 0 ? void 0 : finalItem.priceInCents) !== null && _a !== void 0 ? _a : 0) * elegibleQuantity;
|
|
35470
|
+
if (discount.discount.valueType === "PERCENTAGE") {
|
|
35471
|
+
const percentage = discount.discount.value / 100;
|
|
35472
|
+
return elegibleTotalAmount * percentage;
|
|
35473
|
+
}
|
|
35474
|
+
else if (discount.discount.valueType === "FREE") {
|
|
35475
|
+
return elegibleTotalAmount;
|
|
35476
|
+
}
|
|
35477
|
+
return elegibleQuantity * discount.discount.value;
|
|
35478
|
+
});
|
|
35479
|
+
const totalDiscountAmount = formattedProductAppliedDiscounts.length > 0
|
|
35480
|
+
? formattedProductAppliedDiscounts.reduce((acc, curr) => {
|
|
35481
|
+
return acc + curr;
|
|
35482
|
+
}, 0)
|
|
35483
|
+
: null;
|
|
35484
|
+
const isDiscounted = !!totalDiscountAmount;
|
|
35485
|
+
const discountedPrice = finalItem.priceInCents - (totalDiscountAmount !== null && totalDiscountAmount !== void 0 ? totalDiscountAmount : 0);
|
|
35486
|
+
return (jsxs("div", { className: "flex items-center", children: [jsxs("div", { className: "relative", children: [jsx("div", { className: "bg-secondary relative h-16 w-16 overflow-hidden rounded-lg", children: (finalItem === null || finalItem === void 0 ? void 0 : finalItem.images[0]) && (jsx("img", { src: finalItem.images[0] ||
|
|
35487
|
+
((_b = item === null || item === void 0 ? void 0 : item.productData) === null || _b === void 0 ? void 0 : _b.images[0]) ||
|
|
35488
|
+
"/placeholder.svg", alt: ((_c = item.productData) === null || _c === void 0 ? void 0 : _c.title) || "", className: "h-full w-full object-cover", sizes: "64px" })) }), jsx("div", { className: "bg-primary text-background absolute -right-2 -top-2 flex h-6 w-6 items-center justify-center rounded-full text-sm", children: item.quantity })] }), jsxs("div", { className: "ml-4 flex-1", children: [jsx("h3", { className: "text-base font-medium", children: (_d = item.productData) === null || _d === void 0 ? void 0 : _d.title }), jsx("p", { className: "text-muted-foreground line-clamp-1 text-ellipsis text-sm md:max-w-[75%]", children: item.variantOptions
|
|
35489
|
+
.map((option) => `${option.name}: ${option.value}`)
|
|
35490
|
+
.join(", ") })] }), jsx("div", { className: "text-right", children: isDiscounted ? (jsxs("div", { className: "flex flex-col", children: [jsx("p", { className: "text-muted-foreground -mb-0.5 text-sm font-medium line-through", children: storeHelpers.formatPrice((_e = finalItem === null || finalItem === void 0 ? void 0 : finalItem.priceInCents) !== null && _e !== void 0 ? _e : 0, currency, exchangeRate) }), jsx("p", { className: "text-base font-medium", children: discountedPrice <= 0
|
|
35491
|
+
? t("CheckoutEmbed.Summary.free")
|
|
35492
|
+
: storeHelpers.formatPrice(discountedPrice, currency, exchangeRate) })] })) : (jsx("p", { className: "text-base font-medium", children: storeHelpers.formatPrice((_f = finalItem === null || finalItem === void 0 ? void 0 : finalItem.priceInCents) !== null && _f !== void 0 ? _f : 0, currency, exchangeRate) })) })] }, index));
|
|
35493
|
+
}) })] }));
|
|
35664
35494
|
}
|
|
35665
35495
|
function DiscountItem({ id, removeDiscount, label, canRemove, }) {
|
|
35666
35496
|
const [isLoading, setIsLoading] = useState(false);
|
|
@@ -35676,46 +35506,12 @@ function DiscountItem({ id, removeDiscount, label, canRemove, }) {
|
|
|
35676
35506
|
setIsLoading(false);
|
|
35677
35507
|
}
|
|
35678
35508
|
});
|
|
35679
|
-
return (
|
|
35680
|
-
React__default.createElement("p", null, isLoading ? "Removing..." : label),
|
|
35681
|
-
!isLoading && canRemove && (React__default.createElement("div", { onClick: handleRemove, className: "flex items-center z-10 relative -m-0.5 hover:bg-muted p-1 rounded-full justify-center hover:text-foreground cursor-pointer" },
|
|
35682
|
-
React__default.createElement(X$2, { className: "size-3" }),
|
|
35683
|
-
React__default.createElement("p", { className: "sr-only" }, "Remove")))));
|
|
35509
|
+
return (jsxs("div", { className: "flex items-center gap-0.5", children: [jsx("p", { children: isLoading ? "Removing..." : label }), !isLoading && canRemove && (jsxs("div", { onClick: handleRemove, className: "hover:bg-muted hover:text-foreground relative z-10 -m-0.5 flex cursor-pointer items-center justify-center rounded-full p-1", children: [jsx(X$2, { className: "size-3" }), jsx("p", { className: "sr-only", children: "Remove" })] }))] }));
|
|
35684
35510
|
}
|
|
35685
35511
|
|
|
35686
35512
|
function CheckoutSummaryLoading() {
|
|
35687
35513
|
const { t } = useTranslation();
|
|
35688
|
-
return (
|
|
35689
|
-
React__default.createElement("div", { className: "flex justify-between items-center" },
|
|
35690
|
-
React__default.createElement("div", { className: "flex items-center gap-2 cursor-pointer" },
|
|
35691
|
-
React__default.createElement("h2", null, t("CheckoutEmbed.Summary.title")),
|
|
35692
|
-
React__default.createElement(ChevronDown, { className: "md:hidden size-5 transition-transform" })),
|
|
35693
|
-
React__default.createElement(Skeleton, { className: "w-20 h-[20px] md:hidden" }),
|
|
35694
|
-
React__default.createElement(Button, { className: "max-sm:hidden", variant: "link", size: "link", asChild: true },
|
|
35695
|
-
React__default.createElement("a", null, t("CheckoutEmbed.Summary.edit")))),
|
|
35696
|
-
React__default.createElement("hr", null),
|
|
35697
|
-
React__default.createElement("div", { className: "hidden md:grid gap-2" },
|
|
35698
|
-
React__default.createElement("div", { className: "flex justify-between" },
|
|
35699
|
-
React__default.createElement("p", null, t("CheckoutEmbed.Summary.subtotal")),
|
|
35700
|
-
React__default.createElement(Skeleton, { className: "w-20 h-[18px]" })),
|
|
35701
|
-
React__default.createElement("div", { className: "flex justify-between" },
|
|
35702
|
-
React__default.createElement("p", null, t("CheckoutEmbed.Summary.shipping")),
|
|
35703
|
-
React__default.createElement(Skeleton, { className: "w-20 h-[18px]" })),
|
|
35704
|
-
React__default.createElement("div", { className: "flex font-bold justify-between items-center" },
|
|
35705
|
-
React__default.createElement("p", null, t("CheckoutEmbed.Summary.total")),
|
|
35706
|
-
React__default.createElement(Skeleton, { className: "w-24 h-[18px]" }))),
|
|
35707
|
-
React__default.createElement("hr", { className: "hidden md:block" }),
|
|
35708
|
-
React__default.createElement("div", null,
|
|
35709
|
-
React__default.createElement(Skeleton, { className: "w-24 h-5 mb-2" }),
|
|
35710
|
-
React__default.createElement(Skeleton, { className: "h-10 w-full mb-1" })),
|
|
35711
|
-
React__default.createElement("hr", { className: "hidden md:block" }),
|
|
35712
|
-
Array.from({ length: 2 }).map((_, index) => (React__default.createElement("div", { key: index, className: "hidden md:flex items-center" },
|
|
35713
|
-
React__default.createElement(Skeleton, { className: "rounded-lg size-16" }),
|
|
35714
|
-
React__default.createElement("div", { className: "ml-4 grid gap-2 flex-1" },
|
|
35715
|
-
React__default.createElement(Skeleton, { className: "w-28 h-5" }),
|
|
35716
|
-
React__default.createElement(Skeleton, { className: "w-20 h-3.5" })),
|
|
35717
|
-
React__default.createElement("div", { className: "text-right" },
|
|
35718
|
-
React__default.createElement(Skeleton, { className: "w-20 h-5" })))))));
|
|
35514
|
+
return (jsxs("div", { className: "grid gap-5", children: [jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { className: "flex cursor-pointer items-center gap-2", children: [jsx("h2", { children: t("CheckoutEmbed.Summary.title") }), jsx(ChevronDown, { className: "size-5 transition-transform md:hidden" })] }), jsx(Skeleton, { className: "h-[20px] w-20 md:hidden" }), jsx(Button, { className: "max-sm:hidden", variant: "link", size: "link", asChild: true, children: jsx("a", { children: t("CheckoutEmbed.Summary.edit") }) })] }), jsx("hr", {}), jsxs("div", { className: "hidden gap-2 md:grid", children: [jsxs("div", { className: "flex justify-between", children: [jsx("p", { children: t("CheckoutEmbed.Summary.subtotal") }), jsx(Skeleton, { className: "h-[18px] w-20" })] }), jsxs("div", { className: "flex justify-between", children: [jsx("p", { children: t("CheckoutEmbed.Summary.shipping") }), jsx(Skeleton, { className: "h-[18px] w-20" })] }), jsxs("div", { className: "flex items-center justify-between font-bold", children: [jsx("p", { children: t("CheckoutEmbed.Summary.total") }), jsx(Skeleton, { className: "h-[18px] w-24" })] })] }), jsx("hr", { className: "hidden md:block" }), jsxs("div", { children: [jsx(Skeleton, { className: "mb-2 h-5 w-24" }), jsx(Skeleton, { className: "mb-1 h-10 w-full" })] }), jsx("hr", { className: "hidden md:block" }), Array.from({ length: 2 }).map((_, index) => (jsxs("div", { className: "hidden items-center md:flex", children: [jsx(Skeleton, { className: "size-16 rounded-lg" }), jsxs("div", { className: "ml-4 grid flex-1 gap-2", children: [jsx(Skeleton, { className: "h-5 w-28" }), jsx(Skeleton, { className: "h-3.5 w-20" })] }), jsx("div", { className: "text-right", children: jsx(Skeleton, { className: "h-5 w-20" }) })] }, index)))] }));
|
|
35719
35515
|
}
|
|
35720
35516
|
|
|
35721
35517
|
function CheckoutEmbedComponent({ checkoutId, config }) {
|
|
@@ -35723,7 +35519,7 @@ function CheckoutEmbedComponent({ checkoutId, config }) {
|
|
|
35723
35519
|
const { cancelUrl, successUrl, appearance, locale, clientSecret, clientProxy, } = config;
|
|
35724
35520
|
const storeClient = React__default.useMemo(() => createStoreClient({ proxy: clientProxy }), [clientProxy]);
|
|
35725
35521
|
const iframeRef = React__default.useRef(null);
|
|
35726
|
-
React__default.useMemo(() => createI18nInstance(locale), []);
|
|
35522
|
+
React__default.useMemo(() => createI18nInstance(locale), [locale]);
|
|
35727
35523
|
const { formData, step } = useFormStore();
|
|
35728
35524
|
const paymentSecretPromiseRef = useRef(null);
|
|
35729
35525
|
const [paymentSecret, setPaymentSecret] = useState(null);
|
|
@@ -35755,6 +35551,7 @@ function CheckoutEmbedComponent({ checkoutId, config }) {
|
|
|
35755
35551
|
return () => {
|
|
35756
35552
|
mounted = false; // Cleanup
|
|
35757
35553
|
};
|
|
35554
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35758
35555
|
}, [checkoutId]); // Only re-run if checkoutId changes
|
|
35759
35556
|
const onSuccess = () => {
|
|
35760
35557
|
resetFormStore(formData);
|
|
@@ -35796,6 +35593,7 @@ function CheckoutEmbedComponent({ checkoutId, config }) {
|
|
|
35796
35593
|
paymentSecretPromiseRef.current = null;
|
|
35797
35594
|
});
|
|
35798
35595
|
}
|
|
35596
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35799
35597
|
}, [paymentSecret, step]);
|
|
35800
35598
|
const applyDiscountCode = (code) => __awaiter(this, void 0, void 0, function* () {
|
|
35801
35599
|
console.log("[Payment Debug] Applying discount code:", code);
|
|
@@ -35894,14 +35692,9 @@ function CheckoutEmbedComponent({ checkoutId, config }) {
|
|
|
35894
35692
|
console.log("[Payment Debug] Clearing revalidation interval");
|
|
35895
35693
|
clearInterval(interval);
|
|
35896
35694
|
};
|
|
35695
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
35897
35696
|
}, []);
|
|
35898
|
-
return (
|
|
35899
|
-
React__default.createElement("div", { className: "checkout-embed h-max gap-6 md:gap-0 py-4 md:py-12 flex flex-col md:grid md:grid-cols-7 " },
|
|
35900
|
-
React__default.createElement(Appearance, { appearance: appearance, fonts: config.fonts, iframeRef: iframeRef }),
|
|
35901
|
-
React__default.createElement("div", { className: "md:col-span-4 px-4 h-max md:px-8" }, loading ? (React__default.createElement(CheckoutFormLoading, null)) : (React__default.createElement(CheckoutForm, { locale: locale, setShippingCost: setShippingCost, 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 }))),
|
|
35902
|
-
React__default.createElement("div", { className: "md:col-span-3 px-4 md:px-8 h-max order-first md:order-last" },
|
|
35903
|
-
React__default.createElement(Toaster, null),
|
|
35904
|
-
loading ? (React__default.createElement(CheckoutSummaryLoading, null)) : (React__default.createElement(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: checkout === null || checkout === void 0 ? void 0 : checkout.shipping, 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 }))))));
|
|
35697
|
+
return (jsx(IframeWrapper, { iframeRef: iframeRef, 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, iframeRef: iframeRef }), jsx("div", { className: "h-max px-4 md:col-span-4 md:px-8", children: loading ? (jsx(CheckoutFormLoading, {})) : (jsx(CheckoutForm, { locale: locale, setShippingCost: setShippingCost, 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 })) }), 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: checkout === null || checkout === void 0 ? void 0 : checkout.shipping, 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 }))] })] }) }));
|
|
35905
35698
|
}
|
|
35906
35699
|
const CheckoutEmbed = memo(CheckoutEmbedComponent);
|
|
35907
35700
|
|