@keenmate/web-multiselect 1.3.0 → 1.5.0-rc01

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.
@@ -28,24 +28,30 @@
28
28
  // Custom: Set to any value to scale all sizes proportionally
29
29
  --ms-rem: 10px;
30
30
 
31
+ // ==========================================================================
32
+ // FONT FAMILY (set at :host so all shadow DOM content inherits)
33
+ // ==========================================================================
34
+ // Dropdown/popover are siblings of [data-multiselect], so we set font here
35
+ font-family: var(--ms-font-family, var(--base-font-family, #{$ms-font-family}));
36
+
31
37
  // ==========================================================================
32
38
  // COLORS & THEME
33
39
  // ==========================================================================
34
40
 
35
41
  // Accent Colors
36
- --ms-accent-color: #{$ml-accent-color};
37
- --ms-accent-color-hover: #{$ml-accent-color-hover};
38
- --ms-accent-color-active: #{$ml-accent-color-active};
42
+ --ms-accent-color: #{$ms-accent-color};
43
+ --ms-accent-color-hover: #{$ms-accent-color-hover};
44
+ --ms-accent-color-active: #{$ms-accent-color-active};
39
45
 
40
46
  // Text Colors
41
- --ms-text-primary: #{$ml-text-primary};
42
- --ms-text-secondary: #{$ml-text-secondary};
43
- --ms-text-white: #{$ml-text-white};
47
+ --ms-text-primary: #{$ms-text-primary};
48
+ --ms-text-secondary: #{$ms-text-secondary};
49
+ --ms-text-on-accent: #{$ms-text-on-accent};
44
50
 
45
51
  // Background Colors
46
- --ms-primary-bg: #{$ml-primary-bg};
47
- --ms-primary-bg-hover: #{$ml-primary-bg-hover};
48
- --ms-border-color: #{$ml-border-color};
52
+ --ms-primary-bg: #{$ms-primary-bg};
53
+ --ms-primary-bg-hover: #{$ms-primary-bg-hover};
54
+ --ms-border-color: #{$ms-border-color};
49
55
 
50
56
  // ==========================================================================
51
57
  // SEMANTIC VARIABLES - Component-Specific Theming
@@ -64,6 +70,7 @@
64
70
  --ms-input-background: var(--ms-input-bg);
65
71
  --ms-input-color: var(--ms-text-primary);
66
72
  --ms-input-border-color: var(--ms-border-color);
73
+ --ms-input-border-color-hover: var(--ms-text-secondary);
67
74
  --ms-input-border-color-focus: var(--ms-accent-color);
68
75
  --ms-input-placeholder-color: var(--ms-text-secondary);
69
76
  --ms-input-background-disabled: var(--ms-input-bg-disabled);
@@ -77,7 +84,7 @@
77
84
  // --------------------------------------------------------------------------
78
85
  --ms-counter-badge-background: var(--ms-accent-color);
79
86
  --ms-counter-badge-background-hover: var(--ms-accent-color-hover);
80
- --ms-counter-badge-color: var(--ms-text-white);
87
+ --ms-counter-badge-color: var(--ms-text-on-accent);
81
88
 
82
89
  // Floating Hint Semantic Variables
83
90
  // --------------------------------------------------------------------------
@@ -147,12 +154,14 @@
147
154
  // --------------------------------------------------------------------------
148
155
  --ms-badge-text-background: var(--ms-badge-text-bg);
149
156
  --ms-badge-text-color: var(--ms-accent-color);
157
+ --ms-badge-text-background-hover: var(--ms-badge-bg-hover);
158
+ --ms-badge-text-color-hover: var(--ms-badge-text-color);
150
159
 
151
160
  // Badge Remove Button Semantic Variables
152
161
  // --------------------------------------------------------------------------
153
162
  --ms-badge-remove-background: var(--ms-accent-color);
154
163
  --ms-badge-remove-background-hover: var(--ms-accent-color-hover);
155
- --ms-badge-remove-color: var(--ms-text-white);
164
+ --ms-badge-remove-color: var(--ms-text-on-accent);
156
165
 
157
166
  // Badge Counter Variant Semantic Variables
158
167
  // --------------------------------------------------------------------------
@@ -196,405 +205,408 @@
196
205
  // INPUT COMPONENT
197
206
  // ==========================================================================
198
207
 
199
- --ms-input-padding: #{$ml-input-padding};
200
- --ms-input-padding-right: #{$ml-input-padding-right};
201
- --ms-input-font-size: #{$ml-input-font-size};
202
- --ms-input-border-style: #{$ml-input-border-style};
203
- --ms-input-border-radius: #{$ml-input-border-radius};
204
- --ms-input-bg: #{$ml-input-bg};
205
- --ms-input-text: #{$ml-input-text};
206
- --ms-input-focus-border-color: #{$ml-input-focus-border-color};
207
- --ms-input-placeholder-color: #{$ml-input-placeholder-color};
208
- --ms-input-bg-disabled: #{$ml-input-bg-disabled};
209
-
210
- // ==========================================================================
211
- // INPUT SIZE VARIANTS
212
- // ==========================================================================
213
-
214
- --ms-input-size-xs-font: #{$ms-input-size-xs-font};
215
- --ms-input-size-xs-padding-v: #{$ms-input-size-xs-padding-v};
216
- --ms-input-size-xs-padding-h: #{$ms-input-size-xs-padding-h};
217
- --ms-input-size-xs-height: #{$ms-input-size-xs-height};
218
-
219
- --ms-input-size-sm-font: #{$ms-input-size-sm-font};
220
- --ms-input-size-sm-padding-v: #{$ms-input-size-sm-padding-v};
221
- --ms-input-size-sm-padding-h: #{$ms-input-size-sm-padding-h};
222
- --ms-input-size-sm-height: #{$ms-input-size-sm-height};
223
-
224
- --ms-input-size-md-font: #{$ms-input-size-md-font};
225
- --ms-input-size-md-padding-v: #{$ms-input-size-md-padding-v};
226
- --ms-input-size-md-padding-h: #{$ms-input-size-md-padding-h};
227
- --ms-input-size-md-height: #{$ms-input-size-md-height};
228
-
229
- --ms-input-size-lg-font: #{$ms-input-size-lg-font};
230
- --ms-input-size-lg-padding-v: #{$ms-input-size-lg-padding-v};
231
- --ms-input-size-lg-padding-h: #{$ms-input-size-lg-padding-h};
232
- --ms-input-size-lg-height: #{$ms-input-size-lg-height};
233
-
234
- --ms-input-size-xl-font: #{$ms-input-size-xl-font};
235
- --ms-input-size-xl-padding-v: #{$ms-input-size-xl-padding-v};
236
- --ms-input-size-xl-padding-h: #{$ms-input-size-xl-padding-h};
237
- --ms-input-size-xl-height: #{$ms-input-size-xl-height};
208
+ --ms-input-padding: #{$ms-input-padding};
209
+ --ms-input-padding-right: #{$ms-input-padding-right};
210
+ --ms-input-height: #{$ms-input-height};
211
+ --ms-input-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
212
+ --ms-input-border-style: #{$ms-input-border-style};
213
+ --ms-input-border-radius: #{$ms-input-border-radius};
214
+ --ms-input-bg: #{$ms-input-bg};
215
+ --ms-input-text: #{$ms-input-text};
216
+ --ms-input-focus-border-color: #{$ms-input-focus-border-color};
217
+ --ms-input-placeholder-color: #{$ms-input-placeholder-color};
218
+ --ms-input-bg-disabled: #{$ms-input-bg-disabled};
238
219
 
239
220
  // ==========================================================================
240
221
  // TOGGLE ICON
241
222
  // ==========================================================================
242
223
 
243
- --ms-toggle-right: #{$ml-toggle-right};
244
- --ms-toggle-color: #{$ml-toggle-color};
245
- --ms-transform-center-y: #{$ml-transform-center-y};
246
- --ms-transform-rotate-180: #{$ml-transform-rotate-180};
224
+ --ms-toggle-right: #{$ms-toggle-right};
225
+ --ms-toggle-color: #{$ms-toggle-color};
226
+ --ms-transform-center-y: #{$ms-transform-center-y};
227
+ --ms-transform-rotate-180: #{$ms-transform-rotate-180};
247
228
 
248
229
  // ==========================================================================
249
230
  // COUNT BADGE (in input)
250
231
  // ==========================================================================
251
232
 
252
- --ms-counter-offset: #{$ml-counter-offset};
253
- --ms-counter-padding: #{$ml-counter-padding};
254
- --ms-counter-bg: #{$ml-counter-bg};
255
- --ms-counter-color: #{$ml-counter-color};
256
- --ms-counter-font-size: #{$ml-counter-font-size};
257
- --ms-counter-font-weight: #{$ml-counter-font-weight};
258
- --ms-counter-border-radius: #{$ml-counter-border-radius};
259
- --ms-counter-bg-hover: #{$ml-counter-bg-hover};
260
- --ms-transform-scale-hover: #{$ml-transform-scale-hover};
233
+ --ms-counter-offset: #{$ms-counter-offset};
234
+ --ms-counter-padding: #{$ms-counter-padding};
235
+ --ms-counter-bg: #{$ms-counter-bg};
236
+ --ms-counter-color: #{$ms-counter-color};
237
+ --ms-counter-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
238
+ --ms-counter-font-weight: var(--base-font-weight-semibold, 600);
239
+ --ms-counter-border-radius: #{$ms-counter-border-radius};
240
+ --ms-counter-bg-hover: #{$ms-counter-bg-hover};
241
+ --ms-transform-scale-hover: #{$ms-transform-scale-hover};
261
242
 
262
243
  // ==========================================================================
263
244
  // FLOATING HINT
264
245
  // ==========================================================================
265
246
 
266
- --ms-hint-padding: #{$ml-hint-padding};
267
- --ms-hint-bg: #{$ml-hint-bg};
268
- --ms-hint-border: #{$ml-hint-border};
269
- --ms-hint-border-radius: #{$ml-hint-border-radius};
270
- --ms-hint-box-shadow: #{$ml-hint-box-shadow};
271
- --ms-hint-font-size: #{$ml-hint-font-size};
272
- --ms-hint-color: #{$ml-hint-color};
273
- --ms-line-height-relaxed: #{$ml-line-height-relaxed};
247
+ --ms-hint-padding: #{$ms-hint-padding};
248
+ --ms-hint-bg: #{$ms-hint-bg};
249
+ --ms-hint-border: #{$ms-hint-border};
250
+ --ms-hint-border-radius: #{$ms-hint-border-radius};
251
+ --ms-hint-box-shadow: #{$ms-hint-box-shadow};
252
+ --ms-hint-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
253
+ --ms-hint-color: #{$ms-hint-color};
274
254
 
275
255
  // ==========================================================================
276
256
  // DROPDOWN
277
257
  // ==========================================================================
278
258
 
279
- --ms-dropdown-bg: #{$ml-dropdown-bg};
280
- --ms-dropdown-border: #{$ml-dropdown-border};
281
- --ms-dropdown-border-radius: #{$ml-dropdown-border-radius};
282
- --ms-dropdown-box-shadow: #{$ml-dropdown-box-shadow};
283
- --ms-options-max-height: #{$ml-options-max-height};
284
- --ms-option-color: #{$ml-option-color};
285
- --ms-z-index-dropdown: #{$ml-z-index-dropdown};
286
- --ms-z-index-sticky: #{$ml-z-index-sticky};
259
+ --ms-dropdown-bg: #{$ms-dropdown-bg};
260
+ --ms-dropdown-border: #{$ms-dropdown-border};
261
+ --ms-dropdown-border-radius: #{$ms-dropdown-border-radius};
262
+ --ms-dropdown-box-shadow: #{$ms-dropdown-box-shadow};
263
+ --ms-options-max-height: #{$ms-options-max-height};
264
+ --ms-option-color: #{$ms-option-color};
265
+ --ms-z-index-dropdown: #{$ms-z-index-dropdown};
266
+ --ms-z-index-sticky: #{$ms-z-index-sticky};
287
267
 
288
268
  // ==========================================================================
289
269
  // DROPDOWN ACTIONS
290
270
  // ==========================================================================
291
271
 
292
- --ms-actions-gap: #{$ml-actions-gap};
293
- --ms-actions-padding: #{$ml-actions-padding};
294
- --ms-actions-border-bottom: #{$ml-actions-border-bottom};
295
- --ms-actions-bg: #{$ml-actions-bg};
272
+ --ms-actions-gap: #{$ms-actions-gap};
273
+ --ms-actions-padding: #{$ms-actions-padding};
274
+ --ms-actions-border-bottom: #{$ms-actions-border-bottom};
275
+ --ms-actions-bg: #{$ms-actions-bg};
296
276
 
297
277
  // Action Button
298
- --ms-action-btn-padding: #{$ml-action-btn-padding};
299
- --ms-action-btn-font-size: #{$ml-action-btn-font-size};
300
- --ms-action-btn-border: #{$ml-action-btn-border};
301
- --ms-action-btn-border-radius: #{$ml-action-btn-border-radius};
302
- --ms-action-btn-bg: #{$ml-action-btn-bg};
303
- --ms-action-btn-color: #{$ml-action-btn-color};
304
- --ms-action-btn-bg-hover: #{$ml-action-btn-bg-hover};
305
- --ms-action-btn-border-color-hover: #{$ml-action-btn-border-color-hover};
306
- --ms-transform-scale-active: #{$ml-transform-scale-active};
278
+ --ms-action-btn-padding: #{$ms-action-btn-padding};
279
+ --ms-action-btn-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
280
+ --ms-action-btn-border: #{$ms-action-btn-border};
281
+ --ms-action-btn-border-radius: #{$ms-action-btn-border-radius};
282
+ --ms-action-btn-bg: #{$ms-action-btn-bg};
283
+ --ms-action-btn-color: #{$ms-action-btn-color};
284
+ --ms-action-btn-bg-hover: #{$ms-action-btn-bg-hover};
285
+ --ms-action-btn-border-color-hover: #{$ms-action-btn-border-color-hover};
286
+ --ms-transform-scale-active: #{$ms-transform-scale-active};
307
287
 
308
288
  // ==========================================================================
309
289
  // OPTIONS CONTAINER & GROUPS
310
290
  // ==========================================================================
311
291
 
312
- --ms-options-padding: #{$ml-options-padding};
292
+ --ms-options-padding: #{$ms-options-padding};
313
293
 
314
294
  // Group
315
- --ms-group-border-top: #{$ml-group-border-top};
316
- --ms-group-margin-top: #{$ml-group-margin-top};
317
- --ms-group-padding-top: #{$ml-group-padding-top};
295
+ --ms-group-border-top: #{$ms-group-border-top};
296
+ --ms-group-margin-top: #{$ms-group-margin-top};
297
+ --ms-group-padding-top: #{$ms-group-padding-top};
318
298
 
319
299
  // Group Label
320
- --ms-group-label-padding: #{$ml-group-label-padding};
321
- --ms-group-label-font-size: #{$ml-group-label-font-size};
322
- --ms-group-label-font-weight: #{$ml-group-label-font-weight};
323
- --ms-group-label-color: #{$ml-group-label-color};
324
- --ms-group-label-transform: #{$ml-group-label-transform};
325
- --ms-group-label-letter-spacing: #{$ml-group-label-letter-spacing};
300
+ --ms-group-label-padding: #{$ms-group-label-padding};
301
+ --ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
302
+ --ms-group-label-font-weight: var(--base-font-weight-semibold, 600);
303
+ --ms-group-label-color: #{$ms-group-label-color};
304
+ --ms-group-label-transform: #{$ms-group-label-transform};
305
+ --ms-group-label-letter-spacing: #{$ms-group-label-letter-spacing};
326
306
 
327
307
  // ==========================================================================
328
308
  // INDIVIDUAL OPTIONS
329
309
  // ==========================================================================
330
310
 
331
- --ms-option-gap: #{$ml-option-gap};
332
- --ms-option-padding: #{$ml-option-padding};
333
- --ms-option-padding-h: #{$ml-option-padding-h};
334
- --ms-option-bg: #{$ml-option-bg};
335
- --ms-option-bg-hover: #{$ml-option-bg-hover};
336
- --ms-option-bg-focused: #{$ml-option-bg-focused};
337
- --ms-option-outline-focused: #{$ml-option-outline-focused};
338
- --ms-option-focus-outline-offset: #{$ml-option-focus-outline-offset};
339
- --ms-option-bg-matched: #{$ml-option-bg-matched};
340
- --ms-option-border-matched: #{$ml-option-border-matched};
341
- --ms-option-bg-selected: #{$ml-option-bg-selected};
342
- --ms-disabled-opacity: #{$ml-disabled-opacity};
311
+ --ms-option-gap: #{$ms-option-gap};
312
+ --ms-option-padding: #{$ms-option-padding};
313
+ --ms-option-padding-h: #{$ms-option-padding-h};
314
+ --ms-option-bg: #{$ms-option-bg};
315
+ --ms-option-bg-hover: #{$ms-option-bg-hover};
316
+ --ms-option-bg-focused: #{$ms-option-bg-focused};
317
+ --ms-option-outline-focused: #{$ms-option-outline-focused};
318
+ --ms-option-focus-outline-offset: #{$ms-option-focus-outline-offset};
319
+ --ms-option-bg-matched: #{$ms-option-bg-matched};
320
+ --ms-option-border-matched: #{$ms-option-border-matched};
321
+ --ms-option-bg-selected: #{$ms-option-bg-selected};
322
+
323
+ // Option State Combinations (background only - colors use fallback chains)
324
+ --ms-option-bg-focused-hover: #{$ms-option-bg-focused-hover};
325
+ --ms-option-bg-matched-hover: #{$ms-option-bg-matched-hover};
326
+ --ms-option-bg-selected-focused: #{$ms-option-bg-selected-focused};
327
+ --ms-option-bg-selected-matched: #{$ms-option-bg-selected-matched};
328
+ --ms-option-bg-disabled-selected: #{$ms-option-bg-disabled-selected};
329
+
330
+ --ms-disabled-opacity: #{$ms-disabled-opacity};
343
331
 
344
332
  // ==========================================================================
345
333
  // OPTION CONTENT
346
334
  // ==========================================================================
347
335
 
348
- --ms-option-content-gap: #{$ml-option-content-gap};
336
+ --ms-option-content-gap: #{$ms-option-content-gap};
349
337
 
350
338
  // Option Icon
351
- --ms-option-icon-size: #{$ml-option-icon-size};
352
- --ms-option-icon-font-size: #{$ml-option-icon-font-size};
339
+ --ms-option-icon-size: #{$ms-option-icon-size};
340
+ --ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));
353
341
 
354
342
  // Option Title
355
- --ms-option-title-font-size: #{$ml-option-title-font-size};
356
- --ms-option-title-color: #{$ml-option-title-color};
357
- --ms-option-mark-bg: #{$ml-option-mark-bg};
358
- --ms-option-mark-color: #{$ml-option-mark-color};
359
- --ms-option-mark-font-weight: #{$ml-option-mark-font-weight};
343
+ --ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
344
+ --ms-option-title-color: #{$ms-option-title-color};
345
+ --ms-option-mark-bg: #{$ms-option-mark-bg};
346
+ --ms-option-mark-color: #{$ms-option-mark-color};
347
+ --ms-option-mark-font-weight: var(--base-font-weight-semibold, 600);
360
348
 
361
349
  // Option Subtitle
362
- --ms-option-subtitle-margin-top: #{$ml-option-subtitle-margin-top};
363
- --ms-option-subtitle-font-size: #{$ml-option-subtitle-font-size};
364
- --ms-option-subtitle-color: #{$ml-option-subtitle-color};
365
- --ms-option-subtitle-line-height: #{$ml-option-subtitle-line-height};
350
+ --ms-option-subtitle-margin-top: #{$ms-option-subtitle-margin-top};
351
+ --ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
352
+ --ms-option-subtitle-color: #{$ms-option-subtitle-color};
353
+ --ms-option-subtitle-line-height: var(--base-line-height-tight, 1.25);
366
354
 
367
355
  // Checkbox
368
- --ms-checkbox-margin-top: #{$ml-checkbox-margin-top};
369
- --ms-checkbox-margin-right: #{$ml-checkbox-margin-right};
370
- --ms-checkbox-margin-bottom: #{$ml-checkbox-margin-bottom};
371
- --ms-checkbox-margin-left: #{$ml-checkbox-margin-left};
372
- --ms-checkbox-size: #{$ml-checkbox-size};
373
- --ms-checkbox-scale: #{$ml-checkbox-scale};
356
+ --ms-checkbox-margin-top: #{$ms-checkbox-margin-top};
357
+ --ms-checkbox-margin-right: #{$ms-checkbox-margin-right};
358
+ --ms-checkbox-margin-bottom: #{$ms-checkbox-margin-bottom};
359
+ --ms-checkbox-margin-left: #{$ms-checkbox-margin-left};
360
+ --ms-checkbox-size: #{$ms-checkbox-size};
361
+ --ms-checkbox-scale: #{$ms-checkbox-scale};
374
362
  --ms-checkbox-align: flex-start; // flex-start (top), center, flex-end (bottom)
375
363
 
376
364
  // Checkbox Styling (custom appearance)
377
- --ms-checkbox-bg: #{$ml-checkbox-bg};
378
- --ms-checkbox-border: #{$ml-checkbox-border};
379
- --ms-checkbox-border-radius: #{$ml-checkbox-border-radius};
380
- --ms-checkbox-checked-bg: #{$ml-checkbox-checked-bg};
381
- --ms-checkbox-checked-border: #{$ml-checkbox-checked-border};
382
- --ms-checkbox-checkmark-color: #{$ml-checkbox-checkmark-color};
383
- --ms-checkbox-hover-border-color: #{$ml-checkbox-hover-border-color};
384
- --ms-checkbox-disabled-bg: #{$ml-checkbox-disabled-bg};
385
- --ms-checkbox-disabled-border: #{$ml-checkbox-disabled-border};
365
+ --ms-checkbox-bg: #{$ms-checkbox-bg};
366
+ --ms-checkbox-border: #{$ms-checkbox-border};
367
+ --ms-checkbox-border-radius: #{$ms-checkbox-border-radius};
368
+ --ms-checkbox-checked-bg: #{$ms-checkbox-checked-bg};
369
+ --ms-checkbox-checked-border: #{$ms-checkbox-checked-border};
370
+ --ms-checkbox-checkmark-color: #{$ms-checkbox-checkmark-color};
371
+ --ms-checkbox-hover-border-color: #{$ms-checkbox-hover-border-color};
372
+ --ms-checkbox-disabled-bg: #{$ms-checkbox-disabled-bg};
373
+ --ms-checkbox-disabled-border: #{$ms-checkbox-disabled-border};
374
+
375
+ // Checkbox State Combinations
376
+ --ms-checkbox-checked-bg-hover: #{$ms-checkbox-checked-bg-hover};
377
+ --ms-checkbox-checked-border-color-hover: #{$ms-checkbox-checked-border-color-hover};
386
378
 
387
379
  // ==========================================================================
388
380
  // EMPTY & LOADING STATES
389
381
  // ==========================================================================
390
382
 
391
383
  // Empty State
392
- --ms-empty-padding: #{$ml-empty-padding};
393
- --ms-empty-font-size: #{$ml-empty-font-size};
394
- --ms-empty-color: #{$ml-empty-color};
384
+ --ms-empty-padding: #{$ms-empty-padding};
385
+ --ms-empty-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
386
+ --ms-empty-color: #{$ms-empty-color};
395
387
 
396
388
  // Loader
397
- --ms-loader-padding: #{$ml-loader-padding};
398
- --ms-loader-gap: #{$ml-loader-gap};
389
+ --ms-loader-padding: #{$ms-loader-padding};
390
+ --ms-loader-gap: #{$ms-loader-gap};
399
391
 
400
392
  // Loading Text
401
- --ms-loading-text-font-size: #{$ml-loading-text-font-size};
402
- --ms-loading-text-color: #{$ml-loading-text-color};
393
+ --ms-loading-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
394
+ --ms-loading-text-color: #{$ms-loading-text-color};
403
395
 
404
396
  // ==========================================================================
405
397
  // BADGES DISPLAY
406
398
  // ==========================================================================
407
399
 
408
- --ms-badges-gap: #{$ml-badges-gap};
409
- --ms-badges-margin-bottom: #{$ml-badges-margin-bottom};
410
- --ms-badges-margin-top: #{$ml-badges-margin-top};
411
- --ms-badges-margin-left: #{$ml-badges-margin-left};
412
- --ms-badges-margin-right: #{$ml-badges-margin-right};
400
+ --ms-badges-gap: #{$ms-badges-gap};
401
+ --ms-badges-margin-bottom: #{$ms-badges-margin-bottom};
402
+ --ms-badges-margin-top: #{$ms-badges-margin-top};
403
+ --ms-badges-margin-left: #{$ms-badges-margin-left};
404
+ --ms-badges-margin-right: #{$ms-badges-margin-right};
413
405
 
414
406
  // Individual Badge
415
- --ms-badge-gap: #{$ml-badge-gap};
416
- --ms-badge-height: #{$ml-badge-height};
417
- --ms-badge-font-size: #{$ml-badge-font-size};
418
- --ms-badge-font-weight: #{$ml-badge-font-weight};
419
- --ms-badge-border-radius: #{$ml-badge-border-radius};
420
- --ms-badge-border: #{$ml-badge-border};
421
- --ms-badge-bg: #{$ml-badge-bg};
422
- --ms-badge-bg-hover: #{$ml-badge-bg-hover};
423
- --ms-badge-bg-active: #{$ml-badge-bg-active};
424
- --ms-order-first: #{$ml-order-first};
407
+ --ms-badge-gap: #{$ms-badge-gap};
408
+ --ms-badge-height: #{$ms-badge-height};
409
+ --ms-badge-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
410
+ --ms-badge-font-weight: var(--base-font-weight-semibold, 600);
411
+ --ms-badge-border-radius: #{$ms-badge-border-radius};
412
+ --ms-badge-bg: #{$ms-badge-bg};
413
+ --ms-badge-bg-hover: #{$ms-badge-bg-hover};
414
+ --ms-badge-bg-active: #{$ms-badge-bg-active};
415
+ --ms-order-first: #{$ms-order-first};
425
416
 
426
417
  // ==========================================================================
427
418
  // BADGE TEXT & REMOVE BUTTON
428
419
  // ==========================================================================
429
420
 
430
421
  // Badge Text
431
- --ms-badge-text-padding: #{$ml-badge-text-padding};
432
- --ms-badge-text-bg: #{$ml-badge-text-bg};
433
- --ms-badge-text-color: #{$ml-badge-text-color};
422
+ --ms-badge-text-padding: #{$ms-badge-text-padding};
423
+ --ms-badge-text-bg: #{$ms-badge-text-bg};
424
+ --ms-badge-text-color: #{$ms-badge-text-color};
425
+ --ms-badge-text-border: #{$ms-badge-text-border};
434
426
 
435
427
  // Badge Remove Button
436
- --ms-badge-remove-width: #{$ml-badge-remove-width};
437
- --ms-badge-remove-bg: #{$ml-badge-remove-bg};
438
- --ms-badge-remove-color: #{$ml-badge-remove-color};
439
- --ms-badge-remove-border: #{$ml-badge-remove-border};
440
- --ms-badge-remove-font-size: #{$ml-badge-remove-font-size};
441
- --ms-badge-remove-bg-hover: #{$ml-badge-remove-bg-hover};
442
- --ms-badge-remove-box-shadow-focus: #{$ml-badge-remove-box-shadow-focus};
443
- --ms-icon-remove: "#{$ml-icon-remove}";
428
+ --ms-badge-remove-width: #{$ms-badge-remove-width};
429
+ --ms-badge-remove-bg: #{$ms-badge-remove-bg};
430
+ --ms-badge-remove-color: #{$ms-badge-remove-color};
431
+ --ms-badge-remove-border: #{$ms-badge-remove-border};
432
+ --ms-badge-remove-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
433
+ --ms-badge-remove-bg-hover: #{$ms-badge-remove-bg-hover};
434
+ --ms-badge-remove-box-shadow-focus: #{$ms-badge-remove-box-shadow-focus};
435
+ --ms-icon-remove: "#{$ms-icon-remove}";
444
436
 
445
437
  // Badge Indicator (for "+ X more", "3 selected", compact mode)
446
- --ms-badge-counter-bg: #{$ml-badge-counter-bg};
447
- --ms-badge-counter-border: #{$ml-badge-counter-border};
448
- --ms-badge-counter-border-radius: #{$ml-badge-counter-border-radius};
449
- --ms-badge-counter-text-color: #{$ml-badge-counter-text-color};
450
- --ms-badge-counter-text-bg: #{$ml-badge-counter-text-bg};
451
- --ms-badge-counter-remove-bg: #{$ml-badge-counter-remove-bg};
452
- --ms-badge-counter-remove-color: #{$ml-badge-counter-remove-color};
453
- --ms-badge-counter-remove-bg-hover: #{$ml-badge-counter-remove-bg-hover};
438
+ --ms-badge-counter-bg: #{$ms-badge-counter-bg};
439
+ --ms-badge-counter-border: #{$ms-badge-counter-border};
440
+ --ms-badge-counter-border-radius: #{$ms-badge-counter-border-radius};
441
+ --ms-badge-counter-text-color: #{$ms-badge-counter-text-color};
442
+ --ms-badge-counter-text-bg: #{$ms-badge-counter-text-bg};
443
+ --ms-badge-counter-remove-bg: #{$ms-badge-counter-remove-bg};
444
+ --ms-badge-counter-remove-color: #{$ms-badge-counter-remove-color};
445
+ --ms-badge-counter-remove-bg-hover: #{$ms-badge-counter-remove-bg-hover};
454
446
 
455
447
  // ==========================================================================
456
448
  // "+X MORE" BADGE
457
449
  // ==========================================================================
458
450
 
459
- --ms-more-badge-bg: #{$ml-more-badge-bg};
460
- --ms-more-badge-hover-bg: #{$ml-more-badge-hover-bg};
461
- --ms-more-badge-active-bg: #{$ml-more-badge-active-bg};
451
+ --ms-more-badge-bg: #{$ms-more-badge-bg};
452
+ --ms-more-badge-hover-bg: #{$ms-more-badge-hover-bg};
453
+ --ms-more-badge-active-bg: #{$ms-more-badge-active-bg};
462
454
 
463
455
  // ==========================================================================
464
456
  // COUNT DISPLAY MODE
465
457
  // ==========================================================================
466
458
 
467
- --ms-count-display-margin-bottom: #{$ml-count-display-margin-bottom};
468
- --ms-count-display-margin-top: #{$ml-count-display-margin-top};
469
- --ms-count-display-margin-left: #{$ml-count-display-margin-left};
470
- --ms-count-display-margin-right: #{$ml-count-display-margin-right};
459
+ --ms-count-display-margin-bottom: #{$ms-count-display-margin-bottom};
460
+ --ms-count-display-margin-top: #{$ms-count-display-margin-top};
461
+ --ms-count-display-margin-left: #{$ms-count-display-margin-left};
462
+ --ms-count-display-margin-right: #{$ms-count-display-margin-right};
471
463
 
472
464
  // Count Badge Wrapper
473
- --ms-counter-wrapper-bg: #{$ml-counter-wrapper-bg};
474
- --ms-counter-wrapper-border: #{$ml-counter-wrapper-border};
475
- --ms-counter-wrapper-border-radius: #{$ml-counter-wrapper-border-radius};
476
- --ms-counter-wrapper-padding: #{$ml-counter-wrapper-padding};
477
- --ms-counter-wrapper-gap: #{$ml-counter-wrapper-gap};
478
- --ms-counter-wrapper-bg-hover: #{$ml-counter-wrapper-bg-hover};
479
- --ms-counter-wrapper-border-color-hover: #{$ml-counter-wrapper-border-color-hover};
465
+ --ms-counter-wrapper-bg: #{$ms-counter-wrapper-bg};
466
+ --ms-counter-wrapper-border: #{$ms-counter-wrapper-border};
467
+ --ms-counter-wrapper-border-radius: #{$ms-counter-wrapper-border-radius};
468
+ --ms-counter-wrapper-padding: #{$ms-counter-wrapper-padding};
469
+ --ms-counter-wrapper-gap: #{$ms-counter-wrapper-gap};
470
+ --ms-counter-wrapper-bg-hover: #{$ms-counter-wrapper-bg-hover};
471
+ --ms-counter-wrapper-border-color-hover: #{$ms-counter-wrapper-border-color-hover};
480
472
 
481
473
  // ==========================================================================
482
474
  // COUNT TEXT & CLEAR BUTTON
483
475
  // ==========================================================================
484
476
 
485
477
  // Count Text
486
- --ms-count-text-bg: #{$ml-count-text-bg};
487
- --ms-count-text-border: #{$ml-count-text-border};
488
- --ms-count-text-font-size: #{$ml-count-text-font-size};
489
- --ms-count-text-color: #{$ml-count-text-color};
478
+ --ms-count-text-bg: #{$ms-count-text-bg};
479
+ --ms-count-text-border: #{$ms-count-text-border};
480
+ --ms-count-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
481
+ --ms-count-text-color: #{$ms-count-text-color};
490
482
 
491
483
  // Count Clear Button
492
- --ms-count-clear-size: #{$ml-count-clear-size};
493
- --ms-count-clear-bg: #{$ml-count-clear-bg};
494
- --ms-count-clear-color: #{$ml-count-clear-color};
495
- --ms-count-clear-font-size: #{$ml-count-clear-font-size};
496
- --ms-count-clear-border-radius: #{$ml-count-clear-border-radius};
497
- --ms-count-clear-bg-hover: #{$ml-count-clear-bg-hover};
498
- --ms-count-clear-color-hover: #{$ml-count-clear-color-hover};
499
- --ms-icon-clear: "#{$ml-icon-clear}";
484
+ --ms-count-clear-size: #{$ms-count-clear-size};
485
+ --ms-count-clear-bg: #{$ms-count-clear-bg};
486
+ --ms-count-clear-color: #{$ms-count-clear-color};
487
+ --ms-count-clear-font-size: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));
488
+ --ms-count-clear-border-radius: #{$ms-count-clear-border-radius};
489
+ --ms-count-clear-bg-hover: #{$ms-count-clear-bg-hover};
490
+ --ms-count-clear-color-hover: #{$ms-count-clear-color-hover};
491
+ --ms-icon-clear: "#{$ms-icon-clear}";
500
492
 
501
493
  // ==========================================================================
502
494
  // TOOLTIPS
503
495
  // ==========================================================================
504
496
 
505
- --ms-tooltip-bg: #{$ml-tooltip-bg};
506
- --ms-tooltip-color: #{$ml-tooltip-color};
507
- --ms-tooltip-padding: #{$ml-tooltip-padding};
508
- --ms-tooltip-border-radius: #{$ml-tooltip-border-radius};
509
- --ms-tooltip-font-size: #{$ml-tooltip-font-size};
510
- --ms-tooltip-max-width: #{$ml-tooltip-max-width};
511
- --ms-tooltip-shadow: #{$ml-tooltip-shadow};
512
- --ms-tooltip-z-index: #{$ml-tooltip-z-index};
497
+ --ms-tooltip-bg: #{$ms-tooltip-bg};
498
+ --ms-tooltip-color: #{$ms-tooltip-color};
499
+ --ms-tooltip-padding: #{$ms-tooltip-padding};
500
+ --ms-tooltip-border-radius: #{$ms-tooltip-border-radius};
501
+ --ms-tooltip-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
502
+ --ms-tooltip-max-width: #{$ms-tooltip-max-width};
503
+ --ms-tooltip-shadow: #{$ms-tooltip-shadow};
504
+ --ms-tooltip-z-index: #{$ms-tooltip-z-index};
513
505
 
514
506
  // ==========================================================================
515
507
  // SELECTED POPOVER
516
508
  // ==========================================================================
517
509
 
518
- --ms-z-index-popover: #{$ml-z-index-popover};
519
- --ms-selected-popover-width: #{$ml-selected-popover-width};
520
- --ms-selected-popover-max-height: #{$ml-selected-popover-max-height};
521
- --ms-selected-popover-bg: #{$ml-selected-popover-bg};
522
- --ms-selected-popover-border: #{$ml-selected-popover-border};
523
- --ms-selected-popover-border-radius: #{$ml-selected-popover-border-radius};
524
- --ms-selected-popover-box-shadow: #{$ml-selected-popover-box-shadow};
510
+ --ms-z-index-popover: #{$ms-z-index-popover};
511
+ --ms-selected-popover-width: #{$ms-selected-popover-width};
512
+ --ms-selected-popover-max-height: #{$ms-selected-popover-max-height};
513
+ --ms-selected-popover-bg: #{$ms-selected-popover-bg};
514
+ --ms-selected-popover-border: #{$ms-selected-popover-border};
515
+ --ms-selected-popover-border-radius: #{$ms-selected-popover-border-radius};
516
+ --ms-selected-popover-box-shadow: #{$ms-selected-popover-box-shadow};
525
517
 
526
518
  // Popover Header
527
- --ms-selected-popover-header-padding: #{$ml-selected-popover-header-padding};
528
- --ms-selected-popover-header-bg: #{$ml-selected-popover-header-bg};
529
- --ms-selected-popover-header-border-bottom: #{$ml-selected-popover-header-border-bottom};
530
- --ms-selected-popover-header-font-size: #{$ml-selected-popover-header-font-size};
531
- --ms-selected-popover-header-font-weight: #{$ml-selected-popover-header-font-weight};
532
- --ms-selected-popover-header-color: #{$ml-selected-popover-header-color};
519
+ --ms-selected-popover-header-padding: #{$ms-selected-popover-header-padding};
520
+ --ms-selected-popover-header-bg: #{$ms-selected-popover-header-bg};
521
+ --ms-selected-popover-header-border-bottom: #{$ms-selected-popover-header-border-bottom};
522
+ --ms-selected-popover-header-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
523
+ --ms-selected-popover-header-font-weight: var(--base-font-weight-semibold, 600);
524
+ --ms-selected-popover-header-color: #{$ms-selected-popover-header-color};
533
525
 
534
526
  // ==========================================================================
535
527
  // POPOVER CLOSE BUTTON
536
528
  // ==========================================================================
537
529
 
538
- --ms-popover-close-size: #{$ml-popover-close-size};
539
- --ms-selected-popover-close-bg: #{$ml-selected-popover-close-bg};
540
- --ms-selected-popover-close-color: #{$ml-selected-popover-close-color};
541
- --ms-selected-popover-close-font-size: #{$ml-selected-popover-close-font-size};
542
- --ms-selected-popover-close-border-radius: #{$ml-selected-popover-close-border-radius};
543
- --ms-selected-popover-close-bg-hover: #{$ml-selected-popover-close-bg-hover};
544
- --ms-selected-popover-close-color-hover: #{$ml-selected-popover-close-color-hover};
530
+ --ms-popover-close-size: #{$ms-popover-close-size};
531
+ --ms-selected-popover-close-bg: #{$ms-selected-popover-close-bg};
532
+ --ms-selected-popover-close-color: #{$ms-selected-popover-close-color};
533
+ --ms-selected-popover-close-font-size: calc(var(--base-font-size-xl, 2) * var(--ms-rem));
534
+ --ms-selected-popover-close-border-radius: #{$ms-selected-popover-close-border-radius};
535
+ --ms-selected-popover-close-bg-hover: #{$ms-selected-popover-close-bg-hover};
536
+ --ms-selected-popover-close-color-hover: #{$ms-selected-popover-close-color-hover};
545
537
 
546
538
  // ==========================================================================
547
539
  // POPOVER BODY
548
540
  // ==========================================================================
549
541
 
550
- --ms-selected-popover-body-gap: #{$ml-selected-popover-body-gap};
551
- --ms-selected-popover-body-padding: #{$ml-selected-popover-body-padding};
552
- --ms-selected-popover-body-max-height: #{$ml-selected-popover-body-max-height};
542
+ --ms-selected-popover-body-gap: #{$ms-selected-popover-body-gap};
543
+ --ms-selected-popover-body-padding: #{$ms-selected-popover-body-padding};
544
+ --ms-selected-popover-body-max-height: #{$ms-selected-popover-body-max-height};
553
545
 
554
546
  // ==========================================================================
555
547
  // TYPOGRAPHY SCALE
556
548
  // ==========================================================================
549
+ // Typography variables follow this priority chain:
550
+ // 1. --ms-* (component-specific override)
551
+ // 2. --base-* (shared theme-designer value)
552
+ // 3. Unitless default multiplied by --ms-rem
553
+ //
554
+ // Note: --ms-font-family is set directly on :host above (not as a variable)
555
+ // because it needs to be applied, not just defined.
556
+ //
557
+ // Font sizes use unitless multipliers from theme-designer:
558
+ // Theme-designer outputs: --base-font-size-sm: 1.4 (unitless)
559
+ // Component computes: calc(1.4 * var(--ms-rem)) = 14px
560
+
561
+ // Font Sizes (unitless multipliers × --ms-rem)
562
+ --ms-font-size-2xs: calc(var(--base-font-size-2xs, 1) * var(--ms-rem)); // 10px
563
+ --ms-font-size-xs: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem)); // 12px
564
+ --ms-font-size-sm: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem)); // 14px
565
+ --ms-font-size-base: calc(var(--base-font-size-base, 1.6) * var(--ms-rem)); // 16px
566
+ --ms-font-size-lg: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem)); // 18px
567
+
568
+ // Font Weights
569
+ --ms-font-weight-normal: var(--base-font-weight-normal, #{$ms-font-weight-normal});
570
+ --ms-font-weight-medium: var(--base-font-weight-medium, #{$ms-font-weight-medium});
571
+ --ms-font-weight-semibold: var(--base-font-weight-semibold, #{$ms-font-weight-semibold});
557
572
 
558
- --ms-font-size-2xs: #{$ml-font-size-2xs};
559
- --ms-font-size-xs: #{$ml-font-size-xs};
560
- --ms-font-size-sm: #{$ml-font-size-sm};
561
- --ms-font-size-base: #{$ml-font-size-base};
562
- --ms-font-size-lg: #{$ml-font-size-lg};
563
- --ms-font-weight-medium: #{$ml-font-weight-medium};
564
- --ms-font-weight-semibold: #{$ml-font-weight-semibold};
565
- --ms-line-height-none: #{$ml-line-height-none};
573
+ // Line Heights
574
+ --ms-line-height-none: #{$ms-line-height-none};
575
+ --ms-line-height-tight: var(--base-line-height-tight, #{$ms-line-height-tight});
576
+ --ms-line-height-normal: var(--base-line-height-normal, #{$ms-line-height-normal});
577
+ --ms-line-height-relaxed: var(--base-line-height-relaxed, #{$ms-line-height-relaxed});
566
578
 
567
579
  // ==========================================================================
568
580
  // SPACING & SIZING
569
581
  // ==========================================================================
570
582
 
571
- --ms-spacing-xs: #{$ml-spacing-xs};
572
- --ms-spacing-sm: #{$ml-spacing-sm};
573
- --ms-spacing-md: #{$ml-spacing-md};
574
- --ms-spacing-lg: #{$ml-spacing-lg};
583
+ --ms-spacing-xs: #{$ms-spacing-xs};
584
+ --ms-spacing-sm: #{$ms-spacing-sm};
585
+ --ms-spacing-md: #{$ms-spacing-md};
586
+ --ms-spacing-lg: #{$ms-spacing-lg};
575
587
 
576
588
  // ==========================================================================
577
589
  // TRANSITIONS & EFFECTS
578
590
  // ==========================================================================
579
591
 
580
- --ms-transition-fast: #{$ml-transition-fast};
581
- --ms-transition-normal: #{$ml-transition-normal};
582
- --ms-easing-snappy: #{$ml-easing-snappy};
592
+ --ms-transition-fast: #{$ms-transition-fast};
593
+ --ms-transition-normal: #{$ms-transition-normal};
594
+ --ms-easing-snappy: #{$ms-easing-snappy};
583
595
 
584
596
  // ==========================================================================
585
597
  // OPACITY VALUES
586
598
  // ==========================================================================
587
599
 
588
- --ms-placeholder-opacity: #{$ml-placeholder-opacity};
589
- --ms-disabled-input-opacity: #{$ml-disabled-input-opacity};
600
+ --ms-placeholder-opacity: #{$ms-placeholder-opacity};
601
+ --ms-disabled-input-opacity: #{$ms-disabled-input-opacity};
590
602
 
591
603
  // ==========================================================================
592
604
  // SCROLLBAR
593
605
  // ==========================================================================
594
606
 
595
- --ms-scrollbar-width: #{$ml-scrollbar-width};
596
- --ms-scrollbar-track-bg: #{$ml-scrollbar-track-bg};
597
- --ms-scrollbar-thumb-bg: #{$ml-scrollbar-thumb-bg};
598
- --ms-scrollbar-thumb-bg-hover: #{$ml-scrollbar-thumb-bg-hover};
599
- --ms-scrollbar-thumb-border-radius: #{$ml-scrollbar-thumb-border-radius};
607
+ --ms-scrollbar-width: #{$ms-scrollbar-width};
608
+ --ms-scrollbar-track-bg: #{$ms-scrollbar-track-bg};
609
+ --ms-scrollbar-thumb-bg: #{$ms-scrollbar-thumb-bg};
610
+ --ms-scrollbar-thumb-bg-hover: #{$ms-scrollbar-thumb-bg-hover};
611
+ --ms-scrollbar-thumb-border-radius: #{$ms-scrollbar-thumb-border-radius};
600
612
  }