@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.
- package/dist/schematic-react.cjs.js +411 -179
- package/dist/schematic-react.d.ts +73 -1
- package/dist/schematic-react.esm.js +413 -181
- package/package.json +1 -1
@@ -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: "
|
10705
|
-
current_year: "
|
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
|
-
|
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
|
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: () =>
|
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: () =>
|
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: () =>
|
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: "
|
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)(
|
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: "
|
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
|
-
|
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, {
|
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:
|
11457
|
-
$color:
|
11458
|
-
children:
|
11664
|
+
$weight: 500,
|
11665
|
+
$color: "#DB6669",
|
11666
|
+
children: error
|
11459
11667
|
}
|
11460
11668
|
) }),
|
11461
|
-
|
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:
|
11467
|
-
$color:
|
11468
|
-
children:
|
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
|
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.
|
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:
|
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
|
12316
|
+
var import_react22 = require("react");
|
12073
12317
|
|
12074
12318
|
// src/components/embed/renderer.ts
|
12075
|
-
var
|
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
|
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,
|
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,
|
12116
|
-
|
12438
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Box, { $marginBottom: "0.5rem", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
12439
|
+
Text,
|
12117
12440
|
{
|
12118
|
-
|
12119
|
-
$
|
12120
|
-
$
|
12121
|
-
$
|
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: "
|
12446
|
+
children: "Portal not found"
|
12124
12447
|
}
|
12125
|
-
),
|
12126
|
-
/* @__PURE__ */ (0,
|
12127
|
-
|
12448
|
+
) }),
|
12449
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
12450
|
+
Text,
|
12128
12451
|
{
|
12129
|
-
|
12130
|
-
$
|
12131
|
-
$
|
12132
|
-
$
|
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: "
|
12457
|
+
children: "Please try again later."
|
12135
12458
|
}
|
12136
12459
|
)
|
12137
12460
|
]
|
12138
12461
|
}
|
12139
|
-
) });
|
12462
|
+
) }) });
|
12140
12463
|
};
|
12141
|
-
var
|
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,
|
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,
|
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,
|
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,
|
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,
|
12525
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Disabled, {});
|
12211
12526
|
case "success":
|
12212
|
-
return /* @__PURE__ */ (0,
|
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
|
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,
|
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,
|
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,
|
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 = {},
|
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,
|
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,
|
12434
|
-
(0,
|
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 (
|
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 });
|