ui-style-kit-css 1.2.2 → 2.0.2

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 (47) hide show
  1. package/CHANGELOG.md +44 -1
  2. package/CONTRIBUTING.md +6 -5
  3. package/README.md +141 -17
  4. package/STYLE-MAP.md +24 -0
  5. package/demo/assets/README.md +23 -0
  6. package/demo/assets/android-chrome-192x192.png +0 -0
  7. package/demo/assets/android-chrome-512x512.png +0 -0
  8. package/demo/assets/apple-touch-icon.png +0 -0
  9. package/demo/assets/browserconfig.xml +9 -0
  10. package/demo/assets/favicon-128x128.png +0 -0
  11. package/demo/assets/favicon-16x16.png +0 -0
  12. package/demo/assets/favicon-256x256.png +0 -0
  13. package/demo/assets/favicon-32x32.png +0 -0
  14. package/demo/assets/favicon-384x384.png +0 -0
  15. package/demo/assets/favicon-48x48.png +0 -0
  16. package/demo/assets/favicon-64x64.png +0 -0
  17. package/demo/assets/favicon-96x96.png +0 -0
  18. package/demo/assets/favicon-head-snippet.html +11 -0
  19. package/demo/assets/favicon-master-1024.png +0 -0
  20. package/demo/assets/favicon.ico +0 -0
  21. package/demo/assets/favicon.svg +26 -0
  22. package/demo/assets/mstile-150x150.png +0 -0
  23. package/demo/assets/safari-pinned-tab.svg +3 -0
  24. package/demo/assets/site.webmanifest +25 -0
  25. package/demo/index.html +1087 -73
  26. package/dist/ui-style-kit.css +2932 -8339
  27. package/dist/ui-style-kit.min.css +1 -1
  28. package/dist/ui-style-kit.with-bridge.css +5861 -0
  29. package/dist/ui-style-kit.with-bridge.min.css +1 -0
  30. package/docs/PUBLISHING.md +3 -3
  31. package/docs/STYLE-GUIDE.md +3 -1
  32. package/docs/TOKENS.md +215 -10
  33. package/package.json +17 -5
  34. package/styles/bauhaus.css +142 -702
  35. package/styles/bento.css +142 -701
  36. package/styles/brutalism.css +137 -702
  37. package/styles/cyberpunk.css +128 -699
  38. package/styles/interactive-surface-bridge.css +147 -311
  39. package/styles/maximalist.css +143 -702
  40. package/styles/minimal-saas.css +138 -701
  41. package/styles/native-elements.css +374 -0
  42. package/styles/neumorphism.css +144 -702
  43. package/styles/retro-glass.css +131 -702
  44. package/styles/retrofuturism.css +144 -702
  45. package/styles/tactile.css +142 -701
  46. package/styles/theme-colors.css +787 -0
  47. package/styles/y2k.css +122 -696
@@ -0,0 +1,374 @@
1
+ /* =========================================================
2
+ UI Style Kit CSS - Shared Native Element Layer
3
+
4
+ Native fallback selectors are shared so UI presets can focus
5
+ on visual identity while inheriting the same semantic coverage.
6
+ Presets map --usk-native-* tokens to their public prefix tokens.
7
+ ========================================================= */
8
+
9
+ @layer ui-style-kit.native_elements {
10
+ [data-ui][data-theme][data-mode] {
11
+ --usk-native-surface: rgb(var(--usk-surface-rgb));
12
+ --usk-native-surface-strong: rgb(var(--usk-surface-strong-rgb));
13
+ --usk-native-surface-soft: rgb(var(--usk-surface-soft-rgb));
14
+ --usk-native-card-bg: var(--usk-native-surface);
15
+ --usk-native-control-bg: var(--usk-native-surface-soft);
16
+ --usk-native-text: rgb(var(--usk-text-rgb));
17
+ --usk-native-text-muted: rgb(var(--usk-text-muted-rgb));
18
+ --usk-native-border: rgb(var(--usk-border-rgb));
19
+ --usk-native-primary: rgb(var(--usk-primary-rgb));
20
+ --usk-native-primary-hover: rgb(var(--usk-primary-hover-rgb));
21
+ --usk-native-on-primary: rgb(var(--usk-primary-text-rgb));
22
+ --usk-native-focus: rgb(var(--usk-focus-rgb));
23
+ --usk-native-success: rgb(var(--usk-success-rgb));
24
+ --usk-native-warning: rgb(var(--usk-warning-rgb));
25
+ --usk-native-danger: rgb(var(--usk-danger-rgb));
26
+ --usk-native-link: rgb(var(--usk-link-rgb));
27
+ --usk-native-font-body: inherit;
28
+ --usk-native-font-heading: inherit;
29
+ --usk-native-font-control: inherit;
30
+ --usk-native-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
31
+ --usk-native-radius-sm: .5rem;
32
+ --usk-native-radius: .75rem;
33
+ --usk-native-radius-lg: 1rem;
34
+ --usk-native-border-width: 1px;
35
+ --usk-native-field-gap: .5rem;
36
+ --usk-native-panel-padding: 1rem;
37
+ --usk-native-control-padding-block: .72rem;
38
+ --usk-native-control-padding-inline: .95rem;
39
+ --usk-native-shadow: none;
40
+ --usk-native-shadow-md: var(--usk-native-shadow);
41
+ --usk-native-focus-ring: 0 0 0 3px rgb(var(--usk-focus-rgb) / .28);
42
+ }
43
+
44
+ [data-ui][data-theme][data-mode] :where(h1, h2, h3, h4, h5, h6) {
45
+ color: var(--usk-native-text);
46
+ font-family: var(--usk-native-font-heading);
47
+ line-height: 1.15;
48
+ margin: 0 0 .65em;
49
+ text-wrap: balance;
50
+ }
51
+
52
+ [data-ui][data-theme][data-mode] :where(h1) { font-size: clamp(2rem, 5vw, 3.5rem); }
53
+ [data-ui][data-theme][data-mode] :where(h2) { font-size: clamp(1.55rem, 3vw, 2.35rem); }
54
+ [data-ui][data-theme][data-mode] :where(h3) { font-size: clamp(1.25rem, 2vw, 1.65rem); }
55
+
56
+ [data-ui][data-theme][data-mode] :where(p) {
57
+ margin: 0 0 1rem;
58
+ color: var(--usk-native-text-muted);
59
+ line-height: 1.7;
60
+ }
61
+
62
+ [data-ui][data-theme][data-mode] :where(a) {
63
+ color: var(--usk-native-link);
64
+ text-decoration-thickness: .08em;
65
+ text-underline-offset: .18em;
66
+ }
67
+
68
+ [data-ui][data-theme][data-mode] :where(a:hover) { color: var(--usk-native-primary-hover); }
69
+
70
+ [data-ui][data-theme][data-mode] :where(ul, ol, menu) {
71
+ margin: 0 0 1rem;
72
+ padding-left: 1.35rem;
73
+ color: var(--usk-native-text-muted);
74
+ }
75
+
76
+ [data-ui][data-theme][data-mode] :where(li) { margin-block: .25rem; }
77
+
78
+ [data-ui][data-theme][data-mode] :where(blockquote) {
79
+ margin: 1.25rem 0;
80
+ padding: 1rem 1.25rem;
81
+ color: var(--usk-native-text);
82
+ background: var(--usk-native-surface-soft);
83
+ border-left: .35rem solid var(--usk-native-primary);
84
+ border-radius: var(--usk-native-radius);
85
+ }
86
+
87
+ [data-ui][data-theme][data-mode] :where(code, kbd, samp) {
88
+ padding: .15em .35em;
89
+ color: var(--usk-native-text);
90
+ background: var(--usk-native-surface-soft);
91
+ border: var(--usk-native-border-width) solid color-mix(in srgb, var(--usk-native-border) 62%, transparent);
92
+ border-radius: var(--usk-native-radius-sm);
93
+ font-family: var(--usk-native-font-mono);
94
+ font-size: .92em;
95
+ }
96
+
97
+ [data-ui][data-theme][data-mode] :where(pre) {
98
+ overflow: auto;
99
+ margin: 1rem 0;
100
+ padding: 1rem;
101
+ color: var(--usk-native-text);
102
+ background: var(--usk-native-surface-soft);
103
+ border: var(--usk-native-border-width) solid var(--usk-native-border);
104
+ border-radius: var(--usk-native-radius);
105
+ }
106
+
107
+ [data-ui][data-theme][data-mode] :where(pre code) {
108
+ display: block;
109
+ padding: 0;
110
+ background: transparent;
111
+ border: 0;
112
+ }
113
+
114
+ [data-ui][data-theme][data-mode] :where(hr) {
115
+ height: 1px;
116
+ margin: 2rem 0;
117
+ background: var(--usk-native-border);
118
+ border: 0;
119
+ }
120
+
121
+ [data-ui][data-theme][data-mode] :where(mark) {
122
+ padding-inline: .15em;
123
+ color: var(--usk-native-text);
124
+ background: color-mix(in srgb, var(--usk-native-warning) 32%, transparent);
125
+ border-radius: .2em;
126
+ }
127
+
128
+ [data-ui][data-theme][data-mode] :where(small, sub, sup, rt, rp) { color: var(--usk-native-text-muted); }
129
+ [data-ui][data-theme][data-mode] :where(rt, rp) { font-size: .72em; }
130
+
131
+ [data-ui][data-theme][data-mode] :where(abbr[title]) {
132
+ text-decoration: underline dotted var(--usk-native-primary);
133
+ text-underline-offset: .18em;
134
+ cursor: help;
135
+ }
136
+
137
+ [data-ui][data-theme][data-mode] :where(img, picture, video, canvas, svg, iframe, audio, object, embed, math) {
138
+ max-width: 100%;
139
+ }
140
+
141
+ [data-ui][data-theme][data-mode] :where(img, video, canvas, svg, iframe) { height: auto; }
142
+
143
+ [data-ui][data-theme][data-mode] :where(figure) { margin: 1.25rem 0; }
144
+
145
+ [data-ui][data-theme][data-mode] :where(figcaption) {
146
+ margin-top: .5rem;
147
+ color: var(--usk-native-text-muted);
148
+ font-size: .9rem;
149
+ }
150
+
151
+ [data-ui][data-theme][data-mode] :where(fieldset) {
152
+ display: grid;
153
+ gap: .9rem;
154
+ min-inline-size: 0;
155
+ margin: 0 0 1rem;
156
+ padding: var(--usk-native-panel-padding);
157
+ background: color-mix(in srgb, var(--usk-native-card-bg) 88%, transparent);
158
+ border: var(--usk-native-border-width) solid var(--usk-native-border);
159
+ border-radius: var(--usk-native-radius);
160
+ }
161
+
162
+ [data-ui][data-theme][data-mode] :where(legend) {
163
+ padding-inline: .35rem;
164
+ color: var(--usk-native-text);
165
+ font-weight: 900;
166
+ }
167
+
168
+ [data-ui][data-theme][data-mode] :where(label) {
169
+ color: var(--usk-native-text);
170
+ font-weight: 750;
171
+ }
172
+
173
+ [data-ui][data-theme][data-mode] :where(label:has(input), label:has(select), label:has(textarea)) {
174
+ display: grid;
175
+ gap: var(--usk-native-field-gap);
176
+ align-content: start;
177
+ }
178
+
179
+ [data-ui][data-theme][data-mode] :where(label:has(input[type="checkbox"]), label:has(input[type="radio"])) {
180
+ display: inline-flex;
181
+ gap: var(--usk-native-field-gap);
182
+ align-items: center;
183
+ }
184
+
185
+ [data-ui][data-theme][data-mode] :where(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]), textarea, select) {
186
+ width: 100%;
187
+ min-height: 2.75rem;
188
+ padding: var(--usk-native-control-padding-block) var(--usk-native-control-padding-inline);
189
+ color: var(--usk-native-text);
190
+ background: var(--usk-native-control-bg);
191
+ border: var(--usk-native-border-width) solid var(--usk-native-border);
192
+ border-radius: var(--usk-native-radius);
193
+ font: inherit;
194
+ }
195
+
196
+ [data-ui][data-theme][data-mode] :where(textarea) {
197
+ min-height: 7rem;
198
+ resize: vertical;
199
+ }
200
+
201
+ [data-ui][data-theme][data-mode] :where(input, textarea, select, button) { font: inherit; }
202
+
203
+ [data-ui][data-theme][data-mode] :where(button:not([class]), input[type="button"]:not([class]), input[type="submit"]:not([class]), input[type="reset"]:not([class])) {
204
+ min-height: 2.75rem;
205
+ padding: .7rem 1rem;
206
+ color: var(--usk-native-on-primary);
207
+ background: var(--usk-native-primary);
208
+ border: var(--usk-native-border-width) solid var(--usk-native-primary);
209
+ border-radius: var(--usk-native-radius);
210
+ font-family: var(--usk-native-font-control);
211
+ font-weight: 850;
212
+ cursor: pointer;
213
+ }
214
+
215
+ [data-ui][data-theme][data-mode] :where(button:not([class]):hover, input[type="button"]:not([class]):hover, input[type="submit"]:not([class]):hover, input[type="reset"]:not([class]):hover) {
216
+ background: var(--usk-native-primary-hover);
217
+ border-color: var(--usk-native-primary-hover);
218
+ }
219
+
220
+ [data-ui][data-theme][data-mode] :where(input[type="checkbox"], input[type="radio"]) {
221
+ inline-size: 1.1rem;
222
+ block-size: 1.1rem;
223
+ accent-color: var(--usk-native-primary);
224
+ }
225
+
226
+ [data-ui][data-theme][data-mode] :where(input[type="range"]) {
227
+ width: 100%;
228
+ accent-color: var(--usk-native-primary);
229
+ }
230
+
231
+ [data-ui][data-theme][data-mode] :where(input[type="color"]) {
232
+ inline-size: 3rem;
233
+ block-size: 2.4rem;
234
+ padding: .2rem;
235
+ background: var(--usk-native-control-bg);
236
+ border: var(--usk-native-border-width) solid var(--usk-native-border);
237
+ border-radius: var(--usk-native-radius-sm);
238
+ }
239
+
240
+ [data-ui][data-theme][data-mode] :where(input[type="file"]) { color: var(--usk-native-text-muted); }
241
+
242
+ [data-ui][data-theme][data-mode] :where(input[type="file"]::file-selector-button) {
243
+ margin-inline-end: .75rem;
244
+ padding: .55rem .8rem;
245
+ color: var(--usk-native-on-primary);
246
+ background: var(--usk-native-primary);
247
+ border: var(--usk-native-border-width) solid var(--usk-native-primary);
248
+ border-radius: var(--usk-native-radius-sm);
249
+ font-weight: 800;
250
+ cursor: pointer;
251
+ }
252
+
253
+ [data-ui][data-theme][data-mode] :where(input:disabled, textarea:disabled, select:disabled, button:disabled, [aria-disabled="true"]) {
254
+ opacity: .55;
255
+ cursor: not-allowed;
256
+ }
257
+
258
+ [data-ui][data-theme][data-mode] :where(input:invalid, textarea:invalid, select:invalid, [aria-invalid="true"]) {
259
+ border-color: var(--usk-native-danger);
260
+ }
261
+
262
+ [data-ui][data-theme][data-mode] :where(table) {
263
+ width: 100%;
264
+ margin: 1rem 0;
265
+ overflow: hidden;
266
+ background: var(--usk-native-surface);
267
+ border: var(--usk-native-border-width) solid var(--usk-native-border);
268
+ border-radius: var(--usk-native-radius);
269
+ border-collapse: collapse;
270
+ }
271
+
272
+ [data-ui][data-theme][data-mode] :where(caption) {
273
+ caption-side: bottom;
274
+ padding: .75rem;
275
+ color: var(--usk-native-text-muted);
276
+ font-size: .9rem;
277
+ }
278
+
279
+ [data-ui][data-theme][data-mode] :where(th, td) {
280
+ padding: .8rem .9rem;
281
+ text-align: left;
282
+ border-bottom: var(--usk-native-border-width) solid var(--usk-native-border);
283
+ }
284
+
285
+ [data-ui][data-theme][data-mode] :where(th) {
286
+ color: var(--usk-native-text);
287
+ background: color-mix(in srgb, var(--usk-native-primary) 10%, transparent);
288
+ }
289
+
290
+ [data-ui][data-theme][data-mode] :where(td) { color: var(--usk-native-text-muted); }
291
+
292
+ [data-ui][data-theme][data-mode] :where(details) {
293
+ margin: 1rem 0;
294
+ padding: .9rem 1rem;
295
+ color: var(--usk-native-text);
296
+ background: var(--usk-native-surface);
297
+ border: var(--usk-native-border-width) solid var(--usk-native-border);
298
+ border-radius: var(--usk-native-radius);
299
+ }
300
+
301
+ [data-ui][data-theme][data-mode] :where(summary) {
302
+ color: var(--usk-native-text);
303
+ font-weight: 900;
304
+ cursor: pointer;
305
+ }
306
+
307
+ [data-ui][data-theme][data-mode] :where(dialog) {
308
+ max-width: min(92vw, 42rem);
309
+ padding: 0;
310
+ color: var(--usk-native-text);
311
+ background: var(--usk-native-surface-strong);
312
+ border: var(--usk-native-border-width) solid var(--usk-native-border);
313
+ border-radius: var(--usk-native-radius-lg);
314
+ box-shadow: var(--usk-native-shadow-md), 0 30px 80px rgb(0 0 0 / .42);
315
+ }
316
+
317
+ [data-ui][data-theme][data-mode] :where(dialog::backdrop) { background: rgb(0 0 0 / .62); }
318
+
319
+ [data-ui][data-theme][data-mode] :where(progress, meter) {
320
+ width: 100%;
321
+ min-height: .9rem;
322
+ accent-color: var(--usk-native-primary);
323
+ }
324
+
325
+ [data-ui][data-theme][data-mode] :where(main, section, header, footer, nav, article, aside, address) {
326
+ color: var(--usk-native-text);
327
+ }
328
+
329
+ [data-ui][data-theme][data-mode] :where(article, aside) {
330
+ padding: var(--usk-native-panel-padding);
331
+ color: var(--usk-native-text);
332
+ background: var(--usk-native-card-bg);
333
+ border: var(--usk-native-border-width) solid var(--usk-native-border);
334
+ border-radius: var(--usk-native-radius-lg);
335
+ box-shadow: var(--usk-native-shadow);
336
+ }
337
+
338
+ [data-ui][data-theme][data-mode] :where(dl) {
339
+ margin: 0 0 1rem;
340
+ color: var(--usk-native-text-muted);
341
+ }
342
+
343
+ [data-ui][data-theme][data-mode] :where(dt) {
344
+ color: var(--usk-native-text);
345
+ font-weight: 900;
346
+ }
347
+
348
+ [data-ui][data-theme][data-mode] :where(dd) { margin: .25rem 0 .75rem 1.25rem; }
349
+ [data-ui][data-theme][data-mode] :where(strong, b) { color: var(--usk-native-text); font-weight: 900; }
350
+ [data-ui][data-theme][data-mode] :where(em, i, cite, var, q) { color: var(--usk-native-text); }
351
+ [data-ui][data-theme][data-mode] :where(ins) { color: var(--usk-native-text); text-decoration-color: var(--usk-native-success); }
352
+ [data-ui][data-theme][data-mode] :where(del, s) { color: var(--usk-native-text); text-decoration-color: var(--usk-native-danger); }
353
+ [data-ui][data-theme][data-mode] :where(output) { color: var(--usk-native-text); font-weight: 800; }
354
+ [data-ui][data-theme][data-mode] :where(optgroup, option) { color: var(--usk-native-text); background: var(--usk-native-surface); }
355
+ [data-ui][data-theme][data-mode] :where(time, data, dfn, ruby) { color: var(--usk-native-text); }
356
+ [data-ui][data-theme][data-mode] :where(search) { display: block; color: var(--usk-native-text); }
357
+
358
+ [data-ui][data-theme][data-mode] :where(:focus-visible) {
359
+ outline: 3px solid var(--usk-native-focus);
360
+ outline-offset: 3px;
361
+ box-shadow: var(--usk-native-focus-ring);
362
+ }
363
+
364
+ [data-ui][data-theme][data-mode] :where(:target) {
365
+ scroll-margin-top: 6rem;
366
+ outline: 3px solid var(--usk-native-focus);
367
+ outline-offset: .35rem;
368
+ }
369
+
370
+ [data-ui][data-theme][data-mode] :where([aria-current="page"]) { font-weight: 900; }
371
+ [data-ui][data-theme][data-mode] :where([aria-busy="true"]) { cursor: progress; }
372
+ [data-ui][data-theme][data-mode] :where([hidden]) { display: none !important; }
373
+ [data-ui][data-theme][data-mode] ::selection { color: var(--usk-native-on-primary); background: var(--usk-native-primary); }
374
+ }