@webority/theme 0.76.0 → 0.77.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/README.md +20 -0
- package/dist/purge-safelist.json +14 -1
- package/dist/webority-theme.css +1 -1
- package/package.json +1 -1
- package/scss/_components.scss +8 -8
- package/scss/_wui-aliases.scss +4 -3
- package/scss/_wui-core.scss +88 -0
- package/scss/wui/_calendar.scss +5 -0
- package/scss/wui/_card.scss +30 -11
- package/scss/wui/_command-palette.scss +9 -0
- package/scss/wui/_controls.scss +1 -2
- package/scss/wui/_data.scss +7 -0
- package/scss/wui/_display.scss +18 -10
- package/scss/wui/_dock.scss +5 -0
- package/scss/wui/_file-viewer.scss +5 -0
- package/scss/wui/_floating.scss +7 -3
- package/scss/wui/_flow.scss +210 -1
- package/scss/wui/_image-crop.scss +5 -0
- package/scss/wui/_interaction.scss +28 -38
- package/scss/wui/_kanban.scss +5 -0
- package/scss/wui/_media.scss +3 -2
- package/scss/wui/_rich-text.scss +21 -0
- package/scss/wui/_shell.scss +6 -1
- package/scss/wui/_table-server.scss +5 -0
- package/scss/wui/_tree.scss +5 -0
- package/scss/wui/_utilities.scss +1 -0
- package/scss/wui/_workspace.scss +22 -1
|
@@ -90,25 +90,14 @@ html:has(.form-actions-sticky) {
|
|
|
90
90
|
scroll-padding-bottom: 96px;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
// ---- Workspace switcher trigger ------------------------------------------------
|
|
94
|
-
// A button styled like a field: its soft focus border alone is under 3:1, so keyboard focus
|
|
95
|
-
// adds the outline right outside it. Form fields keep the soft border without an outline.
|
|
96
|
-
.workspace-switcher-trigger:focus-visible,
|
|
97
|
-
.workspace-switcher-trigger[aria-expanded="true"] {
|
|
98
|
-
outline: calc(var(--wui-focus-ring-width) - 1px) solid var(--color-focus-ring);
|
|
99
|
-
outline-offset: 0;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
93
|
// ---- Active option in a pop-up list --------------------------------------------
|
|
103
|
-
// Search results, the country list
|
|
104
|
-
//
|
|
105
|
-
//
|
|
106
|
-
//
|
|
107
|
-
// light edge in _choice.scss.
|
|
94
|
+
// Search results, the country list and mentions keep focus in their input and mark the
|
|
95
|
+
// keyboard's row (aria-activedescendant) with the hover tint alone, about 1.2:1. The inset ring
|
|
96
|
+
// makes that row plain; inset, because the list scrolls and would clip an outer ring. Select and
|
|
97
|
+
// autocomplete options draw their own light edge in _choice.scss.
|
|
108
98
|
.wui-topsearch-hit.is-active,
|
|
109
99
|
.country-dropdown-item.is-active,
|
|
110
|
-
.wui-mention-option.is-active
|
|
111
|
-
.wui-cmd-item[aria-selected="true"] {
|
|
100
|
+
.wui-mention-option.is-active {
|
|
112
101
|
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
113
102
|
outline-offset: var(--wui-focus-ring-inset);
|
|
114
103
|
}
|
|
@@ -119,7 +108,8 @@ html:has(.form-actions-sticky) {
|
|
|
119
108
|
// reduced-motion variant. !important because pressing always happens under the pointer, so a
|
|
120
109
|
// more specific hover rule's `background` shorthand would otherwise reset the wash.
|
|
121
110
|
// Buttons (.btn) keep Bootstrap's active fill. Controls drawn by a background image (checkbox,
|
|
122
|
-
// switch, Bootstrap's close glyph) are not in this list.
|
|
111
|
+
// switch, Bootstrap's close glyph) are not in this list. The on-demand widget partials restate
|
|
112
|
+
// this rule for their own controls, so the wash ships with the layer that draws them.
|
|
123
113
|
:is(
|
|
124
114
|
.u-action,
|
|
125
115
|
.pw-toggle,
|
|
@@ -139,9 +129,6 @@ html:has(.form-actions-sticky) {
|
|
|
139
129
|
.datepicker-cell,
|
|
140
130
|
.wui-daterange-preset,
|
|
141
131
|
.timepicker-option,
|
|
142
|
-
.wui-calendar-nav-btn,
|
|
143
|
-
.wui-calendar-today-btn,
|
|
144
|
-
.wui-calendar-view-btn,
|
|
145
132
|
.app-tabs-scroll-btn,
|
|
146
133
|
.wui-overflow-more,
|
|
147
134
|
.wui-overflow-item,
|
|
@@ -157,22 +144,10 @@ html:has(.form-actions-sticky) {
|
|
|
157
144
|
.wui-shortcut-close,
|
|
158
145
|
.wui-shortcut-toggle,
|
|
159
146
|
.wui-sortable-handle,
|
|
160
|
-
.wui-crop-toolbtn,
|
|
161
|
-
.wui-crop-zoombtn,
|
|
162
|
-
.wui-file-viewer-zoom,
|
|
163
|
-
.wui-rich-text-button,
|
|
164
|
-
.wui-rich-text-link-apply,
|
|
165
|
-
.wui-rich-text-link-cancel,
|
|
166
|
-
.wui-rich-text-link-remove,
|
|
167
|
-
.wui-kanban-action,
|
|
168
|
-
.wui-kanban-collapse,
|
|
169
|
-
.wui-kanban-more,
|
|
170
147
|
.wui-comment-action,
|
|
171
148
|
.wui-reaction-add,
|
|
172
149
|
.wui-reaction-choice,
|
|
173
150
|
button.wui-reaction,
|
|
174
|
-
.wui-cmd-back,
|
|
175
|
-
button.wui-cmd-crumb,
|
|
176
151
|
.wui-code-copy,
|
|
177
152
|
.wui-notification-center-markall,
|
|
178
153
|
.wui-notification-center-foot,
|
|
@@ -187,9 +162,6 @@ html:has(.form-actions-sticky) {
|
|
|
187
162
|
.chip-remove,
|
|
188
163
|
.repeater-remove,
|
|
189
164
|
.wui-usermenu-trigger,
|
|
190
|
-
.workspace-switcher-trigger,
|
|
191
|
-
.workspace-switcher-create,
|
|
192
|
-
.workspace-switcher-footer-action,
|
|
193
165
|
.wui-carousel-arrow,
|
|
194
166
|
.wui-carousel-pause,
|
|
195
167
|
.wui-menubar-trigger,
|
|
@@ -202,15 +174,12 @@ html:has(.form-actions-sticky) {
|
|
|
202
174
|
.dropdown-item,
|
|
203
175
|
.country-dropdown-item,
|
|
204
176
|
.search-select-option,
|
|
205
|
-
.wui-tree-row,
|
|
206
177
|
.wui-split-link,
|
|
207
178
|
.wui-topsearch-hit,
|
|
208
179
|
a.wui-bell-item,
|
|
209
180
|
.wui-notification-center-item,
|
|
210
|
-
.workspace-switcher-option,
|
|
211
181
|
.app-nav-item,
|
|
212
182
|
.wui-tabbar-item,
|
|
213
|
-
.dock-item,
|
|
214
183
|
.toolbar-item,
|
|
215
184
|
.toolbar-action,
|
|
216
185
|
.app-tab,
|
|
@@ -254,3 +223,24 @@ html:has(.form-actions-sticky) {
|
|
|
254
223
|
transition: transform var(--wui-press-duration) ease-out;
|
|
255
224
|
}
|
|
256
225
|
}
|
|
226
|
+
|
|
227
|
+
// Phone touch targets
|
|
228
|
+
// Below sm the pointer is a finger: every small control the library draws reaches 44px.
|
|
229
|
+
@media (max-width: 575.98px) {
|
|
230
|
+
.btn-sm,
|
|
231
|
+
.btn-group-sm > .btn {
|
|
232
|
+
min-height: 44px;
|
|
233
|
+
}
|
|
234
|
+
.topbar-icon-btn,
|
|
235
|
+
.app-tabs-scroll-btn,
|
|
236
|
+
.select.tpg-select {
|
|
237
|
+
min-height: 44px;
|
|
238
|
+
}
|
|
239
|
+
.topbar-icon-btn,
|
|
240
|
+
.app-tabs-scroll-btn {
|
|
241
|
+
min-width: 44px;
|
|
242
|
+
}
|
|
243
|
+
wui-select[compact] .search-select-control {
|
|
244
|
+
min-height: 44px;
|
|
245
|
+
}
|
|
246
|
+
}
|
package/scss/wui/_kanban.scss
CHANGED
|
@@ -653,3 +653,8 @@
|
|
|
653
653
|
background: var(--color-primary);
|
|
654
654
|
}
|
|
655
655
|
}
|
|
656
|
+
|
|
657
|
+
// The shared pressed wash of wui/interaction, restated here so it ships with this on-demand layer.
|
|
658
|
+
:is(.wui-kanban-action, .wui-kanban-collapse, .wui-kanban-more):active:not(:disabled, [aria-disabled="true"]) {
|
|
659
|
+
background-image: linear-gradient(var(--color-pressed-overlay), var(--color-pressed-overlay)) !important;
|
|
660
|
+
}
|
package/scss/wui/_media.scss
CHANGED
|
@@ -127,8 +127,9 @@
|
|
|
127
127
|
height: 16px;
|
|
128
128
|
padding: 0 4px;
|
|
129
129
|
border-radius: 999px;
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
// The pairing .wui-bell-count uses (_shell-parts.scss): it clears contrast in light and dark.
|
|
131
|
+
background: var(--color-danger-strong);
|
|
132
|
+
color: var(--color-progress-label);
|
|
132
133
|
font-size: 10px;
|
|
133
134
|
font-weight: 700;
|
|
134
135
|
line-height: 1;
|
package/scss/wui/_rich-text.scss
CHANGED
|
@@ -9,6 +9,11 @@ wui-rich-text {
|
|
|
9
9
|
display: block;
|
|
10
10
|
min-width: 0;
|
|
11
11
|
}
|
|
12
|
+
// Inside a form field's flex column it would size to its content, so it stretches to the field.
|
|
13
|
+
.field > wui-rich-text {
|
|
14
|
+
align-self: stretch;
|
|
15
|
+
width: 100%;
|
|
16
|
+
}
|
|
12
17
|
// Until the editor's own script has run, the field shows its starting value in a plain box.
|
|
13
18
|
wui-rich-text:not(:defined) > textarea {
|
|
14
19
|
display: block;
|
|
@@ -114,6 +119,12 @@ wui-rich-text[readonly] .wui-rich-text-shell {
|
|
|
114
119
|
font-weight: 600;
|
|
115
120
|
line-height: 1;
|
|
116
121
|
}
|
|
122
|
+
.wui-rich-text-glyph-bold {
|
|
123
|
+
font-weight: 700;
|
|
124
|
+
}
|
|
125
|
+
.wui-rich-text-glyph-italic {
|
|
126
|
+
font-style: italic;
|
|
127
|
+
}
|
|
117
128
|
|
|
118
129
|
// ── Link box ──
|
|
119
130
|
.wui-rich-text-linkbar {
|
|
@@ -279,3 +290,13 @@ wui-rich-text[readonly] .wui-rich-text-prose {
|
|
|
279
290
|
transition: none;
|
|
280
291
|
}
|
|
281
292
|
}
|
|
293
|
+
|
|
294
|
+
// The shared pressed wash of wui/interaction, restated here so it ships with this on-demand layer.
|
|
295
|
+
:is(
|
|
296
|
+
.wui-rich-text-button,
|
|
297
|
+
.wui-rich-text-link-apply,
|
|
298
|
+
.wui-rich-text-link-cancel,
|
|
299
|
+
.wui-rich-text-link-remove
|
|
300
|
+
):active:not(:disabled, [aria-disabled="true"]) {
|
|
301
|
+
background-image: linear-gradient(var(--color-pressed-overlay), var(--color-pressed-overlay)) !important;
|
|
302
|
+
}
|
package/scss/wui/_shell.scss
CHANGED
|
@@ -573,6 +573,11 @@
|
|
|
573
573
|
padding-left: calc(46px + (var(--wui-nav-depth, 1) - 1) * 16px);
|
|
574
574
|
font-size: 13px;
|
|
575
575
|
}
|
|
576
|
+
@for $n from 2 through 6 {
|
|
577
|
+
.wui-nav-depth-#{$n} {
|
|
578
|
+
--wui-nav-depth: #{$n};
|
|
579
|
+
}
|
|
580
|
+
}
|
|
576
581
|
// A sub-item label wraps to two lines before it is cut, so a long child label stays readable.
|
|
577
582
|
// Top-level labels keep the single-line ellipsis.
|
|
578
583
|
.app-nav-subitem .app-nav-text {
|
|
@@ -735,7 +740,7 @@
|
|
|
735
740
|
.app-topbar {
|
|
736
741
|
position: sticky;
|
|
737
742
|
top: 0;
|
|
738
|
-
z-index:
|
|
743
|
+
z-index: var(--wui-z-sticky);
|
|
739
744
|
display: flex;
|
|
740
745
|
align-items: center;
|
|
741
746
|
justify-content: space-between;
|
|
@@ -18,6 +18,11 @@
|
|
|
18
18
|
pointer-events: none;
|
|
19
19
|
transition: opacity 0.15s ease;
|
|
20
20
|
}
|
|
21
|
+
.wui-skeleton-cell {
|
|
22
|
+
display: block;
|
|
23
|
+
height: 0.9rem;
|
|
24
|
+
border-radius: 0.25rem;
|
|
25
|
+
}
|
|
21
26
|
|
|
22
27
|
// A failed fetch shows its message and Retry in the state block; the stale rows of the previous
|
|
23
28
|
// page are hidden rather than left looking current.
|
package/scss/wui/_tree.scss
CHANGED
|
@@ -122,3 +122,8 @@ wui-tree {
|
|
|
122
122
|
animation-duration: 2s;
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
|
+
|
|
126
|
+
// The shared pressed wash of wui/interaction, restated here so it ships with this on-demand layer.
|
|
127
|
+
.wui-tree-row:active:not(:disabled, [aria-disabled="true"]) {
|
|
128
|
+
background-image: linear-gradient(var(--color-pressed-overlay), var(--color-pressed-overlay)) !important;
|
|
129
|
+
}
|
package/scss/wui/_utilities.scss
CHANGED
package/scss/wui/_workspace.scss
CHANGED
|
@@ -41,13 +41,25 @@
|
|
|
41
41
|
.workspace-switcher-trigger:hover:not(:focus):not([aria-expanded="true"]) {
|
|
42
42
|
border-color: var(--color-border-strong);
|
|
43
43
|
}
|
|
44
|
+
// A button styled like a field: its soft focus border alone is under 3:1, so keyboard focus
|
|
45
|
+
// adds the outline right outside it. Form fields keep the soft border without an outline.
|
|
44
46
|
.workspace-switcher-trigger:focus-visible,
|
|
45
47
|
.workspace-switcher-trigger[aria-expanded="true"] {
|
|
46
|
-
outline:
|
|
48
|
+
outline: calc(var(--wui-focus-ring-width) - 1px) solid var(--color-focus-ring);
|
|
49
|
+
outline-offset: 0;
|
|
47
50
|
background: var(--color-surface);
|
|
48
51
|
border-color: var(--color-focus-border);
|
|
49
52
|
box-shadow: none;
|
|
50
53
|
}
|
|
54
|
+
// The shared pressed wash of wui/interaction, restated here so it ships with this on-demand layer.
|
|
55
|
+
:is(
|
|
56
|
+
.workspace-switcher-trigger,
|
|
57
|
+
.workspace-switcher-create,
|
|
58
|
+
.workspace-switcher-footer-action,
|
|
59
|
+
.workspace-switcher-option
|
|
60
|
+
):active:not(:disabled, [aria-disabled="true"]) {
|
|
61
|
+
background-image: linear-gradient(var(--color-pressed-overlay), var(--color-pressed-overlay)) !important;
|
|
62
|
+
}
|
|
51
63
|
.workspace-switcher-trigger.is-compact {
|
|
52
64
|
width: 40px;
|
|
53
65
|
min-height: 40px;
|
|
@@ -382,3 +394,12 @@
|
|
|
382
394
|
transition: none;
|
|
383
395
|
}
|
|
384
396
|
}
|
|
397
|
+
|
|
398
|
+
// Phone touch targets
|
|
399
|
+
// Below sm the pointer is a finger: every small control the library draws reaches 44px.
|
|
400
|
+
@media (max-width: 575.98px) {
|
|
401
|
+
.workspace-switcher-trigger.is-compact {
|
|
402
|
+
min-width: 44px;
|
|
403
|
+
min-height: 44px;
|
|
404
|
+
}
|
|
405
|
+
}
|