@webority/theme 0.13.1 → 0.13.3

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.3",
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.
@@ -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
- }