@webority/theme 0.87.0 → 0.87.1

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.87.0",
3
+ "version": "0.87.1",
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": {
@@ -38,7 +38,8 @@
38
38
  "./package.json": "./package.json"
39
39
  },
40
40
  "bin": {
41
- "webority-theme-export": "./dist/webority-theme-export.mjs"
41
+ "webority-theme-export": "./dist/webority-theme-export.mjs",
42
+ "webority-theme-codemod": "./dist/webority-theme-codemod.mjs"
42
43
  },
43
44
  "sass": "index.scss",
44
45
  "style": "dist/webority-theme.css",
@@ -424,6 +424,16 @@
424
424
  color-scheme: dark;
425
425
  }
426
426
 
427
+ // A dark section on a light page, such as a dark band: the same attribute on any element. The meaning
428
+ // names are declared again here, so they resolve inside the section rather than once at the root.
429
+ // Kept apart from the root rule above because the theme exporters read dark mode by that exact selector.
430
+ [data-theme="dark"]:not(:root),
431
+ [data-bs-theme="dark"]:not(:root) {
432
+ @include wui-dark-theme;
433
+ color-scheme: dark;
434
+ color: var(--color-text);
435
+ }
436
+
427
437
  // Automatic dark mode — when data-theme="auto", detect system preference and apply dark tokens.
428
438
  :root[data-theme="auto"] {
429
439
  @media (prefers-color-scheme: dark) {
@@ -105,6 +105,8 @@
105
105
  @import "wui/hover-card";
106
106
  @import "wui/notification-center";
107
107
  @import "wui/whats-new";
108
+ // After every component partial: restates each field's own font size with a 16px floor on touch screens.
109
+ @import "wui/field-floor";
108
110
  // After every component partial: the shared focus ring and pressed wash settle ties with their hover rules.
109
111
  @import "wui/interaction";
110
112
  // Last: restates the settled state of menus other partials style, so it must win.
@@ -84,6 +84,8 @@
84
84
  @import "wui/hover-card";
85
85
  @import "wui/notification-center";
86
86
  @import "wui/whats-new";
87
+ // After every component partial: restates each field's own font size with a 16px floor on touch screens.
88
+ @import "wui/field-floor";
87
89
  // After every component partial: the shared focus ring and pressed wash settle ties with their hover rules.
88
90
  @import "wui/interaction";
89
91
  // Last: restates the settled state of menus other partials style, so it must win.
@@ -13,7 +13,8 @@ wui-chat {
13
13
 
14
14
  .wui-chat-launcher {
15
15
  position: fixed;
16
- bottom: 0;
16
+ // Rises above an open consent banner, which publishes its room on html.
17
+ bottom: var(--wui-consent-banner-block, 0px);
17
18
  inset-inline-end: 0;
18
19
  z-index: var(--wui-z-fixed);
19
20
  margin: 1rem;
@@ -202,3 +202,10 @@ wui-consent-banner[tour-open] {
202
202
  display: none;
203
203
  }
204
204
  }
205
+
206
+ // The actions are small buttons, which fall under the 44px touch target on touch screens.
207
+ @media (max-width: 575.98px), (pointer: coarse) {
208
+ .wui-consent-banner-actions .btn {
209
+ min-height: 44px;
210
+ }
211
+ }
@@ -1328,17 +1328,6 @@ 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
-
1342
1331
  // red border around a non-input group (e.g. a structure-form card row)
1343
1332
  .group-invalid {
1344
1333
  border: 1px solid var(--color-danger);
@@ -0,0 +1,82 @@
1
+ // Under 16px iOS Safari zooms the whole page when a text field takes focus.
2
+ // This partial loads after every component partial (`_wui-components.scss`),
3
+ // so each restated rule shares the library rule's specificity and wins by
4
+ // source order; a product's own rule loaded later still wins. No !important.
5
+
6
+ @media (max-width: 575.98px), (pointer: coarse) {
7
+ :where(
8
+ input:not([type="checkbox"], [type="radio"], [type="range"], [type="button"], [type="submit"], [type="reset"], [type="file"], [type="color"], [type="image"], [type="hidden"]),
9
+ textarea,
10
+ select
11
+ ) {
12
+ font-size: 16px;
13
+ }
14
+
15
+ .form-control,
16
+ .form-select,
17
+ .input,
18
+ .select,
19
+ .textarea {
20
+ font-size: max(16px, #{$input-font-size});
21
+ }
22
+
23
+ .form-control-sm,
24
+ .input-sm {
25
+ font-size: max(16px, #{$input-font-size-sm});
26
+ }
27
+
28
+ .form-select-sm {
29
+ font-size: max(16px, #{$form-select-font-size-sm});
30
+ }
31
+
32
+ .form-control-lg,
33
+ .input-lg {
34
+ font-size: max(16px, #{$input-font-size-lg});
35
+ }
36
+
37
+ .form-select-lg {
38
+ font-size: max(16px, #{$form-select-font-size-lg});
39
+ }
40
+
41
+ .wui-input-xl {
42
+ font-size: max(16px, 16px);
43
+ }
44
+
45
+ input,
46
+ textarea,
47
+ select {
48
+ font-size: max(16px, #{$input-font-size});
49
+ }
50
+
51
+ .otp-field {
52
+ font-size: max(16px, 16px);
53
+ }
54
+
55
+ .otp-slot {
56
+ font-size: max(16px, 18px);
57
+ }
58
+
59
+ .num-wrap-sm .num-input {
60
+ font-size: max(16px, 13px);
61
+ }
62
+
63
+ .num-wrap-lg .num-input {
64
+ font-size: max(16px, 16px);
65
+ }
66
+
67
+ // On-demand widgets (file viewer, rich text, workspace switcher) floor their own fields.
68
+ .search-select-input,
69
+ .dropdown-search-input {
70
+ font-size: 16px;
71
+ }
72
+
73
+ .search-wrap.search-sm .search-input {
74
+ font-size: 16px;
75
+ }
76
+
77
+ // The tel input and its dial code share one size, so the floor goes on the shared variable.
78
+ .app-phone-number-input,
79
+ .app-phone-number-input.phone-sm {
80
+ --wui-phone-font-size: 16px;
81
+ }
82
+ }
@@ -93,6 +93,12 @@ wui-file-viewer:fullscreen {
93
93
  font-size: 13px;
94
94
  font-weight: 600;
95
95
  }
96
+ // Under 16px iOS Safari zooms the page when the field takes focus.
97
+ @media (max-width: 575.98px), (pointer: coarse) {
98
+ .wui-file-viewer-page-input {
99
+ font-size: 16px;
100
+ }
101
+ }
96
102
  .wui-file-viewer-page-input:focus {
97
103
  outline: none;
98
104
  border-color: var(--color-primary);
@@ -7,7 +7,8 @@
7
7
 
8
8
  .wui-floating-stack {
9
9
  position: fixed;
10
- bottom: 0;
10
+ // Rises above an open consent banner, which publishes its room on html.
11
+ bottom: var(--wui-consent-banner-block, 0px);
11
12
  z-index: var(--wui-z-fixed);
12
13
  display: flex;
13
14
  // The primary item sits in the corner and the secondary one stacks above it.
@@ -157,6 +157,12 @@ wui-rich-text[readonly] .wui-rich-text-toolbar {
157
157
  font: inherit;
158
158
  font-size: 13px;
159
159
  }
160
+ // Under 16px iOS Safari zooms the page when the field takes focus.
161
+ @media (max-width: 575.98px), (pointer: coarse) {
162
+ .wui-rich-text-link-input {
163
+ font-size: 16px;
164
+ }
165
+ }
160
166
  .wui-rich-text-link-input:focus {
161
167
  outline: none;
162
168
  border-color: var(--color-focus-border);
@@ -189,6 +189,12 @@
189
189
  font-size: 13px;
190
190
  outline: none;
191
191
  }
192
+ // Under 16px iOS Safari zooms the page when the field takes focus.
193
+ @media (max-width: 575.98px), (pointer: coarse) {
194
+ .workspace-switcher-search-input {
195
+ font-size: 16px;
196
+ }
197
+ }
192
198
  .workspace-switcher-list {
193
199
  display: flex;
194
200
  flex-direction: column;