@webority/theme 0.86.3 → 0.87.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webority/theme",
3
- "version": "0.86.3",
3
+ "version": "0.87.0",
4
4
  "description": "Webority shared design system — Bootstrap 5.3 SCSS overrides, --wui-* tokens, and shared component CSS. The single source of brand chrome for React portals and Razor sites.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "publishConfig": {
package/scss/_tokens.scss CHANGED
@@ -44,7 +44,7 @@
44
44
  --wui-text-3: #687088;
45
45
  /// meaning: Decorative faint ink, not for text a person must read.
46
46
  --wui-text-4: #99A1B7;
47
- /// meaning: Faintest ink, for decorative marks and the strong border tone.
47
+ /// meaning: Faintest ink, for decorative marks.
48
48
  --wui-text-5: #C4CADA;
49
49
 
50
50
  // Surfaces
@@ -72,6 +72,8 @@
72
72
  --wui-border-light: #EBEDF3;
73
73
  /// meaning: Softest border, for inner dividers.
74
74
  --wui-border-soft: #F4F6F8;
75
+ /// meaning: Strong border for emphasised separators, chart axes and unselected control outlines.
76
+ --wui-border-strong: #C4CADA;
75
77
  // The unfilled part of a progress bar / meter. Darker than every surface it can sit on
76
78
  // (card, page, muted fill) so the empty track reads as a track, yet light enough that the
77
79
  // mid-yellow warning fill still separates from it.
@@ -316,12 +318,47 @@
316
318
  // Corner radii (DESIGN.md scale) — portal aliases as --radius-*
317
319
  /// meaning: Small step of the corner radius scale.
318
320
  --wui-radius-sm: 8px;
319
- /// meaning: Default step of the corner radius scale.
320
- --wui-radius: 10px;
321
+ /// meaning: Medium step of the corner radius scale, the default corner.
322
+ --wui-radius-md: 10px;
321
323
  /// meaning: Large step of the corner radius scale.
322
324
  --wui-radius-lg: 14px;
323
325
  /// meaning: Extra-large step of the corner radius scale.
324
326
  --wui-radius-xl: 16px;
327
+ /// meaning: Fully rounded corner, for pills and round buttons.
328
+ --wui-radius-pill: 9999px;
329
+
330
+ // Spacing scale, shared with the phone library and every Canvas theme.
331
+ /// meaning: No space.
332
+ --wui-space-none: 0px;
333
+ /// meaning: Hairline step of the spacing scale.
334
+ --wui-space-xxs: 2px;
335
+ /// meaning: Extra-small step of the spacing scale.
336
+ --wui-space-xs: 4px;
337
+ /// meaning: Small step of the spacing scale.
338
+ --wui-space-sm: 8px;
339
+ /// meaning: Medium step of the spacing scale.
340
+ --wui-space-md: 12px;
341
+ /// meaning: Large step of the spacing scale.
342
+ --wui-space-lg: 16px;
343
+ /// meaning: Extra-large step of the spacing scale.
344
+ --wui-space-xl: 24px;
345
+ /// meaning: Double extra-large step of the spacing scale.
346
+ --wui-space-2xl: 32px;
347
+ /// meaning: Triple extra-large step of the spacing scale.
348
+ --wui-space-3xl: 48px;
349
+ /// meaning: Largest step of the spacing scale.
350
+ --wui-space-4xl: 64px;
351
+
352
+ /// meaning: Regular text weight.
353
+ --wui-fw-normal: 400;
354
+ /// meaning: Medium text weight.
355
+ --wui-fw-medium: 500;
356
+ /// meaning: Semibold text weight, for labels and titles.
357
+ --wui-fw-semibold: 600;
358
+ /// meaning: Bold text weight.
359
+ --wui-fw-bold: 700;
360
+ /// meaning: Tight line height, for headings and single-line labels.
361
+ --wui-lh-tight: 1.2;
325
362
 
326
363
  // Field (input/select/datepicker/…) radius — a flat 8px corner across every
327
364
  // size, for a crisp plain-rounded field (no squircle). Change here to restyle
@@ -500,6 +537,10 @@
500
537
  --wui-fs-64: clamp(3rem, 2.6rem + 2.5vw, 4rem);
501
538
  /// meaning: Sixth extra-large step of the fluid type scale; a product opts in per element.
502
539
  --wui-fs-6xl: clamp(3.5rem, 2.2rem + 5.5vw, 6rem);
540
+ /// meaning: First display step above the fluid type scale, 64px on a phone to 120px on a desktop.
541
+ --wui-fs-7xl: clamp(4rem, 2.7rem + 5.33vw, 7.5rem);
542
+ /// meaning: Largest display step of the fluid type scale, 72px on a phone to 144px on a desktop.
543
+ --wui-fs-8xl: clamp(4.5rem, 2.83rem + 6.86vw, 9rem);
503
544
 
504
545
  // ---- Font stacks ---------------------------------------------------
505
546
  // Sans-serif body font (Bootstrap's system stack or product override).
@@ -25,7 +25,7 @@
25
25
  /// meaning: Softest border for inner dividers and list edges.
26
26
  --color-border-light: var(--wui-border-soft);
27
27
  /// meaning: Stronger border for emphasised separators.
28
- --color-border-strong: var(--wui-text-5);
28
+ --color-border-strong: var(--wui-border-strong);
29
29
  // The resting and hover border of an input-like control.
30
30
  // Decorative card and table borders stay on --color-border.
31
31
  /// meaning: Resting border of an input-like control such as a field or select.
@@ -251,7 +251,7 @@
251
251
 
252
252
  // Corner radii
253
253
  --radius-sm: var(--wui-radius-sm);
254
- --radius: var(--wui-radius);
254
+ --radius: var(--wui-radius-md);
255
255
  --radius-lg: var(--wui-radius-lg);
256
256
  --radius-xl: var(--wui-radius-xl);
257
257
  }
@@ -10,7 +10,7 @@
10
10
  display: block;
11
11
  min-width: 0;
12
12
  border: 1px solid var(--color-border);
13
- border-radius: var(--wui-radius);
13
+ border-radius: var(--wui-radius-md);
14
14
  background: var(--color-bg-subtle);
15
15
  color: var(--color-text);
16
16
  font-family: var(--bs-font-monospace);
@@ -1328,6 +1328,17 @@ wui-select[compact] {
1328
1328
  }
1329
1329
  }
1330
1330
 
1331
+ // Under 16px, iOS Safari zooms the whole page when a text field takes focus. On the same screens
1332
+ // that raise the control to 44px, every text-entry element gets a 16px floor. Component rules set
1333
+ // their own sizes at higher specificity, so the floor needs !important to hold for all of them.
1334
+ @media (max-width: 575.98px), (pointer: coarse) {
1335
+ input:not([type="checkbox"], [type="radio"], [type="range"], [type="button"], [type="submit"], [type="reset"], [type="file"], [type="color"], [type="image"], [type="hidden"]),
1336
+ textarea,
1337
+ select {
1338
+ font-size: 16px !important;
1339
+ }
1340
+ }
1341
+
1331
1342
  // red border around a non-input group (e.g. a structure-form card row)
1332
1343
  .group-invalid {
1333
1344
  border: 1px solid var(--color-danger);
@@ -25,7 +25,7 @@ wui-hover-card {
25
25
  overflow: auto;
26
26
  padding: 12px 14px;
27
27
  border: 1px solid var(--color-border);
28
- border-radius: var(--wui-radius);
28
+ border-radius: var(--wui-radius-md);
29
29
  background: var(--color-surface);
30
30
  color: var(--color-text);
31
31
  box-shadow: var(--wui-shadow-overlay);
@@ -183,7 +183,7 @@
183
183
  height: 32px;
184
184
  padding: 0;
185
185
  border: 0;
186
- border-radius: var(--wui-radius);
186
+ border-radius: var(--wui-radius-md);
187
187
  background: transparent;
188
188
  color: var(--color-text-muted);
189
189
  cursor: pointer;
@@ -240,7 +240,7 @@
240
240
  margin: 0 8px 8px;
241
241
  padding: 16px 8px;
242
242
  border: 1px dashed var(--color-border);
243
- border-radius: var(--wui-radius);
243
+ border-radius: var(--wui-radius-md);
244
244
  color: var(--color-text-muted);
245
245
  font-size: 0.8125rem;
246
246
  text-align: center;
@@ -251,7 +251,7 @@
251
251
  padding: 12px;
252
252
  background: var(--color-surface);
253
253
  border: 1px solid var(--color-border);
254
- border-radius: var(--wui-radius);
254
+ border-radius: var(--wui-radius-md);
255
255
  color: var(--color-text);
256
256
  cursor: grab;
257
257
  touch-action: manipulation;
@@ -299,7 +299,7 @@
299
299
  margin: 0 8px 8px;
300
300
  padding: 6px 10px;
301
301
  border: 0;
302
- border-radius: var(--wui-radius);
302
+ border-radius: var(--wui-radius-md);
303
303
  background: transparent;
304
304
  color: var(--color-text-muted);
305
305
  font-size: 0.8125rem;
@@ -347,7 +347,7 @@
347
347
  position: absolute;
348
348
  inset: auto 0 0;
349
349
  height: 3px;
350
- border-radius: 0 0 var(--wui-radius) var(--wui-radius);
350
+ border-radius: 0 0 var(--wui-radius-md) var(--wui-radius-md);
351
351
  background: linear-gradient(90deg, transparent, var(--color-primary), transparent);
352
352
  background-size: 200% 100%;
353
353
  animation: wui-kanban-saving 1.1s linear infinite;
@@ -384,7 +384,7 @@
384
384
  .wui-kanban-drop-note {
385
385
  margin: 0 8px 8px;
386
386
  padding: 8px 10px;
387
- border-radius: var(--wui-radius);
387
+ border-radius: var(--wui-radius-md);
388
388
  background: var(--color-surface);
389
389
  color: var(--color-text-muted);
390
390
  font-size: 0.8125rem;
@@ -17,7 +17,7 @@
17
17
  aspect-ratio: 4 / 3;
18
18
  overflow: hidden;
19
19
  border: 1px solid var(--color-border);
20
- border-radius: var(--wui-radius);
20
+ border-radius: var(--wui-radius-md);
21
21
  background: var(--color-bg-muted);
22
22
  cursor: zoom-in;
23
23
  img {
@@ -145,7 +145,7 @@ wui-navigation-menu {
145
145
  max-width: min(36rem, calc(100vw - 16px));
146
146
  padding: 8px;
147
147
  border: 1px solid var(--color-border);
148
- border-radius: var(--wui-radius);
148
+ border-radius: var(--wui-radius-md);
149
149
  corner-shape: squircle;
150
150
  background: var(--color-surface);
151
151
  box-shadow: var(--wui-shadow-overlay);
@@ -19,7 +19,7 @@
19
19
  .wui-onboarding-card {
20
20
  padding: 12px 16px 8px;
21
21
  border: 1px solid var(--color-border);
22
- border-radius: var(--wui-radius);
22
+ border-radius: var(--wui-radius-md);
23
23
  corner-shape: squircle;
24
24
  background: var(--color-surface);
25
25
  color: var(--color-text);
@@ -91,7 +91,7 @@ wui-rich-text[readonly] .wui-rich-text-toolbar {
91
91
  height: 32px;
92
92
  padding: 0 6px;
93
93
  border: 0;
94
- border-radius: var(--wui-radius);
94
+ border-radius: var(--wui-radius-md);
95
95
  background: transparent;
96
96
  color: var(--color-text-muted);
97
97
  font: inherit;
@@ -170,7 +170,7 @@ wui-rich-text[readonly] .wui-rich-text-toolbar {
170
170
  height: 32px;
171
171
  padding: 0 10px;
172
172
  border: 0;
173
- border-radius: var(--wui-radius);
173
+ border-radius: var(--wui-radius-md);
174
174
  background: transparent;
175
175
  color: var(--color-text-muted);
176
176
  font: inherit;
@@ -271,7 +271,7 @@ wui-rich-text[readonly] .wui-rich-text-prose {
271
271
  .wui-rich-text-prose pre {
272
272
  margin: 0 0 0.75em;
273
273
  padding: 10px 12px;
274
- border-radius: var(--wui-radius);
274
+ border-radius: var(--wui-radius-md);
275
275
  background: var(--color-bg-muted);
276
276
  overflow-x: auto;
277
277
  }
@@ -841,7 +841,7 @@
841
841
  clip-path: inset(50%);
842
842
  white-space: nowrap;
843
843
  padding: 8px 12px;
844
- border-radius: var(--wui-radius);
844
+ border-radius: var(--wui-radius-md);
845
845
  background: var(--color-surface);
846
846
  color: var(--color-text);
847
847
  }
@@ -82,7 +82,7 @@
82
82
  z-index: var(--wui-z-dropdown, 1000);
83
83
  width: min(320px, calc(100vw - 32px));
84
84
  border: 1px solid var(--color-border);
85
- border-radius: var(--wui-radius);
85
+ border-radius: var(--wui-radius-md);
86
86
  corner-shape: squircle;
87
87
  background: var(--color-surface);
88
88
  color: var(--color-text);
@@ -24,7 +24,7 @@ wui-sortable[orientation="horizontal"] {
24
24
  padding: 6px 12px 6px 6px;
25
25
  background: var(--color-surface);
26
26
  border: 1px solid var(--color-border);
27
- border-radius: var(--wui-radius);
27
+ border-radius: var(--wui-radius-md);
28
28
  corner-shape: squircle;
29
29
  color: var(--color-text);
30
30
  // Dragging a body text selection is never what a drag on an item means.
@@ -15,7 +15,7 @@
15
15
  height: var(--wui-split-height, min(760px, calc(100dvh - 12rem)));
16
16
  min-height: 320px;
17
17
  border: 1px solid var(--color-border);
18
- border-radius: var(--wui-radius);
18
+ border-radius: var(--wui-radius-md);
19
19
  corner-shape: squircle;
20
20
  background: var(--color-surface);
21
21
  color: var(--color-text);
@@ -26,7 +26,7 @@
26
26
  align-items: center;
27
27
  height: 36px;
28
28
  padding-inline: 9px;
29
- border-radius: var(--wui-radius);
29
+ border-radius: var(--wui-radius-md);
30
30
  color: var(--color-text-muted);
31
31
  cursor: pointer;
32
32
  margin-bottom: 0;
@@ -108,7 +108,7 @@
108
108
  height: 36px;
109
109
  padding: 0;
110
110
  border: none;
111
- border-radius: var(--wui-radius);
111
+ border-radius: var(--wui-radius-md);
112
112
  background: transparent;
113
113
  color: var(--color-text-muted);
114
114
  cursor: pointer;
@@ -85,6 +85,7 @@
85
85
  "--wui-bg-page": "Page background behind every surface in light mode.",
86
86
  "--wui-border-light": "Default hairline border of cards, tables and dividers.",
87
87
  "--wui-border-soft": "Softest border, for inner dividers.",
88
+ "--wui-border-strong": "Strong border for emphasised separators, chart axes and unselected control outlines.",
88
89
  "--wui-chart-1": "Colour of chart series 1, the brand primary.",
89
90
  "--wui-chart-2": "Colour of chart series 2 of the eight categorical series.",
90
91
  "--wui-chart-3": "Colour of chart series 3 of the eight categorical series.",
@@ -185,12 +186,18 @@
185
186
  "--wui-fs-5xl": "Fifth extra-large step of the fluid type scale; a product opts in per element.",
186
187
  "--wui-fs-64": "Step between the fifth and sixth extra-large sizes of the fluid type scale; a product opts in per element.",
187
188
  "--wui-fs-6xl": "Sixth extra-large step of the fluid type scale; a product opts in per element.",
189
+ "--wui-fs-7xl": "First display step above the fluid type scale, 64px on a phone to 120px on a desktop.",
190
+ "--wui-fs-8xl": "Largest display step of the fluid type scale, 72px on a phone to 144px on a desktop.",
188
191
  "--wui-fs-base": "Body-size step of the fluid type scale, close to Bootstrap's 1rem.",
189
192
  "--wui-fs-lg": "Large step of the fluid type scale; a product opts in per element.",
190
193
  "--wui-fs-sm": "Small step of the fluid type scale; a product opts in per element.",
191
194
  "--wui-fs-smb": "Step between the small and body sizes of the fluid type scale; a product opts in per element.",
192
195
  "--wui-fs-xl": "Extra-large step of the fluid type scale; a product opts in per element.",
193
196
  "--wui-fs-xs": "Extra-small step of the fluid type scale; a product opts in per element.",
197
+ "--wui-fw-bold": "Bold text weight.",
198
+ "--wui-fw-medium": "Medium text weight.",
199
+ "--wui-fw-normal": "Regular text weight.",
200
+ "--wui-fw-semibold": "Semibold text weight, for labels and titles.",
194
201
  "--wui-hero-gradient": "Background gradient of the hero band on marketing pages.",
195
202
  "--wui-info": "Vivid info fill for badges, dots and info buttons.",
196
203
  "--wui-info-10": "Info tint 10, the soft background of info alerts and badges.",
@@ -201,6 +208,7 @@
201
208
  "--wui-info-active": "Info ink for icons and active states on light surfaces.",
202
209
  "--wui-info-text": "Info colour as text on light surfaces.",
203
210
  "--wui-ink": "Pure black ink, the highest-contrast text colour.",
211
+ "--wui-lh-tight": "Tight line height, for headings and single-line labels.",
204
212
  "--wui-neutral-bg-dark": "Muted background of table emphasis rows and mega-menu hover.",
205
213
  "--wui-neutral-bg-light": "Faint background for table emphasis and mega-menu hover.",
206
214
  "--wui-neutral-border-dark": "Border tone of table emphasis rows and dividers.",
@@ -219,8 +227,9 @@
219
227
  "--wui-primary-pressed": "Primary fill while a control is pressed or active.",
220
228
  "--wui-primary-text": "Text and icon colour on a solid primary fill, such as a primary button label.",
221
229
  "--wui-progress-track": "Unfilled track of a progress bar or meter.",
222
- "--wui-radius": "Default step of the corner radius scale.",
223
230
  "--wui-radius-lg": "Large step of the corner radius scale.",
231
+ "--wui-radius-md": "Medium step of the corner radius scale, the default corner.",
232
+ "--wui-radius-pill": "Fully rounded corner, for pills and round buttons.",
224
233
  "--wui-radius-sm": "Small step of the corner radius scale.",
225
234
  "--wui-radius-xl": "Extra-large step of the corner radius scale.",
226
235
  "--wui-scrollbar": "Resting thumb colour of a thin scrollbar.",
@@ -233,6 +242,16 @@
233
242
  "--wui-shadow-overlay-lg": "Larger overlay shadow, for the largest floating surfaces.",
234
243
  "--wui-shadow-thumb": "Shadow under a slider thumb and other small interactive elements.",
235
244
  "--wui-shadow-thumb-hover": "Shadow under a slider thumb while it is hovered.",
245
+ "--wui-space-2xl": "Double extra-large step of the spacing scale.",
246
+ "--wui-space-3xl": "Triple extra-large step of the spacing scale.",
247
+ "--wui-space-4xl": "Largest step of the spacing scale.",
248
+ "--wui-space-lg": "Large step of the spacing scale.",
249
+ "--wui-space-md": "Medium step of the spacing scale.",
250
+ "--wui-space-none": "No space.",
251
+ "--wui-space-sm": "Small step of the spacing scale.",
252
+ "--wui-space-xl": "Extra-large step of the spacing scale.",
253
+ "--wui-space-xs": "Extra-small step of the spacing scale.",
254
+ "--wui-space-xxs": "Hairline step of the spacing scale.",
236
255
  "--wui-success": "Vivid success fill for badges, dots and success buttons.",
237
256
  "--wui-success-10": "Success tint 10, the soft background of success alerts and badges.",
238
257
  "--wui-success-20": "Success tint 20 for soft fills behind success alerts and badges.",
@@ -251,7 +270,7 @@
251
270
  "--wui-text-2": "Secondary text for descriptions, sub-labels and muted copy.",
252
271
  "--wui-text-3": "Tertiary text for hints, captions, labels, timestamps and placeholders.",
253
272
  "--wui-text-4": "Decorative faint ink, not for text a person must read.",
254
- "--wui-text-5": "Faintest ink, for decorative marks and the strong border tone.",
273
+ "--wui-text-5": "Faintest ink, for decorative marks.",
255
274
  "--wui-text-heading": "Heading ink for page and section titles.",
256
275
  "--wui-warning": "Vivid warning fill for badges and dots.",
257
276
  "--wui-warning-10": "Warning tint 10, the soft background of warning alerts and badges.",