@remotion/promo-pages 4.0.357 → 4.0.358

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.
@@ -0,0 +1,1942 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __export = (target, all) => {
3
+ for (var name in all)
4
+ __defProp(target, name, {
5
+ get: all[name],
6
+ enumerable: true,
7
+ configurable: true,
8
+ set: (newValue) => all[name] = () => newValue
9
+ });
10
+ };
11
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
12
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
13
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
14
+ }) : x)(function(x) {
15
+ if (typeof require !== "undefined")
16
+ return require.apply(this, arguments);
17
+ throw Error('Dynamic require of "' + x + '" is not supported');
18
+ });
19
+
20
+ // src/components/homepage/FreePricing.tsx
21
+ import React2, { useCallback, useMemo } from "react";
22
+
23
+ // ../../node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
24
+ function r(e) {
25
+ var t, f, n = "";
26
+ if (typeof e == "string" || typeof e == "number")
27
+ n += e;
28
+ else if (typeof e == "object")
29
+ if (Array.isArray(e)) {
30
+ var o = e.length;
31
+ for (t = 0;t < o; t++)
32
+ e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
33
+ } else
34
+ for (f in e)
35
+ e[f] && (n && (n += " "), n += f);
36
+ return n;
37
+ }
38
+ function clsx() {
39
+ for (var e, t, f = 0, n = "", o = arguments.length;f < o; f++)
40
+ (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
41
+ return n;
42
+ }
43
+
44
+ // ../../node_modules/.bun/tailwind-merge@2.5.2/node_modules/tailwind-merge/dist/bundle-mjs.mjs
45
+ var CLASS_PART_SEPARATOR = "-";
46
+ var createClassGroupUtils = (config) => {
47
+ const classMap = createClassMap(config);
48
+ const {
49
+ conflictingClassGroups,
50
+ conflictingClassGroupModifiers
51
+ } = config;
52
+ const getClassGroupId = (className) => {
53
+ const classParts = className.split(CLASS_PART_SEPARATOR);
54
+ if (classParts[0] === "" && classParts.length !== 1) {
55
+ classParts.shift();
56
+ }
57
+ return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);
58
+ };
59
+ const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {
60
+ const conflicts = conflictingClassGroups[classGroupId] || [];
61
+ if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {
62
+ return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];
63
+ }
64
+ return conflicts;
65
+ };
66
+ return {
67
+ getClassGroupId,
68
+ getConflictingClassGroupIds
69
+ };
70
+ };
71
+ var getGroupRecursive = (classParts, classPartObject) => {
72
+ if (classParts.length === 0) {
73
+ return classPartObject.classGroupId;
74
+ }
75
+ const currentClassPart = classParts[0];
76
+ const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
77
+ const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;
78
+ if (classGroupFromNextClassPart) {
79
+ return classGroupFromNextClassPart;
80
+ }
81
+ if (classPartObject.validators.length === 0) {
82
+ return;
83
+ }
84
+ const classRest = classParts.join(CLASS_PART_SEPARATOR);
85
+ return classPartObject.validators.find(({
86
+ validator
87
+ }) => validator(classRest))?.classGroupId;
88
+ };
89
+ var arbitraryPropertyRegex = /^\[(.+)\]$/;
90
+ var getGroupIdForArbitraryProperty = (className) => {
91
+ if (arbitraryPropertyRegex.test(className)) {
92
+ const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];
93
+ const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(":"));
94
+ if (property) {
95
+ return "arbitrary.." + property;
96
+ }
97
+ }
98
+ };
99
+ var createClassMap = (config) => {
100
+ const {
101
+ theme,
102
+ prefix
103
+ } = config;
104
+ const classMap = {
105
+ nextPart: new Map,
106
+ validators: []
107
+ };
108
+ const prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);
109
+ prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {
110
+ processClassesRecursively(classGroup, classMap, classGroupId, theme);
111
+ });
112
+ return classMap;
113
+ };
114
+ var processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {
115
+ classGroup.forEach((classDefinition) => {
116
+ if (typeof classDefinition === "string") {
117
+ const classPartObjectToEdit = classDefinition === "" ? classPartObject : getPart(classPartObject, classDefinition);
118
+ classPartObjectToEdit.classGroupId = classGroupId;
119
+ return;
120
+ }
121
+ if (typeof classDefinition === "function") {
122
+ if (isThemeGetter(classDefinition)) {
123
+ processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
124
+ return;
125
+ }
126
+ classPartObject.validators.push({
127
+ validator: classDefinition,
128
+ classGroupId
129
+ });
130
+ return;
131
+ }
132
+ Object.entries(classDefinition).forEach(([key, classGroup2]) => {
133
+ processClassesRecursively(classGroup2, getPart(classPartObject, key), classGroupId, theme);
134
+ });
135
+ });
136
+ };
137
+ var getPart = (classPartObject, path) => {
138
+ let currentClassPartObject = classPartObject;
139
+ path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => {
140
+ if (!currentClassPartObject.nextPart.has(pathPart)) {
141
+ currentClassPartObject.nextPart.set(pathPart, {
142
+ nextPart: new Map,
143
+ validators: []
144
+ });
145
+ }
146
+ currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);
147
+ });
148
+ return currentClassPartObject;
149
+ };
150
+ var isThemeGetter = (func) => func.isThemeGetter;
151
+ var getPrefixedClassGroupEntries = (classGroupEntries, prefix) => {
152
+ if (!prefix) {
153
+ return classGroupEntries;
154
+ }
155
+ return classGroupEntries.map(([classGroupId, classGroup]) => {
156
+ const prefixedClassGroup = classGroup.map((classDefinition) => {
157
+ if (typeof classDefinition === "string") {
158
+ return prefix + classDefinition;
159
+ }
160
+ if (typeof classDefinition === "object") {
161
+ return Object.fromEntries(Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]));
162
+ }
163
+ return classDefinition;
164
+ });
165
+ return [classGroupId, prefixedClassGroup];
166
+ });
167
+ };
168
+ var createLruCache = (maxCacheSize) => {
169
+ if (maxCacheSize < 1) {
170
+ return {
171
+ get: () => {
172
+ return;
173
+ },
174
+ set: () => {}
175
+ };
176
+ }
177
+ let cacheSize = 0;
178
+ let cache = new Map;
179
+ let previousCache = new Map;
180
+ const update = (key, value) => {
181
+ cache.set(key, value);
182
+ cacheSize++;
183
+ if (cacheSize > maxCacheSize) {
184
+ cacheSize = 0;
185
+ previousCache = cache;
186
+ cache = new Map;
187
+ }
188
+ };
189
+ return {
190
+ get(key) {
191
+ let value = cache.get(key);
192
+ if (value !== undefined) {
193
+ return value;
194
+ }
195
+ if ((value = previousCache.get(key)) !== undefined) {
196
+ update(key, value);
197
+ return value;
198
+ }
199
+ },
200
+ set(key, value) {
201
+ if (cache.has(key)) {
202
+ cache.set(key, value);
203
+ } else {
204
+ update(key, value);
205
+ }
206
+ }
207
+ };
208
+ };
209
+ var IMPORTANT_MODIFIER = "!";
210
+ var createParseClassName = (config) => {
211
+ const {
212
+ separator,
213
+ experimentalParseClassName
214
+ } = config;
215
+ const isSeparatorSingleCharacter = separator.length === 1;
216
+ const firstSeparatorCharacter = separator[0];
217
+ const separatorLength = separator.length;
218
+ const parseClassName = (className) => {
219
+ const modifiers = [];
220
+ let bracketDepth = 0;
221
+ let modifierStart = 0;
222
+ let postfixModifierPosition;
223
+ for (let index = 0;index < className.length; index++) {
224
+ let currentCharacter = className[index];
225
+ if (bracketDepth === 0) {
226
+ if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) {
227
+ modifiers.push(className.slice(modifierStart, index));
228
+ modifierStart = index + separatorLength;
229
+ continue;
230
+ }
231
+ if (currentCharacter === "/") {
232
+ postfixModifierPosition = index;
233
+ continue;
234
+ }
235
+ }
236
+ if (currentCharacter === "[") {
237
+ bracketDepth++;
238
+ } else if (currentCharacter === "]") {
239
+ bracketDepth--;
240
+ }
241
+ }
242
+ const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);
243
+ const hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER);
244
+ const baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier;
245
+ const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;
246
+ return {
247
+ modifiers,
248
+ hasImportantModifier,
249
+ baseClassName,
250
+ maybePostfixModifierPosition
251
+ };
252
+ };
253
+ if (experimentalParseClassName) {
254
+ return (className) => experimentalParseClassName({
255
+ className,
256
+ parseClassName
257
+ });
258
+ }
259
+ return parseClassName;
260
+ };
261
+ var sortModifiers = (modifiers) => {
262
+ if (modifiers.length <= 1) {
263
+ return modifiers;
264
+ }
265
+ const sortedModifiers = [];
266
+ let unsortedModifiers = [];
267
+ modifiers.forEach((modifier) => {
268
+ const isArbitraryVariant = modifier[0] === "[";
269
+ if (isArbitraryVariant) {
270
+ sortedModifiers.push(...unsortedModifiers.sort(), modifier);
271
+ unsortedModifiers = [];
272
+ } else {
273
+ unsortedModifiers.push(modifier);
274
+ }
275
+ });
276
+ sortedModifiers.push(...unsortedModifiers.sort());
277
+ return sortedModifiers;
278
+ };
279
+ var createConfigUtils = (config) => ({
280
+ cache: createLruCache(config.cacheSize),
281
+ parseClassName: createParseClassName(config),
282
+ ...createClassGroupUtils(config)
283
+ });
284
+ var SPLIT_CLASSES_REGEX = /\s+/;
285
+ var mergeClassList = (classList, configUtils) => {
286
+ const {
287
+ parseClassName,
288
+ getClassGroupId,
289
+ getConflictingClassGroupIds
290
+ } = configUtils;
291
+ const classGroupsInConflict = [];
292
+ const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);
293
+ let result = "";
294
+ for (let index = classNames.length - 1;index >= 0; index -= 1) {
295
+ const originalClassName = classNames[index];
296
+ const {
297
+ modifiers,
298
+ hasImportantModifier,
299
+ baseClassName,
300
+ maybePostfixModifierPosition
301
+ } = parseClassName(originalClassName);
302
+ let hasPostfixModifier = Boolean(maybePostfixModifierPosition);
303
+ let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);
304
+ if (!classGroupId) {
305
+ if (!hasPostfixModifier) {
306
+ result = originalClassName + (result.length > 0 ? " " + result : result);
307
+ continue;
308
+ }
309
+ classGroupId = getClassGroupId(baseClassName);
310
+ if (!classGroupId) {
311
+ result = originalClassName + (result.length > 0 ? " " + result : result);
312
+ continue;
313
+ }
314
+ hasPostfixModifier = false;
315
+ }
316
+ const variantModifier = sortModifiers(modifiers).join(":");
317
+ const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
318
+ const classId = modifierId + classGroupId;
319
+ if (classGroupsInConflict.includes(classId)) {
320
+ continue;
321
+ }
322
+ classGroupsInConflict.push(classId);
323
+ const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);
324
+ for (let i = 0;i < conflictGroups.length; ++i) {
325
+ const group = conflictGroups[i];
326
+ classGroupsInConflict.push(modifierId + group);
327
+ }
328
+ result = originalClassName + (result.length > 0 ? " " + result : result);
329
+ }
330
+ return result;
331
+ };
332
+ function twJoin() {
333
+ let index = 0;
334
+ let argument;
335
+ let resolvedValue;
336
+ let string = "";
337
+ while (index < arguments.length) {
338
+ if (argument = arguments[index++]) {
339
+ if (resolvedValue = toValue(argument)) {
340
+ string && (string += " ");
341
+ string += resolvedValue;
342
+ }
343
+ }
344
+ }
345
+ return string;
346
+ }
347
+ var toValue = (mix) => {
348
+ if (typeof mix === "string") {
349
+ return mix;
350
+ }
351
+ let resolvedValue;
352
+ let string = "";
353
+ for (let k = 0;k < mix.length; k++) {
354
+ if (mix[k]) {
355
+ if (resolvedValue = toValue(mix[k])) {
356
+ string && (string += " ");
357
+ string += resolvedValue;
358
+ }
359
+ }
360
+ }
361
+ return string;
362
+ };
363
+ function createTailwindMerge(createConfigFirst, ...createConfigRest) {
364
+ let configUtils;
365
+ let cacheGet;
366
+ let cacheSet;
367
+ let functionToCall = initTailwindMerge;
368
+ function initTailwindMerge(classList) {
369
+ const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());
370
+ configUtils = createConfigUtils(config);
371
+ cacheGet = configUtils.cache.get;
372
+ cacheSet = configUtils.cache.set;
373
+ functionToCall = tailwindMerge;
374
+ return tailwindMerge(classList);
375
+ }
376
+ function tailwindMerge(classList) {
377
+ const cachedResult = cacheGet(classList);
378
+ if (cachedResult) {
379
+ return cachedResult;
380
+ }
381
+ const result = mergeClassList(classList, configUtils);
382
+ cacheSet(classList, result);
383
+ return result;
384
+ }
385
+ return function callTailwindMerge() {
386
+ return functionToCall(twJoin.apply(null, arguments));
387
+ };
388
+ }
389
+ var fromTheme = (key) => {
390
+ const themeGetter = (theme) => theme[key] || [];
391
+ themeGetter.isThemeGetter = true;
392
+ return themeGetter;
393
+ };
394
+ var arbitraryValueRegex = /^\[(?:([a-z-]+):)?(.+)\]$/i;
395
+ var fractionRegex = /^\d+\/\d+$/;
396
+ var stringLengths = /* @__PURE__ */ new Set(["px", "full", "screen"]);
397
+ var tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
398
+ var lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/;
399
+ var colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/;
400
+ var shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
401
+ var imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
402
+ var isLength = (value) => isNumber(value) || stringLengths.has(value) || fractionRegex.test(value);
403
+ var isArbitraryLength = (value) => getIsArbitraryValue(value, "length", isLengthOnly);
404
+ var isNumber = (value) => Boolean(value) && !Number.isNaN(Number(value));
405
+ var isArbitraryNumber = (value) => getIsArbitraryValue(value, "number", isNumber);
406
+ var isInteger = (value) => Boolean(value) && Number.isInteger(Number(value));
407
+ var isPercent = (value) => value.endsWith("%") && isNumber(value.slice(0, -1));
408
+ var isArbitraryValue = (value) => arbitraryValueRegex.test(value);
409
+ var isTshirtSize = (value) => tshirtUnitRegex.test(value);
410
+ var sizeLabels = /* @__PURE__ */ new Set(["length", "size", "percentage"]);
411
+ var isArbitrarySize = (value) => getIsArbitraryValue(value, sizeLabels, isNever);
412
+ var isArbitraryPosition = (value) => getIsArbitraryValue(value, "position", isNever);
413
+ var imageLabels = /* @__PURE__ */ new Set(["image", "url"]);
414
+ var isArbitraryImage = (value) => getIsArbitraryValue(value, imageLabels, isImage);
415
+ var isArbitraryShadow = (value) => getIsArbitraryValue(value, "", isShadow);
416
+ var isAny = () => true;
417
+ var getIsArbitraryValue = (value, label, testValue) => {
418
+ const result = arbitraryValueRegex.exec(value);
419
+ if (result) {
420
+ if (result[1]) {
421
+ return typeof label === "string" ? result[1] === label : label.has(result[1]);
422
+ }
423
+ return testValue(result[2]);
424
+ }
425
+ return false;
426
+ };
427
+ var isLengthOnly = (value) => lengthUnitRegex.test(value) && !colorFunctionRegex.test(value);
428
+ var isNever = () => false;
429
+ var isShadow = (value) => shadowRegex.test(value);
430
+ var isImage = (value) => imageRegex.test(value);
431
+ var getDefaultConfig = () => {
432
+ const colors = fromTheme("colors");
433
+ const spacing = fromTheme("spacing");
434
+ const blur = fromTheme("blur");
435
+ const brightness = fromTheme("brightness");
436
+ const borderColor = fromTheme("borderColor");
437
+ const borderRadius = fromTheme("borderRadius");
438
+ const borderSpacing = fromTheme("borderSpacing");
439
+ const borderWidth = fromTheme("borderWidth");
440
+ const contrast = fromTheme("contrast");
441
+ const grayscale = fromTheme("grayscale");
442
+ const hueRotate = fromTheme("hueRotate");
443
+ const invert = fromTheme("invert");
444
+ const gap = fromTheme("gap");
445
+ const gradientColorStops = fromTheme("gradientColorStops");
446
+ const gradientColorStopPositions = fromTheme("gradientColorStopPositions");
447
+ const inset = fromTheme("inset");
448
+ const margin = fromTheme("margin");
449
+ const opacity = fromTheme("opacity");
450
+ const padding = fromTheme("padding");
451
+ const saturate = fromTheme("saturate");
452
+ const scale = fromTheme("scale");
453
+ const sepia = fromTheme("sepia");
454
+ const skew = fromTheme("skew");
455
+ const space = fromTheme("space");
456
+ const translate = fromTheme("translate");
457
+ const getOverscroll = () => ["auto", "contain", "none"];
458
+ const getOverflow = () => ["auto", "hidden", "clip", "visible", "scroll"];
459
+ const getSpacingWithAutoAndArbitrary = () => ["auto", isArbitraryValue, spacing];
460
+ const getSpacingWithArbitrary = () => [isArbitraryValue, spacing];
461
+ const getLengthWithEmptyAndArbitrary = () => ["", isLength, isArbitraryLength];
462
+ const getNumberWithAutoAndArbitrary = () => ["auto", isNumber, isArbitraryValue];
463
+ const getPositions = () => ["bottom", "center", "left", "left-bottom", "left-top", "right", "right-bottom", "right-top", "top"];
464
+ const getLineStyles = () => ["solid", "dashed", "dotted", "double", "none"];
465
+ const getBlendModes = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"];
466
+ const getAlign = () => ["start", "end", "center", "between", "around", "evenly", "stretch"];
467
+ const getZeroAndEmpty = () => ["", "0", isArbitraryValue];
468
+ const getBreaks = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"];
469
+ const getNumberAndArbitrary = () => [isNumber, isArbitraryValue];
470
+ return {
471
+ cacheSize: 500,
472
+ separator: ":",
473
+ theme: {
474
+ colors: [isAny],
475
+ spacing: [isLength, isArbitraryLength],
476
+ blur: ["none", "", isTshirtSize, isArbitraryValue],
477
+ brightness: getNumberAndArbitrary(),
478
+ borderColor: [colors],
479
+ borderRadius: ["none", "", "full", isTshirtSize, isArbitraryValue],
480
+ borderSpacing: getSpacingWithArbitrary(),
481
+ borderWidth: getLengthWithEmptyAndArbitrary(),
482
+ contrast: getNumberAndArbitrary(),
483
+ grayscale: getZeroAndEmpty(),
484
+ hueRotate: getNumberAndArbitrary(),
485
+ invert: getZeroAndEmpty(),
486
+ gap: getSpacingWithArbitrary(),
487
+ gradientColorStops: [colors],
488
+ gradientColorStopPositions: [isPercent, isArbitraryLength],
489
+ inset: getSpacingWithAutoAndArbitrary(),
490
+ margin: getSpacingWithAutoAndArbitrary(),
491
+ opacity: getNumberAndArbitrary(),
492
+ padding: getSpacingWithArbitrary(),
493
+ saturate: getNumberAndArbitrary(),
494
+ scale: getNumberAndArbitrary(),
495
+ sepia: getZeroAndEmpty(),
496
+ skew: getNumberAndArbitrary(),
497
+ space: getSpacingWithArbitrary(),
498
+ translate: getSpacingWithArbitrary()
499
+ },
500
+ classGroups: {
501
+ aspect: [{
502
+ aspect: ["auto", "square", "video", isArbitraryValue]
503
+ }],
504
+ container: ["container"],
505
+ columns: [{
506
+ columns: [isTshirtSize]
507
+ }],
508
+ "break-after": [{
509
+ "break-after": getBreaks()
510
+ }],
511
+ "break-before": [{
512
+ "break-before": getBreaks()
513
+ }],
514
+ "break-inside": [{
515
+ "break-inside": ["auto", "avoid", "avoid-page", "avoid-column"]
516
+ }],
517
+ "box-decoration": [{
518
+ "box-decoration": ["slice", "clone"]
519
+ }],
520
+ box: [{
521
+ box: ["border", "content"]
522
+ }],
523
+ display: ["block", "inline-block", "inline", "flex", "inline-flex", "table", "inline-table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row-group", "table-row", "flow-root", "grid", "inline-grid", "contents", "list-item", "hidden"],
524
+ float: [{
525
+ float: ["right", "left", "none", "start", "end"]
526
+ }],
527
+ clear: [{
528
+ clear: ["left", "right", "both", "none", "start", "end"]
529
+ }],
530
+ isolation: ["isolate", "isolation-auto"],
531
+ "object-fit": [{
532
+ object: ["contain", "cover", "fill", "none", "scale-down"]
533
+ }],
534
+ "object-position": [{
535
+ object: [...getPositions(), isArbitraryValue]
536
+ }],
537
+ overflow: [{
538
+ overflow: getOverflow()
539
+ }],
540
+ "overflow-x": [{
541
+ "overflow-x": getOverflow()
542
+ }],
543
+ "overflow-y": [{
544
+ "overflow-y": getOverflow()
545
+ }],
546
+ overscroll: [{
547
+ overscroll: getOverscroll()
548
+ }],
549
+ "overscroll-x": [{
550
+ "overscroll-x": getOverscroll()
551
+ }],
552
+ "overscroll-y": [{
553
+ "overscroll-y": getOverscroll()
554
+ }],
555
+ position: ["static", "fixed", "absolute", "relative", "sticky"],
556
+ inset: [{
557
+ inset: [inset]
558
+ }],
559
+ "inset-x": [{
560
+ "inset-x": [inset]
561
+ }],
562
+ "inset-y": [{
563
+ "inset-y": [inset]
564
+ }],
565
+ start: [{
566
+ start: [inset]
567
+ }],
568
+ end: [{
569
+ end: [inset]
570
+ }],
571
+ top: [{
572
+ top: [inset]
573
+ }],
574
+ right: [{
575
+ right: [inset]
576
+ }],
577
+ bottom: [{
578
+ bottom: [inset]
579
+ }],
580
+ left: [{
581
+ left: [inset]
582
+ }],
583
+ visibility: ["visible", "invisible", "collapse"],
584
+ z: [{
585
+ z: ["auto", isInteger, isArbitraryValue]
586
+ }],
587
+ basis: [{
588
+ basis: getSpacingWithAutoAndArbitrary()
589
+ }],
590
+ "flex-direction": [{
591
+ flex: ["row", "row-reverse", "col", "col-reverse"]
592
+ }],
593
+ "flex-wrap": [{
594
+ flex: ["wrap", "wrap-reverse", "nowrap"]
595
+ }],
596
+ flex: [{
597
+ flex: ["1", "auto", "initial", "none", isArbitraryValue]
598
+ }],
599
+ grow: [{
600
+ grow: getZeroAndEmpty()
601
+ }],
602
+ shrink: [{
603
+ shrink: getZeroAndEmpty()
604
+ }],
605
+ order: [{
606
+ order: ["first", "last", "none", isInteger, isArbitraryValue]
607
+ }],
608
+ "grid-cols": [{
609
+ "grid-cols": [isAny]
610
+ }],
611
+ "col-start-end": [{
612
+ col: ["auto", {
613
+ span: ["full", isInteger, isArbitraryValue]
614
+ }, isArbitraryValue]
615
+ }],
616
+ "col-start": [{
617
+ "col-start": getNumberWithAutoAndArbitrary()
618
+ }],
619
+ "col-end": [{
620
+ "col-end": getNumberWithAutoAndArbitrary()
621
+ }],
622
+ "grid-rows": [{
623
+ "grid-rows": [isAny]
624
+ }],
625
+ "row-start-end": [{
626
+ row: ["auto", {
627
+ span: [isInteger, isArbitraryValue]
628
+ }, isArbitraryValue]
629
+ }],
630
+ "row-start": [{
631
+ "row-start": getNumberWithAutoAndArbitrary()
632
+ }],
633
+ "row-end": [{
634
+ "row-end": getNumberWithAutoAndArbitrary()
635
+ }],
636
+ "grid-flow": [{
637
+ "grid-flow": ["row", "col", "dense", "row-dense", "col-dense"]
638
+ }],
639
+ "auto-cols": [{
640
+ "auto-cols": ["auto", "min", "max", "fr", isArbitraryValue]
641
+ }],
642
+ "auto-rows": [{
643
+ "auto-rows": ["auto", "min", "max", "fr", isArbitraryValue]
644
+ }],
645
+ gap: [{
646
+ gap: [gap]
647
+ }],
648
+ "gap-x": [{
649
+ "gap-x": [gap]
650
+ }],
651
+ "gap-y": [{
652
+ "gap-y": [gap]
653
+ }],
654
+ "justify-content": [{
655
+ justify: ["normal", ...getAlign()]
656
+ }],
657
+ "justify-items": [{
658
+ "justify-items": ["start", "end", "center", "stretch"]
659
+ }],
660
+ "justify-self": [{
661
+ "justify-self": ["auto", "start", "end", "center", "stretch"]
662
+ }],
663
+ "align-content": [{
664
+ content: ["normal", ...getAlign(), "baseline"]
665
+ }],
666
+ "align-items": [{
667
+ items: ["start", "end", "center", "baseline", "stretch"]
668
+ }],
669
+ "align-self": [{
670
+ self: ["auto", "start", "end", "center", "stretch", "baseline"]
671
+ }],
672
+ "place-content": [{
673
+ "place-content": [...getAlign(), "baseline"]
674
+ }],
675
+ "place-items": [{
676
+ "place-items": ["start", "end", "center", "baseline", "stretch"]
677
+ }],
678
+ "place-self": [{
679
+ "place-self": ["auto", "start", "end", "center", "stretch"]
680
+ }],
681
+ p: [{
682
+ p: [padding]
683
+ }],
684
+ px: [{
685
+ px: [padding]
686
+ }],
687
+ py: [{
688
+ py: [padding]
689
+ }],
690
+ ps: [{
691
+ ps: [padding]
692
+ }],
693
+ pe: [{
694
+ pe: [padding]
695
+ }],
696
+ pt: [{
697
+ pt: [padding]
698
+ }],
699
+ pr: [{
700
+ pr: [padding]
701
+ }],
702
+ pb: [{
703
+ pb: [padding]
704
+ }],
705
+ pl: [{
706
+ pl: [padding]
707
+ }],
708
+ m: [{
709
+ m: [margin]
710
+ }],
711
+ mx: [{
712
+ mx: [margin]
713
+ }],
714
+ my: [{
715
+ my: [margin]
716
+ }],
717
+ ms: [{
718
+ ms: [margin]
719
+ }],
720
+ me: [{
721
+ me: [margin]
722
+ }],
723
+ mt: [{
724
+ mt: [margin]
725
+ }],
726
+ mr: [{
727
+ mr: [margin]
728
+ }],
729
+ mb: [{
730
+ mb: [margin]
731
+ }],
732
+ ml: [{
733
+ ml: [margin]
734
+ }],
735
+ "space-x": [{
736
+ "space-x": [space]
737
+ }],
738
+ "space-x-reverse": ["space-x-reverse"],
739
+ "space-y": [{
740
+ "space-y": [space]
741
+ }],
742
+ "space-y-reverse": ["space-y-reverse"],
743
+ w: [{
744
+ w: ["auto", "min", "max", "fit", "svw", "lvw", "dvw", isArbitraryValue, spacing]
745
+ }],
746
+ "min-w": [{
747
+ "min-w": [isArbitraryValue, spacing, "min", "max", "fit"]
748
+ }],
749
+ "max-w": [{
750
+ "max-w": [isArbitraryValue, spacing, "none", "full", "min", "max", "fit", "prose", {
751
+ screen: [isTshirtSize]
752
+ }, isTshirtSize]
753
+ }],
754
+ h: [{
755
+ h: [isArbitraryValue, spacing, "auto", "min", "max", "fit", "svh", "lvh", "dvh"]
756
+ }],
757
+ "min-h": [{
758
+ "min-h": [isArbitraryValue, spacing, "min", "max", "fit", "svh", "lvh", "dvh"]
759
+ }],
760
+ "max-h": [{
761
+ "max-h": [isArbitraryValue, spacing, "min", "max", "fit", "svh", "lvh", "dvh"]
762
+ }],
763
+ size: [{
764
+ size: [isArbitraryValue, spacing, "auto", "min", "max", "fit"]
765
+ }],
766
+ "font-size": [{
767
+ text: ["base", isTshirtSize, isArbitraryLength]
768
+ }],
769
+ "font-smoothing": ["antialiased", "subpixel-antialiased"],
770
+ "font-style": ["italic", "not-italic"],
771
+ "font-weight": [{
772
+ font: ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black", isArbitraryNumber]
773
+ }],
774
+ "font-family": [{
775
+ font: [isAny]
776
+ }],
777
+ "fvn-normal": ["normal-nums"],
778
+ "fvn-ordinal": ["ordinal"],
779
+ "fvn-slashed-zero": ["slashed-zero"],
780
+ "fvn-figure": ["lining-nums", "oldstyle-nums"],
781
+ "fvn-spacing": ["proportional-nums", "tabular-nums"],
782
+ "fvn-fraction": ["diagonal-fractions", "stacked-fractons"],
783
+ tracking: [{
784
+ tracking: ["tighter", "tight", "normal", "wide", "wider", "widest", isArbitraryValue]
785
+ }],
786
+ "line-clamp": [{
787
+ "line-clamp": ["none", isNumber, isArbitraryNumber]
788
+ }],
789
+ leading: [{
790
+ leading: ["none", "tight", "snug", "normal", "relaxed", "loose", isLength, isArbitraryValue]
791
+ }],
792
+ "list-image": [{
793
+ "list-image": ["none", isArbitraryValue]
794
+ }],
795
+ "list-style-type": [{
796
+ list: ["none", "disc", "decimal", isArbitraryValue]
797
+ }],
798
+ "list-style-position": [{
799
+ list: ["inside", "outside"]
800
+ }],
801
+ "placeholder-color": [{
802
+ placeholder: [colors]
803
+ }],
804
+ "placeholder-opacity": [{
805
+ "placeholder-opacity": [opacity]
806
+ }],
807
+ "text-alignment": [{
808
+ text: ["left", "center", "right", "justify", "start", "end"]
809
+ }],
810
+ "text-color": [{
811
+ text: [colors]
812
+ }],
813
+ "text-opacity": [{
814
+ "text-opacity": [opacity]
815
+ }],
816
+ "text-decoration": ["underline", "overline", "line-through", "no-underline"],
817
+ "text-decoration-style": [{
818
+ decoration: [...getLineStyles(), "wavy"]
819
+ }],
820
+ "text-decoration-thickness": [{
821
+ decoration: ["auto", "from-font", isLength, isArbitraryLength]
822
+ }],
823
+ "underline-offset": [{
824
+ "underline-offset": ["auto", isLength, isArbitraryValue]
825
+ }],
826
+ "text-decoration-color": [{
827
+ decoration: [colors]
828
+ }],
829
+ "text-transform": ["uppercase", "lowercase", "capitalize", "normal-case"],
830
+ "text-overflow": ["truncate", "text-ellipsis", "text-clip"],
831
+ "text-wrap": [{
832
+ text: ["wrap", "nowrap", "balance", "pretty"]
833
+ }],
834
+ indent: [{
835
+ indent: getSpacingWithArbitrary()
836
+ }],
837
+ "vertical-align": [{
838
+ align: ["baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", isArbitraryValue]
839
+ }],
840
+ whitespace: [{
841
+ whitespace: ["normal", "nowrap", "pre", "pre-line", "pre-wrap", "break-spaces"]
842
+ }],
843
+ break: [{
844
+ break: ["normal", "words", "all", "keep"]
845
+ }],
846
+ hyphens: [{
847
+ hyphens: ["none", "manual", "auto"]
848
+ }],
849
+ content: [{
850
+ content: ["none", isArbitraryValue]
851
+ }],
852
+ "bg-attachment": [{
853
+ bg: ["fixed", "local", "scroll"]
854
+ }],
855
+ "bg-clip": [{
856
+ "bg-clip": ["border", "padding", "content", "text"]
857
+ }],
858
+ "bg-opacity": [{
859
+ "bg-opacity": [opacity]
860
+ }],
861
+ "bg-origin": [{
862
+ "bg-origin": ["border", "padding", "content"]
863
+ }],
864
+ "bg-position": [{
865
+ bg: [...getPositions(), isArbitraryPosition]
866
+ }],
867
+ "bg-repeat": [{
868
+ bg: ["no-repeat", {
869
+ repeat: ["", "x", "y", "round", "space"]
870
+ }]
871
+ }],
872
+ "bg-size": [{
873
+ bg: ["auto", "cover", "contain", isArbitrarySize]
874
+ }],
875
+ "bg-image": [{
876
+ bg: ["none", {
877
+ "gradient-to": ["t", "tr", "r", "br", "b", "bl", "l", "tl"]
878
+ }, isArbitraryImage]
879
+ }],
880
+ "bg-color": [{
881
+ bg: [colors]
882
+ }],
883
+ "gradient-from-pos": [{
884
+ from: [gradientColorStopPositions]
885
+ }],
886
+ "gradient-via-pos": [{
887
+ via: [gradientColorStopPositions]
888
+ }],
889
+ "gradient-to-pos": [{
890
+ to: [gradientColorStopPositions]
891
+ }],
892
+ "gradient-from": [{
893
+ from: [gradientColorStops]
894
+ }],
895
+ "gradient-via": [{
896
+ via: [gradientColorStops]
897
+ }],
898
+ "gradient-to": [{
899
+ to: [gradientColorStops]
900
+ }],
901
+ rounded: [{
902
+ rounded: [borderRadius]
903
+ }],
904
+ "rounded-s": [{
905
+ "rounded-s": [borderRadius]
906
+ }],
907
+ "rounded-e": [{
908
+ "rounded-e": [borderRadius]
909
+ }],
910
+ "rounded-t": [{
911
+ "rounded-t": [borderRadius]
912
+ }],
913
+ "rounded-r": [{
914
+ "rounded-r": [borderRadius]
915
+ }],
916
+ "rounded-b": [{
917
+ "rounded-b": [borderRadius]
918
+ }],
919
+ "rounded-l": [{
920
+ "rounded-l": [borderRadius]
921
+ }],
922
+ "rounded-ss": [{
923
+ "rounded-ss": [borderRadius]
924
+ }],
925
+ "rounded-se": [{
926
+ "rounded-se": [borderRadius]
927
+ }],
928
+ "rounded-ee": [{
929
+ "rounded-ee": [borderRadius]
930
+ }],
931
+ "rounded-es": [{
932
+ "rounded-es": [borderRadius]
933
+ }],
934
+ "rounded-tl": [{
935
+ "rounded-tl": [borderRadius]
936
+ }],
937
+ "rounded-tr": [{
938
+ "rounded-tr": [borderRadius]
939
+ }],
940
+ "rounded-br": [{
941
+ "rounded-br": [borderRadius]
942
+ }],
943
+ "rounded-bl": [{
944
+ "rounded-bl": [borderRadius]
945
+ }],
946
+ "border-w": [{
947
+ border: [borderWidth]
948
+ }],
949
+ "border-w-x": [{
950
+ "border-x": [borderWidth]
951
+ }],
952
+ "border-w-y": [{
953
+ "border-y": [borderWidth]
954
+ }],
955
+ "border-w-s": [{
956
+ "border-s": [borderWidth]
957
+ }],
958
+ "border-w-e": [{
959
+ "border-e": [borderWidth]
960
+ }],
961
+ "border-w-t": [{
962
+ "border-t": [borderWidth]
963
+ }],
964
+ "border-w-r": [{
965
+ "border-r": [borderWidth]
966
+ }],
967
+ "border-w-b": [{
968
+ "border-b": [borderWidth]
969
+ }],
970
+ "border-w-l": [{
971
+ "border-l": [borderWidth]
972
+ }],
973
+ "border-opacity": [{
974
+ "border-opacity": [opacity]
975
+ }],
976
+ "border-style": [{
977
+ border: [...getLineStyles(), "hidden"]
978
+ }],
979
+ "divide-x": [{
980
+ "divide-x": [borderWidth]
981
+ }],
982
+ "divide-x-reverse": ["divide-x-reverse"],
983
+ "divide-y": [{
984
+ "divide-y": [borderWidth]
985
+ }],
986
+ "divide-y-reverse": ["divide-y-reverse"],
987
+ "divide-opacity": [{
988
+ "divide-opacity": [opacity]
989
+ }],
990
+ "divide-style": [{
991
+ divide: getLineStyles()
992
+ }],
993
+ "border-color": [{
994
+ border: [borderColor]
995
+ }],
996
+ "border-color-x": [{
997
+ "border-x": [borderColor]
998
+ }],
999
+ "border-color-y": [{
1000
+ "border-y": [borderColor]
1001
+ }],
1002
+ "border-color-t": [{
1003
+ "border-t": [borderColor]
1004
+ }],
1005
+ "border-color-r": [{
1006
+ "border-r": [borderColor]
1007
+ }],
1008
+ "border-color-b": [{
1009
+ "border-b": [borderColor]
1010
+ }],
1011
+ "border-color-l": [{
1012
+ "border-l": [borderColor]
1013
+ }],
1014
+ "divide-color": [{
1015
+ divide: [borderColor]
1016
+ }],
1017
+ "outline-style": [{
1018
+ outline: ["", ...getLineStyles()]
1019
+ }],
1020
+ "outline-offset": [{
1021
+ "outline-offset": [isLength, isArbitraryValue]
1022
+ }],
1023
+ "outline-w": [{
1024
+ outline: [isLength, isArbitraryLength]
1025
+ }],
1026
+ "outline-color": [{
1027
+ outline: [colors]
1028
+ }],
1029
+ "ring-w": [{
1030
+ ring: getLengthWithEmptyAndArbitrary()
1031
+ }],
1032
+ "ring-w-inset": ["ring-inset"],
1033
+ "ring-color": [{
1034
+ ring: [colors]
1035
+ }],
1036
+ "ring-opacity": [{
1037
+ "ring-opacity": [opacity]
1038
+ }],
1039
+ "ring-offset-w": [{
1040
+ "ring-offset": [isLength, isArbitraryLength]
1041
+ }],
1042
+ "ring-offset-color": [{
1043
+ "ring-offset": [colors]
1044
+ }],
1045
+ shadow: [{
1046
+ shadow: ["", "inner", "none", isTshirtSize, isArbitraryShadow]
1047
+ }],
1048
+ "shadow-color": [{
1049
+ shadow: [isAny]
1050
+ }],
1051
+ opacity: [{
1052
+ opacity: [opacity]
1053
+ }],
1054
+ "mix-blend": [{
1055
+ "mix-blend": [...getBlendModes(), "plus-lighter", "plus-darker"]
1056
+ }],
1057
+ "bg-blend": [{
1058
+ "bg-blend": getBlendModes()
1059
+ }],
1060
+ filter: [{
1061
+ filter: ["", "none"]
1062
+ }],
1063
+ blur: [{
1064
+ blur: [blur]
1065
+ }],
1066
+ brightness: [{
1067
+ brightness: [brightness]
1068
+ }],
1069
+ contrast: [{
1070
+ contrast: [contrast]
1071
+ }],
1072
+ "drop-shadow": [{
1073
+ "drop-shadow": ["", "none", isTshirtSize, isArbitraryValue]
1074
+ }],
1075
+ grayscale: [{
1076
+ grayscale: [grayscale]
1077
+ }],
1078
+ "hue-rotate": [{
1079
+ "hue-rotate": [hueRotate]
1080
+ }],
1081
+ invert: [{
1082
+ invert: [invert]
1083
+ }],
1084
+ saturate: [{
1085
+ saturate: [saturate]
1086
+ }],
1087
+ sepia: [{
1088
+ sepia: [sepia]
1089
+ }],
1090
+ "backdrop-filter": [{
1091
+ "backdrop-filter": ["", "none"]
1092
+ }],
1093
+ "backdrop-blur": [{
1094
+ "backdrop-blur": [blur]
1095
+ }],
1096
+ "backdrop-brightness": [{
1097
+ "backdrop-brightness": [brightness]
1098
+ }],
1099
+ "backdrop-contrast": [{
1100
+ "backdrop-contrast": [contrast]
1101
+ }],
1102
+ "backdrop-grayscale": [{
1103
+ "backdrop-grayscale": [grayscale]
1104
+ }],
1105
+ "backdrop-hue-rotate": [{
1106
+ "backdrop-hue-rotate": [hueRotate]
1107
+ }],
1108
+ "backdrop-invert": [{
1109
+ "backdrop-invert": [invert]
1110
+ }],
1111
+ "backdrop-opacity": [{
1112
+ "backdrop-opacity": [opacity]
1113
+ }],
1114
+ "backdrop-saturate": [{
1115
+ "backdrop-saturate": [saturate]
1116
+ }],
1117
+ "backdrop-sepia": [{
1118
+ "backdrop-sepia": [sepia]
1119
+ }],
1120
+ "border-collapse": [{
1121
+ border: ["collapse", "separate"]
1122
+ }],
1123
+ "border-spacing": [{
1124
+ "border-spacing": [borderSpacing]
1125
+ }],
1126
+ "border-spacing-x": [{
1127
+ "border-spacing-x": [borderSpacing]
1128
+ }],
1129
+ "border-spacing-y": [{
1130
+ "border-spacing-y": [borderSpacing]
1131
+ }],
1132
+ "table-layout": [{
1133
+ table: ["auto", "fixed"]
1134
+ }],
1135
+ caption: [{
1136
+ caption: ["top", "bottom"]
1137
+ }],
1138
+ transition: [{
1139
+ transition: ["none", "all", "", "colors", "opacity", "shadow", "transform", isArbitraryValue]
1140
+ }],
1141
+ duration: [{
1142
+ duration: getNumberAndArbitrary()
1143
+ }],
1144
+ ease: [{
1145
+ ease: ["linear", "in", "out", "in-out", isArbitraryValue]
1146
+ }],
1147
+ delay: [{
1148
+ delay: getNumberAndArbitrary()
1149
+ }],
1150
+ animate: [{
1151
+ animate: ["none", "spin", "ping", "pulse", "bounce", isArbitraryValue]
1152
+ }],
1153
+ transform: [{
1154
+ transform: ["", "gpu", "none"]
1155
+ }],
1156
+ scale: [{
1157
+ scale: [scale]
1158
+ }],
1159
+ "scale-x": [{
1160
+ "scale-x": [scale]
1161
+ }],
1162
+ "scale-y": [{
1163
+ "scale-y": [scale]
1164
+ }],
1165
+ rotate: [{
1166
+ rotate: [isInteger, isArbitraryValue]
1167
+ }],
1168
+ "translate-x": [{
1169
+ "translate-x": [translate]
1170
+ }],
1171
+ "translate-y": [{
1172
+ "translate-y": [translate]
1173
+ }],
1174
+ "skew-x": [{
1175
+ "skew-x": [skew]
1176
+ }],
1177
+ "skew-y": [{
1178
+ "skew-y": [skew]
1179
+ }],
1180
+ "transform-origin": [{
1181
+ origin: ["center", "top", "top-right", "right", "bottom-right", "bottom", "bottom-left", "left", "top-left", isArbitraryValue]
1182
+ }],
1183
+ accent: [{
1184
+ accent: ["auto", colors]
1185
+ }],
1186
+ appearance: [{
1187
+ appearance: ["none", "auto"]
1188
+ }],
1189
+ cursor: [{
1190
+ cursor: ["auto", "default", "pointer", "wait", "text", "move", "help", "not-allowed", "none", "context-menu", "progress", "cell", "crosshair", "vertical-text", "alias", "copy", "no-drop", "grab", "grabbing", "all-scroll", "col-resize", "row-resize", "n-resize", "e-resize", "s-resize", "w-resize", "ne-resize", "nw-resize", "se-resize", "sw-resize", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "zoom-in", "zoom-out", isArbitraryValue]
1191
+ }],
1192
+ "caret-color": [{
1193
+ caret: [colors]
1194
+ }],
1195
+ "pointer-events": [{
1196
+ "pointer-events": ["none", "auto"]
1197
+ }],
1198
+ resize: [{
1199
+ resize: ["none", "y", "x", ""]
1200
+ }],
1201
+ "scroll-behavior": [{
1202
+ scroll: ["auto", "smooth"]
1203
+ }],
1204
+ "scroll-m": [{
1205
+ "scroll-m": getSpacingWithArbitrary()
1206
+ }],
1207
+ "scroll-mx": [{
1208
+ "scroll-mx": getSpacingWithArbitrary()
1209
+ }],
1210
+ "scroll-my": [{
1211
+ "scroll-my": getSpacingWithArbitrary()
1212
+ }],
1213
+ "scroll-ms": [{
1214
+ "scroll-ms": getSpacingWithArbitrary()
1215
+ }],
1216
+ "scroll-me": [{
1217
+ "scroll-me": getSpacingWithArbitrary()
1218
+ }],
1219
+ "scroll-mt": [{
1220
+ "scroll-mt": getSpacingWithArbitrary()
1221
+ }],
1222
+ "scroll-mr": [{
1223
+ "scroll-mr": getSpacingWithArbitrary()
1224
+ }],
1225
+ "scroll-mb": [{
1226
+ "scroll-mb": getSpacingWithArbitrary()
1227
+ }],
1228
+ "scroll-ml": [{
1229
+ "scroll-ml": getSpacingWithArbitrary()
1230
+ }],
1231
+ "scroll-p": [{
1232
+ "scroll-p": getSpacingWithArbitrary()
1233
+ }],
1234
+ "scroll-px": [{
1235
+ "scroll-px": getSpacingWithArbitrary()
1236
+ }],
1237
+ "scroll-py": [{
1238
+ "scroll-py": getSpacingWithArbitrary()
1239
+ }],
1240
+ "scroll-ps": [{
1241
+ "scroll-ps": getSpacingWithArbitrary()
1242
+ }],
1243
+ "scroll-pe": [{
1244
+ "scroll-pe": getSpacingWithArbitrary()
1245
+ }],
1246
+ "scroll-pt": [{
1247
+ "scroll-pt": getSpacingWithArbitrary()
1248
+ }],
1249
+ "scroll-pr": [{
1250
+ "scroll-pr": getSpacingWithArbitrary()
1251
+ }],
1252
+ "scroll-pb": [{
1253
+ "scroll-pb": getSpacingWithArbitrary()
1254
+ }],
1255
+ "scroll-pl": [{
1256
+ "scroll-pl": getSpacingWithArbitrary()
1257
+ }],
1258
+ "snap-align": [{
1259
+ snap: ["start", "end", "center", "align-none"]
1260
+ }],
1261
+ "snap-stop": [{
1262
+ snap: ["normal", "always"]
1263
+ }],
1264
+ "snap-type": [{
1265
+ snap: ["none", "x", "y", "both"]
1266
+ }],
1267
+ "snap-strictness": [{
1268
+ snap: ["mandatory", "proximity"]
1269
+ }],
1270
+ touch: [{
1271
+ touch: ["auto", "none", "manipulation"]
1272
+ }],
1273
+ "touch-x": [{
1274
+ "touch-pan": ["x", "left", "right"]
1275
+ }],
1276
+ "touch-y": [{
1277
+ "touch-pan": ["y", "up", "down"]
1278
+ }],
1279
+ "touch-pz": ["touch-pinch-zoom"],
1280
+ select: [{
1281
+ select: ["none", "text", "all", "auto"]
1282
+ }],
1283
+ "will-change": [{
1284
+ "will-change": ["auto", "scroll", "contents", "transform", isArbitraryValue]
1285
+ }],
1286
+ fill: [{
1287
+ fill: [colors, "none"]
1288
+ }],
1289
+ "stroke-w": [{
1290
+ stroke: [isLength, isArbitraryLength, isArbitraryNumber]
1291
+ }],
1292
+ stroke: [{
1293
+ stroke: [colors, "none"]
1294
+ }],
1295
+ sr: ["sr-only", "not-sr-only"],
1296
+ "forced-color-adjust": [{
1297
+ "forced-color-adjust": ["auto", "none"]
1298
+ }]
1299
+ },
1300
+ conflictingClassGroups: {
1301
+ overflow: ["overflow-x", "overflow-y"],
1302
+ overscroll: ["overscroll-x", "overscroll-y"],
1303
+ inset: ["inset-x", "inset-y", "start", "end", "top", "right", "bottom", "left"],
1304
+ "inset-x": ["right", "left"],
1305
+ "inset-y": ["top", "bottom"],
1306
+ flex: ["basis", "grow", "shrink"],
1307
+ gap: ["gap-x", "gap-y"],
1308
+ p: ["px", "py", "ps", "pe", "pt", "pr", "pb", "pl"],
1309
+ px: ["pr", "pl"],
1310
+ py: ["pt", "pb"],
1311
+ m: ["mx", "my", "ms", "me", "mt", "mr", "mb", "ml"],
1312
+ mx: ["mr", "ml"],
1313
+ my: ["mt", "mb"],
1314
+ size: ["w", "h"],
1315
+ "font-size": ["leading"],
1316
+ "fvn-normal": ["fvn-ordinal", "fvn-slashed-zero", "fvn-figure", "fvn-spacing", "fvn-fraction"],
1317
+ "fvn-ordinal": ["fvn-normal"],
1318
+ "fvn-slashed-zero": ["fvn-normal"],
1319
+ "fvn-figure": ["fvn-normal"],
1320
+ "fvn-spacing": ["fvn-normal"],
1321
+ "fvn-fraction": ["fvn-normal"],
1322
+ "line-clamp": ["display", "overflow"],
1323
+ rounded: ["rounded-s", "rounded-e", "rounded-t", "rounded-r", "rounded-b", "rounded-l", "rounded-ss", "rounded-se", "rounded-ee", "rounded-es", "rounded-tl", "rounded-tr", "rounded-br", "rounded-bl"],
1324
+ "rounded-s": ["rounded-ss", "rounded-es"],
1325
+ "rounded-e": ["rounded-se", "rounded-ee"],
1326
+ "rounded-t": ["rounded-tl", "rounded-tr"],
1327
+ "rounded-r": ["rounded-tr", "rounded-br"],
1328
+ "rounded-b": ["rounded-br", "rounded-bl"],
1329
+ "rounded-l": ["rounded-tl", "rounded-bl"],
1330
+ "border-spacing": ["border-spacing-x", "border-spacing-y"],
1331
+ "border-w": ["border-w-s", "border-w-e", "border-w-t", "border-w-r", "border-w-b", "border-w-l"],
1332
+ "border-w-x": ["border-w-r", "border-w-l"],
1333
+ "border-w-y": ["border-w-t", "border-w-b"],
1334
+ "border-color": ["border-color-t", "border-color-r", "border-color-b", "border-color-l"],
1335
+ "border-color-x": ["border-color-r", "border-color-l"],
1336
+ "border-color-y": ["border-color-t", "border-color-b"],
1337
+ "scroll-m": ["scroll-mx", "scroll-my", "scroll-ms", "scroll-me", "scroll-mt", "scroll-mr", "scroll-mb", "scroll-ml"],
1338
+ "scroll-mx": ["scroll-mr", "scroll-ml"],
1339
+ "scroll-my": ["scroll-mt", "scroll-mb"],
1340
+ "scroll-p": ["scroll-px", "scroll-py", "scroll-ps", "scroll-pe", "scroll-pt", "scroll-pr", "scroll-pb", "scroll-pl"],
1341
+ "scroll-px": ["scroll-pr", "scroll-pl"],
1342
+ "scroll-py": ["scroll-pt", "scroll-pb"],
1343
+ touch: ["touch-x", "touch-y", "touch-pz"],
1344
+ "touch-x": ["touch"],
1345
+ "touch-y": ["touch"],
1346
+ "touch-pz": ["touch"]
1347
+ },
1348
+ conflictingClassGroupModifiers: {
1349
+ "font-size": ["leading"]
1350
+ }
1351
+ };
1352
+ };
1353
+ var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
1354
+
1355
+ // src/cn.ts
1356
+ function cn(...inputs) {
1357
+ return twMerge(clsx(inputs));
1358
+ }
1359
+
1360
+ // src/components/homepage/Counter.tsx
1361
+ import { jsx, jsxs } from "react/jsx-runtime";
1362
+ var Triangle = ({ rotated }) => /* @__PURE__ */ jsx("svg", {
1363
+ width: "12px",
1364
+ height: "7px",
1365
+ viewBox: "0 0 12 7",
1366
+ fill: "none",
1367
+ style: {
1368
+ transform: rotated ? "rotate(180deg)" : "rotate(0deg)"
1369
+ },
1370
+ children: /* @__PURE__ */ jsx("path", {
1371
+ className: "fill-text",
1372
+ d: "M7.17096 0.475588C6.73198 0.0764969 6.01906 0.0764969 5.58007 0.475588L1.08483 4.56228C0.761737 4.85601 0.666915 5.29341 0.84251 5.67654C1.01811 6.05966 1.42549 6.3087 1.88203 6.3087H10.8725C11.3255 6.3087 11.7364 6.05966 11.912 5.67654C12.0876 5.29341 11.9893 4.85601 11.6697 4.56228L7.17448 0.475588H7.17096Z"
1373
+ })
1374
+ });
1375
+ var container = {
1376
+ display: "flex",
1377
+ flexDirection: "row",
1378
+ justifyContent: "flex-end",
1379
+ alignItems: "center",
1380
+ borderRadius: 4,
1381
+ height: 42,
1382
+ overflow: "hidden",
1383
+ flexShrink: 0
1384
+ };
1385
+ var buttonContainer = {
1386
+ display: "flex",
1387
+ width: 30,
1388
+ padding: 2,
1389
+ height: 20,
1390
+ justifyContent: "center",
1391
+ alignItems: "center",
1392
+ backgroundColor: "inherit",
1393
+ cursor: "pointer"
1394
+ };
1395
+ var Counter = ({
1396
+ count,
1397
+ setCount,
1398
+ minCount = 0,
1399
+ step = 1
1400
+ }) => {
1401
+ const decrement = () => {
1402
+ if (count > minCount) {
1403
+ setCount(Math.max(minCount, count - step));
1404
+ }
1405
+ };
1406
+ const increment = () => {
1407
+ setCount(count + step);
1408
+ };
1409
+ return /* @__PURE__ */ jsxs("div", {
1410
+ style: container,
1411
+ className: cn("border-effect w-[140px] text-text"),
1412
+ children: [
1413
+ /* @__PURE__ */ jsx("input", {
1414
+ className: "fontbrand text-2xl font-medium min-w-[80px] border-0 text-end bg-transparent outline-0 text-text",
1415
+ type: "number",
1416
+ onClick: (e) => e.currentTarget.select(),
1417
+ value: count,
1418
+ onChange: (e) => {
1419
+ if (e.target.value.trim() === "") {
1420
+ setCount(step === 1 ? 1 : minCount);
1421
+ return;
1422
+ }
1423
+ const inputValue = parseInt(e.target.value, 10);
1424
+ const validValue = Math.max(inputValue, minCount);
1425
+ if (step > 1) {
1426
+ const roundedValue = Math.round(validValue / step) * step;
1427
+ setCount(Math.max(roundedValue, minCount));
1428
+ } else {
1429
+ setCount(validValue);
1430
+ }
1431
+ }
1432
+ }),
1433
+ /* @__PURE__ */ jsxs("div", {
1434
+ className: "flex flex-col ml-3 h-full",
1435
+ children: [
1436
+ /* @__PURE__ */ jsx("button", {
1437
+ type: "button",
1438
+ className: "border-0 border-l-2 border-l-solid border-b-2 flex-1 border-text border-b-[var(--box-stroke)] border-l-[var(--box-stroke)]",
1439
+ style: {
1440
+ ...buttonContainer
1441
+ },
1442
+ onClick: increment,
1443
+ children: /* @__PURE__ */ jsx(Triangle, {
1444
+ rotated: false
1445
+ })
1446
+ }),
1447
+ /* @__PURE__ */ jsx("button", {
1448
+ type: "button",
1449
+ className: "border-0 border-l-2 border-l-solid flex-1 border-text border-l-[var(--box-stroke)]",
1450
+ style: {
1451
+ ...buttonContainer
1452
+ },
1453
+ onClick: decrement,
1454
+ children: /* @__PURE__ */ jsx(Triangle, {
1455
+ rotated: true
1456
+ })
1457
+ })
1458
+ ]
1459
+ })
1460
+ ]
1461
+ });
1462
+ };
1463
+
1464
+ // src/components/homepage/InfoTooltip.tsx
1465
+ import { useState } from "react";
1466
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
1467
+ var InfoTooltip = ({ text }) => {
1468
+ const [isVisible, setIsVisible] = useState(false);
1469
+ return /* @__PURE__ */ jsxs2("span", {
1470
+ className: "relative inline-block ml-1 text-gray-600 cursor-default",
1471
+ onMouseEnter: () => setIsVisible(true),
1472
+ onMouseLeave: () => setIsVisible(false),
1473
+ children: [
1474
+ /* @__PURE__ */ jsx2("span", {
1475
+ style: { fontSize: "1rem" },
1476
+ children: "ⓘ"
1477
+ }),
1478
+ isVisible && /* @__PURE__ */ jsxs2("span", {
1479
+ className: "absolute bottom-full left-1/2 transform -translate-x-1/2 bg-gray-800 text-white p-2 rounded text-xs whitespace-nowrap z-10 cursor-default",
1480
+ children: [
1481
+ text,
1482
+ /* @__PURE__ */ jsx2("span", {
1483
+ className: "absolute top-full left-1/2 transform -translate-x-1/2 border-5 border-solid border-gray-800 border-t-transparent border-r-transparent border-b-transparent border-l-transparent cursor-default"
1484
+ })
1485
+ ]
1486
+ })
1487
+ ]
1488
+ });
1489
+ };
1490
+
1491
+ // src/components/homepage/PricingBulletPoint.tsx
1492
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
1493
+ var container2 = {
1494
+ display: "flex",
1495
+ flexDirection: "row",
1496
+ alignItems: "center",
1497
+ gap: "10px"
1498
+ };
1499
+ var greyCircle = {
1500
+ width: 20,
1501
+ height: 20,
1502
+ borderRadius: 10,
1503
+ backgroundColor: "var(--footer-border)"
1504
+ };
1505
+ var PricingBulletPoint = ({ text, checked, children }) => {
1506
+ const checkmarkSVG = /* @__PURE__ */ jsxs3("svg", {
1507
+ width: "20",
1508
+ height: "20",
1509
+ viewBox: "0 0 20 20",
1510
+ fill: "none",
1511
+ xmlns: "http://www.w3.org/2000/svg",
1512
+ style: {
1513
+ flexShrink: 0
1514
+ },
1515
+ children: [
1516
+ /* @__PURE__ */ jsx3("circle", {
1517
+ cx: "10",
1518
+ cy: "10",
1519
+ r: "10",
1520
+ fill: "#0B84F3"
1521
+ }),
1522
+ /* @__PURE__ */ jsx3("path", {
1523
+ d: "M14.7908 7.20505C15.0697 7.47844 15.0697 7.92243 14.7908 8.19583L9.07711 13.795C8.79813 14.0683 8.34505 14.0683 8.06606 13.795L5.20924 10.9954C4.93025 10.722 4.93025 10.278 5.20924 10.0046C5.48823 9.73121 5.9413 9.73121 6.22029 10.0046L8.5727 12.3077L13.7819 7.20505C14.0609 6.93165 14.514 6.93165 14.793 7.20505H14.7908Z",
1524
+ fill: "white"
1525
+ })
1526
+ ]
1527
+ });
1528
+ return /* @__PURE__ */ jsxs3("div", {
1529
+ style: container2,
1530
+ children: [
1531
+ checked ? checkmarkSVG : /* @__PURE__ */ jsx3("div", {
1532
+ style: greyCircle
1533
+ }),
1534
+ /* @__PURE__ */ jsxs3("div", {
1535
+ className: "fontbrand text-lg\t",
1536
+ children: [
1537
+ text,
1538
+ children
1539
+ ]
1540
+ })
1541
+ ]
1542
+ });
1543
+ };
1544
+
1545
+ // src/components/homepage/FreePricing.tsx
1546
+ import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
1547
+ var Container = ({
1548
+ children
1549
+ }) => {
1550
+ return /* @__PURE__ */ jsx4("div", {
1551
+ className: "flex flex-col border-effect rounded-xl p-5 bg-pane",
1552
+ children
1553
+ });
1554
+ };
1555
+ var Title = ({ children }) => {
1556
+ return /* @__PURE__ */ jsx4("div", {
1557
+ className: "text-4xl font-bold leading-none fontbrand mt-2 mb-5",
1558
+ children
1559
+ });
1560
+ };
1561
+ var Audience = ({ children }) => {
1562
+ return /* @__PURE__ */ jsx4("div", {
1563
+ className: "fontbrand text-lg leading-none",
1564
+ children
1565
+ });
1566
+ };
1567
+ var BottomInfo = ({
1568
+ children,
1569
+ className,
1570
+ ...props
1571
+ }) => {
1572
+ return /* @__PURE__ */ jsx4("div", {
1573
+ className: cn(className, "text-[var(--subtitle)] fontbrand text-sm"),
1574
+ ...props,
1575
+ children
1576
+ });
1577
+ };
1578
+ var PriceTag = ({ children }) => {
1579
+ return /* @__PURE__ */ jsx4("div", {
1580
+ className: "fontbrand text-2xl font-bold min-w-[80px] w-auto text-right shrink-0 ml-4",
1581
+ children
1582
+ });
1583
+ };
1584
+ var SmallPriceTag = ({ children }) => {
1585
+ return /* @__PURE__ */ jsx4("div", {
1586
+ className: "fontbrand text-2xl font-medium w-auto min-w-[80px] text-right shrink-0",
1587
+ children
1588
+ });
1589
+ };
1590
+ var FreePricing = () => {
1591
+ return /* @__PURE__ */ jsxs4(Container, {
1592
+ children: [
1593
+ /* @__PURE__ */ jsx4(Audience, {
1594
+ children: "For individuals and companies of up to 3 people"
1595
+ }),
1596
+ /* @__PURE__ */ jsx4(Title, {
1597
+ children: "Free License"
1598
+ }),
1599
+ /* @__PURE__ */ jsx4(PricingBulletPoint, {
1600
+ text: "Unlimited videos",
1601
+ checked: true
1602
+ }),
1603
+ /* @__PURE__ */ jsx4(PricingBulletPoint, {
1604
+ text: "Commercial use allowed",
1605
+ checked: true
1606
+ }),
1607
+ /* @__PURE__ */ jsx4(PricingBulletPoint, {
1608
+ text: "Self-hosted cloud rendering allowed",
1609
+ checked: true
1610
+ }),
1611
+ /* @__PURE__ */ jsx4(PricingBulletPoint, {
1612
+ text: "Must upgrade when your team grows",
1613
+ checked: false
1614
+ })
1615
+ ]
1616
+ });
1617
+ };
1618
+ var textUnitWrapper = {
1619
+ display: "flex",
1620
+ flexDirection: "column"
1621
+ };
1622
+ var EnterpriseLicense = () => {
1623
+ return /* @__PURE__ */ jsxs4(Container, {
1624
+ children: [
1625
+ /* @__PURE__ */ jsx4(Audience, {
1626
+ children: "For advanced needs"
1627
+ }),
1628
+ /* @__PURE__ */ jsx4(Title, {
1629
+ children: "Enterprise License"
1630
+ }),
1631
+ /* @__PURE__ */ jsx4(PricingBulletPoint, {
1632
+ text: "Everything in Company License",
1633
+ checked: true
1634
+ }),
1635
+ /* @__PURE__ */ jsx4(PricingBulletPoint, {
1636
+ text: "Private Slack or Discord",
1637
+ checked: true
1638
+ }),
1639
+ /* @__PURE__ */ jsx4(PricingBulletPoint, {
1640
+ text: "Monthly consulting session",
1641
+ checked: true
1642
+ }),
1643
+ /* @__PURE__ */ jsx4(PricingBulletPoint, {
1644
+ text: "Custom terms, billing and pricing",
1645
+ checked: true
1646
+ }),
1647
+ /* @__PURE__ */ jsx4(PricingBulletPoint, {
1648
+ text: "Compliance forms",
1649
+ checked: true
1650
+ }),
1651
+ /* @__PURE__ */ jsx4(PricingBulletPoint, {
1652
+ text: "Prioritized feature requests",
1653
+ checked: true
1654
+ }),
1655
+ /* @__PURE__ */ jsx4(PricingBulletPoint, {
1656
+ text: /* @__PURE__ */ jsxs4("span", {
1657
+ children: [
1658
+ /* @__PURE__ */ jsx4("a", {
1659
+ href: "https://www.remotion.dev/editor-starter",
1660
+ className: "underline underline-offset-4 text-inherit",
1661
+ children: "Editor Starter"
1662
+ }),
1663
+ " ",
1664
+ "included"
1665
+ ]
1666
+ }),
1667
+ checked: true
1668
+ }),
1669
+ /* @__PURE__ */ jsx4("div", {
1670
+ style: { height: 30 }
1671
+ }),
1672
+ /* @__PURE__ */ jsx4("div", {
1673
+ className: "flex flex-row justify-end",
1674
+ children: /* @__PURE__ */ jsxs4("div", {
1675
+ style: {
1676
+ ...textUnitWrapper,
1677
+ alignItems: "flex-end"
1678
+ },
1679
+ children: [
1680
+ /* @__PURE__ */ jsx4(PriceTag, {
1681
+ children: /* @__PURE__ */ jsx4("a", {
1682
+ className: "cursor-pointer no-underline text-inherit hover:text-brand",
1683
+ target: "_blank",
1684
+ href: "https://www.remotion.pro/contact",
1685
+ children: "Contact us"
1686
+ })
1687
+ }),
1688
+ /* @__PURE__ */ jsx4("div", {
1689
+ className: "text-[var(--subtitle)] fontbrand text-sm",
1690
+ children: "Starting at $500 per month"
1691
+ })
1692
+ ]
1693
+ })
1694
+ })
1695
+ ]
1696
+ });
1697
+ };
1698
+ var SEAT_PRICE = 25;
1699
+ var RENDER_UNIT_PRICE = 10;
1700
+ var icon = {
1701
+ height: 16,
1702
+ marginLeft: 4
1703
+ };
1704
+ var CompanyPricing = () => {
1705
+ const [devSeatCount, setDevSeatCount] = React2.useState(1);
1706
+ const [cloudRenders, setCloudRenders] = React2.useState(1000);
1707
+ const formatPrice = useCallback((price) => {
1708
+ const formatter = new Intl.NumberFormat("en-US", {
1709
+ style: "currency",
1710
+ currency: "USD",
1711
+ maximumFractionDigits: 0
1712
+ });
1713
+ return formatter.format(price);
1714
+ }, []);
1715
+ const totalPrice = useMemo(() => {
1716
+ return Math.max(100, devSeatCount * SEAT_PRICE + cloudRenders / 1000 * RENDER_UNIT_PRICE);
1717
+ }, [cloudRenders, devSeatCount]);
1718
+ const totalPriceString = useMemo(() => {
1719
+ return formatPrice(totalPrice);
1720
+ }, [formatPrice, totalPrice]);
1721
+ return /* @__PURE__ */ jsxs4(Container, {
1722
+ children: [
1723
+ /* @__PURE__ */ jsx4(Audience, {
1724
+ children: "For collaborations and companies of 4+ people"
1725
+ }),
1726
+ /* @__PURE__ */ jsx4(Title, {
1727
+ children: "Company License"
1728
+ }),
1729
+ /* @__PURE__ */ jsx4(PricingBulletPoint, {
1730
+ text: "Commercial use allowed",
1731
+ checked: true
1732
+ }),
1733
+ /* @__PURE__ */ jsx4(PricingBulletPoint, {
1734
+ text: "Self-hosted cloud rendering allowed",
1735
+ checked: true
1736
+ }),
1737
+ /* @__PURE__ */ jsx4(PricingBulletPoint, {
1738
+ text: "Prioritized Support",
1739
+ checked: true
1740
+ }),
1741
+ /* @__PURE__ */ jsx4(PricingBulletPoint, {
1742
+ text: "$250 Mux credits",
1743
+ checked: true,
1744
+ children: /* @__PURE__ */ jsx4(InfoTooltip, {
1745
+ text: "Credits for Mux.com. Applies only to new Mux customers."
1746
+ })
1747
+ }),
1748
+ /* @__PURE__ */ jsx4("div", {
1749
+ style: { height: 30 }
1750
+ }),
1751
+ /* @__PURE__ */ jsxs4("div", {
1752
+ className: "flex flex-col md:flex-row md:items-center",
1753
+ children: [
1754
+ /* @__PURE__ */ jsxs4("div", {
1755
+ style: textUnitWrapper,
1756
+ children: [
1757
+ /* @__PURE__ */ jsx4("div", {
1758
+ className: "fontbrand font-bold text-lg",
1759
+ children: "Developer Seats"
1760
+ }),
1761
+ /* @__PURE__ */ jsx4("div", {
1762
+ className: "text-muted fontbrand text-sm",
1763
+ children: "Number of developers working with Remotion"
1764
+ })
1765
+ ]
1766
+ }),
1767
+ /* @__PURE__ */ jsx4("div", {
1768
+ style: { flex: 3 },
1769
+ className: "hidden md:block"
1770
+ }),
1771
+ /* @__PURE__ */ jsxs4("div", {
1772
+ className: "flex flex-row items-center justify-between mt-3 md:mt-0",
1773
+ children: [
1774
+ /* @__PURE__ */ jsx4(Counter, {
1775
+ count: devSeatCount,
1776
+ setCount: setDevSeatCount,
1777
+ minCount: 1
1778
+ }),
1779
+ /* @__PURE__ */ jsxs4(SmallPriceTag, {
1780
+ children: [
1781
+ "$",
1782
+ new Intl.NumberFormat("en-US", {
1783
+ maximumFractionDigits: 0
1784
+ }).format(SEAT_PRICE * devSeatCount)
1785
+ ]
1786
+ })
1787
+ ]
1788
+ })
1789
+ ]
1790
+ }),
1791
+ /* @__PURE__ */ jsx4("div", {
1792
+ style: { height: 14 }
1793
+ }),
1794
+ /* @__PURE__ */ jsxs4("div", {
1795
+ className: "flex flex-col md:flex-row md:items-center",
1796
+ children: [
1797
+ /* @__PURE__ */ jsxs4("div", {
1798
+ style: textUnitWrapper,
1799
+ children: [
1800
+ /* @__PURE__ */ jsx4("div", {
1801
+ className: "fontbrand font-bold text-lg",
1802
+ children: "Video renders"
1803
+ }),
1804
+ /* @__PURE__ */ jsx4("div", {
1805
+ className: "text-muted fontbrand text-sm",
1806
+ children: /* @__PURE__ */ jsx4("a", {
1807
+ href: "https://www.remotion.dev/docs/render",
1808
+ className: "underline underline-offset-4 text-inherit",
1809
+ children: "Renders per month (self-hosted)"
1810
+ })
1811
+ })
1812
+ ]
1813
+ }),
1814
+ /* @__PURE__ */ jsx4("div", {
1815
+ style: { flex: 3 },
1816
+ className: "hidden md:block"
1817
+ }),
1818
+ /* @__PURE__ */ jsxs4("div", {
1819
+ className: "flex flex-row items-center justify-between mt-3 md:mt-0",
1820
+ children: [
1821
+ /* @__PURE__ */ jsx4(Counter, {
1822
+ count: cloudRenders,
1823
+ setCount: setCloudRenders,
1824
+ minCount: 0,
1825
+ step: 1000
1826
+ }),
1827
+ /* @__PURE__ */ jsxs4(SmallPriceTag, {
1828
+ children: [
1829
+ "$",
1830
+ new Intl.NumberFormat("en-US", {
1831
+ maximumFractionDigits: 0
1832
+ }).format(cloudRenders / 1000 * RENDER_UNIT_PRICE)
1833
+ ]
1834
+ })
1835
+ ]
1836
+ })
1837
+ ]
1838
+ }),
1839
+ /* @__PURE__ */ jsx4("div", {
1840
+ style: { height: 14 }
1841
+ }),
1842
+ /* @__PURE__ */ jsx4("div", {
1843
+ className: "flex flex-row justify-end",
1844
+ children: /* @__PURE__ */ jsxs4("div", {
1845
+ style: { ...textUnitWrapper, alignItems: "flex-end" },
1846
+ children: [
1847
+ /* @__PURE__ */ jsxs4(PriceTag, {
1848
+ children: [
1849
+ totalPriceString,
1850
+ "/mo"
1851
+ ]
1852
+ }),
1853
+ /* @__PURE__ */ jsx4(BottomInfo, {
1854
+ "data-visible": totalPrice <= 100,
1855
+ className: "opacity-0 data-[visible=true]:opacity-100 transition-opacity",
1856
+ children: "The minimum is $100 per month"
1857
+ })
1858
+ ]
1859
+ })
1860
+ }),
1861
+ /* @__PURE__ */ jsx4("div", {
1862
+ className: "flex flex-row justify-end mt-4",
1863
+ children: /* @__PURE__ */ jsx4("div", {
1864
+ style: {
1865
+ ...textUnitWrapper,
1866
+ alignItems: "flex-end"
1867
+ },
1868
+ children: /* @__PURE__ */ jsxs4("a", {
1869
+ href: "https://remotion.pro/dashboard",
1870
+ className: "font-brand text-brand flex flex-row items-center gap-1 no-underline",
1871
+ children: [
1872
+ "Buy now",
1873
+ " ",
1874
+ /* @__PURE__ */ jsx4("svg", {
1875
+ style: icon,
1876
+ xmlns: "http://www.w3.org/2000/svg",
1877
+ viewBox: "0 0 448 512",
1878
+ children: /* @__PURE__ */ jsx4("path", {
1879
+ fill: "currentColor",
1880
+ d: "M438.6 278.6l-160 160C272.4 444.9 264.2 448 256 448s-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L338.8 288H32C14.33 288 .0016 273.7 .0016 256S14.33 224 32 224h306.8l-105.4-105.4c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l160 160C451.1 245.9 451.1 266.1 438.6 278.6z"
1881
+ })
1882
+ })
1883
+ ]
1884
+ })
1885
+ })
1886
+ })
1887
+ ]
1888
+ });
1889
+ };
1890
+
1891
+ // src/components/homepage/Pricing.tsx
1892
+ import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
1893
+ var Pricing = () => {
1894
+ return /* @__PURE__ */ jsxs5("div", {
1895
+ style: {
1896
+ display: "flex",
1897
+ flexDirection: "column",
1898
+ gap: 20,
1899
+ marginBottom: 40
1900
+ },
1901
+ children: [
1902
+ /* @__PURE__ */ jsx5(FreePricing, {}),
1903
+ /* @__PURE__ */ jsx5(CompanyPricing, {}),
1904
+ /* @__PURE__ */ jsx5(EnterpriseLicense, {}),
1905
+ /* @__PURE__ */ jsx5("div", {
1906
+ style: {
1907
+ justifyContent: "center",
1908
+ display: "flex"
1909
+ },
1910
+ children: /* @__PURE__ */ jsxs5("div", {
1911
+ style: {
1912
+ fontFamily: "GTPlanar"
1913
+ },
1914
+ children: [
1915
+ "See our",
1916
+ " ",
1917
+ /* @__PURE__ */ jsx5("a", {
1918
+ target: "_blank",
1919
+ className: "bluelink",
1920
+ href: "https://remotion.pro/faq",
1921
+ children: "FAQ"
1922
+ }),
1923
+ " ",
1924
+ "and",
1925
+ " ",
1926
+ /* @__PURE__ */ jsx5("a", {
1927
+ target: "_blank",
1928
+ className: "bluelink",
1929
+ href: "https://www.remotion.pro/terms",
1930
+ children: "Terms and Conditions"
1931
+ }),
1932
+ " ",
1933
+ "for more details."
1934
+ ]
1935
+ })
1936
+ })
1937
+ ]
1938
+ });
1939
+ };
1940
+ export {
1941
+ Pricing
1942
+ };