@andrilla/mado-ui 1.0.5 → 1.0.6

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.
@@ -8,7 +8,19 @@ import * as ReactDOM from "react-dom";
8
8
  import { createPortal } from "react-dom";
9
9
 
10
10
  //#region src/utils/custom-tailwind-merge.ts
11
- const integerList = Array.from({ length: 100 }, (_, i) => `${i + 1}`);
11
+ const isInteger = (classPart) => /^\d+$/.test(classPart);
12
+ const isFloat = (classPart) => /^\d+\.\d+$/.test(classPart);
13
+ const isArbitraryValue = (classPart) => /^\[.+\]$/.test(classPart);
14
+ const cornerShapeList = [
15
+ "bevel",
16
+ "notch",
17
+ "round",
18
+ "scoop",
19
+ "square",
20
+ "squircle",
21
+ "infinity",
22
+ isArbitraryValue
23
+ ];
12
24
  const twMerge = extendTailwindMerge({ extend: { classGroups: {
13
25
  animate: [{ animate: ["fade-in", "wave"] }],
14
26
  "animation-direction": [{ "animation-direction": [
@@ -23,11 +35,71 @@ const twMerge = extendTailwindMerge({ extend: { classGroups: {
23
35
  "backwards",
24
36
  "both"
25
37
  ] }],
26
- "animation-iteration": [{ "animation-iteration": [...integerList, "infinite"] }],
38
+ "animation-iteration": [{ "animation-iteration": ["infinite", isInteger] }],
27
39
  "animation-state": [{ "animation-state": ["running", "paused"] }],
40
+ corner: [{
41
+ corner: cornerShapeList,
42
+ "corner-super": [isFloat, isInteger],
43
+ "corner-s": cornerShapeList,
44
+ "corner-s-super": [isFloat, isInteger],
45
+ "corner-e": cornerShapeList,
46
+ "corner-e-super": [isFloat, isInteger],
47
+ "corner-t": cornerShapeList,
48
+ "corner-t-super": [isFloat, isInteger],
49
+ "corner-r": cornerShapeList,
50
+ "corner-r-super": [isFloat, isInteger],
51
+ "corner-b": cornerShapeList,
52
+ "corner-b-super": [isFloat, isInteger],
53
+ "corner-l": cornerShapeList,
54
+ "corner-l-super": [isFloat, isInteger],
55
+ "corner-ss": cornerShapeList,
56
+ "corner-ss-super": [isFloat, isInteger],
57
+ "corner-se": cornerShapeList,
58
+ "corner-se-super": [isFloat, isInteger],
59
+ "corner-es": cornerShapeList,
60
+ "corner-es-super": [isFloat, isInteger],
61
+ "corner-tl": cornerShapeList,
62
+ "corner-tl-super": [isFloat, isInteger],
63
+ "corner-tr": cornerShapeList,
64
+ "corner-tr-super": [isFloat, isInteger],
65
+ "corner-br": cornerShapeList,
66
+ "corner-br-super": [isFloat, isInteger],
67
+ "corner-bl": cornerShapeList,
68
+ "corner-bl-super": [isFloat, isInteger],
69
+ "-corner": ["infinity"],
70
+ "-corner-super": [isFloat, isInteger],
71
+ "-corner-s": ["infinity"],
72
+ "-corner-s-super": [isFloat, isInteger],
73
+ "-corner-e": ["infinity"],
74
+ "-corner-e-super": [isFloat, isInteger],
75
+ "-corner-t": ["infinity"],
76
+ "-corner-t-super": [isFloat, isInteger],
77
+ "-corner-r": ["infinity"],
78
+ "-corner-r-super": [isFloat, isInteger],
79
+ "-corner-b": ["infinity"],
80
+ "-corner-b-super": [isFloat, isInteger],
81
+ "-corner-l": ["infinity"],
82
+ "-corner-l-super": [isFloat, isInteger],
83
+ "-corner-ss": ["infinity"],
84
+ "-corner-ss-super": [isFloat, isInteger],
85
+ "-corner-se": ["infinity"],
86
+ "-corner-se-super": [isFloat, isInteger],
87
+ "-corner-es": ["infinity"],
88
+ "-corner-es-super": [isFloat, isInteger],
89
+ "-corner-tl": ["infinity"],
90
+ "-corner-tl-super": [isFloat, isInteger],
91
+ "-corner-tr": ["infinity"],
92
+ "-corner-tr-super": [isFloat, isInteger],
93
+ "-corner-br": ["infinity"],
94
+ "-corner-br-super": [isFloat, isInteger],
95
+ "-corner-bl": ["infinity"],
96
+ "-corner-bl-super": [isFloat, isInteger]
97
+ }],
98
+ ease: [{ ease: ["exponential", "spring"] }],
99
+ "font-size": [{ text: ["smaller", "larger"] }],
28
100
  "grid-cols": [{ "grid-cols": ["0fr", "1fr"] }],
29
101
  "grid-rows": [{ "grid-rows": ["0fr", "1fr"] }],
30
- transition: ["transition-rows"]
102
+ transition: [{ transition: ["transition-cols", "transition-rows"] }]
31
103
  } } });
32
104
 
33
105
  //#endregion
@@ -538,70 +610,6 @@ function Link({ as, className, customTheme, theme, type, ...props }) {
538
610
  className: twMerge(linkClasses, className)
539
611
  });
540
612
  }
541
- /**
542
- * # createLink
543
- * Creates an extended Link component with additional theme options.
544
- *
545
- * @param config - Configuration object defining new themes and defaults
546
- * @returns A new Link component with extended theme support
547
- *
548
- * @example
549
- * ```tsx
550
- * const MyLink = createLink({
551
- * as: NextLink,
552
- * className: 'font-bold',
553
- * type: 'fill',
554
- * theme: {
555
- * primary: {
556
- * customTheme: {
557
- * fill: 'after:[--theme-color:var(--color-primary-500)]',
558
- * multilineFill: '[--theme-color:var(--color-primary-500)]'
559
- * },
560
- * className: 'text-white'
561
- * }
562
- * }
563
- * })
564
- * ```
565
- */
566
- function createLink(config) {
567
- return function ExtendedLink({ theme, className, customTheme, type, as, ...props }) {
568
- const finalType = type !== void 0 ? type : config.type, finalTheme = theme !== void 0 ? theme : config.defaultTheme;
569
- const configClassName = config.className;
570
- const shouldOverrideElement = !as && Boolean(config.as);
571
- const linkProps = {
572
- ...props,
573
- className: void 0,
574
- customTheme: void 0,
575
- type: finalType
576
- };
577
- if (shouldOverrideElement) linkProps.as = config.as;
578
- else if (as) linkProps.as = as;
579
- if (finalTheme && typeof finalTheme === "string" && config.theme && finalTheme in config.theme) {
580
- const extendedTheme = config.theme[finalTheme];
581
- if (customTheme) return /* @__PURE__ */ jsx(Link, {
582
- ...linkProps,
583
- theme: "custom",
584
- customTheme,
585
- className: twMerge(configClassName, extendedTheme.className, className)
586
- });
587
- let resolvedCustomTheme;
588
- if (extendedTheme.customTheme.themeColor) resolvedCustomTheme = { themeColor: (finalType ? finalType.includes("multiline") : false) ? extendedTheme.customTheme.themeColor.multilineFill : extendedTheme.customTheme.themeColor.fill };
589
- else resolvedCustomTheme = { classes: extendedTheme.customTheme.classes };
590
- return /* @__PURE__ */ jsx(Link, {
591
- ...linkProps,
592
- theme: "custom",
593
- customTheme: resolvedCustomTheme,
594
- className: twMerge(configClassName, extendedTheme.className, className)
595
- });
596
- }
597
- return /* @__PURE__ */ jsx(Link, {
598
- ...linkProps,
599
- theme: finalTheme,
600
- className: twMerge(configClassName, className),
601
- customTheme
602
- });
603
- };
604
- }
605
613
 
606
614
  //#endregion
607
615
  //#region src/components/button.tsx
@@ -683,73 +691,6 @@ function Button({ className, customTheme, gradient = false, padding = "md", roun
683
691
  className: buttonClasses
684
692
  });
685
693
  }
686
- /**
687
- * # createButton
688
- * Creates an extended Button component with additional theme options.
689
- *
690
- * @param extendedThemes - Configuration object defining new themes
691
- * @returns A new Button component with extended theme support
692
- *
693
- * @example
694
- * ```tsx
695
- * const MyButton = createButton({
696
- * as: {
697
- * default: 'div',
698
- * link: NextLink
699
- * },
700
- * className: 'min-w-64',
701
- * padding: 'sm',
702
- * rounded: 'full',
703
- * theme: {
704
- * primary: {
705
- * customTheme: { themeColor: '[--theme-color:var(--color-primary-500)]' },
706
- * className: 'text-white'
707
- * }
708
- * }
709
- * })
710
- * ```
711
- */
712
- function createButton(config) {
713
- return function ExtendedButton({ theme, className, customTheme, gradient, padding, rounded, as, ...props }) {
714
- const finalGradient = gradient !== void 0 ? gradient : config.gradient, finalPadding = padding !== void 0 ? padding : config.padding, finalRounded = rounded !== void 0 ? rounded : config.rounded, finalTheme = theme !== void 0 ? theme : config.defaultTheme;
715
- const configClassName = config.className;
716
- const shouldOverrideElement = !as && Boolean(config.as);
717
- const getOverrideElement = () => {
718
- if (!config.as) return void 0;
719
- if (typeof config.as === "function" || typeof config.as === "string") return config.as;
720
- const hasHref = "href" in props && props.href;
721
- if (hasHref && config.as.link) return config.as.link;
722
- else if (!hasHref && config.as.default) return config.as.default;
723
- };
724
- const buttonProps = {
725
- ...props,
726
- className: void 0,
727
- customTheme: void 0,
728
- gradient: finalGradient,
729
- padding: finalPadding,
730
- rounded: finalRounded
731
- };
732
- if (shouldOverrideElement) {
733
- const overrideElement = getOverrideElement();
734
- if (overrideElement) buttonProps.as = overrideElement;
735
- } else if (as) buttonProps.as = as;
736
- if (finalTheme && typeof finalTheme === "string" && config.theme && finalTheme in config.theme) {
737
- const extendedTheme = config.theme[finalTheme];
738
- return /* @__PURE__ */ jsx(Button, {
739
- ...buttonProps,
740
- theme: "custom",
741
- customTheme: customTheme || extendedTheme.customTheme,
742
- className: twMerge(configClassName, extendedTheme.className, className)
743
- });
744
- }
745
- return /* @__PURE__ */ jsx(Button, {
746
- ...buttonProps,
747
- theme: finalTheme,
748
- className: twMerge(configClassName, className),
749
- customTheme
750
- });
751
- };
752
- }
753
694
 
754
695
  //#endregion
755
696
  //#region src/symbols/checkmark.tsx
@@ -8514,4 +8455,4 @@ function ArrowSvg({ className, ...props }) {
8514
8455
  }
8515
8456
 
8516
8457
  //#endregion
8517
- export { Anchor, Button, Checkbox, Details, DetailsBody, DetailsSummary, DropDown, DropDownButton, DropDownItem, DropDownItems, DropDownSection, DropDownSeparator, Fieldset, Form, Ghost, Heading, HumanVerification, IFrame, Input, Link, Modal, ModalClose, ModalDialog, ModalTitle, ModalTrigger, Select, SelectOption, SelectSectionTitle, SubmitButton, Textarea, Time, Tooltip, TooltipPanel, TooltipTrigger, createButton, createLink, generateHumanValidationToken, getLinkClasses, validateHuman };
8458
+ export { Anchor, Button, Checkbox, Details, DetailsBody, DetailsSummary, DropDown, DropDownButton, DropDownItem, DropDownItems, DropDownSection, DropDownSeparator, Fieldset, Form, Ghost, Heading, HumanVerification, IFrame, Input, Link, Modal, ModalClose, ModalDialog, ModalTitle, ModalTrigger, Select, SelectOption, SelectSectionTitle, SubmitButton, Textarea, Time, Tooltip, TooltipPanel, TooltipTrigger, generateHumanValidationToken, getLinkClasses, validateHuman };
@@ -3,7 +3,19 @@ import { extendTailwindMerge } from "tailwind-merge";
3
3
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
4
 
5
5
  //#region src/utils/custom-tailwind-merge.ts
6
- const integerList = Array.from({ length: 100 }, (_, i) => `${i + 1}`);
6
+ const isInteger = (classPart) => /^\d+$/.test(classPart);
7
+ const isFloat = (classPart) => /^\d+\.\d+$/.test(classPart);
8
+ const isArbitraryValue = (classPart) => /^\[.+\]$/.test(classPart);
9
+ const cornerShapeList = [
10
+ "bevel",
11
+ "notch",
12
+ "round",
13
+ "scoop",
14
+ "square",
15
+ "squircle",
16
+ "infinity",
17
+ isArbitraryValue
18
+ ];
7
19
  const twMerge = extendTailwindMerge({ extend: { classGroups: {
8
20
  animate: [{ animate: ["fade-in", "wave"] }],
9
21
  "animation-direction": [{ "animation-direction": [
@@ -18,11 +30,71 @@ const twMerge = extendTailwindMerge({ extend: { classGroups: {
18
30
  "backwards",
19
31
  "both"
20
32
  ] }],
21
- "animation-iteration": [{ "animation-iteration": [...integerList, "infinite"] }],
33
+ "animation-iteration": [{ "animation-iteration": ["infinite", isInteger] }],
22
34
  "animation-state": [{ "animation-state": ["running", "paused"] }],
35
+ corner: [{
36
+ corner: cornerShapeList,
37
+ "corner-super": [isFloat, isInteger],
38
+ "corner-s": cornerShapeList,
39
+ "corner-s-super": [isFloat, isInteger],
40
+ "corner-e": cornerShapeList,
41
+ "corner-e-super": [isFloat, isInteger],
42
+ "corner-t": cornerShapeList,
43
+ "corner-t-super": [isFloat, isInteger],
44
+ "corner-r": cornerShapeList,
45
+ "corner-r-super": [isFloat, isInteger],
46
+ "corner-b": cornerShapeList,
47
+ "corner-b-super": [isFloat, isInteger],
48
+ "corner-l": cornerShapeList,
49
+ "corner-l-super": [isFloat, isInteger],
50
+ "corner-ss": cornerShapeList,
51
+ "corner-ss-super": [isFloat, isInteger],
52
+ "corner-se": cornerShapeList,
53
+ "corner-se-super": [isFloat, isInteger],
54
+ "corner-es": cornerShapeList,
55
+ "corner-es-super": [isFloat, isInteger],
56
+ "corner-tl": cornerShapeList,
57
+ "corner-tl-super": [isFloat, isInteger],
58
+ "corner-tr": cornerShapeList,
59
+ "corner-tr-super": [isFloat, isInteger],
60
+ "corner-br": cornerShapeList,
61
+ "corner-br-super": [isFloat, isInteger],
62
+ "corner-bl": cornerShapeList,
63
+ "corner-bl-super": [isFloat, isInteger],
64
+ "-corner": ["infinity"],
65
+ "-corner-super": [isFloat, isInteger],
66
+ "-corner-s": ["infinity"],
67
+ "-corner-s-super": [isFloat, isInteger],
68
+ "-corner-e": ["infinity"],
69
+ "-corner-e-super": [isFloat, isInteger],
70
+ "-corner-t": ["infinity"],
71
+ "-corner-t-super": [isFloat, isInteger],
72
+ "-corner-r": ["infinity"],
73
+ "-corner-r-super": [isFloat, isInteger],
74
+ "-corner-b": ["infinity"],
75
+ "-corner-b-super": [isFloat, isInteger],
76
+ "-corner-l": ["infinity"],
77
+ "-corner-l-super": [isFloat, isInteger],
78
+ "-corner-ss": ["infinity"],
79
+ "-corner-ss-super": [isFloat, isInteger],
80
+ "-corner-se": ["infinity"],
81
+ "-corner-se-super": [isFloat, isInteger],
82
+ "-corner-es": ["infinity"],
83
+ "-corner-es-super": [isFloat, isInteger],
84
+ "-corner-tl": ["infinity"],
85
+ "-corner-tl-super": [isFloat, isInteger],
86
+ "-corner-tr": ["infinity"],
87
+ "-corner-tr-super": [isFloat, isInteger],
88
+ "-corner-br": ["infinity"],
89
+ "-corner-br-super": [isFloat, isInteger],
90
+ "-corner-bl": ["infinity"],
91
+ "-corner-bl-super": [isFloat, isInteger]
92
+ }],
93
+ ease: [{ ease: ["exponential", "spring"] }],
94
+ "font-size": [{ text: ["smaller", "larger"] }],
23
95
  "grid-cols": [{ "grid-cols": ["0fr", "1fr"] }],
24
96
  "grid-rows": [{ "grid-rows": ["0fr", "1fr"] }],
25
- transition: ["transition-rows"]
97
+ transition: [{ transition: ["transition-cols", "transition-rows"] }]
26
98
  } } });
27
99
 
28
100
  //#endregion
package/dist/client.js CHANGED
@@ -8,7 +8,19 @@ import * as ReactDOM from "react-dom";
8
8
  import { createPortal } from "react-dom";
9
9
 
10
10
  //#region src/utils/custom-tailwind-merge.ts
11
- const integerList = Array.from({ length: 100 }, (_, i) => `${i + 1}`);
11
+ const isInteger = (classPart) => /^\d+$/.test(classPart);
12
+ const isFloat = (classPart) => /^\d+\.\d+$/.test(classPart);
13
+ const isArbitraryValue = (classPart) => /^\[.+\]$/.test(classPart);
14
+ const cornerShapeList = [
15
+ "bevel",
16
+ "notch",
17
+ "round",
18
+ "scoop",
19
+ "square",
20
+ "squircle",
21
+ "infinity",
22
+ isArbitraryValue
23
+ ];
12
24
  const twMerge = extendTailwindMerge({ extend: { classGroups: {
13
25
  animate: [{ animate: ["fade-in", "wave"] }],
14
26
  "animation-direction": [{ "animation-direction": [
@@ -23,16 +35,75 @@ const twMerge = extendTailwindMerge({ extend: { classGroups: {
23
35
  "backwards",
24
36
  "both"
25
37
  ] }],
26
- "animation-iteration": [{ "animation-iteration": [...integerList, "infinite"] }],
38
+ "animation-iteration": [{ "animation-iteration": ["infinite", isInteger] }],
27
39
  "animation-state": [{ "animation-state": ["running", "paused"] }],
40
+ corner: [{
41
+ corner: cornerShapeList,
42
+ "corner-super": [isFloat, isInteger],
43
+ "corner-s": cornerShapeList,
44
+ "corner-s-super": [isFloat, isInteger],
45
+ "corner-e": cornerShapeList,
46
+ "corner-e-super": [isFloat, isInteger],
47
+ "corner-t": cornerShapeList,
48
+ "corner-t-super": [isFloat, isInteger],
49
+ "corner-r": cornerShapeList,
50
+ "corner-r-super": [isFloat, isInteger],
51
+ "corner-b": cornerShapeList,
52
+ "corner-b-super": [isFloat, isInteger],
53
+ "corner-l": cornerShapeList,
54
+ "corner-l-super": [isFloat, isInteger],
55
+ "corner-ss": cornerShapeList,
56
+ "corner-ss-super": [isFloat, isInteger],
57
+ "corner-se": cornerShapeList,
58
+ "corner-se-super": [isFloat, isInteger],
59
+ "corner-es": cornerShapeList,
60
+ "corner-es-super": [isFloat, isInteger],
61
+ "corner-tl": cornerShapeList,
62
+ "corner-tl-super": [isFloat, isInteger],
63
+ "corner-tr": cornerShapeList,
64
+ "corner-tr-super": [isFloat, isInteger],
65
+ "corner-br": cornerShapeList,
66
+ "corner-br-super": [isFloat, isInteger],
67
+ "corner-bl": cornerShapeList,
68
+ "corner-bl-super": [isFloat, isInteger],
69
+ "-corner": ["infinity"],
70
+ "-corner-super": [isFloat, isInteger],
71
+ "-corner-s": ["infinity"],
72
+ "-corner-s-super": [isFloat, isInteger],
73
+ "-corner-e": ["infinity"],
74
+ "-corner-e-super": [isFloat, isInteger],
75
+ "-corner-t": ["infinity"],
76
+ "-corner-t-super": [isFloat, isInteger],
77
+ "-corner-r": ["infinity"],
78
+ "-corner-r-super": [isFloat, isInteger],
79
+ "-corner-b": ["infinity"],
80
+ "-corner-b-super": [isFloat, isInteger],
81
+ "-corner-l": ["infinity"],
82
+ "-corner-l-super": [isFloat, isInteger],
83
+ "-corner-ss": ["infinity"],
84
+ "-corner-ss-super": [isFloat, isInteger],
85
+ "-corner-se": ["infinity"],
86
+ "-corner-se-super": [isFloat, isInteger],
87
+ "-corner-es": ["infinity"],
88
+ "-corner-es-super": [isFloat, isInteger],
89
+ "-corner-tl": ["infinity"],
90
+ "-corner-tl-super": [isFloat, isInteger],
91
+ "-corner-tr": ["infinity"],
92
+ "-corner-tr-super": [isFloat, isInteger],
93
+ "-corner-br": ["infinity"],
94
+ "-corner-br-super": [isFloat, isInteger],
95
+ "-corner-bl": ["infinity"],
96
+ "-corner-bl-super": [isFloat, isInteger]
97
+ }],
98
+ ease: [{ ease: ["exponential", "spring"] }],
99
+ "font-size": [{ text: ["smaller", "larger"] }],
28
100
  "grid-cols": [{ "grid-cols": ["0fr", "1fr"] }],
29
101
  "grid-rows": [{ "grid-rows": ["0fr", "1fr"] }],
30
- transition: ["transition-rows"]
102
+ transition: [{ transition: ["transition-cols", "transition-rows"] }]
31
103
  } } });
32
104
  function extendMadoTailwindMerge(configExtension) {
33
105
  const extend = configExtension.extend || {};
34
106
  const theme = extend.theme || {};
35
- "color" in theme && theme.color;
36
107
  const classGroups = extend.classGroups || {};
37
108
  const themeRest = { ...theme };
38
109
  if ("color" in themeRest) delete themeRest.color;
@@ -56,11 +127,71 @@ function extendMadoTailwindMerge(configExtension) {
56
127
  "backwards",
57
128
  "both"
58
129
  ] }],
59
- "animation-iteration": [{ "animation-iteration": [...integerList, "infinite"] }],
130
+ "animation-iteration": [{ "animation-iteration": ["infinite", isInteger] }],
60
131
  "animation-state": [{ "animation-state": ["running", "paused"] }],
132
+ corner: [{
133
+ corner: cornerShapeList,
134
+ "corner-super": [isFloat, isInteger],
135
+ "corner-s": cornerShapeList,
136
+ "corner-s-super": [isFloat, isInteger],
137
+ "corner-e": cornerShapeList,
138
+ "corner-e-super": [isFloat, isInteger],
139
+ "corner-t": cornerShapeList,
140
+ "corner-t-super": [isFloat, isInteger],
141
+ "corner-r": cornerShapeList,
142
+ "corner-r-super": [isFloat, isInteger],
143
+ "corner-b": cornerShapeList,
144
+ "corner-b-super": [isFloat, isInteger],
145
+ "corner-l": cornerShapeList,
146
+ "corner-l-super": [isFloat, isInteger],
147
+ "corner-ss": cornerShapeList,
148
+ "corner-ss-super": [isFloat, isInteger],
149
+ "corner-se": cornerShapeList,
150
+ "corner-se-super": [isFloat, isInteger],
151
+ "corner-es": cornerShapeList,
152
+ "corner-es-super": [isFloat, isInteger],
153
+ "corner-tl": cornerShapeList,
154
+ "corner-tl-super": [isFloat, isInteger],
155
+ "corner-tr": cornerShapeList,
156
+ "corner-tr-super": [isFloat, isInteger],
157
+ "corner-br": cornerShapeList,
158
+ "corner-br-super": [isFloat, isInteger],
159
+ "corner-bl": cornerShapeList,
160
+ "corner-bl-super": [isFloat, isInteger],
161
+ "-corner": ["infinity"],
162
+ "-corner-super": [isFloat, isInteger],
163
+ "-corner-s": ["infinity"],
164
+ "-corner-s-super": [isFloat, isInteger],
165
+ "-corner-e": ["infinity"],
166
+ "-corner-e-super": [isFloat, isInteger],
167
+ "-corner-t": ["infinity"],
168
+ "-corner-t-super": [isFloat, isInteger],
169
+ "-corner-r": ["infinity"],
170
+ "-corner-r-super": [isFloat, isInteger],
171
+ "-corner-b": ["infinity"],
172
+ "-corner-b-super": [isFloat, isInteger],
173
+ "-corner-l": ["infinity"],
174
+ "-corner-l-super": [isFloat, isInteger],
175
+ "-corner-ss": ["infinity"],
176
+ "-corner-ss-super": [isFloat, isInteger],
177
+ "-corner-se": ["infinity"],
178
+ "-corner-se-super": [isFloat, isInteger],
179
+ "-corner-es": ["infinity"],
180
+ "-corner-es-super": [isFloat, isInteger],
181
+ "-corner-tl": ["infinity"],
182
+ "-corner-tl-super": [isFloat, isInteger],
183
+ "-corner-tr": ["infinity"],
184
+ "-corner-tr-super": [isFloat, isInteger],
185
+ "-corner-br": ["infinity"],
186
+ "-corner-br-super": [isFloat, isInteger],
187
+ "-corner-bl": ["infinity"],
188
+ "-corner-bl-super": [isFloat, isInteger]
189
+ }],
190
+ ease: [{ ease: ["exponential", "spring"] }],
191
+ "font-size": [{ text: ["smaller", "larger"] }],
61
192
  "grid-cols": [{ "grid-cols": ["0fr", "1fr"] }],
62
193
  "grid-rows": [{ "grid-rows": ["0fr", "1fr"] }],
63
- transition: ["transition-rows"],
194
+ transition: [{ transition: ["transition-cols", "transition-rows"] }],
64
195
  ...classGroups
65
196
  },
66
197
  ...extendRest
@@ -577,70 +708,6 @@ function Link({ as, className, customTheme, theme, type, ...props }) {
577
708
  className: twMerge(linkClasses, className)
578
709
  });
579
710
  }
580
- /**
581
- * # createLink
582
- * Creates an extended Link component with additional theme options.
583
- *
584
- * @param config - Configuration object defining new themes and defaults
585
- * @returns A new Link component with extended theme support
586
- *
587
- * @example
588
- * ```tsx
589
- * const MyLink = createLink({
590
- * as: NextLink,
591
- * className: 'font-bold',
592
- * type: 'fill',
593
- * theme: {
594
- * primary: {
595
- * customTheme: {
596
- * fill: 'after:[--theme-color:var(--color-primary-500)]',
597
- * multilineFill: '[--theme-color:var(--color-primary-500)]'
598
- * },
599
- * className: 'text-white'
600
- * }
601
- * }
602
- * })
603
- * ```
604
- */
605
- function createLink(config) {
606
- return function ExtendedLink({ theme, className, customTheme, type, as, ...props }) {
607
- const finalType = type !== void 0 ? type : config.type, finalTheme = theme !== void 0 ? theme : config.defaultTheme;
608
- const configClassName = config.className;
609
- const shouldOverrideElement = !as && Boolean(config.as);
610
- const linkProps = {
611
- ...props,
612
- className: void 0,
613
- customTheme: void 0,
614
- type: finalType
615
- };
616
- if (shouldOverrideElement) linkProps.as = config.as;
617
- else if (as) linkProps.as = as;
618
- if (finalTheme && typeof finalTheme === "string" && config.theme && finalTheme in config.theme) {
619
- const extendedTheme = config.theme[finalTheme];
620
- if (customTheme) return /* @__PURE__ */ jsx(Link, {
621
- ...linkProps,
622
- theme: "custom",
623
- customTheme,
624
- className: twMerge(configClassName, extendedTheme.className, className)
625
- });
626
- let resolvedCustomTheme;
627
- if (extendedTheme.customTheme.themeColor) resolvedCustomTheme = { themeColor: (finalType ? finalType.includes("multiline") : false) ? extendedTheme.customTheme.themeColor.multilineFill : extendedTheme.customTheme.themeColor.fill };
628
- else resolvedCustomTheme = { classes: extendedTheme.customTheme.classes };
629
- return /* @__PURE__ */ jsx(Link, {
630
- ...linkProps,
631
- theme: "custom",
632
- customTheme: resolvedCustomTheme,
633
- className: twMerge(configClassName, extendedTheme.className, className)
634
- });
635
- }
636
- return /* @__PURE__ */ jsx(Link, {
637
- ...linkProps,
638
- theme: finalTheme,
639
- className: twMerge(configClassName, className),
640
- customTheme
641
- });
642
- };
643
- }
644
711
 
645
712
  //#endregion
646
713
  //#region src/components/button.tsx
@@ -722,73 +789,6 @@ function Button({ className, customTheme, gradient = false, padding = "md", roun
722
789
  className: buttonClasses
723
790
  });
724
791
  }
725
- /**
726
- * # createButton
727
- * Creates an extended Button component with additional theme options.
728
- *
729
- * @param extendedThemes - Configuration object defining new themes
730
- * @returns A new Button component with extended theme support
731
- *
732
- * @example
733
- * ```tsx
734
- * const MyButton = createButton({
735
- * as: {
736
- * default: 'div',
737
- * link: NextLink
738
- * },
739
- * className: 'min-w-64',
740
- * padding: 'sm',
741
- * rounded: 'full',
742
- * theme: {
743
- * primary: {
744
- * customTheme: { themeColor: '[--theme-color:var(--color-primary-500)]' },
745
- * className: 'text-white'
746
- * }
747
- * }
748
- * })
749
- * ```
750
- */
751
- function createButton(config) {
752
- return function ExtendedButton({ theme, className, customTheme, gradient, padding, rounded, as, ...props }) {
753
- const finalGradient = gradient !== void 0 ? gradient : config.gradient, finalPadding = padding !== void 0 ? padding : config.padding, finalRounded = rounded !== void 0 ? rounded : config.rounded, finalTheme = theme !== void 0 ? theme : config.defaultTheme;
754
- const configClassName = config.className;
755
- const shouldOverrideElement = !as && Boolean(config.as);
756
- const getOverrideElement = () => {
757
- if (!config.as) return void 0;
758
- if (typeof config.as === "function" || typeof config.as === "string") return config.as;
759
- const hasHref = "href" in props && props.href;
760
- if (hasHref && config.as.link) return config.as.link;
761
- else if (!hasHref && config.as.default) return config.as.default;
762
- };
763
- const buttonProps = {
764
- ...props,
765
- className: void 0,
766
- customTheme: void 0,
767
- gradient: finalGradient,
768
- padding: finalPadding,
769
- rounded: finalRounded
770
- };
771
- if (shouldOverrideElement) {
772
- const overrideElement = getOverrideElement();
773
- if (overrideElement) buttonProps.as = overrideElement;
774
- } else if (as) buttonProps.as = as;
775
- if (finalTheme && typeof finalTheme === "string" && config.theme && finalTheme in config.theme) {
776
- const extendedTheme = config.theme[finalTheme];
777
- return /* @__PURE__ */ jsx(Button, {
778
- ...buttonProps,
779
- theme: "custom",
780
- customTheme: customTheme || extendedTheme.customTheme,
781
- className: twMerge(configClassName, extendedTheme.className, className)
782
- });
783
- }
784
- return /* @__PURE__ */ jsx(Button, {
785
- ...buttonProps,
786
- theme: finalTheme,
787
- className: twMerge(configClassName, className),
788
- customTheme
789
- });
790
- };
791
- }
792
792
 
793
793
  //#endregion
794
794
  //#region src/symbols/checkmark.tsx
@@ -9517,4 +9517,4 @@ function YouTubeLogo({ className, cutout = false, targets, ...props }) {
9517
9517
  }
9518
9518
 
9519
9519
  //#endregion
9520
- export { Anchor, Button, Checkbox, Details, DetailsBody, DetailsSummary, DropDown, DropDownButton, DropDownItem, DropDownItems, DropDownSection, DropDownSeparator, FacebookLogo, Fieldset, Form, FormStatusProvider, Ghost, GoogleLogo, Heading, HumanVerification, IFrame, Input, InstagramLogo, Link, LinkedInLogo, Modal, ModalClose, ModalDialog, ModalTitle, ModalTrigger, Select, SelectOption, SelectSectionTitle, SubmitButton, Textarea, TikTokLogo, Time, Tooltip, TooltipPanel, TooltipTrigger, XLogo, YouTubeLogo, addClass, createButton, createFastContext, createLink, currentMonthName, currentWeekdayName, daysInMonth, easeOutExpo, emailRegex, extendMadoTailwindMerge, firstOfMonth, formatPhoneNumber, generateHumanValidationToken, getDate, getHours, getHoursIn12, getLinkClasses, getLocalTime, getMeridianFromHour, getMilliseconds, getMinutes, getMonth, getMonthIndexFromName, getMonthName, getNextMonth, getPreviousMonth, getSeconds, getTimezone, getUserReadableDate, getUserReadableDateFromTimestampz, getWeekdayName, getYearsInRange, hasClass, isEmail, isPhoneNumber, monthNamesList, removeClass, splitCamelCase, telRegex, toCamelCase, toFullDateString, toLowerCase, toTitleCase, toggleClass, twMerge, useFormStatus, usePointerMovement, validateHuman, weekdayNamesList };
9520
+ export { Anchor, Button, Checkbox, Details, DetailsBody, DetailsSummary, DropDown, DropDownButton, DropDownItem, DropDownItems, DropDownSection, DropDownSeparator, FacebookLogo, Fieldset, Form, FormStatusProvider, Ghost, GoogleLogo, Heading, HumanVerification, IFrame, Input, InstagramLogo, Link, LinkedInLogo, Modal, ModalClose, ModalDialog, ModalTitle, ModalTrigger, Select, SelectOption, SelectSectionTitle, SubmitButton, Textarea, TikTokLogo, Time, Tooltip, TooltipPanel, TooltipTrigger, XLogo, YouTubeLogo, addClass, createFastContext, currentMonthName, currentWeekdayName, daysInMonth, easeOutExpo, emailRegex, extendMadoTailwindMerge, firstOfMonth, formatPhoneNumber, generateHumanValidationToken, getDate, getHours, getHoursIn12, getLinkClasses, getLocalTime, getMeridianFromHour, getMilliseconds, getMinutes, getMonth, getMonthIndexFromName, getMonthName, getNextMonth, getPreviousMonth, getSeconds, getTimezone, getUserReadableDate, getUserReadableDateFromTimestampz, getWeekdayName, getYearsInRange, hasClass, isEmail, isPhoneNumber, monthNamesList, removeClass, splitCamelCase, telRegex, toCamelCase, toFullDateString, toLowerCase, toTitleCase, toggleClass, twMerge, useFormStatus, usePointerMovement, validateHuman, weekdayNamesList };