@schematichq/schematic-react 0.2.0-rc.7 → 0.2.0-rc.9

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.
@@ -7875,6 +7875,35 @@ function HydrateComponentResponseFromJSONTyped(json, ignoreDiscriminator) {
7875
7875
  };
7876
7876
  }
7877
7877
 
7878
+ // src/api/models/PreviewSubscriptionChangeResponseData.ts
7879
+ function PreviewSubscriptionChangeResponseDataFromJSON(json) {
7880
+ return PreviewSubscriptionChangeResponseDataFromJSONTyped(json, false);
7881
+ }
7882
+ function PreviewSubscriptionChangeResponseDataFromJSONTyped(json, ignoreDiscriminator) {
7883
+ if (json == null) {
7884
+ return json;
7885
+ }
7886
+ return {
7887
+ dueNow: json["due_now"],
7888
+ newCharges: json["new_charges"],
7889
+ proration: json["proration"]
7890
+ };
7891
+ }
7892
+
7893
+ // src/api/models/PreviewCheckoutResponse.ts
7894
+ function PreviewCheckoutResponseFromJSON(json) {
7895
+ return PreviewCheckoutResponseFromJSONTyped(json, false);
7896
+ }
7897
+ function PreviewCheckoutResponseFromJSONTyped(json, ignoreDiscriminator) {
7898
+ if (json == null) {
7899
+ return json;
7900
+ }
7901
+ return {
7902
+ data: PreviewSubscriptionChangeResponseDataFromJSON(json["data"]),
7903
+ params: json["params"]
7904
+ };
7905
+ }
7906
+
7878
7907
  // src/api/apis/CheckoutApi.ts
7879
7908
  var CheckoutApi = class extends BaseAPI {
7880
7909
  /**
@@ -7963,6 +7992,51 @@ var CheckoutApi = class extends BaseAPI {
7963
7992
  );
7964
7993
  return await response.value();
7965
7994
  }
7995
+ /**
7996
+ * Preview checkout
7997
+ */
7998
+ async previewCheckoutRaw(requestParameters, initOverrides) {
7999
+ if (requestParameters["changeSubscriptionRequestBody"] == null) {
8000
+ throw new RequiredError(
8001
+ "changeSubscriptionRequestBody",
8002
+ 'Required parameter "changeSubscriptionRequestBody" was null or undefined when calling previewCheckout().'
8003
+ );
8004
+ }
8005
+ const queryParameters = {};
8006
+ const headerParameters = {};
8007
+ headerParameters["Content-Type"] = "application/json";
8008
+ if (this.configuration && this.configuration.apiKey) {
8009
+ headerParameters["X-Schematic-Api-Key"] = await this.configuration.apiKey(
8010
+ "X-Schematic-Api-Key"
8011
+ );
8012
+ }
8013
+ const response = await this.request(
8014
+ {
8015
+ path: `/checkout/preview`,
8016
+ method: "POST",
8017
+ headers: headerParameters,
8018
+ query: queryParameters,
8019
+ body: ChangeSubscriptionRequestBodyToJSON(
8020
+ requestParameters["changeSubscriptionRequestBody"]
8021
+ )
8022
+ },
8023
+ initOverrides
8024
+ );
8025
+ return new JSONApiResponse(
8026
+ response,
8027
+ (jsonValue) => PreviewCheckoutResponseFromJSON(jsonValue)
8028
+ );
8029
+ }
8030
+ /**
8031
+ * Preview checkout
8032
+ */
8033
+ async previewCheckout(requestParameters, initOverrides) {
8034
+ const response = await this.previewCheckoutRaw(
8035
+ requestParameters,
8036
+ initOverrides
8037
+ );
8038
+ return await response.value();
8039
+ }
7966
8040
  };
7967
8041
 
7968
8042
  // src/context/embed.tsx
@@ -9707,11 +9781,19 @@ function toPrettyDate(date) {
9707
9781
  year: "numeric"
9708
9782
  }).format(new Date(date));
9709
9783
  }
9784
+ function getMonthName(date) {
9785
+ return new Intl.DateTimeFormat("en-US", {
9786
+ month: "long"
9787
+ }).format(new Date(date));
9788
+ }
9710
9789
 
9711
9790
  // src/utils/string.ts
9712
9791
  function camelToHyphen(str) {
9713
9792
  return str.replace(/([a-z][A-Z])/g, (g2) => `${g2[0]}-${g2[1].toLowerCase()}`);
9714
9793
  }
9794
+ function formatNumber(num) {
9795
+ return new Intl.NumberFormat("en-US").format(num);
9796
+ }
9715
9797
  function formatCurrency(amount) {
9716
9798
  try {
9717
9799
  const dollars = amount / 100;
@@ -9740,6 +9822,18 @@ function formatCurrency(amount) {
9740
9822
  }).format(amount / 100);
9741
9823
  }
9742
9824
  }
9825
+ function formatOrdinal(n) {
9826
+ const enOrdinalRules = new Intl.PluralRules("en-US", { type: "ordinal" });
9827
+ const suffixes = /* @__PURE__ */ new Map([
9828
+ ["one", "st"],
9829
+ ["two", "nd"],
9830
+ ["few", "rd"],
9831
+ ["other", "th"]
9832
+ ]);
9833
+ const rule = enOrdinalRules.select(n);
9834
+ const suffix = suffixes.get(rule);
9835
+ return `${n}${suffix}`;
9836
+ }
9743
9837
 
9744
9838
  // src/const/index.ts
9745
9839
  var TEXT_BASE_SIZE = 16;
@@ -10701,8 +10795,8 @@ var FeatureName = ({
10701
10795
  if (entitlement.metricPeriod) {
10702
10796
  period = {
10703
10797
  current_day: "day",
10704
- current_month: "mo",
10705
- current_year: "yr"
10798
+ current_month: "month",
10799
+ current_year: "year"
10706
10800
  }[entitlement.metricPeriod];
10707
10801
  }
10708
10802
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Flex, { $alignItems: "center", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
@@ -10713,12 +10807,8 @@ var FeatureName = ({
10713
10807
  $weight: theme.typography.text.fontWeight,
10714
10808
  $color: theme.typography.text.color,
10715
10809
  children: [
10716
- typeof entitlement.valueNumeric === "number" ? (0, import_pluralize.default)(
10717
- entitlement.feature.name,
10718
- entitlement.valueNumeric,
10719
- true
10720
- ) : `Unlimited ${(0, import_pluralize.default)(entitlement.feature.name)}`,
10721
- period && `/${period}`
10810
+ typeof entitlement.valueNumeric === "number" ? `${formatNumber(entitlement.valueNumeric)} ${(0, import_pluralize.default)(entitlement.feature.name, entitlement.valueNumeric)}` : `Unlimited ${(0, import_pluralize.default)(entitlement.feature.name)}`,
10811
+ period && ` per ${period}`
10722
10812
  ]
10723
10813
  }
10724
10814
  ) });
@@ -10744,6 +10834,7 @@ var CheckoutDialog = () => {
10744
10834
  () => data.company?.plan?.planPeriod || "month"
10745
10835
  );
10746
10836
  const [selectedPlan, setSelectedPlan] = (0, import_react10.useState)();
10837
+ const [charges, setCharges] = (0, import_react10.useState)();
10747
10838
  const [paymentMethodId, setPaymentMethodId] = (0, import_react10.useState)();
10748
10839
  const [isLoading, setIsLoading] = (0, import_react10.useState)(false);
10749
10840
  const [error, setError] = (0, import_react10.useState)();
@@ -10786,9 +10877,54 @@ var CheckoutDialog = () => {
10786
10877
  }
10787
10878
  return 0;
10788
10879
  }, [selectedPlan]);
10880
+ const subscriptionPrice = (0, import_react10.useMemo)(() => {
10881
+ if (!selectedPlan || !selectedPlan.monthlyPrice || !selectedPlan.yearlyPrice) {
10882
+ return;
10883
+ }
10884
+ return formatCurrency(
10885
+ (planPeriod === "month" ? selectedPlan.monthlyPrice : selectedPlan.yearlyPrice)?.price
10886
+ );
10887
+ }, [selectedPlan, planPeriod]);
10789
10888
  const isLightBackground = (0, import_react10.useMemo)(() => {
10790
10889
  return hexToHSL(theme.card.background).l > 50;
10791
10890
  }, [theme.card.background]);
10891
+ const selectPlan = (0, import_react10.useCallback)(
10892
+ async (plan, newPeriod) => {
10893
+ setSelectedPlan(plan);
10894
+ setCharges(void 0);
10895
+ const period = newPeriod || planPeriod;
10896
+ const priceId = (period === "month" ? plan?.monthlyPrice : plan?.yearlyPrice)?.id;
10897
+ if (!priceId || !api) {
10898
+ return;
10899
+ }
10900
+ try {
10901
+ setIsLoading(true);
10902
+ const { data: data2 } = await api.previewCheckout({
10903
+ changeSubscriptionRequestBody: {
10904
+ newPlanId: plan.id,
10905
+ newPriceId: priceId
10906
+ }
10907
+ });
10908
+ setCharges(data2);
10909
+ } catch {
10910
+ setError(
10911
+ "Error retrieving plan details. Please try again in a moment."
10912
+ );
10913
+ } finally {
10914
+ setIsLoading(false);
10915
+ }
10916
+ },
10917
+ [api, planPeriod]
10918
+ );
10919
+ const changePlanPeriod = (0, import_react10.useCallback)(
10920
+ (period) => {
10921
+ setPlanPeriod(period);
10922
+ if (selectedPlan) {
10923
+ selectPlan(selectedPlan, period);
10924
+ }
10925
+ },
10926
+ [selectedPlan, selectPlan]
10927
+ );
10792
10928
  const allowCheckout = api && selectedPlan && selectedPlan?.id !== currentPlan?.id && (paymentMethod && !showPaymentForm || paymentMethodId) && !isLoading;
10793
10929
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Modal, { size: "lg", children: [
10794
10930
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ModalHeader, { bordered: true, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Flex, { $gap: "1rem", children: [
@@ -10923,7 +11059,15 @@ var CheckoutDialog = () => {
10923
11059
  }
10924
11060
  )
10925
11061
  ] }),
10926
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Flex, { $flexWrap: "wrap", $gap: "1rem", $flexGrow: "1", children: availablePlans?.map((plan) => {
11062
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Flex, { $flexWrap: "wrap", $gap: "1rem", $flexGrow: "1", children: availablePlans.sort((a2, b2) => {
11063
+ if (planPeriod === "year" && a2.yearlyPrice && b2.yearlyPrice) {
11064
+ return a2.yearlyPrice?.price - b2.yearlyPrice?.price;
11065
+ }
11066
+ if (planPeriod === "month" && a2.monthlyPrice && b2.monthlyPrice) {
11067
+ return a2.monthlyPrice.price - b2.monthlyPrice.price;
11068
+ }
11069
+ return 0;
11070
+ }).map((plan) => {
10927
11071
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
10928
11072
  Flex,
10929
11073
  {
@@ -11065,7 +11209,7 @@ var CheckoutDialog = () => {
11065
11209
  {
11066
11210
  disabled: plan.valid === false,
11067
11211
  ...plan.valid === true && {
11068
- onClick: () => setSelectedPlan(plan)
11212
+ onClick: () => selectPlan(plan)
11069
11213
  },
11070
11214
  $size: "sm",
11071
11215
  $color: "primary",
@@ -11180,7 +11324,7 @@ var CheckoutDialog = () => {
11180
11324
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
11181
11325
  Flex,
11182
11326
  {
11183
- onClick: () => setPlanPeriod("month"),
11327
+ onClick: () => changePlanPeriod("month"),
11184
11328
  $justifyContent: "center",
11185
11329
  $alignItems: "center",
11186
11330
  $padding: "0.25rem 0.5rem",
@@ -11204,7 +11348,7 @@ var CheckoutDialog = () => {
11204
11348
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
11205
11349
  Flex,
11206
11350
  {
11207
- onClick: () => setPlanPeriod("year"),
11351
+ onClick: () => changePlanPeriod("year"),
11208
11352
  $justifyContent: "center",
11209
11353
  $alignItems: "center",
11210
11354
  $padding: "0.25rem 0.5rem",
@@ -11246,7 +11390,7 @@ var CheckoutDialog = () => {
11246
11390
  {
11247
11391
  $flexDirection: "column",
11248
11392
  $position: "relative",
11249
- $gap: "1rem",
11393
+ $gap: "0.5rem",
11250
11394
  $width: "100%",
11251
11395
  $height: "auto",
11252
11396
  $padding: "1.5rem",
@@ -11301,14 +11445,14 @@ var CheckoutDialog = () => {
11301
11445
  }
11302
11446
  ) })
11303
11447
  ] }),
11304
- selectedPlan && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
11448
+ selectedPlan && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box, { $marginBottom: "1rem", children: [
11305
11449
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
11306
11450
  Box,
11307
11451
  {
11308
11452
  $width: "100%",
11309
11453
  $textAlign: "left",
11310
11454
  $opacity: "50%",
11311
- $marginBottom: "-0.25rem",
11455
+ $marginBottom: "0.25rem",
11312
11456
  $marginTop: "-0.25rem",
11313
11457
  children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
11314
11458
  Icon2,
@@ -11350,6 +11494,51 @@ var CheckoutDialog = () => {
11350
11494
  ) })
11351
11495
  ] })
11352
11496
  ] })
11497
+ ] }),
11498
+ charges?.proration && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
11499
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box, { $opacity: "0.625", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
11500
+ Text,
11501
+ {
11502
+ $font: theme.typography.text.fontFamily,
11503
+ $size: 14,
11504
+ $weight: theme.typography.text.fontWeight,
11505
+ $color: theme.typography.text.color,
11506
+ children: charges?.proration && charges.proration > 0 ? "Proration" : "Credits"
11507
+ }
11508
+ ) }),
11509
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Flex, { $flexDirection: "column", $gap: "0.5rem", children: currentPlan && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
11510
+ Flex,
11511
+ {
11512
+ $justifyContent: "space-between",
11513
+ $alignItems: "center",
11514
+ $gap: "1rem",
11515
+ children: [
11516
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Flex, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
11517
+ Text,
11518
+ {
11519
+ $font: theme.typography.heading4.fontFamily,
11520
+ $size: theme.typography.heading4.fontSize,
11521
+ $weight: theme.typography.heading4.fontWeight,
11522
+ $color: theme.typography.heading4.color,
11523
+ children: [
11524
+ "Unused time with ",
11525
+ currentPlan.name
11526
+ ]
11527
+ }
11528
+ ) }),
11529
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Flex, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
11530
+ Text,
11531
+ {
11532
+ $font: theme.typography.text.fontFamily,
11533
+ $size: theme.typography.text.fontSize,
11534
+ $weight: theme.typography.text.fontWeight,
11535
+ $color: theme.typography.text.color,
11536
+ children: formatCurrency(charges.proration)
11537
+ }
11538
+ ) })
11539
+ ]
11540
+ }
11541
+ ) })
11353
11542
  ] })
11354
11543
  ]
11355
11544
  }
@@ -11364,7 +11553,7 @@ var CheckoutDialog = () => {
11364
11553
  $height: "auto",
11365
11554
  $padding: "1.5rem",
11366
11555
  children: [
11367
- selectedPlan && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Flex, { $justifyContent: "space-between", children: [
11556
+ selectedPlan && subscriptionPrice && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Flex, { $justifyContent: "space-between", children: [
11368
11557
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box, { $opacity: "0.625", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
11369
11558
  Text,
11370
11559
  {
@@ -11374,8 +11563,7 @@ var CheckoutDialog = () => {
11374
11563
  $color: theme.typography.text.color,
11375
11564
  children: [
11376
11565
  planPeriod === "month" ? "Monthly" : "Yearly",
11377
- " total:",
11378
- " "
11566
+ " total:"
11379
11567
  ]
11380
11568
  }
11381
11569
  ) }),
@@ -11387,15 +11575,35 @@ var CheckoutDialog = () => {
11387
11575
  $weight: theme.typography.text.fontWeight,
11388
11576
  $color: theme.typography.text.color,
11389
11577
  children: [
11390
- formatCurrency(
11391
- (planPeriod === "month" ? selectedPlan.monthlyPrice : selectedPlan.yearlyPrice)?.price ?? 0
11392
- ),
11578
+ subscriptionPrice,
11393
11579
  "/",
11394
11580
  planPeriod
11395
11581
  ]
11396
11582
  }
11397
11583
  ) })
11398
11584
  ] }),
11585
+ charges && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Flex, { $justifyContent: "space-between", children: [
11586
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box, { $opacity: "0.625", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
11587
+ Text,
11588
+ {
11589
+ $font: theme.typography.text.fontFamily,
11590
+ $size: theme.typography.text.fontSize,
11591
+ $weight: theme.typography.text.fontWeight,
11592
+ $color: theme.typography.text.color,
11593
+ children: "Due today:"
11594
+ }
11595
+ ) }),
11596
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
11597
+ Text,
11598
+ {
11599
+ $font: theme.typography.text.fontFamily,
11600
+ $size: theme.typography.text.fontSize,
11601
+ $weight: theme.typography.text.fontWeight,
11602
+ $color: theme.typography.text.color,
11603
+ children: formatCurrency(charges.dueNow)
11604
+ }
11605
+ ) })
11606
+ ] }),
11399
11607
  checkoutStage === "plan" ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
11400
11608
  StyledButton,
11401
11609
  {
@@ -11448,24 +11656,25 @@ var CheckoutDialog = () => {
11448
11656
  children: "Pay now"
11449
11657
  }
11450
11658
  ),
11451
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box, { $opacity: "0.625", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
11659
+ !isLoading && error && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
11452
11660
  Text,
11453
11661
  {
11454
11662
  $font: theme.typography.text.fontFamily,
11455
11663
  $size: theme.typography.text.fontSize,
11456
- $weight: theme.typography.text.fontWeight,
11457
- $color: theme.typography.text.color,
11458
- children: "Discounts & credits applied at checkout"
11664
+ $weight: 500,
11665
+ $color: "#DB6669",
11666
+ children: error
11459
11667
  }
11460
11668
  ) }),
11461
- error && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
11669
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Box, { $opacity: "0.625", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
11462
11670
  Text,
11463
11671
  {
11464
11672
  $font: theme.typography.text.fontFamily,
11465
11673
  $size: theme.typography.text.fontSize,
11466
- $weight: 500,
11467
- $color: "#DB6669",
11468
- children: error
11674
+ $weight: theme.typography.text.fontWeight,
11675
+ $color: theme.typography.text.color,
11676
+ children: checkoutStage === "plan" ? "Discounts & credits applied at checkout" : subscriptionPrice && `You will be billed ${subscriptionPrice} for this subscription
11677
+ every ${planPeriod} on the ${data.subscription?.latestInvoice?.dueDate && formatOrdinal(new Date(data.subscription.latestInvoice.dueDate).getDate())} ${planPeriod === "year" && data.subscription?.latestInvoice?.dueDate ? `of ${getMonthName(data.subscription.latestInvoice.dueDate)}` : ""} unless you unsubscribe.`
11469
11678
  }
11470
11679
  ) })
11471
11680
  ]
@@ -11515,9 +11724,9 @@ var PlanManager = (0, import_react11.forwardRef)(({ children, className, portal,
11515
11724
  const { currentPlan, canChangePlan } = (0, import_react11.useMemo)(() => {
11516
11725
  return {
11517
11726
  currentPlan: data.company?.plan,
11518
- canChangePlan: stripe !== null
11727
+ canChangePlan: data.activePlans.length > 0 && data.stripeEmbed?.publishableKey && data.stripeEmbed?.setupIntentClientSecret && stripe !== null
11519
11728
  };
11520
- }, [data.company, stripe]);
11729
+ }, [data.company, data.activePlans, data.stripeEmbed, stripe]);
11521
11730
  return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { ref, className, children: [
11522
11731
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
11523
11732
  Flex,
@@ -11620,6 +11829,7 @@ var IncludedFeatures = (0, import_react12.forwardRef)(({ className, ...rest }, r
11620
11829
  const props = resolveDesignProps3(rest);
11621
11830
  const theme = nt();
11622
11831
  const { data } = useEmbed();
11832
+ const elements = (0, import_react12.useRef)([]);
11623
11833
  const features = (0, import_react12.useMemo)(() => {
11624
11834
  return (data.featureUsage?.features || []).map(
11625
11835
  ({
@@ -11650,6 +11860,34 @@ var IncludedFeatures = (0, import_react12.forwardRef)(({ className, ...rest }, r
11650
11860
  const isLightBackground = (0, import_react12.useMemo)(() => {
11651
11861
  return hexToHSL(theme.card.background).l > 50;
11652
11862
  }, [theme.card.background]);
11863
+ (0, import_react12.useLayoutEffect)(() => {
11864
+ const assignRows = (parent) => {
11865
+ let isWrapped = true;
11866
+ [...parent.children].forEach((el) => {
11867
+ if (!(el instanceof HTMLElement)) {
11868
+ return;
11869
+ }
11870
+ if (!el.previousElementSibling || el.offsetLeft <= el.previousElementSibling.offsetLeft) {
11871
+ isWrapped = !isWrapped;
11872
+ }
11873
+ if (isWrapped) {
11874
+ el.style.textAlign = "left";
11875
+ } else if (el.previousElementSibling) {
11876
+ el.style.textAlign = "right";
11877
+ }
11878
+ });
11879
+ };
11880
+ elements.current.forEach((el) => {
11881
+ if (!el) return;
11882
+ const observer = new ResizeObserver((entries) => {
11883
+ entries.forEach((entry) => {
11884
+ assignRows(entry.target);
11885
+ });
11886
+ });
11887
+ observer.observe(el);
11888
+ assignRows(el);
11889
+ });
11890
+ }, [elements.current.length]);
11653
11891
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Flex, { ref, className, $flexDirection: "column", $gap: "1.5rem", children: [
11654
11892
  props.header.isVisible && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Box, { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
11655
11893
  Text,
@@ -11671,6 +11909,7 @@ var IncludedFeatures = (0, import_react12.forwardRef)(({ className, ...rest }, r
11671
11909
  /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
11672
11910
  Flex,
11673
11911
  {
11912
+ ref: (el) => elements.current.push(el),
11674
11913
  $flexWrap: "wrap",
11675
11914
  $justifyContent: "space-between",
11676
11915
  $alignItems: "center",
@@ -11699,7 +11938,7 @@ var IncludedFeatures = (0, import_react12.forwardRef)(({ className, ...rest }, r
11699
11938
  }
11700
11939
  ) })
11701
11940
  ] }),
11702
- allocationType === "numeric" && feature?.name && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Box, { $textAlign: "right", children: [
11941
+ allocationType === "numeric" && feature?.name && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Box, { $textAlign: "right", $paddingLeft: "3.5rem", children: [
11703
11942
  props.entitlement.isVisible && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
11704
11943
  Text,
11705
11944
  {
@@ -11709,7 +11948,7 @@ var IncludedFeatures = (0, import_react12.forwardRef)(({ className, ...rest }, r
11709
11948
  $weight: theme.typography[props.entitlement.fontStyle].fontWeight,
11710
11949
  $lineHeight: 1.5,
11711
11950
  $color: theme.typography[props.entitlement.fontStyle].color,
11712
- children: typeof allocation === "number" ? (0, import_pluralize2.default)(feature.name, allocation, true) : `Unlimited ${(0, import_pluralize2.default)(feature.name)}`
11951
+ children: typeof allocation === "number" ? `${formatNumber(allocation)} ${(0, import_pluralize2.default)(feature.name, allocation)}` : `Unlimited ${(0, import_pluralize2.default)(feature.name)}`
11713
11952
  }
11714
11953
  ),
11715
11954
  props.usage.isVisible && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
@@ -11721,7 +11960,7 @@ var IncludedFeatures = (0, import_react12.forwardRef)(({ className, ...rest }, r
11721
11960
  $weight: theme.typography[props.usage.fontStyle].fontWeight,
11722
11961
  $lineHeight: 1.5,
11723
11962
  $color: theme.typography[props.usage.fontStyle].color,
11724
- children: typeof allocation === "number" ? `${usage} of ${allocation} used` : `${usage} used`
11963
+ children: typeof usage === "number" && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_jsx_runtime13.Fragment, { children: typeof allocation === "number" ? `${formatNumber(usage)} of ${formatNumber(allocation)} used` : `${formatNumber(usage)} used` })
11725
11964
  }
11726
11965
  )
11727
11966
  ] })
@@ -11953,14 +12192,19 @@ var UpcomingBill = (0, import_react14.forwardRef)(({ className, ...rest }, ref)
11953
12192
  children: formatCurrency(upcomingInvoice.amountDue)
11954
12193
  }
11955
12194
  ) }),
11956
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Box, { $maxWidth: "10rem", $lineHeight: "1", $textAlign: "right", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
12195
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Box, { $maxWidth: "10rem", $lineHeight: "1", $textAlign: "right", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
11957
12196
  Text,
11958
12197
  {
11959
12198
  $font: theme.typography[props.contractEndDate.fontStyle].fontFamily,
11960
12199
  $size: theme.typography[props.contractEndDate.fontStyle].fontSize,
11961
12200
  $weight: theme.typography[props.contractEndDate.fontStyle].fontWeight,
11962
12201
  $color: theme.typography[props.contractEndDate.fontStyle].color,
11963
- children: "Estimated monthly bill."
12202
+ children: [
12203
+ "Estimated",
12204
+ " ",
12205
+ upcomingInvoice.interval === "year" ? "yearly" : "monthly",
12206
+ " bill."
12207
+ ]
11964
12208
  }
11965
12209
  ) })
11966
12210
  ] })
@@ -12069,16 +12313,16 @@ var Invoices = (0, import_react15.forwardRef)(({ className, ...rest }, ref) => {
12069
12313
  });
12070
12314
 
12071
12315
  // src/components/embed/ComponentTree.tsx
12072
- var import_react23 = require("react");
12316
+ var import_react22 = require("react");
12073
12317
 
12074
12318
  // src/components/embed/renderer.ts
12075
- var import_react22 = require("react");
12319
+ var import_react21 = require("react");
12076
12320
 
12077
12321
  // src/components/layout/root/Root.tsx
12078
12322
  var import_react16 = require("react");
12079
12323
  var import_jsx_runtime17 = require("react/jsx-runtime");
12080
12324
  var Root = (0, import_react16.forwardRef)(
12081
- (props, ref) => {
12325
+ ({ data, settings, ...props }, ref) => {
12082
12326
  return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { ref, ...props });
12083
12327
  }
12084
12328
  );
@@ -12092,56 +12336,135 @@ var StyledViewport = dt.div`
12092
12336
  flex-wrap: wrap;
12093
12337
  margin-left: auto;
12094
12338
  margin-right: auto;
12339
+ gap: 1rem;
12095
12340
  `;
12096
12341
 
12097
12342
  // src/components/layout/RenderLayout.tsx
12098
- var import_react17 = require("react");
12099
12343
  var import_react18 = require("react");
12344
+
12345
+ // src/components/layout/card/Card.tsx
12346
+ var import_react17 = require("react");
12347
+
12348
+ // src/components/layout/card/styles.ts
12349
+ var StyledCard = dt.div(
12350
+ ({
12351
+ theme,
12352
+ $sectionLayout = "merged",
12353
+ $borderRadius = 8,
12354
+ $padding = 48,
12355
+ $shadow = true
12356
+ }) => {
12357
+ return lt`
12358
+ box-sizing: border-box;
12359
+ font-size: ${TEXT_BASE_SIZE}px;
12360
+
12361
+ *,
12362
+ *::before,
12363
+ *::after {
12364
+ box-sizing: inherit;
12365
+ }
12366
+
12367
+ > * {
12368
+ padding: ${$padding * 0.75 / TEXT_BASE_SIZE}rem
12369
+ ${$padding / TEXT_BASE_SIZE}rem;
12370
+ color: ${theme.typography.text.color};
12371
+ }
12372
+
12373
+ ${() => {
12374
+ const { l: l2 } = hexToHSL(theme.card.background);
12375
+ const borderColor = l2 > 50 ? "hsla(0, 0%, 0%, 0.1)" : "hsla(0, 0%, 100%, 0.2)";
12376
+ const borderRadius = `${$borderRadius / TEXT_BASE_SIZE}rem`;
12377
+ const boxShadow = "0px 1px 20px 0px #1018280F, 0px 1px 3px 0px #1018281A";
12378
+ if ($sectionLayout === "merged") {
12379
+ return lt`
12380
+ background: ${({ theme: theme2 }) => theme2.card.background};
12381
+ border-radius: ${borderRadius};
12382
+
12383
+ ${$shadow && `box-shadow: ${boxShadow};`}
12384
+
12385
+ > :not(:last-child) {
12386
+ border-bottom: 1px solid ${borderColor};
12387
+ }
12388
+ `;
12389
+ }
12390
+ return lt`
12391
+ > :not(:last-child) {
12392
+ margin-bottom: 1rem;
12393
+ }
12394
+
12395
+ > * {
12396
+ background: ${theme.card.background};
12397
+ border-radius: ${borderRadius};
12398
+ ${$shadow && `box-shadow: ${boxShadow};`}
12399
+ }
12400
+ `;
12401
+ }}
12402
+ `;
12403
+ }
12404
+ );
12405
+
12406
+ // src/components/layout/card/Card.tsx
12100
12407
  var import_jsx_runtime18 = require("react/jsx-runtime");
12101
- var DisabledState = () => {
12408
+ var Card = (0, import_react17.forwardRef)(
12409
+ ({ children, className }, ref) => {
12410
+ const theme = nt();
12411
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12412
+ StyledCard,
12413
+ {
12414
+ ref,
12415
+ className,
12416
+ $sectionLayout: theme?.sectionLayout,
12417
+ $borderRadius: theme?.card?.borderRadius,
12418
+ $padding: theme?.card?.padding,
12419
+ $shadow: theme?.card?.hasShadow,
12420
+ children
12421
+ }
12422
+ );
12423
+ }
12424
+ );
12425
+
12426
+ // src/components/layout/RenderLayout.tsx
12427
+ var import_jsx_runtime19 = require("react/jsx-runtime");
12428
+ var Disabled = () => {
12102
12429
  const theme = nt();
12103
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Box, { $width: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
12430
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Box, { $width: "max-content", $height: "max-content", $margin: "0 auto", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
12104
12431
  Flex,
12105
12432
  {
12106
12433
  $flexDirection: "column",
12107
- $padding: `${theme.card.padding / TEXT_BASE_SIZE}rem`,
12108
- $width: "100%",
12109
- $height: "auto",
12110
- $borderRadius: `${theme.card.borderRadius / TEXT_BASE_SIZE}rem`,
12111
- $backgroundColor: theme.card.background,
12112
- $alignItems: "center",
12113
12434
  $justifyContent: "center",
12435
+ $alignItems: "center",
12436
+ $whiteSpace: "nowrap",
12114
12437
  children: [
12115
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12116
- Box,
12438
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Box, { $marginBottom: "0.5rem", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12439
+ Text,
12117
12440
  {
12118
- $marginBottom: "8px",
12119
- $fontSize: `${theme.typography.heading1.fontSize / TEXT_BASE_SIZE}rem`,
12120
- $fontFamily: theme.typography.heading1.fontFamily,
12121
- $fontWeight: theme.typography.heading1.fontWeight,
12441
+ as: "h1",
12442
+ $font: theme.typography.heading1.fontFamily,
12443
+ $size: theme.typography.heading1.fontSize,
12444
+ $weight: theme.typography.heading1.fontWeight,
12122
12445
  $color: theme.typography.heading1.color,
12123
- children: "Coming soon"
12446
+ children: "Portal not found"
12124
12447
  }
12125
- ),
12126
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12127
- Box,
12448
+ ) }),
12449
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12450
+ Text,
12128
12451
  {
12129
- $marginBottom: "8px",
12130
- $fontSize: `${theme.typography.text.fontSize / TEXT_BASE_SIZE}rem`,
12131
- $fontFamily: theme.typography.text.fontFamily,
12132
- $fontWeight: theme.typography.text.fontWeight,
12452
+ as: "p",
12453
+ $font: theme.typography.text.fontFamily,
12454
+ $size: theme.typography.text.fontSize,
12455
+ $weight: theme.typography.text.fontWeight,
12133
12456
  $color: theme.typography.text.color,
12134
- children: "The plan manager will be back very soon."
12457
+ children: "Please try again later."
12135
12458
  }
12136
12459
  )
12137
12460
  ]
12138
12461
  }
12139
- ) });
12462
+ ) }) });
12140
12463
  };
12141
- var SuccessState = () => {
12142
- const [isOpen, setIsOpen] = (0, import_react17.useState)(true);
12464
+ var Success = () => {
12143
12465
  const theme = nt();
12144
12466
  const { hydrate, data, api, setLayout, isPending } = useEmbed();
12467
+ const [isOpen, setIsOpen] = (0, import_react18.useState)(true);
12145
12468
  (0, import_react18.useEffect)(() => {
12146
12469
  if (api && data.component?.id) {
12147
12470
  hydrate();
@@ -12153,31 +12476,23 @@ var SuccessState = () => {
12153
12476
  setLayout("portal");
12154
12477
  }
12155
12478
  }, [isPending, isOpen, setLayout]);
12156
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
12479
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Box, { $width: "max-content", $height: "max-content", $margin: "0 auto", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Card, { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
12157
12480
  Flex,
12158
12481
  {
12159
12482
  $flexDirection: "column",
12160
12483
  $justifyContent: "center",
12161
12484
  $alignItems: "center",
12162
- $gap: `${32 / TEXT_BASE_SIZE}rem`,
12163
- $width: "min-content",
12164
- $height: "min-content",
12165
- $margin: "auto",
12166
- $padding: `${theme.card.padding / TEXT_BASE_SIZE}rem ${theme.card.padding * 1.5 / TEXT_BASE_SIZE}rem`,
12167
12485
  $whiteSpace: "nowrap",
12168
- $backgroundColor: theme.card.background,
12169
- $borderRadius: "0.5rem",
12170
- $boxShadow: "0px 1px 20px 0px #1018280F, 0px 1px 3px 0px #1018281A;",
12171
12486
  children: [
12172
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12487
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Box, { $marginBottom: "1.5rem", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12173
12488
  IconRound,
12174
12489
  {
12175
12490
  name: "check",
12176
12491
  size: "3xl",
12177
12492
  colors: [theme.card.background, theme.primary]
12178
12493
  }
12179
- ),
12180
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12494
+ ) }),
12495
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Box, { $marginBottom: "0.5rem", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12181
12496
  Text,
12182
12497
  {
12183
12498
  as: "h1",
@@ -12187,8 +12502,8 @@ var SuccessState = () => {
12187
12502
  $color: theme.typography.heading1.color,
12188
12503
  children: "Subscription updated!"
12189
12504
  }
12190
- ),
12191
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12505
+ ) }),
12506
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12192
12507
  Text,
12193
12508
  {
12194
12509
  as: "p",
@@ -12196,136 +12511,54 @@ var SuccessState = () => {
12196
12511
  $size: theme.typography.text.fontSize,
12197
12512
  $weight: theme.typography.text.fontWeight,
12198
12513
  $color: theme.typography.text.color,
12199
- children: "Loading..."
12514
+ children: "Loading\u2026"
12200
12515
  }
12201
12516
  )
12202
12517
  ]
12203
12518
  }
12204
- );
12519
+ ) }) });
12205
12520
  };
12206
12521
  var RenderLayout = ({ children }) => {
12207
12522
  const { layout } = useEmbed();
12208
12523
  switch (layout) {
12209
12524
  case "disabled":
12210
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DisabledState, {});
12525
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Disabled, {});
12211
12526
  case "success":
12212
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SuccessState, {});
12527
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Success, {});
12213
12528
  default:
12214
12529
  return children;
12215
12530
  }
12216
12531
  };
12217
12532
 
12218
12533
  // src/components/layout/viewport/Viewport.tsx
12219
- var import_jsx_runtime19 = require("react/jsx-runtime");
12534
+ var import_jsx_runtime20 = require("react/jsx-runtime");
12220
12535
  var Viewport = (0, import_react19.forwardRef)(
12221
12536
  ({ children, ...props }, ref) => {
12222
12537
  const theme = nt();
12223
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12538
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
12224
12539
  StyledViewport,
12225
12540
  {
12226
12541
  ref,
12227
12542
  $numberOfColumns: theme.numberOfColumns,
12228
12543
  ...props,
12229
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(RenderLayout, { children })
12544
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(RenderLayout, { children })
12230
12545
  }
12231
12546
  );
12232
12547
  }
12233
12548
  );
12234
12549
 
12235
12550
  // src/components/layout/column/Column.tsx
12236
- var import_react21 = require("react");
12237
-
12238
- // src/components/layout/card/Card.tsx
12239
12551
  var import_react20 = require("react");
12240
12552
 
12241
- // src/components/layout/card/styles.ts
12242
- var StyledCard = dt.div(
12243
- ({
12244
- theme,
12245
- $sectionLayout = "merged",
12246
- $borderRadius = 8,
12247
- $padding = 48,
12248
- $shadow = true
12249
- }) => {
12250
- return lt`
12251
- box-sizing: border-box;
12252
- font-size: ${TEXT_BASE_SIZE}px;
12253
-
12254
- *,
12255
- *::before,
12256
- *::after {
12257
- box-sizing: inherit;
12258
- }
12259
-
12260
- > * {
12261
- padding: ${$padding * 0.75 / TEXT_BASE_SIZE}rem
12262
- ${$padding / TEXT_BASE_SIZE}rem;
12263
- color: ${theme.typography.text.color};
12264
- }
12265
-
12266
- ${() => {
12267
- const { l: l2 } = hexToHSL(theme.card.background);
12268
- const borderColor = l2 > 50 ? "hsla(0, 0%, 0%, 0.1)" : "hsla(0, 0%, 100%, 0.2)";
12269
- const borderRadius = `${$borderRadius / TEXT_BASE_SIZE}rem`;
12270
- const boxShadow = "0px 1px 20px 0px #1018280F, 0px 1px 3px 0px #1018281A";
12271
- if ($sectionLayout === "merged") {
12272
- return lt`
12273
- background: ${({ theme: theme2 }) => theme2.card.background};
12274
- border-radius: ${borderRadius};
12275
-
12276
- ${$shadow && `box-shadow: ${boxShadow};`}
12277
-
12278
- > :not(:last-child) {
12279
- border-bottom: 1px solid ${borderColor};
12280
- }
12281
- `;
12282
- }
12283
- return lt`
12284
- > :not(:last-child) {
12285
- margin-bottom: 1rem;
12286
- }
12287
-
12288
- > * {
12289
- background: ${theme.card.background};
12290
- border-radius: ${borderRadius};
12291
- ${$shadow && `box-shadow: ${boxShadow};`}
12292
- }
12293
- `;
12294
- }}
12295
- `;
12296
- }
12297
- );
12298
-
12299
- // src/components/layout/card/Card.tsx
12300
- var import_jsx_runtime20 = require("react/jsx-runtime");
12301
- var Card = (0, import_react20.forwardRef)(
12302
- ({ children, className }, ref) => {
12303
- const theme = nt();
12304
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
12305
- StyledCard,
12306
- {
12307
- ref,
12308
- className,
12309
- $sectionLayout: theme?.sectionLayout,
12310
- $borderRadius: theme?.card?.borderRadius,
12311
- $padding: theme?.card?.padding,
12312
- $shadow: theme?.card?.hasShadow,
12313
- children
12314
- }
12315
- );
12316
- }
12317
- );
12318
-
12319
12553
  // src/components/layout/column/styles.ts
12320
12554
  var StyledColumn = dt.div`
12321
12555
  flex-grow: 1;
12322
- padding: 0.75rem;
12323
12556
  `;
12324
12557
 
12325
12558
  // src/components/layout/column/Column.tsx
12326
12559
  var import_jsx_runtime21 = require("react/jsx-runtime");
12327
- var Column = (0, import_react21.forwardRef)(
12328
- ({ children, ...props }, ref) => {
12560
+ var Column = (0, import_react20.forwardRef)(
12561
+ ({ children, basis, ...props }, ref) => {
12329
12562
  return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(StyledColumn, { ref, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Card, { children }) });
12330
12563
  }
12331
12564
  );
@@ -12344,7 +12577,7 @@ var components = {
12344
12577
  function createRenderer(options) {
12345
12578
  const { useFallback = false } = options || {};
12346
12579
  return function renderNode(node2, index) {
12347
- const { type, props = {}, custom = {}, children } = node2;
12580
+ const { type, props = {}, children } = node2;
12348
12581
  const name = typeof type !== "string" ? type.resolvedName : type;
12349
12582
  const component = useFallback ? components[name] || "div" : components[name];
12350
12583
  if (!components[name]) {
@@ -12359,13 +12592,12 @@ function createRenderer(options) {
12359
12592
  const { className, ...rest } = props;
12360
12593
  const resolvedProps = component === "div" ? rest : props;
12361
12594
  const resolvedChildren = children.map(renderNode);
12362
- return (0, import_react22.createElement)(
12595
+ return (0, import_react21.createElement)(
12363
12596
  component,
12364
12597
  {
12598
+ key: index,
12365
12599
  className,
12366
- ...component !== "div" && { ...resolvedProps },
12367
- ...component !== "div" && Object.keys(custom).length > 0 && { custom },
12368
- key: index
12600
+ ...component !== "div" && { ...resolvedProps }
12369
12601
  },
12370
12602
  resolvedChildren
12371
12603
  );
@@ -12430,15 +12662,15 @@ var Error2 = ({ message }) => {
12430
12662
  };
12431
12663
  var ComponentTree = () => {
12432
12664
  const { error, nodes } = useEmbed();
12433
- const [children, setChildren] = (0, import_react23.useState)(/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Loading, {}));
12434
- (0, import_react23.useEffect)(() => {
12665
+ const [children, setChildren] = (0, import_react22.useState)(/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Loading, {}));
12666
+ (0, import_react22.useEffect)(() => {
12435
12667
  const renderer = createRenderer();
12436
12668
  setChildren(nodes.map(renderer));
12437
12669
  }, [nodes]);
12438
12670
  if (error) {
12439
12671
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Error2, { message: error.message });
12440
12672
  }
12441
- if (import_react23.Children.count(children) === 0) {
12673
+ if (import_react22.Children.count(children) === 0) {
12442
12674
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Loading, {});
12443
12675
  }
12444
12676
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_jsx_runtime22.Fragment, { children });