@nextui-org/theme 2.1.11 → 2.1.13

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.
@@ -37,13 +37,14 @@ import mapKeys from "lodash.mapkeys";
37
37
  import kebabCase from "lodash.kebabcase";
38
38
  import deepMerge from "deepmerge";
39
39
  var DEFAULT_PREFIX = "nextui";
40
+ var parsedColorsCache = {};
40
41
  var resolveConfig = (themes = {}, defaultTheme, prefix) => {
41
42
  const resolved = {
42
43
  variants: [],
43
44
  utilities: {},
44
45
  colors: {}
45
46
  };
46
- forEach(themes, ({ extend, layout, colors }, themeName) => {
47
+ for (const [themeName, { extend, layout, colors }] of Object.entries(themes)) {
47
48
  let cssSelector = `.${themeName},[data-theme="${themeName}"]`;
48
49
  const scheme = themeName === "light" || themeName === "dark" ? themeName : extend;
49
50
  if (themeName === defaultTheme) {
@@ -58,11 +59,13 @@ var resolveConfig = (themes = {}, defaultTheme, prefix) => {
58
59
  name: themeName,
59
60
  definition: [`&.${themeName}`, `&[data-theme='${themeName}']`]
60
61
  });
61
- forEach(flatColors, (colorValue, colorName) => {
62
+ for (const [colorName, colorValue] of Object.entries(flatColors)) {
62
63
  if (!colorValue)
63
64
  return;
64
65
  try {
65
- const [h, s, l, defaultAlphaValue] = Color(colorValue).hsl().round().array();
66
+ const parsedColor = parsedColorsCache[colorValue] || Color(colorValue).hsl().round().array();
67
+ parsedColorsCache[colorValue] = parsedColor;
68
+ const [h, s, l, defaultAlphaValue] = parsedColor;
66
69
  const nextuiColorVariable = `--${prefix}-${colorName}`;
67
70
  const nextuiOpacityVariable = `--${prefix}-${colorName}-opacity`;
68
71
  resolved.utilities[cssSelector][nextuiColorVariable] = `${h} ${s}% ${l}%`;
@@ -81,32 +84,31 @@ var resolveConfig = (themes = {}, defaultTheme, prefix) => {
81
84
  } catch (error) {
82
85
  console.log("error", error == null ? void 0 : error.message);
83
86
  }
84
- });
85
- forEach(flatLayout, (value, key) => {
87
+ }
88
+ for (const [key, value] of Object.entries(flatLayout)) {
86
89
  if (!value)
87
90
  return;
91
+ const layoutVariablePrefix = `--${prefix}-${key}`;
88
92
  if (typeof value === "object") {
89
- forEach(value, (v, k) => {
90
- const layoutVariable = `--${prefix}-${key}-${k}`;
91
- resolved.utilities[cssSelector][layoutVariable] = v;
92
- });
93
- } else if (key === "spacing-unit") {
94
- const layoutVariable = `--${prefix}-${key}`;
95
- resolved.utilities[cssSelector][layoutVariable] = value;
96
- const spacingScale = generateSpacingScale(Number(value));
97
- forEach(spacingScale, (v, k) => {
98
- const layoutVariable2 = `--${prefix}-${key}-${k}`;
99
- resolved.utilities[cssSelector][layoutVariable2] = v;
100
- });
93
+ for (const [nestedKey, nestedValue] of Object.entries(value)) {
94
+ const nestedLayoutVariable = `${layoutVariablePrefix}-${nestedKey}`;
95
+ resolved.utilities[cssSelector][nestedLayoutVariable] = nestedValue;
96
+ }
101
97
  } else {
102
- const layoutVariable = `--${prefix}-${key}`;
103
- if (layoutVariable.includes("opacity") && typeof value === "number") {
104
- value = value.toString().replace(/^0\./, ".");
98
+ if (key === "spacing-unit") {
99
+ resolved.utilities[cssSelector][layoutVariablePrefix] = value;
100
+ const spacingScale = generateSpacingScale(Number(value));
101
+ for (const [scaleKey, scaleValue] of Object.entries(spacingScale)) {
102
+ const spacingVariable = `${layoutVariablePrefix}-${scaleKey}`;
103
+ resolved.utilities[cssSelector][spacingVariable] = scaleValue;
104
+ }
105
+ } else {
106
+ const formattedValue = layoutVariablePrefix.includes("opacity") && typeof value === "number" ? value.toString().replace(/^0\./, ".") : value;
107
+ resolved.utilities[cssSelector][layoutVariablePrefix] = formattedValue;
105
108
  }
106
- resolved.utilities[cssSelector][layoutVariable] = value;
107
109
  }
108
- });
109
- });
110
+ }
111
+ }
110
112
  return resolved;
111
113
  };
112
114
  var corePlugin = (themes = {}, defaultTheme, prefix, addCommonColors) => {
@@ -136,8 +138,8 @@ var corePlugin = (themes = {}, defaultTheme, prefix, addCommonColors) => {
136
138
  ...baseStyles(prefix)
137
139
  }
138
140
  });
139
- addUtilities({ ...resolved.utilities, ...utilities });
140
- resolved.variants.forEach((variant) => {
141
+ addUtilities({ ...resolved == null ? void 0 : resolved.utilities, ...utilities });
142
+ resolved == null ? void 0 : resolved.variants.forEach((variant) => {
141
143
  addVariant(variant.name, variant.definition);
142
144
  });
143
145
  },
@@ -146,7 +148,7 @@ var corePlugin = (themes = {}, defaultTheme, prefix, addCommonColors) => {
146
148
  extend: {
147
149
  colors: {
148
150
  ...addCommonColors ? commonColors : {},
149
- ...resolved.colors
151
+ ...resolved == null ? void 0 : resolved.colors
150
152
  },
151
153
  scale: {
152
154
  "80": "0.8",
@@ -9,7 +9,7 @@ import {
9
9
  // src/components/input.ts
10
10
  var input = tv({
11
11
  slots: {
12
- base: ["group flex flex-col", "data-[has-helper=true]:mb-4"],
12
+ base: "group flex flex-col",
13
13
  label: [
14
14
  "absolute",
15
15
  "z-10",
@@ -18,15 +18,19 @@ var input = tv({
18
18
  "subpixel-antialiased",
19
19
  "block",
20
20
  "text-small",
21
- "text-foreground-500"
21
+ "text-foreground-500",
22
+ "opacity-70",
23
+ "group-data-[filled-within=true]:opacity-100"
22
24
  ],
23
25
  mainWrapper: "h-full",
24
26
  inputWrapper: "relative w-full inline-flex tap-highlight-transparent flex-row items-center shadow-sm px-3 gap-3",
25
27
  innerWrapper: "inline-flex w-full items-center h-full box-border",
26
28
  input: [
29
+ "opacity-70",
27
30
  "w-full font-normal bg-transparent !outline-none placeholder:text-foreground-500 focus-visible:outline-none",
28
31
  "data-[has-start-content=true]:ps-1.5",
29
- "data-[has-end-content=true]:pe-1.5"
32
+ "data-[has-end-content=true]:pe-1.5",
33
+ "group-data-[has-value=true]:opacity-100"
30
34
  ],
31
35
  clearButton: [
32
36
  "p-2",
@@ -45,7 +49,7 @@ var input = tv({
45
49
  "rounded-full",
46
50
  ...dataFocusVisibleClasses
47
51
  ],
48
- helperWrapper: "flex absolute -bottom-[calc(theme(fontSize.tiny)*1.5)] flex-col gap-1.5 px-1",
52
+ helperWrapper: "p-1 flex relative flex-col gap-1.5",
49
53
  description: "text-tiny text-foreground-400",
50
54
  errorMessage: "text-tiny text-danger"
51
55
  },
@@ -56,7 +60,9 @@ var input = tv({
56
60
  "bg-default-100",
57
61
  "data-[hover=true]:bg-default-200",
58
62
  "group-data-[focus=true]:bg-default-100"
59
- ]
63
+ ],
64
+ input: "placeholder:text-default-foreground",
65
+ label: "text-default-foreground"
60
66
  },
61
67
  faded: {
62
68
  inputWrapper: [
@@ -64,15 +70,19 @@ var input = tv({
64
70
  "border-medium",
65
71
  "border-default-200",
66
72
  "data-[hover=true]:border-default-400"
67
- ]
73
+ ],
74
+ input: "placeholder:text-default-foreground",
75
+ label: "text-default-foreground"
68
76
  },
69
77
  bordered: {
70
78
  inputWrapper: [
71
79
  "border-medium",
72
80
  "border-default-200",
73
81
  "data-[hover=true]:border-default-400",
74
- "group-data-[focus=true]:border-foreground"
75
- ]
82
+ "group-data-[focus=true]:border-default-foreground"
83
+ ],
84
+ input: "placeholder:text-foreground",
85
+ label: "text-foreground"
76
86
  },
77
87
  underlined: {
78
88
  inputWrapper: [
@@ -89,7 +99,7 @@ var input = tv({
89
99
  "after:content-['']",
90
100
  "after:w-0",
91
101
  "after:origin-center",
92
- "after:bg-foreground",
102
+ "after:bg-default-foreground",
93
103
  "after:absolute",
94
104
  "after:left-1/2",
95
105
  "after:-translate-x-1/2",
@@ -97,11 +107,15 @@ var input = tv({
97
107
  "after:h-[2px]",
98
108
  "group-data-[focus=true]:after:w-full"
99
109
  ],
100
- innerWrapper: "pb-1"
110
+ innerWrapper: "pb-1",
111
+ input: "placeholder:text-foreground",
112
+ label: "text-foreground"
101
113
  }
102
114
  },
103
115
  color: {
104
- default: {},
116
+ default: {
117
+ label: "group-data-[filled-within=true]:opacity-80"
118
+ },
105
119
  primary: {},
106
120
  secondary: {},
107
121
  success: {},
@@ -157,7 +171,7 @@ var input = tv({
157
171
  inside: {
158
172
  label: "text-tiny cursor-text",
159
173
  inputWrapper: "flex-col items-start justify-center gap-0",
160
- innerWrapper: "items-end"
174
+ innerWrapper: "group-data-[has-label=true]:items-end"
161
175
  }
162
176
  },
163
177
  fullWidth: {
@@ -470,13 +484,6 @@ var input = tv({
470
484
  ]
471
485
  }
472
486
  },
473
- {
474
- labelPlacement: "inside",
475
- color: "default",
476
- class: {
477
- label: "group-data-[filled-within=true]:text-foreground-600"
478
- }
479
- },
480
487
  {
481
488
  isInvalid: true,
482
489
  variant: "flat",
@@ -552,11 +559,9 @@ var input = tv({
552
559
  label: [
553
560
  "pb-0",
554
561
  "z-20",
555
- "opacity-60",
556
562
  "top-1/2",
557
563
  "-translate-y-1/2",
558
- "group-data-[filled-within=true]:left-0",
559
- "group-data-[filled-within=true]:opacity-100"
564
+ "group-data-[filled-within=true]:left-0"
560
565
  ]
561
566
  }
562
567
  },
@@ -569,7 +574,6 @@ var input = tv({
569
574
  {
570
575
  labelPlacement: ["inside"],
571
576
  variant: "flat",
572
- size: ["md", "lg"],
573
577
  class: {
574
578
  innerWrapper: "pb-0.5"
575
579
  }
@@ -767,6 +771,12 @@ var input = tv({
767
771
  class: {
768
772
  input: "transition-height !duration-100 motion-reduce:transition-none"
769
773
  }
774
+ },
775
+ {
776
+ labelPlacement: ["inside", "outside"],
777
+ class: {
778
+ label: ["pe-2", "max-w-full", "text-ellipsis", "overflow-hidden"]
779
+ }
770
780
  }
771
781
  ]
772
782
  });
@@ -8,7 +8,7 @@ import {
8
8
  // src/components/select.ts
9
9
  var select = tv({
10
10
  slots: {
11
- base: ["group inline-flex flex-col relative w-full", "data-[has-helper=true]:mb-4"],
11
+ base: ["group inline-flex flex-col relative w-full"],
12
12
  label: [
13
13
  "block",
14
14
  "absolute",
@@ -17,18 +17,26 @@ var select = tv({
17
17
  "subpixel-antialiased",
18
18
  "text-small",
19
19
  "text-foreground-500",
20
- "pointer-events-none"
20
+ "pointer-events-none",
21
+ "opacity-70",
22
+ "group-data-[filled=true]:opacity-100"
21
23
  ],
22
24
  mainWrapper: "w-full flex flex-col",
23
25
  trigger: "relative px-3 gap-3 w-full inline-flex flex-row items-center shadow-sm outline-none tap-highlight-transparent",
24
26
  innerWrapper: "inline-flex h-full w-[calc(100%_-_theme(spacing.unit-6))] min-h-unit-4 items-center gap-1.5 box-border",
25
27
  selectorIcon: "absolute right-3 w-unit-4 h-unit-4",
26
28
  spinner: "absolute right-3",
27
- value: ["font-normal", "w-full", "text-left"],
29
+ value: [
30
+ "font-normal",
31
+ "w-full",
32
+ "text-left",
33
+ "opacity-70",
34
+ "group-data-[has-value=true]:opacity-100"
35
+ ],
28
36
  listboxWrapper: "scroll-py-6 max-h-64 w-full",
29
37
  listbox: "",
30
38
  popoverContent: "w-full p-1 overflow-hidden",
31
- helperWrapper: "flex absolute -bottom-[calc(theme(fontSize.tiny)*1.5)] flex-col gap-1.5 px-1",
39
+ helperWrapper: "p-1 flex relative flex-col gap-1.5",
32
40
  description: "text-tiny text-foreground-400",
33
41
  errorMessage: "text-tiny text-danger"
34
42
  },
@@ -39,7 +47,9 @@ var select = tv({
39
47
  "bg-default-100",
40
48
  "data-[hover=true]:bg-default-200",
41
49
  "group-data-[focus=true]:bg-default-100"
42
- ]
50
+ ],
51
+ label: "text-default-foreground",
52
+ value: "placeholder:text-default-foreground"
43
53
  },
44
54
  faded: {
45
55
  trigger: [
@@ -47,16 +57,21 @@ var select = tv({
47
57
  "border-medium",
48
58
  "border-default-200",
49
59
  "data-[hover=true]:border-default-400"
50
- ]
60
+ ],
61
+ label: "text-default-foreground",
62
+ value: "placeholder:text-default-foreground"
51
63
  },
52
64
  bordered: {
53
65
  trigger: [
54
66
  "border-medium",
55
67
  "border-default-200",
56
68
  "data-[hover=true]:border-default-400",
57
- "data-[open=true]:border-foreground",
58
- "data-[focus=true]:border-foreground"
59
- ]
69
+ "data-[open=true]:border-default-foreground",
70
+ "data-[focus=true]:border-default-foreground",
71
+ "data-[focus=true]:border-default-foreground"
72
+ ],
73
+ label: "text-foreground",
74
+ value: "placeholder:text-foreground"
60
75
  },
61
76
  underlined: {
62
77
  trigger: [
@@ -73,7 +88,7 @@ var select = tv({
73
88
  "after:content-['']",
74
89
  "after:w-0",
75
90
  "after:origin-center",
76
- "after:bg-foreground",
91
+ "after:bg-default-foreground",
77
92
  "after:absolute",
78
93
  "after:left-1/2",
79
94
  "after:-translate-x-1/2",
@@ -81,12 +96,14 @@ var select = tv({
81
96
  "after:h-[2px]",
82
97
  "data-[open=true]:after:w-full",
83
98
  "data-[focus=true]:after:w-full"
84
- ]
99
+ ],
100
+ label: "text-foreground",
101
+ value: "placeholder:text-foreground"
85
102
  }
86
103
  },
87
104
  color: {
88
105
  default: {
89
- value: ["text-foreground-500", "group-data-[has-value=true]:text-foreground"]
106
+ label: "group-data-[filled=true]:opacity-80"
90
107
  },
91
108
  primary: {},
92
109
  secondary: {},
@@ -447,13 +464,6 @@ var select = tv({
447
464
  ]
448
465
  }
449
466
  },
450
- {
451
- labelPlacement: "inside",
452
- color: "default",
453
- class: {
454
- label: "group-data-[filled=true]:text-foreground-600"
455
- }
456
- },
457
467
  {
458
468
  isInvalid: true,
459
469
  variant: "flat",
@@ -512,15 +522,7 @@ var select = tv({
512
522
  isMultiline: false,
513
523
  class: {
514
524
  base: "group relative justify-end",
515
- label: [
516
- "pb-0",
517
- "z-20",
518
- "opacity-60",
519
- "top-1/2",
520
- "-translate-y-1/2",
521
- "group-data-[filled=true]:opacity-100",
522
- "group-data-[filled=true]:left-0"
523
- ]
525
+ label: ["pb-0", "z-20", "top-1/2", "-translate-y-1/2", "group-data-[filled=true]:left-0"]
524
526
  }
525
527
  },
526
528
  {
@@ -533,8 +535,7 @@ var select = tv({
533
535
  labelPlacement: "inside",
534
536
  size: ["sm", "md"],
535
537
  class: {
536
- label: "text-small",
537
- input: "pt-4"
538
+ label: "text-small"
538
539
  }
539
540
  },
540
541
  {
@@ -543,7 +544,7 @@ var select = tv({
543
544
  size: "sm",
544
545
  class: {
545
546
  label: ["group-data-[filled=true]:-translate-y-[calc(50%_+_theme(fontSize.tiny)/2_-_8px)]"],
546
- innerWrapper: "pt-4"
547
+ innerWrapper: "group-data-[has-label=true]:pt-4"
547
548
  }
548
549
  },
549
550
  {
@@ -554,7 +555,7 @@ var select = tv({
554
555
  label: [
555
556
  "group-data-[filled=true]:-translate-y-[calc(50%_+_theme(fontSize.small)/2_-_6px)]"
556
557
  ],
557
- innerWrapper: "pt-4"
558
+ innerWrapper: "group-data-[has-label=true]:pt-4"
558
559
  }
559
560
  },
560
561
  {
@@ -566,7 +567,7 @@ var select = tv({
566
567
  "text-medium",
567
568
  "group-data-[filled=true]:-translate-y-[calc(50%_+_theme(fontSize.small)/2_-_8px)]"
568
569
  ],
569
- innerWrapper: "pt-5"
570
+ innerWrapper: "group-data-[has-label=true]:pt-5"
570
571
  }
571
572
  },
572
573
  {
@@ -673,6 +674,12 @@ var select = tv({
673
674
  ],
674
675
  base: "data-[has-label=true]:mt-[calc(theme(fontSize.small)_+_12px)]"
675
676
  }
677
+ },
678
+ {
679
+ labelPlacement: ["inside", "outside"],
680
+ class: {
681
+ label: ["pe-2", "max-w-full", "text-ellipsis", "overflow-hidden"]
682
+ }
676
683
  }
677
684
  ]
678
685
  });