design-system-silkhaus 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,2539 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import React from 'react';
3
+
4
+ function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
5
+
6
+ const CLASS_PART_SEPARATOR = '-';
7
+ function createClassUtils(config) {
8
+ const classMap = createClassMap(config);
9
+ const {
10
+ conflictingClassGroups,
11
+ conflictingClassGroupModifiers
12
+ } = config;
13
+ function getClassGroupId(className) {
14
+ const classParts = className.split(CLASS_PART_SEPARATOR);
15
+ // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.
16
+ if (classParts[0] === '' && classParts.length !== 1) {
17
+ classParts.shift();
18
+ }
19
+ return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);
20
+ }
21
+ function getConflictingClassGroupIds(classGroupId, hasPostfixModifier) {
22
+ const conflicts = conflictingClassGroups[classGroupId] || [];
23
+ if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {
24
+ return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];
25
+ }
26
+ return conflicts;
27
+ }
28
+ return {
29
+ getClassGroupId,
30
+ getConflictingClassGroupIds
31
+ };
32
+ }
33
+ function getGroupRecursive(classParts, classPartObject) {
34
+ if (classParts.length === 0) {
35
+ return classPartObject.classGroupId;
36
+ }
37
+ const currentClassPart = classParts[0];
38
+ const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
39
+ const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;
40
+ if (classGroupFromNextClassPart) {
41
+ return classGroupFromNextClassPart;
42
+ }
43
+ if (classPartObject.validators.length === 0) {
44
+ return undefined;
45
+ }
46
+ const classRest = classParts.join(CLASS_PART_SEPARATOR);
47
+ return classPartObject.validators.find(({
48
+ validator
49
+ }) => validator(classRest))?.classGroupId;
50
+ }
51
+ const arbitraryPropertyRegex = /^\[(.+)\]$/;
52
+ function getGroupIdForArbitraryProperty(className) {
53
+ if (arbitraryPropertyRegex.test(className)) {
54
+ const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];
55
+ const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));
56
+ if (property) {
57
+ // I use two dots here because one dot is used as prefix for class groups in plugins
58
+ return 'arbitrary..' + property;
59
+ }
60
+ }
61
+ }
62
+ /**
63
+ * Exported for testing only
64
+ */
65
+ function createClassMap(config) {
66
+ const {
67
+ theme,
68
+ prefix
69
+ } = config;
70
+ const classMap = {
71
+ nextPart: new Map(),
72
+ validators: []
73
+ };
74
+ const prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);
75
+ prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {
76
+ processClassesRecursively(classGroup, classMap, classGroupId, theme);
77
+ });
78
+ return classMap;
79
+ }
80
+ function processClassesRecursively(classGroup, classPartObject, classGroupId, theme) {
81
+ classGroup.forEach(classDefinition => {
82
+ if (typeof classDefinition === 'string') {
83
+ const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);
84
+ classPartObjectToEdit.classGroupId = classGroupId;
85
+ return;
86
+ }
87
+ if (typeof classDefinition === 'function') {
88
+ if (isThemeGetter(classDefinition)) {
89
+ processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
90
+ return;
91
+ }
92
+ classPartObject.validators.push({
93
+ validator: classDefinition,
94
+ classGroupId
95
+ });
96
+ return;
97
+ }
98
+ Object.entries(classDefinition).forEach(([key, classGroup]) => {
99
+ processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);
100
+ });
101
+ });
102
+ }
103
+ function getPart(classPartObject, path) {
104
+ let currentClassPartObject = classPartObject;
105
+ path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {
106
+ if (!currentClassPartObject.nextPart.has(pathPart)) {
107
+ currentClassPartObject.nextPart.set(pathPart, {
108
+ nextPart: new Map(),
109
+ validators: []
110
+ });
111
+ }
112
+ currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);
113
+ });
114
+ return currentClassPartObject;
115
+ }
116
+ function isThemeGetter(func) {
117
+ return func.isThemeGetter;
118
+ }
119
+ function getPrefixedClassGroupEntries(classGroupEntries, prefix) {
120
+ if (!prefix) {
121
+ return classGroupEntries;
122
+ }
123
+ return classGroupEntries.map(([classGroupId, classGroup]) => {
124
+ const prefixedClassGroup = classGroup.map(classDefinition => {
125
+ if (typeof classDefinition === 'string') {
126
+ return prefix + classDefinition;
127
+ }
128
+ if (typeof classDefinition === 'object') {
129
+ return Object.fromEntries(Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]));
130
+ }
131
+ return classDefinition;
132
+ });
133
+ return [classGroupId, prefixedClassGroup];
134
+ });
135
+ }
136
+
137
+ // LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance
138
+ function createLruCache(maxCacheSize) {
139
+ if (maxCacheSize < 1) {
140
+ return {
141
+ get: () => undefined,
142
+ set: () => {}
143
+ };
144
+ }
145
+ let cacheSize = 0;
146
+ let cache = new Map();
147
+ let previousCache = new Map();
148
+ function update(key, value) {
149
+ cache.set(key, value);
150
+ cacheSize++;
151
+ if (cacheSize > maxCacheSize) {
152
+ cacheSize = 0;
153
+ previousCache = cache;
154
+ cache = new Map();
155
+ }
156
+ }
157
+ return {
158
+ get(key) {
159
+ let value = cache.get(key);
160
+ if (value !== undefined) {
161
+ return value;
162
+ }
163
+ if ((value = previousCache.get(key)) !== undefined) {
164
+ update(key, value);
165
+ return value;
166
+ }
167
+ },
168
+ set(key, value) {
169
+ if (cache.has(key)) {
170
+ cache.set(key, value);
171
+ } else {
172
+ update(key, value);
173
+ }
174
+ }
175
+ };
176
+ }
177
+ const IMPORTANT_MODIFIER = '!';
178
+ function createSplitModifiers(config) {
179
+ const separator = config.separator;
180
+ const isSeparatorSingleCharacter = separator.length === 1;
181
+ const firstSeparatorCharacter = separator[0];
182
+ const separatorLength = separator.length;
183
+ // splitModifiers inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js
184
+ return function splitModifiers(className) {
185
+ const modifiers = [];
186
+ let bracketDepth = 0;
187
+ let modifierStart = 0;
188
+ let postfixModifierPosition;
189
+ for (let index = 0; index < className.length; index++) {
190
+ let currentCharacter = className[index];
191
+ if (bracketDepth === 0) {
192
+ if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) {
193
+ modifiers.push(className.slice(modifierStart, index));
194
+ modifierStart = index + separatorLength;
195
+ continue;
196
+ }
197
+ if (currentCharacter === '/') {
198
+ postfixModifierPosition = index;
199
+ continue;
200
+ }
201
+ }
202
+ if (currentCharacter === '[') {
203
+ bracketDepth++;
204
+ } else if (currentCharacter === ']') {
205
+ bracketDepth--;
206
+ }
207
+ }
208
+ const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);
209
+ const hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER);
210
+ const baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier;
211
+ const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;
212
+ return {
213
+ modifiers,
214
+ hasImportantModifier,
215
+ baseClassName,
216
+ maybePostfixModifierPosition
217
+ };
218
+ };
219
+ }
220
+ /**
221
+ * Sorts modifiers according to following schema:
222
+ * - Predefined modifiers are sorted alphabetically
223
+ * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it
224
+ */
225
+ function sortModifiers(modifiers) {
226
+ if (modifiers.length <= 1) {
227
+ return modifiers;
228
+ }
229
+ const sortedModifiers = [];
230
+ let unsortedModifiers = [];
231
+ modifiers.forEach(modifier => {
232
+ const isArbitraryVariant = modifier[0] === '[';
233
+ if (isArbitraryVariant) {
234
+ sortedModifiers.push(...unsortedModifiers.sort(), modifier);
235
+ unsortedModifiers = [];
236
+ } else {
237
+ unsortedModifiers.push(modifier);
238
+ }
239
+ });
240
+ sortedModifiers.push(...unsortedModifiers.sort());
241
+ return sortedModifiers;
242
+ }
243
+ function createConfigUtils(config) {
244
+ return {
245
+ cache: createLruCache(config.cacheSize),
246
+ splitModifiers: createSplitModifiers(config),
247
+ ...createClassUtils(config)
248
+ };
249
+ }
250
+ const SPLIT_CLASSES_REGEX = /\s+/;
251
+ function mergeClassList(classList, configUtils) {
252
+ const {
253
+ splitModifiers,
254
+ getClassGroupId,
255
+ getConflictingClassGroupIds
256
+ } = configUtils;
257
+ /**
258
+ * Set of classGroupIds in following format:
259
+ * `{importantModifier}{variantModifiers}{classGroupId}`
260
+ * @example 'float'
261
+ * @example 'hover:focus:bg-color'
262
+ * @example 'md:!pr'
263
+ */
264
+ const classGroupsInConflict = new Set();
265
+ return classList.trim().split(SPLIT_CLASSES_REGEX).map(originalClassName => {
266
+ const {
267
+ modifiers,
268
+ hasImportantModifier,
269
+ baseClassName,
270
+ maybePostfixModifierPosition
271
+ } = splitModifiers(originalClassName);
272
+ let classGroupId = getClassGroupId(maybePostfixModifierPosition ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);
273
+ let hasPostfixModifier = Boolean(maybePostfixModifierPosition);
274
+ if (!classGroupId) {
275
+ if (!maybePostfixModifierPosition) {
276
+ return {
277
+ isTailwindClass: false,
278
+ originalClassName
279
+ };
280
+ }
281
+ classGroupId = getClassGroupId(baseClassName);
282
+ if (!classGroupId) {
283
+ return {
284
+ isTailwindClass: false,
285
+ originalClassName
286
+ };
287
+ }
288
+ hasPostfixModifier = false;
289
+ }
290
+ const variantModifier = sortModifiers(modifiers).join(':');
291
+ const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
292
+ return {
293
+ isTailwindClass: true,
294
+ modifierId,
295
+ classGroupId,
296
+ originalClassName,
297
+ hasPostfixModifier
298
+ };
299
+ }).reverse()
300
+ // Last class in conflict wins, so we need to filter conflicting classes in reverse order.
301
+ .filter(parsed => {
302
+ if (!parsed.isTailwindClass) {
303
+ return true;
304
+ }
305
+ const {
306
+ modifierId,
307
+ classGroupId,
308
+ hasPostfixModifier
309
+ } = parsed;
310
+ const classId = modifierId + classGroupId;
311
+ if (classGroupsInConflict.has(classId)) {
312
+ return false;
313
+ }
314
+ classGroupsInConflict.add(classId);
315
+ getConflictingClassGroupIds(classGroupId, hasPostfixModifier).forEach(group => classGroupsInConflict.add(modifierId + group));
316
+ return true;
317
+ }).reverse().map(parsed => parsed.originalClassName).join(' ');
318
+ }
319
+
320
+ /**
321
+ * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.
322
+ *
323
+ * Specifically:
324
+ * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js
325
+ * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts
326
+ *
327
+ * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
328
+ */
329
+ function twJoin() {
330
+ let index = 0;
331
+ let argument;
332
+ let resolvedValue;
333
+ let string = '';
334
+ while (index < arguments.length) {
335
+ if (argument = arguments[index++]) {
336
+ if (resolvedValue = toValue(argument)) {
337
+ string && (string += ' ');
338
+ string += resolvedValue;
339
+ }
340
+ }
341
+ }
342
+ return string;
343
+ }
344
+ function toValue(mix) {
345
+ if (typeof mix === 'string') {
346
+ return mix;
347
+ }
348
+ let resolvedValue;
349
+ let string = '';
350
+ for (let k = 0; k < mix.length; k++) {
351
+ if (mix[k]) {
352
+ if (resolvedValue = toValue(mix[k])) {
353
+ string && (string += ' ');
354
+ string += resolvedValue;
355
+ }
356
+ }
357
+ }
358
+ return string;
359
+ }
360
+ function createTailwindMerge(createConfigFirst, ...createConfigRest) {
361
+ let configUtils;
362
+ let cacheGet;
363
+ let cacheSet;
364
+ let functionToCall = initTailwindMerge;
365
+ function initTailwindMerge(classList) {
366
+ const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());
367
+ configUtils = createConfigUtils(config);
368
+ cacheGet = configUtils.cache.get;
369
+ cacheSet = configUtils.cache.set;
370
+ functionToCall = tailwindMerge;
371
+ return tailwindMerge(classList);
372
+ }
373
+ function tailwindMerge(classList) {
374
+ const cachedResult = cacheGet(classList);
375
+ if (cachedResult) {
376
+ return cachedResult;
377
+ }
378
+ const result = mergeClassList(classList, configUtils);
379
+ cacheSet(classList, result);
380
+ return result;
381
+ }
382
+ return function callTailwindMerge() {
383
+ return functionToCall(twJoin.apply(null, arguments));
384
+ };
385
+ }
386
+ function fromTheme(key) {
387
+ const themeGetter = theme => theme[key] || [];
388
+ themeGetter.isThemeGetter = true;
389
+ return themeGetter;
390
+ }
391
+ const arbitraryValueRegex = /^\[(?:([a-z-]+):)?(.+)\]$/i;
392
+ const fractionRegex = /^\d+\/\d+$/;
393
+ const stringLengths = /*#__PURE__*/new Set(['px', 'full', 'screen']);
394
+ const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
395
+ const 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$/;
396
+ // Shadow always begins with x and y offset separated by underscore
397
+ const shadowRegex = /^-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
398
+ const imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
399
+ function isLength(value) {
400
+ return isNumber(value) || stringLengths.has(value) || fractionRegex.test(value);
401
+ }
402
+ function isArbitraryLength(value) {
403
+ return getIsArbitraryValue(value, 'length', isLengthOnly);
404
+ }
405
+ function isNumber(value) {
406
+ return Boolean(value) && !Number.isNaN(Number(value));
407
+ }
408
+ function isArbitraryNumber(value) {
409
+ return getIsArbitraryValue(value, 'number', isNumber);
410
+ }
411
+ function isInteger(value) {
412
+ return Boolean(value) && Number.isInteger(Number(value));
413
+ }
414
+ function isPercent(value) {
415
+ return value.endsWith('%') && isNumber(value.slice(0, -1));
416
+ }
417
+ function isArbitraryValue(value) {
418
+ return arbitraryValueRegex.test(value);
419
+ }
420
+ function isTshirtSize(value) {
421
+ return tshirtUnitRegex.test(value);
422
+ }
423
+ const sizeLabels = /*#__PURE__*/new Set(['length', 'size', 'percentage']);
424
+ function isArbitrarySize(value) {
425
+ return getIsArbitraryValue(value, sizeLabels, isNever);
426
+ }
427
+ function isArbitraryPosition(value) {
428
+ return getIsArbitraryValue(value, 'position', isNever);
429
+ }
430
+ const imageLabels = /*#__PURE__*/new Set(['image', 'url']);
431
+ function isArbitraryImage(value) {
432
+ return getIsArbitraryValue(value, imageLabels, isImage);
433
+ }
434
+ function isArbitraryShadow(value) {
435
+ return getIsArbitraryValue(value, '', isShadow);
436
+ }
437
+ function isAny() {
438
+ return true;
439
+ }
440
+ function getIsArbitraryValue(value, label, testValue) {
441
+ const result = arbitraryValueRegex.exec(value);
442
+ if (result) {
443
+ if (result[1]) {
444
+ return typeof label === 'string' ? result[1] === label : label.has(result[1]);
445
+ }
446
+ return testValue(result[2]);
447
+ }
448
+ return false;
449
+ }
450
+ function isLengthOnly(value) {
451
+ return lengthUnitRegex.test(value);
452
+ }
453
+ function isNever() {
454
+ return false;
455
+ }
456
+ function isShadow(value) {
457
+ return shadowRegex.test(value);
458
+ }
459
+ function isImage(value) {
460
+ return imageRegex.test(value);
461
+ }
462
+ function getDefaultConfig() {
463
+ const colors = fromTheme('colors');
464
+ const spacing = fromTheme('spacing');
465
+ const blur = fromTheme('blur');
466
+ const brightness = fromTheme('brightness');
467
+ const borderColor = fromTheme('borderColor');
468
+ const borderRadius = fromTheme('borderRadius');
469
+ const borderSpacing = fromTheme('borderSpacing');
470
+ const borderWidth = fromTheme('borderWidth');
471
+ const contrast = fromTheme('contrast');
472
+ const grayscale = fromTheme('grayscale');
473
+ const hueRotate = fromTheme('hueRotate');
474
+ const invert = fromTheme('invert');
475
+ const gap = fromTheme('gap');
476
+ const gradientColorStops = fromTheme('gradientColorStops');
477
+ const gradientColorStopPositions = fromTheme('gradientColorStopPositions');
478
+ const inset = fromTheme('inset');
479
+ const margin = fromTheme('margin');
480
+ const opacity = fromTheme('opacity');
481
+ const padding = fromTheme('padding');
482
+ const saturate = fromTheme('saturate');
483
+ const scale = fromTheme('scale');
484
+ const sepia = fromTheme('sepia');
485
+ const skew = fromTheme('skew');
486
+ const space = fromTheme('space');
487
+ const translate = fromTheme('translate');
488
+ const getOverscroll = () => ['auto', 'contain', 'none'];
489
+ const getOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];
490
+ const getSpacingWithAutoAndArbitrary = () => ['auto', isArbitraryValue, spacing];
491
+ const getSpacingWithArbitrary = () => [isArbitraryValue, spacing];
492
+ const getLengthWithEmptyAndArbitrary = () => ['', isLength, isArbitraryLength];
493
+ const getNumberWithAutoAndArbitrary = () => ['auto', isNumber, isArbitraryValue];
494
+ const getPositions = () => ['bottom', 'center', 'left', 'left-bottom', 'left-top', 'right', 'right-bottom', 'right-top', 'top'];
495
+ const getLineStyles = () => ['solid', 'dashed', 'dotted', 'double', 'none'];
496
+ const getBlendModes = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity', 'plus-lighter'];
497
+ const getAlign = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch'];
498
+ const getZeroAndEmpty = () => ['', '0', isArbitraryValue];
499
+ const getBreaks = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];
500
+ const getNumber = () => [isNumber, isArbitraryNumber];
501
+ const getNumberAndArbitrary = () => [isNumber, isArbitraryValue];
502
+ return {
503
+ cacheSize: 500,
504
+ separator: ':',
505
+ theme: {
506
+ colors: [isAny],
507
+ spacing: [isLength, isArbitraryLength],
508
+ blur: ['none', '', isTshirtSize, isArbitraryValue],
509
+ brightness: getNumber(),
510
+ borderColor: [colors],
511
+ borderRadius: ['none', '', 'full', isTshirtSize, isArbitraryValue],
512
+ borderSpacing: getSpacingWithArbitrary(),
513
+ borderWidth: getLengthWithEmptyAndArbitrary(),
514
+ contrast: getNumber(),
515
+ grayscale: getZeroAndEmpty(),
516
+ hueRotate: getNumberAndArbitrary(),
517
+ invert: getZeroAndEmpty(),
518
+ gap: getSpacingWithArbitrary(),
519
+ gradientColorStops: [colors],
520
+ gradientColorStopPositions: [isPercent, isArbitraryLength],
521
+ inset: getSpacingWithAutoAndArbitrary(),
522
+ margin: getSpacingWithAutoAndArbitrary(),
523
+ opacity: getNumber(),
524
+ padding: getSpacingWithArbitrary(),
525
+ saturate: getNumber(),
526
+ scale: getNumber(),
527
+ sepia: getZeroAndEmpty(),
528
+ skew: getNumberAndArbitrary(),
529
+ space: getSpacingWithArbitrary(),
530
+ translate: getSpacingWithArbitrary()
531
+ },
532
+ classGroups: {
533
+ // Layout
534
+ /**
535
+ * Aspect Ratio
536
+ * @see https://tailwindcss.com/docs/aspect-ratio
537
+ */
538
+ aspect: [{
539
+ aspect: ['auto', 'square', 'video', isArbitraryValue]
540
+ }],
541
+ /**
542
+ * Container
543
+ * @see https://tailwindcss.com/docs/container
544
+ */
545
+ container: ['container'],
546
+ /**
547
+ * Columns
548
+ * @see https://tailwindcss.com/docs/columns
549
+ */
550
+ columns: [{
551
+ columns: [isTshirtSize]
552
+ }],
553
+ /**
554
+ * Break After
555
+ * @see https://tailwindcss.com/docs/break-after
556
+ */
557
+ 'break-after': [{
558
+ 'break-after': getBreaks()
559
+ }],
560
+ /**
561
+ * Break Before
562
+ * @see https://tailwindcss.com/docs/break-before
563
+ */
564
+ 'break-before': [{
565
+ 'break-before': getBreaks()
566
+ }],
567
+ /**
568
+ * Break Inside
569
+ * @see https://tailwindcss.com/docs/break-inside
570
+ */
571
+ 'break-inside': [{
572
+ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']
573
+ }],
574
+ /**
575
+ * Box Decoration Break
576
+ * @see https://tailwindcss.com/docs/box-decoration-break
577
+ */
578
+ 'box-decoration': [{
579
+ 'box-decoration': ['slice', 'clone']
580
+ }],
581
+ /**
582
+ * Box Sizing
583
+ * @see https://tailwindcss.com/docs/box-sizing
584
+ */
585
+ box: [{
586
+ box: ['border', 'content']
587
+ }],
588
+ /**
589
+ * Display
590
+ * @see https://tailwindcss.com/docs/display
591
+ */
592
+ 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'],
593
+ /**
594
+ * Floats
595
+ * @see https://tailwindcss.com/docs/float
596
+ */
597
+ float: [{
598
+ float: ['right', 'left', 'none', 'start', 'end']
599
+ }],
600
+ /**
601
+ * Clear
602
+ * @see https://tailwindcss.com/docs/clear
603
+ */
604
+ clear: [{
605
+ clear: ['left', 'right', 'both', 'none', 'start', 'end']
606
+ }],
607
+ /**
608
+ * Isolation
609
+ * @see https://tailwindcss.com/docs/isolation
610
+ */
611
+ isolation: ['isolate', 'isolation-auto'],
612
+ /**
613
+ * Object Fit
614
+ * @see https://tailwindcss.com/docs/object-fit
615
+ */
616
+ 'object-fit': [{
617
+ object: ['contain', 'cover', 'fill', 'none', 'scale-down']
618
+ }],
619
+ /**
620
+ * Object Position
621
+ * @see https://tailwindcss.com/docs/object-position
622
+ */
623
+ 'object-position': [{
624
+ object: [...getPositions(), isArbitraryValue]
625
+ }],
626
+ /**
627
+ * Overflow
628
+ * @see https://tailwindcss.com/docs/overflow
629
+ */
630
+ overflow: [{
631
+ overflow: getOverflow()
632
+ }],
633
+ /**
634
+ * Overflow X
635
+ * @see https://tailwindcss.com/docs/overflow
636
+ */
637
+ 'overflow-x': [{
638
+ 'overflow-x': getOverflow()
639
+ }],
640
+ /**
641
+ * Overflow Y
642
+ * @see https://tailwindcss.com/docs/overflow
643
+ */
644
+ 'overflow-y': [{
645
+ 'overflow-y': getOverflow()
646
+ }],
647
+ /**
648
+ * Overscroll Behavior
649
+ * @see https://tailwindcss.com/docs/overscroll-behavior
650
+ */
651
+ overscroll: [{
652
+ overscroll: getOverscroll()
653
+ }],
654
+ /**
655
+ * Overscroll Behavior X
656
+ * @see https://tailwindcss.com/docs/overscroll-behavior
657
+ */
658
+ 'overscroll-x': [{
659
+ 'overscroll-x': getOverscroll()
660
+ }],
661
+ /**
662
+ * Overscroll Behavior Y
663
+ * @see https://tailwindcss.com/docs/overscroll-behavior
664
+ */
665
+ 'overscroll-y': [{
666
+ 'overscroll-y': getOverscroll()
667
+ }],
668
+ /**
669
+ * Position
670
+ * @see https://tailwindcss.com/docs/position
671
+ */
672
+ position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],
673
+ /**
674
+ * Top / Right / Bottom / Left
675
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
676
+ */
677
+ inset: [{
678
+ inset: [inset]
679
+ }],
680
+ /**
681
+ * Right / Left
682
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
683
+ */
684
+ 'inset-x': [{
685
+ 'inset-x': [inset]
686
+ }],
687
+ /**
688
+ * Top / Bottom
689
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
690
+ */
691
+ 'inset-y': [{
692
+ 'inset-y': [inset]
693
+ }],
694
+ /**
695
+ * Start
696
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
697
+ */
698
+ start: [{
699
+ start: [inset]
700
+ }],
701
+ /**
702
+ * End
703
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
704
+ */
705
+ end: [{
706
+ end: [inset]
707
+ }],
708
+ /**
709
+ * Top
710
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
711
+ */
712
+ top: [{
713
+ top: [inset]
714
+ }],
715
+ /**
716
+ * Right
717
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
718
+ */
719
+ right: [{
720
+ right: [inset]
721
+ }],
722
+ /**
723
+ * Bottom
724
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
725
+ */
726
+ bottom: [{
727
+ bottom: [inset]
728
+ }],
729
+ /**
730
+ * Left
731
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
732
+ */
733
+ left: [{
734
+ left: [inset]
735
+ }],
736
+ /**
737
+ * Visibility
738
+ * @see https://tailwindcss.com/docs/visibility
739
+ */
740
+ visibility: ['visible', 'invisible', 'collapse'],
741
+ /**
742
+ * Z-Index
743
+ * @see https://tailwindcss.com/docs/z-index
744
+ */
745
+ z: [{
746
+ z: ['auto', isInteger, isArbitraryValue]
747
+ }],
748
+ // Flexbox and Grid
749
+ /**
750
+ * Flex Basis
751
+ * @see https://tailwindcss.com/docs/flex-basis
752
+ */
753
+ basis: [{
754
+ basis: getSpacingWithAutoAndArbitrary()
755
+ }],
756
+ /**
757
+ * Flex Direction
758
+ * @see https://tailwindcss.com/docs/flex-direction
759
+ */
760
+ 'flex-direction': [{
761
+ flex: ['row', 'row-reverse', 'col', 'col-reverse']
762
+ }],
763
+ /**
764
+ * Flex Wrap
765
+ * @see https://tailwindcss.com/docs/flex-wrap
766
+ */
767
+ 'flex-wrap': [{
768
+ flex: ['wrap', 'wrap-reverse', 'nowrap']
769
+ }],
770
+ /**
771
+ * Flex
772
+ * @see https://tailwindcss.com/docs/flex
773
+ */
774
+ flex: [{
775
+ flex: ['1', 'auto', 'initial', 'none', isArbitraryValue]
776
+ }],
777
+ /**
778
+ * Flex Grow
779
+ * @see https://tailwindcss.com/docs/flex-grow
780
+ */
781
+ grow: [{
782
+ grow: getZeroAndEmpty()
783
+ }],
784
+ /**
785
+ * Flex Shrink
786
+ * @see https://tailwindcss.com/docs/flex-shrink
787
+ */
788
+ shrink: [{
789
+ shrink: getZeroAndEmpty()
790
+ }],
791
+ /**
792
+ * Order
793
+ * @see https://tailwindcss.com/docs/order
794
+ */
795
+ order: [{
796
+ order: ['first', 'last', 'none', isInteger, isArbitraryValue]
797
+ }],
798
+ /**
799
+ * Grid Template Columns
800
+ * @see https://tailwindcss.com/docs/grid-template-columns
801
+ */
802
+ 'grid-cols': [{
803
+ 'grid-cols': [isAny]
804
+ }],
805
+ /**
806
+ * Grid Column Start / End
807
+ * @see https://tailwindcss.com/docs/grid-column
808
+ */
809
+ 'col-start-end': [{
810
+ col: ['auto', {
811
+ span: ['full', isInteger, isArbitraryValue]
812
+ }, isArbitraryValue]
813
+ }],
814
+ /**
815
+ * Grid Column Start
816
+ * @see https://tailwindcss.com/docs/grid-column
817
+ */
818
+ 'col-start': [{
819
+ 'col-start': getNumberWithAutoAndArbitrary()
820
+ }],
821
+ /**
822
+ * Grid Column End
823
+ * @see https://tailwindcss.com/docs/grid-column
824
+ */
825
+ 'col-end': [{
826
+ 'col-end': getNumberWithAutoAndArbitrary()
827
+ }],
828
+ /**
829
+ * Grid Template Rows
830
+ * @see https://tailwindcss.com/docs/grid-template-rows
831
+ */
832
+ 'grid-rows': [{
833
+ 'grid-rows': [isAny]
834
+ }],
835
+ /**
836
+ * Grid Row Start / End
837
+ * @see https://tailwindcss.com/docs/grid-row
838
+ */
839
+ 'row-start-end': [{
840
+ row: ['auto', {
841
+ span: [isInteger, isArbitraryValue]
842
+ }, isArbitraryValue]
843
+ }],
844
+ /**
845
+ * Grid Row Start
846
+ * @see https://tailwindcss.com/docs/grid-row
847
+ */
848
+ 'row-start': [{
849
+ 'row-start': getNumberWithAutoAndArbitrary()
850
+ }],
851
+ /**
852
+ * Grid Row End
853
+ * @see https://tailwindcss.com/docs/grid-row
854
+ */
855
+ 'row-end': [{
856
+ 'row-end': getNumberWithAutoAndArbitrary()
857
+ }],
858
+ /**
859
+ * Grid Auto Flow
860
+ * @see https://tailwindcss.com/docs/grid-auto-flow
861
+ */
862
+ 'grid-flow': [{
863
+ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']
864
+ }],
865
+ /**
866
+ * Grid Auto Columns
867
+ * @see https://tailwindcss.com/docs/grid-auto-columns
868
+ */
869
+ 'auto-cols': [{
870
+ 'auto-cols': ['auto', 'min', 'max', 'fr', isArbitraryValue]
871
+ }],
872
+ /**
873
+ * Grid Auto Rows
874
+ * @see https://tailwindcss.com/docs/grid-auto-rows
875
+ */
876
+ 'auto-rows': [{
877
+ 'auto-rows': ['auto', 'min', 'max', 'fr', isArbitraryValue]
878
+ }],
879
+ /**
880
+ * Gap
881
+ * @see https://tailwindcss.com/docs/gap
882
+ */
883
+ gap: [{
884
+ gap: [gap]
885
+ }],
886
+ /**
887
+ * Gap X
888
+ * @see https://tailwindcss.com/docs/gap
889
+ */
890
+ 'gap-x': [{
891
+ 'gap-x': [gap]
892
+ }],
893
+ /**
894
+ * Gap Y
895
+ * @see https://tailwindcss.com/docs/gap
896
+ */
897
+ 'gap-y': [{
898
+ 'gap-y': [gap]
899
+ }],
900
+ /**
901
+ * Justify Content
902
+ * @see https://tailwindcss.com/docs/justify-content
903
+ */
904
+ 'justify-content': [{
905
+ justify: ['normal', ...getAlign()]
906
+ }],
907
+ /**
908
+ * Justify Items
909
+ * @see https://tailwindcss.com/docs/justify-items
910
+ */
911
+ 'justify-items': [{
912
+ 'justify-items': ['start', 'end', 'center', 'stretch']
913
+ }],
914
+ /**
915
+ * Justify Self
916
+ * @see https://tailwindcss.com/docs/justify-self
917
+ */
918
+ 'justify-self': [{
919
+ 'justify-self': ['auto', 'start', 'end', 'center', 'stretch']
920
+ }],
921
+ /**
922
+ * Align Content
923
+ * @see https://tailwindcss.com/docs/align-content
924
+ */
925
+ 'align-content': [{
926
+ content: ['normal', ...getAlign(), 'baseline']
927
+ }],
928
+ /**
929
+ * Align Items
930
+ * @see https://tailwindcss.com/docs/align-items
931
+ */
932
+ 'align-items': [{
933
+ items: ['start', 'end', 'center', 'baseline', 'stretch']
934
+ }],
935
+ /**
936
+ * Align Self
937
+ * @see https://tailwindcss.com/docs/align-self
938
+ */
939
+ 'align-self': [{
940
+ self: ['auto', 'start', 'end', 'center', 'stretch', 'baseline']
941
+ }],
942
+ /**
943
+ * Place Content
944
+ * @see https://tailwindcss.com/docs/place-content
945
+ */
946
+ 'place-content': [{
947
+ 'place-content': [...getAlign(), 'baseline']
948
+ }],
949
+ /**
950
+ * Place Items
951
+ * @see https://tailwindcss.com/docs/place-items
952
+ */
953
+ 'place-items': [{
954
+ 'place-items': ['start', 'end', 'center', 'baseline', 'stretch']
955
+ }],
956
+ /**
957
+ * Place Self
958
+ * @see https://tailwindcss.com/docs/place-self
959
+ */
960
+ 'place-self': [{
961
+ 'place-self': ['auto', 'start', 'end', 'center', 'stretch']
962
+ }],
963
+ // Spacing
964
+ /**
965
+ * Padding
966
+ * @see https://tailwindcss.com/docs/padding
967
+ */
968
+ p: [{
969
+ p: [padding]
970
+ }],
971
+ /**
972
+ * Padding X
973
+ * @see https://tailwindcss.com/docs/padding
974
+ */
975
+ px: [{
976
+ px: [padding]
977
+ }],
978
+ /**
979
+ * Padding Y
980
+ * @see https://tailwindcss.com/docs/padding
981
+ */
982
+ py: [{
983
+ py: [padding]
984
+ }],
985
+ /**
986
+ * Padding Start
987
+ * @see https://tailwindcss.com/docs/padding
988
+ */
989
+ ps: [{
990
+ ps: [padding]
991
+ }],
992
+ /**
993
+ * Padding End
994
+ * @see https://tailwindcss.com/docs/padding
995
+ */
996
+ pe: [{
997
+ pe: [padding]
998
+ }],
999
+ /**
1000
+ * Padding Top
1001
+ * @see https://tailwindcss.com/docs/padding
1002
+ */
1003
+ pt: [{
1004
+ pt: [padding]
1005
+ }],
1006
+ /**
1007
+ * Padding Right
1008
+ * @see https://tailwindcss.com/docs/padding
1009
+ */
1010
+ pr: [{
1011
+ pr: [padding]
1012
+ }],
1013
+ /**
1014
+ * Padding Bottom
1015
+ * @see https://tailwindcss.com/docs/padding
1016
+ */
1017
+ pb: [{
1018
+ pb: [padding]
1019
+ }],
1020
+ /**
1021
+ * Padding Left
1022
+ * @see https://tailwindcss.com/docs/padding
1023
+ */
1024
+ pl: [{
1025
+ pl: [padding]
1026
+ }],
1027
+ /**
1028
+ * Margin
1029
+ * @see https://tailwindcss.com/docs/margin
1030
+ */
1031
+ m: [{
1032
+ m: [margin]
1033
+ }],
1034
+ /**
1035
+ * Margin X
1036
+ * @see https://tailwindcss.com/docs/margin
1037
+ */
1038
+ mx: [{
1039
+ mx: [margin]
1040
+ }],
1041
+ /**
1042
+ * Margin Y
1043
+ * @see https://tailwindcss.com/docs/margin
1044
+ */
1045
+ my: [{
1046
+ my: [margin]
1047
+ }],
1048
+ /**
1049
+ * Margin Start
1050
+ * @see https://tailwindcss.com/docs/margin
1051
+ */
1052
+ ms: [{
1053
+ ms: [margin]
1054
+ }],
1055
+ /**
1056
+ * Margin End
1057
+ * @see https://tailwindcss.com/docs/margin
1058
+ */
1059
+ me: [{
1060
+ me: [margin]
1061
+ }],
1062
+ /**
1063
+ * Margin Top
1064
+ * @see https://tailwindcss.com/docs/margin
1065
+ */
1066
+ mt: [{
1067
+ mt: [margin]
1068
+ }],
1069
+ /**
1070
+ * Margin Right
1071
+ * @see https://tailwindcss.com/docs/margin
1072
+ */
1073
+ mr: [{
1074
+ mr: [margin]
1075
+ }],
1076
+ /**
1077
+ * Margin Bottom
1078
+ * @see https://tailwindcss.com/docs/margin
1079
+ */
1080
+ mb: [{
1081
+ mb: [margin]
1082
+ }],
1083
+ /**
1084
+ * Margin Left
1085
+ * @see https://tailwindcss.com/docs/margin
1086
+ */
1087
+ ml: [{
1088
+ ml: [margin]
1089
+ }],
1090
+ /**
1091
+ * Space Between X
1092
+ * @see https://tailwindcss.com/docs/space
1093
+ */
1094
+ 'space-x': [{
1095
+ 'space-x': [space]
1096
+ }],
1097
+ /**
1098
+ * Space Between X Reverse
1099
+ * @see https://tailwindcss.com/docs/space
1100
+ */
1101
+ 'space-x-reverse': ['space-x-reverse'],
1102
+ /**
1103
+ * Space Between Y
1104
+ * @see https://tailwindcss.com/docs/space
1105
+ */
1106
+ 'space-y': [{
1107
+ 'space-y': [space]
1108
+ }],
1109
+ /**
1110
+ * Space Between Y Reverse
1111
+ * @see https://tailwindcss.com/docs/space
1112
+ */
1113
+ 'space-y-reverse': ['space-y-reverse'],
1114
+ // Sizing
1115
+ /**
1116
+ * Width
1117
+ * @see https://tailwindcss.com/docs/width
1118
+ */
1119
+ w: [{
1120
+ w: ['auto', 'min', 'max', 'fit', 'svw', 'lvw', 'dvw', isArbitraryValue, spacing]
1121
+ }],
1122
+ /**
1123
+ * Min-Width
1124
+ * @see https://tailwindcss.com/docs/min-width
1125
+ */
1126
+ 'min-w': [{
1127
+ 'min-w': [isArbitraryValue, spacing, 'min', 'max', 'fit']
1128
+ }],
1129
+ /**
1130
+ * Max-Width
1131
+ * @see https://tailwindcss.com/docs/max-width
1132
+ */
1133
+ 'max-w': [{
1134
+ 'max-w': [isArbitraryValue, spacing, 'none', 'full', 'min', 'max', 'fit', 'prose', {
1135
+ screen: [isTshirtSize]
1136
+ }, isTshirtSize]
1137
+ }],
1138
+ /**
1139
+ * Height
1140
+ * @see https://tailwindcss.com/docs/height
1141
+ */
1142
+ h: [{
1143
+ h: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']
1144
+ }],
1145
+ /**
1146
+ * Min-Height
1147
+ * @see https://tailwindcss.com/docs/min-height
1148
+ */
1149
+ 'min-h': [{
1150
+ 'min-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']
1151
+ }],
1152
+ /**
1153
+ * Max-Height
1154
+ * @see https://tailwindcss.com/docs/max-height
1155
+ */
1156
+ 'max-h': [{
1157
+ 'max-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']
1158
+ }],
1159
+ /**
1160
+ * Size
1161
+ * @see https://tailwindcss.com/docs/size
1162
+ */
1163
+ size: [{
1164
+ size: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit']
1165
+ }],
1166
+ // Typography
1167
+ /**
1168
+ * Font Size
1169
+ * @see https://tailwindcss.com/docs/font-size
1170
+ */
1171
+ 'font-size': [{
1172
+ text: ['base', isTshirtSize, isArbitraryLength]
1173
+ }],
1174
+ /**
1175
+ * Font Smoothing
1176
+ * @see https://tailwindcss.com/docs/font-smoothing
1177
+ */
1178
+ 'font-smoothing': ['antialiased', 'subpixel-antialiased'],
1179
+ /**
1180
+ * Font Style
1181
+ * @see https://tailwindcss.com/docs/font-style
1182
+ */
1183
+ 'font-style': ['italic', 'not-italic'],
1184
+ /**
1185
+ * Font Weight
1186
+ * @see https://tailwindcss.com/docs/font-weight
1187
+ */
1188
+ 'font-weight': [{
1189
+ font: ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black', isArbitraryNumber]
1190
+ }],
1191
+ /**
1192
+ * Font Family
1193
+ * @see https://tailwindcss.com/docs/font-family
1194
+ */
1195
+ 'font-family': [{
1196
+ font: [isAny]
1197
+ }],
1198
+ /**
1199
+ * Font Variant Numeric
1200
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1201
+ */
1202
+ 'fvn-normal': ['normal-nums'],
1203
+ /**
1204
+ * Font Variant Numeric
1205
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1206
+ */
1207
+ 'fvn-ordinal': ['ordinal'],
1208
+ /**
1209
+ * Font Variant Numeric
1210
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1211
+ */
1212
+ 'fvn-slashed-zero': ['slashed-zero'],
1213
+ /**
1214
+ * Font Variant Numeric
1215
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1216
+ */
1217
+ 'fvn-figure': ['lining-nums', 'oldstyle-nums'],
1218
+ /**
1219
+ * Font Variant Numeric
1220
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1221
+ */
1222
+ 'fvn-spacing': ['proportional-nums', 'tabular-nums'],
1223
+ /**
1224
+ * Font Variant Numeric
1225
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1226
+ */
1227
+ 'fvn-fraction': ['diagonal-fractions', 'stacked-fractons'],
1228
+ /**
1229
+ * Letter Spacing
1230
+ * @see https://tailwindcss.com/docs/letter-spacing
1231
+ */
1232
+ tracking: [{
1233
+ tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest', isArbitraryValue]
1234
+ }],
1235
+ /**
1236
+ * Line Clamp
1237
+ * @see https://tailwindcss.com/docs/line-clamp
1238
+ */
1239
+ 'line-clamp': [{
1240
+ 'line-clamp': ['none', isNumber, isArbitraryNumber]
1241
+ }],
1242
+ /**
1243
+ * Line Height
1244
+ * @see https://tailwindcss.com/docs/line-height
1245
+ */
1246
+ leading: [{
1247
+ leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose', isLength, isArbitraryValue]
1248
+ }],
1249
+ /**
1250
+ * List Style Image
1251
+ * @see https://tailwindcss.com/docs/list-style-image
1252
+ */
1253
+ 'list-image': [{
1254
+ 'list-image': ['none', isArbitraryValue]
1255
+ }],
1256
+ /**
1257
+ * List Style Type
1258
+ * @see https://tailwindcss.com/docs/list-style-type
1259
+ */
1260
+ 'list-style-type': [{
1261
+ list: ['none', 'disc', 'decimal', isArbitraryValue]
1262
+ }],
1263
+ /**
1264
+ * List Style Position
1265
+ * @see https://tailwindcss.com/docs/list-style-position
1266
+ */
1267
+ 'list-style-position': [{
1268
+ list: ['inside', 'outside']
1269
+ }],
1270
+ /**
1271
+ * Placeholder Color
1272
+ * @deprecated since Tailwind CSS v3.0.0
1273
+ * @see https://tailwindcss.com/docs/placeholder-color
1274
+ */
1275
+ 'placeholder-color': [{
1276
+ placeholder: [colors]
1277
+ }],
1278
+ /**
1279
+ * Placeholder Opacity
1280
+ * @see https://tailwindcss.com/docs/placeholder-opacity
1281
+ */
1282
+ 'placeholder-opacity': [{
1283
+ 'placeholder-opacity': [opacity]
1284
+ }],
1285
+ /**
1286
+ * Text Alignment
1287
+ * @see https://tailwindcss.com/docs/text-align
1288
+ */
1289
+ 'text-alignment': [{
1290
+ text: ['left', 'center', 'right', 'justify', 'start', 'end']
1291
+ }],
1292
+ /**
1293
+ * Text Color
1294
+ * @see https://tailwindcss.com/docs/text-color
1295
+ */
1296
+ 'text-color': [{
1297
+ text: [colors]
1298
+ }],
1299
+ /**
1300
+ * Text Opacity
1301
+ * @see https://tailwindcss.com/docs/text-opacity
1302
+ */
1303
+ 'text-opacity': [{
1304
+ 'text-opacity': [opacity]
1305
+ }],
1306
+ /**
1307
+ * Text Decoration
1308
+ * @see https://tailwindcss.com/docs/text-decoration
1309
+ */
1310
+ 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],
1311
+ /**
1312
+ * Text Decoration Style
1313
+ * @see https://tailwindcss.com/docs/text-decoration-style
1314
+ */
1315
+ 'text-decoration-style': [{
1316
+ decoration: [...getLineStyles(), 'wavy']
1317
+ }],
1318
+ /**
1319
+ * Text Decoration Thickness
1320
+ * @see https://tailwindcss.com/docs/text-decoration-thickness
1321
+ */
1322
+ 'text-decoration-thickness': [{
1323
+ decoration: ['auto', 'from-font', isLength, isArbitraryLength]
1324
+ }],
1325
+ /**
1326
+ * Text Underline Offset
1327
+ * @see https://tailwindcss.com/docs/text-underline-offset
1328
+ */
1329
+ 'underline-offset': [{
1330
+ 'underline-offset': ['auto', isLength, isArbitraryValue]
1331
+ }],
1332
+ /**
1333
+ * Text Decoration Color
1334
+ * @see https://tailwindcss.com/docs/text-decoration-color
1335
+ */
1336
+ 'text-decoration-color': [{
1337
+ decoration: [colors]
1338
+ }],
1339
+ /**
1340
+ * Text Transform
1341
+ * @see https://tailwindcss.com/docs/text-transform
1342
+ */
1343
+ 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],
1344
+ /**
1345
+ * Text Overflow
1346
+ * @see https://tailwindcss.com/docs/text-overflow
1347
+ */
1348
+ 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],
1349
+ /**
1350
+ * Text Wrap
1351
+ * @see https://tailwindcss.com/docs/text-wrap
1352
+ */
1353
+ 'text-wrap': [{
1354
+ text: ['wrap', 'nowrap', 'balance', 'pretty']
1355
+ }],
1356
+ /**
1357
+ * Text Indent
1358
+ * @see https://tailwindcss.com/docs/text-indent
1359
+ */
1360
+ indent: [{
1361
+ indent: getSpacingWithArbitrary()
1362
+ }],
1363
+ /**
1364
+ * Vertical Alignment
1365
+ * @see https://tailwindcss.com/docs/vertical-align
1366
+ */
1367
+ 'vertical-align': [{
1368
+ align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryValue]
1369
+ }],
1370
+ /**
1371
+ * Whitespace
1372
+ * @see https://tailwindcss.com/docs/whitespace
1373
+ */
1374
+ whitespace: [{
1375
+ whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']
1376
+ }],
1377
+ /**
1378
+ * Word Break
1379
+ * @see https://tailwindcss.com/docs/word-break
1380
+ */
1381
+ break: [{
1382
+ break: ['normal', 'words', 'all', 'keep']
1383
+ }],
1384
+ /**
1385
+ * Hyphens
1386
+ * @see https://tailwindcss.com/docs/hyphens
1387
+ */
1388
+ hyphens: [{
1389
+ hyphens: ['none', 'manual', 'auto']
1390
+ }],
1391
+ /**
1392
+ * Content
1393
+ * @see https://tailwindcss.com/docs/content
1394
+ */
1395
+ content: [{
1396
+ content: ['none', isArbitraryValue]
1397
+ }],
1398
+ // Backgrounds
1399
+ /**
1400
+ * Background Attachment
1401
+ * @see https://tailwindcss.com/docs/background-attachment
1402
+ */
1403
+ 'bg-attachment': [{
1404
+ bg: ['fixed', 'local', 'scroll']
1405
+ }],
1406
+ /**
1407
+ * Background Clip
1408
+ * @see https://tailwindcss.com/docs/background-clip
1409
+ */
1410
+ 'bg-clip': [{
1411
+ 'bg-clip': ['border', 'padding', 'content', 'text']
1412
+ }],
1413
+ /**
1414
+ * Background Opacity
1415
+ * @deprecated since Tailwind CSS v3.0.0
1416
+ * @see https://tailwindcss.com/docs/background-opacity
1417
+ */
1418
+ 'bg-opacity': [{
1419
+ 'bg-opacity': [opacity]
1420
+ }],
1421
+ /**
1422
+ * Background Origin
1423
+ * @see https://tailwindcss.com/docs/background-origin
1424
+ */
1425
+ 'bg-origin': [{
1426
+ 'bg-origin': ['border', 'padding', 'content']
1427
+ }],
1428
+ /**
1429
+ * Background Position
1430
+ * @see https://tailwindcss.com/docs/background-position
1431
+ */
1432
+ 'bg-position': [{
1433
+ bg: [...getPositions(), isArbitraryPosition]
1434
+ }],
1435
+ /**
1436
+ * Background Repeat
1437
+ * @see https://tailwindcss.com/docs/background-repeat
1438
+ */
1439
+ 'bg-repeat': [{
1440
+ bg: ['no-repeat', {
1441
+ repeat: ['', 'x', 'y', 'round', 'space']
1442
+ }]
1443
+ }],
1444
+ /**
1445
+ * Background Size
1446
+ * @see https://tailwindcss.com/docs/background-size
1447
+ */
1448
+ 'bg-size': [{
1449
+ bg: ['auto', 'cover', 'contain', isArbitrarySize]
1450
+ }],
1451
+ /**
1452
+ * Background Image
1453
+ * @see https://tailwindcss.com/docs/background-image
1454
+ */
1455
+ 'bg-image': [{
1456
+ bg: ['none', {
1457
+ 'gradient-to': ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']
1458
+ }, isArbitraryImage]
1459
+ }],
1460
+ /**
1461
+ * Background Color
1462
+ * @see https://tailwindcss.com/docs/background-color
1463
+ */
1464
+ 'bg-color': [{
1465
+ bg: [colors]
1466
+ }],
1467
+ /**
1468
+ * Gradient Color Stops From Position
1469
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1470
+ */
1471
+ 'gradient-from-pos': [{
1472
+ from: [gradientColorStopPositions]
1473
+ }],
1474
+ /**
1475
+ * Gradient Color Stops Via Position
1476
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1477
+ */
1478
+ 'gradient-via-pos': [{
1479
+ via: [gradientColorStopPositions]
1480
+ }],
1481
+ /**
1482
+ * Gradient Color Stops To Position
1483
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1484
+ */
1485
+ 'gradient-to-pos': [{
1486
+ to: [gradientColorStopPositions]
1487
+ }],
1488
+ /**
1489
+ * Gradient Color Stops From
1490
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1491
+ */
1492
+ 'gradient-from': [{
1493
+ from: [gradientColorStops]
1494
+ }],
1495
+ /**
1496
+ * Gradient Color Stops Via
1497
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1498
+ */
1499
+ 'gradient-via': [{
1500
+ via: [gradientColorStops]
1501
+ }],
1502
+ /**
1503
+ * Gradient Color Stops To
1504
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1505
+ */
1506
+ 'gradient-to': [{
1507
+ to: [gradientColorStops]
1508
+ }],
1509
+ // Borders
1510
+ /**
1511
+ * Border Radius
1512
+ * @see https://tailwindcss.com/docs/border-radius
1513
+ */
1514
+ rounded: [{
1515
+ rounded: [borderRadius]
1516
+ }],
1517
+ /**
1518
+ * Border Radius Start
1519
+ * @see https://tailwindcss.com/docs/border-radius
1520
+ */
1521
+ 'rounded-s': [{
1522
+ 'rounded-s': [borderRadius]
1523
+ }],
1524
+ /**
1525
+ * Border Radius End
1526
+ * @see https://tailwindcss.com/docs/border-radius
1527
+ */
1528
+ 'rounded-e': [{
1529
+ 'rounded-e': [borderRadius]
1530
+ }],
1531
+ /**
1532
+ * Border Radius Top
1533
+ * @see https://tailwindcss.com/docs/border-radius
1534
+ */
1535
+ 'rounded-t': [{
1536
+ 'rounded-t': [borderRadius]
1537
+ }],
1538
+ /**
1539
+ * Border Radius Right
1540
+ * @see https://tailwindcss.com/docs/border-radius
1541
+ */
1542
+ 'rounded-r': [{
1543
+ 'rounded-r': [borderRadius]
1544
+ }],
1545
+ /**
1546
+ * Border Radius Bottom
1547
+ * @see https://tailwindcss.com/docs/border-radius
1548
+ */
1549
+ 'rounded-b': [{
1550
+ 'rounded-b': [borderRadius]
1551
+ }],
1552
+ /**
1553
+ * Border Radius Left
1554
+ * @see https://tailwindcss.com/docs/border-radius
1555
+ */
1556
+ 'rounded-l': [{
1557
+ 'rounded-l': [borderRadius]
1558
+ }],
1559
+ /**
1560
+ * Border Radius Start Start
1561
+ * @see https://tailwindcss.com/docs/border-radius
1562
+ */
1563
+ 'rounded-ss': [{
1564
+ 'rounded-ss': [borderRadius]
1565
+ }],
1566
+ /**
1567
+ * Border Radius Start End
1568
+ * @see https://tailwindcss.com/docs/border-radius
1569
+ */
1570
+ 'rounded-se': [{
1571
+ 'rounded-se': [borderRadius]
1572
+ }],
1573
+ /**
1574
+ * Border Radius End End
1575
+ * @see https://tailwindcss.com/docs/border-radius
1576
+ */
1577
+ 'rounded-ee': [{
1578
+ 'rounded-ee': [borderRadius]
1579
+ }],
1580
+ /**
1581
+ * Border Radius End Start
1582
+ * @see https://tailwindcss.com/docs/border-radius
1583
+ */
1584
+ 'rounded-es': [{
1585
+ 'rounded-es': [borderRadius]
1586
+ }],
1587
+ /**
1588
+ * Border Radius Top Left
1589
+ * @see https://tailwindcss.com/docs/border-radius
1590
+ */
1591
+ 'rounded-tl': [{
1592
+ 'rounded-tl': [borderRadius]
1593
+ }],
1594
+ /**
1595
+ * Border Radius Top Right
1596
+ * @see https://tailwindcss.com/docs/border-radius
1597
+ */
1598
+ 'rounded-tr': [{
1599
+ 'rounded-tr': [borderRadius]
1600
+ }],
1601
+ /**
1602
+ * Border Radius Bottom Right
1603
+ * @see https://tailwindcss.com/docs/border-radius
1604
+ */
1605
+ 'rounded-br': [{
1606
+ 'rounded-br': [borderRadius]
1607
+ }],
1608
+ /**
1609
+ * Border Radius Bottom Left
1610
+ * @see https://tailwindcss.com/docs/border-radius
1611
+ */
1612
+ 'rounded-bl': [{
1613
+ 'rounded-bl': [borderRadius]
1614
+ }],
1615
+ /**
1616
+ * Border Width
1617
+ * @see https://tailwindcss.com/docs/border-width
1618
+ */
1619
+ 'border-w': [{
1620
+ border: [borderWidth]
1621
+ }],
1622
+ /**
1623
+ * Border Width X
1624
+ * @see https://tailwindcss.com/docs/border-width
1625
+ */
1626
+ 'border-w-x': [{
1627
+ 'border-x': [borderWidth]
1628
+ }],
1629
+ /**
1630
+ * Border Width Y
1631
+ * @see https://tailwindcss.com/docs/border-width
1632
+ */
1633
+ 'border-w-y': [{
1634
+ 'border-y': [borderWidth]
1635
+ }],
1636
+ /**
1637
+ * Border Width Start
1638
+ * @see https://tailwindcss.com/docs/border-width
1639
+ */
1640
+ 'border-w-s': [{
1641
+ 'border-s': [borderWidth]
1642
+ }],
1643
+ /**
1644
+ * Border Width End
1645
+ * @see https://tailwindcss.com/docs/border-width
1646
+ */
1647
+ 'border-w-e': [{
1648
+ 'border-e': [borderWidth]
1649
+ }],
1650
+ /**
1651
+ * Border Width Top
1652
+ * @see https://tailwindcss.com/docs/border-width
1653
+ */
1654
+ 'border-w-t': [{
1655
+ 'border-t': [borderWidth]
1656
+ }],
1657
+ /**
1658
+ * Border Width Right
1659
+ * @see https://tailwindcss.com/docs/border-width
1660
+ */
1661
+ 'border-w-r': [{
1662
+ 'border-r': [borderWidth]
1663
+ }],
1664
+ /**
1665
+ * Border Width Bottom
1666
+ * @see https://tailwindcss.com/docs/border-width
1667
+ */
1668
+ 'border-w-b': [{
1669
+ 'border-b': [borderWidth]
1670
+ }],
1671
+ /**
1672
+ * Border Width Left
1673
+ * @see https://tailwindcss.com/docs/border-width
1674
+ */
1675
+ 'border-w-l': [{
1676
+ 'border-l': [borderWidth]
1677
+ }],
1678
+ /**
1679
+ * Border Opacity
1680
+ * @see https://tailwindcss.com/docs/border-opacity
1681
+ */
1682
+ 'border-opacity': [{
1683
+ 'border-opacity': [opacity]
1684
+ }],
1685
+ /**
1686
+ * Border Style
1687
+ * @see https://tailwindcss.com/docs/border-style
1688
+ */
1689
+ 'border-style': [{
1690
+ border: [...getLineStyles(), 'hidden']
1691
+ }],
1692
+ /**
1693
+ * Divide Width X
1694
+ * @see https://tailwindcss.com/docs/divide-width
1695
+ */
1696
+ 'divide-x': [{
1697
+ 'divide-x': [borderWidth]
1698
+ }],
1699
+ /**
1700
+ * Divide Width X Reverse
1701
+ * @see https://tailwindcss.com/docs/divide-width
1702
+ */
1703
+ 'divide-x-reverse': ['divide-x-reverse'],
1704
+ /**
1705
+ * Divide Width Y
1706
+ * @see https://tailwindcss.com/docs/divide-width
1707
+ */
1708
+ 'divide-y': [{
1709
+ 'divide-y': [borderWidth]
1710
+ }],
1711
+ /**
1712
+ * Divide Width Y Reverse
1713
+ * @see https://tailwindcss.com/docs/divide-width
1714
+ */
1715
+ 'divide-y-reverse': ['divide-y-reverse'],
1716
+ /**
1717
+ * Divide Opacity
1718
+ * @see https://tailwindcss.com/docs/divide-opacity
1719
+ */
1720
+ 'divide-opacity': [{
1721
+ 'divide-opacity': [opacity]
1722
+ }],
1723
+ /**
1724
+ * Divide Style
1725
+ * @see https://tailwindcss.com/docs/divide-style
1726
+ */
1727
+ 'divide-style': [{
1728
+ divide: getLineStyles()
1729
+ }],
1730
+ /**
1731
+ * Border Color
1732
+ * @see https://tailwindcss.com/docs/border-color
1733
+ */
1734
+ 'border-color': [{
1735
+ border: [borderColor]
1736
+ }],
1737
+ /**
1738
+ * Border Color X
1739
+ * @see https://tailwindcss.com/docs/border-color
1740
+ */
1741
+ 'border-color-x': [{
1742
+ 'border-x': [borderColor]
1743
+ }],
1744
+ /**
1745
+ * Border Color Y
1746
+ * @see https://tailwindcss.com/docs/border-color
1747
+ */
1748
+ 'border-color-y': [{
1749
+ 'border-y': [borderColor]
1750
+ }],
1751
+ /**
1752
+ * Border Color Top
1753
+ * @see https://tailwindcss.com/docs/border-color
1754
+ */
1755
+ 'border-color-t': [{
1756
+ 'border-t': [borderColor]
1757
+ }],
1758
+ /**
1759
+ * Border Color Right
1760
+ * @see https://tailwindcss.com/docs/border-color
1761
+ */
1762
+ 'border-color-r': [{
1763
+ 'border-r': [borderColor]
1764
+ }],
1765
+ /**
1766
+ * Border Color Bottom
1767
+ * @see https://tailwindcss.com/docs/border-color
1768
+ */
1769
+ 'border-color-b': [{
1770
+ 'border-b': [borderColor]
1771
+ }],
1772
+ /**
1773
+ * Border Color Left
1774
+ * @see https://tailwindcss.com/docs/border-color
1775
+ */
1776
+ 'border-color-l': [{
1777
+ 'border-l': [borderColor]
1778
+ }],
1779
+ /**
1780
+ * Divide Color
1781
+ * @see https://tailwindcss.com/docs/divide-color
1782
+ */
1783
+ 'divide-color': [{
1784
+ divide: [borderColor]
1785
+ }],
1786
+ /**
1787
+ * Outline Style
1788
+ * @see https://tailwindcss.com/docs/outline-style
1789
+ */
1790
+ 'outline-style': [{
1791
+ outline: ['', ...getLineStyles()]
1792
+ }],
1793
+ /**
1794
+ * Outline Offset
1795
+ * @see https://tailwindcss.com/docs/outline-offset
1796
+ */
1797
+ 'outline-offset': [{
1798
+ 'outline-offset': [isLength, isArbitraryValue]
1799
+ }],
1800
+ /**
1801
+ * Outline Width
1802
+ * @see https://tailwindcss.com/docs/outline-width
1803
+ */
1804
+ 'outline-w': [{
1805
+ outline: [isLength, isArbitraryLength]
1806
+ }],
1807
+ /**
1808
+ * Outline Color
1809
+ * @see https://tailwindcss.com/docs/outline-color
1810
+ */
1811
+ 'outline-color': [{
1812
+ outline: [colors]
1813
+ }],
1814
+ /**
1815
+ * Ring Width
1816
+ * @see https://tailwindcss.com/docs/ring-width
1817
+ */
1818
+ 'ring-w': [{
1819
+ ring: getLengthWithEmptyAndArbitrary()
1820
+ }],
1821
+ /**
1822
+ * Ring Width Inset
1823
+ * @see https://tailwindcss.com/docs/ring-width
1824
+ */
1825
+ 'ring-w-inset': ['ring-inset'],
1826
+ /**
1827
+ * Ring Color
1828
+ * @see https://tailwindcss.com/docs/ring-color
1829
+ */
1830
+ 'ring-color': [{
1831
+ ring: [colors]
1832
+ }],
1833
+ /**
1834
+ * Ring Opacity
1835
+ * @see https://tailwindcss.com/docs/ring-opacity
1836
+ */
1837
+ 'ring-opacity': [{
1838
+ 'ring-opacity': [opacity]
1839
+ }],
1840
+ /**
1841
+ * Ring Offset Width
1842
+ * @see https://tailwindcss.com/docs/ring-offset-width
1843
+ */
1844
+ 'ring-offset-w': [{
1845
+ 'ring-offset': [isLength, isArbitraryLength]
1846
+ }],
1847
+ /**
1848
+ * Ring Offset Color
1849
+ * @see https://tailwindcss.com/docs/ring-offset-color
1850
+ */
1851
+ 'ring-offset-color': [{
1852
+ 'ring-offset': [colors]
1853
+ }],
1854
+ // Effects
1855
+ /**
1856
+ * Box Shadow
1857
+ * @see https://tailwindcss.com/docs/box-shadow
1858
+ */
1859
+ shadow: [{
1860
+ shadow: ['', 'inner', 'none', isTshirtSize, isArbitraryShadow]
1861
+ }],
1862
+ /**
1863
+ * Box Shadow Color
1864
+ * @see https://tailwindcss.com/docs/box-shadow-color
1865
+ */
1866
+ 'shadow-color': [{
1867
+ shadow: [isAny]
1868
+ }],
1869
+ /**
1870
+ * Opacity
1871
+ * @see https://tailwindcss.com/docs/opacity
1872
+ */
1873
+ opacity: [{
1874
+ opacity: [opacity]
1875
+ }],
1876
+ /**
1877
+ * Mix Blend Mode
1878
+ * @see https://tailwindcss.com/docs/mix-blend-mode
1879
+ */
1880
+ 'mix-blend': [{
1881
+ 'mix-blend': getBlendModes()
1882
+ }],
1883
+ /**
1884
+ * Background Blend Mode
1885
+ * @see https://tailwindcss.com/docs/background-blend-mode
1886
+ */
1887
+ 'bg-blend': [{
1888
+ 'bg-blend': getBlendModes()
1889
+ }],
1890
+ // Filters
1891
+ /**
1892
+ * Filter
1893
+ * @deprecated since Tailwind CSS v3.0.0
1894
+ * @see https://tailwindcss.com/docs/filter
1895
+ */
1896
+ filter: [{
1897
+ filter: ['', 'none']
1898
+ }],
1899
+ /**
1900
+ * Blur
1901
+ * @see https://tailwindcss.com/docs/blur
1902
+ */
1903
+ blur: [{
1904
+ blur: [blur]
1905
+ }],
1906
+ /**
1907
+ * Brightness
1908
+ * @see https://tailwindcss.com/docs/brightness
1909
+ */
1910
+ brightness: [{
1911
+ brightness: [brightness]
1912
+ }],
1913
+ /**
1914
+ * Contrast
1915
+ * @see https://tailwindcss.com/docs/contrast
1916
+ */
1917
+ contrast: [{
1918
+ contrast: [contrast]
1919
+ }],
1920
+ /**
1921
+ * Drop Shadow
1922
+ * @see https://tailwindcss.com/docs/drop-shadow
1923
+ */
1924
+ 'drop-shadow': [{
1925
+ 'drop-shadow': ['', 'none', isTshirtSize, isArbitraryValue]
1926
+ }],
1927
+ /**
1928
+ * Grayscale
1929
+ * @see https://tailwindcss.com/docs/grayscale
1930
+ */
1931
+ grayscale: [{
1932
+ grayscale: [grayscale]
1933
+ }],
1934
+ /**
1935
+ * Hue Rotate
1936
+ * @see https://tailwindcss.com/docs/hue-rotate
1937
+ */
1938
+ 'hue-rotate': [{
1939
+ 'hue-rotate': [hueRotate]
1940
+ }],
1941
+ /**
1942
+ * Invert
1943
+ * @see https://tailwindcss.com/docs/invert
1944
+ */
1945
+ invert: [{
1946
+ invert: [invert]
1947
+ }],
1948
+ /**
1949
+ * Saturate
1950
+ * @see https://tailwindcss.com/docs/saturate
1951
+ */
1952
+ saturate: [{
1953
+ saturate: [saturate]
1954
+ }],
1955
+ /**
1956
+ * Sepia
1957
+ * @see https://tailwindcss.com/docs/sepia
1958
+ */
1959
+ sepia: [{
1960
+ sepia: [sepia]
1961
+ }],
1962
+ /**
1963
+ * Backdrop Filter
1964
+ * @deprecated since Tailwind CSS v3.0.0
1965
+ * @see https://tailwindcss.com/docs/backdrop-filter
1966
+ */
1967
+ 'backdrop-filter': [{
1968
+ 'backdrop-filter': ['', 'none']
1969
+ }],
1970
+ /**
1971
+ * Backdrop Blur
1972
+ * @see https://tailwindcss.com/docs/backdrop-blur
1973
+ */
1974
+ 'backdrop-blur': [{
1975
+ 'backdrop-blur': [blur]
1976
+ }],
1977
+ /**
1978
+ * Backdrop Brightness
1979
+ * @see https://tailwindcss.com/docs/backdrop-brightness
1980
+ */
1981
+ 'backdrop-brightness': [{
1982
+ 'backdrop-brightness': [brightness]
1983
+ }],
1984
+ /**
1985
+ * Backdrop Contrast
1986
+ * @see https://tailwindcss.com/docs/backdrop-contrast
1987
+ */
1988
+ 'backdrop-contrast': [{
1989
+ 'backdrop-contrast': [contrast]
1990
+ }],
1991
+ /**
1992
+ * Backdrop Grayscale
1993
+ * @see https://tailwindcss.com/docs/backdrop-grayscale
1994
+ */
1995
+ 'backdrop-grayscale': [{
1996
+ 'backdrop-grayscale': [grayscale]
1997
+ }],
1998
+ /**
1999
+ * Backdrop Hue Rotate
2000
+ * @see https://tailwindcss.com/docs/backdrop-hue-rotate
2001
+ */
2002
+ 'backdrop-hue-rotate': [{
2003
+ 'backdrop-hue-rotate': [hueRotate]
2004
+ }],
2005
+ /**
2006
+ * Backdrop Invert
2007
+ * @see https://tailwindcss.com/docs/backdrop-invert
2008
+ */
2009
+ 'backdrop-invert': [{
2010
+ 'backdrop-invert': [invert]
2011
+ }],
2012
+ /**
2013
+ * Backdrop Opacity
2014
+ * @see https://tailwindcss.com/docs/backdrop-opacity
2015
+ */
2016
+ 'backdrop-opacity': [{
2017
+ 'backdrop-opacity': [opacity]
2018
+ }],
2019
+ /**
2020
+ * Backdrop Saturate
2021
+ * @see https://tailwindcss.com/docs/backdrop-saturate
2022
+ */
2023
+ 'backdrop-saturate': [{
2024
+ 'backdrop-saturate': [saturate]
2025
+ }],
2026
+ /**
2027
+ * Backdrop Sepia
2028
+ * @see https://tailwindcss.com/docs/backdrop-sepia
2029
+ */
2030
+ 'backdrop-sepia': [{
2031
+ 'backdrop-sepia': [sepia]
2032
+ }],
2033
+ // Tables
2034
+ /**
2035
+ * Border Collapse
2036
+ * @see https://tailwindcss.com/docs/border-collapse
2037
+ */
2038
+ 'border-collapse': [{
2039
+ border: ['collapse', 'separate']
2040
+ }],
2041
+ /**
2042
+ * Border Spacing
2043
+ * @see https://tailwindcss.com/docs/border-spacing
2044
+ */
2045
+ 'border-spacing': [{
2046
+ 'border-spacing': [borderSpacing]
2047
+ }],
2048
+ /**
2049
+ * Border Spacing X
2050
+ * @see https://tailwindcss.com/docs/border-spacing
2051
+ */
2052
+ 'border-spacing-x': [{
2053
+ 'border-spacing-x': [borderSpacing]
2054
+ }],
2055
+ /**
2056
+ * Border Spacing Y
2057
+ * @see https://tailwindcss.com/docs/border-spacing
2058
+ */
2059
+ 'border-spacing-y': [{
2060
+ 'border-spacing-y': [borderSpacing]
2061
+ }],
2062
+ /**
2063
+ * Table Layout
2064
+ * @see https://tailwindcss.com/docs/table-layout
2065
+ */
2066
+ 'table-layout': [{
2067
+ table: ['auto', 'fixed']
2068
+ }],
2069
+ /**
2070
+ * Caption Side
2071
+ * @see https://tailwindcss.com/docs/caption-side
2072
+ */
2073
+ caption: [{
2074
+ caption: ['top', 'bottom']
2075
+ }],
2076
+ // Transitions and Animation
2077
+ /**
2078
+ * Tranisition Property
2079
+ * @see https://tailwindcss.com/docs/transition-property
2080
+ */
2081
+ transition: [{
2082
+ transition: ['none', 'all', '', 'colors', 'opacity', 'shadow', 'transform', isArbitraryValue]
2083
+ }],
2084
+ /**
2085
+ * Transition Duration
2086
+ * @see https://tailwindcss.com/docs/transition-duration
2087
+ */
2088
+ duration: [{
2089
+ duration: getNumberAndArbitrary()
2090
+ }],
2091
+ /**
2092
+ * Transition Timing Function
2093
+ * @see https://tailwindcss.com/docs/transition-timing-function
2094
+ */
2095
+ ease: [{
2096
+ ease: ['linear', 'in', 'out', 'in-out', isArbitraryValue]
2097
+ }],
2098
+ /**
2099
+ * Transition Delay
2100
+ * @see https://tailwindcss.com/docs/transition-delay
2101
+ */
2102
+ delay: [{
2103
+ delay: getNumberAndArbitrary()
2104
+ }],
2105
+ /**
2106
+ * Animation
2107
+ * @see https://tailwindcss.com/docs/animation
2108
+ */
2109
+ animate: [{
2110
+ animate: ['none', 'spin', 'ping', 'pulse', 'bounce', isArbitraryValue]
2111
+ }],
2112
+ // Transforms
2113
+ /**
2114
+ * Transform
2115
+ * @see https://tailwindcss.com/docs/transform
2116
+ */
2117
+ transform: [{
2118
+ transform: ['', 'gpu', 'none']
2119
+ }],
2120
+ /**
2121
+ * Scale
2122
+ * @see https://tailwindcss.com/docs/scale
2123
+ */
2124
+ scale: [{
2125
+ scale: [scale]
2126
+ }],
2127
+ /**
2128
+ * Scale X
2129
+ * @see https://tailwindcss.com/docs/scale
2130
+ */
2131
+ 'scale-x': [{
2132
+ 'scale-x': [scale]
2133
+ }],
2134
+ /**
2135
+ * Scale Y
2136
+ * @see https://tailwindcss.com/docs/scale
2137
+ */
2138
+ 'scale-y': [{
2139
+ 'scale-y': [scale]
2140
+ }],
2141
+ /**
2142
+ * Rotate
2143
+ * @see https://tailwindcss.com/docs/rotate
2144
+ */
2145
+ rotate: [{
2146
+ rotate: [isInteger, isArbitraryValue]
2147
+ }],
2148
+ /**
2149
+ * Translate X
2150
+ * @see https://tailwindcss.com/docs/translate
2151
+ */
2152
+ 'translate-x': [{
2153
+ 'translate-x': [translate]
2154
+ }],
2155
+ /**
2156
+ * Translate Y
2157
+ * @see https://tailwindcss.com/docs/translate
2158
+ */
2159
+ 'translate-y': [{
2160
+ 'translate-y': [translate]
2161
+ }],
2162
+ /**
2163
+ * Skew X
2164
+ * @see https://tailwindcss.com/docs/skew
2165
+ */
2166
+ 'skew-x': [{
2167
+ 'skew-x': [skew]
2168
+ }],
2169
+ /**
2170
+ * Skew Y
2171
+ * @see https://tailwindcss.com/docs/skew
2172
+ */
2173
+ 'skew-y': [{
2174
+ 'skew-y': [skew]
2175
+ }],
2176
+ /**
2177
+ * Transform Origin
2178
+ * @see https://tailwindcss.com/docs/transform-origin
2179
+ */
2180
+ 'transform-origin': [{
2181
+ origin: ['center', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', isArbitraryValue]
2182
+ }],
2183
+ // Interactivity
2184
+ /**
2185
+ * Accent Color
2186
+ * @see https://tailwindcss.com/docs/accent-color
2187
+ */
2188
+ accent: [{
2189
+ accent: ['auto', colors]
2190
+ }],
2191
+ /**
2192
+ * Appearance
2193
+ * @see https://tailwindcss.com/docs/appearance
2194
+ */
2195
+ appearance: [{
2196
+ appearance: ['none', 'auto']
2197
+ }],
2198
+ /**
2199
+ * Cursor
2200
+ * @see https://tailwindcss.com/docs/cursor
2201
+ */
2202
+ cursor: [{
2203
+ 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]
2204
+ }],
2205
+ /**
2206
+ * Caret Color
2207
+ * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
2208
+ */
2209
+ 'caret-color': [{
2210
+ caret: [colors]
2211
+ }],
2212
+ /**
2213
+ * Pointer Events
2214
+ * @see https://tailwindcss.com/docs/pointer-events
2215
+ */
2216
+ 'pointer-events': [{
2217
+ 'pointer-events': ['none', 'auto']
2218
+ }],
2219
+ /**
2220
+ * Resize
2221
+ * @see https://tailwindcss.com/docs/resize
2222
+ */
2223
+ resize: [{
2224
+ resize: ['none', 'y', 'x', '']
2225
+ }],
2226
+ /**
2227
+ * Scroll Behavior
2228
+ * @see https://tailwindcss.com/docs/scroll-behavior
2229
+ */
2230
+ 'scroll-behavior': [{
2231
+ scroll: ['auto', 'smooth']
2232
+ }],
2233
+ /**
2234
+ * Scroll Margin
2235
+ * @see https://tailwindcss.com/docs/scroll-margin
2236
+ */
2237
+ 'scroll-m': [{
2238
+ 'scroll-m': getSpacingWithArbitrary()
2239
+ }],
2240
+ /**
2241
+ * Scroll Margin X
2242
+ * @see https://tailwindcss.com/docs/scroll-margin
2243
+ */
2244
+ 'scroll-mx': [{
2245
+ 'scroll-mx': getSpacingWithArbitrary()
2246
+ }],
2247
+ /**
2248
+ * Scroll Margin Y
2249
+ * @see https://tailwindcss.com/docs/scroll-margin
2250
+ */
2251
+ 'scroll-my': [{
2252
+ 'scroll-my': getSpacingWithArbitrary()
2253
+ }],
2254
+ /**
2255
+ * Scroll Margin Start
2256
+ * @see https://tailwindcss.com/docs/scroll-margin
2257
+ */
2258
+ 'scroll-ms': [{
2259
+ 'scroll-ms': getSpacingWithArbitrary()
2260
+ }],
2261
+ /**
2262
+ * Scroll Margin End
2263
+ * @see https://tailwindcss.com/docs/scroll-margin
2264
+ */
2265
+ 'scroll-me': [{
2266
+ 'scroll-me': getSpacingWithArbitrary()
2267
+ }],
2268
+ /**
2269
+ * Scroll Margin Top
2270
+ * @see https://tailwindcss.com/docs/scroll-margin
2271
+ */
2272
+ 'scroll-mt': [{
2273
+ 'scroll-mt': getSpacingWithArbitrary()
2274
+ }],
2275
+ /**
2276
+ * Scroll Margin Right
2277
+ * @see https://tailwindcss.com/docs/scroll-margin
2278
+ */
2279
+ 'scroll-mr': [{
2280
+ 'scroll-mr': getSpacingWithArbitrary()
2281
+ }],
2282
+ /**
2283
+ * Scroll Margin Bottom
2284
+ * @see https://tailwindcss.com/docs/scroll-margin
2285
+ */
2286
+ 'scroll-mb': [{
2287
+ 'scroll-mb': getSpacingWithArbitrary()
2288
+ }],
2289
+ /**
2290
+ * Scroll Margin Left
2291
+ * @see https://tailwindcss.com/docs/scroll-margin
2292
+ */
2293
+ 'scroll-ml': [{
2294
+ 'scroll-ml': getSpacingWithArbitrary()
2295
+ }],
2296
+ /**
2297
+ * Scroll Padding
2298
+ * @see https://tailwindcss.com/docs/scroll-padding
2299
+ */
2300
+ 'scroll-p': [{
2301
+ 'scroll-p': getSpacingWithArbitrary()
2302
+ }],
2303
+ /**
2304
+ * Scroll Padding X
2305
+ * @see https://tailwindcss.com/docs/scroll-padding
2306
+ */
2307
+ 'scroll-px': [{
2308
+ 'scroll-px': getSpacingWithArbitrary()
2309
+ }],
2310
+ /**
2311
+ * Scroll Padding Y
2312
+ * @see https://tailwindcss.com/docs/scroll-padding
2313
+ */
2314
+ 'scroll-py': [{
2315
+ 'scroll-py': getSpacingWithArbitrary()
2316
+ }],
2317
+ /**
2318
+ * Scroll Padding Start
2319
+ * @see https://tailwindcss.com/docs/scroll-padding
2320
+ */
2321
+ 'scroll-ps': [{
2322
+ 'scroll-ps': getSpacingWithArbitrary()
2323
+ }],
2324
+ /**
2325
+ * Scroll Padding End
2326
+ * @see https://tailwindcss.com/docs/scroll-padding
2327
+ */
2328
+ 'scroll-pe': [{
2329
+ 'scroll-pe': getSpacingWithArbitrary()
2330
+ }],
2331
+ /**
2332
+ * Scroll Padding Top
2333
+ * @see https://tailwindcss.com/docs/scroll-padding
2334
+ */
2335
+ 'scroll-pt': [{
2336
+ 'scroll-pt': getSpacingWithArbitrary()
2337
+ }],
2338
+ /**
2339
+ * Scroll Padding Right
2340
+ * @see https://tailwindcss.com/docs/scroll-padding
2341
+ */
2342
+ 'scroll-pr': [{
2343
+ 'scroll-pr': getSpacingWithArbitrary()
2344
+ }],
2345
+ /**
2346
+ * Scroll Padding Bottom
2347
+ * @see https://tailwindcss.com/docs/scroll-padding
2348
+ */
2349
+ 'scroll-pb': [{
2350
+ 'scroll-pb': getSpacingWithArbitrary()
2351
+ }],
2352
+ /**
2353
+ * Scroll Padding Left
2354
+ * @see https://tailwindcss.com/docs/scroll-padding
2355
+ */
2356
+ 'scroll-pl': [{
2357
+ 'scroll-pl': getSpacingWithArbitrary()
2358
+ }],
2359
+ /**
2360
+ * Scroll Snap Align
2361
+ * @see https://tailwindcss.com/docs/scroll-snap-align
2362
+ */
2363
+ 'snap-align': [{
2364
+ snap: ['start', 'end', 'center', 'align-none']
2365
+ }],
2366
+ /**
2367
+ * Scroll Snap Stop
2368
+ * @see https://tailwindcss.com/docs/scroll-snap-stop
2369
+ */
2370
+ 'snap-stop': [{
2371
+ snap: ['normal', 'always']
2372
+ }],
2373
+ /**
2374
+ * Scroll Snap Type
2375
+ * @see https://tailwindcss.com/docs/scroll-snap-type
2376
+ */
2377
+ 'snap-type': [{
2378
+ snap: ['none', 'x', 'y', 'both']
2379
+ }],
2380
+ /**
2381
+ * Scroll Snap Type Strictness
2382
+ * @see https://tailwindcss.com/docs/scroll-snap-type
2383
+ */
2384
+ 'snap-strictness': [{
2385
+ snap: ['mandatory', 'proximity']
2386
+ }],
2387
+ /**
2388
+ * Touch Action
2389
+ * @see https://tailwindcss.com/docs/touch-action
2390
+ */
2391
+ touch: [{
2392
+ touch: ['auto', 'none', 'manipulation']
2393
+ }],
2394
+ /**
2395
+ * Touch Action X
2396
+ * @see https://tailwindcss.com/docs/touch-action
2397
+ */
2398
+ 'touch-x': [{
2399
+ 'touch-pan': ['x', 'left', 'right']
2400
+ }],
2401
+ /**
2402
+ * Touch Action Y
2403
+ * @see https://tailwindcss.com/docs/touch-action
2404
+ */
2405
+ 'touch-y': [{
2406
+ 'touch-pan': ['y', 'up', 'down']
2407
+ }],
2408
+ /**
2409
+ * Touch Action Pinch Zoom
2410
+ * @see https://tailwindcss.com/docs/touch-action
2411
+ */
2412
+ 'touch-pz': ['touch-pinch-zoom'],
2413
+ /**
2414
+ * User Select
2415
+ * @see https://tailwindcss.com/docs/user-select
2416
+ */
2417
+ select: [{
2418
+ select: ['none', 'text', 'all', 'auto']
2419
+ }],
2420
+ /**
2421
+ * Will Change
2422
+ * @see https://tailwindcss.com/docs/will-change
2423
+ */
2424
+ 'will-change': [{
2425
+ 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryValue]
2426
+ }],
2427
+ // SVG
2428
+ /**
2429
+ * Fill
2430
+ * @see https://tailwindcss.com/docs/fill
2431
+ */
2432
+ fill: [{
2433
+ fill: [colors, 'none']
2434
+ }],
2435
+ /**
2436
+ * Stroke Width
2437
+ * @see https://tailwindcss.com/docs/stroke-width
2438
+ */
2439
+ 'stroke-w': [{
2440
+ stroke: [isLength, isArbitraryLength, isArbitraryNumber]
2441
+ }],
2442
+ /**
2443
+ * Stroke
2444
+ * @see https://tailwindcss.com/docs/stroke
2445
+ */
2446
+ stroke: [{
2447
+ stroke: [colors, 'none']
2448
+ }],
2449
+ // Accessibility
2450
+ /**
2451
+ * Screen Readers
2452
+ * @see https://tailwindcss.com/docs/screen-readers
2453
+ */
2454
+ sr: ['sr-only', 'not-sr-only'],
2455
+ /**
2456
+ * Forced Color Adjust
2457
+ * @see https://tailwindcss.com/docs/forced-color-adjust
2458
+ */
2459
+ 'forced-color-adjust': [{
2460
+ 'forced-color-adjust': ['auto', 'none']
2461
+ }]
2462
+ },
2463
+ conflictingClassGroups: {
2464
+ overflow: ['overflow-x', 'overflow-y'],
2465
+ overscroll: ['overscroll-x', 'overscroll-y'],
2466
+ inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],
2467
+ 'inset-x': ['right', 'left'],
2468
+ 'inset-y': ['top', 'bottom'],
2469
+ flex: ['basis', 'grow', 'shrink'],
2470
+ gap: ['gap-x', 'gap-y'],
2471
+ p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],
2472
+ px: ['pr', 'pl'],
2473
+ py: ['pt', 'pb'],
2474
+ m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],
2475
+ mx: ['mr', 'ml'],
2476
+ my: ['mt', 'mb'],
2477
+ size: ['w', 'h'],
2478
+ 'font-size': ['leading'],
2479
+ 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],
2480
+ 'fvn-ordinal': ['fvn-normal'],
2481
+ 'fvn-slashed-zero': ['fvn-normal'],
2482
+ 'fvn-figure': ['fvn-normal'],
2483
+ 'fvn-spacing': ['fvn-normal'],
2484
+ 'fvn-fraction': ['fvn-normal'],
2485
+ 'line-clamp': ['display', 'overflow'],
2486
+ 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'],
2487
+ 'rounded-s': ['rounded-ss', 'rounded-es'],
2488
+ 'rounded-e': ['rounded-se', 'rounded-ee'],
2489
+ 'rounded-t': ['rounded-tl', 'rounded-tr'],
2490
+ 'rounded-r': ['rounded-tr', 'rounded-br'],
2491
+ 'rounded-b': ['rounded-br', 'rounded-bl'],
2492
+ 'rounded-l': ['rounded-tl', 'rounded-bl'],
2493
+ 'border-spacing': ['border-spacing-x', 'border-spacing-y'],
2494
+ 'border-w': ['border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],
2495
+ 'border-w-x': ['border-w-r', 'border-w-l'],
2496
+ 'border-w-y': ['border-w-t', 'border-w-b'],
2497
+ 'border-color': ['border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],
2498
+ 'border-color-x': ['border-color-r', 'border-color-l'],
2499
+ 'border-color-y': ['border-color-t', 'border-color-b'],
2500
+ 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],
2501
+ 'scroll-mx': ['scroll-mr', 'scroll-ml'],
2502
+ 'scroll-my': ['scroll-mt', 'scroll-mb'],
2503
+ 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],
2504
+ 'scroll-px': ['scroll-pr', 'scroll-pl'],
2505
+ 'scroll-py': ['scroll-pt', 'scroll-pb'],
2506
+ touch: ['touch-x', 'touch-y', 'touch-pz'],
2507
+ 'touch-x': ['touch'],
2508
+ 'touch-y': ['touch'],
2509
+ 'touch-pz': ['touch']
2510
+ },
2511
+ conflictingClassGroupModifiers: {
2512
+ 'font-size': ['leading']
2513
+ }
2514
+ };
2515
+ }
2516
+ const twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);
2517
+
2518
+ const variants = {
2519
+ base: "",
2520
+ primary: "bg-Background-accentEggplant-100 text-Text-textPrimaryDark rounded-sm hover:text-Text-textPrimaryDark hover:bg-Background-accentEggplant-highlight active:bg-Background-accentEggplant-darkened focus:bg-Background-accentEggplant-100 focus:border focus:border-white",
2521
+ secondary: "",
2522
+ tertiary: "",
2523
+ quaternary: "",
2524
+ small: "py-space075 px-space400",
2525
+ large: "py-space150 px-space400"
2526
+ };
2527
+ const Button = React.forwardRef(
2528
+ ({ color = "primary", size = "small", className, ...rest }, ref) => /* @__PURE__ */ jsx(
2529
+ "button",
2530
+ {
2531
+ ref,
2532
+ className: twMerge(clsx(variants.base, variants[color], variants[size], className)),
2533
+ ...rest
2534
+ }
2535
+ )
2536
+ );
2537
+ Button.displayName = "Button";
2538
+
2539
+ export { Button };