winduum 0.2.0-beta.1 → 0.2.0-beta.10

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.
Files changed (51) hide show
  1. package/dist/main-rgb.css +1 -0
  2. package/dist/main.css +5 -1
  3. package/dist/tailwind.css +5 -1
  4. package/package.json +14 -8
  5. package/src/base/default.css +2 -2
  6. package/src/base/reset.css +0 -5
  7. package/src/base/tailwind/utilities.css +1 -1
  8. package/src/base/theme/dark-rgb.css +1 -2
  9. package/src/base/theme/dark.css +2 -0
  10. package/src/base/theme/default-rgb.css +0 -1
  11. package/src/base/theme/default.css +4 -1
  12. package/src/libraries/dialog-rgb.css +3 -0
  13. package/src/libraries/dialog.css +1 -1
  14. package/src/libraries/ripple-rgb.css +3 -0
  15. package/src/libraries/ripple.css +1 -1
  16. package/src/main-rgb.css +11 -1
  17. package/src/ui/badge/bordered-rgb.css +3 -0
  18. package/src/ui/badge/bordered.css +1 -1
  19. package/src/ui/badge/default-rgb.css +9 -0
  20. package/src/ui/badge/default.css +1 -1
  21. package/src/ui/badge/index.css +0 -1
  22. package/src/ui/btn/bordered.css +2 -2
  23. package/src/ui/btn/default.css +34 -24
  24. package/src/ui/btn/gradient-bordered-rgb.css +13 -0
  25. package/src/ui/btn/gradient-bordered.css +5 -4
  26. package/src/ui/btn/hover-fill.css +4 -4
  27. package/src/ui/btn/index.css +0 -2
  28. package/src/ui/btn/loading.css +3 -0
  29. package/src/ui/btn/muted.css +1 -1
  30. package/src/ui/btn/raised.css +1 -1
  31. package/src/ui/check-rgb.css +31 -0
  32. package/src/ui/control/default-rgb.css +7 -1
  33. package/src/ui/control/default.css +3 -3
  34. package/src/ui/control/index.css +0 -1
  35. package/src/ui/control/select.css +4 -3
  36. package/src/ui/group.css +34 -0
  37. package/src/ui/index.css +2 -1
  38. package/src/ui/link/default.css +10 -7
  39. package/src/ui/link/underlined.css +4 -1
  40. package/src/ui/notice-rgb.css +6 -0
  41. package/src/ui/progress/default-rgb.css +3 -0
  42. package/src/ui/switch-rgb.css +11 -0
  43. package/src/ui/text-rgb.css +13 -0
  44. package/src/ui/text.css +2 -2
  45. package/utils/tailwind.cjs +16 -5
  46. package/utils/tailwind.js +16 -5
  47. package/src/ui/badge/group.css +0 -16
  48. package/src/ui/btn/ghosted.css +0 -4
  49. package/src/ui/btn/group.css +0 -18
  50. package/src/ui/control/group.css +0 -22
  51. /package/src/ui/{input.css → control.css} +0 -0
@@ -1,5 +1,5 @@
1
1
  .ui-badge {
2
- --color-current: var(--color-light);
2
+ --color-current: var(--color-accent-current);
3
3
  --ui-badge-width: max-content;
4
4
  --ui-badge-height: 1.5rem;
5
5
  --ui-badge-py: 0;
@@ -5,4 +5,3 @@
5
5
  @import "muted.css";
6
6
  @import "square.css";
7
7
  @import "circle.css";
8
- @import "group.css";
@@ -1,6 +1,6 @@
1
1
  .ui-btn:where(.bordered) {
2
- --ui-btn-border-width: 2px;
3
- --ui-btn-border-opacity: calc(var(--tw-border-opacity, 1) * 100%);
2
+ --ui-btn-border-width: 1px;
3
+ --ui-btn-border-opacity: calc(var(--tw-border-opacity, 0.3) * 100%);
4
4
 
5
5
  border: var(--ui-btn-border-width) solid color-mix(in sRGB, var(--color-accent) var(--ui-btn-border-opacity), transparent);
6
6
  padding-left: calc(var(--ui-btn-px) - var(--ui-btn-border-width));
@@ -1,5 +1,5 @@
1
1
  .ui-btn {
2
- --color-current: var(--color-light);
2
+ --color-current: var(--color-accent-current);
3
3
  --ui-btn-width: max-content;
4
4
  --ui-btn-height: 2.25rem;
5
5
  --ui-btn-gap: 0.375rem;
@@ -7,7 +7,7 @@
7
7
  --ui-btn-px: 0.75rem;
8
8
  --ui-btn-border-radius: var(--rounded);
9
9
  --ui-btn-font-size: 0.875rem;
10
- --ui-btn-font-weight: var(--font-semibold);
10
+ --ui-btn-font-weight: var(--font-medium);
11
11
  --ui-btn-letter-spacing: 0;
12
12
  --ui-btn-bg: color-mix(in sRGB, var(--color-accent) var(--ui-btn-bg-opacity), var(--ui-btn-bg-mix));
13
13
  --ui-btn-bg-mix: transparent;
@@ -15,19 +15,16 @@
15
15
  --ui-btn-color: color-mix(in sRGB, var(--color-current) var(--ui-btn-color-opacity), transparent);
16
16
  --ui-btn-color-opacity: calc(var(--tw-text-opacity, 1) * 100%);
17
17
  --ui-btn-outline-width: 2px;
18
- --ui-btn-outline-offset: 2px;
19
- --ui-btn-outline-opacity: 50%;
20
- --ui-btn-hover-mix: black;
21
- --ui-btn-hover-opacity: 80%;
22
18
  --ui-btn-hover-color: var(--color-current);
23
- --ui-btn-active-mix: black;
24
- --ui-btn-active-opacity: 90%;
19
+ --ui-btn-hover-bg-mix: black;
20
+ --ui-btn-hover-bg-opacity: 80%;
25
21
  --ui-btn-active-color: var(--color-current);
26
- --ui-btn-focus-mix: transparent;
27
- --ui-btn-focus-opacity: 50%;
22
+ --ui-btn-active-bg-mix: black;
23
+ --ui-btn-active-bg-opacity: 90%;
24
+ --ui-btn-focus-outline-color-mix: transparent;
25
+ --ui-btn-focus-outline-color-opacity: 50%;
26
+ --ui-btn-focus-outline-offset: 2px;
28
27
  --ui-btn-disabled-opacity: 70%;
29
- --ui-btn-loading-width: 1rem;
30
- --ui-btn-loading-border-width: 2px;
31
28
 
32
29
  max-width: var(--ui-btn-width);
33
30
  width: var(--ui-btn-width);
@@ -53,18 +50,31 @@
53
50
  var(--transition-background),
54
51
  var(--transition-color),
55
52
  outline-color var(--transition-duration),
56
- outline-offset var(--transition-duration);
53
+ outline-offset 100ms cubic-bezier(0.4, 0, 0.2, 1);
57
54
  gap: var(--ui-btn-gap);
58
55
  outline: var(--ui-btn-outline-width) solid transparent;
59
56
  outline-offset: 0;
60
57
 
58
+ &:where([class*="accent-base"]) {
59
+ --ui-btn-hover-bg-mix: var(--color-base-mix);
60
+ }
61
+
62
+ &:where([class*="accent-body"]) {
63
+ --ui-btn-hover-bg-mix: var(--color-body-mix);
64
+ }
65
+
66
+ & :where(svg) {
67
+ font-size: calc(var(--ui-btn-font-size) + 0.125rem);
68
+ }
69
+
61
70
  &:where(.bordered, .muted, .ghosted) {
62
- --ui-btn-hover-mix: transparent;
63
- --ui-btn-hover-opacity: 10%;
64
- --ui-btn-active-mix: transparent;
65
- --ui-btn-active-opacity: 20%;
66
- --color-current: var(--color-accent);
71
+ --ui-btn-hover-bg-mix: transparent;
72
+ --ui-btn-hover-bg-opacity: 10%;
73
+ --ui-btn-active-bg-mix: transparent;
74
+ --ui-btn-active-bg-opacity: 20%;
75
+ --ui-btn-focus-outline-offset: -2px;
67
76
  --ui-btn-bg-opacity: 0%;
77
+ --color-current: var(--color-accent);
68
78
  }
69
79
 
70
80
  &:is([href], button, [role="button"]) {
@@ -77,20 +87,20 @@
77
87
  &:hover {
78
88
  @media (hover: hover) and (pointer: fine) {
79
89
  --ui-btn-color: var(--ui-btn-hover-color);
80
- --ui-btn-bg-mix: var(--ui-btn-hover-mix);
81
- --ui-btn-bg-opacity: var(--ui-btn-hover-opacity);
90
+ --ui-btn-bg-mix: var(--ui-btn-hover-bg-mix);
91
+ --ui-btn-bg-opacity: var(--ui-btn-hover-bg-opacity);
82
92
  }
83
93
  }
84
94
 
85
95
  &:focus {
86
- outline-color: color-mix(in sRGB, var(--color-accent) var(--ui-btn-focus-opacity), var(--ui-btn-focus-mix));
87
- outline-offset: var(--ui-btn-outline-offset);
96
+ outline-color: color-mix(in sRGB, var(--color-accent) var(--ui-btn-focus-outline-color-opacity), var(--ui-btn-focus-outline-color-mix));
97
+ outline-offset: var(--ui-btn-focus-outline-offset);
88
98
  }
89
99
 
90
100
  &:is(:active, .active) {
91
101
  --ui-btn-color: var(--ui-btn-active-color);
92
- --ui-btn-bg-mix: var(--ui-btn-active-mix);
93
- --ui-btn-bg-opacity: var(--ui-btn-active-opacity);
102
+ --ui-btn-bg-mix: var(--ui-btn-active-bg-mix);
103
+ --ui-btn-bg-opacity: var(--ui-btn-active-bg-opacity);
94
104
  }
95
105
  }
96
106
  }
@@ -0,0 +1,13 @@
1
+ :is(.ui-btn.gradient-bordered) {
2
+ --color-current-rgb: var(--color-base-rgb);
3
+
4
+ &::before {
5
+ background-color: rgb(var(--color-body-rgb) / calc(100% - var(--ui-btn-bg-opacity)));
6
+ }
7
+
8
+ &:where(.hover-fill) {
9
+ &::before {
10
+ background-color: rgb(var(--color-body-rgb) / var(--ui-btn-bg-opacity));
11
+ }
12
+ }
13
+ }
@@ -1,9 +1,10 @@
1
1
  :is(.ui-btn.gradient-bordered) {
2
2
  --ui-btn-border-width: 2px;
3
- --ui-btn-hover-mix: transparent;
4
- --ui-btn-hover-opacity: 10%;
5
- --ui-btn-active-mix: transparent;
6
- --ui-btn-active-opacity: 20%;
3
+ --ui-btn-hover-bg-mix: transparent;
4
+ --ui-btn-hover-bg-opacity: 10%;
5
+ --ui-btn-active-bg-mix: transparent;
6
+ --ui-btn-active-bg-opacity: 20%;
7
+ --ui-btn-focus-outline-offset: 0;
7
8
  --ui-btn-bg-opacity: 0%;
8
9
  --color-current: var(--color-base);
9
10
 
@@ -1,8 +1,8 @@
1
1
  .ui-btn:where(.hover-fill) {
2
- --ui-btn-hover-mix: black;
3
- --ui-btn-hover-opacity: 100%;
4
- --ui-btn-active-mix: black;
5
- --ui-btn-active-opacity: 90%;
2
+ --ui-btn-hover-bg-mix: black;
3
+ --ui-btn-hover-bg-opacity: 100%;
4
+ --ui-btn-active-bg-mix: black;
5
+ --ui-btn-active-bg-opacity: 90%;
6
6
  --ui-btn-hover-color: var(--color-light);
7
7
  --ui-btn-active-color: var(--color-light);
8
8
  }
@@ -7,9 +7,7 @@
7
7
  @import "hover-fill.css";
8
8
  @import "gradient.css";
9
9
  @import "gradient-bordered.css";
10
- @import "ghosted.css";
11
10
  @import "muted.css";
12
11
  @import "raised.css";
13
12
  @import "square.css";
14
13
  @import "circle.css";
15
- @import "group.css";
@@ -1,4 +1,7 @@
1
1
  .ui-btn:is(.loading) {
2
+ --ui-btn-loading-width: 1rem;
3
+ --ui-btn-loading-border-width: 2px;
4
+
2
5
  pointer-events: none;
3
6
  color: transparent;
4
7
 
@@ -1,4 +1,4 @@
1
1
  .ui-btn:where(.muted) {
2
- --ui-btn-hover-opacity: 30%;
2
+ --ui-btn-hover-bg-opacity: 30%;
3
3
  --ui-btn-bg-opacity: 10%;
4
4
  }
@@ -1,6 +1,6 @@
1
1
  .ui-btn:where(.raised) {
2
2
  --ui-btn-border-width: 2px;
3
- --ui-btn-border-opacity: calc(var(--tw-border-opacity, 0.5) * 100%);
3
+ --ui-btn-border-opacity: calc(var(--tw-border-opacity, 0.85) * 100%);
4
4
 
5
5
  border: var(--ui-btn-border-width) solid color-mix(in sRGB, var(--color-accent) var(--ui-btn-border-opacity), var(--color-current));
6
6
  padding-left: calc(var(--ui-btn-px) - var(--ui-btn-border-width));
@@ -0,0 +1,31 @@
1
+ .ui-check {
2
+ --ui-check-bg: var(--color-body-rgb);
3
+ --ui-check-border-color: var(--color-current-rgb);
4
+ --ui-check-checked-bg: var(--color-accent-rgb);
5
+
6
+ & :where(input) {
7
+ background-color: rgb(var(--ui-check-bg) / var(--ui-check-bg-opacity));
8
+ border: var(--ui-check-border-width) solid rgb(var(--ui-check-border-color) / var(--ui-check-border-opacity));
9
+
10
+ &:not(:disabled) {
11
+ &:focus {
12
+ outline-color: rgb(var(--ui-check-checked-bg) / var(--ui-check-outline-opacity));
13
+ }
14
+ }
15
+
16
+ &:disabled {
17
+ --ui-check-bg: var(--color-current-rgb);
18
+ }
19
+
20
+ &:checked {
21
+ background-color: rgb(var(--ui-check-checked-bg));
22
+ }
23
+ }
24
+
25
+ &.invalid, .validated & :where(input):invalid {
26
+ --color-current-rgb: var(--color-error-rgb);
27
+ --ui-check-bg: var(--color-error-rgb);
28
+ --ui-check-border-color: var(--color-error-rgb);
29
+ --ui-check-checked-bg: var(--color-error-rgb);
30
+ }
31
+ }
@@ -6,6 +6,12 @@
6
6
 
7
7
  &:focus {
8
8
  --ui-control-border-color: var(--color-accent-rgb);
9
+
10
+ outline-color: rgb(var(--color-accent-rgb) / var(--ui-control-outline-opacity));
11
+ }
12
+
13
+ &:disabled {
14
+ background-color: rgb(var(--color-base-rgb) / var(--ui-control-disabled-opacity));
9
15
  }
10
16
  }
11
17
 
@@ -13,6 +19,6 @@
13
19
  --ui-control-border-color: var(--color-error-rgb);
14
20
  --color-accent-rgb: var(--color-error-rgb);
15
21
 
16
- background-color: rgb(var(--color-error-rgb) / var(--ui-control-error-opacity));
22
+ background-color: rgb(var(--color-error-rgb) / var(--ui-control-invalid-bg-opacity));
17
23
  }
18
24
  }
@@ -18,11 +18,11 @@
18
18
  --ui-control-border-mix: transparent;
19
19
  --ui-control-border-opacity: 15%;
20
20
  --ui-control-border-radius: var(--rounded);
21
- --ui-control-outline-width: 2px;
21
+ --ui-control-outline-width: 3px;
22
22
  --ui-control-outline-offset: 0;
23
23
  --ui-control-outline-opacity: 20%;
24
24
  --ui-control-disabled-opacity: 5%;
25
- --ui-control-error-opacity: 10%;
25
+ --ui-control-invalid-bg-opacity: 10%;
26
26
 
27
27
  display: grid;
28
28
  grid-template-areas: "input";
@@ -89,6 +89,6 @@
89
89
  --ui-control-color: var(--color-error);
90
90
  --color-accent: var(--color-error);
91
91
 
92
- background-color: color-mix(in sRGB, var(--color-error) var(--ui-control-error-opacity), var(--ui-control-bg));
92
+ background-color: color-mix(in sRGB, var(--color-error) var(--ui-control-invalid-bg-opacity), var(--ui-control-bg));
93
93
  }
94
94
  }
@@ -3,4 +3,3 @@
3
3
  @import "icon.css";
4
4
  @import "floating.css";
5
5
  @import "floating-focus.css";
6
- @import "group.css";
@@ -1,8 +1,11 @@
1
1
  .ui-control:has(select) {
2
2
  --ui-control-icon-select-font-size: 1.5rem;
3
- --ui-control-icon-count-r: 2;
4
3
  --ui-control-pr: var(--ui-control-icon-offset-r);
5
4
 
5
+ &:has(.icon-r) {
6
+ --ui-control-icon-count-r: 2;
7
+ }
8
+
6
9
  & :where([class^="icon-"]) {
7
10
  margin-right: calc(var(--ui-control-icon-font-size) + var(--ui-control-icon-gap));
8
11
  }
@@ -18,8 +21,6 @@
18
21
  right: var(--ui-control-icon-inset-x);
19
22
  top: calc(var(--ui-control-height) / 2);
20
23
  margin-top: calc(var(--ui-control-icon-select-font-size) / 2 * -1);
21
- will-change: transform;
22
- transition: transform 200ms;
23
24
  mask: var(--icon-angle-down);
24
25
  pointer-events: none;
25
26
  grid-area: input;
@@ -0,0 +1,34 @@
1
+ .ui-group {
2
+ display: flex;
3
+ flex-wrap: wrap;
4
+
5
+ &:has(.ui-control) {
6
+ :where(.ui-btn) {
7
+ --ui-btn-border-width: 1px;
8
+ --ui-btn-border-opacity: 15%;
9
+ --ui-btn-height: auto;
10
+
11
+ min-width: 3rem;
12
+ }
13
+ }
14
+
15
+ :where(.ui-btn) {
16
+ --ui-btn-focus-outline-offset: 0;
17
+ }
18
+
19
+ & > * {
20
+ &:not(:first-child) {
21
+ border-top-left-radius: 0;
22
+ border-bottom-left-radius: 0;
23
+
24
+ &, & :where(input, select) {
25
+ border-left: 0;
26
+ }
27
+ }
28
+
29
+ &:not(:last-child) {
30
+ border-top-right-radius: 0;
31
+ border-bottom-right-radius: 0;
32
+ }
33
+ }
34
+ }
package/src/ui/index.css CHANGED
@@ -1,10 +1,11 @@
1
1
  @import "badge.css";
2
2
  @import "btn/index.css";
3
3
  @import "check.css";
4
+ @import "control.css";
5
+ @import "group.css";
4
6
  @import "heading.css";
5
7
  @import "image.css";
6
8
  @import "info.css";
7
- @import "input.css";
8
9
  @import "label.css";
9
10
  @import "link.css";
10
11
  @import "notice.css";
@@ -1,13 +1,16 @@
1
1
  .ui-link {
2
+ --color-accent: var(--color-current);
2
3
  --ui-link-font-size: 0.875rem;
3
- --ui-link-font-weight: var(--font-semibold);
4
+ --ui-link-font-weight: var(--font-medium);
5
+ --ui-link-letter-spacing: 0;
4
6
  --ui-link-hover-color: var(--color-accent);
5
- --ui-link-hover-opacity: 1;
6
- --ui-link-active-opacity: 0.8;
7
+ --ui-link-hover-opacity: 0.75;
8
+ --ui-link-active-opacity: 0.75;
7
9
  --ui-link-gap: 0.5rem;
8
10
 
9
11
  font-size: var(--ui-link-font-size);
10
12
  font-weight: var(--ui-link-font-weight);
13
+ letter-spacing: var(--ui-link-letter-spacing);
11
14
  transition: var(--transition-opacity), var(--transition-color);
12
15
  display: inline-flex;
13
16
  align-items: center;
@@ -22,12 +25,12 @@
22
25
  }
23
26
  }
24
27
 
25
- &:active {
26
- opacity: var(--ui-link-active-opacity);
27
- }
28
-
29
28
  &:focus-visible {
30
29
  color: var(--ui-link-hover-color);
31
30
  }
31
+
32
+ &:active {
33
+ opacity: var(--ui-link-active-opacity);
34
+ }
32
35
  }
33
36
  }
@@ -1,4 +1,5 @@
1
- .ui-link:where(.underlined) {
1
+ .ui-link:where([class*="underlined"]) {
2
+ --ui-link-hover-opacity: 1;
2
3
  --ui-link-underline-color: currentColor;
3
4
  --ui-link-underline-width: 1px;
4
5
  --ui-link-underline-opacity: 0;
@@ -8,6 +9,8 @@
8
9
  --ui-link-underline-opacity: 1;
9
10
  --ui-link-underline-transform: none;
10
11
  --ui-link-underline-color: var(--color-accent);
12
+ --ui-link-hover-opacity: 0.75;
13
+ --ui-link-active-opacity: 0.75;
11
14
  }
12
15
 
13
16
  &::after, & span::after {
@@ -0,0 +1,6 @@
1
+ .ui-notice {
2
+ --ui-notice-bg: var(--color-accent-rgb);
3
+
4
+ background-color: rgb(var(--ui-notice-bg) / 10%);
5
+ outline: var(--ui-notice-outline-width) solid rgb(var(--ui-notice-bg) / var(--ui-notice-outline-opacity));
6
+ }
@@ -0,0 +1,3 @@
1
+ .ui-progress {
2
+ --ui-progress-bg: rgb(var(--color-accent-rgb) / var(--ui-progress-bg-opacity));
3
+ }
@@ -0,0 +1,11 @@
1
+ .ui-switch {
2
+ & :where(input) {
3
+ &:focus {
4
+ outline-color: rgb(var(--color-current-rgb) / var(--ui-switch-outline-opacity));
5
+ }
6
+
7
+ &:checked {
8
+ --color-current-rgb: var(--color-accent-rgb);
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,13 @@
1
+ .ui-text {
2
+ & :where(table) {
3
+ & :where(thead) {
4
+ border-bottom: 1px solid rgb(var(--color-current-rgb) / 7.5%);
5
+ }
6
+
7
+ & :where(tbody tr) {
8
+ &:nth-of-type(even) {
9
+ background-color: rgb(var(--color-current-rgb) / 5%);
10
+ }
11
+ }
12
+ }
13
+ }
package/src/ui/text.css CHANGED
@@ -117,12 +117,12 @@
117
117
 
118
118
  & :where(thead) {
119
119
  font-weight: var(--ui-text-weight-bold);
120
- border-bottom: 1px solid color-mix(in sRGB, var(--color-current) 0.75%, transparent);
120
+ border-bottom: 1px solid color-mix(in sRGB, var(--color-current) 7.5%, transparent);
121
121
  }
122
122
 
123
123
  & :where(tbody tr) {
124
124
  &:nth-of-type(even) {
125
- background-color: color-mix(in sRGB, var(--color-current) 0.5%, transparent);
125
+ background-color: color-mix(in sRGB, var(--color-current) 5%, transparent);
126
126
  }
127
127
  }
128
128
  }
@@ -8,9 +8,10 @@ var lodash = require('lodash');
8
8
 
9
9
  const defaultConfig = {
10
10
  colors: [
11
- 'light', 'dark', 'primary', 'secondary',
11
+ 'light', 'dark', 'primary',
12
12
  'warning', 'error', 'info', 'success', 'accent', 'current',
13
- 'base', 'body', 'body-primary', 'body-secondary', 'body-tertiary'
13
+ 'base', 'base-primary', 'base-secondary', 'base-tertiary',
14
+ 'body', 'body-primary', 'body-secondary', 'body-tertiary'
14
15
  ],
15
16
  fontFamily: ['primary', 'secondary'],
16
17
  fontWeight: ['light', 'normal', 'medium', 'semibold', 'bold', 'extrabold'],
@@ -58,12 +59,20 @@ const getTailwindColors = (twColors) => {
58
59
 
59
60
  const tailwindColors = (colors = []) => {
60
61
  colors.forEach(name => {
61
- colors[name] = ({ opacityValue }) => {
62
+ colors[name + '-rgb'] = ({ opacityValue }) => {
62
63
  if (opacityValue === undefined) {
63
64
  return `rgb(var(--color-${name}-rgb))`
64
65
  }
65
66
  return `rgb(var(--color-${name}-rgb) / ${opacityValue})`
66
67
  };
68
+
69
+ colors[name] = ({ opacityValue }) => {
70
+ if (opacityValue === undefined) {
71
+ return `var(--color-${name})`
72
+ }
73
+
74
+ return `color-mix(in sRGB, var(--color-${name}) calc(${opacityValue} * 100%), transparent)`
75
+ };
67
76
  });
68
77
 
69
78
  return colors
@@ -78,12 +87,14 @@ const tailwindColorsAccent = (colors = []) => {
78
87
 
79
88
  result[`.accent-${color[0]}`] = {
80
89
  '--color-accent-rgb': `${rgb[0]} ${rgb[1]} ${rgb[2]}`,
81
- '--color-accent': `rgb(${rgb[0]} ${rgb[1]} ${rgb[2]})`
90
+ '--color-accent': `rgb(${rgb[0]} ${rgb[1]} ${rgb[2]})`,
91
+ '--color-accent-current': `var(--color-${color}-current, var(--color-light))`
82
92
  };
83
93
  } else {
84
94
  result[`.accent-${color}`] = {
85
95
  '--color-accent-rgb': `var(--color-${color}-rgb)`,
86
- '--color-accent': `var(--color-${color})`
96
+ '--color-accent': `var(--color-${color})`,
97
+ '--color-accent-current': `var(--color-${color}-current, var(--color-light))`
87
98
  };
88
99
  }
89
100
  });
package/utils/tailwind.js CHANGED
@@ -4,9 +4,10 @@ import lodash from 'lodash'
4
4
 
5
5
  export const defaultConfig = {
6
6
  colors: [
7
- 'light', 'dark', 'primary', 'secondary',
7
+ 'light', 'dark', 'primary',
8
8
  'warning', 'error', 'info', 'success', 'accent', 'current',
9
- 'base', 'body', 'body-primary', 'body-secondary', 'body-tertiary'
9
+ 'base', 'base-primary', 'base-secondary', 'base-tertiary',
10
+ 'body', 'body-primary', 'body-secondary', 'body-tertiary'
10
11
  ],
11
12
  fontFamily: ['primary', 'secondary'],
12
13
  fontWeight: ['light', 'normal', 'medium', 'semibold', 'bold', 'extrabold'],
@@ -54,12 +55,20 @@ export const getTailwindColors = (twColors) => {
54
55
 
55
56
  export const tailwindColors = (colors = []) => {
56
57
  colors.forEach(name => {
57
- colors[name] = ({ opacityValue }) => {
58
+ colors[name + '-rgb'] = ({ opacityValue }) => {
58
59
  if (opacityValue === undefined) {
59
60
  return `rgb(var(--color-${name}-rgb))`
60
61
  }
61
62
  return `rgb(var(--color-${name}-rgb) / ${opacityValue})`
62
63
  }
64
+
65
+ colors[name] = ({ opacityValue }) => {
66
+ if (opacityValue === undefined) {
67
+ return `var(--color-${name})`
68
+ }
69
+
70
+ return `color-mix(in sRGB, var(--color-${name}) calc(${opacityValue} * 100%), transparent)`
71
+ }
63
72
  })
64
73
 
65
74
  return colors
@@ -74,12 +83,14 @@ export const tailwindColorsAccent = (colors = []) => {
74
83
 
75
84
  result[`.accent-${color[0]}`] = {
76
85
  '--color-accent-rgb': `${rgb[0]} ${rgb[1]} ${rgb[2]}`,
77
- '--color-accent': `rgb(${rgb[0]} ${rgb[1]} ${rgb[2]})`
86
+ '--color-accent': `rgb(${rgb[0]} ${rgb[1]} ${rgb[2]})`,
87
+ '--color-accent-current': `var(--color-${color}-current, var(--color-light))`
78
88
  }
79
89
  } else {
80
90
  result[`.accent-${color}`] = {
81
91
  '--color-accent-rgb': `var(--color-${color}-rgb)`,
82
- '--color-accent': `var(--color-${color})`
92
+ '--color-accent': `var(--color-${color})`,
93
+ '--color-accent-current': `var(--color-${color}-current, var(--color-light))`
83
94
  }
84
95
  }
85
96
  })
@@ -1,16 +0,0 @@
1
- .ui-badge-group {
2
- display: flex;
3
-
4
- & :where(.ui-badge) {
5
- &:not(:first-child) {
6
- border-top-left-radius: 0;
7
- border-bottom-left-radius: 0;
8
- border-left: 0;
9
- }
10
-
11
- &:not(:last-child) {
12
- border-top-right-radius: 0;
13
- border-bottom-right-radius: 0;
14
- }
15
- }
16
- }
@@ -1,4 +0,0 @@
1
- .ui-btn:where(.ghosted) {
2
- --ui-btn-outline-width: 2px;
3
- --ui-btn-outline-offset: -2px;
4
- }
@@ -1,18 +0,0 @@
1
- .ui-btn-group {
2
- display: flex;
3
-
4
- & :where(.ui-btn) {
5
- --ui-btn-outline-offset: 0;
6
-
7
- &:not(:first-child) {
8
- border-top-left-radius: 0;
9
- border-bottom-left-radius: 0;
10
- border-left: 0;
11
- }
12
-
13
- &:not(:last-child) {
14
- border-top-right-radius: 0;
15
- border-bottom-right-radius: 0;
16
- }
17
- }
18
- }
@@ -1,22 +0,0 @@
1
- .ui-control-group {
2
- display: flex;
3
- flex-wrap: wrap;
4
-
5
- & :where(.ui-btn) {
6
- --ui-btn-border-width: 1px;
7
- --ui-btn-height: 3rem;
8
- }
9
-
10
- & > * {
11
- &:not(:first-child) {
12
- border-left: 0;
13
- border-top-left-radius: 0;
14
- border-bottom-left-radius: 0;
15
- }
16
-
17
- &:not(:last-child) {
18
- border-top-right-radius: 0;
19
- border-bottom-right-radius: 0;
20
- }
21
- }
22
- }
File without changes