@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.
|
|
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": {
|
package/scss/wui/_controls.scss
CHANGED
|
@@ -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),
|
package/scss/wui/_feedback.scss
DELETED
|
@@ -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
|
-
}
|