@pnkx-lib/ui 1.9.66 → 1.9.67

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.
@@ -1,9 +1,9 @@
1
- import { j as jsxRuntimeExports, d as get$1, s as set$1, e as appendErrors, f as Icon, _ as _extends, h as _typeof, P as PnkxField, C as CheckboxField, u as useForm, c as classNames, l as lodashExports, I as Input, i as _arrayLikeToArray, k as _unsupportedIterableToArray, w as warningOnce, m as _createClass, n as _classCallCheck, o as _defineProperty, p as _slicedToArray, q as warning$1, r as canUseDom, t as _objectSpread2, v as updateCSS, x as removeCSS, y as _arrayWithHoles, z as _nonIterableRest, A as resetWarned$1, F as FastColor, B as generate, G as presetPrimaryColors, H as presetPalettes, J as _inherits, K as _createSuper, M as _assertThisInitialized, N as _objectWithoutProperties, O as IconContext } from './Upload-D0erjks6.js';
1
+ import { j as jsxRuntimeExports, d as get$1, s as set$1, e as appendErrors, f as Icon, _ as _extends, h as _typeof, P as PnkxField, C as CheckboxField, t as twMerge, u as useForm, c as classNames, l as lodashExports, I as Input, i as _arrayLikeToArray, k as _unsupportedIterableToArray, w as warningOnce, m as _createClass, n as _classCallCheck, o as _defineProperty, p as _slicedToArray, q as warning$1, r as canUseDom, v as _objectSpread2, x as updateCSS, y as removeCSS, z as _arrayWithHoles, A as _nonIterableRest, B as resetWarned$1, F as FastColor, G as generate, H as presetPrimaryColors, J as presetPalettes, K as _inherits, M as _createSuper, N as _assertThisInitialized, O as _objectWithoutProperties, Q as IconContext } from './Upload-DdFgZlzA.js';
2
2
  import { Button as Button$1, Cascader, Space as Space$1, Card, Skeleton as Skeleton$1, Modal as Modal$1, Badge as Badge$1, Breadcrumb as Breadcrumb$1, Tooltip as Tooltip$1, Divider as Divider$2, Popconfirm as Popconfirm$1, Table as Table$1, Tabs as Tabs$1, Popover as Popover$1, Col as Col$1, Row as Row$1, Dropdown as Dropdown$1, Flex as Flex$1, Splitter as Splitter$1, Menu as Menu$1, Pagination as Pagination$1, Steps as Steps$1, Tag as Tag$1, Alert as Alert$1, Spin as Spin$1, Drawer as Drawer$1, QRCode as QRCode$1, Result as Result$1, Rate as Rate$1, Segmented as Segmented$1, Statistic as Statistic$1, Timeline as Timeline$1, Tour as Tour$1, Tree as Tree$1, Typography, Watermark as Watermark$1, Anchor as Anchor$1, Affix, AutoComplete as AutoComplete$1, Input as Input$1, Collapse, ColorPicker, Empty as Empty$2, Image as Image$1 } from 'antd';
3
3
  import * as React from 'react';
4
4
  import React__default, { version as version$1, isValidElement, useLayoutEffect as useLayoutEffect$1, useEffect, useRef, useMemo as useMemo$1, useCallback, useState, createContext, memo, useReducer, useContext, Component } from 'react';
5
5
  import ReactDOM__default, { unstable_batchedUpdates, createPortal } from 'react-dom';
6
- import { useNavigate, useLocation } from 'react-router';
6
+ import { useLocation, useNavigate } from 'react-router';
7
7
  import { u as useToast, T as TypeActionRowTable } from './table-B28OPA57.js';
8
8
 
9
9
  const Button = (props) => {
@@ -31,1677 +31,6 @@ const r=(t,r,o)=>{if(t&&"reportValidity"in t){const s=get$1(o,r);t.setCustomVali
31
31
 
32
32
  function o(o,n,s$1){return void 0===s$1&&(s$1={}),function(a,i,c){try{return Promise.resolve(function(t,r){try{var u=(null!=n&&n.context&&"development"===process.env.NODE_ENV&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(o["sync"===s$1.mode?"validateSync":"validate"](a,Object.assign({abortEarly:!1},n,{context:i}))).then(function(t){return c.shouldUseNativeValidation&&o$1({},c),{values:s$1.raw?Object.assign({},a):t,errors:{}}}));}catch(e){return r(e)}return u&&u.then?u.then(void 0,r):u}(0,function(e){if(!e.inner)throw e;return {values:{},errors:s((o=e,n=!c.shouldUseNativeValidation&&"all"===c.criteriaMode,(o.inner||[]).reduce(function(e,t){if(e[t.path]||(e[t.path]={message:t.message,type:t.type}),n){var o=e[t.path].types,s=o&&o[t.type];e[t.path]=appendErrors(t.path,n,e,t.type,s?[].concat(s,t.message):t.message);}return e},{})),c)};var o,n;}))}catch(e){return Promise.reject(e)}}}
33
33
 
34
- /*
35
-
36
- Based off glamor's StyleSheet, thanks Sunil ❤️
37
-
38
- high performance StyleSheet for css-in-js systems
39
-
40
- - uses multiple style tags behind the scenes for millions of rules
41
- - uses `insertRule` for appending in production for *much* faster performance
42
-
43
- // usage
44
-
45
- import { StyleSheet } from '@emotion/sheet'
46
-
47
- let styleSheet = new StyleSheet({ key: '', container: document.head })
48
-
49
- styleSheet.insert('#box { border: 1px solid red; }')
50
- - appends a css rule into the stylesheet
51
-
52
- styleSheet.flush()
53
- - empties the stylesheet of all its contents
54
-
55
- */
56
-
57
- function sheetForTag(tag) {
58
- if (tag.sheet) {
59
- return tag.sheet;
60
- } // this weirdness brought to you by firefox
61
-
62
- /* istanbul ignore next */
63
-
64
-
65
- for (var i = 0; i < document.styleSheets.length; i++) {
66
- if (document.styleSheets[i].ownerNode === tag) {
67
- return document.styleSheets[i];
68
- }
69
- } // this function should always return with a value
70
- // TS can't understand it though so we make it stop complaining here
71
-
72
-
73
- return undefined;
74
- }
75
-
76
- function createStyleElement(options) {
77
- var tag = document.createElement('style');
78
- tag.setAttribute('data-emotion', options.key);
79
-
80
- if (options.nonce !== undefined) {
81
- tag.setAttribute('nonce', options.nonce);
82
- }
83
-
84
- tag.appendChild(document.createTextNode(''));
85
- tag.setAttribute('data-s', '');
86
- return tag;
87
- }
88
-
89
- var StyleSheet = /*#__PURE__*/function () {
90
- // Using Node instead of HTMLElement since container may be a ShadowRoot
91
- function StyleSheet(options) {
92
- var _this = this;
93
-
94
- this._insertTag = function (tag) {
95
- var before;
96
-
97
- if (_this.tags.length === 0) {
98
- if (_this.insertionPoint) {
99
- before = _this.insertionPoint.nextSibling;
100
- } else if (_this.prepend) {
101
- before = _this.container.firstChild;
102
- } else {
103
- before = _this.before;
104
- }
105
- } else {
106
- before = _this.tags[_this.tags.length - 1].nextSibling;
107
- }
108
-
109
- _this.container.insertBefore(tag, before);
110
-
111
- _this.tags.push(tag);
112
- };
113
-
114
- this.isSpeedy = options.speedy === undefined ? true : options.speedy;
115
- this.tags = [];
116
- this.ctr = 0;
117
- this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets
118
-
119
- this.key = options.key;
120
- this.container = options.container;
121
- this.prepend = options.prepend;
122
- this.insertionPoint = options.insertionPoint;
123
- this.before = null;
124
- }
125
-
126
- var _proto = StyleSheet.prototype;
127
-
128
- _proto.hydrate = function hydrate(nodes) {
129
- nodes.forEach(this._insertTag);
130
- };
131
-
132
- _proto.insert = function insert(rule) {
133
- // the max length is how many rules we have per style tag, it's 65000 in speedy mode
134
- // it's 1 in dev because we insert source maps that map a single rule to a location
135
- // and you can only have one source map per style tag
136
- if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {
137
- this._insertTag(createStyleElement(this));
138
- }
139
-
140
- var tag = this.tags[this.tags.length - 1];
141
-
142
- if (this.isSpeedy) {
143
- var sheet = sheetForTag(tag);
144
-
145
- try {
146
- // this is the ultrafast version, works across browsers
147
- // the big drawback is that the css won't be editable in devtools
148
- sheet.insertRule(rule, sheet.cssRules.length);
149
- } catch (e) {
150
- }
151
- } else {
152
- tag.appendChild(document.createTextNode(rule));
153
- }
154
-
155
- this.ctr++;
156
- };
157
-
158
- _proto.flush = function flush() {
159
- this.tags.forEach(function (tag) {
160
- var _tag$parentNode;
161
-
162
- return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);
163
- });
164
- this.tags = [];
165
- this.ctr = 0;
166
- };
167
-
168
- return StyleSheet;
169
- }();
170
-
171
- var MS = '-ms-';
172
- var MOZ = '-moz-';
173
- var WEBKIT = '-webkit-';
174
-
175
- var COMMENT$1 = 'comm';
176
- var RULESET$1 = 'rule';
177
- var DECLARATION$1 = 'decl';
178
- var IMPORT$1 = '@import';
179
- var KEYFRAMES$1 = '@keyframes';
180
- var LAYER$1 = '@layer';
181
-
182
- /**
183
- * @param {number}
184
- * @return {number}
185
- */
186
- var abs$1 = Math.abs;
187
-
188
- /**
189
- * @param {number}
190
- * @return {string}
191
- */
192
- var from$1 = String.fromCharCode;
193
-
194
- /**
195
- * @param {object}
196
- * @return {object}
197
- */
198
- var assign = Object.assign;
199
-
200
- /**
201
- * @param {string} value
202
- * @param {number} length
203
- * @return {number}
204
- */
205
- function hash (value, length) {
206
- return charat$1(value, 0) ^ 45 ? (((((((length << 2) ^ charat$1(value, 0)) << 2) ^ charat$1(value, 1)) << 2) ^ charat$1(value, 2)) << 2) ^ charat$1(value, 3) : 0
207
- }
208
-
209
- /**
210
- * @param {string} value
211
- * @return {string}
212
- */
213
- function trim$1 (value) {
214
- return value.trim()
215
- }
216
-
217
- /**
218
- * @param {string} value
219
- * @param {RegExp} pattern
220
- * @return {string?}
221
- */
222
- function match (value, pattern) {
223
- return (value = pattern.exec(value)) ? value[0] : value
224
- }
225
-
226
- /**
227
- * @param {string} value
228
- * @param {(string|RegExp)} pattern
229
- * @param {string} replacement
230
- * @return {string}
231
- */
232
- function replace$1 (value, pattern, replacement) {
233
- return value.replace(pattern, replacement)
234
- }
235
-
236
- /**
237
- * @param {string} value
238
- * @param {string} search
239
- * @return {number}
240
- */
241
- function indexof$1 (value, search) {
242
- return value.indexOf(search)
243
- }
244
-
245
- /**
246
- * @param {string} value
247
- * @param {number} index
248
- * @return {number}
249
- */
250
- function charat$1 (value, index) {
251
- return value.charCodeAt(index) | 0
252
- }
253
-
254
- /**
255
- * @param {string} value
256
- * @param {number} begin
257
- * @param {number} end
258
- * @return {string}
259
- */
260
- function substr$1 (value, begin, end) {
261
- return value.slice(begin, end)
262
- }
263
-
264
- /**
265
- * @param {string} value
266
- * @return {number}
267
- */
268
- function strlen$1 (value) {
269
- return value.length
270
- }
271
-
272
- /**
273
- * @param {any[]} value
274
- * @return {number}
275
- */
276
- function sizeof$1 (value) {
277
- return value.length
278
- }
279
-
280
- /**
281
- * @param {any} value
282
- * @param {any[]} array
283
- * @return {any}
284
- */
285
- function append$1 (value, array) {
286
- return array.push(value), value
287
- }
288
-
289
- /**
290
- * @param {string[]} array
291
- * @param {function} callback
292
- * @return {string}
293
- */
294
- function combine (array, callback) {
295
- return array.map(callback).join('')
296
- }
297
-
298
- var line$1 = 1;
299
- var column$1 = 1;
300
- var length$1 = 0;
301
- var position$1 = 0;
302
- var character$1 = 0;
303
- var characters$1 = '';
304
-
305
- /**
306
- * @param {string} value
307
- * @param {object | null} root
308
- * @param {object | null} parent
309
- * @param {string} type
310
- * @param {string[] | string} props
311
- * @param {object[] | string} children
312
- * @param {number} length
313
- */
314
- function node$1 (value, root, parent, type, props, children, length) {
315
- return {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line$1, column: column$1, length: length, return: ''}
316
- }
317
-
318
- /**
319
- * @param {object} root
320
- * @param {object} props
321
- * @return {object}
322
- */
323
- function copy (root, props) {
324
- return assign(node$1('', null, null, '', null, null, 0), root, {length: -root.length}, props)
325
- }
326
-
327
- /**
328
- * @return {number}
329
- */
330
- function char$1 () {
331
- return character$1
332
- }
333
-
334
- /**
335
- * @return {number}
336
- */
337
- function prev$1 () {
338
- character$1 = position$1 > 0 ? charat$1(characters$1, --position$1) : 0;
339
-
340
- if (column$1--, character$1 === 10)
341
- column$1 = 1, line$1--;
342
-
343
- return character$1
344
- }
345
-
346
- /**
347
- * @return {number}
348
- */
349
- function next$1 () {
350
- character$1 = position$1 < length$1 ? charat$1(characters$1, position$1++) : 0;
351
-
352
- if (column$1++, character$1 === 10)
353
- column$1 = 1, line$1++;
354
-
355
- return character$1
356
- }
357
-
358
- /**
359
- * @return {number}
360
- */
361
- function peek$1 () {
362
- return charat$1(characters$1, position$1)
363
- }
364
-
365
- /**
366
- * @return {number}
367
- */
368
- function caret$1 () {
369
- return position$1
370
- }
371
-
372
- /**
373
- * @param {number} begin
374
- * @param {number} end
375
- * @return {string}
376
- */
377
- function slice$1 (begin, end) {
378
- return substr$1(characters$1, begin, end)
379
- }
380
-
381
- /**
382
- * @param {number} type
383
- * @return {number}
384
- */
385
- function token$1 (type) {
386
- switch (type) {
387
- // \0 \t \n \r \s whitespace token
388
- case 0: case 9: case 10: case 13: case 32:
389
- return 5
390
- // ! + , / > @ ~ isolate token
391
- case 33: case 43: case 44: case 47: case 62: case 64: case 126:
392
- // ; { } breakpoint token
393
- case 59: case 123: case 125:
394
- return 4
395
- // : accompanied token
396
- case 58:
397
- return 3
398
- // " ' ( [ opening delimit token
399
- case 34: case 39: case 40: case 91:
400
- return 2
401
- // ) ] closing delimit token
402
- case 41: case 93:
403
- return 1
404
- }
405
-
406
- return 0
407
- }
408
-
409
- /**
410
- * @param {string} value
411
- * @return {any[]}
412
- */
413
- function alloc$1 (value) {
414
- return line$1 = column$1 = 1, length$1 = strlen$1(characters$1 = value), position$1 = 0, []
415
- }
416
-
417
- /**
418
- * @param {any} value
419
- * @return {any}
420
- */
421
- function dealloc$1 (value) {
422
- return characters$1 = '', value
423
- }
424
-
425
- /**
426
- * @param {number} type
427
- * @return {string}
428
- */
429
- function delimit$1 (type) {
430
- return trim$1(slice$1(position$1 - 1, delimiter$1(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))
431
- }
432
-
433
- /**
434
- * @param {number} type
435
- * @return {string}
436
- */
437
- function whitespace$1 (type) {
438
- while (character$1 = peek$1())
439
- if (character$1 < 33)
440
- next$1();
441
- else
442
- break
443
-
444
- return token$1(type) > 2 || token$1(character$1) > 3 ? '' : ' '
445
- }
446
-
447
- /**
448
- * @param {number} index
449
- * @param {number} count
450
- * @return {string}
451
- */
452
- function escaping$1 (index, count) {
453
- while (--count && next$1())
454
- // not 0-9 A-F a-f
455
- if (character$1 < 48 || character$1 > 102 || (character$1 > 57 && character$1 < 65) || (character$1 > 70 && character$1 < 97))
456
- break
457
-
458
- return slice$1(index, caret$1() + (count < 6 && peek$1() == 32 && next$1() == 32))
459
- }
460
-
461
- /**
462
- * @param {number} type
463
- * @return {number}
464
- */
465
- function delimiter$1 (type) {
466
- while (next$1())
467
- switch (character$1) {
468
- // ] ) " '
469
- case type:
470
- return position$1
471
- // " '
472
- case 34: case 39:
473
- if (type !== 34 && type !== 39)
474
- delimiter$1(character$1);
475
- break
476
- // (
477
- case 40:
478
- if (type === 41)
479
- delimiter$1(type);
480
- break
481
- // \
482
- case 92:
483
- next$1();
484
- break
485
- }
486
-
487
- return position$1
488
- }
489
-
490
- /**
491
- * @param {number} type
492
- * @param {number} index
493
- * @return {number}
494
- */
495
- function commenter$1 (type, index) {
496
- while (next$1())
497
- // //
498
- if (type + character$1 === 47 + 10)
499
- break
500
- // /*
501
- else if (type + character$1 === 42 + 42 && peek$1() === 47)
502
- break
503
-
504
- return '/*' + slice$1(index, position$1 - 1) + '*' + from$1(type === 47 ? type : next$1())
505
- }
506
-
507
- /**
508
- * @param {number} index
509
- * @return {string}
510
- */
511
- function identifier$1 (index) {
512
- while (!token$1(peek$1()))
513
- next$1();
514
-
515
- return slice$1(index, position$1)
516
- }
517
-
518
- /**
519
- * @param {string} value
520
- * @return {object[]}
521
- */
522
- function compile$1 (value) {
523
- return dealloc$1(parse$1('', null, null, null, [''], value = alloc$1(value), 0, [0], value))
524
- }
525
-
526
- /**
527
- * @param {string} value
528
- * @param {object} root
529
- * @param {object?} parent
530
- * @param {string[]} rule
531
- * @param {string[]} rules
532
- * @param {string[]} rulesets
533
- * @param {number[]} pseudo
534
- * @param {number[]} points
535
- * @param {string[]} declarations
536
- * @return {object}
537
- */
538
- function parse$1 (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {
539
- var index = 0;
540
- var offset = 0;
541
- var length = pseudo;
542
- var atrule = 0;
543
- var property = 0;
544
- var previous = 0;
545
- var variable = 1;
546
- var scanning = 1;
547
- var ampersand = 1;
548
- var character = 0;
549
- var type = '';
550
- var props = rules;
551
- var children = rulesets;
552
- var reference = rule;
553
- var characters = type;
554
-
555
- while (scanning)
556
- switch (previous = character, character = next$1()) {
557
- // (
558
- case 40:
559
- if (previous != 108 && charat$1(characters, length - 1) == 58) {
560
- if (indexof$1(characters += replace$1(delimit$1(character), '&', '&\f'), '&\f') != -1)
561
- ampersand = -1;
562
- break
563
- }
564
- // " ' [
565
- case 34: case 39: case 91:
566
- characters += delimit$1(character);
567
- break
568
- // \t \n \r \s
569
- case 9: case 10: case 13: case 32:
570
- characters += whitespace$1(previous);
571
- break
572
- // \
573
- case 92:
574
- characters += escaping$1(caret$1() - 1, 7);
575
- continue
576
- // /
577
- case 47:
578
- switch (peek$1()) {
579
- case 42: case 47:
580
- append$1(comment$1(commenter$1(next$1(), caret$1()), root, parent), declarations);
581
- break
582
- default:
583
- characters += '/';
584
- }
585
- break
586
- // {
587
- case 123 * variable:
588
- points[index++] = strlen$1(characters) * ampersand;
589
- // } ; \0
590
- case 125 * variable: case 59: case 0:
591
- switch (character) {
592
- // \0 }
593
- case 0: case 125: scanning = 0;
594
- // ;
595
- case 59 + offset: if (ampersand == -1) characters = replace$1(characters, /\f/g, '');
596
- if (property > 0 && (strlen$1(characters) - length))
597
- append$1(property > 32 ? declaration$1(characters + ';', rule, parent, length - 1) : declaration$1(replace$1(characters, ' ', '') + ';', rule, parent, length - 2), declarations);
598
- break
599
- // @ ;
600
- case 59: characters += ';';
601
- // { rule/at-rule
602
- default:
603
- append$1(reference = ruleset$1(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets);
604
-
605
- if (character === 123)
606
- if (offset === 0)
607
- parse$1(characters, root, reference, reference, props, rulesets, length, points, children);
608
- else
609
- switch (atrule === 99 && charat$1(characters, 3) === 110 ? 100 : atrule) {
610
- // d l m s
611
- case 100: case 108: case 109: case 115:
612
- parse$1(value, reference, reference, rule && append$1(ruleset$1(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children);
613
- break
614
- default:
615
- parse$1(characters, reference, reference, reference, [''], children, 0, points, children);
616
- }
617
- }
618
-
619
- index = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo;
620
- break
621
- // :
622
- case 58:
623
- length = 1 + strlen$1(characters), property = previous;
624
- default:
625
- if (variable < 1)
626
- if (character == 123)
627
- --variable;
628
- else if (character == 125 && variable++ == 0 && prev$1() == 125)
629
- continue
630
-
631
- switch (characters += from$1(character), character * variable) {
632
- // &
633
- case 38:
634
- ampersand = offset > 0 ? 1 : (characters += '\f', -1);
635
- break
636
- // ,
637
- case 44:
638
- points[index++] = (strlen$1(characters) - 1) * ampersand, ampersand = 1;
639
- break
640
- // @
641
- case 64:
642
- // -
643
- if (peek$1() === 45)
644
- characters += delimit$1(next$1());
645
-
646
- atrule = peek$1(), offset = length = strlen$1(type = characters += identifier$1(caret$1())), character++;
647
- break
648
- // -
649
- case 45:
650
- if (previous === 45 && strlen$1(characters) == 2)
651
- variable = 0;
652
- }
653
- }
654
-
655
- return rulesets
656
- }
657
-
658
- /**
659
- * @param {string} value
660
- * @param {object} root
661
- * @param {object?} parent
662
- * @param {number} index
663
- * @param {number} offset
664
- * @param {string[]} rules
665
- * @param {number[]} points
666
- * @param {string} type
667
- * @param {string[]} props
668
- * @param {string[]} children
669
- * @param {number} length
670
- * @return {object}
671
- */
672
- function ruleset$1 (value, root, parent, index, offset, rules, points, type, props, children, length) {
673
- var post = offset - 1;
674
- var rule = offset === 0 ? rules : [''];
675
- var size = sizeof$1(rule);
676
-
677
- for (var i = 0, j = 0, k = 0; i < index; ++i)
678
- for (var x = 0, y = substr$1(value, post + 1, post = abs$1(j = points[i])), z = value; x < size; ++x)
679
- if (z = trim$1(j > 0 ? rule[x] + ' ' + y : replace$1(y, /&\f/g, rule[x])))
680
- props[k++] = z;
681
-
682
- return node$1(value, root, parent, offset === 0 ? RULESET$1 : type, props, children, length)
683
- }
684
-
685
- /**
686
- * @param {number} value
687
- * @param {object} root
688
- * @param {object?} parent
689
- * @return {object}
690
- */
691
- function comment$1 (value, root, parent) {
692
- return node$1(value, root, parent, COMMENT$1, from$1(char$1()), substr$1(value, 2, -2), 0)
693
- }
694
-
695
- /**
696
- * @param {string} value
697
- * @param {object} root
698
- * @param {object?} parent
699
- * @param {number} length
700
- * @return {object}
701
- */
702
- function declaration$1 (value, root, parent, length) {
703
- return node$1(value, root, parent, DECLARATION$1, substr$1(value, 0, length), substr$1(value, length + 1, -1), length)
704
- }
705
-
706
- /**
707
- * @param {object[]} children
708
- * @param {function} callback
709
- * @return {string}
710
- */
711
- function serialize$1 (children, callback) {
712
- var output = '';
713
- var length = sizeof$1(children);
714
-
715
- for (var i = 0; i < length; i++)
716
- output += callback(children[i], i, children, callback) || '';
717
-
718
- return output
719
- }
720
-
721
- /**
722
- * @param {object} element
723
- * @param {number} index
724
- * @param {object[]} children
725
- * @param {function} callback
726
- * @return {string}
727
- */
728
- function stringify$1 (element, index, children, callback) {
729
- switch (element.type) {
730
- case LAYER$1: if (element.children.length) break
731
- case IMPORT$1: case DECLARATION$1: return element.return = element.return || element.value
732
- case COMMENT$1: return ''
733
- case KEYFRAMES$1: return element.return = element.value + '{' + serialize$1(element.children, callback) + '}'
734
- case RULESET$1: element.value = element.props.join(',');
735
- }
736
-
737
- return strlen$1(children = serialize$1(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''
738
- }
739
-
740
- /**
741
- * @param {function[]} collection
742
- * @return {function}
743
- */
744
- function middleware (collection) {
745
- var length = sizeof$1(collection);
746
-
747
- return function (element, index, children, callback) {
748
- var output = '';
749
-
750
- for (var i = 0; i < length; i++)
751
- output += collection[i](element, index, children, callback) || '';
752
-
753
- return output
754
- }
755
- }
756
-
757
- /**
758
- * @param {function} callback
759
- * @return {function}
760
- */
761
- function rulesheet (callback) {
762
- return function (element) {
763
- if (!element.root)
764
- if (element = element.return)
765
- callback(element);
766
- }
767
- }
768
-
769
- function memoize(fn) {
770
- var cache = Object.create(null);
771
- return function (arg) {
772
- if (cache[arg] === undefined) cache[arg] = fn(arg);
773
- return cache[arg];
774
- };
775
- }
776
-
777
- var identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {
778
- var previous = 0;
779
- var character = 0;
780
-
781
- while (true) {
782
- previous = character;
783
- character = peek$1(); // &\f
784
-
785
- if (previous === 38 && character === 12) {
786
- points[index] = 1;
787
- }
788
-
789
- if (token$1(character)) {
790
- break;
791
- }
792
-
793
- next$1();
794
- }
795
-
796
- return slice$1(begin, position$1);
797
- };
798
-
799
- var toRules = function toRules(parsed, points) {
800
- // pretend we've started with a comma
801
- var index = -1;
802
- var character = 44;
803
-
804
- do {
805
- switch (token$1(character)) {
806
- case 0:
807
- // &\f
808
- if (character === 38 && peek$1() === 12) {
809
- // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings
810
- // stylis inserts \f after & to know when & where it should replace this sequence with the context selector
811
- // and when it should just concatenate the outer and inner selectors
812
- // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here
813
- points[index] = 1;
814
- }
815
-
816
- parsed[index] += identifierWithPointTracking(position$1 - 1, points, index);
817
- break;
818
-
819
- case 2:
820
- parsed[index] += delimit$1(character);
821
- break;
822
-
823
- case 4:
824
- // comma
825
- if (character === 44) {
826
- // colon
827
- parsed[++index] = peek$1() === 58 ? '&\f' : '';
828
- points[index] = parsed[index].length;
829
- break;
830
- }
831
-
832
- // fallthrough
833
-
834
- default:
835
- parsed[index] += from$1(character);
836
- }
837
- } while (character = next$1());
838
-
839
- return parsed;
840
- };
841
-
842
- var getRules = function getRules(value, points) {
843
- return dealloc$1(toRules(alloc$1(value), points));
844
- }; // WeakSet would be more appropriate, but only WeakMap is supported in IE11
845
-
846
-
847
- var fixedElements = /* #__PURE__ */new WeakMap();
848
- var compat = function compat(element) {
849
- if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo
850
- // negative .length indicates that this rule has been already prefixed
851
- element.length < 1) {
852
- return;
853
- }
854
-
855
- var value = element.value;
856
- var parent = element.parent;
857
- var isImplicitRule = element.column === parent.column && element.line === parent.line;
858
-
859
- while (parent.type !== 'rule') {
860
- parent = parent.parent;
861
- if (!parent) return;
862
- } // short-circuit for the simplest case
863
-
864
-
865
- if (element.props.length === 1 && value.charCodeAt(0) !== 58
866
- /* colon */
867
- && !fixedElements.get(parent)) {
868
- return;
869
- } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)
870
- // then the props has already been manipulated beforehand as they that array is shared between it and its "rule parent"
871
-
872
-
873
- if (isImplicitRule) {
874
- return;
875
- }
876
-
877
- fixedElements.set(element, true);
878
- var points = [];
879
- var rules = getRules(value, points);
880
- var parentRules = parent.props;
881
-
882
- for (var i = 0, k = 0; i < rules.length; i++) {
883
- for (var j = 0; j < parentRules.length; j++, k++) {
884
- element.props[k] = points[i] ? rules[i].replace(/&\f/g, parentRules[j]) : parentRules[j] + " " + rules[i];
885
- }
886
- }
887
- };
888
- var removeLabel = function removeLabel(element) {
889
- if (element.type === 'decl') {
890
- var value = element.value;
891
-
892
- if ( // charcode for l
893
- value.charCodeAt(0) === 108 && // charcode for b
894
- value.charCodeAt(2) === 98) {
895
- // this ignores label
896
- element["return"] = '';
897
- element.value = '';
898
- }
899
- }
900
- };
901
-
902
- /* eslint-disable no-fallthrough */
903
-
904
- function prefix(value, length) {
905
- switch (hash(value, length)) {
906
- // color-adjust
907
- case 5103:
908
- return WEBKIT + 'print-' + value + value;
909
- // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)
910
-
911
- case 5737:
912
- case 4201:
913
- case 3177:
914
- case 3433:
915
- case 1641:
916
- case 4457:
917
- case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break
918
-
919
- case 5572:
920
- case 6356:
921
- case 5844:
922
- case 3191:
923
- case 6645:
924
- case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,
925
-
926
- case 6391:
927
- case 5879:
928
- case 5623:
929
- case 6135:
930
- case 4599:
931
- case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)
932
-
933
- case 4215:
934
- case 6389:
935
- case 5109:
936
- case 5365:
937
- case 5621:
938
- case 3829:
939
- return WEBKIT + value + value;
940
- // appearance, user-select, transform, hyphens, text-size-adjust
941
-
942
- case 5349:
943
- case 4246:
944
- case 4810:
945
- case 6968:
946
- case 2756:
947
- return WEBKIT + value + MOZ + value + MS + value + value;
948
- // flex, flex-direction
949
-
950
- case 6828:
951
- case 4268:
952
- return WEBKIT + value + MS + value + value;
953
- // order
954
-
955
- case 6165:
956
- return WEBKIT + value + MS + 'flex-' + value + value;
957
- // align-items
958
-
959
- case 5187:
960
- return WEBKIT + value + replace$1(value, /(\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;
961
- // align-self
962
-
963
- case 5443:
964
- return WEBKIT + value + MS + 'flex-item-' + replace$1(value, /flex-|-self/, '') + value;
965
- // align-content
966
-
967
- case 4675:
968
- return WEBKIT + value + MS + 'flex-line-pack' + replace$1(value, /align-content|flex-|-self/, '') + value;
969
- // flex-shrink
970
-
971
- case 5548:
972
- return WEBKIT + value + MS + replace$1(value, 'shrink', 'negative') + value;
973
- // flex-basis
974
-
975
- case 5292:
976
- return WEBKIT + value + MS + replace$1(value, 'basis', 'preferred-size') + value;
977
- // flex-grow
978
-
979
- case 6060:
980
- return WEBKIT + 'box-' + replace$1(value, '-grow', '') + WEBKIT + value + MS + replace$1(value, 'grow', 'positive') + value;
981
- // transition
982
-
983
- case 4554:
984
- return WEBKIT + replace$1(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;
985
- // cursor
986
-
987
- case 6187:
988
- return replace$1(replace$1(replace$1(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;
989
- // background, background-image
990
-
991
- case 5495:
992
- case 3959:
993
- return replace$1(value, /(image-set\([^]*)/, WEBKIT + '$1' + '$`$1');
994
- // justify-content
995
-
996
- case 4968:
997
- return replace$1(replace$1(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;
998
- // (margin|padding)-inline-(start|end)
999
-
1000
- case 4095:
1001
- case 3583:
1002
- case 4068:
1003
- case 2532:
1004
- return replace$1(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;
1005
- // (min|max)?(width|height|inline-size|block-size)
1006
-
1007
- case 8116:
1008
- case 7059:
1009
- case 5753:
1010
- case 5535:
1011
- case 5445:
1012
- case 5701:
1013
- case 4933:
1014
- case 4677:
1015
- case 5533:
1016
- case 5789:
1017
- case 5021:
1018
- case 4765:
1019
- // stretch, max-content, min-content, fill-available
1020
- if (strlen$1(value) - 1 - length > 6) switch (charat$1(value, length + 1)) {
1021
- // (m)ax-content, (m)in-content
1022
- case 109:
1023
- // -
1024
- if (charat$1(value, length + 4) !== 45) break;
1025
- // (f)ill-available, (f)it-content
1026
-
1027
- case 102:
1028
- return replace$1(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat$1(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;
1029
- // (s)tretch
1030
-
1031
- case 115:
1032
- return ~indexof$1(value, 'stretch') ? prefix(replace$1(value, 'stretch', 'fill-available'), length) + value : value;
1033
- }
1034
- break;
1035
- // position: sticky
1036
-
1037
- case 4949:
1038
- // (s)ticky?
1039
- if (charat$1(value, length + 1) !== 115) break;
1040
- // display: (flex|inline-flex)
1041
-
1042
- case 6444:
1043
- switch (charat$1(value, strlen$1(value) - 3 - (~indexof$1(value, '!important') && 10))) {
1044
- // stic(k)y
1045
- case 107:
1046
- return replace$1(value, ':', ':' + WEBKIT) + value;
1047
- // (inline-)?fl(e)x
1048
-
1049
- case 101:
1050
- return replace$1(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat$1(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;
1051
- }
1052
-
1053
- break;
1054
- // writing-mode
1055
-
1056
- case 5936:
1057
- switch (charat$1(value, length + 11)) {
1058
- // vertical-l(r)
1059
- case 114:
1060
- return WEBKIT + value + MS + replace$1(value, /[svh]\w+-[tblr]{2}/, 'tb') + value;
1061
- // vertical-r(l)
1062
-
1063
- case 108:
1064
- return WEBKIT + value + MS + replace$1(value, /[svh]\w+-[tblr]{2}/, 'tb-rl') + value;
1065
- // horizontal(-)tb
1066
-
1067
- case 45:
1068
- return WEBKIT + value + MS + replace$1(value, /[svh]\w+-[tblr]{2}/, 'lr') + value;
1069
- }
1070
-
1071
- return WEBKIT + value + MS + value + value;
1072
- }
1073
-
1074
- return value;
1075
- }
1076
-
1077
- var prefixer = function prefixer(element, index, children, callback) {
1078
- if (element.length > -1) if (!element["return"]) switch (element.type) {
1079
- case DECLARATION$1:
1080
- element["return"] = prefix(element.value, element.length);
1081
- break;
1082
-
1083
- case KEYFRAMES$1:
1084
- return serialize$1([copy(element, {
1085
- value: replace$1(element.value, '@', '@' + WEBKIT)
1086
- })], callback);
1087
-
1088
- case RULESET$1:
1089
- if (element.length) return combine(element.props, function (value) {
1090
- switch (match(value, /(::plac\w+|:read-\w+)/)) {
1091
- // :read-(only|write)
1092
- case ':read-only':
1093
- case ':read-write':
1094
- return serialize$1([copy(element, {
1095
- props: [replace$1(value, /:(read-\w+)/, ':' + MOZ + '$1')]
1096
- })], callback);
1097
- // :placeholder
1098
-
1099
- case '::placeholder':
1100
- return serialize$1([copy(element, {
1101
- props: [replace$1(value, /:(plac\w+)/, ':' + WEBKIT + 'input-$1')]
1102
- }), copy(element, {
1103
- props: [replace$1(value, /:(plac\w+)/, ':' + MOZ + '$1')]
1104
- }), copy(element, {
1105
- props: [replace$1(value, /:(plac\w+)/, MS + 'input-$1')]
1106
- })], callback);
1107
- }
1108
-
1109
- return '';
1110
- });
1111
- }
1112
- };
1113
-
1114
- var defaultStylisPlugins = [prefixer];
1115
-
1116
- var createCache$1 = function createCache(options) {
1117
- var key = options.key;
1118
-
1119
- if (key === 'css') {
1120
- var ssrStyles = document.querySelectorAll("style[data-emotion]:not([data-s])"); // get SSRed styles out of the way of React's hydration
1121
- // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)
1122
- // note this very very intentionally targets all style elements regardless of the key to ensure
1123
- // that creating a cache works inside of render of a React component
1124
-
1125
- Array.prototype.forEach.call(ssrStyles, function (node) {
1126
- // we want to only move elements which have a space in the data-emotion attribute value
1127
- // because that indicates that it is an Emotion 11 server-side rendered style elements
1128
- // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector
1129
- // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)
1130
- // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles
1131
- // will not result in the Emotion 10 styles being destroyed
1132
- var dataEmotionAttribute = node.getAttribute('data-emotion');
1133
-
1134
- if (dataEmotionAttribute.indexOf(' ') === -1) {
1135
- return;
1136
- }
1137
-
1138
- document.head.appendChild(node);
1139
- node.setAttribute('data-s', '');
1140
- });
1141
- }
1142
-
1143
- var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;
1144
-
1145
- var inserted = {};
1146
- var container;
1147
- var nodesToHydrate = [];
1148
-
1149
- {
1150
- container = options.container || document.head;
1151
- Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which
1152
- // means that the style elements we're looking at are only Emotion 11 server-rendered style elements
1153
- document.querySelectorAll("style[data-emotion^=\"" + key + " \"]"), function (node) {
1154
- var attrib = node.getAttribute("data-emotion").split(' ');
1155
-
1156
- for (var i = 1; i < attrib.length; i++) {
1157
- inserted[attrib[i]] = true;
1158
- }
1159
-
1160
- nodesToHydrate.push(node);
1161
- });
1162
- }
1163
-
1164
- var _insert;
1165
-
1166
- var omnipresentPlugins = [compat, removeLabel];
1167
-
1168
- {
1169
- var currentSheet;
1170
- var finalizingPlugins = [stringify$1, rulesheet(function (rule) {
1171
- currentSheet.insert(rule);
1172
- })];
1173
- var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));
1174
-
1175
- var stylis = function stylis(styles) {
1176
- return serialize$1(compile$1(styles), serializer);
1177
- };
1178
-
1179
- _insert = function insert(selector, serialized, sheet, shouldCache) {
1180
- currentSheet = sheet;
1181
-
1182
- stylis(selector ? selector + "{" + serialized.styles + "}" : serialized.styles);
1183
-
1184
- if (shouldCache) {
1185
- cache.inserted[serialized.name] = true;
1186
- }
1187
- };
1188
- }
1189
-
1190
- var cache = {
1191
- key: key,
1192
- sheet: new StyleSheet({
1193
- key: key,
1194
- container: container,
1195
- nonce: options.nonce,
1196
- speedy: options.speedy,
1197
- prepend: options.prepend,
1198
- insertionPoint: options.insertionPoint
1199
- }),
1200
- nonce: options.nonce,
1201
- inserted: inserted,
1202
- registered: {},
1203
- insert: _insert
1204
- };
1205
- cache.sheet.hydrate(nodesToHydrate);
1206
- return cache;
1207
- };
1208
-
1209
- /* eslint-disable */
1210
- // Inspired by https://github.com/garycourt/murmurhash-js
1211
- // Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86
1212
- function murmur2$1(str) {
1213
- // 'm' and 'r' are mixing constants generated offline.
1214
- // They're not really 'magic', they just happen to work well.
1215
- // const m = 0x5bd1e995;
1216
- // const r = 24;
1217
- // Initialize the hash
1218
- var h = 0; // Mix 4 bytes at a time into the hash
1219
-
1220
- var k,
1221
- i = 0,
1222
- len = str.length;
1223
-
1224
- for (; len >= 4; ++i, len -= 4) {
1225
- k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;
1226
- k =
1227
- /* Math.imul(k, m): */
1228
- (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);
1229
- k ^=
1230
- /* k >>> r: */
1231
- k >>> 24;
1232
- h =
1233
- /* Math.imul(k, m): */
1234
- (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^
1235
- /* Math.imul(h, m): */
1236
- (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);
1237
- } // Handle the last few bytes of the input array
1238
-
1239
-
1240
- switch (len) {
1241
- case 3:
1242
- h ^= (str.charCodeAt(i + 2) & 0xff) << 16;
1243
-
1244
- case 2:
1245
- h ^= (str.charCodeAt(i + 1) & 0xff) << 8;
1246
-
1247
- case 1:
1248
- h ^= str.charCodeAt(i) & 0xff;
1249
- h =
1250
- /* Math.imul(h, m): */
1251
- (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);
1252
- } // Do a few final mixes of the hash to ensure the last few
1253
- // bytes are well-incorporated.
1254
-
1255
-
1256
- h ^= h >>> 13;
1257
- h =
1258
- /* Math.imul(h, m): */
1259
- (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);
1260
- return ((h ^ h >>> 15) >>> 0).toString(36);
1261
- }
1262
-
1263
- var unitlessKeys$1 = {
1264
- animationIterationCount: 1,
1265
- aspectRatio: 1,
1266
- borderImageOutset: 1,
1267
- borderImageSlice: 1,
1268
- borderImageWidth: 1,
1269
- boxFlex: 1,
1270
- boxFlexGroup: 1,
1271
- boxOrdinalGroup: 1,
1272
- columnCount: 1,
1273
- columns: 1,
1274
- flex: 1,
1275
- flexGrow: 1,
1276
- flexPositive: 1,
1277
- flexShrink: 1,
1278
- flexNegative: 1,
1279
- flexOrder: 1,
1280
- gridRow: 1,
1281
- gridRowEnd: 1,
1282
- gridRowSpan: 1,
1283
- gridRowStart: 1,
1284
- gridColumn: 1,
1285
- gridColumnEnd: 1,
1286
- gridColumnSpan: 1,
1287
- gridColumnStart: 1,
1288
- msGridRow: 1,
1289
- msGridRowSpan: 1,
1290
- msGridColumn: 1,
1291
- msGridColumnSpan: 1,
1292
- fontWeight: 1,
1293
- lineHeight: 1,
1294
- opacity: 1,
1295
- order: 1,
1296
- orphans: 1,
1297
- scale: 1,
1298
- tabSize: 1,
1299
- widows: 1,
1300
- zIndex: 1,
1301
- zoom: 1,
1302
- WebkitLineClamp: 1,
1303
- // SVG-related properties
1304
- fillOpacity: 1,
1305
- floodOpacity: 1,
1306
- stopOpacity: 1,
1307
- strokeDasharray: 1,
1308
- strokeDashoffset: 1,
1309
- strokeMiterlimit: 1,
1310
- strokeOpacity: 1,
1311
- strokeWidth: 1
1312
- };
1313
-
1314
- var hyphenateRegex = /[A-Z]|^ms/g;
1315
- var animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;
1316
-
1317
- var isCustomProperty = function isCustomProperty(property) {
1318
- return property.charCodeAt(1) === 45;
1319
- };
1320
-
1321
- var isProcessableValue = function isProcessableValue(value) {
1322
- return value != null && typeof value !== 'boolean';
1323
- };
1324
-
1325
- var processStyleName = /* #__PURE__ */memoize(function (styleName) {
1326
- return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();
1327
- });
1328
-
1329
- var processStyleValue = function processStyleValue(key, value) {
1330
- switch (key) {
1331
- case 'animation':
1332
- case 'animationName':
1333
- {
1334
- if (typeof value === 'string') {
1335
- return value.replace(animationRegex, function (match, p1, p2) {
1336
- cursor = {
1337
- name: p1,
1338
- styles: p2,
1339
- next: cursor
1340
- };
1341
- return p1;
1342
- });
1343
- }
1344
- }
1345
- }
1346
-
1347
- if (unitlessKeys$1[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {
1348
- return value + 'px';
1349
- }
1350
-
1351
- return value;
1352
- };
1353
-
1354
- function handleInterpolation(mergedProps, registered, interpolation) {
1355
- if (interpolation == null) {
1356
- return '';
1357
- }
1358
-
1359
- var componentSelector = interpolation;
1360
-
1361
- if (componentSelector.__emotion_styles !== undefined) {
1362
-
1363
- return componentSelector;
1364
- }
1365
-
1366
- switch (typeof interpolation) {
1367
- case 'boolean':
1368
- {
1369
- return '';
1370
- }
1371
-
1372
- case 'object':
1373
- {
1374
- var keyframes = interpolation;
1375
-
1376
- if (keyframes.anim === 1) {
1377
- cursor = {
1378
- name: keyframes.name,
1379
- styles: keyframes.styles,
1380
- next: cursor
1381
- };
1382
- return keyframes.name;
1383
- }
1384
-
1385
- var serializedStyles = interpolation;
1386
-
1387
- if (serializedStyles.styles !== undefined) {
1388
- var next = serializedStyles.next;
1389
-
1390
- if (next !== undefined) {
1391
- // not the most efficient thing ever but this is a pretty rare case
1392
- // and there will be very few iterations of this generally
1393
- while (next !== undefined) {
1394
- cursor = {
1395
- name: next.name,
1396
- styles: next.styles,
1397
- next: cursor
1398
- };
1399
- next = next.next;
1400
- }
1401
- }
1402
-
1403
- var styles = serializedStyles.styles + ";";
1404
- return styles;
1405
- }
1406
-
1407
- return createStringFromObject(mergedProps, registered, interpolation);
1408
- }
1409
- } // finalize string values (regular strings and functions interpolated into css calls)
1410
-
1411
-
1412
- var asString = interpolation;
1413
-
1414
- if (registered == null) {
1415
- return asString;
1416
- }
1417
-
1418
- var cached = registered[asString];
1419
- return cached !== undefined ? cached : asString;
1420
- }
1421
-
1422
- function createStringFromObject(mergedProps, registered, obj) {
1423
- var string = '';
1424
-
1425
- if (Array.isArray(obj)) {
1426
- for (var i = 0; i < obj.length; i++) {
1427
- string += handleInterpolation(mergedProps, registered, obj[i]) + ";";
1428
- }
1429
- } else {
1430
- for (var key in obj) {
1431
- var value = obj[key];
1432
-
1433
- if (typeof value !== 'object') {
1434
- var asString = value;
1435
-
1436
- if (registered != null && registered[asString] !== undefined) {
1437
- string += key + "{" + registered[asString] + "}";
1438
- } else if (isProcessableValue(asString)) {
1439
- string += processStyleName(key) + ":" + processStyleValue(key, asString) + ";";
1440
- }
1441
- } else {
1442
-
1443
- if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {
1444
- for (var _i = 0; _i < value.length; _i++) {
1445
- if (isProcessableValue(value[_i])) {
1446
- string += processStyleName(key) + ":" + processStyleValue(key, value[_i]) + ";";
1447
- }
1448
- }
1449
- } else {
1450
- var interpolated = handleInterpolation(mergedProps, registered, value);
1451
-
1452
- switch (key) {
1453
- case 'animation':
1454
- case 'animationName':
1455
- {
1456
- string += processStyleName(key) + ":" + interpolated + ";";
1457
- break;
1458
- }
1459
-
1460
- default:
1461
- {
1462
-
1463
- string += key + "{" + interpolated + "}";
1464
- }
1465
- }
1466
- }
1467
- }
1468
- }
1469
- }
1470
-
1471
- return string;
1472
- }
1473
-
1474
- var labelPattern = /label:\s*([^\s;{]+)\s*(;|$)/g; // this is the cursor for keyframes
1475
- // keyframes are stored on the SerializedStyles object as a linked list
1476
-
1477
- var cursor;
1478
- function serializeStyles(args, registered, mergedProps) {
1479
- if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {
1480
- return args[0];
1481
- }
1482
-
1483
- var stringMode = true;
1484
- var styles = '';
1485
- cursor = undefined;
1486
- var strings = args[0];
1487
-
1488
- if (strings == null || strings.raw === undefined) {
1489
- stringMode = false;
1490
- styles += handleInterpolation(mergedProps, registered, strings);
1491
- } else {
1492
- var asTemplateStringsArr = strings;
1493
-
1494
- styles += asTemplateStringsArr[0];
1495
- } // we start at 1 since we've already handled the first arg
1496
-
1497
-
1498
- for (var i = 1; i < args.length; i++) {
1499
- styles += handleInterpolation(mergedProps, registered, args[i]);
1500
-
1501
- if (stringMode) {
1502
- var templateStringsArr = strings;
1503
-
1504
- styles += templateStringsArr[i];
1505
- }
1506
- } // using a global regex with .exec is stateful so lastIndex has to be reset each time
1507
-
1508
-
1509
- labelPattern.lastIndex = 0;
1510
- var identifierName = '';
1511
- var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5
1512
-
1513
- while ((match = labelPattern.exec(styles)) !== null) {
1514
- identifierName += '-' + match[1];
1515
- }
1516
-
1517
- var name = murmur2$1(styles) + identifierName;
1518
-
1519
- return {
1520
- name: name,
1521
- styles: styles,
1522
- next: cursor
1523
- };
1524
- }
1525
-
1526
- function getRegisteredStyles(registered, registeredStyles, classNames) {
1527
- var rawClassName = '';
1528
- classNames.split(' ').forEach(function (className) {
1529
- if (registered[className] !== undefined) {
1530
- registeredStyles.push(registered[className] + ";");
1531
- } else if (className) {
1532
- rawClassName += className + " ";
1533
- }
1534
- });
1535
- return rawClassName;
1536
- }
1537
- var registerStyles = function registerStyles(cache, serialized, isStringTag) {
1538
- var className = cache.key + "-" + serialized.name;
1539
-
1540
- if ( // we only need to add the styles to the registered cache if the
1541
- // class name could be used further down
1542
- // the tree but if it's a string tag, we know it won't
1543
- // so we don't have to add it to registered cache.
1544
- // this improves memory usage since we can avoid storing the whole style string
1545
- cache.registered[className] === undefined) {
1546
- cache.registered[className] = serialized.styles;
1547
- }
1548
- };
1549
- var insertStyles = function insertStyles(cache, serialized, isStringTag) {
1550
- registerStyles(cache, serialized);
1551
- var className = cache.key + "-" + serialized.name;
1552
-
1553
- if (cache.inserted[serialized.name] === undefined) {
1554
- var current = serialized;
1555
-
1556
- do {
1557
- cache.insert(serialized === current ? "." + className : '', current, cache.sheet, true);
1558
-
1559
- current = current.next;
1560
- } while (current !== undefined);
1561
- }
1562
- };
1563
-
1564
- function insertWithoutScoping(cache, serialized) {
1565
- if (cache.inserted[serialized.name] === undefined) {
1566
- return cache.insert('', serialized, cache.sheet, true);
1567
- }
1568
- }
1569
-
1570
- function merge$2(registered, css, className) {
1571
- var registeredStyles = [];
1572
- var rawClassName = getRegisteredStyles(registered, registeredStyles, className);
1573
-
1574
- if (registeredStyles.length < 2) {
1575
- return className;
1576
- }
1577
-
1578
- return rawClassName + css(registeredStyles);
1579
- }
1580
-
1581
- var createEmotion = function createEmotion(options) {
1582
- var cache = createCache$1(options);
1583
-
1584
- cache.sheet.speedy = function (value) {
1585
-
1586
- this.isSpeedy = value;
1587
- };
1588
-
1589
- cache.compat = true;
1590
-
1591
- var css = function css() {
1592
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1593
- args[_key] = arguments[_key];
1594
- }
1595
-
1596
- var serialized = serializeStyles(args, cache.registered, undefined);
1597
- insertStyles(cache, serialized);
1598
- return cache.key + "-" + serialized.name;
1599
- };
1600
-
1601
- var keyframes = function keyframes() {
1602
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
1603
- args[_key2] = arguments[_key2];
1604
- }
1605
-
1606
- var serialized = serializeStyles(args, cache.registered);
1607
- var animation = "animation-" + serialized.name;
1608
- insertWithoutScoping(cache, {
1609
- name: serialized.name,
1610
- styles: "@keyframes " + animation + "{" + serialized.styles + "}"
1611
- });
1612
- return animation;
1613
- };
1614
-
1615
- var injectGlobal = function injectGlobal() {
1616
- for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
1617
- args[_key3] = arguments[_key3];
1618
- }
1619
-
1620
- var serialized = serializeStyles(args, cache.registered);
1621
- insertWithoutScoping(cache, serialized);
1622
- };
1623
-
1624
- var cx = function cx() {
1625
- for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
1626
- args[_key4] = arguments[_key4];
1627
- }
1628
-
1629
- return merge$2(cache.registered, css, classnames(args));
1630
- };
1631
-
1632
- return {
1633
- css: css,
1634
- cx: cx,
1635
- injectGlobal: injectGlobal,
1636
- keyframes: keyframes,
1637
- hydrate: function hydrate(ids) {
1638
- ids.forEach(function (key) {
1639
- cache.inserted[key] = true;
1640
- });
1641
- },
1642
- flush: function flush() {
1643
- cache.registered = {};
1644
- cache.inserted = {};
1645
- cache.sheet.flush();
1646
- },
1647
- sheet: cache.sheet,
1648
- cache: cache,
1649
- getRegisteredStyles: getRegisteredStyles.bind(null, cache.registered),
1650
- merge: merge$2.bind(null, cache.registered, css)
1651
- };
1652
- };
1653
-
1654
- var classnames = function classnames(args) {
1655
- var cls = '';
1656
-
1657
- for (var i = 0; i < args.length; i++) {
1658
- var arg = args[i];
1659
- if (arg == null) continue;
1660
- var toAdd = void 0;
1661
-
1662
- switch (typeof arg) {
1663
- case 'boolean':
1664
- break;
1665
-
1666
- case 'object':
1667
- {
1668
- if (Array.isArray(arg)) {
1669
- toAdd = classnames(arg);
1670
- } else {
1671
- toAdd = '';
1672
-
1673
- for (var k in arg) {
1674
- if (arg[k] && k) {
1675
- toAdd && (toAdd += ' ');
1676
- toAdd += k;
1677
- }
1678
- }
1679
- }
1680
-
1681
- break;
1682
- }
1683
-
1684
- default:
1685
- {
1686
- toAdd = arg;
1687
- }
1688
- }
1689
-
1690
- if (toAdd) {
1691
- cls && (cls += ' ');
1692
- cls += toAdd;
1693
- }
1694
- }
1695
-
1696
- return cls;
1697
- };
1698
-
1699
- var _createEmotion = createEmotion({
1700
- key: 'css'
1701
- }),
1702
- cx = _createEmotion.cx,
1703
- css = _createEmotion.css;
1704
-
1705
34
  // This icon file is generated automatically.
1706
35
  var ArrowLeftOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M872 474H286.9l350.2-304c5.6-4.9 2.2-14-5.2-14h-88.5c-3.9 0-7.6 1.4-10.5 3.9L155 487.8a31.96 31.96 0 000 48.3L535.1 866c1.5 1.3 3.3 2 5.2 2h91.5c7.4 0 10.8-9.2 5.2-14L286.9 550H872c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z" } }] }, "name": "arrow-left", "theme": "outlined" };
1707
36
 
@@ -6762,2961 +5091,6 @@ const EditIcon = ({ stroke, fill = "#007BE5" }) => /* @__PURE__ */ jsxRuntimeExp
6762
5091
  }
6763
5092
  ) });
6764
5093
 
6765
- const CLASS_PART_SEPARATOR = '-';
6766
- const createClassGroupUtils = config => {
6767
- const classMap = createClassMap(config);
6768
- const {
6769
- conflictingClassGroups,
6770
- conflictingClassGroupModifiers
6771
- } = config;
6772
- const getClassGroupId = className => {
6773
- const classParts = className.split(CLASS_PART_SEPARATOR);
6774
- // 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.
6775
- if (classParts[0] === '' && classParts.length !== 1) {
6776
- classParts.shift();
6777
- }
6778
- return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);
6779
- };
6780
- const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {
6781
- const conflicts = conflictingClassGroups[classGroupId] || [];
6782
- if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {
6783
- return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];
6784
- }
6785
- return conflicts;
6786
- };
6787
- return {
6788
- getClassGroupId,
6789
- getConflictingClassGroupIds
6790
- };
6791
- };
6792
- const getGroupRecursive = (classParts, classPartObject) => {
6793
- if (classParts.length === 0) {
6794
- return classPartObject.classGroupId;
6795
- }
6796
- const currentClassPart = classParts[0];
6797
- const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
6798
- const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;
6799
- if (classGroupFromNextClassPart) {
6800
- return classGroupFromNextClassPart;
6801
- }
6802
- if (classPartObject.validators.length === 0) {
6803
- return undefined;
6804
- }
6805
- const classRest = classParts.join(CLASS_PART_SEPARATOR);
6806
- return classPartObject.validators.find(({
6807
- validator
6808
- }) => validator(classRest))?.classGroupId;
6809
- };
6810
- const arbitraryPropertyRegex = /^\[(.+)\]$/;
6811
- const getGroupIdForArbitraryProperty = className => {
6812
- if (arbitraryPropertyRegex.test(className)) {
6813
- const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];
6814
- const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));
6815
- if (property) {
6816
- // I use two dots here because one dot is used as prefix for class groups in plugins
6817
- return 'arbitrary..' + property;
6818
- }
6819
- }
6820
- };
6821
- /**
6822
- * Exported for testing only
6823
- */
6824
- const createClassMap = config => {
6825
- const {
6826
- theme,
6827
- classGroups
6828
- } = config;
6829
- const classMap = {
6830
- nextPart: new Map(),
6831
- validators: []
6832
- };
6833
- for (const classGroupId in classGroups) {
6834
- processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);
6835
- }
6836
- return classMap;
6837
- };
6838
- const processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {
6839
- classGroup.forEach(classDefinition => {
6840
- if (typeof classDefinition === 'string') {
6841
- const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);
6842
- classPartObjectToEdit.classGroupId = classGroupId;
6843
- return;
6844
- }
6845
- if (typeof classDefinition === 'function') {
6846
- if (isThemeGetter(classDefinition)) {
6847
- processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
6848
- return;
6849
- }
6850
- classPartObject.validators.push({
6851
- validator: classDefinition,
6852
- classGroupId
6853
- });
6854
- return;
6855
- }
6856
- Object.entries(classDefinition).forEach(([key, classGroup]) => {
6857
- processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);
6858
- });
6859
- });
6860
- };
6861
- const getPart = (classPartObject, path) => {
6862
- let currentClassPartObject = classPartObject;
6863
- path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {
6864
- if (!currentClassPartObject.nextPart.has(pathPart)) {
6865
- currentClassPartObject.nextPart.set(pathPart, {
6866
- nextPart: new Map(),
6867
- validators: []
6868
- });
6869
- }
6870
- currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);
6871
- });
6872
- return currentClassPartObject;
6873
- };
6874
- const isThemeGetter = func => func.isThemeGetter;
6875
-
6876
- // LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance
6877
- const createLruCache = maxCacheSize => {
6878
- if (maxCacheSize < 1) {
6879
- return {
6880
- get: () => undefined,
6881
- set: () => {}
6882
- };
6883
- }
6884
- let cacheSize = 0;
6885
- let cache = new Map();
6886
- let previousCache = new Map();
6887
- const update = (key, value) => {
6888
- cache.set(key, value);
6889
- cacheSize++;
6890
- if (cacheSize > maxCacheSize) {
6891
- cacheSize = 0;
6892
- previousCache = cache;
6893
- cache = new Map();
6894
- }
6895
- };
6896
- return {
6897
- get(key) {
6898
- let value = cache.get(key);
6899
- if (value !== undefined) {
6900
- return value;
6901
- }
6902
- if ((value = previousCache.get(key)) !== undefined) {
6903
- update(key, value);
6904
- return value;
6905
- }
6906
- },
6907
- set(key, value) {
6908
- if (cache.has(key)) {
6909
- cache.set(key, value);
6910
- } else {
6911
- update(key, value);
6912
- }
6913
- }
6914
- };
6915
- };
6916
- const IMPORTANT_MODIFIER = '!';
6917
- const MODIFIER_SEPARATOR = ':';
6918
- const MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;
6919
- const createParseClassName = config => {
6920
- const {
6921
- prefix,
6922
- experimentalParseClassName
6923
- } = config;
6924
- /**
6925
- * Parse class name into parts.
6926
- *
6927
- * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS
6928
- * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js
6929
- */
6930
- let parseClassName = className => {
6931
- const modifiers = [];
6932
- let bracketDepth = 0;
6933
- let parenDepth = 0;
6934
- let modifierStart = 0;
6935
- let postfixModifierPosition;
6936
- for (let index = 0; index < className.length; index++) {
6937
- let currentCharacter = className[index];
6938
- if (bracketDepth === 0 && parenDepth === 0) {
6939
- if (currentCharacter === MODIFIER_SEPARATOR) {
6940
- modifiers.push(className.slice(modifierStart, index));
6941
- modifierStart = index + MODIFIER_SEPARATOR_LENGTH;
6942
- continue;
6943
- }
6944
- if (currentCharacter === '/') {
6945
- postfixModifierPosition = index;
6946
- continue;
6947
- }
6948
- }
6949
- if (currentCharacter === '[') {
6950
- bracketDepth++;
6951
- } else if (currentCharacter === ']') {
6952
- bracketDepth--;
6953
- } else if (currentCharacter === '(') {
6954
- parenDepth++;
6955
- } else if (currentCharacter === ')') {
6956
- parenDepth--;
6957
- }
6958
- }
6959
- const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);
6960
- const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);
6961
- const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;
6962
- const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;
6963
- return {
6964
- modifiers,
6965
- hasImportantModifier,
6966
- baseClassName,
6967
- maybePostfixModifierPosition
6968
- };
6969
- };
6970
- if (prefix) {
6971
- const fullPrefix = prefix + MODIFIER_SEPARATOR;
6972
- const parseClassNameOriginal = parseClassName;
6973
- parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {
6974
- isExternal: true,
6975
- modifiers: [],
6976
- hasImportantModifier: false,
6977
- baseClassName: className,
6978
- maybePostfixModifierPosition: undefined
6979
- };
6980
- }
6981
- if (experimentalParseClassName) {
6982
- const parseClassNameOriginal = parseClassName;
6983
- parseClassName = className => experimentalParseClassName({
6984
- className,
6985
- parseClassName: parseClassNameOriginal
6986
- });
6987
- }
6988
- return parseClassName;
6989
- };
6990
- const stripImportantModifier = baseClassName => {
6991
- if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {
6992
- return baseClassName.substring(0, baseClassName.length - 1);
6993
- }
6994
- /**
6995
- * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.
6996
- * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864
6997
- */
6998
- if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {
6999
- return baseClassName.substring(1);
7000
- }
7001
- return baseClassName;
7002
- };
7003
-
7004
- /**
7005
- * Sorts modifiers according to following schema:
7006
- * - Predefined modifiers are sorted alphabetically
7007
- * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it
7008
- */
7009
- const createSortModifiers = config => {
7010
- const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));
7011
- const sortModifiers = modifiers => {
7012
- if (modifiers.length <= 1) {
7013
- return modifiers;
7014
- }
7015
- const sortedModifiers = [];
7016
- let unsortedModifiers = [];
7017
- modifiers.forEach(modifier => {
7018
- const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];
7019
- if (isPositionSensitive) {
7020
- sortedModifiers.push(...unsortedModifiers.sort(), modifier);
7021
- unsortedModifiers = [];
7022
- } else {
7023
- unsortedModifiers.push(modifier);
7024
- }
7025
- });
7026
- sortedModifiers.push(...unsortedModifiers.sort());
7027
- return sortedModifiers;
7028
- };
7029
- return sortModifiers;
7030
- };
7031
- const createConfigUtils = config => ({
7032
- cache: createLruCache(config.cacheSize),
7033
- parseClassName: createParseClassName(config),
7034
- sortModifiers: createSortModifiers(config),
7035
- ...createClassGroupUtils(config)
7036
- });
7037
- const SPLIT_CLASSES_REGEX = /\s+/;
7038
- const mergeClassList = (classList, configUtils) => {
7039
- const {
7040
- parseClassName,
7041
- getClassGroupId,
7042
- getConflictingClassGroupIds,
7043
- sortModifiers
7044
- } = configUtils;
7045
- /**
7046
- * Set of classGroupIds in following format:
7047
- * `{importantModifier}{variantModifiers}{classGroupId}`
7048
- * @example 'float'
7049
- * @example 'hover:focus:bg-color'
7050
- * @example 'md:!pr'
7051
- */
7052
- const classGroupsInConflict = [];
7053
- const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);
7054
- let result = '';
7055
- for (let index = classNames.length - 1; index >= 0; index -= 1) {
7056
- const originalClassName = classNames[index];
7057
- const {
7058
- isExternal,
7059
- modifiers,
7060
- hasImportantModifier,
7061
- baseClassName,
7062
- maybePostfixModifierPosition
7063
- } = parseClassName(originalClassName);
7064
- if (isExternal) {
7065
- result = originalClassName + (result.length > 0 ? ' ' + result : result);
7066
- continue;
7067
- }
7068
- let hasPostfixModifier = !!maybePostfixModifierPosition;
7069
- let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);
7070
- if (!classGroupId) {
7071
- if (!hasPostfixModifier) {
7072
- // Not a Tailwind class
7073
- result = originalClassName + (result.length > 0 ? ' ' + result : result);
7074
- continue;
7075
- }
7076
- classGroupId = getClassGroupId(baseClassName);
7077
- if (!classGroupId) {
7078
- // Not a Tailwind class
7079
- result = originalClassName + (result.length > 0 ? ' ' + result : result);
7080
- continue;
7081
- }
7082
- hasPostfixModifier = false;
7083
- }
7084
- const variantModifier = sortModifiers(modifiers).join(':');
7085
- const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
7086
- const classId = modifierId + classGroupId;
7087
- if (classGroupsInConflict.includes(classId)) {
7088
- // Tailwind class omitted due to conflict
7089
- continue;
7090
- }
7091
- classGroupsInConflict.push(classId);
7092
- const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);
7093
- for (let i = 0; i < conflictGroups.length; ++i) {
7094
- const group = conflictGroups[i];
7095
- classGroupsInConflict.push(modifierId + group);
7096
- }
7097
- // Tailwind class not in conflict
7098
- result = originalClassName + (result.length > 0 ? ' ' + result : result);
7099
- }
7100
- return result;
7101
- };
7102
-
7103
- /**
7104
- * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.
7105
- *
7106
- * Specifically:
7107
- * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js
7108
- * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts
7109
- *
7110
- * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
7111
- */
7112
- function twJoin() {
7113
- let index = 0;
7114
- let argument;
7115
- let resolvedValue;
7116
- let string = '';
7117
- while (index < arguments.length) {
7118
- if (argument = arguments[index++]) {
7119
- if (resolvedValue = toValue(argument)) {
7120
- string && (string += ' ');
7121
- string += resolvedValue;
7122
- }
7123
- }
7124
- }
7125
- return string;
7126
- }
7127
- const toValue = mix => {
7128
- if (typeof mix === 'string') {
7129
- return mix;
7130
- }
7131
- let resolvedValue;
7132
- let string = '';
7133
- for (let k = 0; k < mix.length; k++) {
7134
- if (mix[k]) {
7135
- if (resolvedValue = toValue(mix[k])) {
7136
- string && (string += ' ');
7137
- string += resolvedValue;
7138
- }
7139
- }
7140
- }
7141
- return string;
7142
- };
7143
- function createTailwindMerge(createConfigFirst, ...createConfigRest) {
7144
- let configUtils;
7145
- let cacheGet;
7146
- let cacheSet;
7147
- let functionToCall = initTailwindMerge;
7148
- function initTailwindMerge(classList) {
7149
- const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());
7150
- configUtils = createConfigUtils(config);
7151
- cacheGet = configUtils.cache.get;
7152
- cacheSet = configUtils.cache.set;
7153
- functionToCall = tailwindMerge;
7154
- return tailwindMerge(classList);
7155
- }
7156
- function tailwindMerge(classList) {
7157
- const cachedResult = cacheGet(classList);
7158
- if (cachedResult) {
7159
- return cachedResult;
7160
- }
7161
- const result = mergeClassList(classList, configUtils);
7162
- cacheSet(classList, result);
7163
- return result;
7164
- }
7165
- return function callTailwindMerge() {
7166
- return functionToCall(twJoin.apply(null, arguments));
7167
- };
7168
- }
7169
- const fromTheme = key => {
7170
- const themeGetter = theme => theme[key] || [];
7171
- themeGetter.isThemeGetter = true;
7172
- return themeGetter;
7173
- };
7174
- const arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i;
7175
- const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
7176
- const fractionRegex = /^\d+\/\d+$/;
7177
- const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
7178
- 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$/;
7179
- const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/;
7180
- // Shadow always begins with x and y offset separated by underscore optionally prepended by inset
7181
- const shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
7182
- const imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
7183
- const isFraction = value => fractionRegex.test(value);
7184
- const isNumber = value => !!value && !Number.isNaN(Number(value));
7185
- const isInteger = value => !!value && Number.isInteger(Number(value));
7186
- const isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));
7187
- const isTshirtSize = value => tshirtUnitRegex.test(value);
7188
- const isAny = () => true;
7189
- const isLengthOnly = value =>
7190
- // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
7191
- // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
7192
- // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
7193
- lengthUnitRegex.test(value) && !colorFunctionRegex.test(value);
7194
- const isNever = () => false;
7195
- const isShadow = value => shadowRegex.test(value);
7196
- const isImage = value => imageRegex.test(value);
7197
- const isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);
7198
- const isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);
7199
- const isArbitraryValue = value => arbitraryValueRegex.test(value);
7200
- const isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);
7201
- const isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);
7202
- const isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);
7203
- const isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);
7204
- const isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);
7205
- const isArbitraryVariable = value => arbitraryVariableRegex.test(value);
7206
- const isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);
7207
- const isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);
7208
- const isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);
7209
- const isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);
7210
- const isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);
7211
- const isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);
7212
- // Helpers
7213
- const getIsArbitraryValue = (value, testLabel, testValue) => {
7214
- const result = arbitraryValueRegex.exec(value);
7215
- if (result) {
7216
- if (result[1]) {
7217
- return testLabel(result[1]);
7218
- }
7219
- return testValue(result[2]);
7220
- }
7221
- return false;
7222
- };
7223
- const getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {
7224
- const result = arbitraryVariableRegex.exec(value);
7225
- if (result) {
7226
- if (result[1]) {
7227
- return testLabel(result[1]);
7228
- }
7229
- return shouldMatchNoLabel;
7230
- }
7231
- return false;
7232
- };
7233
- // Labels
7234
- const isLabelPosition = label => label === 'position' || label === 'percentage';
7235
- const isLabelImage = label => label === 'image' || label === 'url';
7236
- const isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';
7237
- const isLabelLength = label => label === 'length';
7238
- const isLabelNumber = label => label === 'number';
7239
- const isLabelFamilyName = label => label === 'family-name';
7240
- const isLabelShadow = label => label === 'shadow';
7241
- const getDefaultConfig = () => {
7242
- /**
7243
- * Theme getters for theme variable namespaces
7244
- * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces
7245
- */
7246
- /***/
7247
- const themeColor = fromTheme('color');
7248
- const themeFont = fromTheme('font');
7249
- const themeText = fromTheme('text');
7250
- const themeFontWeight = fromTheme('font-weight');
7251
- const themeTracking = fromTheme('tracking');
7252
- const themeLeading = fromTheme('leading');
7253
- const themeBreakpoint = fromTheme('breakpoint');
7254
- const themeContainer = fromTheme('container');
7255
- const themeSpacing = fromTheme('spacing');
7256
- const themeRadius = fromTheme('radius');
7257
- const themeShadow = fromTheme('shadow');
7258
- const themeInsetShadow = fromTheme('inset-shadow');
7259
- const themeTextShadow = fromTheme('text-shadow');
7260
- const themeDropShadow = fromTheme('drop-shadow');
7261
- const themeBlur = fromTheme('blur');
7262
- const themePerspective = fromTheme('perspective');
7263
- const themeAspect = fromTheme('aspect');
7264
- const themeEase = fromTheme('ease');
7265
- const themeAnimate = fromTheme('animate');
7266
- /**
7267
- * Helpers to avoid repeating the same scales
7268
- *
7269
- * We use functions that create a new array every time they're called instead of static arrays.
7270
- * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.
7271
- */
7272
- /***/
7273
- const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];
7274
- const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',
7275
- // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
7276
- 'left-top', 'top-right',
7277
- // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
7278
- 'right-top', 'bottom-right',
7279
- // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
7280
- 'right-bottom', 'bottom-left',
7281
- // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
7282
- 'left-bottom'];
7283
- const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];
7284
- const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];
7285
- const scaleOverscroll = () => ['auto', 'contain', 'none'];
7286
- const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];
7287
- const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];
7288
- const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];
7289
- const scaleGridColRowStartAndEnd = () => ['auto', {
7290
- span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]
7291
- }, isInteger, isArbitraryVariable, isArbitraryValue];
7292
- const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];
7293
- const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];
7294
- const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];
7295
- const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];
7296
- const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];
7297
- const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
7298
- const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];
7299
- const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {
7300
- position: [isArbitraryVariable, isArbitraryValue]
7301
- }];
7302
- const scaleBgRepeat = () => ['no-repeat', {
7303
- repeat: ['', 'x', 'y', 'space', 'round']
7304
- }];
7305
- const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {
7306
- size: [isArbitraryVariable, isArbitraryValue]
7307
- }];
7308
- const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];
7309
- const scaleRadius = () => [
7310
- // Deprecated since Tailwind CSS v4.0.0
7311
- '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];
7312
- const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];
7313
- const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];
7314
- const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];
7315
- const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];
7316
- const scaleBlur = () => [
7317
- // Deprecated since Tailwind CSS v4.0.0
7318
- '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];
7319
- const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];
7320
- const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];
7321
- const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];
7322
- const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];
7323
- return {
7324
- cacheSize: 500,
7325
- theme: {
7326
- animate: ['spin', 'ping', 'pulse', 'bounce'],
7327
- aspect: ['video'],
7328
- blur: [isTshirtSize],
7329
- breakpoint: [isTshirtSize],
7330
- color: [isAny],
7331
- container: [isTshirtSize],
7332
- 'drop-shadow': [isTshirtSize],
7333
- ease: ['in', 'out', 'in-out'],
7334
- font: [isAnyNonArbitrary],
7335
- 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],
7336
- 'inset-shadow': [isTshirtSize],
7337
- leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],
7338
- perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],
7339
- radius: [isTshirtSize],
7340
- shadow: [isTshirtSize],
7341
- spacing: ['px', isNumber],
7342
- text: [isTshirtSize],
7343
- 'text-shadow': [isTshirtSize],
7344
- tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']
7345
- },
7346
- classGroups: {
7347
- // --------------
7348
- // --- Layout ---
7349
- // --------------
7350
- /**
7351
- * Aspect Ratio
7352
- * @see https://tailwindcss.com/docs/aspect-ratio
7353
- */
7354
- aspect: [{
7355
- aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]
7356
- }],
7357
- /**
7358
- * Container
7359
- * @see https://tailwindcss.com/docs/container
7360
- * @deprecated since Tailwind CSS v4.0.0
7361
- */
7362
- container: ['container'],
7363
- /**
7364
- * Columns
7365
- * @see https://tailwindcss.com/docs/columns
7366
- */
7367
- columns: [{
7368
- columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]
7369
- }],
7370
- /**
7371
- * Break After
7372
- * @see https://tailwindcss.com/docs/break-after
7373
- */
7374
- 'break-after': [{
7375
- 'break-after': scaleBreak()
7376
- }],
7377
- /**
7378
- * Break Before
7379
- * @see https://tailwindcss.com/docs/break-before
7380
- */
7381
- 'break-before': [{
7382
- 'break-before': scaleBreak()
7383
- }],
7384
- /**
7385
- * Break Inside
7386
- * @see https://tailwindcss.com/docs/break-inside
7387
- */
7388
- 'break-inside': [{
7389
- 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']
7390
- }],
7391
- /**
7392
- * Box Decoration Break
7393
- * @see https://tailwindcss.com/docs/box-decoration-break
7394
- */
7395
- 'box-decoration': [{
7396
- 'box-decoration': ['slice', 'clone']
7397
- }],
7398
- /**
7399
- * Box Sizing
7400
- * @see https://tailwindcss.com/docs/box-sizing
7401
- */
7402
- box: [{
7403
- box: ['border', 'content']
7404
- }],
7405
- /**
7406
- * Display
7407
- * @see https://tailwindcss.com/docs/display
7408
- */
7409
- 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'],
7410
- /**
7411
- * Screen Reader Only
7412
- * @see https://tailwindcss.com/docs/display#screen-reader-only
7413
- */
7414
- sr: ['sr-only', 'not-sr-only'],
7415
- /**
7416
- * Floats
7417
- * @see https://tailwindcss.com/docs/float
7418
- */
7419
- float: [{
7420
- float: ['right', 'left', 'none', 'start', 'end']
7421
- }],
7422
- /**
7423
- * Clear
7424
- * @see https://tailwindcss.com/docs/clear
7425
- */
7426
- clear: [{
7427
- clear: ['left', 'right', 'both', 'none', 'start', 'end']
7428
- }],
7429
- /**
7430
- * Isolation
7431
- * @see https://tailwindcss.com/docs/isolation
7432
- */
7433
- isolation: ['isolate', 'isolation-auto'],
7434
- /**
7435
- * Object Fit
7436
- * @see https://tailwindcss.com/docs/object-fit
7437
- */
7438
- 'object-fit': [{
7439
- object: ['contain', 'cover', 'fill', 'none', 'scale-down']
7440
- }],
7441
- /**
7442
- * Object Position
7443
- * @see https://tailwindcss.com/docs/object-position
7444
- */
7445
- 'object-position': [{
7446
- object: scalePositionWithArbitrary()
7447
- }],
7448
- /**
7449
- * Overflow
7450
- * @see https://tailwindcss.com/docs/overflow
7451
- */
7452
- overflow: [{
7453
- overflow: scaleOverflow()
7454
- }],
7455
- /**
7456
- * Overflow X
7457
- * @see https://tailwindcss.com/docs/overflow
7458
- */
7459
- 'overflow-x': [{
7460
- 'overflow-x': scaleOverflow()
7461
- }],
7462
- /**
7463
- * Overflow Y
7464
- * @see https://tailwindcss.com/docs/overflow
7465
- */
7466
- 'overflow-y': [{
7467
- 'overflow-y': scaleOverflow()
7468
- }],
7469
- /**
7470
- * Overscroll Behavior
7471
- * @see https://tailwindcss.com/docs/overscroll-behavior
7472
- */
7473
- overscroll: [{
7474
- overscroll: scaleOverscroll()
7475
- }],
7476
- /**
7477
- * Overscroll Behavior X
7478
- * @see https://tailwindcss.com/docs/overscroll-behavior
7479
- */
7480
- 'overscroll-x': [{
7481
- 'overscroll-x': scaleOverscroll()
7482
- }],
7483
- /**
7484
- * Overscroll Behavior Y
7485
- * @see https://tailwindcss.com/docs/overscroll-behavior
7486
- */
7487
- 'overscroll-y': [{
7488
- 'overscroll-y': scaleOverscroll()
7489
- }],
7490
- /**
7491
- * Position
7492
- * @see https://tailwindcss.com/docs/position
7493
- */
7494
- position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],
7495
- /**
7496
- * Top / Right / Bottom / Left
7497
- * @see https://tailwindcss.com/docs/top-right-bottom-left
7498
- */
7499
- inset: [{
7500
- inset: scaleInset()
7501
- }],
7502
- /**
7503
- * Right / Left
7504
- * @see https://tailwindcss.com/docs/top-right-bottom-left
7505
- */
7506
- 'inset-x': [{
7507
- 'inset-x': scaleInset()
7508
- }],
7509
- /**
7510
- * Top / Bottom
7511
- * @see https://tailwindcss.com/docs/top-right-bottom-left
7512
- */
7513
- 'inset-y': [{
7514
- 'inset-y': scaleInset()
7515
- }],
7516
- /**
7517
- * Start
7518
- * @see https://tailwindcss.com/docs/top-right-bottom-left
7519
- */
7520
- start: [{
7521
- start: scaleInset()
7522
- }],
7523
- /**
7524
- * End
7525
- * @see https://tailwindcss.com/docs/top-right-bottom-left
7526
- */
7527
- end: [{
7528
- end: scaleInset()
7529
- }],
7530
- /**
7531
- * Top
7532
- * @see https://tailwindcss.com/docs/top-right-bottom-left
7533
- */
7534
- top: [{
7535
- top: scaleInset()
7536
- }],
7537
- /**
7538
- * Right
7539
- * @see https://tailwindcss.com/docs/top-right-bottom-left
7540
- */
7541
- right: [{
7542
- right: scaleInset()
7543
- }],
7544
- /**
7545
- * Bottom
7546
- * @see https://tailwindcss.com/docs/top-right-bottom-left
7547
- */
7548
- bottom: [{
7549
- bottom: scaleInset()
7550
- }],
7551
- /**
7552
- * Left
7553
- * @see https://tailwindcss.com/docs/top-right-bottom-left
7554
- */
7555
- left: [{
7556
- left: scaleInset()
7557
- }],
7558
- /**
7559
- * Visibility
7560
- * @see https://tailwindcss.com/docs/visibility
7561
- */
7562
- visibility: ['visible', 'invisible', 'collapse'],
7563
- /**
7564
- * Z-Index
7565
- * @see https://tailwindcss.com/docs/z-index
7566
- */
7567
- z: [{
7568
- z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]
7569
- }],
7570
- // ------------------------
7571
- // --- Flexbox and Grid ---
7572
- // ------------------------
7573
- /**
7574
- * Flex Basis
7575
- * @see https://tailwindcss.com/docs/flex-basis
7576
- */
7577
- basis: [{
7578
- basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]
7579
- }],
7580
- /**
7581
- * Flex Direction
7582
- * @see https://tailwindcss.com/docs/flex-direction
7583
- */
7584
- 'flex-direction': [{
7585
- flex: ['row', 'row-reverse', 'col', 'col-reverse']
7586
- }],
7587
- /**
7588
- * Flex Wrap
7589
- * @see https://tailwindcss.com/docs/flex-wrap
7590
- */
7591
- 'flex-wrap': [{
7592
- flex: ['nowrap', 'wrap', 'wrap-reverse']
7593
- }],
7594
- /**
7595
- * Flex
7596
- * @see https://tailwindcss.com/docs/flex
7597
- */
7598
- flex: [{
7599
- flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]
7600
- }],
7601
- /**
7602
- * Flex Grow
7603
- * @see https://tailwindcss.com/docs/flex-grow
7604
- */
7605
- grow: [{
7606
- grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]
7607
- }],
7608
- /**
7609
- * Flex Shrink
7610
- * @see https://tailwindcss.com/docs/flex-shrink
7611
- */
7612
- shrink: [{
7613
- shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]
7614
- }],
7615
- /**
7616
- * Order
7617
- * @see https://tailwindcss.com/docs/order
7618
- */
7619
- order: [{
7620
- order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]
7621
- }],
7622
- /**
7623
- * Grid Template Columns
7624
- * @see https://tailwindcss.com/docs/grid-template-columns
7625
- */
7626
- 'grid-cols': [{
7627
- 'grid-cols': scaleGridTemplateColsRows()
7628
- }],
7629
- /**
7630
- * Grid Column Start / End
7631
- * @see https://tailwindcss.com/docs/grid-column
7632
- */
7633
- 'col-start-end': [{
7634
- col: scaleGridColRowStartAndEnd()
7635
- }],
7636
- /**
7637
- * Grid Column Start
7638
- * @see https://tailwindcss.com/docs/grid-column
7639
- */
7640
- 'col-start': [{
7641
- 'col-start': scaleGridColRowStartOrEnd()
7642
- }],
7643
- /**
7644
- * Grid Column End
7645
- * @see https://tailwindcss.com/docs/grid-column
7646
- */
7647
- 'col-end': [{
7648
- 'col-end': scaleGridColRowStartOrEnd()
7649
- }],
7650
- /**
7651
- * Grid Template Rows
7652
- * @see https://tailwindcss.com/docs/grid-template-rows
7653
- */
7654
- 'grid-rows': [{
7655
- 'grid-rows': scaleGridTemplateColsRows()
7656
- }],
7657
- /**
7658
- * Grid Row Start / End
7659
- * @see https://tailwindcss.com/docs/grid-row
7660
- */
7661
- 'row-start-end': [{
7662
- row: scaleGridColRowStartAndEnd()
7663
- }],
7664
- /**
7665
- * Grid Row Start
7666
- * @see https://tailwindcss.com/docs/grid-row
7667
- */
7668
- 'row-start': [{
7669
- 'row-start': scaleGridColRowStartOrEnd()
7670
- }],
7671
- /**
7672
- * Grid Row End
7673
- * @see https://tailwindcss.com/docs/grid-row
7674
- */
7675
- 'row-end': [{
7676
- 'row-end': scaleGridColRowStartOrEnd()
7677
- }],
7678
- /**
7679
- * Grid Auto Flow
7680
- * @see https://tailwindcss.com/docs/grid-auto-flow
7681
- */
7682
- 'grid-flow': [{
7683
- 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']
7684
- }],
7685
- /**
7686
- * Grid Auto Columns
7687
- * @see https://tailwindcss.com/docs/grid-auto-columns
7688
- */
7689
- 'auto-cols': [{
7690
- 'auto-cols': scaleGridAutoColsRows()
7691
- }],
7692
- /**
7693
- * Grid Auto Rows
7694
- * @see https://tailwindcss.com/docs/grid-auto-rows
7695
- */
7696
- 'auto-rows': [{
7697
- 'auto-rows': scaleGridAutoColsRows()
7698
- }],
7699
- /**
7700
- * Gap
7701
- * @see https://tailwindcss.com/docs/gap
7702
- */
7703
- gap: [{
7704
- gap: scaleUnambiguousSpacing()
7705
- }],
7706
- /**
7707
- * Gap X
7708
- * @see https://tailwindcss.com/docs/gap
7709
- */
7710
- 'gap-x': [{
7711
- 'gap-x': scaleUnambiguousSpacing()
7712
- }],
7713
- /**
7714
- * Gap Y
7715
- * @see https://tailwindcss.com/docs/gap
7716
- */
7717
- 'gap-y': [{
7718
- 'gap-y': scaleUnambiguousSpacing()
7719
- }],
7720
- /**
7721
- * Justify Content
7722
- * @see https://tailwindcss.com/docs/justify-content
7723
- */
7724
- 'justify-content': [{
7725
- justify: [...scaleAlignPrimaryAxis(), 'normal']
7726
- }],
7727
- /**
7728
- * Justify Items
7729
- * @see https://tailwindcss.com/docs/justify-items
7730
- */
7731
- 'justify-items': [{
7732
- 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']
7733
- }],
7734
- /**
7735
- * Justify Self
7736
- * @see https://tailwindcss.com/docs/justify-self
7737
- */
7738
- 'justify-self': [{
7739
- 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]
7740
- }],
7741
- /**
7742
- * Align Content
7743
- * @see https://tailwindcss.com/docs/align-content
7744
- */
7745
- 'align-content': [{
7746
- content: ['normal', ...scaleAlignPrimaryAxis()]
7747
- }],
7748
- /**
7749
- * Align Items
7750
- * @see https://tailwindcss.com/docs/align-items
7751
- */
7752
- 'align-items': [{
7753
- items: [...scaleAlignSecondaryAxis(), {
7754
- baseline: ['', 'last']
7755
- }]
7756
- }],
7757
- /**
7758
- * Align Self
7759
- * @see https://tailwindcss.com/docs/align-self
7760
- */
7761
- 'align-self': [{
7762
- self: ['auto', ...scaleAlignSecondaryAxis(), {
7763
- baseline: ['', 'last']
7764
- }]
7765
- }],
7766
- /**
7767
- * Place Content
7768
- * @see https://tailwindcss.com/docs/place-content
7769
- */
7770
- 'place-content': [{
7771
- 'place-content': scaleAlignPrimaryAxis()
7772
- }],
7773
- /**
7774
- * Place Items
7775
- * @see https://tailwindcss.com/docs/place-items
7776
- */
7777
- 'place-items': [{
7778
- 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']
7779
- }],
7780
- /**
7781
- * Place Self
7782
- * @see https://tailwindcss.com/docs/place-self
7783
- */
7784
- 'place-self': [{
7785
- 'place-self': ['auto', ...scaleAlignSecondaryAxis()]
7786
- }],
7787
- // Spacing
7788
- /**
7789
- * Padding
7790
- * @see https://tailwindcss.com/docs/padding
7791
- */
7792
- p: [{
7793
- p: scaleUnambiguousSpacing()
7794
- }],
7795
- /**
7796
- * Padding X
7797
- * @see https://tailwindcss.com/docs/padding
7798
- */
7799
- px: [{
7800
- px: scaleUnambiguousSpacing()
7801
- }],
7802
- /**
7803
- * Padding Y
7804
- * @see https://tailwindcss.com/docs/padding
7805
- */
7806
- py: [{
7807
- py: scaleUnambiguousSpacing()
7808
- }],
7809
- /**
7810
- * Padding Start
7811
- * @see https://tailwindcss.com/docs/padding
7812
- */
7813
- ps: [{
7814
- ps: scaleUnambiguousSpacing()
7815
- }],
7816
- /**
7817
- * Padding End
7818
- * @see https://tailwindcss.com/docs/padding
7819
- */
7820
- pe: [{
7821
- pe: scaleUnambiguousSpacing()
7822
- }],
7823
- /**
7824
- * Padding Top
7825
- * @see https://tailwindcss.com/docs/padding
7826
- */
7827
- pt: [{
7828
- pt: scaleUnambiguousSpacing()
7829
- }],
7830
- /**
7831
- * Padding Right
7832
- * @see https://tailwindcss.com/docs/padding
7833
- */
7834
- pr: [{
7835
- pr: scaleUnambiguousSpacing()
7836
- }],
7837
- /**
7838
- * Padding Bottom
7839
- * @see https://tailwindcss.com/docs/padding
7840
- */
7841
- pb: [{
7842
- pb: scaleUnambiguousSpacing()
7843
- }],
7844
- /**
7845
- * Padding Left
7846
- * @see https://tailwindcss.com/docs/padding
7847
- */
7848
- pl: [{
7849
- pl: scaleUnambiguousSpacing()
7850
- }],
7851
- /**
7852
- * Margin
7853
- * @see https://tailwindcss.com/docs/margin
7854
- */
7855
- m: [{
7856
- m: scaleMargin()
7857
- }],
7858
- /**
7859
- * Margin X
7860
- * @see https://tailwindcss.com/docs/margin
7861
- */
7862
- mx: [{
7863
- mx: scaleMargin()
7864
- }],
7865
- /**
7866
- * Margin Y
7867
- * @see https://tailwindcss.com/docs/margin
7868
- */
7869
- my: [{
7870
- my: scaleMargin()
7871
- }],
7872
- /**
7873
- * Margin Start
7874
- * @see https://tailwindcss.com/docs/margin
7875
- */
7876
- ms: [{
7877
- ms: scaleMargin()
7878
- }],
7879
- /**
7880
- * Margin End
7881
- * @see https://tailwindcss.com/docs/margin
7882
- */
7883
- me: [{
7884
- me: scaleMargin()
7885
- }],
7886
- /**
7887
- * Margin Top
7888
- * @see https://tailwindcss.com/docs/margin
7889
- */
7890
- mt: [{
7891
- mt: scaleMargin()
7892
- }],
7893
- /**
7894
- * Margin Right
7895
- * @see https://tailwindcss.com/docs/margin
7896
- */
7897
- mr: [{
7898
- mr: scaleMargin()
7899
- }],
7900
- /**
7901
- * Margin Bottom
7902
- * @see https://tailwindcss.com/docs/margin
7903
- */
7904
- mb: [{
7905
- mb: scaleMargin()
7906
- }],
7907
- /**
7908
- * Margin Left
7909
- * @see https://tailwindcss.com/docs/margin
7910
- */
7911
- ml: [{
7912
- ml: scaleMargin()
7913
- }],
7914
- /**
7915
- * Space Between X
7916
- * @see https://tailwindcss.com/docs/margin#adding-space-between-children
7917
- */
7918
- 'space-x': [{
7919
- 'space-x': scaleUnambiguousSpacing()
7920
- }],
7921
- /**
7922
- * Space Between X Reverse
7923
- * @see https://tailwindcss.com/docs/margin#adding-space-between-children
7924
- */
7925
- 'space-x-reverse': ['space-x-reverse'],
7926
- /**
7927
- * Space Between Y
7928
- * @see https://tailwindcss.com/docs/margin#adding-space-between-children
7929
- */
7930
- 'space-y': [{
7931
- 'space-y': scaleUnambiguousSpacing()
7932
- }],
7933
- /**
7934
- * Space Between Y Reverse
7935
- * @see https://tailwindcss.com/docs/margin#adding-space-between-children
7936
- */
7937
- 'space-y-reverse': ['space-y-reverse'],
7938
- // --------------
7939
- // --- Sizing ---
7940
- // --------------
7941
- /**
7942
- * Size
7943
- * @see https://tailwindcss.com/docs/width#setting-both-width-and-height
7944
- */
7945
- size: [{
7946
- size: scaleSizing()
7947
- }],
7948
- /**
7949
- * Width
7950
- * @see https://tailwindcss.com/docs/width
7951
- */
7952
- w: [{
7953
- w: [themeContainer, 'screen', ...scaleSizing()]
7954
- }],
7955
- /**
7956
- * Min-Width
7957
- * @see https://tailwindcss.com/docs/min-width
7958
- */
7959
- 'min-w': [{
7960
- 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
7961
- 'none', ...scaleSizing()]
7962
- }],
7963
- /**
7964
- * Max-Width
7965
- * @see https://tailwindcss.com/docs/max-width
7966
- */
7967
- 'max-w': [{
7968
- 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
7969
- 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
7970
- {
7971
- screen: [themeBreakpoint]
7972
- }, ...scaleSizing()]
7973
- }],
7974
- /**
7975
- * Height
7976
- * @see https://tailwindcss.com/docs/height
7977
- */
7978
- h: [{
7979
- h: ['screen', 'lh', ...scaleSizing()]
7980
- }],
7981
- /**
7982
- * Min-Height
7983
- * @see https://tailwindcss.com/docs/min-height
7984
- */
7985
- 'min-h': [{
7986
- 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]
7987
- }],
7988
- /**
7989
- * Max-Height
7990
- * @see https://tailwindcss.com/docs/max-height
7991
- */
7992
- 'max-h': [{
7993
- 'max-h': ['screen', 'lh', ...scaleSizing()]
7994
- }],
7995
- // ------------------
7996
- // --- Typography ---
7997
- // ------------------
7998
- /**
7999
- * Font Size
8000
- * @see https://tailwindcss.com/docs/font-size
8001
- */
8002
- 'font-size': [{
8003
- text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]
8004
- }],
8005
- /**
8006
- * Font Smoothing
8007
- * @see https://tailwindcss.com/docs/font-smoothing
8008
- */
8009
- 'font-smoothing': ['antialiased', 'subpixel-antialiased'],
8010
- /**
8011
- * Font Style
8012
- * @see https://tailwindcss.com/docs/font-style
8013
- */
8014
- 'font-style': ['italic', 'not-italic'],
8015
- /**
8016
- * Font Weight
8017
- * @see https://tailwindcss.com/docs/font-weight
8018
- */
8019
- 'font-weight': [{
8020
- font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]
8021
- }],
8022
- /**
8023
- * Font Stretch
8024
- * @see https://tailwindcss.com/docs/font-stretch
8025
- */
8026
- 'font-stretch': [{
8027
- 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]
8028
- }],
8029
- /**
8030
- * Font Family
8031
- * @see https://tailwindcss.com/docs/font-family
8032
- */
8033
- 'font-family': [{
8034
- font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]
8035
- }],
8036
- /**
8037
- * Font Variant Numeric
8038
- * @see https://tailwindcss.com/docs/font-variant-numeric
8039
- */
8040
- 'fvn-normal': ['normal-nums'],
8041
- /**
8042
- * Font Variant Numeric
8043
- * @see https://tailwindcss.com/docs/font-variant-numeric
8044
- */
8045
- 'fvn-ordinal': ['ordinal'],
8046
- /**
8047
- * Font Variant Numeric
8048
- * @see https://tailwindcss.com/docs/font-variant-numeric
8049
- */
8050
- 'fvn-slashed-zero': ['slashed-zero'],
8051
- /**
8052
- * Font Variant Numeric
8053
- * @see https://tailwindcss.com/docs/font-variant-numeric
8054
- */
8055
- 'fvn-figure': ['lining-nums', 'oldstyle-nums'],
8056
- /**
8057
- * Font Variant Numeric
8058
- * @see https://tailwindcss.com/docs/font-variant-numeric
8059
- */
8060
- 'fvn-spacing': ['proportional-nums', 'tabular-nums'],
8061
- /**
8062
- * Font Variant Numeric
8063
- * @see https://tailwindcss.com/docs/font-variant-numeric
8064
- */
8065
- 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],
8066
- /**
8067
- * Letter Spacing
8068
- * @see https://tailwindcss.com/docs/letter-spacing
8069
- */
8070
- tracking: [{
8071
- tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]
8072
- }],
8073
- /**
8074
- * Line Clamp
8075
- * @see https://tailwindcss.com/docs/line-clamp
8076
- */
8077
- 'line-clamp': [{
8078
- 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]
8079
- }],
8080
- /**
8081
- * Line Height
8082
- * @see https://tailwindcss.com/docs/line-height
8083
- */
8084
- leading: [{
8085
- leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
8086
- themeLeading, ...scaleUnambiguousSpacing()]
8087
- }],
8088
- /**
8089
- * List Style Image
8090
- * @see https://tailwindcss.com/docs/list-style-image
8091
- */
8092
- 'list-image': [{
8093
- 'list-image': ['none', isArbitraryVariable, isArbitraryValue]
8094
- }],
8095
- /**
8096
- * List Style Position
8097
- * @see https://tailwindcss.com/docs/list-style-position
8098
- */
8099
- 'list-style-position': [{
8100
- list: ['inside', 'outside']
8101
- }],
8102
- /**
8103
- * List Style Type
8104
- * @see https://tailwindcss.com/docs/list-style-type
8105
- */
8106
- 'list-style-type': [{
8107
- list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]
8108
- }],
8109
- /**
8110
- * Text Alignment
8111
- * @see https://tailwindcss.com/docs/text-align
8112
- */
8113
- 'text-alignment': [{
8114
- text: ['left', 'center', 'right', 'justify', 'start', 'end']
8115
- }],
8116
- /**
8117
- * Placeholder Color
8118
- * @deprecated since Tailwind CSS v3.0.0
8119
- * @see https://v3.tailwindcss.com/docs/placeholder-color
8120
- */
8121
- 'placeholder-color': [{
8122
- placeholder: scaleColor()
8123
- }],
8124
- /**
8125
- * Text Color
8126
- * @see https://tailwindcss.com/docs/text-color
8127
- */
8128
- 'text-color': [{
8129
- text: scaleColor()
8130
- }],
8131
- /**
8132
- * Text Decoration
8133
- * @see https://tailwindcss.com/docs/text-decoration
8134
- */
8135
- 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],
8136
- /**
8137
- * Text Decoration Style
8138
- * @see https://tailwindcss.com/docs/text-decoration-style
8139
- */
8140
- 'text-decoration-style': [{
8141
- decoration: [...scaleLineStyle(), 'wavy']
8142
- }],
8143
- /**
8144
- * Text Decoration Thickness
8145
- * @see https://tailwindcss.com/docs/text-decoration-thickness
8146
- */
8147
- 'text-decoration-thickness': [{
8148
- decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]
8149
- }],
8150
- /**
8151
- * Text Decoration Color
8152
- * @see https://tailwindcss.com/docs/text-decoration-color
8153
- */
8154
- 'text-decoration-color': [{
8155
- decoration: scaleColor()
8156
- }],
8157
- /**
8158
- * Text Underline Offset
8159
- * @see https://tailwindcss.com/docs/text-underline-offset
8160
- */
8161
- 'underline-offset': [{
8162
- 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]
8163
- }],
8164
- /**
8165
- * Text Transform
8166
- * @see https://tailwindcss.com/docs/text-transform
8167
- */
8168
- 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],
8169
- /**
8170
- * Text Overflow
8171
- * @see https://tailwindcss.com/docs/text-overflow
8172
- */
8173
- 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],
8174
- /**
8175
- * Text Wrap
8176
- * @see https://tailwindcss.com/docs/text-wrap
8177
- */
8178
- 'text-wrap': [{
8179
- text: ['wrap', 'nowrap', 'balance', 'pretty']
8180
- }],
8181
- /**
8182
- * Text Indent
8183
- * @see https://tailwindcss.com/docs/text-indent
8184
- */
8185
- indent: [{
8186
- indent: scaleUnambiguousSpacing()
8187
- }],
8188
- /**
8189
- * Vertical Alignment
8190
- * @see https://tailwindcss.com/docs/vertical-align
8191
- */
8192
- 'vertical-align': [{
8193
- align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]
8194
- }],
8195
- /**
8196
- * Whitespace
8197
- * @see https://tailwindcss.com/docs/whitespace
8198
- */
8199
- whitespace: [{
8200
- whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']
8201
- }],
8202
- /**
8203
- * Word Break
8204
- * @see https://tailwindcss.com/docs/word-break
8205
- */
8206
- break: [{
8207
- break: ['normal', 'words', 'all', 'keep']
8208
- }],
8209
- /**
8210
- * Overflow Wrap
8211
- * @see https://tailwindcss.com/docs/overflow-wrap
8212
- */
8213
- wrap: [{
8214
- wrap: ['break-word', 'anywhere', 'normal']
8215
- }],
8216
- /**
8217
- * Hyphens
8218
- * @see https://tailwindcss.com/docs/hyphens
8219
- */
8220
- hyphens: [{
8221
- hyphens: ['none', 'manual', 'auto']
8222
- }],
8223
- /**
8224
- * Content
8225
- * @see https://tailwindcss.com/docs/content
8226
- */
8227
- content: [{
8228
- content: ['none', isArbitraryVariable, isArbitraryValue]
8229
- }],
8230
- // -------------------
8231
- // --- Backgrounds ---
8232
- // -------------------
8233
- /**
8234
- * Background Attachment
8235
- * @see https://tailwindcss.com/docs/background-attachment
8236
- */
8237
- 'bg-attachment': [{
8238
- bg: ['fixed', 'local', 'scroll']
8239
- }],
8240
- /**
8241
- * Background Clip
8242
- * @see https://tailwindcss.com/docs/background-clip
8243
- */
8244
- 'bg-clip': [{
8245
- 'bg-clip': ['border', 'padding', 'content', 'text']
8246
- }],
8247
- /**
8248
- * Background Origin
8249
- * @see https://tailwindcss.com/docs/background-origin
8250
- */
8251
- 'bg-origin': [{
8252
- 'bg-origin': ['border', 'padding', 'content']
8253
- }],
8254
- /**
8255
- * Background Position
8256
- * @see https://tailwindcss.com/docs/background-position
8257
- */
8258
- 'bg-position': [{
8259
- bg: scaleBgPosition()
8260
- }],
8261
- /**
8262
- * Background Repeat
8263
- * @see https://tailwindcss.com/docs/background-repeat
8264
- */
8265
- 'bg-repeat': [{
8266
- bg: scaleBgRepeat()
8267
- }],
8268
- /**
8269
- * Background Size
8270
- * @see https://tailwindcss.com/docs/background-size
8271
- */
8272
- 'bg-size': [{
8273
- bg: scaleBgSize()
8274
- }],
8275
- /**
8276
- * Background Image
8277
- * @see https://tailwindcss.com/docs/background-image
8278
- */
8279
- 'bg-image': [{
8280
- bg: ['none', {
8281
- linear: [{
8282
- to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']
8283
- }, isInteger, isArbitraryVariable, isArbitraryValue],
8284
- radial: ['', isArbitraryVariable, isArbitraryValue],
8285
- conic: [isInteger, isArbitraryVariable, isArbitraryValue]
8286
- }, isArbitraryVariableImage, isArbitraryImage]
8287
- }],
8288
- /**
8289
- * Background Color
8290
- * @see https://tailwindcss.com/docs/background-color
8291
- */
8292
- 'bg-color': [{
8293
- bg: scaleColor()
8294
- }],
8295
- /**
8296
- * Gradient Color Stops From Position
8297
- * @see https://tailwindcss.com/docs/gradient-color-stops
8298
- */
8299
- 'gradient-from-pos': [{
8300
- from: scaleGradientStopPosition()
8301
- }],
8302
- /**
8303
- * Gradient Color Stops Via Position
8304
- * @see https://tailwindcss.com/docs/gradient-color-stops
8305
- */
8306
- 'gradient-via-pos': [{
8307
- via: scaleGradientStopPosition()
8308
- }],
8309
- /**
8310
- * Gradient Color Stops To Position
8311
- * @see https://tailwindcss.com/docs/gradient-color-stops
8312
- */
8313
- 'gradient-to-pos': [{
8314
- to: scaleGradientStopPosition()
8315
- }],
8316
- /**
8317
- * Gradient Color Stops From
8318
- * @see https://tailwindcss.com/docs/gradient-color-stops
8319
- */
8320
- 'gradient-from': [{
8321
- from: scaleColor()
8322
- }],
8323
- /**
8324
- * Gradient Color Stops Via
8325
- * @see https://tailwindcss.com/docs/gradient-color-stops
8326
- */
8327
- 'gradient-via': [{
8328
- via: scaleColor()
8329
- }],
8330
- /**
8331
- * Gradient Color Stops To
8332
- * @see https://tailwindcss.com/docs/gradient-color-stops
8333
- */
8334
- 'gradient-to': [{
8335
- to: scaleColor()
8336
- }],
8337
- // ---------------
8338
- // --- Borders ---
8339
- // ---------------
8340
- /**
8341
- * Border Radius
8342
- * @see https://tailwindcss.com/docs/border-radius
8343
- */
8344
- rounded: [{
8345
- rounded: scaleRadius()
8346
- }],
8347
- /**
8348
- * Border Radius Start
8349
- * @see https://tailwindcss.com/docs/border-radius
8350
- */
8351
- 'rounded-s': [{
8352
- 'rounded-s': scaleRadius()
8353
- }],
8354
- /**
8355
- * Border Radius End
8356
- * @see https://tailwindcss.com/docs/border-radius
8357
- */
8358
- 'rounded-e': [{
8359
- 'rounded-e': scaleRadius()
8360
- }],
8361
- /**
8362
- * Border Radius Top
8363
- * @see https://tailwindcss.com/docs/border-radius
8364
- */
8365
- 'rounded-t': [{
8366
- 'rounded-t': scaleRadius()
8367
- }],
8368
- /**
8369
- * Border Radius Right
8370
- * @see https://tailwindcss.com/docs/border-radius
8371
- */
8372
- 'rounded-r': [{
8373
- 'rounded-r': scaleRadius()
8374
- }],
8375
- /**
8376
- * Border Radius Bottom
8377
- * @see https://tailwindcss.com/docs/border-radius
8378
- */
8379
- 'rounded-b': [{
8380
- 'rounded-b': scaleRadius()
8381
- }],
8382
- /**
8383
- * Border Radius Left
8384
- * @see https://tailwindcss.com/docs/border-radius
8385
- */
8386
- 'rounded-l': [{
8387
- 'rounded-l': scaleRadius()
8388
- }],
8389
- /**
8390
- * Border Radius Start Start
8391
- * @see https://tailwindcss.com/docs/border-radius
8392
- */
8393
- 'rounded-ss': [{
8394
- 'rounded-ss': scaleRadius()
8395
- }],
8396
- /**
8397
- * Border Radius Start End
8398
- * @see https://tailwindcss.com/docs/border-radius
8399
- */
8400
- 'rounded-se': [{
8401
- 'rounded-se': scaleRadius()
8402
- }],
8403
- /**
8404
- * Border Radius End End
8405
- * @see https://tailwindcss.com/docs/border-radius
8406
- */
8407
- 'rounded-ee': [{
8408
- 'rounded-ee': scaleRadius()
8409
- }],
8410
- /**
8411
- * Border Radius End Start
8412
- * @see https://tailwindcss.com/docs/border-radius
8413
- */
8414
- 'rounded-es': [{
8415
- 'rounded-es': scaleRadius()
8416
- }],
8417
- /**
8418
- * Border Radius Top Left
8419
- * @see https://tailwindcss.com/docs/border-radius
8420
- */
8421
- 'rounded-tl': [{
8422
- 'rounded-tl': scaleRadius()
8423
- }],
8424
- /**
8425
- * Border Radius Top Right
8426
- * @see https://tailwindcss.com/docs/border-radius
8427
- */
8428
- 'rounded-tr': [{
8429
- 'rounded-tr': scaleRadius()
8430
- }],
8431
- /**
8432
- * Border Radius Bottom Right
8433
- * @see https://tailwindcss.com/docs/border-radius
8434
- */
8435
- 'rounded-br': [{
8436
- 'rounded-br': scaleRadius()
8437
- }],
8438
- /**
8439
- * Border Radius Bottom Left
8440
- * @see https://tailwindcss.com/docs/border-radius
8441
- */
8442
- 'rounded-bl': [{
8443
- 'rounded-bl': scaleRadius()
8444
- }],
8445
- /**
8446
- * Border Width
8447
- * @see https://tailwindcss.com/docs/border-width
8448
- */
8449
- 'border-w': [{
8450
- border: scaleBorderWidth()
8451
- }],
8452
- /**
8453
- * Border Width X
8454
- * @see https://tailwindcss.com/docs/border-width
8455
- */
8456
- 'border-w-x': [{
8457
- 'border-x': scaleBorderWidth()
8458
- }],
8459
- /**
8460
- * Border Width Y
8461
- * @see https://tailwindcss.com/docs/border-width
8462
- */
8463
- 'border-w-y': [{
8464
- 'border-y': scaleBorderWidth()
8465
- }],
8466
- /**
8467
- * Border Width Start
8468
- * @see https://tailwindcss.com/docs/border-width
8469
- */
8470
- 'border-w-s': [{
8471
- 'border-s': scaleBorderWidth()
8472
- }],
8473
- /**
8474
- * Border Width End
8475
- * @see https://tailwindcss.com/docs/border-width
8476
- */
8477
- 'border-w-e': [{
8478
- 'border-e': scaleBorderWidth()
8479
- }],
8480
- /**
8481
- * Border Width Top
8482
- * @see https://tailwindcss.com/docs/border-width
8483
- */
8484
- 'border-w-t': [{
8485
- 'border-t': scaleBorderWidth()
8486
- }],
8487
- /**
8488
- * Border Width Right
8489
- * @see https://tailwindcss.com/docs/border-width
8490
- */
8491
- 'border-w-r': [{
8492
- 'border-r': scaleBorderWidth()
8493
- }],
8494
- /**
8495
- * Border Width Bottom
8496
- * @see https://tailwindcss.com/docs/border-width
8497
- */
8498
- 'border-w-b': [{
8499
- 'border-b': scaleBorderWidth()
8500
- }],
8501
- /**
8502
- * Border Width Left
8503
- * @see https://tailwindcss.com/docs/border-width
8504
- */
8505
- 'border-w-l': [{
8506
- 'border-l': scaleBorderWidth()
8507
- }],
8508
- /**
8509
- * Divide Width X
8510
- * @see https://tailwindcss.com/docs/border-width#between-children
8511
- */
8512
- 'divide-x': [{
8513
- 'divide-x': scaleBorderWidth()
8514
- }],
8515
- /**
8516
- * Divide Width X Reverse
8517
- * @see https://tailwindcss.com/docs/border-width#between-children
8518
- */
8519
- 'divide-x-reverse': ['divide-x-reverse'],
8520
- /**
8521
- * Divide Width Y
8522
- * @see https://tailwindcss.com/docs/border-width#between-children
8523
- */
8524
- 'divide-y': [{
8525
- 'divide-y': scaleBorderWidth()
8526
- }],
8527
- /**
8528
- * Divide Width Y Reverse
8529
- * @see https://tailwindcss.com/docs/border-width#between-children
8530
- */
8531
- 'divide-y-reverse': ['divide-y-reverse'],
8532
- /**
8533
- * Border Style
8534
- * @see https://tailwindcss.com/docs/border-style
8535
- */
8536
- 'border-style': [{
8537
- border: [...scaleLineStyle(), 'hidden', 'none']
8538
- }],
8539
- /**
8540
- * Divide Style
8541
- * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style
8542
- */
8543
- 'divide-style': [{
8544
- divide: [...scaleLineStyle(), 'hidden', 'none']
8545
- }],
8546
- /**
8547
- * Border Color
8548
- * @see https://tailwindcss.com/docs/border-color
8549
- */
8550
- 'border-color': [{
8551
- border: scaleColor()
8552
- }],
8553
- /**
8554
- * Border Color X
8555
- * @see https://tailwindcss.com/docs/border-color
8556
- */
8557
- 'border-color-x': [{
8558
- 'border-x': scaleColor()
8559
- }],
8560
- /**
8561
- * Border Color Y
8562
- * @see https://tailwindcss.com/docs/border-color
8563
- */
8564
- 'border-color-y': [{
8565
- 'border-y': scaleColor()
8566
- }],
8567
- /**
8568
- * Border Color S
8569
- * @see https://tailwindcss.com/docs/border-color
8570
- */
8571
- 'border-color-s': [{
8572
- 'border-s': scaleColor()
8573
- }],
8574
- /**
8575
- * Border Color E
8576
- * @see https://tailwindcss.com/docs/border-color
8577
- */
8578
- 'border-color-e': [{
8579
- 'border-e': scaleColor()
8580
- }],
8581
- /**
8582
- * Border Color Top
8583
- * @see https://tailwindcss.com/docs/border-color
8584
- */
8585
- 'border-color-t': [{
8586
- 'border-t': scaleColor()
8587
- }],
8588
- /**
8589
- * Border Color Right
8590
- * @see https://tailwindcss.com/docs/border-color
8591
- */
8592
- 'border-color-r': [{
8593
- 'border-r': scaleColor()
8594
- }],
8595
- /**
8596
- * Border Color Bottom
8597
- * @see https://tailwindcss.com/docs/border-color
8598
- */
8599
- 'border-color-b': [{
8600
- 'border-b': scaleColor()
8601
- }],
8602
- /**
8603
- * Border Color Left
8604
- * @see https://tailwindcss.com/docs/border-color
8605
- */
8606
- 'border-color-l': [{
8607
- 'border-l': scaleColor()
8608
- }],
8609
- /**
8610
- * Divide Color
8611
- * @see https://tailwindcss.com/docs/divide-color
8612
- */
8613
- 'divide-color': [{
8614
- divide: scaleColor()
8615
- }],
8616
- /**
8617
- * Outline Style
8618
- * @see https://tailwindcss.com/docs/outline-style
8619
- */
8620
- 'outline-style': [{
8621
- outline: [...scaleLineStyle(), 'none', 'hidden']
8622
- }],
8623
- /**
8624
- * Outline Offset
8625
- * @see https://tailwindcss.com/docs/outline-offset
8626
- */
8627
- 'outline-offset': [{
8628
- 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]
8629
- }],
8630
- /**
8631
- * Outline Width
8632
- * @see https://tailwindcss.com/docs/outline-width
8633
- */
8634
- 'outline-w': [{
8635
- outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]
8636
- }],
8637
- /**
8638
- * Outline Color
8639
- * @see https://tailwindcss.com/docs/outline-color
8640
- */
8641
- 'outline-color': [{
8642
- outline: scaleColor()
8643
- }],
8644
- // ---------------
8645
- // --- Effects ---
8646
- // ---------------
8647
- /**
8648
- * Box Shadow
8649
- * @see https://tailwindcss.com/docs/box-shadow
8650
- */
8651
- shadow: [{
8652
- shadow: [
8653
- // Deprecated since Tailwind CSS v4.0.0
8654
- '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]
8655
- }],
8656
- /**
8657
- * Box Shadow Color
8658
- * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color
8659
- */
8660
- 'shadow-color': [{
8661
- shadow: scaleColor()
8662
- }],
8663
- /**
8664
- * Inset Box Shadow
8665
- * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow
8666
- */
8667
- 'inset-shadow': [{
8668
- 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]
8669
- }],
8670
- /**
8671
- * Inset Box Shadow Color
8672
- * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color
8673
- */
8674
- 'inset-shadow-color': [{
8675
- 'inset-shadow': scaleColor()
8676
- }],
8677
- /**
8678
- * Ring Width
8679
- * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring
8680
- */
8681
- 'ring-w': [{
8682
- ring: scaleBorderWidth()
8683
- }],
8684
- /**
8685
- * Ring Width Inset
8686
- * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings
8687
- * @deprecated since Tailwind CSS v4.0.0
8688
- * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
8689
- */
8690
- 'ring-w-inset': ['ring-inset'],
8691
- /**
8692
- * Ring Color
8693
- * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color
8694
- */
8695
- 'ring-color': [{
8696
- ring: scaleColor()
8697
- }],
8698
- /**
8699
- * Ring Offset Width
8700
- * @see https://v3.tailwindcss.com/docs/ring-offset-width
8701
- * @deprecated since Tailwind CSS v4.0.0
8702
- * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
8703
- */
8704
- 'ring-offset-w': [{
8705
- 'ring-offset': [isNumber, isArbitraryLength]
8706
- }],
8707
- /**
8708
- * Ring Offset Color
8709
- * @see https://v3.tailwindcss.com/docs/ring-offset-color
8710
- * @deprecated since Tailwind CSS v4.0.0
8711
- * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
8712
- */
8713
- 'ring-offset-color': [{
8714
- 'ring-offset': scaleColor()
8715
- }],
8716
- /**
8717
- * Inset Ring Width
8718
- * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring
8719
- */
8720
- 'inset-ring-w': [{
8721
- 'inset-ring': scaleBorderWidth()
8722
- }],
8723
- /**
8724
- * Inset Ring Color
8725
- * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color
8726
- */
8727
- 'inset-ring-color': [{
8728
- 'inset-ring': scaleColor()
8729
- }],
8730
- /**
8731
- * Text Shadow
8732
- * @see https://tailwindcss.com/docs/text-shadow
8733
- */
8734
- 'text-shadow': [{
8735
- 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]
8736
- }],
8737
- /**
8738
- * Text Shadow Color
8739
- * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color
8740
- */
8741
- 'text-shadow-color': [{
8742
- 'text-shadow': scaleColor()
8743
- }],
8744
- /**
8745
- * Opacity
8746
- * @see https://tailwindcss.com/docs/opacity
8747
- */
8748
- opacity: [{
8749
- opacity: [isNumber, isArbitraryVariable, isArbitraryValue]
8750
- }],
8751
- /**
8752
- * Mix Blend Mode
8753
- * @see https://tailwindcss.com/docs/mix-blend-mode
8754
- */
8755
- 'mix-blend': [{
8756
- 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']
8757
- }],
8758
- /**
8759
- * Background Blend Mode
8760
- * @see https://tailwindcss.com/docs/background-blend-mode
8761
- */
8762
- 'bg-blend': [{
8763
- 'bg-blend': scaleBlendMode()
8764
- }],
8765
- /**
8766
- * Mask Clip
8767
- * @see https://tailwindcss.com/docs/mask-clip
8768
- */
8769
- 'mask-clip': [{
8770
- 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']
8771
- }, 'mask-no-clip'],
8772
- /**
8773
- * Mask Composite
8774
- * @see https://tailwindcss.com/docs/mask-composite
8775
- */
8776
- 'mask-composite': [{
8777
- mask: ['add', 'subtract', 'intersect', 'exclude']
8778
- }],
8779
- /**
8780
- * Mask Image
8781
- * @see https://tailwindcss.com/docs/mask-image
8782
- */
8783
- 'mask-image-linear-pos': [{
8784
- 'mask-linear': [isNumber]
8785
- }],
8786
- 'mask-image-linear-from-pos': [{
8787
- 'mask-linear-from': scaleMaskImagePosition()
8788
- }],
8789
- 'mask-image-linear-to-pos': [{
8790
- 'mask-linear-to': scaleMaskImagePosition()
8791
- }],
8792
- 'mask-image-linear-from-color': [{
8793
- 'mask-linear-from': scaleColor()
8794
- }],
8795
- 'mask-image-linear-to-color': [{
8796
- 'mask-linear-to': scaleColor()
8797
- }],
8798
- 'mask-image-t-from-pos': [{
8799
- 'mask-t-from': scaleMaskImagePosition()
8800
- }],
8801
- 'mask-image-t-to-pos': [{
8802
- 'mask-t-to': scaleMaskImagePosition()
8803
- }],
8804
- 'mask-image-t-from-color': [{
8805
- 'mask-t-from': scaleColor()
8806
- }],
8807
- 'mask-image-t-to-color': [{
8808
- 'mask-t-to': scaleColor()
8809
- }],
8810
- 'mask-image-r-from-pos': [{
8811
- 'mask-r-from': scaleMaskImagePosition()
8812
- }],
8813
- 'mask-image-r-to-pos': [{
8814
- 'mask-r-to': scaleMaskImagePosition()
8815
- }],
8816
- 'mask-image-r-from-color': [{
8817
- 'mask-r-from': scaleColor()
8818
- }],
8819
- 'mask-image-r-to-color': [{
8820
- 'mask-r-to': scaleColor()
8821
- }],
8822
- 'mask-image-b-from-pos': [{
8823
- 'mask-b-from': scaleMaskImagePosition()
8824
- }],
8825
- 'mask-image-b-to-pos': [{
8826
- 'mask-b-to': scaleMaskImagePosition()
8827
- }],
8828
- 'mask-image-b-from-color': [{
8829
- 'mask-b-from': scaleColor()
8830
- }],
8831
- 'mask-image-b-to-color': [{
8832
- 'mask-b-to': scaleColor()
8833
- }],
8834
- 'mask-image-l-from-pos': [{
8835
- 'mask-l-from': scaleMaskImagePosition()
8836
- }],
8837
- 'mask-image-l-to-pos': [{
8838
- 'mask-l-to': scaleMaskImagePosition()
8839
- }],
8840
- 'mask-image-l-from-color': [{
8841
- 'mask-l-from': scaleColor()
8842
- }],
8843
- 'mask-image-l-to-color': [{
8844
- 'mask-l-to': scaleColor()
8845
- }],
8846
- 'mask-image-x-from-pos': [{
8847
- 'mask-x-from': scaleMaskImagePosition()
8848
- }],
8849
- 'mask-image-x-to-pos': [{
8850
- 'mask-x-to': scaleMaskImagePosition()
8851
- }],
8852
- 'mask-image-x-from-color': [{
8853
- 'mask-x-from': scaleColor()
8854
- }],
8855
- 'mask-image-x-to-color': [{
8856
- 'mask-x-to': scaleColor()
8857
- }],
8858
- 'mask-image-y-from-pos': [{
8859
- 'mask-y-from': scaleMaskImagePosition()
8860
- }],
8861
- 'mask-image-y-to-pos': [{
8862
- 'mask-y-to': scaleMaskImagePosition()
8863
- }],
8864
- 'mask-image-y-from-color': [{
8865
- 'mask-y-from': scaleColor()
8866
- }],
8867
- 'mask-image-y-to-color': [{
8868
- 'mask-y-to': scaleColor()
8869
- }],
8870
- 'mask-image-radial': [{
8871
- 'mask-radial': [isArbitraryVariable, isArbitraryValue]
8872
- }],
8873
- 'mask-image-radial-from-pos': [{
8874
- 'mask-radial-from': scaleMaskImagePosition()
8875
- }],
8876
- 'mask-image-radial-to-pos': [{
8877
- 'mask-radial-to': scaleMaskImagePosition()
8878
- }],
8879
- 'mask-image-radial-from-color': [{
8880
- 'mask-radial-from': scaleColor()
8881
- }],
8882
- 'mask-image-radial-to-color': [{
8883
- 'mask-radial-to': scaleColor()
8884
- }],
8885
- 'mask-image-radial-shape': [{
8886
- 'mask-radial': ['circle', 'ellipse']
8887
- }],
8888
- 'mask-image-radial-size': [{
8889
- 'mask-radial': [{
8890
- closest: ['side', 'corner'],
8891
- farthest: ['side', 'corner']
8892
- }]
8893
- }],
8894
- 'mask-image-radial-pos': [{
8895
- 'mask-radial-at': scalePosition()
8896
- }],
8897
- 'mask-image-conic-pos': [{
8898
- 'mask-conic': [isNumber]
8899
- }],
8900
- 'mask-image-conic-from-pos': [{
8901
- 'mask-conic-from': scaleMaskImagePosition()
8902
- }],
8903
- 'mask-image-conic-to-pos': [{
8904
- 'mask-conic-to': scaleMaskImagePosition()
8905
- }],
8906
- 'mask-image-conic-from-color': [{
8907
- 'mask-conic-from': scaleColor()
8908
- }],
8909
- 'mask-image-conic-to-color': [{
8910
- 'mask-conic-to': scaleColor()
8911
- }],
8912
- /**
8913
- * Mask Mode
8914
- * @see https://tailwindcss.com/docs/mask-mode
8915
- */
8916
- 'mask-mode': [{
8917
- mask: ['alpha', 'luminance', 'match']
8918
- }],
8919
- /**
8920
- * Mask Origin
8921
- * @see https://tailwindcss.com/docs/mask-origin
8922
- */
8923
- 'mask-origin': [{
8924
- 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']
8925
- }],
8926
- /**
8927
- * Mask Position
8928
- * @see https://tailwindcss.com/docs/mask-position
8929
- */
8930
- 'mask-position': [{
8931
- mask: scaleBgPosition()
8932
- }],
8933
- /**
8934
- * Mask Repeat
8935
- * @see https://tailwindcss.com/docs/mask-repeat
8936
- */
8937
- 'mask-repeat': [{
8938
- mask: scaleBgRepeat()
8939
- }],
8940
- /**
8941
- * Mask Size
8942
- * @see https://tailwindcss.com/docs/mask-size
8943
- */
8944
- 'mask-size': [{
8945
- mask: scaleBgSize()
8946
- }],
8947
- /**
8948
- * Mask Type
8949
- * @see https://tailwindcss.com/docs/mask-type
8950
- */
8951
- 'mask-type': [{
8952
- 'mask-type': ['alpha', 'luminance']
8953
- }],
8954
- /**
8955
- * Mask Image
8956
- * @see https://tailwindcss.com/docs/mask-image
8957
- */
8958
- 'mask-image': [{
8959
- mask: ['none', isArbitraryVariable, isArbitraryValue]
8960
- }],
8961
- // ---------------
8962
- // --- Filters ---
8963
- // ---------------
8964
- /**
8965
- * Filter
8966
- * @see https://tailwindcss.com/docs/filter
8967
- */
8968
- filter: [{
8969
- filter: [
8970
- // Deprecated since Tailwind CSS v3.0.0
8971
- '', 'none', isArbitraryVariable, isArbitraryValue]
8972
- }],
8973
- /**
8974
- * Blur
8975
- * @see https://tailwindcss.com/docs/blur
8976
- */
8977
- blur: [{
8978
- blur: scaleBlur()
8979
- }],
8980
- /**
8981
- * Brightness
8982
- * @see https://tailwindcss.com/docs/brightness
8983
- */
8984
- brightness: [{
8985
- brightness: [isNumber, isArbitraryVariable, isArbitraryValue]
8986
- }],
8987
- /**
8988
- * Contrast
8989
- * @see https://tailwindcss.com/docs/contrast
8990
- */
8991
- contrast: [{
8992
- contrast: [isNumber, isArbitraryVariable, isArbitraryValue]
8993
- }],
8994
- /**
8995
- * Drop Shadow
8996
- * @see https://tailwindcss.com/docs/drop-shadow
8997
- */
8998
- 'drop-shadow': [{
8999
- 'drop-shadow': [
9000
- // Deprecated since Tailwind CSS v4.0.0
9001
- '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]
9002
- }],
9003
- /**
9004
- * Drop Shadow Color
9005
- * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color
9006
- */
9007
- 'drop-shadow-color': [{
9008
- 'drop-shadow': scaleColor()
9009
- }],
9010
- /**
9011
- * Grayscale
9012
- * @see https://tailwindcss.com/docs/grayscale
9013
- */
9014
- grayscale: [{
9015
- grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]
9016
- }],
9017
- /**
9018
- * Hue Rotate
9019
- * @see https://tailwindcss.com/docs/hue-rotate
9020
- */
9021
- 'hue-rotate': [{
9022
- 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]
9023
- }],
9024
- /**
9025
- * Invert
9026
- * @see https://tailwindcss.com/docs/invert
9027
- */
9028
- invert: [{
9029
- invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]
9030
- }],
9031
- /**
9032
- * Saturate
9033
- * @see https://tailwindcss.com/docs/saturate
9034
- */
9035
- saturate: [{
9036
- saturate: [isNumber, isArbitraryVariable, isArbitraryValue]
9037
- }],
9038
- /**
9039
- * Sepia
9040
- * @see https://tailwindcss.com/docs/sepia
9041
- */
9042
- sepia: [{
9043
- sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]
9044
- }],
9045
- /**
9046
- * Backdrop Filter
9047
- * @see https://tailwindcss.com/docs/backdrop-filter
9048
- */
9049
- 'backdrop-filter': [{
9050
- 'backdrop-filter': [
9051
- // Deprecated since Tailwind CSS v3.0.0
9052
- '', 'none', isArbitraryVariable, isArbitraryValue]
9053
- }],
9054
- /**
9055
- * Backdrop Blur
9056
- * @see https://tailwindcss.com/docs/backdrop-blur
9057
- */
9058
- 'backdrop-blur': [{
9059
- 'backdrop-blur': scaleBlur()
9060
- }],
9061
- /**
9062
- * Backdrop Brightness
9063
- * @see https://tailwindcss.com/docs/backdrop-brightness
9064
- */
9065
- 'backdrop-brightness': [{
9066
- 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]
9067
- }],
9068
- /**
9069
- * Backdrop Contrast
9070
- * @see https://tailwindcss.com/docs/backdrop-contrast
9071
- */
9072
- 'backdrop-contrast': [{
9073
- 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]
9074
- }],
9075
- /**
9076
- * Backdrop Grayscale
9077
- * @see https://tailwindcss.com/docs/backdrop-grayscale
9078
- */
9079
- 'backdrop-grayscale': [{
9080
- 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]
9081
- }],
9082
- /**
9083
- * Backdrop Hue Rotate
9084
- * @see https://tailwindcss.com/docs/backdrop-hue-rotate
9085
- */
9086
- 'backdrop-hue-rotate': [{
9087
- 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]
9088
- }],
9089
- /**
9090
- * Backdrop Invert
9091
- * @see https://tailwindcss.com/docs/backdrop-invert
9092
- */
9093
- 'backdrop-invert': [{
9094
- 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]
9095
- }],
9096
- /**
9097
- * Backdrop Opacity
9098
- * @see https://tailwindcss.com/docs/backdrop-opacity
9099
- */
9100
- 'backdrop-opacity': [{
9101
- 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]
9102
- }],
9103
- /**
9104
- * Backdrop Saturate
9105
- * @see https://tailwindcss.com/docs/backdrop-saturate
9106
- */
9107
- 'backdrop-saturate': [{
9108
- 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]
9109
- }],
9110
- /**
9111
- * Backdrop Sepia
9112
- * @see https://tailwindcss.com/docs/backdrop-sepia
9113
- */
9114
- 'backdrop-sepia': [{
9115
- 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]
9116
- }],
9117
- // --------------
9118
- // --- Tables ---
9119
- // --------------
9120
- /**
9121
- * Border Collapse
9122
- * @see https://tailwindcss.com/docs/border-collapse
9123
- */
9124
- 'border-collapse': [{
9125
- border: ['collapse', 'separate']
9126
- }],
9127
- /**
9128
- * Border Spacing
9129
- * @see https://tailwindcss.com/docs/border-spacing
9130
- */
9131
- 'border-spacing': [{
9132
- 'border-spacing': scaleUnambiguousSpacing()
9133
- }],
9134
- /**
9135
- * Border Spacing X
9136
- * @see https://tailwindcss.com/docs/border-spacing
9137
- */
9138
- 'border-spacing-x': [{
9139
- 'border-spacing-x': scaleUnambiguousSpacing()
9140
- }],
9141
- /**
9142
- * Border Spacing Y
9143
- * @see https://tailwindcss.com/docs/border-spacing
9144
- */
9145
- 'border-spacing-y': [{
9146
- 'border-spacing-y': scaleUnambiguousSpacing()
9147
- }],
9148
- /**
9149
- * Table Layout
9150
- * @see https://tailwindcss.com/docs/table-layout
9151
- */
9152
- 'table-layout': [{
9153
- table: ['auto', 'fixed']
9154
- }],
9155
- /**
9156
- * Caption Side
9157
- * @see https://tailwindcss.com/docs/caption-side
9158
- */
9159
- caption: [{
9160
- caption: ['top', 'bottom']
9161
- }],
9162
- // ---------------------------------
9163
- // --- Transitions and Animation ---
9164
- // ---------------------------------
9165
- /**
9166
- * Transition Property
9167
- * @see https://tailwindcss.com/docs/transition-property
9168
- */
9169
- transition: [{
9170
- transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]
9171
- }],
9172
- /**
9173
- * Transition Behavior
9174
- * @see https://tailwindcss.com/docs/transition-behavior
9175
- */
9176
- 'transition-behavior': [{
9177
- transition: ['normal', 'discrete']
9178
- }],
9179
- /**
9180
- * Transition Duration
9181
- * @see https://tailwindcss.com/docs/transition-duration
9182
- */
9183
- duration: [{
9184
- duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]
9185
- }],
9186
- /**
9187
- * Transition Timing Function
9188
- * @see https://tailwindcss.com/docs/transition-timing-function
9189
- */
9190
- ease: [{
9191
- ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]
9192
- }],
9193
- /**
9194
- * Transition Delay
9195
- * @see https://tailwindcss.com/docs/transition-delay
9196
- */
9197
- delay: [{
9198
- delay: [isNumber, isArbitraryVariable, isArbitraryValue]
9199
- }],
9200
- /**
9201
- * Animation
9202
- * @see https://tailwindcss.com/docs/animation
9203
- */
9204
- animate: [{
9205
- animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]
9206
- }],
9207
- // ------------------
9208
- // --- Transforms ---
9209
- // ------------------
9210
- /**
9211
- * Backface Visibility
9212
- * @see https://tailwindcss.com/docs/backface-visibility
9213
- */
9214
- backface: [{
9215
- backface: ['hidden', 'visible']
9216
- }],
9217
- /**
9218
- * Perspective
9219
- * @see https://tailwindcss.com/docs/perspective
9220
- */
9221
- perspective: [{
9222
- perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]
9223
- }],
9224
- /**
9225
- * Perspective Origin
9226
- * @see https://tailwindcss.com/docs/perspective-origin
9227
- */
9228
- 'perspective-origin': [{
9229
- 'perspective-origin': scalePositionWithArbitrary()
9230
- }],
9231
- /**
9232
- * Rotate
9233
- * @see https://tailwindcss.com/docs/rotate
9234
- */
9235
- rotate: [{
9236
- rotate: scaleRotate()
9237
- }],
9238
- /**
9239
- * Rotate X
9240
- * @see https://tailwindcss.com/docs/rotate
9241
- */
9242
- 'rotate-x': [{
9243
- 'rotate-x': scaleRotate()
9244
- }],
9245
- /**
9246
- * Rotate Y
9247
- * @see https://tailwindcss.com/docs/rotate
9248
- */
9249
- 'rotate-y': [{
9250
- 'rotate-y': scaleRotate()
9251
- }],
9252
- /**
9253
- * Rotate Z
9254
- * @see https://tailwindcss.com/docs/rotate
9255
- */
9256
- 'rotate-z': [{
9257
- 'rotate-z': scaleRotate()
9258
- }],
9259
- /**
9260
- * Scale
9261
- * @see https://tailwindcss.com/docs/scale
9262
- */
9263
- scale: [{
9264
- scale: scaleScale()
9265
- }],
9266
- /**
9267
- * Scale X
9268
- * @see https://tailwindcss.com/docs/scale
9269
- */
9270
- 'scale-x': [{
9271
- 'scale-x': scaleScale()
9272
- }],
9273
- /**
9274
- * Scale Y
9275
- * @see https://tailwindcss.com/docs/scale
9276
- */
9277
- 'scale-y': [{
9278
- 'scale-y': scaleScale()
9279
- }],
9280
- /**
9281
- * Scale Z
9282
- * @see https://tailwindcss.com/docs/scale
9283
- */
9284
- 'scale-z': [{
9285
- 'scale-z': scaleScale()
9286
- }],
9287
- /**
9288
- * Scale 3D
9289
- * @see https://tailwindcss.com/docs/scale
9290
- */
9291
- 'scale-3d': ['scale-3d'],
9292
- /**
9293
- * Skew
9294
- * @see https://tailwindcss.com/docs/skew
9295
- */
9296
- skew: [{
9297
- skew: scaleSkew()
9298
- }],
9299
- /**
9300
- * Skew X
9301
- * @see https://tailwindcss.com/docs/skew
9302
- */
9303
- 'skew-x': [{
9304
- 'skew-x': scaleSkew()
9305
- }],
9306
- /**
9307
- * Skew Y
9308
- * @see https://tailwindcss.com/docs/skew
9309
- */
9310
- 'skew-y': [{
9311
- 'skew-y': scaleSkew()
9312
- }],
9313
- /**
9314
- * Transform
9315
- * @see https://tailwindcss.com/docs/transform
9316
- */
9317
- transform: [{
9318
- transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']
9319
- }],
9320
- /**
9321
- * Transform Origin
9322
- * @see https://tailwindcss.com/docs/transform-origin
9323
- */
9324
- 'transform-origin': [{
9325
- origin: scalePositionWithArbitrary()
9326
- }],
9327
- /**
9328
- * Transform Style
9329
- * @see https://tailwindcss.com/docs/transform-style
9330
- */
9331
- 'transform-style': [{
9332
- transform: ['3d', 'flat']
9333
- }],
9334
- /**
9335
- * Translate
9336
- * @see https://tailwindcss.com/docs/translate
9337
- */
9338
- translate: [{
9339
- translate: scaleTranslate()
9340
- }],
9341
- /**
9342
- * Translate X
9343
- * @see https://tailwindcss.com/docs/translate
9344
- */
9345
- 'translate-x': [{
9346
- 'translate-x': scaleTranslate()
9347
- }],
9348
- /**
9349
- * Translate Y
9350
- * @see https://tailwindcss.com/docs/translate
9351
- */
9352
- 'translate-y': [{
9353
- 'translate-y': scaleTranslate()
9354
- }],
9355
- /**
9356
- * Translate Z
9357
- * @see https://tailwindcss.com/docs/translate
9358
- */
9359
- 'translate-z': [{
9360
- 'translate-z': scaleTranslate()
9361
- }],
9362
- /**
9363
- * Translate None
9364
- * @see https://tailwindcss.com/docs/translate
9365
- */
9366
- 'translate-none': ['translate-none'],
9367
- // ---------------------
9368
- // --- Interactivity ---
9369
- // ---------------------
9370
- /**
9371
- * Accent Color
9372
- * @see https://tailwindcss.com/docs/accent-color
9373
- */
9374
- accent: [{
9375
- accent: scaleColor()
9376
- }],
9377
- /**
9378
- * Appearance
9379
- * @see https://tailwindcss.com/docs/appearance
9380
- */
9381
- appearance: [{
9382
- appearance: ['none', 'auto']
9383
- }],
9384
- /**
9385
- * Caret Color
9386
- * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
9387
- */
9388
- 'caret-color': [{
9389
- caret: scaleColor()
9390
- }],
9391
- /**
9392
- * Color Scheme
9393
- * @see https://tailwindcss.com/docs/color-scheme
9394
- */
9395
- 'color-scheme': [{
9396
- scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']
9397
- }],
9398
- /**
9399
- * Cursor
9400
- * @see https://tailwindcss.com/docs/cursor
9401
- */
9402
- cursor: [{
9403
- 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', isArbitraryVariable, isArbitraryValue]
9404
- }],
9405
- /**
9406
- * Field Sizing
9407
- * @see https://tailwindcss.com/docs/field-sizing
9408
- */
9409
- 'field-sizing': [{
9410
- 'field-sizing': ['fixed', 'content']
9411
- }],
9412
- /**
9413
- * Pointer Events
9414
- * @see https://tailwindcss.com/docs/pointer-events
9415
- */
9416
- 'pointer-events': [{
9417
- 'pointer-events': ['auto', 'none']
9418
- }],
9419
- /**
9420
- * Resize
9421
- * @see https://tailwindcss.com/docs/resize
9422
- */
9423
- resize: [{
9424
- resize: ['none', '', 'y', 'x']
9425
- }],
9426
- /**
9427
- * Scroll Behavior
9428
- * @see https://tailwindcss.com/docs/scroll-behavior
9429
- */
9430
- 'scroll-behavior': [{
9431
- scroll: ['auto', 'smooth']
9432
- }],
9433
- /**
9434
- * Scroll Margin
9435
- * @see https://tailwindcss.com/docs/scroll-margin
9436
- */
9437
- 'scroll-m': [{
9438
- 'scroll-m': scaleUnambiguousSpacing()
9439
- }],
9440
- /**
9441
- * Scroll Margin X
9442
- * @see https://tailwindcss.com/docs/scroll-margin
9443
- */
9444
- 'scroll-mx': [{
9445
- 'scroll-mx': scaleUnambiguousSpacing()
9446
- }],
9447
- /**
9448
- * Scroll Margin Y
9449
- * @see https://tailwindcss.com/docs/scroll-margin
9450
- */
9451
- 'scroll-my': [{
9452
- 'scroll-my': scaleUnambiguousSpacing()
9453
- }],
9454
- /**
9455
- * Scroll Margin Start
9456
- * @see https://tailwindcss.com/docs/scroll-margin
9457
- */
9458
- 'scroll-ms': [{
9459
- 'scroll-ms': scaleUnambiguousSpacing()
9460
- }],
9461
- /**
9462
- * Scroll Margin End
9463
- * @see https://tailwindcss.com/docs/scroll-margin
9464
- */
9465
- 'scroll-me': [{
9466
- 'scroll-me': scaleUnambiguousSpacing()
9467
- }],
9468
- /**
9469
- * Scroll Margin Top
9470
- * @see https://tailwindcss.com/docs/scroll-margin
9471
- */
9472
- 'scroll-mt': [{
9473
- 'scroll-mt': scaleUnambiguousSpacing()
9474
- }],
9475
- /**
9476
- * Scroll Margin Right
9477
- * @see https://tailwindcss.com/docs/scroll-margin
9478
- */
9479
- 'scroll-mr': [{
9480
- 'scroll-mr': scaleUnambiguousSpacing()
9481
- }],
9482
- /**
9483
- * Scroll Margin Bottom
9484
- * @see https://tailwindcss.com/docs/scroll-margin
9485
- */
9486
- 'scroll-mb': [{
9487
- 'scroll-mb': scaleUnambiguousSpacing()
9488
- }],
9489
- /**
9490
- * Scroll Margin Left
9491
- * @see https://tailwindcss.com/docs/scroll-margin
9492
- */
9493
- 'scroll-ml': [{
9494
- 'scroll-ml': scaleUnambiguousSpacing()
9495
- }],
9496
- /**
9497
- * Scroll Padding
9498
- * @see https://tailwindcss.com/docs/scroll-padding
9499
- */
9500
- 'scroll-p': [{
9501
- 'scroll-p': scaleUnambiguousSpacing()
9502
- }],
9503
- /**
9504
- * Scroll Padding X
9505
- * @see https://tailwindcss.com/docs/scroll-padding
9506
- */
9507
- 'scroll-px': [{
9508
- 'scroll-px': scaleUnambiguousSpacing()
9509
- }],
9510
- /**
9511
- * Scroll Padding Y
9512
- * @see https://tailwindcss.com/docs/scroll-padding
9513
- */
9514
- 'scroll-py': [{
9515
- 'scroll-py': scaleUnambiguousSpacing()
9516
- }],
9517
- /**
9518
- * Scroll Padding Start
9519
- * @see https://tailwindcss.com/docs/scroll-padding
9520
- */
9521
- 'scroll-ps': [{
9522
- 'scroll-ps': scaleUnambiguousSpacing()
9523
- }],
9524
- /**
9525
- * Scroll Padding End
9526
- * @see https://tailwindcss.com/docs/scroll-padding
9527
- */
9528
- 'scroll-pe': [{
9529
- 'scroll-pe': scaleUnambiguousSpacing()
9530
- }],
9531
- /**
9532
- * Scroll Padding Top
9533
- * @see https://tailwindcss.com/docs/scroll-padding
9534
- */
9535
- 'scroll-pt': [{
9536
- 'scroll-pt': scaleUnambiguousSpacing()
9537
- }],
9538
- /**
9539
- * Scroll Padding Right
9540
- * @see https://tailwindcss.com/docs/scroll-padding
9541
- */
9542
- 'scroll-pr': [{
9543
- 'scroll-pr': scaleUnambiguousSpacing()
9544
- }],
9545
- /**
9546
- * Scroll Padding Bottom
9547
- * @see https://tailwindcss.com/docs/scroll-padding
9548
- */
9549
- 'scroll-pb': [{
9550
- 'scroll-pb': scaleUnambiguousSpacing()
9551
- }],
9552
- /**
9553
- * Scroll Padding Left
9554
- * @see https://tailwindcss.com/docs/scroll-padding
9555
- */
9556
- 'scroll-pl': [{
9557
- 'scroll-pl': scaleUnambiguousSpacing()
9558
- }],
9559
- /**
9560
- * Scroll Snap Align
9561
- * @see https://tailwindcss.com/docs/scroll-snap-align
9562
- */
9563
- 'snap-align': [{
9564
- snap: ['start', 'end', 'center', 'align-none']
9565
- }],
9566
- /**
9567
- * Scroll Snap Stop
9568
- * @see https://tailwindcss.com/docs/scroll-snap-stop
9569
- */
9570
- 'snap-stop': [{
9571
- snap: ['normal', 'always']
9572
- }],
9573
- /**
9574
- * Scroll Snap Type
9575
- * @see https://tailwindcss.com/docs/scroll-snap-type
9576
- */
9577
- 'snap-type': [{
9578
- snap: ['none', 'x', 'y', 'both']
9579
- }],
9580
- /**
9581
- * Scroll Snap Type Strictness
9582
- * @see https://tailwindcss.com/docs/scroll-snap-type
9583
- */
9584
- 'snap-strictness': [{
9585
- snap: ['mandatory', 'proximity']
9586
- }],
9587
- /**
9588
- * Touch Action
9589
- * @see https://tailwindcss.com/docs/touch-action
9590
- */
9591
- touch: [{
9592
- touch: ['auto', 'none', 'manipulation']
9593
- }],
9594
- /**
9595
- * Touch Action X
9596
- * @see https://tailwindcss.com/docs/touch-action
9597
- */
9598
- 'touch-x': [{
9599
- 'touch-pan': ['x', 'left', 'right']
9600
- }],
9601
- /**
9602
- * Touch Action Y
9603
- * @see https://tailwindcss.com/docs/touch-action
9604
- */
9605
- 'touch-y': [{
9606
- 'touch-pan': ['y', 'up', 'down']
9607
- }],
9608
- /**
9609
- * Touch Action Pinch Zoom
9610
- * @see https://tailwindcss.com/docs/touch-action
9611
- */
9612
- 'touch-pz': ['touch-pinch-zoom'],
9613
- /**
9614
- * User Select
9615
- * @see https://tailwindcss.com/docs/user-select
9616
- */
9617
- select: [{
9618
- select: ['none', 'text', 'all', 'auto']
9619
- }],
9620
- /**
9621
- * Will Change
9622
- * @see https://tailwindcss.com/docs/will-change
9623
- */
9624
- 'will-change': [{
9625
- 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]
9626
- }],
9627
- // -----------
9628
- // --- SVG ---
9629
- // -----------
9630
- /**
9631
- * Fill
9632
- * @see https://tailwindcss.com/docs/fill
9633
- */
9634
- fill: [{
9635
- fill: ['none', ...scaleColor()]
9636
- }],
9637
- /**
9638
- * Stroke Width
9639
- * @see https://tailwindcss.com/docs/stroke-width
9640
- */
9641
- 'stroke-w': [{
9642
- stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]
9643
- }],
9644
- /**
9645
- * Stroke
9646
- * @see https://tailwindcss.com/docs/stroke
9647
- */
9648
- stroke: [{
9649
- stroke: ['none', ...scaleColor()]
9650
- }],
9651
- // ---------------------
9652
- // --- Accessibility ---
9653
- // ---------------------
9654
- /**
9655
- * Forced Color Adjust
9656
- * @see https://tailwindcss.com/docs/forced-color-adjust
9657
- */
9658
- 'forced-color-adjust': [{
9659
- 'forced-color-adjust': ['auto', 'none']
9660
- }]
9661
- },
9662
- conflictingClassGroups: {
9663
- overflow: ['overflow-x', 'overflow-y'],
9664
- overscroll: ['overscroll-x', 'overscroll-y'],
9665
- inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],
9666
- 'inset-x': ['right', 'left'],
9667
- 'inset-y': ['top', 'bottom'],
9668
- flex: ['basis', 'grow', 'shrink'],
9669
- gap: ['gap-x', 'gap-y'],
9670
- p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],
9671
- px: ['pr', 'pl'],
9672
- py: ['pt', 'pb'],
9673
- m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],
9674
- mx: ['mr', 'ml'],
9675
- my: ['mt', 'mb'],
9676
- size: ['w', 'h'],
9677
- 'font-size': ['leading'],
9678
- 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],
9679
- 'fvn-ordinal': ['fvn-normal'],
9680
- 'fvn-slashed-zero': ['fvn-normal'],
9681
- 'fvn-figure': ['fvn-normal'],
9682
- 'fvn-spacing': ['fvn-normal'],
9683
- 'fvn-fraction': ['fvn-normal'],
9684
- 'line-clamp': ['display', 'overflow'],
9685
- 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'],
9686
- 'rounded-s': ['rounded-ss', 'rounded-es'],
9687
- 'rounded-e': ['rounded-se', 'rounded-ee'],
9688
- 'rounded-t': ['rounded-tl', 'rounded-tr'],
9689
- 'rounded-r': ['rounded-tr', 'rounded-br'],
9690
- 'rounded-b': ['rounded-br', 'rounded-bl'],
9691
- 'rounded-l': ['rounded-tl', 'rounded-bl'],
9692
- 'border-spacing': ['border-spacing-x', 'border-spacing-y'],
9693
- 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],
9694
- 'border-w-x': ['border-w-r', 'border-w-l'],
9695
- 'border-w-y': ['border-w-t', 'border-w-b'],
9696
- 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],
9697
- 'border-color-x': ['border-color-r', 'border-color-l'],
9698
- 'border-color-y': ['border-color-t', 'border-color-b'],
9699
- translate: ['translate-x', 'translate-y', 'translate-none'],
9700
- 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],
9701
- 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],
9702
- 'scroll-mx': ['scroll-mr', 'scroll-ml'],
9703
- 'scroll-my': ['scroll-mt', 'scroll-mb'],
9704
- 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],
9705
- 'scroll-px': ['scroll-pr', 'scroll-pl'],
9706
- 'scroll-py': ['scroll-pt', 'scroll-pb'],
9707
- touch: ['touch-x', 'touch-y', 'touch-pz'],
9708
- 'touch-x': ['touch'],
9709
- 'touch-y': ['touch'],
9710
- 'touch-pz': ['touch']
9711
- },
9712
- conflictingClassGroupModifiers: {
9713
- 'font-size': ['leading']
9714
- },
9715
- orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']
9716
- };
9717
- };
9718
- const twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);
9719
-
9720
5094
  const SortableItem = ({
9721
5095
  id,
9722
5096
  children,
@@ -10337,7 +5711,6 @@ const Table = ({
10337
5711
  onSelect,
10338
5712
  onRowClick,
10339
5713
  rowKey = "id",
10340
- className,
10341
5714
  editable,
10342
5715
  onSave,
10343
5716
  titleSettingTableModal,
@@ -10347,10 +5720,80 @@ const Table = ({
10347
5720
  rightHeadingContent,
10348
5721
  status,
10349
5722
  schema,
10350
- breadCrumb,
5723
+ menu,
10351
5724
  initialValueForm,
10352
5725
  ...rest
10353
5726
  }) => {
5727
+ const location = useLocation();
5728
+ const pathUrl = location.pathname;
5729
+ let dataBreakcrum;
5730
+ for (const item of menu) {
5731
+ if (!item.subMenu) continue;
5732
+ for (const sub of item?.subMenu) {
5733
+ if (!sub.children) continue;
5734
+ for (const childrenSub of sub?.children) {
5735
+ const isItemActive = pathUrl === item.href;
5736
+ const isSubActive = pathUrl === sub.href;
5737
+ const isChildrenActive = pathUrl === childrenSub.href;
5738
+ if (isChildrenActive) {
5739
+ dataBreakcrum = {
5740
+ name: item.name,
5741
+ href: item.href,
5742
+ subMenu: {
5743
+ name: sub.name,
5744
+ href: sub.href,
5745
+ childrenSub: {
5746
+ name: childrenSub.name,
5747
+ href: childrenSub.href
5748
+ }
5749
+ }
5750
+ };
5751
+ break;
5752
+ }
5753
+ if (isSubActive) {
5754
+ dataBreakcrum = {
5755
+ name: item.name,
5756
+ href: item.href,
5757
+ subMenu: {
5758
+ name: sub.name,
5759
+ href: sub.href,
5760
+ childrenSub: null
5761
+ }
5762
+ };
5763
+ break;
5764
+ }
5765
+ if (isItemActive) {
5766
+ dataBreakcrum = {
5767
+ name: item.name,
5768
+ href: item.href,
5769
+ subMenu: null
5770
+ };
5771
+ break;
5772
+ }
5773
+ }
5774
+ if (dataBreakcrum) break;
5775
+ }
5776
+ if (dataBreakcrum) break;
5777
+ }
5778
+ const generateBreadcrumb = [];
5779
+ if (dataBreakcrum) {
5780
+ generateBreadcrumb.push({
5781
+ title: dataBreakcrum.name,
5782
+ href: dataBreakcrum.href
5783
+ });
5784
+ if (dataBreakcrum.subMenu) {
5785
+ generateBreadcrumb.push({
5786
+ title: dataBreakcrum.subMenu.name,
5787
+ href: dataBreakcrum.subMenu.href
5788
+ });
5789
+ if (dataBreakcrum.subMenu.childrenSub) {
5790
+ generateBreadcrumb.push({
5791
+ title: dataBreakcrum.subMenu.childrenSub.name,
5792
+ href: dataBreakcrum.subMenu.childrenSub.href
5793
+ });
5794
+ }
5795
+ }
5796
+ }
10354
5797
  //! State
10355
5798
  const paginationConfig = {
10356
5799
  current: filters.PageIndex,
@@ -10496,7 +5939,7 @@ const Table = ({
10496
5939
  renderHeadingSearch,
10497
5940
  setOpenStting,
10498
5941
  showSetting,
10499
- breadCrumb,
5942
+ breadCrumb: generateBreadcrumb,
10500
5943
  editable,
10501
5944
  initialValue: initialValueForm,
10502
5945
  setData
@@ -10519,7 +5962,6 @@ const Table = ({
10519
5962
  emptyText: /* @__PURE__ */ jsxRuntimeExports.jsx(EmptyTable, {})
10520
5963
  },
10521
5964
  rowClassName: (_, index) => `table-row-${index % 2 === 0 ? "even" : "odd"}`,
10522
- className: cx(tableCss, className),
10523
5965
  components: editable ? {
10524
5966
  body: { cell: EditableCell }
10525
5967
  } : void 0,
@@ -10550,56 +5992,6 @@ const Table = ({
10550
5992
  if (loading) return /* @__PURE__ */ jsxRuntimeExports.jsx(Skeleton, { type: "table" });
10551
5993
  return renderTableContent();
10552
5994
  };
10553
- const tableCss = css`
10554
- .ant-table-cell::before {
10555
- display: none !important;
10556
- }
10557
- .ant-table-thead .ant-table-cell {
10558
- background-color: #d6e6fe;
10559
- font-weight: 500;
10560
- border-start-start-radius: 0 !important;
10561
- border-start-end-radius: 0 !important;
10562
- }
10563
-
10564
- .ant-table-thead th.ant-table-column-has-sorters:hover {
10565
- background-color: #d6e6fe;
10566
- }
10567
-
10568
- .ant-table-row.table-row-even {
10569
- background-color: #f7f7f8;
10570
- }
10571
-
10572
- .ant-table-row.table-row-odd {
10573
- background-color: #ffffff;
10574
- }
10575
- .ant-table-row:hover {
10576
- background-color: #e7f0ff;
10577
- }
10578
-
10579
- .ant-table-body {
10580
- scrollbar-width: auto;
10581
- scrollbar-color: auto;
10582
- }
10583
-
10584
- // custom scrollbar
10585
- .ant-table-body::-webkit-scrollbar {
10586
- width: 8px;
10587
- }
10588
-
10589
- .ant-table-body::-webkit-scrollbar-track {
10590
- background-color: #e1e6e6;
10591
- }
10592
-
10593
- .ant-table-body::-webkit-scrollbar-thumb {
10594
- border-radius: 6px;
10595
- background-color: #a8caff;
10596
- }
10597
-
10598
- .ant-table-body::-webkit-scrollbar-thumb:hover {
10599
- border-radius: 6px;
10600
- background-color: #598cf4;
10601
- }
10602
- `;
10603
5995
 
10604
5996
  const createStoreImpl = (createState) => {
10605
5997
  let state;
@@ -16829,6 +12221,15 @@ const SvgIconSearch = () => /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { xmlns
16829
12221
  }
16830
12222
  ) });
16831
12223
 
12224
+ function useDebounce(value, delay) {
12225
+ const [debouncedValue, setDebouncedValue] = useState(value);
12226
+ useEffect(() => {
12227
+ const handler = setTimeout(() => setDebouncedValue(value), delay);
12228
+ return () => clearTimeout(handler);
12229
+ }, [value, delay]);
12230
+ return debouncedValue;
12231
+ }
12232
+
16832
12233
  const userInfo = {
16833
12234
  avatar: "https://img.freepik.com/premium-vector/character-avatar-isolated_729149-194801.jpg?semt=ais_hybrid&w=740",
16834
12235
  name: "username",
@@ -16915,13 +12316,16 @@ const Sidebar = ({ children, menu }) => {
16915
12316
  const [openSubmenu, setOpenSubmenu] = useState(null);
16916
12317
  const [collapse, setCollapse] = useState(false);
16917
12318
  const [openSubCollapse, setOpenSubCollapse] = useState(false);
12319
+ const [valueSearch, setValueSearch] = useState("");
12320
+ const [newMenu, setNewMenu] = useState(menu);
12321
+ const searchSidebar = useDebounce(valueSearch, 300);
16918
12322
  const toast = useToast({
16919
12323
  message: "Thông báo",
16920
12324
  description: "Tính năng đang được phát triển"
16921
12325
  });
16922
12326
  const activeMenu = useMemo$1(
16923
12327
  () => menu.find(
16924
- (item) => item.subMenu.map(
12328
+ (item) => item?.subMenu?.map(
16925
12329
  (sub) => sub.href === activeMainMenu || sub.href === pathUrl
16926
12330
  )
16927
12331
  ),
@@ -16934,20 +12338,12 @@ const Sidebar = ({ children, menu }) => {
16934
12338
  const handleOpenSubmenu = (itemName) => {
16935
12339
  setOpenSubmenu((prev) => prev === itemName ? null : itemName);
16936
12340
  };
16937
- console.log("activeMenu", activeMenu);
16938
- const [valueSearch, setValueSearch] = useState("");
16939
- const [newMenu, setNewMenu] = useState(menu);
16940
12341
  useEffect(() => {
16941
- const handleFilterMenu = menu.flatMap((item) => {
16942
- return item.name.toLowerCase().startsWith(valueSearch.toLowerCase()) ? item : "";
16943
- });
16944
- console.log("handleFilterMenu", handleFilterMenu);
16945
- const dataMenu = handleFilterMenu.filter(
16946
- (item) => item.name
12342
+ const filteredMenu = menu.filter(
12343
+ (item) => item.name.toLowerCase().startsWith(searchSidebar.toLowerCase())
16947
12344
  );
16948
- console.log("dataMenu", dataMenu);
16949
- setNewMenu(dataMenu);
16950
- }, [menu, valueSearch]);
12345
+ setNewMenu(filteredMenu);
12346
+ }, [menu, searchSidebar]);
16951
12347
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex relative h-screen", children: [
16952
12348
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
16953
12349
  "div",
@@ -17146,7 +12542,7 @@ const Sidebar = ({ children, menu }) => {
17146
12542
  className: twMerge(
17147
12543
  "-mx-2 space-y-1 cursor-pointer mt-4 ml-[3rem]"
17148
12544
  ),
17149
- children: activeMenu.subMenu.map((sub) => /* @__PURE__ */ jsxRuntimeExports.jsxs("li", { children: [
12545
+ children: activeMenu?.subMenu?.map((sub) => /* @__PURE__ */ jsxRuntimeExports.jsxs("li", { children: [
17150
12546
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
17151
12547
  "a",
17152
12548
  {