@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, module) {
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 module !== "undefined" && module.exports) {
1714
- classNames.default = classNames;
1715
- module.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, module) {
1730
- (function(root, pluralize8) {
1670
+ (function(root, pluralize2) {
1731
1671
  if (typeof __require === "function" && typeof exports === "object" && typeof module === "object") {
1732
- module.exports = pluralize8();
1672
+ module.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, module) {
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 module !== "undefined" && module.exports) {
2065
+ classNames.default = classNames;
2066
+ module.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, module) {
2081
+ var root = require_root();
2082
+ var now = function() {
2083
+ return root.Date.now();
2084
+ };
2085
+ module.exports = now;
2086
+ }
2087
+ });
2088
+
2089
+ // node_modules/lodash/_trimmedEndIndex.js
2090
+ var require_trimmedEndIndex = __commonJS({
2091
+ "node_modules/lodash/_trimmedEndIndex.js"(exports, module) {
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
+ module.exports = trimmedEndIndex;
2100
+ }
2101
+ });
2102
+
2103
+ // node_modules/lodash/_baseTrim.js
2104
+ var require_baseTrim = __commonJS({
2105
+ "node_modules/lodash/_baseTrim.js"(exports, module) {
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
+ module.exports = baseTrim;
2112
+ }
2113
+ });
2114
+
2115
+ // node_modules/lodash/isSymbol.js
2116
+ var require_isSymbol = __commonJS({
2117
+ "node_modules/lodash/isSymbol.js"(exports, module) {
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
+ module.exports = isSymbol;
2125
+ }
2126
+ });
2127
+
2128
+ // node_modules/lodash/toNumber.js
2129
+ var require_toNumber = __commonJS({
2130
+ "node_modules/lodash/toNumber.js"(exports, module) {
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
+ module.exports = toNumber;
2158
+ }
2159
+ });
2160
+
2161
+ // node_modules/lodash/debounce.js
2162
+ var require_debounce = __commonJS({
2163
+ "node_modules/lodash/debounce.js"(exports, module) {
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
+ module.exports = debounce2;
2252
+ }
2253
+ });
2254
+
2078
2255
  // src/components/elements/included-features/IncludedFeatures.tsx
2079
2256
  import { forwardRef as forwardRef7, useRef as useRef7, useState as useState12 } from "react";
2080
2257
 
@@ -3056,7 +3233,7 @@ var unitlessKeys = {
3056
3233
  var f = "undefined" != typeof process && void 0 !== process.env && (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR) || "data-styled";
3057
3234
  var m = "active";
3058
3235
  var y = "data-styled-version";
3059
- var v = "6.1.15";
3236
+ var v = "6.1.16";
3060
3237
  var g = "/*!sc*/\n";
3061
3238
  var S = "undefined" != typeof window && "HTMLElement" in window;
3062
3239
  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);
@@ -3717,6 +3894,7 @@ var St = "__sc-".concat(f, "__");
3717
3894
  var TEXT_BASE_SIZE = 16;
3718
3895
  var VISIBLE_ENTITLEMENT_COUNT = 4;
3719
3896
  var MAX_VISIBLE_INVOICE_COUNT = 12;
3897
+ var DEBOUNCE_TIMEOUT = 250;
3720
3898
 
3721
3899
  // src/hooks/useAvailablePlans.ts
3722
3900
  import { useCallback as useCallback2, useMemo as useMemo2 } from "react";
@@ -12081,6 +12259,7 @@ var en_default = {
12081
12259
  Unsubscribe: "Unsubscribe",
12082
12260
  "Unsubscribe failed": "Unsubscribe failed",
12083
12261
  "Unused time": "Unused time",
12262
+ "Up to a limit of": "Up to a limit of {{amount}} {{units}}",
12084
12263
  Usage: "Usage",
12085
12264
  "Usage-based": "Usage-based",
12086
12265
  "Use existing payment method": "Use existing payment method",
@@ -12103,8 +12282,7 @@ var en_default = {
12103
12282
  };
12104
12283
 
12105
12284
  // src/context/styles.ts
12106
- var GlobalStyle = ft`;
12107
-
12285
+ var GlobalStyle = ft`
12108
12286
  @font-face {
12109
12287
  font-family: "icons";
12110
12288
  src: url(data:font/ttf;base64,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ASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwAFYWxhcm0JYW1hem9ucGF5BGFtZXgIYXBwbGVwYXkPYXJyb3ctYW5hbHl0aWNzDGFycm93LWN1cnZlZAphcnJvdy1kb3duCmFycm93LWxlZnQLYXJyb3ctcmlnaHQIYXJyb3ctdXAMYXJyb3ctdXB3YXJkCWJhY2tzcGFjZQRiYW5rBGJlbGwFYm9hcmQIYm9va21hcmsKYm9vbGVhbi1vbgdib29sZWFuBGJ1bGIGYnVyZ2VyB2Nhc2hhcHANY2hlY2stcm91bmRlZAVjaGVjawxjaGV2cm9uLWRvd24MY2hldnJvbi1sZWZ0DWNoZXZyb24tcmlnaHQKY2hldnJvbi11cARjaGlwBWNoaXBzBWNsZXJrFGNsb3NlLXJvdW5kZWQtZmlsbGVkBWNsb3NlCGNsb3VkLXVwBGNsdWIDY21kBGNvZGUGY29mZmVlA2NvZw5jb2xsYXBzZS1lbXB0eQhjb2xsYXBzZQdjb21wYXNzCmNvbm5lY3Rpb24EY29weQZjcmVkaXQHY3lsbmRlcgdkaWFtb25kDmRvbGxhci1yb3VuZGVkD2RvdHMtaG9yaXpvbnRhbA1kb3RzLXZlcnRpY2FsDGVudGl0bGVtZW50cwllcXVhbGl6ZXIaZXhjbGFtYXRpb24tcm91bmRlZC1maWxsZWQDZXllBmZpbHRlcgVmbGFzawxmb2xkZXItbWludXMLZm9sZGVyLXBsdXMGZm9sZGVyD2dlbmVyaWMtcGF5bWVudAZnaXRodWIHZ2xhc3NlcwVnbG9iZQZnb29nbGUGaGFtbWVyBGhhc2gFaGVhcnQHaHVic3BvdAVpbWFnZQxpbmZvLXJvdW5kZWQFanVpY2UDa2V5BGxpbmsKbWFzdGVyY2FyZARtb3ZlBW11c2ljCm5vZGUtbWludXMJbm9kZS1wbHVzB3BhY2thZ2ULcGFwZXItcGxhbmUGcGF5cGFsBnBlbmNpbAdwZXJjZW50BnBpY2tlcgRwbGFuBHBsdWcKcGx1cy1taW51cxRwbHVzLXJvdW5kZWQtb3V0bGluZQdwcmVzZW50CXNjaGVtYXRpYwZzZWFyY2gHc2VnbWVudA1zZXJ2ZXItc2VhcmNoB3NpZGViYXIGc2lnbmFsB3NpbGVuY2UFc3BhZGUHc3BlYWtlcgdzdGFja2VkBnN0YWNrcwZzdHJpcGUEdGV4dAd0aHVuZGVyB3Rvcm5hZG8FdHJ1Y2sEdHViZQt1bnByb3RlY3RlZAt1bnN1YnNjcmliZQh2ZXJpZmllZAx2aWRlby1jYW1lcmEEdmlzYQZ3YWxsZXQKd2F0Y2gtaGFuZAx3YXRjaC1wb2NrZXQKd2F0ZXItZHJvcAV3YXZlcwd3ZWJob29rBHdpbmQAAAAA), format("truetype");
@@ -12657,7 +12835,8 @@ var defaultTheme = {
12657
12835
  var defaultSettings = {
12658
12836
  theme: defaultTheme,
12659
12837
  badge: {
12660
- alignment: "start"
12838
+ alignment: "start",
12839
+ visibility: "visible"
12661
12840
  }
12662
12841
  };
12663
12842
  function isEditorState(obj) {
@@ -12721,7 +12900,8 @@ var EmbedProvider = ({
12721
12900
  accessToken,
12722
12901
  apiConfig,
12723
12902
  children,
12724
- mode = "view"
12903
+ mode = "view",
12904
+ ...options
12725
12905
  }) => {
12726
12906
  const styleRef = useRef2(null);
12727
12907
  const sessionIdRef = useRef2(v4_default());
@@ -12754,6 +12934,14 @@ var EmbedProvider = ({
12754
12934
  }
12755
12935
  };
12756
12936
  });
12937
+ const debug = useCallback3(
12938
+ (message, ...args) => {
12939
+ if (options.debug) {
12940
+ console.debug(`[Schematic] ${message}`, ...args);
12941
+ }
12942
+ },
12943
+ [options.debug]
12944
+ );
12757
12945
  const hydrate = useCallback3(async () => {
12758
12946
  setState((prev2) => ({ ...prev2, isPending: true, error: void 0 }));
12759
12947
  try {
@@ -12823,7 +13011,7 @@ var EmbedProvider = ({
12823
13011
  };
12824
13012
  });
12825
13013
  };
12826
- useEffect2(() => {
13014
+ const initI18n = () => {
12827
13015
  instance.use(initReactI18next).init({
12828
13016
  resources: {
12829
13017
  en: en_default
@@ -12834,8 +13022,8 @@ var EmbedProvider = ({
12834
13022
  escapeValue: false
12835
13023
  }
12836
13024
  });
12837
- }, []);
12838
- useEffect2(() => {
13025
+ };
13026
+ const initFontStylesheet = () => {
12839
13027
  const element = document.getElementById("schematic-fonts");
12840
13028
  if (element) {
12841
13029
  styleRef.current = element;
@@ -12846,11 +13034,25 @@ var EmbedProvider = ({
12846
13034
  style.rel = "stylesheet";
12847
13035
  document.head.appendChild(style);
12848
13036
  styleRef.current = style;
12849
- }, []);
13037
+ };
13038
+ useEffect2(() => {
13039
+ initI18n();
13040
+ initFontStylesheet();
13041
+ const planChanged = (event) => {
13042
+ if (!(event instanceof CustomEvent)) {
13043
+ return;
13044
+ }
13045
+ debug("plan changed", event.detail);
13046
+ };
13047
+ window.addEventListener("plan-changed", planChanged);
13048
+ return () => {
13049
+ window.removeEventListener("plan-changed", planChanged);
13050
+ };
13051
+ }, [debug]);
12850
13052
  useEffect2(() => {
12851
13053
  if (accessToken) {
12852
13054
  const { headers = {} } = apiConfig ?? {};
12853
- headers["X-Schematic-Components-Version"] = "0.5.0";
13055
+ headers["X-Schematic-Components-Version"] = "0.6.0";
12854
13056
  headers["X-Schematic-Session-ID"] = sessionIdRef.current;
12855
13057
  const config = new Configuration({
12856
13058
  ...apiConfig,
@@ -13102,6 +13304,17 @@ attr.rem = function propAsRem(key, value) {
13102
13304
  `;
13103
13305
  };
13104
13306
 
13307
+ // src/utils/api.ts
13308
+ var import_pluralize = __toESM(require_pluralize());
13309
+ var getFeatureName = (feature, count = 0) => {
13310
+ const shouldBePlural = count === 0 || count > 1;
13311
+ const { name, singularName, pluralName } = feature;
13312
+ if (pluralName && shouldBePlural) return pluralName;
13313
+ if (singularName)
13314
+ return shouldBePlural ? (0, import_pluralize.default)(singularName, count) : singularName;
13315
+ return (0, import_pluralize.default)(name, count);
13316
+ };
13317
+
13105
13318
  // src/hooks/useIsLightBackground.ts
13106
13319
  function useIsLightBackground() {
13107
13320
  const theme = nt();
@@ -13169,7 +13382,10 @@ import { forwardRef as forwardRef3 } from "react";
13169
13382
  // src/components/ui/box/styles.ts
13170
13383
  var Box = dt.div((props) => {
13171
13384
  function reducer(acc, [key, value]) {
13172
- if (key.startsWith("$") && key !== "$viewport") {
13385
+ if (key.startsWith("$") && ![
13386
+ "$viewport",
13387
+ ...Object.values(TextPropNames).filter((prop) => prop !== "$color")
13388
+ ].includes(key)) {
13173
13389
  acc.push(
13174
13390
  // keys will always be CSS properties
13175
13391
  attr(camelToHyphen(key.slice(1)), value)
@@ -13864,7 +14080,7 @@ var Modal = forwardRef2(
13864
14080
  contentRef?.current?.focus({ preventScroll: true });
13865
14081
  }, [contentRef]);
13866
14082
  return /* @__PURE__ */ jsx5(
13867
- Container2,
14083
+ Box,
13868
14084
  {
13869
14085
  ref,
13870
14086
  tabIndex: 0,
@@ -13892,7 +14108,7 @@ var Modal = forwardRef2(
13892
14108
  $scrollbarColor: `${isLightBackground ? "hsla(0, 0%, 0%, 0.15)" : "hsla(0, 0%, 100%, 0.15)"} transparent`,
13893
14109
  $scrollbarWidth: "thin",
13894
14110
  $scrollbarGutter: "stable both-edges",
13895
- children: /* @__PURE__ */ jsx5(
14111
+ children: /* @__PURE__ */ jsx5(Container2, { children: /* @__PURE__ */ jsx5(
13896
14112
  Flex,
13897
14113
  {
13898
14114
  ref: contentRef,
@@ -13924,7 +14140,7 @@ var Modal = forwardRef2(
13924
14140
  },
13925
14141
  children
13926
14142
  }
13927
- )
14143
+ ) })
13928
14144
  }
13929
14145
  );
13930
14146
  }
@@ -14013,6 +14229,7 @@ var ProgressBar = ({
14013
14229
  barWidth = "100%",
14014
14230
  ...props
14015
14231
  }) => {
14232
+ const theme = nt();
14016
14233
  const barColorMap = {
14017
14234
  gray: "#9CA3AF",
14018
14235
  blue: "#2563EB",
@@ -14056,18 +14273,37 @@ var ProgressBar = ({
14056
14273
  )
14057
14274
  }
14058
14275
  ),
14059
- total !== 0 && /* @__PURE__ */ jsxs4(Text, { $size: 14, $weight: 500, children: [
14060
- value,
14061
- "/",
14062
- total
14063
- ] })
14276
+ total !== 0 && /* @__PURE__ */ jsxs4(
14277
+ Text,
14278
+ {
14279
+ $font: theme.typography.text.fontFamily,
14280
+ $size: 14,
14281
+ $weight: 500,
14282
+ $color: theme.typography.text.color,
14283
+ children: [
14284
+ value,
14285
+ "/",
14286
+ total
14287
+ ]
14288
+ }
14289
+ )
14064
14290
  ]
14065
14291
  }
14066
14292
  );
14067
14293
  };
14068
14294
 
14069
14295
  // src/components/ui/text/styles.ts
14070
- var Text = dt.span.attrs(({ onClick }) => ({
14296
+ var TextPropNames = /* @__PURE__ */ ((TextPropNames2) => {
14297
+ TextPropNames2["Align"] = "$align";
14298
+ TextPropNames2["Font"] = "$font";
14299
+ TextPropNames2["Size"] = "$size";
14300
+ TextPropNames2["Weight"] = "$weight";
14301
+ TextPropNames2["Color"] = "$color";
14302
+ TextPropNames2["Leading"] = "$leading";
14303
+ return TextPropNames2;
14304
+ })(TextPropNames || {});
14305
+ var Text = dt(Box).attrs(({ as = "span", onClick }) => ({
14306
+ as,
14071
14307
  ...onClick && { tabIndex: 0 }
14072
14308
  }))`
14073
14309
  ${({ $font }) => $font && lt`
@@ -14098,7 +14334,8 @@ var Text = dt.span.attrs(({ onClick }) => ({
14098
14334
  `;
14099
14335
 
14100
14336
  // src/components/ui/tooltip/Tooltip.tsx
14101
- import { useLayoutEffect as useLayoutEffect3, useRef as useRef4, useState as useState4 } from "react";
14337
+ var import_debounce = __toESM(require_debounce());
14338
+ import { useCallback as useCallback6, useLayoutEffect as useLayoutEffect3, useRef as useRef4, useState as useState4 } from "react";
14102
14339
  import { createPortal } from "react-dom";
14103
14340
 
14104
14341
  // src/components/ui/tooltip/styles.ts
@@ -14239,7 +14476,7 @@ var Tooltip = ({
14239
14476
  const ref = useRef4(null);
14240
14477
  const [show, setShow] = useState4(false);
14241
14478
  const [coords2, setCoords] = useState4({ x: 0, y: 0 });
14242
- useLayoutEffect3(() => {
14479
+ const updateCoords = useCallback6(() => {
14243
14480
  if (ref.current) {
14244
14481
  const { top: offsetTop, left: offsetLeft } = document.body.getBoundingClientRect();
14245
14482
  const rect = ref.current.getBoundingClientRect();
@@ -14256,7 +14493,15 @@ var Tooltip = ({
14256
14493
  y: Math.round(y2 - offsetTop)
14257
14494
  });
14258
14495
  }
14259
- }, [position2, trigger]);
14496
+ }, [position2]);
14497
+ useLayoutEffect3(() => {
14498
+ updateCoords();
14499
+ const handleResize = (0, import_debounce.default)(updateCoords, DEBOUNCE_TIMEOUT);
14500
+ window.addEventListener("resize", handleResize);
14501
+ return () => {
14502
+ window.removeEventListener("resize", handleResize);
14503
+ };
14504
+ }, [updateCoords]);
14260
14505
  return /* @__PURE__ */ jsxs5(Fragment2, { children: [
14261
14506
  /* @__PURE__ */ jsx8(
14262
14507
  Trigger,
@@ -14277,6 +14522,16 @@ var Tooltip = ({
14277
14522
 
14278
14523
  // src/components/layout/root/styles.ts
14279
14524
  var Container2 = dt(Box)`
14525
+ all: initial;
14526
+ box-sizing: border-box;
14527
+ font-size: ${TEXT_BASE_SIZE}px;
14528
+
14529
+ *,
14530
+ *::before,
14531
+ *::after {
14532
+ box-sizing: inherit;
14533
+ }
14534
+
14280
14535
  sub,
14281
14536
  sup {
14282
14537
  position: static;
@@ -14307,7 +14562,7 @@ import { createPortal as createPortal2 } from "react-dom";
14307
14562
 
14308
14563
  // src/components/shared/checkout-dialog/CheckoutDialog.tsx
14309
14564
  import {
14310
- useCallback as useCallback7,
14565
+ useCallback as useCallback8,
14311
14566
  useEffect as useEffect5,
14312
14567
  useLayoutEffect as useLayoutEffect4,
14313
14568
  useMemo as useMemo5,
@@ -14317,10 +14572,9 @@ import {
14317
14572
 
14318
14573
  // src/components/shared/sidebar/Sidebar.tsx
14319
14574
  import {
14320
- useCallback as useCallback6,
14575
+ useCallback as useCallback7,
14321
14576
  useMemo as useMemo4
14322
14577
  } from "react";
14323
- var import_pluralize = __toESM(require_pluralize());
14324
14578
 
14325
14579
  // src/components/shared/sidebar/StageButton.tsx
14326
14580
  import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
@@ -14607,7 +14861,14 @@ var Sidebar = ({
14607
14861
  proration: charges?.proration ?? 0
14608
14862
  };
14609
14863
  }, [charges]);
14610
- const checkout = useCallback6(async () => {
14864
+ const dispatchPlanChangedEvent = (detail) => {
14865
+ const event = new CustomEvent("plan-changed", {
14866
+ bubbles: true,
14867
+ detail
14868
+ });
14869
+ window.dispatchEvent(event);
14870
+ };
14871
+ const checkout = useCallback7(async () => {
14611
14872
  const priceId = (planPeriod === "month" ? selectedPlan?.monthlyPrice : selectedPlan?.yearlyPrice)?.id;
14612
14873
  if (!api || !selectedPlan || !priceId) {
14613
14874
  return;
@@ -14615,7 +14876,7 @@ var Sidebar = ({
14615
14876
  try {
14616
14877
  setError(void 0);
14617
14878
  setIsLoading(true);
14618
- await api.checkout({
14879
+ const response = await api.checkout({
14619
14880
  changeSubscriptionRequestBody: {
14620
14881
  newPlanId: selectedPlan.id,
14621
14882
  newPriceId: priceId,
@@ -14648,6 +14909,7 @@ var Sidebar = ({
14648
14909
  ...promoCode && { promoCode }
14649
14910
  }
14650
14911
  });
14912
+ dispatchPlanChangedEvent(response.data);
14651
14913
  setIsLoading(false);
14652
14914
  setLayout("portal");
14653
14915
  hydrate();
@@ -14673,14 +14935,15 @@ var Sidebar = ({
14673
14935
  payInAdvanceEntitlements,
14674
14936
  promoCode
14675
14937
  ]);
14676
- const unsubscribe = useCallback6(async () => {
14938
+ const unsubscribe = useCallback7(async () => {
14677
14939
  if (!api) {
14678
14940
  return;
14679
14941
  }
14680
14942
  try {
14681
14943
  setError(void 0);
14682
14944
  setIsLoading(true);
14683
- await api.checkoutUnsubscribe();
14945
+ const response = await api.checkoutUnsubscribe();
14946
+ dispatchPlanChangedEvent(response.data);
14684
14947
  setLayout("portal");
14685
14948
  hydrate();
14686
14949
  } catch {
@@ -14941,7 +15204,7 @@ var Sidebar = ({
14941
15204
  }
14942
15205
  ) }),
14943
15206
  removedUsageBasedEntitlements.reduce(
14944
- (acc, { allocation, quantity, usage }) => {
15207
+ (acc, { allocation, quantity, usage }, index) => {
14945
15208
  if (typeof allocation === "number" && usage.feature?.name) {
14946
15209
  const price = (planPeriod === "month" ? usage.monthlyUsageBasedPrice : usage.yearlyUsageBasedPrice)?.price;
14947
15210
  acc.push(
@@ -14965,7 +15228,7 @@ var Sidebar = ({
14965
15228
  children: usage.priceBehavior === "pay_in_advance" ? /* @__PURE__ */ jsxs7(Fragment3, { children: [
14966
15229
  quantity,
14967
15230
  " ",
14968
- (0, import_pluralize.default)(usage.feature.name, quantity)
15231
+ getFeatureName(usage.feature, quantity)
14969
15232
  ] }) : usage.feature.name
14970
15233
  }
14971
15234
  ) }),
@@ -14994,10 +15257,7 @@ var Sidebar = ({
14994
15257
  ),
14995
15258
  /* @__PURE__ */ jsxs7("sub", { children: [
14996
15259
  "/",
14997
- (0, import_pluralize.default)(
14998
- usage.feature.name.toLowerCase(),
14999
- 1
15000
- )
15260
+ getFeatureName(usage.feature, 1)
15001
15261
  ] })
15002
15262
  ] })
15003
15263
  ]
@@ -15005,7 +15265,7 @@ var Sidebar = ({
15005
15265
  ) })
15006
15266
  ]
15007
15267
  },
15008
- usage.entitlementId
15268
+ index
15009
15269
  )
15010
15270
  );
15011
15271
  }
@@ -15014,7 +15274,7 @@ var Sidebar = ({
15014
15274
  []
15015
15275
  ),
15016
15276
  changedUsageBasedEntitlements.reduce(
15017
- (acc, { entitlement, previous, next: next2 }) => {
15277
+ (acc, { entitlement, previous, next: next2 }, index) => {
15018
15278
  if (entitlement?.feature?.name) {
15019
15279
  acc.push(
15020
15280
  /* @__PURE__ */ jsxs7(Box, { children: [
@@ -15038,7 +15298,7 @@ var Sidebar = ({
15038
15298
  children: [
15039
15299
  previous.quantity,
15040
15300
  " ",
15041
- (0, import_pluralize.default)(entitlement.feature.name)
15301
+ getFeatureName(entitlement.feature)
15042
15302
  ]
15043
15303
  }
15044
15304
  ) }),
@@ -15081,7 +15341,7 @@ var Sidebar = ({
15081
15341
  children: [
15082
15342
  next2.quantity,
15083
15343
  " ",
15084
- (0, import_pluralize.default)(entitlement.feature.name)
15344
+ getFeatureName(entitlement.feature)
15085
15345
  ]
15086
15346
  }
15087
15347
  ) }),
@@ -15107,7 +15367,7 @@ var Sidebar = ({
15107
15367
  ]
15108
15368
  }
15109
15369
  )
15110
- ] }, entitlement.feature.id)
15370
+ ] }, index)
15111
15371
  );
15112
15372
  }
15113
15373
  return acc;
@@ -15115,7 +15375,7 @@ var Sidebar = ({
15115
15375
  []
15116
15376
  ),
15117
15377
  addedUsageBasedEntitlements.reduce(
15118
- (acc, { entitlement, quantity }) => {
15378
+ (acc, { entitlement, quantity }, index) => {
15119
15379
  if (entitlement.feature?.name) {
15120
15380
  const price = (planPeriod === "month" ? entitlement.meteredMonthlyPrice : entitlement.meteredYearlyPrice)?.price;
15121
15381
  acc.push(
@@ -15136,7 +15396,7 @@ var Sidebar = ({
15136
15396
  children: entitlement.priceBehavior === "pay_in_advance" ? /* @__PURE__ */ jsxs7(Fragment3, { children: [
15137
15397
  quantity,
15138
15398
  " ",
15139
- (0, import_pluralize.default)(entitlement.feature.name, quantity)
15399
+ getFeatureName(entitlement.feature, quantity)
15140
15400
  ] }) : entitlement.feature.name
15141
15401
  }
15142
15402
  ) }),
@@ -15165,10 +15425,7 @@ var Sidebar = ({
15165
15425
  ),
15166
15426
  /* @__PURE__ */ jsxs7("sub", { children: [
15167
15427
  "/",
15168
- (0, import_pluralize.default)(
15169
- entitlement.feature.name.toLowerCase(),
15170
- 1
15171
- )
15428
+ getFeatureName(entitlement.feature, 1)
15172
15429
  ] })
15173
15430
  ] })
15174
15431
  ]
@@ -15176,7 +15433,7 @@ var Sidebar = ({
15176
15433
  ) })
15177
15434
  ]
15178
15435
  },
15179
- entitlement.id
15436
+ index
15180
15437
  )
15181
15438
  );
15182
15439
  }
@@ -15246,7 +15503,7 @@ var Sidebar = ({
15246
15503
  children: t2("Add-ons")
15247
15504
  }
15248
15505
  ) }),
15249
- removedAddOns.map((addOn) => /* @__PURE__ */ jsxs7(
15506
+ removedAddOns.map((addOn, index) => /* @__PURE__ */ jsxs7(
15250
15507
  Flex,
15251
15508
  {
15252
15509
  $justifyContent: "space-between",
@@ -15287,9 +15544,9 @@ var Sidebar = ({
15287
15544
  ) })
15288
15545
  ]
15289
15546
  },
15290
- addOn.id
15547
+ index
15291
15548
  )),
15292
- selectedAddOns.map((addOn) => /* @__PURE__ */ jsxs7(
15549
+ selectedAddOns.map((addOn, index) => /* @__PURE__ */ jsxs7(
15293
15550
  Flex,
15294
15551
  {
15295
15552
  $justifyContent: "space-between",
@@ -15315,7 +15572,8 @@ var Sidebar = ({
15315
15572
  $color: theme.typography.text.color,
15316
15573
  children: [
15317
15574
  formatCurrency(
15318
- (planPeriod === "month" ? addOn.monthlyPrice : addOn.yearlyPrice)?.price ?? 0
15575
+ (planPeriod === "month" ? addOn.monthlyPrice : addOn.yearlyPrice)?.price ?? 0,
15576
+ (planPeriod === "month" ? addOn.monthlyPrice : addOn.yearlyPrice)?.currency
15319
15577
  ),
15320
15578
  /* @__PURE__ */ jsxs7("sub", { children: [
15321
15579
  "/",
@@ -15326,7 +15584,7 @@ var Sidebar = ({
15326
15584
  ) })
15327
15585
  ]
15328
15586
  },
15329
- addOn.id
15587
+ index
15330
15588
  ))
15331
15589
  ] }),
15332
15590
  proration !== 0 && /* @__PURE__ */ jsxs7(Fragment3, { children: [
@@ -15776,7 +16034,6 @@ var Navigation = ({
15776
16034
 
15777
16035
  // src/components/shared/checkout-dialog/Plan.tsx
15778
16036
  import { useState as useState5 } from "react";
15779
- var import_pluralize2 = __toESM(require_pluralize());
15780
16037
 
15781
16038
  // src/components/elements/pricing-table/styles.ts
15782
16039
  var ButtonLink = dt.a`
@@ -15784,6 +16041,7 @@ var ButtonLink = dt.a`
15784
16041
  justify-content: center;
15785
16042
  align-items: center;
15786
16043
  flex-grow: 1;
16044
+ height: 100%;
15787
16045
  `;
15788
16046
 
15789
16047
  // src/components/shared/checkout-dialog/Plan.tsx
@@ -15829,13 +16087,11 @@ var Plan = ({
15829
16087
  $display: "grid",
15830
16088
  $gridTemplateColumns: "repeat(auto-fill, minmax(300px, 1fr))",
15831
16089
  $gap: "1rem",
15832
- $flexGrow: "1",
15833
- children: plans.map((plan) => {
16090
+ $flexGrow: 1,
16091
+ children: plans.map((plan, planIndex) => {
15834
16092
  const count = entitlementCounts[plan.id];
15835
- let isExpanded = false;
15836
- if (count?.limit && count.limit > VISIBLE_ENTITLEMENT_COUNT) {
15837
- isExpanded = true;
15838
- }
16093
+ const isExpanded = count.limit > VISIBLE_ENTITLEMENT_COUNT;
16094
+ const { price: planPrice, currency: planCurrency } = (period === "month" ? plan.monthlyPrice : period === "year" && plan.yearlyPrice) || {};
15839
16095
  return /* @__PURE__ */ jsxs9(
15840
16096
  Flex,
15841
16097
  {
@@ -15893,10 +16149,7 @@ var Plan = ({
15893
16149
  $size: theme.typography.heading2.fontSize,
15894
16150
  $weight: theme.typography.heading2.fontWeight,
15895
16151
  $color: theme.typography.heading2.color,
15896
- children: plan.custom ? plan.customPlanConfig?.priceText ? plan.customPlanConfig?.priceText : t2("Custom Plan Price") : formatCurrency(
15897
- (period === "month" ? plan.monthlyPrice : plan.yearlyPrice)?.price ?? 0,
15898
- (period === "month" ? plan.monthlyPrice : plan.yearlyPrice)?.currency
15899
- )
16152
+ children: plan.custom ? plan.customPlanConfig?.priceText ? plan.customPlanConfig.priceText : t2("Custom Plan Price") : formatCurrency(planPrice ?? 0, planCurrency)
15900
16153
  }
15901
16154
  ),
15902
16155
  !plan.custom && /* @__PURE__ */ jsxs9(
@@ -15935,140 +16188,148 @@ var Plan = ({
15935
16188
  {
15936
16189
  $flexDirection: "column",
15937
16190
  $justifyContent: "end",
15938
- $flexGrow: "1",
16191
+ $flexGrow: 1,
15939
16192
  $gap: `${cardPadding}rem`,
15940
16193
  $padding: `${0.75 * cardPadding}rem ${cardPadding}rem 0`,
15941
16194
  children: [
15942
- /* @__PURE__ */ jsxs9(Flex, { $flexDirection: "column", $gap: "1rem", $flexGrow: "1", children: [
15943
- plan.entitlements.reduce((acc, entitlement) => {
15944
- const hasNumericValue = entitlement.valueType === "numeric" || entitlement.valueType === "unlimited" || entitlement.valueType === "trait";
15945
- let metricPeriodText;
15946
- if (hasNumericValue && entitlement.metricPeriod && entitlement.priceBehavior !== "overage") {
15947
- metricPeriodText = {
15948
- billing: t2("billing period"),
15949
- current_day: t2("day"),
15950
- current_month: t2("month"),
15951
- current_year: t2("year")
15952
- }[entitlement.metricPeriod];
15953
- }
15954
- const limit = entitlement.softLimit || entitlement.valueNumeric;
15955
- const price = (period === "month" ? entitlement.meteredMonthlyPrice : entitlement.meteredYearlyPrice)?.price;
15956
- const currency = (period === "month" ? entitlement.meteredMonthlyPrice : entitlement.meteredYearlyPrice)?.currency;
15957
- if (entitlement.priceBehavior && typeof price !== "number") {
15958
- return acc;
15959
- }
15960
- acc.push(
15961
- /* @__PURE__ */ jsx13(
15962
- Flex,
15963
- {
15964
- $flexWrap: "wrap",
15965
- $justifyContent: "space-between",
15966
- $alignItems: "center",
15967
- $gap: "1rem",
15968
- children: /* @__PURE__ */ jsxs9(Flex, { $gap: "1rem", children: [
15969
- entitlement.feature?.icon && /* @__PURE__ */ jsx13(
15970
- IconRound,
15971
- {
15972
- name: entitlement.feature.icon,
15973
- size: "sm",
15974
- colors: [
15975
- theme.primary,
15976
- isLightBackground ? "hsla(0, 0%, 0%, 0.0625)" : "hsla(0, 0%, 100%, 0.25)"
15977
- ]
15978
- }
15979
- ),
15980
- entitlement.feature?.name && /* @__PURE__ */ jsxs9(
15981
- Flex,
15982
- {
15983
- $flexDirection: "column",
15984
- $justifyContent: "center",
15985
- $gap: "0.5rem",
15986
- children: [
15987
- /* @__PURE__ */ jsx13(
15988
- Text,
15989
- {
15990
- $font: theme.typography.text.fontFamily,
15991
- $size: theme.typography.text.fontSize,
15992
- $weight: theme.typography.text.fontWeight,
15993
- $color: theme.typography.text.color,
15994
- $leading: 1.35,
15995
- children: typeof price === "number" && (entitlement.priceBehavior === "pay_in_advance" || entitlement.priceBehavior === "pay_as_you_go") ? /* @__PURE__ */ jsxs9(Fragment5, { children: [
15996
- formatCurrency(price, currency),
15997
- " ",
15998
- t2("per"),
15999
- " ",
16000
- (0, import_pluralize2.default)(entitlement.feature.name, 1),
16001
- entitlement.priceBehavior === "pay_in_advance" && /* @__PURE__ */ jsxs9(Fragment5, { children: [
16002
- " ",
16003
- t2("per"),
16004
- " ",
16005
- period
16006
- ] })
16007
- ] }) : hasNumericValue ? /* @__PURE__ */ jsxs9(Fragment5, { children: [
16008
- entitlement.valueType === "unlimited" ? t2("Unlimited", {
16009
- item: (0, import_pluralize2.default)(
16010
- entitlement.feature.name
16011
- )
16012
- }) : typeof limit === "number" && /* @__PURE__ */ jsxs9(Fragment5, { children: [
16013
- formatNumber(limit),
16014
- " ",
16015
- (0, import_pluralize2.default)(
16016
- entitlement.feature.name,
16017
- limit
16018
- )
16019
- ] }),
16020
- metricPeriodText ? /* @__PURE__ */ jsxs9(Fragment5, { children: [
16021
- " ",
16022
- t2("per"),
16023
- " ",
16024
- metricPeriodText
16025
- ] }) : entitlement.priceBehavior === "overage" && entitlement.feature.featureType === "event" && /* @__PURE__ */ jsxs9(Fragment5, { children: [
16026
- "/",
16027
- shortenPeriod(period)
16028
- ] })
16029
- ] }) : entitlement.feature.name
16030
- }
16031
- ),
16032
- entitlement.priceBehavior === "overage" && typeof price === "number" && /* @__PURE__ */ jsxs9(
16033
- Text,
16034
- {
16035
- $font: theme.typography.text.fontFamily,
16036
- $size: 0.875 * theme.typography.text.fontSize,
16037
- $weight: theme.typography.text.fontWeight,
16038
- $color: hexToHSL(theme.typography.text.color).l > 50 ? darken(
16039
- theme.typography.text.color,
16040
- 0.46
16041
- ) : lighten(
16042
- theme.typography.text.color,
16043
- 0.46
16044
- ),
16045
- $leading: 1.35,
16046
- children: [
16047
- formatCurrency(price),
16048
- "/",
16049
- (0, import_pluralize2.default)(
16050
- entitlement.feature.name.toLowerCase(),
16051
- 1
16195
+ /* @__PURE__ */ jsxs9(Flex, { $flexDirection: "column", $gap: "1rem", $flexGrow: 1, children: [
16196
+ plan.entitlements.reduce(
16197
+ (acc, entitlement, entitlementIndex) => {
16198
+ const hasNumericValue = entitlement.valueType === "numeric" || entitlement.valueType === "unlimited" || entitlement.valueType === "trait";
16199
+ let metricPeriodText;
16200
+ if (hasNumericValue && entitlement.metricPeriod && entitlement.priceBehavior !== "overage") {
16201
+ metricPeriodText = {
16202
+ billing: t2("billing period"),
16203
+ current_day: t2("day"),
16204
+ current_month: t2("month"),
16205
+ current_year: t2("year")
16206
+ }[entitlement.metricPeriod];
16207
+ }
16208
+ const limit = entitlement.softLimit ?? entitlement.valueNumeric;
16209
+ const {
16210
+ price: entitlementPrice,
16211
+ currency: entitlementCurrency
16212
+ } = (period === "month" ? entitlement.meteredMonthlyPrice : period === "year" && entitlement.meteredYearlyPrice) || {};
16213
+ if (entitlement.priceBehavior && typeof entitlementPrice !== "number") {
16214
+ return acc;
16215
+ }
16216
+ acc.push(
16217
+ /* @__PURE__ */ jsx13(
16218
+ Flex,
16219
+ {
16220
+ $flexWrap: "wrap",
16221
+ $justifyContent: "space-between",
16222
+ $alignItems: "center",
16223
+ $gap: "1rem",
16224
+ children: /* @__PURE__ */ jsxs9(Flex, { $gap: "1rem", children: [
16225
+ entitlement.feature?.icon && /* @__PURE__ */ jsx13(
16226
+ IconRound,
16227
+ {
16228
+ name: entitlement.feature.icon,
16229
+ size: "sm",
16230
+ colors: [
16231
+ theme.primary,
16232
+ isLightBackground ? "hsla(0, 0%, 0%, 0.0625)" : "hsla(0, 0%, 100%, 0.25)"
16233
+ ]
16234
+ }
16235
+ ),
16236
+ entitlement.feature?.name && /* @__PURE__ */ jsxs9(
16237
+ Flex,
16238
+ {
16239
+ $flexDirection: "column",
16240
+ $justifyContent: "center",
16241
+ $gap: "0.5rem",
16242
+ children: [
16243
+ /* @__PURE__ */ jsx13(
16244
+ Text,
16245
+ {
16246
+ $font: theme.typography.text.fontFamily,
16247
+ $size: theme.typography.text.fontSize,
16248
+ $weight: theme.typography.text.fontWeight,
16249
+ $color: theme.typography.text.color,
16250
+ $leading: 1.35,
16251
+ children: typeof entitlementPrice === "number" && (entitlement.priceBehavior === "pay_in_advance" || entitlement.priceBehavior === "pay_as_you_go") ? /* @__PURE__ */ jsxs9(Fragment5, { children: [
16252
+ formatCurrency(
16253
+ entitlementPrice,
16254
+ entitlementCurrency
16255
+ ),
16256
+ " ",
16257
+ t2("per"),
16258
+ " ",
16259
+ getFeatureName(entitlement.feature, 1),
16260
+ entitlement.priceBehavior === "pay_in_advance" && /* @__PURE__ */ jsxs9(Fragment5, { children: [
16261
+ " ",
16262
+ t2("per"),
16263
+ " ",
16264
+ period
16265
+ ] })
16266
+ ] }) : hasNumericValue ? /* @__PURE__ */ jsxs9(Fragment5, { children: [
16267
+ entitlement.valueType === "unlimited" && !entitlement.priceBehavior ? t2("Unlimited", {
16268
+ item: getFeatureName(
16269
+ entitlement.feature
16270
+ )
16271
+ }) : typeof limit === "number" && /* @__PURE__ */ jsxs9(Fragment5, { children: [
16272
+ formatNumber(limit),
16273
+ " ",
16274
+ getFeatureName(
16275
+ entitlement.feature,
16276
+ limit
16277
+ )
16278
+ ] }),
16279
+ metricPeriodText ? /* @__PURE__ */ jsxs9(Fragment5, { children: [
16280
+ " ",
16281
+ t2("per"),
16282
+ " ",
16283
+ metricPeriodText
16284
+ ] }) : entitlement.priceBehavior === "overage" && entitlement.feature.featureType === "event" && /* @__PURE__ */ jsxs9(Fragment5, { children: [
16285
+ "/",
16286
+ shortenPeriod(period)
16287
+ ] })
16288
+ ] }) : entitlement.feature.name
16289
+ }
16290
+ ),
16291
+ entitlement.priceBehavior === "overage" && typeof entitlementPrice === "number" && /* @__PURE__ */ jsxs9(
16292
+ Text,
16293
+ {
16294
+ $font: theme.typography.text.fontFamily,
16295
+ $size: 0.875 * theme.typography.text.fontSize,
16296
+ $weight: theme.typography.text.fontWeight,
16297
+ $color: hexToHSL(theme.typography.text.color).l > 50 ? darken(
16298
+ theme.typography.text.color,
16299
+ 0.46
16300
+ ) : lighten(
16301
+ theme.typography.text.color,
16302
+ 0.46
16052
16303
  ),
16053
- entitlement.feature.featureType === "event" && /* @__PURE__ */ jsxs9(Fragment5, { children: [
16304
+ $leading: 1.35,
16305
+ children: [
16306
+ formatCurrency(
16307
+ entitlementPrice,
16308
+ entitlementCurrency
16309
+ ),
16054
16310
  "/",
16055
- shortenPeriod(period)
16056
- ] }),
16057
- " ",
16058
- t2("overage fee")
16059
- ]
16060
- }
16061
- )
16062
- ]
16063
- }
16064
- )
16065
- ] })
16066
- },
16067
- entitlement.id
16068
- )
16069
- );
16070
- return acc;
16071
- }, []).slice(0, count?.limit ?? VISIBLE_ENTITLEMENT_COUNT),
16311
+ getFeatureName(entitlement.feature, 1),
16312
+ entitlement.feature.featureType === "trait" && /* @__PURE__ */ jsxs9(Fragment5, { children: [
16313
+ "/",
16314
+ shortenPeriod(period)
16315
+ ] }),
16316
+ " ",
16317
+ t2("overage fee")
16318
+ ]
16319
+ }
16320
+ )
16321
+ ]
16322
+ }
16323
+ )
16324
+ ] })
16325
+ },
16326
+ entitlementIndex
16327
+ )
16328
+ );
16329
+ return acc;
16330
+ },
16331
+ []
16332
+ ).slice(0, count?.limit ?? VISIBLE_ENTITLEMENT_COUNT),
16072
16333
  (count?.size || plan.entitlements.length) > VISIBLE_ENTITLEMENT_COUNT && /* @__PURE__ */ jsxs9(
16073
16334
  Flex,
16074
16335
  {
@@ -16095,8 +16356,8 @@ var Plan = ({
16095
16356
  $font: theme.typography.link.fontFamily,
16096
16357
  $size: theme.typography.link.fontSize,
16097
16358
  $weight: theme.typography.link.fontWeight,
16098
- $leading: 1,
16099
16359
  $color: theme.typography.link.color,
16360
+ $leading: 1,
16100
16361
  style: { cursor: "pointer" },
16101
16362
  children: isExpanded ? t2("Hide all") : t2("See all")
16102
16363
  }
@@ -16127,9 +16388,11 @@ var Plan = ({
16127
16388
  /* @__PURE__ */ jsx13(
16128
16389
  Text,
16129
16390
  {
16130
- $size: 15,
16131
- $leading: 1,
16391
+ $font: theme.typography.text.fontFamily,
16392
+ $size: 15 / 16 * theme.typography.text.fontSize,
16393
+ $weight: theme.typography.text.fontWeight,
16132
16394
  $color: theme.typography.text.color,
16395
+ $leading: 1,
16133
16396
  children: plan.current ? t2("Current plan") : t2("Selected")
16134
16397
  }
16135
16398
  )
@@ -16174,7 +16437,7 @@ var Plan = ({
16174
16437
  )
16175
16438
  ]
16176
16439
  },
16177
- plan.id
16440
+ planIndex
16178
16441
  );
16179
16442
  })
16180
16443
  }
@@ -16194,7 +16457,7 @@ var AddOns = ({ addOns, toggle, isLoading, period }) => {
16194
16457
  $display: "grid",
16195
16458
  $gridTemplateColumns: "repeat(auto-fill, minmax(300px, 1fr))",
16196
16459
  $gap: "1rem",
16197
- children: addOns.map((addOn) => {
16460
+ children: addOns.map((addOn, index) => {
16198
16461
  return /* @__PURE__ */ jsxs10(
16199
16462
  Flex,
16200
16463
  {
@@ -16310,7 +16573,7 @@ var AddOns = ({ addOns, toggle, isLoading, period }) => {
16310
16573
  ) })
16311
16574
  ]
16312
16575
  },
16313
- addOn.id
16576
+ index
16314
16577
  );
16315
16578
  })
16316
16579
  }
@@ -16318,7 +16581,6 @@ var AddOns = ({ addOns, toggle, isLoading, period }) => {
16318
16581
  };
16319
16582
 
16320
16583
  // src/components/shared/checkout-dialog/Usage.tsx
16321
- var import_pluralize3 = __toESM(require_pluralize());
16322
16584
  import { Fragment as Fragment7, jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
16323
16585
  var Usage = ({ entitlements, updateQuantity, period }) => {
16324
16586
  const theme = nt();
@@ -16327,7 +16589,7 @@ var Usage = ({ entitlements, updateQuantity, period }) => {
16327
16589
  const unitPriceFontSize = 0.875 * theme.typography.text.fontSize;
16328
16590
  const unitPriceColor = hexToHSL(theme.typography.text.color).l > 50 ? darken(theme.typography.text.color, 0.46) : lighten(theme.typography.text.color, 0.46);
16329
16591
  return /* @__PURE__ */ jsx15(Fragment7, { children: /* @__PURE__ */ jsx15(Flex, { $flexDirection: "column", $gap: "1rem", children: entitlements.reduce(
16330
- (acc, { entitlement, quantity, usage }) => {
16592
+ (acc, { entitlement, quantity, usage }, index) => {
16331
16593
  if (entitlement.priceBehavior === "pay_in_advance" && entitlement.feature) {
16332
16594
  acc.push(
16333
16595
  /* @__PURE__ */ jsxs11(
@@ -16410,9 +16672,7 @@ var Usage = ({ entitlements, updateQuantity, period }) => {
16410
16672
  ] }),
16411
16673
  t2("Currently using", {
16412
16674
  quantity: usage,
16413
- unit: (0, import_pluralize3.default)(
16414
- entitlement.feature.name.toLowerCase()
16415
- )
16675
+ unit: getFeatureName(entitlement.feature)
16416
16676
  })
16417
16677
  ]
16418
16678
  }
@@ -16459,7 +16719,7 @@ var Usage = ({ entitlements, updateQuantity, period }) => {
16459
16719
  ),
16460
16720
  /* @__PURE__ */ jsxs11("sub", { children: [
16461
16721
  "/",
16462
- (0, import_pluralize3.default)(entitlement.feature.name.toLowerCase(), 1),
16722
+ getFeatureName(entitlement.feature, 1),
16463
16723
  "/",
16464
16724
  shortenPeriod(period)
16465
16725
  ] })
@@ -16471,7 +16731,7 @@ var Usage = ({ entitlements, updateQuantity, period }) => {
16471
16731
  )
16472
16732
  ]
16473
16733
  },
16474
- entitlement.id
16734
+ index
16475
16735
  )
16476
16736
  );
16477
16737
  }
@@ -16525,7 +16785,7 @@ var registerWrapper = function registerWrapper2(stripe, startTime) {
16525
16785
  }
16526
16786
  stripe._registerWrapper({
16527
16787
  name: "stripe-js",
16528
- version: "6.0.0",
16788
+ version: "6.1.0",
16529
16789
  startTime
16530
16790
  });
16531
16791
  };
@@ -16600,7 +16860,7 @@ var initStripe = function initStripe2(maybeStripe, args, startTime) {
16600
16860
  var version = runtimeVersionToUrlVersion(maybeStripe.version);
16601
16861
  var expectedVersion = RELEASE_TRAIN;
16602
16862
  if (isTestKey && version !== expectedVersion) {
16603
- 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"));
16863
+ 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"));
16604
16864
  }
16605
16865
  var stripe = maybeStripe.apply(void 0, args);
16606
16866
  registerWrapper(stripe, startTime);
@@ -16710,7 +16970,16 @@ var Checkout = ({
16710
16970
  clientSecret: setupIntent.setupIntentClientSecret
16711
16971
  },
16712
16972
  children: [
16713
- /* @__PURE__ */ jsx16(Box, { $width: "100%", $marginBottom: "1.5rem", children: /* @__PURE__ */ jsx16(Text, { $size: 18, children: t2("Add payment method") }) }),
16973
+ /* @__PURE__ */ jsx16(Box, { $width: "100%", $marginBottom: "1.5rem", children: /* @__PURE__ */ jsx16(
16974
+ Text,
16975
+ {
16976
+ $font: theme.typography.text.fontFamily,
16977
+ $size: 18,
16978
+ $weight: theme.typography.text.fontWeight,
16979
+ $color: theme.typography.text.color,
16980
+ children: t2("Add payment method")
16981
+ }
16982
+ ) }),
16714
16983
  /* @__PURE__ */ jsx16(
16715
16984
  PaymentForm,
16716
16985
  {
@@ -16795,8 +17064,8 @@ var Checkout = ({
16795
17064
  $font: theme.typography.link.fontFamily,
16796
17065
  $size: theme.typography.link.fontSize,
16797
17066
  $weight: theme.typography.link.fontWeight,
16798
- $leading: 1,
16799
17067
  $color: theme.typography.link.color,
17068
+ $leading: 1,
16800
17069
  children: t2("Apply discount")
16801
17070
  }
16802
17071
  ) })
@@ -16845,7 +17114,7 @@ var CheckoutDialog = ({ top = 0 }) => {
16845
17114
  )
16846
17115
  }))
16847
17116
  );
16848
- const createActiveUsageBasedEntitlementsReducer = useCallback7(
17117
+ const createActiveUsageBasedEntitlementsReducer = useCallback8(
16849
17118
  (period = planPeriod) => (acc, entitlement) => {
16850
17119
  if (entitlement.priceBehavior && (period === "month" && entitlement.meteredMonthlyPrice || period === "year" && entitlement.meteredYearlyPrice)) {
16851
17120
  const featureUsage = data.featureUsage?.features.find(
@@ -16932,7 +17201,7 @@ var CheckoutDialog = ({ top = 0 }) => {
16932
17201
  return "plan";
16933
17202
  });
16934
17203
  const isLightBackground = useIsLightBackground();
16935
- const previewCheckout = useCallback7(
17204
+ const previewCheckout = useCallback8(
16936
17205
  async (updates) => {
16937
17206
  const period = updates.period || planPeriod;
16938
17207
  const plan = updates.plan || selectedPlan;
@@ -17006,7 +17275,7 @@ var CheckoutDialog = ({ top = 0 }) => {
17006
17275
  promoCode
17007
17276
  ]
17008
17277
  );
17009
- const selectPlan = useCallback7(
17278
+ const selectPlan = useCallback8(
17010
17279
  (updates) => {
17011
17280
  const plan = updates.plan || selectedPlan;
17012
17281
  if (!plan) {
@@ -17036,7 +17305,7 @@ var CheckoutDialog = ({ top = 0 }) => {
17036
17305
  previewCheckout
17037
17306
  ]
17038
17307
  );
17039
- const changePlanPeriod = useCallback7(
17308
+ const changePlanPeriod = useCallback8(
17040
17309
  (period) => {
17041
17310
  setPlanPeriod(period);
17042
17311
  previewCheckout({ period });
@@ -17053,7 +17322,7 @@ var CheckoutDialog = ({ top = 0 }) => {
17053
17322
  return updated;
17054
17323
  });
17055
17324
  };
17056
- const updateUsageBasedEntitlementQuantity = useCallback7(
17325
+ const updateUsageBasedEntitlementQuantity = useCallback8(
17057
17326
  (id, updatedQuantity) => {
17058
17327
  setUsageBasedEntitlements((prev2) => {
17059
17328
  const updated = prev2.map(
@@ -17309,6 +17578,7 @@ import {
17309
17578
  import { jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
17310
17579
  var PaymentForm = ({ onConfirm }) => {
17311
17580
  const { t: t2 } = useTranslation();
17581
+ const theme = nt();
17312
17582
  const stripe = useStripe();
17313
17583
  const elements = useElements();
17314
17584
  const { api } = useEmbed();
@@ -17370,7 +17640,17 @@ var PaymentForm = ({ onConfirm }) => {
17370
17640
  children: isLoading ? t2("Loading") : t2("Save payment method")
17371
17641
  }
17372
17642
  ),
17373
- message && /* @__PURE__ */ jsx18(Box, { $margin: "1rem 0", children: /* @__PURE__ */ jsx18(Text, { id: "payment-message", $size: 15, $weight: 500, $color: "#DB6669", children: message }) })
17643
+ message && /* @__PURE__ */ jsx18(Box, { $margin: "1rem 0", children: /* @__PURE__ */ jsx18(
17644
+ Text,
17645
+ {
17646
+ id: "payment-message",
17647
+ $font: theme.typography.text.fontFamily,
17648
+ $size: 15,
17649
+ $weight: 500,
17650
+ $color: "#DB6669",
17651
+ children: message
17652
+ }
17653
+ ) })
17374
17654
  ]
17375
17655
  }
17376
17656
  );
@@ -17488,7 +17768,7 @@ var PeriodToggle = ({
17488
17768
  };
17489
17769
 
17490
17770
  // src/components/shared/unsubscribe-dialog/UnsubscribeDialog.tsx
17491
- import { useCallback as useCallback8, useMemo as useMemo7, useRef as useRef6, useState as useState10 } from "react";
17771
+ import { useCallback as useCallback9, useMemo as useMemo7, useRef as useRef6, useState as useState10 } from "react";
17492
17772
  import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
17493
17773
  var UnsubscribeDialog = ({ top = 0 }) => {
17494
17774
  const { t: t2 } = useTranslation();
@@ -17538,7 +17818,7 @@ var UnsubscribeDialog = ({ top = 0 }) => {
17538
17818
  data.subscription?.cancelAt || data.upcomingInvoice?.dueDate || Date.now()
17539
17819
  );
17540
17820
  const isLightBackground = useIsLightBackground();
17541
- const handleClose = useCallback8(() => {
17821
+ const handleClose = useCallback9(() => {
17542
17822
  setLayout("portal");
17543
17823
  }, [setLayout]);
17544
17824
  return /* @__PURE__ */ jsxs15(
@@ -17686,103 +17966,112 @@ var UnsubscribeDialog = ({ top = 0 }) => {
17686
17966
  import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
17687
17967
  var Badge = () => {
17688
17968
  const { t: t2 } = useTranslation();
17969
+ const theme = nt();
17689
17970
  const { settings } = useEmbed();
17690
17971
  return /* @__PURE__ */ jsxs16(
17691
17972
  Flex,
17692
17973
  {
17974
+ as: "a",
17975
+ href: "https://schematichq.com?utm_source=schematic_component_badge",
17976
+ target: "_blank",
17977
+ rel: "noreferrer",
17693
17978
  $justifyContent: settings.badge?.alignment || "start",
17694
17979
  $alignItems: "center",
17980
+ $gap: "0.5rem",
17695
17981
  $gridColumn: "1 / -1",
17696
17982
  children: [
17697
- /* @__PURE__ */ jsx21(Box, { $fontSize: "0.75rem", $marginRight: "0.5rem", children: t2("Powered by") }),
17698
17983
  /* @__PURE__ */ jsxs16(
17699
- "svg",
17984
+ Text,
17700
17985
  {
17701
- width: 86,
17702
- height: 16,
17703
- viewBox: "0 0 86 16",
17704
- style: { marginTop: "0.125rem" },
17986
+ $font: theme.typography.text.fontFamily,
17987
+ $size: 0.75 * theme.typography.text.fontSize,
17988
+ $weight: theme.typography.text.fontWeight,
17989
+ $color: theme.typography.text.color,
17705
17990
  children: [
17706
- /* @__PURE__ */ jsx21(
17707
- "path",
17708
- {
17709
- 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",
17710
- fill: "currentColor"
17711
- }
17712
- ),
17713
- /* @__PURE__ */ jsx21(
17714
- "path",
17715
- {
17716
- 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",
17717
- fill: "currentColor"
17718
- }
17719
- ),
17720
- /* @__PURE__ */ jsx21(
17721
- "path",
17722
- {
17723
- 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",
17724
- fill: "currentColor"
17725
- }
17726
- ),
17727
- /* @__PURE__ */ jsx21(
17728
- "path",
17729
- {
17730
- 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",
17731
- fill: "currentColor"
17732
- }
17733
- ),
17734
- /* @__PURE__ */ jsx21(
17735
- "path",
17736
- {
17737
- 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",
17738
- fill: "currentColor"
17739
- }
17740
- ),
17741
- /* @__PURE__ */ jsx21(
17742
- "path",
17743
- {
17744
- 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",
17745
- fill: "currentColor"
17746
- }
17747
- ),
17748
- /* @__PURE__ */ jsx21(
17749
- "path",
17750
- {
17751
- 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",
17752
- fill: "currentColor"
17753
- }
17754
- ),
17755
- /* @__PURE__ */ jsx21(
17756
- "path",
17757
- {
17758
- 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",
17759
- fill: "currentColor"
17760
- }
17761
- ),
17762
- /* @__PURE__ */ jsx21(
17763
- "path",
17764
- {
17765
- 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",
17766
- fill: "currentColor"
17767
- }
17768
- ),
17769
- /* @__PURE__ */ jsx21(
17770
- "path",
17771
- {
17772
- 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",
17773
- fill: "currentColor"
17774
- }
17775
- ),
17776
- /* @__PURE__ */ jsx21(
17777
- "path",
17778
- {
17779
- 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",
17780
- fill: "currentColor"
17781
- }
17782
- )
17991
+ t2("Powered by"),
17992
+ " "
17783
17993
  ]
17784
17994
  }
17785
- )
17995
+ ),
17996
+ /* @__PURE__ */ jsxs16("svg", { viewBox: "0 0 86 16", width: 86, height: 16, children: [
17997
+ /* @__PURE__ */ jsx21(
17998
+ "path",
17999
+ {
18000
+ 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",
18001
+ fill: "currentColor"
18002
+ }
18003
+ ),
18004
+ /* @__PURE__ */ jsx21(
18005
+ "path",
18006
+ {
18007
+ 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",
18008
+ fill: "currentColor"
18009
+ }
18010
+ ),
18011
+ /* @__PURE__ */ jsx21(
18012
+ "path",
18013
+ {
18014
+ 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",
18015
+ fill: "currentColor"
18016
+ }
18017
+ ),
18018
+ /* @__PURE__ */ jsx21(
18019
+ "path",
18020
+ {
18021
+ 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",
18022
+ fill: "currentColor"
18023
+ }
18024
+ ),
18025
+ /* @__PURE__ */ jsx21(
18026
+ "path",
18027
+ {
18028
+ 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",
18029
+ fill: "currentColor"
18030
+ }
18031
+ ),
18032
+ /* @__PURE__ */ jsx21(
18033
+ "path",
18034
+ {
18035
+ 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",
18036
+ fill: "currentColor"
18037
+ }
18038
+ ),
18039
+ /* @__PURE__ */ jsx21(
18040
+ "path",
18041
+ {
18042
+ 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",
18043
+ fill: "currentColor"
18044
+ }
18045
+ ),
18046
+ /* @__PURE__ */ jsx21(
18047
+ "path",
18048
+ {
18049
+ 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",
18050
+ fill: "currentColor"
18051
+ }
18052
+ ),
18053
+ /* @__PURE__ */ jsx21(
18054
+ "path",
18055
+ {
18056
+ 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",
18057
+ fill: "currentColor"
18058
+ }
18059
+ ),
18060
+ /* @__PURE__ */ jsx21(
18061
+ "path",
18062
+ {
18063
+ 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",
18064
+ fill: "currentColor"
18065
+ }
18066
+ ),
18067
+ /* @__PURE__ */ jsx21(
18068
+ "path",
18069
+ {
18070
+ 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",
18071
+ fill: "currentColor"
18072
+ }
18073
+ )
18074
+ ] })
17786
18075
  ]
17787
18076
  }
17788
18077
  );
@@ -17859,7 +18148,7 @@ var StyledViewport = dt(Box).attrs(({ theme }) => ({
17859
18148
  import { Fragment as Fragment9, jsx as jsx23, jsxs as jsxs18 } from "react/jsx-runtime";
17860
18149
  var Viewport = forwardRef4(
17861
18150
  ({ children, portal, ...props }, ref) => {
17862
- const { data, layout } = useEmbed();
18151
+ const { data, layout, settings } = useEmbed();
17863
18152
  const [top, setTop] = useState11(0);
17864
18153
  const canCheckout = data.capabilities?.checkout ?? true;
17865
18154
  useLayoutEffect6(() => {
@@ -17877,7 +18166,7 @@ var Viewport = forwardRef4(
17877
18166
  return /* @__PURE__ */ jsxs18(Fragment9, { children: [
17878
18167
  /* @__PURE__ */ jsxs18(StyledViewport, { ref, ...props, children: [
17879
18168
  /* @__PURE__ */ jsx23(RenderLayout, { children }),
17880
- /* @__PURE__ */ jsx23(Badge, {})
18169
+ (!data.capabilities?.badgeVisibility || settings.badge?.visibility !== "hidden") && /* @__PURE__ */ jsx23(Badge, {})
17881
18170
  ] }),
17882
18171
  canCheckout && layout === "checkout" && createPortal2(/* @__PURE__ */ jsx23(CheckoutDialog, { top }), portal || document.body),
17883
18172
  layout === "unsubscribe" && createPortal2(
@@ -17905,14 +18194,7 @@ var StyledCard = dt.div(({ theme }) => {
17905
18194
  const borderRadius = `${theme.card.borderRadius / TEXT_BASE_SIZE}rem`;
17906
18195
  return lt`
17907
18196
  position: relative;
17908
- box-sizing: border-box;
17909
- font-size: ${TEXT_BASE_SIZE}px;
17910
-
17911
- *,
17912
- *::before,
17913
- *::after {
17914
- box-sizing: inherit;
17915
- }
18197
+ overflow: hidden;
17916
18198
 
17917
18199
  ${theme.sectionLayout === "merged" ? `&:not(:has(${FussyChild}))` : `${Element}:not(:is(${FussyChild}))`} {
17918
18200
  color: ${theme.typography.text.color};
@@ -17982,7 +18264,6 @@ Column.displayName = "Column";
17982
18264
 
17983
18265
  // src/components/elements/included-features/Details.tsx
17984
18266
  import { useMemo as useMemo8 } from "react";
17985
- var import_pluralize4 = __toESM(require_pluralize());
17986
18267
  import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
17987
18268
  var Details = ({
17988
18269
  details,
@@ -18027,35 +18308,35 @@ var Details = ({
18027
18308
  yearlyUsageBasedPrice
18028
18309
  ]);
18029
18310
  const text = useMemo8(() => {
18030
- if (!feature?.name) {
18311
+ if (!feature) {
18031
18312
  return;
18032
18313
  }
18033
18314
  if (priceBehavior === "pay_in_advance" && typeof allocation === "number") {
18034
- return `${formatNumber(allocation)} ${(0, import_pluralize4.default)(feature.name, allocation)}`;
18315
+ return `${formatNumber(allocation)} ${getFeatureName(feature, allocation)}`;
18035
18316
  }
18036
18317
  if (priceBehavior === "pay_as_you_go" && typeof price === "number") {
18037
- return `${formatCurrency(price, currency)} ${t2("per")} ${(0, import_pluralize4.default)(feature.name.toLowerCase(), 1)}`;
18318
+ return `${formatCurrency(price, currency)} ${t2("per")} ${getFeatureName(feature, 1)}`;
18038
18319
  }
18039
18320
  if (priceBehavior === "overage" && typeof softLimit === "number") {
18040
- return `${formatNumber(softLimit)} ${(0, import_pluralize4.default)(feature.name, softLimit)}`;
18321
+ return `${formatNumber(softLimit)} ${getFeatureName(feature, softLimit)}`;
18041
18322
  }
18042
18323
  if (!priceBehavior && typeof allocation === "number") {
18043
- return `${formatNumber(allocation)} ${(0, import_pluralize4.default)(feature.name, allocation)}`;
18324
+ return `${formatNumber(allocation)} ${getFeatureName(feature, allocation)}`;
18044
18325
  }
18045
18326
  if (!priceBehavior) {
18046
- return t2("Unlimited", { item: (0, import_pluralize4.default)(feature.name) });
18327
+ return t2("Unlimited", { item: getFeatureName(feature) });
18047
18328
  }
18048
- }, [t2, allocation, feature?.name, price, priceBehavior, currency, softLimit]);
18329
+ }, [t2, allocation, feature, price, priceBehavior, currency, softLimit]);
18049
18330
  const usageText = useMemo8(() => {
18050
- if (!feature?.name) {
18331
+ if (!feature) {
18051
18332
  return;
18052
18333
  }
18053
18334
  if (usageData) {
18054
18335
  let acc;
18055
18336
  if (priceBehavior === "pay_in_advance" && typeof data.company?.plan?.planPeriod === "string" && typeof price === "number") {
18056
- acc = `${formatCurrency(price, currency)}/${(0, import_pluralize4.default)(feature.name.toLowerCase(), 1)}/${shortenPeriod(data.company.plan.planPeriod)}`;
18337
+ acc = `${formatCurrency(price, currency)}/${getFeatureName(feature, 1)}/${shortenPeriod(data.company.plan.planPeriod)}`;
18057
18338
  } else if ((priceBehavior === "pay_as_you_go" || priceBehavior === "overage") && typeof usage === "number") {
18058
- acc = `${usage} ${(0, import_pluralize4.default)(feature.name.toLowerCase(), usage)} ${t2("used")}`;
18339
+ acc = `${usage} ${getFeatureName(feature, usage)} ${t2("used")}`;
18059
18340
  }
18060
18341
  if (acc) {
18061
18342
  if (priceBehavior === "pay_in_advance" && typeof price === "number" && typeof allocation === "number") {
@@ -18065,7 +18346,7 @@ var Details = ({
18065
18346
  } else if (priceBehavior === "overage" && typeof price === "number" && typeof usage === "number" && typeof softLimit === "number") {
18066
18347
  const cost = price * (usage - softLimit);
18067
18348
  const period = feature.featureType === "event" && typeof data.company?.plan?.planPeriod === "string" ? `/${shortenPeriod(data.company.plan.planPeriod)}` : "";
18068
- acc += cost > 0 ? ` \u2022 ${t2("Overage")}: ${formatCurrency(cost)}${period}` : ` \u2022 ${`${formatCurrency(price)}/${(0, import_pluralize4.default)(feature.name.toLowerCase(), 1)}`} ${t2("overage fee")}`;
18349
+ acc += cost > 0 ? ` \u2022 ${t2("Overage")}: ${formatCurrency(cost)}${period}` : ` \u2022 ${`${formatCurrency(price)}/${getFeatureName(feature, 1)}`} ${t2("overage fee")}`;
18069
18350
  }
18070
18351
  return acc;
18071
18352
  }
@@ -18081,8 +18362,7 @@ var Details = ({
18081
18362
  }, [
18082
18363
  t2,
18083
18364
  data.company?.plan?.planPeriod,
18084
- feature?.name,
18085
- feature?.featureType,
18365
+ feature,
18086
18366
  priceBehavior,
18087
18367
  allocation,
18088
18368
  price,
@@ -18107,8 +18387,8 @@ var Details = ({
18107
18387
  $font: theme.typography[props.entitlement.fontStyle].fontFamily,
18108
18388
  $size: theme.typography[props.entitlement.fontStyle].fontSize,
18109
18389
  $weight: theme.typography[props.entitlement.fontStyle].fontWeight,
18110
- $leading: 1,
18111
18390
  $color: theme.typography[props.entitlement.fontStyle].color,
18391
+ $leading: 1,
18112
18392
  children: text
18113
18393
  }
18114
18394
  ) }),
@@ -18118,8 +18398,8 @@ var Details = ({
18118
18398
  $font: theme.typography[props.usage.fontStyle].fontFamily,
18119
18399
  $size: theme.typography[props.usage.fontStyle].fontSize,
18120
18400
  $weight: theme.typography[props.usage.fontStyle].fontWeight,
18121
- $leading: 1,
18122
18401
  $color: theme.typography[props.usage.fontStyle].color,
18402
+ $leading: 1,
18123
18403
  children: usageText
18124
18404
  }
18125
18405
  ) })
@@ -18167,7 +18447,19 @@ var IncludedFeatures = forwardRef7(({ className, ...rest }, ref) => {
18167
18447
  const shouldWrapChildren = useWrapChildren(elements.current);
18168
18448
  const isLightBackground = useIsLightBackground();
18169
18449
  const [showCount, setShowCount] = useState12(VISIBLE_ENTITLEMENT_COUNT);
18170
- const entitlements = (data.featureUsage?.features || []).reduce(
18450
+ const orderedFeatureUsage = props.visibleFeatures?.reduce(
18451
+ (acc, id) => {
18452
+ const mappedFeatureUsage = data.featureUsage?.features.find(
18453
+ (usage) => usage.feature?.id === id
18454
+ );
18455
+ if (mappedFeatureUsage) {
18456
+ acc.push(mappedFeatureUsage);
18457
+ }
18458
+ return acc;
18459
+ },
18460
+ []
18461
+ );
18462
+ const entitlements = (orderedFeatureUsage || data.featureUsage?.features || []).reduce(
18171
18463
  (acc, usage) => {
18172
18464
  const mappedUsageData = data.activeUsageBasedEntitlements.find(
18173
18465
  (entitlement) => entitlement.featureId === usage.feature?.id
@@ -18262,8 +18554,8 @@ var IncludedFeatures = forwardRef7(({ className, ...rest }, ref) => {
18262
18554
  $font: theme.typography[props.entitlementExpiration.fontStyle].fontFamily,
18263
18555
  $size: theme.typography[props.entitlementExpiration.fontStyle].fontSize,
18264
18556
  $weight: theme.typography[props.entitlementExpiration.fontStyle].fontWeight,
18265
- $leading: 1,
18266
18557
  $color: theme.typography[props.entitlementExpiration.fontStyle].color,
18558
+ $leading: 1,
18267
18559
  children: [
18268
18560
  "Expires",
18269
18561
  " ",
@@ -18309,8 +18601,8 @@ var IncludedFeatures = forwardRef7(({ className, ...rest }, ref) => {
18309
18601
  $font: theme.typography.link.fontFamily,
18310
18602
  $size: theme.typography.link.fontSize,
18311
18603
  $weight: theme.typography.link.fontWeight,
18312
- $leading: 1,
18313
18604
  $color: theme.typography.link.color,
18605
+ $leading: 1,
18314
18606
  style: { cursor: "pointer" },
18315
18607
  children: isExpanded ? t2("Hide all") : t2("See all")
18316
18608
  }
@@ -18350,7 +18642,7 @@ function resolveDesignProps2(props) {
18350
18642
  };
18351
18643
  }
18352
18644
  function formatInvoices(invoices = []) {
18353
- 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 }) => ({
18645
+ return invoices.sort((a2, b2) => a2.dueDate && b2.dueDate ? +b2.dueDate - +a2.dueDate : 1).map(({ amountDue, dueDate, url, currency }) => ({
18354
18646
  amount: formatCurrency(amountDue, currency),
18355
18647
  ...dueDate && { date: toPrettyDate(dueDate) },
18356
18648
  ...url && { url }
@@ -18453,8 +18745,7 @@ var Invoices = forwardRef8(({ className, data, ...rest }, ref) => {
18453
18745
  Invoices.displayName = "Invoices";
18454
18746
 
18455
18747
  // src/components/elements/metered-features/MeteredFeatures.tsx
18456
- import { forwardRef as forwardRef9, useRef as useRef8 } from "react";
18457
- var import_pluralize5 = __toESM(require_pluralize());
18748
+ import { forwardRef as forwardRef9, useMemo as useMemo9, useRef as useRef8 } from "react";
18458
18749
 
18459
18750
  // src/components/elements/metered-features/styles.ts
18460
18751
  var Container4 = dt(Flex)`
@@ -18508,44 +18799,54 @@ var MeteredFeatures = forwardRef9(({ className, ...rest }, ref) => {
18508
18799
  const theme = nt();
18509
18800
  const { data, setLayout, setSelected } = useEmbed();
18510
18801
  const isLightBackground = useIsLightBackground();
18511
- const { planPeriod } = data.company?.plan || {};
18512
- const featureUsage = (props.visibleFeatures ? props.visibleFeatures.reduce((acc, id) => {
18513
- const mappedFeatureUsage = data.featureUsage?.features.find(
18514
- (usage) => usage.feature?.id === id
18802
+ const meteredFeatures = useMemo9(() => {
18803
+ return (props.visibleFeatures ? props.visibleFeatures.reduce(
18804
+ (acc, id) => {
18805
+ const mappedFeatureUsage = data.featureUsage?.features.find(
18806
+ (usage) => usage.feature?.id === id
18807
+ );
18808
+ if (mappedFeatureUsage) {
18809
+ acc.push(mappedFeatureUsage);
18810
+ }
18811
+ return acc;
18812
+ },
18813
+ []
18814
+ ) : data.featureUsage?.features || []).filter(
18815
+ (usage) => usage.feature?.featureType === "event" || usage.feature?.featureType === "trait"
18515
18816
  );
18516
- if (mappedFeatureUsage) {
18517
- acc.push(mappedFeatureUsage);
18518
- }
18519
- return acc;
18520
- }, []) : data.featureUsage?.features || []).filter(
18521
- (usage) => usage.feature?.featureType === "event" || usage.feature?.featureType === "trait"
18522
- );
18523
- const shouldShowFeatures = featureUsage.length > 0 || data.company?.plan || (data.company?.addOns ?? []).length > 0 || false;
18817
+ }, [props.visibleFeatures, data.featureUsage?.features]);
18818
+ const planPeriod = data.company?.plan?.planPeriod;
18819
+ const shouldShowFeatures = meteredFeatures.length > 0 || data.company?.plan || (data.company?.addOns ?? []).length > 0 || false;
18524
18820
  if (!shouldShowFeatures) {
18525
18821
  return null;
18526
18822
  }
18527
- return /* @__PURE__ */ jsx29(Container4, { ref, className, children: featureUsage.map(
18823
+ return /* @__PURE__ */ jsx29(Container4, { ref, className, children: meteredFeatures.map(
18528
18824
  ({
18529
- allocation,
18530
18825
  feature,
18826
+ priceBehavior,
18531
18827
  usage,
18828
+ allocation,
18532
18829
  softLimit,
18533
- priceBehavior,
18534
18830
  metricResetAt,
18535
18831
  monthlyUsageBasedPrice,
18536
18832
  yearlyUsageBasedPrice
18537
18833
  }, index) => {
18538
- const limit = allocation || softLimit || 0;
18834
+ const limit = softLimit ?? allocation ?? 0;
18539
18835
  const isOverage = priceBehavior === "overage" && typeof softLimit === "number" && typeof usage === "number" && usage > softLimit;
18540
- let price;
18541
- let currency;
18542
- if (planPeriod === "month") {
18543
- price = monthlyUsageBasedPrice?.price;
18544
- currency = monthlyUsageBasedPrice?.currency;
18545
- } else if (planPeriod === "year") {
18546
- price = yearlyUsageBasedPrice?.price;
18547
- currency = yearlyUsageBasedPrice?.currency;
18548
- }
18836
+ const { price, currency } = (planPeriod === "month" ? monthlyUsageBasedPrice : planPeriod === "year" && yearlyUsageBasedPrice) || {};
18837
+ const progressBar = props.isVisible && typeof usage === "number" && priceBehavior !== "pay_as_you_go" && /* @__PURE__ */ jsx29(
18838
+ ProgressBar,
18839
+ {
18840
+ progress: (isOverage ? softLimit / usage : usage / limit) * 100,
18841
+ value: usage,
18842
+ total: isOverage ? softLimit : limit,
18843
+ color: isOverage ? "blue" : progressColorMap[Math.floor(
18844
+ Math.min(usage, limit) / limit * (progressColorMap.length - 1)
18845
+ )],
18846
+ ...isOverage && { bgColor: "#EF4444" },
18847
+ $flexGrow: 1
18848
+ }
18849
+ );
18549
18850
  return /* @__PURE__ */ jsxs23(Flex, { $flexDirection: "column-reverse", children: [
18550
18851
  priceBehavior === "overage" && typeof price === "number" && /* @__PURE__ */ jsxs23(
18551
18852
  Flex,
@@ -18562,16 +18863,17 @@ var MeteredFeatures = forwardRef9(({ className, ...rest }, ref) => {
18562
18863
  $size: theme.typography.text.fontSize,
18563
18864
  $weight: theme.typography.text.fontWeight,
18564
18865
  $color: theme.typography.text.color,
18866
+ $leading: 1.35,
18565
18867
  children: /* @__PURE__ */ jsxs23(Fragment10, { children: [
18566
18868
  t2("Overage fee"),
18567
18869
  ": ",
18568
18870
  formatCurrency(price, currency),
18569
- feature && /* @__PURE__ */ jsxs23("sub", { children: [
18871
+ feature && /* @__PURE__ */ jsxs23(Box, { as: "sub", $whiteSpace: "nowrap", children: [
18570
18872
  "/",
18571
- (0, import_pluralize5.default)(feature.name.toLowerCase(), 1),
18572
- feature.featureType === "event" && data.company?.plan?.planPeriod && /* @__PURE__ */ jsxs23(Fragment10, { children: [
18873
+ getFeatureName(feature, 1),
18874
+ feature.featureType === "trait" && planPeriod && /* @__PURE__ */ jsxs23(Fragment10, { children: [
18573
18875
  "/",
18574
- shortenPeriod(data.company.plan.planPeriod)
18876
+ shortenPeriod(planPeriod)
18575
18877
  ] })
18576
18878
  ] })
18577
18879
  ] })
@@ -18584,13 +18886,17 @@ var MeteredFeatures = forwardRef9(({ className, ...rest }, ref) => {
18584
18886
  $size: theme.typography.text.fontSize,
18585
18887
  $weight: theme.typography.text.fontWeight,
18586
18888
  $color: theme.typography.text.color,
18889
+ $leading: 1.35,
18587
18890
  children: [
18588
18891
  t2("X over the limit", {
18589
18892
  amount: usage - softLimit
18590
18893
  }),
18591
18894
  " \xB7 ",
18592
18895
  formatCurrency(price * (usage - softLimit), currency),
18593
- feature?.featureType === "event" && typeof data.company?.plan?.planPeriod === "string" && `/${shortenPeriod(data.company.plan.planPeriod)}`
18896
+ feature?.featureType === "trait" && typeof planPeriod === "string" && /* @__PURE__ */ jsxs23(Box, { as: "sub", $whiteSpace: "nowrap", children: [
18897
+ "/",
18898
+ shortenPeriod(planPeriod)
18899
+ ] })
18594
18900
  ]
18595
18901
  }
18596
18902
  )
@@ -18609,7 +18915,7 @@ var MeteredFeatures = forwardRef9(({ className, ...rest }, ref) => {
18609
18915
  ]
18610
18916
  }
18611
18917
  ),
18612
- /* @__PURE__ */ jsxs23(Flex, { $flexDirection: "column", $gap: "2rem", $flexGrow: "1", children: [
18918
+ /* @__PURE__ */ jsxs23(Flex, { $flexDirection: "column", $gap: "2rem", $flexGrow: 1, children: [
18613
18919
  /* @__PURE__ */ jsxs23(
18614
18920
  Flex,
18615
18921
  {
@@ -18621,7 +18927,7 @@ var MeteredFeatures = forwardRef9(({ className, ...rest }, ref) => {
18621
18927
  $flexWrap: "wrap",
18622
18928
  $gap: "1rem",
18623
18929
  children: [
18624
- feature?.name && /* @__PURE__ */ jsxs23(Flex, { $flexDirection: "column", $gap: "0.5rem", $flexGrow: "1", children: [
18930
+ feature?.name && /* @__PURE__ */ jsxs23(Flex, { $flexDirection: "column", $gap: "0.5rem", $flexGrow: 1, children: [
18625
18931
  /* @__PURE__ */ jsx29(
18626
18932
  Text,
18627
18933
  {
@@ -18630,10 +18936,11 @@ var MeteredFeatures = forwardRef9(({ className, ...rest }, ref) => {
18630
18936
  $size: theme.typography[props.header.fontStyle].fontSize,
18631
18937
  $weight: theme.typography[props.header.fontStyle].fontWeight,
18632
18938
  $color: theme.typography[props.header.fontStyle].color,
18939
+ $leading: 1.35,
18633
18940
  children: priceBehavior === "pay_as_you_go" ? typeof usage === "number" && /* @__PURE__ */ jsxs23(Fragment10, { children: [
18634
18941
  formatNumber(usage),
18635
18942
  " ",
18636
- (0, import_pluralize5.default)(feature.name, usage)
18943
+ getFeatureName(feature, usage)
18637
18944
  ] }) : feature.name
18638
18945
  }
18639
18946
  ),
@@ -18653,7 +18960,7 @@ var MeteredFeatures = forwardRef9(({ className, ...rest }, ref) => {
18653
18960
  Box,
18654
18961
  {
18655
18962
  $flexBasis: "min-content",
18656
- $flexGrow: "1",
18963
+ $flexGrow: 1,
18657
18964
  $textAlign: shouldWrapChildren ? "left" : "right",
18658
18965
  children: [
18659
18966
  props.usage.isVisible && /* @__PURE__ */ jsx29(
@@ -18663,16 +18970,16 @@ var MeteredFeatures = forwardRef9(({ className, ...rest }, ref) => {
18663
18970
  $font: theme.typography[props.usage.fontStyle].fontFamily,
18664
18971
  $size: theme.typography[props.usage.fontStyle].fontSize,
18665
18972
  $weight: theme.typography[props.usage.fontStyle].fontWeight,
18666
- $leading: 1.35,
18667
18973
  $color: theme.typography[props.usage.fontStyle].color,
18974
+ $leading: 1.35,
18668
18975
  children: priceBehavior === "pay_in_advance" ? typeof allocation === "number" && /* @__PURE__ */ jsxs23(Fragment10, { children: [
18669
18976
  formatNumber(allocation),
18670
18977
  " ",
18671
- (0, import_pluralize5.default)(feature.name, allocation)
18978
+ getFeatureName(feature, allocation)
18672
18979
  ] }) : priceBehavior === "pay_as_you_go" ? typeof price === "number" && typeof usage === "number" && formatCurrency(usage * price, currency) : typeof usage === "number" && /* @__PURE__ */ jsxs23(Fragment10, { children: [
18673
18980
  formatNumber(usage),
18674
18981
  " ",
18675
- (0, import_pluralize5.default)(feature.name, usage),
18982
+ getFeatureName(feature, usage),
18676
18983
  priceBehavior === "overage" && /* @__PURE__ */ jsxs23(Fragment10, { children: [
18677
18984
  " ",
18678
18985
  t2("used")
@@ -18687,6 +18994,7 @@ var MeteredFeatures = forwardRef9(({ className, ...rest }, ref) => {
18687
18994
  $size: theme.typography[props.allocation.fontStyle].fontSize,
18688
18995
  $weight: theme.typography[props.allocation.fontStyle].fontWeight,
18689
18996
  $color: theme.typography[props.allocation.fontStyle].color,
18997
+ $leading: 1.35,
18690
18998
  children: priceBehavior && priceBehavior !== "overage" && metricResetAt ? t2("Resets", {
18691
18999
  date: toPrettyDate(metricResetAt, {
18692
19000
  month: "short",
@@ -18705,19 +19013,27 @@ var MeteredFeatures = forwardRef9(({ className, ...rest }, ref) => {
18705
19013
  }
18706
19014
  ),
18707
19015
  props.isVisible && typeof usage === "number" && priceBehavior !== "pay_as_you_go" && /* @__PURE__ */ jsxs23(Flex, { $gap: "2rem", children: [
18708
- /* @__PURE__ */ jsx29(
18709
- ProgressBar,
19016
+ typeof allocation === "number" ? /* @__PURE__ */ jsx29(
19017
+ Tooltip,
18710
19018
  {
18711
- progress: (isOverage ? softLimit / usage : usage / limit) * 100,
18712
- value: usage,
18713
- total: isOverage ? softLimit : limit,
18714
- color: isOverage ? "blue" : progressColorMap[Math.floor(
18715
- Math.min(usage, limit) / limit * (progressColorMap.length - 1)
18716
- )],
18717
- ...isOverage && { bgColor: "#EF4444" },
18718
- $flexGrow: "1"
19019
+ trigger: progressBar,
19020
+ content: /* @__PURE__ */ jsx29(
19021
+ Text,
19022
+ {
19023
+ $font: theme.typography.text.fontFamily,
19024
+ $size: 0.875 * theme.typography.text.fontSize,
19025
+ $weight: theme.typography.text.fontWeight,
19026
+ $color: theme.typography.text.color,
19027
+ $leading: 1,
19028
+ children: t2("Up to a limit of", {
19029
+ amount: allocation,
19030
+ units: feature?.name && getFeatureName(feature)
19031
+ })
19032
+ }
19033
+ ),
19034
+ $flexGrow: 1
18719
19035
  }
18720
- ),
19036
+ ) : progressBar,
18721
19037
  priceBehavior === "pay_in_advance" && /* @__PURE__ */ jsx29(
18722
19038
  EmbedButton,
18723
19039
  {
@@ -18744,10 +19060,10 @@ MeteredFeatures.displayName = "MeteredFeatures";
18744
19060
  // src/components/elements/payment-method/PaymentMethod.tsx
18745
19061
  import {
18746
19062
  forwardRef as forwardRef10,
18747
- useCallback as useCallback9,
19063
+ useCallback as useCallback10,
18748
19064
  useEffect as useEffect7,
18749
19065
  useLayoutEffect as useLayoutEffect7,
18750
- useMemo as useMemo9,
19066
+ useMemo as useMemo10,
18751
19067
  useState as useState14
18752
19068
  } from "react";
18753
19069
  import { createPortal as createPortal3 } from "react-dom";
@@ -18761,13 +19077,22 @@ var PaymentElement2 = ({
18761
19077
  paymentLast4
18762
19078
  }) => {
18763
19079
  const theme = nt();
18764
- return /* @__PURE__ */ jsx30(Fragment11, { children: /* @__PURE__ */ jsx30(Text, { $font: theme.typography.text.fontFamily, $size: 16, children: /* @__PURE__ */ jsxs24(Flex, { $flexDirection: "row", $alignItems: "center", children: [
18765
- iconName && /* @__PURE__ */ jsx30(Box, { children: /* @__PURE__ */ jsx30(Icon2, { name: iconName, title: iconTitle, style: iconStyles }) }),
18766
- /* @__PURE__ */ jsxs24(Flex, { $alignItems: "center", children: [
18767
- /* @__PURE__ */ jsx30(Box, { $lineHeight: "1", $marginRight: "4px", children: t(label) }),
18768
- paymentLast4 && /* @__PURE__ */ jsx30(Box, { $display: "inline-block", $fontWeight: "bold", children: paymentLast4 })
18769
- ] })
18770
- ] }) }) });
19080
+ return /* @__PURE__ */ jsx30(Fragment11, { children: /* @__PURE__ */ jsx30(
19081
+ Text,
19082
+ {
19083
+ $font: theme.typography.text.fontFamily,
19084
+ $size: 16,
19085
+ $weight: theme.typography.text.fontWeight,
19086
+ $color: theme.typography.text.color,
19087
+ children: /* @__PURE__ */ jsxs24(Flex, { $flexDirection: "row", $alignItems: "center", children: [
19088
+ iconName && /* @__PURE__ */ jsx30(Box, { children: /* @__PURE__ */ jsx30(Icon2, { name: iconName, title: iconTitle, style: iconStyles }) }),
19089
+ /* @__PURE__ */ jsxs24(Flex, { $alignItems: "center", children: [
19090
+ /* @__PURE__ */ jsx30(Box, { $lineHeight: "1", $marginRight: "4px", children: t(label) }),
19091
+ paymentLast4 && /* @__PURE__ */ jsx30(Box, { $display: "inline-block", $fontWeight: "bold", children: paymentLast4 })
19092
+ ] })
19093
+ ] })
19094
+ }
19095
+ ) });
18771
19096
  };
18772
19097
  var resolveDesignProps4 = (props) => {
18773
19098
  return {
@@ -18887,6 +19212,7 @@ var PaymentMethodElement = ({
18887
19212
  {
18888
19213
  $font: theme.typography.text.fontFamily,
18889
19214
  $size: 14,
19215
+ $weight: theme.typography.text.fontWeight,
18890
19216
  $color: "#DB6769",
18891
19217
  children: monthsToExpiration > 0 ? t2("Expires in x months", { months: monthsToExpiration }) : t2("Expired")
18892
19218
  }
@@ -18909,8 +19235,8 @@ var PaymentMethodElement = ({
18909
19235
  $font: theme.typography.link.fontFamily,
18910
19236
  $size: theme.typography.link.fontSize,
18911
19237
  $weight: theme.typography.link.fontWeight,
18912
- $leading: 1,
18913
19238
  $color: theme.typography.link.color,
19239
+ $leading: 1,
18914
19240
  children: t2("Edit")
18915
19241
  }
18916
19242
  )
@@ -18933,10 +19259,10 @@ var PaymentMethod = forwardRef10(({ children, className, portal, allowEdit = tru
18933
19259
  const [stripe, setStripe] = useState14(null);
18934
19260
  const [setupIntent, setSetupIntent] = useState14();
18935
19261
  const [top, setTop] = useState14(0);
18936
- const paymentMethod = useMemo9(() => {
19262
+ const paymentMethod = useMemo10(() => {
18937
19263
  return data.subscription?.paymentMethod;
18938
19264
  }, [data.subscription?.paymentMethod]);
18939
- const monthsToExpiration = useMemo9(() => {
19265
+ const monthsToExpiration = useMemo10(() => {
18940
19266
  let expiration;
18941
19267
  if (typeof paymentMethod?.cardExpYear === "number" && typeof paymentMethod?.cardExpMonth === "number") {
18942
19268
  const today = /* @__PURE__ */ new Date();
@@ -18949,7 +19275,7 @@ var PaymentMethod = forwardRef10(({ children, className, portal, allowEdit = tru
18949
19275
  }
18950
19276
  return expiration;
18951
19277
  }, [paymentMethod?.cardExpYear, paymentMethod?.cardExpMonth]);
18952
- const createSetupIntent = useCallback9(async () => {
19278
+ const createSetupIntent = useCallback10(async () => {
18953
19279
  if (!api || !data.component?.id) {
18954
19280
  return;
18955
19281
  }
@@ -18968,7 +19294,7 @@ var PaymentMethod = forwardRef10(({ children, className, portal, allowEdit = tru
18968
19294
  setIsLoading(false);
18969
19295
  }
18970
19296
  }, [t2, api, data.component?.id]);
18971
- const updatePaymentMethod = useCallback9(
19297
+ const updatePaymentMethod = useCallback10(
18972
19298
  async (id) => {
18973
19299
  if (!api || !id) {
18974
19300
  return;
@@ -19121,8 +19447,7 @@ var PaymentMethod = forwardRef10(({ children, className, portal, allowEdit = tru
19121
19447
  PaymentMethod.displayName = "PaymentMethod";
19122
19448
 
19123
19449
  // src/components/elements/plan-manager/PlanManager.tsx
19124
- import { forwardRef as forwardRef11 } from "react";
19125
- var import_pluralize6 = __toESM(require_pluralize());
19450
+ import { forwardRef as forwardRef11, useMemo as useMemo11 } from "react";
19126
19451
  import { Fragment as Fragment12, jsx as jsx31, jsxs as jsxs25 } from "react/jsx-runtime";
19127
19452
  var resolveDesignProps5 = (props) => {
19128
19453
  return {
@@ -19167,34 +19492,28 @@ var PlanManager = forwardRef11(({ children, className, portal, ...rest }, ref) =
19167
19492
  };
19168
19493
  const usageBasedEntitlements = (featureUsage?.features || []).reduce(
19169
19494
  (acc, usage) => {
19170
- const quantity = usage.allocation || usage.softLimit || 0;
19171
- let price;
19172
- let currencyCode;
19173
- if (currentPlan?.planPeriod === "month") {
19174
- price = usage.monthlyUsageBasedPrice?.price;
19175
- currencyCode = usage.monthlyUsageBasedPrice?.currency;
19176
- } else if (currentPlan?.planPeriod === "year") {
19177
- price = usage.yearlyUsageBasedPrice?.price;
19178
- currencyCode = usage.yearlyUsageBasedPrice?.currency;
19179
- }
19495
+ const { price, currency } = (currentPlan?.planPeriod === "month" ? usage.monthlyUsageBasedPrice : usage.yearlyUsageBasedPrice) || {};
19180
19496
  if (usage.priceBehavior && typeof price === "number") {
19181
- acc.push({ ...usage, price, quantity, currencyCode });
19497
+ acc.push({ ...usage, price, currency });
19182
19498
  }
19183
19499
  return acc;
19184
19500
  },
19185
19501
  []
19186
19502
  );
19187
19503
  const billingSubscription = data.company?.billingSubscription;
19504
+ const trialEndDays = useMemo11(() => {
19505
+ const trialEnd = billingSubscription?.trialEnd;
19506
+ const trialEndDate = trialEnd ? new Date(trialEnd * 1e3) : /* @__PURE__ */ new Date();
19507
+ const todayDate = /* @__PURE__ */ new Date();
19508
+ return Math.floor(
19509
+ (trialEndDate.getTime() - todayDate.getTime()) / (1e3 * 60 * 60 * 24)
19510
+ );
19511
+ }, [billingSubscription?.trialEnd]);
19188
19512
  const subscriptionCurrency = billingSubscription?.currency;
19189
- const showTrialBox = billingSubscription && billingSubscription.status == "trialing";
19190
- const showUnsubscribeBox = billingSubscription?.cancelAtPeriodEnd;
19191
- const trialEndDate = billingSubscription?.trialEnd ? new Date(billingSubscription.trialEnd * 1e3) : /* @__PURE__ */ new Date();
19192
- const todayDate = /* @__PURE__ */ new Date();
19193
- const trialEndDays = Math.floor(
19194
- (trialEndDate.getTime() - todayDate.getTime()) / (1e3 * 60 * 60 * 24)
19195
- );
19513
+ const isTrialSubscription = billingSubscription?.status === "trialing";
19514
+ const willSubscriptionCancel = billingSubscription?.cancelAtPeriodEnd;
19196
19515
  return /* @__PURE__ */ jsxs25(Fragment12, { children: [
19197
- showTrialBox && !showUnsubscribeBox && /* @__PURE__ */ jsxs25(
19516
+ isTrialSubscription && !willSubscriptionCancel ? /* @__PURE__ */ jsxs25(
19198
19517
  Box,
19199
19518
  {
19200
19519
  $backgroundColor: isLightBackground ? "hsla(0, 0%, 0%, 0.04)" : "hsla(0, 0%, 100%, 0.04)",
@@ -19217,7 +19536,7 @@ var PlanManager = forwardRef11(({ children, className, portal, ...rest }, ref) =
19217
19536
  {
19218
19537
  as: "p",
19219
19538
  $font: theme.typography.text.fontFamily,
19220
- $size: theme.typography.text.fontSize * 0.8125,
19539
+ $size: 0.8125 * theme.typography.text.fontSize,
19221
19540
  $weight: theme.typography.text.fontWeight,
19222
19541
  $color: theme.typography.text.color,
19223
19542
  children: data.trialPaymentMethodRequired ? t2("After the trial, subscribe") : defaultPlan ? t2("After the trial, cancel", {
@@ -19229,8 +19548,7 @@ var PlanManager = forwardRef11(({ children, className, portal, ...rest }, ref) =
19229
19548
  )
19230
19549
  ]
19231
19550
  }
19232
- ),
19233
- showUnsubscribeBox && /* @__PURE__ */ jsxs25(
19551
+ ) : willSubscriptionCancel && /* @__PURE__ */ jsxs25(
19234
19552
  Box,
19235
19553
  {
19236
19554
  $backgroundColor: isLightBackground ? "hsla(0, 0%, 0%, 0.04)" : "hsla(0, 0%, 100%, 0.04)",
@@ -19253,10 +19571,10 @@ var PlanManager = forwardRef11(({ children, className, portal, ...rest }, ref) =
19253
19571
  {
19254
19572
  as: "p",
19255
19573
  $font: theme.typography.text.fontFamily,
19256
- $size: theme.typography.text.fontSize * 0.8125,
19574
+ $size: 0.8125 * theme.typography.text.fontSize,
19257
19575
  $weight: theme.typography.text.fontWeight,
19258
19576
  $color: theme.typography.text.color,
19259
- children: billingSubscription.cancelAt ? t2("Access to plan will end on", {
19577
+ children: billingSubscription?.cancelAt ? t2("Access to plan will end on", {
19260
19578
  date: toPrettyDate(
19261
19579
  new Date(billingSubscription.cancelAt * 1e3),
19262
19580
  {
@@ -19354,7 +19672,7 @@ var PlanManager = forwardRef11(({ children, className, portal, ...rest }, ref) =
19354
19672
  children: t2("Add-ons")
19355
19673
  }
19356
19674
  ),
19357
- addOns.map((addOn) => /* @__PURE__ */ jsxs25(
19675
+ addOns.map((addOn, addOnIndex) => /* @__PURE__ */ jsxs25(
19358
19676
  Flex,
19359
19677
  {
19360
19678
  $justifyContent: "space-between",
@@ -19390,7 +19708,7 @@ var PlanManager = forwardRef11(({ children, className, portal, ...rest }, ref) =
19390
19708
  )
19391
19709
  ]
19392
19710
  },
19393
- addOn.id
19711
+ addOnIndex
19394
19712
  ))
19395
19713
  ] }),
19396
19714
  usageBasedEntitlements.length > 0 && /* @__PURE__ */ jsxs25(Flex, { $flexDirection: "column", $gap: "1rem", children: [
@@ -19406,9 +19724,10 @@ var PlanManager = forwardRef11(({ children, className, portal, ...rest }, ref) =
19406
19724
  }
19407
19725
  ),
19408
19726
  usageBasedEntitlements.reduce(
19409
- (acc, entitlement) => {
19727
+ (acc, entitlement, entitlementIndex) => {
19728
+ const limit = entitlement.softLimit ?? entitlement.allocation ?? 0;
19410
19729
  const overageAmount = entitlement.priceBehavior === "overage" && (entitlement?.usage ?? 0) - (entitlement?.softLimit ?? 0);
19411
- const amount = entitlement.quantity || Math.max(entitlement?.softLimit || 0, 0);
19730
+ const amount = overageAmount || entitlement.allocation || 0;
19412
19731
  if (entitlement.feature?.name) {
19413
19732
  acc.push(
19414
19733
  /* @__PURE__ */ jsxs25(
@@ -19419,22 +19738,28 @@ var PlanManager = forwardRef11(({ children, className, portal, ...rest }, ref) =
19419
19738
  $flexWrap: "wrap",
19420
19739
  $gap: "1rem",
19421
19740
  children: [
19422
- /* @__PURE__ */ jsx31(
19741
+ /* @__PURE__ */ jsxs25(
19423
19742
  Text,
19424
19743
  {
19425
19744
  $font: theme.typography[props.addOns.fontStyle].fontFamily,
19426
19745
  $size: theme.typography[props.addOns.fontStyle].fontSize,
19427
19746
  $weight: theme.typography[props.addOns.fontStyle].fontWeight,
19428
19747
  $color: theme.typography[props.addOns.fontStyle].color,
19429
- children: entitlement.priceBehavior === "pay_in_advance" || entitlement.priceBehavior === "overage" && amount > 0 ? /* @__PURE__ */ jsxs25(Fragment12, { children: [
19430
- amount,
19431
- " ",
19432
- (0, import_pluralize6.default)(entitlement.feature.name, amount)
19433
- ] }) : entitlement.feature.name
19748
+ children: [
19749
+ entitlement.priceBehavior === "pay_in_advance" || entitlement.priceBehavior === "overage" && limit > 0 ? /* @__PURE__ */ jsxs25(Fragment12, { children: [
19750
+ limit,
19751
+ " ",
19752
+ getFeatureName(entitlement.feature, limit)
19753
+ ] }) : entitlement.feature.name,
19754
+ entitlement.priceBehavior === "overage" && entitlement.feature.featureType === "event" && currentPlan?.planPeriod && /* @__PURE__ */ jsxs25(Fragment12, { children: [
19755
+ "/",
19756
+ shortenPeriod(currentPlan.planPeriod)
19757
+ ] })
19758
+ ]
19434
19759
  }
19435
19760
  ),
19436
19761
  /* @__PURE__ */ jsxs25(Flex, { $alignItems: "center", $gap: "1rem", children: [
19437
- entitlement.priceBehavior === "overage" && currentPlan?.planPeriod && /* @__PURE__ */ jsx31(
19762
+ entitlement.priceBehavior === "overage" && currentPlan?.planPeriod ? /* @__PURE__ */ jsx31(
19438
19763
  Text,
19439
19764
  {
19440
19765
  $font: theme.typography.text.fontFamily,
@@ -19449,23 +19774,19 @@ var PlanManager = forwardRef11(({ children, className, portal, ...rest }, ref) =
19449
19774
  " ",
19450
19775
  formatCurrency(
19451
19776
  entitlement.price,
19452
- entitlement.currencyCode
19777
+ entitlement.currency
19453
19778
  ),
19454
19779
  /* @__PURE__ */ jsxs25("sub", { children: [
19455
19780
  "/",
19456
- (0, import_pluralize6.default)(
19457
- entitlement.feature.name.toLowerCase(),
19458
- 1
19459
- ),
19460
- entitlement.feature.featureType === "event" && /* @__PURE__ */ jsxs25(Fragment12, { children: [
19781
+ getFeatureName(entitlement.feature, 1),
19782
+ entitlement.feature.featureType === "trait" && /* @__PURE__ */ jsxs25(Fragment12, { children: [
19461
19783
  "/",
19462
19784
  shortenPeriod(currentPlan.planPeriod)
19463
19785
  ] })
19464
19786
  ] })
19465
19787
  ] })
19466
19788
  }
19467
- ),
19468
- entitlement.priceBehavior === "pay_in_advance" && currentPlan?.planPeriod && /* @__PURE__ */ jsxs25(
19789
+ ) : entitlement.priceBehavior === "pay_in_advance" && currentPlan?.planPeriod && /* @__PURE__ */ jsxs25(
19469
19790
  Text,
19470
19791
  {
19471
19792
  $font: theme.typography.text.fontFamily,
@@ -19475,14 +19796,11 @@ var PlanManager = forwardRef11(({ children, className, portal, ...rest }, ref) =
19475
19796
  children: [
19476
19797
  formatCurrency(
19477
19798
  entitlement.price,
19478
- entitlement.currencyCode
19799
+ entitlement.currency
19479
19800
  ),
19480
19801
  /* @__PURE__ */ jsxs25("sub", { children: [
19481
19802
  "/",
19482
- (0, import_pluralize6.default)(
19483
- entitlement.feature.name.toLowerCase(),
19484
- 1
19485
- ),
19803
+ getFeatureName(entitlement.feature, 1),
19486
19804
  "/",
19487
19805
  shortenPeriod(currentPlan.planPeriod)
19488
19806
  ] })
@@ -19499,14 +19817,11 @@ var PlanManager = forwardRef11(({ children, className, portal, ...rest }, ref) =
19499
19817
  children: [
19500
19818
  formatCurrency(
19501
19819
  entitlement.price * amount,
19502
- entitlement.currencyCode
19820
+ entitlement.currency
19503
19821
  ),
19504
19822
  (entitlement.priceBehavior === "pay_in_advance" || entitlement.priceBehavior !== "overage") && /* @__PURE__ */ jsxs25("sub", { children: [
19505
19823
  "/",
19506
- currentPlan?.planPeriod && entitlement.priceBehavior === "pay_in_advance" ? shortenPeriod(currentPlan.planPeriod) : (0, import_pluralize6.default)(
19507
- entitlement.feature.name.toLowerCase(),
19508
- 1
19509
- )
19824
+ currentPlan?.planPeriod && entitlement.priceBehavior === "pay_in_advance" ? shortenPeriod(currentPlan.planPeriod) : getFeatureName(entitlement.feature, 1)
19510
19825
  ] })
19511
19826
  ]
19512
19827
  }
@@ -19514,7 +19829,7 @@ var PlanManager = forwardRef11(({ children, className, portal, ...rest }, ref) =
19514
19829
  ] })
19515
19830
  ]
19516
19831
  },
19517
- entitlement.feature.id
19832
+ entitlementIndex
19518
19833
  )
19519
19834
  );
19520
19835
  }
@@ -19549,7 +19864,6 @@ PlanManager.displayName = "PlanManager";
19549
19864
 
19550
19865
  // src/components/elements/pricing-table/PricingTable.tsx
19551
19866
  import { forwardRef as forwardRef12, useState as useState15 } from "react";
19552
- var import_pluralize7 = __toESM(require_pluralize());
19553
19867
  import { Fragment as Fragment13, jsx as jsx32, jsxs as jsxs26 } from "react/jsx-runtime";
19554
19868
  var resolveDesignProps6 = (props) => {
19555
19869
  return {
@@ -19680,13 +19994,11 @@ var PricingTable = forwardRef12(({ children, className, ...rest }, ref) => {
19680
19994
  $display: "grid",
19681
19995
  $gridTemplateColumns: "repeat(auto-fill, minmax(320px, 1fr))",
19682
19996
  $gap: "1rem",
19683
- children: plans.map((plan, index, self2) => {
19997
+ children: plans.map((plan, planIndex, self2) => {
19684
19998
  const isActivePlan = plan.current && data.company?.plan?.planPeriod === selectedPeriod;
19999
+ const { price: planPrice, currency: planCurrency } = (selectedPeriod === "month" ? plan.monthlyPrice : selectedPeriod === "year" && plan.yearlyPrice) || {};
19685
20000
  const count = entitlementCounts[plan.id];
19686
- let isExpanded = false;
19687
- if (count?.limit && count.limit > VISIBLE_ENTITLEMENT_COUNT) {
19688
- isExpanded = true;
19689
- }
20001
+ const isExpanded = count.limit > VISIBLE_ENTITLEMENT_COUNT;
19690
20002
  return /* @__PURE__ */ jsxs26(
19691
20003
  Flex,
19692
20004
  {
@@ -19706,7 +20018,7 @@ var PricingTable = forwardRef12(({ children, className, ...rest }, ref) => {
19706
20018
  $flexDirection: "column",
19707
20019
  $gap: "0.75rem",
19708
20020
  $padding: `0 ${cardPadding}rem ${0.75 * cardPadding}rem`,
19709
- $borderWidth: "0",
20021
+ $borderWidth: 0,
19710
20022
  $borderBottomWidth: "1px",
19711
20023
  $borderStyle: "solid",
19712
20024
  $borderColor: isLightBackground ? "hsla(0, 0%, 0%, 0.175)" : "hsla(0, 0%, 100%, 0.175)",
@@ -19739,10 +20051,7 @@ var PricingTable = forwardRef12(({ children, className, ...rest }, ref) => {
19739
20051
  $size: theme.typography[props.plans.name.fontStyle].fontSize,
19740
20052
  $weight: theme.typography[props.plans.name.fontStyle].fontWeight,
19741
20053
  $color: theme.typography[props.plans.name.fontStyle].color,
19742
- children: plan.custom ? plan.customPlanConfig?.priceText ? plan.customPlanConfig?.priceText : t2("Custom Plan Price") : formatCurrency(
19743
- (selectedPeriod === "month" ? plan.monthlyPrice : plan.yearlyPrice)?.price ?? 0,
19744
- (selectedPeriod === "month" ? plan.monthlyPrice : plan.yearlyPrice)?.currency
19745
- )
20054
+ children: plan.custom ? plan.customPlanConfig?.priceText ? plan.customPlanConfig.priceText : t2("Custom Plan Price") : formatCurrency(planPrice ?? 0, planCurrency)
19746
20055
  }
19747
20056
  ),
19748
20057
  !plan.custom && /* @__PURE__ */ jsxs26(
@@ -19781,12 +20090,12 @@ var PricingTable = forwardRef12(({ children, className, ...rest }, ref) => {
19781
20090
  {
19782
20091
  $flexDirection: "column",
19783
20092
  $justifyContent: "end",
19784
- $flexGrow: "1",
20093
+ $flexGrow: 1,
19785
20094
  $gap: `${cardPadding}rem`,
19786
20095
  $padding: `${0.75 * cardPadding}rem ${cardPadding}rem 0`,
19787
20096
  children: [
19788
- props.plans.showEntitlements && /* @__PURE__ */ jsxs26(Flex, { $flexDirection: "column", $gap: "1rem", $flexGrow: "1", children: [
19789
- props.plans.showInclusionText && index > 0 && /* @__PURE__ */ jsx32(Box, { $marginBottom: "1.5rem", children: /* @__PURE__ */ jsx32(
20097
+ props.plans.showEntitlements && /* @__PURE__ */ jsxs26(Flex, { $flexDirection: "column", $gap: "1rem", $flexGrow: 1, children: [
20098
+ props.plans.showInclusionText && planIndex > 0 && /* @__PURE__ */ jsx32(Box, { $marginBottom: "1.5rem", children: /* @__PURE__ */ jsx32(
19790
20099
  Text,
19791
20100
  {
19792
20101
  $font: theme.typography.text.fontFamily,
@@ -19794,136 +20103,142 @@ var PricingTable = forwardRef12(({ children, className, ...rest }, ref) => {
19794
20103
  $weight: theme.typography.text.fontWeight,
19795
20104
  $color: theme.typography.text.color,
19796
20105
  children: t2("Everything in", {
19797
- plan: self2[index - 1].name
20106
+ plan: self2[planIndex - 1].name
19798
20107
  })
19799
20108
  }
19800
20109
  ) }),
19801
- plan.entitlements.reduce((acc, entitlement) => {
19802
- const limit = entitlement.softLimit || entitlement.valueNumeric;
19803
- let price;
19804
- let currency;
19805
- if (selectedPeriod === "month") {
19806
- price = entitlement.meteredMonthlyPrice?.price;
19807
- currency = entitlement.meteredMonthlyPrice?.currency;
19808
- } else if (selectedPeriod === "year") {
19809
- price = entitlement.meteredYearlyPrice?.price;
19810
- currency = entitlement.meteredYearlyPrice?.currency;
19811
- }
19812
- if (entitlement.priceBehavior && typeof price !== "number") {
19813
- return acc;
19814
- }
19815
- acc.push(
19816
- /* @__PURE__ */ jsxs26(Flex, { $gap: "1rem", children: [
19817
- props.plans.showFeatureIcons && entitlement.feature?.icon && /* @__PURE__ */ jsx32(
19818
- IconRound,
19819
- {
19820
- name: entitlement.feature.icon,
19821
- size: "sm",
19822
- colors: [
19823
- theme.primary,
19824
- isLightBackground ? "hsla(0, 0%, 0%, 0.0625)" : "hsla(0, 0%, 100%, 0.25)"
19825
- ]
19826
- }
19827
- ),
19828
- entitlement.feature?.name && /* @__PURE__ */ jsxs26(
19829
- Flex,
19830
- {
19831
- $flexDirection: "column",
19832
- $justifyContent: "center",
19833
- $gap: "0.5rem",
19834
- children: [
19835
- /* @__PURE__ */ jsx32(
19836
- Text,
19837
- {
19838
- $font: theme.typography.text.fontFamily,
19839
- $size: theme.typography.text.fontSize,
19840
- $weight: theme.typography.text.fontWeight,
19841
- $color: theme.typography.text.color,
19842
- $leading: 1.35,
19843
- children: typeof price === "number" && (entitlement.priceBehavior === "pay_in_advance" || entitlement.priceBehavior === "pay_as_you_go") ? /* @__PURE__ */ jsxs26(Fragment13, { children: [
19844
- formatCurrency(price, currency),
19845
- " ",
19846
- t2("per"),
19847
- " ",
19848
- (0, import_pluralize7.default)(
19849
- entitlement.feature.name,
19850
- 1
19851
- ),
19852
- entitlement.priceBehavior === "pay_in_advance" && /* @__PURE__ */ jsxs26(Fragment13, { children: [
19853
- " ",
19854
- t2("per"),
19855
- " ",
19856
- selectedPeriod
19857
- ] })
19858
- ] }) : entitlement.valueType === "numeric" || entitlement.valueType === "unlimited" || entitlement.valueType === "trait" ? /* @__PURE__ */ jsxs26(Fragment13, { children: [
19859
- entitlement.valueType === "unlimited" ? t2("Unlimited", {
19860
- item: (0, import_pluralize7.default)(
19861
- entitlement.feature.name
19862
- )
19863
- }) : typeof limit === "number" && /* @__PURE__ */ jsxs26(Fragment13, { children: [
19864
- formatNumber(limit),
19865
- " ",
19866
- (0, import_pluralize7.default)(
19867
- entitlement.feature.name,
19868
- limit
19869
- )
19870
- ] }),
19871
- entitlement.metricPeriod ? /* @__PURE__ */ jsxs26(Fragment13, { children: [
20110
+ plan.entitlements.reduce(
20111
+ (acc, entitlement, entitlementIndex) => {
20112
+ const limit = entitlement.softLimit ?? entitlement.valueNumeric;
20113
+ const {
20114
+ price: entitlementPrice,
20115
+ currency: entitlementCurrency
20116
+ } = (selectedPeriod === "month" ? entitlement.meteredMonthlyPrice : selectedPeriod === "year" && entitlement.meteredYearlyPrice) || {};
20117
+ if (entitlement.priceBehavior && typeof entitlementPrice !== "number") {
20118
+ return acc;
20119
+ }
20120
+ acc.push(
20121
+ /* @__PURE__ */ jsxs26(Flex, { $gap: "1rem", children: [
20122
+ props.plans.showFeatureIcons && entitlement.feature?.icon && /* @__PURE__ */ jsx32(
20123
+ IconRound,
20124
+ {
20125
+ name: entitlement.feature.icon,
20126
+ size: "sm",
20127
+ colors: [
20128
+ theme.primary,
20129
+ isLightBackground ? "hsla(0, 0%, 0%, 0.0625)" : "hsla(0, 0%, 100%, 0.25)"
20130
+ ]
20131
+ }
20132
+ ),
20133
+ entitlement.feature?.name && /* @__PURE__ */ jsxs26(
20134
+ Flex,
20135
+ {
20136
+ $flexDirection: "column",
20137
+ $justifyContent: "center",
20138
+ $gap: "0.5rem",
20139
+ children: [
20140
+ /* @__PURE__ */ jsx32(
20141
+ Text,
20142
+ {
20143
+ $font: theme.typography.text.fontFamily,
20144
+ $size: theme.typography.text.fontSize,
20145
+ $weight: theme.typography.text.fontWeight,
20146
+ $color: theme.typography.text.color,
20147
+ $leading: 1.35,
20148
+ children: typeof entitlementPrice === "number" && (entitlement.priceBehavior === "pay_in_advance" || entitlement.priceBehavior === "pay_as_you_go") ? /* @__PURE__ */ jsxs26(Fragment13, { children: [
20149
+ formatCurrency(
20150
+ entitlementPrice,
20151
+ entitlementCurrency
20152
+ ),
19872
20153
  " ",
19873
20154
  t2("per"),
19874
20155
  " ",
19875
- {
19876
- billing: "billing period",
19877
- current_day: "day",
19878
- current_month: "month",
19879
- current_year: "year"
19880
- }[entitlement.metricPeriod]
19881
- ] }) : entitlement.priceBehavior === "overage" && entitlement.feature.featureType === "event" && /* @__PURE__ */ jsxs26(Fragment13, { children: [
19882
- "/",
19883
- shortenPeriod(selectedPeriod)
19884
- ] })
19885
- ] }) : entitlement.feature.name
19886
- }
19887
- ),
19888
- entitlement.priceBehavior === "overage" && typeof price === "number" && /* @__PURE__ */ jsxs26(
19889
- Text,
19890
- {
19891
- $font: theme.typography.text.fontFamily,
19892
- $size: 0.875 * theme.typography.text.fontSize,
19893
- $weight: theme.typography.text.fontWeight,
19894
- $color: hexToHSL(
19895
- theme.typography.text.color
19896
- ).l > 50 ? darken(
19897
- theme.typography.text.color,
19898
- 0.46
19899
- ) : lighten(
19900
- theme.typography.text.color,
19901
- 0.46
19902
- ),
19903
- $leading: 1.35,
19904
- children: [
19905
- formatCurrency(price),
19906
- "/",
19907
- (0, import_pluralize7.default)(
19908
- entitlement.feature.name.toLowerCase(),
19909
- 1
20156
+ getFeatureName(
20157
+ entitlement.feature,
20158
+ 1
20159
+ ),
20160
+ entitlement.priceBehavior === "pay_in_advance" && /* @__PURE__ */ jsxs26(Fragment13, { children: [
20161
+ " ",
20162
+ t2("per"),
20163
+ " ",
20164
+ selectedPeriod
20165
+ ] })
20166
+ ] }) : entitlement.valueType === "numeric" || entitlement.valueType === "unlimited" || entitlement.valueType === "trait" ? /* @__PURE__ */ jsxs26(Fragment13, { children: [
20167
+ entitlement.valueType === "unlimited" && !entitlement.priceBehavior ? t2("Unlimited", {
20168
+ item: getFeatureName(
20169
+ entitlement.feature
20170
+ )
20171
+ }) : typeof limit === "number" && /* @__PURE__ */ jsxs26(Fragment13, { children: [
20172
+ formatNumber(limit),
20173
+ " ",
20174
+ getFeatureName(
20175
+ entitlement.feature,
20176
+ limit
20177
+ )
20178
+ ] }),
20179
+ entitlement.metricPeriod && entitlement.priceBehavior !== "overage" ? /* @__PURE__ */ jsxs26(Fragment13, { children: [
20180
+ " ",
20181
+ t2("per"),
20182
+ " ",
20183
+ {
20184
+ billing: "billing period",
20185
+ current_day: "day",
20186
+ current_month: "month",
20187
+ current_year: "year"
20188
+ }[entitlement.metricPeriod]
20189
+ ] }) : entitlement.priceBehavior === "overage" && entitlement.feature.featureType === "event" && /* @__PURE__ */ jsxs26(Fragment13, { children: [
20190
+ "/",
20191
+ shortenPeriod(
20192
+ selectedPeriod
20193
+ )
20194
+ ] })
20195
+ ] }) : entitlement.feature.name
20196
+ }
20197
+ ),
20198
+ entitlement.priceBehavior === "overage" && typeof entitlementPrice === "number" && /* @__PURE__ */ jsxs26(
20199
+ Text,
20200
+ {
20201
+ $font: theme.typography.text.fontFamily,
20202
+ $size: 0.875 * theme.typography.text.fontSize,
20203
+ $weight: theme.typography.text.fontWeight,
20204
+ $color: hexToHSL(
20205
+ theme.typography.text.color
20206
+ ).l > 50 ? darken(
20207
+ theme.typography.text.color,
20208
+ 0.46
20209
+ ) : lighten(
20210
+ theme.typography.text.color,
20211
+ 0.46
19910
20212
  ),
19911
- entitlement.feature.featureType === "event" && /* @__PURE__ */ jsxs26(Fragment13, { children: [
20213
+ $leading: 1.35,
20214
+ children: [
20215
+ formatCurrency(
20216
+ entitlementPrice,
20217
+ entitlementCurrency
20218
+ ),
19912
20219
  "/",
19913
- shortenPeriod(selectedPeriod)
19914
- ] }),
19915
- " ",
19916
- t2("overage fee")
19917
- ]
19918
- }
19919
- )
19920
- ]
19921
- }
19922
- )
19923
- ] }, entitlement.id)
19924
- );
19925
- return acc;
19926
- }, []).slice(0, count?.limit ?? VISIBLE_ENTITLEMENT_COUNT),
20220
+ getFeatureName(
20221
+ entitlement.feature,
20222
+ 1
20223
+ ),
20224
+ entitlement.feature.featureType === "trait" && /* @__PURE__ */ jsxs26(Fragment13, { children: [
20225
+ "/",
20226
+ shortenPeriod(selectedPeriod)
20227
+ ] }),
20228
+ " ",
20229
+ t2("overage fee")
20230
+ ]
20231
+ }
20232
+ )
20233
+ ]
20234
+ }
20235
+ )
20236
+ ] }, entitlementIndex)
20237
+ );
20238
+ return acc;
20239
+ },
20240
+ []
20241
+ ).slice(0, count?.limit ?? VISIBLE_ENTITLEMENT_COUNT),
19927
20242
  (count?.size || plan.entitlements.length) > VISIBLE_ENTITLEMENT_COUNT && /* @__PURE__ */ jsxs26(
19928
20243
  Flex,
19929
20244
  {
@@ -19950,8 +20265,8 @@ var PricingTable = forwardRef12(({ children, className, ...rest }, ref) => {
19950
20265
  $font: theme.typography.link.fontFamily,
19951
20266
  $size: theme.typography.link.fontSize,
19952
20267
  $weight: theme.typography.link.fontWeight,
19953
- $leading: 1,
19954
20268
  $color: theme.typography.link.color,
20269
+ $leading: 1,
19955
20270
  style: { cursor: "pointer" },
19956
20271
  children: isExpanded ? t2("Hide all") : t2("See all")
19957
20272
  }
@@ -19982,9 +20297,11 @@ var PricingTable = forwardRef12(({ children, className, ...rest }, ref) => {
19982
20297
  /* @__PURE__ */ jsx32(
19983
20298
  Text,
19984
20299
  {
20300
+ $font: theme.typography.text.fontFamily,
19985
20301
  $size: 15,
19986
- $leading: 1,
20302
+ $weight: theme.typography.text.fontWeight,
19987
20303
  $color: theme.typography.text.color,
20304
+ $leading: 1,
19988
20305
  children: t2("Current plan")
19989
20306
  }
19990
20307
  )
@@ -20005,7 +20322,7 @@ var PricingTable = forwardRef12(({ children, className, ...rest }, ref) => {
20005
20322
  setLayout("checkout");
20006
20323
  }
20007
20324
  },
20008
- ...index > currentPlanIndex ? {
20325
+ ...planIndex > currentPlanIndex ? {
20009
20326
  $size: props.upgrade.buttonSize,
20010
20327
  $color: props.upgrade.buttonStyle,
20011
20328
  $variant: "filled"
@@ -20037,7 +20354,7 @@ var PricingTable = forwardRef12(({ children, className, ...rest }, ref) => {
20037
20354
  )
20038
20355
  ]
20039
20356
  },
20040
- index
20357
+ planIndex
20041
20358
  );
20042
20359
  })
20043
20360
  }
@@ -20068,8 +20385,9 @@ var PricingTable = forwardRef12(({ children, className, ...rest }, ref) => {
20068
20385
  $display: "grid",
20069
20386
  $gridTemplateColumns: "repeat(auto-fill, minmax(320px, 1fr))",
20070
20387
  $gap: "1rem",
20071
- children: addOns.map((addOn, index) => {
20388
+ children: addOns.map((addOn, addOnIndex) => {
20072
20389
  const isActiveAddOn = addOn.current && selectedPeriod === data.company?.addOns.find((a2) => a2.id === addOn.id)?.planPeriod;
20390
+ const { price: addOnPrice, currency: addOnCurrency } = (selectedPeriod === "month" ? addOn.monthlyPrice : selectedPeriod === "year" && addOn.yearlyPrice) || {};
20073
20391
  return /* @__PURE__ */ jsxs26(
20074
20392
  Flex,
20075
20393
  {
@@ -20113,10 +20431,7 @@ var PricingTable = forwardRef12(({ children, className, ...rest }, ref) => {
20113
20431
  $size: theme.typography[props.plans.name.fontStyle].fontSize,
20114
20432
  $weight: theme.typography[props.plans.name.fontStyle].fontWeight,
20115
20433
  $color: theme.typography[props.plans.name.fontStyle].color,
20116
- children: formatCurrency(
20117
- (selectedPeriod === "month" ? addOn.monthlyPrice : addOn.yearlyPrice)?.price ?? 0,
20118
- (selectedPeriod === "month" ? addOn.monthlyPrice : addOn.yearlyPrice)?.currency
20119
- )
20434
+ children: formatCurrency(addOnPrice ?? 0, addOnCurrency)
20120
20435
  }
20121
20436
  ),
20122
20437
  /* @__PURE__ */ jsxs26(
@@ -20154,7 +20469,7 @@ var PricingTable = forwardRef12(({ children, className, ...rest }, ref) => {
20154
20469
  $flexDirection: "column",
20155
20470
  $justifyContent: "end",
20156
20471
  $gap: `${cardPadding}rem`,
20157
- $flexGrow: "1",
20472
+ $flexGrow: 1,
20158
20473
  children: [
20159
20474
  props.addOns.showEntitlements && /* @__PURE__ */ jsx32(
20160
20475
  Flex,
@@ -20162,59 +20477,70 @@ var PricingTable = forwardRef12(({ children, className, ...rest }, ref) => {
20162
20477
  $flexDirection: "column",
20163
20478
  $position: "relative",
20164
20479
  $gap: "1rem",
20165
- $flexGrow: "1",
20166
- children: addOn.entitlements.map((entitlement) => {
20167
- return /* @__PURE__ */ jsx32(
20168
- Flex,
20169
- {
20170
- $flexWrap: "wrap",
20171
- $justifyContent: "space-between",
20172
- $alignItems: "center",
20173
- $gap: "1rem",
20174
- children: /* @__PURE__ */ jsxs26(Flex, { $gap: "1rem", children: [
20175
- props.addOns.showFeatureIcons && entitlement.feature?.icon && /* @__PURE__ */ jsx32(
20176
- IconRound,
20177
- {
20178
- name: entitlement.feature.icon,
20179
- size: "sm",
20180
- colors: [
20181
- theme.primary,
20182
- isLightBackground ? "hsla(0, 0%, 0%, 0.0625)" : "hsla(0, 0%, 100%, 0.25)"
20183
- ]
20184
- }
20185
- ),
20186
- entitlement.feature?.name && /* @__PURE__ */ jsx32(Flex, { $alignItems: "center", children: /* @__PURE__ */ jsx32(
20187
- Text,
20188
- {
20189
- $font: theme.typography.text.fontFamily,
20190
- $size: theme.typography.text.fontSize,
20191
- $weight: theme.typography.text.fontWeight,
20192
- $color: theme.typography.text.color,
20193
- children: entitlement.valueType === "numeric" || entitlement.valueType === "unlimited" || entitlement.valueType === "trait" ? /* @__PURE__ */ jsxs26(Fragment13, { children: [
20194
- entitlement.valueType === "unlimited" ? t2("Unlimited", {
20195
- item: (0, import_pluralize7.default)(
20196
- entitlement.feature.name
20197
- )
20198
- }) : typeof entitlement.valueNumeric === "number" && `${formatNumber(entitlement.valueNumeric)} ${(0, import_pluralize7.default)(entitlement.feature.name, entitlement.valueNumeric)}`,
20199
- entitlement.metricPeriod && /* @__PURE__ */ jsxs26(Fragment13, { children: [
20200
- " ",
20201
- t2("per"),
20202
- " ",
20203
- {
20204
- billing: "billing period",
20205
- current_day: "day",
20206
- current_month: "month",
20207
- current_year: "year"
20208
- }[entitlement.metricPeriod]
20209
- ] })
20210
- ] }) : entitlement.feature.name
20211
- }
20212
- ) })
20213
- ] })
20214
- },
20215
- entitlement.id
20216
- );
20217
- })
20480
+ $flexGrow: 1,
20481
+ children: addOn.entitlements.map(
20482
+ (entitlement, entitlementIndex) => {
20483
+ return /* @__PURE__ */ jsx32(
20484
+ Flex,
20485
+ {
20486
+ $flexWrap: "wrap",
20487
+ $justifyContent: "space-between",
20488
+ $alignItems: "center",
20489
+ $gap: "1rem",
20490
+ children: /* @__PURE__ */ jsxs26(Flex, { $gap: "1rem", children: [
20491
+ props.addOns.showFeatureIcons && entitlement.feature?.icon && /* @__PURE__ */ jsx32(
20492
+ IconRound,
20493
+ {
20494
+ name: entitlement.feature.icon,
20495
+ size: "sm",
20496
+ colors: [
20497
+ theme.primary,
20498
+ isLightBackground ? "hsla(0, 0%, 0%, 0.0625)" : "hsla(0, 0%, 100%, 0.25)"
20499
+ ]
20500
+ }
20501
+ ),
20502
+ entitlement.feature?.name && /* @__PURE__ */ jsx32(Flex, { $alignItems: "center", children: /* @__PURE__ */ jsx32(
20503
+ Text,
20504
+ {
20505
+ $font: theme.typography.text.fontFamily,
20506
+ $size: theme.typography.text.fontSize,
20507
+ $weight: theme.typography.text.fontWeight,
20508
+ $color: theme.typography.text.color,
20509
+ children: entitlement.valueType === "numeric" || entitlement.valueType === "unlimited" || entitlement.valueType === "trait" ? /* @__PURE__ */ jsxs26(Fragment13, { children: [
20510
+ entitlement.valueType === "unlimited" ? t2("Unlimited", {
20511
+ item: getFeatureName(
20512
+ entitlement.feature
20513
+ )
20514
+ }) : typeof entitlement.valueNumeric === "number" && /* @__PURE__ */ jsxs26(Fragment13, { children: [
20515
+ formatNumber(
20516
+ entitlement.valueNumeric
20517
+ ),
20518
+ " ",
20519
+ getFeatureName(
20520
+ entitlement.feature,
20521
+ entitlement.valueNumeric
20522
+ )
20523
+ ] }),
20524
+ entitlement.metricPeriod && /* @__PURE__ */ jsxs26(Fragment13, { children: [
20525
+ " ",
20526
+ t2("per"),
20527
+ " ",
20528
+ {
20529
+ billing: "billing period",
20530
+ current_day: "day",
20531
+ current_month: "month",
20532
+ current_year: "year"
20533
+ }[entitlement.metricPeriod]
20534
+ ] })
20535
+ ] }) : entitlement.feature.name
20536
+ }
20537
+ ) })
20538
+ ] })
20539
+ },
20540
+ entitlementIndex
20541
+ );
20542
+ }
20543
+ )
20218
20544
  }
20219
20545
  ),
20220
20546
  props.upgrade.isVisible && /* @__PURE__ */ jsx32(
@@ -20241,7 +20567,7 @@ var PricingTable = forwardRef12(({ children, className, ...rest }, ref) => {
20241
20567
  )
20242
20568
  ]
20243
20569
  },
20244
- index
20570
+ addOnIndex
20245
20571
  );
20246
20572
  })
20247
20573
  }
@@ -20254,7 +20580,7 @@ var PricingTable = forwardRef12(({ children, className, ...rest }, ref) => {
20254
20580
  PricingTable.displayName = "PricingTable";
20255
20581
 
20256
20582
  // src/components/elements/upcoming-bill/UpcomingBill.tsx
20257
- import { forwardRef as forwardRef13, useMemo as useMemo10 } from "react";
20583
+ import { forwardRef as forwardRef13, useMemo as useMemo12 } from "react";
20258
20584
  import { jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
20259
20585
  function resolveDesignProps7(props) {
20260
20586
  return {
@@ -20280,7 +20606,7 @@ var UpcomingBill = forwardRef13(({ className, ...rest }, ref) => {
20280
20606
  const theme = nt();
20281
20607
  const { data } = useEmbed();
20282
20608
  const isLightBackground = useIsLightBackground();
20283
- const { upcomingInvoice, discounts } = useMemo10(() => {
20609
+ const { upcomingInvoice, discounts } = useMemo12(() => {
20284
20610
  const discounts2 = (data.subscription?.discounts || []).map((discount) => ({
20285
20611
  amountOff: discount.amountOff,
20286
20612
  couponId: discount.couponId,
@@ -20592,14 +20918,28 @@ var ComponentTree = () => {
20592
20918
 
20593
20919
  // src/components/embed/Embed.tsx
20594
20920
  import { jsx as jsx36 } from "react/jsx-runtime";
20595
- var SchematicEmbed = ({ id, accessToken, apiConfig }) => {
20921
+ var SchematicEmbed = ({
20922
+ id,
20923
+ accessToken,
20924
+ apiConfig,
20925
+ debug
20926
+ }) => {
20596
20927
  if (accessToken?.length === 0) {
20597
20928
  return /* @__PURE__ */ jsx36("div", { children: "Please provide an access token." });
20598
20929
  }
20599
20930
  if (!accessToken?.startsWith("token_")) {
20600
20931
  return /* @__PURE__ */ jsx36("div", { children: 'Invalid access token; your temporary access token will start with "token_".' });
20601
20932
  }
20602
- return /* @__PURE__ */ jsx36(EmbedProvider, { id, accessToken, apiConfig, children: /* @__PURE__ */ jsx36(ComponentTree, {}) });
20933
+ return /* @__PURE__ */ jsx36(
20934
+ EmbedProvider,
20935
+ {
20936
+ id,
20937
+ accessToken,
20938
+ apiConfig,
20939
+ debug,
20940
+ children: /* @__PURE__ */ jsx36(ComponentTree, {})
20941
+ }
20942
+ );
20603
20943
  };
20604
20944
  export {
20605
20945
  Box,
@@ -20630,6 +20970,7 @@ export {
20630
20970
  SchematicEmbed,
20631
20971
  StyledCard,
20632
20972
  Text,
20973
+ TextPropNames,
20633
20974
  Tooltip,
20634
20975
  UnsubscribeButton,
20635
20976
  UpcomingBill,