winduum 0.6.0 → 0.7.0-next.1
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/main.css +1 -1
- package/dist/tailwind.css +1 -1
- package/package.json +1 -1
- package/plugin/tailwind.cjs +198 -163
- package/plugin/tailwind.d.ts +19 -0
- package/plugin/tailwind.js +30 -184
- package/plugin/utilities/color.js +69 -0
- package/plugin/utilities/common.js +80 -0
- package/plugin/utilities/divide-gap.js +20 -0
- package/plugin/utilities/dot.js +11 -0
- package/plugin/utilities/flex.js +12 -0
- package/src/base/defaults.css +1 -1
- package/src/base/theme/default.css +0 -2
- package/src/components/compare.css +10 -11
- package/src/components/dialog/content.css +1 -1
- package/src/components/dialog/default.css +9 -7
- package/src/components/field.css +1 -1
- package/src/ui/badge/bordered.css +4 -3
- package/src/ui/badge/default.css +7 -11
- package/src/ui/badge/muted.css +2 -2
- package/src/ui/btn/bordered.css +6 -5
- package/src/ui/btn/default.css +17 -11
- package/src/ui/btn/ghosted.css +4 -4
- package/src/ui/btn/gradient-bordered.css +9 -7
- package/src/ui/btn/gradient.css +3 -1
- package/src/ui/btn/hover-fill.css +4 -4
- package/src/ui/btn/interactive.css +17 -9
- package/src/ui/btn/loading.css +1 -1
- package/src/ui/btn/muted.css +4 -4
- package/src/ui/btn/raised.css +6 -10
- package/src/ui/check/default.css +38 -24
- package/src/ui/control/default.css +38 -14
- package/src/ui/control/file.css +11 -8
- package/src/ui/control/select.css +2 -2
- package/src/ui/group/default.css +9 -4
- package/src/ui/info.css +1 -1
- package/src/ui/link/interactive.css +5 -7
- package/src/ui/notice/default.css +15 -6
- package/src/ui/progress/default.css +6 -7
- package/src/ui/range/default-props.css +3 -3
- package/src/ui/range/default.css +48 -35
- package/src/ui/range/multi.css +12 -33
- package/src/ui/range/vertical.css +3 -4
- package/src/ui/switch/default.css +32 -24
- package/src/ui/text/default.css +5 -5
- package/src/ui/title/default.css +1 -1
- package/src/utilities/ripple.css +4 -1
- package/src/utilities/skeleton.css +6 -4
- package/tailwind.config.js +5 -1
package/src/ui/btn/bordered.css
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
.ui-btn {
|
|
2
2
|
&:where(.bordered) {
|
|
3
3
|
--tw-border-opacity: 0.3;
|
|
4
|
+
--tw-border-space: var(--space);
|
|
4
5
|
|
|
5
|
-
border: var(--ui-btn-border-width, 1px) solid color-mix(in var(--space), var(--color-accent)
|
|
6
|
+
border: var(--ui-btn-border-width, 1px) solid color-mix(in var(--tw-border-space), var(--color-accent) calc(var(--tw-border-opacity) * 100%), transparent);
|
|
6
7
|
padding-inline: calc(var(--ui-btn-px) - var(--ui-btn-border-width, 1px));
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
&:is(.bordered) {
|
|
10
|
-
--color-current: var(--color-accent);
|
|
11
11
|
--ui-btn-hover-bg-mix: transparent;
|
|
12
|
-
--ui-btn-hover-bg-opacity:
|
|
12
|
+
--ui-btn-hover-bg-opacity: 0.1;
|
|
13
13
|
--ui-btn-active-bg-mix: transparent;
|
|
14
|
-
--ui-btn-active-bg-opacity:
|
|
14
|
+
--ui-btn-active-bg-opacity: 0.2;
|
|
15
15
|
--ui-btn-focus-outline-offset: -2px;
|
|
16
|
-
--
|
|
16
|
+
--color-accent-foreground: var(--color-accent);
|
|
17
|
+
--tw-bg-opacity: 0;
|
|
17
18
|
}
|
|
18
19
|
}
|
package/src/ui/btn/default.css
CHANGED
|
@@ -1,32 +1,30 @@
|
|
|
1
1
|
.ui-btn {
|
|
2
2
|
--tw-bg-opacity: 1;
|
|
3
3
|
--tw-text-opacity: 1;
|
|
4
|
-
--
|
|
5
|
-
--
|
|
6
|
-
--
|
|
7
|
-
--ui-btn-color: color-mix(in var(--space), var(--color-current) var(--ui-btn-color-opacity), transparent);
|
|
8
|
-
--ui-btn-color-opacity: calc(var(--tw-text-opacity) * 100%);
|
|
4
|
+
--tw-bg-mix: transparent;
|
|
5
|
+
--tw-bg-space: var(--space);
|
|
6
|
+
--tw-text-space: var(--space);
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
inline-size: var(--ui-btn-width);
|
|
9
|
+
block-size: var(--ui-btn-height);
|
|
12
10
|
padding: var(--ui-btn-py) var(--ui-btn-px);
|
|
13
11
|
border-radius: var(--ui-btn-border-radius, var(--rounded));
|
|
14
12
|
font-size: var(--ui-btn-font-size, var(--text-sm));
|
|
15
13
|
font-weight: var(--ui-btn-font-weight, var(--font-medium));
|
|
16
14
|
letter-spacing: var(--ui-btn-letter-spacing, 0);
|
|
17
|
-
background-color: var(--ui-btn-bg);
|
|
18
|
-
color: var(--ui-btn-color);
|
|
15
|
+
background-color: color-mix(in var(--tw-bg-space), var(--ui-btn-bg, var(--color-accent)) calc(var(--tw-bg-opacity) * 100%), var(--tw-bg-mix));
|
|
16
|
+
color: color-mix(in var(--tw-text-space), var(--ui-btn-color, var(--color-accent-foreground)) calc(var(--tw-text-opacity) * 100%), transparent);
|
|
19
17
|
gap: var(--ui-btn-gap, var(--spacing-sm));
|
|
20
18
|
outline: var(--ui-btn-outline-width, 2px) solid transparent;
|
|
21
19
|
outline-offset: 0;
|
|
22
20
|
user-select: none;
|
|
23
|
-
overflow:
|
|
21
|
+
overflow: clip;
|
|
24
22
|
display: inline-flex;
|
|
25
23
|
text-align: center;
|
|
26
24
|
align-items: center;
|
|
27
25
|
justify-content: center;
|
|
28
|
-
white-space: nowrap;
|
|
29
26
|
position: relative;
|
|
27
|
+
line-height: 1;
|
|
30
28
|
flex-shrink: 0;
|
|
31
29
|
z-index: 0;
|
|
32
30
|
|
|
@@ -38,6 +36,14 @@
|
|
|
38
36
|
--ui-btn-hover-bg-mix: var(--color-body-foreground);
|
|
39
37
|
}
|
|
40
38
|
|
|
39
|
+
&:where(.accent-light) {
|
|
40
|
+
--ui-btn-hover-bg-mix: var(--color-light-foreground);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&:where(.accent-dark) {
|
|
44
|
+
--ui-btn-hover-bg-mix: var(--color-dark-foreground);
|
|
45
|
+
}
|
|
46
|
+
|
|
41
47
|
&:where(input)::after {
|
|
42
48
|
content: attr(aria-label);
|
|
43
49
|
}
|
package/src/ui/btn/ghosted.css
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
.ui-btn:is(.ghosted) {
|
|
2
2
|
--ui-btn-hover-bg-mix: transparent;
|
|
3
|
-
--ui-btn-hover-bg-opacity:
|
|
3
|
+
--ui-btn-hover-bg-opacity: 0.1;
|
|
4
4
|
--ui-btn-active-bg-mix: transparent;
|
|
5
|
-
--ui-btn-active-bg-opacity:
|
|
5
|
+
--ui-btn-active-bg-opacity: 0.2;
|
|
6
6
|
--ui-btn-focus-outline-offset: -2px;
|
|
7
|
-
--
|
|
8
|
-
--
|
|
7
|
+
--color-accent-foreground: var(--color-accent);
|
|
8
|
+
--tw-bg-opacity: 0%;
|
|
9
9
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
.ui-btn {
|
|
2
2
|
&:where(.gradient-bordered) {
|
|
3
3
|
&::before {
|
|
4
|
+
--tw-bg-space: var(--space);
|
|
5
|
+
|
|
4
6
|
content: "";
|
|
5
7
|
position: absolute;
|
|
6
|
-
background-color: color-mix(in var(--space), var(--color-body) calc(100% - var(--
|
|
8
|
+
background-color: color-mix(in var(--tw-bg-space), var(--color-body) calc(100% - var(--tw-bg-opacity) * 100%), transparent);
|
|
7
9
|
inset: var(--ui-btn-border-width);
|
|
8
10
|
border-radius: calc(var(--ui-btn-border-radius, var(--rounded)) / 1.25);
|
|
9
11
|
z-index: -1;
|
|
@@ -12,7 +14,7 @@
|
|
|
12
14
|
|
|
13
15
|
&:where(.hover-fill) {
|
|
14
16
|
&::before {
|
|
15
|
-
background-color: color-mix(in var(--space), var(--color-body) var(--
|
|
17
|
+
background-color: color-mix(in var(--tw-bg-space), var(--color-body) calc(var(--tw-bg-opacity) * 100%), transparent);
|
|
16
18
|
}
|
|
17
19
|
}
|
|
18
20
|
}
|
|
@@ -20,15 +22,15 @@
|
|
|
20
22
|
&:is(.gradient-bordered) {
|
|
21
23
|
--ui-btn-border-width: 2px;
|
|
22
24
|
--ui-btn-hover-bg-mix: transparent;
|
|
23
|
-
--ui-btn-hover-bg-opacity:
|
|
25
|
+
--ui-btn-hover-bg-opacity: 0.1;
|
|
24
26
|
--ui-btn-active-bg-mix: transparent;
|
|
25
|
-
--ui-btn-active-bg-opacity:
|
|
27
|
+
--ui-btn-active-bg-opacity: 0.2;
|
|
26
28
|
--ui-btn-focus-outline-offset: 0;
|
|
27
|
-
--
|
|
28
|
-
--
|
|
29
|
+
--color-accent-foreground: var(--color-main);
|
|
30
|
+
--tw-bg-opacity: 0;
|
|
29
31
|
|
|
30
32
|
&:is(.hover-fill) {
|
|
31
|
-
--
|
|
33
|
+
--tw-bg-opacity: 1;
|
|
32
34
|
}
|
|
33
35
|
}
|
|
34
36
|
}
|
package/src/ui/btn/gradient.css
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
.ui-btn:where(.gradient) {
|
|
2
2
|
&::before {
|
|
3
|
+
--tw-bg-space: var(--space);
|
|
4
|
+
|
|
3
5
|
content: "";
|
|
4
6
|
position: absolute;
|
|
5
7
|
inset: 0;
|
|
6
|
-
background-color: color-mix(in var(--space), var(--
|
|
8
|
+
background-color: color-mix(in var(--tw-bg-space), var(--tw-bg-mix) calc(100% - var(--tw-bg-opacity) * 100%), transparent);
|
|
7
9
|
z-index: -1;
|
|
8
10
|
transition: var(--transition-background);
|
|
9
11
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
.ui-btn:is(.hover-fill) {
|
|
2
|
-
--ui-btn-hover-bg-mix:
|
|
3
|
-
--ui-btn-hover-bg-opacity:
|
|
4
|
-
--ui-btn-active-bg-mix:
|
|
5
|
-
--ui-btn-active-bg-opacity:
|
|
2
|
+
--ui-btn-hover-bg-mix: var(--color-dark);
|
|
3
|
+
--ui-btn-hover-bg-opacity: 1;
|
|
4
|
+
--ui-btn-active-bg-mix: var(--color-dark);
|
|
5
|
+
--ui-btn-active-bg-opacity: 0.9;
|
|
6
6
|
--ui-btn-hover-color: var(--color-light);
|
|
7
7
|
--ui-btn-active-color: var(--color-light);
|
|
8
8
|
}
|
|
@@ -1,32 +1,40 @@
|
|
|
1
1
|
.ui-btn {
|
|
2
|
+
--tw-outline-space: var(--space);
|
|
3
|
+
--tw-outline-opacity: 0;
|
|
4
|
+
--tw-outline-mix: transparent;
|
|
5
|
+
|
|
2
6
|
transition-property: var(--transition);
|
|
3
7
|
transition-timing-function: var(--ease-in-out);
|
|
4
8
|
transition-duration: var(--duration);
|
|
9
|
+
outline-color: color-mix(in var(--tw-outline-space), var(--color-accent) calc(var(--tw-outline-opacity) * 100%), var(--tw-outline-mix));
|
|
10
|
+
outline-offset: var(--ui-btn-outline-offset, 0);
|
|
5
11
|
|
|
6
12
|
&:is([href], button, [role="button"], input) {
|
|
13
|
+
cursor: var(--cursor, pointer);
|
|
14
|
+
|
|
7
15
|
&:disabled {
|
|
8
|
-
opacity: var(--ui-btn-disabled-opacity, 0.
|
|
16
|
+
opacity: var(--ui-btn-disabled-opacity, 0.75);
|
|
9
17
|
cursor: not-allowed;
|
|
10
18
|
}
|
|
11
19
|
|
|
12
20
|
&:not(:disabled) {
|
|
13
21
|
&:hover {
|
|
14
22
|
@media (hover: hover) and (pointer: fine) {
|
|
15
|
-
--ui-btn-color: var(--ui-btn-hover-color, var(--color-
|
|
16
|
-
--
|
|
17
|
-
--
|
|
23
|
+
--ui-btn-color: var(--ui-btn-hover-color, var(--color-accent-foreground));
|
|
24
|
+
--tw-bg-mix: var(--ui-btn-hover-bg-mix, var(--color-dark));
|
|
25
|
+
--tw-bg-opacity: var(--ui-btn-hover-bg-opacity, 0.8);
|
|
18
26
|
}
|
|
19
27
|
}
|
|
20
28
|
|
|
21
29
|
&:focus {
|
|
22
|
-
|
|
23
|
-
|
|
30
|
+
--ui-btn-outline-offset: var(--ui-btn-focus-outline-offset, 2px);
|
|
31
|
+
--tw-outline-opacity: 0.5;
|
|
24
32
|
}
|
|
25
33
|
|
|
26
34
|
&:is(:active, :checked, .active) {
|
|
27
|
-
--ui-btn-color: var(--ui-btn-active-color, var(--color-
|
|
28
|
-
--
|
|
29
|
-
--
|
|
35
|
+
--ui-btn-color: var(--ui-btn-active-color, var(--color-accent-foreground));
|
|
36
|
+
--tw-bg-mix: var(--ui-btn-active-bg-mix, var(--color-dark));
|
|
37
|
+
--tw-bg-opacity: var(--ui-btn-active-bg-opacity, 0.9);
|
|
30
38
|
}
|
|
31
39
|
}
|
|
32
40
|
}
|
package/src/ui/btn/loading.css
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
width: var(--ui-btn-loading-width);
|
|
15
15
|
height: var(--ui-btn-loading-width);
|
|
16
16
|
content: "";
|
|
17
|
-
border: var(--ui-btn-loading-border-width) solid var(--color-
|
|
17
|
+
border: var(--ui-btn-loading-border-width) solid var(--color-accent-foreground);
|
|
18
18
|
border-right-color: transparent;
|
|
19
19
|
border-radius: 50%;
|
|
20
20
|
animation: spin 0.45s infinite linear;
|
package/src/ui/btn/muted.css
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
.ui-btn:is(.muted) {
|
|
2
|
-
--color-current: var(--color-accent);
|
|
3
2
|
--ui-btn-hover-bg-mix: transparent;
|
|
4
3
|
--ui-btn-active-bg-mix: transparent;
|
|
5
|
-
--ui-btn-active-bg-opacity:
|
|
4
|
+
--ui-btn-active-bg-opacity: 0.2;
|
|
6
5
|
--ui-btn-focus-outline-offset: -2px;
|
|
7
|
-
--ui-btn-hover-bg-opacity:
|
|
8
|
-
--
|
|
6
|
+
--ui-btn-hover-bg-opacity: 0.3;
|
|
7
|
+
--color-accent-foreground: var(--color-accent);
|
|
8
|
+
--tw-bg-opacity: 0.1;
|
|
9
9
|
}
|
package/src/ui/btn/raised.css
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
.ui-btn {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
1
|
+
.ui-btn:where(.raised) {
|
|
2
|
+
--ui-btn-border-width: 2px;
|
|
3
|
+
--tw-border-opacity: 0.85;
|
|
4
|
+
--tw-border-space: var(--space);
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
--ui-btn-border-width: 2px;
|
|
10
|
-
--ui-btn-border-opacity: calc(var(--tw-border-opacity) * 100%);
|
|
11
|
-
}
|
|
6
|
+
border: var(--ui-btn-border-width) solid color-mix(in var(--tw-border-space), var(--color-accent) calc(var(--tw-border-opacity) * 100%), var(--color-accent-foreground));
|
|
7
|
+
padding-inline: calc(var(--ui-btn-px) - var(--ui-btn-border-width));
|
|
12
8
|
}
|
package/src/ui/check/default.css
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
.ui-check {
|
|
2
2
|
--ui-check-checked-bg: var(--color-accent);
|
|
3
3
|
|
|
4
|
-
display: inline-flex;
|
|
5
|
-
gap: var(--ui-check-gap, var(--spacing-md));
|
|
6
4
|
font-weight: var(--ui-check-font-weight, var(--font-normal));
|
|
7
5
|
font-size: var(--ui-check-font-size, var(--text-sm));
|
|
8
|
-
line-height: var(--ui-check-line-height, calc(1em +
|
|
6
|
+
line-height: var(--ui-check-line-height, calc(1em + 0.25lh));
|
|
9
7
|
letter-spacing: var(--ui-check-letter-spacing, inherit);
|
|
8
|
+
gap: var(--ui-check-gap, var(--spacing-md));
|
|
9
|
+
display: inline-flex;
|
|
10
10
|
text-wrap: balance;
|
|
11
11
|
|
|
12
12
|
&:has([type="radio"]) {
|
|
@@ -20,33 +20,47 @@
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
& :where(input) {
|
|
23
|
+
--color-accent: currentColor;
|
|
24
|
+
--tw-bg-space: var(--space);
|
|
25
|
+
--tw-border-space: var(--space);
|
|
23
26
|
--tw-border-opacity: 0.2;
|
|
27
|
+
--tw-border-mix: transparent;
|
|
28
|
+
--tw-outline-opacity: 0;
|
|
29
|
+
--tw-outline-space: var(--space);
|
|
30
|
+
--tw-bg-opacity: 0;
|
|
31
|
+
--tw-bg-mix: transparent;
|
|
24
32
|
|
|
25
33
|
width: var(--ui-check-size);
|
|
26
34
|
height: var(--ui-check-size);
|
|
27
|
-
|
|
35
|
+
border-radius: var(--ui-check-border-radius, var(--rounded-md));
|
|
36
|
+
background-color: color-mix(in var(--tw-bg-space), var(--ui-check-bg, var(--color-accent)) calc(var(--tw-bg-opacity) * 100%), var(--tw-bg-mix));
|
|
28
37
|
border:
|
|
29
38
|
var(--ui-check-border-width, 1px) solid
|
|
30
39
|
color-mix(
|
|
31
|
-
in var(--space),
|
|
32
|
-
var(--ui-check-border-color, var(--color-
|
|
33
|
-
var(--
|
|
40
|
+
in var(--tw-border-space),
|
|
41
|
+
var(--ui-check-border-color, var(--color-accent)) calc(var(--tw-border-opacity) * 100%),
|
|
42
|
+
var(--tw-border-mix, transparent)
|
|
34
43
|
);
|
|
35
|
-
|
|
36
|
-
|
|
44
|
+
outline:
|
|
45
|
+
var(--ui-check-outline-width, 3px) solid
|
|
46
|
+
color-mix(
|
|
47
|
+
in var(--tw-outline-space),
|
|
48
|
+
var(--ui-check-checked-bg) calc(var(--tw-outline-opacity) * 100%),
|
|
49
|
+
transparent
|
|
50
|
+
);
|
|
51
|
+
outline-offset: var(--ui-check-outline-offset, 0);
|
|
37
52
|
transition-property: var(--transition);
|
|
38
53
|
transition-timing-function: var(--ease-in-out);
|
|
39
54
|
transition-duration: var(--duration);
|
|
40
|
-
outline-offset: 0;
|
|
41
|
-
flex-shrink: 0;
|
|
42
55
|
display: flex;
|
|
56
|
+
flex-shrink: 0;
|
|
43
57
|
|
|
44
58
|
&::before {
|
|
45
59
|
width: var(--ui-check-icon-size);
|
|
46
60
|
height: var(--ui-check-icon-size);
|
|
47
61
|
color: var(--color-accent-foreground);
|
|
48
62
|
mask: var(--ui-check-icon, var(--mask-check));
|
|
49
|
-
transition:
|
|
63
|
+
transition: inherit;
|
|
50
64
|
content: "";
|
|
51
65
|
background-color: currentColor;
|
|
52
66
|
opacity: 0;
|
|
@@ -64,35 +78,35 @@
|
|
|
64
78
|
|
|
65
79
|
&:enabled {
|
|
66
80
|
&:is(:hover, :focus-visible) {
|
|
67
|
-
--color-current: var(--ui-check-checked-bg);
|
|
68
81
|
--ui-check-border-color: var(--ui-check-checked-bg);
|
|
69
|
-
--ui-check-
|
|
70
|
-
--
|
|
82
|
+
--color-accent: var(--ui-check-checked-bg);
|
|
83
|
+
--tw-border-opacity: 0.75;
|
|
84
|
+
--tw-bg-opacity: 0.1;
|
|
71
85
|
}
|
|
72
86
|
|
|
73
87
|
&:focus {
|
|
74
88
|
--ui-check-border-color: var(--ui-check-checked-bg);
|
|
75
|
-
--ui-check-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
outline-offset: var(--ui-check-outline-offset, 0);
|
|
89
|
+
--ui-check-outline-offset: var(--ui-check-focus-outline-offset, 0);
|
|
90
|
+
--tw-border-opacity: 0.75;
|
|
91
|
+
--tw-outline-opacity: 0.2;
|
|
79
92
|
}
|
|
80
93
|
}
|
|
81
94
|
|
|
82
95
|
&:disabled {
|
|
83
|
-
--
|
|
96
|
+
--tw-bg-opacity: 0.15;
|
|
84
97
|
|
|
85
98
|
cursor: not-allowed;
|
|
86
99
|
opacity: var(--ui-check-disabled-opacity, 0.5);
|
|
87
100
|
}
|
|
88
101
|
|
|
89
|
-
|
|
102
|
+
&:where([type="checkbox"]):indeterminate {
|
|
90
103
|
--ui-check-icon: var(--mask-indeterminate);
|
|
91
104
|
}
|
|
92
105
|
|
|
93
106
|
&:is(:checked, [type="checkbox"]:indeterminate) {
|
|
94
|
-
--ui-check-border-opacity: 0%;
|
|
95
107
|
--ui-check-bg: var(--ui-check-checked-bg);
|
|
108
|
+
--tw-bg-opacity: 1;
|
|
109
|
+
--tw-border-opacity: 0;
|
|
96
110
|
|
|
97
111
|
&::before {
|
|
98
112
|
opacity: 1;
|
|
@@ -102,9 +116,9 @@
|
|
|
102
116
|
}
|
|
103
117
|
|
|
104
118
|
&.invalid, .validated & :where(input):invalid {
|
|
105
|
-
--color-current: var(--color-error);
|
|
106
119
|
--ui-check-border-color: var(--color-error);
|
|
107
120
|
--ui-check-checked-bg: var(--color-error);
|
|
108
|
-
--
|
|
121
|
+
--color-accent-foreground: var(--color-error);
|
|
122
|
+
--tw-border-opacity: 1;
|
|
109
123
|
}
|
|
110
124
|
}
|
|
@@ -1,16 +1,37 @@
|
|
|
1
1
|
.ui-control {
|
|
2
|
+
--tw-border-opacity: 0.15;
|
|
3
|
+
--tw-border-space: var(--space);
|
|
4
|
+
--tw-border-mix: transparent;
|
|
5
|
+
--tw-bg-space: var(--space);
|
|
6
|
+
--tw-bg-opacity: 1;
|
|
7
|
+
--tw-bg-mix: transparent;
|
|
8
|
+
--tw-outline-opacity: 0;
|
|
9
|
+
--tw-outline-space: var(--space);
|
|
10
|
+
|
|
2
11
|
display: grid;
|
|
3
|
-
|
|
12
|
+
block-size: var(--ui-control-height);
|
|
4
13
|
font-family: var(--ui-contro-font-family, var(--font-primary));
|
|
5
14
|
font-weight: var(--ui-control-font-weight, var(--font-medium));
|
|
6
15
|
font-size: var(--ui-control-font-size, var(--text-sm));
|
|
7
16
|
letter-spacing: var(--ui-control-letter-spacing, inherit);
|
|
8
|
-
background-color: var(--ui-control-bg, transparent);
|
|
17
|
+
background-color: color-mix(in var(--tw-bg-space), var(--ui-control-bg, transparent) calc(var(--tw-bg-opacity) * 100%), var(--tw-bg-mix));
|
|
9
18
|
color: var(--ui-control-color, currentColor);
|
|
10
19
|
border-radius: var(--ui-control-border-radius, var(--rounded));
|
|
11
|
-
border:
|
|
12
|
-
|
|
13
|
-
|
|
20
|
+
border:
|
|
21
|
+
var(--ui-control-border-width) solid
|
|
22
|
+
color-mix(
|
|
23
|
+
in var(--tw-border-space),
|
|
24
|
+
var(--ui-control-border-color, currentColor) calc(var(--tw-border-opacity) * 100%),
|
|
25
|
+
var(--tw-border-mix)
|
|
26
|
+
);
|
|
27
|
+
outline:
|
|
28
|
+
var(--ui-control-outline-width, 3px) solid
|
|
29
|
+
color-mix(
|
|
30
|
+
in var(--tw-outline-space),
|
|
31
|
+
var(--color-accent) calc(var(--tw-outline-opacity) * 100%),
|
|
32
|
+
transparent
|
|
33
|
+
);
|
|
34
|
+
outline-offset: var(--ui-control-outline-offset, 0);
|
|
14
35
|
transition-property: var(--transition);
|
|
15
36
|
transition-timing-function: var(--ease-in-out);
|
|
16
37
|
transition-duration: var(--duration);
|
|
@@ -34,15 +55,14 @@
|
|
|
34
55
|
& > :where(input, textarea, select) {
|
|
35
56
|
padding-block: var(--ui-control-py);
|
|
36
57
|
padding-inline: calc(var(--ui-control-px) + var(--ui-control-ps, 0rem)) calc(var(--ui-control-px) + var(--ui-control-pe, 0rem));
|
|
58
|
+
grid-area: c-control;
|
|
37
59
|
text-overflow: ellipsis;
|
|
38
60
|
overflow: clip;
|
|
39
|
-
grid-area: c-control;
|
|
40
61
|
align-self: stretch;
|
|
41
62
|
align-items: center;
|
|
42
63
|
|
|
43
64
|
&:disabled {
|
|
44
65
|
cursor: not-allowed;
|
|
45
|
-
background-color: color-mix(in var(--space), var(--color-current) var(--ui-control-disabled-opacity, 5%), var(--ui-control-bg, transparent));
|
|
46
66
|
}
|
|
47
67
|
}
|
|
48
68
|
|
|
@@ -54,24 +74,28 @@
|
|
|
54
74
|
}
|
|
55
75
|
|
|
56
76
|
& > :where(textarea) {
|
|
57
|
-
min-
|
|
77
|
+
min-block-size: var(--ui-control-height-textarea);
|
|
58
78
|
resize: vertical;
|
|
59
79
|
}
|
|
60
80
|
|
|
61
81
|
&:focus-within {
|
|
62
|
-
--ui-control-border-opacity: 100%;
|
|
63
82
|
--ui-control-border-color: var(--color-accent);
|
|
83
|
+
--ui-control-outline-offset: var(--ui-control-focus-outline-offset, 0);
|
|
84
|
+
--tw-border-opacity: 1;
|
|
85
|
+
--tw-outline-opacity: 0.2;
|
|
86
|
+
}
|
|
64
87
|
|
|
65
|
-
|
|
66
|
-
|
|
88
|
+
&.disabled, &:has(:disabled) {
|
|
89
|
+
--ui-control-bg: currentColor;
|
|
90
|
+
--tw-bg-opacity: var(--ui-control-disabled-opacity, 0.05);
|
|
67
91
|
}
|
|
68
92
|
|
|
69
93
|
&.invalid, .validated &:has(:invalid) {
|
|
70
|
-
--ui-control-border-opacity: 100%;
|
|
71
94
|
--ui-control-border-color: var(--color-error);
|
|
72
95
|
--ui-control-color: var(--color-error);
|
|
96
|
+
--ui-control-bg: var(--color-error);
|
|
73
97
|
--color-accent: var(--color-error);
|
|
74
|
-
|
|
75
|
-
|
|
98
|
+
--tw-border-opacity: 1;
|
|
99
|
+
--tw-bg-opacity: var(--ui-control-invalid-bg-opacity, 0.1);
|
|
76
100
|
}
|
|
77
101
|
}
|
package/src/ui/control/file.css
CHANGED
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
.ui-control:has([type="file"]) {
|
|
1
|
+
.ui-control:where(:has([type="file"])) {
|
|
2
2
|
overflow: clip;
|
|
3
3
|
|
|
4
4
|
> :where([type="file"]) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
5
|
+
--color-accent: currentColor;
|
|
6
|
+
--tw-bg-opacity: 0.15;
|
|
8
7
|
|
|
9
8
|
&::file-selector-button {
|
|
10
9
|
all: unset;
|
|
11
|
-
background-color: color-mix(in var(--space), var(--color-
|
|
12
|
-
|
|
10
|
+
background-color: color-mix(in var(--tw-bg-space), var(--color-accent) calc(var(--tw-bg-opacity) * 100%), transparent);
|
|
11
|
+
block-size: calc(var(--ui-control-height) - var(--ui-control-border-width) * 2);
|
|
13
12
|
padding-inline: var(--ui-control-px);
|
|
14
13
|
margin-inline: calc(var(--ui-control-px) * -1) var(--ui-control-px);
|
|
15
14
|
margin-block-start: calc(var(--ui-control-py) * -1);
|
|
16
|
-
border-
|
|
17
|
-
border-
|
|
15
|
+
border-start-end-radius: var(--ui-control-border-radius, var(--rounded));
|
|
16
|
+
border-end-end-radius: var(--ui-control-border-radius, var(--rounded));
|
|
18
17
|
transition: var(--transition-background);
|
|
19
18
|
cursor: pointer;
|
|
20
19
|
}
|
|
20
|
+
|
|
21
|
+
&:is(:hover, :focus) {
|
|
22
|
+
--tw-bg-opacity: 0.2;
|
|
23
|
+
}
|
|
21
24
|
}
|
|
22
25
|
}
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
&::after {
|
|
13
13
|
width: var(--ui-control-select-icon-size);
|
|
14
14
|
height: var(--ui-control-select-icon-size);
|
|
15
|
-
margin-inline: auto var(--ui-control-select-icon-me);
|
|
16
15
|
mask: var(--mask-angle-down);
|
|
16
|
+
margin-inline: auto var(--ui-control-select-icon-me);
|
|
17
|
+
grid-area: c-control-p;
|
|
17
18
|
background-color: currentColor;
|
|
18
19
|
pointer-events: none;
|
|
19
|
-
grid-area: c-control-p;
|
|
20
20
|
align-self: center;
|
|
21
21
|
content: "";
|
|
22
22
|
}
|
package/src/ui/group/default.css
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
.ui-group {
|
|
2
|
-
--ui-control-border-mix: var(--color-body-primary);
|
|
3
|
-
--ui-btn-focus-outline-mix: var(--color-body-primary);
|
|
4
|
-
--ui-btn-focus-outline-offset: 0;
|
|
5
|
-
|
|
6
2
|
display: flex;
|
|
7
3
|
border-radius: var(--rounded);
|
|
8
4
|
|
|
@@ -20,6 +16,15 @@
|
|
|
20
16
|
& > :where(*) {
|
|
21
17
|
border-radius: inherit;
|
|
22
18
|
|
|
19
|
+
&:is(.ui-control) {
|
|
20
|
+
--tw-border-mix: var(--color-body-primary);
|
|
21
|
+
--tw-outline-mix: var(--color-body-primary);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
&:is(.ui-btn) {
|
|
25
|
+
--ui-btn-focus-outline-offset: 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
23
28
|
&:focus-within {
|
|
24
29
|
z-index: 1;
|
|
25
30
|
}
|
package/src/ui/info.css
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
font-family: var(--ui-info-font-family, inherit);
|
|
3
3
|
font-weight: var(--ui-info-font-weight, inherit);
|
|
4
4
|
font-size: var(--ui-info-font-size, var(--text-xs));
|
|
5
|
-
line-height: var(--ui-info-line-height, calc(1em +
|
|
5
|
+
line-height: var(--ui-info-line-height, calc(1em + 0.15lh));
|
|
6
6
|
letter-spacing: var(--ui-info-letter-spacing, inherit);
|
|
7
7
|
text-wrap: balance;
|
|
8
8
|
}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
.ui-link {
|
|
2
|
-
--color-accent: var(--color-current);
|
|
3
2
|
--tw-text-opacity: 1;
|
|
4
3
|
--tw-text-space: var(--space);
|
|
5
|
-
--tw-text-mix: transparent;
|
|
6
4
|
|
|
7
|
-
&:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
transition: all var(--duration) var(--ease-in-out);
|
|
5
|
+
&:where([href], button, [role="button"]) {
|
|
6
|
+
color: color-mix(in var(--tw-text-space), currentColor calc(var(--tw-text-opacity) * 100%), transparent);
|
|
7
|
+
transition: all var(--duration) var(--ease-in-out);
|
|
11
8
|
|
|
9
|
+
&:not(:disabled) {
|
|
12
10
|
&:hover {
|
|
13
11
|
@media (hover: hover) and (pointer: fine) {
|
|
14
|
-
--tw-text-opacity: 0.
|
|
12
|
+
--tw-text-opacity: 0.35;
|
|
15
13
|
}
|
|
16
14
|
}
|
|
17
15
|
|
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
.ui-notice {
|
|
2
|
-
--
|
|
2
|
+
--tw-bg-opacity: 0.1;
|
|
3
|
+
--tw-bg-space: var(--space);
|
|
4
|
+
--tw-outline-opacity: 0.1;
|
|
5
|
+
--tw-outline-space: var(--space);
|
|
3
6
|
|
|
4
7
|
padding: var(--ui-notice-py, 1.25rem) var(--ui-notice-px, 1.5rem);
|
|
5
8
|
font-size: var(--ui-notice-font-size, var(--text-sm));
|
|
6
9
|
border-radius: var(--rounded);
|
|
7
|
-
background-color: color-mix(in var(--space), var(--color-accent)
|
|
8
|
-
outline: var(--ui-notice-outline-width, 1px) solid color-mix(in var(--space), var(--color-accent) var(--ui-notice-outline-opacity, 10%), transparent);
|
|
9
|
-
outline-offset: var(--ui-notice-outline-offset, calc(var(--ui-notice-outline-width, 1px) * -1));
|
|
10
|
+
background-color: color-mix(in var(--tw-bg-space), var(--color-accent) calc(var(--tw-bg-opacity) * 100%), transparent);
|
|
10
11
|
color: var(--color-accent);
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
outline:
|
|
13
|
+
var(--ui-notice-outline-width, 1px) solid
|
|
14
|
+
color-mix(
|
|
15
|
+
in var(--tw-outline-space),
|
|
16
|
+
var(--color-accent) calc(var(--tw-outline-opacity) * 100%),
|
|
17
|
+
transparent
|
|
18
|
+
);
|
|
19
|
+
outline-offset: var(--ui-notice-outline-offset, calc(var(--ui-notice-outline-width, 1px) * -1));
|
|
20
|
+
gap: var(--spacing-xl);
|
|
13
21
|
display: flex;
|
|
14
22
|
flex-direction: column;
|
|
23
|
+
position: relative;
|
|
15
24
|
text-wrap: balance;
|
|
16
25
|
|
|
17
26
|
& :where(hr) {
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
.ui-progress {
|
|
2
|
-
--tw-bg-opacity: 1;
|
|
3
|
-
--
|
|
4
|
-
--ui-progress-bg-opacity: calc(var(--tw-bg-opacity) * 10%);
|
|
2
|
+
--tw-bg-opacity: 0.1;
|
|
3
|
+
--tw-bg-space: var(--space);
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
inline-size: 100%;
|
|
6
|
+
block-size: var(--ui-progress-height, 1rem);
|
|
7
7
|
border-radius: var(--ui-progress-border-radius, var(--rounded-full));
|
|
8
|
-
background-color: var(--
|
|
9
|
-
width: 100%;
|
|
8
|
+
background-color: color-mix(in var(--tw-bg-space), var(--color-accent) calc(var(--tw-bg-opacity) * 100%), var(--color-body));
|
|
10
9
|
overflow: clip;
|
|
11
10
|
|
|
12
11
|
&::-webkit-progress-bar {
|
|
@@ -23,7 +22,7 @@
|
|
|
23
22
|
|
|
24
23
|
&:indeterminate {
|
|
25
24
|
animation: 1.5s linear 0s forwards infinite move-indeterminate;
|
|
26
|
-
background-image: linear-gradient(to right, var(--color-accent) 30%,
|
|
25
|
+
background-image: linear-gradient(to right, var(--color-accent) 30%, transparent 30%);
|
|
27
26
|
background-position: top left;
|
|
28
27
|
background-repeat: no-repeat;
|
|
29
28
|
background-size: 150% 150%;
|