@keenmate/web-multiselect 1.5.1 → 1.6.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.
@@ -0,0 +1,588 @@
1
+ /* ==============================================================================
2
+ CSS CUSTOM PROPERTIES (:host level)
3
+ ==============================================================================
4
+ This file defines all CSS custom properties at the :host level, making them:
5
+ - Inspectable in browser DevTools
6
+ - Overridable from outside Shadow DOM
7
+ - Self-documenting in compiled CSS
8
+
9
+ Usage from outside Shadow DOM:
10
+ multi-select {
11
+ --ms-accent-color: #10b981;
12
+ --ms-input-border-radius: 0.5rem;
13
+ }
14
+ ============================================================================== */
15
+
16
+ :host {
17
+ /* ==========================================================================
18
+ BASE SIZING UNIT
19
+ ==========================================================================
20
+ All sizing values are based on this unit for consistent scaling.
21
+ Default: 10px produces standard pixel values
22
+ Pure Admin: Set to 1rem (inherits from html { font-size: 10px })
23
+ Custom: Set to any value to scale all sizes proportionally */
24
+ --ms-rem: 10px;
25
+
26
+ /* ==========================================================================
27
+ FONT FAMILY (set at :host so all shadow DOM content inherits)
28
+ ========================================================================== */
29
+ font-family: var(--ms-font-family, var(--base-font-family, inherit));
30
+
31
+ /* ==========================================================================
32
+ COLORS & THEME
33
+ ==========================================================================
34
+ Color variables follow this priority chain:
35
+ 1. External override: --ms-accent-color: #custom
36
+ 2. Base theme value: var(--base-accent-color)
37
+ 3. Hardcoded default fallback */
38
+
39
+ /* Accent Colors */
40
+ --ms-accent-color: var(--base-accent-color, #3b82f6);
41
+ --ms-accent-color-hover: var(--base-accent-color-hover, #2563eb);
42
+ --ms-accent-color-active: var(--base-accent-color-active, #1d4ed8);
43
+
44
+ /* Text Color Levels (FluentUI-style hierarchy) */
45
+ --ms-text-color-1: var(--base-text-color-1, #111827);
46
+ --ms-text-color-2: var(--base-text-color-2, #353b47);
47
+ --ms-text-color-3: var(--base-text-color-3, #6b7280);
48
+ --ms-text-color-4: var(--base-text-color-4, #a0a3a9);
49
+ --ms-text-on-accent: var(--base-text-on-accent, #ffffff);
50
+
51
+ /* Legacy aliases (for backward compatibility) */
52
+ --ms-text-primary: var(--ms-text-color-1);
53
+ --ms-text-secondary: var(--ms-text-color-3);
54
+
55
+ /* Background Colors */
56
+ --ms-primary-bg: var(--base-primary-bg, #f3f4f6);
57
+ --ms-primary-bg-hover: var(--base-primary-bg-hover, #e5e7eb);
58
+ --ms-border-color: var(--base-border-color, #e5e7eb);
59
+
60
+ /* ==========================================================================
61
+ SEMANTIC VARIABLES - Component-Specific Theming
62
+ ==========================================================================
63
+ Pattern: --ms-{component}-{property}-{state}
64
+ Example: --ms-input-background, --ms-option-text-color-hover */
65
+
66
+ /* Input Component Semantic Variables */
67
+ --ms-input-background: var(--base-input-background, #ffffff);
68
+ --ms-input-color: var(--base-input-color, var(--ms-text-color-1));
69
+ --ms-input-border: var(--base-input-border, 1px solid var(--ms-border-color));
70
+ --ms-input-border-hover: var(--base-input-border-hover, 1px solid var(--ms-accent-color));
71
+ --ms-input-border-focus: var(--base-input-border-focus, 1px solid var(--ms-accent-color));
72
+ --ms-input-placeholder-color: var(--base-input-placeholder-color, var(--ms-text-color-4));
73
+ --ms-input-background-disabled: var(--base-input-background-disabled, rgba(107, 114, 128, 0.05));
74
+
75
+ /* Toggle Icon Semantic Variables */
76
+ --ms-toggle-icon-color: var(--ms-text-color-3);
77
+ --ms-toggle-icon-color-open: var(--ms-text-color-3);
78
+
79
+ /* Counter Badge (in Input) Semantic Variables */
80
+ --ms-counter-badge-background: var(--ms-accent-color);
81
+ --ms-counter-badge-background-hover: var(--ms-accent-color-hover);
82
+ --ms-counter-badge-color: var(--ms-text-on-accent);
83
+
84
+ /* Floating Hint Semantic Variables */
85
+ --ms-hint-background: #ffffff;
86
+ --ms-hint-color: var(--ms-text-color-4);
87
+ --ms-hint-border-color: var(--ms-border-color);
88
+
89
+ /* Dropdown Semantic Variables */
90
+ --ms-dropdown-background: var(--base-dropdown-background, #ffffff);
91
+ --ms-dropdown-text-color: var(--ms-text-color-1);
92
+ --ms-dropdown-border-color: var(--ms-border-color);
93
+ --ms-dropdown-box-shadow-semantic: var(--base-dropdown-box-shadow, 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1));
94
+
95
+ /* Dropdown Actions Semantic Variables */
96
+ --ms-actions-background: #ffffff;
97
+ --ms-actions-border-color: var(--ms-border-color);
98
+
99
+ /* Action Button Semantic Variables */
100
+ --ms-action-button-background: transparent;
101
+ --ms-action-button-background-hover: var(--ms-primary-bg);
102
+ --ms-action-button-border-color: var(--ms-border-color);
103
+ --ms-action-button-border-color-hover: var(--ms-accent-color);
104
+ --ms-action-button-color: var(--ms-text-color-1);
105
+
106
+ /* Group Semantic Variables */
107
+ --ms-group-border-color: var(--ms-border-color);
108
+ --ms-group-label-color: var(--ms-text-color-3);
109
+
110
+ /* Option Semantic Variables */
111
+ --ms-option-text-color: var(--ms-text-color-1);
112
+ --ms-option-background: transparent;
113
+ --ms-option-background-hover: var(--ms-primary-bg);
114
+ --ms-option-color-hover: inherit;
115
+ --ms-option-background-focused: var(--ms-primary-bg);
116
+ --ms-option-color-focused: inherit;
117
+ --ms-option-outline-color-focused: var(--ms-accent-color);
118
+ --ms-option-background-selected: rgba(59, 130, 246, 0.1);
119
+ --ms-option-background-matched: rgba(59, 130, 246, 0.08);
120
+ --ms-option-color-matched: inherit;
121
+ --ms-option-border-matched-color: rgba(59, 130, 246, 0.4);
122
+
123
+ /* Option Content Semantic Variables */
124
+ --ms-option-title-color: var(--ms-text-color-1);
125
+ --ms-option-subtitle-color: var(--ms-text-color-3);
126
+ --ms-option-mark-background: rgba(59, 130, 246, 0.2);
127
+ --ms-option-mark-color: inherit;
128
+
129
+ /* Empty/Loading State Semantic Variables */
130
+ --ms-empty-color: var(--ms-text-color-3);
131
+ --ms-loading-color: var(--ms-text-color-3);
132
+
133
+ /* Badge Semantic Variables */
134
+ --ms-badge-background: #eff6ff;
135
+ --ms-badge-background-hover: #ffffff;
136
+ --ms-badge-background-active: #e0f2fe;
137
+
138
+ /* Badge Text Semantic Variables */
139
+ --ms-badge-text-background: #eff6ff;
140
+ --ms-badge-text-color: var(--ms-accent-color);
141
+ --ms-badge-text-background-hover: #ffffff;
142
+ --ms-badge-text-color-hover: var(--ms-badge-text-color);
143
+
144
+ /* Badge Remove Button Semantic Variables */
145
+ --ms-badge-remove-background: var(--ms-accent-color);
146
+ --ms-badge-remove-background-hover: var(--ms-accent-color-hover);
147
+ --ms-badge-remove-color: var(--ms-text-on-accent);
148
+
149
+ /* Badge Counter Variant Semantic Variables */
150
+ --ms-badge-counter-border-color: var(--ms-border-color);
151
+ --ms-badge-counter-text-background: #d1d5db;
152
+ --ms-badge-counter-text-color: var(--ms-text-color-3);
153
+ --ms-badge-counter-remove-background: #6b7280;
154
+ --ms-badge-counter-remove-background-hover: #111827;
155
+ --ms-badge-counter-remove-color: #ffffff;
156
+
157
+ /* Count Display Semantic Variables */
158
+ --ms-counter-wrapper-background: transparent;
159
+ --ms-counter-wrapper-background-hover: var(--ms-primary-bg);
160
+ --ms-counter-wrapper-border-color: var(--ms-border-color);
161
+ --ms-counter-wrapper-border-color-hover: var(--ms-accent-color);
162
+ --ms-count-text-color: var(--ms-text-color-1);
163
+ --ms-count-clear-background: transparent;
164
+ --ms-count-clear-background-hover: var(--ms-accent-color);
165
+ --ms-count-clear-color: var(--ms-text-color-3);
166
+ --ms-count-clear-color-hover: var(--ms-accent-color);
167
+
168
+ /* Tooltip Semantic Variables */
169
+ --ms-tooltip-background: var(--base-tooltip-background, #333333);
170
+ --ms-tooltip-text-color: var(--base-tooltip-text-color, #ffffff);
171
+
172
+ /* Selected Popover Semantic Variables */
173
+ --ms-selected-popover-background: #ffffff;
174
+ --ms-selected-popover-border-color: var(--ms-border-color);
175
+ --ms-selected-popover-header-background: rgba(59, 130, 246, 0.1);
176
+ --ms-selected-popover-header-color: var(--ms-text-color-1);
177
+ --ms-selected-popover-header-border-color: var(--ms-border-color);
178
+ --ms-selected-popover-close-background: transparent;
179
+ --ms-selected-popover-close-background-hover: var(--ms-accent-color);
180
+ --ms-selected-popover-close-color: var(--ms-text-color-3);
181
+ --ms-selected-popover-close-color-hover: var(--ms-accent-color);
182
+
183
+ /* ==========================================================================
184
+ INPUT COMPONENT
185
+ ========================================================================== */
186
+ --ms-input-padding: calc(0.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));
187
+ --ms-input-padding-right: calc(4 * var(--ms-rem));
188
+ --ms-input-height: calc(var(--base-input-size-md-height, 3.5) * var(--ms-rem));
189
+ --ms-input-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
190
+ --ms-input-border-width: 1px;
191
+ --ms-input-border-radius: var(--ms-border-radius-md);
192
+ --ms-input-bg: #ffffff;
193
+ --ms-input-text: #111827;
194
+ --ms-input-bg-disabled: rgba(107, 114, 128, 0.05);
195
+
196
+ /* ==========================================================================
197
+ INPUT SIZE VARIANTS
198
+ ==========================================================================
199
+ Five size variants for the input element (xs, sm, md, lg, xl)
200
+ Heights reference --base-input-size-*-height for consistency across components */
201
+ --ms-input-size-xs-font: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
202
+ --ms-input-size-xs-padding-v: calc(0.4 * var(--ms-rem));
203
+ --ms-input-size-xs-padding-h: calc(0.8 * var(--ms-rem));
204
+ --ms-input-size-xs-height: calc(var(--base-input-size-xs-height, 3.1) * var(--ms-rem)); /* 31px */
205
+
206
+ --ms-input-size-sm-font: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
207
+ --ms-input-size-sm-padding-v: calc(0.5 * var(--ms-rem));
208
+ --ms-input-size-sm-padding-h: calc(1.0 * var(--ms-rem));
209
+ --ms-input-size-sm-height: calc(var(--base-input-size-sm-height, 3.3) * var(--ms-rem)); /* 33px */
210
+
211
+ --ms-input-size-md-font: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
212
+ --ms-input-size-md-padding-v: calc(0.8 * var(--ms-rem));
213
+ --ms-input-size-md-padding-h: calc(1.2 * var(--ms-rem));
214
+ --ms-input-size-md-height: calc(var(--base-input-size-md-height, 3.5) * var(--ms-rem)); /* 35px */
215
+
216
+ --ms-input-size-lg-font: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));
217
+ --ms-input-size-lg-padding-v: calc(1.0 * var(--ms-rem));
218
+ --ms-input-size-lg-padding-h: calc(1.4 * var(--ms-rem));
219
+ --ms-input-size-lg-height: calc(var(--base-input-size-lg-height, 3.8) * var(--ms-rem)); /* 38px */
220
+
221
+ --ms-input-size-xl-font: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));
222
+ --ms-input-size-xl-padding-v: calc(1.2 * var(--ms-rem));
223
+ --ms-input-size-xl-padding-h: calc(1.6 * var(--ms-rem));
224
+ --ms-input-size-xl-height: calc(var(--base-input-size-xl-height, 4.1) * var(--ms-rem)); /* 41px */
225
+
226
+ /* ==========================================================================
227
+ TOGGLE ICON
228
+ ========================================================================== */
229
+ --ms-toggle-right: calc(1.2 * var(--ms-rem));
230
+ --ms-toggle-color: #6b7280;
231
+ --ms-transform-center-y: translateY(-50%);
232
+ --ms-transform-rotate-180: 180deg;
233
+
234
+ /* ==========================================================================
235
+ COUNT BADGE (in input)
236
+ ========================================================================== */
237
+ --ms-counter-offset: calc(3.2 * var(--ms-rem));
238
+ --ms-counter-padding: calc(0.2 * var(--ms-rem)) calc(0.4 * var(--ms-rem));
239
+ --ms-counter-bg: #3b82f6;
240
+ --ms-counter-color: #ffffff;
241
+ --ms-counter-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
242
+ --ms-counter-font-weight: var(--base-font-weight-semibold, 600);
243
+ --ms-counter-border-radius: var(--ms-border-radius-sm);
244
+ --ms-counter-bg-hover: #2563eb;
245
+ --ms-transform-scale-hover: 1.1;
246
+
247
+ /* ==========================================================================
248
+ FLOATING HINT
249
+ ========================================================================== */
250
+ --ms-hint-padding: calc(0.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));
251
+ --ms-hint-bg: #ffffff;
252
+ --ms-hint-border: 1px solid #e5e7eb;
253
+ --ms-hint-border-radius: var(--ms-border-radius-lg);
254
+ --ms-hint-box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
255
+ --ms-hint-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
256
+
257
+ /* ==========================================================================
258
+ DROPDOWN
259
+ ========================================================================== */
260
+ --ms-dropdown-bg: #ffffff;
261
+ --ms-dropdown-border: var(--base-dropdown-border, 1px solid #e5e7eb);
262
+ --ms-dropdown-border-radius: var(--ms-border-radius-lg);
263
+ --ms-dropdown-box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
264
+ --ms-options-max-height: calc(32 * var(--ms-rem));
265
+ --ms-option-color: #111827;
266
+ --ms-z-index-dropdown: 9999;
267
+ --ms-z-index-sticky: 1;
268
+
269
+ /* ==========================================================================
270
+ DROPDOWN ACTIONS
271
+ ========================================================================== */
272
+ --ms-actions-gap: calc(0.4 * var(--ms-rem));
273
+ --ms-actions-padding: calc(0.8 * var(--ms-rem));
274
+ --ms-actions-border-bottom: 1px solid #e5e7eb;
275
+ --ms-actions-bg: #ffffff;
276
+
277
+ /* Action Button */
278
+ --ms-action-btn-padding: calc(0.4 * var(--ms-rem)) calc(0.8 * var(--ms-rem));
279
+ --ms-action-btn-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
280
+ --ms-action-btn-border: 1px solid #e5e7eb;
281
+ --ms-action-btn-border-radius: var(--ms-border-radius-sm);
282
+ --ms-action-btn-bg: transparent;
283
+ --ms-action-btn-color: inherit;
284
+ --ms-action-btn-bg-hover: #f3f4f6;
285
+ --ms-action-btn-border-color-hover: #3b82f6;
286
+ --ms-transform-scale-active: 0.98;
287
+
288
+ /* ==========================================================================
289
+ OPTIONS CONTAINER & GROUPS
290
+ ========================================================================== */
291
+ --ms-options-padding: 0;
292
+
293
+ /* Group */
294
+ --ms-group-border-top: 1px solid #e5e7eb;
295
+ --ms-group-margin-top: calc(0.4 * var(--ms-rem));
296
+ --ms-group-padding-top: calc(0.4 * var(--ms-rem));
297
+
298
+ /* Group Label */
299
+ --ms-group-label-padding: calc(0.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));
300
+ --ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
301
+ --ms-group-label-font-weight: var(--base-font-weight-semibold, 600);
302
+ --ms-group-label-color: #6b7280;
303
+ --ms-group-label-transform: uppercase;
304
+ --ms-group-label-letter-spacing: 0.05em;
305
+
306
+ /* ==========================================================================
307
+ INDIVIDUAL OPTIONS
308
+ ========================================================================== */
309
+ --ms-option-gap: calc(0.8 * var(--ms-rem));
310
+ --ms-option-padding: calc(0.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));
311
+ --ms-option-padding-h: calc(1.2 * var(--ms-rem));
312
+ --ms-option-bg: transparent;
313
+ --ms-option-bg-hover: #f9fafb;
314
+ --ms-option-bg-focused: #f9fafb;
315
+ --ms-option-outline-focused: 2px solid #3b82f6;
316
+ --ms-option-focus-outline-offset: -2px;
317
+ --ms-option-bg-matched: rgba(59, 130, 246, 0.08);
318
+ --ms-option-border-matched: 3px solid rgba(59, 130, 246, 0.4);
319
+ --ms-option-bg-selected: rgba(59, 130, 246, 0.1);
320
+
321
+ /* Option State Combinations */
322
+ --ms-option-bg-focused-hover: #f9fafb;
323
+ --ms-option-bg-matched-hover: rgba(59, 130, 246, 0.12);
324
+ --ms-option-bg-selected-focused: rgba(59, 130, 246, 0.15);
325
+ --ms-option-bg-selected-matched: rgba(59, 130, 246, 0.15);
326
+ --ms-option-bg-disabled-selected: rgba(59, 130, 246, 0.1);
327
+
328
+ --ms-disabled-opacity: 0.5;
329
+
330
+ /* ==========================================================================
331
+ OPTION CONTENT
332
+ ========================================================================== */
333
+ --ms-option-content-gap: calc(0.8 * var(--ms-rem));
334
+
335
+ /* Option Icon */
336
+ --ms-option-icon-size: calc(2 * var(--ms-rem));
337
+ --ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));
338
+
339
+ /* Option Title */
340
+ --ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
341
+ --ms-option-mark-bg: rgba(59, 130, 246, 0.2);
342
+ --ms-option-mark-color: inherit;
343
+ --ms-option-mark-font-weight: var(--base-font-weight-semibold, 600);
344
+
345
+ /* Option Subtitle */
346
+ --ms-option-subtitle-margin-top: calc(0.4 * var(--ms-rem));
347
+ --ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
348
+ --ms-option-subtitle-line-height: var(--base-line-height-tight, 1.25);
349
+
350
+ /* Checkbox */
351
+ --ms-checkbox-margin-top: calc(0.2 * var(--ms-rem));
352
+ --ms-checkbox-margin-right: 0;
353
+ --ms-checkbox-margin-bottom: 0;
354
+ --ms-checkbox-margin-left: 0;
355
+ --ms-checkbox-size: calc(1.6 * var(--ms-rem));
356
+ --ms-checkbox-scale: 1;
357
+ --ms-checkbox-align: center;
358
+
359
+ /* Checkbox Styling */
360
+ --ms-checkbox-bg: #ffffff;
361
+ --ms-checkbox-border: 1px solid #d1d5db;
362
+ --ms-checkbox-border-radius: calc(0.3 * var(--ms-rem));
363
+ --ms-checkbox-checked-bg: #3b82f6;
364
+ --ms-checkbox-checked-border: 1px solid #3b82f6;
365
+ --ms-checkbox-checkmark-color: #ffffff;
366
+ --ms-checkbox-hover-border-color: #3b82f6;
367
+ --ms-checkbox-disabled-bg: #e5e7eb;
368
+ --ms-checkbox-disabled-border: 1px solid #e5e7eb;
369
+
370
+ /* Checkbox State Combinations */
371
+ --ms-checkbox-checked-bg-hover: #2563eb;
372
+ --ms-checkbox-checked-border-color-hover: #2563eb;
373
+
374
+ /* ==========================================================================
375
+ EMPTY & LOADING STATES
376
+ ========================================================================== */
377
+ --ms-empty-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));
378
+ --ms-empty-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
379
+ --ms-empty-color: #6b7280;
380
+
381
+ /* Loader */
382
+ --ms-loader-padding: calc(1.6 * var(--ms-rem));
383
+ --ms-loader-gap: calc(0.8 * var(--ms-rem));
384
+
385
+ /* Loading Text */
386
+ --ms-loading-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
387
+ --ms-loading-text-color: #6b7280;
388
+
389
+ /* ==========================================================================
390
+ BADGES DISPLAY
391
+ ========================================================================== */
392
+ --ms-badges-gap: calc(0.8 * var(--ms-rem));
393
+ --ms-badges-margin-bottom: calc(0.8 * var(--ms-rem));
394
+ --ms-badges-margin-top: calc(0.8 * var(--ms-rem));
395
+ --ms-badges-margin-left: calc(0.4 * var(--ms-rem));
396
+ --ms-badges-margin-right: calc(0.4 * var(--ms-rem));
397
+
398
+ /* Individual Badge */
399
+ --ms-badge-gap: calc(0.8 * var(--ms-rem));
400
+ --ms-badge-height: calc(2.7 * var(--ms-rem));
401
+ --ms-badge-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
402
+ --ms-badge-font-weight: var(--base-font-weight-semibold, 600);
403
+ --ms-badge-border-radius: var(--ms-border-radius-sm);
404
+ --ms-badge-bg: #eff6ff;
405
+ --ms-badge-bg-hover: #ffffff;
406
+ --ms-badge-bg-active: #e0f2fe;
407
+ --ms-order-first: -1;
408
+
409
+ /* ==========================================================================
410
+ BADGE TEXT & REMOVE BUTTON
411
+ ========================================================================== */
412
+ /* Badge Text */
413
+ --ms-badge-text-padding: 0 calc(0.8 * var(--ms-rem));
414
+ --ms-badge-text-bg: #eff6ff;
415
+ --ms-badge-text-color: #3b82f6;
416
+ --ms-badge-text-border: none;
417
+
418
+ /* Badge Remove Button */
419
+ --ms-badge-remove-width: calc(2.7 * var(--ms-rem));
420
+ --ms-badge-remove-bg: #3b82f6;
421
+ --ms-badge-remove-color: #ffffff;
422
+ --ms-badge-remove-border: none;
423
+ --ms-badge-remove-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
424
+ --ms-badge-remove-bg-hover: #2563eb;
425
+ --ms-badge-remove-box-shadow-focus: 0 0 0 2px rgba(59, 130, 246, 0.5);
426
+ --ms-icon-remove: "×";
427
+
428
+ /* Badge Indicator */
429
+ --ms-badge-counter-bg: transparent;
430
+ --ms-badge-counter-border: 1px solid #e5e7eb;
431
+ --ms-badge-counter-border-radius: var(--ms-border-radius-sm);
432
+ --ms-badge-counter-text-color: #6b7280;
433
+ --ms-badge-counter-text-bg: #d1d5db;
434
+ --ms-badge-counter-remove-bg: #6b7280;
435
+ --ms-badge-counter-remove-color: #ffffff;
436
+ --ms-badge-counter-remove-bg-hover: #111827;
437
+
438
+ /* ==========================================================================
439
+ "+X MORE" BADGE
440
+ ========================================================================== */
441
+ --ms-more-badge-bg: #eff6ff;
442
+ --ms-more-badge-hover-bg: #ffffff;
443
+ --ms-more-badge-active-bg: #e0f2fe;
444
+
445
+ /* ==========================================================================
446
+ COUNT DISPLAY MODE
447
+ ========================================================================== */
448
+ --ms-count-display-margin-bottom: calc(0.8 * var(--ms-rem));
449
+ --ms-count-display-margin-top: calc(0.8 * var(--ms-rem));
450
+ --ms-count-display-margin-left: calc(0.8 * var(--ms-rem));
451
+ --ms-count-display-margin-right: calc(0.8 * var(--ms-rem));
452
+
453
+ /* Count Badge Wrapper */
454
+ --ms-counter-wrapper-bg: transparent;
455
+ --ms-counter-wrapper-border: 1px solid #e5e7eb;
456
+ --ms-counter-wrapper-border-radius: var(--ms-border-radius-sm);
457
+ --ms-counter-wrapper-padding: calc(0.4 * var(--ms-rem)) calc(0.8 * var(--ms-rem));
458
+ --ms-counter-wrapper-gap: calc(0.4 * var(--ms-rem));
459
+ --ms-counter-wrapper-bg-hover: #f9fafb;
460
+ --ms-counter-wrapper-border-color-hover: #3b82f6;
461
+
462
+ /* ==========================================================================
463
+ COUNT TEXT & CLEAR BUTTON
464
+ ========================================================================== */
465
+ /* Count Text */
466
+ --ms-count-text-bg: transparent;
467
+ --ms-count-text-border: none;
468
+ --ms-count-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
469
+ --ms-count-text-color: #111827;
470
+
471
+ /* Count Clear Button */
472
+ --ms-count-clear-size: calc(1.6 * var(--ms-rem));
473
+ --ms-count-clear-bg: transparent;
474
+ --ms-count-clear-color: #6b7280;
475
+ --ms-count-clear-font-size: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));
476
+ --ms-count-clear-border-radius: 50%;
477
+ --ms-count-clear-bg-hover: rgba(59, 130, 246, 0.2);
478
+ --ms-count-clear-color-hover: #3b82f6;
479
+ --ms-icon-clear: "×";
480
+
481
+ /* ==========================================================================
482
+ TOOLTIPS
483
+ ========================================================================== */
484
+ --ms-tooltip-bg: #333333;
485
+ --ms-tooltip-color: #ffffff;
486
+ --ms-tooltip-padding: calc(0.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));
487
+ --ms-tooltip-border-radius: var(--ms-border-radius-lg);
488
+ --ms-tooltip-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
489
+ --ms-tooltip-max-width: calc(32 * var(--ms-rem));
490
+ --ms-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
491
+ --ms-tooltip-z-index: 10000;
492
+
493
+ /* ==========================================================================
494
+ SELECTED POPOVER
495
+ ========================================================================== */
496
+ --ms-z-index-popover: 10000;
497
+ --ms-selected-popover-width: calc(32 * var(--ms-rem));
498
+ --ms-selected-popover-max-height: calc(32 * var(--ms-rem));
499
+ --ms-selected-popover-bg: #ffffff;
500
+ --ms-selected-popover-border: 1px solid #e5e7eb;
501
+ --ms-selected-popover-border-radius: var(--ms-border-radius-lg);
502
+ --ms-selected-popover-box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
503
+
504
+ /* Popover Header */
505
+ --ms-selected-popover-header-padding: calc(0.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));
506
+ --ms-selected-popover-header-bg: rgba(59, 130, 246, 0.1);
507
+ --ms-selected-popover-header-border-bottom: 1px solid #e5e7eb;
508
+ --ms-selected-popover-header-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
509
+ --ms-selected-popover-header-font-weight: var(--base-font-weight-semibold, 600);
510
+ --ms-selected-popover-header-color: #111827;
511
+
512
+ /* ==========================================================================
513
+ POPOVER CLOSE BUTTON
514
+ ========================================================================== */
515
+ --ms-popover-close-size: calc(2.4 * var(--ms-rem));
516
+ --ms-selected-popover-close-bg: transparent;
517
+ --ms-selected-popover-close-color: #6b7280;
518
+ --ms-selected-popover-close-font-size: calc(var(--base-font-size-xl, 2) * var(--ms-rem));
519
+ --ms-selected-popover-close-border-radius: 50%;
520
+ --ms-selected-popover-close-bg-hover: rgba(59, 130, 246, 0.2);
521
+ --ms-selected-popover-close-color-hover: #3b82f6;
522
+
523
+ /* ==========================================================================
524
+ POPOVER BODY
525
+ ========================================================================== */
526
+ --ms-selected-popover-body-gap: calc(0.4 * var(--ms-rem));
527
+ --ms-selected-popover-body-padding: calc(0.8 * var(--ms-rem));
528
+ --ms-selected-popover-body-max-height: calc(28.8 * var(--ms-rem));
529
+
530
+ /* ==========================================================================
531
+ TYPOGRAPHY SCALE
532
+ ========================================================================== */
533
+ /* Font Sizes (unitless multipliers × --ms-rem) */
534
+ --ms-font-size-2xs: calc(var(--base-font-size-2xs, 1) * var(--ms-rem));
535
+ --ms-font-size-xs: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));
536
+ --ms-font-size-sm: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));
537
+ --ms-font-size-base: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));
538
+ --ms-font-size-lg: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));
539
+
540
+ /* Font Weights */
541
+ --ms-font-weight-normal: var(--base-font-weight-normal, 400);
542
+ --ms-font-weight-medium: var(--base-font-weight-medium, 500);
543
+ --ms-font-weight-semibold: var(--base-font-weight-semibold, 600);
544
+
545
+ /* Line Heights */
546
+ --ms-line-height-none: 1;
547
+ --ms-line-height-tight: var(--base-line-height-tight, 1.25);
548
+ --ms-line-height-normal: var(--base-line-height-normal, 1.5);
549
+ --ms-line-height-relaxed: var(--base-line-height-relaxed, 1.75);
550
+
551
+ /* ==========================================================================
552
+ BORDER RADIUS SCALE
553
+ ========================================================================== */
554
+ --ms-border-radius-sm: calc(var(--base-border-radius-sm, 0.4) * var(--ms-rem));
555
+ --ms-border-radius-md: calc(var(--base-border-radius-md, 0.6) * var(--ms-rem));
556
+ --ms-border-radius-lg: calc(var(--base-border-radius-lg, 0.8) * var(--ms-rem));
557
+ --ms-border-radius: var(--ms-border-radius-md);
558
+
559
+ /* ==========================================================================
560
+ SPACING & SIZING
561
+ ========================================================================== */
562
+ --ms-spacing-xs: calc(0.4 * var(--ms-rem));
563
+ --ms-spacing-sm: calc(0.8 * var(--ms-rem));
564
+ --ms-spacing-md: calc(1.2 * var(--ms-rem));
565
+ --ms-spacing-lg: calc(1.6 * var(--ms-rem));
566
+
567
+ /* ==========================================================================
568
+ TRANSITIONS & EFFECTS
569
+ ========================================================================== */
570
+ --ms-transition-fast: 150ms;
571
+ --ms-transition-normal: 200ms;
572
+ --ms-easing-snappy: cubic-bezier(0.4, 0, 0.2, 1);
573
+
574
+ /* ==========================================================================
575
+ OPACITY VALUES
576
+ ========================================================================== */
577
+ --ms-placeholder-opacity: 0.6;
578
+ --ms-disabled-input-opacity: 0.6;
579
+
580
+ /* ==========================================================================
581
+ SCROLLBAR
582
+ ========================================================================== */
583
+ --ms-scrollbar-width: 8px;
584
+ --ms-scrollbar-track-bg: transparent;
585
+ --ms-scrollbar-thumb-bg: #d1d5db;
586
+ --ms-scrollbar-thumb-bg-hover: #6b7280;
587
+ --ms-scrollbar-thumb-border-radius: 4px;
588
+ }
@@ -0,0 +1,27 @@
1
+ /* ==============================================================================
2
+ MULTISELECT COMPONENT - MAIN ENTRY POINT
3
+ ==============================================================================
4
+ Typeahead multiselect with rich content support and floating hints
5
+
6
+ File structure:
7
+ - _variables.css : All CSS custom properties at :host level (for theming)
8
+ - _base.css : FOUC prevention + layout containers
9
+ - _input-dropdown.css : Input, toggle, counter, hint, dropdown, actions
10
+ - _options.css : Options list, groups, checkbox, content, states
11
+ - _badges-display.css : Badges, count display, individual badges
12
+ - _tooltips-popover.css : Badge tooltips + selected items popover
13
+ - _rtl.css : RTL (Right-to-Left) language support
14
+ - _modifiers.css : State modifiers
15
+ - _debug.css : Debug information panel
16
+ */
17
+
18
+ /* Import all partials in dependency order */
19
+ @import '_variables.css';
20
+ @import '_base.css';
21
+ @import '_input-dropdown.css';
22
+ @import '_options.css';
23
+ @import '_badges-display.css';
24
+ @import '_tooltips-popover.css';
25
+ @import '_rtl.css';
26
+ @import '_modifiers.css';
27
+ @import '_debug.css';