@schematichq/schematic-react 0.2.0-rc.2 → 0.2.0-rc.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -61,6 +61,728 @@ var require_shallowequal = __commonJS({
61
61
  }
62
62
  });
63
63
 
64
+ // node_modules/lodash.merge/index.js
65
+ var require_lodash = __commonJS({
66
+ "node_modules/lodash.merge/index.js"(exports, module) {
67
+ var LARGE_ARRAY_SIZE = 200;
68
+ var HASH_UNDEFINED = "__lodash_hash_undefined__";
69
+ var HOT_COUNT = 800;
70
+ var HOT_SPAN = 16;
71
+ var MAX_SAFE_INTEGER = 9007199254740991;
72
+ var argsTag = "[object Arguments]";
73
+ var arrayTag = "[object Array]";
74
+ var asyncTag = "[object AsyncFunction]";
75
+ var boolTag = "[object Boolean]";
76
+ var dateTag = "[object Date]";
77
+ var errorTag = "[object Error]";
78
+ var funcTag = "[object Function]";
79
+ var genTag = "[object GeneratorFunction]";
80
+ var mapTag = "[object Map]";
81
+ var numberTag = "[object Number]";
82
+ var nullTag = "[object Null]";
83
+ var objectTag = "[object Object]";
84
+ var proxyTag = "[object Proxy]";
85
+ var regexpTag = "[object RegExp]";
86
+ var setTag = "[object Set]";
87
+ var stringTag = "[object String]";
88
+ var undefinedTag = "[object Undefined]";
89
+ var weakMapTag = "[object WeakMap]";
90
+ var arrayBufferTag = "[object ArrayBuffer]";
91
+ var dataViewTag = "[object DataView]";
92
+ var float32Tag = "[object Float32Array]";
93
+ var float64Tag = "[object Float64Array]";
94
+ var int8Tag = "[object Int8Array]";
95
+ var int16Tag = "[object Int16Array]";
96
+ var int32Tag = "[object Int32Array]";
97
+ var uint8Tag = "[object Uint8Array]";
98
+ var uint8ClampedTag = "[object Uint8ClampedArray]";
99
+ var uint16Tag = "[object Uint16Array]";
100
+ var uint32Tag = "[object Uint32Array]";
101
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
102
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
103
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
104
+ var typedArrayTags = {};
105
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
106
+ typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
107
+ var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
108
+ var freeSelf = typeof self == "object" && self && self.Object === Object && self;
109
+ var root = freeGlobal || freeSelf || Function("return this")();
110
+ var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
111
+ var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
112
+ var moduleExports = freeModule && freeModule.exports === freeExports;
113
+ var freeProcess = moduleExports && freeGlobal.process;
114
+ var nodeUtil = function() {
115
+ try {
116
+ var types = freeModule && freeModule.require && freeModule.require("util").types;
117
+ if (types) {
118
+ return types;
119
+ }
120
+ return freeProcess && freeProcess.binding && freeProcess.binding("util");
121
+ } catch (e) {
122
+ }
123
+ }();
124
+ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
125
+ function apply(func, thisArg, args) {
126
+ switch (args.length) {
127
+ case 0:
128
+ return func.call(thisArg);
129
+ case 1:
130
+ return func.call(thisArg, args[0]);
131
+ case 2:
132
+ return func.call(thisArg, args[0], args[1]);
133
+ case 3:
134
+ return func.call(thisArg, args[0], args[1], args[2]);
135
+ }
136
+ return func.apply(thisArg, args);
137
+ }
138
+ function baseTimes(n, iteratee) {
139
+ var index = -1, result = Array(n);
140
+ while (++index < n) {
141
+ result[index] = iteratee(index);
142
+ }
143
+ return result;
144
+ }
145
+ function baseUnary(func) {
146
+ return function(value) {
147
+ return func(value);
148
+ };
149
+ }
150
+ function getValue(object, key) {
151
+ return object == null ? void 0 : object[key];
152
+ }
153
+ function overArg(func, transform) {
154
+ return function(arg) {
155
+ return func(transform(arg));
156
+ };
157
+ }
158
+ var arrayProto = Array.prototype;
159
+ var funcProto = Function.prototype;
160
+ var objectProto = Object.prototype;
161
+ var coreJsData = root["__core-js_shared__"];
162
+ var funcToString = funcProto.toString;
163
+ var hasOwnProperty = objectProto.hasOwnProperty;
164
+ var maskSrcKey = function() {
165
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
166
+ return uid ? "Symbol(src)_1." + uid : "";
167
+ }();
168
+ var nativeObjectToString = objectProto.toString;
169
+ var objectCtorString = funcToString.call(Object);
170
+ var reIsNative = RegExp(
171
+ "^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
172
+ );
173
+ var Buffer2 = moduleExports ? root.Buffer : void 0;
174
+ var Symbol2 = root.Symbol;
175
+ var Uint8Array2 = root.Uint8Array;
176
+ var allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0;
177
+ var getPrototype = overArg(Object.getPrototypeOf, Object);
178
+ var objectCreate = Object.create;
179
+ var propertyIsEnumerable = objectProto.propertyIsEnumerable;
180
+ var splice = arrayProto.splice;
181
+ var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0;
182
+ var defineProperty = function() {
183
+ try {
184
+ var func = getNative(Object, "defineProperty");
185
+ func({}, "", {});
186
+ return func;
187
+ } catch (e) {
188
+ }
189
+ }();
190
+ var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;
191
+ var nativeMax = Math.max;
192
+ var nativeNow = Date.now;
193
+ var Map2 = getNative(root, "Map");
194
+ var nativeCreate = getNative(Object, "create");
195
+ var baseCreate = /* @__PURE__ */ function() {
196
+ function object() {
197
+ }
198
+ return function(proto) {
199
+ if (!isObject(proto)) {
200
+ return {};
201
+ }
202
+ if (objectCreate) {
203
+ return objectCreate(proto);
204
+ }
205
+ object.prototype = proto;
206
+ var result = new object();
207
+ object.prototype = void 0;
208
+ return result;
209
+ };
210
+ }();
211
+ function Hash(entries) {
212
+ var index = -1, length2 = entries == null ? 0 : entries.length;
213
+ this.clear();
214
+ while (++index < length2) {
215
+ var entry = entries[index];
216
+ this.set(entry[0], entry[1]);
217
+ }
218
+ }
219
+ function hashClear() {
220
+ this.__data__ = nativeCreate ? nativeCreate(null) : {};
221
+ this.size = 0;
222
+ }
223
+ function hashDelete(key) {
224
+ var result = this.has(key) && delete this.__data__[key];
225
+ this.size -= result ? 1 : 0;
226
+ return result;
227
+ }
228
+ function hashGet(key) {
229
+ var data = this.__data__;
230
+ if (nativeCreate) {
231
+ var result = data[key];
232
+ return result === HASH_UNDEFINED ? void 0 : result;
233
+ }
234
+ return hasOwnProperty.call(data, key) ? data[key] : void 0;
235
+ }
236
+ function hashHas(key) {
237
+ var data = this.__data__;
238
+ return nativeCreate ? data[key] !== void 0 : hasOwnProperty.call(data, key);
239
+ }
240
+ function hashSet(key, value) {
241
+ var data = this.__data__;
242
+ this.size += this.has(key) ? 0 : 1;
243
+ data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value;
244
+ return this;
245
+ }
246
+ Hash.prototype.clear = hashClear;
247
+ Hash.prototype["delete"] = hashDelete;
248
+ Hash.prototype.get = hashGet;
249
+ Hash.prototype.has = hashHas;
250
+ Hash.prototype.set = hashSet;
251
+ function ListCache(entries) {
252
+ var index = -1, length2 = entries == null ? 0 : entries.length;
253
+ this.clear();
254
+ while (++index < length2) {
255
+ var entry = entries[index];
256
+ this.set(entry[0], entry[1]);
257
+ }
258
+ }
259
+ function listCacheClear() {
260
+ this.__data__ = [];
261
+ this.size = 0;
262
+ }
263
+ function listCacheDelete(key) {
264
+ var data = this.__data__, index = assocIndexOf(data, key);
265
+ if (index < 0) {
266
+ return false;
267
+ }
268
+ var lastIndex = data.length - 1;
269
+ if (index == lastIndex) {
270
+ data.pop();
271
+ } else {
272
+ splice.call(data, index, 1);
273
+ }
274
+ --this.size;
275
+ return true;
276
+ }
277
+ function listCacheGet(key) {
278
+ var data = this.__data__, index = assocIndexOf(data, key);
279
+ return index < 0 ? void 0 : data[index][1];
280
+ }
281
+ function listCacheHas(key) {
282
+ return assocIndexOf(this.__data__, key) > -1;
283
+ }
284
+ function listCacheSet(key, value) {
285
+ var data = this.__data__, index = assocIndexOf(data, key);
286
+ if (index < 0) {
287
+ ++this.size;
288
+ data.push([key, value]);
289
+ } else {
290
+ data[index][1] = value;
291
+ }
292
+ return this;
293
+ }
294
+ ListCache.prototype.clear = listCacheClear;
295
+ ListCache.prototype["delete"] = listCacheDelete;
296
+ ListCache.prototype.get = listCacheGet;
297
+ ListCache.prototype.has = listCacheHas;
298
+ ListCache.prototype.set = listCacheSet;
299
+ function MapCache(entries) {
300
+ var index = -1, length2 = entries == null ? 0 : entries.length;
301
+ this.clear();
302
+ while (++index < length2) {
303
+ var entry = entries[index];
304
+ this.set(entry[0], entry[1]);
305
+ }
306
+ }
307
+ function mapCacheClear() {
308
+ this.size = 0;
309
+ this.__data__ = {
310
+ "hash": new Hash(),
311
+ "map": new (Map2 || ListCache)(),
312
+ "string": new Hash()
313
+ };
314
+ }
315
+ function mapCacheDelete(key) {
316
+ var result = getMapData(this, key)["delete"](key);
317
+ this.size -= result ? 1 : 0;
318
+ return result;
319
+ }
320
+ function mapCacheGet(key) {
321
+ return getMapData(this, key).get(key);
322
+ }
323
+ function mapCacheHas(key) {
324
+ return getMapData(this, key).has(key);
325
+ }
326
+ function mapCacheSet(key, value) {
327
+ var data = getMapData(this, key), size = data.size;
328
+ data.set(key, value);
329
+ this.size += data.size == size ? 0 : 1;
330
+ return this;
331
+ }
332
+ MapCache.prototype.clear = mapCacheClear;
333
+ MapCache.prototype["delete"] = mapCacheDelete;
334
+ MapCache.prototype.get = mapCacheGet;
335
+ MapCache.prototype.has = mapCacheHas;
336
+ MapCache.prototype.set = mapCacheSet;
337
+ function Stack(entries) {
338
+ var data = this.__data__ = new ListCache(entries);
339
+ this.size = data.size;
340
+ }
341
+ function stackClear() {
342
+ this.__data__ = new ListCache();
343
+ this.size = 0;
344
+ }
345
+ function stackDelete(key) {
346
+ var data = this.__data__, result = data["delete"](key);
347
+ this.size = data.size;
348
+ return result;
349
+ }
350
+ function stackGet(key) {
351
+ return this.__data__.get(key);
352
+ }
353
+ function stackHas(key) {
354
+ return this.__data__.has(key);
355
+ }
356
+ function stackSet(key, value) {
357
+ var data = this.__data__;
358
+ if (data instanceof ListCache) {
359
+ var pairs = data.__data__;
360
+ if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
361
+ pairs.push([key, value]);
362
+ this.size = ++data.size;
363
+ return this;
364
+ }
365
+ data = this.__data__ = new MapCache(pairs);
366
+ }
367
+ data.set(key, value);
368
+ this.size = data.size;
369
+ return this;
370
+ }
371
+ Stack.prototype.clear = stackClear;
372
+ Stack.prototype["delete"] = stackDelete;
373
+ Stack.prototype.get = stackGet;
374
+ Stack.prototype.has = stackHas;
375
+ Stack.prototype.set = stackSet;
376
+ function arrayLikeKeys(value, inherited) {
377
+ var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length2 = result.length;
378
+ for (var key in value) {
379
+ if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
380
+ (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
381
+ isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
382
+ isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
383
+ isIndex(key, length2)))) {
384
+ result.push(key);
385
+ }
386
+ }
387
+ return result;
388
+ }
389
+ function assignMergeValue(object, key, value) {
390
+ if (value !== void 0 && !eq(object[key], value) || value === void 0 && !(key in object)) {
391
+ baseAssignValue(object, key, value);
392
+ }
393
+ }
394
+ function assignValue(object, key, value) {
395
+ var objValue = object[key];
396
+ if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === void 0 && !(key in object)) {
397
+ baseAssignValue(object, key, value);
398
+ }
399
+ }
400
+ function assocIndexOf(array, key) {
401
+ var length2 = array.length;
402
+ while (length2--) {
403
+ if (eq(array[length2][0], key)) {
404
+ return length2;
405
+ }
406
+ }
407
+ return -1;
408
+ }
409
+ function baseAssignValue(object, key, value) {
410
+ if (key == "__proto__" && defineProperty) {
411
+ defineProperty(object, key, {
412
+ "configurable": true,
413
+ "enumerable": true,
414
+ "value": value,
415
+ "writable": true
416
+ });
417
+ } else {
418
+ object[key] = value;
419
+ }
420
+ }
421
+ var baseFor = createBaseFor();
422
+ function baseGetTag(value) {
423
+ if (value == null) {
424
+ return value === void 0 ? undefinedTag : nullTag;
425
+ }
426
+ return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
427
+ }
428
+ function baseIsArguments(value) {
429
+ return isObjectLike(value) && baseGetTag(value) == argsTag;
430
+ }
431
+ function baseIsNative(value) {
432
+ if (!isObject(value) || isMasked(value)) {
433
+ return false;
434
+ }
435
+ var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
436
+ return pattern.test(toSource(value));
437
+ }
438
+ function baseIsTypedArray(value) {
439
+ return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
440
+ }
441
+ function baseKeysIn(object) {
442
+ if (!isObject(object)) {
443
+ return nativeKeysIn(object);
444
+ }
445
+ var isProto = isPrototype(object), result = [];
446
+ for (var key in object) {
447
+ if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) {
448
+ result.push(key);
449
+ }
450
+ }
451
+ return result;
452
+ }
453
+ function baseMerge(object, source, srcIndex, customizer, stack) {
454
+ if (object === source) {
455
+ return;
456
+ }
457
+ baseFor(source, function(srcValue, key) {
458
+ stack || (stack = new Stack());
459
+ if (isObject(srcValue)) {
460
+ baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
461
+ } else {
462
+ var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : void 0;
463
+ if (newValue === void 0) {
464
+ newValue = srcValue;
465
+ }
466
+ assignMergeValue(object, key, newValue);
467
+ }
468
+ }, keysIn);
469
+ }
470
+ function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
471
+ var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue);
472
+ if (stacked) {
473
+ assignMergeValue(object, key, stacked);
474
+ return;
475
+ }
476
+ var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : void 0;
477
+ var isCommon = newValue === void 0;
478
+ if (isCommon) {
479
+ var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);
480
+ newValue = srcValue;
481
+ if (isArr || isBuff || isTyped) {
482
+ if (isArray(objValue)) {
483
+ newValue = objValue;
484
+ } else if (isArrayLikeObject(objValue)) {
485
+ newValue = copyArray(objValue);
486
+ } else if (isBuff) {
487
+ isCommon = false;
488
+ newValue = cloneBuffer(srcValue, true);
489
+ } else if (isTyped) {
490
+ isCommon = false;
491
+ newValue = cloneTypedArray(srcValue, true);
492
+ } else {
493
+ newValue = [];
494
+ }
495
+ } else if (isPlainObject(srcValue) || isArguments(srcValue)) {
496
+ newValue = objValue;
497
+ if (isArguments(objValue)) {
498
+ newValue = toPlainObject(objValue);
499
+ } else if (!isObject(objValue) || isFunction(objValue)) {
500
+ newValue = initCloneObject(srcValue);
501
+ }
502
+ } else {
503
+ isCommon = false;
504
+ }
505
+ }
506
+ if (isCommon) {
507
+ stack.set(srcValue, newValue);
508
+ mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
509
+ stack["delete"](srcValue);
510
+ }
511
+ assignMergeValue(object, key, newValue);
512
+ }
513
+ function baseRest(func, start) {
514
+ return setToString(overRest(func, start, identity), func + "");
515
+ }
516
+ var baseSetToString = !defineProperty ? identity : function(func, string) {
517
+ return defineProperty(func, "toString", {
518
+ "configurable": true,
519
+ "enumerable": false,
520
+ "value": constant(string),
521
+ "writable": true
522
+ });
523
+ };
524
+ function cloneBuffer(buffer, isDeep) {
525
+ if (isDeep) {
526
+ return buffer.slice();
527
+ }
528
+ var length2 = buffer.length, result = allocUnsafe ? allocUnsafe(length2) : new buffer.constructor(length2);
529
+ buffer.copy(result);
530
+ return result;
531
+ }
532
+ function cloneArrayBuffer(arrayBuffer) {
533
+ var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
534
+ new Uint8Array2(result).set(new Uint8Array2(arrayBuffer));
535
+ return result;
536
+ }
537
+ function cloneTypedArray(typedArray, isDeep) {
538
+ var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
539
+ return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
540
+ }
541
+ function copyArray(source, array) {
542
+ var index = -1, length2 = source.length;
543
+ array || (array = Array(length2));
544
+ while (++index < length2) {
545
+ array[index] = source[index];
546
+ }
547
+ return array;
548
+ }
549
+ function copyObject(source, props, object, customizer) {
550
+ var isNew = !object;
551
+ object || (object = {});
552
+ var index = -1, length2 = props.length;
553
+ while (++index < length2) {
554
+ var key = props[index];
555
+ var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;
556
+ if (newValue === void 0) {
557
+ newValue = source[key];
558
+ }
559
+ if (isNew) {
560
+ baseAssignValue(object, key, newValue);
561
+ } else {
562
+ assignValue(object, key, newValue);
563
+ }
564
+ }
565
+ return object;
566
+ }
567
+ function createAssigner(assigner) {
568
+ return baseRest(function(object, sources) {
569
+ var index = -1, length2 = sources.length, customizer = length2 > 1 ? sources[length2 - 1] : void 0, guard = length2 > 2 ? sources[2] : void 0;
570
+ customizer = assigner.length > 3 && typeof customizer == "function" ? (length2--, customizer) : void 0;
571
+ if (guard && isIterateeCall(sources[0], sources[1], guard)) {
572
+ customizer = length2 < 3 ? void 0 : customizer;
573
+ length2 = 1;
574
+ }
575
+ object = Object(object);
576
+ while (++index < length2) {
577
+ var source = sources[index];
578
+ if (source) {
579
+ assigner(object, source, index, customizer);
580
+ }
581
+ }
582
+ return object;
583
+ });
584
+ }
585
+ function createBaseFor(fromRight) {
586
+ return function(object, iteratee, keysFunc) {
587
+ var index = -1, iterable = Object(object), props = keysFunc(object), length2 = props.length;
588
+ while (length2--) {
589
+ var key = props[fromRight ? length2 : ++index];
590
+ if (iteratee(iterable[key], key, iterable) === false) {
591
+ break;
592
+ }
593
+ }
594
+ return object;
595
+ };
596
+ }
597
+ function getMapData(map, key) {
598
+ var data = map.__data__;
599
+ return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
600
+ }
601
+ function getNative(object, key) {
602
+ var value = getValue(object, key);
603
+ return baseIsNative(value) ? value : void 0;
604
+ }
605
+ function getRawTag(value) {
606
+ var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];
607
+ try {
608
+ value[symToStringTag] = void 0;
609
+ var unmasked = true;
610
+ } catch (e) {
611
+ }
612
+ var result = nativeObjectToString.call(value);
613
+ if (unmasked) {
614
+ if (isOwn) {
615
+ value[symToStringTag] = tag;
616
+ } else {
617
+ delete value[symToStringTag];
618
+ }
619
+ }
620
+ return result;
621
+ }
622
+ function initCloneObject(object) {
623
+ return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};
624
+ }
625
+ function isIndex(value, length2) {
626
+ var type = typeof value;
627
+ length2 = length2 == null ? MAX_SAFE_INTEGER : length2;
628
+ return !!length2 && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length2);
629
+ }
630
+ function isIterateeCall(value, index, object) {
631
+ if (!isObject(object)) {
632
+ return false;
633
+ }
634
+ var type = typeof index;
635
+ if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) {
636
+ return eq(object[index], value);
637
+ }
638
+ return false;
639
+ }
640
+ function isKeyable(value) {
641
+ var type = typeof value;
642
+ return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
643
+ }
644
+ function isMasked(func) {
645
+ return !!maskSrcKey && maskSrcKey in func;
646
+ }
647
+ function isPrototype(value) {
648
+ var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
649
+ return value === proto;
650
+ }
651
+ function nativeKeysIn(object) {
652
+ var result = [];
653
+ if (object != null) {
654
+ for (var key in Object(object)) {
655
+ result.push(key);
656
+ }
657
+ }
658
+ return result;
659
+ }
660
+ function objectToString(value) {
661
+ return nativeObjectToString.call(value);
662
+ }
663
+ function overRest(func, start, transform) {
664
+ start = nativeMax(start === void 0 ? func.length - 1 : start, 0);
665
+ return function() {
666
+ var args = arguments, index = -1, length2 = nativeMax(args.length - start, 0), array = Array(length2);
667
+ while (++index < length2) {
668
+ array[index] = args[start + index];
669
+ }
670
+ index = -1;
671
+ var otherArgs = Array(start + 1);
672
+ while (++index < start) {
673
+ otherArgs[index] = args[index];
674
+ }
675
+ otherArgs[start] = transform(array);
676
+ return apply(func, this, otherArgs);
677
+ };
678
+ }
679
+ function safeGet(object, key) {
680
+ if (key === "constructor" && typeof object[key] === "function") {
681
+ return;
682
+ }
683
+ if (key == "__proto__") {
684
+ return;
685
+ }
686
+ return object[key];
687
+ }
688
+ var setToString = shortOut(baseSetToString);
689
+ function shortOut(func) {
690
+ var count = 0, lastCalled = 0;
691
+ return function() {
692
+ var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
693
+ lastCalled = stamp;
694
+ if (remaining > 0) {
695
+ if (++count >= HOT_COUNT) {
696
+ return arguments[0];
697
+ }
698
+ } else {
699
+ count = 0;
700
+ }
701
+ return func.apply(void 0, arguments);
702
+ };
703
+ }
704
+ function toSource(func) {
705
+ if (func != null) {
706
+ try {
707
+ return funcToString.call(func);
708
+ } catch (e) {
709
+ }
710
+ try {
711
+ return func + "";
712
+ } catch (e) {
713
+ }
714
+ }
715
+ return "";
716
+ }
717
+ function eq(value, other) {
718
+ return value === other || value !== value && other !== other;
719
+ }
720
+ var isArguments = baseIsArguments(/* @__PURE__ */ function() {
721
+ return arguments;
722
+ }()) ? baseIsArguments : function(value) {
723
+ return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
724
+ };
725
+ var isArray = Array.isArray;
726
+ function isArrayLike(value) {
727
+ return value != null && isLength(value.length) && !isFunction(value);
728
+ }
729
+ function isArrayLikeObject(value) {
730
+ return isObjectLike(value) && isArrayLike(value);
731
+ }
732
+ var isBuffer = nativeIsBuffer || stubFalse;
733
+ function isFunction(value) {
734
+ if (!isObject(value)) {
735
+ return false;
736
+ }
737
+ var tag = baseGetTag(value);
738
+ return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
739
+ }
740
+ function isLength(value) {
741
+ return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
742
+ }
743
+ function isObject(value) {
744
+ var type = typeof value;
745
+ return value != null && (type == "object" || type == "function");
746
+ }
747
+ function isObjectLike(value) {
748
+ return value != null && typeof value == "object";
749
+ }
750
+ function isPlainObject(value) {
751
+ if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
752
+ return false;
753
+ }
754
+ var proto = getPrototype(value);
755
+ if (proto === null) {
756
+ return true;
757
+ }
758
+ var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor;
759
+ return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
760
+ }
761
+ var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
762
+ function toPlainObject(value) {
763
+ return copyObject(value, keysIn(value));
764
+ }
765
+ function keysIn(object) {
766
+ return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
767
+ }
768
+ var merge2 = createAssigner(function(object, source, srcIndex) {
769
+ baseMerge(object, source, srcIndex);
770
+ });
771
+ function constant(value) {
772
+ return function() {
773
+ return value;
774
+ };
775
+ }
776
+ function identity(value) {
777
+ return value;
778
+ }
779
+ function stubFalse() {
780
+ return false;
781
+ }
782
+ module.exports = merge2;
783
+ }
784
+ });
785
+
64
786
  // node_modules/classnames/index.js
65
787
  var require_classnames = __commonJS({
66
788
  "node_modules/classnames/index.js"(exports, module) {
@@ -5614,6 +6336,9 @@ var vt = function() {
5614
6336
  var St = "__sc-".concat(f, "__");
5615
6337
  "undefined" != typeof window && (window[St] || (window[St] = 0), 1 === window[St] && console.warn("It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\n\nSee https://s-c.sh/2BAXzed for more info."), window[St] += 1);
5616
6338
 
6339
+ // src/context/embed.tsx
6340
+ var import_lodash = __toESM(require_lodash());
6341
+
5617
6342
  // node_modules/@stripe/stripe-js/dist/index.mjs
5618
6343
  var V3_URL = "https://js.stripe.com/v3";
5619
6344
  var V3_URL_REGEX = /^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/;
@@ -6684,7 +7409,8 @@ function ComponentHydrateResponseDataFromJSONTyped(json, ignoreDiscriminator) {
6684
7409
  component: json["component"] == null ? void 0 : ComponentResponseDataFromJSON(json["component"]),
6685
7410
  featureUsage: json["feature_usage"] == null ? void 0 : FeatureUsageDetailResponseDataFromJSON(json["feature_usage"]),
6686
7411
  stripeEmbed: json["stripe_embed"] == null ? void 0 : StripeEmbedInfoFromJSON(json["stripe_embed"]),
6687
- subscription: json["subscription"] == null ? void 0 : CompanySubscriptionResponseDataFromJSON(json["subscription"])
7412
+ subscription: json["subscription"] == null ? void 0 : CompanySubscriptionResponseDataFromJSON(json["subscription"]),
7413
+ upcomingInvoice: json["upcoming_invoice"] == null ? void 0 : InvoiceResponseDataFromJSON(json["upcoming_invoice"])
6688
7414
  };
6689
7415
  }
6690
7416
 
@@ -6885,11 +7611,9 @@ function parseEditorState(data) {
6885
7611
  });
6886
7612
  return arr;
6887
7613
  }
6888
- async function fetchComponent(id, accessToken, options) {
7614
+ async function fetchComponent(id, api) {
6889
7615
  const settings = { ...defaultSettings };
6890
7616
  const nodes = [];
6891
- const config = new Configuration({ ...options, apiKey: accessToken });
6892
- const api = new CheckoutApi(config);
6893
7617
  const response = await api.hydrateComponent({ componentId: id });
6894
7618
  const { data } = response;
6895
7619
  if (data.component?.ast) {
@@ -6915,7 +7639,10 @@ async function fetchComponent(id, accessToken, options) {
6915
7639
  };
6916
7640
  }
6917
7641
  var EmbedContext = createContext({
6918
- data: {},
7642
+ api: null,
7643
+ data: {
7644
+ activePlans: []
7645
+ },
6919
7646
  nodes: [],
6920
7647
  settings: { ...defaultSettings },
6921
7648
  stripe: null,
@@ -6939,7 +7666,10 @@ var EmbedProvider = ({
6939
7666
  const styleRef = useRef(null);
6940
7667
  const [state, setState] = useState(() => {
6941
7668
  return {
6942
- data: {},
7669
+ api: null,
7670
+ data: {
7671
+ activePlans: []
7672
+ },
6943
7673
  nodes: [],
6944
7674
  settings: { ...defaultSettings },
6945
7675
  stripe: null,
@@ -6967,13 +7697,21 @@ var EmbedProvider = ({
6967
7697
  styleRef.current = style;
6968
7698
  }, []);
6969
7699
  useEffect(() => {
6970
- if (!id || !accessToken) {
7700
+ if (!accessToken) {
6971
7701
  return;
6972
7702
  }
6973
- fetchComponent(id, accessToken, apiConfig).then(async (resolvedData) => {
7703
+ const config = new Configuration({ ...apiConfig, apiKey: accessToken });
7704
+ const api = new CheckoutApi(config);
7705
+ setState((prev2) => ({ ...prev2, api }));
7706
+ }, [accessToken, apiConfig]);
7707
+ useEffect(() => {
7708
+ if (!id || !state.api) {
7709
+ return;
7710
+ }
7711
+ fetchComponent(id, state.api).then(async (resolvedData) => {
6974
7712
  setState((prev2) => ({ ...prev2, ...resolvedData }));
6975
7713
  }).catch((error) => setState((prev2) => ({ ...prev2, error })));
6976
- }, [id, accessToken, apiConfig]);
7714
+ }, [id, state.api]);
6977
7715
  useEffect(() => {
6978
7716
  const fontSet = /* @__PURE__ */ new Set([]);
6979
7717
  Object.values(state.settings.theme.typography).forEach(({ fontFamily }) => {
@@ -6988,19 +7726,21 @@ var EmbedProvider = ({
6988
7726
  }, [state.settings.theme.typography]);
6989
7727
  const setData = useCallback(
6990
7728
  (data) => {
6991
- setState((prev2) => ({
6992
- ...prev2,
6993
- data: Object.assign({}, data)
6994
- }));
7729
+ setState((prev2) => {
7730
+ const updated = { ...prev2 };
7731
+ (0, import_lodash.default)(updated.data, data);
7732
+ return updated;
7733
+ });
6995
7734
  },
6996
7735
  [setState]
6997
7736
  );
6998
7737
  const updateSettings = useCallback(
6999
7738
  (settings) => {
7000
- setState((prev2) => ({
7001
- ...prev2,
7002
- settings: Object.assign({}, prev2.settings, settings)
7003
- }));
7739
+ setState((prev2) => {
7740
+ const updated = { ...prev2 };
7741
+ (0, import_lodash.default)(updated.settings, settings);
7742
+ return updated;
7743
+ });
7004
7744
  },
7005
7745
  [setState]
7006
7746
  );
@@ -7053,9 +7793,9 @@ var EmbedProvider = ({
7053
7793
  }
7054
7794
  }
7055
7795
  },
7056
- ...state.data.stripeEmbed?.customerEkey && {
7796
+ ...state.data.stripeEmbed?.customerEkey ? {
7057
7797
  clientSecret: state.data.stripeEmbed.customerEkey
7058
- }
7798
+ } : { mode: "payment", currency: "usd", amount: 999999 }
7059
7799
  },
7060
7800
  children
7061
7801
  }
@@ -7067,6 +7807,7 @@ var EmbedProvider = ({
7067
7807
  EmbedContext.Provider,
7068
7808
  {
7069
7809
  value: {
7810
+ api: state.api,
7070
7811
  data: state.data,
7071
7812
  nodes: state.nodes,
7072
7813
  settings: state.settings,
@@ -7113,11 +7854,11 @@ var require_browser_polyfill = __commonJS2({
7113
7854
  "node_modules/cross-fetch/dist/browser-polyfill.js"(exports) {
7114
7855
  (function(self2) {
7115
7856
  var irrelevant = function(exports2) {
7116
- var global = typeof globalThis !== "undefined" && globalThis || typeof self2 !== "undefined" && self2 || typeof global !== "undefined" && global;
7857
+ var global2 = typeof globalThis !== "undefined" && globalThis || typeof self2 !== "undefined" && self2 || typeof global2 !== "undefined" && global2;
7117
7858
  var support = {
7118
- searchParams: "URLSearchParams" in global,
7119
- iterable: "Symbol" in global && "iterator" in Symbol,
7120
- blob: "FileReader" in global && "Blob" in global && function() {
7859
+ searchParams: "URLSearchParams" in global2,
7860
+ iterable: "Symbol" in global2 && "iterator" in Symbol,
7861
+ blob: "FileReader" in global2 && "Blob" in global2 && function() {
7121
7862
  try {
7122
7863
  new Blob();
7123
7864
  return true;
@@ -7125,8 +7866,8 @@ var require_browser_polyfill = __commonJS2({
7125
7866
  return false;
7126
7867
  }
7127
7868
  }(),
7128
- formData: "FormData" in global,
7129
- arrayBuffer: "ArrayBuffer" in global
7869
+ formData: "FormData" in global2,
7870
+ arrayBuffer: "ArrayBuffer" in global2
7130
7871
  };
7131
7872
  function isDataView(obj) {
7132
7873
  return obj && DataView.prototype.isPrototypeOf(obj);
@@ -7503,7 +8244,7 @@ var require_browser_polyfill = __commonJS2({
7503
8244
  }
7504
8245
  return new Response(null, { status, headers: { location: url } });
7505
8246
  };
7506
- exports2.DOMException = global.DOMException;
8247
+ exports2.DOMException = global2.DOMException;
7507
8248
  try {
7508
8249
  new exports2.DOMException();
7509
8250
  } catch (err2) {
@@ -7555,7 +8296,7 @@ var require_browser_polyfill = __commonJS2({
7555
8296
  };
7556
8297
  function fixUrl(url) {
7557
8298
  try {
7558
- return url === "" && global.location.href ? global.location.href : url;
8299
+ return url === "" && global2.location.href ? global2.location.href : url;
7559
8300
  } catch (e) {
7560
8301
  return url;
7561
8302
  }
@@ -7594,11 +8335,11 @@ var require_browser_polyfill = __commonJS2({
7594
8335
  });
7595
8336
  }
7596
8337
  fetch2.polyfill = true;
7597
- if (!global.fetch) {
7598
- global.fetch = fetch2;
7599
- global.Headers = Headers;
7600
- global.Request = Request;
7601
- global.Response = Response;
8338
+ if (!global2.fetch) {
8339
+ global2.fetch = fetch2;
8340
+ global2.Headers = Headers;
8341
+ global2.Request = Request;
8342
+ global2.Response = Response;
7602
8343
  }
7603
8344
  exports2.Headers = Headers;
7604
8345
  exports2.Request = Request;
@@ -8440,15 +9181,96 @@ import {
8440
9181
  PaymentElement
8441
9182
  } from "@stripe/react-stripe-js";
8442
9183
  import { useStripe, useElements } from "@stripe/react-stripe-js";
9184
+
9185
+ // src/components/elements/plan-manager/styles.ts
9186
+ var StyledButton = dt(Button2)`
9187
+ font-family: "Public Sans", sans-serif;
9188
+ font-weight: 500;
9189
+ text-align: center;
9190
+ width: 100%;
9191
+ ${({ disabled, $color = "primary", theme }) => {
9192
+ const { l: l2 } = hexToHSL(theme[$color]);
9193
+ const textColor = disabled ? "#989898" : l2 > 50 ? "#000000" : "#FFFFFF";
9194
+ return lt`
9195
+ color: ${textColor};
9196
+
9197
+ ${Text} {
9198
+ color: ${textColor};
9199
+ }
9200
+ `;
9201
+ }};
9202
+
9203
+ ${({ disabled, $color = "primary", theme, $variant = "filled" }) => {
9204
+ const color = disabled ? "#EEEEEE" : theme[$color];
9205
+ return $variant === "filled" ? lt`
9206
+ background-color: ${color};
9207
+ border-color: ${color};
9208
+ ` : lt`
9209
+ background-color: transparent;
9210
+ border-color: #d2d2d2;
9211
+ color: #194bfb;
9212
+ ${Text} {
9213
+ color: #194bfb;
9214
+ }
9215
+ `;
9216
+ }}
9217
+
9218
+ &:hover {
9219
+ ${({ disabled }) => disabled && "cursor: not-allowed;"}
9220
+ ${({ disabled, $color = "primary", theme, $variant = "filled" }) => {
9221
+ const specified = theme[$color];
9222
+ const lightened = lighten(specified, 15);
9223
+ const color = disabled ? "#EEEEEE" : specified === lightened ? darken(specified, 15) : lightened;
9224
+ return $variant === "filled" ? lt`
9225
+ background-color: ${color};
9226
+ border-color: ${color};
9227
+ ` : lt`
9228
+ background-color: ${color};
9229
+ border-color: ${color};
9230
+ color: #ffffff;
9231
+ ${Text} {
9232
+ color: #ffffff;
9233
+ }
9234
+ `;
9235
+ }}
9236
+ }
9237
+
9238
+ ${({ $size = "md" }) => {
9239
+ switch ($size) {
9240
+ case "sm":
9241
+ return lt`
9242
+ font-size: ${15 / 16}rem;
9243
+ padding: ${12 / 16}rem 0;
9244
+ border-radius: ${6 / 16}rem;
9245
+ `;
9246
+ case "md":
9247
+ return lt`
9248
+ font-size: ${17 / 16}rem;
9249
+ padding: ${16 / 16}rem 0;
9250
+ border-radius: ${8 / 16}rem;
9251
+ `;
9252
+ case "lg":
9253
+ return lt`
9254
+ font-size: ${19 / 16}rem;
9255
+ padding: ${20 / 16}rem 0;
9256
+ border-radius: ${10 / 16}rem;
9257
+ `;
9258
+ }
9259
+ }}
9260
+ `;
9261
+
9262
+ // src/components/elements/plan-manager/CheckoutForm.tsx
8443
9263
  import { jsx as jsx7, jsxs as jsxs2 } from "react/jsx-runtime";
8444
- var CheckoutForm = () => {
9264
+ var CheckoutForm = ({ plan, period }) => {
8445
9265
  const stripe = useStripe();
8446
9266
  const elements = useElements();
9267
+ const { api, data } = useEmbed();
8447
9268
  const [message, setMessage] = useState4(null);
8448
9269
  const [isLoading, setIsLoading] = useState4(false);
8449
9270
  const handleSubmit = async (event) => {
8450
9271
  event.preventDefault();
8451
- if (!stripe || !elements) {
9272
+ const priceId = period === "month" ? plan.monthlyPrice?.id : plan.yearlyPrice?.id;
9273
+ if (!api || !stripe || !elements || !priceId) {
8452
9274
  return;
8453
9275
  }
8454
9276
  setIsLoading(true);
@@ -8509,22 +9331,13 @@ var CheckoutForm = () => {
8509
9331
  message && /* @__PURE__ */ jsx7("div", { id: "payment-message", children: message })
8510
9332
  ] }),
8511
9333
  /* @__PURE__ */ jsx7("div", { children: /* @__PURE__ */ jsx7(
8512
- "button",
9334
+ StyledButton,
8513
9335
  {
8514
- disabled: isLoading || !stripe || !elements,
8515
9336
  id: "submit",
8516
- style: {
8517
- backgroundColor: "#000000",
8518
- color: "#ffffff",
8519
- paddingTop: ".75rem",
8520
- paddingBottom: ".75rem",
8521
- fontSize: "15px",
8522
- width: "100%",
8523
- borderRadius: ".5rem",
8524
- textAlign: "center",
8525
- cursor: "pointer"
8526
- },
8527
- children: /* @__PURE__ */ jsx7("span", { id: "button-text", style: { marginTop: "2.5rem" }, children: isLoading ? /* @__PURE__ */ jsx7("div", { className: "spinner", id: "spinner" }) : "Save payment method" })
9337
+ disabled: isLoading || !stripe || !elements || !data.stripeEmbed?.publishableKey || !data.stripeEmbed?.customerEkey,
9338
+ $size: "md",
9339
+ $color: "secondary",
9340
+ children: /* @__PURE__ */ jsx7("span", { id: "button-text", children: isLoading ? "Loading" : "Save payment method" })
8528
9341
  }
8529
9342
  ) })
8530
9343
  ]
@@ -8532,86 +9345,12 @@ var CheckoutForm = () => {
8532
9345
  );
8533
9346
  };
8534
9347
 
8535
- // src/components/elements/plan-manager/styles.ts
8536
- var StyledButton = dt(Button2)`
8537
- font-family: "Public Sans", sans-serif;
8538
- font-weight: 500;
8539
- text-align: center;
8540
- width: 100%;
8541
-
8542
- ${({ $color = "primary", theme }) => {
8543
- const { l: l2 } = hexToHSL(theme[$color]);
8544
- const textColor = l2 > 50 ? "#000000" : "#FFFFFF";
8545
- return lt`
8546
- color: ${textColor};
8547
-
8548
- ${Text} {
8549
- color: ${textColor};
8550
- }
8551
- `;
8552
- }};
8553
-
8554
- ${({ $color = "primary", theme, $variant = "filled" }) => {
8555
- const color = theme[$color];
8556
- return $variant === "filled" ? lt`
8557
- background-color: ${color};
8558
- border-color: ${color};
8559
- ` : lt`
8560
- background-color: transparent;
8561
- border-color: #d2d2d2;
8562
- color: #194bfb;
8563
- ${Text} {
8564
- color: #194bfb;
8565
- }
8566
- `;
8567
- }}
8568
-
8569
- &:hover {
8570
- ${({ $color = "primary", theme, $variant = "filled" }) => {
8571
- const specified = theme[$color];
8572
- const lightened = lighten(specified, 15);
8573
- const color = specified === lightened ? darken(specified, 15) : lightened;
8574
- return $variant === "filled" ? lt`
8575
- background-color: ${color};
8576
- border-color: ${color};
8577
- ` : lt`
8578
- background-color: ${color};
8579
- border-color: ${color};
8580
- color: #ffffff;
8581
- ${Text} {
8582
- color: #ffffff;
8583
- }
8584
- `;
8585
- }}
8586
- }
8587
-
8588
- ${({ $size = "md" }) => {
8589
- switch ($size) {
8590
- case "sm":
8591
- return lt`
8592
- font-size: ${15 / 16}rem;
8593
- padding: ${12 / 16}rem 0;
8594
- border-radius: ${6 / 16}rem;
8595
- `;
8596
- case "md":
8597
- return lt`
8598
- font-size: ${17 / 16}rem;
8599
- padding: ${16 / 16}rem 0;
8600
- border-radius: ${8 / 16}rem;
8601
- `;
8602
- case "lg":
8603
- return lt`
8604
- font-size: ${19 / 16}rem;
8605
- padding: ${20 / 16}rem 0;
8606
- border-radius: ${10 / 16}rem;
8607
- `;
8608
- }
8609
- }}
8610
- `;
8611
-
8612
9348
  // src/components/elements/plan-manager/PlanManager.tsx
8613
9349
  import { Fragment, jsx as jsx8, jsxs as jsxs3 } from "react/jsx-runtime";
8614
- var OverlayHeader = ({ children }) => {
9350
+ var OverlayHeader = ({
9351
+ children,
9352
+ onClose
9353
+ }) => {
8615
9354
  const { setLayout } = useEmbed();
8616
9355
  return /* @__PURE__ */ jsxs3(
8617
9356
  Flex,
@@ -8634,6 +9373,9 @@ var OverlayHeader = ({ children }) => {
8634
9373
  $cursor: "pointer",
8635
9374
  onClick: () => {
8636
9375
  setLayout("portal");
9376
+ if (onClose) {
9377
+ onClose();
9378
+ }
8637
9379
  },
8638
9380
  children: /* @__PURE__ */ jsx8(Icon2, { name: "close", style: { fontSize: 36, color: "#B8B8B8" } })
8639
9381
  }
@@ -8698,8 +9440,20 @@ var OverlayWrapper = ({
8698
9440
  var OverlaySideBar = ({
8699
9441
  pricePeriod,
8700
9442
  setPricePeriod,
8701
- setCheckoutStage
9443
+ checkoutStage,
9444
+ setCheckoutStage,
9445
+ currentPlan,
9446
+ selectedPlan
8702
9447
  }) => {
9448
+ const { api } = useEmbed();
9449
+ const savingsPercentage = useMemo2(() => {
9450
+ if (selectedPlan && pricePeriod === "month") {
9451
+ const monthly = (selectedPlan?.monthlyPrice?.price || 0) * 12;
9452
+ const yearly = selectedPlan?.yearlyPrice?.price || 0;
9453
+ return (monthly - yearly) / monthly * 100;
9454
+ }
9455
+ return 0;
9456
+ }, [selectedPlan, pricePeriod]);
8703
9457
  return /* @__PURE__ */ jsxs3(
8704
9458
  Flex,
8705
9459
  {
@@ -8721,32 +9475,7 @@ var OverlaySideBar = ({
8721
9475
  $padding: "1.5rem",
8722
9476
  $borderBottom: "1px solid #DEDEDE",
8723
9477
  children: [
8724
- /* @__PURE__ */ jsxs3(Flex, { $flexDirection: "row", $justifyContent: "space-between", children: [
8725
- /* @__PURE__ */ jsx8(Text, { $size: 20, $weight: 600, children: "Subscription" }),
8726
- /* @__PURE__ */ jsxs3(
8727
- Flex,
8728
- {
8729
- $border: "1px solid #D9D9D9",
8730
- $padding: ".15rem .45rem .15rem .55rem",
8731
- $alignItems: "center",
8732
- $borderRadius: "5px",
8733
- $fontSize: "12px",
8734
- children: [
8735
- /* @__PURE__ */ jsx8(Box, { $display: "inline-block", $marginRight: ".5rem", children: "$ USD" }),
8736
- /* @__PURE__ */ jsx8(
8737
- Icon2,
8738
- {
8739
- name: "chevron-down",
8740
- style: {
8741
- fontSize: "20px",
8742
- lineHeight: "1em"
8743
- }
8744
- }
8745
- )
8746
- ]
8747
- }
8748
- )
8749
- ] }),
9478
+ /* @__PURE__ */ jsx8(Flex, { $flexDirection: "row", $justifyContent: "space-between", children: /* @__PURE__ */ jsx8(Text, { $size: 20, $weight: 600, children: "Subscription" }) }),
8750
9479
  /* @__PURE__ */ jsxs3(
8751
9480
  Flex,
8752
9481
  {
@@ -8784,7 +9513,11 @@ var OverlaySideBar = ({
8784
9513
  ]
8785
9514
  }
8786
9515
  ),
8787
- /* @__PURE__ */ jsx8(Box, { $fontSize: "11px", $color: "#194BFB", children: "Save up to 33% with yearly billing" })
9516
+ savingsPercentage > 0 && /* @__PURE__ */ jsxs3(Box, { $fontSize: "11px", $color: "#194BFB", children: [
9517
+ "Save up to ",
9518
+ savingsPercentage,
9519
+ "% with yearly billing"
9520
+ ] })
8788
9521
  ]
8789
9522
  }
8790
9523
  ),
@@ -8809,7 +9542,7 @@ var OverlaySideBar = ({
8809
9542
  $color: "#5D5D5D",
8810
9543
  $gap: ".5rem",
8811
9544
  children: [
8812
- /* @__PURE__ */ jsxs3(
9545
+ currentPlan && /* @__PURE__ */ jsxs3(
8813
9546
  Flex,
8814
9547
  {
8815
9548
  $flexDirection: "row",
@@ -8818,50 +9551,56 @@ var OverlaySideBar = ({
8818
9551
  $fontSize: "14px",
8819
9552
  $color: "#5D5D5D",
8820
9553
  children: [
8821
- /* @__PURE__ */ jsx8(Flex, { $fontSize: "14px", $color: "#5D5D5D", children: "Free" }),
9554
+ /* @__PURE__ */ jsx8(Flex, { $fontSize: "14px", $color: "#5D5D5D", children: currentPlan.name }),
8822
9555
  /* @__PURE__ */ jsxs3(Flex, { $fontSize: "12px", $color: "#000000", children: [
8823
- "$0/",
8824
- pricePeriod
9556
+ "$",
9557
+ currentPlan.planPrice,
9558
+ "/",
9559
+ currentPlan.planPeriod
8825
9560
  ] })
8826
9561
  ]
8827
9562
  }
8828
9563
  ),
8829
- /* @__PURE__ */ jsx8(
8830
- Box,
8831
- {
8832
- $width: "100%",
8833
- $textAlign: "left",
8834
- $opacity: "50%",
8835
- $marginBottom: "-.25rem",
8836
- $marginTop: "-.25rem",
8837
- children: /* @__PURE__ */ jsx8(
8838
- Icon2,
8839
- {
8840
- name: "arrow-down",
8841
- style: {
8842
- display: "inline-block"
9564
+ selectedPlan && /* @__PURE__ */ jsxs3(Fragment, { children: [
9565
+ /* @__PURE__ */ jsx8(
9566
+ Box,
9567
+ {
9568
+ $width: "100%",
9569
+ $textAlign: "left",
9570
+ $opacity: "50%",
9571
+ $marginBottom: "-.25rem",
9572
+ $marginTop: "-.25rem",
9573
+ children: /* @__PURE__ */ jsx8(
9574
+ Icon2,
9575
+ {
9576
+ name: "arrow-down",
9577
+ style: {
9578
+ display: "inline-block"
9579
+ }
8843
9580
  }
8844
- }
8845
- )
8846
- }
8847
- ),
8848
- /* @__PURE__ */ jsxs3(
8849
- Flex,
8850
- {
8851
- $flexDirection: "row",
8852
- $alignItems: "center",
8853
- $justifyContent: "space-between",
8854
- $fontSize: "14px",
8855
- $color: "#5D5D5D",
8856
- children: [
8857
- /* @__PURE__ */ jsx8(Flex, { $fontSize: "14px", $color: "#000000", $fontWeight: "600", children: "Professional" }),
8858
- /* @__PURE__ */ jsxs3(Flex, { $fontSize: "12px", $color: "#000000", children: [
8859
- "$285/",
8860
- pricePeriod
8861
- ] })
8862
- ]
8863
- }
8864
- )
9581
+ )
9582
+ }
9583
+ ),
9584
+ /* @__PURE__ */ jsxs3(
9585
+ Flex,
9586
+ {
9587
+ $flexDirection: "row",
9588
+ $alignItems: "center",
9589
+ $justifyContent: "space-between",
9590
+ $fontSize: "14px",
9591
+ $color: "#5D5D5D",
9592
+ children: [
9593
+ /* @__PURE__ */ jsx8(Flex, { $fontSize: "14px", $color: "#000000", $fontWeight: "600", children: selectedPlan.name }),
9594
+ /* @__PURE__ */ jsxs3(Flex, { $fontSize: "12px", $color: "#000000", children: [
9595
+ "$",
9596
+ pricePeriod === "month" ? selectedPlan.monthlyPrice?.price : selectedPlan.yearlyPrice?.price,
9597
+ "/",
9598
+ pricePeriod
9599
+ ] })
9600
+ ]
9601
+ }
9602
+ )
9603
+ ] })
8865
9604
  ]
8866
9605
  }
8867
9606
  )
@@ -8878,25 +9617,57 @@ var OverlaySideBar = ({
8878
9617
  $height: "auto",
8879
9618
  $padding: "1.5rem",
8880
9619
  children: [
8881
- /* @__PURE__ */ jsxs3(Flex, { $fontSize: "12px", $color: "#5D5D5D", $justifyContent: "space-between", children: [
8882
- /* @__PURE__ */ jsxs3(Box, { $fontSize: "12px", $color: "#5D5D5D", children: [
8883
- "Monthly total:",
8884
- " "
8885
- ] }),
8886
- /* @__PURE__ */ jsx8(Box, { $fontSize: "12px", $color: "#000000", children: "$285/mo" })
8887
- ] }),
8888
- /* @__PURE__ */ jsx8(
9620
+ selectedPlan && /* @__PURE__ */ jsxs3(
9621
+ Flex,
9622
+ {
9623
+ $fontSize: "12px",
9624
+ $color: "#5D5D5D",
9625
+ $justifyContent: "space-between",
9626
+ children: [
9627
+ /* @__PURE__ */ jsxs3(Box, { $fontSize: "12px", $color: "#5D5D5D", children: [
9628
+ "Monthly total:",
9629
+ " "
9630
+ ] }),
9631
+ /* @__PURE__ */ jsxs3(Box, { $fontSize: "12px", $color: "#000000", children: [
9632
+ "$",
9633
+ pricePeriod === "month" ? selectedPlan.monthlyPrice?.price : selectedPlan.yearlyPrice?.price,
9634
+ "/",
9635
+ pricePeriod
9636
+ ] })
9637
+ ]
9638
+ }
9639
+ ),
9640
+ checkoutStage === "plan" ? /* @__PURE__ */ jsx8(
8889
9641
  StyledButton,
8890
9642
  {
8891
9643
  $size: "sm",
8892
9644
  onClick: () => {
8893
9645
  setCheckoutStage("checkout");
8894
9646
  },
8895
- children: /* @__PURE__ */ jsxs3(Flex, { $gap: ".5rem", $alignItems: "center", $justifyContent: "center", children: [
9647
+ ...!selectedPlan && { disabled: true },
9648
+ children: /* @__PURE__ */ jsxs3(Flex, { $gap: "0.5rem", $alignItems: "center", $justifyContent: "center", children: [
8896
9649
  /* @__PURE__ */ jsx8("span", { children: "Next: Checkout" }),
8897
9650
  /* @__PURE__ */ jsx8(Icon2, { name: "arrow-right" })
8898
9651
  ] })
8899
9652
  }
9653
+ ) : /* @__PURE__ */ jsx8(
9654
+ StyledButton,
9655
+ {
9656
+ disabled: !api || !selectedPlan || selectedPlan?.id === currentPlan?.id,
9657
+ onClick: async () => {
9658
+ const priceId = pricePeriod === "month" ? selectedPlan?.monthlyPrice?.id : selectedPlan?.yearlyPrice?.id;
9659
+ if (!api || !selectedPlan || !priceId)
9660
+ return;
9661
+ await api.checkout({
9662
+ changeSubscriptionRequestBody: {
9663
+ newPlanId: selectedPlan.id,
9664
+ newPriceId: priceId
9665
+ }
9666
+ });
9667
+ },
9668
+ $size: "md",
9669
+ children: "Pay now"
9670
+ }
8900
9671
  ),
8901
9672
  /* @__PURE__ */ jsx8(Box, { $fontSize: "12px", $color: "#5D5D5D", children: "Discounts & credits applied at checkout" })
8902
9673
  ]
@@ -8940,23 +9711,15 @@ var PlanManager = forwardRef(({ children, className, portal, ...rest }, ref) =>
8940
9711
  "plan"
8941
9712
  );
8942
9713
  const [planPeriod, setPlanPeriod] = useState5("month");
9714
+ const [selectedPlan, setSelectedPlan] = useState5();
8943
9715
  const { data, settings, layout, stripe, setLayout } = useEmbed();
8944
9716
  const { currentPlan, canChangePlan, availablePlans } = useMemo2(() => {
8945
- const canChangePlan2 = stripe !== null;
8946
- const availablePlans2 = data.activePlans?.map(
8947
- ({ name, description, current, monthlyPrice, yearlyPrice }) => ({
8948
- name,
8949
- description,
8950
- price: planPeriod === "month" ? monthlyPrice?.price : yearlyPrice?.price,
8951
- current
8952
- })
8953
- );
8954
9717
  return {
8955
9718
  currentPlan: data.company?.plan,
8956
- canChangePlan: canChangePlan2,
8957
- availablePlans: availablePlans2
9719
+ canChangePlan: stripe !== null,
9720
+ availablePlans: data.activePlans
8958
9721
  };
8959
- }, [data.company, data.activePlans, stripe, planPeriod]);
9722
+ }, [data.company, data.activePlans, stripe]);
8960
9723
  return /* @__PURE__ */ jsxs3("div", { ref, className, children: [
8961
9724
  /* @__PURE__ */ jsx8(
8962
9725
  Flex,
@@ -9038,23 +9801,41 @@ var PlanManager = forwardRef(({ children, className, portal, ...rest }, ref) =>
9038
9801
  /* @__PURE__ */ jsxs3(OverlayWrapper, { children: [
9039
9802
  /* @__PURE__ */ jsx8(OverlayHeader, { children: /* @__PURE__ */ jsxs3(Flex, { $gap: "1rem", children: [
9040
9803
  /* @__PURE__ */ jsxs3(Flex, { $flexDirection: "row", $gap: "0.5rem", $alignItems: "center", children: [
9041
- /* @__PURE__ */ jsx8(
9804
+ checkoutStage === "plan" ? /* @__PURE__ */ jsx8(
9042
9805
  Box,
9043
9806
  {
9044
9807
  $width: "15px",
9045
9808
  $height: "15px",
9809
+ $backgroundColor: "white",
9046
9810
  $border: "2px solid #DDDDDD",
9047
- $borderRadius: "999px",
9048
- $backgroundColor: "white"
9811
+ $borderRadius: "999px"
9812
+ }
9813
+ ) : /* @__PURE__ */ jsx8(
9814
+ IconRound,
9815
+ {
9816
+ name: "check",
9817
+ style: {
9818
+ color: "#FFFFFF",
9819
+ backgroundColor: "#DDDDDD",
9820
+ fontSize: 16,
9821
+ width: "1rem",
9822
+ height: "1rem"
9823
+ }
9049
9824
  }
9050
9825
  ),
9051
9826
  /* @__PURE__ */ jsx8(
9052
9827
  "div",
9053
9828
  {
9054
- ...checkoutStage === "plan" && {
9829
+ tabIndex: 0,
9830
+ ...checkoutStage === "plan" ? {
9055
9831
  style: {
9056
9832
  fontWeight: "700"
9057
9833
  }
9834
+ } : {
9835
+ style: {
9836
+ cursor: "pointer"
9837
+ },
9838
+ onClick: () => setCheckoutStage("plan")
9058
9839
  },
9059
9840
  children: "1. Select plan"
9060
9841
  }
@@ -9081,6 +9862,7 @@ var PlanManager = forwardRef(({ children, className, portal, ...rest }, ref) =>
9081
9862
  /* @__PURE__ */ jsx8(
9082
9863
  "div",
9083
9864
  {
9865
+ tabIndex: 0,
9084
9866
  ...checkoutStage === "checkout" && {
9085
9867
  style: {
9086
9868
  fontWeight: "700"
@@ -9088,13 +9870,6 @@ var PlanManager = forwardRef(({ children, className, portal, ...rest }, ref) =>
9088
9870
  },
9089
9871
  children: "2. Checkout"
9090
9872
  }
9091
- ),
9092
- /* @__PURE__ */ jsx8(
9093
- Icon2,
9094
- {
9095
- name: "chevron-right",
9096
- style: { fontSize: 16, color: "#D0D0D0" }
9097
- }
9098
9873
  )
9099
9874
  ] })
9100
9875
  ] }) }),
@@ -9155,8 +9930,8 @@ var PlanManager = forwardRef(({ children, className, portal, ...rest }, ref) =>
9155
9930
  $height: "100%",
9156
9931
  $flexDirection: "column",
9157
9932
  $backgroundColor: "white",
9158
- $border: plan?.current ? `2px solid #194BFB` : "",
9159
9933
  $flex: "1",
9934
+ $border: `2px solid ${plan.id === selectedPlan?.id ? "#194BFB" : "transparent"}`,
9160
9935
  $borderRadius: ".5rem",
9161
9936
  $boxShadow: "0px 1px 3px rgba(16, 24, 40, 0.1), 0px 1px 20px rgba(16, 24, 40, 0.06)",
9162
9937
  children: [
@@ -9168,26 +9943,26 @@ var PlanManager = forwardRef(({ children, className, portal, ...rest }, ref) =>
9168
9943
  $gap: "1rem",
9169
9944
  $width: "100%",
9170
9945
  $height: "auto",
9171
- $padding: "1.5rem",
9946
+ $padding: "2rem 1.5rem 1.5rem",
9172
9947
  $borderBottom: "1px solid #DEDEDE",
9173
9948
  children: [
9174
- /* @__PURE__ */ jsx8(Text, { $size: 20, $weight: 600, children: plan?.name }),
9175
- /* @__PURE__ */ jsx8(Text, { $size: 14, children: plan?.description }),
9949
+ /* @__PURE__ */ jsx8(Text, { $size: 20, $weight: 600, children: plan.name }),
9950
+ /* @__PURE__ */ jsx8(Text, { $size: 14, children: plan.description }),
9176
9951
  /* @__PURE__ */ jsxs3(Text, { children: [
9177
9952
  /* @__PURE__ */ jsx8(Box, { $display: "inline-block", $fontSize: ".90rem", children: "$" }),
9178
- /* @__PURE__ */ jsx8(Box, { $display: "inline-block", $fontSize: "1.5rem", children: plan?.price ? plan.price : "350" }),
9953
+ /* @__PURE__ */ jsx8(Box, { $display: "inline-block", $fontSize: "1.5rem", children: (planPeriod === "month" ? plan.monthlyPrice : plan.yearlyPrice)?.price }),
9179
9954
  /* @__PURE__ */ jsxs3(Box, { $display: "inline-block", $fontSize: ".75rem", children: [
9180
9955
  "/",
9181
9956
  planPeriod
9182
9957
  ] })
9183
9958
  ] }),
9184
- plan?.current && /* @__PURE__ */ jsx8(
9959
+ (plan.current || plan.id === currentPlan?.id) && /* @__PURE__ */ jsx8(
9185
9960
  Flex,
9186
9961
  {
9187
9962
  $position: "absolute",
9188
9963
  $right: "1rem",
9189
9964
  $top: "1rem",
9190
- $fontSize: ".75rem",
9965
+ $fontSize: ".625rem",
9191
9966
  $color: "white",
9192
9967
  $backgroundColor: "#194BFB",
9193
9968
  $borderRadius: "999px",
@@ -9208,22 +9983,30 @@ var PlanManager = forwardRef(({ children, className, portal, ...rest }, ref) =>
9208
9983
  $width: "100%",
9209
9984
  $height: "auto",
9210
9985
  $padding: "1.5rem",
9211
- children: [{}, {}, {}].map(() => {
9212
- return /* @__PURE__ */ jsxs3(Flex, { $flexShrink: "0", $gap: "1rem", children: [
9213
- /* @__PURE__ */ jsx8(
9214
- IconRound,
9215
- {
9216
- name: "server-search",
9217
- size: "tn",
9218
- colors: ["#00000", "#F5F5F5"]
9219
- }
9220
- ),
9221
- /* @__PURE__ */ jsx8(Flex, { $alignItems: "center", children: /* @__PURE__ */ jsx8(Text, { $size: ".75rem", $color: "#00000", children: "5 Queries/mo" }) })
9222
- ] });
9986
+ children: plan.features.map((feature) => {
9987
+ return /* @__PURE__ */ jsxs3(
9988
+ Flex,
9989
+ {
9990
+ $flexShrink: "0",
9991
+ $gap: "1rem",
9992
+ children: [
9993
+ /* @__PURE__ */ jsx8(
9994
+ IconRound,
9995
+ {
9996
+ name: feature.icon,
9997
+ size: "tn",
9998
+ colors: ["#000000", "#F5F5F5"]
9999
+ }
10000
+ ),
10001
+ /* @__PURE__ */ jsx8(Flex, { $alignItems: "center", children: /* @__PURE__ */ jsx8(Text, { $size: ".75rem", $color: "#00000", children: feature.name }) })
10002
+ ]
10003
+ },
10004
+ feature.id
10005
+ );
9223
10006
  })
9224
10007
  }
9225
10008
  ),
9226
- /* @__PURE__ */ jsx8(
10009
+ /* @__PURE__ */ jsxs3(
9227
10010
  Flex,
9228
10011
  {
9229
10012
  $flexDirection: "column",
@@ -9232,58 +10015,64 @@ var PlanManager = forwardRef(({ children, className, portal, ...rest }, ref) =>
9232
10015
  $width: "100%",
9233
10016
  $height: "auto",
9234
10017
  $padding: "1.5rem",
9235
- children: plan.current ? /* @__PURE__ */ jsxs3(
9236
- Flex,
9237
- {
9238
- $flexDirection: "row",
9239
- $gap: ".5rem",
9240
- $justifyContent: "center",
9241
- $alignItems: "center",
9242
- children: [
9243
- /* @__PURE__ */ jsx8(
9244
- Icon2,
9245
- {
9246
- name: "check-rounded",
9247
- style: {
9248
- fontSize: 24,
9249
- lineHeight: "1em",
9250
- color: "#194BFB"
10018
+ children: [
10019
+ plan.id === selectedPlan?.id && /* @__PURE__ */ jsxs3(
10020
+ Flex,
10021
+ {
10022
+ $justifyContent: "center",
10023
+ $alignItems: "center",
10024
+ $gap: "0.25rem",
10025
+ $fontSize: "0.9375rem",
10026
+ $padding: "0.625rem 0",
10027
+ children: [
10028
+ /* @__PURE__ */ jsx8(
10029
+ Icon2,
10030
+ {
10031
+ name: "check-rounded",
10032
+ style: {
10033
+ fontSize: 20,
10034
+ lineHeight: "1",
10035
+ color: "#194BFB"
10036
+ }
9251
10037
  }
9252
- }
9253
- ),
9254
- /* @__PURE__ */ jsx8(
9255
- "span",
9256
- {
9257
- style: {
9258
- fontSize: "1rem",
9259
- color: "#7B7B7B"
9260
- },
9261
- children: "Selected"
9262
- }
9263
- )
9264
- ]
9265
- }
9266
- ) : /* @__PURE__ */ jsx8(
9267
- StyledButton,
9268
- {
9269
- $size: "sm",
9270
- $color: "secondary",
9271
- $variant: "outline",
9272
- onClick: () => {
9273
- },
9274
- children: "Select"
9275
- }
9276
- )
10038
+ ),
10039
+ /* @__PURE__ */ jsx8(
10040
+ "span",
10041
+ {
10042
+ style: {
10043
+ color: "#7B7B7B",
10044
+ lineHeight: "1.4"
10045
+ },
10046
+ children: "Selected"
10047
+ }
10048
+ )
10049
+ ]
10050
+ }
10051
+ ),
10052
+ !(plan.current || plan.id === currentPlan?.id) && plan.id !== selectedPlan?.id && /* @__PURE__ */ jsx8(
10053
+ StyledButton,
10054
+ {
10055
+ $size: "sm",
10056
+ $color: "secondary",
10057
+ $variant: "outline",
10058
+ onClick: () => {
10059
+ setSelectedPlan(plan);
10060
+ },
10061
+ children: "Select"
10062
+ }
10063
+ )
10064
+ ]
9277
10065
  }
9278
10066
  )
9279
10067
  ]
9280
- }
10068
+ },
10069
+ plan.id
9281
10070
  );
9282
10071
  })
9283
10072
  }
9284
10073
  )
9285
10074
  ] }),
9286
- checkoutStage === "checkout" && /* @__PURE__ */ jsx8(CheckoutForm, {})
10075
+ selectedPlan && checkoutStage === "checkout" && /* @__PURE__ */ jsx8(CheckoutForm, { plan: selectedPlan, period: planPeriod })
9287
10076
  ]
9288
10077
  }
9289
10078
  ),
@@ -9292,7 +10081,10 @@ var PlanManager = forwardRef(({ children, className, portal, ...rest }, ref) =>
9292
10081
  {
9293
10082
  pricePeriod: planPeriod,
9294
10083
  setPricePeriod: setPlanPeriod,
9295
- setCheckoutStage
10084
+ checkoutStage,
10085
+ setCheckoutStage,
10086
+ currentPlan,
10087
+ selectedPlan
9296
10088
  }
9297
10089
  )
9298
10090
  ] })
@@ -9603,28 +10395,26 @@ function resolveDesignProps4(props) {
9603
10395
  var UpcomingBill = forwardRef4(({ className, ...rest }, ref) => {
9604
10396
  const props = resolveDesignProps4(rest);
9605
10397
  const { data, settings, stripe } = useEmbed();
9606
- const { latestInvoice } = useMemo5(() => {
10398
+ const { upcomingInvoice } = useMemo5(() => {
9607
10399
  return {
9608
- latestInvoice: {
9609
- ...data.subscription?.latestInvoice?.amountDue && {
9610
- amountDue: data.subscription.latestInvoice.amountDue
10400
+ upcomingInvoice: {
10401
+ ...data.upcomingInvoice?.amountDue && {
10402
+ amountDue: data.upcomingInvoice.amountDue
9611
10403
  },
9612
10404
  ...data.subscription?.interval && {
9613
10405
  interval: data.subscription.interval
9614
10406
  },
9615
- ...data.subscription?.latestInvoice?.dueDate && {
9616
- dueDate: toPrettyDate(
9617
- new Date(data.subscription.latestInvoice.dueDate)
9618
- )
10407
+ ...data.upcomingInvoice?.dueDate && {
10408
+ dueDate: toPrettyDate(new Date(data.upcomingInvoice.dueDate))
9619
10409
  }
9620
10410
  }
9621
10411
  };
9622
- }, [data.subscription]);
9623
- if (!stripe || !data.subscription?.latestInvoice) {
10412
+ }, [data.subscription, data.upcomingInvoice]);
10413
+ if (!stripe || !data.upcomingInvoice) {
9624
10414
  return null;
9625
10415
  }
9626
10416
  return /* @__PURE__ */ jsxs6("div", { ref, className, children: [
9627
- props.header.isVisible && latestInvoice.dueDate && /* @__PURE__ */ jsx11(
10417
+ props.header.isVisible && upcomingInvoice.dueDate && /* @__PURE__ */ jsx11(
9628
10418
  Flex,
9629
10419
  {
9630
10420
  $justifyContent: "space-between",
@@ -9640,13 +10430,13 @@ var UpcomingBill = forwardRef4(({ className, ...rest }, ref) => {
9640
10430
  children: [
9641
10431
  props.header.prefix,
9642
10432
  " ",
9643
- latestInvoice.dueDate
10433
+ upcomingInvoice.dueDate
9644
10434
  ]
9645
10435
  }
9646
10436
  )
9647
10437
  }
9648
10438
  ),
9649
- latestInvoice.amountDue && /* @__PURE__ */ jsxs6(Flex, { $justifyContent: "space-between", $alignItems: "start", $gap: "1rem", children: [
10439
+ upcomingInvoice.amountDue && /* @__PURE__ */ jsxs6(Flex, { $justifyContent: "space-between", $alignItems: "start", $gap: "1rem", children: [
9650
10440
  props.price.isVisible && /* @__PURE__ */ jsx11(Flex, { $alignItems: "end", $flexGrow: "1", children: /* @__PURE__ */ jsxs6(
9651
10441
  Text,
9652
10442
  {
@@ -9664,7 +10454,7 @@ var UpcomingBill = forwardRef4(({ className, ...rest }, ref) => {
9664
10454
  children: "$"
9665
10455
  }
9666
10456
  ),
9667
- latestInvoice.amountDue
10457
+ upcomingInvoice.amountDue
9668
10458
  ]
9669
10459
  }
9670
10460
  ) }),
@@ -9699,7 +10489,7 @@ var resolveDesignProps5 = (props) => {
9699
10489
  };
9700
10490
  var PaymentMethod = forwardRef5(({ children, className, portal, ...rest }, ref) => {
9701
10491
  const props = resolveDesignProps5(rest);
9702
- const { data, settings, stripe, layout, setLayout } = useEmbed();
10492
+ const { data, settings, stripe, layout } = useEmbed();
9703
10493
  const paymentMethod = useMemo6(() => {
9704
10494
  const { cardLast4, cardExpMonth, cardExpYear } = data.subscription?.paymentMethod || {};
9705
10495
  let monthsToExpiration;
@@ -9749,7 +10539,7 @@ var PaymentMethod = forwardRef5(({ children, className, portal, ...rest }, ref)
9749
10539
  ]
9750
10540
  }
9751
10541
  ),
9752
- paymentMethod.cardLast4 && /* @__PURE__ */ jsxs7(
10542
+ paymentMethod.cardLast4 && /* @__PURE__ */ jsx12(
9753
10543
  Flex,
9754
10544
  {
9755
10545
  $justifyContent: "space-between",
@@ -9758,28 +10548,10 @@ var PaymentMethod = forwardRef5(({ children, className, portal, ...rest }, ref)
9758
10548
  $background: `${hexToHSL(settings.theme.card.background).l > 50 ? darken(settings.theme.card.background, 10) : lighten(settings.theme.card.background, 20)}`,
9759
10549
  $padding: "0.375rem 1rem",
9760
10550
  $borderRadius: "9999px",
9761
- children: [
9762
- /* @__PURE__ */ jsxs7(Text, { $font: settings.theme.typography.text.fontFamily, $size: 14, children: [
9763
- "\u{1F4B3} Card ending in ",
9764
- paymentMethod.cardLast4
9765
- ] }),
9766
- props.functions.allowEdit && /* @__PURE__ */ jsx12(
9767
- Text,
9768
- {
9769
- tabIndex: 0,
9770
- onClick: () => {
9771
- if (layout !== "payment")
9772
- return;
9773
- setLayout("payment");
9774
- },
9775
- $font: settings.theme.typography.link.fontFamily,
9776
- $size: settings.theme.typography.link.fontSize,
9777
- $weight: settings.theme.typography.link.fontWeight,
9778
- $color: settings.theme.typography.link.color,
9779
- children: "Edit"
9780
- }
9781
- )
9782
- ]
10551
+ children: /* @__PURE__ */ jsxs7(Text, { $font: settings.theme.typography.text.fontFamily, $size: 14, children: [
10552
+ "\u{1F4B3} Card ending in ",
10553
+ paymentMethod.cardLast4
10554
+ ] })
9783
10555
  }
9784
10556
  ),
9785
10557
  layout === "payment" && createPortal2(
@@ -10303,7 +11075,7 @@ function createRenderer(options) {
10303
11075
  component,
10304
11076
  {
10305
11077
  className,
10306
- ...component !== "div" && { resolvedProps },
11078
+ ...component !== "div" && { ...resolvedProps },
10307
11079
  ...component !== "div" && Object.keys(custom).length > 0 && { custom },
10308
11080
  key: index
10309
11081
  },