@undrr/undrr-mangrove 1.8.2 → 2.0.0-alpha.2

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.
Files changed (145) hide show
  1. package/components/BookCard.js +2 -2
  2. package/components/BookCard.js.LICENSE.txt +1 -1
  3. package/components/Breadcrumbs.js +3 -2
  4. package/components/Checkbox.js +3 -2
  5. package/components/Chips.js +3 -2
  6. package/components/CtaButton.js +3 -2
  7. package/components/EmbedContainer.js +3 -2
  8. package/components/Footer.js +2 -2
  9. package/components/Footer.js.LICENSE.txt +1 -1
  10. package/components/FormAction.js +6 -0
  11. package/components/FormAction.js.LICENSE.txt +9 -0
  12. package/components/FormErrorSummary.js +3 -2
  13. package/components/FormGroup.js +3 -2
  14. package/components/FullWidth.js +3 -2
  15. package/components/Gallery.js +2 -2
  16. package/components/Gallery.js.LICENSE.txt +1 -1
  17. package/components/Hero.js +2 -2
  18. package/components/Hero.js.LICENSE.txt +1 -1
  19. package/components/HighlightBox.js +3 -2
  20. package/components/HorizontalBookCard.js +2 -2
  21. package/components/HorizontalBookCard.js.LICENSE.txt +1 -1
  22. package/components/HorizontalCard.js +2 -2
  23. package/components/HorizontalCard.js.LICENSE.txt +1 -1
  24. package/components/IconCard.js +2 -2
  25. package/components/IconCard.js.LICENSE.txt +1 -1
  26. package/components/Loader.js +3 -2
  27. package/components/MegaMenu.js +2 -2
  28. package/components/MegaMenu.js.LICENSE.txt +1 -1
  29. package/components/PageHeader.js +3 -2
  30. package/components/Pager.js +2 -2
  31. package/components/Pager.js.LICENSE.txt +1 -1
  32. package/components/QuoteHighlight.js +3 -2
  33. package/components/Radio.js +3 -2
  34. package/components/ScrollContainer.js +3 -2
  35. package/components/Select.js +3 -2
  36. package/components/ShareButtons.js +2 -2
  37. package/components/ShareButtons.js.LICENSE.txt +1 -1
  38. package/components/ShowMore.js +3 -2
  39. package/components/StatsCard.js +2 -2
  40. package/components/StatsCard.js.LICENSE.txt +10 -0
  41. package/components/SyndicationSearchWidget.js +2 -2
  42. package/components/SyndicationSearchWidget.js.LICENSE.txt +1 -1
  43. package/components/Tab.js +3 -2
  44. package/components/TextCta.js +2 -2
  45. package/components/TextCta.js.LICENSE.txt +10 -0
  46. package/components/TextInput.js +3 -2
  47. package/components/Textarea.js +3 -2
  48. package/components/UserFeedback.js +6 -0
  49. package/components/UserFeedback.js.LICENSE.txt +9 -0
  50. package/components/VerticalCard.js +2 -2
  51. package/components/VerticalCard.js.LICENSE.txt +1 -1
  52. package/components/hydrate.js +1 -1
  53. package/css/style-all.css +422 -0
  54. package/css/style-all.css.map +1 -0
  55. package/css/style-delta.css +122 -171
  56. package/css/style-delta.css.map +1 -1
  57. package/css/style-gutenberg.css +55 -89
  58. package/css/style-gutenberg.css.map +1 -1
  59. package/css/style-irp.css +122 -161
  60. package/css/style-irp.css.map +1 -1
  61. package/css/style-mcr.css +122 -161
  62. package/css/style-mcr.css.map +1 -1
  63. package/css/style-preventionweb.css +122 -161
  64. package/css/style-preventionweb.css.map +1 -1
  65. package/css/style.css +121 -154
  66. package/css/style.css.map +1 -1
  67. package/package.json +2 -2
  68. package/scss/Atom/BaseTypography/Abbr/abbr.scss +1 -1
  69. package/scss/Atom/BaseTypography/Code/code.scss +41 -36
  70. package/scss/Atom/BaseTypography/Mark/mark.scss +2 -2
  71. package/scss/Atom/Images/AuthorImage/author-image.scss +8 -8
  72. package/scss/Atom/Images/ImageCaptionCredit/image-caption-credit.scss +9 -9
  73. package/scss/Atom/Layout/Container/container.scss +2 -4
  74. package/scss/Atom/Layout/Grid/grid.scss +15 -15
  75. package/scss/Atom/Navigation/MenuItems/menu-items.scss +10 -3
  76. package/scss/Atom/ReachElement/Details/details.scss +44 -39
  77. package/scss/Atom/Table/table.scss +22 -10
  78. package/scss/Atom/Tag/tag.scss +32 -32
  79. package/scss/Components/Boilerplate/boilerplate.scss +7 -7
  80. package/scss/Components/Breadcrumbs/breadcrumbs.scss +9 -9
  81. package/scss/Components/Buttons/Chips/chips.scss +63 -23
  82. package/scss/Components/Buttons/CtaButton/cta-button.scss +142 -20
  83. package/scss/Components/Buttons/ShareButtons/share-buttons.scss +16 -16
  84. package/scss/Components/Cards/Card/card.scss +77 -50
  85. package/scss/Components/Cards/StatsCard/stats-card.scss +32 -34
  86. package/scss/Components/CookieConsentBanner/cookie-consent-banner.scss +75 -74
  87. package/scss/Components/ErrorPages/error-pages.scss +9 -9
  88. package/scss/Components/Footer/footer.scss +12 -12
  89. package/scss/Components/Forms/FormAction/form-action.scss +50 -0
  90. package/scss/Components/Forms/FormGroup/form-group.scss +18 -7
  91. package/scss/Components/Forms/Select/select.scss +1 -1
  92. package/scss/Components/Forms/TextInput/text-input.scss +1 -1
  93. package/scss/Components/Forms/_form-base.scss +68 -61
  94. package/scss/Components/Gallery/gallery.scss +71 -70
  95. package/scss/Components/Hero/hero.scss +241 -74
  96. package/scss/Components/HighlightBox/highlight-box.scss +3 -3
  97. package/scss/Components/MegaMenu/mega-menu.scss +73 -76
  98. package/scss/Components/OnThisPageNav/on-this-page-nav.scss +36 -37
  99. package/scss/Components/PageHeader/page-header.scss +7 -7
  100. package/scss/Components/Pager/pager.scss +85 -62
  101. package/scss/Components/PreviewAccess/preview-access.scss +35 -35
  102. package/scss/Components/QuoteHighlight/quote-highlight.scss +32 -32
  103. package/scss/Components/ScrollContainer/scroll-container.scss +52 -32
  104. package/scss/Components/Snackbar/snackbar.scss +24 -31
  105. package/scss/Components/SyndicationSearchWidget/syndication-search-widget.scss +147 -139
  106. package/scss/Components/Tab/tab.scss +215 -34
  107. package/scss/Components/TableOfContents/table-of-contents.scss +6 -6
  108. package/scss/Components/TextCta/text-cta.scss +69 -23
  109. package/scss/Components/UserFeedback/user-feedback.scss +69 -0
  110. package/scss/Molecules/ImageCaption/image-caption.scss +16 -16
  111. package/scss/Molecules/SectionHeader/section-header.scss +1 -1
  112. package/scss/Utilities/FullWidth/full-width.scss +1 -1
  113. package/scss/Utilities/Loader/loader.scss +4 -4
  114. package/scss/assets/scss/_components.scss +3 -2
  115. package/scss/assets/scss/_foundational.scss +44 -26
  116. package/scss/assets/scss/_mixins.scss +34 -1
  117. package/scss/assets/scss/_theme-delta.scss +68 -0
  118. package/scss/assets/scss/_theme-irp.scss +39 -0
  119. package/scss/assets/scss/_theme-mcr.scss +56 -0
  120. package/scss/assets/scss/_theme-preventionweb.scss +37 -0
  121. package/scss/assets/scss/_utility.scss +112 -112
  122. package/scss/assets/scss/_variables.scss +358 -354
  123. package/scss/assets/scss/style-all.scss +19 -0
  124. package/scss/assets/scss/style-delta.scss +1 -1
  125. package/scss/assets/scss/style-irp.scss +1 -1
  126. package/scss/assets/scss/style-mcr.scss +1 -1
  127. package/scss/assets/scss/style-preventionweb.scss +1 -1
  128. package/css/style-irp-legacy.css +0 -476
  129. package/css/style-irp-legacy.css.map +0 -1
  130. package/css/style-legacy.css +0 -469
  131. package/css/style-legacy.css.map +0 -1
  132. package/css/style-mcr-legacy.css +0 -476
  133. package/css/style-mcr-legacy.css.map +0 -1
  134. package/css/style-preventionweb-legacy.css +0 -476
  135. package/css/style-preventionweb-legacy.css.map +0 -1
  136. package/scss/Components/Forms/_form-legacy.scss +0 -152
  137. package/scss/Components/Pagination/pagination.scss +0 -112
  138. package/scss/assets/scss/_variables-delta.scss +0 -110
  139. package/scss/assets/scss/_variables-irp.scss +0 -50
  140. package/scss/assets/scss/_variables-mcr.scss +0 -65
  141. package/scss/assets/scss/_variables-preventionweb.scss +0 -48
  142. package/scss/assets/scss/style-irp-legacy.scss +0 -20
  143. package/scss/assets/scss/style-legacy.scss +0 -20
  144. package/scss/assets/scss/style-mcr-legacy.scss +0 -20
  145. package/scss/assets/scss/style-preventionweb-legacy.scss +0 -20
@@ -12,23 +12,23 @@
12
12
 
13
13
  // Component-specific variables (using Mangrove tokens)
14
14
  // Colors
15
- $search-primary: $mg-color-interactive;
16
- $search-primary-dark: $mg-color-interactive-active;
17
- $search-chip-bg: $mg-color-blue-50;
18
- $search-chip-hover: $mg-color-blue-100;
19
- $search-text: $mg-color-text;
20
- $search-text-muted: $mg-color-neutral-500;
21
- $search-border: $mg-color-neutral-100;
22
- $search-border-light: $mg-color-neutral-50;
23
- $search-skeleton-bg: $mg-color-neutral-25;
24
- $search-error-bg: $mg-color-red-50;
25
- $search-error-border: $mg-color-red-400;
26
- $search-debug-bg: $mg-color-yellow-light;
27
- $search-debug-text: $mg-color-yellow-dark;
15
+ $search-primary: rgb(var(--mg-color-interactive));
16
+ $search-primary-dark: rgb(var(--mg-color-interactive-active));
17
+ $search-chip-bg: rgb(var(--mg-color-blue-50));
18
+ $search-chip-hover: rgb(var(--mg-color-blue-100));
19
+ $search-text: rgb(var(--mg-color-text));
20
+ $search-text-muted: rgb(var(--mg-color-neutral-500));
21
+ $search-border: rgb(var(--mg-color-neutral-100));
22
+ $search-border-light: rgb(var(--mg-color-neutral-50));
23
+ $search-skeleton-bg: rgb(var(--mg-color-neutral-25));
24
+ $search-error-bg: rgb(var(--mg-color-red-50));
25
+ $search-error-border: rgb(var(--mg-color-red-400));
26
+ $search-debug-bg: var(--mg-color-yellow-light);
27
+ $search-debug-text: var(--mg-color-yellow-dark);
28
28
 
29
29
  // Spacing & sizing (component needs rounded corners, base theme has 0)
30
- $search-radius: $mg-spacing-25;
31
- $search-input-padding-x: $mg-spacing-250;
30
+ $search-radius: var(--mg-spacing-25);
31
+ $search-input-padding-x: var(--mg-spacing-250);
32
32
 
33
33
  // Screen reader only utility
34
34
  .mg-u-sr-only {
@@ -90,8 +90,9 @@ $search-input-padding-x: $mg-spacing-250;
90
90
  .mg-search__form,
91
91
  .mg-search-bar {
92
92
  display: flex;
93
- gap: $mg-spacing-50;
94
- margin-bottom: $mg-spacing-100;
93
+ gap: 0;
94
+ margin-bottom: var(--mg-spacing-100);
95
+ margin-top: 0;
95
96
  }
96
97
 
97
98
  .mg-search__input-wrapper,
@@ -114,14 +115,14 @@ $search-input-padding-x: $mg-spacing-250;
114
115
 
115
116
  .mg-search__clear {
116
117
  position: absolute;
117
- right: $mg-spacing-50;
118
+ right: var(--mg-spacing-50);
118
119
  top: 50%;
119
120
  transform: translateY(-50%);
120
121
  display: inline-flex;
121
122
  align-items: center;
122
123
  justify-content: center;
123
- width: $mg-spacing-200;
124
- height: $mg-spacing-200;
124
+ width: var(--mg-spacing-200);
125
+ height: var(--mg-spacing-200);
125
126
  padding: 0;
126
127
  background: none;
127
128
  border: none;
@@ -160,9 +161,9 @@ $search-input-padding-x: $mg-spacing-250;
160
161
  display: flex;
161
162
  flex-wrap: wrap;
162
163
  align-items: center;
163
- gap: $mg-spacing-50;
164
- margin-bottom: $mg-spacing-100;
165
- padding: $mg-spacing-75;
164
+ gap: var(--mg-spacing-50);
165
+ margin-bottom: var(--mg-spacing-100);
166
+ padding: var(--mg-spacing-75);
166
167
  background: $search-chip-bg;
167
168
  border-radius: $search-radius;
168
169
  }
@@ -170,13 +171,13 @@ $search-input-padding-x: $mg-spacing-250;
170
171
  .mg-search__active-filters-label {
171
172
  font-weight: 500;
172
173
  color: $search-text;
173
- margin-right: $mg-spacing-25;
174
+ margin-right: var(--mg-spacing-25);
174
175
  }
175
176
 
176
177
  .mg-search__active-filters-list {
177
178
  display: flex;
178
179
  flex-wrap: wrap;
179
- gap: $mg-spacing-50;
180
+ gap: var(--mg-spacing-50);
180
181
  list-style: none;
181
182
  margin: 0;
182
183
  padding: 0;
@@ -185,8 +186,8 @@ $search-input-padding-x: $mg-spacing-250;
185
186
  .mg-search__filter-chip {
186
187
  display: inline-flex;
187
188
  align-items: center;
188
- gap: $mg-spacing-50;
189
- padding: $mg-spacing-25 $mg-spacing-50;
189
+ gap: var(--mg-spacing-50);
190
+ padding: var(--mg-spacing-25) var(--mg-spacing-50);
190
191
  color: $search-text;
191
192
  background: #fff;
192
193
  border: 1px solid $search-border;
@@ -210,7 +211,7 @@ $search-input-padding-x: $mg-spacing-250;
210
211
  }
211
212
 
212
213
  .mg-search__clear-all {
213
- padding: $mg-spacing-25 $mg-spacing-75;
214
+ padding: var(--mg-spacing-25) var(--mg-spacing-75);
214
215
  color: $search-primary;
215
216
  background: none;
216
217
  border: 1px solid $search-primary;
@@ -227,7 +228,7 @@ $search-input-padding-x: $mg-spacing-250;
227
228
  // Content layout
228
229
  .mg-search__content {
229
230
  display: flex;
230
- gap: $mg-spacing-200;
231
+ gap: var(--mg-spacing-200);
231
232
  }
232
233
 
233
234
  .mg-search__main {
@@ -249,7 +250,7 @@ $search-input-padding-x: $mg-spacing-250;
249
250
  // narrow viewports the strip is hidden and the mobile filter drawer
250
251
  // handles facet selection (same pattern as the sidebar layout).
251
252
  .mg-search__facets-strip {
252
- margin-bottom: $mg-spacing-150;
253
+ margin-bottom: var(--mg-spacing-150);
253
254
 
254
255
  // Treat Sort and every facet as direct siblings of the same flex row so
255
256
  // they share a consistent track width and wrap together. Without
@@ -261,7 +262,7 @@ $search-input-padding-x: $mg-spacing-250;
261
262
  flex-direction: row;
262
263
  flex-wrap: wrap;
263
264
  align-items: flex-end;
264
- gap: $mg-spacing-100 $mg-spacing-150;
265
+ gap: var(--mg-spacing-100) var(--mg-spacing-150);
265
266
  }
266
267
 
267
268
  .mg-search__facet-containers {
@@ -295,8 +296,8 @@ $search-input-padding-x: $mg-spacing-250;
295
296
  flex-wrap: wrap;
296
297
  align-items: center;
297
298
  justify-content: space-between;
298
- gap: $mg-spacing-50;
299
- margin-bottom: $mg-spacing-100;
299
+ gap: var(--mg-spacing-50);
300
+ margin-bottom: var(--mg-spacing-100);
300
301
  }
301
302
 
302
303
  .mg-search__results-count {
@@ -316,8 +317,8 @@ $search-input-padding-x: $mg-spacing-250;
316
317
  .mg-search__filter-btn {
317
318
  display: none; // Hidden on desktop by default
318
319
  align-items: center;
319
- gap: $mg-spacing-25;
320
- padding: $mg-spacing-50 $mg-spacing-75;
320
+ gap: var(--mg-spacing-25);
321
+ padding: var(--mg-spacing-50) var(--mg-spacing-75);
321
322
  font-size: $mg-font-size-200;
322
323
  font-weight: 500;
323
324
  color: $search-primary;
@@ -349,7 +350,7 @@ $search-input-padding-x: $mg-spacing-250;
349
350
  justify-content: center;
350
351
  min-width: 18px;
351
352
  height: 18px;
352
- padding: 0 $mg-spacing-25;
353
+ padding: 0 var(--mg-spacing-25);
353
354
  font-size: $mg-font-size-200;
354
355
  font-weight: 600;
355
356
  color: #fff;
@@ -360,12 +361,12 @@ $search-input-padding-x: $mg-spacing-250;
360
361
  .mg-search__results-list {
361
362
  display: flex;
362
363
  flex-direction: column;
363
- gap: $mg-spacing-150;
364
+ gap: var(--mg-spacing-150);
364
365
  }
365
366
 
366
367
  .mg-search__results-more {
367
- margin-top: $mg-spacing-150;
368
- padding: $mg-spacing-100;
368
+ margin-top: var(--mg-spacing-150);
369
+ padding: var(--mg-spacing-100);
369
370
  font-size: $mg-font-size-200;
370
371
  color: $search-text-muted;
371
372
  background: $search-chip-bg;
@@ -375,12 +376,12 @@ $search-input-padding-x: $mg-spacing-250;
375
376
 
376
377
  .mg-search__results-empty,
377
378
  .mg-search__results-placeholder {
378
- padding: $mg-spacing-200;
379
+ padding: var(--mg-spacing-200);
379
380
  text-align: center;
380
381
  color: $search-text-muted;
381
382
 
382
383
  p {
383
- margin: 0 0 $mg-spacing-50;
384
+ margin: 0 0 var(--mg-spacing-50);
384
385
  }
385
386
  }
386
387
 
@@ -389,13 +390,13 @@ $search-input-padding-x: $mg-spacing-250;
389
390
  }
390
391
 
391
392
  .mg-search__results-error {
392
- padding: $mg-spacing-100;
393
+ padding: var(--mg-spacing-100);
393
394
  background: $search-error-bg;
394
395
  border: 1px solid $search-error-border;
395
396
  border-radius: $search-radius;
396
397
 
397
398
  p {
398
- margin: 0 0 $mg-spacing-50;
399
+ margin: 0 0 var(--mg-spacing-50);
399
400
 
400
401
  &:last-child {
401
402
  margin-bottom: 0;
@@ -405,7 +406,7 @@ $search-input-padding-x: $mg-spacing-250;
405
406
 
406
407
  // Result item
407
408
  .mg-search__result {
408
- padding-bottom: $mg-spacing-150;
409
+ padding-bottom: var(--mg-spacing-150);
409
410
  border-bottom: 1px solid $search-border-light;
410
411
 
411
412
  &:last-child {
@@ -416,7 +417,7 @@ $search-input-padding-x: $mg-spacing-250;
416
417
 
417
418
  .mg-search__result-content {
418
419
  display: flex;
419
- gap: $mg-spacing-100;
420
+ gap: var(--mg-spacing-100);
420
421
  }
421
422
 
422
423
  .mg-search__result-image {
@@ -441,7 +442,7 @@ $search-input-padding-x: $mg-spacing-250;
441
442
  }
442
443
 
443
444
  .mg-search__result-title {
444
- margin: 0 0 $mg-spacing-50;
445
+ margin: 0 0 var(--mg-spacing-50);
445
446
  font-size: $mg-font-size-200;
446
447
  font-weight: 600;
447
448
  line-height: 1.3;
@@ -456,7 +457,7 @@ $search-input-padding-x: $mg-spacing-250;
456
457
 
457
458
  em {
458
459
  font-style: normal;
459
- background: rgba($search-primary, 0.1);
460
+ background: rgb(var(--mg-color-blue-900) / 0.1);
460
461
  padding: 0 2px;
461
462
  }
462
463
  }
@@ -465,14 +466,14 @@ $search-input-padding-x: $mg-spacing-250;
465
466
  .mg-search__result-meta {
466
467
  display: flex;
467
468
  flex-wrap: wrap;
468
- gap: $mg-spacing-50;
469
- margin-bottom: $mg-spacing-50;
469
+ gap: var(--mg-spacing-50);
470
+ margin-bottom: var(--mg-spacing-50);
470
471
  font-size: $mg-font-size-150;
471
472
  color: $search-text-muted;
472
473
  }
473
474
 
474
475
  .mg-search__result-type {
475
- padding: $mg-spacing-25 $mg-spacing-50;
476
+ padding: var(--mg-spacing-25) var(--mg-spacing-50);
476
477
  background: $search-chip-bg;
477
478
  border-radius: $search-radius;
478
479
  text-transform: uppercase;
@@ -483,7 +484,7 @@ $search-input-padding-x: $mg-spacing-250;
483
484
  .mg-search__result-date {
484
485
  &::before {
485
486
  content: '•';
486
- margin-right: $mg-spacing-50;
487
+ margin-right: var(--mg-spacing-50);
487
488
  color: $search-border;
488
489
  }
489
490
  }
@@ -496,7 +497,7 @@ $search-input-padding-x: $mg-spacing-250;
496
497
 
497
498
  em {
498
499
  font-style: normal;
499
- background: rgba($search-primary, 0.1);
500
+ background: rgb(var(--mg-color-blue-900) / 0.1);
500
501
  padding: 0 2px;
501
502
  }
502
503
  }
@@ -504,27 +505,27 @@ $search-input-padding-x: $mg-spacing-250;
504
505
  .mg-search__result-metrics {
505
506
  display: flex;
506
507
  flex-wrap: wrap;
507
- gap: $mg-spacing-50;
508
- margin-bottom: $mg-spacing-50;
508
+ gap: var(--mg-spacing-50);
509
+ margin-bottom: var(--mg-spacing-50);
509
510
  }
510
511
 
511
512
  .mg-search__result-metric {
512
513
  display: inline-block;
513
- padding: $mg-spacing-25 $mg-spacing-50;
514
+ padding: var(--mg-spacing-25) var(--mg-spacing-50);
514
515
  font-size: $mg-font-size-200;
515
516
  background: $search-debug-bg;
516
- border-radius: $mg-spacing-25;
517
+ border-radius: var(--mg-spacing-25);
517
518
  }
518
519
 
519
520
  // Loading skeleton
520
521
  .mg-search__skeleton {
521
522
  display: flex;
522
523
  flex-direction: column;
523
- gap: $mg-spacing-150;
524
+ gap: var(--mg-spacing-150);
524
525
  }
525
526
 
526
527
  .mg-search__skeleton-item {
527
- padding-bottom: $mg-spacing-150;
528
+ padding-bottom: var(--mg-spacing-150);
528
529
  border-bottom: 1px solid $search-border-light;
529
530
  }
530
531
 
@@ -538,21 +539,21 @@ $search-input-padding-x: $mg-spacing-250;
538
539
  }
539
540
 
540
541
  .mg-search__skeleton-title {
541
- height: $mg-spacing-150;
542
+ height: var(--mg-spacing-150);
542
543
  width: 70%;
543
- margin-bottom: $mg-spacing-75;
544
+ margin-bottom: var(--mg-spacing-75);
544
545
  }
545
546
 
546
547
  .mg-search__skeleton-meta {
547
- height: $mg-spacing-100;
548
+ height: var(--mg-spacing-100);
548
549
  width: 40%;
549
- margin-bottom: $mg-spacing-75;
550
+ margin-bottom: var(--mg-spacing-75);
550
551
  }
551
552
 
552
553
  .mg-search__skeleton-text {
553
- height: $mg-spacing-100;
554
+ height: var(--mg-spacing-100);
554
555
  width: 100%;
555
- margin-bottom: $mg-spacing-50;
556
+ margin-bottom: var(--mg-spacing-50);
556
557
 
557
558
  &--short {
558
559
  width: 60%;
@@ -582,7 +583,7 @@ $search-input-padding-x: $mg-spacing-250;
582
583
  }
583
584
 
584
585
  .mg-search__skeleton-card-body {
585
- padding: $mg-spacing-100;
586
+ padding: var(--mg-spacing-100);
586
587
 
587
588
  .mg-search__skeleton-title {
588
589
  width: 85%;
@@ -605,7 +606,7 @@ $search-input-padding-x: $mg-spacing-250;
605
606
 
606
607
  // Facets placeholder
607
608
  .mg-search__facets-placeholder {
608
- padding: $mg-spacing-100;
609
+ padding: var(--mg-spacing-100);
609
610
  background: $search-chip-bg;
610
611
  border-radius: $search-radius;
611
612
  }
@@ -624,11 +625,11 @@ $search-input-padding-x: $mg-spacing-250;
624
625
  .mg-search__facets {
625
626
  display: flex;
626
627
  flex-direction: column;
627
- gap: $mg-spacing-150;
628
+ gap: var(--mg-spacing-150);
628
629
  }
629
630
 
630
631
  .mg-search__facets-loading {
631
- padding: $mg-spacing-100;
632
+ padding: var(--mg-spacing-100);
632
633
  font-size: $mg-font-size-200;
633
634
  color: $search-text-muted;
634
635
  text-align: center;
@@ -637,7 +638,7 @@ $search-input-padding-x: $mg-spacing-250;
637
638
  .mg-search__facet-containers {
638
639
  display: flex;
639
640
  flex-direction: column;
640
- gap: $mg-spacing-100;
641
+ gap: var(--mg-spacing-100);
641
642
  }
642
643
 
643
644
  // Sort Options: rendered as a dropdown to match the facet selects.
@@ -649,7 +650,7 @@ $search-input-padding-x: $mg-spacing-250;
649
650
  legend {
650
651
  font-weight: 600;
651
652
  font-size: $mg-font-size-200;
652
- margin-bottom: $mg-spacing-50;
653
+ margin-bottom: var(--mg-spacing-50);
653
654
  color: $search-text;
654
655
  }
655
656
  }
@@ -663,31 +664,33 @@ $search-input-padding-x: $mg-spacing-250;
663
664
  legend {
664
665
  font-weight: 600;
665
666
  font-size: $mg-font-size-200;
666
- margin-bottom: $mg-spacing-50;
667
+ margin-bottom: var(--mg-spacing-50);
667
668
  color: $search-text;
668
669
  }
669
670
  }
670
671
 
671
672
  .mg-search__facet-select {
672
673
  width: 100%;
673
- padding: $mg-spacing-50;
674
+ padding: var(--mg-spacing-50);
674
675
  font-size: $mg-font-size-200;
675
- border: 1px solid $search-border;
676
- border-radius: $search-radius;
677
- background-color: #fff;
676
+ border: 1px solid rgb(var(--mg-color-neutral-600) / 0.22);
677
+ border-radius: var(--mg-radius-form-input);
678
+ background-color: rgb(var(--mg-color-neutral-50));
678
679
  cursor: pointer;
679
680
 
680
- &:focus {
681
+ &:focus-visible {
682
+ background-color: rgb(var(--mg-color-neutral-0));
681
683
  outline: none;
682
684
  border-color: $search-primary;
683
- box-shadow: 0 0 0 2px rgba($search-primary, 0.15);
685
+
686
+ @include mg-focus-ring;
684
687
  }
685
688
 
686
689
  &[multiple] {
687
690
  min-height: 100px;
688
691
 
689
692
  option {
690
- padding: $mg-spacing-25 $mg-spacing-50;
693
+ padding: var(--mg-spacing-25) var(--mg-spacing-50);
691
694
 
692
695
  &:checked {
693
696
  background-color: $search-chip-bg;
@@ -699,7 +702,7 @@ $search-input-padding-x: $mg-spacing-250;
699
702
  // Custom facet styling
700
703
  // .mg-search__facet--custom {
701
704
  // background: $search-chip-bg;
702
- // padding: $mg-spacing-100;
705
+ // padding: var(--mg-spacing-100);
703
706
  // border-radius: $search-radius;
704
707
  // }
705
708
 
@@ -712,8 +715,8 @@ $search-input-padding-x: $mg-spacing-250;
712
715
  display: inline-flex;
713
716
  flex-wrap: wrap;
714
717
  align-items: center;
715
- gap: $mg-spacing-50;
716
- margin-bottom: $mg-spacing-25;
718
+ gap: var(--mg-spacing-50);
719
+ margin-bottom: var(--mg-spacing-25);
717
720
  }
718
721
 
719
722
  // Content type badge: uses the system-level .mg-tag atom.
@@ -723,7 +726,7 @@ $search-input-padding-x: $mg-spacing-250;
723
726
  .mg-search__result-site-name {
724
727
  display: inline-block;
725
728
  margin: 0;
726
- padding: $mg-spacing-25 $mg-spacing-50;
729
+ padding: var(--mg-spacing-25) var(--mg-spacing-50);
727
730
  font-size: $mg-font-size-200;
728
731
  color: $search-text-muted;
729
732
  background: $search-chip-bg;
@@ -733,7 +736,7 @@ $search-input-padding-x: $mg-spacing-250;
733
736
 
734
737
  // Error result styling
735
738
  .mg-search__result--error {
736
- padding: $mg-spacing-100;
739
+ padding: var(--mg-spacing-100);
737
740
  background: $search-error-bg;
738
741
  border: 1px solid $search-error-border;
739
742
  border-radius: $search-radius;
@@ -761,7 +764,7 @@ $search-input-padding-x: $mg-spacing-250;
761
764
  // ========================================
762
765
 
763
766
  .mg-search__results-grid {
764
- gap: $mg-spacing-150;
767
+ gap: var(--mg-spacing-150);
765
768
 
766
769
  // Card items within grid
767
770
  > [role="listitem"] {
@@ -841,11 +844,11 @@ $search-input-padding-x: $mg-spacing-250;
841
844
  .mg-search__facet-toggle {
842
845
  display: inline-flex;
843
846
  align-items: center;
844
- gap: $mg-spacing-25;
847
+ gap: var(--mg-spacing-25);
845
848
  background: none;
846
849
  border: none;
847
- padding: $mg-spacing-50 0;
848
- margin-top: $mg-spacing-50;
850
+ padding: var(--mg-spacing-50) 0;
851
+ margin-top: var(--mg-spacing-50);
849
852
  font-size: $mg-font-size-200;
850
853
  color: $search-primary;
851
854
  cursor: pointer;
@@ -888,7 +891,7 @@ $search-input-padding-x: $mg-spacing-250;
888
891
  display: flex;
889
892
  align-items: center;
890
893
  justify-content: center;
891
- padding: $mg-spacing-200;
894
+ padding: var(--mg-spacing-200);
892
895
  }
893
896
 
894
897
  .mg-search__spinner {
@@ -903,7 +906,7 @@ $search-input-padding-x: $mg-spacing-250;
903
906
  .mg-search__loader-text {
904
907
  text-align: center;
905
908
  color: $search-text-muted;
906
- margin-top: $mg-spacing-100;
909
+ margin-top: var(--mg-spacing-100);
907
910
  }
908
911
 
909
912
  // ========================================
@@ -915,7 +918,7 @@ $search-input-padding-x: $mg-spacing-250;
915
918
  .mg-select {
916
919
  position: relative;
917
920
  width: 100%;
918
- margin-top: $mg-spacing-50;
921
+ margin-top: var(--mg-spacing-50);
919
922
  }
920
923
 
921
924
  .mg-select__trigger {
@@ -924,13 +927,13 @@ $search-input-padding-x: $mg-spacing-250;
924
927
  justify-content: space-between;
925
928
  width: 100%;
926
929
  min-height: 44px; // Touch-friendly
927
- padding: $mg-spacing-50 $mg-spacing-75;
930
+ padding: var(--mg-spacing-50) var(--mg-spacing-75);
928
931
  font-size: $mg-font-size-300;
929
932
  color: $search-text;
930
933
  text-align: left;
931
- background-color: $mg-color-white;
932
- border: 2px solid $mg-color-black;
933
- border-radius: $mg-radius-form-input;
934
+ background-color: rgb(var(--mg-color-neutral-50));
935
+ border: 1px solid rgb(var(--mg-color-neutral-600) / 0.22);
936
+ border-radius: var(--mg-radius-form-input);
934
937
  cursor: pointer;
935
938
  transition: border-color 0.15s, box-shadow 0.15s;
936
939
 
@@ -939,8 +942,11 @@ $search-input-padding-x: $mg-spacing-250;
939
942
  }
940
943
 
941
944
  &:focus-visible {
945
+ background-color: rgb(var(--mg-color-neutral-0));
946
+ border-color: $search-primary;
942
947
  outline: 0;
943
- box-shadow: 0 0 4px $mg-color-form-focus;
948
+
949
+ @include mg-focus-ring;
944
950
  }
945
951
 
946
952
  .mg-select--open & {
@@ -959,7 +965,7 @@ $search-input-padding-x: $mg-spacing-250;
959
965
 
960
966
  .mg-select__trigger-icon {
961
967
  flex-shrink: 0;
962
- margin-left: $mg-spacing-50;
968
+ margin-left: var(--mg-spacing-50);
963
969
  color: $search-text-muted;
964
970
  transition: transform 0.2s ease;
965
971
 
@@ -971,7 +977,7 @@ $search-input-padding-x: $mg-spacing-250;
971
977
  .mg-select__backdrop {
972
978
  position: fixed;
973
979
  inset: 0;
974
- z-index: $mg-z-index-modal - 1; // portaled select backdrop: uses modal layer to clear all page chrome
980
+ z-index: calc(var(--mg-z-index-modal) - 1); // portaled select backdrop: uses modal layer to clear all page chrome
975
981
  background: transparent;
976
982
  cursor: default;
977
983
  }
@@ -981,7 +987,7 @@ $search-input-padding-x: $mg-spacing-250;
981
987
  top: 100%;
982
988
  left: 0;
983
989
  right: 0;
984
- z-index: $mg-z-index-modal; // portaled select dropdown: uses modal layer to clear all page chrome
990
+ z-index: var(--mg-z-index-modal); // portaled select dropdown: uses modal layer to clear all page chrome
985
991
  background: #fff;
986
992
  border: 1px solid $search-primary;
987
993
  border-top: none;
@@ -1002,22 +1008,24 @@ $search-input-padding-x: $mg-spacing-250;
1002
1008
  }
1003
1009
 
1004
1010
  .mg-select__search {
1005
- padding: $mg-spacing-50;
1011
+ padding: var(--mg-spacing-50);
1006
1012
  border-bottom: 1px solid $search-border-light;
1007
1013
  }
1008
1014
 
1009
1015
  .mg-select__search-input {
1010
1016
  width: 100%;
1011
- padding: $mg-spacing-50;
1017
+ padding: var(--mg-spacing-50);
1012
1018
  font-size: $mg-font-size-300;
1013
- border: 2px solid $mg-color-black;
1014
- border-radius: $mg-radius-form-input;
1015
- background-color: $mg-color-white;
1019
+ border: 1px solid rgb(var(--mg-color-neutral-600) / 0.22);
1020
+ border-radius: var(--mg-radius-form-input);
1021
+ background-color: rgb(var(--mg-color-neutral-50));
1016
1022
 
1017
1023
  &:focus-visible {
1024
+ background-color: rgb(var(--mg-color-neutral-0));
1018
1025
  outline: 0;
1019
1026
  border-color: $search-primary;
1020
- box-shadow: 0 0 4px $mg-color-form-focus;
1027
+
1028
+ @include mg-focus-ring;
1021
1029
  }
1022
1030
 
1023
1031
  &::placeholder {
@@ -1028,7 +1036,7 @@ $search-input-padding-x: $mg-spacing-250;
1028
1036
  .mg-select__list {
1029
1037
  list-style: none;
1030
1038
  margin: 0;
1031
- padding: $mg-spacing-25 0;
1039
+ padding: var(--mg-spacing-25) 0;
1032
1040
  max-height: 240px;
1033
1041
  overflow-y: auto;
1034
1042
  overscroll-behavior: contain;
@@ -1037,8 +1045,8 @@ $search-input-padding-x: $mg-spacing-250;
1037
1045
  .mg-select__option {
1038
1046
  display: flex;
1039
1047
  align-items: center;
1040
- gap: $mg-spacing-50;
1041
- padding: $mg-spacing-50 $mg-spacing-75;
1048
+ gap: var(--mg-spacing-50);
1049
+ padding: var(--mg-spacing-50) var(--mg-spacing-75);
1042
1050
  min-height: 40px; // Touch-friendly
1043
1051
  cursor: pointer;
1044
1052
  transition: background-color 0.1s ease;
@@ -1049,7 +1057,7 @@ $search-input-padding-x: $mg-spacing-250;
1049
1057
  }
1050
1058
 
1051
1059
  &--selected {
1052
- background-color: rgba($search-primary, 0.08);
1060
+ background-color: rgb(var(--mg-color-blue-900) / 0.08);
1053
1061
 
1054
1062
  .mg-select__option-label {
1055
1063
  font-weight: 600;
@@ -1058,7 +1066,7 @@ $search-input-padding-x: $mg-spacing-250;
1058
1066
  }
1059
1067
 
1060
1068
  &--selected#{&}--highlighted {
1061
- background-color: rgba($search-primary, 0.12);
1069
+ background-color: rgb(var(--mg-color-blue-900) / 0.12);
1062
1070
  }
1063
1071
  }
1064
1072
 
@@ -1069,11 +1077,11 @@ $search-input-padding-x: $mg-spacing-250;
1069
1077
  width: 16px;
1070
1078
  height: 16px;
1071
1079
  flex-shrink: 0;
1072
- border: 2px solid $mg-color-form-check;
1080
+ border: 2px solid rgb(var(--mg-color-form-check));
1073
1081
  color: $search-primary;
1074
1082
 
1075
1083
  &--checkbox {
1076
- border-radius: $mg-radius-form-input;
1084
+ border-radius: var(--mg-radius-form-input);
1077
1085
  }
1078
1086
 
1079
1087
  &--radio {
@@ -1081,13 +1089,13 @@ $search-input-padding-x: $mg-spacing-250;
1081
1089
  }
1082
1090
 
1083
1091
  &:hover {
1084
- border-color: $mg-color-form-check--hover;
1092
+ border-color: rgb(var(--mg-color-form-check--hover));
1085
1093
  }
1086
1094
 
1087
1095
  .mg-select__option--selected & {
1088
- border-color: $mg-color-form-check--checked;
1089
- background-color: $mg-color-form-check--checked;
1090
- color: $mg-color-white;
1096
+ border-color: rgb(var(--mg-color-form-check--checked));
1097
+ background-color: rgb(var(--mg-color-form-check--checked));
1098
+ color: rgb(var(--mg-color-white));
1091
1099
  }
1092
1100
  }
1093
1101
 
@@ -1113,7 +1121,7 @@ $search-input-padding-x: $mg-spacing-250;
1113
1121
 
1114
1122
  // Subtype options (indented children under parent content types)
1115
1123
  .mg-select__option--subtype {
1116
- padding-left: $mg-spacing-150;
1124
+ padding-left: var(--mg-spacing-150);
1117
1125
 
1118
1126
  .mg-select__option-label {
1119
1127
  font-size: $mg-font-size-100;
@@ -1121,14 +1129,14 @@ $search-input-padding-x: $mg-spacing-250;
1121
1129
  // Add visual connector
1122
1130
  &::before {
1123
1131
  content: "└";
1124
- margin-right: $mg-spacing-25;
1132
+ margin-right: var(--mg-spacing-25);
1125
1133
  color: $search-text-muted;
1126
1134
  }
1127
1135
  }
1128
1136
  }
1129
1137
 
1130
1138
  .mg-select__empty {
1131
- padding: $mg-spacing-100;
1139
+ padding: var(--mg-spacing-100);
1132
1140
  text-align: center;
1133
1141
  color: $search-text-muted;
1134
1142
  font-size: $mg-font-size-200;
@@ -1141,25 +1149,25 @@ $search-input-padding-x: $mg-spacing-250;
1141
1149
  .mg-search__facet-option {
1142
1150
  display: grid;
1143
1151
  grid-template-columns: 1.25em 1fr auto;
1144
- padding: $mg-spacing-50;
1152
+ padding: var(--mg-spacing-50);
1145
1153
  border-radius: $search-radius;
1146
1154
  align-items: baseline;
1147
- gap: 0 $mg-spacing-25;
1155
+ gap: 0 var(--mg-spacing-25);
1148
1156
  transition: background-color 0.15s ease;
1149
1157
 
1150
1158
  &:hover {
1151
- background-color: rgba($search-primary, 0.05);
1159
+ background-color: rgb(var(--mg-color-blue-900) / 0.05);
1152
1160
  }
1153
1161
 
1154
1162
  input[type="checkbox"],
1155
1163
  input[type="radio"] {
1156
1164
  margin: 0;
1157
1165
  cursor: pointer;
1158
- accent-color: $mg-color-form-check--checked;
1166
+ accent-color: rgb(var(--mg-color-form-check--checked));
1159
1167
  }
1160
1168
 
1161
1169
  label {
1162
- padding-left: $mg-spacing-25;
1170
+ padding-left: var(--mg-spacing-25);
1163
1171
  font-weight: normal;
1164
1172
  text-wrap: balance;
1165
1173
  cursor: pointer;
@@ -1174,7 +1182,7 @@ $search-input-padding-x: $mg-spacing-250;
1174
1182
 
1175
1183
  // Selected/checked state
1176
1184
  &:has(input:checked) {
1177
- background-color: rgba($search-primary, 0.08);
1185
+ background-color: rgb(var(--mg-color-blue-900) / 0.08);
1178
1186
 
1179
1187
  label {
1180
1188
  font-weight: 600;
@@ -1205,7 +1213,7 @@ $search-input-padding-x: $mg-spacing-250;
1205
1213
  position: fixed;
1206
1214
  inset: 0;
1207
1215
  background: rgb(0 0 0 / 0.5);
1208
- z-index: $mg-z-index-drawer - 1; // backdrop behind drawer panel
1216
+ z-index: calc(var(--mg-z-index-drawer) - 1); // backdrop behind drawer panel
1209
1217
  animation: mg-search-fade-in 0.2s ease-out;
1210
1218
  cursor: pointer; // Indicate clickable to close
1211
1219
  }
@@ -1230,7 +1238,7 @@ $search-input-padding-x: $mg-spacing-250;
1230
1238
  display: flex;
1231
1239
  flex-direction: column;
1232
1240
  animation: mg-search-slide-in-left 0.3s ease-out;
1233
- z-index: $mg-z-index-drawer;
1241
+ z-index: var(--mg-z-index-drawer);
1234
1242
  cursor: default; // Reset cursor inside drawer
1235
1243
  }
1236
1244
 
@@ -1247,7 +1255,7 @@ $search-input-padding-x: $mg-spacing-250;
1247
1255
  display: flex;
1248
1256
  align-items: center;
1249
1257
  justify-content: space-between;
1250
- padding: $mg-spacing-100 $mg-spacing-150;
1258
+ padding: var(--mg-spacing-100) var(--mg-spacing-150);
1251
1259
  border-bottom: 1px solid $search-border;
1252
1260
  flex-shrink: 0;
1253
1261
  min-height: 56px; // Consistent header height
@@ -1260,7 +1268,7 @@ $search-input-padding-x: $mg-spacing-250;
1260
1268
  color: $search-text;
1261
1269
  display: flex;
1262
1270
  align-items: center;
1263
- gap: $mg-spacing-50;
1271
+ gap: var(--mg-spacing-50);
1264
1272
  }
1265
1273
 
1266
1274
  .mg-search__drawer-count {
@@ -1269,7 +1277,7 @@ $search-input-padding-x: $mg-spacing-250;
1269
1277
  justify-content: center;
1270
1278
  min-width: 22px;
1271
1279
  height: 22px;
1272
- padding: 0 $mg-spacing-25;
1280
+ padding: 0 var(--mg-spacing-25);
1273
1281
  font-size: $mg-font-size-200;
1274
1282
  font-weight: 600;
1275
1283
  color: #fff;
@@ -1305,13 +1313,13 @@ $search-input-padding-x: $mg-spacing-250;
1305
1313
  .mg-search__drawer-content {
1306
1314
  flex: 1;
1307
1315
  overflow-y: auto;
1308
- padding: $mg-spacing-100 $mg-spacing-150;
1316
+ padding: var(--mg-spacing-100) var(--mg-spacing-150);
1309
1317
  -webkit-overflow-scrolling: touch;
1310
1318
  overscroll-behavior: contain; // Prevent scroll chaining
1311
1319
  }
1312
1320
 
1313
1321
  .mg-search__drawer-footer {
1314
- padding: $mg-spacing-100 $mg-spacing-150;
1322
+ padding: var(--mg-spacing-100) var(--mg-spacing-150);
1315
1323
  border-top: 1px solid $search-border;
1316
1324
  flex-shrink: 0;
1317
1325
  background: #fff; // Ensure footer is opaque
@@ -1321,10 +1329,10 @@ $search-input-padding-x: $mg-spacing-250;
1321
1329
  display: flex;
1322
1330
  align-items: center;
1323
1331
  justify-content: center;
1324
- gap: $mg-spacing-50;
1332
+ gap: var(--mg-spacing-50);
1325
1333
  width: 100%;
1326
1334
  min-height: 48px; // Touch-friendly height
1327
- padding: $mg-spacing-75 $mg-spacing-100;
1335
+ padding: var(--mg-spacing-75) var(--mg-spacing-100);
1328
1336
  font-size: $mg-font-size-200;
1329
1337
  font-weight: 600;
1330
1338
  color: #fff;
@@ -1409,15 +1417,15 @@ $search-input-padding-x: $mg-spacing-250;
1409
1417
  .mg-search__facet-operator {
1410
1418
  display: flex;
1411
1419
  flex-direction: column;
1412
- gap: $mg-spacing-50;
1413
- margin-top: $mg-spacing-75;
1420
+ gap: var(--mg-spacing-50);
1421
+ margin-top: var(--mg-spacing-75);
1414
1422
  font-size: $mg-font-size-200;
1415
1423
  }
1416
1424
 
1417
1425
  .mg-search__facet-operator-row {
1418
1426
  display: flex;
1419
1427
  align-items: center;
1420
- gap: $mg-spacing-50;
1428
+ gap: var(--mg-spacing-50);
1421
1429
  }
1422
1430
 
1423
1431
  .mg-search__facet-operator-label {
@@ -1434,13 +1442,13 @@ $search-input-padding-x: $mg-spacing-250;
1434
1442
 
1435
1443
  .mg-search__facet-operator-toggle {
1436
1444
  display: inline-flex;
1437
- gap: $mg-spacing-25;
1445
+ gap: var(--mg-spacing-25);
1438
1446
  }
1439
1447
 
1440
1448
  .mg-search__facet-operator-option {
1441
1449
  display: flex;
1442
1450
  align-items: center;
1443
- padding: $mg-spacing-25 $mg-spacing-50;
1451
+ padding: var(--mg-spacing-25) var(--mg-spacing-50);
1444
1452
  cursor: pointer;
1445
1453
  transition: color 0.15s, border-color 0.15s;
1446
1454
  font-weight: 400;
@@ -1482,7 +1490,7 @@ $search-input-padding-x: $mg-spacing-250;
1482
1490
  .mg-search__filter-chip-connector {
1483
1491
  display: inline-flex;
1484
1492
  align-items: center;
1485
- margin-right: $mg-spacing-25;
1493
+ margin-right: var(--mg-spacing-25);
1486
1494
  color: $search-text-muted;
1487
1495
  font-weight: 600;
1488
1496
  text-transform: uppercase;