@vialiq/flux-ui 0.12.0 → 0.14.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.
@@ -12,4 +12,6 @@
12
12
  @forward 'modal';
13
13
 
14
14
  @forward 'chip';
15
+ @forward 'tag';
15
16
  @forward 'animation';
17
+ @forward 'switch';
@@ -55,6 +55,14 @@
55
55
  flex-shrink: 0;
56
56
  }
57
57
 
58
+ /* Draggable Modal Header styles */
59
+ .modal-dialog.is-draggable {
60
+ .modal-header {
61
+ cursor: move;
62
+ user-select: none;
63
+ }
64
+ }
65
+
58
66
  .modal-title {
59
67
  font-size: tokens.$font-size-lg;
60
68
  font-weight: tokens.$font-weight-semibold;
@@ -0,0 +1,126 @@
1
+ @use '../styles/variables' as tokens;
2
+
3
+ @layer components {
4
+ // ── Wrapper ──────────────────────────────────────────────────────────────────
5
+ // Uses flex-start so the track top-aligns with the first line when the label
6
+ // wraps across multiple lines. The track itself is nudged down by half the
7
+ // difference between one line-height and its own height so it optically sits
8
+ // on the cap-height of the first text line.
9
+
10
+ .switch-wrapper {
11
+ display: inline-flex;
12
+ align-items: flex-start;
13
+ gap: var(--vi-switch-label-gap, 8px);
14
+ cursor: pointer;
15
+ font-family: #{tokens.$font-family-base};
16
+ font-size: var(--vi-switch-label-font-size, #{tokens.$font-size-base});
17
+ line-height: #{tokens.$line-height-normal};
18
+ color: var(--vi-switch-label-color, #{tokens.$text-primary});
19
+ user-select: none;
20
+ }
21
+
22
+ // ── Label text ────────────────────────────────────────────────────────────────
23
+ // flex: 1 lets it grow past the fixed-width track; min-width: 0 is required on
24
+ // a flex child so that word-break / overflow-wrap actually take effect.
25
+
26
+ .switch-label {
27
+ flex: 1 1 auto;
28
+ min-width: 0;
29
+ word-break: break-word;
30
+ overflow-wrap: break-word;
31
+ }
32
+
33
+ // ── Hidden native input ────────────────────────────────────────────────────────
34
+ // Visually hidden but still a full keyboard / AT participant.
35
+
36
+ .switch-input {
37
+ position: absolute !important;
38
+ clip-path: inset(50%) !important;
39
+ overflow: hidden !important;
40
+ width: 1px !important;
41
+ height: 1px !important;
42
+ margin: -1px !important;
43
+ padding: 0 !important;
44
+ border: 0 !important;
45
+ white-space: nowrap !important;
46
+ }
47
+
48
+ // ── Track ─────────────────────────────────────────────────────────────────────
49
+ // margin-top offsets the track downward so its visual centre aligns with the
50
+ // cap-height of the first text line.
51
+
52
+ .switch-track {
53
+ box-sizing: border-box;
54
+ position: relative;
55
+ width: var(--vi-switch-track-width, 44px);
56
+ height: var(--vi-switch-track-height, 24px);
57
+ background-color: var(--vi-switch-track-color-off, #{tokens.$border-03});
58
+ border-radius: var(--vi-border-radius-full, 9999px);
59
+ transition: background-color var(--vi-switch-transition-duration, 150ms) ease;
60
+ flex-shrink: 0;
61
+ // Align track centre with first-line cap-height
62
+ margin-top: calc(
63
+ (1em * #{tokens.$line-height-normal} - var(--vi-switch-track-height, 24px)) / 2
64
+ );
65
+ }
66
+
67
+ // ── Thumb ─────────────────────────────────────────────────────────────────────
68
+
69
+ .switch-thumb {
70
+ position: absolute;
71
+ top: 50%;
72
+ left: var(--vi-switch-thumb-offset, 2px);
73
+ transform: translateY(-50%);
74
+ width: var(--vi-switch-thumb-size, 18px);
75
+ height: var(--vi-switch-thumb-size, 18px);
76
+ background-color: var(--vi-switch-thumb-color, #{tokens.$text-primary-inverse});
77
+ border-radius: 50%;
78
+ box-shadow: var(--vi-switch-thumb-shadow, 0 1px 3px rgba(0, 0, 0, 0.2));
79
+ transition: left var(--vi-switch-transition-duration, 150ms) ease;
80
+ }
81
+
82
+ // ── Checked state ─────────────────────────────────────────────────────────────
83
+
84
+ .switch-input:checked ~ .switch-track {
85
+ background-color: var(--vi-switch-track-color-on, #{tokens.$color-primary});
86
+
87
+ .switch-thumb {
88
+ left: calc(
89
+ 100% - var(--vi-switch-thumb-size, 18px) - var(--vi-switch-thumb-offset, 2px)
90
+ );
91
+ }
92
+ }
93
+
94
+ // ── Focus ring ────────────────────────────────────────────────────────────────
95
+
96
+ .switch-input:focus-visible ~ .switch-track {
97
+ outline: #{tokens.$border-width-base} solid
98
+ var(--vi-switch-focus-ring-color, #{tokens.$focus});
99
+ outline-offset: 2px;
100
+ box-shadow: 0 0 0 3px var(--vi-switch-focus-ring-glow, #{tokens.$color-blue-200});
101
+ }
102
+
103
+ // ── Disabled state ────────────────────────────────────────────────────────────
104
+
105
+ .switch-wrapper--disabled {
106
+ cursor: not-allowed;
107
+ opacity: var(--vi-switch-disabled-opacity, 0.5);
108
+
109
+ .switch-track {
110
+ background-color: #{tokens.$border-03};
111
+ }
112
+
113
+ .switch-input:checked ~ .switch-track {
114
+ background-color: #{tokens.$text-disabled};
115
+ }
116
+ }
117
+
118
+ // ── Reduced motion ────────────────────────────────────────────────────────────
119
+
120
+ @media (prefers-reduced-motion: reduce) {
121
+ .switch-track,
122
+ .switch-thumb {
123
+ transition: none;
124
+ }
125
+ }
126
+ }
@@ -0,0 +1,448 @@
1
+ @use '../styles/variables' as tokens;
2
+
3
+ @layer components {
4
+ :host,
5
+ :root {
6
+ --vi-tag-height: 24px;
7
+ --vi-tag-padding-x: 10px;
8
+ --vi-tag-border-radius: 4px;
9
+ --vi-tag-font-size: var(--vi-font-size-xs, #{tokens.$font-size-xs});
10
+ --vi-tag-font-weight: var(--vi-font-weight-medium, #{tokens.$font-weight-medium});
11
+ --vi-tag-gap: 6px;
12
+ --vi-tag-remove-size: 16px;
13
+ --vi-tag-dot-size: 6px;
14
+ --vi-tag-avatar-size: 14px;
15
+ --vi-tag-icon-size: 14px;
16
+ --vi-tag-transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1);
17
+ --vi-tag-disabled-opacity: 0.5;
18
+ --vi-tag-max-width: 100%;
19
+ }
20
+
21
+ .tag {
22
+ display: inline-flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ box-sizing: border-box;
26
+ height: var(--vi-tag-height);
27
+ padding-inline: var(--vi-tag-padding-x);
28
+ border-radius: var(--vi-tag-border-radius);
29
+ font-family: #{tokens.$font-family-base};
30
+ font-size: var(--vi-tag-font-size);
31
+ font-weight: var(--vi-tag-font-weight);
32
+ line-height: 1;
33
+ gap: var(--vi-tag-gap);
34
+ transition: var(--vi-tag-transition);
35
+ user-select: none;
36
+ border: #{tokens.$border-width-thin} solid transparent;
37
+ cursor: default;
38
+ max-width: var(--vi-tag-max-width);
39
+ vertical-align: middle;
40
+ position: relative;
41
+
42
+ // ── Pill shape modifier ──────────────────────────────────────────────────
43
+ &.tag--pill {
44
+ border-radius: 9999px;
45
+ }
46
+
47
+ // ── Removable padding adjustment ──────────────────────────────────────────
48
+ &.tag--removable {
49
+ padding-inline-end: calc(var(--vi-tag-padding-x) - 4px);
50
+ }
51
+
52
+ // ── Content wrapper & optical vertical alignment ─────────────────────────
53
+ .tag-content-wrapper {
54
+ display: inline-flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ gap: var(--vi-tag-gap);
58
+ min-width: 0;
59
+ flex: 1 1 auto;
60
+ height: 100%;
61
+ line-height: 1;
62
+ outline: none;
63
+ border-radius: inherit;
64
+ }
65
+
66
+ .tag-label {
67
+ overflow: hidden;
68
+ text-overflow: ellipsis;
69
+ white-space: nowrap;
70
+ min-width: 0;
71
+ line-height: 1;
72
+ display: inline-block;
73
+ }
74
+
75
+ // ── Icon & Avatar slots ──────────────────────────────────────────────────
76
+ .tag-icon,
77
+ .tag-avatar,
78
+ .tag-checkmark {
79
+ display: inline-flex;
80
+ align-items: center;
81
+ justify-content: center;
82
+ line-height: 1;
83
+ flex-shrink: 0;
84
+ }
85
+
86
+ .tag-avatar ::slotted(*) {
87
+ width: var(--vi-tag-avatar-size, calc(var(--vi-tag-height) - 10px));
88
+ height: var(--vi-tag-avatar-size, calc(var(--vi-tag-height) - 10px));
89
+ border-radius: 50%;
90
+ object-fit: cover;
91
+ display: block;
92
+ }
93
+
94
+ // ── Status Dot indicator ────────────────────────────────────────────────
95
+ .tag-dot {
96
+ display: inline-block;
97
+ width: var(--vi-tag-dot-size);
98
+ height: var(--vi-tag-dot-size);
99
+ border-radius: 50%;
100
+ background-color: currentColor;
101
+ flex-shrink: 0;
102
+ }
103
+
104
+ // ── Suffix Count Badge ──────────────────────────────────────────────────
105
+ .tag-count {
106
+ display: inline-flex;
107
+ align-items: center;
108
+ justify-content: center;
109
+ padding-inline: 5px;
110
+ height: calc(var(--vi-tag-height) - 10px);
111
+ min-width: calc(var(--vi-tag-height) - 10px);
112
+ font-size: 10px;
113
+ font-weight: #{tokens.$font-weight-semibold};
114
+ border-radius: 9999px;
115
+ background-color: rgba(0, 0, 0, 0.08);
116
+ color: inherit;
117
+ line-height: 1;
118
+ flex-shrink: 0;
119
+ margin-inline-start: 2px;
120
+ }
121
+
122
+ // ── Interactive state styles ─────────────────────────────────────────────
123
+ &.tag-clickable {
124
+ cursor: pointer;
125
+
126
+ &:hover {
127
+ transform: translateY(-1px);
128
+ }
129
+
130
+ &:active {
131
+ transform: translateY(0px) scale(0.98);
132
+ }
133
+ }
134
+
135
+ // ────────────────────────────────────────────────────────────────────────
136
+ // APPEARANCE: Subtle (Soft background tint + subtle border)
137
+ // ────────────────────────────────────────────────────────────────────────
138
+ &.appearance-subtle {
139
+ &.variant-neutral {
140
+ background-color: var(--vi-tag-neutral-bg, #{tokens.$layer-02});
141
+ color: var(--vi-tag-neutral-color, #{tokens.$text-primary});
142
+ border-color: var(--vi-tag-neutral-border, #{tokens.$border-03});
143
+
144
+ &.tag-clickable:hover {
145
+ background-color: var(--vi-tag-neutral-hover-bg, #{tokens.$layer-03});
146
+ border-color: var(--vi-tag-neutral-hover-border, #{tokens.$border-04});
147
+ }
148
+ &.tag-selected {
149
+ background-color: var(--vi-tag-neutral-selected-bg, #{tokens.$layer-03});
150
+ border-color: var(--vi-tag-neutral-selected-border, #{tokens.$color-primary});
151
+ color: var(--vi-tag-neutral-selected-color, #{tokens.$color-primary});
152
+ }
153
+ }
154
+
155
+ &.variant-primary {
156
+ background-color: var(--vi-tag-primary-bg, #{tokens.$bg-info});
157
+ color: var(--vi-tag-primary-color, #{tokens.$text-info});
158
+ border-color: var(--vi-tag-primary-border, #{tokens.$color-blue-300});
159
+
160
+ &.tag-clickable:hover {
161
+ background-color: var(--vi-tag-primary-hover-bg, #{tokens.$color-blue-100});
162
+ border-color: var(--vi-tag-primary-hover-border, #{tokens.$color-blue-400});
163
+ }
164
+ &.tag-selected {
165
+ background-color: var(--vi-tag-primary-selected-bg, #{tokens.$color-blue-100});
166
+ border-color: var(--vi-tag-primary-selected-border, #{tokens.$color-primary});
167
+ color: var(--vi-tag-primary-selected-color, #{tokens.$color-blue-800});
168
+ }
169
+ }
170
+
171
+ &.variant-success {
172
+ background-color: var(--vi-tag-success-bg, #{tokens.$bg-success});
173
+ color: var(--vi-tag-success-color, #{tokens.$text-success});
174
+ border-color: var(--vi-tag-success-border, #{tokens.$color-green-300});
175
+
176
+ &.tag-clickable:hover {
177
+ background-color: var(--vi-tag-success-hover-bg, #{tokens.$color-green-100});
178
+ border-color: var(--vi-tag-success-hover-border, #{tokens.$color-green-400});
179
+ }
180
+ &.tag-selected {
181
+ background-color: var(--vi-tag-success-selected-bg, #{tokens.$color-green-100});
182
+ border-color: var(--vi-tag-success-selected-border, #{tokens.$color-success});
183
+ color: var(--vi-tag-success-selected-color, #{tokens.$color-green-800});
184
+ }
185
+ }
186
+
187
+ &.variant-warning {
188
+ background-color: var(--vi-tag-warning-bg, #{tokens.$bg-warning});
189
+ color: var(--vi-tag-warning-color, #{tokens.$text-warning});
190
+ border-color: var(--vi-tag-warning-border, #{tokens.$color-yellow-300});
191
+
192
+ &.tag-clickable:hover {
193
+ background-color: var(--vi-tag-warning-hover-bg, #{tokens.$color-yellow-100});
194
+ border-color: var(--vi-tag-warning-hover-border, #{tokens.$color-yellow-400});
195
+ }
196
+ &.tag-selected {
197
+ background-color: var(--vi-tag-warning-selected-bg, #{tokens.$color-yellow-100});
198
+ border-color: var(--vi-tag-warning-selected-border, #{tokens.$color-warning});
199
+ color: var(--vi-tag-warning-selected-color, #{tokens.$color-yellow-800});
200
+ }
201
+ }
202
+
203
+ &.variant-danger {
204
+ background-color: var(--vi-tag-danger-bg, #{tokens.$bg-error});
205
+ color: var(--vi-tag-danger-color, #{tokens.$text-error});
206
+ border-color: var(--vi-tag-danger-border, #{tokens.$color-red-300});
207
+
208
+ &.tag-clickable:hover {
209
+ background-color: var(--vi-tag-danger-hover-bg, #{tokens.$color-red-100});
210
+ border-color: var(--vi-tag-danger-hover-border, #{tokens.$color-red-400});
211
+ }
212
+ &.tag-selected {
213
+ background-color: var(--vi-tag-danger-selected-bg, #{tokens.$color-red-100});
214
+ border-color: var(--vi-tag-danger-selected-border, #{tokens.$color-error});
215
+ color: var(--vi-tag-danger-selected-color, #{tokens.$color-red-800});
216
+ }
217
+ }
218
+
219
+ &.variant-info {
220
+ background-color: var(--vi-tag-info-bg, #{tokens.$color-blue-100});
221
+ color: var(--vi-tag-info-color, #{tokens.$color-blue-700});
222
+ border-color: var(--vi-tag-info-border, #{tokens.$color-blue-300});
223
+
224
+ &.tag-clickable:hover {
225
+ background-color: var(--vi-tag-info-hover-bg, #{tokens.$color-blue-200});
226
+ border-color: var(--vi-tag-info-hover-border, #{tokens.$color-blue-500});
227
+ }
228
+ &.tag-selected {
229
+ background-color: var(--vi-tag-info-selected-bg, #{tokens.$color-blue-200});
230
+ border-color: var(--vi-tag-info-selected-border, #{tokens.$color-blue-700});
231
+ color: var(--vi-tag-info-selected-color, #{tokens.$color-blue-900});
232
+ }
233
+ }
234
+
235
+ &.variant-contrast {
236
+ background-color: var(--vi-tag-contrast-bg, #{tokens.$text-primary});
237
+ color: var(--vi-tag-contrast-color, #{tokens.$text-primary-inverse});
238
+ border-color: var(--vi-tag-contrast-border, #{tokens.$text-primary});
239
+
240
+ .tag-count {
241
+ background-color: rgba(255, 255, 255, 0.2);
242
+ }
243
+ }
244
+ }
245
+
246
+ // ────────────────────────────────────────────────────────────────────────
247
+ // APPEARANCE: Outline (Transparent bg, crisp theme border)
248
+ // ────────────────────────────────────────────────────────────────────────
249
+ &.appearance-outline {
250
+ background-color: transparent;
251
+
252
+ &.variant-neutral {
253
+ color: var(--vi-tag-outline-neutral-color, #{tokens.$text-primary});
254
+ border-color: var(--vi-tag-outline-neutral-border, #{tokens.$border-04});
255
+ &.tag-clickable:hover, &.tag-selected {
256
+ background-color: var(--vi-tag-outline-neutral-hover-bg, #{tokens.$layer-02});
257
+ }
258
+ }
259
+
260
+ &.variant-primary {
261
+ color: var(--vi-tag-outline-primary-color, #{tokens.$color-primary});
262
+ border-color: var(--vi-tag-outline-primary-border, #{tokens.$color-primary});
263
+ &.tag-clickable:hover, &.tag-selected {
264
+ background-color: var(--vi-tag-outline-primary-hover-bg, #{tokens.$bg-info});
265
+ }
266
+ }
267
+
268
+ &.variant-success {
269
+ color: var(--vi-tag-outline-success-color, #{tokens.$color-success});
270
+ border-color: var(--vi-tag-outline-success-border, #{tokens.$color-success});
271
+ &.tag-clickable:hover, &.tag-selected {
272
+ background-color: var(--vi-tag-outline-success-hover-bg, #{tokens.$bg-success});
273
+ }
274
+ }
275
+
276
+ &.variant-warning {
277
+ color: var(--vi-tag-outline-warning-color, #{tokens.$color-warning});
278
+ border-color: var(--vi-tag-outline-warning-border, #{tokens.$color-warning});
279
+ &.tag-clickable:hover, &.tag-selected {
280
+ background-color: var(--vi-tag-outline-warning-hover-bg, #{tokens.$bg-warning});
281
+ }
282
+ }
283
+
284
+ &.variant-danger {
285
+ color: var(--vi-tag-outline-danger-color, #{tokens.$color-error});
286
+ border-color: var(--vi-tag-outline-danger-border, #{tokens.$color-error});
287
+ &.tag-clickable:hover, &.tag-selected {
288
+ background-color: var(--vi-tag-outline-danger-hover-bg, #{tokens.$bg-error});
289
+ }
290
+ }
291
+
292
+ &.variant-info {
293
+ color: var(--vi-tag-outline-info-color, #{tokens.$color-blue-700});
294
+ border-color: var(--vi-tag-outline-info-border, #{tokens.$color-blue-500});
295
+ &.tag-clickable:hover, &.tag-selected {
296
+ background-color: var(--vi-tag-outline-info-hover-bg, #{tokens.$color-blue-100});
297
+ }
298
+ }
299
+
300
+ &.variant-contrast {
301
+ color: var(--vi-tag-outline-contrast-color, #{tokens.$text-primary});
302
+ border-color: var(--vi-tag-outline-contrast-border, #{tokens.$text-primary});
303
+ &.tag-clickable:hover, &.tag-selected {
304
+ background-color: var(--vi-tag-outline-contrast-hover-bg, #{tokens.$layer-02});
305
+ }
306
+ }
307
+ }
308
+
309
+ // ────────────────────────────────────────────────────────────────────────
310
+ // APPEARANCE: Solid (Filled theme background)
311
+ // ────────────────────────────────────────────────────────────────────────
312
+ &.appearance-solid {
313
+ border-color: transparent;
314
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
315
+
316
+ &.variant-neutral {
317
+ background-color: var(--vi-tag-solid-neutral-bg, #{tokens.$border-inverse-03});
318
+ color: var(--vi-tag-solid-neutral-color, #{tokens.$text-primary-inverse});
319
+ &.tag-clickable:hover, &.tag-selected {
320
+ background-color: var(--vi-tag-solid-neutral-hover-bg, #{tokens.$text-primary});
321
+ }
322
+ }
323
+
324
+ &.variant-primary {
325
+ background-color: var(--vi-tag-solid-primary-bg, #{tokens.$color-primary});
326
+ color: var(--vi-tag-solid-primary-color, #{tokens.$text-primary-inverse});
327
+ &.tag-clickable:hover, &.tag-selected {
328
+ background-color: var(--vi-tag-solid-primary-hover-bg, #{tokens.$color-blue-800});
329
+ }
330
+ }
331
+
332
+ &.variant-success {
333
+ background-color: var(--vi-tag-solid-success-bg, #{tokens.$color-success});
334
+ color: var(--vi-tag-solid-success-color, #{tokens.$text-primary-inverse});
335
+ &.tag-clickable:hover, &.tag-selected {
336
+ background-color: var(--vi-tag-solid-success-hover-bg, #{tokens.$color-green-700});
337
+ }
338
+ }
339
+
340
+ &.variant-warning {
341
+ background-color: var(--vi-tag-solid-warning-bg, #{tokens.$color-warning});
342
+ color: var(--vi-tag-solid-warning-color, #{tokens.$text-primary-inverse});
343
+ &.tag-clickable:hover, &.tag-selected {
344
+ background-color: var(--vi-tag-solid-warning-hover-bg, #{tokens.$color-yellow-700});
345
+ }
346
+ }
347
+
348
+ &.variant-danger {
349
+ background-color: var(--vi-tag-solid-danger-bg, #{tokens.$color-error});
350
+ color: var(--vi-tag-solid-danger-color, #{tokens.$text-primary-inverse});
351
+ &.tag-clickable:hover, &.tag-selected {
352
+ background-color: var(--vi-tag-solid-danger-hover-bg, #{tokens.$color-red-700});
353
+ }
354
+ }
355
+
356
+ &.variant-info {
357
+ background-color: var(--vi-tag-solid-info-bg, #{tokens.$color-blue-600});
358
+ color: var(--vi-tag-solid-info-color, #{tokens.$text-primary-inverse});
359
+ &.tag-clickable:hover, &.tag-selected {
360
+ background-color: var(--vi-tag-solid-info-hover-bg, #{tokens.$color-blue-800});
361
+ }
362
+ }
363
+
364
+ &.variant-contrast {
365
+ background-color: var(--vi-tag-solid-contrast-bg, #{tokens.$text-primary});
366
+ color: var(--vi-tag-solid-contrast-color, #{tokens.$text-primary-inverse});
367
+ }
368
+
369
+ .tag-count {
370
+ background-color: rgba(255, 255, 255, 0.25);
371
+ }
372
+ }
373
+
374
+ // ────────────────────────────────────────────────────────────────────────
375
+ // SIZES
376
+ // ────────────────────────────────────────────────────────────────────────
377
+ &.size-xs {
378
+ --vi-tag-height: 18px;
379
+ --vi-tag-font-size: 10px;
380
+ --vi-tag-padding-x: 6px;
381
+ --vi-tag-gap: 4px;
382
+ --vi-tag-remove-size: 12px;
383
+ --vi-tag-dot-size: 4px;
384
+ --vi-tag-avatar-size: 10px;
385
+ --vi-tag-icon-size: 10px;
386
+ }
387
+
388
+ &.size-sm {
389
+ --vi-tag-height: 20px;
390
+ --vi-tag-font-size: 11px;
391
+ --vi-tag-padding-x: 8px;
392
+ --vi-tag-gap: 5px;
393
+ --vi-tag-remove-size: 14px;
394
+ --vi-tag-dot-size: 5px;
395
+ --vi-tag-avatar-size: 12px;
396
+ --vi-tag-icon-size: 12px;
397
+ }
398
+
399
+ &.size-lg {
400
+ --vi-tag-height: 28px;
401
+ --vi-tag-font-size: 13px;
402
+ --vi-tag-padding-x: 12px;
403
+ --vi-tag-gap: 8px;
404
+ --vi-tag-remove-size: 18px;
405
+ --vi-tag-dot-size: 7px;
406
+ --vi-tag-avatar-size: 18px;
407
+ --vi-tag-icon-size: 16px;
408
+ }
409
+
410
+ // ── Disabled state ───────────────────────────────────────────────────────
411
+ &.is-disabled {
412
+ opacity: var(--vi-tag-disabled-opacity);
413
+ pointer-events: none;
414
+ cursor: not-allowed;
415
+ box-shadow: none !important;
416
+ transform: none !important;
417
+ }
418
+ }
419
+
420
+ // ── Remove Button styling ──────────────────────────────────────────────────
421
+ .tag-remove-btn {
422
+ display: inline-flex;
423
+ align-items: center;
424
+ justify-content: center;
425
+ width: var(--vi-tag-remove-size);
426
+ height: var(--vi-tag-remove-size);
427
+ min-width: var(--vi-tag-remove-size);
428
+ padding: 0;
429
+ border-radius: 50%;
430
+ margin-inline-start: 2px;
431
+ margin-inline-end: 0;
432
+ cursor: pointer;
433
+ background: transparent;
434
+ border: none;
435
+ color: inherit;
436
+ transition: var(--vi-tag-transition);
437
+ flex-shrink: 0;
438
+ line-height: 1;
439
+
440
+ &:hover {
441
+ background-color: rgba(0, 0, 0, 0.12);
442
+ }
443
+
444
+ &:active {
445
+ transform: scale(0.92);
446
+ }
447
+ }
448
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vialiq/flux-ui",
3
- "version": "0.12.0",
3
+ "version": "0.14.0",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"