@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.
@@ -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
  },