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

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.
@@ -67,6 +67,728 @@ var require_shallowequal = __commonJS({
67
67
  }
68
68
  });
69
69
 
70
+ // node_modules/lodash.merge/index.js
71
+ var require_lodash = __commonJS({
72
+ "node_modules/lodash.merge/index.js"(exports, module2) {
73
+ var LARGE_ARRAY_SIZE = 200;
74
+ var HASH_UNDEFINED = "__lodash_hash_undefined__";
75
+ var HOT_COUNT = 800;
76
+ var HOT_SPAN = 16;
77
+ var MAX_SAFE_INTEGER = 9007199254740991;
78
+ var argsTag = "[object Arguments]";
79
+ var arrayTag = "[object Array]";
80
+ var asyncTag = "[object AsyncFunction]";
81
+ var boolTag = "[object Boolean]";
82
+ var dateTag = "[object Date]";
83
+ var errorTag = "[object Error]";
84
+ var funcTag = "[object Function]";
85
+ var genTag = "[object GeneratorFunction]";
86
+ var mapTag = "[object Map]";
87
+ var numberTag = "[object Number]";
88
+ var nullTag = "[object Null]";
89
+ var objectTag = "[object Object]";
90
+ var proxyTag = "[object Proxy]";
91
+ var regexpTag = "[object RegExp]";
92
+ var setTag = "[object Set]";
93
+ var stringTag = "[object String]";
94
+ var undefinedTag = "[object Undefined]";
95
+ var weakMapTag = "[object WeakMap]";
96
+ var arrayBufferTag = "[object ArrayBuffer]";
97
+ var dataViewTag = "[object DataView]";
98
+ var float32Tag = "[object Float32Array]";
99
+ var float64Tag = "[object Float64Array]";
100
+ var int8Tag = "[object Int8Array]";
101
+ var int16Tag = "[object Int16Array]";
102
+ var int32Tag = "[object Int32Array]";
103
+ var uint8Tag = "[object Uint8Array]";
104
+ var uint8ClampedTag = "[object Uint8ClampedArray]";
105
+ var uint16Tag = "[object Uint16Array]";
106
+ var uint32Tag = "[object Uint32Array]";
107
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
108
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
109
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
110
+ var typedArrayTags = {};
111
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
112
+ 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;
113
+ var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
114
+ var freeSelf = typeof self == "object" && self && self.Object === Object && self;
115
+ var root = freeGlobal || freeSelf || Function("return this")();
116
+ var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
117
+ var freeModule = freeExports && typeof module2 == "object" && module2 && !module2.nodeType && module2;
118
+ var moduleExports = freeModule && freeModule.exports === freeExports;
119
+ var freeProcess = moduleExports && freeGlobal.process;
120
+ var nodeUtil = function() {
121
+ try {
122
+ var types = freeModule && freeModule.require && freeModule.require("util").types;
123
+ if (types) {
124
+ return types;
125
+ }
126
+ return freeProcess && freeProcess.binding && freeProcess.binding("util");
127
+ } catch (e) {
128
+ }
129
+ }();
130
+ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
131
+ function apply(func, thisArg, args) {
132
+ switch (args.length) {
133
+ case 0:
134
+ return func.call(thisArg);
135
+ case 1:
136
+ return func.call(thisArg, args[0]);
137
+ case 2:
138
+ return func.call(thisArg, args[0], args[1]);
139
+ case 3:
140
+ return func.call(thisArg, args[0], args[1], args[2]);
141
+ }
142
+ return func.apply(thisArg, args);
143
+ }
144
+ function baseTimes(n, iteratee) {
145
+ var index = -1, result = Array(n);
146
+ while (++index < n) {
147
+ result[index] = iteratee(index);
148
+ }
149
+ return result;
150
+ }
151
+ function baseUnary(func) {
152
+ return function(value) {
153
+ return func(value);
154
+ };
155
+ }
156
+ function getValue(object, key) {
157
+ return object == null ? void 0 : object[key];
158
+ }
159
+ function overArg(func, transform) {
160
+ return function(arg) {
161
+ return func(transform(arg));
162
+ };
163
+ }
164
+ var arrayProto = Array.prototype;
165
+ var funcProto = Function.prototype;
166
+ var objectProto = Object.prototype;
167
+ var coreJsData = root["__core-js_shared__"];
168
+ var funcToString = funcProto.toString;
169
+ var hasOwnProperty = objectProto.hasOwnProperty;
170
+ var maskSrcKey = function() {
171
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
172
+ return uid ? "Symbol(src)_1." + uid : "";
173
+ }();
174
+ var nativeObjectToString = objectProto.toString;
175
+ var objectCtorString = funcToString.call(Object);
176
+ var reIsNative = RegExp(
177
+ "^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
178
+ );
179
+ var Buffer2 = moduleExports ? root.Buffer : void 0;
180
+ var Symbol2 = root.Symbol;
181
+ var Uint8Array2 = root.Uint8Array;
182
+ var allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0;
183
+ var getPrototype = overArg(Object.getPrototypeOf, Object);
184
+ var objectCreate = Object.create;
185
+ var propertyIsEnumerable = objectProto.propertyIsEnumerable;
186
+ var splice = arrayProto.splice;
187
+ var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0;
188
+ var defineProperty = function() {
189
+ try {
190
+ var func = getNative(Object, "defineProperty");
191
+ func({}, "", {});
192
+ return func;
193
+ } catch (e) {
194
+ }
195
+ }();
196
+ var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;
197
+ var nativeMax = Math.max;
198
+ var nativeNow = Date.now;
199
+ var Map2 = getNative(root, "Map");
200
+ var nativeCreate = getNative(Object, "create");
201
+ var baseCreate = /* @__PURE__ */ function() {
202
+ function object() {
203
+ }
204
+ return function(proto) {
205
+ if (!isObject(proto)) {
206
+ return {};
207
+ }
208
+ if (objectCreate) {
209
+ return objectCreate(proto);
210
+ }
211
+ object.prototype = proto;
212
+ var result = new object();
213
+ object.prototype = void 0;
214
+ return result;
215
+ };
216
+ }();
217
+ function Hash(entries) {
218
+ var index = -1, length2 = entries == null ? 0 : entries.length;
219
+ this.clear();
220
+ while (++index < length2) {
221
+ var entry = entries[index];
222
+ this.set(entry[0], entry[1]);
223
+ }
224
+ }
225
+ function hashClear() {
226
+ this.__data__ = nativeCreate ? nativeCreate(null) : {};
227
+ this.size = 0;
228
+ }
229
+ function hashDelete(key) {
230
+ var result = this.has(key) && delete this.__data__[key];
231
+ this.size -= result ? 1 : 0;
232
+ return result;
233
+ }
234
+ function hashGet(key) {
235
+ var data = this.__data__;
236
+ if (nativeCreate) {
237
+ var result = data[key];
238
+ return result === HASH_UNDEFINED ? void 0 : result;
239
+ }
240
+ return hasOwnProperty.call(data, key) ? data[key] : void 0;
241
+ }
242
+ function hashHas(key) {
243
+ var data = this.__data__;
244
+ return nativeCreate ? data[key] !== void 0 : hasOwnProperty.call(data, key);
245
+ }
246
+ function hashSet(key, value) {
247
+ var data = this.__data__;
248
+ this.size += this.has(key) ? 0 : 1;
249
+ data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value;
250
+ return this;
251
+ }
252
+ Hash.prototype.clear = hashClear;
253
+ Hash.prototype["delete"] = hashDelete;
254
+ Hash.prototype.get = hashGet;
255
+ Hash.prototype.has = hashHas;
256
+ Hash.prototype.set = hashSet;
257
+ function ListCache(entries) {
258
+ var index = -1, length2 = entries == null ? 0 : entries.length;
259
+ this.clear();
260
+ while (++index < length2) {
261
+ var entry = entries[index];
262
+ this.set(entry[0], entry[1]);
263
+ }
264
+ }
265
+ function listCacheClear() {
266
+ this.__data__ = [];
267
+ this.size = 0;
268
+ }
269
+ function listCacheDelete(key) {
270
+ var data = this.__data__, index = assocIndexOf(data, key);
271
+ if (index < 0) {
272
+ return false;
273
+ }
274
+ var lastIndex = data.length - 1;
275
+ if (index == lastIndex) {
276
+ data.pop();
277
+ } else {
278
+ splice.call(data, index, 1);
279
+ }
280
+ --this.size;
281
+ return true;
282
+ }
283
+ function listCacheGet(key) {
284
+ var data = this.__data__, index = assocIndexOf(data, key);
285
+ return index < 0 ? void 0 : data[index][1];
286
+ }
287
+ function listCacheHas(key) {
288
+ return assocIndexOf(this.__data__, key) > -1;
289
+ }
290
+ function listCacheSet(key, value) {
291
+ var data = this.__data__, index = assocIndexOf(data, key);
292
+ if (index < 0) {
293
+ ++this.size;
294
+ data.push([key, value]);
295
+ } else {
296
+ data[index][1] = value;
297
+ }
298
+ return this;
299
+ }
300
+ ListCache.prototype.clear = listCacheClear;
301
+ ListCache.prototype["delete"] = listCacheDelete;
302
+ ListCache.prototype.get = listCacheGet;
303
+ ListCache.prototype.has = listCacheHas;
304
+ ListCache.prototype.set = listCacheSet;
305
+ function MapCache(entries) {
306
+ var index = -1, length2 = entries == null ? 0 : entries.length;
307
+ this.clear();
308
+ while (++index < length2) {
309
+ var entry = entries[index];
310
+ this.set(entry[0], entry[1]);
311
+ }
312
+ }
313
+ function mapCacheClear() {
314
+ this.size = 0;
315
+ this.__data__ = {
316
+ "hash": new Hash(),
317
+ "map": new (Map2 || ListCache)(),
318
+ "string": new Hash()
319
+ };
320
+ }
321
+ function mapCacheDelete(key) {
322
+ var result = getMapData(this, key)["delete"](key);
323
+ this.size -= result ? 1 : 0;
324
+ return result;
325
+ }
326
+ function mapCacheGet(key) {
327
+ return getMapData(this, key).get(key);
328
+ }
329
+ function mapCacheHas(key) {
330
+ return getMapData(this, key).has(key);
331
+ }
332
+ function mapCacheSet(key, value) {
333
+ var data = getMapData(this, key), size = data.size;
334
+ data.set(key, value);
335
+ this.size += data.size == size ? 0 : 1;
336
+ return this;
337
+ }
338
+ MapCache.prototype.clear = mapCacheClear;
339
+ MapCache.prototype["delete"] = mapCacheDelete;
340
+ MapCache.prototype.get = mapCacheGet;
341
+ MapCache.prototype.has = mapCacheHas;
342
+ MapCache.prototype.set = mapCacheSet;
343
+ function Stack(entries) {
344
+ var data = this.__data__ = new ListCache(entries);
345
+ this.size = data.size;
346
+ }
347
+ function stackClear() {
348
+ this.__data__ = new ListCache();
349
+ this.size = 0;
350
+ }
351
+ function stackDelete(key) {
352
+ var data = this.__data__, result = data["delete"](key);
353
+ this.size = data.size;
354
+ return result;
355
+ }
356
+ function stackGet(key) {
357
+ return this.__data__.get(key);
358
+ }
359
+ function stackHas(key) {
360
+ return this.__data__.has(key);
361
+ }
362
+ function stackSet(key, value) {
363
+ var data = this.__data__;
364
+ if (data instanceof ListCache) {
365
+ var pairs = data.__data__;
366
+ if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
367
+ pairs.push([key, value]);
368
+ this.size = ++data.size;
369
+ return this;
370
+ }
371
+ data = this.__data__ = new MapCache(pairs);
372
+ }
373
+ data.set(key, value);
374
+ this.size = data.size;
375
+ return this;
376
+ }
377
+ Stack.prototype.clear = stackClear;
378
+ Stack.prototype["delete"] = stackDelete;
379
+ Stack.prototype.get = stackGet;
380
+ Stack.prototype.has = stackHas;
381
+ Stack.prototype.set = stackSet;
382
+ function arrayLikeKeys(value, inherited) {
383
+ 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;
384
+ for (var key in value) {
385
+ if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
386
+ (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
387
+ isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
388
+ isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
389
+ isIndex(key, length2)))) {
390
+ result.push(key);
391
+ }
392
+ }
393
+ return result;
394
+ }
395
+ function assignMergeValue(object, key, value) {
396
+ if (value !== void 0 && !eq(object[key], value) || value === void 0 && !(key in object)) {
397
+ baseAssignValue(object, key, value);
398
+ }
399
+ }
400
+ function assignValue(object, key, value) {
401
+ var objValue = object[key];
402
+ if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === void 0 && !(key in object)) {
403
+ baseAssignValue(object, key, value);
404
+ }
405
+ }
406
+ function assocIndexOf(array, key) {
407
+ var length2 = array.length;
408
+ while (length2--) {
409
+ if (eq(array[length2][0], key)) {
410
+ return length2;
411
+ }
412
+ }
413
+ return -1;
414
+ }
415
+ function baseAssignValue(object, key, value) {
416
+ if (key == "__proto__" && defineProperty) {
417
+ defineProperty(object, key, {
418
+ "configurable": true,
419
+ "enumerable": true,
420
+ "value": value,
421
+ "writable": true
422
+ });
423
+ } else {
424
+ object[key] = value;
425
+ }
426
+ }
427
+ var baseFor = createBaseFor();
428
+ function baseGetTag(value) {
429
+ if (value == null) {
430
+ return value === void 0 ? undefinedTag : nullTag;
431
+ }
432
+ return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
433
+ }
434
+ function baseIsArguments(value) {
435
+ return isObjectLike(value) && baseGetTag(value) == argsTag;
436
+ }
437
+ function baseIsNative(value) {
438
+ if (!isObject(value) || isMasked(value)) {
439
+ return false;
440
+ }
441
+ var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
442
+ return pattern.test(toSource(value));
443
+ }
444
+ function baseIsTypedArray(value) {
445
+ return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
446
+ }
447
+ function baseKeysIn(object) {
448
+ if (!isObject(object)) {
449
+ return nativeKeysIn(object);
450
+ }
451
+ var isProto = isPrototype(object), result = [];
452
+ for (var key in object) {
453
+ if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) {
454
+ result.push(key);
455
+ }
456
+ }
457
+ return result;
458
+ }
459
+ function baseMerge(object, source, srcIndex, customizer, stack) {
460
+ if (object === source) {
461
+ return;
462
+ }
463
+ baseFor(source, function(srcValue, key) {
464
+ stack || (stack = new Stack());
465
+ if (isObject(srcValue)) {
466
+ baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
467
+ } else {
468
+ var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : void 0;
469
+ if (newValue === void 0) {
470
+ newValue = srcValue;
471
+ }
472
+ assignMergeValue(object, key, newValue);
473
+ }
474
+ }, keysIn);
475
+ }
476
+ function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
477
+ var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue);
478
+ if (stacked) {
479
+ assignMergeValue(object, key, stacked);
480
+ return;
481
+ }
482
+ var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : void 0;
483
+ var isCommon = newValue === void 0;
484
+ if (isCommon) {
485
+ var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);
486
+ newValue = srcValue;
487
+ if (isArr || isBuff || isTyped) {
488
+ if (isArray(objValue)) {
489
+ newValue = objValue;
490
+ } else if (isArrayLikeObject(objValue)) {
491
+ newValue = copyArray(objValue);
492
+ } else if (isBuff) {
493
+ isCommon = false;
494
+ newValue = cloneBuffer(srcValue, true);
495
+ } else if (isTyped) {
496
+ isCommon = false;
497
+ newValue = cloneTypedArray(srcValue, true);
498
+ } else {
499
+ newValue = [];
500
+ }
501
+ } else if (isPlainObject(srcValue) || isArguments(srcValue)) {
502
+ newValue = objValue;
503
+ if (isArguments(objValue)) {
504
+ newValue = toPlainObject(objValue);
505
+ } else if (!isObject(objValue) || isFunction(objValue)) {
506
+ newValue = initCloneObject(srcValue);
507
+ }
508
+ } else {
509
+ isCommon = false;
510
+ }
511
+ }
512
+ if (isCommon) {
513
+ stack.set(srcValue, newValue);
514
+ mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
515
+ stack["delete"](srcValue);
516
+ }
517
+ assignMergeValue(object, key, newValue);
518
+ }
519
+ function baseRest(func, start) {
520
+ return setToString(overRest(func, start, identity), func + "");
521
+ }
522
+ var baseSetToString = !defineProperty ? identity : function(func, string) {
523
+ return defineProperty(func, "toString", {
524
+ "configurable": true,
525
+ "enumerable": false,
526
+ "value": constant(string),
527
+ "writable": true
528
+ });
529
+ };
530
+ function cloneBuffer(buffer, isDeep) {
531
+ if (isDeep) {
532
+ return buffer.slice();
533
+ }
534
+ var length2 = buffer.length, result = allocUnsafe ? allocUnsafe(length2) : new buffer.constructor(length2);
535
+ buffer.copy(result);
536
+ return result;
537
+ }
538
+ function cloneArrayBuffer(arrayBuffer) {
539
+ var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
540
+ new Uint8Array2(result).set(new Uint8Array2(arrayBuffer));
541
+ return result;
542
+ }
543
+ function cloneTypedArray(typedArray, isDeep) {
544
+ var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
545
+ return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
546
+ }
547
+ function copyArray(source, array) {
548
+ var index = -1, length2 = source.length;
549
+ array || (array = Array(length2));
550
+ while (++index < length2) {
551
+ array[index] = source[index];
552
+ }
553
+ return array;
554
+ }
555
+ function copyObject(source, props, object, customizer) {
556
+ var isNew = !object;
557
+ object || (object = {});
558
+ var index = -1, length2 = props.length;
559
+ while (++index < length2) {
560
+ var key = props[index];
561
+ var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;
562
+ if (newValue === void 0) {
563
+ newValue = source[key];
564
+ }
565
+ if (isNew) {
566
+ baseAssignValue(object, key, newValue);
567
+ } else {
568
+ assignValue(object, key, newValue);
569
+ }
570
+ }
571
+ return object;
572
+ }
573
+ function createAssigner(assigner) {
574
+ return baseRest(function(object, sources) {
575
+ var index = -1, length2 = sources.length, customizer = length2 > 1 ? sources[length2 - 1] : void 0, guard = length2 > 2 ? sources[2] : void 0;
576
+ customizer = assigner.length > 3 && typeof customizer == "function" ? (length2--, customizer) : void 0;
577
+ if (guard && isIterateeCall(sources[0], sources[1], guard)) {
578
+ customizer = length2 < 3 ? void 0 : customizer;
579
+ length2 = 1;
580
+ }
581
+ object = Object(object);
582
+ while (++index < length2) {
583
+ var source = sources[index];
584
+ if (source) {
585
+ assigner(object, source, index, customizer);
586
+ }
587
+ }
588
+ return object;
589
+ });
590
+ }
591
+ function createBaseFor(fromRight) {
592
+ return function(object, iteratee, keysFunc) {
593
+ var index = -1, iterable = Object(object), props = keysFunc(object), length2 = props.length;
594
+ while (length2--) {
595
+ var key = props[fromRight ? length2 : ++index];
596
+ if (iteratee(iterable[key], key, iterable) === false) {
597
+ break;
598
+ }
599
+ }
600
+ return object;
601
+ };
602
+ }
603
+ function getMapData(map, key) {
604
+ var data = map.__data__;
605
+ return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
606
+ }
607
+ function getNative(object, key) {
608
+ var value = getValue(object, key);
609
+ return baseIsNative(value) ? value : void 0;
610
+ }
611
+ function getRawTag(value) {
612
+ var isOwn = hasOwnProperty.call(value, symToStringTag), tag = value[symToStringTag];
613
+ try {
614
+ value[symToStringTag] = void 0;
615
+ var unmasked = true;
616
+ } catch (e) {
617
+ }
618
+ var result = nativeObjectToString.call(value);
619
+ if (unmasked) {
620
+ if (isOwn) {
621
+ value[symToStringTag] = tag;
622
+ } else {
623
+ delete value[symToStringTag];
624
+ }
625
+ }
626
+ return result;
627
+ }
628
+ function initCloneObject(object) {
629
+ return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};
630
+ }
631
+ function isIndex(value, length2) {
632
+ var type = typeof value;
633
+ length2 = length2 == null ? MAX_SAFE_INTEGER : length2;
634
+ return !!length2 && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length2);
635
+ }
636
+ function isIterateeCall(value, index, object) {
637
+ if (!isObject(object)) {
638
+ return false;
639
+ }
640
+ var type = typeof index;
641
+ if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) {
642
+ return eq(object[index], value);
643
+ }
644
+ return false;
645
+ }
646
+ function isKeyable(value) {
647
+ var type = typeof value;
648
+ return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
649
+ }
650
+ function isMasked(func) {
651
+ return !!maskSrcKey && maskSrcKey in func;
652
+ }
653
+ function isPrototype(value) {
654
+ var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
655
+ return value === proto;
656
+ }
657
+ function nativeKeysIn(object) {
658
+ var result = [];
659
+ if (object != null) {
660
+ for (var key in Object(object)) {
661
+ result.push(key);
662
+ }
663
+ }
664
+ return result;
665
+ }
666
+ function objectToString(value) {
667
+ return nativeObjectToString.call(value);
668
+ }
669
+ function overRest(func, start, transform) {
670
+ start = nativeMax(start === void 0 ? func.length - 1 : start, 0);
671
+ return function() {
672
+ var args = arguments, index = -1, length2 = nativeMax(args.length - start, 0), array = Array(length2);
673
+ while (++index < length2) {
674
+ array[index] = args[start + index];
675
+ }
676
+ index = -1;
677
+ var otherArgs = Array(start + 1);
678
+ while (++index < start) {
679
+ otherArgs[index] = args[index];
680
+ }
681
+ otherArgs[start] = transform(array);
682
+ return apply(func, this, otherArgs);
683
+ };
684
+ }
685
+ function safeGet(object, key) {
686
+ if (key === "constructor" && typeof object[key] === "function") {
687
+ return;
688
+ }
689
+ if (key == "__proto__") {
690
+ return;
691
+ }
692
+ return object[key];
693
+ }
694
+ var setToString = shortOut(baseSetToString);
695
+ function shortOut(func) {
696
+ var count = 0, lastCalled = 0;
697
+ return function() {
698
+ var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
699
+ lastCalled = stamp;
700
+ if (remaining > 0) {
701
+ if (++count >= HOT_COUNT) {
702
+ return arguments[0];
703
+ }
704
+ } else {
705
+ count = 0;
706
+ }
707
+ return func.apply(void 0, arguments);
708
+ };
709
+ }
710
+ function toSource(func) {
711
+ if (func != null) {
712
+ try {
713
+ return funcToString.call(func);
714
+ } catch (e) {
715
+ }
716
+ try {
717
+ return func + "";
718
+ } catch (e) {
719
+ }
720
+ }
721
+ return "";
722
+ }
723
+ function eq(value, other) {
724
+ return value === other || value !== value && other !== other;
725
+ }
726
+ var isArguments = baseIsArguments(/* @__PURE__ */ function() {
727
+ return arguments;
728
+ }()) ? baseIsArguments : function(value) {
729
+ return isObjectLike(value) && hasOwnProperty.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
730
+ };
731
+ var isArray = Array.isArray;
732
+ function isArrayLike(value) {
733
+ return value != null && isLength(value.length) && !isFunction(value);
734
+ }
735
+ function isArrayLikeObject(value) {
736
+ return isObjectLike(value) && isArrayLike(value);
737
+ }
738
+ var isBuffer = nativeIsBuffer || stubFalse;
739
+ function isFunction(value) {
740
+ if (!isObject(value)) {
741
+ return false;
742
+ }
743
+ var tag = baseGetTag(value);
744
+ return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
745
+ }
746
+ function isLength(value) {
747
+ return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
748
+ }
749
+ function isObject(value) {
750
+ var type = typeof value;
751
+ return value != null && (type == "object" || type == "function");
752
+ }
753
+ function isObjectLike(value) {
754
+ return value != null && typeof value == "object";
755
+ }
756
+ function isPlainObject(value) {
757
+ if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
758
+ return false;
759
+ }
760
+ var proto = getPrototype(value);
761
+ if (proto === null) {
762
+ return true;
763
+ }
764
+ var Ctor = hasOwnProperty.call(proto, "constructor") && proto.constructor;
765
+ return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
766
+ }
767
+ var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
768
+ function toPlainObject(value) {
769
+ return copyObject(value, keysIn(value));
770
+ }
771
+ function keysIn(object) {
772
+ return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
773
+ }
774
+ var merge2 = createAssigner(function(object, source, srcIndex) {
775
+ baseMerge(object, source, srcIndex);
776
+ });
777
+ function constant(value) {
778
+ return function() {
779
+ return value;
780
+ };
781
+ }
782
+ function identity(value) {
783
+ return value;
784
+ }
785
+ function stubFalse() {
786
+ return false;
787
+ }
788
+ module2.exports = merge2;
789
+ }
790
+ });
791
+
70
792
  // node_modules/classnames/index.js
71
793
  var require_classnames = __commonJS({
72
794
  "node_modules/classnames/index.js"(exports, module2) {
@@ -5658,6 +6380,9 @@ var vt = function() {
5658
6380
  var St = "__sc-".concat(f, "__");
5659
6381
  "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);
5660
6382
 
6383
+ // src/context/embed.tsx
6384
+ var import_lodash = __toESM(require_lodash());
6385
+
5661
6386
  // node_modules/@stripe/stripe-js/dist/index.mjs
5662
6387
  var V3_URL = "https://js.stripe.com/v3";
5663
6388
  var V3_URL_REGEX = /^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/;
@@ -6728,7 +7453,8 @@ function ComponentHydrateResponseDataFromJSONTyped(json, ignoreDiscriminator) {
6728
7453
  component: json["component"] == null ? void 0 : ComponentResponseDataFromJSON(json["component"]),
6729
7454
  featureUsage: json["feature_usage"] == null ? void 0 : FeatureUsageDetailResponseDataFromJSON(json["feature_usage"]),
6730
7455
  stripeEmbed: json["stripe_embed"] == null ? void 0 : StripeEmbedInfoFromJSON(json["stripe_embed"]),
6731
- subscription: json["subscription"] == null ? void 0 : CompanySubscriptionResponseDataFromJSON(json["subscription"])
7456
+ subscription: json["subscription"] == null ? void 0 : CompanySubscriptionResponseDataFromJSON(json["subscription"]),
7457
+ upcomingInvoice: json["upcoming_invoice"] == null ? void 0 : InvoiceResponseDataFromJSON(json["upcoming_invoice"])
6732
7458
  };
6733
7459
  }
6734
7460
 
@@ -6929,11 +7655,9 @@ function parseEditorState(data) {
6929
7655
  });
6930
7656
  return arr;
6931
7657
  }
6932
- async function fetchComponent(id, accessToken, options) {
7658
+ async function fetchComponent(id, api) {
6933
7659
  const settings = { ...defaultSettings };
6934
7660
  const nodes = [];
6935
- const config = new Configuration({ ...options, apiKey: accessToken });
6936
- const api = new CheckoutApi(config);
6937
7661
  const response = await api.hydrateComponent({ componentId: id });
6938
7662
  const { data } = response;
6939
7663
  if (data.component?.ast) {
@@ -6959,7 +7683,10 @@ async function fetchComponent(id, accessToken, options) {
6959
7683
  };
6960
7684
  }
6961
7685
  var EmbedContext = (0, import_react2.createContext)({
6962
- data: {},
7686
+ api: null,
7687
+ data: {
7688
+ activePlans: []
7689
+ },
6963
7690
  nodes: [],
6964
7691
  settings: { ...defaultSettings },
6965
7692
  stripe: null,
@@ -6983,7 +7710,10 @@ var EmbedProvider = ({
6983
7710
  const styleRef = (0, import_react2.useRef)(null);
6984
7711
  const [state, setState] = (0, import_react2.useState)(() => {
6985
7712
  return {
6986
- data: {},
7713
+ api: null,
7714
+ data: {
7715
+ activePlans: []
7716
+ },
6987
7717
  nodes: [],
6988
7718
  settings: { ...defaultSettings },
6989
7719
  stripe: null,
@@ -7011,13 +7741,21 @@ var EmbedProvider = ({
7011
7741
  styleRef.current = style;
7012
7742
  }, []);
7013
7743
  (0, import_react2.useEffect)(() => {
7014
- if (!id || !accessToken) {
7744
+ if (!accessToken) {
7015
7745
  return;
7016
7746
  }
7017
- fetchComponent(id, accessToken, apiConfig).then(async (resolvedData) => {
7747
+ const config = new Configuration({ ...apiConfig, apiKey: accessToken });
7748
+ const api = new CheckoutApi(config);
7749
+ setState((prev2) => ({ ...prev2, api }));
7750
+ }, [accessToken, apiConfig]);
7751
+ (0, import_react2.useEffect)(() => {
7752
+ if (!id || !state.api) {
7753
+ return;
7754
+ }
7755
+ fetchComponent(id, state.api).then(async (resolvedData) => {
7018
7756
  setState((prev2) => ({ ...prev2, ...resolvedData }));
7019
7757
  }).catch((error) => setState((prev2) => ({ ...prev2, error })));
7020
- }, [id, accessToken, apiConfig]);
7758
+ }, [id, state.api]);
7021
7759
  (0, import_react2.useEffect)(() => {
7022
7760
  const fontSet = /* @__PURE__ */ new Set([]);
7023
7761
  Object.values(state.settings.theme.typography).forEach(({ fontFamily }) => {
@@ -7032,19 +7770,21 @@ var EmbedProvider = ({
7032
7770
  }, [state.settings.theme.typography]);
7033
7771
  const setData = (0, import_react2.useCallback)(
7034
7772
  (data) => {
7035
- setState((prev2) => ({
7036
- ...prev2,
7037
- data: Object.assign({}, data)
7038
- }));
7773
+ setState((prev2) => {
7774
+ const updated = { ...prev2 };
7775
+ (0, import_lodash.default)(updated.data, data);
7776
+ return updated;
7777
+ });
7039
7778
  },
7040
7779
  [setState]
7041
7780
  );
7042
7781
  const updateSettings = (0, import_react2.useCallback)(
7043
7782
  (settings) => {
7044
- setState((prev2) => ({
7045
- ...prev2,
7046
- settings: Object.assign({}, prev2.settings, settings)
7047
- }));
7783
+ setState((prev2) => {
7784
+ const updated = { ...prev2 };
7785
+ (0, import_lodash.default)(updated.settings, settings);
7786
+ return updated;
7787
+ });
7048
7788
  },
7049
7789
  [setState]
7050
7790
  );
@@ -7097,9 +7837,9 @@ var EmbedProvider = ({
7097
7837
  }
7098
7838
  }
7099
7839
  },
7100
- ...state.data.stripeEmbed?.customerEkey && {
7840
+ ...state.data.stripeEmbed?.customerEkey ? {
7101
7841
  clientSecret: state.data.stripeEmbed.customerEkey
7102
- }
7842
+ } : { mode: "payment", currency: "usd", amount: 999999 }
7103
7843
  },
7104
7844
  children
7105
7845
  }
@@ -7111,6 +7851,7 @@ var EmbedProvider = ({
7111
7851
  EmbedContext.Provider,
7112
7852
  {
7113
7853
  value: {
7854
+ api: state.api,
7114
7855
  data: state.data,
7115
7856
  nodes: state.nodes,
7116
7857
  settings: state.settings,
@@ -7157,11 +7898,11 @@ var require_browser_polyfill = __commonJS2({
7157
7898
  "node_modules/cross-fetch/dist/browser-polyfill.js"(exports) {
7158
7899
  (function(self2) {
7159
7900
  var irrelevant = function(exports2) {
7160
- var global = typeof globalThis !== "undefined" && globalThis || typeof self2 !== "undefined" && self2 || typeof global !== "undefined" && global;
7901
+ var global2 = typeof globalThis !== "undefined" && globalThis || typeof self2 !== "undefined" && self2 || typeof global2 !== "undefined" && global2;
7161
7902
  var support = {
7162
- searchParams: "URLSearchParams" in global,
7163
- iterable: "Symbol" in global && "iterator" in Symbol,
7164
- blob: "FileReader" in global && "Blob" in global && function() {
7903
+ searchParams: "URLSearchParams" in global2,
7904
+ iterable: "Symbol" in global2 && "iterator" in Symbol,
7905
+ blob: "FileReader" in global2 && "Blob" in global2 && function() {
7165
7906
  try {
7166
7907
  new Blob();
7167
7908
  return true;
@@ -7169,8 +7910,8 @@ var require_browser_polyfill = __commonJS2({
7169
7910
  return false;
7170
7911
  }
7171
7912
  }(),
7172
- formData: "FormData" in global,
7173
- arrayBuffer: "ArrayBuffer" in global
7913
+ formData: "FormData" in global2,
7914
+ arrayBuffer: "ArrayBuffer" in global2
7174
7915
  };
7175
7916
  function isDataView(obj) {
7176
7917
  return obj && DataView.prototype.isPrototypeOf(obj);
@@ -7547,7 +8288,7 @@ var require_browser_polyfill = __commonJS2({
7547
8288
  }
7548
8289
  return new Response(null, { status, headers: { location: url } });
7549
8290
  };
7550
- exports2.DOMException = global.DOMException;
8291
+ exports2.DOMException = global2.DOMException;
7551
8292
  try {
7552
8293
  new exports2.DOMException();
7553
8294
  } catch (err2) {
@@ -7599,7 +8340,7 @@ var require_browser_polyfill = __commonJS2({
7599
8340
  };
7600
8341
  function fixUrl(url) {
7601
8342
  try {
7602
- return url === "" && global.location.href ? global.location.href : url;
8343
+ return url === "" && global2.location.href ? global2.location.href : url;
7603
8344
  } catch (e) {
7604
8345
  return url;
7605
8346
  }
@@ -7638,11 +8379,11 @@ var require_browser_polyfill = __commonJS2({
7638
8379
  });
7639
8380
  }
7640
8381
  fetch2.polyfill = true;
7641
- if (!global.fetch) {
7642
- global.fetch = fetch2;
7643
- global.Headers = Headers;
7644
- global.Request = Request;
7645
- global.Response = Response;
8382
+ if (!global2.fetch) {
8383
+ global2.fetch = fetch2;
8384
+ global2.Headers = Headers;
8385
+ global2.Request = Request;
8386
+ global2.Response = Response;
7646
8387
  }
7647
8388
  exports2.Headers = Headers;
7648
8389
  exports2.Request = Request;
@@ -8477,15 +9218,96 @@ var ProgressBar = ({
8477
9218
  var import_react6 = require("react");
8478
9219
  var import_react_stripe_js2 = require("@stripe/react-stripe-js");
8479
9220
  var import_react_stripe_js3 = require("@stripe/react-stripe-js");
9221
+
9222
+ // src/components/elements/plan-manager/styles.ts
9223
+ var StyledButton = dt(Button2)`
9224
+ font-family: "Public Sans", sans-serif;
9225
+ font-weight: 500;
9226
+ text-align: center;
9227
+ width: 100%;
9228
+ ${({ disabled, $color = "primary", theme }) => {
9229
+ const { l: l2 } = hexToHSL(theme[$color]);
9230
+ const textColor = disabled ? "#989898" : l2 > 50 ? "#000000" : "#FFFFFF";
9231
+ return lt`
9232
+ color: ${textColor};
9233
+
9234
+ ${Text} {
9235
+ color: ${textColor};
9236
+ }
9237
+ `;
9238
+ }};
9239
+
9240
+ ${({ disabled, $color = "primary", theme, $variant = "filled" }) => {
9241
+ const color = disabled ? "#EEEEEE" : theme[$color];
9242
+ return $variant === "filled" ? lt`
9243
+ background-color: ${color};
9244
+ border-color: ${color};
9245
+ ` : lt`
9246
+ background-color: transparent;
9247
+ border-color: #d2d2d2;
9248
+ color: #194bfb;
9249
+ ${Text} {
9250
+ color: #194bfb;
9251
+ }
9252
+ `;
9253
+ }}
9254
+
9255
+ &:hover {
9256
+ ${({ disabled }) => disabled && "cursor: not-allowed;"}
9257
+ ${({ disabled, $color = "primary", theme, $variant = "filled" }) => {
9258
+ const specified = theme[$color];
9259
+ const lightened = lighten(specified, 15);
9260
+ const color = disabled ? "#EEEEEE" : specified === lightened ? darken(specified, 15) : lightened;
9261
+ return $variant === "filled" ? lt`
9262
+ background-color: ${color};
9263
+ border-color: ${color};
9264
+ ` : lt`
9265
+ background-color: ${color};
9266
+ border-color: ${color};
9267
+ color: #ffffff;
9268
+ ${Text} {
9269
+ color: #ffffff;
9270
+ }
9271
+ `;
9272
+ }}
9273
+ }
9274
+
9275
+ ${({ $size = "md" }) => {
9276
+ switch ($size) {
9277
+ case "sm":
9278
+ return lt`
9279
+ font-size: ${15 / 16}rem;
9280
+ padding: ${12 / 16}rem 0;
9281
+ border-radius: ${6 / 16}rem;
9282
+ `;
9283
+ case "md":
9284
+ return lt`
9285
+ font-size: ${17 / 16}rem;
9286
+ padding: ${16 / 16}rem 0;
9287
+ border-radius: ${8 / 16}rem;
9288
+ `;
9289
+ case "lg":
9290
+ return lt`
9291
+ font-size: ${19 / 16}rem;
9292
+ padding: ${20 / 16}rem 0;
9293
+ border-radius: ${10 / 16}rem;
9294
+ `;
9295
+ }
9296
+ }}
9297
+ `;
9298
+
9299
+ // src/components/elements/plan-manager/CheckoutForm.tsx
8480
9300
  var import_jsx_runtime7 = require("react/jsx-runtime");
8481
- var CheckoutForm = () => {
9301
+ var CheckoutForm = ({ plan, period }) => {
8482
9302
  const stripe = (0, import_react_stripe_js3.useStripe)();
8483
9303
  const elements = (0, import_react_stripe_js3.useElements)();
9304
+ const { api, data } = useEmbed();
8484
9305
  const [message, setMessage] = (0, import_react6.useState)(null);
8485
9306
  const [isLoading, setIsLoading] = (0, import_react6.useState)(false);
8486
9307
  const handleSubmit = async (event) => {
8487
9308
  event.preventDefault();
8488
- if (!stripe || !elements) {
9309
+ const priceId = period === "month" ? plan.monthlyPrice?.id : plan.yearlyPrice?.id;
9310
+ if (!api || !stripe || !elements || !priceId) {
8489
9311
  return;
8490
9312
  }
8491
9313
  setIsLoading(true);
@@ -8546,22 +9368,13 @@ var CheckoutForm = () => {
8546
9368
  message && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { id: "payment-message", children: message })
8547
9369
  ] }),
8548
9370
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
8549
- "button",
9371
+ StyledButton,
8550
9372
  {
8551
- disabled: isLoading || !stripe || !elements,
8552
9373
  id: "submit",
8553
- style: {
8554
- backgroundColor: "#000000",
8555
- color: "#ffffff",
8556
- paddingTop: ".75rem",
8557
- paddingBottom: ".75rem",
8558
- fontSize: "15px",
8559
- width: "100%",
8560
- borderRadius: ".5rem",
8561
- textAlign: "center",
8562
- cursor: "pointer"
8563
- },
8564
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { id: "button-text", style: { marginTop: "2.5rem" }, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "spinner", id: "spinner" }) : "Save payment method" })
9374
+ disabled: isLoading || !stripe || !elements || !data.stripeEmbed?.publishableKey || !data.stripeEmbed?.customerEkey,
9375
+ $size: "md",
9376
+ $color: "secondary",
9377
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { id: "button-text", children: isLoading ? "Loading" : "Save payment method" })
8565
9378
  }
8566
9379
  ) })
8567
9380
  ]
@@ -8569,86 +9382,12 @@ var CheckoutForm = () => {
8569
9382
  );
8570
9383
  };
8571
9384
 
8572
- // src/components/elements/plan-manager/styles.ts
8573
- var StyledButton = dt(Button2)`
8574
- font-family: "Public Sans", sans-serif;
8575
- font-weight: 500;
8576
- text-align: center;
8577
- width: 100%;
8578
-
8579
- ${({ $color = "primary", theme }) => {
8580
- const { l: l2 } = hexToHSL(theme[$color]);
8581
- const textColor = l2 > 50 ? "#000000" : "#FFFFFF";
8582
- return lt`
8583
- color: ${textColor};
8584
-
8585
- ${Text} {
8586
- color: ${textColor};
8587
- }
8588
- `;
8589
- }};
8590
-
8591
- ${({ $color = "primary", theme, $variant = "filled" }) => {
8592
- const color = theme[$color];
8593
- return $variant === "filled" ? lt`
8594
- background-color: ${color};
8595
- border-color: ${color};
8596
- ` : lt`
8597
- background-color: transparent;
8598
- border-color: #d2d2d2;
8599
- color: #194bfb;
8600
- ${Text} {
8601
- color: #194bfb;
8602
- }
8603
- `;
8604
- }}
8605
-
8606
- &:hover {
8607
- ${({ $color = "primary", theme, $variant = "filled" }) => {
8608
- const specified = theme[$color];
8609
- const lightened = lighten(specified, 15);
8610
- const color = specified === lightened ? darken(specified, 15) : lightened;
8611
- return $variant === "filled" ? lt`
8612
- background-color: ${color};
8613
- border-color: ${color};
8614
- ` : lt`
8615
- background-color: ${color};
8616
- border-color: ${color};
8617
- color: #ffffff;
8618
- ${Text} {
8619
- color: #ffffff;
8620
- }
8621
- `;
8622
- }}
8623
- }
8624
-
8625
- ${({ $size = "md" }) => {
8626
- switch ($size) {
8627
- case "sm":
8628
- return lt`
8629
- font-size: ${15 / 16}rem;
8630
- padding: ${12 / 16}rem 0;
8631
- border-radius: ${6 / 16}rem;
8632
- `;
8633
- case "md":
8634
- return lt`
8635
- font-size: ${17 / 16}rem;
8636
- padding: ${16 / 16}rem 0;
8637
- border-radius: ${8 / 16}rem;
8638
- `;
8639
- case "lg":
8640
- return lt`
8641
- font-size: ${19 / 16}rem;
8642
- padding: ${20 / 16}rem 0;
8643
- border-radius: ${10 / 16}rem;
8644
- `;
8645
- }
8646
- }}
8647
- `;
8648
-
8649
9385
  // src/components/elements/plan-manager/PlanManager.tsx
8650
9386
  var import_jsx_runtime8 = require("react/jsx-runtime");
8651
- var OverlayHeader = ({ children }) => {
9387
+ var OverlayHeader = ({
9388
+ children,
9389
+ onClose
9390
+ }) => {
8652
9391
  const { setLayout } = useEmbed();
8653
9392
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
8654
9393
  Flex,
@@ -8671,6 +9410,9 @@ var OverlayHeader = ({ children }) => {
8671
9410
  $cursor: "pointer",
8672
9411
  onClick: () => {
8673
9412
  setLayout("portal");
9413
+ if (onClose) {
9414
+ onClose();
9415
+ }
8674
9416
  },
8675
9417
  children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icon2, { name: "close", style: { fontSize: 36, color: "#B8B8B8" } })
8676
9418
  }
@@ -8735,8 +9477,20 @@ var OverlayWrapper = ({
8735
9477
  var OverlaySideBar = ({
8736
9478
  pricePeriod,
8737
9479
  setPricePeriod,
8738
- setCheckoutStage
9480
+ checkoutStage,
9481
+ setCheckoutStage,
9482
+ currentPlan,
9483
+ selectedPlan
8739
9484
  }) => {
9485
+ const { api } = useEmbed();
9486
+ const savingsPercentage = (0, import_react7.useMemo)(() => {
9487
+ if (selectedPlan && pricePeriod === "month") {
9488
+ const monthly = (selectedPlan?.monthlyPrice?.price || 0) * 12;
9489
+ const yearly = selectedPlan?.yearlyPrice?.price || 0;
9490
+ return (monthly - yearly) / monthly * 100;
9491
+ }
9492
+ return 0;
9493
+ }, [selectedPlan, pricePeriod]);
8740
9494
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
8741
9495
  Flex,
8742
9496
  {
@@ -8758,32 +9512,7 @@ var OverlaySideBar = ({
8758
9512
  $padding: "1.5rem",
8759
9513
  $borderBottom: "1px solid #DEDEDE",
8760
9514
  children: [
8761
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Flex, { $flexDirection: "row", $justifyContent: "space-between", children: [
8762
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { $size: 20, $weight: 600, children: "Subscription" }),
8763
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
8764
- Flex,
8765
- {
8766
- $border: "1px solid #D9D9D9",
8767
- $padding: ".15rem .45rem .15rem .55rem",
8768
- $alignItems: "center",
8769
- $borderRadius: "5px",
8770
- $fontSize: "12px",
8771
- children: [
8772
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box, { $display: "inline-block", $marginRight: ".5rem", children: "$ USD" }),
8773
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
8774
- Icon2,
8775
- {
8776
- name: "chevron-down",
8777
- style: {
8778
- fontSize: "20px",
8779
- lineHeight: "1em"
8780
- }
8781
- }
8782
- )
8783
- ]
8784
- }
8785
- )
8786
- ] }),
9515
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Flex, { $flexDirection: "row", $justifyContent: "space-between", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { $size: 20, $weight: 600, children: "Subscription" }) }),
8787
9516
  /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
8788
9517
  Flex,
8789
9518
  {
@@ -8821,7 +9550,11 @@ var OverlaySideBar = ({
8821
9550
  ]
8822
9551
  }
8823
9552
  ),
8824
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box, { $fontSize: "11px", $color: "#194BFB", children: "Save up to 33% with yearly billing" })
9553
+ savingsPercentage > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Box, { $fontSize: "11px", $color: "#194BFB", children: [
9554
+ "Save up to ",
9555
+ savingsPercentage,
9556
+ "% with yearly billing"
9557
+ ] })
8825
9558
  ]
8826
9559
  }
8827
9560
  ),
@@ -8846,7 +9579,7 @@ var OverlaySideBar = ({
8846
9579
  $color: "#5D5D5D",
8847
9580
  $gap: ".5rem",
8848
9581
  children: [
8849
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
9582
+ currentPlan && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
8850
9583
  Flex,
8851
9584
  {
8852
9585
  $flexDirection: "row",
@@ -8855,50 +9588,56 @@ var OverlaySideBar = ({
8855
9588
  $fontSize: "14px",
8856
9589
  $color: "#5D5D5D",
8857
9590
  children: [
8858
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Flex, { $fontSize: "14px", $color: "#5D5D5D", children: "Free" }),
9591
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Flex, { $fontSize: "14px", $color: "#5D5D5D", children: currentPlan.name }),
8859
9592
  /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Flex, { $fontSize: "12px", $color: "#000000", children: [
8860
- "$0/",
8861
- pricePeriod
9593
+ "$",
9594
+ currentPlan.planPrice,
9595
+ "/",
9596
+ currentPlan.planPeriod
8862
9597
  ] })
8863
9598
  ]
8864
9599
  }
8865
9600
  ),
8866
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
8867
- Box,
8868
- {
8869
- $width: "100%",
8870
- $textAlign: "left",
8871
- $opacity: "50%",
8872
- $marginBottom: "-.25rem",
8873
- $marginTop: "-.25rem",
8874
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
8875
- Icon2,
8876
- {
8877
- name: "arrow-down",
8878
- style: {
8879
- display: "inline-block"
9601
+ selectedPlan && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
9602
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9603
+ Box,
9604
+ {
9605
+ $width: "100%",
9606
+ $textAlign: "left",
9607
+ $opacity: "50%",
9608
+ $marginBottom: "-.25rem",
9609
+ $marginTop: "-.25rem",
9610
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9611
+ Icon2,
9612
+ {
9613
+ name: "arrow-down",
9614
+ style: {
9615
+ display: "inline-block"
9616
+ }
8880
9617
  }
8881
- }
8882
- )
8883
- }
8884
- ),
8885
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
8886
- Flex,
8887
- {
8888
- $flexDirection: "row",
8889
- $alignItems: "center",
8890
- $justifyContent: "space-between",
8891
- $fontSize: "14px",
8892
- $color: "#5D5D5D",
8893
- children: [
8894
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Flex, { $fontSize: "14px", $color: "#000000", $fontWeight: "600", children: "Professional" }),
8895
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Flex, { $fontSize: "12px", $color: "#000000", children: [
8896
- "$285/",
8897
- pricePeriod
8898
- ] })
8899
- ]
8900
- }
8901
- )
9618
+ )
9619
+ }
9620
+ ),
9621
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
9622
+ Flex,
9623
+ {
9624
+ $flexDirection: "row",
9625
+ $alignItems: "center",
9626
+ $justifyContent: "space-between",
9627
+ $fontSize: "14px",
9628
+ $color: "#5D5D5D",
9629
+ children: [
9630
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Flex, { $fontSize: "14px", $color: "#000000", $fontWeight: "600", children: selectedPlan.name }),
9631
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Flex, { $fontSize: "12px", $color: "#000000", children: [
9632
+ "$",
9633
+ pricePeriod === "month" ? selectedPlan.monthlyPrice?.price : selectedPlan.yearlyPrice?.price,
9634
+ "/",
9635
+ pricePeriod
9636
+ ] })
9637
+ ]
9638
+ }
9639
+ )
9640
+ ] })
8902
9641
  ]
8903
9642
  }
8904
9643
  )
@@ -8915,25 +9654,57 @@ var OverlaySideBar = ({
8915
9654
  $height: "auto",
8916
9655
  $padding: "1.5rem",
8917
9656
  children: [
8918
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Flex, { $fontSize: "12px", $color: "#5D5D5D", $justifyContent: "space-between", children: [
8919
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Box, { $fontSize: "12px", $color: "#5D5D5D", children: [
8920
- "Monthly total:",
8921
- " "
8922
- ] }),
8923
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box, { $fontSize: "12px", $color: "#000000", children: "$285/mo" })
8924
- ] }),
8925
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9657
+ selectedPlan && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
9658
+ Flex,
9659
+ {
9660
+ $fontSize: "12px",
9661
+ $color: "#5D5D5D",
9662
+ $justifyContent: "space-between",
9663
+ children: [
9664
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Box, { $fontSize: "12px", $color: "#5D5D5D", children: [
9665
+ "Monthly total:",
9666
+ " "
9667
+ ] }),
9668
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Box, { $fontSize: "12px", $color: "#000000", children: [
9669
+ "$",
9670
+ pricePeriod === "month" ? selectedPlan.monthlyPrice?.price : selectedPlan.yearlyPrice?.price,
9671
+ "/",
9672
+ pricePeriod
9673
+ ] })
9674
+ ]
9675
+ }
9676
+ ),
9677
+ checkoutStage === "plan" ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
8926
9678
  StyledButton,
8927
9679
  {
8928
9680
  $size: "sm",
8929
9681
  onClick: () => {
8930
9682
  setCheckoutStage("checkout");
8931
9683
  },
8932
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Flex, { $gap: ".5rem", $alignItems: "center", $justifyContent: "center", children: [
9684
+ ...!selectedPlan && { disabled: true },
9685
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Flex, { $gap: "0.5rem", $alignItems: "center", $justifyContent: "center", children: [
8933
9686
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: "Next: Checkout" }),
8934
9687
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Icon2, { name: "arrow-right" })
8935
9688
  ] })
8936
9689
  }
9690
+ ) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9691
+ StyledButton,
9692
+ {
9693
+ disabled: !api || !selectedPlan || selectedPlan?.id === currentPlan?.id,
9694
+ onClick: async () => {
9695
+ const priceId = pricePeriod === "month" ? selectedPlan?.monthlyPrice?.id : selectedPlan?.yearlyPrice?.id;
9696
+ if (!api || !selectedPlan || !priceId)
9697
+ return;
9698
+ await api.checkout({
9699
+ changeSubscriptionRequestBody: {
9700
+ newPlanId: selectedPlan.id,
9701
+ newPriceId: priceId
9702
+ }
9703
+ });
9704
+ },
9705
+ $size: "md",
9706
+ children: "Pay now"
9707
+ }
8937
9708
  ),
8938
9709
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box, { $fontSize: "12px", $color: "#5D5D5D", children: "Discounts & credits applied at checkout" })
8939
9710
  ]
@@ -8977,23 +9748,15 @@ var PlanManager = (0, import_react7.forwardRef)(({ children, className, portal,
8977
9748
  "plan"
8978
9749
  );
8979
9750
  const [planPeriod, setPlanPeriod] = (0, import_react7.useState)("month");
9751
+ const [selectedPlan, setSelectedPlan] = (0, import_react7.useState)();
8980
9752
  const { data, settings, layout, stripe, setLayout } = useEmbed();
8981
9753
  const { currentPlan, canChangePlan, availablePlans } = (0, import_react7.useMemo)(() => {
8982
- const canChangePlan2 = stripe !== null;
8983
- const availablePlans2 = data.activePlans?.map(
8984
- ({ name, description, current, monthlyPrice, yearlyPrice }) => ({
8985
- name,
8986
- description,
8987
- price: planPeriod === "month" ? monthlyPrice?.price : yearlyPrice?.price,
8988
- current
8989
- })
8990
- );
8991
9754
  return {
8992
9755
  currentPlan: data.company?.plan,
8993
- canChangePlan: canChangePlan2,
8994
- availablePlans: availablePlans2
9756
+ canChangePlan: stripe !== null,
9757
+ availablePlans: data.activePlans
8995
9758
  };
8996
- }, [data.company, data.activePlans, stripe, planPeriod]);
9759
+ }, [data.company, data.activePlans, stripe]);
8997
9760
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { ref, className, children: [
8998
9761
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
8999
9762
  Flex,
@@ -9075,23 +9838,41 @@ var PlanManager = (0, import_react7.forwardRef)(({ children, className, portal,
9075
9838
  /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(OverlayWrapper, { children: [
9076
9839
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(OverlayHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Flex, { $gap: "1rem", children: [
9077
9840
  /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Flex, { $flexDirection: "row", $gap: "0.5rem", $alignItems: "center", children: [
9078
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9841
+ checkoutStage === "plan" ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9079
9842
  Box,
9080
9843
  {
9081
9844
  $width: "15px",
9082
9845
  $height: "15px",
9846
+ $backgroundColor: "white",
9083
9847
  $border: "2px solid #DDDDDD",
9084
- $borderRadius: "999px",
9085
- $backgroundColor: "white"
9848
+ $borderRadius: "999px"
9849
+ }
9850
+ ) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9851
+ IconRound,
9852
+ {
9853
+ name: "check",
9854
+ style: {
9855
+ color: "#FFFFFF",
9856
+ backgroundColor: "#DDDDDD",
9857
+ fontSize: 16,
9858
+ width: "1rem",
9859
+ height: "1rem"
9860
+ }
9086
9861
  }
9087
9862
  ),
9088
9863
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9089
9864
  "div",
9090
9865
  {
9091
- ...checkoutStage === "plan" && {
9866
+ tabIndex: 0,
9867
+ ...checkoutStage === "plan" ? {
9092
9868
  style: {
9093
9869
  fontWeight: "700"
9094
9870
  }
9871
+ } : {
9872
+ style: {
9873
+ cursor: "pointer"
9874
+ },
9875
+ onClick: () => setCheckoutStage("plan")
9095
9876
  },
9096
9877
  children: "1. Select plan"
9097
9878
  }
@@ -9118,6 +9899,7 @@ var PlanManager = (0, import_react7.forwardRef)(({ children, className, portal,
9118
9899
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9119
9900
  "div",
9120
9901
  {
9902
+ tabIndex: 0,
9121
9903
  ...checkoutStage === "checkout" && {
9122
9904
  style: {
9123
9905
  fontWeight: "700"
@@ -9125,13 +9907,6 @@ var PlanManager = (0, import_react7.forwardRef)(({ children, className, portal,
9125
9907
  },
9126
9908
  children: "2. Checkout"
9127
9909
  }
9128
- ),
9129
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9130
- Icon2,
9131
- {
9132
- name: "chevron-right",
9133
- style: { fontSize: 16, color: "#D0D0D0" }
9134
- }
9135
9910
  )
9136
9911
  ] })
9137
9912
  ] }) }),
@@ -9192,8 +9967,8 @@ var PlanManager = (0, import_react7.forwardRef)(({ children, className, portal,
9192
9967
  $height: "100%",
9193
9968
  $flexDirection: "column",
9194
9969
  $backgroundColor: "white",
9195
- $border: plan?.current ? `2px solid #194BFB` : "",
9196
9970
  $flex: "1",
9971
+ $border: `2px solid ${plan.id === selectedPlan?.id ? "#194BFB" : "transparent"}`,
9197
9972
  $borderRadius: ".5rem",
9198
9973
  $boxShadow: "0px 1px 3px rgba(16, 24, 40, 0.1), 0px 1px 20px rgba(16, 24, 40, 0.06)",
9199
9974
  children: [
@@ -9205,26 +9980,26 @@ var PlanManager = (0, import_react7.forwardRef)(({ children, className, portal,
9205
9980
  $gap: "1rem",
9206
9981
  $width: "100%",
9207
9982
  $height: "auto",
9208
- $padding: "1.5rem",
9983
+ $padding: "2rem 1.5rem 1.5rem",
9209
9984
  $borderBottom: "1px solid #DEDEDE",
9210
9985
  children: [
9211
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { $size: 20, $weight: 600, children: plan?.name }),
9212
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { $size: 14, children: plan?.description }),
9986
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { $size: 20, $weight: 600, children: plan.name }),
9987
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { $size: 14, children: plan.description }),
9213
9988
  /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Text, { children: [
9214
9989
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box, { $display: "inline-block", $fontSize: ".90rem", children: "$" }),
9215
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box, { $display: "inline-block", $fontSize: "1.5rem", children: plan?.price ? plan.price : "350" }),
9990
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Box, { $display: "inline-block", $fontSize: "1.5rem", children: (planPeriod === "month" ? plan.monthlyPrice : plan.yearlyPrice)?.price }),
9216
9991
  /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Box, { $display: "inline-block", $fontSize: ".75rem", children: [
9217
9992
  "/",
9218
9993
  planPeriod
9219
9994
  ] })
9220
9995
  ] }),
9221
- plan?.current && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9996
+ (plan.current || plan.id === currentPlan?.id) && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9222
9997
  Flex,
9223
9998
  {
9224
9999
  $position: "absolute",
9225
10000
  $right: "1rem",
9226
10001
  $top: "1rem",
9227
- $fontSize: ".75rem",
10002
+ $fontSize: ".625rem",
9228
10003
  $color: "white",
9229
10004
  $backgroundColor: "#194BFB",
9230
10005
  $borderRadius: "999px",
@@ -9245,22 +10020,30 @@ var PlanManager = (0, import_react7.forwardRef)(({ children, className, portal,
9245
10020
  $width: "100%",
9246
10021
  $height: "auto",
9247
10022
  $padding: "1.5rem",
9248
- children: [{}, {}, {}].map(() => {
9249
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Flex, { $flexShrink: "0", $gap: "1rem", children: [
9250
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9251
- IconRound,
9252
- {
9253
- name: "server-search",
9254
- size: "tn",
9255
- colors: ["#00000", "#F5F5F5"]
9256
- }
9257
- ),
9258
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Flex, { $alignItems: "center", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { $size: ".75rem", $color: "#00000", children: "5 Queries/mo" }) })
9259
- ] });
10023
+ children: plan.features.map((feature) => {
10024
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
10025
+ Flex,
10026
+ {
10027
+ $flexShrink: "0",
10028
+ $gap: "1rem",
10029
+ children: [
10030
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
10031
+ IconRound,
10032
+ {
10033
+ name: feature.icon,
10034
+ size: "tn",
10035
+ colors: ["#000000", "#F5F5F5"]
10036
+ }
10037
+ ),
10038
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Flex, { $alignItems: "center", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Text, { $size: ".75rem", $color: "#00000", children: feature.name }) })
10039
+ ]
10040
+ },
10041
+ feature.id
10042
+ );
9260
10043
  })
9261
10044
  }
9262
10045
  ),
9263
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
10046
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
9264
10047
  Flex,
9265
10048
  {
9266
10049
  $flexDirection: "column",
@@ -9269,58 +10052,64 @@ var PlanManager = (0, import_react7.forwardRef)(({ children, className, portal,
9269
10052
  $width: "100%",
9270
10053
  $height: "auto",
9271
10054
  $padding: "1.5rem",
9272
- children: plan.current ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
9273
- Flex,
9274
- {
9275
- $flexDirection: "row",
9276
- $gap: ".5rem",
9277
- $justifyContent: "center",
9278
- $alignItems: "center",
9279
- children: [
9280
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9281
- Icon2,
9282
- {
9283
- name: "check-rounded",
9284
- style: {
9285
- fontSize: 24,
9286
- lineHeight: "1em",
9287
- color: "#194BFB"
10055
+ children: [
10056
+ plan.id === selectedPlan?.id && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
10057
+ Flex,
10058
+ {
10059
+ $justifyContent: "center",
10060
+ $alignItems: "center",
10061
+ $gap: "0.25rem",
10062
+ $fontSize: "0.9375rem",
10063
+ $padding: "0.625rem 0",
10064
+ children: [
10065
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
10066
+ Icon2,
10067
+ {
10068
+ name: "check-rounded",
10069
+ style: {
10070
+ fontSize: 20,
10071
+ lineHeight: "1",
10072
+ color: "#194BFB"
10073
+ }
9288
10074
  }
9289
- }
9290
- ),
9291
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9292
- "span",
9293
- {
9294
- style: {
9295
- fontSize: "1rem",
9296
- color: "#7B7B7B"
9297
- },
9298
- children: "Selected"
9299
- }
9300
- )
9301
- ]
9302
- }
9303
- ) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
9304
- StyledButton,
9305
- {
9306
- $size: "sm",
9307
- $color: "secondary",
9308
- $variant: "outline",
9309
- onClick: () => {
9310
- },
9311
- children: "Select"
9312
- }
9313
- )
10075
+ ),
10076
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
10077
+ "span",
10078
+ {
10079
+ style: {
10080
+ color: "#7B7B7B",
10081
+ lineHeight: "1.4"
10082
+ },
10083
+ children: "Selected"
10084
+ }
10085
+ )
10086
+ ]
10087
+ }
10088
+ ),
10089
+ !(plan.current || plan.id === currentPlan?.id) && plan.id !== selectedPlan?.id && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
10090
+ StyledButton,
10091
+ {
10092
+ $size: "sm",
10093
+ $color: "secondary",
10094
+ $variant: "outline",
10095
+ onClick: () => {
10096
+ setSelectedPlan(plan);
10097
+ },
10098
+ children: "Select"
10099
+ }
10100
+ )
10101
+ ]
9314
10102
  }
9315
10103
  )
9316
10104
  ]
9317
- }
10105
+ },
10106
+ plan.id
9318
10107
  );
9319
10108
  })
9320
10109
  }
9321
10110
  )
9322
10111
  ] }),
9323
- checkoutStage === "checkout" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CheckoutForm, {})
10112
+ selectedPlan && checkoutStage === "checkout" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CheckoutForm, { plan: selectedPlan, period: planPeriod })
9324
10113
  ]
9325
10114
  }
9326
10115
  ),
@@ -9329,7 +10118,10 @@ var PlanManager = (0, import_react7.forwardRef)(({ children, className, portal,
9329
10118
  {
9330
10119
  pricePeriod: planPeriod,
9331
10120
  setPricePeriod: setPlanPeriod,
9332
- setCheckoutStage
10121
+ checkoutStage,
10122
+ setCheckoutStage,
10123
+ currentPlan,
10124
+ selectedPlan
9333
10125
  }
9334
10126
  )
9335
10127
  ] })
@@ -9640,28 +10432,26 @@ function resolveDesignProps4(props) {
9640
10432
  var UpcomingBill = (0, import_react10.forwardRef)(({ className, ...rest }, ref) => {
9641
10433
  const props = resolveDesignProps4(rest);
9642
10434
  const { data, settings, stripe } = useEmbed();
9643
- const { latestInvoice } = (0, import_react10.useMemo)(() => {
10435
+ const { upcomingInvoice } = (0, import_react10.useMemo)(() => {
9644
10436
  return {
9645
- latestInvoice: {
9646
- ...data.subscription?.latestInvoice?.amountDue && {
9647
- amountDue: data.subscription.latestInvoice.amountDue
10437
+ upcomingInvoice: {
10438
+ ...data.upcomingInvoice?.amountDue && {
10439
+ amountDue: data.upcomingInvoice.amountDue
9648
10440
  },
9649
10441
  ...data.subscription?.interval && {
9650
10442
  interval: data.subscription.interval
9651
10443
  },
9652
- ...data.subscription?.latestInvoice?.dueDate && {
9653
- dueDate: toPrettyDate(
9654
- new Date(data.subscription.latestInvoice.dueDate)
9655
- )
10444
+ ...data.upcomingInvoice?.dueDate && {
10445
+ dueDate: toPrettyDate(new Date(data.upcomingInvoice.dueDate))
9656
10446
  }
9657
10447
  }
9658
10448
  };
9659
- }, [data.subscription]);
9660
- if (!stripe || !data.subscription?.latestInvoice) {
10449
+ }, [data.subscription, data.upcomingInvoice]);
10450
+ if (!stripe || !data.upcomingInvoice) {
9661
10451
  return null;
9662
10452
  }
9663
10453
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { ref, className, children: [
9664
- props.header.isVisible && latestInvoice.dueDate && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
10454
+ props.header.isVisible && upcomingInvoice.dueDate && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
9665
10455
  Flex,
9666
10456
  {
9667
10457
  $justifyContent: "space-between",
@@ -9677,13 +10467,13 @@ var UpcomingBill = (0, import_react10.forwardRef)(({ className, ...rest }, ref)
9677
10467
  children: [
9678
10468
  props.header.prefix,
9679
10469
  " ",
9680
- latestInvoice.dueDate
10470
+ upcomingInvoice.dueDate
9681
10471
  ]
9682
10472
  }
9683
10473
  )
9684
10474
  }
9685
10475
  ),
9686
- latestInvoice.amountDue && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Flex, { $justifyContent: "space-between", $alignItems: "start", $gap: "1rem", children: [
10476
+ upcomingInvoice.amountDue && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Flex, { $justifyContent: "space-between", $alignItems: "start", $gap: "1rem", children: [
9687
10477
  props.price.isVisible && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Flex, { $alignItems: "end", $flexGrow: "1", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
9688
10478
  Text,
9689
10479
  {
@@ -9701,7 +10491,7 @@ var UpcomingBill = (0, import_react10.forwardRef)(({ className, ...rest }, ref)
9701
10491
  children: "$"
9702
10492
  }
9703
10493
  ),
9704
- latestInvoice.amountDue
10494
+ upcomingInvoice.amountDue
9705
10495
  ]
9706
10496
  }
9707
10497
  ) }),
@@ -9736,7 +10526,7 @@ var resolveDesignProps5 = (props) => {
9736
10526
  };
9737
10527
  var PaymentMethod = (0, import_react11.forwardRef)(({ children, className, portal, ...rest }, ref) => {
9738
10528
  const props = resolveDesignProps5(rest);
9739
- const { data, settings, stripe, layout, setLayout } = useEmbed();
10529
+ const { data, settings, stripe, layout } = useEmbed();
9740
10530
  const paymentMethod = (0, import_react11.useMemo)(() => {
9741
10531
  const { cardLast4, cardExpMonth, cardExpYear } = data.subscription?.paymentMethod || {};
9742
10532
  let monthsToExpiration;
@@ -9786,7 +10576,7 @@ var PaymentMethod = (0, import_react11.forwardRef)(({ children, className, porta
9786
10576
  ]
9787
10577
  }
9788
10578
  ),
9789
- paymentMethod.cardLast4 && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
10579
+ paymentMethod.cardLast4 && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
9790
10580
  Flex,
9791
10581
  {
9792
10582
  $justifyContent: "space-between",
@@ -9795,28 +10585,10 @@ var PaymentMethod = (0, import_react11.forwardRef)(({ children, className, porta
9795
10585
  $background: `${hexToHSL(settings.theme.card.background).l > 50 ? darken(settings.theme.card.background, 10) : lighten(settings.theme.card.background, 20)}`,
9796
10586
  $padding: "0.375rem 1rem",
9797
10587
  $borderRadius: "9999px",
9798
- children: [
9799
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Text, { $font: settings.theme.typography.text.fontFamily, $size: 14, children: [
9800
- "\u{1F4B3} Card ending in ",
9801
- paymentMethod.cardLast4
9802
- ] }),
9803
- props.functions.allowEdit && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
9804
- Text,
9805
- {
9806
- tabIndex: 0,
9807
- onClick: () => {
9808
- if (layout !== "payment")
9809
- return;
9810
- setLayout("payment");
9811
- },
9812
- $font: settings.theme.typography.link.fontFamily,
9813
- $size: settings.theme.typography.link.fontSize,
9814
- $weight: settings.theme.typography.link.fontWeight,
9815
- $color: settings.theme.typography.link.color,
9816
- children: "Edit"
9817
- }
9818
- )
9819
- ]
10588
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(Text, { $font: settings.theme.typography.text.fontFamily, $size: 14, children: [
10589
+ "\u{1F4B3} Card ending in ",
10590
+ paymentMethod.cardLast4
10591
+ ] })
9820
10592
  }
9821
10593
  ),
9822
10594
  layout === "payment" && (0, import_react_dom2.createPortal)(
@@ -10340,7 +11112,7 @@ function createRenderer(options) {
10340
11112
  component,
10341
11113
  {
10342
11114
  className,
10343
- ...component !== "div" && { resolvedProps },
11115
+ ...component !== "div" && { ...resolvedProps },
10344
11116
  ...component !== "div" && Object.keys(custom).length > 0 && { custom },
10345
11117
  key: index
10346
11118
  },