@betterstore/react 0.3.88 → 0.5.3

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.
Files changed (107) hide show
  1. package/dist/components/cart/useCart.d.ts +1 -0
  2. package/dist/components/cart/useCart.d.ts.map +1 -0
  3. package/dist/components/checkout-embed/appearance.d.ts +2 -1
  4. package/dist/components/checkout-embed/appearance.d.ts.map +1 -0
  5. package/dist/components/checkout-embed/checkout-form-loading.d.ts +2 -2
  6. package/dist/components/checkout-embed/checkout-form-loading.d.ts.map +1 -0
  7. package/dist/components/checkout-embed/checkout-form.d.ts +2 -2
  8. package/dist/components/checkout-embed/checkout-form.d.ts.map +1 -0
  9. package/dist/components/checkout-embed/checkout-schema.d.ts +1 -0
  10. package/dist/components/checkout-embed/checkout-schema.d.ts.map +1 -0
  11. package/dist/components/checkout-embed/index.d.ts +3 -2
  12. package/dist/components/checkout-embed/index.d.ts.map +1 -0
  13. package/dist/components/checkout-embed/steps/customer/address-input.d.ts +2 -2
  14. package/dist/components/checkout-embed/steps/customer/address-input.d.ts.map +1 -0
  15. package/dist/components/checkout-embed/steps/customer/address-utils.d.ts +1 -0
  16. package/dist/components/checkout-embed/steps/customer/address-utils.d.ts.map +1 -0
  17. package/dist/components/checkout-embed/steps/customer/form.d.ts +2 -2
  18. package/dist/components/checkout-embed/steps/customer/form.d.ts.map +1 -0
  19. package/dist/components/checkout-embed/steps/payment/form.d.ts +2 -2
  20. package/dist/components/checkout-embed/steps/payment/form.d.ts.map +1 -0
  21. package/dist/components/checkout-embed/steps/shipping/form.d.ts +2 -2
  22. package/dist/components/checkout-embed/steps/shipping/form.d.ts.map +1 -0
  23. package/dist/components/checkout-embed/steps/shipping/providers/zasilkovna.d.ts +2 -1
  24. package/dist/components/checkout-embed/steps/shipping/providers/zasilkovna.d.ts.map +1 -0
  25. package/dist/components/checkout-embed/steps/shipping/shipping-option-wrapper.d.ts +2 -1
  26. package/dist/components/checkout-embed/steps/shipping/shipping-option-wrapper.d.ts.map +1 -0
  27. package/dist/components/checkout-embed/steps/summary/discount-code.d.ts +2 -2
  28. package/dist/components/checkout-embed/steps/summary/discount-code.d.ts.map +1 -0
  29. package/dist/components/checkout-embed/steps/summary/index.d.ts +2 -2
  30. package/dist/components/checkout-embed/steps/summary/index.d.ts.map +1 -0
  31. package/dist/components/checkout-embed/steps/summary/loading.d.ts +2 -2
  32. package/dist/components/checkout-embed/steps/summary/loading.d.ts.map +1 -0
  33. package/dist/components/checkout-embed/useFormStore.d.ts +1 -0
  34. package/dist/components/checkout-embed/useFormStore.d.ts.map +1 -0
  35. package/dist/components/compounds/form/country-dropdown.d.ts +1 -0
  36. package/dist/components/compounds/form/country-dropdown.d.ts.map +1 -0
  37. package/dist/components/compounds/form/form-messages.d.ts +2 -1
  38. package/dist/components/compounds/form/form-messages.d.ts.map +1 -0
  39. package/dist/components/compounds/form/input-group.d.ts +3 -2
  40. package/dist/components/compounds/form/input-group.d.ts.map +1 -0
  41. package/dist/components/compounds/form/submit-button.d.ts +3 -3
  42. package/dist/components/compounds/form/submit-button.d.ts.map +1 -0
  43. package/dist/components/iframe-wrapper.d.ts +2 -1
  44. package/dist/components/iframe-wrapper.d.ts.map +1 -0
  45. package/dist/components/index.d.ts +1 -0
  46. package/dist/components/index.d.ts.map +1 -0
  47. package/dist/components/payment-element/appearance.d.ts +1 -0
  48. package/dist/components/payment-element/appearance.d.ts.map +1 -0
  49. package/dist/components/payment-element/checkout-form.d.ts +2 -1
  50. package/dist/components/payment-element/checkout-form.d.ts.map +1 -0
  51. package/dist/components/payment-element/index.d.ts +2 -1
  52. package/dist/components/payment-element/index.d.ts.map +1 -0
  53. package/dist/components/payment-element/useCheckout.d.ts +1 -0
  54. package/dist/components/payment-element/useCheckout.d.ts.map +1 -0
  55. package/dist/components/ui/button.d.ts +2 -1
  56. package/dist/components/ui/button.d.ts.map +1 -0
  57. package/dist/components/ui/checkbox.d.ts +2 -1
  58. package/dist/components/ui/checkbox.d.ts.map +1 -0
  59. package/dist/components/ui/command.d.ts +13 -12
  60. package/dist/components/ui/command.d.ts.map +1 -0
  61. package/dist/components/ui/dialog.d.ts +11 -10
  62. package/dist/components/ui/dialog.d.ts.map +1 -0
  63. package/dist/components/ui/dropdown-menu.d.ts +18 -17
  64. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  65. package/dist/components/ui/form.d.ts +7 -6
  66. package/dist/components/ui/form.d.ts.map +1 -0
  67. package/dist/components/ui/input.d.ts +2 -1
  68. package/dist/components/ui/input.d.ts.map +1 -0
  69. package/dist/components/ui/label.d.ts +2 -1
  70. package/dist/components/ui/label.d.ts.map +1 -0
  71. package/dist/components/ui/popover.d.ts +7 -6
  72. package/dist/components/ui/popover.d.ts.map +1 -0
  73. package/dist/components/ui/radio-group.d.ts +4 -3
  74. package/dist/components/ui/radio-group.d.ts.map +1 -0
  75. package/dist/components/ui/select.d.ts +11 -10
  76. package/dist/components/ui/select.d.ts.map +1 -0
  77. package/dist/components/ui/skeleton.d.ts +2 -1
  78. package/dist/components/ui/skeleton.d.ts.map +1 -0
  79. package/dist/components/ui/sonner.d.ts +2 -2
  80. package/dist/components/ui/sonner.d.ts.map +1 -0
  81. package/dist/dev/dev.d.ts +2 -0
  82. package/dist/dev/dev.d.ts.map +1 -0
  83. package/dist/i18n/index.d.ts +1 -0
  84. package/dist/i18n/index.d.ts.map +1 -0
  85. package/dist/index.cjs.js +425 -614
  86. package/dist/index.d.ts +1 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.mjs +425 -614
  89. package/dist/lib/betterstore.d.ts +9 -0
  90. package/dist/lib/betterstore.d.ts.map +1 -0
  91. package/dist/lib/error-message-utils.d.ts +1 -0
  92. package/dist/lib/error-message-utils.d.ts.map +1 -0
  93. package/dist/lib/utils.d.ts +1 -0
  94. package/dist/lib/utils.d.ts.map +1 -0
  95. package/dist/types.d.ts +2 -1
  96. package/dist/types.d.ts.map +1 -0
  97. package/package.json +33 -35
  98. package/.prettierignore +0 -3
  99. package/.prettierrc +0 -8
  100. package/CHANGELOG.md +0 -908
  101. package/CONTRIBUTING.md +0 -52
  102. package/LICENSE +0 -21
  103. package/README.md +0 -34
  104. package/components.json +0 -21
  105. package/postcss.config.cjs +0 -6
  106. package/rollup.config.mjs +0 -103
  107. 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, encodeURIComponent(value), cookieOptions);
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.9.0";
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
- var __async = (__this, __arguments, generator) => {
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 != null ? proxy : API_BASE_URL,
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 = ((_a = error.response.data) == null ? void 0 : _a.error) || "Server error occurred";
7178
- apiError.code = (_b = error.response.data) == null ? void 0 : _b.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
- return __async(this, null, function* () {
7211
- const apiClient = createApiClient(clientSecret, this.proxy);
7212
- const data = yield apiClient.get(
7213
- `/checkout/${checkoutId}`
7214
- );
7215
- if ("isError" in data && data.isError || !data || !("id" in data)) {
7216
- console.error(`Checkout session with id ${checkoutId} not found`);
7217
- return null;
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
- return __async(this, null, function* () {
7227
- const apiClient = createApiClient(clientSecret, this.proxy);
7228
- const data = yield apiClient.put(
7229
- `/checkout/${checkoutId}`,
7230
- params
7231
- );
7232
- if ("isError" in data && data.isError || !data || !("id" in data)) {
7233
- console.error(`Checkout session with id ${checkoutId} not found`);
7234
- return null;
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
- return __async(this, null, function* () {
7244
- const apiClient = createApiClient(clientSecret, this.proxy);
7245
- const data = yield apiClient.post(
7246
- `/checkout/${checkoutId}/discounts/apply`,
7247
- { code: discountCode }
7248
- );
7249
- if ("isError" in data && data.isError || !data || !("id" in data)) {
7250
- throw new Error("Failed to apply discount code");
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
- return __async(this, null, function* () {
7260
- const apiClient = createApiClient(clientSecret, this.proxy);
7261
- const data = yield apiClient.delete(
7262
- `/checkout/${checkoutId}/discounts/${discountId}`
7263
- );
7264
- if ("isError" in data && data.isError || !data || !("id" in data)) {
7265
- throw new Error("Failed to remove discount code");
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
- return __async(this, null, function* () {
7275
- const apiClient = createApiClient(clientSecret, this.proxy);
7276
- const data = yield apiClient.get(
7277
- `/checkout/${checkoutId}/discounts/revalidate`
7278
- );
7279
- if ("isError" in data && data.isError || !data || !("id" in data)) {
7280
- console.error(`Checkout session with id ${checkoutId} not found`);
7281
- return null;
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
- return __async(this, null, function* () {
7291
- const apiClient = createApiClient(clientSecret, this.proxy);
7292
- const data = yield apiClient.get(
7293
- `/checkout/shipping/${checkoutId}`
7294
- );
7295
- if ("isError" in data && data.isError || !data || !Array.isArray(data)) {
7296
- return [];
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
- return __async(this, null, function* () {
7306
- const apiClient = createApiClient(clientSecret, this.proxy);
7307
- const data = yield apiClient.post(`/checkout/payment/${checkoutId}`);
7308
- if ("isError" in data && data.isError || !data || !("paymentSecret" in data)) {
7309
- throw new Error("Failed to generate payment secret");
7310
- }
7311
- return {
7312
- paymentSecret: data.paymentSecret,
7313
- publicKey: data.publicKey,
7314
- checkoutSession: data.checkoutSession
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
- return __async(this, null, function* () {
7323
- const apiClient = createApiClient(clientSecret, this.proxy);
7324
- const data = yield apiClient.post(
7325
- "/customer",
7326
- params
7327
- );
7328
- if ("isError" in data && data.isError || !data || !("id" in data)) {
7329
- throw new Error("Failed to create customer");
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
- return __async(this, null, function* () {
7339
- const apiClient = createApiClient(clientSecret, this.proxy);
7340
- const data = yield apiClient.get(
7341
- `/customer/${idOrEmail}`
7342
- );
7343
- if ("isError" in data && data.isError || !data || !("id" in data)) {
7344
- console.error(`Customer with id or email ${idOrEmail} not found`);
7345
- return null;
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
- return __async(this, null, function* () {
7355
- const apiClient = createApiClient(clientSecret, this.proxy);
7356
- const data = yield apiClient.put(
7357
- `/customer/${customerId}`,
7358
- params
7359
- );
7360
- if ("isError" in data && data.isError || !data || !("id" in data)) {
7361
- console.error(`Customer with id ${customerId} not found`);
7362
- return null;
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
- var _a;
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
- var _a;
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 = (_a = currencyLocales[currency.toUpperCase()]) != null ? _a : void 0;
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,42 @@ var Helpers = class {
7460
7465
  }).format(amount);
7461
7466
  return formattedPrice;
7462
7467
  }
7463
- getExchangeRate(baseCurrency, targetCurrency) {
7464
- return __async(this, null, function* () {
7465
- const apiClient = createApiClient("", this.proxy);
7466
- const { data } = yield apiClient.get(`/helpers/rates/${baseCurrency}`);
7467
- const rate = data.rates[targetCurrency];
7468
- if (!rate) {
7469
- throw new Error("Could not get exchange rate for target currency");
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;
7476
+ }
7477
+ async getAutocompleteAddressResults(query, locale) {
7478
+ const apiClient = createApiClient("", this.proxy);
7479
+ const { data } = await apiClient.get(
7480
+ `/helpers/autocomplete-address/${query}`,
7481
+ {
7482
+ params: {
7483
+ locale
7484
+ }
7470
7485
  }
7471
- return rate;
7472
- });
7486
+ );
7487
+ return data;
7473
7488
  }
7474
7489
  };
7475
7490
  var helpers_default = Helpers;
7476
7491
  function createStoreClient(config) {
7477
- return new client_default(config == null ? void 0 : config.proxy);
7492
+ return new client_default(config?.proxy);
7478
7493
  }
7479
7494
  function createStoreHelpers(config) {
7480
- return new helpers_default(void 0 );
7495
+ return new helpers_default(config?.proxy);
7481
7496
  }
7482
7497
 
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";
7498
+ 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
7499
 
7485
7500
  const IframeWrapper = React__default.memo(({ children, iframeRef }) => {
7486
7501
  const [iframeBody, setIframeBody] = useState(null);
7487
7502
  const styleRef = useRef(null);
7488
- const resizeObserver = useRef();
7503
+ const resizeObserver = useRef(null);
7489
7504
  const injectStyles = useCallback((doc) => {
7490
7505
  var _a;
7491
7506
  // Clean up previous style
@@ -7546,9 +7561,7 @@ const IframeWrapper = React__default.memo(({ children, iframeRef }) => {
7546
7561
  window.removeEventListener("resize", updateHeight);
7547
7562
  };
7548
7563
  }, [updateHeight]);
7549
- return (React__default.createElement("div", { id: "bs-wrapper", className: "w-full max-w-[1200px] min-h-screen mx-auto overflow-y-auto overflow-x-hidden relative" },
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)));
7564
+ 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
7565
  });
7553
7566
  IframeWrapper.displayName = "IframeWrapper";
7554
7567
 
@@ -8231,6 +8244,7 @@ const Toast = (props)=>{
8231
8244
  pointerStartRef.current = null;
8232
8245
  },
8233
8246
  onPointerDown: (event)=>{
8247
+ if (event.button === 2) return; // Return early on right click
8234
8248
  if (disabled || !dismissible) return;
8235
8249
  dragStartTime.current = new Date();
8236
8250
  setOffsetBeforeRemove(offset.current);
@@ -8678,7 +8692,7 @@ const Toaster$1 = /*#__PURE__*/ React__default.forwardRef(function Toaster(props
8678
8692
  const Toaster = (_a) => {
8679
8693
  var props = __rest(_a, []);
8680
8694
  const { theme = "system" } = z();
8681
- return (React__default.createElement(Toaster$1, Object.assign({ theme: theme, className: "toaster group", style: {
8695
+ return (jsx(Toaster$1, Object.assign({ theme: theme, className: "toaster group", style: {
8682
8696
  "--normal-bg": "var(--popover)",
8683
8697
  "--normal-text": "var(--popover-foreground)",
8684
8698
  "--normal-border": "var(--border)",
@@ -9151,8 +9165,9 @@ class ZodError extends Error {
9151
9165
  const formErrors = [];
9152
9166
  for (const sub of this.issues) {
9153
9167
  if (sub.path.length > 0) {
9154
- fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];
9155
- fieldErrors[sub.path[0]].push(mapper(sub));
9168
+ const firstEl = sub.path[0];
9169
+ fieldErrors[firstEl] = fieldErrors[firstEl] || [];
9170
+ fieldErrors[firstEl].push(mapper(sub));
9156
9171
  }
9157
9172
  else {
9158
9173
  formErrors.push(mapper(sub));
@@ -9236,6 +9251,8 @@ const errorMap = (issue, _ctx) => {
9236
9251
  message = `String must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;
9237
9252
  else if (issue.type === "number")
9238
9253
  message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;
9254
+ else if (issue.type === "bigint")
9255
+ message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;
9239
9256
  else if (issue.type === "date")
9240
9257
  message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;
9241
9258
  else
@@ -9833,6 +9850,8 @@ function isValidJWT(jwt, alg) {
9833
9850
  return false;
9834
9851
  try {
9835
9852
  const [header] = jwt.split(".");
9853
+ if (!header)
9854
+ return false;
9836
9855
  // Convert base64url to base64
9837
9856
  const base64 = header
9838
9857
  .replace(/-/g, "+")
@@ -12914,15 +12933,19 @@ function cloneObject(data) {
12914
12933
  return copy;
12915
12934
  }
12916
12935
 
12917
- var compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];
12936
+ var isKey = (value) => /^\w*$/.test(value);
12918
12937
 
12919
12938
  var isUndefined = (val) => val === undefined;
12920
12939
 
12940
+ var compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];
12941
+
12942
+ var stringToPath = (input) => compact(input.replace(/["|']|\]/g, '').split(/\.|\[/));
12943
+
12921
12944
  var get = (object, path, defaultValue) => {
12922
12945
  if (!path || !isObject(object)) {
12923
12946
  return defaultValue;
12924
12947
  }
12925
- const result = compact(path.split(/[,[\].]+?/)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);
12948
+ const result = (isKey(path) ? [path] : stringToPath(path)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], object);
12926
12949
  return isUndefined(result) || result === object
12927
12950
  ? isUndefined(object[path])
12928
12951
  ? defaultValue
@@ -12932,10 +12955,6 @@ var get = (object, path, defaultValue) => {
12932
12955
 
12933
12956
  var isBoolean = (value) => typeof value === 'boolean';
12934
12957
 
12935
- var isKey = (value) => /^\w*$/.test(value);
12936
-
12937
- var stringToPath = (input) => compact(input.replace(/["|']|\]/g, '').split(/\.|\[/));
12938
-
12939
12958
  var set = (object, path, value) => {
12940
12959
  let index = -1;
12941
12960
  const tempPath = isKey(path) ? [path] : stringToPath(path);
@@ -12984,6 +13003,7 @@ const INPUT_VALIDATION_RULES = {
12984
13003
  };
12985
13004
 
12986
13005
  const HookFormContext = React__default.createContext(null);
13006
+ HookFormContext.displayName = 'HookFormContext';
12987
13007
  /**
12988
13008
  * 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
13009
  *
@@ -13413,7 +13433,7 @@ var createSubject = () => {
13413
13433
 
13414
13434
  var isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);
13415
13435
 
13416
- function deepEqual$1(object1, object2) {
13436
+ function deepEqual$1(object1, object2, _internal_visited = new WeakSet()) {
13417
13437
  if (isPrimitive(object1) || isPrimitive(object2)) {
13418
13438
  return object1 === object2;
13419
13439
  }
@@ -13425,6 +13445,11 @@ function deepEqual$1(object1, object2) {
13425
13445
  if (keys1.length !== keys2.length) {
13426
13446
  return false;
13427
13447
  }
13448
+ if (_internal_visited.has(object1) || _internal_visited.has(object2)) {
13449
+ return true;
13450
+ }
13451
+ _internal_visited.add(object1);
13452
+ _internal_visited.add(object2);
13428
13453
  for (const key of keys1) {
13429
13454
  const val1 = object1[key];
13430
13455
  if (!keys2.includes(key)) {
@@ -13435,7 +13460,7 @@ function deepEqual$1(object1, object2) {
13435
13460
  if ((isDateObject(val1) && isDateObject(val2)) ||
13436
13461
  (isObject(val1) && isObject(val2)) ||
13437
13462
  (Array.isArray(val1) && Array.isArray(val2))
13438
- ? !deepEqual$1(val1, val2)
13463
+ ? !deepEqual$1(val1, val2, _internal_visited)
13439
13464
  : val1 !== val2) {
13440
13465
  return false;
13441
13466
  }
@@ -14754,14 +14779,14 @@ function createFormControl(props = {}) {
14754
14779
  if (_options.resolver) {
14755
14780
  const { errors, values } = await _runSchema();
14756
14781
  _formState.errors = errors;
14757
- fieldValues = values;
14782
+ fieldValues = cloneObject(values);
14758
14783
  }
14759
14784
  else {
14760
14785
  await executeBuiltInValidation(_fields);
14761
14786
  }
14762
14787
  if (_names.disabled.size) {
14763
14788
  for (const name of _names.disabled) {
14764
- set(fieldValues, name, undefined);
14789
+ unset(fieldValues, name);
14765
14790
  }
14766
14791
  }
14767
14792
  unset(_formState.errors, 'root');
@@ -14858,7 +14883,11 @@ function createFormControl(props = {}) {
14858
14883
  }
14859
14884
  }
14860
14885
  for (const fieldName of _names.mount) {
14861
- setValue(fieldName, get(values, fieldName));
14886
+ const value = get(values, fieldName, get(_defaultValues, fieldName));
14887
+ if (!isUndefined(value)) {
14888
+ set(values, fieldName, value);
14889
+ setValue(fieldName, get(values, fieldName));
14890
+ }
14862
14891
  }
14863
14892
  }
14864
14893
  _formValues = cloneObject(values);
@@ -15078,14 +15107,21 @@ function useForm(props = {}) {
15078
15107
  : props.defaultValues,
15079
15108
  });
15080
15109
  if (!_formControl.current) {
15081
- _formControl.current = {
15082
- ...(props.formControl ? props.formControl : createFormControl(props)),
15083
- formState,
15084
- };
15085
- if (props.formControl &&
15086
- props.defaultValues &&
15087
- !isFunction$1(props.defaultValues)) {
15088
- props.formControl.reset(props.defaultValues, props.resetOptions);
15110
+ if (props.formControl) {
15111
+ _formControl.current = {
15112
+ ...props.formControl,
15113
+ formState,
15114
+ };
15115
+ if (props.defaultValues && !isFunction$1(props.defaultValues)) {
15116
+ props.formControl.reset(props.defaultValues, props.resetOptions);
15117
+ }
15118
+ }
15119
+ else {
15120
+ const { formControl, ...rest } = createFormControl(props);
15121
+ _formControl.current = {
15122
+ ...rest,
15123
+ formState,
15124
+ };
15089
15125
  }
15090
15126
  }
15091
15127
  const control = _formControl.current.control;
@@ -15631,7 +15667,7 @@ const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
15631
15667
  const fractionRegex = /^\d+\/\d+$/;
15632
15668
  const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
15633
15669
  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))\(.+\)$/;
15670
+ const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/;
15635
15671
  // Shadow always begins with x and y offset separated by underscore optionally prepended by inset
15636
15672
  const shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
15637
15673
  const imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
@@ -18178,7 +18214,7 @@ function cn(...inputs) {
18178
18214
 
18179
18215
  function Label(_a) {
18180
18216
  var { className } = _a, props = __rest(_a, ["className"]);
18181
- return (React.createElement(Root$2, Object.assign({ "data-slot": "label", className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className) }, props)));
18217
+ 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
18218
  }
18183
18219
 
18184
18220
  const validErrorMessageKeys = Object.keys(en.Errors);
@@ -18194,8 +18230,7 @@ const Form = FormProvider;
18194
18230
  const FormFieldContext = React.createContext({});
18195
18231
  const FormField = (_a) => {
18196
18232
  var props = __rest(_a, []);
18197
- return (React.createElement(FormFieldContext.Provider, { value: { name: props.name } },
18198
- React.createElement(Controller, Object.assign({}, props))));
18233
+ return (jsx(FormFieldContext.Provider, { value: { name: props.name }, children: jsx(Controller, Object.assign({}, props)) }));
18199
18234
  };
18200
18235
  const useFormField = () => {
18201
18236
  const fieldContext = React.useContext(FormFieldContext);
@@ -18213,18 +18248,17 @@ const FormItemContext = React.createContext({});
18213
18248
  function FormItem(_a) {
18214
18249
  var { className } = _a, props = __rest(_a, ["className"]);
18215
18250
  const id = React.useId();
18216
- return (React.createElement(FormItemContext.Provider, { value: { id } },
18217
- React.createElement("div", Object.assign({ "data-slot": "form-item", className: cn("grid gap-2", className) }, props))));
18251
+ return (jsx(FormItemContext.Provider, { value: { id }, children: jsx("div", Object.assign({ "data-slot": "form-item", className: cn("grid gap-2", className) }, props)) }));
18218
18252
  }
18219
18253
  function FormLabel(_a) {
18220
18254
  var { className } = _a, props = __rest(_a, ["className"]);
18221
18255
  const { error, formItemId } = useFormField();
18222
- return (React.createElement(Label, Object.assign({ "data-slot": "form-label", "data-error": !!error, className: cn("data-[error=true]:text-destructive-foreground", className), htmlFor: formItemId }, props)));
18256
+ 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
18257
  }
18224
18258
  function FormControl(_a) {
18225
18259
  var props = __rest(_a, []);
18226
18260
  const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
18227
- return (React.createElement(Slot$2, Object.assign({ "data-slot": "form-control", id: formItemId, "aria-describedby": !error
18261
+ return (jsx(Slot$2, Object.assign({ "data-slot": "form-control", id: formItemId, "aria-describedby": !error
18228
18262
  ? `${formDescriptionId}`
18229
18263
  : `${formDescriptionId} ${formMessageId}`, "aria-invalid": !!error }, props)));
18230
18264
  }
@@ -18239,22 +18273,18 @@ function FormMessage(_a) {
18239
18273
  }
18240
18274
  const key = validateErrorMessageKey(String(body));
18241
18275
  const message = t(`Errors.${key}`);
18242
- return (React.createElement("p", Object.assign({ "data-slot": "form-message", id: formMessageId, className: cn("text-destructive-foreground text-sm", className) }, props), message));
18276
+ return (jsx("p", Object.assign({ "data-slot": "form-message", id: formMessageId, className: cn("text-destructive-foreground text-sm", className) }, props, { children: message })));
18243
18277
  }
18244
18278
 
18245
18279
  function Input(_a) {
18246
18280
  var { className, type } = _a, props = __rest(_a, ["className", "type"]);
18247
- return (React.createElement("input", Object.assign({ type: type, "data-slot": "input", className: cn("border-input file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground flex h-10 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", className) }, props)));
18281
+ 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
18282
  }
18249
18283
 
18250
18284
  function InputGroup(_a) {
18251
18285
  var { name, label, className } = _a, props = __rest(_a, ["name", "label", "className"]);
18252
18286
  const { control } = useFormContext();
18253
- return (React__default.createElement(FormField, { control: control, name: name, render: ({ field }) => (React__default.createElement(FormItem, { className: className },
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))) }));
18287
+ 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
18288
  }
18259
18289
 
18260
18290
  const falsyToString = (value)=>typeof value === "boolean" ? `${value}` : value === 0 ? "0" : value;
@@ -18324,7 +18354,7 @@ const buttonVariants = cva("inline-flex cursor-pointer items-center justify-cent
18324
18354
  function Button(_a) {
18325
18355
  var { className, variant, size, asChild = false } = _a, props = __rest(_a, ["className", "variant", "size", "asChild"]);
18326
18356
  const Comp = asChild ? Slot$2 : "button";
18327
- return (React.createElement(Comp, Object.assign({ "data-slot": "button", className: cn(buttonVariants({ variant, size, className })) }, props)));
18357
+ return (jsx(Comp, Object.assign({ "data-slot": "button", className: cn(buttonVariants({ variant, size, className })) }, props)));
18328
18358
  }
18329
18359
 
18330
18360
  /**
@@ -18517,9 +18547,7 @@ const X$2 = createLucideIcon("X", __iconNode);
18517
18547
  function SubmitButton(_a) {
18518
18548
  var { isSubmitting, isValid = true, className, variant, children, size } = _a, props = __rest(_a, ["isSubmitting", "isValid", "className", "variant", "children", "size"]);
18519
18549
  const { t } = useTranslation();
18520
- return (React__default.createElement(Button, Object.assign({ type: "submit", size: size, className: className, variant: variant, disabled: isSubmitting || !isValid }, props),
18521
- isSubmitting && React__default.createElement(Loader, { className: "animate-spin" }),
18522
- isSubmitting ? t("CheckoutEmbed.loading") : children));
18550
+ 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
18551
  }
18524
18552
 
18525
18553
  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 +22072,64 @@ var Close = DialogClose;
22044
22072
 
22045
22073
  function Dialog(_a) {
22046
22074
  var props = __rest(_a, []);
22047
- return React.createElement(Root$1, Object.assign({ "data-slot": "dialog" }, props));
22075
+ return jsx(Root$1, Object.assign({ "data-slot": "dialog" }, props));
22048
22076
  }
22049
22077
  function DialogTrigger(_a) {
22050
22078
  var props = __rest(_a, []);
22051
- return React.createElement(Trigger$1, Object.assign({ "data-slot": "dialog-trigger" }, props));
22079
+ return jsx(Trigger$1, Object.assign({ "data-slot": "dialog-trigger" }, props));
22052
22080
  }
22053
22081
  function DialogPortal(_a) {
22054
22082
  var props = __rest(_a, []);
22055
- return React.createElement(Portal$1, Object.assign({ "data-slot": "dialog-portal" }, props));
22083
+ return jsx(Portal$1, Object.assign({ "data-slot": "dialog-portal" }, props));
22056
22084
  }
22057
22085
  function DialogOverlay(_a) {
22058
22086
  var { className } = _a, props = __rest(_a, ["className"]);
22059
- return (React.createElement(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)));
22087
+ 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
22088
  }
22061
22089
  function DialogContent(_a) {
22062
22090
  var { className, children } = _a, props = __rest(_a, ["className", "children"]);
22063
- return (React.createElement(DialogPortal, { "data-slot": "dialog-portal" },
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")))));
22091
+ 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
22092
  }
22071
22093
  function DialogHeader(_a) {
22072
22094
  var { className } = _a, props = __rest(_a, ["className"]);
22073
- return (React.createElement("div", Object.assign({ "data-slot": "dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className) }, props)));
22095
+ return (jsx("div", Object.assign({ "data-slot": "dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className) }, props)));
22074
22096
  }
22075
22097
  function DialogFooter(_a) {
22076
22098
  var { className } = _a, props = __rest(_a, ["className"]);
22077
- return (React.createElement("div", Object.assign({ "data-slot": "dialog-footer", className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className) }, props)));
22099
+ 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
22100
  }
22079
22101
  function DialogTitle(_a) {
22080
22102
  var { className } = _a, props = __rest(_a, ["className"]);
22081
- return (React.createElement(Title, Object.assign({ "data-slot": "dialog-title", className: cn("text-lg leading-none font-semibold", className) }, props)));
22103
+ return (jsx(Title, Object.assign({ "data-slot": "dialog-title", className: cn("text-lg font-semibold leading-none", className) }, props)));
22082
22104
  }
22083
22105
  function DialogDescription(_a) {
22084
22106
  var { className } = _a, props = __rest(_a, ["className"]);
22085
- return (React.createElement(Description, Object.assign({ "data-slot": "dialog-description", className: cn("text-muted-foreground text-sm", className) }, props)));
22107
+ return (jsx(Description, Object.assign({ "data-slot": "dialog-description", className: cn("text-muted-foreground text-sm", className) }, props)));
22086
22108
  }
22087
22109
 
22088
22110
  function Command(_a) {
22089
22111
  var { className } = _a, props = __rest(_a, ["className"]);
22090
- return (React.createElement(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)));
22112
+ 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
22113
  }
22092
22114
  function CommandInput(_a) {
22093
22115
  var { className } = _a, props = __rest(_a, ["className"]);
22094
- return (React.createElement("div", { "data-slot": "command-input-wrapper", className: "flex h-9 items-center gap-2 border-b px-3" },
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))));
22116
+ 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
22117
  }
22098
22118
  function CommandList(_a) {
22099
22119
  var { className } = _a, props = __rest(_a, ["className"]);
22100
- return (React.createElement(He.List, Object.assign({ "data-slot": "command-list", className: cn("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto", className) }, props)));
22120
+ 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
22121
  }
22102
22122
  function CommandEmpty(_a) {
22103
22123
  var props = __rest(_a, []);
22104
- return (React.createElement(He.Empty, Object.assign({ "data-slot": "command-empty", className: "py-6 text-center text-sm" }, props)));
22124
+ return (jsx(He.Empty, Object.assign({ "data-slot": "command-empty", className: "py-6 text-center text-sm" }, props)));
22105
22125
  }
22106
22126
  function CommandGroup(_a) {
22107
22127
  var { className } = _a, props = __rest(_a, ["className"]);
22108
- return (React.createElement(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)));
22128
+ 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
22129
  }
22110
22130
  function CommandItem(_a) {
22111
22131
  var { className } = _a, props = __rest(_a, ["className"]);
22112
- return (React.createElement(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 relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className) }, props)));
22132
+ 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
22133
  }
22114
22134
 
22115
22135
  /**
@@ -22154,8 +22174,9 @@ function getOppositeAxis(axis) {
22154
22174
  function getAxisLength(axis) {
22155
22175
  return axis === 'y' ? 'height' : 'width';
22156
22176
  }
22177
+ const yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);
22157
22178
  function getSideAxis(placement) {
22158
- return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';
22179
+ return yAxisSides.has(getSide(placement)) ? 'y' : 'x';
22159
22180
  }
22160
22181
  function getAlignmentAxis(placement) {
22161
22182
  return getOppositeAxis(getSideAxis(placement));
@@ -22180,19 +22201,19 @@ function getExpandedPlacements(placement) {
22180
22201
  function getOppositeAlignmentPlacement(placement) {
22181
22202
  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);
22182
22203
  }
22204
+ const lrPlacement = ['left', 'right'];
22205
+ const rlPlacement = ['right', 'left'];
22206
+ const tbPlacement = ['top', 'bottom'];
22207
+ const btPlacement = ['bottom', 'top'];
22183
22208
  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
22209
  switch (side) {
22189
22210
  case 'top':
22190
22211
  case 'bottom':
22191
- if (rtl) return isStart ? rl : lr;
22192
- return isStart ? lr : rl;
22212
+ if (rtl) return isStart ? rlPlacement : lrPlacement;
22213
+ return isStart ? lrPlacement : rlPlacement;
22193
22214
  case 'left':
22194
22215
  case 'right':
22195
- return isStart ? tb : bt;
22216
+ return isStart ? tbPlacement : btPlacement;
22196
22217
  default:
22197
22218
  return [];
22198
22219
  }
@@ -22742,6 +22763,8 @@ const hide$2 = function (options) {
22742
22763
  };
22743
22764
  };
22744
22765
 
22766
+ const originSides = /*#__PURE__*/new Set(['left', 'top']);
22767
+
22745
22768
  // For type backwards-compatibility, the `OffsetOptions` type was also
22746
22769
  // Derivable.
22747
22770
 
@@ -22755,7 +22778,7 @@ async function convertValueToCoords(state, options) {
22755
22778
  const side = getSide(placement);
22756
22779
  const alignment = getAlignment(placement);
22757
22780
  const isVertical = getSideAxis(placement) === 'y';
22758
- const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;
22781
+ const mainAxisMulti = originSides.has(side) ? -1 : 1;
22759
22782
  const crossAxisMulti = rtl && isVertical ? -1 : 1;
22760
22783
  const rawValue = evaluate(options, state);
22761
22784
 
@@ -22955,7 +22978,7 @@ const limitShift$2 = function (options) {
22955
22978
  if (checkCrossAxis) {
22956
22979
  var _middlewareData$offse, _middlewareData$offse2;
22957
22980
  const len = mainAxis === 'y' ? 'width' : 'height';
22958
- const isOriginSide = ['top', 'left'].includes(getSide(placement));
22981
+ const isOriginSide = originSides.has(getSide(placement));
22959
22982
  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
22983
  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
22984
  if (crossAxisCoord < limitMin) {
@@ -23100,6 +23123,7 @@ function isShadowRoot(value) {
23100
23123
  }
23101
23124
  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
23102
23125
  }
23126
+ const invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);
23103
23127
  function isOverflowElement(element) {
23104
23128
  const {
23105
23129
  overflow,
@@ -23107,27 +23131,32 @@ function isOverflowElement(element) {
23107
23131
  overflowY,
23108
23132
  display
23109
23133
  } = getComputedStyle$1(element);
23110
- return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);
23134
+ return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
23111
23135
  }
23136
+ const tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);
23112
23137
  function isTableElement(element) {
23113
- return ['table', 'td', 'th'].includes(getNodeName(element));
23138
+ return tableElements.has(getNodeName(element));
23114
23139
  }
23140
+ const topLayerSelectors = [':popover-open', ':modal'];
23115
23141
  function isTopLayer(element) {
23116
- return [':popover-open', ':modal'].some(selector => {
23142
+ return topLayerSelectors.some(selector => {
23117
23143
  try {
23118
23144
  return element.matches(selector);
23119
- } catch (e) {
23145
+ } catch (_e) {
23120
23146
  return false;
23121
23147
  }
23122
23148
  });
23123
23149
  }
23150
+ const transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];
23151
+ const willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];
23152
+ const containValues = ['paint', 'layout', 'strict', 'content'];
23124
23153
  function isContainingBlock(elementOrCss) {
23125
23154
  const webkit = isWebKit();
23126
23155
  const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;
23127
23156
 
23128
23157
  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
23129
23158
  // https://drafts.csswg.org/css-transforms-2/#individual-transforms
23130
- return ['transform', 'translate', 'scale', 'rotate', 'perspective'].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) || ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));
23159
+ 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
23160
  }
23132
23161
  function getContainingBlock(element) {
23133
23162
  let currentNode = getParentNode(element);
@@ -23145,8 +23174,9 @@ function isWebKit() {
23145
23174
  if (typeof CSS === 'undefined' || !CSS.supports) return false;
23146
23175
  return CSS.supports('-webkit-backdrop-filter', 'none');
23147
23176
  }
23177
+ const lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);
23148
23178
  function isLastTraversableNode(node) {
23149
- return ['html', 'body', '#document'].includes(getNodeName(node));
23179
+ return lastTraversableNodeNames.has(getNodeName(node));
23150
23180
  }
23151
23181
  function getComputedStyle$1(element) {
23152
23182
  return getWindow(element).getComputedStyle(element);
@@ -23451,6 +23481,7 @@ function getViewportRect(element, strategy) {
23451
23481
  };
23452
23482
  }
23453
23483
 
23484
+ const absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);
23454
23485
  // Returns the inner client rect, subtracting scrollbars if present.
23455
23486
  function getInnerBoundingClientRect(element, strategy) {
23456
23487
  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');
@@ -23515,7 +23546,7 @@ function getClippingElementAncestors(element, cache) {
23515
23546
  if (!currentNodeIsContaining && computedStyle.position === 'fixed') {
23516
23547
  currentContainingBlockComputedStyle = null;
23517
23548
  }
23518
- const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
23549
+ const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
23519
23550
  if (shouldDropCurrentNode) {
23520
23551
  // Drop non-containing blocks.
23521
23552
  result = result.filter(ancestor => ancestor !== currentNode);
@@ -24882,16 +24913,15 @@ var Content2 = PopoverContent$1;
24882
24913
 
24883
24914
  function Popover(_a) {
24884
24915
  var props = __rest(_a, []);
24885
- return React.createElement(Root2, Object.assign({ "data-slot": "popover" }, props));
24916
+ return jsx(Root2, Object.assign({ "data-slot": "popover" }, props));
24886
24917
  }
24887
24918
  function PopoverTrigger(_a) {
24888
24919
  var props = __rest(_a, []);
24889
- return React.createElement(Trigger, Object.assign({ "data-slot": "popover-trigger" }, props));
24920
+ return jsx(Trigger, Object.assign({ "data-slot": "popover-trigger" }, props));
24890
24921
  }
24891
24922
  function PopoverContent(_a) {
24892
24923
  var { className, align = "center", sideOffset = 4 } = _a, props = __rest(_a, ["className", "align", "sideOffset"]);
24893
- return (React.createElement(Portal, null,
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))));
24924
+ 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
24925
  }
24896
24926
 
24897
24927
  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 +33457,12 @@ const CountryDropdownComponent = (_a, ref) => {
33427
33457
  onChange === null || onChange === void 0 ? void 0 : onChange(country);
33428
33458
  setOpen(false);
33429
33459
  }, [onChange]);
33430
- const triggerClasses = cn("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1", slim === true && "w-20");
33431
- return (React__default.createElement(Popover, { open: open, onOpenChange: setOpen },
33432
- React__default.createElement(PopoverTrigger, Object.assign({ ref: ref, className: triggerClasses, disabled: disabled }, props),
33433
- selectedCountry ? (React__default.createElement("div", { className: "flex items-center flex-grow w-0 gap-2 overflow-hidden" },
33434
- React__default.createElement("div", { className: "inline-flex items-center justify-center w-5 h-5 shrink-0 overflow-hidden rounded-full" },
33435
- React__default.createElement(u, { countryCode: selectedCountry.alpha2.toLowerCase(), height: 20 })),
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") }))))))))));
33460
+ 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");
33461
+ 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
33462
+ .filter((x) => x.name)
33463
+ .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)
33464
+ ? "opacity-100"
33465
+ : "opacity-0") })] }, key))) })] }) }) })] }));
33454
33466
  };
33455
33467
  CountryDropdownComponent.displayName = "CountryDropdownComponent";
33456
33468
  const CountryDropdown = forwardRef(CountryDropdownComponent);
@@ -33495,35 +33507,12 @@ function AddressInput() {
33495
33507
  else {
33496
33508
  form.clearErrors("address");
33497
33509
  }
33510
+ // eslint-disable-next-line react-hooks/exhaustive-deps
33498
33511
  }, [open]);
33499
- return (React__default.createElement("div", { className: "w-full md:col-span-2" },
33500
- React__default.createElement(Dialog, { open: open, onOpenChange: setOpen },
33501
- React__default.createElement(DialogTrigger, { asChild: true },
33502
- React__default.createElement("div", { className: "relative grid gap-2" },
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")))))));
33512
+ 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) => {
33513
+ field.onChange(country.name);
33514
+ form.setValue("address.countryCode", country.alpha2);
33515
+ } }), jsx(FormMessage, {})] })) })] }), jsx(DialogFooter, { children: jsx(Button, { onClick: handleSave, type: "button", disabled: isValidating, children: t("CheckoutEmbed.CustomerForm.address.button") }) })] })] }) }));
33527
33516
  }
33528
33517
 
33529
33518
  function CustomerForm({ initialData, onSubmit, }) {
@@ -33546,17 +33535,7 @@ function CustomerForm({ initialData, onSubmit, }) {
33546
33535
  },
33547
33536
  mode: "onBlur",
33548
33537
  });
33549
- return (React__default.createElement(Form, Object.assign({}, form),
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"))))));
33538
+ 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
33539
  }
33561
33540
 
33562
33541
  var reactStripe_umd$1 = {exports: {}};
@@ -35090,22 +35069,15 @@ const CheckoutForm$1 = ({ onSuccess, onError, children, setSubmitting, }) => {
35090
35069
  const wrapper = document.getElementById("bs-wrapper");
35091
35070
  if (!wrapper)
35092
35071
  return null;
35093
- return (React__default.createElement(React__default.Fragment, null,
35094
- React__default.createElement("div", { ref: containerRef, className: "w-full h-[450px]" }),
35095
- ReactDOM__default.createPortal(React__default.createElement("div", { style: {
35096
- display: "block",
35097
- zIndex: 20,
35098
- position: "absolute",
35099
- top: rect === null || rect === void 0 ? void 0 : rect.top,
35100
- left: rect === null || rect === void 0 ? void 0 : rect.left,
35101
- width: rect === null || rect === void 0 ? void 0 : rect.width,
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)));
35072
+ return (jsxs(Fragment$1, { children: [jsx("div", { ref: containerRef, className: "h-[450px] w-full" }), ReactDOM__default.createPortal(jsx("div", { style: {
35073
+ display: "block",
35074
+ zIndex: 20,
35075
+ position: "absolute",
35076
+ top: rect === null || rect === void 0 ? void 0 : rect.top,
35077
+ left: rect === null || rect === void 0 ? void 0 : rect.left,
35078
+ width: rect === null || rect === void 0 ? void 0 : rect.width,
35079
+ height: rect === null || rect === void 0 ? void 0 : rect.height,
35080
+ }, children: jsxs("form", { onSubmit: handleSubmit, children: [jsxs("div", { children: [jsx(reactStripe_umdExports.PaymentElement, {}), jsx("p", { style: { color: "#fb2c36" }, children: errorMessage })] }), children] }) }), wrapper)] }));
35109
35081
  };
35110
35082
  var CheckoutForm$2 = memo(CheckoutForm$1);
35111
35083
 
@@ -35117,56 +35089,24 @@ function PaymentElement({ paymentSecret, publicKey, checkoutAppearance, locale,
35117
35089
  clientSecret: paymentSecret,
35118
35090
  fonts: fonts,
35119
35091
  };
35120
- return (React__default.createElement(reactStripe_umdExports.Elements, { stripe: stripePromise, options: options },
35121
- React__default.createElement(CheckoutForm$2, { onSuccess: onSuccess, onError: onError, children: children, setSubmitting: setSubmitting })));
35092
+ return (jsx(reactStripe_umdExports.Elements, { stripe: stripePromise, options: options, children: jsx(CheckoutForm$2, { onSuccess: onSuccess, onError: onError, setSubmitting: setSubmitting, children: children }) }));
35122
35093
  }
35123
35094
  var PaymentElement$1 = memo(PaymentElement);
35124
35095
 
35125
35096
  function PaymentForm({ paymentSecret, onSuccess, onError, onBack, onDoubleBack, contactEmail, shippingAddress, shippingName, shippingPrice, checkoutAppearance, fonts, locale, publicKey, paymentComponentKey, }) {
35126
35097
  const [isSubmitting, setIsSubmitting] = useState(false);
35127
35098
  const { t } = useTranslation();
35128
- return (React__default.createElement("div", { className: "space-y-6" },
35129
- React__default.createElement("div", null,
35130
- React__default.createElement("h2", { className: "mb-2" }, t("CheckoutEmbed.Payment.title")),
35131
- React__default.createElement("p", { className: "text-sm text-muted-foreground" }, t("CheckoutEmbed.Payment.description"))),
35132
- React__default.createElement("div", { className: "space-y-2" },
35133
- React__default.createElement("div", { className: "flex items-center justify-between text-sm" },
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"))))))));
35099
+ 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: {
35100
+ display: "flex",
35101
+ justifyContent: "space-between",
35102
+ alignItems: "center",
35103
+ paddingTop: "2rem",
35104
+ }, 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
35105
  }
35166
35106
 
35167
35107
  function Skeleton(_a) {
35168
35108
  var { className } = _a, props = __rest(_a, ["className"]);
35169
- return (React.createElement("div", Object.assign({ "data-slot": "skeleton", className: cn("bg-accent animate-pulse rounded-md", className) }, props)));
35109
+ return (jsx("div", Object.assign({ "data-slot": "skeleton", className: cn("bg-accent animate-pulse rounded-md", className) }, props)));
35170
35110
  }
35171
35111
 
35172
35112
  function ZasilkovnaShippingOption({ children, onPickupPointSelected, locale, countryCode, apiKey, }) {
@@ -35205,15 +35145,14 @@ function ZasilkovnaShippingOption({ children, onPickupPointSelected, locale, cou
35205
35145
  console.error("Packeta widget not found", window);
35206
35146
  }
35207
35147
  };
35208
- return (React__default.createElement(React__default.Fragment, null,
35209
- React__default.createElement("div", { onClick: () => handleClick() }, children)));
35148
+ return (jsx(Fragment$1, { children: jsx("div", { onClick: () => handleClick(), children: children }) }));
35210
35149
  }
35211
35150
 
35212
35151
  function ShippingOptionWrapper({ rate, children, onPickupPointSelected, locale, countryCode, }) {
35213
35152
  if (rate.provider === "zasilkovna") {
35214
- return (React__default.createElement(ZasilkovnaShippingOption, { onPickupPointSelected: onPickupPointSelected, locale: locale, countryCode: countryCode, apiKey: rate.clientSecret }, children));
35153
+ return (jsx(ZasilkovnaShippingOption, { onPickupPointSelected: onPickupPointSelected, locale: locale, countryCode: countryCode, apiKey: rate.clientSecret, children: children }));
35215
35154
  }
35216
- return React__default.createElement(React__default.Fragment, null, children);
35155
+ return jsx(Fragment$1, { children: children });
35217
35156
  }
35218
35157
 
35219
35158
  function ShippingMethodForm({ shippingRates, initialData, onSubmit, onBack, contactEmail, shippingAddress, currency, exchangeRate, locale, countryCode, setFormData, formData, }) {
@@ -35230,77 +35169,38 @@ function ShippingMethodForm({ shippingRates, initialData, onSubmit, onBack, cont
35230
35169
  },
35231
35170
  });
35232
35171
  const currentRateId = form.watch("rateId");
35233
- return (React__default.createElement("div", { className: "space-y-6" },
35234
- React__default.createElement("h2", null, t("CheckoutEmbed.Shipping.title")),
35235
- React__default.createElement("div", { className: "space-y-2 pb-2" },
35236
- React__default.createElement("div", { className: "flex items-center justify-between text-sm" },
35237
- React__default.createElement("p", null,
35238
- React__default.createElement("span", { className: "font-medium" }, t("CheckoutEmbed.Shipping.contact")),
35239
- " ",
35240
- React__default.createElement("span", { className: "text-muted-foreground" }, contactEmail)),
35241
- React__default.createElement(Button, { variant: "link", size: "link", onClick: onBack }, t("CheckoutEmbed.Shipping.change"))),
35242
- React__default.createElement("div", { className: "flex items-center justify-between text-sm" },
35243
- React__default.createElement("p", null,
35244
- React__default.createElement("span", { className: "font-medium" }, t("CheckoutEmbed.Shipping.address")),
35245
- " ",
35246
- React__default.createElement("span", { className: "text-muted-foreground" }, shippingAddress)),
35247
- React__default.createElement(Button, { variant: "link", size: "link", onClick: onBack }, t("CheckoutEmbed.Shipping.change")))),
35248
- React__default.createElement(Form, Object.assign({}, form),
35249
- React__default.createElement("form", { onSubmit: form.handleSubmit(onSubmit), className: "space-y-4" },
35250
- shippingRates.length === 0 &&
35251
- Array.from({ length: 3 }).map((_, index) => (React__default.createElement(ShippingRateLoading, { key: index }))),
35252
- shippingRates.map((rate) => {
35253
- const pickupPointDisplayName = form.watch("pickupPointDisplayName");
35254
- const rateId = rate.provider + rate.name;
35255
- const intPrice = Math.ceil(Number(rate.price));
35256
- const displayPrice = storeHelpers.formatPrice(intPrice, currency, exchangeRate);
35257
- const description = rate.provider === "zasilkovna"
35258
- ? t("CheckoutEmbed.Shipping.description.zasilkovna")
35259
- : t("CheckoutEmbed.Shipping.description.other");
35260
- return (React__default.createElement(ShippingOptionWrapper, { rate: rate, key: rateId, onPickupPointSelected: (pickupPointId, pickupPointName) => {
35261
- const newFormData = {
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")))))));
35172
+ 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 &&
35173
+ Array.from({ length: 3 }).map((_, index) => (jsx(ShippingRateLoading, {}, index))), shippingRates.map((rate) => {
35174
+ const pickupPointDisplayName = form.watch("pickupPointDisplayName");
35175
+ const rateId = rate.provider + rate.name;
35176
+ const intPrice = Math.ceil(Number(rate.price));
35177
+ const displayPrice = storeHelpers.formatPrice(intPrice, currency, exchangeRate);
35178
+ const description = rate.provider === "zasilkovna"
35179
+ ? t("CheckoutEmbed.Shipping.description.zasilkovna")
35180
+ : t("CheckoutEmbed.Shipping.description.other");
35181
+ return (jsx(ShippingOptionWrapper, { rate: rate, onPickupPointSelected: (pickupPointId, pickupPointName) => {
35182
+ const newFormData = {
35183
+ rateId,
35184
+ provider: rate.provider,
35185
+ price: intPrice,
35186
+ name: rate.name,
35187
+ pickupPointId: rate.provider === "zasilkovna" ? pickupPointId : "",
35188
+ pickupPointDisplayName: rate.provider === "zasilkovna" ? pickupPointName : "",
35189
+ };
35190
+ form.setValue("rateId", newFormData.rateId);
35191
+ form.setValue("provider", newFormData.provider);
35192
+ form.setValue("name", newFormData.name);
35193
+ form.setValue("price", newFormData.price);
35194
+ form.setValue("pickupPointId", newFormData.pickupPointId);
35195
+ form.setValue("pickupPointDisplayName", newFormData.pickupPointDisplayName);
35196
+ setFormData(Object.assign(Object.assign({}, formData), { shipping: Object.assign({}, newFormData) }));
35197
+ }, locale: locale, countryCode: countryCode, children: jsxs("div", { className: clsx("bg-background cursor-pointer rounded-md border p-4", {
35198
+ "bg-muted border-primary": currentRateId === rateId,
35199
+ }), 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));
35200
+ }), 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
35201
  }
35298
35202
  function ShippingRateLoading() {
35299
- return (React__default.createElement("div", { className: clsx("p-4 cursor-pointer grid gap-[10px] rounded-md border bg-background") },
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" })));
35203
+ 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
35204
  }
35305
35205
 
35306
35206
  const useFormStore = create()(persist((set) => ({
@@ -35334,9 +35234,11 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
35334
35234
  if (!isCustomerValid)
35335
35235
  setStep("customer");
35336
35236
  }
35237
+ // eslint-disable-next-line react-hooks/exhaustive-deps
35337
35238
  }, [step, formData]);
35338
35239
  useEffect(() => {
35339
35240
  validateStep();
35241
+ // eslint-disable-next-line react-hooks/exhaustive-deps
35340
35242
  }, [step]);
35341
35243
  useEffect(() => {
35342
35244
  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 +35298,7 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
35396
35298
  },
35397
35299
  } }));
35398
35300
  }
35301
+ // eslint-disable-next-line react-hooks/exhaustive-deps
35399
35302
  }, [customer]);
35400
35303
  useEffect(() => {
35401
35304
  if (step !== "shipping")
@@ -35413,6 +35316,7 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
35413
35316
  }
35414
35317
  });
35415
35318
  getShippingRates();
35319
+ // eslint-disable-next-line react-hooks/exhaustive-deps
35416
35320
  }, [step, clientSecret, checkoutId]);
35417
35321
  // Handle address form submission
35418
35322
  const handleCustomerSubmit = (data) => __awaiter(this, void 0, void 0, function* () {
@@ -35474,33 +35378,22 @@ function CheckoutForm({ storeClient, checkoutId, onSuccess, onError, cancelUrl,
35474
35378
  };
35475
35379
  const renderStep = () => {
35476
35380
  if (step === "payment" && formData.customer && formData.shipping) {
35477
- return (React__default.createElement(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 }));
35381
+ 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
35382
  }
35479
35383
  if (step === "shipping" && formData.customer) {
35480
- return (React__default.createElement(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 }));
35384
+ 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
35385
  }
35482
- return (React__default.createElement(CustomerForm, { initialData: formData.customer, onSubmit: handleCustomerSubmit }));
35386
+ return (jsx(CustomerForm, { initialData: formData.customer, onSubmit: handleCustomerSubmit }));
35483
35387
  };
35484
- return React__default.createElement("div", { className: "relative min-h-full w-full h-max" }, renderStep());
35388
+ return jsx("div", { className: "relative h-max min-h-full w-full", children: renderStep() });
35485
35389
  }
35486
35390
 
35487
35391
  function CheckoutFormLoading() {
35488
35392
  const { t } = useTranslation();
35489
- return (React__default.createElement("div", { className: "md:grid-cols-2 gap-6 grid" },
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" }))));
35393
+ 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
35394
  }
35500
35395
  function InputGroupLoading({ className }) {
35501
- return (React__default.createElement("div", { className: clsx("flex flex-col gap-2", className) },
35502
- React__default.createElement(Skeleton, { className: "w-10 h-3" }),
35503
- React__default.createElement(Skeleton, { className: "w-full h-10" })));
35396
+ 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
35397
  }
35505
35398
 
35506
35399
  function DiscountCode({ applyDiscountCode, }) {
@@ -35525,15 +35418,10 @@ function DiscountCode({ applyDiscountCode, }) {
35525
35418
  setIsLoading(false);
35526
35419
  }
35527
35420
  });
35528
- return (React__default.createElement("form", { className: "pb-1", onSubmit: handleSubmit },
35529
- React__default.createElement(Label, { className: "text-sm font-medium mb-2" }, t("CheckoutEmbed.Summary.discountCodeLabel")),
35530
- React__default.createElement("div", { className: "flex items-center gap-2" },
35531
- React__default.createElement(Input, { "aria-invalid": !!error, value: discountCode, onChange: (e) => {
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)));
35421
+ 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) => {
35422
+ setError("");
35423
+ setDiscountCode(e.target.value);
35424
+ }, 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
35425
  }
35538
35426
 
35539
35427
  function CheckoutSummary({ appliedDiscounts, lineItems, shipping, tax, currency, onCancel, exchangeRate, applyDiscountCode, removeDiscount, }) {
@@ -35562,105 +35450,65 @@ function CheckoutSummary({ appliedDiscounts, lineItems, shipping, tax, currency,
35562
35450
  return intersection.filter((combination) => currentCombinations.some((currentCombination) => JSON.stringify(currentCombination) === JSON.stringify(combination)));
35563
35451
  }, []);
35564
35452
  const canCombine = appliedDiscounts.length === 0 || sharedCombinations.length > 0;
35565
- return (React__default.createElement("div", { className: "grid gap-5" },
35566
- React__default.createElement("div", { className: "flex justify-between items-center" },
35567
- React__default.createElement("div", { onClick: () => setIsOpen(!isOpen), className: "flex items-center gap-2 max-md:cursor-pointer" },
35568
- React__default.createElement("h2", null, t("CheckoutEmbed.Summary.title")),
35569
- React__default.createElement(ChevronDown, { className: clsx("size-5 md:hidden transition-transform", {
35570
- "rotate-180": isOpen,
35571
- }) })),
35572
- React__default.createElement("p", { className: "font-bold text-lg tracking-tight md:hidden" }, storeHelpers.formatPrice(total, currency, exchangeRate)),
35573
- React__default.createElement(Button, { className: "max-sm:hidden", variant: "link", size: "link", onClick: onCancel }, t("CheckoutEmbed.Summary.edit"))),
35574
- React__default.createElement("hr", null),
35575
- React__default.createElement("div", { className: clsx("gap-2 order-4 md:order-none", {
35576
- "hidden md:grid": !isOpen,
35577
- grid: isOpen,
35578
- }) },
35579
- React__default.createElement("div", { className: "flex justify-between" },
35580
- React__default.createElement("p", null, t("CheckoutEmbed.Summary.subtotal")),
35581
- React__default.createElement("p", null, storeHelpers.formatPrice(subtotal, currency, exchangeRate))),
35582
- React__default.createElement("div", { className: "flex justify-between" },
35583
- React__default.createElement("p", null, t("CheckoutEmbed.Summary.shipping")),
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", {
35453
+ 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", {
35454
+ "rotate-180": isOpen,
35455
+ }) })] }), 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", {
35456
+ "hidden md:grid": !isOpen,
35457
+ grid: isOpen,
35458
+ }), 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
35459
+ ? t("CheckoutEmbed.Summary.free")
35460
+ : shippingPrice
35461
+ ? storeHelpers.formatPrice(shippingPrice, currency, exchangeRate)
35462
+ : 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 }) => {
35463
+ var _a;
35464
+ 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));
35465
+ }), 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", {
35466
+ "hidden md:block": !isOpen,
35467
+ block: isOpen,
35468
+ }) }), jsx("div", { className: clsx("order-6 gap-0 md:order-none", {
35469
+ "hidden md:grid": !isOpen,
35470
+ grid: isOpen,
35471
+ }), children: jsx(DiscountCode, { applyDiscountCode: applyDiscountCode }) })] })), jsx("hr", { className: clsx("order-5 md:order-none", {
35605
35472
  "hidden md:block": !isOpen,
35606
35473
  block: isOpen,
35607
- }) }),
35608
- React__default.createElement("div", { className: clsx("gap-0 order-6 md:order-none", {
35474
+ }) }), jsx("div", { className: clsx("order-3 gap-5 md:order-none", {
35609
35475
  "hidden md:grid": !isOpen,
35610
35476
  grid: isOpen,
35611
- }) },
35612
- React__default.createElement(DiscountCode, { applyDiscountCode: applyDiscountCode })))),
35613
- React__default.createElement("hr", { className: clsx("order-5 md:order-none", {
35614
- "hidden md:block": !isOpen,
35615
- block: isOpen,
35616
- }) }),
35617
- React__default.createElement("div", { className: clsx("gap-5 order-3 md:order-none", {
35618
- "hidden md:grid": !isOpen,
35619
- grid: isOpen,
35620
- }) }, lineItems.map((item, index) => {
35621
- var _a, _b, _c, _d, _e, _f;
35622
- const finalItem = ((_a = item.productData) === null || _a === void 0 ? void 0 : _a.selectedVariant) || item.productData;
35623
- const productAppliedDiscounts = appliedDiscounts.filter((discount) => discount.allowedLineItems.some((allowedLineItem) => allowedLineItem.productId === item.productData.productId));
35624
- const formattedProductAppliedDiscounts = productAppliedDiscounts.map((discount) => {
35625
- var _a;
35626
- const elegibleLineItems = discount.allowedLineItems.find((allowedLineItem) => allowedLineItem.productId === item.productData.productId);
35627
- if (!elegibleLineItems)
35628
- return 0;
35629
- const elegibleQuantity = elegibleLineItems.quantity;
35630
- const elegibleTotalAmount = ((_a = finalItem === null || finalItem === void 0 ? void 0 : finalItem.priceInCents) !== null && _a !== void 0 ? _a : 0) * elegibleQuantity;
35631
- if (discount.discount.valueType === "PERCENTAGE") {
35632
- const percentage = discount.discount.value / 100;
35633
- return elegibleTotalAmount * percentage;
35634
- }
35635
- else if (discount.discount.valueType === "FREE") {
35636
- return elegibleTotalAmount;
35637
- }
35638
- return elegibleQuantity * discount.discount.value;
35639
- });
35640
- const totalDiscountAmount = formattedProductAppliedDiscounts.length > 0
35641
- ? formattedProductAppliedDiscounts.reduce((acc, curr) => {
35642
- return acc + curr;
35643
- }, 0)
35644
- : null;
35645
- const isDiscounted = !!totalDiscountAmount;
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
- }))));
35477
+ }), children: lineItems.map((item, index) => {
35478
+ var _a, _b, _c, _d, _e, _f;
35479
+ const finalItem = ((_a = item.productData) === null || _a === void 0 ? void 0 : _a.selectedVariant) || item.productData;
35480
+ const productAppliedDiscounts = appliedDiscounts.filter((discount) => discount.allowedLineItems.some((allowedLineItem) => allowedLineItem.productId === item.productData.productId));
35481
+ const formattedProductAppliedDiscounts = productAppliedDiscounts.map((discount) => {
35482
+ var _a;
35483
+ const elegibleLineItems = discount.allowedLineItems.find((allowedLineItem) => allowedLineItem.productId === item.productData.productId);
35484
+ if (!elegibleLineItems)
35485
+ return 0;
35486
+ const elegibleQuantity = elegibleLineItems.quantity;
35487
+ const elegibleTotalAmount = ((_a = finalItem === null || finalItem === void 0 ? void 0 : finalItem.priceInCents) !== null && _a !== void 0 ? _a : 0) * elegibleQuantity;
35488
+ if (discount.discount.valueType === "PERCENTAGE") {
35489
+ const percentage = discount.discount.value / 100;
35490
+ return elegibleTotalAmount * percentage;
35491
+ }
35492
+ else if (discount.discount.valueType === "FREE") {
35493
+ return elegibleTotalAmount;
35494
+ }
35495
+ return elegibleQuantity * discount.discount.value;
35496
+ });
35497
+ const totalDiscountAmount = formattedProductAppliedDiscounts.length > 0
35498
+ ? formattedProductAppliedDiscounts.reduce((acc, curr) => {
35499
+ return acc + curr;
35500
+ }, 0)
35501
+ : null;
35502
+ const isDiscounted = !!totalDiscountAmount;
35503
+ const discountedPrice = finalItem.priceInCents - (totalDiscountAmount !== null && totalDiscountAmount !== void 0 ? totalDiscountAmount : 0);
35504
+ 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] ||
35505
+ ((_b = item === null || item === void 0 ? void 0 : item.productData) === null || _b === void 0 ? void 0 : _b.images[0]) ||
35506
+ "/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
35507
+ .map((option) => `${option.name}: ${option.value}`)
35508
+ .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
35509
+ ? t("CheckoutEmbed.Summary.free")
35510
+ : 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));
35511
+ }) })] }));
35664
35512
  }
35665
35513
  function DiscountItem({ id, removeDiscount, label, canRemove, }) {
35666
35514
  const [isLoading, setIsLoading] = useState(false);
@@ -35676,46 +35524,12 @@ function DiscountItem({ id, removeDiscount, label, canRemove, }) {
35676
35524
  setIsLoading(false);
35677
35525
  }
35678
35526
  });
35679
- return (React__default.createElement("div", { className: "flex items-center gap-0.5" },
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")))));
35527
+ 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
35528
  }
35685
35529
 
35686
35530
  function CheckoutSummaryLoading() {
35687
35531
  const { t } = useTranslation();
35688
- return (React__default.createElement("div", { className: "grid gap-5" },
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" })))))));
35532
+ 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
35533
  }
35720
35534
 
35721
35535
  function CheckoutEmbedComponent({ checkoutId, config }) {
@@ -35723,7 +35537,7 @@ function CheckoutEmbedComponent({ checkoutId, config }) {
35723
35537
  const { cancelUrl, successUrl, appearance, locale, clientSecret, clientProxy, } = config;
35724
35538
  const storeClient = React__default.useMemo(() => createStoreClient({ proxy: clientProxy }), [clientProxy]);
35725
35539
  const iframeRef = React__default.useRef(null);
35726
- React__default.useMemo(() => createI18nInstance(locale), []);
35540
+ React__default.useMemo(() => createI18nInstance(locale), [locale]);
35727
35541
  const { formData, step } = useFormStore();
35728
35542
  const paymentSecretPromiseRef = useRef(null);
35729
35543
  const [paymentSecret, setPaymentSecret] = useState(null);
@@ -35755,6 +35569,7 @@ function CheckoutEmbedComponent({ checkoutId, config }) {
35755
35569
  return () => {
35756
35570
  mounted = false; // Cleanup
35757
35571
  };
35572
+ // eslint-disable-next-line react-hooks/exhaustive-deps
35758
35573
  }, [checkoutId]); // Only re-run if checkoutId changes
35759
35574
  const onSuccess = () => {
35760
35575
  resetFormStore(formData);
@@ -35796,6 +35611,7 @@ function CheckoutEmbedComponent({ checkoutId, config }) {
35796
35611
  paymentSecretPromiseRef.current = null;
35797
35612
  });
35798
35613
  }
35614
+ // eslint-disable-next-line react-hooks/exhaustive-deps
35799
35615
  }, [paymentSecret, step]);
35800
35616
  const applyDiscountCode = (code) => __awaiter(this, void 0, void 0, function* () {
35801
35617
  console.log("[Payment Debug] Applying discount code:", code);
@@ -35894,14 +35710,9 @@ function CheckoutEmbedComponent({ checkoutId, config }) {
35894
35710
  console.log("[Payment Debug] Clearing revalidation interval");
35895
35711
  clearInterval(interval);
35896
35712
  };
35713
+ // eslint-disable-next-line react-hooks/exhaustive-deps
35897
35714
  }, []);
35898
- return (React__default.createElement(IframeWrapper, { iframeRef: iframeRef },
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 }))))));
35715
+ 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
35716
  }
35906
35717
  const CheckoutEmbed = memo(CheckoutEmbedComponent);
35907
35718