@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,263 @@
1
+ /* ==============================================================================
2
+ INPUT & DROPDOWN COMPONENTS
3
+ ==============================================================================
4
+ Input field, toggle icon, count badge, floating hint, dropdown container, and actions
5
+ */
6
+
7
+ /* ==============================================================================
8
+ INPUT COMPONENT
9
+ ==============================================================================
10
+ */
11
+
12
+ /* Input wrapper */
13
+ .ms__input-wrapper {
14
+ position: relative;
15
+ display: flex;
16
+ align-items: center;
17
+ }
18
+
19
+ /* Search input */
20
+ .ms__input {
21
+ box-sizing: border-box;
22
+ width: 100%;
23
+ font-family: inherit; /* Form elements don't inherit font by default */
24
+ height: var(--ms-input-height);
25
+ padding: var(--ms-input-padding);
26
+ padding-right: var(--ms-input-padding-right); /* Space for dropdown icon */
27
+ font-size: var(--ms-input-font-size);
28
+ border: var(--ms-input-border);
29
+ border-radius: var(--ms-input-border-radius);
30
+ background: var(--ms-input-background);
31
+ color: var(--ms-input-color);
32
+ cursor: pointer;
33
+ transition: border var(--ms-transition-fast) var(--ms-easing-snappy);
34
+ }
35
+
36
+ .ms__input:hover:not(:focus):not(:disabled) {
37
+ border: var(--ms-input-border-hover);
38
+ }
39
+
40
+ .ms__input:focus {
41
+ outline: none;
42
+ border: var(--ms-input-border-focus);
43
+ }
44
+
45
+ .ms__input::placeholder {
46
+ color: var(--ms-input-placeholder-color);
47
+ opacity: 0; /* Initially hidden until component is ready */
48
+ transition: opacity var(--ms-transition-fast) var(--ms-easing-snappy);
49
+ }
50
+
51
+ /* Show placeholder only after component is fully initialized */
52
+ :host([data-ready]) .ms__input::placeholder {
53
+ opacity: var(--ms-placeholder-opacity);
54
+ }
55
+
56
+ /* Size variants */
57
+ .ms__input.ms__input--xs {
58
+ font-size: var(--ms-input-size-xs-font);
59
+ padding: var(--ms-input-size-xs-padding-v) var(--ms-input-size-xs-padding-h);
60
+ padding-right: calc(var(--ms-input-size-xs-padding-h) * 2.5);
61
+ height: var(--ms-input-size-xs-height);
62
+ }
63
+
64
+ .ms__input.ms__input--sm {
65
+ font-size: var(--ms-input-size-sm-font);
66
+ padding: var(--ms-input-size-sm-padding-v) var(--ms-input-size-sm-padding-h);
67
+ padding-right: calc(var(--ms-input-size-sm-padding-h) * 2.5);
68
+ height: var(--ms-input-size-sm-height);
69
+ }
70
+
71
+ .ms__input.ms__input--lg {
72
+ font-size: var(--ms-input-size-lg-font);
73
+ padding: var(--ms-input-size-lg-padding-v) var(--ms-input-size-lg-padding-h);
74
+ padding-right: calc(var(--ms-input-size-lg-padding-h) * 2.5);
75
+ height: var(--ms-input-size-lg-height);
76
+ }
77
+
78
+ .ms__input.ms__input--xl {
79
+ font-size: var(--ms-input-size-xl-font);
80
+ padding: var(--ms-input-size-xl-padding-v) var(--ms-input-size-xl-padding-h);
81
+ padding-right: calc(var(--ms-input-size-xl-padding-h) * 2.5);
82
+ height: var(--ms-input-size-xl-height);
83
+ }
84
+
85
+ /* ==============================================================================
86
+ TOGGLE ICON
87
+ ==============================================================================
88
+ */
89
+
90
+ /* Dropdown toggle icon */
91
+ .ms__toggle {
92
+ position: absolute;
93
+ right: var(--ms-toggle-right);
94
+ top: 50%;
95
+ transform: var(--ms-transform-center-y);
96
+ pointer-events: none;
97
+ color: var(--ms-toggle-icon-color);
98
+ transition: transform var(--ms-transition-fast) var(--ms-easing-snappy);
99
+ }
100
+
101
+ .ms--open .ms__toggle {
102
+ transform: var(--ms-transform-center-y) rotate(var(--ms-transform-rotate-180));
103
+ color: var(--ms-toggle-icon-color-open);
104
+ }
105
+
106
+ /* ==============================================================================
107
+ COUNT BADGE (IN INPUT)
108
+ ==============================================================================
109
+ */
110
+
111
+ /* Count badge (appears next to toggle icon) */
112
+ .ms__counter {
113
+ position: absolute;
114
+ right: var(--ms-counter-offset); /* Space for toggle icon */
115
+ top: 50%;
116
+ transform: var(--ms-transform-center-y);
117
+ padding: var(--ms-counter-padding);
118
+ background: var(--ms-counter-badge-background);
119
+ color: var(--ms-counter-badge-color);
120
+ font-size: var(--ms-counter-font-size);
121
+ font-weight: var(--ms-counter-font-weight);
122
+ border-radius: var(--ms-counter-border-radius);
123
+ cursor: pointer;
124
+ transition: all var(--ms-transition-fast) var(--ms-easing-snappy);
125
+ }
126
+
127
+ .ms__counter:hover {
128
+ background: var(--ms-counter-badge-background-hover);
129
+ transform: var(--ms-transform-center-y) scale(var(--ms-transform-scale-hover));
130
+ }
131
+
132
+ /* ==============================================================================
133
+ FLOATING HINT
134
+ ==============================================================================
135
+ */
136
+
137
+ /* Floating search hint (appears above input) */
138
+ .ms__hint {
139
+ display: none;
140
+ position: absolute;
141
+ z-index: var(--ms-z-index-popover);
142
+ padding: var(--ms-hint-padding);
143
+ background: var(--ms-hint-background);
144
+ border: var(--ms-hint-border);
145
+ border-radius: var(--ms-hint-border-radius);
146
+ box-shadow: var(--ms-hint-box-shadow);
147
+ font-size: var(--ms-hint-font-size);
148
+ color: var(--ms-hint-color);
149
+ line-height: var(--ms-line-height-relaxed);
150
+ max-width: 100%;
151
+ }
152
+
153
+ .ms__hint--visible {
154
+ display: block;
155
+ }
156
+
157
+ /* ==============================================================================
158
+ DROPDOWN CONTAINER
159
+ ==============================================================================
160
+ */
161
+
162
+ /* Floating dropdown (appears below input) */
163
+ .ms__dropdown {
164
+ display: none;
165
+ position: absolute;
166
+ font-family: inherit; /* Ensure font inherits from container */
167
+ z-index: var(--ms-z-index-dropdown);
168
+ background: var(--ms-dropdown-background);
169
+ border: var(--ms-dropdown-border);
170
+ border-radius: var(--ms-dropdown-border-radius);
171
+ box-shadow: var(--ms-dropdown-box-shadow);
172
+ max-height: var(--ms-options-max-height);
173
+ overflow-y: auto;
174
+ overscroll-behavior: contain;
175
+ touch-action: pan-y;
176
+ -webkit-overflow-scrolling: touch;
177
+ color: var(--ms-dropdown-text-color);
178
+
179
+ /* Scrollbar styling */
180
+ scrollbar-width: thin; /* Firefox */
181
+ scrollbar-color: var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg);
182
+ }
183
+
184
+ .ms__dropdown::-webkit-scrollbar {
185
+ width: var(--ms-scrollbar-width);
186
+ }
187
+
188
+ .ms__dropdown::-webkit-scrollbar-track {
189
+ background: var(--ms-scrollbar-track-bg);
190
+ }
191
+
192
+ .ms__dropdown::-webkit-scrollbar-thumb {
193
+ background: var(--ms-scrollbar-thumb-bg);
194
+ border-radius: var(--ms-scrollbar-thumb-border-radius);
195
+ }
196
+
197
+ .ms__dropdown::-webkit-scrollbar-thumb:hover {
198
+ background: var(--ms-scrollbar-thumb-bg-hover);
199
+ }
200
+
201
+ .ms__dropdown--visible {
202
+ display: block;
203
+ }
204
+
205
+ .ms__dropdown--virtual {
206
+ /* In virtual scroll mode, let the options container handle scrolling */
207
+ overflow-y: visible;
208
+ max-height: none;
209
+ }
210
+
211
+ /* ==============================================================================
212
+ DROPDOWN ACTIONS
213
+ ==============================================================================
214
+ */
215
+
216
+ /* Dropdown actions (Select All / Clear All) */
217
+ .ms__actions {
218
+ display: flex;
219
+ flex-wrap: nowrap;
220
+ gap: var(--ms-actions-gap);
221
+ padding: var(--ms-actions-padding);
222
+ border-bottom: var(--ms-actions-border-bottom);
223
+ }
224
+
225
+ .ms__actions--wrap {
226
+ flex-wrap: wrap;
227
+ }
228
+
229
+ .ms__actions--sticky {
230
+ position: sticky;
231
+ top: 0;
232
+ z-index: var(--ms-z-index-sticky);
233
+ background: var(--ms-actions-background);
234
+ }
235
+
236
+ .ms__action-btn {
237
+ flex: 1;
238
+ font-family: inherit; /* Form elements don't inherit font by default */
239
+ padding: var(--ms-action-btn-padding);
240
+ font-size: var(--ms-action-btn-font-size);
241
+ border: var(--ms-action-btn-border);
242
+ border-radius: var(--ms-action-btn-border-radius);
243
+ background: var(--ms-action-button-background);
244
+ color: var(--ms-action-button-color);
245
+ cursor: pointer;
246
+ transition: all var(--ms-transition-fast) var(--ms-easing-snappy);
247
+ }
248
+
249
+ .ms__action-btn:hover {
250
+ background: var(--ms-action-button-background-hover);
251
+ border-color: var(--ms-action-button-border-color-hover);
252
+ }
253
+
254
+ .ms__action-btn:active {
255
+ transform: scale(var(--ms-transform-scale-active));
256
+ }
257
+
258
+ .ms__action-btn:disabled,
259
+ .ms__action-btn[disabled] {
260
+ opacity: var(--ms-disabled-opacity);
261
+ cursor: not-allowed;
262
+ pointer-events: none;
263
+ }
@@ -0,0 +1,32 @@
1
+ /* ==============================================================================
2
+ MODIFIERS & VARIANTS
3
+ ==============================================================================
4
+ State modifiers (disabled, no-checkboxes)
5
+ Note: Size variants removed - use --ms-rem for global scaling instead
6
+ */
7
+
8
+ /* ==============================================================================
9
+ STATE MODIFIERS
10
+ ==============================================================================
11
+ */
12
+
13
+ /* Disabled state */
14
+ .ms--disabled .ms__input {
15
+ opacity: var(--ms-disabled-input-opacity);
16
+ cursor: not-allowed;
17
+ background: var(--ms-input-bg-disabled);
18
+ }
19
+
20
+ .ms--disabled .ms__toggle {
21
+ opacity: var(--ms-disabled-input-opacity);
22
+ }
23
+
24
+ /* No checkboxes modifier (for simple select mode) */
25
+ .ms--no-checkboxes .ms__option {
26
+ gap: 0; /* Remove gap since there's no checkbox */
27
+ padding-left: var(--ms-option-padding-h); /* Adjust padding */
28
+ }
29
+
30
+ .ms--no-checkboxes .ms__option-content {
31
+ padding-left: 0; /* No extra padding needed */
32
+ }
@@ -0,0 +1,365 @@
1
+ /* ==============================================================================
2
+ OPTIONS & CONTENT
3
+ ==============================================================================
4
+ Options list, groups, checkbox, option content, icons, text, and states
5
+ */
6
+
7
+ /* ==============================================================================
8
+ OPTIONS CONTAINER
9
+ ==============================================================================
10
+ */
11
+
12
+ /* Options container */
13
+ .ms__options {
14
+ padding: var(--ms-options-padding);
15
+
16
+ /* Scrollbar styling */
17
+ scrollbar-width: thin; /* Firefox */
18
+ scrollbar-color: var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg);
19
+ }
20
+
21
+ .ms__options::-webkit-scrollbar {
22
+ width: var(--ms-scrollbar-width);
23
+ }
24
+
25
+ .ms__options::-webkit-scrollbar-track {
26
+ background: var(--ms-scrollbar-track-bg);
27
+ }
28
+
29
+ .ms__options::-webkit-scrollbar-thumb {
30
+ background: var(--ms-scrollbar-thumb-bg);
31
+ border-radius: var(--ms-scrollbar-thumb-border-radius);
32
+ }
33
+
34
+ .ms__options::-webkit-scrollbar-thumb:hover {
35
+ background: var(--ms-scrollbar-thumb-bg-hover);
36
+ }
37
+
38
+ /* Virtual scroll - enforce consistent heights */
39
+ .ms__options--virtual .ms__option {
40
+ height: var(--ms-option-height, 50px);
41
+ min-height: var(--ms-option-height, 50px);
42
+ max-height: var(--ms-option-height, 50px);
43
+ overflow: hidden;
44
+ box-sizing: border-box;
45
+ }
46
+
47
+ /* ==============================================================================
48
+ GROUPS
49
+ ==============================================================================
50
+ */
51
+
52
+ /* Group - consecutive groups */
53
+ .ms__group + .ms__group {
54
+ border-top: var(--ms-group-border-top);
55
+ margin-top: var(--ms-group-margin-top);
56
+ padding-top: var(--ms-group-padding-top);
57
+ }
58
+
59
+ /* Group label */
60
+ .ms__group-label {
61
+ padding: var(--ms-group-label-padding);
62
+ font-size: var(--ms-group-label-font-size);
63
+ font-weight: var(--ms-group-label-font-weight);
64
+ color: var(--ms-group-label-color);
65
+ text-transform: var(--ms-group-label-transform);
66
+ letter-spacing: var(--ms-group-label-letter-spacing);
67
+ }
68
+
69
+ /* ==============================================================================
70
+ INDIVIDUAL OPTION
71
+ ==============================================================================
72
+ */
73
+
74
+ /* Individual option */
75
+ .ms__option {
76
+ display: flex;
77
+ align-items: var(--ms-checkbox-align, center); /* Support checkbox alignment */
78
+ gap: var(--ms-option-gap);
79
+ padding: var(--ms-option-padding);
80
+ color: var(--ms-option-text-color);
81
+ background: var(--ms-option-background);
82
+ cursor: pointer;
83
+ }
84
+
85
+ .ms__option:hover {
86
+ background: var(--ms-option-background-hover);
87
+ color: var(--ms-option-color-hover, inherit);
88
+ }
89
+
90
+ .ms__option--focused {
91
+ background: var(--ms-option-background-focused);
92
+ color: var(--ms-option-color-focused, inherit);
93
+ outline: var(--ms-option-outline-focused);
94
+ outline-offset: var(--ms-option-focus-outline-offset);
95
+ }
96
+
97
+ .ms__option--matched {
98
+ background: var(--ms-option-background-matched);
99
+ color: var(--ms-option-color-matched, inherit);
100
+ border-left: var(--ms-option-border-matched);
101
+ }
102
+
103
+ .ms__option--selected {
104
+ background: var(--ms-option-background-selected);
105
+ }
106
+
107
+ .ms__option--selected:hover {
108
+ background: var(--ms-option-bg-selected-hover, var(--ms-option-background-selected));
109
+ }
110
+
111
+ .ms__option--disabled {
112
+ opacity: var(--ms-disabled-opacity);
113
+ cursor: not-allowed;
114
+ }
115
+
116
+ .ms__option--disabled:hover {
117
+ background: var(--ms-option-background);
118
+ }
119
+
120
+ /* Focused + Hover */
121
+ .ms__option--focused:hover {
122
+ background: var(--ms-option-bg-focused-hover);
123
+ color: var(--ms-option-color-focused-hover, var(--ms-option-color-focused, var(--ms-option-text-color)));
124
+ }
125
+
126
+ /* Matched + Hover */
127
+ .ms__option--matched:hover {
128
+ background: var(--ms-option-bg-matched-hover);
129
+ color: var(--ms-option-color-matched-hover, var(--ms-option-color-matched, var(--ms-option-text-color)));
130
+ }
131
+
132
+ /* Selected + Focused */
133
+ .ms__option--selected.ms__option--focused {
134
+ background: var(--ms-option-bg-selected-focused);
135
+ outline: var(--ms-option-outline-focused);
136
+ outline-offset: var(--ms-option-focus-outline-offset);
137
+ }
138
+
139
+ /* Selected + Matched */
140
+ .ms__option--selected.ms__option--matched {
141
+ background: var(--ms-option-bg-selected-matched);
142
+ border-left: var(--ms-option-border-matched);
143
+ }
144
+
145
+ /* Disabled + Selected */
146
+ .ms__option--disabled.ms__option--selected {
147
+ background: var(--ms-option-bg-disabled-selected);
148
+ }
149
+
150
+ /* Disabled + Focused (prevents focus outline on disabled items) */
151
+ .ms__option--disabled.ms__option--focused {
152
+ outline: none;
153
+ }
154
+
155
+ /* Checkbox alignment variants (center is default, defined in _variables.css) */
156
+ .ms__option[data-checkbox-align="top"] {
157
+ --ms-checkbox-align: flex-start;
158
+ }
159
+
160
+ .ms__option[data-checkbox-align="bottom"] {
161
+ --ms-checkbox-align: flex-end;
162
+ }
163
+
164
+ /* ==============================================================================
165
+ CHECKBOX (Custom Styled)
166
+ ==============================================================================
167
+ Uses a hidden native checkbox with a custom styled pseudo-element overlay.
168
+ This allows full control over background, border, and checkmark colors.
169
+ */
170
+
171
+ .ms__checkbox {
172
+ /* Hide native checkbox but keep it accessible */
173
+ appearance: none;
174
+ -webkit-appearance: none;
175
+ -moz-appearance: none;
176
+ flex-shrink: 0;
177
+ position: relative;
178
+ margin-top: var(--ms-checkbox-margin-top);
179
+ margin-right: var(--ms-checkbox-margin-right);
180
+ margin-bottom: var(--ms-checkbox-margin-bottom);
181
+ margin-left: var(--ms-checkbox-margin-left);
182
+ width: var(--ms-checkbox-size);
183
+ height: var(--ms-checkbox-size);
184
+ transform: scale(var(--ms-checkbox-scale));
185
+ transform-origin: top left;
186
+ cursor: pointer;
187
+
188
+ /* Custom checkbox appearance */
189
+ background: var(--ms-checkbox-bg);
190
+ border: var(--ms-checkbox-border);
191
+ border-radius: var(--ms-checkbox-border-radius);
192
+ transition: background-color 0.15s ease, border-color 0.15s ease;
193
+ }
194
+
195
+ /* Checkmark using ::after pseudo-element */
196
+ .ms__checkbox::after {
197
+ content: '';
198
+ position: absolute;
199
+ display: none;
200
+ /* Checkmark positioning (centered, slightly offset for visual balance) */
201
+ left: 50%;
202
+ top: 45%;
203
+ width: 30%;
204
+ height: 55%;
205
+ transform: translate(-50%, -50%) rotate(45deg);
206
+ /* Checkmark shape (right and bottom borders form the check) */
207
+ border: solid var(--ms-checkbox-checkmark-color);
208
+ border-width: 0 2px 2px 0;
209
+ }
210
+
211
+ /* Hover state */
212
+ .ms__checkbox:hover:not(:disabled) {
213
+ border-color: var(--ms-checkbox-hover-border-color);
214
+ }
215
+
216
+ /* Checked state */
217
+ .ms__checkbox:checked {
218
+ background: var(--ms-checkbox-checked-bg);
219
+ border: var(--ms-checkbox-checked-border);
220
+ }
221
+
222
+ .ms__checkbox:checked::after {
223
+ display: block;
224
+ }
225
+
226
+ /* Checked + Hover */
227
+ .ms__checkbox:checked:hover:not(:disabled) {
228
+ background: var(--ms-checkbox-checked-bg-hover);
229
+ border-color: var(--ms-checkbox-checked-border-color-hover);
230
+ }
231
+
232
+ /* Focus state (accessibility) */
233
+ .ms__checkbox:focus-visible {
234
+ outline: 2px solid var(--ms-checkbox-checked-bg);
235
+ outline-offset: 2px;
236
+ }
237
+
238
+ /* Disabled state */
239
+ .ms__checkbox:disabled {
240
+ cursor: not-allowed;
241
+ background: var(--ms-checkbox-disabled-bg);
242
+ border: var(--ms-checkbox-disabled-border);
243
+ opacity: 0.6;
244
+ }
245
+
246
+ .ms__checkbox:disabled:checked {
247
+ background: var(--ms-checkbox-disabled-bg);
248
+ }
249
+
250
+ .ms__option--disabled .ms__checkbox {
251
+ cursor: not-allowed;
252
+ }
253
+
254
+ /* ==============================================================================
255
+ OPTION CONTENT
256
+ ==============================================================================
257
+ */
258
+
259
+ /* Option content (rich content wrapper) */
260
+ .ms__option-content {
261
+ flex: 1;
262
+ display: flex;
263
+ align-items: center;
264
+ gap: var(--ms-option-content-gap);
265
+ min-width: 0; /* Allow text truncation */
266
+ }
267
+
268
+ /* Option icon/SVG */
269
+ .ms__option-icon {
270
+ flex-shrink: 0;
271
+ width: var(--ms-option-icon-size);
272
+ height: var(--ms-option-icon-size);
273
+ display: flex;
274
+ align-items: center;
275
+ justify-content: center;
276
+ font-size: var(--ms-option-icon-font-size);
277
+ }
278
+
279
+ .ms__option-icon svg {
280
+ width: 100%;
281
+ height: 100%;
282
+ fill: currentColor;
283
+ }
284
+
285
+ /* Option text container */
286
+ .ms__option-text {
287
+ flex: 1;
288
+ min-width: 0;
289
+ }
290
+
291
+ /* Option title/main text */
292
+ .ms__option-title {
293
+ font-size: var(--ms-option-title-font-size);
294
+ color: var(--ms-option-title-color);
295
+ line-height: var(--ms-line-height-relaxed);
296
+ }
297
+
298
+ /* Title color states (for solid background themes) */
299
+ .ms__option:hover .ms__option-title {
300
+ color: var(--ms-option-title-color-hover, var(--ms-option-title-color));
301
+ }
302
+
303
+ .ms__option--selected .ms__option-title {
304
+ color: var(--ms-option-title-color-selected, var(--ms-option-title-color));
305
+ }
306
+
307
+ .ms__option--selected:hover .ms__option-title {
308
+ color: var(--ms-option-title-color-selected-hover, var(--ms-option-title-color-selected, var(--ms-option-title-color)));
309
+ }
310
+
311
+ /* Highlight matched text */
312
+ .ms__option-title mark {
313
+ background: var(--ms-option-mark-background);
314
+ color: var(--ms-option-mark-color);
315
+ font-weight: var(--ms-option-mark-font-weight);
316
+ }
317
+
318
+ /* Option subtitle (multiline support) */
319
+ .ms__option-subtitle {
320
+ margin-top: var(--ms-option-subtitle-margin-top);
321
+ font-size: var(--ms-option-subtitle-font-size);
322
+ color: var(--ms-option-subtitle-color);
323
+ line-height: var(--ms-option-subtitle-line-height);
324
+ }
325
+
326
+ /* Subtitle color states (for solid background themes) */
327
+ .ms__option:hover .ms__option-subtitle {
328
+ color: var(--ms-option-subtitle-color-hover, var(--ms-option-subtitle-color));
329
+ }
330
+
331
+ .ms__option--selected .ms__option-subtitle {
332
+ color: var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color));
333
+ }
334
+
335
+ .ms__option--selected:hover .ms__option-subtitle {
336
+ color: var(--ms-option-subtitle-color-selected-hover, var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color)));
337
+ }
338
+
339
+ /* ==============================================================================
340
+ STATES
341
+ ==============================================================================
342
+ */
343
+
344
+ /* Empty state */
345
+ .ms__empty {
346
+ padding: var(--ms-empty-padding);
347
+ text-align: center;
348
+ font-size: var(--ms-empty-font-size);
349
+ color: var(--ms-empty-color);
350
+ }
351
+
352
+ /* Loading state */
353
+ .ms__loader {
354
+ display: flex;
355
+ flex-direction: column;
356
+ align-items: center;
357
+ justify-content: center;
358
+ padding: var(--ms-loader-padding);
359
+ gap: var(--ms-loader-gap);
360
+ }
361
+
362
+ .ms__loading-text {
363
+ font-size: var(--ms-loading-text-font-size);
364
+ color: var(--ms-loading-color);
365
+ }