winduum 0.1.18 → 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 (103) 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 +25 -21
  5. package/src/base/config.css +0 -10
  6. package/src/base/default.css +23 -10
  7. package/src/base/icons.css +0 -3
  8. package/src/base/index.css +2 -0
  9. package/src/base/keyframes.css +0 -118
  10. package/src/base/reset.css +24 -17
  11. package/src/base/tailwind/utilities.css +3 -3
  12. package/src/base/theme/dark-rgb.css +4 -0
  13. package/src/base/theme/dark.css +7 -7
  14. package/src/base/theme/default-rgb.css +13 -0
  15. package/src/base/theme/default.css +22 -14
  16. package/src/components/dialog.css +2 -2
  17. package/src/components/field.css +3 -3
  18. package/src/libraries/dialog-rgb.css +3 -0
  19. package/src/libraries/dialog.css +2 -2
  20. package/src/libraries/dialog.js +7 -9
  21. package/src/libraries/ripple-rgb.css +3 -0
  22. package/src/libraries/ripple.css +2 -2
  23. package/src/libraries/ripple.js +1 -3
  24. package/src/main-rgb.css +11 -0
  25. package/src/main.css +1 -1
  26. package/src/main.js +1 -0
  27. package/src/ui/badge/bordered-rgb.css +3 -0
  28. package/src/ui/badge/bordered.css +8 -0
  29. package/src/ui/badge/circle.css +5 -0
  30. package/src/ui/badge/default-rgb.css +9 -0
  31. package/src/ui/badge/default.css +40 -0
  32. package/src/ui/badge/index.css +7 -0
  33. package/src/ui/badge/lg.css +3 -0
  34. package/src/ui/badge/muted.css +3 -0
  35. package/src/ui/badge/sm.css +4 -0
  36. package/src/ui/badge/square.css +4 -0
  37. package/src/ui/badge.css +1 -109
  38. package/src/ui/btn/bordered-rgb.css +3 -0
  39. package/src/ui/btn/bordered.css +8 -0
  40. package/src/ui/btn/circle.css +5 -0
  41. package/src/ui/btn/default-rgb.css +9 -0
  42. package/src/ui/btn/default.css +107 -0
  43. package/src/ui/btn/gradient-bordered-rgb.css +13 -0
  44. package/src/ui/btn/gradient-bordered.css +28 -0
  45. package/src/ui/btn/gradient.css +10 -0
  46. package/src/ui/btn/hover-fill.css +8 -0
  47. package/src/ui/btn/index.css +13 -0
  48. package/src/ui/btn/lg.css +4 -0
  49. package/src/ui/btn/loading.css +27 -0
  50. package/src/ui/btn/muted.css +4 -0
  51. package/src/ui/btn/raised.css +8 -0
  52. package/src/ui/btn/sm.css +4 -0
  53. package/src/ui/btn/square.css +4 -0
  54. package/src/ui/btn/wide.css +4 -0
  55. package/src/ui/btn.css +1 -234
  56. package/src/ui/check-rgb.css +31 -0
  57. package/src/ui/check.css +130 -0
  58. package/src/ui/control/default-rgb.css +24 -0
  59. package/src/ui/control/default.css +94 -0
  60. package/src/ui/control/floating-focus.css +8 -0
  61. package/src/ui/control/floating.css +31 -0
  62. package/src/ui/control/icon.css +66 -0
  63. package/src/ui/control/index.css +5 -0
  64. package/src/ui/control/select.css +28 -0
  65. package/src/ui/control.css +1 -0
  66. package/src/ui/group.css +34 -0
  67. package/src/ui/heading/default.css +12 -0
  68. package/src/ui/heading/index.css +3 -0
  69. package/src/ui/heading/lg.css +3 -0
  70. package/src/ui/heading/sm.css +4 -0
  71. package/src/ui/heading.css +1 -21
  72. package/src/ui/image.css +4 -4
  73. package/src/ui/{+.css → index.css} +4 -5
  74. package/src/ui/info.css +1 -1
  75. package/src/ui/label.css +1 -1
  76. package/src/ui/link/default.css +36 -0
  77. package/src/ui/link/index.css +2 -0
  78. package/src/ui/link/underlined.css +50 -0
  79. package/src/ui/link.css +1 -45
  80. package/src/ui/notice-rgb.css +6 -0
  81. package/src/ui/notice.css +9 -22
  82. package/src/ui/progress/default-rgb.css +3 -0
  83. package/src/ui/progress/default.css +39 -0
  84. package/src/ui/progress/index.css +3 -0
  85. package/src/ui/progress/lg.css +3 -0
  86. package/src/ui/progress/sm.css +3 -0
  87. package/src/ui/progress.css +1 -50
  88. package/src/ui/switch-rgb.css +11 -0
  89. package/src/ui/switch.css +23 -28
  90. package/src/ui/text-rgb.css +13 -0
  91. package/src/ui/text.css +15 -15
  92. package/src/ui/title/default.css +12 -0
  93. package/src/ui/title/index.css +3 -0
  94. package/src/ui/title/lg.css +3 -0
  95. package/src/ui/title/sm.css +3 -0
  96. package/src/ui/title.css +1 -20
  97. package/tailwind.config.cjs +1 -1
  98. package/utils/tailwind.cjs +54 -28
  99. package/utils/tailwind.js +48 -24
  100. package/src/ui/checkbox.css +0 -106
  101. package/src/ui/input.css +0 -226
  102. package/src/ui/radio.css +0 -4
  103. package/src/ui/select.css +0 -27
package/utils/tailwind.js CHANGED
@@ -1,34 +1,35 @@
1
1
  import plugin from 'tailwindcss/plugin'
2
- import twColors from "tailwindcss/colors"
2
+ import twColors from 'tailwindcss/colors'
3
3
  import lodash from 'lodash'
4
4
 
5
5
  export const defaultConfig = {
6
6
  colors: [
7
- 'default', 'light', 'dark', 'primary', 'secondary',
8
- 'warning', 'error', 'info', 'success', 'accent', `current`,
9
- 'background', 'background-lighter', 'background-darker'
7
+ 'light', 'dark', 'primary',
8
+ 'warning', 'error', 'info', 'success', 'accent', 'current',
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'],
13
14
  zIndex: [10, 20, 30, 40, 50, 60],
14
15
  spacing: ['xs', 'sm', 'base', 'md', 'lg', 'xl', '2xl', '3xl', 'section'],
15
16
  borderRadius: ['xs', 'sm', 'base', 'md', 'lg', 'xl', '2xl', '3xl', 'full'],
16
- animations: ['fade-in', 'fade-out', 'ripple'],
17
+ animations: ['fade-in', 'fade-out', 'fade-in-down', 'fade-out-up', 'ripple', 'spin', 'move-indeterminate'],
17
18
  screens: {
18
- 'xs': '22.5em',
19
- 'sm': '26em',
20
- 'md': '48em',
21
- 'lg': '60em',
22
- 'xl': '76em',
19
+ xs: '22.5em',
20
+ sm: '26em',
21
+ md: '48em',
22
+ lg: '60em',
23
+ xl: '76em',
23
24
  '2xl': '82em',
24
25
  '3xl': '88em',
25
26
  '4xl': '100em',
26
- 'xxl': '126em',
27
+ xxl: '126em',
27
28
  '2xxl': '158em'
28
29
  }
29
30
  }
30
31
 
31
- export const hexToRgb = hex => hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,(m, r, g, b) => '#' + r + r + g + g + b + b)
32
+ export const hexToRgb = hex => hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, (m, r, g, b) => '#' + r + r + g + g + b + b)
32
33
  .substring(1).match(/.{2}/g)
33
34
  .map(x => parseInt(x, 16))
34
35
 
@@ -40,9 +41,9 @@ export const getTailwindColors = (twColors) => {
40
41
  return
41
42
  }
42
43
 
43
- if (typeof twColors[color] === "object") {
44
+ if (typeof twColors[color] === 'object') {
44
45
  Object.keys(twColors[color]).forEach(variant => {
45
- accentColors.push([`${color.replace(/[A-Z]/g, m => "-" + m.toLowerCase())}-${variant}`, twColors[color][variant]])
46
+ accentColors.push([`${color.replace(/[A-Z]/g, m => '-' + m.toLowerCase())}-${variant}`, twColors[color][variant]])
46
47
  })
47
48
  } else {
48
49
  accentColors.push([color, twColors[color]])
@@ -54,11 +55,19 @@ export const getTailwindColors = (twColors) => {
54
55
 
55
56
  export const tailwindColors = (colors = []) => {
56
57
  colors.forEach(name => {
58
+ colors[name + '-rgb'] = ({ opacityValue }) => {
59
+ if (opacityValue === undefined) {
60
+ return `rgb(var(--color-${name}-rgb))`
61
+ }
62
+ return `rgb(var(--color-${name}-rgb) / ${opacityValue})`
63
+ }
64
+
57
65
  colors[name] = ({ opacityValue }) => {
58
66
  if (opacityValue === undefined) {
59
- return `rgb(var(--color-${name}))`
67
+ return `var(--color-${name})`
60
68
  }
61
- return `rgb(var(--color-${name}) / ${opacityValue})`
69
+
70
+ return `color-mix(in sRGB, var(--color-${name}) calc(${opacityValue} * 100%), transparent)`
62
71
  }
63
72
  })
64
73
 
@@ -66,27 +75,31 @@ export const tailwindColors = (colors = []) => {
66
75
  }
67
76
 
68
77
  export const tailwindColorsAccent = (colors = []) => {
69
- const result = {};
78
+ const result = {}
70
79
 
71
80
  colors.forEach(color => {
72
81
  if (Array.isArray(color)) {
73
82
  const rgb = hexToRgb(color[1])
74
83
 
75
84
  result[`.accent-${color[0]}`] = {
76
- '--color-accent': `${rgb[0]} ${rgb[1]} ${rgb[2]}`
85
+ '--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))`
77
88
  }
78
89
  } else {
79
90
  result[`.accent-${color}`] = {
80
- '--color-accent': `var(--color-${color})`
91
+ '--color-accent-rgb': `var(--color-${color}-rgb)`,
92
+ '--color-accent': `var(--color-${color})`,
93
+ '--color-accent-current': `var(--color-${color}-current, var(--color-light))`
81
94
  }
82
95
  }
83
96
  })
84
97
 
85
98
  return result
86
- };
99
+ }
87
100
 
88
101
  export const tailwindColorsCurrent = (colors = []) => {
89
- const result = {};
102
+ const result = {}
90
103
 
91
104
  colors.forEach(color => {
92
105
  if (Array.isArray(color)) {
@@ -103,7 +116,7 @@ export const tailwindColorsCurrent = (colors = []) => {
103
116
  })
104
117
 
105
118
  return result
106
- };
119
+ }
107
120
 
108
121
  export const tailwindVariables = (type, variables = [], values = {}) => {
109
122
  variables.forEach(name => {
@@ -128,10 +141,21 @@ export const tailwindAnimations = (values) => {
128
141
  export const createPlugin = (userConfig = {}) => {
129
142
  userConfig = lodash.merge(defaultConfig, userConfig)
130
143
 
131
- return plugin(({addUtilities}) => {
144
+ return plugin(({ addUtilities, theme, variants, e }) => {
132
145
  addUtilities(Object.assign(tailwindColorsAccent(getTailwindColors(twColors)), tailwindColorsAccent(userConfig.colors)))
133
146
  addUtilities(Object.assign(tailwindColorsCurrent(getTailwindColors(twColors)), tailwindColorsCurrent(userConfig.colors)))
134
147
  addUtilities(tailwindAnimations(userConfig.animations))
148
+ addUtilities([
149
+ Object.entries(theme('spacing')).map(([key, value]) => {
150
+ return {
151
+ [`.${e(`sq-${key}`)}`]: {
152
+ '--sq': `${value}`,
153
+ width: 'var(--sq)',
154
+ height: 'var(--sq)'
155
+ }
156
+ }
157
+ })
158
+ ], variants('sq'))
135
159
  }, {
136
160
  corePlugins: {
137
161
  preflight: false,
@@ -151,7 +175,7 @@ export const createPlugin = (userConfig = {}) => {
151
175
  DEFAULT: 'var(--rounded)'
152
176
  }),
153
177
  screens: userConfig.screens
154
- },
178
+ }
155
179
  }
156
180
  })
157
181
  }
@@ -1,106 +0,0 @@
1
- :where(.ui-checkbox, .ui-radio) {
2
- --ui-checkbox-width: 1.375rem;
3
- --ui-checkbox-font-size: 0.875rem;
4
- --ui-checkbox-gap: 0.625rem;
5
- --ui-checkbox-bg-raw: var(--color-background);
6
- --ui-checkbox-bg-opacity: 0.1;
7
- --ui-checkbox-border-color-raw: var(--color-current);
8
- --ui-checkbox-border-color-opacity: 0.2;
9
- --ui-checkbox-checked-bg-raw: var(--color-accent);
10
- --ui-checkbox-radius: 0.5rem;
11
- --ui-checkbox-icon: var(--icon-check);
12
- --ui-checkbox-icon-font-size: 1.125rem;
13
- --ui-checkbox-validity-font-size: 0.875rem;
14
- --ui-checkbox-validity-offset: 0.375rem;
15
- --ui-checkbox-box-shadow: none;
16
-
17
- display: flex;
18
- align-items: center;
19
- gap: 0 var(--ui-checkbox-gap);
20
- flex-wrap: wrap;
21
- width: max-content;
22
- font-size: var(--ui-checkbox-font-size);
23
-
24
- & :where(label[for], input) {
25
- cursor: pointer;
26
- }
27
-
28
- & a {
29
- color: rgb(var(--color-accent));
30
- text-decoration: underline;
31
- }
32
-
33
- & input {
34
- --color-current: var(--color-light);
35
-
36
- display: flex;
37
- width: var(--ui-checkbox-width);
38
- height: var(--ui-checkbox-width);
39
- background-color: rgb(var(--ui-checkbox-bg-raw) / var(--tw-bg-opacity, var(--ui-checkbox-bg-opacity)));
40
- border: 1px solid rgb(var(--ui-checkbox-border-color-raw) / var(--tw-border-opacity, var(--ui-checkbox-border-color-opacity)));
41
- border-radius: var(--ui-checkbox-radius);
42
- user-select: none;
43
- outline: none;
44
- justify-content: center;
45
- align-items: center;
46
- transition: var(--transition-border), var(--transition-background), var(--transition-shadow);
47
- box-shadow: var(--ui-checkbox-box-shadow);
48
- font-size: var(--ui-checkbox-icon-font-size);
49
-
50
- &::before {
51
- line-height: var(--ui-checkbox-icon-font-size);
52
- text-indent: 0;
53
- display: block;
54
- transition: var(--transition-color), var(--transition-opacity), var(--transition-transform);
55
- color: rgb(var(--color-current));
56
- content: "";
57
- background-color: currentColor;
58
- mask: var(--ui-checkbox-icon);
59
- opacity: 0;
60
- transform: scale(0);
61
- will-change: transform;
62
- width: 1em;
63
- height: 1em;
64
- }
65
-
66
- &:where(:required) {
67
- & + *::after {
68
- color: rgb(var(--color-error));
69
- content: " *";
70
- }
71
- }
72
-
73
- &:is(:hover, :focus-visible) {
74
- --ui-checkbox-bg-raw: var(--ui-checkbox-checked-bg-raw);
75
- --ui-checkbox-border-color-raw: var(--ui-checkbox-checked-bg-raw);
76
- --tw-border-opacity: 0.75;
77
- --tw-bg-opacity: 0.1;
78
- }
79
-
80
- &:focus {
81
- --ui-checkbox-box-shadow:
82
- 0 0 0 0 rgb(var(--color-current)),
83
- 0 0 0 3px rgb(var(--ui-checkbox-checked-bg-raw) / 0.2),
84
- 0 1px 2px 0 rgb(var(--color-current) / 0.05);
85
- }
86
-
87
- &:checked {
88
- --tw-border-opacity: 0;
89
-
90
- background-color: rgb(var(--ui-checkbox-checked-bg-raw));
91
-
92
- &::before {
93
- opacity: 1;
94
- transform: scale(1);
95
- }
96
- }
97
- }
98
-
99
- &.is-invalid, .is-validated & :where(input):invalid {
100
- --ui-checkbox-bg-raw: var(--color-error);
101
- --ui-checkbox-border-color-raw: var(--color-error);
102
- --ui-checkbox-checked-bg-raw: var(--color-error);
103
- --color-current: var(--color-error);
104
- --tw-border-opacity: 1;
105
- }
106
- }
package/src/ui/input.css DELETED
@@ -1,226 +0,0 @@
1
- :where(.ui-input, .ui-select) {
2
- --ui-input-height: 3rem;
3
- --ui-input-height-textarea: 8rem;
4
- --ui-input-pt-floating: 1.25rem;
5
- --ui-input-pb-floating: 0.4375rem;
6
- --ui-input-py: 0.875rem;
7
- --ui-input-px: 0.875rem;
8
- --ui-input-pl: var(--ui-input-px);
9
- --ui-input-pr: var(--ui-input-px);
10
- --ui-input-bg: rgb(var(--color-background));
11
- --ui-input-color: currentColor;
12
- --ui-input-placeholder-color: currentColor;
13
- --ui-input-placeholder-opacity: 0.5;
14
- --ui-input-font-size: 0.875rem;
15
- --ui-input-font-weight: var(--font-medium);
16
- --ui-input-border-width: 1px;
17
- --ui-input-border-color: var(--color-current);
18
- --ui-input-border-opacity: 0.15;
19
- --ui-input-border-radius: var(--rounded);
20
- --ui-input-box-shadow: none;
21
- --ui-input-icon-font-size: 1.25rem;
22
- --ui-input-icon-count-l: 1;
23
- --ui-input-icon-count-r: 1;
24
- --ui-input-icon-gap: 0.375rem;
25
- --ui-input-icon-inset-x: calc(var(--ui-input-px) - 0.25rem);
26
- --ui-input-icon-inset-x-gap: 0.125rem;
27
- --ui-input-icon-offset-l: calc(var(--ui-input-icon-inset-x) + var(--ui-input-icon-inset-x-gap) + (var(--ui-input-icon-font-size) + var(--ui-input-icon-gap)) * var(--ui-input-icon-count-l));
28
- --ui-input-icon-offset-r: calc(var(--ui-input-icon-inset-x) + var(--ui-input-icon-inset-x-gap) + (var(--ui-input-icon-font-size) + var(--ui-input-icon-gap)) * var(--ui-input-icon-count-r));
29
- --ui-input-label-floating-font-size: 0.875rem;
30
- --ui-input-label-floating-font-weight: var(--font-medium);
31
- --ui-input-label-floating-focus-transform: translateY(-0.6875rem) scale(0.8);
32
- --ui-input-label-floating-focus-opacity: 0.5;
33
-
34
- display: grid;
35
- grid-template-areas: "input";
36
- font-size: var(--ui-input-font-size);
37
- position: relative;
38
-
39
- &:has(.icon-l) {
40
- --ui-input-pl: var(--ui-input-icon-offset-l);
41
- }
42
-
43
- &:has(.icon-r) {
44
- --ui-input-pr: var(--ui-input-icon-offset-r);
45
- }
46
-
47
- &:has(.icon-l > *:nth-child(2)) {
48
- --ui-input-icon-count-r: 2;
49
- }
50
-
51
- &:has(.icon-r > *:nth-child(2)) {
52
- --ui-input-icon-count-r: 2;
53
- }
54
-
55
- & :where(svg) {
56
- font-size: var(--ui-input-icon-font-size);
57
- width: 1em;
58
- height: var(--ui-input-height);
59
- }
60
-
61
- & :where(input, textarea, select) {
62
- grid-area: input;
63
- background-clip: padding-box;
64
- background-color: var(--ui-input-bg);
65
- padding: var(--ui-input-py) var(--ui-input-pr) var(--ui-input-py) var(--ui-input-pl);
66
- transition: var(--transition-border), var(--transition-shadow);
67
- box-shadow: var(--ui-input-box-shadow);
68
- line-height: normal;
69
- font-size: inherit;
70
- height: var(--ui-input-height);
71
- font-weight: var(--ui-input-font-weight);
72
- border-radius: var(--ui-input-border-radius);
73
- color: var(--ui-input-color);
74
- border: var(--ui-input-border-width) solid rgb(var(--ui-input-border-color) / var(--ui-input-border-opacity));
75
-
76
- &:focus {
77
- --ui-input-border-opacity: 1;
78
- --ui-input-border-color: var(--color-accent);
79
- --ui-input-box-shadow:
80
- 0 0 0 0 rgb(var(--color-current)),
81
- 0 0 0 3px rgb(var(--color-accent) / 0.2),
82
- 0 1px 2px 0 rgb(var(--color-current) / 0.05);
83
- }
84
-
85
- &:disabled {
86
- cursor: default;
87
- background-color: rgb(var(--color-default) / 0.1);
88
- }
89
-
90
- &:required ~ label {
91
- &::after {
92
- color: rgb(var(--color-error));
93
- content: " *";
94
- }
95
- }
96
- }
97
-
98
- & :where(input, textarea) {
99
- &::placeholder {
100
- color: var(--ui-input-placeholder-color);
101
- opacity: var(--ui-input-placeholder-opacity);
102
- }
103
- }
104
-
105
- & :where(textarea) {
106
- resize: vertical;
107
- overflow: hidden;
108
- min-height: var(--ui-input-height-textarea);
109
- }
110
-
111
- & :where([class^="icon-"]) {
112
- grid-area: input;
113
- content: "";
114
- position: relative;
115
- line-height: 1em;
116
- display: flex;
117
- flex-direction: row;
118
- flex-shrink: 0;
119
- align-items: center;
120
- gap: var(--ui-input-icon-gap);
121
- transition: var(--transition-opacity);
122
-
123
- &:where(.icon-l) {
124
- left: var(--ui-input-icon-inset-x);
125
- margin-right: auto;
126
- }
127
-
128
- &:where(.icon-r) {
129
- right: var(--ui-input-icon-inset-x);
130
- margin-left: auto;
131
- }
132
- }
133
-
134
- & :where([aria-label]) {
135
- &::after {
136
- content: attr(aria-label);
137
- font-size: var(--ui-input-font-size);
138
- min-width: var(--ui-input-icon-font-size);
139
- text-align: center;
140
- line-height: var(--ui-input-icon-font-size);
141
- display: block;
142
- }
143
- }
144
-
145
- & :where([class*="lib-hint"]) {
146
- &::after {
147
- white-space: normal;
148
- line-height: 1.5;
149
- word-wrap: normal;
150
- width: 10rem;
151
- font-weight: var(--font-normal);
152
- font-size: 0.75rem;
153
- }
154
- }
155
-
156
- &:where(.is-floating) {
157
- --ui-input-placeholder-color: transparent;
158
-
159
- & :where(label) {
160
- grid-area: input;
161
- align-self: start;
162
- pointer-events: none;
163
- transition: transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), var(--transition-color), var(--transition-opacity);
164
- transform-origin: 0 50%;
165
- white-space: nowrap;
166
- text-overflow: ellipsis;
167
- overflow: hidden;
168
- transform: perspective(100px);
169
- will-change: transform;
170
- font-weight: var(--ui-input-label-floating-font-weight);
171
- margin-left: var(--ui-input-pl);
172
- margin-right: var(--ui-input-pr);
173
- line-height: var(--ui-input-label-floating-font-size);
174
- margin-top: calc(var(--ui-input-height) / 2 - (var(--ui-input-font-size) / 2));
175
- }
176
-
177
- & :where(input, textarea, select) {
178
- padding-top: calc(var(--ui-input-pt-floating));
179
- padding-bottom: calc(var(--ui-input-pb-floating));
180
-
181
- &:is(:focus, :not(:placeholder-shown)) ~ label {
182
- transform: var(--ui-input-label-floating-focus-transform);
183
- opacity: var(--ui-input-label-floating-focus-opacity);
184
- }
185
- }
186
- }
187
-
188
- &.is-invalid, .is-validated & :where(input, textarea, select):invalid {
189
- --ui-input-bg: rgb(var(--color-error) / 0.1);
190
- --ui-input-border-opacity: 1;
191
- --ui-input-border-color: var(--color-error);
192
- --ui-input-color: rgb(var(--color-error));
193
- --color-accent: var(--color-error);
194
- }
195
- }
196
-
197
- :where(.ui-input-group) {
198
- display: flex;
199
- flex-wrap: wrap;
200
-
201
- & :where(.ui-btn) {
202
- --ui-btn-outline-width: 1px;
203
- --ui-btn-height: 3rem;
204
-
205
- flex-grow: 1;
206
- height: auto;
207
- }
208
-
209
- & > * {
210
- &:not(:first-child) {
211
- margin-left: calc(var(--ui-input-border-width) * -1);
212
-
213
- &, & :where(input, select) {
214
- border-top-left-radius: 0;
215
- border-bottom-left-radius: 0;
216
- }
217
- }
218
-
219
- &:not(:last-child) {
220
- &, & :where(input, select) {
221
- border-top-right-radius: 0;
222
- border-bottom-right-radius: 0;
223
- }
224
- }
225
- }
226
- }
package/src/ui/radio.css DELETED
@@ -1,4 +0,0 @@
1
- :where(.ui-radio) {
2
- --ui-checkbox-icon: var(--icon-radio);
3
- --ui-checkbox-radius: 50%;
4
- }
package/src/ui/select.css DELETED
@@ -1,27 +0,0 @@
1
- :where(.ui-select) {
2
- --ui-input-icon-select-icon-font-size: 1.5rem;
3
- --ui-input-icon-count-r: 2;
4
- --ui-input-pr: var(--ui-input-icon-offset-r);
5
-
6
- & :where([class^="icon-"]) {
7
- margin-right: calc(var(--ui-input-icon-font-size) + var(--ui-input-icon-gap));
8
- }
9
-
10
- &::after {
11
- width: 1em;
12
- height: 1em;
13
- background-color: currentColor;
14
- content: "";
15
- position: absolute;
16
- z-index: 1;
17
- font-size: var(--ui-input-icon-select-icon-font-size);
18
- right: calc(var(--ui-input-height) / 4);
19
- top: calc(var(--ui-input-height) / 2);
20
- margin-top: calc(var(--ui-input-icon-select-icon-font-size) / 2 * -1);
21
- will-change: transform;
22
- transition: transform 200ms;
23
- mask: var(--icon-angle-down);
24
- pointer-events: none;
25
- grid-area: input;
26
- }
27
- }