@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.
@@ -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, mentions and the command
104
- // palette keep focus in their input and mark the keyboard's row (aria-activedescendant) with
105
- // the hover tint alone, about 1.2:1. The inset ring makes that row plain; inset, because the
106
- // list scrolls and would clip an outer ring. Select and autocomplete options draw their own
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
+ }
@@ -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
+ }
@@ -127,8 +127,9 @@
127
127
  height: 16px;
128
128
  padding: 0 4px;
129
129
  border-radius: 999px;
130
- background: var(--color-danger);
131
- color: var(--wui-bg-light);
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;
@@ -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
+ }
@@ -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: 10;
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.
@@ -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
+ }
@@ -12,6 +12,7 @@
12
12
  .wui-icon {
13
13
  display: inline-block;
14
14
  flex-shrink: 0;
15
+ vertical-align: -.125em;
15
16
  }
16
17
 
17
18
  // ── Grid / layout utils ──
@@ -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: none;
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
+ }