@schematichq/schematic-components 0.5.0 → 0.6.0

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.
@@ -1664,78 +1664,18 @@ var require_merge = __commonJS({
1664
1664
  }
1665
1665
  });
1666
1666
 
1667
- // node_modules/classnames/index.js
1668
- var require_classnames = __commonJS({
1669
- "node_modules/classnames/index.js"(exports, module2) {
1670
- (function() {
1671
- "use strict";
1672
- var hasOwn = {}.hasOwnProperty;
1673
- function classNames() {
1674
- var classes = "";
1675
- for (var i2 = 0; i2 < arguments.length; i2++) {
1676
- var arg = arguments[i2];
1677
- if (arg) {
1678
- classes = appendClass(classes, parseValue(arg));
1679
- }
1680
- }
1681
- return classes;
1682
- }
1683
- function parseValue(arg) {
1684
- if (typeof arg === "string" || typeof arg === "number") {
1685
- return arg;
1686
- }
1687
- if (typeof arg !== "object") {
1688
- return "";
1689
- }
1690
- if (Array.isArray(arg)) {
1691
- return classNames.apply(null, arg);
1692
- }
1693
- if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes("[native code]")) {
1694
- return arg.toString();
1695
- }
1696
- var classes = "";
1697
- for (var key in arg) {
1698
- if (hasOwn.call(arg, key) && arg[key]) {
1699
- classes = appendClass(classes, key);
1700
- }
1701
- }
1702
- return classes;
1703
- }
1704
- function appendClass(value, newClass) {
1705
- if (!newClass) {
1706
- return value;
1707
- }
1708
- if (value) {
1709
- return value + " " + newClass;
1710
- }
1711
- return value + newClass;
1712
- }
1713
- if (typeof module2 !== "undefined" && module2.exports) {
1714
- classNames.default = classNames;
1715
- module2.exports = classNames;
1716
- } else if (typeof define === "function" && typeof define.amd === "object" && define.amd) {
1717
- define("classnames", [], function() {
1718
- return classNames;
1719
- });
1720
- } else {
1721
- window.classNames = classNames;
1722
- }
1723
- })();
1724
- }
1725
- });
1726
-
1727
1667
  // node_modules/pluralize/pluralize.js
1728
1668
  var require_pluralize = __commonJS({
1729
1669
  "node_modules/pluralize/pluralize.js"(exports, module2) {
1730
- (function(root, pluralize8) {
1670
+ (function(root, pluralize2) {
1731
1671
  if (typeof require === "function" && typeof exports === "object" && typeof module2 === "object") {
1732
- module2.exports = pluralize8();
1672
+ module2.exports = pluralize2();
1733
1673
  } else if (typeof define === "function" && define.amd) {
1734
1674
  define(function() {
1735
- return pluralize8();
1675
+ return pluralize2();
1736
1676
  });
1737
1677
  } else {
1738
- root.pluralize = pluralize8();
1678
+ root.pluralize = pluralize2();
1739
1679
  }
1740
1680
  })(exports, function() {
1741
1681
  var pluralRules = [];
@@ -1803,45 +1743,45 @@ var require_pluralize = __commonJS({
1803
1743
  return sanitizeWord(token2, token2, rules) === token2;
1804
1744
  };
1805
1745
  }
1806
- function pluralize8(word, count, inclusive) {
1807
- var pluralized = count === 1 ? pluralize8.singular(word) : pluralize8.plural(word);
1746
+ function pluralize2(word, count, inclusive) {
1747
+ var pluralized = count === 1 ? pluralize2.singular(word) : pluralize2.plural(word);
1808
1748
  return (inclusive ? count + " " : "") + pluralized;
1809
1749
  }
1810
- pluralize8.plural = replaceWord(
1750
+ pluralize2.plural = replaceWord(
1811
1751
  irregularSingles,
1812
1752
  irregularPlurals,
1813
1753
  pluralRules
1814
1754
  );
1815
- pluralize8.isPlural = checkWord(
1755
+ pluralize2.isPlural = checkWord(
1816
1756
  irregularSingles,
1817
1757
  irregularPlurals,
1818
1758
  pluralRules
1819
1759
  );
1820
- pluralize8.singular = replaceWord(
1760
+ pluralize2.singular = replaceWord(
1821
1761
  irregularPlurals,
1822
1762
  irregularSingles,
1823
1763
  singularRules
1824
1764
  );
1825
- pluralize8.isSingular = checkWord(
1765
+ pluralize2.isSingular = checkWord(
1826
1766
  irregularPlurals,
1827
1767
  irregularSingles,
1828
1768
  singularRules
1829
1769
  );
1830
- pluralize8.addPluralRule = function(rule, replacement) {
1770
+ pluralize2.addPluralRule = function(rule, replacement) {
1831
1771
  pluralRules.push([sanitizeRule(rule), replacement]);
1832
1772
  };
1833
- pluralize8.addSingularRule = function(rule, replacement) {
1773
+ pluralize2.addSingularRule = function(rule, replacement) {
1834
1774
  singularRules.push([sanitizeRule(rule), replacement]);
1835
1775
  };
1836
- pluralize8.addUncountableRule = function(word) {
1776
+ pluralize2.addUncountableRule = function(word) {
1837
1777
  if (typeof word === "string") {
1838
1778
  uncountables[word.toLowerCase()] = true;
1839
1779
  return;
1840
1780
  }
1841
- pluralize8.addPluralRule(word, "$0");
1842
- pluralize8.addSingularRule(word, "$0");
1781
+ pluralize2.addPluralRule(word, "$0");
1782
+ pluralize2.addSingularRule(word, "$0");
1843
1783
  };
1844
- pluralize8.addIrregularRule = function(single, plural) {
1784
+ pluralize2.addIrregularRule = function(single, plural) {
1845
1785
  plural = plural.toLowerCase();
1846
1786
  single = single.toLowerCase();
1847
1787
  irregularSingles[single] = plural;
@@ -1901,7 +1841,7 @@ var require_pluralize = __commonJS({
1901
1841
  ["pickaxe", "pickaxes"],
1902
1842
  ["passerby", "passersby"]
1903
1843
  ].forEach(function(rule) {
1904
- return pluralize8.addIrregularRule(rule[0], rule[1]);
1844
+ return pluralize2.addIrregularRule(rule[0], rule[1]);
1905
1845
  });
1906
1846
  [
1907
1847
  [/s?$/i, "s"],
@@ -1930,7 +1870,7 @@ var require_pluralize = __commonJS({
1930
1870
  [/m[ae]n$/i, "men"],
1931
1871
  ["thou", "you"]
1932
1872
  ].forEach(function(rule) {
1933
- return pluralize8.addPluralRule(rule[0], rule[1]);
1873
+ return pluralize2.addPluralRule(rule[0], rule[1]);
1934
1874
  });
1935
1875
  [
1936
1876
  [/s$/i, ""],
@@ -1957,7 +1897,7 @@ var require_pluralize = __commonJS({
1957
1897
  [/(eau)x?$/i, "$1"],
1958
1898
  [/men$/i, "man"]
1959
1899
  ].forEach(function(rule) {
1960
- return pluralize8.addSingularRule(rule[0], rule[1]);
1900
+ return pluralize2.addSingularRule(rule[0], rule[1]);
1961
1901
  });
1962
1902
  [
1963
1903
  // Singular words with no plurals.
@@ -2069,12 +2009,249 @@ var require_pluralize = __commonJS({
2069
2009
  /pox$/i,
2070
2010
  // "chickpox", "smallpox"
2071
2011
  /sheep$/i
2072
- ].forEach(pluralize8.addUncountableRule);
2073
- return pluralize8;
2012
+ ].forEach(pluralize2.addUncountableRule);
2013
+ return pluralize2;
2074
2014
  });
2075
2015
  }
2076
2016
  });
2077
2017
 
2018
+ // node_modules/classnames/index.js
2019
+ var require_classnames = __commonJS({
2020
+ "node_modules/classnames/index.js"(exports, module2) {
2021
+ (function() {
2022
+ "use strict";
2023
+ var hasOwn = {}.hasOwnProperty;
2024
+ function classNames() {
2025
+ var classes = "";
2026
+ for (var i2 = 0; i2 < arguments.length; i2++) {
2027
+ var arg = arguments[i2];
2028
+ if (arg) {
2029
+ classes = appendClass(classes, parseValue(arg));
2030
+ }
2031
+ }
2032
+ return classes;
2033
+ }
2034
+ function parseValue(arg) {
2035
+ if (typeof arg === "string" || typeof arg === "number") {
2036
+ return arg;
2037
+ }
2038
+ if (typeof arg !== "object") {
2039
+ return "";
2040
+ }
2041
+ if (Array.isArray(arg)) {
2042
+ return classNames.apply(null, arg);
2043
+ }
2044
+ if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes("[native code]")) {
2045
+ return arg.toString();
2046
+ }
2047
+ var classes = "";
2048
+ for (var key in arg) {
2049
+ if (hasOwn.call(arg, key) && arg[key]) {
2050
+ classes = appendClass(classes, key);
2051
+ }
2052
+ }
2053
+ return classes;
2054
+ }
2055
+ function appendClass(value, newClass) {
2056
+ if (!newClass) {
2057
+ return value;
2058
+ }
2059
+ if (value) {
2060
+ return value + " " + newClass;
2061
+ }
2062
+ return value + newClass;
2063
+ }
2064
+ if (typeof module2 !== "undefined" && module2.exports) {
2065
+ classNames.default = classNames;
2066
+ module2.exports = classNames;
2067
+ } else if (typeof define === "function" && typeof define.amd === "object" && define.amd) {
2068
+ define("classnames", [], function() {
2069
+ return classNames;
2070
+ });
2071
+ } else {
2072
+ window.classNames = classNames;
2073
+ }
2074
+ })();
2075
+ }
2076
+ });
2077
+
2078
+ // node_modules/lodash/now.js
2079
+ var require_now = __commonJS({
2080
+ "node_modules/lodash/now.js"(exports, module2) {
2081
+ var root = require_root();
2082
+ var now = function() {
2083
+ return root.Date.now();
2084
+ };
2085
+ module2.exports = now;
2086
+ }
2087
+ });
2088
+
2089
+ // node_modules/lodash/_trimmedEndIndex.js
2090
+ var require_trimmedEndIndex = __commonJS({
2091
+ "node_modules/lodash/_trimmedEndIndex.js"(exports, module2) {
2092
+ var reWhitespace = /\s/;
2093
+ function trimmedEndIndex(string) {
2094
+ var index = string.length;
2095
+ while (index-- && reWhitespace.test(string.charAt(index))) {
2096
+ }
2097
+ return index;
2098
+ }
2099
+ module2.exports = trimmedEndIndex;
2100
+ }
2101
+ });
2102
+
2103
+ // node_modules/lodash/_baseTrim.js
2104
+ var require_baseTrim = __commonJS({
2105
+ "node_modules/lodash/_baseTrim.js"(exports, module2) {
2106
+ var trimmedEndIndex = require_trimmedEndIndex();
2107
+ var reTrimStart = /^\s+/;
2108
+ function baseTrim(string) {
2109
+ return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string;
2110
+ }
2111
+ module2.exports = baseTrim;
2112
+ }
2113
+ });
2114
+
2115
+ // node_modules/lodash/isSymbol.js
2116
+ var require_isSymbol = __commonJS({
2117
+ "node_modules/lodash/isSymbol.js"(exports, module2) {
2118
+ var baseGetTag = require_baseGetTag();
2119
+ var isObjectLike = require_isObjectLike();
2120
+ var symbolTag = "[object Symbol]";
2121
+ function isSymbol(value) {
2122
+ return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag;
2123
+ }
2124
+ module2.exports = isSymbol;
2125
+ }
2126
+ });
2127
+
2128
+ // node_modules/lodash/toNumber.js
2129
+ var require_toNumber = __commonJS({
2130
+ "node_modules/lodash/toNumber.js"(exports, module2) {
2131
+ var baseTrim = require_baseTrim();
2132
+ var isObject2 = require_isObject();
2133
+ var isSymbol = require_isSymbol();
2134
+ var NAN = 0 / 0;
2135
+ var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
2136
+ var reIsBinary = /^0b[01]+$/i;
2137
+ var reIsOctal = /^0o[0-7]+$/i;
2138
+ var freeParseInt = parseInt;
2139
+ function toNumber(value) {
2140
+ if (typeof value == "number") {
2141
+ return value;
2142
+ }
2143
+ if (isSymbol(value)) {
2144
+ return NAN;
2145
+ }
2146
+ if (isObject2(value)) {
2147
+ var other = typeof value.valueOf == "function" ? value.valueOf() : value;
2148
+ value = isObject2(other) ? other + "" : other;
2149
+ }
2150
+ if (typeof value != "string") {
2151
+ return value === 0 ? value : +value;
2152
+ }
2153
+ value = baseTrim(value);
2154
+ var isBinary = reIsBinary.test(value);
2155
+ return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
2156
+ }
2157
+ module2.exports = toNumber;
2158
+ }
2159
+ });
2160
+
2161
+ // node_modules/lodash/debounce.js
2162
+ var require_debounce = __commonJS({
2163
+ "node_modules/lodash/debounce.js"(exports, module2) {
2164
+ var isObject2 = require_isObject();
2165
+ var now = require_now();
2166
+ var toNumber = require_toNumber();
2167
+ var FUNC_ERROR_TEXT = "Expected a function";
2168
+ var nativeMax = Math.max;
2169
+ var nativeMin = Math.min;
2170
+ function debounce2(func, wait, options) {
2171
+ var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
2172
+ if (typeof func != "function") {
2173
+ throw new TypeError(FUNC_ERROR_TEXT);
2174
+ }
2175
+ wait = toNumber(wait) || 0;
2176
+ if (isObject2(options)) {
2177
+ leading = !!options.leading;
2178
+ maxing = "maxWait" in options;
2179
+ maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
2180
+ trailing = "trailing" in options ? !!options.trailing : trailing;
2181
+ }
2182
+ function invokeFunc(time) {
2183
+ var args = lastArgs, thisArg = lastThis;
2184
+ lastArgs = lastThis = void 0;
2185
+ lastInvokeTime = time;
2186
+ result = func.apply(thisArg, args);
2187
+ return result;
2188
+ }
2189
+ function leadingEdge(time) {
2190
+ lastInvokeTime = time;
2191
+ timerId = setTimeout(timerExpired, wait);
2192
+ return leading ? invokeFunc(time) : result;
2193
+ }
2194
+ function remainingWait(time) {
2195
+ var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
2196
+ return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
2197
+ }
2198
+ function shouldInvoke(time) {
2199
+ var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
2200
+ return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
2201
+ }
2202
+ function timerExpired() {
2203
+ var time = now();
2204
+ if (shouldInvoke(time)) {
2205
+ return trailingEdge(time);
2206
+ }
2207
+ timerId = setTimeout(timerExpired, remainingWait(time));
2208
+ }
2209
+ function trailingEdge(time) {
2210
+ timerId = void 0;
2211
+ if (trailing && lastArgs) {
2212
+ return invokeFunc(time);
2213
+ }
2214
+ lastArgs = lastThis = void 0;
2215
+ return result;
2216
+ }
2217
+ function cancel() {
2218
+ if (timerId !== void 0) {
2219
+ clearTimeout(timerId);
2220
+ }
2221
+ lastInvokeTime = 0;
2222
+ lastArgs = lastCallTime = lastThis = timerId = void 0;
2223
+ }
2224
+ function flush() {
2225
+ return timerId === void 0 ? result : trailingEdge(now());
2226
+ }
2227
+ function debounced() {
2228
+ var time = now(), isInvoking = shouldInvoke(time);
2229
+ lastArgs = arguments;
2230
+ lastThis = this;
2231
+ lastCallTime = time;
2232
+ if (isInvoking) {
2233
+ if (timerId === void 0) {
2234
+ return leadingEdge(lastCallTime);
2235
+ }
2236
+ if (maxing) {
2237
+ clearTimeout(timerId);
2238
+ timerId = setTimeout(timerExpired, wait);
2239
+ return invokeFunc(lastCallTime);
2240
+ }
2241
+ }
2242
+ if (timerId === void 0) {
2243
+ timerId = setTimeout(timerExpired, wait);
2244
+ }
2245
+ return result;
2246
+ }
2247
+ debounced.cancel = cancel;
2248
+ debounced.flush = flush;
2249
+ return debounced;
2250
+ }
2251
+ module2.exports = debounce2;
2252
+ }
2253
+ });
2254
+
2078
2255
  // src/index.ts
2079
2256
  var index_exports = {};
2080
2257
  __export(index_exports, {
@@ -2106,6 +2283,7 @@ __export(index_exports, {
2106
2283
  SchematicEmbed: () => SchematicEmbed,
2107
2284
  StyledCard: () => StyledCard,
2108
2285
  Text: () => Text,
2286
+ TextPropNames: () => TextPropNames,
2109
2287
  Tooltip: () => Tooltip,
2110
2288
  UnsubscribeButton: () => UnsubscribeButton,
2111
2289
  UpcomingBill: () => UpcomingBill,
@@ -3104,7 +3282,7 @@ var unitlessKeys = {
3104
3282
  var f = "undefined" != typeof process && void 0 !== process.env && (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR) || "data-styled";
3105
3283
  var m = "active";
3106
3284
  var y = "data-styled-version";
3107
- var v = "6.1.15";
3285
+ var v = "6.1.16";
3108
3286
  var g = "/*!sc*/\n";
3109
3287
  var S = "undefined" != typeof window && "HTMLElement" in window;
3110
3288
  var w = Boolean("boolean" == typeof SC_DISABLE_SPEEDY ? SC_DISABLE_SPEEDY : "undefined" != typeof process && void 0 !== process.env && void 0 !== process.env.REACT_APP_SC_DISABLE_SPEEDY && "" !== process.env.REACT_APP_SC_DISABLE_SPEEDY ? "false" !== process.env.REACT_APP_SC_DISABLE_SPEEDY && process.env.REACT_APP_SC_DISABLE_SPEEDY : "undefined" != typeof process && void 0 !== process.env && void 0 !== process.env.SC_DISABLE_SPEEDY && "" !== process.env.SC_DISABLE_SPEEDY ? "false" !== process.env.SC_DISABLE_SPEEDY && process.env.SC_DISABLE_SPEEDY : true);
@@ -3765,6 +3943,7 @@ var St = "__sc-".concat(f, "__");
3765
3943
  var TEXT_BASE_SIZE = 16;
3766
3944
  var VISIBLE_ENTITLEMENT_COUNT = 4;
3767
3945
  var MAX_VISIBLE_INVOICE_COUNT = 12;
3946
+ var DEBOUNCE_TIMEOUT = 250;
3768
3947
 
3769
3948
  // src/hooks/useAvailablePlans.ts
3770
3949
  var import_react10 = require("react");
@@ -12129,6 +12308,7 @@ var en_default = {
12129
12308
  Unsubscribe: "Unsubscribe",
12130
12309
  "Unsubscribe failed": "Unsubscribe failed",
12131
12310
  "Unused time": "Unused time",
12311
+ "Up to a limit of": "Up to a limit of {{amount}} {{units}}",
12132
12312
  Usage: "Usage",
12133
12313
  "Usage-based": "Usage-based",
12134
12314
  "Use existing payment method": "Use existing payment method",
@@ -12151,8 +12331,7 @@ var en_default = {
12151
12331
  };
12152
12332
 
12153
12333
  // src/context/styles.ts
12154
- var GlobalStyle = ft`;
12155
-
12334
+ var GlobalStyle = ft`
12156
12335
  @font-face {
12157
12336
  font-family: "icons";
12158
12337
  src: url(data:font/ttf;base64,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ASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwAFYWxhcm0JYW1hem9ucGF5BGFtZXgIYXBwbGVwYXkPYXJyb3ctYW5hbHl0aWNzDGFycm93LWN1cnZlZAphcnJvdy1kb3duCmFycm93LWxlZnQLYXJyb3ctcmlnaHQIYXJyb3ctdXAMYXJyb3ctdXB3YXJkCWJhY2tzcGFjZQRiYW5rBGJlbGwFYm9hcmQIYm9va21hcmsKYm9vbGVhbi1vbgdib29sZWFuBGJ1bGIGYnVyZ2VyB2Nhc2hhcHANY2hlY2stcm91bmRlZAVjaGVjawxjaGV2cm9uLWRvd24MY2hldnJvbi1sZWZ0DWNoZXZyb24tcmlnaHQKY2hldnJvbi11cARjaGlwBWNoaXBzBWNsZXJrFGNsb3NlLXJvdW5kZWQtZmlsbGVkBWNsb3NlCGNsb3VkLXVwBGNsdWIDY21kBGNvZGUGY29mZmVlA2NvZw5jb2xsYXBzZS1lbXB0eQhjb2xsYXBzZQdjb21wYXNzCmNvbm5lY3Rpb24EY29weQZjcmVkaXQHY3lsbmRlcgdkaWFtb25kDmRvbGxhci1yb3VuZGVkD2RvdHMtaG9yaXpvbnRhbA1kb3RzLXZlcnRpY2FsDGVudGl0bGVtZW50cwllcXVhbGl6ZXIaZXhjbGFtYXRpb24tcm91bmRlZC1maWxsZWQDZXllBmZpbHRlcgVmbGFzawxmb2xkZXItbWludXMLZm9sZGVyLXBsdXMGZm9sZGVyD2dlbmVyaWMtcGF5bWVudAZnaXRodWIHZ2xhc3NlcwVnbG9iZQZnb29nbGUGaGFtbWVyBGhhc2gFaGVhcnQHaHVic3BvdAVpbWFnZQxpbmZvLXJvdW5kZWQFanVpY2UDa2V5BGxpbmsKbWFzdGVyY2FyZARtb3ZlBW11c2ljCm5vZGUtbWludXMJbm9kZS1wbHVzB3BhY2thZ2ULcGFwZXItcGxhbmUGcGF5cGFsBnBlbmNpbAdwZXJjZW50BnBpY2tlcgRwbGFuBHBsdWcKcGx1cy1taW51cxRwbHVzLXJvdW5kZWQtb3V0bGluZQdwcmVzZW50CXNjaGVtYXRpYwZzZWFyY2gHc2VnbWVudA1zZXJ2ZXItc2VhcmNoB3NpZGViYXIGc2lnbmFsB3NpbGVuY2UFc3BhZGUHc3BlYWtlcgdzdGFja2VkBnN0YWNrcwZzdHJpcGUEdGV4dAd0aHVuZGVyB3Rvcm5hZG8FdHJ1Y2sEdHViZQt1bnByb3RlY3RlZAt1bnN1YnNjcmliZQh2ZXJpZmllZAx2aWRlby1jYW1lcmEEdmlzYQZ3YWxsZXQKd2F0Y2gtaGFuZAx3YXRjaC1wb2NrZXQKd2F0ZXItZHJvcAV3YXZlcwd3ZWJob29rBHdpbmQAAAAA), format("truetype");
@@ -12705,7 +12884,8 @@ var defaultTheme = {
12705
12884
  var defaultSettings = {
12706
12885
  theme: defaultTheme,
12707
12886
  badge: {
12708
- alignment: "start"
12887
+ alignment: "start",
12888
+ visibility: "visible"
12709
12889
  }
12710
12890
  };
12711
12891
  function isEditorState(obj) {
@@ -12769,7 +12949,8 @@ var EmbedProvider = ({
12769
12949
  accessToken,
12770
12950
  apiConfig,
12771
12951
  children,
12772
- mode = "view"
12952
+ mode = "view",
12953
+ ...options
12773
12954
  }) => {
12774
12955
  const styleRef = (0, import_react11.useRef)(null);
12775
12956
  const sessionIdRef = (0, import_react11.useRef)(v4_default());
@@ -12802,6 +12983,14 @@ var EmbedProvider = ({
12802
12983
  }
12803
12984
  };
12804
12985
  });
12986
+ const debug = (0, import_react11.useCallback)(
12987
+ (message, ...args) => {
12988
+ if (options.debug) {
12989
+ console.debug(`[Schematic] ${message}`, ...args);
12990
+ }
12991
+ },
12992
+ [options.debug]
12993
+ );
12805
12994
  const hydrate = (0, import_react11.useCallback)(async () => {
12806
12995
  setState((prev2) => ({ ...prev2, isPending: true, error: void 0 }));
12807
12996
  try {
@@ -12871,7 +13060,7 @@ var EmbedProvider = ({
12871
13060
  };
12872
13061
  });
12873
13062
  };
12874
- (0, import_react11.useEffect)(() => {
13063
+ const initI18n = () => {
12875
13064
  instance.use(initReactI18next).init({
12876
13065
  resources: {
12877
13066
  en: en_default
@@ -12882,8 +13071,8 @@ var EmbedProvider = ({
12882
13071
  escapeValue: false
12883
13072
  }
12884
13073
  });
12885
- }, []);
12886
- (0, import_react11.useEffect)(() => {
13074
+ };
13075
+ const initFontStylesheet = () => {
12887
13076
  const element = document.getElementById("schematic-fonts");
12888
13077
  if (element) {
12889
13078
  styleRef.current = element;
@@ -12894,11 +13083,25 @@ var EmbedProvider = ({
12894
13083
  style.rel = "stylesheet";
12895
13084
  document.head.appendChild(style);
12896
13085
  styleRef.current = style;
12897
- }, []);
13086
+ };
13087
+ (0, import_react11.useEffect)(() => {
13088
+ initI18n();
13089
+ initFontStylesheet();
13090
+ const planChanged = (event) => {
13091
+ if (!(event instanceof CustomEvent)) {
13092
+ return;
13093
+ }
13094
+ debug("plan changed", event.detail);
13095
+ };
13096
+ window.addEventListener("plan-changed", planChanged);
13097
+ return () => {
13098
+ window.removeEventListener("plan-changed", planChanged);
13099
+ };
13100
+ }, [debug]);
12898
13101
  (0, import_react11.useEffect)(() => {
12899
13102
  if (accessToken) {
12900
13103
  const { headers = {} } = apiConfig ?? {};
12901
- headers["X-Schematic-Components-Version"] = "0.5.0";
13104
+ headers["X-Schematic-Components-Version"] = "0.6.0";
12902
13105
  headers["X-Schematic-Session-ID"] = sessionIdRef.current;
12903
13106
  const config = new Configuration({
12904
13107
  ...apiConfig,
@@ -13150,6 +13353,17 @@ attr.rem = function propAsRem(key, value) {
13150
13353
  `;
13151
13354
  };
13152
13355
 
13356
+ // src/utils/api.ts
13357
+ var import_pluralize = __toESM(require_pluralize());
13358
+ var getFeatureName = (feature, count = 0) => {
13359
+ const shouldBePlural = count === 0 || count > 1;
13360
+ const { name, singularName, pluralName } = feature;
13361
+ if (pluralName && shouldBePlural) return pluralName;
13362
+ if (singularName)
13363
+ return shouldBePlural ? (0, import_pluralize.default)(singularName, count) : singularName;
13364
+ return (0, import_pluralize.default)(name, count);
13365
+ };
13366
+
13153
13367
  // src/hooks/useIsLightBackground.ts
13154
13368
  function useIsLightBackground() {
13155
13369
  const theme = nt();
@@ -13217,7 +13431,10 @@ var import_react20 = require("react");
13217
13431
  // src/components/ui/box/styles.ts
13218
13432
  var Box = dt.div((props) => {
13219
13433
  function reducer(acc, [key, value]) {
13220
- if (key.startsWith("$") && key !== "$viewport") {
13434
+ if (key.startsWith("$") && ![
13435
+ "$viewport",
13436
+ ...Object.values(TextPropNames).filter((prop) => prop !== "$color")
13437
+ ].includes(key)) {
13221
13438
  acc.push(
13222
13439
  // keys will always be CSS properties
13223
13440
  attr(camelToHyphen(key.slice(1)), value)
@@ -13912,7 +14129,7 @@ var Modal = (0, import_react17.forwardRef)(
13912
14129
  contentRef?.current?.focus({ preventScroll: true });
13913
14130
  }, [contentRef]);
13914
14131
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
13915
- Container2,
14132
+ Box,
13916
14133
  {
13917
14134
  ref,
13918
14135
  tabIndex: 0,
@@ -13940,7 +14157,7 @@ var Modal = (0, import_react17.forwardRef)(
13940
14157
  $scrollbarColor: `${isLightBackground ? "hsla(0, 0%, 0%, 0.15)" : "hsla(0, 0%, 100%, 0.15)"} transparent`,
13941
14158
  $scrollbarWidth: "thin",
13942
14159
  $scrollbarGutter: "stable both-edges",
13943
- children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
14160
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Container2, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
13944
14161
  Flex,
13945
14162
  {
13946
14163
  ref: contentRef,
@@ -13972,7 +14189,7 @@ var Modal = (0, import_react17.forwardRef)(
13972
14189
  },
13973
14190
  children
13974
14191
  }
13975
- )
14192
+ ) })
13976
14193
  }
13977
14194
  );
13978
14195
  }
@@ -14061,6 +14278,7 @@ var ProgressBar = ({
14061
14278
  barWidth = "100%",
14062
14279
  ...props
14063
14280
  }) => {
14281
+ const theme = nt();
14064
14282
  const barColorMap = {
14065
14283
  gray: "#9CA3AF",
14066
14284
  blue: "#2563EB",
@@ -14104,18 +14322,37 @@ var ProgressBar = ({
14104
14322
  )
14105
14323
  }
14106
14324
  ),
14107
- total !== 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Text, { $size: 14, $weight: 500, children: [
14108
- value,
14109
- "/",
14110
- total
14111
- ] })
14325
+ total !== 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
14326
+ Text,
14327
+ {
14328
+ $font: theme.typography.text.fontFamily,
14329
+ $size: 14,
14330
+ $weight: 500,
14331
+ $color: theme.typography.text.color,
14332
+ children: [
14333
+ value,
14334
+ "/",
14335
+ total
14336
+ ]
14337
+ }
14338
+ )
14112
14339
  ]
14113
14340
  }
14114
14341
  );
14115
14342
  };
14116
14343
 
14117
14344
  // src/components/ui/text/styles.ts
14118
- var Text = dt.span.attrs(({ onClick }) => ({
14345
+ var TextPropNames = /* @__PURE__ */ ((TextPropNames2) => {
14346
+ TextPropNames2["Align"] = "$align";
14347
+ TextPropNames2["Font"] = "$font";
14348
+ TextPropNames2["Size"] = "$size";
14349
+ TextPropNames2["Weight"] = "$weight";
14350
+ TextPropNames2["Color"] = "$color";
14351
+ TextPropNames2["Leading"] = "$leading";
14352
+ return TextPropNames2;
14353
+ })(TextPropNames || {});
14354
+ var Text = dt(Box).attrs(({ as = "span", onClick }) => ({
14355
+ as,
14119
14356
  ...onClick && { tabIndex: 0 }
14120
14357
  }))`
14121
14358
  ${({ $font }) => $font && lt`
@@ -14148,6 +14385,7 @@ var Text = dt.span.attrs(({ onClick }) => ({
14148
14385
  // src/components/ui/tooltip/Tooltip.tsx
14149
14386
  var import_react19 = require("react");
14150
14387
  var import_react_dom = require("react-dom");
14388
+ var import_debounce = __toESM(require_debounce());
14151
14389
 
14152
14390
  // src/components/ui/tooltip/styles.ts
14153
14391
  var Trigger = dt(Box)``;
@@ -14287,7 +14525,7 @@ var Tooltip = ({
14287
14525
  const ref = (0, import_react19.useRef)(null);
14288
14526
  const [show, setShow] = (0, import_react19.useState)(false);
14289
14527
  const [coords2, setCoords] = (0, import_react19.useState)({ x: 0, y: 0 });
14290
- (0, import_react19.useLayoutEffect)(() => {
14528
+ const updateCoords = (0, import_react19.useCallback)(() => {
14291
14529
  if (ref.current) {
14292
14530
  const { top: offsetTop, left: offsetLeft } = document.body.getBoundingClientRect();
14293
14531
  const rect = ref.current.getBoundingClientRect();
@@ -14304,7 +14542,15 @@ var Tooltip = ({
14304
14542
  y: Math.round(y2 - offsetTop)
14305
14543
  });
14306
14544
  }
14307
- }, [position2, trigger]);
14545
+ }, [position2]);
14546
+ (0, import_react19.useLayoutEffect)(() => {
14547
+ updateCoords();
14548
+ const handleResize = (0, import_debounce.default)(updateCoords, DEBOUNCE_TIMEOUT);
14549
+ window.addEventListener("resize", handleResize);
14550
+ return () => {
14551
+ window.removeEventListener("resize", handleResize);
14552
+ };
14553
+ }, [updateCoords]);
14308
14554
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
14309
14555
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
14310
14556
  Trigger,
@@ -14325,6 +14571,16 @@ var Tooltip = ({
14325
14571
 
14326
14572
  // src/components/layout/root/styles.ts
14327
14573
  var Container2 = dt(Box)`
14574
+ all: initial;
14575
+ box-sizing: border-box;
14576
+ font-size: ${TEXT_BASE_SIZE}px;
14577
+
14578
+ *,
14579
+ *::before,
14580
+ *::after {
14581
+ box-sizing: inherit;
14582
+ }
14583
+
14328
14584
  sub,
14329
14585
  sup {
14330
14586
  position: static;
@@ -14358,7 +14614,6 @@ var import_react24 = require("react");
14358
14614
 
14359
14615
  // src/components/shared/sidebar/Sidebar.tsx
14360
14616
  var import_react21 = require("react");
14361
- var import_pluralize = __toESM(require_pluralize());
14362
14617
 
14363
14618
  // src/components/shared/sidebar/StageButton.tsx
14364
14619
  var import_jsx_runtime10 = require("react/jsx-runtime");
@@ -14645,6 +14900,13 @@ var Sidebar = ({
14645
14900
  proration: charges?.proration ?? 0
14646
14901
  };
14647
14902
  }, [charges]);
14903
+ const dispatchPlanChangedEvent = (detail) => {
14904
+ const event = new CustomEvent("plan-changed", {
14905
+ bubbles: true,
14906
+ detail
14907
+ });
14908
+ window.dispatchEvent(event);
14909
+ };
14648
14910
  const checkout = (0, import_react21.useCallback)(async () => {
14649
14911
  const priceId = (planPeriod === "month" ? selectedPlan?.monthlyPrice : selectedPlan?.yearlyPrice)?.id;
14650
14912
  if (!api || !selectedPlan || !priceId) {
@@ -14653,7 +14915,7 @@ var Sidebar = ({
14653
14915
  try {
14654
14916
  setError(void 0);
14655
14917
  setIsLoading(true);
14656
- await api.checkout({
14918
+ const response = await api.checkout({
14657
14919
  changeSubscriptionRequestBody: {
14658
14920
  newPlanId: selectedPlan.id,
14659
14921
  newPriceId: priceId,
@@ -14686,6 +14948,7 @@ var Sidebar = ({
14686
14948
  ...promoCode && { promoCode }
14687
14949
  }
14688
14950
  });
14951
+ dispatchPlanChangedEvent(response.data);
14689
14952
  setIsLoading(false);
14690
14953
  setLayout("portal");
14691
14954
  hydrate();
@@ -14718,7 +14981,8 @@ var Sidebar = ({
14718
14981
  try {
14719
14982
  setError(void 0);
14720
14983
  setIsLoading(true);
14721
- await api.checkoutUnsubscribe();
14984
+ const response = await api.checkoutUnsubscribe();
14985
+ dispatchPlanChangedEvent(response.data);
14722
14986
  setLayout("portal");
14723
14987
  hydrate();
14724
14988
  } catch {
@@ -14979,7 +15243,7 @@ var Sidebar = ({
14979
15243
  }
14980
15244
  ) }),
14981
15245
  removedUsageBasedEntitlements.reduce(
14982
- (acc, { allocation, quantity, usage }) => {
15246
+ (acc, { allocation, quantity, usage }, index) => {
14983
15247
  if (typeof allocation === "number" && usage.feature?.name) {
14984
15248
  const price = (planPeriod === "month" ? usage.monthlyUsageBasedPrice : usage.yearlyUsageBasedPrice)?.price;
14985
15249
  acc.push(
@@ -15003,7 +15267,7 @@ var Sidebar = ({
15003
15267
  children: usage.priceBehavior === "pay_in_advance" ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
15004
15268
  quantity,
15005
15269
  " ",
15006
- (0, import_pluralize.default)(usage.feature.name, quantity)
15270
+ getFeatureName(usage.feature, quantity)
15007
15271
  ] }) : usage.feature.name
15008
15272
  }
15009
15273
  ) }),
@@ -15032,10 +15296,7 @@ var Sidebar = ({
15032
15296
  ),
15033
15297
  /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("sub", { children: [
15034
15298
  "/",
15035
- (0, import_pluralize.default)(
15036
- usage.feature.name.toLowerCase(),
15037
- 1
15038
- )
15299
+ getFeatureName(usage.feature, 1)
15039
15300
  ] })
15040
15301
  ] })
15041
15302
  ]
@@ -15043,7 +15304,7 @@ var Sidebar = ({
15043
15304
  ) })
15044
15305
  ]
15045
15306
  },
15046
- usage.entitlementId
15307
+ index
15047
15308
  )
15048
15309
  );
15049
15310
  }
@@ -15052,7 +15313,7 @@ var Sidebar = ({
15052
15313
  []
15053
15314
  ),
15054
15315
  changedUsageBasedEntitlements.reduce(
15055
- (acc, { entitlement, previous, next: next2 }) => {
15316
+ (acc, { entitlement, previous, next: next2 }, index) => {
15056
15317
  if (entitlement?.feature?.name) {
15057
15318
  acc.push(
15058
15319
  /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Box, { children: [
@@ -15076,7 +15337,7 @@ var Sidebar = ({
15076
15337
  children: [
15077
15338
  previous.quantity,
15078
15339
  " ",
15079
- (0, import_pluralize.default)(entitlement.feature.name)
15340
+ getFeatureName(entitlement.feature)
15080
15341
  ]
15081
15342
  }
15082
15343
  ) }),
@@ -15119,7 +15380,7 @@ var Sidebar = ({
15119
15380
  children: [
15120
15381
  next2.quantity,
15121
15382
  " ",
15122
- (0, import_pluralize.default)(entitlement.feature.name)
15383
+ getFeatureName(entitlement.feature)
15123
15384
  ]
15124
15385
  }
15125
15386
  ) }),
@@ -15145,7 +15406,7 @@ var Sidebar = ({
15145
15406
  ]
15146
15407
  }
15147
15408
  )
15148
- ] }, entitlement.feature.id)
15409
+ ] }, index)
15149
15410
  );
15150
15411
  }
15151
15412
  return acc;
@@ -15153,7 +15414,7 @@ var Sidebar = ({
15153
15414
  []
15154
15415
  ),
15155
15416
  addedUsageBasedEntitlements.reduce(
15156
- (acc, { entitlement, quantity }) => {
15417
+ (acc, { entitlement, quantity }, index) => {
15157
15418
  if (entitlement.feature?.name) {
15158
15419
  const price = (planPeriod === "month" ? entitlement.meteredMonthlyPrice : entitlement.meteredYearlyPrice)?.price;
15159
15420
  acc.push(
@@ -15174,7 +15435,7 @@ var Sidebar = ({
15174
15435
  children: entitlement.priceBehavior === "pay_in_advance" ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
15175
15436
  quantity,
15176
15437
  " ",
15177
- (0, import_pluralize.default)(entitlement.feature.name, quantity)
15438
+ getFeatureName(entitlement.feature, quantity)
15178
15439
  ] }) : entitlement.feature.name
15179
15440
  }
15180
15441
  ) }),
@@ -15203,10 +15464,7 @@ var Sidebar = ({
15203
15464
  ),
15204
15465
  /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("sub", { children: [
15205
15466
  "/",
15206
- (0, import_pluralize.default)(
15207
- entitlement.feature.name.toLowerCase(),
15208
- 1
15209
- )
15467
+ getFeatureName(entitlement.feature, 1)
15210
15468
  ] })
15211
15469
  ] })
15212
15470
  ]
@@ -15214,7 +15472,7 @@ var Sidebar = ({
15214
15472
  ) })
15215
15473
  ]
15216
15474
  },
15217
- entitlement.id
15475
+ index
15218
15476
  )
15219
15477
  );
15220
15478
  }
@@ -15284,7 +15542,7 @@ var Sidebar = ({
15284
15542
  children: t2("Add-ons")
15285
15543
  }
15286
15544
  ) }),
15287
- removedAddOns.map((addOn) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
15545
+ removedAddOns.map((addOn, index) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
15288
15546
  Flex,
15289
15547
  {
15290
15548
  $justifyContent: "space-between",
@@ -15325,9 +15583,9 @@ var Sidebar = ({
15325
15583
  ) })
15326
15584
  ]
15327
15585
  },
15328
- addOn.id
15586
+ index
15329
15587
  )),
15330
- selectedAddOns.map((addOn) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
15588
+ selectedAddOns.map((addOn, index) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
15331
15589
  Flex,
15332
15590
  {
15333
15591
  $justifyContent: "space-between",
@@ -15353,7 +15611,8 @@ var Sidebar = ({
15353
15611
  $color: theme.typography.text.color,
15354
15612
  children: [
15355
15613
  formatCurrency(
15356
- (planPeriod === "month" ? addOn.monthlyPrice : addOn.yearlyPrice)?.price ?? 0
15614
+ (planPeriod === "month" ? addOn.monthlyPrice : addOn.yearlyPrice)?.price ?? 0,
15615
+ (planPeriod === "month" ? addOn.monthlyPrice : addOn.yearlyPrice)?.currency
15357
15616
  ),
15358
15617
  /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("sub", { children: [
15359
15618
  "/",
@@ -15364,7 +15623,7 @@ var Sidebar = ({
15364
15623
  ) })
15365
15624
  ]
15366
15625
  },
15367
- addOn.id
15626
+ index
15368
15627
  ))
15369
15628
  ] }),
15370
15629
  proration !== 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
@@ -15814,7 +16073,6 @@ var Navigation = ({
15814
16073
 
15815
16074
  // src/components/shared/checkout-dialog/Plan.tsx
15816
16075
  var import_react22 = require("react");
15817
- var import_pluralize2 = __toESM(require_pluralize());
15818
16076
 
15819
16077
  // src/components/elements/pricing-table/styles.ts
15820
16078
  var ButtonLink = dt.a`
@@ -15822,6 +16080,7 @@ var ButtonLink = dt.a`
15822
16080
  justify-content: center;
15823
16081
  align-items: center;
15824
16082
  flex-grow: 1;
16083
+ height: 100%;
15825
16084
  `;
15826
16085
 
15827
16086
  // src/components/shared/checkout-dialog/Plan.tsx
@@ -15867,13 +16126,11 @@ var Plan = ({
15867
16126
  $display: "grid",
15868
16127
  $gridTemplateColumns: "repeat(auto-fill, minmax(300px, 1fr))",
15869
16128
  $gap: "1rem",
15870
- $flexGrow: "1",
15871
- children: plans.map((plan) => {
16129
+ $flexGrow: 1,
16130
+ children: plans.map((plan, planIndex) => {
15872
16131
  const count = entitlementCounts[plan.id];
15873
- let isExpanded = false;
15874
- if (count?.limit && count.limit > VISIBLE_ENTITLEMENT_COUNT) {
15875
- isExpanded = true;
15876
- }
16132
+ const isExpanded = count.limit > VISIBLE_ENTITLEMENT_COUNT;
16133
+ const { price: planPrice, currency: planCurrency } = (period === "month" ? plan.monthlyPrice : period === "year" && plan.yearlyPrice) || {};
15877
16134
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
15878
16135
  Flex,
15879
16136
  {
@@ -15931,10 +16188,7 @@ var Plan = ({
15931
16188
  $size: theme.typography.heading2.fontSize,
15932
16189
  $weight: theme.typography.heading2.fontWeight,
15933
16190
  $color: theme.typography.heading2.color,
15934
- children: plan.custom ? plan.customPlanConfig?.priceText ? plan.customPlanConfig?.priceText : t2("Custom Plan Price") : formatCurrency(
15935
- (period === "month" ? plan.monthlyPrice : plan.yearlyPrice)?.price ?? 0,
15936
- (period === "month" ? plan.monthlyPrice : plan.yearlyPrice)?.currency
15937
- )
16191
+ children: plan.custom ? plan.customPlanConfig?.priceText ? plan.customPlanConfig.priceText : t2("Custom Plan Price") : formatCurrency(planPrice ?? 0, planCurrency)
15938
16192
  }
15939
16193
  ),
15940
16194
  !plan.custom && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
@@ -15973,140 +16227,148 @@ var Plan = ({
15973
16227
  {
15974
16228
  $flexDirection: "column",
15975
16229
  $justifyContent: "end",
15976
- $flexGrow: "1",
16230
+ $flexGrow: 1,
15977
16231
  $gap: `${cardPadding}rem`,
15978
16232
  $padding: `${0.75 * cardPadding}rem ${cardPadding}rem 0`,
15979
16233
  children: [
15980
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Flex, { $flexDirection: "column", $gap: "1rem", $flexGrow: "1", children: [
15981
- plan.entitlements.reduce((acc, entitlement) => {
15982
- const hasNumericValue = entitlement.valueType === "numeric" || entitlement.valueType === "unlimited" || entitlement.valueType === "trait";
15983
- let metricPeriodText;
15984
- if (hasNumericValue && entitlement.metricPeriod && entitlement.priceBehavior !== "overage") {
15985
- metricPeriodText = {
15986
- billing: t2("billing period"),
15987
- current_day: t2("day"),
15988
- current_month: t2("month"),
15989
- current_year: t2("year")
15990
- }[entitlement.metricPeriod];
15991
- }
15992
- const limit = entitlement.softLimit || entitlement.valueNumeric;
15993
- const price = (period === "month" ? entitlement.meteredMonthlyPrice : entitlement.meteredYearlyPrice)?.price;
15994
- const currency = (period === "month" ? entitlement.meteredMonthlyPrice : entitlement.meteredYearlyPrice)?.currency;
15995
- if (entitlement.priceBehavior && typeof price !== "number") {
15996
- return acc;
15997
- }
15998
- acc.push(
15999
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
16000
- Flex,
16001
- {
16002
- $flexWrap: "wrap",
16003
- $justifyContent: "space-between",
16004
- $alignItems: "center",
16005
- $gap: "1rem",
16006
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Flex, { $gap: "1rem", children: [
16007
- entitlement.feature?.icon && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
16008
- IconRound,
16009
- {
16010
- name: entitlement.feature.icon,
16011
- size: "sm",
16012
- colors: [
16013
- theme.primary,
16014
- isLightBackground ? "hsla(0, 0%, 0%, 0.0625)" : "hsla(0, 0%, 100%, 0.25)"
16015
- ]
16016
- }
16017
- ),
16018
- entitlement.feature?.name && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
16019
- Flex,
16020
- {
16021
- $flexDirection: "column",
16022
- $justifyContent: "center",
16023
- $gap: "0.5rem",
16024
- children: [
16025
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
16026
- Text,
16027
- {
16028
- $font: theme.typography.text.fontFamily,
16029
- $size: theme.typography.text.fontSize,
16030
- $weight: theme.typography.text.fontWeight,
16031
- $color: theme.typography.text.color,
16032
- $leading: 1.35,
16033
- children: typeof price === "number" && (entitlement.priceBehavior === "pay_in_advance" || entitlement.priceBehavior === "pay_as_you_go") ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
16034
- formatCurrency(price, currency),
16035
- " ",
16036
- t2("per"),
16037
- " ",
16038
- (0, import_pluralize2.default)(entitlement.feature.name, 1),
16039
- entitlement.priceBehavior === "pay_in_advance" && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
16040
- " ",
16041
- t2("per"),
16042
- " ",
16043
- period
16044
- ] })
16045
- ] }) : hasNumericValue ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
16046
- entitlement.valueType === "unlimited" ? t2("Unlimited", {
16047
- item: (0, import_pluralize2.default)(
16048
- entitlement.feature.name
16049
- )
16050
- }) : typeof limit === "number" && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
16051
- formatNumber(limit),
16052
- " ",
16053
- (0, import_pluralize2.default)(
16054
- entitlement.feature.name,
16055
- limit
16056
- )
16057
- ] }),
16058
- metricPeriodText ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
16059
- " ",
16060
- t2("per"),
16061
- " ",
16062
- metricPeriodText
16063
- ] }) : entitlement.priceBehavior === "overage" && entitlement.feature.featureType === "event" && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
16064
- "/",
16065
- shortenPeriod(period)
16066
- ] })
16067
- ] }) : entitlement.feature.name
16068
- }
16069
- ),
16070
- entitlement.priceBehavior === "overage" && typeof price === "number" && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
16071
- Text,
16072
- {
16073
- $font: theme.typography.text.fontFamily,
16074
- $size: 0.875 * theme.typography.text.fontSize,
16075
- $weight: theme.typography.text.fontWeight,
16076
- $color: hexToHSL(theme.typography.text.color).l > 50 ? darken(
16077
- theme.typography.text.color,
16078
- 0.46
16079
- ) : lighten(
16080
- theme.typography.text.color,
16081
- 0.46
16082
- ),
16083
- $leading: 1.35,
16084
- children: [
16085
- formatCurrency(price),
16086
- "/",
16087
- (0, import_pluralize2.default)(
16088
- entitlement.feature.name.toLowerCase(),
16089
- 1
16090
- ),
16091
- entitlement.feature.featureType === "event" && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
16092
- "/",
16093
- shortenPeriod(period)
16094
- ] }),
16095
- " ",
16096
- t2("overage fee")
16097
- ]
16098
- }
16099
- )
16100
- ]
16101
- }
16102
- )
16103
- ] })
16104
- },
16105
- entitlement.id
16106
- )
16107
- );
16108
- return acc;
16109
- }, []).slice(0, count?.limit ?? VISIBLE_ENTITLEMENT_COUNT),
16234
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Flex, { $flexDirection: "column", $gap: "1rem", $flexGrow: 1, children: [
16235
+ plan.entitlements.reduce(
16236
+ (acc, entitlement, entitlementIndex) => {
16237
+ const hasNumericValue = entitlement.valueType === "numeric" || entitlement.valueType === "unlimited" || entitlement.valueType === "trait";
16238
+ let metricPeriodText;
16239
+ if (hasNumericValue && entitlement.metricPeriod && entitlement.priceBehavior !== "overage") {
16240
+ metricPeriodText = {
16241
+ billing: t2("billing period"),
16242
+ current_day: t2("day"),
16243
+ current_month: t2("month"),
16244
+ current_year: t2("year")
16245
+ }[entitlement.metricPeriod];
16246
+ }
16247
+ const limit = entitlement.softLimit ?? entitlement.valueNumeric;
16248
+ const {
16249
+ price: entitlementPrice,
16250
+ currency: entitlementCurrency
16251
+ } = (period === "month" ? entitlement.meteredMonthlyPrice : period === "year" && entitlement.meteredYearlyPrice) || {};
16252
+ if (entitlement.priceBehavior && typeof entitlementPrice !== "number") {
16253
+ return acc;
16254
+ }
16255
+ acc.push(
16256
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
16257
+ Flex,
16258
+ {
16259
+ $flexWrap: "wrap",
16260
+ $justifyContent: "space-between",
16261
+ $alignItems: "center",
16262
+ $gap: "1rem",
16263
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Flex, { $gap: "1rem", children: [
16264
+ entitlement.feature?.icon && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
16265
+ IconRound,
16266
+ {
16267
+ name: entitlement.feature.icon,
16268
+ size: "sm",
16269
+ colors: [
16270
+ theme.primary,
16271
+ isLightBackground ? "hsla(0, 0%, 0%, 0.0625)" : "hsla(0, 0%, 100%, 0.25)"
16272
+ ]
16273
+ }
16274
+ ),
16275
+ entitlement.feature?.name && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
16276
+ Flex,
16277
+ {
16278
+ $flexDirection: "column",
16279
+ $justifyContent: "center",
16280
+ $gap: "0.5rem",
16281
+ children: [
16282
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
16283
+ Text,
16284
+ {
16285
+ $font: theme.typography.text.fontFamily,
16286
+ $size: theme.typography.text.fontSize,
16287
+ $weight: theme.typography.text.fontWeight,
16288
+ $color: theme.typography.text.color,
16289
+ $leading: 1.35,
16290
+ children: typeof entitlementPrice === "number" && (entitlement.priceBehavior === "pay_in_advance" || entitlement.priceBehavior === "pay_as_you_go") ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
16291
+ formatCurrency(
16292
+ entitlementPrice,
16293
+ entitlementCurrency
16294
+ ),
16295
+ " ",
16296
+ t2("per"),
16297
+ " ",
16298
+ getFeatureName(entitlement.feature, 1),
16299
+ entitlement.priceBehavior === "pay_in_advance" && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
16300
+ " ",
16301
+ t2("per"),
16302
+ " ",
16303
+ period
16304
+ ] })
16305
+ ] }) : hasNumericValue ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
16306
+ entitlement.valueType === "unlimited" && !entitlement.priceBehavior ? t2("Unlimited", {
16307
+ item: getFeatureName(
16308
+ entitlement.feature
16309
+ )
16310
+ }) : typeof limit === "number" && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
16311
+ formatNumber(limit),
16312
+ " ",
16313
+ getFeatureName(
16314
+ entitlement.feature,
16315
+ limit
16316
+ )
16317
+ ] }),
16318
+ metricPeriodText ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
16319
+ " ",
16320
+ t2("per"),
16321
+ " ",
16322
+ metricPeriodText
16323
+ ] }) : entitlement.priceBehavior === "overage" && entitlement.feature.featureType === "event" && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
16324
+ "/",
16325
+ shortenPeriod(period)
16326
+ ] })
16327
+ ] }) : entitlement.feature.name
16328
+ }
16329
+ ),
16330
+ entitlement.priceBehavior === "overage" && typeof entitlementPrice === "number" && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
16331
+ Text,
16332
+ {
16333
+ $font: theme.typography.text.fontFamily,
16334
+ $size: 0.875 * theme.typography.text.fontSize,
16335
+ $weight: theme.typography.text.fontWeight,
16336
+ $color: hexToHSL(theme.typography.text.color).l > 50 ? darken(
16337
+ theme.typography.text.color,
16338
+ 0.46
16339
+ ) : lighten(
16340
+ theme.typography.text.color,
16341
+ 0.46
16342
+ ),
16343
+ $leading: 1.35,
16344
+ children: [
16345
+ formatCurrency(
16346
+ entitlementPrice,
16347
+ entitlementCurrency
16348
+ ),
16349
+ "/",
16350
+ getFeatureName(entitlement.feature, 1),
16351
+ entitlement.feature.featureType === "trait" && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
16352
+ "/",
16353
+ shortenPeriod(period)
16354
+ ] }),
16355
+ " ",
16356
+ t2("overage fee")
16357
+ ]
16358
+ }
16359
+ )
16360
+ ]
16361
+ }
16362
+ )
16363
+ ] })
16364
+ },
16365
+ entitlementIndex
16366
+ )
16367
+ );
16368
+ return acc;
16369
+ },
16370
+ []
16371
+ ).slice(0, count?.limit ?? VISIBLE_ENTITLEMENT_COUNT),
16110
16372
  (count?.size || plan.entitlements.length) > VISIBLE_ENTITLEMENT_COUNT && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
16111
16373
  Flex,
16112
16374
  {
@@ -16133,8 +16395,8 @@ var Plan = ({
16133
16395
  $font: theme.typography.link.fontFamily,
16134
16396
  $size: theme.typography.link.fontSize,
16135
16397
  $weight: theme.typography.link.fontWeight,
16136
- $leading: 1,
16137
16398
  $color: theme.typography.link.color,
16399
+ $leading: 1,
16138
16400
  style: { cursor: "pointer" },
16139
16401
  children: isExpanded ? t2("Hide all") : t2("See all")
16140
16402
  }
@@ -16165,9 +16427,11 @@ var Plan = ({
16165
16427
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
16166
16428
  Text,
16167
16429
  {
16168
- $size: 15,
16169
- $leading: 1,
16430
+ $font: theme.typography.text.fontFamily,
16431
+ $size: 15 / 16 * theme.typography.text.fontSize,
16432
+ $weight: theme.typography.text.fontWeight,
16170
16433
  $color: theme.typography.text.color,
16434
+ $leading: 1,
16171
16435
  children: plan.current ? t2("Current plan") : t2("Selected")
16172
16436
  }
16173
16437
  )
@@ -16212,7 +16476,7 @@ var Plan = ({
16212
16476
  )
16213
16477
  ]
16214
16478
  },
16215
- plan.id
16479
+ planIndex
16216
16480
  );
16217
16481
  })
16218
16482
  }
@@ -16232,7 +16496,7 @@ var AddOns = ({ addOns, toggle, isLoading, period }) => {
16232
16496
  $display: "grid",
16233
16497
  $gridTemplateColumns: "repeat(auto-fill, minmax(300px, 1fr))",
16234
16498
  $gap: "1rem",
16235
- children: addOns.map((addOn) => {
16499
+ children: addOns.map((addOn, index) => {
16236
16500
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
16237
16501
  Flex,
16238
16502
  {
@@ -16348,7 +16612,7 @@ var AddOns = ({ addOns, toggle, isLoading, period }) => {
16348
16612
  ) })
16349
16613
  ]
16350
16614
  },
16351
- addOn.id
16615
+ index
16352
16616
  );
16353
16617
  })
16354
16618
  }
@@ -16356,7 +16620,6 @@ var AddOns = ({ addOns, toggle, isLoading, period }) => {
16356
16620
  };
16357
16621
 
16358
16622
  // src/components/shared/checkout-dialog/Usage.tsx
16359
- var import_pluralize3 = __toESM(require_pluralize());
16360
16623
  var import_jsx_runtime15 = require("react/jsx-runtime");
16361
16624
  var Usage = ({ entitlements, updateQuantity, period }) => {
16362
16625
  const theme = nt();
@@ -16365,7 +16628,7 @@ var Usage = ({ entitlements, updateQuantity, period }) => {
16365
16628
  const unitPriceFontSize = 0.875 * theme.typography.text.fontSize;
16366
16629
  const unitPriceColor = hexToHSL(theme.typography.text.color).l > 50 ? darken(theme.typography.text.color, 0.46) : lighten(theme.typography.text.color, 0.46);
16367
16630
  return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_jsx_runtime15.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Flex, { $flexDirection: "column", $gap: "1rem", children: entitlements.reduce(
16368
- (acc, { entitlement, quantity, usage }) => {
16631
+ (acc, { entitlement, quantity, usage }, index) => {
16369
16632
  if (entitlement.priceBehavior === "pay_in_advance" && entitlement.feature) {
16370
16633
  acc.push(
16371
16634
  /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
@@ -16448,9 +16711,7 @@ var Usage = ({ entitlements, updateQuantity, period }) => {
16448
16711
  ] }),
16449
16712
  t2("Currently using", {
16450
16713
  quantity: usage,
16451
- unit: (0, import_pluralize3.default)(
16452
- entitlement.feature.name.toLowerCase()
16453
- )
16714
+ unit: getFeatureName(entitlement.feature)
16454
16715
  })
16455
16716
  ]
16456
16717
  }
@@ -16497,7 +16758,7 @@ var Usage = ({ entitlements, updateQuantity, period }) => {
16497
16758
  ),
16498
16759
  /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("sub", { children: [
16499
16760
  "/",
16500
- (0, import_pluralize3.default)(entitlement.feature.name.toLowerCase(), 1),
16761
+ getFeatureName(entitlement.feature, 1),
16501
16762
  "/",
16502
16763
  shortenPeriod(period)
16503
16764
  ] })
@@ -16509,7 +16770,7 @@ var Usage = ({ entitlements, updateQuantity, period }) => {
16509
16770
  )
16510
16771
  ]
16511
16772
  },
16512
- entitlement.id
16773
+ index
16513
16774
  )
16514
16775
  );
16515
16776
  }
@@ -16563,7 +16824,7 @@ var registerWrapper = function registerWrapper2(stripe, startTime) {
16563
16824
  }
16564
16825
  stripe._registerWrapper({
16565
16826
  name: "stripe-js",
16566
- version: "6.0.0",
16827
+ version: "6.1.0",
16567
16828
  startTime
16568
16829
  });
16569
16830
  };
@@ -16638,7 +16899,7 @@ var initStripe = function initStripe2(maybeStripe, args, startTime) {
16638
16899
  var version = runtimeVersionToUrlVersion(maybeStripe.version);
16639
16900
  var expectedVersion = RELEASE_TRAIN;
16640
16901
  if (isTestKey && version !== expectedVersion) {
16641
- console.warn("Stripe.js@".concat(version, " was loaded on the page, but @stripe/stripe-js@").concat("6.0.0", " expected Stripe.js@").concat(expectedVersion, ". This may result in unexpected behavior. For more information, see https://docs.stripe.com/sdks/stripejs-versioning"));
16902
+ console.warn("Stripe.js@".concat(version, " was loaded on the page, but @stripe/stripe-js@").concat("6.1.0", " expected Stripe.js@").concat(expectedVersion, ". This may result in unexpected behavior. For more information, see https://docs.stripe.com/sdks/stripejs-versioning"));
16642
16903
  }
16643
16904
  var stripe = maybeStripe.apply(void 0, args);
16644
16905
  registerWrapper(stripe, startTime);
@@ -16748,7 +17009,16 @@ var Checkout = ({
16748
17009
  clientSecret: setupIntent.setupIntentClientSecret
16749
17010
  },
16750
17011
  children: [
16751
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Box, { $width: "100%", $marginBottom: "1.5rem", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Text, { $size: 18, children: t2("Add payment method") }) }),
17012
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Box, { $width: "100%", $marginBottom: "1.5rem", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
17013
+ Text,
17014
+ {
17015
+ $font: theme.typography.text.fontFamily,
17016
+ $size: 18,
17017
+ $weight: theme.typography.text.fontWeight,
17018
+ $color: theme.typography.text.color,
17019
+ children: t2("Add payment method")
17020
+ }
17021
+ ) }),
16752
17022
  /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
16753
17023
  PaymentForm,
16754
17024
  {
@@ -16833,8 +17103,8 @@ var Checkout = ({
16833
17103
  $font: theme.typography.link.fontFamily,
16834
17104
  $size: theme.typography.link.fontSize,
16835
17105
  $weight: theme.typography.link.fontWeight,
16836
- $leading: 1,
16837
17106
  $color: theme.typography.link.color,
17107
+ $leading: 1,
16838
17108
  children: t2("Apply discount")
16839
17109
  }
16840
17110
  ) })
@@ -17343,6 +17613,7 @@ var import_react_stripe_js2 = require("@stripe/react-stripe-js");
17343
17613
  var import_jsx_runtime18 = require("react/jsx-runtime");
17344
17614
  var PaymentForm = ({ onConfirm }) => {
17345
17615
  const { t: t2 } = useTranslation();
17616
+ const theme = nt();
17346
17617
  const stripe = (0, import_react_stripe_js2.useStripe)();
17347
17618
  const elements = (0, import_react_stripe_js2.useElements)();
17348
17619
  const { api } = useEmbed();
@@ -17404,7 +17675,17 @@ var PaymentForm = ({ onConfirm }) => {
17404
17675
  children: isLoading ? t2("Loading") : t2("Save payment method")
17405
17676
  }
17406
17677
  ),
17407
- message && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Box, { $margin: "1rem 0", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Text, { id: "payment-message", $size: 15, $weight: 500, $color: "#DB6669", children: message }) })
17678
+ message && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Box, { $margin: "1rem 0", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
17679
+ Text,
17680
+ {
17681
+ id: "payment-message",
17682
+ $font: theme.typography.text.fontFamily,
17683
+ $size: 15,
17684
+ $weight: 500,
17685
+ $color: "#DB6669",
17686
+ children: message
17687
+ }
17688
+ ) })
17408
17689
  ]
17409
17690
  }
17410
17691
  );
@@ -17720,103 +18001,112 @@ var UnsubscribeDialog = ({ top = 0 }) => {
17720
18001
  var import_jsx_runtime21 = require("react/jsx-runtime");
17721
18002
  var Badge = () => {
17722
18003
  const { t: t2 } = useTranslation();
18004
+ const theme = nt();
17723
18005
  const { settings } = useEmbed();
17724
18006
  return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
17725
18007
  Flex,
17726
18008
  {
18009
+ as: "a",
18010
+ href: "https://schematichq.com?utm_source=schematic_component_badge",
18011
+ target: "_blank",
18012
+ rel: "noreferrer",
17727
18013
  $justifyContent: settings.badge?.alignment || "start",
17728
18014
  $alignItems: "center",
18015
+ $gap: "0.5rem",
17729
18016
  $gridColumn: "1 / -1",
17730
18017
  children: [
17731
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Box, { $fontSize: "0.75rem", $marginRight: "0.5rem", children: t2("Powered by") }),
17732
18018
  /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
17733
- "svg",
18019
+ Text,
17734
18020
  {
17735
- width: 86,
17736
- height: 16,
17737
- viewBox: "0 0 86 16",
17738
- style: { marginTop: "0.125rem" },
18021
+ $font: theme.typography.text.fontFamily,
18022
+ $size: 0.75 * theme.typography.text.fontSize,
18023
+ $weight: theme.typography.text.fontWeight,
18024
+ $color: theme.typography.text.color,
17739
18025
  children: [
17740
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
17741
- "path",
17742
- {
17743
- d: "M21.2354 6.16227C21.1796 5.95015 21.0494 5.76779 20.8261 5.61893C20.6028 5.46635 20.3423 5.39564 20.0408 5.39564C19.3151 5.39564 18.7941 5.69708 18.7941 6.2367C18.7941 6.49721 18.9095 6.69073 19.1402 6.81726C19.3635 6.94379 19.732 7.07033 20.2344 7.18569C21.0084 7.37177 21.4922 7.51691 21.9686 7.7402C22.203 7.85557 22.3928 7.97465 22.5305 8.10863C22.7948 8.3803 22.9548 8.74501 22.9362 9.20276C22.9176 9.86147 22.6571 10.375 22.1547 10.7397C21.6523 11.1082 20.9563 11.2905 20.0818 11.2905C19.2072 11.2905 18.5597 11.1268 18.0312 10.8067C17.5065 10.4867 17.2013 10.0215 17.1194 9.41116L18.6192 9.27719C18.6974 9.57491 18.8723 9.7982 19.1514 9.94706C19.4305 10.0959 19.7394 10.1778 20.0818 10.1778C20.4614 10.1778 20.7777 10.0996 21.0308 9.9359C21.2838 9.77959 21.4104 9.56002 21.4104 9.28835C21.4104 8.90876 21.0531 8.61104 20.5991 8.43613C20.3683 8.35053 20.0855 8.27238 19.7468 8.19423C19.2705 8.07886 18.8946 7.97094 18.6155 7.87418C18.3364 7.78486 18.0908 7.66205 17.8712 7.51319C17.4358 7.21547 17.2832 6.8247 17.2832 6.2367C17.2832 5.61521 17.5325 5.13141 18.0312 4.79648C18.5262 4.46526 19.2035 4.29407 20.0669 4.29407C21.5853 4.29407 22.5752 4.9044 22.7389 6.05807L21.228 6.16227H21.2354Z",
17744
- fill: "currentColor"
17745
- }
17746
- ),
17747
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
17748
- "path",
17749
- {
17750
- d: "M29.4145 8.9796L30.7803 9.55271C30.49 10.0923 30.0621 10.5129 29.5001 10.8217C28.9382 11.1344 28.3167 11.2944 27.6319 11.2944C26.9472 11.2944 26.3629 11.1567 25.8121 10.8701C25.2613 10.5873 24.8147 10.1742 24.4835 9.6383C24.1523 9.09868 23.9811 8.48835 23.9811 7.79987C23.9811 7.11138 24.1486 6.49361 24.4835 5.95771C24.8147 5.41809 25.2613 5.00873 25.8121 4.72589C26.3629 4.44305 26.9732 4.30164 27.6319 4.30164C28.2906 4.30164 28.9382 4.45794 29.5038 4.77427C30.0658 5.08688 30.4938 5.51113 30.7803 6.05075L29.4145 6.62015C29.0535 5.93539 28.3985 5.56323 27.6319 5.56323C27.0327 5.56323 26.5303 5.77536 26.1135 6.19961C25.6967 6.62387 25.492 7.15977 25.492 7.80731C25.492 8.45486 25.6967 8.99076 26.1135 9.40757C26.5303 9.83182 27.0327 10.0439 27.6319 10.0439C28.3985 10.0439 29.0535 9.66807 29.4145 8.98703V8.9796Z",
17751
- fill: "currentColor"
17752
- }
17753
- ),
17754
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
17755
- "path",
17756
- {
17757
- d: "M37.4386 11.2049V7.80341C37.4386 6.35945 36.9139 5.59282 35.697 5.59282C35.0978 5.59282 34.614 5.7975 34.2419 6.21059C33.8623 6.61996 33.6725 7.15214 33.6725 7.80713V11.2086H32.1615V1.9234H33.6725V5.47745C34.1004 4.73315 35.001 4.29773 36.1919 4.29773C37.167 4.29773 37.8666 4.59917 38.302 5.19834C38.7375 5.7975 38.9533 6.66834 38.9533 7.80341V11.2049H37.4349H37.4386Z",
17758
- fill: "currentColor"
17759
- }
17760
- ),
17761
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
17762
- "path",
17763
- {
17764
- d: "M46.5692 5.38819C47.2167 6.07295 47.5777 7.1187 47.5107 8.30587H41.8242C41.9284 8.83805 42.1741 9.26602 42.5611 9.59352C42.9481 9.92473 43.4022 10.0885 43.9157 10.0885C44.8052 10.0885 45.5234 9.59724 45.8844 8.78222L47.1795 9.40372C46.8818 9.99172 46.4352 10.4495 45.8509 10.7881C45.2629 11.1268 44.6191 11.2943 43.9157 11.2943C42.9295 11.2943 42.0178 10.9444 41.3516 10.3453C40.6855 9.7461 40.2649 8.83432 40.2649 7.79602C40.2649 6.75771 40.6892 5.84222 41.3516 5.23933C42.0178 4.64017 42.9295 4.29034 43.9157 4.29034C44.9801 4.29034 45.9216 4.69971 46.5692 5.38447V5.38819ZM42.5388 6.00224C42.1592 6.32974 41.921 6.75772 41.8205 7.29734H46.0221C45.9179 6.75772 45.6835 6.3223 45.3039 5.99852C44.9243 5.67847 44.4628 5.51473 43.9195 5.51473C43.3761 5.51473 42.9221 5.67847 42.5425 6.00597L42.5388 6.00224Z",
17765
- fill: "currentColor"
17766
- }
17767
- ),
17768
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
17769
- "path",
17770
- {
17771
- d: "M59.7699 5.23933C60.1495 5.86827 60.3132 6.68329 60.3132 7.80347V11.2049H58.8023V7.80347C58.8023 6.35952 58.3371 5.59288 57.2318 5.59288C56.6438 5.59288 56.1861 5.79384 55.8586 6.19577C55.5311 6.60141 55.3673 7.13731 55.3673 7.80347V11.2049H53.8489V7.80347C53.8489 6.35952 53.3838 5.59288 52.2785 5.59288C51.6905 5.59288 51.2327 5.79384 50.9052 6.19577C50.574 6.60141 50.4102 7.13731 50.4102 7.80347V11.2049H48.8993V4.39827H50.3433L50.4102 5.47379C50.8196 4.65878 51.5825 4.29407 52.8106 4.29407C53.9606 4.29407 54.7161 4.78531 55.077 5.76407C55.5199 4.81508 56.4428 4.29407 57.7677 4.29407C58.7093 4.29407 59.3829 4.61412 59.7699 5.23562V5.23933Z",
17772
- fill: "currentColor"
17773
- }
17774
- ),
17775
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
17776
- "path",
17777
- {
17778
- d: "M67.4264 5.47382L67.4934 4.3983H68.9373V11.205H67.4934L67.4264 10.1294C67.0282 10.9147 66.1797 11.3092 64.8809 11.3017C63.102 11.3427 61.591 9.79823 61.6283 7.8035C61.591 5.8162 63.102 4.2606 64.8809 4.29782C66.0643 4.29782 67.0096 4.7444 67.4264 5.47754V5.47382ZM66.8049 9.37398C67.2217 8.95717 67.4264 8.43243 67.4264 7.79605C67.4264 7.15967 67.2217 6.64238 66.8049 6.21813C66.3881 5.80132 65.8782 5.58919 65.2828 5.58919C64.6874 5.58919 64.1887 5.80132 63.7719 6.21813C63.355 6.64238 63.1504 7.16711 63.1504 7.79605C63.1504 8.42499 63.355 8.95717 63.7719 9.37398C64.1887 9.79823 64.6911 10.0104 65.2828 10.0104C65.8745 10.0104 66.3881 9.79823 66.8049 9.37398Z",
17779
- fill: "currentColor"
17780
- }
17781
- ),
17782
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
17783
- "path",
17784
- {
17785
- d: "M71.3891 2.85757H72.8926V4.39828H74.6455V5.58172H72.8926V8.9683C72.8926 9.5898 73.1048 9.90985 73.5923 9.96568C73.89 10.0252 74.2398 10.0141 74.6455 9.9359V11.1863C74.1989 11.257 73.7858 11.2943 73.4062 11.2943C72.6731 11.2943 72.1595 11.1082 71.8543 10.7323C71.5454 10.3639 71.3891 9.79076 71.3891 9.02041V5.58172H70.4215V4.39828H71.3891V2.85757Z",
17786
- fill: "currentColor"
17787
- }
17788
- ),
17789
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
17790
- "path",
17791
- {
17792
- d: "M76.1747 3.15526C75.9923 2.98035 75.903 2.76078 75.903 2.50772C75.903 2.25466 75.9923 2.04997 76.1747 1.86762C76.3496 1.69271 76.5691 1.60339 76.8222 1.60339C77.0753 1.60339 77.2874 1.69271 77.4623 1.86762C77.6372 2.04997 77.7265 2.2621 77.7265 2.50772C77.7265 2.75334 77.6372 2.97291 77.4623 3.15526C77.2874 3.33762 77.0678 3.42694 76.8222 3.42694C76.5766 3.42694 76.3496 3.33762 76.1747 3.15526ZM76.0593 4.39826H77.5777V11.2049H76.0593V4.39826Z",
17793
- fill: "currentColor"
17794
- }
17795
- ),
17796
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
17797
- "path",
17798
- {
17799
- d: "M84.3023 8.9796L85.6681 9.55271C85.3778 10.0923 84.9498 10.5129 84.3879 10.8217C83.8259 11.1344 83.2044 11.2944 82.5197 11.2944C81.8349 11.2944 81.2506 11.1567 80.6998 10.8701C80.1491 10.5873 79.7025 10.1742 79.3713 9.6383C79.04 9.09868 78.8689 8.48835 78.8689 7.79987C78.8689 7.11138 79.0363 6.49361 79.3713 5.95771C79.7025 5.41809 80.1528 5.00873 80.6998 4.72589C81.2469 4.44305 81.8609 4.30164 82.5197 4.30164C83.1784 4.30164 83.8259 4.45794 84.3916 4.77427C84.9535 5.08688 85.3815 5.51113 85.6681 6.05075L84.3023 6.62015C83.9413 5.93539 83.2863 5.56323 82.5197 5.56323C81.9205 5.56323 81.4181 5.77536 81.0013 6.19961C80.5845 6.62387 80.3798 7.15977 80.3798 7.80731C80.3798 8.45486 80.5845 8.99076 81.0013 9.40757C81.4181 9.83182 81.9205 10.0439 82.5197 10.0439C83.2863 10.0439 83.9413 9.66807 84.3023 8.98703V8.9796Z",
17800
- fill: "currentColor"
17801
- }
17802
- ),
17803
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
17804
- "path",
17805
- {
17806
- d: "M5.93091 10.8141L7.2758 9.41753L3.83719 5.84667C2.98568 4.9624 2.98568 3.52157 3.83719 2.63731C4.68871 1.75305 6.07617 1.75305 6.92769 2.63731L10.3663 6.20817L11.7112 4.81156L8.27258 1.24069C6.67975 -0.413401 4.08513 -0.413401 2.4923 1.24069C0.899472 2.89479 0.899472 5.58919 2.4923 7.24328L5.93091 10.8141Z",
17807
- fill: "currentColor"
17808
- }
17809
- ),
17810
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
17811
- "path",
17812
- {
17813
- d: "M6.05827 3.54751C5.68761 3.1626 5.08404 3.1626 4.71338 3.54751C4.34272 3.93243 4.34272 4.55921 4.71338 4.94413L9.02103 9.41746L5.93054 12.6268L1.62288 8.15349C1.25223 7.76857 0.648653 7.76857 0.277994 8.15349C-0.0926647 8.5384 -0.0926647 9.16519 0.277994 9.5501L5.93054 15.4201L11.7108 9.41746L6.05827 3.54751Z",
17814
- fill: "currentColor"
17815
- }
17816
- )
18026
+ t2("Powered by"),
18027
+ " "
17817
18028
  ]
17818
18029
  }
17819
- )
18030
+ ),
18031
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("svg", { viewBox: "0 0 86 16", width: 86, height: 16, children: [
18032
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
18033
+ "path",
18034
+ {
18035
+ d: "M21.2354 6.16227C21.1796 5.95015 21.0494 5.76779 20.8261 5.61893C20.6028 5.46635 20.3423 5.39564 20.0408 5.39564C19.3151 5.39564 18.7941 5.69708 18.7941 6.2367C18.7941 6.49721 18.9095 6.69073 19.1402 6.81726C19.3635 6.94379 19.732 7.07033 20.2344 7.18569C21.0084 7.37177 21.4922 7.51691 21.9686 7.7402C22.203 7.85557 22.3928 7.97465 22.5305 8.10863C22.7948 8.3803 22.9548 8.74501 22.9362 9.20276C22.9176 9.86147 22.6571 10.375 22.1547 10.7397C21.6523 11.1082 20.9563 11.2905 20.0818 11.2905C19.2072 11.2905 18.5597 11.1268 18.0312 10.8067C17.5065 10.4867 17.2013 10.0215 17.1194 9.41116L18.6192 9.27719C18.6974 9.57491 18.8723 9.7982 19.1514 9.94706C19.4305 10.0959 19.7394 10.1778 20.0818 10.1778C20.4614 10.1778 20.7777 10.0996 21.0308 9.9359C21.2838 9.77959 21.4104 9.56002 21.4104 9.28835C21.4104 8.90876 21.0531 8.61104 20.5991 8.43613C20.3683 8.35053 20.0855 8.27238 19.7468 8.19423C19.2705 8.07886 18.8946 7.97094 18.6155 7.87418C18.3364 7.78486 18.0908 7.66205 17.8712 7.51319C17.4358 7.21547 17.2832 6.8247 17.2832 6.2367C17.2832 5.61521 17.5325 5.13141 18.0312 4.79648C18.5262 4.46526 19.2035 4.29407 20.0669 4.29407C21.5853 4.29407 22.5752 4.9044 22.7389 6.05807L21.228 6.16227H21.2354Z",
18036
+ fill: "currentColor"
18037
+ }
18038
+ ),
18039
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
18040
+ "path",
18041
+ {
18042
+ d: "M29.4145 8.9796L30.7803 9.55271C30.49 10.0923 30.0621 10.5129 29.5001 10.8217C28.9382 11.1344 28.3167 11.2944 27.6319 11.2944C26.9472 11.2944 26.3629 11.1567 25.8121 10.8701C25.2613 10.5873 24.8147 10.1742 24.4835 9.6383C24.1523 9.09868 23.9811 8.48835 23.9811 7.79987C23.9811 7.11138 24.1486 6.49361 24.4835 5.95771C24.8147 5.41809 25.2613 5.00873 25.8121 4.72589C26.3629 4.44305 26.9732 4.30164 27.6319 4.30164C28.2906 4.30164 28.9382 4.45794 29.5038 4.77427C30.0658 5.08688 30.4938 5.51113 30.7803 6.05075L29.4145 6.62015C29.0535 5.93539 28.3985 5.56323 27.6319 5.56323C27.0327 5.56323 26.5303 5.77536 26.1135 6.19961C25.6967 6.62387 25.492 7.15977 25.492 7.80731C25.492 8.45486 25.6967 8.99076 26.1135 9.40757C26.5303 9.83182 27.0327 10.0439 27.6319 10.0439C28.3985 10.0439 29.0535 9.66807 29.4145 8.98703V8.9796Z",
18043
+ fill: "currentColor"
18044
+ }
18045
+ ),
18046
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
18047
+ "path",
18048
+ {
18049
+ d: "M37.4386 11.2049V7.80341C37.4386 6.35945 36.9139 5.59282 35.697 5.59282C35.0978 5.59282 34.614 5.7975 34.2419 6.21059C33.8623 6.61996 33.6725 7.15214 33.6725 7.80713V11.2086H32.1615V1.9234H33.6725V5.47745C34.1004 4.73315 35.001 4.29773 36.1919 4.29773C37.167 4.29773 37.8666 4.59917 38.302 5.19834C38.7375 5.7975 38.9533 6.66834 38.9533 7.80341V11.2049H37.4349H37.4386Z",
18050
+ fill: "currentColor"
18051
+ }
18052
+ ),
18053
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
18054
+ "path",
18055
+ {
18056
+ d: "M46.5692 5.38819C47.2167 6.07295 47.5777 7.1187 47.5107 8.30587H41.8242C41.9284 8.83805 42.1741 9.26602 42.5611 9.59352C42.9481 9.92473 43.4022 10.0885 43.9157 10.0885C44.8052 10.0885 45.5234 9.59724 45.8844 8.78222L47.1795 9.40372C46.8818 9.99172 46.4352 10.4495 45.8509 10.7881C45.2629 11.1268 44.6191 11.2943 43.9157 11.2943C42.9295 11.2943 42.0178 10.9444 41.3516 10.3453C40.6855 9.7461 40.2649 8.83432 40.2649 7.79602C40.2649 6.75771 40.6892 5.84222 41.3516 5.23933C42.0178 4.64017 42.9295 4.29034 43.9157 4.29034C44.9801 4.29034 45.9216 4.69971 46.5692 5.38447V5.38819ZM42.5388 6.00224C42.1592 6.32974 41.921 6.75772 41.8205 7.29734H46.0221C45.9179 6.75772 45.6835 6.3223 45.3039 5.99852C44.9243 5.67847 44.4628 5.51473 43.9195 5.51473C43.3761 5.51473 42.9221 5.67847 42.5425 6.00597L42.5388 6.00224Z",
18057
+ fill: "currentColor"
18058
+ }
18059
+ ),
18060
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
18061
+ "path",
18062
+ {
18063
+ d: "M59.7699 5.23933C60.1495 5.86827 60.3132 6.68329 60.3132 7.80347V11.2049H58.8023V7.80347C58.8023 6.35952 58.3371 5.59288 57.2318 5.59288C56.6438 5.59288 56.1861 5.79384 55.8586 6.19577C55.5311 6.60141 55.3673 7.13731 55.3673 7.80347V11.2049H53.8489V7.80347C53.8489 6.35952 53.3838 5.59288 52.2785 5.59288C51.6905 5.59288 51.2327 5.79384 50.9052 6.19577C50.574 6.60141 50.4102 7.13731 50.4102 7.80347V11.2049H48.8993V4.39827H50.3433L50.4102 5.47379C50.8196 4.65878 51.5825 4.29407 52.8106 4.29407C53.9606 4.29407 54.7161 4.78531 55.077 5.76407C55.5199 4.81508 56.4428 4.29407 57.7677 4.29407C58.7093 4.29407 59.3829 4.61412 59.7699 5.23562V5.23933Z",
18064
+ fill: "currentColor"
18065
+ }
18066
+ ),
18067
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
18068
+ "path",
18069
+ {
18070
+ d: "M67.4264 5.47382L67.4934 4.3983H68.9373V11.205H67.4934L67.4264 10.1294C67.0282 10.9147 66.1797 11.3092 64.8809 11.3017C63.102 11.3427 61.591 9.79823 61.6283 7.8035C61.591 5.8162 63.102 4.2606 64.8809 4.29782C66.0643 4.29782 67.0096 4.7444 67.4264 5.47754V5.47382ZM66.8049 9.37398C67.2217 8.95717 67.4264 8.43243 67.4264 7.79605C67.4264 7.15967 67.2217 6.64238 66.8049 6.21813C66.3881 5.80132 65.8782 5.58919 65.2828 5.58919C64.6874 5.58919 64.1887 5.80132 63.7719 6.21813C63.355 6.64238 63.1504 7.16711 63.1504 7.79605C63.1504 8.42499 63.355 8.95717 63.7719 9.37398C64.1887 9.79823 64.6911 10.0104 65.2828 10.0104C65.8745 10.0104 66.3881 9.79823 66.8049 9.37398Z",
18071
+ fill: "currentColor"
18072
+ }
18073
+ ),
18074
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
18075
+ "path",
18076
+ {
18077
+ d: "M71.3891 2.85757H72.8926V4.39828H74.6455V5.58172H72.8926V8.9683C72.8926 9.5898 73.1048 9.90985 73.5923 9.96568C73.89 10.0252 74.2398 10.0141 74.6455 9.9359V11.1863C74.1989 11.257 73.7858 11.2943 73.4062 11.2943C72.6731 11.2943 72.1595 11.1082 71.8543 10.7323C71.5454 10.3639 71.3891 9.79076 71.3891 9.02041V5.58172H70.4215V4.39828H71.3891V2.85757Z",
18078
+ fill: "currentColor"
18079
+ }
18080
+ ),
18081
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
18082
+ "path",
18083
+ {
18084
+ d: "M76.1747 3.15526C75.9923 2.98035 75.903 2.76078 75.903 2.50772C75.903 2.25466 75.9923 2.04997 76.1747 1.86762C76.3496 1.69271 76.5691 1.60339 76.8222 1.60339C77.0753 1.60339 77.2874 1.69271 77.4623 1.86762C77.6372 2.04997 77.7265 2.2621 77.7265 2.50772C77.7265 2.75334 77.6372 2.97291 77.4623 3.15526C77.2874 3.33762 77.0678 3.42694 76.8222 3.42694C76.5766 3.42694 76.3496 3.33762 76.1747 3.15526ZM76.0593 4.39826H77.5777V11.2049H76.0593V4.39826Z",
18085
+ fill: "currentColor"
18086
+ }
18087
+ ),
18088
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
18089
+ "path",
18090
+ {
18091
+ d: "M84.3023 8.9796L85.6681 9.55271C85.3778 10.0923 84.9498 10.5129 84.3879 10.8217C83.8259 11.1344 83.2044 11.2944 82.5197 11.2944C81.8349 11.2944 81.2506 11.1567 80.6998 10.8701C80.1491 10.5873 79.7025 10.1742 79.3713 9.6383C79.04 9.09868 78.8689 8.48835 78.8689 7.79987C78.8689 7.11138 79.0363 6.49361 79.3713 5.95771C79.7025 5.41809 80.1528 5.00873 80.6998 4.72589C81.2469 4.44305 81.8609 4.30164 82.5197 4.30164C83.1784 4.30164 83.8259 4.45794 84.3916 4.77427C84.9535 5.08688 85.3815 5.51113 85.6681 6.05075L84.3023 6.62015C83.9413 5.93539 83.2863 5.56323 82.5197 5.56323C81.9205 5.56323 81.4181 5.77536 81.0013 6.19961C80.5845 6.62387 80.3798 7.15977 80.3798 7.80731C80.3798 8.45486 80.5845 8.99076 81.0013 9.40757C81.4181 9.83182 81.9205 10.0439 82.5197 10.0439C83.2863 10.0439 83.9413 9.66807 84.3023 8.98703V8.9796Z",
18092
+ fill: "currentColor"
18093
+ }
18094
+ ),
18095
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
18096
+ "path",
18097
+ {
18098
+ d: "M5.93091 10.8141L7.2758 9.41753L3.83719 5.84667C2.98568 4.9624 2.98568 3.52157 3.83719 2.63731C4.68871 1.75305 6.07617 1.75305 6.92769 2.63731L10.3663 6.20817L11.7112 4.81156L8.27258 1.24069C6.67975 -0.413401 4.08513 -0.413401 2.4923 1.24069C0.899472 2.89479 0.899472 5.58919 2.4923 7.24328L5.93091 10.8141Z",
18099
+ fill: "currentColor"
18100
+ }
18101
+ ),
18102
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
18103
+ "path",
18104
+ {
18105
+ d: "M6.05827 3.54751C5.68761 3.1626 5.08404 3.1626 4.71338 3.54751C4.34272 3.93243 4.34272 4.55921 4.71338 4.94413L9.02103 9.41746L5.93054 12.6268L1.62288 8.15349C1.25223 7.76857 0.648653 7.76857 0.277994 8.15349C-0.0926647 8.5384 -0.0926647 9.16519 0.277994 9.5501L5.93054 15.4201L11.7108 9.41746L6.05827 3.54751Z",
18106
+ fill: "currentColor"
18107
+ }
18108
+ )
18109
+ ] })
17820
18110
  ]
17821
18111
  }
17822
18112
  );
@@ -17893,7 +18183,7 @@ var StyledViewport = dt(Box).attrs(({ theme }) => ({
17893
18183
  var import_jsx_runtime23 = require("react/jsx-runtime");
17894
18184
  var Viewport = (0, import_react28.forwardRef)(
17895
18185
  ({ children, portal, ...props }, ref) => {
17896
- const { data, layout } = useEmbed();
18186
+ const { data, layout, settings } = useEmbed();
17897
18187
  const [top, setTop] = (0, import_react28.useState)(0);
17898
18188
  const canCheckout = data.capabilities?.checkout ?? true;
17899
18189
  (0, import_react28.useLayoutEffect)(() => {
@@ -17911,7 +18201,7 @@ var Viewport = (0, import_react28.forwardRef)(
17911
18201
  return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
17912
18202
  /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(StyledViewport, { ref, ...props, children: [
17913
18203
  /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(RenderLayout, { children }),
17914
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Badge, {})
18204
+ (!data.capabilities?.badgeVisibility || settings.badge?.visibility !== "hidden") && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Badge, {})
17915
18205
  ] }),
17916
18206
  canCheckout && layout === "checkout" && (0, import_react_dom2.createPortal)(/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(CheckoutDialog, { top }), portal || document.body),
17917
18207
  layout === "unsubscribe" && (0, import_react_dom2.createPortal)(
@@ -17939,14 +18229,7 @@ var StyledCard = dt.div(({ theme }) => {
17939
18229
  const borderRadius = `${theme.card.borderRadius / TEXT_BASE_SIZE}rem`;
17940
18230
  return lt`
17941
18231
  position: relative;
17942
- box-sizing: border-box;
17943
- font-size: ${TEXT_BASE_SIZE}px;
17944
-
17945
- *,
17946
- *::before,
17947
- *::after {
17948
- box-sizing: inherit;
17949
- }
18232
+ overflow: hidden;
17950
18233
 
17951
18234
  ${theme.sectionLayout === "merged" ? `&:not(:has(${FussyChild}))` : `${Element}:not(:is(${FussyChild}))`} {
17952
18235
  color: ${theme.typography.text.color};
@@ -18016,7 +18299,6 @@ Column.displayName = "Column";
18016
18299
 
18017
18300
  // src/components/elements/included-features/Details.tsx
18018
18301
  var import_react31 = require("react");
18019
- var import_pluralize4 = __toESM(require_pluralize());
18020
18302
  var import_jsx_runtime26 = require("react/jsx-runtime");
18021
18303
  var Details = ({
18022
18304
  details,
@@ -18061,35 +18343,35 @@ var Details = ({
18061
18343
  yearlyUsageBasedPrice
18062
18344
  ]);
18063
18345
  const text = (0, import_react31.useMemo)(() => {
18064
- if (!feature?.name) {
18346
+ if (!feature) {
18065
18347
  return;
18066
18348
  }
18067
18349
  if (priceBehavior === "pay_in_advance" && typeof allocation === "number") {
18068
- return `${formatNumber(allocation)} ${(0, import_pluralize4.default)(feature.name, allocation)}`;
18350
+ return `${formatNumber(allocation)} ${getFeatureName(feature, allocation)}`;
18069
18351
  }
18070
18352
  if (priceBehavior === "pay_as_you_go" && typeof price === "number") {
18071
- return `${formatCurrency(price, currency)} ${t2("per")} ${(0, import_pluralize4.default)(feature.name.toLowerCase(), 1)}`;
18353
+ return `${formatCurrency(price, currency)} ${t2("per")} ${getFeatureName(feature, 1)}`;
18072
18354
  }
18073
18355
  if (priceBehavior === "overage" && typeof softLimit === "number") {
18074
- return `${formatNumber(softLimit)} ${(0, import_pluralize4.default)(feature.name, softLimit)}`;
18356
+ return `${formatNumber(softLimit)} ${getFeatureName(feature, softLimit)}`;
18075
18357
  }
18076
18358
  if (!priceBehavior && typeof allocation === "number") {
18077
- return `${formatNumber(allocation)} ${(0, import_pluralize4.default)(feature.name, allocation)}`;
18359
+ return `${formatNumber(allocation)} ${getFeatureName(feature, allocation)}`;
18078
18360
  }
18079
18361
  if (!priceBehavior) {
18080
- return t2("Unlimited", { item: (0, import_pluralize4.default)(feature.name) });
18362
+ return t2("Unlimited", { item: getFeatureName(feature) });
18081
18363
  }
18082
- }, [t2, allocation, feature?.name, price, priceBehavior, currency, softLimit]);
18364
+ }, [t2, allocation, feature, price, priceBehavior, currency, softLimit]);
18083
18365
  const usageText = (0, import_react31.useMemo)(() => {
18084
- if (!feature?.name) {
18366
+ if (!feature) {
18085
18367
  return;
18086
18368
  }
18087
18369
  if (usageData) {
18088
18370
  let acc;
18089
18371
  if (priceBehavior === "pay_in_advance" && typeof data.company?.plan?.planPeriod === "string" && typeof price === "number") {
18090
- acc = `${formatCurrency(price, currency)}/${(0, import_pluralize4.default)(feature.name.toLowerCase(), 1)}/${shortenPeriod(data.company.plan.planPeriod)}`;
18372
+ acc = `${formatCurrency(price, currency)}/${getFeatureName(feature, 1)}/${shortenPeriod(data.company.plan.planPeriod)}`;
18091
18373
  } else if ((priceBehavior === "pay_as_you_go" || priceBehavior === "overage") && typeof usage === "number") {
18092
- acc = `${usage} ${(0, import_pluralize4.default)(feature.name.toLowerCase(), usage)} ${t2("used")}`;
18374
+ acc = `${usage} ${getFeatureName(feature, usage)} ${t2("used")}`;
18093
18375
  }
18094
18376
  if (acc) {
18095
18377
  if (priceBehavior === "pay_in_advance" && typeof price === "number" && typeof allocation === "number") {
@@ -18099,7 +18381,7 @@ var Details = ({
18099
18381
  } else if (priceBehavior === "overage" && typeof price === "number" && typeof usage === "number" && typeof softLimit === "number") {
18100
18382
  const cost = price * (usage - softLimit);
18101
18383
  const period = feature.featureType === "event" && typeof data.company?.plan?.planPeriod === "string" ? `/${shortenPeriod(data.company.plan.planPeriod)}` : "";
18102
- acc += cost > 0 ? ` \u2022 ${t2("Overage")}: ${formatCurrency(cost)}${period}` : ` \u2022 ${`${formatCurrency(price)}/${(0, import_pluralize4.default)(feature.name.toLowerCase(), 1)}`} ${t2("overage fee")}`;
18384
+ acc += cost > 0 ? ` \u2022 ${t2("Overage")}: ${formatCurrency(cost)}${period}` : ` \u2022 ${`${formatCurrency(price)}/${getFeatureName(feature, 1)}`} ${t2("overage fee")}`;
18103
18385
  }
18104
18386
  return acc;
18105
18387
  }
@@ -18115,8 +18397,7 @@ var Details = ({
18115
18397
  }, [
18116
18398
  t2,
18117
18399
  data.company?.plan?.planPeriod,
18118
- feature?.name,
18119
- feature?.featureType,
18400
+ feature,
18120
18401
  priceBehavior,
18121
18402
  allocation,
18122
18403
  price,
@@ -18141,8 +18422,8 @@ var Details = ({
18141
18422
  $font: theme.typography[props.entitlement.fontStyle].fontFamily,
18142
18423
  $size: theme.typography[props.entitlement.fontStyle].fontSize,
18143
18424
  $weight: theme.typography[props.entitlement.fontStyle].fontWeight,
18144
- $leading: 1,
18145
18425
  $color: theme.typography[props.entitlement.fontStyle].color,
18426
+ $leading: 1,
18146
18427
  children: text
18147
18428
  }
18148
18429
  ) }),
@@ -18152,8 +18433,8 @@ var Details = ({
18152
18433
  $font: theme.typography[props.usage.fontStyle].fontFamily,
18153
18434
  $size: theme.typography[props.usage.fontStyle].fontSize,
18154
18435
  $weight: theme.typography[props.usage.fontStyle].fontWeight,
18155
- $leading: 1,
18156
18436
  $color: theme.typography[props.usage.fontStyle].color,
18437
+ $leading: 1,
18157
18438
  children: usageText
18158
18439
  }
18159
18440
  ) })
@@ -18201,7 +18482,19 @@ var IncludedFeatures = (0, import_react32.forwardRef)(({ className, ...rest }, r
18201
18482
  const shouldWrapChildren = useWrapChildren(elements.current);
18202
18483
  const isLightBackground = useIsLightBackground();
18203
18484
  const [showCount, setShowCount] = (0, import_react32.useState)(VISIBLE_ENTITLEMENT_COUNT);
18204
- const entitlements = (data.featureUsage?.features || []).reduce(
18485
+ const orderedFeatureUsage = props.visibleFeatures?.reduce(
18486
+ (acc, id) => {
18487
+ const mappedFeatureUsage = data.featureUsage?.features.find(
18488
+ (usage) => usage.feature?.id === id
18489
+ );
18490
+ if (mappedFeatureUsage) {
18491
+ acc.push(mappedFeatureUsage);
18492
+ }
18493
+ return acc;
18494
+ },
18495
+ []
18496
+ );
18497
+ const entitlements = (orderedFeatureUsage || data.featureUsage?.features || []).reduce(
18205
18498
  (acc, usage) => {
18206
18499
  const mappedUsageData = data.activeUsageBasedEntitlements.find(
18207
18500
  (entitlement) => entitlement.featureId === usage.feature?.id
@@ -18296,8 +18589,8 @@ var IncludedFeatures = (0, import_react32.forwardRef)(({ className, ...rest }, r
18296
18589
  $font: theme.typography[props.entitlementExpiration.fontStyle].fontFamily,
18297
18590
  $size: theme.typography[props.entitlementExpiration.fontStyle].fontSize,
18298
18591
  $weight: theme.typography[props.entitlementExpiration.fontStyle].fontWeight,
18299
- $leading: 1,
18300
18592
  $color: theme.typography[props.entitlementExpiration.fontStyle].color,
18593
+ $leading: 1,
18301
18594
  children: [
18302
18595
  "Expires",
18303
18596
  " ",
@@ -18343,8 +18636,8 @@ var IncludedFeatures = (0, import_react32.forwardRef)(({ className, ...rest }, r
18343
18636
  $font: theme.typography.link.fontFamily,
18344
18637
  $size: theme.typography.link.fontSize,
18345
18638
  $weight: theme.typography.link.fontWeight,
18346
- $leading: 1,
18347
18639
  $color: theme.typography.link.color,
18640
+ $leading: 1,
18348
18641
  style: { cursor: "pointer" },
18349
18642
  children: isExpanded ? t2("Hide all") : t2("See all")
18350
18643
  }
@@ -18384,7 +18677,7 @@ function resolveDesignProps2(props) {
18384
18677
  };
18385
18678
  }
18386
18679
  function formatInvoices(invoices = []) {
18387
- return invoices.filter(({ amountDue, amountPaid }) => amountDue === 0 || amountPaid > 0).sort((a2, b2) => a2.dueDate && b2.dueDate ? +b2.dueDate - +a2.dueDate : 1).map(({ amountDue, dueDate, url, currency }) => ({
18680
+ return invoices.sort((a2, b2) => a2.dueDate && b2.dueDate ? +b2.dueDate - +a2.dueDate : 1).map(({ amountDue, dueDate, url, currency }) => ({
18388
18681
  amount: formatCurrency(amountDue, currency),
18389
18682
  ...dueDate && { date: toPrettyDate(dueDate) },
18390
18683
  ...url && { url }
@@ -18488,7 +18781,6 @@ Invoices.displayName = "Invoices";
18488
18781
 
18489
18782
  // src/components/elements/metered-features/MeteredFeatures.tsx
18490
18783
  var import_react34 = require("react");
18491
- var import_pluralize5 = __toESM(require_pluralize());
18492
18784
 
18493
18785
  // src/components/elements/metered-features/styles.ts
18494
18786
  var Container4 = dt(Flex)`
@@ -18542,44 +18834,54 @@ var MeteredFeatures = (0, import_react34.forwardRef)(({ className, ...rest }, re
18542
18834
  const theme = nt();
18543
18835
  const { data, setLayout, setSelected } = useEmbed();
18544
18836
  const isLightBackground = useIsLightBackground();
18545
- const { planPeriod } = data.company?.plan || {};
18546
- const featureUsage = (props.visibleFeatures ? props.visibleFeatures.reduce((acc, id) => {
18547
- const mappedFeatureUsage = data.featureUsage?.features.find(
18548
- (usage) => usage.feature?.id === id
18837
+ const meteredFeatures = (0, import_react34.useMemo)(() => {
18838
+ return (props.visibleFeatures ? props.visibleFeatures.reduce(
18839
+ (acc, id) => {
18840
+ const mappedFeatureUsage = data.featureUsage?.features.find(
18841
+ (usage) => usage.feature?.id === id
18842
+ );
18843
+ if (mappedFeatureUsage) {
18844
+ acc.push(mappedFeatureUsage);
18845
+ }
18846
+ return acc;
18847
+ },
18848
+ []
18849
+ ) : data.featureUsage?.features || []).filter(
18850
+ (usage) => usage.feature?.featureType === "event" || usage.feature?.featureType === "trait"
18549
18851
  );
18550
- if (mappedFeatureUsage) {
18551
- acc.push(mappedFeatureUsage);
18552
- }
18553
- return acc;
18554
- }, []) : data.featureUsage?.features || []).filter(
18555
- (usage) => usage.feature?.featureType === "event" || usage.feature?.featureType === "trait"
18556
- );
18557
- const shouldShowFeatures = featureUsage.length > 0 || data.company?.plan || (data.company?.addOns ?? []).length > 0 || false;
18852
+ }, [props.visibleFeatures, data.featureUsage?.features]);
18853
+ const planPeriod = data.company?.plan?.planPeriod;
18854
+ const shouldShowFeatures = meteredFeatures.length > 0 || data.company?.plan || (data.company?.addOns ?? []).length > 0 || false;
18558
18855
  if (!shouldShowFeatures) {
18559
18856
  return null;
18560
18857
  }
18561
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Container4, { ref, className, children: featureUsage.map(
18858
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Container4, { ref, className, children: meteredFeatures.map(
18562
18859
  ({
18563
- allocation,
18564
18860
  feature,
18861
+ priceBehavior,
18565
18862
  usage,
18863
+ allocation,
18566
18864
  softLimit,
18567
- priceBehavior,
18568
18865
  metricResetAt,
18569
18866
  monthlyUsageBasedPrice,
18570
18867
  yearlyUsageBasedPrice
18571
18868
  }, index) => {
18572
- const limit = allocation || softLimit || 0;
18869
+ const limit = softLimit ?? allocation ?? 0;
18573
18870
  const isOverage = priceBehavior === "overage" && typeof softLimit === "number" && typeof usage === "number" && usage > softLimit;
18574
- let price;
18575
- let currency;
18576
- if (planPeriod === "month") {
18577
- price = monthlyUsageBasedPrice?.price;
18578
- currency = monthlyUsageBasedPrice?.currency;
18579
- } else if (planPeriod === "year") {
18580
- price = yearlyUsageBasedPrice?.price;
18581
- currency = yearlyUsageBasedPrice?.currency;
18582
- }
18871
+ const { price, currency } = (planPeriod === "month" ? monthlyUsageBasedPrice : planPeriod === "year" && yearlyUsageBasedPrice) || {};
18872
+ const progressBar = props.isVisible && typeof usage === "number" && priceBehavior !== "pay_as_you_go" && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
18873
+ ProgressBar,
18874
+ {
18875
+ progress: (isOverage ? softLimit / usage : usage / limit) * 100,
18876
+ value: usage,
18877
+ total: isOverage ? softLimit : limit,
18878
+ color: isOverage ? "blue" : progressColorMap[Math.floor(
18879
+ Math.min(usage, limit) / limit * (progressColorMap.length - 1)
18880
+ )],
18881
+ ...isOverage && { bgColor: "#EF4444" },
18882
+ $flexGrow: 1
18883
+ }
18884
+ );
18583
18885
  return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Flex, { $flexDirection: "column-reverse", children: [
18584
18886
  priceBehavior === "overage" && typeof price === "number" && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
18585
18887
  Flex,
@@ -18596,16 +18898,17 @@ var MeteredFeatures = (0, import_react34.forwardRef)(({ className, ...rest }, re
18596
18898
  $size: theme.typography.text.fontSize,
18597
18899
  $weight: theme.typography.text.fontWeight,
18598
18900
  $color: theme.typography.text.color,
18901
+ $leading: 1.35,
18599
18902
  children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
18600
18903
  t2("Overage fee"),
18601
18904
  ": ",
18602
18905
  formatCurrency(price, currency),
18603
- feature && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("sub", { children: [
18906
+ feature && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Box, { as: "sub", $whiteSpace: "nowrap", children: [
18604
18907
  "/",
18605
- (0, import_pluralize5.default)(feature.name.toLowerCase(), 1),
18606
- feature.featureType === "event" && data.company?.plan?.planPeriod && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
18908
+ getFeatureName(feature, 1),
18909
+ feature.featureType === "trait" && planPeriod && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
18607
18910
  "/",
18608
- shortenPeriod(data.company.plan.planPeriod)
18911
+ shortenPeriod(planPeriod)
18609
18912
  ] })
18610
18913
  ] })
18611
18914
  ] })
@@ -18618,13 +18921,17 @@ var MeteredFeatures = (0, import_react34.forwardRef)(({ className, ...rest }, re
18618
18921
  $size: theme.typography.text.fontSize,
18619
18922
  $weight: theme.typography.text.fontWeight,
18620
18923
  $color: theme.typography.text.color,
18924
+ $leading: 1.35,
18621
18925
  children: [
18622
18926
  t2("X over the limit", {
18623
18927
  amount: usage - softLimit
18624
18928
  }),
18625
18929
  " \xB7 ",
18626
18930
  formatCurrency(price * (usage - softLimit), currency),
18627
- feature?.featureType === "event" && typeof data.company?.plan?.planPeriod === "string" && `/${shortenPeriod(data.company.plan.planPeriod)}`
18931
+ feature?.featureType === "trait" && typeof planPeriod === "string" && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Box, { as: "sub", $whiteSpace: "nowrap", children: [
18932
+ "/",
18933
+ shortenPeriod(planPeriod)
18934
+ ] })
18628
18935
  ]
18629
18936
  }
18630
18937
  )
@@ -18643,7 +18950,7 @@ var MeteredFeatures = (0, import_react34.forwardRef)(({ className, ...rest }, re
18643
18950
  ]
18644
18951
  }
18645
18952
  ),
18646
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Flex, { $flexDirection: "column", $gap: "2rem", $flexGrow: "1", children: [
18953
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Flex, { $flexDirection: "column", $gap: "2rem", $flexGrow: 1, children: [
18647
18954
  /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
18648
18955
  Flex,
18649
18956
  {
@@ -18655,7 +18962,7 @@ var MeteredFeatures = (0, import_react34.forwardRef)(({ className, ...rest }, re
18655
18962
  $flexWrap: "wrap",
18656
18963
  $gap: "1rem",
18657
18964
  children: [
18658
- feature?.name && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Flex, { $flexDirection: "column", $gap: "0.5rem", $flexGrow: "1", children: [
18965
+ feature?.name && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Flex, { $flexDirection: "column", $gap: "0.5rem", $flexGrow: 1, children: [
18659
18966
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
18660
18967
  Text,
18661
18968
  {
@@ -18664,10 +18971,11 @@ var MeteredFeatures = (0, import_react34.forwardRef)(({ className, ...rest }, re
18664
18971
  $size: theme.typography[props.header.fontStyle].fontSize,
18665
18972
  $weight: theme.typography[props.header.fontStyle].fontWeight,
18666
18973
  $color: theme.typography[props.header.fontStyle].color,
18974
+ $leading: 1.35,
18667
18975
  children: priceBehavior === "pay_as_you_go" ? typeof usage === "number" && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
18668
18976
  formatNumber(usage),
18669
18977
  " ",
18670
- (0, import_pluralize5.default)(feature.name, usage)
18978
+ getFeatureName(feature, usage)
18671
18979
  ] }) : feature.name
18672
18980
  }
18673
18981
  ),
@@ -18687,7 +18995,7 @@ var MeteredFeatures = (0, import_react34.forwardRef)(({ className, ...rest }, re
18687
18995
  Box,
18688
18996
  {
18689
18997
  $flexBasis: "min-content",
18690
- $flexGrow: "1",
18998
+ $flexGrow: 1,
18691
18999
  $textAlign: shouldWrapChildren ? "left" : "right",
18692
19000
  children: [
18693
19001
  props.usage.isVisible && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
@@ -18697,16 +19005,16 @@ var MeteredFeatures = (0, import_react34.forwardRef)(({ className, ...rest }, re
18697
19005
  $font: theme.typography[props.usage.fontStyle].fontFamily,
18698
19006
  $size: theme.typography[props.usage.fontStyle].fontSize,
18699
19007
  $weight: theme.typography[props.usage.fontStyle].fontWeight,
18700
- $leading: 1.35,
18701
19008
  $color: theme.typography[props.usage.fontStyle].color,
19009
+ $leading: 1.35,
18702
19010
  children: priceBehavior === "pay_in_advance" ? typeof allocation === "number" && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
18703
19011
  formatNumber(allocation),
18704
19012
  " ",
18705
- (0, import_pluralize5.default)(feature.name, allocation)
19013
+ getFeatureName(feature, allocation)
18706
19014
  ] }) : priceBehavior === "pay_as_you_go" ? typeof price === "number" && typeof usage === "number" && formatCurrency(usage * price, currency) : typeof usage === "number" && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
18707
19015
  formatNumber(usage),
18708
19016
  " ",
18709
- (0, import_pluralize5.default)(feature.name, usage),
19017
+ getFeatureName(feature, usage),
18710
19018
  priceBehavior === "overage" && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
18711
19019
  " ",
18712
19020
  t2("used")
@@ -18721,6 +19029,7 @@ var MeteredFeatures = (0, import_react34.forwardRef)(({ className, ...rest }, re
18721
19029
  $size: theme.typography[props.allocation.fontStyle].fontSize,
18722
19030
  $weight: theme.typography[props.allocation.fontStyle].fontWeight,
18723
19031
  $color: theme.typography[props.allocation.fontStyle].color,
19032
+ $leading: 1.35,
18724
19033
  children: priceBehavior && priceBehavior !== "overage" && metricResetAt ? t2("Resets", {
18725
19034
  date: toPrettyDate(metricResetAt, {
18726
19035
  month: "short",
@@ -18739,19 +19048,27 @@ var MeteredFeatures = (0, import_react34.forwardRef)(({ className, ...rest }, re
18739
19048
  }
18740
19049
  ),
18741
19050
  props.isVisible && typeof usage === "number" && priceBehavior !== "pay_as_you_go" && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(Flex, { $gap: "2rem", children: [
18742
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
18743
- ProgressBar,
19051
+ typeof allocation === "number" ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
19052
+ Tooltip,
18744
19053
  {
18745
- progress: (isOverage ? softLimit / usage : usage / limit) * 100,
18746
- value: usage,
18747
- total: isOverage ? softLimit : limit,
18748
- color: isOverage ? "blue" : progressColorMap[Math.floor(
18749
- Math.min(usage, limit) / limit * (progressColorMap.length - 1)
18750
- )],
18751
- ...isOverage && { bgColor: "#EF4444" },
18752
- $flexGrow: "1"
19054
+ trigger: progressBar,
19055
+ content: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
19056
+ Text,
19057
+ {
19058
+ $font: theme.typography.text.fontFamily,
19059
+ $size: 0.875 * theme.typography.text.fontSize,
19060
+ $weight: theme.typography.text.fontWeight,
19061
+ $color: theme.typography.text.color,
19062
+ $leading: 1,
19063
+ children: t2("Up to a limit of", {
19064
+ amount: allocation,
19065
+ units: feature?.name && getFeatureName(feature)
19066
+ })
19067
+ }
19068
+ ),
19069
+ $flexGrow: 1
18753
19070
  }
18754
- ),
19071
+ ) : progressBar,
18755
19072
  priceBehavior === "pay_in_advance" && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
18756
19073
  EmbedButton,
18757
19074
  {
@@ -18788,13 +19105,22 @@ var PaymentElement2 = ({
18788
19105
  paymentLast4
18789
19106
  }) => {
18790
19107
  const theme = nt();
18791
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_jsx_runtime30.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Text, { $font: theme.typography.text.fontFamily, $size: 16, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Flex, { $flexDirection: "row", $alignItems: "center", children: [
18792
- iconName && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Box, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Icon2, { name: iconName, title: iconTitle, style: iconStyles }) }),
18793
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Flex, { $alignItems: "center", children: [
18794
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Box, { $lineHeight: "1", $marginRight: "4px", children: t(label) }),
18795
- paymentLast4 && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Box, { $display: "inline-block", $fontWeight: "bold", children: paymentLast4 })
18796
- ] })
18797
- ] }) }) });
19108
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_jsx_runtime30.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
19109
+ Text,
19110
+ {
19111
+ $font: theme.typography.text.fontFamily,
19112
+ $size: 16,
19113
+ $weight: theme.typography.text.fontWeight,
19114
+ $color: theme.typography.text.color,
19115
+ children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Flex, { $flexDirection: "row", $alignItems: "center", children: [
19116
+ iconName && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Box, { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Icon2, { name: iconName, title: iconTitle, style: iconStyles }) }),
19117
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(Flex, { $alignItems: "center", children: [
19118
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Box, { $lineHeight: "1", $marginRight: "4px", children: t(label) }),
19119
+ paymentLast4 && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Box, { $display: "inline-block", $fontWeight: "bold", children: paymentLast4 })
19120
+ ] })
19121
+ ] })
19122
+ }
19123
+ ) });
18798
19124
  };
18799
19125
  var resolveDesignProps4 = (props) => {
18800
19126
  return {
@@ -18914,6 +19240,7 @@ var PaymentMethodElement = ({
18914
19240
  {
18915
19241
  $font: theme.typography.text.fontFamily,
18916
19242
  $size: 14,
19243
+ $weight: theme.typography.text.fontWeight,
18917
19244
  $color: "#DB6769",
18918
19245
  children: monthsToExpiration > 0 ? t2("Expires in x months", { months: monthsToExpiration }) : t2("Expired")
18919
19246
  }
@@ -18936,8 +19263,8 @@ var PaymentMethodElement = ({
18936
19263
  $font: theme.typography.link.fontFamily,
18937
19264
  $size: theme.typography.link.fontSize,
18938
19265
  $weight: theme.typography.link.fontWeight,
18939
- $leading: 1,
18940
19266
  $color: theme.typography.link.color,
19267
+ $leading: 1,
18941
19268
  children: t2("Edit")
18942
19269
  }
18943
19270
  )
@@ -19149,7 +19476,6 @@ PaymentMethod.displayName = "PaymentMethod";
19149
19476
 
19150
19477
  // src/components/elements/plan-manager/PlanManager.tsx
19151
19478
  var import_react36 = require("react");
19152
- var import_pluralize6 = __toESM(require_pluralize());
19153
19479
  var import_jsx_runtime31 = require("react/jsx-runtime");
19154
19480
  var resolveDesignProps5 = (props) => {
19155
19481
  return {
@@ -19194,34 +19520,28 @@ var PlanManager = (0, import_react36.forwardRef)(({ children, className, portal,
19194
19520
  };
19195
19521
  const usageBasedEntitlements = (featureUsage?.features || []).reduce(
19196
19522
  (acc, usage) => {
19197
- const quantity = usage.allocation || usage.softLimit || 0;
19198
- let price;
19199
- let currencyCode;
19200
- if (currentPlan?.planPeriod === "month") {
19201
- price = usage.monthlyUsageBasedPrice?.price;
19202
- currencyCode = usage.monthlyUsageBasedPrice?.currency;
19203
- } else if (currentPlan?.planPeriod === "year") {
19204
- price = usage.yearlyUsageBasedPrice?.price;
19205
- currencyCode = usage.yearlyUsageBasedPrice?.currency;
19206
- }
19523
+ const { price, currency } = (currentPlan?.planPeriod === "month" ? usage.monthlyUsageBasedPrice : usage.yearlyUsageBasedPrice) || {};
19207
19524
  if (usage.priceBehavior && typeof price === "number") {
19208
- acc.push({ ...usage, price, quantity, currencyCode });
19525
+ acc.push({ ...usage, price, currency });
19209
19526
  }
19210
19527
  return acc;
19211
19528
  },
19212
19529
  []
19213
19530
  );
19214
19531
  const billingSubscription = data.company?.billingSubscription;
19532
+ const trialEndDays = (0, import_react36.useMemo)(() => {
19533
+ const trialEnd = billingSubscription?.trialEnd;
19534
+ const trialEndDate = trialEnd ? new Date(trialEnd * 1e3) : /* @__PURE__ */ new Date();
19535
+ const todayDate = /* @__PURE__ */ new Date();
19536
+ return Math.floor(
19537
+ (trialEndDate.getTime() - todayDate.getTime()) / (1e3 * 60 * 60 * 24)
19538
+ );
19539
+ }, [billingSubscription?.trialEnd]);
19215
19540
  const subscriptionCurrency = billingSubscription?.currency;
19216
- const showTrialBox = billingSubscription && billingSubscription.status == "trialing";
19217
- const showUnsubscribeBox = billingSubscription?.cancelAtPeriodEnd;
19218
- const trialEndDate = billingSubscription?.trialEnd ? new Date(billingSubscription.trialEnd * 1e3) : /* @__PURE__ */ new Date();
19219
- const todayDate = /* @__PURE__ */ new Date();
19220
- const trialEndDays = Math.floor(
19221
- (trialEndDate.getTime() - todayDate.getTime()) / (1e3 * 60 * 60 * 24)
19222
- );
19541
+ const isTrialSubscription = billingSubscription?.status === "trialing";
19542
+ const willSubscriptionCancel = billingSubscription?.cancelAtPeriodEnd;
19223
19543
  return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [
19224
- showTrialBox && !showUnsubscribeBox && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
19544
+ isTrialSubscription && !willSubscriptionCancel ? /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
19225
19545
  Box,
19226
19546
  {
19227
19547
  $backgroundColor: isLightBackground ? "hsla(0, 0%, 0%, 0.04)" : "hsla(0, 0%, 100%, 0.04)",
@@ -19244,7 +19564,7 @@ var PlanManager = (0, import_react36.forwardRef)(({ children, className, portal,
19244
19564
  {
19245
19565
  as: "p",
19246
19566
  $font: theme.typography.text.fontFamily,
19247
- $size: theme.typography.text.fontSize * 0.8125,
19567
+ $size: 0.8125 * theme.typography.text.fontSize,
19248
19568
  $weight: theme.typography.text.fontWeight,
19249
19569
  $color: theme.typography.text.color,
19250
19570
  children: data.trialPaymentMethodRequired ? t2("After the trial, subscribe") : defaultPlan ? t2("After the trial, cancel", {
@@ -19256,8 +19576,7 @@ var PlanManager = (0, import_react36.forwardRef)(({ children, className, portal,
19256
19576
  )
19257
19577
  ]
19258
19578
  }
19259
- ),
19260
- showUnsubscribeBox && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
19579
+ ) : willSubscriptionCancel && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
19261
19580
  Box,
19262
19581
  {
19263
19582
  $backgroundColor: isLightBackground ? "hsla(0, 0%, 0%, 0.04)" : "hsla(0, 0%, 100%, 0.04)",
@@ -19280,10 +19599,10 @@ var PlanManager = (0, import_react36.forwardRef)(({ children, className, portal,
19280
19599
  {
19281
19600
  as: "p",
19282
19601
  $font: theme.typography.text.fontFamily,
19283
- $size: theme.typography.text.fontSize * 0.8125,
19602
+ $size: 0.8125 * theme.typography.text.fontSize,
19284
19603
  $weight: theme.typography.text.fontWeight,
19285
19604
  $color: theme.typography.text.color,
19286
- children: billingSubscription.cancelAt ? t2("Access to plan will end on", {
19605
+ children: billingSubscription?.cancelAt ? t2("Access to plan will end on", {
19287
19606
  date: toPrettyDate(
19288
19607
  new Date(billingSubscription.cancelAt * 1e3),
19289
19608
  {
@@ -19381,7 +19700,7 @@ var PlanManager = (0, import_react36.forwardRef)(({ children, className, portal,
19381
19700
  children: t2("Add-ons")
19382
19701
  }
19383
19702
  ),
19384
- addOns.map((addOn) => /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
19703
+ addOns.map((addOn, addOnIndex) => /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
19385
19704
  Flex,
19386
19705
  {
19387
19706
  $justifyContent: "space-between",
@@ -19417,7 +19736,7 @@ var PlanManager = (0, import_react36.forwardRef)(({ children, className, portal,
19417
19736
  )
19418
19737
  ]
19419
19738
  },
19420
- addOn.id
19739
+ addOnIndex
19421
19740
  ))
19422
19741
  ] }),
19423
19742
  usageBasedEntitlements.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(Flex, { $flexDirection: "column", $gap: "1rem", children: [
@@ -19433,9 +19752,10 @@ var PlanManager = (0, import_react36.forwardRef)(({ children, className, portal,
19433
19752
  }
19434
19753
  ),
19435
19754
  usageBasedEntitlements.reduce(
19436
- (acc, entitlement) => {
19755
+ (acc, entitlement, entitlementIndex) => {
19756
+ const limit = entitlement.softLimit ?? entitlement.allocation ?? 0;
19437
19757
  const overageAmount = entitlement.priceBehavior === "overage" && (entitlement?.usage ?? 0) - (entitlement?.softLimit ?? 0);
19438
- const amount = entitlement.quantity || Math.max(entitlement?.softLimit || 0, 0);
19758
+ const amount = overageAmount || entitlement.allocation || 0;
19439
19759
  if (entitlement.feature?.name) {
19440
19760
  acc.push(
19441
19761
  /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
@@ -19446,22 +19766,28 @@ var PlanManager = (0, import_react36.forwardRef)(({ children, className, portal,
19446
19766
  $flexWrap: "wrap",
19447
19767
  $gap: "1rem",
19448
19768
  children: [
19449
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
19769
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
19450
19770
  Text,
19451
19771
  {
19452
19772
  $font: theme.typography[props.addOns.fontStyle].fontFamily,
19453
19773
  $size: theme.typography[props.addOns.fontStyle].fontSize,
19454
19774
  $weight: theme.typography[props.addOns.fontStyle].fontWeight,
19455
19775
  $color: theme.typography[props.addOns.fontStyle].color,
19456
- children: entitlement.priceBehavior === "pay_in_advance" || entitlement.priceBehavior === "overage" && amount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [
19457
- amount,
19458
- " ",
19459
- (0, import_pluralize6.default)(entitlement.feature.name, amount)
19460
- ] }) : entitlement.feature.name
19776
+ children: [
19777
+ entitlement.priceBehavior === "pay_in_advance" || entitlement.priceBehavior === "overage" && limit > 0 ? /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [
19778
+ limit,
19779
+ " ",
19780
+ getFeatureName(entitlement.feature, limit)
19781
+ ] }) : entitlement.feature.name,
19782
+ entitlement.priceBehavior === "overage" && entitlement.feature.featureType === "event" && currentPlan?.planPeriod && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [
19783
+ "/",
19784
+ shortenPeriod(currentPlan.planPeriod)
19785
+ ] })
19786
+ ]
19461
19787
  }
19462
19788
  ),
19463
19789
  /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(Flex, { $alignItems: "center", $gap: "1rem", children: [
19464
- entitlement.priceBehavior === "overage" && currentPlan?.planPeriod && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
19790
+ entitlement.priceBehavior === "overage" && currentPlan?.planPeriod ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
19465
19791
  Text,
19466
19792
  {
19467
19793
  $font: theme.typography.text.fontFamily,
@@ -19476,23 +19802,19 @@ var PlanManager = (0, import_react36.forwardRef)(({ children, className, portal,
19476
19802
  " ",
19477
19803
  formatCurrency(
19478
19804
  entitlement.price,
19479
- entitlement.currencyCode
19805
+ entitlement.currency
19480
19806
  ),
19481
19807
  /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("sub", { children: [
19482
19808
  "/",
19483
- (0, import_pluralize6.default)(
19484
- entitlement.feature.name.toLowerCase(),
19485
- 1
19486
- ),
19487
- entitlement.feature.featureType === "event" && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [
19809
+ getFeatureName(entitlement.feature, 1),
19810
+ entitlement.feature.featureType === "trait" && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [
19488
19811
  "/",
19489
19812
  shortenPeriod(currentPlan.planPeriod)
19490
19813
  ] })
19491
19814
  ] })
19492
19815
  ] })
19493
19816
  }
19494
- ),
19495
- entitlement.priceBehavior === "pay_in_advance" && currentPlan?.planPeriod && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
19817
+ ) : entitlement.priceBehavior === "pay_in_advance" && currentPlan?.planPeriod && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
19496
19818
  Text,
19497
19819
  {
19498
19820
  $font: theme.typography.text.fontFamily,
@@ -19502,14 +19824,11 @@ var PlanManager = (0, import_react36.forwardRef)(({ children, className, portal,
19502
19824
  children: [
19503
19825
  formatCurrency(
19504
19826
  entitlement.price,
19505
- entitlement.currencyCode
19827
+ entitlement.currency
19506
19828
  ),
19507
19829
  /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("sub", { children: [
19508
19830
  "/",
19509
- (0, import_pluralize6.default)(
19510
- entitlement.feature.name.toLowerCase(),
19511
- 1
19512
- ),
19831
+ getFeatureName(entitlement.feature, 1),
19513
19832
  "/",
19514
19833
  shortenPeriod(currentPlan.planPeriod)
19515
19834
  ] })
@@ -19526,14 +19845,11 @@ var PlanManager = (0, import_react36.forwardRef)(({ children, className, portal,
19526
19845
  children: [
19527
19846
  formatCurrency(
19528
19847
  entitlement.price * amount,
19529
- entitlement.currencyCode
19848
+ entitlement.currency
19530
19849
  ),
19531
19850
  (entitlement.priceBehavior === "pay_in_advance" || entitlement.priceBehavior !== "overage") && /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("sub", { children: [
19532
19851
  "/",
19533
- currentPlan?.planPeriod && entitlement.priceBehavior === "pay_in_advance" ? shortenPeriod(currentPlan.planPeriod) : (0, import_pluralize6.default)(
19534
- entitlement.feature.name.toLowerCase(),
19535
- 1
19536
- )
19852
+ currentPlan?.planPeriod && entitlement.priceBehavior === "pay_in_advance" ? shortenPeriod(currentPlan.planPeriod) : getFeatureName(entitlement.feature, 1)
19537
19853
  ] })
19538
19854
  ]
19539
19855
  }
@@ -19541,7 +19857,7 @@ var PlanManager = (0, import_react36.forwardRef)(({ children, className, portal,
19541
19857
  ] })
19542
19858
  ]
19543
19859
  },
19544
- entitlement.feature.id
19860
+ entitlementIndex
19545
19861
  )
19546
19862
  );
19547
19863
  }
@@ -19576,7 +19892,6 @@ PlanManager.displayName = "PlanManager";
19576
19892
 
19577
19893
  // src/components/elements/pricing-table/PricingTable.tsx
19578
19894
  var import_react37 = require("react");
19579
- var import_pluralize7 = __toESM(require_pluralize());
19580
19895
  var import_jsx_runtime32 = require("react/jsx-runtime");
19581
19896
  var resolveDesignProps6 = (props) => {
19582
19897
  return {
@@ -19707,13 +20022,11 @@ var PricingTable = (0, import_react37.forwardRef)(({ children, className, ...res
19707
20022
  $display: "grid",
19708
20023
  $gridTemplateColumns: "repeat(auto-fill, minmax(320px, 1fr))",
19709
20024
  $gap: "1rem",
19710
- children: plans.map((plan, index, self2) => {
20025
+ children: plans.map((plan, planIndex, self2) => {
19711
20026
  const isActivePlan = plan.current && data.company?.plan?.planPeriod === selectedPeriod;
20027
+ const { price: planPrice, currency: planCurrency } = (selectedPeriod === "month" ? plan.monthlyPrice : selectedPeriod === "year" && plan.yearlyPrice) || {};
19712
20028
  const count = entitlementCounts[plan.id];
19713
- let isExpanded = false;
19714
- if (count?.limit && count.limit > VISIBLE_ENTITLEMENT_COUNT) {
19715
- isExpanded = true;
19716
- }
20029
+ const isExpanded = count.limit > VISIBLE_ENTITLEMENT_COUNT;
19717
20030
  return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
19718
20031
  Flex,
19719
20032
  {
@@ -19733,7 +20046,7 @@ var PricingTable = (0, import_react37.forwardRef)(({ children, className, ...res
19733
20046
  $flexDirection: "column",
19734
20047
  $gap: "0.75rem",
19735
20048
  $padding: `0 ${cardPadding}rem ${0.75 * cardPadding}rem`,
19736
- $borderWidth: "0",
20049
+ $borderWidth: 0,
19737
20050
  $borderBottomWidth: "1px",
19738
20051
  $borderStyle: "solid",
19739
20052
  $borderColor: isLightBackground ? "hsla(0, 0%, 0%, 0.175)" : "hsla(0, 0%, 100%, 0.175)",
@@ -19766,10 +20079,7 @@ var PricingTable = (0, import_react37.forwardRef)(({ children, className, ...res
19766
20079
  $size: theme.typography[props.plans.name.fontStyle].fontSize,
19767
20080
  $weight: theme.typography[props.plans.name.fontStyle].fontWeight,
19768
20081
  $color: theme.typography[props.plans.name.fontStyle].color,
19769
- children: plan.custom ? plan.customPlanConfig?.priceText ? plan.customPlanConfig?.priceText : t2("Custom Plan Price") : formatCurrency(
19770
- (selectedPeriod === "month" ? plan.monthlyPrice : plan.yearlyPrice)?.price ?? 0,
19771
- (selectedPeriod === "month" ? plan.monthlyPrice : plan.yearlyPrice)?.currency
19772
- )
20082
+ children: plan.custom ? plan.customPlanConfig?.priceText ? plan.customPlanConfig.priceText : t2("Custom Plan Price") : formatCurrency(planPrice ?? 0, planCurrency)
19773
20083
  }
19774
20084
  ),
19775
20085
  !plan.custom && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
@@ -19808,12 +20118,12 @@ var PricingTable = (0, import_react37.forwardRef)(({ children, className, ...res
19808
20118
  {
19809
20119
  $flexDirection: "column",
19810
20120
  $justifyContent: "end",
19811
- $flexGrow: "1",
20121
+ $flexGrow: 1,
19812
20122
  $gap: `${cardPadding}rem`,
19813
20123
  $padding: `${0.75 * cardPadding}rem ${cardPadding}rem 0`,
19814
20124
  children: [
19815
- props.plans.showEntitlements && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(Flex, { $flexDirection: "column", $gap: "1rem", $flexGrow: "1", children: [
19816
- props.plans.showInclusionText && index > 0 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Box, { $marginBottom: "1.5rem", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
20125
+ props.plans.showEntitlements && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(Flex, { $flexDirection: "column", $gap: "1rem", $flexGrow: 1, children: [
20126
+ props.plans.showInclusionText && planIndex > 0 && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Box, { $marginBottom: "1.5rem", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
19817
20127
  Text,
19818
20128
  {
19819
20129
  $font: theme.typography.text.fontFamily,
@@ -19821,136 +20131,142 @@ var PricingTable = (0, import_react37.forwardRef)(({ children, className, ...res
19821
20131
  $weight: theme.typography.text.fontWeight,
19822
20132
  $color: theme.typography.text.color,
19823
20133
  children: t2("Everything in", {
19824
- plan: self2[index - 1].name
20134
+ plan: self2[planIndex - 1].name
19825
20135
  })
19826
20136
  }
19827
20137
  ) }),
19828
- plan.entitlements.reduce((acc, entitlement) => {
19829
- const limit = entitlement.softLimit || entitlement.valueNumeric;
19830
- let price;
19831
- let currency;
19832
- if (selectedPeriod === "month") {
19833
- price = entitlement.meteredMonthlyPrice?.price;
19834
- currency = entitlement.meteredMonthlyPrice?.currency;
19835
- } else if (selectedPeriod === "year") {
19836
- price = entitlement.meteredYearlyPrice?.price;
19837
- currency = entitlement.meteredYearlyPrice?.currency;
19838
- }
19839
- if (entitlement.priceBehavior && typeof price !== "number") {
19840
- return acc;
19841
- }
19842
- acc.push(
19843
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(Flex, { $gap: "1rem", children: [
19844
- props.plans.showFeatureIcons && entitlement.feature?.icon && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
19845
- IconRound,
19846
- {
19847
- name: entitlement.feature.icon,
19848
- size: "sm",
19849
- colors: [
19850
- theme.primary,
19851
- isLightBackground ? "hsla(0, 0%, 0%, 0.0625)" : "hsla(0, 0%, 100%, 0.25)"
19852
- ]
19853
- }
19854
- ),
19855
- entitlement.feature?.name && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
19856
- Flex,
19857
- {
19858
- $flexDirection: "column",
19859
- $justifyContent: "center",
19860
- $gap: "0.5rem",
19861
- children: [
19862
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
19863
- Text,
19864
- {
19865
- $font: theme.typography.text.fontFamily,
19866
- $size: theme.typography.text.fontSize,
19867
- $weight: theme.typography.text.fontWeight,
19868
- $color: theme.typography.text.color,
19869
- $leading: 1.35,
19870
- children: typeof price === "number" && (entitlement.priceBehavior === "pay_in_advance" || entitlement.priceBehavior === "pay_as_you_go") ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
19871
- formatCurrency(price, currency),
19872
- " ",
19873
- t2("per"),
19874
- " ",
19875
- (0, import_pluralize7.default)(
19876
- entitlement.feature.name,
19877
- 1
19878
- ),
19879
- entitlement.priceBehavior === "pay_in_advance" && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
19880
- " ",
19881
- t2("per"),
19882
- " ",
19883
- selectedPeriod
19884
- ] })
19885
- ] }) : entitlement.valueType === "numeric" || entitlement.valueType === "unlimited" || entitlement.valueType === "trait" ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
19886
- entitlement.valueType === "unlimited" ? t2("Unlimited", {
19887
- item: (0, import_pluralize7.default)(
19888
- entitlement.feature.name
19889
- )
19890
- }) : typeof limit === "number" && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
19891
- formatNumber(limit),
19892
- " ",
19893
- (0, import_pluralize7.default)(
19894
- entitlement.feature.name,
19895
- limit
19896
- )
19897
- ] }),
19898
- entitlement.metricPeriod ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
20138
+ plan.entitlements.reduce(
20139
+ (acc, entitlement, entitlementIndex) => {
20140
+ const limit = entitlement.softLimit ?? entitlement.valueNumeric;
20141
+ const {
20142
+ price: entitlementPrice,
20143
+ currency: entitlementCurrency
20144
+ } = (selectedPeriod === "month" ? entitlement.meteredMonthlyPrice : selectedPeriod === "year" && entitlement.meteredYearlyPrice) || {};
20145
+ if (entitlement.priceBehavior && typeof entitlementPrice !== "number") {
20146
+ return acc;
20147
+ }
20148
+ acc.push(
20149
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(Flex, { $gap: "1rem", children: [
20150
+ props.plans.showFeatureIcons && entitlement.feature?.icon && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
20151
+ IconRound,
20152
+ {
20153
+ name: entitlement.feature.icon,
20154
+ size: "sm",
20155
+ colors: [
20156
+ theme.primary,
20157
+ isLightBackground ? "hsla(0, 0%, 0%, 0.0625)" : "hsla(0, 0%, 100%, 0.25)"
20158
+ ]
20159
+ }
20160
+ ),
20161
+ entitlement.feature?.name && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
20162
+ Flex,
20163
+ {
20164
+ $flexDirection: "column",
20165
+ $justifyContent: "center",
20166
+ $gap: "0.5rem",
20167
+ children: [
20168
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
20169
+ Text,
20170
+ {
20171
+ $font: theme.typography.text.fontFamily,
20172
+ $size: theme.typography.text.fontSize,
20173
+ $weight: theme.typography.text.fontWeight,
20174
+ $color: theme.typography.text.color,
20175
+ $leading: 1.35,
20176
+ children: typeof entitlementPrice === "number" && (entitlement.priceBehavior === "pay_in_advance" || entitlement.priceBehavior === "pay_as_you_go") ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
20177
+ formatCurrency(
20178
+ entitlementPrice,
20179
+ entitlementCurrency
20180
+ ),
19899
20181
  " ",
19900
20182
  t2("per"),
19901
20183
  " ",
19902
- {
19903
- billing: "billing period",
19904
- current_day: "day",
19905
- current_month: "month",
19906
- current_year: "year"
19907
- }[entitlement.metricPeriod]
19908
- ] }) : entitlement.priceBehavior === "overage" && entitlement.feature.featureType === "event" && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
19909
- "/",
19910
- shortenPeriod(selectedPeriod)
19911
- ] })
19912
- ] }) : entitlement.feature.name
19913
- }
19914
- ),
19915
- entitlement.priceBehavior === "overage" && typeof price === "number" && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
19916
- Text,
19917
- {
19918
- $font: theme.typography.text.fontFamily,
19919
- $size: 0.875 * theme.typography.text.fontSize,
19920
- $weight: theme.typography.text.fontWeight,
19921
- $color: hexToHSL(
19922
- theme.typography.text.color
19923
- ).l > 50 ? darken(
19924
- theme.typography.text.color,
19925
- 0.46
19926
- ) : lighten(
19927
- theme.typography.text.color,
19928
- 0.46
19929
- ),
19930
- $leading: 1.35,
19931
- children: [
19932
- formatCurrency(price),
19933
- "/",
19934
- (0, import_pluralize7.default)(
19935
- entitlement.feature.name.toLowerCase(),
19936
- 1
20184
+ getFeatureName(
20185
+ entitlement.feature,
20186
+ 1
20187
+ ),
20188
+ entitlement.priceBehavior === "pay_in_advance" && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
20189
+ " ",
20190
+ t2("per"),
20191
+ " ",
20192
+ selectedPeriod
20193
+ ] })
20194
+ ] }) : entitlement.valueType === "numeric" || entitlement.valueType === "unlimited" || entitlement.valueType === "trait" ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
20195
+ entitlement.valueType === "unlimited" && !entitlement.priceBehavior ? t2("Unlimited", {
20196
+ item: getFeatureName(
20197
+ entitlement.feature
20198
+ )
20199
+ }) : typeof limit === "number" && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
20200
+ formatNumber(limit),
20201
+ " ",
20202
+ getFeatureName(
20203
+ entitlement.feature,
20204
+ limit
20205
+ )
20206
+ ] }),
20207
+ entitlement.metricPeriod && entitlement.priceBehavior !== "overage" ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
20208
+ " ",
20209
+ t2("per"),
20210
+ " ",
20211
+ {
20212
+ billing: "billing period",
20213
+ current_day: "day",
20214
+ current_month: "month",
20215
+ current_year: "year"
20216
+ }[entitlement.metricPeriod]
20217
+ ] }) : entitlement.priceBehavior === "overage" && entitlement.feature.featureType === "event" && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
20218
+ "/",
20219
+ shortenPeriod(
20220
+ selectedPeriod
20221
+ )
20222
+ ] })
20223
+ ] }) : entitlement.feature.name
20224
+ }
20225
+ ),
20226
+ entitlement.priceBehavior === "overage" && typeof entitlementPrice === "number" && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
20227
+ Text,
20228
+ {
20229
+ $font: theme.typography.text.fontFamily,
20230
+ $size: 0.875 * theme.typography.text.fontSize,
20231
+ $weight: theme.typography.text.fontWeight,
20232
+ $color: hexToHSL(
20233
+ theme.typography.text.color
20234
+ ).l > 50 ? darken(
20235
+ theme.typography.text.color,
20236
+ 0.46
20237
+ ) : lighten(
20238
+ theme.typography.text.color,
20239
+ 0.46
19937
20240
  ),
19938
- entitlement.feature.featureType === "event" && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
20241
+ $leading: 1.35,
20242
+ children: [
20243
+ formatCurrency(
20244
+ entitlementPrice,
20245
+ entitlementCurrency
20246
+ ),
19939
20247
  "/",
19940
- shortenPeriod(selectedPeriod)
19941
- ] }),
19942
- " ",
19943
- t2("overage fee")
19944
- ]
19945
- }
19946
- )
19947
- ]
19948
- }
19949
- )
19950
- ] }, entitlement.id)
19951
- );
19952
- return acc;
19953
- }, []).slice(0, count?.limit ?? VISIBLE_ENTITLEMENT_COUNT),
20248
+ getFeatureName(
20249
+ entitlement.feature,
20250
+ 1
20251
+ ),
20252
+ entitlement.feature.featureType === "trait" && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
20253
+ "/",
20254
+ shortenPeriod(selectedPeriod)
20255
+ ] }),
20256
+ " ",
20257
+ t2("overage fee")
20258
+ ]
20259
+ }
20260
+ )
20261
+ ]
20262
+ }
20263
+ )
20264
+ ] }, entitlementIndex)
20265
+ );
20266
+ return acc;
20267
+ },
20268
+ []
20269
+ ).slice(0, count?.limit ?? VISIBLE_ENTITLEMENT_COUNT),
19954
20270
  (count?.size || plan.entitlements.length) > VISIBLE_ENTITLEMENT_COUNT && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
19955
20271
  Flex,
19956
20272
  {
@@ -19977,8 +20293,8 @@ var PricingTable = (0, import_react37.forwardRef)(({ children, className, ...res
19977
20293
  $font: theme.typography.link.fontFamily,
19978
20294
  $size: theme.typography.link.fontSize,
19979
20295
  $weight: theme.typography.link.fontWeight,
19980
- $leading: 1,
19981
20296
  $color: theme.typography.link.color,
20297
+ $leading: 1,
19982
20298
  style: { cursor: "pointer" },
19983
20299
  children: isExpanded ? t2("Hide all") : t2("See all")
19984
20300
  }
@@ -20009,9 +20325,11 @@ var PricingTable = (0, import_react37.forwardRef)(({ children, className, ...res
20009
20325
  /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
20010
20326
  Text,
20011
20327
  {
20328
+ $font: theme.typography.text.fontFamily,
20012
20329
  $size: 15,
20013
- $leading: 1,
20330
+ $weight: theme.typography.text.fontWeight,
20014
20331
  $color: theme.typography.text.color,
20332
+ $leading: 1,
20015
20333
  children: t2("Current plan")
20016
20334
  }
20017
20335
  )
@@ -20032,7 +20350,7 @@ var PricingTable = (0, import_react37.forwardRef)(({ children, className, ...res
20032
20350
  setLayout("checkout");
20033
20351
  }
20034
20352
  },
20035
- ...index > currentPlanIndex ? {
20353
+ ...planIndex > currentPlanIndex ? {
20036
20354
  $size: props.upgrade.buttonSize,
20037
20355
  $color: props.upgrade.buttonStyle,
20038
20356
  $variant: "filled"
@@ -20064,7 +20382,7 @@ var PricingTable = (0, import_react37.forwardRef)(({ children, className, ...res
20064
20382
  )
20065
20383
  ]
20066
20384
  },
20067
- index
20385
+ planIndex
20068
20386
  );
20069
20387
  })
20070
20388
  }
@@ -20095,8 +20413,9 @@ var PricingTable = (0, import_react37.forwardRef)(({ children, className, ...res
20095
20413
  $display: "grid",
20096
20414
  $gridTemplateColumns: "repeat(auto-fill, minmax(320px, 1fr))",
20097
20415
  $gap: "1rem",
20098
- children: addOns.map((addOn, index) => {
20416
+ children: addOns.map((addOn, addOnIndex) => {
20099
20417
  const isActiveAddOn = addOn.current && selectedPeriod === data.company?.addOns.find((a2) => a2.id === addOn.id)?.planPeriod;
20418
+ const { price: addOnPrice, currency: addOnCurrency } = (selectedPeriod === "month" ? addOn.monthlyPrice : selectedPeriod === "year" && addOn.yearlyPrice) || {};
20100
20419
  return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
20101
20420
  Flex,
20102
20421
  {
@@ -20140,10 +20459,7 @@ var PricingTable = (0, import_react37.forwardRef)(({ children, className, ...res
20140
20459
  $size: theme.typography[props.plans.name.fontStyle].fontSize,
20141
20460
  $weight: theme.typography[props.plans.name.fontStyle].fontWeight,
20142
20461
  $color: theme.typography[props.plans.name.fontStyle].color,
20143
- children: formatCurrency(
20144
- (selectedPeriod === "month" ? addOn.monthlyPrice : addOn.yearlyPrice)?.price ?? 0,
20145
- (selectedPeriod === "month" ? addOn.monthlyPrice : addOn.yearlyPrice)?.currency
20146
- )
20462
+ children: formatCurrency(addOnPrice ?? 0, addOnCurrency)
20147
20463
  }
20148
20464
  ),
20149
20465
  /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
@@ -20181,7 +20497,7 @@ var PricingTable = (0, import_react37.forwardRef)(({ children, className, ...res
20181
20497
  $flexDirection: "column",
20182
20498
  $justifyContent: "end",
20183
20499
  $gap: `${cardPadding}rem`,
20184
- $flexGrow: "1",
20500
+ $flexGrow: 1,
20185
20501
  children: [
20186
20502
  props.addOns.showEntitlements && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
20187
20503
  Flex,
@@ -20189,59 +20505,70 @@ var PricingTable = (0, import_react37.forwardRef)(({ children, className, ...res
20189
20505
  $flexDirection: "column",
20190
20506
  $position: "relative",
20191
20507
  $gap: "1rem",
20192
- $flexGrow: "1",
20193
- children: addOn.entitlements.map((entitlement) => {
20194
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
20195
- Flex,
20196
- {
20197
- $flexWrap: "wrap",
20198
- $justifyContent: "space-between",
20199
- $alignItems: "center",
20200
- $gap: "1rem",
20201
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(Flex, { $gap: "1rem", children: [
20202
- props.addOns.showFeatureIcons && entitlement.feature?.icon && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
20203
- IconRound,
20204
- {
20205
- name: entitlement.feature.icon,
20206
- size: "sm",
20207
- colors: [
20208
- theme.primary,
20209
- isLightBackground ? "hsla(0, 0%, 0%, 0.0625)" : "hsla(0, 0%, 100%, 0.25)"
20210
- ]
20211
- }
20212
- ),
20213
- entitlement.feature?.name && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Flex, { $alignItems: "center", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
20214
- Text,
20215
- {
20216
- $font: theme.typography.text.fontFamily,
20217
- $size: theme.typography.text.fontSize,
20218
- $weight: theme.typography.text.fontWeight,
20219
- $color: theme.typography.text.color,
20220
- children: entitlement.valueType === "numeric" || entitlement.valueType === "unlimited" || entitlement.valueType === "trait" ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
20221
- entitlement.valueType === "unlimited" ? t2("Unlimited", {
20222
- item: (0, import_pluralize7.default)(
20223
- entitlement.feature.name
20224
- )
20225
- }) : typeof entitlement.valueNumeric === "number" && `${formatNumber(entitlement.valueNumeric)} ${(0, import_pluralize7.default)(entitlement.feature.name, entitlement.valueNumeric)}`,
20226
- entitlement.metricPeriod && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
20227
- " ",
20228
- t2("per"),
20229
- " ",
20230
- {
20231
- billing: "billing period",
20232
- current_day: "day",
20233
- current_month: "month",
20234
- current_year: "year"
20235
- }[entitlement.metricPeriod]
20236
- ] })
20237
- ] }) : entitlement.feature.name
20238
- }
20239
- ) })
20240
- ] })
20241
- },
20242
- entitlement.id
20243
- );
20244
- })
20508
+ $flexGrow: 1,
20509
+ children: addOn.entitlements.map(
20510
+ (entitlement, entitlementIndex) => {
20511
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
20512
+ Flex,
20513
+ {
20514
+ $flexWrap: "wrap",
20515
+ $justifyContent: "space-between",
20516
+ $alignItems: "center",
20517
+ $gap: "1rem",
20518
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(Flex, { $gap: "1rem", children: [
20519
+ props.addOns.showFeatureIcons && entitlement.feature?.icon && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
20520
+ IconRound,
20521
+ {
20522
+ name: entitlement.feature.icon,
20523
+ size: "sm",
20524
+ colors: [
20525
+ theme.primary,
20526
+ isLightBackground ? "hsla(0, 0%, 0%, 0.0625)" : "hsla(0, 0%, 100%, 0.25)"
20527
+ ]
20528
+ }
20529
+ ),
20530
+ entitlement.feature?.name && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Flex, { $alignItems: "center", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
20531
+ Text,
20532
+ {
20533
+ $font: theme.typography.text.fontFamily,
20534
+ $size: theme.typography.text.fontSize,
20535
+ $weight: theme.typography.text.fontWeight,
20536
+ $color: theme.typography.text.color,
20537
+ children: entitlement.valueType === "numeric" || entitlement.valueType === "unlimited" || entitlement.valueType === "trait" ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
20538
+ entitlement.valueType === "unlimited" ? t2("Unlimited", {
20539
+ item: getFeatureName(
20540
+ entitlement.feature
20541
+ )
20542
+ }) : typeof entitlement.valueNumeric === "number" && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
20543
+ formatNumber(
20544
+ entitlement.valueNumeric
20545
+ ),
20546
+ " ",
20547
+ getFeatureName(
20548
+ entitlement.feature,
20549
+ entitlement.valueNumeric
20550
+ )
20551
+ ] }),
20552
+ entitlement.metricPeriod && /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
20553
+ " ",
20554
+ t2("per"),
20555
+ " ",
20556
+ {
20557
+ billing: "billing period",
20558
+ current_day: "day",
20559
+ current_month: "month",
20560
+ current_year: "year"
20561
+ }[entitlement.metricPeriod]
20562
+ ] })
20563
+ ] }) : entitlement.feature.name
20564
+ }
20565
+ ) })
20566
+ ] })
20567
+ },
20568
+ entitlementIndex
20569
+ );
20570
+ }
20571
+ )
20245
20572
  }
20246
20573
  ),
20247
20574
  props.upgrade.isVisible && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
@@ -20268,7 +20595,7 @@ var PricingTable = (0, import_react37.forwardRef)(({ children, className, ...res
20268
20595
  )
20269
20596
  ]
20270
20597
  },
20271
- index
20598
+ addOnIndex
20272
20599
  );
20273
20600
  })
20274
20601
  }
@@ -20619,14 +20946,28 @@ var ComponentTree = () => {
20619
20946
 
20620
20947
  // src/components/embed/Embed.tsx
20621
20948
  var import_jsx_runtime36 = require("react/jsx-runtime");
20622
- var SchematicEmbed = ({ id, accessToken, apiConfig }) => {
20949
+ var SchematicEmbed = ({
20950
+ id,
20951
+ accessToken,
20952
+ apiConfig,
20953
+ debug
20954
+ }) => {
20623
20955
  if (accessToken?.length === 0) {
20624
20956
  return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { children: "Please provide an access token." });
20625
20957
  }
20626
20958
  if (!accessToken?.startsWith("token_")) {
20627
20959
  return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { children: 'Invalid access token; your temporary access token will start with "token_".' });
20628
20960
  }
20629
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(EmbedProvider, { id, accessToken, apiConfig, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ComponentTree, {}) });
20961
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
20962
+ EmbedProvider,
20963
+ {
20964
+ id,
20965
+ accessToken,
20966
+ apiConfig,
20967
+ debug,
20968
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ComponentTree, {})
20969
+ }
20970
+ );
20630
20971
  };
20631
20972
  /*! Bundled license information:
20632
20973