banhaten-ui 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es.js CHANGED
@@ -1,7 +1,4196 @@
1
- // index.js
2
- var hello = function () {
3
- console.log('Hello from my-package!');
1
+ import * as React from 'react';
2
+ import React__default, { forwardRef, createElement } from 'react';
3
+
4
+ /******************************************************************************
5
+ Copyright (c) Microsoft Corporation.
6
+
7
+ Permission to use, copy, modify, and/or distribute this software for any
8
+ purpose with or without fee is hereby granted.
9
+
10
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
11
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
12
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
13
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
14
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
15
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16
+ PERFORMANCE OF THIS SOFTWARE.
17
+ ***************************************************************************** */
18
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
19
+
20
+
21
+ var __assign = function() {
22
+ __assign = Object.assign || function __assign(t) {
23
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
24
+ s = arguments[i];
25
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
26
+ }
27
+ return t;
28
+ };
29
+ return __assign.apply(this, arguments);
30
+ };
31
+
32
+ function __rest(s, e) {
33
+ var t = {};
34
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
35
+ t[p] = s[p];
36
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
37
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
38
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
39
+ t[p[i]] = s[p[i]];
40
+ }
41
+ return t;
42
+ }
43
+
44
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
45
+ var e = new Error(message);
46
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
47
+ };
48
+
49
+ var jsxRuntime = {exports: {}};
50
+
51
+ var reactJsxRuntime_production_min = {};
52
+
53
+ /**
54
+ * @license React
55
+ * react-jsx-runtime.production.min.js
56
+ *
57
+ * Copyright (c) Facebook, Inc. and its affiliates.
58
+ *
59
+ * This source code is licensed under the MIT license found in the
60
+ * LICENSE file in the root directory of this source tree.
61
+ */
62
+
63
+ var hasRequiredReactJsxRuntime_production_min;
64
+
65
+ function requireReactJsxRuntime_production_min () {
66
+ if (hasRequiredReactJsxRuntime_production_min) return reactJsxRuntime_production_min;
67
+ hasRequiredReactJsxRuntime_production_min = 1;
68
+ var f=React__default,k=Symbol.for("react.element"),l=Symbol.for("react.fragment"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};
69
+ function q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=""+g);void 0!==a.key&&(e=""+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return {$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}reactJsxRuntime_production_min.Fragment=l;reactJsxRuntime_production_min.jsx=q;reactJsxRuntime_production_min.jsxs=q;
70
+ return reactJsxRuntime_production_min;
71
+ }
72
+
73
+ var reactJsxRuntime_development = {};
74
+
75
+ /**
76
+ * @license React
77
+ * react-jsx-runtime.development.js
78
+ *
79
+ * Copyright (c) Facebook, Inc. and its affiliates.
80
+ *
81
+ * This source code is licensed under the MIT license found in the
82
+ * LICENSE file in the root directory of this source tree.
83
+ */
84
+
85
+ var hasRequiredReactJsxRuntime_development;
86
+
87
+ function requireReactJsxRuntime_development () {
88
+ if (hasRequiredReactJsxRuntime_development) return reactJsxRuntime_development;
89
+ hasRequiredReactJsxRuntime_development = 1;
90
+
91
+ if (process.env.NODE_ENV !== "production") {
92
+ (function() {
93
+
94
+ var React = React__default;
95
+
96
+ // ATTENTION
97
+ // When adding new symbols to this file,
98
+ // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
99
+ // The Symbol used to tag the ReactElement-like types.
100
+ var REACT_ELEMENT_TYPE = Symbol.for('react.element');
101
+ var REACT_PORTAL_TYPE = Symbol.for('react.portal');
102
+ var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');
103
+ var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');
104
+ var REACT_PROFILER_TYPE = Symbol.for('react.profiler');
105
+ var REACT_PROVIDER_TYPE = Symbol.for('react.provider');
106
+ var REACT_CONTEXT_TYPE = Symbol.for('react.context');
107
+ var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');
108
+ var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');
109
+ var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');
110
+ var REACT_MEMO_TYPE = Symbol.for('react.memo');
111
+ var REACT_LAZY_TYPE = Symbol.for('react.lazy');
112
+ var REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');
113
+ var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
114
+ var FAUX_ITERATOR_SYMBOL = '@@iterator';
115
+ function getIteratorFn(maybeIterable) {
116
+ if (maybeIterable === null || typeof maybeIterable !== 'object') {
117
+ return null;
118
+ }
119
+
120
+ var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
121
+
122
+ if (typeof maybeIterator === 'function') {
123
+ return maybeIterator;
124
+ }
125
+
126
+ return null;
127
+ }
128
+
129
+ var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
130
+
131
+ function error(format) {
132
+ {
133
+ {
134
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
135
+ args[_key2 - 1] = arguments[_key2];
136
+ }
137
+
138
+ printWarning('error', format, args);
139
+ }
140
+ }
141
+ }
142
+
143
+ function printWarning(level, format, args) {
144
+ // When changing this logic, you might want to also
145
+ // update consoleWithStackDev.www.js as well.
146
+ {
147
+ var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
148
+ var stack = ReactDebugCurrentFrame.getStackAddendum();
149
+
150
+ if (stack !== '') {
151
+ format += '%s';
152
+ args = args.concat([stack]);
153
+ } // eslint-disable-next-line react-internal/safe-string-coercion
154
+
155
+
156
+ var argsWithFormat = args.map(function (item) {
157
+ return String(item);
158
+ }); // Careful: RN currently depends on this prefix
159
+
160
+ argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it
161
+ // breaks IE9: https://github.com/facebook/react/issues/13610
162
+ // eslint-disable-next-line react-internal/no-production-logging
163
+
164
+ Function.prototype.apply.call(console[level], console, argsWithFormat);
165
+ }
166
+ }
167
+
168
+ // -----------------------------------------------------------------------------
169
+
170
+ var enableScopeAPI = false; // Experimental Create Event Handle API.
171
+ var enableCacheElement = false;
172
+ var enableTransitionTracing = false; // No known bugs, but needs performance testing
173
+
174
+ var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber
175
+ // stuff. Intended to enable React core members to more easily debug scheduling
176
+ // issues in DEV builds.
177
+
178
+ var enableDebugTracing = false; // Track which Fiber(s) schedule render work.
179
+
180
+ var REACT_MODULE_REFERENCE;
181
+
182
+ {
183
+ REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');
184
+ }
185
+
186
+ function isValidElementType(type) {
187
+ if (typeof type === 'string' || typeof type === 'function') {
188
+ return true;
189
+ } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).
190
+
191
+
192
+ if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {
193
+ return true;
194
+ }
195
+
196
+ if (typeof type === 'object' && type !== null) {
197
+ if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object
198
+ // types supported by any Flight configuration anywhere since
199
+ // we don't know which Flight build this will end up being used
200
+ // with.
201
+ type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {
202
+ return true;
203
+ }
204
+ }
205
+
206
+ return false;
207
+ }
208
+
209
+ function getWrappedName(outerType, innerType, wrapperName) {
210
+ var displayName = outerType.displayName;
211
+
212
+ if (displayName) {
213
+ return displayName;
214
+ }
215
+
216
+ var functionName = innerType.displayName || innerType.name || '';
217
+ return functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName;
218
+ } // Keep in sync with react-reconciler/getComponentNameFromFiber
219
+
220
+
221
+ function getContextName(type) {
222
+ return type.displayName || 'Context';
223
+ } // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.
224
+
225
+
226
+ function getComponentNameFromType(type) {
227
+ if (type == null) {
228
+ // Host root, text node or just invalid type.
229
+ return null;
230
+ }
231
+
232
+ {
233
+ if (typeof type.tag === 'number') {
234
+ error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');
235
+ }
236
+ }
237
+
238
+ if (typeof type === 'function') {
239
+ return type.displayName || type.name || null;
240
+ }
241
+
242
+ if (typeof type === 'string') {
243
+ return type;
244
+ }
245
+
246
+ switch (type) {
247
+ case REACT_FRAGMENT_TYPE:
248
+ return 'Fragment';
249
+
250
+ case REACT_PORTAL_TYPE:
251
+ return 'Portal';
252
+
253
+ case REACT_PROFILER_TYPE:
254
+ return 'Profiler';
255
+
256
+ case REACT_STRICT_MODE_TYPE:
257
+ return 'StrictMode';
258
+
259
+ case REACT_SUSPENSE_TYPE:
260
+ return 'Suspense';
261
+
262
+ case REACT_SUSPENSE_LIST_TYPE:
263
+ return 'SuspenseList';
264
+
265
+ }
266
+
267
+ if (typeof type === 'object') {
268
+ switch (type.$$typeof) {
269
+ case REACT_CONTEXT_TYPE:
270
+ var context = type;
271
+ return getContextName(context) + '.Consumer';
272
+
273
+ case REACT_PROVIDER_TYPE:
274
+ var provider = type;
275
+ return getContextName(provider._context) + '.Provider';
276
+
277
+ case REACT_FORWARD_REF_TYPE:
278
+ return getWrappedName(type, type.render, 'ForwardRef');
279
+
280
+ case REACT_MEMO_TYPE:
281
+ var outerName = type.displayName || null;
282
+
283
+ if (outerName !== null) {
284
+ return outerName;
285
+ }
286
+
287
+ return getComponentNameFromType(type.type) || 'Memo';
288
+
289
+ case REACT_LAZY_TYPE:
290
+ {
291
+ var lazyComponent = type;
292
+ var payload = lazyComponent._payload;
293
+ var init = lazyComponent._init;
294
+
295
+ try {
296
+ return getComponentNameFromType(init(payload));
297
+ } catch (x) {
298
+ return null;
299
+ }
300
+ }
301
+
302
+ // eslint-disable-next-line no-fallthrough
303
+ }
304
+ }
305
+
306
+ return null;
307
+ }
308
+
309
+ var assign = Object.assign;
310
+
311
+ // Helpers to patch console.logs to avoid logging during side-effect free
312
+ // replaying on render function. This currently only patches the object
313
+ // lazily which won't cover if the log function was extracted eagerly.
314
+ // We could also eagerly patch the method.
315
+ var disabledDepth = 0;
316
+ var prevLog;
317
+ var prevInfo;
318
+ var prevWarn;
319
+ var prevError;
320
+ var prevGroup;
321
+ var prevGroupCollapsed;
322
+ var prevGroupEnd;
323
+
324
+ function disabledLog() {}
325
+
326
+ disabledLog.__reactDisabledLog = true;
327
+ function disableLogs() {
328
+ {
329
+ if (disabledDepth === 0) {
330
+ /* eslint-disable react-internal/no-production-logging */
331
+ prevLog = console.log;
332
+ prevInfo = console.info;
333
+ prevWarn = console.warn;
334
+ prevError = console.error;
335
+ prevGroup = console.group;
336
+ prevGroupCollapsed = console.groupCollapsed;
337
+ prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099
338
+
339
+ var props = {
340
+ configurable: true,
341
+ enumerable: true,
342
+ value: disabledLog,
343
+ writable: true
344
+ }; // $FlowFixMe Flow thinks console is immutable.
345
+
346
+ Object.defineProperties(console, {
347
+ info: props,
348
+ log: props,
349
+ warn: props,
350
+ error: props,
351
+ group: props,
352
+ groupCollapsed: props,
353
+ groupEnd: props
354
+ });
355
+ /* eslint-enable react-internal/no-production-logging */
356
+ }
357
+
358
+ disabledDepth++;
359
+ }
360
+ }
361
+ function reenableLogs() {
362
+ {
363
+ disabledDepth--;
364
+
365
+ if (disabledDepth === 0) {
366
+ /* eslint-disable react-internal/no-production-logging */
367
+ var props = {
368
+ configurable: true,
369
+ enumerable: true,
370
+ writable: true
371
+ }; // $FlowFixMe Flow thinks console is immutable.
372
+
373
+ Object.defineProperties(console, {
374
+ log: assign({}, props, {
375
+ value: prevLog
376
+ }),
377
+ info: assign({}, props, {
378
+ value: prevInfo
379
+ }),
380
+ warn: assign({}, props, {
381
+ value: prevWarn
382
+ }),
383
+ error: assign({}, props, {
384
+ value: prevError
385
+ }),
386
+ group: assign({}, props, {
387
+ value: prevGroup
388
+ }),
389
+ groupCollapsed: assign({}, props, {
390
+ value: prevGroupCollapsed
391
+ }),
392
+ groupEnd: assign({}, props, {
393
+ value: prevGroupEnd
394
+ })
395
+ });
396
+ /* eslint-enable react-internal/no-production-logging */
397
+ }
398
+
399
+ if (disabledDepth < 0) {
400
+ error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');
401
+ }
402
+ }
403
+ }
404
+
405
+ var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;
406
+ var prefix;
407
+ function describeBuiltInComponentFrame(name, source, ownerFn) {
408
+ {
409
+ if (prefix === undefined) {
410
+ // Extract the VM specific prefix used by each line.
411
+ try {
412
+ throw Error();
413
+ } catch (x) {
414
+ var match = x.stack.trim().match(/\n( *(at )?)/);
415
+ prefix = match && match[1] || '';
416
+ }
417
+ } // We use the prefix to ensure our stacks line up with native stack frames.
418
+
419
+
420
+ return '\n' + prefix + name;
421
+ }
422
+ }
423
+ var reentry = false;
424
+ var componentFrameCache;
425
+
426
+ {
427
+ var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;
428
+ componentFrameCache = new PossiblyWeakMap();
429
+ }
430
+
431
+ function describeNativeComponentFrame(fn, construct) {
432
+ // If something asked for a stack inside a fake render, it should get ignored.
433
+ if ( !fn || reentry) {
434
+ return '';
435
+ }
436
+
437
+ {
438
+ var frame = componentFrameCache.get(fn);
439
+
440
+ if (frame !== undefined) {
441
+ return frame;
442
+ }
443
+ }
444
+
445
+ var control;
446
+ reentry = true;
447
+ var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.
448
+
449
+ Error.prepareStackTrace = undefined;
450
+ var previousDispatcher;
451
+
452
+ {
453
+ previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function
454
+ // for warnings.
455
+
456
+ ReactCurrentDispatcher.current = null;
457
+ disableLogs();
458
+ }
459
+
460
+ try {
461
+ // This should throw.
462
+ if (construct) {
463
+ // Something should be setting the props in the constructor.
464
+ var Fake = function () {
465
+ throw Error();
466
+ }; // $FlowFixMe
467
+
468
+
469
+ Object.defineProperty(Fake.prototype, 'props', {
470
+ set: function () {
471
+ // We use a throwing setter instead of frozen or non-writable props
472
+ // because that won't throw in a non-strict mode function.
473
+ throw Error();
474
+ }
475
+ });
476
+
477
+ if (typeof Reflect === 'object' && Reflect.construct) {
478
+ // We construct a different control for this case to include any extra
479
+ // frames added by the construct call.
480
+ try {
481
+ Reflect.construct(Fake, []);
482
+ } catch (x) {
483
+ control = x;
484
+ }
485
+
486
+ Reflect.construct(fn, [], Fake);
487
+ } else {
488
+ try {
489
+ Fake.call();
490
+ } catch (x) {
491
+ control = x;
492
+ }
493
+
494
+ fn.call(Fake.prototype);
495
+ }
496
+ } else {
497
+ try {
498
+ throw Error();
499
+ } catch (x) {
500
+ control = x;
501
+ }
502
+
503
+ fn();
504
+ }
505
+ } catch (sample) {
506
+ // This is inlined manually because closure doesn't do it for us.
507
+ if (sample && control && typeof sample.stack === 'string') {
508
+ // This extracts the first frame from the sample that isn't also in the control.
509
+ // Skipping one frame that we assume is the frame that calls the two.
510
+ var sampleLines = sample.stack.split('\n');
511
+ var controlLines = control.stack.split('\n');
512
+ var s = sampleLines.length - 1;
513
+ var c = controlLines.length - 1;
514
+
515
+ while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {
516
+ // We expect at least one stack frame to be shared.
517
+ // Typically this will be the root most one. However, stack frames may be
518
+ // cut off due to maximum stack limits. In this case, one maybe cut off
519
+ // earlier than the other. We assume that the sample is longer or the same
520
+ // and there for cut off earlier. So we should find the root most frame in
521
+ // the sample somewhere in the control.
522
+ c--;
523
+ }
524
+
525
+ for (; s >= 1 && c >= 0; s--, c--) {
526
+ // Next we find the first one that isn't the same which should be the
527
+ // frame that called our sample function and the control.
528
+ if (sampleLines[s] !== controlLines[c]) {
529
+ // In V8, the first line is describing the message but other VMs don't.
530
+ // If we're about to return the first line, and the control is also on the same
531
+ // line, that's a pretty good indicator that our sample threw at same line as
532
+ // the control. I.e. before we entered the sample frame. So we ignore this result.
533
+ // This can happen if you passed a class to function component, or non-function.
534
+ if (s !== 1 || c !== 1) {
535
+ do {
536
+ s--;
537
+ c--; // We may still have similar intermediate frames from the construct call.
538
+ // The next one that isn't the same should be our match though.
539
+
540
+ if (c < 0 || sampleLines[s] !== controlLines[c]) {
541
+ // V8 adds a "new" prefix for native classes. Let's remove it to make it prettier.
542
+ var _frame = '\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled "<anonymous>"
543
+ // but we have a user-provided "displayName"
544
+ // splice it in to make the stack more readable.
545
+
546
+
547
+ if (fn.displayName && _frame.includes('<anonymous>')) {
548
+ _frame = _frame.replace('<anonymous>', fn.displayName);
549
+ }
550
+
551
+ {
552
+ if (typeof fn === 'function') {
553
+ componentFrameCache.set(fn, _frame);
554
+ }
555
+ } // Return the line we found.
556
+
557
+
558
+ return _frame;
559
+ }
560
+ } while (s >= 1 && c >= 0);
561
+ }
562
+
563
+ break;
564
+ }
565
+ }
566
+ }
567
+ } finally {
568
+ reentry = false;
569
+
570
+ {
571
+ ReactCurrentDispatcher.current = previousDispatcher;
572
+ reenableLogs();
573
+ }
574
+
575
+ Error.prepareStackTrace = previousPrepareStackTrace;
576
+ } // Fallback to just using the name if we couldn't make it throw.
577
+
578
+
579
+ var name = fn ? fn.displayName || fn.name : '';
580
+ var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';
581
+
582
+ {
583
+ if (typeof fn === 'function') {
584
+ componentFrameCache.set(fn, syntheticFrame);
585
+ }
586
+ }
587
+
588
+ return syntheticFrame;
589
+ }
590
+ function describeFunctionComponentFrame(fn, source, ownerFn) {
591
+ {
592
+ return describeNativeComponentFrame(fn, false);
593
+ }
594
+ }
595
+
596
+ function shouldConstruct(Component) {
597
+ var prototype = Component.prototype;
598
+ return !!(prototype && prototype.isReactComponent);
599
+ }
600
+
601
+ function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {
602
+
603
+ if (type == null) {
604
+ return '';
605
+ }
606
+
607
+ if (typeof type === 'function') {
608
+ {
609
+ return describeNativeComponentFrame(type, shouldConstruct(type));
610
+ }
611
+ }
612
+
613
+ if (typeof type === 'string') {
614
+ return describeBuiltInComponentFrame(type);
615
+ }
616
+
617
+ switch (type) {
618
+ case REACT_SUSPENSE_TYPE:
619
+ return describeBuiltInComponentFrame('Suspense');
620
+
621
+ case REACT_SUSPENSE_LIST_TYPE:
622
+ return describeBuiltInComponentFrame('SuspenseList');
623
+ }
624
+
625
+ if (typeof type === 'object') {
626
+ switch (type.$$typeof) {
627
+ case REACT_FORWARD_REF_TYPE:
628
+ return describeFunctionComponentFrame(type.render);
629
+
630
+ case REACT_MEMO_TYPE:
631
+ // Memo may contain any component type so we recursively resolve it.
632
+ return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);
633
+
634
+ case REACT_LAZY_TYPE:
635
+ {
636
+ var lazyComponent = type;
637
+ var payload = lazyComponent._payload;
638
+ var init = lazyComponent._init;
639
+
640
+ try {
641
+ // Lazy may contain any component type so we recursively resolve it.
642
+ return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);
643
+ } catch (x) {}
644
+ }
645
+ }
646
+ }
647
+
648
+ return '';
649
+ }
650
+
651
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
652
+
653
+ var loggedTypeFailures = {};
654
+ var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
655
+
656
+ function setCurrentlyValidatingElement(element) {
657
+ {
658
+ if (element) {
659
+ var owner = element._owner;
660
+ var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
661
+ ReactDebugCurrentFrame.setExtraStackFrame(stack);
662
+ } else {
663
+ ReactDebugCurrentFrame.setExtraStackFrame(null);
664
+ }
665
+ }
666
+ }
667
+
668
+ function checkPropTypes(typeSpecs, values, location, componentName, element) {
669
+ {
670
+ // $FlowFixMe This is okay but Flow doesn't know it.
671
+ var has = Function.call.bind(hasOwnProperty);
672
+
673
+ for (var typeSpecName in typeSpecs) {
674
+ if (has(typeSpecs, typeSpecName)) {
675
+ var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to
676
+ // fail the render phase where it didn't fail before. So we log it.
677
+ // After these have been cleaned up, we'll let them throw.
678
+
679
+ try {
680
+ // This is intentionally an invariant that gets caught. It's the same
681
+ // behavior as without this statement except with a better message.
682
+ if (typeof typeSpecs[typeSpecName] !== 'function') {
683
+ // eslint-disable-next-line react-internal/prod-error-codes
684
+ var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');
685
+ err.name = 'Invariant Violation';
686
+ throw err;
687
+ }
688
+
689
+ error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');
690
+ } catch (ex) {
691
+ error$1 = ex;
692
+ }
693
+
694
+ if (error$1 && !(error$1 instanceof Error)) {
695
+ setCurrentlyValidatingElement(element);
696
+
697
+ error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);
698
+
699
+ setCurrentlyValidatingElement(null);
700
+ }
701
+
702
+ if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {
703
+ // Only monitor this failure once because there tends to be a lot of the
704
+ // same error.
705
+ loggedTypeFailures[error$1.message] = true;
706
+ setCurrentlyValidatingElement(element);
707
+
708
+ error('Failed %s type: %s', location, error$1.message);
709
+
710
+ setCurrentlyValidatingElement(null);
711
+ }
712
+ }
713
+ }
714
+ }
715
+ }
716
+
717
+ var isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare
718
+
719
+ function isArray(a) {
720
+ return isArrayImpl(a);
721
+ }
722
+
723
+ /*
724
+ * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol
725
+ * and Temporal.* types. See https://github.com/facebook/react/pull/22064.
726
+ *
727
+ * The functions in this module will throw an easier-to-understand,
728
+ * easier-to-debug exception with a clear errors message message explaining the
729
+ * problem. (Instead of a confusing exception thrown inside the implementation
730
+ * of the `value` object).
731
+ */
732
+ // $FlowFixMe only called in DEV, so void return is not possible.
733
+ function typeName(value) {
734
+ {
735
+ // toStringTag is needed for namespaced types like Temporal.Instant
736
+ var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;
737
+ var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';
738
+ return type;
739
+ }
740
+ } // $FlowFixMe only called in DEV, so void return is not possible.
741
+
742
+
743
+ function willCoercionThrow(value) {
744
+ {
745
+ try {
746
+ testStringCoercion(value);
747
+ return false;
748
+ } catch (e) {
749
+ return true;
750
+ }
751
+ }
752
+ }
753
+
754
+ function testStringCoercion(value) {
755
+ // If you ended up here by following an exception call stack, here's what's
756
+ // happened: you supplied an object or symbol value to React (as a prop, key,
757
+ // DOM attribute, CSS property, string ref, etc.) and when React tried to
758
+ // coerce it to a string using `'' + value`, an exception was thrown.
759
+ //
760
+ // The most common types that will cause this exception are `Symbol` instances
761
+ // and Temporal objects like `Temporal.Instant`. But any object that has a
762
+ // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this
763
+ // exception. (Library authors do this to prevent users from using built-in
764
+ // numeric operators like `+` or comparison operators like `>=` because custom
765
+ // methods are needed to perform accurate arithmetic or comparison.)
766
+ //
767
+ // To fix the problem, coerce this object or symbol value to a string before
768
+ // passing it to React. The most reliable way is usually `String(value)`.
769
+ //
770
+ // To find which value is throwing, check the browser or debugger console.
771
+ // Before this exception was thrown, there should be `console.error` output
772
+ // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the
773
+ // problem and how that type was used: key, atrribute, input value prop, etc.
774
+ // In most cases, this console output also shows the component and its
775
+ // ancestor components where the exception happened.
776
+ //
777
+ // eslint-disable-next-line react-internal/safe-string-coercion
778
+ return '' + value;
779
+ }
780
+ function checkKeyStringCoercion(value) {
781
+ {
782
+ if (willCoercionThrow(value)) {
783
+ error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));
784
+
785
+ return testStringCoercion(value); // throw (to help callers find troubleshooting comments)
786
+ }
787
+ }
788
+ }
789
+
790
+ var ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;
791
+ var RESERVED_PROPS = {
792
+ key: true,
793
+ ref: true,
794
+ __self: true,
795
+ __source: true
796
+ };
797
+ var specialPropKeyWarningShown;
798
+ var specialPropRefWarningShown;
799
+ var didWarnAboutStringRefs;
800
+
801
+ {
802
+ didWarnAboutStringRefs = {};
803
+ }
804
+
805
+ function hasValidRef(config) {
806
+ {
807
+ if (hasOwnProperty.call(config, 'ref')) {
808
+ var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;
809
+
810
+ if (getter && getter.isReactWarning) {
811
+ return false;
812
+ }
813
+ }
814
+ }
815
+
816
+ return config.ref !== undefined;
817
+ }
818
+
819
+ function hasValidKey(config) {
820
+ {
821
+ if (hasOwnProperty.call(config, 'key')) {
822
+ var getter = Object.getOwnPropertyDescriptor(config, 'key').get;
823
+
824
+ if (getter && getter.isReactWarning) {
825
+ return false;
826
+ }
827
+ }
828
+ }
829
+
830
+ return config.key !== undefined;
831
+ }
832
+
833
+ function warnIfStringRefCannotBeAutoConverted(config, self) {
834
+ {
835
+ if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {
836
+ var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);
837
+
838
+ if (!didWarnAboutStringRefs[componentName]) {
839
+ error('Component "%s" contains the string ref "%s". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);
840
+
841
+ didWarnAboutStringRefs[componentName] = true;
842
+ }
843
+ }
844
+ }
845
+ }
846
+
847
+ function defineKeyPropWarningGetter(props, displayName) {
848
+ {
849
+ var warnAboutAccessingKey = function () {
850
+ if (!specialPropKeyWarningShown) {
851
+ specialPropKeyWarningShown = true;
852
+
853
+ error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);
854
+ }
855
+ };
856
+
857
+ warnAboutAccessingKey.isReactWarning = true;
858
+ Object.defineProperty(props, 'key', {
859
+ get: warnAboutAccessingKey,
860
+ configurable: true
861
+ });
862
+ }
863
+ }
864
+
865
+ function defineRefPropWarningGetter(props, displayName) {
866
+ {
867
+ var warnAboutAccessingRef = function () {
868
+ if (!specialPropRefWarningShown) {
869
+ specialPropRefWarningShown = true;
870
+
871
+ error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);
872
+ }
873
+ };
874
+
875
+ warnAboutAccessingRef.isReactWarning = true;
876
+ Object.defineProperty(props, 'ref', {
877
+ get: warnAboutAccessingRef,
878
+ configurable: true
879
+ });
880
+ }
881
+ }
882
+ /**
883
+ * Factory method to create a new React element. This no longer adheres to
884
+ * the class pattern, so do not use new to call it. Also, instanceof check
885
+ * will not work. Instead test $$typeof field against Symbol.for('react.element') to check
886
+ * if something is a React Element.
887
+ *
888
+ * @param {*} type
889
+ * @param {*} props
890
+ * @param {*} key
891
+ * @param {string|object} ref
892
+ * @param {*} owner
893
+ * @param {*} self A *temporary* helper to detect places where `this` is
894
+ * different from the `owner` when React.createElement is called, so that we
895
+ * can warn. We want to get rid of owner and replace string `ref`s with arrow
896
+ * functions, and as long as `this` and owner are the same, there will be no
897
+ * change in behavior.
898
+ * @param {*} source An annotation object (added by a transpiler or otherwise)
899
+ * indicating filename, line number, and/or other information.
900
+ * @internal
901
+ */
902
+
903
+
904
+ var ReactElement = function (type, key, ref, self, source, owner, props) {
905
+ var element = {
906
+ // This tag allows us to uniquely identify this as a React Element
907
+ $$typeof: REACT_ELEMENT_TYPE,
908
+ // Built-in properties that belong on the element
909
+ type: type,
910
+ key: key,
911
+ ref: ref,
912
+ props: props,
913
+ // Record the component responsible for creating this element.
914
+ _owner: owner
915
+ };
916
+
917
+ {
918
+ // The validation flag is currently mutative. We put it on
919
+ // an external backing store so that we can freeze the whole object.
920
+ // This can be replaced with a WeakMap once they are implemented in
921
+ // commonly used development environments.
922
+ element._store = {}; // To make comparing ReactElements easier for testing purposes, we make
923
+ // the validation flag non-enumerable (where possible, which should
924
+ // include every environment we run tests in), so the test framework
925
+ // ignores it.
926
+
927
+ Object.defineProperty(element._store, 'validated', {
928
+ configurable: false,
929
+ enumerable: false,
930
+ writable: true,
931
+ value: false
932
+ }); // self and source are DEV only properties.
933
+
934
+ Object.defineProperty(element, '_self', {
935
+ configurable: false,
936
+ enumerable: false,
937
+ writable: false,
938
+ value: self
939
+ }); // Two elements created in two different places should be considered
940
+ // equal for testing purposes and therefore we hide it from enumeration.
941
+
942
+ Object.defineProperty(element, '_source', {
943
+ configurable: false,
944
+ enumerable: false,
945
+ writable: false,
946
+ value: source
947
+ });
948
+
949
+ if (Object.freeze) {
950
+ Object.freeze(element.props);
951
+ Object.freeze(element);
952
+ }
953
+ }
954
+
955
+ return element;
956
+ };
957
+ /**
958
+ * https://github.com/reactjs/rfcs/pull/107
959
+ * @param {*} type
960
+ * @param {object} props
961
+ * @param {string} key
962
+ */
963
+
964
+ function jsxDEV(type, config, maybeKey, source, self) {
965
+ {
966
+ var propName; // Reserved names are extracted
967
+
968
+ var props = {};
969
+ var key = null;
970
+ var ref = null; // Currently, key can be spread in as a prop. This causes a potential
971
+ // issue if key is also explicitly declared (ie. <div {...props} key="Hi" />
972
+ // or <div key="Hi" {...props} /> ). We want to deprecate key spread,
973
+ // but as an intermediary step, we will use jsxDEV for everything except
974
+ // <div {...props} key="Hi" />, because we aren't currently able to tell if
975
+ // key is explicitly declared to be undefined or not.
976
+
977
+ if (maybeKey !== undefined) {
978
+ {
979
+ checkKeyStringCoercion(maybeKey);
980
+ }
981
+
982
+ key = '' + maybeKey;
983
+ }
984
+
985
+ if (hasValidKey(config)) {
986
+ {
987
+ checkKeyStringCoercion(config.key);
988
+ }
989
+
990
+ key = '' + config.key;
991
+ }
992
+
993
+ if (hasValidRef(config)) {
994
+ ref = config.ref;
995
+ warnIfStringRefCannotBeAutoConverted(config, self);
996
+ } // Remaining properties are added to a new props object
997
+
998
+
999
+ for (propName in config) {
1000
+ if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
1001
+ props[propName] = config[propName];
1002
+ }
1003
+ } // Resolve default props
1004
+
1005
+
1006
+ if (type && type.defaultProps) {
1007
+ var defaultProps = type.defaultProps;
1008
+
1009
+ for (propName in defaultProps) {
1010
+ if (props[propName] === undefined) {
1011
+ props[propName] = defaultProps[propName];
1012
+ }
1013
+ }
1014
+ }
1015
+
1016
+ if (key || ref) {
1017
+ var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;
1018
+
1019
+ if (key) {
1020
+ defineKeyPropWarningGetter(props, displayName);
1021
+ }
1022
+
1023
+ if (ref) {
1024
+ defineRefPropWarningGetter(props, displayName);
1025
+ }
1026
+ }
1027
+
1028
+ return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
1029
+ }
1030
+ }
1031
+
1032
+ var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;
1033
+ var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;
1034
+
1035
+ function setCurrentlyValidatingElement$1(element) {
1036
+ {
1037
+ if (element) {
1038
+ var owner = element._owner;
1039
+ var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
1040
+ ReactDebugCurrentFrame$1.setExtraStackFrame(stack);
1041
+ } else {
1042
+ ReactDebugCurrentFrame$1.setExtraStackFrame(null);
1043
+ }
1044
+ }
1045
+ }
1046
+
1047
+ var propTypesMisspellWarningShown;
1048
+
1049
+ {
1050
+ propTypesMisspellWarningShown = false;
1051
+ }
1052
+ /**
1053
+ * Verifies the object is a ReactElement.
1054
+ * See https://reactjs.org/docs/react-api.html#isvalidelement
1055
+ * @param {?object} object
1056
+ * @return {boolean} True if `object` is a ReactElement.
1057
+ * @final
1058
+ */
1059
+
1060
+
1061
+ function isValidElement(object) {
1062
+ {
1063
+ return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
1064
+ }
1065
+ }
1066
+
1067
+ function getDeclarationErrorAddendum() {
1068
+ {
1069
+ if (ReactCurrentOwner$1.current) {
1070
+ var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);
1071
+
1072
+ if (name) {
1073
+ return '\n\nCheck the render method of `' + name + '`.';
1074
+ }
1075
+ }
1076
+
1077
+ return '';
1078
+ }
1079
+ }
1080
+
1081
+ function getSourceInfoErrorAddendum(source) {
1082
+ {
1083
+
1084
+ return '';
1085
+ }
1086
+ }
1087
+ /**
1088
+ * Warn if there's no key explicitly set on dynamic arrays of children or
1089
+ * object keys are not valid. This allows us to keep track of children between
1090
+ * updates.
1091
+ */
1092
+
1093
+
1094
+ var ownerHasKeyUseWarning = {};
1095
+
1096
+ function getCurrentComponentErrorInfo(parentType) {
1097
+ {
1098
+ var info = getDeclarationErrorAddendum();
1099
+
1100
+ if (!info) {
1101
+ var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;
1102
+
1103
+ if (parentName) {
1104
+ info = "\n\nCheck the top-level render call using <" + parentName + ">.";
1105
+ }
1106
+ }
1107
+
1108
+ return info;
1109
+ }
1110
+ }
1111
+ /**
1112
+ * Warn if the element doesn't have an explicit key assigned to it.
1113
+ * This element is in an array. The array could grow and shrink or be
1114
+ * reordered. All children that haven't already been validated are required to
1115
+ * have a "key" property assigned to it. Error statuses are cached so a warning
1116
+ * will only be shown once.
1117
+ *
1118
+ * @internal
1119
+ * @param {ReactElement} element Element that requires a key.
1120
+ * @param {*} parentType element's parent's type.
1121
+ */
1122
+
1123
+
1124
+ function validateExplicitKey(element, parentType) {
1125
+ {
1126
+ if (!element._store || element._store.validated || element.key != null) {
1127
+ return;
1128
+ }
1129
+
1130
+ element._store.validated = true;
1131
+ var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
1132
+
1133
+ if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {
1134
+ return;
1135
+ }
1136
+
1137
+ ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a
1138
+ // property, it may be the creator of the child that's responsible for
1139
+ // assigning it a key.
1140
+
1141
+ var childOwner = '';
1142
+
1143
+ if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {
1144
+ // Give the component that originally created this child.
1145
+ childOwner = " It was passed a child from " + getComponentNameFromType(element._owner.type) + ".";
1146
+ }
1147
+
1148
+ setCurrentlyValidatingElement$1(element);
1149
+
1150
+ error('Each child in a list should have a unique "key" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);
1151
+
1152
+ setCurrentlyValidatingElement$1(null);
1153
+ }
1154
+ }
1155
+ /**
1156
+ * Ensure that every element either is passed in a static location, in an
1157
+ * array with an explicit keys property defined, or in an object literal
1158
+ * with valid key property.
1159
+ *
1160
+ * @internal
1161
+ * @param {ReactNode} node Statically passed child of any type.
1162
+ * @param {*} parentType node's parent's type.
1163
+ */
1164
+
1165
+
1166
+ function validateChildKeys(node, parentType) {
1167
+ {
1168
+ if (typeof node !== 'object') {
1169
+ return;
1170
+ }
1171
+
1172
+ if (isArray(node)) {
1173
+ for (var i = 0; i < node.length; i++) {
1174
+ var child = node[i];
1175
+
1176
+ if (isValidElement(child)) {
1177
+ validateExplicitKey(child, parentType);
1178
+ }
1179
+ }
1180
+ } else if (isValidElement(node)) {
1181
+ // This element was passed in a valid location.
1182
+ if (node._store) {
1183
+ node._store.validated = true;
1184
+ }
1185
+ } else if (node) {
1186
+ var iteratorFn = getIteratorFn(node);
1187
+
1188
+ if (typeof iteratorFn === 'function') {
1189
+ // Entry iterators used to provide implicit keys,
1190
+ // but now we print a separate warning for them later.
1191
+ if (iteratorFn !== node.entries) {
1192
+ var iterator = iteratorFn.call(node);
1193
+ var step;
1194
+
1195
+ while (!(step = iterator.next()).done) {
1196
+ if (isValidElement(step.value)) {
1197
+ validateExplicitKey(step.value, parentType);
1198
+ }
1199
+ }
1200
+ }
1201
+ }
1202
+ }
1203
+ }
1204
+ }
1205
+ /**
1206
+ * Given an element, validate that its props follow the propTypes definition,
1207
+ * provided by the type.
1208
+ *
1209
+ * @param {ReactElement} element
1210
+ */
1211
+
1212
+
1213
+ function validatePropTypes(element) {
1214
+ {
1215
+ var type = element.type;
1216
+
1217
+ if (type === null || type === undefined || typeof type === 'string') {
1218
+ return;
1219
+ }
1220
+
1221
+ var propTypes;
1222
+
1223
+ if (typeof type === 'function') {
1224
+ propTypes = type.propTypes;
1225
+ } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.
1226
+ // Inner props are checked in the reconciler.
1227
+ type.$$typeof === REACT_MEMO_TYPE)) {
1228
+ propTypes = type.propTypes;
1229
+ } else {
1230
+ return;
1231
+ }
1232
+
1233
+ if (propTypes) {
1234
+ // Intentionally inside to avoid triggering lazy initializers:
1235
+ var name = getComponentNameFromType(type);
1236
+ checkPropTypes(propTypes, element.props, 'prop', name, element);
1237
+ } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {
1238
+ propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:
1239
+
1240
+ var _name = getComponentNameFromType(type);
1241
+
1242
+ error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');
1243
+ }
1244
+
1245
+ if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {
1246
+ error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');
1247
+ }
1248
+ }
1249
+ }
1250
+ /**
1251
+ * Given a fragment, validate that it can only be provided with fragment props
1252
+ * @param {ReactElement} fragment
1253
+ */
1254
+
1255
+
1256
+ function validateFragmentProps(fragment) {
1257
+ {
1258
+ var keys = Object.keys(fragment.props);
1259
+
1260
+ for (var i = 0; i < keys.length; i++) {
1261
+ var key = keys[i];
1262
+
1263
+ if (key !== 'children' && key !== 'key') {
1264
+ setCurrentlyValidatingElement$1(fragment);
1265
+
1266
+ error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);
1267
+
1268
+ setCurrentlyValidatingElement$1(null);
1269
+ break;
1270
+ }
1271
+ }
1272
+
1273
+ if (fragment.ref !== null) {
1274
+ setCurrentlyValidatingElement$1(fragment);
1275
+
1276
+ error('Invalid attribute `ref` supplied to `React.Fragment`.');
1277
+
1278
+ setCurrentlyValidatingElement$1(null);
1279
+ }
1280
+ }
1281
+ }
1282
+
1283
+ var didWarnAboutKeySpread = {};
1284
+ function jsxWithValidation(type, props, key, isStaticChildren, source, self) {
1285
+ {
1286
+ var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to
1287
+ // succeed and there will likely be errors in render.
1288
+
1289
+ if (!validType) {
1290
+ var info = '';
1291
+
1292
+ if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
1293
+ info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports.";
1294
+ }
1295
+
1296
+ var sourceInfo = getSourceInfoErrorAddendum();
1297
+
1298
+ if (sourceInfo) {
1299
+ info += sourceInfo;
1300
+ } else {
1301
+ info += getDeclarationErrorAddendum();
1302
+ }
1303
+
1304
+ var typeString;
1305
+
1306
+ if (type === null) {
1307
+ typeString = 'null';
1308
+ } else if (isArray(type)) {
1309
+ typeString = 'array';
1310
+ } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {
1311
+ typeString = "<" + (getComponentNameFromType(type.type) || 'Unknown') + " />";
1312
+ info = ' Did you accidentally export a JSX literal instead of a component?';
1313
+ } else {
1314
+ typeString = typeof type;
1315
+ }
1316
+
1317
+ error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);
1318
+ }
1319
+
1320
+ var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.
1321
+ // TODO: Drop this when these are no longer allowed as the type argument.
1322
+
1323
+ if (element == null) {
1324
+ return element;
1325
+ } // Skip key warning if the type isn't valid since our key validation logic
1326
+ // doesn't expect a non-string/function type and can throw confusing errors.
1327
+ // We don't want exception behavior to differ between dev and prod.
1328
+ // (Rendering will throw with a helpful message and as soon as the type is
1329
+ // fixed, the key warnings will appear.)
1330
+
1331
+
1332
+ if (validType) {
1333
+ var children = props.children;
1334
+
1335
+ if (children !== undefined) {
1336
+ if (isStaticChildren) {
1337
+ if (isArray(children)) {
1338
+ for (var i = 0; i < children.length; i++) {
1339
+ validateChildKeys(children[i], type);
1340
+ }
1341
+
1342
+ if (Object.freeze) {
1343
+ Object.freeze(children);
1344
+ }
1345
+ } else {
1346
+ error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');
1347
+ }
1348
+ } else {
1349
+ validateChildKeys(children, type);
1350
+ }
1351
+ }
1352
+ }
1353
+
1354
+ {
1355
+ if (hasOwnProperty.call(props, 'key')) {
1356
+ var componentName = getComponentNameFromType(type);
1357
+ var keys = Object.keys(props).filter(function (k) {
1358
+ return k !== 'key';
1359
+ });
1360
+ var beforeExample = keys.length > 0 ? '{key: someKey, ' + keys.join(': ..., ') + ': ...}' : '{key: someKey}';
1361
+
1362
+ if (!didWarnAboutKeySpread[componentName + beforeExample]) {
1363
+ var afterExample = keys.length > 0 ? '{' + keys.join(': ..., ') + ': ...}' : '{}';
1364
+
1365
+ error('A props object containing a "key" prop is being spread into JSX:\n' + ' let props = %s;\n' + ' <%s {...props} />\n' + 'React keys must be passed directly to JSX without using spread:\n' + ' let props = %s;\n' + ' <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);
1366
+
1367
+ didWarnAboutKeySpread[componentName + beforeExample] = true;
1368
+ }
1369
+ }
1370
+ }
1371
+
1372
+ if (type === REACT_FRAGMENT_TYPE) {
1373
+ validateFragmentProps(element);
1374
+ } else {
1375
+ validatePropTypes(element);
1376
+ }
1377
+
1378
+ return element;
1379
+ }
1380
+ } // These two functions exist to still get child warnings in dev
1381
+ // even with the prod transform. This means that jsxDEV is purely
1382
+ // opt-in behavior for better messages but that we won't stop
1383
+ // giving you warnings if you use production apis.
1384
+
1385
+ function jsxWithValidationStatic(type, props, key) {
1386
+ {
1387
+ return jsxWithValidation(type, props, key, true);
1388
+ }
1389
+ }
1390
+ function jsxWithValidationDynamic(type, props, key) {
1391
+ {
1392
+ return jsxWithValidation(type, props, key, false);
1393
+ }
1394
+ }
1395
+
1396
+ var jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.
1397
+ // for now we can ship identical prod functions
1398
+
1399
+ var jsxs = jsxWithValidationStatic ;
1400
+
1401
+ reactJsxRuntime_development.Fragment = REACT_FRAGMENT_TYPE;
1402
+ reactJsxRuntime_development.jsx = jsx;
1403
+ reactJsxRuntime_development.jsxs = jsxs;
1404
+ })();
1405
+ }
1406
+ return reactJsxRuntime_development;
1407
+ }
1408
+
1409
+ var hasRequiredJsxRuntime;
1410
+
1411
+ function requireJsxRuntime () {
1412
+ if (hasRequiredJsxRuntime) return jsxRuntime.exports;
1413
+ hasRequiredJsxRuntime = 1;
1414
+
1415
+ if (process.env.NODE_ENV === 'production') {
1416
+ jsxRuntime.exports = requireReactJsxRuntime_production_min();
1417
+ } else {
1418
+ jsxRuntime.exports = requireReactJsxRuntime_development();
1419
+ }
1420
+ return jsxRuntime.exports;
1421
+ }
1422
+
1423
+ var jsxRuntimeExports = requireJsxRuntime();
1424
+
1425
+ // packages/react/compose-refs/src/composeRefs.tsx
1426
+ function setRef(ref, value) {
1427
+ if (typeof ref === "function") {
1428
+ ref(value);
1429
+ } else if (ref !== null && ref !== void 0) {
1430
+ ref.current = value;
1431
+ }
1432
+ }
1433
+ function composeRefs(...refs) {
1434
+ return (node) => refs.forEach((ref) => setRef(ref, node));
1435
+ }
1436
+
1437
+ // packages/react/slot/src/Slot.tsx
1438
+ var Slot = React.forwardRef((props, forwardedRef) => {
1439
+ const { children, ...slotProps } = props;
1440
+ const childrenArray = React.Children.toArray(children);
1441
+ const slottable = childrenArray.find(isSlottable);
1442
+ if (slottable) {
1443
+ const newElement = slottable.props.children;
1444
+ const newChildren = childrenArray.map((child) => {
1445
+ if (child === slottable) {
1446
+ if (React.Children.count(newElement) > 1) return React.Children.only(null);
1447
+ return React.isValidElement(newElement) ? newElement.props.children : null;
1448
+ } else {
1449
+ return child;
1450
+ }
1451
+ });
1452
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });
1453
+ }
1454
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });
1455
+ });
1456
+ Slot.displayName = "Slot";
1457
+ var SlotClone = React.forwardRef((props, forwardedRef) => {
1458
+ const { children, ...slotProps } = props;
1459
+ if (React.isValidElement(children)) {
1460
+ const childrenRef = getElementRef(children);
1461
+ return React.cloneElement(children, {
1462
+ ...mergeProps(slotProps, children.props),
1463
+ // @ts-ignore
1464
+ ref: forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef
1465
+ });
1466
+ }
1467
+ return React.Children.count(children) > 1 ? React.Children.only(null) : null;
1468
+ });
1469
+ SlotClone.displayName = "SlotClone";
1470
+ var Slottable = ({ children }) => {
1471
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children });
4
1472
  };
1473
+ function isSlottable(child) {
1474
+ return React.isValidElement(child) && child.type === Slottable;
1475
+ }
1476
+ function mergeProps(slotProps, childProps) {
1477
+ const overrideProps = { ...childProps };
1478
+ for (const propName in childProps) {
1479
+ const slotPropValue = slotProps[propName];
1480
+ const childPropValue = childProps[propName];
1481
+ const isHandler = /^on[A-Z]/.test(propName);
1482
+ if (isHandler) {
1483
+ if (slotPropValue && childPropValue) {
1484
+ overrideProps[propName] = (...args) => {
1485
+ childPropValue(...args);
1486
+ slotPropValue(...args);
1487
+ };
1488
+ } else if (slotPropValue) {
1489
+ overrideProps[propName] = slotPropValue;
1490
+ }
1491
+ } else if (propName === "style") {
1492
+ overrideProps[propName] = { ...slotPropValue, ...childPropValue };
1493
+ } else if (propName === "className") {
1494
+ overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" ");
1495
+ }
1496
+ }
1497
+ return { ...slotProps, ...overrideProps };
1498
+ }
1499
+ function getElementRef(element) {
1500
+ let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
1501
+ let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
1502
+ if (mayWarn) {
1503
+ return element.ref;
1504
+ }
1505
+ getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
1506
+ mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
1507
+ if (mayWarn) {
1508
+ return element.props.ref;
1509
+ }
1510
+ return element.props.ref || element.ref;
1511
+ }
1512
+
1513
+ function r$1(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r$1(e[t]))&&(n&&(n+=" "),n+=f);else for(t in e)e[t]&&(n&&(n+=" "),n+=t);return n}function clsx$1(){for(var e,t,f=0,n="";f<arguments.length;)(e=arguments[f++])&&(t=r$1(e))&&(n&&(n+=" "),n+=t);return n}
1514
+
1515
+ const falsyToString = (value)=>typeof value === "boolean" ? "".concat(value) : value === 0 ? "0" : value;
1516
+ const cx = clsx$1;
1517
+ const cva = (base, config)=>{
1518
+ return (props)=>{
1519
+ var ref;
1520
+ if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
1521
+ const { variants , defaultVariants } = config;
1522
+ const getVariantClassNames = Object.keys(variants).map((variant)=>{
1523
+ const variantProp = props === null || props === void 0 ? void 0 : props[variant];
1524
+ const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];
1525
+ if (variantProp === null) return null;
1526
+ const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);
1527
+ return variants[variant][variantKey];
1528
+ });
1529
+ const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{
1530
+ let [key, value] = param;
1531
+ if (value === undefined) {
1532
+ return acc;
1533
+ }
1534
+ acc[key] = value;
1535
+ return acc;
1536
+ }, {});
1537
+ const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (ref = config.compoundVariants) === null || ref === void 0 ? void 0 : ref.reduce((acc, param1)=>{
1538
+ let { class: cvClass , className: cvClassName , ...compoundVariantOptions } = param1;
1539
+ return Object.entries(compoundVariantOptions).every((param)=>{
1540
+ let [key, value] = param;
1541
+ return Array.isArray(value) ? value.includes({
1542
+ ...defaultVariants,
1543
+ ...propsWithoutUndefined
1544
+ }[key]) : ({
1545
+ ...defaultVariants,
1546
+ ...propsWithoutUndefined
1547
+ })[key] === value;
1548
+ }) ? [
1549
+ ...acc,
1550
+ cvClass,
1551
+ cvClassName
1552
+ ] : acc;
1553
+ }, []);
1554
+ return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
1555
+ };
1556
+ };
1557
+
1558
+ /**
1559
+ * @license lucide-react v0.453.0 - ISC
1560
+ *
1561
+ * This source code is licensed under the ISC license.
1562
+ * See the LICENSE file in the root directory of this source tree.
1563
+ */
1564
+
1565
+ const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
1566
+ const mergeClasses = (...classes) => classes.filter((className, index, array) => {
1567
+ return Boolean(className) && array.indexOf(className) === index;
1568
+ }).join(" ");
1569
+
1570
+ /**
1571
+ * @license lucide-react v0.453.0 - ISC
1572
+ *
1573
+ * This source code is licensed under the ISC license.
1574
+ * See the LICENSE file in the root directory of this source tree.
1575
+ */
1576
+
1577
+ var defaultAttributes = {
1578
+ xmlns: "http://www.w3.org/2000/svg",
1579
+ width: 24,
1580
+ height: 24,
1581
+ viewBox: "0 0 24 24",
1582
+ fill: "none",
1583
+ stroke: "currentColor",
1584
+ strokeWidth: 2,
1585
+ strokeLinecap: "round",
1586
+ strokeLinejoin: "round"
1587
+ };
1588
+
1589
+ /**
1590
+ * @license lucide-react v0.453.0 - ISC
1591
+ *
1592
+ * This source code is licensed under the ISC license.
1593
+ * See the LICENSE file in the root directory of this source tree.
1594
+ */
1595
+
1596
+
1597
+ const Icon = forwardRef(
1598
+ ({
1599
+ color = "currentColor",
1600
+ size = 24,
1601
+ strokeWidth = 2,
1602
+ absoluteStrokeWidth,
1603
+ className = "",
1604
+ children,
1605
+ iconNode,
1606
+ ...rest
1607
+ }, ref) => {
1608
+ return createElement(
1609
+ "svg",
1610
+ {
1611
+ ref,
1612
+ ...defaultAttributes,
1613
+ width: size,
1614
+ height: size,
1615
+ stroke: color,
1616
+ strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
1617
+ className: mergeClasses("lucide", className),
1618
+ ...rest
1619
+ },
1620
+ [
1621
+ ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),
1622
+ ...Array.isArray(children) ? children : [children]
1623
+ ]
1624
+ );
1625
+ }
1626
+ );
1627
+
1628
+ /**
1629
+ * @license lucide-react v0.453.0 - ISC
1630
+ *
1631
+ * This source code is licensed under the ISC license.
1632
+ * See the LICENSE file in the root directory of this source tree.
1633
+ */
1634
+
1635
+
1636
+ const createLucideIcon = (iconName, iconNode) => {
1637
+ const Component = forwardRef(
1638
+ ({ className, ...props }, ref) => createElement(Icon, {
1639
+ ref,
1640
+ iconNode,
1641
+ className: mergeClasses(`lucide-${toKebabCase(iconName)}`, className),
1642
+ ...props
1643
+ })
1644
+ );
1645
+ Component.displayName = `${iconName}`;
1646
+ return Component;
1647
+ };
1648
+
1649
+ /**
1650
+ * @license lucide-react v0.453.0 - ISC
1651
+ *
1652
+ * This source code is licensed under the ISC license.
1653
+ * See the LICENSE file in the root directory of this source tree.
1654
+ */
1655
+
1656
+
1657
+ const LoaderCircle = createLucideIcon("LoaderCircle", [
1658
+ ["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]
1659
+ ]);
1660
+
1661
+ function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
1662
+
1663
+ const CLASS_PART_SEPARATOR = '-';
1664
+ const createClassGroupUtils = config => {
1665
+ const classMap = createClassMap(config);
1666
+ const {
1667
+ conflictingClassGroups,
1668
+ conflictingClassGroupModifiers
1669
+ } = config;
1670
+ const getClassGroupId = className => {
1671
+ const classParts = className.split(CLASS_PART_SEPARATOR);
1672
+ // 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.
1673
+ if (classParts[0] === '' && classParts.length !== 1) {
1674
+ classParts.shift();
1675
+ }
1676
+ return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);
1677
+ };
1678
+ const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {
1679
+ const conflicts = conflictingClassGroups[classGroupId] || [];
1680
+ if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {
1681
+ return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];
1682
+ }
1683
+ return conflicts;
1684
+ };
1685
+ return {
1686
+ getClassGroupId,
1687
+ getConflictingClassGroupIds
1688
+ };
1689
+ };
1690
+ const getGroupRecursive = (classParts, classPartObject) => {
1691
+ if (classParts.length === 0) {
1692
+ return classPartObject.classGroupId;
1693
+ }
1694
+ const currentClassPart = classParts[0];
1695
+ const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
1696
+ const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;
1697
+ if (classGroupFromNextClassPart) {
1698
+ return classGroupFromNextClassPart;
1699
+ }
1700
+ if (classPartObject.validators.length === 0) {
1701
+ return undefined;
1702
+ }
1703
+ const classRest = classParts.join(CLASS_PART_SEPARATOR);
1704
+ return classPartObject.validators.find(({
1705
+ validator
1706
+ }) => validator(classRest))?.classGroupId;
1707
+ };
1708
+ const arbitraryPropertyRegex = /^\[(.+)\]$/;
1709
+ const getGroupIdForArbitraryProperty = className => {
1710
+ if (arbitraryPropertyRegex.test(className)) {
1711
+ const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];
1712
+ const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));
1713
+ if (property) {
1714
+ // I use two dots here because one dot is used as prefix for class groups in plugins
1715
+ return 'arbitrary..' + property;
1716
+ }
1717
+ }
1718
+ };
1719
+ /**
1720
+ * Exported for testing only
1721
+ */
1722
+ const createClassMap = config => {
1723
+ const {
1724
+ theme,
1725
+ prefix
1726
+ } = config;
1727
+ const classMap = {
1728
+ nextPart: new Map(),
1729
+ validators: []
1730
+ };
1731
+ const prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);
1732
+ prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {
1733
+ processClassesRecursively(classGroup, classMap, classGroupId, theme);
1734
+ });
1735
+ return classMap;
1736
+ };
1737
+ const processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {
1738
+ classGroup.forEach(classDefinition => {
1739
+ if (typeof classDefinition === 'string') {
1740
+ const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);
1741
+ classPartObjectToEdit.classGroupId = classGroupId;
1742
+ return;
1743
+ }
1744
+ if (typeof classDefinition === 'function') {
1745
+ if (isThemeGetter(classDefinition)) {
1746
+ processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
1747
+ return;
1748
+ }
1749
+ classPartObject.validators.push({
1750
+ validator: classDefinition,
1751
+ classGroupId
1752
+ });
1753
+ return;
1754
+ }
1755
+ Object.entries(classDefinition).forEach(([key, classGroup]) => {
1756
+ processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);
1757
+ });
1758
+ });
1759
+ };
1760
+ const getPart = (classPartObject, path) => {
1761
+ let currentClassPartObject = classPartObject;
1762
+ path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {
1763
+ if (!currentClassPartObject.nextPart.has(pathPart)) {
1764
+ currentClassPartObject.nextPart.set(pathPart, {
1765
+ nextPart: new Map(),
1766
+ validators: []
1767
+ });
1768
+ }
1769
+ currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);
1770
+ });
1771
+ return currentClassPartObject;
1772
+ };
1773
+ const isThemeGetter = func => func.isThemeGetter;
1774
+ const getPrefixedClassGroupEntries = (classGroupEntries, prefix) => {
1775
+ if (!prefix) {
1776
+ return classGroupEntries;
1777
+ }
1778
+ return classGroupEntries.map(([classGroupId, classGroup]) => {
1779
+ const prefixedClassGroup = classGroup.map(classDefinition => {
1780
+ if (typeof classDefinition === 'string') {
1781
+ return prefix + classDefinition;
1782
+ }
1783
+ if (typeof classDefinition === 'object') {
1784
+ return Object.fromEntries(Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]));
1785
+ }
1786
+ return classDefinition;
1787
+ });
1788
+ return [classGroupId, prefixedClassGroup];
1789
+ });
1790
+ };
1791
+
1792
+ // LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance
1793
+ const createLruCache = maxCacheSize => {
1794
+ if (maxCacheSize < 1) {
1795
+ return {
1796
+ get: () => undefined,
1797
+ set: () => {}
1798
+ };
1799
+ }
1800
+ let cacheSize = 0;
1801
+ let cache = new Map();
1802
+ let previousCache = new Map();
1803
+ const update = (key, value) => {
1804
+ cache.set(key, value);
1805
+ cacheSize++;
1806
+ if (cacheSize > maxCacheSize) {
1807
+ cacheSize = 0;
1808
+ previousCache = cache;
1809
+ cache = new Map();
1810
+ }
1811
+ };
1812
+ return {
1813
+ get(key) {
1814
+ let value = cache.get(key);
1815
+ if (value !== undefined) {
1816
+ return value;
1817
+ }
1818
+ if ((value = previousCache.get(key)) !== undefined) {
1819
+ update(key, value);
1820
+ return value;
1821
+ }
1822
+ },
1823
+ set(key, value) {
1824
+ if (cache.has(key)) {
1825
+ cache.set(key, value);
1826
+ } else {
1827
+ update(key, value);
1828
+ }
1829
+ }
1830
+ };
1831
+ };
1832
+ const IMPORTANT_MODIFIER = '!';
1833
+ const createParseClassName = config => {
1834
+ const {
1835
+ separator,
1836
+ experimentalParseClassName
1837
+ } = config;
1838
+ const isSeparatorSingleCharacter = separator.length === 1;
1839
+ const firstSeparatorCharacter = separator[0];
1840
+ const separatorLength = separator.length;
1841
+ // parseClassName inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js
1842
+ const parseClassName = className => {
1843
+ const modifiers = [];
1844
+ let bracketDepth = 0;
1845
+ let modifierStart = 0;
1846
+ let postfixModifierPosition;
1847
+ for (let index = 0; index < className.length; index++) {
1848
+ let currentCharacter = className[index];
1849
+ if (bracketDepth === 0) {
1850
+ if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) {
1851
+ modifiers.push(className.slice(modifierStart, index));
1852
+ modifierStart = index + separatorLength;
1853
+ continue;
1854
+ }
1855
+ if (currentCharacter === '/') {
1856
+ postfixModifierPosition = index;
1857
+ continue;
1858
+ }
1859
+ }
1860
+ if (currentCharacter === '[') {
1861
+ bracketDepth++;
1862
+ } else if (currentCharacter === ']') {
1863
+ bracketDepth--;
1864
+ }
1865
+ }
1866
+ const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);
1867
+ const hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER);
1868
+ const baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier;
1869
+ const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;
1870
+ return {
1871
+ modifiers,
1872
+ hasImportantModifier,
1873
+ baseClassName,
1874
+ maybePostfixModifierPosition
1875
+ };
1876
+ };
1877
+ if (experimentalParseClassName) {
1878
+ return className => experimentalParseClassName({
1879
+ className,
1880
+ parseClassName
1881
+ });
1882
+ }
1883
+ return parseClassName;
1884
+ };
1885
+ /**
1886
+ * Sorts modifiers according to following schema:
1887
+ * - Predefined modifiers are sorted alphabetically
1888
+ * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it
1889
+ */
1890
+ const sortModifiers = modifiers => {
1891
+ if (modifiers.length <= 1) {
1892
+ return modifiers;
1893
+ }
1894
+ const sortedModifiers = [];
1895
+ let unsortedModifiers = [];
1896
+ modifiers.forEach(modifier => {
1897
+ const isArbitraryVariant = modifier[0] === '[';
1898
+ if (isArbitraryVariant) {
1899
+ sortedModifiers.push(...unsortedModifiers.sort(), modifier);
1900
+ unsortedModifiers = [];
1901
+ } else {
1902
+ unsortedModifiers.push(modifier);
1903
+ }
1904
+ });
1905
+ sortedModifiers.push(...unsortedModifiers.sort());
1906
+ return sortedModifiers;
1907
+ };
1908
+ const createConfigUtils = config => ({
1909
+ cache: createLruCache(config.cacheSize),
1910
+ parseClassName: createParseClassName(config),
1911
+ ...createClassGroupUtils(config)
1912
+ });
1913
+ const SPLIT_CLASSES_REGEX = /\s+/;
1914
+ const mergeClassList = (classList, configUtils) => {
1915
+ const {
1916
+ parseClassName,
1917
+ getClassGroupId,
1918
+ getConflictingClassGroupIds
1919
+ } = configUtils;
1920
+ /**
1921
+ * Set of classGroupIds in following format:
1922
+ * `{importantModifier}{variantModifiers}{classGroupId}`
1923
+ * @example 'float'
1924
+ * @example 'hover:focus:bg-color'
1925
+ * @example 'md:!pr'
1926
+ */
1927
+ const classGroupsInConflict = [];
1928
+ const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);
1929
+ let result = '';
1930
+ for (let index = classNames.length - 1; index >= 0; index -= 1) {
1931
+ const originalClassName = classNames[index];
1932
+ const {
1933
+ modifiers,
1934
+ hasImportantModifier,
1935
+ baseClassName,
1936
+ maybePostfixModifierPosition
1937
+ } = parseClassName(originalClassName);
1938
+ let hasPostfixModifier = Boolean(maybePostfixModifierPosition);
1939
+ let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);
1940
+ if (!classGroupId) {
1941
+ if (!hasPostfixModifier) {
1942
+ // Not a Tailwind class
1943
+ result = originalClassName + (result.length > 0 ? ' ' + result : result);
1944
+ continue;
1945
+ }
1946
+ classGroupId = getClassGroupId(baseClassName);
1947
+ if (!classGroupId) {
1948
+ // Not a Tailwind class
1949
+ result = originalClassName + (result.length > 0 ? ' ' + result : result);
1950
+ continue;
1951
+ }
1952
+ hasPostfixModifier = false;
1953
+ }
1954
+ const variantModifier = sortModifiers(modifiers).join(':');
1955
+ const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
1956
+ const classId = modifierId + classGroupId;
1957
+ if (classGroupsInConflict.includes(classId)) {
1958
+ // Tailwind class omitted due to conflict
1959
+ continue;
1960
+ }
1961
+ classGroupsInConflict.push(classId);
1962
+ const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);
1963
+ for (let i = 0; i < conflictGroups.length; ++i) {
1964
+ const group = conflictGroups[i];
1965
+ classGroupsInConflict.push(modifierId + group);
1966
+ }
1967
+ // Tailwind class not in conflict
1968
+ result = originalClassName + (result.length > 0 ? ' ' + result : result);
1969
+ }
1970
+ return result;
1971
+ };
1972
+
1973
+ /**
1974
+ * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.
1975
+ *
1976
+ * Specifically:
1977
+ * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js
1978
+ * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts
1979
+ *
1980
+ * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
1981
+ */
1982
+ function twJoin() {
1983
+ let index = 0;
1984
+ let argument;
1985
+ let resolvedValue;
1986
+ let string = '';
1987
+ while (index < arguments.length) {
1988
+ if (argument = arguments[index++]) {
1989
+ if (resolvedValue = toValue(argument)) {
1990
+ string && (string += ' ');
1991
+ string += resolvedValue;
1992
+ }
1993
+ }
1994
+ }
1995
+ return string;
1996
+ }
1997
+ const toValue = mix => {
1998
+ if (typeof mix === 'string') {
1999
+ return mix;
2000
+ }
2001
+ let resolvedValue;
2002
+ let string = '';
2003
+ for (let k = 0; k < mix.length; k++) {
2004
+ if (mix[k]) {
2005
+ if (resolvedValue = toValue(mix[k])) {
2006
+ string && (string += ' ');
2007
+ string += resolvedValue;
2008
+ }
2009
+ }
2010
+ }
2011
+ return string;
2012
+ };
2013
+ function createTailwindMerge(createConfigFirst, ...createConfigRest) {
2014
+ let configUtils;
2015
+ let cacheGet;
2016
+ let cacheSet;
2017
+ let functionToCall = initTailwindMerge;
2018
+ function initTailwindMerge(classList) {
2019
+ const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());
2020
+ configUtils = createConfigUtils(config);
2021
+ cacheGet = configUtils.cache.get;
2022
+ cacheSet = configUtils.cache.set;
2023
+ functionToCall = tailwindMerge;
2024
+ return tailwindMerge(classList);
2025
+ }
2026
+ function tailwindMerge(classList) {
2027
+ const cachedResult = cacheGet(classList);
2028
+ if (cachedResult) {
2029
+ return cachedResult;
2030
+ }
2031
+ const result = mergeClassList(classList, configUtils);
2032
+ cacheSet(classList, result);
2033
+ return result;
2034
+ }
2035
+ return function callTailwindMerge() {
2036
+ return functionToCall(twJoin.apply(null, arguments));
2037
+ };
2038
+ }
2039
+ const fromTheme = key => {
2040
+ const themeGetter = theme => theme[key] || [];
2041
+ themeGetter.isThemeGetter = true;
2042
+ return themeGetter;
2043
+ };
2044
+ const arbitraryValueRegex = /^\[(?:([a-z-]+):)?(.+)\]$/i;
2045
+ const fractionRegex = /^\d+\/\d+$/;
2046
+ const stringLengths = /*#__PURE__*/new Set(['px', 'full', 'screen']);
2047
+ const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
2048
+ 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$/;
2049
+ const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/;
2050
+ // Shadow always begins with x and y offset separated by underscore optionally prepended by inset
2051
+ const shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
2052
+ const imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
2053
+ const isLength = value => isNumber(value) || stringLengths.has(value) || fractionRegex.test(value);
2054
+ const isArbitraryLength = value => getIsArbitraryValue(value, 'length', isLengthOnly);
2055
+ const isNumber = value => Boolean(value) && !Number.isNaN(Number(value));
2056
+ const isArbitraryNumber = value => getIsArbitraryValue(value, 'number', isNumber);
2057
+ const isInteger = value => Boolean(value) && Number.isInteger(Number(value));
2058
+ const isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));
2059
+ const isArbitraryValue = value => arbitraryValueRegex.test(value);
2060
+ const isTshirtSize = value => tshirtUnitRegex.test(value);
2061
+ const sizeLabels = /*#__PURE__*/new Set(['length', 'size', 'percentage']);
2062
+ const isArbitrarySize = value => getIsArbitraryValue(value, sizeLabels, isNever);
2063
+ const isArbitraryPosition = value => getIsArbitraryValue(value, 'position', isNever);
2064
+ const imageLabels = /*#__PURE__*/new Set(['image', 'url']);
2065
+ const isArbitraryImage = value => getIsArbitraryValue(value, imageLabels, isImage);
2066
+ const isArbitraryShadow = value => getIsArbitraryValue(value, '', isShadow);
2067
+ const isAny = () => true;
2068
+ const getIsArbitraryValue = (value, label, testValue) => {
2069
+ const result = arbitraryValueRegex.exec(value);
2070
+ if (result) {
2071
+ if (result[1]) {
2072
+ return typeof label === 'string' ? result[1] === label : label.has(result[1]);
2073
+ }
2074
+ return testValue(result[2]);
2075
+ }
2076
+ return false;
2077
+ };
2078
+ const isLengthOnly = value =>
2079
+ // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
2080
+ // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
2081
+ // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
2082
+ lengthUnitRegex.test(value) && !colorFunctionRegex.test(value);
2083
+ const isNever = () => false;
2084
+ const isShadow = value => shadowRegex.test(value);
2085
+ const isImage = value => imageRegex.test(value);
2086
+ const getDefaultConfig = () => {
2087
+ const colors = fromTheme('colors');
2088
+ const spacing = fromTheme('spacing');
2089
+ const blur = fromTheme('blur');
2090
+ const brightness = fromTheme('brightness');
2091
+ const borderColor = fromTheme('borderColor');
2092
+ const borderRadius = fromTheme('borderRadius');
2093
+ const borderSpacing = fromTheme('borderSpacing');
2094
+ const borderWidth = fromTheme('borderWidth');
2095
+ const contrast = fromTheme('contrast');
2096
+ const grayscale = fromTheme('grayscale');
2097
+ const hueRotate = fromTheme('hueRotate');
2098
+ const invert = fromTheme('invert');
2099
+ const gap = fromTheme('gap');
2100
+ const gradientColorStops = fromTheme('gradientColorStops');
2101
+ const gradientColorStopPositions = fromTheme('gradientColorStopPositions');
2102
+ const inset = fromTheme('inset');
2103
+ const margin = fromTheme('margin');
2104
+ const opacity = fromTheme('opacity');
2105
+ const padding = fromTheme('padding');
2106
+ const saturate = fromTheme('saturate');
2107
+ const scale = fromTheme('scale');
2108
+ const sepia = fromTheme('sepia');
2109
+ const skew = fromTheme('skew');
2110
+ const space = fromTheme('space');
2111
+ const translate = fromTheme('translate');
2112
+ const getOverscroll = () => ['auto', 'contain', 'none'];
2113
+ const getOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];
2114
+ const getSpacingWithAutoAndArbitrary = () => ['auto', isArbitraryValue, spacing];
2115
+ const getSpacingWithArbitrary = () => [isArbitraryValue, spacing];
2116
+ const getLengthWithEmptyAndArbitrary = () => ['', isLength, isArbitraryLength];
2117
+ const getNumberWithAutoAndArbitrary = () => ['auto', isNumber, isArbitraryValue];
2118
+ const getPositions = () => ['bottom', 'center', 'left', 'left-bottom', 'left-top', 'right', 'right-bottom', 'right-top', 'top'];
2119
+ const getLineStyles = () => ['solid', 'dashed', 'dotted', 'double', 'none'];
2120
+ const getBlendModes = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];
2121
+ const getAlign = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch'];
2122
+ const getZeroAndEmpty = () => ['', '0', isArbitraryValue];
2123
+ const getBreaks = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];
2124
+ const getNumberAndArbitrary = () => [isNumber, isArbitraryValue];
2125
+ return {
2126
+ cacheSize: 500,
2127
+ separator: ':',
2128
+ theme: {
2129
+ colors: [isAny],
2130
+ spacing: [isLength, isArbitraryLength],
2131
+ blur: ['none', '', isTshirtSize, isArbitraryValue],
2132
+ brightness: getNumberAndArbitrary(),
2133
+ borderColor: [colors],
2134
+ borderRadius: ['none', '', 'full', isTshirtSize, isArbitraryValue],
2135
+ borderSpacing: getSpacingWithArbitrary(),
2136
+ borderWidth: getLengthWithEmptyAndArbitrary(),
2137
+ contrast: getNumberAndArbitrary(),
2138
+ grayscale: getZeroAndEmpty(),
2139
+ hueRotate: getNumberAndArbitrary(),
2140
+ invert: getZeroAndEmpty(),
2141
+ gap: getSpacingWithArbitrary(),
2142
+ gradientColorStops: [colors],
2143
+ gradientColorStopPositions: [isPercent, isArbitraryLength],
2144
+ inset: getSpacingWithAutoAndArbitrary(),
2145
+ margin: getSpacingWithAutoAndArbitrary(),
2146
+ opacity: getNumberAndArbitrary(),
2147
+ padding: getSpacingWithArbitrary(),
2148
+ saturate: getNumberAndArbitrary(),
2149
+ scale: getNumberAndArbitrary(),
2150
+ sepia: getZeroAndEmpty(),
2151
+ skew: getNumberAndArbitrary(),
2152
+ space: getSpacingWithArbitrary(),
2153
+ translate: getSpacingWithArbitrary()
2154
+ },
2155
+ classGroups: {
2156
+ // Layout
2157
+ /**
2158
+ * Aspect Ratio
2159
+ * @see https://tailwindcss.com/docs/aspect-ratio
2160
+ */
2161
+ aspect: [{
2162
+ aspect: ['auto', 'square', 'video', isArbitraryValue]
2163
+ }],
2164
+ /**
2165
+ * Container
2166
+ * @see https://tailwindcss.com/docs/container
2167
+ */
2168
+ container: ['container'],
2169
+ /**
2170
+ * Columns
2171
+ * @see https://tailwindcss.com/docs/columns
2172
+ */
2173
+ columns: [{
2174
+ columns: [isTshirtSize]
2175
+ }],
2176
+ /**
2177
+ * Break After
2178
+ * @see https://tailwindcss.com/docs/break-after
2179
+ */
2180
+ 'break-after': [{
2181
+ 'break-after': getBreaks()
2182
+ }],
2183
+ /**
2184
+ * Break Before
2185
+ * @see https://tailwindcss.com/docs/break-before
2186
+ */
2187
+ 'break-before': [{
2188
+ 'break-before': getBreaks()
2189
+ }],
2190
+ /**
2191
+ * Break Inside
2192
+ * @see https://tailwindcss.com/docs/break-inside
2193
+ */
2194
+ 'break-inside': [{
2195
+ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']
2196
+ }],
2197
+ /**
2198
+ * Box Decoration Break
2199
+ * @see https://tailwindcss.com/docs/box-decoration-break
2200
+ */
2201
+ 'box-decoration': [{
2202
+ 'box-decoration': ['slice', 'clone']
2203
+ }],
2204
+ /**
2205
+ * Box Sizing
2206
+ * @see https://tailwindcss.com/docs/box-sizing
2207
+ */
2208
+ box: [{
2209
+ box: ['border', 'content']
2210
+ }],
2211
+ /**
2212
+ * Display
2213
+ * @see https://tailwindcss.com/docs/display
2214
+ */
2215
+ 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'],
2216
+ /**
2217
+ * Floats
2218
+ * @see https://tailwindcss.com/docs/float
2219
+ */
2220
+ float: [{
2221
+ float: ['right', 'left', 'none', 'start', 'end']
2222
+ }],
2223
+ /**
2224
+ * Clear
2225
+ * @see https://tailwindcss.com/docs/clear
2226
+ */
2227
+ clear: [{
2228
+ clear: ['left', 'right', 'both', 'none', 'start', 'end']
2229
+ }],
2230
+ /**
2231
+ * Isolation
2232
+ * @see https://tailwindcss.com/docs/isolation
2233
+ */
2234
+ isolation: ['isolate', 'isolation-auto'],
2235
+ /**
2236
+ * Object Fit
2237
+ * @see https://tailwindcss.com/docs/object-fit
2238
+ */
2239
+ 'object-fit': [{
2240
+ object: ['contain', 'cover', 'fill', 'none', 'scale-down']
2241
+ }],
2242
+ /**
2243
+ * Object Position
2244
+ * @see https://tailwindcss.com/docs/object-position
2245
+ */
2246
+ 'object-position': [{
2247
+ object: [...getPositions(), isArbitraryValue]
2248
+ }],
2249
+ /**
2250
+ * Overflow
2251
+ * @see https://tailwindcss.com/docs/overflow
2252
+ */
2253
+ overflow: [{
2254
+ overflow: getOverflow()
2255
+ }],
2256
+ /**
2257
+ * Overflow X
2258
+ * @see https://tailwindcss.com/docs/overflow
2259
+ */
2260
+ 'overflow-x': [{
2261
+ 'overflow-x': getOverflow()
2262
+ }],
2263
+ /**
2264
+ * Overflow Y
2265
+ * @see https://tailwindcss.com/docs/overflow
2266
+ */
2267
+ 'overflow-y': [{
2268
+ 'overflow-y': getOverflow()
2269
+ }],
2270
+ /**
2271
+ * Overscroll Behavior
2272
+ * @see https://tailwindcss.com/docs/overscroll-behavior
2273
+ */
2274
+ overscroll: [{
2275
+ overscroll: getOverscroll()
2276
+ }],
2277
+ /**
2278
+ * Overscroll Behavior X
2279
+ * @see https://tailwindcss.com/docs/overscroll-behavior
2280
+ */
2281
+ 'overscroll-x': [{
2282
+ 'overscroll-x': getOverscroll()
2283
+ }],
2284
+ /**
2285
+ * Overscroll Behavior Y
2286
+ * @see https://tailwindcss.com/docs/overscroll-behavior
2287
+ */
2288
+ 'overscroll-y': [{
2289
+ 'overscroll-y': getOverscroll()
2290
+ }],
2291
+ /**
2292
+ * Position
2293
+ * @see https://tailwindcss.com/docs/position
2294
+ */
2295
+ position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],
2296
+ /**
2297
+ * Top / Right / Bottom / Left
2298
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2299
+ */
2300
+ inset: [{
2301
+ inset: [inset]
2302
+ }],
2303
+ /**
2304
+ * Right / Left
2305
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2306
+ */
2307
+ 'inset-x': [{
2308
+ 'inset-x': [inset]
2309
+ }],
2310
+ /**
2311
+ * Top / Bottom
2312
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2313
+ */
2314
+ 'inset-y': [{
2315
+ 'inset-y': [inset]
2316
+ }],
2317
+ /**
2318
+ * Start
2319
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2320
+ */
2321
+ start: [{
2322
+ start: [inset]
2323
+ }],
2324
+ /**
2325
+ * End
2326
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2327
+ */
2328
+ end: [{
2329
+ end: [inset]
2330
+ }],
2331
+ /**
2332
+ * Top
2333
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2334
+ */
2335
+ top: [{
2336
+ top: [inset]
2337
+ }],
2338
+ /**
2339
+ * Right
2340
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2341
+ */
2342
+ right: [{
2343
+ right: [inset]
2344
+ }],
2345
+ /**
2346
+ * Bottom
2347
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2348
+ */
2349
+ bottom: [{
2350
+ bottom: [inset]
2351
+ }],
2352
+ /**
2353
+ * Left
2354
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2355
+ */
2356
+ left: [{
2357
+ left: [inset]
2358
+ }],
2359
+ /**
2360
+ * Visibility
2361
+ * @see https://tailwindcss.com/docs/visibility
2362
+ */
2363
+ visibility: ['visible', 'invisible', 'collapse'],
2364
+ /**
2365
+ * Z-Index
2366
+ * @see https://tailwindcss.com/docs/z-index
2367
+ */
2368
+ z: [{
2369
+ z: ['auto', isInteger, isArbitraryValue]
2370
+ }],
2371
+ // Flexbox and Grid
2372
+ /**
2373
+ * Flex Basis
2374
+ * @see https://tailwindcss.com/docs/flex-basis
2375
+ */
2376
+ basis: [{
2377
+ basis: getSpacingWithAutoAndArbitrary()
2378
+ }],
2379
+ /**
2380
+ * Flex Direction
2381
+ * @see https://tailwindcss.com/docs/flex-direction
2382
+ */
2383
+ 'flex-direction': [{
2384
+ flex: ['row', 'row-reverse', 'col', 'col-reverse']
2385
+ }],
2386
+ /**
2387
+ * Flex Wrap
2388
+ * @see https://tailwindcss.com/docs/flex-wrap
2389
+ */
2390
+ 'flex-wrap': [{
2391
+ flex: ['wrap', 'wrap-reverse', 'nowrap']
2392
+ }],
2393
+ /**
2394
+ * Flex
2395
+ * @see https://tailwindcss.com/docs/flex
2396
+ */
2397
+ flex: [{
2398
+ flex: ['1', 'auto', 'initial', 'none', isArbitraryValue]
2399
+ }],
2400
+ /**
2401
+ * Flex Grow
2402
+ * @see https://tailwindcss.com/docs/flex-grow
2403
+ */
2404
+ grow: [{
2405
+ grow: getZeroAndEmpty()
2406
+ }],
2407
+ /**
2408
+ * Flex Shrink
2409
+ * @see https://tailwindcss.com/docs/flex-shrink
2410
+ */
2411
+ shrink: [{
2412
+ shrink: getZeroAndEmpty()
2413
+ }],
2414
+ /**
2415
+ * Order
2416
+ * @see https://tailwindcss.com/docs/order
2417
+ */
2418
+ order: [{
2419
+ order: ['first', 'last', 'none', isInteger, isArbitraryValue]
2420
+ }],
2421
+ /**
2422
+ * Grid Template Columns
2423
+ * @see https://tailwindcss.com/docs/grid-template-columns
2424
+ */
2425
+ 'grid-cols': [{
2426
+ 'grid-cols': [isAny]
2427
+ }],
2428
+ /**
2429
+ * Grid Column Start / End
2430
+ * @see https://tailwindcss.com/docs/grid-column
2431
+ */
2432
+ 'col-start-end': [{
2433
+ col: ['auto', {
2434
+ span: ['full', isInteger, isArbitraryValue]
2435
+ }, isArbitraryValue]
2436
+ }],
2437
+ /**
2438
+ * Grid Column Start
2439
+ * @see https://tailwindcss.com/docs/grid-column
2440
+ */
2441
+ 'col-start': [{
2442
+ 'col-start': getNumberWithAutoAndArbitrary()
2443
+ }],
2444
+ /**
2445
+ * Grid Column End
2446
+ * @see https://tailwindcss.com/docs/grid-column
2447
+ */
2448
+ 'col-end': [{
2449
+ 'col-end': getNumberWithAutoAndArbitrary()
2450
+ }],
2451
+ /**
2452
+ * Grid Template Rows
2453
+ * @see https://tailwindcss.com/docs/grid-template-rows
2454
+ */
2455
+ 'grid-rows': [{
2456
+ 'grid-rows': [isAny]
2457
+ }],
2458
+ /**
2459
+ * Grid Row Start / End
2460
+ * @see https://tailwindcss.com/docs/grid-row
2461
+ */
2462
+ 'row-start-end': [{
2463
+ row: ['auto', {
2464
+ span: [isInteger, isArbitraryValue]
2465
+ }, isArbitraryValue]
2466
+ }],
2467
+ /**
2468
+ * Grid Row Start
2469
+ * @see https://tailwindcss.com/docs/grid-row
2470
+ */
2471
+ 'row-start': [{
2472
+ 'row-start': getNumberWithAutoAndArbitrary()
2473
+ }],
2474
+ /**
2475
+ * Grid Row End
2476
+ * @see https://tailwindcss.com/docs/grid-row
2477
+ */
2478
+ 'row-end': [{
2479
+ 'row-end': getNumberWithAutoAndArbitrary()
2480
+ }],
2481
+ /**
2482
+ * Grid Auto Flow
2483
+ * @see https://tailwindcss.com/docs/grid-auto-flow
2484
+ */
2485
+ 'grid-flow': [{
2486
+ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']
2487
+ }],
2488
+ /**
2489
+ * Grid Auto Columns
2490
+ * @see https://tailwindcss.com/docs/grid-auto-columns
2491
+ */
2492
+ 'auto-cols': [{
2493
+ 'auto-cols': ['auto', 'min', 'max', 'fr', isArbitraryValue]
2494
+ }],
2495
+ /**
2496
+ * Grid Auto Rows
2497
+ * @see https://tailwindcss.com/docs/grid-auto-rows
2498
+ */
2499
+ 'auto-rows': [{
2500
+ 'auto-rows': ['auto', 'min', 'max', 'fr', isArbitraryValue]
2501
+ }],
2502
+ /**
2503
+ * Gap
2504
+ * @see https://tailwindcss.com/docs/gap
2505
+ */
2506
+ gap: [{
2507
+ gap: [gap]
2508
+ }],
2509
+ /**
2510
+ * Gap X
2511
+ * @see https://tailwindcss.com/docs/gap
2512
+ */
2513
+ 'gap-x': [{
2514
+ 'gap-x': [gap]
2515
+ }],
2516
+ /**
2517
+ * Gap Y
2518
+ * @see https://tailwindcss.com/docs/gap
2519
+ */
2520
+ 'gap-y': [{
2521
+ 'gap-y': [gap]
2522
+ }],
2523
+ /**
2524
+ * Justify Content
2525
+ * @see https://tailwindcss.com/docs/justify-content
2526
+ */
2527
+ 'justify-content': [{
2528
+ justify: ['normal', ...getAlign()]
2529
+ }],
2530
+ /**
2531
+ * Justify Items
2532
+ * @see https://tailwindcss.com/docs/justify-items
2533
+ */
2534
+ 'justify-items': [{
2535
+ 'justify-items': ['start', 'end', 'center', 'stretch']
2536
+ }],
2537
+ /**
2538
+ * Justify Self
2539
+ * @see https://tailwindcss.com/docs/justify-self
2540
+ */
2541
+ 'justify-self': [{
2542
+ 'justify-self': ['auto', 'start', 'end', 'center', 'stretch']
2543
+ }],
2544
+ /**
2545
+ * Align Content
2546
+ * @see https://tailwindcss.com/docs/align-content
2547
+ */
2548
+ 'align-content': [{
2549
+ content: ['normal', ...getAlign(), 'baseline']
2550
+ }],
2551
+ /**
2552
+ * Align Items
2553
+ * @see https://tailwindcss.com/docs/align-items
2554
+ */
2555
+ 'align-items': [{
2556
+ items: ['start', 'end', 'center', 'baseline', 'stretch']
2557
+ }],
2558
+ /**
2559
+ * Align Self
2560
+ * @see https://tailwindcss.com/docs/align-self
2561
+ */
2562
+ 'align-self': [{
2563
+ self: ['auto', 'start', 'end', 'center', 'stretch', 'baseline']
2564
+ }],
2565
+ /**
2566
+ * Place Content
2567
+ * @see https://tailwindcss.com/docs/place-content
2568
+ */
2569
+ 'place-content': [{
2570
+ 'place-content': [...getAlign(), 'baseline']
2571
+ }],
2572
+ /**
2573
+ * Place Items
2574
+ * @see https://tailwindcss.com/docs/place-items
2575
+ */
2576
+ 'place-items': [{
2577
+ 'place-items': ['start', 'end', 'center', 'baseline', 'stretch']
2578
+ }],
2579
+ /**
2580
+ * Place Self
2581
+ * @see https://tailwindcss.com/docs/place-self
2582
+ */
2583
+ 'place-self': [{
2584
+ 'place-self': ['auto', 'start', 'end', 'center', 'stretch']
2585
+ }],
2586
+ // Spacing
2587
+ /**
2588
+ * Padding
2589
+ * @see https://tailwindcss.com/docs/padding
2590
+ */
2591
+ p: [{
2592
+ p: [padding]
2593
+ }],
2594
+ /**
2595
+ * Padding X
2596
+ * @see https://tailwindcss.com/docs/padding
2597
+ */
2598
+ px: [{
2599
+ px: [padding]
2600
+ }],
2601
+ /**
2602
+ * Padding Y
2603
+ * @see https://tailwindcss.com/docs/padding
2604
+ */
2605
+ py: [{
2606
+ py: [padding]
2607
+ }],
2608
+ /**
2609
+ * Padding Start
2610
+ * @see https://tailwindcss.com/docs/padding
2611
+ */
2612
+ ps: [{
2613
+ ps: [padding]
2614
+ }],
2615
+ /**
2616
+ * Padding End
2617
+ * @see https://tailwindcss.com/docs/padding
2618
+ */
2619
+ pe: [{
2620
+ pe: [padding]
2621
+ }],
2622
+ /**
2623
+ * Padding Top
2624
+ * @see https://tailwindcss.com/docs/padding
2625
+ */
2626
+ pt: [{
2627
+ pt: [padding]
2628
+ }],
2629
+ /**
2630
+ * Padding Right
2631
+ * @see https://tailwindcss.com/docs/padding
2632
+ */
2633
+ pr: [{
2634
+ pr: [padding]
2635
+ }],
2636
+ /**
2637
+ * Padding Bottom
2638
+ * @see https://tailwindcss.com/docs/padding
2639
+ */
2640
+ pb: [{
2641
+ pb: [padding]
2642
+ }],
2643
+ /**
2644
+ * Padding Left
2645
+ * @see https://tailwindcss.com/docs/padding
2646
+ */
2647
+ pl: [{
2648
+ pl: [padding]
2649
+ }],
2650
+ /**
2651
+ * Margin
2652
+ * @see https://tailwindcss.com/docs/margin
2653
+ */
2654
+ m: [{
2655
+ m: [margin]
2656
+ }],
2657
+ /**
2658
+ * Margin X
2659
+ * @see https://tailwindcss.com/docs/margin
2660
+ */
2661
+ mx: [{
2662
+ mx: [margin]
2663
+ }],
2664
+ /**
2665
+ * Margin Y
2666
+ * @see https://tailwindcss.com/docs/margin
2667
+ */
2668
+ my: [{
2669
+ my: [margin]
2670
+ }],
2671
+ /**
2672
+ * Margin Start
2673
+ * @see https://tailwindcss.com/docs/margin
2674
+ */
2675
+ ms: [{
2676
+ ms: [margin]
2677
+ }],
2678
+ /**
2679
+ * Margin End
2680
+ * @see https://tailwindcss.com/docs/margin
2681
+ */
2682
+ me: [{
2683
+ me: [margin]
2684
+ }],
2685
+ /**
2686
+ * Margin Top
2687
+ * @see https://tailwindcss.com/docs/margin
2688
+ */
2689
+ mt: [{
2690
+ mt: [margin]
2691
+ }],
2692
+ /**
2693
+ * Margin Right
2694
+ * @see https://tailwindcss.com/docs/margin
2695
+ */
2696
+ mr: [{
2697
+ mr: [margin]
2698
+ }],
2699
+ /**
2700
+ * Margin Bottom
2701
+ * @see https://tailwindcss.com/docs/margin
2702
+ */
2703
+ mb: [{
2704
+ mb: [margin]
2705
+ }],
2706
+ /**
2707
+ * Margin Left
2708
+ * @see https://tailwindcss.com/docs/margin
2709
+ */
2710
+ ml: [{
2711
+ ml: [margin]
2712
+ }],
2713
+ /**
2714
+ * Space Between X
2715
+ * @see https://tailwindcss.com/docs/space
2716
+ */
2717
+ 'space-x': [{
2718
+ 'space-x': [space]
2719
+ }],
2720
+ /**
2721
+ * Space Between X Reverse
2722
+ * @see https://tailwindcss.com/docs/space
2723
+ */
2724
+ 'space-x-reverse': ['space-x-reverse'],
2725
+ /**
2726
+ * Space Between Y
2727
+ * @see https://tailwindcss.com/docs/space
2728
+ */
2729
+ 'space-y': [{
2730
+ 'space-y': [space]
2731
+ }],
2732
+ /**
2733
+ * Space Between Y Reverse
2734
+ * @see https://tailwindcss.com/docs/space
2735
+ */
2736
+ 'space-y-reverse': ['space-y-reverse'],
2737
+ // Sizing
2738
+ /**
2739
+ * Width
2740
+ * @see https://tailwindcss.com/docs/width
2741
+ */
2742
+ w: [{
2743
+ w: ['auto', 'min', 'max', 'fit', 'svw', 'lvw', 'dvw', isArbitraryValue, spacing]
2744
+ }],
2745
+ /**
2746
+ * Min-Width
2747
+ * @see https://tailwindcss.com/docs/min-width
2748
+ */
2749
+ 'min-w': [{
2750
+ 'min-w': [isArbitraryValue, spacing, 'min', 'max', 'fit']
2751
+ }],
2752
+ /**
2753
+ * Max-Width
2754
+ * @see https://tailwindcss.com/docs/max-width
2755
+ */
2756
+ 'max-w': [{
2757
+ 'max-w': [isArbitraryValue, spacing, 'none', 'full', 'min', 'max', 'fit', 'prose', {
2758
+ screen: [isTshirtSize]
2759
+ }, isTshirtSize]
2760
+ }],
2761
+ /**
2762
+ * Height
2763
+ * @see https://tailwindcss.com/docs/height
2764
+ */
2765
+ h: [{
2766
+ h: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']
2767
+ }],
2768
+ /**
2769
+ * Min-Height
2770
+ * @see https://tailwindcss.com/docs/min-height
2771
+ */
2772
+ 'min-h': [{
2773
+ 'min-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']
2774
+ }],
2775
+ /**
2776
+ * Max-Height
2777
+ * @see https://tailwindcss.com/docs/max-height
2778
+ */
2779
+ 'max-h': [{
2780
+ 'max-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh']
2781
+ }],
2782
+ /**
2783
+ * Size
2784
+ * @see https://tailwindcss.com/docs/size
2785
+ */
2786
+ size: [{
2787
+ size: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit']
2788
+ }],
2789
+ // Typography
2790
+ /**
2791
+ * Font Size
2792
+ * @see https://tailwindcss.com/docs/font-size
2793
+ */
2794
+ 'font-size': [{
2795
+ text: ['base', isTshirtSize, isArbitraryLength]
2796
+ }],
2797
+ /**
2798
+ * Font Smoothing
2799
+ * @see https://tailwindcss.com/docs/font-smoothing
2800
+ */
2801
+ 'font-smoothing': ['antialiased', 'subpixel-antialiased'],
2802
+ /**
2803
+ * Font Style
2804
+ * @see https://tailwindcss.com/docs/font-style
2805
+ */
2806
+ 'font-style': ['italic', 'not-italic'],
2807
+ /**
2808
+ * Font Weight
2809
+ * @see https://tailwindcss.com/docs/font-weight
2810
+ */
2811
+ 'font-weight': [{
2812
+ font: ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black', isArbitraryNumber]
2813
+ }],
2814
+ /**
2815
+ * Font Family
2816
+ * @see https://tailwindcss.com/docs/font-family
2817
+ */
2818
+ 'font-family': [{
2819
+ font: [isAny]
2820
+ }],
2821
+ /**
2822
+ * Font Variant Numeric
2823
+ * @see https://tailwindcss.com/docs/font-variant-numeric
2824
+ */
2825
+ 'fvn-normal': ['normal-nums'],
2826
+ /**
2827
+ * Font Variant Numeric
2828
+ * @see https://tailwindcss.com/docs/font-variant-numeric
2829
+ */
2830
+ 'fvn-ordinal': ['ordinal'],
2831
+ /**
2832
+ * Font Variant Numeric
2833
+ * @see https://tailwindcss.com/docs/font-variant-numeric
2834
+ */
2835
+ 'fvn-slashed-zero': ['slashed-zero'],
2836
+ /**
2837
+ * Font Variant Numeric
2838
+ * @see https://tailwindcss.com/docs/font-variant-numeric
2839
+ */
2840
+ 'fvn-figure': ['lining-nums', 'oldstyle-nums'],
2841
+ /**
2842
+ * Font Variant Numeric
2843
+ * @see https://tailwindcss.com/docs/font-variant-numeric
2844
+ */
2845
+ 'fvn-spacing': ['proportional-nums', 'tabular-nums'],
2846
+ /**
2847
+ * Font Variant Numeric
2848
+ * @see https://tailwindcss.com/docs/font-variant-numeric
2849
+ */
2850
+ 'fvn-fraction': ['diagonal-fractions', 'stacked-fractons'],
2851
+ /**
2852
+ * Letter Spacing
2853
+ * @see https://tailwindcss.com/docs/letter-spacing
2854
+ */
2855
+ tracking: [{
2856
+ tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest', isArbitraryValue]
2857
+ }],
2858
+ /**
2859
+ * Line Clamp
2860
+ * @see https://tailwindcss.com/docs/line-clamp
2861
+ */
2862
+ 'line-clamp': [{
2863
+ 'line-clamp': ['none', isNumber, isArbitraryNumber]
2864
+ }],
2865
+ /**
2866
+ * Line Height
2867
+ * @see https://tailwindcss.com/docs/line-height
2868
+ */
2869
+ leading: [{
2870
+ leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose', isLength, isArbitraryValue]
2871
+ }],
2872
+ /**
2873
+ * List Style Image
2874
+ * @see https://tailwindcss.com/docs/list-style-image
2875
+ */
2876
+ 'list-image': [{
2877
+ 'list-image': ['none', isArbitraryValue]
2878
+ }],
2879
+ /**
2880
+ * List Style Type
2881
+ * @see https://tailwindcss.com/docs/list-style-type
2882
+ */
2883
+ 'list-style-type': [{
2884
+ list: ['none', 'disc', 'decimal', isArbitraryValue]
2885
+ }],
2886
+ /**
2887
+ * List Style Position
2888
+ * @see https://tailwindcss.com/docs/list-style-position
2889
+ */
2890
+ 'list-style-position': [{
2891
+ list: ['inside', 'outside']
2892
+ }],
2893
+ /**
2894
+ * Placeholder Color
2895
+ * @deprecated since Tailwind CSS v3.0.0
2896
+ * @see https://tailwindcss.com/docs/placeholder-color
2897
+ */
2898
+ 'placeholder-color': [{
2899
+ placeholder: [colors]
2900
+ }],
2901
+ /**
2902
+ * Placeholder Opacity
2903
+ * @see https://tailwindcss.com/docs/placeholder-opacity
2904
+ */
2905
+ 'placeholder-opacity': [{
2906
+ 'placeholder-opacity': [opacity]
2907
+ }],
2908
+ /**
2909
+ * Text Alignment
2910
+ * @see https://tailwindcss.com/docs/text-align
2911
+ */
2912
+ 'text-alignment': [{
2913
+ text: ['left', 'center', 'right', 'justify', 'start', 'end']
2914
+ }],
2915
+ /**
2916
+ * Text Color
2917
+ * @see https://tailwindcss.com/docs/text-color
2918
+ */
2919
+ 'text-color': [{
2920
+ text: [colors]
2921
+ }],
2922
+ /**
2923
+ * Text Opacity
2924
+ * @see https://tailwindcss.com/docs/text-opacity
2925
+ */
2926
+ 'text-opacity': [{
2927
+ 'text-opacity': [opacity]
2928
+ }],
2929
+ /**
2930
+ * Text Decoration
2931
+ * @see https://tailwindcss.com/docs/text-decoration
2932
+ */
2933
+ 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],
2934
+ /**
2935
+ * Text Decoration Style
2936
+ * @see https://tailwindcss.com/docs/text-decoration-style
2937
+ */
2938
+ 'text-decoration-style': [{
2939
+ decoration: [...getLineStyles(), 'wavy']
2940
+ }],
2941
+ /**
2942
+ * Text Decoration Thickness
2943
+ * @see https://tailwindcss.com/docs/text-decoration-thickness
2944
+ */
2945
+ 'text-decoration-thickness': [{
2946
+ decoration: ['auto', 'from-font', isLength, isArbitraryLength]
2947
+ }],
2948
+ /**
2949
+ * Text Underline Offset
2950
+ * @see https://tailwindcss.com/docs/text-underline-offset
2951
+ */
2952
+ 'underline-offset': [{
2953
+ 'underline-offset': ['auto', isLength, isArbitraryValue]
2954
+ }],
2955
+ /**
2956
+ * Text Decoration Color
2957
+ * @see https://tailwindcss.com/docs/text-decoration-color
2958
+ */
2959
+ 'text-decoration-color': [{
2960
+ decoration: [colors]
2961
+ }],
2962
+ /**
2963
+ * Text Transform
2964
+ * @see https://tailwindcss.com/docs/text-transform
2965
+ */
2966
+ 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],
2967
+ /**
2968
+ * Text Overflow
2969
+ * @see https://tailwindcss.com/docs/text-overflow
2970
+ */
2971
+ 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],
2972
+ /**
2973
+ * Text Wrap
2974
+ * @see https://tailwindcss.com/docs/text-wrap
2975
+ */
2976
+ 'text-wrap': [{
2977
+ text: ['wrap', 'nowrap', 'balance', 'pretty']
2978
+ }],
2979
+ /**
2980
+ * Text Indent
2981
+ * @see https://tailwindcss.com/docs/text-indent
2982
+ */
2983
+ indent: [{
2984
+ indent: getSpacingWithArbitrary()
2985
+ }],
2986
+ /**
2987
+ * Vertical Alignment
2988
+ * @see https://tailwindcss.com/docs/vertical-align
2989
+ */
2990
+ 'vertical-align': [{
2991
+ align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryValue]
2992
+ }],
2993
+ /**
2994
+ * Whitespace
2995
+ * @see https://tailwindcss.com/docs/whitespace
2996
+ */
2997
+ whitespace: [{
2998
+ whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']
2999
+ }],
3000
+ /**
3001
+ * Word Break
3002
+ * @see https://tailwindcss.com/docs/word-break
3003
+ */
3004
+ break: [{
3005
+ break: ['normal', 'words', 'all', 'keep']
3006
+ }],
3007
+ /**
3008
+ * Hyphens
3009
+ * @see https://tailwindcss.com/docs/hyphens
3010
+ */
3011
+ hyphens: [{
3012
+ hyphens: ['none', 'manual', 'auto']
3013
+ }],
3014
+ /**
3015
+ * Content
3016
+ * @see https://tailwindcss.com/docs/content
3017
+ */
3018
+ content: [{
3019
+ content: ['none', isArbitraryValue]
3020
+ }],
3021
+ // Backgrounds
3022
+ /**
3023
+ * Background Attachment
3024
+ * @see https://tailwindcss.com/docs/background-attachment
3025
+ */
3026
+ 'bg-attachment': [{
3027
+ bg: ['fixed', 'local', 'scroll']
3028
+ }],
3029
+ /**
3030
+ * Background Clip
3031
+ * @see https://tailwindcss.com/docs/background-clip
3032
+ */
3033
+ 'bg-clip': [{
3034
+ 'bg-clip': ['border', 'padding', 'content', 'text']
3035
+ }],
3036
+ /**
3037
+ * Background Opacity
3038
+ * @deprecated since Tailwind CSS v3.0.0
3039
+ * @see https://tailwindcss.com/docs/background-opacity
3040
+ */
3041
+ 'bg-opacity': [{
3042
+ 'bg-opacity': [opacity]
3043
+ }],
3044
+ /**
3045
+ * Background Origin
3046
+ * @see https://tailwindcss.com/docs/background-origin
3047
+ */
3048
+ 'bg-origin': [{
3049
+ 'bg-origin': ['border', 'padding', 'content']
3050
+ }],
3051
+ /**
3052
+ * Background Position
3053
+ * @see https://tailwindcss.com/docs/background-position
3054
+ */
3055
+ 'bg-position': [{
3056
+ bg: [...getPositions(), isArbitraryPosition]
3057
+ }],
3058
+ /**
3059
+ * Background Repeat
3060
+ * @see https://tailwindcss.com/docs/background-repeat
3061
+ */
3062
+ 'bg-repeat': [{
3063
+ bg: ['no-repeat', {
3064
+ repeat: ['', 'x', 'y', 'round', 'space']
3065
+ }]
3066
+ }],
3067
+ /**
3068
+ * Background Size
3069
+ * @see https://tailwindcss.com/docs/background-size
3070
+ */
3071
+ 'bg-size': [{
3072
+ bg: ['auto', 'cover', 'contain', isArbitrarySize]
3073
+ }],
3074
+ /**
3075
+ * Background Image
3076
+ * @see https://tailwindcss.com/docs/background-image
3077
+ */
3078
+ 'bg-image': [{
3079
+ bg: ['none', {
3080
+ 'gradient-to': ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']
3081
+ }, isArbitraryImage]
3082
+ }],
3083
+ /**
3084
+ * Background Color
3085
+ * @see https://tailwindcss.com/docs/background-color
3086
+ */
3087
+ 'bg-color': [{
3088
+ bg: [colors]
3089
+ }],
3090
+ /**
3091
+ * Gradient Color Stops From Position
3092
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3093
+ */
3094
+ 'gradient-from-pos': [{
3095
+ from: [gradientColorStopPositions]
3096
+ }],
3097
+ /**
3098
+ * Gradient Color Stops Via Position
3099
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3100
+ */
3101
+ 'gradient-via-pos': [{
3102
+ via: [gradientColorStopPositions]
3103
+ }],
3104
+ /**
3105
+ * Gradient Color Stops To Position
3106
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3107
+ */
3108
+ 'gradient-to-pos': [{
3109
+ to: [gradientColorStopPositions]
3110
+ }],
3111
+ /**
3112
+ * Gradient Color Stops From
3113
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3114
+ */
3115
+ 'gradient-from': [{
3116
+ from: [gradientColorStops]
3117
+ }],
3118
+ /**
3119
+ * Gradient Color Stops Via
3120
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3121
+ */
3122
+ 'gradient-via': [{
3123
+ via: [gradientColorStops]
3124
+ }],
3125
+ /**
3126
+ * Gradient Color Stops To
3127
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3128
+ */
3129
+ 'gradient-to': [{
3130
+ to: [gradientColorStops]
3131
+ }],
3132
+ // Borders
3133
+ /**
3134
+ * Border Radius
3135
+ * @see https://tailwindcss.com/docs/border-radius
3136
+ */
3137
+ rounded: [{
3138
+ rounded: [borderRadius]
3139
+ }],
3140
+ /**
3141
+ * Border Radius Start
3142
+ * @see https://tailwindcss.com/docs/border-radius
3143
+ */
3144
+ 'rounded-s': [{
3145
+ 'rounded-s': [borderRadius]
3146
+ }],
3147
+ /**
3148
+ * Border Radius End
3149
+ * @see https://tailwindcss.com/docs/border-radius
3150
+ */
3151
+ 'rounded-e': [{
3152
+ 'rounded-e': [borderRadius]
3153
+ }],
3154
+ /**
3155
+ * Border Radius Top
3156
+ * @see https://tailwindcss.com/docs/border-radius
3157
+ */
3158
+ 'rounded-t': [{
3159
+ 'rounded-t': [borderRadius]
3160
+ }],
3161
+ /**
3162
+ * Border Radius Right
3163
+ * @see https://tailwindcss.com/docs/border-radius
3164
+ */
3165
+ 'rounded-r': [{
3166
+ 'rounded-r': [borderRadius]
3167
+ }],
3168
+ /**
3169
+ * Border Radius Bottom
3170
+ * @see https://tailwindcss.com/docs/border-radius
3171
+ */
3172
+ 'rounded-b': [{
3173
+ 'rounded-b': [borderRadius]
3174
+ }],
3175
+ /**
3176
+ * Border Radius Left
3177
+ * @see https://tailwindcss.com/docs/border-radius
3178
+ */
3179
+ 'rounded-l': [{
3180
+ 'rounded-l': [borderRadius]
3181
+ }],
3182
+ /**
3183
+ * Border Radius Start Start
3184
+ * @see https://tailwindcss.com/docs/border-radius
3185
+ */
3186
+ 'rounded-ss': [{
3187
+ 'rounded-ss': [borderRadius]
3188
+ }],
3189
+ /**
3190
+ * Border Radius Start End
3191
+ * @see https://tailwindcss.com/docs/border-radius
3192
+ */
3193
+ 'rounded-se': [{
3194
+ 'rounded-se': [borderRadius]
3195
+ }],
3196
+ /**
3197
+ * Border Radius End End
3198
+ * @see https://tailwindcss.com/docs/border-radius
3199
+ */
3200
+ 'rounded-ee': [{
3201
+ 'rounded-ee': [borderRadius]
3202
+ }],
3203
+ /**
3204
+ * Border Radius End Start
3205
+ * @see https://tailwindcss.com/docs/border-radius
3206
+ */
3207
+ 'rounded-es': [{
3208
+ 'rounded-es': [borderRadius]
3209
+ }],
3210
+ /**
3211
+ * Border Radius Top Left
3212
+ * @see https://tailwindcss.com/docs/border-radius
3213
+ */
3214
+ 'rounded-tl': [{
3215
+ 'rounded-tl': [borderRadius]
3216
+ }],
3217
+ /**
3218
+ * Border Radius Top Right
3219
+ * @see https://tailwindcss.com/docs/border-radius
3220
+ */
3221
+ 'rounded-tr': [{
3222
+ 'rounded-tr': [borderRadius]
3223
+ }],
3224
+ /**
3225
+ * Border Radius Bottom Right
3226
+ * @see https://tailwindcss.com/docs/border-radius
3227
+ */
3228
+ 'rounded-br': [{
3229
+ 'rounded-br': [borderRadius]
3230
+ }],
3231
+ /**
3232
+ * Border Radius Bottom Left
3233
+ * @see https://tailwindcss.com/docs/border-radius
3234
+ */
3235
+ 'rounded-bl': [{
3236
+ 'rounded-bl': [borderRadius]
3237
+ }],
3238
+ /**
3239
+ * Border Width
3240
+ * @see https://tailwindcss.com/docs/border-width
3241
+ */
3242
+ 'border-w': [{
3243
+ border: [borderWidth]
3244
+ }],
3245
+ /**
3246
+ * Border Width X
3247
+ * @see https://tailwindcss.com/docs/border-width
3248
+ */
3249
+ 'border-w-x': [{
3250
+ 'border-x': [borderWidth]
3251
+ }],
3252
+ /**
3253
+ * Border Width Y
3254
+ * @see https://tailwindcss.com/docs/border-width
3255
+ */
3256
+ 'border-w-y': [{
3257
+ 'border-y': [borderWidth]
3258
+ }],
3259
+ /**
3260
+ * Border Width Start
3261
+ * @see https://tailwindcss.com/docs/border-width
3262
+ */
3263
+ 'border-w-s': [{
3264
+ 'border-s': [borderWidth]
3265
+ }],
3266
+ /**
3267
+ * Border Width End
3268
+ * @see https://tailwindcss.com/docs/border-width
3269
+ */
3270
+ 'border-w-e': [{
3271
+ 'border-e': [borderWidth]
3272
+ }],
3273
+ /**
3274
+ * Border Width Top
3275
+ * @see https://tailwindcss.com/docs/border-width
3276
+ */
3277
+ 'border-w-t': [{
3278
+ 'border-t': [borderWidth]
3279
+ }],
3280
+ /**
3281
+ * Border Width Right
3282
+ * @see https://tailwindcss.com/docs/border-width
3283
+ */
3284
+ 'border-w-r': [{
3285
+ 'border-r': [borderWidth]
3286
+ }],
3287
+ /**
3288
+ * Border Width Bottom
3289
+ * @see https://tailwindcss.com/docs/border-width
3290
+ */
3291
+ 'border-w-b': [{
3292
+ 'border-b': [borderWidth]
3293
+ }],
3294
+ /**
3295
+ * Border Width Left
3296
+ * @see https://tailwindcss.com/docs/border-width
3297
+ */
3298
+ 'border-w-l': [{
3299
+ 'border-l': [borderWidth]
3300
+ }],
3301
+ /**
3302
+ * Border Opacity
3303
+ * @see https://tailwindcss.com/docs/border-opacity
3304
+ */
3305
+ 'border-opacity': [{
3306
+ 'border-opacity': [opacity]
3307
+ }],
3308
+ /**
3309
+ * Border Style
3310
+ * @see https://tailwindcss.com/docs/border-style
3311
+ */
3312
+ 'border-style': [{
3313
+ border: [...getLineStyles(), 'hidden']
3314
+ }],
3315
+ /**
3316
+ * Divide Width X
3317
+ * @see https://tailwindcss.com/docs/divide-width
3318
+ */
3319
+ 'divide-x': [{
3320
+ 'divide-x': [borderWidth]
3321
+ }],
3322
+ /**
3323
+ * Divide Width X Reverse
3324
+ * @see https://tailwindcss.com/docs/divide-width
3325
+ */
3326
+ 'divide-x-reverse': ['divide-x-reverse'],
3327
+ /**
3328
+ * Divide Width Y
3329
+ * @see https://tailwindcss.com/docs/divide-width
3330
+ */
3331
+ 'divide-y': [{
3332
+ 'divide-y': [borderWidth]
3333
+ }],
3334
+ /**
3335
+ * Divide Width Y Reverse
3336
+ * @see https://tailwindcss.com/docs/divide-width
3337
+ */
3338
+ 'divide-y-reverse': ['divide-y-reverse'],
3339
+ /**
3340
+ * Divide Opacity
3341
+ * @see https://tailwindcss.com/docs/divide-opacity
3342
+ */
3343
+ 'divide-opacity': [{
3344
+ 'divide-opacity': [opacity]
3345
+ }],
3346
+ /**
3347
+ * Divide Style
3348
+ * @see https://tailwindcss.com/docs/divide-style
3349
+ */
3350
+ 'divide-style': [{
3351
+ divide: getLineStyles()
3352
+ }],
3353
+ /**
3354
+ * Border Color
3355
+ * @see https://tailwindcss.com/docs/border-color
3356
+ */
3357
+ 'border-color': [{
3358
+ border: [borderColor]
3359
+ }],
3360
+ /**
3361
+ * Border Color X
3362
+ * @see https://tailwindcss.com/docs/border-color
3363
+ */
3364
+ 'border-color-x': [{
3365
+ 'border-x': [borderColor]
3366
+ }],
3367
+ /**
3368
+ * Border Color Y
3369
+ * @see https://tailwindcss.com/docs/border-color
3370
+ */
3371
+ 'border-color-y': [{
3372
+ 'border-y': [borderColor]
3373
+ }],
3374
+ /**
3375
+ * Border Color S
3376
+ * @see https://tailwindcss.com/docs/border-color
3377
+ */
3378
+ 'border-color-s': [{
3379
+ 'border-s': [borderColor]
3380
+ }],
3381
+ /**
3382
+ * Border Color E
3383
+ * @see https://tailwindcss.com/docs/border-color
3384
+ */
3385
+ 'border-color-e': [{
3386
+ 'border-e': [borderColor]
3387
+ }],
3388
+ /**
3389
+ * Border Color Top
3390
+ * @see https://tailwindcss.com/docs/border-color
3391
+ */
3392
+ 'border-color-t': [{
3393
+ 'border-t': [borderColor]
3394
+ }],
3395
+ /**
3396
+ * Border Color Right
3397
+ * @see https://tailwindcss.com/docs/border-color
3398
+ */
3399
+ 'border-color-r': [{
3400
+ 'border-r': [borderColor]
3401
+ }],
3402
+ /**
3403
+ * Border Color Bottom
3404
+ * @see https://tailwindcss.com/docs/border-color
3405
+ */
3406
+ 'border-color-b': [{
3407
+ 'border-b': [borderColor]
3408
+ }],
3409
+ /**
3410
+ * Border Color Left
3411
+ * @see https://tailwindcss.com/docs/border-color
3412
+ */
3413
+ 'border-color-l': [{
3414
+ 'border-l': [borderColor]
3415
+ }],
3416
+ /**
3417
+ * Divide Color
3418
+ * @see https://tailwindcss.com/docs/divide-color
3419
+ */
3420
+ 'divide-color': [{
3421
+ divide: [borderColor]
3422
+ }],
3423
+ /**
3424
+ * Outline Style
3425
+ * @see https://tailwindcss.com/docs/outline-style
3426
+ */
3427
+ 'outline-style': [{
3428
+ outline: ['', ...getLineStyles()]
3429
+ }],
3430
+ /**
3431
+ * Outline Offset
3432
+ * @see https://tailwindcss.com/docs/outline-offset
3433
+ */
3434
+ 'outline-offset': [{
3435
+ 'outline-offset': [isLength, isArbitraryValue]
3436
+ }],
3437
+ /**
3438
+ * Outline Width
3439
+ * @see https://tailwindcss.com/docs/outline-width
3440
+ */
3441
+ 'outline-w': [{
3442
+ outline: [isLength, isArbitraryLength]
3443
+ }],
3444
+ /**
3445
+ * Outline Color
3446
+ * @see https://tailwindcss.com/docs/outline-color
3447
+ */
3448
+ 'outline-color': [{
3449
+ outline: [colors]
3450
+ }],
3451
+ /**
3452
+ * Ring Width
3453
+ * @see https://tailwindcss.com/docs/ring-width
3454
+ */
3455
+ 'ring-w': [{
3456
+ ring: getLengthWithEmptyAndArbitrary()
3457
+ }],
3458
+ /**
3459
+ * Ring Width Inset
3460
+ * @see https://tailwindcss.com/docs/ring-width
3461
+ */
3462
+ 'ring-w-inset': ['ring-inset'],
3463
+ /**
3464
+ * Ring Color
3465
+ * @see https://tailwindcss.com/docs/ring-color
3466
+ */
3467
+ 'ring-color': [{
3468
+ ring: [colors]
3469
+ }],
3470
+ /**
3471
+ * Ring Opacity
3472
+ * @see https://tailwindcss.com/docs/ring-opacity
3473
+ */
3474
+ 'ring-opacity': [{
3475
+ 'ring-opacity': [opacity]
3476
+ }],
3477
+ /**
3478
+ * Ring Offset Width
3479
+ * @see https://tailwindcss.com/docs/ring-offset-width
3480
+ */
3481
+ 'ring-offset-w': [{
3482
+ 'ring-offset': [isLength, isArbitraryLength]
3483
+ }],
3484
+ /**
3485
+ * Ring Offset Color
3486
+ * @see https://tailwindcss.com/docs/ring-offset-color
3487
+ */
3488
+ 'ring-offset-color': [{
3489
+ 'ring-offset': [colors]
3490
+ }],
3491
+ // Effects
3492
+ /**
3493
+ * Box Shadow
3494
+ * @see https://tailwindcss.com/docs/box-shadow
3495
+ */
3496
+ shadow: [{
3497
+ shadow: ['', 'inner', 'none', isTshirtSize, isArbitraryShadow]
3498
+ }],
3499
+ /**
3500
+ * Box Shadow Color
3501
+ * @see https://tailwindcss.com/docs/box-shadow-color
3502
+ */
3503
+ 'shadow-color': [{
3504
+ shadow: [isAny]
3505
+ }],
3506
+ /**
3507
+ * Opacity
3508
+ * @see https://tailwindcss.com/docs/opacity
3509
+ */
3510
+ opacity: [{
3511
+ opacity: [opacity]
3512
+ }],
3513
+ /**
3514
+ * Mix Blend Mode
3515
+ * @see https://tailwindcss.com/docs/mix-blend-mode
3516
+ */
3517
+ 'mix-blend': [{
3518
+ 'mix-blend': [...getBlendModes(), 'plus-lighter', 'plus-darker']
3519
+ }],
3520
+ /**
3521
+ * Background Blend Mode
3522
+ * @see https://tailwindcss.com/docs/background-blend-mode
3523
+ */
3524
+ 'bg-blend': [{
3525
+ 'bg-blend': getBlendModes()
3526
+ }],
3527
+ // Filters
3528
+ /**
3529
+ * Filter
3530
+ * @deprecated since Tailwind CSS v3.0.0
3531
+ * @see https://tailwindcss.com/docs/filter
3532
+ */
3533
+ filter: [{
3534
+ filter: ['', 'none']
3535
+ }],
3536
+ /**
3537
+ * Blur
3538
+ * @see https://tailwindcss.com/docs/blur
3539
+ */
3540
+ blur: [{
3541
+ blur: [blur]
3542
+ }],
3543
+ /**
3544
+ * Brightness
3545
+ * @see https://tailwindcss.com/docs/brightness
3546
+ */
3547
+ brightness: [{
3548
+ brightness: [brightness]
3549
+ }],
3550
+ /**
3551
+ * Contrast
3552
+ * @see https://tailwindcss.com/docs/contrast
3553
+ */
3554
+ contrast: [{
3555
+ contrast: [contrast]
3556
+ }],
3557
+ /**
3558
+ * Drop Shadow
3559
+ * @see https://tailwindcss.com/docs/drop-shadow
3560
+ */
3561
+ 'drop-shadow': [{
3562
+ 'drop-shadow': ['', 'none', isTshirtSize, isArbitraryValue]
3563
+ }],
3564
+ /**
3565
+ * Grayscale
3566
+ * @see https://tailwindcss.com/docs/grayscale
3567
+ */
3568
+ grayscale: [{
3569
+ grayscale: [grayscale]
3570
+ }],
3571
+ /**
3572
+ * Hue Rotate
3573
+ * @see https://tailwindcss.com/docs/hue-rotate
3574
+ */
3575
+ 'hue-rotate': [{
3576
+ 'hue-rotate': [hueRotate]
3577
+ }],
3578
+ /**
3579
+ * Invert
3580
+ * @see https://tailwindcss.com/docs/invert
3581
+ */
3582
+ invert: [{
3583
+ invert: [invert]
3584
+ }],
3585
+ /**
3586
+ * Saturate
3587
+ * @see https://tailwindcss.com/docs/saturate
3588
+ */
3589
+ saturate: [{
3590
+ saturate: [saturate]
3591
+ }],
3592
+ /**
3593
+ * Sepia
3594
+ * @see https://tailwindcss.com/docs/sepia
3595
+ */
3596
+ sepia: [{
3597
+ sepia: [sepia]
3598
+ }],
3599
+ /**
3600
+ * Backdrop Filter
3601
+ * @deprecated since Tailwind CSS v3.0.0
3602
+ * @see https://tailwindcss.com/docs/backdrop-filter
3603
+ */
3604
+ 'backdrop-filter': [{
3605
+ 'backdrop-filter': ['', 'none']
3606
+ }],
3607
+ /**
3608
+ * Backdrop Blur
3609
+ * @see https://tailwindcss.com/docs/backdrop-blur
3610
+ */
3611
+ 'backdrop-blur': [{
3612
+ 'backdrop-blur': [blur]
3613
+ }],
3614
+ /**
3615
+ * Backdrop Brightness
3616
+ * @see https://tailwindcss.com/docs/backdrop-brightness
3617
+ */
3618
+ 'backdrop-brightness': [{
3619
+ 'backdrop-brightness': [brightness]
3620
+ }],
3621
+ /**
3622
+ * Backdrop Contrast
3623
+ * @see https://tailwindcss.com/docs/backdrop-contrast
3624
+ */
3625
+ 'backdrop-contrast': [{
3626
+ 'backdrop-contrast': [contrast]
3627
+ }],
3628
+ /**
3629
+ * Backdrop Grayscale
3630
+ * @see https://tailwindcss.com/docs/backdrop-grayscale
3631
+ */
3632
+ 'backdrop-grayscale': [{
3633
+ 'backdrop-grayscale': [grayscale]
3634
+ }],
3635
+ /**
3636
+ * Backdrop Hue Rotate
3637
+ * @see https://tailwindcss.com/docs/backdrop-hue-rotate
3638
+ */
3639
+ 'backdrop-hue-rotate': [{
3640
+ 'backdrop-hue-rotate': [hueRotate]
3641
+ }],
3642
+ /**
3643
+ * Backdrop Invert
3644
+ * @see https://tailwindcss.com/docs/backdrop-invert
3645
+ */
3646
+ 'backdrop-invert': [{
3647
+ 'backdrop-invert': [invert]
3648
+ }],
3649
+ /**
3650
+ * Backdrop Opacity
3651
+ * @see https://tailwindcss.com/docs/backdrop-opacity
3652
+ */
3653
+ 'backdrop-opacity': [{
3654
+ 'backdrop-opacity': [opacity]
3655
+ }],
3656
+ /**
3657
+ * Backdrop Saturate
3658
+ * @see https://tailwindcss.com/docs/backdrop-saturate
3659
+ */
3660
+ 'backdrop-saturate': [{
3661
+ 'backdrop-saturate': [saturate]
3662
+ }],
3663
+ /**
3664
+ * Backdrop Sepia
3665
+ * @see https://tailwindcss.com/docs/backdrop-sepia
3666
+ */
3667
+ 'backdrop-sepia': [{
3668
+ 'backdrop-sepia': [sepia]
3669
+ }],
3670
+ // Tables
3671
+ /**
3672
+ * Border Collapse
3673
+ * @see https://tailwindcss.com/docs/border-collapse
3674
+ */
3675
+ 'border-collapse': [{
3676
+ border: ['collapse', 'separate']
3677
+ }],
3678
+ /**
3679
+ * Border Spacing
3680
+ * @see https://tailwindcss.com/docs/border-spacing
3681
+ */
3682
+ 'border-spacing': [{
3683
+ 'border-spacing': [borderSpacing]
3684
+ }],
3685
+ /**
3686
+ * Border Spacing X
3687
+ * @see https://tailwindcss.com/docs/border-spacing
3688
+ */
3689
+ 'border-spacing-x': [{
3690
+ 'border-spacing-x': [borderSpacing]
3691
+ }],
3692
+ /**
3693
+ * Border Spacing Y
3694
+ * @see https://tailwindcss.com/docs/border-spacing
3695
+ */
3696
+ 'border-spacing-y': [{
3697
+ 'border-spacing-y': [borderSpacing]
3698
+ }],
3699
+ /**
3700
+ * Table Layout
3701
+ * @see https://tailwindcss.com/docs/table-layout
3702
+ */
3703
+ 'table-layout': [{
3704
+ table: ['auto', 'fixed']
3705
+ }],
3706
+ /**
3707
+ * Caption Side
3708
+ * @see https://tailwindcss.com/docs/caption-side
3709
+ */
3710
+ caption: [{
3711
+ caption: ['top', 'bottom']
3712
+ }],
3713
+ // Transitions and Animation
3714
+ /**
3715
+ * Tranisition Property
3716
+ * @see https://tailwindcss.com/docs/transition-property
3717
+ */
3718
+ transition: [{
3719
+ transition: ['none', 'all', '', 'colors', 'opacity', 'shadow', 'transform', isArbitraryValue]
3720
+ }],
3721
+ /**
3722
+ * Transition Duration
3723
+ * @see https://tailwindcss.com/docs/transition-duration
3724
+ */
3725
+ duration: [{
3726
+ duration: getNumberAndArbitrary()
3727
+ }],
3728
+ /**
3729
+ * Transition Timing Function
3730
+ * @see https://tailwindcss.com/docs/transition-timing-function
3731
+ */
3732
+ ease: [{
3733
+ ease: ['linear', 'in', 'out', 'in-out', isArbitraryValue]
3734
+ }],
3735
+ /**
3736
+ * Transition Delay
3737
+ * @see https://tailwindcss.com/docs/transition-delay
3738
+ */
3739
+ delay: [{
3740
+ delay: getNumberAndArbitrary()
3741
+ }],
3742
+ /**
3743
+ * Animation
3744
+ * @see https://tailwindcss.com/docs/animation
3745
+ */
3746
+ animate: [{
3747
+ animate: ['none', 'spin', 'ping', 'pulse', 'bounce', isArbitraryValue]
3748
+ }],
3749
+ // Transforms
3750
+ /**
3751
+ * Transform
3752
+ * @see https://tailwindcss.com/docs/transform
3753
+ */
3754
+ transform: [{
3755
+ transform: ['', 'gpu', 'none']
3756
+ }],
3757
+ /**
3758
+ * Scale
3759
+ * @see https://tailwindcss.com/docs/scale
3760
+ */
3761
+ scale: [{
3762
+ scale: [scale]
3763
+ }],
3764
+ /**
3765
+ * Scale X
3766
+ * @see https://tailwindcss.com/docs/scale
3767
+ */
3768
+ 'scale-x': [{
3769
+ 'scale-x': [scale]
3770
+ }],
3771
+ /**
3772
+ * Scale Y
3773
+ * @see https://tailwindcss.com/docs/scale
3774
+ */
3775
+ 'scale-y': [{
3776
+ 'scale-y': [scale]
3777
+ }],
3778
+ /**
3779
+ * Rotate
3780
+ * @see https://tailwindcss.com/docs/rotate
3781
+ */
3782
+ rotate: [{
3783
+ rotate: [isInteger, isArbitraryValue]
3784
+ }],
3785
+ /**
3786
+ * Translate X
3787
+ * @see https://tailwindcss.com/docs/translate
3788
+ */
3789
+ 'translate-x': [{
3790
+ 'translate-x': [translate]
3791
+ }],
3792
+ /**
3793
+ * Translate Y
3794
+ * @see https://tailwindcss.com/docs/translate
3795
+ */
3796
+ 'translate-y': [{
3797
+ 'translate-y': [translate]
3798
+ }],
3799
+ /**
3800
+ * Skew X
3801
+ * @see https://tailwindcss.com/docs/skew
3802
+ */
3803
+ 'skew-x': [{
3804
+ 'skew-x': [skew]
3805
+ }],
3806
+ /**
3807
+ * Skew Y
3808
+ * @see https://tailwindcss.com/docs/skew
3809
+ */
3810
+ 'skew-y': [{
3811
+ 'skew-y': [skew]
3812
+ }],
3813
+ /**
3814
+ * Transform Origin
3815
+ * @see https://tailwindcss.com/docs/transform-origin
3816
+ */
3817
+ 'transform-origin': [{
3818
+ origin: ['center', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', isArbitraryValue]
3819
+ }],
3820
+ // Interactivity
3821
+ /**
3822
+ * Accent Color
3823
+ * @see https://tailwindcss.com/docs/accent-color
3824
+ */
3825
+ accent: [{
3826
+ accent: ['auto', colors]
3827
+ }],
3828
+ /**
3829
+ * Appearance
3830
+ * @see https://tailwindcss.com/docs/appearance
3831
+ */
3832
+ appearance: [{
3833
+ appearance: ['none', 'auto']
3834
+ }],
3835
+ /**
3836
+ * Cursor
3837
+ * @see https://tailwindcss.com/docs/cursor
3838
+ */
3839
+ cursor: [{
3840
+ cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryValue]
3841
+ }],
3842
+ /**
3843
+ * Caret Color
3844
+ * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
3845
+ */
3846
+ 'caret-color': [{
3847
+ caret: [colors]
3848
+ }],
3849
+ /**
3850
+ * Pointer Events
3851
+ * @see https://tailwindcss.com/docs/pointer-events
3852
+ */
3853
+ 'pointer-events': [{
3854
+ 'pointer-events': ['none', 'auto']
3855
+ }],
3856
+ /**
3857
+ * Resize
3858
+ * @see https://tailwindcss.com/docs/resize
3859
+ */
3860
+ resize: [{
3861
+ resize: ['none', 'y', 'x', '']
3862
+ }],
3863
+ /**
3864
+ * Scroll Behavior
3865
+ * @see https://tailwindcss.com/docs/scroll-behavior
3866
+ */
3867
+ 'scroll-behavior': [{
3868
+ scroll: ['auto', 'smooth']
3869
+ }],
3870
+ /**
3871
+ * Scroll Margin
3872
+ * @see https://tailwindcss.com/docs/scroll-margin
3873
+ */
3874
+ 'scroll-m': [{
3875
+ 'scroll-m': getSpacingWithArbitrary()
3876
+ }],
3877
+ /**
3878
+ * Scroll Margin X
3879
+ * @see https://tailwindcss.com/docs/scroll-margin
3880
+ */
3881
+ 'scroll-mx': [{
3882
+ 'scroll-mx': getSpacingWithArbitrary()
3883
+ }],
3884
+ /**
3885
+ * Scroll Margin Y
3886
+ * @see https://tailwindcss.com/docs/scroll-margin
3887
+ */
3888
+ 'scroll-my': [{
3889
+ 'scroll-my': getSpacingWithArbitrary()
3890
+ }],
3891
+ /**
3892
+ * Scroll Margin Start
3893
+ * @see https://tailwindcss.com/docs/scroll-margin
3894
+ */
3895
+ 'scroll-ms': [{
3896
+ 'scroll-ms': getSpacingWithArbitrary()
3897
+ }],
3898
+ /**
3899
+ * Scroll Margin End
3900
+ * @see https://tailwindcss.com/docs/scroll-margin
3901
+ */
3902
+ 'scroll-me': [{
3903
+ 'scroll-me': getSpacingWithArbitrary()
3904
+ }],
3905
+ /**
3906
+ * Scroll Margin Top
3907
+ * @see https://tailwindcss.com/docs/scroll-margin
3908
+ */
3909
+ 'scroll-mt': [{
3910
+ 'scroll-mt': getSpacingWithArbitrary()
3911
+ }],
3912
+ /**
3913
+ * Scroll Margin Right
3914
+ * @see https://tailwindcss.com/docs/scroll-margin
3915
+ */
3916
+ 'scroll-mr': [{
3917
+ 'scroll-mr': getSpacingWithArbitrary()
3918
+ }],
3919
+ /**
3920
+ * Scroll Margin Bottom
3921
+ * @see https://tailwindcss.com/docs/scroll-margin
3922
+ */
3923
+ 'scroll-mb': [{
3924
+ 'scroll-mb': getSpacingWithArbitrary()
3925
+ }],
3926
+ /**
3927
+ * Scroll Margin Left
3928
+ * @see https://tailwindcss.com/docs/scroll-margin
3929
+ */
3930
+ 'scroll-ml': [{
3931
+ 'scroll-ml': getSpacingWithArbitrary()
3932
+ }],
3933
+ /**
3934
+ * Scroll Padding
3935
+ * @see https://tailwindcss.com/docs/scroll-padding
3936
+ */
3937
+ 'scroll-p': [{
3938
+ 'scroll-p': getSpacingWithArbitrary()
3939
+ }],
3940
+ /**
3941
+ * Scroll Padding X
3942
+ * @see https://tailwindcss.com/docs/scroll-padding
3943
+ */
3944
+ 'scroll-px': [{
3945
+ 'scroll-px': getSpacingWithArbitrary()
3946
+ }],
3947
+ /**
3948
+ * Scroll Padding Y
3949
+ * @see https://tailwindcss.com/docs/scroll-padding
3950
+ */
3951
+ 'scroll-py': [{
3952
+ 'scroll-py': getSpacingWithArbitrary()
3953
+ }],
3954
+ /**
3955
+ * Scroll Padding Start
3956
+ * @see https://tailwindcss.com/docs/scroll-padding
3957
+ */
3958
+ 'scroll-ps': [{
3959
+ 'scroll-ps': getSpacingWithArbitrary()
3960
+ }],
3961
+ /**
3962
+ * Scroll Padding End
3963
+ * @see https://tailwindcss.com/docs/scroll-padding
3964
+ */
3965
+ 'scroll-pe': [{
3966
+ 'scroll-pe': getSpacingWithArbitrary()
3967
+ }],
3968
+ /**
3969
+ * Scroll Padding Top
3970
+ * @see https://tailwindcss.com/docs/scroll-padding
3971
+ */
3972
+ 'scroll-pt': [{
3973
+ 'scroll-pt': getSpacingWithArbitrary()
3974
+ }],
3975
+ /**
3976
+ * Scroll Padding Right
3977
+ * @see https://tailwindcss.com/docs/scroll-padding
3978
+ */
3979
+ 'scroll-pr': [{
3980
+ 'scroll-pr': getSpacingWithArbitrary()
3981
+ }],
3982
+ /**
3983
+ * Scroll Padding Bottom
3984
+ * @see https://tailwindcss.com/docs/scroll-padding
3985
+ */
3986
+ 'scroll-pb': [{
3987
+ 'scroll-pb': getSpacingWithArbitrary()
3988
+ }],
3989
+ /**
3990
+ * Scroll Padding Left
3991
+ * @see https://tailwindcss.com/docs/scroll-padding
3992
+ */
3993
+ 'scroll-pl': [{
3994
+ 'scroll-pl': getSpacingWithArbitrary()
3995
+ }],
3996
+ /**
3997
+ * Scroll Snap Align
3998
+ * @see https://tailwindcss.com/docs/scroll-snap-align
3999
+ */
4000
+ 'snap-align': [{
4001
+ snap: ['start', 'end', 'center', 'align-none']
4002
+ }],
4003
+ /**
4004
+ * Scroll Snap Stop
4005
+ * @see https://tailwindcss.com/docs/scroll-snap-stop
4006
+ */
4007
+ 'snap-stop': [{
4008
+ snap: ['normal', 'always']
4009
+ }],
4010
+ /**
4011
+ * Scroll Snap Type
4012
+ * @see https://tailwindcss.com/docs/scroll-snap-type
4013
+ */
4014
+ 'snap-type': [{
4015
+ snap: ['none', 'x', 'y', 'both']
4016
+ }],
4017
+ /**
4018
+ * Scroll Snap Type Strictness
4019
+ * @see https://tailwindcss.com/docs/scroll-snap-type
4020
+ */
4021
+ 'snap-strictness': [{
4022
+ snap: ['mandatory', 'proximity']
4023
+ }],
4024
+ /**
4025
+ * Touch Action
4026
+ * @see https://tailwindcss.com/docs/touch-action
4027
+ */
4028
+ touch: [{
4029
+ touch: ['auto', 'none', 'manipulation']
4030
+ }],
4031
+ /**
4032
+ * Touch Action X
4033
+ * @see https://tailwindcss.com/docs/touch-action
4034
+ */
4035
+ 'touch-x': [{
4036
+ 'touch-pan': ['x', 'left', 'right']
4037
+ }],
4038
+ /**
4039
+ * Touch Action Y
4040
+ * @see https://tailwindcss.com/docs/touch-action
4041
+ */
4042
+ 'touch-y': [{
4043
+ 'touch-pan': ['y', 'up', 'down']
4044
+ }],
4045
+ /**
4046
+ * Touch Action Pinch Zoom
4047
+ * @see https://tailwindcss.com/docs/touch-action
4048
+ */
4049
+ 'touch-pz': ['touch-pinch-zoom'],
4050
+ /**
4051
+ * User Select
4052
+ * @see https://tailwindcss.com/docs/user-select
4053
+ */
4054
+ select: [{
4055
+ select: ['none', 'text', 'all', 'auto']
4056
+ }],
4057
+ /**
4058
+ * Will Change
4059
+ * @see https://tailwindcss.com/docs/will-change
4060
+ */
4061
+ 'will-change': [{
4062
+ 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryValue]
4063
+ }],
4064
+ // SVG
4065
+ /**
4066
+ * Fill
4067
+ * @see https://tailwindcss.com/docs/fill
4068
+ */
4069
+ fill: [{
4070
+ fill: [colors, 'none']
4071
+ }],
4072
+ /**
4073
+ * Stroke Width
4074
+ * @see https://tailwindcss.com/docs/stroke-width
4075
+ */
4076
+ 'stroke-w': [{
4077
+ stroke: [isLength, isArbitraryLength, isArbitraryNumber]
4078
+ }],
4079
+ /**
4080
+ * Stroke
4081
+ * @see https://tailwindcss.com/docs/stroke
4082
+ */
4083
+ stroke: [{
4084
+ stroke: [colors, 'none']
4085
+ }],
4086
+ // Accessibility
4087
+ /**
4088
+ * Screen Readers
4089
+ * @see https://tailwindcss.com/docs/screen-readers
4090
+ */
4091
+ sr: ['sr-only', 'not-sr-only'],
4092
+ /**
4093
+ * Forced Color Adjust
4094
+ * @see https://tailwindcss.com/docs/forced-color-adjust
4095
+ */
4096
+ 'forced-color-adjust': [{
4097
+ 'forced-color-adjust': ['auto', 'none']
4098
+ }]
4099
+ },
4100
+ conflictingClassGroups: {
4101
+ overflow: ['overflow-x', 'overflow-y'],
4102
+ overscroll: ['overscroll-x', 'overscroll-y'],
4103
+ inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],
4104
+ 'inset-x': ['right', 'left'],
4105
+ 'inset-y': ['top', 'bottom'],
4106
+ flex: ['basis', 'grow', 'shrink'],
4107
+ gap: ['gap-x', 'gap-y'],
4108
+ p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],
4109
+ px: ['pr', 'pl'],
4110
+ py: ['pt', 'pb'],
4111
+ m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],
4112
+ mx: ['mr', 'ml'],
4113
+ my: ['mt', 'mb'],
4114
+ size: ['w', 'h'],
4115
+ 'font-size': ['leading'],
4116
+ 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],
4117
+ 'fvn-ordinal': ['fvn-normal'],
4118
+ 'fvn-slashed-zero': ['fvn-normal'],
4119
+ 'fvn-figure': ['fvn-normal'],
4120
+ 'fvn-spacing': ['fvn-normal'],
4121
+ 'fvn-fraction': ['fvn-normal'],
4122
+ 'line-clamp': ['display', 'overflow'],
4123
+ 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'],
4124
+ 'rounded-s': ['rounded-ss', 'rounded-es'],
4125
+ 'rounded-e': ['rounded-se', 'rounded-ee'],
4126
+ 'rounded-t': ['rounded-tl', 'rounded-tr'],
4127
+ 'rounded-r': ['rounded-tr', 'rounded-br'],
4128
+ 'rounded-b': ['rounded-br', 'rounded-bl'],
4129
+ 'rounded-l': ['rounded-tl', 'rounded-bl'],
4130
+ 'border-spacing': ['border-spacing-x', 'border-spacing-y'],
4131
+ 'border-w': ['border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],
4132
+ 'border-w-x': ['border-w-r', 'border-w-l'],
4133
+ 'border-w-y': ['border-w-t', 'border-w-b'],
4134
+ 'border-color': ['border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],
4135
+ 'border-color-x': ['border-color-r', 'border-color-l'],
4136
+ 'border-color-y': ['border-color-t', 'border-color-b'],
4137
+ 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],
4138
+ 'scroll-mx': ['scroll-mr', 'scroll-ml'],
4139
+ 'scroll-my': ['scroll-mt', 'scroll-mb'],
4140
+ 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],
4141
+ 'scroll-px': ['scroll-pr', 'scroll-pl'],
4142
+ 'scroll-py': ['scroll-pt', 'scroll-pb'],
4143
+ touch: ['touch-x', 'touch-y', 'touch-pz'],
4144
+ 'touch-x': ['touch'],
4145
+ 'touch-y': ['touch'],
4146
+ 'touch-pz': ['touch']
4147
+ },
4148
+ conflictingClassGroupModifiers: {
4149
+ 'font-size': ['leading']
4150
+ }
4151
+ };
4152
+ };
4153
+ const twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);
4154
+
4155
+ function cn() {
4156
+ var inputs = [];
4157
+ for (var _i = 0; _i < arguments.length; _i++) {
4158
+ inputs[_i] = arguments[_i];
4159
+ }
4160
+ return twMerge(clsx(inputs));
4161
+ }
4162
+
4163
+ var buttonVariants = cva("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", {
4164
+ variants: {
4165
+ variant: {
4166
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
4167
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
4168
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
4169
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
4170
+ ghost: "hover:bg-accent hover:text-accent-foreground",
4171
+ link: "text-primary underline-offset-4 hover:underline",
4172
+ },
4173
+ size: {
4174
+ default: "h-10 px-4 py-2",
4175
+ sm: "h-9 rounded-md px-3",
4176
+ lg: "h-11 rounded-md px-8",
4177
+ icon: "h-10 w-10",
4178
+ },
4179
+ fullWidth: {
4180
+ true: "w-full",
4181
+ },
4182
+ },
4183
+ defaultVariants: {
4184
+ variant: "default",
4185
+ size: "default",
4186
+ },
4187
+ });
4188
+ var Button = React.forwardRef(function (_a, ref) {
4189
+ var className = _a.className, variant = _a.variant, size = _a.size, fullWidth = _a.fullWidth, _b = _a.asChild, asChild = _b === void 0 ? false : _b, _c = _a.loading, loading = _c === void 0 ? false : _c, icon = _a.icon, children = _a.children, props = __rest(_a, ["className", "variant", "size", "fullWidth", "asChild", "loading", "icon", "children"]);
4190
+ var Comp = asChild ? Slot : "button";
4191
+ return (jsxRuntimeExports.jsxs(Comp, __assign({ className: cn(buttonVariants({ variant: variant, size: size, fullWidth: fullWidth, className: className })), ref: ref, disabled: props.disabled || loading }, props, { children: [loading ? (jsxRuntimeExports.jsx(LoaderCircle, { className: "mr-2 h-4 w-4 animate-spin" })) : icon ? (jsxRuntimeExports.jsx("span", { className: "mr-2", children: icon })) : null, children] })));
4192
+ });
4193
+ Button.displayName = "Button";
5
4194
 
6
- export { hello };
4195
+ export { Button };
7
4196
  //# sourceMappingURL=index.es.js.map