winduum 0.5.0-next.8 → 0.5.0

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 (61) hide show
  1. package/dist/main-rgb.css +1 -1
  2. package/dist/main.css +1 -1
  3. package/dist/tailwind.css +1 -1
  4. package/package.json +17 -17
  5. package/src/base/config/font.css +11 -0
  6. package/src/base/{icons.css → config/mask.css} +4 -4
  7. package/src/base/config/rounded.css +14 -0
  8. package/src/base/config/spacing.css +15 -0
  9. package/src/base/config/text.css +15 -0
  10. package/src/base/config/transition.css +19 -0
  11. package/src/base/config/z.css +7 -0
  12. package/src/base/config.css +7 -86
  13. package/src/base/default.css +5 -1
  14. package/src/base/index.css +0 -3
  15. package/src/base/reset.css +10 -7
  16. package/src/base/tailwind/container.css +9 -4
  17. package/src/base/tailwind/utilities.css +8 -24
  18. package/src/base/theme/dark-rgb.css +3 -0
  19. package/src/base/theme/dark.css +3 -4
  20. package/src/base/theme/default-rgb.css +25 -0
  21. package/src/base/theme/default.css +21 -22
  22. package/src/components/dialog.css +4 -9
  23. package/src/components/field.css +1 -3
  24. package/src/libraries/dialog.css +14 -15
  25. package/src/libraries/dialog.js +1 -0
  26. package/src/libraries/ripple.css +2 -5
  27. package/src/main-rgb.css +2 -0
  28. package/src/ui/badge/bordered-rgb.css +1 -1
  29. package/src/ui/badge/bordered.css +9 -8
  30. package/src/ui/badge/default.css +10 -14
  31. package/src/ui/badge/lg.css +1 -1
  32. package/src/ui/badge/muted.css +1 -1
  33. package/src/ui/badge/sm.css +1 -1
  34. package/src/ui/btn/bordered.css +14 -13
  35. package/src/ui/btn/default.css +3 -5
  36. package/src/ui/btn/gradient-bordered.css +27 -21
  37. package/src/ui/btn/interactive.css +4 -0
  38. package/src/ui/btn/raised.css +1 -2
  39. package/src/ui/btn/wide.css +1 -2
  40. package/src/ui/check.css +27 -53
  41. package/src/ui/control/color.css +5 -8
  42. package/src/ui/control/default.css +35 -45
  43. package/src/ui/control/file.css +9 -12
  44. package/src/ui/control/floating-interactive.css +12 -0
  45. package/src/ui/control/floating.css +22 -26
  46. package/src/ui/control/icon.css +15 -16
  47. package/src/ui/control/index.css +1 -1
  48. package/src/ui/control/select.css +6 -6
  49. package/src/ui/image.css +8 -19
  50. package/src/ui/info.css +6 -5
  51. package/src/ui/label.css +6 -5
  52. package/src/ui/notice.css +7 -15
  53. package/src/ui/progress/default.css +4 -8
  54. package/src/ui/progress/lg.css +1 -1
  55. package/src/ui/progress/sm.css +1 -1
  56. package/src/ui/switch.css +28 -41
  57. package/src/ui/title/default.css +1 -1
  58. package/tailwind.config.js +5 -1
  59. package/utils/tailwind.cjs +71 -19
  60. package/utils/tailwind.js +63 -18
  61. package/src/ui/control/floating-focus.css +0 -12
package/src/ui/check.css CHANGED
@@ -1,33 +1,18 @@
1
1
  .ui-check {
2
- --ui-check-width: 1.375rem;
3
- --ui-check-font-size: 0.875rem;
4
- --ui-check-gap: 0.625rem;
5
- --ui-check-bg: transparent;
6
- --ui-check-bg-mix: transparent;
7
- --ui-check-bg-opacity: calc(var(--tw-bg-opacity, 0.1) * 100%);
8
- --ui-check-border-color: var(--color-current);
9
- --ui-check-border-mix: transparent;
10
- --ui-check-border-opacity: calc(var(--tw-border-opacity, 0.2) * 100%);
11
- --ui-check-border-width: 1px;
2
+ --ui-check-width: 1.25rem;
12
3
  --ui-check-checked-bg: var(--color-accent);
13
- --ui-check-radius: 0.5rem;
14
- --ui-check-icon: var(--icon-check);
15
- --ui-check-icon-font-size: 1.125rem;
16
- --ui-check-box-shadow: none;
17
- --ui-check-outline-width: 3px;
18
- --ui-check-outline-offset: 0;
19
- --ui-check-outline-opacity: 20%;
20
- --ui-check-disabled-opacity: 50%;
21
-
22
- display: flex;
23
- align-items: center;
24
- gap: 0 var(--ui-check-gap);
25
- width: fit-content;
26
- font-size: var(--ui-check-font-size);
4
+ --ui-check-icon-width: 1.125rem;
5
+
6
+ display: inline-flex;
7
+ gap: var(--ui-check-gap, 0.75rem);
8
+ font-weight: var(--ui-check-font-weight, var(--font-normal));
9
+ font-size: var(--ui-check-font-size, var(--text-sm));
10
+ line-height: var(--ui-check-line-height, calc(1em + var(--ui-check-line-height-ratio, 0.25lh)));
11
+ letter-spacing: var(--ui-check-letter-spacing, inherit);
27
12
  text-wrap: balance;
28
13
 
29
14
  &:has([type="radio"]) {
30
- --ui-check-icon: var(--icon-radio);
15
+ --ui-check-icon: var(--mask-radio);
31
16
  --ui-check-radius: 50%;
32
17
  }
33
18
 
@@ -44,37 +29,28 @@
44
29
  display: flex;
45
30
  width: var(--ui-check-width);
46
31
  height: var(--ui-check-width);
47
- background-color: color-mix(in sRGB, var(--ui-check-bg) var(--ui-check-bg-opacity), var(--ui-check-bg-mix));
48
- border: var(--ui-check-border-width) solid color-mix(in sRGB, var(--ui-check-border-color) var(--ui-check-border-opacity), var(--ui-check-border-mix));
49
- border-radius: var(--ui-check-radius);
50
- user-select: none;
51
- outline: var(--ui-check-outline-width) solid transparent;
32
+ background-color: var(--ui-check-bg, color-mix(in sRGB, var(--color-current) var(--ui-check-bg-opacity, 0), var(--ui-check-bg-mix, transparent)));
33
+ border: var(--ui-check-border-width, 1px) solid color-mix(in sRGB, var(--ui-check-border-color, var(--color-current)) var(--ui-check-border-opacity, calc(var(--tw-border-opacity, 0.2) * 100%)), var(--ui-check-border-mix, transparent));
34
+ border-radius: var(--ui-check-radius, var(--rounded-md));
35
+ outline: var(--ui-check-outline-width, 3px) solid transparent;
52
36
  outline-offset: 0;
53
- justify-content: center;
54
- align-items: center;
55
- transition:
56
- var(--transition-border),
57
- var(--transition-background),
58
- outline-color var(--duration),
59
- outline-offset var(--duration);
60
- font-size: var(--ui-check-icon-font-size);
61
- cursor: pointer;
37
+ transition-property: var(--transition);
38
+ transition-timing-function: var(--ease-in-out);
39
+ transition-duration: var(--duration);
62
40
  flex-shrink: 0;
63
41
 
64
42
  &::before {
65
- line-height: var(--ui-check-icon-font-size);
66
- text-indent: 0;
67
- display: block;
68
43
  transition: var(--transition-color), var(--transition-opacity), var(--transition-transform);
69
44
  color: var(--color-accent-fg);
70
45
  content: "";
71
46
  background-color: currentColor;
72
- mask: var(--ui-check-icon);
47
+ mask: var(--ui-check-icon, var(--mask-check));
73
48
  opacity: 0;
74
49
  transform: scale(0);
75
50
  will-change: transform;
76
- width: 1em;
77
- height: 1em;
51
+ width: var(--ui-check-icon-width);
52
+ height: var(--ui-check-icon-width);
53
+ margin: auto;
78
54
  }
79
55
 
80
56
  &:where(:required) {
@@ -86,7 +62,7 @@
86
62
 
87
63
  &:not(:disabled) {
88
64
  &:is(:hover, :focus-visible) {
89
- --ui-check-bg: var(--ui-check-checked-bg);
65
+ --color-current: var(--ui-check-checked-bg);
90
66
  --ui-check-border-color: var(--ui-check-checked-bg);
91
67
  --ui-check-border-opacity: 75%;
92
68
  --ui-check-bg-opacity: 10%;
@@ -96,23 +72,21 @@
96
72
  --ui-check-border-color: var(--ui-check-checked-bg);
97
73
  --ui-check-border-opacity: 75%;
98
74
 
99
- outline-color: color-mix(in sRGB, var(--ui-check-checked-bg) var(--ui-check-outline-opacity), transparent);
100
- outline-offset: var(--ui-check-outline-offset);
75
+ outline-color: color-mix(in sRGB, var(--ui-check-checked-bg) var(--ui-check-outline-opacity, 20%), transparent);
76
+ outline-offset: var(--ui-check-outline-offset, 0);
101
77
  }
102
78
  }
103
79
 
104
80
  &:disabled {
105
81
  --ui-check-bg-opacity: 15%;
106
- --ui-check-bg: var(--color-current);
107
82
 
108
83
  cursor: not-allowed;
109
- opacity: var(--ui-check-disabled-opacity);
84
+ opacity: var(--ui-check-disabled-opacity, 0.5);
110
85
  }
111
86
 
112
87
  &:checked {
113
88
  --ui-check-border-opacity: 0%;
114
-
115
- background-color: var(--ui-check-checked-bg);
89
+ --ui-check-bg: var(--ui-check-checked-bg);
116
90
 
117
91
  &::before {
118
92
  opacity: 1;
@@ -122,7 +96,7 @@
122
96
  }
123
97
 
124
98
  &.invalid, .validated & :where(input):invalid {
125
- --ui-check-bg: var(--color-error);
99
+ --color-current: var(--color-error);
126
100
  --ui-check-border-color: var(--color-error);
127
101
  --ui-check-checked-bg: var(--color-error);
128
102
  --ui-check-border-opacity: 100%;
@@ -1,9 +1,9 @@
1
1
  .ui-control {
2
2
  --ui-control-color-swatch-width: 1.25rem;
3
3
  --ui-control-color-swatch-height: 1.25rem;
4
- --ui-control-color-swatch-px: 2rem;
4
+ --ui-control-color-swatch-border-radius: var(--rounded-full);
5
5
 
6
- & :where(input, textarea, select) {
6
+ & :where(input) {
7
7
  &::-webkit-color-swatch-wrapper {
8
8
  width: var(--ui-control-color-swatch-width);
9
9
  height: var(--ui-control-color-swatch-height);
@@ -13,19 +13,16 @@
13
13
  &::-moz-color-swatch {
14
14
  width: var(--ui-control-color-swatch-width);
15
15
  height: var(--ui-control-color-swatch-height);
16
- border-radius: var(--ui-control-border-radius);
16
+ border-radius: var(--ui-control-color-swatch-border-radius);
17
17
  margin: 0;
18
18
  }
19
19
 
20
20
  &::-webkit-color-swatch {
21
- border-radius: var(--ui-control-border-radius);
21
+ border-radius: var(--ui-control-color-swatch-border-radius);
22
22
  }
23
23
 
24
24
  &[type="color"] ~ label {
25
- height: 100%;
26
- display: flex;
27
- align-items: center;
28
- padding-inline: calc(var(--ui-control-px) + var(--ui-control-color-swatch-px)) var(--ui-control-px);
25
+ margin-inline-start: calc(var(--ui-control-px) + var(--ui-control-color-swatch-width));
29
26
  }
30
27
  }
31
28
  }
@@ -2,69 +2,59 @@
2
2
  --ui-control-height: 3rem;
3
3
  --ui-control-height-textarea: 8rem;
4
4
  --ui-control-px: 0.75rem;
5
- --ui-control-ps: 0rem;
6
- --ui-control-pe: 0rem;
7
- --ui-control-bg: transparent;
8
- --ui-control-color: currentColor;
9
- --ui-control-placeholder-color: currentColor;
10
- --ui-control-placeholder-opacity: 0.5;
11
- --ui-control-font-size: 0.875rem;
12
- --ui-control-font-weight: var(--font-medium);
5
+ --ui-control-py: 0.75rem;
13
6
  --ui-control-border-width: 1px;
14
- --ui-control-border-color: var(--color-current);
15
- --ui-control-border-mix: transparent;
16
- --ui-control-border-opacity: 15%;
17
- --ui-control-border-radius: var(--rounded);
18
- --ui-control-outline-width: 3px;
19
- --ui-control-outline-offset: 0;
20
- --ui-control-outline-opacity: 20%;
21
- --ui-control-disabled-opacity: 5%;
22
- --ui-control-invalid-bg-opacity: 10%;
23
7
 
24
8
  display: grid;
25
- grid-template-areas: "body";
26
- position: relative;
27
- font-size: var(--ui-control-font-size);
28
- border-radius: var(--ui-control-border-radius);
29
- background-color: var(--ui-control-bg);
30
- transition:
31
- var(--transition-border),
32
- outline-color var(--duration),
33
- outline-offset var(--duration);
34
- font-weight: var(--ui-control-font-weight);
35
- color: var(--ui-control-color);
36
- border: var(--ui-control-border-width) solid color-mix(in sRGB, var(--ui-control-border-color) var(--ui-control-border-opacity), var(--ui-control-border-mix));
37
- outline: var(--ui-control-outline-width) solid transparent;
38
- outline-offset: 0;
39
9
  height: var(--ui-control-height);
10
+ font-family: var(--ui-contro-font-family, var(--font-primary));
11
+ font-weight: var(--ui-control-font-weight, var(--font-medium));
12
+ font-size: var(--ui-control-font-size, var(--text-sm));
13
+ letter-spacing: var(--ui-control-letter-spacing, inherit);
14
+ background-color: var(--ui-control-bg, transparent);
15
+ color: var(--ui-control-color, currentColor);
16
+ border-radius: var(--ui-control-border-radius, var(--rounded));
17
+ border: var(--ui-control-border-width) solid color-mix(in sRGB, var(--ui-control-border-color, var(--color-current)) var(--ui-control-border-opacity, 15%), var(--ui-control-border-mix, transparent));
18
+ outline: var(--ui-control-outline-width, 3px) solid transparent;
19
+ outline-offset: 0;
20
+ transition-property: var(--transition);
21
+ transition-timing-function: var(--ease-in-out);
22
+ transition-duration: var(--duration);
23
+ grid-template:
24
+ [control-start] calc(var(--ui-control-py) - var(--ui-control-border-width))
25
+ [control-p] 1fr
26
+ calc(var(--ui-control-py) - var(--ui-control-border-width)) [control-end] /
27
+ [control-start] var(--ui-control-px)
28
+ [control-p] 1fr
29
+ var(--ui-control-px) [control-end];
40
30
 
41
31
  &:has(textarea) {
42
32
  height: auto;
43
33
  }
44
34
 
45
- & > * {
46
- grid-area: body;
35
+ & > :where(*) {
36
+ grid-area: control-p;
37
+ align-self: center;
47
38
  }
48
39
 
49
40
  & :where(input, textarea, select) {
50
- place-self: stretch;
51
- padding-top: var(--ui-control-pt, 0);
52
- padding-inline: calc(var(--ui-control-px) + var(--ui-control-ps)) calc(var(--ui-control-px) + var(--ui-control-pe));
53
41
  text-overflow: ellipsis;
54
- overflow: hidden;
55
- display: flex;
56
- align-items: center;
42
+ overflow: clip;
43
+ padding-block: var(--ui-control-py);
44
+ padding-inline: calc(var(--ui-control-px) + var(--ui-control-ps, 0rem)) calc(var(--ui-control-px) + var(--ui-control-pe, 0rem));
45
+ grid-area: control;
46
+ align-self: stretch;
57
47
 
58
48
  &:disabled {
59
49
  cursor: not-allowed;
60
- background-color: color-mix(in sRGB, var(--color-current) var(--ui-control-disabled-opacity), var(--ui-control-bg));
50
+ background-color: color-mix(in sRGB, var(--color-current) var(--ui-control-disabled-opacity, 5%), var(--ui-control-bg, transparent));
61
51
  }
62
52
  }
63
53
 
64
54
  & :where(input, textarea) {
65
55
  &::placeholder {
66
- color: var(--ui-control-placeholder-color);
67
- opacity: var(--ui-control-placeholder-opacity);
56
+ color: var(--ui-control-placeholder-color, currentColor);
57
+ opacity: var(--ui-control-placeholder-opacity, 0.5);
68
58
  }
69
59
  }
70
60
 
@@ -77,8 +67,8 @@
77
67
  --ui-control-border-opacity: 100%;
78
68
  --ui-control-border-color: var(--color-accent);
79
69
 
80
- outline-color: color-mix(in sRGB, var(--color-accent) var(--ui-control-outline-opacity), transparent);
81
- outline-offset: var(--ui-control-outline-offset);
70
+ outline-color: color-mix(in sRGB, var(--color-accent) var(--ui-control-outline-opacity, 20%), transparent);
71
+ outline-offset: var(--ui-control-outline-offset, 0);
82
72
  }
83
73
 
84
74
  &.invalid, .validated &:has(:invalid) {
@@ -87,6 +77,6 @@
87
77
  --ui-control-color: var(--color-error);
88
78
  --color-accent: var(--color-error);
89
79
 
90
- background-color: color-mix(in sRGB, var(--color-error) var(--ui-control-invalid-bg-opacity), var(--ui-control-bg));
80
+ background-color: color-mix(in sRGB, var(--color-error) var(--ui-control-invalid-bg-opacity, 10%), var(--ui-control-bg));
91
81
  }
92
82
  }
@@ -1,25 +1,22 @@
1
1
  .ui-control:has([type="file"]) {
2
- overflow: hidden;
2
+ overflow: clip;
3
3
 
4
4
  :where([type="file"]) {
5
- --file-selector-button-bg-opacity: 15%;
6
-
7
5
  &:is(:hover, :focus) {
8
- --file-selector-button-bg-opacity: 20%;
6
+ --ui-control-file-selector-button-bg-opacity: 20%;
9
7
  }
10
8
 
11
9
  &::file-selector-button {
12
10
  all: unset;
13
- background-color: color-mix(in sRGB, var(--color-current) var(--file-selector-button-bg-opacity), transparent);
11
+ background-color: color-mix(in sRGB, var(--color-current) var(--ui-control-file-selector-button-bg-opacity, 15%), transparent);
14
12
  height: calc(var(--ui-control-height) - var(--ui-control-border-width) * 2);
15
- padding: 0 1rem;
16
- margin-right: var(--ui-control-px);
17
- border-top-right-radius: var(--rounded);
18
- border-bottom-right-radius: var(--rounded);
19
- cursor: pointer;
20
- margin-top: calc(var(--ui-control-py) * -1);
21
- margin-left: calc(var(--ui-control-px) * -1);
13
+ padding-inline: var(--ui-control-px);
14
+ margin-inline: calc(var(--ui-control-px) * -1) var(--ui-control-px);
15
+ margin-block-start: calc(var(--ui-control-py) * -1);
16
+ border-top-right-radius: var(--ui-control-border-radius, var(--rounded));
17
+ border-bottom-right-radius: var(--ui-control-border-radius, var(--rounded));
22
18
  transition: var(--transition-background);
19
+ cursor: pointer;
23
20
  }
24
21
  }
25
22
  }
@@ -0,0 +1,12 @@
1
+ .ui-control:where(:has(:not([type="color"]) ~ label)) {
2
+ --ui-control-placeholder-color: transparent;
3
+
4
+ & :where(input, textarea, select) {
5
+ &:is(:focus, :not(:placeholder-shown)) {
6
+ ~ label {
7
+ transform: translateY(calc(var(--ui-control-label-translate-y) * -1)) scale(var(--ui-control-label-scale));
8
+ opacity: var(--ui-control-label-focus-opacity, 0.5);
9
+ }
10
+ }
11
+ }
12
+ }
@@ -1,43 +1,39 @@
1
- .ui-control:has(:not([type="color"]) ~ label) {
2
- --ui-control-pt: 0.875rem;
3
- --ui-control-label-font-size: 0.875rem;
4
- --ui-control-label-font-weight: var(--font-medium);
5
- --ui-control-label-transition-duration: 0.4s;
1
+ .ui-control:where(:has(:not([type="color"]) ~ label)) {
2
+ --ui-control-label-translate-y: 0.625rem;
3
+ --ui-control-label-scale: 0.8;
6
4
 
7
5
  & :where(label) {
8
- align-self: start;
9
6
  pointer-events: none;
10
- transition: transform var(--ui-control-label-transition-duration) cubic-bezier(0.25, 0.8, 0.25, 1), var(--transition-color), var(--transition-opacity);
7
+ transition: var(--transition-transform), var(--transition-color), var(--transition-opacity);
11
8
  transform-origin: 0 50%;
12
9
  white-space: nowrap;
13
10
  text-overflow: ellipsis;
14
- overflow: hidden;
15
- transform: perspective(100px);
11
+ overflow: clip;
16
12
  will-change: transform;
17
- font-weight: var(--ui-control-label-font-weight);
18
- line-height: var(--ui-control-label-font-size);
19
- margin-top: calc(var(--ui-control-height) / 2 - (var(--ui-control-font-size) / 2));
20
- margin-inline: calc(var(--ui-control-px) + var(--ui-control-ps)) calc(var(--ui-control-px) + var(--ui-control-pe));
13
+ margin-inline: var(--ui-control-ps, 0) var(--ui-control-pe, 0);
21
14
  }
22
15
 
23
- &:has(:required) label {
24
- &::after {
25
- color: var(--color-error);
26
- content: " *";
27
- }
16
+ &:where(:has(:required)) :where(label)::after {
17
+ color: var(--color-error);
18
+ content: " *";
28
19
  }
29
20
 
30
- & :where(input) {
31
- &::-webkit-calendar-picker-indicator {
32
- margin-top: calc(var(--ui-control-pt) * -1);
33
- }
21
+ & :where(textarea) {
22
+ padding-block-start: calc(var(--ui-control-py) + var(--ui-control-label-translate-y) * var(--ui-control-label-scale));
34
23
 
35
- &::-webkit-search-cancel-button {
36
- transform: translateY(calc(var(--ui-control-pt) / 2 * -1));
24
+ & + :where(label) {
25
+ align-self: start;
37
26
  }
38
27
  }
39
28
 
40
- & :where(textarea) {
41
- padding-top: calc(var(--ui-control-pt) + calc(var(--ui-control-height) / 2 - (var(--ui-control-font-size))));
29
+ & :where(input, select) {
30
+ padding-block: calc(var(--ui-control-py) + var(--ui-control-label-translate-y) * var(--ui-control-label-scale)) calc(var(--ui-control-py) - var(--ui-control-label-translate-y) * var(--ui-control-label-scale));
31
+
32
+ &::-webkit-calendar-picker-indicator,
33
+ &::-webkit-search-cancel-button,
34
+ &::-webkit-outer-spin-button,
35
+ &::-webkit-inner-spin-button {
36
+ transform: translateY(calc(var(--ui-control-label-translate-y) * var(--ui-control-label-scale) * -1));
37
+ }
42
38
  }
43
39
  }
@@ -1,41 +1,40 @@
1
1
  .ui-control {
2
2
  --ui-control-icon-size: 1.25rem;
3
3
  --ui-control-icon-gap: 0.375rem;
4
- --ui-control-icon-count-s: 1;
5
- --ui-control-icon-count-e: 1;
4
+ --ui-control-icon-s: calc(var(--ui-control-icon-count-s, 1) * (var(--ui-control-icon-size) + var(--ui-control-icon-gap)) - var(--ui-control-icon-gap));
5
+ --ui-control-icon-e: calc(var(--ui-control-icon-count-e, 1) * (var(--ui-control-icon-size) + var(--ui-control-icon-gap)) - var(--ui-control-icon-gap));
6
6
 
7
- &:has(.icon-l) {
8
- --ui-control-ps: calc(var(--ui-control-icon-count-s) * (var(--ui-control-icon-size) + var(--ui-control-icon-gap)) - var(--ui-control-icon-gap) + var(--ui-control-px));
7
+ &:has(.icon-s) {
8
+ --ui-control-ps: calc(var(--ui-control-icon-s) + var(--ui-control-px));
9
9
  }
10
10
 
11
- &:has(.icon-r) {
12
- --ui-control-pe: calc(var(--ui-control-icon-count-e) * (var(--ui-control-icon-size) + var(--ui-control-icon-gap)) - var(--ui-control-icon-gap) + var(--ui-control-px));
11
+ &:has(.icon-e) {
12
+ --ui-control-pe: calc(var(--ui-control-icon-e) + var(--ui-control-px));
13
13
  }
14
14
 
15
- &:has(.icon-l > *:nth-child(2)) {
15
+ &:has(.icon-s > *:nth-child(2)) {
16
16
  --ui-control-icon-count-s: 2;
17
17
  }
18
18
 
19
- &:has(.icon-r > *:nth-child(2)) {
19
+ &:has(.icon-e > *:nth-child(2)) {
20
20
  --ui-control-icon-count-e: 2;
21
21
  }
22
22
 
23
- & :where(.icon-l) {
24
- inset-inline-start: var(--ui-control-px);
23
+ & :where(.icon-s) {
25
24
  margin-inline-end: auto;
26
25
  }
27
26
 
28
- & :where(.icon-r) {
29
- inset-inline-end: var(--ui-control-px);
27
+ & :where(.icon-e) {
30
28
  margin-inline-start: auto;
31
29
  }
32
30
 
33
- & :where(.icon-l, .icon-r) {
34
- position: relative;
31
+ & :where(.icon-s, .icon-e) {
35
32
  display: flex;
36
- flex-direction: row;
37
33
  align-items: center;
38
- align-self: center;
39
34
  gap: var(--ui-control-icon-gap);
40
35
  }
36
+
37
+ &:has(textarea) :where(.icon-s, .icon-e) {
38
+ margin-block-start: var(--ui-control-py);
39
+ }
41
40
  }
@@ -3,5 +3,5 @@
3
3
  @import "icon.css";
4
4
  @import "file.css";
5
5
  @import "floating.css";
6
- @import "floating-focus.css";
6
+ @import "floating-interactive.css";
7
7
  @import "select.css";
@@ -1,13 +1,13 @@
1
1
  .ui-control:has(select) {
2
2
  --ui-control-select-icon-size: 1.5rem;
3
- --ui-control-select-icon-me: calc(var(--ui-control-px) - 0.25rem);
4
- --ui-control-pe: calc(var(--ui-control-select-icon-size) + 0.25rem);
3
+ --ui-control-select-icon-me: -0.25rem;
4
+ --ui-control-pe: calc(var(--ui-control-select-icon-size) + var(--ui-control-select-icon-me));
5
5
 
6
- &:has(.icon-r) {
6
+ &:has(.icon-e) {
7
7
  --ui-control-icon-count-e: 2;
8
8
  }
9
9
 
10
- & :where(.icon-r) {
10
+ & :where(.icon-e) {
11
11
  margin-inline-end: var(--ui-control-select-icon-size);
12
12
  }
13
13
 
@@ -16,9 +16,9 @@
16
16
  width: var(--ui-control-select-icon-size);
17
17
  height: var(--ui-control-select-icon-size);
18
18
  background-color: currentColor;
19
- mask: var(--icon-angle-down);
19
+ mask: var(--mask-angle-down);
20
20
  pointer-events: none;
21
- grid-area: body;
21
+ grid-area: control-p;
22
22
  align-self: center;
23
23
  margin-inline: auto var(--ui-control-select-icon-me);
24
24
  }
package/src/ui/image.css CHANGED
@@ -1,32 +1,21 @@
1
1
  .ui-image {
2
2
  position: relative;
3
- display: block;
3
+ display: flex;
4
4
  border-radius: inherit;
5
5
  flex-shrink: 0;
6
+ max-width: max-content;
6
7
 
7
- &:not([class*="bg-"])::before {
8
- content: "";
8
+ &::before {
9
9
  position: absolute;
10
10
  inset: 0;
11
- background:
12
- linear-gradient(
13
- 270deg,
14
- color-mix(in sRGB, var(--color-body) 50%, var(--color-main)),
15
- color-mix(in sRGB, var(--color-body) 80%, var(--color-main)),
16
- color-mix(in sRGB, var(--color-body) 80%, var(--color-main)),
17
- color-mix(in sRGB, var(--color-body) 50%, var(--color-main))
18
- );
19
- background-size: 400% 100%;
20
- animation: skeleton-wave 1.5s linear infinite;
21
- border-radius: inherit;
22
11
  z-index: -1;
23
- opacity: 0.3;
12
+ border-radius: inherit;
24
13
  }
25
14
 
26
- & > *:not(source) {
27
- display: block;
28
- width: 100%;
29
- height: 100%;
15
+ & > :where(img, video, iframe, object, svg) {
30
16
  border-radius: inherit;
17
+ min-width: 100%;
18
+ height: auto;
19
+ object-fit: cover;
31
20
  }
32
21
  }
package/src/ui/info.css CHANGED
@@ -1,7 +1,8 @@
1
1
  .ui-info {
2
- --ui-info-font-size: 0.75rem;
3
- --ui-info-font-weight: var(--font-normal);
4
-
5
- font-size: var(--ui-info-font-size);
6
- font-weight: var(--ui-info-font-weight);
2
+ font-family: var(--ui-info-font-family, inherit);
3
+ font-weight: var(--ui-info-font-weight, inherit);
4
+ font-size: var(--ui-info-font-size, var(--text-xs));
5
+ line-height: var(--ui-info-line-height, calc(1em + var(--ui-info-line-height-ratio, 0.15lh)));
6
+ letter-spacing: var(--ui-info-letter-spacing, inherit);
7
+ text-wrap: balance;
7
8
  }
package/src/ui/label.css CHANGED
@@ -1,7 +1,8 @@
1
1
  .ui-label {
2
- --ui-label-font-size: 0.875rem;
3
- --ui-label-font-weight: var(--font-medium);
4
-
5
- font-size: var(--ui-label-font-size);
6
- font-weight: var(--ui-label-font-weight);
2
+ font-family: var(--ui-label-font-family, inherit);
3
+ font-weight: var(--ui-label-font-weight, inherit);
4
+ font-size: var(--ui-label-font-size, var(--text-sm));
5
+ line-height: var(--ui-label-line-height, calc(1em + var(--ui-label-line-height-ratio, 0.15lh)));
6
+ letter-spacing: var(--ui-label-letter-spacing, inherit);
7
+ text-wrap: balance;
7
8
  }
package/src/ui/notice.css CHANGED
@@ -1,26 +1,18 @@
1
1
  .ui-notice {
2
2
  --color-current: var(--color-accent);
3
- --ui-notice-bg: var(--color-accent);
4
- --ui-notice-py: 1.25rem;
5
- --ui-notice-px: 1.5rem;
6
- --ui-notice-font-size: 0.875rem;
7
- --ui-notice-border-radius: var(--rounded);
8
3
  --ui-notice-outline-width: 1px;
9
- --ui-notice-outline-offset: calc(var(--ui-notice-outline-width) * -1);
10
- --ui-notice-outline-opacity: 10%;
11
- --ui-notice-gap: 1.25rem;
12
4
 
13
5
  position: relative;
14
6
  display: flex;
15
7
  flex-direction: column;
16
- padding: var(--ui-notice-py) var(--ui-notice-px);
17
- font-size: var(--ui-notice-font-size);
18
- border-radius: var(--ui-notice-border-radius);
19
- background-color: color-mix(in sRGB, var(--ui-notice-bg) 10%, transparent);
20
- outline: var(--ui-notice-outline-width) solid color-mix(in sRGB, var(--ui-notice-bg) var(--ui-notice-outline-opacity), transparent);
21
- outline-offset: var(--ui-notice-outline-offset);
8
+ padding: var(--ui-notice-py, 1.25rem) var(--ui-notice-px, 1.5rem);
9
+ font-size: var(--ui-notice-font-size, var(--text-sm));
10
+ border-radius: var(--rounded);
11
+ background-color: color-mix(in sRGB, var(--color-accent) 10%, transparent);
12
+ outline: var(--ui-notice-outline-width) solid color-mix(in sRGB, var(--color-accent) var(--ui-notice-outline-opacity, 10%), transparent);
13
+ outline-offset: var(--ui-notice-outline-offset, calc(var(--ui-notice-outline-width) * -1));
22
14
  color: var(--color-accent);
23
- gap: var(--ui-notice-gap);
15
+ gap: var(--ui-notice-gap, 1.25rem);
24
16
  text-wrap: balance;
25
17
 
26
18
  & :where(hr) {
@@ -1,14 +1,13 @@
1
1
  .ui-progress {
2
- --ui-progress-height: 1rem;
3
- --ui-progress-border-radius: var(--rounded-full);
4
2
  --ui-progress-bg: color-mix(in sRGB, var(--color-accent) var(--ui-progress-bg-opacity), var(--color-body));
5
- --ui-progress-bg-opacity: 10%;
3
+ --ui-progress-bg-opacity: calc(var(--tw-bg-opacity, 1) * 10%);
6
4
 
7
5
  appearance: none;
8
- height: var(--ui-progress-height);
9
- border-radius: var(--ui-progress-border-radius);
6
+ height: var(--ui-progress-height, 1rem);
7
+ border-radius: var(--ui-progress-border-radius, var(--rounded-full));
10
8
  background-color: var(--ui-progress-bg);
11
9
  width: 100%;
10
+ overflow: clip;
12
11
 
13
12
  &::-webkit-progress-bar {
14
13
  background-color: transparent;
@@ -16,12 +15,10 @@
16
15
 
17
16
  &::-webkit-progress-value {
18
17
  background-color: var(--color-accent);
19
- border-radius: var(--ui-progress-border-radius);
20
18
  }
21
19
 
22
20
  &::-moz-progress-bar {
23
21
  background-color: var(--color-accent);
24
- border-radius: var(--ui-progress-border-radius);
25
22
  }
26
23
 
27
24
  &:indeterminate {
@@ -30,7 +27,6 @@
30
27
  background-position: top left;
31
28
  background-repeat: no-repeat;
32
29
  background-size: 150% 150%;
33
- border-radius: var(--ui-progress-border-radius);
34
30
 
35
31
  &::-moz-progress-bar {
36
32
  background-color: transparent;
@@ -1,3 +1,3 @@
1
- .ui-progress:where(.lg) {
1
+ .ui-progress:is(.lg) {
2
2
  --ui-progress-height: 1.5rem;
3
3
  }
@@ -1,3 +1,3 @@
1
- .ui-progress:where(.sm) {
1
+ .ui-progress:is(.sm) {
2
2
  --ui-progress-height: 0.5rem;
3
3
  }