@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/dist/webority-theme-codemod.mjs +2 -0
- package/dist/webority-theme-export.mjs +1 -1
- package/dist/webority-theme.css +1 -1
- package/package.json +3 -2
- package/scss/_wui-aliases.scss +10 -0
- package/scss/_wui-components.scss +2 -0
- package/scss/_wui-core.scss +2 -0
- package/scss/wui/_chat.scss +2 -1
- package/scss/wui/_consent-banner.scss +7 -0
- package/scss/wui/_controls.scss +0 -11
- package/scss/wui/_field-floor.scss +82 -0
- package/scss/wui/_file-viewer.scss +6 -0
- package/scss/wui/_floating.scss +2 -1
- package/scss/wui/_rich-text.scss +6 -0
- package/scss/wui/_workspace.scss +6 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webority/theme",
|
|
3
|
-
"version": "0.87.
|
|
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",
|
package/scss/_wui-aliases.scss
CHANGED
|
@@ -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.
|
package/scss/_wui-core.scss
CHANGED
|
@@ -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.
|
package/scss/wui/_chat.scss
CHANGED
|
@@ -13,7 +13,8 @@ wui-chat {
|
|
|
13
13
|
|
|
14
14
|
.wui-chat-launcher {
|
|
15
15
|
position: fixed;
|
|
16
|
-
|
|
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
|
+
}
|
package/scss/wui/_controls.scss
CHANGED
|
@@ -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);
|
package/scss/wui/_floating.scss
CHANGED
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
.wui-floating-stack {
|
|
9
9
|
position: fixed;
|
|
10
|
-
|
|
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.
|
package/scss/wui/_rich-text.scss
CHANGED
|
@@ -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);
|
package/scss/wui/_workspace.scss
CHANGED
|
@@ -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;
|