ui-style-kit-css 2.4.1 → 2.6.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.
- package/CHANGELOG.md +75 -0
- package/README.md +92 -48
- package/dist/ui-style-kit.css +4117 -3544
- package/dist/ui-style-kit.min.css +3 -3
- package/dist/ui-style-kit.visual.css +4117 -3544
- package/dist/ui-style-kit.visual.min.css +3 -3
- package/dist/ui-style-kit.with-bridge.css +4117 -3544
- package/dist/ui-style-kit.with-bridge.min.css +3 -3
- package/dist/visual/art-deco.css +709 -288
- package/dist/visual/bauhaus.css +2 -2
- package/dist/visual/bento.css +2 -2
- package/dist/visual/brutalism.css +494 -100
- package/dist/visual/clay.css +2 -2
- package/dist/visual/cyberpunk.css +587 -193
- package/dist/visual/data-terminal.css +586 -192
- package/dist/visual/editorial-luxe.css +589 -195
- package/dist/visual/industrial-utility.css +653 -259
- package/dist/visual/maximalist.css +571 -177
- package/dist/visual/minimal-saas.css +520 -126
- package/dist/visual/neo-noir.css +2 -2
- package/dist/visual/neumorphism.css +543 -149
- package/dist/visual/organic-modern.css +2 -2
- package/dist/visual/paper-editorial.css +668 -274
- package/dist/visual/retro-glass.css +600 -206
- package/dist/visual/retrofuturism.css +548 -154
- package/dist/visual/tactile.css +561 -167
- package/dist/visual/technical-blueprint.css +627 -225
- package/dist/visual/y2k.css +543 -137
- package/docs/ART-DECO.md +2 -2
- package/docs/BRIDGE-MIGRATION.md +38 -0
- package/docs/ECOSYSTEM.md +11 -11
- package/docs/PUBLISHING.md +12 -12
- package/docs/RELEASE-2.4.2.md +37 -0
- package/docs/RELEASE-2.5.0.md +34 -0
- package/docs/RELEASE-2.6.0.md +36 -0
- package/docs/STYLE-GUIDE.md +10 -0
- package/manifest.json +466 -240
- package/package.json +32 -4
- package/styles/art-deco.css +68 -22
- package/styles/bauhaus.css +8 -0
- package/styles/bento.css +19 -6
- package/styles/brutalism.css +8 -0
- package/styles/clay.css +11 -3
- package/styles/clean-defaults.css +295 -0
- package/styles/component-composition.css +829 -0
- package/styles/components.css +79 -0
- package/styles/cyberpunk.css +8 -0
- package/styles/data-terminal.css +8 -0
- package/styles/editorial-luxe.css +8 -0
- package/styles/industrial-utility.css +8 -0
- package/styles/interactive-surface-theme.css +23 -23
- package/styles/maximalist.css +8 -0
- package/styles/minimal-saas.css +8 -0
- package/styles/native-elements.css +7 -0
- package/styles/neo-noir.css +8 -0
- package/styles/neumorphism.css +8 -0
- package/styles/organic-modern.css +8 -1
- package/styles/paper-editorial.css +8 -0
- package/styles/retro-glass.css +9 -1
- package/styles/retrofuturism.css +8 -0
- package/styles/tactile.css +8 -0
- package/styles/technical-blueprint.css +16 -1
- package/styles/theme-colors.css +3 -0
- package/styles/y2k.css +25 -3
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/* =========================================================
|
|
2
|
+
UI Style Kit CSS - Clean Defaults
|
|
3
|
+
|
|
4
|
+
Supplies conservative spacing and decoration defaults while
|
|
5
|
+
keeping deliberate flush and underlined treatments opt-in.
|
|
6
|
+
========================================================= */
|
|
7
|
+
|
|
8
|
+
@layer ui-style-kit.components {
|
|
9
|
+
[data-ui][data-mode]:not([data-ui="technical-blueprint"]) {
|
|
10
|
+
--usk-element-margin-min: 2px;
|
|
11
|
+
--usk-element-padding-min: 2px;
|
|
12
|
+
--usk-wrapper-margin-min: var(--usk-element-margin-min);
|
|
13
|
+
--usk-wrapper-padding-min: var(--usk-element-padding-min);
|
|
14
|
+
--usk-compact-padding-block-min: 2px;
|
|
15
|
+
--usk-compact-padding-inline-min: 4px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Establishes the library-wide non-zero spacing floor. Preset declarations in
|
|
20
|
+
* the later preset layer retain their roomier values, while either flush class
|
|
21
|
+
* provides an explicit opt-out for intentionally adjoining elements. Technical
|
|
22
|
+
* Blueprint is exempt because its drafting grammar intentionally joins controls.
|
|
23
|
+
*/
|
|
24
|
+
[data-ui][data-mode]:not([data-ui="technical-blueprint"]) :where(:not(.flush):not(.usk-flush)) {
|
|
25
|
+
margin: var(--usk-element-margin-min);
|
|
26
|
+
padding: var(--usk-element-padding-min);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** Compact controls remain operable even when a preset omits its own padding. */
|
|
30
|
+
[data-ui][data-mode]:not([data-ui="technical-blueprint"]) :where(
|
|
31
|
+
button,
|
|
32
|
+
input[type="button"],
|
|
33
|
+
input[type="submit"],
|
|
34
|
+
input[type="reset"],
|
|
35
|
+
[class~="usk-button"],
|
|
36
|
+
[class~="usk-icon-button"],
|
|
37
|
+
[class~="usk-badge"],
|
|
38
|
+
[class~="ui-button"],
|
|
39
|
+
[class~="ui-icon-button"],
|
|
40
|
+
[class~="ui-badge"],
|
|
41
|
+
[class$="-button"], [class*="-button "],
|
|
42
|
+
[class$="-icon-button"], [class*="-icon-button "],
|
|
43
|
+
[class$="-badge"], [class*="-badge "]
|
|
44
|
+
) {
|
|
45
|
+
padding-block: var(--usk-compact-padding-block-min);
|
|
46
|
+
padding-inline: var(--usk-compact-padding-inline-min);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@layer ui-style-kit.clean_defaults {
|
|
51
|
+
/** Keeps semantic state paint paired when a preset also owns broad anchor or input rules. */
|
|
52
|
+
[data-ui][data-mode] :where(
|
|
53
|
+
[class~="usk-pagination-link"][aria-current="page"],
|
|
54
|
+
[class~="ui-pagination-link"][aria-current="page"]
|
|
55
|
+
) {
|
|
56
|
+
color: var(--usk-native-on-primary);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** Separates compact page numbers from roomier Previous and Next bookends. */
|
|
60
|
+
[data-ui][data-mode] :where([class~="usk-pagination-link"], [class~="ui-pagination-link"]) {
|
|
61
|
+
display: inline-flex;
|
|
62
|
+
align-items: center;
|
|
63
|
+
justify-content: center;
|
|
64
|
+
box-sizing: border-box;
|
|
65
|
+
line-height: 1;
|
|
66
|
+
vertical-align: middle;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
[data-ui][data-mode] :where(
|
|
70
|
+
[class~="usk-pagination-link"][data-pagination-kind="page"],
|
|
71
|
+
[class~="ui-pagination-link"][data-pagination-kind="page"]
|
|
72
|
+
) {
|
|
73
|
+
min-inline-size: 2.25rem;
|
|
74
|
+
min-block-size: 2.25rem;
|
|
75
|
+
padding: 2px 4px;
|
|
76
|
+
font-size: .9em;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
[data-ui][data-mode] :where(
|
|
80
|
+
[class~="usk-pagination-link"][data-pagination-kind="direction"],
|
|
81
|
+
[class~="ui-pagination-link"][data-pagination-kind="direction"]
|
|
82
|
+
) {
|
|
83
|
+
min-inline-size: 2.75rem;
|
|
84
|
+
min-block-size: 2.75rem;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** Uses one centering model for native and semantic button content. */
|
|
88
|
+
[data-ui][data-mode] :where(
|
|
89
|
+
button,
|
|
90
|
+
input[type="button"],
|
|
91
|
+
input[type="submit"],
|
|
92
|
+
input[type="reset"],
|
|
93
|
+
[class~="usk-button"],
|
|
94
|
+
[class~="usk-icon-button"],
|
|
95
|
+
[class~="ui-button"],
|
|
96
|
+
[class~="ui-icon-button"]
|
|
97
|
+
) {
|
|
98
|
+
display: inline-flex;
|
|
99
|
+
align-items: center;
|
|
100
|
+
justify-content: center;
|
|
101
|
+
line-height: 1;
|
|
102
|
+
vertical-align: middle;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
[data-ui][data-mode] :where(input[type="checkbox"]:checked, input[type="radio"]:checked) {
|
|
106
|
+
color: var(--usk-native-choice-mark-color);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Provides choice-wrapper alignment below preset paint so authored spacing and
|
|
113
|
+
* density remain authoritative when a preset supplies them.
|
|
114
|
+
*/
|
|
115
|
+
@layer ui-style-kit.components {
|
|
116
|
+
[data-ui][data-mode] :where(
|
|
117
|
+
[class~="usk-check"],
|
|
118
|
+
[class~="usk-radio"],
|
|
119
|
+
[class~="usk-switch"],
|
|
120
|
+
[class~="ui-check"],
|
|
121
|
+
[class~="ui-radio"],
|
|
122
|
+
[class~="ui-switch"]
|
|
123
|
+
) {
|
|
124
|
+
display: inline-flex;
|
|
125
|
+
align-items: center;
|
|
126
|
+
gap: var(--usk-native-field-gap, .5rem);
|
|
127
|
+
margin: var(--usk-element-margin-min);
|
|
128
|
+
padding: .25rem .5rem;
|
|
129
|
+
line-height: 1.25;
|
|
130
|
+
vertical-align: middle;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
[data-ui][data-mode] :where(
|
|
134
|
+
[class~="ui-check-control"],
|
|
135
|
+
[class~="ui-radio-control"],
|
|
136
|
+
[class~="usk-check-control"],
|
|
137
|
+
[class~="usk-radio-control"],
|
|
138
|
+
[class~="usk-switch-track"],
|
|
139
|
+
[class~="ui-switch-track"]
|
|
140
|
+
) {
|
|
141
|
+
position: relative;
|
|
142
|
+
box-sizing: border-box;
|
|
143
|
+
flex: 0 0 auto;
|
|
144
|
+
align-self: center;
|
|
145
|
+
margin: var(--usk-element-margin-min);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@layer ui-style-kit.clean_defaults {
|
|
150
|
+
|
|
151
|
+
/** Keeps the moving switch face inside its preset-owned track dimensions. */
|
|
152
|
+
[data-ui][data-mode] :where([class~="usk-switch-thumb"], [class~="ui-switch-thumb"]) {
|
|
153
|
+
box-sizing: border-box;
|
|
154
|
+
margin: 0;
|
|
155
|
+
padding: 0;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Protects workflow-stepper markup from preset classes that use the same suffix
|
|
160
|
+
* for numeric steppers or other three-column controls.
|
|
161
|
+
*/
|
|
162
|
+
[data-ui][data-mode] :where([class~="usk-stepper"], [class~="ui-stepper"]) {
|
|
163
|
+
display: flex;
|
|
164
|
+
flex-wrap: wrap;
|
|
165
|
+
align-items: stretch;
|
|
166
|
+
grid-template-columns: none;
|
|
167
|
+
inline-size: 100%;
|
|
168
|
+
max-inline-size: 100%;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
[data-ui][data-mode] :where([class~="usk-step"], [class~="ui-step"]) {
|
|
172
|
+
display: flex;
|
|
173
|
+
flex: 1 1 12rem;
|
|
174
|
+
align-items: center;
|
|
175
|
+
inline-size: auto;
|
|
176
|
+
min-inline-size: min(100%, 12rem);
|
|
177
|
+
max-inline-size: 100%;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
[data-ui][data-mode] :where([class~="usk-step-label"], [class~="ui-step-label"]) {
|
|
181
|
+
flex: 1 1 auto;
|
|
182
|
+
inline-size: auto;
|
|
183
|
+
min-inline-size: 8ch;
|
|
184
|
+
max-inline-size: 100%;
|
|
185
|
+
writing-mode: horizontal-tb;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
@layer ui-style-kit.clean_defaults {
|
|
191
|
+
|
|
192
|
+
[data-ui][data-mode] :where(
|
|
193
|
+
[class~="ui-check"] > input:focus-visible + [class~="ui-check-control"],
|
|
194
|
+
[class~="ui-radio"] > input:focus-visible + [class~="ui-radio-control"],
|
|
195
|
+
[class~="ui-switch"] > input:focus-visible + [class~="ui-switch-track"],
|
|
196
|
+
[class~="usk-check"] > input:focus-visible + [class~="usk-check-control"],
|
|
197
|
+
[class~="usk-radio"] > input:focus-visible + [class~="usk-radio-control"],
|
|
198
|
+
[class~="usk-switch"] > input:focus-visible + [class~="usk-switch-track"]
|
|
199
|
+
) {
|
|
200
|
+
outline: 2px solid var(--usk-native-focus);
|
|
201
|
+
outline-offset: 2px;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/** Keeps native choice inputs focusable without painting a duplicate control. */
|
|
205
|
+
[data-ui][data-mode] :where(
|
|
206
|
+
[class~="usk-check"],
|
|
207
|
+
[class~="usk-radio"],
|
|
208
|
+
[class~="usk-switch"],
|
|
209
|
+
[class~="ui-check"],
|
|
210
|
+
[class~="ui-radio"],
|
|
211
|
+
[class~="ui-switch"]
|
|
212
|
+
) > input:is([type="checkbox"], [type="radio"]) {
|
|
213
|
+
position: absolute;
|
|
214
|
+
inline-size: 1px;
|
|
215
|
+
block-size: 1px;
|
|
216
|
+
margin: -1px;
|
|
217
|
+
padding: 0;
|
|
218
|
+
overflow: hidden;
|
|
219
|
+
clip: rect(0 0 0 0);
|
|
220
|
+
clip-path: inset(50%);
|
|
221
|
+
white-space: nowrap;
|
|
222
|
+
border: 0;
|
|
223
|
+
opacity: 0;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/** Centers fallback initials while keeping accessible status metadata out of the avatar grid. */
|
|
227
|
+
[data-ui][data-mode] :where([class~="usk-avatar"], [class~="ui-avatar"]) > [aria-hidden="true"] {
|
|
228
|
+
display: inline-flex;
|
|
229
|
+
align-items: center;
|
|
230
|
+
justify-content: center;
|
|
231
|
+
inline-size: 100%;
|
|
232
|
+
block-size: 100%;
|
|
233
|
+
line-height: 1;
|
|
234
|
+
translate: 0 .05em;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
[data-ui][data-mode] :where([class~="usk-avatar"], [class~="ui-avatar"]) > [role="status"] {
|
|
238
|
+
position: absolute;
|
|
239
|
+
inset-block-end: 0;
|
|
240
|
+
inset-inline-end: 0;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/** Keeps the native remove action compact inside a chip without requiring a React-only class. */
|
|
244
|
+
[data-ui][data-mode] :where([class~="usk-chip"], [class~="ui-chip"]) > button {
|
|
245
|
+
display: inline-flex;
|
|
246
|
+
flex: 0 0 auto;
|
|
247
|
+
align-items: center;
|
|
248
|
+
align-self: center;
|
|
249
|
+
justify-content: center;
|
|
250
|
+
box-sizing: border-box;
|
|
251
|
+
inline-size: 1.5rem;
|
|
252
|
+
block-size: 1.5rem;
|
|
253
|
+
min-inline-size: 1.5rem;
|
|
254
|
+
min-block-size: 1.5rem;
|
|
255
|
+
margin: var(--usk-element-margin-min);
|
|
256
|
+
padding: 2px;
|
|
257
|
+
line-height: 1;
|
|
258
|
+
vertical-align: middle;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
[data-ui][data-mode] :where([class~="usk-chip"], [class~="ui-chip"]) > button > svg {
|
|
262
|
+
display: block;
|
|
263
|
+
inline-size: 0.75rem;
|
|
264
|
+
block-size: 0.75rem;
|
|
265
|
+
margin: 0;
|
|
266
|
+
padding: 0;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/** Normalizes semantic SVG icons without requiring a framework-specific class. */
|
|
270
|
+
[data-ui][data-mode] :where([data-ui-icon]) {
|
|
271
|
+
display: block;
|
|
272
|
+
flex: 0 0 auto;
|
|
273
|
+
inline-size: 1em;
|
|
274
|
+
block-size: 1em;
|
|
275
|
+
margin: 0;
|
|
276
|
+
padding: 0;
|
|
277
|
+
overflow: visible;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/** Removes decorative underlines while preserving semantic edit notation. */
|
|
281
|
+
[data-ui][data-mode] :where(*:not(u):not(ins):not(del):not(s):not(.usk-underline)) {
|
|
282
|
+
text-decoration-line: none;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/** Explicitly restores an underline when a consumer chooses that treatment. */
|
|
286
|
+
[data-ui][data-mode] .usk-underline {
|
|
287
|
+
text-decoration-line: underline !important;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/** Explicitly removes the library's element spacing contract. */
|
|
291
|
+
[data-ui][data-mode] :where(.flush, .usk-flush) {
|
|
292
|
+
margin: 0 !important;
|
|
293
|
+
padding: 0 !important;
|
|
294
|
+
}
|
|
295
|
+
}
|