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.
Files changed (64) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +92 -48
  3. package/dist/ui-style-kit.css +4117 -3544
  4. package/dist/ui-style-kit.min.css +3 -3
  5. package/dist/ui-style-kit.visual.css +4117 -3544
  6. package/dist/ui-style-kit.visual.min.css +3 -3
  7. package/dist/ui-style-kit.with-bridge.css +4117 -3544
  8. package/dist/ui-style-kit.with-bridge.min.css +3 -3
  9. package/dist/visual/art-deco.css +709 -288
  10. package/dist/visual/bauhaus.css +2 -2
  11. package/dist/visual/bento.css +2 -2
  12. package/dist/visual/brutalism.css +494 -100
  13. package/dist/visual/clay.css +2 -2
  14. package/dist/visual/cyberpunk.css +587 -193
  15. package/dist/visual/data-terminal.css +586 -192
  16. package/dist/visual/editorial-luxe.css +589 -195
  17. package/dist/visual/industrial-utility.css +653 -259
  18. package/dist/visual/maximalist.css +571 -177
  19. package/dist/visual/minimal-saas.css +520 -126
  20. package/dist/visual/neo-noir.css +2 -2
  21. package/dist/visual/neumorphism.css +543 -149
  22. package/dist/visual/organic-modern.css +2 -2
  23. package/dist/visual/paper-editorial.css +668 -274
  24. package/dist/visual/retro-glass.css +600 -206
  25. package/dist/visual/retrofuturism.css +548 -154
  26. package/dist/visual/tactile.css +561 -167
  27. package/dist/visual/technical-blueprint.css +627 -225
  28. package/dist/visual/y2k.css +543 -137
  29. package/docs/ART-DECO.md +2 -2
  30. package/docs/BRIDGE-MIGRATION.md +38 -0
  31. package/docs/ECOSYSTEM.md +11 -11
  32. package/docs/PUBLISHING.md +12 -12
  33. package/docs/RELEASE-2.4.2.md +37 -0
  34. package/docs/RELEASE-2.5.0.md +34 -0
  35. package/docs/RELEASE-2.6.0.md +36 -0
  36. package/docs/STYLE-GUIDE.md +10 -0
  37. package/manifest.json +466 -240
  38. package/package.json +32 -4
  39. package/styles/art-deco.css +68 -22
  40. package/styles/bauhaus.css +8 -0
  41. package/styles/bento.css +19 -6
  42. package/styles/brutalism.css +8 -0
  43. package/styles/clay.css +11 -3
  44. package/styles/clean-defaults.css +295 -0
  45. package/styles/component-composition.css +829 -0
  46. package/styles/components.css +79 -0
  47. package/styles/cyberpunk.css +8 -0
  48. package/styles/data-terminal.css +8 -0
  49. package/styles/editorial-luxe.css +8 -0
  50. package/styles/industrial-utility.css +8 -0
  51. package/styles/interactive-surface-theme.css +23 -23
  52. package/styles/maximalist.css +8 -0
  53. package/styles/minimal-saas.css +8 -0
  54. package/styles/native-elements.css +7 -0
  55. package/styles/neo-noir.css +8 -0
  56. package/styles/neumorphism.css +8 -0
  57. package/styles/organic-modern.css +8 -1
  58. package/styles/paper-editorial.css +8 -0
  59. package/styles/retro-glass.css +9 -1
  60. package/styles/retrofuturism.css +8 -0
  61. package/styles/tactile.css +8 -0
  62. package/styles/technical-blueprint.css +16 -1
  63. package/styles/theme-colors.css +3 -0
  64. 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
+ }