@meshsdk/react 1.7.20 → 1.7.21

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.cjs CHANGED
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __export = (target, all) => {
7
9
  for (var name in all)
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
15
17
  }
16
18
  return to;
17
19
  };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
18
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
29
 
20
30
  // src/index.ts
@@ -38,25 +48,2981 @@ module.exports = __toCommonJS(src_exports);
38
48
 
39
49
  // src/cardano-wallet/index.tsx
40
50
  var import_react10 = require("react");
51
+ var import_cardano_peer_connect = require("@fabianbormann/cardano-peer-connect");
41
52
 
42
53
  // src/common/button.tsx
54
+ var React3 = __toESM(require("react"), 1);
55
+
56
+ // ../../node_modules/@radix-ui/react-slot/dist/index.mjs
57
+ var React2 = __toESM(require("react"), 1);
58
+
59
+ // ../../node_modules/@radix-ui/react-compose-refs/dist/index.mjs
60
+ var React = __toESM(require("react"), 1);
61
+ function setRef(ref, value) {
62
+ if (typeof ref === "function") {
63
+ ref(value);
64
+ } else if (ref !== null && ref !== void 0) {
65
+ ref.current = value;
66
+ }
67
+ }
68
+ function composeRefs(...refs) {
69
+ return (node) => refs.forEach((ref) => setRef(ref, node));
70
+ }
71
+
72
+ // ../../node_modules/@radix-ui/react-slot/dist/index.mjs
43
73
  var import_jsx_runtime = require("react/jsx-runtime");
44
- function Button({
45
- children,
46
- isDarkMode = false,
47
- hideMenuList = false,
48
- setHideMenuList,
49
- onMouseEnter,
50
- onMouseLeave
74
+ var Slot = React2.forwardRef((props, forwardedRef) => {
75
+ const { children, ...slotProps } = props;
76
+ const childrenArray = React2.Children.toArray(children);
77
+ const slottable = childrenArray.find(isSlottable);
78
+ if (slottable) {
79
+ const newElement = slottable.props.children;
80
+ const newChildren = childrenArray.map((child) => {
81
+ if (child === slottable) {
82
+ if (React2.Children.count(newElement) > 1) return React2.Children.only(null);
83
+ return React2.isValidElement(newElement) ? newElement.props.children : null;
84
+ } else {
85
+ return child;
86
+ }
87
+ });
88
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React2.isValidElement(newElement) ? React2.cloneElement(newElement, void 0, newChildren) : null });
89
+ }
90
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });
91
+ });
92
+ Slot.displayName = "Slot";
93
+ var SlotClone = React2.forwardRef((props, forwardedRef) => {
94
+ const { children, ...slotProps } = props;
95
+ if (React2.isValidElement(children)) {
96
+ const childrenRef = getElementRef(children);
97
+ return React2.cloneElement(children, {
98
+ ...mergeProps(slotProps, children.props),
99
+ // @ts-ignore
100
+ ref: forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef
101
+ });
102
+ }
103
+ return React2.Children.count(children) > 1 ? React2.Children.only(null) : null;
104
+ });
105
+ SlotClone.displayName = "SlotClone";
106
+ var Slottable = ({ children }) => {
107
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children });
108
+ };
109
+ function isSlottable(child) {
110
+ return React2.isValidElement(child) && child.type === Slottable;
111
+ }
112
+ function mergeProps(slotProps, childProps) {
113
+ const overrideProps = { ...childProps };
114
+ for (const propName in childProps) {
115
+ const slotPropValue = slotProps[propName];
116
+ const childPropValue = childProps[propName];
117
+ const isHandler = /^on[A-Z]/.test(propName);
118
+ if (isHandler) {
119
+ if (slotPropValue && childPropValue) {
120
+ overrideProps[propName] = (...args) => {
121
+ childPropValue(...args);
122
+ slotPropValue(...args);
123
+ };
124
+ } else if (slotPropValue) {
125
+ overrideProps[propName] = slotPropValue;
126
+ }
127
+ } else if (propName === "style") {
128
+ overrideProps[propName] = { ...slotPropValue, ...childPropValue };
129
+ } else if (propName === "className") {
130
+ overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" ");
131
+ }
132
+ }
133
+ return { ...slotProps, ...overrideProps };
134
+ }
135
+ function getElementRef(element) {
136
+ let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
137
+ let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
138
+ if (mayWarn) {
139
+ return element.ref;
140
+ }
141
+ getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
142
+ mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
143
+ if (mayWarn) {
144
+ return element.props.ref;
145
+ }
146
+ return element.props.ref || element.ref;
147
+ }
148
+
149
+ // src/common/button.tsx
150
+ var import_class_variance_authority = require("class-variance-authority");
151
+
152
+ // ../../node_modules/clsx/dist/clsx.mjs
153
+ function r(e) {
154
+ var t, f, n = "";
155
+ if ("string" == typeof e || "number" == typeof e) n += e;
156
+ else if ("object" == typeof e) if (Array.isArray(e)) {
157
+ var o = e.length;
158
+ for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
159
+ } else for (f in e) e[f] && (n && (n += " "), n += f);
160
+ return n;
161
+ }
162
+ function clsx() {
163
+ for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
164
+ return n;
165
+ }
166
+
167
+ // ../../node_modules/tailwind-merge/dist/bundle-mjs.mjs
168
+ var CLASS_PART_SEPARATOR = "-";
169
+ function createClassUtils(config) {
170
+ const classMap = createClassMap(config);
171
+ const {
172
+ conflictingClassGroups,
173
+ conflictingClassGroupModifiers
174
+ } = config;
175
+ function getClassGroupId(className) {
176
+ const classParts = className.split(CLASS_PART_SEPARATOR);
177
+ if (classParts[0] === "" && classParts.length !== 1) {
178
+ classParts.shift();
179
+ }
180
+ return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);
181
+ }
182
+ function getConflictingClassGroupIds(classGroupId, hasPostfixModifier) {
183
+ const conflicts = conflictingClassGroups[classGroupId] || [];
184
+ if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {
185
+ return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];
186
+ }
187
+ return conflicts;
188
+ }
189
+ return {
190
+ getClassGroupId,
191
+ getConflictingClassGroupIds
192
+ };
193
+ }
194
+ function getGroupRecursive(classParts, classPartObject) {
195
+ if (classParts.length === 0) {
196
+ return classPartObject.classGroupId;
197
+ }
198
+ const currentClassPart = classParts[0];
199
+ const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
200
+ const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : void 0;
201
+ if (classGroupFromNextClassPart) {
202
+ return classGroupFromNextClassPart;
203
+ }
204
+ if (classPartObject.validators.length === 0) {
205
+ return void 0;
206
+ }
207
+ const classRest = classParts.join(CLASS_PART_SEPARATOR);
208
+ return classPartObject.validators.find(({
209
+ validator
210
+ }) => validator(classRest))?.classGroupId;
211
+ }
212
+ var arbitraryPropertyRegex = /^\[(.+)\]$/;
213
+ function getGroupIdForArbitraryProperty(className) {
214
+ if (arbitraryPropertyRegex.test(className)) {
215
+ const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];
216
+ const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(":"));
217
+ if (property) {
218
+ return "arbitrary.." + property;
219
+ }
220
+ }
221
+ }
222
+ function createClassMap(config) {
223
+ const {
224
+ theme,
225
+ prefix
226
+ } = config;
227
+ const classMap = {
228
+ nextPart: /* @__PURE__ */ new Map(),
229
+ validators: []
230
+ };
231
+ const prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);
232
+ prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {
233
+ processClassesRecursively(classGroup, classMap, classGroupId, theme);
234
+ });
235
+ return classMap;
236
+ }
237
+ function processClassesRecursively(classGroup, classPartObject, classGroupId, theme) {
238
+ classGroup.forEach((classDefinition) => {
239
+ if (typeof classDefinition === "string") {
240
+ const classPartObjectToEdit = classDefinition === "" ? classPartObject : getPart(classPartObject, classDefinition);
241
+ classPartObjectToEdit.classGroupId = classGroupId;
242
+ return;
243
+ }
244
+ if (typeof classDefinition === "function") {
245
+ if (isThemeGetter(classDefinition)) {
246
+ processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
247
+ return;
248
+ }
249
+ classPartObject.validators.push({
250
+ validator: classDefinition,
251
+ classGroupId
252
+ });
253
+ return;
254
+ }
255
+ Object.entries(classDefinition).forEach(([key, classGroup2]) => {
256
+ processClassesRecursively(classGroup2, getPart(classPartObject, key), classGroupId, theme);
257
+ });
258
+ });
259
+ }
260
+ function getPart(classPartObject, path) {
261
+ let currentClassPartObject = classPartObject;
262
+ path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => {
263
+ if (!currentClassPartObject.nextPart.has(pathPart)) {
264
+ currentClassPartObject.nextPart.set(pathPart, {
265
+ nextPart: /* @__PURE__ */ new Map(),
266
+ validators: []
267
+ });
268
+ }
269
+ currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);
270
+ });
271
+ return currentClassPartObject;
272
+ }
273
+ function isThemeGetter(func) {
274
+ return func.isThemeGetter;
275
+ }
276
+ function getPrefixedClassGroupEntries(classGroupEntries, prefix) {
277
+ if (!prefix) {
278
+ return classGroupEntries;
279
+ }
280
+ return classGroupEntries.map(([classGroupId, classGroup]) => {
281
+ const prefixedClassGroup = classGroup.map((classDefinition) => {
282
+ if (typeof classDefinition === "string") {
283
+ return prefix + classDefinition;
284
+ }
285
+ if (typeof classDefinition === "object") {
286
+ return Object.fromEntries(Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]));
287
+ }
288
+ return classDefinition;
289
+ });
290
+ return [classGroupId, prefixedClassGroup];
291
+ });
292
+ }
293
+ function createLruCache(maxCacheSize) {
294
+ if (maxCacheSize < 1) {
295
+ return {
296
+ get: () => void 0,
297
+ set: () => {
298
+ }
299
+ };
300
+ }
301
+ let cacheSize = 0;
302
+ let cache = /* @__PURE__ */ new Map();
303
+ let previousCache = /* @__PURE__ */ new Map();
304
+ function update(key, value) {
305
+ cache.set(key, value);
306
+ cacheSize++;
307
+ if (cacheSize > maxCacheSize) {
308
+ cacheSize = 0;
309
+ previousCache = cache;
310
+ cache = /* @__PURE__ */ new Map();
311
+ }
312
+ }
313
+ return {
314
+ get(key) {
315
+ let value = cache.get(key);
316
+ if (value !== void 0) {
317
+ return value;
318
+ }
319
+ if ((value = previousCache.get(key)) !== void 0) {
320
+ update(key, value);
321
+ return value;
322
+ }
323
+ },
324
+ set(key, value) {
325
+ if (cache.has(key)) {
326
+ cache.set(key, value);
327
+ } else {
328
+ update(key, value);
329
+ }
330
+ }
331
+ };
332
+ }
333
+ var IMPORTANT_MODIFIER = "!";
334
+ function createSplitModifiers(config) {
335
+ const separator = config.separator;
336
+ const isSeparatorSingleCharacter = separator.length === 1;
337
+ const firstSeparatorCharacter = separator[0];
338
+ const separatorLength = separator.length;
339
+ return function splitModifiers(className) {
340
+ const modifiers = [];
341
+ let bracketDepth = 0;
342
+ let modifierStart = 0;
343
+ let postfixModifierPosition;
344
+ for (let index = 0; index < className.length; index++) {
345
+ let currentCharacter = className[index];
346
+ if (bracketDepth === 0) {
347
+ if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) {
348
+ modifiers.push(className.slice(modifierStart, index));
349
+ modifierStart = index + separatorLength;
350
+ continue;
351
+ }
352
+ if (currentCharacter === "/") {
353
+ postfixModifierPosition = index;
354
+ continue;
355
+ }
356
+ }
357
+ if (currentCharacter === "[") {
358
+ bracketDepth++;
359
+ } else if (currentCharacter === "]") {
360
+ bracketDepth--;
361
+ }
362
+ }
363
+ const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);
364
+ const hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER);
365
+ const baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier;
366
+ const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : void 0;
367
+ return {
368
+ modifiers,
369
+ hasImportantModifier,
370
+ baseClassName,
371
+ maybePostfixModifierPosition
372
+ };
373
+ };
374
+ }
375
+ function sortModifiers(modifiers) {
376
+ if (modifiers.length <= 1) {
377
+ return modifiers;
378
+ }
379
+ const sortedModifiers = [];
380
+ let unsortedModifiers = [];
381
+ modifiers.forEach((modifier) => {
382
+ const isArbitraryVariant = modifier[0] === "[";
383
+ if (isArbitraryVariant) {
384
+ sortedModifiers.push(...unsortedModifiers.sort(), modifier);
385
+ unsortedModifiers = [];
386
+ } else {
387
+ unsortedModifiers.push(modifier);
388
+ }
389
+ });
390
+ sortedModifiers.push(...unsortedModifiers.sort());
391
+ return sortedModifiers;
392
+ }
393
+ function createConfigUtils(config) {
394
+ return {
395
+ cache: createLruCache(config.cacheSize),
396
+ splitModifiers: createSplitModifiers(config),
397
+ ...createClassUtils(config)
398
+ };
399
+ }
400
+ var SPLIT_CLASSES_REGEX = /\s+/;
401
+ function mergeClassList(classList, configUtils) {
402
+ const {
403
+ splitModifiers,
404
+ getClassGroupId,
405
+ getConflictingClassGroupIds
406
+ } = configUtils;
407
+ const classGroupsInConflict = /* @__PURE__ */ new Set();
408
+ return classList.trim().split(SPLIT_CLASSES_REGEX).map((originalClassName) => {
409
+ const {
410
+ modifiers,
411
+ hasImportantModifier,
412
+ baseClassName,
413
+ maybePostfixModifierPosition
414
+ } = splitModifiers(originalClassName);
415
+ let classGroupId = getClassGroupId(maybePostfixModifierPosition ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);
416
+ let hasPostfixModifier = Boolean(maybePostfixModifierPosition);
417
+ if (!classGroupId) {
418
+ if (!maybePostfixModifierPosition) {
419
+ return {
420
+ isTailwindClass: false,
421
+ originalClassName
422
+ };
423
+ }
424
+ classGroupId = getClassGroupId(baseClassName);
425
+ if (!classGroupId) {
426
+ return {
427
+ isTailwindClass: false,
428
+ originalClassName
429
+ };
430
+ }
431
+ hasPostfixModifier = false;
432
+ }
433
+ const variantModifier = sortModifiers(modifiers).join(":");
434
+ const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
435
+ return {
436
+ isTailwindClass: true,
437
+ modifierId,
438
+ classGroupId,
439
+ originalClassName,
440
+ hasPostfixModifier
441
+ };
442
+ }).reverse().filter((parsed) => {
443
+ if (!parsed.isTailwindClass) {
444
+ return true;
445
+ }
446
+ const {
447
+ modifierId,
448
+ classGroupId,
449
+ hasPostfixModifier
450
+ } = parsed;
451
+ const classId = modifierId + classGroupId;
452
+ if (classGroupsInConflict.has(classId)) {
453
+ return false;
454
+ }
455
+ classGroupsInConflict.add(classId);
456
+ getConflictingClassGroupIds(classGroupId, hasPostfixModifier).forEach((group) => classGroupsInConflict.add(modifierId + group));
457
+ return true;
458
+ }).reverse().map((parsed) => parsed.originalClassName).join(" ");
459
+ }
460
+ function twJoin() {
461
+ let index = 0;
462
+ let argument;
463
+ let resolvedValue;
464
+ let string = "";
465
+ while (index < arguments.length) {
466
+ if (argument = arguments[index++]) {
467
+ if (resolvedValue = toValue(argument)) {
468
+ string && (string += " ");
469
+ string += resolvedValue;
470
+ }
471
+ }
472
+ }
473
+ return string;
474
+ }
475
+ function toValue(mix) {
476
+ if (typeof mix === "string") {
477
+ return mix;
478
+ }
479
+ let resolvedValue;
480
+ let string = "";
481
+ for (let k = 0; k < mix.length; k++) {
482
+ if (mix[k]) {
483
+ if (resolvedValue = toValue(mix[k])) {
484
+ string && (string += " ");
485
+ string += resolvedValue;
486
+ }
487
+ }
488
+ }
489
+ return string;
490
+ }
491
+ function createTailwindMerge(createConfigFirst, ...createConfigRest) {
492
+ let configUtils;
493
+ let cacheGet;
494
+ let cacheSet;
495
+ let functionToCall = initTailwindMerge;
496
+ function initTailwindMerge(classList) {
497
+ const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());
498
+ configUtils = createConfigUtils(config);
499
+ cacheGet = configUtils.cache.get;
500
+ cacheSet = configUtils.cache.set;
501
+ functionToCall = tailwindMerge;
502
+ return tailwindMerge(classList);
503
+ }
504
+ function tailwindMerge(classList) {
505
+ const cachedResult = cacheGet(classList);
506
+ if (cachedResult) {
507
+ return cachedResult;
508
+ }
509
+ const result = mergeClassList(classList, configUtils);
510
+ cacheSet(classList, result);
511
+ return result;
512
+ }
513
+ return function callTailwindMerge() {
514
+ return functionToCall(twJoin.apply(null, arguments));
515
+ };
516
+ }
517
+ function fromTheme(key) {
518
+ const themeGetter = (theme) => theme[key] || [];
519
+ themeGetter.isThemeGetter = true;
520
+ return themeGetter;
521
+ }
522
+ var arbitraryValueRegex = /^\[(?:([a-z-]+):)?(.+)\]$/i;
523
+ var fractionRegex = /^\d+\/\d+$/;
524
+ var stringLengths = /* @__PURE__ */ new Set(["px", "full", "screen"]);
525
+ var tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
526
+ var lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/;
527
+ var colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/;
528
+ var shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
529
+ var imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
530
+ function isLength(value) {
531
+ return isNumber(value) || stringLengths.has(value) || fractionRegex.test(value);
532
+ }
533
+ function isArbitraryLength(value) {
534
+ return getIsArbitraryValue(value, "length", isLengthOnly);
535
+ }
536
+ function isNumber(value) {
537
+ return Boolean(value) && !Number.isNaN(Number(value));
538
+ }
539
+ function isArbitraryNumber(value) {
540
+ return getIsArbitraryValue(value, "number", isNumber);
541
+ }
542
+ function isInteger(value) {
543
+ return Boolean(value) && Number.isInteger(Number(value));
544
+ }
545
+ function isPercent(value) {
546
+ return value.endsWith("%") && isNumber(value.slice(0, -1));
547
+ }
548
+ function isArbitraryValue(value) {
549
+ return arbitraryValueRegex.test(value);
550
+ }
551
+ function isTshirtSize(value) {
552
+ return tshirtUnitRegex.test(value);
553
+ }
554
+ var sizeLabels = /* @__PURE__ */ new Set(["length", "size", "percentage"]);
555
+ function isArbitrarySize(value) {
556
+ return getIsArbitraryValue(value, sizeLabels, isNever);
557
+ }
558
+ function isArbitraryPosition(value) {
559
+ return getIsArbitraryValue(value, "position", isNever);
560
+ }
561
+ var imageLabels = /* @__PURE__ */ new Set(["image", "url"]);
562
+ function isArbitraryImage(value) {
563
+ return getIsArbitraryValue(value, imageLabels, isImage);
564
+ }
565
+ function isArbitraryShadow(value) {
566
+ return getIsArbitraryValue(value, "", isShadow);
567
+ }
568
+ function isAny() {
569
+ return true;
570
+ }
571
+ function getIsArbitraryValue(value, label, testValue) {
572
+ const result = arbitraryValueRegex.exec(value);
573
+ if (result) {
574
+ if (result[1]) {
575
+ return typeof label === "string" ? result[1] === label : label.has(result[1]);
576
+ }
577
+ return testValue(result[2]);
578
+ }
579
+ return false;
580
+ }
581
+ function isLengthOnly(value) {
582
+ return lengthUnitRegex.test(value) && !colorFunctionRegex.test(value);
583
+ }
584
+ function isNever() {
585
+ return false;
586
+ }
587
+ function isShadow(value) {
588
+ return shadowRegex.test(value);
589
+ }
590
+ function isImage(value) {
591
+ return imageRegex.test(value);
592
+ }
593
+ function getDefaultConfig() {
594
+ const colors = fromTheme("colors");
595
+ const spacing = fromTheme("spacing");
596
+ const blur = fromTheme("blur");
597
+ const brightness = fromTheme("brightness");
598
+ const borderColor = fromTheme("borderColor");
599
+ const borderRadius = fromTheme("borderRadius");
600
+ const borderSpacing = fromTheme("borderSpacing");
601
+ const borderWidth = fromTheme("borderWidth");
602
+ const contrast = fromTheme("contrast");
603
+ const grayscale = fromTheme("grayscale");
604
+ const hueRotate = fromTheme("hueRotate");
605
+ const invert = fromTheme("invert");
606
+ const gap = fromTheme("gap");
607
+ const gradientColorStops = fromTheme("gradientColorStops");
608
+ const gradientColorStopPositions = fromTheme("gradientColorStopPositions");
609
+ const inset = fromTheme("inset");
610
+ const margin = fromTheme("margin");
611
+ const opacity = fromTheme("opacity");
612
+ const padding = fromTheme("padding");
613
+ const saturate = fromTheme("saturate");
614
+ const scale = fromTheme("scale");
615
+ const sepia = fromTheme("sepia");
616
+ const skew = fromTheme("skew");
617
+ const space = fromTheme("space");
618
+ const translate = fromTheme("translate");
619
+ const getOverscroll = () => ["auto", "contain", "none"];
620
+ const getOverflow = () => ["auto", "hidden", "clip", "visible", "scroll"];
621
+ const getSpacingWithAutoAndArbitrary = () => ["auto", isArbitraryValue, spacing];
622
+ const getSpacingWithArbitrary = () => [isArbitraryValue, spacing];
623
+ const getLengthWithEmptyAndArbitrary = () => ["", isLength, isArbitraryLength];
624
+ const getNumberWithAutoAndArbitrary = () => ["auto", isNumber, isArbitraryValue];
625
+ const getPositions = () => ["bottom", "center", "left", "left-bottom", "left-top", "right", "right-bottom", "right-top", "top"];
626
+ const getLineStyles = () => ["solid", "dashed", "dotted", "double", "none"];
627
+ const getBlendModes = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity", "plus-lighter"];
628
+ const getAlign = () => ["start", "end", "center", "between", "around", "evenly", "stretch"];
629
+ const getZeroAndEmpty = () => ["", "0", isArbitraryValue];
630
+ const getBreaks = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"];
631
+ const getNumber = () => [isNumber, isArbitraryNumber];
632
+ const getNumberAndArbitrary = () => [isNumber, isArbitraryValue];
633
+ return {
634
+ cacheSize: 500,
635
+ separator: ":",
636
+ theme: {
637
+ colors: [isAny],
638
+ spacing: [isLength, isArbitraryLength],
639
+ blur: ["none", "", isTshirtSize, isArbitraryValue],
640
+ brightness: getNumber(),
641
+ borderColor: [colors],
642
+ borderRadius: ["none", "", "full", isTshirtSize, isArbitraryValue],
643
+ borderSpacing: getSpacingWithArbitrary(),
644
+ borderWidth: getLengthWithEmptyAndArbitrary(),
645
+ contrast: getNumber(),
646
+ grayscale: getZeroAndEmpty(),
647
+ hueRotate: getNumberAndArbitrary(),
648
+ invert: getZeroAndEmpty(),
649
+ gap: getSpacingWithArbitrary(),
650
+ gradientColorStops: [colors],
651
+ gradientColorStopPositions: [isPercent, isArbitraryLength],
652
+ inset: getSpacingWithAutoAndArbitrary(),
653
+ margin: getSpacingWithAutoAndArbitrary(),
654
+ opacity: getNumber(),
655
+ padding: getSpacingWithArbitrary(),
656
+ saturate: getNumber(),
657
+ scale: getNumber(),
658
+ sepia: getZeroAndEmpty(),
659
+ skew: getNumberAndArbitrary(),
660
+ space: getSpacingWithArbitrary(),
661
+ translate: getSpacingWithArbitrary()
662
+ },
663
+ classGroups: {
664
+ // Layout
665
+ /**
666
+ * Aspect Ratio
667
+ * @see https://tailwindcss.com/docs/aspect-ratio
668
+ */
669
+ aspect: [{
670
+ aspect: ["auto", "square", "video", isArbitraryValue]
671
+ }],
672
+ /**
673
+ * Container
674
+ * @see https://tailwindcss.com/docs/container
675
+ */
676
+ container: ["container"],
677
+ /**
678
+ * Columns
679
+ * @see https://tailwindcss.com/docs/columns
680
+ */
681
+ columns: [{
682
+ columns: [isTshirtSize]
683
+ }],
684
+ /**
685
+ * Break After
686
+ * @see https://tailwindcss.com/docs/break-after
687
+ */
688
+ "break-after": [{
689
+ "break-after": getBreaks()
690
+ }],
691
+ /**
692
+ * Break Before
693
+ * @see https://tailwindcss.com/docs/break-before
694
+ */
695
+ "break-before": [{
696
+ "break-before": getBreaks()
697
+ }],
698
+ /**
699
+ * Break Inside
700
+ * @see https://tailwindcss.com/docs/break-inside
701
+ */
702
+ "break-inside": [{
703
+ "break-inside": ["auto", "avoid", "avoid-page", "avoid-column"]
704
+ }],
705
+ /**
706
+ * Box Decoration Break
707
+ * @see https://tailwindcss.com/docs/box-decoration-break
708
+ */
709
+ "box-decoration": [{
710
+ "box-decoration": ["slice", "clone"]
711
+ }],
712
+ /**
713
+ * Box Sizing
714
+ * @see https://tailwindcss.com/docs/box-sizing
715
+ */
716
+ box: [{
717
+ box: ["border", "content"]
718
+ }],
719
+ /**
720
+ * Display
721
+ * @see https://tailwindcss.com/docs/display
722
+ */
723
+ 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"],
724
+ /**
725
+ * Floats
726
+ * @see https://tailwindcss.com/docs/float
727
+ */
728
+ float: [{
729
+ float: ["right", "left", "none", "start", "end"]
730
+ }],
731
+ /**
732
+ * Clear
733
+ * @see https://tailwindcss.com/docs/clear
734
+ */
735
+ clear: [{
736
+ clear: ["left", "right", "both", "none", "start", "end"]
737
+ }],
738
+ /**
739
+ * Isolation
740
+ * @see https://tailwindcss.com/docs/isolation
741
+ */
742
+ isolation: ["isolate", "isolation-auto"],
743
+ /**
744
+ * Object Fit
745
+ * @see https://tailwindcss.com/docs/object-fit
746
+ */
747
+ "object-fit": [{
748
+ object: ["contain", "cover", "fill", "none", "scale-down"]
749
+ }],
750
+ /**
751
+ * Object Position
752
+ * @see https://tailwindcss.com/docs/object-position
753
+ */
754
+ "object-position": [{
755
+ object: [...getPositions(), isArbitraryValue]
756
+ }],
757
+ /**
758
+ * Overflow
759
+ * @see https://tailwindcss.com/docs/overflow
760
+ */
761
+ overflow: [{
762
+ overflow: getOverflow()
763
+ }],
764
+ /**
765
+ * Overflow X
766
+ * @see https://tailwindcss.com/docs/overflow
767
+ */
768
+ "overflow-x": [{
769
+ "overflow-x": getOverflow()
770
+ }],
771
+ /**
772
+ * Overflow Y
773
+ * @see https://tailwindcss.com/docs/overflow
774
+ */
775
+ "overflow-y": [{
776
+ "overflow-y": getOverflow()
777
+ }],
778
+ /**
779
+ * Overscroll Behavior
780
+ * @see https://tailwindcss.com/docs/overscroll-behavior
781
+ */
782
+ overscroll: [{
783
+ overscroll: getOverscroll()
784
+ }],
785
+ /**
786
+ * Overscroll Behavior X
787
+ * @see https://tailwindcss.com/docs/overscroll-behavior
788
+ */
789
+ "overscroll-x": [{
790
+ "overscroll-x": getOverscroll()
791
+ }],
792
+ /**
793
+ * Overscroll Behavior Y
794
+ * @see https://tailwindcss.com/docs/overscroll-behavior
795
+ */
796
+ "overscroll-y": [{
797
+ "overscroll-y": getOverscroll()
798
+ }],
799
+ /**
800
+ * Position
801
+ * @see https://tailwindcss.com/docs/position
802
+ */
803
+ position: ["static", "fixed", "absolute", "relative", "sticky"],
804
+ /**
805
+ * Top / Right / Bottom / Left
806
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
807
+ */
808
+ inset: [{
809
+ inset: [inset]
810
+ }],
811
+ /**
812
+ * Right / Left
813
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
814
+ */
815
+ "inset-x": [{
816
+ "inset-x": [inset]
817
+ }],
818
+ /**
819
+ * Top / Bottom
820
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
821
+ */
822
+ "inset-y": [{
823
+ "inset-y": [inset]
824
+ }],
825
+ /**
826
+ * Start
827
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
828
+ */
829
+ start: [{
830
+ start: [inset]
831
+ }],
832
+ /**
833
+ * End
834
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
835
+ */
836
+ end: [{
837
+ end: [inset]
838
+ }],
839
+ /**
840
+ * Top
841
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
842
+ */
843
+ top: [{
844
+ top: [inset]
845
+ }],
846
+ /**
847
+ * Right
848
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
849
+ */
850
+ right: [{
851
+ right: [inset]
852
+ }],
853
+ /**
854
+ * Bottom
855
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
856
+ */
857
+ bottom: [{
858
+ bottom: [inset]
859
+ }],
860
+ /**
861
+ * Left
862
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
863
+ */
864
+ left: [{
865
+ left: [inset]
866
+ }],
867
+ /**
868
+ * Visibility
869
+ * @see https://tailwindcss.com/docs/visibility
870
+ */
871
+ visibility: ["visible", "invisible", "collapse"],
872
+ /**
873
+ * Z-Index
874
+ * @see https://tailwindcss.com/docs/z-index
875
+ */
876
+ z: [{
877
+ z: ["auto", isInteger, isArbitraryValue]
878
+ }],
879
+ // Flexbox and Grid
880
+ /**
881
+ * Flex Basis
882
+ * @see https://tailwindcss.com/docs/flex-basis
883
+ */
884
+ basis: [{
885
+ basis: getSpacingWithAutoAndArbitrary()
886
+ }],
887
+ /**
888
+ * Flex Direction
889
+ * @see https://tailwindcss.com/docs/flex-direction
890
+ */
891
+ "flex-direction": [{
892
+ flex: ["row", "row-reverse", "col", "col-reverse"]
893
+ }],
894
+ /**
895
+ * Flex Wrap
896
+ * @see https://tailwindcss.com/docs/flex-wrap
897
+ */
898
+ "flex-wrap": [{
899
+ flex: ["wrap", "wrap-reverse", "nowrap"]
900
+ }],
901
+ /**
902
+ * Flex
903
+ * @see https://tailwindcss.com/docs/flex
904
+ */
905
+ flex: [{
906
+ flex: ["1", "auto", "initial", "none", isArbitraryValue]
907
+ }],
908
+ /**
909
+ * Flex Grow
910
+ * @see https://tailwindcss.com/docs/flex-grow
911
+ */
912
+ grow: [{
913
+ grow: getZeroAndEmpty()
914
+ }],
915
+ /**
916
+ * Flex Shrink
917
+ * @see https://tailwindcss.com/docs/flex-shrink
918
+ */
919
+ shrink: [{
920
+ shrink: getZeroAndEmpty()
921
+ }],
922
+ /**
923
+ * Order
924
+ * @see https://tailwindcss.com/docs/order
925
+ */
926
+ order: [{
927
+ order: ["first", "last", "none", isInteger, isArbitraryValue]
928
+ }],
929
+ /**
930
+ * Grid Template Columns
931
+ * @see https://tailwindcss.com/docs/grid-template-columns
932
+ */
933
+ "grid-cols": [{
934
+ "grid-cols": [isAny]
935
+ }],
936
+ /**
937
+ * Grid Column Start / End
938
+ * @see https://tailwindcss.com/docs/grid-column
939
+ */
940
+ "col-start-end": [{
941
+ col: ["auto", {
942
+ span: ["full", isInteger, isArbitraryValue]
943
+ }, isArbitraryValue]
944
+ }],
945
+ /**
946
+ * Grid Column Start
947
+ * @see https://tailwindcss.com/docs/grid-column
948
+ */
949
+ "col-start": [{
950
+ "col-start": getNumberWithAutoAndArbitrary()
951
+ }],
952
+ /**
953
+ * Grid Column End
954
+ * @see https://tailwindcss.com/docs/grid-column
955
+ */
956
+ "col-end": [{
957
+ "col-end": getNumberWithAutoAndArbitrary()
958
+ }],
959
+ /**
960
+ * Grid Template Rows
961
+ * @see https://tailwindcss.com/docs/grid-template-rows
962
+ */
963
+ "grid-rows": [{
964
+ "grid-rows": [isAny]
965
+ }],
966
+ /**
967
+ * Grid Row Start / End
968
+ * @see https://tailwindcss.com/docs/grid-row
969
+ */
970
+ "row-start-end": [{
971
+ row: ["auto", {
972
+ span: [isInteger, isArbitraryValue]
973
+ }, isArbitraryValue]
974
+ }],
975
+ /**
976
+ * Grid Row Start
977
+ * @see https://tailwindcss.com/docs/grid-row
978
+ */
979
+ "row-start": [{
980
+ "row-start": getNumberWithAutoAndArbitrary()
981
+ }],
982
+ /**
983
+ * Grid Row End
984
+ * @see https://tailwindcss.com/docs/grid-row
985
+ */
986
+ "row-end": [{
987
+ "row-end": getNumberWithAutoAndArbitrary()
988
+ }],
989
+ /**
990
+ * Grid Auto Flow
991
+ * @see https://tailwindcss.com/docs/grid-auto-flow
992
+ */
993
+ "grid-flow": [{
994
+ "grid-flow": ["row", "col", "dense", "row-dense", "col-dense"]
995
+ }],
996
+ /**
997
+ * Grid Auto Columns
998
+ * @see https://tailwindcss.com/docs/grid-auto-columns
999
+ */
1000
+ "auto-cols": [{
1001
+ "auto-cols": ["auto", "min", "max", "fr", isArbitraryValue]
1002
+ }],
1003
+ /**
1004
+ * Grid Auto Rows
1005
+ * @see https://tailwindcss.com/docs/grid-auto-rows
1006
+ */
1007
+ "auto-rows": [{
1008
+ "auto-rows": ["auto", "min", "max", "fr", isArbitraryValue]
1009
+ }],
1010
+ /**
1011
+ * Gap
1012
+ * @see https://tailwindcss.com/docs/gap
1013
+ */
1014
+ gap: [{
1015
+ gap: [gap]
1016
+ }],
1017
+ /**
1018
+ * Gap X
1019
+ * @see https://tailwindcss.com/docs/gap
1020
+ */
1021
+ "gap-x": [{
1022
+ "gap-x": [gap]
1023
+ }],
1024
+ /**
1025
+ * Gap Y
1026
+ * @see https://tailwindcss.com/docs/gap
1027
+ */
1028
+ "gap-y": [{
1029
+ "gap-y": [gap]
1030
+ }],
1031
+ /**
1032
+ * Justify Content
1033
+ * @see https://tailwindcss.com/docs/justify-content
1034
+ */
1035
+ "justify-content": [{
1036
+ justify: ["normal", ...getAlign()]
1037
+ }],
1038
+ /**
1039
+ * Justify Items
1040
+ * @see https://tailwindcss.com/docs/justify-items
1041
+ */
1042
+ "justify-items": [{
1043
+ "justify-items": ["start", "end", "center", "stretch"]
1044
+ }],
1045
+ /**
1046
+ * Justify Self
1047
+ * @see https://tailwindcss.com/docs/justify-self
1048
+ */
1049
+ "justify-self": [{
1050
+ "justify-self": ["auto", "start", "end", "center", "stretch"]
1051
+ }],
1052
+ /**
1053
+ * Align Content
1054
+ * @see https://tailwindcss.com/docs/align-content
1055
+ */
1056
+ "align-content": [{
1057
+ content: ["normal", ...getAlign(), "baseline"]
1058
+ }],
1059
+ /**
1060
+ * Align Items
1061
+ * @see https://tailwindcss.com/docs/align-items
1062
+ */
1063
+ "align-items": [{
1064
+ items: ["start", "end", "center", "baseline", "stretch"]
1065
+ }],
1066
+ /**
1067
+ * Align Self
1068
+ * @see https://tailwindcss.com/docs/align-self
1069
+ */
1070
+ "align-self": [{
1071
+ self: ["auto", "start", "end", "center", "stretch", "baseline"]
1072
+ }],
1073
+ /**
1074
+ * Place Content
1075
+ * @see https://tailwindcss.com/docs/place-content
1076
+ */
1077
+ "place-content": [{
1078
+ "place-content": [...getAlign(), "baseline"]
1079
+ }],
1080
+ /**
1081
+ * Place Items
1082
+ * @see https://tailwindcss.com/docs/place-items
1083
+ */
1084
+ "place-items": [{
1085
+ "place-items": ["start", "end", "center", "baseline", "stretch"]
1086
+ }],
1087
+ /**
1088
+ * Place Self
1089
+ * @see https://tailwindcss.com/docs/place-self
1090
+ */
1091
+ "place-self": [{
1092
+ "place-self": ["auto", "start", "end", "center", "stretch"]
1093
+ }],
1094
+ // Spacing
1095
+ /**
1096
+ * Padding
1097
+ * @see https://tailwindcss.com/docs/padding
1098
+ */
1099
+ p: [{
1100
+ p: [padding]
1101
+ }],
1102
+ /**
1103
+ * Padding X
1104
+ * @see https://tailwindcss.com/docs/padding
1105
+ */
1106
+ px: [{
1107
+ px: [padding]
1108
+ }],
1109
+ /**
1110
+ * Padding Y
1111
+ * @see https://tailwindcss.com/docs/padding
1112
+ */
1113
+ py: [{
1114
+ py: [padding]
1115
+ }],
1116
+ /**
1117
+ * Padding Start
1118
+ * @see https://tailwindcss.com/docs/padding
1119
+ */
1120
+ ps: [{
1121
+ ps: [padding]
1122
+ }],
1123
+ /**
1124
+ * Padding End
1125
+ * @see https://tailwindcss.com/docs/padding
1126
+ */
1127
+ pe: [{
1128
+ pe: [padding]
1129
+ }],
1130
+ /**
1131
+ * Padding Top
1132
+ * @see https://tailwindcss.com/docs/padding
1133
+ */
1134
+ pt: [{
1135
+ pt: [padding]
1136
+ }],
1137
+ /**
1138
+ * Padding Right
1139
+ * @see https://tailwindcss.com/docs/padding
1140
+ */
1141
+ pr: [{
1142
+ pr: [padding]
1143
+ }],
1144
+ /**
1145
+ * Padding Bottom
1146
+ * @see https://tailwindcss.com/docs/padding
1147
+ */
1148
+ pb: [{
1149
+ pb: [padding]
1150
+ }],
1151
+ /**
1152
+ * Padding Left
1153
+ * @see https://tailwindcss.com/docs/padding
1154
+ */
1155
+ pl: [{
1156
+ pl: [padding]
1157
+ }],
1158
+ /**
1159
+ * Margin
1160
+ * @see https://tailwindcss.com/docs/margin
1161
+ */
1162
+ m: [{
1163
+ m: [margin]
1164
+ }],
1165
+ /**
1166
+ * Margin X
1167
+ * @see https://tailwindcss.com/docs/margin
1168
+ */
1169
+ mx: [{
1170
+ mx: [margin]
1171
+ }],
1172
+ /**
1173
+ * Margin Y
1174
+ * @see https://tailwindcss.com/docs/margin
1175
+ */
1176
+ my: [{
1177
+ my: [margin]
1178
+ }],
1179
+ /**
1180
+ * Margin Start
1181
+ * @see https://tailwindcss.com/docs/margin
1182
+ */
1183
+ ms: [{
1184
+ ms: [margin]
1185
+ }],
1186
+ /**
1187
+ * Margin End
1188
+ * @see https://tailwindcss.com/docs/margin
1189
+ */
1190
+ me: [{
1191
+ me: [margin]
1192
+ }],
1193
+ /**
1194
+ * Margin Top
1195
+ * @see https://tailwindcss.com/docs/margin
1196
+ */
1197
+ mt: [{
1198
+ mt: [margin]
1199
+ }],
1200
+ /**
1201
+ * Margin Right
1202
+ * @see https://tailwindcss.com/docs/margin
1203
+ */
1204
+ mr: [{
1205
+ mr: [margin]
1206
+ }],
1207
+ /**
1208
+ * Margin Bottom
1209
+ * @see https://tailwindcss.com/docs/margin
1210
+ */
1211
+ mb: [{
1212
+ mb: [margin]
1213
+ }],
1214
+ /**
1215
+ * Margin Left
1216
+ * @see https://tailwindcss.com/docs/margin
1217
+ */
1218
+ ml: [{
1219
+ ml: [margin]
1220
+ }],
1221
+ /**
1222
+ * Space Between X
1223
+ * @see https://tailwindcss.com/docs/space
1224
+ */
1225
+ "space-x": [{
1226
+ "space-x": [space]
1227
+ }],
1228
+ /**
1229
+ * Space Between X Reverse
1230
+ * @see https://tailwindcss.com/docs/space
1231
+ */
1232
+ "space-x-reverse": ["space-x-reverse"],
1233
+ /**
1234
+ * Space Between Y
1235
+ * @see https://tailwindcss.com/docs/space
1236
+ */
1237
+ "space-y": [{
1238
+ "space-y": [space]
1239
+ }],
1240
+ /**
1241
+ * Space Between Y Reverse
1242
+ * @see https://tailwindcss.com/docs/space
1243
+ */
1244
+ "space-y-reverse": ["space-y-reverse"],
1245
+ // Sizing
1246
+ /**
1247
+ * Width
1248
+ * @see https://tailwindcss.com/docs/width
1249
+ */
1250
+ w: [{
1251
+ w: ["auto", "min", "max", "fit", "svw", "lvw", "dvw", isArbitraryValue, spacing]
1252
+ }],
1253
+ /**
1254
+ * Min-Width
1255
+ * @see https://tailwindcss.com/docs/min-width
1256
+ */
1257
+ "min-w": [{
1258
+ "min-w": [isArbitraryValue, spacing, "min", "max", "fit"]
1259
+ }],
1260
+ /**
1261
+ * Max-Width
1262
+ * @see https://tailwindcss.com/docs/max-width
1263
+ */
1264
+ "max-w": [{
1265
+ "max-w": [isArbitraryValue, spacing, "none", "full", "min", "max", "fit", "prose", {
1266
+ screen: [isTshirtSize]
1267
+ }, isTshirtSize]
1268
+ }],
1269
+ /**
1270
+ * Height
1271
+ * @see https://tailwindcss.com/docs/height
1272
+ */
1273
+ h: [{
1274
+ h: [isArbitraryValue, spacing, "auto", "min", "max", "fit", "svh", "lvh", "dvh"]
1275
+ }],
1276
+ /**
1277
+ * Min-Height
1278
+ * @see https://tailwindcss.com/docs/min-height
1279
+ */
1280
+ "min-h": [{
1281
+ "min-h": [isArbitraryValue, spacing, "min", "max", "fit", "svh", "lvh", "dvh"]
1282
+ }],
1283
+ /**
1284
+ * Max-Height
1285
+ * @see https://tailwindcss.com/docs/max-height
1286
+ */
1287
+ "max-h": [{
1288
+ "max-h": [isArbitraryValue, spacing, "min", "max", "fit", "svh", "lvh", "dvh"]
1289
+ }],
1290
+ /**
1291
+ * Size
1292
+ * @see https://tailwindcss.com/docs/size
1293
+ */
1294
+ size: [{
1295
+ size: [isArbitraryValue, spacing, "auto", "min", "max", "fit"]
1296
+ }],
1297
+ // Typography
1298
+ /**
1299
+ * Font Size
1300
+ * @see https://tailwindcss.com/docs/font-size
1301
+ */
1302
+ "font-size": [{
1303
+ text: ["base", isTshirtSize, isArbitraryLength]
1304
+ }],
1305
+ /**
1306
+ * Font Smoothing
1307
+ * @see https://tailwindcss.com/docs/font-smoothing
1308
+ */
1309
+ "font-smoothing": ["antialiased", "subpixel-antialiased"],
1310
+ /**
1311
+ * Font Style
1312
+ * @see https://tailwindcss.com/docs/font-style
1313
+ */
1314
+ "font-style": ["italic", "not-italic"],
1315
+ /**
1316
+ * Font Weight
1317
+ * @see https://tailwindcss.com/docs/font-weight
1318
+ */
1319
+ "font-weight": [{
1320
+ font: ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black", isArbitraryNumber]
1321
+ }],
1322
+ /**
1323
+ * Font Family
1324
+ * @see https://tailwindcss.com/docs/font-family
1325
+ */
1326
+ "font-family": [{
1327
+ font: [isAny]
1328
+ }],
1329
+ /**
1330
+ * Font Variant Numeric
1331
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1332
+ */
1333
+ "fvn-normal": ["normal-nums"],
1334
+ /**
1335
+ * Font Variant Numeric
1336
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1337
+ */
1338
+ "fvn-ordinal": ["ordinal"],
1339
+ /**
1340
+ * Font Variant Numeric
1341
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1342
+ */
1343
+ "fvn-slashed-zero": ["slashed-zero"],
1344
+ /**
1345
+ * Font Variant Numeric
1346
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1347
+ */
1348
+ "fvn-figure": ["lining-nums", "oldstyle-nums"],
1349
+ /**
1350
+ * Font Variant Numeric
1351
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1352
+ */
1353
+ "fvn-spacing": ["proportional-nums", "tabular-nums"],
1354
+ /**
1355
+ * Font Variant Numeric
1356
+ * @see https://tailwindcss.com/docs/font-variant-numeric
1357
+ */
1358
+ "fvn-fraction": ["diagonal-fractions", "stacked-fractons"],
1359
+ /**
1360
+ * Letter Spacing
1361
+ * @see https://tailwindcss.com/docs/letter-spacing
1362
+ */
1363
+ tracking: [{
1364
+ tracking: ["tighter", "tight", "normal", "wide", "wider", "widest", isArbitraryValue]
1365
+ }],
1366
+ /**
1367
+ * Line Clamp
1368
+ * @see https://tailwindcss.com/docs/line-clamp
1369
+ */
1370
+ "line-clamp": [{
1371
+ "line-clamp": ["none", isNumber, isArbitraryNumber]
1372
+ }],
1373
+ /**
1374
+ * Line Height
1375
+ * @see https://tailwindcss.com/docs/line-height
1376
+ */
1377
+ leading: [{
1378
+ leading: ["none", "tight", "snug", "normal", "relaxed", "loose", isLength, isArbitraryValue]
1379
+ }],
1380
+ /**
1381
+ * List Style Image
1382
+ * @see https://tailwindcss.com/docs/list-style-image
1383
+ */
1384
+ "list-image": [{
1385
+ "list-image": ["none", isArbitraryValue]
1386
+ }],
1387
+ /**
1388
+ * List Style Type
1389
+ * @see https://tailwindcss.com/docs/list-style-type
1390
+ */
1391
+ "list-style-type": [{
1392
+ list: ["none", "disc", "decimal", isArbitraryValue]
1393
+ }],
1394
+ /**
1395
+ * List Style Position
1396
+ * @see https://tailwindcss.com/docs/list-style-position
1397
+ */
1398
+ "list-style-position": [{
1399
+ list: ["inside", "outside"]
1400
+ }],
1401
+ /**
1402
+ * Placeholder Color
1403
+ * @deprecated since Tailwind CSS v3.0.0
1404
+ * @see https://tailwindcss.com/docs/placeholder-color
1405
+ */
1406
+ "placeholder-color": [{
1407
+ placeholder: [colors]
1408
+ }],
1409
+ /**
1410
+ * Placeholder Opacity
1411
+ * @see https://tailwindcss.com/docs/placeholder-opacity
1412
+ */
1413
+ "placeholder-opacity": [{
1414
+ "placeholder-opacity": [opacity]
1415
+ }],
1416
+ /**
1417
+ * Text Alignment
1418
+ * @see https://tailwindcss.com/docs/text-align
1419
+ */
1420
+ "text-alignment": [{
1421
+ text: ["left", "center", "right", "justify", "start", "end"]
1422
+ }],
1423
+ /**
1424
+ * Text Color
1425
+ * @see https://tailwindcss.com/docs/text-color
1426
+ */
1427
+ "text-color": [{
1428
+ text: [colors]
1429
+ }],
1430
+ /**
1431
+ * Text Opacity
1432
+ * @see https://tailwindcss.com/docs/text-opacity
1433
+ */
1434
+ "text-opacity": [{
1435
+ "text-opacity": [opacity]
1436
+ }],
1437
+ /**
1438
+ * Text Decoration
1439
+ * @see https://tailwindcss.com/docs/text-decoration
1440
+ */
1441
+ "text-decoration": ["underline", "overline", "line-through", "no-underline"],
1442
+ /**
1443
+ * Text Decoration Style
1444
+ * @see https://tailwindcss.com/docs/text-decoration-style
1445
+ */
1446
+ "text-decoration-style": [{
1447
+ decoration: [...getLineStyles(), "wavy"]
1448
+ }],
1449
+ /**
1450
+ * Text Decoration Thickness
1451
+ * @see https://tailwindcss.com/docs/text-decoration-thickness
1452
+ */
1453
+ "text-decoration-thickness": [{
1454
+ decoration: ["auto", "from-font", isLength, isArbitraryLength]
1455
+ }],
1456
+ /**
1457
+ * Text Underline Offset
1458
+ * @see https://tailwindcss.com/docs/text-underline-offset
1459
+ */
1460
+ "underline-offset": [{
1461
+ "underline-offset": ["auto", isLength, isArbitraryValue]
1462
+ }],
1463
+ /**
1464
+ * Text Decoration Color
1465
+ * @see https://tailwindcss.com/docs/text-decoration-color
1466
+ */
1467
+ "text-decoration-color": [{
1468
+ decoration: [colors]
1469
+ }],
1470
+ /**
1471
+ * Text Transform
1472
+ * @see https://tailwindcss.com/docs/text-transform
1473
+ */
1474
+ "text-transform": ["uppercase", "lowercase", "capitalize", "normal-case"],
1475
+ /**
1476
+ * Text Overflow
1477
+ * @see https://tailwindcss.com/docs/text-overflow
1478
+ */
1479
+ "text-overflow": ["truncate", "text-ellipsis", "text-clip"],
1480
+ /**
1481
+ * Text Wrap
1482
+ * @see https://tailwindcss.com/docs/text-wrap
1483
+ */
1484
+ "text-wrap": [{
1485
+ text: ["wrap", "nowrap", "balance", "pretty"]
1486
+ }],
1487
+ /**
1488
+ * Text Indent
1489
+ * @see https://tailwindcss.com/docs/text-indent
1490
+ */
1491
+ indent: [{
1492
+ indent: getSpacingWithArbitrary()
1493
+ }],
1494
+ /**
1495
+ * Vertical Alignment
1496
+ * @see https://tailwindcss.com/docs/vertical-align
1497
+ */
1498
+ "vertical-align": [{
1499
+ align: ["baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", isArbitraryValue]
1500
+ }],
1501
+ /**
1502
+ * Whitespace
1503
+ * @see https://tailwindcss.com/docs/whitespace
1504
+ */
1505
+ whitespace: [{
1506
+ whitespace: ["normal", "nowrap", "pre", "pre-line", "pre-wrap", "break-spaces"]
1507
+ }],
1508
+ /**
1509
+ * Word Break
1510
+ * @see https://tailwindcss.com/docs/word-break
1511
+ */
1512
+ break: [{
1513
+ break: ["normal", "words", "all", "keep"]
1514
+ }],
1515
+ /**
1516
+ * Hyphens
1517
+ * @see https://tailwindcss.com/docs/hyphens
1518
+ */
1519
+ hyphens: [{
1520
+ hyphens: ["none", "manual", "auto"]
1521
+ }],
1522
+ /**
1523
+ * Content
1524
+ * @see https://tailwindcss.com/docs/content
1525
+ */
1526
+ content: [{
1527
+ content: ["none", isArbitraryValue]
1528
+ }],
1529
+ // Backgrounds
1530
+ /**
1531
+ * Background Attachment
1532
+ * @see https://tailwindcss.com/docs/background-attachment
1533
+ */
1534
+ "bg-attachment": [{
1535
+ bg: ["fixed", "local", "scroll"]
1536
+ }],
1537
+ /**
1538
+ * Background Clip
1539
+ * @see https://tailwindcss.com/docs/background-clip
1540
+ */
1541
+ "bg-clip": [{
1542
+ "bg-clip": ["border", "padding", "content", "text"]
1543
+ }],
1544
+ /**
1545
+ * Background Opacity
1546
+ * @deprecated since Tailwind CSS v3.0.0
1547
+ * @see https://tailwindcss.com/docs/background-opacity
1548
+ */
1549
+ "bg-opacity": [{
1550
+ "bg-opacity": [opacity]
1551
+ }],
1552
+ /**
1553
+ * Background Origin
1554
+ * @see https://tailwindcss.com/docs/background-origin
1555
+ */
1556
+ "bg-origin": [{
1557
+ "bg-origin": ["border", "padding", "content"]
1558
+ }],
1559
+ /**
1560
+ * Background Position
1561
+ * @see https://tailwindcss.com/docs/background-position
1562
+ */
1563
+ "bg-position": [{
1564
+ bg: [...getPositions(), isArbitraryPosition]
1565
+ }],
1566
+ /**
1567
+ * Background Repeat
1568
+ * @see https://tailwindcss.com/docs/background-repeat
1569
+ */
1570
+ "bg-repeat": [{
1571
+ bg: ["no-repeat", {
1572
+ repeat: ["", "x", "y", "round", "space"]
1573
+ }]
1574
+ }],
1575
+ /**
1576
+ * Background Size
1577
+ * @see https://tailwindcss.com/docs/background-size
1578
+ */
1579
+ "bg-size": [{
1580
+ bg: ["auto", "cover", "contain", isArbitrarySize]
1581
+ }],
1582
+ /**
1583
+ * Background Image
1584
+ * @see https://tailwindcss.com/docs/background-image
1585
+ */
1586
+ "bg-image": [{
1587
+ bg: ["none", {
1588
+ "gradient-to": ["t", "tr", "r", "br", "b", "bl", "l", "tl"]
1589
+ }, isArbitraryImage]
1590
+ }],
1591
+ /**
1592
+ * Background Color
1593
+ * @see https://tailwindcss.com/docs/background-color
1594
+ */
1595
+ "bg-color": [{
1596
+ bg: [colors]
1597
+ }],
1598
+ /**
1599
+ * Gradient Color Stops From Position
1600
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1601
+ */
1602
+ "gradient-from-pos": [{
1603
+ from: [gradientColorStopPositions]
1604
+ }],
1605
+ /**
1606
+ * Gradient Color Stops Via Position
1607
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1608
+ */
1609
+ "gradient-via-pos": [{
1610
+ via: [gradientColorStopPositions]
1611
+ }],
1612
+ /**
1613
+ * Gradient Color Stops To Position
1614
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1615
+ */
1616
+ "gradient-to-pos": [{
1617
+ to: [gradientColorStopPositions]
1618
+ }],
1619
+ /**
1620
+ * Gradient Color Stops From
1621
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1622
+ */
1623
+ "gradient-from": [{
1624
+ from: [gradientColorStops]
1625
+ }],
1626
+ /**
1627
+ * Gradient Color Stops Via
1628
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1629
+ */
1630
+ "gradient-via": [{
1631
+ via: [gradientColorStops]
1632
+ }],
1633
+ /**
1634
+ * Gradient Color Stops To
1635
+ * @see https://tailwindcss.com/docs/gradient-color-stops
1636
+ */
1637
+ "gradient-to": [{
1638
+ to: [gradientColorStops]
1639
+ }],
1640
+ // Borders
1641
+ /**
1642
+ * Border Radius
1643
+ * @see https://tailwindcss.com/docs/border-radius
1644
+ */
1645
+ rounded: [{
1646
+ rounded: [borderRadius]
1647
+ }],
1648
+ /**
1649
+ * Border Radius Start
1650
+ * @see https://tailwindcss.com/docs/border-radius
1651
+ */
1652
+ "rounded-s": [{
1653
+ "rounded-s": [borderRadius]
1654
+ }],
1655
+ /**
1656
+ * Border Radius End
1657
+ * @see https://tailwindcss.com/docs/border-radius
1658
+ */
1659
+ "rounded-e": [{
1660
+ "rounded-e": [borderRadius]
1661
+ }],
1662
+ /**
1663
+ * Border Radius Top
1664
+ * @see https://tailwindcss.com/docs/border-radius
1665
+ */
1666
+ "rounded-t": [{
1667
+ "rounded-t": [borderRadius]
1668
+ }],
1669
+ /**
1670
+ * Border Radius Right
1671
+ * @see https://tailwindcss.com/docs/border-radius
1672
+ */
1673
+ "rounded-r": [{
1674
+ "rounded-r": [borderRadius]
1675
+ }],
1676
+ /**
1677
+ * Border Radius Bottom
1678
+ * @see https://tailwindcss.com/docs/border-radius
1679
+ */
1680
+ "rounded-b": [{
1681
+ "rounded-b": [borderRadius]
1682
+ }],
1683
+ /**
1684
+ * Border Radius Left
1685
+ * @see https://tailwindcss.com/docs/border-radius
1686
+ */
1687
+ "rounded-l": [{
1688
+ "rounded-l": [borderRadius]
1689
+ }],
1690
+ /**
1691
+ * Border Radius Start Start
1692
+ * @see https://tailwindcss.com/docs/border-radius
1693
+ */
1694
+ "rounded-ss": [{
1695
+ "rounded-ss": [borderRadius]
1696
+ }],
1697
+ /**
1698
+ * Border Radius Start End
1699
+ * @see https://tailwindcss.com/docs/border-radius
1700
+ */
1701
+ "rounded-se": [{
1702
+ "rounded-se": [borderRadius]
1703
+ }],
1704
+ /**
1705
+ * Border Radius End End
1706
+ * @see https://tailwindcss.com/docs/border-radius
1707
+ */
1708
+ "rounded-ee": [{
1709
+ "rounded-ee": [borderRadius]
1710
+ }],
1711
+ /**
1712
+ * Border Radius End Start
1713
+ * @see https://tailwindcss.com/docs/border-radius
1714
+ */
1715
+ "rounded-es": [{
1716
+ "rounded-es": [borderRadius]
1717
+ }],
1718
+ /**
1719
+ * Border Radius Top Left
1720
+ * @see https://tailwindcss.com/docs/border-radius
1721
+ */
1722
+ "rounded-tl": [{
1723
+ "rounded-tl": [borderRadius]
1724
+ }],
1725
+ /**
1726
+ * Border Radius Top Right
1727
+ * @see https://tailwindcss.com/docs/border-radius
1728
+ */
1729
+ "rounded-tr": [{
1730
+ "rounded-tr": [borderRadius]
1731
+ }],
1732
+ /**
1733
+ * Border Radius Bottom Right
1734
+ * @see https://tailwindcss.com/docs/border-radius
1735
+ */
1736
+ "rounded-br": [{
1737
+ "rounded-br": [borderRadius]
1738
+ }],
1739
+ /**
1740
+ * Border Radius Bottom Left
1741
+ * @see https://tailwindcss.com/docs/border-radius
1742
+ */
1743
+ "rounded-bl": [{
1744
+ "rounded-bl": [borderRadius]
1745
+ }],
1746
+ /**
1747
+ * Border Width
1748
+ * @see https://tailwindcss.com/docs/border-width
1749
+ */
1750
+ "border-w": [{
1751
+ border: [borderWidth]
1752
+ }],
1753
+ /**
1754
+ * Border Width X
1755
+ * @see https://tailwindcss.com/docs/border-width
1756
+ */
1757
+ "border-w-x": [{
1758
+ "border-x": [borderWidth]
1759
+ }],
1760
+ /**
1761
+ * Border Width Y
1762
+ * @see https://tailwindcss.com/docs/border-width
1763
+ */
1764
+ "border-w-y": [{
1765
+ "border-y": [borderWidth]
1766
+ }],
1767
+ /**
1768
+ * Border Width Start
1769
+ * @see https://tailwindcss.com/docs/border-width
1770
+ */
1771
+ "border-w-s": [{
1772
+ "border-s": [borderWidth]
1773
+ }],
1774
+ /**
1775
+ * Border Width End
1776
+ * @see https://tailwindcss.com/docs/border-width
1777
+ */
1778
+ "border-w-e": [{
1779
+ "border-e": [borderWidth]
1780
+ }],
1781
+ /**
1782
+ * Border Width Top
1783
+ * @see https://tailwindcss.com/docs/border-width
1784
+ */
1785
+ "border-w-t": [{
1786
+ "border-t": [borderWidth]
1787
+ }],
1788
+ /**
1789
+ * Border Width Right
1790
+ * @see https://tailwindcss.com/docs/border-width
1791
+ */
1792
+ "border-w-r": [{
1793
+ "border-r": [borderWidth]
1794
+ }],
1795
+ /**
1796
+ * Border Width Bottom
1797
+ * @see https://tailwindcss.com/docs/border-width
1798
+ */
1799
+ "border-w-b": [{
1800
+ "border-b": [borderWidth]
1801
+ }],
1802
+ /**
1803
+ * Border Width Left
1804
+ * @see https://tailwindcss.com/docs/border-width
1805
+ */
1806
+ "border-w-l": [{
1807
+ "border-l": [borderWidth]
1808
+ }],
1809
+ /**
1810
+ * Border Opacity
1811
+ * @see https://tailwindcss.com/docs/border-opacity
1812
+ */
1813
+ "border-opacity": [{
1814
+ "border-opacity": [opacity]
1815
+ }],
1816
+ /**
1817
+ * Border Style
1818
+ * @see https://tailwindcss.com/docs/border-style
1819
+ */
1820
+ "border-style": [{
1821
+ border: [...getLineStyles(), "hidden"]
1822
+ }],
1823
+ /**
1824
+ * Divide Width X
1825
+ * @see https://tailwindcss.com/docs/divide-width
1826
+ */
1827
+ "divide-x": [{
1828
+ "divide-x": [borderWidth]
1829
+ }],
1830
+ /**
1831
+ * Divide Width X Reverse
1832
+ * @see https://tailwindcss.com/docs/divide-width
1833
+ */
1834
+ "divide-x-reverse": ["divide-x-reverse"],
1835
+ /**
1836
+ * Divide Width Y
1837
+ * @see https://tailwindcss.com/docs/divide-width
1838
+ */
1839
+ "divide-y": [{
1840
+ "divide-y": [borderWidth]
1841
+ }],
1842
+ /**
1843
+ * Divide Width Y Reverse
1844
+ * @see https://tailwindcss.com/docs/divide-width
1845
+ */
1846
+ "divide-y-reverse": ["divide-y-reverse"],
1847
+ /**
1848
+ * Divide Opacity
1849
+ * @see https://tailwindcss.com/docs/divide-opacity
1850
+ */
1851
+ "divide-opacity": [{
1852
+ "divide-opacity": [opacity]
1853
+ }],
1854
+ /**
1855
+ * Divide Style
1856
+ * @see https://tailwindcss.com/docs/divide-style
1857
+ */
1858
+ "divide-style": [{
1859
+ divide: getLineStyles()
1860
+ }],
1861
+ /**
1862
+ * Border Color
1863
+ * @see https://tailwindcss.com/docs/border-color
1864
+ */
1865
+ "border-color": [{
1866
+ border: [borderColor]
1867
+ }],
1868
+ /**
1869
+ * Border Color X
1870
+ * @see https://tailwindcss.com/docs/border-color
1871
+ */
1872
+ "border-color-x": [{
1873
+ "border-x": [borderColor]
1874
+ }],
1875
+ /**
1876
+ * Border Color Y
1877
+ * @see https://tailwindcss.com/docs/border-color
1878
+ */
1879
+ "border-color-y": [{
1880
+ "border-y": [borderColor]
1881
+ }],
1882
+ /**
1883
+ * Border Color Top
1884
+ * @see https://tailwindcss.com/docs/border-color
1885
+ */
1886
+ "border-color-t": [{
1887
+ "border-t": [borderColor]
1888
+ }],
1889
+ /**
1890
+ * Border Color Right
1891
+ * @see https://tailwindcss.com/docs/border-color
1892
+ */
1893
+ "border-color-r": [{
1894
+ "border-r": [borderColor]
1895
+ }],
1896
+ /**
1897
+ * Border Color Bottom
1898
+ * @see https://tailwindcss.com/docs/border-color
1899
+ */
1900
+ "border-color-b": [{
1901
+ "border-b": [borderColor]
1902
+ }],
1903
+ /**
1904
+ * Border Color Left
1905
+ * @see https://tailwindcss.com/docs/border-color
1906
+ */
1907
+ "border-color-l": [{
1908
+ "border-l": [borderColor]
1909
+ }],
1910
+ /**
1911
+ * Divide Color
1912
+ * @see https://tailwindcss.com/docs/divide-color
1913
+ */
1914
+ "divide-color": [{
1915
+ divide: [borderColor]
1916
+ }],
1917
+ /**
1918
+ * Outline Style
1919
+ * @see https://tailwindcss.com/docs/outline-style
1920
+ */
1921
+ "outline-style": [{
1922
+ outline: ["", ...getLineStyles()]
1923
+ }],
1924
+ /**
1925
+ * Outline Offset
1926
+ * @see https://tailwindcss.com/docs/outline-offset
1927
+ */
1928
+ "outline-offset": [{
1929
+ "outline-offset": [isLength, isArbitraryValue]
1930
+ }],
1931
+ /**
1932
+ * Outline Width
1933
+ * @see https://tailwindcss.com/docs/outline-width
1934
+ */
1935
+ "outline-w": [{
1936
+ outline: [isLength, isArbitraryLength]
1937
+ }],
1938
+ /**
1939
+ * Outline Color
1940
+ * @see https://tailwindcss.com/docs/outline-color
1941
+ */
1942
+ "outline-color": [{
1943
+ outline: [colors]
1944
+ }],
1945
+ /**
1946
+ * Ring Width
1947
+ * @see https://tailwindcss.com/docs/ring-width
1948
+ */
1949
+ "ring-w": [{
1950
+ ring: getLengthWithEmptyAndArbitrary()
1951
+ }],
1952
+ /**
1953
+ * Ring Width Inset
1954
+ * @see https://tailwindcss.com/docs/ring-width
1955
+ */
1956
+ "ring-w-inset": ["ring-inset"],
1957
+ /**
1958
+ * Ring Color
1959
+ * @see https://tailwindcss.com/docs/ring-color
1960
+ */
1961
+ "ring-color": [{
1962
+ ring: [colors]
1963
+ }],
1964
+ /**
1965
+ * Ring Opacity
1966
+ * @see https://tailwindcss.com/docs/ring-opacity
1967
+ */
1968
+ "ring-opacity": [{
1969
+ "ring-opacity": [opacity]
1970
+ }],
1971
+ /**
1972
+ * Ring Offset Width
1973
+ * @see https://tailwindcss.com/docs/ring-offset-width
1974
+ */
1975
+ "ring-offset-w": [{
1976
+ "ring-offset": [isLength, isArbitraryLength]
1977
+ }],
1978
+ /**
1979
+ * Ring Offset Color
1980
+ * @see https://tailwindcss.com/docs/ring-offset-color
1981
+ */
1982
+ "ring-offset-color": [{
1983
+ "ring-offset": [colors]
1984
+ }],
1985
+ // Effects
1986
+ /**
1987
+ * Box Shadow
1988
+ * @see https://tailwindcss.com/docs/box-shadow
1989
+ */
1990
+ shadow: [{
1991
+ shadow: ["", "inner", "none", isTshirtSize, isArbitraryShadow]
1992
+ }],
1993
+ /**
1994
+ * Box Shadow Color
1995
+ * @see https://tailwindcss.com/docs/box-shadow-color
1996
+ */
1997
+ "shadow-color": [{
1998
+ shadow: [isAny]
1999
+ }],
2000
+ /**
2001
+ * Opacity
2002
+ * @see https://tailwindcss.com/docs/opacity
2003
+ */
2004
+ opacity: [{
2005
+ opacity: [opacity]
2006
+ }],
2007
+ /**
2008
+ * Mix Blend Mode
2009
+ * @see https://tailwindcss.com/docs/mix-blend-mode
2010
+ */
2011
+ "mix-blend": [{
2012
+ "mix-blend": getBlendModes()
2013
+ }],
2014
+ /**
2015
+ * Background Blend Mode
2016
+ * @see https://tailwindcss.com/docs/background-blend-mode
2017
+ */
2018
+ "bg-blend": [{
2019
+ "bg-blend": getBlendModes()
2020
+ }],
2021
+ // Filters
2022
+ /**
2023
+ * Filter
2024
+ * @deprecated since Tailwind CSS v3.0.0
2025
+ * @see https://tailwindcss.com/docs/filter
2026
+ */
2027
+ filter: [{
2028
+ filter: ["", "none"]
2029
+ }],
2030
+ /**
2031
+ * Blur
2032
+ * @see https://tailwindcss.com/docs/blur
2033
+ */
2034
+ blur: [{
2035
+ blur: [blur]
2036
+ }],
2037
+ /**
2038
+ * Brightness
2039
+ * @see https://tailwindcss.com/docs/brightness
2040
+ */
2041
+ brightness: [{
2042
+ brightness: [brightness]
2043
+ }],
2044
+ /**
2045
+ * Contrast
2046
+ * @see https://tailwindcss.com/docs/contrast
2047
+ */
2048
+ contrast: [{
2049
+ contrast: [contrast]
2050
+ }],
2051
+ /**
2052
+ * Drop Shadow
2053
+ * @see https://tailwindcss.com/docs/drop-shadow
2054
+ */
2055
+ "drop-shadow": [{
2056
+ "drop-shadow": ["", "none", isTshirtSize, isArbitraryValue]
2057
+ }],
2058
+ /**
2059
+ * Grayscale
2060
+ * @see https://tailwindcss.com/docs/grayscale
2061
+ */
2062
+ grayscale: [{
2063
+ grayscale: [grayscale]
2064
+ }],
2065
+ /**
2066
+ * Hue Rotate
2067
+ * @see https://tailwindcss.com/docs/hue-rotate
2068
+ */
2069
+ "hue-rotate": [{
2070
+ "hue-rotate": [hueRotate]
2071
+ }],
2072
+ /**
2073
+ * Invert
2074
+ * @see https://tailwindcss.com/docs/invert
2075
+ */
2076
+ invert: [{
2077
+ invert: [invert]
2078
+ }],
2079
+ /**
2080
+ * Saturate
2081
+ * @see https://tailwindcss.com/docs/saturate
2082
+ */
2083
+ saturate: [{
2084
+ saturate: [saturate]
2085
+ }],
2086
+ /**
2087
+ * Sepia
2088
+ * @see https://tailwindcss.com/docs/sepia
2089
+ */
2090
+ sepia: [{
2091
+ sepia: [sepia]
2092
+ }],
2093
+ /**
2094
+ * Backdrop Filter
2095
+ * @deprecated since Tailwind CSS v3.0.0
2096
+ * @see https://tailwindcss.com/docs/backdrop-filter
2097
+ */
2098
+ "backdrop-filter": [{
2099
+ "backdrop-filter": ["", "none"]
2100
+ }],
2101
+ /**
2102
+ * Backdrop Blur
2103
+ * @see https://tailwindcss.com/docs/backdrop-blur
2104
+ */
2105
+ "backdrop-blur": [{
2106
+ "backdrop-blur": [blur]
2107
+ }],
2108
+ /**
2109
+ * Backdrop Brightness
2110
+ * @see https://tailwindcss.com/docs/backdrop-brightness
2111
+ */
2112
+ "backdrop-brightness": [{
2113
+ "backdrop-brightness": [brightness]
2114
+ }],
2115
+ /**
2116
+ * Backdrop Contrast
2117
+ * @see https://tailwindcss.com/docs/backdrop-contrast
2118
+ */
2119
+ "backdrop-contrast": [{
2120
+ "backdrop-contrast": [contrast]
2121
+ }],
2122
+ /**
2123
+ * Backdrop Grayscale
2124
+ * @see https://tailwindcss.com/docs/backdrop-grayscale
2125
+ */
2126
+ "backdrop-grayscale": [{
2127
+ "backdrop-grayscale": [grayscale]
2128
+ }],
2129
+ /**
2130
+ * Backdrop Hue Rotate
2131
+ * @see https://tailwindcss.com/docs/backdrop-hue-rotate
2132
+ */
2133
+ "backdrop-hue-rotate": [{
2134
+ "backdrop-hue-rotate": [hueRotate]
2135
+ }],
2136
+ /**
2137
+ * Backdrop Invert
2138
+ * @see https://tailwindcss.com/docs/backdrop-invert
2139
+ */
2140
+ "backdrop-invert": [{
2141
+ "backdrop-invert": [invert]
2142
+ }],
2143
+ /**
2144
+ * Backdrop Opacity
2145
+ * @see https://tailwindcss.com/docs/backdrop-opacity
2146
+ */
2147
+ "backdrop-opacity": [{
2148
+ "backdrop-opacity": [opacity]
2149
+ }],
2150
+ /**
2151
+ * Backdrop Saturate
2152
+ * @see https://tailwindcss.com/docs/backdrop-saturate
2153
+ */
2154
+ "backdrop-saturate": [{
2155
+ "backdrop-saturate": [saturate]
2156
+ }],
2157
+ /**
2158
+ * Backdrop Sepia
2159
+ * @see https://tailwindcss.com/docs/backdrop-sepia
2160
+ */
2161
+ "backdrop-sepia": [{
2162
+ "backdrop-sepia": [sepia]
2163
+ }],
2164
+ // Tables
2165
+ /**
2166
+ * Border Collapse
2167
+ * @see https://tailwindcss.com/docs/border-collapse
2168
+ */
2169
+ "border-collapse": [{
2170
+ border: ["collapse", "separate"]
2171
+ }],
2172
+ /**
2173
+ * Border Spacing
2174
+ * @see https://tailwindcss.com/docs/border-spacing
2175
+ */
2176
+ "border-spacing": [{
2177
+ "border-spacing": [borderSpacing]
2178
+ }],
2179
+ /**
2180
+ * Border Spacing X
2181
+ * @see https://tailwindcss.com/docs/border-spacing
2182
+ */
2183
+ "border-spacing-x": [{
2184
+ "border-spacing-x": [borderSpacing]
2185
+ }],
2186
+ /**
2187
+ * Border Spacing Y
2188
+ * @see https://tailwindcss.com/docs/border-spacing
2189
+ */
2190
+ "border-spacing-y": [{
2191
+ "border-spacing-y": [borderSpacing]
2192
+ }],
2193
+ /**
2194
+ * Table Layout
2195
+ * @see https://tailwindcss.com/docs/table-layout
2196
+ */
2197
+ "table-layout": [{
2198
+ table: ["auto", "fixed"]
2199
+ }],
2200
+ /**
2201
+ * Caption Side
2202
+ * @see https://tailwindcss.com/docs/caption-side
2203
+ */
2204
+ caption: [{
2205
+ caption: ["top", "bottom"]
2206
+ }],
2207
+ // Transitions and Animation
2208
+ /**
2209
+ * Tranisition Property
2210
+ * @see https://tailwindcss.com/docs/transition-property
2211
+ */
2212
+ transition: [{
2213
+ transition: ["none", "all", "", "colors", "opacity", "shadow", "transform", isArbitraryValue]
2214
+ }],
2215
+ /**
2216
+ * Transition Duration
2217
+ * @see https://tailwindcss.com/docs/transition-duration
2218
+ */
2219
+ duration: [{
2220
+ duration: getNumberAndArbitrary()
2221
+ }],
2222
+ /**
2223
+ * Transition Timing Function
2224
+ * @see https://tailwindcss.com/docs/transition-timing-function
2225
+ */
2226
+ ease: [{
2227
+ ease: ["linear", "in", "out", "in-out", isArbitraryValue]
2228
+ }],
2229
+ /**
2230
+ * Transition Delay
2231
+ * @see https://tailwindcss.com/docs/transition-delay
2232
+ */
2233
+ delay: [{
2234
+ delay: getNumberAndArbitrary()
2235
+ }],
2236
+ /**
2237
+ * Animation
2238
+ * @see https://tailwindcss.com/docs/animation
2239
+ */
2240
+ animate: [{
2241
+ animate: ["none", "spin", "ping", "pulse", "bounce", isArbitraryValue]
2242
+ }],
2243
+ // Transforms
2244
+ /**
2245
+ * Transform
2246
+ * @see https://tailwindcss.com/docs/transform
2247
+ */
2248
+ transform: [{
2249
+ transform: ["", "gpu", "none"]
2250
+ }],
2251
+ /**
2252
+ * Scale
2253
+ * @see https://tailwindcss.com/docs/scale
2254
+ */
2255
+ scale: [{
2256
+ scale: [scale]
2257
+ }],
2258
+ /**
2259
+ * Scale X
2260
+ * @see https://tailwindcss.com/docs/scale
2261
+ */
2262
+ "scale-x": [{
2263
+ "scale-x": [scale]
2264
+ }],
2265
+ /**
2266
+ * Scale Y
2267
+ * @see https://tailwindcss.com/docs/scale
2268
+ */
2269
+ "scale-y": [{
2270
+ "scale-y": [scale]
2271
+ }],
2272
+ /**
2273
+ * Rotate
2274
+ * @see https://tailwindcss.com/docs/rotate
2275
+ */
2276
+ rotate: [{
2277
+ rotate: [isInteger, isArbitraryValue]
2278
+ }],
2279
+ /**
2280
+ * Translate X
2281
+ * @see https://tailwindcss.com/docs/translate
2282
+ */
2283
+ "translate-x": [{
2284
+ "translate-x": [translate]
2285
+ }],
2286
+ /**
2287
+ * Translate Y
2288
+ * @see https://tailwindcss.com/docs/translate
2289
+ */
2290
+ "translate-y": [{
2291
+ "translate-y": [translate]
2292
+ }],
2293
+ /**
2294
+ * Skew X
2295
+ * @see https://tailwindcss.com/docs/skew
2296
+ */
2297
+ "skew-x": [{
2298
+ "skew-x": [skew]
2299
+ }],
2300
+ /**
2301
+ * Skew Y
2302
+ * @see https://tailwindcss.com/docs/skew
2303
+ */
2304
+ "skew-y": [{
2305
+ "skew-y": [skew]
2306
+ }],
2307
+ /**
2308
+ * Transform Origin
2309
+ * @see https://tailwindcss.com/docs/transform-origin
2310
+ */
2311
+ "transform-origin": [{
2312
+ origin: ["center", "top", "top-right", "right", "bottom-right", "bottom", "bottom-left", "left", "top-left", isArbitraryValue]
2313
+ }],
2314
+ // Interactivity
2315
+ /**
2316
+ * Accent Color
2317
+ * @see https://tailwindcss.com/docs/accent-color
2318
+ */
2319
+ accent: [{
2320
+ accent: ["auto", colors]
2321
+ }],
2322
+ /**
2323
+ * Appearance
2324
+ * @see https://tailwindcss.com/docs/appearance
2325
+ */
2326
+ appearance: [{
2327
+ appearance: ["none", "auto"]
2328
+ }],
2329
+ /**
2330
+ * Cursor
2331
+ * @see https://tailwindcss.com/docs/cursor
2332
+ */
2333
+ cursor: [{
2334
+ 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]
2335
+ }],
2336
+ /**
2337
+ * Caret Color
2338
+ * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
2339
+ */
2340
+ "caret-color": [{
2341
+ caret: [colors]
2342
+ }],
2343
+ /**
2344
+ * Pointer Events
2345
+ * @see https://tailwindcss.com/docs/pointer-events
2346
+ */
2347
+ "pointer-events": [{
2348
+ "pointer-events": ["none", "auto"]
2349
+ }],
2350
+ /**
2351
+ * Resize
2352
+ * @see https://tailwindcss.com/docs/resize
2353
+ */
2354
+ resize: [{
2355
+ resize: ["none", "y", "x", ""]
2356
+ }],
2357
+ /**
2358
+ * Scroll Behavior
2359
+ * @see https://tailwindcss.com/docs/scroll-behavior
2360
+ */
2361
+ "scroll-behavior": [{
2362
+ scroll: ["auto", "smooth"]
2363
+ }],
2364
+ /**
2365
+ * Scroll Margin
2366
+ * @see https://tailwindcss.com/docs/scroll-margin
2367
+ */
2368
+ "scroll-m": [{
2369
+ "scroll-m": getSpacingWithArbitrary()
2370
+ }],
2371
+ /**
2372
+ * Scroll Margin X
2373
+ * @see https://tailwindcss.com/docs/scroll-margin
2374
+ */
2375
+ "scroll-mx": [{
2376
+ "scroll-mx": getSpacingWithArbitrary()
2377
+ }],
2378
+ /**
2379
+ * Scroll Margin Y
2380
+ * @see https://tailwindcss.com/docs/scroll-margin
2381
+ */
2382
+ "scroll-my": [{
2383
+ "scroll-my": getSpacingWithArbitrary()
2384
+ }],
2385
+ /**
2386
+ * Scroll Margin Start
2387
+ * @see https://tailwindcss.com/docs/scroll-margin
2388
+ */
2389
+ "scroll-ms": [{
2390
+ "scroll-ms": getSpacingWithArbitrary()
2391
+ }],
2392
+ /**
2393
+ * Scroll Margin End
2394
+ * @see https://tailwindcss.com/docs/scroll-margin
2395
+ */
2396
+ "scroll-me": [{
2397
+ "scroll-me": getSpacingWithArbitrary()
2398
+ }],
2399
+ /**
2400
+ * Scroll Margin Top
2401
+ * @see https://tailwindcss.com/docs/scroll-margin
2402
+ */
2403
+ "scroll-mt": [{
2404
+ "scroll-mt": getSpacingWithArbitrary()
2405
+ }],
2406
+ /**
2407
+ * Scroll Margin Right
2408
+ * @see https://tailwindcss.com/docs/scroll-margin
2409
+ */
2410
+ "scroll-mr": [{
2411
+ "scroll-mr": getSpacingWithArbitrary()
2412
+ }],
2413
+ /**
2414
+ * Scroll Margin Bottom
2415
+ * @see https://tailwindcss.com/docs/scroll-margin
2416
+ */
2417
+ "scroll-mb": [{
2418
+ "scroll-mb": getSpacingWithArbitrary()
2419
+ }],
2420
+ /**
2421
+ * Scroll Margin Left
2422
+ * @see https://tailwindcss.com/docs/scroll-margin
2423
+ */
2424
+ "scroll-ml": [{
2425
+ "scroll-ml": getSpacingWithArbitrary()
2426
+ }],
2427
+ /**
2428
+ * Scroll Padding
2429
+ * @see https://tailwindcss.com/docs/scroll-padding
2430
+ */
2431
+ "scroll-p": [{
2432
+ "scroll-p": getSpacingWithArbitrary()
2433
+ }],
2434
+ /**
2435
+ * Scroll Padding X
2436
+ * @see https://tailwindcss.com/docs/scroll-padding
2437
+ */
2438
+ "scroll-px": [{
2439
+ "scroll-px": getSpacingWithArbitrary()
2440
+ }],
2441
+ /**
2442
+ * Scroll Padding Y
2443
+ * @see https://tailwindcss.com/docs/scroll-padding
2444
+ */
2445
+ "scroll-py": [{
2446
+ "scroll-py": getSpacingWithArbitrary()
2447
+ }],
2448
+ /**
2449
+ * Scroll Padding Start
2450
+ * @see https://tailwindcss.com/docs/scroll-padding
2451
+ */
2452
+ "scroll-ps": [{
2453
+ "scroll-ps": getSpacingWithArbitrary()
2454
+ }],
2455
+ /**
2456
+ * Scroll Padding End
2457
+ * @see https://tailwindcss.com/docs/scroll-padding
2458
+ */
2459
+ "scroll-pe": [{
2460
+ "scroll-pe": getSpacingWithArbitrary()
2461
+ }],
2462
+ /**
2463
+ * Scroll Padding Top
2464
+ * @see https://tailwindcss.com/docs/scroll-padding
2465
+ */
2466
+ "scroll-pt": [{
2467
+ "scroll-pt": getSpacingWithArbitrary()
2468
+ }],
2469
+ /**
2470
+ * Scroll Padding Right
2471
+ * @see https://tailwindcss.com/docs/scroll-padding
2472
+ */
2473
+ "scroll-pr": [{
2474
+ "scroll-pr": getSpacingWithArbitrary()
2475
+ }],
2476
+ /**
2477
+ * Scroll Padding Bottom
2478
+ * @see https://tailwindcss.com/docs/scroll-padding
2479
+ */
2480
+ "scroll-pb": [{
2481
+ "scroll-pb": getSpacingWithArbitrary()
2482
+ }],
2483
+ /**
2484
+ * Scroll Padding Left
2485
+ * @see https://tailwindcss.com/docs/scroll-padding
2486
+ */
2487
+ "scroll-pl": [{
2488
+ "scroll-pl": getSpacingWithArbitrary()
2489
+ }],
2490
+ /**
2491
+ * Scroll Snap Align
2492
+ * @see https://tailwindcss.com/docs/scroll-snap-align
2493
+ */
2494
+ "snap-align": [{
2495
+ snap: ["start", "end", "center", "align-none"]
2496
+ }],
2497
+ /**
2498
+ * Scroll Snap Stop
2499
+ * @see https://tailwindcss.com/docs/scroll-snap-stop
2500
+ */
2501
+ "snap-stop": [{
2502
+ snap: ["normal", "always"]
2503
+ }],
2504
+ /**
2505
+ * Scroll Snap Type
2506
+ * @see https://tailwindcss.com/docs/scroll-snap-type
2507
+ */
2508
+ "snap-type": [{
2509
+ snap: ["none", "x", "y", "both"]
2510
+ }],
2511
+ /**
2512
+ * Scroll Snap Type Strictness
2513
+ * @see https://tailwindcss.com/docs/scroll-snap-type
2514
+ */
2515
+ "snap-strictness": [{
2516
+ snap: ["mandatory", "proximity"]
2517
+ }],
2518
+ /**
2519
+ * Touch Action
2520
+ * @see https://tailwindcss.com/docs/touch-action
2521
+ */
2522
+ touch: [{
2523
+ touch: ["auto", "none", "manipulation"]
2524
+ }],
2525
+ /**
2526
+ * Touch Action X
2527
+ * @see https://tailwindcss.com/docs/touch-action
2528
+ */
2529
+ "touch-x": [{
2530
+ "touch-pan": ["x", "left", "right"]
2531
+ }],
2532
+ /**
2533
+ * Touch Action Y
2534
+ * @see https://tailwindcss.com/docs/touch-action
2535
+ */
2536
+ "touch-y": [{
2537
+ "touch-pan": ["y", "up", "down"]
2538
+ }],
2539
+ /**
2540
+ * Touch Action Pinch Zoom
2541
+ * @see https://tailwindcss.com/docs/touch-action
2542
+ */
2543
+ "touch-pz": ["touch-pinch-zoom"],
2544
+ /**
2545
+ * User Select
2546
+ * @see https://tailwindcss.com/docs/user-select
2547
+ */
2548
+ select: [{
2549
+ select: ["none", "text", "all", "auto"]
2550
+ }],
2551
+ /**
2552
+ * Will Change
2553
+ * @see https://tailwindcss.com/docs/will-change
2554
+ */
2555
+ "will-change": [{
2556
+ "will-change": ["auto", "scroll", "contents", "transform", isArbitraryValue]
2557
+ }],
2558
+ // SVG
2559
+ /**
2560
+ * Fill
2561
+ * @see https://tailwindcss.com/docs/fill
2562
+ */
2563
+ fill: [{
2564
+ fill: [colors, "none"]
2565
+ }],
2566
+ /**
2567
+ * Stroke Width
2568
+ * @see https://tailwindcss.com/docs/stroke-width
2569
+ */
2570
+ "stroke-w": [{
2571
+ stroke: [isLength, isArbitraryLength, isArbitraryNumber]
2572
+ }],
2573
+ /**
2574
+ * Stroke
2575
+ * @see https://tailwindcss.com/docs/stroke
2576
+ */
2577
+ stroke: [{
2578
+ stroke: [colors, "none"]
2579
+ }],
2580
+ // Accessibility
2581
+ /**
2582
+ * Screen Readers
2583
+ * @see https://tailwindcss.com/docs/screen-readers
2584
+ */
2585
+ sr: ["sr-only", "not-sr-only"],
2586
+ /**
2587
+ * Forced Color Adjust
2588
+ * @see https://tailwindcss.com/docs/forced-color-adjust
2589
+ */
2590
+ "forced-color-adjust": [{
2591
+ "forced-color-adjust": ["auto", "none"]
2592
+ }]
2593
+ },
2594
+ conflictingClassGroups: {
2595
+ overflow: ["overflow-x", "overflow-y"],
2596
+ overscroll: ["overscroll-x", "overscroll-y"],
2597
+ inset: ["inset-x", "inset-y", "start", "end", "top", "right", "bottom", "left"],
2598
+ "inset-x": ["right", "left"],
2599
+ "inset-y": ["top", "bottom"],
2600
+ flex: ["basis", "grow", "shrink"],
2601
+ gap: ["gap-x", "gap-y"],
2602
+ p: ["px", "py", "ps", "pe", "pt", "pr", "pb", "pl"],
2603
+ px: ["pr", "pl"],
2604
+ py: ["pt", "pb"],
2605
+ m: ["mx", "my", "ms", "me", "mt", "mr", "mb", "ml"],
2606
+ mx: ["mr", "ml"],
2607
+ my: ["mt", "mb"],
2608
+ size: ["w", "h"],
2609
+ "font-size": ["leading"],
2610
+ "fvn-normal": ["fvn-ordinal", "fvn-slashed-zero", "fvn-figure", "fvn-spacing", "fvn-fraction"],
2611
+ "fvn-ordinal": ["fvn-normal"],
2612
+ "fvn-slashed-zero": ["fvn-normal"],
2613
+ "fvn-figure": ["fvn-normal"],
2614
+ "fvn-spacing": ["fvn-normal"],
2615
+ "fvn-fraction": ["fvn-normal"],
2616
+ "line-clamp": ["display", "overflow"],
2617
+ 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"],
2618
+ "rounded-s": ["rounded-ss", "rounded-es"],
2619
+ "rounded-e": ["rounded-se", "rounded-ee"],
2620
+ "rounded-t": ["rounded-tl", "rounded-tr"],
2621
+ "rounded-r": ["rounded-tr", "rounded-br"],
2622
+ "rounded-b": ["rounded-br", "rounded-bl"],
2623
+ "rounded-l": ["rounded-tl", "rounded-bl"],
2624
+ "border-spacing": ["border-spacing-x", "border-spacing-y"],
2625
+ "border-w": ["border-w-s", "border-w-e", "border-w-t", "border-w-r", "border-w-b", "border-w-l"],
2626
+ "border-w-x": ["border-w-r", "border-w-l"],
2627
+ "border-w-y": ["border-w-t", "border-w-b"],
2628
+ "border-color": ["border-color-t", "border-color-r", "border-color-b", "border-color-l"],
2629
+ "border-color-x": ["border-color-r", "border-color-l"],
2630
+ "border-color-y": ["border-color-t", "border-color-b"],
2631
+ "scroll-m": ["scroll-mx", "scroll-my", "scroll-ms", "scroll-me", "scroll-mt", "scroll-mr", "scroll-mb", "scroll-ml"],
2632
+ "scroll-mx": ["scroll-mr", "scroll-ml"],
2633
+ "scroll-my": ["scroll-mt", "scroll-mb"],
2634
+ "scroll-p": ["scroll-px", "scroll-py", "scroll-ps", "scroll-pe", "scroll-pt", "scroll-pr", "scroll-pb", "scroll-pl"],
2635
+ "scroll-px": ["scroll-pr", "scroll-pl"],
2636
+ "scroll-py": ["scroll-pt", "scroll-pb"],
2637
+ touch: ["touch-x", "touch-y", "touch-pz"],
2638
+ "touch-x": ["touch"],
2639
+ "touch-y": ["touch"],
2640
+ "touch-pz": ["touch"]
2641
+ },
2642
+ conflictingClassGroupModifiers: {
2643
+ "font-size": ["leading"]
2644
+ }
2645
+ };
2646
+ }
2647
+ var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
2648
+
2649
+ // src/common/cn.ts
2650
+ function cn(...inputs) {
2651
+ return twMerge(clsx(inputs));
2652
+ }
2653
+
2654
+ // src/common/button.tsx
2655
+ var import_jsx_runtime2 = require("react/jsx-runtime");
2656
+ var buttonVariants = (0, import_class_variance_authority.cva)(
2657
+ "mesh-inline-flex mesh-items-center mesh-justify-center mesh-whitespace-nowrap mesh-rounded-md mesh-text-sm mesh-font-medium mesh-transition-colors focus-visible:mesh-outline-none focus-visible:mesh-ring-1 focus-visible:mesh-ring-zinc-950 disabled:mesh-pointer-events-none disabled:mesh-opacity-50 dark:focus-visible:mesh-ring-zinc-300",
2658
+ {
2659
+ variants: {
2660
+ variant: {
2661
+ default: "mesh-bg-zinc-900 mesh-text-zinc-50 mesh-shadow hover:mesh-bg-zinc-900/90 dark:mesh-bg-zinc-50 dark:mesh-text-zinc-900 dark:hover:mesh-bg-zinc-50/90",
2662
+ destructive: "mesh-bg-red-500 mesh-text-zinc-50 mesh-shadow-sm hover:mesh-bg-red-500/90 dark:mesh-bg-red-900 dark:mesh-text-zinc-50 dark:hover:mesh-bg-red-900/90",
2663
+ outline: "mesh-border mesh-border-zinc-200 mesh-bg-white mesh-shadow-sm hover:mesh-bg-zinc-100 hover:mesh-text-zinc-900 dark:mesh-border-zinc-800 dark:mesh-bg-zinc-950 dark:hover:mesh-bg-zinc-800 dark:hover:mesh-text-zinc-50",
2664
+ secondary: "mesh-bg-zinc-100 mesh-text-zinc-900 mesh-shadow-sm hover:mesh-bg-zinc-100/80 dark:mesh-bg-zinc-800 dark:mesh-text-zinc-50 dark:hover:mesh-bg-zinc-800/80",
2665
+ ghost: "hover:mesh-bg-zinc-100 hover:mesh-text-zinc-900 dark:hover:mesh-bg-zinc-800 dark:hover:mesh-text-zinc-50",
2666
+ link: "mesh-text-zinc-900 mesh-underline-offset-4 hover:mesh-underline dark:mesh-text-zinc-50"
2667
+ },
2668
+ size: {
2669
+ default: "mesh-h-9 mesh-px-4 mesh-py-2",
2670
+ sm: "mesh-h-8 mesh-rounded-md mesh-px-3 mesh-text-xs",
2671
+ lg: "mesh-h-10 mesh-rounded-md mesh-px-8",
2672
+ icon: "mesh-h-9 mesh-w-9"
2673
+ }
2674
+ },
2675
+ defaultVariants: {
2676
+ variant: "default",
2677
+ size: "default"
2678
+ }
2679
+ }
2680
+ );
2681
+ var Button = React3.forwardRef(
2682
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
2683
+ const Comp = asChild ? Slot : "button";
2684
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
2685
+ Comp,
2686
+ {
2687
+ className: cn(buttonVariants({ variant, size, className })),
2688
+ ref,
2689
+ ...props
2690
+ }
2691
+ );
2692
+ }
2693
+ );
2694
+ Button.displayName = "Button";
2695
+
2696
+ // src/common/dialog.tsx
2697
+ var React4 = __toESM(require("react"), 1);
2698
+ var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
2699
+ var import_react_icons = require("@radix-ui/react-icons");
2700
+ var import_jsx_runtime3 = require("react/jsx-runtime");
2701
+ var Dialog = DialogPrimitive.Root;
2702
+ var DialogTrigger = DialogPrimitive.Trigger;
2703
+ var DialogPortal = DialogPrimitive.Portal;
2704
+ var DialogOverlay = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
2705
+ DialogPrimitive.Overlay,
2706
+ {
2707
+ ref,
2708
+ className: cn(
2709
+ "mesh-fixed mesh-inset-0 mesh-z-50 mesh-bg-black/80 data-[state=open]:mesh-animate-in data-[state=closed]:mesh-animate-out data-[state=closed]:mesh-fade-out-0 data-[state=open]:mesh-fade-in-0",
2710
+ className
2711
+ ),
2712
+ ...props
2713
+ }
2714
+ ));
2715
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
2716
+ var DialogContent = React4.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(DialogPortal, { children: [
2717
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(DialogOverlay, {}),
2718
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
2719
+ DialogPrimitive.Content,
2720
+ {
2721
+ ref,
2722
+ className: cn(
2723
+ `mesh-fixed mesh-left-[50%] mesh-top-[50%] mesh-z-50 mesh-grid mesh-w-full mesh-max-w-lg mesh-translate-x-[-50%] mesh-translate-y-[-50%] mesh-gap-4 mesh-p-6 mesh-shadow-lg mesh-duration-200 data-[state=open]:mesh-animate-in data-[state=closed]:mesh-animate-out data-[state=closed]:mesh-fade-out-0 data-[state=open]:mesh-fade-in-0 data-[state=closed]:mesh-zoom-out-95 data-[state=open]:mesh-zoom-in-95 data-[state=closed]:mesh-slide-out-to-left-1/2 data-[state=closed]:mesh-slide-out-to-top-[48%] data-[state=open]:mesh-slide-in-from-left-1/2 data-[state=open]:mesh-slide-in-from-top-[48%] sm:mesh-rounded-lg mesh-bg-zinc-900 mesh-text-white mesh-border mesh-border-zinc-700`,
2724
+ className
2725
+ ),
2726
+ ...props,
2727
+ children: [
2728
+ children,
2729
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(DialogPrimitive.Close, { className: "mesh-absolute mesh-right-4 mesh-top-4 mesh-rounded-sm mesh-opacity-70 mesh-ring-offset-background mesh-transition-opacity hover:mesh-opacity-100 disabled:mesh-pointer-events-none data-[state=open]:mesh-bg-black data-[state=open]:mesh-text-white", children: [
2730
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_icons.Cross2Icon, { className: "mesh-h-4 mesh-w-4" }),
2731
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "mesh-sr-only", children: "Close" })
2732
+ ] })
2733
+ ]
2734
+ }
2735
+ )
2736
+ ] }));
2737
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
2738
+ var DialogHeader = ({
2739
+ className,
2740
+ ...props
2741
+ }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
2742
+ "div",
2743
+ {
2744
+ className: cn(
2745
+ "mesh-flex mesh-flex-col mesh-space-y-1.5 mesh-text-center sm:mesh-text-left",
2746
+ className
2747
+ ),
2748
+ ...props
2749
+ }
2750
+ );
2751
+ DialogHeader.displayName = "DialogHeader";
2752
+ var DialogFooter = ({
2753
+ className,
2754
+ ...props
2755
+ }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
2756
+ "div",
2757
+ {
2758
+ className: cn(
2759
+ "mesh-flex mesh-flex-col-reverse sm:mesh-flex-row sm:mesh-justify-end sm:mesh-space-x-2",
2760
+ className
2761
+ ),
2762
+ ...props
2763
+ }
2764
+ );
2765
+ DialogFooter.displayName = "DialogFooter";
2766
+ var DialogTitle = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
2767
+ DialogPrimitive.Title,
2768
+ {
2769
+ ref,
2770
+ className: cn(
2771
+ "mesh-text-lg mesh-font-semibold mesh-leading-none mesh-tracking-tight",
2772
+ className
2773
+ ),
2774
+ ...props
2775
+ }
2776
+ ));
2777
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
2778
+ var DialogDescription = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
2779
+ DialogPrimitive.Description,
2780
+ {
2781
+ ref,
2782
+ className: cn("mesh-text-sm mesh-text-white", className),
2783
+ ...props
2784
+ }
2785
+ ));
2786
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
2787
+
2788
+ // src/common/dropdown-menu.tsx
2789
+ var React5 = __toESM(require("react"), 1);
2790
+ var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
2791
+ var import_react_icons2 = require("@radix-ui/react-icons");
2792
+ var import_jsx_runtime4 = require("react/jsx-runtime");
2793
+ var DropdownMenu = DropdownMenuPrimitive.Root;
2794
+ var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
2795
+ var DropdownMenuSubTrigger = React5.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
2796
+ DropdownMenuPrimitive.SubTrigger,
2797
+ {
2798
+ ref,
2799
+ className: cn(
2800
+ "mesh-flex mesh-cursor-default mesh-select-none mesh-items-center mesh-rounded-sm mesh-px-2 mesh-py-1.5 mesh-text-sm mesh-outline-none focus:mesh-bg-zinc-100 data-[state=open]:mesh-bg-zinc-100 dark:focus:mesh-bg-zinc-800 dark:data-[state=open]:mesh-bg-zinc-800",
2801
+ inset && "mesh-pl-8",
2802
+ className
2803
+ ),
2804
+ ...props,
2805
+ children: [
2806
+ children,
2807
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_icons2.ChevronRightIcon, { className: "mesh-ml-auto mesh-h-4 mesh-w-4" })
2808
+ ]
2809
+ }
2810
+ ));
2811
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
2812
+ var DropdownMenuSubContent = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2813
+ DropdownMenuPrimitive.SubContent,
2814
+ {
2815
+ ref,
2816
+ className: cn(
2817
+ "mesh-z-50 mesh-min-w-[8rem] mesh-overflow-hidden mesh-rounded-md mesh-border mesh-border-zinc-200 mesh-bg-white mesh-p-1 mesh-text-zinc-950 mesh-shadow-lg data-[state=open]:mesh-animate-in data-[state=closed]:mesh-animate-out data-[state=closed]:mesh-fade-out-0 data-[state=open]:mesh-fade-in-0 data-[state=closed]:mesh-zoom-out-95 data-[state=open]:mesh-zoom-in-95 data-[side=bottom]:mesh-slide-in-from-top-2 data-[side=left]:mesh-slide-in-from-right-2 data-[side=right]:mesh-slide-in-from-left-2 data-[side=top]:mesh-slide-in-from-bottom-2 dark:mesh-border-zinc-800 dark:mesh-bg-zinc-950 dark:mesh-text-zinc-50",
2818
+ className
2819
+ ),
2820
+ ...props
2821
+ }
2822
+ ));
2823
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
2824
+ var DropdownMenuContent = React5.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2825
+ DropdownMenuPrimitive.Content,
2826
+ {
2827
+ ref,
2828
+ sideOffset,
2829
+ className: cn(
2830
+ "mesh-z-50 mesh-min-w-[8rem] mesh-overflow-hidden mesh-rounded-md mesh-border mesh-border-zinc-200 mesh-bg-white mesh-p-1 mesh-text-zinc-950 mesh-shadow-md dark:mesh-border-zinc-800 dark:mesh-bg-zinc-950 dark:mesh-text-zinc-50",
2831
+ "data-[state=open]:mesh-animate-in data-[state=closed]:mesh-animate-out data-[state=closed]:mesh-fade-out-0 data-[state=open]:mesh-fade-in-0 data-[state=closed]:mesh-zoom-out-95 data-[state=open]:mesh-zoom-in-95 data-[side=bottom]:mesh-slide-in-from-top-2 data-[side=left]:mesh-slide-in-from-right-2 data-[side=right]:mesh-slide-in-from-left-2 data-[side=top]:mesh-slide-in-from-bottom-2",
2832
+ className
2833
+ ),
2834
+ ...props
2835
+ }
2836
+ ) }));
2837
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
2838
+ var DropdownMenuItem = React5.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2839
+ DropdownMenuPrimitive.Item,
2840
+ {
2841
+ ref,
2842
+ className: cn(
2843
+ "mesh-relative mesh-flex mesh-cursor-default mesh-select-none mesh-items-center mesh-rounded-sm mesh-px-2 mesh-py-1.5 mesh-text-sm mesh-outline-none mesh-transition-colors focus:mesh-bg-zinc-100 focus:mesh-text-zinc-900 data-[disabled]:mesh-pointer-events-none data-[disabled]:mesh-opacity-50 dark:focus:mesh-bg-zinc-800 dark:focus:mesh-text-zinc-50",
2844
+ inset && "mesh-pl-8",
2845
+ className
2846
+ ),
2847
+ ...props
2848
+ }
2849
+ ));
2850
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
2851
+ var DropdownMenuCheckboxItem = React5.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
2852
+ DropdownMenuPrimitive.CheckboxItem,
2853
+ {
2854
+ ref,
2855
+ className: cn(
2856
+ "mesh-relative mesh-flex mesh-cursor-default mesh-select-none mesh-items-center mesh-rounded-sm mesh-py-1.5 mesh-pl-8 mesh-pr-2 mesh-text-sm mesh-outline-none mesh-transition-colors focus:mesh-bg-zinc-100 focus:mesh-text-zinc-900 data-[disabled]:mesh-pointer-events-none data-[disabled]:mesh-opacity-50 dark:focus:mesh-bg-zinc-800 dark:focus:mesh-text-zinc-50",
2857
+ className
2858
+ ),
2859
+ checked,
2860
+ ...props,
2861
+ children: [
2862
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "mesh-absolute mesh-left-2 mesh-flex mesh-h-3.5 mesh-w-3.5 mesh-items-center mesh-justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_icons2.CheckIcon, { className: "mesh-h-4 mesh-w-4" }) }) }),
2863
+ children
2864
+ ]
2865
+ }
2866
+ ));
2867
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
2868
+ var DropdownMenuRadioItem = React5.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
2869
+ DropdownMenuPrimitive.RadioItem,
2870
+ {
2871
+ ref,
2872
+ className: cn(
2873
+ "mesh-relative mesh-flex mesh-cursor-default mesh-select-none mesh-items-center mesh-rounded-sm mesh-py-1.5 mesh-pl-8 mesh-pr-2 mesh-text-sm mesh-outline-none mesh-transition-colors focus:mesh-bg-zinc-100 focus:mesh-text-zinc-900 data-[disabled]:mesh-pointer-events-none data-[disabled]:mesh-opacity-50 dark:focus:mesh-bg-zinc-800 dark:focus:mesh-text-zinc-50",
2874
+ className
2875
+ ),
2876
+ ...props,
2877
+ children: [
2878
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "mesh-absolute mesh-left-2 mesh-flex mesh-h-3.5 mesh-w-3.5 mesh-items-center mesh-justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_icons2.DotFilledIcon, { className: "mesh-h-4 mesh-w-4 mesh-fill-current" }) }) }),
2879
+ children
2880
+ ]
2881
+ }
2882
+ ));
2883
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
2884
+ var DropdownMenuLabel = React5.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2885
+ DropdownMenuPrimitive.Label,
2886
+ {
2887
+ ref,
2888
+ className: cn(
2889
+ "mesh-px-2 mesh-py-1.5 mesh-text-sm mesh-font-semibold",
2890
+ inset && "mesh-pl-8",
2891
+ className
2892
+ ),
2893
+ ...props
2894
+ }
2895
+ ));
2896
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
2897
+ var DropdownMenuSeparator = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2898
+ DropdownMenuPrimitive.Separator,
2899
+ {
2900
+ ref,
2901
+ className: cn("-mesh-mx-1 mesh-my-1 mesh-h-px mesh-bg-zinc-100 dark:mesh-bg-zinc-800", className),
2902
+ ...props
2903
+ }
2904
+ ));
2905
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
2906
+ var DropdownMenuShortcut = ({
2907
+ className,
2908
+ ...props
2909
+ }) => {
2910
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2911
+ "span",
2912
+ {
2913
+ className: cn("mesh-ml-auto mesh-text-xs mesh-tracking-widest mesh-opacity-60", className),
2914
+ ...props
2915
+ }
2916
+ );
2917
+ };
2918
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
2919
+
2920
+ // src/common/icons/icon-chevron-right.tsx
2921
+ var import_jsx_runtime5 = require("react/jsx-runtime");
2922
+ function IconChevronRight() {
2923
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
2924
+ "svg",
2925
+ {
2926
+ xmlns: "http://www.w3.org/2000/svg",
2927
+ width: "24",
2928
+ height: "24",
2929
+ viewBox: "0 0 24 24",
2930
+ fill: "none",
2931
+ stroke: "gray",
2932
+ strokeWidth: "2",
2933
+ strokeLinecap: "round",
2934
+ strokeLinejoin: "round",
2935
+ style: {
2936
+ color: "#ffadff",
2937
+ width: "24px",
2938
+ height: "24px",
2939
+ strokeWidth: "1px"
2940
+ },
2941
+ className: "hover:mesh-fill-white",
2942
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "m15 18-6-6 6-6" })
2943
+ }
2944
+ );
2945
+ }
2946
+
2947
+ // src/common/icons/icon-download.tsx
2948
+ var import_jsx_runtime6 = require("react/jsx-runtime");
2949
+ function IconDownload() {
2950
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
2951
+ "svg",
2952
+ {
2953
+ xmlns: "http://www.w3.org/2000/svg",
2954
+ width: "24",
2955
+ height: "24",
2956
+ viewBox: "0 0 24 24",
2957
+ fill: "none",
2958
+ stroke: "gray",
2959
+ strokeWidth: "2",
2960
+ strokeLinecap: "round",
2961
+ strokeLinejoin: "round",
2962
+ style: {
2963
+ color: "#ffadff",
2964
+ width: "24px",
2965
+ height: "24px",
2966
+ strokeWidth: "1px"
2967
+ },
2968
+ className: "hover:mesh-fill-white",
2969
+ children: [
2970
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
2971
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("polyline", { points: "7 10 12 15 17 10" }),
2972
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "12", x2: "12", y1: "15", y2: "3" })
2973
+ ]
2974
+ }
2975
+ );
2976
+ }
2977
+
2978
+ // src/common/icons/icon-monitor-smartphone.tsx
2979
+ var import_jsx_runtime7 = require("react/jsx-runtime");
2980
+ function IconMonitorSmartphone() {
2981
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2982
+ "svg",
2983
+ {
2984
+ xmlns: "http://www.w3.org/2000/svg",
2985
+ width: "24",
2986
+ height: "24",
2987
+ viewBox: "0 0 24 24",
2988
+ fill: "none",
2989
+ stroke: "black",
2990
+ strokeWidth: "2",
2991
+ strokeLinecap: "round",
2992
+ strokeLinejoin: "round",
2993
+ style: {
2994
+ color: "#ffadff",
2995
+ width: "56px",
2996
+ height: "56px",
2997
+ strokeWidth: "1px"
2998
+ },
2999
+ children: [
3000
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { d: "M18 8V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h8" }),
3001
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { d: "M10 19v-3.96 3.15" }),
3002
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { d: "M7 19h5" }),
3003
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("rect", { width: "6", height: "10", x: "16", y: "12", rx: "2" })
3004
+ ]
3005
+ }
3006
+ );
3007
+ }
3008
+
3009
+ // src/common/icons/wallet-icon.tsx
3010
+ var import_jsx_runtime8 = require("react/jsx-runtime");
3011
+ function WalletIcon({
3012
+ icon,
3013
+ name,
3014
+ action,
3015
+ iconReactNode
51
3016
  }) {
52
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
3017
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
53
3018
  "button",
54
3019
  {
55
- className: `mesh-mr-menu-list mesh-flex mesh-w-60 mesh-items-center mesh-justify-center mesh-rounded-t-md mesh-border mesh-px-4 mesh-py-2 mesh-text-lg mesh-font-normal mesh-shadow-sm ${isDarkMode ? `mesh-bg-neutral-950 mesh-text-neutral-50` : `mesh-bg-neutral-50 mesh-text-neutral-950`}`,
56
- onClick: () => setHideMenuList && setHideMenuList(!hideMenuList),
57
- onMouseEnter,
58
- onMouseLeave,
59
- children
3020
+ className: "mesh-flex mesh-items-center mesh-justify-center mesh-rounded-lg mesh-w-10 mesh-h-10 mesh-bg-neutral-50 mesh-border mesh-border-zinc-700 hover:mesh-border-zinc-200 mesh-cursor-pointer",
3021
+ onClick: action,
3022
+ children: [
3023
+ icon && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("img", { src: icon, alt: name, className: "mesh-w-8 mesh-h-8" }),
3024
+ iconReactNode && iconReactNode
3025
+ ]
60
3026
  }
61
3027
  );
62
3028
  }
@@ -118,10 +3084,10 @@ var WalletContext = (0, import_react.createContext)({
118
3084
  });
119
3085
 
120
3086
  // src/contexts/index.tsx
121
- var import_jsx_runtime2 = require("react/jsx-runtime");
3087
+ var import_jsx_runtime9 = require("react/jsx-runtime");
122
3088
  var MeshProvider = (props) => {
123
3089
  const store = useWalletStore();
124
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(WalletContext.Provider, { value: store, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, { children: props.children }) });
3090
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(WalletContext.Provider, { value: store, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_jsx_runtime9.Fragment, { children: props.children }) });
125
3091
  };
126
3092
 
127
3093
  // src/hooks/useAddress.ts
@@ -281,22 +3247,304 @@ var useWalletSubmit = () => {
281
3247
  };
282
3248
  };
283
3249
 
284
- // src/cardano-wallet/menu-item.tsx
285
- var import_jsx_runtime3 = require("react/jsx-runtime");
3250
+ // src/cardano-wallet/index.tsx
3251
+ var import_jsx_runtime10 = require("react/jsx-runtime");
3252
+ var CardanoWallet = ({
3253
+ label = "Connect Wallet",
3254
+ onConnected = void 0,
3255
+ isDark = false,
3256
+ metamask = void 0,
3257
+ extensions = [],
3258
+ cardanoPeerConnect = void 0
3259
+ }) => {
3260
+ const [open, setOpen] = (0, import_react10.useState)(false);
3261
+ const [screen, setScreen] = (0, import_react10.useState)("main");
3262
+ const { wallet, connected } = useWallet();
3263
+ (0, import_react10.useEffect)(() => {
3264
+ if (connected && wallet) {
3265
+ if (onConnected) onConnected();
3266
+ }
3267
+ }, [connected, wallet]);
3268
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Dialog, { open, onOpenChange: setOpen, children: [
3269
+ !connected ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DialogTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Button, { variant: "outline", className: "mesh-text-white", children: label }) }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ConnectedDropdown, {}),
3270
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(DialogContent, { className: "sm:mesh-max-w-[425px]", children: [
3271
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(DialogHeader, { children: [
3272
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(DialogTitle, { className: "mesh-flex mesh-justify-between", children: [
3273
+ screen != "main" ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("button", { onClick: () => setScreen("main"), children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(IconChevronRight, {}) }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { style: { width: "24px" } }),
3274
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { children: [
3275
+ screen == "main" && "Connect Wallet",
3276
+ screen == "p2p" && "P2P Connect"
3277
+ ] }),
3278
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { style: { width: "24px" } })
3279
+ ] }),
3280
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DialogDescription, { children: screen == "p2p" && "Use wallet that supports CIP-45, scan this QR code to connect." })
3281
+ ] }),
3282
+ screen == "main" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3283
+ MainScreen,
3284
+ {
3285
+ metamask,
3286
+ extensions,
3287
+ setOpen,
3288
+ setScreen
3289
+ }
3290
+ ),
3291
+ screen == "p2p" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(P2PScreen, { cardanoPeerConnect }),
3292
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DialogFooter, { className: "mesh-justify-center mesh-text-sm", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3293
+ "a",
3294
+ {
3295
+ href: "https://meshjs.dev/",
3296
+ target: "_blank",
3297
+ className: "mesh-grow mesh-flex mesh-gap-1 mesh-items-center mesh-justify-center mesh-text-zinc-500 hover:mesh-text-white mesh-fill-zinc-500 hover:mesh-fill-white",
3298
+ children: [
3299
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "", children: "Powered by" }),
3300
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3301
+ "svg",
3302
+ {
3303
+ width: 24,
3304
+ height: 24,
3305
+ enableBackground: "new 0 0 300 200",
3306
+ viewBox: "0 0 300 200",
3307
+ xmlns: "http://www.w3.org/2000/svg",
3308
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "m289 127-45-60-45-60c-.9-1.3-2.4-2-4-2s-3.1.7-4 2l-37 49.3c-2 2.7-6 2.7-8 0l-37-49.3c-.9-1.3-2.4-2-4-2s-3.1.7-4 2l-45 60-45 60c-1.3 1.8-1.3 4.2 0 6l45 60c.9 1.3 2.4 2 4 2s3.1-.7 4-2l37-49.3c2-2.7 6-2.7 8 0l37 49.3c.9 1.3 2.4 2 4 2s3.1-.7 4-2l37-49.3c2-2.7 6-2.7 8 0l37 49.3c.9 1.3 2.4 2 4 2s3.1-.7 4-2l45-60c1.3-1.8 1.3-4.2 0-6zm-90-103.3 32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0l-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0zm-90 0 32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0l-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0zm-53 152.6-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0l32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0zm90 0-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0l32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0zm90 0-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0l32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0z" })
3309
+ }
3310
+ ),
3311
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "", children: "Mesh SDK" })
3312
+ ]
3313
+ }
3314
+ ) })
3315
+ ] })
3316
+ ] });
3317
+ };
3318
+ function ConnectedDropdown() {
3319
+ const { wallet, connected, disconnect } = useWallet();
3320
+ const [address, setAddress] = (0, import_react10.useState)("");
3321
+ (0, import_react10.useEffect)(() => {
3322
+ if (connected && wallet) {
3323
+ async function afterConnectedWallet() {
3324
+ let address2 = (await wallet.getUnusedAddresses())[0];
3325
+ if (!address2) address2 = await wallet.getChangeAddress();
3326
+ setAddress(address2);
3327
+ }
3328
+ afterConnectedWallet();
3329
+ }
3330
+ }, [connected, wallet]);
3331
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(DropdownMenu, { children: [
3332
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DropdownMenuTrigger, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(Button, { variant: "outline", className: "mesh-text-white", children: [
3333
+ address.slice(0, 6),
3334
+ "...",
3335
+ address.slice(-6)
3336
+ ] }) }),
3337
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(DropdownMenuContent, { children: [
3338
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DropdownMenuLabel, { children: "Wallet" }),
3339
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DropdownMenuSeparator, {}),
3340
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3341
+ DropdownMenuItem,
3342
+ {
3343
+ onClick: () => {
3344
+ navigator.clipboard.writeText(address);
3345
+ },
3346
+ children: "Copy Address"
3347
+ }
3348
+ ),
3349
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3350
+ DropdownMenuItem,
3351
+ {
3352
+ onClick: () => {
3353
+ disconnect();
3354
+ },
3355
+ children: "Disconnect"
3356
+ }
3357
+ )
3358
+ ] })
3359
+ ] });
3360
+ }
3361
+ function MainScreen({
3362
+ metamask,
3363
+ extensions,
3364
+ setOpen,
3365
+ setScreen
3366
+ }) {
3367
+ const wallets = useWalletList({ metamask });
3368
+ const { connect } = useWallet();
3369
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "mesh-grid mesh-gap-4 mesh-py-4 mesh-grid-cols-4 mesh-place-items-center", children: [
3370
+ wallets.map((wallet, index) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3371
+ WalletIcon,
3372
+ {
3373
+ icon: wallet.icon,
3374
+ name: wallet.name,
3375
+ action: () => {
3376
+ connect(wallet.id, extensions);
3377
+ setOpen(false);
3378
+ }
3379
+ },
3380
+ index
3381
+ )),
3382
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3383
+ WalletIcon,
3384
+ {
3385
+ iconReactNode: IconMonitorSmartphone(),
3386
+ name: `P2P`,
3387
+ action: () => {
3388
+ setScreen("p2p");
3389
+ }
3390
+ }
3391
+ ),
3392
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3393
+ WalletIcon,
3394
+ {
3395
+ iconReactNode: IconDownload(),
3396
+ name: `P2P`,
3397
+ action: () => {
3398
+ window.open(
3399
+ "https://developers.cardano.org/showcase/?tags=wallet",
3400
+ "_blank"
3401
+ );
3402
+ }
3403
+ }
3404
+ )
3405
+ ] });
3406
+ }
3407
+ function P2PScreen({
3408
+ cardanoPeerConnect
3409
+ }) {
3410
+ const dAppConnect = (0, import_react10.useRef)(null);
3411
+ const qrCodeField = (0, import_react10.useRef)(null);
3412
+ const [address, setAddress] = (0, import_react10.useState)("");
3413
+ const [copied, setCopied] = (0, import_react10.useState)(false);
3414
+ const [connected, setConnected] = (0, import_react10.useState)(false);
3415
+ console.log("address", address);
3416
+ (0, import_react10.useEffect)(() => {
3417
+ if (cardanoPeerConnect) {
3418
+ if (dAppConnect.current === null) {
3419
+ dAppConnect.current = new import_cardano_peer_connect.DAppPeerConnect({
3420
+ dAppInfo: {
3421
+ name: cardanoPeerConnect.dAppInfo.name,
3422
+ url: cardanoPeerConnect.dAppInfo.url
3423
+ },
3424
+ announce: cardanoPeerConnect.announce,
3425
+ onApiInject: (name, address2) => {
3426
+ console.log("onApiInject", name, address2);
3427
+ },
3428
+ onApiEject: (name, address2) => {
3429
+ console.log("onApiEject", name, address2);
3430
+ },
3431
+ onConnect: (address2, walletInfo) => {
3432
+ console.log("Connected to wallet", address2, walletInfo);
3433
+ },
3434
+ onDisconnect: () => {
3435
+ console.log("Disconnected from wallet");
3436
+ },
3437
+ verifyConnection: (walletInfo, callback) => {
3438
+ console.log("verifyConnection", walletInfo);
3439
+ callback(true, true);
3440
+ },
3441
+ useWalletDiscovery: true
3442
+ });
3443
+ console.log(1, dAppConnect.current);
3444
+ if (dAppConnect.current) {
3445
+ setAddress(dAppConnect.current.getAddress());
3446
+ if (qrCodeField.current !== null) {
3447
+ dAppConnect.current.generateQRCode(qrCodeField.current);
3448
+ }
3449
+ }
3450
+ }
3451
+ }
3452
+ }, []);
3453
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "mesh-flex mesh-flex-col mesh-items-center mesh-justify-center", children: [
3454
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: { marginTop: 16, marginBottom: 16 }, ref: qrCodeField }),
3455
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3456
+ Button,
3457
+ {
3458
+ variant: "outline",
3459
+ className: "mesh-text-white",
3460
+ onClick: () => {
3461
+ navigator.clipboard.writeText(address);
3462
+ setCopied(true);
3463
+ },
3464
+ children: copied ? "Copied" : "Copy Address"
3465
+ }
3466
+ )
3467
+ ] });
3468
+ }
3469
+
3470
+ // src/mesh-badge/mesh-logo.tsx
3471
+ var import_jsx_runtime11 = require("react/jsx-runtime");
3472
+ var MeshLogo = () => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3473
+ "svg",
3474
+ {
3475
+ className: "mesh-h-16 mesh-p-2",
3476
+ fill: "currentColor",
3477
+ viewBox: "0 0 300 200",
3478
+ xmlns: "http://www.w3.org/2000/svg",
3479
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", { d: "m289 127-45-60-45-60c-.9-1.3-2.4-2-4-2s-3.1.7-4 2l-37 49.3c-2 2.7-6 2.7-8 0l-37-49.3c-.9-1.3-2.4-2-4-2s-3.1.7-4 2l-45 60-45 60c-1.3 1.8-1.3 4.2 0 6l45 60c.9 1.3 2.4 2 4 2s3.1-.7 4-2l37-49.3c2-2.7 6-2.7 8 0l37 49.3c.9 1.3 2.4 2 4 2s3.1-.7 4-2l37-49.3c2-2.7 6-2.7 8 0l37 49.3c.9 1.3 2.4 2 4 2s3.1-.7 4-2l45-60c1.3-1.8 1.3-4.2 0-6zm-90-103.3 32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0l-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0zm-90 0 32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0l-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0zm-53 152.6-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0l32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0zm90 0-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0l32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0zm90 0-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0l32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0z" })
3480
+ }
3481
+ );
3482
+
3483
+ // src/mesh-badge/index.tsx
3484
+ var import_jsx_runtime12 = require("react/jsx-runtime");
3485
+ var MeshBadge = ({ isDark = false }) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
3486
+ "a",
3487
+ {
3488
+ className: `mesh-flex mesh-max-w-fit mesh-flex-col mesh-items-center mesh-rounded-md mesh-border mesh-border-solid mesh-border-current mesh-p-1 mesh-text-xl mesh-font-semibold mesh-no-underline ${isDark ? `mesh-bg-neutral-950 mesh-text-neutral-50` : `mesh-bg-neutral-50 mesh-text-neutral-950`}`,
3489
+ style: {
3490
+ color: isDark ? "#EEEEEE" : "#111111",
3491
+ backgroundColor: isDark ? "#111111" : "#EEEEEE"
3492
+ },
3493
+ href: "https://meshjs.dev/",
3494
+ rel: "noopener noreferrer",
3495
+ target: "_blank",
3496
+ children: [
3497
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(MeshLogo, {}),
3498
+ "Mesh"
3499
+ ]
3500
+ }
3501
+ );
3502
+
3503
+ // src/stake-button/index.tsx
3504
+ var import_react12 = require("react");
3505
+ var import_transaction = require("@meshsdk/transaction");
3506
+
3507
+ // src/cardano-wallet-dropdown/index.tsx
3508
+ var import_react11 = require("react");
3509
+
3510
+ // src/common/button-dropdown.tsx
3511
+ var import_jsx_runtime13 = require("react/jsx-runtime");
3512
+ function ButtonDropdown({
3513
+ children,
3514
+ isDarkMode = false,
3515
+ hideMenuList = false,
3516
+ setHideMenuList,
3517
+ onMouseEnter,
3518
+ onMouseLeave
3519
+ }) {
3520
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3521
+ "button",
3522
+ {
3523
+ className: `mesh-mr-menu-list mesh-flex mesh-w-60 mesh-items-center mesh-justify-center mesh-rounded-t-md mesh-border mesh-px-4 mesh-py-2 mesh-text-lg mesh-font-normal mesh-shadow-sm ${isDarkMode ? `mesh-bg-neutral-950 mesh-text-neutral-50` : `mesh-bg-neutral-50 mesh-text-neutral-950`}`,
3524
+ onClick: () => setHideMenuList && setHideMenuList(!hideMenuList),
3525
+ onMouseEnter,
3526
+ onMouseLeave,
3527
+ children
3528
+ }
3529
+ );
3530
+ }
3531
+
3532
+ // src/cardano-wallet-dropdown/menu-item.tsx
3533
+ var import_jsx_runtime14 = require("react/jsx-runtime");
286
3534
  function MenuItem({
287
3535
  icon,
288
3536
  label,
289
3537
  action,
290
3538
  active
291
3539
  }) {
292
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
3540
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
293
3541
  "div",
294
3542
  {
295
3543
  className: "mesh-flex mesh-cursor-pointer mesh-items-center mesh-px-4 mesh-py-2 mesh-opacity-80 hover:mesh-opacity-100 mesh-h-16",
296
3544
  onClick: action,
297
3545
  children: [
298
- icon && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("img", { className: "mesh-pr-2 mesh-m-1 mesh-h-8", src: icon }),
299
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "mesh-mr-menu-item mesh-text-xl mesh-font-normal mesh-text-gray-700 hover:mesh-text-black", children: label.split(" ").map((word) => {
3546
+ icon && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("img", { className: "mesh-pr-2 mesh-m-1 mesh-h-8", src: icon }),
3547
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "mesh-mr-menu-item mesh-text-xl mesh-font-normal mesh-text-gray-700 hover:mesh-text-black", children: label.split(" ").map((word) => {
300
3548
  return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
301
3549
  }).join(" ") })
302
3550
  ]
@@ -304,9 +3552,9 @@ function MenuItem({
304
3552
  );
305
3553
  }
306
3554
 
307
- // src/cardano-wallet/chevron-down.tsx
308
- var import_jsx_runtime4 = require("react/jsx-runtime");
309
- var ChevronDown = () => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
3555
+ // src/cardano-wallet-dropdown/chevron-down.tsx
3556
+ var import_jsx_runtime15 = require("react/jsx-runtime");
3557
+ var ChevronDown = () => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
310
3558
  "svg",
311
3559
  {
312
3560
  className: "mesh-m-2 mesh-h-6",
@@ -315,7 +3563,7 @@ var ChevronDown = () => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
315
3563
  viewBox: "0 0 24 24",
316
3564
  stroke: "currentColor",
317
3565
  xmlns: "http://www.w3.org/2000/svg",
318
- children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
3566
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
319
3567
  "path",
320
3568
  {
321
3569
  strokeLinecap: "round",
@@ -327,8 +3575,8 @@ var ChevronDown = () => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
327
3575
  }
328
3576
  );
329
3577
 
330
- // src/cardano-wallet/wallet-balance.tsx
331
- var import_jsx_runtime5 = require("react/jsx-runtime");
3578
+ // src/cardano-wallet-dropdown/wallet-balance.tsx
3579
+ var import_jsx_runtime16 = require("react/jsx-runtime");
332
3580
  var WalletBalance = ({
333
3581
  connected,
334
3582
  connecting,
@@ -336,55 +3584,56 @@ var WalletBalance = ({
336
3584
  wallet
337
3585
  }) => {
338
3586
  const lovelace = useLovelace();
339
- return connected && lovelace && wallet?.icon ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
340
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("img", { className: "mesh-m-2 mesh-h-6", src: wallet.icon }),
3587
+ return connected && lovelace && wallet?.icon ? /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
3588
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("img", { className: "mesh-m-2 mesh-h-6", src: wallet.icon }),
341
3589
  "\u20B3",
342
3590
  " ",
343
3591
  parseInt((parseInt(lovelace, 10) / 1e6).toString(), 10),
344
3592
  ".",
345
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "mesh-text-xs", children: lovelace.substring(lovelace.length - 6) })
346
- ] }) : connected && wallet?.icon ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("img", { className: "mesh-m-2 mesh-h-6", src: wallet.icon }) }) : connecting ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, { children: "Connecting..." }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
3593
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "mesh-text-xs", children: lovelace.substring(lovelace.length - 6) })
3594
+ ] }) : connected && wallet?.icon ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_jsx_runtime16.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("img", { className: "mesh-m-2 mesh-h-6", src: wallet.icon }) }) : connecting ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_jsx_runtime16.Fragment, { children: "Connecting..." }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
347
3595
  label,
348
3596
  " ",
349
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ChevronDown, {})
3597
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ChevronDown, {})
350
3598
  ] });
351
3599
  };
352
3600
 
353
- // src/cardano-wallet/index.tsx
354
- var import_jsx_runtime6 = require("react/jsx-runtime");
355
- var CardanoWallet = ({
3601
+ // src/cardano-wallet-dropdown/index.tsx
3602
+ var import_jsx_runtime17 = require("react/jsx-runtime");
3603
+ var CardanoWallet2 = ({
356
3604
  label = "Connect Wallet",
357
3605
  onConnected = void 0,
358
3606
  isDark = false,
359
3607
  metamask = void 0,
360
- extensions = []
3608
+ extensions = [],
3609
+ cardanoPeerConnect = void 0
361
3610
  }) => {
362
- const [isDarkMode, setIsDarkMode] = (0, import_react10.useState)(false);
363
- const [hideMenuList, setHideMenuList] = (0, import_react10.useState)(true);
3611
+ const [isDarkMode, setIsDarkMode] = (0, import_react11.useState)(false);
3612
+ const [hideMenuList, setHideMenuList] = (0, import_react11.useState)(true);
364
3613
  const { connect, connecting, connected, disconnect, name } = useWallet();
365
3614
  const wallets = useWalletList({ metamask });
366
- (0, import_react10.useEffect)(() => {
3615
+ (0, import_react11.useEffect)(() => {
367
3616
  if (connected && onConnected) {
368
3617
  onConnected();
369
3618
  }
370
3619
  }, [connected]);
371
- (0, import_react10.useEffect)(() => {
3620
+ (0, import_react11.useEffect)(() => {
372
3621
  setIsDarkMode(isDark);
373
3622
  }, [isDark]);
374
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
3623
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
375
3624
  "div",
376
3625
  {
377
3626
  onMouseEnter: () => setHideMenuList(false),
378
3627
  onMouseLeave: () => setHideMenuList(true),
379
3628
  style: { width: "min-content", zIndex: 50 },
380
3629
  children: [
381
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
382
- Button,
3630
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
3631
+ ButtonDropdown,
383
3632
  {
384
3633
  isDarkMode,
385
3634
  hideMenuList,
386
3635
  setHideMenuList,
387
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3636
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
388
3637
  WalletBalance,
389
3638
  {
390
3639
  connected,
@@ -395,12 +3644,12 @@ var CardanoWallet = ({
395
3644
  )
396
3645
  }
397
3646
  ),
398
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3647
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
399
3648
  "div",
400
3649
  {
401
3650
  className: `mesh-mr-menu-list mesh-absolute mesh-w-60 mesh-rounded-b-md mesh-border mesh-text-center mesh-shadow-sm mesh-backdrop-blur ${hideMenuList && "mesh-hidden"} ${isDarkMode ? `mesh-bg-neutral-950 mesh-text-neutral-50` : `mesh-bg-neutral-50 mesh-text-neutral-950`}`,
402
3651
  style: { zIndex: 50 },
403
- children: !connected && wallets.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment, { children: wallets.map((wallet, index) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3652
+ children: !connected && wallets.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_jsx_runtime17.Fragment, { children: wallets.map((wallet, index) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
404
3653
  MenuItem,
405
3654
  {
406
3655
  icon: wallet.icon,
@@ -412,7 +3661,7 @@ var CardanoWallet = ({
412
3661
  active: name === wallet.id
413
3662
  },
414
3663
  index
415
- )) }) : wallets.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: "No Wallet Found" }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3664
+ )) }) : wallets.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: "No Wallet Found" }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_jsx_runtime17.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
416
3665
  MenuItem,
417
3666
  {
418
3667
  active: false,
@@ -428,43 +3677,8 @@ var CardanoWallet = ({
428
3677
  );
429
3678
  };
430
3679
 
431
- // src/mesh-badge/mesh-logo.tsx
432
- var import_jsx_runtime7 = require("react/jsx-runtime");
433
- var MeshLogo = () => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
434
- "svg",
435
- {
436
- className: "mesh-h-16 mesh-p-2",
437
- fill: "currentColor",
438
- viewBox: "0 0 300 200",
439
- xmlns: "http://www.w3.org/2000/svg",
440
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { d: "m289 127-45-60-45-60c-.9-1.3-2.4-2-4-2s-3.1.7-4 2l-37 49.3c-2 2.7-6 2.7-8 0l-37-49.3c-.9-1.3-2.4-2-4-2s-3.1.7-4 2l-45 60-45 60c-1.3 1.8-1.3 4.2 0 6l45 60c.9 1.3 2.4 2 4 2s3.1-.7 4-2l37-49.3c2-2.7 6-2.7 8 0l37 49.3c.9 1.3 2.4 2 4 2s3.1-.7 4-2l37-49.3c2-2.7 6-2.7 8 0l37 49.3c.9 1.3 2.4 2 4 2s3.1-.7 4-2l45-60c1.3-1.8 1.3-4.2 0-6zm-90-103.3 32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0l-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0zm-90 0 32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0l-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0zm-53 152.6-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0l32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0zm90 0-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0l32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0zm90 0-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0l32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0z" })
441
- }
442
- );
443
-
444
- // src/mesh-badge/index.tsx
445
- var import_jsx_runtime8 = require("react/jsx-runtime");
446
- var MeshBadge = ({ isDark = false }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
447
- "a",
448
- {
449
- className: `mesh-flex mesh-max-w-fit mesh-flex-col mesh-items-center mesh-rounded-md mesh-border mesh-border-solid mesh-border-current mesh-p-1 mesh-text-xl mesh-font-semibold mesh-no-underline ${isDark ? `mesh-bg-neutral-950 mesh-text-neutral-50` : `mesh-bg-neutral-50 mesh-text-neutral-950`}`,
450
- style: {
451
- color: isDark ? "#EEEEEE" : "#111111",
452
- backgroundColor: isDark ? "#111111" : "#EEEEEE"
453
- },
454
- href: "https://meshjs.dev/",
455
- rel: "noopener noreferrer",
456
- target: "_blank",
457
- children: [
458
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(MeshLogo, {}),
459
- "Mesh"
460
- ]
461
- }
462
- );
463
-
464
3680
  // src/stake-button/index.tsx
465
- var import_react11 = require("react");
466
- var import_transaction = require("@meshsdk/transaction");
467
- var import_jsx_runtime9 = require("react/jsx-runtime");
3681
+ var import_jsx_runtime18 = require("react/jsx-runtime");
468
3682
  var StakeButton = ({
469
3683
  label = "Stake your ADA",
470
3684
  isDark = false,
@@ -472,19 +3686,19 @@ var StakeButton = ({
472
3686
  onCheck,
473
3687
  onDelegated = void 0
474
3688
  }) => {
475
- const [isDarkMode, setIsDarkMode] = (0, import_react11.useState)(false);
3689
+ const [isDarkMode, setIsDarkMode] = (0, import_react12.useState)(false);
476
3690
  const { connected } = useWallet();
477
- (0, import_react11.useEffect)(() => {
3691
+ (0, import_react12.useEffect)(() => {
478
3692
  setIsDarkMode(isDark);
479
3693
  }, [isDark]);
480
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_jsx_runtime9.Fragment, { children: connected ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Button, { isDarkMode, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
3694
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_jsx_runtime18.Fragment, { children: connected ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ButtonDropdown, { isDarkMode, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
481
3695
  Delegate,
482
3696
  {
483
3697
  poolId,
484
3698
  onCheck,
485
3699
  onDelegated
486
3700
  }
487
- ) }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CardanoWallet, { label, isDark }) });
3701
+ ) }) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(CardanoWallet2, { label, isDark }) });
488
3702
  };
489
3703
  var Delegate = ({
490
3704
  poolId,
@@ -493,11 +3707,11 @@ var Delegate = ({
493
3707
  }) => {
494
3708
  const { wallet } = useWallet();
495
3709
  const rewardAddress = useRewardAddress();
496
- const [_, setError] = (0, import_react11.useState)();
497
- const [checking, setChecking] = (0, import_react11.useState)(false);
498
- const [accountInfo, setAccountInfo] = (0, import_react11.useState)();
499
- const [processing, setProcessing] = (0, import_react11.useState)(false);
500
- const [done, setDone] = (0, import_react11.useState)(false);
3710
+ const [_, setError] = (0, import_react12.useState)();
3711
+ const [checking, setChecking] = (0, import_react12.useState)(false);
3712
+ const [accountInfo, setAccountInfo] = (0, import_react12.useState)();
3713
+ const [processing, setProcessing] = (0, import_react12.useState)(false);
3714
+ const [done, setDone] = (0, import_react12.useState)(false);
501
3715
  const checkAccountStatus = async () => {
502
3716
  try {
503
3717
  setChecking(true);
@@ -548,22 +3762,22 @@ var Delegate = ({
548
3762
  }
549
3763
  setProcessing(false);
550
3764
  };
551
- (0, import_react11.useEffect)(() => {
3765
+ (0, import_react12.useEffect)(() => {
552
3766
  checkAccountStatus();
553
3767
  }, [rewardAddress]);
554
3768
  if (checking) {
555
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: "Checking..." });
3769
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: "Checking..." });
556
3770
  }
557
3771
  if (processing) {
558
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: "Loading..." });
3772
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: "Loading..." });
559
3773
  }
560
3774
  if (done) {
561
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: "Stake Delegated" });
3775
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: "Stake Delegated" });
562
3776
  }
563
3777
  if (accountInfo?.active) {
564
- return accountInfo.poolId === poolId ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: "Stake Delegated" }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { onClick: delegateStake, children: "Begin Staking" });
3778
+ return accountInfo.poolId === poolId ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: "Stake Delegated" }) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { onClick: delegateStake, children: "Begin Staking" });
565
3779
  }
566
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { onClick: registerAddress, children: "Begin Staking" });
3780
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { onClick: registerAddress, children: "Begin Staking" });
567
3781
  };
568
3782
  // Annotate the CommonJS export names for ESM import in node:
569
3783
  0 && (module.exports = {