@webority/theme 0.13.1 → 0.13.4

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.13.1",
3
+ "version": "0.13.4",
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": {
@@ -59,7 +59,6 @@
59
59
  @import "flags";
60
60
  @import "wui/shell";
61
61
  @import "wui/dock";
62
- @import "wui/feedback";
63
62
  @import "wui/consent-banner";
64
63
  @import "wui/toolbar";
65
64
  // Last: restates the settled state of menus other partials style, so it must win.
@@ -1601,6 +1601,10 @@ wui-otp {
1601
1601
  border-radius: 50%;
1602
1602
  box-shadow: var(--wui-shadow-thumb);
1603
1603
  cursor: pointer;
1604
+ // The thumb owns every touch that starts on it. Left at the default, a touch browser
1605
+ // reads the first few pixels of a horizontal drag as a pan, cancels the pointer stream
1606
+ // and the thumb stops a short way from where the finger started.
1607
+ touch-action: none;
1604
1608
  transition:
1605
1609
  transform 0.18s var(--wui-ease-ui),
1606
1610
  box-shadow 0.18s var(--wui-ease-ui),
@@ -1,259 +0,0 @@
1
- // ── In-product feedback ──
2
- // AppFeedback / <app-feedback> / <wui-feedback> — a floating trigger pinned to a page
3
- // corner that opens a small panel with a message box. The element authors the markup and
4
- // owns the states (`open` / `busy` on the host, `hidden` on the panel, error and thank-you
5
- // blocks); everything visual lives here.
6
- //
7
- // Part of the wui-components layer — see _wui-components.scss for load order.
8
-
9
- wui-feedback {
10
- position: fixed;
11
- bottom: 20px;
12
- z-index: var(--wui-z-fixed);
13
- display: block;
14
- }
15
- wui-feedback,
16
- wui-feedback[position="bottom-right"] {
17
- right: 20px;
18
- left: auto;
19
- }
20
- wui-feedback[position="bottom-left"] {
21
- left: 20px;
22
- right: auto;
23
- }
24
-
25
- // ── Trigger ──
26
- .feedback-trigger {
27
- display: inline-flex;
28
- align-items: center;
29
- gap: 8px;
30
- height: var(--wui-control-height-sm);
31
- padding: 0 16px;
32
- border: none;
33
- border-radius: 999px;
34
- background: var(--color-primary);
35
- color: var(--color-primary-text);
36
- font-size: 14px;
37
- font-weight: 600;
38
- line-height: 1;
39
- cursor: pointer;
40
- box-shadow: var(--wui-shadow-overlay);
41
- transition:
42
- background-color 160ms var(--wui-ease-ui),
43
- transform 160ms var(--wui-ease-ui);
44
- }
45
- .feedback-trigger:hover {
46
- background: var(--color-primary-hover);
47
- }
48
- .feedback-trigger:focus-visible {
49
- outline: 2px solid var(--color-primary);
50
- outline-offset: 2px;
51
- }
52
- .feedback-trigger-icon {
53
- display: grid;
54
- place-items: center;
55
- line-height: 0;
56
- }
57
- .feedback-trigger-label {
58
- white-space: nowrap;
59
- }
60
-
61
- // ── Panel ──
62
- // Anchored to the same corner as the trigger, opening upward — the trigger sits at the
63
- // bottom of the viewport, so there is only ever room above it.
64
- .feedback-panel {
65
- position: absolute;
66
- bottom: calc(100% + 12px);
67
- width: 340px;
68
- max-width: calc(100vw - 40px);
69
- padding: 16px;
70
- background: var(--color-surface);
71
- border: 1px solid var(--color-border);
72
- border-radius: var(--wui-radius-lg);
73
- box-shadow: var(--wui-shadow-overlay-lg);
74
- color: var(--color-text);
75
- text-align: start;
76
- }
77
- wui-feedback[position="bottom-right"] .feedback-panel {
78
- right: 0;
79
- }
80
- wui-feedback[position="bottom-left"] .feedback-panel {
81
- left: 0;
82
- }
83
- // `hidden` on a custom element's child is honoured, but a later display rule would win —
84
- // state it explicitly so the panel cannot be left visible by cascade order.
85
- .feedback-panel[hidden] {
86
- display: none;
87
- }
88
-
89
- .feedback-head {
90
- display: flex;
91
- align-items: flex-start;
92
- justify-content: space-between;
93
- gap: 12px;
94
- margin-bottom: 12px;
95
- }
96
- .feedback-heading {
97
- margin: 0;
98
- font-size: 15px;
99
- font-weight: 600;
100
- line-height: 1.3;
101
- color: var(--color-text);
102
- }
103
- .feedback-close {
104
- display: grid;
105
- place-items: center;
106
- width: 28px;
107
- height: 28px;
108
- flex: 0 0 auto;
109
- padding: 0;
110
- border: none;
111
- border-radius: var(--wui-radius-sm);
112
- background: transparent;
113
- color: var(--color-text-muted);
114
- cursor: pointer;
115
- }
116
- .feedback-close:hover {
117
- background: var(--color-bg-muted);
118
- color: var(--color-text);
119
- }
120
- .feedback-close:focus-visible {
121
- outline: 2px solid var(--color-primary);
122
- outline-offset: 1px;
123
- }
124
-
125
- .feedback-body[hidden],
126
- .feedback-actions[hidden],
127
- .feedback-thanks[hidden] {
128
- display: none;
129
- }
130
-
131
- // ── Fields ──
132
- .feedback-field {
133
- display: block;
134
- margin-bottom: 12px;
135
- }
136
- .feedback-field-label {
137
- display: block;
138
- margin-bottom: 6px;
139
- font-size: 13px;
140
- font-weight: 500;
141
- color: var(--color-text-muted);
142
- }
143
- .feedback-message,
144
- .feedback-email {
145
- display: block;
146
- width: 100%;
147
- padding: 10px 12px;
148
- background: var(--color-surface);
149
- border: 1px solid var(--color-border);
150
- border-radius: var(--wui-radius-sm);
151
- color: var(--color-text);
152
- font-family: inherit;
153
- font-size: 14px;
154
- line-height: 1.45;
155
- }
156
- .feedback-message {
157
- min-height: 96px;
158
- resize: vertical;
159
- }
160
- .feedback-message:focus-visible,
161
- .feedback-email:focus-visible {
162
- outline: none;
163
- border-color: var(--color-primary);
164
- box-shadow: 0 0 0 3px var(--color-primary-soft);
165
- }
166
- .feedback-email {
167
- height: var(--wui-control-height-sm);
168
- }
169
-
170
- .feedback-error {
171
- margin: 0 0 4px;
172
- font-size: 13px;
173
- line-height: 1.4;
174
- color: var(--color-danger-text);
175
- }
176
- .feedback-error[hidden] {
177
- display: none;
178
- }
179
-
180
- // ── Actions ──
181
- .feedback-actions {
182
- display: flex;
183
- justify-content: flex-end;
184
- gap: 8px;
185
- }
186
- .feedback-cancel,
187
- .feedback-submit {
188
- height: var(--wui-control-height-sm);
189
- padding: 0 14px;
190
- border-radius: var(--wui-radius-sm);
191
- font-size: 14px;
192
- font-weight: 600;
193
- line-height: 1;
194
- cursor: pointer;
195
- }
196
- .feedback-cancel {
197
- border: 1px solid var(--color-border);
198
- background: transparent;
199
- color: var(--color-text);
200
- }
201
- .feedback-cancel:hover {
202
- background: var(--color-bg-muted);
203
- }
204
- .feedback-submit {
205
- border: none;
206
- background: var(--color-primary);
207
- color: var(--color-primary-text);
208
- }
209
- .feedback-submit:hover:not(:disabled) {
210
- background: var(--color-primary-hover);
211
- }
212
- .feedback-submit:disabled {
213
- opacity: 0.65;
214
- cursor: default;
215
- }
216
- .feedback-cancel:focus-visible,
217
- .feedback-submit:focus-visible {
218
- outline: 2px solid var(--color-primary);
219
- outline-offset: 2px;
220
- }
221
-
222
- // ── Thank-you ──
223
- .feedback-thanks {
224
- display: flex;
225
- align-items: center;
226
- gap: 10px;
227
- padding: 8px 0 4px;
228
- font-size: 14px;
229
- color: var(--color-success-text);
230
- }
231
- .feedback-thanks-icon {
232
- display: grid;
233
- place-items: center;
234
- line-height: 0;
235
- }
236
- .feedback-thanks-text {
237
- font-weight: 500;
238
- line-height: 1.4;
239
- }
240
-
241
- // ── Small screens ──
242
- // The panel is nearly the width of the phone, so pin it to both edges rather than to the
243
- // trigger's corner — a 340px card anchored to one side overhangs on the narrowest devices.
244
- @include media-breakpoint-down(sm) {
245
- .feedback-panel {
246
- position: fixed;
247
- right: 12px;
248
- left: 12px;
249
- bottom: calc(var(--wui-control-height-sm) + 32px);
250
- width: auto;
251
- max-width: none;
252
- }
253
- }
254
-
255
- @media (prefers-reduced-motion: reduce) {
256
- .feedback-trigger {
257
- transition: none;
258
- }
259
- }